{"version":3,"sources":["./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/table.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/table.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/portal.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/se.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/autocomplete.js","./node_modules/@firebase/component/dist/index.esm.js","./node_modules/moment/locale/x-pseudo.js","./src/app/core/auth/_services/auth.service.ts","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/set-function-length/index.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/collections.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/dialog.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/layout.js","./node_modules/qs/lib/utils.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/pt-br.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","./src/app/core/_base/layout/directives/menu.directive.ts","./node_modules/@fullcalendar/common/main.css","./node_modules/@fullcalendar/common/vdom.js","./node_modules/@fullcalendar/common/main.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/slide-toggle.js","./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/@ng-bootstrap/ng-bootstrap/__ivy_ngcc__/fesm2015/ng-bootstrap.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/ca.js","./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","./node_modules/rxjs/_esm2015/internal/operators/switchMapTo.js","./node_modules/@angular/fire/__ivy_ngcc__/fesm2015/angular-fire-messaging.js","./src/app/core/Notification/NotificationService.ts","./src/app/core/messaging.service.ts","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","./node_modules/@sweetalert2/ngx-sweetalert2/node_modules/tslib/tslib.es6.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/moment/locale/fr-ca.js","(webpack)/buildin/module.js","./node_modules/rxjs/internal/scheduler/AsyncAction.js","./node_modules/moment/locale/nl-be.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/moment/locale/hi.js","./node_modules/es-errors/range.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/en-ie.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/drag-drop.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/km.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/en-in.js","./node_modules/ngx-toast-notifications/__ivy_ngcc__/fesm2015/ngx-toast-notifications.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/accordion.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/expansion.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./src/app/core/performans-lastik/performans-lastik-arama/services/performans-lastik-arama.service.ts","./node_modules/moment/locale/si.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/moment/locale/pa-in.js","./node_modules/@angular/cdk/fesm2015/coercion.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./src/app/core/config.service.ts","./node_modules/moment/locale/pt.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/tree.js","./node_modules/rxjs/_esm2015/internal/operators/ignoreElements.js","./node_modules/rxjs/_esm2015/internal/operators/materialize.js","./node_modules/rxjs/_esm2015/internal/operators/groupBy.js","./node_modules/rxjs/_esm2015/internal/operators/exhaustMap.js","./node_modules/rxjs/_esm2015/internal/operators/dematerialize.js","./node_modules/@ngrx/effects/__ivy_ngcc__/fesm2015/ngrx-effects.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/cv.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/chips.js","./node_modules/get-intrinsic/index.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/ml.js","./src/environments/environment.prod.ts","./node_modules/moment/locale/ja.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/jwt-decode/lib/index.js","./node_modules/moment/locale/is.js","./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","./node_modules/moment/locale/fo.js","./src/app/core/auth/_actions/auth.actions.ts","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/has-proto/index.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/ar-ma.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/url/url.js","./node_modules/moment/locale/eu.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/function-bind/index.js","./src/app/core/_base/layout/directives/content-animate.directive.ts","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/moment/locale/gom-latn.js","./src/app/core/auth/_models/login/loginV2.request.ts","./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","./node_modules/es-errors/type.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/sort.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/da.js","./node_modules/rxjs/internal/scheduler/Action.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/sr-cyrl.js","./src/app/views/partials/content/general/portlet/portlet.module.ts","./src/app/views/partials/content/widgets/widget.module.ts","./src/app/views/partials/partials.module.ts","./node_modules/moment/locale/th.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/primeng/__ivy_ngcc__/fesm2015/primeng-dom.js","./node_modules/primeng/__ivy_ngcc__/fesm2015/primeng-api.js","./node_modules/primeng/__ivy_ngcc__/fesm2015/primeng-utils.js","./node_modules/primeng/__ivy_ngcc__/fesm2015/primeng-tooltip.js","./node_modules/primeng/__ivy_ngcc__/fesm2015/primeng-dropdown.js","./node_modules/primeng/__ivy_ngcc__/fesm2015/primeng-paginator.js","./node_modules/primeng/__ivy_ngcc__/fesm2015/primeng-treetable.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./src/app/views/pages/randevu/lokasyon-ekleme/search-pipes/il-search.pipe.ts","./node_modules/es-errors/ref.js","./node_modules/@angular/cdk/fesm2015/cdk.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/core.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/has-symbols/shams.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/keycodes.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/tree.js","./node_modules/moment/locale/mt.js","./node_modules/rxjs/internal/util/isObject.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/observers.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/internal/scheduler/animationFrame.js","./node_modules/moment/locale/be.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/moment/locale/ar-ly.js","./src/app/views/pages/randevu/lokasyon-ekleme/search-pipes/search-pipe.module.ts","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/moment/locale/ka.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/@fullcalendar/angular/__ivy_ngcc__/fesm2015/fullcalendar-angular.js","./node_modules/moment/locale/ko.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/moment/locale/ku.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/moment/locale/bs.js","./node_modules/chart.js/dist/Chart.min.js","./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/firebase/app/dist/index.esm.js","./node_modules/@babel/runtime/helpers/esm/inherits.js","./node_modules/moment/locale/lt.js","./node_modules/object-inspect/index.js","./node_modules/moment/locale/af.js","./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/me.js","./src/app/core/randevu/hizmet-noktasi/services/lokasyon.service.ts","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/gopd/index.js","./node_modules/rxjs/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/moment/locale/uz.js","./src/app/core/_base/crud/utils/intercept.service.ts","./src/app/core/randevu/lastik-arama/models/plaka-randevu-listesi.request.ts","./node_modules/lodash/lodash.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/paginator.js","./src/app/core/ofkas/services/kullanici-ayarlari.service.ts","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/list.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/icon.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./src/app/core/_base/layout/directives/header.directive.ts","./node_modules/@auth0/angular-jwt/__ivy_ngcc__/fesm2015/auth0-angular-jwt.js","./node_modules/rxjs/internal/scheduler/AnimationFrameAction.js","./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/cs.js","./node_modules/@fullcalendar/daygrid/main.css","./node_modules/@fullcalendar/daygrid/main.js","./node_modules/sweetalert2/dist/sweetalert2.all.js","./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/kn.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/call-bind/index.js","./node_modules/@sweetalert2/ngx-sweetalert2/__ivy_ngcc__/fesm2015/sweetalert2-ngx-sweetalert2.js","./node_modules/qs/lib/stringify.js","./node_modules/es-errors/eval.js","./node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/radio.js","./node_modules/moment/locale/ar-kw.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/tooltip.js","./node_modules/qs/lib/index.js","./node_modules/@angular/animations/__ivy_ngcc__/fesm2015/animations.js","./node_modules/@angular/animations/__ivy_ngcc__/fesm2015/browser.js","./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/animations.js","./node_modules/moment/locale/lb.js","./node_modules/@babel/runtime/helpers/esm/get.js","./node_modules/@babel/runtime/helpers/esm/superPropBase.js","./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/core/auth/auth-notice/auth-notice.service.ts","./node_modules/@ngrx/entity/__ivy_ngcc__/fesm2015/ngrx-entity.js","./src/app/core/auth/_actions/role.actions.ts","./src/app/core/auth/_reducers/role.reducers.ts","./src/app/core/auth/_selectors/role.selectors.ts","./src/app/core/auth/_selectors/user.selectors.ts","./src/app/core/auth/_actions/permission.actions.ts","./src/app/core/auth/_actions/user.actions.ts","./src/app/core/auth/_effects/auth.effects.ts","./src/app/core/auth/_effects/permission.effects.ts","./src/app/core/auth/_effects/role.effects.ts","./src/app/core/auth/_reducers/auth.reducers.ts","./src/app/core/auth/_effects/user.effects.ts","./src/app/core/auth/_reducers/permission.reducers.ts","./src/app/core/auth/_reducers/user.reducers.ts","./src/app/core/auth/_selectors/permission.selectors.ts","./src/app/core/auth/_selectors/auth.selectors.ts","./src/app/core/auth/_guards/auth.guard.ts","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/az.js","./src/app/views/pages/auth/auth.component.ts","./src/app/views/pages/auth/auth.component.html","./src/app/core/auth/_services/login.service.ts","./src/app/views/pages/auth/login/login.component.html","./src/app/views/pages/auth/login/login.component.ts","./src/app/views/pages/auth/panaroma-login/panaroma-login.component.ts","./src/app/views/pages/auth/sorumlugirisi/sorumlugirisi.component.html","./src/app/views/pages/auth/sorumlugirisi/sorumlugirisi.component.ts","./src/app/views/pages/auth/token-login/token-login.component.ts","./src/app/views/pages/auth/auth.module.ts","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/menu.js","./node_modules/moment/locale/zh-hk.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/@babel/runtime/helpers/esm/toArray.js","./node_modules/moment/locale/ar-ps.js","./node_modules/moment/locale/id.js","./src/app/core/_base/crud/models/_base.model.ts","./src/app/core/_base/crud/models/query-models/query-results.model.ts","./src/app/core/_base/crud/models/http-extentsions-model.ts","./src/app/core/_base/crud/models/_base.datasource.ts","./src/app/core/_base/crud/models/query-models/query-params.model.ts","./src/app/core/_base/crud/utils/http-utils.service.ts","./src/app/core/_base/crud/utils/types-utils.service.ts","./src/app/views/partials/content/crud/update-status-dialog/update-status-dialog.component.html","./src/app/views/partials/content/crud/update-status-dialog/update-status-dialog.component.ts","./src/app/views/partials/content/crud/fetch-entity-dialog/fetch-entity-dialog.component.html","./src/app/views/partials/content/crud/fetch-entity-dialog/fetch-entity-dialog.component.ts","./src/app/views/partials/content/crud/delete-entity-dialog/delete-entity-dialog.component.html","./src/app/views/partials/content/crud/delete-entity-dialog/delete-entity-dialog.component.ts","./src/app/views/partials/content/crud/action-natification/action-notification.component.html","./src/app/views/partials/content/crud/action-natification/action-notification.component.ts","./src/app/core/_base/crud/utils/layout-utils.service.ts","./node_modules/moment/locale/ga.js","./node_modules/has-symbols/index.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/tet.js","./node_modules/side-channel/index.js","./node_modules/call-bind/callBound.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/moment/locale/es-us.js","./node_modules/preact/dist/preact.module.js","./node_modules/preact/hooks/dist/hooks.module.js","./node_modules/preact/compat/dist/compat.module.js","./node_modules/@fullcalendar/core/vdom.js","./node_modules/@fullcalendar/core/main.js","./node_modules/ngx-mat-select-search/__ivy_ngcc__/fesm2015/ngx-mat-select-search.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/moment/locale/dv.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/card.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/sv.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/te.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/progress-spinner.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/moment/locale/ug-cn.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/es-errors/syntax.js","./node_modules/moment/locale/sd.js","./node_modules/es-errors/uri.js","./node_modules/moment/locale/ms-my.js","./node_modules/has-property-descriptors/index.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/moment/locale/eo.js","./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","./node_modules/function-bind/implementation.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/fast-deep-equal/index.js","./node_modules/@ngrx/store-devtools/__ivy_ngcc__/fesm2015/ngrx-store-devtools.js","./node_modules/moment/locale/en-nz.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./node_modules/ngx-perfect-scrollbar/__ivy_ngcc__/dist/ngx-perfect-scrollbar.es5.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./src/app/core/_base/layout/services/menu-config.service.ts","./node_modules/moment/locale/nb.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/checkbox.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/button.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/ar-tn.js","./node_modules/object-path/index.js","./node_modules/moment/locale/it.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/progress-bar.js","./node_modules/moment/locale/it-ch.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/bidi.js","./node_modules/moment/locale/fy.js","./node_modules/ag-grid-angular/__ivy_ngcc__/fesm2015/ag-grid-angular.js","./node_modules/es-define-property/index.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/moment/locale/en-il.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/select.js","./src/app/core/randevu/lastik-arama/services/lastik-arama.service.ts","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/snack-bar.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ku-kmr.js","./node_modules/moment/locale/sk.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.config.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/svg-cache.service.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.service.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.component.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/svg-util.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.directive.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.module.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/define-data-property/index.js","./node_modules/jwt-decode/lib/base64_url_decode.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/divider.js","./node_modules/ag-grid-community/dist/ag-grid-community.cjs.js","./node_modules/@babel/runtime/helpers/esm/construct.js","./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js","./node_modules/rxjs/internal/Scheduler.js","./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","./node_modules/moment/locale/yo.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/es.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/datepicker.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/pl.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/button-toggle.js","./node_modules/moment/locale/fa.js","./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/platform-browser.js","./node_modules/moment/locale/ar.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./src/app/views/pages/randevu/lokasyon-ekleme/search-pipes/ilce-search.pipe.ts","./node_modules/moment/locale/bn.js","(webpack)/buildin/harmony-module.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/moment/locale/zh-tw.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/form-field.js","./src/app/core/_base/layout/directives/offcanvas.directive.ts","./node_modules/moment/locale/cy.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/operators/pluck.js","./node_modules/@ngrx/store/__ivy_ngcc__/fesm2015/ngrx-store.js","./src/app/core/_base/layout/directives/tab-click-event.directive.ts","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/ky.js","./node_modules/hasown/index.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/ro.js","./node_modules/jwt-decode/lib/atob.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/internal/util/isArray.js","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/tslib/tslib.es6.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./src/app/core/_base/layout/directives/scroll-top.directive.ts","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/platform.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/punycode/punycode.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/qs/lib/parse.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/ar-dz.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/@angular/common/__ivy_ngcc__/fesm2015/common.js","./node_modules/moment/locale/bm.js","./src/app/core/auth/error/arvento-error/arvento.module.ts","./src/app/core/core.module.ts","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/es-errors/index.js","./node_modules/rxjs/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/text-field.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/input.js","./node_modules/@firebase/util/dist/index.esm.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/moment/locale/gom-deva.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/overlay.js","./node_modules/moment/locale/uk.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/moment/locale/de-at.js","./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/operators/toArray.js","./node_modules/@ngx-translate/core/__ivy_ngcc__/fesm2015/ngx-translate-core.js","./node_modules/rxjs/_esm2015/internal/operators/reduce.js","./node_modules/moment/locale/lo.js","./node_modules/@angular/fire/__ivy_ngcc__/fesm2015/angular-fire.js","./node_modules/qs/lib/formats.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/de.js","./node_modules/rxjs/_esm2015/internal/util/TimeoutError.js","./node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js","./node_modules/rxjs/_esm2015/internal/operators/timeout.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/es-mx.js","./node_modules/rxjs/_esm2015/internal/observable/SubscribeOnObservable.js","./node_modules/rxjs/_esm2015/internal/operators/subscribeOn.js","./node_modules/@angular/common/__ivy_ngcc__/fesm2015/http.js","./node_modules/@angular/router/__ivy_ngcc__/fesm2015/router.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/moment/locale/de-ch.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/a11y.js","./node_modules/moment/locale/nn.js","./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","./node_modules/moment/locale/lv.js","./src/app/core/_base/layout/services/layout-config.service.ts","./src/app/core/_base/layout/models/datatable-item.model.ts","./src/app/core/_base/layout/services/datatable.service.ts","./src/app/core/_base/layout/services/translation.service.ts","./src/app/core/_base/layout/services/layout-ref.service.ts","./src/app/core/_base/layout/models/menu-master-yetki.response.ts","./src/app/core/_base/layout/services/menu-aside.service.ts","./src/app/core/_base/layout/services/menu-horizontal.service.ts","./src/app/core/_base/layout/services/page-config.service.ts","./src/app/core/_base/layout/services/splash-screen.service.ts","./src/app/core/_base/layout/services/subheader.service.ts","./src/app/core/_base/layout/services/kt-dialog.service.ts","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/@babel/runtime/helpers/esm/createClass.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/scrolling.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/moment/locale/tzm.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/tabs.js","./node_modules/moment/moment.js","./src/app/core/_base/layout/directives/toggle.directive.ts","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/moment/locale/he.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/moment/locale/sq.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tlh.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/internal/Subscription.js","./node_modules/@firebase/logger/dist/index.esm.js","./node_modules/@firebase/app/dist/index.esm.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/every.js","./node_modules/ngx-permissions/__ivy_ngcc__/fesm2015/ngx-permissions.js","./node_modules/@ngrx/router-store/__ivy_ngcc__/fesm2015/ngrx-router-store.js","./src/app/core/_config/i18n/en.ts","./src/app/core/_config/i18n/ch.ts","./src/app/core/_config/i18n/es.ts","./src/app/core/_config/i18n/jp.ts","./src/app/core/_config/i18n/de.ts","./src/app/core/_config/i18n/fr.ts","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/@angular/service-worker/__ivy_ngcc__/fesm2015/service-worker.js","./node_modules/rxjs/_esm2015/internal/operators/publish.js","./src/app/core/_base/crud/utils/app-update.service.ts","./src/app/core/_base/crud/utils/loader.service.ts","./src/app/core/_base/crud/loader-comp/loader-comp.component.html","./src/app/core/_base/crud/loader-comp/loader-comp.component.ts","./src/app/views/partials/layout/splash-screen/splash-screen.component.html","./src/app/views/partials/layout/splash-screen/splash-screen.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/core/_config/layout.config.ts","./src/app/core/_config/menu.config.ts","./src/app/core/_config/page.config.ts","./src/app/views/theme/html-class.service.ts","./src/app/views/partials/layout/topbar/header/brisa-header.component.html","./src/app/views/partials/layout/topbar/header/brisa-header.component.ts","./src/app/views/partials/layout/topbar/filo-selectbox/filo-selectbox.component.html","./src/app/views/partials/layout/topbar/filo-selectbox/filo-selectbox.component.ts","./src/app/views/partials/layout/topbar/yeni-plaka/yeni-plaka.component.html","./src/app/views/partials/layout/topbar/yeni-plaka/yeni-plaka.component.ts","./src/app/views/partials/layout/topbar/home-button/home-button.component.ts","./src/app/views/partials/layout/topbar/home-button/home-button.component.html","./src/app/views/partials/layout/topbar/logout/logout.component.ts","./src/app/views/partials/layout/topbar/logout/logout.component.html","./src/app/views/theme/header/header-mobile/header-mobile.component.ts","./src/app/views/theme/header/header-mobile/header-mobile.component.html","./src/app/views/theme/footer/footer.component.ts","./src/app/views/theme/footer/footer.component.html","./src/app/views/partials/layout/quick-panel/quick-panel.component.html","./src/app/views/partials/layout/quick-panel/quick-panel.component.ts","./src/app/views/partials/layout/scroll-top/scroll-top.component.ts","./src/app/views/partials/layout/scroll-top/scroll-top.component.html","./src/app/views/theme/brand/brand.component.ts","./src/app/views/theme/brand/brand.component.html","./src/app/views/theme/aside/aside-left.component.html","./src/app/views/theme/aside/aside-left.component.ts","./node_modules/@ngx-loading-bar/core/__ivy_ngcc__/fesm2015/ngx-loading-bar-core.js","./src/app/views/partials/layout/topbar/user-profile/user-profile.component.html","./src/app/views/partials/layout/topbar/user-profile/user-profile.component.ts","./src/app/views/theme/header/topbar/topbar.component.ts","./src/app/views/theme/header/topbar/topbar.component.html","./src/app/views/theme/header/menu-horizontal/menu-horizontal.component.html","./src/app/views/theme/header/menu-horizontal/menu-horizontal.component.ts","./src/app/views/theme/header/header.component.html","./src/app/views/theme/header/header.component.ts","./src/app/views/partials/layout/sticky-toolbar/sticky-toolbar.component.html","./src/app/views/partials/layout/sticky-toolbar/sticky-toolbar.component.ts","./src/app/views/theme/base/base.component.html","./src/app/views/theme/base/base.component.ts","./src/app/core/auth/error/error/error.component.ts","./src/app/core/auth/error/error/error.component.html","./src/app/core/auth/error/pipes/hobl.pipe.ts","./src/app/core/auth/error/arvento-error/bayilokasyondialog/bayilokasyondialog.component.html","./src/app/core/auth/error/arvento-error/bayilokasyondialog/bayilokasyondialog.component.ts","./src/app/core/auth/error/arvento-error/arventoerr/arventoerr.component.ts","./src/app/core/auth/error/arvento-error/arventoerr/arventoerr.component.html","./src/app/app-routing.module.ts","./src/app/views/pages/pages.module.ts","./src/app/views/theme/theme.module.ts","./src/app/core/_base/crud/loader-comp/loader-comp.module.ts","./src/app/core/_base/crud/utils/loader-intercept.service.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/grid-list.js","./$_lazy_route_resource lazy namespace object","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/moment/locale/sr.js"],"names":["_c0","_c1","mixinHasStickyInput","base","args","_sticky","_hasStickyChanged","this","v","prevValue","hasStickyChanged","CDK_TABLE","CdkCellDef","template","ɵfac","t","ɵdir","type","selectors","CdkHeaderCellDef","CdkFooterCellDef","_CdkColumnDefBase","CdkColumnDef","_table","_stickyEnd","_name","name","_setNameInput","_columnCssClassName","cssClassFriendlyName","value","replace","_updateColumnCssClassName","contentQueries","rf","ctx","dirIndex","_t","cell","first","headerCell","footerCell","inputs","sticky","stickyEnd","features","provide","useExisting","columnDef","elementRef","classList","nativeElement","add","CdkHeaderCell","hostAttrs","CdkFooterCell","CdkCell","tasks","endTasks","_COALESCED_STYLE_SCHEDULER","_CoalescedStyleScheduler","_ngZone","_currentSchedule","_destroyed","Subject","task","_createScheduleIfNeeded","push","next","complete","_getScheduleObservable","pipe","takeUntil","subscribe","length","schedule","isStable","from","Promise","resolve","undefined","onStable","take","ɵprov","token","factory","BaseRowDef","_differs","changes","_columnsDiffer","columns","currentValue","find","create","diff","column","_CdkHeaderRowDefBase","CdkHeaderRowDef","_CdkFooterRowDefBase","CdkFooterRowDef","CdkRowDef","when","CdkCellOutlet","_viewContainer","mostRecentCellOutlet","CdkHeaderRow","ɵcmp","decls","vars","consts","directives","encapsulation","CdkFooterRow","CdkRow","CdkNoDataRow","templateRef","STICKY_DIRECTIONS","_isNativeHtmlTable","_stickCellCss","direction","_coalescedStyleScheduler","_isBrowser","_needsPositionStickyOnElement","_positionListener","_cachedCellWidths","_borderCellCss","rows","stickyDirections","elementsToClear","row","nodeType","ELEMENT_NODE","i","children","_scheduleStyleChanges","_removeStickyStyle","stickyStartStates","stickyEndStates","recalculateCellWidths","some","state","firstRow","numCells","cellWidths","_getCellWidths","startPositions","_getStickyStartColumnPositions","endPositions","_getStickyEndColumnPositions","lastStickyStart","lastIndexOf","firstStickyEnd","indexOf","isRtl","start","end","_addStickyStyle","stickyColumnsUpdated","sizes","slice","map","width","index","stickyEndColumnsUpdated","reverse","rowsToStick","stickyStates","position","states","stickyOffsets","stickyCellHeights","elementsToStick","rowIndex","stickyOffset","Array","height","getBoundingClientRect","borderedRowIndex","_a","_b","offset","isBorderedRowIndex","stickyHeaderRowsUpdated","elements","stickyFooterRowsUpdated","tableElement","tfoot","querySelector","element","dir","style","remove","zIndex","_getCalculatedZIndex","dirValue","isBorderElement","cssText","zIndexIncrements","top","bottom","left","right","firstRowCells","widths","positions","nextPosition","STICKY_POSITIONING_LISTENER","DataRowOutlet","viewContainer","HeaderRowOutlet","FooterRowOutlet","NoDataRowOutlet","CdkTable","_changeDetectorRef","_elementRef","role","_dir","_document","_platform","_viewRepeater","_stickyPositioningListener","_viewportRuler","_onDestroy","_columnDefsByName","Map","_customColumnDefs","Set","_customRowDefs","_customHeaderRowDefs","_customFooterRowDefs","_headerRowDefChanged","_footerRowDefChanged","_stickyColumnStylesNeedReset","_forceRecalculateCellWidths","_cachedRenderRowsMap","stickyCssClass","needsPositionStickyOnElement","_isShowingNoDataRow","_multiTemplateDataRows","_fixedLayout","viewChange","BehaviorSubject","Number","MAX_VALUE","setAttribute","nodeName","_trackByFn","fn","_dataSource","dataSource","_switchDataSource","_rowOutlet","_forceRenderDataRows","updateStickyColumnStyles","_setupStickyStyler","_applyNativeTableSections","_dataDiffer","_i","dataRow","trackBy","dataIndex","data","change","_cacheRowDefs","_cacheColumnDefs","rowDefsChanged","_renderUpdatedColumns","_forceRenderHeaderRows","_forceRenderFooterRows","_rowDefs","_renderChangeSubscription","_observeRenderChanges","_checkStickyStates","clear","_noDataRowOutlet","_headerRowOutlet","_footerRowOutlet","disconnect","_renderRows","_getAllRenderRows","applyChanges","record","_adjustedPreviousIndex","currentIndex","_getEmbeddedViewArgs","item","operation","context","_renderCellTemplateForItem","rowDef","forEachOperation","prevIndex","previousIndex","renderRow","_renderRow","$implicit","view","get","move","_updateRowIndexContext","forEachIdentityChange","_updateNoDataRow","delete","headerRowDef","footerRowDef","noDataRow","_customNoDataRow","headerRows","_getRenderedRows","thead","display","_headerRowDefs","def","_stickyStyler","clearStickyPositioning","stickRows","forEach","resetStickyChanged","footerRows","_footerRowDefs","updateStickyFooterContainer","dataRows","headerRow","_addStickyColumnStyles","footerRow","values","renderRows","prevCachedRenderRows","_data","renderRowsForData","_getRenderRowsForData","has","set","WeakMap","j","cache","_getRowDefs","cachedRenderRows","shift","mergeArrayAndSet","_getOwnDefs","_contentColumnDefs","_contentHeaderRowDefs","_contentFooterRowDefs","_contentRowDefs","defaultRowDefs","filter","_defaultRowDef","columnsDiffReducer","acc","getColumnsDiff","dataColumnsChanged","reduce","headerColumnsChanged","footerColumnsChanged","unsubscribe","dataStream","connect","isObservable","isArray","of","updateStickyHeaderRowStyles","updateStickyFooterRowStyles","columnDefs","columnName","updateStickyColumns","rowOutlet","renderedRows","viewRef","rootNodes","rowDefs","multiTemplateDataRows","outlet","createEmbeddedView","_getCellTemplates","markForCheck","renderIndex","count","last","even","odd","columnId","extractCellTemplate","documentFragment","createDocumentFragment","tag","outlets","section","createElement","appendChild","stickyCheckReducer","d","isBrowser","items","_noDataRow","shouldShow","container","viewQuery","hostVars","hostBindings","fixedLayout","exportAs","useClass","useValue","ngContentSelectors","styles","array","concat","CdkTableModule","ɵmod","ɵinj","imports","MatTable","arguments","ɵMatTable_BaseFactory","MatCellDef","ɵMatCellDef_BaseFactory","MatHeaderCellDef","ɵMatHeaderCellDef_BaseFactory","MatFooterCellDef","ɵMatFooterCellDef_BaseFactory","MatColumnDef","ɵMatColumnDef_BaseFactory","MatHeaderCell","ɵMatHeaderCell_BaseFactory","MatFooterCell","ɵMatFooterCell_BaseFactory","MatCell","ɵMatCell_BaseFactory","MatHeaderRowDef","ɵMatHeaderRowDef_BaseFactory","MatFooterRowDef","ɵMatFooterRowDef_BaseFactory","MatRowDef","ɵMatRowDef_BaseFactory","MatHeaderRow","ɵMatHeaderRow_BaseFactory","MatFooterRow","ɵMatFooterRow_BaseFactory","MatRow","ɵMatRow_BaseFactory","MatTableModule","MAX_SAFE_INTEGER","initialData","_renderData","_filter","_internalPageChanges","_renderChangesSubscription","sortingDataAccessor","sortHeaderId","numberValue","sortData","sort","active","a","b","valueA","valueB","valueAType","valueBType","comparatorResult","filterPredicate","dataStr","Object","keys","currentTerm","key","toLowerCase","transformedFilter","trim","_updateChangeSubscription","_filterData","_sort","_paginator","paginator","sortChange","merge","initialized","pageChange","page","filteredData","combineLatest","orderedData","_orderData","paginatedData","_pageData","obj","_updatePaginator","startIndex","pageIndex","pageSize","filteredDataLength","then","lastPageIndex","Math","ceil","newPageIndex","min","Portal","host","_attachedHost","attach","detach","ComponentPortal","component","viewContainerRef","injector","componentFactoryResolver","TemplatePortal","DomPortal","BasePortalOutlet","_isDisposed","attachDomPortal","_attachedPortal","portal","attachComponentPortal","attachTemplatePortal","ngDevMode","setAttachedHost","_invokeDisposeFn","hasAttached","_disposeFn","DomPortalOutlet","outletElement","_componentFactoryResolver","_appRef","_defaultInjector","anchorNode","createComment","parentNode","insertBefore","replaceChild","componentRef","componentFactory","resolveComponentFactory","createComponent","setDisposeFn","destroy","attachView","hostView","detachView","_getComponentRootNode","rootNode","detectChanges","removeChild","CdkPortal","CdkPortalOutlet","_viewContainerRef","_isInitialized","attached","_getRootNode","_attachedRef","ref","emit","outputs","PortalModule","moment","monthsShortWithDots","split","monthsShortWithoutDots","monthsParse","monthsRegex","defineLocale","months","monthsShort","m","format","test","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","mm","h","hh","dd","w","ww","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","MatAutocomplete_ng_template_0_Template","formFieldId_r1","id","ctx_r0","_classList","ariaLabel","_getPanelAriaLabelledby","_uniqueAutocompleteIdCounter","MatAutocompleteSelectedEvent","source","option","MatAutocompleteBase","_MatAutocompleteMixinBase","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","providedIn","autoActiveFirstOption","_MatAutocompleteBase","defaults","platform","_activeOptionChanges","EMPTY","showPanel","_isOpen","displayWith","optionSelected","opened","closed","optionActivated","inertGroups","SAFARI","_autoActiveFirstOption","className","_setVisibilityClasses","_keyManager","options","withWrap","toArray","_setVisibility","scrollTop","panel","event","labelId","ariaLabelledby","_visibleClass","_hiddenClass","panelWidth","MatAutocomplete","ɵMatAutocomplete_BaseFactory","optionGroups","disableRipple","changeDetection","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","deps","useFactory","overlay","scrollStrategies","reposition","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MatAutocompleteTrigger","multi","_MatAutocompleteTriggerBase","_element","_overlay","_zone","scrollStrategy","_formField","_defaults","_componentDestroyed","_autocompleteDisabled","_manuallyFloatingLabel","_viewportSubscription","_canOpenOnNextFocus","_closeKeyEventStream","_windowBlurHandler","activeElement","panelOpen","_onChange","_onTouched","autocompleteAttribute","_overlayAttached","optionSelections","autocomplete","onSelectionChange","_scrollStrategy","window","_getWindow","runOutsideAngular","addEventListener","_positionStrategy","_setStrategyPositions","_overlayRef","updatePosition","removeEventListener","_destroyPanel","_attachOverlay","_floatLabel","_resetLabel","_closingActionsSubscription","tabOut","_getOutsideClickStream","detachments","activeItem","clickTarget","_isInsideShadowRoot","composedPath","target","formField","customOrigin","connectedTo","contains","overlayElement","_setTriggerValue","isDisabled","disabled","keyCode","preventDefault","activeOption","_selectViaInteraction","_resetActiveItem","prevActiveItem","isArrowKey","onKeydown","_canOpen","openPanel","_scrollToOption","activeItemIndex","parseFloat","_previousValue","shouldAnimate","floatLabel","_animateAndLockLabel","firstStable","optionChanges","reapplyLastPosition","wasOpen","panelClosingActions","_setValueAndClose","closePanel","dispose","toDisplay","inputValue","_control","_clearPreviousSelectedOption","focus","_emitSelectEvent","skip","selected","deselect","overlayRef","setOrigin","_getConnectedElement","updateSize","_getPanelWidth","_portal","getLabelId","_getOverlayConfig","keydownEvents","stopPropagation","_subscribeToClosingActions","positionStrategy","_getOverlayPosition","panelClass","overlayPanelClass","strategy","flexibleConnectedTo","withFlexibleDimensions","withPush","belowPositions","originX","originY","overlayX","overlayY","_aboveClass","abovePositions","withPositions","getConnectedOverlayOrigin","_getHostWidth","setFirstItemActive","setActiveItem","readOnly","defaultView","labelCount","_setScrollTop","_getHostElement","newScrollPosition","offsetTop","offsetHeight","_getScrollTop","autocompleteDisabled","ɵMatAutocompleteTrigger_BaseFactory","_handleFocus","$event","_handleInput","_handleKeydown","toString","MatAutocompleteModule","providers","Component","instanceFactory","multipleInstances","serviceProps","instantiationMode","onInstanceCreated","prototype","setInstantiationMode","mode","setMultipleInstances","setServiceProps","props","setInstanceCreatedCallback","callback","DEFAULT_ENTRY_NAME","Provider","instances","instancesDeferred","instancesOptions","onInitCallbacks","identifier","normalizedIdentifier","normalizeInstanceIdentifier","deferred","isInitialized","shouldAutoInitialize","instance","getOrInitializeService","instanceIdentifier","e","promise","getImmediate","optional","Error","getComponent","setComponent","e_1","isComponentEager","entries","_c","done","_d","instanceDeferred","e_1_1","error","return","call","clearInstance","services","label","all","service","INTERNAL","_delete","sent","isComponentSet","getOptions","initialize","opts","e_2","_e","e_2_1","onInit","existingCallbacks","existingInstance","invokeOnInitCallbacks","e_3","callbacks","callbacks_1","callbacks_1_1","e_3_1","ComponentContainer","addComponent","provider","getProvider","addOrOverwriteComponent","getProviders","monthsParseExact","LoginType","http","configService","jwtHelper","store","router","messagingService","headers","requestOptions","Authorization","localStorage","getItem","Accept","param","param$","asObservable","login","post","config","apiUrl","res","setItem","access_token","decodeToken","dispatch","authToken","tip","User","UserType","plaka","MemberOf","f","developer","merkez","bayi","diğer","filo","OEPlaza","JSON","stringify","getDistInfo","lngKod","txtUnvan","distYetki","requestPermission","receiveMessage","message","currentMessage","distInfo","parse","logout","cntloginType","location","hostname","navigateByUrl","CurrentUser","userStr","user","MiyaUser","ExternalId","Id","postTrendyolRandevuOku","vasId","formData","FormData","append","accessTokenexp","eslesenDist","distArray","x","dist","isAuthenticated","isTokenExpired","postKullaniciTemplate","req","postKullaniciTemplateKaydet","KullaniciyaBagliFiloListesi","kullaniciTipi","parametre","AuthService","distinctUntilChanged","compare","keySelector","lift","DistinctUntilChangedOperator","subscriber","DistinctUntilChangedSubscriber","destination","hasKey","err","result","GetIntrinsic","require","define","hasDescriptors","gOPD","$TypeError","$floor","module","exports","loose","functionLengthIsConfigurable","functionLengthIsWritable","desc","configurable","writable","DataSource","isDataSource","ArrayDataSource","_DisposeViewRepeaterStrategy","itemContextFactory","itemValueResolver","itemViewChanged","adjustedPreviousIndex","insertContext","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","_insertView","_detachAndCacheView","_moveView","viewArgsFactory","cachedView","_insertViewFromCache","viewArgs","detachedView","_maybeCacheView","pop","insert","SelectionModel","_multiple","initiallySelectedValues","_emitChanges","_selection","_deselectedToEmit","_selectedToEmit","changed","_markSelected","_selected","_verifyValueAssignment","_emitChangeEvent","_unmarkSelected","isSelected","select","_unmarkAll","size","isEmpty","predicate","added","removed","UniqueSelectionDispatcher","_listeners","listener","registered","_VIEW_REPEATER_STRATEGY","MatDialogContainer_ng_template_0_Template","MatDialogConfig","hasBackdrop","backdropClass","disableClose","maxWidth","ariaDescribedBy","ariaLabelledBy","autoFocus","restoreFocus","closeOnNavigation","matDialogAnimations","dialogContainer","opacity","transform","_MatDialogContainerBase","_focusTrapFactory","_config","_focusMonitor","_animationStateChanged","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_portalOutlet","_ariaLabelledBy","_setupFocusTrap","_capturePreviouslyFocusedElement","_focusDialogContainer","_containsFocus","_focusTrap","focusInitialElement","focusInitialElementWhenReady","previousElement","_getActiveElement","body","focusVia","shadowRoot","MatDialogContainer","_state","toState","totalTime","_trapFocus","_restoreFocus","ɵMatDialogContainer_BaseFactory","_onAnimationStart","_onAnimationDone","_id","animation","uniqueId","MatDialogRef","_containerInstance","_afterOpened","_afterClosed","_beforeClosed","clearTimeout","_closeFallbackTimeout","_finishDialogClose","_result","componentInstance","_closeDialogVia","backdropClick","_recaptureFocus","dialogResult","detachBackdrop","setTimeout","_startExitAnimation","_getPositionStrategy","centerHorizontally","centerVertically","classes","addPanelClass","removePanelClass","getConfig","interactionType","close","MAT_DIALOG_DATA","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","block","_MatDialogBase","_injector","_defaultOptions","_parentDialog","_overlayContainer","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","afterAllClosed","openDialogs","_getAfterAllClosed","afterOpened","parent","componentOrTemplateRef","defaultOptions","assign","_applyConfigDefaults","getDialogById","_createOverlay","_attachDialogContainer","dialogRef","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","afterClosed","_removeOpenDialog","_initializeWithAttachedContent","_closeDialogs","dialog","overlayConfig","dialogConfig","global","minWidth","minHeight","maxHeight","disposeOnNavigation","containerPortal","_createInjector","contentRef","userInjector","splice","previousValue","removeAttribute","overlayContainer","getContainerElement","parentElement","siblings","sibling","hasAttribute","getAttribute","dialogs","MatDialog","parentDialog","dialogElementUid","MatDialogClose","_dialog","getClosestDialog","proxiedChange","screenX","screenY","_onButtonClick","_matDialogClose","MatDialogTitle","_dialogRef","MatDialogContent","MatDialogActions","MatDialogModule","mediaQueryStyleNode","mediaQueriesForWebkitCompatibility","MediaMatcher","_matchMedia","matchMedia","bind","noopMatchMedia","query","WEBKIT","document","head","sheet","insertRule","console","createEmptyStyleRule","matches","media","addListener","removeListener","BreakpointObserver","_mediaMatcher","_queries","_destroySubject","splitQueries","mediaQuery","_registerQuery","mql","observables","observable","stateObservable","breakpointStates","response","breakpoints","output","observer","handler","run","queries","a1","a2","Breakpoints","XSmall","Small","Medium","Large","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","HandsetLandscape","TabletLandscape","WebLandscape","formats","hasOwnProperty","hexTable","toUpperCase","arrayToObject","plainObjects","limit","combine","compact","queue","o","prop","refs","val","compacted","compactQueue","decode","str","decoder","charset","strWithoutPlus","unescape","decodeURIComponent","encode","defaultEncoder","kind","string","Symbol","String","escape","$0","parseInt","out","segment","arr","c","charCodeAt","RFC1738","charAt","join","isBuffer","constructor","isRegExp","maybeMap","mapped","allowPrototypes","mergeTarget","targetItem","symbolMap","1","2","3","4","5","6","7","8","9","0","numberMap","preparse","match","postformat","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","day","invalidDate","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","_classCallCheck","Constructor","TypeError","el","ngAfterViewInit","setupOptions","menu","KTMenu","getMenu","menuDesktopMode","MenuDirective","FullCalendarVDom","render","createRef","Fragment","createContext","createPortal","flushSync","unmountComponentAtNode","EventSourceApi","internalEventSource","sourceId","refetch","sourceIds","isRefetch","defineProperty","publicId","enumerable","meta","url","removeElement","elementClosest","selector","closest","documentElement","elementMatches","matchesSelector","msMatchesSelector","PIXEL_PROP_RE","applyStyle","propName","applyStyleProp","getEventTargetViaRoot","ev","getElRoot","getRootNode","guid$1","getUniqueDomId","listenBySelector","eventType","attachedHandler","matchedChild","buildDelegationHandler","transitionEventNames","whenTransitionDone","realCallback","eventName","createAriaClickAttrs","__assign","onClick","createAriaKeyboardAttrs","tabIndex","onKeyDown","guidNumber","guid","disableCursor","enableCursor","preventSelection","allowSelection","preventContextMenu","allowContextMenu","compareByFieldSpec","obj0","obj1","fieldSpec","func","field","localeCompare","order","padStart","len","substr","formatWithOrdinals","formatter","fallbackText","apply","arg","compareNumbers","isInt","n","computeSmallestCellWidth","cellEl","allWidthEl","contentWidthEl","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffWeeks","m0","m1","diffDays","valueOf","diffWholeDays","timeAsMs","round","startOfDay","getUTCFullYear","getUTCMonth","getUTCDate","weekOfGivenYear","marker","year","firstWeekStart","firstWeekOffset","dayStart","days","floor","fwd","getUTCDay","dateToLocalArray","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","arrayToLocalDate","Date","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","UTC","isValidDate","isNaN","createEventInstance","defId","range","forcedStartTzo","forcedEndTzo","instanceId","mergeProps","propObjs","complexPropsMap","dest","name_1","complexObjs","unshift","name_2","filterHash","hash","filtered","mapHash","newHash","arrayToHash","a_1","hashValuesToArray","isPropsEqual","getUnequalProps","compareObjs","oldProps","newProps","equalityFuncs","val0","val1","comparator","expandRecurring","eventStore","framingRange","dateEnv","pluginHooks","defs","recurringDef","duration","allDay","defaultAllDayEventDuration","defaultTimedEventDuration","starts_1","expandRecurringRanges","recurringTypes","eventDef","markers","typeId","expand","typeData","subtract","INTERNAL_UNITS","PARSE_RE","createDuration","input","unit","exec","sign","years","milliseconds","parseString","parseObject","hours","minutes","seconds","second","millisecond","ms","weeks","specifiedWeeks","addDurations","d0","d1","multiplyDuration","asRoughDays","dur","asRoughMs","wholeDivideDurations","numerator","denominator","localRes","greatestDurationDenominator","buildIsoString","timeZoneOffset","stripZeroTime","toISOString","formatTimeZoneOffset","formatDayString","formatIsoTimeString","doIso","abs","mins","isArraysEqual","a0","equalityFunc","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","_this","newArg","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitZeroMinute","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","weekday","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","max","buildFormattingFunc","formatRange","betterDefaultSeparator","ca","diffSeverity","calendarSystem","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnitForPartial","full0","full1","partialFormattingFunc","biggestUnit","partialOptions","computePartialFormattingOptions","partial0","partial1","insertion","i0","found0","before0","after0","i1","found1","before1","after1","before","after","findCommonInsertion","defaultSeparator","getLargestUnit","standardDatePropCnt","num","computeWeekNumber","weekText","locale","parts","weekTextLong","simpleNumberFormat","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","toLocaleLowerCase","postProcess","buildNativeFormattingFunc","expandZonedMarker","dateInfo","markerToArray","createVerboseFormattingArg","startInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","BASE_OPTION_REFINERS","navLinkDayClick","identity","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","customButtons","nextDayThreshold","scrollTime","scrollTimeReset","Boolean","slotMinTime","slotMaxTime","dayPopoverFormat","slotDuration","snapDuration","headerToolbar","footerToolbar","defaultRangeSeparator","titleRangeSeparator","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","initialView","aspectRatio","weekends","weekNumberCalculation","weekNumbers","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","editable","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","specs","tokens","substring","eventOrderStrict","handleWindowResize","windowResizeDelay","longPressDelay","eventDragMinDistance","expandRows","contentHeight","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","businessHours","initialDate","now","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","viewHeight","defaultAllDay","eventSourceFailure","eventSourceSuccess","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventContent","eventDidMount","eventWillUnmount","selectConstraint","selectOverlap","selectAllow","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayText","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","rerenderDelay","moreLinkText","moreLinkHint","selectMinDistance","selectable","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","plugins","firstDay","dayCount","dateAlignment","dateIncrement","hiddenDays","monthMode","fixedWeekCount","validRange","visibleRange","titleFormat","eventInteractive","noEventsText","viewHint","navLinkHint","closeHint","timeHint","eventHint","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","BASE_OPTION_DEFAULTS","center","CALENDAR_LISTENER_REFINERS","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventClick","eventMouseEnter","eventMouseLeave","unselect","loading","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","buttonHints","views","initialEvents","events","eventSources","COMPLEX_OPTION_COMPARATORS","isMaybeObjectsEqual","VIEW_OPTION_REFINERS","buttonTextKey","dateProfileGeneratorClass","usesMinMaxTime","classNames","content","didMount","willUnmount","mergeRawOptions","optionSets","refineProps","refiners","refined","extra","raw","parseEvents","rawEvents","eventSource","allowOpenRange","eventRefiners","buildEventRefiners","rawEvents_1","tuple","parseEvent","eventTupleToStore","getRelevantEvents","def_1","newStore","filterEventStoreDefs","lookDef","def0","groupId","createEmptyEventStore","mergeEventStores","store0","store1","filterFunc","parseClassNames","EVENT_UI_REFINERS","startEditable","durationEditable","constraint","overlap","allow","color","backgroundColor","borderColor","textColor","EMPTY_EVENT_UI","constraints","allows","createEventUi","normalizeConstraint","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_NON_DATE_REFINERS","title","interactive","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","refineEventDef","computeIsDefaultAllDay","recurringRes","parsed","allDayGuess","parseRecurring","parseEventDef","singleRes","startMeta","endMeta","startMarker","hasEnd","endMarker","createMarkerMeta","isTimeUnspecified","forcedTzo","parseSingle","ui","eventDefMemberAdders","memberAdder","freeze","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","startDay","endDay","endTimeMS","isMultiDayRange","diffDates","date0","date1","largeUnit","diffWholeYears","diffWholeMonths","m0day","m1day","invertRanges","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","intersectRanges","newRange","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","origRange","normalRange","slicedRange","isStart","isEnd","invertedRanges_1","invertedRanges_2","bg","fg","hasBgRendering","setElSeg","seg","fcSeg","getElSeg","eventDefs","compileEventUi","sortEventSegs","segs","eventOrderSpecs","objs","buildSegCompareObj","fieldSpecs","cmp","compareByFieldSpecs","_seg","eventRange","computeSegDraggable","transformers_1","isDraggableTransformers","transformer","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","timeFormat","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","eventInstance","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","nowDate","segRange","isPast","isFuture","isToday","buildEventRangeKey","getSegAnchorAttrs","href","emitter","hasHandlers","trigger","EventApi","jsEvent","viewApi","STANDARD_PROPS","isDateSpansEqual","span0","span1","isSpanPropsEqual","buildRangeApiWithTimeZone","omitTime","buildRangeApi","toDate","startStr","formatIso","endStr","fabricateEventRange","dateSpan","triggerDateSelect","selection","pev","buildDateSpanApiWithContext","origEvent","calendarApi","span","dateSpanTransforms","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","mutation","eventConfigs","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","standardProps","startDelta","endDelta","copy","eventDefMutationAppliers","applier","forceAllDay","clearEnd","datesDelta","ViewApi","getCurrentData","viewTitle","dateProfile","activeRange","currentRange","getOption","EVENT_SOURCE_REFINERS","success","failure","parseEventSource","rawObj","buildEventSourceRefiners","metaRes","eventSourceDefs","parseMeta","sourceDefId","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","eventSourceRefiners","getNow","nowInput","createNowMarker","createMarker","CalendarApi","currentDataManager","action","batchRendering","setOption","optionName","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","on","handlerName","currentCalendarOptionsRefiners","warn","off","__spreadArray","changeView","viewType","dateOrRange","dateMarker","zoomTo","spec","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","header","viewsWithButtons","footer","singleUnit","prev","prevYear","addYears","currentDate","nextYear","today","calendarOptions","gotoDate","zonedDateInput","incrementDate","deltaInput","delta","formatDate","settings","dateOrObj","endDate","selectionInput","defaultDuration","parseOpenDateSpan","parseDateSpan","dateSelection","triggerDateUnselect","addEvent","eventInput","sourceInput","_def","_instance","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","eventApi","relatedEvents","revert","eventApiToStore","getEventById","getEvents","currentData","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","sources","removeAllEventSources","refetchEvents","scrollToTime","timeInput","time","_context","setProp","mutate","setExtendedProp","setStart","startInput","granularity","maintainDuration","setEnd","endInput","setDates","instanceRange","moveStart","moveEnd","moveDates","setAllDay","formatInput","context_1","eventStore_1","relevantEvents","oldEvent","asStore","toPlainObject","collapseColor","collapseExtendedProps","toJSON","excludeInstance","eventApis","excludeInstanceId","calendarSystemClassMap","GregorianCalendarSystem","arrayToMarker","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","weekDow","weekDoy","weekNumberFunc","timestampToMarker","getYear","addMonths","greatestWholeUnit","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","startOf","startOfYear","startOfMonth","startOfWeek","startOfHour","startOfMinute","startOfSecond","nextW","weekOfYear","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","timestampToArray","getTimezoneOffset","offsetForArray","globalLocales","MINIMAL_RAW_EN_LOCALE","code","list","RAW_EN_LOCALE","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","en","allRawLocales_1","rawLocale","buildLocale","inputSingular","available","codeArg","simpleId","queryRawLocale","parseLocale","queryLocale","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","startTime","endTime","daysOfWeek","pointInsideRect","point","rect","intersectRects","rect1","rect2","constrainPoint","getRectCenter","diffPoints","point1","point2","getCanVGrowWithinCell","innerHTML","possible","computeCanVGrowWithinCell","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventDrag","eventResizes","eventResize","info","buildEventUiForKey","keyInfo","buildEventUi","eventSelection","dateSpans","keys_1","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","interaction","splitStates","affectedStores_1","affectedEvents","mutatedKeysByDefId","mutatedEvents","mutatedStores_1","populate","isEvent","allUi","eventUiForKey","baseParts","stuff","getDateMeta","isOther","getDayClassNames","theme","getClass","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","dateStr","zonedDate","handleInteraction","customAction","_scrollbarWidths","_isRtlScrollbarOnLeft","computeScrollbarWidthsForEl","clientHeight","offsetWidth","clientWidth","computeInnerRect","goWithinPadding","doFromWindowViewport","outerRect","computeRect","edges","getPadding","computedStyle","getComputedStyle","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","outerEl","border","padding","overflow","firstChild","computeIsRtlScrollbarOnLeft","paddingLeft","paddingRight","paddingTop","paddingBottom","computeEdges","pageXOffset","pageYOffset","getClippingParents","parents","HTMLElement","overflowY","overflowX","Emitter","handlers","thisContext","setThisContext","setOptions","addToHash","removeFromHash","attachedHandlers","optionHandler","handlers_1","PositionCache","originEl","els","isHorizontal","isVertical","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","ElementScrollController","_super","__extends","scrollLeft","setScrollTop","setScrollLeft","scrollWidth","scrollHeight","WindowScrollController","scroll","Theme","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","prefix","iconOverridePrefix","getIconClass","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","ScrollResponder","execFunc","handleScrollRequest","request","queuedRequest","drain","fireInitialScroll","update","isDatesNew","ViewContextType","buildViewContext","viewSpec","viewOptions","dateProfileGenerator","registerInteractiveComponent","unregisterInteractiveComponent","addResizeHandler","removeResizeHandler","createScrollResponder","PureComponent","shouldComponentUpdate","nextProps","nextState","debug","log","propEquality","stateEquality","safeSetState","newState","setState","addPropsEquality","addStateEquality","contextType","BaseComponent","setRef","current","DateComponent","uid","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidSegDownEl","isValidDateDownEl","createPlugin","reducers","isLoadingFuncs","contextInit","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","namedTimeZonedImpl","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","contentTypeHandlers","listenerRefiners","optionRefiners","propSetHandlers","StandardTheme","ensureViewDef","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","rawOptions","overrides","buildViewDef","root","tableCellShaded","buttonGroup","button","buttonActive","RenderHook","rootElRef","handleRootEl","elRef","hookProps","MountHook","ContentHook","defaultContent","backupElRef","innerElRef","innerContent","normalizeClassNames","CustomContentRenderContext","Consumer","renderId","ContentHookInner","renderInnerContent","componentDidMount","updateCustomContent","componentDidUpdate","componentWillUnmount","customContentInfo","getInnerContent","getContentMeta","contentKey","contentVal","buildLifecycleFuncs","normalizeContent","searchKey","rootEl","buildClassNameNormalizer","currentGenerator","currentHookProps","currentClassNames","generator","ViewRoot","customClassNames","parseViewConfigs","parseViewConfig","viewProps","viewElRef","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","compileViewDefs","durationInput","durationUnit","singleUnitOverrides","json","durationInputMap","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","buttonTitleOverride","buttonHint","buttonTitleDefault","buildViewSpec","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","currentRangeUnit","build","buildNext","nextDate","currentInfo","isRangeAllDay","renderRange","isValid","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","validRangeInput","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","fallback","customAlignment","rangeInput","isHiddenDayHash","inc","isExclusive","computeEventSourcesLoading","addSources","eventSourceHash","sources_1","fetchDirtySources","fetchSourcesByIds","doesSourceNeedRange","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetchId","fetch","xhr","excludeStaticSources","ignoreRange","transformEachRawEvent","refinedEvents","rawEvent","refinedEvent","excludeEventsBySourceId","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionWidgets","hasTitle","sectionName","sectionRes","parseSection","widgets","sectionStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","click","text","hint","textFallback","prevOrNext","navUnit","encodeParams","params","encodeURIComponent","handleEventSources","unfoundSources","newInputs","inputs_1","inputFound","unfoundSources_1","newInputs_1","globalPlugins","isResolved","wrappedSuccess","wrappedFailure","unpromisify","method","extraParams","requestParams","customRequestParams","buildRequestParams","successCallback","failureCallback","injectQueryStringParams","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","onerror","send","requestJson","errorMessage","startRecur","endRecur","recurringData","clippedFramingRange","dowHash","dayMarker","instanceStarts","instanceStart","expandRanges","html","currentEl","currentHtml","domNodes","currentDomNodes","newDomNodes","newDomNodes_1","DelayedRunner","drainedOption","isRunning","isDirty","pauseDepths","timeoutId","delay","isPaused","tryDrain","pause","scope","resume","force","drained","TaskRunner","runTaskOption","delayedRunner","completedTasks","runTask","buildTitle","buildTitleFormat","CalendarDataManager","currentHooks","currentOverrideDefs","currentGlobalDefs","computeOptionsData","_computeOptionsData","computeCurrentViewData","_computeCurrentViewData","buildPluginHooks","overrideDefs","globalDefs","pluginDefs","isAdded","hooks","addDefs","defs_1","hooks0","hooks1","buildDateEnv","buildTheme","buildDateProfileGenerator","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","actionRunner","_handleAction","updateData","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","optionsData","currentViewType","currentViewData","initialDateInput","calendarContext","rawSources","rawSources_1","parseInitialSources","initEventSources","initialState","renderableEventStore","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","reduceDynamicOptionOverrides","reduceViewType","dp","reduceDateProfile","reduceCurrentDate","receiveResponse","reduceEventSources","subset","calEachTransform","sourceEachTransform","transformRawEvents","receiveRawEvents","expandRange","master","sub","filteredDefs","filteredInstances","excludeSubEventStore","reduceEventStore","eventUiSingleBase","eventUiBySource","wasLoading","isLoading","onAction","oldDateEnv","newDateEnv","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","onData","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","currentRaw","currentRefined","anyChanges","processRawViewOptions","explicitLocale","isLoadingFunc","rawDef","viewName","CalendarDataProvider","handleData","dataManager","prevProps","newOptionOverrides","SegHierarchy","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","entry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","thickness","stackCnt","touchingEntry","splitEntry","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","lateral","insertAt","level","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntries","trackingEntry","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","rects","entries_1","groupIntersectingEntries","merges","entries_2","filteredMerges","hungryMerge","merges_1","searchVal","getItemVal","endIndex","middleIndex","middleVal","Interaction","isHitComboAllowed","parseInteractionSettings","useEventCenter","interactionSettingsToStore","interactionSettingsStore","ElementDragging","setMirrorIsVisible","bool","setMirrorNeedsRevert","setAutoScrollEnabled","DRAG_META_REFINERS","parseDragMeta","leftoverProps","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widgetGroup_1","widget","titleId","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","groupClassName","Toolbar","startContent","endContent","forceLtr","model","centerContent","extraClassName","renderSection","ViewContainer","availableWidth","handleEl","updateAvailableWidth","handleResize","labeledById","liquid","EventClicking","handleSegClick","segEl","hasUrlContainer","defaultPrevented","EventHovering","onMouseEnter","onMouseLeave","currentMatchedChild","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","mouseOverEv","realOnMouseLeave_1","mouseLeaveEv","publicEvName","CalendarContent","buildViewPropTransformers","buildToolbarProps","headerRef","footerRef","interactionsStore","viewLabelId","settingsInput","interactions","TheInteractionClass","listeners","listeners_1","resizeRunner","viewAspectRatio","toolbarProps","viewVGrow","isHeightAuto","forPrint","viewContext","renderView","buildAppendContent","CalendarInteractionClass","todayInfo","prevInfo","nextInfo","theClasses","TheClass","CalendarRoot","handleBeforePrint","handleAfterPrint","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","navLinkAttrs","colCnt","extraHookProps","colSpan","extraDataAttrs","isSticky","WEEKDAY_FORMAT","TableDowCell","dateMeta","extraClassNames","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","dates","datesRepDistinctDays","renderIntro","explicitFormat","dateCnt","computeFallbackHeaderFormat","DaySeriesModel","indices","dayIndex","cnt","sliceRange","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","col","buildCell","seriesSeg","nextIndex","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","segs_1","eventRanges","eventRanges_1","sliceEventRange","segs_2","isComponentAllDay","isInteractionValid","isNewPropsValid","isDateSelectionValid","calendarState","dateSpanMeta","filterConfig","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","removals","otherEventStore","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlapFunc","otherInstanceId","otherInstance","calendarEventStore","subjectAllow","subjectDateSpan","origDef","isInteractionPropsValid","relevantEventStore","relevantDefs","relevantInstances","selectionRange","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","isDateSelectionPropsValid","businessHoursUnexpanded","constraints_1","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","outerRanges_1","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","marginLeft","marginRight","marginBottom","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","callbackMap","handleValue","refCallback","collect","step","collectFromHash","getAll","getSectionHasLiquidHeight","sectionConfig","isColPropsEqual","cols0","cols1","renderMicroColGroup","cols","shrinkWidth","colNodes","cols_1","colProps","sanitizeShrinkWidth","getSectionClassNames","wholeTableVGrow","renderScrollShim","tableMinWidth","getStickyHeaderDates","getStickyFooterScrollbar","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeShrinkWidth","computeScrollerDims","sectionConfigs","sections","microColGroupNode","getScrollGridClassNames","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","isHeader","outerContent","renderChunkTd","chunk","chunkConfig","getAllowYScrolling","isLiquid","sectionKey","tableClassName","syncRowHeights","tableColGroupNode","rowContent","renderChunkContent","rowSyncHeights","reportRowHeightChange","scrollerEl","sections_1","getSectionByKey","scrollerElRef","cols_2","hasShrinkWidth","chunkEls","largestWidth","shrinkCells_1","containers","allMatches","querySelectorAll","findElements","scrollbarWidth","computeScrollbarWidths","scroller","harnessEl","EventRoot","timeText","isDraggable","disableDragging","isStartResizable","disableResizing","isEndResizable","isMirror","isDragging","isResizing","isDateSelecting","standardClassNames","getEventClassNames","StandardEvent","defaultTimeFormat","renderInnerContent$1","innerProps","NowIndicatorRoot","isAxis","DAY_NUM_FORMAT","DayCellContent","refineDayCellHookProps","showDayNumber","extraProps","dayNumberText","DayCellRoot","refineHookProps","dataAttrs","renderFill","fillType","BgEvent","WeekNumberRoot","defaultFormat","renderInner","Popover","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","onClose","extraAttrs","parentEl","alignmentEl","alignGridTop","alignmentRect","clippingParents","clippingParents_1","intersection","computeClippedClientRect","popoverDims","popoverTop","popoverLeft","origin_1","offsetParent","MorePopover","startDate","dayClassNames","extraDateSpan","dayEl","layer","MoreLinkRoot","linkElRef","isPopoverOpen","popoverId","handleClick","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","popoverContent","updateParentEl","computeEarliestSegStart","pickLatestEnd","pickEarliestStart","seg0","seg1","_c2","_c3","enterDuration","_c4","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","disableToggleValue","nextUniqueId","MAT_SLIDE_TOGGLE_VALUE_ACCESSOR","MatSlideToggle","MatSlideToggleChange","checked","MatSlideToggleBase","_MatSlideToggleMixinBase","_animationMode","_","_uniqueId","_required","_checked","labelPosition","toggleChange","monitor","focusOrigin","_inputElement","stopMonitoring","origin","_thumbEl","_thumbBarEl","required","_onChangeEvent","_onInputClick","_onLabelTextChange","_r0","_r4","inputId","textContent","_MatSlideToggleRequiredValidatorModule","MatSlideToggleModule","_taggedTemplateLiteral","strings","defineProperties","hasFirst","subscriptions","subscription","subscribeToResult","_outerValue","innerValue","outerIndex","OuterSubscriber","_c8","NgbDatepicker_ng_template_0_Template","currentMonth_r7","currentMonth","selected_r8","disabled_r9","focused_r10","focused","NgbDatepicker_ngb_datepicker_navigation_3_Template","_r12","onNavigateEvent","onNavigateDateSelect","ctx_r2","firstDate","navigation","prevDisabled","nextDisabled","selectBoxes","NgbDatepicker_ng_template_6_div_1_Template","month_r14","ctx_r16","i18n","getMonthFullName","getYearNumerals","NgbDatepicker_ng_template_6_Template","_r19","onDateSelect","ctx_r4","displayMonths","dayTemplate","showWeekdays","showWeekNumbers","NgbDatepicker_ng_template_7_Template","NgbDatepickerMonthView_div_0_div_1_Template","NgbDatepickerMonthView_div_0_div_2_Template","w_r4","ctx_r3","getWeekdayShortName","NgbDatepickerMonthView_div_0_Template","NgbDatepickerMonthView_ng_template_1_div_0_div_1_Template","week_r5","ctx_r7","getWeekNumerals","NgbDatepickerMonthView_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template","NgbDatepickerMonthView_ng_template_1_div_0_div_2_ng_template_1_Template","day_r10","ctx_r11","NgbDatepickerMonthView_ng_template_1_div_0_div_2_Template","_r15","doSelect","hidden","tabindex","NgbDatepickerMonthView_ng_template_1_div_0_Template","ctx_r6","NgbDatepickerMonthView_ng_template_1_Template","collapsed","NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template","_r3","NgbDatepickerNavigation_4_ng_template_0_div_0_Template","NgbDatepickerNavigation_4_ng_template_0_div_3_Template","NgbDatepickerNavigation_4_ng_template_0_Template","month_r5","i_r6","NgbDatepickerNavigation_4_Template","ctx_r1","_c17","NgbDatepickerNavigationSelect_option_1_Template","m_r2","getMonthShortName","NgbDatepickerNavigationSelect_option_3_Template","y_r3","NgbProgressbar_span_2_Template","getPercentValue","NgbRating_ng_template_0_Template","fill","NgbRating_ng_template_2_ng_template_3_Template","NgbRating_ng_template_2_Template","_r7","index_r4","enter","nextRate","readonly","starTemplate","starTemplateFromContent","contexts","NgbTabset_li_1_ng_template_3_Template","NgbTabset_li_1_Template","_r5","tab_r2","activeId","destroyOnHide","titleTpl","NgbTabset_ng_template_3_div_0_ng_template_1_Template","NgbTabset_ng_template_3_div_0_Template","tab_r6","contentTpl","NgbTabset_ng_template_3_Template","NgbTimepicker_button_3_Template","_r9","ctx_r8","changeHour","hourStep","isSmallSize","isLargeSize","NgbTimepicker_button_5_Template","_r11","ctx_r10","NgbTimepicker_button_9_Template","_r13","ctx_r12","changeMinute","minuteStep","NgbTimepicker_button_11_Template","ctx_r14","NgbTimepicker_div_12_Template","NgbTimepicker_div_13_button_1_Template","ctx_r18","changeSecond","secondStep","NgbTimepicker_div_13_button_3_Template","_r21","ctx_r20","ctx_r17","NgbTimepicker_div_13_Template","_r23","updateSecond","ctx_r24","ctx_r25","ctx_r5","spinners","formatMinSec","readonlyInputs","NgbTimepicker_div_14_Template","NgbTimepicker_div_15_ng_container_2_Template","NgbTimepicker_div_15_ng_template_3_Template","NgbTimepicker_div_15_Template","_r30","toggleMeridian","_r27","NgbHighlight_ng_template_0_span_0_Template","part_r1","highlightClass","NgbHighlight_ng_template_0_ng_template_1_Template","NgbHighlight_ng_template_0_Template","isOdd_r2","NgbTypeaheadWindow_ng_template_0_Template","term_r4","term","formatter_r5","NgbTypeaheadWindow_ng_template_2_ng_template_1_Template","_c76","NgbTypeaheadWindow_ng_template_2_Template","_r10","idx_r7","markActive","result_r6","activeIdx","resultTemplate","toInteger","getValueInRange","isNumber","isInteger","isFinite","isDefined","padNumber","hasClassName","Element","webkitMatchesSelector","NgbAccordionModule","ngModule","NgbAlertModule","NgbButtonLabel","NGB_CHECKBOX_VALUE_ACCESSOR","NgbCheckBox","_label","_cd","valueChecked","valueUnChecked","onChange","onTouched","isFocused","modelToPropagate","writeValue","onInputChange","NGB_RADIO_VALUE_ACCESSOR","nextId$1","NgbRadioGroup","_radios","_value","_disabled","setDisabledState","radio","_updateRadiosValue","_updateRadiosDisabled","updateValue","updateDisabled","NgbButtonsModule","NgbCarouselModule","NgbCollapseModule","other","NgbDate","fromJSDate","jsDate","toJSDate","getTime","setFullYear","NGB_DATEPICKER_CALENDAR_FACTORY","NgbCalendar","ngInjectableDef","NgbCalendarGregorian","period","setDate","getNext","getDay","firstDayOfWeek","setMonth","ɵNgbCalendarGregorian_BaseFactory","isChangedDate","equals","dateComparator","isChangedMonth","checkDateInRange","minDate","maxDate","isDateSelectable","markDisabled","getFirstViewDate","daysPerWeek","getDaysPerWeek","firstMonthDate","dayOfWeek","getWeekday","getPrev","NGB_DATEPICKER_18N_FACTORY","NgbDatepickerI18n","weekNumber","NgbDatepickerI18nDefault","_locale","weekdaysStartingOnSunday","Standalone","Short","_weekdaysShort","_monthsShort","Abbreviated","_monthsFull","Wide","NgbDatepickerService","_calendar","_i18n","_model$","_select$","focusVisible","outsideDays","selectedDate","dayTemplateData","_nextState","toValidDate","focusDate","emitEvent","getToday","defaultValue","ngbDate","patch","_updateState","_patchContexts","lastDate","checkMinBeforeMax","monthsToReuse","reusedIndex","findIndex","calendarToday","getWeeksPerMonth","weekObject","newDate","getDayAriaLabel","contextUserData","dayObject","getWeekNumber","buildMonth","buildMonths","yearChanged","monthChanged","generateSelectBoxYears","getMonths","generateSelectBoxMonths","Key","Tab","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","NgbDatepickerKeyMapService","_service","model$","_minDate","_maxDate","_firstViewDate","_lastViewDate","which","focusMove","shiftKey","focusSelect","NavigationEvent","PREV","NEXT","NgbDatepickerConfig","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","NgbDateAdapter","NgbDateStructAdapter","ɵNgbDateStructAdapter_BaseFactory","NGB_DATEPICKER_VALUE_ACCESSOR","NgbDatepicker","_keyMapService","_ngbDateAdapter","_destroyed$","navigate","select$","oldDate","navigationPrevented","newSelectedDate","newFocusedDate","oldFocusedDate","_controlValue","toModel","elementToFocus","focusIns$","fromEvent","_monthsEl","focusOuts$","relatedTarget","navigateTo","processKey","fromModel","footerTemplate","NgbDatepickerMonthView","NgbDatepickerNavigation","showSelect","$localize","isContainedIn","matchesSelectorIfAny","iOS","ngbAutoClose","zone","closed$","insideElements","ignoreElements","insideSelector","escapes$","mouseDowns$","MouseEvent","fromArray","race","withLatestFrom","navigator","userAgent","FOCUSABLE_ELEMENTS_SELECTOR","getFocusableBoundaryElements","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","lastFocusedElement","placementSeparator","positionService","getAllStyles","getStyle","offsetParentEl","isStaticPositioned","elPosition","parentOffset","clientTop","clientLeft","elBcr","viewportOffset","elOffset","hostElement","targetElement","placement","appendToBody","placementPrimary","placementSecondary","hostElPosition","targetElStyles","marginTop","targetElBCR","windowHeight","innerHeight","windowWidth","innerWidth","baseClass","placementVals","allowedPlacements","addClassesToTarget","targetPlacement","primary","secondary","classname","placementToRemove","hasAuto","search","testPlacement","isInViewport","addedClasses","positionElements","NGB_DATEPICKER_PARSER_FORMATTER_FACTORY","NgbDateParserFormatter","NgbDateISOParserFormatter","dateParts","ɵNgbDateISOParserFormatter_BaseFactory","NGB_DATEPICKER_VALUE_ACCESSOR$1","NGB_DATEPICKER_VALIDATOR","NgbInputDatepicker","_parserFormatter","_elRef","_vcRef","_renderer","_cfr","_dateAdapter","_changeDetector","_cRef","autoClose","dateSelect","_validatorChange","_zoneSubscription","_updatePopupPosition","isOpen","_fromDateStruct","requiredBefore","requiredAfter","invalid","_model","_writeModelValue","updateView","inputValueChanged","_inputValue","cf","_applyPopupStyling","_applyDatepickerInputs","_subscribeForDatepickerOutputs","ngOnInit","registerOnChange","changeDetectorRef","datepickerInstance","addClass","navigateEvent","setProperty","positionTarget","manualDateChange","onBlur","NgbDatepickerDayView","isMuted","attrs","getDayNumerals","NgbDatepickerNavigationSelect","changeMonth","changeYear","NgbDatepickerModule","NgbDropdownConfig","NgbNavbar","NgbDropdownItem","NgbDropdownMenu","dropdown","menuItems","NgbDropdownAnchor","anchorEl","NgbDropdown","ngbNavbar","_closed$","_open","openChange","_positionMenu","_applyPlacementClasses","_setCloseHandlers","_applyContainer","isFirstChange","_menu","_menuElement","_anchor","getNativeElement","_resetContainer","itemElements","_getMenuElements","isEventFromItems","isEventFromToggle","_isEventFromToggle","itemElement","_isDropup","_bodyContainer","_getFirstPlacement","renderer","dropdownMenuElement","removeStyle","bodyContainer","setStyle","dropdownElement","removeClass","dropdownClass","NgbDropdownModule","NgbModalConfig","backdrop","keyboard","nodes","_type","_applicationRef","_windowRef","_contentRef","_getContentRef","createText","noop","ScrollBar","_isPresent","_adjustBody","_getWidth","userSetPadding","paddingAmount","measurer","NgbModalBackdrop","reason","_windowCmptRef","_backdropCmptRef","_beforeDismiss","dismissEvent","dismiss","reject","_resolve","_reject","_removeModalElements","_dismiss","windowNativeEl","backdropNativeEl","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_elWithFocus","autoFocusable","firstFocusable","elWithFocus","escKey","windowClass","centered","NgbModalStack","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","activeWindowCmpt","_revertAriaHidden","_setAriaHidden","moduleCFR","contentInjector","containerEl","createRenderer","revertPaddingForScrollBar","compensate","removeBodyClass","activeModal","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","windowInstance","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","createTextNode","contentCmptFactory","modalContentInjector","unregisterModalRef","ngbWindowCmpt","onDestroy","NgbModal","_moduleCFR","_modalStack","combinedOptions","dismissAll","hasOpenModals","NgbModalModule","NgbPaginationModule","DEFAULT_ALIASES","parseTriggers","triggers","aliases","trimmedTriggers","parsedTriggers","triggerPair","alias","manualTriggers","isManual","observeTriggers","isOpenedFn","Observable","openFn","closeFn","toggleFn","listen","unsubscribeFn","triggerDelay","openDelay","closeDelay","input$","pending","filteredInput$","currentlyOpen","share","delayedOpen$","delayedClose$","NgbPopoverModule","NgbProgressbarConfig","animated","striped","showValue","NgbProgressbar","getValue","NgbProgressbarModule","NgbRatingConfig","resettable","NGB_RATING_VALUE_ACCESSOR","NgbRating","hover","leave","rateChange","rate","k","internalChange","newRate","toFixed","nextValue","_getFillValue","handleBlur","handleKeyDown","reset","ariaValueText","NgbRatingModule","NgbTabsetConfig","justify","orientation","nextId$4","NgbTabTitle","NgbTabContent","NgbTab","titleTpls","contentTpls","NgbTabset","tabChange","justifyClass","tabId","selectedTab","_getTabById","nextId","activeTab","tabs","tabsWithId","tab","NgbTabsetModule","updateHour","NaN","updateMinute","checkSecs","NgbTimepickerConfig","meridian","NGB_DATEPICKER_TIME_ADAPTER_FACTORY","NgbTimeAdapter","NgbTimeStructAdapter","ɵNgbTimeStructAdapter_BaseFactory","NGB_TIMEPICKER_VALUE_ACCESSOR","NgbTimepicker","_ngbTimeAdapter","_hourStep","_minuteStep","_secondStep","structValue","propagateModelChange","newVal","isPM","enteredHour","touched","formatHour","NgbTimepickerModule","NgbTooltipConfig","disableTooltip","nextId$5","NgbTooltipWindow","tooltipClass","NgbTooltip","shown","_ngbTooltipWindowId","_popupService","_ngbTooltip","_unregisterListenersFn","listenToTriggers","ngbTooltip","NgbTooltipModule","NgbHighlight","resultStr","resultTerms","regexStr","RegExp","NgbTypeaheadWindow","focusFirst","selectEvent","activeChangeEvent","results","_activeChanged","resetActive","ARIA_LIVE_DELAY","getLiveElement","lazyCreate","Live","_delay","delay$$1","setText","NgbTypeaheadConfig","showHint","NGB_TYPEAHEAD_VALUE_ACCESSOR","nextWindowId","NgbTypeahead","ngZone","_live","selectItem","popupId","_valueChanges","_resubscribeTypeahead","isPopupOpen","processedResults$","tap","_inputValueBackup","ngbTypeahead","userInput$","switchMap","_subscription","_subscribeToUserInput","_closePopup","_unsubscribeFromUserInput","_writeInputValue","_formatItemForInput","_showHint","getActive","_selectResult","_selectResultClosePopup","activeDescendant","dismissPopup","hasActive","userInputLowerCase","formattedVal","inputFormatter","_openPopup","resultFormatter","say","NgbTypeaheadModule","NGB_MODULES","NgbModule","standalone","isFormat","ll","lll","llll","_iterableToArray","iter","iterator","switchMapTo","innerObservable","resultSelector","VAPID_KEY","SERVICE_WORKER","firebaseLTv8","SDK_VERSION","AngularFireMessaging","nameOrConfig","platformId","vapidKey","_serviceWorker","schedulers","serviceWorker","messaging","subscribeOn","outsideAngular","observeOn","insideAngular","app","usePublicVapidKey","useServiceWorker","shareReplay","bufferSize","refCount","isSupported","throwError","getToken","Notification","permission","serviceWorkerRegistration","notificationPermission$","permissions","notificationPerm","onchange","tokenChange$","tokenChanges","messages","onMessage","requestToken","catchError","mergeMap","deleteToken","defaultIfEmpty","onBackgroundMessage","onTokenRefresh","setBackgroundMessageHandler","NotificationKaydet","NotificationService","angularFireMessaging","notificationService","lngDistKod","LngDistKod","LngKullaniciKod","TxtNotificationToken","LngKod","payload","MessagingService","rxSubscriber","random","hasError","thrownError","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","extendStatics","setPrototypeOf","__proto__","p","__","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","r","getOwnPropertyDescriptor","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","fulfilled","rejected","__generator","g","trys","ops","verb","op","__spreadArrays","il","jl","_enable_super_gross_mode_that_will_cause_bad_things","stack","webpackPolyfill","deprecate","paths","l","AsyncAction","scheduler","work","recycleAsyncId","requestAsyncId","setInterval","flush","clearInterval","execute","_execute","errored","errorValue","_unsubscribe","actions","Action","absoluteDelay","delayFor","DelayOperator","DelaySubscriber","notification","DelayMessage","_schedule","scheduleNotification","createNext","createComplete","observe","RangeError","BuiltInControlValueAccessor","NG_VALUE_ACCESSOR","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","getUserAgent","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","control","requiredValidator","requiredTrueValidator","emailValidator","minLength","maxLengthValidator","pattern","regex","validators","maxLength","isPresent","toObservable","obs","mergeErrors","arrayOfErrors","errors","executeValidators","validator","normalizeValidators","validate","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","AbstractControlDirective","_onDestroyCallbacks","valid","enabled","pristine","dirty","untouched","statusChanges","valueChanges","_composedValidatorFn","_composedAsyncValidatorFn","errorCode","path","getError","ControlContainer","ɵControlContainer_BaseFactory","NgControl","_parent","valueAccessor","AbstractControlStatus","cd","NgControlStatus","is","NgControlStatusGroup","controlPath","setUpControl","setUpValidators","newValue","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_registerOnDestroy","_unregisterOnChange","setUpModelChangePipeline","registerOnTouched","_pendingTouched","markAsTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","cleanUpControl","cleanUpValidators","_invokeOnDestroyCallbacks","_registerOnCollectionChange","registerOnValidatorChange","handleOnValidatorChange","setValidators","asyncValidators","asyncValidator","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","setValue","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","syncPendingControls","form","_syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","getPrototypeOf","removeListItem","VALID","INVALID","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","coerceToValidator","pickAsyncValidators","coerceToAsyncValidator","AbstractControl","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","validatorFn","asyncValidatorFn","_updateOn","newValidator","onlySelf","_forEachChild","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","disable","_updateValue","_updateAncestors","changeFn","enable","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","ctrl","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","delimiter","controlToFind","FormGroup","controls","FormArray","at","_find","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","formState","FormControl","_applyFormState","_setUpdateStrategy","_initObservables","emitViewToModelChange","condition","cb","_isBoxedValue","_setUpControls","setParent","registerControl","controlName","_checkAllValuesPresent","_throwIfControlMissing","patchValue","_reduceChildren","getRawValue","subtreeUpdated","updated","child","_reduceValue","initValue","_registerControl","formDirectiveProvider","NgForm","resolvedPromise","ɵ0","submitted","_directives","ngSubmit","_findContainer","removeControl","group","resetForm","onSubmit","onReset","formControlBinding","NgModel","resolvedPromise$1","ɵ0$1","_registered","_setValidators","_setAsyncValidators","_checkForErrors","_setUpControl","_updateDisabled","formDirective","_isStandalone","_setUpStandalone","addControl","_checkParentType","_checkName","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RadioControlRegistryModule","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding$1","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","_ngModelWarningSentOnce","formDirectiveProvider$1","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","oldCtrl","newCtrl","cleanUpFormContainer","controlNameBinding","FormControlName","_added","updateModel","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString","_optionMap","_idCounter","_compareWith","_getOptionId","valueString","_getOptionValue","_extractId","compareWith","NgSelectOption","_select","_registerOption","_setElementValue","ngValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString$1","optionSelectedStateSetter","ids","opt","_setSelected","selectedOptions","_extractId$1","ɵNgSelectMultipleOption","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","ɵCheckboxRequiredValidator_BaseFactory","MAX_LENGTH_VALIDATOR","MaxLengthValidator","_validator","_createValidator","maxlength","ɵInternalFormsSharedModule","FormsModule","ReactiveFormsModule","warnOnNgModelWithFormControl","isAbstractControlOptions","FormBuilder","controlsConfig","_reduceControls","_createControl","controlConfig","audit","durationSelector","hasValue","throttled","innerSubscription","innerSubscribe","clearThrottle","auditTime","timer","ArgumentOutOfRangeError","ArgumentOutOfRangeErrorImpl","counter","extendStyles","toggleNativeDragInteractions","userSelect","touchAction","webkitUserDrag","webkitTapHighlightColor","msUserSelect","webkitUserSelect","MozUserSelect","toggleVisibility","parseCssTimeUnitsToMs","multiplier","parseCssPropertyValue","getPropertyValue","part","getMutableClientRect","clientRect","isInsideClientRect","adjustClientRect","isPointerNearClientRect","threshold","pointerX","pointerY","xThreshold","yThreshold","scrollPosition","getViewportScrollPosition","cachedPosition","newTop","newLeft","scrolledParentNode","viewportScrollPosition","topDifference","leftDifference","node","deepCloneNode","clone","cloneNode","descendantsWithId","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","getContext","drawImage","passiveEventListenerOptions","passive","activeEventListenerOptions","_dragDropRegistry","_passiveTransform","_activeTransform","_moveEvents","_pointerMoveSubscription","Subscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_handles","_disabledHandles","_direction","dragStartDelay","beforeStarted","started","released","ended","entered","exited","dropped","moved","_pointerDown","targetHandle","handle","_initializeDragSequence","_rootElement","_pointerMove","pointerPosition","_getPointerPositionOnPage","_hasStartedDragging","_previewRect","_preview","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_dropContainer","_updateActiveDropContainer","activeTransform","_pickupPositionOnPage","_applyRootElementTransform","SVGElement","appliedTransform","observers","distance","_getDragDistance","_pointerDirectionDelta","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","_endDragSequence","isReceiving","_startDragSequence","_pointerUp","withRootElement","withParent","parentDragRef","_parentPositions","registerDragItem","_toggleNativeDragInteractions","_placeholder","getPlaceholderElement","getRootElement","handles","disabledHandles","_previewTemplate","_placeholderTemplate","rootElement","_removeRootElementListeners","_initialTransform","_ownerSVGElement","ownerSVGElement","boundaryElement","_containInsideBoundaryOnResize","_parentDragRef","removeNode","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeSubscriptions","_previewRef","_placeholderRef","stopDragging","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","isTouchEvent","_lastTouchEventTime","dropContainer","preview","_createPreviewElement","placeholder","_createPlaceholderElement","anchor","_getShadowRoot","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","getPreviewInsertionPoint","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","isSyntheticEvent","draggable","pointerMove","pointerUp","scrollEvent","_updateOnScroll","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","isPointerOverContainer","_isOverContainer","previousContainer","drop","rawX","rawY","newContainer","_getSiblingContainerFromPosition","exit","sortingDisabled","_startScrollingIfNecessary","_sortItem","getTransform","previewConfig","previewClass","rootRect","matchElementSize","pointerEvents","margin","placeholderRect","transitionedProperties","property","propertyIndex","rawDurations","rawDelays","getTransformTransitionDurationInMs","propertyName","timeout","placeholderConfig","placeholderTemplate","elementRect","handleElement","referenceRect","targetTouches","_getViewportScrollPosition","pageX","pageY","touches","changedTouches","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","inverse","dropContainerLock","lockAxis","constrainPosition","pickupX","pickupY","boundaryRect","previewRect","minY","maxY","clamp","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","setFreeDragPosition","touch","mouse","scrollDifference","handleScroll","_cachedShadowRoot","wrapper","sourceRect","moveItemInArray","fromIndex","toIndex","clamp$1","to","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","sorted","_isDragging","_itemPositions","_previousSwap","drag","overlaps","_draggables","_siblings","_orientation","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","isNumeric","interval","animationFrame","_scrollNode","scrollStep","incrementVerticalScroll","incrementHorizontalScroll","withScrollableParents","registerDropContainer","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","newIndex","_getItemIndexFromPointerPosition","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","reference","_cacheItemPositions","_cacheParentPositions","_reset","previousItems","_withDropContainer","every","_cacheItems","_scrollableElements","currentItem","pointerDelta","_clientRect","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","isDraggedItem","elementToOffset","scrollNode","verticalScrollDirection","horizontalScrollDirection","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","getElementScrollDirections","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","elementToMeasure","getVisibleElement","_stopReceiving","immediateSibling","itemPositions","lastItemRect","firstItemRect","_canReceive","elementFromPoint","activeSiblings","_sortFromLastPointerPosition","draggedItems","_startReceiving","amount","scrollBy","activeCapturingEventOptions","capture","DragDropRegistry","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","_preventDefaultWhileDragging","_persistentTouchmoveListener","startsWith","_clearGlobalListeners","DEFAULT_CONFIG","DragDrop","CDK_DRAG_PARENT","CDK_DROP_LIST_GROUP","CDK_DRAG_CONFIG","_uniqueIdCounter","CDK_DROP_LIST","CdkDropList","dragDrop","_scrollDispatcher","_group","_unsortedItems","_dropListRef","createDropList","_assignDefaults","_setupInputSyncSubscription","_handleEvents","_dropLists","_items","_syncItemsWithRef","_dragRef","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","startWith","withDirection","_scrollableParentsResolved","scrollableParents","getAncestorScrollContainers","scrollable","getElementRef","withOrientation","draggingDisabled","listAutoScrollDisabled","listOrientation","withItems","getSortedItems","CDK_DRAG_HANDLE","CDK_DRAG_PLACEHOLDER","CDK_DRAG_PREVIEW","CdkDrag","_selfHandle","_parentDrag","movedEvent","createDrag","addItem","_syncInputs","getFreeDragPosition","_updateRootElement","childHandleElements","rootElementSelector","withHandles","_stateChanges","handleInstance","dragRef","disableHandle","enableHandle","freeDragPosition","rootSelectorChange","positionChange","firstChange","removeItem","getClosestMatchingAncestor","boundary","withBoundaryElement","_getBoundaryElement","withPlaceholderTemplate","withPreviewTemplate","currentElement","DragDropModule","project","concurrent","POSITIVE_INFINITY","ii","MergeMapOperator","MergeMapSubscriber","hasCompleted","buffer","_tryNext","_innerSub","ish","innerSubscriber","_next","flatMap","processRelativeTime","withoutSuffix","ToastContainerComponent_ng_template_0_div_0_ng_template_2_Template","ToastContainerComponent_ng_template_0_div_0_div_3_Template","toast_r10","ToastContainerComponent_ng_template_0_div_0_Template","ToastContainerComponent_ng_template_0_Template","ToastContainerComponent_ng_container_4_Template","ToastContainerComponent_ng_container_6_Template","ToastContainerComponent_ng_container_8_Template","ToastContainerComponent_ng_container_10_Template","ToastContainerComponent_ng_container_12_Template","ToastContainerComponent_ng_container_14_Template","BasicToastContentComponent_div_3_Template","toast","caption","Toast","closeFunction","_onClose","_closeFunction","_setTimeout","_clearTimeout","_timeoutId","nestedTransition","shrinkInTransition","shrinkOutTransition","progressTransition","ToastContainerComponent","tl","tc","tr","bl","bc","br","collection","_getCollection","preventDuplicates","_isDuplicate","ToastContentDirective","ToastContainerService","rendererFactory","_factoryResolver","_componentRef","_attach","_containerElement","_detach","_destroyContainer","containerElement","TOAST_NOTIFICATIONS_CONFIG","BasicToastContentComponent","Toaster","_containerService","componentConfig","ToastNotificationsModule","parentModule","CDK_ACCORDION","CdkAccordion","_openCloseAllActions","_multi","CdkAccordionItem","accordion","_expansionDispatcher","_openCloseAllSubscription","destroyed","expandedChange","_expanded","_removeUniqueSelectionListener","accordionId","expanded","_subscribeToOpenCloseAllActions","notify","CdkAccordionModule","MatExpansionPanel_ng_template_5_Template","MatExpansionPanelHeader_span_4_Template","_getExpandedState","MAT_ACCORDION","EXPANSION_PANEL_ANIMATION_TIMING","matExpansionAnimations","indicatorRotate","bodyExpansion","visibility","MatExpansionPanelContent","_template","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","MatExpansionPanel","_uniqueSelectionDispatcher","_hideToggle","afterExpand","afterCollapse","_inputChanges","_headerId","_bodyAnimationDone","fromState","hideToggle","_togglePosition","togglePosition","displayMode","_lazyContent","_body","bodyElement","_hasSpacing","MatExpansionPanelHeader","_parentChangeSubscription","accordionHideToggleChange","expandedHeight","collapsedHeight","toggle","isExpanded","_isExpanded","_toggle","_handleHeaderKeydown","_handleHeaderFocus","_keydown","_getPanelId","_getHeaderHeight","_getTogglePosition","_showToggle","MatExpansionPanelTitle","MatAccordion","_ownHeaders","show","_headers","notifyOnChanges","withHomeAndEnd","updateActiveItem","ɵMatAccordion_BaseFactory","MatExpansionModule","nextHandle","RESOLVED","activeHandles","findAndClearHandle","Immediate","scheduled","asapScheduler","asap","postUrunKodunaGoreArama","getUrunKriterleriyleUrunKodGetir","TxtAracTipi","TxtRFT","TxtMevsim","TxtEbatAdi","TxtMarka","getAramaKriterleriListesi","getTopOnListesi","PerformansLastikAramaService","Subscriber","destinationOrNext","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","SafeSubscriber","_error","_complete","_parentOrParents","_parentSubscriber","observerOrNext","useDeprecatedSynchronousErrorHandling","__tryOrSetError","__tryOrUnsub","wrappedComplete","coerceBooleanProperty","coerceNumberProperty","fallbackValue","_isNumberValue","coerceArray","coerceCssPixelValue","coerceElement","elementOrRef","coerceStringArray","sourceValues","sourceValue","trimmedString","canReportError","loadConfig","toPromise","ConfigService","configFactory","MatTreeModule","MatTreeFlattener","transformFunction","getLevel","isExpandable","getChildren","resultNodes","parentMap","flatNode","childrenNodes","_flattenChildren","childParentMap","_flattenNode","structuredData","treeControl","currentExpand","MatTreeFlatDataSource","_treeControl","_treeFlattener","_flattenedData","_expandedData","flattenNodes","dataNodes","collectionViewer","expansionModel","expandFlattenedNodes","unused","createError","groupBy","elementSelector","subjectSelector","groups","attemptedToUnsubscribe","groupedObservable","removeGroup","groupSubject","refCountSubscription","exhaustMap","hasSubscription","tryNext","DEFAULT_EFFECT_CONFIG","useEffectsErrorHandler","CREATE_EFFECT_METADATA_KEY","getCreateEffectMetadata","getOwnPropertyNames","getSourceForInstance","METADATA_KEY","Effect","addEffectMetadataEntry","getEffectDecoratorMetadata","getEffectMetadataEntries","hasMetadataEntries","sourceProto","defaultEffectsErrorHandler","observable$","errorHandler","retryAttemptLeft","handleError","Actions","operator","ofType","allowedTypes","typeOrActionCreator","isOnInitEffects","isFunction","functionName","_ROOT_EFFECTS_GUARD","USER_PROVIDED_EFFECTS","_ROOT_EFFECTS","ROOT_EFFECTS","_FEATURE_EFFECTS","FEATURE_EFFECTS","EFFECTS_ERROR_HANDLER","EffectSources","effectsErrorHandler","effectSourceInstance","source$","effectsInstance","effect$","sourceInstance","mergedEffects$","globalErrorHandler","sourceName","observables$","effectAction$","effect","mergeEffects","ngrxOnRunEffects","reporter","isAction","isMethod","reportInvalidActions","init$","ngrxOnInitEffects","ngrxOnIdentifyEffects","EffectsRunner","effectSources","effectsSubscription","toActions","ROOT_EFFECTS_INIT","EffectsRootModule","runner","rootEffects","storeRootModule","storeFeatureModule","guard","addEffects","EffectsFeatureModule","effectSourceGroups","EffectsModule","featureEffects","createEffects","_provideForRootGuard","effectGroups","userProvidedEffectGroups","mergedEffects","effectGroup","userProvidedEffectGroup","effects","createEffectInstances","ObjectUnsubscribedError","ObjectUnsubscribedErrorImpl","MAT_CHIP_REMOVE","MAT_CHIP_AVATAR","MAT_CHIP_TRAILING_ICON","MatChipBase","_MatChipMixinBase","MatChip","globalRippleOptions","animationMode","_hasFocus","chipListSelectable","_chipListMultiple","_chipListDisabled","_selectable","_removable","_onFocus","_onBlur","selectionChange","_addHostClassName","_chipRippleTarget","_chipRipple","setupTriggerEvents","rippleConfig","_animationsDisabled","coercedValue","_dispatchSelectionChange","basicChipAttrName","tagName","chip","_removeTriggerEvents","isUserInput","removable","toggleSelected","avatar","trailingIcon","removeIcon","_handleClick","_blur","ariaSelected","MatChipRemove","_parentChip","parentChip","MAT_CHIPS_DEFAULT_OPTIONS","MatChipListBase","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","ngControl","_MatChipListMixinBase","MatChipListChange","MatChipList","controlType","_lastDestroyedChipIndex","_uid","_tabIndex","_userTabIndex","o1","o2","ariaOrientation","valueChange","multiple","_selectionModel","empty","_syncChipsState","_initializeSelection","_chipInput","stateChanges","_hasFocusedChip","chips","withVerticalOrientation","withHorizontalOrientation","_allowFocusEscape","_resetChips","_updateTabIndex","_updateFocusForDestroyedChips","updateErrorState","_dropSubscriptions","inputElement","_ariaDescribedby","_setSelectionByValue","_originatesFromChip","_focusInput","_isInputEmpty","setLastItemActive","newChipIndex","_clearSelection","_selectValue","_sortValues","correspondingChip","selectViaInteraction","valueToEmit","_markAsTouched","_listenToChipsFocus","_listenToChipsSelection","_listenToChipsRemoved","_chipFocusSubscription","_chipBlurSubscription","_chipSelectionSubscription","_chipRemoveSubscription","chipSelectionChanges","_propagateChanges","chipFocusChanges","chipIndex","_isValidIndex","chipBlurChanges","chipRemoveChanges","errorState","errorStateMatcher","nextUniqueId$1","MatChipInput","_addOnBlur","separatorKeyCodes","chipEnd","_chipList","registerInput","_emitChipEnd","addOnBlur","_isSeparatorKey","_focus","_onInput","chipList","MatChipsModule","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$URIError","$Function","Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","hasProto","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","encodeURI","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","environment","firebase","projectId","appId","storageBucket","apiKey","authDomain","messagingSenderId","measurementId","production","isMockEnabled","authTokenKey","eras","since","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","takeLast","TakeLastOperator","total","TakeLastSubscriber","ring","idx","base64_url_decode","InvalidTokenError","pos","plural","translate","_unsupportedIterableToArray","minLen","AuthActionTypes","Login","Logout","UserRequested","isInteropObservable","scheduleObservable","isPromise","schedulePromise","isArrayLike","scheduleArray","isIterable","scheduleIterable","subscribeTo","foo","$Object","monthsShortDot","mapTo","MapToOperator","MapToSubscriber","punycode","Url","protocol","slashes","auth","port","pathname","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","https","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","rest","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","qm","arrayFormat","addQueryPrefix","relative","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","asyncScheduler","async","implementation","animationBuilder","initAnimate","player","play","ngOnDestroy","ContentAnimateDirective","enuUserType","_arrayWithHoles","MAT_SORT_DEFAULT_OPTIONS","MatSortBase","_MatSortMixinBase","MatSort","sortables","_disableClear","sortable","getNextSortDirection","disableClear","sortDirectionCycle","sortOrder","getSortDirectionCycle","nextDirectionIndex","_markInitialized","MatSortHeaderIntl","sortButtonLabel","MAT_SORT_HEADER_INTL_PROVIDER","parentIntl","MatSortModule","suffixes","70","80","20","50","100","10","30","60","90","translator","words","correctGrammaticalCase","wordKey","word","PortletModule","WidgetModule","PartialsModule","ConnectableObservable","subjectFactory","_refCount","_isComplete","getSubject","subject","_subject","connection","_connection","ConnectableSubscriber","connectableObservableDescriptor","connectableProto","_subscribe","connectable","DomHandler","childNodes","attributeName","attributes","elementDimensions","getHiddenElementDimensions","targetHeight","targetOffset","viewport","getViewport","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","windowScrollTop","getWindowScrollTop","windowScrollLeft","getWindowScrollLeft","elementHeight","elementWidth","dimensions","borderTopValue","paddingTopValue","containerRect","itemHeight","getOuterHeight","requestAnimationFrame","gap","fading","doc","win","getElementsByTagName","replacementElement","ua","isElement","calculatedScrollbarWidth","scrollDiv","calculatedScrollbarHeight","scrollbarHeight","methodName","getSelection","removeAllRanges","rangeCount","getRangeAt","getClientRects","browser","matched","resolveUserAgent","version","focusableElements","visibleFocusableElements","focusableElement","zindex","__decorate$2","PrimeTemplate","SharedModule","obj2","resolveFieldData","equalsByValue","arrA","arrB","dateA","dateB","regexpA","regexpB","fields","selectItems","sourceArr","injected","findIndexInList","filterValue","filterMatchMode","filterLocale","filteredItems","filterText","removeAccents","fieldValue","FilterUtils","stringValue","Tooltip","tooltipPosition","tooltipEvent","appendTo","tooltipZIndex","deactivate","mouseEnterListener","mouseLeaveListener","clickListener","focusListener","onFocus","blurListener","showTimeout","activate","clearHideTimeout","showDelay","life","hideTimeout","hide","clearShowTimeout","hideDelay","_text","updateText","align","tooltipArrow","tooltipText","positionStyle","fadeIn","bindDocumentResizeListener","alignTop","isOutOfBounds","alignBottom","alignRight","alignLeft","preAlign","hostOffset","getHostOffset","getOuterWidth","defaultClassName","tooltipStyleClass","targetTop","targetLeft","resizeListener","onWindowResize","unbindDocumentResizeListener","clearTimeouts","unbindEvents","TooltipModule","DropdownItem_span_1_Template","DropdownItem_ng_container_2_Template","a3","_c5","_c6","Dropdown_span_6_ng_container_1_Template","Dropdown_span_6_ng_container_2_Template","_c7","Dropdown_span_6_Template","selectedItemTemplate","selectedOption","Dropdown_span_7_Template","Dropdown_input_8_Template","onEditableInputClick","onEditableInputChange","onEditableInputFocus","onInputBlur","overlayVisible","Dropdown_i_9_Template","_r16","Dropdown_div_12_div_1_Template","onFilter","filterPlaceholder","ariaFilterLabel","Dropdown_div_12_ng_container_4_ng_template_1_span_1_Template","optgroup_r30","Dropdown_div_12_ng_container_4_ng_template_1_ng_container_2_Template","Dropdown_div_12_ng_container_4_ng_template_1_ng_container_3_Template","_c9","Dropdown_div_12_ng_container_4_ng_template_1_Template","_r20","ctx_r29","groupTemplate","Dropdown_div_12_ng_container_4_Template","optionsToDisplay","Dropdown_div_12_ng_container_5_ng_container_1_Template","Dropdown_div_12_ng_container_5_Template","ctx_r19","Dropdown_div_12_ng_template_6_ng_container_0_ng_template_1_Template","_r45","onItemClick","option_r42","selectedOption_r37","ctx_r41","itemTemplate","Dropdown_div_12_ng_template_6_ng_container_0_Template","options_r36","Dropdown_div_12_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_2_Template","_r59","option_r51","ctx_r50","Dropdown_div_12_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_Template","_r62","scrollToSelectedVirtualScrollElement","ctx_r48","itemSize","Dropdown_div_12_ng_template_6_ng_template_1_Template","ctx_r40","virtualScroll","Dropdown_div_12_ng_template_6_Template","_r39","ctx_r21","Dropdown_div_12_li_8_Template","ctx_r22","emptyFilterMessage","_c10","showTransitionParams","hideTransitionParams","_c11","Dropdown_div_12_Template","_r65","onOverlayAnimationStart","panelStyleClass","showTransitionOptions","hideTransitionOptions","panelStyle","_c12","a4","DROPDOWN_VALUE_ACCESSOR","DropdownItem","originalEvent","visible","onOptionClick","Dropdown","filterBy","resetFilterOnHide","dropdownIcon","autoDisplayFirst","autoZIndex","baseZIndex","tooltip","tooltipPositionStyle","autofocusFilter","onShow","onHide","onModelChange","onModelTouched","viewPortOffsetTop","templates","getType","updateSelectedOption","_options","optionLabel","generateSelectItems","optionsChanged","updateFilledState","activateFilter","updateEditableLabel","editableInputViewChild","accessibleViewChild","filled","viewPort","measureScrollOffset","updateVirtualScrollSelectedIndex","alignOverlay","selectedOptionUpdated","itemsWrapper","getRenderedRange","virtualScrollSelectedIndex","scrollToIndex","findSingle","scrollInView","resetFilter","filterViewChild","findOption","isInputClick","hasClass","isSameNode","bindDocumentClickListener","appendOverlay","selectedListItem","preventModelTouched","onOverlayHide","virtualAutoScrolled","scrollToOffset","resetOffset","findOptionIndex","containerViewChild","absolutePosition","relativePosition","prevEnabledOption","nextEnabledOption","altKey","selectedItemIndex","findOptionGroupIndex","nextItemIndex","itemIndex","groupIndex","findNextEnabledOption","prevItemIndex","prevGroup","findPrevEnabledOption","searchTimeout","newOption","char","previousSearchChar","currentSearchChar","searchValue","searchIndex","searchOptionWithinGroup","searchOption","searchOptionInRange","dataKey","inGroup","searchFields","filteredGroups","optgroup","filteredSubOptions","applyFocus","documentClickListener","isOutsideClicked","unbindDocumentClickListener","documentResizeListener","isAndroid","restoreOverlayAppend","styleClass","selectId","autofocus","showClear","onMouseclick","onInputFocus","DropdownModule","PaginatorModule","TreeTableModule","emptyScheduled","txtIlAdi","IlSearchPipe","ReferenceError","VERSION","MatOption_mat_pseudo_checkbox_0_Template","MatOption_span_3_Template","AnimationCurves","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","AnimationDurations","COMPLEX","ENTERING","EXITING","VERSION$1","MATERIAL_SANITY_CHECKS","MatCommonModule","highContrastModeDetector","sanityChecks","_hasDoneGlobalChecks","_applyBodyHighContrastModeCssClasses","_sanityChecks","_checkDoctypeIsDefined","_checkThemeIsPresent","_checkCdkVersionMatch","_isTestEnv","__karma__","jasmine","_checksAreEnabled","doctype","testElement","full","mixinDisabled","mixinColor","defaultColor","_color","colorPalette","mixinDisableRipple","_disableRipple","mixinTabIndex","defaultTabIndex","Mixin","mixinErrorState","oldState","isErrorState","mixinInitialized","_pendingSubscribers","_notifySubscriber","SUPPORTS_INTL_API","MAT_DATE_LOCALE","_localeChanges","localeChanges","isDateInstance","firstValid","secondValid","compareDate","MAT_DATE_FORMATS","DEFAULT_MONTH_NAMES","DEFAULT_DATE_NAMES","DEFAULT_DAY_OF_WEEK_NAMES","ISO_8601_REGEX","valueFunction","valuesArray","NativeDateAdapter","matDateLocale","useUtcForDisplay","TRIDENT","_clampDate","EDGE","dtf","_stripDirectionalityCharacters","_format","_createDateWithOverflow","displayFormat","toDateString","addCalendarMonths","_2digit","setHours","setUTCFullYear","setUTCHours","NativeDateModule","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","MatNativeDateModule","ErrorStateMatcher","MatLine","setLines","lines","setClass","isAdd","MatLineModule","fadeOutRipple","defaultRippleAnimationConfig","exitDuration","passiveEventOptions","pointerDownEvents","pointerUpEvents","_target","elementOrElementRef","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","_containerRect","animationConfig","radius","distanceToFurthestCorner","offsetX","offsetY","ripple","transitionDuration","enforceStyleRecalculation","rippleRef","persistent","_mostRecentTransientRipple","_runTimeoutOutsideZone","isMostRecentTransientRipple","fadeOut","wasActive","rippleEl","_triggerElement","_registerEvents","_onMousedown","_onTouchStart","_onPointerUp","isFakeMousedown","_lastTouchStartEvent","rippleDisabled","fadeInRipple","clientX","clientY","terminateOnPointerUp","eventTypes","distX","distY","sqrt","MAT_RIPPLE_GLOBAL_OPTIONS","MatRipple","globalOptions","_globalOptions","_rippleRenderer","fadeOutAllNonPersistent","_setupTriggerEventsIfEnabled","_trigger","fadeOutAll","configOrX","unbounded","MatRippleModule","MatPseudoCheckbox","MatPseudoCheckboxModule","MAT_OPTION_PARENT_COMPONENT","_MatOptgroupMixinBase","_uniqueOptgroupIdCounter","_MatOptgroupBase","_labelId","_inert","MAT_OPTGROUP","_MatOptionBase","_active","_mostRecentViewValue","_emitSelectionChangeEvent","_origin","viewValue","MatOption","_getTabIndex","_getAriaSelected","_countGroupLabelsBeforeOption","optionIndex","optionsArray","groupCounter","_getOptionScrollPosition","optionOffset","optionHeight","currentScrollPosition","panelHeight","MatOptionModule","sym","symObj","syms","descriptor","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","DELETE","ZERO","NINE","A","Z","COMMA","hasModifierKey","modifiers","modifier","ctrlKey","metaKey","FlatTreeControl","dataNode","_trackByValue","collapseDescendants","expandDescendants","toBeProcessed","getDescendants","CDK_TREE_NODE_OUTLET_NODE","CdkTreeNodeOutlet","_node","CdkTreeNodeOutletContext","CdkTreeNodeDef","CdkTree","_levels","_nodeOutlet","_dataSubscription","defaultNodeDefs","_nodeDefs","_defaultNodeDef","renderNodeChanges","dataDiffer","parentData","insertNode","nodeData","_getNodeDef","CdkTreeNode","mostRecentTreeNode","_tree","_dataChanges","_role","_setRoleFromData","_isAriaExpanded","_parentNodeAriaLevel","nodeElement","getParentNodeAriaLevel","_setExpanded","CdkNestedTreeNode","updateChildrenNodes","nodeOutlet","_clear","_getNodeOutlet","_children","cssUnitPattern","CdkTreeNodePadding","_treeNode","indentUnits","_indent","_setPadding","_level","_setLevelInput","indent","_setIndentInput","nodeLevel","forceChange","_paddingIndent","_currentPadding","paddingProp","resetProp","units","CdkTreeNodeToggle","_recursive","recursive","toggleDescendants","CdkTreeModule","isObject","MutationObserverFactory","MutationObserver","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","_observeElement","_unobserveElement","stream","mutations","characterData","childList","subtree","CdkObserveContent","_contentObserver","_currentSubscription","_debounce","debounce","ObserversModule","concatAll","mergeAll","AnimationFrameAction_1","animationFrameScheduler","AnimationFrameScheduler","AnimationFrameAction","relativeTimeWithPlural","forms","_isScalar","sink","nextOrObserver","toSubscriber","_trySubscribe","promiseCtor","getPromiseCtor","operations","pluralForm","plurals","pluralize","SearchPipeModule","$1","$2","Scheduler","SchedulerAction","AsyncScheduler","delegate","deepCopy","OPTION_IS_DEEP","resources","FullCalendarComponent","optionSnapshot","deepChangeDetection","optionVal","newOptions","newProcessedOptions","pauseRendering","resumeRendering","FullCalendarModule","isUpper","TakeOperator","TakeSubscriber","CatchOperator","caught","CatchSubscriber","err2","_unsubscribeAndRecycle","default","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","pow","atan2","PI","cos","sin","conversion","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","alpha","setValues","lightness","whiteness","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","contrast","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","mix","spaces","maxes","getValues","Color","isNullOrUndef","valueOrDefault","valueAtIndexOrDefault","each","arrayEquals","_merger","_mergerIf","mergeIf","merger","extend","inherits","__super__","_deprecated","S","callCallback","getValueOrDefault","getValueAtIndexOrDefault","C","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","D","T","I","F","O","clearRect","roundedRect","moveTo","arc","closePath","drawPoint","save","restore","beginPath","lineTo","SQRT1_2","stroke","_isPointInArea","clipArea","clip","unclipArea","steppedLine","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","R","drawRoundedRectangle","z","_set","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","N","B","E","toLineHeight","toPadding","_parseFont","fontSize","family","fontFamily","lineHeight","fontStyle","weight","cacheable","W","_factorize","log10","LOG10E","V","H","q","U","Y","easing","canvas","math","rtl","getRtlAdapter","setWidth","textAlign","xPlus","leftForLtr","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","X","pivot","_view","_start","transition","K","chart","currentStep","numSteps","onAnimationProgress","onAnimationComplete","$","onProgress","onComplete","J","animations","addAnimation","animating","cancelAnimation","requestAnimFrame","startDigest","advance","Q","tt","et","_chartjs","nt","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","getDataset","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","_update","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","dataset","addElementAndReset","updateElement","buildOrUpdateElements","isExtensible","resyncElements","_configure","_cachedDataOpts","draw","_resolveDatasetElementOptions","_resolveDataElementOptions","custom","datasetIndex","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","it","rt","startAngle","endAngle","pixelMargin","outerRadius","innerRadius","borderAlign","st","inLabelRange","hoverRadius","inRange","getAngleFromPoint","angle","getCenterPoint","getArea","fullCircles","circumference","fillStyle","strokeStyle","lineWidth","lineJoin","ot","lt","ut","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","dt","spanGaps","_loop","previousItem","lineCap","setLineDash","lineDashOffset","ht","ct","ft","hitRadius","pointStyle","gt","inXRange","inYRange","rotation","pt","mt","vt","bt","yt","rectangle","borderSkipped","horizontal","xt","outer","inner","fillRect","kt","Mt","St","Ct","Arc","Line","Point","Rectangle","Pt","At","gridLines","offsetGridLines","bar","categoryPercentage","barPercentage","Tt","barThickness","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","getBasePixel","calculateBarValuePixels","calculateBarIndexPixels","_getStacks","_getMatchingVisibleMetas","stacked","getStackCount","getStackIndex","getPixelForValue","pixels","_startPixel","_endPixel","stackCount","scale","_parseValue","ratio","_length","getTicks","getPixelForTick","Dt","chartArea","It","Ft","tooltips","xLabel","yLabel","Ot","getPixelForDecimal","Lt","Rt","zt","Nt","animateRotate","animateScale","legendCallback","outerHTML","legend","generateLabels","controller","cutoutPercentage","Bt","getRingIndex","isDatasetVisible","_getRingWeight","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","calculateCircumference","axis","horizontalBar","Et","Wt","Vt","Ht","jt","ticks","qt","Ut","Yt","_showLine","showLine","lineTension","_scale","updateBezierControlPoints","calculatePointY","stepped","getRightValue","_getSortedVisibleDatasetMetas","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","previous","Gt","angleLines","circular","pointLabels","beginAtZero","Xt","_starts","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","getDistanceFromCenterForValue","doughnut","Kt","Zt","$t","getPointPositionForValue","scatter","Jt","bubble","polarArea","pie","radar","Qt","native","getRelativePosition","te","ee","ne","ie","intersect","re","modes","single","nearest","oe","se","where","le","ue","de","box","maxPadding","outerWidth","outerHeight","he","ce","fullWidth","fe","layout","ge","pe","addBox","boxes","_layers","removeBox","configure","leftAndTop","rightAndBottom","vertical","vBoxMaxWidth","hBoxMaxHeight","me","ve","be","xe","ke","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","we","Me","Se","Ce","Pe","Ae","Ie","disableCSSInjection","_enabled","_ensureLoaded","containsStyles","acquireContext","getElementById","initial","releaseContext","proxies","resizer","maintainAspectRatio","renderProxy","animationName","reflow","De","Te","removeEvent","Oe","Le","_plugins","_cacheId","register","unregister","descriptors","plugin","$plugins","_invalidate","Re","constructors","registerScaleType","getScaleConstructor","getScaleDefaults","updateScaleDefaults","addScalesToLayout","ze","Ne","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","afterFooter","Be","average","distanceBetweenPoints","Ee","We","Ve","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","He","je","Ye","_lastActive","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","caretX","caretY","_eventPosition","getLabelForIndex","itemSort","labelColors","labelTextColors","dataPoints","measureText","font","fontString","drawCaret","getCaretPosition","x1","y1","x2","y2","x3","y3","drawTitle","textBaseline","fillText","drawBody","strokeRect","drawFooter","drawBackground","quadraticCurveTo","globalAlpha","handleEvent","getElementsAtEventForMode","positioners","Ge","Xe","Ke","Ze","ensureScalesHaveIDs","buildOrUpdateScales","$e","Je","Qe","onHover","animationDuration","responsive","responsiveAnimationDuration","tn","_bufferedRender","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","getMaximumWidth","getMaximumHeight","onResize","dtype","dposition","isDefault","mergeTicksOptions","buildOrUpdateControllers","destroyDatasetMeta","resetElements","lazy","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","drawDatasets","_drawTooltip","_getSortedDatasetMetas","drawDataset","easingValue","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","toBase64Image","toDataURL","_chartInstance","eventHandler","updateHoverStyle","nn","an","Controller","types","configMerge","scaleMerge","endOf","_create","override","rn","_date","formatters","toExponential","logarithmic","sn","ln","un","dn","hn","drawTicks","tickMarkLength","gn","pn","fontColor","mn","minor","major","vn","bn","drawBorder","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","xn","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","sampleSize","margins","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","minSize","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","_isVisible","labelRotation","_getLabelSizes","widest","highest","toDegrees","toRadians","handleMargins","isFullWidth","gc","cn","_getScaleLabel","getValueForPixel","getDecimalForPixel","getBaseValue","maxTicksLimit","_tickSize","_computeGridLineItems","_alignPixel","tx1","ty1","tx2","ty2","ticksLength","borderValue","_computeLabelItems","textOffset","_drawGrid","_drawLabels","_drawTitle","_draw","yn","_n","kn","minIndex","maxIndex","_startValue","_valueRange","Sn","Cn","handleTickRangeOptions","suggestedMin","suggestedMax","getTickLimit","stepSize","_computeTickLimit","handleDirectionalChanges","maxTicks","precision","fixedStepSize","niceNum","_decimalPlaces","almostWhole","almostEquals","ticksAsNumbers","_endValue","Pn","An","neg","relativePoints","Dn","Tn","NEGATIVE_INFINITY","Fn","On","Ln","Rn","zn","minNotZero","tickValues","_getFirstTickValue","_valueOffset","Bn","En","Wn","Vn","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","Hn","jn","qn","Un","Yn","Gn","Xn","drawingArea","_pointLabelSizes","getPointPosition","longestText","getIndexAngle","setReductions","setCenterPoint","getBasePosition","Zn","$n","Jn","Qn","MIN_SAFE_INTEGER","ti","ei","common","steps","quarter","ni","ai","ri","oi","lo","hi","si","_adapter","parser","li","di","adapters","displayFormats","_timestamps","getLabelCapacity","distribution","minUnit","unitStepSize","isoWeekday","bounds","_unit","_majorUnit","_offsets","factor","tooltipFormat","datetime","tickFormatFunction","getPixelForOffset","_getLabelSize","getLabelWidth","fi","category","radialLinear","gi","filler","propagate","pi","mi","vi","cx","cy","scaleBottom","scaleTop","scaleZero","bi","xi","yi","ki","wi","afterDatasetsUpdate","$filler","mapper","beforeDatasetsDraw","Mi","Si","Ci","Pi","usePointStyle","boxWidth","onLeave","lineDash","Ai","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","lineWidths","columnWidths","columnHeights","SQRT2","_getLegendItemAt","Di","Ti","beforeInit","afterEvent","Ii","Fi","Oi","titleBlock","Li","Ri","zi","Ni","Bi","helpers","_getParentNode","findNextWhere","findPreviousWhere","aliasPixel","currentDevicePixelRatio","EPSILON","deltaK","mK","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","srcElement","getConstraintWidth","getConstraintHeight","_calculatePadding","currentStyle","garbageCollect","numberOfLabelLines","CanvasGradient","CanvasPattern","_adapters","Animation","animationService","controllers","DatasetController","layouts","Scale","scaleService","Ticks","Ei","Chart","Legend","Title","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","_assertThisInitialized","self","registerVersion","_inherits","subClass","superClass","translateSingular","special","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","addNumericSeparator","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","isSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","toStr","inspect_","depth","seen","maxStringLength","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","isBoolean","isString","globalThis","isDate","ys","isPlainObject","protoTag","stringTag","remaining","trailer","lowbyte","12","13","lineJoiner","isArr","symMap","_toConsumableArray","arrayLikeToArray","iterableToArray","unsupportedIterableToArray","getIlListesi","getIlceListesi","lngIlKod","postHizmetNoktaTanimlama","postTeslimatNoktasiTanimlama","postHizmetNoktaRandevuSaatleriSorgulama","postDoluRandevular","postHizmetNoktaGuncelleme","postTeslimatNoktaGuncelleme","getBayiLokasyonListesi","RandevuBayiLokasyonList","distkodlar","distkodlarString","getHizmetOneriBayiListesi","getBayiLokasyonIletisimParametreleri","getBayiDepoListesi","bayiKonumListesi","txtKod","getLokasyonKullaniciListesi","telefonKontrol","telefon","telefonlar","tel","numara","arrayToStringTelefon","telefonArray","stringToArray","getTeslimatNoktasiListesi","postHizmetNoktaTelKayit","getTelefonSecenekler","postTelGetir","txtLokasyonKod","LokasyonService","debounceTime","dueTime","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","scan","accumulator","seed","hasSeed","ScanOperator","ScanSubscriber","_seed","UnsubscriptionError","UnsubscriptionErrorImpl","getSymbolIterator","toaster","authService","intercept","reqUrl","urlWithParams","httpRequest","referer","yeniIstek","setHeaders","Xreferer","jsonErrorProp","networkLogId","networkLogMesaj","hataMesaji","InterceptService","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsCombo","rsDigits","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","arrayAggregator","setter","iteratee","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","arrayProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","unmasked","getRawTag","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","basePickBy","baseSet","basePullAll","basePullAt","indexes","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","symbol","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","difference","differenceBy","differenceWith","findLastIndex","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","partition","sortBy","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","defer","resolver","memoized","Cache","overArgs","transforms","funcsLength","partial","partialRight","rearg","gte","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplicand","minuend","subtrahend","castArray","cond","conforms","baseConforms","properties","curry","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","setWith","shuffle","sortedUniq","sortedUniqBy","spread","tail","takeRight","takeRightWhile","takeWhile","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","radix","floating","temp","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","isEscaping","isEvaluating","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","MatPaginator_div_2_mat_form_field_3_mat_option_2_Template","pageSizeOption_r6","MatPaginator_div_2_mat_form_field_3_Template","_r8","_changePageSize","_formFieldAppearance","_intl","itemsPerPageLabel","_displayedPageSizeOptions","MatPaginator_div_2_div_4_Template","MatPaginator_div_2_Template","MatPaginator_button_6_Template","firstPage","firstPageLabel","_previousButtonsDisabled","MatPaginator_button_13_Template","lastPage","lastPageLabel","_nextButtonsDisabled","MatPaginatorIntl","nextPageLabel","previousPageLabel","getRangeLabel","MAT_PAGINATOR_INTL_PROVIDER","MAT_PAGINATOR_DEFAULT_OPTIONS","MatPaginatorMixinBase","_MatPaginatorMixinBase","_MatPaginatorBase","_pageIndex","_pageSizeOptions","_hidePageSize","_showFirstLastButtons","_intlChanges","pageSizeOptions","hidePageSize","showFirstLastButtons","_pageSize","_updateDisplayedPageSizeOptions","_initialized","hasNextPage","previousPageIndex","_emitPageEvent","hasPreviousPage","getNumberOfPages","maxPageIndex","MatPaginator","intl","formFieldAppearance","previousPage","nextPage","MatPaginatorModule","accesstoken","token_type","authorization","musteriKrediLimitleri","musteriKrediLimitleri$","filokullanicikodu","filokullanicikodu$","kullaniciyaBagliFiloListesi","kullaniciyaBagliFiloListesi$","getKullaniciAyarlari","txtFiloKod","postKullaniciAyarGuncelle","ayarlar","postKullaniciAyarlari","getKullaniciyaBagliFiloListesi","getMusteriKrediLimitleriGetir","txtMusteriKod","KullaniciAyarlariService","MatListBase","_MatListMixinBase","MatListItemBase","_MatListItemMixinBase","MAT_LIST","MAT_NAV_LIST","MatList","_getListType","MatListAvatarCssMatStyler","MatListIconCssMatStyler","MatListItem","navList","_isInteractiveList","_list","_lines","_avatar","_icon","_isRippleDisabled","MatListModule","getMatIconNameNotFoundError","iconName","getMatIconFailedToSanitizeUrlError","getMatIconFailedToSanitizeLiteralError","literal","SvgIconConfig","svgText","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIconInNamespace","addSvgIconLiteralInNamespace","namespace","_addSvgIconConfig","cleanLiteral","sanitize","HTML","addSvgIconSetInNamespace","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","safeUrl","RESOURCE_URL","cachedIcon","cloneSvg","_loadSvgIconFromConfig","svg","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","_setSvgAttributes","_toSvgElement","_svgElementFromString","div","viewBox","iconConfig","withCredentials","inProgressFetch","responseType","configNamespace","svgElement","MatIconBase","_MatIconMixinBase","MAT_ICON_LOCATION","_location","getPathname","funcIriAttributes","funcIriAttributeSelector","attr","funcIriPattern","MatIcon","_iconRegistry","ariaHidden","_inline","_currentIconFetch","inline","_svgIcon","_updateSvgIcon","_clearSvgElement","_fontSet","_cleanupFontValue","_updateFontIconClasses","_fontIcon","cachedElements","_elementsWithExternalReferences","newPath","_previousPath","_prependPathToReferences","svgIcon","styleTags","_cacheChildrenWithExternalReferences","layoutElement","childCount","_usingFontIcon","elem","fontSetClass","fontSet","classNameForFontAlias","getDefaultFontSetClass","_previousFontSetClass","fontIcon","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","_splitIconName","getNamedSvgIcon","_setSvgElement","MatIconModule","hostReportError","Scheduler_1","observableFactory","KTHeader","classic","desktop","mobile","HeaderDirective","JwtModule_1","JWT_OPTIONS","JwtHelperService","tokenGetter","b64DecodeUnicode","bs","fromCharCode","b64decode","decoded","urlBase64Decode","setUTCSeconds","exp","offsetSeconds","getTokenExpirationDate","authScheme","JwtInterceptor","standardPorts","headerName","whitelistedDomains","blacklistedRoutes","throwNoTokenError","skipWhenExpired","requestUrl","hostName","domain","requestedUrl","route","parsedRoute","getAuthScheme","tokenIsExpired","isWhitelistedDomain","isBlacklistedRoute","asyncToken","handleInterception","JwtModule","jwtOptionsProvider","cancelAnimationFrame","_slicedToArray","arrayWithHoles","_arr","_s","nonIterableRest","relativeTimeMr","hm","40","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","renderHScrollLayout","ScrollGrid","chunks","colGroups","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","TableCellTop","renderTopInner","forceDayTop","dayNumberId","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","singlePlacements","invisibleSegs","isForcedInvisible","singlePlacements_1","isVisible","DEFAULT_WEEK_NUM_FORMAT","TableCell","dayElRef","rootDataAttrs","showWeekNumber","weekElRef","weekClassNames","fgContentElRef","fgContent","moreMarginTop","bgContent","resliceSeg","spanStart","spanEnd","DayGridSegHierarchy","hiddenConsumes","forceHidden","segInputs","excludeHidden","touchingEntryId","placeholderEntry","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","maxContentHeight","eventInstanceHeights","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","hierarchy","unknownHeightSegs","eventHeight","allRects","rectsByEachCol","rects_3","groupRectsByEachCol","singleColPlacements","multiColPlacements","leftoverMargins","currentHeight","currentMarginTop","rects_1","absoluteTop","multiPlacements","rects_2","isFirstCol","placeRects","moreCnts","moreMarginTops","unknownHeightSegs_1","hiddenEntries_1","hiddenEntry","hiddenSpan","computeFgSegPlacement","normalFgNodes","renderFgSegs","mirrorFgNodes","mirrorSegs","colPlacements","topsByInstanceId","colPlacements_1","placements_1","buildAbsoluteTopHash","buildMirrorPlacements","showDayNumbers","renderFillSegs","updateSizing","prevState","currentProps","segPlacements","segPlacements_1","leftRightCss","isExternalSizingChange","frameEls","oldInstanceHeights","newInstanceHeights","queryEventInstanceHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","Table","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","limitViaBalanced","colGroupNode","renderRowIntro","isSegAllDay","rowPositions","rowObj","colPositions","getCellRange","getCellEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","DayTableView","buildDayTableModel","headerContent","contentArg","TableDateProfileGenerator","endOfWeek","main","dayGrid","dayGridDay","dayGridWeek","dayGridMonth","_typeof","_defineProperties","_createClass","protoProps","staticProps","_extends","_getPrototypeOf","_setPrototypeOf","_construct","Parent","Class","_possibleConstructorReturn","_get","receiver","_superPropBase","consolePrefix","objectValues","nodeList","previousWarnOnceMessages","callIfFunction","hasToPromiseFn","asPromise","DismissReason","jquery","isJqueryElement","swalClasses","iconTypes","getContainer","elementBySelector","selectorString","elementByClass","getPopup","popup","getIcons","icon","getIcon","visibleIcon","getContent","getImage","image","getProgressSteps","getValidationMessage","getConfirmButton","confirm","getCancelButton","getActions","getHeader","getTimerProgressBar","getCloseButton","getFocusableElements","focusableElementsWithTabindex","otherFocusableElements","uniqueArray","isModal","isToast","previousBodyPadding","setInnerHtml","DOMParser","parseFromString","applyCustomClass","showClass","removeCustomClasses","customClass","getInput","inputType","getChildByClass","checkbox","oldInputVal","focusInput","toggleClass","applyNumericalStyle","removeProperty","isScrollable","hasCssAnimation","animDuration","transDuration","animateTimerProgressBar","timerProgressBar","isNodeEnv","sweetHTML","question","warning","textarea","resetValidationMessage","Swal","parseHtmlToContainer","handleObject","handleJqueryElem","animationEndEvent","testEl","transEndEventNames","WebkitAnimation","OAnimation","renderButton","buttonType","privateProps","innerParams","domCache","inputTypes","setInputPlaceholder","inputPlaceholder","getInputContainer","inputClass","renderInputType","email","password","rangeOutput","checkboxContainer","initialPopupWidth","popupPadding","contentWidth","attributeFilter","renderContent","rerender","inputContainer","inputAttributes","attrName","removeAttributes","setAttributes","showInput","setCustomClass","renderInput","iconContent","currentSteps","getQueueStep","renderHeader","progressStepsContainer","progressSteps","currentProgressStep","stepEl","createStepElement","lineEl","progressStepsDistance","createLineElement","renderProgressSteps","icons","hideAllIcons","iconHtml","setContent","popupBackgroundColor","successIconParts","adjustSuccessIconBackgoundColor","renderIcon","imageUrl","imageAlt","imageWidth","imageHeight","renderImage","titleText","innerText","renderTitle","closeButton","closeButtonHtml","showCloseButton","closeButtonAriaLabel","renderCloseButton","background","modal","addClasses","renderPopup","handleBackdropParam","allowOutsideClick","handlePositionParam","grow","growClass","handleGrowParam","queueStep","renderContainer","confirmButton","cancelButton","showConfirmButton","showCancelButton","buttonsStyling","styled","confirmButtonColor","cancelButtonColor","confirmButtonBackgroundColor","borderLeftColor","borderRightColor","handleButtonsStyling","reverseButtons","renderActions","renderFooter","onRender","clickConfirm","showLoading","fire","globalState","stopTimer","timerProgressBarWidth","timerProgressBarFullWidth","timerProgressBarPercent","stopTimerProgressBar","resumeTimer","defaultParams","hideClass","heightAuto","allowEscapeKey","allowEnterKey","stopKeydownPropagation","keydownListenerCapture","preConfirm","confirmButtonText","confirmButtonAriaLabel","cancelButtonText","cancelButtonAriaLabel","focusConfirm","focusCancel","showLoaderOnConfirm","inputOptions","inputAutoTrim","inputValidator","validationMessage","onBeforeOpen","onOpen","onAfterClose","scrollbarPadding","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isDeprecatedParameter","checkIfParamIsValid","checkIfToastParamIsValid","checkIfParamIsDeprecated","deprecatedParam","useInstead","staticMethods","isUpdatableParameter","argsToParams","clickCancel","getHtmlContainer","_len","_key","mixinParams","MixinSwal","Derived","hasNativeReflectConstruct","Super","NewTarget","resetAndResolve","queueResult","insertQueueStep","deleteQueueStep","enableLoading","getTimerLeft","toggleTimer","running","increaseTimer","increase","isTimerRunning","hideLoading","shouldPreventTouchMove","isIE11","MSInputMethodContext","documentMode","fixVerticalPositionIE","alignItems","privateMethods","swalPromiseResolve","removePopupAndResetState","isToast$$1","triggerOnAfterCloseAndDispose","scrollX","scrollY","restoreFocusTimeout","previousActiveElement","scrollTo","keydownTarget","keydownHandler","keydownHandlerAdded","iosfix","undoIOSfix","resolveValue","handlePopupAnimation","isDismissed","isConfirmed","animationIsSupported","animatePopup","swalCloseEventFinishedCallback","_destroy","setButtonsDisabled","buttons","setInputDisabled","radios","Timer","defaultInputValidators","setParameters","setDefaultInputValidators","validateCustomTargetElement","oldContainer","oldContainerExisted","setupAccessibility","setupRTL","oninput","nextSibling","init","swalOpenAnimationFinished","currentInstance","setScrollingVisibility","fixScrollContainer","initialBodyOverflow","MSStream","maxTouchPoints","preventTouchMove","ontouchstart","ontouchmove","lockBodyScroll","iOSfix","measureScrollbar","addClasses$1","populateInputOptions","renderOption","optionValue","inputOption","radioValue","radioLabel","radioInput","radioLabelElement","formatInputOptions","valueFormatted","succeedWith","closePopup","preConfirmValue","setFocus","increment","arrowKeys","escKeys","handleEnter","isComposing","handleTab","btnIndex","handleArrows","handleEsc","dismissWith","ignoreOutsideClick","swalPromise","onclick","disableButtons","getCheckboxValue","getRadioValue","files","getFileValue","getInputValue","disableInput","enableButtons","enableInput","showValidationMessage","checkValidity","handleConfirmWithInput","handleConfirmButtonClick","handleCancelButtonClick","handleToastClick","onmousedown","onmouseup","handleModalMousedown","handleContainerMousedown","handleModalClick","handlePopupClick","addKeydownHandler","processInputOptions","handleInputOptions","handleInputValue","handleInputOptionsAndValue","haystack","needle","openPopup","setupTimer","initFocus","globalState$$1","blurActiveElement","blur","unsetWeakMaps","instanceMethods","disableLoading","closeModal","closeToast","popupComputedStyle","inputerror","_main","userParams","showWarningsForParams","prepareParams","populateDomCache","validUpdatableParams","updatedParams","deferDisposalTimer","SweetAlert","outerParams","onFulfilled","onFinally","language","initiationDate","ukrainianAnthem","src","loop","_currentInstance","Sweetalert2","swal","sweetAlert","styleSheet","_nonIterableRest","periodOrScheduler","due","setFunctionLength","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","applyBind","SwalPortalComponent_ng_container_0_Template","swalProviderToken","fireOnInitToken","dismissOnDestroyToken","SweetAlert2LoaderService","swalProvider","swalPromiseCache","preloadSweetAlertLibrary","libPromise","isDefaultExport","SwalComponent","sweetAlert2Loader","moduleLevelFireOnInit","moduleLevelDismissOnDestroy","beforeOpen","afterClose","touchedProps","markTouched","isCurrentlyShown","swalFireOnInit","swalDismissOnDestroy","swalOptions","modalElement","allOptions","updatableOptions","swalVisible","SwalDirective","swalInstance","swalRef","stopImmediatePropagation","swalClosed","SwalPortalTargets","SwalPortalComponent","SwalPortalDirective","swalTargets","swalComponent","renderHook","beforeOpenHook","destroyHook","portalComponentRef","createPortalComponent","targetEl","provideDefaultSwal","SweetAlert2Module","provideSwal","fireOnInit","dismissOnDestroy","getSideChannel","utils","arrayPrefixGenerators","brackets","comma","pushToArray","valueOrArray","toISO","allowDots","allowEmptyArrays","charsetSentinel","encodeDotInKeys","encoder","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","EvalError","MAT_RADIO_DEFAULT_OPTIONS","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","MatRadioGroup","MatRadioChange","MAT_RADIO_GROUP","_MatRadioGroupBase","_labelPosition","_controlValueAccessorChangeFn","_updateRadioButtonNames","_markRadiosForCheck","_updateSelectedRadioFromValue","_checkSelectedRadioButton","_markForCheck","ɵMatRadioGroup_BaseFactory","MatRadioButton","MatRadioButtonBase","_MatRadioButtonMixinBase","_MatRadioButtonBase","radioGroup","_radioDispatcher","_providerOverride","newCheckedState","_setDisabled","_touch","groupValueChanged","ariaDescribedby","changeDetector","focusMonitor","radioDispatcher","providerOverride","_onInputChange","MatRadioModule","matTooltipAnimations","tooltipState","passiveListenerOptions","MAT_TOOLTIP_SCROLL_STRATEGY","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","scrollThrottle","MAT_TOOLTIP_DEFAULT_OPTIONS","touchendHideDelay","MatTooltip","_ariaDescriber","_position","_viewInitialized","_pointerExitEventsInitialized","touchGestures","_message","_passiveListeners","_isTooltipVisible","_updatePosition","_tooltipInstance","_setupPointerEnterEventsIfNeeded","removeDescription","_updateTooltipMessage","describe","_tooltipClass","_setTooltipClass","_touchstartTimeout","_showTimeoutId","_hideTimeoutId","TooltipComponent","afterHidden","scrollableAncestors","withTransformOriginOn","withViewportMargin","withScrollableContainers","positionChanges","scrollableViewProperties","isOverlayClipped","_getOrigin","originPosition","isLtr","_invertPosition","overlayPosition","onMicrotaskEmpty","_platformSupportsMouseEvents","_setupPointerExitEventsIfNeeded","_disableNativeGesturesIfNecessary","_addListeners","exitListeners","_wheelListener","touchendListener","IOS","ANDROID","elementUnderPointer","gestures","_breakpointObserver","_visibility","_closeOnInteraction","_onHide","_isHandset","_handleBodyInteraction","tmp_0_0","_animationStart","_animationDone","pipes","MatTooltipModule","AnimationBuilder","AnimationFactory","AUTO_STYLE","definitions","timings","sequence","keyframes","stateChangeExpr","expr","animateChild","stagger","scheduleMicroTask","NoopAnimationPlayer","_onDoneFns","_onStartFns","_onDestroyFns","_started","_finished","parentPlayer","hasStarted","_onStart","triggerMicrotask","_onFinish","finish","phaseName","methods","AnimationGroupPlayer","_players","players","doneCount","destroyCount","startCount","onDone","onStart","restart","timeAtPosition","setPosition","longestPlayer","longestSoFar","getPosition","beforeDestroy","ɵPRE_STYLE","isNode","optimizeGroupPlayer","normalizeKeyframes","driver","normalizer","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","normalizeStyleValue","LINE_START","listenOnPlayer","copyAnimationEvent","makeAnimationEvent","triggerName","getOrSetAsInMap","parseTimelineCommand","command","separatorPos","_contains","elm1","elm2","_matches","_query","_isNode","mozMatchesSelector","oMatchesSelector","elems","elm","_CACHED_BODY","_IS_WEBKIT","containsVendorPrefix","hypenatePropsObject","newObj","newProp","NoopAnimationDriver","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","resolveTiming","allowNegativeValues","delayMatch","easingVal","containsErrors","parseTimeExpression","copyObj","copyStyles","readPrototype","getStyleAttributeString","writeStyleAttribute","styleAttrValue","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","PARAM_REGEX","extractStyleParams","interpolateParams","original","varName","localVal","DASH_CASE_REGEXP","allowPreviousPlayerStylesMerge","balancePreviousStylesIntoKeyframes","previousStyles","previousStyleProps","startingKeyframe","missingStyleProps","computeStyle","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","ANY_STATE","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","makeLambdaFromStates","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN","SELF_TOKEN_REGEX","buildAnimationAst","_driver","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","transitions","stateDef","styleAst","astParams","containsDynamicStyles","missingSubs","stylesObj","missingSubsArr","transitionValue","expressions","matchers","eventStr","parseAnimationAlias","parseInnerTransitionStr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","strValue","ast","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","collectedEasing","styleData","styleMap","validateStyleProperty","collectedEntry","updateCollectedStyle","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","generatedOffset","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","hasAmpersand","normalizeSelector","includeSelf","originalSelector","currentTransition","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","buildKeyframes","currentTimeline","setStyles","timelines","timeline","containsAnimation","allowOnlyTimelineStyles","elementInstructions","consume","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","invokeQuery","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","skipIfExists","optionsToUpdate","newParams","paramsToUpdate","oldParams","newTime","AnimationTimelineContext","fork","_copyOptions","updatedTimings","builder","stretchStartingKeyframe","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","TimelineBuilder","allStyles","allProperties","flattenStyles","_updateStyle","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","_triggerName","_stateStyles","matchFns","oneOrMoreTransitionsMatch","stateName","backupStateStyler","stateStyler","backupStyles","buildStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","queriedElementsList","combinedParams","styleObj","transitionFactories","balanceProperties","fallbackTransition","key1","key2","EMPTY_INSTRUCTION_MAP","bodyNode","_normalizer","_animations","_playersById","autoStylesMap","inst","_buildPlayer","_getPlayer","baseEvent","QUEUED_CLASSNAME","DISABLED_CLASSNAME","DISABLED_SELECTOR","STAR_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","isObj","normalizeTriggerValue","VOID_VALUE","DEFAULT_STATE_VALUE","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","triggersWithStates","statesByElement","afterFlush","defaultToFallback","_getTrigger","absorbOptions","playersOnElement","playersByElement","queued","matchTransition","isFallbackTransition","totalQueuedPlayers","objEquals","matchStyles","reportError","stateMap","elementPlayers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","clearElementCache","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","markElementAsRemoved","processLeaveNode","elementStates","visitedTriggers","engine","childElementCount","_signalRemovalForInnerTriggers","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","prepareLeaveAnimationListeners","removalFlag","destroyInnerAnimations","_onRemovalComplete","microtaskId","markedForDestroy","containsElement","containsData","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","_balanceNamespaceList","collectEnterElement","found","createNamespace","_fetchNamespace","nsId","isElementNode","isHostElement","hostNS","subTimelines","skipBuildAst","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","matchesElement","markElementAsDisabled","cleanupFns","_flushAnimations","quietFns","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","drainQueuedTransitions","nodeIsOrphaned","_buildInstruction","stringMap","setVal","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","elementContainsData","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","timelineInstruction","finalPlayers","previousPlayers","_flattenGroupPlayersRecur","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","triggerCallback","_queueEvent","cloakElement","oldValue","valuesMap","elementPropsMap","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","k1","k2","postEntry","preEntry","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","buildTrigger","registerTrigger","eventPhase","whenRenderingDone","packageNonAnimatableStyles","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","ANIMATION_PROP","ANIMATIONEND_EVENT","_duration","_easing","_fillMode","_onDoneFn","_startTime","_eventFn","_handleCallback","anim","getAnimationStyle","countChars","setAnimationStyle","addRemoveAnimationEvent","playPauseAnimation","findIndexForAnimation","timestamp","_ngTestManualTimestamp","elapsedTime","findMatchingTokenIndex","searchToken","doRemove","_finalStyles","_specialStyles","currentSnapshot","_buildStyler","_styler","_flushStartFns","_flushDoneFns","finished","_startingStyles","__initialized","_styles","KEYFRAMES_NAME_PREFIX","_count","_head","keyframeStr","kfElm","previousCssKeyframePlayers","flattenKeyframesIntoStyles","buildKeyframeElement","specialStyles","flatKeyframes","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","_isNativeImpl","getElementAnimateFn","_cssKeyframesDriver","supported","scrubberAccessRequested","useKeyframes","playerOptions","previousWebAnimationPlayers","BrowserAnimationBuilder","rootRenderer","_nextAnimationId","None","issueAnimationCommand","_command","_listen","ANIMATION_PREFIX","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","begin","_scheduleCountTask","destroyNode","newChild","onInsert","refChild","isMove","oldChild","onRemove","selectorOrNode","preserveContent","selectRootElement","flags","disableAnimations","dotIndex","resolveElementFromTarget","scheduleListenerCallback","InjectableAnimationEngine","ANIMATION_MODULE_TYPE","SHARED_ANIMATION_PROVIDERS","BROWSER_ANIMATIONS_PROVIDERS","BrowserAnimationsModule","eifelerRegelAppliesToNumber","lastDigit","webpackContext","webpackContextResolve","__webpack_require__","onNoticeChanged$","setNotice","AuthNoticeService","createInitialStateFactory","getInitialState","additionalState","entities","createSelectorsFactory","getSelectors","selectState","selectIds","selectEntities","selectAll","selectTotal","DidMutate","createStateOperator","mutator","clonedEntityState","didMutate","Both","EntitiesOnly","selectIdValue","entity","createUnsortedStateAdapter","addOneMutably","addManyMutably","removeManyMutably","keysOrPredicate","updateOneMutably","updateManyMutably","updates","newKeys","newKey","hasNewKey","takeNewKey","upsertManyMutably","didMutateByUpdated","didMutateByAdded","removeAll","addOne","addMany","setAll","setOne","updateOne","updateMany","upsertOne","upsertMany","removeOne","removeMany","mapOne","createSortedStateAdapter","newModels","models","didMutateIds","takeUpdatedModel","originalIds","updatedIndexes","modelId","entityId","updatesOrMap","createEntityAdapter","sortComparer","stateFactory","selectorsFactory","stateAdapter","RoleActionTypes","AllRolesRequested","RolesPageToggleLoading","RolesActionToggleLoading","adapter","initialRolesState","isAllRolesLoaded","queryRowsCount","queryResult","lastCreatedRoleId","listLoading","actionsloading","lastQuery","showInitWaitingMessage","rolesReducer","RoleOnServerCreated","RoleCreated","RoleUpdated","partialrole","RoleDeleted","AllRolesLoaded","roles","RolesPageCancelled","RolesPageLoaded","totalCount","selectRolesState","selectAllRoles","selectUsersState","rolesState","sortArray","sortField","usersState","lastCreatedUserId","PermissionActionTypes","AllPermissionsRequested","UserActionTypes","UsersPageToggleLoading","UsersActionToggleLoading","actions$","login$","logout$","queryParams","returnUrl","register$","Register","userToken","observableResult","AuthEffects","PermissionEffects","showPageLoadingDistpatcher","hidePageLoadingDistpatcher","showActionLoadingDistpatcher","hideActionLoadingDistpatcher","RoleEffects","initialAuthState","UserEffects","loggedIn","isUserLoaded","authReducer","UserLoaded","_user","initialPermissionsState","_isAllPermissionsLoaded","permissionsReducer","AllPermissionsLoaded","selectPermissionsState","selectAllPermissions","selectAuthState","ps","isLoggedIn","currentUser","currentUserRoleIds","currentUserPermissionsIds","userRoleIds","allRoles","userRolesIds","userRoles","userRole","getPermissionsIdsFrom","currentUserPermissions","permissionIds","allPermissions","userPermission","menuService","showToast","urlKontrol","currentUrl","targetUrl","yasak","canActivate","UserMenuItems","txtTargetUrl","AuthGuard","layoutConfigService","authNoticeService","translationService","splashScreenService","urlx","setLanguage","getSelectedLanguage","headerLogo","getLogo","AuthComponent","plakaLogin","txtPlaka","kullaniciAd","sifre","sorumluGirisi","panoramaGirisi","kullaniciKayit","getLogoFind","subdomain","LoginService","lastikAramaService","loginService","fb","cdr","snackBar","randevuListesiRequest","tabset","beforeCodeTitle","viewCode","isCodeVisible","isExampleExpanded","authVerision","authVersion","girisParam","bayiad","getSubDomain","imageBase64","reload","exampleTabset","initLoginForm","plakaInput","plakaForm","compose","plakaSubmit","UserName","Password","Plaka","loginType","paging","sayfa","postPlakaRandevuListesi","subDomainliDist","bytTip","lngKayitYeri","subdanGeldi","lngMiktar","txtErpKod","txtKayitYeri","txtAracKullanici","txtCepTelefonu","trhIslemTarihi","lngSaklamaHizmeti","lngSokmeHizmeti","txtAciklama","lngDepoDizilim","saklamaDetayList","txtHizmetVerenEmail","txtHizmetVerenTel","sipNo","ErrorMessage","isPlakaControlHasError","validationType","LoginComponent","menuConfigService","txtKullaniciAd","txtAccessToken","AccessToken","hangisayfa","authDatav2","Token","getSlogan","slogan","txtParametreDeger","PanaromaLoginComponent","hizmetNoktasiForm","kullaniciAdi","isHizmetNoktasiControlHasError","sorumluGirisiSubmit","PanoramaKullanici","kayitol","openSnackBar","verticalPosition","horizontalPosition","SorumluGirisiLoginComponent","MiyaToken","TokenLoginComponent","routes","forRoot","AuthModule","forChild","forFeature","MatMenu_ng_template_0_Template","_r2","panelId","_panelAnimationState","matMenuAnimations","transformMenu","fadeInItems","MAT_MENU_CONTENT","MAT_MENU_PANEL","MatMenuItemBase","_MatMenuItemMixinBase","MatMenuItem","_parentMenu","_hovered","_focused","_highlighted","_triggersSubmenu","_checkDisabled","_handleMouseEnter","MAT_MENU_DEFAULT_OPTIONS","overlapTrigger","xPosition","yPosition","menuPanelUid","_MatMenuBase","_xPosition","_yPosition","_directDescendantItems","_tabSubscription","_overlapTrigger","_hasBackdrop","setPositionClasses","previousPanelClass","_previousPanelClass","_updateDirectDescendants","withTypeAhead","focusedItem","_item","manager","parentMenu","setFocusOrigin","lazyContent","_focusFirstItem","elevation","newElevation","customElevation","_previousElevation","posX","posY","_isAnimating","_allItems","MatMenu","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","MatMenuTrigger","_menuItemInstance","_menuOpen","_hoverSubscription","_menuCloseSubscription","_handleTouchStart","_openedBy","menuOpened","onMenuOpen","menuClosed","onMenuClose","_parentMaterialMenu","triggersSubmenu","_destroyMenu","_checkMenu","_handleHover","closeMenu","openMenu","_setPosition","_getPortal","menuData","_menuClosingActions","_initMenu","_startAnimation","menuOpen","_resetAnimation","_attached","_setIsMenuOpen","_setMenuElevation","focusFirstItem","setElevation","_subscribeToPositions","withLockedPosition","withGrowAfterOpen","connectionPair","originFallbackX","overlayFallbackY","originFallbackY","overlayFallbackX","parentClose","toggleMenu","_handleMousedown","_deprecatedMatMenuTriggerFor","_MatMenuDirectivesModule","MatMenuModule","subscribeToArray","msg","hasDefaultValue","_toArray","_isEditMode","_userId","_totalCount","_errorMessage","_entities","_queryParams","_filtrationFields","entitiesResult","searchInArray","initialPos","pageNumber","queryResults","QueryResultsModel","_incomingArray","_sortField","_sortOrder","_queryObj","resultBuffer","firstIndexes","doSearch","searchText","ex","entitySubject","hasItems","isPreloadTextViewed$","paginatorTotalSubject","paginatorTotal$","hasItemsSubscription","sb","_pageNumber","getFindHTTPParams","getHTTPHeaders","HttpUtilsService","dateFormat","dateCustomFormat","stringDate","getDateFormatterFromString","dateInStr","getDateFromString","getDateStringFromDate","TypesUtilsService","selectedStatusForUpdate","viewLoading","loadingAfterSubmit","onNoClick","updateStatus","UpdateStatusDialogComponent","getItemCssClassByStatus","FetchEntityDialogComponent","onYesClick","DeleteEntityDialogComponent","showUndoButton","undoButtonDuration","delayForUndoButton","timeToDelay","onDismissWithAction","onDismiss","ActionNotificationComponent","MessageType","showActionNotification","_showCloseButton","_showUndoButton","_undoButtonDuration","_verticalPosition","Create","openFromComponent","deleteElement","description","waitDesciption","fetchElements","updateStatusForEntities","statuses","LayoutUtilsService","origSymbol","hasSymbolSham","configOrBufferSize","windowTime","useRefCount","isComplete","innerSub","shareReplayOperator","callBound","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","$wm","$m","$o","channel","assert","objects","listGet","listHas","listSet","callBind","$indexOf","defaultProps","__k","__b","__e","__d","__c","__h","__v","vnode","__r","debounceRendering","__P","__n","__E","_sb","__s","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","diffed","localName","createElementNS","dangerouslySetInnerHTML","__html","unmount","getDerivedStateFromError","componentDidCatch","forceUpdate","__H","__N","__V","isPureReactComponent","__f","for","__u","__a","__R","__O","revealOrder","isReactComponent","G","cancelBubble","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","class","$$typeof","globalObj","preact","ContextType","origProvider","subs_1","_props","old","containerInfo","runBeforeFlush","oldDebounceRendering","callbackQ","FakeComponent","Calendar","isRendering","isRendered","customContentRenderId","handleAction","renderRunner","handleRenderRequest","currentData_1","setClassNames","setHeight","wasRendering","classNames_1","MatSelectSearchComponent_mat_checkbox_3_Template","_emitSelectAllBooleanToParent","matFormField","toggleAllCheckboxChecked","toggleAllCheckboxIndeterminate","toggleAllCheckboxTooltipMessage","toogleAllCheckboxTooltipPosition","MatSelectSearchComponent_mat_spinner_6_Template","MatSelectSearchComponent_button_7_ng_content_1_Template","MatSelectSearchComponent_button_7_ng_template_2_Template","MatSelectSearchComponent_button_7_Template","clearIcon","MatSelectSearchComponent_div_9_Template","noEntriesFoundLabel","MatSelectSearchComponent_1","MatSelectSearchClearDirective","MatSelectSearchComponent","matSelect","matOption","liveAnnouncer","placeholderLabel","indexAndLengthScreenReaderText","clearSearchInput","searching","disableInitialFocus","enableClearOnEscapePressed","preventHomeEndKeyPropagation","disableScrollToActiveOnOptionsChanged","showToggleAllCheckbox","hideClearSearchButton","alwaysRestoreSelectedOptionsMulti","toggleAll","_options$","optionsList$","optionsLength$","_formControl","_showNoEntriesFound$","getOptionsLengthOffset","openedChange","updateInputWidth","adjustScrollTopToFitActiveOptionIntoView","previousFirstOption","currentFirstOption","keyManager","showNoEntriesFound","initMultipleHandling","ariaActiveDescendantId","_getAriaActiveDescendant","announce","getAriaIndex","getAriaLength","_lastExternalInputValue","searchSelectInput","previousSelectedValues","restoreSelectedValues","optionValues","matOptionHeight","getMatOptionHeight","activeOptionIndex","indexOfOptionToFitIntoView","currentScrollTop","searchInputHeight","innerSelectSearch","amountOfVisibleOptions","indexOfFirstVisibleOption","panelElement","isInsideMatOption","_handleKeyup","_isToggleAllCheckboxVisible","NgxMatSelectSearchModule","do","undefinedValueNotification","completeNotification","MatCardContent","MatCardTitle","MatCardSubtitle","MatCardActions","MatCardImage","MatCard","MatCardHeader","MatCardModule","weekEndings","throwIfEmpty","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","SubjectSubscriber","AnonymousSubject","MatProgressSpinner__svg_circle_1_Template","_spinnerAnimationLabel","_getStrokeDashOffset","_getStrokeCircumference","_getCircleStrokeWidth","_getCircleRadius","MatProgressSpinner__svg_circle_2_Template","MatSpinner__svg_circle_1_Template","MatSpinner__svg_circle_2_Template","MatProgressSpinnerBase","_MatProgressSpinnerMixinBase","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","diameter","MatProgressSpinner","_diameter","_fallbackAnimation","trackedDiameters","_diameters","_getSpinnerAnimationLabel","_noopAnimations","_forceAnimations","strokeWidth","_styleRoot","_attachStyleNode","_strokeWidth","animationClass","styleRoot","currentDiameter","diameters","diametersForElement","styleTag","_getAnimationText","strokeCircumference","_getViewBox","MatSpinner","MatProgressSpinnerModule","SubjectSubscription","subscriberIndex","SyntaxError","URIError","hasPropertyDescriptors","hasArrayLengthDefineBug","outerValue","notifyNext","notifyError","notifyComplete","outerSubscriber","_arrayLikeToArray","arr2","ERROR_MESSAGE","funcType","concatty","slicy","arrLike","joiny","joiner","that","bound","binder","boundLength","boundArgs","Empty","relativeTimeWithMutation","mutationTable","softMutation","lastNumber","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","last2Digits","equal","StoreDevtoolsConfig","maxAge","STORE_DEVTOOLS_CONFIG","INITIAL_OPTIONS","noMonitor","DEFAULT_NAME","createConfig","DEFAULT_OPTIONS","actionSanitizer","stateSanitizer","serialize","logOnly","lock","export","import","jump","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","PerformAction","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","SetActionsActive","JumpToState","JumpToAction","actionId","ImportState","nextLiftedState","LockChanges","PauseRecording","DevtoolsDispatcher","ɵDevtoolsDispatcher_BaseFactory","unliftState","liftedState","computedStates","currentStateIndex","unliftAction","actionsById","nextActionId","liftAction","sanitizeActions","sanitizedActions","actionIdx","sanitizeAction","sanitizeStates","computedState","sanitizeState","stateIdx","shouldFilterActions","actionsSafelist","actionsBlocklist","filterLiftedState","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","stagedActionIds","liftedAction","isActionFiltered","blockedlist","predicateMatch","safelistMatch","blocklistMatch","ExtensionActionTypes","START","DISPATCH","STOP","ACTION","REDUX_DEVTOOLS_EXTENSION","DevtoolsExtension","devtoolsExtension","dispatcher","createActionStreams","isLocked","sanitizedState","sanitizedAction","sendToReduxDevtools","extensionConnection","sanitizedLiftedState","getExtensionConfig","changes$","createChangesObservable","start$","stop$","liftedActions$","unwrapAction","actionsUntilStop$","liftedUntilStop$","extensionOptions","INIT_ACTION","RECOMPUTE","RECOMPUTE_ACTION","computeNextEntry","nextError","recomputeStates","minInvalidatedStateIndex","committedState","skippedActionIds","nextComputedStates","lastIncludedActionId","previousEntry","previousState","previousError","liftInitialState","initialCommittedState","monitorReducer","monitorState","liftReducerWith","initialLiftedState","commitExcessActions","excess","idsToDelete","commitChanges","actionIds","lastState","StoreDevtools","reducers$","extension","scannedActions","liftedInitialState","liftReducer","liftedAction$","liftedReducer$","liftedStateSubject","liftedStateSubscription","reducedLiftedState","extensionStartSubscription","refresh","liftedState$","state$","stateSubscription","IS_EXTENSION_OR_MONITOR_PRESENT","createIsExtensionOrMonitorPresent","createReduxDevtoolsExtension","extensionKey","createStateObservable","devtools","StoreDevtoolsModule","elMatches","queryChildren","cls","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","scrollingThreshold","EventElement","prototypeAccessors","unbind","this$1","unbindAll","EventManager","eventElements","createEvent","CustomEvent","evt","initCustomEvent","processScrollDiff","useScrollingClass","forceFireReachEvent","containerHeight","down","reach","dispatchEvent","setScrollingClassInstantly","processScrollDiff$1","toInt","eventElement","env","isWebKit","supportsTouch","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","updateGeometry","roundedScrollTop","containerWidth","scrollbarXRail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","startingScrollTop","startingMousePageY","mouseMoveHandler","mouseUpHandler","ownerDocument","bindMoves","touchMode","contentDocument","deltaX","deltaY","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","cursor","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","onwheel","onmousewheel","startOffset","speed","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","shouldHandle","pointerType","MSPOINTER_TYPE_MOUSE","currentOffset","timeGap","magnitudeX","magnitudeY","swipeEasing","PerfectScrollbar","userSettings","originalScrollLeft","isNegativeScroll","railXStyle","railYStyle","lastScrollTop","lastScrollLeft","onScroll","removePsClasses","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","broadcastActive","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","isSVGGraphicsElement","SVGGraphicsElement","getBBox","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","bbox","getSVGContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","getHTMLElementContentRect","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","PERFECT_SCROLLBAR_CONFIG","Geometry","Position","PerfectScrollbarEvents","PerfectScrollbarConfig","PerfectScrollbarDirective","differs","ro","configDiff","ngDestroy","psScrollY","psScrollX","psScrollUp","psScrollDown","psScrollLeft","psScrollRight","psYReachEnd","psYReachStart","psXReachEnd","psXReachStart","config_1","ngDoCheck","ngOnChanges","geometry","absolute","animateScrolling","scrollToX","scrollToY","scrollToTop","scrollToLeft","scrollToRight","scrollToBottom","scrollToElement","qs","elementPos","scrollerPos","newValue_1","scrollCount_1","oldTimestamp_1","performance","oldValue_1","cosParameter_1","newTimestamp","PerfectScrollbarModule","onConfigUpdated$","getMenus","menuConfig","loadConfigs","MenuConfigService","concatMap","MAT_CHECKBOX_DEFAULT_OPTIONS","MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY","clickAction","MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR","MatCheckbox","MatCheckboxChange","MatCheckboxBase","_MatCheckboxMixinBase","indeterminateChange","_currentAnimationClass","_currentCheckState","_indeterminate","_syncIndeterminate","_transitionCheckState","indeterminate","_getAnimationClassForCheckStateTransition","animSuffix","nativeCheckbox","_onInteractionEvent","_getAriaChecked","_MatCheckboxRequiredValidatorModule","MatCheckboxModule","BUTTON_HOST_ATTRIBUTES","MatButtonBase","_MatButtonMixinBase","MatButton","isRoundButton","_hasHostAttributes","isIconButton","attribute","MatAnchor","_haltDisabledEvents","MatButtonModule","getKey","intKey","hasShallowProperty","getShallowPropertySafely","objectPath","getShallowProperty","doNotReplace","currentPath","includeInheritedProps","ensureExists","coalesce","nextObj","del","mod","withInheritedProps","MatProgressBarBase","_MatProgressBarMixinBase","MAT_PROGRESS_BAR_LOCATION","progressbarId","MatProgressBar","_isNoopAnimation","_bufferValue","animationEnd","_animationEndSubscription","_rectangleFillValue","bufferValue","_primaryValueBar","_bufferTransform","_primaryTransform","MatProgressBarModule","DIR_DOCUMENT","Directionality","BidiModule","AgGridColumn_1","AgGridModule_1","AgGridColumn","childColumns","colDef","createColDefFromGridColumn","hasChildColumns","getChildColDefs","toColDef","sortingOrder","allowedAggFuncs","menuTabs","cellClassRules","headerGroupComponent","headerGroupComponentFramework","headerGroupComponentParams","cellStyle","cellRendererParams","cellEditorFramework","cellEditorParams","pinnedRowCellRendererFramework","pinnedRowCellRendererParams","filterFramework","filterParams","headerComponent","headerComponentFramework","headerComponentParams","floatingFilterComponent","floatingFilterComponentParams","floatingFilterComponentFramework","tooltipComponent","tooltipComponentParams","tooltipComponentFramework","refData","columnGroupShow","headerClass","toolPanelClass","headerValueGetter","colId","tooltipField","headerTooltip","cellClass","showRowGroup","aggFunc","cellRenderer","cellEditor","pinned","chartDataType","sortedAt","flex","rowGroupIndex","pivotIndex","dndSourceOnRowDrag","valueGetter","valueSetter","filterValueGetter","keyCreator","cellRendererFramework","pinnedRowCellRenderer","valueFormatter","pinnedRowValueFormatter","valueParser","pivotComparator","suppressKeyboardEvent","rowSpan","getQuickFilterText","newValueHandler","onCellValueChanged","onCellClicked","onCellDoubleClicked","onCellContextMenu","rowDragText","tooltipValueGetter","cellRendererSelector","cellEditorSelector","suppressCellFlash","suppressColumnsToolPanel","suppressFiltersToolPanel","openByDefault","marryChildren","rowGroup","checkboxSelection","headerCheckboxSelection","headerCheckboxSelectionFilteredOnly","suppressMenu","suppressSorting","suppressMovable","suppressFilter","lockPosition","lockVisible","lockPinned","unSortIcon","suppressSizeToFit","suppressResize","suppressAutoSize","enableRowGroup","enablePivot","enableValue","suppressPaste","suppressNavigable","enableCellChangeFlash","rowDrag","dndSource","autoHeight","resizable","singleClickEdit","floatingFilter","AngularFrameworkOverrides","useCapture","AngularFrameworkComponentWrapper","OriginalConstructor","getFrameworkComponentInstance","BaseGuiComponent","componentType","ɵAngularFrameworkComponentWrapper_BaseFactory","_params","_agAwareComponent","_frameworkComponentInstance","_eGui","agInit","AgGridAngular","elementDef","angularFrameworkOverrides","frameworkComponentWrapper","_initialised","_fullyReady","slaveGrids","alignedGrids","rowData","excelStyles","pinnedTopRowData","pinnedBottomRowData","components","frameworkComponents","rowStyle","autoGroupColumnDef","groupColumnDef","localeText","datasource","serverSideDatasource","viewportDatasource","groupRowRendererParams","aggFuncs","fullWidthCellRendererParams","defaultColGroupDef","defaultColDef","defaultExportParams","columnTypes","rowClassRules","detailGridOptions","detailCellRendererParams","loadingCellRendererParams","loadingOverlayComponentParams","noRowsOverlayComponentParams","popupParent","colResizeDefault","reduxStore","statusBar","sideBar","rowClass","rowSelection","overlayLoadingTemplate","overlayNoRowsTemplate","quickFilterText","rowModelType","editType","domLayout","clipboardDeliminator","rowGroupPanelShow","multiSortKey","pivotColumnGroupTotals","pivotRowTotals","pivotPanelShow","rowHeight","detailRowHeight","rowBuffer","colWidth","headerHeight","groupHeaderHeight","floatingFiltersHeight","pivotHeaderHeight","pivotGroupHeaderHeight","groupDefaultExpanded","minColWidth","maxColWidth","viewportRowModelPageSize","viewportRowModelBufferSize","autoSizePadding","maxBlocksInCache","maxConcurrentDatasourceRequests","tooltipShowDelay","cacheOverflowSize","paginationPageSize","cacheBlockSize","infiniteInitialRowCount","paginationStartPage","infiniteBlockSize","batchUpdateWaitMillis","asyncTransactionWaitMillis","blockLoadDebounceMillis","keepDetailRowsCount","undoRedoCellEditingLimit","localeTextFunc","groupRowInnerRenderer","groupRowInnerRendererFramework","dateComponent","dateComponentFramework","groupRowRenderer","groupRowRendererFramework","isExternalFilterPresent","getRowHeight","doesExternalFilterPass","getRowClass","getRowStyle","getRowClassRules","traverseNode","getContextMenuItems","getMainMenuItems","processRowPostCreate","processCellForClipboard","getNodeChildDetails","groupRowAggNodes","getRowNodeId","isFullWidthCell","fullWidthCellRenderer","fullWidthCellRendererFramework","doesDataFlower","processSecondaryColDef","processSecondaryColGroupDef","getBusinessKeyForNode","sendToClipboard","navigateToNextCell","tabToNextCell","getDetailRowData","processCellFromClipboard","getDocument","postProcessPopup","getChildCount","getDataPath","loadingCellRenderer","loadingCellRendererFramework","loadingOverlayComponent","loadingOverlayComponentFramework","noRowsOverlayComponent","noRowsOverlayComponentFramework","detailCellRenderer","detailCellRendererFramework","defaultGroupSortComparator","isRowMaster","isRowSelectable","postSort","processHeaderForClipboard","paginationNumberFormatter","processDataFromClipboard","getServerSideGroupKey","isServerSideGroup","createChartContainer","processChartOptions","getChartToolbarItems","fillOperation","toolPanelSuppressRowGroups","toolPanelSuppressValues","toolPanelSuppressPivots","toolPanelSuppressPivotMode","toolPanelSuppressSideButtons","toolPanelSuppressColumnFilter","toolPanelSuppressColumnSelectAll","toolPanelSuppressColumnExpandAll","suppressMakeColumnVisibleAfterUnGroup","suppressRowClickSelection","suppressCellSelection","suppressHorizontalScroll","alwaysShowVerticalScroll","enableBrowserTooltips","enableColResize","enableCellExpressions","enableSorting","enableServerSideSorting","enableFilter","enableServerSideFilter","angularCompileRows","angularCompileFilters","angularCompileHeaders","groupSuppressAutoColumn","groupSelectsChildren","groupIncludeFooter","groupIncludeTotalFooter","groupUseEntireRow","groupSuppressRow","groupSuppressBlankHeader","suppressMenuHide","rowDeselection","suppressMultiSort","suppressLoadingOverlay","suppressNoRowsOverlay","skipHeaderOnAutoSize","suppressParentsInRowNodes","showToolPanel","suppressColumnMoveAnimation","suppressMovableColumns","suppressFieldDotNotation","enableRangeSelection","enableRangeHandle","enableFillHandle","suppressClearOnFillReduction","deltaSort","suppressTouch","suppressAsyncEvents","allowContextMenuWithControlKey","suppressContextMenu","suppressMenuFilterPanel","suppressMenuMainPanel","suppressMenuColumnPanel","rememberGroupStateWhenNewData","suppressDragLeaveHidesColumns","suppressMiddleClickScrolls","suppressPreventDefaultOnMouseWheel","suppressUseColIdForGroups","suppressCopyRowsToClipboard","copyHeadersToClipboard","pivotMode","suppressAggFuncInHeader","suppressColumnVirtualisation","suppressAggAtRootLevel","suppressFocusAfterRefresh","functionsPassive","functionsReadOnly","animateRows","groupSelectsFiltered","groupRemoveSingleChildren","groupRemoveLowestSingleChildren","enableRtl","suppressClickEdit","rowDragManaged","suppressRowDrag","suppressMoveWhenRowDragging","enableMultiRowDragging","enableGroupEdit","embedFullWidthRows","deprecatedEmbedFullWidthRows","suppressTabbing","suppressPaginationPanel","groupHideOpenParents","groupMultiAutoColumn","pagination","stopEditingWhenGridLosesFocus","paginationAutoPageSize","suppressScrollOnNewData","purgeClosedRowNodes","cacheQuickFilter","deltaRowDataMode","ensureDomOrder","accentedSort","pivotTotals","suppressChangeDetection","valueCache","valueCacheNeverExpires","aggregateOnlyChangedColumns","suppressAnimationFrame","suppressExcelExport","suppressCsvExport","treeData","masterDetail","suppressMultiRangeSelection","enterMovesDownAfterEdit","enterMovesDown","suppressPropertyNamesCheck","rowMultiSelectWithClick","contractColumnSelection","suppressEnterpriseResetOnNewColumns","enableOldSetFilterModel","suppressRowHoverHighlight","gridAutoHeight","suppressRowTransform","suppressClipboardPaste","suppressLastEmptyLineOnPaste","serverSideSortingAlwaysResets","reactNext","suppressSetColumnStateEvents","enableCharts","deltaColumnMode","suppressMaintainUnsortedOrder","enableCellTextSelection","suppressBrowserResizeObserver","suppressMaxRenderedRowRestriction","excludeChildrenWhenTreeDataFiltering","tooltipMouseTrack","keepDetailRows","paginateChildRows","preventDefaultOnContextMenu","undoRedoCellEditing","allowDragFromColumnsToolPanel","immutableData","immutableColumns","pivotSuppressAutoColumn","columnEverythingChanged","newColumnsLoaded","columnPivotModeChanged","columnRowGroupChanged","expandOrCollapseAll","columnPivotChanged","gridColumnsChanged","columnValueChanged","columnMoved","columnVisible","columnPinned","columnGroupOpened","columnResized","displayedColumnsChanged","virtualColumnsChanged","rowGroupOpened","rowDataChanged","rowDataUpdated","pinnedRowDataChanged","rangeSelectionChanged","chartCreated","chartRangeSelectionChanged","chartOptionsChanged","chartDestroyed","toolPanelVisibleChanged","modelUpdated","pasteStart","pasteEnd","fillStart","fillEnd","cellClicked","cellDoubleClicked","cellMouseDown","cellContextMenu","cellValueChanged","rowValueChanged","cellFocused","rowSelected","selectionChanged","cellKeyDown","cellKeyPress","cellMouseOver","cellMouseOut","filterChanged","filterModified","filterOpened","sortChanged","virtualRowRemoved","rowClicked","rowDoubleClicked","gridReady","gridSizeChanged","viewportChanged","firstDataRendered","dragStarted","dragStopped","checkboxChanged","rowEditingStarted","rowEditingStopped","cellEditingStarted","cellEditingStopped","bodyScroll","animationQueueEmpty","heightScaleChanged","paginationChanged","componentStateChanged","bodyHeightChanged","displayedColumnsWidthChanged","scrollVisibilityChanged","columnHoverChanged","flashCells","rowDragEnter","rowDragMove","rowDragLeave","rowDragEnd","popupToFront","columnRowGroupChangeRequest","columnPivotChangeRequest","columnValueChangeRequest","columnAggFuncChangeRequest","keyboardFocus","mouseFocus","_nativeElement","setViewContainerRef","setComponentFactoryResolver","checkForDeprecatedEvents","gridOptions","copyAttributesToGridOptions","gridParams","globalEventListener","frameworkOverrides","providedBeanInstances","modules","api","columnApi","resolveNow","processOnChange","iterateObject","checkEventDeprecation","AgGridModule","forkJoin","forkJoinInternal","completed","emitted","MatSelect_span_4_Template","MatSelect_span_5_span_1_Template","triggerValue","MatSelect_span_5_ng_content_2_Template","MatSelect_span_5_Template","customTrigger","MatSelect_ng_template_8_Template","_panelDoneAnimatingStream","_getPanelTheme","_transformOrigin","_triggerFontSize","matSelectAnimations","transformPanelWrap","transformPanel","SELECT_PANEL_MAX_HEIGHT","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","MatSelectChange","MatSelectBase","_MatSelectMixinBase","MAT_SELECT_TRIGGER","_MatSelectBase","_parentFormField","scrollStrategyFactory","_liveAnnouncer","_panelOpen","_triggerAriaLabelledBy","_valueId","_overlayPanelClass","_disableOptionCentering","disableOptionCentering","optionSelectionChanges","_openedStream","_closedStream","typeaheadDebounceInterval","_typeaheadDebounceInterval","_scrollStrategyFactory","_panelDoneAnimating","_initKeyManager","_resetOptions","newAriaLabelledby","_getTriggerAriaLabelledby","_highlightCorrectOption","_isRtl","_handleOpenKeydown","_handleClosedKeydown","isOpenKey","isTyping","previouslySelectedOption","hasDeselectedOptions","previouslyFocusedIndex","overlayDir","_positioningSettled","setInactiveStyles","correspondingOption","withAllowedModifierKeys","_scrollOptionIntoView","changedOrDestroyed","_onSelect","wasSelected","sortComparator","_getChangeEvent","MatSelect","_scrollTop","_offsetY","_positions","selectedIndex","scrollBuffer","maxScroll","_getItemHeight","_triggerRect","_calculateOverlayPosition","_calculateOverlayOffsetX","overlayRect","viewportSize","paddingWidth","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_PADDING_X","optionOffsetFromPanelTop","optionHeightAdjustment","maxOptionsDisplayed","_getItemCount","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","selectedOptionOffset","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","ɵMatSelect_BaseFactory","_onAttached","MatSelectModule","getPlakaSorgula","getFiloPlakaSorgula","postsmsGonder","postcheckOnay","postPlakaRandevuIptal","donus","getDomainKisitliBayiGetir","LastikAramaService","SimpleSnackBar_div_2_Template","MatSnackBarContainer_ng_template_1_Template","MAT_SNACK_BAR_DATA","MatSnackBarConfig","politeness","announcementMessage","MAX_TIMEOUT","MatSnackBarRef","containerInstance","_afterDismissed","_onAction","_dismissedByAction","_onExit","_finishDismiss","_durationTimeoutId","dismissWithAction","dismissedByAction","_onEnter","SimpleSnackBar","snackBarRef","hasAction","matSnackBarAnimations","snackBarState","MatSnackBarContainer","snackBarConfig","_announceDelay","_onAnnounce","_animationState","_assertNotAttached","_applySnackBarClasses","FIREFOX","_completeExit","onEnter","_screenReaderAnnounce","_announceTimeoutId","panelClasses","cssClass","inertElement","liveElement","onAnimationEnd","MatSnackBarModule","MAT_SNACK_BAR_DEFAULT_OPTIONS","MatSnackBar","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","simpleSnackBarComponent","snackBarContainerComponent","handsetCssClass","_openedSnackBarRef","containerRef","userConfig","_attachSnackBarContainer","_animateSnackBar","afterDismissed","_dismissAfter","ezafeNumSuffix","InlineSVGConfig","SVGCacheService","_appBase","_http","setBaseUrl","SVGCacheService_1","_cache","_inProgressReqs","getSVG","absUrl","getAbsoluteUrl","_cloneSVG","finalize","svgEl","_baseUrl","baseUrl","getBaseHrefFromDOM","InlineSVGService","_ranScripts","insertEl","replaceContents","prepend","_prevSVG","evalScripts","evalMode","scripts","scriptsToEval","scriptType","InlineSVGComponent","_inlineSVGService","_el","_updateContent","innerEls","InlineSVGDirective","_resolver","_svgCache","injectComponent","cacheSVG","forceEvalStyles","onSVGInserted","onSVGFailed","_supportsSVG","SVGRect","_fail","_isValidPlatform","_isSSRDisabled","_insertSVG","inlineSVG","_prevUrl","symbolId","elSvg","elSvgUse","_processSvg","removeSVGAttributes","setSVGAttributes","onSVGLoaded","_insertEl","_svgComp","fallbackImgUrl","elImg","clientOnly","InlineSVGModule","InlineSVGModule_1","SwitchMapOperator","SwitchMapSubscriber","gopd","nonEnumerable","nonWritable","nonConfigurable","atob","MatDivider","_vertical","_inset","inset","MatDividerModule","fromString","fromHexString","nameToHex","fromRgbaString","hexRe","shortHexRe","rgbRe","rgbaRe","fromHSB","HSBtoRGB","padHex","toHexString","toRgbaString","fractionDigits","toHSB","RGBtoHSB","rc","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","rgba","brighter","darker","strData","out_row_1","out_column_1","out_position_1","isNewline","insideQuotedField","_loop_1","previousChar","currentChar","nextChar","ensureDataExists","isSafari","isIE","isEdge","isFirefox","isIOS","CsvUtils","isBrowserIE","isBrowserEdge","StyleMedia","isBrowserSafari","anyWindow","safari","pushNotification","isBrowserChrome","chrome","webstore","runtime","vendor","isBrowserFirefox","InstallTrigger","BrowserUtils","isIOSUserAgent","getMaxDivHeight","testUpTo","test_1","getScrollbarWidth","msOverflowStyle","hasOverflowScrolling","prefixes","overflowScrolling","prefixes_1","getBodyWidth","getBodyHeight","makeNull","exists","allowEmptyString","missing","toStringOrNull","values_1","GenericUtils","missingOrEmpty","referenceCompare","jsonEquals","val2","defaultComparator","accentedCompare","valueAMissing","valueBMissing","doQuickCompare","collectionAsArray","firstMatchingItem","HTML_ESCAPES","camelCaseToHyphen","hyphenToCamelCase","StringUtils","utf8_encode","stringFromCharCode","createByte","codePoint","encodeCodePoint","checkScalarValue","codePoints","ucs2decode","byteString","capitalise","toEscape","camelCaseToHumanText","addCssClass","cssClasses","removeCssClass","newClassName","addOrRemoveCssClass","addOrRemove","containsClass","onlyClass","startsWithClass","endsWithClass","setDisplayed","displayed","getElementSize","clearElement","removeFromParent","loadTemplate","tempDiv","setDomChildOrder","eContainer","orderedChildren","correctCellAtIndex","actualCellAtIndex","setFixedWidth","formatSize","setFixedHeight","isNodeOrElement","DomUtils","radioCssClass","elementClass","otherElementClass","setVisible","isElementChildOfClass","maxNest","getInnerHeight","getInnerWidth","getAbsoluteHeight","getAbsoluteWidth","cssSelector","appendHtml","htmlTemplate","lastChild","insertAdjacentHTML","getElementAttribute","eChild","eChildBefore","insertAdjacentElement","insertTemplateWithDomOrder","prependDC","addStylesToElement","eElement","keyCamelCase","isHorizontalScrollShowing","isVerticalScrollShowing","setElementWidth","setElementHeight","copyNodeList","iterateNamedNodeMap","setCheckboxState","eCheckbox","getProperty","copyPropertyIfPresent","ObjectUtils","cloneObject","deepCloneObject","copyPropertiesIfPresent","getAllKeysInObjects","allValues","mergeDeep","copyUndefined","missingOrEmptyObject","expression","objectToRead","objectToUpdate","deepFreeze","getValueUsingField","fieldContainsDots","currentObject","GeneralUtils","getNameOfClass","theClass","funcAsString","findLineByLeastSquares","maxDecimals","sum_x","sum_y","sum_xy","sum_xx","cssStyleObjectToMarkup","stylesToUse","resParts","styleKey","styleValue","styleKeyDashed","eMessage","eBox","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","gui","getGui","firstExistingValue","areEqual","removeFromArray","removeAllFromArray","toRemove","insertIntoArray","ArrayUtils","anyExists","existsAndNotEmpty","compareArrays","array1","array2","shallowCompare","arr1","sortNumerically","removeRepeatsFromArray","insertArrayIntoArray","moveInArray","objectsToMove","arrayOfArrays","pushAll","toStrings","forEachSnapshotFirst","totalStringSize","asString","formatNumberCommas","NumberUtils","createArrayOfNumbers","getMaxSafeInteger","cleanNumber","decToHex","bytes","formatNumberTwoDecimalPlacesAndCommas","serialiseDate","includeTime","serialised","parseDateTimeFromString","timeStr","setMinutes","setSeconds","tags","DateUtils","AG_GRID_STOP_PROPAGATION","PASSIVE_EVENTS","OUTSIDE_ANGULAR_EVENTS","supports","isEventSupported","submit","load","abort","getTarget","createEventPath","pointer","getEventPath","eventNoType","deepPath","__agGridEventPath","EventUtils","stopPropagationForAgGrid","isStopPropagationForAgGrid","getCellCompForEvent","gridOptionsWrapper","sourceElement","renderedCell","getDomData","addChangeListener","isElementInEventPath","addAgGridEventPath","addSafePassiveEventListener","addEventListenerOutsideAngular","FUNCTION_STRIP_COMMENTS","FUNCTION_ARGUMENT_NAMES","doOnceFlags","executeAfter","immediate","callNow","FunctionUtils","doOnce","getFunctionParameters","fnStr","executeInAWhile","executeNextVMTurn","fns","composed","callIfPresent","fuzzySuggestions","allSuggestions","hideIrrelevant","weighted","string_weighted_distances","string_distances","thisSuggestions","relevance","suggestion","get_bigrams","str1","str2","pairs1","pairs2","hit_count","len1","FuzzyMatchUtils","fuzzyCheckStrings","inputValues","validValues","fuzzyMatches","invalidInputs","validValue","invalidInput","iconNameClassMap","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","check","linked","unlinked","colorPicker","groupLoading","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","smallDown","smallLeft","smallRight","smallUp","sortAscending","sortDescending","sortUnSort","createIconNoSpan","forceCreate","userProvidedIcon","getColDef","optionsIcons","rendererResult","IconUtils","createIcon","iconContents","eResult","Constants","STEP_EVERYTHING","STEP_FILTER","STEP_SORT","STEP_MAP","STEP_AGGREGATE","STEP_PIVOT","ROW_BUFFER_SIZE","LAYOUT_INTERVAL","BATCH_WAIT_MILLIS","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","EXPORT_TYPE_EXCEL","EXPORT_TYPE_CSV","KEY_BACKSPACE","KEY_TAB","KEY_NEW_LINE","KEY_ENTER","KEY_SHIFT","KEY_ESCAPE","KEY_SPACE","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_DELETE","KEY_A","KEY_C","KEY_V","KEY_D","KEY_Z","KEY_Y","KEY_F2","KEY_PAGE_UP","KEY_PAGE_DOWN","KEY_PAGE_HOME","KEY_PAGE_END","ROW_MODEL_TYPE_INFINITE","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_CLIENT_SIDE","ROW_MODEL_TYPE_SERVER_SIDE","DEPRECATED_ROW_MODEL_TYPE_NORMAL","ALWAYS","ONLY_WHEN_GROUPING","PINNED_TOP","PINNED_BOTTOM","DOM_LAYOUT_NORMAL","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","GROUP_AUTO_COLUMN_ID","SOURCE_PASTE","PINNED_RIGHT","PINNED_LEFT","SORT_ASC","SORT_DESC","isKeyPressed","keyToCheck","PromiseStatus","KeyboardUtils","isCharacterKey","isEventFromPrintableCharacter","pressedChar","charCode","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","isNumpadDelWithNumlockOnForEdgeOrIe","isUserSuppressingKeyboardEvent","keyboardEvent","rowNode","editing","gridOptionsFunc","getSuppressKeyboardEventFunc","colDefFunc","getApi","getColumnApi","MapUtils","MouseUtils","normalizeWheel","sX","sY","pX","pY","detail","HORIZONTAL_AXIS","spinX","spinY","pixelX","pixelY","isLeftClick","mouseEvent","areEventsNear","e1","e2","pixelCount","diffX","diffY","RowNodeUtils","sortRowNodesByOrder","rowNodes","rowNodeOrder","nodeA","nodeB","positionA","positionB","aHasIndex","bHasIndex","__objectId","atLeastOneOutOfOrder","traverseNodesWithKey","keyParts","recursiveSearchNodes","currentNodes","hasChildren","childrenAfterGroup","SetUtils","convertToSet","NumberSequence","valToReturn","peek","IN_PROGRESS","resolution","waiters","onReject","promises","remainingToResolve","combinedValues","ifNotResolvedValue","ifResolved","waiter","print","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","idToTry","Context","logger","beanWrappers","componentsMappedByName","beanClasses","contextParams","setupComponents","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","componentMeta","classUpperCase","componentName","componentClass","createComponentFromElement","afterPreCreateCallback","paramsMap","componentParams","newComponent","wireBean","bean","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","createdBeanNames","Bean","metaData","beanName","forEachMetaDataInHierarchy","agClassAttributes","otherBean","lookupBeanInstance","wireParams","initParams","getBeanName","constructorString","parameters","beansList","otherBeanName","wiringBean","lifeCycleMethod","getBean","PreConstruct","getOrCreateProps","preConstructMethods","PostConstruct","postConstructMethods","PreDestroy","preDestroyMethods","classConstructor","Autowired","propertyKey","autowiredFunc","Optional","classPrototype","methodOrAttributeName","Qualifier","ModuleNames","EventService","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","firedEvents","EventService_1","setBeans","loggerFactory","useAsyncEvents","addGlobalListener","getListeners","listenerMap","addModalPriorityEventListener","PRIORITY","removeGlobalListener","dispatchToListeners","dispatchEventOnce","processEventListeners","dispatchAsync","flushAsyncQueue","queueCopy","ModuleRegistry","moduleBased","modulesMap","moduleName","registerModules","assertRegistered","isRegistered","warningMessage","getRegisteredModules","isPackageBased","__decorate$1","Column","userProvidedColDef","moving","menuVisible","filterActive","eventService","rowGroupActive","pivotActive","aggregationActive","setColDef","getUserProvidedColDef","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","setPinned","getMinColWidth","getMaxColWidth","actualWidth","columnUtils","calculateColInitialWidth","suppressDotNotation","isSuppressFieldDotNotation","tooltipFieldContainsDots","isEmptyGroup","isRowGroupDisplayed","getUniqueId","getId","isPrimary","isFilterAllowed","isFieldContainsDots","isTooltipFieldContainsDots","colDefAny","warnOnce","RowGroupingModule","RichSelectModule","DateTimeCellEditorModule","isTreeData","floatingCellRenderer","floatingRendererFramework","floatingRendererParams","floatingValueFormatter","cellFormatter","headerCellTemplate","headerCellRenderer","volatile","suppressToolPanel","createIsColumnFuncParams","isSuppressNavigable","userFunc","isCellEditable","isEnableGroupEdit","isColumnFunc","isRowDrag","isDndSource","isCellCheckboxSelection","isSuppressPaste","isResizable","setMoving","createColumnEvent","EVENT_MOVING_CHANGED","gridApi","isMoving","getSort","setSort","EVENT_SORT_CHANGED","setMenuVisible","EVENT_MENU_VISIBLE_CHANGED","isMenuVisible","isSortAscending","isSortDescending","isSortNone","isSorting","getSortedAt","setSortedAt","setAggFunc","getAggFunc","getLeft","getOldLeft","oldLeft","getRight","setLeft","EVENT_LEFT_CHANGED","isFilterActive","setFilterActive","additionalEventAttributes","EVENT_FILTER_ACTIVE_CHANGED","filterChangedEvent","EVENT_FILTER_CHANGED","setFirstRightPinned","firstRightPinned","EVENT_FIRST_RIGHT_PINNED_CHANGED","setLastLeftPinned","lastLeftPinned","EVENT_LAST_LEFT_PINNED_CHANGED","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","EVENT_VISIBLE_CHANGED","getColumnGroupShow","getColId","getDefinition","getActualWidth","createBaseColDefParams","getColSpan","getRowSpan","setActualWidth","EVENT_WIDTH_CHANGED","isGreaterThanMax","getMinWidth","getMaxWidth","getFlex","setFlex","setMinimum","setRowGroupActive","EVENT_ROW_GROUP_CHANGED","isRowGroupActive","setPivotActive","EVENT_PIVOT_CHANGED","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","EVENT_VALUE_CHANGED","getMenuTabs","defaultValues","isLockPosition","isLockVisible","isLockPinned","ColumnGroup","originalColumnGroup","displayedChildren","localEventService","createUniqueId","allLeafColumns","getOriginalColumnGroup","getLeafColumns","checkLeft","isEnableRtl","lastChildLeft","firstChildLeft","createAgEvent","getGroupId","getInstanceId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addChild","getDisplayedChildren","addLeafColumns","getDisplayedLeafColumns","addDisplayedLeafColumns","getColGroupDef","isPadding","setExpanded","leafColumns","calculateDisplayedColumns","topLevelGroup","abstractColumn","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","EVENT_DISPLAYED_CHILDREN_CHANGED","HEADER_GROUP_PADDING","OriginalColumnGroup","colGroupDef","expandable","EVENT_EXPANDED_CHANGED","setChildren","setupExpandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildren","headerGroupShow","EVENT_EXPANDABLE_CHANGED","DefaultColumnTypes","numericColumn","rightAligned","__decorate$3","ColumnFactory","createColumnTree","primaryColumns","existingColumns","columnKeyCreator","existingColsCopy","unbalancedTree","recursivelyCreateColumns","treeDept","findMaxDept","columnTree","balanceColumnTree","depthFirstOriginalTreeSearch","createForAutoGroups","autoGroupCols","gridBalancedTree","autoColBalancedTree","fakeTreeItem","createAutoGroupTreeItem","balancedColumnTree","nextChild","findDepth","autoGroup","dept","currentDept","columnDept","originalGroup","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","treeChildren","maxDeptThisLevel","newDept","newGroupOrColumn","isColumnGroup","createColumnGroup","createColumn","getDefaultColGroupDef","checkForDeprecatedItems","colDefMerged","mergeColDefs","findExistingColumn","oldColDef","getDefaultColDef","assignColumnTypes","typeKeys","allColumnTypes","getColumnTypes","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","displayName","abstractColDef","Events","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_ROW_GROUP_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_RESIZED","EVENT_DISPLAYED_COLUMNS_CHANGED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_CHART_CREATED","EVENT_CHART_RANGE_SELECTION_CHANGED","EVENT_CHART_OPTIONS_CHANGED","EVENT_CHART_DESTROYED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_ROW_SELECTED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_CHECKBOX_CHANGED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_ANIMATION_QUEUE_EMPTY","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_POPUP_TO_FRONT","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","EVENT_KEYBOARD_FOCUS","EVENT_MOUSE_FOCUS","GroupInstanceIdCreator","existingIds","getInstanceIdForKey","lastResult","__decorate$4","ColumnController","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedLeftColumns","displayedRightColumns","displayedCenterColumns","allDisplayedColumns","allDisplayedVirtualColumns","allDisplayedCenterVirtualColumns","rowGroupColumns","valueColumns","pivotColumns","ready","autoGroupsNeedBuilding","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","flexActive","isSuppressColumnVirtualisation","isPivotMode","isPivotSettingAllowed","usingTreeData","setColumnDefs","colsPreviouslyExisted","expire","oldPrimaryColumns","balancedTreeResult","columnFactory","primaryColumnTree","getColumnsFromTree","extractRowGroupColumns","extractPivotColumns","createValueColumns","updateGridColumns","updateDisplayedColumns","checkDisplayedVirtualColumns","isImmutableColumns","resetColumnState","getDisplayedCenterColumns","isAutoRowHeightActive","autoRowHeightColumns","getAllAutoRowHeightCols","setVirtualViewportLeftAndRight","viewportLeft","viewportRight","getDisplayedColumnsStartingAt","currentColumn","getDisplayedColAfter","hashBefore","updateVirtualSets","setVirtualViewportPosition","setPivotMode","getSecondaryPivotColumn","pivotKeys","valueColKey","secondaryColumns","valueColumnToFind","getPrimaryColumn","foundColumn","thisPivotKeys","pivotValueColumn","setFirstRightAndLastLeftPinned","lastLeft","firstRight","gridColumns","autoSizeColumns","skipHeader","animationFrameService","flushAllFrames","columnsAutosized","changesThisTimeAround","isSkipHeaderOnAutoSize","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","newWidth","normaliseColumnWidth","autoSizeColumn","autoSizeAllColumns","getAllDisplayedColumns","rootColumns","recursiveFindColumns","getAllDisplayedColumnGroups","displayedLeftColumnTree","displayedRightColumnTree","displayedCentreColumnTree","getPrimaryColumnTree","getHeaderRowCount","getLeftDisplayedColumnGroups","getRightDisplayedColumnGroups","getCenterDisplayedColumnGroups","getDisplayedColumnGroups","isColumnDisplayed","getAllDisplayedVirtualColumns","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","displayedColumns","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","filterPasses","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","colForFilter","getAllDisplayedCenterVirtualColumnsForRow","isColumnInViewport","columnLeft","columnRight","leftBounds","rightBounds","getPinnedLeftContainerWidth","getWidthOfColsInList","getPinnedRightContainerWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setRowGroupColumns","colKeys","setPrimaryColumnList","isSuppressMakeColumnVisibleAfterUnGroup","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotColumns","addPivotColumn","removePivotColumns","removePivotColumn","setValueColumns","defaultAggFunc","aggFuncService","getDefaultAggFunc","addValueColumns","addValueColumn","colKey","removeValueColumn","removeValueColumns","getPrimaryOrGridColumn","getGridColumn","setColumnWidths","sets","columnWidth","ratios","getColResizeDefault","otherCol","widthDiff","otherColWidth","resizeColumnSets","refreshFlexedColumns","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","resizeSets","changedCols","allCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatioTotal","pixelsToDistribute","ratioScale","colNewWidth","atLeastOneColChanged","setLeftValues","updateBodyWidths","setColumnAggFunc","moveRowGroupColumn","moveColumns","columnsToMoveKeys","columnAnimationService","columnsToMove","getGridColumns","doesMovePassRules","proposedColumnOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","foundNonLocked","rulePassed","allColumnsCopy","columnGroup","newIndexes","newColIndex","moveColumn","moveColumnByIndex","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","getValueColumns","getPivotColumns","getRowGroupColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllPrimaryColumns","getSecondaryColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","getAllGridColumns","isRowGroupEmpty","setColumnVisible","setColumnsVisible","setColumnPinned","setColumnsPinned","actualPinned","getDomLayout","updatedColumns","event_6","getDisplayedColBefore","oldIndex","getDisplayedGroupAfter","requiredLevel","groupPointer","isPinningLeft","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","groupAutoColumns","createStateItemFromColumn","getColumnState","primaryColumnState","columnStateList","orderColumnStateList","gridColumnIds","itemA","itemB","suppressEverythingEvent","columnStates","letRowGroupIndex","letPivotIndex","stateItem","setColumnState","columnStateBefore","columnsWithNoState","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","getAutoColumn","syncColumnWithStateItem","syncColumnWithNoState","sortColumnListUsingIndexes","autoCol","orderOfColIds_1","colA","colB","putFixedColumnsFirst","raiseColumnEvents","isSuppressSetColumnStateEvents","columnStateAfter","raiseEventWithAllColumns","idMapper","getChangedColumns","changedPredicate","changedColumns","columnStateBeforeMap","colStateBefore","cs","raiseColumnPinnedEvent","raiseColumnVisibleEvent","raiseColumnResizeEvent","raiseColumnMovedEvent","movedColumns","_loop_3","movedColumn","this_1","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","getColumn","columnList","columnsMatch","groupCol","columnMatches","colDefMatches","idMatches","getDisplayNameForColumn","includeAggFunc","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForOriginalColumnGroup","getDisplayNameForColumnGroup","expressionService","isSuppressAggFuncInHeader","aggFuncFound","measureActive","aggregationPresent","aggFuncString","getLocaleTextFunc","getColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","isReady","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getValueFunc","removedCols","existingCols","newPrimaryCols","newCols","indexA","indexB","resetColumnGroupState","stateItems","groupState","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","updateGroupsAndDisplayedColumns","setColumnGroupOpened","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","getGroupDisplayColumns","columnsForDisplay","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","colDefs","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","getProcessSecondaryColDefFunc","groupCallback","getProcessSecondaryColGroupDefFunc","searchForColDefs","colDefs2","gridColsArePrimary","lastPrimaryOrder","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","setupQuickFilterColumns","clearDisplayedColumns","noColsFound","oldColsOrdered","newColsOrdered","newGridColumns","newCol","leafCol","presentInNewGriColumns","noYetInSiblings","isPrimaryColumnGroupsPresent","locked","unlocked","createGroupAutoColumnsIfNeeded","displayedLeftHeaderRows","displayedRightHeaderRows","displayedCentreHeaderRows","updateOpenClosedVisibilityInColumnGroups","updateDisplayedColumnsFromTrees","addToDisplayedColumns","setupAllDisplayedColumns","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","left_1","left_2","displayedColumnTree","depthFirstDisplayedColumnTreeSearch","updateDisplayedCenterVirtualColumns","filterOutColumnsWithinViewport","getVirtualHeaderGroupRow","updateDisplayedVirtualGroups","virtualColIds","testGroup","returnValue","updatedFlexViewportWidth","silent","flexViewportWidth","knownWidthColumns","flexingColumns","spaceForFlexingColumns","flexingColumnSizes","totalFlex","widthByFlexRule","constrainedWidth","remainingSpace","fireResizedEventForColumns","sizeColumnsToFit","gridWidth","colsToSpread","colsToNotSpread","colsToFireEventFor","finishedResizing","moveToNotSpread","availablePixels","pixelsForLastCol","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","getGroupAutoColumns","groupFullWidthRow","isGroupUseEntireRow","suppressAutoColumn","isPivotSuppressAutoColumn","isGroupSuppressAutoColumn","isGroupSuppressRow","newAutoGroupCols","autoGroupColService","createAutoGroupColumns","autoColsEqual","colsA","colsB","getGridBalancedTree","hasFloatingFilters","__decorate$5","ColumnUtils","optionsWrapper","getColWidth","getOriginalPathForColumn","originalBalancedTree","recursePath","tree","__decorate$6","DisplayedGroupCreator","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","setupParentsIntoColumns","displayedGroups","columnsOrGroups","columnOrGroup","columnsOrGroup","PropertyKeys","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","ALL_PROPERTIES","FUNCTION_PROPERTIES","FRAMEWORK_PROPERTIES","ColDefUtil","__spreadArrays$1","SideBarDefParser","toParse","toolPanels","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","toAdd","labelDefault","labelKey","toolPanel","filters","__decorate$7","__param$3","__spreadArrays$2","isTrue","GridOptionsWrapper","propertyEventService","domDataKey","layoutElements","GridOptionsWrapper_1","agWire","checkForDeprecated","checkForViolations","PROP_DOM_LAYOUT","updateLayoutClassesListener","checkGridOptionsProperties","checkColumnDefProperties","globalEventHandler","isGroupSelectsChildren","isSuppressParentsInRowNodes","isRowSelectionMulti","isRowModelServerSide","isGroupRemoveSingleChildren","isGroupHideOpenParents","isEnableRangeSelection","RangeSelectionModule","isEnableRangeHandle","isEnableFillHandle","warnOfDeprecaredIcon","updateLayoutClasses","userProperties","validProperties","checkProperties","ComponentUtil","getCallbackForEvent","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","domData","setDomData","isRowSelection","isRowDeselection","isRowMultiSelectWithClick","isPivotTotals","getPivotColumnGroupTotals","getPivotRowTotals","isRowModelInfinite","isRowModelViewport","isRowModelDefault","isFullRowEdit","isSuppressFocusAfterRefresh","isSuppressBrowserResizeObserver","isSuppressMaintainUnsortedOrder","isSuppressClearOnFillReduction","isShowToolPanel","getSideBar","isSuppressTouch","isSuppressRowTransform","isAllowDragFromColumnsToolPanel","isEnableCellChangeFlash","isSuppressRowHoverHighlight","isGroupSelectsFiltered","isGroupMultiAutoColumn","isGroupRemoveLowestSingleChildren","isGroupIncludeFooter","isGroupIncludeTotalFooter","isGroupSuppressBlankHeader","isSuppressRowClickSelection","isSuppressCellSelection","isSuppressMultiSort","isMultiSortKeyCtrl","isSuppressDragLeaveHidesColumns","isSuppressScrollOnNewData","isRowDragManaged","isSuppressRowDrag","isSuppressMoveWhenRowDragging","isEnableMultiRowDragging","isSuppressHorizontalScroll","isSuppressMaxRenderedRowRestriction","isExcludeChildrenWhenTreeDataFiltering","isAlwaysShowVerticalScroll","isSuppressLoadingOverlay","isSuppressNoRowsOverlay","getPinnedTopRowData","getPinnedBottomRowData","isFunctionsPassive","isSuppressTabbing","isSuppressChangeDetection","isSuppressAnimationFrame","isCacheQuickFilter","isUnSortIcon","isSuppressMenuHide","isEnterMovesDownAfterEdit","isEnterMovesDown","isUndoRedoCellEditing","getUndoRedoCellEditingLimit","getRowStyleFunc","getRowClassFunc","getCreateChartContainerFunc","getPopupParent","getBlockLoadDebounceMillis","getPostProcessPopupFunc","getDoesDataFlowerFunc","getPaginationNumberFormatterFunc","getChildCountFunc","getDefaultGroupSortComparator","getIsFullWidthCellFunc","getFullWidthCellRendererParams","isEmbedFullWidthRows","getBusinessKeyForNodeFunc","isImmutableData","isEnsureDomOrder","isEnableCharts","GridChartsModule","isSingleClickEdit","isSuppressClickEdit","isStopEditingWhenGridLosesFocus","getGroupDefaultExpanded","getMaxConcurrentDatasourceRequests","getMaxBlocksInCache","getCacheOverflowSize","getPaginationPageSize","isPaginateChildRows","getCacheBlockSize","getInfiniteInitialRowCount","isPurgeClosedRowNodes","isSuppressPaginationPanel","getRowData","getAutoGroupColumnDef","getRowGroupPanelShow","getPivotPanelShow","isAngularCompileRows","isAngularCompileFilters","isAngularCompileHeaders","isDebug","getColumnDefs","getDatasource","getViewportDatasource","getServerSideDatasource","isAccentedSort","isEnableBrowserTooltips","isEnableCellExpressions","isSuppressMiddleClickScrolls","isPreventDefaultOnContextMenu","isSuppressPreventDefaultOnMouseWheel","isSuppressContextMenu","isAllowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","isCopyHeadersToClipboard","isSuppressClipboardPaste","isSuppressLastEmptyLineOnPaste","isPagination","isSuppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","getAsyncTransactionWaitMillis","isSuppressMovableColumns","isAnimateRows","isSuppressColumnMoveAnimation","isSuppressAggAtRootLevel","getFillOperation","isSuppressMultiRangeSelection","isPaginationAutoPageSize","isRememberGroupStateWhenNewData","getAggFuncs","getSortingOrder","getAlignedGrids","isMasterDetail","MasterDetailModule","isKeepDetailRows","getKeepDetailRowsCount","getIsRowMasterFunc","getIsRowSelectableFunc","getGroupRowRendererParams","getOverlayLoadingTemplate","getOverlayNoRowsTemplate","isSuppressAutoSize","isEnableCellTextSelection","isFunctionsReadOnly","isFloatingFilter","isEnableCellTextSelect","isEnableOldSetFilterModel","getDefaultExportParams","isSuppressCsvExport","isAllowShowChangeAfterFilter","allowShowChangeAfterFilter","isSuppressExcelExport","getNodeChildDetailsFunc","getDataPathFunc","getIsServerSideGroupFunc","getServerSideGroupKeyFunc","getGroupRowAggNodesFunc","getContextMenuItemsFunc","getMainMenuItemsFunc","getChartToolbarItemsFunc","getRowNodeIdFunc","getNavigateToNextCellFunc","getTabToNextCellFunc","isValueCache","isValueCacheNeverExpires","isDeltaSort","isAggregateOnlyChangedColumns","getSendToClipboardFunc","getProcessRowPostCreateFunc","getProcessCellForClipboardFunc","getProcessHeaderForClipboardFunc","getProcessCellFromClipboardFunc","getViewportRowModelPageSize","getViewportRowModelBufferSize","isServerSideSortingAlwaysResets","getPostSortFunc","getProcessChartOptionsFunc","getClipboardDeliminator","gridOptionsNoType","addLayoutElement","domLayoutAutoHeight","domLayoutPrint","domLayoutNormal","getAutoSizePadding","getHeaderHeight","getFromTheme","getFloatingFiltersHeight","getGroupHeaderHeight","getPivotHeaderHeight","getPivotGroupHeaderHeight","getTooltipShowDelay","isTooltipMouseTrack","MIN_COL_WIDTH","measuredMin","getRowBuffer","getRowBufferInPixels","getRowHeightAsNumber","suppressUnSort","suppressDescSort","groupAggFields","groupHidePivotColumns","groupKeys","onRowDeselected","rowDeselected","rowsAlreadyGrouped","groupAggFunction","paginationInitialRowCount","infinitePageSize","maxPagesInCache","paginationOverflowSize","floatingTopRowData","floatingBottomRowData","getHeaderCellTemplate","layoutInterval","oldToolPanelProperties","toolPanelColumnsCompProps","translation","sideBarDef","columnsDef","enableStatusBar","alwaysShowStatusBar","checkRenamedProperty","oldProp","treeDataViolations","callbackMethodName","getDefaultRowHeight","getRowHeightForNode","allowEstimate","estimated","defaultRowHeight","minRowHeight","columnController","autoHeightCalculator","getPreferredHeightForRow","isDynamicRowHeight","getListItemHeight","chartMenuPanelWidth","sassVariableName","getTheme","getSassVariable","PROP_HEADER_HEIGHT","PROP_GROUP_REMOVE_SINGLE_CHILDREN","PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN","PROP_PIVOT_HEADER_HEIGHT","PROP_SUPPRESS_CLIPBOARD_PASTE","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_FLOATING_FILTERS_HEIGHT","PROP_SUPPRESS_ROW_CLICK_SELECTION","PROP_SUPPRESS_ROW_DRAG","PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG","PROP_POPUP_PARENT","__spreadArrays$3","getEventCallbacks","EVENT_CALLBACKS","EVENTS","skipEventDeprecationCheck","pGridOptions","keyExists","toBoolean","setEnableCellTextSelection","setQuickFilter","setRowData","setPinnedTopRowData","setPinnedBottomRowData","setDatasource","setHeaderHeight","paginationSetPageSize","setGroupRemoveSingleChildren","setSuppressRowDrag","setSuppressMoveWhenRowDragging","setSuppressRowClickSelection","setGridAutoHeight","setSuppressClipboardPaste","setSideBar","__decorate$8","BeanStub","destroyFunctions","getFrameworkOverrides","EVENT_DESTROYED","dispatchEventAsync","addDestroyableEventListener","destroyFunc","addDestroyFunc","wireDependentBean","compIdSequence","childComponents","annotatedEventListeners","compId","setTemplate","getCompId","createChildComponentsFromTags","childNodeList","childNode","childComp","copyAttributesFromNode","addItems","swapComponentForNode","eComponent","swapInComponentForQuerySelectors","thisNoType","iterateOverQuerySelectors","thisPrototype","__agComponentMetaData","currentProtoName","querySelectors","eGui","setTemplateFromElement","__agComponent","addAnnotatedEventListeners","wireQuerySelectors","createChildComponentsPreConstruct","resultOfQuery","removeAnnotatedEventListeners","listenerMethods","getAgComponentMetaData","eventListener","thisProto","getFocusableElement","setParentComponent","parentComponent","getParentComponent","setGui","queryForHtmlElement","queryForHtmlInputElement","childComponent","addFeature","feature","isDisplayed","EVENT_DISPLAYED_CHANGED","addGuiEventListener","getRefElement","refName","__decorate$9","__extends$1","PopupComponent","isPopup","parentComp","RefSelector","querySelectorFunc","addToObjectProps","listenerFunc","instanceName","getOrCreateProps$1","ConditionPosition","__extends$2","TextCellEditor","TEMPLATE","startValue","eInput","cellStartedEdit","focusAfterAttached","keyPress","charPress","getStartValue","highlightAllOnFocus","afterGuiAttached","inputEl","getInputElement","setSelectionRange","focusIn","focusEl","focusOut","parseValue","useFormatter","formatValue","__decorate$a","DateCompWrapper","userComponentFactory","dateComponentParams","eParent","alive","newDateComponent","dateComp","tempValue","OptionsFactory","customFilterOptions","filterOptions","mapCustomOptions","selectDefaultItem","getFilterOptions","filterOption","displayKey","defaultOption","firstFilterOption","getDefaultOption","getCustomOption","__extends$3","__decorate$b","ProvidedFilter","applyActive","hidePopup","appliedModel","onFilterChanged","providedFilterParams","filterChangedCallback","postConstruct","templateString","getCssIdentifier","createBodyTemplate","setParams","resetUiToDefaults","updateUiVisibility","setupOnBtApplyDebounce","newRowsAction","NEW_ROWS_ACTION_KEEP","newRowsActionKeep","NEW_ROWS_ACTION_CLEAR","rowModel","isUseApplyButton","createButtonPanel","clearButton","resetButton","eButtonsPanel_1","addButton","onBtClear","onBtReset","onBtApply","eFilterBodyWrapper","getDefaultDebounceMs","debounceMs","getDebounceMs","onBtApplyDebounce","getModel","setModel","setModelIntoUi","applyModel","onUiChanged","oldAppliedModel","getModelFromUi","areModelsEqual","afterFloatingFilter","afterDataChange","closeOnApply","applyButton","onNewRowsLoaded","isNewRowsActionKeep","filterModifiedCallback","debounceDefault","__extends$4","__decorate$c","ComponentSource","DEFAULT_TRANSLATIONS","loadingOoo","notEqual","lessThan","greaterThan","lessThanOrEqual","greaterThanOrEqual","filterOoo","inRangeStart","inRangeEnd","notContains","searchOoo","applyFilter","clearFilter","andCondition","orCondition","SimpleFilter","showValueFrom","doesFilterHaveHiddenInput","showValueTo","IN_RANGE","onFloatingFilterChanged","setTypeFromFloatingFilter","setValueFromFloatingFilter","eType1","eType2","optionsFactory","eJoinOperatorAnd","isConditionUiComplete","One","isAllowTwoConditions","Two","filterType","getFilterType","getJoinOperator","condition1","createCondition","condition2","getCondition1Type","getCondition2Type","eJoinOperatorOr","aIsSimple","bIsSimple","areSimpleModelsEqual","aCombined","bCombined","combinedModel","orChecked","setConditionIntoUi","simpleModel","doesFilterPass","firstResult","individualConditionPasses","secondResult","getDefaultFilterOptions","allowTwoConditions","suppressAndOrCondition","putOptionsIntoDropdown","addChangedListeners","createOption","addOption","setDisabled","createValueTemplate","firstConditionComplete","showSecondFilter","eCondition2Body","eJoinOperatorPanel","uniqueGroupId","setName","setLabel","toTranslate","defaultTranslation","onValueChange","customFilterOption","hideFilterInput","EQUALS","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","__extends$5","ScalarFilter","scalarFilterParams","checkDeprecatedParams","nullComparator","includeBlanksInEquals","includeBlanksInLessThan","includeBlanksInGreaterThan","gridValue","filterModel","cellValue","mapRangeFromModel","filterValueTo","compareResult","compareToResult","inRangeInclusive","__extends$6","__decorate$d","DateFilter","dateFrom","dateTo","dateCondition1FromComp","dateCondition1ToComp","dateCondition2FromComp","dateCondition2ToComp","getFromToComponents","compTo","dateFilterParams","filterDate","createDateComponents","onDateChanged","eCondition1PanelFrom","eCondition1PanelTo","eCondition2PanelFrom","eCondition2PanelTo","DEFAULT_FILTER_OPTIONS","aSimple","bSimple","FILTER_TYPE","resetPlaceholder","condition1Type","condition2Type","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","getActiveTouch","touchList","touchEvent","touchStartCopy","EVENT_LONG_TAP","EVENT_TAP","checkForDoubleTap","lastTapTime","DOUBLE_TAP_MILLIS","EVENT_DOUBLE_TAP","__extends$7","__decorate$e","HeaderComp","lastMovingChanged","setupTap","setupIcons","setupMenu","setupSort","setupFilterIcon","setupText","displayNameSanitised","eText","addInIcon","eSortAsc","eSortDesc","eSortNone","eMenu","eFilter","eIcon","touchListener","tapMenuButton","menuTouchListener","enableMenu","showColumnMenuAfterMouseClick","sortController","progressSort","showMenu","setMouseOverParent","overParent","menuFactory","showMenuAfterButtonClick","removeSortIcons","eSortOrder","sortUsingCtrl","eLabel","nowTime","onSortChanged","setMultiSortOrder","alwaysHideNoSort","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","moreThanOneColSorting","showIndex","filterPresent","__extends$8","__decorate$f","HeaderGroupComp","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","__decorate$g","RowNode","childrenMapped","OBJECT_ID_SEQUENCE","alreadyRendered","highlighted","onDataChanged","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","EVENT_DATA_CHANGED","createLocalRowEvent","getRowIndexString","rowPinned","createDaemonNode","oldNode","daemon","setDataAndId","setId","selectionController","syncInRowNode","isRowSelectableFunc","shouldInvokeIsRowSelectable","setRowSelectable","EVENT_SELECTABLE_CHANGED","isPixelInRange","pixel","rowTop","clearRowTop","oldRowTop","setRowTop","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","EVENT_TOP_CHANGED","setDragging","dragging","EVENT_DRAGGING_CHANGED","setHighlighted","EVENT_HIGHLIGHT_CHANGED","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setRowHeight","rowHeightEstimated","EVENT_HEIGHT_CHANGED","setRowIndex","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","mainEventService","redrawRows","setDataValue","valueService","dispatchCellChangedEvent","setGroupValue","groupData","setAggData","newAggData","colIds","aggData","oldAggData","isEmptyRowGroupNode","EVENT_CELL_CHANGED","resetQuickFilterAggregateText","quickFilterAggregateText","depthFirstSearch","calculateSelectedFromChildren","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","selectThisNode","setSelectedInitialValue","setSelected","clearSelection","suppressFinishActions","setSelectedParams","rangeSelect","isRowPinned","newRowClicked","getLastSelectedNode","allowMultiSelect","doRowRangeSelection","updatedCount","selectChildNodes","clearOtherNodes","updateGroupsFromChildrenSelections","setLastSelectedNode","groupsSelectChildren","lastSelectedNode","nodesToSelect","getNodesInRangeForSelection","isParentOfNode","potentialParent","childrenAfterFilter","EVENT_MOUSE_ENTER","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","nodeToSwapIn","currentRowNode","isCandidate","foundFirstChildPath","parentRowNode","isFullWidthCellFunc","__extends$9","AgAbstractLabel","labelSeparator","labelAlignment","labelWidth","setLabelSeparator","setLabelWidth","setLabelAlignment","refreshLabel","alignment","__decorate$h","__extends$a","AgAbstractField","callbackFn","EVENT_CHANGED","__extends$b","__decorate$i","AgAbstractInputField","setInputType","eWrapper","htmlFor","addInputListeners","setInputWidth","setInputName","setMaxLength","__extends$c","__decorate$j","AgCheckbox","displayTag","onCheckboxClick","getNextValue","setPassive","isReadOnly","setReadOnly","dispatchChange","refreshSelectedClass","__extends$d","__decorate$k","CheckboxSelectionComponent","onSelectionChanged","onSelectableChanged","showOrHideSelect","onCheckedClicked","onUncheckedClicked","checkboxCallbackExists","isCellRenderer","HeaderComponent","HeaderGroupComponent","GroupRowInnerRendererComponent","CellRendererComponent","PinnedRowCellRendererComponent","CellEditorComponent","InnerRendererComponent","LoadingOverlayComponent","NoRowsOverlayComponent","FilterComponent","FloatingFilterComponent","ToolPanelComponent","StatusPanelComponent","__decorate$l","RegisteredComponentSource","UserComponentFactory","createAndInitUserComponent","newHeaderComponent","newHeaderGroupComponent","newFullWidthGroupRowInnerCellRenderer","newFullWidthCellRenderer","cellRendererType","cellRendererName","newCellRenderer","newCellEditor","newInnerCellRenderer","newLoadingOverlayComponent","newNoRowsOverlayComponent","newTooltipComponent","newFilterComponent","defaultFilter","modifyParamsCallback","newSetFilterCellRenderer","newFloatingFilterComponent","defaultFloatingFilter","newToolPanelComponent","toolPanelDef","newStatusPanelComponent","definitionObject","paramsFromGrid","defaultComponentName","componentAndParams","createComponentInstance","createFinalParams","paramsFromSelector","addReactHacks","paramsAfterCallback","deferredInit","initComponent","agGridReact","createUserComponentFromConcreteClass","clazz","agGridParams","internalComponent","lookupComponentClassDef","componentSelectorFunc","hardcodedNameComponent","HardcodedJsComponent","hardcodedJsFunction","HardcodedFwComponent","componentPropertyValue","agComponentUtils","doesImplementIComponent","componentFromFramework","HARDCODED","adaptFunction","componentNameToUse","selectorResult","registeredCompClassDef","lookupFromRegisteredComponents","componentNameOpt","registeredComponent","userComponentRegistry","retrieve","REGISTERED_BY_NAME","REGISTERED","DEFAULT","holder","paramsForSelector","componentToUse","FrameworkComponentRaw","thisComponentConfig","componentMetadataProvider","mandatoryMethodList","optionalMethodList","__extends$e","__decorate$m","GroupCellRenderer","assignBlankValueToGroupFooterCell","embeddedRowMismatch","isEmbeddedRowMismatch","nullValue","skipCell","cellIsBlank","setupDragOpenParents","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","pinnedLeftCell","pinnedRightCell","bodyCell","setIndent","paddingCount","setPaddingDeprecatedWay","indentClass","paddingPx","paddingSide","suppressPadding","displayedGroup","createFooterCell","createGroupCell","addChildCount","createLeafCell","footerValue","footerValueGetter","paramsClone","eValue","rendererPromise","columnToUse","valueFormatterService","useFullWidth","useInnerRenderer","innerCellRenderer","groupCellRendererParams","groupedColumnDef","groupInnerRendererClass","groupColumnRendererClass","rendererToUse","suppressCount","updateChildCount","eChildCount","isUserWantsSelected","paramsCheckbox","checkboxNeeded","cbSelectionComponent_1","eGroupCell","eGridCell","eExpandedIcon","eContractedIcon","eExpanded","eContracted","onExpandClicked","showExpandAndContractIcons","onAllChildrenCountChanged","suppressDoubleClickExpand","onCellDblClicked","suppressEnterExpand","onExpandOrContract","draggedFromHideOpenParents","reducedLeafNode","leafGroup","pivotModeAndLeafGroup","notExpandable","addLeafIndentClass","__extends$f","AnimateShowChangeCellRenderer","refreshCount","eDelta","showDelta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","filterManager","isSuppressFlashingCellsBecauseFiltering","__decorate$n","__extends$g","AnimateSlideCellRenderer","eCurrent","addSlideAnimation","ePrevious","__decorate$o","__extends$h","__decorate$p","LoadingCellRenderer","eLoadingIcon","eLoadingText","__extends$i","__decorate$q","SelectCellEditor","eSelect","stopEditing","__extends$j","PopupTextCellEditor","__extends$k","PopupSelectCellEditor","__extends$l","LargeTextCellEditor","eTextArea","setCols","setRows","__decorate$r","__extends$m","__decorate$s","NumberFilter","filterTo","eValueFrom1","eValueFrom2","eValueTo1","eValueTo2","positionOne","eValueTo","addValueChangedListeners","isRange1","isRange2","stringToFloat","valueTo","showFrom1","showTo1","showFrom2","showTo2","__extends$n","LoadingOverlayComponent$1","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","__decorate$t","__extends$o","NoRowsOverlayComponent$1","DEFAULT_NO_ROWS_TEMPLATE","__decorate$u","__extends$p","TooltipComponent$1","__extends$q","DefaultDateComponent","shouldUseBrowserDatePicker","eDateInput","browserDatePicker","__decorate$v","__extends$r","SimpleFloatingFilter","getTextFromModel","con1Str","conditionToString","con2Str","isEventFromFloatingFilter","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","setEditable","__extends$s","__decorate$w","DateFloatingFilter","createDateComponent","eReadOnlyText","eDateWrapper","onParentModelChanged","allowEditing","filterValueText","parentFilterInstance","filterInstance","__extends$t","__decorate$x","TextFilter","inputField","eValue1","eValue2","textFilterParams","textCustomComparator","DEFAULT_COMPARATOR","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","showValue1","showValue2","cellValueFormatted","filterTextFormatted","__extends$u","__decorate$y","TextInputFloatingFilter","modelString","eFloatingFilterInput","toDebounce","syncUpWithParentFilter","filterGui","enterKeyPressed","__extends$v","NumberFloatingFilter","__extends$w","TextFloatingFilter","__decorate$z","CellRangeType","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","agPopupTextCellEditor","agPopupSelectCellEditor","agLargeTextCellEditor","agTextColumnFilter","agNumberColumnFilter","agDateColumnFilter","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","animateShowChange","animateSlide","largeText","popupSelect","popupText","richSelect","jsComponents","registerComponent","registerFwComponent","registerDefaultComponent","translateIfDeprecated","deprecatedInfo","ChangedPath","keepingColumns","nodeIdsToColumns","mapToItems","pathRoot","setInactive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","forEachChangedNodeDepthFirst","traverseLeafNodes","executeFromRootNode","createPathItems","newEntryCount","populateColumnsMap","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","getNotValueColumnsForNode","__decorate$A","SelectionController","onRowSelected","getSelectedNodes","selectedNodes","getSelectedRows","selectedRows","removeGroupsFromSelection","changedPath","getNodeForIdIfSelected","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","getBestCostNodeSelection","topLevelNodes","getTopLevelNodes","traverse","setRowModel","nodeId","deselectAllRowNodes","justFiltered","rowModelClientSide","forEachNodeAfterFilter","selectAllRowNodes","clientSideRowModel","forEachNode","selectNode","tryMulti","deselectIndex","getRow","deselectNode","selectIndex","__decorate$B","ColumnApi","columnState","isPinning","getAllColumns","setColumnWidth","getPrimaryColumns","hideColumns","hideColumn","getState","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","DragSourceType","VerticalDirection","HorizontalDirection","__decorate$C","TooltipStates","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","eHideIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","addDragSource","dragSource","allowTouch","dragStartPixels","onDragStart","onDragStop","onDragging","dragService","removeDragSource","sourceAndParams","nudge","eventLastTime","dragItem","getDragItem","lastDropTarget","dragSourceDropTarget","onDragStarted","createGhost","onDragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","getHorizontalDirection","vDirection","getVerticalDirection","positionGhost","dropTarget","isMouseOnDropTarget","leaveLastTargetIfExists","enterDragTargetIfExists","onDragEnter","dragEnterEvent","setGhostIcon","getIconName","onDragLeave","dragLeaveEvent","getAllContainersFromDropTarget","secondaryContainers","getSecondaryContainers","mouseOverTarget","isInterestedIn","addDropTarget","removeDropTarget","hasExternalDropZones","zones","external","findExternalZone","externalTargets","eClientX","Left","Right","eClientY","Up","Down","dropZoneTarget","ghost","eGhost","ghostHeight","browserWidth","browserHeight","usrDocument","windowScrollY","windowScrollX","eGhostParent","GHOST_TEMPLATE","eGhostIcon","dragItemName","shake","defaultIconName","ICON_NOT_ALLOWED","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_HIDE","__extends$x","__decorate$D","RowDragComp","beans","checkCompatibility","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","getSelectedCount","managed","defaultTextValue","RowDrag","dragItemCount","dragAndDropService","VisibilityStrategy","setDisplayedOrVisible","neverDisplayed","onSuppressRowDrag","workOutVisibility","rowDragFeature","gridPanel","getRowDragFeature","shouldPreventRowMove","__extends$y","PopupEditorWrapper","getGuiCalledOnChild","DOM_KEY_POPUP_EDITOR_WRAPPER","isCancelBeforeStart","isCancelAfterEnd","getPopupPosition","__decorate$E","__extends$z","DndSourceComp","eCell","checkVisibility","dragEvent","providedOnRowDrag","dataTransfer","setDragImage","jsonData","defaultOnRowDrag","__decorate$F","__extends$A","__decorate$G","HeaderRowType","TooltipFeature","DEFAULT_HIDE_TOOLTIP_TIMEOUT","SHOW_QUICK_TOOLTIP_DIFF","FADE_OUT_TOOLTIP_TIMEOUT","NOTHING","tooltipInstanceCount","onMouseMove","onMouseDown","setToDoNothing","isLastTooltipHiddenRecently","showTooltipTimeoutId","showTooltip","lastMouseEvent","WAITING_TO_SHOW","SHOWING","hideTooltip","tooltipComp","positionTooltipUnderLastMouseEvent","destroyTooltipComp","lastTooltipHideTime","tooltipPopupDestroyFunc","getTooltipText","getComponentHolder","getCellPosition","newTooltipComponentCallback","tooltipInstanceCopy","popupService","addPopup","hideTooltipTimeoutId","positionPopupUnderMouseEvent","ePopup","nudgeY","__extends$B","__assign$1","CellComp","rowComp","autoHeightCell","printLayout","hasChartRange","editingCell","suppressRefreshCell","cellEditorVersion","cellRendererVersion","createGridCellVo","rangeSelectionEnabled","rangeController","focusController","isCellFocused","cellPosition","getCellRangeCount","getHasChartRange","getValueAndFormat","setUsingWrapper","chooseCellRenderer","setupColSpan","getCreateTemplate","unselectable","templateParts","getCellWidth","modifyLeftForPrintLayout","getCellLeft","valueToRender","getInitialValueToRender","valueSanitised","getToolTip","tooltipSanitised","colIdSanitised","wrapperStartTemplate","wrapperEndTemplate","stylesFromColDef","preProcessStylesFromColDef","getInitialCssClasses","stylesForRowSpanning","getStylesForRowSpanning","colIdxSanitised","getAriaColumnIndex","usingWrapper","afterAttached","eParentRow","addDomData","populateTemplate","createCellRendererInstance","angular1Compile","refreshHandle","onColumnHover","isHovered","columnHoverService","onCellChanged","refreshCell","colsSpanning","onFlashCells","cellId","cellPositionUtils","createId","animateCell","onDisplayColumnsChanged","onWidthChanged","getColSpanningList","onLeftChanged","refreshAriaIndex","colIdx","eCellValue","preProcessClassesFromColDef","preProcessCellClassRules","getInitialRangeClasses","usingCellRenderer","cellRendererGui","templateUrl","templateService","getTemplate","getValueToUse","getRenderedRow","getCellRenderer","getCellEditor","suppressFlash","forceRefresh","valuesDifferent","valuesAreEqual","attemptCellRendererRefresh","replaceContentsAfterRefresh","processingFilterChange","flashCell","postProcessStylesFromColDef","postProcessClassesFromColDef","updateAngular1ScopeAndCompile","refreshToolTip","postProcessCellClassRules","cssName","fullName","animationFullName","eParentOfValue","putDataIntoCellAfterRefresh","compiledElement_1","$compile","processStylesFromColDef","cssToUse","cellStyleParams","$scope","cellStyleFunc","processClassesFromColDef","onApplicableClass","stylingService","processStaticCellClasses","createCellRendererParams","finalParams","newTooltip","hasNewTooltip","equalsMethod","processCellClassRules","onNotApplicableClass","processClassRules","includeSelectionComponent","includeRowDraggingComponent","includeDndSourceComponent","rowDraggableIsFunc","dndSourceIsFunc","enableTextSelection","CELL_RENDERER_TYPE_PINNED","CELL_RENDERER_TYPE_NORMAL","useTaskService","afterCellRendererCreated","cellRendererTypeNormal","createCellRendererFunc","componentPromise","taskQueue","createTask","addRowCompListener","addRenderedRowListener","lockedClosedGroup","isOpenGroup","groupFootersEnabled","groupAlwaysShowAggData","onMouseEvent","onMouseOut","onMouseOver","dispatchCellContextMenuEvent","cellContextMenuEvent","domEvent","cellMouseOutEvent","clearMouseOver","cellMouseOverEvent","setMouseOver","cellDoubleClickedEvent","startRowOrCellEdit","startRowEditing","startEditingIfEnabled","afterCellEditorCreated","createCellEditorParams","createCellEditor","focusCell","popupEditorWrapper","cellEditorInPopup","setInlineEditingClass","addPopupCellEditor","addInCellEditor","ePopupGui","useModelPopup","hideEditorPopup","onPopupEditorClosed","keepWithinBounds","positionPopupUnderComponent","positionPopupOverComponent","stopRowOrCellEdit","editingInline","popupEditorShowing","stopEditingAndFocus","suppressNavigateAfterEdit","navigateAfterEdit","forceBrowserFocus","setFocusedCell","setFocusInOnEditor","isEditing","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onTabKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","setFocusOutOnEditor","onShiftRangeSelect","rowRenderer","endCell","extendLatestRangeInDirection","ensureCellVisible","onKeyPress","onSpaceKeyPressed","newSelection","isRightClickInExistingRange","getCellRanges","containsWidget","thisCell","extendLatestRangeToCell","setRangeToCell","isCellInAnyRange","isDoubleClickOnIPad","nowMillis","lastIPadMouseClickEvent","cellClickedEvent","getParentRow","setParentRow","cancelTask","selectionHandle","getRangeBorders","leftCol","rightCol","thisCol","isCellInSpecificRange","startRow","getRangeStartRow","endRow","getRangeEndRow","rowPositionUtils","sameRow","isSingleCell","borders","onRowIndexChanged","onCellFocused","onRangeSelectionChanged","newRangeCount","updateRangeBorders","cellRanges","DIMENSION","VALUE","shouldHaveSelectionHandle","rangesLen","cellRange","fillHandleIsAvailable","isCategoryCell","isContiguousRange","isBottomRightCell","addSelectionHandle","cellRangeType","updateRangeBordersIfRangeCount","rangeBorders","onFirstRightPinnedChanged","onLastLeftPinnedChanged","eCellWrapper","addRowDragging","addDndSource","addSelectionCheckbox","clientSideRowModelActive","rowDraggingComp","dndSourceComp","cbSelectionComponent","visibleFunc","DOM_DATA_KEY_CELL_COMP","isMoreThanOneCell","fullRowEdit","stopRowEditing","newValueExists","__extends$C","__assign$2","RowComp","parentScope","bodyContainerComp","pinnedLeftContainerComp","pinnedRightContainerComp","fullWidthContainerComp","animateIn","useAnimationFrameForCreate","embedFullWidth","eAllRowContainers","rowContainerReadyCount","refreshNeeded","columnRefreshPending","cellComps","createSecondPassFuncs","removeFirstPassFuncs","removeSecondPassFuncs","initialised","elementOrderChanged","lastMouseDownOnDragger","rowIsEven","paginationPage","paginationProxy","getCurrentPage","setAnimateFlags","rowFocused","isRowFocused","createChildScopeOrNull","setupRowContainers","addListeners","slideRowIn","onTopChanged","fadeRowIn","eRow","createTemplate","contents","extraCssClass","rowClasses","getInitialRowClasses","rowIdSanitised","userRowStyles","preProcessStylesFromGridOptions","businessKey","getRowBusinessKey","businessKeySanitised","rowTopStyle","getInitialRowTopStyle","rowIdx","headerRowCount","headerRootComp","getCellForCol","cellComp","executeProcessRowPostCreateFunc","eBodyRow","ePinnedLeftRow","ePinnedRightRow","roundRowTopToBounds","afterPaginationPixels","applyPaginationOffset","afterScalingPixels","maxDivHeightScaler","getRealPixelPosition","businessKeyForNodeFunc","areAllContainersReady","lazyCreateCells","cellTemplatesAndComps","createCells","callAfterRowAttachedOnCells","refreshCells","createRowContainer","rowContainerComp","useAnimationsFrameForCreate","rowTemplate","appendRowTemplate","getRowElement","afterRowAttached","newChildScope","$new","$destroy","isDetailCell","doingMasterDetail","isFullWidthGroup","stub","createFullWidthRows","LOADING_CELL_RENDERER","LOADING_CELL_RENDERER_COMP_NAME","DETAIL_CELL_RENDERER","DETAIL_CELL_RENDERER_COMP_NAME","FULL_WIDTH_CELL_RENDERER","GROUP_ROW_RENDERER","GROUP_ROW_RENDERER_COMP_NAME","setupNormalRowContainers","centerCols","leftCols","rightCols","fullWidthRow","createFullWidthRowContainer","eFullWidthRowBody","fullWidthRowComponentBody","eFullWidthRowLeft","fullWidthRowComponentLeft","eFullWidthRowRight","fullWidthRowComponentRight","eFullWidthRow","fullWidthRowComponent","oldRowTopExists","editingRow","refreshFullWidth","tryRefresh","eCellComp","createFullWidthParams","normalSuccess","bodySuccess","leftSuccess","rightSuccess","onRowHeightChanged","onExpandedChanged","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeHighlightChanged","onRowNodeDraggingChanged","onDisplayedColumnsChanged","onVirtualColumnsChanged","onColumnResized","onCellFocusChanged","onPaginationChanged","onGridColumnsChanged","onModelUpdated","onColumnMoved","addListenersForCellComps","forEachCellComp","removeRenderedCells","postProcessCss","postProcessStylesFromGridOptions","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","destroyFullWidthComponents","detailRowCompCache","addOrDestroy","getContainerForCell","pinnedType","refreshCellsInAnimationFrame","insertCellsIntoContainer","colIdsToRemove","eligibleToBeRemoved","isCellEligibleToBeRemoved","indexStr","REMOVE_CELL","isCellInWrongRow","ensureCellInCorrectContainer","eOldContainer","rowWeWant","cellTemplates","newCellComps","existingCell","createNewCell","correctChildOrder","eRowContainer","gow","DOM_DATA_KEY_RENDERED_ROW","newCellComp","cellTemplate","onRowDblClick","onRowClick","onRowMouseDown","createRowEvent","createRowEventWithSource","agEvent","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","eRowCallback","cellRendererCallback","cachedRowComp","masterDetailModuleLoaded","processClassesFromGridOptions","preProcessRowClassRules","firstRowOnPage","isFirstRowOnPage","lastRowOnPage","isLastRowOnPage","getPageFirstRow","getPageLastRow","newFirst","newLast","processRowClassRules","event_1","setEditingRow","sourceRenderedCell","classStr","rowCls","rowClassFunc","rowStyles","processStylesFromGridOptions","rowStyleFuncResult","rowStyleFunc","removeRowElement","addHoverFunctionality","getVScrollPosition","minPixel","maxPixel","heightPx_1","destroyContainingCells","getAndClearDelayedDestroyFunctions","currentPage","topPx","getPixelOffset","topPx_1","getAndClearNextVMTurnFunctions","getRowNode","getRenderedCellForColumn","spanList","updateRowIndexes","rowIndexStr","rowIsEvenChanged","getBodyRowElement","getPinnedLeftRowElement","getPinnedRightRowElement","getFullWidthRowElement","side","__extends$D","__decorate$H","RowRenderer","destroyFuncsForColumnListeners","rowCompsByIndex","floatingTopRowComps","floatingBottomRowComps","refreshInProgress","registerGridCore","gridCore","getGridCore","registerGridComp","rowContainers","getRowContainers","onPageLoaded","onPinnedRowDataChanged","redrawAfterScroll","onDomLayoutChanged","registerCellEventListeners","redrawAfterModelUpdate","refreshListenersToColumnsForCellComps","removeGridColumnListeners","forEachCellWithThisCol","leftChangedListener","widthChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","destroyRows","datasourceChanged","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowComps","refreshEvent","keepRenderedRows","newPage","getAllCellsForColumn","eCells","refreshFloatingRowComps","refreshFloatingRows","pinnedRowModel","floatingTopPinnedLeft","floatingTopPinnedRight","floatingTop","floatingTopFullWidth","floatingBottomPinnedLeft","floatingBottomPinnedRight","floatingBottom","floatingBottomFullWidth","rowComps","flushContainers","recycleRows","onlyBody","getRenderedIndexesForRowNodes","renderedRow","indexesToRemove","getCellToRestoreFocusToAfterRefresh","focusedCell","suppressKeepFocus","getFocusCellToUseAfterRefresh","getLockOnRefresh","sizeContainerToPageHeight","scrollToTopIfNewData","rowsToRecycle","binRowComps","redraw","restoreFocusedCell","releaseLockOnRefresh","suppressScrollToTop","pinnedLeft","pinnedRight","getCurrentPageHeight","setModelHeight","realHeight","getUiContainerHeight","forEachRowComp","forEachCellCompFiltered","refreshCellParams","getCellRendererInstances","getCellEditorInstances","getEditingCells","rowIdsMap","colIdsMap","normal","processRow","rowsToRemove","indexToRemove","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","indexesNotToDraw","calculateIndexesToDraw","checkRowToDraw","doNotUnVirtualiseRow","afterScroll","updateOffset","workOutFirstAndLastRowsToRender","nextVmTurnFunctions","createOrUpdateRowComp","destroyRowComps","addDestroyTask","checkAngularCompile","updateRowCount","flushRowTemplates","pinningLeft","pinningRight","redrawFullWidthEmbeddedRows","refreshFullWidthRows","createRowComp","rowCompsMap","delayedFuncs","isRowsToRender","paginationOffset","getOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","bufferPixels","firstPixel","lastPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","getRowIndexAtPixel","lastRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","lastRow","event_2","topPixel","bottomPixel","ensureRowHeightsValid","getFirstVirtualRenderedRow","getLastVirtualRenderedRow","rowHasFocus","isRowNodeFocused","rowIsEditing","isRowPresent","getRenderedNodes","currentCell","allowUserOverride","nextCell","getLastCellOfColSpan","cellNavigationService","getNextCellToFocus","userCell","previousCellPosition","nextCellPosition","getComponentForCell","colSpanningList","gridCell","ensureIndexVisible","ensureColumnVisible","horizontallyScrollHeaderCenterAndFloatingCenter","startEditingCell","rowComponent","gridRow","previousRenderedCell","moveToCellAfter","backwards","getFocusedCell","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","nextRenderedCell","findNextCellToFocusOn","foundCell","moveEditToNextCellOrRow","pGridCell","nGridCell","pRow","nRow","startEditing","getNextTabbedCell","lookupRowNodeForCell","nextCellComp","getPinnedTopRow","getPinnedBottomRow","CssClassApplier","addHeaderClassesFromColDef","eHeaderCell","addColumnClassesFromCollDef","addToolPanelClassesFromColDef","classesOrFunc","classToUse","cssClassItem","__extends$E","__decorate$I","HoverFeature","addMouseHoverListeners","__extends$F","SetLeftFeature","ariaEl","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateInLeft","actualLeft","colOrGroup","colIndex","__extends$G","__decorate$J","SelectAllFeature","cbSelectAll","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","showOrHideSelectAll","onModelChanged","onCbSelectAll","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","notSelected","getSelectionCount","allSelected","selectedCount","notSelectedCount","__extends$H","__decorate$K","HeaderWrapperComp","isMenuEnabled","appendHeaderComp","setupWidth","setupMovingCss","setupTooltip","setupResize","setupMenuClass","setupSortableClass","addColumnHoverListener","addMouseListeners","setLeftFeature","addAttributes","onMouseOverOut","headerComp","showColumnMenu","showColumnMenuAfterButtonClick","multiSort","setSortForColumn","afterHeaderCompCreated","setupMove","onColumnMovingChanged","eHeaderCellLabel","suppressMove","dragSource_1","HeaderCell","createDragItem","visibleState","eResize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizeStart","onResizing","onResizeEnd","weWantAutoSize","resizeAmount","resizeAmountNormalised","normaliseResizeAmount","resizeStartWidth","resizeWithShiftKey","onColumnWidthChanged","onMenuVisible","dragChange","__extends$I","__decorate$L","HeaderGroupWrapperComp","childColumnsDestroyFuncs","appendHeaderGroupComp","leafCols","headerGroupComp","eHeaderGroup","isSuppressMoving","getDragItemForGroup","allColumnsOriginalOrder","allColumnsCurrentOrder","childSuppressesMoving","addListenersToChildrenColumns","onDisplayedChildrenChanged","destroyListenersOnChildrenColumns","eHeaderCellResize","skipHeaderOnAutoSize_1","resizeCols","resizeRatios","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","normaliseDragChange","__extends$J","ReadOnlyFloatingFilter","eFloatingFilterText","parentModel","getModelAsString","modelAsString","__decorate$M","__extends$K","__decorate$N","FloatingFilterWrapper","setupFloatingFilter","setupLeftPositioning","setupColumnHover","eButtonShowMainFilter","showParentFilter","floatingFilterCompPromise","getFloatingFilterInstance","compInstance","setupWithFloatingFilter","setupSyncWithFilter","setupEmpty","syncWithFilter","getFilterComponent","floatingFilterComp","disposeFunc","floatingFilterCompUi","eFloatingFilterBody","suppressFilterButton","eButtonWrapper","defaultFloatingFilterType","filterToFloatingFilterNames","SetFilterModule","createFilterParams","finalFilterParams","currentParentModel","filterComponent","getFilterComponentPrototype","createDynamicParams","resolvedComponent","comp","agSetColumnFilter","__extends$L","__decorate$O","DropType","HeaderRowComp","headerComps","niceClassName","forEachHeaderElement","idsOfAllChildren","removeAndDestroyChildComponents","idsToDestroy","childHeaderComp","groupHeight","numberOfFloating","numberOfGroups","getWidthForRow","removeAndDestroyAllChildComponents","getItemsAtDepth","result_1","FLOATING_FILTER","currentChildIds","correctChildIds","eHeaderCompGui","idOfChild","eParentContainer","createHeaderComp","columnGroupChild","COLUMN","COLUMN_GROUP","__decorate$P","MoveColumnController","needToMoveLeft","needToMoveRight","centerContainer","ToolPanel","visibleState_1","ensureIntervalCleared","allowedCols","normaliseX","getCenterViewportScrollLeft","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","getCenterWidth","ensureIntervalStarted","fromEnter","lastDraggingEvent","mouseXNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","attemptMoveColumns","calculateOldIndex","movingCols","gridCols","allMovingColumns","mouseX","draggingLeft","draggingRight","validMoves","calculateValidMoves","firstValidMove","constrainDirection","allDisplayedCols","allGridCols","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","widthOfMovingDisplayedCols_1","displacedCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","scrollHorizontally","columnsThatCanPin","__decorate$Q","BodyDropPivotTarget","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","__decorate$R","LoadingType","BodyDropTarget","dropListeners","moveColumnController","eSecondaryContainers","getDropTargetLeftContainers","getDropTargetRightContainers","getDropTargetBodyContainers","bodyDropPivotTarget","ColumnMove","Pivot","currentDropListener","getDropType","dropType","__decorate$S","HeaderContainer","eViewport","headerRowComps","setupDragAndDrop","headerRowComp","onColumnValueChanged","onColumnRowGroupChanged","onScrollVisibilityChanged","setWidthOfPinnedContainer","scrollVisibleService","removeHeaderRowComps","getRowComps","removeAndCreateAllRowComps","createHeaderRowComps","gridComp","bodyDropTarget","rowCount","__extends$M","__decorate$T","HeaderRootComp","childContainers","registerHeaderRootComp","eHeaderContainer","eHeaderViewport","pinnedLeftContainer","ePinnedLeftHeader","pinnedRightContainer","ePinnedRightHeader","refreshHeader","onPivotModeChanged","addPreventHeaderScroll","setHorizontalScroll","childContainer","px","setHeaderContainerWidth","setLeftVisible","setRightVisible","__decorate$U","FilterManager","allFilters","quickFilter","quickFilterParts","eventListenerDestroyers","FilterManager_1","onNewColumnsLoaded","parseQuickFilter","setQuickFilterParts","checkExternalFilter","setFilterModel","allPromises","modelKeys_1","filterWrapper","setModelOnFilterWrapper","filterPromise","getOrCreateFilterWrapper","newModel","getFilterModel","isAdvancedFilterPresent","advancedFilterPresent","setAdvancedFilterPresent","atLeastOneActive","updateFilterFlagInColumns","isAnyFilterPresent","isQuickFilterPresent","externalFilterPresent","filterToSkip","newFilter","parsedFilter","onAnyFilterChanged","doesRowPassOtherFilters","doesRowPassFilter","doesRowPassQuickFilterNoCache","filterPart","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","sanitisedColDef","doesRowPassOtherFilter","compiledElement","guiPromise","eFilterGui","guiFromFilter","atLeastOneFilterGone","disposeFilterWrapper","destroyFilter","__decorate$V","ValueService","cellExpressions","forFilter","ignoreAggData","groupDataExists","aggDataExists","executeFilterValueGetter","executeValueGetter","cellValueGetter","valueWasDifferent","setValueUsingField","fieldPieces","fieldPiece","getValueCallback","valueFromCache","otherColumn","getKeyForNode","__decorate$W","RowContainerComponent","rowTemplatesToAdd","afterGuiAttachedCallbacks","lastMadeVisibleTime","hideWhenNoChildren","setVerticalScrollPosition","verticalScrollPosition","checkDomOrder","domOrder","htmlToAdd","lastPlacedElement","isMadeVisibleRecently","__assign$3","__decorate$X","__spreadArrays$4","RowDragFeature","isMultiRowDrag","isGridSorted","isGridFiltered","onRowGroupChanged","sortModel","getSortModel","rowGroups","getRowNodes","isFromThisGrid","currentNode","onEnterOrDragging","isDropZoneWithinThisGrid","mouseEventService","getNormalisedPosition","doManagedDrag","getRowIndexNumber","highlightRowAtPixel","moveRows","moveRowAndClearHighlight","lastHighlightedRowNode","getLastHighlightedRowNode","isBelow","getRowNodeId_1","addIndex","getHighlightPosition","updateRowData","clearRowHighlight","ensureRowsAtPixel","clearFocusedCell","removeAllCellRanges","pixelRange","needToMoveUp","needToMoveDown","scrollVertically","addRowDropZone","processedParams","fromGrid","draggingToRowDragEvent","getRowDropZone","vDirectionString","yNormalised","overIndex","overNode","__extends$N","__decorate$Y","GridPanel","resetLastHorizontalScrollElementDebounced","resetLastHorizontalScrollElement","eBodyViewport","getHScrollPosition","eCenterViewport","onRowDataChanged","showOrHideOverlay","hideOverlay","suppressScrollOnFloatingRow","setupRowAnimationCssClass","buildRowContainerComponents","addEventListeners","addDragListeners","addScrollListener","showLoadingOverlay","setCellTextSelection","setPinnedContainerSize","setHeaderAndFloatingHeights","disableBrowserDragging","addKeyboardEvents","addBodyViewportListener","addStopEditingWhenGridLosesFocus","mockContextMenuForIPad","addRowDragListener","addAngularApplyCheck","onDisplayedColumnsWidthChanged","alignedGridsService","navigationService","heightScaler","paginationAutoPageSizeService","unsubscribeFromResize","resizeObserverService","observeResize","onCenterViewportResized","eTop","eBottom","newPrintLayout","setWidthsOfContainers","checkViewportAndScrolls","bodyHeight","setColumnMovingCss","focusOutListener","clickInsideGrid","applyTriggered","HTMLImageElement","eLeftContainer","eRightContainer","eCenterContainer","processMouseEvent","eAllCellContainers","processKeyboardEvent","onContextMenu","getBodyClientRect","getRowForEvent","handlePageScrollingKey","doGridOperations","cellKeyDownEvent","cellKeyPressEvent","isEventFromThisGrid","onCtrlAndA","onCtrlAndC","onCtrlAndV","onCtrlAndD","undoRedoService","redo","undo","getRenderedCellForEvent","handleContextMenuMouseEvent","contextMenuFactory","floatingStart","floatingEnd","rowEnd","getRowCount","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","clipboardService","copyToClipboard","ClipboardModule","pasteFromClipboard","copyRangeDown","goToPageWithIndex","rowGotShiftedDuringOperation","startingRowTop","startingRowHeight","rowTopPixel","rowBottomPixel","heightOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","getScrollPositionForPixel","pxBottom","pxMiddle","updateScrollVisibleService","checkBodyHeight","onHorizontalViewportChanged","onBodyHorizontalScroll","updateScrollVisibleServiceImpl","horizontalScrollShowing","verticalScrollShowing","setScrollsVisible","setHorizontalScrollVisible","setVerticalScrollPaddingVisible","scrollSize","scrollContainerSize","addIEPadding","eHorizontalScrollBody","eBodyHorizontalScrollViewport","eBodyHorizontalScrollContainer","setFakeHScrollSpacerWidths","updateColumnCount","viewportLeftPixel","viewportRightPixel","colLeftPixel","colRightPixel","viewportWidth","viewportScrolledPastCol","viewportScrolledBeforeCol","colToSmallForViewport","alignColToLeft","alignColToRight","setCenterViewportScrollLeft","overlayWrapper","showNoRowsOverlay","nextTimeout","getCenterContainer","eTopViewport","eBottomViewport","eLeftBottom","eLeftTop","eRightBottom","eRightTop","eFullWidthContainer","rowContainerComponents","eCenterColsClipper","eTopContainer","eTopFullWidthContainer","eBottomContainer","eBottomFullWidthContainer","isScaling","getFloatingTopBottom","setCenterWidth","widthPx","setPinnedLeftWidth","oldPinning","widthOfCols","newPinning","setPinnedRightWidth","rightSpacing","eHorizontalRightSpacer","leftSpacing","eHorizontalLeftSpacer","totalHeaderHeight","floatingTopHeight","getPinnedTopTotalHeight","floatingBottomHeight","getPinnedBottomTotalHeight","floatingTopHeightString","floatingBottomHeightString","setHorizontalScrollPosition","hScrollPosition","doHorizontalScroll","vScrollPosition","oldScrollPosition","onCenterViewportScroll","onFakeHorizontalScroll","onVerticalScroll","redrawRowsAfterScroll","isControllingScroll","eDiv","lastHorizontalScrollElement","eSource","addScrollEventListener","removeScrollEventListener","__decorate$Z","GridApi","detailGridInfoMap","infiniteRowModel","serverSideRowModel","__getAlignedGridService","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","getDataAsCsv","CsvExportModule","csvCreator","exportDataAsCsv","getDataAsExcel","ExcelExportModule","excelCreator","getDataAsExcelXml","exportDataAsExcel","setEnterpriseDatasource","setServerSideDatasource","setViewportDatasource","immutableService","createTransactionForRowData","setFloatingTopRowData","setFloatingBottomRowData","getFloatingTopRowCount","getPinnedTopRowCount","getFloatingBottomRowCount","getPinnedBottomRowCount","getFloatingTopRow","getFloatingBottomRow","expireValueCache","getVerticalPixelRange","getHorizontalPixelRange","setAlwaysShowVerticalScroll","refreshToolPanel","refreshSideBar","timeFullRedraw","iterationCount","totalProcessing","totalReflow","doOneIteration","endProcessing","endReflow","durationProcessing","durationReflow","refreshView","refreshRows","softRefreshView","refreshGroupRows","setFunctionsReadOnly","isColumnFilterPresent","setRowNodeExpanded","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshModel","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","stepsMapped","aggregate","keepEditingRows","isAnimationFrameQueueEmpty","isQueueEmpty","getSizesForCurrentTheme","expandAll","collapseAll","getToolPanelInstance","addVirtualRowListener","suppressEvents","deselectAll","selectAllFiltered","deselectAllFiltered","recomputeAggregates","isNodeSelected","getSelectedNodesById","ensureColIndexVisible","ensureNodeVisible","forEachLeafNode","forEachNodeAfterFilterAndSort","getFilterApiForColDef","getFilterInstance","filterComp","getFilterApi","getStatusPanel","statusBarService","getColumnDef","setSortModel","removeRowDropZone","activeDropTarget","getRowDropZoneParams","doLayout","setDomLayout","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotGroupHeaderHeight","setPivotHeaderHeight","isSideBarVisible","setSideBarVisible","setSideBarPosition","openToolPanel","closeToolPanel","getOpenedToolPanel","isToolPanelShowing","resetRowHeights","setGroupRemoveLowestSingleChildren","resetQuickFilter","getRangeSelections","camelCaseToHumanReadable","addRangeSelection","deprecatedNoLongerUsed","addCellRange","clearRangeSelection","undoCellEditing","redoCellEditing","getChartModels","chartService","createRangeChart","createPivotChart","copySelectedRowsToClipboard","includeHeader","columnKeys","copySelectedRangeToClipboard","copySelectedRangeDown","buttonElement","showMenuAfterMouseEvent","hidePopupMenu","hideActiveMenu","setPopupParent","ePopupParent","tabToPreviousCell","addAggFunc","addAggFuncs","clearAggFuncs","applyTransaction","rowDataTransaction","applyTransactionAsync","batchUpdateRowData","insertItemsAtIndex","skipRefresh","removeItems","dataToRemove","refreshVirtualPageCache","refreshInfiniteCache","refreshInfinitePageCache","refreshCache","purgeVirtualPageCache","purgeInfinitePageCache","purgeInfiniteCache","purgeCache","purgeEnterpriseCache","purgeServerSideCache","getVirtualRowCount","getInfiniteRowCount","isMaxRowFound","setVirtualRowCount","maxRowFound","setInfiniteRowCount","getVirtualPageState","getCacheBlockState","getInfinitePageState","getBlockState","checkGridSize","getFirstRenderedRow","getFirstDisplayedRow","getLastRenderedRow","getLastDisplayedRow","getDisplayedRowAtIndex","getDisplayedRowCount","paginationIsLastPageFound","isLastPageFound","paginationGetPageSize","getPageSize","paginationGetCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getMasterRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","goToPage","__decorate$_","ExpressionService","expressionToFunctionCache","expressionOrFunc","evaluateExpression","createExpressionFunction","javaScriptFunction","functionBody","createFunctionBody","theFunction","__decorate$$","TemplateService","templateCache","waitingCallbacks","templateFromCache","callbackList","client","handleHttpResult","httpResult","that_1","__decorate$10","PopupService","popupList","getRootGui","positionPopupForMenu","parentRect","getParentRect","keepYWithinBounds","maxX","xRightPosition","xLeftPosition","calculatePointerAlign","positionPopup","nudgeX","callPostProcessPopup","alignSide","keepXWithinBounds","eDocument","docElement","documentRect","isBody","heightOfParent","widthOfParent","addAsModalPopup","closeOnEsc","closedCallback","alwaysOnTop","hideFunc","setAlwaysOnTop","bringPopupToFront","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","indexOfThisChild","originalClick","mouseEventOrTouch","screenY_1","xMatch","yMatch","getWrapper","popupLen","alwaysOnTopList","onTopLength","__decorate$11","LoggerFactory","logging","Logger","isLogging","isLoggingFunc","__decorate$12","AutoWidthCalculator","getHeaderCellForColumn","eDummyContainer","eBodyContainer","putRowCellsIntoDummyContainer","cloneItemIntoDummy","dummyContainerWidth","headerElement","headerWrapperComp","eCellClone","eCloneParent","__decorate$13","HorizontalResizeService","draggingStarted","dragStartX","setResizeIcons","oldBodyCursor","eGridDiv","oldMsUserSelect","oldWebkitUserSelect","resetIcons","__extends$O","__decorate$14","GridCore","quickFilterUnregisterFn","$watch","quickFilterOnScope","addRtlSupport","eRootWrapperBody","onGridSizeChanged","sideBarModuleLoaded","SideBarModule","statusBarModuleLoaded","StatusBarModule","EnterpriseCoreModule","sideBarComp","openedItem","doingVirtualPaging","comparatorIsAFunction","indexToSelect","__decorate$15","StandardMenuFactory","showPopup","positionCallback","bodyScrollListener","__decorate$16","DragService","dragEndFunctions","dragSources","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","setNoSelectToBody","noSelect","eBody","includeTouch","mouseListener","currentDragParams","touchLastTime","cancelable","touchEndEvent","onTouchUp","addTemporaryEvents","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseStartEvent","onMouseUp","currentEvent","isEventNearStartEvent","startEvent","requiredPixelDiff","getFirstActiveTouch","onUpCommon","eventOrTouch","__decorate$17","SortController","SortController_1","nextDirection","clearSortBarThisColumn","dispatchSortChangedEvents","columnToSkip","columnToClear","DEFAULT_SORTING_ORDER","sortModelProvided","sortForCol","sortModelEntry","compareColIds","columnsWithSorting","getSortForRowController","inverter","__decorate$18","FocusController","keyboardFocusActive","clearFocusedCellListener","activateKeyboardModeListener","activateKeyboardMode","activateMouseModeListener","activateMouseMode","isKeyboardFocus","focusedCellPosition","getGridCellForDomElement","eBrowserCell","ePointer","isAnyCellFocused","floatingOrNull","findFocusableElements","exclude","excludeString","excludeNodes","__decorate$19","MouseEventService","gridInstanceId","MouseEventService_1","gridInstanceSequence","stampDomElementWithGridInstance","GRID_DOM_KEY","getCellPositionForEvent","gridPanelHasScrolls","vRange","__decorate$1a","CellNavigationService","lastCellToFocus","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","getRowBelow","rowPosition","isLastRowInContainer","rowBelow","getRowAbove","getLastBodyCell","getLastFloatingTopRow","rowAbove","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","__decorate$1b","CellRendererFactory","cellRendererMap","CellRendererFactory_1","ANIMATE_SLIDE","ANIMATE_SHOW_CHANGE","GROUP","addCellRenderer","__decorate$1c","ValueFormatterService","suppliedFormatter","useFormatterFromColumn","__extends$P","AgRadioButton","VanillaFrameworkOverrides","__decorate$1d","ScrollVisibleService","__decorate$1e","StylingService","processAllCellClasses","classRules","rule","resultOfRule","classOrClasses","cellClassFunc","__extends$Q","__decorate$1f","ColumnHoverService","selectedColumns","__decorate$1g","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","__decorate$1h","AutoGroupColService","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_BUNDLE_ID","userAutoColDef","rowGroupColDef","innerRenderer","innerRendererParams","__extends$R","__decorate$1i","PaginationProxy","topDisplayedRowIndex","bottomDisplayedRowIndex","pixelOffset","masterRowCount","startPixel","endPixel","startLimitIndex","endLimitIndex","calculatePages","modelUpdatedEvent","topRowBounds","bottomRowBounds","firstInRange","lastInRange","getRowBounds","isLastRowFound","totalPages","setPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setZeroRows","getTopLevelRowCount","masterLastRowIndex","masterPageEndIndex","getTopLevelRowDisplayedIndex","firstIndexNotToShow","maxRowIndex","__extends$S","__decorate$1j","PaginationAutoPageSizeService","onBodyHeightChanged","checkPageSize","notActive","newPageSize","__decorate$1k","ValueCache","cacheVersion","neverExpires","__cacheVersion","__cacheData","__extends$T","__decorate$1l","ChangeDetectionService","doChangeDetection","onlyChangedColumns","doAggregate","__decorate$1m","AlignedGridsService","consuming","fireColumnEvent","fireScrollEvent","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","getMasterColumns","getColumnIds","processColumnEvent","processGroupOpenedEvent","groupOpenedEvent","otherColumnGroup","masterColumnGroup","colEvent","masterColumn","columnIds","masterColumns","visibleEvent","pinnedEvent","resizedEvent_1","grid","__decorate$1n","AgComponentUtils","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","candidate","__decorate$1o","ComponentMetadataProvider","componentMetaData","floatingFilterWrapperComponent","statusPanel","__decorate$1p","Beans","__decorate$1q","HARD_CODED_SIZES","headerCellMinWidth","listItemHeight","BASE_GRID_SIZE","MAT_GRID_SIZE","BALHAM_GRID_SIZE","ALPINE_GRID_SIZE","SASS_PROPERTY_BUILDER","CALCULATED_SIZES","Environment","useTheme","calculatedValue","currentClass","sizeName","isThemeDark","themeFamily","themeMatch","reg","newTheme_1","__decorate$1r","AnimationFrameService","createTasksP1","createTasksP2","destroyTasks","ticking","scrollGoingDown","taskCount","cancelledTasks","useAnimationFrame","verifyAnimationFrameOn","taskItem","createOrder","addTaskToList","taskList","sortTaskList","sortDirection","executeFrame","millis","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","requestFrame","stopTicking","__decorate$1s","NavigationService","timeLastPageEventProcessed","alt","processed","onHomeOrEndKey","onCtrlLeftOrRight","onCtrlUpOrDown","onPageDown","onPageUp","isTimeSinceLastPageEventToRecent","setTimeLastPageEventProcessed","pixelsInOnePage","pagingPixelOffset","scrollIndex","currentCellPixel","focusIndex","scrollType","scrollColumn","focusColumn","rowIndexToScrollTo","leftKey","columnToSelect","homeKey","__extends$U","__decorate$1t","MaxDivHeightScaler","uiBodyHeight","scrollBarWidth","maxDivHeight","scaling","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","uiContainerHeight","pixelsToShave","modelHeight","maxScrollY","setOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","modelMaxScroll","__decorate$1u","SelectableService","updateSelectableAfterGrouping","recurseDown","updateSelectableAfterFiltering","nextChildrenFunc","rowSelectable","firstSelectable","__decorate$1v","AutoHeightCalculator","maxCellHeight","__extends$V","__decorate$1w","PaginationComp","previousAndFirstButtonsDisabled","nextButtonDisabled","lastButtonDisabled","btFirst","btPrevious","btNext","btLast","onBtFirst","onBtLast","onBtNext","onBtPrevious","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","lbCurrent","formatNumber","strPage","strTo","strOf","zeroPagesToDisplay","isZeroPagesToDisplay","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","lbTotal","lbRecordCount","moreText","__decorate$1x","ResizeObserverService","debounceDelay","widthLastTime","heightLastTime","periodicallyCheckWidthAndHeight","resizeObserver","frameworkFactory","debouncedCallback","newHeight","__extends$W","__decorate$1y","OverlayWrapperComponent","inProgress","destroyRequested","eOverlayWrapper","setWrapperTypeClass","loadingType","Loading","NoRows","workItem","showOverlay","destroyActiveOverlay","activeOverlay","__extends$X","__decorate$1z","AgGroupComponent","suppressEnabledCheckbox","suppressOpenCloseIcons","cssIdentifier","initialItems","cbGroupEnabled","setTitle","setEnabled","setAlignItems","hideEnabledCheckbox","hideOpenCloseIcons","setupExpandContract","refreshChildDisplay","eGroupClosedIcon","eGroupOpenedIcon","eTitleBar","toggleGroupExpand","showIcon","eToolbar","hideItem","eTitle","addCssClassToTitleBar","skipToggle","refreshDisabledStyles","isEnabled","onEnableChange","__extends$Y","__decorate$1A","AgPanel","closable","positioned","dragStartPosition","hideTitleBar","setBodyComponent","setClosable","eTitleBarButtons","eContentWrapper","renderComponent","refreshSize","offsetElement","updateDragStartPosition","calculateMouseMovement","anywhereWithin","topBuffer","movementX","movementY","skipX","isPercent","closeButtonComp","CLOSE_BTN_TEMPLATE","addTitleBarButton","onBtClose","bodyComponent","__extends$Z","AgDialog","RESIZE_TEMPLATE","MAXIMIZE_BTN_TEMPLATE","movable","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","lastPosition","maximizable","moveElement","setMovable","setMaximizable","addResizers","setResizable","resizers","createMap","resizerMap","topLeft","topRight","bottomRight","bottomLeft","getResizerElement","offsetLeft","oldWidth","skipWidth","oldHeight","skipHeight","onMoveStart","onMove","onMoveEnd","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","moveElementDragListener","__decorate$1B","__extends$_","AgInputTextField","ret","__extends$$","AgInputTextArea","__extends$10","__decorate$1C","AgSlider","eSlider","eventChanged","textValue","sliderValue","setSliderWidth","setTextFieldWidth","setMinValue","minValue","setMin","setMaxValue","maxValue","setMax","setStep","__extends$11","__decorate$1D","AgColorPanel","isSpectrumDragging","isSpectrumHueDragging","isSpectrumAlphaDragging","colorChanged","picker","initRecentColors","spectrumVal","onSpectrumDraggerDown","onSpectrumDraggerMove","spectrumHue","onSpectrumHueDown","onSpectrumHueMove","spectrumAlpha","onSpectrumAlphaDown","onSpectrumAlphaMove","recentColors","onRecentColorClick","refreshSpectrumRect","spectrumValRect","refreshHueRect","spectrumHueRect","refreshAlphaRect","spectrumAlphaRect","moveDragger","moveHueSlider","moveAlphaSlider","valRect","setSpectrumValue","hueRect","slider","spectrumHueSlider","sliderRect","alphaRect","spectrumAlphaSlider","spectrumColor","rgbaColor","spectrumDragger","brightness","dragger","draggerRect","innerHtml","addRecentColor","maxRecentColors","__extends$12","__decorate$1E","AgPickerField","isDestroyingPicker","skipClick","clickHandler","pickerComponent","showPicker","pickerIcon","__extends$13","AgColorPicker","eGuiRect","colorDialog","colorPanel","eDisplayField","__extends$14","AgInputNumberField","floatedValue","normalizeValue","adjustPrecision","floatString","setPrecision","__extends$15","AgInputRange","__extends$16","AgList","itemEls","highlightedEl","setValueByIndex","isDown","itemToHighlight","nextPos","highlightItem","addOptions","listOptions","listOption","sanitisedText","itemEl","itemContentEl","clearHighlighted","fireItemSelected","displayValue","fireChangeEvent","getDisplayValue","refreshHighlighted","EVENT_ITEM_SELECTED","__decorate$1F","__extends$17","__decorate$1G","AgSelect","listComponent","hideList","listGui","mouseWheelFunc","focusOutFunc","fromPicker","__extends$18","__decorate$1H","AgAngleSelect","dragListener","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","degrees","floatValue","updateNumberInput","normalizeNegativeValue","positionChildCircle","radians","eChildCircle","centerY","calculatePolar","calculateCartesian","getRadius","setOffsetX","setOffsetY","normalizeAngle180","setRadius","radiansValue","__extends$19","AgToggleButton","__decorate$1I","DetailRowCompCache","cacheItems","maxCacheSize","getCacheItem","destroyFullWidthRow","lastAccessedTime","autoCreate","stampCacheItem","__decorate$1J","RowPositionUtils","rowA","rowB","CellPositionUtils","createIdFromValues","cellA","cellB","__decorate$1K","__decorate$1L","PinnedRowModel","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","nextRowTop_1","dataItem","getTotalHeight","forEachPinnedTopRow","forEachPinnedBottomRow","lastNode","__extends$1a","UndoRedoAction","cellValueChanges","FillUndoRedoAction","initialRange","finalRange","UndoRedoStack","maxStackSize","actionStack","DEFAULT_STACK_SIZE","__decorate$1M","UndoRedoService","isCellEditing","isRowEditing","isPasting","isFilling","cellValueChange","clearStacks","undoStack","redoStack","undoRedoLimit","addRowEditingListeners","addCellEditingListeners","addPasteListeners","addFillListeners","undoAction","processAction","processRangeAndCellFocus","redoAction","valueExtractor","currentRow","lastFocusedCell_1","startColumn","setLastFocusedCell","lastFocusedCell","pushActionsToUndoStack","Grid","registeredModules","createBeansList","agStackComponents","createAgStackComponentsList","createProvidedBeans","contextLogger","registerModuleUserComponents","rootComponent","setColumnsAndData","dispatchGridReadyEvent","isEnterprise","passedViaConstructor","allModules","mapNames","addModule","addIndividualModule","dependantModules","extractModuleEntity","userComponents","compMeta","moduleAgStackComps","rowModelClass","getRowModelClass","moduleBeans","beansNoDuplicates","moduleEntities","extractor","rowModelClasses","rowModels","InfiniteRowModelModule","ViewportRowModelModule","ServerSideRowModelModule","ClientSideRowModelModule","AngularDirectiveController","$element","$attrs","keyOfGridInScope","agGrid","$eval","$on","ChartType","LegendPosition","__extends$1b","ManagedTabComponent","attachListenersToGui","tabListener","__decorate$1N","__extends$1c","__decorate$1O","TabbedLayout","eHeader","showItemWrapper","eHeaderButton","focusableItems","focusedPosition","setAfterAttachedParams","afterAttachedParams","getMinDimensions","eDummyBody","itemWrapper","eClone","tabbedItem","bodyPromise","showFirstItem","showItem","onItemClicked","afterAttachedCallback","onActiveItemClicked","__extends$1d","RowNodeBlock","blockNumber","rowNodeCacheParams","STATE_DIRTY","blockSize","isAnyNodeOpen","forEachNodeCallback","getRowUsingLocalIndex","deep","childrenCache","forEachNodeDeep","forEachNodeShallow","getVersion","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","createRowNodes","getStartRow","getEndRow","getBlockNumber","setDirty","setDirtyAndPurge","setRowNode","setBlankRowNode","localIndex","newRowNode","createBlankRowNode","setNewData","STATE_LOADING","loadFromDatasource","pageLoadFailed","STATE_FAILED","EVENT_LOAD_COMPLETE","populateWithRowData","rowNodesToRefresh","pageLoaded","STATE_LOADED","RowNodeBlockLoader","maxConcurrentRequests","activeBlockLoadsCount","blocks","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","removeBlock","loadComplete","checkBlockToLoad","printCacheStatus","blockToLoad","nodeIdPrefix","getNodeIdPrefix","pageStatus","__decorate$1P","__extends$1e","__decorate$1Q","RowNodeCache","cacheParams","blockCount","virtualRowCount","initialRowCount","forEachBlockInOrder","destroyBlock","hack_setVirtualRowCount","rowNodeBlockLoader","checkVirtualRowCount","purgeBlocksIfNeeded","blockToExclude","blocksForPurging","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","isBlockCurrentlyDisplayed","removeBlockFromCache","firstViewportRow","lastViewportRow","getDisplayIndexStart","getDisplayIndexEnd","postCreateBlock","newBlock","setBlock","blockToRemove","onCacheUpdated","lastRowIndexPlusOverflow","overflowSize","dynamicRowHeight","getBlockIdsSorted","forEachBlockId","forEachBlockInReverseOrder","idStr","getBlock","blockId","destroyAllBlocksPastVirtualRowCount","EVENT_CACHE_UPDATED","blocksToDestroy","getRowNodesInRange","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","__extends$1f","__decorate$1R","VirtualList","rowsInBodyContainer","eListContainer","getItemHeight","viewportTopPixel","viewportScrolledBeforeRow","setComponentCreator","componentCreator","clearVirtualRows","drawVirtualRows","removeVirtualRows","ensureRowsRendered","insertRow","BaseComponentWrapper","createWrapper","createMethod","mandatory","addMethod","createMethodProxy","hasMethod","callMethod","HTMLButtonElement","HTMLSelectElement","HTMLInputElement","RecursionType","ClientSideNodeManager","allNodesMap","ROOT_NODE_ID","allLeafChildren","childrenAfterSort","isRowMasterFunc","doingLegacyTreeData","getCopyOfNodesMap","recursiveFunction","TOP_LEVEL","setLeafChildren","rowDataTran","isLegacyTreeData","rowNodeTransaction","executeAdd","executeRemove","executeUpdate","addRowNode","rowIdsRemoved","anyNodesSelected","lookupRowNode","newNode","createNode","rowNodeIdFunc","nodeChildDetails","canFlower","expandByDefault","childAfterGroup","leafChild","__decorate$1S","RowType","ClientSideRowModel","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","onRowGroupOpened","refreshMapFunc","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTops","nextRowTop","rowsToDisplay","resetRowTops","indexAtPixelNow","rowNodeAtPixelNow","highlight","lastHighlightedRow","topLevelIndex","createChangePath","rowNodeTransactions","noTransactions","doRowGrouping","doFilter","doPivot","doSort","doRowsToDisplay","rowsMissing","firstRowHit","lastRowHit","lookingForLastRow","childOfLastRow","pixelToMatch","bottomPointer","topPointer","midPointer","isRowInPixel","recursivelyWalkNodesAndCallback","Normal","AfterFilter","AfterFilterAndSort","forEachPivotNode","PivotNodes","recursionType","nodeChildren","aggregationStage","recursiveExpandOrCollapse","sortStage","groupStage","merged_1","tran","restoreGroupState","filterStage","pivotStage","getGroupState","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","tranItem","rowNodeTran","commonUpdateRowData","flattenStage","__decorate$1T","FilterStage","filterService","selectableService","__decorate$1U","SortStage","sortOptions","sortActive","dirtyLeafNodes","calculateDirtyNodes","noAggregations","sortService","dirtyNodes","addNodesFunc","__decorate$1V","FlattenStage","skipLeafNodes","showRootNode","recursivelyAddToRowsToDisplay","ensureFooterNodeExists","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","excludedParent","createDetailNode","groupNode","footerNode","masterNode","flower","childFlower","__decorate$1W","SortService","postSortFunc","pullDownGroupDataForHideOpenParents","sortedRowNodes","doDeltaSort","doFullSort","updateChildIndexes","updateGroupDataForHiddenOpenParents","mapNodeToSortedNode","compareRowNodes","currentPos","cleanNodes","passesDirtyNodesCheck","passesChangedPathCheck","cleanNodesMapped","sortedRowNode","changedNodes","mergeSortedArrays","sortedNodeA","sortedNodeB","sortOption","isInverted","listToSort","clearOperation","childRowNode","groupDisplayCol","parentToStealFrom","__decorate$1X","FilterService","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","__decorate$1Y","ImmutableService","transaction","existingNodesMap","orderMap","existingNode","clientSide","__extends$1g","__decorate$1Z","InfiniteBlock","setIndexAndTopOnRowNode","failCallback","getRows","__extends$1h","__decorate$1_","InfiniteCache","moveItemsDown","moveFromIndex","moveCount","indexOfLastRowToMove","currentRowIndex","nodeForThisIndex","insertItems","indexToInsert","pageStartRow","pageEndRow","newRowNodes","newNodes","dontCreatePage","createBlock","__extends$1i","__decorate$1$","InfiniteRowModel","destroyCache","destroyDatasource","infiniteCache","onColumnEverything","isSortModelDifferent","ds","resetCache","createModelUpdatedEvent","rowIndexForPixel","__decorate$20","BaseGridSerializingSession","processCellCallback","processHeaderCallback","processGroupHeaderCallback","processRowGroupCallback","prepare","columnsToExport","firstGroupColumn","extractHeaderValue","extractRowCellValue","valueForCell","createValueForGroupNode","processCell","GridSerializer","gridSerializingSession","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","rowModelNormal","onlySelectedNonStandardModel","onlySelected","customHeader","addCustomContent","columnGroups","recursivelyAddHeaderGroups","gridRowIterator_1","onNewHeaderRow","onColumn","skipGroups","skipFooters","skipPinnedTop","skipPinnedBottom","rowAccumulator","onNewBodyRow","getCustomContentBelowRow","onlySelectedAllPages","customFooter","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","onNewHeaderGroupingRow","columnIndex","__extends$1j","__decorate$21","CsvSerializingSession","isFirstLine","columnSeparator","suppressQuotes","beginNewLine","putInQuotes","mergeAcross","appendEmptyCells","onNewHeaderGroupingRowColumn","onNewHeaderRowColumn","onNewBodyRowColumn","CsvCreator","downloader","gridSerializer","getMimeType","getDefaultFileName","getDefaultFileExtension","createSerializingSession","isExportSuppressed","BaseCreator","getMergedParamsAndData","mergedParams","fileName","download","packageFile","mergeDefaultParams","baseParams","Blob","msSaveOrOpenBlob","Downloader","url_1","URL","createObjectURL","bubbles","revokeObjectURL","__decorate$22","LINE_SEPARATOR$1","XmlFactory","createHeader","encoding","headerStart","createXml","xmlElement","booleanTransformer","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","rawMap","textNode","xmlValue","__decorate$23","crcTable","ZipContainer","folders","addFolder","created","addFolders","addFile","clearStream","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","fData","totalFiles","foData","lL","cL","totalFiles_1","fileHeader","folderHeader","buildFolderEnd","currentFile","utfPath","isUTF8","convertTime","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","tLen","cLen","lLen","uint8","crc","__decorate$24","Listener","QuerySelector","defaultGroupComparator","nodeAIsGroup","nodeBIsGroup","bothAreNormal","initialiseAgGridWithAngular1","angular","directive","restrict","initialiseAgGridWithWebComponents","registerElement","AgileGridProto","__agGridSetProperty","__agGridGetProperty","agGridProtoNoType","__attributes","changeObject","_gridOptions","setGridOptions","_agGrid","createdCallback","setPropertyFromAttribute","myString","nodeValue","attachedCallback","detachedCallback","attributeChangedCallback","eventLowerCase","browserEvent","Event","agGridDetails","callbackMethod","simpleHttpRequest","onreadystatechange","readyState","httpResponse","isNativeReflectConstruct","Wrapper","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRef","forwardRefFn","resolveForwardRef","isForwardRef","formatRuntimeError","fullCode","renderStringify","stringifyForError","throwProviderNotFoundError","injectorName","injectorDetails","actual","expected","comparison","ɵɵdefineInjectable","defineInjectable","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","_injectImplementation","ngInjectorDef","InjectFlags","getInjectImplementation","setInjectImplementation","impl","injectRootLimpMode","notFoundValue","injectableDef","noSideEffects","ChangeDetectionStrategy","ViewEncapsulation","__globalThis","__window","__self","WorkerGlobalScope","__global","_global","EMPTY_OBJ","EMPTY_ARRAY","EMPTY_ARRAY$1","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","ɵpipe","NG_MOD_DEF","NG_LOC_ID_DEF","ɵloc","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount","ɵɵdefineComponent","componentDefinition","declaredInputs","providersResolver","onPush","OnPush","directiveDefs","pipeDefs","Emulated","setInput","schemas","tView","directiveTypes","pipeTypes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef","autoRegisterModuleById","ɵɵdefineNgModule","bootstrap","declarations","transitiveCompileScopes","ɵɵsetNgModuleScope","ngModuleDef","getNgModuleDef","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefinePipe","pipeDef","pure","throwNotFound","HEADER_OFFSET","CONTAINER_HEADER_OFFSET","isLView","isLContainer","isContentQueryHost","tNode","isComponentHost","isDirectiveHost","isComponentDef","getFactoryDef","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","definition","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","previousChange","ngInherit","SVG_NAMESPACE","DOCUMENT","setDocument","isProceduralRenderer","domRendererFactory3","rendererType","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","nodeIndex","slotValue","readPatchedLView","readPatchedData","isCreationMode","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","PREORDER_HOOK_FLAGS","updateTransplantedViewCount","lContainer","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","getBindingsEnabled","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","getCurrentParentTNode","setCurrentTNode","isCurrentTNodeParent","setCurrentTNodeAsNotParent","setIsInCheckNoChangesMode","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setInI18nBlock","isInI18nBlock","inI18n","setCurrentDirectiveIndex","currentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","SkipSelf","parentTNode","parentLView","Host","DECLARATION_VIEW","allocLFrame","enterView","newView","newLFrame","currentLFrame","childLFrame","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","nextContextImpl","nestingLevel","currentView","walkUpViews","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","NO_PARENT_INJECTOR","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","setUpAttributes","isProc","namespaceURI","attrVal","setAttributeNS","isAnimationProp","isNameOnlyAttributeMarker","mergeHostAttrs","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","parentView","includeViewProviders","setIncludeViewProviders","nextNgElementId","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","declarationViewOffset","lViewCursor","tViewType","diPublicInInjector","bloomHash","BLOOM_SIZE","bloomAdd","notFoundValueOrThrow","lookupTokenUsingModuleInjector","Self","moduleInjector","previousInjectImplementation","getOrCreateInjectable","Default","bloomHashBitOrFactory","previousTView","hostTElementNode","DECLARATION_COMPONENT_VIEW","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","createNodeInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","throwCyclicDependencyError","previousIncludeViewProviders","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","tokenId","injectorView","isFirstHostTNode","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","ɵɵinjectAttribute","attrNameToInject","attrsLength","injectAttributeImpl","PARAMETERS","PROP_METADATA","makeMetadataCtor","makeParamDecorator","parentClass","metaCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","ngMetadataName","annotationCls","makePropDecorator","additionalProcessing","PropDecoratorFactory","decoratorInstance","PropDecorator","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","Type","deepForEach","addToArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","value1","value2","arrayInsert2","keyValueArrayGet","middle","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","NEW_LINE","SOURCE","USE_VALUE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","ɵɵinject","inject","injectArgs","attachInjectFlag","catchInjectorError","injectorErrorName","tokenPath","formatError","policy","policy$1","Inject","trustedHTMLFromString","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy","getPolicy$1","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","changingThisBreaksApplicationSecurity","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","getTypeName","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","getInertBodyHelper","defaultDoc","inertDocumentHelper","isDOMParserAvailable","getInertBodyElement","inertDocument","createHTMLDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","_sanitizeUrl","sanitizeSrcset","srcset","tagSet","inertBodyHelper","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","sanitizedSomething","buf","traverseContent","startElement","TEXT_NODE","endElement","checkClobberedElement","elAttr","encodeEntities","nextNode","DOCUMENT_POSITION_CONTAINED_BY","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","_sanitizeHtml","unsafeHtmlInput","unsafeHtml","mXSSAttempts","parsedHtml","sanitizeChildren","getTemplateContent","isTemplateElement","SecurityContext","ɵɵsanitizeHtml","sanitizer","getSanitizer","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","getDebugContext","getOriginalError","defaultErrorLogger","_console","originalError","_findOriginalError","_findContext","errorLogger","getErrorLogger","COMMENT_DISALLOWED","COMMENT_DELIMITER","attachPatchData","defaultScheduler","ɵ0$4","ɵɵresolveWindow","ɵɵresolveDocument","ɵɵresolveBody","maybeUnwrapFn","_icuContainerIterate","RendererStyleFlags2","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","CHILD_HEAD","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","parentRElement","applyView","applyContainer","updateTextNode","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","RENDERER","lQueries","QUERIES","destroyLView","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","instanceCleanupFn","processCleanups","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","getInsertInFrontOfRNodeWithNoI18n","_processI18nInsertBefore","setI18nHandling","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","nextRNode","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","applyProjectionRecursive","projectionNext","applyProjection","tProjectionNode","componentLView","nodeToProjectOrRNodes","writeDirectStyle","writeDirectClass","classIndexOf","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isInlineTemplate","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","refreshContentQueries","directiveDefIdx","createLView","tHostNode","RENDERER_FACTORY","getOrCreateTNode","createTNodeAtIndex","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","allocExpando","numSlotsToAlloc","initialValue","allocIdx","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","staticViewQueries","hostLView","renderChildComponents","incompleteFirstPass","isInCheckNoChangesPass","hooksInitPhaseCompleted","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","renderComponentOrTemplate","normalExecutionPath","creationModeIsActive","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","addComponentLogic","setInputsFromAttrs","instantiateAllDirectives","elementIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","getOrCreateTComponentView","createTView","constsOrFactory","initialViewLength","createViewBlueprint","expandoStartIndex","directiveRegistry","pipeRegistry","storeCleanupWithContext","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","generatePropertyAliases","inputAliasMap","propStore","internalName","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","resolveDirectives","localRefs","hasDirectives","registry","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","initializeInputAndOutputAliases","cacheMatchingLocalNames","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","componentView","addToViewTree","setElementAttribute","initialInputData","inputsToStore","createLContainer","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","markViewDirty","detectChangesInternal","detectChangesInRootView","rootContext","tickRootContext","viewQueryFn","CLEAN_PROMISE","ɵ0$5","loadComponentRenderer","currentDef","unwrapLView","textBindingInternal","computeStaticStyling","writeToHost","INJECTOR$1","INJECTOR_SCOPE","NOT_YET","CIRCULAR","EMPTY_ARRAY$2","NULL_INJECTOR","getNullInjector","createInjectorWithoutInjectorInstances","defType","additionalProviders","records","injectorDefTypes","dedupStack","processProvider","injectorDef","processInjectorType","makeRecord","assertNotDestroyed","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","nextInjector","defOrWrappedDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","paramLength","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isExistingProvider","classRef","hasDeps","INJECTOR_IMPL","_resolveInjectorDefTypes","createInjector","Injector","NULL","LifecycleHooksFeature","ɵɵInheritDefinitionFeature","shouldInheritFields","inheritanceChain","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","WrappedValue","isWrapped","isListLikeIterable","isJsObject","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","elementAttributeInternal","interpolation1","v0","suffix","interpolation2","v1","interpolation3","v2","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","templateFirstCreatePass","comment","ɵɵreference","ɵɵdirectiveInject","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","elementStart","elementStartFirstCreatePass","ɵɵelementEnd","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","ɵɵlistener","listenerFn","eventTargetResolver","listenerInternal","ɵɵsyntheticHostListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","isTNodeDirectiveHost","processOutputs","resolved","lCleanupIndex","existingListener","lastListenerFn","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","minifiedName","directiveInstance","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","ɵɵpropertyInterpolate2","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","parseClassNameNext","consumeClassToken","consumeWhitespace","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵclassMap","checkStylingMap","classStringParser","resetParserState","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldKey","setKey","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","findStylingValue","isProcedural","DashCase","isImportant","Important","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtextInterpolate3","ɵɵtextInterpolate8","i2","v3","i3","v4","i4","v5","i5","v6","i6","v7","interpolation8","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","ɵɵclassMapInterpolate3","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","registerLocaleData","localeId","extraData","LocaleDataIndex","LocaleId","ExtraData","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","getLocaleCurrencyCode","CurrencyCode","getLocalePluralCase","PluralCase","ng","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","LOCALE_ID","setLocaleId","tNodeInsertBeforeIndex","i18nParent","anchorRNode","addTNodeAndUpdateInsertBeforeIndex","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","setInsertBeforeIndex","getTIcu","createTNodePlaceholder","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","changeMask","changeMaskCounter","applyCreateOpCodes","createOpCodes","insertInFrontOf","appendNow","APPEND_EAGERLY","SHIFT","COMMENT","applyMutableOpCodes","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","refIdx","caseIndex","anchorIdx","commentValue","commentNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","mask","icuExpression","bindingValue","cases","resolvedCase","getPluralCase","getCaseIndex","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","MARKER","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","i18nStartFirstCreatePass","parentTNodeIndex","subTemplateIndex","rootTNode","existingTNodeStack","msgParts","replaceNgsp","isRootTemplateMessage","removeInnerTemplateTranslation","getTranslationForTemplate","i18nParseTextIntoPartsAndICU","i18nStartFirstCreatePassProcessTextNode","icuStart","createTNodeAndAddOpCode","isClosing","existingTNodes","isICU","i18nNodeIdx","_removes","_stack","enterIcu","icuContainerIteratorNext","removeOpCode","loader","setTNodeInsertBeforeIndex","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","toMaskBit","tagMatched","inTemplate","bindingMask","mainBinding","addUpdateIcuSwitch","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","parseICUBlock","icuType","prevPos","braceStack","braces","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","ɵɵi18n","messageIndex","tI18n","ɵɵi18nStart","ɵɵi18nExp","ɵɵi18nApply","applyI18n","viewProviders","resolveProvider$1","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","processProvidersFn","noComponentFactoryError","ComponentFactoryResolver","createElementRef","SWITCH_ELEMENT_REF_FACTORY","ElementRef","unwrapElementRef","Renderer2","SWITCH_RENDERER2_FACTORY","nodeAtIndex","getOrCreateRenderer2","Sanitizer","trackByFn","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","_nextPrevious","_nextAdded","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","put","_prevDup","_nextDup","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","collectNativeNodes","lNode","lViewInAContainer","lViewFirstChildTNode","nodesInSlot","_cdRefInjectingView","_attachedToViewContainer","viewRefs","checkNoChangesInternal","appRef","checkNoChangesInRootView","SWITCH_CHANGE_DETECTOR_REF_FACTORY","injectChangeDetectorRef","ChangeDetectorRef","__ChangeDetectorRef__","isPipe","createViewRef","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","SWITCH_TEMPLATE_REF_FACTORY","createTemplateRef","TemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","SWITCH_VIEW_CONTAINER_REF_FACTORY","createContainerRef","ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","projectableNodes","ngModuleRef","contextInjector","parentInjector","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","trackMovedView","insertView","parentNativeNode","addViewToContainer","attachToViewContainerRef","getOrCreateViewRefs","viewRefsArr","commentNode","nativeNextSibling","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","componentDef","toRefArray","nonMinified","templateName","SCHEDULER","isBoundToModule","rootSelectorOrNode","tElementNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","ShadowDom","rElement","locateHostElement","getNamespace$1","rootFlags","clean","playerHandler","rootTView","rootLView","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","nodesforSlot","hostFeatures","instantiateRootComponent","createRootComponent","_rootLView","_bootstrapComponents","destroyCbs","ngLocaleIdDef","_r3Injector","injectFlags","moduleType","visited","recurse","incoming","assertSameOrNotExisting","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","ɵɵpureFunction4","bindingRoot","getPureFunctionReturnValue","pureFunction4Internal","ɵɵpureFunction5","exp5","returnValueIndex","lastReturnValue","ɵɵpipe","pipeName","getPipeDef$1","pipeFactory","pipeInstance","ɵɵpipeBind1","unwrapValue$1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","unwrap","_wrapInTimeout","EventEmitter","isAsync","__isAsync","nextFn","errorFn","completeFn","symbolIterator","_results","_emitDistinctChangesOnly","_changesDetected","_changes","QueryList","resultsTree","identityAccessor","newResultFlat","queryList","LQuery_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","LQueries_","dirtyQueriesWithMatches","getTQuery","read","queriesForTemplateRef","childQueryIndex","tqueryClone","TQueries_","tquery","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","TQuery_","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","ɵɵloadQuery","track","ɵɵtemplateRefExtractor","ɵɵinjectPipeChangeDetectorRef","Input","bindingPropertyName","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","rej","asyncInitPromises","initResult","catch","APP_ID","APP_ID_RANDOM_PROVIDER","_randomChar","PLATFORM_INITIALIZER","PLATFORM_ID","APP_BOOTSTRAP_LISTENER","Console","LOCALE_ID$1","DEFAULT_CURRENCY_CODE","ngModuleFactory","componentFactories","Compiler_compileModuleSync__POST_R3__","Compiler_compileModuleSync","Compiler_compileModuleAsync","Compiler_compileModuleAndAllComponentsSync__POST_R3__","declaration","Compiler_compileModuleAndAllComponentsSync","Compiler_compileModuleAndAllComponentsAsync","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","Zone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onError","assertZonePatched","delayChangeDetectionForEventsDelegate","_nesting","_outer","_inner","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","onInvokeTask","applyThis","applyArgs","invokeTask","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","EMPTY_PAYLOAD","runGuarded","NgZone","isInAngularZone","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","testability","findInAncestors","findTestabilityInTree","setTestabilityGetter","getter","_devMode","_runModeLocked","isDevMode","enableProdMode","compileNgModuleFactory","moduleFactory","ALLOW_MULTIPLE_PLATFORMS","createPlatform","inits","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","injectedProviders","assertPlatform","requiredToken","PlatformRef","_modules","_destroyListeners","ngZoneOption","ngZoneEventCoalescing","ngZoneRunCoalescing","ngZoneInjector","moduleRef","exceptionHandler","initStatus","runInitializers","_moduleDoBootstrap","_callAndReportToErrorHandler","compilerOptions","optionsReducer","bootstrapModuleFactory","ngDoBootstrap","ApplicationRef","_exceptionHandler","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","tick","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","componentOrFactory","compRef","testabilityRegistry","registerApplication","unregisterApplication","_loadComponent","attachToAppRef","detachFromAppRef","factoryPathPrefix","factoryPathSuffix","SystemJsNgModuleLoader","_compiler","loadAndCompile","exportName","checkNotEmpty","factoryClassSuffix","modulePath","getDebugNodeR2","_nativeNode","platformCore","APPLICATION_MODULE_PROVIDERS","ApplicationModule","numbersPast","numbersFuture","verbalNumber","MatCalendarBody_tr_0_Template","_cellPadding","numCols","MatCalendarBody_tr_1_td_1_Template","_firstRowOffset","labelMinRequiredCells","MatCalendarBody_tr_1_td_2_Template","item_r6","_cellClicked","colIndex_r7","rowIndex_r3","_cellWidth","_isActiveCell","_isRangeStart","compareValue","_isRangeEnd","_isInRange","_isComparisonBridgeStart","_isComparisonBridgeEnd","_isComparisonStart","_isComparisonEnd","_isInComparisonRange","_isPreviewStart","_isPreviewEnd","_isInPreview","_isSelected","_isComparisonIdentical","todayValue","MatCalendarBody_tr_1_Template","row_r2","MatMonthView_th_3_Template","day_r1","long","MatCalendar_ng_template_0_Template","MatCalendar_mat_month_view_2_Template","activeDate","_dateSelected","dateFilter","dateClass","comparisonStart","comparisonEnd","MatCalendar_mat_year_view_3_Template","_monthSelectedInYearView","_goToDateInView","MatCalendar_mat_multi_year_view_4_Template","_yearSelectedInMultiYearView","MatDatepickerContent_ng_template_2_Template","MatDatepickerToggle__svg_svg_2_Template","MatDatepickerIntl","calendarLabel","openCalendarLabel","closeCalendarLabel","prevMonthLabel","nextMonthLabel","prevYearLabel","nextYearLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","MatCalendarCell","rawValue","MatCalendarBody","activeCell","isRange","cellAspectRatio","previewStart","previewEnd","selectedValueChange","previewChange","_enterHandler","_skipNextFocus","_getCellFromElement","_leaveHandler","isTableCell","endValue","columnChanges","cellNumber","movePreview","isInRange","previousCell","previousRow","nextRow","rangeEnabled","DateRange","MatDateSelectionModel","_selectionChanged","MatSingleDateSelectionModel","_isValidDateInstance","updateSelection","MatRangeDateSelectionModel","MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER","MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER","MAT_DATE_RANGE_SELECTION_STRATEGY","DefaultMatCalendarRangeStrategy","MAT_CALENDAR_RANGE_STRATEGY_PROVIDER","MatMonthView","_dateFormats","_rangeStrategy","_rerenderSubscription","selectedChange","_userSelection","activeDateChange","_activeDate","oldActiveDate","validDate","getValidDateOrNull","deserialize","clampDate","_hasSameMonthAndYear","_init","_setRanges","comparisonChange","rangeStartDate","rangeEndDate","selectedYear","selectedMonth","createDate","_getDateInCurrentMonth","_previewStart","_previewEnd","addCalendarDays","getNumDaysInMonth","addCalendarYears","_focusActiveCell","_todayDate","_getCellCompareValue","_monthLabel","monthLabel","getMonthNames","toLocaleUpperCase","firstOfMonth","_firstWeekOffset","getDayOfWeek","getFirstDayOfWeek","_initWeekdays","_createWeekCells","_matCalendarBody","previewRange","createPreview","narrowWeekdays","getDayOfWeekNames","_weekdays","daysInMonth","dateNames","getDateNames","_weeks","_shouldEnableDate","cellClasses","d2","selectedValue","_rangeStart","_rangeEnd","_isRange","_comparisonRangeStart","_comparisonRangeEnd","_previewChanged","_handleCalendarBodyKeydown","yearsPerPage","MatMultiYearView","yearSelected","isSameMultiYearView","_setSelectedYear","_todayYear","minYearOfPage","getActiveOffset","_years","_createCellForYear","_yearSelected","yearName","getYearName","_shouldEnableYear","_selectedYear","_getActiveCell","dateAdapter","date2","year1","year2","startingYear","getStartingYear","MatYearView","monthSelected","_setSelectedMonth","normalizedDate","_monthSelected","_todayMonth","_getMonthInCurrentYear","_yearLabel","monthNames","_months","_createCellForMonth","monthName","_shouldEnableMonth","activeYear","_isYearAndMonthAfterMaxDate","_isYearAndMonthBeforeMinDate","maxYear","maxMonth","minYear","minMonth","_selectedMonth","MatCalendarHeader","_buttonDescriptionId","maxYearOfPage","minYearName","maxYearName","formatYearRange","_isSameView","MatCalendar","currentPeriodClicked","previousClicked","nextClicked","periodButtonLabel","periodButtonText","previousEnabled","prevButtonLabel","nextEnabled","nextButtonLabel","_moveFocusOnNextTick","viewChanged","_startAt","_clampedActiveDate","_currentView","viewChangedResult","_calendarHeaderPortal","startAt","focusActiveCell","_getCurrentViewComponent","monthView","yearView","multiYearView","sameDate","normalizedYear","normalizedMonth","matDatepickerAnimations","fadeInCalendar","datepickerUid","MAT_DATEPICKER_SCROLL_STRATEGY","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","MatDatepickerContentBase","_MatDatepickerContentMixinBase","MatDatepickerContent","_globalModel","_rangeSelectionStrategy","_subscriptions","_actionsPortal","_closeButtonText","datepicker","selectionFinished","touchUi","_selectYear","_selectMonth","_viewChanged","_handleUserSelection","_closeButtonFocused","_getMinDate","_getMaxDate","_getDateFilter","calendarHeaderComponent","_getSelected","MatDatepickerBase","_inputStateChanges","_touchUi","openedStream","closedStream","_opened","_focusedElementBeforeOpen","_backdropHarnessClass","datepickerInput","getThemePalette","_panelClass","_popupRef","_setConnectedPositions","_destroyPopup","_openAsDialog","_openAsPopup","_popupComponentRef","completeClose","_applyPendingSelection","_forwardContentValues","_createPopup","primaryX","secondaryX","primaryY","secondaryY","MatDatepicker","ɵMatDatepicker_BaseFactory","MatDatepickerInputEvent","MatDatepickerInputBase","dateChange","_validatorOnChange","_cvaOnChange","_valueChangesSubscription","_localeSubscription","_parseValidator","_lastValueValid","_filterValidator","controlValue","_matchesFilter","_minValidator","_maxValidator","_assignValueProgrammatically","_getValueFromModel","_parentDisabled","_assignValue","_shouldHandleChangeEvent","_isValidValue","_formatValue","dateInputsHaveChanged","lastValueWasValid","_assignValueToModel","MAT_DATEPICKER_VALUE_ACCESSOR","MatDatepickerInput","MAT_DATEPICKER_VALIDATORS","dateFormats","_closedSubscription","_datepicker","_registerModel","_min","_max","_dateFilter","wasMatchingValue","modelValue","_onKeydown","toIso8601","matDatepicker","MatDatepickerToggleIcon","MatDatepickerToggle","parsedTabIndex","_watchStateChanges","datepickerStateChanged","inputStateChanged","datepickerToggled","_customIcon","_button","MAT_DATE_RANGE_INPUT_PARENT","MatDateRangeInputPartBase","_rangeInput","_handleChildValueChange","_openDatepicker","_groupDisabled","_startInput","_endInput","opposite","_MatDateRangeInputBase","MatStartDate","defaultErrorStateMatcher","parentForm","parentFormGroup","_startValidator","rangePicker","MatEndDate","_endValidator","MatDateRangeInput","_ariaDescribedBy","_getPlaceholder","_rangePicker","wasMatchingStart","wasMatchingEnd","_revalidate","startEmpty","endEmpty","getMirrorValue","_shouldLabelFloat","_hasFloatingLabel","_getAriaLabelledby","_shouldHidePlaceholders","_updateFocus","_getInputMirrorValue","_shouldHideSeparator","MatDateRangePicker","ɵMatDateRangePicker_BaseFactory","MatDatepickerModule","NONE","CombineLatestOperator","CombineLatestSubscriber","toRespond","_tryResultSelector","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsNominative","monthsSubjective","MatButtonToggleModule","urlParsingNode","BrowserDomAdapter","groupEnd","getDefaultDocument","DocumentFragment","history","baseElement","cookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","dom","BrowserGetTestability","getAllTestabilities","getAllRootElements","testabilities","didWork","decrement","didWork_","whenStable","getTestability","isShadowRoot","EVENT_MANAGER_PLUGINS","_eventNameToPlugin","_findPluginFor","addGlobalEventListener","EventManagerPlugin","_doc","getGlobalEventTarget","SharedStylesHost","_stylesSet","additions","onStylesAdded","DomSharedStylesHost","_hostNodes","styleNodes","styleEl","hostNode","_addStylesToHost","styleNode","NAMESPACE_URIS","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","decoratePreventDefault","DomRendererFactory2","eventManager","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","addStyles","namespaceUri","removeAttributeNS","contentAttr","hostAttr","hostEl","attachShadow","addHost","removeHost","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","_keyMap","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","getZone","onAndCancel","domEventName","_normalizeKey","fullKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","DomSanitizer","DomSanitizerImpl","domSanitizerImplFactory","STYLE","SCRIPT","INTERNAL_BROWSER_PLATFORM_PROVIDERS","makeCurrent","platformBrowser","BROWSER_MODULE_PROVIDERS","BrowserModule","makeStateKey","TransferState","onSerializeCallbacks","initState","transferState","initTransferState","unescapedText","script","BrowserTransferStateModule","ReplaySubject","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","eventsCount","spliceCount","txtIlceAdi","IlceSearchPipe","originalModule","MatFormField_ng_container_3_Template","MatFormField_div_4_Template","MatFormField_label_9_ng_container_2_Template","MatFormField_label_9_ng_content_3_Template","MatFormField_label_9_span_4_Template","MatFormField_label_9_Template","_r14","updateOutlineGap","_shouldAlwaysFloat","appearance","_hasLabel","hideRequiredMarker","MatFormField_div_10_Template","MatFormField_div_11_Template","MatFormField_div_13_Template","_subscriptAnimationState","MatFormField_div_14_div_1_Template","_hintLabelId","hintLabel","MatFormField_div_14_Template","MAT_ERROR","MatError","matFormFieldAnimations","transitionMessages","MatFormFieldControl","_MAT_HINT","MatHint","MatLabel","MatPlaceholder","MAT_PREFIX","MAT_SUFFIX","MatSuffix","nextUniqueId$2","MatFormFieldBase","_MatFormFieldMixinBase","MAT_FORM_FIELD_DEFAULT_OPTIONS","MAT_FORM_FIELD","MatFormField","_labelOptions","_outlineGapCalculationNeededImmediately","_outlineGapCalculationNeededOnStable","_showAlwaysAnimate","_hintLabel","_getDefaultFloatLabelState","_animationsEnabled","_hideRequiredMarker","_appearance","_processHints","_explicitFormFieldControl","_controlNonStatic","_controlStatic","_connectionContainerRef","_validateControlChild","_validatePlaceholders","_syncDescribedByIds","_prefixChildren","_suffixChildren","_hintChildren","_errorChildren","_placeholderChild","_labelChildNonStatic","_labelChildStatic","_canLabelFloat","shouldLabelFloat","_hasPlaceholder","_validateHints","userAriaDescribedBy","_getDisplayedMessages","startHint","endHint","setDescribedByIds","labelEl","_isAttachedToDOM","startWidth","gapWidth","startEls","gapEls","containerStart","_getStartEnd","labelChildren","labelStart","outlineGapPadding","underlineRef","_inputContainerRef","_hideControlPlaceholder","autofilled","_shouldForward","onContainerClick","MatFormFieldModule","offcanvas","KTOffcanvas","getOffcanvas","OffcanvasDirective","innerIndex","pluck","plucker","currentProp","REGISTERED_ACTION_TYPES","createAction","defineType","_as","_p","creator","INIT","ActionsSubject","ACTIONS_SUBJECT_PROVIDERS","_ROOT_STORE_GUARD","_INITIAL_STATE","INITIAL_STATE","REDUCER_FACTORY","_REDUCER_FACTORY","INITIAL_REDUCERS","_INITIAL_REDUCERS","STORE_FEATURES","_STORE_REDUCERS","_FEATURE_REDUCERS","_FEATURE_CONFIGS","_STORE_FEATURES","_FEATURE_REDUCERS_TOKEN","FEATURE_REDUCERS","USER_PROVIDED_META_REDUCERS","META_REDUCERS","_RESOLVED_META_REDUCERS","USER_RUNTIME_CHECKS","_USER_RUNTIME_CHECKS","ACTIVE_RUNTIME_CHECKS","_ACTION_TYPE_UNIQUENESS_CHECK","combineReducers","reducerKeys","finalReducers","finalReducerKeys","hasChanged","previousStateForKey","nextStateForKey","createReducerFactory","reducerFactory","metaReducers","UPDATE","ReducerManager","addFeatures","reducerDict","createFeatureReducerFactory","addReducers","removeFeatures","removeReducers","updateReducers","featureKey","featureKeys","keyToRemove","REDUCER_MANAGER_PROVIDERS","ScannedActionsSubject","ɵScannedActionsSubject_BaseFactory","SCANNED_ACTIONS_SUBJECT_PROVIDERS","State","reducer$","stateAndAction$","reduceState","stateActionPair","STATE_PROVIDERS","Store","actionsObserver","reducerManager","pathOrMapFn","addReducer","removeReducer","STORE_PROVIDERS","propsOrPath","mapped$","pathSlices","isNgrxMockEnvironment","isEqualCheck","isArgumentsChanged","lastArguments","defaultMemoize","projectionFn","overrideResult","isArgumentsEqual","isResultEqual","setResult","clearResult","newResult","createSelector","createSelectorFactory","defaultStateFn","memoizedProjector","stateFn","projector","memoizedSelectors","release","memoizedState","createFeatureSelector","featureName","featureState","RUNTIME_CHECK_URL","targetPrototype","targetIsFunction","propValue","isFrozen","getUnserializable","throwIfUnserializable","unserializable","unserializablePath","createActiveRuntimeChecks","runtimeChecks","strictStateSerializability","strictActionSerializability","strictStateImmutability","strictActionImmutability","strictActionWithinNgZone","strictActionTypeUniqueness","createSerializationCheckMetaReducer","checks","serializationCheckMetaReducer","ignoreNgrxAction","createImmutabilityCheckMetaReducer","act","immutabilityCheckMetaReducer","createInNgZoneCheckMetaReducer","inNgZoneAssertMetaReducer","provideRuntimeChecks","_runtimeChecksFactory","checkForActionTypeUniqueness","_actionTypeUniquenessCheck","StoreRootModule","scannedActions$","actionCheck","StoreFeatureModule","featureReducers","feats","_initialStateFactory","StoreModule","_createStoreReducers","_concatMetaReducers","featureNameOrSlice","reducersOrConfig","_createFeatureStore","_createFeatureReducers","configs","featureStores","feat","conf","reducerCollection","userProvidedMetaReducers","activeLink","link","TabClickEventDirective","MapOperator","MapSubscriber","$hasOwn","InvalidCharacterError","pipeFromArray","assertThisInitialized","Iterator","__values","__read","ar","__spread","pack","SuppressedError","KTScrolltop","ScrollTopDirective","hasV8BreakIterator","v8BreakIterator","supportedInputTypes","supportsPassiveEvents","rtlScrollAxisType","scrollBehaviorSupported","shadowDomIsSupported","Platform","_platformId","BLINK","CSS","PlatformModule","candidateInputTypes","getSupportedInputTypes","featureTestInput","normalizePassiveListenerOptions","supportsPassiveEventListeners","supportsScrollBehavior","scrollToFunction","getRtlScrollAxisType","scrollContainer","containerStyle","contentStyle","createShadowRoot","_supportsShadowDom","ShadowRoot","FinallyOperator","FinallySubscriber","maxInt","regexPunycode","regexNonASCII","regexSeparators","mapDomain","ucs2encode","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","allowSparse","arrayLimit","decodeDotInKeys","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","strictDepth","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","leaf","cleanRoot","decodedRoot","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","encodedVal","existing","parseValues","multicast","subjectOrSubjectFactory","MulticastOperator","_DOM","getDOM","setRootDomAdapter","DomAdapter","PlatformLocation","useBrowserPlatformLocation","BrowserPlatformLocation","LOCATION_INITIALIZED","getLocation","_history","getHistory","getBaseHref","supportsState","pushState","replaceState","forward","back","createBrowserPlatformLocation","joinWithSlash","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","provideLocationStrategy","platformLocation","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_baseHref","onPopState","onHashChange","internal","includeHash","externalUrl","prepareExternalUrl","HashLocationStrategy","Location","platformStrategy","_urlChangeListeners","_platformStrategy","browserBaseHref","_stripIndexHtml","normalize","baseHref","_stripBaseHref","_notifyUrlChangeListeners","_urlChangeSubscription","onNext","onThrow","onReturn","createLocation","NumberFormatStyle","Plural","FormStyle","TranslationWidth","FormatWidth","NumberSymbol","getLocaleDayNames","formStyle","getLastDefinedValue","DaysFormat","DaysStandalone","getLocaleMonthNames","MonthsFormat","MonthsStandalone","getLocaleDateFormat","DateFormat","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","getLocaleNumberSymbol","NumberSymbols","CurrencyDecimal","Decimal","CurrencyGroup","Group","checkFullData","extractTime","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","DateType","TranslationType","timezone","parsedNb","tzHour","tzMin","dateSetter","timeSetter","isoStringToDate","getNamedFormat","dateTimezoneOffset","timezoneToOffset","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","dateStrGetter","Eras","Narrow","dateGetter","FullYear","weekNumberingYearGetter","Month","Months","weekGetter","Days","DayPeriods","Format","Hours","Minutes","Seconds","FractionalSeconds","timeZoneGetter","Extended","ShortGMT","Long","getDateFormatter","getLocaleId","Full","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","digits","minusSign","negWrap","strNum","formatFractionalSeconds","getDatePart","localeMinus","MinusSign","Day","extended","getDateTranslation","currentHours","currentMinutes","rules","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","amPm","DayPeriodsFormat","DayPeriodsStandalone","getLocaleDayPeriods","getLocaleEraNames","getFirstThursdayOfYear","firstDayOfYear","THURSDAY","getThursdayThisWeek","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","DECIMAL_SEP","ZERO_CHAR","DIGIT_CHAR","toPercent","parsedNumber","fractionLen","integerLen","exponent","parseNumber","zeros","numStr","MAX_DIGITS","roundNumber","minFrac","maxFrac","fractionSize","roundAt","dropTrailingZeros","carry","parseIntAutoRadix","NgLocalization","NgLocaleLocalization","Zero","Few","Many","parseCookieValue","cookieStr","eqIndex","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","rawClassVal","klass","ngClass","NgForOfContext","ngForOf","NgForOf","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_applyChanges","insertTuples","RecordViewTuple","_perViewChange","ilen","ngForTemplate","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","assertTemplate","ngIfThen","ngIfElse","SwitchView","_templateRef","_created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","_ngSwitch","_updateDefaultCases","_defaultViews","useDefault","enforceState","ngSwitch","NgSwitchCase","_addCase","_matchCase","ngSwitchCase","NgSwitchDefault","_addDefault","NgStyle","_ngStyle","nameAndUnit","_setStyle","ngStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","_shouldRecreateView","_updateExistingContext","ctxChange","_hasContextShapeChanged","prevCtxKeys","currCtxKeys","invalidPipeArgumentError","SubscribableStrategy","updateLatestValue","_promiseStrategy","_subscribableStrategy","AsyncPipe","_ref","_latestValue","_obj","_strategy","_dispose","_selectStrategy","createSubscription","_updateLatestValue","UpperCasePipe","DatePipe","DecimalPipe","digitsInfo","isValue","groupSymbol","decimalSymbol","formattedText","isZero","minInt","minFraction","maxFraction","minIntPart","minFractionPart","maxFractionPart","decimals","lgSize","gSize","Exponential","negPre","negSuf","posPre","posSuf","formatNumberToLocaleString","patternParts","positive","negative","positiveParts","integer","fraction","ch","trunkLen","parseNumberFormat","NumberFormats","getLocaleNumberFormat","strToNumber","SlicePipe","CommonModule","PLATFORM_BROWSER_ID","isPlatformBrowser","isPlatformServer","ViewportScroller","BrowserViewportScroller","supportsScrolling","elSelected","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","findAnchorFromDocument","attemptFocus","scrollRestoration","supportScrollRestoration","focusTarget","scrollRestorationDescriptor","getScrollRestorationProperty","ArventoModule","withComponents","CoreModule","FilterOperator","FilterSubscriber","ObserveOnOperator","ObserveOnSubscriber","ObserveOnMessage","scheduleMessage","listenerOptions","AutofillMonitor","_monitoredElements","isAutofilled","unlisten","_info","TextFieldModule","MAT_INPUT_VALUE_ACCESSOR","MAT_INPUT_INVALID_TYPES","_MatInputMixinBase","MatInput","inputValueAccessor","_autofillMonitor","_readonly","_neverEmptyInputTypes","_inputValueAccessor","_previousNativeValue","selectionStart","selectionEnd","_isServer","_isNativeSelect","_isTextarea","_validateType","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","_previousPlaceholder","validity","badInput","_isNeverEmpty","_isBadInput","selectElement","firstOption","_focusChanged","MatInputModule","deepExtend","Deferred","wrapCallback","FirebaseError","customData","captureStackTrace","ErrorFactory","serviceName","replaceTemplate","fullMessage","PATTERN","createSubscribe","executor","onNoObservers","ObserverProxy","unsubscribes","observerCount","finalized","forEachObserver","methods_1","implementsAnyMethods","unsub","unsubscribeOne","finalError","sendOne","queueScheduler","_ctorUnsubscribe","flattenUnsubscriptionErrors","teardown","tmp","subscriptionIndex","errs","inclusive","nextOrComplete","predicateResult","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","scrolled","_initialScrollPosition","isElementScrolledOutsideView","scrollContainers","containerBounds","isElementClippedByScrolling","scrollContainerRect","ScrollStrategyOptions","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_clickListener","_outsidePointerEvents","_cursorOriginalValue","isTestEnvironment","OverlayContainer","_createContainer","containerClass","oppositePlatformContainers","_host","_pane","_keyboardDispatcher","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","attachResult","_previousHostParent","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_toggleClasses","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","sizeConfig","getDirection","enablePointer","showingClass","backdropToDetach","boundingBoxClass","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_offsetX","_appliedPanelClasses","_validatePositions","_boundingBox","_isInitialRender","_lastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","originRect","viewportRect","flexibleFits","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","score","_previousPushAmount","justifyContent","scrollables","flexibleDimensions","growAfterOpen","canPush","_transformOriginSelector","startX","endX","overlayStartX","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","getPixelValue","pushX","pushY","overflowRight","overflowBottom","overflowTop","overflowLeft","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","xOrigin","yOrigin","transformOrigin","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","_pushOverlayOnScreen","virtualKeyboardOffset","originBounds","overlayBounds","scrollContainerBounds","isOriginClipped","isOriginOutsideView","isOverlayOutsideView","overflows","currentOverflow","originPos","overlayPos","viewportRuler","withFallbackPosition","onPositionChange","setDirection","withDefaultOffsetX","withDefaultOffsetY","wrapperClass","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","OverlayPositionBuilder","Overlay","_positionBuilder","_directionality","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","CdkConnectedOverlay","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","overlayKeydown","overlayOutsideClick","_templatePortal","_updatePositionStrategy","_detachOverlay","_buildConfig","attachments","outsidePointerEvents","_createPositionStrategy","transformOriginSelector","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","OverlayModule","processHoursFunction","nominative","accusative","genitive","_defineProperty","EmptyError","EmptyErrorImpl","toArrayReducer","TranslateFakeLoader","lang","ɵTranslateFakeLoader_BaseFactory","FakeMissingTranslationHandler","TranslateFakeCompiler","translations","ɵTranslateFakeCompiler_BaseFactory","keySet","t1","TranslateDefaultParser","templateMatcher","interpolateString","interpolateFunction","ɵTranslateDefaultParser_BaseFactory","currentLang","defaultLang","langs","onTranslationChange","onLangChange","onDefaultLangChange","USE_STORE","USE_DEFAULT_LANG","TranslateService","currentLoader","compiler","missingTranslationHandler","useDefaultLang","isolate","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","_defaultLang","_currentLang","retrieveTranslations","changeDefaultLang","changeLang","getTranslation","loadingTranslations","compileTranslations","updateLangs","shouldMerge","addLangs","getParsedResult","mergedObs","translateService","compile","resetLang","browserLang","languages","browserLanguage","userLanguage","TranslateDirective","onTranslationChangeSub","checkNodes","onLangChangeSub","onDefaultLangChangeSub","currentParams","lastKey","trimmedContent","originalContent","lastParams","onTranslation","translateParams","TranslatePipe","validArgs","TranslateModule","ɵZoneScheduler","targetZone","ɵAngularFireSchedulers","noopFunctions","ɵlazySDKProxy","spy","ɵapplyMixins","derivedCtor","baseCtor","FIREBASE_OPTIONS","FIREBASE_APP_NAME","FirebaseApp","ɵfirebaseAppFactory","apps","initializeApp","hmr","hot","ɵfetchInstance","ɵAngularfireInstanceCache","cachedArgs","cachedArg","FIREBASE_APP_PROVIDER","AngularFireModule","percentTwenties","RFC3986","TimeoutError","TimeoutErrorImpl","timeoutWith","withObservable","absoluteTimeout","waitFor","scheduleTimeout","TimeoutWithSubscriber","dispatchTimeout","delayTime","SubscribeOnObservable","HttpHandler","HttpBackend","HttpHeaders","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","lcName","copyFrom","applyUpdate","toDelete","HttpUrlEncodingCodec","standardEncoding","paramParser","rawParams","codec","eqIdx","decodeKey","decodeValue","HttpParams","cloneFrom","fromObject","eKey","encodeKey","encodeValue","isBlob","isFormData","HttpRequest","third","fourth","reportProgress","mightHaveBody","qIdx","HttpEventType","HttpResponseBase","defaultStatus","defaultStatusText","statusText","ok","HttpHeaderResponse","ResponseHeader","HttpResponse","Response","HttpErrorResponse","addBody","HttpClient","events$","res$","callbackParam","HttpInterceptorHandler","HTTP_INTERCEPTORS","NoopInterceptor","XSSI_PREFIX","XhrFactory","BrowserXhr","HttpXhrBackend","xhrFactory","detectedType","detectContentTypeHeader","reqBody","serializeBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseHeader","getResponseUrl","onLoad","originalBody","sentHeaders","onDownProgress","progressEvent","DownloadProgress","loaded","lengthComputable","partialText","onUpProgress","progress","UploadProgress","upload","Sent","DONE","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","cookieName","lastCookieString","lastToken","parseCount","cookieString","HttpXsrfInterceptor","tokenService","lcUrl","HttpInterceptingHandler","backend","interceptors","HttpClientXsrfModule","HttpClientModule","withOptions","navigationTrigger","restoredState","urlAfterRedirects","shouldActivate","snapshot","routeConfig","routerEvent","PRIMARY_OUTLET","convertToParamMap","navigationCancelingError","defaultUrlMatcher","segments","segmentGroup","pathMatch","posParams","consumed","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","containsTree","containee","exact","equalQueryParams","equalSegmentGroups","containsQueryParams","containsSegmentGroup","equalPath","numberOfChildren","containsSegmentGroupHelper","containeePaths","fragment","_queryParamMap","DEFAULT_SERIALIZER","serializePaths","_parameterMap","serializePath","as","parseRootSegment","parseQueryParams","parseFragment","strParams","serializeSegment","encodeUriQuery","childOutlet","mapChildrenIntoArray","encodeUriString","encodeUriSegment","decodeQuery","SEGMENT_RE","matchSegments","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","valueMatch","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","_root","pathFromRoot","findNode","findPath","cc","nodeChildrenAsMap","setRouterState","createEmptyState","urlTree","activated","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","futureSnapshot","_futureSnapshot","_routerState","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","routeReuseStrategy","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","setFutureSnapshotsOfActivatedRoutes","commands","nav","numberOfDoubleDots","cmd","cmdIdx","segmentPath","urlPart","partIndex","computeNavigation","toRoot","startingPosition","isMatrixParams","ci","createPositionApplyingDoubleDots","findStartingPosition","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","oldSegment","newSegment","cmdWithOutlet","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","createNewSegmentChildren","futureState","currState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","attachRef","activateRoutes","getOrCreateContext","stored","onOutletReAttached","advanceActivatedRouteNodeAndItsChildren","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","isUrlTree","INITIAL_VALUE","prioritizedGuardValue","isPending","innerAcc","ɵEmptyOutletComponent","validateConfig","parentPath","fullPath","getFullPath","validateNode","currentRoute","standardizeConfig","loadChildren","getOutlet","sortByMatchingOutlets","sortedConfig","consumedSegments","positionalParamSegments","matcher","slicedSegments","relativeLinkResolution","containsEmptyPathMatchesWithNamedOutlets","createChildrenForEmptyPaths","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","emptyPathMatch","primarySegment","isImmediateMatch","rawSegment","noLeftoversInUrl","noMatch$1","absoluteRedirect","newTree","namedOutletsRedirect","redirectTo","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","createUrlTree","squashSegmentGroup","noMatchError","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","expandedChild","expandSegmentAgainstRoute","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","lineralizeSegments","newSegments","rawSegmentGroup","cfg","rawSlicedSegments","getChildConfig","routerConfig","childModule","childConfig","splitSegmentGroup","matchedOnOutlet","runCanLoadGuards","shouldLoadResult","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","isCanLoad","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","childCandidate","mergeTrivialChildren","getClosestLoadedConfig","getChildRouteGuards","futurePath","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isActivated","newObservableError","rootComponentType","processSegmentGroup","routeState","inheritParamsAndData","routeNode","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","switchTap","nextResult","detachedTree","ROUTES","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","loadModuleFactory","newUrlPart","wholeUrl","defaultErrorHandler","defaultMalformedUriErrorHandler","defaultRouterHook","runExtras","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","lastLocationChangeInfo","navigationId","isNgZoneEnabled","malformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","resetConfig","currentUrlTree","rawUrlTree","browserUrlTree","routerState","currentRawUrl","extractedUrl","extract","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","eventsSubject","initialUrl","previousNavigation","urlTransition","shouldProcessUrl","serializeUrl","applyRedirects","finalUrl","serializer","recognize","recognize$1","skipLocationChange","setBrowserUrl","replaceUrl","routesRecognized","navStart","appliedUrlTree","guardsStart","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","fireChildActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChild","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivateChild","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","resetUrlToCurrentUrlTree","navCancel","resolveStart","dataResolved","canActivateChecksResolved","getResolver","resolveNode","resolvedData","runResolve","resolveEnd","redirecting","resetStateAndUrl","mergedTree","scheduleNavigation","navError","getTransition","setUpLocationChangeListener","locationSubscription","currentChange","extractLocationChangeInfoFromEvent","shouldScheduleNavigation","stateCopy","parseUrl","sameDestination","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","validateCommands","priorPromise","lastNavigation","browserNavPrecededByRouterNav","duplicateNav","setTransition","isCurrentPathEqualTo","go","storedState","storedUrl","RouterLink","onChanges","attrBoolValue","routerLink","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","onChildOutletCreated","onChildOutletDestroyed","activatedRoute","childContexts","RouterPreloader","moduleLoader","preloadingStrategy","preload","processRoutes","preloadConfig","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","setHistoryScrollRestoration","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","getScrollPosition","scheduleScrollEvent","scrollToPosition","scrollToAnchor","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","assignExtraOptionsToRouter","enableTracing","logGroup","logGroupEnd","routerNgProbeToken","RouterModule","provideRoutes","provideForRootGuard","createRouterScroller","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","scrollOffset","platformLocationStrategy","useHash","RouterInitializer","initNavigation","resultOfPreactivationDone","initialNavigation","bootstrappedComponentRef","preloader","routerScroller","setUpPreloading","resetRootComponentType","appInitializer","bootstrapListener","getAriaReferenceIds","MESSAGES_CONTAINER_ID","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","messageRegistry","messagesContainer","AriaDescriber","_canBeDescribed","setMessageId","messageElement","referenceCount","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","_isElementNode","_removeMessageReference","registeredMessage","_deleteMessageElement","_deleteMessagesContainer","describedElements","_removeCdkDescribedByReferenceIds","_createMessagesContainer","preExistingContainer","originalReferenceIds","existingId","filteredIds","referenceIds","messageId","trimmedMessage","ListKeyManager","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","_typeaheadSubscription","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","_pressedLetters","newItems","shouldWrap","_horizontal","debounceInterval","letter","inputString","_getItemsArray","getLabel","previousActiveItem","isModifierAllowed","setNextItemActive","setPreviousItemActive","_setActiveItemByIndex","_setActiveItemByDelta","itemArray","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ActiveDescendantKeyManager","setActiveStyles","FocusKeyManager","InteractivityChecker","hasGeometry","frameElement","getFrameElement","getTabIndexValue","tabIndexValue","isPotentiallyTabbableIOS","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","ignoreVisibility","FocusTrap","_checker","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","_startAnchor","_endAnchor","_toggleAnchorTabIndex","startAnchor","endAnchor","_createAnchor","_executeOnStable","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","isFocusable","focusableChild","_getRegionBoundary","tabbableChild","FocusTrapFactory","deferCaptureElements","CdkTrapFocus","_previouslyFocusedElement","focusTrap","_autoCapture","autoCapture","_captureFocus","autoCaptureChange","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_DEFAULT_OPTIONS","LiveAnnouncer","elementToken","_liveElement","_createLiveElement","_previousTimeout","previousElements","getElementsByClassName","liveEl","CdkAriaLive","_politeness","elementText","_previousAnnouncedText","isFakeMousedownFromScreenReader","isFakeTouchstartFromScreenReader","radiusX","radiusY","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_windowFocused","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_documentKeydownListener","_lastTouchTarget","_setOriginForCurrentEventQueue","_documentMousedownListener","_documentTouchstartListener","_touchTimeoutId","_windowFocusListener","_windowFocusTimeoutId","_rootNodeFocusAndBlurListener","_detectionMode","detectionMode","checkChildren","_getDocument","cachedInfo","_registerGlobalListeners","elementInfo","_setClasses","_removeGlobalListeners","_getClosestElementsInfo","_originChanged","shouldSet","_lastFocusOrigin","_wasCausedByTouch","_originTimeoutId","_getFocusOrigin","_emitOrigin","rootNodeFocusListeners","CdkMonitorFocus","cdkFocusChange","_monitorSubscription","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","documentWindow","computedColor","bodyClasses","getHighContrastMode","A11yModule","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","relativeTimeWithSingular","saveConfig","layoutConfig","getSavedConfig","setConfig","logo","menuAsideLeftSkin","logoObject","getStickyLogo","demo","reloadConfigs","LayoutConfigService","getAllItems","DataTableService","langIds","setDefaultLang","loadTranslations","setTranslation","use","getDefaultLang","TranslationService","layoutRefs$","layoutRefs","addElement","LayoutRefService","kod","lngUstKod","ustKod","lngSira","sira","aciklama","txtClassIcon","classIcon","bytGoster","submenu","parentId","menuList$","userMenuItems","UserMenu","loadMenu","aside","aSideMenuItems","ASideMenuItem","idMapping","aSideMenu","searchItem","firstElementUrl","retVal","MenuMasterYetkiResponse","MenuAsideService","MenuHorizontalService","getCurrentPageConfig","configPath","cleanUrl","pageConfig","urls","PageConfigService","stopped","SplashScreenService","pageConfigService","title$","breadcrumbs$","disabled$","manualBreadcrumbs","appendingBreadcrumbs","manualTitle","initBreadcrumb","headerMenus","asideMenus","updateBreadcrumbs","hideSubheader","setBreadcrumbs","appendBreadcrumbs","breadcrumbs","getBreadcrumbs","menus","getPath","SubheaderService","ktDialog","KTDialog","checkIsShown","KtDialogService","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","hasPrev","VIRTUAL_SCROLL_STRATEGY","minBufferPx","maxBufferPx","_scrolledIndexChange","scrolledIndexChange","_viewport","_itemSize","_minBufferPx","_maxBufferPx","_updateTotalContentSize","_updateRenderedRange","behavior","setTotalContentSize","getDataLength","renderedRange","dataLength","firstVisibleIndex","maxVisibleItems","newVisibleIndex","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","_fixedSizeVirtualScrollStrategyFactory","fixedSizeDir","CdkFixedSizeVirtualScroll","updateItemAndBufferSize","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","deregister","ancestors","scrollingContainers","_scrollableContainsElement","scrollableElement","CdkScrollable","scrollDispatcher","_elementScrolled","_applyScrollToOptions","LEFT","RIGHT","ViewportRuler","_change","_changeListener","_updateViewportSize","_viewportSize","throttleTime","SCROLL_SCHEDULER","CdkVirtualScrollViewport","_detachedSubject","_renderedRangeSubject","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_renderedRange","_dataLength","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","checkViewportSize","_calculateSpacerSize","_measureViewportSize","onContentScrolled","_markChangeDetectionNeeded","forOf","_forOf","newLength","onDataLengthChanged","_doChangeDetection","r1","r2","onContentRendered","axisDirection","_renderedContentTransform","measureRenderedContentSize","onRenderedOffsetChanged","contentEl","_contentWrapper","measureRangeSize","viewportEl","runAfter","runAfterChangeDetection","CdkVirtualForOf","_dataSourceChanges","_changeDataSource","_needsUpdate","_onRenderedDataChange","_cdkVirtualForOf","_cdkVirtualForTrackBy","firstNode","renderedStartIndex","rangeLen","_renderedItems","_updateContext","cdkVirtualForTrackBy","oldDs","newDs","_updateComputedContextProperties","cdkVirtualForOf","cdkVirtualForTemplate","cdkVirtualForTemplateCacheSize","CdkScrollableModule","ScrollingModule","shareSubjectFactory","MatTab_ng_template_0_Template","MatTabBody_ng_template_2_Template","MatTabGroup_div_2_ng_template_2_ng_template_0_Template","MatTabGroup_div_2_ng_template_2_Template","tab_r4","templateLabel","MatTabGroup_div_2_ng_template_3_Template","textLabel","MatTabGroup_div_2_Template","i_r5","_tabFocusChanged","_getTabLabelId","_tabs","_getTabContentId","MatTabGroup_mat_tab_body_5_Template","_r17","_removeTabBodyWrapperHeight","_setTabBodyWrapperHeight","tab_r14","i_r15","_MAT_INK_BAR_POSITIONER","MatInkBar","_inkBarPositioner","_setStyles","inkBar","MAT_TAB_CONTENT","MatTabContent","MAT_TAB_LABEL","MatTabBase","_MatTabMixinBase","MAT_TAB_GROUP","MatTab","_closestTabGroup","_contentPortal","_templateLabel","_setTemplateLabelInput","_explicitContent","_implicitContent","matTabsAnimations","translateTab","MatTabBodyPortal","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","isCentering","_content","_afterLeavingCenter","MatTabBody","_MatTabBodyBase","_dirChangeSubscription","_translateTabComplete","_onCentering","_onCentered","_computePositionAnimationState","_positionIndex","_computePositionFromOrigin","_getLayoutDirection","_portalHost","_onTranslateTabStarted","MAT_TABS_CONFIG","MatTabChangeEvent","MatTabGroupMixinBase","_MatTabGroupMixinBase","_MatTabGroupBase","_indexToSelect","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","_selectedIndex","headerPosition","selectedIndexChange","focusChange","animationDone","selectedTabChange","_groupId","disablePagination","dynamicHeight","_dynamicHeight","_animationDuration","_backgroundColor","_clampTabIndex","isFirstRun","_createChangeEvent","_tabBodyWrapper","_subscribeToAllTabChanges","_subscribeToTabLabels","_allTabs","_tabHeader","_alignInkBarToSelectedTab","tabHeight","tabHeader","MatTabGroup","MatTabHeader","MatTabLabelWrapper","MatTabLabelWrapperBase","_MatTabLabelWrapperMixinBase","MatPaginatedTabHeader","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","selectFocusedIndex","indexFocused","_stopInterval","_previousPaginator","_handlePaginatorPress","_nextPaginator","dirChange","realign","updatePagination","newFocusIndex","_setTabFocus","_tabLabelCount","_scrollToLabel","_checkScrollingControls","_scrollDistanceChanged","_updateTabScrollPosition","_itemSelected","_currentTextContent","_checkPaginationEnabled","_tabListContainer","scrollDistance","translateX","_tabList","_scrollTo","_scrollHeader","labelIndex","selectedLabel","labelBeforePos","labelAfterPos","viewLength","beforeVisiblePos","afterVisiblePos","_getMaxScrollDistance","selectedItem","selectedLabelWrapper","_inkBar","alignToElement","maxScrollDistance","_MatTabHeaderBase","_handlePaginatorClick","_onContentChanges","MatTabsModule","hookCallback","hasOwnProp","isObjectEmpty","arrLen","createUTC","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","_isValid","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","Moment","isMoment","suppressDeprecationWarnings","deprecationHandler","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","Locale","zeroFill","targetLength","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","formatMoment","expandFormat","makeFormatFunction","replaceLongDateFormatTokens","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","quarters","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","isoweeks","isoweek","normalizeUnits","normalizeObjectUnits","inputObject","normalizedInput","regexes","priorities","dayOfYear","weekYear","isoWeekYear","isoWeek","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","strictRegex","getParseRegexForToken","regexEscape","p1","p2","p3","p4","absFloor","argumentForCoercion","coercedNumber","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","isLeapYear","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","isUTC","setUTCMilliseconds","setMilliseconds","setUTCMinutes","setUTCDate","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","setUTCMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","dayOfYearFromWeeks","resYear","resDayOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","localeFamilies","commonPrefix","minl","loadLocale","oldLocale","isLocaleNameSane","_abbr","getSetGlobalLocale","getLocale","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","yearStr","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","configFromArray","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekdayOverflow","curWeek","createLocal","_week","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemFixWrap","erasConvertYear","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromStringAndArray","createFromInputFallback","configFromString","configFromObject","configFromInput","prototypeMin","prototypeMax","moments","ordering","Duration","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","setTime","local","getDateOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","addSubtract","isAdding","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","newLocaleData","defaultFormatUtc","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","sod","calendarFormat","asFloat","zoneDelta","startOfDate","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","priority","getPrioritizedUnits","prioritizedLen","toObject","keepOffset","isLocal","unix","creationData","eraName","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","dontConvert","lengthDiff","diffs","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","_eras","_monthsParseExact","_weekdaysMin","_weekdaysParseExact","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","KTToggle","ToggleDirective","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","setupSubscription","sourceObj","isEventTarget","isJQueryStyleEventEmitter","isNodeStyleEventEmitter","isScheduler","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun","isArray_1","isObject_1","isFunction_1","UnsubscriptionError_1","_a$1","LogLevel","levelStringToEnum","DEBUG","VERBOSE","INFO","WARN","ERROR","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","logLevel","_logLevel","_logHandler","_userLogHandler","setLogLevel","ERRORS","ERROR_FACTORY","name$c","PLATFORM_LOG_STRING","FirebaseAppImpl","firebase_","isDeleted_","name_","automaticDataCollectionEnabled_","automaticDataCollectionEnabled","options_","_addComponent","checkDestroyed_","removeApp","_getService","_removeServiceInstance","_addOrOverwriteComponent","appName","firebase$1","createFirebaseNamespace","firebaseAppImpl","__esModule","rawConfig","libraryKeyOrName","variant","library","libraryMismatch","versionMismatch","onLog","logCallback","customLogLevel","userLogHandler","ignored","instances_1","setUserLogHandler","useAsService","serviceNamespace","appArg","createFirebaseNamespaceCore","extendNamespace","PlatformLoggerService","getPlatformInfoString","isVersionServiceProvider","logString","sdkVersion","SkipOperator","SkipSubscriber","everyValueMatch","NgxPermissionsPredefinedStrategies","NgxPermissionsConfigurationStore","strategiesSource","strategies$","USE_CONFIGURATION_STORE","NgxPermissionsConfigurationService","configurationStore","onAuthorisedDefaultStrategy","onUnAuthorisedDefaultStrategy","getDefinedStrategy","isPredefinedStrategy","NgxPermissionsStore","permissionsSource","permissions$","functionToCheck","notEmptyValue","transformStringToArray","USE_PERMISSIONS_STORE","NgxPermissionsService","permissionsStore","hasArrayPermission","validationFunction","newPermissions","reducePermission","permissionName","hasPermissionValidationFunction","immutableValue","rolesSource","roles$","USE_ROLES_STORE","NgxRolesService","rolesStore","permissionsService","rolesObj","addRole","roleName","hasRoleKey","hasRolePermission","roleNames","hasPermission","hasPermissions","NgxPermissionsDirective","configurationService","rolesService","permissionsAuthorized","permissionsUnauthorized","firstMergeUnusedRun","initPermissionSubscription","validateExceptOnlyPermissions","onlyChanges","exceptChanges","ngxPermissionsExcept","validateExceptAndOnlyPermissions","ngxPermissionsOnly","validateOnlyPermissions","handleAuthorisedPermission","getAuthorisedTemplates","hasOnlyRoles","handleUnauthorisedPermission","ngxPermissionsExceptElse","ngxPermissionsElse","ngxPermissionsExceptThen","ngxPermissionsThen","ngxPermissionsOnlyThen","ngxPermissionsOnlyElse","currentAuthorizedState","getUnAuthorizedStrategyInput","applyStrategyAccordingToStrategyType","elseBlockDefined","applyStrategy","showTemplateBlockInView","getAuthorizedStrategyInput","thenBlockDefined","ngxPermissionsOnlyAuthorisedStrategy","ngxPermissionsExceptAuthorisedStrategy","ngxPermissionsAuthorisedStrategy","ngxPermissionsOnlyUnauthorisedStrategy","ngxPermissionsExceptUnauthorisedStrategy","ngxPermissionsUnauthorisedStrategy","getStrategy","NgxPermissionsGuard","childRoute","transformPermission","isParameterAvailable","except","passingExceptPermissionsValidation","only","passingOnlyPermissionsValidation","purePermissions","isRedirectionWithParameters","failedPermission","isAllFalse","handleRedirectOfFailedPermission","onlyRedirectCheck","redirectToAnotherRoute","checkOnlyPermissions","failedPermissionName","hasNavigationExtrasAsFunction","hasNavigationCommandsAsFunction","navigationCommands","pass","isFailedPermissionPropertyOfRedirectTo","NgxPermissionsModule","permissionsIsolate","rolesIsolate","configurationIsolate","ROUTER_REQUEST","ROUTER_NAVIGATION","ROUTER_CANCEL","ROUTER_ERROR","ROUTER_NAVIGATED","serializeRoute","paramMap","queryParamMap","NavigationActionTiming","_ROUTER_CONFIG","ROUTER_CONFIG","_createRouterConfig","stateKey","navigationActionTiming","PreActivation","RouterTrigger","StoreRouterConnectingModule","activeRuntimeChecks","lastEvent","setUpStoreStateListener","setUpRouterEventsListener","navigateIfNeeded","routerStoreState","storeState","ROUTER","isSameUrl","STORE","dispatchNavLate","PostActivation","dispatchRouterRequest","dispatchRouterNavigation","dispatchRouterCancel","dispatchRouterError","dispatchRouterNavigated","dispatchRouterAction","lastRoutesRecognized","nextRouterState","TRANSLATOR","SELECT","MENU","NEW","ACTIONS","CREATE_POST","PAGES","FEATURES","APPS","DASHBOARD","AUTH","GENERAL","OR","SUBMIT_BUTTON","NO_ACCOUNT","SIGNUP_BUTTON","FORGOT_BUTTON","BACK_BUTTON","PRIVACY","LEGAL","CONTACT","LOGIN","TITLE","BUTTON","FORGOT","DESC","SUCCESS","REGISTER","INPUT","EMAIL","FULLNAME","PASSWORD","CONFIRM_PASSWORD","USERNAME","VALIDATION","REQUIRED","MIN_LENGTH","AGREEMENT_REQUIRED","INVALID_LOGIN","REQUIRED_FIELD","MIN_LENGTH_FIELD","MAX_LENGTH_FIELD","INVALID_FIELD","ECOMMERCE","COMMON","SELECTED_RECORDS_COUNT","ALL","SUSPENDED","ACTIVE","FILTER","BY_STATUS","BY_TYPE","BUSINESS","INDIVIDUAL","SEARCH","IN_ALL_FIELDS","CUSTOMERS","CUSTOMERS_LIST","NEW_CUSTOMER","DELETE_CUSTOMER_SIMPLE","DESCRIPTION","WAIT_DESCRIPTION","MESSAGE","DELETE_CUSTOMER_MULTY","UPDATE_STATUS","EDIT","UPDATE_MESSAGE","ADD_MESSAGE","NEVER","ERR_SW_NOT_SUPPORTED","controllerChanges","currentController","controllerWithChanges","worker","registration","getRegistration","sw","postMessage","nonce","waitForStatus","eventsOfType","SwPush","subscriptionChanges","notificationClicks","pushManager","workerDrivenSubscriptions","pm","getSubscription","pushOptions","userVisibleOnly","decodeBase64","serverPublicKey","applicationServerKey","SwUpdate","unrecoverable","statusNonce","generateNonce","postMessageWithStatus","ngswAppInitializer","readyToRegister$","registrationStrategy","delayWithTimeout","stable","ngswCommChannelFactory","ServiceWorkerModule","guncellestirmeGoster","kapat","guncelle","activateUpdate","AppUpdateService","LoaderService","loaderService","LoaderCompComponent","loaderConfig","loaderLogo","loaderType","loaderMessage","splashScreen","SplashScreenComponent","appUpdateService","routerSubscription","AppComponent","brand","colors","danger","shape","skin","fixed","arrow","subheader","bullet","dashboard","ngbootstrap","alert","carousel","collapse","popover","progressbar","rating","timepicker","typehead","material","radiobutton","formfield","slidertoggle","sidenav","toolbar","card","divider","stepper","snackbar","table","mail","ecommerce","customers","products","edit","users","profile","404","403","wizard","onClassesUpdated$","header_mobile","header_menu","aside_menu","initLayout","initLoader","initHeader","initSubheader","initAside","initFooter","initSkins","getClasses","selfBodyClass","backgroundImage","HtmlClassService","plakaGoster","distadi","logintipi","slogan1","slogan2","BrisaheaderComponent","filoKullaniciServices","selectaktif","filoListesi","filovalue","secim","filoSecildi","logintype","filoListeGetir","FiloSelectComponent","YeniPlakaComponent","datax","kontrol","HomeButtonComponent","LogoutComponent","toggleOptions","targetState","togglerState","asideDisplay","HeaderMobileComponent","fluid","FooterComponent","offcanvasOptions","closeBy","toggleBy","QuickPanelComponent","scrollTopOptions","ScrollTopComponent","htmlClassService","headerStickyLogo","BrandComponent","menuAsideService","currentRouteUrl","menuCanvasOptions","menuOptions","tablet","asideMenu","isMenuItemIsActive","isMenuRootItemIsActive","mouseEnter","outsideTm","insideTm","KTUtil","isInResponsiveRange","mouseLeave","getItemCssClasses","getItemAttrSubmenuToggle","disableScroll","AsideLeftComponent","LoadingBarService","progress$","_pendingRequests","_incTimeout","rnd","stat","LoadingBarModule","greeting","FullName","user$","UserProfileComponent","TopbarComponent","menuHorService","slideSpeed","rootArrowEnabled","filosecim","menuType","getItemMenuSubmenuClass","MenuHorizontalComponent","layoutRefService","menuHeaderDisplay","ktHeader","topOnSevice","demoPanelOptions","topOnListesi","StickyToolbarComponent","MenuConfig","loadRolesWithPermissions","LayoutConfig","PageConfig","subscr","selfLayout","subheaderDisplay","desktopHeaderDisplay","fitTop","currentUserPermissions$","flushPermissions","addPermission","ErrorComponent","filtre","txtIlceAd","hoblTxtIlcePipe","txtLokasyonAd","hoblTxtLokasyonAdPipe","hoblTxtBayiAdPipe","lokasyonService","duzenleniyor","ilListesi","ilceListesi","oneriBayiListesi","filteredColumn","ilceFilter","bayiAdFilter","lokasyonIsimFilter","displayedFiltreColumns","onConfirmClick","initLokasyonForm","matButton","getWidthPercentage","getIletisim","lngBayiKod","bytTur","iletisimParametreler","txtDeger","lokasyonForm","lngIlceKod","ilFilter","isLokasyonControlHasError","ilceDegistir","getOneriBayiList","ara","BayilokasyondialogComponent","imageSrc","lokasyonAc","ArventoerrComponent","OtopratikModule","FiloRandevuGirisiModule","PerformansLastikParametreleriModule","DashboardModule","LastikAramaModule","TakvimModule","BayiTakvimiModule","HizmetNoktasiGunlukRandevuModule","HizmetNoktasiSecimiModule","MesaiSecimiModule","SaatSecimiModule","LokasyonDepoEslemeModule","HizmetNoktasiEklemeModule","LokasyonEklemeModule","GunSaatKapatmaModule","FiloTakvimiModule","FiloGunlukRandevuModule","FiloExcelUploadModule","LastikSaklamaModule","PerformansLastikAramaModule","SiparisGirisiModule","FiloSozlesmeliSecimModule","SiparislerimModule","SiparisDashboardModule","Taslaklarim2Module","ExcelYukleModule","ExelAktarimIzlemeModule","KullaniciAyarlariModule","BayiOnayIslemleriModule","BayiLokasyonGirisiModule","BayiYonetimIslemleriModule","PerformansLastikIlSecimModule","BayiSozlesmeGirisiModule","FiloModule","SepetimModule","SiparisGirisiKriterTanimlamaModule","GenelParametrelerModule","BayiYonetimModule","YetkiModule","AppRoutingModule","PagesModule","ThemeModule","LoaderCompModule","requestCounter","urlParts","LoaderInterCeptService","DEFAULT_PERFECT_SCROLLBAR_CONFIG","initializeLayoutConfig","appConfig","registerPlugins","AppModule","instrument","bootstrapModule","TileCoordinator","lastRowMax","tracker","numColumns","tiles","tile","_trackTile","gapStartIndex","_findMatchingGap","colspan","_markTilePosition","TilePosition","tileCols","gapEndIndex","_nextRow","_findGapEndIndex","rowspan","MAT_GRID_LIST","MatGridTile","_gridList","_rowspan","_colspan","cssCalcAllowedValue","TileStyler","_rows","gutterSize","_gutterSize","_cols","sizePercent","gutterFraction","baseSize","calc","percentWidthPerTile","gutterWidthFractionPerTile","setColStyles","setRowStyles","percentWidth","gutterWidth","baseTileWidth","getBaseTileSize","getTilePosition","getTileSize","tileHeight","FixedTileStyler","fixedRowHeight","getTileSpan","getGutterSpan","_setListStyle","_tiles","RatioTileStyler","_parseRatio","baseTileHeight","rowHeightRatio","ratioParts","FitTileStyler","MatGridList","_gutter","_rowHeight","_setTileStyler","_checkCols","_checkRowHeight","_layoutTiles","_tileStyler","_tileCoordinator","getComputedHeight","MatGridListModule","webpackEmptyAsyncContext","WithLatestFromOperator","WithLatestFromSubscriber","_tryProject","SimpleInnerSubscriber","SimpleOuterSubscriber"],"mappings":"srCAQA,IAAMA,EAAM,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,YAAa,CAAC,SACtCC,EAAM,CAAC,UAAW,iBA2CxB,SAASC,EAAoBC,GACzB,mBACI,aAAmB,qDAAJC,EAAI,yBAAJA,EAAI,uBACf,qBAASA,KACJC,SAAU,EAEf,EAAKC,mBAAoB,EAJV,EADvB,yDAQI,WAAe,OAAOC,KAAKF,SAR/B,IASI,SAAWG,GACP,IAAMC,EAAYF,KAAKF,QACvBE,KAAKF,QAAU,YAAsBG,GACrCD,KAAKD,kBAAoBG,IAAcF,KAAKF,UAZpD,8BAeI,WACI,IAAMK,EAAmBH,KAAKD,kBAE9B,OADAC,KAAKD,mBAAoB,EAClBI,IAlBf,gCAqBI,WACIH,KAAKD,mBAAoB,MAtBjC,CAAqBH,GAsCzB,IAAMQ,EAAY,IAAI,IAAe,a,iBAe/BC,E,YACF,WAAiCC,GAAQ,oBACrCN,KAAKM,SAAWA,I,OAGxBD,EAAWE,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKH,GAAY,KAAyB,OACzGA,EAAWI,UAAO,KAAyB,CAAEC,KAAML,EAAYM,UAAW,CAAC,CAAC,GAAI,aAAc,O,sBAYxFC,E,YACF,WAAiCN,GAAQ,oBACrCN,KAAKM,SAAWA,I,OAGxBM,EAAiBL,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKI,GAAkB,KAAyB,OAC3HA,EAAiBH,UAAO,KAAyB,CAAEC,KAAME,EAAkBD,UAAW,CAAC,CAAC,GAAI,mBAAoB,O,sBAY1GE,E,YACF,WAAiCP,GAAQ,oBACrCN,KAAKM,SAAWA,I,OAGxBO,EAAiBN,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKK,GAAkB,KAAyB,OAC3HA,EAAiBJ,UAAO,KAAyB,CAAEC,KAAMG,EAAkBF,UAAW,CAAC,CAAC,GAAI,mBAAoB,O,KAY1GG,EAAoBnB,E,iEAKpBoB,E,YACF,WAAYC,GAAM,kCACd,aACKA,OAASA,EACd,EAAKC,YAAa,EAHJ,E,uDAMlB,WAAa,OAAOjB,KAAKkB,O,IACzB,SAASC,GAAQnB,KAAKoB,cAAcD,K,qBAMpC,WACI,OAAOnB,KAAKiB,Y,IAEhB,SAAchB,GACV,IAAMC,EAAYF,KAAKiB,WACvBjB,KAAKiB,WAAa,YAAsBhB,GACxCD,KAAKD,kBAAoBG,IAAcF,KAAKiB,a,uCAShD,WACIjB,KAAKqB,oBAAsB,CAAC,cAAD,OAAerB,KAAKsB,yB,2BAQnD,SAAcC,GAGNA,IACAvB,KAAKkB,MAAQK,EACbvB,KAAKsB,qBAAuBC,EAAMC,QAAQ,gBAAiB,KAC3DxB,KAAKyB,iC,CA5CUX,G,OAgD3BC,EAAaR,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKO,GAAc,KAAyBX,EAAW,KAC1HW,EAAaN,UAAO,KAAyB,CAAEC,KAAMK,EAAcJ,UAAW,CAAC,CAAC,GAAI,eAAgB,KAAMe,eAAgB,SAAqCC,EAAIC,EAAKC,GAKhK,IAAIC,EALiL,EAALH,IAChL,KAAsBE,EAAU,EAAY,GAC5C,KAAsBA,EAAU,EAAkB,GAClD,KAAsBA,EAAU,EAAkB,IAC3C,EAALF,IAEF,KAAsBG,EAAK,UAA0BF,EAAIG,KAAOD,EAAGE,OACnE,KAAsBF,EAAK,UAA0BF,EAAIK,WAAaH,EAAGE,OACzE,KAAsBF,EAAK,UAA0BF,EAAIM,WAAaJ,EAAGE,SACxEG,OAAQ,CAAEC,OAAQ,SAAUjB,KAAM,CAAC,eAAgB,QAASkB,UAAW,aAAeC,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,6BAA8BC,YAAazB,KAAkB,Q,KAwCvM,E,YACF,WAAY0B,EAAWC,GAAU,oBAG7B,IAH6B,EAGvBC,EAAYD,EAAWE,cAAcD,UAHd,cAILF,EAAUpB,qBAJL,IAI7B,2BACIsB,EAAUE,IADyC,SAJ1B,iC,iBAU/BC,E,YACF,WAAYL,EAAWC,GAAU,qCACvBD,EAAWC,I,wCAFG,G,OAK5BI,EAAcvC,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKsC,GAAe,KAAyB,GAAe,KAAyB,OAC1JA,EAAcrC,UAAO,KAAyB,CAAEC,KAAMoC,EAAenC,UAAW,CAAC,CAAC,mBAAoB,CAAC,KAAM,kBAAmB,KAAMoC,UAAW,CAAC,OAAQ,eAAgB,EAAG,mBAAoBT,SAAU,CAAC,Q,sBAgBtMU,E,YACF,WAAYP,EAAWC,GAAU,qCACvBD,EAAWC,I,wCAFG,G,OAK5BM,EAAczC,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKwC,GAAe,KAAyB,GAAe,KAAyB,OAC1JA,EAAcvC,UAAO,KAAyB,CAAEC,KAAMsC,EAAerC,UAAW,CAAC,CAAC,mBAAoB,CAAC,KAAM,kBAAmB,KAAMoC,UAAW,CAAC,OAAQ,WAAY,EAAG,mBAAoBT,SAAU,CAAC,Q,sBAgBlMW,E,YACF,WAAYR,EAAWC,GAAU,qCACvBD,EAAWC,I,wCAFH,G,OAKtBO,EAAQ1C,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKyC,GAAS,KAAyB,GAAe,KAAyB,OACxIA,EAAQxC,UAAO,KAAyB,CAAEC,KAAMuC,EAAStC,UAAW,CAAC,CAAC,YAAa,CAAC,KAAM,WAAY,KAAMoC,UAAW,CAAC,OAAQ,WAAY,EAAG,YAAaT,SAAU,CAAC,Q,KA0BjK,E,YACF,iCACItC,KAAKkD,MAAQ,GACblD,KAAKmD,SAAW,KAIlBC,EAA6B,IAAI,IAAe,8B,iBAQhDC,E,8BACF,WAAYC,GAAO,oBACftD,KAAKsD,QAAUA,EACftD,KAAKuD,iBAAmB,KACxBvD,KAAKwD,WAAa,IAAIC,EAAA,G,uBAK1B,SAASC,GACL1D,KAAK2D,0BACL3D,KAAKuD,iBAAiBL,MAAMU,KAAKF,K,yBAMrC,SAAYA,GACR1D,KAAK2D,0BACL3D,KAAKuD,iBAAiBJ,SAASS,KAAKF,K,yBAGxC,WACI1D,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,a,qCAEpB,WAAuB,WACf9D,KAAKuD,mBAGTvD,KAAKuD,iBAAmB,IAAI,EAC5BvD,KAAK+D,yBAAyBC,KAAK,OAAAC,EAAA,GAAUjE,KAAKwD,aAAaU,UAAU,WACrE,KAAO,EAAKX,iBAAiBL,MAAMiB,QAAU,EAAKZ,iBAAiBJ,SAASgB,QAAQ,CAChF,IAAMC,EAAW,EAAKb,iBAEtB,EAAKA,iBAAmB,IAAI,EAHoD,oBAI7Da,EAASlB,OAJoD,IAIhF,4BACIQ,EAD+B,WAJ6C,kDAO7DU,EAASjB,UAPoD,IAOhF,4BACI,EADkC,WAP0C,+BAWpF,EAAKI,iBAAmB,U,oCAGhC,WAGI,OAAOvD,KAAKsD,QAAQe,SAChB,OAAAC,EAAA,GAAKC,QAAQC,aAAQC,IACrBzE,KAAKsD,QAAQoB,SAASV,KAAK,OAAAW,EAAA,GAAK,Q,UAG5CtB,EAAyB9C,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAK6C,GAA0B,KAAgB,OAC1IA,EAAyBuB,WAAQ,KAA0B,CAAEC,MAAOxB,EAA0ByB,QAASzB,EAAyB9C,Y,sBAwB1HwE,E,8BACF,WACqBzE,EAAU0E,GAAQ,oBACnChF,KAAKM,SAAWA,EAChBN,KAAKgF,SAAWA,G,0BAEpB,SAAYC,GAGR,IAAKjF,KAAKkF,eAAgB,CACtB,IAAMC,EAAWF,EAAO,SAAeA,EAAO,QAAYG,cAAiB,GAC3EpF,KAAKkF,eAAiBlF,KAAKgF,SAASK,KAAKF,GAASG,SAClDtF,KAAKkF,eAAeK,KAAKJ,M,4BAOjC,WACI,OAAOnF,KAAKkF,eAAeK,KAAKvF,KAAKmF,W,iCAGzC,SAAoBK,GAChB,OAAIxF,gBAAgB,EACTwF,EAAOvD,WAAW3B,SAEzBN,gBAAgB,EACTwF,EAAOtD,WAAW5B,SAGlBkF,EAAOzD,KAAKzB,a,UAI/ByE,EAAWxE,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKuE,GAAY,KAAyB,KAAqB,KAAyB,OACvJA,EAAWtE,UAAO,KAAyB,CAAEC,KAAMqE,EAAYzC,SAAU,CAAC,Q,KAYpEmD,EAAuB9F,E,gHAFK,I,iBAO5B+F,E,YACF,WAAYpF,EAAU0E,EAAUhE,GAAM,kCAClC,YAAMV,EAAU0E,KACXhE,OAASA,EAFoB,E,gEAMtC,SAAYiE,GACR,2BAAkBA,Q,CARIQ,G,OAW9BC,EAAgBnF,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKkF,GAAiB,KAAyB,KAAqB,KAAyB,KAAyB,KAAyBtF,EAAW,KACnOsF,EAAgBjF,UAAO,KAAyB,CAAEC,KAAMgF,EAAiB/E,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMwB,OAAQ,CAAEgD,QAAS,CAAC,kBAAmB,WAAY/C,OAAQ,CAAC,wBAAyB,WAAaE,SAAU,CAAC,KAAmC,Q,KAsB7PqD,EAAuBhG,E,gHAFK,I,iBAO5BiG,E,YACF,WAAYtF,EAAU0E,EAAUhE,GAAM,kCAClC,YAAMV,EAAU0E,KACXhE,OAASA,EAFoB,E,gEAMtC,SAAYiE,GACR,2BAAkBA,Q,CARIU,G,OAW9BC,EAAgBrF,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKoF,GAAiB,KAAyB,KAAqB,KAAyB,KAAyB,KAAyBxF,EAAW,KACnOwF,EAAgBnF,UAAO,KAAyB,CAAEC,KAAMkF,EAAiBjF,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMwB,OAAQ,CAAEgD,QAAS,CAAC,kBAAmB,WAAY/C,OAAQ,CAAC,wBAAyB,WAAaE,SAAU,CAAC,KAAmC,Q,sBAuB7PuD,E,YAGF,WAAYvF,EAAU0E,EAAUhE,GAAM,kCAClC,YAAMV,EAAU0E,KACXhE,OAASA,EAFoB,E,wCAHlB,G,OAQxB6E,EAAUtF,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKqF,GAAW,KAAyB,KAAqB,KAAyB,KAAyB,KAAyBzF,EAAW,KACjNyF,EAAUpF,UAAO,KAAyB,CAAEC,KAAMmF,EAAWlF,UAAW,CAAC,CAAC,GAAI,YAAa,KAAMwB,OAAQ,CAAEgD,QAAS,CAAC,mBAAoB,WAAYW,KAAM,CAAC,gBAAiB,SAAWxD,SAAU,CAAC,Q,sBAsB7LyD,E,WACF,WAAYC,GAAc,oBACtBhG,KAAKgG,eAAiBA,EACtBD,EAAcE,qBAAuBjG,K,+CAEzC,WAGQ+F,EAAcE,uBAAyBjG,OACvC+F,EAAcE,qBAAuB,U,UAIjDF,EAAcxF,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKuF,GAAe,KAAyB,OAClHA,EAActF,UAAO,KAAyB,CAAEC,KAAMqF,EAAepF,UAAW,CAAC,CAAC,GAAI,gBAAiB,OAQvGoF,EAAcE,qBAAuB,K,sBAS/BC,E,sDAENA,EAAa3F,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK0F,IACxEA,EAAaC,UAAO,KAAyB,CAAEzF,KAAMwF,EAAcvF,UAAW,CAAC,CAAC,kBAAmB,CAAC,KAAM,iBAAkB,KAAMoC,UAAW,CAAC,OAAQ,MAAO,EAAG,kBAAmBqD,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,gBAAiB,KAAMhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,GACvR,KAA0B,EAAG,IAC5B4E,WAAY,CAAC,GAAgBC,cAAe,I,sBAiB/CC,E,sDAENA,EAAalG,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKiG,IACxEA,EAAaN,UAAO,KAAyB,CAAEzF,KAAM+F,EAAc9F,UAAW,CAAC,CAAC,kBAAmB,CAAC,KAAM,iBAAkB,KAAMoC,UAAW,CAAC,OAAQ,MAAO,EAAG,kBAAmBqD,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,gBAAiB,KAAMhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,GACvR,KAA0B,EAAG,IAC5B4E,WAAY,CAAC,GAAgBC,cAAe,I,uBAiB/CE,E,sDAENA,EAAOnG,UAAO,SAAwBC,GAAK,OAAO,IAAKA,GAAKkG,IAC5DA,EAAOP,UAAO,KAAyB,CAAEzF,KAAMgG,EAAQ/F,UAAW,CAAC,CAAC,WAAY,CAAC,KAAM,UAAW,KAAMoC,UAAW,CAAC,OAAQ,MAAO,EAAG,WAAYqD,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,gBAAiB,KAAMhG,SAAU,SAAyBqB,EAAIC,GAAgB,EAALD,GAChP,KAA0B,EAAG,IAC5B4E,WAAY,CAAC,GAAgBC,cAAe,I,uBAiB/CG,E,YACF,WAAYC,GAAW,oBACnB5G,KAAK4G,YAAcA,I,OAG3BD,EAAapG,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKmG,GAAc,KAAyB,OAC/GA,EAAalG,UAAO,KAAyB,CAAEC,KAAMiG,EAAchG,UAAW,CAAC,CAAC,cAAe,eAAgB,O,KAsBzGkG,GAAoB,CAAC,MAAO,SAAU,OAAQ,SAK9C,G,8BAeF,WAAYC,EAAoBC,EAAeC,EAK/CC,GAAoG,IAA1EC,IAA0E,yDAAvDC,IAAuD,yDAAjBC,EAAiB,2DAChGpH,KAAK8G,mBAAqBA,EAC1B9G,KAAK+G,cAAgBA,EACrB/G,KAAKgH,UAAYA,EACjBhH,KAAKiH,yBAA2BA,EAChCjH,KAAKkH,WAAaA,EAClBlH,KAAKmH,8BAAgCA,EACrCnH,KAAKoH,kBAAoBA,EACzBpH,KAAKqH,kBAAoB,GACzBrH,KAAKsH,eAAiB,CAClB,cAAUP,EAAV,oBACA,iBAAaA,EAAb,uBACA,eAAWA,EAAX,qBACA,gBAAYA,EAAZ,wB,qCASR,SAAuBQ,EAAMC,GAAgB,aACnCC,EAAkB,GADiB,cAEvBF,GAFuB,IAEzC,2BAAwB,KAAbG,EAAa,QAGpB,GAAIA,EAAIC,WAAaD,EAAIE,aAAzB,CAGAH,EAAgB7D,KAAK8D,GACrB,IAAK,IAAIG,EAAI,EAAGA,EAAIH,EAAII,SAAS3D,OAAQ0D,IACrCJ,EAAgB7D,KAAK8D,EAAII,SAASD,MAVD,8BAczC7H,KAAK+H,sBAAsB,WACvB,cAAsBN,EAAtB,eACI,EAAKO,mBADS,KACmBR,O,iCAe7C,SAAoBD,EAAMU,EAAmBC,GAA6C,WAA5BC,IAA4B,yDACtF,GAAKZ,EAAKpD,QAAWnE,KAAKkH,aAAgBe,EAAkBG,KAAK,SAAAC,GAAK,OAAIA,KACtEH,EAAgBE,KAAK,SAAAC,GAAK,OAAIA,KADlC,CAQA,IAAMC,EAAWf,EAAK,GAChBgB,EAAWD,EAASR,SAAS3D,OAC7BqE,EAAaxI,KAAKyI,eAAeH,EAAUH,GAC3CO,EAAiB1I,KAAK2I,+BAA+BH,EAAYP,GACjEW,EAAe5I,KAAK6I,6BAA6BL,EAAYN,GAC7DY,EAAkBb,EAAkBc,aAAY,GAChDC,EAAiBd,EAAgBe,SAAQ,GAE/CjJ,KAAK+H,sBAAsB,WACvB,IAD4B,EACtBmB,EAA2B,QAAnB,EAAKlC,UACbmC,EAAQD,EAAQ,QAAU,OAC1BE,EAAMF,EAAQ,OAAS,QAHD,cAIV3B,GAJU,IAI5B,2BACI,IADoB,IAAbG,EAAa,QACXG,EAAI,EAAGA,EAAIU,EAAUV,IAAK,CAC/B,IAAM9F,EAAO2F,EAAII,SAASD,GACtBI,EAAkBJ,IAClB,EAAKwB,gBAAgBtH,EAAMoH,EAAOT,EAAeb,GAAIA,IAAMiB,GAE3DZ,EAAgBL,IAChB,EAAKwB,gBAAgBtH,EAAMqH,EAAKR,EAAaf,GAAIA,IAAMmB,IAXvC,8BAexB,EAAK5B,oBACL,EAAKA,kBAAkBkC,qBAAqB,CACxCC,OAA4B,IAArBT,EACH,GACAN,EACKgB,MAAM,EAAGV,EAAkB,GAC3BW,IAAI,SAACC,EAAOC,GAAR,OAAkB1B,EAAkB0B,GAASD,EAAQ,SAEtE,EAAKtC,kBAAkBwC,wBAAwB,CAC3CL,OAA2B,IAApBP,EACH,GACAR,EACKgB,MAAMR,GACNS,IAAI,SAACC,EAAOC,GAAR,OAAkBzB,EAAgByB,EAAQX,GAAkBU,EAAQ,OACxEG,oBA3Cb7J,KAAKoH,oBACLpH,KAAKoH,kBAAkBkC,qBAAqB,CAAEC,MAAO,KACrDvJ,KAAKoH,kBAAkBwC,wBAAwB,CAAEL,MAAO,Q,uBAyDpE,SAAUO,EAAaC,EAAcC,GAAQ,WAEzC,GAAKhK,KAAKkH,WAAV,CAYA,IANA,IAAMK,EAAoB,WAAbyC,EAAwBF,EAAYN,QAAQK,UAAYC,EAC/DG,EAAsB,WAAbD,EAAwBD,EAAaP,QAAQK,UAAYE,EAElEG,EAAgB,GAChBC,EAAoB,GACpBC,EAAkB,GACfC,EAAW,EAAGC,EAAe,EAAGD,EAAW9C,EAAKpD,OAAQkG,IAE7D,GADAH,EAAcG,GAAYC,EACrBL,EAAOI,GAAZ,CAGA,IAAM3C,EAAMH,EAAK8C,GACjBD,EAAgBC,GAAYrK,KAAK8G,mBAC7ByD,MAAMjG,KAAKoD,EAAII,UAAY,CAACJ,GAChC,IAAM8C,EAAS9C,EAAI+C,wBAAwBD,OAC3CF,GAAgBE,EAChBL,EAAkBE,GAAYG,EAElC,IAAME,EAAmBT,EAAOlB,aAAY,GAG5C/I,KAAK+H,sBAAsB,WAEvB,IADA,IAAI4C,EAAIC,EACC,EAAW,EAAG,EAAWrD,EAAKpD,OAAQ,IAC3C,GAAK8F,EAAO,GAAZ,CAGA,IAJuD,EAIjDY,EAASX,EAAc,GACvBY,EAAqB,IAAaJ,EALe,cAMjCN,EAAgB,IANiB,IAMvD,2BACI,EAAKf,gBADwC,QACfW,EAAUa,EAAQC,GAPG,+BAU1C,QAAbd,EACkC,QAAjCW,EAAK,EAAKvD,yBAAsC,IAAPuD,GAAyBA,EAAGI,wBAAwB,CAAExB,MAAOY,EAAmBa,SAAUZ,IAGlG,QAAjCQ,EAAK,EAAKxD,yBAAsC,IAAPwD,GAAyBA,EAAGK,wBAAwB,CAAE1B,MAAOY,EAAmBa,SAAUZ,S,yCAUhJ,SAA4Bc,EAAcnB,GAAY,WAClD,GAAK/J,KAAK8G,mBAAV,CAGA,IAAMqE,EAAQD,EAAaE,cAAc,SAEzCpL,KAAK+H,sBAAsB,WACnBgC,EAAa3B,KAAK,SAAAC,GAAK,OAAKA,IAC5B,EAAKL,mBAAmBmD,EAAO,CAAC,WAGhC,EAAK9B,gBAAgB8B,EAAO,SAAU,GAAG,Q,gCASrD,SAAmBE,EAAS7D,GAAgB,oBACtBA,GADsB,IACxC,2BAAoC,KAAzB8D,EAAyB,QAChCD,EAAQE,MAAMD,GAAO,GACrBD,EAAQ1I,UAAU6I,OAAOxL,KAAKsH,eAAegE,KAHT,8BASnBzE,GAAkBuB,KAAK,SAAAkD,GAAG,OAAuC,IAAnC9D,EAAiByB,QAAQqC,IAAeD,EAAQE,MAAMD,KAErGD,EAAQE,MAAME,OAASzL,KAAK0L,qBAAqBL,IAIjDA,EAAQE,MAAME,OAAS,GACnBzL,KAAKmH,gCACLkE,EAAQE,MAAMvB,SAAW,IAE7BqB,EAAQ1I,UAAU6I,OAAOxL,KAAK+G,kB,6BAQtC,SAAgBsE,EAASC,EAAKK,EAAUC,GACpCP,EAAQ1I,UAAUE,IAAI7C,KAAK+G,eACvB6E,GACAP,EAAQ1I,UAAUE,IAAI7C,KAAKsH,eAAegE,IAE9CD,EAAQE,MAAMD,GAAd,UAAwBK,EAAxB,MACAN,EAAQE,MAAME,OAASzL,KAAK0L,qBAAqBL,GAC7CrL,KAAKmH,gCACLkE,EAAQE,MAAMM,SAAW,kD,kCAcjC,SAAqBR,GAWjB,IAVA,IAAMS,EAAmB,CACrBC,IAAK,IACLC,OAAQ,GACRC,KAAM,EACNC,MAAO,GAEPT,EAAS,EAIb,MAAkB5E,GAAlB,eAAqC,CAAhC,IAAMyE,EAAG,KACND,EAAQE,MAAMD,KACdG,GAAUK,EAAiBR,IAGnC,OAAOG,EAAS,GAAH,OAAMA,GAAW,K,4BAGlC,SAAe/D,GAAiC,IAA5BS,IAA4B,yDAC5C,IAAKA,GAAyBnI,KAAKqH,kBAAkBlD,OACjD,OAAOnE,KAAKqH,kBAIhB,IAFA,IAAMmB,EAAa,GACb2D,EAAgBzE,EAAII,SACjBD,EAAI,EAAGA,EAAIsE,EAAchI,OAAQ0D,IAAK,CAC3C,IAAI9F,EAAOoK,EAActE,GACzBW,EAAW5E,KAAK7B,EAAK0I,wBAAwBf,OAGjD,OADA1J,KAAKqH,kBAAoBmB,EAClBA,I,4CAOX,SAA+B4D,EAAQrC,GAGnC,IAFA,IAAMsC,EAAY,GACdC,EAAe,EACVzE,EAAI,EAAGA,EAAIuE,EAAOjI,OAAQ0D,IAC3BkC,EAAalC,KACbwE,EAAUxE,GAAKyE,EACfA,GAAgBF,EAAOvE,IAG/B,OAAOwE,I,0CAOX,SAA6BD,EAAQrC,GAGjC,IAFA,IAAMsC,EAAY,GACdC,EAAe,EACVzE,EAAIuE,EAAOjI,OAAQ0D,EAAI,EAAGA,IAC3BkC,EAAalC,KACbwE,EAAUxE,GAAKyE,EACfA,GAAgBF,EAAOvE,IAG/B,OAAOwE,I,mCAOX,SAAsBpH,GACdjF,KAAKiH,yBACLjH,KAAKiH,yBAAyB7C,SAASa,GAGvCA,Q,GAgFNsH,GAA8B,IAAI,IAAe,W,kBAajDC,E,YACF,WAAYC,EAAe/J,GAAU,oBACjC1C,KAAKyM,cAAgBA,EACrBzM,KAAK0C,WAAaA,I,OAG1B8J,EAAcjM,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKgM,GAAe,KAAyB,KAA0B,KAAyB,OACrKA,EAAc/L,UAAO,KAAyB,CAAEC,KAAM8L,EAAe7L,UAAW,CAAC,CAAC,GAAI,YAAa,O,uBAa7F+L,E,YACF,WAAYD,EAAe/J,GAAU,oBACjC1C,KAAKyM,cAAgBA,EACrBzM,KAAK0C,WAAaA,I,OAG1BgK,EAAgBnM,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKkM,GAAiB,KAAyB,KAA0B,KAAyB,OAC3KA,EAAgBjM,UAAO,KAAyB,CAAEC,KAAMgM,EAAiB/L,UAAW,CAAC,CAAC,GAAI,kBAAmB,O,uBAavGgM,E,YACF,WAAYF,EAAe/J,GAAU,oBACjC1C,KAAKyM,cAAgBA,EACrBzM,KAAK0C,WAAaA,I,OAG1BiK,EAAgBpM,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKmM,GAAiB,KAAyB,KAA0B,KAAyB,OAC3KA,EAAgBlM,UAAO,KAAyB,CAAEC,KAAMiM,EAAiBhM,UAAW,CAAC,CAAC,GAAI,kBAAmB,O,uBAcvGiM,E,YACF,WAAYH,EAAe/J,GAAU,oBACjC1C,KAAKyM,cAAgBA,EACrBzM,KAAK0C,WAAaA,I,OAG1BkK,EAAgBrM,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKoM,GAAiB,KAAyB,KAA0B,KAAyB,OAC3KA,EAAgBnM,UAAO,KAAyB,CAAEC,KAAMkM,EAAiBjM,UAAW,CAAC,CAAC,GAAI,kBAAmB,O,uBAqCvGkM,E,8BACF,WAAY7H,EAAU8H,EAAoBC,EAAaC,EAAMC,EAAMC,EAAWC,EAM9EC,EAAenG,EAA0BoG,EAIzCC,GAAc,oBACVtN,KAAKgF,SAAWA,EAChBhF,KAAK8M,mBAAqBA,EAC1B9M,KAAK+M,YAAcA,EACnB/M,KAAKiN,KAAOA,EACZjN,KAAKmN,UAAYA,EACjBnN,KAAKoN,cAAgBA,EACrBpN,KAAKiH,yBAA2BA,EAChCjH,KAAKqN,2BAA6BA,EAClCrN,KAAKsN,eAAiBA,EAEtBtN,KAAKuN,WAAa,IAAI9J,EAAA,EAMtBzD,KAAKwN,kBAAoB,IAAIC,IAM7BzN,KAAK0N,kBAAoB,IAAIC,IAM7B3N,KAAK4N,eAAiB,IAAID,IAM1B3N,KAAK6N,qBAAuB,IAAIF,IAMhC3N,KAAK8N,qBAAuB,IAAIH,IAKhC3N,KAAK+N,sBAAuB,EAK5B/N,KAAKgO,sBAAuB,EAK5BhO,KAAKiO,8BAA+B,EAMpCjO,KAAKkO,6BAA8B,EAcnClO,KAAKmO,qBAAuB,IAAIV,IAKhCzN,KAAKoO,eAAiB,mBAMtBpO,KAAKqO,8BAA+B,EAEpCrO,KAAKsO,qBAAsB,EAC3BtO,KAAKuO,wBAAyB,EAC9BvO,KAAKwO,cAAe,EASpBxO,KAAKyO,WAAa,IAAIC,EAAA,EAAgB,CAAEvF,MAAO,EAAGC,IAAKuF,OAAOC,YACzD5B,GACDhN,KAAK+M,YAAYnK,cAAciM,aAAa,OAAQ,QAExD7O,KAAKkN,UAAYA,EACjBlN,KAAK8G,mBAAiE,UAA5C9G,KAAK+M,YAAYnK,cAAckM,U,oBAQ7D,WACI,OAAO9O,KAAK+O,Y,IAEhB,SAAYC,GAIRhP,KAAK+O,WAAaC,I,sBAsBtB,WACI,OAAOhP,KAAKiP,a,IAEhB,SAAeC,GACPlP,KAAKiP,cAAgBC,GACrBlP,KAAKmP,kBAAkBD,K,iCAS/B,WACI,OAAOlP,KAAKuO,wB,IAEhB,SAA0BtO,GACtBD,KAAKuO,uBAAyB,YAAsBtO,GAGhDD,KAAKoP,YAAcpP,KAAKoP,WAAW3C,cAActI,SACjDnE,KAAKqP,uBACLrP,KAAKsP,8B,uBAOb,WACI,OAAOtP,KAAKwO,c,IAEhB,SAAgBvO,GACZD,KAAKwO,aAAe,YAAsBvO,GAE1CD,KAAKkO,6BAA8B,EACnClO,KAAKiO,8BAA+B,I,sBAExC,WAAQ,WACJjO,KAAKuP,qBACDvP,KAAK8G,oBACL9G,KAAKwP,4BAKTxP,KAAKyP,YAAczP,KAAKgF,SAASK,KAAK,IAAIC,OAAO,SAACoK,EAAIC,GAClD,OAAO,EAAKC,QAAU,EAAKA,QAAQD,EAAQE,UAAWF,EAAQG,MAAQH,IAKtE3P,KAAKsN,gBACLtN,KAAKsN,eAAeyC,SAAS/L,KAAK,OAAAC,EAAA,GAAUjE,KAAKuN,aAAarJ,UAAU,WACpE,EAAKgK,6BAA8B,M,mCAI/C,WAEIlO,KAAKgQ,gBACLhQ,KAAKiQ,mBAOL,IACMC,EADiBlQ,KAAKmQ,yBACanQ,KAAK+N,sBAAwB/N,KAAKgO,qBAE3EhO,KAAKiO,6BAA+BjO,KAAKiO,8BAAgCiC,EACzElQ,KAAKkO,4BAA8BgC,EAE/BlQ,KAAK+N,uBACL/N,KAAKoQ,yBACLpQ,KAAK+N,sBAAuB,GAG5B/N,KAAKgO,uBACLhO,KAAKqQ,yBACLrQ,KAAKgO,sBAAuB,GAI5BhO,KAAKkP,YAAclP,KAAKsQ,SAASnM,OAAS,IAAMnE,KAAKuQ,0BACrDvQ,KAAKwQ,wBAEAxQ,KAAKiO,8BAGVjO,KAAKsP,2BAETtP,KAAKyQ,uB,yBAET,WACIzQ,KAAKoP,WAAW3C,cAAciE,QAC9B1Q,KAAK2Q,iBAAiBlE,cAAciE,QACpC1Q,KAAK4Q,iBAAiBnE,cAAciE,QACpC1Q,KAAK6Q,iBAAiBpE,cAAciE,QACpC1Q,KAAKmO,qBAAqBuC,QAC1B1Q,KAAKuN,WAAW1J,OAChB7D,KAAKuN,WAAWzJ,WACZ,YAAa9D,KAAKkP,aAClBlP,KAAKkP,WAAW4B,WAAW9Q,Q,wBAanC,WAAU,WACNA,KAAK+Q,YAAc/Q,KAAKgR,oBACxB,IAAM/L,EAAUjF,KAAKyP,YAAYlK,KAAKvF,KAAK+Q,aAC3C,GAAK9L,EAAL,CAIA,IAAMwH,EAAgBzM,KAAKoP,WAAW3C,cAGlCzM,KAAKoN,cACLpN,KAAKoN,cAAc6D,aAAahM,EAASwH,EAAe,SAACyE,EAAQC,EAAwBC,GAAjC,OAAkD,EAAKC,qBAAqBH,EAAOI,KAAMF,IAAe,SAACF,GAAD,OAAYA,EAAOI,KAAKxB,MAAM,SAACC,GAClK,IAArBA,EAAOwB,WAAkCxB,EAAOyB,SAChD,EAAKC,2BAA2B1B,EAAOmB,OAAOI,KAAKI,OAAQ3B,EAAOyB,WAK1EvM,EAAQ0M,iBAAiB,SAACT,EAAQU,EAAWR,GACzC,GAA4B,MAAxBF,EAAOW,cAAuB,CAC9B,IAAMC,EAAYZ,EAAOI,KAGzB,EAAKS,WAAW,EAAK3C,WAFN0C,EAAUJ,OAEgBN,EADzB,CAAEY,UAAWF,EAAUhC,YAGtC,GAAoB,MAAhBsB,EACL3E,EAAcjB,OAAOoG,OAEpB,CACD,IAAMK,EAAOxF,EAAcyF,IAAIN,GAC/BnF,EAAc0F,KAAKF,EAAMb,MAKrCpR,KAAKoS,yBAGLnN,EAAQoN,sBAAsB,SAACnB,GACXzE,EAAcyF,IAAIhB,EAAOE,cACjCI,QAAQQ,UAAYd,EAAOI,KAAKxB,OAE5C9P,KAAKsS,mBACLtS,KAAKsP,gCAvCDtP,KAAKsS,qB,0BA0Cb,SAAa7P,GACTzC,KAAK0N,kBAAkB7K,IAAIJ,K,6BAG/B,SAAgBA,GACZzC,KAAK0N,kBAAkB6E,OAAO9P,K,uBAGlC,SAAUiP,GACN1R,KAAK4N,eAAe/K,IAAI6O,K,0BAG5B,SAAaA,GACT1R,KAAK4N,eAAe2E,OAAOb,K,6BAG/B,SAAgBc,GACZxS,KAAK6N,qBAAqBhL,IAAI2P,GAC9BxS,KAAK+N,sBAAuB,I,gCAGhC,SAAmByE,GACfxS,KAAK6N,qBAAqB0E,OAAOC,GACjCxS,KAAK+N,sBAAuB,I,6BAGhC,SAAgB0E,GACZzS,KAAK8N,qBAAqBjL,IAAI4P,GAC9BzS,KAAKgO,sBAAuB,I,gCAGhC,SAAmByE,GACfzS,KAAK8N,qBAAqByE,OAAOE,GACjCzS,KAAKgO,sBAAuB,I,0BAGhC,SAAa0E,GACT1S,KAAK2S,iBAAmBD,I,yCAS5B,WACI,IAAME,EAAa5S,KAAK6S,iBAAiB7S,KAAK4Q,kBAKxCkC,EAJe9S,KAAK+M,YAAYnK,cAIXwI,cAAc,SACrC0H,IACAA,EAAMvH,MAAMwH,QAAUH,EAAWzO,OAAS,GAAK,QAEnD,IAAM4F,EAAe/J,KAAKgT,eAAevJ,IAAI,SAAAwJ,GAAG,OAAIA,EAAI7Q,SACxDpC,KAAKkT,cAAcC,uBAAuBP,EAAY,CAAC,QACvD5S,KAAKkT,cAAcE,UAAUR,EAAY7I,EAAc,OAEvD/J,KAAKgT,eAAeK,QAAQ,SAAAJ,GAAG,OAAIA,EAAIK,yB,yCAS3C,WACI,IAAMC,EAAavT,KAAK6S,iBAAiB7S,KAAK6Q,kBAKxC1F,EAJenL,KAAK+M,YAAYnK,cAIXwI,cAAc,SACrCD,IACAA,EAAMI,MAAMwH,QAAUQ,EAAWpP,OAAS,GAAK,QAEnD,IAAM4F,EAAe/J,KAAKwT,eAAe/J,IAAI,SAAAwJ,GAAG,OAAIA,EAAI7Q,SACxDpC,KAAKkT,cAAcC,uBAAuBI,EAAY,CAAC,WACvDvT,KAAKkT,cAAcE,UAAUG,EAAYxJ,EAAc,UACvD/J,KAAKkT,cAAcO,4BAA4BzT,KAAK+M,YAAYnK,cAAemH,GAE/E/J,KAAKwT,eAAeH,QAAQ,SAAAJ,GAAG,OAAIA,EAAIK,yB,sCAS3C,WAAwB,WACdV,EAAa5S,KAAK6S,iBAAiB7S,KAAK4Q,kBACxC8C,EAAW1T,KAAK6S,iBAAiB7S,KAAKoP,YACtCmE,EAAavT,KAAK6S,iBAAiB7S,KAAK6Q,mBAKzC7Q,KAAK8G,qBAAuB9G,KAAKwO,cAC/BxO,KAAKiO,gCAGRjO,KAAKkT,cAAcC,uBAAnB,sBAA8CP,GAA9C,YAA6Dc,GAA7D,YAA0EH,IAAa,CAAC,OAAQ,UAChGvT,KAAKiO,8BAA+B,GAGxC2E,EAAWS,QAAQ,SAACM,EAAW9L,GAC3B,EAAK+L,uBAAuB,CAACD,GAAY,EAAKX,eAAenL,MAGjE7H,KAAKsQ,SAAS+C,QAAQ,SAAA3B,GAGlB,IADA,IAAMnK,EAAO,GACJM,EAAI,EAAGA,EAAI6L,EAASvP,OAAQ0D,IAC7B,EAAKkJ,YAAYlJ,GAAG6J,SAAWA,GAC/BnK,EAAK3D,KAAK8P,EAAS7L,IAG3B,EAAK+L,uBAAuBrM,EAAMmK,KAGtC6B,EAAWF,QAAQ,SAACQ,EAAWhM,GAC3B,EAAK+L,uBAAuB,CAACC,GAAY,EAAKL,eAAe3L,MAGjE0C,MAAMjG,KAAKtE,KAAKwN,kBAAkBsG,UAAUT,QAAQ,SAAAJ,GAAG,OAAIA,EAAIK,yB,+BAOnE,WACI,IAAMS,EAAa,GAGbC,EAAuBhU,KAAKmO,qBAClCnO,KAAKmO,qBAAuB,IAAIV,IAGhC,IAAK,IAAI5F,EAAI,EAAGA,EAAI7H,KAAKiU,MAAM9P,OAAQ0D,IAAK,CACxC,IAAIiI,EAAO9P,KAAKiU,MAAMpM,GAChBqM,EAAoBlU,KAAKmU,sBAAsBrE,EAAMjI,EAAGmM,EAAqB9B,IAAIpC,IAClF9P,KAAKmO,qBAAqBiG,IAAItE,IAC/B9P,KAAKmO,qBAAqBkG,IAAIvE,EAAM,IAAIwE,SAE5C,IAAK,IAAIC,EAAI,EAAGA,EAAIL,EAAkB/P,OAAQoQ,IAAK,CAC/C,IAAIzC,EAAYoC,EAAkBK,GAC5BC,EAAQxU,KAAKmO,qBAAqB+D,IAAIJ,EAAUhC,MAClD0E,EAAMJ,IAAItC,EAAUJ,QACpB8C,EAAMtC,IAAIJ,EAAUJ,QAAQ9N,KAAKkO,GAGjC0C,EAAMH,IAAIvC,EAAUJ,OAAQ,CAACI,IAEjCiC,EAAWnQ,KAAKkO,IAGxB,OAAOiC,I,mCAOX,SAAsBjE,EAAMD,EAAW2E,GAEnC,OADgBxU,KAAKyU,YAAY3E,EAAMD,GACxBpG,IAAI,SAAAiI,GACf,IAAMgD,EAAoBF,GAASA,EAAMJ,IAAI1C,GAAW8C,EAAMtC,IAAIR,GAAU,GAC5E,GAAIgD,EAAiBvQ,OAAQ,CACzB,IAAMwL,EAAU+E,EAAiBC,QAEjC,OADAhF,EAAQE,UAAYA,EACbF,EAGP,MAAO,CAAEG,OAAM4B,SAAQ7B,iB,8BAKnC,WAAgB,WACZ7P,KAAKwN,kBAAkBkD,QACJkE,GAAiB5U,KAAK6U,YAAY7U,KAAK8U,oBAAqB9U,KAAK0N,mBACzE2F,QAAQ,SAAA5Q,GACX,EAAK+K,kBAAkB4G,IAAI3R,EAAUtB,MAIzC,EAAKqM,kBAAkB6G,IAAI5R,EAAUtB,KAAMsB,O,2BAInD,WACIzC,KAAKgT,eAAiB4B,GAAiB5U,KAAK6U,YAAY7U,KAAK+U,uBAAwB/U,KAAK6N,sBAC1F7N,KAAKwT,eAAiBoB,GAAiB5U,KAAK6U,YAAY7U,KAAKgV,uBAAwBhV,KAAK8N,sBAC1F9N,KAAKsQ,SAAWsE,GAAiB5U,KAAK6U,YAAY7U,KAAKiV,iBAAkBjV,KAAK4N,gBAE9E,IAAMsH,EAAiBlV,KAAKsQ,SAAS6E,OAAO,SAAAlC,GAAG,OAAKA,EAAInN,OAKxD9F,KAAKoV,eAAiBF,EAAe,K,mCAOzC,WACI,IAAMG,EAAqB,SAACC,EAAKrC,GAAN,OAAcqC,KAASrC,EAAIsC,kBAEhDC,EAAqBxV,KAAKsQ,SAASmF,OAAOJ,GAAoB,GAChEG,GACAxV,KAAKqP,uBAGT,IAAMqG,EAAuB1V,KAAKgT,eAAeyC,OAAOJ,GAAoB,GACxEK,GACA1V,KAAKoQ,yBAET,IAAMuF,EAAuB3V,KAAKwT,eAAeiC,OAAOJ,GAAoB,GAI5E,OAHIM,GACA3V,KAAKqQ,yBAEFmF,GAAsBE,GAAwBC,I,+BAOzD,SAAkBzG,GACdlP,KAAKiU,MAAQ,GACT,YAAajU,KAAKkP,aAClBlP,KAAKkP,WAAW4B,WAAW9Q,MAG3BA,KAAKuQ,4BACLvQ,KAAKuQ,0BAA0BqF,cAC/B5V,KAAKuQ,0BAA4B,MAEhCrB,IACGlP,KAAKyP,aACLzP,KAAKyP,YAAYlK,KAAK,IAE1BvF,KAAKoP,WAAW3C,cAAciE,SAElC1Q,KAAKiP,YAAcC,I,mCAGvB,WAAqB,IAKb2G,EALa,OAEZ7V,KAAKkP,aAIN,YAAalP,KAAKkP,YAClB2G,EAAa7V,KAAKkP,WAAW4G,QAAQ9V,MAEhC,OAAA+V,EAAA,GAAa/V,KAAKkP,YACvB2G,EAAa7V,KAAKkP,WAEb3E,MAAMyL,QAAQhW,KAAKkP,cACxB2G,EAAa,OAAAI,EAAA,GAAGjW,KAAKkP,aAKzBlP,KAAKuQ,0BAA4BsF,EAAW7R,KAAK,OAAAC,EAAA,GAAUjE,KAAKuN,aAC3DrJ,UAAU,SAAA4L,GACX,EAAKmE,MAAQnE,GAAQ,GACrB,EAAKiE,kB,oCAOb,WAAsB,WAEd/T,KAAK4Q,iBAAiBnE,cAActI,OAAS,GAC7CnE,KAAK4Q,iBAAiBnE,cAAciE,QAExC1Q,KAAKgT,eAAeK,QAAQ,SAACJ,EAAKpL,GAAN,OAAY,EAAKkK,WAAW,EAAKnB,iBAAkBqC,EAAKpL,KACpF7H,KAAKkW,gC,oCAMT,WAAsB,WAEdlW,KAAK6Q,iBAAiBpE,cAActI,OAAS,GAC7CnE,KAAK6Q,iBAAiBpE,cAAciE,QAExC1Q,KAAKwT,eAAeH,QAAQ,SAACJ,EAAKpL,GAAN,OAAY,EAAKkK,WAAW,EAAKlB,iBAAkBoC,EAAKpL,KACpF7H,KAAKmW,gC,oCAGT,SAAuB5O,EAAMmK,GAAM,WACzB0E,EAAa7L,MAAMjG,KAAKoN,EAAOvM,SAAW,IAAIsE,IAAI,SAAA4M,GAKpD,OAJkB,EAAK7I,kBAAkB0E,IAAImE,KAM3CpO,EAAoBmO,EAAW3M,IAAI,SAAAhH,GAAS,OAAIA,EAAUL,SAC1D8F,EAAkBkO,EAAW3M,IAAI,SAAAhH,GAAS,OAAIA,EAAUJ,YAC9DrC,KAAKkT,cAAcoD,oBAAoB/O,EAAMU,EAAmBC,GAAkBlI,KAAKwO,cAAgBxO,KAAKkO,+B,8BAGhH,SAAiBqI,GAEb,IADA,IAAMC,EAAe,GACZ3O,EAAI,EAAGA,EAAI0O,EAAU9J,cAActI,OAAQ0D,IAAK,CACrD,IAAM4O,EAAUF,EAAU9J,cAAcyF,IAAIrK,GAC5C2O,EAAa5S,KAAK6S,EAAQC,UAAU,IAExC,OAAOF,I,yBAQX,SAAY1G,EAAMD,GACd,GAA4B,GAAxB7P,KAAKsQ,SAASnM,OACd,MAAO,CAACnE,KAAKsQ,SAAS,IAE1B,IAAIqG,EAAU,GACd,GAAI3W,KAAK4W,sBACLD,EAAU3W,KAAKsQ,SAAS6E,OAAO,SAAAlC,GAAG,OAAKA,EAAInN,MAAQmN,EAAInN,KAAK+J,EAAWC,SAEtE,CACD,IAAI4B,EAAS1R,KAAKsQ,SAASjL,KAAK,SAAA4N,GAAG,OAAIA,EAAInN,MAAQmN,EAAInN,KAAK+J,EAAWC,MAAU9P,KAAKoV,eAClF1D,GACAiF,EAAQ/S,KAAK8N,GAMrB,OAAOiF,I,kCAEX,SAAqB7E,EAAWnI,GAG5B,MAAO,CACH/C,YAHWkL,EAAUJ,OAGDpR,SACpBkR,QAHY,CAAEQ,UAAWF,EAAUhC,MAInCnG,W,wBAQR,SAAWkN,EAAQnF,EAAQ/H,GAAmB,IAAZ6H,EAAY,uDAAF,GAElCS,EAAO4E,EAAOpK,cAAcqK,mBAAmBpF,EAAOpR,SAAUkR,EAAS7H,GAE/E,OADA3J,KAAKyR,2BAA2BC,EAAQF,GACjCS,I,wCAEX,SAA2BP,EAAQF,GAAO,oBACbxR,KAAK+W,kBAAkBrF,IADV,IACtC,2BACQ,EAAczL,sBACd,EAAcA,qBAAqBD,eAAe8Q,mBAFD,QAEkCtF,GAHrD,8BAMtCxR,KAAK8M,mBAAmBkK,iB,oCAM5B,WAEI,IADA,IAAMvK,EAAgBzM,KAAKoP,WAAW3C,cAC7BwK,EAAc,EAAGC,EAAQzK,EAActI,OAAQ8S,EAAcC,EAAOD,IAAe,CACxF,IACMzF,EADU/E,EAAcyF,IAAI+E,GACVzF,QACxBA,EAAQ0F,MAAQA,EAChB1F,EAAQxP,MAAwB,IAAhBiV,EAChBzF,EAAQ2F,KAAOF,IAAgBC,EAAQ,EACvC1F,EAAQ4F,KAAOH,EAAc,GAAM,EACnCzF,EAAQ6F,KAAO7F,EAAQ4F,KACnBpX,KAAK4W,uBACLpF,EAAQ3B,UAAY7P,KAAK+Q,YAAYkG,GAAapH,UAClD2B,EAAQyF,YAAcA,GAGtBzF,EAAQ7H,MAAQ3J,KAAK+Q,YAAYkG,GAAapH,a,+BAK1D,SAAkB6B,GAAM,WACpB,OAAKA,GAAWA,EAAOvM,QAGhBoF,MAAMjG,KAAKoN,EAAOvM,QAAS,SAAAmS,GAC9B,IAAM9R,EAAS,EAAKgI,kBAAkB0E,IAAIoF,GAI1C,OAAO5F,EAAO6F,oBAAoB/R,KAP3B,K,uCAWf,WAOI,IANA,IAAMgS,EAAmBxX,KAAKkN,UAAUuK,yBAMxC,MALiB,CACb,CAAEC,IAAK,QAASC,QAAS,CAAC3X,KAAK4Q,mBAC/B,CAAE8G,IAAK,QAASC,QAAS,CAAC3X,KAAKoP,WAAYpP,KAAK2Q,mBAChD,CAAE+G,IAAK,QAASC,QAAS,CAAC3X,KAAK6Q,oBAEnC,eAAgC,CAA3B,IAAM+G,EAAO,KACRvM,EAAUrL,KAAKkN,UAAU2K,cAAcD,EAAQF,KACrDrM,EAAQwD,aAAa,OAAQ,YAFD,oBAGP+I,EAAQD,SAHD,IAG5B,2BACItM,EAAQyM,YAD0B,QACPpV,WAAWE,eAJd,8BAM5B4U,EAAiBM,YAAYzM,GAGjCrL,KAAK+M,YAAYnK,cAAckV,YAAYN,K,kCAO/C,WACIxX,KAAKyP,YAAYlK,KAAK,IACtBvF,KAAKoP,WAAW3C,cAAciE,QAC9B1Q,KAAK+T,e,gCAOT,WACI,IAAMgE,EAAqB,SAACzC,EAAK0C,GAC7B,OAAO1C,GAAO0C,EAAE7X,oBAKhBH,KAAKgT,eAAeyC,OAAOsC,GAAoB,IAC/C/X,KAAKkW,8BAELlW,KAAKwT,eAAeiC,OAAOsC,GAAoB,IAC/C/X,KAAKmW,8BAEL5L,MAAMjG,KAAKtE,KAAKwN,kBAAkBsG,UAAU2B,OAAOsC,GAAoB,KACvE/X,KAAKiO,8BAA+B,EACpCjO,KAAKsP,8B,gCAQb,WAAkB,WAEdtP,KAAKkT,cAAgB,IAAI,GAAalT,KAAK8G,mBAAoB9G,KAAKoO,eADlDpO,KAAKiN,KAAOjN,KAAKiN,KAAK1L,MAAQ,MAC+CvB,KAAKiH,yBAA0BjH,KAAKmN,UAAU8K,UAAWjY,KAAKqO,6BAA8BrO,KAAKqN,6BAC/LrN,KAAKiN,KAAOjN,KAAKiN,KAAK8C,OAAS,OAAAkG,EAAA,MAC3BjS,KAAK,OAAAC,EAAA,GAAUjE,KAAKuN,aACpBrJ,UAAU,SAAA3C,GACX,EAAK2R,cAAclM,UAAYzF,EAC/B,EAAK+N,+B,yBAIb,SAAY4I,GAAK,WACb,OAAOA,EAAM/C,OAAO,SAAA7D,GAAI,OAAKA,EAAKtQ,QAAUsQ,EAAKtQ,SAAW,M,8BAGhE,WACI,IAAM0R,EAAY1S,KAAK2S,kBAAoB3S,KAAKmY,WAChD,GAAIzF,EAAW,CACX,IAAM0F,EAAsD,IAAzCpY,KAAKoP,WAAW3C,cAActI,OACjD,GAAIiU,IAAepY,KAAKsO,oBAAqB,CACzC,IAAM+J,EAAYrY,KAAK2Q,iBAAiBlE,cACxC2L,EAAaC,EAAUvB,mBAAmBpE,EAAU9L,aAAeyR,EAAU3H,QAC7E1Q,KAAKsO,oBAAsB8J,Q,UAK3CvL,EAAStM,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKqM,GAAU,KAAyB,KAAyB,KAAyB,KAA2B,KAAyB,KAAoB,KAAyB,QAAS,KAAyB,IAAuB,GAAI,KAAyB,KAAW,KAAyB,KAAkB,KAAyB,IAAyB,GAAI,KAAyBzJ,EAA4B,GAAI,KAAyBmJ,GAA6B,IAAK,KAAyB,IAAsB,KAC3lBM,EAAS1G,UAAO,KAAyB,CAAEzF,KAAMmM,EAAUlM,UAAW,CAAC,CAAC,aAAc,CAAC,QAAS,YAAa,KAAMe,eAAgB,SAAiCC,EAAIC,EAAKC,GAOrK,IAAIC,EAPsL,EAALH,IACrL,KAAsBE,EAAU,GAAc,GAC9C,KAAsBA,EAAU,EAAc,GAC9C,KAAsBA,EAAU,EAAW,GAC3C,KAAsBA,EAAU,EAAiB,GACjD,KAAsBA,EAAU,EAAiB,IAC1C,EAALF,IAEF,KAAsBG,EAAK,UAA0BF,EAAIuW,WAAarW,EAAGE,OACzE,KAAsBF,EAAK,UAA0BF,EAAIkT,mBAAqBhT,GAC9E,KAAsBA,EAAK,UAA0BF,EAAIqT,gBAAkBnT,GAC3E,KAAsBA,EAAK,UAA0BF,EAAImT,sBAAwBjT,GACjF,KAAsBA,EAAK,UAA0BF,EAAIoT,sBAAwBlT,KAChFwW,UAAW,SAAwB3W,EAAIC,GAMxC,IAAIE,EANoD,EAALH,IACnD,KAAmB,GAAe,GAClC,KAAmB,GAAiB,GACpC,KAAmB,GAAiB,GACpC,KAAmB,GAAiB,IAC7B,EAALA,IAEF,KAAsBG,EAAK,UAA0BF,EAAIwN,WAAatN,EAAGE,OACzE,KAAsBF,EAAK,UAA0BF,EAAIgP,iBAAmB9O,EAAGE,OAC/E,KAAsBF,EAAK,UAA0BF,EAAIiP,iBAAmB/O,EAAGE,OAC/E,KAAsBF,EAAK,UAA0BF,EAAI+O,iBAAmB7O,EAAGE,SAC9Ee,UAAW,CAAC,EAAG,aAAcwV,SAAU,EAAGC,aAAc,SAA+B7W,EAAIC,GAAgB,EAALD,GACvG,KAAmB,yBAA0BC,EAAI6W,cAChDtW,OAAQ,CAAEyN,QAAS,UAAWV,WAAY,aAAc0H,sBAAuB,wBAAyB6B,YAAa,eAAiBC,SAAU,CAAC,YAAapW,SAAU,CAAC,KAA0B,CAChM,CAAEC,QAASnC,EAAWoC,YAAaqK,GACnC,CAAEtK,QAAS,IAAyBoW,SAAU,KAC9C,CAAEpW,QAASa,EAA4BuV,SAAU,GAEjD,CAAEpW,QAASgK,GAA6BqM,SAAU,SACjDC,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,IAAK,CAAC,YAAa,IAAK,CAAC,kBAAmB,IAAK,CAAC,kBAAmB,KAAMhG,SAAU,SAA2BqB,EAAIC,GAAgB,EAALD,IAC7M,KAAuBlC,GACvB,KAAoB,GACpB,KAAoB,EAAG,GACvB,KAA0B,EAAG,GAC7B,KAA0B,EAAG,GAC7B,KAA0B,EAAG,GAC7B,KAA0B,EAAG,KAC5B8G,WAAY,CAAC,GAAiB,GAAe,GAAiB,IAAkBuS,OAAQ,CAAC,iDAAkDtS,cAAe,I,KA8HnK,SAASoO,GAAiBmE,EAAO1E,GAC7B,OAAO0E,EAAMC,OAAOzO,MAAMjG,KAAK+P,I,sBAoM7B4E,E,sDAENA,EAAe1Y,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKyY,IAC5EA,EAAeC,UAAO,KAAwB,CAAExY,KAAMuY,IACtDA,EAAeE,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,oMCx3E3D,IAAM,GAAM,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,YAAa,CAAC,SACtC,GAAM,CAAC,UAAW,iB,kBAsBlBC,E,YACF,+CACI,YAASC,YAEJlL,eAAiB,mBAEtB,EAAKC,8BAA+B,EALxC,E,wCADmB,I,OASvBgL,EAAS9Y,UAAO,SAA0BC,GAAK,OAAO+Y,GAAsB/Y,GAAK6Y,IACjFA,EAASlT,UAAO,KAAyB,CAAEzF,KAAM2Y,EAAU1Y,UAAW,CAAC,CAAC,aAAc,CAAC,QAAS,YAAa,KAAMoC,UAAW,CAAC,EAAG,aAAcwV,SAAU,EAAGC,aAAc,SAA+B7W,EAAIC,GAAgB,EAALD,GACjN,KAAmB,yBAA0BC,EAAI6W,cAChDC,SAAU,CAAC,YAAapW,SAAU,CAAC,KAA0B,CAG1D,CAAEC,QAAS,IAAyBoW,SAAU,KAC9C,CAAEpW,QAAS,GAAUC,YAAa6W,GAClC,CAAE9W,QAASnC,EAAWoC,YAAa6W,GACnC,CAAE9W,QAASa,EAA4BuV,SAAU,KACjD,MAAoCE,mBAAoB,GAAKzS,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,IAAK,CAAC,YAAa,IAAK,CAAC,kBAAmB,IAAK,CAAC,kBAAmB,KAAMhG,SAAU,SAA2BqB,EAAIC,GAAgB,EAALD,IAChP,KAAuB,IACvB,KAAoB,GACpB,KAAoB,EAAG,GACvB,KAA0B,EAAG,GAC7B,KAA0B,EAAG,GAC7B,KAA0B,EAAG,GAC7B,KAA0B,EAAG,KAC5B4E,WAAY,CAAC,GAAwB,GAAsB,GAAwB,IAAyBuS,OAAQ,CAAC,gnEAAmnEtS,cAAe,I,KAC1vE+S,GAAsC,KAA6B,I,kBAsCnEC,E,iHAAmB,G,OAEzBA,EAAWjZ,UAAO,SAA4BC,GAAK,OAAOiZ,GAAwBjZ,GAAKgZ,IACvFA,EAAW/Y,UAAO,KAAyB,CAAEC,KAAM8Y,EAAY7Y,UAAW,CAAC,CAAC,GAAI,aAAc,KAAM2B,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAYC,YAAagX,KAAgB,Q,KACxLC,GAAwC,KAA6B,I,kBAYrEC,E,iHAAyB,G,OAE/BA,EAAiBnZ,UAAO,SAAkCC,GAAK,OAAOmZ,GAA8BnZ,GAAKkZ,IACzGA,EAAiBjZ,UAAO,KAAyB,CAAEC,KAAMgZ,EAAkB/Y,UAAW,CAAC,CAAC,GAAI,mBAAoB,KAAM2B,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAkBC,YAAakX,KAAsB,Q,KACtNC,GAA8C,KAA6B,I,kBAY3EC,E,iHAAyB,G,OAE/BA,EAAiBrZ,UAAO,SAAkCC,GAAK,OAAOqZ,GAA8BrZ,GAAKoZ,IACzGA,EAAiBnZ,UAAO,KAAyB,CAAEC,KAAMkZ,EAAkBjZ,UAAW,CAAC,CAAC,GAAI,mBAAoB,KAAM2B,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAkBC,YAAaoX,KAAsB,Q,KACtNC,GAA8C,KAA6B,I,kBAY3EC,E,gIAEF,WAAa,OAAO9Z,KAAKkB,O,IACzB,SAASC,GAAQnB,KAAKoB,cAAcD,K,uCAOpC,W,aACI,E,EAAA,K,0DAAA,4B,wCAAA,IACAnB,KAAKqB,oBAAoBuC,KAAzB,qBAA4C5D,KAAKsB,2B,CAZ9B,G,OAe3BwY,EAAavZ,UAAO,SAA8BC,GAAK,OAAOuZ,GAA0BvZ,GAAKsZ,IAC7FA,EAAarZ,UAAO,KAAyB,CAAEC,KAAMoZ,EAAcnZ,UAAW,CAAC,CAAC,GAAI,eAAgB,KAAMwB,OAAQ,CAAEC,OAAQ,SAAUjB,KAAM,CAAC,eAAgB,SAAWmB,SAAU,CAAC,KAA0B,CACjM,CAAEC,QAAS,EAAcC,YAAasX,GACtC,CAAEvX,QAAS,6BAA8BC,YAAasX,KACtD,Q,KAINC,GAA0C,KAA6B,I,kBAgBvEC,E,iHAAsB,G,OAE5BA,EAAczZ,UAAO,SAA+BC,GAAK,OAAOyZ,GAA2BzZ,GAAKwZ,IAChGA,EAAcvZ,UAAO,KAAyB,CAAEC,KAAMsZ,EAAerZ,UAAW,CAAC,CAAC,mBAAoB,CAAC,KAAM,kBAAmB,KAAMoC,UAAW,CAAC,OAAQ,eAAgB,EAAG,mBAAoBT,SAAU,CAAC,Q,KACtM2X,GAA2C,KAA6B,I,kBAYxEC,E,iHAAsB,G,OAE5BA,EAAc3Z,UAAO,SAA+BC,GAAK,OAAO2Z,GAA2B3Z,GAAK0Z,IAChGA,EAAczZ,UAAO,KAAyB,CAAEC,KAAMwZ,EAAevZ,UAAW,CAAC,CAAC,mBAAoB,CAAC,KAAM,kBAAmB,KAAMoC,UAAW,CAAC,OAAQ,WAAY,EAAG,mBAAoBT,SAAU,CAAC,Q,KAClM6X,GAA2C,KAA6B,I,kBAYxEC,E,iHAAgB,G,OAEtBA,EAAQ7Z,UAAO,SAAyBC,GAAK,OAAO6Z,GAAqB7Z,GAAK4Z,IAC9EA,EAAQ3Z,UAAO,KAAyB,CAAEC,KAAM0Z,EAASzZ,UAAW,CAAC,CAAC,YAAa,CAAC,KAAM,WAAY,KAAMoC,UAAW,CAAC,OAAQ,WAAY,EAAG,YAAaT,SAAU,CAAC,Q,KACjK+X,GAAqC,KAA6B,I,kBAuBlEC,E,iHAAwB,G,OAE9BA,EAAgB/Z,UAAO,SAAiCC,GAAK,OAAO+Z,GAA6B/Z,GAAK8Z,IACtGA,EAAgB7Z,UAAO,KAAyB,CAAEC,KAAM4Z,EAAiB3Z,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMwB,OAAQ,CAAEgD,QAAS,CAAC,kBAAmB,WAAY/C,OAAQ,CAAC,wBAAyB,WAAaE,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAiBC,YAAa8X,KAAqB,Q,KACnTC,GAA6C,KAA6B,I,kBAa1EC,E,iHAAwB,G,OAE9BA,EAAgBja,UAAO,SAAiCC,GAAK,OAAOia,GAA6Bja,GAAKga,IACtGA,EAAgB/Z,UAAO,KAAyB,CAAEC,KAAM8Z,EAAiB7Z,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMwB,OAAQ,CAAEgD,QAAS,CAAC,kBAAmB,WAAY/C,OAAQ,CAAC,wBAAyB,WAAaE,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAiBC,YAAagY,KAAqB,Q,KACnTC,GAA6C,KAA6B,I,kBAc1EC,E,iHAAkB,G,OAExBA,EAAUna,UAAO,SAA2BC,GAAK,OAAOma,GAAuBna,GAAKka,IACpFA,EAAUja,UAAO,KAAyB,CAAEC,KAAMga,EAAW/Z,UAAW,CAAC,CAAC,GAAI,YAAa,KAAMwB,OAAQ,CAAEgD,QAAS,CAAC,mBAAoB,WAAYW,KAAM,CAAC,gBAAiB,SAAWxD,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAWC,YAAakY,KAAe,Q,KAC1QC,GAAuC,KAA6B,I,kBAUpEC,E,iHAAqB,G,OAE3BA,EAAara,UAAO,SAA8BC,GAAK,OAAOqa,GAA0Bra,GAAKoa,IAC7FA,EAAazU,UAAO,KAAyB,CAAEzF,KAAMka,EAAcja,UAAW,CAAC,CAAC,kBAAmB,CAAC,KAAM,iBAAkB,KAAMoC,UAAW,CAAC,OAAQ,MAAO,EAAG,kBAAmB2V,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAcC,YAAaoY,KAAkB,MAAoCxU,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,gBAAiB,KAAMhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,GACrb,KAA0B,EAAG,IAC5B4E,WAAY,CAAC,GAAuBC,cAAe,I,KACtDqU,GAA0C,KAA6B,I,kBAmBvEC,E,iHAAqB,G,OAE3BA,EAAava,UAAO,SAA8BC,GAAK,OAAOua,GAA0Bva,GAAKsa,IAC7FA,EAAa3U,UAAO,KAAyB,CAAEzF,KAAMoa,EAAcna,UAAW,CAAC,CAAC,kBAAmB,CAAC,KAAM,iBAAkB,KAAMoC,UAAW,CAAC,OAAQ,MAAO,EAAG,kBAAmB2V,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,EAAcC,YAAasY,KAAkB,MAAoC1U,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,gBAAiB,KAAMhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,GACrb,KAA0B,EAAG,IAC5B4E,WAAY,CAAC,GAAuBC,cAAe,I,KACtDuU,GAA0C,KAA6B,I,kBAmBvEC,E,iHAAe,I,OAErBA,EAAOza,UAAO,SAAwBC,GAAK,OAAOya,GAAoBza,GAAKwa,IAC3EA,EAAO7U,UAAO,KAAyB,CAAEzF,KAAMsa,EAAQra,UAAW,CAAC,CAAC,WAAY,CAAC,KAAM,UAAW,KAAMoC,UAAW,CAAC,OAAQ,MAAO,EAAG,WAAY2V,SAAU,CAAC,UAAWpW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,GAAQC,YAAawY,KAAY,MAAoC5U,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,gBAAiB,KAAMhG,SAAU,SAAyBqB,EAAIC,GAAgB,EAALD,GAC5X,KAA0B,EAAG,IAC5B4E,WAAY,CAAC,GAAuBC,cAAe,I,KACtDyU,GAAoC,KAA6B,I,kBAgHjEC,E,sDAENA,EAAe3a,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK0a,IAC5EA,EAAehC,UAAO,KAAwB,CAAExY,KAAMwa,IACtDA,EAAe/B,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAC9C,GACA,MACD,Q,KA0BL+B,GAAmB,iBAsSnB,G,6HAnSF,aAA4B,MAAhBC,EAAgB,uDAAF,GAAE,4BACxB,cAEKC,YAAc,IAAI3M,EAAA,EAAgB,IAEvC,EAAK4M,QAAU,IAAI5M,EAAA,EAAgB,IAEnC,EAAK6M,qBAAuB,IAAI9X,EAAA,EAKhC,EAAK+X,2BAA6B,KAUlC,EAAKC,oBAAsB,SAAC3L,EAAM4L,GAC9B,IAAMna,EAAQuO,EAAK4L,GACnB,GAAI,YAAena,GAAQ,CACvB,IAAMoa,EAAchN,OAAOpN,GAG3B,OAAOoa,EAAcR,GAAmBQ,EAAcpa,EAE1D,OAAOA,GAWX,EAAKqa,SAAW,SAAC9L,EAAM+L,GACnB,IAAMC,EAASD,EAAKC,OACd9U,EAAY6U,EAAK7U,UACvB,OAAK8U,GAAuB,IAAb9U,EAGR8I,EAAK+L,KAAK,SAACE,EAAGC,GACjB,IAAIC,EAAS,EAAKR,oBAAoBM,EAAGD,GACrCI,EAAS,EAAKT,oBAAoBO,EAAGF,GAInCK,SAAoBF,EACpBG,SAAoBF,EACtBC,IAAeC,IACI,WAAfD,IACAF,GAAU,IAEK,WAAfG,IACAF,GAAU,KAOlB,IAAIG,EAAmB,EAgBvB,OAfc,MAAVJ,GAA4B,MAAVC,EAEdD,EAASC,EACTG,EAAmB,EAEdJ,EAASC,IACdG,GAAoB,GAGT,MAAVJ,EACLI,EAAmB,EAEJ,MAAVH,IACLG,GAAoB,GAEjBA,GAAiC,OAAbrV,EAAqB,GAAK,KAtC9C8I,GAmDf,EAAKwM,gBAAkB,SAACxM,EAAMqF,GAE1B,IAAMoH,EAAUC,OAAOC,KAAK3M,GAAM2F,OAAO,SAACiH,EAAaC,GAOnD,OAAOD,EAAc5M,EAAK6M,GAAO,UAClC,IAAIC,cAEDC,EAAoB1H,EAAO2H,OAAOF,cACxC,OAA8C,GAAvCL,EAAQtT,QAAQ4T,IAE3B,EAAK5I,MAAQ,IAAIvF,EAAA,EAAgB0M,GACjC,EAAK2B,4BAhHmB,E,uDAmH5B,WAAa,OAAO/c,KAAKiU,MAAM1S,O,IAC/B,SAASuO,GACL9P,KAAKiU,MAAMpQ,KAAKiM,GAGX9P,KAAKwb,4BACNxb,KAAKgd,YAAYlN,K,kBAOzB,WAAe,OAAO9P,KAAKsb,QAAQ/Z,O,IACnC,SAAW4T,GACPnV,KAAKsb,QAAQzX,KAAKsR,GAGbnV,KAAKwb,4BACNxb,KAAKgd,YAAYhd,KAAK8P,Q,gBAO9B,WAAa,OAAO9P,KAAKid,O,IACzB,SAASpB,GACL7b,KAAKid,MAAQpB,EACb7b,KAAK+c,8B,qBAYT,WAAkB,OAAO/c,KAAKkd,Y,IAC9B,SAAcC,GACVnd,KAAKkd,WAAaC,EAClBnd,KAAK+c,8B,uCAOT,WAAyB,IACjBpS,EADiB,OAQfyS,EAAapd,KAAKid,MACpB,OAAAI,GAAA,GAAMrd,KAAKid,MAAMG,WAAYpd,KAAKid,MAAMK,aACxC,OAAArH,EAAA,GAAG,MACDsH,EAAavd,KAAKkd,WACpB,OAAAG,GAAA,GAAMrd,KAAKkd,WAAWM,KAAMxd,KAAKub,qBAAsBvb,KAAKkd,WAAWI,aACvE,OAAArH,EAAA,GAAG,MACDJ,EAAa7V,KAAKiU,MAElBwJ,EAAe,OAAAC,GAAA,GAAc,CAAC7H,EAAY7V,KAAKsb,UAChDtX,KAAK,OAAAyF,GAAA,GAAI,0CAAY,EAAKuT,YAAjB,SAERW,EAAc,OAAAD,GAAA,GAAc,CAACD,EAAcL,IAC5CpZ,KAAK,OAAAyF,GAAA,GAAI,0CAAY,EAAKmU,WAAjB,SAERC,EAAgB,OAAAH,GAAA,GAAc,CAACC,EAAaJ,IAC7CvZ,KAAK,OAAAyF,GAAA,GAAI,0CAAY,EAAKqU,UAAjB,SAE6B,QAA1CnT,EAAK3K,KAAKwb,kCAA+C,IAAP7Q,GAAyBA,EAAGiL,cAC/E5V,KAAKwb,2BAA6BqC,EAAc3Z,UAAU,SAAA4L,GAAI,OAAI,EAAKuL,YAAYxX,KAAKiM,O,yBAO5F,SAAYA,GAAI,WASZ,OALA9P,KAAKyd,aAA+B,MAAfzd,KAAKmV,QAAkC,KAAhBnV,KAAKmV,OAAiBrF,EAC9DA,EAAKqF,OAAO,SAAA4I,GAAG,OAAI,EAAKzB,gBAAgByB,EAAK,EAAK5I,UAClDnV,KAAKmd,WACLnd,KAAKge,iBAAiBhe,KAAKyd,aAAatZ,QAErCnE,KAAKyd,e,wBAOhB,SAAW3N,GAEP,OAAK9P,KAAK6b,KAGH7b,KAAK4b,SAAS9L,EAAKtG,QAASxJ,KAAK6b,MAF7B/L,I,uBAQf,SAAUA,GACN,IAAK9P,KAAKmd,UACN,OAAOrN,EAEX,IAAMmO,EAAaje,KAAKmd,UAAUe,UAAYle,KAAKmd,UAAUgB,SAC7D,OAAOrO,EAAKtG,MAAMyU,EAAYA,EAAaje,KAAKmd,UAAUgB,Y,8BAO9D,SAAiBC,GAAkB,WAC/B7Z,QAAQC,UAAU6Z,KAAK,WACnB,IAAMlB,EAAY,EAAKA,UACvB,GAAKA,IAGLA,EAAUhZ,OAASia,EAEfjB,EAAUe,UAAY,GAAG,CACzB,IAAMI,EAAgBC,KAAKC,KAAKrB,EAAUhZ,OAASgZ,EAAUgB,UAAY,GAAK,EACxEM,EAAeF,KAAKG,IAAIvB,EAAUe,UAAWI,GAC/CG,IAAiBtB,EAAUe,YAC3Bf,EAAUe,UAAYO,EAGtB,EAAKlD,qBAAqB1X,a,qBAS1C,WAII,OAHK7D,KAAKwb,4BACNxb,KAAK+c,4BAEF/c,KAAKqb,c,wBAMhB,WACI,IAAI1Q,EACuC,QAA1CA,EAAK3K,KAAKwb,kCAA+C,IAAP7Q,GAAyBA,EAAGiL,cAC/E5V,KAAKwb,2BAA6B,S,CApRR,O,gpBC1b5BmD,E,qFAEF,SAAOC,GAUH,OADA5e,KAAK6e,cAAgBD,EACdA,EAAKE,OAAO9e,Q,oBAGvB,WACI,IAAI4e,EAAO5e,KAAK6e,cACJ,MAARD,IACA5e,KAAK6e,cAAgB,KACrBD,EAAKG,Y,sBAOb,WACI,OAA6B,MAAtB/e,KAAK6e,gB,6BAMhB,SAAgBD,GACZ5e,KAAK6e,cAAgBD,M,GAMvBI,E,YACF,WAAYC,EAAWC,EAAkBC,EAAUC,GAAwB,kCACvE,aACKH,UAAYA,EACjB,EAAKC,iBAAmBA,EACxB,EAAKC,SAAWA,EAChB,EAAKC,yBAA2BA,EALuC,E,wCADjDT,GAYxBU,E,YACF,WAAY/e,EAAU4e,EAAkB1N,GAAO,kCAC3C,aACK5K,YAActG,EACnB,EAAK4e,iBAAmBA,EACxB,EAAK1N,QAAUA,EAJ4B,E,yDAM/C,WACI,OAAOxR,KAAK4G,YAAYlE,a,oBAO5B,SAAOkc,GAA4B,IAAtBpN,EAAsB,uDAAZxR,KAAKwR,QAExB,OADAxR,KAAKwR,QAAUA,EACf,sBAAoBoN,M,oBAExB,WAEI,OADA5e,KAAKwR,aAAU/M,EACf,6B,CArBqBka,GA6BvBW,E,YACF,WAAYjU,GAAO,kCACf,aACKA,QAAUA,aAAmB,IAAaA,EAAQzI,cAAgByI,EAFxD,E,wCADCsT,GAUlBY,E,8BACF,iCAEIvf,KAAKwf,aAAc,EAEnBxf,KAAKyf,gBAAkB,M,0BAG3B,WACI,QAASzf,KAAK0f,kB,oBAGlB,SAAOC,GAYH,OAAIA,aAAkBX,GAClBhf,KAAK0f,gBAAkBC,EAChB3f,KAAK4f,sBAAsBD,IAE7BA,aAAkBN,GACvBrf,KAAK0f,gBAAkBC,EAChB3f,KAAK6f,qBAAqBF,IAG5B3f,KAAKyf,iBAAmBE,aAAkBL,GAC/Ctf,KAAK0f,gBAAkBC,EAChB3f,KAAKyf,gBAAgBE,SAEQG,I,oBAK5C,WACQ9f,KAAK0f,kBACL1f,KAAK0f,gBAAgBK,gBAAgB,MACrC/f,KAAK0f,gBAAkB,MAE3B1f,KAAKggB,qB,qBAGT,WACQhgB,KAAKigB,eACLjgB,KAAK+e,SAET/e,KAAKggB,mBACLhgB,KAAKwf,aAAc,I,0BAGvB,SAAaxQ,GACThP,KAAKkgB,WAAalR,I,8BAEtB,WACQhP,KAAKkgB,aACLlgB,KAAKkgB,aACLlgB,KAAKkgB,WAAa,U,GAsBxBC,E,YACF,WAEAC,EAAeC,EAA2BC,EAASC,EAKnDrT,GAAS,kCACL,aACKkT,cAAgBA,EACrB,EAAKC,0BAA4BA,EACjC,EAAKC,QAAUA,EACf,EAAKC,iBAAmBA,EAOxB,EAAKd,gBAAkB,SAACE,GAMpB,IAAMtU,EAAUsU,EAAOtU,QAMjBmV,EAAa,EAAKtT,UAAUuT,cAAc,cAChDpV,EAAQqV,WAAWC,aAAaH,EAAYnV,GAC5C,EAAK+U,cAActI,YAAYzM,GAC/B,EAAKqU,gBAAkBC,EACvB,yBAAmB,WAEXa,EAAWE,YACXF,EAAWE,WAAWE,aAAavV,EAASmV,OAIxD,EAAKtT,UAAYA,EAnCZ,E,0EA0CT,SAAsByS,GAAM,IAGpBkB,EAHoB,OAElBC,GADWnB,EAAOP,0BAA4Bpf,KAAKqgB,2BACvBU,wBAAwBpB,EAAOV,WAsBjE,OAhBIU,EAAOT,kBACP2B,EAAelB,EAAOT,iBAAiB8B,gBAAgBF,EAAkBnB,EAAOT,iBAAiB/a,OAAQwb,EAAOR,UAAYQ,EAAOT,iBAAiBC,UACpJnf,KAAKihB,aAAa,kBAAMJ,EAAaK,cAGrCL,EAAeC,EAAiBxb,OAAOqa,EAAOR,UAAYnf,KAAKugB,kBAC/DvgB,KAAKsgB,QAAQa,WAAWN,EAAaO,UACrCphB,KAAKihB,aAAa,WACd,EAAKX,QAAQe,WAAWR,EAAaO,UACrCP,EAAaK,aAKrBlhB,KAAKogB,cAActI,YAAY9X,KAAKshB,sBAAsBT,IAC1D7gB,KAAK0f,gBAAkBC,EAChBkB,I,kCAOX,SAAqBlB,GAAM,WACnBlT,EAAgBkT,EAAOT,iBACvBzI,EAAUhK,EAAcqK,mBAAmB6I,EAAO/Y,YAAa+Y,EAAOnO,SAkB1E,OAbAiF,EAAQC,UAAUrD,QAAQ,SAAAkO,GAAQ,OAAI,EAAKnB,cAActI,YAAYyJ,KAIrE9K,EAAQ+K,gBACRxhB,KAAKihB,aAAc,WACf,IAAItX,EAAQ8C,EAAcxD,QAAQwN,IACnB,IAAX9M,GACA8C,EAAcjB,OAAO7B,KAG7B3J,KAAK0f,gBAAkBC,EAEhBlJ,I,qBAKX,WACI,0BACqC,MAAjCzW,KAAKogB,cAAcM,YACnB1gB,KAAKogB,cAAcM,WAAWe,YAAYzhB,KAAKogB,iB,mCAIvD,SAAsBS,GAClB,OAAOA,EAAaO,SAAS1K,UAAU,O,CAlHjB6I,G,iBAuIxBmC,E,YACF,WAAY9a,EAAasY,GAAgB,qCAC/BtY,EAAasY,I,wCAFHG,G,OAKxBqC,EAAUnhB,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKkhB,GAAW,KAAyB,KAAqB,KAAyB,OACpJA,EAAUjhB,UAAO,KAAyB,CAAEC,KAAMghB,EAAW/gB,UAAW,CAAC,CAAC,GAAI,YAAa,KAAM+X,SAAU,CAAC,aAAcpW,SAAU,CAAC,Q,sBA0C/Hqf,E,YACF,WAAYtB,EAA2BuB,EAKvC1U,GAAS,kCACL,aACKmT,0BAA4BA,EACjC,EAAKuB,kBAAoBA,EAEzB,EAAKC,gBAAiB,EAEtB,EAAKC,SAAW,IAAI,IAOpB,EAAKrC,gBAAkB,SAACE,GAMpB,IAAMtU,EAAUsU,EAAOtU,QAMjBmV,EAAa,EAAKtT,UAAUuT,cAAc,cAChDd,EAAOI,gBAAP,GACA1U,EAAQqV,WAAWC,aAAaH,EAAYnV,GAC5C,EAAK0W,eAAejK,YAAYzM,GAChC,EAAKqU,gBAAkBC,EACvB,yBAAmB,WACXa,EAAWE,YACXF,EAAWE,WAAWE,aAAavV,EAASmV,OAIxD,EAAKtT,UAAYA,EArCZ,E,yDAwCT,WACI,OAAOlN,KAAK0f,iB,IAEhB,SAAWC,KAKH3f,KAAKigB,eAAkBN,GAAW3f,KAAK6hB,kBAGvC7hB,KAAKigB,eACL,yBAEAN,GACA,sBAAaA,IAEjB3f,KAAK0f,gBAAkBC,K,uBAG3B,WACI,OAAO3f,KAAKgiB,e,sBAEhB,WACIhiB,KAAK6hB,gBAAiB,I,yBAE1B,WACI,0BACA7hB,KAAK0f,gBAAkB,KACvB1f,KAAKgiB,aAAe,O,mCAQxB,SAAsBrC,GAClBA,EAAOI,gBAAgB/f,MAGvB,IAAMkf,EAA8C,MAA3BS,EAAOT,iBAC5BS,EAAOT,iBACPlf,KAAK4hB,kBAEHd,GADWnB,EAAOP,0BAA4Bpf,KAAKqgB,2BACvBU,wBAAwBpB,EAAOV,WAC3DgD,EAAM/C,EAAiB8B,gBAAgBF,EAAkB5B,EAAiB/a,OAAQwb,EAAOR,UAAYD,EAAiBC,UAW5H,OAPID,IAAqBlf,KAAK4hB,mBAC1B5hB,KAAK+hB,eAAejK,YAAYmK,EAAIb,SAAS1K,UAAU,IAE3D,4BAAmB,kBAAMuL,EAAIf,aAC7BlhB,KAAK0f,gBAAkBC,EACvB3f,KAAKgiB,aAAeC,EACpBjiB,KAAK8hB,SAASI,KAAKD,GACZA,I,kCAOX,SAAqBtC,GAAM,WACvBA,EAAOI,gBAAgB/f,MACvB,IAAMyW,EAAUzW,KAAK4hB,kBAAkB9K,mBAAmB6I,EAAO/Y,YAAa+Y,EAAOnO,SAKrF,OAJA,4BAAmB,kBAAM,EAAKoQ,kBAAkBlR,WAChD1Q,KAAK0f,gBAAkBC,EACvB3f,KAAKgiB,aAAevL,EACpBzW,KAAK8hB,SAASI,KAAKzL,GACZA,I,0BAGX,WACI,IAAM7T,EAAgB5C,KAAK4hB,kBAAkBvW,QAAQzI,cAGrD,OAAQA,EAAc+E,WAAa/E,EAAcgF,aAC7ChF,EAAgBA,EAAc8d,e,CA7HZnB,G,OAgI9BoC,EAAgBphB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKmhB,GAAiB,KAAyB,KAAkC,KAAyB,KAA0B,KAAyB,OACtOA,EAAgBlhB,UAAO,KAAyB,CAAEC,KAAMihB,EAAiBhhB,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMwB,OAAQ,CAAEwd,OAAQ,CAAC,kBAAmB,WAAawC,QAAS,CAAEL,SAAU,YAAcpJ,SAAU,CAAC,mBAAoBpW,SAAU,CAAC,Q,sBA8C7O8f,E,sDAENA,EAAa7hB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK4hB,IACxEA,EAAalJ,UAAO,KAAwB,CAAExY,KAAM0hB,IACpDA,EAAajJ,UAAO,KAAwB,I,8BCnlBnC,SAAUkJ,GAAU,aAIzB,IAAIC,EACI,6DAA6DC,MAAM,KACvEC,EACI,kDAAkDD,MAAM,KAC5DE,EAAc,CACV,QACA,QACA,oBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAECL,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FL,MAC9F,KAEJM,YAAa,SAAUC,EAAGC,GACtB,OAAKD,EAEM,QAAQE,KAAKD,GACbP,EAAuBM,EAAEG,SAEzBX,EAAoBQ,EAAEG,SAJtBX,GAQfI,YAAaA,EACbQ,iBAAkBR,EAClBS,kBACI,4FACJC,uBACI,mFAEJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAElBc,SACI,6DAA6DhB,MAAM,KACvEiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAG,mBACHgC,GAAI,aACJC,EAAG,gBACHC,GAAI,SACJhN,EAAG,gBACHiN,GAAI,WACJC,EAAG,iBACHC,GAAI,WACJC,EAAG,kBACHC,GAAI,aACJC,EAAG,iBACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyB/gB,CAAQ,EAAQ,U,wBCEjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wNAAmJL,MACvJ,KAEJM,YACI,oFAA6DN,MAAM,KACvEgB,SACI,gGAA6EhB,MACzE,KAERiB,cAAe,2CAAmCjB,MAAM,KACxDkB,YAAa,gBAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,gBACNC,EAAG,mBACHC,GAAI,eACJ/B,EAAG,eACHgC,GAAI,cACJC,EAAG,cACHC,GAAI,aACJhN,EAAG,cACHiN,GAAI,cACJG,EAAG,gBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB/gB,CAAQ,EAAQ,U,kpBC6B1D,IAAMrF,EAAM,CAAC,SACb,SAASqmB,EAAuCnkB,EAAIC,GAIlD,GAJkE,EAALD,IAC3D,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAoB,GACpB,QACO,EAALA,EAAQ,CACV,IAAMokB,EAAiBnkB,EAAIokB,GACrBC,EAAS,OACf,KAAkB,KAAMA,EAAOD,GAA/B,CAAmC,UAAWC,EAAOC,YACrD,KAAmB,aAAcD,EAAOE,WAAa,KAArD,CAA2D,kBAAmBF,EAAOG,wBAAwBL,KAEjH,IAAMrmB,EAAM,CAAC,KACT2mB,EAA+B,EAE7BC,E,YACF,WAEAC,EAEAC,GAAM,oBACFxmB,KAAKumB,OAASA,EACdvmB,KAAKwmB,OAASA,IAKhBC,E,+CAEAC,EAA4B,YAAmBD,GAE/CE,EAAmC,IAAI,IAAe,mCAAoC,CAC5FC,WAAY,OACZ9hB,QAGJ,WACI,MAAO,CAAE+hB,uBAAuB,M,iBAG9BC,E,YACF,WAAYha,EAAoBC,EAAaga,EAAUC,GAAQ,kCAC3D,aACKla,mBAAqBA,EAC1B,EAAKC,YAAcA,EACnB,EAAKka,qBAAuB,IAAaC,MAEzC,EAAKC,WAAY,EACjB,EAAKC,SAAU,EAEf,EAAKC,YAAc,KAEnB,EAAKC,eAAiB,IAAI,IAE1B,EAAKC,OAAS,IAAI,IAElB,EAAKC,OAAS,IAAI,IAElB,EAAKC,gBAAkB,IAAI,IAC3B,EAAKvB,WAAa,GAElB,EAAKF,GAAL,2BAA8BK,KAK9B,EAAKqB,aAAeV,aAA2C,EAASA,EAASW,UAAW,EAC5F,EAAKC,yBAA2Bb,EAASF,sBA1BkB,E,yDA6B/D,WAAe,OAAO7mB,KAAKonB,SAAWpnB,KAAKmnB,Y,iCAK3C,WAA8B,OAAOnnB,KAAK4nB,wB,IAC1C,SAA0BrmB,GACtBvB,KAAK4nB,uBAAyB,YAAsBrmB,K,qBAMxD,SAAcA,GAENvB,KAAKkmB,WADL3kB,GAASA,EAAM4C,OACG,YAAkB5C,GAAOkU,OAAO,SAAC9S,EAAWklB,GAE1D,OADAllB,EAAUklB,IAAa,EAChBllB,GACR,IAGe,GAEtB3C,KAAK8nB,sBAAsB9nB,KAAKkmB,YAChClmB,KAAK+M,YAAYnK,cAAcilB,UAAY,K,gCAE/C,WAAkB,WACd7nB,KAAK+nB,YAAc,IAAI,IAA2B/nB,KAAKgoB,SAASC,WAChEjoB,KAAKinB,qBAAuBjnB,KAAK+nB,YAAYhY,OAAO7L,UAAU,SAAAyF,GAC1D,EAAK8d,gBAAgBvF,KAAK,CAAEqE,OAAQ,EAAMC,OAAQ,EAAKwB,QAAQE,UAAUve,IAAU,SAGvF3J,KAAKmoB,mB,yBAET,WACInoB,KAAKinB,qBAAqBrR,gB,2BAM9B,SAAcwS,GACNpoB,KAAKqoB,QACLroB,KAAKqoB,MAAMzlB,cAAcwlB,UAAYA,K,2BAI7C,WACI,OAAOpoB,KAAKqoB,MAAQroB,KAAKqoB,MAAMzlB,cAAcwlB,UAAY,I,4BAG7D,WACIpoB,KAAKmnB,YAAcnnB,KAAKgoB,QAAQ7jB,OAChCnE,KAAK8nB,sBAAsB9nB,KAAKkmB,YAChClmB,KAAK8M,mBAAmBkK,iB,8BAG5B,SAAiBwP,GACb,IAAM8B,EAAQ,IAAIhC,EAA6BtmB,KAAMwmB,GACrDxmB,KAAKsnB,eAAepF,KAAKoG,K,qCAG7B,SAAwBC,GACpB,OAAIvoB,KAAKmmB,UACE,KAGJnmB,KAAKwoB,gBADYD,EAAUA,EAAU,IAAM,IACHvoB,KAAKwoB,eAAiBD,I,mCAGzE,SAAsB5lB,GAClBA,EAAU3C,KAAKyoB,eAAiBzoB,KAAKmnB,UACrCxkB,EAAU3C,KAAK0oB,eAAiB1oB,KAAKmnB,c,CAtGVT,G,OAyGnCI,EAAqBvmB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKsmB,GAAsB,KAAyB,KAA2B,KAAyB,KAAoB,KAAyBH,GAAmC,KAAyB,OACpSG,EAAqBrmB,UAAO,KAAyB,CAAEC,KAAMomB,EAAsBxO,UAAW,SAAoC3W,EAAIC,GAI9H,IAAIE,EAJ0I,EAALH,IACzI,KAAmB,IAAa,GAChC,KAAmBlC,EAAK,IACjB,EAALkC,IAEF,KAAsBG,EAAK,UAA0BF,EAAItB,SAAWwB,EAAGE,OACvE,KAAsBF,EAAK,UAA0BF,EAAIymB,MAAQvmB,EAAGE,SACnEG,OAAQ,CAAEklB,YAAa,cAAeR,sBAAuB,wBAAyBlkB,UAAW,CAAC,QAAS,aAAcwjB,UAAW,CAAC,aAAc,aAAcqC,eAAgB,CAAC,kBAAmB,kBAAmBG,WAAY,cAAgBxG,QAAS,CAAEmF,eAAgB,iBAAkBC,OAAQ,SAAUC,OAAQ,SAAUC,gBAAiB,mBAAqBnlB,SAAU,CAAC,Q,sBAwDzXsmB,E,YACF,+CACI,WAAStP,YACJmP,cAAgB,2BACrB,EAAKC,aAAe,0BAHxB,E,wCAD0B5B,G,OAO9B8B,EAAgBroB,UAAO,SAAiCC,GAAK,OAAOqoB,EAA6BroB,GAAKooB,IACtGA,EAAgBziB,UAAO,KAAyB,CAAEzF,KAAMkoB,EAAiBjoB,UAAW,CAAC,CAAC,qBAAsBe,eAAgB,SAAwCC,EAAIC,EAAKC,GAIrK,IAAIC,EAJsL,EAALH,IACrL,KAAsBE,EAAU,IAAc,GAC9C,KAAsBA,EAAU,IAAW,IACpC,EAALF,IAEF,KAAsBG,EAAK,UAA0BF,EAAIknB,aAAehnB,GACxE,KAAsBA,EAAK,UAA0BF,EAAIomB,QAAUlmB,KAClEiB,UAAW,CAAC,EAAG,oBAAqBZ,OAAQ,CAAE4mB,cAAe,iBAAmBrQ,SAAU,CAAC,mBAAoBpW,SAAU,CAAC,KAA0B,CACjJ,CAAEC,QAAS,IAA6BC,YAAaomB,KACrD,MAAoC/P,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,UAAW,EAAG,yBAA0B,EAAG,KAAM,WAAY,CAAC,QAAS,KAAMhG,SAAU,SAAkCqB,EAAIC,GAAgB,EAALD,IAC9O,OACA,KAAkB,EAAGmkB,EAAwC,EAAG,EAAG,iBAClEvf,WAAY,CAAC,KAAiBuS,OAAQ,CAAC,8pBAA+pBtS,cAAe,EAAGwiB,gBAAiB,I,KAK5uBH,EAA6C,KAA6BD,GA2F1EK,EAAmC,IAAI,IAAe,oCAMtDC,EAAoD,CACtD3mB,QAAS0mB,EACTE,KAAM,CAAC,KACPC,WAPJ,SAAkDC,GAC9C,OAAO,kBAAMA,EAAQC,iBAAiBC,gBAYpCC,EAAkC,CACpCjnB,QAAS,IACTC,YAAa,aAAW,kBAAMinB,IAC9BC,OAAO,G,iBAYLC,E,8BACF,WAAYC,EAAUC,EAAUjI,EAAmBkI,EAAOhd,EAAoBid,EAAgB9c,EAAM+c,EAAY9c,EAAWI,EAAgB2c,GAAS,+BAChJjqB,KAAK4pB,SAAWA,EAChB5pB,KAAK6pB,SAAWA,EAChB7pB,KAAK4hB,kBAAoBA,EACzB5hB,KAAK8pB,MAAQA,EACb9pB,KAAK8M,mBAAqBA,EAC1B9M,KAAKiN,KAAOA,EACZjN,KAAKgqB,WAAaA,EAClBhqB,KAAKkN,UAAYA,EACjBlN,KAAKsN,eAAiBA,EACtBtN,KAAKiqB,UAAYA,EACjBjqB,KAAKkqB,qBAAsB,EAC3BlqB,KAAKmqB,uBAAwB,EAE7BnqB,KAAKoqB,wBAAyB,EAE9BpqB,KAAKqqB,sBAAwB,IAAanD,MAM1ClnB,KAAKsqB,qBAAsB,EAE3BtqB,KAAKuqB,qBAAuB,IAAI,IAKhCvqB,KAAKwqB,mBAAqB,WAItB,EAAKF,oBACD,EAAKpd,UAAUud,gBAAkB,EAAKb,SAAShnB,eAAiB,EAAK8nB,WAG7E1qB,KAAK2qB,UAAY,aAEjB3qB,KAAK4qB,WAAa,aAQlB5qB,KAAKgK,SAAW,OAKhBhK,KAAK6qB,sBAAwB,MAC7B7qB,KAAK8qB,kBAAmB,EAExB9qB,KAAK+qB,iBAAmB,YAAM,WAC1B,OAAI,EAAKC,cAAgB,EAAKA,aAAahD,QAChC,IAAK,WAAL,cAAS,EAAKgD,aAAahD,QAAQve,IAAI,SAAA+c,GAAM,OAAIA,EAAOyE,sBAI5D,EAAKnB,MAAMplB,SACbV,KAAK,YAAK,GAAI,YAAU,kBAAM,EAAK+mB,sBAE5C/qB,KAAKkrB,gBAAkBnB,G,iCAM3B,WAA6B,OAAO/pB,KAAKmqB,uB,IACzC,SAAyB5oB,GACrBvB,KAAKmqB,sBAAwB,YAAsB5oB,K,6BAEvD,WAAe,WACL4pB,EAASnrB,KAAKorB,kBACE,IAAXD,GACPnrB,KAAK8pB,MAAMuB,kBAAkB,kBAAMF,EAAOG,iBAAiB,OAAQ,EAAKd,wB,yBAGhF,SAAYvlB,GACJA,EAAO,UAAgBjF,KAAKurB,oBAC5BvrB,KAAKwrB,sBAAsBxrB,KAAKurB,mBAC5BvrB,KAAK0qB,WACL1qB,KAAKyrB,YAAYC,oB,yBAI7B,WACI,IAAMP,EAASnrB,KAAKorB,kBACE,IAAXD,GACPA,EAAOQ,oBAAoB,OAAQ3rB,KAAKwqB,oBAE5CxqB,KAAKqqB,sBAAsBzU,cAC3B5V,KAAKkqB,qBAAsB,EAC3BlqB,KAAK4rB,gBACL5rB,KAAKuqB,qBAAqBzmB,a,qBAG9B,WACI,OAAO9D,KAAK8qB,kBAAoB9qB,KAAKgrB,aAAa7D,Y,uBAGtD,WACInnB,KAAK6rB,iBACL7rB,KAAK8rB,gB,wBAGT,WACI9rB,KAAK+rB,cACA/rB,KAAK8qB,mBAGN9qB,KAAK0qB,WAEL1qB,KAAKgrB,aAAaxD,OAAOtF,OAE7BliB,KAAKgrB,aAAa5D,QAAUpnB,KAAK8qB,kBAAmB,EAChD9qB,KAAKyrB,aAAezrB,KAAKyrB,YAAYxL,gBACrCjgB,KAAKyrB,YAAY1M,SACjB/e,KAAKgsB,4BAA4BpW,eAIhC5V,KAAKkqB,qBAKNlqB,KAAK8M,mBAAmB0U,mB,4BAOhC,WACQxhB,KAAK8qB,kBACL9qB,KAAKyrB,YAAYC,mB,+BAOzB,WAAuB,WACnB,OAAO,YAAM1rB,KAAK+qB,iBAAkB/qB,KAAKgrB,aAAajD,YAAYkE,OAAOjoB,KAAK,YAAO,kBAAM,EAAK8mB,oBAAoB9qB,KAAKuqB,qBAAsBvqB,KAAKksB,yBAA0BlsB,KAAKyrB,YAC/KzrB,KAAKyrB,YAAYU,cAAcnoB,KAAK,YAAO,kBAAM,EAAK8mB,oBACtD,eAAM9mB,KAEV,YAAI,SAAAskB,GAAK,OAAIA,aAAiB,IAA2BA,EAAQ,U,wBAGrE,WACI,OAAItoB,KAAKgrB,cAAgBhrB,KAAKgrB,aAAajD,YAChC/nB,KAAKgrB,aAAajD,YAAYqE,WAElC,O,oCAGX,WAAsB,WAClB,OAAO,YAAM,YAAUpsB,KAAKkN,UAAW,SAAU,YAAUlN,KAAKkN,UAAW,YAAa,YAAUlN,KAAKkN,UAAW,aAC7GlJ,KAAK,YAAO,SAAAskB,GAGb,IAAM+D,EAAe,EAAKC,qBAAuBhE,EAAMiE,aAAejE,EAAMiE,eAAe,GACvFjE,EAAMkE,OACJC,EAAY,EAAKzC,WAAa,EAAKA,WAAWjd,YAAYnK,cAAgB,KAC1E8pB,EAAe,EAAKC,YAAc,EAAKA,YAAYjqB,WAAWE,cAAgB,KACpF,OAAO,EAAKkoB,kBAAoBuB,IAAgB,EAAKzC,SAAShnB,iBACxD6pB,IAAcA,EAAUG,SAASP,OACjCK,IAAiBA,EAAaE,SAASP,OACtC,EAAKZ,cAAgB,EAAKA,YAAYoB,eAAeD,SAASP,Q,wBAI7E,SAAW9qB,GAAK,WACZgD,QAAQC,QAAQ,MAAM6Z,KAAK,kBAAM,EAAKyO,iBAAiBvrB,O,8BAG3D,SAAiByN,GACbhP,KAAK2qB,UAAY3b,I,+BAGrB,SAAkBA,GACdhP,KAAK4qB,WAAa5b,I,8BAGtB,SAAiB+d,GACb/sB,KAAK4pB,SAAShnB,cAAcoqB,SAAWD,I,4BAE3C,SAAezE,GACX,IAAM2E,EAAU3E,EAAM2E,QAQtB,GAHIA,IAAY,KAAW,YAAe3E,IACtCA,EAAM4E,iBAENltB,KAAKmtB,cAAgBF,IAAY,KAASjtB,KAAK0qB,UAC/C1qB,KAAKmtB,aAAaC,wBAClBptB,KAAKqtB,mBACL/E,EAAM4E,sBAEL,GAAIltB,KAAKgrB,aAAc,CACxB,IAAMsC,EAAiBttB,KAAKgrB,aAAajD,YAAYqE,WAC/CmB,EAAaN,IAAY,KAAYA,IAAY,IACnDjtB,KAAK0qB,WAAauC,IAAY,IAC9BjtB,KAAKgrB,aAAajD,YAAYyF,UAAUlF,GAEnCiF,GAAcvtB,KAAKytB,YACxBztB,KAAK0tB,aAELH,GAAcvtB,KAAKgrB,aAAajD,YAAYqE,aAAekB,IAC3DttB,KAAK2tB,gBAAgB3tB,KAAKgrB,aAAajD,YAAY6F,iBAAmB,M,0BAIlF,SAAatF,GACT,IAAIkE,EAASlE,EAAMkE,OACfjrB,EAAQirB,EAAOjrB,MAEC,WAAhBirB,EAAO9rB,OACPa,EAAiB,IAATA,EAAc,KAAOssB,WAAWtsB,IAOxCvB,KAAK8tB,iBAAmBvsB,IACxBvB,KAAK8tB,eAAiBvsB,EACtBvB,KAAK2qB,UAAUppB,GACXvB,KAAKytB,YAAcztB,KAAKkN,UAAUud,gBAAkBnC,EAAMkE,QAC1DxsB,KAAK0tB,e,0BAIjB,WACS1tB,KAAKsqB,oBAGDtqB,KAAKytB,aACVztB,KAAK8tB,eAAiB9tB,KAAK4pB,SAAShnB,cAAcrB,MAClDvB,KAAK6rB,iBACL7rB,KAAK8rB,aAAY,IALjB9rB,KAAKsqB,qBAAsB,I,yBAcnC,WAAiC,IAArByD,EAAqB,wDACzB/tB,KAAKgqB,YAA6C,SAA/BhqB,KAAKgqB,WAAWgE,aAC/BD,EACA/tB,KAAKgqB,WAAWiE,uBAGhBjuB,KAAKgqB,WAAWgE,WAAa,SAEjChuB,KAAKoqB,wBAAyB,K,yBAItC,WACQpqB,KAAKoqB,yBACLpqB,KAAKgqB,WAAWgE,WAAa,OAC7BhuB,KAAKoqB,wBAAyB,K,wCAOtC,WAA0B,WAChB8D,EAAcluB,KAAK8pB,MAAMplB,SAASV,KAAK,YAAK,IAC5CmqB,EAAgBnuB,KAAKgrB,aAAahD,QAAQ/iB,QAAQjB,KAAK,YAAI,kBAAM,EAAKunB,kBAAkB6C,wBAG9F,YAAM,IAEN,OAAO,YAAMF,EAAaC,GACrBnqB,KAGL,YAAU,WACN,IAAMqqB,EAAU,EAAK3D,UAarB,OAZA,EAAK2C,mBACL,EAAKrC,aAAa7C,iBACd,EAAKuC,YACL,EAAKe,YAAYC,iBAKb2C,IAAY,EAAK3D,WACjB,EAAKM,aAAazD,OAAOrF,QAG1B,EAAKoM,sBAGhB,YAAK,IAEApqB,UAAU,SAAAokB,GAAK,OAAI,EAAKiG,kBAAkBjG,O,2BAGnD,WACQtoB,KAAKyrB,cACLzrB,KAAKwuB,aACLxuB,KAAKyrB,YAAYgD,UACjBzuB,KAAKyrB,YAAc,Q,8BAG3B,SAAiBlqB,GACb,IAAMmtB,EAAY1uB,KAAKgrB,cAAgBhrB,KAAKgrB,aAAa3D,YACrDrnB,KAAKgrB,aAAa3D,YAAY9lB,GAC9BA,EAGEotB,EAA0B,MAAbD,EAAoBA,EAAY,GAG/C1uB,KAAKgqB,WACLhqB,KAAKgqB,WAAW4E,SAASrtB,MAAQotB,EAGjC3uB,KAAK4pB,SAAShnB,cAAcrB,MAAQotB,EAExC3uB,KAAK8tB,eAAiBa,I,+BAO1B,SAAkBrG,GACVA,GAASA,EAAM/B,SACfvmB,KAAK6uB,6BAA6BvG,EAAM/B,QACxCvmB,KAAK8sB,iBAAiBxE,EAAM/B,OAAOhlB,OACnCvB,KAAK2qB,UAAUrC,EAAM/B,OAAOhlB,OAC5BvB,KAAK4pB,SAAShnB,cAAcksB,QAC5B9uB,KAAKgrB,aAAa+D,iBAAiBzG,EAAM/B,SAE7CvmB,KAAKwuB,e,0CAKT,SAA6BQ,GACzBhvB,KAAKgrB,aAAahD,QAAQ3U,QAAQ,SAAAmT,GAC1BA,IAAWwI,GAAQxI,EAAOyI,UAC1BzI,EAAO0I,e,4BAInB,WAAc,IACNvkB,EADM,OAOsB,MAA5B3K,KAAKssB,sBACLtsB,KAAKssB,sBAAwB,YAAetsB,KAAK4pB,SAAShnB,gBAE9D,IAAIusB,EAAanvB,KAAKyrB,YACjB0D,GA2BDnvB,KAAKurB,kBAAkB6D,UAAUpvB,KAAKqvB,wBACtCF,EAAWG,WAAW,CAAE5lB,MAAO1J,KAAKuvB,qBA3BpCvvB,KAAKwvB,QAAU,IAAI,IAAexvB,KAAKgrB,aAAa1qB,SAAUN,KAAK4hB,kBAAmB,CAAEoE,GAA+B,QAA1Brb,EAAK3K,KAAKgqB,kBAA+B,IAAPrf,OAAgB,EAASA,EAAG8kB,eAC3JN,EAAanvB,KAAK6pB,SAASvkB,OAAOtF,KAAK0vB,qBACvC1vB,KAAKyrB,YAAc0D,EAGnBA,EAAWQ,gBAAgBzrB,UAAU,SAAAokB,IAG5BA,EAAM2E,UAAY,MAAW,YAAe3E,IAC5CA,EAAM2E,UAAY,KAAY,YAAe3E,EAAO,aACrD,EAAK+E,mBACL,EAAK9C,qBAAqB1mB,OAG1BykB,EAAMsH,kBACNtH,EAAM4E,oBAGdltB,KAAKqqB,sBAAwBrqB,KAAKsN,eAAeyC,SAAS7L,UAAU,WAC5D,EAAKwmB,WAAayE,GAClBA,EAAWG,WAAW,CAAE5lB,MAAO,EAAK6lB,sBAS5CJ,IAAeA,EAAWlP,gBAC1BkP,EAAWrQ,OAAO9e,KAAKwvB,SACvBxvB,KAAKgsB,4BAA8BhsB,KAAK6vB,8BAE5C,IAAMxB,EAAUruB,KAAK0qB,UACrB1qB,KAAKgrB,aAAa7C,iBAClBnoB,KAAKgrB,aAAa5D,QAAUpnB,KAAK8qB,kBAAmB,EAGhD9qB,KAAK0qB,WAAa2D,IAAYruB,KAAK0qB,WACnC1qB,KAAKgrB,aAAazD,OAAOrF,S,+BAGjC,WACI,IAAIvX,EACJ,OAAO,IAAI,IAAc,CACrBmlB,iBAAkB9vB,KAAK+vB,sBACvBhG,eAAgB/pB,KAAKkrB,kBACrBxhB,MAAO1J,KAAKuvB,iBACZvoB,UAAWhH,KAAKiN,KAChB+iB,WAAsC,QAAzBrlB,EAAK3K,KAAKiqB,iBAA8B,IAAPtf,OAAgB,EAASA,EAAGslB,sB,iCAGlF,WACI,IAAMC,EAAWlwB,KAAK6pB,SAAS7f,WAC1BmmB,oBAAoBnwB,KAAKqvB,wBACzBe,wBAAuB,GACvBC,UAAS,GAGd,OAFArwB,KAAKwrB,sBAAsB0E,GAC3BlwB,KAAKurB,kBAAoB2E,EAClBA,I,mCAGX,SAAsBJ,GAGlB,IAYIzjB,EAZEikB,EAAiB,CACnB,CAAEC,QAAS,QAASC,QAAS,SAAUC,SAAU,QAASC,SAAU,OACpE,CAAEH,QAAS,MAAOC,QAAS,SAAUC,SAAU,MAAOC,SAAU,QAK9DV,EAAahwB,KAAK2wB,YAClBC,EAAiB,CACnB,CAAEL,QAAS,QAASC,QAAS,MAAOC,SAAU,QAASC,SAAU,SAAUV,cAC3E,CAAEO,QAAS,MAAOC,QAAS,MAAOC,SAAU,MAAOC,SAAU,SAAUV,eAIvE3jB,EADkB,UAAlBrM,KAAKgK,SACO4mB,EAEW,UAAlB5wB,KAAKgK,SACEsmB,EAGA,GAAH,OAAOA,EAAmBM,GAEvCd,EAAiBe,cAAcxkB,K,kCAEnC,WACI,OAAIrM,KAAK2sB,YACE3sB,KAAK2sB,YAAYjqB,WAErB1C,KAAKgqB,WAAahqB,KAAKgqB,WAAW8G,4BAA8B9wB,KAAK4pB,W,4BAEhF,WACI,OAAO5pB,KAAKgrB,aAAarC,YAAc3oB,KAAK+wB,kB,2BAGhD,WACI,OAAO/wB,KAAKqvB,uBAAuBzsB,cAAc6H,wBAAwBf,Q,8BAM7E,WACI,IAAMshB,EAAehrB,KAAKgrB,aACtBA,EAAanE,sBAGbmE,EAAajD,YAAYiJ,qBAGzBhG,EAAajD,YAAYkJ,eAAe,K,sBAIhD,WACI,IAAM5lB,EAAUrL,KAAK4pB,SAAShnB,cAC9B,OAAQyI,EAAQ6lB,WAAa7lB,EAAQ2hB,WAAahtB,KAAKmqB,wB,wBAG3D,WACI,IAAIxf,EACJ,OAAkC,QAAzBA,EAAK3K,KAAKkN,iBAA8B,IAAPvC,OAAgB,EAASA,EAAGwmB,cAAgBhG,S,6BAG1F,SAAgBxhB,GAQZ,IAAMqhB,EAAehrB,KAAKgrB,aACpBoG,EAAa,YAA8BznB,EAAOqhB,EAAahD,QAASgD,EAAalC,cAC3F,GAAc,IAAVnf,GAA8B,IAAfynB,EAIfpG,EAAaqG,cAAc,QAE1B,GAAIrG,EAAa3C,MAAO,CACzB,IAAM7B,EAASwE,EAAahD,QAAQE,UAAUve,GAC9C,GAAI6c,EAAQ,CACR,IAAMnb,EAAUmb,EAAO8K,kBACjBC,EAAoB,YAAyBlmB,EAAQmmB,UAAWnmB,EAAQomB,aAAczG,EAAa0G,gBAAiB1G,EAAa3C,MAAMzlB,cAAc6uB,cAC3JzG,EAAaqG,cAAcE,S,UAK3C5H,EAA4BppB,UAAO,SAA6CC,GAAK,OAAO,IAAKA,GAAKmpB,GAA6B,KAAyB,KAAoB,KAAyB,KAAiB,KAAyB,KAA0B,KAAyB,KAAgB,KAAyB,KAA2B,KAAyBV,GAAmC,KAAyB,IAAuB,GAAI,KAAyB,IAAgB,GAAI,KAAyB,IAAU,GAAI,KAAyB,KAAuB,KAAyBtC,EAAkC,KACzpBgD,EAA4BlpB,UAAO,KAAyB,CAAEC,KAAMipB,EAA6BxnB,OAAQ,CAAE6H,SAAU,CAAC,0BAA2B,YAAa6gB,sBAAuB,CAAC,eAAgB,yBAA0B8G,qBAAsB,CAAC,0BAA2B,wBAAyB3G,aAAc,CAAC,kBAAmB,gBAAiB2B,YAAa,CAAC,6BAA8B,gBAAkBrqB,SAAU,CAAC,Q,sBA6DjamnB,E,YACF,+CACI,WAASnQ,YACJqX,YAAc,+BAFvB,E,wCADiChH,G,OAMrCF,EAAuBlpB,UAAO,SAAwCC,GAAK,OAAOoxB,EAAoCpxB,GAAKipB,IAC3HA,EAAuBhpB,UAAO,KAAyB,CAAEC,KAAM+oB,EAAwB9oB,UAAW,CAAC,CAAC,QAAS,kBAAmB,IAAK,CAAC,WAAY,kBAAmB,KAAMoC,UAAW,CAAC,EAAG,4BAA6BwV,SAAU,EAAGC,aAAc,SAA6C7W,EAAIC,GAAgB,EAALD,GACtS,KAAkB,UAAW,WAA+D,OAAOC,EAAIiwB,gBAAvG,CAA0H,OAAQ,WAA4D,OAAOjwB,EAAIgpB,cAAzM,CAA0N,QAAS,SAAyDkH,GAAU,OAAOlwB,EAAImwB,aAAaD,IAA9T,CAA0U,UAAW,SAA2DA,GAAU,OAAOlwB,EAAIowB,eAAeF,KAC7a,EAALnwB,GACF,KAAmB,eAAgBC,EAAIipB,sBAAvC,CAA8D,OAAQjpB,EAAI+vB,qBAAuB,KAAO,WAAxG,CAAoH,oBAAqB/vB,EAAI+vB,qBAAuB,KAAO,OAA3K,CAAmL,wBAAyB/vB,EAAI8oB,WAAa9oB,EAAIurB,aAAevrB,EAAIurB,aAAanH,GAAK,KAAtQ,CAA4Q,gBAAiBpkB,EAAI+vB,qBAAuB,KAAO/vB,EAAI8oB,UAAUuH,WAA7U,CAAyV,YAAarwB,EAAI+vB,uBAAyB/vB,EAAI8oB,WAAuC,MAApB9oB,EAAIopB,aAAX,KAAyCppB,EAAIopB,aAAahF,GAA7c,CAAid,iBAAkBpkB,EAAI+vB,uBACtejZ,SAAU,CAAC,0BAA2BpW,SAAU,CAAC,KAA0B,CAACknB,IAAmC,Q,KAClHoI,EAAoD,KAA6BnI,G,iBAiCjFyI,E,sDAENA,EAAsB3xB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK0xB,IAC1FA,EAAsBhZ,UAAO,KAAwB,CAAExY,KAAMwxB,IAC7DA,EAAsB/Y,UAAO,KAAwB,CAAEgZ,UAAW,CAACjJ,GAAoD9P,QAAS,CAAC,CACrH,IACA,IACA,IACA,KACD,IACH,IACA,O,0CCzgCR,4FAMIgZ,EAA2B,WAO3B,SAASA,EAAUjxB,EAAMkxB,EAAiB3xB,GACtCV,KAAKmB,KAAOA,EACZnB,KAAKqyB,gBAAkBA,EACvBryB,KAAKU,KAAOA,EACZV,KAAKsyB,mBAAoB,EAIzBtyB,KAAKuyB,aAAe,GACpBvyB,KAAKwyB,kBAAoB,OACzBxyB,KAAKyyB,kBAAoB,KAkB7B,OAhBAL,EAAUM,UAAUC,qBAAuB,SAAUC,GAEjD,OADA5yB,KAAKwyB,kBAAoBI,EAClB5yB,MAEXoyB,EAAUM,UAAUG,qBAAuB,SAAUP,GAEjD,OADAtyB,KAAKsyB,kBAAoBA,EAClBtyB,MAEXoyB,EAAUM,UAAUI,gBAAkB,SAAUC,GAE5C,OADA/yB,KAAKuyB,aAAeQ,EACb/yB,MAEXoyB,EAAUM,UAAUM,2BAA6B,SAAUC,GAEvD,OADAjzB,KAAKyyB,kBAAoBQ,EAClBjzB,MAEJoyB,EAnCoB,GAsD3Bc,EAAqB,YAsBrBC,EAA0B,WAC1B,SAASA,EAAShyB,EAAMkX,GACpBrY,KAAKmB,KAAOA,EACZnB,KAAKqY,UAAYA,EACjBrY,KAAKif,UAAY,KACjBjf,KAAKozB,UAAY,IAAI3lB,IACrBzN,KAAKqzB,kBAAoB,IAAI5lB,IAC7BzN,KAAKszB,iBAAmB,IAAI7lB,IAC5BzN,KAAKuzB,gBAAkB,IAAI9lB,IAgS/B,OA1RA0lB,EAAST,UAAUxgB,IAAM,SAAUshB,GAE/B,IAAIC,EAAuBzzB,KAAK0zB,4BAA4BF,GAC5D,IAAKxzB,KAAKqzB,kBAAkBjf,IAAIqf,GAAuB,CACnD,IAAIE,EAAW,IAAI,IAEnB,GADA3zB,KAAKqzB,kBAAkBhf,IAAIof,EAAsBE,GAC7C3zB,KAAK4zB,cAAcH,IACnBzzB,KAAK6zB,uBAEL,IACI,IAAIC,EAAW9zB,KAAK+zB,uBAAuB,CACvCC,mBAAoBP,IAEpBK,GACAH,EAASnvB,QAAQsvB,GAGzB,MAAOG,KAMf,OAAOj0B,KAAKqzB,kBAAkBnhB,IAAIuhB,GAAsBS,SAE5Df,EAAST,UAAUyB,aAAe,SAAUnM,GACxC,IAAIrd,EAEA8oB,EAAuBzzB,KAAK0zB,4BAA4B1L,aAAyC,EAASA,EAAQwL,YAClHY,EAAyF,QAA7EzpB,EAAKqd,aAAyC,EAASA,EAAQoM,gBAA6B,IAAPzpB,GAAgBA,EACrH,IAAI3K,KAAK4zB,cAAcH,KACnBzzB,KAAK6zB,uBAeJ,CAED,GAAIO,EACA,OAAO,KAGP,MAAMC,MAAM,WAAar0B,KAAKmB,KAAO,qBApBzC,IACI,OAAOnB,KAAK+zB,uBAAuB,CAC/BC,mBAAoBP,IAG5B,MAAOQ,GACH,GAAIG,EACA,OAAO,KAGP,MAAMH,IActBd,EAAST,UAAU4B,aAAe,WAC9B,OAAOt0B,KAAKif,WAEhBkU,EAAST,UAAU6B,aAAe,SAAUtV,GACxC,IAAIuV,EAAK7pB,EACT,GAAIsU,EAAU9d,OAASnB,KAAKmB,KACxB,MAAMkzB,MAAM,yBAA2BpV,EAAU9d,KAAO,iBAAmBnB,KAAKmB,KAAO,KAE3F,GAAInB,KAAKif,UACL,MAAMoV,MAAM,iBAAmBr0B,KAAKmB,KAAO,8BAI/C,GAFAnB,KAAKif,UAAYA,EAEZjf,KAAK6zB,uBAAV,CAIA,GAuNR,SAA0B5U,GACtB,MAAuC,UAAhCA,EAAUuT,kBAxNTiC,CAAiBxV,GACjB,IACIjf,KAAK+zB,uBAAuB,CAAEC,mBAAoBd,IAEtD,MAAOe,IAOX,IAII,IAAK,IAAIrpB,EAAK,YAAS5K,KAAKqzB,kBAAkBqB,WAAYC,EAAK/pB,EAAG/G,QAAS8wB,EAAGC,KAAMD,EAAK/pB,EAAG/G,OAAQ,CAChG,IAAIgxB,EAAK,YAAOF,EAAGpzB,MAAO,GAAgCuzB,EAAmBD,EAAG,GAC5EpB,EAAuBzzB,KAAK0zB,4BADmBmB,EAAG,IAEtD,IAEI,IAAIf,EAAW9zB,KAAK+zB,uBAAuB,CACvCC,mBAAoBP,IAExBqB,EAAiBtwB,QAAQsvB,GAE7B,MAAOG,MAMf,MAAOc,GAASP,EAAM,CAAEQ,MAAOD,GApB/B,QAsBI,IACQJ,IAAOA,EAAGC,OAASjqB,EAAKC,EAAGqqB,SAAStqB,EAAGuqB,KAAKtqB,GADpD,QAGU,GAAI4pB,EAAK,MAAMA,EAAIQ,UAGrC7B,EAAST,UAAUyC,cAAgB,SAAU3B,QACtB,IAAfA,IAAyBA,EAAaN,GAC1ClzB,KAAKqzB,kBAAkB9gB,OAAOihB,GAC9BxzB,KAAKszB,iBAAiB/gB,OAAOihB,GAC7BxzB,KAAKozB,UAAU7gB,OAAOihB,IAI1BL,EAAST,UAAUngB,OAAS,WACxB,OAAO,YAAUvS,UAAM,OAAQ,EAAQ,WACnC,IAAIo1B,EACJ,OAAO,YAAYp1B,KAAM,SAAU2K,GAC/B,OAAQA,EAAG0qB,OACP,KAAK,EAED,OADAD,EAAW7qB,MAAMjG,KAAKtE,KAAKozB,UAAUtf,UAC9B,CAAC,EAAavP,QAAQ+wB,IAAI,YAAc,YAAc,GAAI,YAAOF,EAC/DjgB,OAAO,SAAUogB,GAAW,MAAO,aAAcA,IAEjD9rB,IAAI,SAAU8rB,GAAW,OAAOA,EAAQC,SAASjjB,aAAgB,YAAO6iB,EACxEjgB,OAAO,SAAUogB,GAAW,MAAO,YAAaA,IAEhD9rB,IAAI,SAAU8rB,GAAW,OAAOA,EAAQE,gBACrD,KAAK,EAED,OADA9qB,EAAG+qB,OACI,CAAC,SAK5BvC,EAAST,UAAUiD,eAAiB,WAChC,OAAyB,MAAlB31B,KAAKif,WAEhBkU,EAAST,UAAUkB,cAAgB,SAAUJ,GAEzC,YADmB,IAAfA,IAAyBA,EAAaN,GACnClzB,KAAKozB,UAAUhf,IAAIof,IAE9BL,EAAST,UAAUkD,WAAa,SAAUpC,GAEtC,YADmB,IAAfA,IAAyBA,EAAaN,GACnClzB,KAAKszB,iBAAiBphB,IAAIshB,IAAe,IAEpDL,EAAST,UAAUmD,WAAa,SAAUC,GACtC,IAAIC,EAAKprB,OACI,IAATmrB,IAAmBA,EAAO,IAC9B,IAAIlrB,EAAKkrB,EAAK9N,QAASA,OAAiB,IAAPpd,EAAgB,GAAKA,EAClD6oB,EAAuBzzB,KAAK0zB,4BAA4BoC,EAAK9B,oBACjE,GAAIh0B,KAAK4zB,cAAcH,GACnB,MAAMY,MAAMr0B,KAAKmB,KAAO,IAAMsyB,EAAuB,kCAEzD,IAAKzzB,KAAK21B,iBACN,MAAMtB,MAAM,aAAer0B,KAAKmB,KAAO,gCAE3C,IAAI2yB,EAAW9zB,KAAK+zB,uBAAuB,CACvCC,mBAAoBP,EACpBzL,QAASA,IAEb,IAEI,IAAK,IAAI2M,EAAK,YAAS30B,KAAKqzB,kBAAkBqB,WAAYG,EAAKF,EAAG9wB,QAASgxB,EAAGD,KAAMC,EAAKF,EAAG9wB,OAAQ,CAChG,IAAImyB,EAAK,YAAOnB,EAAGtzB,MAAO,GAAgCuzB,EAAmBkB,EAAG,GAE5EvC,IAD+BzzB,KAAK0zB,4BADWsC,EAAG,KAGlDlB,EAAiBtwB,QAAQsvB,IAIrC,MAAOmC,GAASF,EAAM,CAAEf,MAAOiB,GAV/B,QAYI,IACQpB,IAAOA,EAAGD,OAASjqB,EAAKgqB,EAAGM,SAAStqB,EAAGuqB,KAAKP,GADpD,QAGU,GAAIoB,EAAK,MAAMA,EAAIf,OAEjC,OAAOlB,GAUXX,EAAST,UAAUwD,OAAS,SAAUjD,EAAUO,GAC5C,IAAI7oB,EACA8oB,EAAuBzzB,KAAK0zB,4BAA4BF,GACxD2C,EAA8E,QAAzDxrB,EAAK3K,KAAKuzB,gBAAgBrhB,IAAIuhB,UAA0C,IAAP9oB,EAAgBA,EAAK,IAAIgD,IACnHwoB,EAAkBtzB,IAAIowB,GACtBjzB,KAAKuzB,gBAAgBlf,IAAIof,EAAsB0C,GAC/C,IAAIC,EAAmBp2B,KAAKozB,UAAUlhB,IAAIuhB,GAI1C,OAHI2C,GACAnD,EAASmD,EAAkB3C,GAExB,WACH0C,EAAkB5jB,OAAO0gB,KAOjCE,EAAST,UAAU2D,sBAAwB,SAAUvC,EAAUN,GAC3D,IAAI8C,EAAK3rB,EACL4rB,EAAYv2B,KAAKuzB,gBAAgBrhB,IAAIshB,GACzC,GAAK+C,EAGL,IACI,IAAK,IAAIC,EAAc,YAASD,GAAYE,EAAgBD,EAAY3yB,QAAS4yB,EAAc7B,KAAM6B,EAAgBD,EAAY3yB,OAAQ,CACrI,IAAIovB,EAAWwD,EAAcl1B,MAC7B,IACI0xB,EAASa,EAAUN,GAEvB,MAAO5oB,MAKf,MAAO8rB,GAASJ,EAAM,CAAEtB,MAAO0B,GAX/B,QAaI,IACQD,IAAkBA,EAAc7B,OAASjqB,EAAK6rB,EAAYvB,SAAStqB,EAAGuqB,KAAKsB,GADnF,QAGU,GAAIF,EAAK,MAAMA,EAAItB,SAGrC7B,EAAST,UAAUqB,uBAAyB,SAAUppB,GAClD,IA+C+B6oB,EA/C3BQ,EAAqBrpB,EAAGqpB,mBAAoBppB,EAAKD,EAAGqd,QAASA,OAAiB,IAAPpd,EAAgB,GAAKA,EAC5FkpB,EAAW9zB,KAAKozB,UAAUlhB,IAAI8hB,GAClC,IAAKF,GAAY9zB,KAAKif,YAClB6U,EAAW9zB,KAAKif,UAAUoT,gBAAgBryB,KAAKqY,UAAW,CACtD2b,oBA2CuBR,EA3C2BQ,EA4CvDR,IAAeN,OAAqBzuB,EAAY+uB,GA3C3CxL,QAASA,IAEbhoB,KAAKozB,UAAU/e,IAAI2f,EAAoBF,GACvC9zB,KAAKszB,iBAAiBjf,IAAI2f,EAAoBhM,GAM9ChoB,KAAKq2B,sBAAsBvC,EAAUE,GAMjCh0B,KAAKif,UAAUwT,mBACf,IACIzyB,KAAKif,UAAUwT,kBAAkBzyB,KAAKqY,UAAW2b,EAAoBF,GAEzE,MAAOa,IAKf,OAAOb,GAAY,MAEvBX,EAAST,UAAUgB,4BAA8B,SAAUF,GAEvD,YADmB,IAAfA,IAAyBA,EAAaN,GACtClzB,KAAKif,UACEjf,KAAKif,UAAUqT,kBAAoBkB,EAAaN,EAGhDM,GAGfL,EAAST,UAAUmB,qBAAuB,WACtC,QAAU7zB,KAAKif,WAC0B,aAArCjf,KAAKif,UAAUuT,mBAEhBW,EAxSmB,GAqU1BwD,EAAoC,WACpC,SAASA,EAAmBx1B,GACxBnB,KAAKmB,KAAOA,EACZnB,KAAKmyB,UAAY,IAAI1kB,IA6CzB,OAlCAkpB,EAAmBjE,UAAUkE,aAAe,SAAU3X,GAClD,IAAI4X,EAAW72B,KAAK82B,YAAY7X,EAAU9d,MAC1C,GAAI01B,EAASlB,iBACT,MAAM,IAAItB,MAAM,aAAepV,EAAU9d,KAAO,qCAAuCnB,KAAKmB,MAEhG01B,EAAStC,aAAatV,IAE1B0X,EAAmBjE,UAAUqE,wBAA0B,SAAU9X,GAC9Cjf,KAAK82B,YAAY7X,EAAU9d,MAC7Bw0B,kBAET31B,KAAKmyB,UAAU5f,OAAO0M,EAAU9d,MAEpCnB,KAAK42B,aAAa3X,IAStB0X,EAAmBjE,UAAUoE,YAAc,SAAU31B,GACjD,GAAInB,KAAKmyB,UAAU/d,IAAIjT,GACnB,OAAOnB,KAAKmyB,UAAUjgB,IAAI/Q,GAG9B,IAAI01B,EAAW,IAAI1D,EAAShyB,EAAMnB,MAElC,OADAA,KAAKmyB,UAAU9d,IAAIlT,EAAM01B,GAClBA,GAEXF,EAAmBjE,UAAUsE,aAAe,WACxC,OAAOzsB,MAAMjG,KAAKtE,KAAKmyB,UAAUre,WAE9B6iB,EAhD6B,I,wBC9Y/B,SAAUtU,GAAU,aAIXA,EAAOM,aAAa,WAAY,CAC1CC,OAAQ,sNAA6GL,MACjH,KAEJM,YACI,iHAA8DN,MAC1D,KAER0U,kBAAkB,EAClB1T,SACI,0JAAyEhB,MACrE,KAERiB,cAAe,mEAAqCjB,MAAM,KAC1DkB,YAAa,2CAA4BlB,MAAM,KAC/CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,8BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,yCACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,eACRC,KAAM,gBACNC,EAAG,kCACHC,GAAI,wBACJ/B,EAAG,4BACHgC,GAAI,2BACJC,EAAG,wBACHC,GAAI,kBACJhN,EAAG,kBACHiN,GAAI,iBACJG,EAAG,qBACHC,GAAI,oBACJC,EAAG,sBACHC,GAAI,sBAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB/gB,CAAQ,EAAQ,U,oCCL1D,iPAoBYoyB,EAAZ,SAAYA,G,OACX,qBACA,6BACA,uBACA,mBACA,mBACA,kCACA,0BAPWA,EAAZ,CAQC,IASD,aAQA,OARA,gBAiBA,aAIC,WACSC,EACAC,EACAC,EACAC,EACAC,EACAC,GALA,KAAAL,OACA,KAAAC,gBACA,KAAAC,YACA,KAAAC,QACA,KAAAC,SACA,KAAAC,mBAMD,KAAAC,QAAU,IAAI,IAAY,CAAE,eAAgB,qBA+I5C,KAAAC,eAAiB,IAAI,IAAY,CACxC,eAAgB,mBAChBC,cAAe,UAAiBC,aAAaC,QAAQ,eACrDC,OAAQ,qBAGD,KAAA9P,QAAU,CAAEyP,QAASz3B,KAAK03B,gBAzJjC13B,KAAK+3B,MAAQ,IAAI,KAAyB,GAC1C/3B,KAAKg4B,OAASh4B,KAAK+3B,MAAME,e,OAK1B,YAAAC,MAAA,SAAM32B,GAAN,WACC,OAAOvB,KAAKm3B,KACVgB,KAAsBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,QAAS92B,EAAO,CAAEk2B,QAASz3B,KAAKy3B,UACzFzzB,KACA,YAAI,SAAAs0B,GAEHV,aAAaW,QAAQ,cAAeD,EAAIE,aAAavG,YACrD,IAAMptB,EAAe,EAAKwyB,UAAUoB,YAAYH,EAAIE,aAAavG,YACjE,EAAKqF,MAAMoB,SAAS,IAAI,IAAM,CAAEC,UAAWL,EAAIE,gBAU/C,IAAII,EAAM,QAmDV,OAlDA/zB,EAAMg0B,KAAKC,SAAW5B,EAAU6B,MAE5Bl0B,EAAMg0B,KAAKG,SAAS3zB,KAAK,SAAA4zB,GAAK,OAAM,IAANA,MACjCL,EAAM,YACN/zB,EAAMg0B,KAAKC,SAAW5B,EAAUgC,WAE7Br0B,EAAMg0B,KAAKG,SAAS3zB,KAAK,SAAA4zB,GAAK,OAAM,IAANA,MACjCL,EAAM,SACN/zB,EAAMg0B,KAAKC,SAAW5B,EAAUiC,QAE7Bt0B,EAAMg0B,KAAKG,SAAS3zB,KAAK,SAAA4zB,GAAK,OAAM,IAANA,MACjCL,EAAM,OACN/zB,EAAMg0B,KAAKC,SAAW5B,EAAUkC,MAE7Bv0B,EAAMg0B,KAAKG,SAAS3zB,KAAK,SAAA4zB,GAAK,OAAM,IAANA,MACjCL,EAAM,aACN/zB,EAAMg0B,KAAKC,SAAW5B,EAAUmC,YAE7Bx0B,EAAMg0B,KAAKG,SAAS3zB,KAAK,SAAA4zB,GAAK,OAAM,IAANA,MACjCL,EAAM,OACN/zB,EAAMg0B,KAAKC,SAAW5B,EAAUoC,MAE7Bz0B,EAAMg0B,KAAKG,SAAS3zB,KAAK,SAAA4zB,GAAK,OAAM,KAANA,MACjCL,EAAM,UACN/zB,EAAMg0B,KAAKC,SAAW5B,EAAUqC,SAGjC3B,aAAaW,QAAQ,OAAQiB,KAAKC,UAAU50B,EAAMg0B,OAEtC,UAARD,GACH,EAAKc,cAAcx1B,UAAU,SAAA4L,GACR,IAAhBA,EAAK3L,SACRyzB,aAAaW,QAAQ,aAAczoB,EAAK,GAAG6pB,OAAO1H,YAClD2F,aAAaW,QAAQ,QAASzoB,EAAK,GAAG8pB,UACtChC,aAAaW,QAAQ,YAAaiB,KAAKC,UAAU3pB,IACjD,EAAK+pB,eAKRjC,aAAaW,QAAQ,cAAe,KACpCX,aAAaW,QAAQ,YAAaK,GACtB,SAARA,IACH,EAAKpB,iBAAiBsC,oBACtB,EAAKtC,iBAAiBuC,iBACtB,EAAKC,QAAU,EAAKxC,iBAAiByC,gBAGtCrC,aAAaW,QAAQ,uBAAwB,6BAEtC1zB,EAAMg0B,SAKjB,YAAAqB,SAAA,WACC,OAAOV,KAAKW,MAAMvC,aAAaC,QAAQ,eAGxC,YAAAuC,OAAA,WACC,IAAMC,EAAezC,aAAaC,QAAQ,aAC1CD,aAAalnB,QACbknB,aAAaW,QAAQ,YAAa8B,GAElCr6B,KAAKs3B,MAAMoB,SAAS,IAAI,KAES,4BAA7BvN,OAAOmP,SAASC,SACnBv6B,KAAKu3B,OAAOiD,cAAc,wBAKzBx6B,KAAKu3B,OAAOiD,cAHQ,UAAjBH,GAA6BA,EAGN,uBAFA,gBAO7B,YAAAI,YAAA,WACC,IAAMC,EAAU9C,aAAaC,QAAQ,QACjC8C,EAAO,IAAIC,EAMf,OALIF,IACHC,EAAOnB,KAAKW,MAAMO,IAEnBC,EAAKE,YAAcF,EAAKE,WACxBF,EAAKG,IAAMH,EAAKG,GACTH,GAGR,YAAAjB,YAAA,WACC,OAAO15B,KAAKm3B,KAAKjlB,IAAYlS,KAAKo3B,cAAcgB,OAAOC,OAAS,4BAA6B,CAC5FZ,QAASz3B,KAAKy3B,WAGhB,YAAAsD,uBAAA,SAAuBC,GACtB,IAAMC,EAAW,IAAIC,SAErB,OADAD,EAASE,OAAO,QAASH,EAAM/I,YACxBjyB,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,6CACnC4C,IAIF,YAAApB,UAAA,WACC,IAAMuB,EAAsC,IAAWxD,aAAaC,QAAQ,gBAEtEwD,EAAsB,GACtBC,EAAoB9B,KAAKW,MAAMvC,aAAaC,QAAQ,cAQ1D,OAPAuD,EAAevC,KAAKG,SAAS3lB,QAAQ,SAAAkoB,GACpCD,EAAUjoB,QAAQ,SAAAmoB,GACbD,IAAMC,EAAK7B,QACd0B,EAAYz3B,KAAK43B,OAIbH,GAGD,YAAAI,gBAAP,WACC,IAAM52B,EAAQ+yB,aAAaC,QAAQ,eACnC,OAAQ73B,KAAKq3B,UAAUqE,eAAe72B,IAWvC,YAAA82B,sBAAA,SAAsBC,GACrB,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,kCACnCuD,EACA57B,KAAKgoB,UAIP,YAAA6T,4BAAA,SAA4BD,GAC3B,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,wCACnCuD,EACA57B,KAAKgoB,UAGP,YAAA8T,4BAAA,WACC,OAAO97B,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,0CACnC,KAGF,YAAA0D,cAAA,SAAcC,GAGb,OAFAh8B,KAAK+3B,MAAMl0B,KAAKm4B,GAETA,G,sCA9LIC,GAAW,8D,yBAAXA,EAAW,QAAXA,EAAW,Y,EADxB,I,4JCtDM,SAAUC,EAAqBC,EAASC,GAC1C,OAAO,SAAC7V,GAAD,OAAYA,EAAO8V,KAAK,IAAIC,EAA6BH,EAASC,K,IAEvEE,E,8BACF,WAAYH,EAASC,GAAW,oBAC5Bp8B,KAAKm8B,QAAUA,EACfn8B,KAAKo8B,YAAcA,G,mBAEvB,SAAKG,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIs4B,EAA+BD,EAAYv8B,KAAKm8B,QAASn8B,KAAKo8B,kB,GAG5FI,E,YACF,WAAYC,EAAaN,EAASC,GAAW,M,MAAA,2B,EACzC,K,EAAA,E,EAAA,CAAMK,G,kBAAN,E,iGACKL,YAAcA,EACnB,EAAKM,QAAS,EACS,mBAAZP,IACP,EAAKA,QAAUA,GALsB,E,4DAQ7C,SAAQZ,EAAGjW,GACP,OAAOiW,IAAMjW,I,mBAEjB,SAAM/jB,GACF,IAAIob,EACJ,IACI,IAAQyf,EAAgBp8B,KAAhBo8B,YACRzf,EAAMyf,EAAcA,EAAY76B,GAASA,EAE7C,MAAOo7B,GACH,OAAO38B,KAAKy8B,YAAYzH,MAAM2H,GAElC,IAAIC,GAAS,EACb,GAAI58B,KAAK08B,OACL,IAEIE,GAAST,EADWn8B,KAAZm8B,SACSn8B,KAAK2c,IAAKA,GAE/B,MAAOggB,GACH,OAAO38B,KAAKy8B,YAAYzH,MAAM2H,QAIlC38B,KAAK08B,QAAS,EAEbE,IACD58B,KAAK2c,IAAMA,EACX3c,KAAKy8B,YAAY54B,KAAKtC,Q,CApCW,M,2ECX7C,IAAIs7B,EAAeC,EAAQ,QACvBC,EAASD,EAAQ,QACjBE,EAAiBF,EAAQ,OAARA,GACjBG,EAAOH,EAAQ,QAEfI,EAAaJ,EAAQ,QACrBK,EAASN,EAAa,gBAG1BO,EAAOC,QAAU,SAA2BruB,EAAI7K,GAC/C,GAAkB,mBAAP6K,EACV,MAAM,IAAIkuB,EAAW,0BAEtB,GAAsB,iBAAX/4B,GAAuBA,EAAS,GAAKA,EAAS,YAAcg5B,EAAOh5B,KAAYA,EACzF,MAAM,IAAI+4B,EAAW,8CAGtB,IAAII,EAAQhkB,UAAUnV,OAAS,KAAOmV,UAAU,GAE5CikB,GAA+B,EAC/BC,GAA2B,EAC/B,GAAI,WAAYxuB,GAAMiuB,EAAM,CAC3B,IAAIQ,EAAOR,EAAKjuB,EAAI,UAChByuB,IAASA,EAAKC,eACjBH,GAA+B,GAE5BE,IAASA,EAAKE,WACjBH,GAA2B,GAW7B,OAPID,GAAgCC,IAA6BF,KAC5DN,EACHD,EAA6C/tB,EAAK,SAAU7K,GAAQ,GAAM,GAE1E44B,EAA6C/tB,EAAK,SAAU7K,IAGvD6K,I,4aC7BF4uB,E,+CAGN,SAASC,EAAat8B,GAIlB,OAAOA,GAAkC,mBAAlBA,EAAMuU,Q,IAW3BgoB,E,YACF,WAAY7pB,GAAK,M,IAAA,2B,EACb,K,EAAA,E,kBAAA,E,sGACKA,MAAQA,EAFA,E,4DAIjB,WACI,OAAO,YAAajU,KAAKiU,OAASjU,KAAKiU,MAAQ,YAAGjU,KAAKiU,S,wBAE3D,gB,CAR0B2pB,GAmCxBG,E,2FACF,SAAa94B,EAASia,EAAkB8e,EAAoBC,EAAmBC,GAC3Ej5B,EAAQ0M,iBAAiB,SAACT,EAAQitB,EAAuB/sB,GACrD,IAAIa,EACAV,EACJ,GAA4B,MAAxBL,EAAOW,cAAuB,CAC9B,IAAMusB,EAAgBJ,EAAmB9sB,EAAQitB,EAAuB/sB,GACxEa,EAAOiN,EAAiBpI,mBAAmBsnB,EAAcx3B,YAAaw3B,EAAc5sB,QAAS4sB,EAAcz0B,OAC3G4H,EAAY,OAES,MAAhBH,GACL8N,EAAiB1T,OAAO2yB,GACxB5sB,EAAY,IAGZU,EAAOiN,EAAiBhN,IAAIisB,GAC5Bjf,EAAiB/M,KAAKF,EAAMb,GAC5BG,EAAY,GAEZ2sB,GACAA,EAAgB,CACZ1sB,QAASS,aAAmC,EAASA,EAAKT,QAC1DD,YACAL,e,oBAKhB,gB,GAsBEmtB,E,8BACF,iCAKIr+B,KAAKs+B,cAAgB,GAQrBt+B,KAAKu+B,WAAa,I,2BAGtB,SAAat5B,EAASia,EAAkB8e,EAAoBC,EAAmBC,GAAe,WAE1Fj5B,EAAQ0M,iBAAiB,SAACT,EAAQitB,EAAuB/sB,GACrD,IAAIa,EACAV,EACwB,MAAxBL,EAAOW,cAGPN,GADAU,EAAO,EAAKusB,YADY,kBAAMR,EAAmB9sB,EAAQitB,EAAuB/sB,IACvCA,EAAc8N,EAAkB+e,EAAkB/sB,KACxE,EAAmB,EAEjB,MAAhBE,GACL,EAAKqtB,oBAAoBN,EAAuBjf,GAChD3N,EAAY,IAGZU,EAAO,EAAKysB,UAAUP,EAAuB/sB,EAAc8N,EAAkB+e,EAAkB/sB,IAC/FK,EAAY,GAEZ2sB,GACAA,EAAgB,CACZ1sB,QAASS,aAAmC,EAASA,EAAKT,QAC1DD,YACAL,e,oBAKhB,WAAM,oBACiBlR,KAAKu+B,YADtB,IACF,2BAAoC,QAC3Brd,UAFP,8BAIFlhB,KAAKu+B,WAAa,K,yBAMtB,SAAYI,EAAiBvtB,EAAc8N,EAAkB3d,GACzD,IAAMq9B,EAAa5+B,KAAK6+B,qBAAqBztB,EAAc8N,GAC3D,IAAI0f,EAAJ,CAIA,IAAME,EAAWH,IACjB,OAAOzf,EAAiBpI,mBAAmBgoB,EAASl4B,YAAak4B,EAASttB,QAASstB,EAASn1B,OAJxFi1B,EAAWptB,QAAQQ,UAAYzQ,I,iCAOvC,SAAoBoI,EAAOuV,GACvB,IAAM6f,EAAe7f,EAAiBH,OAAOpV,GAC7C3J,KAAKg/B,gBAAgBD,EAAc7f,K,uBAGvC,SAAUif,EAAuB/sB,EAAc8N,EAAkB3d,GAC7D,IAAM0Q,EAAOiN,EAAiBhN,IAAIisB,GAGlC,OAFAjf,EAAiB/M,KAAKF,EAAMb,GAC5Ba,EAAKT,QAAQQ,UAAYzQ,EAClB0Q,I,6BAMX,SAAgBA,EAAMiN,GAClB,GAAIlf,KAAKu+B,WAAWp6B,OAASnE,KAAKs+B,cAC9Bt+B,KAAKu+B,WAAW36B,KAAKqO,OAEpB,CACD,IAAMtI,EAAQuV,EAAiBjW,QAAQgJ,IAKxB,IAAXtI,EACAsI,EAAKiP,UAGLhC,EAAiB1T,OAAO7B,M,kCAKpC,SAAqBA,EAAOuV,GACxB,IAAM0f,EAAa5+B,KAAKu+B,WAAWU,MAInC,OAHIL,GACA1f,EAAiBggB,OAAON,EAAYj1B,GAEjCi1B,GAAc,S,GAcvBO,E,8BACF,aAA2E,WAA/DC,EAA+D,wDAA5CC,EAA4C,uCAAnBC,IAAmB,6EACvEt/B,KAAKo/B,UAAYA,EACjBp/B,KAAKs/B,aAAeA,EAEpBt/B,KAAKu/B,WAAa,IAAI5xB,IAEtB3N,KAAKw/B,kBAAoB,GAEzBx/B,KAAKy/B,gBAAkB,GAEvBz/B,KAAK0/B,QAAU,IAAI,IACfL,GAA2BA,EAAwBl7B,SAC/Ci7B,EACAC,EAAwBhsB,QAAQ,SAAA9R,GAAK,OAAI,EAAKo+B,cAAcp+B,KAG5DvB,KAAK2/B,cAAcN,EAAwB,IAG/Cr/B,KAAKy/B,gBAAgBt7B,OAAS,I,qBAItC,WAII,OAHKnE,KAAK4/B,YACN5/B,KAAK4/B,UAAYr1B,MAAMjG,KAAKtE,KAAKu/B,WAAWzrB,WAEzC9T,KAAK4/B,Y,oBAKhB,WAAgB,kCAAN9rB,EAAM,yBAANA,EAAM,gBACZ9T,KAAK6/B,uBAAuB/rB,GAC5BA,EAAOT,QAAQ,SAAA9R,GAAK,OAAI,EAAKo+B,cAAcp+B,KAC3CvB,KAAK8/B,qB,sBAKT,WAAkB,kCAANhsB,EAAM,yBAANA,EAAM,gBACd9T,KAAK6/B,uBAAuB/rB,GAC5BA,EAAOT,QAAQ,SAAA9R,GAAK,OAAI,EAAKw+B,gBAAgBx+B,KAC7CvB,KAAK8/B,qB,oBAKT,SAAOv+B,GACHvB,KAAKggC,WAAWz+B,GAASvB,KAAKkvB,SAAS3tB,GAASvB,KAAKigC,OAAO1+B,K,mBAKhE,WACIvB,KAAKkgC,aACLlgC,KAAK8/B,qB,wBAKT,SAAWv+B,GACP,OAAOvB,KAAKu/B,WAAWnrB,IAAI7S,K,qBAK/B,WACI,OAAgC,IAAzBvB,KAAKu/B,WAAWY,O,sBAK3B,WACI,OAAQngC,KAAKogC,Y,kBAKjB,SAAKC,GACGrgC,KAAKo/B,WAAap/B,KAAKivB,UACvBjvB,KAAK4/B,UAAU/jB,KAAKwkB,K,iCAM5B,WACI,OAAOrgC,KAAKo/B,Y,8BAGhB,WAEIp/B,KAAK4/B,UAAY,MACb5/B,KAAKy/B,gBAAgBt7B,QAAUnE,KAAKw/B,kBAAkBr7B,UACtDnE,KAAK0/B,QAAQ77B,KAAK,CACd0iB,OAAQvmB,KACRsgC,MAAOtgC,KAAKy/B,gBACZc,QAASvgC,KAAKw/B,oBAElBx/B,KAAKw/B,kBAAoB,GACzBx/B,KAAKy/B,gBAAkB,M,2BAI/B,SAAcl+B,GACLvB,KAAKggC,WAAWz+B,KACZvB,KAAKo/B,WACNp/B,KAAKkgC,aAETlgC,KAAKu/B,WAAW18B,IAAItB,GAChBvB,KAAKs/B,cACLt/B,KAAKy/B,gBAAgB77B,KAAKrC,M,6BAKtC,SAAgBA,GACRvB,KAAKggC,WAAWz+B,KAChBvB,KAAKu/B,WAAWhtB,OAAOhR,GACnBvB,KAAKs/B,cACLt/B,KAAKw/B,kBAAkB57B,KAAKrC,M,wBAKxC,WAAU,WACDvB,KAAKogC,WACNpgC,KAAKu/B,WAAWlsB,QAAQ,SAAA9R,GAAK,OAAI,EAAKw+B,gBAAgBx+B,O,oCAO9D,SAAuBuS,Q,oBA+BrB0sB,E,8BACF,iCACIxgC,KAAKygC,WAAa,I,qBAOtB,SAAOza,EAAI7kB,GAAI,oBACUnB,KAAKygC,YADf,IACX,4BACIC,EADkC,SACzB1a,EAAI7kB,GAFN,iC,oBASf,SAAOu/B,GAAQ,WAEX,OADA1gC,KAAKygC,WAAW78B,KAAK88B,GACd,WACH,EAAKD,WAAa,EAAKA,WAAWtrB,OAAO,SAACwrB,GACtC,OAAOD,IAAaC,O,yBAIhC,WACI3gC,KAAKygC,WAAa,O,UAG1BD,EAA0BjgC,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAKggC,IAClGA,EAA0B57B,WAAQ,aAAmB,CAAEE,QAAS,WAA+C,OAAO,IAAI07B,GAAgC37B,MAAO27B,EAA2B5Z,WAAY,S,KAyBlMga,EAA0B,IAAI,IAAe,kB,8sBC1anD,SAASC,EAA0Cl/B,EAAIC,I,IACjDk/B,E,YACF,iCAEI9gC,KAAKgN,KAAO,SAEZhN,KAAKgwB,WAAa,GAElBhwB,KAAK+gC,aAAc,EAEnB/gC,KAAKghC,cAAgB,GAErBhhC,KAAKihC,cAAe,EAEpBjhC,KAAK0J,MAAQ,GAEb1J,KAAKwK,OAAS,GAEdxK,KAAKkhC,SAAW,OAEhBlhC,KAAK8P,KAAO,KAEZ9P,KAAKmhC,gBAAkB,KAEvBnhC,KAAKohC,eAAiB,KAEtBphC,KAAKmmB,UAAY,KAEjBnmB,KAAKqhC,WAAY,EAKjBrhC,KAAKshC,cAAe,EAMpBthC,KAAKuhC,mBAAoB,IAgB3BC,EAAsB,CAExBC,gBAAiB,YAAQ,kBAAmB,CAIxC,YAAM,aAAc,YAAM,CAAEC,QAAS,EAAGC,UAAW,gBACnD,YAAM,QAAS,YAAM,CAAEA,UAAW,UAClC,YAAW,aAAc,YAAQ,mCAAoC,YAAM,CAAEA,UAAW,OAAQD,QAAS,MACzG,YAAW,uBAAwB,YAAQ,sCAAuC,YAAM,CAAEA,QAAS,S,iBAuBrGE,E,YACF,WAAY70B,EAAa80B,EAAmB/0B,EAAoBI,EAEhE40B,EAASC,GAAa,kCAClB,aACKh1B,YAAcA,EACnB,EAAK80B,kBAAoBA,EACzB,EAAK/0B,mBAAqBA,EAC1B,EAAKg1B,QAAUA,EACf,EAAKC,cAAgBA,EAErB,EAAKC,uBAAyB,IAAI,IAElC,EAAKC,qCAAuC,KAM5C,EAAKC,sBAAwB,KAO7B,EAAKziB,gBAAkB,SAACE,GAIpB,OAHI,EAAKwiB,cAAcliB,cAGhB,EAAKkiB,cAAc1iB,gBAAgBE,IAE9C,EAAKyiB,gBAAkBN,EAAQV,gBAAkB,KACjD,EAAKl0B,UAAYA,EA9BC,E,mFAiCtB,WACIlN,KAAKqiC,kBAGLriC,KAAKsiC,mCAGLtiC,KAAKuiC,0B,mCAMT,SAAsB5iB,GAIlB,OAHI3f,KAAKmiC,cAAcliB,cAGhBjgB,KAAKmiC,cAAcviB,sBAAsBD,K,kCAMpD,SAAqBA,GAIjB,OAHI3f,KAAKmiC,cAAcliB,cAGhBjgB,KAAKmiC,cAActiB,qBAAqBF,K,6BAGnD,WACS3f,KAAKwiC,oBACkBxiC,KAAK8hC,QAAQT,YAAcrhC,KAAKyiC,WAAWC,wBAE/D1iC,KAAK+M,YAAYnK,cAAcksB,U,wBAK3C,WAIQ9uB,KAAK8hC,QAAQT,UACbrhC,KAAKyiC,WAAWE,+BAEV3iC,KAAKwiC,kBAMXxiC,KAAK+M,YAAYnK,cAAcksB,U,2BAIvC,WACI,IAAM8T,EAAkB5iC,KAAKiiC,qCAE7B,GAAIjiC,KAAK8hC,QAAQR,cAAgBsB,GACI,mBAA1BA,EAAgB9T,MAAsB,CAC7C,IAAMrE,EAAgBzqB,KAAK6iC,oBACrBx3B,EAAUrL,KAAK+M,YAAYnK,cAK5B6nB,GAAiBA,IAAkBzqB,KAAKkN,UAAU41B,MAAQrY,IAAkBpf,IAC7EA,EAAQuhB,SAASnC,KACbzqB,KAAK+hC,eACL/hC,KAAK+hC,cAAcgB,SAASH,EAAiB5iC,KAAKkiC,uBAClDliC,KAAKkiC,sBAAwB,MAG7BU,EAAgB9T,SAIxB9uB,KAAKyiC,YACLziC,KAAKyiC,WAAWvhB,Y,6BAIxB,WACIlhB,KAAKyiC,WAAaziC,KAAK6hC,kBAAkBv8B,OAAOtF,KAAK+M,YAAYnK,iB,8CAGrE,WACQ5C,KAAKkN,YACLlN,KAAKiiC,qCAAuCjiC,KAAK6iC,uB,mCAIzD,WAEQ7iC,KAAK+M,YAAYnK,cAAcksB,OAC/B9uB,KAAK+M,YAAYnK,cAAcksB,U,4BAIvC,WACI,IAAMzjB,EAAUrL,KAAK+M,YAAYnK,cAC3B6nB,EAAgBzqB,KAAK6iC,oBAC3B,OAAOx3B,IAAYof,GAAiBpf,EAAQuhB,SAASnC,K,+BAGzD,WACI,IAAI9f,EAGE8f,EAAgBzqB,KAAKkN,UAAUud,cACrC,OAA0G,QAAjG9f,EAAK8f,aAAqD,EAASA,EAAcuY,kBAA+B,IAAPr4B,OAAgB,EAASA,EAAG8f,gBAAkBA,M,CAnJlI,K,OAsJtCmX,EAAwBrhC,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKohC,GAAyB,KAAyB,KAAoB,KAAyB,KAA0B,KAAyB,KAA2B,KAAyB,IAAU,GAAI,KAAyBd,GAAkB,KAAyB,OACtXc,EAAwBnhC,UAAO,KAAyB,CAAEC,KAAMkhC,EAAyBtpB,UAAW,SAAuC3W,EAAIC,GAGvI,IAAIE,EAHmJ,EAALH,GAClJ,KAAmB,IAAiB,GAC7B,EAALA,GAEF,KAAsBG,EAAK,UAA0BF,EAAIugC,cAAgBrgC,EAAGE,QAC3EM,SAAU,CAAC,Q,sBA4Bd2gC,E,YACF,+CACI,WAAS3pB,YAEJ4pB,OAAS,QAHlB,E,qEAMA,SAAiB,GAAsB,IAApBC,EAAoB,EAApBA,QAASC,EAAW,EAAXA,UACR,UAAZD,GACAnjC,KAAKqjC,aACLrjC,KAAKgiC,uBAAuBn+B,KAAK,CAAEwE,MAAO,SAAU+6B,eAEnC,SAAZD,IACLnjC,KAAKsjC,gBACLtjC,KAAKgiC,uBAAuBn+B,KAAK,CAAEwE,MAAO,SAAU+6B,iB,+BAI5D,SAAkB,GAAsB,IAApBD,EAAoB,EAApBA,QAASC,EAAW,EAAXA,UACT,UAAZD,EACAnjC,KAAKgiC,uBAAuBn+B,KAAK,CAAEwE,MAAO,UAAW+6B,cAEpC,SAAZD,GAAkC,SAAZA,GAC3BnjC,KAAKgiC,uBAAuBn+B,KAAK,CAAEwE,MAAO,UAAW+6B,gB,iCAI7D,WACIpjC,KAAKkjC,OAAS,OAGdljC,KAAK8M,mBAAmBkK,mB,CA/BC4qB,G,OAkCjCqB,EAAmB1iC,UAAO,SAAoCC,GAAK,OAAO+iC,EAAgC/iC,GAAKyiC,IAC/GA,EAAmB98B,UAAO,KAAyB,CAAEzF,KAAMuiC,EAAoBtiC,UAAW,CAAC,CAAC,yBAA0BoC,UAAW,CAAC,WAAY,KAAM,aAAc,OAAQ,EAAG,wBAAyBwV,SAAU,EAAGC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,GACjR,KAA+B,yBAA0B,SAA+EmwB,GAAU,OAAOlwB,EAAI4hC,kBAAkB1R,IAA/K,CAA2L,wBAAyB,SAA8EA,GAAU,OAAOlwB,EAAI6hC,iBAAiB3R,KACjU,EAALnwB,IACF,KAAsB,KAAMC,EAAI8hC,KAChC,KAAmB,OAAQ9hC,EAAIkgC,QAAQ90B,KAAvC,CAA6C,kBAAmBpL,EAAIkgC,QAAQ3b,UAAY,KAAOvkB,EAAIwgC,gBAAnG,CAAoH,aAAcxgC,EAAIkgC,QAAQ3b,UAA9I,CAAyJ,mBAAoBvkB,EAAIkgC,QAAQX,iBAAmB,MAC5M,KAA+B,mBAAoBv/B,EAAIshC,UACtD5gC,SAAU,CAAC,MAAoC8D,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,KAAMhG,SAAU,SAAqCqB,EAAIC,GAAgB,EAALD,GACpK,KAAkB,EAAGk/B,EAA2C,EAAG,EAAG,cAAe,IACpFt6B,WAAY,CAAC,KAAyBuS,OAAQ,CAAC,68BAA88BtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAACnC,EAAoBC,oB,KAC1jC8B,EAAgD,KAA6BN,GAqC/EW,EAAW,EAITC,E,8BACF,WAAYpY,EAAaqY,GAAmD,WAA/B9d,EAA+B,4EAAZ4d,KAAY,oBACxE5jC,KAAKyrB,YAAcA,EACnBzrB,KAAK8jC,mBAAqBA,EAC1B9jC,KAAKgmB,GAAKA,EAEVhmB,KAAKihC,aAAejhC,KAAK8jC,mBAAmBhC,QAAQb,aAEpDjhC,KAAK+jC,aAAe,IAAI,IAExB/jC,KAAKgkC,aAAe,IAAI,IAExBhkC,KAAKikC,cAAgB,IAAI,IAEzBjkC,KAAKkjC,OAAS,EAEdY,EAAmBJ,IAAM1d,EAEzB8d,EAAmB9B,uBAAuBh+B,KAAK,YAAO,SAAAskB,GAAK,MAAoB,WAAhBA,EAAMjgB,QAAqB,YAAK,IAC1FnE,UAAU,WACX,EAAK6/B,aAAalgC,OAClB,EAAKkgC,aAAajgC,aAGtBggC,EAAmB9B,uBAAuBh+B,KAAK,YAAO,SAAAskB,GAAK,MAAoB,WAAhBA,EAAMjgB,QAAqB,YAAK,IAAInE,UAAU,WACzGggC,aAAa,EAAKC,uBAClB,EAAKC,uBAET3Y,EAAYU,cAAcjoB,UAAU,WAChC,EAAK+/B,cAAcpgC,KAAK,EAAKwgC,SAC7B,EAAKJ,cAAcngC,WACnB,EAAKkgC,aAAangC,KAAK,EAAKwgC,SAC5B,EAAKL,aAAalgC,WAClB,EAAKwgC,kBAAoB,KACzB,EAAK7Y,YAAYgD,YAErBhD,EAAYkE,gBACP3rB,KAAK,YAAO,SAAAskB,GACb,OAAOA,EAAM2E,UAAY,MAAW,EAAKgU,eAAiB,YAAe3Y,MAExEpkB,UAAU,SAAAokB,GACXA,EAAM4E,iBACNqX,EAAgB,EAAM,cAE1B9Y,EAAY+Y,gBAAgBtgC,UAAU,WAC9B,EAAK+8B,aACL,EAAK6C,mBAAmBW,kBAGxBF,EAAgB,EAAM,Y,oBAQlC,SAAMG,GAAY,WACd1kC,KAAKqkC,QAAUK,EAEf1kC,KAAK8jC,mBAAmB9B,uBAAuBh+B,KAAK,YAAO,SAAAskB,GAAK,MAAoB,YAAhBA,EAAMjgB,QAAsB,YAAK,IAChGnE,UAAU,SAAAokB,GACX,EAAK2b,cAAcpgC,KAAK6gC,GACxB,EAAKT,cAAcngC,WACnB,EAAK2nB,YAAYkZ,iBAMjB,EAAKR,sBAAwBS,WAAW,kBAAM,EAAKR,sBAAsB9b,EAAM8a,UAAY,OAE/FpjC,KAAKkjC,OAAS,EACdljC,KAAK8jC,mBAAmBe,wB,yBAK5B,WACI,OAAO7kC,KAAK+jC,e,yBAKhB,WACI,OAAO/jC,KAAKgkC,e,0BAKhB,WACI,OAAOhkC,KAAKikC,gB,2BAKhB,WACI,OAAOjkC,KAAKyrB,YAAY+Y,kB,2BAK5B,WACI,OAAOxkC,KAAKyrB,YAAYkE,kB,4BAM5B,SAAe3lB,GACX,IAAIkmB,EAAWlwB,KAAK8kC,uBAcpB,OAbI96B,IAAaA,EAASiC,MAAQjC,EAASkC,OACvClC,EAASiC,KAAOikB,EAASjkB,KAAKjC,EAASiC,MAAQikB,EAAShkB,MAAMlC,EAASkC,OAGvEgkB,EAAS6U,qBAET/6B,IAAaA,EAAS+B,KAAO/B,EAASgC,QACtChC,EAAS+B,IAAMmkB,EAASnkB,IAAI/B,EAAS+B,KAAOmkB,EAASlkB,OAAOhC,EAASgC,QAGrEkkB,EAAS8U,mBAEbhlC,KAAKyrB,YAAYC,iBACV1rB,O,wBAOX,WAAkC,IAAvB0J,EAAuB,uDAAf,GAAIc,EAAW,uDAAF,GAG5B,OAFAxK,KAAKyrB,YAAY6D,WAAW,CAAE5lB,QAAOc,WACrCxK,KAAKyrB,YAAYC,iBACV1rB,O,2BAGX,SAAcilC,GAEV,OADAjlC,KAAKyrB,YAAYyZ,cAAcD,GACxBjlC,O,8BAGX,SAAiBilC,GAEb,OADAjlC,KAAKyrB,YAAY0Z,iBAAiBF,GAC3BjlC,O,sBAGX,WACI,OAAOA,KAAKkjC,S,gCAMhB,WACIljC,KAAKkjC,OAAS,EACdljC,KAAKyrB,YAAYgD,Y,kCAGrB,WACI,OAAOzuB,KAAKyrB,YAAY2Z,YAAYtV,qB,GAS5C,SAASyU,EAAgBtiB,EAAKojB,EAAiBzI,GAM3C,YAH+Bn4B,IAA3Bwd,EAAI6hB,qBACJ7hB,EAAI6hB,mBAAmB5B,sBAAwBmD,GAE5CpjB,EAAIqjB,MAAM1I,GAWrB,IAAM2I,EAAkB,IAAI,IAAe,iBAErCC,EAA6B,IAAI,IAAe,8BAEhDC,EAA6B,IAAI,IAAe,8BAUhDC,EAAsC,CACxCnjC,QAASkjC,EACTtc,KAAM,CAAC,KACPC,WAPJ,SAAqDC,GACjD,OAAO,kBAAMA,EAAQC,iBAAiBqc,W,iBAYpCC,E,8BACF,WAAY/b,EAAUgc,EAAWC,EAAiBC,EAAeC,EAAmBjc,EAAgBkc,EAAuBC,EAAsBC,GAAgB,+BAC7JnmC,KAAK6pB,SAAWA,EAChB7pB,KAAK6lC,UAAYA,EACjB7lC,KAAK8lC,gBAAkBA,EACvB9lC,KAAK+lC,cAAgBA,EACrB/lC,KAAKgmC,kBAAoBA,EACzBhmC,KAAKimC,sBAAwBA,EAC7BjmC,KAAKkmC,qBAAuBA,EAC5BlmC,KAAKmmC,iBAAmBA,EACxBnmC,KAAKomC,wBAA0B,GAC/BpmC,KAAKqmC,2BAA6B,IAAI,IACtCrmC,KAAKsmC,wBAA0B,IAAI,IACnCtmC,KAAKumC,oBAAsB,IAAI94B,IAM/BzN,KAAKwmC,eAAiB,YAAM,kBAAM,EAAKC,YAAYtiC,OAC/C,EAAKuiC,qBACL,EAAKA,qBAAqB1iC,KAAK,iBAAUS,MAC7CzE,KAAKkrB,gBAAkBnB,G,wBAG3B,WACI,OAAO/pB,KAAK+lC,cAAgB/lC,KAAK+lC,cAAcU,YAAczmC,KAAKomC,0B,uBAGtE,WACI,OAAOpmC,KAAK+lC,cAAgB/lC,KAAK+lC,cAAcY,YAAc3mC,KAAKsmC,0B,gCAEtE,WACI,IAAMM,EAAS5mC,KAAK+lC,cACpB,OAAOa,EAASA,EAAOF,qBAAuB1mC,KAAKqmC,6B,kBAEvD,SAAKQ,EAAwBzO,GAAM,YAC/BA,EAoQR,SAA8BA,EAAQ0O,GAClC,OAAOtqB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAID,GAAiB1O,GArQ3C4O,CAAqB5O,EAAQp4B,KAAK8lC,iBAAmB,IAAIhF,IACvD9a,IAAMhmB,KAAKinC,cAAc7O,EAAOpS,IAI3C,IAAMmJ,EAAanvB,KAAKknC,eAAe9O,GACjCqJ,EAAkBzhC,KAAKmnC,uBAAuBhY,EAAYiJ,GAC1DgP,EAAYpnC,KAAKqnC,qBAAqBR,EAAwBpF,EAAiBtS,EAAYiJ,GAUjG,OARKp4B,KAAKymC,YAAYtiC,QAClBnE,KAAKsnC,+CAETtnC,KAAKymC,YAAY7iC,KAAKwjC,GACtBA,EAAUG,cAAcrjC,UAAU,kBAAM,EAAKsjC,kBAAkBJ,KAC/DpnC,KAAK2mC,YAAY9iC,KAAKujC,GAEtB3F,EAAgBgG,iCACTL,I,sBAKX,WACIpnC,KAAK0nC,cAAc1nC,KAAKymC,e,2BAM5B,SAAczgB,GACV,OAAOhmB,KAAKymC,YAAYphC,KAAK,SAAAsiC,GAAM,OAAIA,EAAO3hB,KAAOA,M,yBAEzD,WAGIhmB,KAAK0nC,cAAc1nC,KAAKomC,yBACxBpmC,KAAKqmC,2BAA2BviC,WAChC9D,KAAKsmC,wBAAwBxiC,a,4BAOjC,SAAes0B,GACX,IAAMwP,EAAgB5nC,KAAK0vB,kBAAkB0I,GAC7C,OAAOp4B,KAAK6pB,SAASvkB,OAAOsiC,K,+BAOhC,SAAkBC,GACd,IAAMx/B,EAAQ,IAAI,IAAc,CAC5BynB,iBAAkB9vB,KAAK6pB,SAAS7f,WAAW89B,SAC3C/d,eAAgB8d,EAAa9d,gBAAkB/pB,KAAKkrB,kBACpD8E,WAAY6X,EAAa7X,WACzB+Q,YAAa8G,EAAa9G,YAC1B/5B,UAAW6gC,EAAa7gC,UACxB+gC,SAAUF,EAAaE,SACvBC,UAAWH,EAAaG,UACxB9G,SAAU2G,EAAa3G,SACvB+G,UAAWJ,EAAaI,UACxBC,oBAAqBL,EAAatG,oBAKtC,OAHIsG,EAAa7G,gBACb34B,EAAM24B,cAAgB6G,EAAa7G,eAEhC34B,I,oCAQX,SAAuBghB,EAAS+O,GAC5B,IACMjZ,EAAW,IAAS7Z,OAAO,CAC7BshC,OAFiBxO,GAAUA,EAAOlZ,kBAAoBkZ,EAAOlZ,iBAAiBC,UAEtDnf,KAAK6lC,UAC7B1T,UAAW,CAAC,CAAE5vB,QAASu+B,EAAiBloB,SAAUwf,MAEhD+P,EAAkB,IAAI,IAAgBnoC,KAAKkmC,qBAAsB9N,EAAOlZ,iBAAkBC,EAAUiZ,EAAOhZ,0BAEjH,OADqBiK,EAAQvK,OAAOqpB,GAChBrU,W,kCAWxB,SAAqB+S,EAAwBpF,EAAiBtS,EAAYiJ,GAGtE,IAAMgP,EAAY,IAAIpnC,KAAKimC,sBAAsB9W,EAAYsS,EAAiBrJ,EAAOpS,IACrF,GAAI6gB,aAAkC,IAClCpF,EAAgB5hB,qBAAqB,IAAI,IAAegnB,EAAwB,KAAM,CAAE70B,UAAWomB,EAAOtoB,KAAMs3B,mBAE/G,CACD,IAAMjoB,EAAWnf,KAAKooC,gBAAgBhQ,EAAQgP,EAAW3F,GACnD4G,EAAa5G,EAAgB7hB,sBAAsB,IAAI,IAAgBinB,EAAwBzO,EAAOlZ,iBAAkBC,IAC9HioB,EAAU9C,kBAAoB+D,EAAWvU,SAK7C,OAHAsT,EACK9X,WAAW8I,EAAO1uB,MAAO0uB,EAAO5tB,QAChCkhB,eAAe0M,EAAOpuB,UACpBo9B,I,6BAUX,SAAgBhP,EAAQgP,EAAW3F,GAC/B,IAAM6G,EAAelQ,GAAUA,EAAOlZ,kBAAoBkZ,EAAOlZ,iBAAiBC,SAK5EgT,EAAY,CACd,CAAE5vB,QAASvC,KAAKkmC,qBAAsBttB,SAAU6oB,GAChD,CAAEl/B,QAASvC,KAAKmmC,iBAAkBvtB,SAAUwf,EAAOtoB,MACnD,CAAEvN,QAASvC,KAAKimC,sBAAuBrtB,SAAUwuB,IASrD,OAPIhP,EAAOpxB,WACLshC,GAAiBA,EAAap2B,IAAI,IAAgB,OACpDigB,EAAUvuB,KAAK,CACXrB,QAAS,IACTqW,SAAU,CAAErX,MAAO62B,EAAOpxB,UAAW+I,OAAQ,iBAG9C,IAASzK,OAAO,CAAEshC,OAAQ0B,GAAgBtoC,KAAK6lC,UAAW1T,gB,+BAMrE,SAAkBiV,GACd,IAAMz9B,EAAQ3J,KAAKymC,YAAYx9B,QAAQm+B,GACnCz9B,GAAS,IACT3J,KAAKymC,YAAY8B,OAAO5+B,EAAO,GAG1B3J,KAAKymC,YAAYtiC,SAClBnE,KAAKumC,oBAAoBlzB,QAAQ,SAACm1B,EAAen9B,GACzCm9B,EACAn9B,EAAQwD,aAAa,cAAe25B,GAGpCn9B,EAAQo9B,gBAAgB,iBAGhCzoC,KAAKumC,oBAAoB71B,QACzB1Q,KAAK0mC,qBAAqB7iC,W,0DAOtC,WACI,IAAM6kC,EAAmB1oC,KAAKgmC,kBAAkB2C,sBAEhD,GAAID,EAAiBE,cAEjB,IADA,IAAMC,EAAWH,EAAiBE,cAAc9gC,SACvCD,EAAIghC,EAAS1kC,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CAC3C,IAAIihC,EAAUD,EAAShhC,GACnBihC,IAAYJ,GACS,WAArBI,EAAQh6B,UACa,UAArBg6B,EAAQh6B,UACPg6B,EAAQC,aAAa,eACtB/oC,KAAKumC,oBAAoBlyB,IAAIy0B,EAASA,EAAQE,aAAa,gBAC3DF,EAAQj6B,aAAa,cAAe,Y,2BAMpD,SAAco6B,GAEV,IADA,IAAIphC,EAAIohC,EAAQ9kC,OACT0D,KAKHohC,EAAQphC,GAAGy9B,Y,UAIvBM,EAAerlC,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKolC,GAAgB,KAAyB,KAAiB,KAAyB,KAAkB,UAAyBnhC,GAAY,UAAyBA,GAAY,KAAyB,KAA0B,UAAyBA,GAAY,KAAyB,KAAc,KAAyB,KAAc,KAAyB,OAC1bmhC,EAAenlC,UAAO,KAAyB,CAAEC,KAAMklC,I,sBAkBjDsD,E,YACF,WAAY7f,EAASlK,EAKrBmb,EAAUwM,EAAgB/c,EAAgBof,EAAcT,GAAgB,qCAC9Drf,EAASlK,EAAU2nB,EAAgBqC,EAAcT,EAAkB3e,EAAgB8Z,EAAcZ,EAAoBsC,I,wCAP3GK,G,OAUxBsD,EAAU3oC,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAK0oC,GAAW,KAAgB,KAAiB,KAAgB,KAAkB,KAAgB,IAAiB,GAAI,KAAgB1D,EAA4B,GAAI,KAAgBC,GAA6B,KAAgByD,EAAW,IAAK,KAAgB,OAClUA,EAAUtkC,WAAQ,KAA0B,CAAEC,MAAOqkC,EAAWpkC,QAASokC,EAAU3oC,Y,KA6C/E6oC,EAAmB,E,iBAIjBC,E,8BACF,WAGAjC,EAAWr6B,EAAau8B,GAAO,oBAC3BtpC,KAAKonC,UAAYA,EACjBpnC,KAAK+M,YAAcA,EACnB/M,KAAKspC,QAAUA,EAEftpC,KAAKU,KAAO,U,uBAEhB,WACSV,KAAKonC,YAMNpnC,KAAKonC,UAAYmC,EAAiBvpC,KAAK+M,YAAa/M,KAAKspC,QAAQ7C,gB,yBAGzE,SAAYxhC,GACR,IAAMukC,EAAgBvkC,EAAO,iBAAuBA,EAAO,sBACvDukC,IACAxpC,KAAK0kC,aAAe8E,EAAcpkC,gB,4BAG1C,SAAekjB,GAKXic,EAAgBvkC,KAAKonC,UAA6B,IAAlB9e,EAAMmhB,SAAmC,IAAlBnhB,EAAMohB,QAAgB,WAAa,QAAS1pC,KAAK0kC,kB,UAGhH2E,EAAe9oC,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK6oC,GAAgB,KAAyBxF,EAAc,GAAI,KAAyB,KAAoB,KAAyBqF,KAC7MG,EAAe5oC,UAAO,KAAyB,CAAEC,KAAM2oC,EAAgB1oC,UAAW,CAAC,CAAC,GAAI,mBAAoB,IAAK,CAAC,GAAI,iBAAkB,KAAM4X,SAAU,EAAGC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,GACrN,KAAkB,QAAS,SAAiDmwB,GAAU,OAAOlwB,EAAI+nC,eAAe7X,KACzG,EAALnwB,GACF,KAAmB,aAAcC,EAAIukB,WAAa,KAAlD,CAAwD,OAAQvkB,EAAIlB,OACnEyB,OAAQ,CAAEzB,KAAM,OAAQgkC,aAAc,CAAC,mBAAoB,gBAAiBve,UAAW,CAAC,aAAc,aAAcyjB,gBAAiB,CAAC,iBAAkB,oBAAsBlxB,SAAU,CAAC,kBAAmBpW,SAAU,CAAC,Q,sBAwC1NunC,E,8BACF,WAGAC,EAAY/8B,EAAau8B,GAAO,oBAC5BtpC,KAAK8pC,WAAaA,EAClB9pC,KAAK+M,YAAcA,EACnB/M,KAAKspC,QAAUA,EACftpC,KAAKgmB,GAAL,2BAA8BojB,M,uBAElC,WAAQ,WACCppC,KAAK8pC,aACN9pC,KAAK8pC,WAAaP,EAAiBvpC,KAAK+M,YAAa/M,KAAKspC,QAAQ7C,cAElEzmC,KAAK8pC,YACLvlC,QAAQC,UAAU6Z,KAAK,WACnB,IAAMhG,EAAY,EAAKyxB,WAAWhG,mBAC9BzrB,IAAcA,EAAU+pB,kBACxB/pB,EAAU+pB,gBAAkB,EAAKpc,U,UAMrD6jB,EAAetpC,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKqpC,GAAgB,KAAyBhG,EAAc,GAAI,KAAyB,KAAoB,KAAyBqF,KAC7MW,EAAeppC,UAAO,KAAyB,CAAEC,KAAMmpC,EAAgBlpC,UAAW,CAAC,CAAC,GAAI,mBAAoB,IAAK,CAAC,GAAI,iBAAkB,KAAMoC,UAAW,CAAC,EAAG,oBAAqBwV,SAAU,EAAGC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,GACzP,KAAsB,KAAMC,EAAIokB,KAC/B7jB,OAAQ,CAAE6jB,GAAI,MAAQtN,SAAU,CAAC,oB,sBA2BpCqxB,E,sDAENA,EAAiBxpC,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKupC,IAChFA,EAAiBtpC,UAAO,KAAyB,CAAEC,KAAMqpC,EAAkBppC,UAAW,CAAC,CAAC,GAAI,qBAAsB,IAAK,CAAC,sBAAuB,CAAC,GAAI,mBAAoB,KAAMoC,UAAW,CAAC,EAAG,wB,sBAYvLinC,E,sDAENA,EAAiBzpC,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKwpC,IAChFA,EAAiBvpC,UAAO,KAAyB,CAAEC,KAAMspC,EAAkBrpC,UAAW,CAAC,CAAC,GAAI,qBAAsB,IAAK,CAAC,sBAAuB,CAAC,GAAI,mBAAoB,KAAMoC,UAAW,CAAC,EAAG,wB,KAa7L,SAASwmC,EAAiBl+B,EAASo7B,GAE/B,IADA,IAAIG,EAASv7B,EAAQzI,cAAcgmC,cAC5BhC,IAAWA,EAAOjkC,UAAUiqB,SAAS,yBACxCga,EAASA,EAAOgC,cAEpB,OAAOhC,EAASH,EAAYphC,KAAK,SAAAsiC,GAAM,OAAIA,EAAO3hB,KAAO4gB,EAAO5gB,KAAM,K,qBAUpEikB,E,sDAENA,EAAgB1pC,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKypC,IAC9EA,EAAgB/wB,UAAO,KAAwB,CAAExY,KAAMupC,IACvDA,EAAgB9wB,UAAO,KAAwB,CAAEgZ,UAAW,CACpD+W,EACAxD,GACDtsB,QAAS,CAAC,CACL,IACA,IACA,KACD,O,8GCtiCP8wB,E,oLAFEC,EAAqC,IAAIx8B,I,iBAIzCy8B,E,8BACF,WAAYj9B,GAAS,oBACjBnN,KAAKmN,UAAYA,EACjBnN,KAAKqqC,YAAcrqC,KAAKmN,UAAU8K,WAAakT,OAAOmf,WAGlDnf,OAAOmf,WAAWC,KAAKpf,QACvBqf,G,yBAQR,SAAWC,GAIP,OAHIzqC,KAAKmN,UAAUu9B,QAmB3B,SAA8BD,GAC1B,IAAIN,EAAmC/1B,IAAIq2B,GAG3C,IACSP,KACDA,EAAsBS,SAAS9yB,cAAc,UACzBhJ,aAAa,OAAQ,YACzC87B,SAASC,KAAK9yB,YAAYoyB,IAE1BA,EAAoBW,QACpBX,EAAoBW,MACfC,WADL,iBAC0BL,EAD1B,wBACuD,GACvDN,EAAmCtnC,IAAI4nC,IAG/C,MAAOxW,GACH8W,QAAQ/V,MAAMf,IAnCV+W,CAAqBP,GAElBzqC,KAAKqqC,YAAYI,O,UAGhCL,EAAa7pC,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK4pC,GAAc,KAAgB,OACtGA,EAAaxlC,WAAQ,aAAmB,CAAEE,QAAS,WAAkC,OAAO,IAAIslC,EAAa,aAAS,OAAevlC,MAAOulC,EAAcxjB,WAAY,S,KAiCtK,SAAS4jB,EAAeC,GAGpB,MAAO,CACHQ,QAAmB,QAAVR,GAA6B,KAAVA,EAC5BS,MAAOT,EACPU,YAAa,aACbC,eAAgB,c,qBAYlBC,E,8BACF,WAAYC,EAAexhB,GAAK,oBAC5B9pB,KAAKsrC,cAAgBA,EACrBtrC,KAAK8pB,MAAQA,EAEb9pB,KAAKurC,SAAW,IAAI99B,IAEpBzN,KAAKwrC,gBAAkB,IAAI,K,0BAG/B,WACIxrC,KAAKwrC,gBAAgB3nC,OACrB7D,KAAKwrC,gBAAgB1nC,a,uBAOzB,SAAUvC,GAAK,WAEX,OADgBkqC,EAAa,YAAYlqC,IAC1B6G,KAAK,SAAAsjC,GAAU,OAAI,EAAKC,eAAeD,GAAYE,IAAIX,Y,qBAQ1E,SAAQ1pC,GAAK,WAEHsqC,EADUJ,EAAa,YAAYlqC,IACbkI,IAAI,SAAAghC,GAAK,OAAI,EAAKkB,eAAelB,GAAOqB,aAChEC,EAAkB,YAAcF,GAGpC,OADAE,EAAkB,YAAOA,EAAgB/nC,KAAK,YAAK,IAAK+nC,EAAgB/nC,KAAK,YAAK,GAAI,YAAa,MAC5EA,KAAK,YAAI,SAAAgoC,GAC5B,IAAMC,EAAW,CACbhB,SAAS,EACTiB,YAAa,IAMjB,OAJAF,EAAiB34B,QAAQ,YAAuB,IAApB43B,EAAoB,EAApBA,QAASR,EAAW,EAAXA,MACjCwB,EAAShB,QAAUgB,EAAShB,SAAWA,EACvCgB,EAASC,YAAYzB,GAASQ,IAE3BgB,O,4BAIf,SAAexB,GAAK,WAEhB,GAAIzqC,KAAKurC,SAASn3B,IAAIq2B,GAClB,OAAOzqC,KAAKurC,SAASr5B,IAAIu4B,GAE7B,IAAMmB,EAAM5rC,KAAKsrC,cAAchB,WAAWG,GAepC0B,EAAS,CAAEL,WAbO,IAAI,IAAW,SAACM,GAMpC,IAAMC,EAAU,SAACpY,GAAD,OAAO,EAAKnK,MAAMwiB,IAAI,kBAAMF,EAASvoC,KAAKowB,MAE1D,OADA2X,EAAIT,YAAYkB,GACT,WACHT,EAAIR,eAAeiB,MAExBroC,KAAK,YAAU4nC,GAAM,YAAI,kBAAkB,CAAEnB,QAAOQ,QAA3B,EAAGA,WAAqC,YAAUjrC,KAAKwrC,kBAErCI,OAE9C,OADA5rC,KAAKurC,SAASl3B,IAAIo2B,EAAO0B,GAClBA,M,UAGfd,EAAmB9qC,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK6qC,GAAoB,KAAgBjB,GAAe,KAAgB,OACvJiB,EAAmBzmC,WAAQ,aAAmB,CAAEE,QAAS,WAAwC,OAAO,IAAIumC,EAAmB,aAASjB,GAAe,aAAS,OAAavlC,MAAOwmC,EAAoBzkB,WAAY,S,KAapN,SAAS6kB,EAAac,GAClB,OAAOA,EAAQ9iC,IAAI,SAAAghC,GAAK,OAAIA,EAAMloB,MAAM,OACnC9M,OAAO,SAAC+2B,EAAIC,GAAL,OAAYD,EAAGxzB,OAAOyzB,KAC7BhjC,IAAI,SAAAghC,GAAK,OAAIA,EAAM3tB,SAY5B,IAAM4vB,EAAc,CAChBC,OAAQ,wBACRC,MAAO,+CACPC,OAAQ,gDACRC,MAAO,iDACPC,OAAQ,sBACRC,QAAS,wGAETC,OAAQ,uJAERC,IAAK,mGAELC,gBAAiB,oDACjBC,eAAgB,2EAChBC,YAAa,iDACbC,iBAAkB,qDAClBC,gBAAiB,6EACjBC,aAAc,qD,oCCrOlB,IAAIC,EAAU3Q,EAAQ,QAElB1oB,EAAMoI,OAAOkW,UAAUgb,eACvB13B,EAAUzL,MAAMyL,QAEhB23B,EAAY,WAEZ,IADA,IAAI50B,EAAQ,GACHlR,EAAI,EAAGA,EAAI,MAAOA,EACvBkR,EAAMnV,KAAK,MAAQiE,EAAI,GAAK,IAAM,IAAMA,EAAEoqB,SAAS,KAAK2b,eAG5D,OAAO70B,EANK,GA4BZ80B,EAAgB,SAAuBtnB,EAAQyB,GAE/C,IADA,IAAIjK,EAAMiK,GAAWA,EAAQ8lB,aAAetxB,OAAOlX,OAAO,MAAQ,GACzDuC,EAAI,EAAGA,EAAI0e,EAAOpiB,SAAU0D,OACR,IAAd0e,EAAO1e,KACdkW,EAAIlW,GAAK0e,EAAO1e,IAIxB,OAAOkW,GAiFPgwB,EAAQ,KAiIZ3Q,EAAOC,QAAU,CACbwQ,cAAeA,EACf9G,OAxJS,SAA4Bva,EAAQjG,GAC7C,OAAO/J,OAAOC,KAAK8J,GAAQ9Q,OAAO,SAAUH,EAAKqH,GAE7C,OADArH,EAAIqH,GAAO4J,EAAO5J,GACXrH,GACRkX,IAqJHwhB,QAlBU,SAAiBjyB,EAAGC,GAC9B,MAAO,GAAGhD,OAAO+C,EAAGC,IAkBpBiyB,QAvDU,SAAiB1sC,GAI3B,IAHA,IAAI2sC,EAAQ,CAAC,CAAEnwB,IAAK,CAAEowB,EAAG5sC,GAAS6sC,KAAM,MACpCC,EAAO,GAEFxmC,EAAI,EAAGA,EAAIqmC,EAAM/pC,SAAU0D,EAKhC,IAJA,IAAIyJ,EAAO48B,EAAMrmC,GACbkW,EAAMzM,EAAKyM,IAAIzM,EAAK88B,MAEpB3xB,EAAOD,OAAOC,KAAKsB,GACdxJ,EAAI,EAAGA,EAAIkI,EAAKtY,SAAUoQ,EAAG,CAClC,IAAIoI,EAAMF,EAAKlI,GACX+5B,EAAMvwB,EAAIpB,GACK,iBAAR2xB,GAA4B,OAARA,IAAuC,IAAvBD,EAAKplC,QAAQqlC,KACxDJ,EAAMtqC,KAAK,CAAEma,IAAKA,EAAKqwB,KAAMzxB,IAC7B0xB,EAAKzqC,KAAK0qC,IAOtB,OA/Me,SAAsBJ,GACrC,KAAOA,EAAM/pC,OAAS,GAAG,CACrB,IAAImN,EAAO48B,EAAMjP,MACblhB,EAAMzM,EAAKyM,IAAIzM,EAAK88B,MAExB,GAAIp4B,EAAQ+H,GAAM,CAGd,IAFA,IAAIwwB,EAAY,GAEPh6B,EAAI,EAAGA,EAAIwJ,EAAI5Z,SAAUoQ,OACR,IAAXwJ,EAAIxJ,IACXg6B,EAAU3qC,KAAKma,EAAIxJ,IAI3BjD,EAAKyM,IAAIzM,EAAK88B,MAAQG,IA+L9BC,CAAaN,GAEN3sC,GAmCPktC,OApJS,SAAUC,EAAKC,EAASC,GACjC,IAAIC,EAAiBH,EAAIltC,QAAQ,MAAO,KACxC,GAAgB,eAAZotC,EAEA,OAAOC,EAAertC,QAAQ,iBAAkBstC,UAGpD,IACI,OAAOC,mBAAmBF,GAC5B,MAAO5a,GACL,OAAO4a,IA2IXG,OAnIS,SAAgBN,EAAKO,EAAgBL,EAASM,EAAMnsB,GAG7D,GAAmB,IAAf2rB,EAAIvqC,OACJ,OAAOuqC,EAGX,IAAIS,EAAST,EAOb,GANmB,iBAARA,EACPS,EAASC,OAAO1c,UAAUT,SAASiD,KAAKwZ,GAClB,iBAARA,IACdS,EAASE,OAAOX,IAGJ,eAAZE,EACA,OAAOU,OAAOH,GAAQ3tC,QAAQ,kBAAmB,SAAU+tC,GACvD,MAAO,SAAWC,SAASD,EAAG/lC,MAAM,GAAI,IAAM,QAKtD,IADA,IAAIimC,EAAM,GACDl7B,EAAI,EAAGA,EAAI46B,EAAOhrC,OAAQoQ,GAAKw5B,EAAO,CAI3C,IAHA,IAAI2B,EAAUP,EAAOhrC,QAAU4pC,EAAQoB,EAAO3lC,MAAM+K,EAAGA,EAAIw5B,GAASoB,EAChEQ,EAAM,GAED9nC,EAAI,EAAGA,EAAI6nC,EAAQvrC,SAAU0D,EAAG,CACrC,IAAI+nC,EAAIF,EAAQG,WAAWhoC,GAEjB,KAAN+nC,GACS,KAANA,GACM,KAANA,GACM,MAANA,GACCA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,KAClB7sB,IAAW0qB,EAAQqC,UAAkB,KAANF,GAAoB,KAANA,GAEjDD,EAAIA,EAAIxrC,QAAUurC,EAAQK,OAAOloC,GAIjC+nC,EAAI,IACJD,EAAIA,EAAIxrC,QAAUwpC,EAASiC,GAI3BA,EAAI,KACJD,EAAIA,EAAIxrC,QAAUwpC,EAAS,IAAQiC,GAAK,GAClCjC,EAAS,IAAY,GAAJiC,GAIvBA,EAAI,OAAUA,GAAK,MACnBD,EAAIA,EAAIxrC,QAAUwpC,EAAS,IAAQiC,GAAK,IAClCjC,EAAS,IAASiC,GAAK,EAAK,IAC5BjC,EAAS,IAAY,GAAJiC,IAK3BA,EAAI,QAAiB,KAAJA,IAAc,GAA+B,KAAxBF,EAAQG,WAD9ChoC,GAAK,IAGL8nC,EAAIA,EAAIxrC,QAAUwpC,EAAS,IAAQiC,GAAK,IAClCjC,EAAS,IAASiC,GAAK,GAAM,IAC7BjC,EAAS,IAASiC,GAAK,EAAK,IAC5BjC,EAAS,IAAY,GAAJiC,IAG3BH,GAAOE,EAAIK,KAAK,IAGpB,OAAOP,GA6DPQ,SA9BW,SAAkBlyB,GAC7B,SAAKA,GAAsB,iBAARA,KAITA,EAAImyB,aAAenyB,EAAImyB,YAAYD,UAAYlyB,EAAImyB,YAAYD,SAASlyB,MA0BlFoyB,SAnCW,SAAkBpyB,GAC7B,MAA+C,oBAAxCvB,OAAOkW,UAAUT,SAASiD,KAAKnX,IAmCtCqyB,SApBW,SAAkB9B,EAAKt/B,GAClC,GAAIgH,EAAQs4B,GAAM,CAEd,IADA,IAAI+B,EAAS,GACJxoC,EAAI,EAAGA,EAAIymC,EAAInqC,OAAQ0D,GAAK,EACjCwoC,EAAOzsC,KAAKoL,EAAGs/B,EAAIzmC,KAEvB,OAAOwoC,EAEX,OAAOrhC,EAAGs/B,IAaVjxB,MAzNQ,SAASA,EAAMmP,EAAQjG,EAAQyB,GAEvC,IAAKzB,EACD,OAAOiG,EAGX,GAAsB,iBAAXjG,EAAqB,CAC5B,GAAIvQ,EAAQwW,GACRA,EAAO5oB,KAAK2iB,OACT,KAAIiG,GAA4B,iBAAXA,EAKxB,MAAO,CAACA,EAAQjG,IAJXyB,IAAYA,EAAQ8lB,cAAgB9lB,EAAQsoB,mBAAsBl8B,EAAI8gB,KAAK1Y,OAAOkW,UAAWnM,MAC9FiG,EAAOjG,IAAU,GAMzB,OAAOiG,EAGX,IAAKA,GAA4B,iBAAXA,EAClB,MAAO,CAACA,GAAQxT,OAAOuN,GAG3B,IAAIgqB,EAAc/jB,EAKlB,OAJIxW,EAAQwW,KAAYxW,EAAQuQ,KAC5BgqB,EAAc1C,EAAcrhB,EAAQxE,IAGpChS,EAAQwW,IAAWxW,EAAQuQ,IAC3BA,EAAOlT,QAAQ,SAAU/B,EAAMzJ,GAC3B,GAAIuM,EAAI8gB,KAAK1I,EAAQ3kB,GAAI,CACrB,IAAI2oC,EAAahkB,EAAO3kB,GACpB2oC,GAAoC,iBAAfA,GAA2Bl/B,GAAwB,iBAATA,EAC/Dkb,EAAO3kB,GAAKwV,EAAMmzB,EAAYl/B,EAAM0W,GAEpCwE,EAAO5oB,KAAK0N,QAGhBkb,EAAO3kB,GAAKyJ,IAGbkb,GAGJhQ,OAAOC,KAAK8J,GAAQ9Q,OAAO,SAAUH,EAAKqH,GAC7C,IAAIpb,EAAQglB,EAAO5J,GAOnB,OAJIrH,EAAIqH,GADJvI,EAAI8gB,KAAK5f,EAAKqH,GACHU,EAAM/H,EAAIqH,GAAMpb,EAAOymB,GAEvBzmB,EAER+T,GACRi7B,M,wBC3FE,SAAUluB,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wzBAAqJL,MACzJ,KAEJM,YACI,qPAAiEN,MAC7D,KAERW,iBAAkB,+BAClB+T,kBAAkB,EAClB1T,SACI,mbAAgFhB,MAC5E,KAERiB,cAAe,2QAAoDjB,MAC/D,KAEJkB,YAAa,iIAA6BlB,MAAM,KAChDoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,4CACTC,QAAS,4CACTC,SAAU,mGACVC,QAAS,gCACTC,SAAU,kGACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,oCACNC,EAAG,iCACHC,GAAI,0CACJ/B,EAAG,+DACHgC,GAAI,oCACJC,EAAG,qEACHC,GAAI,0CACJhN,EAAG,mDACHiN,GAAI,8BACJG,EAAG,yDACHC,GAAI,8BACJC,EAAG,6CACHC,GAAI,mBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAGzBE,cAAe,6MACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAGO,yCAAbC,GAAyBD,GAAQ,GACpB,+CAAbC,GAA0BD,EAAO,GACrB,+CAAbC,EAEOD,EAAO,GAEPA,GAGfC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,uCACAA,EAAO,GACP,6CACAA,EAAO,GACP,6CACAA,EAAO,GACP,6CAEA,wCAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KA1HyB/gB,CAAQ,EAAQ,U,wBCGjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,8FAA2FL,MAC/F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SACI,uFAAiFhB,MAC7E,KAERiB,cAAe,iCAA8BjB,MAAM,KACnDkB,YAAa,yCAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,6CAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACN,OAAsB,IAAfvkB,KAAK8xC,OAA8B,IAAf9xC,KAAK8xC,MAC1B,8BACA,+BAEVttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,kBACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,SACHiN,GAAI,UACJG,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,cACxBC,QAAS,SACTssB,YAAa,qBAzDqBjtC,CAAQ,EAAQ,U,8KCLpD,SAAUb,EAAU+tC,GACtB,OAAO,SAACzrB,GAAD,OAAYA,EAAO8V,KAAK,IAAI4V,EAAkBD,K,IAEnDC,E,8BACF,WAAYD,GAAQ,oBAChBhyC,KAAKgyC,SAAWA,G,mBAEpB,SAAKzV,EAAYhW,GACb,IAAM2rB,EAAsB,IAAIC,EAAoB5V,GAC9C6V,EAAuB,YAAepyC,KAAKgyC,SAAU,IAAI,IAAsBE,IACrF,OAAIE,IAAyBF,EAAoBG,WAC7CH,EAAoBrvC,IAAIuvC,GACjB7rB,EAAOriB,UAAUguC,IAErBA,M,GAGTC,E,YACF,WAAY1V,GAAW,M,MAAA,2B,EACnB,K,EAAA,E,EAAA,CAAMA,G,kBAAN,E,iGACK4V,WAAY,EAFE,E,+DAIvB,WACIryC,KAAKqyC,WAAY,EACjBryC,KAAK8D,a,4BAET,gB,CAT8B,M,oCClBnB,SAASwuC,EAAgBxe,EAAUye,GAChD,KAAMze,aAAoBye,GACxB,MAAM,IAAIC,UAAU,qCAFxB,iC,oCCEA,4DAYA,aAcC,WAAoBC,GAAA,KAAAA,K,OASpB,YAAAC,gBAAA,WACC1yC,KAAK2yC,eACL3yC,KAAK4yC,KAAO,IAAIC,OAAO7yC,KAAKyyC,GAAG7vC,cAAe5C,KAAKgoB,UAMpD,YAAA8qB,QAAA,WACC,OAAO9yC,KAAK4yC,MAML,YAAAD,aAAR,WAEC,IAAII,EAAkB,YAC6C,MAA/D/yC,KAAKyyC,GAAG7vC,cAAcomC,aAAa,0BACtC+J,EAAkB,YAG4C,iBAApD,MAAe/yC,KAAKgoB,QAAS,oBACvC,MAAehoB,KAAKgoB,QAAS,kBAAmB+qB,I,sCA1CtCC,GAAa,Y,uBAAbA,EAAa,8E,EAJ1B,I,k8ICde,I,YCCf,GAAgC,oBAArBC,iBACP,MAAM,IAAI5e,MAAM,sFAEpB,IAAIjC,EAAY6gB,iBAAiB7gB,UAC7Bva,EAAgBo7B,iBAAiBp7B,cACjCq7B,EAASD,iBAAiBC,OAC1BC,EAAYF,iBAAiBE,UAC7BC,EAAWH,iBAAiBG,SAC5BC,EAAgBJ,iBAAiBI,cACjCC,EAAeL,iBAAiBK,aAChCC,EAAYN,iBAAiBM,UAC7BC,EAAyBP,iBAAiBO,uBCC1CC,EAAgC,WAChC,SAASA,EAAejiC,EAASkiC,GAC7B1zC,KAAKwR,QAAUA,EACfxR,KAAK0zC,oBAAsBA,EAoC/B,OAlCAD,EAAe/gB,UAAUlnB,OAAS,WAC9BxL,KAAKwR,QAAQknB,SAAS,CAClBh4B,KAAM,sBACNizC,SAAU3zC,KAAK0zC,oBAAoBC,YAG3CF,EAAe/gB,UAAUkhB,QAAU,WAC/B5zC,KAAKwR,QAAQknB,SAAS,CAClBh4B,KAAM,sBACNmzC,UAAW,CAAC7zC,KAAK0zC,oBAAoBC,UACrCG,WAAW,KAGnBt3B,OAAOu3B,eAAeN,EAAe/gB,UAAW,KAAM,CAClDxgB,IAAK,WACD,OAAOlS,KAAK0zC,oBAAoBM,UAEpCC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeN,EAAe/gB,UAAW,MAAO,CACnDxgB,IAAK,WACD,OAAOlS,KAAK0zC,oBAAoBQ,KAAKC,KAEzCF,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeN,EAAe/gB,UAAW,SAAU,CACtDxgB,IAAK,WACD,OAAOlS,KAAK0zC,oBAAoBQ,KAAKnxB,QAEzCkxB,YAAY,EACZvW,cAAc,IAEX+V,EAvCyB,GA0CpC,SAASW,EAAc3B,GACfA,EAAG/xB,YACH+xB,EAAG/xB,WAAWe,YAAYgxB,GAKlC,SAAS4B,EAAe5B,EAAI6B,GACxB,GAAI7B,EAAG8B,QACH,OAAO9B,EAAG8B,QAAQD,GAItB,IAAK3J,SAAS6J,gBAAgB5nB,SAAS6lB,GACnC,OAAO,KAEX,EAAG,CACC,GAAIgC,EAAehC,EAAI6B,GACnB,OAAO7B,EAEXA,EAAMA,EAAG7J,eAAiB6J,EAAG/xB,iBACjB,OAAP+xB,GAA+B,IAAhBA,EAAG9qC,UAC3B,OAAO,KAEX,SAAS8sC,EAAehC,EAAI6B,GAExB,OADa7B,EAAGxH,SAAWwH,EAAGiC,iBAAmBjC,EAAGkC,mBACtCzf,KAAKud,EAAI6B,GAkC3B,IAAIM,EAAgB,yCACpB,SAASC,EAAWpC,EAAI1f,GACpB,IAAK,IAAI+hB,KAAY/hB,EACjBgiB,EAAetC,EAAIqC,EAAU/hB,EAAM+hB,IAG3C,SAASC,EAAetC,EAAItxC,EAAMmtC,GAE1BmE,EAAGlnC,MAAMpK,GADF,MAAPmtC,EACiB,GAEG,iBAARA,GAAoBsG,EAAc5xB,KAAK7hB,GAClCmtC,EAAM,KAGNA,EAQzB,SAAS0G,EAAsBC,GAC3B,IAAItqC,EAAIC,EACR,OAA6F,QAArFA,EAAgC,QAA1BD,EAAKsqC,EAAG1oB,oBAAiC,IAAP5hB,OAAgB,EAASA,EAAGuqB,KAAK+f,GAAI,UAAuB,IAAPrqC,EAAgBA,EAAKqqC,EAAGzoB,OAIjI,SAAS0oB,EAAUzC,GACf,OAAOA,EAAG0C,YAAc1C,EAAG0C,cAAgBxK,SAG/C,IAAIyK,EAAS,EACb,SAASC,IAEL,MAAO,WADPD,GAAU,GAKd,SAASloB,EAAe+nB,GACpBA,EAAG/nB,iBAYP,SAASooB,EAAiBj9B,EAAWk9B,EAAWjB,EAAUjI,GACtD,IAAImJ,EATR,SAAgClB,EAAUjI,GACtC,OAAO,SAAU4I,GACb,IAAIQ,EAAepB,EAAeY,EAAGzoB,OAAQ8nB,GACzCmB,GACApJ,EAAQnX,KAAKugB,EAAcR,EAAIQ,IAKjBC,CAAuBpB,EAAUjI,GAEvD,OADAh0B,EAAUiT,iBAAiBiqB,EAAWC,GAC/B,WACHn9B,EAAUsT,oBAAoB4pB,EAAWC,IAqBjD,IAAIG,EAAuB,CACvB,sBACA,iBACA,iBACA,kBACA,iBAGJ,SAASC,EAAmBnD,EAAIxf,GAC5B,IAAI4iB,EAAe,SAAUZ,GACzBhiB,EAASgiB,GACTU,EAAqBtiC,QAAQ,SAAUyiC,GACnCrD,EAAG9mB,oBAAoBmqB,EAAWD,MAG1CF,EAAqBtiC,QAAQ,SAAUyiC,GACnCrD,EAAGnnB,iBAAiBwqB,EAAWD,KAKvC,SAASE,EAAqB1J,GAC1B,OAAO2J,YAAS,CAAEC,QAAS5J,GAAW6J,EAAwB7J,IAElE,SAAS6J,EAAwB7J,GAC7B,MAAO,CACH8J,SAAU,EACVC,UAAW,SAAUnB,GACF,UAAXA,EAAGt4B,KAA8B,MAAXs4B,EAAGt4B,MACzB0vB,EAAQ4I,GACRA,EAAG/nB,oBAMnB,IAAImpB,EAAa,EACjB,SAASC,IAEL,OAAOjH,OADPgH,GAAc,GAMlB,SAASE,IACL5L,SAAS7H,KAAKngC,UAAUE,IAAI,kBAGhC,SAAS2zC,IACL7L,SAAS7H,KAAKngC,UAAU6I,OAAO,kBAInC,SAASirC,EAAiBhE,GACtBA,EAAG9vC,UAAUE,IAAI,mBACjB4vC,EAAGnnB,iBAAiB,cAAe4B,GAEvC,SAASwpB,EAAejE,GACpBA,EAAG9vC,UAAU6I,OAAO,mBACpBinC,EAAG9mB,oBAAoB,cAAeuB,GAI1C,SAASypB,EAAmBlE,GACxBA,EAAGnnB,iBAAiB,cAAe4B,GAEvC,SAAS0pB,EAAiBnE,GACtBA,EAAG9mB,oBAAoB,cAAeuB,GAwC1C,SAAS2pB,EAAmBC,EAAMC,EAAMC,GACpC,OAAIA,EAAUC,KACHD,EAAUC,KAAKH,EAAMC,IAKR/6B,EAHsB+6B,EAAKC,EAAUE,SAGxCn7B,EAHE+6B,EAAKE,EAAUE,SAI3Bl7B,EAGF,MAALA,GACQ,EAEH,MAALD,EACO,EAEM,iBAANA,GAA+B,iBAANC,EACzBqzB,OAAOtzB,GAAGo7B,cAAc9H,OAAOrzB,IAEnCD,EAAIC,EAXA,IAJJg7B,EAAUI,OAAS,IAE9B,IAAyBr7B,EAAGC,EAiB5B,SAASq7B,EAAS/I,EAAKgJ,GACnB,IAAI1yB,EAAIyqB,OAAOf,GACf,MAAO,MAAMiJ,OAAO,EAAGD,EAAM1yB,EAAEzgB,QAAUygB,EAE7C,SAAS4yB,EAAmBC,EAAW53C,EAAM63C,GACzC,MAAyB,mBAAdD,EACAA,EAAUE,WAAM,EAAQ93C,GAEV,iBAAd43C,EACA53C,EAAK4V,OAAO,SAAUi5B,EAAKkJ,EAAKjuC,GAAS,OAAQ+kC,EAAIltC,QAAQ,IAAMmI,EAAOiuC,GAAO,KAASH,GAE9FC,EAIX,SAASG,EAAe97B,EAAGC,GACvB,OAAOD,EAAIC,EAEf,SAAS87B,EAAMC,GACX,OAAOA,EAAI,GAAM,EAIrB,SAASC,EAAyBC,GAC9B,IAAIC,EAAaD,EAAO7sC,cAAc,+BAClC+sC,EAAiBF,EAAO7sC,cAAc,iCAC1C,IAAK8sC,EACD,MAAM,IAAI7jB,MAAM,8CAEpB,IAAK8jB,EACD,MAAM,IAAI9jB,MAAM,gDAEpB,OAAO4jB,EAAOxtC,wBAAwBf,MAAQwuC,EAAWztC,wBAAwBf,MAC7EyuC,EAAe1tC,wBAAwBf,MAG/C,IAAI0uC,EAAU,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAEzD,SAASC,EAASv1B,EAAGi1B,GACjB,IAAIh8B,EAAIu8B,GAAex1B,GAEvB,OADA/G,EAAE,IAAU,EAAJg8B,EACDQ,GAAex8B,GAE1B,SAASy8B,EAAQ11B,EAAGi1B,GAChB,IAAIh8B,EAAIu8B,GAAex1B,GAEvB,OADA/G,EAAE,IAAMg8B,EACDQ,GAAex8B,GAE1B,SAAS08B,EAAM31B,EAAGi1B,GACd,IAAIh8B,EAAIu8B,GAAex1B,GAEvB,OADA/G,EAAE,IAAMg8B,EACDQ,GAAex8B,GAI1B,SAAS28B,EAAUC,EAAIC,GACnB,OAAOC,EAASF,EAAIC,GAAM,EAE9B,SAASC,EAASF,EAAIC,GAClB,OAAQA,EAAGE,UAAYH,EAAGG,WAAnB,MA6BX,SAASC,EAAcJ,EAAIC,GACvB,OAAII,GAASL,KAAQK,GAASJ,GACnBr6B,KAAK06B,MAAMJ,EAASF,EAAIC,IAE5B,KAGX,SAASM,EAAWp2B,GAChB,OAAOy1B,GAAe,CAClBz1B,EAAEq2B,iBACFr2B,EAAEs2B,cACFt2B,EAAEu2B,eA2CV,SAASC,EAAgBC,EAAQC,EAAM5zB,EAAKC,GACxC,IAAI4zB,EAAiBlB,GAAe,CAACiB,EAAM,EAAG,EAAIE,EAAgBF,EAAM5zB,EAAKC,KACzE8zB,EAAWT,EAAWK,GACtBK,EAAOr7B,KAAK06B,MAAMJ,EAASY,EAAgBE,IAC/C,OAAOp7B,KAAKs7B,MAAMD,EAAO,GAAK,EAGlC,SAASF,EAAgBF,EAAM5zB,EAAKC,GAEhC,IAAIi0B,EAAM,EAAIl0B,EAAMC,EAGpB,QADa,EAAI0yB,GAAe,CAACiB,EAAM,EAAGM,IAAMC,YAAcn0B,GAAO,EACrDk0B,EAAM,EAG1B,SAASE,GAAiBC,GACtB,MAAO,CACHA,EAAKC,cACLD,EAAKE,WACLF,EAAKG,UACLH,EAAKI,WACLJ,EAAKK,aACLL,EAAKM,aACLN,EAAKO,mBAGb,SAASC,GAAiB1+B,GACtB,OAAO,IAAI2+B,KAAK3+B,EAAE,GAAIA,EAAE,IAAM,EAAW,MAARA,EAAE,GAAa,EAAIA,EAAE,GACtDA,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGA,EAAE,IAAM,GAElC,SAASu8B,GAAe2B,GACpB,MAAO,CACHA,EAAKd,iBACLc,EAAKb,cACLa,EAAKZ,aACLY,EAAKU,cACLV,EAAKW,gBACLX,EAAKY,gBACLZ,EAAKa,sBAGb,SAASvC,GAAex8B,GAMpB,OAHiB,IAAbA,EAAE5X,SACF4X,EAAIA,EAAE/C,OAAO,CAAC,KAEX,IAAI0hC,KAAKA,KAAKK,IAAIpD,MAAM+C,KAAM3+B,IAGzC,SAASi/B,GAAYl4B,GACjB,OAAQm4B,MAAMn4B,EAAEg2B,WAEpB,SAASE,GAASl2B,GACd,OAAyB,IAAlBA,EAAE63B,cAAuB,GAAK,GACb,IAApB73B,EAAE83B,gBAAyB,GACP,IAApB93B,EAAE+3B,gBACF/3B,EAAEg4B,qBAGV,SAASI,GAAoBC,EAAOC,EAAOC,EAAgBC,GACvD,MAAO,CACHC,WAAYjF,IACZ6E,MAAOA,EACPC,MAAOA,EACPC,eAAkC,MAAlBA,EAAyB,KAAOA,EAChDC,aAA8B,MAAhBA,EAAuB,KAAOA,GAIpD,IAAI5N,GAAiBlxB,OAAOkW,UAAUgb,eAGtC,SAAS8N,GAAWC,EAAUC,GAC1B,IAAIC,EAAO,GACX,GAAID,EACA,IAAK,IAAIE,KAAUF,EAAiB,CAGhC,IAFA,IAAIG,EAAc,GAETh0C,EAAI4zC,EAASt3C,OAAS,EAAG0D,GAAK,EAAGA,GAAK,EAAG,CAC9C,IAAIymC,EAAMmN,EAAS5zC,GAAG+zC,GACtB,GAAmB,iBAARtN,GAAoBA,EAC3BuN,EAAYC,QAAQxN,QAEnB,QAAY7pC,IAAR6pC,EAAmB,CACxBqN,EAAKC,GAAUtN,EACf,OAIJuN,EAAY13C,SACZw3C,EAAKC,GAAUJ,GAAWK,IAKtC,IAASh0C,EAAI4zC,EAASt3C,OAAS,EAAG0D,GAAK,EAAGA,GAAK,EAAG,CAC9C,IAAIkrB,EAAQ0oB,EAAS5zC,GACrB,IAAK,IAAIk0C,KAAUhpB,EACTgpB,KAAUJ,IACZA,EAAKI,GAAUhpB,EAAMgpB,IAIjC,OAAOJ,EAEX,SAASK,GAAWC,EAAMhF,GACtB,IAAIiF,EAAW,GACf,IAAK,IAAIv/B,KAAOs/B,EACRhF,EAAKgF,EAAKt/B,GAAMA,KAChBu/B,EAASv/B,GAAOs/B,EAAKt/B,IAG7B,OAAOu/B,EAEX,SAASC,GAAQF,EAAMhF,GACnB,IAAImF,EAAU,GACd,IAAK,IAAIz/B,KAAOs/B,EACZG,EAAQz/B,GAAOs6B,EAAKgF,EAAKt/B,GAAMA,GAEnC,OAAOy/B,EAEX,SAASC,GAAYtgC,GAEjB,IADA,IAAIkgC,EAAO,GACFvsC,EAAK,EAAG4sC,EAAMvgC,EAAGrM,EAAK4sC,EAAIn4C,OAAQuL,IAEvCusC,EADWK,EAAI5sC,KACF,EAEjB,OAAOusC,EAUX,SAASM,GAAkBx+B,GACvB,IAAIhC,EAAI,GACR,IAAK,IAAIY,KAAOoB,EACZhC,EAAEnY,KAAKma,EAAIpB,IAEf,OAAOZ,EAEX,SAASygC,GAAa1F,EAAMC,GACxB,GAAID,IAASC,EACT,OAAO,EAEX,IAAK,IAAIp6B,KAAOm6B,EACZ,GAAIpJ,GAAexY,KAAK4hB,EAAMn6B,MACpBA,KAAOo6B,GACT,OAAO,EAInB,IAAK,IAAIp6B,KAAOo6B,EACZ,GAAIrJ,GAAexY,KAAK6hB,EAAMp6B,IACtBm6B,EAAKn6B,KAASo6B,EAAKp6B,GACnB,OAAO,EAInB,OAAO,EAEX,SAAS8/B,GAAgB3F,EAAMC,GAC3B,IAAIt6B,EAAO,GACX,IAAK,IAAIE,KAAOm6B,EACRpJ,GAAexY,KAAK4hB,EAAMn6B,KACpBA,KAAOo6B,GACTt6B,EAAK7Y,KAAK+Y,IAItB,IAAK,IAAIA,KAAOo6B,EACRrJ,GAAexY,KAAK6hB,EAAMp6B,IACtBm6B,EAAKn6B,KAASo6B,EAAKp6B,IACnBF,EAAK7Y,KAAK+Y,GAItB,OAAOF,EAEX,SAASigC,GAAYC,EAAUC,EAAUC,GAErC,QADsB,IAAlBA,IAA4BA,EAAgB,IAC5CF,IAAaC,EACb,OAAO,EAEX,IAAK,IAAIjgC,KAAOigC,EACZ,KAAIjgC,KAAOggC,IAgBKG,EAhBsBH,EAAShgC,GAgBzBogC,EAhB+BH,EAASjgC,GAgBlCqgC,EAhBwCH,EAAclgC,GAiBlFmgC,IAASC,IAAuB,IAAfC,GAGjBA,GACOA,EAAWF,EAAMC,KAnBpB,OAAO,EAcnB,IAAwBD,EAAMC,EAAMC,EAVhC,IAAK,IAAIrgC,KAAOggC,EACZ,KAAMhgC,KAAOigC,GACT,OAAO,EAGf,OAAO,EAsDX,SAASK,GAAgBC,EAAYC,EAAc3rC,GAC/C,IAAI4rC,EAAU5rC,EAAQ4rC,QAASC,EAAc7rC,EAAQ6rC,YAAar1B,EAAUxW,EAAQwW,QAChFs1B,EAAOJ,EAAWI,KAAMlqB,EAAY8pB,EAAW9pB,UAInD,IAAK,IAAI+nB,KADT/nB,EAAY4oB,GAAW5oB,EAAW,SAAUU,GAAY,OAAQwpB,EAAKxpB,EAASqnB,OAAOoC,eACnED,EAAM,CACpB,IAAIrqC,EAAMqqC,EAAKnC,GACf,GAAIloC,EAAIsqC,aAAc,CAClB,IAAIC,EAAWvqC,EAAIsqC,aAAaC,SAC3BA,IACDA,EAAWvqC,EAAIwqC,OACXz1B,EAAQ01B,2BACR11B,EAAQ21B,2BAGhB,IADA,IACSjuC,EAAK,EAAGkuC,EADJC,GAAsB5qC,EAAKuqC,EAAUL,EAAcC,EAASC,EAAYS,gBACjDpuC,EAAKkuC,EAASz5C,OAAQuL,IAAM,CAC5D,IAAIvG,EAAQy0C,EAASluC,GACjBokB,EAAWonB,GAAoBC,EAAO,CACtChyC,MAAOA,EACPC,IAAKg0C,EAAQv6C,IAAIsG,EAAOq0C,KAE5BpqB,EAAUU,EAASynB,YAAcznB,IAI7C,MAAO,CAAEwpB,KAAMA,EAAMlqB,UAAWA,GAKpC,SAASyqB,GAAsBE,EAAUP,EAAUL,EAAcC,EAASU,GACtE,IACIE,EADUF,EAAeC,EAASR,aAAaU,QAC7BC,OAAOH,EAASR,aAAaY,SAAU,CACzDh1C,MAAOi0C,EAAQgB,SAASjB,EAAah0C,MAAOq0C,GAC5Cp0C,IAAK+zC,EAAa/zC,KACnBg0C,GAKH,OAHIW,EAASN,SACTO,EAAUA,EAAQv0C,IAAIyvC,IAEnB8E,EAGX,IAAIK,GAAiB,CAAC,QAAS,SAAU,OAAQ,gBAC7CC,GAAW,2DAEf,SAASC,GAAeC,EAAOC,GAC3B,IAAI9zC,EACJ,MAAqB,iBAAV6zC,EAWf,SAAqB55B,GACjB,IAAI9B,EAAIw7B,GAASI,KAAK95B,GACtB,GAAI9B,EAAG,CACH,IAAI67B,EAAO77B,EAAE,IAAM,EAAI,EACvB,MAAO,CACH87B,MAAO,EACPh8B,OAAQ,EACRg3B,KAAM+E,GAAQ77B,EAAE,GAAK0sB,SAAS1sB,EAAE,GAAI,IAAM,GAC1C+7B,aAAcF,GAA0C,IAAjC77B,EAAE,GAAK0sB,SAAS1sB,EAAE,GAAI,IAAM,GAAU,GAAK,IAC5B,IAAjCA,EAAE,GAAK0sB,SAAS1sB,EAAE,GAAI,IAAM,GAAU,IACL,KAAjCA,EAAE,GAAK0sB,SAAS1sB,EAAE,GAAI,IAAM,IAC5BA,EAAE,GAAK0sB,SAAS1sB,EAAE,GAAI,IAAM,KAIzC,OAAO,KAzBIg8B,CAAYN,GAEF,iBAAVA,GAAsBA,EACtBO,GAAYP,GAEF,iBAAVA,EACAO,KAAap0C,EAAK,IAAO8zC,GAAQ,gBAAkBD,EAAO7zC,IAE9D,KAmBX,SAASo0C,GAAYhhC,GACjB,IAAIy/B,EAAW,CACXoB,MAAO7gC,EAAI6gC,OAAS7gC,EAAIy7B,MAAQ,EAChC52B,OAAQ7E,EAAI6E,QAAU7E,EAAIkF,OAAS,EACnC22B,KAAM77B,EAAI67B,MAAQ77B,EAAI+zB,KAAO,EAC7B+M,aAA6C,IAA9B9gC,EAAIihC,OAASjhC,EAAI2zB,MAAQ,GAAU,GAAK,IAChB,IAAlC3zB,EAAIkhC,SAAWlhC,EAAI6zB,QAAU,GAAU,IACL,KAAlC7zB,EAAImhC,SAAWnhC,EAAIohC,QAAU,IAC7BphC,EAAI8gC,cAAgB9gC,EAAIqhC,aAAerhC,EAAIshC,IAAM,IAEtDC,EAAQvhC,EAAIuhC,OAASvhC,EAAI4H,KAK7B,OAJI25B,IACA9B,EAAS5D,MAAgB,EAAR0F,EACjB9B,EAAS+B,gBAAiB,GAEvB/B,EAgBX,SAASgC,GAAaC,EAAIC,GACtB,MAAO,CACHd,MAAOa,EAAGb,MAAQc,EAAGd,MACrBh8B,OAAQ68B,EAAG78B,OAAS88B,EAAG98B,OACvBg3B,KAAM6F,EAAG7F,KAAO8F,EAAG9F,KACnBiF,aAAcY,EAAGZ,aAAea,EAAGb,cAW3C,SAASc,GAAiB3nC,EAAG+/B,GACzB,MAAO,CACH6G,MAAO5mC,EAAE4mC,MAAQ7G,EACjBn1B,OAAQ5K,EAAE4K,OAASm1B,EACnB6B,KAAM5hC,EAAE4hC,KAAO7B,EACf8G,aAAc7mC,EAAE6mC,aAAe9G,GAWvC,SAAS6H,GAAYC,GACjB,OAAOC,GAAUD,GAAO,MAQ5B,SAASC,GAAUD,GACf,OAAO,QAAAA,EAAIjB,MACP,OAAAiB,EAAIj9B,OACO,MAAXi9B,EAAIjG,KACJiG,EAAIhB,aAGZ,SAASkB,GAAqBC,EAAWC,GAErC,IADA,IAAI3nB,EAAM,KACDzwB,EAAI,EAAGA,EAAIw2C,GAAel6C,OAAQ0D,GAAK,EAAG,CAC/C,IAAI42C,EAAOJ,GAAex2C,GAC1B,GAAIo4C,EAAYxB,GAAO,CACnB,IAAIyB,EAAWF,EAAUvB,GAAQwB,EAAYxB,GAC7C,IAAK3G,EAAMoI,IAAsB,OAAR5nB,GAAgBA,IAAQ4nB,EAC7C,OAAO,KAEX5nB,EAAM4nB,OAEL,GAAIF,EAAUvB,GAEf,OAAO,KAGf,OAAOnmB,EAEX,SAAS6nB,GAA4BN,GACjC,IAAIR,EAAKQ,EAAIhB,aACb,GAAIQ,EAAI,CACJ,GAAIA,EAAK,KAAS,EACd,MAAO,CAAEZ,KAAM,cAAel9C,MAAO89C,GAEzC,GAAIA,EAAK,KAAgB,EACrB,MAAO,CAAEZ,KAAM,SAAUl9C,MAAO89C,EAAK,KAEzC,GAAIA,EAAK,MAAqB,EAC1B,MAAO,CAAEZ,KAAM,SAAUl9C,MAAO89C,EAAK,KAEzC,GAAIA,EACA,MAAO,CAAEZ,KAAM,OAAQl9C,MAAO89C,EAAK,MAG3C,OAAIQ,EAAIjG,KACAiG,EAAIN,gBAAkBM,EAAIjG,KAAO,GAAM,EAChC,CAAE6E,KAAM,OAAQl9C,MAAOs+C,EAAIjG,KAAO,GAEtC,CAAE6E,KAAM,MAAOl9C,MAAOs+C,EAAIjG,MAEjCiG,EAAIj9B,OACG,CAAE67B,KAAM,QAASl9C,MAAOs+C,EAAIj9B,QAEnCi9B,EAAIjB,MACG,CAAEH,KAAM,OAAQl9C,MAAOs+C,EAAIjB,OAE/B,CAAEH,KAAM,cAAel9C,MAAO,GAIzC,SAAS6+C,GAAe7G,EAAQ8G,EAAgBC,QACtB,IAAlBA,IAA4BA,GAAgB,GAChD,IAAI17B,EAAI20B,EAAOgH,cAcf,OAbA37B,EAAIA,EAAEpjB,QAAQ,OAAQ,IAClB8+C,IACA17B,EAAIA,EAAEpjB,QAAQ,aAAc,KAE5BojB,EAAEzgB,OAAS,KACW,MAAlBk8C,EACAz7B,EAAIA,EAAEpjB,QAAQ,IAAK,IAEK,IAAnB6+C,IACLz7B,EAAIA,EAAEpjB,QAAQ,IAAKg/C,GAAqBH,GAAgB,MAIzDz7B,EAKX,SAAS67B,GAAgBlH,GACrB,OAAOA,EAAOgH,cAAc/+C,QAAQ,OAAQ,IAGhD,SAASk/C,GAAoBnH,GACzB,OAAOlC,EAASkC,EAAOoB,cAAe,GAAK,IACvCtD,EAASkC,EAAOqB,gBAAiB,GAAK,IACtCvD,EAASkC,EAAOsB,gBAAiB,GAEzC,SAAS2F,GAAqBvB,EAAS0B,QACrB,IAAVA,IAAoBA,GAAQ,GAChC,IAAIhC,EAAOM,EAAU,EAAI,IAAM,IAC3B2B,EAAMriC,KAAKqiC,IAAI3B,GACfD,EAAQzgC,KAAKs7B,MAAM+G,EAAM,IACzBC,EAAOtiC,KAAK06B,MAAM2H,EAAM,IAC5B,OAAID,EACOhC,EAAOtH,EAAS2H,EAAO,GAAK,IAAM3H,EAASwJ,EAAM,GAErD,MAAQlC,EAAOK,GAAS6B,EAAO,IAAMxJ,EAASwJ,EAAM,GAAK,IAkBpE,SAASC,GAAcC,EAAIvU,EAAIwU,GAC3B,GAAID,IAAOvU,EACP,OAAO,EAEX,IACI3kC,EADAyvC,EAAMyJ,EAAG58C,OAEb,GAAImzC,IAAQ9K,EAAGroC,OACX,OAAO,EAEX,IAAK0D,EAAI,EAAGA,EAAIyvC,EAAKzvC,GAAK,EACtB,KAAMm5C,EAAeA,EAAaD,EAAGl5C,GAAI2kC,EAAG3kC,IAAMk5C,EAAGl5C,KAAO2kC,EAAG3kC,IAC3D,OAAO,EAGf,OAAO,EAGX,SAASo5C,GAAQC,EAAYC,EAAaC,GACtC,IAAIC,EACAC,EACJ,OAAO,WAEH,IADA,IAAIC,EAAU,GACL7xC,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC6xC,EAAQ7xC,GAAM4J,UAAU5J,GAE5B,GAAK2xC,GAGA,IAAKP,GAAcO,EAAaE,GAAU,CACvCH,GACAA,EAAaE,GAEjB,IAAIhpB,EAAM4oB,EAAWvJ,MAAM33C,KAAMuhD,GAC5BJ,GAAgBA,EAAY7oB,EAAKgpB,KAClCA,EAAahpB,SARjBgpB,EAAaJ,EAAWvJ,MAAM33C,KAAMuhD,GAYxC,OADAF,EAAcE,EACPD,GAGf,SAASE,GAAcN,EAAYC,EAAaC,GAC5C,IACIK,EACAH,EAFAI,EAAQ1hD,KAGZ,OAAO,SAAU2hD,GACb,GAAKF,GAGA,IAAKjF,GAAaiF,EAAYE,GAAS,CACpCP,GACAA,EAAaE,GAEjB,IAAIhpB,EAAM4oB,EAAWhsB,KAAKwsB,EAAOC,GAC5BR,GAAgBA,EAAY7oB,EAAKgpB,KAClCA,EAAahpB,SARjBgpB,EAAaJ,EAAWhsB,KAAKwsB,EAAOC,GAYxC,OADAF,EAAaE,EACNL,GAiEf,IAAIM,GAAmC,CACnCj8B,KAAM,EACNk8B,UAAW,EACXC,eAAgB,EAChBnQ,SAAU,EACVoQ,WAAY,GAEZC,GAAgC,CAChCC,aAAc,EACdC,IAAK,EACL1I,KAAM,EACNv2B,MAAO,EACP6uB,IAAK,EACLqQ,QAAS,EACTzQ,KAAM,EACNE,OAAQ,EACRuN,OAAQ,GAERiD,GAAc,oBACdC,GAAW,KACXC,GAAiB,OACjBC,GAAS,UACTC,GAAS,UACTC,GAAiC,WACjC,SAASA,EAAgBC,GACrB,IAAIC,EAAoB,GACpBC,EAAmB,GACnBC,EAAW,EACf,IAAK,IAAIjH,KAAU8G,EACX9G,KAAUgG,IACVgB,EAAiBhH,GAAU8G,EAAe9G,GAC1CiH,EAAWtkC,KAAKukC,IAAIlB,GAAiChG,GAASiH,KAG9DF,EAAkB/G,GAAU8G,EAAe9G,GACvCA,KAAUoG,KACVa,EAAWtkC,KAAKukC,IAAId,GAA8BpG,GAASiH,KAIvE7iD,KAAK2iD,kBAAoBA,EACzB3iD,KAAK4iD,iBAAmBA,EACxB5iD,KAAK6iD,SAAWA,EAChB7iD,KAAK+iD,oBAAsB9B,GAAQ8B,IAkDvC,OAhDAN,EAAgB/vB,UAAU3P,OAAS,SAAUk3B,EAAMzoC,GAC/C,OAAOxR,KAAK+iD,oBAAoB/iD,KAAK2iD,kBAAmB3iD,KAAK4iD,iBAAkBpxC,EAAxExR,CAAiFi6C,IAE5FwI,EAAgB/vB,UAAUswB,YAAc,SAAU75C,EAAOC,EAAKoI,EAASyxC,GACnE,IAqK2BxD,EAAIC,EAAIwD,EArKpBP,EAAN3iD,KAA6B2iD,kBAAmBC,EAAhD5iD,KAAsE4iD,iBAC3EO,GAoK2BzD,EApK4Bt2C,EAAImwC,QAoK5B2J,EApKoC1xC,EAAQ4xC,gBAqK5EC,cADwB5D,EApKkBt2C,EAAMowC,UAqK1B2J,EAAGG,cAAc3D,GACnC,EAEPwD,EAAGI,eAAe7D,KAAQyD,EAAGI,eAAe5D,GACrC,EAEPwD,EAAGK,aAAa9D,KAAQyD,EAAGK,aAAa7D,GACjC,EAEP1G,GAASyG,KAAQzG,GAAS0G,GACnB,EAEJ,GAhLH,IAAKyD,EACD,OAAOnjD,KAAK+iB,OAAO5Z,EAAOqI,GAE9B,IAAIgyC,EAAwBL,IACxBK,EAAwB,IACI,YAA3Bb,EAAkBnJ,MAAiD,YAA3BmJ,EAAkBnJ,MAC9B,YAA5BmJ,EAAkB1/B,OAAmD,YAA5B0/B,EAAkB1/B,OACjC,YAA1B0/B,EAAkB7Q,KAA+C,YAA1B6Q,EAAkB7Q,MAC1D0R,EAAwB,GAE5B,IAAIC,EAAQzjD,KAAK+iB,OAAO5Z,EAAOqI,GAC3BkyC,EAAQ1jD,KAAK+iB,OAAO3Z,EAAKoI,GAC7B,GAAIiyC,IAAUC,EACV,OAAOD,EAEX,IACIE,EAAwBZ,GAkKpC,SAAyC/6B,EAAS47B,GAC9C,IAAIC,EAAiB,GACrB,IAAK,IAAI9H,KAAU/zB,KACT+zB,KAAUiG,KACZA,GAA8BjG,IAAW6H,KACzCC,EAAe9H,GAAU/zB,EAAQ+zB,IAGzC,OAAO8H,EA3KoBC,CAAgCnB,EAAmBa,GACRZ,EAAkBpxC,GAChFuyC,EAAWJ,EAAsBx6C,GACjC66C,EAAWL,EAAsBv6C,GACjC66C,EAyKZ,SAA6BR,EAAOM,EAAUL,EAAOM,GAEjD,IADA,IAAIE,EAAK,EACFA,EAAKT,EAAMt/C,QAAQ,CACtB,IAAIggD,EAASV,EAAMx6C,QAAQ86C,EAAUG,GACrC,IAAgB,IAAZC,EACA,MAMJ,IAJA,IAAIC,EAAUX,EAAMlM,OAAO,EAAG4M,GAE1BE,EAASZ,EAAMlM,OADnB2M,EAAKC,EAASJ,EAAS5/C,QAEnBmgD,EAAK,EACFA,EAAKZ,EAAMv/C,QAAQ,CACtB,IAAIogD,EAASb,EAAMz6C,QAAQ+6C,EAAUM,GACrC,IAAgB,IAAZC,EACA,MAEJ,IAAIC,EAAUd,EAAMnM,OAAO,EAAGgN,GAE1BE,EAASf,EAAMnM,OADnB+M,EAAKC,EAASP,EAAS7/C,QAEvB,GAAIigD,IAAYI,GAAWH,IAAWI,EAClC,MAAO,CACHC,OAAQN,EACRO,MAAON,IAKvB,OAAO,KApMaO,CAAoBnB,EAAOM,EAAUL,EAAOM,GACxDnC,EAAYe,EAAiBf,WAAaoB,GAA0BzxC,EAAQqzC,kBAAoB,GACpG,OAAIZ,EACOA,EAAUS,OAASX,EAAWlC,EAAYmC,EAAWC,EAAUU,MAEnElB,EAAQ5B,EAAY6B,GAE/BjB,EAAgB/vB,UAAUoyB,eAAiB,WACvC,OAAQ9kD,KAAK6iD,UACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,OACX,KAAK,EACD,MAAO,QACX,KAAK,EACD,MAAO,OACX,KAAK,EACD,MAAO,MACX,QACI,MAAO,SAGZJ,EAtE0B,GAwErC,SAASM,GAAoBJ,EAAmBC,EAAkBpxC,GAC9D,IAAIuzC,EAAsBvoC,OAAOC,KAAKkmC,GAAmBx+C,OACzD,OAA4B,IAAxB4gD,GAAgE,UAAnCpC,EAAkBV,aACxC,SAAUhI,GAAQ,OAAQuG,GAAqBvG,EAAKoG,iBAEnC,IAAxB0E,GAA6BnC,EAAiBj9B,KACvC,SAAUs0B,GAAQ,OA4FP+K,EA5FgCxzC,EAAQyzC,kBAAkBhL,EAAKV,QA4F1D2L,EA5FmE1zC,EAAQ0zC,SA4FnDC,EA5FmF3zC,EAAQ2zC,OA6F1IC,EAAQ,GACI,UAF2CryC,EA5F2F6vC,EAAiBj9B,MA+FnKy/B,EAAMxhD,KA/FsG4N,EAAQ6zC,cAiGnG,UAAZtyC,GAAmC,WAAZA,GAC5BqyC,EAAMxhD,KAAKshD,GAEC,SAAZnyC,GAAkC,UAAZA,GACtBqyC,EAAMxhD,KAAK,KAEfwhD,EAAMxhD,KAAKuhD,EAAOG,mBAAmBviC,OAAOiiC,IACX,QAA7BG,EAAOn9B,QAAQhhB,WACfo+C,EAAMv7C,UAEHu7C,EAAMpV,KAAK,IAftB,IAA0BgV,EAAKE,EAAwBC,EAAQpyC,EACvDqyC,GAzFR,SAAmCzC,EAAmBC,EAAkBpxC,GACpEmxC,EAAoB3M,YAAS,GAAI2M,GACjCC,EAAmB5M,YAAS,GAAI4M,GAuBpC,SAA0BD,EAAmBC,GAGrCD,EAAkBV,eACbU,EAAkBjR,OACnBiR,EAAkBjR,KAAO,WAExBiR,EAAkB/Q,SACnB+Q,EAAkB/Q,OAAS,YAII,SAAnC+Q,EAAkBV,eAClBU,EAAkBV,aAAe,SAGjCW,EAAiBd,iBAAmBa,EAAkBxD,QAAUwD,EAAkBvD,qBAC3EwD,EAAiBd,eAvC5ByD,CAAiB5C,EAAmBC,GACpCD,EAAkB6C,SAAW,MAC7B,IACIC,EADAC,EAAe,IAAIC,KAAKC,eAAep0C,EAAQ2zC,OAAOU,MAAOlD,GAEjE,GAAIC,EAAiBd,eAAgB,CACjC,IAAIgE,EAAY9P,YAAS,GAAI2M,UACtBmD,EAAUlU,OACjB6T,EAAa,IAAIE,KAAKC,eAAep0C,EAAQ2zC,OAAOU,MAAOC,GAE/D,OAAO,SAAU7L,GACb,IAAIV,EAASU,EAAKV,OASlB,OAuBR,SAAqB30B,EAAGq1B,EAAM0I,EAAmBC,EAAkBpxC,GA6B/D,OA5BAoT,EAAIA,EAAEpjB,QAAQ+gD,GAAQ,IACiB,UAAnCI,EAAkBV,eAClBr9B,EA4BR,SAAsBA,EAAGmhC,GACrB,IAAIC,GAAW,EASf,OARAphC,EAAIA,EAAEpjB,QAAQghD,GAAQ,WAElB,OADAwD,GAAW,EACJD,IAGNC,IACDphC,GAAK,IAAMmhC,GAERnhC,EAtCCqhC,CAAarhC,EAAyB,QAArBpT,EAAQg0C,UAA6C,MAAvBvL,EAAKoG,eACpD,MACAG,GAAqBvG,EAAKoG,kBAE9BuC,EAAiBb,aACjBn9B,EAAIA,EAAEpjB,QAAQ6gD,GAAU,IAAIvlC,QAE5B8lC,EAAiBd,iBACjBl9B,EAAIA,EAAEpjB,QAAQ,MAAO,MAIS,IAA9BohD,EAAiBjR,SACjB/sB,EAAIA,EAAEpjB,QAAQ4gD,GAAa,IAAItlC,OAEI,WAA9B8lC,EAAiBjR,SACtB/sB,EAAIA,EAAEpjB,QAAQ4gD,GAAa,SAAUzJ,EAAIC,GAAM,OAAOA,EAAGsN,sBAEtB,UAA9BtD,EAAiBjR,SACtB/sB,EAAIA,EAAEpjB,QAAQ4gD,GAAa,SAAUzJ,EAAIC,GAAM,OAAOA,EAAGsN,oBAAsB,MAE5C,cAA9BtD,EAAiBjR,WACtB/sB,EAAIA,EAAEpjB,QAAQ4gD,GAAa,SAAUzJ,GAAM,OAAOA,EAAGuN,wBAEzDthC,EAAIA,EAAEpjB,QAAQ8gD,GAAgB,MACxBxlC,OAnDKqpC,EAPHV,IAAelM,EAAOqB,gBACb6K,EAGAC,GAEE3iC,OAAOw2B,GACAU,EAAM0I,EAAmBC,EAAkBpxC,IAxB9D40C,CAA0BzD,EAAmBC,EAAkBpxC,GAsK1E,SAAS60C,GAAkBC,EAAUlD,GACjC,IAAIrnC,EAAIqnC,EAAemD,cAAcD,EAAS/M,QAC9C,MAAO,CACHA,OAAQ+M,EAAS/M,OACjB8G,eAAgBiG,EAASjG,eACzBtnC,MAAOgD,EACPy9B,KAAMz9B,EAAE,GACRkH,MAAOlH,EAAE,GACT+1B,IAAK/1B,EAAE,GACP21B,KAAM31B,EAAE,GACR61B,OAAQ71B,EAAE,GACVojC,OAAQpjC,EAAE,GACVqjC,YAAarjC,EAAE,IAIvB,SAASyqC,GAA2Br9C,EAAOC,EAAKoI,EAASyxC,GACrD,IAAIwD,EAAYJ,GAAkBl9C,EAAOqI,EAAQ4xC,gBAEjD,MAAO,CACHnJ,KAAMwM,EACNt9C,MAAOs9C,EACPr9C,IAJUA,EAAMi9C,GAAkBj9C,EAAKoI,EAAQ4xC,gBAAkB,KAKjEoC,SAAUh0C,EAAQg0C,SAClBkB,YAAal1C,EAAQ2zC,OAAOU,MAC5BhB,iBAAkB5B,GAA0BzxC,EAAQqzC,kBAW5D,IAAI8B,GAA8B,WAC9B,SAASA,EAAaC,GAClB5mD,KAAK4mD,OAASA,EAQlB,OANAD,EAAaj0B,UAAU3P,OAAS,SAAUk3B,EAAMzoC,EAASyxC,GACrD,OAAOzxC,EAAQq1C,aAAa7mD,KAAK4mD,OAAQJ,GAA2BvM,EAAM,KAAMzoC,EAASyxC,KAE7F0D,EAAaj0B,UAAUswB,YAAc,SAAU75C,EAAOC,EAAKoI,EAASyxC,GAChE,OAAOzxC,EAAQq1C,aAAa7mD,KAAK4mD,OAAQJ,GAA2Br9C,EAAOC,EAAKoI,EAASyxC,KAEtF0D,EAVuB,GAa9BG,GAA+B,WAC/B,SAASA,EAAc7P,GACnBj3C,KAAKi3C,KAAOA,EAQhB,OANA6P,EAAcp0B,UAAU3P,OAAS,SAAUk3B,EAAMzoC,EAASyxC,GACtD,OAAOjjD,KAAKi3C,KAAKuP,GAA2BvM,EAAM,KAAMzoC,EAASyxC,KAErE6D,EAAcp0B,UAAUswB,YAAc,SAAU75C,EAAOC,EAAKoI,EAASyxC,GACjE,OAAOjjD,KAAKi3C,KAAKuP,GAA2Br9C,EAAOC,EAAKoI,EAASyxC,KAE9D6D,EAVwB,GAanC,SAASC,GAAgBvI,GACrB,MAAqB,iBAAVA,GAAsBA,EACtB,IAAIiE,GAAgBjE,GAEV,iBAAVA,EACA,IAAImI,GAAanI,GAEP,mBAAVA,EACA,IAAIsI,GAActI,GAEtB,KAKX,IAAIwI,GAAuB,CACvBC,gBAAiBC,GACjBC,iBAAkBD,GAClB1J,SAAUe,GACV6I,qBAAsBF,GACtBG,YAAaH,GACbI,cAAeJ,GACfxJ,2BAA4Ba,GAC5BZ,0BAA2BY,GAC3BgJ,iBAAkBhJ,GAClBiJ,WAAYjJ,GACZkJ,gBAAiBC,QACjBC,YAAapJ,GACbqJ,YAAarJ,GACbsJ,iBAAkBd,GAClBe,aAAcvJ,GACdwJ,aAAcxJ,GACdyJ,cAAed,GACfe,cAAef,GACfgB,sBAAuB7Y,OACvB8Y,oBAAqB9Y,OACrB+Y,mBAAoBV,QACpBW,WAAYX,QACZY,gBAAiBvB,GACjBwB,oBAAqBrB,GACrBsB,iBAAkBtB,GAClBuB,kBAAmBvB,GACnBwB,qBAAsBxB,GACtByB,kBAAmBzB,GACnB0B,eAAgB1B,GAChB2B,gBAAiB3B,GACjB4B,mBAAoB5B,GACpB6B,YAAa1Z,OACb2Z,YAAar6C,OACbs6C,SAAUvB,QACVwB,sBAAuBhC,GACvBiC,YAAazB,QACb0B,qBAAsBlC,GACtBmC,kBAAmBnC,GACnBoC,mBAAoBpC,GACpBqC,sBAAuBrC,GACvBsC,SAAU9B,QACV+B,eAAgBvC,GAChBwC,aAAcxC,GACdyC,gBAAiBzC,GACjB0C,aAAclC,QACdmC,uBAAwB3C,GACxB4C,oBAAqB5C,GACrB6C,qBAAsB7C,GACtB8C,wBAAyB9C,GACzB+C,oBAAqBvC,QACrBwC,aAAcxC,QACdyC,WAAY9a,OACZ+a,SAAU/a,OACVgb,cAAehb,OACfmW,SAAUnW,OACVib,QAASpD,GACT/B,OAAQ+B,GACRqD,YAAalb,OACbmb,mBAAoB77C,OACpB87C,WAAY/C,QACZgD,uBAAwBhD,QACxBiD,aAAcjD,QACdkD,WAAY1D,GACZ2D,WAvuCJ,SAAyBrM,GACrB,IAEI32C,EACAhD,EAHAimD,EAAQ,GACRC,EAAS,GAYb,IATqB,iBAAVvM,EACPuM,EAASvM,EAAMj8B,MAAM,WAEC,mBAAVi8B,EACZuM,EAAS,CAACvM,GAELj0C,MAAMyL,QAAQwoC,KACnBuM,EAASvM,GAER32C,EAAI,EAAGA,EAAIkjD,EAAO5mD,OAAQ0D,GAAK,EAEX,iBADrBhD,EAAQkmD,EAAOljD,IAEXijD,EAAMlnD,KAAyB,MAApBiB,EAAMkrC,OAAO,GACpB,CAAEmH,MAAOryC,EAAMmmD,UAAU,GAAI5T,OAAQ,GACrC,CAAEF,MAAOryC,EAAOuyC,MAAO,IAEL,mBAAVvyC,GACZimD,EAAMlnD,KAAK,CAAEqzC,KAAMpyC,IAG3B,OAAOimD,GA+sCPG,iBAAkBvD,QAClBwD,mBAAoBxD,QACpByD,kBAAmBx8C,OACnBy8C,eAAgBz8C,OAChB08C,qBAAsB18C,OACtB28C,WAAY5D,QACZl9C,OAAQ08C,GACRqE,cAAerE,GACflgD,UAAWqoC,OACXmc,iBAAkBzE,GAClB0E,wBAAyB/D,QACzBgE,iBAAkBhE,QAClBiE,gBAAiBjE,QACjBxC,SAAU7V,OACVgW,aAAchW,OACduc,0BAA2BlE,QAC3BmE,cAAe3E,GACf4E,YAAa5E,GACb6E,IAAK7E,GACL8E,mBAAoB9E,GACpB+E,kBAAmB/E,GACnBgF,sBAAuBhF,GACvBiF,WAAYjF,GACZkF,cAAe1E,QACf2E,mBAAoBnF,GACpBoF,mBAAoBpF,GACpBqF,aAAcld,OACdmd,mBAAoB9E,QACpB+E,sBAAuB/E,QACvBgF,aAAcxF,GACdyF,gBAAiBzF,GACjB0F,WAAY1F,GACZ2F,qBAAsBxd,OACtByd,iBAAkBzd,OAClB0d,eAAgB1d,OAChB2d,WAAY3d,OACZ4d,gBAAiB/F,GACjBgG,aAAchG,GACdiG,cAAejG,GACfkG,iBAAkBlG,GAClBmG,iBAAkBnG,GAClBoG,cAAepG,GACfqG,YAAarG,GACbsG,UAAW9F,QACX+F,eAAgBpe,OAChBqe,gBAAiBxG,GACjByG,mBAAoBzG,GACpB0G,gBAAiB1G,GACjB2G,iBAAkB3G,GAClB4G,oBAAqB5G,GACrB6G,oBAAqB7G,GACrB8G,iBAAkB9G,GAClB+G,kBAAmB/G,GACnBgH,qBAAsBhH,GACtBiH,aAAcjH,GACdkH,gBAAiBlH,GACjBmH,YAAa1/C,OACb2/C,kBAAmB/P,GACnBgQ,WAAYlf,OACZmf,iBAAkBtH,GAClBuH,cAAevH,GACfwH,eAAgBxH,GAChByH,kBAAmBzH,GACnB0H,aAAcjgD,OACdkgD,SAAUnH,QACVoH,gBAAiB/H,GACjBgI,cAAepgD,OACfqgD,aAAc9H,GACd+H,aAAc/H,GACdgI,kBAAmBvgD,OACnBwgD,WAAYzH,QACZ0H,qBAAsBzgD,OACtB0gD,oBAAqB1gD,OACrB2gD,aAAc5H,QACd6H,cAAe5gD,OACf6gD,eAAgB7gD,OAChB8gD,cAAe9gD,OACf+gD,iBAAkB/gD,OAClBghD,iBAAkBjI,QAClBkI,QAAS1I,GACT2I,SAAUlhD,OACVmhD,SAAUnhD,OACVohD,cAAe1gB,OACf2gB,cAAezR,GACf0R,WAAY/I,GACZgJ,UAAWxI,QACXyI,eAAgBzI,QAChB0I,WAAYlJ,GACZmJ,aAAcnJ,GACdoJ,YAAapJ,GACbqJ,iBAAkB7I,QAElB8I,aAAcnhB,OACdohB,SAAUvJ,GACVwJ,YAAaxJ,GACbyJ,UAAWthB,OACXuhB,SAAUvhB,OACVwhB,UAAWxhB,OACXyhB,cAAe5J,GACf6J,mBAAoB7J,GACpB8J,gBAAiB9J,GACjB+J,iBAAkB/J,GAClBgK,oBAAqBhK,IAIrBiK,GAAuB,CACvB5E,aAAc,OACdrE,sBAAuB,MACvBC,oBAAqB,WACrBxK,0BAA2B,WAC3BD,2BAA4B,CAAE5L,IAAK,GACnCsW,oBAAoB,EACpBb,iBAAkB,WAClBc,YAAY,EACZU,YAAa,GACbC,YAAa,KACbhB,cAAe,CACX7+C,MAAO,QACPioD,OAAQ,GACRhoD,IAAK,mBAET6/C,UAAU,EACVE,aAAa,EACbD,sBAAuB,QACvBM,UAAU,EACVI,cAAc,EACdpC,WAAY,WACZC,iBAAiB,EACjBE,YAAa,WACbC,YAAa,WACbqC,qBAAqB,EACrBC,cAAc,EACdC,WAAY,QACZC,SAAU,MACVC,cAAe,WACf7E,SAAU,QACV8E,QAAS,GACTnF,OAAQ,GACRoF,YAAa,WACbC,mBAAoB,IACpBC,YAAY,EACZC,wBAAwB,EACxBC,cAAc,EACdC,WAAY,IACZC,WAAY,+BACZhD,iBAAkB,CAAE5kC,MAAO,OAAQ6uB,IAAK,UAAW0H,KAAM,WACzD0R,oBAAoB,EACpBC,kBAAmB,IACnBC,eAAgB,IAChBC,qBAAsB,EACtBC,YAAY,EACZuD,UAAU,EACVM,YAAY,EACZK,eAAgB,GAChBC,cAAe,GACfC,iBAAkB,IAIlB2B,GAA6B,CAC7BC,SAAUpK,GACVqK,UAAWrK,GACXsK,SAAUtK,GACVuK,YAAavK,GACbwK,YAAaxK,GACbyK,aAAczK,GACd0K,WAAY1K,GACZ2K,gBAAiB3K,GACjB4K,gBAAiB5K,GACjBjnB,OAAQinB,GACR6K,SAAU7K,GACV8K,QAAS9K,GAET+K,SAAU/K,GACVgL,aAAchL,GACdiL,YAAajL,GACbkL,aAAclL,GACdmL,eAAgBnL,GAChBoL,QAASpL,GACTqL,eAAgBrL,IAIhBsL,GAA2B,CAC3BC,WAAYvL,GACZwL,YAAaxL,GACbyL,MAAOzL,GACP0I,QAAS1I,GACT0L,cAAe1L,GACf2L,OAAQ3L,GACR4L,aAAc5L,IAEd6L,GAA6B,CAC7B/K,cAAegL,GACf/K,cAAe+K,GACfP,WAAYO,GACZN,YAAaM,GACb3L,YAAa2L,GACbhD,cAAegD,IAEnB,SAASA,GAAoBj3C,EAAGC,GAC5B,MAAiB,iBAAND,GAA+B,iBAANC,GAAkBD,GAAKC,EAChDwgC,GAAazgC,EAAGC,GAEpBD,IAAMC,EAIjB,IAAIi3C,GAAuB,CACvBvyD,KAAM2uC,OACNpwB,UAAWioC,GACXuL,WAAYpjB,OACZ6jB,cAAe7jB,OACf8jB,0BAA2BjM,GAC3BkM,eAAgB1L,QAChB2L,WAAYnM,GACZoM,QAASpM,GACTqM,SAAUrM,GACVsM,YAAatM,IAIjB,SAASuM,GAAgBC,GACrB,OAAOlY,GAAWkY,EAAYX,IAElC,SAASY,GAAYnV,EAAOoV,GACxB,IAAIC,EAAU,GACVC,EAAQ,GACZ,IAAK,IAAIhf,KAAY8e,EACb9e,KAAY0J,IACZqV,EAAQ/e,GAAY8e,EAAS9e,GAAU0J,EAAM1J,KAGrD,IAAK,IAAIA,KAAY0J,EACX1J,KAAY8e,IACdE,EAAMhf,GAAY0J,EAAM1J,IAGhC,MAAO,CAAE+e,QAASA,EAASC,MAAOA,GAEtC,SAAS5M,GAAS6M,GACd,OAAOA,EAGX,SAASC,GAAYC,EAAWC,EAAa1iD,EAAS2iD,GAGlD,IAFA,IAAIjX,EAwCG,CAAEI,KAAM,GAAIlqB,UAAW,IAvC1BghC,EAAgBC,GAAmB7iD,GAC9B9B,EAAK,EAAG4kD,EAAcL,EAAWvkD,EAAK4kD,EAAYnwD,OAAQuL,IAAM,CACrE,IACI6kD,EAAQC,GADGF,EAAY5kD,GACMwkD,EAAa1iD,EAAS2iD,EAAgBC,GACnEG,GACAE,GAAkBF,EAAOrX,GAGjC,OAAOA,EAEX,SAASuX,GAAkBF,EAAOrX,GAM9B,YALmB,IAAfA,IAAyBA,EA4BtB,CAAEI,KAAM,GAAIlqB,UAAW,KA3B9B8pB,EAAWI,KAAKiX,EAAMthD,IAAIkoC,OAASoZ,EAAMthD,IACrCshD,EAAMzgC,WACNopB,EAAW9pB,UAAUmhC,EAAMzgC,SAASynB,YAAcgZ,EAAMzgC,UAErDopB,EAKX,SAASwX,GAAkBxX,EAAY3B,GACnC,IAAIznB,EAAWopB,EAAW9pB,UAAUmoB,GACpC,GAAIznB,EAAU,CACV,IAAI6gC,EAAQzX,EAAWI,KAAKxpB,EAASqnB,OAEjCyZ,EAAWC,GAAqB3X,EAAY,SAAU4X,GAAW,OASjDC,EAT2EJ,EAU5FjN,QAAQqN,EAAKC,SAAWD,EAAKC,UAVsEF,EAUrDE,SADzD,IAA4BD,IAJpB,OAFAH,EAAStX,KAAKqX,EAAMxZ,OAASwZ,EAC7BC,EAASxhC,UAAUU,EAASynB,YAAcznB,EACnC8gC,EAEX,MAMO,CAAEtX,KAAM,GAAIlqB,UAAW,IADlC,SAAS6hC,KACL,MAAO,CAAE3X,KAAM,GAAIlqB,UAAW,IAElC,SAAS8hC,GAAiBC,EAAQC,GAC9B,MAAO,CACH9X,KAAMtH,YAASA,YAAS,GAAImf,EAAO7X,MAAO8X,EAAO9X,MACjDlqB,UAAW4iB,YAASA,YAAS,GAAImf,EAAO/hC,WAAYgiC,EAAOhiC,YAGnE,SAASyhC,GAAqB3X,EAAYmY,GACtC,IAAI/X,EAAOtB,GAAWkB,EAAWI,KAAM+X,GACnCjiC,EAAY4oB,GAAWkB,EAAW9pB,UAAW,SAAUU,GAAY,OAAQwpB,EAAKxpB,EAASqnB,SAE7F,MAAO,CAAEmC,KAAMA,EAAMlqB,UAAWA,GAqCpC,SAASkiC,GAAgBvB,GACrB,OAAIxpD,MAAMyL,QAAQ+9C,GACPA,EAEQ,iBAARA,EACAA,EAAIxxC,MAAM,OAEd,GAMX,IAAIgzC,GAAoB,CACpBxiD,QAASs8B,OACTma,SAAU9B,QACV8N,cAAe9N,QACf+N,iBAAkB/N,QAClBgO,WAAYxO,GACZyO,QAASzO,GACT0O,MAAO1O,GACPr/B,UAAWytC,GACXjC,WAAYiC,GACZO,MAAOxmB,OACPymB,gBAAiBzmB,OACjB0mB,YAAa1mB,OACb2mB,UAAW3mB,QAEX4mB,GAAiB,CACjBljD,QAAS,KACTyiD,cAAe,KACfC,iBAAkB,KAClBS,YAAa,GACbP,QAAS,KACTQ,OAAQ,GACRL,gBAAiB,GACjBC,YAAa,GACbC,UAAW,GACX3C,WAAY,IAEhB,SAAS+C,GAAcvC,EAASriD,GAC5B,IAAIkkD,EAtDR,SAA6BlX,EAAOhtC,GAChC,OAAIjH,MAAMyL,QAAQwoC,GACPwV,GAAYxV,EAAO,KAAMhtC,GAAS,GAExB,iBAAVgtC,GAAsBA,EACtBwV,GAAY,CAACxV,GAAQ,KAAMhtC,GAAS,GAElC,MAATgtC,EACOnP,OAAOmP,GAEX,KA4CU6X,CAAoBxC,EAAQ6B,WAAYlkD,GACzD,MAAO,CACHuB,QAAS8gD,EAAQ9gD,SAAW,KAC5ByiD,cAAwC,MAAzB3B,EAAQ2B,cAAwB3B,EAAQ2B,cAAgB3B,EAAQrK,SAC/EiM,iBAA8C,MAA5B5B,EAAQ4B,iBAA2B5B,EAAQ4B,iBAAmB5B,EAAQrK,SACxF0M,YAA2B,MAAdR,EAAqB,CAACA,GAAc,GACjDC,QAA4B,MAAnB9B,EAAQ8B,QAAkB9B,EAAQ8B,QAAU,KACrDQ,OAAyB,MAAjBtC,EAAQ+B,MAAgB,CAAC/B,EAAQ+B,OAAS,GAClDE,gBAAiBjC,EAAQiC,iBAAmBjC,EAAQgC,OAAS,GAC7DE,YAAalC,EAAQkC,aAAelC,EAAQgC,OAAS,GACrDG,UAAWnC,EAAQmC,WAAa,GAChC3C,YAAaQ,EAAQhsC,WAAa,IAAI7O,OAAO66C,EAAQR,YAAc,KAI3E,SAASiD,GAAgBC,GACrB,OAAOA,EAAI9gD,OAAO+gD,GAAoBP,IAE1C,SAASO,GAAmBC,EAAOC,GAC/B,MAAO,CACH3jD,QAA0B,MAAjB2jD,EAAM3jD,QAAkB2jD,EAAM3jD,QAAU0jD,EAAM1jD,QACvDyiD,cAAsC,MAAvBkB,EAAMlB,cAAwBkB,EAAMlB,cAAgBiB,EAAMjB,cACzEC,iBAA4C,MAA1BiB,EAAMjB,iBAA2BiB,EAAMjB,iBAAmBgB,EAAMhB,iBAClFS,YAAaO,EAAMP,YAAYl9C,OAAO09C,EAAMR,aAC5CP,QAAkC,kBAAlBe,EAAMf,QAAwBe,EAAMf,QAAUc,EAAMd,QACpEQ,OAAQM,EAAMN,OAAOn9C,OAAO09C,EAAMP,QAClCL,gBAAiBY,EAAMZ,iBAAmBW,EAAMX,gBAChDC,YAAaW,EAAMX,aAAeU,EAAMV,YACxCC,UAAWU,EAAMV,WAAaS,EAAMT,UACpC3C,WAAYoD,EAAMpD,WAAWr6C,OAAO09C,EAAMrD,aAIlD,IAAIsD,GAA0B,CAC1B3wC,GAAIqpB,OACJ2lB,QAAS3lB,OACTunB,MAAOvnB,OACP8E,IAAK9E,OACLwnB,YAAanP,SAEboP,GAAsB,CACtB3tD,MAAO+9C,GACP99C,IAAK89C,GACLjN,KAAMiN,GACNzJ,OAAQiK,SAERqP,GAAiB/gB,YAASA,YAASA,YAAS,GAAI2gB,IAA0BG,IAAsB,CAAEE,cAAe9P,KACrH,SAASsN,GAAWT,EAAKG,EAAa1iD,EAAS2iD,EAAgBP,QAC1C,IAAbA,IAAuBA,EAAWS,GAAmB7iD,IACzD,IAAI7G,EAAKssD,GAAelD,EAAKviD,EAASoiD,GAAWC,EAAUlpD,EAAGkpD,QAASC,EAAQnpD,EAAGmpD,MAC9E1H,EA+GR,SAAgC8H,EAAa1iD,GACzC,IAAI8mB,EAAM,KAOV,OANI47B,IACA57B,EAAM47B,EAAY9H,eAEX,MAAP9zB,IACAA,EAAM9mB,EAAQwW,QAAQokC,eAEnB9zB,EAvHa4+B,CAAuBhD,EAAa1iD,GACpD2lD,EAjuCR,SAAwBtD,EAASzH,EAAehP,EAASU,GACrD,IAAK,IAAIj2C,EAAI,EAAGA,EAAIi2C,EAAe35C,OAAQ0D,GAAK,EAAG,CAC/C,IAAIuvD,EAAStZ,EAAej2C,GAAGsyB,MAAM05B,EAASzW,GAC9C,GAAIga,EAAQ,CACR,IAAI3Z,EAASoW,EAAQpW,OAUrB,OATc,MAAVA,GAEc,OADdA,EAAS2O,IAGS,OADd3O,EAAS2Z,EAAOC,eAEZ5Z,GAAS,GAId,CACHA,OAAQA,EACRD,SAAU4Z,EAAO5Z,SACjBW,SAAUiZ,EAAOjZ,SACjBF,OAAQp2C,IAIpB,OAAO,KA2sCYyvD,CAAezD,EAASzH,EAAe56C,EAAQ4rC,QAAS5rC,EAAQ6rC,YAAYS,gBAC/F,GAAIqZ,EAOA,OANIlkD,EAAMskD,GAAc1D,EAASC,EAAOI,EAAcA,EAAYvgB,SAAW,GAAIwjB,EAAa1Z,OAAQiK,QAAQyP,EAAa3Z,UAAWhsC,IAClI+rC,aAAe,CACfU,OAAQkZ,EAAalZ,OACrBE,SAAUgZ,EAAahZ,SACvBX,SAAU2Z,EAAa3Z,UAEpB,CAAEvqC,IAAKA,EAAK6gB,SAAU,MAEjC,IAEQ7gB,EAFJukD,EA2CR,SAAqB3D,EAASzH,EAAe56C,EAAS2iD,GAClD,IACIsD,EAGAC,EAJAja,EAASoW,EAAQpW,OAEjBka,EAAc,KACdC,GAAS,EAETC,EAAY,KAGhB,GADAJ,EAAYjmD,EAAQ4rC,QAAQ0a,iBADM,MAAjBjE,EAAQ1qD,MAAgB0qD,EAAQ1qD,MAAQ0qD,EAAQ5Z,MAG7D0d,EAAcF,EAAUle,YAEvB,IAAK4a,EACN,OAAO,KAoCX,OAlCmB,MAAfN,EAAQzqD,MACRsuD,EAAUlmD,EAAQ4rC,QAAQ0a,iBAAiBjE,EAAQzqD,MAEzC,MAAVq0C,IAEIA,EADiB,MAAjB2O,EACSA,IAIEqL,GAAaA,EAAUM,sBAC5BL,GAAWA,EAAQK,oBAG7Bta,GAAUka,IACVA,EAAcze,EAAWye,IAEzBD,IACAG,EAAYH,EAAQne,OAChBkE,IACAoa,EAAY3e,EAAW2e,IAEvBF,GAAeE,GAAaF,IAC5BE,EAAY,OAGhBA,EACAD,GAAS,EAEHzD,IACNyD,EAASpmD,EAAQwW,QAAQogC,qBAAsB,EAC/CyP,EAAYrmD,EAAQ4rC,QAAQv6C,IAAI80D,EAAala,EACzCjsC,EAAQwW,QAAQ01B,2BAChBlsC,EAAQwW,QAAQ21B,4BAEjB,CACHF,OAAQA,EACRma,OAAQA,EACRxc,MAAO,CAAEjyC,MAAOwuD,EAAavuD,IAAKyuD,GAClCxc,eAAgBoc,EAAYA,EAAUO,UAAY,KAClD1c,aAAcoc,EAAUA,EAAQM,UAAY,MAjGhCC,CAAYpE,EAASzH,EAAe56C,EAAS2iD,GAC7D,OAAIqD,EAGO,CAAEvkD,IAFLA,EAAMskD,GAAc1D,EAASC,EAAOI,EAAcA,EAAYvgB,SAAW,GAAI6jB,EAAU/Z,OAAQ+Z,EAAUI,OAAQpmD,GAElGsiB,SADJonB,GAAoBjoC,EAAIkoC,MAAOqc,EAAUpc,MAAOoc,EAAUnc,eAAgBmc,EAAUlc,eAGhG,KAEX,SAAS2b,GAAelD,EAAKviD,EAASoiD,GAElC,YADiB,IAAbA,IAAuBA,EAAWS,GAAmB7iD,IAClDmiD,GAAYI,EAAKH,GAE5B,SAASS,GAAmB7iD,GACxB,OAAOwkC,YAASA,YAASA,YAAS,GAAIuf,IAAoBwB,IAAiBvlD,EAAQ6rC,YAAY+W,eAMnG,SAASmD,GAAc1D,EAASC,EAAOngB,EAAU8J,EAAQma,EAAQpmD,GAe7D,IAdA,IAAIyB,EAAM,CACN2jD,MAAO/C,EAAQ+C,OAAS,GACxB5B,QAASnB,EAAQmB,SAAW,GAC5BhhB,SAAU6f,EAAQ7tC,IAAM,GACxBmuB,IAAK0f,EAAQ1f,KAAO,GACpBoJ,aAAc,KACdpC,MAAO7E,IACP3C,SAAUA,EACV8J,OAAQA,EACRma,OAAQA,EACRf,YAAahD,EAAQgD,YACrBqB,GAAI9B,GAAcvC,EAASriD,GAC3BwlD,cAAehhB,YAASA,YAAS,GAAK6d,EAAQmD,eAAiB,IAAMlD,IAEhEpkD,EAAK,EAAG/E,EAAK6G,EAAQ6rC,YAAY8a,qBAAsBzoD,EAAK/E,EAAGxG,OAAQuL,IAAM,CAClF,IAAI0oD,EAAcztD,EAAG+E,GACrBsmC,YAAS/iC,EAAKmlD,EAAYvE,IAK9B,OAFAr3C,OAAO67C,OAAOplD,EAAIilD,GAAG7E,YACrB72C,OAAO67C,OAAOplD,EAAI+jD,eACX/jD,EA0EX,SAASqlD,GAAuBC,GAC5B,IAAIC,EAASj6C,KAAKs7B,MAAMhB,EAAS0f,EAAWpvD,MAAOovD,EAAWnvD,OAAS,EACnED,EAAQ+vC,EAAWqf,EAAWpvD,OAElC,MAAO,CAAEA,MAAOA,EAAOC,IADbovC,EAAQrvC,EAAOqvD,IAK7B,SAASC,GAAuBF,EAAYhR,QACf,IAArBA,IAA+BA,EAAmBhJ,GAAe,IACrE,IAAIma,EAAW,KACXC,EAAS,KACb,GAAIJ,EAAWnvD,IAAK,CAChBuvD,EAASzf,EAAWqf,EAAWnvD,KAC/B,IAAIwvD,EAAYL,EAAWnvD,IAAI0vC,UAAY6f,EAAO7f,UAI9C8f,GAAaA,GAAa9Y,GAAUyH,KACpCoR,EAASngB,EAAQmgB,EAAQ,IAUjC,OAPIJ,EAAWpvD,QACXuvD,EAAWxf,EAAWqf,EAAWpvD,OAE7BwvD,GAAUA,GAAUD,IACpBC,EAASngB,EAAQkgB,EAAU,KAG5B,CAAEvvD,MAAOuvD,EAAUtvD,IAAKuvD,GAGnC,SAASE,GAAgBzd,GACrB,IAAIiV,EAAeoI,GAAuBrd,GAC1C,OAAOvC,EAASwX,EAAalnD,MAAOknD,EAAajnD,KAAO,EAE5D,SAAS0vD,GAAUC,EAAOC,EAAO5b,EAAS6b,GACtC,MAAkB,SAAdA,EACO1a,GAAenB,EAAQ8b,eAAeH,EAAOC,GAAQ,QAE9C,UAAdC,EACO1a,GAAenB,EAAQ+b,gBAAgBJ,EAAOC,GAAQ,UArrDzCpgB,EAurDKogB,EAtrDzBI,EAAQlgB,EADQP,EAurDEogB,GArrDlBM,EAAQngB,EAAWN,GAChB,CACHgG,MAAO,EACPh8B,OAAQ,EACRg3B,KAAMr7B,KAAK06B,MAAMJ,EAASugB,EAAOC,IACjCxa,aAAejG,EAAGE,UAAYugB,EAAMvgB,WAAcH,EAAGG,UAAYsgB,EAAMtgB,aAP/E,IAAwBH,EAAIC,EACpBwgB,EACAC,EA2sDR,SAASC,GAAaC,EAAQC,GAC1B,IAEI3xD,EACA4xD,EAHAC,EAAiB,GACjBvwD,EAAQqwD,EAAgBrwD,MAK5B,IADAowD,EAAO19C,KAAK89C,IACP9xD,EAAI,EAAGA,EAAI0xD,EAAOp1D,OAAQ0D,GAAK,GAChC4xD,EAAYF,EAAO1xD,IAELsB,MAAQA,GAClBuwD,EAAe91D,KAAK,CAAEuF,MAAOA,EAAOC,IAAKqwD,EAAUtwD,QAEnDswD,EAAUrwD,IAAMD,IAChBA,EAAQswD,EAAUrwD,KAO1B,OAHID,EAAQqwD,EAAgBpwD,KACxBswD,EAAe91D,KAAK,CAAEuF,MAAOA,EAAOC,IAAKowD,EAAgBpwD,MAEtDswD,EAEX,SAASC,GAAcC,EAAQC,GAC3B,OAAOD,EAAOzwD,MAAM2vC,UAAY+gB,EAAO1wD,MAAM2vC,UAEjD,SAASghB,GAAgBF,EAAQC,GAC7B,IAAI1wD,EAAQywD,EAAOzwD,MAAOC,EAAMwwD,EAAOxwD,IACnC2wD,EAAW,KAoBf,OAnBqB,OAAjBF,EAAO1wD,QAEHA,EADU,OAAVA,EACQ0wD,EAAO1wD,MAGP,IAAIuxC,KAAKn8B,KAAKukC,IAAI35C,EAAM2vC,UAAW+gB,EAAO1wD,MAAM2vC,aAG9C,MAAd+gB,EAAOzwD,MAEHA,EADQ,OAARA,EACMywD,EAAOzwD,IAGP,IAAIsxC,KAAKn8B,KAAKG,IAAItV,EAAI0vC,UAAW+gB,EAAOzwD,IAAI0vC,cAG5C,OAAV3vC,GAA0B,OAARC,GAAgBD,EAAQC,KAC1C2wD,EAAW,CAAE5wD,MAAOA,EAAOC,IAAKA,IAE7B2wD,EAMX,SAASC,GAAgBJ,EAAQC,GAC7B,OAAuB,OAAfD,EAAOxwD,KAAiC,OAAjBywD,EAAO1wD,OAAkBywD,EAAOxwD,IAAMywD,EAAO1wD,SACtD,OAAjBywD,EAAOzwD,OAAiC,OAAf0wD,EAAOzwD,KAAgBwwD,EAAOzwD,MAAQ0wD,EAAOzwD,KAE/E,SAAS6wD,GAAmBC,EAAYC,GACpC,OAA6B,OAArBD,EAAW/wD,OAAwC,OAArBgxD,EAAWhxD,OAAkBgxD,EAAWhxD,OAAS+wD,EAAW/wD,SAC1E,OAAnB+wD,EAAW9wD,KAAoC,OAAnB+wD,EAAW/wD,KAAgB+wD,EAAW/wD,KAAO8wD,EAAW9wD,KAE7F,SAASgxD,GAAoBhf,EAAOnB,GAChC,OAAwB,OAAhBmB,EAAMjyC,OAAkB8wC,GAAQmB,EAAMjyC,SAC3B,OAAdiyC,EAAMhyC,KAAgB6wC,EAAOmB,EAAMhyC,KAiB5C,SAASixD,GAAgBnd,EAAYod,EAAcnd,EAAcoK,GAC7D,IAAIgT,EAAqB,GACrBC,EAAmB,GACnBC,EAAe,GACfC,EAAW,GACXC,EAAW,GACXC,EAAWC,GAAgB3d,EAAWI,KAAMgd,GAChD,IAAK,IAAInf,KAAS+B,EAAWI,KAGN,wBADf4a,EAAK0C,GADL3nD,EAAMiqC,EAAWI,KAAKnC,IACJA,QACfpoC,UACCE,EAAI+hD,SACJuF,EAAmBtnD,EAAI+hD,SAAW,GAC7ByF,EAAaxnD,EAAI+hD,WAClByF,EAAaxnD,EAAI+hD,SAAW/hD,IAIhCunD,EAAiBrf,GAAS,IAItC,IAAK,IAAII,KAAc2B,EAAW9pB,UAAW,CACzC,IAAIU,EAAWopB,EAAW9pB,UAAUmoB,GAEhC2c,EAAK0C,GADL3nD,EAAMiqC,EAAWI,KAAKxpB,EAASqnB,QACbA,OAClB2f,EAAYhnC,EAASsnB,MACrB2f,GAAgB9nD,EAAIwqC,QAAU8J,EAC9BkR,GAAuBqC,EAAWvT,GAClCuT,EACAE,EAAclB,GAAgBiB,EAAa5d,GAC3C6d,IACmB,uBAAf9C,EAAGnlD,QACCE,EAAI+hD,QACJuF,EAAmBtnD,EAAI+hD,SAASpxD,KAAKo3D,GAGrCR,EAAiB1mC,EAASqnB,OAAOv3C,KAAKo3D,GAGtB,SAAf9C,EAAGnlD,UACQ,eAAfmlD,EAAGnlD,QAA2B2nD,EAAWC,GAAU/2D,KAAK,CACrDqP,IAAKA,EACLilD,GAAIA,EACJpkC,SAAUA,EACVsnB,MAAO4f,EACPC,QAASF,EAAY5xD,OAAS4xD,EAAY5xD,MAAM2vC,YAAckiB,EAAY7xD,MAAM2vC,UAChFoiB,MAAOH,EAAY3xD,KAAO2xD,EAAY3xD,IAAI0vC,YAAckiB,EAAY5xD,IAAI0vC,aAKxF,IAAK,IAAIkc,KAAWuF,EAGhB,IAFA,IAES7qD,EAAK,EAAGyrD,EADI7B,GADRiB,EAAmBvF,GACU7X,GACUztC,EAAKyrD,EAAiBh3D,OAAQuL,IAAM,CACpF,IACIuD,EAEJynD,EAAS92D,KAAK,CACVqP,IAHAA,EAAMwnD,EAAazF,GAInBkD,GAHAA,EAAK0C,EAAS3nD,EAAIkoC,OAIlBrnB,SAAU,KACVsnB,MAPgB+f,EAAiBzrD,GAQjCurD,SAAS,EACTC,OAAO,IAInB,IAAK,IAAI/f,KAASqf,EAGd,IAFA,IAES7vD,EAAK,EAAGywD,EADI9B,GADRkB,EAAiBrf,GACYgC,GACUxyC,EAAKywD,EAAiBj3D,OAAQwG,IAE9E+vD,EAAS92D,KAAK,CACVqP,IAAKiqC,EAAWI,KAAKnC,GACrB+c,GAAI0C,EAASzf,GACbrnB,SAAU,KACVsnB,MALgBggB,EAAiBzwD,GAMjCswD,SAAS,EACTC,OAAO,IAInB,MAAO,CAAEG,GAAIX,EAAUY,GAAIX,GAE/B,SAASY,GAAetoD,GACpB,MAA0B,eAAnBA,EAAIilD,GAAGnlD,SAA+C,uBAAnBE,EAAIilD,GAAGnlD,QAErD,SAASyoD,GAAS/oB,EAAIgpB,GAClBhpB,EAAGipB,MAAQD,EAEf,SAASE,GAASlpB,GACd,OAAOA,EAAGipB,OACNjpB,EAAG/xB,WAAWg7C,OACd,KAGR,SAASb,GAAgBe,EAAWtB,GAChC,OAAOne,GAAQyf,EAAW,SAAU7d,GAAY,OAAO8d,GAAe9d,EAAUuc,KAEpF,SAASuB,GAAe9d,EAAUuc,GAC9B,IAAI/D,EAAM,GAQV,OAPI+D,EAAa,KACb/D,EAAI3yD,KAAK02D,EAAa,KAEtBA,EAAavc,EAAS5C,QACtBob,EAAI3yD,KAAK02D,EAAavc,EAAS5C,QAEnCob,EAAI3yD,KAAKm6C,EAASma,IACX5B,GAAgBC,GAE3B,SAASuF,GAAcC,EAAMC,GACzB,IAAIC,EAAOF,EAAKtyD,IAAIyyD,IAEpB,OADAD,EAAKpgD,KAAK,SAAUi7B,EAAMC,GAAQ,OAz/DtC,SAA6BD,EAAMC,EAAMolB,GACrC,IAAIt0D,EACAu0D,EACJ,IAAKv0D,EAAI,EAAGA,EAAIs0D,EAAWh4D,OAAQ0D,GAAK,EAEpC,GADAu0D,EAAMvlB,EAAmBC,EAAMC,EAAMolB,EAAWt0D,IAE5C,OAAOu0D,EAGf,OAAO,EAg/DkCC,CAAoBvlB,EAAMC,EAAMilB,KAClEC,EAAKxyD,IAAI,SAAUmmC,GAAK,OAAOA,EAAE0sB,OAG5C,SAASJ,GAAmBT,GACxB,IAAIc,EAAad,EAAIc,WACjBxe,EAAWwe,EAAWtpD,IACtBmoC,EAAQmhB,EAAWzoC,SAAWyoC,EAAWzoC,SAASsnB,MAAQmhB,EAAWnhB,MACrEjyC,EAAQiyC,EAAMjyC,MAAQiyC,EAAMjyC,MAAM2vC,UAAY,EAC9C1vC,EAAMgyC,EAAMhyC,IAAMgyC,EAAMhyC,IAAI0vC,UAAY,EAC5C,OAAO9C,YAASA,YAASA,YAAS,GAAI+H,EAASiZ,eAAgBjZ,GAAW,CAAE/3B,GAAI+3B,EAAS/J,SAAU7qC,MAAOA,EACtGC,IAAKA,EAAKo0C,SAAUp0C,EAAMD,EAAOs0C,OAAQ9uC,OAAOovC,EAASN,QAAS6e,KAAMb,IAEhF,SAASe,GAAoBf,EAAKjqD,GAK9B,IAJA,IAEI7G,EAAK8wD,EAAIc,WAAYtpD,EAAMtI,EAAGsI,IAAKilD,EAAKvtD,EAAGutD,GAC3C5pB,EAAM4pB,EAAG1C,cACJ9lD,EAAK,EAAG+sD,EAJCjrD,EAAQ6rC,YACKqf,wBAGiBhtD,EAAK+sD,EAAet4D,OAAQuL,IAExE4+B,GAAMquB,EADYF,EAAe/sD,IACf4+B,EAAKr7B,EAAKilD,EAAI1mD,GAEpC,OAAO88B,EAEX,SAASsuB,GAAyBnB,EAAKjqD,GACnC,OAAOiqD,EAAIR,SAAWQ,EAAIc,WAAWrE,GAAGzC,kBAAoBjkD,EAAQwW,QAAQyjC,wBAEhF,SAASoR,GAAuBpB,EAAKjqD,GACjC,OAAOiqD,EAAIP,OAASO,EAAIc,WAAWrE,GAAGzC,iBAE1C,SAASqH,GAAiBrB,EAAKsB,EAAYvrD,EAASwrD,EACpDC,EACAC,EAAeC,GACX,IAAI/f,EAAU5rC,EAAQ4rC,QAASp1B,EAAUxW,EAAQwW,QAC7C0jC,EAAmB1jC,EAAQ0jC,iBAAkBC,EAAkB3jC,EAAQ2jC,gBACvE5N,EAAW0d,EAAIc,WAAWtpD,IAC1BmqD,EAAgB3B,EAAIc,WAAWzoC,SACX,MAApB43B,IACAA,GAA+C,IAA5BsR,GAEA,MAAnBrR,IACAA,GAA6C,IAA3BsR,GAEtB,IAAII,EAAkBD,EAAchiB,MAAMjyC,MACtCm0D,EAAgBF,EAAchiB,MAAMhyC,IACpCm0D,EAAWL,GAAiBzB,EAAItyD,OAASsyD,EAAIc,WAAWnhB,MAAMjyC,MAC9Dq0D,EAASL,GAAe1B,EAAIryD,KAAOqyD,EAAIc,WAAWnhB,MAAMhyC,IACxDq0D,EAAavkB,EAAWmkB,GAAiBvkB,YAAcI,EAAWqkB,GAAUzkB,UAC5E4kB,EAAWxkB,EAAWT,EAAM6kB,GAAgB,IAAIxkB,YAAcI,EAAWT,EAAM+kB,GAAS,IAAI1kB,UAChG,OAAI4S,IAAqB3N,EAASN,SAAWggB,GAAcC,IACvDH,EAAWE,EAAaJ,EAAkBE,EAC1CC,EAASE,EAAWJ,EAAgBE,EAChC7R,GAAmB5N,EAAS6Z,OACrBxa,EAAQ4F,YAAYua,EAAUC,EAAQT,EAAY,CACrD1hB,eAAgB6hB,EAAgB,KAAOE,EAAc/hB,eACrDC,aAAc6hB,EAAc,KAAOC,EAAc9hB,eAGlD8B,EAAQr6B,OAAOw6C,EAAUR,EAAY,CACxC/E,UAAWkF,EAAgB,KAAOE,EAAc/hB,kBAGjD,GAEX,SAASsiB,GAAWlC,EAAKmC,EAAYC,GACjC,IAAIC,EAAWrC,EAAIc,WAAWnhB,MAC9B,MAAO,CACH2iB,OAAQD,EAAS10D,KAAOy0D,GAAWD,EAAWz0D,OAC9C60D,SAAUF,EAAS30D,QAAU00D,GAAWD,EAAWx0D,KACnD60D,QAASL,GAAcxD,GAAoBwD,EAAYE,EAAS30D,QAwCxE,SAAS+0D,GAAmB3B,GACxB,OAAOA,EAAWzoC,SACZyoC,EAAWzoC,SAASynB,WACpBghB,EAAWtpD,IAAIkoC,MAAQ,IAAMohB,EAAWnhB,MAAMjyC,MAAMo3C,cAG9D,SAAS4d,GAAkB1C,EAAKjqD,GAC5B,IAAI7G,EAAK8wD,EAAIc,WAAYtpD,EAAMtI,EAAGsI,IAAK6gB,EAAWnpB,EAAGmpB,SACjDqgB,EAAMlhC,EAAIkhC,IACd,GAAIA,EACA,MAAO,CAAEiqB,KAAMjqB,GAEnB,IAAIkqB,EAAU7sD,EAAQ6sD,QAClB9N,EADqC/+C,EAAQwW,QAClBuoC,iBAQ/B,OAPwB,MAApBA,GAEwB,OADxBA,EAAmBt9C,EAAI4jD,eAEnBtG,EAAmB7I,QAAQ2W,EAAQC,YAAY,gBAInD/N,EAEOra,EAAwB,SAAUjB,GACrCopB,EAAQE,QAAQ,aAAc,CAC1B9rB,GAAIwC,EAAGzoB,OACPlE,MAAO,IAAIk2C,GAAShtD,EAASyB,EAAK6gB,GAClC2qC,QAASxpB,EACThjC,KAAMT,EAAQktD,YAInB,GAGX,IAAIC,GAAiB,CACjBx1D,MAAO+9C,GACP99C,IAAK89C,GACLzJ,OAAQiK,SAkCZ,SAASkX,GAAiBC,EAAOC,GAC7B,OAvUyBjF,EAuUOiF,EAAM1jB,OAtUb,QADRwe,EAuUEiF,EAAMzjB,OAtUVjyC,MAAiB,KAAOywD,EAAOzwD,MAAM2vC,cAAiC,OAAjB+gB,EAAO1wD,MAAiB,KAAO0wD,EAAO1wD,MAAM2vC,aAC5F,OAAf8gB,EAAOxwD,IAAe,KAAOwwD,EAAOxwD,IAAI0vC,cAA+B,OAAf+gB,EAAOzwD,IAAe,KAAOywD,EAAOzwD,IAAI0vC,YAsUjG+lB,EAAMphB,SAAWqhB,EAAMrhB,QAI/B,SAA0BohB,EAAOC,GAC7B,IAAK,IAAIhqB,KAAYgqB,EACjB,GAAiB,UAAbhqB,GAAqC,WAAbA,GACpB+pB,EAAM/pB,KAAcgqB,EAAMhqB,GAC1B,OAAO,EAMnB,IAAK,IAAIA,KAAY+pB,EACjB,KAAM/pB,KAAYgqB,GACd,OAAO,EAGf,OAAO,EAlBHC,CAAiBF,EAAOC,GAzUhC,IAAqBlF,EAAQC,EAgW7B,SAASmF,GAA0B5jB,EAAOgC,EAAS6hB,GAC/C,OAAOjpB,YAASA,YAAS,GAAIkpB,GAAc9jB,EAAOgC,EAAS6hB,IAAY,CAAEzZ,SAAUpI,EAAQoI,WAE/F,SAAS0Z,GAAc9jB,EAAOgC,EAAS6hB,GACnC,MAAO,CACH91D,MAAOi0C,EAAQ+hB,OAAO/jB,EAAMjyC,OAC5BC,IAAKg0C,EAAQ+hB,OAAO/jB,EAAMhyC,KAC1Bg2D,SAAUhiB,EAAQiiB,UAAUjkB,EAAMjyC,MAAO,CAAE81D,SAAUA,IACrDK,OAAQliB,EAAQiiB,UAAUjkB,EAAMhyC,IAAK,CAAE61D,SAAUA,KAGzD,SAASM,GAAoBC,EAAUlF,EAAc9oD,GACjD,IAAI8mB,EAAM2+B,GAAe,CAAEzN,UAAU,GAASh4C,GAC1CyB,EAAMskD,GAAcj/B,EAAIu7B,QAASv7B,EAAIw7B,MAAO,GAChD0L,EAAS/hB,QAAQ,EACjBjsC,GACA,MAAO,CACHyB,IAAKA,EACLilD,GAAI2D,GAAe5oD,EAAKqnD,GACxBxmC,SAAUonB,GAAoBjoC,EAAIkoC,MAAOqkB,EAASpkB,OAClDA,MAAOokB,EAASpkB,MAChB6f,SAAS,EACTC,OAAO,GAIf,SAASuE,GAAkBC,EAAWC,EAAKnuD,GACvCA,EAAQ6sD,QAAQE,QAAQ,SAAUvoB,YAASA,YAAS,GAAI4pB,GAA4BF,EAAWluD,IAAW,CAAEitD,QAASkB,EAAMA,EAAIE,UAAY,KAAM5tD,KAAMT,EAAQktD,SAAWltD,EAAQsuD,YAAY7tD,QAQlM,SAAS2tD,GAA4BJ,EAAUhuD,GAE3C,IADA,IAvCsBuuD,EAAM3iB,EAuCxBrqB,EAAQ,GACHrjB,EAAK,EAAG/E,EAAK6G,EAAQ6rC,YAAY2iB,mBAAoBtwD,EAAK/E,EAAGxG,OAAQuL,IAAM,CAChF,IAAIiyB,EAAYh3B,EAAG+E,GACnBsmC,YAASjjB,EAAO4O,EAAU69B,EAAUhuD,IAGxC,OADAwkC,YAASjjB,GA5CagtC,EA4CWP,EA5CLpiB,EA4Ce5rC,EAAQ4rC,QA3C5CpH,YAASA,YAAS,GAAIkpB,GAAca,EAAK3kB,MAAOgC,EAAS2iB,EAAKtiB,SAAU,CAAEA,OAAQsiB,EAAKtiB,WA4CvF1qB,EAIX,SAASktC,GAAmBxiB,EAAQlE,EAAQ/nC,GACxC,IAAI4rC,EAAU5rC,EAAQ4rC,QAASp1B,EAAUxW,EAAQwW,QAC7C5e,EAAMmwC,EAQV,OAPIkE,GACAr0C,EAAM8vC,EAAW9vC,GACjBA,EAAMg0C,EAAQv6C,IAAIuG,EAAK4e,EAAQ01B,6BAG/Bt0C,EAAMg0C,EAAQv6C,IAAIuG,EAAK4e,EAAQ21B,2BAE5Bv0C,EAIX,SAAS82D,GAA0BhjB,EAAYijB,EAAiBC,EAAU5uD,GACtE,IAAI6uD,EAAexF,GAAgB3d,EAAWI,KAAM6iB,GAChDxkB,EA3xBG,CAAE2B,KAAM,GAAIlqB,UAAW,IA4xB9B,IAAK,IAAI+nB,KAAS+B,EAAWI,KAEzB3B,EAAK2B,KAAKnC,GAASmlB,GADTpjB,EAAWI,KAAKnC,GACsBklB,EAAallB,GAAQilB,EAAU5uD,GAEnF,IAAK,IAAI+pC,KAAc2B,EAAW9pB,UAAW,CACzC,IAAIU,EAAWopB,EAAW9pB,UAAUmoB,GAEpCI,EAAKvoB,UAAUmoB,GAAcglB,GAA6BzsC,EADhD6nB,EAAK2B,KAAKxpB,EAASqnB,OAC4CklB,EAAavsC,EAASqnB,OAAQilB,EAAU5uD,GAErH,OAAOmqC,EAEX,SAAS2kB,GAAwBviB,EAAUyiB,EAAaJ,EAAU5uD,GAC9D,IAAIivD,EAAgBL,EAASK,eAAiB,GAIlB,MAAxBA,EAAc7I,QACd4I,EAAY/K,mBACX2K,EAASM,YAAcN,EAASO,YACjCF,EAAc7I,QAAS,GAE3B,IAAIgJ,EAAO5qB,YAASA,YAASA,YAAS,GAAI+H,GAAW0iB,GAAgB,CAAEvI,GAAIliB,YAASA,YAAS,GAAI+H,EAASma,IAAKuI,EAAcvI,MACzHkI,EAASpJ,gBACT4J,EAAK5J,cAAgBhhB,YAASA,YAAS,GAAI4qB,EAAK5J,eAAgBoJ,EAASpJ,gBAE7E,IAAK,IAAItnD,EAAK,EAAG/E,EAAK6G,EAAQ6rC,YAAYwjB,yBAA0BnxD,EAAK/E,EAAGxG,OAAQuL,KAEhFoxD,EADcn2D,EAAG+E,IACTkxD,EAAMR,EAAU5uD,GAK5B,OAHKovD,EAAKhJ,QAAUpmD,EAAQwW,QAAQogC,qBAChCwY,EAAKhJ,QAAS,GAEXgJ,EAEX,SAASL,GAA6BnD,EAAerf,EACrDyiB,EAAaJ,EAAU5uD,GACnB,IAAI4rC,EAAU5rC,EAAQ4rC,QAClB2jB,EAAcX,EAASK,gBAAmD,IAAlCL,EAASK,cAAchjB,OAC/DujB,EAAWZ,EAASK,gBAAmD,IAAlCL,EAASK,cAAc7I,OAC5DgJ,EAAO5qB,YAAS,GAAIonB,GAwCxB,OAvCI2D,IACAH,EAAKxlB,MAAQkd,GAAuBsI,EAAKxlB,QAEzCglB,EAASa,YAAcT,EAAYhL,gBACnCoL,EAAKxlB,MAAQ,CACTjyC,MAAOi0C,EAAQv6C,IAAI+9D,EAAKxlB,MAAMjyC,MAAOi3D,EAASa,YAC9C73D,IAAKg0C,EAAQv6C,IAAI+9D,EAAKxlB,MAAMhyC,IAAKg3D,EAASa,cAG9Cb,EAASM,YAAcF,EAAY/K,mBACnCmL,EAAKxlB,MAAQ,CACTjyC,MAAOi0C,EAAQv6C,IAAI+9D,EAAKxlB,MAAMjyC,MAAOi3D,EAASM,YAC9Ct3D,IAAKw3D,EAAKxlB,MAAMhyC,MAGpBg3D,EAASO,UAAYH,EAAY/K,mBACjCmL,EAAKxlB,MAAQ,CACTjyC,MAAOy3D,EAAKxlB,MAAMjyC,MAClBC,IAAKg0C,EAAQv6C,IAAI+9D,EAAKxlB,MAAMhyC,IAAKg3D,EAASO,YAG9CK,IACAJ,EAAKxlB,MAAQ,CACTjyC,MAAOy3D,EAAKxlB,MAAMjyC,MAClBC,IAAK62D,GAAmBliB,EAASN,OAAQmjB,EAAKxlB,MAAMjyC,MAAOqI,KAK/DusC,EAASN,SACTmjB,EAAKxlB,MAAQ,CACTjyC,MAAO+vC,EAAW0nB,EAAKxlB,MAAMjyC,OAC7BC,IAAK8vC,EAAW0nB,EAAKxlB,MAAMhyC,OAI/Bw3D,EAAKxlB,MAAMhyC,IAAMw3D,EAAKxlB,MAAMjyC,QAC5By3D,EAAKxlB,MAAMhyC,IAAM62D,GAAmBliB,EAASN,OAAQmjB,EAAKxlB,MAAMjyC,MAAOqI,IAEpEovD,EAKX,IAAIM,GAAyB,WACzB,SAASA,EAAQxgE,EAAMygE,EAAgB/jB,GACnCp9C,KAAKU,KAAOA,EACZV,KAAKmhE,eAAiBA,EACtBnhE,KAAKo9C,QAAUA,EA+CnB,OA7CA5gC,OAAOu3B,eAAemtB,EAAQxuC,UAAW,WAAY,CACjDxgB,IAAK,WACD,OAAOlS,KAAKmhE,iBAAiBrB,aAEjC7rB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAemtB,EAAQxuC,UAAW,QAAS,CAC9CxgB,IAAK,WACD,OAAOlS,KAAKmhE,iBAAiBC,WAEjCntB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAemtB,EAAQxuC,UAAW,cAAe,CACpDxgB,IAAK,WACD,OAAOlS,KAAKo9C,QAAQ+hB,OAAOn/D,KAAKmhE,iBAAiBE,YAAYC,YAAYn4D,QAE7E8qC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAemtB,EAAQxuC,UAAW,YAAa,CAClDxgB,IAAK,WACD,OAAOlS,KAAKo9C,QAAQ+hB,OAAOn/D,KAAKmhE,iBAAiBE,YAAYC,YAAYl4D,MAE7E6qC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAemtB,EAAQxuC,UAAW,eAAgB,CACrDxgB,IAAK,WACD,OAAOlS,KAAKo9C,QAAQ+hB,OAAOn/D,KAAKmhE,iBAAiBE,YAAYE,aAAap4D,QAE9E8qC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAemtB,EAAQxuC,UAAW,aAAc,CACnDxgB,IAAK,WACD,OAAOlS,KAAKo9C,QAAQ+hB,OAAOn/D,KAAKmhE,iBAAiBE,YAAYE,aAAan4D,MAE9E6qC,YAAY,EACZvW,cAAc,IAElBwjC,EAAQxuC,UAAU8uC,UAAY,SAAUrgE,GACpC,OAAOnB,KAAKmhE,iBAAiBn5C,QAAQ7mB,IAElC+/D,EAnDkB,GAsDzBO,GAAwB,CACxBz7C,GAAIqpB,OACJ+c,cAAe1E,QACfvT,IAAK9E,OACLtsB,OAAQssB,OACRwjB,OAAQ3L,GACR8E,mBAAoB9E,GAEpBwa,QAASxa,GACTya,QAASza,IAEb,SAAS0a,GAAiB7N,EAAKviD,EAASoiD,GAEpC,IAAIiO,EAUJ,QAXiB,IAAbjO,IAAuBA,EAAWkO,GAAyBtwD,IAE5C,iBAARuiD,EACP8N,EAAS,CAAE1tB,IAAK4f,GAEI,mBAARA,GAAsBxpD,MAAMyL,QAAQ+9C,GAChD8N,EAAS,CAAEhP,OAAQkB,GAEC,iBAARA,GAAoBA,IAChC8N,EAAS9N,GAET8N,EAAQ,CACR,IAAIl3D,EAAKgpD,GAAYkO,EAAQjO,GAAWC,EAAUlpD,EAAGkpD,QAASC,EAAQnpD,EAAGmpD,MACrEiO,EAyBZ,SAA8BhO,EAAKviD,GAE/B,IADA,IAAI8rC,EAAO9rC,EAAQ6rC,YAAY2kB,gBACtBn6D,EAAIy1C,EAAKn5C,OAAS,EAAG0D,GAAK,EAAGA,GAAK,EAAG,CAC1C,IACIqsC,EADMoJ,EAAKz1C,GACAo6D,UAAUlO,GACzB,GAAI7f,EACA,MAAO,CAAEguB,YAAar6D,EAAGqsC,KAAMA,GAGvC,OAAO,KAlCWiuB,CAAqBtO,EAASriD,GAC5C,GAAIuwD,EACA,MAAO,CACHK,KAAMrO,EACNsO,YAAY,EACZC,cAAe,GACfC,WAAY,KACZnW,cAAeyH,EAAQzH,cACvBJ,mBAAoB6H,EAAQ7H,mBAC5B0V,QAAS7N,EAAQ6N,QACjBC,QAAS9N,EAAQ8N,QACjB3tB,SAAU6f,EAAQ7tC,IAAM,GACxB2tB,SAAU2C,IACV4rB,YAAaH,EAAQG,YACrBhuB,KAAM6tB,EAAQ7tB,KACdgkB,GAAI9B,GAAcvC,EAASriD,GAC3BwlD,cAAelD,GAI3B,OAAO,KAEX,SAASgO,GAAyBtwD,GAC9B,OAAOwkC,YAASA,YAASA,YAAS,GAAIuf,IAAoBkM,IAAwBjwD,EAAQ6rC,YAAYmlB,qBA8B1G,SAASC,GAAOC,EAAUtlB,GAItB,MAHwB,mBAAbslB,IACPA,EAAWA,KAEC,MAAZA,EACOtlB,EAAQulB,kBAEZvlB,EAAQwlB,aAAaF,GAGhC,IAAIG,GAA6B,WAC7B,SAASA,KAuYT,OArYAA,EAAYnwC,UAAUyuC,eAAiB,WACnC,OAAOnhE,KAAK8iE,mBAAmB3B,kBAEnC0B,EAAYnwC,UAAUgG,SAAW,SAAUqqC,GACvC,OAAO/iE,KAAK8iE,mBAAmBpqC,SAASqqC,IAE5CvmD,OAAOu3B,eAAe8uB,EAAYnwC,UAAW,OAAQ,CACjDxgB,IAAK,WAAc,OAAOlS,KAAKmhE,iBAAiBzC,SAEhDzqB,YAAY,EACZvW,cAAc,IAElBmlC,EAAYnwC,UAAUswC,eAAiB,SAAU/vC,GAC7CA,KAEJ4vC,EAAYnwC,UAAUpD,WAAa,WAC/BtvB,KAAKu+D,QAAQ,WAAW,IAI5BsE,EAAYnwC,UAAUuwC,UAAY,SAAU9hE,EAAMmtC,GAC9CtuC,KAAK04B,SAAS,CACVh4B,KAAM,aACNwiE,WAAY/hE,EACZgiE,eAAgB70B,KAGxBu0B,EAAYnwC,UAAU8uC,UAAY,SAAUrgE,GACxC,OAAOnB,KAAK8iE,mBAAmBM,4BAA4BjiE,IAE/D0hE,EAAYnwC,UAAU2wC,wBAA0B,WAC5C,OAAO7mD,OAAOC,KAAKzc,KAAKmhE,iBAAiBmC,sBAI7CT,EAAYnwC,UAAU6wC,GAAK,SAAUC,EAAan3B,GAC9C,IAAIy2B,EAAqB9iE,KAAK8iE,mBAC1BA,EAAmBW,+BAA+BD,GAClDV,EAAmBzE,QAAQkF,GAAGC,EAAan3B,GAG3CtB,QAAQ24B,KAAK,0BAA4BF,EAAc,MAG/DX,EAAYnwC,UAAUixC,IAAM,SAAUH,EAAan3B,GAC/CrsC,KAAK8iE,mBAAmBzE,QAAQsF,IAAIH,EAAan3B,IAGrDw2B,EAAYnwC,UAAU6rC,QAAU,SAAUiF,GAGtC,IAFA,IAAI74D,EACA9K,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,EAAK,GAAK4J,UAAU5J,IAE5B/E,EAAK3K,KAAK8iE,mBAAmBzE,SAASE,QAAQ5mB,MAAMhtC,EAAIi5D,YAAc,CAACJ,GAAc3jE,KAI1FgjE,EAAYnwC,UAAUmxC,WAAa,SAAUC,EAAUC,GACnD,IAAIriB,EAAQ1hD,KACZA,KAAKgjE,eAAe,WAEhB,GADAthB,EAAMqQ,WACFgS,EACA,GAAIA,EAAY56D,OAAS46D,EAAY36D,IACjCs4C,EAAMhpB,SAAS,CACXh4B,KAAM,mBACNojE,SAAUA,IAEdpiB,EAAMhpB,SAAS,CACXh4B,KAAM,aACNwiE,WAAY,eACZC,eAAgBY,QAGnB,CACD,IAAI3mB,EAAUsE,EAAMyf,iBAAiB/jB,QACrCsE,EAAMhpB,SAAS,CACXh4B,KAAM,mBACNojE,SAAUA,EACVE,WAAY5mB,EAAQwlB,aAAamB,UAKzCriB,EAAMhpB,SAAS,CACXh4B,KAAM,mBACNojE,SAAUA,OAQ1BjB,EAAYnwC,UAAUuxC,OAAS,SAAUD,EAAYF,GACjD,IACII,EAEJA,EAHYlkE,KAAKmhE,iBAGJgD,UADbL,EAAWA,GAAY,QACa9jE,KAAKokE,gBAAgBN,GACzD9jE,KAAK+xD,WAED/xD,KAAK04B,SADLwrC,EACc,CACVxjE,KAAM,mBACNojE,SAAUI,EAAKxjE,KACfsjE,WAAYA,GAIF,CACVtjE,KAAM,cACNsjE,WAAYA,KAMxBnB,EAAYnwC,UAAU0xC,gBAAkB,SAAU3lB,GAC9C,IAEI52C,EACAq8D,EAHAv5D,EAAK3K,KAAKmhE,iBAAkBgD,EAAYx5D,EAAGw5D,UAAWE,EAAgB15D,EAAG05D,cACzEC,EAAY,GAAGtrD,OAAOqrD,EAAcE,OAASF,EAAcE,OAAOC,iBAAmB,GAAIH,EAAcI,OAASJ,EAAcI,OAAOD,iBAAmB,IAG5J,IAAK,IAAIV,KAAYK,EACjBG,EAAU1gE,KAAKkgE,GAEnB,IAAKj8D,EAAI,EAAGA,EAAIy8D,EAAUngE,OAAQ0D,GAAK,EAEnC,IADAq8D,EAAOC,EAAUG,EAAUz8D,MAEnBq8D,EAAKQ,aAAejmB,EACpB,OAAOylB,EAInB,OAAO,MAIXrB,EAAYnwC,UAAUiyC,KAAO,WACzB3kE,KAAK+xD,WACL/xD,KAAK04B,SAAS,CAAEh4B,KAAM,UAE1BmiE,EAAYnwC,UAAU7uB,KAAO,WACzB7D,KAAK+xD,WACL/xD,KAAK04B,SAAS,CAAEh4B,KAAM,UAE1BmiE,EAAYnwC,UAAUkyC,SAAW,WAC7B,IAAIv8D,EAAQrI,KAAKmhE,iBACjBnhE,KAAK+xD,WACL/xD,KAAK04B,SAAS,CACVh4B,KAAM,cACNsjE,WAAY37D,EAAM+0C,QAAQynB,SAASx8D,EAAMy8D,aAAc,MAG/DjC,EAAYnwC,UAAUqyC,SAAW,WAC7B,IAAI18D,EAAQrI,KAAKmhE,iBACjBnhE,KAAK+xD,WACL/xD,KAAK04B,SAAS,CACVh4B,KAAM,cACNsjE,WAAY37D,EAAM+0C,QAAQynB,SAASx8D,EAAMy8D,YAAa,MAG9DjC,EAAYnwC,UAAUsyC,MAAQ,WAC1B,IAAI38D,EAAQrI,KAAKmhE,iBACjBnhE,KAAK+xD,WACL/xD,KAAK04B,SAAS,CACVh4B,KAAM,cACNsjE,WAAYvB,GAAOp6D,EAAM48D,gBAAgBlZ,IAAK1jD,EAAM+0C,YAG5DylB,EAAYnwC,UAAUwyC,SAAW,SAAUC,GACvC,IAAI98D,EAAQrI,KAAKmhE,iBACjBnhE,KAAK+xD,WACL/xD,KAAK04B,SAAS,CACVh4B,KAAM,cACNsjE,WAAY37D,EAAM+0C,QAAQwlB,aAAauC,MAG/CtC,EAAYnwC,UAAU0yC,cAAgB,SAAUC,GAC5C,IAAIh9D,EAAQrI,KAAKmhE,iBACbmE,EAAQ/mB,GAAe8mB,GACvBC,IACAtlE,KAAK+xD,WACL/xD,KAAK04B,SAAS,CACVh4B,KAAM,cACNsjE,WAAY37D,EAAM+0C,QAAQv6C,IAAIwF,EAAMy8D,YAAaQ,OAK7DzC,EAAYnwC,UAAU0nB,QAAU,WAC5B,IAAI/xC,EAAQrI,KAAKmhE,iBACjB,OAAO94D,EAAM+0C,QAAQ+hB,OAAO92D,EAAMy8D,cAItCjC,EAAYnwC,UAAU6yC,WAAa,SAAUvtD,EAAGy/B,GAC5C,IAAI2F,EAAUp9C,KAAKmhE,iBAAiB/jB,QACpC,OAAOA,EAAQr6B,OAAOq6B,EAAQwlB,aAAa5qD,GAAI+uC,GAAgBtP,KAGnEorB,EAAYnwC,UAAUswB,YAAc,SAAUvD,EAAIC,EAAI8lB,GAClD,IAAIpoB,EAAUp9C,KAAKmhE,iBAAiB/jB,QACpC,OAAOA,EAAQ4F,YAAY5F,EAAQwlB,aAAanjB,GAAKrC,EAAQwlB,aAAaljB,GAAKqH,GAAgBye,GAAWA,IAE9G3C,EAAYnwC,UAAU2sC,UAAY,SAAUrnD,EAAGinD,GAC3C,IAAI7hB,EAAUp9C,KAAKmhE,iBAAiB/jB,QACpC,OAAOA,EAAQiiB,UAAUjiB,EAAQwlB,aAAa5qD,GAAI,CAAEinD,SAAUA,KAMlE4D,EAAYnwC,UAAUuN,OAAS,SAAUwlC,EAAWC,GAChD,IAAIC,EAGIA,EAFO,MAAXD,EACuB,MAAnBD,EAAUt8D,MACOs8D,EAGA,CACbt8D,MAAOs8D,EACPr8D,IAAK,MAKI,CACbD,MAAOs8D,EACPr8D,IAAKs8D,GAGb,IAAIr9D,EAAQrI,KAAKmhE,iBACbzB,EArkBZ,SAAuB3L,EAAK3W,EAASwoB,GACjC,IAAI7F,EAiBR,SAA2BhM,EAAK3W,GAC5B,IAAIzyC,EAAKgpD,GAAYI,EAAK4K,IAAiB8B,EAAgB91D,EAAGkpD,QAASC,EAAQnpD,EAAGmpD,MAC9E2D,EAAYgJ,EAAct3D,MAAQi0C,EAAQ0a,iBAAiB2I,EAAct3D,OAAS,KAClFuuD,EAAU+I,EAAcr3D,IAAMg0C,EAAQ0a,iBAAiB2I,EAAcr3D,KAAO,KAC5Eq0C,EAASgjB,EAAchjB,OAK3B,OAJc,MAAVA,IACAA,EAAUga,GAAaA,EAAUM,qBAC3BL,GAAWA,EAAQK,oBAEtB/hB,YAAS,CAAEoF,MAAO,CACjBjyC,MAAOsuD,EAAYA,EAAUle,OAAS,KACtCnwC,IAAKsuD,EAAUA,EAAQne,OAAS,MACjCkE,OAAQA,GAAUqW,GA7Bd+R,CAAkB9R,EAAK3W,GAC9BhC,EAAQ2kB,EAAK3kB,MACjB,IAAKA,EAAMjyC,MACP,OAAO,KAEX,IAAKiyC,EAAMhyC,IAAK,CACZ,GAAuB,MAAnBw8D,EACA,OAAO,KAEXxqB,EAAMhyC,IAAMg0C,EAAQv6C,IAAIu4C,EAAMjyC,MAAOy8D,GAEzC,OAAO7F,EAyjBa+F,CAAcH,EAAgBt9D,EAAM+0C,QAASmB,GAAe,CAAE3E,KAAM,KAChF8lB,IACA1/D,KAAK04B,SAAS,CAAEh4B,KAAM,eAAgBg/D,UAAWA,IACjDD,GAAkBC,EAAW,KAAMr3D,KAI3Cw6D,EAAYnwC,UAAUq/B,SAAW,SAAU4N,GACvC,IAAIt3D,EAAQrI,KAAKmhE,iBACb94D,EAAM09D,gBACN/lE,KAAK04B,SAAS,CAAEh4B,KAAM,mBAxflC,SAA6Bi/D,EAAKnuD,GAC9BA,EAAQ6sD,QAAQE,QAAQ,WAAY,CAChCE,QAASkB,EAAMA,EAAIE,UAAY,KAC/B5tD,KAAMT,EAAQktD,SAAWltD,EAAQsuD,YAAY7tD,OAsfzC+zD,CAAoBrG,EAAKt3D,KAKjCw6D,EAAYnwC,UAAUuzC,SAAW,SAAUC,EAAYC,GACnD,GAAID,aAAsB1H,GAAU,CAChC,IAAIvrD,EAAMizD,EAAWE,KACjBtyC,EAAWoyC,EAAWG,UAU1B,OATkBrmE,KAAKmhE,iBAENjkB,WAAWI,KAAKrqC,EAAIkoC,SACjCn7C,KAAK04B,SAAS,CACVh4B,KAAM,aACNw8C,WAAYuX,GAAkB,CAAExhD,IAAKA,EAAK6gB,SAAUA,MAExD9zB,KAAKsmE,gBAAgBJ,IAElBA,EAEX,IACIhS,EADA7rD,EAAQrI,KAAKmhE,iBAEjB,GAAIgF,aAAuB1yB,EACvBygB,EAAciS,EAAYzyB,yBAEzB,GAA2B,kBAAhByyB,EACRA,IACAjS,EAAc3X,GAAkBl0C,EAAMyqD,cAAc,SAGvD,GAAmB,MAAfqT,EAAqB,CAC1B,IAAII,EAAYvmE,KAAKwmE,mBAAmBL,GACxC,IAAKI,EAED,OADAx7B,QAAQ24B,KAAK,2CAA8CyC,EAAc,KAClE,KAEXjS,EAAcqS,EAAU7yB,oBAE5B,IAAI6gB,EAAQC,GAAW0R,EAAYhS,EAAa7rD,GAAO,GACvD,GAAIksD,EAAO,CACP,IAAIkS,EAAc,IAAIjI,GAASn2D,EAAOksD,EAAMthD,IAAKshD,EAAMthD,IAAIsqC,aAAe,KAAOgX,EAAMzgC,UAMvF,OALA9zB,KAAK04B,SAAS,CACVh4B,KAAM,aACNw8C,WAAYuX,GAAkBF,KAElCv0D,KAAKsmE,gBAAgBG,GACdA,EAEX,OAAO,MAEX5D,EAAYnwC,UAAU4zC,gBAAkB,SAAUI,GAC9C,IAAIhlB,EAAQ1hD,KACEA,KAAKmhE,iBAAiB9C,QAC5BE,QAAQ,WAAY,CACxBj2C,MAAOo+C,EACPC,cAAe,GACfC,OAAQ,WACJllB,EAAMhpB,SAAS,CACXh4B,KAAM,gBACNw8C,WAAY2pB,GAAgBH,SAM5C7D,EAAYnwC,UAAUo0C,aAAe,SAAU9gD,GAC3C,IAAI3d,EAAQrI,KAAKmhE,iBACbx2D,EAAKtC,EAAM60C,WAAYI,EAAO3yC,EAAG2yC,KAAMlqB,EAAYzoB,EAAGyoB,UAE1D,IAAK,IAAI+nB,KADTn1B,EAAKqpB,OAAOrpB,GACMs3B,EAAM,CACpB,IAAIrqC,EAAMqqC,EAAKnC,GACf,GAAIloC,EAAI+gC,WAAahuB,EAAI,CACrB,GAAI/S,EAAIsqC,aACJ,OAAO,IAAIihB,GAASn2D,EAAO4K,EAAK,MAEpC,IAAK,IAAIsoC,KAAcnoB,EAAW,CAC9B,IAAIU,EAAWV,EAAUmoB,GACzB,GAAIznB,EAASqnB,QAAUloC,EAAIkoC,MACvB,OAAO,IAAIqjB,GAASn2D,EAAO4K,EAAK6gB,KAKhD,OAAO,MAEX+uC,EAAYnwC,UAAUq0C,UAAY,WAC9B,IAAIC,EAAchnE,KAAKmhE,iBACvB,OAAO8F,GAAeD,EAAY9pB,WAAY8pB,IAElDnE,EAAYnwC,UAAUw0C,gBAAkB,WACpClnE,KAAK04B,SAAS,CAAEh4B,KAAM,uBAI1BmiE,EAAYnwC,UAAUy0C,gBAAkB,WACpC,IAAI9+D,EAAQrI,KAAKmhE,iBACbiG,EAAa/+D,EAAMyqD,aACnBuU,EAAa,GACjB,IAAK,IAAIC,KAAcF,EACnBC,EAAWzjE,KAAK,IAAI6vC,EAAeprC,EAAO++D,EAAWE,KAEzD,OAAOD,GAEXxE,EAAYnwC,UAAU8zC,mBAAqB,SAAUxgD,GACjD,IAAI3d,EAAQrI,KAAKmhE,iBACbiG,EAAa/+D,EAAMyqD,aAEvB,IAAK,IAAInf,KADT3tB,EAAKqpB,OAAOrpB,GACSohD,EACjB,GAAIA,EAAWzzB,GAAUK,WAAahuB,EAClC,OAAO,IAAIytB,EAAeprC,EAAO++D,EAAWzzB,IAGpD,OAAO,MAEXkvB,EAAYnwC,UAAU60C,eAAiB,SAAUpB,GAC7C,IAAI99D,EAAQrI,KAAKmhE,iBACjB,GAAIgF,aAAuB1yB,EAQvB,OANKprC,EAAMyqD,aAAaqT,EAAYzyB,oBAAoBC,WACpD3zC,KAAK04B,SAAS,CACVh4B,KAAM,oBACN8mE,QAAS,CAACrB,EAAYzyB,uBAGvByyB,EAEX,IAAIjS,EAAc0N,GAAiBuE,EAAa99D,GAChD,OAAI6rD,GACAl0D,KAAK04B,SAAS,CAAEh4B,KAAM,oBAAqB8mE,QAAS,CAACtT,KAC9C,IAAIzgB,EAAeprC,EAAO6rD,IAE9B,MAEX2O,EAAYnwC,UAAU+0C,sBAAwB,WAC1CznE,KAAK04B,SAAS,CAAEh4B,KAAM,8BAE1BmiE,EAAYnwC,UAAUg1C,cAAgB,WAClC1nE,KAAK04B,SAAS,CAAEh4B,KAAM,sBAAuBozC,WAAW,KAI5D+uB,EAAYnwC,UAAUi1C,aAAe,SAAUC,GAC3C,IAAIC,EAAOtpB,GAAeqpB,GACtBC,GACA7nE,KAAKu+D,QAAQ,iBAAkB,CAAEsJ,KAAMA,KAGxChF,EAxYsB,GA2Y7BrE,GAA0B,WAG1B,SAASA,EAAShtD,EAASyB,EAAK6gB,GAC5B9zB,KAAK8nE,SAAWt2D,EAChBxR,KAAKomE,KAAOnzD,EACZjT,KAAKqmE,UAAYvyC,GAAY,KAyajC,OApaA0qC,EAAS9rC,UAAUq1C,QAAU,SAAU5mE,EAAMmtC,GACzC,IAAI3jC,EAAIC,EACR,GAAIzJ,KAAQ21D,GACR/rB,QAAQ24B,KAAK,6FAGZ,GAAa,OAATviE,EACLmtC,EAAMqoB,GAAwBx1D,GAAMmtC,GACpCtuC,KAAKgoE,OAAO,CACRvH,cAAe,CAAEzsB,SAAU1F,UAG9B,GAAIntC,KAAQw1D,GACbroB,EAAMqoB,GAAwBx1D,GAAMmtC,GACpCtuC,KAAKgoE,OAAO,CACRvH,eAAgB91D,EAAK,GAAIA,EAAGxJ,GAAQmtC,EAAK3jC,UAG5C,GAAIxJ,KAAQo0D,GAAmB,CAChC,IAAI2C,EAAK3C,GAAkBp0D,GAAMmtC,GACpB,UAATntC,EACA+2D,EAAK,CAAEpC,gBAAiBxnB,EAAKynB,YAAaznB,GAE5B,aAATntC,EACL+2D,EAAK,CAAE1C,cAAelnB,EAAKmnB,iBAAkBnnB,KAGvC1jC,EAAK,IAAOzJ,GAAQmtC,EAA1B4pB,EAA+BttD,GAEnC5K,KAAKgoE,OAAO,CACRvH,cAAe,CAAEvI,GAAIA,UAIzBntB,QAAQ24B,KAAK,uBAAyBviE,EAAO,oCAGrDq9D,EAAS9rC,UAAUu1C,gBAAkB,SAAU9mE,EAAMmtC,GACjD,IAAI3jC,EACJ3K,KAAKgoE,OAAO,CACRhR,eAAgBrsD,EAAK,GAAIA,EAAGxJ,GAAQmtC,EAAK3jC,MAGjD6zD,EAAS9rC,UAAUw1C,SAAW,SAAUC,EAAYngD,QAChC,IAAZA,IAAsBA,EAAU,IACpC,IAAIo1B,EAAUp9C,KAAK8nE,SAAS1qB,QACxBj0C,EAAQi0C,EAAQwlB,aAAauF,GACjC,GAAIh/D,GAASnJ,KAAKqmE,UAAW,CACzB,IACI3F,EAAa5H,GADG94D,KAAKqmE,UAAUjrB,MACMjyC,MAAOA,EAAOi0C,EAASp1B,EAAQogD,aAEpEpoE,KAAKgoE,OADLhgD,EAAQqgD,iBACI,CAAEpH,WAAYP,GAGd,CAAEA,WAAYA,MAItClC,EAAS9rC,UAAU41C,OAAS,SAAUC,EAAUvgD,QAC5B,IAAZA,IAAsBA,EAAU,IACpC,IACI5e,EADAg0C,EAAUp9C,KAAK8nE,SAAS1qB,QAE5B,IAAgB,MAAZmrB,IACAn/D,EAAMg0C,EAAQwlB,aAAa2F,MAK3BvoE,KAAKqmE,UACL,GAAIj9D,EAAK,CACL,IAAIu3D,EAAW7H,GAAU94D,KAAKqmE,UAAUjrB,MAAMhyC,IAAKA,EAAKg0C,EAASp1B,EAAQogD,aACzEpoE,KAAKgoE,OAAO,CAAErH,SAAUA,SAGxB3gE,KAAKgoE,OAAO,CAAEvH,cAAe,CAAE7I,QAAQ,MAInD4G,EAAS9rC,UAAU81C,SAAW,SAAUL,EAAYI,EAAUvgD,QAC1C,IAAZA,IAAsBA,EAAU,IACpC,IAGI5e,EAp8EYq2C,EAAIC,EAi8EhBtC,EAAUp9C,KAAK8nE,SAAS1qB,QACxBqjB,EAAgB,CAAEhjB,OAAQz1B,EAAQy1B,QAClCt0C,EAAQi0C,EAAQwlB,aAAauF,GAEjC,GAAKh/D,IAGW,MAAZo/D,IACAn/D,EAAMg0C,EAAQwlB,aAAa2F,MAK3BvoE,KAAKqmE,UAAW,CAChB,IAAIoC,EAAgBzoE,KAAKqmE,UAAUjrB,OAGZ,IAAnBpzB,EAAQy1B,SACRgrB,EAAgBnQ,GAAuBmQ,IAE3C,IAAI/H,EAAa5H,GAAU2P,EAAct/D,MAAOA,EAAOi0C,EAASp1B,EAAQogD,aACxE,GAAIh/D,EAAK,CACL,IAAIu3D,EAAW7H,GAAU2P,EAAcr/D,IAAKA,EAAKg0C,EAASp1B,EAAQogD,aAE9DpoE,KAAKgoE,QAz9EDvoB,EAw9EWihB,GAv9ErB9hB,SADcc,EAw9EmBihB,GAv9EpB/hB,OACnBa,EAAG78B,SAAW88B,EAAG98B,QACjB68B,EAAG7F,OAAS8F,EAAG9F,MACf6F,EAAGZ,eAAiBa,EAAGb,aAq9EC,CAAEoiB,WAAYP,EAAYD,cAAeA,GAGzC,CAAEC,WAAYA,EAAYC,SAAUA,EAAUF,cAAeA,SAI7EA,EAAc7I,QAAS,EACvB53D,KAAKgoE,OAAO,CAAE/G,WAAYP,EAAYD,cAAeA,MAIjEjC,EAAS9rC,UAAUg2C,UAAY,SAAUrD,GACrC,IAAIC,EAAQ/mB,GAAe8mB,GACvBC,GACAtlE,KAAKgoE,OAAO,CAAEtH,WAAY4E,KAGlC9G,EAAS9rC,UAAUi2C,QAAU,SAAUtD,GACnC,IAAIC,EAAQ/mB,GAAe8mB,GACvBC,GACAtlE,KAAKgoE,OAAO,CAAErH,SAAU2E,KAGhC9G,EAAS9rC,UAAUk2C,UAAY,SAAUvD,GACrC,IAAIC,EAAQ/mB,GAAe8mB,GACvBC,GACAtlE,KAAKgoE,OAAO,CAAE/G,WAAYqE,KAGlC9G,EAAS9rC,UAAUm2C,UAAY,SAAUprB,EAAQz1B,QAC7B,IAAZA,IAAsBA,EAAU,IACpC,IAAIy4C,EAAgB,CAAEhjB,OAAQA,GAC1B4qB,EAAmBrgD,EAAQqgD,iBACP,MAApBA,IACAA,EAAmBroE,KAAK8nE,SAAS9/C,QAAQ0iC,wBAEzC1qD,KAAKomE,KAAK3oB,SAAWA,IACrBgjB,EAAc7I,OAASyQ,GAE3BroE,KAAKgoE,OAAO,CAAEvH,cAAeA,KAEjCjC,EAAS9rC,UAAUswB,YAAc,SAAU8lB,GACvC,IAAI1rB,EAAUp9C,KAAK8nE,SAAS1qB,QACxBtpB,EAAW9zB,KAAKqmE,UAChB5uB,EAAYsP,GAAgB+hB,GAChC,OAAI9oE,KAAKomE,KAAKxO,OACHxa,EAAQ4F,YAAYlvB,EAASsnB,MAAMjyC,MAAO2qB,EAASsnB,MAAMhyC,IAAKquC,EAAW,CAC5E4D,eAAgBvnB,EAASunB,eACzBC,aAAcxnB,EAASwnB,eAGxB8B,EAAQr6B,OAAO+Q,EAASsnB,MAAMjyC,MAAOsuC,EAAW,CACnDugB,UAAWlkC,EAASunB,kBAG5BmjB,EAAS9rC,UAAUs1C,OAAS,SAAU5H,GAClC,IAAItsC,EAAW9zB,KAAKqmE,UACpB,GAAIvyC,EAAU,CACV,IAAI7gB,EAAMjT,KAAKomE,KACX2C,EAAY/oE,KAAK8nE,SACjBkB,EAAeD,EAAU5H,iBAAiBjkB,WAC1C+rB,EAAiBvU,GAAkBsU,EAAcl1C,EAASynB,YAe9D0tB,EAAiB/I,GAA0B+I,EAdrB,CAClB,GAAI,CACAl2D,QAAS,GACTyiD,eAAe,EACfC,kBAAkB,EAClBS,YAAa,GACbP,QAAS,KACTQ,OAAQ,GACRL,gBAAiB,GACjBC,YAAa,GACbC,UAAW,GACX3C,WAAY,KAGwD+M,EAAU2I,GACtF,IAAIG,EAAW,IAAI1K,EAASuK,EAAW91D,EAAK6gB,GAC5C9zB,KAAKomE,KAAO6C,EAAe3rB,KAAKrqC,EAAIkoC,OACpCn7C,KAAKqmE,UAAY4C,EAAe71C,UAAUU,EAASynB,YACnDwtB,EAAUrwC,SAAS,CACfh4B,KAAM,eACNw8C,WAAY+rB,IAEhBF,EAAU1K,QAAQE,QAAQ,cAAe,CACrC2K,SAAUA,EACV5gD,MAAOtoB,KACP2mE,cAAeM,GAAegC,EAAgBF,EAAWj1C,GACzD8yC,OAAQ,WACJmC,EAAUrwC,SAAS,CACfh4B,KAAM,eACNw8C,WAAY8rB,SAMhCxK,EAAS9rC,UAAUlnB,OAAS,WACxB,IAAIgG,EAAUxR,KAAK8nE,SACfqB,EAAUtC,GAAgB7mE,MAC9BwR,EAAQknB,SAAS,CACbh4B,KAAM,gBACNw8C,WAAYisB,IAEhB33D,EAAQ6sD,QAAQE,QAAQ,cAAe,CACnCj2C,MAAOtoB,KACP2mE,cAAe,GACfC,OAAQ,WACJp1D,EAAQknB,SAAS,CACbh4B,KAAM,eACNw8C,WAAYisB,QAK5B3sD,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,SAAU,CAChDxgB,IAAK,WACD,IAAIyhC,EAAW3zC,KAAKomE,KAAKzyB,SACzB,OAAIA,EACO,IAAIF,EAAezzC,KAAK8nE,SAAU9nE,KAAK8nE,SAAS3G,iBAAiBrO,aAAanf,IAElF,MAEXM,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,QAAS,CAC/CxgB,IAAK,WACD,OAAOlS,KAAKqmE,UACRrmE,KAAK8nE,SAAS1qB,QAAQ+hB,OAAOn/D,KAAKqmE,UAAUjrB,MAAMjyC,OAClD,MAER8qC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,MAAO,CAC7CxgB,IAAK,WACD,OAAQlS,KAAKqmE,WAAarmE,KAAKomE,KAAKxO,OAChC53D,KAAK8nE,SAAS1qB,QAAQ+hB,OAAOn/D,KAAKqmE,UAAUjrB,MAAMhyC,KAClD,MAER6qC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,WAAY,CAClDxgB,IAAK,WACD,IAAI4hB,EAAW9zB,KAAKqmE,UACpB,OAAIvyC,EACO9zB,KAAK8nE,SAAS1qB,QAAQiiB,UAAUvrC,EAASsnB,MAAMjyC,MAAO,CACzD81D,SAAUj/D,KAAKomE,KAAK3oB,OACpBua,UAAWlkC,EAASunB,iBAGrB,IAEXpH,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,SAAU,CAChDxgB,IAAK,WACD,IAAI4hB,EAAW9zB,KAAKqmE,UACpB,OAAIvyC,GAAY9zB,KAAKomE,KAAKxO,OACf53D,KAAK8nE,SAAS1qB,QAAQiiB,UAAUvrC,EAASsnB,MAAMhyC,IAAK,CACvD61D,SAAUj/D,KAAKomE,KAAK3oB,OACpBua,UAAWlkC,EAASwnB,eAGrB,IAEXrH,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,KAAM,CAG5CxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKpyB,UACpCC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,UAAW,CACjDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKpR,SACpC/gB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,SAAU,CAChDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAK3oB,QACpCxJ,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,QAAS,CAC/CxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKxP,OACpC3iB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,MAAO,CAC7CxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKjyB,KACpCF,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,UAAW,CACjDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAGnlD,SAAW,QAElDkhC,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,gBAAiB,CACvDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAG1C,eACvCvhB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,mBAAoB,CAC1DxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAGzC,kBACvCxhB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,aAAc,CACpDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAGhC,YAAY,IAAM,MACzDjiB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,UAAW,CACjDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAGvC,SACvC1hB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,QAAS,CAC/CxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAG/B,OAAO,IAAM,MACpDliB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,kBAAmB,CACzDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAGpC,iBACvC7hB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,cAAe,CACrDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAGnC,aACvC9hB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,YAAa,CACnDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAGlC,WACvC/hB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,aAAc,CAEpDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKlO,GAAG7E,YACvCpf,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeyqB,EAAS9rC,UAAW,gBAAiB,CACvDxgB,IAAK,WAAc,OAAOlS,KAAKomE,KAAKpP,eACpC/iB,YAAY,EACZvW,cAAc,IAElB8gC,EAAS9rC,UAAU02C,cAAgB,SAAU5D,QACxB,IAAbA,IAAuBA,EAAW,IACtC,IAAIvyD,EAAMjT,KAAKomE,KACXlO,EAAKjlD,EAAIilD,GACEkH,EAANp/D,KAAoBo/D,SAAUE,EAA9Bt/D,KAA0Cs/D,OAC/ChnC,EAAM,GAiDV,OAhDIrlB,EAAI2jD,QACJt+B,EAAIs+B,MAAQ3jD,EAAI2jD,OAEhBwI,IACA9mC,EAAInvB,MAAQi2D,GAEZE,IACAhnC,EAAIlvB,IAAMk2D,GAEVrsD,EAAI+gC,WACJ1b,EAAItS,GAAK/S,EAAI+gC,UAEb/gC,EAAI+hD,UACJ18B,EAAI08B,QAAU/hD,EAAI+hD,SAElB/hD,EAAIkhC,MACJ7b,EAAI6b,IAAMlhC,EAAIkhC,KAEd+jB,EAAGnlD,SAA0B,SAAfmlD,EAAGnlD,UACjBulB,EAAIvlB,QAAUmlD,EAAGnlD,SAIjByyD,EAAS6D,eAAiBnR,EAAGpC,iBAAmBoC,EAAGpC,kBAAoBoC,EAAGnC,YAC1Ez9B,EAAIu9B,MAAQqC,EAAGpC,iBAGXoC,EAAGpC,kBACHx9B,EAAIw9B,gBAAkBoC,EAAGpC,iBAEzBoC,EAAGnC,cACHz9B,EAAIy9B,YAAcmC,EAAGnC,cAGzBmC,EAAGlC,YACH19B,EAAI09B,UAAYkC,EAAGlC,WAEnBkC,EAAG7E,WAAWlvD,SACdm0B,EAAI+6B,WAAa6E,EAAG7E,YAEpB72C,OAAOC,KAAKxJ,EAAI+jD,eAAe7yD,SAC3BqhE,EAAS8D,sBACTtzB,YAAS1d,EAAKrlB,EAAI+jD,eAGlB1+B,EAAI0+B,cAAgB/jD,EAAI+jD,eAGzB1+B,GAEXkmC,EAAS9rC,UAAU62C,OAAS,WACxB,OAAOvpE,KAAKopE,iBAET5K,EA/amB,GAib9B,SAASqI,GAAgBH,GACrB,IAAI/7D,EAAIC,EACJqI,EAAMyzD,EAASN,KACftyC,EAAW4yC,EAASL,UACxB,MAAO,CACH/oB,MAAO3yC,EAAK,GAAIA,EAAGsI,EAAIkoC,OAASloC,EAAKtI,GACrCyoB,UAAWU,GACJlpB,EAAK,GAAIA,EAAGkpB,EAASynB,YAAcznB,EAAUlpB,GAAM,IAGlE,SAASq8D,GAAe/pB,EAAY1rC,EAASg4D,GACzC,IAAIlsB,EAAOJ,EAAWI,KAAMlqB,EAAY8pB,EAAW9pB,UAC/Cq2C,EAAY,GACZC,EAAoBF,EAAkBA,EAAgBjuB,WAAa,GACvE,IAAK,IAAIv1B,KAAMoN,EAAW,CACtB,IAAIU,EAAWV,EAAUpN,GAErB8N,EAASynB,aAAemuB,GACxBD,EAAU7lE,KAAK,IAAI46D,GAAShtD,EAFtB8rC,EAAKxpB,EAASqnB,OAEsBrnB,IAGlD,OAAO21C,EAGX,IAAIE,GAAyB,GAOzBC,GAAyC,WACzC,SAASA,KAiBT,OAfAA,EAAwBl3C,UAAU2wB,cAAgB,SAAUrrC,GACxD,OAAOA,EAAEmhC,kBAEbywB,EAAwBl3C,UAAU4wB,eAAiB,SAAUtrC,GACzD,OAAOA,EAAEohC,eAEbwwB,EAAwBl3C,UAAU6wB,aAAe,SAAUvrC,GACvD,OAAOA,EAAEqhC,cAEbuwB,EAAwBl3C,UAAUm3C,cAAgB,SAAUl6B,GACxD,OAAO4I,GAAe5I,IAE1Bi6B,EAAwBl3C,UAAU6zB,cAAgB,SAAUhN,GACxD,OAAOjB,GAAeiB,IAEnBqwB,EAlBkC,GALzCD,GAAsB,QAyBQC,GAElC,IAAIE,GAAS,oHAqBTC,GAAyB,WACzB,SAASA,EAAQvE,GACb,IAAIhgB,EAAWxlD,KAAKwlD,SAAWggB,EAAShgB,SACpCwkB,EAA+B,UAAbxkB,GAAqC,QAAbA,EAC1CggB,EAASyE,mBAAqBD,IAC9BhqE,KAAKiqE,kBAAoB,IAAIzE,EAASyE,kBAAkBzkB,IAE5DxlD,KAAKkqE,iBAAmBxiB,SAASsiB,GAAmBhqE,KAAKiqE,mBACzDjqE,KAAKojD,eArDF,IAAIumB,GAqDoCnE,EAASpiB,gBACpDpjD,KAAKmlD,OAASqgB,EAASrgB,OACvBnlD,KAAKmqE,QAAU3E,EAASrgB,OAAOx/B,KAAKC,IACpC5lB,KAAKoqE,QAAU5E,EAASrgB,OAAOx/B,KAAKE,IACG,QAAnC2/C,EAAStc,wBACTlpD,KAAKmqE,QAAU,EACfnqE,KAAKoqE,QAAU,GAEc,iBAAtB5E,EAAS3V,WAChB7vD,KAAKmqE,QAAU3E,EAAS3V,UAEkB,mBAAnC2V,EAAStc,wBAChBlpD,KAAKqqE,eAAiB7E,EAAStc,uBAEnClpD,KAAKklD,SAAgC,MAArBsgB,EAAStgB,SAAmBsgB,EAAStgB,SAAWsgB,EAASrgB,OAAOn9B,QAAQk9B,SACxFllD,KAAKqlD,cAAyC,MAAzBmgB,EAASngB,aAAuBmgB,EAASngB,aAAemgB,EAASrgB,OAAOn9B,QAAQq9B,eAAiBrlD,KAAKklD,SAC3HllD,KAAK6mD,aAAe2e,EAAS3e,aAC7B7mD,KAAK6kD,iBAAmB2gB,EAAS3gB,iBAwSrC,OArSAklB,EAAQr3C,UAAUkwC,aAAe,SAAUpkB,GACvC,IAAItK,EAAOl0C,KAAK83D,iBAAiBtZ,GACjC,OAAa,OAATtK,EACO,KAEJA,EAAKqF,QAEhBwwB,EAAQr3C,UAAUiwC,gBAAkB,WAChC,OAAI3iE,KAAKkqE,iBACElqE,KAAKsqE,mBAAkB,IAAI5vB,MAAO5B,WAItCP,GAAeyB,GAAiB,IAAIU,QAE/CqvB,EAAQr3C,UAAUolC,iBAAmB,SAAUtZ,GAC3C,GAAqB,iBAAVA,EACP,OAAOx+C,KAAKm6B,MAAMqkB,GAEtB,IAAIjF,EAAS,KAab,MAZqB,iBAAViF,EACPjF,EAASv5C,KAAKsqE,kBAAkB9rB,GAE3BA,aAAiB9D,MACtB8D,EAAQA,EAAM1F,UACTmC,MAAMuD,KACPjF,EAASv5C,KAAKsqE,kBAAkB9rB,KAG/Bj0C,MAAMyL,QAAQwoC,KACnBjF,EAAShB,GAAeiG,IAEb,OAAXjF,GAAoByB,GAAYzB,GAG7B,CAAEA,OAAQA,EAAQwe,mBAAmB,EAAOC,UAAW,MAFnD,MAIf+R,EAAQr3C,UAAUyH,MAAQ,SAAUvV,GAChC,IAAIwgC,EAtFZ,SAAe1W,GACX,IAAI5rB,EAAIgnD,GAAOprB,KAAKhQ,GACpB,GAAI5rB,EAAG,CACH,IAAIy2B,EAAS,IAAImB,KAAKA,KAAKK,IAAIpsC,OAAOmU,EAAE,IAAKA,EAAE,GAAKnU,OAAOmU,EAAE,IAAM,EAAI,EAAGnU,OAAOmU,EAAE,IAAM,GAAInU,OAAOmU,EAAE,IAAM,GAAInU,OAAOmU,EAAE,IAAM,GAAInU,OAAOmU,EAAE,KAAO,GAAIA,EAAE,IAA6B,IAAvBnU,OAAO,KAAOmU,EAAE,KAAc,IAC7L,GAAIk4B,GAAYzB,GAAS,CACrB,IAAI8G,EAAiB,KAKrB,OAJIv9B,EAAE,MACFu9B,GAA4B,MAAVv9B,EAAE,KAAe,EAAI,IAA2B,GAArBnU,OAAOmU,EAAE,KAAO,GACzDnU,OAAOmU,EAAE,KAAO,KAEjB,CACHy2B,OAAQA,EACRwe,mBAAoBj1C,EAAE,GACtBu9B,eAAgBA,IAI5B,OAAO,KAqESlmB,CAAMvV,GAClB,GAAc,OAAVwgC,EACA,OAAO,KAEX,IAAI7L,EAAS6L,EAAM7L,OACfye,EAAY,KAShB,OAR6B,OAAzB5S,EAAM/E,iBACFrgD,KAAKkqE,iBACL3wB,EAASv5C,KAAKsqE,kBAAkB/wB,EAAOT,UAAmC,GAAvBsM,EAAM/E,eAAsB,KAG/E2X,EAAY5S,EAAM/E,gBAGnB,CAAE9G,OAAQA,EAAQwe,kBAAmB3S,EAAM2S,kBAAmBC,UAAWA,IAGpF+R,EAAQr3C,UAAU63C,QAAU,SAAUhxB,GAClC,OAAOv5C,KAAKojD,eAAeC,cAAc9J,IAE7CwwB,EAAQr3C,UAAUynB,SAAW,SAAUZ,GACnC,OAAOv5C,KAAKojD,eAAeE,eAAe/J,IAG9CwwB,EAAQr3C,UAAU7vB,IAAM,SAAU02C,EAAQsG,GACtC,IAAI9jC,EAAI/b,KAAKojD,eAAemD,cAAchN,GAK1C,OAJAx9B,EAAE,IAAM8jC,EAAIjB,MACZ7iC,EAAE,IAAM8jC,EAAIj9B,OACZ7G,EAAE,IAAM8jC,EAAIjG,KACZ79B,EAAE,IAAM8jC,EAAIhB,aACL7+C,KAAKojD,eAAeymB,cAAc9tD,IAE7CguD,EAAQr3C,UAAU0rB,SAAW,SAAU7E,EAAQsG,GAC3C,IAAI9jC,EAAI/b,KAAKojD,eAAemD,cAAchN,GAK1C,OAJAx9B,EAAE,IAAM8jC,EAAIjB,MACZ7iC,EAAE,IAAM8jC,EAAIj9B,OACZ7G,EAAE,IAAM8jC,EAAIjG,KACZ79B,EAAE,IAAM8jC,EAAIhB,aACL7+C,KAAKojD,eAAeymB,cAAc9tD,IAE7CguD,EAAQr3C,UAAUmyC,SAAW,SAAUtrB,EAAQxB,GAC3C,IAAIh8B,EAAI/b,KAAKojD,eAAemD,cAAchN,GAE1C,OADAx9B,EAAE,IAAMg8B,EACD/3C,KAAKojD,eAAeymB,cAAc9tD,IAE7CguD,EAAQr3C,UAAU83C,UAAY,SAAUjxB,EAAQxB,GAC5C,IAAIh8B,EAAI/b,KAAKojD,eAAemD,cAAchN,GAE1C,OADAx9B,EAAE,IAAMg8B,EACD/3C,KAAKojD,eAAeymB,cAAc9tD,IAG7CguD,EAAQr3C,UAAUwmC,eAAiB,SAAUvgB,EAAIC,GAC7C,IAAIwK,EAAiBpjD,KAAKojD,eAC1B,OAAIpK,GAASL,KAAQK,GAASJ,IAC1BwK,EAAeG,aAAa5K,KAAQyK,EAAeG,aAAa3K,IAChEwK,EAAeE,eAAe3K,KAAQyK,EAAeE,eAAe1K,GAC7DwK,EAAeC,cAAczK,GAAMwK,EAAeC,cAAc1K,GAEpE,MAEXoxB,EAAQr3C,UAAUymC,gBAAkB,SAAUxgB,EAAIC,GAC9C,IAAIwK,EAAiBpjD,KAAKojD,eAC1B,OAAIpK,GAASL,KAAQK,GAASJ,IAC1BwK,EAAeG,aAAa5K,KAAQyK,EAAeG,aAAa3K,GACxDwK,EAAeE,eAAe1K,GAAMwK,EAAeE,eAAe3K,GACE,IAAvEyK,EAAeC,cAAczK,GAAMwK,EAAeC,cAAc1K,IAElE,MAGXoxB,EAAQr3C,UAAU+3C,kBAAoB,SAAU9xB,EAAIC,GAChD,IAAIb,EAAI/3C,KAAKk5D,eAAevgB,EAAIC,GAChC,OAAU,OAANb,EACO,CAAE0G,KAAM,OAAQl9C,MAAOw2C,GAGxB,QADVA,EAAI/3C,KAAKm5D,gBAAgBxgB,EAAIC,IAElB,CAAE6F,KAAM,QAASl9C,MAAOw2C,GAGzB,QADVA,EA54GR,SAAwBY,EAAIC,GACxB,IAAI5gC,EAAI+gC,EAAcJ,EAAIC,GAC1B,OAAU,OAAN5gC,GAAcA,EAAI,GAAM,EACjBA,EAAI,EAER,KAu4GC0yD,CAAe/xB,EAAIC,IAEZ,CAAE6F,KAAM,OAAQl9C,MAAOw2C,GAGxB,QADVA,EAAIgB,EAAcJ,EAAIC,IAEX,CAAE6F,KAAM,MAAOl9C,MAAOw2C,GAG7BD,EADJC,EAx6GR,SAAmBY,EAAIC,GACnB,OAAQA,EAAGE,UAAYH,EAAGG,WAAnB,KAu6GC6xB,CAAUhyB,EAAIC,IAEP,CAAE6F,KAAM,OAAQl9C,MAAOw2C,GAG9BD,EADJC,EAz6GR,SAAqBY,EAAIC,GACrB,OAAQA,EAAGE,UAAYH,EAAGG,WAAnB,IAw6GC8xB,CAAYjyB,EAAIC,IAET,CAAE6F,KAAM,SAAUl9C,MAAOw2C,GAGhCD,EADJC,EA16GR,SAAqBY,EAAIC,GACrB,OAAQA,EAAGE,UAAYH,EAAGG,WAAa,IAy6G/B+xB,CAAYlyB,EAAIC,IAET,CAAE6F,KAAM,SAAUl9C,MAAOw2C,GAE7B,CAAE0G,KAAM,cAAel9C,MAAOq3C,EAAGE,UAAYH,EAAGG,YAE3DixB,EAAQr3C,UAAUo4C,sBAAwB,SAAUnyB,EAAIC,EAAI5gC,GAExD,IAAIzS,EACJ,OAAIyS,EAAE4mC,OAEW,QADbr5C,EAAOvF,KAAKk5D,eAAevgB,EAAIC,IAEpBrzC,GAt+FZq6C,GAs+FgC5nC,GAt+Fb,KAy+FlBA,EAAE4K,QAEW,QADbrd,EAAOvF,KAAKm5D,gBAAgBxgB,EAAIC,IAErBrzC,GAz+FZq6C,GAy+FiC5nC,GAz+Fd,IA4+FlBA,EAAE4hC,MAEW,QADbr0C,EAAOwzC,EAAcJ,EAAIC,IAEdrzC,EAAOq6C,GAAY5nC,IAG1B4gC,EAAGE,UAAYH,EAAGG,WAAagH,GAAU9nC,IAIrD+xD,EAAQr3C,UAAUq4C,QAAU,SAAUjoD,EAAG27B,GACrC,MAAa,SAATA,EACOz+C,KAAKgrE,YAAYloD,GAEf,UAAT27B,EACOz+C,KAAKirE,aAAanoD,GAEhB,SAAT27B,EACOz+C,KAAKkrE,YAAYpoD,GAEf,QAAT27B,EACOvF,EAAWp2B,GAET,SAAT27B,EAn7GZ,SAAqB37B,GACjB,OAAOy1B,GAAe,CAClBz1B,EAAEq2B,iBACFr2B,EAAEs2B,cACFt2B,EAAEu2B,aACFv2B,EAAE63B,gBA+6GSwwB,CAAYroD,GAEV,WAAT27B,EA96GZ,SAAuB37B,GACnB,OAAOy1B,GAAe,CAClBz1B,EAAEq2B,iBACFr2B,EAAEs2B,cACFt2B,EAAEu2B,aACFv2B,EAAE63B,cACF73B,EAAE83B,kBAy6GSwwB,CAActoD,GAEZ,WAAT27B,EAx6GZ,SAAuB37B,GACnB,OAAOy1B,GAAe,CAClBz1B,EAAEq2B,iBACFr2B,EAAEs2B,cACFt2B,EAAEu2B,aACFv2B,EAAE63B,cACF73B,EAAE83B,gBACF93B,EAAE+3B,kBAk6GSwwB,CAAcvoD,GAElB,MAEXinD,EAAQr3C,UAAUs4C,YAAc,SAAUloD,GACtC,OAAO9iB,KAAKojD,eAAeymB,cAAc,CACrC7pE,KAAKojD,eAAeC,cAAcvgC,MAG1CinD,EAAQr3C,UAAUu4C,aAAe,SAAUnoD,GACvC,OAAO9iB,KAAKojD,eAAeymB,cAAc,CACrC7pE,KAAKojD,eAAeC,cAAcvgC,GAClC9iB,KAAKojD,eAAeE,eAAexgC,MAG3CinD,EAAQr3C,UAAUw4C,YAAc,SAAUpoD,GACtC,OAAO9iB,KAAKojD,eAAeymB,cAAc,CACrC7pE,KAAKojD,eAAeC,cAAcvgC,GAClC9iB,KAAKojD,eAAeE,eAAexgC,GACnCA,EAAEu2B,cAAiBv2B,EAAEi3B,YAAc/5C,KAAKmqE,QAAU,GAAK,KAI/DJ,EAAQr3C,UAAUuyB,kBAAoB,SAAU1L,GAC5C,OAAIv5C,KAAKqqE,eACErqE,KAAKqqE,eAAerqE,KAAKm/D,OAAO5lB,IAv7GnD,SAAoBA,EAAQ3zB,EAAKC,GAC7B,IAAIP,EAAIi0B,EAAOJ,iBACXj0B,EAAIo0B,EAAgBC,EAAQj0B,EAAGM,EAAKC,GACxC,GAAIX,EAAI,EACJ,OAAOo0B,EAAgBC,EAAQj0B,EAAI,EAAGM,EAAKC,GAE/C,IAAIylD,EAAQhyB,EAAgBC,EAAQj0B,EAAI,EAAGM,EAAKC,GAChD,OAAIylD,GAAS,EACF/sD,KAAKG,IAAIwG,EAAGomD,GAEhBpmD,EA+6GIqmD,CAAWhyB,EAAQv5C,KAAKmqE,QAASnqE,KAAKoqE,UAGjDL,EAAQr3C,UAAU3P,OAAS,SAAUw2B,EAAQ9B,EAAW+zB,GAEpD,YADoB,IAAhBA,IAA0BA,EAAc,IACrC/zB,EAAU10B,OAAO,CACpBw2B,OAAQA,EACR8G,eAAyC,MAAzBmrB,EAAYxT,UACxBwT,EAAYxT,UACZh4D,KAAKyrE,gBAAgBlyB,IAC1Bv5C,OAEP+pE,EAAQr3C,UAAUswB,YAAc,SAAU75C,EAAOC,EAAKquC,EAAW+zB,GAK7D,YAJoB,IAAhBA,IAA0BA,EAAc,IACxCA,EAAYE,iBACZtiE,EAAMqvC,EAAMrvC,GAAM,IAEfquC,EAAUuL,YAAY,CACzBzJ,OAAQpwC,EACRk3C,eAA8C,MAA9BmrB,EAAYnwB,eACxBmwB,EAAYnwB,eACZr7C,KAAKyrE,gBAAgBtiE,IAC1B,CACCowC,OAAQnwC,EACRi3C,eAA4C,MAA5BmrB,EAAYlwB,aACxBkwB,EAAYlwB,aACZt7C,KAAKyrE,gBAAgBriE,IAC1BpJ,KAAMwrE,EAAY3mB,mBAMzBklB,EAAQr3C,UAAU2sC,UAAY,SAAU9lB,EAAQoyB,QACvB,IAAjBA,IAA2BA,EAAe,IAC9C,IAAItrB,EAAiB,KASrB,OARKsrB,EAAaC,qBAEVvrB,EAD0B,MAA1BsrB,EAAa3T,UACI2T,EAAa3T,UAGbh4D,KAAKyrE,gBAAgBlyB,IAGvC6G,GAAe7G,EAAQ8G,EAAgBsrB,EAAa1M,WAG/D8K,EAAQr3C,UAAU43C,kBAAoB,SAAUjrB,GAC5C,MAAsB,UAAlBr/C,KAAKwlD,SACEjN,GAAeyB,GAAiB,IAAIU,KAAK2E,KAE9B,QAAlBr/C,KAAKwlD,UAAuBxlD,KAAKiqE,kBAG9B1xB,GAAev4C,KAAKiqE,kBAAkB4B,iBAAiBxsB,IAFnD,IAAI3E,KAAK2E,IAIxB0qB,EAAQr3C,UAAU+4C,gBAAkB,SAAU3oD,GAC1C,MAAsB,UAAlB9iB,KAAKwlD,UACG/K,GAAiBnC,GAAex1B,IAAIgpD,oBAE1B,QAAlB9rE,KAAKwlD,SACE,EAEPxlD,KAAKiqE,kBACEjqE,KAAKiqE,kBAAkB8B,eAAezzB,GAAex1B,IAEzD,MAGXinD,EAAQr3C,UAAUysC,OAAS,SAAUr8C,EAAGk1C,GACpC,MAAsB,UAAlBh4D,KAAKwlD,SACE/K,GAAiBnC,GAAex1B,IAErB,QAAlB9iB,KAAKwlD,SACE,IAAI9K,KAAK53B,EAAEg2B,WAEjB94C,KAAKiqE,kBAGH,IAAIvvB,KAAK53B,EAAEg2B,UAC6C,IAA3D94C,KAAKiqE,kBAAkB8B,eAAezzB,GAAex1B,IAAa,IAH3D,IAAI43B,KAAK53B,EAAEg2B,WAAakf,GAAa,KAK7C+R,EAjUkB,GAoUzBiC,GAAgB,GAEhBC,GAAwB,CACxBC,KAAM,KACNvmD,KAAM,CACFC,IAAK,EACLC,IAAK,GAET7e,UAAW,MACXyrD,WAAY,CACRkS,KAAM,OACN9gE,KAAM,OACN+gE,SAAU,YACVG,SAAU,YACVvrB,KAAM,OACNwrB,MAAO,QACP/hD,MAAO,QACP0C,KAAM,OACNmsB,IAAK,MACLq6B,KAAM,QAEVjnB,SAAU,IACVG,aAAc,OACdsL,UAAW,QACXC,SAAU,OACVC,UAAW,QACXtC,WAAY,UACZS,aAAc,OACdwB,aAAc,wBAEd4b,GAAgBp2B,YAASA,YAAS,GAAIi2B,IAAwB,CAG9DvZ,YAAa,CACTiS,KAAM,cACN9gE,KAAM,UACNmhE,MAAO,SAAUvS,EAAYhU,GACzB,MAAiB,QAATA,EACF,QACA,QAAUgU,IAErBhC,SAAU,UAAWC,YAAa,WAAYzB,aAAc,SAAUod,GACrE,MAAO,QAAUA,EAAW,eAA8B,IAAbA,EAAiB,GAAK,QAE3E,SAASC,GAAmBC,GAMxB,IALA,IAAIC,EAAcD,EAAmBpoE,OAAS,EAAIooE,EAAmB,GAAGL,KAAO,KAC3EO,EAAgBT,GAAchzD,OAAOuzD,GACrCG,EAAe,CACfC,GAAIP,IAEC18D,EAAK,EAAGk9D,EAAkBH,EAAe/8D,EAAKk9D,EAAgBzoE,OAAQuL,IAAM,CACjF,IAAIm9D,EAAYD,EAAgBl9D,GAChCg9D,EAAaG,EAAUX,MAAQW,EAEnC,MAAO,CACHpjE,IAAKijE,EACLF,YAAaA,GAGrB,SAASM,GAAYC,EAAeC,GAChC,MAA6B,iBAAlBD,GAA+BxiE,MAAMyL,QAAQ+2D,GAK5D,SAAqBE,EAASD,GAC1B,IAAInnB,EAAQ,GAAG7sC,OAAOi0D,GAAW,IAC7BlZ,EAGR,SAAwBlO,EAAOmnB,GAC3B,IAAK,IAAInlE,EAAI,EAAGA,EAAIg+C,EAAM1hD,OAAQ0D,GAAK,EAEnC,IADA,IAAIu9C,EAAQS,EAAMh+C,GAAGq+C,oBAAoB3jC,MAAM,KACtChO,EAAI6wC,EAAMjhD,OAAQoQ,EAAI,EAAGA,GAAK,EAAG,CACtC,IAAI24D,EAAW9nB,EAAM57C,MAAM,EAAG+K,GAAGy7B,KAAK,KACtC,GAAIg9B,EAAUE,GACV,OAAOF,EAAUE,GAI7B,OAAO,KAbGC,CAAetnB,EAAOmnB,IAAcZ,GAC9C,OAAOgB,GAAYH,EAASpnB,EAAOkO,GAL5BsZ,CAAYN,EAAeC,GAFvBI,GAAYL,EAAcb,KAAM,CAACa,EAAcb,MAAOa,GAqBrE,SAASK,GAAYH,EAASpnB,EAAOkO,GACjC,IAAIuZ,EAAS9xB,GAAW,CAACywB,GAAuBlY,GAAM,CAAC,sBAChDuZ,EAAOpB,KACd,IAAIvmD,EAAO2nD,EAAO3nD,KAElB,cADO2nD,EAAO3nD,KACP,CACHsnD,QAASA,EACTpnB,MAAOA,EACPlgC,KAAMA,EACN2/B,mBAAoB,IAAIK,KAAK4nB,aAAaN,GAC1CjlD,QAASslD,GAqCjB,IAkFIE,GAlFAC,GAAe,CACfC,UAAW,QACXC,QAAS,QACTC,WAAY,CAAC,EAAG,EAAG,EAAG,EAAG,GACzB76D,QAAS,qBACTsgD,WAAY,kBACZ2B,QAAS,kBA2Bb,SAAS6Y,GAAgBC,EAAOC,GAC5B,OAAOD,EAAM7hE,MAAQ8hE,EAAK9hE,MACtB6hE,EAAM7hE,KAAO8hE,EAAK7hE,OAClB4hE,EAAM/hE,KAAOgiE,EAAKhiE,KAClB+hE,EAAM/hE,IAAMgiE,EAAK/hE,OAGzB,SAASgiE,GAAeC,EAAOC,GAC3B,IAAI51C,EAAM,CACNrsB,KAAMsS,KAAKukC,IAAImrB,EAAMhiE,KAAMiiE,EAAMjiE,MACjCC,MAAOqS,KAAKG,IAAIuvD,EAAM/hE,MAAOgiE,EAAMhiE,OACnCH,IAAKwS,KAAKukC,IAAImrB,EAAMliE,IAAKmiE,EAAMniE,KAC/BC,OAAQuS,KAAKG,IAAIuvD,EAAMjiE,OAAQkiE,EAAMliE,SAEzC,OAAIssB,EAAIrsB,KAAOqsB,EAAIpsB,OAASosB,EAAIvsB,IAAMusB,EAAItsB,QAC/BssB,EAaf,SAAS61C,GAAeL,EAAOC,GAC3B,MAAO,CACH9hE,KAAMsS,KAAKG,IAAIH,KAAKukC,IAAIgrB,EAAM7hE,KAAM8hE,EAAK9hE,MAAO8hE,EAAK7hE,OACrDH,IAAKwS,KAAKG,IAAIH,KAAKukC,IAAIgrB,EAAM/hE,IAAKgiE,EAAKhiE,KAAMgiE,EAAK/hE,SAI1D,SAASoiE,GAAcL,GACnB,MAAO,CACH9hE,MAAO8hE,EAAK9hE,KAAO8hE,EAAK7hE,OAAS,EACjCH,KAAMgiE,EAAKhiE,IAAMgiE,EAAK/hE,QAAU,GAIxC,SAASqiE,GAAWC,EAAQC,GACxB,MAAO,CACHtiE,KAAMqiE,EAAOriE,KAAOsiE,EAAOtiE,KAC3BF,IAAKuiE,EAAOviE,IAAMwiE,EAAOxiE,KAKjC,SAASyiE,KAIL,OAH0B,MAAtBhB,KACAA,GAIR,WAGI,GAAwB,oBAAb7iC,SACP,OAAO,EAEX,IAAI8H,EAAK9H,SAAS9yB,cAAc,OAChC46B,EAAGlnC,MAAMvB,SAAW,WACpByoC,EAAGlnC,MAAMQ,IAAM,MACf0mC,EAAGlnC,MAAMU,KAAO,MAChBwmC,EAAGg8B,UAAY,+CACfh8B,EAAGrnC,cAAc,SAASG,MAAMf,OAAS,QACzCioC,EAAGrnC,cAAc,OAAOG,MAAMf,OAAS,OACvCmgC,SAAS7H,KAAKhrB,YAAY26B,GAC1B,IACIi8B,EADMj8B,EAAGrnC,cAAc,OACRqmB,aAAe,EAElC,OADAkZ,SAAS7H,KAAKrhB,YAAYgxB,GACnBi8B,EArBkBC,IAElBnB,GAsBX,IAAIoB,GAt7EO,CAAEtxB,KAAM,GAAIlqB,UAAW,IAu7E9By7C,GAA0B,WAC1B,SAASA,IACL7uE,KAAK8uE,oBAAsB7tB,GAAQjhD,KAAK+uE,sBACxC/uE,KAAKgvE,mBAAqB/tB,GAAQjhD,KAAKivE,gBACvCjvE,KAAKkvE,gBAAkBjuB,GAAQjhD,KAAKmvE,kBACpCnvE,KAAKovE,kBAAoBnuB,GAAQjhD,KAAKqvE,oBACtCrvE,KAAKsvE,eAAiBruB,GAAQjhD,KAAKuvE,mBACnCvvE,KAAKwvE,iBAAmBvuB,GAAQjhD,KAAKuvE,mBACrCvvE,KAAKyvE,gBAAkB,GA2G3B,OAzGAZ,EAASn8C,UAAUg9C,WAAa,SAAU38C,GACtC,IAAI2uB,EAAQ1hD,KACR2vE,EAAW3vE,KAAK4vE,WAAW78C,GAC3B88C,EAAU7vE,KAAK8uE,oBAAoB/7C,EAAMmqB,YACzC4yB,EAAiB9vE,KAAKgvE,mBAAmBj8C,EAAMgzC,eAC/CgK,EAAe/vE,KAAKovE,kBAAkBr8C,EAAMunC,aAAcuV,GAC1DG,EAAchwE,KAAKkvE,gBAAgBn8C,EAAMmqB,WAAY2yB,GACrDI,EAAajwE,KAAKsvE,eAAev8C,EAAMm9C,WACvCC,EAAenwE,KAAKwvE,iBAAiBz8C,EAAMq9C,aAC3CV,EAAa,GAEjB,IAAK,IAAI/yD,KADT3c,KAAKyvE,gBAAkBtzB,GAAQwzB,EAAU,SAAUU,EAAM1zD,GAAO,OAAO+kC,EAAM+tB,gBAAgB9yD,IAAQskC,GAAQqvB,MAC7FX,EAAU,CACtB,IAAIY,EAAUZ,EAAShzD,GACnBugC,EAAa8yB,EAAYrzD,IAAQiyD,GAErCc,EAAW/yD,GAAO,CACdkvC,cAAe0kB,EAAQ1kB,eAAiB94B,EAAM84B,cAC9Cka,cAAe+J,EAAenzD,IAAQ,KACtCugC,WAAYA,EACZod,cAAckW,EALCxwE,KAAKyvE,gBAAgB9yD,IAKToW,EAAMunC,aAAa,IAAKiW,EAAQrY,GAAI6X,EAAapzD,IAC5E8zD,eAAgBvzB,EAAW9pB,UAAUL,EAAM09C,gBAAkB19C,EAAM09C,eAAiB,GACpFP,UAAWD,EAAWtzD,IAAQ,KAC9ByzD,YAAaD,EAAaxzD,IAAQ,MAG1C,OAAO+yD,GAEXb,EAASn8C,UAAUu8C,eAAiB,SAAUzP,GAC1C,IAAIkR,EAAY,GAChB,GAAIlR,EAEA,IADA,IACS9vD,EAAK,EAAGihE,EADN3wE,KAAK4wE,mBAAmBpR,GACH9vD,EAAKihE,EAAOxsE,OAAQuL,IAEhDghE,EADUC,EAAOjhE,IACA8vD,EAGzB,OAAOkR,GAEX7B,EAASn8C,UAAUq8C,qBAAuB,SAAU7xB,GAChD,IAAIwE,EAAQ1hD,KACZ,OAAOm8C,GAAQe,EAAWI,KAAM,SAAUS,GAAY,OAAO2D,EAAMmvB,mBAAmB9yB,MAE1F8wB,EAASn8C,UAAUy8C,iBAAmB,SAAUjyB,EAAY2yB,GACxD,IAAIvyB,EAAOJ,EAAWI,KAAMlqB,EAAY8pB,EAAW9pB,UAC/C09C,EAAc,GAClB,IAAK,IAAI31B,KAASmC,EACd,IAAK,IAAI5tC,EAAK,EAAG/E,EAAKklE,EAAQ10B,GAAQzrC,EAAK/E,EAAGxG,OAAQuL,IAE7CohE,EADDn0D,EAAMhS,EAAG+E,MAETohE,EAAYn0D,GAl/ErB,CAAE2gC,KAAM,GAAIlqB,UAAW,KAo/ElB09C,EAAYn0D,GAAK2gC,KAAKnC,GAASmC,EAAKnC,GAG5C,IAAK,IAAII,KAAcnoB,EAEnB,IADA,IAAIU,EAAWV,EAAUmoB,GAChB3wC,EAAK,EAAG+pB,EAAKk7C,EAAQ/7C,EAASqnB,OAAQvwC,EAAK+pB,EAAGxwB,OAAQyG,IAAM,CACjE,IAAI+R,EACAm0D,EADAn0D,EAAMgY,EAAG/pB,MAETkmE,EAAYn0D,GAAKyW,UAAUmoB,GAAcznB,GAIrD,OAAOg9C,GAEXjC,EAASn8C,UAAU28C,mBAAqB,SAAU/U,EAAcuV,GAC5D,IAAIkB,EAAc,GAClB,IAAK,IAAI51B,KAASmf,EACd,GAAInf,EACA,IAAK,IAAIzrC,EAAK,EAAG/E,EAAKklE,EAAQ10B,GAAQzrC,EAAK/E,EAAGxG,OAAQuL,IAAM,CACxD,IAAIiN,EAAMhS,EAAG+E,GACRqhE,EAAYp0D,KACbo0D,EAAYp0D,GAAO,IAEvBo0D,EAAYp0D,GAAKw+B,GAASmf,EAAanf,GAInD,OAAO41B,GAEXlC,EAASn8C,UAAU68C,kBAAoB,SAAUyB,GAC7C,IAAIC,EAAc,GAClB,GAAID,EAAa,CACb,IAAIE,EAAmBlxE,KAAKmvE,iBAAiB6B,EAAYG,eAAgBnxE,KAAK+uE,qBAAqBiC,EAAYG,iBAE3GC,EAAqBpxE,KAAK+uE,qBAAqBiC,EAAYK,eAC3DC,EAAkBtxE,KAAKmvE,iBAAiB6B,EAAYK,cAAeD,GACnEG,EAAW,SAAU50D,GAChBs0D,EAAYt0D,KACbs0D,EAAYt0D,GAAO,CACfw0D,eAAgBD,EAAiBv0D,IAAQiyD,GACzCyC,cAAeC,EAAgB30D,IAAQiyD,GACvC4C,QAASR,EAAYQ,WAIjC,IAAK,IAAI70D,KAAOu0D,EACZK,EAAS50D,GAEb,IAAK,IAAIA,KAAO20D,EACZC,EAAS50D,GAGjB,OAAOs0D,GAEJpC,EAnHmB,GAqH9B,SAASyB,GAAmBmB,EAAOC,EAAe3B,GAC9C,IAAI4B,EAAY,GACZF,GACAE,EAAU/tE,KAAK6tE,GAEfC,GACAC,EAAU/tE,KAAK8tE,GAEnB,IAAIE,EAAQ,CACR,GAAItb,GAAgBqb,IAKxB,OAHI5B,GACA/5B,YAAS47B,EAAO7B,GAEb6B,EAGX,SAASC,GAAY53B,EAAM2jB,EAAYC,EAASwD,GAC5C,MAAO,CACHz7C,IAAKq0B,EAAKF,YACVhtB,WAAY26B,QAAQ2Z,IAAgBjH,GAAoBiH,EAAYC,YAAarnB,IACjF63B,QAASpqB,QAAQ2Z,IAAgBjH,GAAoBiH,EAAYE,aAActnB,IAC/EgkB,QAASvW,QAAQkW,GAAcxD,GAAoBwD,EAAY3jB,IAC/D8jB,OAAQrW,QAAQmW,EAAW5jB,EAAO4jB,IAAWD,GAAc3jB,EAAO2jB,EAAWz0D,OAC7E60D,SAAUtW,QAAQmW,EAAW5jB,EAAO4jB,IAAWD,GAAc3jB,GAAQ2jB,EAAWx0D,MAGxF,SAAS2oE,GAAiB79B,EAAM89B,GAC5B,IAAI3e,EAAa,CACb,SACA,UAAYjb,EAAQlE,EAAKtuB,MAoB7B,OAlBIsuB,EAAKnnB,WACLsmC,EAAWzvD,KAAK,oBAGZswC,EAAK+pB,UACL5K,EAAWzvD,KAAK,gBAChByvD,EAAWzvD,KAAKouE,EAAMC,SAAS,WAE/B/9B,EAAK6pB,QACL1K,EAAWzvD,KAAK,eAEhBswC,EAAK8pB,UACL3K,EAAWzvD,KAAK,iBAEhBswC,EAAK49B,SACLze,EAAWzvD,KAAK,iBAGjByvD,EAyBX,IAAI6e,GAAanrB,GAAgB,CAAEvN,KAAM,UAAWv2B,MAAO,OAAQ6uB,IAAK,YACpEqgC,GAAcprB,GAAgB,CAAEphC,KAAM,SAC1C,SAASysD,GAAkB5gE,EAASwyD,EAAYF,EAAUuO,QACrC,IAAbvO,IAAuBA,EAAW,YACnB,IAAfuO,IAAyBA,GAAa,GAC1C,IAAIj1B,EAAU5rC,EAAQ4rC,QAASp1B,EAAUxW,EAAQwW,QAAS83C,EAActuD,EAAQsuD,YAC5EwS,EAAUl1B,EAAQr6B,OAAOihD,EAAyB,SAAbF,EAAsBqO,GAAcD,IAC7E,GAAIlqD,EAAQ6mC,SAAU,CAClB,IAAI0jB,EAAYn1B,EAAQ+hB,OAAO6E,GAC3BwO,EAAoB,SAAUv9B,GAC9B,IAAIw9B,EAA4B,QAAb3O,EAAqB97C,EAAQi/B,gBAC/B,SAAb6c,EAAsB97C,EAAQm/B,iBAAmB,KACzB,mBAAjBsrB,EACPA,EAAav9C,KAAK4qC,EAAa1iB,EAAQ+hB,OAAO6E,GAAa/uB,IAG/B,iBAAjBw9B,IACP3O,EAAW2O,GAEf3S,EAAYmE,OAAOD,EAAYF,KAGvC,OAAO9tB,YAAS,CAAE4gB,MAAOpf,EAAmBxvB,EAAQ0oC,YAAa,CAAC4hB,EAASC,GAAYD,GAAU,eAAgB,IAAOD,EAClHt8B,EAAqBy8B,GACrB,CAAEv8B,QAASu8B,IAErB,MAAO,CAAE,aAAcF,GAG3B,IA0BII,GA1BAC,GAAwB,KA6C5B,SAASC,GAA4BngC,GACjC,MAAO,CACHlX,EAAGkX,EAAGhhB,aAAeghB,EAAGogC,aACxBvtD,EAAGmtB,EAAGqgC,YAAcrgC,EAAGsgC,aAqC/B,SAASC,GAAiBvgC,EAAIwgC,EAAiBC,QACnB,IAApBD,IAA8BA,GAAkB,GACpD,IAAIE,EAAYD,EAAuBzgC,EAAGhoC,wBAA0B2oE,GAAY3gC,GAC5E4gC,EApCR,SAAsB5gC,EAAI6gC,QACH,IAAfA,IAAyBA,GAAa,GAC1C,IAAIC,EAAgBpoD,OAAOqoD,iBAAiB/gC,GACxCghC,EAAajkC,SAAS+jC,EAAcG,gBAAiB,KAAO,EAC5DC,EAAcnkC,SAAS+jC,EAAcK,iBAAkB,KAAO,EAC9DC,EAAYrkC,SAAS+jC,EAAcO,eAAgB,KAAO,EAC1DC,EAAevkC,SAAS+jC,EAAcS,kBAAmB,KAAO,EAChEC,EAAqBrB,GAA4BngC,GACjDyhC,EAAqBD,EAAmB3uD,EAAImuD,EAAaE,EAEzDr7C,EAAM,CACNm7C,WAAYA,EACZE,YAAaA,EACbE,UAAWA,EACXE,aAAcA,EACdI,gBANkBF,EAAmB14C,EAAIs4C,EAAYE,EAOrDK,cAAe,EACfC,eAAgB,GAcpB,OAjF8B,OAA1B1B,KACAA,GAIR,WACI,IAAI2B,EAAU3pC,SAAS9yB,cAAc,OACrCg9B,EAAWy/B,EAAS,CAChBtqE,SAAU,WACV+B,KAAM,IACNE,KAAM,EACNsoE,OAAQ,EACRC,QAAS,EACTC,SAAU,SACVztE,UAAW,QAEfstE,EAAQ7F,UAAY,cACpB9jC,SAAS7H,KAAKhrB,YAAYw8D,GAC1B,IACIh8C,EADUg8C,EAAQI,WACJjqE,wBAAwBwB,KAAOqoE,EAAQ7pE,wBAAwBwB,KAEjF,OADAmoC,EAAckgC,GACPh8C,EApBqBq8C,IAErBhC,IAkEsD,QAA5BY,EAAcvsE,UAC3CsxB,EAAI87C,cAAgBF,EAGpB57C,EAAI+7C,eAAiBH,EAErBZ,IACAh7C,EAAIs8C,YAAcplC,SAAS+jC,EAAcqB,YAAa,KAAO,EAC7Dt8C,EAAIu8C,aAAerlC,SAAS+jC,EAAcsB,aAAc,KAAO,EAC/Dv8C,EAAIw8C,WAAatlC,SAAS+jC,EAAcuB,WAAY,KAAO,EAC3Dx8C,EAAIy8C,cAAgBvlC,SAAS+jC,EAAcwB,cAAe,KAAO,GAE9Dz8C,EAKK08C,CAAaviC,EAAIwgC,GACzB36C,EAAM,CACNrsB,KAAMknE,EAAUlnE,KAAOonE,EAAMI,WAAaJ,EAAMe,cAChDloE,MAAOinE,EAAUjnE,MAAQmnE,EAAMM,YAAcN,EAAMgB,eACnDtoE,IAAKonE,EAAUpnE,IAAMsnE,EAAMQ,UAC3B7nE,OAAQmnE,EAAUnnE,OAASqnE,EAAMU,aAAeV,EAAMc,iBAQ1D,OANIlB,IACA36C,EAAIrsB,MAAQonE,EAAMuB,YAClBt8C,EAAIpsB,OAASmnE,EAAMwB,aACnBv8C,EAAIvsB,KAAOsnE,EAAMyB,WACjBx8C,EAAItsB,QAAUqnE,EAAM0B,eAEjBz8C,EAEX,SAAS86C,GAAY3gC,GACjB,IAAIs7B,EAAOt7B,EAAGhoC,wBACd,MAAO,CACHwB,KAAM8hE,EAAK9hE,KAAOkf,OAAO8pD,YACzBlpE,IAAKgiE,EAAKhiE,IAAMof,OAAO+pD,YACvBhpE,MAAO6hE,EAAK7hE,MAAQif,OAAO8pD,YAC3BjpE,OAAQ+hE,EAAK/hE,OAASmf,OAAO+pD,aA2BrC,SAASC,GAAmB1iC,GAExB,IADA,IAAI2iC,EAAU,GACP3iC,aAAc4iC,aAAa,CAC9B,IAAI9B,EAAgBpoD,OAAOqoD,iBAAiB/gC,GAC5C,GAA+B,UAA3B8gC,EAAcvpE,SACd,MAEC,gBAAiBgZ,KAAKuwD,EAAckB,SAAWlB,EAAc+B,UAAY/B,EAAcgC,YACxFH,EAAQxxE,KAAK6uC,GAEjBA,EAAKA,EAAG/xB,WAEZ,OAAO00D,EA+BX,IAAII,GAAyB,WACzB,SAASA,IACLx1E,KAAKy1E,SAAW,GAChBz1E,KAAK01E,YAAc,KA+BvB,OA7BAF,EAAQ9iD,UAAUijD,eAAiB,SAAUD,GACzC11E,KAAK01E,YAAcA,GAEvBF,EAAQ9iD,UAAUkjD,WAAa,SAAU5tD,GACrChoB,KAAKgoB,QAAUA,GAEnBwtD,EAAQ9iD,UAAU6wC,GAAK,SAAU7iE,EAAM2rC,IAyB3C,SAAmB4P,EAAMv7C,EAAM2rC,IAC1B4P,EAAKv7C,KAAUu7C,EAAKv7C,GAAQ,KACxBkD,KAAKyoC,GA1BNwpC,CAAU71E,KAAKy1E,SAAU/0E,EAAM2rC,IAEnCmpC,EAAQ9iD,UAAUixC,IAAM,SAAUjjE,EAAM2rC,IA0B5C,SAAwB4P,EAAMv7C,EAAM2rC,GAC5BA,EACI4P,EAAKv7C,KACLu7C,EAAKv7C,GAAQu7C,EAAKv7C,GAAMyU,OAAO,SAAU8hC,GAAQ,OAAOA,IAAS5K,YAI9D4P,EAAKv7C,GAhCZo1E,CAAe91E,KAAKy1E,SAAU/0E,EAAM2rC,IAExCmpC,EAAQ9iD,UAAU6rC,QAAU,SAAU79D,GAElC,IADA,IAAIb,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,EAAK,GAAK4J,UAAU5J,GAK7B,IAHA,IAAIqmE,EAAmB/1E,KAAKy1E,SAAS/0E,IAAS,GAC1Cs1E,EAAgBh2E,KAAKgoB,SAAWhoB,KAAKgoB,QAAQtnB,GAC7C+0E,EAAW,GAAGz8D,OAAOg9D,GAAiB,GAAID,GACrCprE,EAAK,EAAGsrE,EAAaR,EAAU9qE,EAAKsrE,EAAW9xE,OAAQwG,IAAM,CAClE,IAAI0hC,EAAU4pC,EAAWtrE,GACzB0hC,EAAQsL,MAAM33C,KAAK01E,YAAa71E,KAGxC21E,EAAQ9iD,UAAU4rC,YAAc,SAAU59D,GACtC,OAAOgnD,QAAS1nD,KAAKy1E,SAAS/0E,IAASV,KAAKy1E,SAAS/0E,GAAMyD,QACtDnE,KAAKgoB,SAAWhoB,KAAKgoB,QAAQtnB,KAE/B80E,EAlCkB,GAwDzBU,GAA+B,WAC/B,SAASA,EAAcC,EAAUC,EAAKC,EAAcC,GAChDt2E,KAAKo2E,IAAMA,EACX,IAAIG,EAAmBv2E,KAAKu2E,iBAAmBJ,EAAS1rE,wBACpD4rE,GACAr2E,KAAKw2E,mBAAmBD,EAAiBtqE,MAEzCqqE,GACAt2E,KAAKy2E,iBAAiBF,EAAiBxqE,KA+D/C,OA3DAmqE,EAAcxjD,UAAU8jD,mBAAqB,SAAUE,GAGnD,IAFA,IAAIC,EAAQ,GACRC,EAAS,GACJlnE,EAAK,EAAG/E,EAAK3K,KAAKo2E,IAAK1mE,EAAK/E,EAAGxG,OAAQuL,IAAM,CAClD,IACIq+D,EADKpjE,EAAG+E,GACEjF,wBACdksE,EAAM/yE,KAAKmqE,EAAK9hE,KAAOyqE,GACvBE,EAAOhzE,KAAKmqE,EAAK7hE,MAAQwqE,GAE7B12E,KAAK22E,MAAQA,EACb32E,KAAK42E,OAASA,GAGlBV,EAAcxjD,UAAU+jD,iBAAmB,SAAUI,GAGjD,IAFA,IAAIC,EAAO,GACPC,EAAU,GACLrnE,EAAK,EAAG/E,EAAK3K,KAAKo2E,IAAK1mE,EAAK/E,EAAGxG,OAAQuL,IAAM,CAClD,IACIq+D,EADKpjE,EAAG+E,GACEjF,wBACdqsE,EAAKlzE,KAAKmqE,EAAKhiE,IAAM8qE,GACrBE,EAAQnzE,KAAKmqE,EAAK/hE,OAAS6qE,GAE/B72E,KAAK82E,KAAOA,EACZ92E,KAAK+2E,QAAUA,GAInBb,EAAcxjD,UAAUskD,YAAc,SAAUC,GAC5C,IAEIpvE,EAFW8uE,EAAN32E,KAAiB22E,MAAOC,EAAxB52E,KAAoC42E,OACzCt/B,EAAMq/B,EAAMxyE,OAEhB,IAAK0D,EAAI,EAAGA,EAAIyvC,EAAKzvC,GAAK,EACtB,GAAIovE,GAAgBN,EAAM9uE,IAAMovE,EAAeL,EAAO/uE,GAClD,OAAOA,GAOnBquE,EAAcxjD,UAAUwkD,WAAa,SAAUC,GAC3C,IAEItvE,EAFWivE,EAAN92E,KAAgB82E,KAAMC,EAAtB/2E,KAAmC+2E,QACxCz/B,EAAMw/B,EAAK3yE,OAEf,IAAK0D,EAAI,EAAGA,EAAIyvC,EAAKzvC,GAAK,EACtB,GAAIsvE,GAAeL,EAAKjvE,IAAMsvE,EAAcJ,EAAQlvE,GAChD,OAAOA,GAMnBquE,EAAcxjD,UAAU0kD,SAAW,SAAUC,GACzC,OAAOr3E,KAAK42E,OAAOS,GAAar3E,KAAK22E,MAAMU,IAG/CnB,EAAcxjD,UAAU4kD,UAAY,SAAUC,GAC1C,OAAOv3E,KAAK+2E,QAAQQ,GAAYv3E,KAAK82E,KAAKS,IAEvCrB,EAvEwB,GAgF/BsB,GAAkC,WAClC,SAASA,KA0BT,OAxBAA,EAAiB9kD,UAAU+kD,gBAAkB,WACzC,OAAOz3E,KAAK03E,kBAAoB13E,KAAK23E,mBAEzCH,EAAiB9kD,UAAUklD,iBAAmB,WAC1C,OAAO53E,KAAK63E,iBAAmB73E,KAAK83E,kBAExCN,EAAiB9kD,UAAUqlD,oBAAsB,WAC7C,OAAO/3E,KAAKy3E,kBAAoB,GAEpCD,EAAiB9kD,UAAUslD,sBAAwB,WAC/C,OAAOh4E,KAAK43E,mBAAqB,GAErCJ,EAAiB9kD,UAAUulD,YAAc,WACrC,OAAOj4E,KAAKk4E,eAAiB,GAEjCV,EAAiB9kD,UAAUylD,cAAgB,WACvC,OAAOn4E,KAAKk4E,eAAiBl4E,KAAKy3E,mBAEtCD,EAAiB9kD,UAAU0lD,cAAgB,WACvC,OAAOp4E,KAAKq4E,gBAAkB,GAElCb,EAAiB9kD,UAAU4lD,eAAiB,WACxC,OAAOt4E,KAAKq4E,gBAAkBr4E,KAAK43E,oBAEhCJ,EA3B2B,GA6BlCe,GAAyC,SAAUC,GAEnD,SAASD,EAAwB9lC,GAC7B,IAAIiP,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAEjC,OADA0hD,EAAMjP,GAAKA,EACJiP,EA0BX,OA9BA+2B,YAAUF,EAAyBC,GAMnCD,EAAwB7lD,UAAUwlD,aAAe,WAC7C,OAAOl4E,KAAKyyC,GAAGrqB,WAEnBmwD,EAAwB7lD,UAAU2lD,cAAgB,WAC9C,OAAOr4E,KAAKyyC,GAAGimC,YAEnBH,EAAwB7lD,UAAUimD,aAAe,SAAU5sE,GACvD/L,KAAKyyC,GAAGrqB,UAAYrc,GAExBwsE,EAAwB7lD,UAAUkmD,cAAgB,SAAU3sE,GACxDjM,KAAKyyC,GAAGimC,WAAazsE,GAEzBssE,EAAwB7lD,UAAUmlD,eAAiB,WAC/C,OAAO73E,KAAKyyC,GAAGomC,aAEnBN,EAAwB7lD,UAAUglD,gBAAkB,WAChD,OAAO13E,KAAKyyC,GAAGqmC,cAEnBP,EAAwB7lD,UAAUilD,gBAAkB,WAChD,OAAO33E,KAAKyyC,GAAGogC,cAEnB0F,EAAwB7lD,UAAUolD,eAAiB,WAC/C,OAAO93E,KAAKyyC,GAAGsgC,aAEZwF,EA/BkC,CAgC3Cf,IACEuB,GAAwC,SAAUP,GAElD,SAASO,IACL,OAAkB,OAAXP,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA0B/D,OA5BAy4E,YAAUM,EAAwBP,GAIlCO,EAAuBrmD,UAAUwlD,aAAe,WAC5C,OAAO/sD,OAAO+pD,aAElB6D,EAAuBrmD,UAAU2lD,cAAgB,WAC7C,OAAOltD,OAAO8pD,aAElB8D,EAAuBrmD,UAAUimD,aAAe,SAAU5gC,GACtD5sB,OAAO6tD,OAAO7tD,OAAO8pD,YAAal9B,IAEtCghC,EAAuBrmD,UAAUkmD,cAAgB,SAAU7gC,GACvD5sB,OAAO6tD,OAAOjhC,EAAG5sB,OAAO+pD,cAE5B6D,EAAuBrmD,UAAUmlD,eAAiB,WAC9C,OAAOltC,SAAS6J,gBAAgBqkC,aAEpCE,EAAuBrmD,UAAUglD,gBAAkB,WAC/C,OAAO/sC,SAAS6J,gBAAgBskC,cAEpCC,EAAuBrmD,UAAUilD,gBAAkB,WAC/C,OAAOhtC,SAAS6J,gBAAgBq+B,cAEpCkG,EAAuBrmD,UAAUolD,eAAiB,WAC9C,OAAOntC,SAAS6J,gBAAgBu+B,aAE7BgG,EA7BiC,CA8B1CvB,IAEEyB,GAAuB,WACvB,SAASA,EAAMhU,GACPjlE,KAAKk5E,oBACLl5E,KAAKm5E,gBAAgBlU,EAAgBjlE,KAAKk5E,qBAkDlD,OA/CAD,EAAMvmD,UAAUymD,gBAAkB,SAAUC,GACxC,IAAIC,EACAC,EACJ,GAAgC,iBAArBF,GAAiCA,EAAkB,CAE1D,IAAKE,KADLD,EAAkBrjC,YAAS,GAAIh2C,KAAKu5E,aACjBH,EACfC,EAAgBC,GAAct5E,KAAKw5E,wBAAwBJ,EAAiBE,IAEhFt5E,KAAKu5E,YAAcF,OAEO,IAArBD,IACLp5E,KAAKu5E,YAAc,KAG3BN,EAAMvmD,UAAU8mD,wBAA0B,SAAU3xD,GAChD,IAAI4xD,EAASz5E,KAAK05E,mBAIlB,OAHID,GAAwC,IAA9B5xD,EAAU5e,QAAQwwE,KAC5B5xD,EAAY4xD,EAAS5xD,GAElBA,GAEXoxD,EAAMvmD,UAAUu/C,SAAW,SAAUt1D,GACjC,OAAO3c,KAAKilC,QAAQtoB,IAAQ,IAEhCs8D,EAAMvmD,UAAUinD,aAAe,SAAUL,EAAYpwE,GACjD,IAAI2e,EAOJ,OALIA,EADA3e,GAASlJ,KAAK45E,gBACF55E,KAAK45E,eAAeN,IAGpBt5E,KAAKu5E,YAAYD,IAGtBt5E,KAAK65E,cAAgB,IAAMhyD,EAE/B,IAEXoxD,EAAMvmD,UAAUonD,yBAA2B,SAAUC,GACjD,IAAIlyD,EACJ,OAAI7nB,KAAKg6E,iCACLnyD,EAAYkyD,EAAkB/5E,KAAKg6E,iCAExBh6E,KAAK65E,cAAgB,IAAM75E,KAAKw5E,wBAAwB3xD,GAGhE,IAEJoxD,EArDgB,GAuD3BA,GAAMvmD,UAAUuS,QAAU,GAC1Bg0C,GAAMvmD,UAAU6mD,YAAc,GAC9BN,GAAMvmD,UAAUmnD,cAAgB,GAChCZ,GAAMvmD,UAAUgnD,mBAAqB,GAErC,IAAIO,GAAiC,WACjC,SAASA,EAAgBC,EAAU7b,EAAS7W,EAAYC,GACpD,IAAI/F,EAAQ1hD,KACZA,KAAKk6E,SAAWA,EAChBl6E,KAAKq+D,QAAUA,EACfr+D,KAAKwnD,WAAaA,EAClBxnD,KAAKynD,gBAAkBA,EACvBznD,KAAKm6E,oBAAsB,SAAUC,GACjC14B,EAAM24B,cAAgBrkC,YAAS,GAAI0L,EAAM24B,eAAiB,GAAID,GAC9D14B,EAAM44B,SAEVjc,EAAQkF,GAAG,iBAAkBvjE,KAAKm6E,qBAClCn6E,KAAKu6E,oBAuBT,OArBAN,EAAgBvnD,UAAU3T,OAAS,WAC/B/e,KAAKq+D,QAAQsF,IAAI,iBAAkB3jE,KAAKm6E,sBAE5CF,EAAgBvnD,UAAU8nD,OAAS,SAAUC,GACrCA,GAAcz6E,KAAKynD,gBACnBznD,KAAKu6E,oBAGLv6E,KAAKs6E,SAGbL,EAAgBvnD,UAAU6nD,kBAAoB,WAC1Cv6E,KAAKm6E,oBAAoB,CACrBtS,KAAM7nE,KAAKwnD,cAGnByyB,EAAgBvnD,UAAU4nD,MAAQ,WAC1Bt6E,KAAKq6E,eAAiBr6E,KAAKk6E,SAASl6E,KAAKq6E,iBACzCr6E,KAAKq6E,cAAgB,OAGtBJ,EAnC0B,GAsCjCS,GAAkBrnC,EAAc,IACpC,SAASsnC,GAAiBC,EAAUlc,EAASmc,EAAaC,EAAsB19B,EAAS40B,EAAO30B,EAAa3kB,EAAUyoC,EAAgB9C,EAASyB,EAAaib,EAA8BC,GACvL,MAAO,CACH59B,QAASA,EACTp1B,QAAS6yD,EACTx9B,YAAaA,EACbghB,QAASA,EACT3lC,SAAUA,EACVyoC,eAAgBA,EAChBrB,YAAaA,EACb8a,SAAUA,EACVlc,QAASA,EACToc,qBAAsBA,EACtB9I,MAAOA,EACP9oE,MAAiC,QAA1B2xE,EAAY7zE,UACnBi0E,iBAAkB,SAAU5uC,GACxBgyB,EAAQkF,GAAG,UAAWl3B,IAE1B6uC,oBAAqB,SAAU7uC,GAC3BgyB,EAAQsF,IAAI,UAAWt3B,IAE3B8uC,sBAAuB,SAAUjB,GAC7B,OAAO,IAAID,GAAgBC,EAAU7b,EAAS9f,GAAes8B,EAAYrzB,YAAaqzB,EAAYpzB,kBAEtGszB,6BAA8BA,EAC9BC,+BAAgCA,GAKxC,IAAII,GAA+B,SAAU5C,GAEzC,SAAS4C,IACL,OAAkB,OAAX5C,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAmB/D,OArBAy4E,YAAU2C,EAAe5C,GAIzB4C,EAAc1oD,UAAU2oD,sBAAwB,SAAUC,EAAWC,GAKjE,OAJIv7E,KAAKw7E,OAELzwC,QAAQ0wC,IAAIh/B,GAAgB6+B,EAAWt7E,KAAK+yB,OAAQ0pB,GAAgB8+B,EAAWv7E,KAAKqI,SAEhFq0C,GAAY18C,KAAK+yB,MAAOuoD,EAAWt7E,KAAK07E,gBAC3Ch/B,GAAY18C,KAAKqI,MAAOkzE,EAAWv7E,KAAK27E,gBAGjDP,EAAc1oD,UAAUkpD,aAAe,SAAUC,GACxCn/B,GAAY18C,KAAKqI,MAAO2tC,YAASA,YAAS,GAAIh2C,KAAKqI,OAAQwzE,GAAW77E,KAAK27E,gBAC5E37E,KAAK87E,SAASD,IAGtBT,EAAcW,iBAAmBA,GACjCX,EAAcY,iBAAmBA,GACjCZ,EAAca,YAAcvB,GACrBU,EAtBwB,CAuBjChpD,GACFgpD,GAAc1oD,UAAUgpD,aAAe,GACvCN,GAAc1oD,UAAUipD,cAAgB,GACxC,IAAIO,GAA+B,SAAU1D,GAEzC,SAAS0D,IACL,OAAkB,OAAX1D,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAG/D,OALAy4E,YAAUyD,EAAe1D,GAIzB0D,EAAcD,YAAcvB,GACrBwB,EANwB,CAOjCd,IACF,SAASW,GAAiBL,GACtB,IAAIz/B,EAAOz/B,OAAOlX,OAAOtF,KAAK0yB,UAAUgpD,cACxC1lC,YAASiG,EAAMy/B,GACf17E,KAAK0yB,UAAUgpD,aAAez/B,EAElC,SAAS+/B,GAAiBL,GACtB,IAAI1/B,EAAOz/B,OAAOlX,OAAOtF,KAAK0yB,UAAUipD,eACxC3lC,YAASiG,EAAM0/B,GACf37E,KAAK0yB,UAAUipD,cAAgB1/B,EAGnC,SAASkgC,GAAOl6D,EAAKm6D,GACE,mBAARn6D,EACPA,EAAIm6D,GAECn6D,IAELA,EAAIm6D,QAAUA,GAWtB,IAAIC,GAA+B,SAAU7D,GAEzC,SAAS6D,IACL,IAAI36B,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAM46B,IAAMhmC,IACLoL,EAsBX,OA1BA+2B,YAAU4D,EAAe7D,GAQzB6D,EAAc3pD,UAAU6pD,YAAc,aAEtCF,EAAc3pD,UAAU8pD,SAAW,SAAUC,EAAcC,EAAaC,EAASC,GAC7E,OAAO,MAIXP,EAAc3pD,UAAUmqD,iBAAmB,SAAUpqC,GACjD,OAAQzyC,KAAK+yB,MAAMm9C,YACdlwE,KAAK+yB,MAAMq9C,cACX/7B,EAAe5B,EAAI,qBAE5B4pC,EAAc3pD,UAAUoqD,kBAAoB,SAAUrqC,GAClD,QAAQ4B,EAAe5B,EAAI,gCACtB4B,EAAe5B,EAAI,kBACnB4B,EAAe5B,EAAI,oBACnB4B,EAAe5B,EAAI,iBAErB4pC,EA3BwB,CA4BjCH,IAGF,SAASa,GAAav+B,GAClB,MAAO,CACHx4B,GAAIswB,IACJntB,KAAMq1B,EAAMr1B,MAAQ,GACpB6zD,SAAUx+B,EAAMw+B,UAAY,GAC5BC,eAAgBz+B,EAAMy+B,gBAAkB,GACxCC,YAAa,GAAGlkE,OAAOwlC,EAAM0+B,aAAe,IAC5C9oB,cAAe5V,EAAM4V,eAAiB,GACtC+D,qBAAsB3Z,EAAM2Z,sBAAwB,GACpDqK,oBAAqBhkB,EAAMgkB,qBAAuB,GAClD9F,wBAAyBle,EAAMke,yBAA2B,GAC1DygB,2BAA4B3+B,EAAM2+B,4BAA8B,GAChEtc,yBAA0BriB,EAAMqiB,0BAA4B,GAC5Duc,0BAA2B5+B,EAAM4+B,2BAA6B,GAC9DC,oBAAqB7+B,EAAM6+B,qBAAuB,GAClDrd,mBAAoBxhB,EAAMwhB,oBAAsB,GAChDrN,MAAOnU,EAAMmU,OAAS,GACtB2qB,sBAAuB9+B,EAAM8+B,uBAAyB,GACtDC,aAAc/+B,EAAM++B,cAAgB,KACpCC,sBAAuBh/B,EAAMg/B,uBAAyB,GACtDC,qBAAsBj/B,EAAMi/B,sBAAwB,GACpDC,sBAAuBl/B,EAAMk/B,uBAAyB,GACtDC,sBAAuBn/B,EAAMm/B,uBAAyB,GACtDC,qBAAsBp/B,EAAMo/B,sBAAwB,GACpDC,aAAcr/B,EAAMq/B,cAAgB,GACpC7b,gBAAiBxjB,EAAMwjB,iBAAmB,GAC1Cnb,aAAcrI,EAAMqI,aACpB/I,eAAgBU,EAAMV,gBAAkB,GACxCggC,mBAAoBt/B,EAAMs/B,mBAC1B/0B,YAAavK,EAAMuK,aAAe,GAClCg1B,oBAAqBv/B,EAAMu/B,oBAC3BC,qBAAsBx/B,EAAMw/B,sBAAwB,GACpDC,eAAgBz/B,EAAMy/B,gBAAkB,KACxCC,oBAAqB1/B,EAAM0/B,qBAAuB,GAClDC,iBAAkB3/B,EAAM2/B,kBAAoB,GAC5CC,eAAgB5/B,EAAM4/B,gBAAkB,GACxCC,gBAAiB7/B,EAAM6/B,iBAAmB,IA2GlD,IAAIC,GAA+B,SAAU9F,GAEzC,SAAS8F,IACL,OAAkB,OAAX9F,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAE/D,OAJAy4E,YAAU6F,EAAe9F,GAIlB8F,EALwB,CAMjCrF,IAqCF,SAASsF,GAAcza,EAAU7nB,EAAMuiC,EAAgBC,GACnD,GAAIxiC,EAAK6nB,GACL,OAAO7nB,EAAK6nB,GAEhB,IAAI4a,EAMR,SAAsB5a,EAAU7nB,EAAMuiC,EAAgBC,GAClD,IAAIE,EAAgBH,EAAe1a,GAC/B8a,EAAiBH,EAAgB3a,GACjC+a,EAAY,SAAU19E,GAAQ,OAASw9E,GAAyC,OAAxBA,EAAcx9E,GAAkBw9E,EAAcx9E,GACpGy9E,GAA2C,OAAzBA,EAAez9E,GAAkBy9E,EAAez9E,GAAQ,MAC5E29E,EAAeD,EAAU,aACzBE,EAAYF,EAAU,aACtBG,EAAW,KACf,GAAID,EAAW,CACX,GAAIA,IAAcjb,EACd,MAAM,IAAIzvC,MAAM,wDAEpB2qD,EAAWT,GAAcQ,EAAW9iC,EAAMuiC,EAAgBC,GAK9D,OAHKK,GAAgBE,IACjBF,EAAeE,EAAS//D,WAEvB6/D,EAGE,CACHp+E,KAAMojE,EACN7kD,UAAW6/D,EACX/3D,SAAUivB,YAASA,YAAS,GAAKgpC,EAAWA,EAASj4D,SAAW,IAAO43D,EAAgBA,EAAcM,WAAa,IAClHC,UAAWlpC,YAASA,YAAS,GAAKgpC,EAAWA,EAASE,UAAY,IAAON,EAAiBA,EAAeK,WAAa,KAN/G,KAxBGE,CAAarb,EAAU7nB,EAAMuiC,EAAgBC,GAI3D,OAHIC,IACAziC,EAAK6nB,GAAY4a,GAEdA,EA5CXJ,GAAc5rD,UAAUuS,QAAU,CAC9Bm6C,KAAM,oBACNC,gBAAiB,iBACjBC,YAAa,kBACbC,OAAQ,8BACRC,aAAc,oBAElBlB,GAAc5rD,UAAUmnD,cAAgB,UACxCyE,GAAc5rD,UAAU6mD,YAAc,CAClCj0C,MAAO,YACPq/B,KAAM,uBACN9gE,KAAM,wBACN+gE,SAAU,wBACVG,SAAU,0BAEduZ,GAAc5rD,UAAUknD,eAAiB,CACrCjV,KAAM,wBACN9gE,KAAM,uBACN+gE,SAAU,yBACVG,SAAU,yBAEduZ,GAAc5rD,UAAUwmD,mBAAqB,cAC7CoF,GAAc5rD,UAAUsnD,+BAAiC,OACzDsE,GAAc5rD,UAAUgnD,mBAAqB,WAqD7C,IAAI+F,GAA4B,SAAUjH,GAEtC,SAASiH,IACL,IAAI/9B,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAQhE,OAPA0hD,EAAMg+B,UAAYvsC,IAClBuO,EAAMi+B,aAAe,SAAUltC,GAC3B0pC,GAAOz6B,EAAMg+B,UAAWjtC,GACpBiP,EAAM3uB,MAAM6sD,OACZzD,GAAOz6B,EAAM3uB,MAAM6sD,MAAOntC,IAG3BiP,EAQX,OAlBA+2B,YAAUgH,EAAYjH,GAYtBiH,EAAW/sD,UAAUwgB,OAAS,WAC1B,IAAIwO,EAAQ1hD,KACR+yB,EAAQ/yB,KAAK+yB,MACb8sD,EAAY9sD,EAAM8sD,UACtB,OAAQhoE,EAAcioE,GAAW,CAAED,UAAWA,EAAWtsB,SAAUxgC,EAAMwgC,SAAUC,YAAazgC,EAAMygC,YAAaosB,MAAO5/E,KAAK2/E,cAAgB,SAAUD,GAAa,OAAQ7nE,EAAckoE,GAAa,CAAEF,UAAWA,EAAWvsB,QAASvgC,EAAMugC,QAAS0sB,eAAgBjtD,EAAMitD,eAAgBC,YAAav+B,EAAMg+B,WAAa,SAAUQ,EAAYC,GAAgB,OAAOptD,EAAMjrB,SAAS43E,EAAWU,GAAoBrtD,EAAMsgC,WAAYwsB,GAAYK,EAAYC,QAEjcV,EAnBqB,CAoB9BvD,IAGEmE,GAA6BhtC,EAAc,GAC/C,SAAS0sC,GAAYhtD,GACjB,OAAQlb,EAAcwoE,GAA2BC,SAAU,KAAM,SAAUC,GAAY,OAAQ1oE,EAAc2oE,GAAkBxqC,YAAS,CAAEuqC,SAAUA,GAAYxtD,MAEpK,IAAIytD,GAAkC,SAAUhI,GAE5C,SAASgI,IACL,IAAI9+B,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAMw+B,WAAa/sC,IACZuO,EAuEX,OA3EA+2B,YAAU+H,EAAkBhI,GAM5BgI,EAAiB9tD,UAAUwgB,OAAS,WAChC,OAAOlzC,KAAK+yB,MAAMjrB,SAAS9H,KAAKkgF,WAAYlgF,KAAKygF,uBAErDD,EAAiB9tD,UAAUguD,kBAAoB,WAC3C1gF,KAAK2gF,uBAETH,EAAiB9tD,UAAUkuD,mBAAqB,WAC5C5gF,KAAK2gF,uBAETH,EAAiB9tD,UAAUmuD,qBAAuB,WAC1C7gF,KAAK8gF,mBAAqB9gF,KAAK8gF,kBAAkB5/D,SACjDlhB,KAAK8gF,kBAAkB5/D,WAG/Bs/D,EAAiB9tD,UAAU+tD,mBAAqB,WAC5C,IAAIK,EAAoB9gF,KAAK8gF,kBACzBX,EAAengF,KAAK+gF,kBACpB7sC,EAAOl0C,KAAKghF,eAAeb,GAmB/B,OAjBKW,GAAqBA,EAAkBG,aAAe/sC,EAAK+sC,WAcvDH,IACLA,EAAkBI,WAAaf,EAAajsC,EAAK+sC,cAb7CH,IACIA,EAAkB5/D,SAClB4/D,EAAkB5/D,UAEtB4/D,EAAoB9gF,KAAK8gF,kBAAoB,MAG7C5sC,EAAK+sC,aACLH,EAAoB9gF,KAAK8gF,kBAAoB9qC,YAAS,CAAEirC,WAAY/sC,EAAK+sC,WAAYC,WAAYf,EAAajsC,EAAK+sC,aAAe/sC,EAAKitC,yBAOxIL,EACD,GACAX,GAEVK,EAAiB9tD,UAAUquD,gBAAkB,WACzC,IAAIhuD,EAAQ/yB,KAAK+yB,MACbotD,EAAeiB,GAAiBruD,EAAMugC,QAASvgC,EAAM8sD,WAIzD,YAHqBp7E,IAAjB07E,IACAA,EAAeiB,GAAiBruD,EAAMitD,eAAgBjtD,EAAM8sD,YAEzC,MAAhBM,EAAuB,KAAOA,GAEzCK,EAAiB9tD,UAAUsuD,eAAiB,SAAUb,GAClD,IAAIjC,EAAsBl+E,KAAKwR,QAAQ6rC,YAAY6gC,oBAC/C+C,EAAa,GACbE,EAAsB,KAC1B,GAAIhB,EACA,IAAK,IAAIkB,KAAanD,EAClB,QAAgCz5E,IAA5B07E,EAAakB,GAA0B,CACvCJ,EAAaI,EACbF,EAAsBjD,EAAoBmD,GAC1C,MAIZ,MAAO,CAAEJ,WAAYA,EAAYE,oBAAqBA,IAE1DX,EAAiB9tD,UAAUiuD,oBAAsB,WACzC3gF,KAAK8gF,mBACL9gF,KAAK8gF,kBAAkB5tC,OAAOlzC,KAAKkgF,WAAW9D,SAAWp8E,KAAK+yB,MAAMktD,YAAY7D,QAChFp8E,KAAK8gF,kBAAkBI,aAGxBV,EA5E2B,CA6EpCtE,IACE4D,GAA2B,SAAUtH,GAErC,SAASsH,IACL,IAAIp+B,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAOhE,OANA0hD,EAAMi+B,aAAe,SAAU2B,GAC3B5/B,EAAM4/B,OAASA,EACX5/B,EAAM3uB,MAAM6sD,OACZzD,GAAOz6B,EAAM3uB,MAAM6sD,MAAO0B,IAG3B5/B,EAiBX,OA1BA+2B,YAAUqH,EAAWtH,GAWrBsH,EAAUptD,UAAUwgB,OAAS,WACzB,OAAOlzC,KAAK+yB,MAAMjrB,SAAS9H,KAAK2/E,eAEpCG,EAAUptD,UAAUguD,kBAAoB,WACpC,IAAIztD,EAAWjzB,KAAK+yB,MAAMwgC,SACtBtgC,GACAA,EAAS+iB,YAASA,YAAS,GAAIh2C,KAAK+yB,MAAM8sD,WAAY,CAAEptC,GAAIzyC,KAAKshF,WAGzExB,EAAUptD,UAAUmuD,qBAAuB,WACvC,IAAI5tD,EAAWjzB,KAAK+yB,MAAMygC,YACtBvgC,GACAA,EAAS+iB,YAASA,YAAS,GAAIh2C,KAAK+yB,MAAM8sD,WAAY,CAAEptC,GAAIzyC,KAAKshF,WAGlExB,EA3BoB,CA4B7B5D,IACF,SAASqF,KACL,IAAIC,EACAC,EACAC,EAAoB,GACxB,OAAO,SAAUC,EAAW9B,GAMxB,OALK4B,GAAqBjlC,GAAailC,EAAkB5B,IAAc8B,IAAcH,IACjFA,EAAmBG,EACnBF,EAAmB5B,EACnB6B,EAAoBtB,GAAoBuB,EAAW9B,IAEhD6B,GAGf,SAAStB,GAAoB/sB,EAAYwsB,GAIrC,MAH0B,mBAAfxsB,IACPA,EAAaA,EAAWwsB,IAErBvqB,GAAgBjC,GAE3B,SAAS+tB,GAAiB5iC,EAAOqhC,GAC7B,MAAqB,mBAAVrhC,EACAA,EAAMqhC,EAAWhoE,GAErB2mC,EAGX,IAAIojC,GAA0B,SAAUpJ,GAEpC,SAASoJ,IACL,IAAIlgC,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAM0+B,oBAAsBmB,KACrB7/B,EASX,OAbA+2B,YAAUmJ,EAAUpJ,GAMpBoJ,EAASlvD,UAAUwgB,OAAS,WACxB,IAAengB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1CwW,EAAUxW,EAAQwW,QAClB63D,EAAY,CAAE5tE,KAAMT,EAAQktD,SAC5BmjB,EAAmB7hF,KAAKogF,oBAAoBp4D,EAAQyhC,eAAgBo2B,GACxE,OAAQhoE,EAAcioE,GAAW,CAAED,UAAWA,EAAWtsB,SAAUvrC,EAAQ0hC,aAAc8J,YAAaxrC,EAAQ2hC,gBAAiBi2B,MAAO7sD,EAAM6sD,OAAS,SAAUF,GAAa,OAAO3sD,EAAMjrB,SAAS43E,EAAW,CAAC,MAAQ3sD,EAAM6nD,SAASl6E,KAAO,QAAS,WAAWsY,OAAO6oE,OAEpQD,EAdmB,CAe5B1F,IAEF,SAAS4F,GAAiB3/E,GACtB,OAAOg6C,GAAQh6C,EAAQ4/E,IAE3B,SAASA,GAAgBvjC,GACrB,IAc6Bx2B,EAdzBi3D,EAA8B,mBAAVzgC,EACpB,CAAEv/B,UAAWu/B,GACbA,EACAv/B,EAAYggE,EAAWhgE,UAK3B,OAJIggE,EAAW3rB,UAUctrC,EATWi3D,EAApChgE,EAUG,SAAU+iE,GAAa,OAAQnqE,EAAc6iE,GAAgB4F,SAAU,KAAM,SAAU9uE,GAAW,OAAQqG,EAAc+pE,GAAU,CAAEhH,SAAUppE,EAAQopE,UAAY,SAAUqH,EAAWx4B,GAC1L,IAAIo2B,EAAY7pC,YAASA,YAAS,GAAIgsC,GAAY,CAAEz6B,iBAAkB/1C,EAAQwW,QAAQu/B,mBACtF,OAAQ1vC,EAAc4nE,GAAY,CAAEI,UAAWA,EAAWxsB,WAAYrrC,EAAQqrC,WAAYC,QAAStrC,EAAQsrC,QAASC,SAAUvrC,EAAQurC,SAAUC,YAAaxrC,EAAQwrC,YAAaosB,MAAOqC,GAAa,SAAUvC,EAAWmC,EAAkB3B,EAAYC,GAAgB,OAAQtoE,EAAc,MAAO,CAAEgQ,UAAW4hC,EAAezwC,OAAO6oE,GAAkB7xC,KAAK,KAAM/tB,IAAKy9D,GAAaS,WATrX,CACHpB,UAAWE,EAAWv+E,KACtBue,UAAWA,EACXggE,WAAYA,GAUpB,SAASiD,GAAeC,EAAeC,EAAiBC,EAAwBC,GAC5E,IAAI9D,EAAiBsD,GAAiBK,GAClC1D,EAAkBqD,GAAiBM,EAAgBzvB,OAEvD,OAAOxW,GAjQX,SAAyBqiC,EAAgBC,GACrC,IACI3a,EADA7nB,EAAO,GAEX,IAAK6nB,KAAY0a,EACbD,GAAcza,EAAU7nB,EAAMuiC,EAAgBC,GAElD,IAAK3a,KAAY2a,EACbF,GAAcza,EAAU7nB,EAAMuiC,EAAgBC,GAElD,OAAOxiC,EAuPQsmC,CAAgB/D,EAAgBC,GACtB,SAAUC,GAAW,OAElD,SAAuBA,EAASD,EAAiB2D,EAAiBC,EAAwBC,GACtF,IAAIE,EAAgB9D,EAAQQ,UAAU1hC,UAClCkhC,EAAQ33D,SAASy2B,UACjB6kC,EAAuB7kC,UACvB4kC,EAAgB5kC,SAChBA,EAAW,KACXilC,EAAe,GACf/d,EAAa,GACbge,EAAsB,GAC1B,GAAIF,IACAhlC,EAiER,SAA8BglC,GAC1B,IAAIG,EAAOnpD,KAAKC,UAAU+oD,GACtBlqD,EAAMsqD,GAAiBD,GAK3B,YAJYl+E,IAAR6zB,IACAA,EAAMimB,GAAeikC,GACrBI,GAAiBD,GAAQrqD,GAEtBA,EAxEQuqD,CAAqBL,IAClB,CACV,IAAIM,EAAQ3iC,GAA4B3C,GACxCilC,EAAeK,EAAMrkC,KACD,IAAhBqkC,EAAMvhF,QACNmjE,EAAa+d,EACbC,EAAsBjE,EAAgBgE,GAAgBhE,EAAgBgE,GAAcxD,WAAa,IAI7G,IAAI8D,EAAkB,SAAUC,GAC5B,IAAIC,EAAgBD,EAAcvwB,YAAc,GAC5CS,EAAgBwrB,EAAQ33D,SAASmsC,cACrC,OAAqB,MAAjBA,GAAyD,MAAhC+vB,EAAc/vB,GAChC+vB,EAAc/vB,GAEU,MAA/B+vB,EAAcvE,EAAQh+E,MACfuiF,EAAcvE,EAAQh+E,MAEA,MAA7BuiF,EAAcve,GACPue,EAAcve,GAElB,MAEPwe,EAAmB,SAAUF,GAC7B,IAAItwB,EAAcswB,EAActwB,aAAe,GAC3CywB,EAAYzE,EAAQ33D,SAASmsC,cACjC,OAAiB,MAAbiwB,GAA+C,MAA1BzwB,EAAYywB,GAC1BzwB,EAAYywB,GAEU,MAA7BzwB,EAAYgsB,EAAQh+E,MACbgyD,EAAYgsB,EAAQh+E,MAEA,MAA3BgyD,EAAYgS,GACLhS,EAAYgS,GAEhB,MAEX,MAAO,CACHhkE,KAAMg+E,EAAQh+E,KACdue,UAAWy/D,EAAQz/D,UACnBu+B,SAAUA,EACVilC,aAAcA,EACd/d,WAAYA,EACZ0e,eAAgB1E,EAAQ33D,SACxBq7D,gBAAiBpsC,YAASA,YAAS,GAAI0sC,GAAsBhE,EAAQQ,WACrEmE,mBAAoBN,EAAgBV,IAChCU,EAAgBX,IAChB1D,EAAQQ,UAAUzsB,WACtB6wB,kBAAmBP,EAAgBT,IAC/B5D,EAAQ33D,SAAS0rC,YACjBswB,EAAgB5xB,KAChButB,EAAQh+E,KAEZ6iF,oBAAqBL,EAAiBb,IAClCa,EAAiBd,IACjB1D,EAAQQ,UAAUsE,WACtBC,mBAAoBP,EAAiBZ,IACjC5D,EAAQ33D,SAASy8D,YACjBN,EAAiB/xB,KAvE4BuyB,CAAchF,EAASD,EAAiB2D,EAAiBC,EAAwBC,KA4E1I,IAAIM,GAAmB,GAWnBe,GAAsC,WACtC,SAASA,EAAqB5wD,GAC1B/yB,KAAK+yB,MAAQA,EACb/yB,KAAK69D,QAAU4E,GAAO1vC,EAAM2vC,SAAU3vC,EAAMqqB,SAC5Cp9C,KAAK4jF,iBA+ST,OA1SAD,EAAqBjxD,UAAUmxD,UAAY,SAAUC,EAAoBhf,EAAaif,GAClF,IAAI3mC,EAAUp9C,KAAK+yB,MAAMqqB,QACrB4mC,EAAW5mC,EAAQgB,SAAShB,EAAQ2tB,QAAQjG,EAAagf,EAAmBG,kBAChFH,EAAmB9zB,eACnB,OAAOhwD,KAAKkkF,MAAMF,GAAW,EAAGD,IAGpCJ,EAAqBjxD,UAAUyxD,UAAY,SAAUL,EAAoBhf,EAAaif,GAClF,IAAI3mC,EAAUp9C,KAAK+yB,MAAMqqB,QACrBgnC,EAAWhnC,EAAQv6C,IAAIu6C,EAAQ2tB,QAAQjG,EAAagf,EAAmBG,kBAC3EH,EAAmB9zB,eACnB,OAAOhwD,KAAKkkF,MAAME,EAAU,EAAGL,IAKnCJ,EAAqBjxD,UAAUwxD,MAAQ,SAAUpf,EAAa99D,EAAW+8E,QAChD,IAAjBA,IAA2BA,GAAe,GAC9C,IACI3zB,EACAi0B,EACAC,EACAC,EACAjjB,EACAkjB,EAn6GoBvqC,EAAMmB,EA65G1BroB,EAAQ/yB,KAAK+yB,MAyBjB,OAlBAq9B,EAAapwD,KAAKykF,kBAClBr0B,EAAapwD,KAAK0kF,eAAet0B,GAC7B2zB,IAt6GoB9pC,EAu6GiB6qB,EAArCA,EAt6GW,OADe1pB,EAu6GwBgV,GAt6GhDjnD,OAAiB8wC,EAAOmB,EAAMjyC,MAC7BiyC,EAAMjyC,MAEA,MAAbiyC,EAAMhyC,KAAe6wC,GAAQmB,EAAMhyC,IAC5B,IAAIsxC,KAAKU,EAAMhyC,IAAI0vC,UAAY,GAEnCmB,GAk6GHoqC,EAAcrkF,KAAK2kF,sBAAsB7f,EAAa99D,GACtDs9E,EAAgB,0BAA0BthE,KAAKqhE,EAAY5lC,MAC3D8lC,EAAcvkF,KAAK4kF,iBAAiB5kF,KAAK0kF,eAAeL,EAAYjpC,OAAQipC,EAAY5lC,KAAM6lC,GAE9FhjB,EADAijB,EAAcvkF,KAAK0kF,eAAeH,GAE7BxxD,EAAMk3B,sBACPqX,EAAcxH,GAAgBwH,EAAa+iB,EAAYjpC,QAG3DkmB,EAAcxH,GADdwH,EAActhE,KAAK6kF,kBAAkBvjB,GACMlR,GAG3Co0B,EAAUxqB,GAAgBqqB,EAAYjpC,MAAOgV,GACtC,CAGHA,WAAYA,EAGZmR,aAAc8iB,EAAYjpC,MAE1B6oC,iBAAkBI,EAAY5lC,KAC9B6lC,cAAeA,EAGfhjB,YAAaA,EAGbijB,YAAaA,EAEb58B,YAAa50B,EAAM40B,YAEnBC,YAAa70B,EAAM60B,YACnB48B,QAASA,EAETx0B,cAAehwD,KAAK8kF,mBAAmBT,EAAY7mC,YAO3DmmC,EAAqBjxD,UAAU+xD,gBAAkB,WAC7C,IAAIjmC,EAAQx+C,KAAK+yB,MAAMgyD,gBACnBC,EAA+B,mBAAVxmC,EACnBA,EAAMtpB,KAAKl1B,KAAK+yB,MAAM+sC,YAAa9/D,KAAK69D,SACxCrf,EACN,OAAOx+C,KAAKilF,YAAYD,IACpB,CAAE77E,MAAO,KAAMC,IAAK,OAM5Bu6E,EAAqBjxD,UAAUiyD,sBAAwB,SAAU1qC,EAAMjzC,GACnE,IAII8oD,EAJA/8B,EAAQ/yB,KAAK+yB,MACbyqB,EAAW,KACXiB,EAAO,KACPrD,EAAQ,KAmBZ,OAjBIroB,EAAMyqB,SAGNpC,EAAQp7C,KAAKklF,uBAAuBjrC,EAAMjzC,EAF1Cw2C,EAAWzqB,EAAMyqB,SACjBiB,EAAO1rB,EAAM0vD,eAGP3yB,EAAW9vD,KAAK+yB,MAAM+8B,WAC5BrR,EAAO,MACPrD,EAAQp7C,KAAKmlF,uBAAuBlrC,EAAMjzC,EAAW8oD,KAE/C1U,EAAQp7C,KAAKolF,wBAAwBnrC,IAC3CwE,EAAO1rB,EAAMqqB,QAAQqtB,kBAAkBrvB,EAAMjyC,MAAOiyC,EAAMhyC,KAAKq1C,MAI/DA,EAAO0B,GADP3C,EAAWx9C,KAAKqlF,uBAC6B5mC,KAC7CrD,EAAQp7C,KAAKklF,uBAAuBjrC,EAAMjzC,EAAWw2C,EAAUiB,IAE5D,CAAEjB,SAAUA,EAAUiB,KAAMA,EAAMrD,MAAOA,IAEpDuoC,EAAqBjxD,UAAU2yD,oBAAsB,WACjD,OAAO9mC,GAAe,CAAEzM,IAAK,KAIjC6xC,EAAqBjxD,UAAUmyD,kBAAoB,SAAUzpC,GACzD,IAAIzwC,EAAK3K,KAAK+yB,MAAOqqB,EAAUzyC,EAAGyyC,QAA6CuK,EAAch9C,EAAGg9C,YAAaC,EAAcj9C,EAAGi9C,YAC1Hz+C,EAAQiyC,EAAMjyC,MAAOC,EAAMgyC,EAAMhyC,IAcrC,OAf4DuB,EAAGyoD,iBAIvDxT,GAAY+H,GAAe,IAC3Bx+C,EAAQ+vC,EAAW/vC,GACnBA,EAAQi0C,EAAQv6C,IAAIsG,EAAOw+C,IAG3B/H,GAAYgI,GAAe,IAE3Bx+C,EAAMovC,EADNpvC,EAAM8vC,EAAW9vC,IACG,GACpBA,EAAMg0C,EAAQv6C,IAAIuG,EAAKw+C,KAGxB,CAAEz+C,MAAOA,EAAOC,IAAKA,IAIhCu6E,EAAqBjxD,UAAUwyD,uBAAyB,SAAUjrC,EAAMjzC,EAAWw2C,EAAUiB,GACzF,IACIt1C,EACAC,EACAkvB,EAHA3tB,EAAK3K,KAAK+yB,MAAOqqB,EAAUzyC,EAAGyyC,QAAS2S,EAAgBplD,EAAGolD,cAK9D,IAAKA,EAAe,CAChB,IAAIC,EAAgBhwD,KAAK+yB,MAAMi9B,cAIvBD,EAHJC,GAEIlQ,GAAUkQ,GAAiBlQ,GAAUtC,GACrB2C,GAA4B6P,GAAevR,KAO/CA,EAUxB,SAAS6mC,IACLn8E,EAAQi0C,EAAQ2tB,QAAQ9wB,EAAM8V,GAC9B3mD,EAAMg0C,EAAQv6C,IAAIsG,EAAOq0C,GACzBllB,EAAM,CAAEnvB,MAAOA,EAAOC,IAAKA,GAQ/B,OAjBIw2C,GAAYpC,IAAa,GACrBx9C,KAAKulF,YAAYp8E,KAEjBA,EAAQ+vC,EADR/vC,EAAQnJ,KAAKwlF,eAAer8E,EAAOnC,KAS3Cs+E,IAEKtlF,KAAK0kF,eAAepsD,KACrB2hB,EAAOj6C,KAAKwlF,eAAevrC,EAAMjzC,GACjCs+E,KAEGhtD,GAGXqrD,EAAqBjxD,UAAUyyD,uBAAyB,SAAUlrC,EAAMjzC,EAAW8oD,GAC/E,IAGI1mD,EAHAuB,EAAK3K,KAAK+yB,MAA6Bg9B,EAAgBplD,EAAGolD,cAC1D01B,EAAe,EACft8E,EAAQ8wC,EAER8V,IACA5mD,EAL2BwB,EAAGyyC,QAKd2tB,QAAQ5hE,EAAO4mD,IAEnC5mD,EAAQ+vC,EAAW/vC,GAEnBC,EADAD,EAAQnJ,KAAKwlF,eAAer8E,EAAOnC,GAEnC,GACIoC,EAAMovC,EAAQpvC,EAAK,GACdpJ,KAAKulF,YAAYn8E,KAClBq8E,GAAgB,SAEfA,EAAe31B,GACxB,MAAO,CAAE3mD,MAAOA,EAAOC,IAAKA,IAIhCu6E,EAAqBjxD,UAAU0yD,wBAA0B,SAAUnrC,GAC/D,IAAIlnB,EAAQ/yB,KAAK+yB,MACbyrB,EAAQzrB,EAAM2yD,kBACdV,EAA+B,mBAAVxmC,EACnBA,EAAMtpB,KAAKnC,EAAM+sC,YAAa/sC,EAAMqqB,QAAQ+hB,OAAOllB,IACnDuE,EACFpD,EAAQp7C,KAAKilF,YAAYD,GAC7B,OAAI5pC,GAAyB,MAAfA,EAAMjyC,OAA8B,MAAbiyC,EAAMhyC,IAGpCgyC,EAFI,MAOfuoC,EAAqBjxD,UAAUkyD,iBAAmB,SAAUrjB,EAAc0iB,EAAkBK,GACxF,OAAO/iB,GAIXoiB,EAAqBjxD,UAAUoyD,mBAAqB,SAAUa,GAC1D,IACIC,EACJ,OAFoB5lF,KAAK+yB,MAAMi9B,iBAK1B41B,EAAkB5lF,KAAK+yB,MAAMg9B,eACvBxR,GAAe,EAAGqnC,GAEzBD,GAGGpnC,GAAe,CAAE3E,KAAM,MAElC+pC,EAAqBjxD,UAAUuyD,YAAc,SAAUY,GACnD,GAAIA,EAAY,CACZ,IAAIzqC,GA3sHWgC,EA2sHoBp9C,KAAK+yB,MAAMqqB,QA1sHlDj0C,EAAQ,KACRC,EAAM,MAFMo1C,EA2sHeqnC,GAxsHrB18E,QACNA,EAAQi0C,EAAQwlB,aAAapkB,EAAMr1C,QAEnCq1C,EAAMp1C,MACNA,EAAMg0C,EAAQwlB,aAAapkB,EAAMp1C,MAEhCD,GAAUC,EAGXD,GAASC,GAAOA,EAAMD,EACf,KAEJ,CAAEA,MAAOA,EAAOC,IAAKA,GALjB,MAqsHH,OAHIgyC,IACAA,EAAQqd,GAAuBrd,IAE5BA,EA/sHnB,IAAoBoD,EAAOpB,EACnBj0C,EACAC,EA+sHA,OAAO,MAKXu6E,EAAqBjxD,UAAUkxD,eAAiB,WAC5C,IAGI/7E,EAHAooD,EAAajwD,KAAK+yB,MAAMk9B,YAAc,GACtC61B,EAAkB,GAClBttB,EAAS,EAKb,KAH4B,IAAxBx4D,KAAK+yB,MAAMk2B,UACXgH,EAAWrsD,KAAK,EAAG,GAElBiE,EAAI,EAAGA,EAAI,EAAGA,GAAK,GACdi+E,EAAgBj+E,IAAgC,IAA3BooD,EAAWhnD,QAAQpB,MAC1C2wD,GAAU,GAGlB,IAAKA,EACD,MAAM,IAAInkC,MAAM,sBAEpBr0B,KAAK8lF,gBAAkBA,GAI3BnC,EAAqBjxD,UAAUgyD,eAAiB,SAAUtpC,GACtD,IAAIjyC,EAAQiyC,EAAMjyC,MAAOC,EAAMgyC,EAAMhyC,IAOrC,OANID,IACAA,EAAQnJ,KAAKwlF,eAAer8E,IAE5BC,IACAA,EAAMpJ,KAAKwlF,eAAep8E,GAAM,GAAG,IAE1B,MAATD,GAAwB,MAAPC,GAAeD,EAAQC,EACjC,CAAED,MAAOA,EAAOC,IAAKA,GAEzB,MAIXu6E,EAAqBjxD,UAAU6yD,YAAc,SAAUzzC,GAInD,OAHIA,aAAe4I,OACf5I,EAAMA,EAAIiI,aAEP/5C,KAAK8lF,gBAAgBh0C,IAOhC6xC,EAAqBjxD,UAAU8yD,eAAiB,SAAUvrC,EAAM8rC,EAAKC,GAGjE,SAFY,IAARD,IAAkBA,EAAM,QACR,IAAhBC,IAA0BA,GAAc,GACrChmF,KAAK8lF,iBAAiB7rC,EAAKF,aAAeisC,EAAcD,EAAM,GAAK,GAAK,IAC3E9rC,EAAOzB,EAAQyB,EAAM8rC,GAEzB,OAAO9rC,GAEJ0pC,EAnT+B,GAmY1C,SAASsC,GAA2BnzB,GAChC,IAAK,IAAInf,KAAYmf,EACjB,GAAIA,EAAanf,GAAU0uB,WACvB,OAAO,EAGf,OAAO,EAEX,SAAS6jB,GAAWC,EAAiB3e,EAASjF,EAAY/wD,GAEtD,IADA,IAAIyqC,EAAO,GACFvsC,EAAK,EAAG02E,EAAY5e,EAAS93D,EAAK02E,EAAUjiF,OAAQuL,IAAM,CAC/D,IAAI6W,EAAS6/D,EAAU12E,GACvBusC,EAAK11B,EAAOotB,UAAYptB,EAK5B,OAHIg8C,IACAtmB,EAAOoqC,GAAkBpqC,EAAMsmB,EAAY/wD,IAExCwkC,YAASA,YAAS,GAAImwC,GAAkBlqC,GAKnD,SAASoqC,GAAkBjf,EAAY7E,EAAY/wD,GAC/C,OAAO80E,GAAkBlf,EAAYprB,GAAWorB,EAAY,SAAUlT,GAAe,OAEzF,SAAuBA,EAAaqO,EAAY/wD,GAC5C,OAAK+0E,GAAoBryB,EAAa1iD,IAG9BA,EAAQwW,QAAQkiC,eACnBgK,EAAYqO,YACbrO,EAAYmO,YACZE,EAAWp5D,MAAQ+qD,EAAYqO,WAAWp5D,OAC1Co5D,EAAWn5D,IAAM8qD,EAAYqO,WAAWn5D,KANhC8qD,EAAYoO,cAJoEkkB,CAActyB,EAAaqO,EAAY/wD,KAAc+wD,GAAY,EAAO/wD,GAYxK,SAAS80E,GAAkBG,EAAaC,EAAcnkB,EAAYzuB,EAAWtiC,GACzE,IAAIm1E,EAAc,GAClB,IAAK,IAAIhzC,KAAY8yC,EAAa,CAC9B,IAAIlgE,EAASkgE,EAAY9yC,GAErBgzC,EAAYhzC,GADZ+yC,EAAa/yC,GACWizC,GAAYrgE,EAAQg8C,EAAYzuB,EAAWtiC,GAG3C+U,EAGhC,OAAOogE,EAEX,SAASC,GAAY1yB,EAAaqO,EAAYzuB,EAAWtiC,GACrD,IAAIwW,EAAUxW,EAAQwW,QAAS83C,EAActuD,EAAQsuD,YACjD+mB,EAAYr1E,EAAQ6rC,YAAY2kB,gBAAgB9N,EAAYgO,aAC5D4kB,EAAUxwC,IAqCd,OApCAuwC,EAAUE,MAAM,CACZ7yB,YAAaA,EACb9Y,MAAOmnB,EACPzuB,UAAWA,EACXtiC,QAASA,GACV,SAAU8mB,GACT,IAAI27B,EAAY37B,EAAI27B,UAChBjsC,EAAQskC,qBACR2H,EAAYjsC,EAAQskC,mBAAmBp3B,KAAK4qC,EAAa7L,EAAW37B,EAAI0uD,MAAQ/yB,GAEhFC,EAAYwN,UACZzN,EAAYC,EAAYwN,QAAQxsC,KAAK4qC,EAAa7L,EAAW37B,EAAI0uD,MAAQ/yB,GAE7EziD,EAAQknB,SAAS,CACbh4B,KAAM,iBACNizC,SAAUugB,EAAYvgB,SACtBmzC,QAASA,EACTvkB,WAAYA,EACZtO,UAAWA,KAEhB,SAAUj/B,GACT+V,QAAQ24B,KAAK1uC,EAAMgF,QAAShF,GACxBhN,EAAQqkC,oBACRrkC,EAAQqkC,mBAAmBn3B,KAAK4qC,EAAa9qC,GAE7Ck/B,EAAYyN,SACZzN,EAAYyN,QAAQ3sC,GAExBxjB,EAAQknB,SAAS,CACbh4B,KAAM,sBACNizC,SAAUugB,EAAYvgB,SACtBmzC,QAASA,EACTvkB,WAAYA,EACZvtC,MAAOA,MAGRghB,YAASA,YAAS,GAAIke,GAAc,CAAEmO,YAAY,EAAMC,cAAewkB,IAWlF,SAASG,GAAqBn0B,EAActhD,GACxC,OAAOwqC,GAAW8W,EAAc,SAAUoB,GAAe,OAAOqyB,GAAoBryB,EAAa1iD,KAqBrG,SAAS+0E,GAAoBryB,EAAa1iD,GAEtC,OADWA,EAAQ6rC,YAAY2kB,gBAClB9N,EAAYgO,aAAaglB,YA0D1C,SAASC,GAAsBlzB,EAAWhd,GACtC,IAAImwC,EACJ,GAAKnwC,EAGA,CACDmwC,EAAgB,GAChB,IAAK,IAAI13E,EAAK,EAAG4kD,EAAcL,EAAWvkD,EAAK4kD,EAAYnwD,OAAQuL,IAAM,CACrE,IAAI23E,EAAW/yB,EAAY5kD,GACvB43E,EAAerwC,EAAKowC,GACpBC,EACAF,EAAcxjF,KAAK0jF,GAEE,MAAhBA,GACLF,EAAcxjF,KAAKyjF,SAX3BD,EAAgBnzB,EAepB,OAAOmzB,EAsBX,SAASG,GAAwBrqC,EAAYvJ,GACzC,OAAOkhB,GAAqB3X,EAAY,SAAUa,GAAY,OAAOA,EAASpK,WAAaA,IAU/F,SAAS6zC,GAAoBC,EAAkB1kB,GAC3C,OAAQA,EAAOriE,MACX,IAAK,iBACD,OAAO,KACX,IAAK,eACD,OAAOqiE,EAAOrD,UAClB,QACI,OAAO+nB,GAInB,SAASC,GAAoBC,EAAmB5kB,GAC5C,OAAQA,EAAOriE,MACX,IAAK,iBACD,MAAO,GACX,IAAK,eACD,OAAOqiE,EAAO6kB,gBAClB,QACI,OAAOD,GAInB,SAASE,GAAgBC,EAAa/kB,GAClC,IAAIglB,EACJ,OAAQhlB,EAAOriE,MACX,IAAK,mBACD,OAAO,KACX,IAAK,iBAED,MAAO,CACHywE,gBAFJ4W,EAAUhlB,EAAO16D,OAEW8oE,eACxBE,cAAe0W,EAAQ1W,cACvBG,QAASuW,EAAQvW,SAEzB,QACI,OAAOsW,GAInB,SAASE,GAAkBC,EAAellB,GACtC,IAAImlB,EACJ,OAAQnlB,EAAOriE,MACX,IAAK,qBACD,OAAO,KACX,IAAK,mBAED,MAAO,CACHywE,gBAFJ+W,EAAYnlB,EAAO16D,OAEW8oE,eAC1BE,cAAe6W,EAAU7W,cACzBG,QAAS0W,EAAU1W,SAE3B,QACI,OAAOyW,GAInB,SAASE,GAAcljB,EAAiBmjB,EAAyBpW,EAAO7N,EAAWrE,GAG/E,MAAO,CAAEyE,OAFIU,EAAgBjd,cAAgBqgC,GAAapjB,EAAgBjd,cAAeid,EAAiBmjB,EAAyBpW,EAAO7N,EAAWrE,GAAe,KAE3I2E,OADZQ,EAAgBhd,cAAgBogC,GAAapjB,EAAgBhd,cAAegd,EAAiBmjB,EAAyBpW,EAAO7N,EAAWrE,GAAe,MAGxK,SAASuoB,GAAaC,EAAgBrjB,EAAiBmjB,EAAyBpW,EAAO7N,EAAWrE,GAC9F,IAAIyoB,EAAiB,GACjB/jB,EAAmB,GACnBgkB,GAAW,EACf,IAAK,IAAIC,KAAeH,EAAgB,CACpC,IACII,EAAaC,GADAL,EAAeG,GACUxjB,EAAiBmjB,EAAyBpW,EAAO7N,EAAWrE,GACtGyoB,EAAeE,GAAeC,EAAWE,QACzCpkB,EAAiB5gE,KAAK+zC,MAAM6sB,EAAkBkkB,EAAWlkB,kBACzDgkB,EAAWA,GAAYE,EAAWF,SAEtC,MAAO,CAAED,eAAgBA,EAAgB/jB,iBAAkBA,EAAkBgkB,SAAUA,GAK3F,SAASG,GAAaE,EAAY5jB,EAClCmjB,EACApW,EAAO7N,EAAWrE,GACd,IAAI52D,EAAsC,QAA9B+7D,EAAgBj+D,UACxB8hF,EAAwB7jB,EAAgB3d,eAAiB,GACzDyhC,EAA8BX,EAAwB31B,YAAc,GACpEu2B,EAAqB/jB,EAAgBxS,YAAc,GACnDw2B,EAA8Bb,EAAwB11B,aAAe,GACrEw2B,EAAsBjkB,EAAgBvS,aAAe,GACrDy2B,EAAiBN,EAAaA,EAAWtmE,MAAM,KAAO,GACtDiiD,EAAmB,GACnBgkB,GAAW,EAgEf,MAAO,CAAEI,QA/DKO,EAAe1/E,IAAI,SAAU2/E,GAAkB,OAAQA,EAAe7mE,MAAM,KAAK9Y,IAAI,SAAU6vE,GACzG,GAAmB,UAAfA,EAEA,OADAkP,GAAW,EACJ,CAAElP,WAAYA,GAEzB,IAAIS,EACAa,EACAyO,EACAC,EACA72B,EACA+wB,EAEJ,GAAKzJ,EAAoB+O,EAAsBxP,GAC3C+P,EAAc,SAAUp0C,GAChB8kC,EAAkBwP,OAClBxP,EAAkBwP,MAAMr0D,KAAK+f,EAAGzoB,OAAQyoB,EAAIA,EAAGzoB,UAGtD88D,EAAatX,EAAM8H,yBAAyBC,MACxCuP,EAAatX,EAAM2H,aAAaL,EAAYpwE,MAC5CupD,EAAasnB,EAAkByP,MACpChG,EAAazJ,EAAkB0P,MAAQ1P,EAAkByP,UAExD,GAAK5O,EAAWzW,EAAUmV,GAAc,CACzC9U,EAAiB5gE,KAAK01E,GACtB+P,EAAc,WACVvpB,EAAY+D,WAAWyV,KAE1B7mB,EAAamoB,EAASyI,sBAClBiG,EAAatX,EAAM2H,aAAaL,EAAYpwE,MAC5CupD,EAAamoB,EAAS0I,mBAC3B,IAAIoG,EAAe9O,EAASyI,oBACxBzI,EAAS0I,kBACbE,EAAahsC,EAAmBojC,EAAS2I,qBACrC3I,EAAS6I,oBACTxe,EAAgBxU,SAAU,CAACi5B,EAAcpQ,GAC7CoQ,QAEC,GAAI5pB,EAAYwZ,GAOjB,GANA+P,EAAc,WACVvpB,EAAYwZ,OAEf7mB,EAAas2B,EAA4BzP,MACrCgQ,EAAatX,EAAM2H,aAAaL,EAAYpwE,MAC5CupD,EAAau2B,EAAmB1P,IAClB,aAAfA,GAA4C,aAAfA,EAA2B,CACxD,IAAIqQ,EAA4B,aAAfrQ,EAA4B,OAAS,OACtDkK,EAAahsC,EAAmByxC,EAA4BU,IACxDT,EAAoBS,GAAa,CACjCX,EAAmBxvC,MAAQ,OAC3B,QACDwvC,EAAmB1P,SAGtBkK,EAAa,SAAUoG,GAAW,OAAOpyC,EAAmByxC,EAA4B3P,IACpF4P,EAAoB5P,GAAa,CACjC0P,EAAmBY,IAAYA,EAC/BA,GACDZ,EAAmB1P,KAG9B,MAAO,CAAEA,WAAYA,EAAY+P,YAAaA,EAAaC,WAAYA,EAAY72B,WAAYA,EAAY+wB,WAAYA,OAEhGhf,iBAAkBA,EAAkBgkB,SAAUA,GAsF7E,SAASqB,GAAaC,GAClB,IAAI1kC,EAAQ,GACZ,IAAK,IAAIzoC,KAAOmtE,EACZ1kC,EAAMxhD,KAAKmmF,mBAAmBptE,GAAO,IAAMotE,mBAAmBD,EAAOntE,KAEzE,OAAOyoC,EAAMpV,KAAK,KA8JtB,SAASg6C,GAAmB7nF,EAAQqP,GAGhC,IAFA,IAAIy4E,EAAiB1tC,GAAkB/qC,EAAQ2vD,iBAAiBrO,cAC5Do3B,EAAY,GACPx6E,EAAK,EAAGy6E,EAAWhoF,EAAQuN,EAAKy6E,EAAShmF,OAAQuL,IAAM,CAG5D,IAFA,IAAI8uC,EAAQ2rC,EAASz6E,GACjB06E,GAAa,EACRviF,EAAI,EAAGA,EAAIoiF,EAAe9lF,OAAQ0D,GAAK,EAC5C,GAAIoiF,EAAepiF,GAAGu6D,OAAS5jB,EAAO,CAClCyrC,EAAe1hD,OAAO1gC,EAAG,GACzBuiF,GAAa,EACb,MAGHA,GACDF,EAAUtmF,KAAK46C,GAGvB,IAAK,IAAI7zC,EAAK,EAAG0/E,EAAmBJ,EAAgBt/E,EAAK0/E,EAAiBlmF,OAAQwG,IAE9E6G,EAAQknB,SAAS,CACbh4B,KAAM,sBACNizC,SAHgB02C,EAAiB1/E,GAGTgpC,WAGhC,IAAK,IAAI/oC,EAAK,EAAG0/E,EAAcJ,EAAWt/E,EAAK0/E,EAAYnmF,OAAQyG,IAE/D4G,EAAQsuD,YAAYyH,eADL+iB,EAAY1/E,IAoBnC,IAAI2/E,GAAgB,CArRSxN,GAAa,CACtC/a,gBAAiB,CAfE,CACnBklB,aAAa,EACbjlB,UAAW,SAAUpO,GACjB,OAAItpD,MAAMyL,QAAQ69C,EAAQhB,QACfgB,EAAQhB,OAEZ,MAEXk0B,MAAO,SAAUnvC,EAAK8pB,GAClBA,EAAQ,CACJzN,UAAWrc,EAAIsc,YAAYhgB,YAuBX6oC,GAAa,CACrC/a,gBAAiB,CAhBE,CACnBC,UAAW,SAAUpO,GACjB,MAA8B,mBAAnBA,EAAQhB,OACRgB,EAAQhB,OAEZ,MAEXk0B,MAAO,SAAUnvC,EAAK8pB,EAASC,IAjwDnC,SAAqB1qB,EAAMyqB,EAASC,GAGhC,IAAI6oB,GAAa,EACbC,EAAiB,WACZD,IACDA,GAAa,EACb9oB,EAAQ/pB,MAAM33C,KAAMsZ,aAGxBoxE,EAAiB,WACZF,IACDA,GAAa,EACT7oB,GACAA,EAAQhqB,MAAM33C,KAAMsZ,aAI5Bgf,EAAM2e,EAAKwzC,EAAgBC,GAC3BpyD,GAA2B,mBAAbA,EAAIja,MAClBia,EAAIja,KAAKosE,EAAgBC,GAgvDzBC,CADW/yC,EAAIsc,YAAYhgB,KACV3J,KAAK,KAAMy0B,GAA0BpnB,EAAIwD,MAF5CxD,EAAIpmC,QAAQ4rC,UAEkD,SAAU6W,GAClFyN,EAAQ,CAAEzN,UAAWA,KACtB0N,QA8FqBob,GAAa,CACzCva,oBAlCkC,CAClCooB,OAAQv7C,OACRw7C,YAAa3jC,GACbiD,WAAY9a,OACZ+a,SAAU/a,OACVgb,cAAehb,QA8Bf2yB,gBAAiB,CA3BA,CACjBC,UAAW,SAAUpO,GACjB,OAAIA,EAAQ1f,KAA2B,SAAnB0f,EAAQ9wC,QAAsB8wC,EAAQ9wC,OAWnD,KAVI,CACHoxB,IAAK0f,EAAQ1f,IACbpxB,OAAQ,OACR6nE,QAAS/2B,EAAQ+2B,QAAU,OAAOh9C,cAClCi9C,YAAah3B,EAAQg3B,YACrB1gC,WAAY0J,EAAQ1J,WACpBC,SAAUyJ,EAAQzJ,SAClBC,cAAewJ,EAAQxJ,gBAKnC08B,MAAO,SAAUnvC,EAAK8pB,EAASC,GAC3B,IAAIztB,EAAO0D,EAAIsc,YAAYhgB,KACvB42C,EAYZ,SAA4B52C,EAAMkH,EAAO5pC,GACrC,IACI24C,EACAC,EACAC,EACA0gC,EAJA3tC,EAAU5rC,EAAQ4rC,QAASp1B,EAAUxW,EAAQwW,QAK7C8hE,EAAS,GA4Bb,OA1BkB,OADlB3/B,EAAajW,EAAKiW,cAEdA,EAAaniC,EAAQmiC,YAGT,OADhBC,EAAWlW,EAAKkW,YAEZA,EAAWpiC,EAAQoiC,UAGF,OADrBC,EAAgBnW,EAAKmW,iBAEjBA,EAAgBriC,EAAQqiC,eAKxB0gC,EAF4B,mBAArB72C,EAAK22C,YAEU32C,EAAK22C,cAIL32C,EAAK22C,aAAe,GAE9C70C,YAAS8zC,EAAQiB,GACjBjB,EAAO3/B,GAAc/M,EAAQiiB,UAAUjkB,EAAMjyC,OAC7C2gF,EAAO1/B,GAAYhN,EAAQiiB,UAAUjkB,EAAMhyC,KAClB,UAArBg0C,EAAQoI,WACRskC,EAAOz/B,GAAiBjN,EAAQoI,UAE7BskC,EA9CiBkB,CAAmB92C,EAAM0D,EAAIwD,MAAOxD,EAAIpmC,UA/EpE,SAAqBo5E,EAAQz2C,EAAK21C,EAAQmB,EAAiBC,GAEvD,IAAIpoD,EAAO,KACI,SAFf8nD,EAASA,EAAOh9C,eAGZuG,EAqCR,SAAiCA,EAAK21C,GAClC,OAAO31C,IACoB,IAAtBA,EAAIlrC,QAAQ,KAAc,IAAM,KACjC4gF,GAAaC,GAxCPqB,CAAwBh3C,EAAK21C,GAGnChnD,EAAO+mD,GAAaC,GAExB,IAAI9C,EAAM,IAAIoE,eACdpE,EAAIqE,KAAKT,EAAQz2C,GAAK,GACP,QAAXy2C,GACA5D,EAAIsE,iBAAiB,eAAgB,qCAEzCtE,EAAIuE,OAAS,WACT,GAAIvE,EAAIwE,QAAU,KAAOxE,EAAIwE,OAAS,IAAK,CACvC,IAAIp0B,GAAS,EACT9+B,OAAM,EACV,IACIA,EAAMkB,KAAKW,MAAM6sD,EAAIyE,cACrBr0B,GAAS,EAEb,MAAOz6B,IAGHy6B,EAuD0C,SAAUnD,EAAW+yB,GACnEtlB,EAAQ,CAAEzN,UAAWA,EAAW+yB,IAAKA,IAvDjCiE,CAAgB3yD,EAAK0uD,GAGrBkE,EAAgB,uBAAwBlE,QAI5CkE,EAAgB,iBAAkBlE,IAG1CA,EAAI0E,QAAU,WACVR,EAAgB,iBAAkBlE,IAEtCA,EAAI2E,KAAK7oD,GAyCL8oD,CAAY13C,EAAK02C,OAAQ12C,EAAKC,IAAK22C,EAAe,EAE/C,SAAUe,EAAc7E,GACvBrlB,EAAQ,CAAE3nC,QAAS6xD,EAAc7E,IAAKA,WAuFhBjK,GAAa,CAC3Cj/B,eAAgB,CAlCJ,CACZ3jB,MAAO,SAAU05B,EAASzW,GACtB,GAAIyW,EAAQ+Z,YAAc/Z,EAAQ6Z,WAAa7Z,EAAQ8Z,SAAW9Z,EAAQi4B,YAAcj4B,EAAQk4B,SAAU,CACtG,IAAIC,EAAgB,CAChBpe,WAAY/Z,EAAQ+Z,YAAc,KAClCF,UAAW7Z,EAAQ6Z,WAAa,KAChCC,QAAS9Z,EAAQ8Z,SAAW,KAC5Bme,WAAYj4B,EAAQi4B,WAAa1uC,EAAQwlB,aAAa/O,EAAQi4B,YAAc,KAC5EC,SAAUl4B,EAAQk4B,SAAW3uC,EAAQwlB,aAAa/O,EAAQk4B,UAAY,MAEtEvuC,OAAW,EAOf,OANIqW,EAAQrW,WACRA,EAAWqW,EAAQrW,WAElBA,GAAYqW,EAAQ6Z,WAAa7Z,EAAQ8Z,UAC1CnwB,EA3pLL,CACHoB,OAFmBc,EA4pLkBmU,EAAQ8Z,SA1pLnC/uB,OAFaa,EA4pL+BoU,EAAQ6Z,WA1pLzC9uB,MACrBh8B,OAAQ88B,EAAG98B,OAAS68B,EAAG78B,OACvBg3B,KAAM8F,EAAG9F,KAAO6F,EAAG7F,KACnBiF,aAAca,EAAGb,aAAeY,EAAGZ,eAypLxB,CACHwY,YAAa3P,SAASmM,EAAQ6Z,YAAc7Z,EAAQ8Z,SACpDnwB,SAAUA,EACVW,SAAU6tC,GAjqL1B,IAA2BtsC,EAAID,EAoqLvB,OAAO,MAEXvB,OAAQ,SAAUC,EAAUhB,EAAcC,GACtC,IAAI6uC,EAAsBnyB,GAAgB3c,EAAc,CAAEh0C,MAAOg1C,EAAS2tC,WAAY1iF,IAAK+0C,EAAS4tC,WACpG,OAAIE,EAUZ,SAAsBre,EAAYF,EAAWvwB,EAAcC,GAKvD,IAJA,IAAI8uC,EAAUte,EAAavxB,GAAYuxB,GAAc,KACjDue,EAAYjzC,EAAWiE,EAAah0C,OACpC0uD,EAAY1a,EAAa/zC,IACzBgjF,EAAiB,GACdD,EAAYt0B,GAAW,CAC1B,IAAIw0B,OAEF,EAEGH,IAAWA,EAAQC,EAAUpyC,eAE1BsyC,EADA3e,EACgBtwB,EAAQv6C,IAAIspF,EAAWze,GAGvBye,EAEpBC,EAAexoF,KAAKyoF,IAExBF,EAAY3zC,EAAQ2zC,EAAW,GAEnC,OAAOC,EA9BQE,CAAanuC,EAASyvB,WAAYzvB,EAASuvB,UAAWue,EAAqB7uC,GAE/E,MAKXgX,cA5C4B,CAC5BwZ,WAAY1mB,GACZwmB,UAAWnvB,GACXovB,QAASpvB,GACTf,SAAUe,GACVutC,WAAY5kC,GACZ6kC,SAAU7kC,MAgEY61B,GAAa,CACnCiB,qBAAsB,CAClBnrB,OAAQ,SAAUA,EAAQrhD,GACtBw4E,GAAmB,CAACn3B,GAASrhD,IAEjCshD,aAAck3B,MAyDlBjN,GAAa,CACTE,eAAgB,CACZ,SAAU50E,GAAS,OAAO49E,GAA2B59E,EAAMyqD,gBAE/DorB,oBAAqB,CACjBqO,KASZ,WACI,IAAIC,EAAY,KACZC,EAAc,GAalB,MAAO,CAAEv5C,OAZT,SAAgBT,EAAI85C,GACZ95C,IAAO+5C,GAAaD,IAASE,IAC7Bh6C,EAAGg8B,UAAY8d,GAEnBC,EAAY/5C,EACZg6C,EAAcF,GAOOrrE,QALzB,WACIsrE,EAAU/d,UAAY,GACtB+d,EAAY,KACZC,EAAc,MArBVC,SAyBZ,WACI,IAAIF,EAAY,KACZG,EAAkB,GActB,SAASzrE,IACLyrE,EAAgBt5E,QAAQ+gC,GACxBu4C,EAAkB,GAClBH,EAAY,KAEhB,MAAO,CAAEt5C,OAlBT,SAAgBT,EAAIi6C,GAChB,IAAIE,EAAcriF,MAAMmoB,UAAUlpB,MAAM0rB,KAAKw3D,GAC7C,GAAIj6C,IAAO+5C,IAAc1rC,GAAc6rC,EAAiBC,GAAc,CAElE,IAAK,IAAIl9E,EAAK,EAAGm9E,EAAgBD,EAAal9E,EAAKm9E,EAAc1oF,OAAQuL,IAErE+iC,EAAG36B,YADW+0E,EAAcn9E,IAGhCwR,IAEJsrE,EAAY/5C,EACZk6C,EAAkBC,GAOG1rE,QAASA,KA5C9Bm9D,gBAAiB,CACbhd,YA9BZ,SAA2BA,EAAa7vD,GACpCA,EAAQ6sD,QAAQE,QAAQ,WAAYvoB,YAASA,YAAS,GAAIgpB,GAA0BqC,EAAYC,YAAa9vD,EAAQ4rC,UAAW,CAAEnrC,KAAMT,EAAQktD,YA8BxIxhB,WA3BZ,SAA0BA,EAAY1rC,GAClC,IAAI6sD,EAAU7sD,EAAQ6sD,QAClBA,EAAQC,YAAY,cACpBD,EAAQE,QAAQ,YAAa0I,GAAe/pB,EAAY1rC,SAqE5Ds7E,GAA+B,WAC/B,SAASA,EAAcC,GACnB/sF,KAAK+sF,cAAgBA,EACrB/sF,KAAKgtF,WAAY,EACjBhtF,KAAKitF,SAAU,EACfjtF,KAAKktF,YAAc,GACnBltF,KAAKmtF,UAAY,EAmErB,OAjEAL,EAAcp6D,UAAU0nD,QAAU,SAAUgT,GACxCptF,KAAKitF,SAAU,EACVjtF,KAAKqtF,aACNrtF,KAAKkkC,eACQ,MAATkpD,EACAptF,KAAKstF,WAGLttF,KAAKmtF,UAAYvoD,WACjB5kC,KAAKstF,SAAS/iD,KAAKvqC,MAAOotF,KAItCN,EAAcp6D,UAAU66D,MAAQ,SAAUC,QACxB,IAAVA,IAAoBA,EAAQ,IAChC,IAAIN,EAAcltF,KAAKktF,YACvBA,EAAYM,IAAUN,EAAYM,IAAU,GAAK,EACjDxtF,KAAKkkC,gBAET4oD,EAAcp6D,UAAU+6D,OAAS,SAAUD,EAAOE,QAChC,IAAVF,IAAoBA,EAAQ,IAChC,IAAIN,EAAcltF,KAAKktF,YACnBM,KAASN,IACLQ,SACOR,EAAYM,IAGnBN,EAAYM,IAAU,EACVN,EAAYM,IACX,UACFN,EAAYM,IAG3BxtF,KAAKstF,aAGbR,EAAcp6D,UAAU26D,SAAW,WAC/B,OAAO7wE,OAAOC,KAAKzc,KAAKktF,aAAa/oF,QAEzC2oF,EAAcp6D,UAAU46D,SAAW,WAC/B,IAAKttF,KAAKgtF,YAAchtF,KAAKqtF,WAAY,CAErC,IADArtF,KAAKgtF,WAAY,EACVhtF,KAAKitF,SACRjtF,KAAKitF,SAAU,EACfjtF,KAAK2tF,UAET3tF,KAAKgtF,WAAY,IAGzBF,EAAcp6D,UAAUhiB,MAAQ,WAC5B1Q,KAAKkkC,eACLlkC,KAAKitF,SAAU,EACfjtF,KAAKktF,YAAc,IAEvBJ,EAAcp6D,UAAUwR,aAAe,WAC/BlkC,KAAKmtF,YACLjpD,aAAalkC,KAAKmtF,WAClBntF,KAAKmtF,UAAY,IAGzBL,EAAcp6D,UAAUi7D,QAAU,WAC1B3tF,KAAK+sF,eACL/sF,KAAK+sF,iBAGND,EAzEwB,GA4E/Bc,GAA4B,WAC5B,SAASA,EAAWC,EAAed,GAC/B/sF,KAAK6tF,cAAgBA,EACrB7tF,KAAK+sF,cAAgBA,EACrB/sF,KAAKkuC,MAAQ,GACbluC,KAAK8tF,cAAgB,IAAIhB,GAAc9sF,KAAKs6E,MAAM/vC,KAAKvqC,OAkC3D,OAhCA4tF,EAAWl7D,UAAU0nD,QAAU,SAAU12E,EAAM0pF,GAC3CptF,KAAKkuC,MAAMtqC,KAAKF,GAChB1D,KAAK8tF,cAAc1T,QAAQgT,IAE/BQ,EAAWl7D,UAAU66D,MAAQ,SAAUC,GACnCxtF,KAAK8tF,cAAcP,MAAMC,IAE7BI,EAAWl7D,UAAU+6D,OAAS,SAAUD,EAAOE,GAC3C1tF,KAAK8tF,cAAcL,OAAOD,EAAOE,IAErCE,EAAWl7D,UAAU4nD,MAAQ,WAEzB,IADA,IAAIpsC,EAAQluC,KAAKkuC,MACVA,EAAM/pC,QAAQ,CAGjB,IAFA,IAAI4pF,EAAiB,GACjBrqF,OAAO,EACHA,EAAOwqC,EAAMv5B,SACjB3U,KAAKguF,QAAQtqF,GACbqqF,EAAenqF,KAAKF,GAExB1D,KAAK2tF,QAAQI,KAGrBH,EAAWl7D,UAAUs7D,QAAU,SAAUtqF,GACjC1D,KAAK6tF,eACL7tF,KAAK6tF,cAAcnqF,IAG3BkqF,EAAWl7D,UAAUi7D,QAAU,SAAUI,GACjC/tF,KAAK+sF,eACL/sF,KAAK+sF,cAAcgB,IAGpBH,EAvCqB,GA2ChC,SAASK,GAAW5sB,EAAawZ,EAAaz9B,GAC1C,IAAIhC,EAQJ,OALIA,EADA,iBAAiBp4B,KAAKq+C,EAAY4iB,kBAC1B5iB,EAAYE,aAGZF,EAAYC,YAEjBlkB,EAAQ4F,YAAY5H,EAAMjyC,MAAOiyC,EAAMhyC,IAAK29C,GAAgB8zB,EAAYvqB,aAOnF,SAA0B+Q,GACtB,IAAI4iB,EAAmB5iB,EAAY4iB,iBACnC,GAAyB,SAArBA,EACA,MAAO,CAAEzqC,KAAM,WAEnB,GAAyB,UAArByqC,EACA,MAAO,CAAEzqC,KAAM,UAAWv2B,MAAO,QAErC,IAAI22B,EAAOb,EAAcsoB,EAAYE,aAAap4D,MAAOk4D,EAAYE,aAAan4D,KAClF,OAAa,OAATwwC,GAAiBA,EAAO,EAEjB,CAAEJ,KAAM,UAAWv2B,MAAO,QAAS6uB,IAAK,WAG5C,CAAE0H,KAAM,UAAWv2B,MAAO,OAAQ6uB,IAAK,WArBgDo8C,CAAiB7sB,IAAe,CAC1HqK,eAAgBrK,EAAYijB,cAC5Bz/B,iBAAkBg2B,EAAY1yB,sBAwBtC,IAAIgmC,GAAqC,WACrC,SAASA,EAAoBp7D,GACzB,IA1qDAq7D,EAFAC,EACAC,EA2qDI5sC,EAAQ1hD,KACZA,KAAKuuF,mBAAqBttC,GAAQjhD,KAAKwuF,qBACvCxuF,KAAKyuF,uBAAyBxtC,GAAQjhD,KAAK0uF,yBAC3C1uF,KAAKssE,mBAAqBrrB,GAAQqrB,IAClCtsE,KAAK8sE,YAAc7rB,GAAQ6rB,IAC3B9sE,KAAK2uF,kBAjrDLN,EAAsB,GACtBC,EAAoB,GAEjB,SAAUM,EAAcC,GAM3B,OALKT,GAAiBttC,GAAc8tC,EAAcP,IAAyBvtC,GAAc+tC,EAAYP,KACjGF,EA3DZ,SAA0BU,EAAYD,GAClC,IAAIE,EAAU,GACVC,EAAQ,CACRhS,SAAU,GACVC,eAAgB,GAChBC,YAAa,GACb9oB,cAAe,GACf+D,qBAAsB,GACtBqK,oBAAqB,GACrB9F,wBAAyB,GACzBygB,2BAA4B,GAC5Btc,yBAA0B,GAC1Buc,0BAA2B,GAC3BC,oBAAqB,GACrBrd,mBAAoB,GACpBrN,MAAO,GACP2qB,sBAAuB,GACvBC,aAAc,KACdC,sBAAuB,GACvBC,qBAAsB,GACtBC,sBAAuB,GACvBC,sBAAuB,GACvBC,qBAAsB,GACtBC,aAAc,GACd7b,gBAAiB,GACjBnb,aAAc,KACd/I,eAAgB,GAChBggC,mBAAoB,KACpB/0B,YAAa,GACbg1B,oBAAqB,KACrBC,qBAAsB,GACtBC,eAAgB,KAChBC,oBAAqB,GACrBC,iBAAkB,GAClBC,eAAgB,GAChBC,gBAAiB,IAErB,SAAS4Q,EAAQ3xC,GACb,IAAK,IAAI5tC,EAAK,EAAGw/E,EAAS5xC,EAAM5tC,EAAKw/E,EAAO/qF,OAAQuL,IAAM,CACtD,IAAIuD,EAAMi8E,EAAOx/E,GACZq/E,EAAQ97E,EAAI+S,MACb+oE,EAAQ97E,EAAI+S,KAAM,EAClBipE,EAAQh8E,EAAIkW,MACZ6lE,EAwBL,CACHhS,UAFcmS,EAvBeH,GAyBZhS,SAAShkE,QAFJo2E,EAvBcn8E,GAyBI+pE,UACxCC,eAAgBkS,EAAOlS,eAAejkE,OAAOo2E,EAAOnS,gBACpDC,YAAaiS,EAAOjS,YAAYlkE,OAAOo2E,EAAOlS,aAC9C9oB,cAAepe,YAASA,YAAS,GAAIm5C,EAAO/6B,eAAgBg7B,EAAOh7B,eACnE+D,qBAAsBg3B,EAAOh3B,qBAAqBn/C,OAAOo2E,EAAOj3B,sBAChEqK,oBAAqBxsB,YAASA,YAAS,GAAIm5C,EAAO3sB,qBAAsB4sB,EAAO5sB,qBAC/E9F,wBAAyByyB,EAAOzyB,wBAAwB1jD,OAAOo2E,EAAO1yB,yBACtEygB,2BAA4BgS,EAAOhS,2BAA2BnkE,OAAOo2E,EAAOjS,4BAC5Etc,yBAA0BsuB,EAAOtuB,yBAAyB7nD,OAAOo2E,EAAOvuB,0BACxEuc,0BAA2B+R,EAAO/R,0BAA0BpkE,OAAOo2E,EAAOhS,2BAC1EC,oBAAqB8R,EAAO9R,oBAAoBrkE,OAAOo2E,EAAO/R,qBAC9Drd,mBAAoBmvB,EAAOnvB,mBAAmBhnD,OAAOo2E,EAAOpvB,oBAC5DrN,MAAO3c,YAASA,YAAS,GAAIm5C,EAAOx8B,OAAQy8B,EAAOz8B,OACnD2qB,sBAAuB6R,EAAO7R,sBAAsBtkE,OAAOo2E,EAAO9R,uBAClEC,aAAc6R,EAAO7R,cAAgB4R,EAAO5R,aAC5CC,sBAAuB2R,EAAO3R,sBAAsBxkE,OAAOo2E,EAAO5R,uBAClEC,qBAAsB0R,EAAO1R,qBAAqBzkE,OAAOo2E,EAAO3R,sBAChEC,sBAAuByR,EAAOzR,sBAAsB1kE,OAAOo2E,EAAO1R,uBAClEE,qBAAsBuR,EAAOvR,qBAAqB5kE,OAAOo2E,EAAOxR,sBAChED,sBAAuBwR,EAAOxR,sBAAsB3kE,OAAOo2E,EAAOzR,uBAClEE,aAAc7nC,YAASA,YAAS,GAAIm5C,EAAOtR,cAAeuR,EAAOvR,cACjE7b,gBAAiBmtB,EAAOntB,gBAAgBhpD,OAAOo2E,EAAOptB,iBACtDnb,aAAcuoC,EAAOvoC,cAAgBsoC,EAAOtoC,aAC5C/I,eAAgBqxC,EAAOrxC,eAAe9kC,OAAOo2E,EAAOtxC,gBACpDggC,mBAAoBsR,EAAOtR,oBAAsBqR,EAAOrR,mBACxD/0B,YAAaomC,EAAOpmC,aAAeqmC,EAAOrmC,YAC1Cg1B,oBAAqBoR,EAAOpR,qBAAuBqR,EAAOrR,oBAC1DC,qBAAsBhoC,YAASA,YAAS,GAAIm5C,EAAOnR,sBAAuBoR,EAAOpR,sBACjFC,eAAgBmR,EAAOnR,gBAAkBkR,EAAOlR,eAChDC,oBAAqBloC,YAASA,YAAS,GAAIm5C,EAAOjR,qBAAsBkR,EAAOlR,qBAC/EC,iBAAkBnoC,YAASA,YAAS,GAAIm5C,EAAOhR,kBAAmBiR,EAAOjR,kBACzEC,eAAgBpoC,YAASA,YAAS,GAAIm5C,EAAO/Q,gBAAiBgR,EAAOhR,gBACrEC,gBAAiBroC,YAASA,YAAS,GAAIm5C,EAAO9Q,iBAAkB+Q,EAAO/Q,mBAlC/E,IAAsB8Q,EAAQC,EAf1B,OAJIN,GACAG,EAAQH,GAEZG,EAAQJ,GACDG,EAQgBL,CAAiBC,EAAcC,IAElDR,EAAsBO,EACtBN,EAAoBO,EACbT,IAyqDPpuF,KAAKqvF,aAAepuC,GAAQouC,IAC5BrvF,KAAKsvF,WAAaruC,GAAQquC,IAC1BtvF,KAAKmoF,cAAgBlnC,GAAQknC,IAC7BnoF,KAAKkiF,eAAiBjhC,GAAQihC,IAC9BliF,KAAKuvF,0BAA4B/tC,GAAc+tC,IAC/CvvF,KAAKwvF,aAAevuC,GAAQuuC,IAC5BxvF,KAAKyvF,iBAAmBjuC,GAAciuC,IACtCzvF,KAAK0vF,qBAAuBzuC,GAAQyuC,GAAsBlzC,IAC1Dx8C,KAAK2vF,kBAAoB1uC,GAAQ0uC,IACjC3vF,KAAK4vF,0BAA4BpuC,GAAcouC,IAC/C5vF,KAAKiuF,WAAahtC,GAAQgtC,IAC1BjuF,KAAKq+D,QAAU,IAAImX,GACnBx1E,KAAK6vF,aAAe,IAAIjC,GAAW5tF,KAAK8vF,cAAcvlD,KAAKvqC,MAAOA,KAAK+vF,WAAWxlD,KAAKvqC,OACvFA,KAAKojE,4BAA8B,GACnCpjE,KAAKgwF,8BAAgC,GACrChwF,KAAKiwF,wBAA0B,GAC/BjwF,KAAKkwF,0BAA4B,GACjClwF,KAAKyjE,+BAAiC,GACtCzjE,KAAKmhE,eAAiB,WAAc,OAAOzf,EAAM5xC,MACjD9P,KAAK04B,SAAW,SAAUqqC,GACtBrhB,EAAMmuC,aAAazV,QAAQrX,IAE/B/iE,KAAK+yB,MAAQA,EACb/yB,KAAK6vF,aAAatC,QAClB,IAAIlL,EAAyB,GACzB8N,EAAcnwF,KAAKuuF,mBAAmBx7D,EAAMqvD,gBAAiBC,EAAwBtvD,EAAM+sC,aAC3FswB,EAAkBD,EAAYlrB,gBAAgBlc,aAAeonC,EAAY9yC,YAAY0L,YACrFsnC,EAAkBrwF,KAAKyuF,uBAAuB2B,EAAiBD,EAAap9D,EAAMqvD,gBAAiBC,GAGvGtvD,EAAM+sC,YAAYgD,mBAAqB9iE,KACvCA,KAAKq+D,QAAQsX,eAAe5iD,EAAM+sC,aAClC9/D,KAAKq+D,QAAQuX,WAAWya,EAAgBroE,SACxC,IA9kIgBA,EAASo1B,EACzBkzC,EA6kIIxrB,GA9kIqB1nB,EA8kIqC+yC,EAAY/yC,QA3kItD,OAFpBkzC,GADgBtoE,EA8kIiBmoE,EAAYlrB,iBA7kIlBnZ,aAGpB1O,EAAQwlB,aAAa0tB,GAEzB7tB,GAAOz6C,EAAQ+jC,IAAK3O,IAykInBikB,EAAcgvB,EAAgBvV,qBAAqBoJ,MAAMpf,GACxD1K,GAAoBiH,EAAYC,YAAawD,KAC9CA,EAAczD,EAAYE,aAAap4D,OAY3C,IAVA,IAAIonF,EAAkB,CAClBnzC,QAAS+yC,EAAY/yC,QACrBp1B,QAASmoE,EAAYlrB,gBACrB5nB,YAAa8yC,EAAY9yC,YACzByiB,YAAa/sC,EAAM+sC,YACnBpnC,SAAU14B,KAAK04B,SACf2lC,QAASr+D,KAAKq+D,QACd8C,eAAgBnhE,KAAKmhE,gBAGhBzxD,EAAK,EAAG/E,EAAKwlF,EAAY9yC,YAAY6/B,YAAaxtE,EAAK/E,EAAGxG,OAAQuL,KAEvEujB,EADetoB,EAAG+E,IACT6gF,GAqBb,IAlBA,IAAIz9B,EA99BZ,SAA0BmS,EAAiB5D,EAAa7vD,GACpD,IAAI8vD,EAAcD,EAAcA,EAAYC,YAAc,KAC1D,OAAO4kB,GAAW,GAwItB,SAA6BjH,EAAYztE,GACrC,IAAIoiD,EAAWkO,GAAyBtwD,GACpCg/E,EAAa,GAAGx3E,OAAOimE,EAAWnsB,cAAgB,IAClD0U,EAAU,GACVyX,EAAWrsB,eACX49B,EAAW10C,QAAQmjC,EAAWrsB,eAE9BqsB,EAAWpsB,QACX29B,EAAW10C,QAAQmjC,EAAWpsB,QAElC,IAAK,IAAInjD,EAAK,EAAG+gF,EAAeD,EAAY9gF,EAAK+gF,EAAatsF,OAAQuL,IAAM,CACxE,IACI6W,EAASq7C,GADG6uB,EAAa/gF,GACY8B,EAASoiD,GAC9CrtC,GACAihD,EAAQ5jE,KAAK2iB,GAGrB,OAAOihD,EAzJekpB,CAAoBzrB,EAAiBzzD,GAAU8vD,EAAa9vD,GA49B3Dm/E,CAAiBR,EAAYlrB,gBAAiB5D,EAAakvB,GAC1EK,EAAe,CACfvO,uBAAwBA,EACxB+N,gBAAiBA,EACjBtrB,YAAaA,EACbzD,YAAaA,EACbxV,cAAe7rD,KAAK4vF,0BAA0BW,GAC9Cz9B,aAAcA,EACdwH,aAAc,GACdpd,WAvlKD,CAAEI,KAAM,GAAIlqB,UAAW,IAwlKtBy9D,qBAxlKD,CAAEvzC,KAAM,GAAIlqB,UAAW,IAylKtB2yC,cAAe,KACf0K,eAAgB,GAChBP,UAAW,KACXE,YAAa,KACb0gB,gBAAiB9wF,KAAKyvF,iBAAiBc,GAAiBO,iBAExDC,EAAkB/6C,YAASA,YAAS,GAAIu6C,GAAkBK,GACrDhmF,EAAK,EAAG+pB,EAAKw7D,EAAY9yC,YAAY2/B,SAAUpyE,EAAK+pB,EAAGxwB,OAAQyG,IAAM,CAC1E,IAAIomF,EAAUr8D,EAAG/pB,GACjBorC,YAAS46C,EAAcI,EAAQ,KAAM,KAAMD,IAE3CE,GAAiBL,EAAcL,IAC/BvwF,KAAKq+D,QAAQE,QAAQ,WAAW,GAEpCv+D,KAAKqI,MAAQuoF,EACb5wF,KAAK+vF,aACL/vF,KAAK6vF,aAAapC,SAqQtB,OAnQAU,EAAoBz7D,UAAUw+D,aAAe,SAAU9O,EAAiBjnD,GACpE,IAAIpI,EAAQ/yB,KAAK+yB,MACjBA,EAAMqvD,gBAAkBjnD,EAClB6a,YAASA,YAAS,GAAIjjB,EAAMqvD,iBAAkBA,GAAmBA,EACvEpiF,KAAK6vF,aAAazV,QAAQ,CACtB15E,KAAM,aAGdytF,EAAoBz7D,UAAUo9D,cAAgB,SAAU/sB,GACpD,IAAIp4D,EAAK3K,KAAM+yB,EAAQpoB,EAAGooB,MAAO1qB,EAAQsC,EAAGtC,MAAOg2D,EAAU1zD,EAAG0zD,QAC5DgkB,EAtiCZ,SAAsCA,EAAwBtf,GAC1D,IAAIp4D,EACJ,OAAQo4D,EAAOriE,MACX,IAAK,aACD,OAAOs1C,YAASA,YAAS,GAAIqsC,KAA0B13E,EAAK,IAAOo4D,EAAOG,YAAcH,EAAOI,eAAgBx4D,IACnH,QACI,OAAO03E,GAgiCkB8O,CAA6B9oF,EAAMg6E,uBAAwBtf,GACpFotB,EAAcnwF,KAAKuuF,mBAAmBx7D,EAAMqvD,gBAAiBC,EAAwBtvD,EAAM+sC,aAC3FswB,EAhjCZ,SAAwBtsB,EAAUf,GAC9B,OAAQA,EAAOriE,MACX,IAAK,mBACDojE,EAAWf,EAAOe,SAE1B,OAAOA,EA2iCmBstB,CAAe/oF,EAAM+nF,gBAAiBrtB,GACxDstB,EAAkBrwF,KAAKyuF,uBAAuB2B,EAAiBD,EAAap9D,EAAMqvD,gBAAiBC,GAGvGtvD,EAAM+sC,YAAYgD,mBAAqB9iE,KACvCq+D,EAAQsX,eAAe5iD,EAAM+sC,aAC7BzB,EAAQuX,WAAWya,EAAgBroE,SACnC,IAAIuoE,EAAkB,CAClBnzC,QAAS+yC,EAAY/yC,QACrBp1B,QAASmoE,EAAYlrB,gBACrB5nB,YAAa8yC,EAAY9yC,YACzByiB,YAAa/sC,EAAM+sC,YACnBpnC,SAAU14B,KAAK04B,SACf2lC,QAASA,EACT8C,eAAgBnhE,KAAKmhE,gBAErB2D,EAAcz8D,EAAMy8D,YAAazD,EAAch5D,EAAMg5D,YACrDrhE,KAAK8P,MAAQ9P,KAAK8P,KAAKgrE,uBAAyBuV,EAAgBvV,uBAChEzZ,EAAcgvB,EAAgBvV,qBAAqBoJ,MAAMpf,IAG7DzD,EAnjCR,SAA2ByiB,EAAoB/gB,EAAQ+B,EAAagW,GAChE,IAAIuW,EACJ,OAAQtuB,EAAOriE,MACX,IAAK,mBACD,OAAOo6E,EAAqBoJ,MAAMnhB,EAAOiB,YAAcc,GAC3D,IAAK,cACD,OAAOgW,EAAqBoJ,MAAMnhB,EAAOiB,YAC7C,IAAK,OAED,IADAqtB,EAAKvW,EAAqB+I,UAAUC,EAAoBhf,IACjD0f,QACH,OAAO6M,EAEX,MACJ,IAAK,OAED,IADAA,EAAKvW,EAAqBqJ,UAAUL,EAAoBhf,IACjD0f,QACH,OAAO6M,EAInB,OAAOvN,EA+hCWwN,CAAkBjwB,EAAa0B,EAD7C+B,EAvqIR,SAA2BA,EAAa/B,GACpC,OAAQA,EAAOriE,MACX,IAAK,cACD,OAAOqiE,EAAOiB,WAClB,QACI,OAAOc,GAkqIGysB,CAAkBzsB,EAAa/B,GACqBstB,EAAgBvV,sBAC9D,SAAhB/X,EAAOriE,MACS,SAAhBqiE,EAAOriE,MACN05D,GAAoBiH,EAAYE,aAAcuD,KAC/CA,EAAczD,EAAYE,aAAap4D,OA4B3C,IA1BA,IAAI2pD,EA9hCZ,SAA4BA,EAAciQ,EAAQ1B,EAAa7vD,GAC3D,IAkDmCmiC,EAlD/B2tB,EAAcD,EAAcA,EAAYC,YAAc,KAC1D,OAAQyB,EAAOriE,MACX,IAAK,oBACD,OAAOwlF,GAAWpzB,EAAciQ,EAAOyE,QAASlG,EAAa9vD,GACjE,IAAK,sBACD,OA6C2BmiC,EA7COovB,EAAOpvB,SA8C1CqI,GA9CqB8W,EA8CO,SAAUoB,GAAe,OAAOA,EAAYvgB,WAAaA,IA7CxF,IAAK,OACL,IAAK,OACL,IAAK,cACL,IAAK,mBACD,OAAI0tB,EACOglB,GAAkBvzB,EAAcwO,EAAa9vD,GAEjDshD,EACX,IAAK,sBACD,OAAOwzB,GAAkBxzB,EAAciQ,EAAOlvB,UAC1CwI,GAAY0mB,EAAOlvB,WACnBozC,GAAqBn0B,EAActhD,GAAU8vD,EAAayB,EAAOjvB,YAAa,EAAOtiC,GAC7F,IAAK,iBACL,IAAK,sBACD,OAqGZ,SAAyB41D,EAAYzzB,EAAUmzC,EAASvkB,GACpD,IAAI53D,EACAupD,EAAckT,EAAWzzB,GAC7B,OAAIugB,GACA4yB,IAAY5yB,EAAYoO,cACjBtsB,YAASA,YAAS,GAAIoxB,KAAcz8D,EAAK,IAAOgpC,GAAYqC,YAASA,YAAS,GAAIke,GAAc,CAAEmO,YAAY,EAAOE,WAAYA,IAAe53D,IAEpJy8D,EA5GQoqB,CAAgB1+B,EAAciQ,EAAOpvB,SAAUovB,EAAO+jB,QAAS/jB,EAAOR,YACjF,IAAK,2BACD,MAAO,GACX,QACI,OAAOzP,GAqgCQ2+B,CAAmBppF,EAAMyqD,aAAciQ,EAAQ1B,EAAakvB,GAC3ErzC,EAj4BZ,SAA0BA,EAAY6lB,EAAQjQ,EAAcuO,EAAa7vD,GACrE,OAAQuxD,EAAOriE,MACX,IAAK,iBACD,OA6BZ,SAA0Bw8C,EAAYgX,EAAa4yB,EAASvkB,EAAYtO,EAAWziD,GAC/E,GAAI0iD,GACA4yB,IAAY5yB,EAAYoO,cAC1B,CACE,IAAIovB,EAAS19B,GAQrB,SAA4BC,EAAWC,EAAa1iD,GAChD,IAAImgF,EAAmBngF,EAAQwW,QAAQgkC,mBACnC4lC,EAAsB19B,EAAcA,EAAYlI,mBAAqB,KAOzE,OANI4lC,IACA39B,EAAYkzB,GAAsBlzB,EAAW29B,IAE7CD,IACA19B,EAAYkzB,GAAsBlzB,EAAW09B,IAE1C19B,EAjBsB49B,CAAmB59B,EAAWC,EAAa1iD,GAAU0iD,EAAa1iD,GAI3F,OAHI+wD,IACAmvB,EAASz0C,GAAgBy0C,EAAQnvB,EAAY/wD,IAE1C0jD,GAAiBqyB,GAAwBrqC,EAAYgX,EAAYvgB,UAAW+9C,GAEvF,OAAOx0C,EAvCQ40C,CAAiB50C,EAAY4V,EAAaiQ,EAAOpvB,UAAWovB,EAAO+jB,QAAS/jB,EAAOR,WAAYQ,EAAO9O,UAAWziD,GAC5H,IAAK,aACD,OAsEZ,SAAkB0rC,EAAYw0C,EAAQK,EAAavgF,GAI/C,OAHIugF,IACAL,EAASz0C,GAAgBy0C,EAAQK,EAAavgF,IAE3C0jD,GAAiBhY,EAAYw0C,GA1ErBzrB,CAAS/oB,EAAY6lB,EAAO7lB,WACnCmkB,EAAcA,EAAYC,YAAc,KAAM9vD,GAClD,IAAK,eACD,OAAOuxD,EAAO7lB,WAClB,IAAK,eACD,OAAOgY,GAAiBhY,EAAY6lB,EAAO7lB,YAC/C,IAAK,OACL,IAAK,OACL,IAAK,cACL,IAAK,mBACD,OAAImkB,EACOpkB,GAAgBC,EAAYmkB,EAAYC,YAAa9vD,GAEzD0rC,EACX,IAAK,gBACD,OAxxIZ,SAA8B80C,EAAQC,GAClC,IAAI30C,EAAO00C,EAAO10C,KAAMlqB,EAAY4+D,EAAO5+D,UACvC8+D,EAAe,GACfC,EAAoB,GACxB,IAAK,IAAIh3C,KAASmC,EACT20C,EAAI30C,KAAKnC,KACV+2C,EAAa/2C,GAASmC,EAAKnC,IAGnC,IAAK,IAAII,KAAcnoB,GACd6+D,EAAI7+D,UAAUmoB,IACf22C,EAAa9+D,EAAUmoB,GAAYJ,SAEnCg3C,EAAkB52C,GAAcnoB,EAAUmoB,IAGlD,MAAO,CACH+B,KAAM40C,EACN9+D,UAAW++D,GAswIAC,CAAqBl1C,EAAY6lB,EAAO7lB,YACnD,IAAK,sBACD,OAAOqqC,GAAwBrqC,EAAY6lB,EAAOpvB,UACtD,IAAK,2BACD,OAAOkhB,GAAqB3X,EAAY,SAAUa,GAAY,OAASA,EAASpK,WAEpF,IAAK,oBACD,MA7yID,CAAE2J,KAAM,GAAIlqB,UAAW,IA8yI1B,QACI,OAAO8pB,GAo2BMm1C,CAAiBhqF,EAAM60C,WAAY6lB,EAAQjQ,EAAcuO,EAAakvB,GAEnFM,EADkB5K,GAA2BnzB,KACDu9B,EAAgBroE,QAAQ4jC,2BACnEvjD,EAAMwoF,sBACP3zC,EACAtyC,EAAK5K,KAAKyvF,iBAAiBc,GAAkB+B,EAAoB1nF,EAAG0nF,kBAAmBxB,EAAkBlmF,EAAGkmF,gBAC5GyB,EAAkBvyF,KAAK0vF,qBAAqB58B,GAE5C+oB,EAAW,CACXwG,uBAAwBA,EACxB+N,gBAAiBA,EACjBtrB,YAAaA,EACbzD,YAAaA,EACbvO,aAAcA,EACd5V,WAAYA,EACZ2zC,qBAAsBA,EACtBC,gBAAiBA,EACjBx2B,aAVet6D,KAAK2vF,kBAAkBkB,EAAqBvzC,KAAMg1C,EAAmBC,GAWpF1mC,cAAe7rD,KAAK4vF,0BAA0BW,GAC9CxqB,cAAeyhB,GAAoBn/E,EAAM09D,cAAehD,GACxD0N,eAAgBiX,GAAoBr/E,EAAMooE,eAAgB1N,GAC1DmN,UAAW2X,GAAgBx/E,EAAM6nE,UAAWnN,GAC5CqN,YAAa4X,GAAkB3/E,EAAM+nE,YAAarN,IAElDguB,EAAkB/6C,YAASA,YAAS,GAAIu6C,GAAkB1U,GACrDnsE,EAAK,EAAGilB,EAAKw7D,EAAY9yC,YAAY2/B,SAAUttE,EAAKilB,EAAGxwB,OAAQuL,IAAM,CAC1E,IAAIshF,EAAUr8D,EAAGjlB,GACjBsmC,YAAS6lC,EAAUmV,EAAQ3oF,EAAO06D,EAAQguB,IAE9C,IAAIyB,EAAavB,GAAiB5oF,EAAOkoF,GACrCkC,EAAYxB,GAAiBpV,EAAU0U,IAEtCiC,GAAcC,EACfp0B,EAAQE,QAAQ,WAAW,GAEtBi0B,IAAeC,GACpBp0B,EAAQE,QAAQ,WAAW,GAE/Bv+D,KAAKqI,MAAQwzE,EACT9oD,EAAM2/D,UACN3/D,EAAM2/D,SAAS3vB,IAGvBorB,EAAoBz7D,UAAUq9D,WAAa,WACvC,IA51BuB7yC,EAAYy1C,EAAYC,EAC/Ct1C,EACAlqB,EArN+B0/B,EAAcuO,EAAa7vD,EAC1D8vD,EA8iCevuC,EAAN/yB,KAAiB+yB,MAAO1qB,EAAxBrI,KAAmCqI,MACxCwqF,EAAU7yF,KAAK8P,KACfqgF,EAAcnwF,KAAKuuF,mBAAmBx7D,EAAMqvD,gBAAiB/5E,EAAMg6E,uBAAwBtvD,EAAM+sC,aACjGuwB,EAAkBrwF,KAAKyuF,uBAAuBpmF,EAAM+nF,gBAAiBD,EAAap9D,EAAMqvD,gBAAiB/5E,EAAMg6E,wBAC/GvyE,EAAO9P,KAAK8P,KAAOkmC,YAASA,YAASA,YAAS,CAAEorB,UAAWphE,KAAKiuF,WAAW5lF,EAAMg5D,YAAagvB,EAAgBroE,QAASmoE,EAAY/yC,SAAU0iB,YAAa/sC,EAAM+sC,YAAapnC,SAAU14B,KAAK04B,SAAU2lC,QAASr+D,KAAKq+D,QAAS8C,eAAgBnhE,KAAKmhE,gBAAkBgvB,GAAcE,GAAkBhoF,GACpSyqF,EAAiB3C,EAAY9yC,YAAY2gC,qBACzC+U,EAAqBF,GAAWA,EAAQ5tB,gBACxC+tB,EAAqB7C,EAAYlrB,gBACrC,GAAI8tB,GAAsBA,IAAuBC,EAM7C,IAAK,IAAI9vB,KALL6vB,EAAmBvtC,WAAawtC,EAAmBxtC,WAEnDn9C,EAAMyqD,aAAehjD,EAAKgjD,cAzjClCwO,GAD6CD,EA0jCqDh5D,EAAMg5D,aAzjC5EA,EAAYC,YAAc,KACnDglB,GAF4BxzB,EA0jCgDhjD,EAAKgjD,aAxjCjDm0B,GAAqBn0B,EAFEthD,EA0jC2D1B,GAxjCrCwxD,GAAa,EAAM9vD,IAyjC3FnJ,EAAM60C,WAAaptC,EAAKotC,YAx2BGy1C,EAw2BiDE,EAAQz1C,QAx2B7Cw1C,EAw2BsD9iF,EAAKstC,QAv2B1GE,GADuBJ,EAw2B4CptC,EAAKotC,YAv2BtDI,KAClBlqB,EAAY+oB,GAAQe,EAAW9pB,UAAW,SAAUU,GACpD,IAAI7gB,EAAMqqC,EAAKxpB,EAASqnB,OACxB,OAAIloC,EAAIwqC,QAAUxqC,EAAIsqC,aACXzpB,EAEJkiB,YAASA,YAAS,GAAIliB,GAAW,CAAEsnB,MAAO,CACzCjyC,MAAOypF,EAAWhwB,aAAa+vB,EAAWxzB,OAAOrrC,EAASsnB,MAAMjyC,MAAO2qB,EAASunB,iBAChFjyC,IAAKwpF,EAAWhwB,aAAa+vB,EAAWxzB,OAAOrrC,EAASsnB,MAAMhyC,IAAK0qB,EAASwnB,gBAC7ED,eAAgBu3C,EAAW1oB,iBAAmB,KAAOp2C,EAASunB,eAAgBC,aAAcs3C,EAAW1oB,iBAAmB,KAAOp2C,EAASwnB,iBAE9I,CAAEgC,KAAMA,EAAMlqB,UAAWA,KA81BD0/D,EACfC,EAAmB7vB,KAAgB8vB,EAAmB9vB,IACtD4vB,EAAe5vB,GAAY8vB,EAAmB9vB,GAAapzD,GAInEijB,EAAMkgE,QACNlgE,EAAMkgE,OAAOnjF,IAGrBq+E,EAAoBz7D,UAAU87D,oBAAsB,SAAUpM,EAAiBC,EAAwBviB,GAEnG,IAAIn1D,EAAK3K,KAAKkzF,0BAA0B9Q,EAAiBC,GAAyB8Q,EAAiBxoF,EAAGwoF,eAAgB91C,EAAc1yC,EAAG0yC,YAAailC,EAAiB33E,EAAG23E,eAAgB8Q,EAAsBzoF,EAAGyoF,oBACjNC,GAD8O1oF,EAAGmpD,OAEjP,IAAI1W,EAAUp9C,KAAKqvF,aAAa8D,EAAe3tC,SAAU2tC,EAAehuC,OAAQguC,EAAejqC,sBAAuBiqC,EAAetjC,SAAUsjC,EAAejuC,SAAU7H,EAAa+1C,EAAqBD,EAAejrC,uBACrNic,EAAYnkE,KAAKkiF,eAAe7kC,EAAYsV,MAAOyvB,EAAiBC,EAAwBC,GAC5FtQ,EAAQhyE,KAAKsvF,WAAW6D,EAAgB91C,GAE5C,MAAO,CACH4nB,gBAAiBkuB,EACjB91C,YAAaA,EACbD,QAASA,EACT+mB,UAAWA,EACX6N,MAAOA,EACP3N,cAPgBrkE,KAAKmoF,cAAcgL,EAAgB/Q,EAAiBpQ,EAAO7N,EAAWrE,GAQtFwiB,eAAgBA,EAChBhf,oBAAqB8vB,EAAoB3pF,MAIjD0kF,EAAoBz7D,UAAUwgE,0BAA4B,SAAU9Q,EAAiBC,GACjF,IAAI13E,EAAK8oD,GAAgB,CACrBtC,GACAixB,EACAC,IACsBl9B,EAASx6C,EAAGw6C,OAClCiuC,EAAsBpzF,KAAKssE,mBADjB3hE,EAAG2/C,SAGbg4B,EAAiBtiF,KAAK8sE,YAAY3nB,GAAUiuC,EAAoB5mB,YAD1C4mB,EAAoB3pF,KACwDue,QAClGq1B,EAAcr9C,KAAK2uF,iBAAiBvM,EAAgBxyB,SAAW,GAAI26B,IACnE32B,EAAW5zD,KAAKyjE,+BAAiCztB,YAASA,YAASA,YAASA,YAASA,YAAS,GAAIgR,IAAuBqK,IAA6BmB,IAA2BnV,EAAY8gC,kBAAmB9gC,EAAY+gC,gBAC5NtqB,EAAQ,GACRC,EAAMN,GAAgB,CACtBtC,GACAmxB,EACAF,EACAC,IAEAxuB,EAAU,GACVy/B,EAAatzF,KAAKojE,4BAClBmwB,EAAiBvzF,KAAKgwF,8BACtBwD,GAAa,EACjB,IAAK,IAAItwB,KAAcnP,EACA,YAAfmP,IACInP,EAAImP,KAAgBowB,EAAWpwB,IAC9BnQ,GAA2BmQ,IACvBA,KAAcowB,GACfvgC,GAA2BmQ,GAAYowB,EAAWpwB,GAAanP,EAAImP,IACvErP,EAAQqP,GAAcqwB,EAAerwB,GAEhCtP,EAASsP,IACdrP,EAAQqP,GAActP,EAASsP,GAAYnP,EAAImP,IAC/CswB,GAAa,GAGb1/B,EAAMoP,GAAcowB,EAAWpwB,IAQ3C,OAJIswB,IACAxzF,KAAKojE,4BAA8BrP,EACnC/zD,KAAKgwF,8BAAgCn8B,GAElC,CACHorB,WAAYj/E,KAAKojE,4BACjB+vB,eAAgBnzF,KAAKgwF,8BACrB3yC,YAAaA,EACb+1C,oBAAqBA,EACrB9Q,eAAgBA,EAChBxuB,MAAOA,IAGfq6B,EAAoBz7D,UAAUg8D,wBAA0B,SAAU5qB,EAAUqsB,EAAa/N,EAAiBC,GACtG,IAAIzH,EAAWuV,EAAYhsB,UAAUL,GACrC,IAAK8W,EACD,MAAM,IAAIvmD,MAAM,aAAgByvC,EAAW,8EAE/C,IAAIn5D,EAAK3K,KAAKyzF,sBAAsB7Y,EAAUuV,EAAY9yC,YAAa8yC,EAAY7N,eAAgBF,EAAiBC,GAAyB8Q,EAAiBxoF,EAAGwoF,eAwBjK,OAvBAE,GADyL1oF,EAAGmpD,OAwBrL,CAAE8mB,SAAUA,EAAU5yD,QAASmrE,EAAgBrY,qBAtB3B96E,KAAKuvF,0BAA0B,CACtDp8B,0BAA2BynB,EAASwI,eAAejwB,0BACnD3V,SAAUo9B,EAASp9B,SACnBilC,aAAc7H,EAAS6H,aACvBrvB,eAAgBwnB,EAASwI,eAAehwB,eACxChW,QAAS+yC,EAAY/yC,QACrB0iB,YAAa9/D,KAAK+yB,MAAM+sC,YACxBnY,YAAawrC,EAAexrC,YAC5BC,YAAaurC,EAAevrC,YAC5BqC,oBAAqBkpC,EAAelpC,oBACpC6F,SAAUqjC,EAAerjC,SACzBC,cAAeojC,EAAepjC,cAC9BC,cAAemjC,EAAenjC,cAC9BC,WAAYkjC,EAAeljC,WAC3BhH,SAAUkqC,EAAelqC,SACzByZ,SAAUywB,EAAepnC,IACzBg5B,gBAAiBoO,EAAe/iC,WAChCs1B,kBAAmByN,EAAe9iC,aAClCH,UAAWijC,EAAejjC,UAC1BC,eAAgBgjC,EAAehjC,iBAG+DuO,QADpF1+D,KAAKwvF,aAAa1rB,EAAU9jE,KAAKmhE,eAAgBgvB,EAAY/yC,WAG/E+wC,EAAoBz7D,UAAU+gE,sBAAwB,SAAU7Y,EAAUv9B,EAAailC,EAAgBF,EAAiBC,GACpH,IAAItuB,EAAMN,GAAgB,CACtBtC,GACAypB,EAASwI,eACTd,EACAF,EACAxH,EAASwH,gBACTC,IAEAzuB,EAAW5d,YAASA,YAASA,YAASA,YAASA,YAASA,YAAS,GAAIgR,IAAuBqK,IAA6BmB,IAA2BS,IAAuB5V,EAAY8gC,kBAAmB9gC,EAAY+gC,gBACtNvqB,EAAU,GACVy/B,EAAatzF,KAAKiwF,wBAClBsD,EAAiBvzF,KAAKkwF,0BACtBsD,GAAa,EACb1/B,EAAQ,GACZ,IAAK,IAAIoP,KAAcnP,EACfA,EAAImP,KAAgBowB,EAAWpwB,IAC9BnQ,GAA2BmQ,IACxBnQ,GAA2BmQ,GAAYnP,EAAImP,GAAaowB,EAAWpwB,IACvErP,EAAQqP,GAAcqwB,EAAerwB,IAGjCnP,EAAImP,KAAgBljE,KAAKojE,4BAA4BF,IACpDnQ,GAA2BmQ,IACxBnQ,GAA2BmQ,GAAYnP,EAAImP,GAAaljE,KAAKojE,4BAA4BF,IACzFA,KAAcljE,KAAKgwF,gCACnBn8B,EAAQqP,GAAcljE,KAAKgwF,8BAA8B9sB,IAGxDtP,EAASsP,GACdrP,EAAQqP,GAActP,EAASsP,GAAYnP,EAAImP,IAG/CpP,EAAMoP,GAAcnP,EAAImP,GAE5BswB,GAAa,GAOrB,OAJIA,IACAxzF,KAAKiwF,wBAA0Bl8B,EAC/B/zD,KAAKkwF,0BAA4Br8B,GAE9B,CACHorB,WAAYj/E,KAAKiwF,wBACjBkD,eAAgBnzF,KAAKkwF,0BACrBp8B,MAAOA,IAGRq6B,EA7V8B,GA+VzC,SAASkB,GAAa7pC,EAAUkuC,EAAgBxqC,EAAuB2G,EAAU3K,EAAU7H,EAAa+1C,EAAqBvuC,GACzH,IAAIM,EAAS2nB,GAAY4mB,GAAkBN,EAAoB5mB,YAAa4mB,EAAoB3pF,KAChG,OAAO,IAAIsgE,GAAQ,CACf3mB,eAAgB,UAChBoC,SAAUA,EACVykB,kBAAmB5sB,EAAYygC,mBAC/B34B,OAAQA,EACR+D,sBAAuBA,EACvB2G,SAAUA,EACV3K,SAAUA,EACV2B,aAAcxJ,EAAYwJ,aAC1BhC,iBAAkBA,IAG1B,SAASyqC,GAAWtnE,EAASq1B,GAEzB,OAAO,IADUA,EAAYwgC,aAAa71D,EAAQuiC,cAAgB+zB,IAC5Ct2D,GAE1B,SAASunE,GAA0Bx8D,GAE/B,OAAO,IADyBA,EAAMogC,2BAA6BwwB,IAC9B5wD,GAEzC,SAASy8D,GAAa9uF,EAAMygE,EAAgB/jB,GACxC,OAAO,IAAI8jB,GAAQxgE,EAAMygE,EAAgB/jB,GAE7C,SAASsyC,GAAqB58B,GAC1B,OAAO3W,GAAQ2W,EAAc,SAAUoB,GAAe,OAAOA,EAAYgE,KAE7E,SAASy3B,GAAkB/zB,EAAW02B,EAAmBC,GACrD,IAAIj4B,EAAe,CAAE,GAAIg4B,GACzB,IAAK,IAAIn3C,KAASygB,EAAW,CACzB,IAAI3oD,EAAM2oD,EAAUzgB,GAChBloC,EAAI0gC,UAAY4+C,EAAgBt/E,EAAI0gC,YACpC2mB,EAAanf,GAASo3C,EAAgBt/E,EAAI0gC,WAGlD,OAAO2mB,EAEX,SAASm1B,GAAiBc,GACtB,IAAIvoE,EAAUuoE,EAAgBvoE,QAC9B,MAAO,CACHsqE,kBAAmBl8B,GAAc,CAC7BrjD,QAASiV,EAAQukC,aACjB/C,SAAUxhC,EAAQwhC,SAClBgM,cAAextC,EAAQwkC,mBACvBiJ,iBAAkBztC,EAAQykC,sBAC1BiJ,WAAY1tC,EAAQ2kC,gBACpBgJ,QAAyC,kBAAzB3tC,EAAQ0kC,aAA6B1kC,EAAQ0kC,kBAAejoD,EAC5EmxD,MAAO5tC,EAAQ4kC,WACfkJ,gBAAiB9tC,EAAQ6kC,qBACzBkJ,YAAa/tC,EAAQ8kC,iBACrBkJ,UAAWhuC,EAAQ+kC,eACnB8I,MAAO7tC,EAAQglC,YAEhBujC,GACHO,gBAAiB16B,GAAc,CAC3BV,WAAY1tC,EAAQqlC,iBACpBsI,QAA0C,kBAA1B3tC,EAAQslC,cAA8BtlC,EAAQslC,mBAAgB7oD,EAC9EmxD,MAAO5tC,EAAQulC,aAChBgjC,IAGX,SAASU,GAAiB5oF,EAAOmJ,GAC7B,IAAK,IAAI9B,EAAK,EAAG/E,EAAK6G,EAAQ6rC,YAAY4/B,eAAgBvtE,EAAK/E,EAAGxG,OAAQuL,IAEtE,IAAIikF,EADgBhpF,EAAG+E,IACLrH,GACd,OAAO,EAGf,OAAO,EAEX,SAASunF,GAA0BW,GAC/B,OApmG+B/+E,EAomGkC++E,EAnmG1Dv8B,KAIO,KAFIxV,EAimGQ+xC,EAAgBvoE,QAAQ6jC,eA9lGpC,CAAC,IAENthD,MAAMyL,QAAQwoC,GAETA,EAAMrpC,OAAO,SAAUy+E,GAAU,OAAOA,EAAOhmB,aAEnC,iBAAVpvB,GAAsBA,EACxB,CAACA,GAGD,IAEI/0C,IAAI,SAAUmqF,GAAU,OAAQ59C,YAASA,YAAS,GAAIy3B,IAAemmB,KAjB/C,KAAMpiF,GAElD,IAAsBgtC,EAHahtC,EAsmGnC,SAAS6hF,GAAmBrrE,EAAS6rE,GACjC,IAAK,IAAI3wB,KAAcl7C,EACnB+iB,QAAQ24B,KAAK,mBAAqBR,EAAa,KAC1C2wB,EAAW,cAAgBA,EAAW,IAAM,MAKf,SAAUrb,GAEhD,SAASsb,EAAqB/gE,GAC1B,IAAI2uB,EAAQ82B,EAAOtjD,KAAKl1B,KAAM+yB,IAAU/yB,KAexC,OAdA0hD,EAAMqyC,WAAa,SAAUjkF,GACpB4xC,EAAMsyC,YAKPtyC,EAAMo6B,SAAShsE,GAHf4xC,EAAMr5C,MAAQyH,GAMtB4xC,EAAMsyC,YAAc,IAAI7F,GAAoB,CACxC/L,gBAAiBrvD,EAAMqvD,gBACvBtiB,YAAa/sC,EAAM+sC,YACnBmzB,OAAQvxC,EAAMqyC,aAEXryC,EAjBX+2B,YAAUqb,EAAsBtb,GAmBhCsb,EAAqBphE,UAAUwgB,OAAS,WACpC,OAAOlzC,KAAK+yB,MAAMjrB,SAAS9H,KAAKqI,QAEpCyrF,EAAqBphE,UAAUkuD,mBAAqB,SAAUqT,GAC1D,IAAIC,EAAqBl0F,KAAK+yB,MAAMqvD,gBAChC8R,IAAuBD,EAAU7R,iBACjCpiF,KAAKg0F,YAAY9C,aAAagD,IA1BA,CA8BxC9hE,GAWF,IAOI+hE,GAA8B,WAC9B,SAASA,IAELn0F,KAAKo0F,aAAc,EACnBp0F,KAAKq0F,gBAAiB,EACtBr0F,KAAKs0F,UAAY,EACjBt0F,KAAKu0F,aAAe,EACpBv0F,KAAKw0F,YAAc,GACnBx0F,KAAKy0F,eAAiB,GACtBz0F,KAAK00F,UAAY,GAsJrB,OApJAP,EAAazhE,UAAUiiE,QAAU,SAAUxyF,GAEvC,IADA,IAAIyyF,EAAgB,GACXllF,EAAK,EAAGy6E,EAAWhoF,EAAQuN,EAAKy6E,EAAShmF,OAAQuL,IAEtD1P,KAAK60F,YADO1K,EAASz6E,GACGklF,GAE5B,OAAOA,GAEXT,EAAazhE,UAAUmiE,YAAc,SAAUC,EAAOF,GAClD,IAAI3wC,EAAYjkD,KAAK+0F,cAAcD,GACnC,OAAI90F,KAAKg1F,iBAAiB/wC,EAAW6wC,IACjC90F,KAAKi1F,cAAcH,EAAO7wC,GACnB,GAEJjkD,KAAKk1F,uBAAuBjxC,EAAW6wC,EAAOF,IAEzDT,EAAazhE,UAAUsiE,iBAAmB,SAAU/wC,EAAW6wC,GAC3D,QAA2B,IAAnB90F,KAAKs0F,UAAmBrwC,EAAUkxC,WAAaL,EAAMM,WAAap1F,KAAKs0F,aACpD,IAAtBt0F,KAAKu0F,aAAsBtwC,EAAUoxC,SAAWr1F,KAAKu0F,cAG9DJ,EAAazhE,UAAUwiE,uBAAyB,SAAUjxC,EAAW6wC,EAAOF,GACxE,OAAI50F,KAAKq0F,gBAAkBpwC,EAAUqxC,cAC1Bt1F,KAAKu1F,WAAWT,EAAO7wC,EAAUqxC,cAAeV,IAE3DA,EAAchxF,KAAKkxF,GACZ,IAEXX,EAAazhE,UAAU6iE,WAAa,SAAUT,EAAOU,EAASZ,GAC1D,IAAIa,EAAU,EACVC,EAAqB,GACrBC,EAAYb,EAAM/0B,KAClB61B,EAAcJ,EAAQz1B,KAe1B,OAdI41B,EAAUxsF,MAAQysF,EAAYzsF,QAC9BssF,GAAWz1F,KAAK60F,YAAY,CACxBlrF,MAAOmrF,EAAMnrF,MACbyrF,UAAWN,EAAMM,UACjBr1B,KAAM,CAAE52D,MAAOwsF,EAAUxsF,MAAOC,IAAKwsF,EAAYzsF,QAClDusF,IAEHC,EAAUvsF,IAAMwsF,EAAYxsF,MAC5BqsF,GAAWz1F,KAAK60F,YAAY,CACxBlrF,MAAOmrF,EAAMnrF,MACbyrF,UAAWN,EAAMM,UACjBr1B,KAAM,CAAE52D,MAAOysF,EAAYxsF,IAAKA,IAAKusF,EAAUvsF,MAChDssF,IAEHD,GACAb,EAAchxF,KAAK+zC,MAAMi9C,EAAehxB,YAAc,CAAC,CAC/Cj6D,MAAOmrF,EAAMnrF,MACbyrF,UAAWN,EAAMM,UACjBr1B,KAAM81B,GAAeD,EAAaD,KAClCD,IACDD,IAEXb,EAAchxF,KAAKkxF,GACZ,IAEXX,EAAazhE,UAAUuiE,cAAgB,SAAUH,EAAO7wC,GACpD,IAAewwC,EAANz0F,KAA0By0F,gBACR,IAAvBxwC,EAAU6xC,SAEVC,GAHK/1F,KAA2Dw0F,YAG1CvwC,EAAU+xC,MAAO/xC,EAAUkxC,YACjDY,GAAStB,EAAgBxwC,EAAU+xC,MAAO,CAAClB,KAI3CiB,GAAStB,EAAexwC,EAAU+xC,OAAQ/xC,EAAU6xC,QAAShB,GAEjE90F,KAAK00F,UAAUuB,GAAcnB,IAAU7wC,EAAUoxC,UAErDlB,EAAazhE,UAAUqiE,cAAgB,SAAUmB,GAQ7C,IAPA,IAAIvrF,EAAK3K,KAAMw0F,EAAc7pF,EAAG6pF,YAAaC,EAAiB9pF,EAAG8pF,eAAgBL,EAAczpF,EAAGypF,YAAaM,EAAY/pF,EAAG+pF,UAC1HyB,EAAW3B,EAAYrwF,OACvBiyF,EAAiB,EACjBC,GAAiB,EACjBC,GAAmB,EACnBhB,EAAgB,KAChBD,EAAW,EACNkB,EAAgB,EAAGA,EAAgBJ,EAAUI,GAAiB,EAAG,CACtE,IAAIC,EAAgBhC,EAAY+B,GAGhC,IAAKnC,GAAeoC,GAAiBJ,EAAiBF,EAASd,UAC3D,MAMJ,IAJA,IAAIqB,EAAkBhC,EAAe8B,GACjCG,OAAgB,EAChBC,EAAYC,GAAaH,EAAiBP,EAASn2B,KAAK52D,MAAO0tF,IAC/DC,EAAeH,EAAU,GAAKA,EAAU,IAE3CD,EAAgBD,EAAgBK,KAC7BJ,EAAc32B,KAAK52D,MAAQ+sF,EAASn2B,KAAK32D,KAC3C,CACE,IAAI2tF,EAAsBP,EAAgBE,EAActB,UAEpD2B,EAAsBX,IACtBA,EAAiBW,EACjBzB,EAAgBoB,EAChBL,EAAgBE,EAChBD,EAAkBQ,GAGlBC,IAAwBX,IAExBf,EAAW92E,KAAKukC,IAAIuyC,EAAUX,EAAUuB,GAAcS,IAAkB,IAE5EI,GAAgB,GAIxB,IAAIE,EAAY,EAChB,GAAI1B,EAEA,IADA0B,EAAYX,EAAgB,EACrBW,EAAYb,GAAY3B,EAAYwC,GAAaZ,GACpDY,GAAa,EAIrB,IAAIC,GAAe,EAInB,OAHID,EAAYb,GAAY3B,EAAYwC,KAAeZ,IACnDa,EAAcL,GAAanC,EAAeuC,GAAYd,EAASn2B,KAAK32D,IAAKytF,IAAiB,IAEvF,CACHR,cAAeA,EACfC,gBAAiBA,EACjBhB,cAAeA,EACfD,SAAUA,EACVF,WAAYiB,EACZJ,MAAOgB,EACPlB,QAASmB,IAIjB9C,EAAazhE,UAAUwkE,QAAU,WAI7B,IAHA,IAAezC,EAANz0F,KAA0By0F,eAAgBD,EAA1Cx0F,KAA2Dw0F,YAChE2B,EAAW1B,EAAetwF,OAC1BgzF,EAAQ,GACHnB,EAAQ,EAAGA,EAAQG,EAAUH,GAAS,EAG3C,IAFA,IACIb,EAAaX,EAAYwB,GACpBtmF,EAAK,EAAG0nF,EAFH3C,EAAeuB,GAEStmF,EAAK0nF,EAAUjzF,OAAQuL,IAAM,CAC/D,IAAIolF,EAAQsC,EAAU1nF,GACtBynF,EAAMvzF,KAAKoyC,YAASA,YAAS,GAAI8+C,GAAQ,CAAEK,WAAYA,KAG/D,OAAOgC,GAEJhD,EA/JuB,GAiKlC,SAAS0C,GAAgB/B,GACrB,OAAOA,EAAM/0B,KAAK32D,IAEtB,SAAS6sF,GAAcnB,GACnB,OAAOA,EAAMnrF,MAAQ,IAAMmrF,EAAM/0B,KAAK52D,MAG1C,SAASkuF,GAAyB3iE,GAE9B,IADA,IAyBemqC,EAAOC,EAzBlBw4B,EAAS,GACJ5nF,EAAK,EAAG6nF,EAAY7iE,EAAShlB,EAAK6nF,EAAUpzF,OAAQuL,IAAM,CAO/D,IANA,IAAIolF,EAAQyC,EAAU7nF,GAClB8nF,EAAiB,GACjBC,EAAc,CACd13B,KAAM+0B,EAAM/0B,KACZrrC,QAAS,CAACogE,IAELnqF,EAAK,EAAG+sF,EAAWJ,EAAQ3sF,EAAK+sF,EAASvzF,OAAQwG,IAAM,CAC5D,IAAI0S,EAAQq6E,EAAS/sF,GACjBkrF,GAAex4E,EAAM0iD,KAAM03B,EAAY13B,MACvC03B,EAAc,CACV/iE,QAASrX,EAAMqX,QAAQ1b,OAAOy+E,EAAY/iE,SAC1CqrC,MAYDlB,EAZiBxhD,EAAM0iD,KAYhBjB,EAZsB24B,EAAY13B,KAajD,CACH52D,MAAOoV,KAAKG,IAAImgD,EAAM11D,MAAO21D,EAAM31D,OACnCC,IAAKmV,KAAKukC,IAAI+b,EAAMz1D,IAAK01D,EAAM11D,QAXvBouF,EAAe5zF,KAAKyZ,GAG5Bm6E,EAAe5zF,KAAK6zF,GACpBH,EAASE,EAEb,OAAOF,EAQX,SAASzB,GAAeh3B,EAAOC,GAC3B,IAAI31D,EAAQoV,KAAKukC,IAAI+b,EAAM11D,MAAO21D,EAAM31D,OACpCC,EAAMmV,KAAKG,IAAImgD,EAAMz1D,IAAK01D,EAAM11D,KACpC,OAAID,EAAQC,EACD,CAAED,MAAOA,EAAOC,IAAKA,GAEzB,KAIX,SAAS2sF,GAASpmD,EAAKhmC,EAAO2H,GAC1Bq+B,EAAIpH,OAAO5+B,EAAO,EAAG2H,GAEzB,SAASslF,GAAa76E,EAAG47E,EAAWC,GAChC,IAAI35E,EAAa,EACb45E,EAAW97E,EAAE5X,OACjB,IAAK0zF,GAAYF,EAAYC,EAAW77E,EAAEkC,IACtC,MAAO,CAAC,EAAG,GAEf,GAAI05E,EAAYC,EAAW77E,EAAE87E,EAAW,IACpC,MAAO,CAACA,EAAU,GAEtB,KAAO55E,EAAa45E,GAAU,CAC1B,IAAIC,EAAcv5E,KAAKs7B,MAAM57B,GAAc45E,EAAW55E,GAAc,GAChE85E,EAAYH,EAAW77E,EAAE+7E,IAC7B,GAAIH,EAAYI,EACZF,EAAWC,MAEV,MAAIH,EAAYI,GAIjB,MAAO,CAACD,EAAa,GAHrB75E,EAAa65E,EAAc,GAMnC,MAAO,CAAC75E,EAAY,GAGxB,IAAI+5E,GAA6B,WAC7B,SAASA,EAAYxyB,GACjBxlE,KAAKif,UAAYumD,EAASvmD,UAC1Bjf,KAAKi4F,kBAAoBzyB,EAASyyB,mBAAqB,KAI3D,OAFAD,EAAYtlE,UAAUxR,QAAU,aAEzB82E,EAPsB,GASjC,SAASE,GAAyBj5E,EAAWu/B,GACzC,MAAO,CACHv/B,UAAWA,EACXwzB,GAAI+L,EAAM/L,GACV0lD,eAAwC,MAAxB35C,EAAM25C,gBAAyB35C,EAAM25C,eACrDF,kBAAmBz5C,EAAMy5C,mBAAqB,MAGtD,SAASG,GAA2B5yB,GAChC,IAAI76D,EACJ,OAAOA,EAAK,IACL66D,EAASvmD,UAAUq9D,KAAO9W,EAC7B76D,EAGR,IAAI0tF,GAA2B,GAe3BC,GAAiC,WACjC,SAASA,EAAgB7lD,EAAI6B,GACzBt0C,KAAKq+D,QAAU,IAAImX,GAavB,OAXA8iB,EAAgB5lE,UAAUxR,QAAU,aAEpCo3E,EAAgB5lE,UAAU6lE,mBAAqB,SAAUC,KAGzDF,EAAgB5lE,UAAU+lE,qBAAuB,SAAUD,KAG3DF,EAAgB5lE,UAAUgmE,qBAAuB,SAAUF,KAGpDF,EAf0B,GAoBjClgE,GAAS,GAMTugE,GAAqB,CACrBjrB,UAAWnvB,GACXf,SAAUe,GACVj5C,OAAQoiD,QACR/T,SAAUtE,QAEd,SAASupD,GAAc7kC,GACnB,IAAIppD,EAAKgpD,GAAYI,EAAK4kC,IAAqB9kC,EAAUlpD,EAAGkpD,QAC5D,MAAO,CACH6Z,UAAW7Z,EAAQ6Z,WAAa,KAChClwB,SAAUqW,EAAQrW,UAAY,KAC9Bl4C,OAA0B,MAAlBuuD,EAAQvuD,QAAiBuuD,EAAQvuD,OACzCquC,SAAUkgB,EAAQlgB,SAClBklD,cANyEluF,EAAGmpD,OAUpF,IAAIglC,GAAgC,SAAUtgB,GAE1C,SAASsgB,IACL,OAAkB,OAAXtgB,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAqC/D,OAvCAy4E,YAAUqgB,EAAgBtgB,GAI1BsgB,EAAepmE,UAAUwgB,OAAS,WAC9B,IAAIwO,EAAQ1hD,KACR8H,EAAW9H,KAAK+yB,MAAMgmE,aAAatvF,IAAI,SAAUuvF,GAAe,OAAOt3C,EAAMu3C,kBAAkBD,KACnG,OAAOnhF,EAAc8/B,WAAM,EAAQisB,YAAc,CAAC,MAAO,CAAE/7C,UAAW,qBAAuB/f,KAEjGgxF,EAAepmE,UAAUumE,kBAAoB,SAAUD,GAKnD,IAJA,IAAIjmE,EAAQ/yB,KAAK+yB,MACbi/C,EAAQhyE,KAAKwR,QAAQwgE,MACrBlqE,EAAW,GACXoxF,GAAgB,EACXxpF,EAAK,EAAGypF,EAAgBH,EAAatpF,EAAKypF,EAAch1F,OAAQuL,IAAM,CAC3E,IAAI0pF,EAASD,EAAczpF,GACvB4pE,EAAa8f,EAAO9f,WAAY+P,EAAc+P,EAAO/P,YAAa52B,EAAa2mC,EAAO3mC,WAAY62B,EAAa8P,EAAO9P,WAAY9F,EAAa4V,EAAO5V,WAC1J,GAAmB,UAAflK,EACA4f,GAAgB,EAChBpxF,EAASlE,KAAKiU,EAAc,KAAM,CAAEgQ,UAAW,mBAAoB7B,GAAI+M,EAAMsmE,SAAWtmE,EAAM6jC,YAE7F,CACD,IAAI0iC,EAAYhgB,IAAevmD,EAAMwmE,aACjCxsE,GAAegG,EAAMymE,gBAAiC,UAAflgB,IACrCvmD,EAAM0mE,eAAgC,SAAfngB,IACvBvmD,EAAM2mE,eAAgC,SAAfpgB,EACzBqgB,EAAgB,CAAC,MAAQrgB,EAAa,UAAWtH,EAAMC,SAAS,WAChEqnB,GACAK,EAAc/1F,KAAKouE,EAAMC,SAAS,iBAEtCnqE,EAASlE,KAAKiU,EAAc,SAAU,CAAEnX,KAAM,SAAUk2D,MAA6B,mBAAf4sB,EAA4BA,EAAWzwD,EAAM62D,SAAWpG,EAAYx2D,SAAUD,EAAY,eAAgBusE,EAAWzxE,UAAW8xE,EAAc3pD,KAAK,KAAMiG,QAASozC,GAAe52B,IAAe62B,EAAazxE,EAAc,OAAQ,CAAEgQ,UAAWyhE,IAAgB,OAG9U,GAAIxhF,EAAS3D,OAAS,EAAG,CACrB,IAAIy1F,EAAkBV,GAAiBlnB,EAAMC,SAAS,gBAAmB,GACzE,OAAOp6D,EAAc8/B,WAAM,EAAQisB,YAAc,CAAC,MAAO,CAAE/7C,UAAW+xE,IAAmB9xF,IAE7F,OAAOA,EAAS,IAEbgxF,EAxCyB,CAyClC5c,IAEE2d,GAAyB,SAAUrhB,GAEnC,SAASqhB,IACL,OAAkB,OAAXrhB,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAqC/D,OAvCAy4E,YAAUohB,EAASrhB,GAInBqhB,EAAQnnE,UAAUwgB,OAAS,WACvB,IAEI4mD,EACAC,EAHApvF,EAAK3K,KAAK+yB,MACVinE,GAAW,EAGXzR,EAJyB59E,EAAGsvF,MAIL1R,eACvB2R,EAAgB3R,EAAen3B,OAoBnC,OAnBIm3B,EAAet8E,MACf+tF,GAAW,EACXF,EAAevR,EAAet8E,MAG9B6tF,EAAevR,EAAep/E,MAE9Bo/E,EAAer8E,OACf8tF,GAAW,EACXD,EAAaxR,EAAer8E,OAG5B6tF,EAAaxR,EAAen/E,IAOxByO,EAAc,MAAO,CAAEgQ,UALd,CApBuCld,EAAGwvF,gBAqBrC,GAClB,aACAH,EAAW,iBAAmB,IAEmBhqD,KAAK,MACtDhwC,KAAKo6F,cAAc,QAASN,GAAgB,IAC5C95F,KAAKo6F,cAAc,SAAUF,GAAiB,IAC9Cl6F,KAAKo6F,cAAc,MAAOL,GAAc,MAEhDF,EAAQnnE,UAAU0nE,cAAgB,SAAUz9E,EAAKo8E,GAC7C,IAAIhmE,EAAQ/yB,KAAK+yB,MACjB,OAAQlb,EAAcihF,GAAgB,CAAEn8E,IAAKA,EAAKo8E,aAAcA,EAAcniC,MAAO7jC,EAAM6jC,MAAOgzB,QAAS72D,EAAM62D,QAAS2P,aAAcxmE,EAAMwmE,aAAcC,eAAgBzmE,EAAMymE,eAAgBC,cAAe1mE,EAAM0mE,cAAeC,cAAe3mE,EAAM2mE,cAAeL,QAAStmE,EAAMsmE,WAEtRQ,EAxCkB,CAyC3B3d,IAGEme,GAA+B,SAAU7hB,GAEzC,SAAS6hB,IACL,IAAI34C,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAYhE,OAXA0hD,EAAMr5C,MAAQ,CACViyF,eAAgB,MAEpB54C,EAAM64C,SAAW,SAAU9nD,GACvBiP,EAAMjP,GAAKA,EACX0pC,GAAOz6B,EAAM3uB,MAAM6sD,MAAOntC,GAC1BiP,EAAM84C,wBAEV94C,EAAM+4C,aAAe,WACjB/4C,EAAM84C,wBAEH94C,EA2CX,OAzDA+2B,YAAU4hB,EAAe7hB,GAgBzB6hB,EAAc3nE,UAAUwgB,OAAS,WAC7B,IAAengB,EAAN/yB,KAAiB+yB,MAAO1qB,EAAxBrI,KAAmCqI,MACxC2gD,EAAcj2B,EAAMi2B,YAOpBx+C,EAAS,GACTuqE,EAAgB,GAgBpB,OAfI/rB,EAC6B,OAAzB3gD,EAAMiyF,eACN9vF,EAASnC,EAAMiyF,eAAiBtxC,EAOhC+rB,EAAiB,EAAI/rB,EAAe,IAAM,IAI9Cx+C,EAASuoB,EAAMvoB,QAAU,GAErBqN,EAAc,MAAO,CAAE,kBAAmBkb,EAAM2nE,YAAaz4E,IAAKjiB,KAAKu6F,SAAU1yE,UAvBxE,CACb,kBACCmhC,GAAej2B,EAAM4nE,QAAU5nE,EAAMvoB,OAChC,yBACA,2BAmBqGwlC,KAAK,KAAMzkC,MAAO,CAAEf,OAAQA,EAAQuqE,cAAeA,IAAmBhiD,EAAMjrB,WAE/LuyF,EAAc3nE,UAAUguD,kBAAoB,WACxC1gF,KAAKwR,QAAQypE,iBAAiBj7E,KAAKy6F,eAEvCJ,EAAc3nE,UAAUmuD,qBAAuB,WAC3C7gF,KAAKwR,QAAQ0pE,oBAAoBl7E,KAAKy6F,eAE1CJ,EAAc3nE,UAAU8nE,qBAAuB,WACvCx6F,KAAKyyC,IACLzyC,KAAK+yB,MAAMi2B,aAEXhpD,KAAK87E,SAAS,CAAEwe,eAAgBt6F,KAAKyyC,GAAGqgC,eAGzCunB,EA1DwB,CA2DjCne,IAKE0e,GAA+B,SAAUpiB,GAEzC,SAASoiB,EAAcp1B,GACnB,IAAI9jB,EAAQ82B,EAAOtjD,KAAKl1B,KAAMwlE,IAAaxlE,KAwB3C,OAvBA0hD,EAAMm5C,eAAiB,SAAU5lD,EAAI6lD,GACjC,IAAI77E,EAAYyiC,EAAMziC,UAClBzN,EAAUyN,EAAUzN,QACpBiqD,EAAME,GAASm/B,GACnB,GAAIr/B,GACAx8C,EAAU49D,iBAAiB5nC,EAAGzoB,QAAS,CAGvC,IAAIuuE,EAAkB1mD,EAAeY,EAAGzoB,OAAQ,wBAC5C2nB,EAAM4mD,EAAkBA,EAAgB3vF,cAAc,WAAWgzD,KAAO,GAC5E5sD,EAAQ6sD,QAAQE,QAAQ,aAAc,CAClC9rB,GAAIqoD,EACJxyE,MAAO,IAAIk2C,GAASv/C,EAAUzN,QAASiqD,EAAIc,WAAWtpD,IAAKwoD,EAAIc,WAAWzoC,UAC1E2qC,QAASxpB,EACThjC,KAAMT,EAAQktD,UAEdvqB,IAAQc,EAAG+lD,mBACX7vE,OAAOmP,SAAS8jC,KAAOjqB,KAInCuN,EAAMxgC,QAAUo0B,EAAiBkwB,EAAS/yB,GAAI,QAAS,YACvDiP,EAAMm5C,gBACCn5C,EAEX,OA5BA+2B,YAAUmiB,EAAepiB,GA4BlBoiB,EA7BwB,CA8BjC5C,IAMEiD,GAA+B,SAAUziB,GAEzC,SAASyiB,EAAcz1B,GACnB,IA7kP8C01B,EAAcC,EAC5DC,EA4kPI15C,EAAQ82B,EAAOtjD,KAAKl1B,KAAMwlE,IAAaxlE,KAqB3C,OAnBA0hD,EAAM25C,oBAAsB,SAAU5oD,GAC9BA,IAAOiP,EAAM45C,cACb55C,EAAM65C,eAAe,KAAM75C,EAAM45C,eAGzC55C,EAAM85C,eAAiB,SAAUvmD,EAAI6lD,GAC7Bn/B,GAASm/B,KACTp5C,EAAM45C,aAAeR,EACrBp5C,EAAM+5C,aAAa,kBAAmBxmD,EAAI6lD,KAGlDp5C,EAAM65C,eAAiB,SAAUtmD,EAAI6lD,GAC7Bp5C,EAAM45C,eACN55C,EAAM45C,aAAe,KACrB55C,EAAM+5C,aAAa,kBAAmBxmD,EAAI6lD,KAGlDp5C,EAAMg6C,sBAhmPwCR,EAimP9Cx5C,EAAM85C,eAjmPsDL,EAimPtCz5C,EAAM65C,eA/lPzBjmD,EA8lPkDkwB,EAAS/yB,GA9lP/B,YA8lPmC,YA9lPZ,SAAUkpD,EAAalmD,GAC7E,GAAIA,IAAiB2lD,EAAqB,CACtCA,EAAsB3lD,EACtBylD,EAAaS,EAAalmD,GAC1B,IAAImmD,EAAqB,SAAUC,GAC/BT,EAAsB,KACtBD,EAAaU,EAAcpmD,GAC3BA,EAAa9pB,oBAAoB,aAAciwE,IAGnDnmD,EAAanqB,iBAAiB,aAAcswE,OAslPzCl6C,EAkBX,OAzCA+2B,YAAUwiB,EAAeziB,GAyBzByiB,EAAcvoE,UAAUxR,QAAU,WAC9BlhB,KAAK07F,wBAETT,EAAcvoE,UAAU+oE,aAAe,SAAUK,EAAc7mD,EAAI6lD,GAC/D,IAAI77E,EAAYjf,KAAKif,UACjBzN,EAAUyN,EAAUzN,QACpBiqD,EAAME,GAASm/B,GACd7lD,IAAMh2B,EAAU49D,iBAAiB5nC,EAAGzoB,SACrChb,EAAQ6sD,QAAQE,QAAQu9B,EAAc,CAClCrpD,GAAIqoD,EACJxyE,MAAO,IAAIk2C,GAAShtD,EAASiqD,EAAIc,WAAWtpD,IAAKwoD,EAAIc,WAAWzoC,UAChE2qC,QAASxpB,EACThjC,KAAMT,EAAQktD,WAInBu8B,EA1CwB,CA2CjCjD,IAEE+D,GAAiC,SAAUvjB,GAE3C,SAASujB,IACL,IAAIr6C,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAiDhE,OAhDA0hD,EAAMi5B,iBAAmB15B,GAAQ05B,IACjCj5B,EAAMs6C,0BAA4B/6C,GAAQ+6C,IAC1Ct6C,EAAMu6C,kBAAoBh7C,GAAQg7C,IAClCv6C,EAAMw6C,UAAY/oD,IAClBuO,EAAMy6C,UAAYhpD,IAClBuO,EAAM06C,kBAAoB,GAE1B16C,EAAMr5C,MAAQ,CACVg0F,YAAahnD,KAIjBqM,EAAMq5B,6BAA+B,SAAU97D,EAAWq9E,GACtD,IAAI92B,EAAW0yB,GAAyBj5E,EAAWq9E,GAM/CC,EALuB,CACvB3B,GACAK,IAE0CjiF,OAAO0oC,EAAM3uB,MAAMsqB,YAAYsgC,uBACvCl0E,IAAI,SAAU+yF,GAAuB,OAAO,IAAIA,EAAoBh3B,KAC1G9jB,EAAM06C,kBAAkBn9E,EAAUq9D,KAAOigB,EACzClE,GAAyBp5E,EAAUq9D,KAAO9W,GAE9C9jB,EAAMs5B,+BAAiC,SAAU/7D,GAC7C,IAAIw9E,EAAY/6C,EAAM06C,kBAAkBn9E,EAAUq9D,KAClD,GAAImgB,EAAW,CACX,IAAK,IAAI/sF,EAAK,EAAGgtF,EAAcD,EAAW/sF,EAAKgtF,EAAYv4F,OAAQuL,IAChDgtF,EAAYhtF,GAClBwR,iBAENwgC,EAAM06C,kBAAkBn9E,EAAUq9D,YAEtC+b,GAAyBp5E,EAAUq9D,MAI9C56B,EAAMi7C,aAAe,IAAI7P,GAAc,WACnCprC,EAAM3uB,MAAMsrC,QAAQE,QAAQ,WAAW,GACvC7c,EAAM3uB,MAAMsrC,QAAQE,QAAQ,eAAgB,CAAEtsD,KAAMyvC,EAAM3uB,MAAM2rC,YAEpEhd,EAAMwJ,mBAAqB,SAAUjW,GACjC,IAAIjtB,EAAU05B,EAAM3uB,MAAM/K,QACtBA,EAAQkjC,oBACRjW,EAAGzoB,SAAWrB,QAEdu2B,EAAMi7C,aAAaviB,QAAQpyD,EAAQmjC,oBAGpCzJ,EA4FX,OA/IA+2B,YAAUsjB,EAAiBvjB,GAwD3BujB,EAAgBrpE,UAAUwgB,OAAS,WAC/B,IAMI0pD,EANA7pE,EAAQ/yB,KAAK+yB,MACbsxC,EAAgBtxC,EAAMsxC,cAAer8C,EAAU+K,EAAM/K,QACrD60E,EAAe78F,KAAKi8F,kBAAkBlpE,EAAM6nD,SAAU7nD,EAAMsuC,YAAatuC,EAAM+nD,qBAAsB/nD,EAAM+xC,YAAarC,GAAO1vC,EAAM/K,QAAQ+jC,IAAKh5B,EAAMqqB,SAC5JrqB,EAAMquC,WACF07B,GAAY,EACZ3wC,EAAa,GAEbp5B,EAAMgqE,cAAgBhqE,EAAMiqE,SAC5B7wC,EAAa,GAEU,MAAlBnkC,EAAQxd,OACbsyF,GAAY,EAEkB,MAAzB90E,EAAQujC,cACbY,EAAankC,EAAQujC,cAGrBqxC,EAAkBr+E,KAAKukC,IAAI96B,EAAQghC,YAAa,IAEpD,IAAIi0C,EAAcj9F,KAAK26E,iBAAiB5nD,EAAM6nD,SAAU7nD,EAAM2rC,QAAS3rC,EAAM/K,QAAS+K,EAAM+nD,qBAAsB/nD,EAAMqqB,QAASrqB,EAAMi/C,MAAOj/C,EAAMsqB,YAAatqB,EAAM2F,SAAU3F,EAAMouC,eAAgBpuC,EAAMsrC,QAAStrC,EAAM+sC,YAAa9/D,KAAK+6E,6BAA8B/6E,KAAKg7E,gCAC7QqhB,EAAeh4B,EAAcE,QAAUF,EAAcE,OAAOikB,SAC1DxoF,KAAKqI,MAAMg0F,YACX,GACN,OAAQxkF,EAAc6iE,GAAgBvnD,SAAU,CAAE5xB,MAAO07F,GACrD54B,EAAcE,QAAW1sD,EAAcgiF,GAAS7jD,YAAS,CAAE/zB,IAAKjiB,KAAKk8F,UAAW/B,eAAgB,oBAAqBF,MAAO51B,EAAcE,OAAQ80B,QAASgD,GAAeQ,IAC1KhlF,EAAcwiF,GAAe,CAAEM,OAAQmC,EAAWtyF,OAAQ2hD,EAAYnD,YAAa4zC,EAAiBlC,YAAa2B,GAC7Gr8F,KAAKk9F,WAAWnqE,GAChB/yB,KAAKm9F,sBACT94B,EAAcI,QAAW5sD,EAAcgiF,GAAS7jD,YAAS,CAAE/zB,IAAKjiB,KAAKm8F,UAAWhC,eAAgB,oBAAqBF,MAAO51B,EAAcI,OAAQ40B,QAAS,IAAMwD,MAEzKd,EAAgBrpE,UAAUguD,kBAAoB,WAC1C,IAAI3tD,EAAQ/yB,KAAK+yB,MACjB/yB,KAAK49E,qBAAuB7qD,EAAMsqB,YAAYugC,qBACzCn0E,IAAI,SAAU2zF,GAA4B,OAAO,IAAIA,EAAyBrqE,KACnF5H,OAAOG,iBAAiB,SAAUtrB,KAAKkrD,oBACvC,IAAImzB,EAAkBtrD,EAAMsqB,YAAYghC,gBACxC,IAAK,IAAIvpC,KAAYupC,EACjBA,EAAgBvpC,GAAU/hB,EAAM+hB,GAAW/hB,IAGnDgpE,EAAgBrpE,UAAUkuD,mBAAqB,SAAUqT,GACrD,IAAIlhE,EAAQ/yB,KAAK+yB,MACbsrD,EAAkBtrD,EAAMsqB,YAAYghC,gBACxC,IAAK,IAAIvpC,KAAYupC,EACbtrD,EAAM+hB,KAAcm/C,EAAUn/C,IAC9BupC,EAAgBvpC,GAAU/hB,EAAM+hB,GAAW/hB,IAIvDgpE,EAAgBrpE,UAAUmuD,qBAAuB,WAC7C11D,OAAOQ,oBAAoB,SAAU3rB,KAAKkrD,oBAC1ClrD,KAAK28F,aAAajsF,QAClB,IAAK,IAAIhB,EAAK,EAAG/E,EAAK3K,KAAK49E,qBAAsBluE,EAAK/E,EAAGxG,OAAQuL,IAC3C/E,EAAG+E,GACTwR,UAEhBlhB,KAAK+yB,MAAMsrC,QAAQE,QAAQ,aAE/Bw9B,EAAgBrpE,UAAUyqE,mBAAqB,WAC3C,IAAIpqE,EAAQ/yB,KAAK+yB,MACbjrB,EAAWirB,EAAMsqB,YAAYogC,qBAAqBh0E,IAAI,SAAU0zF,GAAsB,OAAOA,EAAmBpqE,KACpH,OAAOlb,EAAc8/B,WAAM,EAAQisB,YAAc,CAACxwB,EAAU,IAAKtrC,KAErEi0F,EAAgBrpE,UAAUwqE,WAAa,SAAUnqE,GAgB7C,IAfA,IACI6nD,EAAW7nD,EAAM6nD,SACjBoH,EAAY,CACZ3gB,YAAatuC,EAAMsuC,YACnBxV,cAAe94B,EAAM84B,cACrB3O,WAAYnqB,EAAM89D,qBAClBv2B,aAAcvnC,EAAMunC,aACpByL,cAAehzC,EAAMgzC,cACrB0K,eAAgB19C,EAAM09C,eACtBP,UAAWn9C,EAAMm9C,UACjBE,YAAar9C,EAAMq9C,YACnB2sB,aAAchqE,EAAMgqE,aACpBC,SAAUjqE,EAAMiqE,UAGXttF,EAAK,EAAG+sD,EADEz8D,KAAKg8F,0BAdNjpE,EAAMsqB,YAcsCigC,uBACd5tE,EAAK+sD,EAAet4D,OAAQuL,IAAM,CAC9E,IAAIitD,EAAcF,EAAe/sD,GACjCsmC,YAASgsC,EAAWrlB,EAAYh7B,UAAUqgD,EAAWjvD,IAGzD,OAAQlb,EADY+iE,EAAS37D,UACQ+2B,YAAS,GAAIgsC,KAE/C+Z,EAhJ0B,CAiJnC3gB,IACF,SAAS6gB,GAAkBrhB,EAAUvZ,EAAayZ,EAAsBhW,EAAa/Y,EAAK6K,GAEtF,IAAIymC,EAAYviB,EAAqBoJ,MAAMn4B,OAAKtnD,GAAW,GACvD64F,EAAWxiB,EAAqB+I,UAAUxiB,EAAayD,GAAa,GACpEy4B,EAAWziB,EAAqBqJ,UAAU9iB,EAAayD,GAAa,GACxE,MAAO,CACHlO,MAAOA,EACP2iC,aAAc3e,EAASl6E,KACvBkpF,QAAShP,EAASlW,WAClB80B,eAAgB6D,EAAU7Y,UAAYpqB,GAAoBiH,EAAYE,aAAcxV,GACpF0tC,cAAe6D,EAAS9Y,QACxBkV,cAAe6D,EAAS/Y,SAKhC,SAASwX,GAA0BwB,GAC/B,OAAOA,EAAW/zF,IAAI,SAAUg0F,GAAY,OAAO,IAAIA,IAG3D,IAAIC,GAA8B,SAAUllB,GAExC,SAASklB,IACL,IAAIh8C,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAUhE,OATA0hD,EAAMr5C,MAAQ,CACV20F,UAAU,GAEdt7C,EAAMi8C,kBAAoB,WACtBj8C,EAAMo6B,SAAS,CAAEkhB,UAAU,KAE/Bt7C,EAAMk8C,iBAAmB,WACrBl8C,EAAMo6B,SAAS,CAAEkhB,UAAU,KAExBt7C,EA6BX,OAzCA+2B,YAAUilB,EAAcllB,GAcxBklB,EAAahrE,UAAUwgB,OAAS,WAC5B,IAAIngB,EAAQ/yB,KAAK+yB,MACb/K,EAAU+K,EAAM/K,QAChBg1E,EAAWh9F,KAAKqI,MAAM20F,SACtBD,EAAeC,GAA+B,SAAnBh1E,EAAQxd,QAA+C,SAA1Bwd,EAAQujC,cAChE/gD,EAAWuyF,GAAkC,MAAlB/0E,EAAQxd,OAAmC,GAAjBwd,EAAQxd,OAC7D6oD,EAAa,CACb,KACA2pC,EAAW,iBAAmB,kBAC9B,gBAAkBh1E,EAAQhhB,UAC1B+rB,EAAMi/C,MAAMC,SAAS,SAKzB,OAHKzD,MACDnb,EAAWzvD,KAAK,kBAEbmvB,EAAMjrB,SAASurD,EAAY7oD,EAAQuyF,EAAcC,IAE5DU,EAAahrE,UAAUguD,kBAAoB,WACvC,IAAIriB,EAAUr+D,KAAK+yB,MAAMsrC,QACzBA,EAAQkF,GAAG,eAAgBvjE,KAAK29F,mBAChCt/B,EAAQkF,GAAG,cAAevjE,KAAK49F,mBAEnCF,EAAahrE,UAAUmuD,qBAAuB,WAC1C,IAAIxiB,EAAUr+D,KAAK+yB,MAAMsrC,QACzBA,EAAQsF,IAAI,eAAgB3jE,KAAK29F,mBACjCt/B,EAAQsF,IAAI,cAAe3jE,KAAK49F,mBAE7BF,EA1CuB,CA2ChCxhB,IAeE2hB,GAAa,qBACjB,SAASC,GAAcje,GACnB,OAAOA,EAAU2J,KAGrB,IAAIuU,GAA+B,SAAUvlB,GAEzC,SAASulB,IACL,OAAkB,OAAXvlB,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAoB/D,OAtBAy4E,YAAUslB,EAAevlB,GAIzBulB,EAAcrrE,UAAUwgB,OAAS,WAC7B,IAAIvoC,EAAK3K,KAAKwR,QAAS4rC,EAAUzyC,EAAGyyC,QAASp1B,EAAUrd,EAAGqd,QAASgqD,EAAQrnE,EAAGqnE,MAAOtT,EAAU/zD,EAAG+zD,QAC9F3rC,EAAQ/yB,KAAK+yB,MACbknB,EAAOlnB,EAAMknB,KACb+jD,EAAUnsB,GAAY53B,EAAMlnB,EAAM6qC,WAAY,KADb7qC,EAAMsuC,aAEvChO,EAAa,CAACwqC,IAAY7kF,OAAO+4D,GAAiBisB,EAAShsB,IAC3DwX,EAAOpsC,EAAQr6B,OAAOk3B,EAAMlnB,EAAMu1B,iBAElC21C,GAAiBD,EAAQjxE,YAAcgG,EAAMmrE,OAAS,EACpD9rB,GAAkBpyE,KAAKwR,QAASyoC,GAChC,GACF4lC,EAAY7pC,YAASA,YAASA,YAAS,CAAEiE,KAAMmD,EAAQ+hB,OAAOllB,GAAOhoC,KAAMysD,GAAW3rC,EAAMorE,gBAAiB,CAAE3U,KAAMA,IAASwU,GAClI,OAAQnmF,EAAc4nE,GAAY,CAAEI,UAAWA,EAAWxsB,WAAYrrC,EAAQugC,oBAAqB+K,QAAStrC,EAAQwgC,iBAAkBw3B,eAAgB8d,GAAevqC,SAAUvrC,EAAQygC,kBAAmB+K,YAAaxrC,EAAQ0gC,sBAAwB,SAAUg3B,EAAWmC,EAAkB3B,EAAYC,GAAgB,OAAQtoE,EAAc,KAAMm+B,YAAS,CAAE/zB,IAAKy9D,EAAW1yE,KAAM,eAAgB6a,UAAWwrC,EAAWr6C,OAAO6oE,GAAkB7xC,KAAK,KAAM,YAAcguD,EAAQjxE,gBAAqCtoB,EAAxBg8C,GAAgBxG,GAAmBmkD,QAASrrE,EAAMqrE,SAAWrrE,EAAMsrE,gBACniBxmF,EAAc,MAAO,CAAEgQ,UAAW,6BAA+Bm2E,EAAQjxE,YAAelV,EAAc,IAAKm+B,YAAS,CAAE/zB,IAAKi+D,EAAYr4D,UAAW,CAC1I,6BACAkL,EAAMurE,SAAW,YAAc,IACjCtuD,KAAK,MAAQiuD,GAAe9d,QAEnC4d,EAvBwB,CAwBjC7hB,IAEEqiB,GAAiBx3C,GAAgB,CAAE5E,QAAS,SAC5Cq8C,GAA8B,SAAUhmB,GAExC,SAASgmB,IACL,OAAkB,OAAXhmB,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAyB/D,OA3BAy4E,YAAU+lB,EAAchmB,GAIxBgmB,EAAa9rE,UAAUwgB,OAAS,WAC5B,IAAIngB,EAAQ/yB,KAAK+yB,MACbpoB,EAAK3K,KAAKwR,QAAS4rC,EAAUzyC,EAAGyyC,QAAS40B,EAAQrnE,EAAGqnE,MAAOtT,EAAU/zD,EAAG+zD,QAAS12C,EAAUrd,EAAGqd,QAC9FiyB,EAAOzB,EAAQ,IAAIkC,KAAK,QAAY3nB,EAAMnN,KAC1C64E,EAAW,CACX74E,IAAKmN,EAAMnN,IACXmH,YAAY,EACZixC,UAAU,EACVD,QAAQ,EACRE,SAAS,EACT6T,SAAS,GAETze,EAAa,CAACwqC,IAAY7kF,OAAO+4D,GAAiB0sB,EAAUzsB,GAAQj/C,EAAM2rE,iBAAmB,IAC7FlV,EAAOpsC,EAAQr6B,OAAOk3B,EAAMlnB,EAAMu1B,iBAClCu3B,EAAY7pC,YAASA,YAASA,YAASA,YAAS,CAChDiE,KAAMA,GAAQwkD,GAAW,CAAExsF,KAAMysD,IAAY3rC,EAAMorE,gBAAiB,CAAE3U,KAAMA,IAChF,OAAQ3xE,EAAc4nE,GAAY,CAAEI,UAAWA,EAAWxsB,WAAYrrC,EAAQugC,oBAAqB+K,QAAStrC,EAAQwgC,iBAAkBw3B,eAAgB8d,GAAevqC,SAAUvrC,EAAQygC,kBAAmB+K,YAAaxrC,EAAQ0gC,sBAAwB,SAAUg3B,EAAWmC,EAAkB3B,EAAYC,GAAgB,OAAQtoE,EAAc,KAAMm+B,YAAS,CAAE/zB,IAAKy9D,EAAW1yE,KAAM,eAAgB6a,UAAWwrC,EAAWr6C,OAAO6oE,GAAkB7xC,KAAK,KAAMouD,QAASrrE,EAAMqrE,SAAWrrE,EAAMsrE,gBAC7dxmF,EAAc,MAAO,CAAEgQ,UAAW,4BAC9BhQ,EAAc,IAAK,CAAE,aAAculC,EAAQr6B,OAAOk3B,EAAMskD,IAAiB12E,UAAW,CAC5E,6BACAkL,EAAMurE,SAAW,YAAc,IACjCtuD,KAAK,KAAM/tB,IAAKi+D,GAAcC,QAEzCqe,EA5BuB,CA6BhCtiB,IAEEyiB,GAA0B,SAAUnmB,GAEpC,SAASmmB,EAAS5rE,EAAOvhB,GACrB,IAAIkwC,EAAQ82B,EAAOtjD,KAAKl1B,KAAM+yB,EAAOvhB,IAAYxR,KAIjD,OAHA0hD,EAAMk9C,eAAiBn8B,GAAOjxD,EAAQwW,QAAQ+jC,IAAKv6C,EAAQ4rC,SAC3DsE,EAAMm9C,qBAAsB,IAAInkD,MAAO5B,UACvC4I,EAAMr5C,MAAQq5C,EAAMo9C,gBAAgBC,aAC7Br9C,EAgDX,OAtDA+2B,YAAUkmB,EAAUnmB,GAQpBmmB,EAASjsE,UAAUwgB,OAAS,WACxB,IAAiC7qC,EAAxBrI,KAAmCqI,MAC5C,OADSrI,KAAiB+yB,MACbjrB,SAASO,EAAMw1D,QAASx1D,EAAMu1D,aAE/C+gC,EAASjsE,UAAUguD,kBAAoB,WACnC1gF,KAAK4kC,cAET+5D,EAASjsE,UAAUkuD,mBAAqB,SAAUqT,GAC1CA,EAAUx1C,OAASz+C,KAAK+yB,MAAM0rB,OAC9Bz+C,KAAKkkC,eACLlkC,KAAK4kC,eAGb+5D,EAASjsE,UAAUmuD,qBAAuB,WACtC7gF,KAAKkkC,gBAETy6D,EAASjsE,UAAUosE,cAAgB,WAC/B,IAAe/rE,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1CwtF,EAAevmD,EAAMz4C,KAAK4+F,gBAAgB,IAAIlkD,MAAO5B,UAAY94C,KAAK6+F,qBACtEI,EAAmBztF,EAAQ4rC,QAAQ2tB,QAAQi0B,EAAcjsE,EAAM0rB,MAC/DygD,EAAgB1tF,EAAQ4rC,QAAQv6C,IAAIo8F,EAAkB1gD,GAAe,EAAGxrB,EAAM0rB,OAC9E0gD,EAASD,EAAcpmD,UAAYkmD,EAAalmD,UAIpD,OADAqmD,EAAS5gF,KAAKG,IAAI,MAAqBygF,GAChC,CACHJ,aAAc,CAAElhC,QAASohC,EAAkBrhC,WAAYwhC,GAAcH,IACrE1jB,UAAW,CAAE1d,QAASqhC,EAAethC,WAAYwhC,GAAcF,IAC/DC,OAAQA,IAGhBR,EAASjsE,UAAUkS,WAAa,WAC5B,IAAI8c,EAAQ1hD,KACR2K,EAAK3K,KAAK8+F,gBAAiBvjB,EAAY5wE,EAAG4wE,UAC9Cv7E,KAAKmtF,UAAYvoD,WAAW,WACxB8c,EAAMo6B,SAASP,EAAW,WACtB75B,EAAM9c,gBAHoDj6B,EAAGw0F,SAOzER,EAASjsE,UAAUwR,aAAe,WAC1BlkC,KAAKmtF,WACLjpD,aAAalkC,KAAKmtF,YAG1BwR,EAAS1iB,YAAcvB,GAChBikB,EAvDmB,CAwD5BvsE,GACF,SAASgtE,GAAcnlD,GACnB,IAAI9wC,EAAQ+vC,EAAWe,GAEvB,MAAO,CAAE9wC,MAAOA,EAAOC,IADbovC,EAAQrvC,EAAO,IAI7B,IAAIk2F,GAA2B,SAAU7mB,GAErC,SAAS6mB,IACL,IAAI39C,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAM49C,yBAA2Br+C,GAAQq+C,IAClC59C,EAUX,OAdA+2B,YAAU4mB,EAAW7mB,GAMrB6mB,EAAU3sE,UAAUwgB,OAAS,WACzB,IACIvoC,EAAK3K,KAAK+yB,MAAOwsE,EAAQ50F,EAAG40F,MAAOl+B,EAAc12D,EAAG02D,YAAam+B,EAAuB70F,EAAG60F,qBAAsBC,EAAc90F,EAAG80F,YAClIn3C,EAAkBtoD,KAAKs/F,yBAFbt/F,KAAKwR,QAEyCwW,QAAQsgC,gBAAiBk3C,EAAsBD,EAAMp7F,QACjH,OAAQ0T,EAAc8mF,GAAU,CAAElgD,KAAM,OAAS,SAAUof,EAASD,GAAc,OAAQ/lD,EAAc,KAAM,CAAE7K,KAAM,OAClHyyF,GAAeA,EAAY,OAC3BF,EAAM91F,IAAI,SAAUwwC,GAAQ,OAAQulD,EAAwB3nF,EAAckmF,GAAe,CAAEphF,IAAKs9B,EAAKsG,cAAetG,KAAMA,EAAMonB,YAAaA,EAAazD,WAAYA,EAAYsgC,OAAQqB,EAAMp7F,OAAQmkD,gBAAiBA,IAAuBzwC,EAAc2mF,GAAc,CAAE7hF,IAAKs9B,EAAKF,YAAan0B,IAAKq0B,EAAKF,YAAauO,gBAAiBA,UAE9U+2C,EAfoB,CAgB7BnjB,IACF,SAASojB,GAAyBI,EAAgBF,EAAsBG,GACpE,OAAOD,GA5JX,SAAqCF,EAAsBhnC,GAGvD,OACWzR,IADNy4C,GAAwBhnC,EAAS,GACX,CAAErW,QAAS,SAElCqW,EAAS,EACc,CAAErW,QAAS,QAASl/B,MAAO,UAAW6uB,IAAK,UAAWiQ,YAAY,GAEtE,CAAEI,QAAS,SAmJTy9C,CAA4BJ,EAAsBG,GAG/E,IAAIE,GAAgC,WAChC,SAASA,EAAezkD,EAAO0/B,GAM3B,IALA,IAAI7gC,EAAOmB,EAAMjyC,MACbC,EAAMgyC,EAAMhyC,IACZ02F,EAAU,GACVP,EAAQ,GACRQ,GAAY,EACT9lD,EAAO7wC,GACN0xE,EAAqByK,YAAYtrC,GACjC6lD,EAAQl8F,KAAKm8F,EAAW,KAIxBD,EAAQl8F,KADRm8F,GAAY,GAEZR,EAAM37F,KAAKq2C,IAEfA,EAAOzB,EAAQyB,EAAM,GAEzBj6C,KAAKu/F,MAAQA,EACbv/F,KAAK8/F,QAAUA,EACf9/F,KAAKggG,IAAMT,EAAMp7F,OAoCrB,OAlCA07F,EAAentE,UAAUutE,WAAa,SAAU7kD,GAC5C,IAAI8kD,EAAalgG,KAAKmgG,gBAAgB/kD,EAAMjyC,OACxCi3F,EAAYpgG,KAAKmgG,gBAAgB3nD,EAAQ4C,EAAMhyC,KAAM,IACrDi3F,EAAoB9hF,KAAKukC,IAAI,EAAGo9C,GAChCI,EAAmB/hF,KAAKG,IAAI1e,KAAKggG,IAAM,EAAGI,GAI9C,OAFAC,EAAoB9hF,KAAKC,KAAK6hF,MAC9BC,EAAmB/hF,KAAKs7B,MAAMymD,IAEnB,CACHJ,WAAYG,EACZD,UAAWE,EACXrlC,QAASilC,IAAeG,EACxBnlC,MAAOklC,IAAcE,GAGtB,MAOXT,EAAentE,UAAUytE,gBAAkB,SAAUlmD,GACjD,IAAI6lD,EAAU9/F,KAAK8/F,QACfS,EAAYhiF,KAAKs7B,MAAMhB,EAAS74C,KAAKu/F,MAAM,GAAItlD,IACnD,OAAIsmD,EAAY,EACLT,EAAQ,GAAK,EAEpBS,GAAaT,EAAQ37F,OACd27F,EAAQA,EAAQ37F,OAAS,GAAK,EAElC27F,EAAQS,IAEZV,EAxDyB,GA2DhCW,GAA+B,WAC/B,SAASA,EAAcC,EAAWC,GAC9B,IACIC,EACA9wC,EACA+wC,EAHArB,EAAQkB,EAAUlB,MAItB,GAAImB,EAAc,CAGd,IADA7wC,EAAW0vC,EAAM,GAAGxlD,YACf4mD,EAAa,EAAGA,EAAapB,EAAMp7F,QAChCo7F,EAAMoB,GAAY5mD,cAAgB8V,EADM8wC,GAAc,GAK9DC,EAASriF,KAAKC,KAAK+gF,EAAMp7F,OAASw8F,QAGlCC,EAAS,EACTD,EAAapB,EAAMp7F,OAEvBnE,KAAK4gG,OAASA,EACd5gG,KAAKk+F,OAASyC,EACd3gG,KAAKygG,UAAYA,EACjBzgG,KAAK6gG,MAAQ7gG,KAAK8gG,aAClB9gG,KAAK+gG,YAAc/gG,KAAKghG,mBAiD5B,OA/CAR,EAAc9tE,UAAUouE,WAAa,WAEjC,IADA,IAAIv5F,EAAO,GACFG,EAAM,EAAGA,EAAM1H,KAAK4gG,OAAQl5F,GAAO,EAAG,CAE3C,IADA,IAAIm5F,EAAQ,GACHI,EAAM,EAAGA,EAAMjhG,KAAKk+F,OAAQ+C,GAAO,EACxCJ,EAAMj9F,KAAK5D,KAAKkhG,UAAUx5F,EAAKu5F,IAEnC15F,EAAK3D,KAAKi9F,GAEd,OAAOt5F,GAEXi5F,EAAc9tE,UAAUwuE,UAAY,SAAUx5F,EAAKu5F,GAC/C,IAAIhnD,EAAOj6C,KAAKygG,UAAUlB,MAAM73F,EAAM1H,KAAKk+F,OAAS+C,GACpD,MAAO,CACHtkF,IAAKs9B,EAAKsG,cACVtG,KAAMA,IAGdumD,EAAc9tE,UAAUsuE,iBAAmB,WAEvC,IADA,IAAIzB,EAAQ,GACH0B,EAAM,EAAGA,EAAMjhG,KAAKk+F,OAAQ+C,GAAO,EACxC1B,EAAM37F,KAAK5D,KAAK6gG,MAAM,GAAGI,GAAKhnD,MAElC,OAAOslD,GAEXiB,EAAc9tE,UAAUutE,WAAa,SAAU7kD,GAC3C,IAAI8iD,EAASl+F,KAAKk+F,OACdiD,EAAYnhG,KAAKygG,UAAUR,WAAW7kD,GACtC2gB,EAAO,GACX,GAAIolC,EAGA,IAFA,IAAIjB,EAAaiB,EAAUjB,WAAYE,EAAYe,EAAUf,UACzDz2F,EAAQu2F,EACLv2F,GAASy2F,GAAW,CACvB,IAAI14F,EAAM6W,KAAKs7B,MAAMlwC,EAAQu0F,GACzBkD,EAAY7iF,KAAKG,KAAKhX,EAAM,GAAKw2F,EAAQkC,EAAY,GACzDrkC,EAAKn4D,KAAK,CACN8D,IAAKA,EACL25F,SAAU13F,EAAQu0F,EAClBoD,SAAUF,EAAY,GAAKlD,EAC3BjjC,QAASkmC,EAAUlmC,SAAWtxD,IAAUu2F,EACxChlC,MAAOimC,EAAUjmC,OAAUkmC,EAAY,IAAOhB,IAElDz2F,EAAQy3F,EAGhB,OAAOrlC,GAEJykC,EAzEwB,GA4E/Be,GAAwB,WACxB,SAASA,IACLvhG,KAAKwhG,mBAAqBvgD,GAAQjhD,KAAKyhG,qBACvCzhG,KAAK0hG,mBAAqBzgD,GAAQjhD,KAAK2hG,gBACvC3hG,KAAKq6D,gBAAkBpZ,GAAQjhD,KAAK4hG,kBACpC5hG,KAAK6hG,eAAiB5gD,GAAQjhD,KAAK8hG,mBACnC9hG,KAAK+hG,iBAAmB9gD,GAAQjhD,KAAK8hG,mBACrC9hG,KAAKgiG,oBAAqB,EAuH9B,OArHAT,EAAO7uE,UAAUuvE,WAAa,SAAUlvE,EAAOsuC,EAAa9Z,EAAkB/1C,GAE1E,IADA,IAAI0wF,EAAY,GACPxyF,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCwyF,EAAUxyF,EAAK,GAAK4J,UAAU5J,GAElC,IAAI4qD,EAAevnC,EAAMunC,aACrB6nC,EAAYniG,KAAKq6D,gBAAgB1iB,MAAM33C,KAAM4jE,YAAc,CAAC7wC,EAAMmqB,WAAYod,EAAc+G,EAAa9Z,GAAmB26C,IAChI,MAAO,CACHE,kBAAmBpiG,KAAK0hG,mBAAmB/pD,MAAM33C,KAAM4jE,YAAc,CAAC7wC,EAAMgzC,cAAezL,EAAc9oD,GAAU0wF,IACnHG,iBAAkBriG,KAAKwhG,mBAAmB7pD,MAAM33C,KAAM4jE,YAAc,CAAC7wC,EAAM84B,cAAewV,EAAa9Z,EAAkB/1C,GAAU0wF,IACnII,YAAaH,EAAU7mC,GACvBinC,YAAaJ,EAAU9mC,GACvB6U,UAAWlwE,KAAK6hG,eAAelqD,MAAM33C,KAAM4jE,YAAc,CAAC7wC,EAAMm9C,UAAW5V,EAAc+G,EAAa9Z,GAAmB26C,IACzH9xB,YAAapwE,KAAK+hG,iBAAiBpqD,MAAM33C,KAAM4jE,YAAc,CAAC7wC,EAAMq9C,YAAa9V,EAAc+G,EAAa9Z,GAAmB26C,IAC/HzxB,eAAgB19C,EAAM09C,iBAG9B8wB,EAAO7uE,UAAU8vE,aAAe,SAChCvoD,EAAMzoC,GAEF,IADA,IAAI0wF,EAAY,GACPxyF,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCwyF,EAAUxyF,EAAK,GAAK4J,UAAU5J,GAElC,OAAO1P,KAAK2hG,eAAehqD,MAAM33C,KAAM4jE,YAAc,CAAC,CAAExoB,MAAO,CAAEjyC,MAAO8wC,EAAM7wC,IAAKqvC,EAAMwB,EAAM,IAAMwD,QAAQ,GACzG,GACAjsC,GAAU0wF,KAElBX,EAAO7uE,UAAU+uE,oBAAsB,SAAU51C,EAAewV,EAAa9Z,EAAkB/1C,GAE3F,IADA,IAAI0wF,EAAY,GACPxyF,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCwyF,EAAUxyF,EAAK,GAAK4J,UAAU5J,GAElC,OAAKm8C,EAGE7rD,KAAK4hG,iBAAiBjqD,MAAM33C,KAAM4jE,YAAc,CAAC3mB,GAAgB4O,EAAe42C,GAAmBphC,EAAa3Z,QAAQH,IAAoB/1C,GAC/I,GACA6vD,EACA9Z,GAAmB26C,IAAY7mC,GALxB,IAOfkmC,EAAO7uE,UAAUkvE,iBAAmB,SAAU1kD,EAAYod,EAAc+G,EAAa9Z,GAEjF,IADA,IAAI26C,EAAY,GACPxyF,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCwyF,EAAUxyF,EAAK,GAAK4J,UAAU5J,GAElC,GAAIwtC,EAAY,CACZ,IAAIwlD,EAAWroC,GAAgBnd,EAAYod,EAAcmoC,GAAmBphC,EAAa3Z,QAAQH,IAAoBA,GACrH,MAAO,CACH8T,GAAIr7D,KAAK2iG,iBAAiBD,EAASrnC,GAAI6mC,GACvC5mC,GAAIt7D,KAAK2iG,iBAAiBD,EAASpnC,GAAI4mC,IAG/C,MAAO,CAAE7mC,GAAI,GAAIC,GAAI,KAEzBimC,EAAO7uE,UAAUovE,kBAAoB,SAAU9wB,EAAa1W,EAAc+G,EAAa9Z,GAEnF,IADA,IAAI26C,EAAY,GACPxyF,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCwyF,EAAUxyF,EAAK,GAAK4J,UAAU5J,GAElC,IAAKshE,EACD,OAAO,KAEX,IAAI0xB,EAAWroC,GAAgB2W,EAAYK,cAAe/W,EAAcmoC,GAAmBphC,EAAa3Z,QAAQH,IAAoBA,GACpI,MAAO,CACHwU,KAAM/7D,KAAK2iG,iBAAiBD,EAASpnC,GAAI4mC,GACzCU,kBAAmB5xB,EAAYG,eAAe/9C,UAC9Co+C,QAASR,EAAYQ,UAG7B+vB,EAAO7uE,UAAUivE,eAAiB,SAAUniC,EAAUlF,EAAc9oD,GAEhE,IADA,IAAI0wF,EAAY,GACPxyF,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCwyF,EAAUxyF,EAAK,GAAK4J,UAAU5J,GAElC,IAAK8vD,EACD,MAAO,GAIX,IAFA,IAAIjD,EAAagD,GAAoBC,EAAUlF,EAAc9oD,GACzDuqD,EAAO/7D,KAAKigG,WAAWtoD,MAAM33C,KAAM4jE,YAAc,CAACpE,EAASpkB,OAAQ8mD,IAC9Dv3F,EAAK,EAAGk4F,EAAS9mC,EAAMpxD,EAAKk4F,EAAO1+F,OAAQwG,IAAM,CACtD,IAAI8wD,EAAMonC,EAAOl4F,GACjB8wD,EAAIc,WAAaA,EAErB,OAAOR,GAKXwlC,EAAO7uE,UAAUiwE,iBAAmB,SAAUG,EAAaZ,GAEvD,IADA,IAAInmC,EAAO,GACFrsD,EAAK,EAAGqzF,EAAgBD,EAAapzF,EAAKqzF,EAAc5+F,OAAQuL,IAErEqsD,EAAKn4D,KAAK+zC,MAAMokB,EAAM/7D,KAAKgjG,gBADVD,EAAcrzF,GACwBwyF,IAE3D,OAAOnmC,GAKXwlC,EAAO7uE,UAAUswE,gBAAkB,SAAUzmC,EAAY2lC,GACrD,IAAIzoC,EAAY8C,EAAWnhB,MAEvBp7C,KAAKgiG,oBAAgD,cAA1BzlC,EAAWrE,GAAGnlD,UACzC0mD,EAAY,CACRtwD,MAAOswD,EAAUtwD,MACjBC,IAAKovC,EAAQihB,EAAUtwD,MAAO,KAItC,IADA,IAAI4yD,EAAO/7D,KAAKigG,WAAWtoD,MAAM33C,KAAM4jE,YAAc,CAACnK,GAAYyoC,IACzDxyF,EAAK,EAAGuzF,EAASlnC,EAAMrsD,EAAKuzF,EAAO9+F,OAAQuL,IAAM,CACtD,IAAI+rD,EAAMwnC,EAAOvzF,GACjB+rD,EAAIc,WAAaA,EACjBd,EAAIR,QAAUsB,EAAWtB,SAAWQ,EAAIR,QACxCQ,EAAIP,MAAQqB,EAAWrB,OAASO,EAAIP,MAExC,OAAOa,GAEJwlC,EA9HiB,GAqI5B,SAASkB,GAAmBphC,EAAa6hC,GACrC,IAAI9nD,EAAQimB,EAAYC,YACxB,OAAI4hC,EACO9nD,EAEJ,CACHjyC,MAAOsvC,EAAM2C,EAAMjyC,MAAOk4D,EAAY1Z,YAAY9I,cAClDz1C,IAAKqvC,EAAM2C,EAAMhyC,IAAKi4D,EAAYzZ,YAAY/I,aAAe,QAMrE,SAASskD,GAAmBnyB,EAAa3P,EAAa7vD,GAClD,IAAI4hB,EAAY49C,EAAYK,cAAcj+C,UAC1C,IAAK,IAAImoB,KAAcnoB,EACnB,IAAK6mC,GAAmBoH,EAAYjR,WAAYh9B,EAAUmoB,GAAYH,OAClE,OAAO,EAGf,OAAOgoD,GAAgB,CAAElzB,UAAWc,GAAex/D,GAEvD,SAAS6xF,GAAqBt9B,EAAe1E,EAAa7vD,GACtD,QAAKyoD,GAAmBoH,EAAYjR,WAAY2V,EAAc3qB,QAGvDgoD,GAAgB,CAAEr9B,cAAeA,GAAiBv0D,GAE7D,SAAS4xF,GAAgBxmD,EAAUprC,GAC/B,IAAI8xF,EAAgB9xF,EAAQ2vD,iBACxBpuC,EAAQijB,YAAS,CAAE6V,cAAey3C,EAAcz3C,cAAeka,cAAe,GAAI7oB,WAAYomD,EAAcpmD,WAAYod,aAAcgpC,EAAchpC,aAAcmW,eAAgB,GAAIP,UAAW,KAAME,YAAa,MAAQxzB,GAChO,OAAQprC,EAAQ6rC,YAAYkgC,cAAgBA,IAAcxqD,EAAOvhB,GAErE,SAAS+rE,GAAal1E,EAAOmJ,EAAS+xF,EAAcC,GAEhD,YADqB,IAAjBD,IAA2BA,EAAe,MAC1Cl7F,EAAM6nE,YAUd,SAAiC7nE,EAAOmJ,EAAS+xF,EAAcC,GAC3D,IAAIzE,EAAevtF,EAAQ2vD,iBACvB6P,EAAc3oE,EAAM6nE,UACpBuzB,EAAoBzyB,EAAYK,cAChCqyB,EAAcD,EAAkBnmD,KAChCqmD,EAAmBF,EAAkBrwE,UACrCwwE,EAAiB/oC,GAAgB6oC,EAAa1yB,EAAYQ,QAC1DnpE,EAAMiyD,aACN,CAAE,GAAIykC,EAAajO,kBACnB0S,IACAI,EAAiBznD,GAAQynD,EAAgBJ,IAG7C,IA91EsBtmD,EAAY2mD,EA81E9BC,GA91E8BD,EA81EuB7yB,EAAYG,eAAe/9C,UA71E7E,CACHkqB,MAFkBJ,EA81EiB70C,EAAM60C,YA51ExBI,KACjBlqB,UAAW4oB,GAAWkB,EAAW9pB,UAAW,SAAUU,GAAY,OAAQ+vE,EAAS/vE,EAASynB,gBA41E5FwoD,EAAYD,EAAgBxmD,KAC5B0mD,EAAiBF,EAAgB1wE,UACjC6wE,EAAeppC,GAAgBkpC,EAAW17F,EAAMiyD,cACpD,IAAK,IAAI4pC,KAAqBP,EAAkB,CAC5C,IAAIQ,EAAkBR,EAAiBO,GACnCE,EAAeD,EAAgB/oD,MAC/BipD,EAAgBT,EAAeO,EAAgBhpD,OAC/CmpD,EAAaZ,EAAYS,EAAgBhpD,OAE7C,IAAKopD,GAAmBF,EAAcnuC,YAAakuC,EAAcN,EAAiBz7F,EAAMwjD,cAAer6C,GACnG,OAAO,EAGX,IAAIk7C,EAAel7C,EAAQwW,QAAQ0kC,aAC/B83C,EAA2C,mBAAjB93C,EAA8BA,EAAe,KAC3E,IAAK,IAAI+3C,KAAmBT,EAAgB,CACxC,IAAIU,EAAgBV,EAAeS,GAEnC,GAAIzqC,GAAgBoqC,EAAcM,EAActpD,OAAQ,CAGpD,IAAqB,IAFF6oD,EAAaS,EAAcvpD,OAAOwa,SAEvBqb,EAAYQ,QACtC,OAAO,EAEX,IAA8B,IAA1B6yB,EAAc1uC,QACd,OAAO,EAEX,GAAI6uC,IAAqBA,EAAiB,IAAIhmC,GAAShtD,EAASuyF,EAAUW,EAAcvpD,OAAQupD,GAChG,IAAIlmC,GAAShtD,EAAS8yF,EAAYH,IAC9B,OAAO,GAMnB,IADA,IAAIQ,EAAqB5F,EAAa7hD,WAC7BxtC,EAAK,EAAG/E,EAAK05F,EAAcluC,OAAQzmD,EAAK/E,EAAGxG,OAAQuL,IAAM,CAC9D,IAIIg3D,EAJAk+B,EAAej6F,EAAG+E,GAClBm1F,EAAkB7uD,YAASA,YAAS,GAAIutD,GAAe,CAAEnoD,MAAO+oD,EAAgB/oD,MAAOqC,OAAQ6mD,EAAW7mD,SAC1GqnD,EAAUH,EAAmBrnD,KAAKgnD,EAAWnpD,OASjD,GALIurB,EADAo+B,EACW,IAAItmC,GAAShtD,EAASszF,EAHlBH,EAAmBvxE,UAAU8wE,IAMjC,IAAI1lC,GAAShtD,EAAS8yF,IAEhCM,EAAahlC,GAA4BilC,EAAiBrzF,GAAUk1D,GACrE,OAAO,GAInB,OAAO,EA5EiBq+B,CAAwB18F,EAAOmJ,EAAS+xF,EAAcC,IAG1En7F,EAAM09D,gBA6Ed,SAAmC19D,EAAOmJ,EAAS+xF,EAAcC,GAC7D,IAAIwB,EAAqB38F,EAAM60C,WAC3B+nD,EAAeD,EAAmB1nD,KAClC4nD,EAAoBF,EAAmB5xE,UACvCssC,EAAYr3D,EAAM09D,cAClBo/B,EAAiBzlC,EAAUtkB,MAC3B01C,EAAkBt/E,EAAQ2vD,iBAAiB2vB,gBAK/C,GAJI0S,IACA1S,EAAkB0S,EAAa1S,KAG9ByT,GAAmBzT,EAAgB56B,YAAaivC,EAAgBH,EAAoB38F,EAAMwjD,cAAer6C,GAC1G,OAAO,EAGX,IAAI87C,EAAgB97C,EAAQwW,QAAQslC,cAChC83C,EAA6C,mBAAlB93C,EAA+BA,EAAgB,KAC9E,IAAK,IAAI+3C,KAAsBH,EAAmB,CAC9C,IAAII,EAAmBJ,EAAkBG,GAEzC,GAAIrrC,GAAgBmrC,EAAgBG,EAAiBlqD,OAAQ,CACzD,IAAgC,IAA5B01C,EAAgBn7B,QAChB,OAAO,EAEX,GAAIyvC,IAAsBA,EAAkB,IAAI5mC,GAAShtD,EAASyzF,EAAaK,EAAiBnqD,OAAQmqD,GAAmB,MACvH,OAAO,GAKnB,IAAK,IAAI51F,EAAK,EAAG/E,EAAKmmF,EAAgB36B,OAAQzmD,EAAK/E,EAAGxG,OAAQuL,IAG1D,KAAK61F,EAFgB56F,EAAG+E,IAEJkwD,GADD5pB,YAASA,YAAS,GAAIutD,GAAe7jC,GACMluD,GAAU,MACpE,OAAO,EAGf,OAAO,EAlHqBg0F,CAA0Bn9F,EAAOmJ,EAAS+xF,EAAcC,IAsHxF,SAASe,GAAmBruC,EAAakuC,EAAcN,EAAiB2B,EAAyBj0F,GAC7F,IAAK,IAAI9B,EAAK,EAAGg2F,EAAgBxvC,EAAaxmD,EAAKg2F,EAAcvhG,OAAQuL,IAErE,IAAKi2F,GAAsBC,GADVF,EAAch2F,GAC2B00F,EAAcN,EAAiB2B,EAAyBj0F,GAAU4yF,GACxH,OAAO,EAGf,OAAO,EAEX,SAASwB,GAAmBlwC,EAAY0uC,EACxCN,EACA2B,EACAj0F,GACI,MAAmB,kBAAfkkD,EACOmwC,GAAmB5oD,GAAgBwoD,EAAyBrB,EAAc5yF,IAE3D,iBAAfkkD,EACAmwC,GAAmBhxC,GAAqBivC,EAAiB,SAAU/lD,GAAY,OAAOA,EAASiX,UAAYU,KAE5F,iBAAfA,GAA2BA,EAC3BmwC,GAAmB5oD,GAAgByY,EAAY0uC,EAAc5yF,IAEjE,GAGX,SAASq0F,GAAmB3oD,GACxB,IAAI9pB,EAAY8pB,EAAW9pB,UACvBmmC,EAAS,GACb,IAAK,IAAIhe,KAAcnoB,EACnBmmC,EAAO31D,KAAKwvB,EAAUmoB,GAAYH,OAEtC,OAAOme,EAGX,SAASosC,GAAsBG,EAAa3rC,GACxC,IAAK,IAAIzqD,EAAK,EAAGq2F,EAAgBD,EAAap2F,EAAKq2F,EAAc5hG,OAAQuL,IAErE,GAAIuqD,GADa8rC,EAAcr2F,GACIyqD,GAC/B,OAAO,EAGf,OAAO,EAGX,IAAI6rC,GAAoB,qBACpBC,GAA0B,SAAUztB,GAEpC,SAASytB,IACL,IAAIvkD,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAKhE,OAJA0hD,EAAM64C,SAAW,SAAU9nD,GACvBiP,EAAMjP,GAAKA,EACX0pC,GAAOz6B,EAAM3uB,MAAM6sD,MAAOntC,IAEvBiP,EA2EX,OAlFA+2B,YAAUwtB,EAAUztB,GASpBytB,EAASvzE,UAAUwgB,OAAS,WACxB,IAAIngB,EAAQ/yB,KAAK+yB,MACb4nE,EAAS5nE,EAAM4nE,OAAQuL,EAAmBnzE,EAAMmzE,iBAChDC,EAAaxL,GAAUuL,EACvBr+E,EAAY,CAAC,eASjB,OARI8yE,GAEI9yE,EAAUjkB,KADVsiG,EACe,8BAGA,sBAGfruF,EAAc,MAAO,CAAEoK,IAAKjiB,KAAKu6F,SAAU1yE,UAAWA,EAAUmoB,KAAK,KAAMzkC,MAAO,CAClFgqE,UAAWxiD,EAAMwiD,UACjBD,UAAWviD,EAAMuiD,UACjBrpE,KAAOk6F,KAAgBpzE,EAAMqzE,cAAgB,IAAO,GACpDl6F,MAAQi6F,KAAgBpzE,EAAMszE,eAAiB,IAAO,GACtDr6F,OAASm6F,KAAgBpzE,EAAMuzE,gBAAkB,IAAO,GACxDC,YAAcJ,KAAgBpzE,EAAMqzE,cAAgB,IAAO,GAC3DI,aAAeL,KAAgBpzE,EAAMszE,eAAiB,IAAO,GAC7DI,cAAgBN,KAAgBpzE,EAAMuzE,gBAAkB,IAAO,GAC/Dr+D,UAAWlV,EAAMkV,WAAa,KAC7BlV,EAAMjrB,WAEnBm+F,EAASvzE,UAAUg0E,gBAAkB,WACjC,GAAIV,GAAkBhjF,KAAKhjB,KAAK+yB,MAAMwiD,WAClC,OAAO,EAQX,IAHA,IAAI9iC,EAAKzyC,KAAKyyC,GACVk0D,EAAkB3mG,KAAKyyC,GAAGhoC,wBAAwBf,MAAQ1J,KAAK4mG,qBAC/D9+F,EAAW2qC,EAAG3qC,SACTD,EAAI,EAAGA,EAAIC,EAAS3D,OAAQ0D,GAAK,EAEtC,GADcC,EAASD,GACX4C,wBAAwBf,MAAQi9F,EACxC,OAAO,EAGf,OAAO,GAEXV,EAASvzE,UAAUm0E,gBAAkB,WACjC,GAAIb,GAAkBhjF,KAAKhjB,KAAK+yB,MAAMuiD,WAClC,OAAO,EAQX,IAHA,IAAI7iC,EAAKzyC,KAAKyyC,GACVq0D,EAAmB9mG,KAAKyyC,GAAGhoC,wBAAwBD,OAASxK,KAAK+mG,qBACjEj/F,EAAW2qC,EAAG3qC,SACTD,EAAI,EAAGA,EAAIC,EAAS3D,OAAQ0D,GAAK,EAEtC,GADcC,EAASD,GACX4C,wBAAwBD,OAASs8F,EACzC,OAAO,EAGf,OAAO,GAEXb,EAASvzE,UAAUq0E,mBAAqB,WACpC,OAAIf,GAAkBhjF,KAAKhjB,KAAK+yB,MAAMwiD,WAC3B,EAEJv1E,KAAKyyC,GAAGhhB,aAAezxB,KAAKyyC,GAAGogC,cAE1CozB,EAASvzE,UAAUk0E,mBAAqB,WACpC,OAAIZ,GAAkBhjF,KAAKhjB,KAAK+yB,MAAMuiD,WAC3B,EAEJt1E,KAAKyyC,GAAGqgC,YAAc9yE,KAAKyyC,GAAGsgC,aAElCkzB,EAnFmB,CAoF5B/pB,IAME8qB,GAAwB,WACxB,SAASA,EAAOC,GACZ,IAAIvlD,EAAQ1hD,KACZA,KAAKinG,eAAiBA,EACtBjnG,KAAKknG,WAAa,GAClBlnG,KAAKmnG,OAAS,GACdnnG,KAAKonG,YAAc,GACnBpnG,KAAKqnG,YAAc,SAAU/4D,EAAK3xB,GAC9B,IAAgBwqF,EAAPzlD,EAAmBylD,OAAQD,EAA3BxlD,EAA2CwlD,WAChD3mE,GAAU,EACVD,GAAQ,EACA,OAARgO,GAEA/N,EAAW5jB,KAAOuqF,EAClBA,EAAWvqF,GAAO2xB,EAClB64D,EAAOxqF,IAAQwqF,EAAOxqF,IAAQ,GAAK,EACnC2jB,GAAQ,IAGR6mE,EAAOxqF,IAAQ,EACVwqF,EAAOxqF,YACDuqF,EAAWvqF,UACX+kC,EAAM0lD,YAAYzqF,GACzB4jB,GAAU,IAGdmhB,EAAMulD,iBACF1mE,GACAmhB,EAAMulD,eAAe,KAAM53D,OAAO1yB,IAElC2jB,GACAohB,EAAMulD,eAAe34D,EAAKe,OAAO1yB,MAwBjD,OAnBAqqF,EAAOt0E,UAAUygB,UAAY,SAAUx2B,GACnC,IAAI+kC,EAAQ1hD,KACRsnG,EAActnG,KAAKonG,YAAYzqF,GAMnC,OALK2qF,IACDA,EAActnG,KAAKonG,YAAYzqF,GAAO,SAAU2xB,GAC5CoT,EAAM2lD,YAAY/4D,EAAKe,OAAO1yB,MAG/B2qF,GAKXN,EAAOt0E,UAAU60E,QAAU,SAAUtpF,EAAY45E,EAAU2P,GACvD,OAllQR,SAAyBvrD,EAAMh+B,EAAY45E,EAAU2P,QAC9B,IAAfvpF,IAAyBA,EAAa,QAC7B,IAATupF,IAAmBA,EAAO,GAC9B,IAAIlvE,EAAM,GACM,MAAZu/D,IACAA,EAAWr7E,OAAOC,KAAKw/B,GAAM93C,QAEjC,IAAK,IAAI0D,EAAIoW,EAAYpW,EAAIgwF,EAAUhwF,GAAK2/F,EAAM,CAC9C,IAAIl5D,EAAM2N,EAAKp0C,QACHpD,IAAR6pC,GACAhW,EAAI10B,KAAK0qC,GAGjB,OAAOhW,EAqkQImvE,CAAgBznG,KAAKknG,WAAYjpF,EAAY45E,EAAU2P,IAElER,EAAOt0E,UAAUg1E,OAAS,WACtB,OAAOnrD,GAAkBv8C,KAAKknG,aAE3BF,EAvDiB,GAmE5B,SAASW,GAA0B50E,EAAO60E,GACtC,OAAO70E,EAAM4nE,QAAUiN,EAAcjN,OA6BzC,SAASkN,GAAgBC,EAAOC,GAC5B,OAAOjnD,GAAcgnD,EAAOC,EAAOvrD,IAEvC,SAASwrD,GAAoBC,EAAMC,GAO/B,IANA,IAAIC,EAAW,GAMNz4F,EAAK,EAAG04F,EAASH,EAAMv4F,EAAK04F,EAAOjkG,OAAQuL,IAGhD,IAFA,IAAI24F,EAAWD,EAAO14F,GAClBqwD,EAAOsoC,EAAStoC,MAAQ,EACnBl4D,EAAI,EAAGA,EAAIk4D,EAAMl4D,GAAK,EAC3BsgG,EAASvkG,KAAKiU,EAAc,MAAO,CAAEtM,MAAO,CACpC7B,MAA0B,WAAnB2+F,EAAS3+F,MAAqB4+F,GAAoBJ,GAAgBG,EAAS3+F,OAAS,GAC3Fq+B,SAAUsgE,EAAStgE,UAAY,OAI/C,OAAOlwB,EAAc8/B,WAAM,EAAQisB,YAAc,CAAC,WAAY,IAAKukC,IAEvE,SAASG,GAAoBJ,GAGzB,OAAsB,MAAfA,EAAsB,EAAIA,EAqBrC,SAASK,GAAqBX,EAAeY,GACzC,IAAIn1C,EAAa,CACb,wBACA,yBAA2Bu0C,EAAclnG,KACzCknG,EAAc//E,WAQlB,OANI2gF,GAAmBZ,EAAcjN,QAAqC,MAA3BiN,EAAc3/D,WACzDorB,EAAWzvD,KAAK,gCAEhBgkG,EAActJ,UACdjrC,EAAWzvD,KAAK,gCAEbyvD,EAEX,SAASo1C,GAAiB7wD,GACtB,OAAQ//B,EAAc,MAAO,CAAEgQ,UAAW,4BAA6Btc,MAAO,CACtE7B,MAAOkuC,EAAIm7B,YACXhrC,SAAU6P,EAAI8wD,iBAG1B,SAASC,GAAqB3gF,GAC1B,IAAIikC,EAAoBjkC,EAAQikC,kBAIhC,OAHyB,MAArBA,GAAmD,SAAtBA,IAC7BA,EAAuC,SAAnBjkC,EAAQxd,QAA4C,SAAvBwd,EAAQmkC,YAEtDF,EAEX,SAAS28C,GAAyB5gF,GAC9B,IAAIkkC,EAAwBlkC,EAAQkkC,sBAIpC,OAH6B,MAAzBA,GAA2D,SAA1BA,IACjCA,EAA2C,SAAnBlkC,EAAQxd,QAA4C,SAAvBwd,EAAQmkC,YAE1DD,EAGX,IAAI28C,GAAkC,SAAUrwB,GAE5C,SAASqwB,IACL,IAAInnD,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAgBhE,OAfA0hD,EAAMonD,YAAc7nD,GAAQ,SAAUllC,GAAK,OAAOA,GAAM8rF,IAExDnmD,EAAMsmD,oBAAsB/mD,GAAQ+mD,IACpCtmD,EAAMqnD,aAAe,IAAI/B,GACzBtlD,EAAMsnD,eAAiB,IAAIhC,GAAOtlD,EAAMunD,kBAAkB1+D,KAAKmX,IAC/DA,EAAMr5C,MAAQ,CACV6/F,YAAa,KACbgB,kBAAkB,EAClBC,qBAAsB,GACtBC,sBAAuB,IAG3B1nD,EAAM2nD,aAAe,WACjB3nD,EAAMk6B,aAAa5lC,YAAS,CAAEkyD,YAAaxmD,EAAM4nD,sBAAwB5nD,EAAM6nD,yBAE5E7nD,EAiIX,OAnJA+2B,YAAUowB,EAAkBrwB,GAoB5BqwB,EAAiBn2E,UAAUwgB,OAAS,WAChC,IAAIvoC,EAAK3K,KAAM+yB,EAAQpoB,EAAGooB,MAAO1qB,EAAQsC,EAAGtC,MAAOmJ,EAAU7G,EAAG6G,QAC5Dg4F,EAAiBz2E,EAAM02E,UAAY,GACnCxB,EAAOjoG,KAAK8oG,YAAY/1E,EAAMk1E,MAC9ByB,EAAoB1pG,KAAKgoG,oBAAoBC,EAAM5/F,EAAM6/F,aACzD70C,EAvEZ,SAAiCsnC,EAAQnpF,GACrC,IAAI6hD,EAAa,CACb,gBACA7hD,EAAQwgE,MAAMC,SAAS,UAK3B,OAHI0oB,GACAtnC,EAAWzvD,KAAK,wBAEbyvD,EA+Dcs2C,CAAwB52E,EAAM4nE,OAAQnpF,GACnDuhB,EAAM62E,kBACNv2C,EAAWzvD,KAAK,6BASpB,IANA,IAEIimG,EAFAC,EAAYN,EAAerlG,OAC3B4lG,EAAU,EAEVC,EAAmB,GACnBC,EAAmB,GACnBC,EAAmB,GAChBH,EAAUD,GAAgE,YAAlDD,EAAgBL,EAAeO,IAAUrpG,MACpEspG,EAAiBpmG,KAAK5D,KAAKo6F,cAAcyP,EAAeH,GAAmB,IAC3EK,GAAW,EAEf,KAAOA,EAAUD,GAAgE,UAAlDD,EAAgBL,EAAeO,IAAUrpG,MACpEupG,EAAiBrmG,KAAK5D,KAAKo6F,cAAcyP,EAAeH,GAAmB,IAC3EK,GAAW,EAEf,KAAOA,EAAUD,GAAgE,YAAlDD,EAAgBL,EAAeO,IAAUrpG,MACpEwpG,EAAiBtmG,KAAK5D,KAAKo6F,cAAcyP,EAAeH,GAAmB,IAC3EK,GAAW,EAMf,IAAII,GAAW37B,KACX47B,EAAY,CAAEp9F,KAAM,YACxB,OAAO6K,EAAc,QAAS,CAC1B7K,KAAM,OACN6a,UAAWwrC,EAAWrjB,KAAK,KAC3BzkC,MAAO,CAAEf,OAAQuoB,EAAMvoB,SACxBk9C,SAASyiD,GAAWH,EAAiB7lG,SAAW0T,EAAc8/B,WAAM,EAAQisB,YAAc,CAAC,QAASwmC,GAAYJ,IAAoBtiD,SAASyiD,GAAWF,EAAiB9lG,SAAW0T,EAAc8/B,WAAM,EAAQisB,YAAc,CAAC,QAASwmC,GAAYH,IAAoBviD,SAASyiD,GAAWD,EAAiB/lG,SAAW0T,EAAc8/B,WAAM,EAAQisB,YAAc,CAAC,QAASwmC,GAAYF,IAAoBC,GAAWtyF,EAAc8/B,WAAM,EAAQisB,YAAcA,YAAcA,YAAc,CAAC,QAASwmC,GAAYJ,GAAmBC,GAAmBC,MAEhiBrB,EAAiBn2E,UAAU0nE,cAAgB,SAAUwN,EAAe8B,EAAmBW,GACnF,MAAI,iBAAkBzC,EACV/vF,EAAcu7B,EAAU,CAAEz2B,IAAKirF,EAAcjrF,KAAOirF,EAAc0C,cAEtEzyF,EAAc,KAAM,CAAE8E,IAAKirF,EAAcjrF,IAAK3P,KAAM,eAAgB6a,UAAW0gF,GAAqBX,EAAe5nG,KAAK+yB,MAAM4nE,QAAQ3qD,KAAK,MAAQhwC,KAAKuqG,cAAc3C,EAAe8B,EAAmB9B,EAAc4C,MAAOH,KAEzOxB,EAAiBn2E,UAAU63E,cAAgB,SAAU3C,EAAe8B,EAAmBe,EAAaJ,GAChG,GAAI,iBAAkBI,EAClB,OAAOA,EAAYH,aAEvB,IAAIv3E,EAAQ/yB,KAAK+yB,MACbpoB,EAAK3K,KAAKqI,MAAO6gG,EAAmBv+F,EAAGu+F,iBAAkBC,EAAuBx+F,EAAGw+F,qBAAsBC,EAAwBz+F,EAAGy+F,sBACpIvC,EArLZ,SAA4B9zE,EAAO60E,GAC/B,OAAkC,MAA3BA,EAAc3/D,WACjB0/D,GAA0B50E,EAAO60E,GAmLX8C,CAAmB33E,EAAO60E,GAC5C+C,EAAWhD,GAA0B50E,EAAO60E,GAG5CtyB,EAAaviD,EAAM4nE,OACnBuO,EAAmB,SACdrC,EACG,OADe,SAFK,UAI5B+D,EAAahD,EAAcjrF,IAC3B22C,EAzLZ,SAA4Bs0C,EAAe6C,EAAa7yD,EAAKyyD,GACzD,IAAI/+C,EAAa1T,EAAI0T,WAmBrB,MAlB6C,mBAAxBm/C,EAAYn3C,QAC7Bm3C,EAAYn3C,QAAQ1b,GACpB//B,EAAc,QAAS,CACnB7K,KAAM,eACN6a,UAAW,CACP4iF,EAAYI,eACZjD,EAAckD,eAAiB,2BAA6B,IAC9D96D,KAAK,KACPzkC,MAAO,CACHw8B,SAAU6P,EAAI8wD,cACdh/F,MAAOkuC,EAAIm7B,YACXvoE,OAAQ8gD,EAAa1T,EAAIi7B,aAAe,KAE7Cj7B,EAAImzD,kBAAmBlzF,EAAcwyF,EAAW,QAAU,QAAS,CAClEr9F,KAAM,gBAC2B,mBAA3By9F,EAAYO,WAChBP,EAAYO,WAAWpzD,GACvB6yD,EAAYO,aAsKJC,CAAmBrD,EAAe6C,EAAa,CACzDM,kBAAmBrB,EACnBhB,cAAe,GACf31B,YAAehgD,EAAM62E,uBAAyDnlG,IAArC0kG,EAAqByB,GAAgE,KAAnCzB,EAAqByB,GAChH/3B,kBAAoDpuE,IAAtC2kG,EAAsBwB,GAA4BxB,EAAsBwB,GAAc,KACpGt/C,WAAYs8C,EAAct8C,WAC1Bw/C,gBAAgB,EAChBI,eAAgB,GAChBC,sBAAuB,cACxBd,GACH,OAAOxyF,EAAcwyF,EAAW,KAAO,KAAM,CACzCpoF,IAAKwoF,EAAY7qB,MACjB5yE,KAAM,gBACP6K,EAAc,MAAO,CAAEgQ,UAAW,uBAAyB8iF,EAAW,8BAAgC,KACrG9yF,EAAcouF,GAAU,CAAEhkF,IAAKjiB,KAAK+oG,aAAa51D,UAAUy3D,GAAahrB,MAAO5/E,KAAKgpG,eAAe71D,UAAUy3D,GAAat1B,UAAWA,EAAWC,UAAYxiD,EAAM4nE,OAAqB,SAAZ,UAA4C1yD,UAAW2/D,EAAc3/D,UAAW0yD,OAAQgQ,EAAUzE,kBACvQ,GAAQ5yC,MAEtBu1C,EAAiBn2E,UAAUu2E,kBAAoB,SAAUmC,EAAYzuF,GACjE,IAAI/E,EAsDZ,SAAyB6xF,EAAU9sF,GAC/B,IAAK,IAAIjN,EAAK,EAAG27F,EAAa5B,EAAU/5F,EAAK27F,EAAWlnG,OAAQuL,IAAM,CAClE,IAAIkI,EAAUyzF,EAAW37F,GACzB,GAAIkI,EAAQ+E,MAAQA,EAChB,OAAO/E,EAGf,OAAO,KA7DW0zF,CAAgBtrG,KAAK+yB,MAAM02E,SAAU9sF,GAC/C/E,GACAukE,GAAOvkE,EAAQ4yF,MAAMe,cAAeH,IAG5CvC,EAAiBn2E,UAAUguD,kBAAoB,WAC3C1gF,KAAKqpG,eACLrpG,KAAKwR,QAAQypE,iBAAiBj7E,KAAKqpG,eAEvCR,EAAiBn2E,UAAUkuD,mBAAqB,WAE5C5gF,KAAKqpG,gBAETR,EAAiBn2E,UAAUmuD,qBAAuB,WAC9C7gF,KAAKwR,QAAQ0pE,oBAAoBl7E,KAAKqpG,eAE1CR,EAAiBn2E,UAAU42E,mBAAqB,WAC5C,OA3KR,SAAwBrB,GACpB,IAAK,IAAIv4F,EAAK,EAAG87F,EAASvD,EAAMv4F,EAAK87F,EAAOrnG,OAAQuL,IAEhD,GAAkB,WADR87F,EAAO97F,GACThG,MACJ,OAAO,EAGf,OAAO,EAoKI+hG,CAAezrG,KAAK+yB,MAAMk1E,MA7OzC,SAA4ByD,GAGxB,IAFA,IACIC,EAAe,EACVj8F,EAAK,EAAGk8F,EA9qRrB,SAAsBvzF,EAAWi8B,GAG7B,IAFA,IAAIu3D,EAAaxzF,aAAqBg9D,YAAc,CAACh9D,GAAaA,EAC9DyzF,EAAa,GACRjkG,EAAI,EAAGA,EAAIgkG,EAAW1nG,OAAQ0D,GAAK,EAExC,IADA,IAAIojC,EAAU4gE,EAAWhkG,GAAGkkG,iBAwqRS,yBAvqR5Bx3F,EAAI,EAAGA,EAAI02B,EAAQ9mC,OAAQoQ,GAAK,EACrCu3F,EAAWloG,KAAKqnC,EAAQ12B,IAGhC,OAAOu3F,EAmqRWE,CAAaN,GAEeh8F,EAAKk8F,EAAcznG,OAAQuL,IAErEi8F,EAAeptF,KAAKukC,IAAI6oD,EAAc3zD,EADrB4zD,EAAcl8F,KAGnC,OAAO6O,KAAKC,KAAKmtF,GAuOPrC,CAAmBtpG,KAAKgpG,eAAetB,UACvC,GAEVmB,EAAiBn2E,UAAU62E,oBAAsB,WAC7C,IAAI0C,GAxjJHv5B,KACDA,GAIR,WACI,IAAIjgC,EAAK9H,SAAS9yB,cAAc,OAChC46B,EAAGlnC,MAAMkpE,SAAW,SACpBhiC,EAAGlnC,MAAMvB,SAAW,WACpByoC,EAAGlnC,MAAMQ,IAAM,UACf0mC,EAAGlnC,MAAMU,KAAO,UAChB0+B,SAAS7H,KAAKhrB,YAAY26B,GAC1B,IAAIna,EAAMs6C,GAA4BngC,GAEtC,OADA9H,SAAS7H,KAAKrhB,YAAYgxB,GACnBna,EAbgB4zE,IAEhBx5B,IAsjJYq2B,EAAN/oG,KAAwB+oG,aAAcC,EAAtChpG,KAA0DgpG,eAC/DE,GAAmB,EACnBC,EAAuB,GACvBC,EAAwB,GAC5B,IAAK,IAAIwB,KAAc7B,EAAa7B,WAAY,CAC5C,IAAIiF,EAAWpD,EAAa7B,WAAW0D,GACvC,GAAIuB,GAAYA,EAAStF,kBAAmB,CACxCqC,GAAmB,EACnB,OAGR,IAAK,IAAIx5F,EAAK,EAAG9E,EAAK5K,KAAK+yB,MAAM02E,SAAU/5F,EAAK9E,EAAGzG,OAAQuL,IAAM,CAC7D,IAEI07F,EAAapC,EAAe9B,WAD5B0D,EADUhgG,EAAG8E,GACQiN,KAEzB,GAAIyuF,EAAY,CACZ,IAAIgB,EAAYhB,EAAW1qF,WAC3ByoF,EAAqByB,GAAcrsF,KAAKs7B,MAAMuyD,EAAU3hG,wBAAwBf,OAASw/F,EACnF+C,EAAe3mF,EACf,IACN8jF,EAAsBwB,GAAcrsF,KAAKs7B,MAAMuyD,EAAU3hG,wBAAwBD,SAGzF,MAAO,CAAE0+F,iBAAkBA,EAAkBC,qBAAsBA,EAAsBC,sBAAuBA,IAE7GP,EApJ2B,CAqJpC3sB,IACF2sB,GAAiB7sB,iBAAiB,CAC9BmtB,qBAAsB3sD,GACtB4sD,sBAAuB5sD,KAY3B,IAAI6vD,GAA2B,SAAU7zB,GAErC,SAAS6zB,IACL,IAAI3qD,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAMk+B,MAAQzsC,IACPuO,EA2CX,OA/CA+2B,YAAU4zB,EAAW7zB,GAMrB6zB,EAAU35E,UAAUwgB,OAAS,WACzB,IAAengB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1CwW,EAAUxW,EAAQwW,QAClByzC,EAAM1oC,EAAM0oC,IACZc,EAAad,EAAIc,WACjBrE,EAAKqE,EAAWrE,GAChB2nB,EAAY,CACZv3D,MAAO,IAAIk2C,GAAShtD,EAAS+qD,EAAWtpD,IAAKspD,EAAWzoC,UACxD7hB,KAAMT,EAAQktD,QACd4tC,SAAUv5E,EAAMu5E,SAChBt2C,UAAWkC,EAAGlC,UACdF,gBAAiBoC,EAAGpC,gBACpBC,YAAamC,EAAGnC,YAChBw2C,aAAcx5E,EAAMy5E,iBAAmBhwC,GAAoBf,EAAKjqD,GAChEi7F,kBAAmB15E,EAAM25E,iBAAmB9vC,GAAyBnB,EAAKjqD,GAC1Em7F,gBAAiB55E,EAAM25E,iBAAmB7vC,GAAuBpB,GACjEmxC,SAAUllD,QAAQ30B,EAAM85E,YAAc95E,EAAM+5E,YAAc/5E,EAAMg6E,iBAChE9xC,QAASvT,QAAQ+T,EAAIR,SACrBC,MAAOxT,QAAQ+T,EAAIP,OACnB6C,OAAQrW,QAAQ30B,EAAMgrC,QACtBC,SAAUtW,QAAQ30B,EAAMirC,UACxBC,QAASvW,QAAQ30B,EAAMkrC,SACvBj+B,WAAY0nB,QAAQ30B,EAAMiN,YAC1B6sE,WAAYnlD,QAAQ30B,EAAM85E,YAC1BC,WAAYplD,QAAQ30B,EAAM+5E,aAE1BE,EA7tNZ,SAA4Bj6E,GACxB,IAAIsgC,EAAa,CAAC,YAkClB,OAjCItgC,EAAM65E,UACNv5C,EAAWzvD,KAAK,mBAEhBmvB,EAAMw5E,aACNl5C,EAAWzvD,KAAK,uBAEhBmvB,EAAM05E,kBAAoB15E,EAAM45E,iBAChCt5C,EAAWzvD,KAAK,sBAEhBmvB,EAAM85E,YACNx5C,EAAWzvD,KAAK,qBAEhBmvB,EAAM+5E,YACNz5C,EAAWzvD,KAAK,qBAEhBmvB,EAAMiN,YACNqzB,EAAWzvD,KAAK,qBAEhBmvB,EAAMkoC,SACN5H,EAAWzvD,KAAK,kBAEhBmvB,EAAMmoC,OACN7H,EAAWzvD,KAAK,gBAEhBmvB,EAAMgrC,QACN1K,EAAWzvD,KAAK,iBAEhBmvB,EAAMkrC,SACN5K,EAAWzvD,KAAK,kBAEhBmvB,EAAMirC,UACN3K,EAAWzvD,KAAK,mBAEbyvD,EA0rNsB45C,CAAmBptB,GAAW7mE,OAAOk/C,EAAG7E,YACjE,OAAQx7C,EAAc4nE,GAAY,CAAEI,UAAWA,EAAWxsB,WAAYrrC,EAAQilC,gBAAiBqG,QAAStrC,EAAQklC,aAAc8yB,eAAgBjtD,EAAMitD,eAAgBzsB,SAAUvrC,EAAQmlC,cAAeqG,YAAaxrC,EAAQolC,iBAAkBwyB,MAAO5/E,KAAK4/E,OAAS,SAAUF,EAAWmC,EAAkB3B,EAAYC,GAAgB,OAAOptD,EAAMjrB,SAAS43E,EAAWstB,EAAmBh0F,OAAO6oE,GAAmB3B,EAAYC,EAAcN,MAEhbwsB,EAAU35E,UAAUguD,kBAAoB,WACpCllB,GAASx7D,KAAK4/E,MAAMxD,QAASp8E,KAAK+yB,MAAM0oC,MAK5C4wC,EAAU35E,UAAUkuD,mBAAqB,SAAUqT,GAC/C,IAAIx4B,EAAMz7D,KAAK+yB,MAAM0oC,IACjBA,IAAQw4B,EAAUx4B,KAClBD,GAASx7D,KAAK4/E,MAAMxD,QAAS3gB,IAG9B4wC,EAhDoB,CAiD7BnwB,IAGEgxB,GAA+B,SAAU10B,GAEzC,SAAS00B,IACL,OAAkB,OAAX10B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAiB/D,OAnBAy4E,YAAUy0B,EAAe10B,GAIzB00B,EAAcx6E,UAAUwgB,OAAS,WAC7B,IAAengB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1CiqD,EAAM1oC,EAAM0oC,IAEZ6wC,EAAWxvC,GAAiBrB,EADfjqD,EAAQwW,QAAQ8mC,iBAAmB/7B,EAAMo6E,kBACT37F,EAASuhB,EAAMiqC,wBAAyBjqC,EAAMkqC,wBAC/F,OAAQplD,EAAcw0F,GAAW,CAAE5wC,IAAKA,EAAK6wC,SAAUA,EAAUE,gBAAiBz5E,EAAMy5E,gBAAiBE,gBAAiB35E,EAAM25E,gBAAiB1sB,eAAgBjtD,EAAMitD,gBAAkBotB,GAAsBP,WAAY95E,EAAM85E,WAAYC,WAAY/5E,EAAM+5E,WAAYC,gBAAiBh6E,EAAMg6E,gBAAiB/sE,WAAYjN,EAAMiN,WAAY+9B,OAAQhrC,EAAMgrC,OAAQC,SAAUjrC,EAAMirC,SAAUC,QAASlrC,EAAMkrC,SAAW,SAAUyhB,EAAWrsB,EAAY6sB,EAAYC,EAAcN,GAAa,OAAQhoE,EAAc,IAAKm+B,YAAS,CAAEnuB,UAAWkL,EAAM2rE,gBAAgB1lF,OAAOq6C,GAAYrjB,KAAK,KAAMzkC,MAAO,CACvkBwqD,YAAa8pB,EAAU9pB,YACvBD,gBAAiB+pB,EAAU/pB,iBAC5B7zC,IAAKy9D,GAAavhB,GAAkB1C,EAAKjqD,IAC5CqG,EAAc,MAAO,CAAEgQ,UAAW,gBAAiB5F,IAAKi+D,EAAY30E,MAAO,CAAEsqD,MAAOgqB,EAAU7pB,YAAemqB,GAC7GN,EAAU4sB,kBACN50F,EAAc,MAAO,CAAEgQ,UAAW,4CACtCg4D,EAAU8sB,gBACN90F,EAAc,MAAO,CAAEgQ,UAAW,8CAEvCqlF,EApBwB,CAqBjChxB,IACF,SAASkxB,GAAqBC,GAC1B,OAAQx1F,EAAc,MAAO,CAAEgQ,UAAW,uBACtCwlF,EAAWf,UAAaz0F,EAAc,MAAO,CAAEgQ,UAAW,iBAAmBwlF,EAAWf,UACxFz0F,EAAc,MAAO,CAAEgQ,UAAW,4BAC9BhQ,EAAc,MAAO,CAAEgQ,UAAW,4BAA8BwlF,EAAW/kF,MAAMsuC,OAAS/+C,EAAcu7B,EAAU,KAAM,WAGpI,IAAIk6D,GAAmB,SAAUv6E,GAAS,OAAQlb,EAAc6iE,GAAgB4F,SAAU,KAAM,SAAU9uE,GACtG,IAAIwW,EAAUxW,EAAQwW,QAClB63D,EAAY,CACZ0tB,OAAQx6E,EAAMw6E,OACdtzD,KAAMzoC,EAAQ4rC,QAAQ+hB,OAAOpsC,EAAMknB,MACnChoC,KAAMT,EAAQktD,SAElB,OAAQ7mD,EAAc4nE,GAAY,CAAEI,UAAWA,EAAWxsB,WAAYrrC,EAAQ6hC,uBAAwByJ,QAAStrC,EAAQ8hC,oBAAqByJ,SAAUvrC,EAAQ+hC,qBAAsByJ,YAAaxrC,EAAQgiC,yBAA2Bj3B,EAAMjrB,aAG1O0lG,GAAiBzmD,GAAgB,CAAEjV,IAAK,YACxC27D,GAAgC,SAAUj1B,GAE1C,SAASi1B,IACL,OAAkB,OAAXj1B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAgB/D,OAlBAy4E,YAAUg1B,EAAgBj1B,GAI1Bi1B,EAAe/6E,UAAUwgB,OAAS,WAC9B,IAAengB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1CwW,EAAUxW,EAAQwW,QAClB63D,EAAY6tB,GAAuB,CACnCzzD,KAAMlnB,EAAMknB,KACZonB,YAAatuC,EAAMsuC,YACnBzD,WAAY7qC,EAAM6qC,WAClB+vC,cAAe56E,EAAM46E,cACrBC,WAAY76E,EAAMorE,eAClBz/B,QAASltD,EAAQktD,QACjBthB,QAAS5rC,EAAQ4rC,UAErB,OAAQvlC,EAAckoE,GAAa,CAAEF,UAAWA,EAAWvsB,QAAStrC,EAAQ4gC,eAAgBo3B,eAAgBjtD,EAAMitD,gBAAkBjtD,EAAMjrB,WAEvI2lG,EAnByB,CAoBlCvxB,IACF,SAASwxB,GAAuB35C,GAC5B,IAAI9Z,EAAO8Z,EAAI9Z,KAAMmD,EAAU2W,EAAI3W,QAC/B4gD,EAAUnsB,GAAY53B,EAAM8Z,EAAI6J,WAAY,KAAM7J,EAAIsN,aAC1D,OAAOrrB,YAASA,YAASA,YAAS,CAAEiE,KAAMmD,EAAQ+hB,OAAOllB,GAAOhoC,KAAM8hD,EAAI2K,SAAWs/B,GAAU,CAAE6P,cAAe95C,EAAI45C,cAAgBvwD,EAAQr6B,OAAOk3B,EAAMuzD,IAAkB,KAAOz5C,EAAI65C,YAG1L,IAAIE,GAA6B,SAAUt1B,GAEvC,SAASs1B,IACL,IAAIpsD,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAGhE,OAFA0hD,EAAMqsD,gBAAkBvsD,GAAcksD,IACtChsD,EAAM0+B,oBAAsBmB,KACrB7/B,EAsBX,OA3BA+2B,YAAUq1B,EAAat1B,GAOvBs1B,EAAYp7E,UAAUwgB,OAAS,WAC3B,IAAengB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1CwW,EAAUxW,EAAQwW,QAClB63D,EAAY7/E,KAAK+tG,gBAAgB,CACjC9zD,KAAMlnB,EAAMknB,KACZonB,YAAatuC,EAAMsuC,YACnBzD,WAAY7qC,EAAM6qC,WAClB+vC,cAAe56E,EAAM46E,cACrBC,WAAY76E,EAAMorE,eAClBz/B,QAASltD,EAAQktD,QACjBthB,QAAS5rC,EAAQ4rC,UAEjBiW,EAAa0e,GAAiB8N,EAAWruE,EAAQwgE,OAAOh5D,OAAO6mE,EAAU9yD,WACvE,GACA/sB,KAAKogF,oBAAoBp4D,EAAQ2gC,kBAAmBk3B,IACtDmuB,EAAYnuB,EAAU9yD,WAAa,GAAK,CACxC,YAAa0zB,GAAgB1tB,EAAMknB,OAEvC,OAAQpiC,EAAcioE,GAAW,CAAED,UAAWA,EAAWtsB,SAAUvrC,EAAQ6gC,gBAAiB2K,YAAaxrC,EAAQ8gC,mBAAoB82B,MAAO7sD,EAAM6sD,OAAS,SAAUF,GAAa,OAAO3sD,EAAMjrB,SAAS43E,EAAWrsB,EAAY26C,EAAWnuB,EAAU9yD,eAEjP+gF,EA5BsB,CA6B/B5xB,IAEF,SAAS+xB,GAAWC,GAChB,OAAQr2F,EAAc,MAAO,CAAEgQ,UAAW,MAAQqmF,IAEtD,IAAIC,GAAU,SAAUp7E,GAAS,OAAQlb,EAAcw0F,GAAW,CAAErsB,eAAgBS,GAAoBhlB,IAAK1oC,EAAM0oC,IAA4B6wC,SAAU,GAAIE,iBAAiB,EAAME,iBAAiB,EAAMG,YAAY,EAAOC,YAAY,EAAOC,iBAAiB,EAAO/sE,YAAY,EAAO+9B,OAAQhrC,EAAMgrC,OAAQC,SAAUjrC,EAAMirC,SAAUC,QAASlrC,EAAMkrC,SAAW,SAAUyhB,EAAWrsB,EAAY6sB,EAAYC,EAAcN,GAAa,OAAQhoE,EAAc,MAAO,CAAEoK,IAAKy9D,EAAW73D,UAAW,CAAC,eAAe7O,OAAOq6C,GAAYrjB,KAAK,KAAMzkC,MAAO,CACrhBuqD,gBAAiB+pB,EAAU/pB,kBAC1BqqB,MACT,SAASM,GAAmB1tD,GAExB,OADYA,EAAMzK,MAAMsuC,OACP/+C,EAAc,MAAO,CAAEgQ,UAAW,kBAAoBkL,EAAMzK,MAAMsuC,OAGvF,IAAIw3C,GAAiB,SAAUr7E,GAAS,OAAQlb,EAAc6iE,GAAgB4F,SAAU,KAAM,SAAU9uE,GACpG,IAAI4rC,EAAU5rC,EAAQ4rC,QAASp1B,EAAUxW,EAAQwW,QAC7CiyB,EAAOlnB,EAAMknB,KACbl3B,EAASiF,EAAQwjC,kBAAoBz4B,EAAMs7E,cAC3CrpD,EAAM5H,EAAQ6H,kBAAkBhL,GAChCuvC,EAAOpsC,EAAQr6B,OAAOk3B,EAAMl3B,GAEhC,OAAQlL,EAAc4nE,GAAY,CAAEI,UADpB,CAAE76B,IAAKA,EAAKwkC,KAAMA,EAAMvvC,KAAMA,GACYoZ,WAAYrrC,EAAQohC,qBAAsBkK,QAAStrC,EAAQqhC,kBAAmB22B,eAAgBsuB,GAAa/6C,SAAUvrC,EAAQshC,mBAAoBkK,YAAaxrC,EAAQuhC,uBAAyBx2B,EAAMjrB,aAEnQ,SAASwmG,GAAYjB,GACjB,OAAOA,EAAW7jB,KAGtB,IACI+kB,GAAyB,SAAU/1B,GAEnC,SAAS+1B,IACL,IAAI7sD,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA6BhE,OA5BA0hD,EAAMr5C,MAAQ,CACVgxF,QAAShkD,KAEbqM,EAAMi+B,aAAe,SAAUltC,GAC3BiP,EAAM4/B,OAAS7uC,EACXiP,EAAM3uB,MAAM6sD,OACZzD,GAAOz6B,EAAM3uB,MAAM6sD,MAAOntC,IAIlCiP,EAAM8sD,wBAA0B,SAAUv5D,GAEtC,IAAIzoB,EAASwoB,EAAsBC,GAC9ByM,EAAM4/B,OAAO10D,SAASJ,IACvBk1B,EAAM+sD,oBAGd/sD,EAAMgtD,sBAAwB,SAAUz5D,GACrB,WAAXA,EAAGt4B,KACH+kC,EAAM+sD,oBAGd/sD,EAAM+sD,iBAAmB,WACrB,IAAIE,EAAUjtD,EAAM3uB,MAAM47E,QACtBA,GACAA,KAGDjtD,EA+CX,OA9EA+2B,YAAU81B,EAAS/1B,GAiCnB+1B,EAAQ77E,UAAUwgB,OAAS,WACvB,IAAIvoC,EAAK3K,KAAKwR,QAASwgE,EAAQrnE,EAAGqnE,MAAOhqD,EAAUrd,EAAGqd,QACvC+K,EAAN/yB,KAAiB+yB,MAAO1qB,EAAxBrI,KAAmCqI,MACxCgrD,EAAa,CACb,aACA2e,EAAMC,SAAS,YACjBj5D,OAAO+Z,EAAM2rE,iBAAmB,IAClC,OAAOprD,EAAaz7B,EAAc,MAAOm+B,YAAS,CAAEhwB,GAAI+M,EAAM/M,GAAI6B,UAAWwrC,EAAWrjB,KAAK,KAAM,kBAAmB3nC,EAAMgxF,SAAWtmE,EAAM67E,WAAY,CAAE3sF,IAAKjiB,KAAK2/E,eACjK9nE,EAAc,MAAO,CAAEgQ,UAAW,qBAAuBmqD,EAAMC,SAAS,kBACpEp6D,EAAc,OAAQ,CAAEgQ,UAAW,mBAAoB7B,GAAI3d,EAAMgxF,SAAWtmE,EAAM6jC,OAClF/+C,EAAc,OAAQ,CAAEgQ,UAAW,oBAAsBmqD,EAAM2H,aAAa,SAAU/iB,MAAO5uC,EAAQ2oC,UAAW1a,QAASj2C,KAAKyuG,oBAClI52F,EAAc,MAAO,CAAEgQ,UAAW,mBAAqBmqD,EAAMC,SAAS,mBAAqBl/C,EAAMjrB,WAAYirB,EAAM87E,WAE3HN,EAAQ77E,UAAUguD,kBAAoB,WAClC/1C,SAASrf,iBAAiB,YAAatrB,KAAKwuG,yBAC5C7jE,SAASrf,iBAAiB,UAAWtrB,KAAK0uG,uBAC1C1uG,KAAKsvB,cAETi/E,EAAQ77E,UAAUmuD,qBAAuB,WACrCl2C,SAAShf,oBAAoB,YAAa3rB,KAAKwuG,yBAC/C7jE,SAAShf,oBAAoB,UAAW3rB,KAAK0uG,wBAEjDH,EAAQ77E,UAAUpD,WAAa,WAC3B,IAAIpmB,EAAQlJ,KAAKwR,QAAQtI,MACrByB,EAAK3K,KAAK+yB,MAAO+7E,EAAcnkG,EAAGmkG,YAAaC,EAAepkG,EAAGokG,aACjEztB,EAASthF,KAAKshF,OACd0tB,EAzvJZ,SAAkCv8D,GAG9B,IAFA,IAAIw8D,EAAkB95B,GAAmB1iC,GACrCs7B,EAAOt7B,EAAGhoC,wBACLiF,EAAK,EAAGw/F,EAAoBD,EAAiBv/F,EAAKw/F,EAAkB/qG,OAAQuL,IAAM,CACvF,IACIy/F,EAAenhC,GAAeD,EADbmhC,EAAkBx/F,GACgBjF,yBACvD,IAAI0kG,EAIA,OAAO,KAHPphC,EAAOohC,EAMf,OAAOphC,EA4uJiBqhC,CAAyBN,GAC7C,GAAIE,EAAe,CACf,IAAIK,EAAc/tB,EAAO72E,wBAErB6kG,EAAaP,EACX16D,EAAey6D,EAAa,kBAAkBrkG,wBAAwBsB,IACtEijG,EAAcjjG,IAChBwjG,EAAcrmG,EAAQ8lG,EAAc9iG,MAAQmjG,EAAY3lG,MAAQslG,EAAc/iG,KAElFqjG,EAAa/wF,KAAKukC,IAAIwsD,EAtEN,IAuEhBC,EAAchxF,KAAKG,IAAI6wF,EAAa5kE,SAAS6J,gBAAgBu+B,YAvE7C,GAuEmFs8B,EAAY3lG,OAC/G6lG,EAAchxF,KAAKukC,IAAIysD,EAxEP,IAyEhB,IAAIC,EAAWluB,EAAOmuB,aAAahlG,wBACnCoqC,EAAWysC,EAAQ,CACfv1E,IAAKujG,EAAaE,EAASzjG,IAC3BE,KAAMsjG,EAAcC,EAASvjG,SAIlCsiG,EA/EkB,CAgF3BryB,IAEEwzB,GAA6B,SAAUl3B,GAEvC,SAASk3B,IACL,IAAIhuD,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAahE,OAZA0hD,EAAMi+B,aAAe,SAAU2B,GAC3B5/B,EAAM4/B,OAASA,EACXA,EACA5/B,EAAMlwC,QAAQupE,6BAA6Br5B,EAAO,CAC9CjP,GAAI6uC,EACJ6W,gBAAgB,IAIpBz2C,EAAMlwC,QAAQwpE,+BAA+Bt5B,IAG9CA,EAkCX,OAjDA+2B,YAAUi3B,EAAal3B,GAiBvBk3B,EAAYh9E,UAAUwgB,OAAS,WAC3B,IAAIvoC,EAAK3K,KAAKwR,QACVuhB,EAAQ/yB,KAAK+yB,MACb48E,EAAY58E,EAAM48E,UAAW/xC,EAAa7qC,EAAM6qC,WAAYyD,EAActuC,EAAMsuC,YAChFzK,EAHmDjsD,EAAGyyC,QAGtCr6B,OAAO4sF,EAHMhlG,EAAGqd,QAGU6/B,kBAC9C,OAAQhwC,EAAci2F,GAAa,CAAE7zD,KAAM01D,EAAWtuC,YAAaA,EAAazD,WAAYA,EAAYgiB,MAAO5/E,KAAK2/E,cAAgB,SAAUD,EAAWkwB,EAAe5B,GAAa,OAAQn2F,EAAc02F,GAAS,CAAE3uB,MAAOF,EAAW15D,GAAI+M,EAAM/M,GAAI4wC,MAAOA,EAAO8nC,gBAAiB,CAAC,mBAAmB1lF,OAAO42F,GAAgBhB,WAAYZ,EAAiEa,SAAU97E,EAAM87E,SAAUC,YAAa/7E,EAAM+7E,YAAaC,aAAch8E,EAAMg8E,aAAcJ,QAAS57E,EAAM47E,SACpf92F,EAAc41F,GAAgB,CAAExzD,KAAM01D,EAAWtuC,YAAaA,EAAazD,WAAYA,GAAc,SAAUsiB,EAAYC,GAAgB,OAAQA,GAC/ItoE,EAAc,MAAO,CAAEgQ,UAAW,uBAAwB5F,IAAKi+D,GAAcC,KACjFptD,EAAMjrB,aAEd4nG,EAAYh9E,UAAU8pD,SAAW,SAAUC,EAAcC,EAAaC,EAASC,GAC3E,IAAe0E,EAANthF,KAAkBshF,OAAQvuD,EAA1B/yB,KAAqC+yB,MAC9C,OAAI0pD,GAAgB,GAAKA,EAAeE,GACpCD,GAAe,GAAKA,EAAcE,EAC3B,CACHvb,YAAatuC,EAAMsuC,YACnB7B,SAAUxpB,YAAS,CAAEyH,QAAQ,EAAMrC,MAAO,CAClCjyC,MAAO4pB,EAAM48E,UACbvmG,IAAK2pB,EAAM2yC,UACV3yC,EAAM88E,eACfC,MAAOxuB,EACPvT,KAAM,CACF9hE,KAAM,EACNF,IAAK,EACLG,MAAOywE,EACP3wE,OAAQ4wE,GAEZmzB,MAAO,GAGR,MAEJL,EAlDsB,CAmD/BrzB,IAEE2zB,GAA8B,SAAUx3B,GAExC,SAASw3B,IACL,IAAItuD,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAwChE,OAvCA0hD,EAAMuuD,UAAY98D,IAClBuO,EAAMr5C,MAAQ,CACV6nG,eAAe,EACfC,UAAW96D,KAEfqM,EAAM0uD,YAAc,SAAUn7D,GAC1B,IAAgBliB,EAAP2uB,EAAkB3uB,MAAOvhB,EAAzBkwC,EAAsClwC,QAC3Cs/C,EAAgBt/C,EAAQwW,QAAQ8oC,cAChC7W,EAAOo2D,GAAat9E,GAAO5pB,MAC/B,SAASmnG,EAAe70C,GACpB,IAAI9wD,EAAK8wD,EAAIc,WAAkDnhB,EAAQzwC,EAAGywC,MAC1E,MAAO,CACH9yB,MAAO,IAAIk2C,GAAShtD,EAFO7G,EAAGsI,IAAgBtI,EAAGmpB,UAGjD3qB,MAAOqI,EAAQ4rC,QAAQ+hB,OAAO/jB,EAAMjyC,OACpCC,IAAKoI,EAAQ4rC,QAAQ+hB,OAAO/jB,EAAMhyC,KAClC6xD,QAASQ,EAAIR,QACbC,MAAOO,EAAIP,OAGU,mBAAlBpK,IACPA,EAAgBA,EAAc,CAC1B7W,KAAMA,EACNwD,OAAQiK,QAAQ30B,EAAMw9E,YACtBC,QAASz9E,EAAMy9E,QAAQ/mG,IAAI6mG,GAC3BG,WAAY19E,EAAM09E,WAAWhnG,IAAI6mG,GACjC7xC,QAASxpB,EACThjC,KAAMT,EAAQktD,WAGjB5N,GAAmC,YAAlBA,EAGY,iBAAlBA,GACZt/C,EAAQsuD,YAAYmE,OAAOhqB,EAAM6W,GAHjCpP,EAAMo6B,SAAS,CAAEo0B,eAAe,KAMxCxuD,EAAMgvD,mBAAqB,WACvBhvD,EAAMo6B,SAAS,CAAEo0B,eAAe,KAE7BxuD,EAoCX,OA9EA+2B,YAAUu3B,EAAcx3B,GA4CxBw3B,EAAat9E,UAAUwgB,OAAS,WAC5B,IAAIwO,EAAQ1hD,KACG+yB,EAAN/yB,KAAiB+yB,MAAO1qB,EAAxBrI,KAAmCqI,MAC5C,OAAQwP,EAAc6iE,GAAgB4F,SAAU,KAAM,SAAU9uE,GAC5D,IAAIktD,EAAUltD,EAAQktD,QAAS12C,EAAUxW,EAAQwW,QAAS83C,EAActuD,EAAQsuD,YAC5E9Q,EAAehnC,EAAQgnC,aACvB2hD,EAAU59E,EAAM49E,QAChBv1D,EAAQi1D,GAAat9E,GACrBy2D,EAA+B,mBAAjBx6B,EACZA,EAAa95B,KAAK4qC,EAAa6wC,GAC/B,IAAMA,EAAU,IAAM3hD,EACxB4H,EAAQpf,EAAmBxvB,EAAQinC,aAAc,CAAC0hD,GAAUnnB,GAC5D3J,EAAY,CACZ76B,IAAK2rD,EACLC,UAAW,IAAMD,EACjBnnB,KAAMA,EACNv3E,KAAMysD,GAEV,OAAQ7mD,EAAcu7B,EAAU,KAC5BsU,QAAQ30B,EAAM49E,UAAa94F,EAAc4nE,GAAY,CAAEG,MAAOl+B,EAAMuuD,UAAWpwB,UAAWA,EAAWxsB,WAAYrrC,EAAQ+oC,mBAAoBuC,QAAStrC,EAAQgpC,gBAAiBgvB,eAAgBjtD,EAAMitD,gBAAkB6wB,GAAqBt9C,SAAUvrC,EAAQipC,iBAAkBuC,YAAaxrC,EAAQkpC,qBAAuB,SAAUwuB,EAAWmC,EAAkB3B,EAAYC,GAAgB,OAAOptD,EAAMjrB,SAAS43E,EAAW,CAAC,gBAAgB1mE,OAAO6oE,GAAmB3B,EAAYC,EAAcz+B,EAAM0uD,YAAax5C,EAAOvuD,EAAM6nG,cAAe7nG,EAAM6nG,cAAgB7nG,EAAM8nG,UAAY,MAC5jB9nG,EAAM6nG,eAAkBr4F,EAAc63F,GAAa,CAAE1pF,GAAI3d,EAAM8nG,UAAWR,UAAWv0D,EAAMjyC,MAAOu8D,QAAStqB,EAAMhyC,IAAKi4D,YAAatuC,EAAMsuC,YAAazD,WAAY7qC,EAAM6qC,WAAYiyC,cAAe98E,EAAM88E,cAAehB,SAAUntD,EAAMmtD,SAAUC,YAAa/7E,EAAM+9E,eAAe10B,QAAS2yB,aAAch8E,EAAMg8E,aAAcJ,QAASjtD,EAAMgvD,oBAAsB39E,EAAMg+E,sBAGtXf,EAAat9E,UAAUguD,kBAAoB,WACvC1gF,KAAKgxG,kBAEThB,EAAat9E,UAAUkuD,mBAAqB,WACxC5gF,KAAKgxG,kBAEThB,EAAat9E,UAAUs+E,eAAiB,WAChChxG,KAAKiwG,UAAU7zB,UACfp8E,KAAK6uG,SAAWx6D,EAAer0C,KAAKiwG,UAAU7zB,QAAS,sBAGxD4zB,EA/EuB,CAgFhC9zB,IACF,SAAS20B,GAAoB99E,GACzB,OAAOA,EAAMy2D,KAEjB,SAAS6mB,GAAat9E,GAClB,GAAIA,EAAMw9E,WACN,MAAO,CACHpnG,MAAO4pB,EAAMw9E,WACbnnG,IAAKovC,EAAQzlB,EAAMw9E,WAAY,IAGvC,IAYyBx0C,EAZrB00C,EAAa19E,EAAM09E,WACvB,MAAO,CACHtnG,MAAO8nG,GAAwBR,GAC/BrnG,KASqB2yD,EATI00C,EAUtB10C,EAAKtmD,OAAOy7F,IAAe30C,WAAWnhB,MAAMhyC,MAPvD,SAAS6nG,GAAwBl1C,GAC7B,OAAOA,EAAKtmD,OAAO07F,IAAmB50C,WAAWnhB,MAAMjyC,MAE3D,SAASgoG,GAAkBC,EAAMC,GAC7B,OAAOD,EAAK70C,WAAWnhB,MAAMjyC,MAAQkoG,EAAK90C,WAAWnhB,MAAMjyC,MAAQioG,EAAOC,EAK9E,SAASH,GAAcE,EAAMC,GACzB,OAAOD,EAAK70C,WAAWnhB,MAAMhyC,IAAMioG,EAAK90C,WAAWnhB,MAAMhyC,IAAMgoG,EAAOC,I,oQCz6SpE5xG,EAAM,CAAC,kBACPC,EAAM,CAAC,aACP4xG,EAAM,CAAC,SACPC,EAAM,WAAc,MAAO,CAAEC,cAAe,MAC5CC,EAAM,CAAC,KACPC,EAAmC,IAAI,IAAe,mCAAoC,CAC5F9qF,WAAY,OACZ9hB,QAAS,iBAAO,CAAE6sG,oBAAoB,MAWtCC,EAAe,EAEbC,EAAkC,CACpCtvG,QAAS,IACTC,YAAa,aAAW,kBAAMsvG,IAC9BpoF,OAAO,GAGLqoF,E,YACF,WAEAxrF,EAEAyrF,GAAO,oBACHhyG,KAAKumB,OAASA,EACdvmB,KAAKgyG,QAAUA,IAKjBC,E,YACF,WAAYllG,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrBmlG,EAA2B,YAAc,YAAW,YAAmB,YAAcD,IAAsB,W,iBAE3GH,E,YACF,WAAYpvG,EAAYq/B,EAAej1B,EAAoBqpC,EAAUpvB,EAAUorF,GAAc,M,MAAA,4B,EACzF,K,EAAA,E,EAAA,CAAMzvG,G,iBAAN,E,iGACKq/B,cAAgBA,EACrB,EAAKj1B,mBAAqBA,EAC1B,EAAKia,SAAWA,EAChB,EAAKorF,eAAiBA,EACtB,EAAKxnF,UAAY,SAACynF,KAClB,EAAKxnF,WAAa,aAClB,EAAKynF,UAAL,6BAAuCT,GACvC,EAAKU,WAAY,EACjB,EAAKC,UAAW,EAEhB,EAAKpxG,KAAO,KAEZ,EAAK6kB,GAAK,EAAKqsF,UAEf,EAAKG,cAAgB,QAErB,EAAKrsF,UAAY,KAEjB,EAAKqC,eAAiB,KAEtB,EAAKzY,OAAS,IAAI,IAMlB,EAAK0iG,aAAe,IAAI,IACxB,EAAKt8D,SAAW3G,SAAS2G,IAAa,EA7BmD,E,2DAgC7F,WAAiB,OAAOn2C,KAAKsyG,W,IAC7B,SAAa/wG,GAASvB,KAAKsyG,UAAY,YAAsB/wG,K,mBAE7D,WAAgB,OAAOvB,KAAKuyG,U,IAC5B,SAAYhxG,GACRvB,KAAKuyG,SAAW,YAAsBhxG,GACtCvB,KAAK8M,mBAAmBkK,iB,mBAG5B,WAAgB,gBAAUhX,KAAKgmB,IAAMhmB,KAAKqyG,UAA1B,Y,gCAChB,WAAkB,WACdryG,KAAK+hC,cACA2wE,QAAQ1yG,KAAK+M,aAAa,GAC1B7I,UAAU,SAAAyuG,GAKS,aAAhBA,GAA8C,YAAhBA,EAC9B,EAAKC,cAAchwG,cAAcksB,QAE3B6jF,GAMNpuG,QAAQC,UAAU6Z,KAAK,kBAAM,EAAKuM,mB,yBAI9C,WACI5qB,KAAK+hC,cAAc8wE,eAAe7yG,KAAK+M,e,4BAG3C,SAAeub,GAIXA,EAAMsH,kBACN5vB,KAAKyyG,aAAavwF,OAIdliB,KAAK+mB,SAAS4qF,mBACd3xG,KAAK4yG,cAAchwG,cAAcovG,QAAUhyG,KAAKgyG,SAIpDhyG,KAAKgyG,QAAUhyG,KAAK4yG,cAAchwG,cAAcovG,QAGhDhyG,KAAK8/B,sB,2BAGT,SAAcxX,GAQVA,EAAMsH,oB,wBAGV,SAAWruB,GACPvB,KAAKgyG,UAAYzwG,I,8BAGrB,SAAiByN,GACbhP,KAAK2qB,UAAY3b,I,+BAGrB,SAAkBA,GACdhP,KAAK4qB,WAAa5b,I,8BAGtB,SAAiB+d,GACb/sB,KAAKgtB,SAAWD,EAChB/sB,KAAK8M,mBAAmBkK,iB,mBAG5B,SAAMgR,EAAS8qF,GACPA,EACA9yG,KAAK+hC,cAAcgB,SAAS/iC,KAAK4yG,cAAeE,EAAQ9qF,GAGxDhoB,KAAK4yG,cAAchwG,cAAcksB,MAAM9G,K,oBAI/C,WACIhoB,KAAKgyG,SAAWhyG,KAAKgyG,QACrBhyG,KAAK2qB,UAAU3qB,KAAKgyG,W,8BAKxB,WACIhyG,KAAK2qB,UAAU3qB,KAAKgyG,SACpBhyG,KAAK+P,OAAOmS,KAAK,IAAI6vF,EAAqB/xG,KAAMA,KAAKgyG,Y,gCAGzD,WAMIhyG,KAAK8M,mBAAmB0U,oB,CA/IH0wF,G,OAkJ7BJ,EAAevxG,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKsxG,GAAgB,KAAyB,KAAoB,KAAyB,KAAsB,KAAyB,KAA2B,KAAyB,YAAa,KAAyBJ,GAAmC,KAAyB,IAAuB,KAC9XI,EAAe3rG,UAAO,KAAyB,CAAEzF,KAAMoxG,EAAgBnxG,UAAW,CAAC,CAAC,qBAAsB2X,UAAW,SAA8B3W,EAAIC,GAK/I,IAAIE,EAL2J,EAALH,IAC1J,KAAmBlC,EAAK,GACxB,KAAmBC,EAAK,GACxB,KAAmB4xG,EAAK,IACjB,EAAL3vG,IAEF,KAAsBG,EAAK,UAA0BF,EAAImxG,SAAWjxG,EAAGE,OACvE,KAAsBF,EAAK,UAA0BF,EAAIoxG,YAAclxG,EAAGE,OAC1E,KAAsBF,EAAK,UAA0BF,EAAIgxG,cAAgB9wG,EAAGE,SAC3Ee,UAAW,CAAC,EAAG,oBAAqBwV,SAAU,GAAIC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,IACrH,KAAsB,KAAMC,EAAIokB,IAChC,KAAmB,WAAYpkB,EAAIorB,SAAW,MAAQ,EAAtD,CAAyD,aAAc,KAAvE,CAA6E,kBAAmB,MAChG,KAAmB,cAAeprB,EAAIowG,QAAtC,CAA+C,eAAgBpwG,EAAIorB,SAAnE,CAA6E,gCAAsD,UAArBprB,EAAI4wG,cAAlH,CAA6I,0BAAkD,mBAAvB5wG,EAAIuwG,kBAC3KhwG,OAAQ,CAAE6qB,SAAU,WAAYjE,cAAe,gBAAiB8sC,MAAO,QAAS1f,SAAU,WAAYh1C,KAAM,OAAQ6kB,GAAI,KAAMwsF,cAAe,gBAAiBrsF,UAAW,CAAC,aAAc,aAAcqC,eAAgB,CAAC,kBAAmB,kBAAmByqF,SAAU,WAAYjB,QAAS,WAAa7vF,QAAS,CAAEpS,OAAQ,SAAU0iG,aAAc,gBAAkB/5F,SAAU,CAAC,kBAAmBpW,SAAU,CAAC,KAA0B,CAACuvG,IAAmC,MAAoCh5F,mBAAoB44F,EAAKrrG,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,0BAA2B,CAAC,QAAS,IAAK,CAAC,EAAG,wBAAyB,CAAC,YAAa,IAAK,CAAC,OAAQ,WAAY,OAAQ,SAAU,EAAG,yBAA0B,sBAAuB,EAAG,KAAM,WAAY,WAAY,UAAW,WAAY,SAAU,SAAU,CAAC,QAAS,IAAK,CAAC,EAAG,oCAAqC,CAAC,iBAAkB,IAAK,CAAC,EAAG,0BAA2B,CAAC,aAAc,GAAI,EAAG,0BAA2B,sBAAuB,EAAG,mBAAoB,oBAAqB,oBAAqB,kBAAmB,sBAAuB,CAAC,EAAG,qBAAsB,sCAAuC,CAAC,EAAG,2BAA4B,EAAG,qBAAsB,CAAC,eAAgB,IAAK,CAAC,EAAG,UAAW,SAAUhG,SAAU,SAAiCqB,EAAIC,GAsB1yC,GAtB0zC,EAALD,IACnzC,OACA,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAkB,SAAU,SAAyDmwB,GAAU,OAAOlwB,EAAIsxG,eAAephF,IAAzH,CAAqI,QAAS,SAAwDA,GAAU,OAAOlwB,EAAIuxG,cAAcrhF,KACzO,OACA,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAiB,EAAG,MAAO,GAC3B,KAAsB,EAAG,MAAO,GAChC,KAAiB,GAAI,MAAO,IAC5B,OACA,OACA,OACA,KAAsB,GAAI,OAAQ,GAAI,IACtC,KAAkB,oBAAqB,WAAwE,OAAOlwB,EAAIwxG,uBAC1H,KAAsB,GAAI,OAAQ,IAClC,KAAc,GAAI,QAClB,OACA,KAAoB,IACpB,OACA,QACO,EAALzxG,EAAQ,CACV,IAAM0xG,EAAM,KAAmB,GACzBC,EAAM,KAAmB,IAC/B,KAAmB,MAAO1xG,EAAI2xG,SAC9B,KAAiB,GACjB,KAAmB,uCAAwCD,EAAIE,cAAgBF,EAAIE,YAAY12F,QAC/F,KAAiB,GACjB,KAAkB,KAAMlb,EAAI2xG,QAA5B,CAAqC,WAAY3xG,EAAIqxG,SAArD,CAA+D,WAAYrxG,EAAIu0C,SAA/E,CAAyF,UAAWv0C,EAAIowG,QAAxG,CAAiH,WAAYpwG,EAAIorB,UACjI,KAAmB,OAAQprB,EAAIT,KAA/B,CAAqC,eAAgBS,EAAIowG,QAAQ//E,WAAjE,CAA6E,aAAcrwB,EAAIukB,UAA/F,CAA0G,kBAAmBvkB,EAAI4mB,gBACjI,KAAiB,GACjB,KAAkB,mBAAoB6qF,EAAtC,CAA2C,oBAAqBzxG,EAAImnB,eAAiBnnB,EAAIorB,SAAzF,CAAmG,qBAAqB,EAAxH,CAA8H,kBAAmB,GAAjJ,CAAqJ,qBAAsB,KAAuB,GAAIukF,MACrMhrG,WAAY,CAAC,IAAkB,KAA2BuS,OAAQ,CAAC,w7FAAy7FtS,cAAe,EAAGwiB,gBAAiB,I,sBAmIliGyqF,E,sDAENA,EAAuClzG,UAAO,SAAwDC,GAAK,OAAO,IAAKA,GAAKizG,IAC5HA,EAAuCv6F,UAAO,KAAwB,CAAExY,KAAM+yG,IAC9EA,EAAuCt6F,UAAO,KAAwB,I,sBAShEu6F,E,sDAENA,EAAqBnzG,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKkzG,IACxFA,EAAqBx6F,UAAO,KAAwB,CAAExY,KAAMgzG,IAC5DA,EAAqBv6F,UAAO,KAAwB,CAAEC,QAAS,CAAC,CACpDq6F,EACA,IACA,IACA,KACDA,EAAwC,O,+mBC5ZpC,SAASE,EAAuBC,EAAS7/C,GAKtD,OAJKA,IACHA,EAAM6/C,EAAQpqG,MAAM,IAGfgT,OAAO67C,OAAO77C,OAAOq3F,iBAAiBD,EAAS,CACpD7/C,IAAK,CACHxyD,MAAOib,OAAO67C,OAAOtE,O,8MCQd,EAAb,mFACI,SAAKx3B,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAeq4B,QAFnD,GAKa,EAAb,YACI,WAAYE,GAAW,M,MAAA,2B,EACnB,K,EAAA,E,EAAA,CAAMA,G,kBAAN,E,iGACKq3E,UAAW,EAChB,EAAKjoE,YAAc,GACnB,EAAKkoE,cAAgB,GAJF,EAD3B,0DAOI,SAAMjoE,GACF9rC,KAAK6rC,YAAYjoC,KAAKkoC,KAR9B,uBAUI,WACI,IAAMD,EAAc7rC,KAAK6rC,YACnByL,EAAMzL,EAAY1nC,OACxB,GAAY,IAARmzC,EACAt3C,KAAKy8B,YAAY34B,eAEhB,CACD,IAAK,IAAI+D,EAAI,EAAGA,EAAIyvC,IAAQt3C,KAAK8zG,SAAUjsG,IAAK,CAC5C,IAAMikC,EAAaD,EAAYhkC,GACzBmsG,EAAe,OAAAC,EAAA,GAAkBj0G,KAAM8rC,OAAYrnC,EAAWoD,GAChE7H,KAAK+zG,eACL/zG,KAAK+zG,cAAcnwG,KAAKowG,GAE5Bh0G,KAAK6C,IAAImxG,GAEbh0G,KAAK6rC,YAAc,QAzB/B,wBA4BI,SAAWqoE,EAAaC,EAAYC,GAChC,IAAKp0G,KAAK8zG,SAAU,CAChB9zG,KAAK8zG,UAAW,EAChB,IAAK,IAAIjsG,EAAI,EAAGA,EAAI7H,KAAK+zG,cAAc5vG,OAAQ0D,IAC3C,GAAIA,IAAMusG,EAAY,CAClB,IAAIJ,EAAeh0G,KAAK+zG,cAAclsG,GACtCmsG,EAAap+F,cACb5V,KAAKwL,OAAOwoG,GAGpBh0G,KAAK+zG,cAAgB,KAEzB/zG,KAAKy8B,YAAY54B,KAAKswG,OAxC9B,CAAoCE,EAAA,G,mRCyDpC,IAAM9C,GAAM,CAAC,KAqDP+C,GAAM,CAAC,UACb,SAASC,GAAqC5yG,EAAIC,GAEhD,GAFgE,EAALD,GACzD,KAAiB,EAAG,MAAO,GACpB,EAALA,EAAQ,CACV,IACM6yG,EAAkB5yG,EAAI6yG,aACtBC,EAAc9yG,EAAIqtB,SAClB0lF,EAAc/yG,EAAIorB,SAClB4nF,EAAchzG,EAAIizG,QACxB,KAAkB,OALFjzG,EAAIq4C,KAKpB,CAAmC,eAAgBu6D,EAAnD,CAAoE,WAAYE,EAAhF,CAA6F,WAAYC,EAAzG,CAAsH,UAAWC,IAErI,SAASE,GAAmDnzG,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC/E,IAAMozG,EAAO,OACb,KAAsB,EAAG,4BAA6B,GACtD,KAAkB,WAAY,SAA0GjjF,GAA8E,OAApE,KAAqBijF,GAAuB,OAAuCC,gBAAgBljF,IAArP,CAAiQ,SAAU,SAAwGA,GAA8E,OAApE,KAAqBijF,GAAuB,OAAuCE,qBAAqBnjF,KACre,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMuzG,EAAS,OACf,KAAkB,OAAQA,EAAOjb,MAAMkb,UAAvC,CAAkD,SAAUD,EAAOjb,MAAMr3E,OAAzE,CAAiF,WAAYsyF,EAAOjb,MAAMjtE,SAA1G,CAAoH,aAA0C,WAA5BkoF,EAAOjb,MAAMmb,WAA/I,CAAwK,eAAgBF,EAAOjb,MAAMob,aAArM,CAAmN,eAAgBH,EAAOjb,MAAMqb,aAAhP,CAA8P,cAAeJ,EAAOjb,MAAMsb,cAE9R,SAASC,GAA2C7zG,EAAIC,GAItD,GAJsE,EAALD,IAC/D,KAAsB,EAAG,MAAO,IAChC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM8zG,EAAY,OAAuBzjG,UACnC0jG,EAAU,OAChB,KAAiB,GACjB,KAA0B,IAAKA,EAAQC,KAAKC,iBAAiBH,EAAU/vF,OAAQ+vF,EAAUj8D,MAAO,IAAKk8D,EAAQC,KAAKE,gBAAgBJ,EAAUj8D,MAAO,MAEvJ,SAASs8D,GAAqCn0G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACjE,IAAMo0G,EAAO,OACb,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGP,GAA4C,EAAG,EAAG,MAAO,IAC9E,KAAsB,EAAG,4BAA6B,IACtD,KAAkB,SAAU,SAA0F1jF,GAA8E,OAApE,KAAqBikF,GAAuB,OAAuCC,aAAalkF,KAChO,OACA,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAM8zG,EAAY7zG,EAAIoQ,UAChBikG,EAAS,OACT5C,EAAM,KAAmB,GAC/B,KAAiB,GACjB,KAAkB,OAA8B,SAAtB4C,EAAOb,YAAyBa,EAAOC,cAAgB,GAA2B,WAAtBD,EAAOb,YAC7F,KAAiB,GACjB,KAAkB,QAASK,EAA3B,CAAsC,cAAeQ,EAAOE,aAAe9C,EAA3E,CAAgF,eAAgB4C,EAAOG,aAAvG,CAAqH,kBAAmBH,EAAOI,kBAEnJ,SAASC,GAAqC30G,EAAIC,IAClD,SAAS20G,GAA4C50G,EAAIC,GAAgB,EAALD,GAChE,KAAiB,EAAG,MAAO,GAE/B,SAAS60G,GAA4C70G,EAAIC,GAIvD,GAJuE,EAALD,IAChE,KAAsB,EAAG,MAAO,GAChC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM80G,EAAO70G,EAAIoQ,UACX0kG,EAAS,KAAqB,GACpC,KAAiB,GACjB,KAA0B,IAAKA,EAAOf,KAAKgB,oBAAoBF,GAAO,MAE1E,SAASG,GAAsCj1G,EAAIC,GAKjD,GALiE,EAALD,IAC1D,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAG40G,GAA6C,EAAG,EAAG,MAAO,GAC/E,KAAkB,EAAGC,GAA6C,EAAG,EAAG,MAAO,GAC/E,QACO,EAAL70G,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAiB,GACjB,KAAkB,OAAQA,EAAOowF,iBACjC,KAAiB,GACjB,KAAkB,UAAWpwF,EAAOhD,MAAMM,WAE9C,SAASszF,GAA0Dl1G,EAAIC,GAIrE,GAJqF,EAALD,IAC9E,KAAsB,EAAG,MAAO,IAChC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMm1G,EAAU,KAAqB,GAAG9kG,UAClC+kG,EAAS,OACf,KAAiB,GACjB,KAAyBA,EAAOpB,KAAKqB,gBAAgBF,EAAQpxF,UAEjE,SAASuxF,GAAsFt1G,EAAIC,IACnG,SAASs1G,GAAwEv1G,EAAIC,GAEnF,GAFmG,EAALD,GAC5F,KAAkB,EAAGs1G,GAAuF,EAAG,EAAG,cAAe,IAC1H,EAALt1G,EAAQ,CACV,IAAMw1G,EAAU,OAAuBnlG,UACjColG,EAAU,KAAqB,GACrC,KAAkB,mBAAoBA,EAAQjB,YAA9C,CAA2D,0BAA2BgB,EAAQ3lG,UAElG,SAAS6lG,GAA0D11G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACtF,IAAM21G,EAAO,OACb,KAAsB,EAAG,MAAO,IAChC,KAAkB,QAAS,WAA4F,KAAqBA,GAAO,IAAMH,EAAUv1G,EAAIoQ,UAAoD,OAAzB,KAAqB,GAAmBulG,SAASJ,KACnP,KAAkB,EAAGD,GAAyE,EAAG,EAAG,cAAe,IACnH,OACF,GAAS,EAALv1G,EAAQ,CACV,IAAMw1G,EAAUv1G,EAAIoQ,UACpB,KAAmB,WAAYmlG,EAAQ3lG,QAAQwb,SAA/C,CAAyD,SAAUmqF,EAAQK,OAA3E,CAAmF,eAAgBL,EAAQ3lG,QAAQwzD,OACnH,KAAkB,WAAYmyC,EAAQM,UACtC,KAAmB,aAAcN,EAAQhxF,WACzC,KAAiB,GACjB,KAAkB,QAASgxF,EAAQK,SAEvC,SAASE,GAAoD/1G,EAAIC,GAK/D,GAL+E,EAALD,IACxE,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGk1G,GAA2D,EAAG,EAAG,MAAO,GAC7F,KAAkB,EAAGQ,GAA2D,EAAG,EAAG,MAAO,IAC7F,QACO,EAAL11G,EAAQ,CACV,IAAMm1G,EAAU,OAAuB9kG,UACjC2lG,EAAS,OACf,KAAiB,GACjB,KAAkB,OAAQA,EAAOtB,iBACjC,KAAiB,GACjB,KAAkB,UAAWS,EAAQl9D,OAEzC,SAASg+D,GAA8Cj2G,EAAIC,GAAgB,EAALD,GAClE,KAAkB,EAAG+1G,GAAqD,EAAG,EAAG,MAAO,GAChF,EAAL/1G,GAEF,KAAkB,QADFC,EAAIoQ,UACe6lG,WAEvC,SAASC,GAAoEn2G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAChG,IAAMo2G,EAAM,OACZ,KAAsB,EAAG,mCAAoC,GAC7D,KAAkB,SAAU,SAAgIjmF,GAA4E,OAAlE,KAAqBimF,GAAqB,OAAsC93E,OAAO/d,KAAK4P,KAClQ,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAkB,OAAQA,EAAOg0B,KAAjC,CAAuC,WAAYh0B,EAAO+G,SAA1D,CAAoE,SAAU/G,EAAOsvF,YAAY3yF,OAAjG,CAAyG,QAASqD,EAAOsvF,YAAY32D,QAEzI,SAASo5D,GAAuDr2G,EAAIC,GAAgB,EAALD,GAC3E,KAAiB,EAAG,MAAO,GAE/B,SAASs2G,GAAuDt2G,EAAIC,GAAgB,EAALD,GAC3E,KAAiB,EAAG,MAAO,GAE/B,SAASu2G,GAAiDv2G,EAAIC,GAM5D,GAN4E,EAALD,IACrE,KAAkB,EAAGq2G,GAAwD,EAAG,EAAG,MAAO,GAC1F,KAAsB,EAAG,MAAO,IAChC,KAAc,GACd,OACA,KAAkB,EAAGC,GAAwD,EAAG,EAAG,MAAO,IACnF,EAALt2G,EAAQ,CACV,IAAMw2G,EAAWv2G,EAAIoQ,UACfomG,EAAOx2G,EAAI+H,MACXssG,EAAS,KAAqB,GACpC,KAAkB,OAAQmC,EAAO,GACjC,KAAiB,GACjB,KAA0B,IAAKnC,EAAON,KAAKC,iBAAiBuC,EAASzyF,OAAQyyF,EAAS3+D,MAAO,IAAKy8D,EAAON,KAAKE,gBAAgBsC,EAAS3+D,MAAO,KAC9I,KAAiB,GACjB,KAAkB,OAAQ4+D,IAASnC,EAAOrzF,OAAOze,OAAS,IAE9D,SAASk0G,GAAmC12G,EAAIC,GAE9C,GAF8D,EAALD,GACvD,KAAkB,EAAGu2G,GAAkD,EAAG,EAAG,cAAe,GACrF,EAALv2G,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAkB,UAAWA,EAAO11F,SAExC,IAAM21F,GAAO,CAAC,uBAAwB,IACtC,SAASC,GAAgD72G,EAAIC,GAI3D,GAJ2E,EAALD,IACpE,KAAsB,EAAG,SAAU,GACnC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM82G,EAAO72G,EAAIoQ,UACXiU,EAAS,OACf,KAAkB,QAASwyF,GAC3B,KAAmB,aAAcxyF,EAAO0vF,KAAKC,iBAAiB6C,EAAqB,MAAfxyF,EAAOg0B,KAAe,KAAOh0B,EAAOg0B,KAAKT,OAC7G,KAAiB,GACjB,KAAyBvzB,EAAO0vF,KAAK+C,kBAAkBD,EAAqB,MAAfxyF,EAAOg0B,KAAe,KAAOh0B,EAAOg0B,KAAKT,QAE1G,SAASm/D,GAAgDh3G,EAAIC,GAI3D,GAJ2E,EAALD,IACpE,KAAsB,EAAG,SAAU,GACnC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMi3G,EAAOh3G,EAAIoQ,UACXsmG,EAAS,OACf,KAAkB,QAASM,GAC3B,KAAiB,GACjB,KAAyBN,EAAO3C,KAAKE,gBAAgB+C,KA6KzD,SAASC,GAA+Bl3G,EAAIC,GAI1C,GAJ0D,EAALD,IACnD,KAAsB,EAAG,QACzB,KAAc,EAAG,GACjB,QACO,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAiB,GACjB,KAAiBA,EAAO6yF,mBACxB,KAAmB,IAEvB,SAASC,GAAiCp3G,EAAIC,GAAgB,EAALD,GACrD,KAAc,GACP,EAALA,GAEF,KAAqC,MADrBC,EAAIo3G,KACuB,SAAW,UAE1D,SAASC,GAA+Ct3G,EAAIC,IAC5D,SAASs3G,GAAiCv3G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC7D,IAAMw3G,EAAM,OACZ,KAAsB,EAAG,OAAQ,GACjC,KAAc,GACd,OACA,KAAsB,EAAG,OAAQ,GACjC,KAAkB,aAAc,WAAyE,KAAqBA,GAAM,IAAMC,EAAWx3G,EAAI+H,MAA8C,OAAxB,OAAsC0vG,MAAMD,EAAW,IAAtO,CAA6O,QAAS,WAAoE,KAAqBD,GAAM,IAAMC,EAAWx3G,EAAI+H,MAA8C,OAAxB,OAAsCymG,YAAYgJ,EAAW,KAC7b,KAAkB,EAAGH,GAAgD,EAAG,EAAG,cAAe,GAC1F,OACF,GAAS,EAALt3G,EAAQ,CACV,IAAMy3G,EAAWx3G,EAAI+H,MACfurG,EAAS,OACT7B,EAAM,KAAmB,GAC/B,KAAiB,GACjB,KAA0B,IAAK+F,EAAWlE,EAAOoE,SAAW,IAAM,IAAK,KACvE,KAAiB,GACjB,KAAmB,SAAUpE,EAAOqE,UAAYrE,EAAOloF,SAAW,UAAY,WAC9E,KAAiB,GACjB,KAAkB,mBAAoBkoF,EAAOsE,cAAgBtE,EAAOuE,yBAA2BpG,EAA/F,CAAoG,0BAA2B6B,EAAOwE,SAASN,KAEnJ,SAASO,GAAsCh4G,EAAIC,IACnD,SAASg4G,GAAwBj4G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACpD,IAAMk4G,EAAM,OACZ,KAAsB,EAAG,KAAM,GAC/B,KAAsB,EAAG,IAAK,GAC9B,KAAkB,QAAS,SAAoD/nF,GAAU,KAAqB+nF,GAAM,IAAMC,EAASl4G,EAAIoQ,UAA4E,OAAlD,OAA+BiuB,OAAO65E,EAAO9zF,IAAY8L,EAAO5E,mBACjO,KAAc,GACd,KAAkB,EAAGysF,GAAuC,EAAG,EAAG,cAAe,GACjF,OACA,OACF,GAAS,EAALh4G,EAAQ,CACV,IAAMm4G,EAASl4G,EAAIoQ,UACbiU,EAAS,OACf,KAAiB,GACjB,KAAmB,SAAU6zF,EAAO9zF,KAAOC,EAAO8zF,SAAlD,CAA4D,WAAYD,EAAO9sF,UAC/E,KAAkB,KAAM8sF,EAAO9zF,IAC/B,KAAmB,WAAY8zF,EAAO9sF,SAAW,UAAOvoB,EAAxD,CAAmE,gBAAkBwhB,EAAO+zF,eAAiBF,EAAO9zF,KAAOC,EAAO8zF,SAAkC,KAAvBD,EAAO9zF,GAAK,SAAzJ,CAA0K,gBAAiB8zF,EAAO9zF,KAAOC,EAAO8zF,SAAhN,CAA0N,gBAAiBD,EAAO9sF,UAClP,KAAiB,GACjB,KAA0B,IAAK8sF,EAAOljD,MAAO,IAC7C,KAAiB,GACjB,KAAkB,mBAAuC,MAAnBkjD,EAAOG,SAAmB,KAAOH,EAAOG,SAASrzG,cAE3F,SAASszG,GAAqDv4G,EAAIC,IAClE,SAASu4G,GAAuCx4G,EAAIC,GAIlD,GAJkE,EAALD,IAC3D,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGu4G,GAAsD,EAAG,EAAG,cAAe,GAChG,QACO,EAALv4G,EAAQ,CACV,IAAMy4G,EAAS,OAAuBpoG,UAChC+kG,EAAS,OACf,KAA8B,YAAaqD,EAAOp0F,KAAO+wF,EAAOgD,SAAW,SAAW,KAAM,IAC5F,KAA8B,KAAM,GAAIK,EAAOp0F,GAAI,UACnD,KAAmB,kBAAmBo0F,EAAOp0F,IAC7C,KAAiB,GACjB,KAAkB,mBAAyC,MAArBo0F,EAAOC,WAAqB,KAAOD,EAAOC,WAAWzzG,cAE/F,SAAS0zG,GAAiC34G,EAAIC,GAE5C,GAF4D,EAALD,GACrD,KAAkB,EAAGw4G,GAAwC,EAAG,EAAG,MAAO,GACnE,EAALx4G,EAAQ,CACV,IAAMy4G,EAASx4G,EAAIoQ,UACbsmG,EAAS,OACf,KAAkB,QAASA,EAAO0B,eAAiBI,EAAOp0F,KAAOsyF,EAAOyB,WAE5E,SAASQ,GAAgC54G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC5D,IAAM64G,EAAM,OACZ,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAqE,KAAqBA,GAAM,IAAMC,EAAS,OAAwB,OAAOA,EAAOC,WAAWD,EAAOE,YAClM,KAAiB,EAAG,OAAQ,IAC5B,KAAsB,EAAG,OAAQ,IACjC,KAAc,EAAG,IACjB,OACA,OACF,GAAS,EAALh5G,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAmB,SAAUA,EAAO20F,YAApC,CAAiD,SAAU30F,EAAO40F,YAAlE,CAA+E,WAAY50F,EAAO+G,UAClG,KAAkB,WAAY/G,EAAO+G,WAEzC,SAAS8tF,GAAgCn5G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC5D,IAAMo5G,EAAO,OACb,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAqE,KAAqBA,GAAO,IAAMC,EAAU,OAAwB,OAAOA,EAAQN,YAAYM,EAAQL,YACvM,KAAiB,EAAG,OAAQ,IAC5B,KAAsB,EAAG,OAAQ,IACjC,KAAc,EAAG,IACjB,OACA,OACF,GAAS,EAALh5G,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAmB,SAAUA,EAAOsC,YAApC,CAAiD,SAAUtC,EAAOuC,YAAlE,CAA+E,WAAYvC,EAAOtrF,UAClG,KAAkB,WAAYsrF,EAAOtrF,WAEzC,SAASiuF,GAAgCt5G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC5D,IAAMu5G,EAAO,OACb,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAqE,KAAqBA,GAAO,IAAMC,EAAU,OAAwB,OAAOA,EAAQC,aAAaD,EAAQE,cACxM,KAAiB,EAAG,OAAQ,IAC5B,KAAsB,EAAG,OAAQ,IACjC,KAAc,EAAG,IACjB,OACA,OACF,GAAS,EAAL15G,EAAQ,CACV,IAAMuzG,EAAS,OACf,KAAmB,SAAUA,EAAO0F,YAApC,CAAiD,SAAU1F,EAAO2F,YAAlE,CAA+E,WAAY3F,EAAOloF,UAClG,KAAkB,WAAYkoF,EAAOloF,WAEzC,SAASsuF,GAAiC35G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC7D,IAAM21G,EAAO,OACb,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAsE,KAAqBA,GAAO,IAAMiE,EAAU,OAAwB,OAAOA,EAAQH,cAAcG,EAAQF,cAC1M,KAAiB,EAAG,OAAQ,IAC5B,KAAsB,EAAG,OAAQ,IACjC,KAAc,EAAG,IACjB,OACA,OACF,GAAS,EAAL15G,EAAQ,CACV,IAAM+0G,EAAS,OACf,KAAmB,SAAUA,EAAOkE,YAApC,CAAiD,SAAUlE,EAAOmE,YAAlE,CAA+E,WAAYnE,EAAO1pF,UAClG,KAAkB,WAAY0pF,EAAO1pF,WAEzC,SAASwuF,GAA8B75G,EAAIC,GAAgB,EAALD,IAClD,KAAsB,EAAG,MAAO,GAChC,KAAc,EAAG,KACjB,QAEJ,SAAS85G,GAAuC95G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACnE,IAAMo0G,EAAO,OACb,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAA4E,KAAqBA,GAAO,IAAM2F,EAAU,KAAqB,GAAI,OAAOA,EAAQC,aAAaD,EAAQE,cAChN,KAAiB,EAAG,OAAQ,IAC5B,KAAsB,EAAG,OAAQ,IACjC,KAAc,EAAG,IACjB,OACA,OACF,GAAS,EAALj6G,EAAQ,CACV,IAAM+zG,EAAU,KAAqB,GACrC,KAAmB,SAAUA,EAAQkF,YAArC,CAAkD,SAAUlF,EAAQmF,YAApE,CAAiF,WAAYnF,EAAQ1oF,UACrG,KAAkB,WAAY0oF,EAAQ1oF,WAE1C,SAAS6uF,GAAuCl6G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACnE,IAAMm6G,EAAO,OACb,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAA4E,KAAqBA,GAAO,IAAMC,EAAU,KAAqB,GAAI,OAAOA,EAAQJ,cAAcI,EAAQH,cACjN,KAAiB,EAAG,OAAQ,IAC5B,KAAsB,EAAG,OAAQ,IACjC,KAAc,EAAG,IACjB,OACA,OACF,GAAS,EAALj6G,EAAQ,CACV,IAAMq6G,EAAU,KAAqB,GACrC,KAAmB,SAAUA,EAAQpB,YAArC,CAAkD,SAAUoB,EAAQnB,YAApE,CAAiF,WAAYmB,EAAQhvF,UACrG,KAAkB,WAAYgvF,EAAQhvF,WAE1C,SAASivF,GAA8Bt6G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC1D,IAAMu6G,EAAO,OACb,KAAsB,EAAG,MAAO,IAChC,KAAkB,EAAGT,GAAwC,EAAG,EAAG,SAAU,GAC7E,KAAsB,EAAG,QAAS,IAClC,KAAkB,SAAU,SAA+D3pF,GAA8E,OAApE,KAAqBoqF,GAAuB,OAAuCC,aAAarqF,EAAOtF,OAAOjrB,QAAnN,CAA8N,kBAAmB,SAAwEuwB,GAAU,KAAqBoqF,GAAO,IAAME,EAAU,OAAkE,OAA1CA,EAAQT,aAAaS,EAAQR,YAAoB9pF,EAAO5E,kBAA/b,CAAod,oBAAqB,SAA0E4E,GAAU,KAAqBoqF,GAAO,IAAMG,EAAU,OAAmE,OAA3CA,EAAQV,cAAcU,EAAQT,YAAoB9pF,EAAO5E,mBAC1rB,OACA,KAAkB,EAAG2uF,GAAwC,EAAG,EAAG,SAAU,GAC7E,OACF,GAAS,EAALl6G,EAAQ,CACV,IAAM26G,EAAS,OACf,KAAiB,GACjB,KAAkB,OAAQA,EAAOC,UACjC,KAAiB,GACjB,KAAmB,kBAAmBD,EAAO1B,YAA7C,CAA0D,kBAAmB0B,EAAOzB,aACpF,KAAkB,QAASyB,EAAOE,aAA6B,MAAhBF,EAAOriB,MAAgB,KAAOqiB,EAAOriB,MAAM96C,QAA1F,CAAmG,WAAYm9D,EAAOG,eAAtH,CAAsI,WAAYH,EAAOtvF,UACzJ,KAAiB,GACjB,KAAkB,OAAQsvF,EAAOC,WAErC,SAASG,GAA8B/6G,EAAIC,GAAgB,EAALD,GAClD,KAAiB,EAAG,MAAO,GAE/B,SAASg7G,GAA6Ch7G,EAAIC,GAAgB,EAALD,IACjE,KAA+B,GAC/B,KAAc,EAAG,IACjB,QAEJ,SAASi7G,GAA4Cj7G,EAAIC,GAAgB,EAALD,GAChE,KAAc,EAAG,IAErB,SAASk7G,GAA8Bl7G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC1D,IAAMm7G,EAAO,OACb,KAAsB,EAAG,MAAO,IAChC,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAuI,OAApE,KAAqBA,GAAuB,OAAuCC,mBACjL,KAAkB,EAAGJ,GAA8C,EAAG,EAAG,eAAgB,IACzF,KAAkB,EAAGC,GAA6C,EAAG,EAAG,cAAe,KAAM,GAAI,MACjG,OACA,OACF,GAAS,EAALj7G,EAAQ,CACV,IAAMq7G,EAAO,KAAmB,GAC1BjG,EAAS,OACf,KAAiB,GACjB,KAAmB,SAAUA,EAAO6D,YAApC,CAAiD,SAAU7D,EAAO8D,YAAlE,CAA+E,WAAY9D,EAAO/pF,UAClG,KAAkB,WAAY+pF,EAAO/pF,UACrC,KAAiB,GACjB,KAAkB,QAAyB,MAAhB+pF,EAAO9c,MAAgB,KAAO8c,EAAO9c,MAAMvoD,OAAS,GAA/E,CAAmF,WAAYsrE,IAEnG,SAASC,GAA2Ct7G,EAAIC,GAItD,GAJsE,EAALD,IAC/D,KAAsB,EAAG,QACzB,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMu7G,EAAU,OAAuBlrG,UACjC0kG,EAAS,OACf,KAAkBA,EAAOyG,gBACzB,KAAiB,GACjB,KAAyBD,IAE7B,SAASE,GAAkDz7G,EAAIC,GAE7D,GAF6E,EAALD,GACtE,KAAc,GACP,EAALA,EAAQ,CACV,IAAMu7G,EAAU,OAAuBlrG,UACvC,KAAyBkrG,IAE7B,SAASG,GAAoC17G,EAAIC,GAG/C,GAH+D,EAALD,IACxD,KAAkB,EAAGs7G,GAA4C,EAAG,EAAG,OAAQ,GAC/E,KAAkB,EAAGG,GAAmD,EAAG,EAAG,cAAe,KAAM,EAAG,OAC/F,EAALz7G,EAAQ,CACV,IAAM27G,EAAW17G,EAAIyV,IACfi8F,EAAM,KAAmB,GAC/B,KAAkB,OAAQgK,EAA1B,CAAoC,WAAYhK,IAEpD,SAASiK,GAA0C57G,EAAIC,GAErD,GAFqE,EAALD,GAC9D,KAAiB,EAAG,gBAAiB,GAC9B,EAALA,EAAQ,CACV,IACM67G,EAAU57G,EAAI67G,KAEpB,KAAkB,UAAUC,EADP97G,EAAI61C,WAFP71C,EAAIg7B,QAGtB,CAAqD,OAAQ4gF,IAEjE,SAASG,GAAwDh8G,EAAIC,IACrE,IAAMg8G,GAAO,SAAU78D,EAAIvU,EAAIC,GAAM,MAAO,CAAE7P,OAAQmkB,EAAI08D,KAAMjxE,EAAIiL,UAAWhL,IAC/E,SAASoxE,GAA0Cl8G,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACtE,IAAMm8G,EAAO,OACb,KAAsB,EAAG,SAAU,GACnC,KAAkB,aAAc,WAAoF,KAAqBA,GAAO,IAAMC,EAASn8G,EAAI+H,MAA8C,OAAxB,OAAsCq0G,WAAWD,IAA1O,CAAsP,QAAS,WAA+E,KAAqBD,GAAO,IAAMG,EAAYr8G,EAAIoQ,UAAmD,OAAxB,OAAuCiuB,OAAOg+E,KACzc,KAAkB,EAAGN,GAAyD,EAAG,EAAG,cAAe,GACnG,OACF,GAAS,EAALh8G,EAAQ,CACV,IAAMs8G,EAAYr8G,EAAIoQ,UAChB+rG,EAASn8G,EAAI+H,MACburG,EAAS,OACT7B,EAAM,KAAmB,GAC/B,KAAmB,SAAU0K,IAAW7I,EAAOgJ,WAC/C,KAAkB,KAAMhJ,EAAOlvF,GAAK,IAAM+3F,GAC1C,KAAiB,GACjB,KAAkB,mBAAoB7I,EAAOiJ,gBAAkB9K,EAA/D,CAAoE,0BAA2B,KAAuB,EAAGuK,GAAMK,EAAW/I,EAAOuI,KAAMvI,EAAOz9D,aAElK,SAAS2mE,GAAU78G,GACf,OAAOiuC,SAAS,GAAD,OAAIjuC,GAAS,IAMhC,SAAS,GAASA,GACd,OAAQA,QAAD,UAA6CA,GAAU,GAQlE,SAAS88G,GAAgB98G,EAAOuhD,GAAY,IAAPpkC,EAAO,uDAAD,EACvC,OAAOH,KAAKukC,IAAIvkC,KAAKG,IAAInd,EAAOuhD,GAAMpkC,GAa1C,SAAS4/F,GAAS/8G,GACd,OAAQ05C,MAAMmjE,GAAU78G,IAM5B,SAASg9G,GAAUh9G,GACf,MAAwB,iBAAVA,GAAsBi9G,SAASj9G,IAAUgd,KAAKs7B,MAAMt4C,KAAWA,EAMjF,SAASk9G,GAAUl9G,GACf,OAAOA,QAMX,SAASm9G,GAAUn9G,GACf,OAAI+8G,GAAS/8G,GACF,WAAIA,GAAQiI,OAAO,GAGnB,GAef,SAASm1G,GAAatzG,EAASwc,GAC3B,OAAOxc,GAAWA,EAAQwc,WAAaxc,EAAQwc,UAAUtF,OACrDlX,EAAQwc,UAAUtF,MAAM,OAAOtZ,QAAQ4e,IAAc,EAEtC,oBAAZ+2F,SAA4BA,QAAQlsF,UAAU6hB,UAEhDqqE,QAAQlsF,UAAUuY,UAEnB2zE,QAAQlsF,UAAUuY,QAA8B2zE,QAAQlsF,UAAaiiB,mBAAqBiqE,QAAQlsF,UAAUmsF,uBAEhHD,QAAQlsF,UAAU6hB,QAAU,SAAU3vB,GAElC,IAAI6tB,EAAKzyC,KACT,IAAK2qC,SAAS6J,gBAAgB5nB,SAAS6lB,GACnC,OAAO,KAEX,EAAG,CACC,GAAIA,EAAGxH,QAAQrmB,GACX,OAAO6tB,EAEXA,EAAKA,EAAG7J,eAAiB6J,EAAG/xB,iBAChB,OAAP+xB,GAA+B,IAAhBA,EAAG9qC,UAC3B,OAAO,O,sBA+dTm3G,E,4FAQF,WAAmB,MAAO,CAAEC,SAAUD,O,UAE1CA,EAAmBv+G,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKs+G,IACpFA,EAAmB5lG,UAAO,KAAwB,CAAExY,KAAMo+G,IAC1DA,EAAmB3lG,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,uBAqIzD4lG,E,4FAQF,WAAmB,MAAO,CAAED,SAAUC,O,UAE1CA,EAAez+G,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKw+G,IAC5EA,EAAe9lG,UAAO,KAAwB,CAAExY,KAAMs+G,IACtDA,EAAe7lG,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,uBAWrD6lG,E,sDAENA,EAAe1+G,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKy+G,IAC5EA,EAAex+G,UAAO,KAAyB,CAAEC,KAAMu+G,EAAgBt+G,UAAW,CAAC,CAAC,GAAI,iBAAkB,KAAM4X,SAAU,EAAGC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,GACvL,KAAmB,OAAO,EAA1B,CAAgC,SAAUC,EAAIka,OAA9C,CAAsD,WAAYla,EAAIorB,SAAtE,CAAgF,QAASprB,EAAIizG,Y,KAe/FqK,GAA8B,CAChC38G,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,G,kBAQLy1F,E,8BAKF,WAAYC,EAAQC,GAAG,oBACnBr/G,KAAKo/G,OAASA,EACdp/G,KAAKq/G,IAAMA,EAIXr/G,KAAKgtB,UAAW,EAIhBhtB,KAAKs/G,cAAe,EAIpBt/G,KAAKu/G,gBAAiB,EACtBv/G,KAAKw/G,SAAW,SAACpN,KACjBpyG,KAAKy/G,UAAY,c,oBAMrB,SAAYC,GACR1/G,KAAKo/G,OAAOvK,QAAU6K,EACjBA,GACD1/G,KAAKy/G,c,2BAOb,SAAc3tF,GAEV,IAAM6tF,EAAmB7tF,EAAOtF,OAAOwlF,QAAUhyG,KAAKs/G,aAAet/G,KAAKu/G,eAC1Ev/G,KAAKw/G,SAASG,GACd3/G,KAAKy/G,YACLz/G,KAAK4/G,WAAWD,K,8BAMpB,SAAiB3wG,GAAMhP,KAAKw/G,SAAWxwG,I,+BAKvC,SAAkBA,GAAMhP,KAAKy/G,UAAYzwG,I,8BAKzC,SAAiB+d,GACb/sB,KAAKgtB,SAAWD,EAChB/sB,KAAKo/G,OAAOpyF,SAAWD,I,wBAM3B,SAAWxrB,GACPvB,KAAKgyG,QAAUzwG,IAAUvB,KAAKs/G,aAC9Bt/G,KAAKo/G,OAAOtjG,OAAS9b,KAAKgyG,QAE1BhyG,KAAKq/G,IAAIroG,mB,UAGjBmoG,EAAY5+G,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK2+G,GAAa,KAAyB,IAAiB,KAAyB,OACtJA,EAAY1+G,UAAO,KAAyB,CAAEC,KAAMy+G,EAAax+G,UAAW,CAAC,CAAC,GAAI,YAAa,GAAI,OAAQ,aAAcoC,UAAW,CAAC,eAAgB,OAAQwV,SAAU,EAAGC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,GACjO,KAAkB,SAAU,SAA+CmwB,GAAU,OAAOlwB,EAAIi+G,cAAc/tF,IAA9G,CAA0H,QAAS,WAAkD,OAAOlwB,EAAIizG,SAAU,GAA1M,CAAmN,OAAQ,WAAiD,OAAOjzG,EAAIizG,SAAU,IAC1R,EAALlzG,GACF,KAAsB,UAAWC,EAAIowG,QAArC,CAA8C,WAAYpwG,EAAIorB,WAC7D7qB,OAAQ,CAAE6qB,SAAU,WAAYsyF,aAAc,eAAgBC,eAAgB,kBAAoBj9G,SAAU,CAAC,KAA0B,CAAC48G,Q,KAsC3IY,GAA2B,CAC7Bv9G,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,GAGPq2F,GAAW,E,kBAOTC,E,8BACF,iCACIhgH,KAAKigH,QAAU,IAAItyG,IACnB3N,KAAKkgH,OAAS,KASdlgH,KAAKmB,KAAL,oBAAyB4+G,MACzB//G,KAAKw/G,SAAW,SAACpN,KACjBpyG,KAAKy/G,UAAY,c,qBAKrB,WAAiB,OAAOz/G,KAAKmgH,W,IAK7B,SAAapzF,GAAc/sB,KAAKogH,iBAAiBrzF,K,2BAKjD,SAAcszF,GACVrgH,KAAK4/G,WAAWS,EAAM9+G,OACtBvB,KAAKw/G,SAASa,EAAM9+G,S,gCAKxB,WAAuBvB,KAAKsgH,uB,sBAK5B,SAASD,GAASrgH,KAAKigH,QAAQp9G,IAAIw9G,K,8BAKnC,SAAiBrxG,GAAMhP,KAAKw/G,SAAWxwG,I,+BAKvC,SAAkBA,GAAMhP,KAAKy/G,UAAYzwG,I,8BAKzC,SAAiB+d,GACb/sB,KAAKmgH,UAAYpzF,EACjB/sB,KAAKugH,0B,wBAMT,SAAWF,GAASrgH,KAAKigH,QAAQ1tG,OAAO8tG,K,wBAKxC,SAAW9+G,GACPvB,KAAKkgH,OAAS3+G,EACdvB,KAAKsgH,uB,gCAKT,WAAkB,WAAKtgH,KAAKigH,QAAQ5sG,QAAQ,SAACgtG,GAAD,OAAWA,EAAMG,YAAY,EAAKN,Y,mCAI9E,WAA0BlgH,KAAKigH,QAAQ5sG,QAAQ,SAACgtG,GAAD,OAAWA,EAAMI,uB,UAEpET,EAAcz/G,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKw/G,IAC1EA,EAAcv/G,UAAO,KAAyB,CAAEC,KAAMs/G,EAAer/G,UAAW,CAAC,CAAC,GAAI,gBAAiB,KAAMoC,UAAW,CAAC,OAAQ,cAAeZ,OAAQ,CAAEhB,KAAM,QAAUmB,SAAU,CAAC,KAA0B,CAACw9G,Q,uBA0J1MY,E,4FAQF,WAAmB,MAAO,CAAE3B,SAAU2B,O,UAE1CA,EAAiBngH,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKkgH,IAChFA,EAAiBxnG,UAAO,KAAwB,CAAExY,KAAMggH,IACxDA,EAAiBvnG,UAAO,KAAwB,I,uBA2W1CwnG,E,4FAQF,WAAmB,MAAO,CAAE5B,SAAU4B,O,UAE1CA,EAAkBpgH,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKmgH,IAClFA,EAAkBznG,UAAO,KAAwB,CAAExY,KAAMigH,IACzDA,EAAkBxnG,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,uBA6CxDwnG,E,4FAQF,WAAmB,MAAO,CAAE7B,SAAU6B,O,UAE1CA,EAAkBrgH,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKogH,IAClFA,EAAkB1nG,UAAO,KAAwB,CAAExY,KAAMkgH,IACzDA,EAAkBznG,UAAO,KAAwB,I,KA0B3C,G,WAqBF,WAAYqgC,EAAMv2B,EAAO6uB,GAAG,oBACxB9xC,KAAKw5C,KAAO+kE,GAAU/kE,GAAQA,EAAO,KACrCx5C,KAAKijB,MAAQs7F,GAAUt7F,GAASA,EAAQ,KACxCjjB,KAAK8xC,IAAMysE,GAAUzsE,GAAOA,EAAM,K,0CAOtC,SAAO+uE,GACH,OAAOA,GAAS7gH,KAAKw5C,OAASqnE,EAAMrnE,MAAQx5C,KAAKijB,QAAU49F,EAAM59F,OAASjjB,KAAK8xC,MAAQ+uE,EAAM/uE,M,oBAOjG,SAAO+uE,GACH,QAAKA,IAGD7gH,KAAKw5C,OAASqnE,EAAMrnE,KAChBx5C,KAAKijB,QAAU49F,EAAM59F,MACdjjB,KAAK8xC,MAAQ+uE,EAAM/uE,KAAc9xC,KAAK8xC,IAAM+uE,EAAM/uE,IAGlD9xC,KAAKijB,MAAQ49F,EAAM59F,MAIvBjjB,KAAKw5C,KAAOqnE,EAAMrnE,Q,mBAQjC,SAAMqnE,GACF,QAAKA,IAGD7gH,KAAKw5C,OAASqnE,EAAMrnE,KAChBx5C,KAAKijB,QAAU49F,EAAM59F,MACdjjB,KAAK8xC,MAAQ+uE,EAAM/uE,KAAc9xC,KAAK8xC,IAAM+uE,EAAM/uE,IAGlD9xC,KAAKijB,MAAQ49F,EAAM59F,MAIvBjjB,KAAKw5C,KAAOqnE,EAAMrnE,S,mBA/DjC,SAAYS,GACR,OAAIA,aAAgB6mE,EACT7mE,EAEJA,EAAO,IAAI6mE,EAAQ7mE,EAAKT,KAAMS,EAAKh3B,MAAOg3B,EAAKnI,KAAO,S,GAwErE,SAASivE,GAAWC,GAChB,OAAO,IAAI,GAAQA,EAAO9mE,cAAe8mE,EAAO7mE,WAAa,EAAG6mE,EAAO5mE,WAM3E,SAAS6mE,GAAShnE,GAEd,IAAM+mE,EAAS,IAAItmE,KAAKT,EAAKT,KAAMS,EAAKh3B,MAAQ,EAAGg3B,EAAKnI,IAAK,IAK7D,OAHKmJ,MAAM+lE,EAAOE,YACdF,EAAOG,YAAYlnE,EAAKT,MAErBwnE,EAKX,SAASI,KACL,OAAO,IAAI,G,sBASTC,E,sDAENA,EAAY9gH,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK6gH,IACtEA,EAAYz8G,WAAQ,KAA0B,CAAEC,MAAOw8G,EAAav8G,QAAS,WAAc,OAAOs8G,MAAsCx6F,WAAY,SACjIy6F,EAAYC,gBAAkB,YAAiB,CAAEx8G,QAASs8G,GAAiCv8G,MAAOw8G,EAAaz6F,WAAY,S,uBAKxI26F,E,4IAIF,WAAmB,OAAO,I,uBAI1B,WAAc,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,M,8BAIzD,WAAqB,OAAO,I,qBAO5B,SAAQtnE,GAA8B,IAAxBunE,EAAwB,uDAAf,IAAK97F,EAAU,uDAAD,EAE7Bs7F,EAASC,GAAShnE,GACtB,OAAQunE,GACJ,IAAK,IACD,OAAO,IAAI,GAAQvnE,EAAKT,KAAO9zB,EAAQ,EAAG,GAC9C,IAAK,IACDs7F,EAAS,IAAItmE,KAAKT,EAAKT,KAAMS,EAAKh3B,MAAQyC,EAAS,EAAG,EAAG,IACzD,MACJ,IAAK,IACDs7F,EAAOS,QAAQT,EAAO5mE,UAAY10B,GAClC,MACJ,QACI,OAAOu0B,EAEf,OAAO8mE,GAAWC,K,qBAQtB,SAAQ/mE,GAA8B,IAAxBunE,EAAwB,uDAAf,IAAK97F,EAAU,uDAAD,EAAK,OAAO1lB,KAAK0hH,QAAQznE,EAAMunE,GAAS97F,K,wBAK7E,SAAWu0B,GAEP,IAEInI,EAFSmvE,GAAShnE,GAEL0nE,SAEjB,OAAe,IAAR7vE,EAAY,EAAIA,I,2BAO3B,SAAcnsB,EAAMi8F,GAEO,IAAnBA,IACAA,EAAiB,GAGrB,IAIMZ,EAASC,GAFJt7F,GAFY,GAAQi8F,GAAkB,IAKjDZ,EAAOS,QAAQT,EAAO5mE,UAAY,GAAK4mE,EAAOW,UAAY,IAG1D,IAAM95C,EAAOm5C,EAAOE,UAGpB,OAFAF,EAAOa,SAAS,GAChBb,EAAOS,QAAQ,GACRljG,KAAKs7B,MAAMt7B,KAAK06B,OAAO4uB,EAAOm5C,EAAOE,WAAa,OAAY,GAAK,I,sBAK9E,WAAa,OAAOH,GAAW,IAAIrmE,Q,qBAKnC,SAAQT,GACJ,KAAKA,GAASskE,GAAUtkE,EAAKT,OAAU+kE,GAAUtkE,EAAKh3B,QAAWs7F,GAAUtkE,EAAKnI,MAC5E,OAAO,EAGX,GAAkB,IAAdmI,EAAKT,KACL,OAAO,EAGX,IAAMwnE,EAASC,GAAShnE,GACxB,OAAQgB,MAAM+lE,EAAOE,YAAcF,EAAO9mE,gBAAkBD,EAAKT,MAAQwnE,EAAO7mE,WAAa,IAAMF,EAAKh3B,OACpG+9F,EAAO5mE,YAAcH,EAAKnI,Q,CAlGH,I,OAqGnCyvE,EAAqBhhH,UAAO,SAAsCC,GAAK,OAAOshH,GAAkCthH,GAAK+gH,IACrHA,EAAqB38G,WAAQ,KAA0B,CAAEC,MAAO08G,EAAsBz8G,QAASy8G,EAAqBhhH,Y,KAC9GuhH,GAAkD,KAA6B,IAcrF,SAASC,GAAcp9C,EAAM9gE,GACzB,OAeJ,SAAwB8gE,EAAM9gE,GAC1B,OAAS8gE,IAAS9gE,KAAY8gE,KAAU9gE,GAAQ8gE,EAAKq9C,OAAOn+G,GAhBpDo+G,CAAet9C,EAAM9gE,GAOjC,SAASq+G,GAAev9C,EAAM9gE,GAC1B,SAAQ8gE,IAAS9gE,GAAgB8gE,GAAS9gE,GAAc8gE,EAAKnrB,OAAS31C,EAAK21C,MAAQmrB,EAAK1hD,QAAUpf,EAAKof,OA0B3G,SAASk/F,GAAiBloE,EAAMmoE,EAASC,GACrC,OAAIpoE,GAAQmoE,GAAWnoE,EAAKyK,OAAO09D,GACxBA,EAEPnoE,GAAQooE,GAAWpoE,EAAK0K,MAAM09D,GACvBA,EAEJpoE,EAOX,SAASqoE,GAAiBroE,EAAM5xC,GAC5B,IAAQ+5G,EAA6C/5G,EAA7C+5G,QAASC,EAAoCh6G,EAApCg6G,QAASr1F,EAA2B3kB,EAA3B2kB,SAAUu1F,EAAiBl6G,EAAjBk6G,aAEpC,SAAU9D,GAAUxkE,IAChBjtB,GACCu1F,GAAgBA,EAAatoE,EAAM,CAAET,KAAMS,EAAKT,KAAMv2B,MAAOg3B,EAAKh3B,SAClEm/F,GAAWnoE,EAAKyK,OAAO09D,IACvBC,GAAWpoE,EAAK0K,MAAM09D,IAiM/B,SAASG,GAAiBt+F,EAAU+1B,EAAM2nE,GAEtC,IAAMa,EAAcv+F,EAASw+F,iBAEvBC,EAAiB,IAAI,GAAQ1oE,EAAKT,KAAMS,EAAKh3B,MAAO,GAEpD2/F,EAAY1+F,EAAS2+F,WAAWF,GAAkBF,EACxD,OAAOv+F,EAAS4+F,QAAQH,EAAgB,KAAMF,EAAcG,EAAYhB,GAAkBa,GAW9F,SAASM,GAA2B59D,GAChC,OAAO,IAAI,GAAyBA,G,sBAgBlC69D,E,6FAQF,SAAe/oE,GAAQ,gBAAUA,EAAKnI,O,6BAQtC,SAAgBmxE,GAAc,gBAAUA,K,6BAQxC,SAAgBzpE,GAAQ,gBAAUA,O,UAEtCwpE,EAAkBziH,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKwiH,IAClFA,EAAkBp+G,WAAQ,KAA0B,CAAEC,MAAOm+G,EAAmBl+G,QAAS,SAAmCtE,GAKtH,OAL6IA,EACvI,IAAIA,EAGJuiH,GAA2B,KAAgB,OACpCn8F,WAAY,SACZo8F,EAAkB1B,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAuC,OAAOi+G,GAA2B,aAAO,OAAgBl+G,MAAOm+G,EAAmBp8F,WAAY,S,uBAKnNs8F,E,YAIF,WAAYC,GAAO,2BACf,cACKA,QAAUA,EAEf,IAAMC,EAA2B,YAAkBD,EAAS,IAAUE,WAAY,IAAiBC,OAJpF,OAKf,EAAKC,eAAiBH,EAAyB35G,IAAI,SAACqoC,EAAKnoC,GAAN,OAAgBy5G,GAA0Bz5G,EAAQ,GAAK,KAC1G,EAAK65G,aAAe,YAAoBL,EAAS,IAAUE,WAAY,IAAiBI,aACxF,EAAKC,YAAc,YAAoBP,EAAS,IAAUE,WAAY,IAAiBM,MAPxE,E,wEAanB,SAAoBxhE,GAAW,OAAOniD,KAAKujH,eAAephE,EAAU,K,+BAKpE,SAAkBl/B,GAAS,OAAOjjB,KAAKwjH,aAAavgG,EAAQ,K,8BAK5D,SAAiBA,GAAS,OAAOjjB,KAAK0jH,YAAYzgG,EAAQ,K,6BAK1D,SAAgBg3B,GAEZ,IAAM+mE,EAAS,IAAItmE,KAAKT,EAAKT,KAAMS,EAAKh3B,MAAQ,EAAGg3B,EAAKnI,KACxD,OAAO,YAAWkvE,EAAQ,WAAYhhH,KAAKmjH,a,CAnCZ,I,OAsCvCD,EAAyB3iH,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAK0iH,GAA0B,KAAgB,OAC1IA,EAAyBt+G,WAAQ,KAA0B,CAAEC,MAAOq+G,EAA0Bp+G,QAASo+G,EAAyB3iH,Y,uBAgB1HqjH,E,8BAKF,WAAYC,EAAWC,GAAK,oBACxB9jH,KAAK6jH,UAAYA,EACjB7jH,KAAK8jH,MAAQA,EACb9jH,KAAK+jH,QAAU,IAAItgH,EAAA,EACnBzD,KAAKgkH,SAAW,IAAIvgH,EAAA,EACpBzD,KAAKkjC,OAAS,CACVlW,UAAU,EACVkpF,cAAe,EACf0L,eAAgB,EAChBqC,cAAc,EACdrhG,OAAQ,GACRwyF,WAAY,SACZ8O,YAAa,UACb7O,cAAc,EACdC,cAAc,EACdC,YAAa,CAAE32D,MAAO,GAAIh8B,OAAQ,IAClCuhG,aAAc,O,mBAMtB,WAAe,OAAOnkH,KAAK+jH,QAAQ//G,KAAK,OAAAmR,EAAA,GAAO,SAAA8kF,GAAK,OAAIA,EAAMr3E,OAAOze,OAAS,O,mBAI9E,WAAgB,OAAOnE,KAAKgkH,SAAShgH,KAAK,OAAAmR,EAAA,GAAO,SAAA8kC,GAAI,OAAa,OAATA,O,2BAKzD,SAAoBmqE,GACZpkH,KAAKkjC,OAAOkhF,kBAAoBA,GAChCpkH,KAAKqkH,WAAW,CAAED,sB,oBAO1B,SAAap3F,GACLhtB,KAAKkjC,OAAOlW,WAAaA,GACzBhtB,KAAKqkH,WAAW,CAAEr3F,e,yBAO1B,SAAkBkpF,GAEVqI,GADJrI,EAAgBkI,GAAUlI,KACMA,EAAgB,GAAKl2G,KAAKkjC,OAAOgzE,gBAAkBA,GAC/El2G,KAAKqkH,WAAW,CAAEnO,oB,0BAO1B,SAAmB0L,GAEXrD,GADJqD,EAAiBxD,GAAUwD,KACMA,GAAkB,GAAK5hH,KAAKkjC,OAAO0+E,iBAAmBA,GACnF5hH,KAAKqkH,WAAW,CAAEzC,qB,wBAO1B,SAAiBqC,GACTjkH,KAAKkjC,OAAO+gF,eAAiBA,GAAiBjkH,KAAKkjC,OAAOlW,UAC1DhtB,KAAKqkH,WAAW,CAAEJ,mB,mBAO1B,SAAYhqE,GAER,IAAMooE,EAAUriH,KAAKskH,YAAYrqE,EAAM,MACnC8nE,GAAc/hH,KAAKkjC,OAAOm/E,QAASA,IACnCriH,KAAKqkH,WAAW,CAAEhC,c,wBAO1B,SAAiBE,GACTviH,KAAKkjC,OAAOq/E,eAAiBA,GAC7BviH,KAAKqkH,WAAW,CAAE9B,mB,mBAO1B,SAAYtoE,GAER,IAAMmoE,EAAUpiH,KAAKskH,YAAYrqE,EAAM,MACnC8nE,GAAc/hH,KAAKkjC,OAAOk/E,QAASA,IACnCpiH,KAAKqkH,WAAW,CAAEjC,c,sBAO1B,SAAehN,GACPp1G,KAAKkjC,OAAOkyE,aAAeA,GAC3Bp1G,KAAKqkH,WAAW,CAAEjP,iB,uBAO1B,SAAgB8O,GACRlkH,KAAKkjC,OAAOghF,cAAgBA,GAC5BlkH,KAAKqkH,WAAW,CAAEH,kB,mBAO1B,SAAMjqE,IACGj6C,KAAKkjC,OAAOlW,UAAYhtB,KAAK6jH,UAAUr/B,QAAQvqC,IAAS8nE,GAAc/hH,KAAKkjC,OAAOqhF,UAAWtqE,IAC9Fj6C,KAAKqkH,WAAW,CAAEE,UAAWtqE,M,uBAQrC,SAAUunE,EAAQ97F,GACd1lB,KAAK8uB,MAAM9uB,KAAK6jH,UAAUnC,QAAQ1hH,KAAKkjC,OAAOqhF,UAAW/C,EAAQ97F,M,yBAKrE,WACQ48F,GAAiBtiH,KAAKkjC,OAAOqhF,UAAWvkH,KAAKkjC,SAC7CljC,KAAKigC,OAAOjgC,KAAKkjC,OAAOqhF,UAAW,CAAEC,WAAW,M,kBAOxD,SAAKvqE,GAED,IAAMk7D,EAAYn1G,KAAKskH,YAAYrqE,EAAMj6C,KAAK6jH,UAAUY,YACnDzkH,KAAKkjC,OAAOlW,UAAchtB,KAAKkjC,OAAOiyE,YAAa+M,GAAeliH,KAAKkjC,OAAOiyE,UAAWl7D,IAC1Fj6C,KAAKqkH,WAAW,CAAElP,gB,oBAQ1B,SAAOl7D,GAAkB,IAAZjyB,EAAY,uDAAF,GAEbm8F,EAAenkH,KAAKskH,YAAYrqE,EAAM,MACvCj6C,KAAKkjC,OAAOlW,WACT+0F,GAAc/hH,KAAKkjC,OAAOihF,aAAcA,IACxCnkH,KAAKqkH,WAAW,CAAEF,iBAElBn8F,EAAQw8F,WAAalC,GAAiB6B,EAAcnkH,KAAKkjC,SACzDljC,KAAKgkH,SAASngH,KAAKsgH,M,yBAS/B,SAAYlqE,EAAMyqE,GAEd,IAAMC,EAAU,GAAQrgH,KAAK21C,GAI7B,YAHqBx1C,IAAjBigH,IACAA,EAAe1kH,KAAK6jH,UAAUY,YAE3BzkH,KAAK6jH,UAAUr/B,QAAQmgC,GAAWA,EAAUD,I,wBAMvD,SAAWE,GAEP,IAAM/oC,EAAW77E,KAAK6kH,aAAaD,GACnC5kH,KAAK8kH,eAAejpC,GACpB77E,KAAKkjC,OAAS24C,EACd77E,KAAK+jH,QAAQlgH,KAAK7D,KAAKkjC,U,4BAM3B,SAAe76B,GACX,IAAQua,EAAwFva,EAAxFua,OAAQszF,EAAgF7tG,EAAhF6tG,cAAeiO,EAAiE97G,EAAjE87G,aAAcI,EAAmDl8G,EAAnDk8G,UAAWN,EAAwC57G,EAAxC47G,aAAcj3F,EAA0B3kB,EAA1B2kB,SAAUk3F,EAAgB77G,EAAhB67G,YAChF77G,EAAMua,OAAOvP,QAAQ,SAAA4P,GACjBA,EAAMq8B,MAAMjsC,QAAQ,SAAAsS,GAChBA,EAAKi0B,KAAKvmC,QAAQ,SAAAy+B,GAEVyyE,IACAzyE,EAAItgC,QAAQqjG,QAAU0P,EAAUvC,OAAOlwE,EAAImI,OAASgqE,GAGxDnyE,EAAI2lE,UAAYzqF,GAAY8kB,EAAImI,KAAK+nE,OAAOuC,IAAcA,EAAUthG,QAAUA,EAAMyC,OAAS,GAAK,GAEjF,IAAbsH,IACA8kB,EAAItgC,QAAQwb,UAAW,QAGNvoB,IAAjB0/G,IACAryE,EAAItgC,QAAQyd,SAA4B,OAAjBk1F,GAAyBA,EAAanC,OAAOlwE,EAAImI,OAGxEh3B,EAAMyC,SAAWosB,EAAImI,KAAKh3B,QAC1B6uB,EAAI0lE,OAAyB,WAAhB0M,GAA4C,cAAhBA,GACpChO,EAAgB,GAAKpkE,EAAImI,KAAK0K,MAAM/hC,EAAO,GAAGuyF,YAC3CrjE,EAAImI,KAAKyK,OAAO9hC,EAAOszF,EAAgB,GAAG6O,mB,0BAUtE,SAAaH,GAGT,IA3fmCxC,EAEjCp+B,EAXiCq+B,EAogB7Bh6G,EAAQmU,OAAOuqB,OAAO,GAAI/mC,KAAKkjC,OAAQ0hF,GAEzCjV,EAAYtnG,EAAM8sG,UAiBtB,IAfI,YAAayP,GAAS,YAAaA,KA1lB/C,SAA2BxC,EAASC,GAChC,GAAIA,GAAWD,GAAWC,EAAQ39D,OAAO09D,GACrC,MAAM,IAAI/tF,MAAJ,oBAAuBguF,EAAvB,6CAAmED,IAylBrE4C,CAAkB38G,EAAM+5G,QAAS/5G,EAAMg6G,SACvCh6G,EAAMk8G,UAAYpC,GAAiB95G,EAAMk8G,UAAWl8G,EAAM+5G,QAAS/5G,EAAMg6G,SACzEh6G,EAAM8sG,UAAYgN,GAAiB95G,EAAM8sG,UAAW9sG,EAAM+5G,QAAS/5G,EAAMg6G,SACzE1S,EAAYtnG,EAAMk8G,WAGlB,aAAcK,IACdv8G,EAAM47G,cAAe,GAGrB,iBAAkBW,GAAuC,IAA9B5kH,KAAKkjC,OAAOtgB,OAAOze,SAC9CwrG,EAAYtnG,EAAM87G,cAGlB,iBAAkBS,EAClB,OAAOv8G,EAGX,GAAI,cAAeu8G,IACfv8G,EAAMk8G,UAAYpC,GAAiB95G,EAAMk8G,UAAWl8G,EAAM+5G,QAAS/5G,EAAMg6G,SACzE1S,EAAYtnG,EAAMk8G,UAEU,IAAxBl8G,EAAMua,OAAOze,SAAiBkE,EAAMk8G,UAAU7/D,OAAOr8C,EAAM8sG,aAC1D9sG,EAAMk8G,UAAU5/D,MAAMt8C,EAAM08G,WAC7B,OAAO18G,EASf,GALI,cAAeu8G,IACfv8G,EAAM8sG,UAAYgN,GAAiB95G,EAAM8sG,UAAW9sG,EAAM+5G,QAAS/5G,EAAMg6G,SACzE1S,EAAYtnG,EAAM8sG,WAGlBxF,EAAW,CAEX,IAGM/sF,EAxhBlB,SAAqBsB,EAAU+1B,EAAM5xC,EAAOstG,EAAMjoB,GAC9C,IAAQwoB,EAA0B7tG,EAA1B6tG,cAAetzF,EAAWva,EAAXua,OAGjBqiG,EAAgBriG,EAAO2lB,OAAO,EAAG3lB,EAAOze,QAuB9C,OApBmBoG,MAAMjG,KAAK,CAAEH,OAAQ+xG,GAAiB,SAAC9D,EAAGvqG,GAEzD,IAAMstG,EAAYjxF,EAASw9F,QAAQznE,EAAM,IAAKpyC,GAE9C,GADA+a,EAAO/a,GAAK,MACP6lF,EAAO,CAER,IAAMw3B,EAAcD,EAAcE,UAAU,SAAAliG,GAAK,OAAIA,EAAMkyF,UAAU6M,OAAO7M,MAEvD,IAAjB+P,IACAtiG,EAAO/a,GAAKo9G,EAAc18E,OAAO28E,EAAa,GAAG,IAGzD,OAAO/P,IAGA9hG,QAAQ,SAAC8hG,EAAWttG,GACT,OAAd+a,EAAO/a,KACP+a,EAAO/a,GAanB,SAAoBqc,EAAU+1B,EAAM5xC,EAAOstG,GAAqC,IAA/B1yF,EAA+B,uDAAJ,GAChEmhG,EAAiF/7G,EAAjF+7G,gBAAiBhC,EAAgE/5G,EAAhE+5G,QAASC,EAAuDh6G,EAAvDg6G,QAAST,EAA8Cv5G,EAA9Cu5G,eAAgBW,EAA8Bl6G,EAA9Bk6G,aAAc2B,EAAgB77G,EAAhB67G,YAEnEkB,EAAgBlhG,EAASugG,WAC/BxhG,EAAMkyF,UAAY,KAClBlyF,EAAM8hG,SAAW,KACjB9hG,EAAMyC,OAASu0B,EAAKh3B,MACpBA,EAAMu2B,KAAOS,EAAKT,KAClBv2B,EAAMq8B,MAAQr8B,EAAMq8B,OAAS,GAC7Br8B,EAAMM,SAAWN,EAAMM,UAAY,GACnC02B,EAAOuoE,GAAiBt+F,EAAU+1B,EAAM2nE,GAExC,IAAK,IAAIj8F,EAAO,EAAGA,EAAOzB,EAASmhG,mBAAoB1/F,IAAQ,CAE3D,IAAI2/F,EAAariG,EAAMq8B,MAAM35B,GACxB2/F,IACDA,EAAariG,EAAMq8B,MAAM35B,GAAQ,CAAED,OAAQ,EAAGk0B,KAAM,GAAIi+D,WAAW,IAKvE,IAFA,IAAMj+D,EAAO0rE,EAAW1rE,KAEf9H,EAAM,EAAGA,EAAM5tB,EAASw+F,iBAAkB5wE,IAAO,CACzC,IAATnsB,IACA1C,EAAMM,SAASuuB,GAAO5tB,EAAS2+F,WAAW5oE,IAG9C,IAAMsrE,EAAU,IAAI,GAAQtrE,EAAKT,KAAMS,EAAKh3B,MAAOg3B,EAAKnI,KAElDsyC,EAAWlgE,EAASw9F,QAAQ6D,GAE5Bp/F,EAAYwvF,EAAK6P,gBAAgBD,GAGnCv4F,KAAeo1F,GAAWmD,EAAQ7gE,OAAO09D,IAAcC,GAAWkD,EAAQ5gE,MAAM09D,KAC/Er1F,GAAYu1F,IACbv1F,EAAWu1F,EAAagD,EAAS,CAAEtiG,MAAOA,EAAMyC,OAAQ8zB,KAAMv2B,EAAMu2B,QAIxE,IAAIwrB,EAAQugD,EAAQvD,OAAOoD,GAGvBK,EAAkBrB,EAAkBA,EAAgBmB,EAAS,CAAEtiG,MAAOA,EAAMyC,OAAQ8zB,KAAMv2B,EAAMu2B,YAAU/0C,EAEtF,OAApBwe,EAAMkyF,WAAsBoQ,EAAQtiG,QAAUA,EAAMyC,SACpDzC,EAAMkyF,UAAYoQ,GAGlBA,EAAQtiG,QAAUA,EAAMyC,QAAU0+D,EAASnhE,QAAUA,EAAMyC,SAC3DzC,EAAM8hG,SAAWQ,GAGrB,IAAIG,EAAY9rE,EAAK9H,GAChB4zE,IACDA,EAAY9rE,EAAK9H,GAA0B,IAE/C4zE,EAAUzrE,KAAOsrE,EACjBG,EAAUl0G,QAAUgL,OAAOuqB,OAAO2+E,EAAUl0G,SAAW,GAAI,CACvDQ,UAAWuzG,EACXtrE,KAAMsrE,EACNz1G,KAAM21G,EACNhR,aAAcxxF,EAAMyC,OAAQsH,WAC5B6nF,SAAS,EACT5lF,UAAU,EAAO+1C,UAErB0gD,EAAUjO,UAAY,EACtBiO,EAAUv/F,UAAYA,EACtBu/F,EAAUlO,QAAS,EACnBv9D,EAAOmqC,EAEXkhC,EAAW5/F,OAASxB,EAASyhG,cAAc/rE,EAAKnwC,IAAI,SAAAqoC,GAAG,OAAIA,EAAImI,OAAO2nE,GAEtE0D,EAAWzN,UAA4B,cAAhBqM,GAA+BtqE,EAAK,GAAGK,KAAKh3B,QAAUA,EAAMyC,QAC/Ek0B,EAAKA,EAAKz1C,OAAS,GAAG81C,KAAKh3B,QAAUA,EAAMyC,OAEnD,OAAOzC,EAxFa2iG,CAAW1hG,EAAUixF,EAAW9sG,EAAOstG,EAAMsP,EAActwG,SAA8B,OAGtGiO,EA6fgBijG,CAAY7lH,KAAK6jH,UAAWlU,EAAWtnG,EAAOrI,KAAK8jH,MAH7C,oBAAqBc,GAAS,mBAAoBA,GAAS,iBAAkBA,GAC9F,YAAaA,GAAS,YAAaA,GAAS,aAAcA,GAAS,gBAAiBA,GAIxFv8G,EAAMua,OAASA,EACfva,EAAM8sG,UAAYvyF,EAAOze,OAAS,EAAIye,EAAO,GAAGuyF,eAAY1wG,EAC5D4D,EAAM08G,SAAWniG,EAAOze,OAAS,EAAIye,EAAOA,EAAOze,OAAS,GAAG4gH,cAAWtgH,EAEtE,iBAAkBmgH,IAAUtC,GAAiBj6G,EAAM87G,aAAc97G,KACjEA,EAAM87G,aAAe,MAGrB,cAAeS,SACSngH,IAApB4D,EAAMk8G,WAA2Bl8G,EAAMk8G,UAAU7/D,OAAOr8C,EAAM8sG,YAC9D9sG,EAAMk8G,UAAU5/D,MAAMt8C,EAAM08G,aAC5B18G,EAAMk8G,UAAY5U,GAK1B,IAAMmW,GAAe9lH,KAAKkjC,OAAOiyE,WAAan1G,KAAKkjC,OAAOiyE,UAAU37D,OAASnxC,EAAM8sG,UAAU37D,KAEvFusE,GAAgB/lH,KAAKkjC,OAAOiyE,WAAan1G,KAAKkjC,OAAOiyE,UAAUlyF,QAAU5a,EAAM8sG,UAAUlyF,MACtE,WAArB5a,EAAM+sG,aAEF,YAAawP,GAAS,YAAaA,GAA4C,IAAnCv8G,EAAMktG,YAAY32D,MAAMz6C,QAAgB2hH,KACpFz9G,EAAMktG,YAAY32D,MAvlBtC,SAAgC3E,EAAMmoE,EAASC,GAC3C,IAAKpoE,EACD,MAAO,GAGX,IAAM9wC,EAAQi5G,GAAWA,EAAQ5oE,MAAQS,EAAKT,KAAO,GAGrD,OAAOjvC,MAAMjG,KAAK,CAAEH,QADRk+G,GAAWA,EAAQ7oE,MAAQS,EAAKT,KAAO,IACjBrwC,EAAQ,GAAK,SAAC8qB,EAAGpsB,GAAJ,OAAUsB,EAAQtB,IA+kBvBm+G,CAAuB39G,EAAM8sG,UAAW9sG,EAAM+5G,QAAS/5G,EAAMg6G,WAGvF,YAAauC,GAAS,YAAaA,GAA6C,IAApCv8G,EAAMktG,YAAY3yF,OAAOze,QAAgB2hH,KACrFz9G,EAAMktG,YAAY3yF,OAnnBtC,SAAiCsB,EAAU+1B,EAAMmoE,EAASC,GACtD,IAAKpoE,EACD,MAAO,GAGX,IAAIr3B,EAASsB,EAAS+hG,UAAUhsE,EAAKT,MACrC,GAAI4oE,GAAWnoE,EAAKT,OAAS4oE,EAAQ5oE,KAAM,CAEvC,IAAM7vC,EAAQiZ,EAAOuiG,UAAU,SAAAliG,GAAK,OAAIA,IAAUm/F,EAAQn/F,QAC1DL,EAASA,EAAOpZ,MAAMG,GAE1B,GAAI04G,GAAWpoE,EAAKT,OAAS6oE,EAAQ7oE,KAAM,CAEvC,IAAM,EAAQ52B,EAAOuiG,UAAU,SAAAliG,GAAK,OAAIA,IAAUo/F,EAAQp/F,QAC1DL,EAASA,EAAOpZ,MAAM,EAAG,EAAQ,GAErC,OAAOoZ,EAomBasjG,CAAwBlmH,KAAK6jH,UAAWx7G,EAAM8sG,UAAW9sG,EAAM+5G,QAAS/5G,EAAMg6G,WAItFh6G,EAAMktG,YAAc,CAAE32D,MAAO,GAAIh8B,OAAQ,IAGnB,WAArBva,EAAM+sG,YAAgD,WAArB/sG,EAAM+sG,cACvC2Q,GAAgBD,GAAe,YAAalB,GAAS,YAAaA,GAAS,aAAcA,KAC1Fv8G,EAAMgtG,aAAehtG,EAAM2kB,WA5kBAo1F,EA4kB+D/5G,EAAM+5G,QA1kBtGp+B,EA0kB+DhkF,KAAK6jH,UA1kBhDf,QA0kB2Dz6G,EAAM8sG,UA1kBnD,KACjCiN,IAAYp+B,EAASxqC,OAAS4oE,EAAQ5oE,MAAQwqC,EAAS/gE,MAAQm/F,EAAQn/F,OAC1E+gE,EAASxqC,KAAO4oE,EAAQ5oE,MAA0B,IAAlB4oE,EAAQn/F,QAykBhC5a,EAAMitG,aAAejtG,EAAM2kB,WAtlBAq1F,EAslB8Dh6G,EAAMg6G,UAAtCriH,KAAK6jH,UArlB/CnC,QAqlB0Dr5G,EAAM08G,SArlBlD,KAAKpgE,MAAM09D,IAwlBhD,OAAOh6G,M,UAGfu7G,EAAqBrjH,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKojH,GAAsB,KAAgB,IAAc,KAAgB,MAC5JA,EAAqBh/G,WAAQ,KAA0B,CAAEC,MAAO++G,EAAsB9+G,QAAS8+G,EAAqBrjH,Y,KAe9G4lH,GAAM,CACRC,IAAK,EACLC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACPC,OAAQ,GACRC,SAAU,GACVC,IAAK,GACLC,KAAM,GACNC,UAAW,GACXC,QAAS,GACTC,WAAY,GACZC,UAAW,IAEfZ,GAAIA,GAAIC,KAAO,MACfD,GAAIA,GAAIE,OAAS,QACjBF,GAAIA,GAAIG,QAAU,SAClBH,GAAIA,GAAII,OAAS,QACjBJ,GAAIA,GAAIK,QAAU,SAClBL,GAAIA,GAAIM,UAAY,WACpBN,GAAIA,GAAIO,KAAO,MACfP,GAAIA,GAAIQ,MAAQ,OAChBR,GAAIA,GAAIS,WAAa,YACrBT,GAAIA,GAAIU,SAAW,UACnBV,GAAIA,GAAIW,YAAc,aACtBX,GAAIA,GAAIY,WAAa,Y,sBAMfC,E,8BAKF,WAAYC,EAAUpD,GAAS,+BAC3B7jH,KAAKinH,SAAWA,EAChBjnH,KAAK6jH,UAAYA,EACjBoD,EAASC,OAAOhjH,UAAU,SAAA+1F,GACtB,EAAKktB,SAAWltB,EAAMmoB,QACtB,EAAKgF,SAAWntB,EAAMooB,QACtB,EAAKgF,eAAiBptB,EAAMkb,UAC5B,EAAKmS,cAAgBrtB,EAAM8qB,Y,yBAOnC,SAAWz8F,GAEP,OAAQA,EAAMi/F,OACV,KAAKpB,GAAIK,OACLxmH,KAAKinH,SAASO,UAAUl/F,EAAMm/F,SAAW,IAAM,KAAM,GACrD,MACJ,KAAKtB,GAAIM,SACLzmH,KAAKinH,SAASO,UAAUl/F,EAAMm/F,SAAW,IAAM,IAAK,GACpD,MACJ,KAAKtB,GAAIO,IACL1mH,KAAKinH,SAASn4F,MAAMxG,EAAMm/F,SAAWznH,KAAKonH,SAAWpnH,KAAKsnH,eAC1D,MACJ,KAAKnB,GAAIQ,KACL3mH,KAAKinH,SAASn4F,MAAMxG,EAAMm/F,SAAWznH,KAAKmnH,SAAWnnH,KAAKqnH,gBAC1D,MACJ,KAAKlB,GAAIS,UACL5mH,KAAKinH,SAASO,UAAU,KAAM,GAC9B,MACJ,KAAKrB,GAAIU,QACL7mH,KAAKinH,SAASO,UAAU,KAAMxnH,KAAK6jH,UAAUnB,kBAC7C,MACJ,KAAKyD,GAAIW,WACL9mH,KAAKinH,SAASO,UAAU,IAAK,GAC7B,MACJ,KAAKrB,GAAIY,UACL/mH,KAAKinH,SAASO,UAAU,IAAKxnH,KAAK6jH,UAAUnB,kBAC5C,MACJ,KAAKyD,GAAIE,MACT,KAAKF,GAAII,MACLvmH,KAAKinH,SAASS,cACd,MACJ,QACI,OAGRp/F,EAAM4E,iBACN5E,EAAMsH,sB,UAGdo3F,EAA2BzmH,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAKwmH,GAA4B,KAAgB,IAAuB,KAAgB,MACvLA,EAA2BpiH,WAAQ,KAA0B,CAAEC,MAAOmiH,EAA4BliH,QAASkiH,EAA2BzmH,Y,KAehIonH,GAAkB,CACpBC,KAAM,EACNC,KAAM,GAEVF,GAAgBA,GAAgBC,MAAQ,OACxCD,GAAgBA,GAAgBE,MAAQ,O,sBAYlCC,E,YACF,iCACI9nH,KAAKk2G,cAAgB,EACrBl2G,KAAK4hH,eAAiB,EACtB5hH,KAAKo1G,WAAa,SAClBp1G,KAAKkkH,YAAc,UACnBlkH,KAAKo2G,cAAe,EACpBp2G,KAAKq2G,iBAAkB,I,OAG/ByR,EAAoBvnH,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKsnH,IACtFA,EAAoBljH,WAAQ,KAA0B,CAAEC,MAAOijH,EAAqBhjH,QAASgjH,EAAoBvnH,UAAMqmB,WAAY,SAChHkhG,EAAoBxG,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAyC,OAAO,IAAIgjH,GAA0BjjH,MAAOijH,EAAqBlhG,WAAY,S,KAa3M,SAASmhG,KACL,OAAO,IAAI,G,sBAgBTC,E,sDAENA,EAAeznH,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKwnH,IAC5EA,EAAepjH,WAAQ,KAA0B,CAAEC,MAAOmjH,EAAgBljH,QAAS,WAAc,OAAOijH,MAA0CnhG,WAAY,SAC3IohG,EAAe1G,gBAAkB,YAAiB,CAAEx8G,QAASijH,GAAqCljH,MAAOmjH,EAAgBphG,WAAY,S,uBAKlJqhG,E,uIAMF,SAAUhuE,GACN,OAAQA,GAAQskE,GAAUtkE,EAAKT,OAAS+kE,GAAUtkE,EAAKh3B,QAAUs7F,GAAUtkE,EAAKnI,KAC5E,CAAE0H,KAAMS,EAAKT,KAAMv2B,MAAOg3B,EAAKh3B,MAAO6uB,IAAKmI,EAAKnI,KAChD,O,qBAOR,SAAQmI,GACJ,OAAQA,GAAQskE,GAAUtkE,EAAKT,OAAS+kE,GAAUtkE,EAAKh3B,QAAUs7F,GAAUtkE,EAAKnI,KAC5E,CAAE0H,KAAMS,EAAKT,KAAMv2B,MAAOg3B,EAAKh3B,MAAO6uB,IAAKmI,EAAKnI,KAChD,S,CAnBuB,I,OAsBnCm2E,EAAqB1nH,UAAO,SAAsCC,GAAK,OAAO0nH,GAAkC1nH,GAAKynH,IACrHA,EAAqBrjH,WAAQ,KAA0B,CAAEC,MAAOojH,EAAsBnjH,QAASmjH,EAAqB1nH,Y,KAC9G2nH,GAAkD,KAA6B,IAU/EC,GAAgC,CAClC5lH,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,G,kBAOL0+F,E,8BAYF,WAAYC,EAAgBpB,EAAUpD,EAAWlO,EAAMv9E,EAAQinF,EAAKtyG,EAAau7G,EAAiBhlH,GAAO,+BACrGtD,KAAKqoH,eAAiBA,EACtBroH,KAAKinH,SAAWA,EAChBjnH,KAAK6jH,UAAYA,EACjB7jH,KAAK21G,KAAOA,EACZ31G,KAAKq/G,IAAMA,EACXr/G,KAAK+M,YAAcA,EACnB/M,KAAKsoH,gBAAkBA,EACvBtoH,KAAKsD,QAAUA,EACftD,KAAKuoH,YAAc,IAAI9kH,EAAA,EAMvBzD,KAAKwoH,SAAW,IAAI,IAMpBxoH,KAAKigC,OAAS,IAAI,IAClBjgC,KAAKw/G,SAAW,SAACpN,KACjBpyG,KAAKy/G,UAAY,aACjB,CAAC,cAAe,kBAAmB,gBAAiB,iBAAkB,iBAAkB,eAAgB,UACpG,UAAW,aAAc,cAAe,eAAgB,kBAAmB,aAC1EpsG,QAAQ,SAAAmrC,GAAK,OAAI,EAAKA,GAASpmB,EAAOomB,KAC3CyoE,EAASwB,QAAQzkH,KAAK,OAAAC,EAAA,GAAUjE,KAAKuoH,cAAcrkH,UAAU,SAAA+1C,GAAU,EAAKha,OAAO/d,KAAK+3B,KACxFgtE,EAASC,OAAOljH,KAAK,OAAAC,EAAA,GAAUjE,KAAKuoH,cAAcrkH,UAAU,SAAA+1F,GAExD,IAAMsrB,EAAUtrB,EAAMkb,UAEhBuT,EAAU,EAAKzuB,MAAQ,EAAKA,MAAMkb,UAAY,KAEhDwT,GAAsB,EAE1B,GAAKpD,EAAQvD,OAAO0G,KAChB,EAAKF,SAAStmG,KAAK,CACfk6D,QAASssC,EAAU,CAAElvE,KAAMkvE,EAAQlvE,KAAMv2B,MAAOylG,EAAQzlG,OAAU,KAClEpf,KAAM,CAAE21C,KAAM+rE,EAAQ/rE,KAAMv2B,MAAOsiG,EAAQtiG,OAC3CiK,eAAgB,kBAAMy7F,GAAsB,MAG5CA,GAAmC,OAAZD,GAP/B,CAaA,IAAME,EAAkB3uB,EAAMkqB,aAExB0E,EAAiB5uB,EAAMsqB,UAEvBuE,EAAiB,EAAK7uB,MAAQ,EAAKA,MAAMsqB,UAAY,KAC3D,EAAKtqB,MAAQA,EAET8nB,GAAc6G,EAAiB,EAAKG,iBACpC,EAAKA,cAAgBH,EACrB,EAAKnJ,YACL,EAAKD,SAAS,EAAK8I,gBAAgBU,QAAQJ,KAG3C7G,GAAc8G,EAAgBC,IAAmBA,GAAkB7uB,EAAMgqB,cACzE,EAAKn1F,QAETuwF,EAAIroG,oBArBI,EAAKiwG,SAAS57B,KAAKq9B,M,oBA2BnC,WAAK,WACD1oH,KAAKsD,QAAQoB,SAASuzB,eAAej0B,KAAK,OAAAW,EAAA,GAAK,IAAIT,UAAU,WAEzD,IAAM+kH,EAAiB,EAAKl8G,YAAYnK,cAAcwI,cAAc,gCAChE69G,GACAA,EAAen6F,Y,wBAc3B,SAAWmrB,GACPj6C,KAAKinH,SAAS57B,KAAK,GAAQ/mF,KAAK21C,EAAOA,EAAKnI,IAAyBmI,EAASz9B,OAAOuqB,OAAO,GAAIkT,EAAM,CAAEnI,IAAK,IAAO,S,6BAKxH,WAAe,WACX9xC,KAAKsD,QAAQ+nB,kBAAkB,WAE3B,IAAM69F,EAAY,OAAAC,EAAA,GAAU,EAAKC,UAAUxmH,cAAe,WAEpDymH,EAAa,OAAAF,EAAA,GAAU,EAAKC,UAAUxmH,cAAe,YAG3D,OAAAya,EAAA,GAAM6rG,EAAWG,GACZrlH,KAAK,OAAAmR,EAAA,GAAO,gBAAWm0G,EAAX,EAAWA,cAAX,QAAiC3K,GAAjC,EAAGnyF,OAAmD,eAAiBmyF,GAAa2K,EAAe,iBAAiB,OAAArlH,EAAA,GAAU,EAAKskH,cAC/IrkH,UAAU,gBAAGxD,EAAH,EAAGA,KAAH,OAAc,EAAK4C,QAAQgpC,IAAI,kBAAM,EAAK26E,SAAShD,aAAwB,YAATvjH,U,yBAMzF,WAAgBV,KAAKuoH,YAAY1kH,S,sBAIjC,WAAQ,gBACeY,IAAfzE,KAAKi6F,QACL,CAAC,kBAAmB,gBAAiB,eAAgB,iBAAkB,aAAc,UAAW,UAC5F,eACC5mF,QAAQ,SAAAmrC,GAAK,OAAI,EAAKyoE,SAASzoE,GAAS,EAAKA,KAClDx+C,KAAKupH,WAAWvpH,KAAK2vG,c,yBAO7B,SAAY1qG,GAAO,WAKf,GAJA,CAAC,kBAAmB,gBAAiB,eAAgB,iBAAkB,aAAc,UAAW,UAC5F,eACCkQ,OAAO,SAAAqpC,GAAK,OAAIA,KAASv5C,IACzBoO,QAAQ,SAAAmrC,GAAK,OAAI,EAAKyoE,SAASzoE,GAAS,EAAKA,KAC9C,cAAev5C,EAAS,CACxB,MAAwCA,EAAQ0qG,UAC5CuS,GADJ,EAAsB15E,cAAtB,EAAQpjC,eAEJpF,KAAKupH,WAAWvpH,KAAK2vG,c,0BAQjC,SAAa11D,GACTj6C,KAAKinH,SAASn4F,MAAMmrB,GACpBj6C,KAAKinH,SAAShnF,OAAOga,EAAM,CAAEuqE,WAAW,M,uBAM5C,SAAUl8F,GAAStoB,KAAKqoH,eAAemB,WAAWlhG,K,kCAKlD,SAAqB2xB,GAAQj6C,KAAKinH,SAAS57B,KAAKpxC,K,6BAKhD,SAAgB3xB,GACZ,OAAQA,GACJ,KAAKq/F,GAAgBC,KACjB5nH,KAAKinH,SAAS57B,KAAKrrF,KAAK6jH,UAAUf,QAAQ9iH,KAAKi6F,MAAMkb,UAAW,IAAK,IACrE,MACJ,KAAKwS,GAAgBE,KACjB7nH,KAAKinH,SAAS57B,KAAKrrF,KAAK6jH,UAAUnC,QAAQ1hH,KAAKi6F,MAAMkb,UAAW,IAAK,O,8BAQjF,SAAiBnmG,GAAMhP,KAAKw/G,SAAWxwG,I,+BAKvC,SAAkBA,GAAMhP,KAAKy/G,UAAYzwG,I,8BAKzC,SAAiB+d,GAAc/sB,KAAKinH,SAASj6F,SAAWD,I,wBAKxD,SAAWxrB,GACPvB,KAAK+oH,cAAgB,GAAQzkH,KAAKtE,KAAKsoH,gBAAgBmB,UAAUloH,IACjEvB,KAAKinH,SAAShnF,OAAOjgC,KAAK+oH,mB,UAGlCX,EAAc7nH,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK4nH,GAAe,KAAyB,IAA6B,KAAyB,IAAuB,KAAyB,IAAc,KAAyB,IAAoB,KAAyB,IAAsB,KAAyB,KAA2B,KAAyB,KAAoB,KAAyB,IAAiB,KAAyB,OACteA,EAAcjiH,UAAO,KAAyB,CAAEzF,KAAM0nH,EAAeznH,UAAW,CAAC,CAAC,mBAAoB2X,UAAW,SAA6B3W,EAAIC,GAG1I,IAAIE,EAHsJ,EAALH,GACrJ,KAAmB2yG,GAAK,GACjB,EAAL3yG,GAEF,KAAsBG,EAAK,UAA0BF,EAAIwnH,UAAYtnH,EAAGE,QACvEG,OAAQ,CAAEg0G,YAAa,cAAeiO,gBAAiB,kBAAmBlO,cAAe,gBAAiB0L,eAAgB,iBAAkB8H,eAAgB,iBAAkBnH,aAAc,eAAgBF,QAAS,UAAWD,QAAS,UAAWhN,WAAY,aAAc8O,YAAa,cAAe9N,aAAc,eAAgBC,gBAAiB,kBAAmB1G,UAAW,aAAextF,QAAS,CAAEqmG,SAAU,WAAYvoF,OAAQ,UAAYvnB,SAAU,CAAC,iBAAkBpW,SAAU,CAAC,KAA0B,CAAC6lH,GAA+B,GAAsB,KAA8B,MAA8B/hH,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,KAAM,IAAK,CAAC,EAAG,gBAAiB,YAAa,CAAC,EAAG,OAAQ,SAAU,WAAY,aAAc,eAAgB,eAAgB,cAAe,WAAY,SAAU,EAAG,QAAS,CAAC,EAAG,gBAAiB,EAAG,WAAY,CAAC,SAAU,IAAK,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,EAAG,oBAAqB,CAAC,uBAAwB,GAAI,EAAG,OAAQ,eAAgB,WAAY,WAAY,WAAY,CAAC,EAAG,OAAQ,SAAU,WAAY,aAAc,eAAgB,eAAgB,cAAe,WAAY,UAAW,CAAC,EAAG,gBAAiB,CAAC,QAAS,6BAA8B,EAAG,QAAS,CAAC,EAAG,QAAS,cAAe,eAAgB,kBAAmB,UAAW,CAAC,EAAG,oBAAqB,aAAchG,SAAU,SAAgCqB,EAAIC,GAAgB,EAALD,IAC12C,KAAkB,EAAG4yG,GAAsC,EAAG,EAAG,cAAe,KAAM,EAAG,MACzF,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGO,GAAoD,EAAG,EAAG,4BAA6B,GAC5G,OACA,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,UAAW,SAAuDhjF,GAAU,OAAOlwB,EAAIw0C,UAAUtkB,KACnH,KAAkB,EAAGgkF,GAAsC,EAAG,EAAG,cAAe,GAChF,OACA,KAAkB,EAAGQ,GAAsC,EAAG,EAAG,cAAe,IACzE,EAAL30G,IACF,KAAiB,GACjB,KAAkB,OAA2B,SAAnBC,EAAIwzG,YAC9B,KAAiB,GACjB,KAAkB,UAAWxzG,EAAIq4F,MAAMr3E,QACvC,KAAiB,GACjB,KAAkB,mBAAoBhhB,EAAI8nH,kBACzCnjH,WAAY,WAAc,MAAO,CAAC,IAAa,IAAgB,IAAyB,GAAsB,GAAyB,KAA4BuS,OAAQ,CAAC,wtBAAytBtS,cAAe,EAAGwiB,gBAAiB,I,uBA6H36B2gG,E,8BAIF,WAAYhU,GAAI,oBACZ31G,KAAK21G,KAAOA,EACZ31G,KAAKigC,OAAS,IAAI,K,uBAMtB,SAAS6R,GACAA,EAAItgC,QAAQwb,UAAa8kB,EAAI0lE,QAC9Bx3G,KAAKigC,OAAO/d,KAAK4vB,EAAImI,U,UAIjC0vE,EAAuBppH,UAAO,SAAwCC,GAAK,OAAO,IAAKA,GAAKmpH,GAAwB,KAAyB,MAC7IA,EAAuBxjH,UAAO,KAAyB,CAAEzF,KAAMipH,EAAwBhpH,UAAW,CAAC,CAAC,8BAA+BoC,UAAW,CAAC,OAAQ,QAASZ,OAAQ,CAAEg0G,YAAa,cAAelzF,MAAO,QAASmzF,aAAc,eAAgBC,gBAAiB,mBAAqBl0F,QAAS,CAAE8d,OAAQ,UAAY75B,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,uCAAwC,EAAG,QAAS,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,EAAG,cAAe,kBAAmB,YAAa,CAAC,QAAS,iCAAkC,EAAG,QAAS,CAAC,QAAS,uBAAwB,EAAG,QAAS,WAAY,CAAC,EAAG,iBAAkB,mBAAoB,CAAC,EAAG,iBAAkB,SAAU,CAAC,QAAS,cAAe,OAAQ,MAAO,EAAG,QAAS,CAAC,OAAQ,MAAO,EAAG,eAAgB,CAAC,QAAS,sCAAuC,EAAG,QAAS,CAAC,QAAS,aAAc,OAAQ,WAAY,EAAG,WAAY,WAAY,SAAU,eAAgB,QAAS,EAAG,QAAS,WAAY,CAAC,EAAG,qBAAsB,QAAS,cAAe,CAAC,OAAQ,WAAY,EAAG,aAAc,EAAG,WAAY,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,mBAAoB,4BAA6BhG,SAAU,SAAyCqB,EAAIC,GAAgB,EAALD,IAClqC,KAAkB,EAAGi1G,GAAuC,EAAG,EAAG,MAAO,GACzE,KAAkB,EAAGgB,GAA+C,EAAG,EAAG,cAAe,IAClF,EAALj2G,IACF,KAAkB,OAAQC,EAAIw0G,cAC9B,KAAiB,GACjB,KAAkB,UAAWx0G,EAAIqhB,MAAMq8B,SACtC/4C,WAAY,CAAC,IAAa,IAAgB,KAA0BuS,OAAQ,CAAC,2dAA4dtS,cAAe,I,uBA2D3jBojH,E,YAIF,WAAYjU,GAAI,oBACZ31G,KAAK21G,KAAOA,EACZ31G,KAAKo1G,WAAauS,GAClB3nH,KAAK4iB,OAAS,GACd5iB,KAAKwoH,SAAW,IAAI,IACpBxoH,KAAKigC,OAAS,IAAI,M,OAG1B2pF,EAAwBrpH,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKopH,GAAyB,KAAyB,MAChJA,EAAwBzjH,UAAO,KAAyB,CAAEzF,KAAMkpH,EAAyBjpH,UAAW,CAAC,CAAC,8BAA+BwB,OAAQ,CAAEygB,OAAQ,SAAUq3B,KAAM,OAAQjtB,SAAU,WAAY68F,WAAY,aAAcxU,aAAc,eAAgBC,aAAc,eAAgBC,YAAa,eAAiBpzF,QAAS,CAAEqmG,SAAU,WAAYvoF,OAAQ,UAAY75B,MAAO,EAAGC,KAAM,EAAGC,OAAQ,WAwBnY,MAAO,CAAC,CAAC,EAAG,gBAAiB,CAAC,OAAQ,SAAU,aAnBrCwjH,UAAH,sIAmB8D,QAb1DA,UAAH,sIAa+E,EAAG,MAAO,WAAY,mBAAoB,EAAG,WAAY,SAAU,CAAC,EAAG,6BAA8B,CAAC,QAAS,2BAA4B,EAAG,OAAQ,WAAY,SAAU,QAAS,SAAU,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,EAAG,eAAgB,SAAU,CAAC,OAAQ,SAAU,aAPrVA,UAAH,8HAO+W,QAD5WA,UAAH,8HACiY,EAAG,MAAO,WAAY,mBAAoB,EAAG,WAAY,SAAU,CAAC,EAAG,2BAA4B,EAAG,OAAQ,WAAY,SAAU,QAAS,UAAW,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,QAAS,eAAgB,EAAG,QAAS,CAAC,EAAG,uBAA0BxpH,SAAU,SAA0CqB,EAAIC,GAAgB,EAALD,IACpsB,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAAsE,OAAOC,EAAI4mH,SAAStmG,KAAKtgB,EAAIwzG,WAAWwS,QACzI,KAAiB,EAAG,OAAQ,GAC5B,OACA,OACA,KAAkB,EAAG9P,GAAqE,EAAG,EAAG,mCAAoC,GACpI,KAAkB,EAAGO,GAAoC,EAAG,OAAG5zG,EAAW,GAC1E,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAAsE,OAAO7C,EAAI4mH,SAAStmG,KAAKtgB,EAAIwzG,WAAWyS,QACzI,KAAiB,EAAG,OAAQ,GAC5B,OACA,QACO,EAALlmH,IACF,KAAiB,GACjB,KAAkB,WAAYC,EAAIyzG,cAClC,KAAiB,GACjB,KAAkB,OAAQzzG,EAAIioH,YAC9B,KAAiB,GACjB,KAAkB,QAASjoH,EAAIioH,YAC/B,KAAiB,GACjB,KAAkB,WAAYjoH,EAAI0zG,gBACjC/uG,WAAY,WAAc,MAAO,CAAC,IAAa,GAA+B,MAAoBuS,OAAQ,CAAC,4kCAA6kCtS,cAAe,EAAGwiB,gBAAiB,I,KAgF9tC+gG,GAAgB,SAAC1+G,EAAS0N,GAAV,QAAoBA,GAAQA,EAAM3Q,KAAK,SAAAkJ,GAAI,OAAIA,EAAKsb,SAASvhB,MAE7E2+G,GAAuB,SAAC3+G,EAASipC,GAAV,OAAwBA,GAA0C,MAzsG/F,SAAiBjpC,EAASipC,GACtB,OAAKA,EAGEjpC,EAAQkpC,QAAQD,GAFZ,KAusGkDC,CAAQlpC,EAASipC,IAK9E21E,IAAM,EAeV,SAASC,GAAaC,EAAMx/E,EAAUjqC,EAAM4kC,EAAO8kF,EAASC,EAAgBC,EAAgBC,GAEpF7pH,GACAypH,EAAK9+F,kBAAkB,WAEnB,IAiBMm/F,EAAW,OAAArB,EAAA,GAAUx+E,EAAU,WAChC3mC,KAAK,OAAAC,EAAA,GAAUmmH,GAEpB,OAAAj1G,EAAA,GAAO,SAAA8e,GAAC,OAAIA,EAAEszF,QAAUpB,GAAIG,UAItBmE,EAAc,OAAAtB,EAAA,GAAUx+E,EAAUs/E,GAAM,aAAe,aACxDjmH,KAAK,OAAAyF,EAAA,GAzBiB,SAAC6e,GAExB,IAAMjd,EAA6Bid,EAAMkE,OACzC,QAAKlE,aAAiBoiG,YAA+B,IAAjBpiG,EAAMi3D,QAAiBwqC,GAAc1+G,EAASi/G,MAGrE,WAAT5pH,EACOqpH,GAAc1+G,EAASg/G,IAAmBL,GAAqB3+G,EAASk/G,GAEjE,YAAT7pH,GACGqpH,GAAc1+G,EAASg/G,GAGxBL,GAAqB3+G,EAASk/G,KAAoBR,GAAc1+G,EAASg/G,MAYrD,OAAApmH,EAAA,GAAUmmH,KD9kInD,WAA6B,2BAAXv+E,EAAW,yBAAXA,EAAW,gBAC/B,GAA2B,IAAvBA,EAAY1nC,OAAc,CAC1B,IAAI,OAAA6R,EAAA,GAAQ61B,EAAY,IAIpB,OAAOA,EAAY,GAHnBA,EAAcA,EAAY,GAMlC,OAAO,OAAA8+E,EAAA,GAAU9+E,OAAapnC,GAAW43B,KAAK,IAAI,ICykI1CuuF,CAAK,CAACJ,EAFmB,OAAArB,EAAA,GAAUx+E,EAAUs/E,GAAM,WAAa,WAC3DjmH,KAAK,OAAA6mH,GAAA,GAAeJ,GAAc,OAAAt1G,EAAA,GAAO,yCAAoC,OAAAi4E,GAAA,GAAM68B,GAAM,GAAK,GAAI,OAAAhmH,EAAA,GAAUmmH,MAC9ElmH,UAAU,kBAAMimH,EAAK79E,IAAIhH,OAhD/C,oBAAdwlF,YACPb,KAAQa,UAAUC,WAAa,mBAAmB/nG,KAAK8nG,UAAUC,YAyDrE,IAAMC,GAA8B,CAChC,UAAW,yBAA0B,6CAA8C,yBACnF,2BAA4B,oBAAqB,mCACnDh7E,KAAK,MAMP,SAASi7E,GAA6B5/G,GAElC,IAAM8gE,EAAO5hE,MAAMjG,KAAwB+G,EAAQ0gG,iBAAiBif,KAC/D71G,OAAO,SAAAs9B,GAAE,OAAqB,IAAjBA,EAAG0D,WACrB,MAAO,CAACg2B,EAAK,GAAIA,EAAKA,EAAKhoE,OAAS,IAcxC,IAAM,GAAe,SAACkH,EAAS6/G,GAA0C,IAA1BC,EAA0B,wDAG/DC,EAAsB,OAAAjC,EAAA,GAAU99G,EAAS,WAAWrH,KAAK,OAAAC,EAAA,GAAUinH,GAAiB,OAAAzhH,EAAA,GAAI,SAAAwqB,GAAC,OAAIA,EAAEzH,UAErG,OAAA28F,EAAA,GAAU99G,EAAS,WACdrH,KAAK,OAAAC,EAAA,GAAUinH,GAEpB,OAAA/1G,EAAA,GAAO,SAAA8e,GAAC,OAAIA,EAAEszF,QAAUpB,GAAIC,MAE5B,OAAAyE,GAAA,GAAeO,IACVlnH,UAAU,YAA+B,uBAA7BmnH,EAA6B,KAAnBC,EAAmB,KAC1C,EAAsBL,GAA6B5/G,GAAnD,mBAAOrJ,EAAP,KAAcmV,EAAd,KACKm0G,IAAmBtpH,GAASspH,IAAmBjgH,IAAYggH,EAAS5D,WACrEtwG,EAAK2X,QACLu8F,EAASn+F,kBAETo+F,IAAmBn0G,GAASk0G,EAAS5D,WACrCzlH,EAAM8sB,QACNu8F,EAASn+F,oBAIbi+F,GACA,OAAAhC,EAAA,GAAU99G,EAAS,SACdrH,KAAK,OAAAC,EAAA,GAAUinH,GAAiB,OAAAL,GAAA,GAAeO,GAAsB,OAAA3hH,EAAA,GAAI,SAAAkmC,GAAG,OAAuBA,EAAI,MACvGzrC,UAAU,SAAAqnH,GAAkB,OAAIA,EAAmBz8F,WAqM1D08F,GAAqB,MAErBC,GAAkB,I,2FAxLpB,SAAapgH,GAAW,OAAO8f,OAAOqoD,iBAAiBnoE,K,sBAMvD,SAASA,EAAS+iC,GAAQ,OAAOpuC,KAAK0rH,aAAargH,GAAS+iC,K,gCAK5D,SAAmB/iC,GACf,MAA4D,YAApDrL,KAAK2rH,SAAStgH,EAAS,aAAe,Y,0BAMlD,SAAaA,GAGT,IADA,IAAIugH,EAAoCvgH,EAAQokG,cAAkB9kE,SAAS6J,gBACpEo3E,GAAkBA,IAAmBjhF,SAAS6J,iBAAmBx0C,KAAK6rH,mBAAmBD,IAC5FA,EAAoCA,EAAenc,aAEvD,OAAOmc,GAAkBjhF,SAAS6J,kB,sBAOtC,SAASnpC,GAAqB,IAEtBygH,EAFU7yE,IAAY,yDAItB8yE,EAAe,CAAEriH,MAAO,EAAGc,OAAQ,EAAGuB,IAAK,EAAGC,OAAQ,EAAGC,KAAM,EAAGC,MAAO,GAC7E,GAA2C,UAAvClM,KAAK2rH,SAAStgH,EAAS,YAEvBygH,EAAa,CACT//G,KAFJ+/G,EAAazgH,EAAQZ,yBAEDsB,IAChBC,OAAQ8/G,EAAW9/G,OACnBC,KAAM6/G,EAAW7/G,KACjBC,MAAO4/G,EAAW5/G,MAClB1B,OAAQshH,EAAWthH,OACnBd,MAAOoiH,EAAWpiH,WAGrB,CAED,IAAMkiH,EAAiB5rH,KAAKyvG,aAAapkG,GACzCygH,EAAa9rH,KAAK6K,OAAOQ,GAAS,GAC9BugH,IAAmBjhF,SAAS6J,kBAC5Bu3E,EAAe/rH,KAAK6K,OAAO+gH,GAAgB,IAE/CG,EAAahgH,KAAO6/G,EAAeI,UACnCD,EAAa9/G,MAAQ2/G,EAAeK,WAYxC,OAVAH,EAAW//G,KAAOggH,EAAahgH,IAC/B+/G,EAAW9/G,QAAU+/G,EAAahgH,IAClC+/G,EAAW7/G,MAAQ8/G,EAAa9/G,KAChC6/G,EAAW5/G,OAAS6/G,EAAa9/G,KAC7BgtC,IACA6yE,EAAW//G,IAAMwS,KAAK06B,MAAM6yE,EAAW//G,KACvC+/G,EAAW9/G,OAASuS,KAAK06B,MAAM6yE,EAAW9/G,QAC1C8/G,EAAW7/G,KAAOsS,KAAK06B,MAAM6yE,EAAW7/G,MACxC6/G,EAAW5/G,MAAQqS,KAAK06B,MAAM6yE,EAAW5/G,QAEtC4/G,I,oBAOX,SAAOzgH,GAAqB,IAAZ4tC,IAAY,yDAElBizE,EAAQ7gH,EAAQZ,wBAEhB0hH,EAAiB,CACnBpgH,IAAKof,OAAO+pD,YAAcvqC,SAAS6J,gBAAgBw3E,UACnD//G,KAAMkf,OAAO8pD,YAActqC,SAAS6J,gBAAgBy3E,YAGpDG,EAAW,CACX5hH,OAAQ0hH,EAAM1hH,QAAUa,EAAQomB,aAChC/nB,MAAOwiH,EAAMxiH,OAAS2B,EAAQynE,YAC9B/mE,IAAKmgH,EAAMngH,IAAMogH,EAAepgH,IAChCC,OAAQkgH,EAAMlgH,OAASmgH,EAAepgH,IACtCE,KAAMigH,EAAMjgH,KAAOkgH,EAAelgH,KAClCC,MAAOggH,EAAMhgH,MAAQigH,EAAelgH,MAUxC,OARIgtC,IACAmzE,EAAS5hH,OAAS+T,KAAK06B,MAAMmzE,EAAS5hH,QACtC4hH,EAAS1iH,MAAQ6U,KAAK06B,MAAMmzE,EAAS1iH,OACrC0iH,EAASrgH,IAAMwS,KAAK06B,MAAMmzE,EAASrgH,KACnCqgH,EAASpgH,OAASuS,KAAK06B,MAAMmzE,EAASpgH,QACtCogH,EAASngH,KAAOsS,KAAK06B,MAAMmzE,EAASngH,MACpCmgH,EAASlgH,MAAQqS,KAAK06B,MAAMmzE,EAASlgH,QAElCkgH,I,8BAYX,SAAiBC,EAAaC,EAAeC,EAAWC,GACpD,MAAkED,EAAUhqG,MAAM,KAAlF,0BAAOkqG,OAAP,MAA0B,MAA1B,SAAiCC,OAAjC,MAAsD,SAAtD,EAEMC,EAAiBH,EAAexsH,KAAK6K,OAAOwhH,GAAa,GAASrsH,KAAKgK,SAASqiH,GAAa,GAE7FO,EAAiB5sH,KAAK0rH,aAAaY,GAEnCO,EAAYh/F,WAAW++F,EAAeC,WAEtCpmB,EAAe54E,WAAW++F,EAAenmB,cAEzCF,EAAa14E,WAAW++F,EAAermB,YAEvCC,EAAc34E,WAAW++F,EAAepmB,aAE1CrvB,EAAc,EAEdF,EAAe,EACnB,OAAQw1C,GACJ,IAAK,MACDt1C,EAAew1C,EAAe5gH,KAAOugH,EAAc76F,aAAeo7F,EAAYpmB,GAC9E,MACJ,IAAK,SACDtvB,EAAew1C,EAAe5gH,IAAM4gH,EAAeniH,OACnD,MACJ,IAAK,OACDysE,EAAgB01C,EAAe1gH,MAAQqgH,EAAcx5C,YAAcyzB,EAAaC,GAChF,MACJ,IAAK,QACDvvB,EAAgB01C,EAAe1gH,KAAO0gH,EAAejjH,MAG7D,OAAQgjH,GACJ,IAAK,MACDv1C,EAAcw1C,EAAe5gH,IAC7B,MACJ,IAAK,SACDorE,EAAcw1C,EAAe5gH,IAAM4gH,EAAeniH,OAAS8hH,EAAc76F,aACzE,MACJ,IAAK,OACDwlD,EAAe01C,EAAe1gH,KAC9B,MACJ,IAAK,QACDgrE,EAAe01C,EAAe1gH,KAAO0gH,EAAejjH,MAAQ4iH,EAAcx5C,YAC1E,MACJ,IAAK,SACwB,QAArB25C,GAAmD,WAArBA,EAC9Bx1C,EAAgB01C,EAAe1gH,KAAO0gH,EAAejjH,MAAQ,EAAI4iH,EAAcx5C,YAAc,EAG7FqE,EAAew1C,EAAe5gH,IAAM4gH,EAAeniH,OAAS,EAAI8hH,EAAc76F,aAAe,EAMzG66F,EAAc/gH,MAAMo2B,UAApB,oBAA6CpjB,KAAK06B,MAAMg+B,GAAxD,eAA4E14D,KAAK06B,MAAMk+B,GAAvF,OAGA,IAAM21C,EAAcR,EAAc7hH,wBAE5B8hF,EAAO5hD,SAAS6J,gBAEhBu4E,EAAe5hG,OAAO6hG,aAAezgC,EAAK1Z,aAE1Co6C,EAAc9hG,OAAO+hG,YAAc3gC,EAAKxZ,YAC9C,OAAO+5C,EAAY7gH,MAAQ,GAAK6gH,EAAY/gH,KAAO,GAAK+gH,EAAY5gH,OAAS+gH,GACzEH,EAAY9gH,QAAU+gH,M,IAyBlC,SAAS,GAAiBV,EAAaC,EAAeC,EAAWC,EAAcW,GAE3E,IAAIC,EAAgB7iH,MAAMyL,QAAQu2G,GAAaA,EAA+BA,EAAUhqG,MAAMipG,IAExF6B,EAAoB,CACtB,MAAO,SAAU,OAAQ,QAAS,WAAY,YAAa,cAAe,eAAgB,WAAY,cACtG,YAAa,gBAGX1qH,EAAY2pH,EAAc3pH,UAE1B2qH,EAAqB,SAACC,GACxB,MAA6BA,EAAgBhrG,MAAM,KAAnD,mBAAOirG,EAAP,KAAgBC,EAAhB,KAEMxoF,EAAU,GAQhB,OAPIkoF,IACAloF,EAAQrhC,KAAR,UAAgBupH,EAAhB,YAA6BK,IACzBC,GACAxoF,EAAQrhC,KAAR,UAAgBupH,EAAhB,YAA6BK,EAA7B,YAAwCC,IAE5CxoF,EAAQ5xB,QAAQ,SAACq6G,GAAgB/qH,EAAUE,IAAI6qH,MAE5CzoF,GAGPkoF,GACAE,EAAkBh6G,QAAQ,SAACs6G,GAAwBhrH,EAAU6I,OAAV,UAAoB2hH,EAApB,YAAiCQ,MAIxF,IAAIC,EAAUR,EAAcjI,UAAU,SAAA72E,GAAG,MAAY,SAARA,IACzCs/E,GAAW,GACXP,EAAkBh6G,QAAQ,SAAU0K,GAC+B,MAA3DqvG,EAAc/nH,KAAK,SAAAipC,GAAG,OAA+B,IAA3BA,EAAIu/E,OAAO,IAAM9vG,MAC3CqvG,EAAc7kF,OAAOqlF,IAAW,EAAsB7vG,KAOlE,IAMI+vG,EANEviH,EAAQ+gH,EAAc/gH,MAC5BA,EAAMvB,SAAW,WACjBuB,EAAMQ,IAAM,IACZR,EAAMU,KAAO,IACbV,EAAM,eAAiB,YAIvB,IAjDoF,EAiDhFwiH,GAAe,EAjDiE,cAkD9DX,GAlD8D,IAkDpF,2BAAqC,CAEjC,IAAIY,EAAeV,EAFlBQ,EAAgC,SAGjC,GAAIrC,GAAgBwC,iBAAiB5B,EAAaC,EAAewB,EAAetB,GAAe,CAC3FuB,GAAe,EACf,MAGAZ,GACAa,EAAa36G,QAAQ,SAACq6G,GAAgB/qH,EAAU6I,OAAOkiH,MA3DqB,8BAoEpF,OANKK,IAGDT,EADAQ,EAAgBV,EAAc,IAE9B3B,GAAgBwC,iBAAiB5B,EAAaC,EAAewB,EAAetB,IAEzEsB,EAUX,SAASI,KACL,OAAO,IAAI,G,sBAkBTC,E,sDAENA,EAAuB5tH,UAAO,SAAwCC,GAAK,OAAO,IAAKA,GAAK2tH,IAC5FA,EAAuBvpH,WAAQ,KAA0B,CAAEC,MAAOspH,EAAwBrpH,QAAS,WAAc,OAAOopH,MAA8CtnG,WAAY,SAC/JunG,EAAuB7M,gBAAkB,YAAiB,CAAEx8G,QAASopH,GAAyCrpH,MAAOspH,EAAwBvnG,WAAY,S,uBAKtKwnG,E,mIAKF,SAAM7sH,GACF,GAAIA,EAAO,CAEP,IAAM8sH,EAAY9sH,EAAMub,OAAOyF,MAAM,KACrC,GAAyB,IAArB8rG,EAAUlqH,QAAgBm6G,GAAS+P,EAAU,IAC7C,MAAO,CAAE70E,KAAM4kE,GAAUiQ,EAAU,IAAKprG,MAAO,KAAM6uB,IAAK,MAEzD,GAAyB,IAArBu8E,EAAUlqH,QAAgBm6G,GAAS+P,EAAU,KAAO/P,GAAS+P,EAAU,IAC5E,MAAO,CAAE70E,KAAM4kE,GAAUiQ,EAAU,IAAKprG,MAAOm7F,GAAUiQ,EAAU,IAAKv8E,IAAK,MAE5E,GAAyB,IAArBu8E,EAAUlqH,QAAgBm6G,GAAS+P,EAAU,KAAO/P,GAAS+P,EAAU,KAAO/P,GAAS+P,EAAU,IACtG,MAAO,CAAE70E,KAAM4kE,GAAUiQ,EAAU,IAAKprG,MAAOm7F,GAAUiQ,EAAU,IAAKv8E,IAAKssE,GAAUiQ,EAAU,KAGzG,OAAO,O,oBAMX,SAAOp0E,GACH,OAAOA,EAAI,UACJA,EAAKT,KADD,YACS8kE,GAASrkE,EAAKh3B,OAASy7F,GAAUzkE,EAAKh3B,OAAS,GADxD,YAC8Dq7F,GAASrkE,EAAKnI,KAAO4sE,GAAUzkE,EAAKnI,KAAO,IAChH,O,CA5B4B,I,OA+BxCs8E,EAA0B7tH,UAAO,SAA2CC,GAAK,OAAO8tH,GAAuC9tH,GAAK4tH,IACpIA,EAA0BxpH,WAAQ,KAA0B,CAAEC,MAAOupH,EAA2BtpH,QAASspH,EAA0B7tH,Y,KAC7H+tH,GAAuD,KAA6B,IAUpFC,GAAkC,CACpChsH,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,GAGL8kG,GAA2B,CAC7BjsH,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,G,kBAOL+kG,E,8BAcF,WAAYC,EAAkBC,EAAQC,EAAQC,EAAWC,EAAMxrH,EAAS2jH,EAAUpD,EAAWkL,EAAc7hH,EAAW8hH,GAAe,+BACjIhvH,KAAK0uH,iBAAmBA,EACxB1uH,KAAK2uH,OAASA,EACd3uH,KAAK4uH,OAASA,EACd5uH,KAAK6uH,UAAYA,EACjB7uH,KAAK8uH,KAAOA,EACZ9uH,KAAKsD,QAAUA,EACftD,KAAKinH,SAAWA,EAChBjnH,KAAK6jH,UAAYA,EACjB7jH,KAAK+uH,aAAeA,EACpB/uH,KAAKkN,UAAYA,EACjBlN,KAAKgvH,gBAAkBA,EACvBhvH,KAAKivH,MAAQ,KACbjvH,KAAKmgH,WAAY,EAWjBngH,KAAKkvH,WAAY,EAcjBlvH,KAAKusH,UAAY,CAAC,cAAe,eAAgB,WAAY,aAQ7DvsH,KAAKmvH,WAAa,IAAI,IAMtBnvH,KAAKwoH,SAAW,IAAI,IAMpBxoH,KAAKwnB,OAAS,IAAI,IAClBxnB,KAAK2qB,UAAY,SAACynF,KAClBpyG,KAAK4qB,WAAa,aAClB5qB,KAAKovH,iBAAmB,aACxBpvH,KAAKqvH,kBAAoB/rH,EAAQoB,SAASR,UAAU,kBAAM,EAAKorH,0B,qBAKnE,WACI,OAAOtvH,KAAKmgH,W,IAMhB,SAAa5+G,GACTvB,KAAKmgH,UAAsB,KAAV5+G,GAAiBA,GAAmB,UAAVA,EACvCvB,KAAKuvH,UACLvvH,KAAKivH,MAAMn7F,SAASssF,iBAAiBpgH,KAAKmgH,a,8BAOlD,SAAiBnxG,GAAMhP,KAAK2qB,UAAY3b,I,+BAKxC,SAAkBA,GAAMhP,KAAK4qB,WAAa5b,I,uCAK1C,SAA0BA,GAAMhP,KAAKovH,iBAAmBpgH,I,8BAKxD,SAAiB+d,GAAc/sB,KAAKgtB,SAAWD,I,sBAK/C,SAAS6iB,GAEL,IAAMruC,EAAQquC,EAAEruC,MAChB,GAAIA,QACA,OAAO,KAGX,IAAMojH,EAAU3kH,KAAKwvH,gBAAgBxvH,KAAK+uH,aAAatF,UAAUloH,IACjE,OAAKvB,KAAK6jH,UAAUr/B,QAAQmgC,GAGxB3kH,KAAKoiH,SAAWuC,EAAQjgE,OAAO,GAAQpgD,KAAKtE,KAAKoiH,UAC1C,CAAE,QAAW,CAAEqN,eAAgBzvH,KAAKoiH,UAE3CpiH,KAAKqiH,SAAWsC,EAAQhgE,MAAM,GAAQrgD,KAAKtE,KAAKqiH,UACzC,CAAE,QAAW,CAAEqN,cAAe1vH,KAAKqiH,eAD9C,EALW,CAAE,QAAW,CAAEsN,QAAS//E,EAAEruC,U,wBAazC,SAAWA,GACPvB,KAAK4vH,OAAS5vH,KAAKwvH,gBAAgBxvH,KAAK+uH,aAAatF,UAAUloH,IAC/DvB,KAAK6vH,iBAAiB7vH,KAAK4vH,U,8BAO/B,SAAiBruH,GAAyB,IAAlBuuH,EAAkB,wDAEhCC,EAAoBxuH,IAAUvB,KAAKgwH,YACrCD,IACA/vH,KAAKgwH,YAAczuH,EACnBvB,KAAK4vH,OAAS5vH,KAAKwvH,gBAAgBxvH,KAAK0uH,iBAAiBv0F,MAAM54B,MAE/DwuH,GAAsBD,GACtB9vH,KAAK2qB,UAAU3qB,KAAK4vH,OAAS5vH,KAAK+uH,aAAa/F,QAAQhpH,KAAK4vH,QAAqB,KAAVruH,EAAe,KAAOA,GAE7FuuH,GAAc9vH,KAAK4vH,QACnB5vH,KAAK6vH,iBAAiB7vH,KAAK4vH,U,oBAMnC,WAAW,QAAS5vH,KAAKivH,Q,kBAOzB,WAAI,WACA,IAAKjvH,KAAKuvH,SAAU,CAEhB,IAAMU,EAAKjwH,KAAK8uH,KAAK/tG,wBAAwB,IAC7C/gB,KAAKivH,MAAQjvH,KAAK4uH,OAAO5tG,gBAAgBivG,GACzCjwH,KAAKkwH,mBAAmBlwH,KAAKivH,MAAM30F,SAAS13B,eAC5C5C,KAAKmwH,uBAAuBnwH,KAAKivH,MAAMn7F,UACvC9zB,KAAKowH,+BAA+BpwH,KAAKivH,MAAMn7F,UAC/C9zB,KAAKivH,MAAMn7F,SAASu8F,WACpBrwH,KAAKivH,MAAMn7F,SAAS8rF,WAAW5/G,KAAK+uH,aAAa/F,QAAQhpH,KAAK4vH,SAE9D5vH,KAAKivH,MAAMn7F,SAASw8F,iBAAiB,SAACnM,GAClC,EAAKvE,WAAWuE,GAChB,EAAKx5F,UAAUw5F,GACf,EAAKv5F,eAET5qB,KAAKivH,MAAMsB,kBAAkB/uG,gBAC7BxhB,KAAKivH,MAAMn7F,SAASssF,iBAAiBpgH,KAAKgtB,UACnB,SAAnBhtB,KAAKqY,WACL8S,OAAOwf,SAASv/B,cAAcpL,KAAKqY,WAAWP,YAAY9X,KAAKivH,MAAM30F,SAAS13B,eAGlF,GAAa5C,KAAKivH,MAAM30F,SAAS13B,cAAe5C,KAAKwnB,QAAQ,GAC7DxnB,KAAKivH,MAAMn7F,SAAShF,QACpBo7F,GAAalqH,KAAKsD,QAAStD,KAAKkN,UAAWlN,KAAKkvH,UAAW,kBAAM,EAAK5pF,SAAStlC,KAAKwnB,OAAQ,GAAI,CAACxnB,KAAK2uH,OAAO/rH,cAAe5C,KAAKivH,MAAM30F,SAAS13B,mB,mBAOxJ,WACQ5C,KAAKuvH,WACLvvH,KAAK4uH,OAAOpjH,OAAOxL,KAAK4uH,OAAO3lH,QAAQjJ,KAAKivH,MAAM7tG,WAClDphB,KAAKivH,MAAQ,KACbjvH,KAAKwnB,OAAOtF,OACZliB,KAAKgvH,gBAAgBh4G,kB,oBAO7B,WACQhX,KAAKuvH,SACLvvH,KAAKslC,QAGLtlC,KAAKqrF,S,wBAab,SAAWpxC,GACHj6C,KAAKuvH,UACLvvH,KAAKivH,MAAMn7F,SAASy1F,WAAWtvE,K,oBAMvC,WAAWj6C,KAAK4qB,e,yBAKhB,SAAY3lB,IACJA,EAAO,SAAeA,EAAO,UAC7BjF,KAAKovH,qB,yBAMb,WACIpvH,KAAKslC,QACLtlC,KAAKqvH,kBAAkBz5G,gB,oCAM3B,SAAuB46G,GAAkB,WACrC,CAAC,cAAe,kBAAmB,gBAAiB,iBAAkB,iBAAkB,eAAgB,UACpG,UAAW,aAAc,cAAe,iBAAkB,eAAgB,mBACzEn9G,QAAQ,SAAC6vD,QACez+D,IAArB,EAAKy+D,KACLstD,EAAmBttD,GAAc,EAAKA,MAG9CstD,EAAmB7gB,UAAY3vG,KAAK2vG,WAAa3vG,KAAK4vH,S,gCAM1D,SAAmBhtH,GACf5C,KAAK6uH,UAAU4B,SAAS7tH,EAAe,iBACvC5C,KAAK6uH,UAAU4B,SAAS7tH,EAAe,QAChB,SAAnB5C,KAAKqY,WACLrY,KAAK6uH,UAAU4B,SAAS7tH,EAAe,iB,4CAO/C,SAA+B4tH,GAAkB,WAC7CA,EAAmBhI,SAAStkH,UAAU,SAAAwsH,GAAa,OAAI,EAAKlI,SAAStmG,KAAKwuG,KAC1EF,EAAmBvwF,OAAO/7B,UAAU,SAAA+1C,GAChC,EAAKk1E,WAAWjtG,KAAK+3B,IACE,IAAnB,EAAKi1E,WAAyC,WAAnB,EAAKA,WAChC,EAAK5pF,Y,8BAQjB,SAAiB20D,GAEb,IAAM14F,EAAQvB,KAAK0uH,iBAAiB3rG,OAAOk3E,GAC3Cj6F,KAAKgwH,YAAczuH,EACnBvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK2uH,OAAO/rH,cAAe,QAASrB,GAC3DvB,KAAKuvH,WACLvvH,KAAKivH,MAAMn7F,SAAS8rF,WAAW5/G,KAAK+uH,aAAa/F,QAAQ/uB,IACzDj6F,KAAK4qB,gB,6BAOb,SAAgBqvB,GAEZ,IAAM0qE,EAAU1qE,EAAO,IAAI,GAAQA,EAAKT,KAAMS,EAAKh3B,MAAOg3B,EAAKnI,KAAO,KACtE,OAAO9xC,KAAK6jH,UAAUr/B,QAAQmgC,GAAWA,EAAU,O,kCAKvD,WACI,GAAK3kH,KAAKivH,MAAV,CAIA,IAAI5C,EAUJ,GARIA,EAD+B,iBAAxBrsH,KAAK4wH,eACEzlG,OAAOwf,SAASv/B,cAAcpL,KAAK4wH,gBAE5C5wH,KAAK4wH,0BAA0Bv7C,YACtBr1E,KAAK4wH,eAGL5wH,KAAK2uH,OAAO/rH,cAE1B5C,KAAK4wH,iBAAmBvE,EACxB,MAAM,IAAIh4F,MAAM,0FAEpB,GAAiBg4F,EAAarsH,KAAKivH,MAAM30F,SAAS13B,cAAe5C,KAAKusH,UAA8B,SAAnBvsH,KAAKqY,gB,UAG9Fo2G,EAAmBluH,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKiuH,GAAoB,KAAyB,IAAyB,KAAyB,KAAoB,KAAyB,KAA0B,KAAyB,KAAmB,KAAyB,KAAkC,KAAyB,KAAgB,KAAyB,IAAuB,KAAyB,IAAc,KAAyB,IAAiB,KAAyB,KAAW,KAAyB,OACxkBA,EAAmBhuH,UAAO,KAAyB,CAAEC,KAAM+tH,EAAoB9tH,UAAW,CAAC,CAAC,QAAS,gBAAiB,KAAM4X,SAAU,EAAGC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,GACvM,KAAkB,QAAS,SAAqDmwB,GAAU,OAAOlwB,EAAIivH,iBAAiB/+F,EAAOtF,OAAOjrB,QAApI,CAA+I,SAAU,SAAsDuwB,GAAU,OAAOlwB,EAAIivH,iBAAiB/+F,EAAOtF,OAAOjrB,OAAO,IAA1Q,CAAoR,OAAQ,WAAwD,OAAOK,EAAIkvH,WACxV,EAALnvH,GACF,KAAsB,WAAYC,EAAIorB,WACrC7qB,OAAQ,CAAE+sH,UAAW,YAAa3C,UAAW,YAAav/F,SAAU,WAAYmpF,YAAa,cAAeiO,gBAAiB,kBAAmBlO,cAAe,gBAAiB0L,eAAgB,iBAAkB8H,eAAgB,iBAAkBnH,aAAc,eAAgBH,QAAS,UAAWC,QAAS,UAAWjN,WAAY,aAAc8O,YAAa,cAAe9N,aAAc,eAAgBC,gBAAiB,kBAAmB1G,UAAW,YAAat3F,UAAW,YAAau4G,eAAgB,kBAAoBzuG,QAAS,CAAEgtG,WAAY,aAAc3G,SAAU,WAAYhhG,OAAQ,UAAY9O,SAAU,CAAC,iBAAkBpW,SAAU,CAAC,KAA0B,CAACisH,GAAiCC,GAA0B,KAAwB,Q,uBAsG9uBuC,E,8BAIF,WAAYpb,GAAI,oBACZ31G,KAAK21G,KAAOA,G,sBAKhB,WAAY,OAAQ31G,KAAKivB,WAAajvB,KAAKi6C,KAAKh3B,QAAUjjB,KAAKy0G,cAAgBz0G,KAAKgtB,c,UAExF+jG,EAAqBxwH,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKuwH,GAAsB,KAAyB,MACvIA,EAAqB5qH,UAAO,KAAyB,CAAEzF,KAAMqwH,EAAsBpwH,UAAW,CAAC,CAAC,GAAI,uBAAwB,KAAMoC,UAAW,CAAC,EAAG,aAAcwV,SAAU,GAAIC,aAAc,SAA2C7W,EAAIC,GAAgB,EAALD,GAC7O,KAAmB,aAAcC,EAAIqtB,SAArC,CAA+C,aAAcrtB,EAAIqtB,SAAjE,CAA2E,aAAcrtB,EAAIovH,UAA7F,CAAwG,UAAWpvH,EAAIovH,UAAvH,CAAkI,SAAUpvH,EAAIizG,UAC/I1yG,OAAQ,CAAEsyG,aAAc,eAAgBx6D,KAAM,OAAQjtB,SAAU,WAAY6nF,QAAS,UAAW5lF,SAAU,YAAcgiG,MAAO1Y,GAAMnyG,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAuCqB,EAAIC,GAAgB,EAALD,GACzN,KAAc,GACP,EAALA,GACF,KAAyBC,EAAI+zG,KAAKub,eAAetvH,EAAIq4C,QACpDnhC,OAAQ,CAAC,mKAAoKtS,cAAe,EAAGwiB,gBAAiB,I,uBA6CnNmoG,E,8BAIF,WAAYxb,GAAI,oBACZ31G,KAAK21G,KAAOA,EACZ31G,KAAKigC,OAAS,IAAI,K,0BAMtB,SAAYhd,GAASjjB,KAAKigC,OAAO/d,KAAK,IAAI,GAAQliB,KAAKi6C,KAAKT,KAAM4kE,GAAUn7F,GAAQ,M,wBAKpF,SAAWu2B,GAAQx5C,KAAKigC,OAAO/d,KAAK,IAAI,GAAQk8F,GAAU5kE,GAAOx5C,KAAKi6C,KAAKh3B,MAAO,Q,UAEtFkuG,EAA8B5wH,UAAO,SAA+CC,GAAK,OAAO,IAAKA,GAAK2wH,GAA+B,KAAyB,MAClKA,EAA8BhrH,UAAO,KAAyB,CAAEzF,KAAMywH,EAA+BxwH,UAAW,CAAC,CAAC,qCAAsCwB,OAAQ,CAAE83C,KAAM,OAAQjtB,SAAU,WAAYpK,OAAQ,SAAUg8B,MAAO,SAAWz8B,QAAS,CAAE8d,OAAQ,UAAY75B,MAAO,EAAGC,KAAM,EAAGC,OAAQ,WAwB9R,MAAO,CAAC,CAAC,aAnBGwjH,UAAH,kIAmBuB,QAbpBA,UAAH,kIAayC,EAAG,gBAAiB,EAAG,WAAY,QAAS,UAAW,CAAC,EAAG,QAAS,EAAG,QAAS,WAAY,CAAC,aAPnIA,UAAH,gIAO6J,QAD1JA,UAAH,gIAC+K,EAAG,gBAAiB,EAAG,WAAY,QAAS,UAAW,CAAC,EAAG,WAAcxpH,SAAU,SAAgDqB,EAAIC,GAAgB,EAALD,IACxU,KAAsB,EAAG,SAAU,GACnC,KAAkB,SAAU,SAAyEmwB,GAAU,OAAOlwB,EAAIwvH,YAAYt/F,EAAOtF,OAAOjrB,SACpJ,KAAkB,EAAGi3G,GAAiD,EAAG,EAAG,SAAU,GACtF,OACA,KAAsB,EAAG,SAAU,GACnC,KAAkB,SAAU,SAAyE1mF,GAAU,OAAOlwB,EAAIyvH,WAAWv/F,EAAOtF,OAAOjrB,SACnJ,KAAkB,EAAGo3G,GAAiD,EAAG,EAAG,SAAU,GACtF,QACO,EAALh3G,IACF,KAAkB,WAAYC,EAAIorB,SAAlC,CAA4C,QAAqB,MAAZprB,EAAIq4C,KAAe,KAAOr4C,EAAIq4C,KAAKh3B,OACxF,KAAiB,GACjB,KAAkB,UAAWrhB,EAAIghB,QACjC,KAAiB,GACjB,KAAkB,WAAYhhB,EAAIorB,SAAlC,CAA4C,QAAqB,MAAZprB,EAAIq4C,KAAe,KAAOr4C,EAAIq4C,KAAKT,MACxF,KAAiB,GACjB,KAAkB,UAAW53C,EAAIg9C,SAChCr4C,WAAY,CAAC,IAAgB,IAAuB,KAAyCuS,OAAQ,CAAC,qIAAsItS,cAAe,EAAGwiB,gBAAiB,I,KAuY3P,IAAI0xB,KAAK,KAAM,GAAI,IAEpB,IAAIA,KAAK,KAAM,GAAI,I,sBAsyCzC42E,E,4FAQF,WAAmB,MAAO,CAAEvS,SAAUuS,O,UAE1CA,EAAoB/wH,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK8wH,IACtFA,EAAoBp4G,UAAO,KAAwB,CAAExY,KAAM4wH,IAC3DA,EAAoBn4G,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAc,Q,uBAyBxEm4G,E,YACF,iCACIvxH,KAAKkvH,WAAY,EACjBlvH,KAAKusH,UAAY,CAAC,cAAe,eAAgB,WAAY,e,OAGrEgF,EAAkBhxH,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAK+wH,IAClFA,EAAkB3sH,WAAQ,KAA0B,CAAEC,MAAO0sH,EAAmBzsH,QAASysH,EAAkBhxH,UAAMqmB,WAAY,SAC1G2qG,EAAkBjQ,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAuC,OAAO,IAAIysH,GAAwB1sH,MAAO0sH,EAAmB3qG,WAAY,S,uBAU7L4qG,E,sDAENA,EAAUjxH,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKgxH,IAClEA,EAAU/wH,UAAO,KAAyB,CAAEC,KAAM8wH,EAAW7wH,UAAW,CAAC,CAAC,GAAI,EAAG,a,uBAW3E8wH,E,8BAIF,WAAY/uH,GAAU,oBAClB1C,KAAK0C,WAAaA,EAClB1C,KAAKmgH,WAAY,G,qBAYrB,WAAiB,OAAOngH,KAAKmgH,W,IAN7B,SAAa5+G,GACTvB,KAAKmgH,UAA2C,KAAZ5+G,IAA4B,IAAVA,M,UAO9DkwH,EAAgBlxH,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKixH,GAAiB,KAAyB,OACxHA,EAAgBhxH,UAAO,KAAyB,CAAEC,KAAM+wH,EAAiB9wH,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMoC,UAAW,CAAC,EAAG,iBAAkBwV,SAAU,EAAGC,aAAc,SAAsC7W,EAAIC,GAAgB,EAALD,GAC5N,KAAmB,WAAYC,EAAIorB,WAClC7qB,OAAQ,CAAE6qB,SAAU,c,uBAiBvB0kG,E,YAIF,WAAYC,GAAQ,oBAChB3xH,KAAK2xH,SAAWA,EAChB3xH,KAAKusH,UAAY,SACjBvsH,KAAKuvH,QAAS,I,OAGtBmC,EAAgBnxH,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKkxH,GAAiB,KAAyB,aAAW,kBAAM,QACzIA,EAAgBjxH,UAAO,KAAyB,CAAEC,KAAMgxH,EAAiB/wH,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMe,eAAgB,SAAwCC,EAAIC,EAAKC,GAG5K,IAAIC,EAH6L,EAALH,GAC5L,KAAsBE,EAAU,GAAiB,GAC1C,EAALF,GAEF,KAAsBG,EAAK,UAA0BF,EAAIgwH,UAAY9vH,IACpEyW,SAAU,EAAGC,aAAc,SAAsC7W,EAAIC,GAAgB,EAALD,GACjF,KAAkB,kBAAmB,SAA4DmwB,GAAU,OAAOlwB,EAAI+vH,SAASv7E,UAAUtkB,IAAzI,CAAqJ,oBAAqB,SAA8DA,GAAU,OAAOlwB,EAAI+vH,SAASv7E,UAAUtkB,IAAhR,CAA4R,eAAgB,SAAyDA,GAAU,OAAOlwB,EAAI+vH,SAASv7E,UAAUtkB,IAA7Y,CAAyZ,cAAe,SAAwDA,GAAU,OAAOlwB,EAAI+vH,SAASv7E,UAAUtkB,IAAxgB,CAAohB,gBAAiB,SAA0DA,GAAU,OAAOlwB,EAAI+vH,SAASv7E,UAAUtkB,IAAvoB,CAAmpB,gBAAiB,SAA0DA,GAAU,OAAOlwB,EAAI+vH,SAASv7E,UAAUtkB,KAC/vB,EAALnwB,IACF,KAAmB,cAAeC,EAAI2qH,WACtC,KAAmB,iBAAiB,EAApC,CAA0C,OAAQ3qH,EAAI+vH,SAASpC,c,uBAyCjEsC,E,8BAKF,WAAYF,EAAU5kH,GAAW,oBAC7B/M,KAAK2xH,SAAWA,EAChB3xH,KAAK+M,YAAcA,EACnB/M,KAAK8xH,SAAW/kH,EAAYnK,e,+BAKhC,WAAqB,OAAO5C,KAAK+M,YAAYnK,kB,UAEjDivH,EAAkBtxH,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKqxH,GAAmB,KAAyB,aAAW,kBAAM,MAAe,KAAyB,OACvLA,EAAkBpxH,UAAO,KAAyB,CAAEC,KAAMmxH,EAAmBlxH,UAAW,CAAC,CAAC,GAAI,oBAAqB,KAAMoC,UAAW,CAAC,gBAAiB,OAAQ,EAAG,mBAAoBwV,SAAU,EAAGC,aAAc,SAAwC7W,EAAIC,GAAgB,EAALD,GAC/P,KAAmB,gBAAiBC,EAAI+vH,SAASpC,a,uBAiEnDwC,E,8BAUF,WAAY/C,EAAiB52F,EAAQlrB,EAAW5J,EAASyJ,EAAa8hH,EAAWmD,GAAS,+BACtFhyH,KAAKgvH,gBAAkBA,EACvBhvH,KAAKkN,UAAYA,EACjBlN,KAAKsD,QAAUA,EACftD,KAAK+M,YAAcA,EACnB/M,KAAK6uH,UAAYA,EACjB7uH,KAAKiyH,SAAW,IAAIxuH,EAAA,EAIpBzD,KAAKkyH,OAAQ,EAQblyH,KAAKmyH,WAAa,IAAI,IACtBnyH,KAAKusH,UAAYn0F,EAAOm0F,UACxBvsH,KAAKqY,UAAY+f,EAAO/f,UACxBrY,KAAKkvH,UAAY92F,EAAO82F,UACxBlvH,KAAK+S,QAAUi/G,EAAY,SAAW,UACtChyH,KAAKqvH,kBAAoB/rH,EAAQoB,SAASR,UAAU,WAAQ,EAAKkuH,mB,uBAKrE,WACIpyH,KAAKqyH,yBACDryH,KAAKkyH,OACLlyH,KAAKsyH,sB,yBAOb,SAAYrtH,GACJA,EAAQoT,WAAarY,KAAKkyH,OAC1BlyH,KAAKuyH,gBAAgBvyH,KAAKqY,WAE1BpT,EAAQsnH,YAActnH,EAAQsnH,UAAUiG,eACxCxyH,KAAKqyH,2B,oBAOb,WAAW,OAAOryH,KAAKkyH,Q,kBAKvB,WACSlyH,KAAKkyH,QACNlyH,KAAKkyH,OAAQ,EACblyH,KAAKuyH,gBAAgBvyH,KAAKqY,WAC1BrY,KAAKmyH,WAAWjwG,MAAK,GACrBliB,KAAKsyH,uB,+BAMb,WAAiB,WACbpI,GAAalqH,KAAKsD,QAAStD,KAAKkN,UAAWlN,KAAKkvH,UAAW,kBAAM,EAAK5pF,SAAStlC,KAAKiyH,SAAUjyH,KAAKyyH,MAAQ,CAACzyH,KAAK0yH,aAAa9vH,eAAiB,GAAI5C,KAAK2yH,QAAU,CAAC3yH,KAAK2yH,QAAQC,oBAAsB,GAAI,sC,mBAM9M,WACQ5yH,KAAKkyH,QACLlyH,KAAKkyH,OAAQ,EACblyH,KAAK6yH,kBACL7yH,KAAKiyH,SAASpuH,OACd7D,KAAKmyH,WAAWjwG,MAAK,GACrBliB,KAAKgvH,gBAAgBh4G,kB,oBAO7B,WACQhX,KAAKuvH,SACLvvH,KAAKslC,QAGLtlC,KAAKqrF,S,yBAMb,WACIrrF,KAAK6yH,kBACL7yH,KAAKiyH,SAASpuH,OACd7D,KAAKqvH,kBAAkBz5G,gB,uBAM3B,SAAU0S,GAAK,WAGL3L,EAAM2L,EAAMi/F,MAEZuL,EAAe9yH,KAAK+yH,mBAEtB/oH,GAAY,EAEZgpH,GAAmB,EAEjBC,EAAoBjzH,KAAKkzH,mBAAmB5qG,GAYlD,IAXK2qG,GAAqBH,EAAa3uH,QACnC2uH,EAAaz/G,QAAQ,SAAC8/G,EAAaxpH,GAC3BwpH,EAAYvmG,SAA4BtE,EAAMkE,UAC9CwmG,GAAmB,GAEnBG,IAAgB,EAAKjmH,UAAUud,gBAC/BzgB,EAAWL,KAKnBgT,IAAQwpG,GAAII,OAAS5pG,IAAQwpG,GAAIE,OAOrC,GAAI4M,GAAqBD,EAAkB,CAEvC,GADAhzH,KAAKqrF,OACDynC,EAAa3uH,OAAQ,CACrB,OAAQwY,GACJ,KAAKwpG,GAAIY,UACL/8G,EAAWuU,KAAKG,IAAI1U,EAAW,EAAG8oH,EAAa3uH,OAAS,GACxD,MACJ,KAAKgiH,GAAIU,QACL,GAAI7mH,KAAKozH,cAA6B,IAAdppH,EAAiB,CACrCA,EAAW8oH,EAAa3uH,OAAS,EACjC,MAEJ6F,EAAWuU,KAAKukC,IAAI94C,EAAW,EAAG,GAClC,MACJ,KAAKm8G,GAAIQ,KACL38G,EAAW,EACX,MACJ,KAAKm8G,GAAIO,IACL18G,EAAW8oH,EAAa3uH,OAAS,EAGzC2uH,EAAa9oH,GAAU8kB,QAE3BxG,EAAM4E,uBA7BF8lG,IAAwC,IAAnBhzH,KAAKkvH,WAAyC,WAAnBlvH,KAAKkvH,WACrDlvH,KAAKslC,U,uBAkCjB,WAAc,OAAOtlC,KAAK+M,YAAYnK,cAAcD,UAAUiqB,SAAS,Y,gCAKvE,SAAmBtE,GACf,OAAOtoB,KAAK2yH,QAAQC,mBAAmBhmG,SAA4BtE,EAAMkE,U,8BAK7E,WACI,OAAkB,MAAdxsB,KAAKyyH,MACE,GAEJzyH,KAAKyyH,MAAMb,UAAUz8G,OAAO,SAAA7D,GAAI,OAAKA,EAAK0b,WAAUvjB,IAAI,SAAA6H,GAAI,OAAIA,EAAK5O,WAAWE,kB,2BAK3F,WACQ5C,KAAKuvH,UAAYvvH,KAAKyyH,OACtBzyH,KAAKqyH,uBAAwC,YAAjBryH,KAAK+S,QAC7B,GAAiB/S,KAAK2yH,QAAQb,SAAU9xH,KAAKqzH,gBAAkBrzH,KAAK0yH,aAAa9vH,cAAe5C,KAAKusH,UAA8B,SAAnBvsH,KAAKqY,WACrHrY,KAAKszH,mBAAmBtzH,KAAKusH,c,gCAOzC,SAAmBA,GACf,OAAOhiH,MAAMyL,QAAQu2G,GAAaA,EAAU,GAAwBA,EAAUhqG,MAAM,KAAK,K,6BAK7F,WAEI,IAAMgxG,EAAWvzH,KAAK6uH,UACtB,GAAI7uH,KAAK0yH,aAAc,CAEnB,IAEMc,EAAsBxzH,KAAK0yH,aAAa9vH,cAC9C2wH,EAASz7G,YAHe9X,KAAK+M,YAAYnK,cAGH4wH,GACtCD,EAASE,YAAYD,EAAqB,YAC1CD,EAASE,YAAYD,EAAqB,aAE1CxzH,KAAKqzH,iBACLE,EAAS9xG,YAAYzhB,KAAKkN,UAAU41B,KAAM9iC,KAAKqzH,gBAC/CrzH,KAAKqzH,eAAiB,Q,6BAO9B,WAAgC,IAAhBh7G,EAAgB,uDAAJ,KAExB,GADArY,KAAK6yH,kBACa,SAAdx6G,EAAsB,CAEtB,IAAMk7G,EAAWvzH,KAAK6uH,UAEhB2E,EAAsBxzH,KAAK0yH,aAAa9vH,cAExC8wH,EAAgB1zH,KAAKqzH,eAAiBrzH,KAAKqzH,gBAAkBE,EAAS17G,cAAc,OAE1F07G,EAASI,SAASD,EAAe,WAAY,YAC7CH,EAASI,SAASH,EAAqB,WAAY,UACnDD,EAASI,SAASD,EAAe,UAAW,QAC5CH,EAASz7G,YAAY47G,EAAeF,GACpCD,EAASz7G,YAAY9X,KAAKkN,UAAU41B,KAAM4wF,M,oCAOlD,SAAuBnH,GACnB,GAAIvsH,KAAKyyH,MAAO,CACPlG,IACDA,EAAYvsH,KAAKszH,mBAAmBtzH,KAAKusH,YAG7C,IAAMgH,EAAWvzH,KAAK6uH,UAEhB+E,EAAkB5zH,KAAK+M,YAAYnK,cAEzC2wH,EAASM,YAAYD,EAAiB,UACtCL,EAASM,YAAYD,EAAiB,YACtC5zH,KAAKyyH,MAAMlG,UAAYA,EAMvB,IAAMuH,GAA8C,IAA9BvH,EAAUsB,OAAO,QAAiB,SAAW,WACnE0F,EAAS9C,SAASmD,EAAiBE,GAEnC,IAAMJ,EAAgB1zH,KAAKqzH,eACvBK,IACAH,EAASM,YAAYH,EAAe,UACpCH,EAASM,YAAYH,EAAe,YACpCH,EAAS9C,SAASiD,EAAeI,S,UAKjD/B,EAAYxxH,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKuxH,GAAa,KAAyB,KAA2B,KAAyB,IAAoB,KAAyB,KAAW,KAAyB,KAAgB,KAAyB,KAAoB,KAAyB,KAAmB,KAAyB,GAAW,KAC9XA,EAAYtxH,UAAO,KAAyB,CAAEC,KAAMqxH,EAAapxH,UAAW,CAAC,CAAC,GAAI,cAAe,KAAMe,eAAgB,SAAoCC,EAAIC,EAAKC,GAK5J,IAAIC,EAL6K,EAALH,IAC5K,KAAsBE,EAAU,GAAiB,GACjD,KAAsBA,EAAU,GAAiB,EAAG,KACpD,KAAsBA,EAAU,GAAmB,IAC5C,EAALF,IAEF,KAAsBG,EAAK,UAA0BF,EAAI6wH,MAAQ3wH,EAAGE,OACpE,KAAsBF,EAAK,UAA0BF,EAAI8wH,aAAe5wH,EAAGE,OAC3E,KAAsBF,EAAK,UAA0BF,EAAI+wH,QAAU7wH,EAAGE,SACrEuW,SAAU,EAAGC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,GAC7E,KAAmB,OAAQC,EAAI2tH,WAC9BptH,OAAQ,CAAE+vH,MAAO,CAAC,OAAQ,SAAU3F,UAAW,YAAal0G,UAAW,YAAa62G,UAAW,YAAan8G,QAAS,WAAaoP,QAAS,CAAEgwG,WAAY,cAAgBz5G,SAAU,CAAC,eAAgBpW,SAAU,CAAC,Q,uBA4DlNyxH,E,4FAQF,WAAmB,MAAO,CAAEhV,SAAUgV,O,UAE1CA,EAAkBxzH,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKuzH,IAClFA,EAAkB76G,UAAO,KAAwB,CAAExY,KAAMqzH,IACzDA,EAAkB56G,UAAO,KAAwB,I,uBAmB3C66G,E,YACF,iCACIh0H,KAAKi0H,UAAW,EAChBj0H,KAAKk0H,UAAW,I,OAGxBF,EAAezzH,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKwzH,IAC5EA,EAAepvH,WAAQ,KAA0B,CAAEC,MAAOmvH,EAAgBlvH,QAASkvH,EAAezzH,UAAMqmB,WAAY,SACjGotG,EAAe1S,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAoC,OAAO,IAAIkvH,GAAqBnvH,MAAOmvH,EAAgBptG,WAAY,S,KAUjL,G,YAMF,WAAYutG,EAAO19G,EAASoK,GAAY,oBACpC7gB,KAAKm0H,MAAQA,EACbn0H,KAAKyW,QAAUA,EACfzW,KAAK6gB,aAAeA,IAMtB,G,8BASF,WAAYuzG,EAAOvuF,EAAWjkB,EAAmBitG,EAAWxuG,EAA2Bg0G,GAAe,oBAClGr0H,KAAKo0H,MAAQA,EACbp0H,KAAK6lC,UAAYA,EACjB7lC,KAAK4hB,kBAAoBA,EACzB5hB,KAAK6uH,UAAYA,EACjB7uH,KAAKqgB,0BAA4BA,EACjCrgB,KAAKq0H,gBAAkBA,G,mBAO3B,SAAK/gE,EAAS9hD,GAKV,OAJKxR,KAAKs0H,aACNt0H,KAAKu0H,YAAcv0H,KAAKw0H,eAAelhE,EAAS9hD,GAChDxR,KAAKs0H,WAAat0H,KAAK4hB,kBAAkBZ,gBAAgBhhB,KAAKqgB,0BAA0BU,wBAAwB/gB,KAAKo0H,OAAQ,EAAGp0H,KAAK6lC,UAAW7lC,KAAKu0H,YAAYJ,QAE9Jn0H,KAAKs0H,a,mBAKhB,WACQt0H,KAAKs0H,aACLt0H,KAAK4hB,kBAAkBpW,OAAOxL,KAAK4hB,kBAAkB3Y,QAAQjJ,KAAKs0H,WAAWlzG,WAC7EphB,KAAKs0H,WAAa,KACdt0H,KAAKu0H,YAAY99G,UACjBzW,KAAKq0H,gBAAgBhzG,WAAWrhB,KAAKu0H,YAAY99G,SACjDzW,KAAKu0H,YAAY99G,QAAQyK,UACzBlhB,KAAKu0H,YAAc,S,4BAS/B,SAAejhE,EAAS9hD,GACpB,GAAK8hD,EAGA,IAAIA,aAAmB,IAAa,CAErC,IAAM78C,EAAU68C,EAAQx8C,mBAAmBtF,GAE3C,OADAxR,KAAKq0H,gBAAgBlzG,WAAW1K,GACzB,IAAI,GAAW,CAACA,EAAQC,WAAYD,GAG3C,OAAO,IAAI,GAAW,CAAC,CAACzW,KAAK6uH,UAAU4F,WAAf,UAA6BnhE,OATrD,OAAO,IAAI,GAAW,Q,GAmB5BohE,GAAO,a,kBAOPC,E,8BAIF,WAAYznH,GAAS,oBACjBlN,KAAKkN,UAAYA,G,yBASrB,WAAe,OAAQlN,KAAK40H,aAAsB50H,KAAK60H,YAAY70H,KAAK80H,aAA7BJ,K,yBAO3C,SAAYhrH,GAER,IAAMo5B,EAAO9iC,KAAKkN,UAAU41B,KAEtBiyF,EAAiBjyF,EAAKv3B,MAAMspE,aAE5BmgD,EAAgBnnG,WAAW1C,OAAOqoD,iBAAiB1wC,GAAM,kBAE/D,OADAA,EAAKv3B,MAAM,iBAAX,UAAiCypH,EAAgBtrH,EAAjD,MACO,kBAAMo5B,EAAKv3B,MAAM,iBAAmBwpH,K,wBAO/C,WAEI,IAAMhnD,EAAO/tE,KAAKkN,UAAU41B,KAAKr4B,wBACjC,OAAOsjE,EAAK9hE,KAAO8hE,EAAK7hE,MAAQif,OAAO+hG,a,uBAO3C,WAEI,IAAM+H,EAAWj1H,KAAKkN,UAAU2K,cAAc,OAC9Co9G,EAASptG,UAAY,0BAErB,IAAMib,EAAO9iC,KAAKkN,UAAU41B,KAC5BA,EAAKhrB,YAAYm9G,GAEjB,IAAMvrH,EAAQurH,EAASxqH,wBAAwBf,MAAQurH,EAASliD,YAEhE,OADAjwC,EAAKrhB,YAAYwzG,GACVvrH,M,UAGfirH,EAAUp0H,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKm0H,GAAW,KAAgB,OAC7FA,EAAU/vH,WAAQ,KAA0B,CAAEC,MAAO8vH,EAAW7vH,QAAS6vH,EAAUp0H,UAAMqmB,WAAY,SAKlF+tG,EAAUrT,gBAAkB,YAAiB,CAAEx8G,QAAS,WAA+B,OAAO,IAAI6vH,EAAU,aAAO,OAAe9vH,MAAO8vH,EAAW/tG,WAAY,S,uBAa7KsuG,E,sDAENA,EAAiB30H,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK00H,IAChFA,EAAiB/uH,UAAO,KAAyB,CAAEzF,KAAMw0H,EAAkBv0H,UAAW,CAAC,CAAC,uBAAwBoC,UAAW,CAAC,EAAG,UAAW,QAASwV,SAAU,EAAGC,aAAc,SAAuC7W,EAAIC,GAAgB,EAALD,GAC5N,KAAkB,4BAA8BC,EAAIo/B,cAAgB,IAAMp/B,EAAIo/B,cAAgB,MAC7F7+B,OAAQ,CAAE6+B,cAAe,iBAAmB56B,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAmCqB,EAAIC,KAAU4E,cAAe,I,KAyB5I,G,oFAQF,SAAMo2B,M,qBAQN,SAAQu4F,Q,GAKN,G,8BAOF,WAAYC,EAAgBb,EAAac,EAAkBC,GAAc,+BACrEt1H,KAAKo1H,eAAiBA,EACtBp1H,KAAKu0H,YAAcA,EACnBv0H,KAAKq1H,iBAAmBA,EACxBr1H,KAAKs1H,eAAiBA,EACtBF,EAAethG,SAASyhG,aAAarxH,UAAU,SAACixH,GAAa,EAAKK,QAAQL,KAC1En1H,KAAK48B,OAAS,IAAIr4B,QAAQ,SAACC,EAASixH,GAChC,EAAKC,SAAWlxH,EAChB,EAAKmxH,QAAUF,IAEnBz1H,KAAK48B,OAAOve,KAAK,KAAM,e,8BAQ3B,WACI,GAAIre,KAAKu0H,YAAY1zG,aACjB,OAAO7gB,KAAKu0H,YAAY1zG,aAAaiT,W,mBAU7C,SAAM8I,GACE58B,KAAKo1H,iBACLp1H,KAAK01H,SAAS94F,GACd58B,KAAK41H,0B,sBAOb,SAAST,GACLn1H,KAAK21H,QAAQR,GACbn1H,KAAK41H,yB,qBAST,SAAQT,GAAM,WACV,GAAIn1H,KAAKo1H,eACL,GAAKp1H,KAAKs1H,eAGL,CAED,IAAM,EAAUt1H,KAAKs1H,iBACjB,GAAW,EAAQj3G,KACnB,EAAQA,KAAK,SAAAue,IACM,IAAXA,GACA,EAAKi5F,SAASV,IAEnB,eAEc,IAAZ,GACLn1H,KAAK61H,SAASV,QAblBn1H,KAAK61H,SAASV,K,kCAqB1B,WAEI,IAAMW,EAAiB91H,KAAKo1H,eAAe96F,SAAS13B,cAGpD,GAFAkzH,EAAep1G,WAAWe,YAAYq0G,GACtC91H,KAAKo1H,eAAel0G,UAChBlhB,KAAKq1H,iBAAkB,CAEvB,IAAMU,EAAmB/1H,KAAKq1H,iBAAiB/6F,SAAS13B,cACxDmzH,EAAiBr1G,WAAWe,YAAYs0G,GACxC/1H,KAAKq1H,iBAAiBn0G,UAEtBlhB,KAAKu0H,aAAev0H,KAAKu0H,YAAY99G,SACrCzW,KAAKu0H,YAAY99G,QAAQyK,UAE7BlhB,KAAKo1H,eAAiB,KACtBp1H,KAAKq1H,iBAAmB,KACxBr1H,KAAKu0H,YAAc,S,GASrByB,GAAsB,CACxBC,eAAgB,EAChBC,IAAK,GAETF,GAAoBA,GAAoBC,gBAAkB,iBAC1DD,GAAoBA,GAAoBE,KAAO,M,sBAMzCC,E,8BAKF,WAAYjpH,EAAWyhH,GAAM,oBACzB3uH,KAAKkN,UAAYA,EACjBlN,KAAK2uH,OAASA,EACd3uH,KAAKi0H,UAAW,EAChBj0H,KAAKk0H,UAAW,EAChBl0H,KAAKu1H,aAAe,IAAI,K,4BAM5B,SAAczjG,IACY,IAAlB9xB,KAAKi0H,UAAqBj0H,KAAK2uH,OAAO/rH,gBAAkBkvB,EAAOtF,QAC/DxsB,KAAKw1H,QAAQQ,GAAoBC,kB,oBAOzC,SAAOnkG,GACC9xB,KAAKk0H,WAAapiG,EAAOkpE,kBACzBh7F,KAAKw1H,QAAQQ,GAAoBE,O,qBAOzC,SAAQf,GAAUn1H,KAAKu1H,aAAarzG,KAAKizG,K,sBAIzC,WAAan1H,KAAKo2H,aAAep2H,KAAKkN,UAAUud,gB,6BAIhD,WACI,IAAKzqB,KAAK2uH,OAAO/rH,cAAcgqB,SAAS+d,SAASlgB,eAAgB,CAE7D,IAAM4rG,EAAmCr2H,KAAK2uH,OAAO/rH,cAAcwI,cAA1B,kBAEnCkrH,EAAiBrL,GAA6BjrH,KAAK2uH,OAAO/rH,eAAe,IAExDyzH,GAAiBC,GAAkBt2H,KAAK2uH,OAAO/rH,eACvDksB,W,yBAMvB,WAEI,IAAMgU,EAAO9iC,KAAKkN,UAAU41B,KAEtByzF,EAAcv2H,KAAKo2H,cAGrBG,GAAeA,EAAW,OAAazzF,EAAKlW,SAAS2pG,GACpCA,EAGAzzF,GAENhU,QACf9uB,KAAKo2H,aAAe,S,UAG5BD,EAAe51H,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK21H,GAAgB,KAAyB,KAAW,KAAyB,OACzJA,EAAehwH,UAAO,KAAyB,CAAEzF,KAAMy1H,EAAgBx1H,UAAW,CAAC,CAAC,qBAAsBoC,UAAW,CAAC,OAAQ,SAAU,WAAY,MAAOwV,SAAU,EAAGC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,GAClO,KAAkB,YAAa,SAAqDmwB,GAAU,OAAOlwB,EAAI40H,OAAO1kG,IAAhH,CAA4H,QAAS,SAAiDA,GAAU,OAAOlwB,EAAI4iC,cAAc1S,KAClN,EAALnwB,IACF,KAAmB,cAAc,EAAjC,CAAuC,kBAAmBC,EAAIw/B,gBAC9D,KAAkB,2BAA6Bx/B,EAAI60H,YAAc,IAAM70H,EAAI60H,YAAc,OACxFt0H,OAAQ,CAAE8xH,SAAU,WAAYC,SAAU,WAAY9yF,eAAgB,iBAAkBs1F,SAAU,WAAYv2F,KAAM,OAAQs2F,YAAa,eAAiBt0G,QAAS,CAAEozG,aAAc,WAAa18G,mBAAoB04F,GAAKnrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,YAAa,CAAC,EAAG,kBAAmBhG,SAAU,SAAiCqB,EAAIC,GAAgB,EAALD,IAC7V,OACA,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,GAChC,KAAoB,GACpB,OACA,QACO,EAALA,GACF,KAAkB,gBAAkBC,EAAIu+B,KAAO,UAAYv+B,EAAIu+B,KAAO,KAAOv+B,EAAI80H,SAAW,yBAA2B,MACtHlwH,cAAe,I,uBA0DlBmwH,E,8BAQF,WAAYtC,EAAiBxuF,EAAW34B,EAAW0pH,EAAYC,GAAgB,+BAC3E72H,KAAKq0H,gBAAkBA,EACvBr0H,KAAK6lC,UAAYA,EACjB7lC,KAAKkN,UAAYA,EACjBlN,KAAK42H,WAAaA,EAClB52H,KAAK62H,iBAAmBA,EACxB72H,KAAK82H,4BAA8B,IAAIrzH,EAAA,EACvCzD,KAAK+2H,kBAAoB,IAAItpH,IAC7BzN,KAAKg3H,oBAAsB,CAAC,iBAC5Bh3H,KAAKi3H,WAAa,GAClBj3H,KAAKk3H,kBAAoB,CAAC,iBAAkB,WAAY,WAAY,WAAY,OAAQ,eACxFl3H,KAAKm3H,aAAe,GAEpBn3H,KAAK82H,4BAA4B5yH,UAAU,WACvC,GAAI,EAAKizH,aAAahzH,OAAQ,CAE1B,IAAMizH,EAAmB,EAAKD,aAAa,EAAKA,aAAahzH,OAAS,GACtE,GAAaizH,EAAiB98F,SAAS13B,cAAe,EAAKk0H,6BAC3D,EAAKO,oBACL,EAAKC,eAAeF,EAAiB98F,SAAS13B,mB,mBAW1D,SAAK20H,EAAWC,EAAiBlkE,EAAStrC,GAAO,WAEvCyvG,EAAchZ,GAAUz2F,EAAQ3P,WAAarY,KAAKkN,UAAU9B,cAAc4c,EAAQ3P,WAAarY,KAAKkN,UAAU41B,KAE9GywF,EAAWvzH,KAAK62H,iBAAiBa,eAAe,KAAM,MAEtDC,EAA4B33H,KAAK42H,WAAWgB,aAE5CC,EAAkB,WACf,EAAKZ,WAAW9yH,SACjBovH,EAASM,YAAY,EAAK3mH,UAAU41B,KAAM,cAC1C,EAAKu0F,sBAGb,IAAKI,EACD,MAAM,IAAIpjG,MAAJ,yCAA4CrM,EAAQ3P,WAAa,OAAjE,gCAGV,IAAMy/G,EAAc,IAAI,GAElBzvF,EAAaroC,KAAKw0H,eAAe+C,EAAWvvG,EAAQ7I,UAAYq4G,EAAiBlkE,EAASwkE,GAE5FC,GAAuC,IAArB/vG,EAAQisG,SAAqBj0H,KAAKg4H,gBAAgBT,EAAWE,GAAe,KAE9FQ,EAAgBj4H,KAAKk4H,uBAAuBX,EAAWE,EAAapvF,GAEpE8vF,EAAc,IAAI,GAAYF,EAAe5vF,EAAY0vF,EAAiB/vG,EAAQowG,eActF,OAbAp4H,KAAKq4H,kBAAkBF,GACvBn4H,KAAKs4H,oBAAoBL,GACzBE,EAAYv7F,OAAOve,KAAKs5G,EAA2BA,GACnDQ,EAAYv7F,OAAOve,KAAKw5G,EAAiBA,GACzCC,EAAYxyF,MAAQ,SAAC1I,GAAau7F,EAAY7yF,MAAM1I,IACpDk7F,EAAYtC,QAAU,SAACL,GAAagD,EAAY3C,QAAQL,IACxDn1H,KAAKu4H,oBAAoBN,EAAcnkG,SAAU9L,GAClB,IAA3BhoB,KAAKi3H,WAAW9yH,QAChBovH,EAAS9C,SAASzwH,KAAKkN,UAAU41B,KAAM,cAEvCi1F,GAAmBA,EAAgBjkG,UACnC9zB,KAAKw4H,sBAAsBT,EAAgBjkG,SAAU9L,GAElDmwG,I,wBAMX,SAAWhD,GAAUn1H,KAAKi3H,WAAW5jH,QAAQ,SAAA8kH,GAAW,OAAIA,EAAY3C,QAAQL,O,2BAIhF,WAAkB,OAAOn1H,KAAKi3H,WAAW9yH,OAAS,I,6BAMlD,SAAgBozH,EAAWE,GAEvB,IAEIM,EAFkBR,EAAUx2G,wBAAwB,IAElBzb,OAAOtF,KAAK6lC,WAGlD,OAFA7lC,KAAKq0H,gBAAgBlzG,WAAW42G,EAAgB32G,UAChDq2G,EAAY3/G,YAAYigH,EAAgBz9F,SAAS13B,eAC1Cm1H,I,oCAQX,SAAuBR,EAAWE,EAAapvF,GAE3C,IAEI4vF,EAFgBV,EAAUx2G,wBAAwB,IAEpBzb,OAAOtF,KAAK6lC,UAAWwC,EAAW8rF,OAGpE,OAFAn0H,KAAKq0H,gBAAgBlzG,WAAW82G,EAAc72G,UAC9Cq2G,EAAY3/G,YAAYmgH,EAAc39F,SAAS13B,eACxCq1H,I,iCAOX,SAAoBQ,EAAgBzwG,GAChChoB,KAAKk3H,kBAAkB7jH,QAAQ,SAAC6vD,GACxBu7C,GAAUz2F,EAAQk7C,MAClBu1D,EAAev1D,GAAcl7C,EAAQk7C,Q,mCASjD,SAAsBw1D,EAAkB1wG,GACpChoB,KAAKg3H,oBAAoB3jH,QAAQ,SAAC6vD,GAC1Bu7C,GAAUz2F,EAAQk7C,MAClBw1D,EAAiBx1D,GAAcl7C,EAAQk7C,Q,4BAWnD,SAAeq0D,EAAWC,EAAiBlkE,EAASwkE,GAChD,OAAKxkE,EAGIA,aAAmB,IACjBtzD,KAAK24H,uBAAuBrlE,EAASwkE,GAxwO5B,iBA0wOFxkE,EACPtzD,KAAK44H,kBAAkBtlE,GAGvBtzD,KAAK64H,qBAAqBtB,EAAWC,EAAiBlkE,EAASwkE,GAT/D,IAAI,GAAW,M,oCAiB9B,SAAuBxkE,EAASwkE,GAE5B,IAcMrhH,EAAU68C,EAAQx8C,mBAdR,CACZ9E,UAAW8lH,EAKXxyF,MANY,SAMN1I,GAAUk7F,EAAYxyF,MAAM1I,IAKlC44F,QAXY,SAWJL,GAAU2C,EAAYtC,QAAQL,MAK1C,OADAn1H,KAAKq0H,gBAAgBlzG,WAAW1K,GACzB,IAAI,GAAW,CAACA,EAAQC,WAAYD,K,+BAM/C,SAAkB68C,GAEd,IAAMr0C,EAAYjf,KAAKkN,UAAU4rH,eAAf,UAAiCxlE,IACnD,OAAO,IAAI,GAAW,CAAC,CAACr0C,O,kCAS5B,SAAqBs4G,EAAWC,EAAiBlkE,EAAS9hD,GAEtD,IAAMunH,EAAqBxB,EAAUx2G,wBAAwBuyC,GAEvD0lE,EAAuB,IAAS1zH,OAAO,CAAE6sB,UAAW,CAAC,CAAE5vB,QAAS,GAAgBqW,SAAUpH,IAAYo1B,OAAQ4wF,IAE9G32G,EAAek4G,EAAmBzzH,OAAO0zH,GAE/C,OADAh5H,KAAKq0H,gBAAgBlzG,WAAWN,EAAaO,UACtC,IAAI,GAAW,CAAC,CAACP,EAAayZ,SAAS13B,gBAAiBie,EAAaO,SAAUP,K,4BAM1F,SAAexV,GAAO,WAEZu7B,EAASv7B,EAAQu9B,cACnBhC,GAAUv7B,IAAYrL,KAAKkN,UAAU41B,OACrCv4B,MAAMjG,KAAKsiC,EAAO9+B,UAAUuL,QAAQ,SAAAy1B,GAC5BA,IAAYz9B,GAAgC,WAArBy9B,EAAQh6B,WAC/B,EAAKioH,kBAAkB1iH,IAAIy0B,EAASA,EAAQE,aAAa,gBACzDF,EAAQj6B,aAAa,cAAe,WAG5C7O,KAAKs3H,eAAe1wF,M,+BAM5B,WACI5mC,KAAK+2H,kBAAkB1jH,QAAQ,SAAC9R,EAAO8J,GAC/B9J,EACA8J,EAAQwD,aAAa,cAAetN,GAGpC8J,EAAQo9B,gBAAgB,iBAGhCzoC,KAAK+2H,kBAAkBrmH,U,+BAM3B,SAAkBynH,GAAW,WAEnBc,EAAqB,WAEvB,IAAMtvH,EAAQ,EAAKstH,WAAWhuH,QAAQkvH,GAClCxuH,GAAS,GACT,EAAKstH,WAAW1uF,OAAO5+B,EAAO,IAGtC3J,KAAKi3H,WAAWrzH,KAAKu0H,GACrBA,EAAYv7F,OAAOve,KAAK46G,EAAoBA,K,iCAMhD,SAAoBC,GAAa,WAC7Bl5H,KAAKm3H,aAAavzH,KAAKs1H,GACvBl5H,KAAK82H,4BAA4BjzH,OACjCq1H,EAAcC,UAAU,WAEpB,IAAMxvH,EAAQ,EAAKwtH,aAAaluH,QAAQiwH,GACpCvvH,GAAS,IACT,EAAKwtH,aAAa5uF,OAAO5+B,EAAO,GAChC,EAAKmtH,4BAA4BjzH,c,UAKjD8yH,EAAcp2H,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKm2H,GAAe,KAAgB,KAAwB,KAAgB,KAAkB,KAAgB,KAAW,KAAgB,IAAY,KAAgB,OAC1OA,EAAc/xH,WAAQ,KAA0B,CAAEC,MAAO8xH,EAAe7xH,QAAS6xH,EAAcp2H,UAAMqmB,WAAY,SAS9F+vG,EAAcrV,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAmC,OAAO,IAAI6xH,EAAc,aAAO,KAAiB,aAAO,KAAW,aAAO,KAAW,aAAO,IAAY,aAAO,OAAuB9xH,MAAO8xH,EAAe/vG,WAAY,S,uBAmBpRwyG,E,8BAOF,WAAYC,EAAYxzF,EAAWyzF,EAAax3F,GAAO,oBACnD9hC,KAAKq5H,WAAaA,EAClBr5H,KAAK6lC,UAAYA,EACjB7lC,KAAKs5H,YAAcA,EACnBt5H,KAAK8hC,QAAUA,G,mBAcnB,SAAKwxB,GAAqB,IAAZtrC,EAAY,uDAAF,GAEduxG,EAAkB/8G,OAAOuqB,OAAO,GAAI/mC,KAAK8hC,QAAS9Z,GACxD,OAAOhoB,KAAKs5H,YAAYjuC,KAAKrrF,KAAKq5H,WAAYr5H,KAAK6lC,UAAWytB,EAASimE,K,wBAS3E,SAAWpE,GAAUn1H,KAAKs5H,YAAYE,WAAWrE,K,2BAOjD,WAAkB,OAAOn1H,KAAKs5H,YAAYG,oB,UAE9CL,EAAS74H,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAK44H,GAAU,KAAgB,KAAkC,KAAgB,KAAkB,KAAgB,IAAgB,KAAgB,MAC9MA,EAASx0H,WAAQ,KAA0B,CAAEC,MAAOu0H,EAAUt0H,QAASs0H,EAAS74H,UAAMqmB,WAAY,SAQ/EwyG,EAAS9X,gBAAkB,YAAiB,CAAEx8G,QAAS,WAA8B,OAAO,IAAIs0H,EAAS,aAAO,KAA2B,aAAO,KAAW,aAAO,IAAgB,aAAO,MAAqBv0H,MAAOu0H,EAAUxyG,WAAY,S,uBAU1P8yG,E,4FAQF,WAAmB,MAAO,CAAE3a,SAAU2a,O,UAE1CA,EAAen5H,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKk5H,IAC5EA,EAAexgH,UAAO,KAAwB,CAAExY,KAAMg5H,IACtDA,EAAevgH,UAAO,KAAwB,CAAEgZ,UAAW,CAAC,M,uBA8kBtDwnG,E,4FAQF,WAAmB,MAAO,CAAE5a,SAAU4a,O,UAE1CA,EAAoBp5H,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKm5H,IACtFA,EAAoBzgH,UAAO,KAAwB,CAAExY,KAAMi5H,IAC3DA,EAAoBxgH,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,KAW1D,G,8BAKF,WAAYiyE,EAAM/lD,GAAK,oBACnBtlC,KAAKqrF,KAAOA,EACZrrF,KAAKslC,MAAQA,EACRA,IACDtlC,KAAKslC,MAAQ+lD,I,uBAMrB,WAAa,MAAqB,WAAdrrF,KAAKqrF,MAAoC,WAAfrrF,KAAKslC,U,GAGjDs0F,GAAkB,CACpB,MAAS,CAAC,aAAc,cACxB,MAAS,CAAC,UAAW,aAOzB,SAASC,GAAcC,GAAmC,IAAzBC,EAAyB,uDAAfH,GAEjCI,GAAmBF,GAAY,IAAIh9G,OACzC,GAA+B,IAA3Bk9G,EAAgB71H,OAChB,MAAO,GAGX,IAAM81H,EAAiBD,EAAgBz3G,MAAM,OAAO9Y,IAAI,SAAA80D,GAAO,OAAIA,EAAQh8C,MAAM,OAAM9Y,IAAI,SAACywH,GAExF,IAAIC,EAAQJ,EAAQG,EAAY,KAAOA,EACvC,OAAO,IAAI,GAAQC,EAAM,GAAIA,EAAM,MAGjCC,EAAiBH,EAAe9kH,OAAO,SAAA+kH,GAAW,OAAIA,EAAYG,aACxE,GAAID,EAAej2H,OAAS,EACxB,KAAM,2DAEV,GAA8B,IAA1Bi2H,EAAej2H,QAAgB81H,EAAe91H,OAAS,EACvD,KAAM,0EAEV,OAAO81H,EASX,SAASK,GAAgB/G,EAAU3wH,EAAek3H,EAAUS,GACxD,OAAO,IAAIC,EAAA,EAAW,SAAAj+F,GAElB,IAAMkgE,EAAY,GAEZg+B,EAAS,kBAAMl+F,EAAW14B,MAAK,IAE/B62H,EAAU,kBAAMn+F,EAAW14B,MAAK,IAEhC82H,EAAW,kBAAMp+F,EAAW14B,MAAM02H,MASxC,OARAT,EAASzmH,QAAQ,SAACkrD,GACVA,EAAQ8sB,OAAS9sB,EAAQj5B,MACzBm3D,EAAU74F,KAAK2vH,EAASqH,OAAOh4H,EAAe27D,EAAQ8sB,KAAMsvC,IAG5Dl+B,EAAU74F,KAAK2vH,EAASqH,OAAOh4H,EAAe27D,EAAQ8sB,KAAMovC,GAASlH,EAASqH,OAAOh4H,EAAe27D,EAAQj5B,MAAOo1F,MAGpH,WAAQj+B,EAAUppF,QAAQ,SAAAwnH,GAAa,OAAIA,SAI1D,IAAM,GAAc,SAAChzD,GAAD,OAAUA,EAAO,EAAI,OAAAulB,GAAA,GAAMvlB,GAAQ,SAAC9rD,GAAD,OAAOA,IAO9D,SAAS++G,GAAaC,EAAWC,EAAYT,GACzC,OAAO,SAACU,GAEJ,IAAIC,EAAU,KAERC,EAAiBF,EAAOj3H,KAAK,OAAAyF,EAAA,GAAI,SAAA4hF,GAAI,MAAK,CAAEA,UAAU,OAAAl2E,EAAA,GAAO,SAAAmT,GAE/D,IAAM8yG,EAAgBb,IACtB,OAAIa,IAAkB9yG,EAAM+iE,MAAU6vC,GAAWA,EAAQ7vC,OAAS+vC,GAI9DF,GAAWA,EAAQ7vC,OAAS/iE,EAAM+iE,OAClC6vC,EAAU,OAEP,IANHA,EAAU5yG,GACH,KAMX,OAAA+yG,GAAA,MAEEC,EAAeH,EAAen3H,KAAK,OAAAmR,EAAA,GAAO,SAAAmT,GAAK,OAAIA,EAAM+iE,OAAO,GAAY0vC,IAE5EQ,EAAgBJ,EAAen3H,KAAK,OAAAmR,EAAA,GAAO,SAAAmT,GAAK,OAAKA,EAAM+iE,OAAO,GAAY2vC,IACpF,OAAO,OAAA39G,EAAA,GAAMi+G,EAAcC,GACtBv3H,KAAK,OAAAmR,EAAA,GAAO,SAAAmT,GACb,OAAIA,IAAU4yG,IACVA,EAAU,KACH5yG,EAAM+iE,OAASkvC,OAG1B,OAAA9wH,EAAA,GAAI,SAAA6e,GAAK,OAAIA,EAAM+iE,S,sBA6UzBmwC,E,4FAQF,WAAmB,MAAO,CAAEzc,SAAUyc,O,UAE1CA,EAAiBj7H,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKg7H,IAChFA,EAAiBtiH,UAAO,KAAwB,CAAExY,KAAM86H,IACxDA,EAAiBriH,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,uBAsBvDqiH,E,YACF,iCACIz7H,KAAK8iD,IAAM,IACX9iD,KAAK07H,UAAW,EAChB17H,KAAK27H,SAAU,EACf37H,KAAK47H,WAAY,I,OAGzBH,EAAqBl7H,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKi7H,IACxFA,EAAqB72H,WAAQ,KAA0B,CAAEC,MAAO42H,EAAsB32H,QAAS22H,EAAqBl7H,UAAMqmB,WAAY,SACnH60G,EAAqBna,gBAAkB,YAAiB,CAAEx8G,QAAS,WAA0C,OAAO,IAAI22H,GAA2B52H,MAAO42H,EAAsB70G,WAAY,S,uBAazMi1G,E,8BAIF,WAAYzjG,GAAM,oBAMdp4B,KAAKuB,MAAQ,EACbvB,KAAK8iD,IAAM1qB,EAAO0qB,IAClB9iD,KAAK07H,SAAWtjG,EAAOsjG,SACvB17H,KAAK27H,QAAUvjG,EAAOujG,QACtB37H,KAAKU,KAAO03B,EAAO13B,KACnBV,KAAK47H,UAAYxjG,EAAOwjG,UACxB57H,KAAKwK,OAAS4tB,EAAO5tB,Q,uBAKzB,WAAa,OAAO6zG,GAAgBr+G,KAAKuB,MAAOvB,KAAK8iD,O,6BAIrD,WAAoB,OAAO,IAAM9iD,KAAK87H,WAAa97H,KAAK8iD,Q,UAE5D+4E,EAAet7H,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKq7H,GAAgB,KAAyB,MACrHA,EAAe11H,UAAO,KAAyB,CAAEzF,KAAMm7H,EAAgBl7H,UAAW,CAAC,CAAC,oBAAqBwB,OAAQ,CAAEZ,MAAO,QAASuhD,IAAK,MAAO44E,SAAU,WAAYC,QAAS,UAAWj7H,KAAM,OAAQk7H,UAAW,YAAapxH,OAAQ,UAAYqO,mBAAoB04F,GAAKnrG,MAAO,EAAGC,KAAM,GAAIC,OAAQ,WAMlS,MAAO,CAAC,CAAC,EAAG,YAAa,CAAC,OAAQ,cAAe,gBAAiB,KAAM,CAAC,EAAG,QADhEwjH,UAAH,kIAAsG,mBACbxpH,SAAU,SAAiCqB,EAAIC,GAAgB,EAALD,IAC1J,OACA,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGk3G,GAAgC,EAAG,EAAG,OAAQ,GACnE,KAAoB,GACpB,OACA,QACO,EAALl3G,IACF,KAAmB,SAAUC,EAAI4I,QACjC,KAAiB,GACjB,KAA8B,eAAgB5I,EAAIlB,KAAO,OAASkB,EAAIlB,KAAO,GAAI,GAAIkB,EAAI85H,SAAW,yBAA2B,GAAI,GAAI95H,EAAI+5H,QAAU,wBAA0B,GAAI,IACnL,KAAmB,QAAS/5H,EAAIk3G,kBAAmB,KACnD,KAAmB,gBAAiBl3G,EAAIk6H,WAAxC,CAAoD,gBAAiBl6H,EAAIkhD,KACzE,KAAiB,GACjB,KAAkB,OAAQlhD,EAAIg6H,aAC7Br1H,WAAY,CAAC,KAAcC,cAAe,EAAGwiB,gBAAiB,I,uBAiDjE+yG,E,4FAQF,WAAmB,MAAO,CAAEhd,SAAUgd,O,UAE1CA,EAAqBx7H,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKu7H,IACxFA,EAAqB7iH,UAAO,KAAwB,CAAExY,KAAMq7H,IAC5DA,EAAqB5iH,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,uBAiB3D4iH,E,YACF,iCACIh8H,KAAK8iD,IAAM,GACX9iD,KAAKu5G,UAAW,EAChBv5G,KAAKi8H,YAAa,I,OAG1BD,EAAgBz7H,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKw7H,IAC9EA,EAAgBp3H,WAAQ,KAA0B,CAAEC,MAAOm3H,EAAiBl3H,QAASk3H,EAAgBz7H,UAAMqmB,WAAY,SACpGo1G,EAAgB1a,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAqC,OAAO,IAAIk3H,GAAsBn3H,MAAOm3H,EAAiBp1G,WAAY,S,KAWrLs1G,GAA4B,CAC9B35H,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,G,kBAKLyyG,E,8BAKF,WAAY/jG,EAAQtrB,GAAkB,oBAClC9M,KAAK8M,mBAAqBA,EAC1B9M,KAAK05G,SAAW,GAChB15G,KAAKgtB,UAAW,EAMhBhtB,KAAKo8H,MAAQ,IAAI,IAMjBp8H,KAAKq8H,MAAQ,IAAI,IAMjBr8H,KAAKs8H,WAAa,IAAI,KAAa,GACnCt8H,KAAKw/G,SAAW,SAACpN,KACjBpyG,KAAKy/G,UAAY,aACjBz/G,KAAK8iD,IAAM1qB,EAAO0qB,IAClB9iD,KAAKu5G,SAAWnhF,EAAOmhF,U,4BAK3B,WAAkB,gBAAUv5G,KAAKs5G,SAAf,mBAAkCt5G,KAAK8iD,O,mBAKzD,SAAMvhD,GACGvB,KAAKu5G,UAAav5G,KAAKgtB,UACxBhtB,KAAK6kH,aAAatjH,GAEtBvB,KAAKo8H,MAAMl6G,KAAK3gB,K,wBAKpB,WAAevB,KAAKy/G,c,yBAKpB,SAAYl+G,GAASvB,KAAKw6E,OAAOx6E,KAAKi8H,YAAcj8H,KAAKu8H,OAASh7H,EAAQ,EAAIA,K,2BAK9E,SAAc+mB,GAEV,OAAQA,EAAMi/F,OACV,KAAKpB,GAAIY,UACT,KAAKZ,GAAIS,UACL5mH,KAAKw6E,OAAOx6E,KAAKu8H,KAAO,GACxB,MACJ,KAAKpW,GAAIU,QACT,KAAKV,GAAIW,WACL9mH,KAAKw6E,OAAOx6E,KAAKu8H,KAAO,GACxB,MACJ,KAAKpW,GAAIQ,KACL3mH,KAAKw6E,OAAO,GACZ,MACJ,KAAK2rC,GAAIO,IACL1mH,KAAKw6E,OAAOx6E,KAAK8iD,KACjB,MACJ,QACI,OAGRx6B,EAAM4E,mB,yBAMV,SAAYjoB,GACJA,EAAO,MACPjF,KAAKw6E,OAAOx6E,KAAKu8H,Q,sBAMzB,WACIv8H,KAAK05G,SAAWnvG,MAAMjG,KAAK,CAAEH,OAAQnE,KAAK8iD,KAAO,SAAC7iD,EAAGu8H,GAAJ,MAAW,CAAExjB,KAAM,EAAGrvG,MAAO6yH,KAC9Ex8H,KAAK6kH,aAAa7kH,KAAKu8H,Q,8BAM3B,SAAiBvtH,GAAMhP,KAAKw/G,SAAWxwG,I,+BAKvC,SAAkBA,GAAMhP,KAAKy/G,UAAYzwG,I,mBAIzC,WACIhP,KAAKq8H,MAAMn6G,KAAKliB,KAAKs5G,UACrBt5G,KAAK6kH,aAAa7kH,KAAKu8H,Q,8BAM3B,SAAiBxvG,GAAc/sB,KAAKgtB,SAAWD,I,oBAM/C,SAAOxrB,GAA4B,IAArBk7H,IAAqB,yDAEzBC,EAAUre,GAAgB98G,EAAOvB,KAAK8iD,IAAK,GAC5C9iD,KAAKu5G,UAAav5G,KAAKgtB,UAAYhtB,KAAKu8H,OAASG,IAClD18H,KAAKu8H,KAAOG,EACZ18H,KAAKs8H,WAAWp6G,KAAKliB,KAAKu8H,OAE1BE,IACAz8H,KAAKw/G,SAASx/G,KAAKu8H,MACnBv8H,KAAKy/G,aAETz/G,KAAK6kH,aAAa7kH,KAAKu8H,Q,wBAM3B,SAAWh7H,GACPvB,KAAKw6E,OAAOj5E,GAAO,GACnBvB,KAAK8M,mBAAmBkK,iB,2BAM5B,SAAcrN,GAEV,IAAMpE,EAAOvF,KAAKs5G,SAAW3vG,EAC7B,OAAIpE,GAAQ,EACD,IAEPA,EAAO,GAAKA,EAAO,EACZiqC,UAAiB,IAAPjqC,GAAYo3H,QAAQ,GAAI,IAEtC,I,0BAMX,SAAaC,GAAS,WAClB58H,KAAKs5G,SAAWsjB,EAChB58H,KAAK05G,SAASrmG,QAAQ,SAAC7B,EAAS7H,GAAV,OAAoB6H,EAAQwnG,KAAO,EAAK6jB,cAAclzH,S,UAGpFwyH,EAAU57H,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAK27H,GAAW,KAAyB,IAAkB,KAAyB,OACjJA,EAAUh2H,UAAO,KAAyB,CAAEzF,KAAMy7H,EAAWx7H,UAAW,CAAC,CAAC,eAAgBe,eAAgB,SAAkCC,EAAIC,EAAKC,GAG7I,IAAIC,EAH8J,EAALH,GAC7J,KAAsBE,EAAU,IAAa,GACtC,EAALF,GAEF,KAAsBG,EAAK,UAA0BF,EAAI63G,wBAA0B33G,EAAGE,QACrFe,UAAW,CAAC,WAAY,IAAK,OAAQ,SAAU,gBAAiB,IAAK,EAAG,iBAAkBwV,SAAU,EAAGC,aAAc,SAAgC7W,EAAIC,GAAgB,EAALD,GACrK,KAAkB,OAAQ,WAA+C,OAAOC,EAAIk7H,cAApF,CAAqG,UAAW,SAA8ChrG,GAAU,OAAOlwB,EAAIm7H,cAAcjrG,IAAjM,CAA6M,aAAc,WAAqD,OAAOlwB,EAAIo7H,UACpR,EAALr7H,GACF,KAAmB,gBAAiBC,EAAIkhD,IAAxC,CAA6C,gBAAiBlhD,EAAI03G,SAAlE,CAA4E,iBAAkB13G,EAAIq7H,gBAAlG,CAAmH,kBAAiBr7H,EAAI23G,UAAkB,OACzJp3G,OAAQ,CAAE2gD,IAAK,MAAOy2D,SAAU,WAAYgjB,KAAM,OAAQN,WAAY,aAAcziB,aAAc,gBAAkBr3F,QAAS,CAAEi6G,MAAO,QAASC,MAAO,QAASC,WAAY,cAAgBh6H,SAAU,CAAC,KAA0B,CAAC45H,KAA6B,MAA8B91H,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,IAAK,IAAK,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,aAAc,SAAU,CAAC,EAAG,mBAAoB,4BAA6BhG,SAAU,SAA4BqB,EAAIC,GAAgB,EAALD,IACvf,KAAkB,EAAGo3G,GAAkC,EAAG,EAAG,cAAe,KAAM,EAAG,MACrF,KAAkB,EAAGG,GAAkC,EAAG,EAAG,cAAe,IACrE,EAALv3G,IACF,KAAiB,GACjB,KAAkB,UAAWC,EAAI83G,YAChCnzG,WAAY,CAAC,IAAgB,KAA0BC,cAAe,EAAGwiB,gBAAiB,I,uBAwE7Fk0G,E,4FAQF,WAAmB,MAAO,CAAEne,SAAUme,O,UAE1CA,EAAgB38H,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK08H,IAC9EA,EAAgBhkH,UAAO,KAAwB,CAAExY,KAAMw8H,IACvDA,EAAgB/jH,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,uBAiBtD+jH,E,YACF,iCACIn9H,KAAKo9H,QAAU,QACfp9H,KAAKq9H,YAAc,aACnBr9H,KAAKU,KAAO,S,OAGpBy8H,EAAgB58H,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK28H,IAC9EA,EAAgBv4H,WAAQ,KAA0B,CAAEC,MAAOs4H,EAAiBr4H,QAASq4H,EAAgB58H,UAAMqmB,WAAY,SACpGu2G,EAAgB7b,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAqC,OAAO,IAAIq4H,GAAsBt4H,MAAOs4H,EAAiBv2G,WAAY,S,KAWvL02G,GAAW,E,kBAMTC,E,YAIF,WAAY32H,GAAW,oBACnB5G,KAAK4G,YAAcA,I,OAG3B22H,EAAYh9H,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK+8H,GAAa,KAAyB,OAC5GA,EAAY98H,UAAO,KAAyB,CAAEC,KAAM68H,EAAa58H,UAAW,CAAC,CAAC,cAAe,cAAe,O,uBAYtG68H,E,YAIF,WAAY52H,GAAW,oBACnB5G,KAAK4G,YAAcA,I,OAG3B42H,EAAcj9H,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKg9H,GAAe,KAAyB,OAClHA,EAAc/8H,UAAO,KAAyB,CAAEC,KAAM88H,EAAe78H,UAAW,CAAC,CAAC,cAAe,gBAAiB,O,uBAY5G88H,E,8BACF,iCAMIz9H,KAAKgmB,GAAL,kBAAqBs3G,MAIrBt9H,KAAKgtB,UAAW,G,oCAKpB,WAKIhtB,KAAKi6G,SAAWj6G,KAAK09H,UAAU17H,MAC/BhC,KAAKq6G,WAAar6G,KAAK29H,YAAY37H,U,UAG3Cy7H,EAAOl9H,UAAO,SAAwBC,GAAK,OAAO,IAAKA,GAAKi9H,IAC5DA,EAAOh9H,UAAO,KAAyB,CAAEC,KAAM+8H,EAAQ98H,UAAW,CAAC,CAAC,YAAae,eAAgB,SAA+BC,EAAIC,EAAKC,GAIjI,IAAIC,EAJkJ,EAALH,IACjJ,KAAsBE,EAAU,GAAa,GAC7C,KAAsBA,EAAU,GAAe,IACxC,EAALF,IAEF,KAAsBG,EAAK,UAA0BF,EAAI87H,UAAY57H,GACrE,KAAsBA,EAAK,UAA0BF,EAAI+7H,YAAc77H,KACtEK,OAAQ,CAAE6jB,GAAI,KAAMgH,SAAU,WAAY4pC,MAAO,W,uBA2BpDgnE,E,8BAIF,WAAYxlG,GAAM,oBAIdp4B,KAAKg6G,eAAgB,EAMrBh6G,KAAK69H,UAAY,IAAI,IACrB79H,KAAKU,KAAO03B,EAAO13B,KACnBV,KAAKo9H,QAAUhlG,EAAOglG,QACtBp9H,KAAKq9H,YAAcjlG,EAAOilG,a,oBAO9B,SAAYx1G,GAEJ7nB,KAAK89H,aADS,SAAdj2G,GAAsC,cAAdA,EACxB,cAA2BA,GAG3B,0BAAuCA,K,oBAW/C,SAAOk2G,GAEH,IAAIC,EAAch+H,KAAKi+H,YAAYF,GACnC,GAAIC,IAAgBA,EAAYhxG,UAAYhtB,KAAK+5G,WAAaikB,EAAYh4G,GAAI,CAE1E,IAAIg1E,GAAmB,EACvBh7F,KAAK69H,UAAU37G,KAAK,CAAE63F,SAAU/5G,KAAK+5G,SAAUmkB,OAAQF,EAAYh4G,GAAIkH,eAAgB,WAAQ8tE,GAAmB,KAC7GA,IACDh7F,KAAK+5G,SAAWikB,EAAYh4G,O,mCAOxC,WAGI,IAAIm4G,EAAYn+H,KAAKi+H,YAAYj+H,KAAK+5G,UACtC/5G,KAAK+5G,SAAWokB,EAAYA,EAAUn4G,GAAMhmB,KAAKo+H,KAAKj6H,OAASnE,KAAKo+H,KAAKp8H,MAAMgkB,GAAK,O,yBAMxF,SAAYA,GAER,IAAIq4G,EAAar+H,KAAKo+H,KAAKjpH,OAAO,SAAAmpH,GAAG,OAAIA,EAAIt4G,KAAOA,IACpD,OAAOq4G,EAAWl6H,OAASk6H,EAAW,GAAK,S,UAGnDT,EAAUr9H,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKo9H,GAAW,KAAyB,MACtGA,EAAUz3H,UAAO,KAAyB,CAAEzF,KAAMk9H,EAAWj9H,UAAW,CAAC,CAAC,eAAgBe,eAAgB,SAAkCC,EAAIC,EAAKC,GAG7I,IAAIC,EAH8J,EAALH,GAC7J,KAAsBE,EAAU,GAAQ,GACjC,EAALF,GAEF,KAAsBG,EAAK,UAA0BF,EAAIw8H,KAAOt8H,IAC/DK,OAAQ,CAAE63G,cAAe,gBAAiBt5G,KAAM,OAAQ08H,QAAS,UAAWC,YAAa,cAAetjB,SAAU,YAAc53F,QAAS,CAAE07G,UAAW,aAAenlH,SAAU,CAAC,aAActS,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,WAAY,CAAC,QAAS,WAAY,EAAG,QAAS,WAAY,CAAC,EAAG,eAAgB,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,OAAQ,GAAI,OAAQ,MAAO,EAAG,WAAY,EAAG,KAAM,SAAU,CAAC,EAAG,oBAAqB,CAAC,OAAQ,WAAY,EAAG,QAAS,KAAM,EAAG,QAAS,CAAC,OAAQ,WAAY,EAAG,OAAQhG,SAAU,SAA4BqB,EAAIC,GAAgB,EAALD,IAC/jB,KAAsB,EAAG,KAAM,GAC/B,KAAkB,EAAGi4G,GAAyB,EAAG,GAAI,KAAM,GAC3D,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGU,GAAkC,EAAG,EAAG,cAAe,GAC5E,QACO,EAAL34G,IACF,KAAkB,WAAaC,EAAIlB,MAA2B,cAAnBkB,EAAIy7H,YAA8B,IAAMz7H,EAAIk8H,aAAe,iBACtG,KAAiB,GACjB,KAAkB,UAAWl8H,EAAIw8H,MACjC,KAAiB,GACjB,KAAkB,UAAWx8H,EAAIw8H,QAChC73H,WAAY,CAAC,IAAgB,IAAyB,KAAcC,cAAe,I,uBAkEtF+3H,E,4FAQF,WAAmB,MAAO,CAAExf,SAAUwf,O,UAE1CA,EAAgBh+H,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK+9H,IAC9EA,EAAgBrlH,UAAO,KAAwB,CAAExY,KAAM69H,IACvDA,EAAgBplH,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,KAWtD,G,8BAMF,WAAYs4B,EAAME,EAAQuN,GAAM,oBAC5Bn/C,KAAK0xC,KAAO0sE,GAAU1sE,GACtB1xC,KAAK4xC,OAASwsE,GAAUxsE,GACxB5xC,KAAKm/C,OAASi/D,GAAUj/D,I,yBAM5B,WAAmB,IAARqoD,EAAQ,uDAAD,EAAKxnG,KAAKw+H,YAAYvjF,MAAMj7C,KAAK0xC,MAAQ,EAAI1xC,KAAK0xC,MAAQ81D,K,wBAK5E,SAAW91D,GAEH1xC,KAAK0xC,KADL4sE,GAAS5sE,IACIA,EAAO,EAAI,GAAKA,EAAOA,GAAQ,GAGhC+sF,M,0BAOpB,WAAqB,IAARj3B,EAAQ,uDAAD,EAAKxnG,KAAK0+H,cAAczjF,MAAMj7C,KAAK4xC,QAAU,EAAI5xC,KAAK4xC,QAAU41D,K,0BAKpF,SAAa51D,GACL0sE,GAAS1sE,IACT5xC,KAAK4xC,OAASA,EAAS,GAAK,EAAI,GAAKA,EAAS,GAAKA,EAAS,GAC5D5xC,KAAK06G,WAAWn8F,KAAKs7B,MAAMjI,EAAS,MAGpC5xC,KAAK4xC,OAAS6sF,M,0BAOtB,WAAqB,IAARj3B,EAAQ,uDAAD,EAAKxnG,KAAKm8G,cAAclhE,MAAMj7C,KAAKm/C,QAAU,EAAIn/C,KAAKm/C,QAAUqoD,K,0BAKpF,SAAaroD,GACLm/D,GAASn/D,IACTn/C,KAAKm/C,OAASA,EAAS,EAAI,GAAKA,EAAS,GAAKA,EAAS,GACvDn/C,KAAKo7G,aAAa78F,KAAKs7B,MAAMsF,EAAS,MAGtCn/C,KAAKm/C,OAASs/E,M,qBAOtB,WAAwB,IAAhBE,IAAgB,yDACpB,OAAOrgB,GAASt+G,KAAK0xC,OAAS4sE,GAASt+G,KAAK4xC,WAAY+sF,GAAYrgB,GAASt+G,KAAKm/C,W,sBAKtF,WAAa,gBAAUn/C,KAAK0xC,MAAQ,EAAvB,YAA4B1xC,KAAK4xC,QAAU,EAA3C,YAAgD5xC,KAAKm/C,QAAU,O,qBAa1Ey/E,E,YACF,iCACI5+H,KAAK6+H,UAAW,EAChB7+H,KAAKu8G,UAAW,EAChBv8G,KAAKk/C,SAAU,EACfl/C,KAAK26G,SAAW,EAChB36G,KAAKq7G,WAAa,EAClBr7G,KAAK47G,WAAa,EAClB57G,KAAKgtB,UAAW,EAChBhtB,KAAKy8G,gBAAiB,EACtBz8G,KAAKmgC,KAAO,W,OAGpBy+F,EAAoBr+H,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKo+H,IACtFA,EAAoBh6H,WAAQ,KAA0B,CAAEC,MAAO+5H,EAAqB95H,QAAS85H,EAAoBr+H,UAAMqmB,WAAY,SAChHg4G,EAAoBtd,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAyC,OAAO,IAAI85H,GAA0B/5H,MAAO+5H,EAAqBh4G,WAAY,S,KAa3M,SAASk4G,KACL,OAAO,IAAI,G,sBAiBTC,E,sDAENA,EAAex+H,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKu+H,IAC5EA,EAAen6H,WAAQ,KAA0B,CAAEC,MAAOk6H,EAAgBj6H,QAAS,WAAc,OAAOg6H,MAA0Cl4G,WAAY,SAC3Im4G,EAAezd,gBAAkB,YAAiB,CAAEx8G,QAASg6H,GAAqCj6H,MAAOk6H,EAAgBn4G,WAAY,S,uBAKlJo4G,E,uIAMF,SAAUn3D,GACN,OAAQA,GAAQ02C,GAAU12C,EAAKn2B,OAAS6sE,GAAU12C,EAAKj2B,QACnD,CAAEF,KAAMm2B,EAAKn2B,KAAME,OAAQi2B,EAAKj2B,OAAQuN,OAAQo/D,GAAU12C,EAAK1oB,QAAU0oB,EAAK1oB,OAAS,MACvF,O,qBAOR,SAAQ0oB,GACJ,OAAQA,GAAQ02C,GAAU12C,EAAKn2B,OAAS6sE,GAAU12C,EAAKj2B,QACnD,CAAEF,KAAMm2B,EAAKn2B,KAAME,OAAQi2B,EAAKj2B,OAAQuN,OAAQo/D,GAAU12C,EAAK1oB,QAAU0oB,EAAK1oB,OAAS,MACvF,S,CAnBuB,I,OAsBnC6/E,EAAqBz+H,UAAO,SAAsCC,GAAK,OAAOy+H,GAAkCz+H,GAAKw+H,IACrHA,EAAqBp6H,WAAQ,KAA0B,CAAEC,MAAOm6H,EAAsBl6H,QAASk6H,EAAqBz+H,Y,KAC9G0+H,GAAkD,KAA6B,IAU/EC,GAAgC,CAClC38H,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,G,kBAKLy1G,E,8BAMF,WAAYr9F,EAASs9F,EAAiB/f,GAAG,oBACrCr/G,KAAK8hC,QAAUA,EACf9hC,KAAKo/H,gBAAkBA,EACvBp/H,KAAKq/G,IAAMA,EACXr/G,KAAKw/G,SAAW,SAACpN,KACjBpyG,KAAKy/G,UAAY,aACjBz/G,KAAK6+H,SAAW/8F,EAAQ+8F,SACxB7+H,KAAKu8G,SAAWz6E,EAAQy6E,SACxBv8G,KAAKk/C,QAAUpd,EAAQod,QACvBl/C,KAAK26G,SAAW74E,EAAQ64E,SACxB36G,KAAKq7G,WAAav5E,EAAQu5E,WAC1Br7G,KAAK47G,WAAa95E,EAAQ85E,WAC1B57G,KAAKgtB,SAAW8U,EAAQ9U,SACxBhtB,KAAKy8G,eAAiB36E,EAAQ26E,eAC9Bz8G,KAAKmgC,KAAO2B,EAAQ3B,M,qBAaxB,WAAiB,OAAOngC,KAAKq/H,W,IAN7B,SAAa73B,GACTxnG,KAAKq/H,UAAY9gB,GAAU/W,GAAQA,EAAOxnG,KAAK8hC,QAAQ64E,W,sBAiB3D,WAAmB,OAAO36G,KAAKs/H,a,IAN/B,SAAe93B,GACXxnG,KAAKs/H,YAAc/gB,GAAU/W,GAAQA,EAAOxnG,KAAK8hC,QAAQu5E,a,sBAiB7D,WAAmB,OAAOr7G,KAAKu/H,a,IAN/B,SAAe/3B,GACXxnG,KAAKu/H,YAAchhB,GAAU/W,GAAQA,EAAOxnG,KAAK8hC,QAAQ85E,a,wBAU7D,SAAWr6G,GAEP,IAAMi+H,EAAcx/H,KAAKo/H,gBAAgB3V,UAAUloH,GACnDvB,KAAKi6F,MAAQulC,EAAc,IAAI,GAAQA,EAAY9tF,KAAM8tF,EAAY5tF,OAAQ4tF,EAAYrgF,QAAU,IAAI,GAClGn/C,KAAKk/C,SAAasgF,GAAgBlhB,GAASkhB,EAAYrgF,UACxDn/C,KAAKi6F,MAAM96C,OAAS,GAExBn/C,KAAKq/G,IAAIroG,iB,8BAMb,SAAiBhI,GAAMhP,KAAKw/G,SAAWxwG,I,+BAKvC,SAAkBA,GAAMhP,KAAKy/G,UAAYzwG,I,8BAKzC,SAAiB+d,GAAc/sB,KAAKgtB,SAAWD,I,wBAK/C,SAAWy6E,GACPxnG,KAAKi6F,MAAMygB,WAAWlT,GACtBxnG,KAAKy/H,yB,0BAMT,SAAaj4B,GACTxnG,KAAKi6F,MAAMmhB,aAAa5T,GACxBxnG,KAAKy/H,yB,0BAMT,SAAaj4B,GACTxnG,KAAKi6F,MAAM0hB,aAAanU,GACxBxnG,KAAKy/H,yB,wBAMT,SAAWC,GAEP,IAAMC,EAAO3/H,KAAKi6F,MAAMvoD,MAAQ,GAE1BkuF,EAAcxhB,GAAUshB,GAE1B1/H,KAAKi6F,MAAMukC,WADXx+H,KAAK6+H,WAAac,GAAQC,EAAc,KAAOD,GAAwB,KAAhBC,GACjCA,EAAc,GAGdA,GAE1B5/H,KAAKy/H,yB,0BAMT,SAAaC,GACT1/H,KAAKi6F,MAAMykC,aAAatgB,GAAUshB,IAClC1/H,KAAKy/H,yB,0BAMT,SAAaC,GACT1/H,KAAKi6F,MAAMkiB,aAAaiC,GAAUshB,IAClC1/H,KAAKy/H,yB,4BAKT,WACQz/H,KAAK6+H,UACL7+H,KAAK06G,WAAW,M,wBAOxB,SAAWn5G,GACP,OAAI+8G,GAAS/8G,GAEEm9G,GADP1+G,KAAK6+H,SACYt9H,EAAQ,IAAO,EAAI,GAAKA,EAAQ,GAGhCA,EAAQ,IAItBm9G,GAAU+f,O,0BAOzB,SAAal9H,GAAS,OAAOm9G,GAAUn9G,K,uBAIvC,WAAoB,MAAqB,UAAdvB,KAAKmgC,O,uBAIhC,WAAoB,MAAqB,UAAdngC,KAAKmgC,O,yBAKhC,SAAYl7B,GACJA,EAAO,UAAgBjF,KAAKk/C,SAAWl/C,KAAKi6F,QAAUqkB,GAASt+G,KAAKi6F,MAAM96C,UAC1En/C,KAAKi6F,MAAM96C,OAAS,EACpBn/C,KAAKy/H,sBAAqB,M,kCAOlC,WAAmC,IAAdI,IAAc,yDAC3BA,GACA7/H,KAAKy/G,YAELz/G,KAAKi6F,MAAMzV,QAAQxkF,KAAKk/C,SACxBl/C,KAAKw/G,SAASx/G,KAAKo/H,gBAAgBpW,QAAQ,CAAEt3E,KAAM1xC,KAAKi6F,MAAMvoD,KAAME,OAAQ5xC,KAAKi6F,MAAMroD,OAAQuN,OAAQn/C,KAAKi6F,MAAM96C,UAGlHn/C,KAAKw/G,SAASx/G,KAAKo/H,gBAAgBpW,QAAQ,W,UAIvDmW,EAAc5+H,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK2+H,GAAe,KAAyB,IAAsB,KAAyB,IAAiB,KAAyB,OAC3MA,EAAch5H,UAAO,KAAyB,CAAEzF,KAAMy+H,EAAex+H,UAAW,CAAC,CAAC,mBAAoBwB,OAAQ,CAAE08H,SAAU,WAAYtiB,SAAU,WAAYr9D,QAAS,UAAWy7D,SAAU,WAAYU,WAAY,aAAcO,WAAY,aAAca,eAAgB,iBAAkBt8E,KAAM,QAAU79B,SAAU,CAAC,KAA0B,CAAC48H,KAAiC,MAA8B94H,MAAO,GAAIC,KAAM,GAAIC,OAAQ,WAoFxa,MAAO,CAAC,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,yBAA0B,eAAgB,CAAC,WAAY,KAAM,OAAQ,SAAU,QAAS,eAAgB,EAAG,SAAU,SAAU,WAAY,QAAS,EAAG,QAAS,CAAC,OAAQ,OAAQ,YAAa,IAAK,cA/EnOwjH,UAAH,8GA+E8P,aAzE3PA,UAAH,oHAyEqR,EAAG,eAAgB,eAAgB,EAAG,QAAS,WAAY,WAAY,SAAU,kBAAmB,qBAAsB,CAAC,EAAG,iBAAkB,CAAC,EAAG,yBAA0B,iBAAkB,CAAC,OAAQ,OAAQ,YAAa,IAAK,cAnErfA,UAAH,8GAmEghB,aA7D7gBA,UAAH,wHA6DuiB,EAAG,eAAgB,eAAgB,EAAG,QAAS,WAAY,WAAY,SAAU,kBAAmB,qBAAsB,CAAC,QAAS,gBAAiB,EAAG,QAAS,CAAC,QAAS,uCAAwC,EAAG,QAAS,CAAC,QAAS,kBAAmB,EAAG,QAAS,CAAC,WAAY,KAAM,OAAQ,SAAU,EAAG,MAAO,WAAY,EAAG,WAAY,SAAU,CAAC,EAAG,UAAW,kBAAmB,CAAC,EAAG,WAvDt6BA,UAAH,wIAuD87B,CAAC,EAAG,UAAW,iBAAkB,UAjD59BA,UAAH,wIAMGA,UAAH,2IAMGA,UAAH,4IAqCqgC,CAAC,EAAG,yBAA0B,iBAAkB,CAAC,OAAQ,OAAQ,YAAa,IAAK,cA/BrlCA,UAAH,8GA+BgnC,aAzB7mCA,UAAH,wHAyBuoC,EAAG,eAAgB,eAAgB,EAAG,QAAS,WAAY,WAAY,SAAU,kBAAmB,qBAnBxuCA,UAAH,4IAMGA,UAAH,2IAamxC,CAAC,EAAG,mBAAoB,CAAC,OAAQ,SAAU,EAAG,MAAO,sBAAuB,EAAG,WAAY,SAAU,CAAC,EAAG,OAAQ,YAAa,CAAC,KAAM,IAPr5CA,UAAH,8GAMGA,UAAH,gHACm7CxpH,SAAU,SAAgCqB,EAAIC,GAAgB,EAALD,IACn/C,KAAsB,EAAG,WAAY,GACrC,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAG44G,GAAiC,EAAG,EAAG,SAAU,GACtE,KAAsB,EAAG,QAAS,GAClC,KAAkB,SAAU,SAAwDzoF,GAAU,OAAOlwB,EAAI48H,WAAW1sG,EAAOtF,OAAOjrB,QAAlI,CAA6I,kBAAmB,SAAiEuwB,GAAwC,OAA9BlwB,EAAI84G,WAAW94G,EAAI+4G,UAAkB7oF,EAAO5E,kBAAvR,CAA4S,oBAAqB,SAAmE4E,GAAyC,OAA/BlwB,EAAI84G,YAAY94G,EAAI+4G,UAAkB7oF,EAAO5E,mBAC3b,OACA,KAAkB,EAAG4tF,GAAiC,EAAG,EAAG,SAAU,GACtE,OACA,KAAsB,EAAG,MAAO,GAChC,KAAc,EAAG,KACjB,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGG,GAAiC,EAAG,EAAG,SAAU,GACtE,KAAsB,GAAI,QAAS,GACnC,KAAkB,SAAU,SAAyDnpF,GAAU,OAAOlwB,EAAI88H,aAAa5sG,EAAOtF,OAAOjrB,QAArI,CAAgJ,kBAAmB,SAAkEuwB,GAA4C,OAAlClwB,EAAIw5G,aAAax5G,EAAIy5G,YAAoBvpF,EAAO5E,kBAA/R,CAAoT,oBAAqB,SAAoE4E,GAA6C,OAAnClwB,EAAIw5G,cAAcx5G,EAAIy5G,YAAoBvpF,EAAO5E,mBACxc,OACA,KAAkB,GAAIouF,GAAkC,EAAG,EAAG,SAAU,GACxE,OACA,KAAkB,GAAIE,GAA+B,EAAG,EAAG,MAAO,GAClE,KAAkB,GAAIS,GAA+B,EAAG,EAAG,MAAO,GAClE,KAAkB,GAAIS,GAA+B,EAAG,EAAG,MAAO,GAClE,KAAkB,GAAIG,GAA+B,EAAG,EAAG,MAAO,IAClE,OACA,QACO,EAALl7G,IACF,KAAmB,WAAYC,EAAIorB,UACnC,KAAkB,WAAYprB,EAAIorB,UAClC,KAAiB,GACjB,KAAkB,OAAQprB,EAAI26G,UAC9B,KAAiB,GACjB,KAAmB,kBAAmB36G,EAAIg5G,YAA1C,CAAuD,kBAAmBh5G,EAAIi5G,aAC9E,KAAkB,QAASj5G,EAAIk+H,WAAwB,MAAbl+H,EAAIq4F,MAAgB,KAAOr4F,EAAIq4F,MAAMvoD,MAA/E,CAAsF,WAAY9vC,EAAI66G,eAAtG,CAAsH,WAAY76G,EAAIorB,UACtI,KAAiB,GACjB,KAAkB,OAAQprB,EAAI26G,UAC9B,KAAiB,GACjB,KAAkB,OAAQ36G,EAAI26G,UAC9B,KAAiB,GACjB,KAAmB,kBAAmB36G,EAAIg5G,YAA1C,CAAuD,kBAAmBh5G,EAAIi5G,aAC9E,KAAkB,QAASj5G,EAAI46G,aAA0B,MAAb56G,EAAIq4F,MAAgB,KAAOr4F,EAAIq4F,MAAMroD,QAAjF,CAA0F,WAAYhwC,EAAI66G,eAA1G,CAA0H,WAAY76G,EAAIorB,UAC1I,KAAiB,GACjB,KAAkB,OAAQprB,EAAI26G,UAC9B,KAAiB,GACjB,KAAkB,OAAQ36G,EAAIs9C,SAC9B,KAAiB,GACjB,KAAkB,OAAQt9C,EAAIs9C,SAC9B,KAAiB,GACjB,KAAkB,OAAQt9C,EAAIi9H,UAC9B,KAAiB,GACjB,KAAkB,OAAQj9H,EAAIi9H,YAC7Bt4H,WAAY,CAAC,KAAcuS,OAAQ,CAAC,uyBAAwyBtS,cAAe,I,uBA4H91Bu5H,E,4FAQF,WAAmB,MAAO,CAAEhhB,SAAUghB,O,UAE1CA,EAAoBx/H,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKu/H,IACtFA,EAAoB7mH,UAAO,KAAwB,CAAExY,KAAMq/H,IAC3DA,EAAoB5mH,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,uBAiB1D4mH,E,YACF,iCACIhgI,KAAKkvH,WAAY,EACjBlvH,KAAKusH,UAAY,OACjBvsH,KAAK85H,SAAW,cAChB95H,KAAKigI,gBAAiB,EACtBjgI,KAAK+6H,UAAY,EACjB/6H,KAAKg7H,WAAa,I,OAG1BgF,EAAiBz/H,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKw/H,IAChFA,EAAiBp7H,WAAQ,KAA0B,CAAEC,MAAOm7H,EAAkBl7H,QAASk7H,EAAiBz/H,UAAMqmB,WAAY,SACvGo5G,EAAiB1e,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAsC,OAAO,IAAIk7H,GAAuBn7H,MAAOm7H,EAAkBp5G,WAAY,S,KAW3Ls5G,GAAW,E,kBACTC,E,sDAENA,EAAiB5/H,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK2/H,IAChFA,EAAiBh6H,UAAO,KAAyB,CAAEzF,KAAMy/H,EAAkBx/H,UAAW,CAAC,CAAC,uBAAwBoC,UAAW,CAAC,OAAQ,WAAYwV,SAAU,EAAGC,aAAc,SAAuC7W,EAAIC,GAAgB,EAALD,IACzN,KAAsB,KAAMC,EAAIokB,IAChC,KAAkB,gBAAkBpkB,EAAIw+H,aAAe,IAAMx+H,EAAIw+H,aAAe,OAC/Ej+H,OAAQ,CAAE6jB,GAAI,KAAMo6G,aAAc,gBAAkBvnH,mBAAoB04F,GAAKnrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,SAAU,CAAC,EAAG,kBAAmBhG,SAAU,SAAmCqB,EAAIC,GAAgB,EAALD,IAC3M,OACA,KAAiB,EAAG,MAAO,GAC3B,KAAsB,EAAG,MAAO,GAChC,KAAoB,GACpB,SACCmX,OAAQ,CAAC,0pBAA2pBtS,cAAe,EAAGwiB,gBAAiB,I,uBAuB1sBq3G,E,8BAaF,WAAYtzH,EAAa8hH,EAAW1vG,EAAUC,EAA0BF,EAAkBkZ,EAAQ90B,EAAS4J,EAAW8hH,EAAiBqF,GAAe,+BAClJr0H,KAAK+M,YAAcA,EACnB/M,KAAK6uH,UAAYA,EACjB7uH,KAAKsD,QAAUA,EACftD,KAAKkN,UAAYA,EACjBlN,KAAKgvH,gBAAkBA,EACvBhvH,KAAKq0H,gBAAkBA,EAIvBr0H,KAAKsgI,MAAQ,IAAI,IAIjBtgI,KAAKw3G,OAAS,IAAI,IAClBx3G,KAAKugI,oBAAL,sBAA0CL,MAC1ClgI,KAAKkvH,UAAY92F,EAAO82F,UACxBlvH,KAAKusH,UAAYn0F,EAAOm0F,UACxBvsH,KAAK85H,SAAW1hG,EAAO0hG,SACvB95H,KAAKqY,UAAY+f,EAAO/f,UACxBrY,KAAKigI,eAAiB7nG,EAAO6nG,eAC7BjgI,KAAKogI,aAAehoG,EAAOgoG,aAC3BpgI,KAAK+6H,UAAY3iG,EAAO2iG,UACxB/6H,KAAKg7H,WAAa5iG,EAAO4iG,WACzBh7H,KAAKwgI,cAAgB,IAAI,GAAa,GAAkBrhH,EAAUD,EAAkB2vG,EAAWzvG,EAA0Bi1G,GACzHr0H,KAAKqvH,kBAAoB/rH,EAAQoB,SAASR,UAAU,WAC5C,EAAKowH,YACL,GAAiB,EAAKvnH,YAAYnK,cAAe,EAAK0xH,WAAWh6F,SAAS13B,cAAe,EAAK2pH,UAA8B,SAAnB,EAAKl0G,UAAsB,iB,uBAoBhJ,WAAmB,OAAOrY,KAAKygI,a,IAT/B,SAAel/H,GACXvB,KAAKygI,YAAcl/H,GACdA,GAASvB,KAAKs0H,YACft0H,KAAKslC,U,kBAeb,SAAK9zB,GAAO,WACHxR,KAAKs0H,aAAct0H,KAAKygI,aAAgBzgI,KAAKigI,iBAC9CjgI,KAAKs0H,WAAat0H,KAAKwgI,cAAcn1C,KAAKrrF,KAAKygI,YAAajvH,GAC5DxR,KAAKs0H,WAAWxgG,SAASssG,aAAepgI,KAAKogI,aAC7CpgI,KAAKs0H,WAAWxgG,SAAS9N,GAAKhmB,KAAKugI,oBACnCvgI,KAAK6uH,UAAUhgH,aAAa7O,KAAK+M,YAAYnK,cAAe,mBAAoB5C,KAAKugI,qBAC9D,SAAnBvgI,KAAKqY,WACLrY,KAAKkN,UAAU9B,cAAcpL,KAAKqY,WAAWP,YAAY9X,KAAKs0H,WAAWh6F,SAAS13B,eAKtF5C,KAAKs0H,WAAW/D,kBAAkB/uG,gBAMlCxhB,KAAKs0H,WAAW/D,kBAAkBv5G,eAClCkzG,GAAalqH,KAAKsD,QAAStD,KAAKkN,UAAWlN,KAAKkvH,UAAW,kBAAM,EAAK5pF,SAAStlC,KAAKw3G,OAAQ,CAACx3G,KAAKs0H,WAAWh6F,SAAS13B,gBACtH5C,KAAKsgI,MAAMp+G,U,mBASnB,WAC2B,MAAnBliB,KAAKs0H,aACLt0H,KAAK6uH,UAAUpmF,gBAAgBzoC,KAAK+M,YAAYnK,cAAe,oBAC/D5C,KAAKwgI,cAAcl7F,QACnBtlC,KAAKs0H,WAAa,KAClBt0H,KAAKw3G,OAAOt1F,OACZliB,KAAKgvH,gBAAgBh4G,kB,oBAS7B,WACQhX,KAAKs0H,WACLt0H,KAAKslC,QAGLtlC,KAAKqrF,S,oBAOb,WAAW,OAA0B,MAAnBrrF,KAAKs0H,a,sBAIvB,WACIt0H,KAAK0gI,uBA38Db,SAA0BnN,EAAU3wH,EAAek3H,EAAUS,EAAYE,EAAQC,GAAsC,IAA7BK,EAA6B,uDAAjB,EAAGC,EAAc,uDAAD,EAE5Gf,EAAiBJ,GAAcC,GACrC,GAA8B,IAA1BG,EAAe91H,QAAgB81H,EAAe,GAAGI,WACjD,OAAO,aAGX,IAAMrmB,EAAesmB,GAAgB/G,EAAU3wH,EAAeq3H,EAAgBM,GACzEv2H,KAAK82H,GAAaC,EAAWC,EAAYT,IACzCr2H,UAAU,SAAAmnF,GAAI,OAAKA,EAAOovC,IAAWC,MAC1C,OAAO,kBAAM1mB,EAAap+F,eAi8DQ+qH,CAAiB3gI,KAAK6uH,UAAW7uH,KAAK+M,YAAYnK,cAAe5C,KAAK85H,SAAU95H,KAAKuvH,OAAOhlF,KAAKvqC,MAAOA,KAAKqrF,KAAK9gD,KAAKvqC,MAAOA,KAAKslC,MAAMiF,KAAKvqC,OAAQA,KAAK+6H,WAAY/6H,KAAKg7H,c,yBAK9M,WACIh7H,KAAKslC,QAGDtlC,KAAK0gI,wBACL1gI,KAAK0gI,yBAET1gI,KAAKqvH,kBAAkBz5G,kB,UAG/ByqH,EAAW9/H,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAK6/H,GAAY,KAAyB,KAAoB,KAAyB,KAAmB,KAAyB,KAAkB,KAAyB,KAAkC,KAAyB,KAA0B,KAAyB,IAAmB,KAAyB,KAAgB,KAAyB,KAAW,KAAyB,KAA2B,KAAyB,OACxgBA,EAAW5/H,UAAO,KAAyB,CAAEC,KAAM2/H,EAAY1/H,UAAW,CAAC,CAAC,GAAI,aAAc,KAAMwB,OAAQ,CAAE+sH,UAAW,YAAa3C,UAAW,YAAauN,SAAU,WAAYzhH,UAAW,YAAa4nH,eAAgB,iBAAkBG,aAAc,eAAgBrF,UAAW,YAAaC,WAAY,aAAc4F,WAAY,cAAgBz+G,QAAS,CAAEm+G,MAAO,QAAS9oB,OAAQ,UAAY9+F,SAAU,CAAC,gB,uBA6D9YmoH,E,4FAOF,WAAmB,MAAO,CAAE9hB,SAAU8hB,O,UAE1CA,EAAiBtgI,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKqgI,IAChFA,EAAiB3nH,UAAO,KAAwB,CAAExY,KAAMmgI,IACxDA,EAAiB1nH,UAAO,KAAwB,I,uBAmB1C2nH,E,8BACF,iCAII9gI,KAAKm9G,eAAiB,iB,0BAM1B,SAAYl4G,GAER,IAAM87H,EAAY,GAAS/gI,KAAK48B,QAChC,GAAKmkG,EAAL,CAKA,IAAIC,EAAcz2H,MAAMyL,QAAQhW,KAAKy9G,MAAQz9G,KAAKy9G,KAAKh0G,IAAI,SAAA8xB,GAAC,OAAI,GAASA,KAAM,CAAC,GAASv7B,KAAKy9G,OAE9F,IADAujB,EAAcA,EAAY7rH,OAAO,SAAAomB,GAAC,OAAIA,KACrBp3B,OAAjB,CAKA,IAAM88H,EAAW,IAAH,OAAOD,EAAYv3H,IAAI,SAAA8xB,GAAC,OAAiBA,EA1vU/C/5B,QAAQ,2BAA4B,UA0vUewuC,KAAK,KAAlD,KACdhwC,KAAKolD,MAAQ27E,EAAUx+G,MAAM,IAAI2+G,OAAOD,EAAU,aAL9CjhI,KAAKolD,MAAQ,CAAC27E,QAPd/gI,KAAKolD,MAAQ,CAAC27E,O,UAe1BD,EAAavgI,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKsgI,IACxEA,EAAa36H,UAAO,KAAyB,CAAEzF,KAAMogI,EAAcngI,UAAW,CAAC,CAAC,kBAAmBwB,OAAQ,CAAEg7G,eAAgB,iBAAkBvgF,OAAQ,SAAU6gF,KAAM,QAAUn7G,SAAU,CAAC,MAA8B8D,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,EAAG,QAAS,EAAG,OAAQ,YAAa,CAAC,OAAQ,KAAMhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,GACvX,KAAkB,EAAG07G,GAAqC,EAAG,EAAG,cAAe,GACxE,EAAL17G,GACF,KAAkB,UAAWC,EAAIwjD,QAChC7+C,WAAY,CAAC,IAAgB,KAAcuS,OAAQ,CAAC,mCAAoCtS,cAAe,EAAGwiB,gBAAiB,I,uBA6B9Hm4G,E,8BACF,iCACInhI,KAAKk+G,UAAY,EAIjBl+G,KAAKohI,YAAa,EAKlBphI,KAAKy3C,UAAY,GAIjBz3C,KAAKqhI,YAAc,IAAI,IACvBrhI,KAAKshI,kBAAoB,IAAI,K,wBAKjC,WAAc,OAAOthI,KAAKk+G,WAAa,GAAKl+G,KAAKk+G,UAAYl+G,KAAKuhI,QAAQp9H,S,uBAI1E,WAAc,OAAOnE,KAAKuhI,QAAQvhI,KAAKk+G,a,wBAKvC,SAAWA,GACPl+G,KAAKk+G,UAAYA,EACjBl+G,KAAKwhI,mB,kBAKT,WACQxhI,KAAKk+G,YAAcl+G,KAAKuhI,QAAQp9H,OAAS,EACzCnE,KAAKk+G,UAAYl+G,KAAKohI,YAAcphI,KAAKk+G,UAAY,GAAKl+G,KAAKuhI,QAAQp9H,QAAU,EAGjFnE,KAAKk+G,YAETl+G,KAAKwhI,mB,kBAKT,WACQxhI,KAAKk+G,UAAY,EACjBl+G,KAAKk+G,UAAYl+G,KAAKuhI,QAAQp9H,OAAS,EAEf,IAAnBnE,KAAKk+G,UACVl+G,KAAKk+G,UAAYl+G,KAAKohI,WAAaphI,KAAKuhI,QAAQp9H,OAAS,GAAK,EAG9DnE,KAAKk+G,YAETl+G,KAAKwhI,mB,yBAKT,WACIxhI,KAAKk+G,UAAYl+G,KAAKohI,WAAa,GAAK,EACxCphI,KAAKwhI,mB,oBAMT,SAAOlwH,GAAQtR,KAAKqhI,YAAYn/G,KAAK5Q,K,sBAIrC,WAAatR,KAAKyhI,gB,4BAIlB,WACIzhI,KAAKshI,kBAAkBp/G,KAAKliB,KAAKk+G,WAAa,EAAIl+G,KAAKgmB,GAAK,IAAMhmB,KAAKk+G,eAAYz5G,O,UAG3F08H,EAAmB5gI,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK2gI,IACpFA,EAAmBh7H,UAAO,KAAyB,CAAEzF,KAAMygI,EAAoBxgI,UAAW,CAAC,CAAC,yBAA0BoC,UAAW,CAAC,OAAQ,UAAW,EAAG,gBAAiB,QAASwV,SAAU,EAAGC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,GAC7P,KAAkB,YAAa,SAAyDmwB,GAAU,OAAOA,EAAO5E,mBACzG,EAALvrB,GACF,KAAsB,KAAMC,EAAIokB,KAC/B7jB,OAAQ,CAAEi/H,WAAY,aAAc3pF,UAAW,YAAazxB,GAAI,KAAMu7G,QAAS,UAAW9jB,KAAM,OAAQU,eAAgB,kBAAoBh8F,QAAS,CAAEk/G,YAAa,SAAUC,kBAAmB,gBAAkB5oH,SAAU,CAAC,sBAAuBtS,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,KAAM,IAAK,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,EAAG,SAAU,QAAS,CAAC,OAAQ,SAAU,OAAQ,SAAU,EAAG,gBAAiB,EAAG,KAAM,aAAc,SAAU,CAAC,EAAG,mBAAoB,4BAA6BhG,SAAU,SAAqCqB,EAAIC,GAAgB,EAALD,IAC/hB,KAAkB,EAAG47G,GAA2C,EAAG,EAAG,cAAe,KAAM,EAAG,MAC9F,KAAkB,EAAGM,GAA2C,EAAG,EAAG,cAAe,IAC9E,EAALl8G,IACF,KAAiB,GACjB,KAAkB,UAAWC,EAAI2/H,WAChCh7H,WAAY,CAAC,IAAgB,GAAc,KAA0BC,cAAe,I,KA0DvFk7H,GAAkB,IAAI,IAAe,uBAAwB,CAAE96G,WAAY,OAAQ9hB,QAIzF,WACI,OAAO,OAOX,SAAS68H,GAAeh3F,GAA4B,IAAlBi3F,EAAkB,wDAE5Cv2H,EAA6Bs/B,EAAS7H,KAAK13B,cAAc,aAS7D,OARe,MAAXC,GAAmBu2H,KACnBv2H,EAAUs/B,EAAS9yB,cAAc,QACzBhJ,aAAa,KAAM,YAC3BxD,EAAQwD,aAAa,YAAa,UAClCxD,EAAQwD,aAAa,cAAe,QACpCxD,EAAQ1I,UAAUE,IAAI,WACtB8nC,EAAS7H,KAAKhrB,YAAYzM,IAEvBA,E,sBAELw2H,E,8BAKF,WAAY30H,EAAW40H,GAAM,oBACzB9hI,KAAKkN,UAAYA,EACjBlN,KAAK8hI,OAASA,G,0BAKlB,WAEI,IAAMz2H,EAAUs2H,GAAe3hI,KAAKkN,WAChC7B,GACAA,EAAQu9B,cAAcnnB,YAAYpW,K,iBAO1C,SAAI2uB,GAEA,IAAM3uB,EAAUs2H,GAAe3hI,KAAKkN,WAAW,GAEzC60H,EAAW/hI,KAAK8hI,OACtBz2H,EAAQmoG,YAAc,GAEtB,IAAMwuB,EAAU,kBAAM32H,EAAQmoG,YAAcx5E,GAC3B,OAAb+nG,EACAC,IAGAp9F,WAAWo9F,EAASD,O,UAIhCF,EAAKthI,UAAO,SAAsBC,GAAK,OAAO,IAAKA,GAAKqhI,GAAM,KAAgB,KAAW,KAAgBH,MACzGG,EAAKj9H,WAAQ,KAA0B,CAAEC,MAAOg9H,EAAM/8H,QAAS+8H,EAAKthI,UAAMqmB,WAAY,SAMnEi7G,EAAKvgB,gBAAkB,YAAiB,CAAEx8G,QAAS,WAA0B,OAAO,IAAI+8H,EAAK,aAAO,KAAW,aAAOH,MAAsB78H,MAAOg9H,EAAMj7G,WAAY,S,uBAsBlLq7G,E,YACF,iCACIjiI,KAAKwpD,UAAW,EAChBxpD,KAAKohI,YAAa,EAClBphI,KAAKkiI,UAAW,EAChBliI,KAAKusH,UAAY,CAAC,cAAe,eAAgB,WAAY,e,OAGrE0V,EAAmB1hI,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKyhI,IACpFA,EAAmBr9H,WAAQ,KAA0B,CAAEC,MAAOo9H,EAAoBn9H,QAASm9H,EAAmB1hI,UAAMqmB,WAAY,SAC7Gq7G,EAAmB3gB,gBAAkB,YAAiB,CAAEx8G,QAAS,WAAwC,OAAO,IAAIm9H,GAAyBp9H,MAAOo9H,EAAoBr7G,WAAY,S,KAWjMu7G,GAA+B,CACjC5/H,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,GAGP04G,GAAe,E,kBAIbC,E,8BAeF,WAAYt1H,EAAa6U,EAAmBitG,EAAWhpF,EAAWzmB,EAA0BgZ,EAAQkqG,EAAQC,EAAOr1H,EAAW5J,EAAS0rH,EAAiBqF,GAAe,+BACnKr0H,KAAK+M,YAAcA,EACnB/M,KAAK4hB,kBAAoBA,EACzB5hB,KAAK6uH,UAAYA,EACjB7uH,KAAK6lC,UAAYA,EACjB7lC,KAAKuiI,MAAQA,EACbviI,KAAKkN,UAAYA,EACjBlN,KAAKsD,QAAUA,EACftD,KAAKgvH,gBAAkBA,EACvBhvH,KAAKq0H,gBAAkBA,EACvBr0H,KAAKiyH,SAAW,IAAIxuH,EAAA,EAQpBzD,KAAKgrB,aAAe,MAcpBhrB,KAAKusH,UAAY,cAMjBvsH,KAAKwiI,WAAa,IAAI,IACtBxiI,KAAKyiI,QAAL,wBAAgCL,MAChCpiI,KAAK4qB,WAAa,aAClB5qB,KAAK2qB,UAAY,SAACynF,KAClBpyG,KAAKqY,UAAY+f,EAAO/f,UACxBrY,KAAKwpD,SAAWpxB,EAAOoxB,SACvBxpD,KAAKohI,WAAahpG,EAAOgpG,WACzBphI,KAAKkiI,SAAW9pG,EAAO8pG,SACvBliI,KAAKusH,UAAYn0F,EAAOm0F,UACxBvsH,KAAK0iI,cAAgB,OAAAvZ,EAAA,GAAUp8G,EAAYnK,cAAe,SACrDoB,KAAK,OAAAyF,EAAA,GAAI,SAAAqoB,GAAM,OAAwBA,EAAOtF,OAA/B,SACpBxsB,KAAK2iI,sBAAwB,IAAIj0H,EAAA,EAAgB,MACjD1O,KAAKwgI,cAAgB,IAAI,GAAa,GAAoB36F,EAAWjkB,EAAmBitG,EAAWzvG,EAA0Bi1G,GAC7Hr0H,KAAKqvH,kBAAoBiT,EAAO59H,SAASR,UAAU,WAC3C,EAAK0+H,eACL,GAAiB,EAAK71H,YAAYnK,cAAe,EAAK0xH,WAAWh6F,SAAS13B,cAAe,EAAK2pH,UAA8B,SAAnB,EAAKl0G,c,uBAO1H,WAAQ,WAWEwqH,EATe7iI,KAAK0iI,cAAc1+H,KAAK,OAAA8+H,GAAA,GAAI,SAAAvhI,GAC7C,EAAKwhI,kBAAoB,EAAKb,SAAW3gI,EAAQ,KAC7C,EAAKioD,UACL,EAAK7+B,UAAUppB,MAIOyC,KAAKhE,KAAKgjI,cAELh/H,KAAK,OAAA8+H,GAAA,GAAI,WACnC,EAAKt5E,UACN,EAAK7+B,eAAUlmB,MAIjBw+H,EAAajjI,KAAK2iI,sBAAsB3+H,KAAK,OAAAk/H,EAAA,GAAU,kBAAML,KACnE7iI,KAAKmjI,cAAgBnjI,KAAKojI,sBAAsBH,K,yBAKpD,WACIjjI,KAAKqjI,cACLrjI,KAAKsjI,4BACLtjI,KAAKqvH,kBAAkBz5G,gB,8BAM3B,SAAiB5G,GAAMhP,KAAK2qB,UAAY3b,I,+BAKxC,SAAkBA,GAAMhP,KAAK4qB,WAAa5b,I,wBAK1C,SAAWzN,GACPvB,KAAKujI,iBAAiBvjI,KAAKwjI,oBAAoBjiI,IAC3CvB,KAAKkiI,WACLliI,KAAK+iI,kBAAoBxhI,K,8BAOjC,SAAiBwrB,GACb/sB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,WAAYmqB,K,0BAM3E,WACQ/sB,KAAK4iI,gBACL5iI,KAAK2iI,sBAAsB9+H,KAAK,MAChC7D,KAAKqjI,cACDrjI,KAAKkiI,UAAuC,OAA3BliI,KAAK+iI,mBACtB/iI,KAAKujI,iBAAiBvjI,KAAK+iI,mBAE/B/iI,KAAKgvH,gBAAgBh4G,kB,yBAO7B,WAAgB,OAA0B,MAAnBhX,KAAKs0H,a,wBAI5B,WACIt0H,KAAK2iI,sBAAsB9+H,KAAK,MAChC7D,KAAK4qB,e,2BAMT,SAActC,GACV,GAAKtoB,KAAK4iI,cAIV,OAAQt6G,EAAMi/F,OACV,KAAKpB,GAAIY,UACLz+F,EAAM4E,iBACNltB,KAAKs0H,WAAWxgG,SAASjwB,OACzB7D,KAAKyjI,YACL,MACJ,KAAKtd,GAAIU,QACLv+F,EAAM4E,iBACNltB,KAAKs0H,WAAWxgG,SAAS6wC,OACzB3kE,KAAKyjI,YACL,MACJ,KAAKtd,GAAIE,MACT,KAAKF,GAAIC,IAEL,IAAMxpF,EAAS58B,KAAKs0H,WAAWxgG,SAAS4vG,YACpCjlB,GAAU7hF,KACVtU,EAAM4E,iBACN5E,EAAMsH,kBACN5vB,KAAK2jI,cAAc/mG,IAEvB58B,KAAKqjI,iB,wBAOjB,WAAU,WACDrjI,KAAK4iI,gBACN5iI,KAAK+iI,kBAAoB/iI,KAAK+M,YAAYnK,cAAcrB,MACxDvB,KAAKs0H,WAAat0H,KAAKwgI,cAAcn1C,OACrCrrF,KAAKs0H,WAAWxgG,SAAS9N,GAAKhmB,KAAKyiI,QACnCziI,KAAKs0H,WAAWxgG,SAASutG,YAAYn9H,UAAU,SAAC04B,GAAD,OAAY,EAAKgnG,wBAAwBhnG,KACxF58B,KAAKs0H,WAAWxgG,SAASwtG,kBAAkBp9H,UAAU,SAAC61G,GAAD,OAAc,EAAK8pB,iBAAmB9pB,IACpE,SAAnB/5G,KAAKqY,WACL8S,OAAOwf,SAASv/B,cAAcpL,KAAKqY,WAAWP,YAAY9X,KAAKs0H,WAAWh6F,SAAS13B,eAEvF5C,KAAKgvH,gBAAgBh4G,eACrBkzG,GAAalqH,KAAKsD,QAAStD,KAAKkN,UAAW,UAAW,kBAAM,EAAK42H,gBAAgB9jI,KAAKiyH,SAAU,CAACjyH,KAAK+M,YAAYnK,cAAe5C,KAAKs0H,WAAWh6F,SAAS13B,mB,yBAMlK,WACI5C,KAAKiyH,SAASpuH,OACd7D,KAAKwgI,cAAcl7F,QACnBtlC,KAAKs0H,WAAa,KAClBt0H,KAAK6jI,sBAAmBp/H,I,2BAM5B,SAAcm4B,GAEV,IAAIo+D,GAAmB,EACvBh7F,KAAKwiI,WAAWtgH,KAAK,CAAE5Q,KAAMsrB,EAAQ1P,eAAgB,WAAQ8tE,GAAmB,KAChFh7F,KAAK2iI,sBAAsB9+H,KAAK,MAC3Bm3F,IACDh7F,KAAK4/G,WAAWhjF,GAChB58B,KAAK2qB,UAAUiS,M,qCAOvB,SAAwBA,GACpB58B,KAAK2jI,cAAc/mG,GACnB58B,KAAKqjI,gB,uBAKT,WACI,GAAIrjI,KAAKkiI,UAAYliI,KAAKs0H,WAAWxgG,SAASiwG,aAAyC,MAA1B/jI,KAAK+iI,kBAA2B,CAEzF,IAAMiB,EAAqBhkI,KAAK+iI,kBAAkBnmH,cAE5CqnH,EAAejkI,KAAKwjI,oBAAoBxjI,KAAKs0H,WAAWxgG,SAAS4vG,aACnEM,IAAuBC,EAAa1sF,OAAO,EAAGv3C,KAAK+iI,kBAAkB5+H,QAAQyY,eAC7E5c,KAAKujI,iBAAiBvjI,KAAK+iI,kBAAoBkB,EAAa1sF,OAAOv3C,KAAK+iI,kBAAkB5+H,SAC1FnE,KAAK+M,YAAYnK,cAAjB,kBAAoD+0C,MAAM33C,KAAK+M,YAAYnK,cAAe,CAAC5C,KAAK+iI,kBAAkB5+H,OAAQ8/H,EAAa9/H,UAGvInE,KAAKujI,iBAAiBU,M,iCAQlC,SAAoB3yH,GAChB,OAAe,MAARA,GAAgBtR,KAAKkkI,eAAiBlkI,KAAKkkI,eAAe5yH,GAAQ,GAASA,K,8BAMtF,SAAiB/P,GACbvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,QAAS,GAASrB,M,mCAMjF,SAAsB0hI,GAAU,WAC5B,OAAOA,EAAW/+H,UAAU,SAACq9H,GACpBA,GAA8B,IAAnBA,EAAQp9H,QAIpB,EAAKggI,aACL,EAAK7P,WAAWxgG,SAASstG,WAAa,EAAKA,WAC3C,EAAK9M,WAAWxgG,SAASytG,QAAUA,EACnC,EAAKjN,WAAWxgG,SAAS2pF,KAAO,EAAK1wG,YAAYnK,cAAcrB,MAC3D,EAAK6iI,kBACL,EAAK9P,WAAWxgG,SAAS2jB,UAAY,EAAK2sF,iBAE1C,EAAKjmB,iBACL,EAAKmW,WAAWxgG,SAASqqF,eAAiB,EAAKA,gBAEnD,EAAKmW,WAAWxgG,SAAS2tG,cAIzB,EAAKnN,WAAW/D,kBAAkB/uG,gBAClC,EAAKiiH,aAlBL,EAAKJ,cAsBT,IAAMnsH,EAAQqqH,EAAUA,EAAQp9H,OAAS,EACzC,EAAKo+H,MAAM8B,IAAc,IAAVntH,EAAc,uBAAd,UAA0CA,EAA1C,kBAAmE,IAAVA,EAAc,GAAK,IAA5E,mB,uCAMvB,WACQlX,KAAKmjI,eACLnjI,KAAKmjI,cAAcvtH,cAEvB5V,KAAKmjI,cAAgB,S,UAG7Bd,EAAa9hI,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK6hI,GAAc,KAAyB,KAAoB,KAAyB,KAA0B,KAAyB,KAAmB,KAAyB,KAAkB,KAAyB,KAAkC,KAAyB,IAAqB,KAAyB,KAAgB,KAAyB,IAAO,KAAyB,KAAW,KAAyB,KAAgB,KAAyB,KAA2B,KAAyB,OACzlBA,EAAa5hI,UAAO,KAAyB,CAAEC,KAAM2hI,EAAc1hI,UAAW,CAAC,CAAC,QAAS,eAAgB,KAAMoC,UAAW,CAAC,iBAAkB,MAAO,cAAe,MAAO,OAAQ,WAAY,iBAAkB,SAAUwV,SAAU,EAAGC,aAAc,SAAmC7W,EAAIC,GAAgB,EAALD,GAC/R,KAAkB,OAAQ,WAAkD,OAAOC,EAAIk7H,cAAvF,CAAwG,UAAW,SAAiDhrG,GAAU,OAAOlwB,EAAIm7H,cAAcjrG,KAChM,EAALnwB,IACF,KAAsB,eAAgBC,EAAIopB,cAC1C,KAAmB,oBAAqBppB,EAAIsgI,SAAW,OAAS,OAAhE,CAAwE,wBAAyBtgI,EAAIiiI,iBAArG,CAAuH,YAAajiI,EAAIghI,cAAgBhhI,EAAI6gI,QAAU,KAAtK,CAA4K,gBAAiB7gI,EAAIghI,eACjM,KAAmB,OAAQhhI,EAAIghI,iBAC9BzgI,OAAQ,CAAE6oB,aAAc,eAAgBuhG,UAAW,YAAal0G,UAAW,YAAamxC,SAAU,WAAY43E,WAAY,aAAcc,SAAU,WAAYgC,eAAgB,iBAAkBlB,aAAc,eAAgBoB,gBAAiB,kBAAmBjmB,eAAgB,kBAAoBh8F,QAAS,CAAEqgH,WAAY,cAAgB9pH,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,KAA0B,CAAC6/H,Q,uBAiFlZmC,E,4FAQF,WAAmB,MAAO,CAAEvlB,SAAUulB,O,UAE1CA,EAAmB/jI,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK8jI,IACpFA,EAAmBprH,UAAO,KAAwB,CAAExY,KAAM4jI,IAC1DA,EAAmBnrH,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,KAiBzDmrH,GAAc,CAChB,GAAoB,GAAgB,GAAkB,GAAmB,GAAmB,GAC5F,GAAmB,GAAgB,GAAqB,GAAkB,GAAsB,GAChG,GAAiB,GAAqB,GAAkB,I,kBAEtDC,E,4FAQF,WAAmB,MAAO,CAAEzlB,SAAUylB,O,UAE1CA,EAAUjkI,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKgkI,IAClEA,EAAUtrH,UAAO,KAAwB,CAAExY,KAAM8jI,IACjDA,EAAUrrH,UAAO,KAAwB,CAAEC,QAAS,CAACmrH,GAAa,GAAoB,GAAgB,GAAkB,GAAmB,GAAmB,GAAqB,GAAmB,GAAgB,GAAqB,GAAkB,GAAsB,GAAiB,GAAiB,GAAqB,GAAkB,M,8BC3xXnV,SAAUliH,GAAU,aAIfA,EAAOM,aAAa,MAAO,CACjCC,OAAQ,0FAA0FL,MAC9F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,yDAAyDhB,MAC/D,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,wBAAwBlB,MAAM,KAC3CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,eACHgC,GAAI,YACJC,EAAG,aACHC,GAAI,UACJhN,EAAG,aACHiN,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB/gB,CAAQ,EAAQ,U,wBCEjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,CACJG,OAAQ,kkBAA4GR,MAChH,KAEJkiH,WACI,0fAAgGliH,MAC5F,MAGZM,YAAa,sOAAkDN,MAAM,KACrEgB,SACI,mVAAgEhB,MAC5D,KAERiB,cAAe,6IAA+BjB,MAAM,KACpDkB,YAAa,6IAA+BlB,MAAM,KAClDoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,sCACTC,QAAS,gCACTE,QAAS,gCACTD,SAAU,WACN,MAAO,yDAEXE,SAAU,WACN,MAAO,0FAEXC,SAAU,KAEdC,aAAc,CACVC,OAAQ,8BACRC,KAAM,8BACNC,EAAG,yFACHC,GAAI,sDACJ/B,EAAG,2BACHgC,GAAI,8BACJC,EAAG,qBACHC,GAAI,wBACJhN,EAAG,eACHiN,GAAI,kBACJG,EAAG,2BACHC,GAAI,8BACJC,EAAG,2BACHC,GAAI,+BAERisB,cAAe,0LACfmuF,KAAM,SAAUnhF,GACZ,MAAO,kGAAuBx7B,KAAKw7B,IAEvC7M,SAAU,SAAUD,GAChB,OAAIA,EAAO,EACA,6CACAA,EAAO,GACP,mDACAA,EAAO,GACP,6CAEA,oDAGflsB,uBAAwB,8CACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAX97F,EACOA,EAAS,gBAEbA,EAAS,gBACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA5FyB/gB,CAAQ,EAAQ,U,wBCGjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJ6hH,WACI,uFAAoFliH,MAChF,KAERQ,OAAQ,wHAAqHR,MACzH,KAEJmiH,SAAU,mBAEd7hH,YACI,iEAA8DN,MAC1D,KAER0U,kBAAkB,EAClB1T,SACI,8DAA8DhB,MAC1D,KAERiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJ4gH,GAAI,aACJ3gH,IAAK,gCACL4gH,IAAK,mBACL3gH,KAAM,qCACN4gH,KAAM,wBAEV3gH,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjBnkB,KAAKg/C,QAAgB,MAAQ,MAAQ,QAE9D56B,QAAS,WACL,MAAO,eAA+B,IAAjBpkB,KAAKg/C,QAAgB,MAAQ,MAAQ,QAE9D36B,SAAU,WACN,MAAO,YAA+B,IAAjBrkB,KAAKg/C,QAAgB,MAAQ,MAAQ,QAE9D16B,QAAS,WACL,MAAO,YAA+B,IAAjBtkB,KAAKg/C,QAAgB,MAAQ,MAAQ,QAE9Dz6B,SAAU,WACN,MACI,wBACkB,IAAjBvkB,KAAKg/C,QAAgB,MAAQ,MAC9B,QAGRx6B,SAAU,KAEdC,aAAc,CACVC,OAAQ,eACRC,KAAM,QACNC,EAAG,aACHC,GAAI,YACJ/B,EAAG,WACHgC,GAAI,YACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,SACHiN,GAAI,UACJG,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,wBACxBC,QAAS,SAAUC,EAAQ87F,GACvB,IAAIr1E,EACW,IAAXzmB,EACM,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACA,OAIhB,MAHe,MAAX87F,GAA6B,MAAXA,IAClBr1E,EAAS,KAENzmB,EAASymB,GAEpBxmB,KAAM,CACFC,IAAK,EACLC,IAAK,KAlGyB/gB,CAAQ,EAAQ,U,oCCN3C,SAASggI,EAAiBC,GACvC,GAAsB,oBAAX31F,QAA0BA,OAAO41F,YAAYxoH,OAAOuoH,GAAO,OAAOx6H,MAAMjG,KAAKygI,GAD1F,iC,oRCCM,SAAUE,EAAYC,EAAiBC,GACzC,OAAOA,EAAiB,OAAAjC,EAAA,GAAU,kBAAMgC,GAAiBC,GAAkB,OAAAjC,EAAA,GAAU,kBAAMgC,I,w4MCS/F,IAYME,EAAY,IAAI,IAAe,oCAC/BC,EAAiB,IAAI,IAAe,uDAEpCC,EAAe91F,SAAS,IAAS+1F,YAAa,IAAM,E,iBACpDC,E,YACF,WAAYx9G,EAASy9G,EAErBC,EAAYvb,EAAMwb,EAAUC,GAAc,+BACtC,IAAMC,EAAa,IAAI,IAAuB1b,GACxC2b,EAAgBF,EAChBG,EAAY,OAAA9vH,EAAA,QAAGxR,GAAWT,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAAgB,OAAAjD,EAAA,GAAU,kBAAM,YAAiBwC,GAAc,IAAQ,oCAA+B,OAAAj8H,EAAA,GAAI,kBAAM,YAAoBue,EAASmiG,EAAMsb,KAAgB,OAAAvC,EAAA,GAAU,SAAAkD,GAAG,OAAI,YAAe,GAAD,OAAIA,EAAIjlI,KAAR,cAA0B,uBAAwBilI,EAAK,kBAAM,YAAU,OAAM,OAAQ,EAAf,SAAuB,sFACvXL,EAAYK,EAAIL,aAClBT,EAFyX,mBAGrXK,GACAI,EAAUM,kBAAkBV,IAE5BG,EANqX,gBAO1V,OAP0V,KAOrXC,EAPqX,SAOpVD,EAPoV,wBAO3WQ,iBAP2W,gDAUtXP,GAVsX,2CAW7X,CAACJ,EAAUG,MAAkB,OAAAS,EAAA,GAAY,CAAEC,WAAY,EAAGC,UAAU,KACxEzmI,KAAK85B,kBAAoBisG,EAAU/hI,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAErG,OAAAjD,EAAA,GAAU,SAAA6C,GAAS,OAAI,IAASA,UAAUW,cAAgBX,EAAUjsG,oBAAsB,OAAA6sG,EAAA,GAAW,qBACrG3mI,KAAK4mI,SAAWb,EAAU/hI,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAAgB,OAAAjD,EAAA,GAAU,SAAC6C,GAAD,OAAe,YAAU,OAAM,OAAQ,EAAf,SAAuB,uFAC7J,IAASA,UAAUW,eAA6C,YAA5BG,aAAaC,WAD4G,qBAEzJxB,EAFyJ,gBAGlJ,OAHkJ,SAG5IS,EAAUa,WAHkI,mDAMvHd,EANuH,iBAMvG,OANuG,UAMjGA,EANiG,iDAMjF,KANiF,QAOlJ,OADDiB,EANmJ,eAO5IhB,EAAUa,SAAS,CAAEjB,WAAUoB,8BAP6G,kGAWtJ,MAXsJ,6CAcrK,IAAMC,EAA0B,IAAIxM,EAAA,EAAW,SAAAn8D,GAC3CysD,UAAUmc,YAAYx8F,MAAM,CAAEtpC,KAAM,kBAAmBkd,KAAK,SAAA6oH,GACxDA,EAAiBC,SAAW,kBAAM9oE,EAAQx6D,YAG5CujI,EAAerB,EAAU/hI,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAAgBlB,EAAY+B,GAA0B/B,EAAYjlI,KAAK4mI,WAMxK,OALA5mI,KAAKqnI,aAAetB,EAAU/hI,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAAgB,OAAAjD,EAAA,GAAU,kBAAM,IAAS6C,UAAUW,cAAgB,OAAA1tH,EAAA,GAAO,EAAK4tH,SAAUQ,GAAgB,OACzMpnI,KAAKsnI,SAAWvB,EAAU/hI,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAAgB,OAAAjD,EAAA,GAAU,SAAA6C,GAAS,OAAI,IAASA,UAAUW,cAAgB,IAAIlM,EAAA,EAAW,SAAAn8D,GAAO,OAAI0nE,EAAUwB,UAAU,SAAA1jI,GAAI,OAAIw6D,EAAQx6D,KAAKA,IAAO,SAAA84B,GAAG,OAAI0hC,EAAQrpC,MAAM2H,IAAM,kBAAM0hC,EAAQv6D,eAAe,OACxS9D,KAAKwnI,aAAe,OAAAvxH,EAAA,QAAGxR,GAAWT,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAAgB,OAAAjD,EAAA,GAAU,kBAAM,EAAKppG,oBAAoB,OAAA2tG,EAAA,GAAW,kBAAM,OAAAxxH,EAAA,GAAG,QAAQ,OAAAyxH,EAAA,GAAS,kBAAM,EAAKL,gBAE7MrnI,KAAK2nI,YAAc,SAAC9iI,GAAD,OAAWkhI,EAAU/hI,KAAK,OAAAgiI,EAAA,GAAYH,EAAWI,gBAAiB,OAAAC,EAAA,GAAUL,EAAWM,eAAgB,OAAAjD,EAAA,GAAU,SAAA6C,GAAS,OAAIA,EAAU4B,YAAY9iI,QAASJ,KAAa,OAAAmjI,EAAA,IAAe,KACrM,YAAc5nI,KAAM+lI,EAAW5b,K,OAG9Cqb,EAAqBjlI,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKglI,GAAsB,KAAgB,KAAmB,KAAgB,IAAmB,GAAI,KAAgB,KAAc,KAAgB,KAAgB,KAAgBJ,EAAW,GAAI,KAAgBC,EAAgB,KAClSG,EAAqB5gI,WAAQ,KAAsB,CAAEE,QAAS,WAA0C,OAAO,IAAI0gI,EAAqB,KAAY,KAAsB,KAAY,IAAsB,GAAI,KAAY,KAAiB,KAAY,KAAY,KAAYJ,EAAW,GAAI,KAAYC,EAAgB,KAAQxgI,MAAO2gI,EAAsB5+G,WAAY,Q,KAqChY,YAAa,EAAsB,CAvGP,CACxB+gH,YAAa,KACbf,SAAU,KACVW,UAAW,KACXM,oBAAqB,KACrBC,eAAgB,KAChBhuG,kBAAmB,KACnBiuG,4BAA6B,KAC7BzB,iBAAkB,KAClBD,kBAAmB,Q,4BCfvB,aAIC,WAAoBlvG,EAA0BC,GAA1B,KAAAD,OAA0B,KAAAC,gB,OAC9C,YAAA4wG,mBAAA,SAAmBpsG,GAClB,OAAO57B,KAAKm3B,KAAKgB,KAAcn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,qCAAsCuD,EAAK,K,sCAHlGqsG,GAAmB,sB,yBAAnBA,EAAmB,QAAnBA,EAAmB,qBAFnB,S,EADb,GCEA,aAGC,WAAoBC,EAAoDC,GAAxE,WAAoB,KAAAD,uBAAoD,KAAAC,sBADxE,KAAAluG,eAAiB,IAAIvrB,EAAA,EAAgB,MAIpC1O,KAAKkoI,qBAAqBZ,SAASpjI,UAAU,SAAA81B,GAG5C,EAAKC,eAAep2B,KAAKm2B,K,OAG3B,YAAAF,kBAAA,sBACC95B,KAAKkoI,qBAAqBV,aAAatjI,UACtC,SAAAW,GACC,GAAIA,EAAMV,OAAS,QAAeM,IAAVI,EAAqB,CAC5C,IAAM61B,EAAU9C,aAAaC,QAAQ,QAC/BuwG,EAAaxwG,aAAaC,QAAQ,cACpC8C,EAAO,IAAI,IACXD,IACHC,EAAOnB,KAAKW,MAAMO,IAQnB,EAAKytG,oBAAoBH,mBANY,CACpCK,YAAaD,EACbE,iBAAkB3tG,EAAKE,WACvB0tG,qBAAsB1jI,EACtB2jI,OAAQ,IAE4CtkI,UAAU,SAAA+0B,GAC9D8R,QAAQ0wC,IAAIxiD,OAIf,SAAA0D,GACCoO,QAAQ/V,MAAM,sCAAuC2H,MAKxD,YAAA5C,eAAA,sBACC/5B,KAAKkoI,qBAAqBZ,SAASpjI,UAAU,SAAAukI,GAC5C19F,QAAQ0wC,IAAI,yBAA0BgtD,GACtC,EAAKxuG,eAAep2B,KAAK4kI,GACzB,IAAIt9G,OAAO07G,aAAa,aAAc,CAAE/jG,KAAM,sC,sCA1CpC4lG,GAAgB,kB,yBAAhBA,EAAgB,QAAhBA,EAAgB,Y,EAD7B,I,oCCPA,gCAAO,IAAMC,EAAgB,iBAAwB,mBAAXv5F,OACpCA,OAAO,gBACP,kBAAoB7wB,KAAKqqH,SAFF,I,kUCEtB,IAAMl6H,EAAb,YACI,WAAYwxG,GAAM,M,IAAA,2B,EACd,K,EAAA,E,kBAAA,E,sGACKA,OAASA,EAFA,EADtB,wDAKI,WACI,OAAOlgH,KAAK87H,aANpB,wBAQI,SAAWv/F,GACP,IAAMy3E,EAAe,EAAH,sBAAG,CAAH,CAAoBz3E,IAItC,OAHIy3E,IAAiBA,EAAaxsF,QAC9B+U,EAAW14B,KAAK7D,KAAKkgH,QAElBlM,IAbf,sBAeI,WACI,GAAIh0G,KAAK6oI,SACL,MAAM7oI,KAAK8oI,YAEV,GAAI9oI,KAAKwnB,OACV,MAAM,IAAI,IAGV,OAAOxnB,KAAKkgH,SAvBxB,kBA0BI,SAAK3+G,GACD,oBAAWvB,KAAKkgH,OAAS3+G,QA3BjC,CAAqC,M,oCCFtB,SAASwnI,IACtB,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAzuF,KAAKhoB,UAAUT,SAASiD,KAAK8zG,QAAQC,UAAUvuF,KAAM,GAAI,gBAClD,EACP,MAAOzmB,GACP,OAAO,GATX,iC,oCCAA,gSAgBA,IAAIm1G,EAAgB,SAASpxH,EAAGgE,GAI5B,OAHAotH,EAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAGrB,SAASy8D,EAAUzgE,EAAGgE,GAEzB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,EAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,GAG5E,IAAIxzF,EAAW,WAQlB,OAPAA,EAAWx5B,OAAOuqB,QAAU,SAAkBvmC,GAC1C,IAAK,IAAIokB,EAAG/c,EAAI,EAAGkwC,EAAIz+B,UAAUnV,OAAQ0D,EAAIkwC,EAAGlwC,IAE5C,IAAK,IAAI0hI,KADT3kH,EAAItL,UAAUzR,GACO2U,OAAOkW,UAAUgb,eAAexY,KAAKtQ,EAAG2kH,KAAI/oI,EAAE+oI,GAAK3kH,EAAE2kH,IAE9E,OAAO/oI,IAEKm3C,MAAM33C,KAAMsZ,YAGzB,SAASmwH,EAAO7kH,EAAGqP,GACtB,IAAIzzB,EAAI,GACR,IAAK,IAAI+oI,KAAK3kH,EAAOpI,OAAOkW,UAAUgb,eAAexY,KAAKtQ,EAAG2kH,IAAMt1G,EAAEhrB,QAAQsgI,GAAK,IAC9E/oI,EAAE+oI,GAAK3kH,EAAE2kH,IACb,GAAS,MAAL3kH,GAAqD,mBAAjCpI,OAAOktH,sBACtB,KAAI7hI,EAAI,EAAb,IAAgB0hI,EAAI/sH,OAAOktH,sBAAsB9kH,GAAI/c,EAAI0hI,EAAEplI,OAAQ0D,IAC3DosB,EAAEhrB,QAAQsgI,EAAE1hI,IAAM,GAAK2U,OAAOkW,UAAUi3G,qBAAqBz0G,KAAKtQ,EAAG2kH,EAAE1hI,MACvErH,EAAE+oI,EAAE1hI,IAAM+c,EAAE2kH,EAAE1hI,KAE1B,OAAOrH,EAGJ,SAASopI,EAAWC,EAAYr9G,EAAQ7P,EAAK8gB,GAChD,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EAGzD,SAASG,EAAQC,EAAYC,GAChC,OAAO,SAAU39G,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAAKutH,IAGpD,SAASE,EAAWC,EAAaC,GACpC,GAAuB,iBAAZtB,SAAoD,mBAArBA,QAAQuB,SAAyB,OAAOvB,QAAQuB,SAASF,EAAaC,GAG7G,SAASE,EAAUC,EAASC,EAAYC,EAAGhpD,GAE9C,OAAO,IAAKgpD,IAAMA,EAAIpmI,UAAU,SAAUC,EAASixH,GAC/C,SAASmV,EAAUrpI,GAAS,IAAMimG,EAAK7lB,EAAU99E,KAAKtC,IAAW,MAAO0yB,GAAKwhG,EAAOxhG,IACpF,SAAS42G,EAAStpI,GAAS,IAAMimG,EAAK7lB,EAAiB,MAAEpgF,IAAW,MAAO0yB,GAAKwhG,EAAOxhG,IACvF,SAASuzE,EAAK5qE,GAJlB,IAAer7B,EAIaq7B,EAAOhI,KAAOpwB,EAAQo4B,EAAOr7B,QAJ1CA,EAIyDq7B,EAAOr7B,MAJhDA,aAAiBopI,EAAIppI,EAAQ,IAAIopI,EAAE,SAAUnmI,GAAWA,EAAQjD,MAIT8c,KAAKusH,EAAWC,GAClGrjC,GAAM7lB,EAAYA,EAAUhqC,MAAM8yF,EAASC,GAAc,KAAK7mI,UAI/D,SAASinI,EAAYL,EAAS3nG,GACjC,IAAsG7J,EAAG3T,EAAG9kB,EAAGuqI,EAA3G34B,EAAI,CAAE/8E,MAAO,EAAGK,KAAM,WAAa,GAAW,EAAPl1B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOwqI,KAAM,GAAIC,IAAK,IAChG,OAAOF,EAAI,CAAElnI,KAAMqnI,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAX97F,SAA0B27F,EAAE37F,OAAO41F,UAAY,WAAa,OAAOhlI,OAAU+qI,EACvJ,SAASG,EAAKnzF,GAAK,OAAO,SAAU93C,GAAK,OACzC,SAAckrI,GACV,GAAIlyG,EAAG,MAAM,IAAIuZ,UAAU,mCAC3B,KAAO4/D,OACH,GAAIn5E,EAAI,EAAG3T,IAAM9kB,EAAY,EAAR2qI,EAAG,GAAS7lH,EAAU,OAAI6lH,EAAG,GAAK7lH,EAAS,SAAO9kB,EAAI8kB,EAAU,SAAM9kB,EAAE00B,KAAK5P,GAAI,GAAKA,EAAEzhB,SAAWrD,EAAIA,EAAE00B,KAAK5P,EAAG6lH,EAAG,KAAKv2G,KAAM,OAAOp0B,EAE3J,OADI8kB,EAAI,EAAG9kB,IAAG2qI,EAAK,CAAS,EAARA,EAAG,GAAQ3qI,EAAEe,QACzB4pI,EAAG,IACP,KAAK,EAAG,KAAK,EAAG3qI,EAAI2qI,EAAI,MACxB,KAAK,EAAc,OAAX/4B,EAAE/8E,QAAgB,CAAE9zB,MAAO4pI,EAAG,GAAIv2G,MAAM,GAChD,KAAK,EAAGw9E,EAAE/8E,QAAS/P,EAAI6lH,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/4B,EAAE64B,IAAIhsG,MAAOmzE,EAAE44B,KAAK/rG,MAAO,SACxC,QACI,MAAkBz+B,GAAZA,EAAI4xG,EAAE44B,MAAY7mI,OAAS,GAAK3D,EAAEA,EAAE2D,OAAS,KAAkB,IAAVgnI,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/4B,EAAI,EAAG,SACjG,GAAc,IAAV+4B,EAAG,MAAc3qI,GAAM2qI,EAAG,GAAK3qI,EAAE,IAAM2qI,EAAG,GAAK3qI,EAAE,IAAM,CAAE4xG,EAAE/8E,MAAQ81G,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/4B,EAAE/8E,MAAQ70B,EAAE,GAAI,CAAE4xG,EAAE/8E,MAAQ70B,EAAE,GAAIA,EAAI2qI,EAAI,MAC7D,GAAI3qI,GAAK4xG,EAAE/8E,MAAQ70B,EAAE,GAAI,CAAE4xG,EAAE/8E,MAAQ70B,EAAE,GAAI4xG,EAAE64B,IAAIrnI,KAAKunI,GAAK,MACvD3qI,EAAE,IAAI4xG,EAAE64B,IAAIhsG,MAChBmzE,EAAE44B,KAAK/rG,MAAO,SAEtBksG,EAAKroG,EAAK5N,KAAKu1G,EAASr4B,GAC1B,MAAOn+E,GAAKk3G,EAAK,CAAC,EAAGl3G,GAAI3O,EAAI,EAAK,QAAU2T,EAAIz4B,EAAI,EACtD,GAAY,EAAR2qI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5pI,MAAO4pI,EAAG,GAAKA,EAAG,QAAK,EAAQv2G,MAAM,GArB9B4yE,CAAK,CAACzvD,EAAG93C,MAqEtD,SAASmrI,IACZ,IAAK,IAAIxmH,EAAI,EAAG/c,EAAI,EAAGwjI,EAAK/xH,UAAUnV,OAAQ0D,EAAIwjI,EAAIxjI,IAAK+c,GAAKtL,UAAUzR,GAAG1D,OACxE,IAAI2lI,EAAIv/H,MAAMqa,GAAI43G,EAAI,EAA3B,IAA8B30H,EAAI,EAAGA,EAAIwjI,EAAIxjI,IACzC,IAAK,IAAIkU,EAAIzC,UAAUzR,GAAI0M,EAAI,EAAG+2H,EAAKvvH,EAAE5X,OAAQoQ,EAAI+2H,EAAI/2H,IAAKioH,IAC1DsN,EAAEtN,GAAKzgH,EAAExH,GACjB,OAAOu1H,I,oCC1JX,oCAAIyB,GAAsD,EAC7CnzG,EAAS,CAClB7zB,aAASE,EACT,0CAA0ClD,GACtC,GAAIA,EAAO,CACP,IAAMyzB,EAAQ,IAAIX,MAClB0W,QAAQ24B,KAAK,gGAAkG1uC,EAAMw2G,YAEhHD,GACLxgG,QAAQ0wC,IAAI,wDAEhB8vD,EAAsDhqI,GAE1D,4CACI,OAAOgqI,K,wBCLN,SAAUlpH,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,gGAAuFL,MAC3F,KAEJM,YACI,0EAAiEN,MAC7D,KAER0U,kBAAkB,EAClB1T,SAAU,sDAAsDhB,MAAM,KACtEiB,cAAe,qCAAqCjB,MAAM,KAC1DkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAG,aACHgC,GAAI,aACJC,EAAG,YACHC,GAAI,YACJhN,EAAG,UACHiN,GAAI,WACJG,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAO97F,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAnEjB5gB,CAAQ,EAAQ,U,qBCN1Ds4B,EAAOC,QAAU,SAASD,GAoBzB,OAnBKA,EAAOquG,kBACXruG,EAAOsuG,UAAY,aACnBtuG,EAAOuuG,MAAQ,GAEVvuG,EAAOt1B,WAAUs1B,EAAOt1B,SAAW,IACxC0U,OAAOu3B,eAAe3W,EAAQ,SAAU,CACvC6W,YAAY,EACZ/hC,IAAK,WACJ,OAAOkrB,EAAOwuG,KAGhBpvH,OAAOu3B,eAAe3W,EAAQ,KAAM,CACnC6W,YAAY,EACZ/hC,IAAK,WACJ,OAAOkrB,EAAOv1B,KAGhBu1B,EAAOquG,gBAAkB,GAEnBruG,I,oCCnBR,IAAIq7C,EAAaz4E,MAAQA,KAAKy4E,WAAe,WACzC,IAAI,EAAgB,SAAUzgE,EAAGgE,GAI7B,OAHA,EAAgBQ,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAE5B,OAAO,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnC,EAAcA,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,IAV1C,GAezCqC,EAAe,SAAUrzD,GAEzB,SAASqzD,EAAYC,EAAWC,GAC5B,IAAIrqF,EAAQ82B,EAAOtjD,KAAKl1B,KAAM8rI,EAAWC,IAAS/rI,KAIlD,OAHA0hD,EAAMoqF,UAAYA,EAClBpqF,EAAMqqF,KAAOA,EACbrqF,EAAMw5E,SAAU,EACTx5E,EA2EX,OAjFA+2B,EAAUozD,EAAarzD,GAQvBqzD,EAAYn5G,UAAUtuB,SAAW,SAAUiE,EAAO+kF,GAE9C,QADc,IAAVA,IAAoBA,EAAQ,GAC5BptF,KAAKwnB,OACL,OAAOxnB,KAEXA,KAAKqI,MAAQA,EACb,IAAI2d,EAAKhmB,KAAKgmB,GACV8lH,EAAY9rI,KAAK8rI,UAOrB,OANU,MAAN9lH,IACAhmB,KAAKgmB,GAAKhmB,KAAKgsI,eAAeF,EAAW9lH,EAAIonE,IAEjDptF,KAAKk7H,SAAU,EACfl7H,KAAKotF,MAAQA,EACbptF,KAAKgmB,GAAKhmB,KAAKgmB,IAAMhmB,KAAKisI,eAAeH,EAAW9rI,KAAKgmB,GAAIonE,GACtDptF,MAEX6rI,EAAYn5G,UAAUu5G,eAAiB,SAAUH,EAAW9lH,EAAIonE,GAE5D,YADc,IAAVA,IAAoBA,EAAQ,GACzB8+C,YAAYJ,EAAUK,MAAM5hG,KAAKuhG,EAAW9rI,MAAOotF,IAE9Dy+C,EAAYn5G,UAAUs5G,eAAiB,SAAUF,EAAW9lH,EAAIonE,GAE5D,QADc,IAAVA,IAAoBA,EAAQ,GAClB,OAAVA,GAAkBptF,KAAKotF,QAAUA,IAA0B,IAAjBptF,KAAKk7H,QAC/C,OAAOl1G,EAEXomH,cAAcpmH,IAGlB6lH,EAAYn5G,UAAU25G,QAAU,SAAUhkI,EAAO+kF,GAC7C,GAAIptF,KAAKwnB,OACL,OAAO,IAAI6M,MAAM,gCAErBr0B,KAAKk7H,SAAU,EACf,IAAIlmG,EAAQh1B,KAAKssI,SAASjkI,EAAO+kF,GACjC,GAAIp4D,EACA,OAAOA,GAEe,IAAjBh1B,KAAKk7H,SAAgC,MAAXl7H,KAAKgmB,KACpChmB,KAAKgmB,GAAKhmB,KAAKgsI,eAAehsI,KAAK8rI,UAAW9rI,KAAKgmB,GAAI,QAG/D6lH,EAAYn5G,UAAU45G,SAAW,SAAUjkI,EAAO+kF,GAC9C,IAAIm/C,GAAU,EACVC,OAAa/nI,EACjB,IACIzE,KAAK+rI,KAAK1jI,GAEd,MAAO4rB,GACHs4G,GAAU,EACVC,IAAev4G,GAAKA,GAAK,IAAII,MAAMJ,GAEvC,GAAIs4G,EAEA,OADAvsI,KAAK4V,cACE42H,GAGfX,EAAYn5G,UAAU+5G,aAAe,WACjC,IAAIzmH,EAAKhmB,KAAKgmB,GACV8lH,EAAY9rI,KAAK8rI,UACjBY,EAAUZ,EAAUY,QACpB/iI,EAAQ+iI,EAAQzjI,QAAQjJ,MAC5BA,KAAK+rI,KAAO,KACZ/rI,KAAKqI,MAAQ,KACbrI,KAAKk7H,SAAU,EACfl7H,KAAK8rI,UAAY,MACF,IAAXniI,GACA+iI,EAAQnkG,OAAO5+B,EAAO,GAEhB,MAANqc,IACAhmB,KAAKgmB,GAAKhmB,KAAKgsI,eAAeF,EAAW9lH,EAAI,OAEjDhmB,KAAKotF,MAAQ,MAEVy+C,EAlFQ,CADJ,EAAQ,QAoFZc,QACXtvG,EAAQwuG,YAAcA,G,wBC1Fb,SAAUxpH,GAAU,aAIzB,IAAIC,EACI,6DAA6DC,MAAM,KACvEC,EACI,kDAAkDD,MAAM,KAC5DE,EAAc,CACV,QACA,QACA,oBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAEGL,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0FAA0FL,MAC9F,KAEJM,YAAa,SAAUC,EAAGC,GACtB,OAAKD,EAEM,QAAQE,KAAKD,GACbP,EAAuBM,EAAEG,SAEzBX,EAAoBQ,EAAEG,SAJtBX,GAQfI,YAAaA,EACbQ,iBAAkBR,EAClBS,kBACI,4FACJC,uBACI,mFAEJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAElBc,SACI,6DAA6DhB,MAAM,KACvEiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAG,mBACHgC,GAAI,aACJC,EAAG,gBACHC,GAAI,SACJhN,EAAG,gBACHiN,GAAI,WACJG,EAAG,kBACHC,GAAI,aACJC,EAAG,iBACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB/gB,CAAQ,EAAQ,U,gMCHpD,SAAUsoF,EAAMA,GAAwB,IAAjB0+C,EAAiB,uDAAL,IAC/Bc,EAAgB,YAAOx/C,GACvBy/C,EAAWD,GAAkBx/C,EAAQ0+C,EAAU//E,MAASxtC,KAAKqiC,IAAIwsC,GACvE,OAAO,SAAC7mE,GAAD,OAAYA,EAAO8V,KAAK,IAAIywG,EAAcD,EAAUf,K,IAEzDgB,E,8BACF,WAAY1/C,EAAO0+C,GAAS,oBACxB9rI,KAAKotF,MAAQA,EACbptF,KAAK8rI,UAAYA,G,mBAErB,SAAKvvG,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI6oI,EAAgBxwG,EAAYv8B,KAAKotF,MAAOptF,KAAK8rI,gB,GAG3EiB,E,YACF,WAAYtwG,EAAa2wD,EAAO0+C,GAAS,M,MAAA,2B,EACrC,K,EAAA,E,EAAA,CAAMrvG,G,kBAAN,E,iGACK2wD,MAAQA,EACb,EAAK0+C,UAAYA,EACjB,EAAK59F,MAAQ,GACb,EAAKpyB,QAAS,EACd,EAAKywH,SAAU,EANsB,E,8DAyBzC,SAAUT,GACN9rI,KAAK8b,QAAS,EACM9b,KAAKy8B,YACb55B,IAAIipI,EAAU1nI,SAAS2oI,EAAgBr0G,SAAU14B,KAAKotF,MAAO,CACrE7mE,OAAQvmB,KAAMy8B,YAAaz8B,KAAKy8B,YAAaqvG,UAAWA,O,kCAGhE,SAAqBkB,GACjB,IAAqB,IAAjBhtI,KAAKusI,QAAT,CAGA,IAAMT,EAAY9rI,KAAK8rI,UACjB9xG,EAAU,IAAIizG,EAAanB,EAAU//E,MAAQ/rD,KAAKotF,MAAO4/C,GAC/DhtI,KAAKkuC,MAAMtqC,KAAKo2B,IACI,IAAhBh6B,KAAK8b,QACL9b,KAAKktI,UAAUpB,M,mBAGvB,SAAMvqI,GACFvB,KAAKmtI,qBAAqB,IAAaC,WAAW7rI,M,oBAEtD,SAAOo7B,GACH38B,KAAKusI,SAAU,EACfvsI,KAAKkuC,MAAQ,GACbluC,KAAKy8B,YAAYzH,MAAM2H,GACvB38B,KAAK4V,gB,uBAET,WACI5V,KAAKmtI,qBAAqB,IAAaE,kBACvCrtI,KAAK4V,iB,uBA9CT,SAAgBvN,GAKZ,IAJA,IAAMke,EAASle,EAAMke,OACf2nB,EAAQ3nB,EAAO2nB,MACf49F,EAAYzjI,EAAMyjI,UAClBrvG,EAAcp0B,EAAMo0B,YACnByR,EAAM/pC,OAAS,GAAM+pC,EAAM,GAAG25B,KAAOikE,EAAU//E,OAAU,GAC5D7d,EAAMv5B,QAAQq4H,aAAaM,QAAQ7wG,GAEvC,GAAIyR,EAAM/pC,OAAS,EAAG,CAClB,IAAM,EAAQoa,KAAKukC,IAAI,EAAG5U,EAAM,GAAG25B,KAAOikE,EAAU//E,OACpD/rD,KAAKoE,SAASiE,EAAO,QAGrBrI,KAAK4V,cACL2Q,EAAOzK,QAAS,M,CAvBE,KA0DxBmxH,E,YACF,WAAYplE,EAAMmlE,GAAY,oBAC1BhtI,KAAK6nE,KAAOA,EACZ7nE,KAAKgtI,aAAeA,K,wBCtEnB,SAAU3qH,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAET3uB,EAAc,CACV,iBACA,oCACA,mCACA,mCACA,iBACA,uBACA,uBACA,iBACA,gDACA,mCACA,oCACA,iDAiBCJ,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJG,OAAQ,8YAA8ER,MAClF,KAEJkiH,WACI,sXAA0EliH,MACtE,MAGZM,YACI,2PAA6DN,MAAM,KACvEgB,SAAU,6RAAuDhB,MAAM,KACvEiB,cAAe,+JAAkCjB,MAAM,KACvDkB,YAAa,iFAAqBlB,MAAM,KACxCoB,eAAgB,CACZC,GAAI,4BACJC,IAAK,+BACLC,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAGVxB,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAzCmB,CACf,iBACA,uBACA,mCACA,mCACA,iBACA,uBACA,uBACA,iBACA,uBACA,mCACA,iBACA,wBA+BJZ,YACI,yuBAEJQ,iBACI,yuBAEJC,kBACI,6lBAEJC,uBACI,oRAEJc,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,WACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,8BACNC,EAAG,2DACHC,GAAI,oCACJ/B,EAAG,wCACHgC,GAAI,8BACJC,EAAG,wCACHC,GAAI,8BACJhN,EAAG,kCACHiN,GAAI,wBACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAKzBE,cAAe,gGACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,uBAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbC,EACAD,EACa,mCAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,uBAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,qBAEA,sBAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KAtKyB/gB,CAAQ,EAAQ,U,oCCH1Ds4B,EAAOC,QAAUkwG,Y,gJCFJ,EAAb,YACI,WAAYzB,EAAWC,GAAI,M,MAAA,2B,EACvB,K,EAAA,E,EAAA,CAAMD,EAAWC,G,kBAAjB,E,iGACKD,UAAYA,EACjB,EAAKC,KAAOA,EACZ,EAAK7Q,SAAU,EAJQ,EAD/B,6DAOI,SAAS7yH,GAAgB,IAAT+kF,EAAS,uDAAD,EACpB,GAAIptF,KAAKwnB,OACL,OAAOxnB,KAEXA,KAAKqI,MAAQA,EACb,IAAM2d,EAAKhmB,KAAKgmB,GACV8lH,EAAY9rI,KAAK8rI,UAOvB,OANU,MAAN9lH,IACAhmB,KAAKgmB,GAAKhmB,KAAKgsI,eAAeF,EAAW9lH,EAAIonE,IAEjDptF,KAAKk7H,SAAU,EACfl7H,KAAKotF,MAAQA,EACbptF,KAAKgmB,GAAKhmB,KAAKgmB,IAAMhmB,KAAKisI,eAAeH,EAAW9rI,KAAKgmB,GAAIonE,GACtDptF,OApBf,4BAsBI,SAAe8rI,EAAW9lH,GAAa,IAATonE,EAAS,uDAAD,EAClC,OAAO8+C,YAAYJ,EAAUK,MAAM5hG,KAAKuhG,EAAW9rI,MAAOotF,KAvBlE,4BAyBI,SAAe0+C,EAAW9lH,GAAa,IAATonE,EAAS,uDAAD,EAClC,GAAc,OAAVA,GAAkBptF,KAAKotF,QAAUA,IAA0B,IAAjBptF,KAAKk7H,QAC/C,OAAOl1G,EAEXomH,cAAcpmH,KA7BtB,qBAgCI,SAAQ3d,EAAO+kF,GACX,GAAIptF,KAAKwnB,OACL,OAAO,IAAI6M,MAAM,gCAErBr0B,KAAKk7H,SAAU,EACf,IAAMlmG,EAAQh1B,KAAKssI,SAASjkI,EAAO+kF,GACnC,GAAIp4D,EACA,OAAOA,GAEe,IAAjBh1B,KAAKk7H,SAAgC,MAAXl7H,KAAKgmB,KACpChmB,KAAKgmB,GAAKhmB,KAAKgsI,eAAehsI,KAAK8rI,UAAW9rI,KAAKgmB,GAAI,SA1CnE,sBA6CI,SAAS3d,EAAO+kF,GACZ,IAAIm/C,GAAU,EACVC,OAAa/nI,EACjB,IACIzE,KAAK+rI,KAAK1jI,GAEd,MAAO4rB,GACHs4G,GAAU,EACVC,IAAev4G,GAAKA,GAAK,IAAII,MAAMJ,GAEvC,GAAIs4G,EAEA,OADAvsI,KAAK4V,cACE42H,IAzDnB,0BA4DI,WACI,IAAMxmH,EAAKhmB,KAAKgmB,GACV8lH,EAAY9rI,KAAK8rI,UACjBY,EAAUZ,EAAUY,QACpB/iI,EAAQ+iI,EAAQzjI,QAAQjJ,MAC9BA,KAAK+rI,KAAO,KACZ/rI,KAAKqI,MAAQ,KACbrI,KAAKk7H,SAAU,EACfl7H,KAAK8rI,UAAY,MACF,IAAXniI,GACA+iI,EAAQnkG,OAAO5+B,EAAO,GAEhB,MAANqc,IACAhmB,KAAKgmB,GAAKhmB,KAAKgsI,eAAeF,EAAW9lH,EAAI,OAEjDhmB,KAAKotF,MAAQ,SA3ErB,CCAA,YACI,WAAY0+C,EAAWC,GAAI,2B,EAAA,K,EAAA,E,8HAD/B,6DAII,SAAS1jI,GACL,OAAOrI,SALf,C,UAA4B,K,oqCCyBtBwtI,E,+CASAC,EAAoB,IAAI,IAAe,mBA0GvCC,EAAyB,CAC3BnrI,QAASkrI,EACTjrI,YAAa,aAAW,kBAAMmrI,IAC9BjkH,OAAO,GAgBLkkH,EAA0B,IAAI,IAAe,wB,iBAoC7CD,E,8BACF,WAAY9e,EAAW9hH,EAAa8gI,GA/CxC,IACU9iB,EA8C8C,oBAChD/qH,KAAK6uH,UAAYA,EACjB7uH,KAAK+M,YAAcA,EACnB/M,KAAK6tI,iBAAmBA,EAKxB7tI,KAAKw/G,SAAW,SAACpN,KAKjBpyG,KAAKy/G,UAAY,aAEjBz/G,KAAK8tI,YAAa,EACW,MAAzB9tI,KAAK6tI,mBACL7tI,KAAK6tI,kBA/DP9iB,EAAY,cAAY,cAAUgjB,eAAiB,IAClD,gBAAgB/qH,KAAK+nG,EAAUnuG,kB,yBAqEtC,SAAWrb,GAEPvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,QAD1B,MAATrB,EAAgB,GAAKA,K,8BAOjD,SAAiByN,GACbhP,KAAKw/G,SAAWxwG,I,+BAMpB,SAAkBA,GACdhP,KAAKy/G,UAAYzwG,I,8BAMrB,SAAiB+d,GACb/sB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,WAAYmqB,K,0BAG3E,SAAaxrB,KACJvB,KAAK6tI,kBAAqB7tI,KAAK6tI,mBAAqB7tI,KAAK8tI,aAC1D9tI,KAAKw/G,SAASj+G,K,+BAItB,WACIvB,KAAK8tI,YAAa,I,6BAGtB,SAAgBvsI,GACZvB,KAAK8tI,YAAa,EAClB9tI,KAAK6tI,kBAAoB7tI,KAAKw/G,SAASj+G,O,UAG/CosI,EAAqBptI,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKmtI,GAAsB,KAAyB,KAAmB,KAAyB,KAAoB,KAAyBC,EAAyB,KACzPD,EAAqBltI,UAAO,KAAyB,CAAEC,KAAMitI,EAAsBhtI,UAAW,CAAC,CAAC,QAAS,kBAAmB,GAAI,EAAG,OAAQ,YAAa,CAAC,WAAY,kBAAmB,IAAK,CAAC,QAAS,cAAe,GAAI,EAAG,OAAQ,YAAa,CAAC,WAAY,cAAe,IAAK,CAAC,QAAS,UAAW,GAAI,EAAG,OAAQ,YAAa,CAAC,WAAY,UAAW,IAAK,CAAC,GAAI,mBAAoB,KAAM6X,aAAc,SAA2C7W,EAAIC,GAAgB,EAALD,GAChc,KAAkB,QAAS,SAAuDmwB,GAAU,OAAOlwB,EAAImwB,aAAaD,EAAOtF,OAAOjrB,QAAlI,CAA6I,OAAQ,WAA0D,OAAOK,EAAI69G,aAA1N,CAA0O,mBAAoB,WAAsE,OAAO79G,EAAIosI,qBAA/U,CAAuW,iBAAkB,SAAgEl8G,GAAU,OAAOlwB,EAAIqsI,gBAAgBn8G,EAAOtF,OAAOjrB,UAC3ee,SAAU,CAAC,KAA0B,CAACorI,O,KAmC/C,SAASQ,EAAkB3sI,GAEvB,OAAgB,MAATA,GAAkC,IAAjBA,EAAM4C,OAElC,SAASgqI,EAAe5sI,GAEpB,OAAgB,MAATA,GAAyC,iBAAjBA,EAAM4C,OA8BzC,IAAMiqI,EAAgB,IAAI,IAAe,gBAUnCC,EAAsB,IAAI,IAAe,qBA+BzCC,EAAe,qMAYfC,E,uFAqBF,SAAW,GACP,OAkQc7vH,EAlQM,EAmQjB,SAAC8vH,GACJ,GAAIN,EAAkBM,EAAQjtI,QAAU2sI,EAAkBxvH,GACtD,OAAO,KAEX,IAAMnd,EAAQssB,WAAW2gH,EAAQjtI,OAGjC,OAAQ05C,MAAM15C,IAAUA,EAAQmd,EAAM,CAAE,IAAO,CAAE,IAAOA,EAAK,OAAU8vH,EAAQjtI,QAAY,MARnG,IAAsBmd,I,iBA5OlB,SAAW,GACP,OA0PcokC,EA1PM,EA2PjB,SAAC0rF,GACJ,GAAIN,EAAkBM,EAAQjtI,QAAU2sI,EAAkBprF,GACtD,OAAO,KAEX,IAAMvhD,EAAQssB,WAAW2gH,EAAQjtI,OAGjC,OAAQ05C,MAAM15C,IAAUA,EAAQuhD,EAAM,CAAE,IAAO,CAAE,IAAOA,EAAK,OAAU0rF,EAAQjtI,QAAY,MARnG,IAAsBuhD,I,sBApOlB,SAAgB0rF,GACZ,OAAOC,EAAkBD,K,0BAuB7B,SAAoBA,GAChB,OAAOE,EAAsBF,K,mBAsCjC,SAAaA,GACT,OAkMR,SAAwBA,GACpB,OAAIN,EAAkBM,EAAQjtI,QAGvB+sI,EAAatrH,KAAKwrH,EAAQjtI,OAFtB,KAEsC,CAAE,OAAS,GAtMjDotI,CAAeH,K,uBAgC1B,SAAiB,GACb,OA2KoBI,EA3KM,EA4KvB,SAACJ,GACJ,OAAIN,EAAkBM,EAAQjtI,SAAW4sI,EAAeK,EAAQjtI,OAGrD,KAEJitI,EAAQjtI,MAAM4C,OAASyqI,EAC1B,CAAE,UAAa,CAAE,eAAkBA,EAAW,aAAgBJ,EAAQjtI,MAAM4C,SAC5E,MATZ,IAA4ByqI,I,uBA9IxB,SAAiB,GACb,OAAOC,EAAmB,K,qBAmD9B,SAAe,GACX,OAoHkBC,EApHM,IAyHL,iBAAZA,GACP7N,EAAW,GACe,MAAtB6N,EAAQ/+F,OAAO,KACfkxF,GAAY,KAChBA,GAAY6N,EAC+B,MAAvCA,EAAQ/+F,OAAO++F,EAAQ3qI,OAAS,KAChC88H,GAAY,KAChB8N,EAAQ,IAAI7N,OAAOD,KAGnBA,EAAW6N,EAAQ78G,WACnB88G,EAAQD,GAEL,SAACN,GACJ,GAAIN,EAAkBM,EAAQjtI,OAC1B,OAAO,KAEX,IAAMA,EAAQitI,EAAQjtI,MACtB,OAAOwtI,EAAM/rH,KAAKzhB,GAAS,KACvB,CAAE,QAAW,CAAE,gBAAmB0/H,EAAU,YAAe1/H,MAtBxD,EAFf,IAA0ButI,EAGlBC,EACA9N,I,2BA/GJ,SAAqBuN,GACjB,OAyIG,O,qBAvIP,SAAeQ,GACX,OAAO,EAAQA,K,0BAanB,SAAoBA,GAChB,OAAO,EAAaA,O,GAqC5B,SAASP,EAAkBD,GACvB,OAAON,EAAkBM,EAAQjtI,OAAS,CAAE,UAAY,GAAS,KAOrE,SAASmtI,EAAsBF,GAC3B,OAAyB,IAAlBA,EAAQjtI,MAAiB,KAAO,CAAE,UAAY,GAgCzD,SAASstI,EAAmBI,GACxB,OAAO,SAACT,GACJ,OAAOL,EAAeK,EAAQjtI,QAAUitI,EAAQjtI,MAAM4C,OAAS8qI,EAC3D,CAAE,UAAa,CAAE,eAAkBA,EAAW,aAAgBT,EAAQjtI,MAAM4C,SAC5E,MAqCZ,SAAS,EAAcqqI,GACnB,OAAO,KAEX,SAASU,EAAU/gG,GACf,OAAY,MAALA,EAEX,SAASghG,EAAarF,GAClB,IAAMsF,EAAM,aAAWtF,GAAK,YAAKA,GAAKA,EAItC,OAHM,aAAcsF,GAGbA,EAEX,SAASC,EAAYC,GACjB,IAAIh3G,EAAM,GAMV,OAHAg3G,EAAcj8H,QAAQ,SAACk8H,GACnBj3G,EAAgB,MAAVi3G,EAAiB/yH,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIzO,GAAMi3G,GAAUj3G,IAExC,IAA5B9b,OAAOC,KAAK6b,GAAKn0B,OAAe,KAAOm0B,EAElD,SAASk3G,EAAkBhB,EAASQ,GAChC,OAAOA,EAAWvlI,IAAI,SAAAgmI,GAAS,OAAIA,EAAUjB,KAajD,SAASkB,EAAoBV,GACzB,OAAOA,EAAWvlI,IAAI,SAAAgmI,GAClB,OAbR,SAAuBA,GACnB,OAAQA,EAAUE,SAYPC,CAAcH,GACjBA,EACC,SAAC7/F,GAAD,OAAO6/F,EAAUE,SAAS//F,MAOvC,SAAS,EAAQo/F,GACb,IAAKA,EACD,OAAO,KACX,IAAMa,EAAoBb,EAAW75H,OAAO+5H,GAC5C,OAAgC,GAA5BW,EAAkB1rI,OACX,KACJ,SAAUqqI,GACb,OAAOa,EAAYG,EAAkBhB,EAASqB,KAQtD,SAASC,EAAkBd,GACvB,OAAqB,MAAdA,EAAqB,EAAQU,EAAoBV,IAAe,KAM3E,SAAS,EAAaA,GAClB,IAAKA,EACD,OAAO,KACX,IAAMa,EAAoBb,EAAW75H,OAAO+5H,GAC5C,OAAgC,GAA5BW,EAAkB1rI,OACX,KACJ,SAAUqqI,GACb,IAAM3iG,EAAc2jG,EAAkBhB,EAASqB,GAAmBpmI,IAAI0lI,GACtE,OAAO,YAAStjG,GAAa7nC,KAAK,YAAIqrI,KAQ9C,SAASU,EAAuBf,GAC5B,OAAqB,MAAdA,EAAqB,EAAaU,EAAoBV,IACzD,KAMR,SAASgB,EAAgBC,EAAmBC,GACxC,OAA0B,OAAtBD,EACO,CAACC,GACL3lI,MAAMyL,QAAQi6H,GAAd,sBAAuCA,GAAvC,CAA0DC,IAC7D,CAACD,EAAmBC,GAK5B,SAASC,EAAqB3B,GAC1B,OAAOA,EAAQ4B,eAKnB,SAASC,EAA0B7B,GAC/B,OAAOA,EAAQ8B,oB,qBAkBbC,E,8BACF,iCAKIvwI,KAAKowI,eAAiB,GAMtBpwI,KAAKswI,oBAAsB,GAI3BtwI,KAAKwwI,oBAAsB,I,kBAM/B,WACI,OAAOxwI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQjtI,MAAQ,O,iBAQ/C,WACI,OAAOvB,KAAKwuI,QAAUxuI,KAAKwuI,QAAQiC,MAAQ,O,mBAO/C,WACI,OAAOzwI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQ7e,QAAU,O,mBAQjD,WACI,OAAO3vH,KAAKwuI,QAAUxuI,KAAKwuI,QAAQtT,QAAU,O,oBAQjD,WACI,OAAOl7H,KAAKwuI,QAAUxuI,KAAKwuI,QAAQxhH,SAAW,O,mBAOlD,WACI,OAAOhtB,KAAKwuI,QAAUxuI,KAAKwuI,QAAQkC,QAAU,O,kBAMjD,WACI,OAAO1wI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQe,OAAS,O,oBAOhD,WACI,OAAOvvI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQmC,SAAW,O,iBAOlD,WACI,OAAO3wI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQoC,MAAQ,O,mBAO/C,WACI,OAAO5wI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQ3O,QAAU,O,kBAQjD,WACI,OAAO7/H,KAAKwuI,QAAUxuI,KAAKwuI,QAAQhjD,OAAS,O,qBAOhD,WACI,OAAOxrF,KAAKwuI,QAAUxuI,KAAKwuI,QAAQqC,UAAY,O,yBAOnD,WACI,OAAO7wI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQsC,cAAgB,O,wBAQvD,WACI,OAAO9wI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQuC,aAAe,O,gBAOtD,WACI,OAAO,O,4BAMX,SAAe/B,GACXhvI,KAAKowI,eAAiBpB,GAAc,GACpChvI,KAAKgxI,qBAAuBlB,EAAkB9vI,KAAKowI,kB,iCAMvD,SAAoBpB,GAChBhvI,KAAKswI,oBAAsBtB,GAAc,GACzChvI,KAAKixI,0BAA4BlB,EAAuB/vI,KAAKswI,uB,qBAOjE,WACI,OAAOtwI,KAAKgxI,sBAAwB,O,0BAOxC,WACI,OAAOhxI,KAAKixI,2BAA6B,O,gCAO7C,SAAmBjiI,GACfhP,KAAKwwI,oBAAoB5sI,KAAKoL,K,uCAOlC,WACIhP,KAAKwwI,oBAAoBn9H,QAAQ,SAAArE,GAAE,OAAIA,MACvChP,KAAKwwI,oBAAsB,K,mBAM/B,WAAuB,IAAjBjvI,EAAiB,4DAATkD,EACNzE,KAAKwuI,SACLxuI,KAAKwuI,QAAQxR,MAAMz7H,K,sBAgC3B,SAAS2vI,EAAWC,GAChB,QAAOnxI,KAAKwuI,SAAUxuI,KAAKwuI,QAAQ3F,SAASqI,EAAWC,K,sBA6B3D,SAASD,EAAWC,GAChB,OAAOnxI,KAAKwuI,QAAUxuI,KAAKwuI,QAAQ4C,SAASF,EAAWC,GAAQ,S,UAGvEZ,EAAyBhwI,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAK+vI,IAChGA,EAAyB9vI,UAAO,KAAyB,CAAEC,KAAM6vI,I,sBAiB3Dc,E,wIAKF,WACI,OAAO,O,gBAMX,WACI,OAAO,S,CAbgBd,G,OAgB/Bc,EAAiB9wI,UAAO,SAAkCC,GAAK,OAAO8wI,EAA8B9wI,GAAK6wI,IACzGA,EAAiB5wI,UAAO,KAAyB,CAAEC,KAAM2wI,EAAkB/uI,SAAU,CAAC,Q,KAChFgvI,EAA8C,KAA6BD,GAgB3EE,E,YACF,+CACI,WAASj4H,YAOJk4H,QAAU,KAKf,EAAKrwI,KAAO,KAKZ,EAAKswI,cAAgB,KAlBzB,E,wCADoBlB,GA8BlBmB,E,8BACF,WAAYC,GAAE,oBACV3xI,KAAKq/G,IAAMsyB,G,iBAEf,SAAGnmD,GACC,IAAI7gF,EAAIC,EACR,SAAqF,QAA1EA,EAAyB,QAAnBD,EAAK3K,KAAKq/G,WAAwB,IAAP10G,OAAgB,EAASA,EAAG6jI,eAA4B,IAAP5jI,OAAgB,EAASA,EAAG4gF,Q,oBAmC3HomD,E,YACF,WAAYD,GAAE,qCACJA,I,wCAFgBD,G,OAK9BE,EAAgBrxI,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKoxI,GAAiB,KAAyBL,EAAW,KACnIK,EAAgBnxI,UAAO,KAAyB,CAAEC,KAAMkxI,EAAiBjxI,UAAW,CAAC,CAAC,GAAI,kBAAmB,IAAK,CAAC,GAAI,UAAW,IAAK,CAAC,GAAI,cAAe,KAAM4X,SAAU,GAAIC,aAAc,SAAsC7W,EAAIC,GAAgB,EAALD,GAC1O,KAAmB,eAAgBC,EAAIiwI,GAAG,aAA1C,CAAwD,aAAcjwI,EAAIiwI,GAAG,WAA7E,CAAyF,cAAejwI,EAAIiwI,GAAG,YAA/G,CAA4H,WAAYjwI,EAAIiwI,GAAG,SAA/I,CAAyJ,WAAYjwI,EAAIiwI,GAAG,SAA5K,CAAsL,aAAcjwI,EAAIiwI,GAAG,WAA3M,CAAuN,aAAcjwI,EAAIiwI,GAAG,aAC3OvvI,SAAU,CAAC,Q,sBAqBdwvI,E,YACF,WAAYH,GAAE,qCACJA,I,wCAFqBD,G,OAKnCI,EAAqBvxI,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKsxI,GAAsB,KAAyBT,EAAkB,MACzJS,EAAqBrxI,UAAO,KAAyB,CAAEC,KAAMoxI,EAAsBnxI,UAAW,CAAC,CAAC,GAAI,gBAAiB,IAAK,CAAC,GAAI,gBAAiB,IAAK,CAAC,GAAI,eAAgB,IAAK,CAAC,GAAI,YAAa,IAAK,CAAC,OAAQ,EAAG,WAAY,IAAK,CAAC,GAAI,SAAU,KAAM4X,SAAU,GAAIC,aAAc,SAA2C7W,EAAIC,GAAgB,EAALD,GACtU,KAAmB,eAAgBC,EAAIiwI,GAAG,aAA1C,CAAwD,aAAcjwI,EAAIiwI,GAAG,WAA7E,CAAyF,cAAejwI,EAAIiwI,GAAG,YAA/G,CAA4H,WAAYjwI,EAAIiwI,GAAG,SAA/I,CAAyJ,WAAYjwI,EAAIiwI,GAAG,SAA5K,CAAsL,aAAcjwI,EAAIiwI,GAAG,WAA3M,CAAuN,aAAcjwI,EAAIiwI,GAAG,aAC3OvvI,SAAU,CAAC,Q,KAgKpB,SAASyvI,EAAY5wI,EAAMylC,GACvB,4BAAWA,EAAOuqG,MAAlB,CAAwBhwI,IAS5B,SAAS6wI,EAAaxD,EAASljI,GAO3B2mI,GAAgBzD,EAASljI,GAAmC,GAC5DA,EAAImmI,cAAc7xB,WAAW4uB,EAAQjtI,OAmJzC,SAAiCitI,EAASljI,GACtCA,EAAImmI,cAAcnhB,iBAAiB,SAAC4hB,GAChC1D,EAAQ2D,cAAgBD,EACxB1D,EAAQ4D,gBAAiB,EACzB5D,EAAQ6D,eAAgB,EACC,WAArB7D,EAAQ8D,UACRC,GAAc/D,EAASljI,KAxJ/BknI,CAAwBhE,EAASljI,GA2KrC,SAAkCkjI,EAASljI,GACvC,IAAMk0G,EAAW,SAAC0yB,EAAUO,GAExBnnI,EAAImmI,cAAc7xB,WAAWsyB,GAEzBO,GACAnnI,EAAIonI,kBAAkBR,IAE9B1D,EAAQle,iBAAiB9Q,GAGzBl0G,EAAIqnI,mBAAmB,WACnBnE,EAAQoE,oBAAoBpzB,KAtLhCqzB,CAAyBrE,EAASljI,GA0JtC,SAA2BkjI,EAASljI,GAChCA,EAAImmI,cAAcqB,kBAAkB,WAChCtE,EAAQuE,iBAAkB,EACD,SAArBvE,EAAQ8D,UAAuB9D,EAAQ4D,gBACvCG,GAAc/D,EAASljI,GACF,WAArBkjI,EAAQ8D,UACR9D,EAAQwE,kBA/JhBC,CAAkBzE,EAASljI,GAgD/B,SAAoCkjI,EAASljI,GACzC,GAAIA,EAAImmI,cAAcrxB,iBAAkB,CACpC,IAAM8yB,EAAmB,SAACnmH,GACtBzhB,EAAImmI,cAAcrxB,iBAAiBrzF,IAEvCyhH,EAAQ2E,yBAAyBD,GAGjC5nI,EAAIqnI,mBAAmB,WACnBnE,EAAQ4E,4BAA4BF,MAxD5CG,CAA2B7E,EAASljI,GAaxC,SAASgoI,EAAe9E,EAASljI,GAA2C,IAClEopH,EAAO,aAUTppH,EAAImmI,gBACJnmI,EAAImmI,cAAcnhB,iBAAiBoE,GACnCppH,EAAImmI,cAAcqB,kBAAkBpe,IAExC6e,GAAkB/E,EAASljI,GAAmC,GAC1DkjI,IACAljI,EAAIkoI,4BACJhF,EAAQiF,4BAA4B,eAG5C,SAASC,GAA0B1E,EAAYxvB,GAC3CwvB,EAAW37H,QAAQ,SAACo8H,GACZA,EAAUiE,2BACVjE,EAAUiE,0BAA0Bl0B,KAgChD,SAASyyB,GAAgBzD,EAASljI,EAAKqoI,GACnC,IAAM3E,EAAamB,EAAqB3B,GAClB,OAAlBljI,EAAImkI,UACJjB,EAAQoF,cAAc5D,EAAgBhB,EAAY1jI,EAAImkI,YAE3B,mBAAfT,GAQZR,EAAQoF,cAAc,CAAC5E,IAE3B,IAAM6E,EAAkBxD,EAA0B7B,GAQlD,GAP2B,OAAvBljI,EAAIwoI,eACJtF,EAAQuF,mBAAmB/D,EAAgB6D,EAAiBvoI,EAAIwoI,iBAEhC,mBAApBD,GACZrF,EAAQuF,mBAAmB,CAACF,IAG5BF,EAAyB,CACzB,IAAMK,EAAoB,kBAAMxF,EAAQyF,0BACxCP,GAA0BpoI,EAAI8kI,eAAgB4D,GAC9CN,GAA0BpoI,EAAIglI,oBAAqB0D,IAc3D,SAAST,GAAkB/E,EAASljI,EAAKqoI,GACrC,IAAIO,GAAmB,EACvB,GAAgB,OAAZ1F,EAAkB,CAClB,GAAsB,OAAlBljI,EAAImkI,UAAoB,CACxB,IAAMT,EAAamB,EAAqB3B,GACxC,GAAIjkI,MAAMyL,QAAQg5H,IAAeA,EAAW7qI,OAAS,EAAG,CAEpD,IAAMgwI,EAAoBnF,EAAW75H,OAAO,SAAAs6H,GAAS,OAAIA,IAAcnkI,EAAImkI,YACvE0E,EAAkBhwI,SAAW6qI,EAAW7qI,SACxC+vI,GAAmB,EACnB1F,EAAQoF,cAAcO,KAIlC,GAA2B,OAAvB7oI,EAAIwoI,eAAyB,CAC7B,IAAMD,EAAkBxD,EAA0B7B,GAClD,GAAIjkI,MAAMyL,QAAQ69H,IAAoBA,EAAgB1vI,OAAS,EAAG,CAE9D,IAAMiwI,EAAyBP,EAAgB1+H,OAAO,SAAA2+H,GAAc,OAAIA,IAAmBxoI,EAAIwoI,iBAC3FM,EAAuBjwI,SAAW0vI,EAAgB1vI,SAClD+vI,GAAmB,EACnB1F,EAAQuF,mBAAmBK,MAK3C,GAAIT,EAAyB,CAEzB,IAAMjf,EAAO,aACbgf,GAA0BpoI,EAAI8kI,eAAgB1b,GAC9Cgf,GAA0BpoI,EAAIglI,oBAAqB5b,GAEvD,OAAOwf,EAoBX,SAAS3B,GAAc/D,EAASljI,GACxBkjI,EAAQ6D,eACR7D,EAAQ6F,cACZ7F,EAAQ8F,SAAS9F,EAAQ2D,cAAe,CAAEoC,uBAAuB,IACjEjpI,EAAIonI,kBAAkBlE,EAAQ2D,eAC9B3D,EAAQ4D,gBAAiB,EAwB7B,SAASoC,GAAmBhG,EAASljI,GAGjC2mI,GAAgBzD,EAASljI,GAAmC,GA4BhE,SAASmpI,GAAkBxvI,EAASyvI,GAChC,IAAKzvI,EAAQyoC,eAAe,SACxB,OAAO,EACX,IAAM39B,EAAS9K,EAAO,MACtB,QAAI8K,EAAOyiH,kBAEHh2G,OAAOq1H,GAAG6C,EAAW3kI,EAAO3K,cAOxC,SAASuvI,GAAoBC,EAAMruI,GAC/BquI,EAAKC,uBACLtuI,EAAW8M,QAAQ,SAAA/H,GACf,IAAMkjI,EAAUljI,EAAIkjI,QACK,WAArBA,EAAQ8D,UAAyB9D,EAAQ4D,iBACzC9mI,EAAIonI,kBAAkBlE,EAAQ2D,eAC9B3D,EAAQ4D,gBAAiB,KAKrC,SAAS0C,GAAoBxpI,EAAKypI,GAC9B,IAAKA,EACD,OAAO,KACNxqI,MAAMyL,QAAQ++H,GAEnB,IAAIC,OAAkBvwI,EAClBwwI,OAAkBxwI,EAClBywI,OAAiBzwI,EAgBrB,OAfAswI,EAAe1hI,QAAQ,SAACpT,GAChBA,EAAEiwC,cAAgBy9F,EAClBqH,EAAkB/0I,EAvBnBuc,OAAO24H,eAyBiBl1I,EAzBYiwC,eAAiBs9F,EA4BpDyH,EAAkBh1I,EAKlBi1I,EAAiBj1I,IAGrBi1I,GAEAD,GAEAD,GAKG,KAEX,SAASI,GAAejpE,EAAM15B,GAC1B,IAAM9oC,EAAQwiE,EAAKljE,QAAQwpC,GACvB9oC,GAAS,GACTwiE,EAAK5jC,OAAO5+B,EAAO,GA0B3B,IAAM0rI,GAAQ,QAMRC,GAAU,UAQVC,GAAU,UAQVC,GAAW,WA8BjB,SAASC,GAAeC,GACpB,OAAQC,GAAaD,GAAmBA,EAAgB1G,WAAa0G,IAAoB,KAK7F,SAASE,GAAkBnG,GACvB,OAAOllI,MAAMyL,QAAQy5H,GAAaK,EAAkBL,GAAaA,GAAa,KAKlF,SAASoG,GAAoB/B,EAAgB4B,GACzC,OAAQC,GAAaD,GAAmBA,EAAgB7B,gBAAkBC,IAAmB,KAKjG,SAASgC,GAAuBhC,GAC5B,OAAOvpI,MAAMyL,QAAQ89H,GAAkB/D,EAAuB+D,GAC1DA,GAAkB,KAE1B,SAAS6B,GAAaD,GAClB,OAA0B,MAAnBA,IAA4BnrI,MAAMyL,QAAQ0/H,IAClB,iBAApBA,E,IAgBTK,G,8BASF,WAAY/G,EAAY6E,GAAe,oBAMnC7zI,KAAKg2I,8BAA+B,EAEpCh2I,KAAKi2I,oBAAsB,aAC3Bj2I,KAAKwxI,QAAU,KAQfxxI,KAAK2wI,UAAW,EAOhB3wI,KAAK6/H,SAAU,EAEf7/H,KAAKk2I,kBAAoB,GACzBl2I,KAAKowI,eAAiBpB,EACtBhvI,KAAKswI,oBAAsBuD,EAC3B7zI,KAAKgxI,qBAAuB4E,GAAkB51I,KAAKowI,gBACnDpwI,KAAKixI,0BAA4B6E,GAAuB91I,KAAKswI,sB,sBAKjE,WACI,OAAOtwI,KAAKgxI,sB,IAEhB,SAAcmF,GACVn2I,KAAKowI,eAAiBpwI,KAAKgxI,qBAAuBmF,I,0BAKtD,WACI,OAAOn2I,KAAKixI,2B,IAEhB,SAAmBmF,GACfp2I,KAAKswI,oBAAsBtwI,KAAKixI,0BAA4BmF,I,kBAKhE,WACI,OAAOp2I,KAAKwxI,U,iBAUhB,WACI,OAAOxxI,KAAKwrF,SAAW6pD,K,mBAU3B,WACI,OAAOr1I,KAAKwrF,SAAW8pD,K,mBAU3B,WACI,OAAOt1I,KAAKwrF,QAAU+pD,K,oBAa1B,WACI,OAAOv1I,KAAKwrF,SAAWgqD,K,mBAW3B,WACI,OAAOx1I,KAAKwrF,SAAWgqD,K,iBAS3B,WACI,OAAQx1I,KAAK2wI,W,qBAQjB,WACI,OAAQ3wI,KAAK6/H,U,oBAQjB,WACI,OAAO7/H,KAAKq2I,UAAYr2I,KAAKq2I,UAAar2I,KAAK4mC,OAAS5mC,KAAK4mC,OAAO0rG,SAAW,W,2BAUnF,SAAcgE,GACVt2I,KAAKowI,eAAiBkG,EACtBt2I,KAAKgxI,qBAAuB4E,GAAkBU,K,gCAUlD,SAAmBA,GACft2I,KAAKswI,oBAAsBgG,EAC3Bt2I,KAAKixI,0BAA4B6E,GAAuBQ,K,6BAS5D,WACIt2I,KAAKyvI,UAAY,O,kCASrB,WACIzvI,KAAK8zI,eAAiB,O,2BAe1B,WAAuB,IAATh+G,EAAS,uDAAF,GACjB91B,KAAK6/H,SAAU,EACX7/H,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQwB,cAAcl9G,K,8BAOnC,WACI91B,KAAKgzI,cAAc,CAAEuD,UAAU,IAC/Bv2I,KAAKw2I,cAAc,SAAChI,GAAD,OAAaA,EAAQiI,uB,6BAiB5C,WAAyB,IAAT3gH,EAAS,uDAAF,GACnB91B,KAAK6/H,SAAU,EACf7/H,KAAK+yI,iBAAkB,EACvB/yI,KAAKw2I,cAAc,SAAChI,GAChBA,EAAQkI,gBAAgB,CAAEH,UAAU,MAEpCv2I,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQmF,eAAe7gH,K,yBAgBpC,WAAqB,IAATA,EAAS,uDAAF,GACf91B,KAAK2wI,UAAW,EACZ3wI,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQ6C,YAAYv+G,K,4BAmBjC,WAAwB,IAATA,EAAS,uDAAF,GAClB91B,KAAK2wI,UAAW,EAChB3wI,KAAKqyI,eAAgB,EACrBryI,KAAKw2I,cAAc,SAAChI,GAChBA,EAAQoI,eAAe,CAAEL,UAAU,MAEnCv2I,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQqF,gBAAgB/gH,K,2BAmBrC,WAAuB,IAATA,EAAS,uDAAF,GACjB91B,KAAKwrF,OAAS+pD,IACS,IAAnBz/G,EAAK0uF,WACLxkH,KAAK8wI,cAAc5uH,KAAKliB,KAAKwrF,QAE7BxrF,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQsF,cAAchhH,K,qBAoBnC,WAAiB,IAATA,EAAS,uDAAF,GAGLihH,EAAoB/2I,KAAKg3I,mBAAmBlhH,EAAKygH,UACvDv2I,KAAKwrF,OAASgqD,GACdx1I,KAAKuvI,OAAS,KACdvvI,KAAKw2I,cAAc,SAAChI,GAChBA,EAAQyI,QAAQz6H,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIjR,GAAO,CAAEygH,UAAU,OAEvEv2I,KAAKk3I,gBACkB,IAAnBphH,EAAK0uF,YACLxkH,KAAK+wI,aAAa7uH,KAAKliB,KAAKuB,OAC5BvB,KAAK8wI,cAAc5uH,KAAKliB,KAAKwrF,SAEjCxrF,KAAKm3I,iBAAiB36H,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIjR,GAAO,CAAEihH,uBAC/D/2I,KAAKk2I,kBAAkB7iI,QAAQ,SAAC+jI,GAAD,OAAcA,GAAS,O,oBAoB1D,WAAgB,IAATthH,EAAS,uDAAF,GAGJihH,EAAoB/2I,KAAKg3I,mBAAmBlhH,EAAKygH,UACvDv2I,KAAKwrF,OAAS6pD,GACdr1I,KAAKw2I,cAAc,SAAChI,GAChBA,EAAQ6I,OAAO76H,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIjR,GAAO,CAAEygH,UAAU,OAEtEv2I,KAAKi0I,uBAAuB,CAAEsC,UAAU,EAAM/xB,UAAW1uF,EAAK0uF,YAC9DxkH,KAAKm3I,iBAAiB36H,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIjR,GAAO,CAAEihH,uBAC/D/2I,KAAKk2I,kBAAkB7iI,QAAQ,SAAC+jI,GAAD,OAAcA,GAAS,O,8BAE1D,SAAiBthH,GACT91B,KAAKwxI,UAAY17G,EAAKygH,WACtBv2I,KAAKwxI,QAAQyC,uBAAuBn+G,GAC/BA,EAAKihH,mBACN/2I,KAAKwxI,QAAQqF,kBAEjB72I,KAAKwxI,QAAQmF,oB,uBAMrB,SAAU/vG,GACN5mC,KAAKwxI,QAAU5qG,I,oCAgBnB,WAAgC,IAAT9Q,EAAS,uDAAF,GAC1B91B,KAAKs3I,oBACLt3I,KAAKk3I,eACDl3I,KAAK0wI,UACL1wI,KAAKu3I,8BACLv3I,KAAKuvI,OAASvvI,KAAKw3I,gBACnBx3I,KAAKwrF,OAASxrF,KAAKy3I,mBACfz3I,KAAKwrF,SAAW6pD,IAASr1I,KAAKwrF,SAAW+pD,IACzCv1I,KAAK03I,mBAAmB5hH,EAAK0uF,aAGd,IAAnB1uF,EAAK0uF,YACLxkH,KAAK+wI,aAAa7uH,KAAKliB,KAAKuB,OAC5BvB,KAAK8wI,cAAc5uH,KAAKliB,KAAKwrF,SAE7BxrF,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQyC,uBAAuBn+G,K,iCAI5C,WAA8C,IAA1BA,EAA0B,uDAAnB,CAAE0uF,WAAW,GACpCxkH,KAAKw2I,cAAc,SAACmB,GAAD,OAAUA,EAAKC,oBAAoB9hH,KACtD91B,KAAKi0I,uBAAuB,CAAEsC,UAAU,EAAM/xB,UAAW1uF,EAAK0uF,c,+BAElE,WACIxkH,KAAKwrF,OAASxrF,KAAK63I,uBAAyBrC,GAAWH,K,2BAE3D,WACI,OAAOr1I,KAAKyvI,UAAYzvI,KAAKyvI,UAAUzvI,MAAQ,O,gCAEnD,SAAmBwkH,GAAS,WACxB,GAAIxkH,KAAK8zI,eAAgB,CACrB9zI,KAAKwrF,OAAS+pD,GACdv1I,KAAKg2I,8BAA+B,EACpC,IAAM5G,EAAMD,EAAanvI,KAAK8zI,eAAe9zI,OAC7CA,KAAK83I,6BAA+B1I,EAAIlrI,UAAU,SAACqrI,GAC/C,EAAKyG,8BAA+B,EAIpC,EAAK+B,UAAUxI,EAAQ,CAAE/qB,mB,yCAIrC,WACQxkH,KAAK83I,+BACL93I,KAAK83I,6BAA6BliI,cAClC5V,KAAKg2I,8BAA+B,K,uBA0B5C,SAAUzG,GAAiB,IAATz5G,EAAS,uDAAF,GACrB91B,KAAKuvI,OAASA,EACdvvI,KAAKg4I,uBAAyC,IAAnBliH,EAAK0uF,a,iBA8BpC,SAAI2sB,GACA,OA1kBR,SAAe3C,EAAS2C,EAAM8G,GAC1B,GAAY,MAAR9G,EACA,OAAO,KAIX,GAHK5mI,MAAMyL,QAAQm7H,KACfA,EAAOA,EAAK5uH,MAskBa,MApkBzBhY,MAAMyL,QAAQm7H,IAAyB,IAAhBA,EAAKhtI,OAC5B,OAAO,KAGX,IAAI+zI,EAAgB1J,EAcpB,OAbA2C,EAAK99H,QAAQ,SAAClS,GAEN+2I,EADAA,aAAyBC,GACTD,EAAcE,SAAS1qG,eAAevsC,GAClD+2I,EAAcE,SAASj3I,GACvB,KAEC+2I,aAAyBG,IACdH,EAAcI,GAAGn3I,IAGjB,OAGjB+2I,EAkjBIK,CAAMv4I,KAAMmxI,K,sBA6BvB,SAASD,EAAWC,GAChB,IAAM3C,EAAU2C,EAAOnxI,KAAKkS,IAAIi/H,GAAQnxI,KACxC,OAAOwuI,GAAWA,EAAQe,OAASf,EAAQe,OAAO2B,GAAa,O,sBAgCnE,SAASA,EAAWC,GAChB,QAASnxI,KAAKoxI,SAASF,EAAWC,K,gBAKtC,WAEI,IADA,IAAI51G,EAAIv7B,KACDu7B,EAAEi2G,SACLj2G,EAAIA,EAAEi2G,QAEV,OAAOj2G,I,mCAGX,SAAsBipF,GAClBxkH,KAAKwrF,OAASxrF,KAAKy3I,mBACfjzB,GACAxkH,KAAK8wI,cAAc5uH,KAAKliB,KAAKwrF,QAE7BxrF,KAAKwxI,SACLxxI,KAAKwxI,QAAQwG,sBAAsBxzB,K,8BAI3C,WACIxkH,KAAK+wI,aAAe,IAAI,IACxB/wI,KAAK8wI,cAAgB,IAAI,M,8BAE7B,WACI,OAAI9wI,KAAK63I,uBACErC,GACPx1I,KAAKuvI,OACE+F,GACPt1I,KAAKg2I,8BAAgCh2I,KAAKw4I,uBAAuBjD,IAC1DA,GACPv1I,KAAKw4I,uBAAuBlD,IACrBA,GACJD,K,oCAGX,SAAuB7pD,GACnB,OAAOxrF,KAAKy4I,aAAa,SAACjK,GAAD,OAAaA,EAAQhjD,SAAWA,M,+BAG7D,WACI,OAAOxrF,KAAKy4I,aAAa,SAACjK,GAAD,OAAaA,EAAQoC,U,iCAGlD,WACI,OAAO5wI,KAAKy4I,aAAa,SAACjK,GAAD,OAAaA,EAAQ3O,Y,6BAGlD,WAAyB,IAAT/pG,EAAS,uDAAF,GACnB91B,KAAK2wI,UAAY3wI,KAAK04I,oBAClB14I,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQqF,gBAAgB/gH,K,4BAIrC,WAAwB,IAATA,EAAS,uDAAF,GAClB91B,KAAK6/H,QAAU7/H,KAAK24I,sBAChB34I,KAAKwxI,UAAY17G,EAAKygH,UACtBv2I,KAAKwxI,QAAQmF,eAAe7gH,K,2BAIpC,SAAc8iH,GACV,MAA4B,iBAAdA,GAAwC,OAAdA,GACF,IAAlCp8H,OAAOC,KAAKm8H,GAAWz0I,QAAgB,UAAWy0I,GAAa,aAAcA,I,yCAGrF,SAA4B5pI,GACxBhP,KAAKi2I,oBAAsBjnI,I,gCAG/B,SAAmB8mB,GACX6/G,GAAa7/G,IAA0B,MAAjBA,EAAKw8G,WAC3BtyI,KAAKq2I,UAAYvgH,EAAKw8G,Y,gCAQ9B,SAAmBiE,GAEf,OAAQA,MADYv2I,KAAKwxI,UAAWxxI,KAAKwxI,QAAQZ,SACX5wI,KAAKwxI,QAAQkH,wB,GAoGrDG,G,YAcF,aAA6D,MAAjDD,EAAiD,uDAArC,KAAMlD,EAA+B,uCAAd5B,EAAc,mEACzD,YAAM2B,GAAeC,GAAkBG,GAAoB/B,EAAgB4B,MAEtE/qH,UAAY,GACjB,EAAKmuH,gBAAgBF,GACrB,EAAKG,mBAAmBrD,GACxB,EAAKsD,mBACL,EAAK/E,uBAAuB,CACxBsC,UAAU,EAKV/xB,YAAasvB,IAbwC,E,6DAuC7D,SAASvyI,GAAmB,WAAZymB,EAAY,uDAAF,GACtBhoB,KAAKuB,MAAQvB,KAAKmyI,cAAgB5wI,EAC9BvB,KAAK2qB,UAAUxmB,SAA4C,IAAlC6jB,EAAQusH,uBACjCv0I,KAAK2qB,UAAUtX,QAAQ,SAAC+jI,GAAD,OAAcA,EAAS,EAAK71I,OAAyC,IAAlCymB,EAAQixH,yBAEtEj5I,KAAKi0I,uBAAuBjsH,K,wBAWhC,SAAWzmB,GAAmB,IAAZymB,EAAY,uDAAF,GACxBhoB,KAAKs0I,SAAS/yI,EAAOymB,K,mBAoBzB,WAAoC,IAA9B4wH,EAA8B,uDAAlB,KAAM5wH,EAAY,uDAAF,GAC9BhoB,KAAK84I,gBAAgBF,GACrB54I,KAAK42I,eAAe5uH,GACpBhoB,KAAK02I,gBAAgB1uH,GACrBhoB,KAAKs0I,SAASt0I,KAAKuB,MAAOymB,GAC1BhoB,KAAKoyI,gBAAiB,I,0BAK1B,c,0BAIA,SAAa8G,GACT,OAAO,I,kCAKX,WACI,OAAOl5I,KAAKgtB,W,8BAOhB,SAAiBhe,GACbhP,KAAK2qB,UAAU/mB,KAAKoL,K,iCAMxB,SAAoBA,GAChBomI,GAAep1I,KAAK2qB,UAAW3b,K,sCAOnC,SAAyBA,GACrBhP,KAAKk2I,kBAAkBtyI,KAAKoL,K,yCAMhC,SAA4BA,GACxBomI,GAAep1I,KAAKk2I,kBAAmBlnI,K,2BAK3C,SAAcmqI,M,kCAEd,WACI,QAAsB,WAAlBn5I,KAAKsyI,WACDtyI,KAAKqyI,eACLryI,KAAKq0I,cACLr0I,KAAK+yI,iBACL/yI,KAAKgzI,iBACLhzI,KAAKoyI,kBACLpyI,KAAKs0I,SAASt0I,KAAKmyI,cAAe,CAAEoE,UAAU,EAAMhC,uBAAuB,IACpE,M,6BAKnB,SAAgBqE,GACR54I,KAAKo5I,cAAcR,IACnB54I,KAAKuB,MAAQvB,KAAKmyI,cAAgByG,EAAUr3I,MAC5Cq3I,EAAU5rH,SAAWhtB,KAAKi3I,QAAQ,CAAEV,UAAU,EAAM/xB,WAAW,IAC3DxkH,KAAKq3I,OAAO,CAAEd,UAAU,EAAM/xB,WAAW,KAG7CxkH,KAAKuB,MAAQvB,KAAKmyI,cAAgByG,M,CAxKpB7C,IAoPpBoC,G,YAcF,WAAYC,EAAU1C,EAAiB5B,GAAc,kCACjD,YAAM2B,GAAeC,GAAkBG,GAAoB/B,EAAgB4B,MACtE0C,SAAWA,EAChB,EAAKY,mBACL,EAAKD,mBAAmBrD,GACxB,EAAK2D,iBACL,EAAKpF,uBAAuB,CACxBsC,UAAU,EAIV/xB,YAAasvB,IAXgC,E,oEAuBrD,SAAgB3yI,EAAMqtI,GAClB,OAAIxuI,KAAKo4I,SAASj3I,GACPnB,KAAKo4I,SAASj3I,IACzBnB,KAAKo4I,SAASj3I,GAAQqtI,EACtBA,EAAQ8K,UAAUt5I,MAClBwuI,EAAQiF,4BAA4BzzI,KAAKi2I,qBAClCzH,K,wBAUX,SAAWrtI,EAAMqtI,GACbxuI,KAAKu5I,gBAAgBp4I,EAAMqtI,GAC3BxuI,KAAKi0I,yBACLj0I,KAAKi2I,wB,2BAOT,SAAc90I,GACNnB,KAAKo4I,SAASj3I,IACdnB,KAAKo4I,SAASj3I,GAAMsyI,4BAA4B,qBAC5CzzI,KAAKo4I,SAASj3I,GACtBnB,KAAKi0I,yBACLj0I,KAAKi2I,wB,wBAQT,SAAW90I,EAAMqtI,GACTxuI,KAAKo4I,SAASj3I,IACdnB,KAAKo4I,SAASj3I,GAAMsyI,4BAA4B,qBAC5CzzI,KAAKo4I,SAASj3I,GAClBqtI,GACAxuI,KAAKu5I,gBAAgBp4I,EAAMqtI,GAC/BxuI,KAAKi0I,yBACLj0I,KAAKi2I,wB,sBAYT,SAASuD,GACL,OAAOx5I,KAAKo4I,SAAS1qG,eAAe8rG,IAAgBx5I,KAAKo4I,SAASoB,GAAa9I,U,sBAqCnF,SAASnvI,GAAmB,WAAZymB,EAAY,uDAAF,GACtBhoB,KAAKy5I,uBAAuBl4I,GAC5Bib,OAAOC,KAAKlb,GAAO8R,QAAQ,SAAAlS,GACvB,EAAKu4I,uBAAuBv4I,GAC5B,EAAKi3I,SAASj3I,GAAMmzI,SAAS/yI,EAAMJ,GAAO,CAAEo1I,UAAU,EAAM/xB,UAAWx8F,EAAQw8F,cAEnFxkH,KAAKi0I,uBAAuBjsH,K,wBAiChC,SAAWzmB,GAAmB,WAAZymB,EAAY,uDAAF,GAKX,MAATzmB,IAEJib,OAAOC,KAAKlb,GAAO8R,QAAQ,SAAAlS,GACnB,EAAKi3I,SAASj3I,IACd,EAAKi3I,SAASj3I,GAAMw4I,WAAWp4I,EAAMJ,GAAO,CAAEo1I,UAAU,EAAM/xB,UAAWx8F,EAAQw8F,cAGzFxkH,KAAKi0I,uBAAuBjsH,M,mBA2DhC,WAA8B,IAAxBzmB,EAAwB,uDAAhB,GAAIymB,EAAY,uDAAF,GACxBhoB,KAAKw2I,cAAc,SAAChI,EAASrtI,GACzBqtI,EAAQxR,MAAMz7H,EAAMJ,GAAO,CAAEo1I,UAAU,EAAM/xB,UAAWx8F,EAAQw8F,cAEpExkH,KAAK62I,gBAAgB7uH,GACrBhoB,KAAK22I,eAAe3uH,GACpBhoB,KAAKi0I,uBAAuBjsH,K,yBAShC,WACI,OAAOhoB,KAAK45I,gBAAgB,GAAI,SAACtkI,EAAKk5H,EAASrtI,GAE3C,OADAmU,EAAInU,GAAQqtI,aAAmBqK,GAAcrK,EAAQjtI,MAAQitI,EAAQqL,cAC9DvkI,M,kCAIf,WACI,IAAIwkI,EAAiB95I,KAAK45I,iBAAgB,EAAO,SAACG,EAASC,GACvD,QAAOA,EAAMnF,wBAAgCkF,IAIjD,OAFID,GACA95I,KAAKi0I,uBAAuB,CAAEsC,UAAU,IACrCuD,I,oCAGX,SAAuB34I,GACnB,IAAKqb,OAAOC,KAAKzc,KAAKo4I,UAAUj0I,OAC5B,MAAM,IAAIkwB,MAAJ,yKAKV,IAAKr0B,KAAKo4I,SAASj3I,GACf,MAAM,IAAIkzB,MAAJ,8CAAiDlzB,EAAjD,Q,2BAId,SAAcg4I,GAAE,WACZ38H,OAAOC,KAAKzc,KAAKo4I,UAAU/kI,QAAQ,SAAAsJ,GAI/B,IAAM6xH,EAAU,EAAK4J,SAASz7H,GAC9B6xH,GAAW2K,EAAG3K,EAAS7xH,O,4BAI/B,WAAc,WACV3c,KAAKw2I,cAAc,SAAChI,GAChBA,EAAQ8K,UAAU,GAClB9K,EAAQiF,4BAA4B,EAAKwC,yB,0BAIjD,WACIj2I,KAAKuB,MAAQvB,KAAKi6I,iB,0BAGtB,SAAaf,GACT,cAA0B18H,OAAOC,KAAKzc,KAAKo4I,UAA3C,eAAsD,CAAjD,IAAMoB,EAAW,KACZhL,EAAUxuI,KAAKo4I,SAASoB,GAC9B,GAAIx5I,KAAK4sB,SAAS4sH,IAAgBN,EAAU1K,GACxC,OAAO,EAGf,OAAO,I,0BAGX,WAAY,WACR,OAAOxuI,KAAK45I,gBAAgB,GAAI,SAACtkI,EAAKk5H,EAASrtI,GAI3C,OAHIqtI,EAAQkC,SAAW,EAAK1jH,YACxB1X,EAAInU,GAAQqtI,EAAQjtI,OAEjB+T,M,6BAIf,SAAgB4kI,EAAWlrI,GACvB,IAAIspB,EAAM4hH,EAIV,OAHAl6I,KAAKw2I,cAAc,SAAChI,EAASrtI,GACzBm3B,EAAMtpB,EAAGspB,EAAKk2G,EAASrtI,KAEpBm3B,I,kCAGX,WACI,cAA0B9b,OAAOC,KAAKzc,KAAKo4I,UAA3C,eACI,GAAIp4I,KAAKo4I,SADS,MACa1H,QAC3B,OAAO,EAGf,OAAOl0H,OAAOC,KAAKzc,KAAKo4I,UAAUj0I,OAAS,GAAKnE,KAAKgtB,W,oCAGzD,SAAuBzrB,GACnBvB,KAAKw2I,cAAc,SAAChI,EAASrtI,GACzB,QAAoBsD,IAAhBlD,EAAMJ,GACN,MAAM,IAAIkzB,MAAJ,2DAA8DlzB,EAA9D,a,CA1VE40I,IA+ZlBsC,G,YAcF,WAAYD,EAAU1C,EAAiB5B,GAAc,kCACjD,YAAM2B,GAAeC,GAAkBG,GAAoB/B,EAAgB4B,MACtE0C,SAAWA,EAChB,EAAKY,mBACL,EAAKD,mBAAmBrD,GACxB,EAAK2D,iBACL,EAAKpF,uBAAuB,CACxBsC,UAAU,EAKV/xB,YAAasvB,IAZgC,E,uDAoBrD,SAAGnqI,GACC,OAAO3J,KAAKo4I,SAASzuI,K,kBAOzB,SAAK6kI,GACDxuI,KAAKo4I,SAASx0I,KAAK4qI,GACnBxuI,KAAKm6I,iBAAiB3L,GACtBxuI,KAAKi0I,yBACLj0I,KAAKi2I,wB,oBAQT,SAAOtsI,EAAO6kI,GACVxuI,KAAKo4I,SAAS7vG,OAAO5+B,EAAO,EAAG6kI,GAC/BxuI,KAAKm6I,iBAAiB3L,GACtBxuI,KAAKi0I,2B,sBAOT,SAAStqI,GACD3J,KAAKo4I,SAASzuI,IACd3J,KAAKo4I,SAASzuI,GAAO8pI,4BAA4B,cACrDzzI,KAAKo4I,SAAS7vG,OAAO5+B,EAAO,GAC5B3J,KAAKi0I,2B,wBAQT,SAAWtqI,EAAO6kI,GACVxuI,KAAKo4I,SAASzuI,IACd3J,KAAKo4I,SAASzuI,GAAO8pI,4BAA4B,cACrDzzI,KAAKo4I,SAAS7vG,OAAO5+B,EAAO,GACxB6kI,IACAxuI,KAAKo4I,SAAS7vG,OAAO5+B,EAAO,EAAG6kI,GAC/BxuI,KAAKm6I,iBAAiB3L,IAE1BxuI,KAAKi0I,yBACLj0I,KAAKi2I,wB,kBAKT,WACI,OAAOj2I,KAAKo4I,SAASj0I,S,sBAqCzB,SAAS5C,GAAmB,WAAZymB,EAAY,uDAAF,GACtBhoB,KAAKy5I,uBAAuBl4I,GAC5BA,EAAM8R,QAAQ,SAAC6+H,EAAUvoI,GACrB,EAAK+vI,uBAAuB/vI,GAC5B,EAAK2uI,GAAG3uI,GAAO2qI,SAASpC,EAAU,CAAEqE,UAAU,EAAM/xB,UAAWx8F,EAAQw8F,cAE3ExkH,KAAKi0I,uBAAuBjsH,K,wBAkChC,SAAWzmB,GAAmB,WAAZymB,EAAY,uDAAF,GAKX,MAATzmB,IAEJA,EAAM8R,QAAQ,SAAC6+H,EAAUvoI,GACjB,EAAK2uI,GAAG3uI,IACR,EAAK2uI,GAAG3uI,GAAOgwI,WAAWzH,EAAU,CAAEqE,UAAU,EAAM/xB,UAAWx8F,EAAQw8F,cAGjFxkH,KAAKi0I,uBAAuBjsH,M,mBAgDhC,WAA8B,IAAxBzmB,EAAwB,uDAAhB,GAAIymB,EAAY,uDAAF,GACxBhoB,KAAKw2I,cAAc,SAAChI,EAAS7kI,GACzB6kI,EAAQxR,MAAMz7H,EAAMoI,GAAQ,CAAE4sI,UAAU,EAAM/xB,UAAWx8F,EAAQw8F,cAErExkH,KAAK62I,gBAAgB7uH,GACrBhoB,KAAK22I,eAAe3uH,GACpBhoB,KAAKi0I,uBAAuBjsH,K,yBAQhC,WACI,OAAOhoB,KAAKo4I,SAAS3uI,IAAI,SAAC+kI,GACtB,OAAOA,aAAmBqK,GAAcrK,EAAQjtI,MAAQitI,EAAQqL,kB,mBAiCxE,WACQ75I,KAAKo4I,SAASj0I,OAAS,IAE3BnE,KAAKw2I,cAAc,SAAChI,GAAD,OAAaA,EAAQiF,4BAA4B,gBACpEzzI,KAAKo4I,SAAS7vG,OAAO,GACrBvoC,KAAKi0I,4B,kCAGT,WACI,IAAI6F,EAAiB95I,KAAKo4I,SAAS3iI,OAAO,SAACskI,EAASC,GAChD,QAAOA,EAAMnF,wBAAgCkF,IAC9C,GAGH,OAFID,GACA95I,KAAKi0I,uBAAuB,CAAEsC,UAAU,IACrCuD,I,oCAGX,SAAuBnwI,GACnB,IAAK3J,KAAKo4I,SAASj0I,OACf,MAAM,IAAIkwB,MAAJ,yKAKV,IAAKr0B,KAAKs4I,GAAG3uI,GACT,MAAM,IAAI0qB,MAAJ,4CAA+C1qB,M,2BAI7D,SAAcwvI,GACVn5I,KAAKo4I,SAAS/kI,QAAQ,SAACm7H,EAAS7kI,GAC5BwvI,EAAG3K,EAAS7kI,O,0BAIpB,WAAY,WACR3J,KAAKuB,MACDvB,KAAKo4I,SAASjjI,OAAO,SAACq5H,GAAD,OAAaA,EAAQkC,SAAW,EAAK1jH,WACrDvjB,IAAI,SAAC+kI,GAAD,OAAaA,EAAQjtI,U,0BAGtC,SAAa23I,GACT,OAAOl5I,KAAKo4I,SAAShwI,KAAK,SAAComI,GAAD,OAAaA,EAAQkC,SAAWwI,EAAU1K,O,4BAGxE,WAAc,WACVxuI,KAAKw2I,cAAc,SAAChI,GAAD,OAAa,EAAK2L,iBAAiB3L,O,oCAG1D,SAAuBjtI,GACnBvB,KAAKw2I,cAAc,SAAChI,EAAS3mI,GACzB,QAAiBpD,IAAblD,EAAMsG,GACN,MAAM,IAAIwsB,MAAJ,yDAA4DxsB,EAA5D,U,kCAKlB,WAAoB,oBACM7H,KAAKo4I,UADX,IAChB,2BACI,GADiC,QACrB1H,QACR,OAAO,EAHC,8BAKhB,OAAO1wI,KAAKo4I,SAASj0I,OAAS,GAAKnE,KAAKgtB,W,8BAE5C,SAAiBwhH,GACbA,EAAQ8K,UAAUt5I,MAClBwuI,EAAQiF,4BAA4BzzI,KAAKi2I,yB,CAvVzBF,IAkWlBqE,GAAwB,CAC1B73I,QAAS8uI,EACT7uI,YAAa,aAAW,kBAAM63I,MAG5BC,GADK,kBAAM/1I,QAAQC,QAAQ,MACR+1I,G,kBAiEnBF,E,YACF,WAAYrL,EAAY6E,GAAe,kCACnC,aAKK2G,WAAY,EACjB,EAAKC,YAAc,GAKnB,EAAKC,SAAW,IAAI,IACpB,EAAK9F,KACD,IAAIuD,GAAU,GAAIrI,EAAkBd,GAAae,EAAuB8D,IAdzC,E,oEAiBvC,WACI7zI,KAAK+4I,uB,yBAMT,WACI,OAAO/4I,O,mBAMX,WACI,OAAOA,KAAK40I,O,gBAOhB,WACI,MAAO,K,oBAMX,WACI,OAAO50I,KAAK40I,KAAKwD,W,wBASrB,SAAW9sI,GAAG,WACVgvI,GAAgBj8H,KAAK,WACjB,IAAMhG,EAAY,EAAKsiI,eAAervI,EAAI6lI,MAC1C7lI,EAAIkjI,QACAn2H,EAAUkhI,gBAAgBjuI,EAAInK,KAAMmK,EAAIkjI,SAC5CwD,EAAa1mI,EAAIkjI,QAASljI,GAC1BA,EAAIkjI,QAAQyF,uBAAuB,CAAEzvB,WAAW,IAChD,EAAKi2B,YAAY72I,KAAK0H,O,wBAS9B,SAAWA,GACP,OAAOtL,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,Q,2BAQ7B,SAAc7lI,GAAG,WACbgvI,GAAgBj8H,KAAK,WACjB,IAAMhG,EAAY,EAAKsiI,eAAervI,EAAI6lI,MACtC94H,GACAA,EAAUuiI,cAActvI,EAAInK,MAEhCi0I,GAAe,EAAKqF,YAAanvI,O,0BASzC,SAAaA,GAAG,WACZgvI,GAAgBj8H,KAAK,WACjB,IAAMhG,EAAY,EAAKsiI,eAAervI,EAAI6lI,MACpC0J,EAAQ,IAAI1C,GAAU,IAC5B3D,GAAmBqG,EAAOvvI,GAC1B+M,EAAUkhI,gBAAgBjuI,EAAInK,KAAM05I,GACpCA,EAAM5G,uBAAuB,CAAEzvB,WAAW,Q,6BASlD,SAAgBl5G,GAAG,WACfgvI,GAAgBj8H,KAAK,WACjB,IAAMhG,EAAY,EAAKsiI,eAAervI,EAAI6lI,MACtC94H,GACAA,EAAUuiI,cAActvI,EAAInK,U,0BAUxC,SAAamK,GACT,OAAOtL,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,Q,yBAQ7B,SAAY7lI,EAAK/J,GAAK,WAClB+4I,GAAgBj8H,KAAK,WACJ,EAAKu2H,KAAK1iI,IAAI5G,EAAI6lI,MAC1BmD,SAAS/yI,O,sBAStB,SAASA,GACLvB,KAAKwuI,QAAQ8F,SAAS/yI,K,sBAS1B,SAASuwB,GAIL,OAHA9xB,KAAKw6I,WAAY,EACjB7F,GAAoB30I,KAAK40I,KAAM50I,KAAKy6I,aACpCz6I,KAAK06I,SAASx4H,KAAK4P,IACZ,I,qBAMX,WACI9xB,KAAK86I,c,uBAQT,WAA2B,IAAjBv5I,EAAiB,4DAATkD,EACdzE,KAAK40I,KAAK5X,MAAMz7H,GAChBvB,KAAKw6I,WAAY,I,gCAErB,WACQx6I,KAAKgoB,SAAoC,MAAzBhoB,KAAKgoB,QAAQsqH,WAC7BtyI,KAAK40I,KAAKyB,UAAYr2I,KAAKgoB,QAAQsqH,Y,4BAI3C,SAAenB,GAEX,OADAA,EAAKlyG,MACEkyG,EAAKhtI,OAASnE,KAAK40I,KAAK1iI,IAAIi/H,GAAQnxI,KAAK40I,S,CA5LnCvD,G,OA+LrBgJ,EAAO95I,UAAO,SAAwBC,GAAK,OAAO,IAAKA,GAAK65I,GAAQ,KAAyBjM,EAAe,IAAK,KAAyBC,EAAqB,MAC/JgM,EAAO55I,UAAO,KAAyB,CAAEC,KAAM25I,EAAQ15I,UAAW,CAAC,CAAC,OAAQ,EAAG,WAAY,GAAI,EAAG,YAAa,IAAK,CAAC,WAAY,CAAC,GAAI,SAAU,KAAM6X,aAAc,SAA6B7W,EAAIC,GAAgB,EAALD,GACxM,KAAkB,SAAU,SAA0CmwB,GAAU,OAAOlwB,EAAIm5I,SAASjpH,IAApG,CAAgH,QAAS,WAA6C,OAAOlwB,EAAIo5I,aAChL74I,OAAQ,CAAE6lB,QAAS,CAAC,gBAAiB,YAAc7F,QAAS,CAAEu4H,SAAU,YAAchiI,SAAU,CAAC,UAAWpW,SAAU,CAAC,KAA0B,CAAC83I,KAAyB,Q,KAmP9Ka,GAAqB,CACvB14I,QAASgvI,EACT/uI,YAAa,aAAW,kBAAM04I,MAoB5BC,GAlBO,kBAAM52I,QAAQC,QAAQ,MAkBR42I,G,kBAsFrBF,E,YACF,WAAYt0G,EAAQooG,EAAY6E,EAAiBkB,GAAc,kCAC3D,aACKvG,QAAU,IAAIqK,GAEnB,EAAKwC,aAAc,EAMnB,EAAK7gE,OAAS,IAAI,IAClB,EAAKg3D,QAAU5qG,EACf,EAAK00G,eAAetM,GACpB,EAAKuM,oBAAoB1H,GACzB,EAAKpC,cAAgBqD,GAAoB,EAAMC,GAdY,E,gEAiB/D,SAAY9vI,GACRjF,KAAKw7I,kBACAx7I,KAAKq7I,aACNr7I,KAAKy7I,gBACL,eAAgBx2I,GAChBjF,KAAK07I,gBAAgBz2I,GAErBwvI,GAAkBxvI,EAASjF,KAAK00I,aAChC10I,KAAKk3I,aAAal3I,KAAKi6F,OACvBj6F,KAAK00I,UAAY10I,KAAKi6F,S,yBAI9B,WACIj6F,KAAK27I,eAAiB37I,KAAK27I,cAAcf,cAAc56I,Q,gBAO3D,WACI,OAAOA,KAAKwxI,QAAUO,EAAY/xI,KAAKmB,KAAMnB,KAAKwxI,SAAW,CAACxxI,KAAKmB,Q,yBAMvE,WACI,OAAOnB,KAAKwxI,QAAUxxI,KAAKwxI,QAAQmK,cAAgB,O,+BAQvD,SAAkBzJ,GACdlyI,KAAK00I,UAAYxC,EACjBlyI,KAAKw6E,OAAOt4D,KAAKgwH,K,2BAErB,WACIlyI,KAAK+4I,qBACL/4I,KAAK47I,gBAAkB57I,KAAK67I,mBAAqB77I,KAAK27I,cAAcG,WAAW97I,MAC/EA,KAAKq7I,aAAc,I,gCAEvB,WACQr7I,KAAKgoB,SAAoC,MAAzBhoB,KAAKgoB,QAAQsqH,WAC7BtyI,KAAKwuI,QAAQ6H,UAAYr2I,KAAKgoB,QAAQsqH,Y,2BAG9C,WACI,OAAQtyI,KAAKwxI,YAAcxxI,KAAKgoB,UAAWhoB,KAAKgoB,QAAQy8G,c,8BAE5D,WACIuN,EAAahyI,KAAKwuI,QAASxuI,MAC3BA,KAAKwuI,QAAQyF,uBAAuB,CAAEzvB,WAAW,M,6BAErD,WACSxkH,KAAK47I,iBACN57I,KAAK+7I,mBAET/7I,KAAKg8I,e,8BAET,c,wBAWA,WACQh8I,KAAKgoB,SAAWhoB,KAAKgoB,QAAQ7mB,OAC7BnB,KAAKmB,KAAOnB,KAAKgoB,QAAQ7mB,MACxBnB,KAAK47I,kB,0BAId,SAAar6I,GAAK,WACd45I,GAAkB98H,KAAK,WACnB,EAAKmwH,QAAQ8F,SAAS/yI,EAAO,CAAE03I,uBAAuB,Q,6BAG9D,SAAgBh0I,GAAO,WACbg3I,EAAgBh3I,EAAO,WAAeG,aACtC2nB,EAA+B,KAAlBkvH,GAAyBA,GAAmC,UAAlBA,EAC7Dd,GAAkB98H,KAAK,WACf0O,IAAe,EAAKyhH,QAAQxhH,SAC5B,EAAKwhH,QAAQyI,WAEPlqH,GAAc,EAAKyhH,QAAQxhH,UACjC,EAAKwhH,QAAQ6I,e,CAjHP9F,G,OAsHtB2J,EAAQ36I,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAK06I,GAAS,KAAyB7J,EAAkB,GAAI,KAAyBjD,EAAe,IAAK,KAAyBC,EAAqB,IAAK,KAAyBZ,EAAmB,MAClQyN,EAAQz6I,UAAO,KAAyB,CAAEC,KAAMw6I,EAASv6I,UAAW,CAAC,CAAC,GAAI,UAAW,GAAI,EAAG,kBAAmB,GAAI,EAAG,cAAe,KAAMwB,OAAQ,CAAEhB,KAAM,OAAQ4rB,WAAY,CAAC,WAAY,cAAektE,MAAO,CAAC,UAAW,SAAUjyE,QAAS,CAAC,iBAAkB,YAAc7F,QAAS,CAAEq4D,OAAQ,iBAAmB9hE,SAAU,CAAC,WAAYpW,SAAU,CAAC,KAA0B,CAAC24I,KAAsB,KAAmC,Q,uBAsFxaiB,E,sDAENA,EAAc37I,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK07I,IAC1EA,EAAcz7I,UAAO,KAAyB,CAAEC,KAAMw7I,EAAev7I,UAAW,CAAC,CAAC,OAAQ,EAAG,WAAY,GAAI,EAAG,mBAAoB,KAAMoC,UAAW,CAAC,aAAc,M,KAgB9Jo5I,GAAwB,CAC1B55I,QAASkrI,EACTjrI,YAAa,aAAW,kBAAM45I,KAC9B1yH,OAAO,G,kBA0BL0yH,E,YACF,WAAYvtB,EAAW9hH,GAAW,kCAC9B,aACK8hH,UAAYA,EACjB,EAAK9hH,YAAcA,EAMnB,EAAKyyG,SAAW,SAACpN,KAKjB,EAAKqN,UAAY,aAda,E,+DAoBlC,SAAWl+G,GAGPvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,QAD1B,MAATrB,EAAgB,GAAKA,K,8BAOjD,SAAiByN,GACbhP,KAAKw/G,SAAW,SAACj+G,GACbyN,EAAY,IAATzN,EAAc,KAAOssB,WAAWtsB,O,+BAO3C,SAAkByN,GACdhP,KAAKy/G,UAAYzwG,I,8BAMrB,SAAiB+d,GACb/sB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,WAAYmqB,O,CA/C7CygH,G,OAkDlC4O,EAAoB77I,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK47I,GAAqB,KAAyB,KAAmB,KAAyB,OAChLA,EAAoB37I,UAAO,KAAyB,CAAEC,KAAM07I,EAAqBz7I,UAAW,CAAC,CAAC,QAAS,OAAQ,SAAU,kBAAmB,IAAK,CAAC,QAAS,OAAQ,SAAU,cAAe,IAAK,CAAC,QAAS,OAAQ,SAAU,UAAW,KAAM6X,aAAc,SAA0C7W,EAAIC,GAAgB,EAALD,GAC7S,KAAkB,QAAS,SAAsDmwB,GAAU,OAAOlwB,EAAI49G,SAAS1tF,EAAOtF,OAAOjrB,QAA7H,CAAwI,OAAQ,WAAyD,OAAOK,EAAI69G,eACnNn9G,SAAU,CAAC,KAA0B,CAAC65I,KAAyB,Q,uBAsClEE,E,sDAENA,EAA2B97I,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAK67I,IACpGA,EAA2BnjI,UAAO,KAAwB,CAAExY,KAAM27I,IAClEA,EAA2BljI,UAAO,KAAwB,I,KA0SpDmjI,GAAqC,IAAI,IAAe,iCACxDC,GAAuB,CACzBh6I,QAASgvI,EACT/uI,YAAa,aAAW,kBAAMg6I,M,kBAwB5BA,E,YACF,WAAYxN,EAAY6E,EAAiBkB,EAAgB0H,GAAqB,kCAC1E,aACKA,sBAAwBA,EAE7B,EAAKjiE,OAAS,IAAI,IAQlB,EAAKkiE,qBAAsB,EAC3B,EAAKpB,eAAetM,GACpB,EAAKuM,oBAAoB1H,GACzB,EAAKpC,cAAgBqD,GAAoB,EAAMC,GAf2B,E,6DAqB9E,SAAehoH,M,yBAMf,SAAY9nB,GACR,GAAIjF,KAAK28I,kBAAkB13I,GAAU,CACjC,IAAM23I,EAAe33I,EAAO,KAASujC,cACjCo0G,GACAtJ,EAAesJ,EAAc58I,MAEjCgyI,EAAahyI,KAAK40I,KAAM50I,MACpBA,KAAKwuI,QAAQxhH,UAAYhtB,KAAKyxI,cAAcrxB,kBAC5CpgH,KAAKyxI,cAAcrxB,kBAAiB,GAExCpgH,KAAK40I,KAAKX,uBAAuB,CAAEzvB,WAAW,IAE9CiwB,GAAkBxvI,EAASjF,KAAK00I,aAIhC10I,KAAK40I,KAAKN,SAASt0I,KAAKi6F,OACxBj6F,KAAK00I,UAAY10I,KAAKi6F,S,yBAI9B,WACQj6F,KAAK40I,MACLtB,EAAetzI,KAAK40I,KAAM50I,Q,gBAQlC,WACI,MAAO,K,mBAMX,WACI,OAAOA,KAAK40I,O,+BAQhB,SAAkB1C,GACdlyI,KAAK00I,UAAYxC,EACjBlyI,KAAKw6E,OAAOt4D,KAAKgwH,K,+BAErB,SAAkBjtI,GACd,OAAOA,EAAQyoC,eAAe,Y,CAhFH6jG,G,OAmFnCiL,EAAqBj8I,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKg8I,GAAsB,KAAyBpO,EAAe,IAAK,KAAyBC,EAAqB,IAAK,KAAyBZ,EAAmB,IAAK,KAAyB6O,GAAoC,KAC5TE,EAAqB/7I,UAAO,KAAyB,CAAEC,KAAM87I,EAAsB77I,UAAW,CAAC,CAAC,GAAI,cAAe,KAAMwB,OAAQ,CAAE4qB,WAAY,CAAC,WAAY,cAAe6nH,KAAM,CAAC,cAAe,QAAS36C,MAAO,CAAC,UAAW,UAAY93E,QAAS,CAAEq4D,OAAQ,iBAAmB9hE,SAAU,CAAC,UAAWpW,SAAU,CAAC,KAA0B,CAACi6I,KAAwB,KAAmC,QAQtYC,EAAqBK,yBAA0B,E,KA+DzCC,GAA0B,CAC5Bv6I,QAAS8uI,EACT7uI,YAAa,aAAW,kBAAMu6I,M,kBA0B5BA,E,YACF,WAAY/N,EAAY6E,GAAe,kCACnC,aACK7E,WAAaA,EAClB,EAAK6E,gBAAkBA,EAKvB,EAAK2G,WAAY,EAKjB,EAAKvE,oBAAsB,kBAAM,EAAK+G,mBAKtC,EAAKz2I,WAAa,GAKlB,EAAKquI,KAAO,KAKZ,EAAK8F,SAAW,IAAI,IACpB,EAAKY,eAAetM,GACpB,EAAKuM,oBAAoB1H,GA9BU,E,gEAiCvC,SAAY5uI,GACRjF,KAAKi9I,oBACDh4I,EAAQyoC,eAAe,UACvB1tC,KAAKk9I,oBACLl9I,KAAKg9I,kBACLh9I,KAAKm9I,uBACLn9I,KAAKo9I,SAAWp9I,KAAK40I,Q,yBAI7B,WACQ50I,KAAK40I,OACLrB,GAAkBvzI,KAAK40I,KAAM50I,MAAoC,GAO7DA,KAAK40I,KAAKqB,sBAAwBj2I,KAAKi2I,qBACvCj2I,KAAK40I,KAAKnB,4BAA4B,iB,yBAQlD,WACI,OAAOzzI,O,mBAMX,WACI,OAAOA,KAAK40I,O,gBAOhB,WACI,MAAO,K,wBASX,SAAWtpI,GACP,IAAMqsI,EAAO33I,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,MAI/B,OAHAa,EAAa2F,EAAMrsI,GACnBqsI,EAAK1D,uBAAuB,CAAEzvB,WAAW,IACzCxkH,KAAKuG,WAAW3C,KAAK0H,GACdqsI,I,wBAQX,SAAWrsI,GACP,OAAOtL,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,Q,2BAQ7B,SAAc7lI,GACVgoI,EAAehoI,EAAIkjI,SAAW,KAAMljI,GACpC8pI,GAAep1I,KAAKuG,WAAY+E,K,0BAOpC,SAAaA,GACTtL,KAAKq9I,oBAAoB/xI,K,6BAQ7B,SAAgBA,GACZtL,KAAKs9I,sBAAsBhyI,K,0BAQ/B,SAAaA,GACT,OAAOtL,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,Q,0BAO7B,SAAa7lI,GACTtL,KAAKq9I,oBAAoB/xI,K,6BAQ7B,SAAgBA,GACZtL,KAAKs9I,sBAAsBhyI,K,0BAQ/B,SAAaA,GACT,OAAOtL,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,Q,yBAQ7B,SAAY7lI,EAAK/J,GACAvB,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,MAC1BmD,SAAS/yI,K,sBASlB,SAASuwB,GAIL,OAHA9xB,KAAKw6I,WAAY,EACjB7F,GAAoB30I,KAAK40I,KAAM50I,KAAKuG,YACpCvG,KAAK06I,SAASx4H,KAAK4P,IACZ,I,qBAMX,WACI9xB,KAAK86I,c,uBAQT,WAA2B,IAAjBv5I,EAAiB,4DAATkD,EACdzE,KAAK40I,KAAK5X,MAAMz7H,GAChBvB,KAAKw6I,WAAY,I,6BAGrB,WAAe,WACXx6I,KAAKuG,WAAW8M,QAAQ,SAAA/H,GACpB,IAAMiyI,EAAUjyI,EAAIkjI,QACdgP,EAAU,EAAK5I,KAAK1iI,IAAI5G,EAAI6lI,MAC9BoM,IAAYC,IAGZlK,EAAeiK,GAAW,KAAMjyI,GAM5BkyI,aAAmB3E,KACnB7G,EAAawL,EAASlyI,GACtBA,EAAIkjI,QAAUgP,MAI1Bx9I,KAAK40I,KAAKgD,oBAAoB,CAAEpzB,WAAW,M,iCAE/C,SAAoBl5G,GAChB,IAAMqsI,EAAO33I,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,MAC/BqD,GAAmBmD,EAAMrsI,GAIzBqsI,EAAK1D,uBAAuB,CAAEzvB,WAAW,M,mCAE7C,SAAsBl5G,GAClB,GAAItL,KAAK40I,KAAM,CACX,IAAM+C,EAAO33I,KAAK40I,KAAK1iI,IAAI5G,EAAI6lI,MAC3BwG,GAvmHhB,SAA8BnJ,EAASljI,GACnC,OAAOioI,GAAkB/E,EAASljI,GAAmC,GAumHhCmyI,CAAqB9F,EAAMrsI,IAIhDqsI,EAAK1D,uBAAuB,CAAEzvB,WAAW,O,kCAKzD,WACIxkH,KAAK40I,KAAKnB,4BAA4BzzI,KAAKi2I,qBACvCj2I,KAAKo9I,UACLp9I,KAAKo9I,SAAS3J,4BAA4B,gB,+BAGlD,WACIxB,GAAgBjyI,KAAK40I,KAAM50I,MAAoC,GAC3DA,KAAKo9I,UACL7J,GAAkBvzI,KAAKo9I,SAAUp9I,MAAoC,K,+BAG7E,gB,CApQ6BqxI,G,OA0QjC0L,EAAmBx8I,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKu8I,GAAoB,KAAyB3O,EAAe,IAAK,KAAyBC,EAAqB,MACnM0O,EAAmBt8I,UAAO,KAAyB,CAAEC,KAAMq8I,EAAoBp8I,UAAW,CAAC,CAAC,GAAI,YAAa,KAAM6X,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,GACjL,KAAkB,SAAU,SAAsDmwB,GAAU,OAAOlwB,EAAIm5I,SAASjpH,IAAhH,CAA4H,QAAS,WAAyD,OAAOlwB,EAAIo5I,aACxM74I,OAAQ,CAAEyyI,KAAM,CAAC,YAAa,SAAWzyH,QAAS,CAAEu4H,SAAU,YAAchiI,SAAU,CAAC,UAAWpW,SAAU,CAAC,KAA0B,CAACw6I,KAA2B,KAAmC,Q,KAqRzMY,GAAqB,CACvBn7I,QAASgvI,EACT/uI,YAAa,aAAW,kBAAMm7I,M,kBAoC5BA,E,YACF,WAAY/2G,EAAQooG,EAAY6E,EAAiBkB,EAAgB0H,GAAqB,kCAClF,aACKA,sBAAwBA,EAC7B,EAAKmB,QAAS,EAEd,EAAKpjE,OAAS,IAAI,IAQlB,EAAKkiE,qBAAsB,EAC3B,EAAKlL,QAAU5qG,EACf,EAAK00G,eAAetM,GACpB,EAAKuM,oBAAoB1H,GACzB,EAAKpC,cAAgBqD,GAAoB,EAAMC,GAjBmC,E,6DAuBtF,SAAehoH,M,yBAMf,SAAY9nB,GACHjF,KAAK49I,QACN59I,KAAKy7I,gBACLhH,GAAkBxvI,EAASjF,KAAK00I,aAIhC10I,KAAK00I,UAAY10I,KAAKi6F,MACtBj6F,KAAK27I,cAAckC,YAAY79I,KAAMA,KAAKi6F,U,yBAIlD,WACQj6F,KAAK27I,eACL37I,KAAK27I,cAAcf,cAAc56I,Q,+BASzC,SAAkBkyI,GACdlyI,KAAK00I,UAAYxC,EACjBlyI,KAAKw6E,OAAOt4D,KAAKgwH,K,gBAOrB,WACI,OAAOH,EAAyB,MAAb/xI,KAAKmB,KAAenB,KAAKmB,KAAOnB,KAAKmB,KAAK8wB,WAAYjyB,KAAKwxI,W,yBAMlF,WACI,OAAOxxI,KAAKwxI,QAAUxxI,KAAKwxI,QAAQmK,cAAgB,O,8BAEvD,c,2BAaA,WACI37I,KAAK+7I,mBACL/7I,KAAKwuI,QAAUxuI,KAAK27I,cAAcG,WAAW97I,MACzCA,KAAKwuI,QAAQxhH,UAAYhtB,KAAKyxI,cAAcrxB,kBAC5CpgH,KAAKyxI,cAAcrxB,kBAAiB,GAExCpgH,KAAK49I,QAAS,M,CA3FQrM,G,OA8F9BoM,EAAgBp9I,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKm9I,GAAiB,KAAyBtM,EAAkB,IAAK,KAAyBjD,EAAe,IAAK,KAAyBC,EAAqB,IAAK,KAAyBZ,EAAmB,IAAK,KAAyB6O,GAAoC,KAC7VqB,EAAgBl9I,UAAO,KAAyB,CAAEC,KAAMi9I,EAAiBh9I,UAAW,CAAC,CAAC,GAAI,kBAAmB,KAAMwB,OAAQ,CAAE4qB,WAAY,CAAC,WAAY,cAAe5rB,KAAM,CAAC,kBAAmB,QAAS84F,MAAO,CAAC,UAAW,UAAY93E,QAAS,CAAEq4D,OAAQ,iBAAmBl4E,SAAU,CAAC,KAA0B,CAACo7I,KAAsB,KAAmC,QAQ5WC,EAAgBd,yBAA0B,E,KAsEpCiB,GAAwB,CAC1Bv7I,QAASkrI,EACTjrI,YAAa,aAAW,kBAAMu7I,KAC9Br0H,OAAO,GAEX,SAASs0H,GAAkBh4H,EAAIzkB,GAC3B,OAAU,MAANykB,EACO,GAAP,OAAUzkB,IACVA,GAA0B,iBAAVA,IAChBA,EAAQ,UACL,UAAGykB,EAAH,aAAUzkB,GAAQiI,MAAM,EAAG,K,sBA6DhCu0I,E,YACF,WAAYlvB,EAAW9hH,GAAW,kCAC9B,aACK8hH,UAAYA,EACjB,EAAK9hH,YAAcA,EAEnB,EAAKkxI,WAAa,IAAIxwI,IAEtB,EAAKywI,WAAa,EAKlB,EAAK1+B,SAAW,SAACpN,KAKjB,EAAKqN,UAAY,aACjB,EAAK0+B,aAAe3hI,OAAOq1H,GAlBG,E,8DAyBlC,SAAgB7iI,GAIZhP,KAAKm+I,aAAenvI,I,wBAOxB,SAAWzN,GACPvB,KAAKuB,MAAQA,EACb,IAAMykB,EAAKhmB,KAAKo+I,aAAa78I,GACnB,MAANykB,GACAhmB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,iBAAkB,GAEjF,IAAMy7I,EAAcL,GAAkBh4H,EAAIzkB,GAC1CvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,QAASy7I,K,8BAMxE,SAAiBrvI,GAAE,WACfhP,KAAKw/G,SAAW,SAAC6+B,GACb,EAAK98I,MAAQ,EAAK+8I,gBAAgBD,GAClCrvI,EAAG,EAAKzN,U,+BAOhB,SAAkByN,GACdhP,KAAKy/G,UAAYzwG,I,8BAMrB,SAAiB+d,GACb/sB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,WAAYmqB,K,6BAG3E,WACI,OAAQ/sB,KAAKk+I,cAAcjsH,a,0BAG/B,SAAa1wB,GACT,cAAiBgJ,MAAMjG,KAAKtE,KAAKi+I,WAAWxhI,QAA5C,eAAqD,CAAhD,IAAMuJ,EAAE,KACT,GAAIhmB,KAAKm+I,aAAan+I,KAAKi+I,WAAW/rI,IAAI8T,GAAKzkB,GAC3C,OAAOykB,EAEf,OAAO,O,6BAGX,SAAgBq4H,GACZ,IAAMr4H,EA/Id,SAAoBq4H,GAChB,OAAOA,EAAY97H,MAAM,KAAK,GA8Ifg8H,CAAWF,GACtB,OAAOr+I,KAAKi+I,WAAW7pI,IAAI4R,GAAMhmB,KAAKi+I,WAAW/rI,IAAI8T,GAAMq4H,M,CArF1B7Q,G,OAwFzCuQ,EAA2Bx9I,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAKu9I,GAA4B,KAAyB,KAAmB,KAAyB,OACrMA,EAA2Bt9I,UAAO,KAAyB,CAAEC,KAAMq9I,EAA4Bp9I,UAAW,CAAC,CAAC,SAAU,kBAAmB,GAAI,EAAG,WAAY,IAAK,CAAC,SAAU,cAAe,GAAI,EAAG,WAAY,IAAK,CAAC,SAAU,UAAW,GAAI,EAAG,WAAY,KAAM6X,aAAc,SAAiD7W,EAAIC,GAAgB,EAALD,GACxU,KAAkB,SAAU,SAA8DmwB,GAAU,OAAOlwB,EAAI49G,SAAS1tF,EAAOtF,OAAOjrB,QAAtI,CAAiJ,OAAQ,WAAgE,OAAOK,EAAI69G,eACnOt9G,OAAQ,CAAEq8I,YAAa,eAAiBl8I,SAAU,CAAC,KAA0B,CAACw7I,KAAyB,Q,uBA4B1GW,E,8BACF,WAAY70H,EAAUilG,EAAW6vB,GAAO,oBACpC1+I,KAAK4pB,SAAWA,EAChB5pB,KAAK6uH,UAAYA,EACjB7uH,KAAK0+I,QAAUA,EACX1+I,KAAK0+I,UACL1+I,KAAKgmB,GAAKhmB,KAAK0+I,QAAQC,oB,oBAO/B,SAAYp9I,GACY,MAAhBvB,KAAK0+I,UAET1+I,KAAK0+I,QAAQT,WAAW5pI,IAAIrU,KAAKgmB,GAAIzkB,GACrCvB,KAAK4+I,iBAAiBZ,GAAkBh+I,KAAKgmB,GAAIzkB,IACjDvB,KAAK0+I,QAAQ9+B,WAAW5/G,KAAK0+I,QAAQn9I,U,iBAOzC,SAAUA,GACNvB,KAAK4+I,iBAAiBr9I,GAClBvB,KAAK0+I,SACL1+I,KAAK0+I,QAAQ9+B,WAAW5/G,KAAK0+I,QAAQn9I,S,8BAG7C,SAAiBA,GACbvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK4pB,SAAShnB,cAAe,QAASrB,K,yBAGrE,WACQvB,KAAK0+I,UACL1+I,KAAK0+I,QAAQT,WAAW1rI,OAAOvS,KAAKgmB,IACpChmB,KAAK0+I,QAAQ9+B,WAAW5/G,KAAK0+I,QAAQn9I,Y,UAIjDk9I,EAAel+I,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKi+I,GAAgB,KAAyB,KAAoB,KAAyB,KAAmB,KAAyBV,GAA4B,KAC1OU,EAAeh+I,UAAO,KAAyB,CAAEC,KAAM+9I,EAAgB99I,UAAW,CAAC,CAAC,WAAYwB,OAAQ,CAAE08I,QAAS,UAAWt9I,MAAO,W,KAgC/Hu9I,GAAiC,CACnCv8I,QAASkrI,EACTjrI,YAAa,aAAW,kBAAMu8I,KAC9Br1H,OAAO,GAEX,SAASs1H,GAAoBh5H,EAAIzkB,GAC7B,OAAU,MAANykB,EACO,GAAP,OAAUzkB,IACO,iBAAVA,IACPA,EAAQ,IAAH,OAAOA,EAAP,MACLA,GAA0B,iBAAVA,IAChBA,EAAQ,UACL,UAAGykB,EAAH,aAAUzkB,GAAQiI,MAAM,EAAG,K,sBA2ChCu1I,E,YACF,WAAYlwB,EAAW9hH,GAAW,kCAC9B,aACK8hH,UAAYA,EACjB,EAAK9hH,YAAcA,EAEnB,EAAKkxI,WAAa,IAAIxwI,IAEtB,EAAKywI,WAAa,EAKlB,EAAK1+B,SAAW,SAACpN,KAKjB,EAAKqN,UAAY,aACjB,EAAK0+B,aAAe3hI,OAAOq1H,GAlBG,E,8DAyBlC,SAAgB7iI,GAIZhP,KAAKm+I,aAAenvI,I,wBAMxB,SAAWzN,GAAK,IAER09I,EAFQ,OAGZ,GAFAj/I,KAAKuB,MAAQA,EAETgJ,MAAMyL,QAAQzU,GAAQ,CAEtB,IAAM29I,EAAM39I,EAAMkI,IAAI,SAACxJ,GAAD,OAAO,EAAKm+I,aAAan+I,KAC/Cg/I,EAA4B,SAACE,EAAKhxG,GAC9BgxG,EAAIC,aAAaF,EAAIj2I,QAAQklC,EAAElc,aAAe,SAIlDgtH,EAA4B,SAACE,EAAKhxG,GAC9BgxG,EAAIC,cAAa,IAGzBp/I,KAAKi+I,WAAW5qI,QAAQ4rI,K,8BAO5B,SAAiBjwI,GAAE,WACfhP,KAAKw/G,SAAW,SAACpN,GACb,IAAMnjF,EAAW,GACjB,QAA0BxqB,IAAtB2tG,EAAEitC,gBAEF,IADA,IAAMr3H,EAAUoqF,EAAEitC,gBACTx3I,EAAI,EAAGA,EAAImgB,EAAQ7jB,OAAQ0D,IAAK,CACrC,IAAMs3I,EAAMn3H,EAAQ1W,KAAKzJ,GACnBymC,EAAM,EAAKgwG,gBAAgBa,EAAI59I,OACrC0tB,EAASrrB,KAAK0qC,QAMlB,IADA,IAAM,EAAU8jE,EAAEpqF,QACT,EAAI,EAAG,EAAI,EAAQ7jB,OAAQ,IAAK,CACrC,IAAM,EAAM,EAAQmN,KAAK,GACzB,GAAI,EAAI2d,SAAU,CACd,IAAM,EAAM,EAAKqvH,gBAAgB,EAAI/8I,OACrC0tB,EAASrrB,KAAK,IAI1B,EAAKrC,MAAQ0tB,EACbjgB,EAAGigB,M,+BAOX,SAAkBjgB,GACdhP,KAAKy/G,UAAYzwG,I,8BAMrB,SAAiB+d,GACb/sB,KAAK6uH,UAAU8B,YAAY3wH,KAAK+M,YAAYnK,cAAe,WAAYmqB,K,6BAG3E,SAAgBxrB,GACZ,IAAMykB,GAAMhmB,KAAKk+I,cAAcjsH,WAE/B,OADAjyB,KAAKi+I,WAAW5pI,IAAI2R,EAAIzkB,GACjBykB,I,0BAGX,SAAazkB,GACT,cAAiBgJ,MAAMjG,KAAKtE,KAAKi+I,WAAWxhI,QAA5C,eAAqD,CAAhD,IAAMuJ,EAAE,KACT,GAAIhmB,KAAKm+I,aAAan+I,KAAKi+I,WAAW/rI,IAAI8T,GAAIk6F,OAAQ3+G,GAClD,OAAOykB,EAEf,OAAO,O,6BAGX,SAAgBq4H,GACZ,IAAMr4H,EA3Jd,SAAsBq4H,GAClB,OAAOA,EAAY97H,MAAM,KAAK,GA0Jf+8H,CAAajB,GACxB,OAAOr+I,KAAKi+I,WAAW7pI,IAAI4R,GAAMhmB,KAAKi+I,WAAW/rI,IAAI8T,GAAIk6F,OAASm+B,M,CAnHzB7Q,G,OAsHjDuR,EAAmCx+I,UAAO,SAAoDC,GAAK,OAAO,IAAKA,GAAKu+I,GAAoC,KAAyB,KAAmB,KAAyB,OAC7NA,EAAmCt+I,UAAO,KAAyB,CAAEC,KAAMq+I,EAAoCp+I,UAAW,CAAC,CAAC,SAAU,WAAY,GAAI,kBAAmB,IAAK,CAAC,SAAU,WAAY,GAAI,cAAe,IAAK,CAAC,SAAU,WAAY,GAAI,UAAW,KAAM6X,aAAc,SAAyD7W,EAAIC,GAAgB,EAALD,GACvV,KAAkB,SAAU,SAAsEmwB,GAAU,OAAOlwB,EAAI49G,SAAS1tF,EAAOtF,SAAvI,CAAmJ,OAAQ,WAAwE,OAAO5qB,EAAI69G,eAC7Ot9G,OAAQ,CAAEq8I,YAAa,eAAiBl8I,SAAU,CAAC,KAA0B,CAACw8I,KAAkC,Q,uBA4BnHS,E,8BACF,WAAY31H,EAAUilG,EAAW6vB,GAAO,oBACpC1+I,KAAK4pB,SAAWA,EAChB5pB,KAAK6uH,UAAYA,EACjB7uH,KAAK0+I,QAAUA,EACX1+I,KAAK0+I,UACL1+I,KAAKgmB,GAAKhmB,KAAK0+I,QAAQC,gBAAgB3+I,Q,oBAQ/C,SAAYuB,GACY,MAAhBvB,KAAK0+I,UAET1+I,KAAKkgH,OAAS3+G,EACdvB,KAAK4+I,iBAAiBI,GAAoBh/I,KAAKgmB,GAAIzkB,IACnDvB,KAAK0+I,QAAQ9+B,WAAW5/G,KAAK0+I,QAAQn9I,U,iBAOzC,SAAUA,GACFvB,KAAK0+I,SACL1+I,KAAKkgH,OAAS3+G,EACdvB,KAAK4+I,iBAAiBI,GAAoBh/I,KAAKgmB,GAAIzkB,IACnDvB,KAAK0+I,QAAQ9+B,WAAW5/G,KAAK0+I,QAAQn9I,QAGrCvB,KAAK4+I,iBAAiBr9I,K,8BAI9B,SAAiBA,GACbvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK4pB,SAAShnB,cAAe,QAASrB,K,0BAGrE,SAAa0tB,GACTjvB,KAAK6uH,UAAU8B,YAAY3wH,KAAK4pB,SAAShnB,cAAe,WAAYqsB,K,yBAGxE,WACQjvB,KAAK0+I,UACL1+I,KAAK0+I,QAAQT,WAAW1rI,OAAOvS,KAAKgmB,IACpChmB,KAAK0+I,QAAQ9+B,WAAW5/G,KAAK0+I,QAAQn9I,Y,UAIjDg+I,EAAwBh/I,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAK++I,GAAyB,KAAyB,KAAoB,KAAyB,KAAmB,KAAyBR,GAAoC,KAC7QQ,EAAwB9+I,UAAO,KAAyB,CAAEC,KAAM6+I,EAAyB5+I,UAAW,CAAC,CAAC,WAAYwB,OAAQ,CAAE08I,QAAS,UAAWt9I,MAAO,W,KAoCjJi+I,GAAqB,CACvBj9I,QAAS6rI,EACT5rI,YAAa,aAAW,kBAAMi9I,KAC9B/1H,OAAO,GAMLg2H,GAA8B,CAChCn9I,QAAS6rI,EACT5rI,YAAa,aAAW,kBAAMm9I,KAC9Bj2H,OAAO,G,kBAqBL+1H,E,8BACF,iCACIz/I,KAAKsyG,WAAY,G,qBAMrB,WACI,OAAOtyG,KAAKsyG,W,IAEhB,SAAa/wG,GACTvB,KAAKsyG,UAAqB,MAAT/wG,IAA2B,IAAVA,GAAkC,UAAf,UAAGA,GACpDvB,KAAK2qB,WACL3qB,KAAK2qB,c,sBAOb,SAAS6jH,GACL,OAAOxuI,KAAKizG,SAAWw7B,EAAkBD,GAAW,O,uCAMxD,SAA0Bx/H,GACtBhP,KAAK2qB,UAAY3b,M,UAGzBywI,EAAkBl/I,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKi/I,IAClFA,EAAkBh/I,UAAO,KAAyB,CAAEC,KAAM++I,EAAmB9+I,UAAW,CAAC,CAAC,GAAI,WAAY,GAAI,kBAAmB,GAAI,EAAG,OAAQ,YAAa,CAAC,GAAI,WAAY,GAAI,cAAe,GAAI,EAAG,OAAQ,YAAa,CAAC,GAAI,WAAY,GAAI,UAAW,GAAI,EAAG,OAAQ,aAAc4X,SAAU,EAAGC,aAAc,SAAwC7W,EAAIC,GAAgB,EAALD,GACpW,KAAmB,WAAYC,EAAIqxG,SAAW,GAAK,OAClD9wG,OAAQ,CAAE8wG,SAAU,YAAc3wG,SAAU,CAAC,KAA0B,CAACk9I,Q,uBAmC3EG,E,qIAMF,SAASnR,GACL,OAAOxuI,KAAKizG,SAAWy7B,EAAsBF,GAAW,S,CAPxBiR,I,OAUxCE,EAA0Bp/I,UAAO,SAA2CC,GAAK,OAAOo/I,GAAuCp/I,GAAKm/I,IACpIA,EAA0Bl/I,UAAO,KAAyB,CAAEC,KAAMi/I,EAA2Bh/I,UAAW,CAAC,CAAC,QAAS,OAAQ,WAAY,WAAY,GAAI,kBAAmB,IAAK,CAAC,QAAS,OAAQ,WAAY,WAAY,GAAI,cAAe,IAAK,CAAC,QAAS,OAAQ,WAAY,WAAY,GAAI,UAAW,KAAM4X,SAAU,EAAGC,aAAc,SAAgD7W,EAAIC,GAAgB,EAALD,GAClY,KAAmB,WAAYC,EAAIqxG,SAAW,GAAK,OAClD3wG,SAAU,CAAC,KAA0B,CAACo9I,KAA+B,Q,KACxEE,GAAuD,KAA6BD,IAsKpFE,GAAuB,CACzBt9I,QAAS6rI,EACT5rI,YAAa,aAAW,kBAAMs9I,KAC9Bp2H,OAAO,G,kBAuBLo2H,E,8BACF,iCACI9/I,KAAK+/I,WAAa,G,0BAGtB,SAAY96I,GACJ,cAAeA,IACfjF,KAAKggJ,mBACDhgJ,KAAK2qB,WACL3qB,KAAK2qB,e,sBAOjB,SAAS6jH,GACL,OAAyB,MAAlBxuI,KAAKigJ,UAAoBjgJ,KAAK+/I,WAAWvR,GAAW,O,uCAM/D,SAA0Bx/H,GACtBhP,KAAK2qB,UAAY3b,I,8BAErB,WACIhP,KAAK+/I,WAAalR,EAA6C,iBAAnB7uI,KAAKigJ,UAAyBjgJ,KAAKigJ,UAAYzwG,SAASxvC,KAAKigJ,UAAW,S,UAG5HH,EAAmBv/I,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKs/I,IACpFA,EAAmBr/I,UAAO,KAAyB,CAAEC,KAAMo/I,EAAoBn/I,UAAW,CAAC,CAAC,GAAI,YAAa,GAAI,kBAAmB,IAAK,CAAC,GAAI,YAAa,GAAI,cAAe,IAAK,CAAC,GAAI,YAAa,GAAI,UAAW,KAAM4X,SAAU,EAAGC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,GACrS,KAAmB,YAAaC,EAAIq+I,UAAYr+I,EAAIq+I,UAAY,OAC/D99I,OAAQ,CAAE89I,UAAW,aAAe39I,SAAU,CAAC,KAA0B,CAACu9I,KAAwB,Q,uBA8HrGK,E,sDAENA,EAA2B3/I,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAK0/I,IACpGA,EAA2BhnI,UAAO,KAAwB,CAAExY,KAAMw/I,IAClEA,EAA2B/mI,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAACijI,O,uBA8BjE8D,E,sDAENA,EAAY5/I,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK2/I,IACtEA,EAAYjnI,UAAO,KAAwB,CAAExY,KAAMy/I,IACnDA,EAAYhnI,UAAO,KAAwB,CAAEC,QAAS,CAAC8mI,M,uBAsBjDE,E,+FASF,SAAkBtqH,GACd,MAAO,CACHipF,SAAUqhC,EACVjuH,UAAW,CACP,CAAE5vB,QAAS+5I,GAAoC1jI,SAAUkd,EAAKuqH,oC,UAK9ED,EAAoB7/I,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK4/I,IACtFA,EAAoBlnI,UAAO,KAAwB,CAAExY,KAAM0/I,IAC3DA,EAAoBjnI,UAAO,KAAwB,CAAEC,QAAS,CAAC8mI,M,KAiB/D,SAASI,GAAyBt4H,GAC9B,YAAmCvjB,IAA5BujB,EAAQ6rH,sBACYpvI,IAAvBujB,EAAQgnH,iBACavqI,IAArBujB,EAAQsqH,S,sBAcViO,E,oFACF,SAAMC,GAA8B,IAAdx4H,EAAc,uDAAJ,KACtBowH,EAAWp4I,KAAKygJ,gBAAgBD,GAClCxR,EAAa,KACb6E,EAAkB,KAClBvB,OAAW7tI,EAcf,OAbe,MAAXujB,IACIs4H,GAAyBt4H,IAEzBgnH,EAAmC,MAAtBhnH,EAAQgnH,WAAqBhnH,EAAQgnH,WAAa,KAC/D6E,EAA6C,MAA3B7rH,EAAQ6rH,gBAA0B7rH,EAAQ6rH,gBAAkB,KAC9EvB,EAA+B,MAApBtqH,EAAQsqH,SAAmBtqH,EAAQsqH,cAAW7tI,IAIzDuqI,EAAqC,MAAxBhnH,EAAO,UAAwBA,EAAO,UAAgB,KACnE6rH,EAA+C,MAA7B7rH,EAAO,eAA6BA,EAAO,eAAqB,OAGnF,IAAImwH,GAAUC,EAAU,CAAEvE,kBAAiBvB,WAAUtD,iB,qBAyBhE,SAAQ4J,EAAWlD,EAAiB5B,GAChC,OAAO,IAAI+E,GAAYD,EAAWlD,EAAiB5B,K,mBAgBvD,SAAM0M,EAAgB9K,EAAiB5B,GAAc,WAC3CsE,EAAWoI,EAAe/2I,IAAI,SAAAmmC,GAAC,OAAI,EAAK8wG,eAAe9wG,KAC7D,OAAO,IAAIyoG,GAAUD,EAAU1C,EAAiB5B,K,6BAGpD,SAAgB0M,GAAc,WACpBpI,EAAW,GAIjB,OAHA57H,OAAOC,KAAK+jI,GAAgBntI,QAAQ,SAAAmmI,GAChCpB,EAASoB,GAAe,EAAKkH,eAAeF,EAAehH,MAExDpB,I,4BAGX,SAAeuI,GACX,OAAIA,aAAyB9H,IAAe8H,aAAyBxI,IACjEwI,aAAyBtI,GAClBsI,EAEFp2I,MAAMyL,QAAQ2qI,GAIZ3gJ,KAAKwuI,QAHEmS,EAAc,GACVA,EAAcx8I,OAAS,EAAIw8I,EAAc,GAAK,KACzCA,EAAcx8I,OAAS,EAAIw8I,EAAc,GAAK,MAI9D3gJ,KAAKwuI,QAAQmS,O,UAIhCJ,EAAYhgJ,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK+/I,IACtEA,EAAY37I,WAAQ,aAAmB,CAAEE,QAAS,WAAiC,OAAO,IAAIy7I,GAAkB17I,MAAO07I,EAAa35H,WAAYw5H,K,8KC9+N1I,SAAUQ,EAAMC,GAClB,OAAO,SAA+Bt6H,GAClC,OAAOA,EAAO8V,KAAK,IAAI,EAAcwkH,K,IAGvC,E,8BACF,WAAYA,GAAgB,oBACxB7gJ,KAAK6gJ,iBAAmBA,G,mBAE5B,SAAKtkH,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAgBq4B,EAAYv8B,KAAK6gJ,uB,GAG/D,E,YACF,WAAYpkH,EAAaokH,GAAgB,M,MAAA,2B,EACrC,K,EAAA,E,EAAA,CAAMpkH,G,kBAAN,E,iGACKokH,iBAAmBA,EACxB,EAAKC,UAAW,EAHqB,E,0DAKzC,SAAMv/I,GAGF,GAFAvB,KAAKuB,MAAQA,EACbvB,KAAK8gJ,UAAW,GACX9gJ,KAAK+gJ,UAAW,CACjB,IAAIvjG,EACJ,IAEIA,GAAWqjG,EADkB7gJ,KAArB6gJ,kBACoBt/I,GAEhC,MAAOo7B,GACH,OAAO38B,KAAKy8B,YAAYzH,MAAM2H,GAElC,IAAMqkH,EAAoB,OAAAC,EAAA,GAAezjG,EAAU,IAAI,IAAsBx9C,QACxEghJ,GAAqBA,EAAkBx5H,OACxCxnB,KAAKkhJ,gBAGLlhJ,KAAK6C,IAAI7C,KAAK+gJ,UAAYC,M,2BAItC,WACI,IAAQz/I,EAA+BvB,KAA/BuB,MAAOu/I,EAAwB9gJ,KAAxB8gJ,SAAUC,EAAc/gJ,KAAd+gJ,UACrBA,IACA/gJ,KAAKwL,OAAOu1I,GACZ/gJ,KAAK+gJ,eAAYt8I,EACjBs8I,EAAUnrI,eAEVkrI,IACA9gJ,KAAKuB,WAAQkD,EACbzE,KAAK8gJ,UAAW,EAChB9gJ,KAAKy8B,YAAY54B,KAAKtC,M,wBAG9B,WACIvB,KAAKkhJ,kB,4BAET,WACIlhJ,KAAKkhJ,oB,CA5CiB,K,YCXxB,SAAUC,EAAU3jG,GAA2B,IAAjBsuF,EAAiB,uDAAL,IAC5C,OAAO8U,EAAM,kBAAM,OAAAQ,EAAA,GAAM5jG,EAAUsuF,O,oCCJvC,oCAUauV,EAVwB,WACjC,SAASC,IAIL,OAHAjtH,MAAMa,KAAKl1B,MACXA,KAAKg6B,QAAU,wBACfh6B,KAAKmB,KAAO,0BACLnB,KAGX,OADAshJ,EAA4B5uH,UAAYlW,OAAOlX,OAAO+uB,MAAM3B,WACrD4uH,EAR0B,I,wBCS5B,SAAUj/H,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gdAAyFL,MAC7F,KAEJM,YACI,mUAAyEN,MACrE,KAER0U,kBAAkB,EAClB1T,SAAU,mSAAwDhB,MAC9D,KAEJiB,cAAe,qKAAmCjB,MAAM,KACxDkB,YAAa,iFAAqBlB,MAAM,KACxCoB,eAAgB,CACZC,GAAI,8CACJC,IAAK,iDACLC,EAAG,aACHC,GAAI,cACJC,IAAK,2DACLC,KAAM,kEAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,4CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,oCACNC,EAAG,8CACHC,GAAI,oCACJ/B,EAAG,8CACHgC,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJhN,EAAG,wCACHiN,GAAI,8BACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAKzBE,cAAe,gGACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,uBAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbC,EACAD,EACa,6BAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,6BAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,2BACAA,EAAO,GACP,2BAEA,sBAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyB/gB,CAAQ,EAAQ,U,wBCGjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/gB,CAAQ,EAAQ,U,mVCS1D,SAAS4zB,EAASrwB,GACd,IAAQk0B,EAAgCl0B,EAAhCk0B,WAAYglH,EAAoBl5I,EAApBk5I,QAAS//B,EAAWn5G,EAAXm5G,OAC7BjlF,EAAW14B,KAAK09I,GAChBvhJ,KAAKoE,SAAS,CAAEm4B,aAAYglH,QAASA,EAAU,EAAG//B,UAAUA,G,gHCKhE,SAASggC,EAAa7lG,EAAMp1B,GACxB,IAAK,IAAI5J,KAAO4J,EACRA,EAAOmnB,eAAe/wB,KACtBg/B,EAAKh/B,GAAO4J,EAAO5J,IAG3B,OAAOg/B,EAQX,SAAS8lG,EAA6Bp2I,EAASgsI,GAC3C,IAAMqK,EAAarK,EAAS,GAAK,OACjCmK,EAAan2I,EAAQE,MAAO,CACxBo2I,YAAatK,EAAS,GAAK,OAC3BuK,eAAgBvK,EAAS,GAAK,OAC9BwK,wBAAyBxK,EAAS,GAAK,cACvCqK,WAAYA,EACZI,aAAcJ,EACdK,iBAAkBL,EAClBM,cAAeN,IASvB,SAASO,EAAiB52I,EAASgsI,GAC/B,IAAMv+H,EAASzN,EAAQE,MACvBuN,EAAO9O,SAAWqtI,EAAS,GAAK,QAChCv+H,EAAO/M,IAAM+M,EAAO4oB,QAAU21G,EAAS,GAAK,IAC5Cv+H,EAAO7M,KAAOorI,EAAS,GAAK,SAWhC,SAAS6K,EAAsB3gJ,GAE3B,IAAM4gJ,EAAa5gJ,EAAMqb,cAAc3T,QAAQ,OAAS,EAAI,EAAI,IAChE,OAAO4kB,WAAWtsB,GAAS4gJ,EAoB/B,SAASC,EAAsB7uE,EAAepyE,GAE1C,OADcoyE,EAAc8uE,iBAAiBlhJ,GAChCohB,MAAM,KAAK9Y,IAAI,SAAA64I,GAAI,OAAIA,EAAKxlI,SAW7C,SAASylI,EAAqBl3I,GAC1B,IAAMm3I,EAAan3I,EAAQZ,wBAK3B,MAAO,CACHsB,IAAKy2I,EAAWz2I,IAChBG,MAAOs2I,EAAWt2I,MAClBF,OAAQw2I,EAAWx2I,OACnBC,KAAMu2I,EAAWv2I,KACjBvC,MAAO84I,EAAW94I,MAClBc,OAAQg4I,EAAWh4I,QAS3B,SAASi4I,EAAmBD,EAAYjnH,EAAGjW,GAEvC,OAAOA,GAD8Bk9H,EAA7Bz2I,KACWuZ,GADkBk9H,EAAxBx2I,QACqBuvB,GADGinH,EAAhBv2I,MAC0BsvB,GADVinH,EAAVt2I,MAS/B,SAASw2I,EAAiBF,EAAYz2I,EAAKE,GACvCu2I,EAAWz2I,KAAOA,EAClBy2I,EAAWx2I,OAASw2I,EAAWz2I,IAAMy2I,EAAWh4I,OAChDg4I,EAAWv2I,MAAQA,EACnBu2I,EAAWt2I,MAAQs2I,EAAWv2I,KAAOu2I,EAAW94I,MASpD,SAASi5I,EAAwB50E,EAAM60E,EAAWC,EAAUC,GACxD,IACMC,EAD8Ch1E,EAAlBrkE,MACPk5I,EACrBI,EAF8Cj1E,EAAXvjE,OAEbo4I,EAC5B,OAAOE,EAH6C/0E,EAA5ChiE,IAGgBi3I,GAAcF,EAHc/0E,EAAhC/hE,OAGsCg3I,GACtDH,EAJgD90E,EAAxB9hE,KAIN82I,GAAcF,EAJgB90E,EAAvC7hE,MAI0C62I,E,IAWrD,E,8BACF,WAAY71I,EAAWI,GAAc,oBACjCtN,KAAKkN,UAAYA,EACjBlN,KAAKsN,eAAiBA,EAEtBtN,KAAKqM,UAAY,IAAIoB,K,oBAGzB,WACIzN,KAAKqM,UAAUqE,U,mBAGnB,SAAM1F,GAAQ,WACVhL,KAAK0Q,QACL1Q,KAAKqM,UAAUgI,IAAIrU,KAAKkN,UAAW,CAC/B+1I,eAAgBjjJ,KAAKsN,eAAe41I,8BAExCl4I,EAASqI,QAAQ,SAAAhI,GACb,EAAKgB,UAAUgI,IAAIhJ,EAAS,CACxB43I,eAAgB,CAAEl3I,IAAKV,EAAQ+c,UAAWnc,KAAMZ,EAAQqtE,YACxD8pE,WAAYD,EAAqBl3I,S,0BAK7C,SAAaid,GACT,IAAMkE,EAASlE,EAAMkE,OACf22H,EAAiBnjJ,KAAKqM,UAAU6F,IAAIsa,GAC1C,IAAK22H,EACD,OAAO,KAKX,IAEIC,EACAC,EAHEC,EAAqB92H,IAAWxsB,KAAKkN,UAAYsf,EAAOgoB,gBAAkBhoB,EAC1Ey2H,EAAiBE,EAAeF,eAGtC,GAAIz2H,IAAWxsB,KAAKkN,UAAW,CAC3B,IAAMq2I,EAAyBvjJ,KAAKsN,eAAe41I,4BACnDE,EAASG,EAAuBx3I,IAChCs3I,EAAUE,EAAuBt3I,UAGjCm3I,EAAS52H,EAAOpE,UAChBi7H,EAAU72H,EAAOksD,WAErB,IAAM8qE,EAAgBP,EAAel3I,IAAMq3I,EACrCK,EAAiBR,EAAeh3I,KAAOo3I,EAU7C,OAPArjJ,KAAKqM,UAAUgH,QAAQ,SAACrJ,EAAU05I,GAC1B15I,EAASw4I,YAAch2H,IAAWk3H,GAAQJ,EAAmB12H,SAAS82H,IACtEhB,EAAiB14I,EAASw4I,WAAYgB,EAAeC,KAG7DR,EAAel3I,IAAMq3I,EACrBH,EAAeh3I,KAAOo3I,EACf,CAAEt3I,IAAKy3I,EAAev3I,KAAMw3I,O,GAY3C,SAASE,EAAcD,GACnB,IAAME,EAAQF,EAAKG,WAAU,GACvBC,EAAoBF,EAAM73C,iBAAiB,QAC3Cj9F,EAAW40I,EAAK50I,SAAS8N,cAE/BgnI,EAAMn7G,gBAAgB,MACtB,IAAK,IAAI5gC,EAAI,EAAGA,EAAIi8I,EAAkB3/I,OAAQ0D,IAC1Ci8I,EAAkBj8I,GAAG4gC,gBAAgB,MAUzC,MARiB,WAAb35B,EACAi1I,EAAmBL,EAAME,GAEP,UAAb90I,GAAqC,WAAbA,GAAsC,aAAbA,GACtDk1I,EAAkBN,EAAME,GAE5BK,EAAa,SAAUP,EAAME,EAAOG,GACpCE,EAAa,0BAA2BP,EAAME,EAAOI,GAC9CJ,EAGX,SAASK,EAAa3vG,EAAUovG,EAAME,EAAO3wH,GACzC,IAAMixH,EAAqBR,EAAK33C,iBAAiBz3D,GACjD,GAAI4vG,EAAmB//I,OAEnB,IADA,IAAMggJ,EAAgBP,EAAM73C,iBAAiBz3D,GACpCzsC,EAAI,EAAGA,EAAIq8I,EAAmB//I,OAAQ0D,IAC3CorB,EAASixH,EAAmBr8I,GAAIs8I,EAAct8I,IAK1D,IAAIu8I,EAAgB,EAEpB,SAASJ,EAAkBz9H,EAAQq9H,GAEZ,SAAfA,EAAMljJ,OACNkjJ,EAAMriJ,MAAQglB,EAAOhlB,OAKN,UAAfqiJ,EAAMljJ,MAAoBkjJ,EAAMziJ,OAChCyiJ,EAAMziJ,KAAN,oBAA0ByiJ,EAAMziJ,KAAhC,YAAwCijJ,MAIhD,SAASL,EAAmBx9H,EAAQq9H,GAChC,IAAMpyI,EAAUoyI,EAAMS,WAAW,MACjC,GAAI7yI,EAGA,IACIA,EAAQ8yI,UAAU/9H,EAAQ,EAAG,GAEjC,MAAO5b,KAYf,IAAM45I,EAA8B,YAAgC,CAAEC,SAAS,IAEzEC,EAA6B,YAAgC,CAAED,SAAS,IAWxE,E,8BACF,WAAYn5I,EAASy2B,EAAS50B,EAAW5J,EAASgK,EAAgBo3I,GAAiB,+BAC/E1kJ,KAAK8hC,QAAUA,EACf9hC,KAAKkN,UAAYA,EACjBlN,KAAKsD,QAAUA,EACftD,KAAKsN,eAAiBA,EACtBtN,KAAK0kJ,kBAAoBA,EAOzB1kJ,KAAK2kJ,kBAAoB,CAAEppH,EAAG,EAAGjW,EAAG,GAEpCtlB,KAAK4kJ,iBAAmB,CAAErpH,EAAG,EAAGjW,EAAG,GAEnCtlB,KAAK6kJ,YAAc,IAAIphJ,EAAA,EAEvBzD,KAAK8kJ,yBAA2BC,EAAA,EAAa79H,MAE7ClnB,KAAKglJ,uBAAyBD,EAAA,EAAa79H,MAE3ClnB,KAAKilJ,oBAAsBF,EAAA,EAAa79H,MAExClnB,KAAKklJ,oBAAsBH,EAAA,EAAa79H,MAExClnB,KAAKmlJ,iBAAmB,KAExBnlJ,KAAKolJ,4BAA6B,EAElCplJ,KAAKqlJ,SAAW,GAEhBrlJ,KAAKslJ,iBAAmB,IAAI33I,IAE5B3N,KAAKulJ,WAAa,MAKlBvlJ,KAAKwlJ,eAAiB,EACtBxlJ,KAAKmgH,WAAY,EAEjBngH,KAAKylJ,cAAgB,IAAIhiJ,EAAA,EAEzBzD,KAAK0lJ,QAAU,IAAIjiJ,EAAA,EAEnBzD,KAAK2lJ,SAAW,IAAIliJ,EAAA,EAEpBzD,KAAK4lJ,MAAQ,IAAIniJ,EAAA,EAEjBzD,KAAK6lJ,QAAU,IAAIpiJ,EAAA,EAEnBzD,KAAK8lJ,OAAS,IAAIriJ,EAAA,EAElBzD,KAAK+lJ,QAAU,IAAItiJ,EAAA,EAKnBzD,KAAKgmJ,MAAQhmJ,KAAK6kJ,YAElB7kJ,KAAKimJ,aAAe,SAAC39H,GAGjB,GAFA,EAAKm9H,cAAc5hJ,OAEf,EAAKwhJ,SAASlhJ,OAAQ,CACtB,IAAM+hJ,EAAe,EAAKb,SAAShgJ,KAAK,SAAA8gJ,GACpC,IAAM35H,EAASlE,EAAMkE,OACrB,QAASA,IAAWA,IAAW25H,GAAUA,EAAOv5H,SAASJ,OAEzD05H,GAAiB,EAAKZ,iBAAiBlxI,IAAI8xI,IAAkB,EAAKl5H,UAClE,EAAKo5H,wBAAwBF,EAAc59H,QAGzC,EAAK0E,UACX,EAAKo5H,wBAAwB,EAAKC,aAAc/9H,IAIxDtoB,KAAKsmJ,aAAe,SAACh+H,GACjB,IAAMi+H,EAAkB,EAAKC,0BAA0Bl+H,GACvD,GAAK,EAAKm+H,oBAAV,CA6BI,EAAKtB,mBAGA,EAAKuB,eAAkB,EAAKA,aAAah9I,OAAU,EAAKg9I,aAAal8I,UACtE,EAAKk8I,cAAgB,EAAKC,UAAY,EAAKN,cAAc57I,0BAMjE6d,EAAM4E,iBACN,IAAM05H,EAA6B,EAAKC,+BAA+BN,GAIvE,GAHA,EAAKO,WAAY,EACjB,EAAKC,0BAA4BR,EACjC,EAAKS,6BAA6BJ,GAC9B,EAAKK,eACL,EAAKC,2BAA2BN,EAA4BL,OAE3D,CACD,IAAMY,EAAkB,EAAKvC,iBAO7B,GANAuC,EAAgB5rH,EACZqrH,EAA2BrrH,EAAI,EAAK6rH,sBAAsB7rH,EAAI,EAAKopH,kBAAkBppH,EACzF4rH,EAAgB7hI,EACZshI,EAA2BthI,EAAI,EAAK8hI,sBAAsB9hI,EAAI,EAAKq/H,kBAAkBr/H,EACzF,EAAK+hI,2BAA2BF,EAAgB5rH,EAAG4rH,EAAgB7hI,GAEzC,oBAAfgiI,YAA8B,EAAKjB,wBAAwBiB,WAAY,CAC9E,IAAMC,EAAmB,aAAH,OAAgBJ,EAAgB5rH,EAAhC,YAAqC4rH,EAAgB7hI,EAArD,KACtB,EAAK+gI,aAAax3I,aAAa,YAAa04I,IAMhD,EAAK1C,YAAY2C,UAAUrjJ,QAC3B,EAAKb,QAAQgpC,IAAI,WACb,EAAKu4G,YAAYhhJ,KAAK,CAClB0iB,OAAQ,EACRggI,gBAAiBK,EACjBt+H,QACAm/H,SAAU,EAAKC,iBAAiBd,GAChCthF,MAAO,EAAKqiF,gCA9DpB,GAPkBppI,KAAKqiC,IAAI2lG,EAAgBhrH,EAAI,EAAK6rH,sBAAsB7rH,GACxDhd,KAAKqiC,IAAI2lG,EAAgBjhI,EAAI,EAAK8hI,sBAAsB9hI,IACzB,EAAKwc,QAAQ8lH,mBAKzC,CACjB,IAAMC,EAAiBntG,KAAKqR,OAAS,EAAK+7F,eAAiB,EAAKC,mBAAmBz/H,GAC7EjQ,EAAY,EAAK4uI,eACvB,IAAKY,EAED,YADA,EAAKG,iBAAiB1/H,GAMrBjQ,IAAeA,EAAUw0F,cAAiBx0F,EAAU4vI,iBAGrD3/H,EAAM4E,iBACN,EAAKu5H,qBAAsB,EAC3B,EAAKnjJ,QAAQgpC,IAAI,kBAAM,EAAK47G,mBAAmB5/H,QAqD/DtoB,KAAKmoJ,WAAa,SAAC7/H,GACf,EAAK0/H,iBAAiB1/H,IAE1BtoB,KAAKooJ,gBAAgB/8I,GAASg9I,WAAWvmH,EAAQwmH,eAAiB,MAClEtoJ,KAAKuoJ,iBAAmB,IAAI,EAAsBr7I,EAAWI,GAC7Do3I,EAAkB8D,iBAAiBxoJ,O,qBAGvC,WACI,OAAOA,KAAKmgH,cAAgBngH,KAAKinJ,iBAAkBjnJ,KAAKinJ,eAAej6H,W,IAE3E,SAAazrB,GACT,IAAM2wI,EAAW,YAAsB3wI,GACnC2wI,IAAalyI,KAAKmgH,YAClBngH,KAAKmgH,UAAY+xB,EACjBlyI,KAAKyoJ,gCACLzoJ,KAAKqlJ,SAAShyI,QAAQ,SAAA8yI,GAAM,OAAI1E,EAA6B0E,EAAQjU,Q,mCAO7E,WACI,OAAOlyI,KAAK0oJ,e,4BAGhB,WACI,OAAO1oJ,KAAKqmJ,e,+BAMhB,WACI,OAAOrmJ,KAAK6sG,aAAe7sG,KAAK2oJ,wBAA0B3oJ,KAAK4oJ,mB,yBAGnE,SAAYC,GAAO,WACf7oJ,KAAKqlJ,SAAWwD,EAAQp/I,IAAI,SAAA08I,GAAM,OAAI,YAAcA,KACpDnmJ,KAAKqlJ,SAAShyI,QAAQ,SAAA8yI,GAAM,OAAI1E,EAA6B0E,EAAQ,EAAKn5H,YAC1EhtB,KAAKyoJ,gCAKL,IAAMK,EAAkB,IAAIn7I,IAO5B,OANA3N,KAAKslJ,iBAAiBjyI,QAAQ,SAAA8yI,GACtB,EAAKd,SAASp8I,QAAQk9I,IAAW,GACjC2C,EAAgBjmJ,IAAIsjJ,KAG5BnmJ,KAAKslJ,iBAAmBwD,EACjB9oJ,O,iCAMX,SAAoBM,GAEhB,OADAN,KAAK+oJ,iBAAmBzoJ,EACjBN,O,qCAMX,SAAwBM,GAEpB,OADAN,KAAKgpJ,qBAAuB1oJ,EACrBN,O,6BAOX,SAAgBipJ,GAAW,WACjB59I,EAAU,YAAc49I,GAe9B,OAdI59I,IAAYrL,KAAKqmJ,eACbrmJ,KAAKqmJ,cACLrmJ,KAAKkpJ,4BAA4BlpJ,KAAKqmJ,cAE1CrmJ,KAAKsD,QAAQ+nB,kBAAkB,WAC3BhgB,EAAQigB,iBAAiB,YAAa,EAAK26H,aAAcxB,GACzDp5I,EAAQigB,iBAAiB,aAAc,EAAK26H,aAAc1B,KAE9DvkJ,KAAKmpJ,uBAAoB1kJ,EACzBzE,KAAKqmJ,aAAeh7I,GAEE,oBAAfi8I,YAA8BtnJ,KAAKqmJ,wBAAwBiB,aAClEtnJ,KAAKopJ,iBAAmBppJ,KAAKqmJ,aAAagD,iBAEvCrpJ,O,iCAKX,SAAoBspJ,GAAe,WAQ/B,OAPAtpJ,KAAKmlJ,iBAAmBmE,EAAkB,YAAcA,GAAmB,KAC3EtpJ,KAAKklJ,oBAAoBtvI,cACrB0zI,IACAtpJ,KAAKklJ,oBAAsBllJ,KAAKsN,eAC3ByC,OAAO,IACP7L,UAAU,kBAAM,EAAKqlJ,oCAEvBvpJ,O,wBAGX,SAAW4mC,GAEP,OADA5mC,KAAKwpJ,eAAiB5iH,EACf5mC,O,qBAGX,WACIA,KAAKkpJ,4BAA4BlpJ,KAAKqmJ,cAGlCrmJ,KAAK6sG,cAGL48C,EAAWzpJ,KAAKqmJ,cAEpBoD,EAAWzpJ,KAAK2yH,SAChB3yH,KAAK0pJ,kBACL1pJ,KAAK2pJ,sBACL3pJ,KAAK0kJ,kBAAkBkF,eAAe5pJ,MACtCA,KAAK6pJ,uBACL7pJ,KAAKylJ,cAAc3hJ,WACnB9D,KAAK0lJ,QAAQ5hJ,WACb9D,KAAK2lJ,SAAS7hJ,WACd9D,KAAK4lJ,MAAM9hJ,WACX9D,KAAK6lJ,QAAQ/hJ,WACb9D,KAAK8lJ,OAAOhiJ,WACZ9D,KAAK+lJ,QAAQjiJ,WACb9D,KAAK6kJ,YAAY/gJ,WACjB9D,KAAKqlJ,SAAW,GAChBrlJ,KAAKslJ,iBAAiB50I,QACtB1Q,KAAKinJ,oBAAiBxiJ,EACtBzE,KAAKklJ,oBAAoBtvI,cACzB5V,KAAKuoJ,iBAAiB73I,QACtB1Q,KAAKmlJ,iBAAmBnlJ,KAAKqmJ,aAAermJ,KAAKopJ,iBAAmBppJ,KAAKgpJ,qBACrEhpJ,KAAK+oJ,iBAAmB/oJ,KAAK2yH,QAAU3yH,KAAKwpJ,eAAiB,O,wBAGrE,WACI,OAAOxpJ,KAAKymJ,qBAAuBzmJ,KAAK0kJ,kBAAkB73C,WAAW7sG,Q,mBAGzE,WACIA,KAAKqmJ,aAAa96I,MAAMo2B,UAAY3hC,KAAKmpJ,mBAAqB,GAC9DnpJ,KAAK4kJ,iBAAmB,CAAErpH,EAAG,EAAGjW,EAAG,GACnCtlB,KAAK2kJ,kBAAoB,CAAEppH,EAAG,EAAGjW,EAAG,K,2BAMxC,SAAc6gI,IACLnmJ,KAAKslJ,iBAAiBlxI,IAAI+xI,IAAWnmJ,KAAKqlJ,SAASp8I,QAAQk9I,IAAW,IACvEnmJ,KAAKslJ,iBAAiBziJ,IAAIsjJ,GAC1B1E,EAA6B0E,GAAQ,M,0BAO7C,SAAaA,GACLnmJ,KAAKslJ,iBAAiBlxI,IAAI+xI,KAC1BnmJ,KAAKslJ,iBAAiB/yI,OAAO4zI,GAC7B1E,EAA6B0E,EAAQnmJ,KAAKgtB,a,2BAIlD,SAAchmB,GAEV,OADAhH,KAAKulJ,WAAav+I,EACXhH,O,gCAGX,SAAmBqY,GACfrY,KAAKinJ,eAAiB5uI,I,iCAK1B,WACI,IAAMrO,EAAWhK,KAAK6sG,aAAe7sG,KAAK4kJ,iBAAmB5kJ,KAAK2kJ,kBAClE,MAAO,CAAEppH,EAAGvxB,EAASuxB,EAAGjW,EAAGtb,EAASsb,K,iCAMxC,SAAoB/jB,GAOhB,OANAvB,KAAK4kJ,iBAAmB,CAAErpH,EAAG,EAAGjW,EAAG,GACnCtlB,KAAK2kJ,kBAAkBppH,EAAIh6B,EAAMg6B,EACjCv7B,KAAK2kJ,kBAAkBr/H,EAAI/jB,EAAM+jB,EAC5BtlB,KAAKinJ,gBACNjnJ,KAAKqnJ,2BAA2B9lJ,EAAMg6B,EAAGh6B,EAAM+jB,GAE5CtlB,O,0CAGX,WACI,IAAMgK,EAAWhK,KAAK+mJ,0BAClB/8I,GAAYhK,KAAKinJ,gBACjBjnJ,KAAKknJ,2BAA2BlnJ,KAAK6mJ,+BAA+B78I,GAAWA,K,kCAIvF,WACIhK,KAAK8kJ,yBAAyBlvI,cAC9B5V,KAAKglJ,uBAAuBpvI,cAC5B5V,KAAKilJ,oBAAoBrvI,gB,6BAG7B,WACQ5V,KAAK2mJ,UACL8C,EAAWzpJ,KAAK2mJ,UAEhB3mJ,KAAK8pJ,aACL9pJ,KAAK8pJ,YAAY5oI,UAErBlhB,KAAK2mJ,SAAW3mJ,KAAK8pJ,YAAc,O,iCAGvC,WACQ9pJ,KAAK0oJ,cACLe,EAAWzpJ,KAAK0oJ,cAEhB1oJ,KAAK+pJ,iBACL/pJ,KAAK+pJ,gBAAgB7oI,UAEzBlhB,KAAK0oJ,aAAe1oJ,KAAK+pJ,gBAAkB,O,8BAM/C,SAAiBzhI,GAAK,WAKbtoB,KAAK0kJ,kBAAkB73C,WAAW7sG,QAGvCA,KAAK6pJ,uBACL7pJ,KAAK0kJ,kBAAkBsF,aAAahqJ,MACpCA,KAAKyoJ,gCACDzoJ,KAAKqlJ,WACLrlJ,KAAKqmJ,aAAa96I,MAAMs2I,wBAA0B7hJ,KAAKiqJ,0BAEtDjqJ,KAAKymJ,sBAGVzmJ,KAAK2lJ,SAAS9hJ,KAAK,CAAE0iB,OAAQvmB,OACzBA,KAAKinJ,gBAELjnJ,KAAKinJ,eAAeiD,iBACpBlqJ,KAAKmqJ,+BAA+B9rI,KAAK,WACrC,EAAK+rI,sBAAsB9hI,GAC3B,EAAK+hI,2BACL,EAAK3F,kBAAkBsF,aAAa,OAOxChqJ,KAAK2kJ,kBAAkBppH,EAAIv7B,KAAK4kJ,iBAAiBrpH,EACjDv7B,KAAK2kJ,kBAAkBr/H,EAAItlB,KAAK4kJ,iBAAiBt/H,EACjDtlB,KAAKsD,QAAQgpC,IAAI,WACb,EAAKs5G,MAAM/hJ,KAAK,CACZ0iB,OAAQ,EACRkhI,SAAU,EAAKC,iBAAiB,EAAKlB,0BAA0Bl+H,QAGvEtoB,KAAKqqJ,2BACLrqJ,KAAK0kJ,kBAAkBsF,aAAahqJ,W,gCAI5C,SAAmBsoB,GACXgiI,EAAahiI,KACbtoB,KAAKuqJ,oBAAsB7vG,KAAKqR,OAEpC/rD,KAAKyoJ,gCACL,IAAM+B,EAAgBxqJ,KAAKinJ,eAC3B,GAAIuD,EAAe,CACf,IAAMn/I,EAAUrL,KAAKqmJ,aACfz/G,EAASv7B,EAAQqV,WACjB+pI,EAAUzqJ,KAAK2mJ,SAAW3mJ,KAAK0qJ,wBAC/BC,EAAc3qJ,KAAK0oJ,aAAe1oJ,KAAK4qJ,4BACvCC,EAAS7qJ,KAAK2yH,QAAU3yH,KAAK2yH,SAAW3yH,KAAKkN,UAAUuT,cAAc,IAErEuiB,EAAahjC,KAAK8qJ,iBAExBlkH,EAAOjmB,aAAakqI,EAAQx/I,GAI5B42I,EAAiB52I,GAAS,GAC1BrL,KAAKkN,UAAU41B,KAAKhrB,YAAY8uB,EAAOhmB,aAAa+pI,EAAat/I,IAqhB7E,SAAkC0/I,EAAa/nH,GAI3C,OAAOA,GACH+nH,EAAYC,mBACZD,EAAYE,yBACZF,EAAYG,sBACZH,EAAYI,qBACZJ,EAAYjoH,KA7hBRsoH,CAAyBprJ,KAAKkN,UAAW81B,GAAYlrB,YAAY2yI,GACjEzqJ,KAAK0lJ,QAAQ7hJ,KAAK,CAAE0iB,OAAQvmB,OAC5BwqJ,EAAcrhJ,QACdnJ,KAAKqrJ,kBAAoBb,EACzBxqJ,KAAKsrJ,cAAgBd,EAAce,aAAavrJ,WAGhDA,KAAK0lJ,QAAQ7hJ,KAAK,CAAE0iB,OAAQvmB,OAC5BA,KAAKqrJ,kBAAoBrrJ,KAAKsrJ,mBAAgB7mJ,EAIlDzE,KAAKuoJ,iBAAiB/zI,MAAMg2I,EAAgBA,EAAcgB,uBAAyB,M,qCAQvF,SAAwBC,EAAkBnjI,GAAK,WAGvCtoB,KAAKwpJ,gBACLlhI,EAAMsH,kBAEV,IAAMi9E,EAAa7sG,KAAK6sG,aAClB6+C,EAAkBpB,EAAahiI,GAC/BqjI,GAA0BD,GAAoC,IAAjBpjI,EAAMi3D,OACnD0pE,EAAcjpJ,KAAKqmJ,aACnBuF,GAAoBF,GAAmB1rJ,KAAKuqJ,qBAC9CvqJ,KAAKuqJ,oBAhfe,IAgfiC7vG,KAAKqR,MAW9D,GAJIzjC,EAAMkE,QAAUlE,EAAMkE,OAAOq/H,WAA4B,cAAfvjI,EAAM5nB,MAChD4nB,EAAM4E,mBAGN2/E,GAAc8+C,GAA0BC,GAA5C,CAMI5rJ,KAAKqlJ,SAASlhJ,SACdnE,KAAKiqJ,yBAA2BhB,EAAY19I,MAAMs2I,yBAA2B,GAC7EoH,EAAY19I,MAAMs2I,wBAA0B,eAEhD7hJ,KAAKymJ,oBAAsBzmJ,KAAK8mJ,WAAY,EAG5C9mJ,KAAK6pJ,uBACL7pJ,KAAK8kJ,yBAA2B9kJ,KAAK0kJ,kBAAkBoH,YAAY5nJ,UAAUlE,KAAKsmJ,cAClFtmJ,KAAKglJ,uBAAyBhlJ,KAAK0kJ,kBAAkBqH,UAAU7nJ,UAAUlE,KAAKmoJ,YAC9EnoJ,KAAKilJ,oBAAsBjlJ,KAAK0kJ,kBAAkB1rE,OAAO90E,UAAU,SAAA8nJ,GAC/D,EAAKC,gBAAgBD,KAErBhsJ,KAAKmlJ,mBACLnlJ,KAAKksJ,cAAgB3J,EAAqBviJ,KAAKmlJ,mBAKnD,IAAMgH,EAAkBnsJ,KAAK+oJ,iBAC7B/oJ,KAAKosJ,yBAA2BD,GAAmBA,EAAgB7rJ,WAC9D6rJ,EAAgBE,UAAY,CAAE9wH,EAAG,EAAGjW,EAAG,GACxCtlB,KAAKssJ,6BAA6Bb,EAAkBnjI,GACxD,IAAMi+H,EAAkBvmJ,KAAKonJ,sBAAwBpnJ,KAAK+mJ,0BACtD/mJ,KAAKwmJ,0BAA0Bl+H,GACnCtoB,KAAK2nJ,uBAAyB,CAAEpsH,EAAG,EAAGjW,EAAG,GACzCtlB,KAAKusJ,sCAAwC,CAAEhxH,EAAGgrH,EAAgBhrH,EAAGjW,EAAGihI,EAAgBjhI,GACxFtlB,KAAK8nJ,eAAiBptG,KAAKqR,MAC3B/rD,KAAK0kJ,kBAAkB8H,cAAcxsJ,KAAMsoB,M,mCAG/C,SAAsBA,GAAK,WAKvB25H,EAAiBjiJ,KAAKqmJ,cAAc,GACpCrmJ,KAAK2yH,QAAQjyG,WAAWE,aAAa5gB,KAAKqmJ,aAAcrmJ,KAAK2yH,SAC7D3yH,KAAK0pJ,kBACL1pJ,KAAK2pJ,sBACL3pJ,KAAKksJ,cAAgBlsJ,KAAK0mJ,kBAAejiJ,EAEzCzE,KAAKsD,QAAQgpC,IAAI,WACb,IAAMj0B,EAAY,EAAK4uI,eACjB71I,EAAeiH,EAAUkzI,aAAa,GACtChF,EAAkB,EAAKC,0BAA0Bl+H,GACjDm/H,EAAW,EAAKC,iBAAiB,EAAKlB,0BAA0Bl+H,IAChEmkI,EAAyBp0I,EAAUq0I,iBAAiBnG,EAAgBhrH,EAAGgrH,EAAgBjhI,GAC7F,EAAKsgI,MAAM/hJ,KAAK,CAAE0iB,OAAQ,EAAMkhI,aAChC,EAAK1B,QAAQliJ,KAAK,CACdyN,KAAM,EACNF,eACAS,cAAe,EAAKy5I,cACpBjzI,UAAWA,EACXs0I,kBAAmB,EAAKtB,kBACxBoB,yBACAhF,aAEJpvI,EAAUu0I,KAAK,EAAMx7I,EAAc,EAAKk6I,cAAe,EAAKD,kBAAmBoB,EAAwBhF,GACvG,EAAKR,eAAiB,EAAKoE,sB,wCAOnC,SAA2B,EAAD,GAA+B,WAA5B9vH,EAA4B,EAA5BA,EAAGjW,EAAyB,EAAzBA,EAAUunI,EAAe,EAAlBtxH,EAAYuxH,EAAM,EAATxnI,EAExCynI,EAAe/sJ,KAAKqrJ,kBAAkB2B,iCAAiChtJ,KAAMu7B,EAAGjW,IAK/EynI,GAAgB/sJ,KAAKinJ,iBAAmBjnJ,KAAKqrJ,mBAC9CrrJ,KAAKqrJ,kBAAkBqB,iBAAiBnxH,EAAGjW,KAC3CynI,EAAe/sJ,KAAKqrJ,mBAEpB0B,GAAgBA,IAAiB/sJ,KAAKinJ,gBACtCjnJ,KAAKsD,QAAQgpC,IAAI,WAEb,EAAKw5G,OAAOjiJ,KAAK,CAAEyN,KAAM,EAAM+G,UAAW,EAAK4uI,iBAC/C,EAAKA,eAAegG,KAAK,GAEzB,EAAKhG,eAAiB8F,EACtB,EAAK9F,eAAe5tC,MAAM,EAAM99E,EAAGjW,EAAGynI,IAAiB,EAAK1B,mBAGxD0B,EAAaG,gBAAkB,EAAK5B,mBAAgB7mJ,GACxD,EAAKohJ,QAAQhiJ,KAAK,CACdyN,KAAM,EACN+G,UAAW00I,EACX37I,aAAc27I,EAAaxB,aAAa,OAIpDvrJ,KAAKinJ,eAAekG,2BAA2BN,EAAMC,GACrD9sJ,KAAKinJ,eAAemG,UAAUptJ,KAAMu7B,EAAGjW,EAAGtlB,KAAK2nJ,wBAC/C3nJ,KAAK2mJ,SAASp7I,MAAMo2B,UAChB0rH,EAAa9xH,EAAIv7B,KAAKosJ,yBAAyB7wH,EAAGjW,EAAItlB,KAAKosJ,yBAAyB9mI,K,mCAM5F,WACI,IAGImlI,EAHE6C,EAAgBttJ,KAAK+oJ,iBACrBwE,EAAevtJ,KAAKutJ,aACpBpB,EAAkBmB,EAAgBA,EAAchtJ,SAAW,KAEjE,GAAI6rJ,GAAmBmB,EAAe,CAGlC,IAAME,EAAWF,EAAcjB,UAAYrsJ,KAAKqmJ,aAAa57I,wBAA0B,KACjFgM,EAAU62I,EAAc7gJ,cAAcqK,mBAAmBq1I,EAAiBmB,EAAc97I,SAC9FiF,EAAQ+K,gBACRipI,EAAUt1G,EAAY1+B,EAASzW,KAAKkN,WACpClN,KAAK8pJ,YAAcrzI,EACf62I,EAAcjB,UACdoB,EAAiBhD,EAAS+C,GAG1B/C,EAAQl/I,MAAMo2B,UACV0rH,EAAartJ,KAAKonJ,sBAAsB7rH,EAAGv7B,KAAKonJ,sBAAsB9hI,OAG7E,CACD,IAAMja,EAAUrL,KAAKqmJ,aAErBoH,EADAhD,EAAU9G,EAAct4I,GACEA,EAAQZ,yBAwBtC,OAtBA+2I,EAAaiJ,EAAQl/I,MAAO,CAGxBmiJ,cAAe,OAEfC,OAAQ,IACR3jJ,SAAU,QACV+B,IAAK,IACLE,KAAM,IACNR,OAAQ,GAAF,OAAKzL,KAAK8hC,QAAQr2B,QAAU,OAEtCg2I,EAA6BgJ,GAAS,GACtCA,EAAQ9nJ,UAAUE,IAAI,oBACtB4nJ,EAAQ57I,aAAa,MAAO7O,KAAKulJ,YAC7BgI,IACIhjJ,MAAMyL,QAAQu3I,GACdA,EAAal6I,QAAQ,SAAAwU,GAAS,OAAI4iI,EAAQ9nJ,UAAUE,IAAIglB,KAGxD4iI,EAAQ9nJ,UAAUE,IAAI0qJ,IAGvB9C,I,0CAMX,WAA4B,WAExB,IAAKzqJ,KAAK8mJ,UACN,OAAOviJ,QAAQC,UAEnB,IAAMopJ,EAAkB5tJ,KAAK0oJ,aAAaj+I,wBAE1CzK,KAAK2mJ,SAAShkJ,UAAUE,IAAI,sBAE5B7C,KAAK2mJ,SAASp7I,MAAMo2B,UAAY0rH,EAAaO,EAAgB3hJ,KAAM2hJ,EAAgB7hJ,KAKnF,IAAMyxC,EAv5Bd,SAA4CnyC,GACxC,IAAMkoE,EAAgBC,iBAAiBnoE,GACjCwiJ,EAAyBzL,EAAsB7uE,EAAe,uBAC9Du6E,EAAWD,EAAuBxoJ,KAAK,SAAA+oC,GAAI,MAAa,cAATA,GAAiC,QAATA,IAE7E,IAAK0/G,EACD,OAAO,EAIX,IAAMC,EAAgBF,EAAuB5kJ,QAAQ6kJ,GAC/CE,EAAe5L,EAAsB7uE,EAAe,uBACpD06E,EAAY7L,EAAsB7uE,EAAe,oBACvD,OAAO2uE,EAAsB8L,EAAaD,IACtC7L,EAAsB+L,EAAUF,IAy4BfG,CAAmCluJ,KAAK2mJ,UACzD,OAAiB,IAAbnpG,EACOj5C,QAAQC,UAEZxE,KAAKsD,QAAQ+nB,kBAAkB,WAClC,OAAO,IAAI9mB,QAAQ,SAAAC,GACf,IAAM,EAAW,SAAC8jB,KACTA,GAAUA,EAAMkE,SAAW,EAAKm6H,UAAmC,cAAvBr+H,EAAM6lI,gBACnD,EAAKxH,SAASh7H,oBAAoB,gBAAiB,GACnDnnB,IACA0/B,aAAakqH,KAMfA,EAAUxpH,WAAW,EAAoB,IAAX4Y,GACpC,EAAKmpG,SAASr7H,iBAAiB,gBAAiB,S,uCAK5D,WACI,IAEIq/H,EAFE0D,EAAoBruJ,KAAKgpJ,qBACzBsF,EAAsBD,EAAoBA,EAAkB/tJ,SAAW,KAW7E,OATIguJ,GACAtuJ,KAAK+pJ,gBAAkBsE,EAAkB5hJ,cAAcqK,mBAAmBw3I,EAAqBD,EAAkB78I,SACjHxR,KAAK+pJ,gBAAgBvoI,gBACrBmpI,EAAcx1G,EAAYn1C,KAAK+pJ,gBAAiB/pJ,KAAKkN,YAGrDy9I,EAAchH,EAAc3jJ,KAAKqmJ,cAErCsE,EAAYhoJ,UAAUE,IAAI,wBACnB8nJ,I,0CAOX,SAA6Bc,EAAkBnjI,GAC3C,IAAMimI,EAAcvuJ,KAAKqmJ,aAAa57I,wBAChC+jJ,EAAgB/C,IAAqBzrJ,KAAKqmJ,aAAe,KAAOoF,EAChEgD,EAAgBD,EAAgBA,EAAc/jJ,wBAA0B8jJ,EACxEzgF,EAAQw8E,EAAahiI,GAASA,EAAMomI,cAAc,GAAKpmI,EACvD26H,EAAiBjjJ,KAAK2uJ,6BAG5B,MAAO,CACHpzH,EAAGkzH,EAAcxiJ,KAAOsiJ,EAAYtiJ,MAH9B6hE,EAAM8gF,MAAQH,EAAcxiJ,KAAOg3I,EAAeh3I,MAIxDqZ,EAAGmpI,EAAc1iJ,IAAMwiJ,EAAYxiJ,KAH7B+hE,EAAM+gF,MAAQJ,EAAc1iJ,IAAMk3I,EAAel3I,Q,uCAO/D,SAA0Buc,GACtB,IAAM26H,EAAiBjjJ,KAAK2uJ,6BACtB7gF,EAAQw8E,EAAahiI,GAQtBA,EAAMwmI,QAAQ,IAAMxmI,EAAMymI,eAAe,IAAM,CAAEH,MAAO,EAAGC,MAAO,GAAOvmI,EACxEiT,EAAIuyC,EAAM8gF,MAAQ3L,EAAeh3I,KACjCqZ,EAAIwoD,EAAM+gF,MAAQ5L,EAAel3I,IAGvC,GAAI/L,KAAKopJ,iBAAkB,CACvB,IAAM4F,EAAYhvJ,KAAKopJ,iBAAiB6F,eACxC,GAAID,EAAW,CACX,IAAME,EAAWlvJ,KAAKopJ,iBAAiB+F,iBAGvC,OAFAD,EAAS3zH,EAAIA,EACb2zH,EAAS5pI,EAAIA,EACN4pI,EAASE,gBAAgBJ,EAAUK,YAGlD,MAAO,CAAE9zH,IAAGjW,O,4CAGhB,SAA+BwoD,GAC3B,IAAMwhF,EAAoBtvJ,KAAKinJ,eAAiBjnJ,KAAKinJ,eAAesI,SAAW,KAC/E,EAAevvJ,KAAKwvJ,kBAAoBxvJ,KAAKwvJ,kBAAkB1hF,EAAO9tE,MAAQ8tE,EAAxEvyC,EAAN,EAAMA,EAAGjW,EAAT,EAASA,EAOT,GANsB,MAAlBtlB,KAAKuvJ,UAA0C,MAAtBD,EACzBhqI,EAAItlB,KAAKonJ,sBAAsB9hI,EAER,MAAlBtlB,KAAKuvJ,UAA0C,MAAtBD,IAC9B/zH,EAAIv7B,KAAKonJ,sBAAsB7rH,GAE/Bv7B,KAAKksJ,cAAe,CACpB,MAAmClsJ,KAAKosJ,yBAA7BqD,EAAX,EAAQl0H,EAAem0H,EAAvB,EAAoBpqI,EACdqqI,EAAe3vJ,KAAKksJ,cACpB0D,EAAc5vJ,KAAK0mJ,aACnBmJ,EAAOF,EAAa5jJ,IAAM2jJ,EAC1BI,EAAOH,EAAa3jJ,QAAU4jJ,EAAYplJ,OAASklJ,GAGzDn0H,EAAIw0H,EAAMx0H,EAFGo0H,EAAa1jJ,KAAOwjJ,EACpBE,EAAazjJ,OAAS0jJ,EAAYlmJ,MAAQ+lJ,IAEvDnqI,EAAIyqI,EAAMzqI,EAAGuqI,EAAMC,GAEvB,MAAO,CAAEv0H,IAAGjW,O,0CAGhB,SAA6B0qI,GACzB,IAAQz0H,EAASy0H,EAATz0H,EAAGjW,EAAM0qI,EAAN1qI,EACLggD,EAAQtlE,KAAK2nJ,uBACbsI,EAA0BjwJ,KAAKusJ,sCAE/B2D,EAAU3xI,KAAKqiC,IAAIrlB,EAAI00H,EAAwB10H,GAC/C40H,EAAU5xI,KAAKqiC,IAAIt7B,EAAI2qI,EAAwB3qI,GAarD,OARI4qI,EAAUlwJ,KAAK8hC,QAAQsuH,kCACvB9qF,EAAM/pC,EAAIA,EAAI00H,EAAwB10H,EAAI,GAAK,EAC/C00H,EAAwB10H,EAAIA,GAE5B40H,EAAUnwJ,KAAK8hC,QAAQsuH,kCACvB9qF,EAAMhgD,EAAIA,EAAI2qI,EAAwB3qI,EAAI,GAAK,EAC/C2qI,EAAwB3qI,EAAIA,GAEzBggD,I,2CAGX,WACI,GAAKtlE,KAAKqmJ,cAAiBrmJ,KAAKqlJ,SAAhC,CAGA,IAAMgL,EAAerwJ,KAAKqlJ,SAASlhJ,OAAS,IAAMnE,KAAK6sG,aACnDwjD,IAAiBrwJ,KAAKolJ,6BACtBplJ,KAAKolJ,2BAA6BiL,EAClC5O,EAA6BzhJ,KAAKqmJ,aAAcgK,O,yCAIxD,SAA4BhlJ,GACxBA,EAAQsgB,oBAAoB,YAAa3rB,KAAKimJ,aAAcxB,GAC5Dp5I,EAAQsgB,oBAAoB,aAAc3rB,KAAKimJ,aAAc1B,K,wCAOjE,SAA2BhpH,EAAGjW,GAC1B,IAAMqc,EAAY0rH,EAAa9xH,EAAGjW,GAGJ,MAA1BtlB,KAAKmpJ,oBACLnpJ,KAAKmpJ,kBAAoBnpJ,KAAKqmJ,aAAa96I,MAAMo2B,WAAa,IAKlE3hC,KAAKqmJ,aAAa96I,MAAMo2B,UAAY3hC,KAAKmpJ,kBACrCxnH,EAAY,IAAM3hC,KAAKmpJ,kBAAoBxnH,I,8BAMnD,SAAiB2uH,GACb,IAAMC,EAAiBvwJ,KAAKonJ,sBAC5B,OAAImJ,EACO,CAAEh1H,EAAG+0H,EAAgB/0H,EAAIg1H,EAAeh1H,EAAGjW,EAAGgrI,EAAgBhrI,EAAIirI,EAAejrI,GAErF,CAAEiW,EAAG,EAAGjW,EAAG,K,sCAGtB,WACItlB,KAAKksJ,cAAgBlsJ,KAAK0mJ,kBAAejiJ,EACzCzE,KAAKuoJ,iBAAiB73I,U,4CAM1B,WACI,MAAe1Q,KAAK2kJ,kBAAdppH,EAAN,EAAMA,EAAGjW,EAAT,EAASA,EACT,KAAW,IAANiW,GAAiB,IAANjW,GAAYtlB,KAAK6sG,eAAiB7sG,KAAKmlJ,iBAAvD,CAGA,IAAMwK,EAAe3vJ,KAAKmlJ,iBAAiB16I,wBACrC8jJ,EAAcvuJ,KAAKqmJ,aAAa57I,wBAGtC,KAA4B,IAAvBklJ,EAAajmJ,OAAuC,IAAxBimJ,EAAanlJ,QACnB,IAAtB+jJ,EAAY7kJ,OAAsC,IAAvB6kJ,EAAY/jJ,QAD5C,CAIA,IAAMgmJ,EAAeb,EAAa1jJ,KAAOsiJ,EAAYtiJ,KAC/CwkJ,EAAgBlC,EAAYriJ,MAAQyjJ,EAAazjJ,MACjDwkJ,EAAcf,EAAa5jJ,IAAMwiJ,EAAYxiJ,IAC7C4kJ,EAAiBpC,EAAYviJ,OAAS2jJ,EAAa3jJ,OAGrD2jJ,EAAajmJ,MAAQ6kJ,EAAY7kJ,OAC7B8mJ,EAAe,IACfj1H,GAAKi1H,GAELC,EAAgB,IAChBl1H,GAAKk1H,IAITl1H,EAAI,EAIJo0H,EAAanlJ,OAAS+jJ,EAAY/jJ,QAC9BkmJ,EAAc,IACdprI,GAAKorI,GAELC,EAAiB,IACjBrrI,GAAKqrI,IAITrrI,EAAI,EAEJiW,IAAMv7B,KAAK2kJ,kBAAkBppH,GAAKjW,IAAMtlB,KAAK2kJ,kBAAkBr/H,GAC/DtlB,KAAK4wJ,oBAAoB,CAAEtrI,IAAGiW,U,gCAItC,SAAmBjT,GACf,IAAM/mB,EAAQvB,KAAKwlJ,eACnB,MAAqB,iBAAVjkJ,EACAA,EAEF+oJ,EAAahiI,GACX/mB,EAAMsvJ,MAEVtvJ,EAAQA,EAAMuvJ,MAAQ,I,6BAGjC,SAAgBxoI,GACZ,IAAMyoI,EAAmB/wJ,KAAKuoJ,iBAAiByI,aAAa1oI,GAC5D,GAAIyoI,EAAkB,CAClB,IAAMvkI,EAASlE,EAAMkE,OAIjBxsB,KAAKksJ,gBAAkB1/H,IAAWxsB,KAAKkN,WACtCsf,IAAWxsB,KAAKmlJ,kBAAoB34H,EAAOI,SAAS5sB,KAAKmlJ,oBAC1DzC,EAAiB1iJ,KAAKksJ,cAAe6E,EAAiBhlJ,IAAKglJ,EAAiB9kJ,MAEhFjM,KAAKonJ,sBAAsB7rH,GAAKw1H,EAAiB9kJ,KACjDjM,KAAKonJ,sBAAsB9hI,GAAKyrI,EAAiBhlJ,IAG5C/L,KAAKinJ,iBACNjnJ,KAAK4kJ,iBAAiBrpH,GAAKw1H,EAAiB9kJ,KAC5CjM,KAAK4kJ,iBAAiBt/H,GAAKyrI,EAAiBhlJ,IAC5C/L,KAAKqnJ,2BAA2BrnJ,KAAK4kJ,iBAAiBrpH,EAAGv7B,KAAK4kJ,iBAAiBt/H,O,wCAK3F,WACI,IAAM69H,EAAiBnjJ,KAAKuoJ,iBAAiBl8I,UAAU6F,IAAIlS,KAAKkN,WAChE,OAAOi2I,EAAiBA,EAAeF,eACnCjjJ,KAAKsN,eAAe41I,8B,4BAQ5B,WAII,YAH+Bz+I,IAA3BzE,KAAKixJ,oBACLjxJ,KAAKixJ,kBAAoB,YAAejxJ,KAAKqmJ,eAE1CrmJ,KAAKixJ,sB,GAQpB,SAAS5D,EAAa9xH,EAAGjW,GAGrB,4BAAsB/G,KAAK06B,MAAM1d,GAAjC,eAA0Chd,KAAK06B,MAAM3zB,GAArD,UAGJ,SAASyqI,EAAMxuJ,EAAOmd,EAAKokC,GACvB,OAAOvkC,KAAKukC,IAAIpkC,EAAKH,KAAKG,IAAIokC,EAAKvhD,IAMvC,SAASkoJ,EAAW/F,GACZA,GAAQA,EAAKhjI,YACbgjI,EAAKhjI,WAAWe,YAAYiiI,GAIpC,SAAS4G,EAAahiI,GAIlB,MAAyB,MAAlBA,EAAM5nB,KAAK,GAkBtB,SAASy0C,EAAY1+B,EAASvJ,GAC1B,IAAMwJ,EAAYD,EAAQC,UAC1B,GAAyB,IAArBA,EAAUvS,QAAgBuS,EAAU,GAAG/O,WAAauF,EAAUtF,aAC9D,OAAO8O,EAAU,GAErB,IAAMw6I,EAAUhkJ,EAAU2K,cAAc,OAExC,OADAnB,EAAUrD,QAAQ,SAAAqwI,GAAI,OAAIwN,EAAQp5I,YAAY4rI,KACvCwN,EAOX,SAASzD,EAAiBjhI,EAAQ2kI,GAC9B3kI,EAAOjhB,MAAM7B,MAAb,UAAwBynJ,EAAWznJ,MAAnC,MACA8iB,EAAOjhB,MAAMf,OAAb,UAAyB2mJ,EAAW3mJ,OAApC,MACAgiB,EAAOjhB,MAAMo2B,UAAY0rH,EAAa8D,EAAWllJ,KAAMklJ,EAAWplJ,KAgBtE,SAASqlJ,EAAgBr4I,EAAOs4I,EAAWC,GACvC,IAAMhtJ,EAAOitJ,EAAQF,EAAWt4I,EAAM5U,OAAS,GACzCqtJ,EAAKD,EAAQD,EAASv4I,EAAM5U,OAAS,GAC3C,GAAIG,IAASktJ,EAAb,CAKA,IAFA,IAAMhlI,EAASzT,EAAMzU,GACfghE,EAAQksF,EAAKltJ,GAAQ,EAAI,EACtBuD,EAAIvD,EAAMuD,IAAM2pJ,EAAI3pJ,GAAKy9D,EAC9BvsD,EAAMlR,GAAKkR,EAAMlR,EAAIy9D,GAEzBvsD,EAAMy4I,GAAMhlI,GAgChB,SAAS+kI,EAAQhwJ,EAAOuhD,GACpB,OAAOvkC,KAAKukC,IAAI,EAAGvkC,KAAKG,IAAIokC,EAAKvhD,IAcrC,IASM,E,8BACF,WAAY8J,EAASq5I,EAAmBx3I,EAAW5J,EAASgK,GAAc,+BACtEtN,KAAK0kJ,kBAAoBA,EACzB1kJ,KAAKsD,QAAUA,EACftD,KAAKsN,eAAiBA,EAEtBtN,KAAKgtB,UAAW,EAEhBhtB,KAAKktJ,iBAAkB,EAKvBltJ,KAAKyxJ,oBAAqB,EAE1BzxJ,KAAK0xJ,eAAiB,EAKtB1xJ,KAAK2xJ,eAAiB,kBAAM,GAE5B3xJ,KAAK4xJ,cAAgB,kBAAM,GAE3B5xJ,KAAKylJ,cAAgB,IAAIhiJ,EAAA,EAIzBzD,KAAK6lJ,QAAU,IAAIpiJ,EAAA,EAKnBzD,KAAK8lJ,OAAS,IAAIriJ,EAAA,EAElBzD,KAAK+lJ,QAAU,IAAItiJ,EAAA,EAEnBzD,KAAK6xJ,OAAS,IAAIpuJ,EAAA,EAElBzD,KAAK8xJ,aAAc,EAEnB9xJ,KAAK+xJ,eAAiB,GAMtB/xJ,KAAKgyJ,cAAgB,CAAEC,KAAM,KAAM3sF,MAAO,EAAG4sF,UAAU,GAEvDlyJ,KAAKmyJ,YAAc,GAEnBnyJ,KAAKoyJ,UAAY,GAEjBpyJ,KAAKqyJ,aAAe,WAEpBryJ,KAAKsyJ,gBAAkB,IAAI3kJ,IAE3B3N,KAAKulJ,WAAa,MAElBvlJ,KAAKuyJ,4BAA8BxN,EAAA,EAAa79H,MAEhDlnB,KAAKwyJ,yBAA2B,EAEhCxyJ,KAAKyyJ,2BAA6B,EAElCzyJ,KAAK0yJ,kBAAoB,IAAIjvJ,EAAA,EAE7BzD,KAAKixJ,kBAAoB,KAEzBjxJ,KAAK2yJ,qBAAuB,WACxB,EAAKzI,iBDj9CX,WAAgD,IAA7B1oC,EAA6B,uDAApB,EAAGsqB,EAAiB,uDAAL,IAO7C,QANK,OAAA8mB,EAAA,GAAUpxC,IAAWA,EAAS,KAC/BA,EAAS,GAERsqB,GAA2C,mBAAvBA,EAAU1nI,WAC/B0nI,EAAY,KAET,IAAItR,EAAA,EAAW,SAAAj+F,GAElB,OADAA,EAAW15B,IAAIipI,EAAU1nI,SAASs0B,EAAU8oF,EAAQ,CAAEjlF,aAAYglH,QAAS,EAAG//B,YACvEjlF,ICy8CHs2H,CAAS,EAAGC,EAAA,GACP9uJ,KAAK,OAAAC,EAAA,GAAU,EAAKyuJ,oBACpBxuJ,UAAU,WACX,IAAMw/I,EAAO,EAAKqP,YACZC,EAAa,EAAKtB,eACc,IAAlC,EAAKc,yBACLS,GAAwBvP,GAAOsP,GAEQ,IAAlC,EAAKR,0BACVS,GAAwBvP,EAAMsP,GAEM,IAApC,EAAKP,2BACLS,GAA0BxP,GAAOsP,GAEQ,IAApC,EAAKP,4BACVS,GAA0BxP,EAAMsP,MAI5ChzJ,KAAKqL,QAAU,YAAcA,GAC7BrL,KAAKkN,UAAYA,EACjBlN,KAAKmzJ,sBAAsB,CAACnzJ,KAAKqL,UACjCq5I,EAAkB0O,sBAAsBpzJ,MACxCA,KAAKuoJ,iBAAmB,IAAI,EAAsBr7I,EAAWI,I,sBAGjE,WACItN,KAAKkqJ,iBACLlqJ,KAAK0yJ,kBAAkB5uJ,WACvB9D,KAAKuyJ,4BAA4B38I,cACjC5V,KAAKylJ,cAAc3hJ,WACnB9D,KAAK6lJ,QAAQ/hJ,WACb9D,KAAK8lJ,OAAOhiJ,WACZ9D,KAAK+lJ,QAAQjiJ,WACb9D,KAAK6xJ,OAAO/tJ,WACZ9D,KAAKsyJ,gBAAgB5hJ,QACrB1Q,KAAK+yJ,YAAc,KACnB/yJ,KAAKuoJ,iBAAiB73I,QACtB1Q,KAAK0kJ,kBAAkB2O,oBAAoBrzJ,Q,wBAG/C,WACI,OAAOA,KAAK8xJ,c,mBAGhB,WACI9xJ,KAAKszJ,mBACLtzJ,KAAKuzJ,6B,mBAUT,SAAMjiJ,EAAMuxI,EAAUC,EAAUn5I,GAI5B,IAAI6pJ,EAHJxzJ,KAAKszJ,mBAIQ,MAAT3pJ,GAEkB,KADlB6pJ,EAAWxzJ,KAAKktJ,gBAAkBltJ,KAAKmyJ,YAAYlpJ,QAAQqI,IAAS,KAIhEkiJ,EAAWxzJ,KAAKyzJ,iCAAiCniJ,EAAMuxI,EAAUC,IAIrE0Q,EAAW7pJ,EAEf,IAAM+pJ,EAAmB1zJ,KAAK2zJ,kBACxBviJ,EAAesiJ,EAAiBzqJ,QAAQqI,GACxCq5I,EAAcr5I,EAAKq3I,wBACrBiL,EAAuBF,EAAiBF,GAc5C,GAVII,IAAyBtiJ,IACzBsiJ,EAAuBF,EAAiBF,EAAW,IAInDpiJ,GAAgB,GAChBsiJ,EAAiBnrH,OAAOn3B,EAAc,GAItCwiJ,IAAyB5zJ,KAAK0kJ,kBAAkB73C,WAAW+mD,GAAuB,CAClF,IAAMvoJ,EAAUuoJ,EAAqBhL,iBACrCv9I,EAAQu9B,cAAcjoB,aAAagqI,EAAat/I,GAChDqoJ,EAAiBnrH,OAAOirH,EAAU,EAAGliJ,QAEpC,GAAItR,KAAK6zJ,yBAAyBhR,EAAUC,GAAW,CACxD,IAAMgR,EAAYJ,EAAiB,GAAG9K,iBACtCkL,EAAUpzI,WAAWC,aAAagqI,EAAamJ,GAC/CJ,EAAiB53G,QAAQxqC,QAGzB,YAActR,KAAKqL,SAASyM,YAAY6yI,GACxC+I,EAAiB9vJ,KAAK0N,GAG1Bq5I,EAAYp/I,MAAMo2B,UAAY,GAG9B3hC,KAAK+zJ,sBACL/zJ,KAAKg0J,wBAELh0J,KAAKuzJ,2BACLvzJ,KAAK6lJ,QAAQhiJ,KAAK,CAAEyN,OAAM+G,UAAWrY,KAAMoR,aAAcpR,KAAKurJ,aAAaj6I,O,kBAM/E,SAAKA,GACDtR,KAAKi0J,SACLj0J,KAAK8lJ,OAAOjiJ,KAAK,CAAEyN,OAAM+G,UAAWrY,S,kBAYxC,SAAKsR,EAAMF,EAAcS,EAAe86I,EAAmBF,EAAwBhF,GAC/EznJ,KAAKi0J,SACLj0J,KAAK+lJ,QAAQliJ,KAAK,CACdyN,OACAF,eACAS,gBACAwG,UAAWrY,KACX2sJ,oBACAF,yBACAhF,e,uBAOR,SAAUvvI,GAAK,WACLg8I,EAAgBl0J,KAAKmyJ,YAc3B,OAbAnyJ,KAAKmyJ,YAAcj6I,EACnBA,EAAM7E,QAAQ,SAAA/B,GAAI,OAAIA,EAAK6iJ,mBAAmB,KAC1Cn0J,KAAK6sG,eACgBqnD,EAAc/+I,OAAO,SAAA7D,GAAI,OAAIA,EAAKu7F,eAGtCunD,MAAM,SAAA9iJ,GAAI,OAA6B,IAAzB4G,EAAMjP,QAAQqI,KACzCtR,KAAKi0J,SAGLj0J,KAAKq0J,eAGNr0J,O,2BAGX,SAAcgH,GAEV,OADAhH,KAAKulJ,WAAav+I,EACXhH,O,yBAOX,SAAY,GAER,OADAA,KAAKoyJ,UAAY,EAAY5oJ,QACtBxJ,O,6BAMX,SAAgBq9H,GAEZ,OADAr9H,KAAKqyJ,aAAeh1B,EACbr9H,O,mCAMX,SAAsBgL,GAClB,IAAMK,EAAU,YAAcrL,KAAKqL,SAKnC,OAFArL,KAAKs0J,qBAC8B,IAA/BtpJ,EAAS/B,QAAQoC,GAAjB,CAAoCA,GAApC,mBAAgDL,IAAYA,EAASxB,QAClExJ,O,kCAGX,WACI,OAAOA,KAAKs0J,sB,0BAMhB,SAAahjJ,GACT,OAAKtR,KAAK8xJ,YAQH3sC,GAF6B,eAAtBnlH,KAAKqyJ,cAAqD,QAApBryJ,KAAKulJ,WACrDvlJ,KAAK+xJ,eAAevoJ,QAAQK,UAAY7J,KAAK+xJ,eACzB,SAAAwC,GAAW,OAAIA,EAAYtC,OAAS3gJ,IAPjDtR,KAAKmyJ,YAAYlpJ,QAAQqI,K,yBAaxC,WACI,OAAOtR,KAAKsyJ,gBAAgBnyH,KAAO,I,uBASvC,SAAU7uB,EAAMuxI,EAAUC,EAAU0R,GAEhC,IAAIx0J,KAAKktJ,iBAAoBltJ,KAAKy0J,aAC7B9R,EAAwB3iJ,KAAKy0J,YA3TT,IA2TgD5R,EAAUC,GADnF,CAIA,IAAMj6G,EAAW7oC,KAAK+xJ,eAChByB,EAAWxzJ,KAAKyzJ,iCAAiCniJ,EAAMuxI,EAAUC,EAAU0R,GACjF,MAAkB,IAAdhB,GAAmB3qH,EAAS1kC,OAAS,GAAzC,CAGA,IAAMkyE,EAAqC,eAAtBr2E,KAAKqyJ,aACpBjhJ,EAAe+zG,GAAUt8E,EAAU,SAAA0rH,GAAW,OAAIA,EAAYtC,OAAS3gJ,IACvEojJ,EAAuB7rH,EAAS2qH,GAEhCmB,EAAcD,EAAqBlS,WACnCl9E,EAAQl0D,EAAeoiJ,EAAW,GAAK,EAEvCoB,EAAa50J,KAAK60J,iBAJAhsH,EAASz3B,GAAcoxI,WAIWmS,EAAarvF,GAEjEwvF,EAAgB90J,KAAK+0J,oBAAoB3jJ,EAAcy3B,EAAUy8B,GAGjE0vF,EAAWnsH,EAASr/B,QAE1B4nJ,EAAgBvoH,EAAUz3B,EAAcoiJ,GACxCxzJ,KAAK6xJ,OAAOhuJ,KAAK,CACbgO,cAAeT,EACfA,aAAcoiJ,EACdn7I,UAAWrY,KACXsR,SAEJu3B,EAASx1B,QAAQ,SAACy1B,EAASn/B,GAEvB,GAAIqrJ,EAASrrJ,KAAWm/B,EAAxB,CAGA,IAAMmsH,EAAgBnsH,EAAQmpH,OAAS3gJ,EACjCzG,EAASoqJ,EAAgBL,EAAaE,EACtCI,EAAkBD,EAAgB3jJ,EAAKq3I,wBACzC7/G,EAAQmpH,KAAKrJ,iBAEjB9/G,EAAQj+B,QAAUA,EAKdwrE,GAGA6+E,EAAgB3pJ,MAAMo2B,UAAtB,sBAAiDpjB,KAAK06B,MAAMnQ,EAAQj+B,QAApE,aACA63I,EAAiB55G,EAAQ05G,WAAY,EAAG33I,KAGxCqqJ,EAAgB3pJ,MAAMo2B,UAAtB,yBAAoDpjB,KAAK06B,MAAMnQ,EAAQj+B,QAAvE,UACA63I,EAAiB55G,EAAQ05G,WAAY33I,EAAQ,OAIrD7K,KAAKgyJ,cAAcE,SAAWzP,EAAmBkS,EAAa9R,EAAUC,GACxE9iJ,KAAKgyJ,cAAcC,KAAOyC,EAAqBzC,KAC/CjyJ,KAAKgyJ,cAAc1sF,MAAQ+Q,EAAem+E,EAAaj5H,EAAIi5H,EAAalvI,M,wCAQ5E,SAA2Bu9H,EAAUC,GAAQ,WACzC,IAAI9iJ,KAAKyxJ,mBAAT,CAGA,IAAI0D,EACAC,EAA0B,EAC1BC,EAA4B,EAgBhC,GAdAr1J,KAAKuoJ,iBAAiBl8I,UAAUgH,QAAQ,SAACrJ,EAAUqB,GAG/C,GAAIA,IAAY,EAAK6B,WAAclD,EAASw4I,aAAc2S,GAGtDxS,EAAwB34I,EAASw4I,WA3YhB,IA2YsDK,EAAUC,GAAW,OA6Y5G,SAAoCz3I,EAASm3I,EAAYK,EAAUC,GAC/D,IAAMwS,EAAmBC,GAA2B/S,EAAYM,GAC1D0S,EAAqBC,GAA6BjT,EAAYK,GAChEuS,EAA0B,EAC1BC,EAA4B,EAKhC,GAAIC,EAAkB,CAClB,IAAMltI,EAAY/c,EAAQ+c,UACD,IAArBktI,EACIltI,EAAY,IACZgtI,EAA0B,GAGzB/pJ,EAAQytE,aAAe1wD,EAAY/c,EAAQwnE,eAChDuiF,EAA0B,GAGlC,GAAII,EAAoB,CACpB,IAAM98E,EAAartE,EAAQqtE,WACA,IAAvB88E,EACI98E,EAAa,IACb28E,EAA4B,GAG3BhqJ,EAAQwtE,YAAcH,EAAartE,EAAQ0nE,cAChDsiF,EAA4B,GAGpC,MAAO,CAACD,EAAyBC,GA3akCK,CAA2BrqJ,EAASrB,EAASw4I,WAAYK,EAAUC,GAD9B,mBAClEuS,EADkE,OAC3FD,EAD2F,OAE7DC,KAC3BF,EAAa9pJ,OAKpB+pJ,IAA4BC,EAA2B,CACxD,MAA0Br1J,KAAKsN,eAAeqoJ,kBAAtCjsJ,EAAR,EAAQA,MAAOc,EAAf,EAAeA,OACTg4I,EAAa,CAAE94I,QAAOc,SAAQuB,IAAK,EAAGG,MAAOxC,EAAOsC,OAAQxB,EAAQyB,KAAM,GAChFmpJ,EAA0BG,GAA2B/S,EAAYM,GACjEuS,EAA4BI,GAA6BjT,EAAYK,GACrEsS,EAAahqI,QAEbgqI,GAAeC,IAA4Bp1J,KAAKwyJ,0BAChD6C,IAA8Br1J,KAAKyyJ,4BACnC0C,IAAen1J,KAAK+yJ,cACpB/yJ,KAAKwyJ,yBAA2B4C,EAChCp1J,KAAKyyJ,2BAA6B4C,EAClCr1J,KAAK+yJ,YAAcoC,GACdC,GAA2BC,IAA8BF,EAC1Dn1J,KAAKsD,QAAQ+nB,kBAAkBrrB,KAAK2yJ,sBAGpC3yJ,KAAKkqJ,qB,4BAKjB,WACIlqJ,KAAK0yJ,kBAAkB7uJ,S,8BAG3B,WACI,IAAMiV,EAAS,YAAc9Y,KAAKqL,SAASE,MAC3CvL,KAAKylJ,cAAc5hJ,OACnB7D,KAAK8xJ,aAAc,EAInB9xJ,KAAK41J,mBAAqB98I,EAAO+8I,kBAAoB/8I,EAAOg9I,gBAAkB,GAC9Eh9I,EAAOg9I,eAAiBh9I,EAAO+8I,iBAAmB,OAClD71J,KAAKq0J,cACLr0J,KAAKuyJ,4BAA4B38I,cACjC5V,KAAK+1J,0B,mCAGT,WACI,IAAM1qJ,EAAU,YAAcrL,KAAKqL,SACnCrL,KAAKuoJ,iBAAiB/zI,MAAMxU,KAAKs0J,qBAGjCt0J,KAAKy0J,YAAcz0J,KAAKuoJ,iBAAiBl8I,UAAU6F,IAAI7G,GAASm3I,a,iCAGpE,WACI,IAAMnsE,EAAqC,eAAtBr2E,KAAKqyJ,aAC1BryJ,KAAK+xJ,eAAiB/xJ,KAAK2zJ,kBAAkBlqJ,IAAI,SAAAwoJ,GAC7C,IAAM+D,EAAmB/D,EAAKgE,oBAC9B,MAAO,CAAEhE,OAAMpnJ,OAAQ,EAAG23I,WAAYD,EAAqByT,MAC5Dn6I,KAAK,SAACE,EAAGC,GACR,OAAOq6D,EAAet6D,EAAEymI,WAAWv2I,KAAO+P,EAAEwmI,WAAWv2I,KACnD8P,EAAEymI,WAAWz2I,IAAMiQ,EAAEwmI,WAAWz2I,Q,oBAI5C,WAAM,WACF/L,KAAK8xJ,aAAc,EACnB,IAAMh5I,EAAS,YAAc9Y,KAAKqL,SAASE,MAC3CuN,EAAOg9I,eAAiBh9I,EAAO+8I,iBAAmB71J,KAAK41J,mBAEvD51J,KAAK2zJ,kBAAkBtgJ,QAAQ,SAAA/B,GAC3B,IAAM23I,EAAc33I,EAAKs3I,iBACrBK,IACAA,EAAY19I,MAAMo2B,UAAY,MAGtC3hC,KAAKoyJ,UAAU/+I,QAAQ,SAAAy1B,GAAO,OAAIA,EAAQotH,eAAe,KACzDl2J,KAAK2zJ,kBAAoB,GACzB3zJ,KAAK+xJ,eAAiB,GACtB/xJ,KAAKgyJ,cAAcC,KAAO,KAC1BjyJ,KAAKgyJ,cAAc1sF,MAAQ,EAC3BtlE,KAAKgyJ,cAAcE,UAAW,EAC9BlyJ,KAAKkqJ,iBACLlqJ,KAAKuyJ,4BAA4B38I,cACjC5V,KAAKuoJ,iBAAiB73I,U,iCAQ1B,SAAoBU,EAAcy3B,EAAUy8B,GACxC,IAAM+Q,EAAqC,eAAtBr2E,KAAKqyJ,aACpB/B,EAAkBznH,EAASz3B,GAAcoxI,WACzC2T,EAAmBttH,EAASz3B,GAAwB,EAATk0D,GAC7CwvF,EAAgBxE,EAAgBj6E,EAAe,QAAU,UAAY/Q,EACzE,GAAI6wF,EAAkB,CAClB,IAAMhtJ,EAAQktE,EAAe,OAAS,MAChCjtE,EAAMitE,EAAe,QAAU,UAKtB,IAAX/Q,EACAwvF,GAAiBqB,EAAiB3T,WAAWr5I,GAASmnJ,EAAgBlnJ,GAGtE0rJ,GAAiBxE,EAAgBnnJ,GAASgtJ,EAAiB3T,WAAWp5I,GAG9E,OAAO0rJ,I,8BAQX,SAAiBxE,EAAiBqE,EAAarvF,GAC3C,IAAM+Q,EAAqC,eAAtBr2E,KAAKqyJ,aACtBuC,EAAav+E,EAAes+E,EAAY1oJ,KAAOqkJ,EAAgBrkJ,KAC/D0oJ,EAAY5oJ,IAAMukJ,EAAgBvkJ,IAMtC,OAJe,IAAXu5D,IACAsvF,GAAcv+E,EAAes+E,EAAYjrJ,MAAQ4mJ,EAAgB5mJ,MAC7DirJ,EAAYnqJ,OAAS8lJ,EAAgB9lJ,QAEtCoqJ,I,sCAOX,SAAyB/R,EAAUC,GAC/B,IAAK9iJ,KAAK2zJ,kBAAkBxvJ,OACxB,OAAO,EAEX,IAAMiyJ,EAAgBp2J,KAAK+xJ,eACrB17E,EAAqC,eAAtBr2E,KAAKqyJ,aAI1B,GADiB+D,EAAc,GAAGnE,OAASjyJ,KAAK2zJ,kBAAkB,GACpD,CACV,IAAM0C,EAAeD,EAAcA,EAAcjyJ,OAAS,GAAGq+I,WAC7D,OAAOnsE,EAAewsE,GAAYwT,EAAanqJ,MAAQ42I,GAAYuT,EAAarqJ,OAGhF,IAAMsqJ,EAAgBF,EAAc,GAAG5T,WACvC,OAAOnsE,EAAewsE,GAAYyT,EAAcrqJ,KAAO62I,GAAYwT,EAAcvqJ,M,8CAUzF,SAAiCuF,EAAMuxI,EAAUC,EAAUx9E,GAAK,WACtD+Q,EAAqC,eAAtBr2E,KAAKqyJ,aACpB1oJ,EAAQw7G,GAAUnlH,KAAK+xJ,eAAgB,WAAuB3/C,EAAGr5F,GAAS,IAAhCk5I,EAAgC,EAAhCA,KAAMzP,EAA0B,EAA1BA,WAClD,OAAIyP,IAAS3gJ,EAGFyH,EAAM5U,OAAS,IAEtBmhE,GAKI2sF,IAAS,EAAKD,cAAcC,OAAQ,EAAKD,cAAcE,WAJzC77E,EAAe/Q,EAAM/pC,EAAI+pC,EAAMhgD,KAK/B,EAAK0sI,cAAc1sF,SAIlC+Q,EAGHwsE,GAAYtkI,KAAKs7B,MAAM2oG,EAAWv2I,OAAS42I,EAAWtkI,KAAKs7B,MAAM2oG,EAAWt2I,OAC5E42I,GAAYvkI,KAAKs7B,MAAM2oG,EAAWz2I,MAAQ+2I,EAAWvkI,KAAKs7B,MAAM2oG,EAAWx2I,WAEnF,OAAmB,IAAXrC,GAAiB3J,KAAK4xJ,cAAcjoJ,EAAO2H,EAAMtR,MAAc2J,GAAJ,I,yBAGvE,WACI3J,KAAK2zJ,kBAAoB3zJ,KAAKmyJ,YAAY3oJ,QAC1CxJ,KAAK+zJ,sBACL/zJ,KAAKg0J,0B,8BAOT,SAAiBz4H,EAAGjW,GAChB,OAA2B,MAApBtlB,KAAKy0J,aAAuBhS,EAAmBziJ,KAAKy0J,YAAal5H,EAAGjW,K,8CAS/E,SAAiChU,EAAMiqB,EAAGjW,GACtC,OAAOtlB,KAAKoyJ,UAAU/sJ,KAAK,SAAAyjC,GAAO,OAAIA,EAAQytH,YAAYjlJ,EAAMiqB,EAAGjW,O,yBAQvE,SAAYhU,EAAMiqB,EAAGjW,GACjB,IAAKtlB,KAAKy0J,cAAgBhS,EAAmBziJ,KAAKy0J,YAAal5H,EAAGjW,KAC7DtlB,KAAK2xJ,eAAergJ,EAAMtR,MAC3B,OAAO,EAEX,IAAMw2J,EAAmBx2J,KAAK8qJ,iBAAiB0L,iBAAiBj7H,EAAGjW,GAGnE,IAAKkxI,EACD,OAAO,EAEX,IAAM5zJ,EAAgB,YAAc5C,KAAKqL,SAOzC,OAAOmrJ,IAAqB5zJ,GAAiBA,EAAcgqB,SAAS4pI,K,6BAMxE,SAAgB1tH,EAAS5wB,GAAK,WACpBu+I,EAAiBz2J,KAAKsyJ,iBACvBmE,EAAeriJ,IAAI00B,IAAY5wB,EAAMk8I,MAAM,SAAA9iJ,GAK5C,OAAO,EAAKqgJ,eAAergJ,EAAM,IAAS,EAAK6gJ,YAAYlpJ,QAAQqI,IAAS,MAE5EmlJ,EAAe5zJ,IAAIimC,GACnB9oC,KAAKg0J,wBACLh0J,KAAK+1J,2B,4BAOb,SAAejtH,GACX9oC,KAAKsyJ,gBAAgB//I,OAAOu2B,GAC5B9oC,KAAKuyJ,4BAA4B38I,gB,mCAMrC,WAAqB,WACjB5V,KAAKuyJ,4BAA8BvyJ,KAAK0kJ,kBAAkB1rE,OAAO90E,UAAU,SAAAokB,GACvE,GAAI,EAAKukF,aAAc,CACnB,IAAMkkD,EAAmB,EAAKxI,iBAAiByI,aAAa1oI,GACxDyoI,IAKA,EAAKgB,eAAe1+I,QAAQ,YACxBqvI,EAD2C,EAAhBF,WACEuO,EAAiBhlJ,IAAKglJ,EAAiB9kJ,QAIxE,EAAK8lJ,eAAe1+I,QAAQ,YAAa,IAAV4+I,EAAU,EAAVA,KACvB,EAAKvN,kBAAkB73C,WAAWolD,IAGlCA,EAAKyE,uCAKZ,EAAKzO,eACV,EAAK+L,4B,4BAUjB,WACI,IAAKh0J,KAAKixJ,kBAAmB,CACzB,IAAMjuH,EAAa,YAAe,YAAchjC,KAAKqL,UACrDrL,KAAKixJ,kBAAoBjuH,GAAchjC,KAAKkN,UAEhD,OAAOlN,KAAKixJ,oB,sCAGhB,WAAwB,WACd0F,EAAe32J,KAAK2zJ,kBAAkBx+I,OAAO,SAAA7D,GAAI,OAAIA,EAAKu7F,eAChE7sG,KAAKoyJ,UAAU/+I,QAAQ,SAAAy1B,GAAO,OAAIA,EAAQ8tH,gBAAgB,EAAMD,S,GASxE,SAASxxC,GAAUpsG,EAAOsnB,GACtB,IAAK,IAAIx4B,EAAI,EAAGA,EAAIkR,EAAM5U,OAAQ0D,IAC9B,GAAIw4B,EAAUtnB,EAAMlR,GAAIA,EAAGkR,GACvB,OAAOlR,EAGf,OAAQ,EAOZ,SAASorJ,GAAwBvP,EAAMmT,GAC/BnT,IAASv4H,OACTu4H,EAAKoT,SAAS,EAAGD,GAIjBnT,EAAKt7H,WAAayuI,EAQ1B,SAAS3D,GAA0BxP,EAAMmT,GACjCnT,IAASv4H,OACTu4H,EAAKoT,SAASD,EAAQ,GAItBnT,EAAKhrE,YAAcm+E,EAQ3B,SAAStB,GAA2B/S,EAAYM,GAC5C,IAAQ/2I,EAAwBy2I,EAAxBz2I,IAAKC,EAAmBw2I,EAAnBx2I,OACPg3I,EAlvByB,IAivBCR,EAAXh4I,OAErB,OAAIs4I,GAAY/2I,EAAMi3I,GAAcF,GAAY/2I,EAAMi3I,EAC3C,EAEFF,GAAY92I,EAASg3I,GAAcF,GAAY92I,EAASg3I,EACtD,EAEJ,EAOX,SAASyS,GAA6BjT,EAAYK,GAC9C,IAAQ52I,EAAuBu2I,EAAvBv2I,KAAMC,EAAiBs2I,EAAjBt2I,MACR62I,EAlwByB,IAiwBAP,EAAV94I,MAErB,OAAIm5I,GAAY52I,EAAO82I,GAAcF,GAAY52I,EAAO82I,EAC7C,EAEFF,GAAY32I,EAAQ62I,GAAcF,GAAY32I,EAAQ62I,EACpD,EAEJ,EAoDX,IAAMgU,GAA8B,YAAgC,CAChEvS,SAAS,EACTwS,SAAS,I,kBAUPC,E,8BACF,WAAY3zJ,EAAS4J,GAAS,+BAC1BlN,KAAKsD,QAAUA,EAEftD,KAAKk3J,eAAiB,IAAIvpJ,IAE1B3N,KAAKm3J,eAAiB,IAAIxpJ,IAE1B3N,KAAKo3J,qBAAuB,GAE5Bp3J,KAAKq3J,iBAAmB,IAAI5pJ,IAK5BzN,KAAKs3J,mBAAqB,SAAChmJ,GAAD,OAAUA,EAAKu7F,cAKzC7sG,KAAK8rJ,YAAc,IAAIroJ,EAAA,EAKvBzD,KAAK+rJ,UAAY,IAAItoJ,EAAA,EAErBzD,KAAKg5E,OAAS,IAAIv1E,EAAA,EAKlBzD,KAAKu3J,6BAA+B,SAACjvI,GAC7B,EAAK8uI,qBAAqBjzJ,OAAS,GACnCmkB,EAAM4E,kBAIdltB,KAAKw3J,6BAA+B,SAAClvI,GAC7B,EAAK8uI,qBAAqBjzJ,OAAS,IAI/B,EAAKizJ,qBAAqBhvJ,KAAK,EAAKkvJ,qBACpChvI,EAAM4E,iBAEV,EAAK4+H,YAAYjoJ,KAAKykB,KAG9BtoB,KAAKkN,UAAYA,G,oCAGrB,SAAsB0/I,GACb5sJ,KAAKk3J,eAAe9iJ,IAAIw4I,IACzB5sJ,KAAKk3J,eAAer0J,IAAI+pJ,K,8BAIhC,SAAiBqF,GAAI,WACjBjyJ,KAAKm3J,eAAet0J,IAAIovJ,GAIS,IAA7BjyJ,KAAKm3J,eAAeh3H,MACpBngC,KAAKsD,QAAQ+nB,kBAAkB,WAG3B,EAAKne,UAAUoe,iBAAiB,YAAa,EAAKksI,6BAA8BT,Q,iCAK5F,SAAoBnK,GAChB5sJ,KAAKk3J,eAAe3kJ,OAAOq6I,K,4BAG/B,SAAeqF,GACXjyJ,KAAKm3J,eAAe5kJ,OAAO0/I,GAC3BjyJ,KAAKgqJ,aAAaiI,GACe,IAA7BjyJ,KAAKm3J,eAAeh3H,MACpBngC,KAAKkN,UAAUye,oBAAoB,YAAa3rB,KAAKw3J,6BAA8BT,M,2BAQ3F,SAAc9E,EAAM3pI,GAAK,WAErB,KAAItoB,KAAKo3J,qBAAqBnuJ,QAAQgpJ,IAAS,KAG/CjyJ,KAAKo3J,qBAAqBxzJ,KAAKquJ,GACU,IAArCjyJ,KAAKo3J,qBAAqBjzJ,QAAc,CACxC,IAAM,EAAemkB,EAAM5nB,KAAK+2J,WAAW,SAI3Cz3J,KAAKq3J,iBACAhjJ,IAAI,EAAe,WAAa,UAAW,CAC5Cg4B,QAAS,SAACpY,GAAD,OAAO,EAAK83H,UAAUloJ,KAAKowB,IACpCjM,SAAS,IAER3T,IAAI,SAAU,CACfg4B,QAAS,SAACpY,GAAD,OAAO,EAAK+kD,OAAOn1E,KAAKowB,IAGjCjM,SAAS,IAMR3T,IAAI,cAAe,CACpBg4B,QAASrsC,KAAKu3J,6BACdvvI,QAAS+uI,KAIR,GACD/2J,KAAKq3J,iBAAiBhjJ,IAAI,YAAa,CACnCg4B,QAAS,SAACpY,GAAD,OAAO,EAAK63H,YAAYjoJ,KAAKowB,IACtCjM,QAAS+uI,KAGjB/2J,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,EAAKgsI,iBAAiBhkJ,QAAQ,SAAC+kB,EAAQj3B,GACnC,EAAK+L,UAAUoe,iBAAiBnqB,EAAMi3B,EAAOiU,QAASjU,EAAOpQ,gB,0BAM7E,SAAaiqI,GACT,IAAMtoJ,EAAQ3J,KAAKo3J,qBAAqBnuJ,QAAQgpJ,GAC5CtoJ,GAAS,IACT3J,KAAKo3J,qBAAqB7uH,OAAO5+B,EAAO,GACC,IAArC3J,KAAKo3J,qBAAqBjzJ,QAC1BnE,KAAK03J,2B,wBAKjB,SAAWzF,GACP,OAAOjyJ,KAAKo3J,qBAAqBnuJ,QAAQgpJ,IAAS,I,yBAEtD,WAAW,WACPjyJ,KAAKm3J,eAAe9jJ,QAAQ,SAAAygB,GAAQ,OAAI,EAAK81H,eAAe91H,KAC5D9zB,KAAKk3J,eAAe7jJ,QAAQ,SAAAygB,GAAQ,OAAI,EAAKu/H,oBAAoBv/H,KACjE9zB,KAAK03J,wBACL13J,KAAK8rJ,YAAYhoJ,WACjB9D,KAAK+rJ,UAAUjoJ,a,mCAGnB,WAAqB,WACjB9D,KAAKq3J,iBAAiBhkJ,QAAQ,SAAC+kB,EAAQj3B,GACnC,EAAK+L,UAAUye,oBAAoBxqB,EAAMi3B,EAAOiU,QAASjU,EAAOpQ,WAEpEhoB,KAAKq3J,iBAAiB3mJ,Y,UAG9BumJ,EAAiB12J,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKy2J,GAAkB,KAAgB,KAAgB,KAAgB,OAClJA,EAAiBryJ,WAAQ,aAAmB,CAAEE,QAAS,WAAsC,OAAO,IAAImyJ,EAAiB,aAAS,KAAS,aAAS,OAAepyJ,MAAOoyJ,EAAkBrwI,WAAY,S,KAqBlM+wI,GAAiB,CACnB/P,mBAAoB,EACpBwI,gCAAiC,G,kBAK/BwH,E,8BACF,WAAY1qJ,EAAW5J,EAASgK,EAAgBo3I,GAAiB,oBAC7D1kJ,KAAKkN,UAAYA,EACjBlN,KAAKsD,QAAUA,EACftD,KAAKsN,eAAiBA,EACtBtN,KAAK0kJ,kBAAoBA,G,yBAO7B,SAAWr5I,GAAgC,IAAvB+sB,EAAuB,uDAAdu/H,GACzB,OAAO,IAAI,EAAQtsJ,EAAS+sB,EAAQp4B,KAAKkN,UAAWlN,KAAKsD,QAAStD,KAAKsN,eAAgBtN,KAAK0kJ,qB,4BAMhG,SAAer5I,GACX,OAAO,IAAI,EAAYA,EAASrL,KAAK0kJ,kBAAmB1kJ,KAAKkN,UAAWlN,KAAKsD,QAAStD,KAAKsN,oB,UAGnGsqJ,EAASr3J,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKo3J,GAAU,KAAgB,KAAW,KAAgB,KAAgB,KAAgB,KAAuB,KAAgB,MAC5LA,EAAShzJ,WAAQ,aAAmB,CAAEE,QAAS,WAA8B,OAAO,IAAI8yJ,EAAS,aAAS,KAAW,aAAS,KAAS,aAAS,KAAgB,aAAS,MAAuB/yJ,MAAO+yJ,EAAUhxI,WAAY,S,KA4BvNixI,GAAkB,IAAI,IAAe,mBAsBrCC,GAAsB,IAAI,IAAe,oBAkDzCC,GAAkB,IAAI,IAAe,mBA6BvCC,GAAmB,EAMjBC,GAAgB,IAAI,IAAe,e,kBAGnCC,E,WACF,WAEA7sJ,EAAS8sJ,EAAUrrJ,EAAoBsrJ,EAAmBnrJ,EAAMorJ,EAAQjgI,GAAM,+BAC1Ep4B,KAAKqL,QAAUA,EACfrL,KAAK8M,mBAAqBA,EAC1B9M,KAAKo4J,kBAAoBA,EACzBp4J,KAAKiN,KAAOA,EACZjN,KAAKq4J,OAASA,EAEdr4J,KAAKwD,WAAa,IAAIC,EAAA,EAMtBzD,KAAK2sB,YAAc,GAKnB3sB,KAAKgmB,GAAL,wBAA2BgyI,MAK3Bh4J,KAAK2xJ,eAAiB,kBAAM,GAE5B3xJ,KAAK4xJ,cAAgB,kBAAM,GAE3B5xJ,KAAK+lJ,QAAU,IAAI,IAInB/lJ,KAAK6lJ,QAAU,IAAI,IAKnB7lJ,KAAK8lJ,OAAS,IAAI,IAElB9lJ,KAAK6xJ,OAAS,IAAI,IAQlB7xJ,KAAKs4J,eAAiB,IAAI3qJ,IAI1B3N,KAAKu4J,aAAeJ,EAASK,eAAentJ,GAC5CrL,KAAKu4J,aAAazoJ,KAAO9P,KACrBo4B,GACAp4B,KAAKy4J,gBAAgBrgI,GAEzBp4B,KAAKu4J,aAAa5G,eAAiB,SAACM,EAAMrF,GACtC,OAAO,EAAK+E,eAAeM,EAAKniJ,KAAM88I,EAAK98I,OAE/C9P,KAAKu4J,aAAa3G,cACd,SAACjoJ,EAAOsoJ,EAAMrF,GACV,OAAO,EAAKgF,cAAcjoJ,EAAOsoJ,EAAKniJ,KAAM88I,EAAK98I,OAEzD9P,KAAK04J,4BAA4B14J,KAAKu4J,cACtCv4J,KAAK24J,cAAc34J,KAAKu4J,cACxBL,EAAYU,WAAWh1J,KAAK5D,MACxBq4J,GACAA,EAAOQ,OAAOh2J,IAAI7C,M,0CAI1B,WACI,OAAOA,KAAKmgH,aAAgBngH,KAAKq4J,QAAUr4J,KAAKq4J,OAAOrrI,U,IAE3D,SAAazrB,GAKTvB,KAAKu4J,aAAavrI,SAAWhtB,KAAKmgH,UAAY,YAAsB5+G,K,qBAGxE,SAAQ+P,GACJtR,KAAKs4J,eAAez1J,IAAIyO,GACpBtR,KAAKu4J,aAAa1rD,cAClB7sG,KAAK84J,sB,wBAIb,SAAWxnJ,GACPtR,KAAKs4J,eAAe/lJ,OAAOjB,GACvBtR,KAAKu4J,aAAa1rD,cAClB7sG,KAAK84J,sB,4BAIb,WACI,OAAOvuJ,MAAMjG,KAAKtE,KAAKs4J,gBAAgBz8I,KAAK,SAACE,EAAGC,GAK5C,OAJyBD,EAAEg9I,SAAS9C,oBAAoB+C,wBAAwBh9I,EAAE+8I,SAAS9C,qBAIjEgD,KAAKC,6BAA+B,EAAI,M,yBAG1E,WACI,IAAMvvJ,EAAQuuJ,EAAYU,WAAW3vJ,QAAQjJ,MACzC2J,GAAS,GACTuuJ,EAAYU,WAAWrwH,OAAO5+B,EAAO,GAErC3J,KAAKq4J,QACLr4J,KAAKq4J,OAAOQ,OAAOtmJ,OAAOvS,MAE9BA,KAAKs4J,eAAe5nJ,QACpB1Q,KAAKu4J,aAAa9pI,UAClBzuB,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,a,yCAGpB,SAA4Bme,GAAG,WACvBjiB,KAAKiN,MACLjN,KAAKiN,KAAK8C,OACL/L,KAAK,OAAAm1J,EAAA,GAAUn5J,KAAKiN,KAAK1L,OAAQ,OAAA0C,EAAA,GAAUjE,KAAKwD,aAChDU,UAAU,SAAA3C,GAAK,OAAI0gB,EAAIm3I,cAAc73J,KAE9C0gB,EAAIwjI,cAAcvhJ,UAAU,WACxB,IAAM2kC,EAAW,YAAY,EAAKlc,aAAaljB,IAAI,SAAAmjJ,GAC/C,MAAoB,iBAATA,EACuBsL,EAAYU,WAAWvzJ,KAAK,SAAA8mE,GAAI,OAAIA,EAAKnmD,KAAO4mI,IAM3EA,IAWX,GATI,EAAKyL,QACL,EAAKA,OAAOQ,OAAOxlJ,QAAQ,SAAAu5I,IACS,IAA5B/jH,EAAS5/B,QAAQ2jJ,IACjB/jH,EAASjlC,KAAKgpJ,MAMrB,EAAKyM,2BAA4B,CAClC,IAAMC,EAAoB,EAAKlB,kBAC1BmB,4BAA4B,EAAKluJ,SACjC5B,IAAI,SAAA+vJ,GAAU,OAAIA,EAAWC,gBAAgB72J,gBAClD,EAAK21J,aAAapF,sBAAsBmG,GAGxC,EAAKD,4BAA6B,EAEtCp3I,EAAI+K,SAAW,EAAKA,SACpB/K,EAAIstI,SAAW,EAAKA,SACpBttI,EAAIirI,gBAAkB,YAAsB,EAAKA,iBACjDjrI,EAAIwvI,mBAAqB,YAAsB,EAAKA,oBACpDxvI,EAAIyvI,eAAiB,YAAqB,EAAKA,eAAgB,GAC/DzvI,EACK0K,YAAYkc,EAAS1zB,OAAO,SAAAy3I,GAAI,OAAIA,GAAQA,IAAS,IAAMnjJ,IAAI,SAAA0iE,GAAI,OAAIA,EAAKosF,gBAC5EmB,gBAAgB,EAAKr8B,iB,2BAIlC,SAAcp7G,GAAG,WACbA,EAAIwjI,cAAcvhJ,UAAU,WACxB,EAAK40J,oBACL,EAAKhsJ,mBAAmBkK,iBAE5BiL,EAAI4jI,QAAQ3hJ,UAAU,SAAAokB,GAClB,EAAKu9H,QAAQ3jI,KAAK,CACd7J,UAAW,EACX/G,KAAMgX,EAAMhX,KAAKxB,KACjBsB,aAAckX,EAAMlX,iBAG5B6Q,EAAI6jI,OAAO5hJ,UAAU,SAAAokB,GACjB,EAAKw9H,OAAO5jI,KAAK,CACb7J,UAAW,EACX/G,KAAMgX,EAAMhX,KAAKxB,OAErB,EAAKhD,mBAAmBkK,iBAE5BiL,EAAI4vI,OAAO3tJ,UAAU,SAAAokB,GACjB,EAAKupI,OAAO3vI,KAAK,CACbrQ,cAAeyW,EAAMzW,cACrBT,aAAckX,EAAMlX,aACpBiH,UAAW,EACX/G,KAAMgX,EAAMhX,KAAKxB,SAGzBmS,EAAI8jI,QAAQ7hJ,UAAU,SAAAokB,GAClB,EAAKy9H,QAAQ7jI,KAAK,CACdrQ,cAAeyW,EAAMzW,cACrBT,aAAckX,EAAMlX,aACpBu7I,kBAAmBrkI,EAAMqkI,kBAAkB78I,KAC3CuI,UAAWiQ,EAAMjQ,UAAUvI,KAC3BwB,KAAMgX,EAAMhX,KAAKxB,KACjB28I,uBAAwBnkI,EAAMmkI,uBAC9BhF,SAAUn/H,EAAMm/H,WAIpB,EAAK36I,mBAAmBkK,mB,6BAIhC,SAAgBohB,GACZ,IAAQm3H,EAAyFn3H,EAAzFm3H,SAAUoK,EAA+EvhI,EAA/EuhI,iBAAkBzM,EAA6D90H,EAA7D80H,gBAAiB0M,EAA4CxhI,EAA5CwhI,uBAAwBC,EAAoBzhI,EAApByhI,gBAC7E75J,KAAKgtB,SAA+B,MAApB2sI,GAAmCA,EACnD35J,KAAKktJ,gBAAqC,MAAnBA,GAAkCA,EACzDltJ,KAAKyxJ,mBAA+C,MAA1BmI,GAAyCA,EACnE55J,KAAKq9H,YAAcw8B,GAAmB,WAClCtK,IACAvvJ,KAAKuvJ,SAAWA,K,+BAIxB,WACIvvJ,KAAKu4J,aAAauB,UAAU95J,KAAK+5J,iBAAiBtwJ,IAAI,SAAA6H,GAAI,OAAIA,EAAKynJ,gB,UAG3Eb,EAAY33J,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK03J,GAAa,KAAyB,KAAoB,KAAyB,IAAW,KAAyB,KAA2B,KAAyB,KAA0B,KAAyB,IAAuB,GAAI,KAAyBJ,GAAqB,IAAK,KAAyBC,GAAiB,KAC5ZG,EAAYz3J,UAAO,KAAyB,CAAEC,KAAMw3J,EAAav3J,UAAW,CAAC,CAAC,GAAI,cAAe,IAAK,CAAC,kBAAmBoC,UAAW,CAAC,EAAG,iBAAkBwV,SAAU,EAAGC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,IAC/N,KAAmB,KAAMC,EAAIokB,IAC7B,KAAmB,yBAA0BpkB,EAAIorB,SAAjD,CAA2D,yBAA0BprB,EAAI22J,aAAa1rD,aAAtG,CAAoH,0BAA2BjrG,EAAI22J,aAAatQ,iBAC/J9lJ,OAAQ,CAAEwqB,YAAa,CAAC,yBAA0B,eAAgB3G,GAAI,KAAM2rI,eAAgB,CAAC,4BAA6B,kBAAmBC,cAAe,CAAC,2BAA4B,iBAAkB5kI,SAAU,CAAC,sBAAuB,YAAakgI,gBAAiB,CAAC,6BAA8B,mBAAoBuE,mBAAoB,CAAC,gCAAiC,sBAAuBp0B,YAAa,CAAC,yBAA0B,eAAgBkyB,SAAU,CAAC,sBAAuB,YAAaz/I,KAAM,CAAC,kBAAmB,QAAS4hJ,eAAgB,CAAC,4BAA6B,mBAAqBvvI,QAAS,CAAE4jI,QAAS,qBAAsBF,QAAS,qBAAsBC,OAAQ,oBAAqB+L,OAAQ,qBAAuBn5I,SAAU,CAAC,eAAgBpW,SAAU,CAAC,KAA0B,CAE1xB,CAAEC,QAASu1J,GAAqBl/I,cAzOjCnU,GA0OC,CAAElC,QAAS01J,GAAez1J,YAAa01J,QAGnDA,EAAYU,WAAa,G,KAqHnBoB,GAAkB,IAAI,IAAe,iBAiErCC,GAAuB,IAAI,IAAe,sBAwC1CC,GAAmB,IAAI,IAAe,kB,kBA4CtCC,E,WACF,WAEA9uJ,EAEAm/I,EAKAt9I,EAAW5J,EAASse,EAAmBwW,EAAQnrB,EAAMkrJ,EAAUrrJ,EAAoBstJ,EAAaC,GAAW,+BACvGr6J,KAAKqL,QAAUA,EACfrL,KAAKwqJ,cAAgBA,EACrBxqJ,KAAKsD,QAAUA,EACftD,KAAK4hB,kBAAoBA,EACzB5hB,KAAKiN,KAAOA,EACZjN,KAAK8M,mBAAqBA,EAC1B9M,KAAKo6J,YAAcA,EACnBp6J,KAAKq6J,YAAcA,EACnBr6J,KAAKwD,WAAa,IAAIC,EAAA,EAEtBzD,KAAK0lJ,QAAU,IAAI,IAEnB1lJ,KAAK2lJ,SAAW,IAAI,IAEpB3lJ,KAAK4lJ,MAAQ,IAAI,IAEjB5lJ,KAAK6lJ,QAAU,IAAI,IAEnB7lJ,KAAK8lJ,OAAS,IAAI,IAElB9lJ,KAAK+lJ,QAAU,IAAI,IAKnB/lJ,KAAKgmJ,MAAQ,IAAIxrB,EAAA,EAAW,SAACpuF,GACzB,IAAM4nE,EAAe,EAAK+kD,SAAS/S,MAAMhiJ,KAAK,OAAAyF,EAAA,GAAI,SAAA6wJ,GAAU,MAAK,CAC7D/zI,OAAQ,EACRggI,gBAAiB+T,EAAW/T,gBAC5Bj+H,MAAOgyI,EAAWhyI,MAClBg9C,MAAOg1F,EAAWh1F,MAClBmiF,SAAU6S,EAAW7S,aACpBvjJ,UAAUkoC,GACf,OAAO,WACH4nE,EAAap+F,iBAGrB5V,KAAK+4J,SAAWZ,EAASoC,WAAWlvJ,EAAS,CACzCu8I,mBAAoBxvH,GAAuC,MAA7BA,EAAOwvH,mBACjCxvH,EAAOwvH,mBAAqB,EAChCwI,gCAAiCh4H,GAAoD,MAA1CA,EAAOg4H,gCAC9Ch4H,EAAOg4H,gCAAkC,EAC7C3kJ,OAAQ2sB,aAAuC,EAASA,EAAO3sB,SAEnEzL,KAAK+4J,SAASjpJ,KAAO9P,KAIrBm6J,EAAQhD,eAAevzJ,KAAK5D,MACxBo4B,GACAp4B,KAAKy4J,gBAAgBrgI,GASrBoyH,IACAxqJ,KAAK+4J,SAAS5E,mBAAmB3J,EAAc+N,cAC/C/N,EAAcgQ,QAAQx6J,OAE1BA,KAAKy6J,YAAYz6J,KAAK+4J,UACtB/4J,KAAK24J,cAAc34J,KAAK+4J,U,0CAG5B,WACI,OAAO/4J,KAAKmgH,WAAcngH,KAAKwqJ,eAAiBxqJ,KAAKwqJ,cAAcx9H,U,IAEvE,SAAazrB,GACTvB,KAAKmgH,UAAY,YAAsB5+G,GACvCvB,KAAK+4J,SAAS/rI,SAAWhtB,KAAKmgH,Y,mCAMlC,WACI,OAAOngH,KAAK+4J,SAASpQ,0B,4BAGzB,WACI,OAAO3oJ,KAAK+4J,SAASnQ,mB,mBAGzB,WACI5oJ,KAAK+4J,SAAS/7B,U,iCAKlB,WACI,OAAOh9H,KAAK+4J,SAAS2B,wB,6BAEzB,WAAe,WAKX16J,KAAKsD,QAAQoB,SACRV,KAAK,OAAAW,EAAA,GAAK,GAAI,OAAAV,EAAA,GAAUjE,KAAKwD,aAC7BU,UAAU,WACX,EAAKy2J,qBAEL,EAAKtV,SAASpgJ,QAAQjB,KAAK,OAAAm1J,EAAA,GAAU,EAAK9T,UAE1C,OAAAviB,EAAA,GAAI,SAAC+lB,GACD,IAAM+R,EAAsB/R,EACvB1zI,OAAO,SAAAgxI,GAAM,OAAIA,EAAOkU,cAAgB,IACxC5wJ,IAAI,SAAA08I,GAAM,OAAIA,EAAO96I,UAItB,EAAK+uJ,aAAe,EAAKS,qBACzBD,EAAoBh3J,KAAK,EAAKyH,SAElC,EAAK0tJ,SAAS+B,YAAYF,KAG9B,OAAA13B,EAAA,GAAU,SAAC2lB,GACP,OAAOxrI,EAAA,EAAK,WAAL,cAASwrI,EAAQp/I,IAAI,SAAA6H,GACxB,OAAOA,EAAKypJ,cAAc/2J,KAAK,OAAAm1J,EAAA,GAAU7nJ,UAE7C,OAAArN,EAAA,GAAU,EAAKT,aAAaU,UAAU,SAAA82J,GAEtC,IAAMC,EAAU,EAAKlC,SACf5S,EAAS6U,EAAe3vJ,QAAQzI,cACtCo4J,EAAehuI,SAAWiuI,EAAQC,cAAc/U,GAAU8U,EAAQE,aAAahV,KAE/E,EAAKiV,kBACL,EAAKrC,SAASnI,oBAAoB,EAAKwK,sB,yBAInD,SAAYn2J,GACR,IAAMo2J,EAAqBp2J,EAAO,oBAC5Bq2J,EAAiBr2J,EAAO,iBAG1Bo2J,IAAuBA,EAAmBE,aAC1Cv7J,KAAK26J,qBAGLW,IAAmBA,EAAeC,aAAev7J,KAAKo7J,kBACtDp7J,KAAK+4J,SAASnI,oBAAoB5wJ,KAAKo7J,oB,yBAG/C,WACQp7J,KAAKwqJ,eACLxqJ,KAAKwqJ,cAAcgR,WAAWx7J,MAElC,IAAM2J,EAAQwwJ,EAAQhD,eAAeluJ,QAAQjJ,MACzC2J,GAAS,GACTwwJ,EAAQhD,eAAe5uH,OAAO5+B,EAAO,GAEzC3J,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,WAChB9D,KAAK+4J,SAAStqI,Y,gCAGlB,WACI,IAAMpjB,EAAUrL,KAAKqL,QAAQzI,cACvBqmJ,EAAcjpJ,KAAK66J,oBACrBY,GAA2BpwJ,EAASrL,KAAK66J,qBAAuBxvJ,EAIpErL,KAAK+4J,SAAS3Q,gBAAgBa,GAAe59I,K,iCAGjD,WACI,IAAMqwJ,EAAW17J,KAAKspJ,gBACtB,OAAKoS,EAGmB,iBAAbA,EACAD,GAA2Bz7J,KAAKqL,QAAQzI,cAAe84J,GAElD,YAAcA,GALnB,O,yBAaf,SAAYz5I,GAAG,WACXA,EAAIwjI,cAAcvhJ,UAAU,WACxB,IAAK+d,EAAI4qF,aAAc,CACnB,IAAMvhG,EAAM,EAAK2B,KACXu4I,EAAiB,EAAKA,eACtBmF,EAAc,EAAK3B,qBAAuB,CAC5C1oJ,SAAU,EAAK0oJ,qBAAqBpiJ,YACpC4K,QAAS,EAAKw3I,qBAAqBl5I,KACnCrD,cAAe,EAAKmV,mBACpB,KACE6oI,EAAU,EAAK1B,iBAAmB,CACpCzoJ,SAAU,EAAKyoJ,iBAAiBniJ,YAChC4K,QAAS,EAAKu3I,iBAAiBj5I,KAC/Bu8I,UAAW,EAAKtD,iBAAiBsD,UACjC5/I,cAAe,EAAKmV,mBACpB,KACJK,EAAI+K,SAAW,EAAKA,SACpB/K,EAAIstI,SAAW,EAAKA,SACpBttI,EAAIujI,eAA4C,iBAAnBA,GAA+BA,EACxDA,EAAiB,YAAqBA,GAC1CvjI,EAAIutI,kBAAoB,EAAKA,kBAC7BvtI,EAAIsrI,aAAe,EAAKA,aACxBtrI,EACK05I,oBAAoB,EAAKC,uBACzBC,wBAAwBlR,GACxBmR,oBAAoBrR,GACrBn/I,GACA2W,EAAIm3I,cAAc9tJ,EAAI/J,UAKlC0gB,EAAIwjI,cAAczhJ,KAAK,OAAAW,EAAA,GAAK,IAAIT,UAAU,WACtC,IAAIyG,EAAIC,EAER,GAAI,EAAKyvJ,YACLp4I,EAAIomI,WAAW,EAAKgS,YAAYtB,eAMpC,IADA,IAAInyH,EAAS,EAAKv7B,QAAQzI,cAAcgmC,cACjChC,GAAQ,CAEX,GAAgC,QAA3Bj8B,EAAKi8B,EAAOjkC,iBAA8B,IAAPgI,OAAgB,EAASA,EAAGiiB,SApP5D,YAoPuF,CAC3F3K,EAAIomI,YAEI,QAFSz9I,EAAKuvJ,EAAQhD,eAAe9xJ,KAAK,SAAA4sJ,GAC9C,OAAOA,EAAK5mJ,QAAQzI,gBAAkBgkC,WACnB,IAAPh8B,OAAgB,EAASA,EAAGmuJ,WAAa,MACzD,MAEJnyH,EAASA,EAAOgC,mB,2BAK5B,SAAc3mB,GAAG,WACbA,EAAIyjI,QAAQxhJ,UAAU,WAClB,EAAKwhJ,QAAQxjI,KAAK,CAAEqE,OAAQ,IAG5B,EAAKzZ,mBAAmBkK,iBAE5BiL,EAAI0jI,SAASzhJ,UAAU,WACnB,EAAKyhJ,SAASzjI,KAAK,CAAEqE,OAAQ,MAEjCtE,EAAI2jI,MAAM1hJ,UAAU,SAAAokB,GAChB,EAAKs9H,MAAM1jI,KAAK,CAAEqE,OAAQ,EAAMkhI,SAAUn/H,EAAMm/H,WAGhD,EAAK36I,mBAAmBkK,iBAE5BiL,EAAI4jI,QAAQ3hJ,UAAU,SAAAokB,GAClB,EAAKu9H,QAAQ3jI,KAAK,CACd7J,UAAWiQ,EAAMjQ,UAAUvI,KAC3BwB,KAAM,EACNF,aAAckX,EAAMlX,iBAG5B6Q,EAAI6jI,OAAO5hJ,UAAU,SAAAokB,GACjB,EAAKw9H,OAAO5jI,KAAK,CACb7J,UAAWiQ,EAAMjQ,UAAUvI,KAC3BwB,KAAM,MAGd2Q,EAAI8jI,QAAQ7hJ,UAAU,SAAAokB,GAClB,EAAKy9H,QAAQ7jI,KAAK,CACdrQ,cAAeyW,EAAMzW,cACrBT,aAAckX,EAAMlX,aACpBu7I,kBAAmBrkI,EAAMqkI,kBAAkB78I,KAC3CuI,UAAWiQ,EAAMjQ,UAAUvI,KAC3B28I,uBAAwBnkI,EAAMmkI,uBAC9Bn7I,KAAM,EACNm2I,SAAUn/H,EAAMm/H,e,6BAK5B,SAAgBrvH,GACZ,IAAQm3H,EAAsHn3H,EAAtHm3H,SAAU/J,EAA4GptH,EAA5GotH,eAAgBgK,EAA4Fp3H,EAA5Fo3H,kBAAmBjC,EAAyEn1H,EAAzEm1H,aAAcjE,EAA2DlxH,EAA3DkxH,gBAAiBqQ,EAA0CvhI,EAA1CuhI,iBAAkBkB,EAAwBziI,EAAxByiI,oBACtG76J,KAAKgtB,SAA+B,MAApB2sI,GAAmCA,EACnD35J,KAAKwlJ,eAAiBA,GAAkB,EACpC+J,IACAvvJ,KAAKuvJ,SAAWA,GAEhBC,IACAxvJ,KAAKwvJ,kBAAoBA,GAEzBjC,IACAvtJ,KAAKutJ,aAAeA,GAEpBjE,IACAtpJ,KAAKspJ,gBAAkBA,GAEvBuR,IACA76J,KAAK66J,oBAAsBA,O,UAIvCV,EAAQ55J,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAK25J,GAAS,KAAyB,KAAoB,KAAyBlC,GAAe,IAAK,KAAyB,KAAW,KAAyB,KAAgB,KAAyB,KAA0B,KAAyBF,GAAiB,GAAI,KAAyB,IAAuB,GAAI,KAAyB,IAAW,KAAyB,KAA2B,KAAyBiC,GAAiB,IAAK,KAAyBnC,GAAiB,MACpjBsC,EAAQ15J,UAAO,KAAyB,CAAEC,KAAMy5J,EAASx5J,UAAW,CAAC,CAAC,GAAI,UAAW,KAAMe,eAAgB,SAAgCC,EAAIC,EAAKC,GAK5I,IAAIC,EAL6J,EAALH,IAC5J,KAAsBE,EAAUq4J,GAAkB,GAClD,KAAsBr4J,EAAUo4J,GAAsB,GACtD,KAAsBp4J,EAAUm4J,GAAiB,IAC1C,EAALr4J,IAEF,KAAsBG,EAAK,UAA0BF,EAAImnJ,iBAAmBjnJ,EAAGE,OAC/E,KAAsBF,EAAK,UAA0BF,EAAIonJ,qBAAuBlnJ,EAAGE,OACnF,KAAsBF,EAAK,UAA0BF,EAAIyjJ,SAAWvjJ,KACnEiB,UAAW,CAAC,EAAG,YAAawV,SAAU,EAAGC,aAAc,SAA8B7W,EAAIC,GAAgB,EAALD,GACrG,KAAmB,oBAAqBC,EAAIorB,SAA5C,CAAsD,oBAAqBprB,EAAIm3J,SAASlsD,eACvF1qG,OAAQ,CAAE6qB,SAAU,CAAC,kBAAmB,YAAaw4H,eAAgB,CAAC,oBAAqB,kBAAmB+J,SAAU,CAAC,kBAAmB,YAAaC,kBAAmB,CAAC,2BAA4B,qBAAsBjC,aAAc,CAAC,sBAAuB,gBAAiBjE,gBAAiB,CAAC,kBAAmB,mBAAoBuR,oBAAqB,CAAC,qBAAsB,uBAAwB/qJ,KAAM,CAAC,cAAe,QAASsrJ,iBAAkB,CAAC,0BAA2B,qBAAuBj5I,QAAS,CAAEujI,QAAS,iBAAkBC,SAAU,kBAAmBC,MAAO,eAAgBC,QAAS,iBAAkBC,OAAQ,gBAAiBC,QAAS,iBAAkBC,MAAO,gBAAkBttI,SAAU,CAAC,WAAYpW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAASs1J,GAAiBr1J,YAAa23J,KAAa,QACrzBA,EAAQhD,eAAiB,G,KAyIzB,SAASsE,GAA2BpwJ,EAASipC,GAEzC,IADA,IAAIynH,EAAiB1wJ,EAAQu9B,cACtBmzH,GAAgB,CAEnB,GAAIA,EAAe9wH,QAAU8wH,EAAe9wH,QAAQqJ,GAChDynH,EAAepnH,kBAAkBL,GACjC,OAAOynH,EAEXA,EAAiBA,EAAenzH,cAEpC,OAAO,K,sBAULozH,E,sDAENA,EAAez7J,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKw7J,IAC5EA,EAAe9iJ,UAAO,KAAwB,CAAExY,KAAMs7J,IACtDA,EAAe7iJ,UAAO,KAAwB,CAAEgZ,UAAW,CACnD,IACD/Y,QAAS,CAAC,O,oWClhHX,SAAUsuH,EAASu0B,EAAS92B,GAAqD,IAArC+2B,EAAqC,uDAAxBvtJ,OAAOwtJ,kBAClE,MAA8B,mBAAnBh3B,EACA,SAAC5+G,GAAD,OAAYA,EAAOviB,KAAK0jI,EAAS,SAAC3rH,EAAGlU,GAAJ,OAAU,YAAKo0J,EAAQlgJ,EAAGlU,IAAI7D,KAAK,YAAI,SAACgY,EAAGogJ,GAAJ,OAAWj3B,EAAeppH,EAAGC,EAAGnU,EAAGu0J,OAAOF,MAE1F,iBAAnB/2B,IACZ+2B,EAAa/2B,GAEV,SAAC5+G,GAAD,OAAYA,EAAO8V,KAAK,IAAIggI,EAAiBJ,EAASC,MAE1D,IAAMG,EAAb,8BACI,WAAYJ,GAA8C,IAArCC,EAAqC,uDAAxBvtJ,OAAOwtJ,kBAAiB,oBACtDn8J,KAAKi8J,QAAUA,EACfj8J,KAAKk8J,WAAaA,GAH1B,mBAKI,SAAK9vH,EAAU7lB,GACX,OAAOA,EAAOriB,UAAU,IAAIo4J,EAAmBlwH,EAAUpsC,KAAKi8J,QAASj8J,KAAKk8J,iBANpF,GASaI,EAAb,YACI,WAAY7/H,EAAaw/H,GAA8C,MAArCC,EAAqC,uDAAxBvtJ,OAAOwtJ,kBAAiB,4BACnE,YAAM1/H,KACDw/H,QAAUA,EACf,EAAKC,WAAaA,EAClB,EAAKK,cAAe,EACpB,EAAKC,OAAS,GACd,EAAK1gJ,OAAS,EACd,EAAKnS,MAAQ,EAPsD,EAD3E,0DAUI,SAAMpI,GACEvB,KAAK8b,OAAS9b,KAAKk8J,WACnBl8J,KAAKy8J,SAASl7J,GAGdvB,KAAKw8J,OAAO54J,KAAKrC,KAf7B,sBAkBI,SAASA,GACL,IAAIq7B,EACEjzB,EAAQ3J,KAAK2J,QACnB,IACIizB,EAAS58B,KAAKi8J,QAAQ16J,EAAOoI,GAEjC,MAAOgzB,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAG3B38B,KAAK8b,SACL9b,KAAK08J,UAAU9/H,KA7BvB,uBA+BI,SAAU+/H,GACN,IAAMC,EAAkB,IAAI,IAAsB58J,MAC5Cy8B,EAAcz8B,KAAKy8B,YACzBA,EAAY55B,IAAI+5J,GAChB,IAAM5b,EAAoB,YAAe2b,EAAKC,GAC1C5b,IAAsB4b,GACtBngI,EAAY55B,IAAIm+I,KArC5B,uBAwCI,WACIhhJ,KAAKu8J,cAAe,EACA,IAAhBv8J,KAAK8b,QAAuC,IAAvB9b,KAAKw8J,OAAOr4J,QACjCnE,KAAKy8B,YAAY34B,WAErB9D,KAAK4V,gBA7Cb,wBA+CI,SAAWu+F,GACPn0G,KAAKy8B,YAAY54B,KAAKswG,KAhD9B,4BAkDI,WACI,IAAMqoD,EAASx8J,KAAKw8J,OACpBx8J,KAAK8b,SACD0gJ,EAAOr4J,OAAS,EAChBnE,KAAK68J,MAAML,EAAO7nJ,SAEG,IAAhB3U,KAAK8b,QAAgB9b,KAAKu8J,cAC/Bv8J,KAAKy8B,YAAY34B,eAzD7B,CAAwC,KA6D3Bg5J,EAAUp1B,G,wBCzEd,SAAUrlH,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFL,MACxF,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,6CAA6ChB,MAAM,KAC7DiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVutB,cAAe,8BACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,SAAbC,EACOD,EACa,cAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbC,GAAsC,UAAbA,EACzBD,EAAO,QADX,GAIXC,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGf96B,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNC,EAAG,gBACHC,GAAI,UACJ/B,EAAG,UACHgC,GAAI,WACJC,EAAG,QACHC,GAAI,SACJhN,EAAG,SACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/gB,CAAQ,EAAQ,U,wBCGjD,SAAUud,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gXAAyEL,MAC7E,KAEJM,YACI,gXAAyEN,MACrE,KAERgB,SAAU,yPAAiDhB,MAAM,KACjEiB,cAAe,2EAAoBjB,MAAM,KACzCkB,YAAa,2EAAoBlB,MAAM,KACvCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVutB,cAAe,gEACfmuF,KAAM,SAAUnhF,GACZ,MAAiB,mCAAVA,GAEX7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,iCAEA,kCAGfxtB,SAAU,CACNC,QAAS,2EACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,iFACTC,SAAU,oGACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,uBACRC,KAAM,uBACNC,EAAG,uFACHC,GAAI,0CACJ/B,EAAG,6CACHgC,GAAI,8BACJC,EAAG,6CACHC,GAAI,8BACJhN,EAAG,6CACHiN,GAAI,8BACJG,EAAG,iCACHC,GAAI,kBACJC,EAAG,mDACHC,GAAI,qCAERC,uBAAwB,sBACxBC,QAAS,iBACT4rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAGzB3rB,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyB/gB,CAAQ,EAAQ,U,oCCN1D,gDACM,SAAUiR,EAAagI,GACzB,QAASA,IAAQA,aAAe,KAAmC,mBAAbA,EAAIse,MAAgD,mBAAlBte,EAAI7Z,a,wBCQvF,SAAUme,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACT6B,EAAG,CAAC,kBAAgB,iBAAe,iBACnCC,GAAI,CAACa,EAAS,UAAWA,EAAS,YAClC5C,EAAG,CAAC,gBAAc,gBAClBgC,GAAI,CAACY,EAAS,UAAWA,EAAS,YAClCX,EAAG,CAAC,eAAa,YAAa,eAC9BC,GAAI,CAACU,EAAS,SAAUA,EAAS,UACjC1N,EAAG,CAAC,kBAAa,kBACjBoN,EAAG,CAAC,UAAW,WAAY,cAC3BC,GAAI,CAACK,EAAS,OAAQA,EAAS,SAC/BJ,EAAG,CAAC,eAAa,QAAS,gBAC1BC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAIs3I,EACOj6I,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAElDqhD,EAAWj7C,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAG1C0F,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gGAA6FL,MACjG,KAEJM,YACI,gEAA6DN,MAAM,KACvEgB,SACI,sFAAiEhB,MAC7D,KAERiB,cAAe,gBAAgBjB,MAAM,KACrCkB,YAAa,gBAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,eACRC,KAAM,YACNC,EAAGm4I,EACHl4I,GAAIk4I,EACJj6I,EAAGi6I,EACHj4I,GAAIi4I,EACJh4I,EAAGg4I,EACH/3I,GAAI+3I,EACJ/kJ,EAAG+kJ,EACH93I,GAAI,cACJG,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB/gB,CAAQ,EAAQ,U,wBCEjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/gB,CAAQ,EAAQ,U,gLCO1D,SAASm4J,EAAmEt7J,EAAIC,IAChF,IAAMnC,EAAM,SAAUshD,GAAM,MAAO,CAAEvD,SAAUuD,IACzCrhD,EAAM,SAAU8sC,GAAM,MAAO,CAAEjrC,MAAO,IAAKuoF,OAAQt9C,IACzD,SAAS0wH,EAA2Dv7J,EAAIC,GAEtE,GAFsF,EAALD,GAC/E,KAAiB,EAAG,MAAO,IACpB,EAALA,EAAQ,CACV,IAAMw7J,EAAY,OAAuBnrJ,UACzC,KAAkB,YAAa,KAAuB,EAAGtS,EAAK,KAAuB,EAAGD,EAAK09J,EAAU3/G,SAAW,SAEtH,SAAS4/G,EAAqDz7J,EAAIC,GAOhE,GAPgF,EAALD,IACzE,KAAsB,EAAG,OACzB,KAAsB,EAAG,MAAO,IAChC,KAAkB,EAAGs7J,EAAoE,EAAG,EAAG,cAAe,IAC9G,KAAkB,EAAGC,EAA4D,EAAG,EAAG,MAAO,IAC9F,OACA,QACO,EAALv7J,EAAQ,CACV,IAAMw7J,EAAYv7J,EAAIoQ,UACtB,KAAkB,eAAWvN,GAC7B,KAAiB,GACjB,KAAkB,UAAW04J,EAAUz8J,MAAQ,QAA/C,CAAwD,eAAW+D,GACnE,KAAiB,GACjB,KAAkB,QAAS04J,GAC3B,KAAiB,GACjB,KAAkB,OAAQA,EAAUjuC,YAExC,SAASmuC,EAA+C17J,EAAIC,GAAgB,EAALD,GACnE,KAAkB,EAAGy7J,EAAsD,EAAG,EAAG,MAAO,GACjF,EAALz7J,GAEF,KAAkB,UADAC,EAAIoQ,WAG1B,SAASsrJ,EAAgD37J,EAAIC,GAAgB,EAALD,GACpE,KAA0B,GAE9B,SAAS47J,EAAgD57J,EAAIC,GAAgB,EAALD,GACpE,KAA0B,GAE9B,SAAS67J,EAAgD77J,EAAIC,GAAgB,EAALD,GACpE,KAA0B,GAE9B,SAAS87J,EAAiD97J,EAAIC,GAAgB,EAALD,GACrE,KAA0B,GAE9B,SAAS+7J,EAAiD/7J,EAAIC,GAAgB,EAALD,GACrE,KAA0B,GAE9B,SAASg8J,EAAiDh8J,EAAIC,GAAgB,EAALD,GACrE,KAA0B,GAE9B,IAAM2vG,EAAM,SAAUvwD,GAAM,MAAO,CAAE/uC,UAAW+uC,IAChD,SAAS68G,EAA0Cj8J,EAAIC,GAIrD,GAJqE,EAALD,IAC9D,KAAsB,EAAG,MAAO,GAChC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAiB,GACjB,KAAyBA,EAAO43I,MAAMC,U,IAEpCC,E,8BAKF,WAAY3lI,EAAQ4lI,GAAa,oBAC7Bh+J,KAAKi+J,SAAW,IAAI,IACpBj+J,KAAKkvH,UAAY92F,EAAO82F,UACxBlvH,KAAKw9C,SAAWplB,EAAOolB,SAAW,EAAIplB,EAAOolB,SAAW,EACxDx9C,KAAKwpF,KAAOpxD,EAAOoxD,KACnBxpF,KAAK89J,QAAU1lI,EAAO0lI,QACtB99J,KAAKU,KAAO03B,EAAO13B,KACnBV,KAAKif,UAAYmZ,EAAOnZ,UACxBjf,KAAKk+J,eAAiBF,EACtBh+J,KAAKm+J,e,oBAKT,WACI,OAAOn+J,KAAKi+J,SAAShmI,iB,mBAMzB,SAAM2E,GACG58B,KAAKi+J,SAASz2I,SACfxnB,KAAKi+J,SAASp6J,KAAK+4B,GACnB58B,KAAKi+J,SAASn6J,YAElB9D,KAAKk+J,eAAel+J,MACpBA,KAAKo+J,kB,yBAMT,WAAW,WACHp+J,KAAKkvH,WAAalvH,KAAKw9C,SAAW,IAClCx9C,KAAKq+J,WAAaz5H,WAGlB,kBAAM,EAAKU,SAAUtlC,KAAKw9C,a,2BAOlC,WACQx9C,KAAKq+J,YACLn6H,aAAalkC,KAAKq+J,gB,GAwCxBC,EAAmB,YAAW,SAAU,CAC1C,YAAM,KAAM,cAAgB,CAAElqI,UAAU,MAGtCmqI,EAAqB,YAAW,YAAa,CAC/C,YAAM,CAAE/zJ,OAAQ,EAAGk3B,QAAS,EAAG,aAAc,IAC7C,YAAQ,IAAK,YAAM,CAAEl3B,OAAQ,IAAKk3B,QAAS,EAAG,aAAc,YAG1D88H,EAAsB,YAAW,YAAa,CAChD,YAAM,CAAEh0J,OAAQ,IAAKk3B,QAAS,EAAG,aAAc,SAC/C,YAAQ,IAAK,YAAM,CAAEl3B,OAAQ,EAAGk3B,QAAS,EAAG,aAAc,OAGxD+8H,EAAqB,YAAW,YAAa,CAC/C,YAAM,CAAE/0J,MAAO,EAAGg4B,QAAS,IAC3B,YAAQ,eAAgB,YAAM,CAAEh4B,MAAO,OAAQg4B,QAAS,O,iBAEtDg9H,E,8BAIF,WAAY1vC,GAAe,oBACvBhvH,KAAKgvH,gBAAkBA,EACvBhvH,KAAK2+J,GAAK,GACV3+J,KAAK4+J,GAAK,GACV5+J,KAAK6+J,GAAK,GACV7+J,KAAK8+J,GAAK,GACV9+J,KAAK++J,GAAK,GACV/+J,KAAKg/J,GAAK,I,kBAMd,SAAI5mI,GAAM,WAEA6mI,EAAaj/J,KAAKk/J,eAAe9mI,EAAOpuB,UAC9C,GAAIouB,EAAO+mI,mBAAqBn/J,KAAKo/J,aAAaH,EAAY7mI,GAC1D,OAAO,KAGX,IAAMylI,EAAQ,IAAIE,EAAM3lI,EAIxB,SAAC53B,GAAD,OAAO,EAAKi1B,QAAQwpI,EAAYz+J,KAGhC,OAFAy+J,EAAWr7J,KAAKi6J,GAChB79J,KAAKgvH,gBAAgBxtG,gBACdq8I,I,qBAQX,SAAQoB,EAAYpB,GAChBoB,EAAW12H,OAAO02H,EAAWh2J,QAAQ40J,GAAQ,GAC7C79J,KAAKgvH,gBAAgBxtG,kB,0BAQzB,SAAay9I,EAAY7mI,GACrB,OAAO6mI,EAAW72J,KAIlB,SAAA5H,GACI,OAAOA,EAAEE,OAAS03B,EAAO13B,MAClBF,EAAEye,YAAcmZ,EAAOnZ,WACvBze,EAAEs9J,UAAY1lI,EAAO0lI,SACrBt9J,EAAEgpF,OAASpxD,EAAOoxD,S,4BAQjC,SAAex/E,GACX,OAAQA,GACJ,IAAK,WACD,OAAOhK,KAAK2+J,GAChB,IAAK,aACD,OAAO3+J,KAAK4+J,GAChB,IAAK,YACD,OAAO5+J,KAAK6+J,GAChB,IAAK,cACD,OAAO7+J,KAAK8+J,GAChB,IAAK,gBACD,OAAO9+J,KAAK++J,GAChB,QACI,OAAO/+J,KAAKg/J,Q,UAI5BN,EAAwBn+J,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKk+J,GAAyB,KAAyB,OAChJA,EAAwBv4J,UAAO,KAAyB,CAAEzF,KAAMg+J,EAAyB/9J,UAAW,CAAC,CAAC,iBAAkByF,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,aAAc,IAAK,CAAC,EAAG,iBAAkB,CAAC,EAAG,cAAe,cAAe,CAAC,EAAG,mBAAoB,2BAA4B,CAAC,EAAG,cAAe,YAAa,CAAC,EAAG,cAAe,aAAc,CAAC,EAAG,cAAe,iBAAkB,CAAC,EAAG,cAAe,eAAgB,CAAC,EAAG,cAAe,gBAAiB,CAAC,EAAG,QAAS,WAAY,CAAC,EAAG,aAAc,EAAG,WAAY,CAAC,eAAgB,GAAI,EAAG,SAAU,CAAC,QAAS,oBAAqB,OAAQ,cAAe,EAAG,QAAS,CAAC,OAAQ,cAAe,EAAG,sBAAuBhG,SAAU,SAA0CqB,EAAIC,GAsBrsB,GAtBqtB,EAALD,IAC9sB,KAAkB,EAAG07J,EAAgD,EAAG,EAAG,cAAe,KAAM,EAAG,MACnG,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGC,EAAiD,EAAG,EAAG,eAAgB,GAC5F,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGC,EAAiD,EAAG,EAAG,eAAgB,GAC5F,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGC,EAAiD,EAAG,EAAG,eAAgB,GAC5F,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,GAAIC,EAAkD,EAAG,EAAG,eAAgB,GAC9F,OACA,KAAsB,GAAI,MAAO,GACjC,KAAkB,GAAIC,EAAkD,EAAG,EAAG,eAAgB,GAC9F,OACA,KAAsB,GAAI,MAAO,GACjC,KAAkB,GAAIC,EAAkD,EAAG,EAAG,eAAgB,GAC9F,OACA,QACO,EAALh8J,EAAQ,CACV,IAAM0xG,EAAM,KAAmB,GAC/B,KAAiB,GACjB,KAAkB,mBAAoBA,EAAtC,CAA2C,0BAA2B,KAAuB,GAAI/B,EAAK1vG,EAAIg9J,KAC1G,KAAiB,GACjB,KAAkB,mBAAoBvrD,EAAtC,CAA2C,0BAA2B,KAAuB,GAAI/B,EAAK1vG,EAAI+8J,KAC1G,KAAiB,GACjB,KAAkB,mBAAoBtrD,EAAtC,CAA2C,0BAA2B,KAAuB,GAAI/B,EAAK1vG,EAAIi9J,KAC1G,KAAiB,GACjB,KAAkB,mBAAoBxrD,EAAtC,CAA2C,0BAA2B,KAAuB,GAAI/B,EAAK1vG,EAAIm9J,KAC1G,KAAiB,GACjB,KAAkB,mBAAoB1rD,EAAtC,CAA2C,0BAA2B,KAAuB,GAAI/B,EAAK1vG,EAAIk9J,KAC1G,KAAiB,GACjB,KAAkB,mBAAoBzrD,EAAtC,CAA2C,0BAA2B,KAAuB,GAAI/B,EAAK1vG,EAAIo9J,OACzGz4J,WAAY,WAAc,MAAO,CAAC,IAAyB,IAAgB,IAAgB84J,EAAuB,MAAiBvmJ,OAAQ,CAAC,0uFAA+uFhJ,KAAM,CAAE6zB,UAAW,CAC34F,YAAQ,SAAU,CAAC26H,IACnB,YAAQ,SAAU,CAACC,EAAoBC,IACvC,YAAQ,WAAY,CAACC,MACpBz1I,gBAAiB,I,sBA6CxBs2I,E,8BAQF,WAAYC,EAAiBryJ,EAAWsyJ,EAAkBl/I,EAASulB,GAAS,oBACxE7lC,KAAKkN,UAAYA,EACjBlN,KAAKw/J,iBAAmBA,EACxBx/J,KAAKsgB,QAAUA,EACftgB,KAAK6lC,UAAYA,EACjB7lC,KAAK6uH,UAAY0wC,EAAgB7nC,eAAe,KAAM,O,gBAK1D,WAII,OAHK13H,KAAKy/J,eACNz/J,KAAK0/J,UAEF1/J,KAAKy/J,gB,4BAMhB,WAMI,OALKz/J,KAAK2/J,oBACN3/J,KAAK2/J,kBAAoB3/J,KAAK6uH,UAAUh3G,cAAc,OACtD7X,KAAK6uH,UAAU4B,SAASzwH,KAAK2/J,kBAhCN,mBAiCvB3/J,KAAK6uH,UAAU/2G,YAAY9X,KAAKkN,UAAU41B,KAAM9iC,KAAK2/J,oBAElD3/J,KAAK2/J,oB,yBAKhB,WACI3/J,KAAK4/J,UACL5/J,KAAK6/J,sB,qBAMT,WACI7/J,KAAK4/J,UAEL,IAAM9+I,EAAmB9gB,KAAKw/J,iBAAiBz+I,wBAAwB29I,GACvE1+J,KAAKy/J,cAAgB3+I,EAAiBxb,OAAOtF,KAAK6lC,WAElD,IAAMzkB,EAA8BphB,KAAKy/J,cAAcr+I,SACvDphB,KAAKsgB,QAAQa,WAAWC,GAGxBphB,KAAK6uH,UAAU/2G,YAAY9X,KAAK8/J,iBADI1+I,EAAS1K,UAAU,M,qBAO3D,WACQ1W,KAAKy/J,gBACLz/J,KAAKsgB,QAAQe,WAAWrhB,KAAKy/J,cAAcr+I,UAC3CphB,KAAKy/J,cAAcv+I,UACnBlhB,KAAKy/J,cAAgB,Q,+BAO7B,WACQz/J,KAAK2/J,mBAAqB3/J,KAAK2/J,kBAAkBj/I,aACjD1gB,KAAK6uH,UAAUptG,YAAYzhB,KAAK2/J,kBAAkBj/I,WAAY1gB,KAAK2/J,mBACnE3/J,KAAK2/J,kBAAoB,U,UAIrCL,EAAsB/+J,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK8+J,GAAuB,KAAgB,KAA0B,KAAgB,KAAW,KAAgB,KAAkC,KAAgB,KAAwB,KAAgB,OAChSA,EAAsB16J,WAAQ,KAA0B,CAAEC,MAAOy6J,EAAuBx6J,QAASw6J,EAAsB/+J,Y,KA2DjHw/J,EAA6B,IAAI,IAAe,4BAoEhDpI,EAAiB,CACnBzoC,WAAW,EACX1xE,SAAU,IACV98C,KAAM,QACNsJ,SAAU,eACViV,U,eAhDE+gJ,E,sDAENA,EAA2Bz/J,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAKw/J,IACpGA,EAA2B75J,UAAO,KAAyB,CAAEzF,KAAMs/J,EAA4Br/J,UAAW,CAAC,CAAC,iBAAkBwB,OAAQ,CAAE07J,MAAO,SAAWz3J,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,eAAgB,EAAG,SAAU,CAAC,EAAG,gBAAiB,CAAC,QAAS,QAAS,EAAG,QAAS,CAAC,EAAG,UAAWhG,SAAU,SAA6CqB,EAAIC,GAAgB,EAALD,IACxV,KAAsB,EAAG,MAAO,GAChC,KAAkB,QAAS,WAAsE,OAAOC,EAAIi8J,MAAMv4H,UAClH,KAAc,EAAG,QACjB,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGs4H,EAA2C,EAAG,EAAG,MAAO,GAC7E,KAAsB,EAAG,OACzB,KAAc,GACd,OACA,QACO,EAALj8J,IACF,KAAiB,GACjB,KAAkB,OAAQC,EAAIi8J,MAAMC,SACpC,KAAiB,GACjB,KAAyBl8J,EAAIi8J,MAAMr0E,QAClCjjF,WAAY,CAAC,KAAcuS,OAAQ,CAAC,+nB,uBA+BvCmnJ,E,8BAKF,WAAYn+H,EAASo+H,GAAiB,oBAClClgK,KAAK8hC,QAAUA,EACf9hC,KAAKkgK,kBAAoBA,G,mBAO7B,SAAK9nI,EAAQ+nI,GAQT,MAPsB,iBAAX/nI,IACPA,EAAS5b,OAAOuqB,OAAO,CAAEyiD,KAAyBpxD,GAAY+nI,IAE9D/nI,aAAkB,MAClBA,EAAS5b,OAAOuqB,OAAO,GAAIo5H,EAAiB,CAAElhJ,UAA8BmZ,KAEhFA,EAAS5b,OAAOuqB,OAAO,GAAI4wH,EAAgB33J,KAAK8hC,QAAS1J,GAClDp4B,KAAKkgK,kBAAkBj+I,IAAI6R,SAASjxB,IAAIu1B,O,UAGvD6nI,EAAQ1/J,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKy/J,GAAS,KAAgBF,GAA6B,KAAgBT,KACpIW,EAAQr7J,WAAQ,KAA0B,CAAEC,MAAOo7J,EAASn7J,QAASm7J,EAAQ1/J,Y,sBA+EvE8+J,E,8BAKF,WAAYz9I,EAAmBvB,GAAyB,oBACpDrgB,KAAK4hB,kBAAoBA,EACzB5hB,KAAKqgB,0BAA4BA,G,uBAKrC,WAEI,IAAMS,EAAmB9gB,KAAKqgB,0BAA0BU,wBAAwB/gB,KAAK69J,MAAM5+I,WAC3Fjf,KAAKy/J,cAAgBz/J,KAAK4hB,kBAAkBZ,gBAAgBF,GAC5D9gB,KAAKy/J,cAAc3rI,SAAS+pI,MAAQ79J,KAAK69J,Q,yBAK7C,WACQ79J,KAAKy/J,gBACLz/J,KAAKy/J,cAAcv+I,UACnBlhB,KAAKy/J,cAAgB,U,UAIjCJ,EAAsB9+J,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK6+J,GAAuB,KAAyB,KAA0B,KAAyB,OAC7LA,EAAsB5+J,UAAO,KAAyB,CAAEC,KAAM2+J,EAAuB1+J,UAAW,CAAC,CAAC,GAAI,eAAgB,KAAMwB,OAAQ,CAAE07J,MAAO,W,KA0CvItjB,EAAK,G,iBACL6lB,E,WAIF,WAAYC,GACR,GADoB,oBAChBA,EACA,MAAM,IAAIhsI,MAAM,iF,gDAOxB,WAA0B,IAAX+D,EAAW,uDAAF,GACpB,MAAO,CACH2mF,SAAUqhD,EACVjuI,UAAW,CACP,CAAE5vB,QAASw9J,EAA4BnnJ,SAAUwf,S,UAKjEgoI,EAAyB7/J,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAK4/J,GAA0B,KAAgBA,EAA0B,MACpKA,EAAyBlnJ,UAAO,KAAwB,CAAExY,KAAM0/J,IAChEA,EAAyBjnJ,UAAO,KAAwB,CAAEgZ,UAAW,CAC7D8tI,EACAX,EACA,CAAE/8J,QAASw9J,EAA4BnnJ,SAAU2hI,IAClDnhI,QAAS,CAAC,CACL,Q,+VCvvBR8kH,EAAS,EAMPoiC,EAAgB,IAAI,IAAe,gB,iBAInCC,E,8BACF,iCAEIvgK,KAAK+6J,cAAgB,IAAIt3J,EAAA,EAEzBzD,KAAKwgK,qBAAuB,IAAI/8J,EAAA,EAEhCzD,KAAKgmB,GAAL,wBAA2Bk4G,KAC3Bl+H,KAAKygK,QAAS,G,kBAGlB,WAAc,OAAOzgK,KAAKygK,Q,IAC1B,SAAU/2I,GAAS1pB,KAAKygK,OAAS,YAAsB/2I,K,qBAEvD,WACQ1pB,KAAKygK,QACLzgK,KAAKwgK,qBAAqB38J,MAAK,K,sBAIvC,WACI7D,KAAKwgK,qBAAqB38J,MAAK,K,yBAEnC,SAAYoB,GACRjF,KAAK+6J,cAAcl3J,KAAKoB,K,yBAE5B,WACIjF,KAAK+6J,cAAcj3J,WACnB9D,KAAKwgK,qBAAqB18J,e,UAGlCy8J,EAAahgK,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK+/J,IACxEA,EAAa9/J,UAAO,KAAyB,CAAEC,KAAM6/J,EAAc5/J,UAAW,CAAC,CAAC,iBAAkB,CAAC,GAAI,eAAgB,KAAMwB,OAAQ,CAAEunB,MAAO,SAAWhR,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS+9J,EAAe99J,YAAa+9J,KAAkB,Q,KAuBhRxgD,EAAW,E,iBAMT2gD,E,8BACF,WAAYC,EAAW7zJ,EAAoB8zJ,GAAoB,+BAC3D5gK,KAAK2gK,UAAYA,EACjB3gK,KAAK8M,mBAAqBA,EAC1B9M,KAAK4gK,qBAAuBA,EAE5B5gK,KAAK6gK,0BAA4B9b,EAAA,EAAa79H,MAE9ClnB,KAAKwnB,OAAS,IAAI,IAElBxnB,KAAKunB,OAAS,IAAI,IAElBvnB,KAAK8gK,UAAY,IAAI,IAMrB9gK,KAAK+gK,eAAiB,IAAI,IAE1B/gK,KAAKgmB,GAAL,8BAAiC+5F,KACjC//G,KAAKghK,WAAY,EACjBhhK,KAAKmgH,WAAY,EAEjBngH,KAAKihK,+BAAiC,aACtCjhK,KAAKihK,+BACDL,EAAqBhmC,OAAO,SAAC50G,EAAIk7I,GACzB,EAAKP,YAAc,EAAKA,UAAUj3I,OAClC,EAAKi3I,UAAU36I,KAAOk7I,GAAe,EAAKl7I,KAAOA,IACjD,EAAKm7I,UAAW,KAIxBnhK,KAAK2gK,YACL3gK,KAAK6gK,0BAA4B7gK,KAAKohK,oC,qBAI9C,WAAiB,OAAOphK,KAAKghK,W,IAC7B,SAAaG,GACTA,EAAW,YAAsBA,GAE7BnhK,KAAKghK,YAAcG,IACnBnhK,KAAKghK,UAAYG,EACjBnhK,KAAK+gK,eAAe7+I,KAAKi/I,GACrBA,GACAnhK,KAAKunB,OAAOrF,OAMZliB,KAAK4gK,qBAAqBS,OAAOrhK,KAAKgmB,GADlBhmB,KAAK2gK,UAAY3gK,KAAK2gK,UAAU36I,GAAKhmB,KAAKgmB,KAI9DhmB,KAAKwnB,OAAOtF,OAIhBliB,KAAK8M,mBAAmBkK,kB,oBAIhC,WAAiB,OAAOhX,KAAKmgH,W,IAC7B,SAAanzF,GAAYhtB,KAAKmgH,UAAY,YAAsBnzF,K,yBAEhE,WACIhtB,KAAKunB,OAAOzjB,WACZ9D,KAAKwnB,OAAO1jB,WACZ9D,KAAK8gK,UAAU5+I,OACfliB,KAAK8gK,UAAUh9J,WACf9D,KAAKihK,iCACLjhK,KAAK6gK,0BAA0BjrJ,gB,oBAGnC,WACS5V,KAAKgtB,WACNhtB,KAAKmhK,UAAYnhK,KAAKmhK,Y,mBAI9B,WACSnhK,KAAKgtB,WACNhtB,KAAKmhK,UAAW,K,kBAIxB,WACSnhK,KAAKgtB,WACNhtB,KAAKmhK,UAAW,K,6CAGxB,WAA+B,WAC3B,OAAOnhK,KAAK2gK,UAAUH,qBAAqBt8J,UAAU,SAAAi9J,GAE5C,EAAKn0I,WACN,EAAKm0I,SAAWA,S,UAKhCT,EAAiBngK,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKkgK,GAAkB,KAAyBJ,EAAe,IAAK,KAAyB,KAA2B,KAAyB,OAC5NI,EAAiBjgK,UAAO,KAAyB,CAAEC,KAAMggK,EAAkB//J,UAAW,CAAC,CAAC,sBAAuB,CAAC,GAAI,mBAAoB,KAAMwB,OAAQ,CAAEg/J,SAAU,WAAYn0I,SAAU,YAAc7K,QAAS,CAAEqF,OAAQ,SAAUD,OAAQ,SAAUu5I,UAAW,YAAaC,eAAgB,kBAAoBroJ,SAAU,CAAC,oBAAqBpW,SAAU,CAAC,KAA0B,CAG1W,CAAEC,QAAS+9J,EAAe1nJ,cA9G3BnU,Q,sBAoKL68J,E,sDAENA,EAAmB/gK,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK8gK,IACpFA,EAAmBpoJ,UAAO,KAAwB,CAAExY,KAAM4gK,IAC1DA,EAAmBnoJ,UAAO,KAAwB,I,ybC1NlD,IAAM1Z,EAAM,CAAC,QACb,SAAS8hK,EAAyC5/J,EAAIC,IACtD,IAAMlC,EAAM,CAAC,CAAC,CAAC,+BAAgC,IAAK,CAAC,CAAC,oBAChD4xG,EAAM,CAAC,6BAA8B,IAAK,kBAChD,SAASkwD,EAAwC7/J,EAAIC,GAEnD,GAFmE,EAALD,GAC5D,KAAiB,EAAG,OAAQ,GACrB,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAkB,mBAAoBA,EAAOw7I,sBAEjD,IAAMlwD,EAAM,CAAC,CAAC,CAAC,oBAAqB,CAAC,CAAC,0BAA2B,KAC3DE,EAAM,CAAC,kBAAmB,wBAAyB,KACnDiwD,EAAgB,IAAI,IAAe,iBAWnCC,EAAmC,oCAuBnCC,EAAyB,CAE3BC,gBAAiB,YAAQ,kBAAmB,CACxC,YAAM,kBAAmB,YAAM,CAAElgI,UAAW,kBAC5C,YAAM,WAAY,YAAM,CAAEA,UAAW,oBACrC,YAAW,4CAA6C,YAAQggI,MAGpEG,cAAe,YAAQ,gBAAiB,CACpC,YAAM,kBAAmB,YAAM,CAAEt3J,OAAQ,MAAOu3J,WAAY,YAC5D,YAAM,WAAY,YAAM,CAAEv3J,OAAQ,IAAKu3J,WAAY,aACnD,YAAW,4CAA6C,YAAQJ,O,iBAelEK,E,YACF,WAAYC,GAAS,oBACjBjiK,KAAKiiK,UAAYA,I,OAGzBD,EAAyBzhK,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAKwhK,GAA0B,KAAyB,OACnJA,EAAyBvhK,UAAO,KAAyB,CAAEC,KAAMshK,EAA0BrhK,UAAW,CAAC,CAAC,cAAe,2BAA4B,O,KAmB/IijC,EAAW,EAKTs+H,EAAsC,IAAI,IAAe,uC,iBAMzDC,E,YACF,WAAYxB,EAAW7zJ,EAAoBs1J,EAA4BxgJ,EAAmB1U,EAAWilG,EAAgBrrE,GAAc,kCAC/H,YAAM65H,EAAW7zJ,EAAoBs1J,KAChCxgJ,kBAAoBA,EACzB,EAAKuwF,eAAiBA,EACtB,EAAKkwD,aAAc,EAEnB,EAAKC,YAAc,IAAI,IAEvB,EAAKC,cAAgB,IAAI,IAEzB,EAAKC,cAAgB,IAAI/+J,EAAA,EAEzB,EAAKg/J,UAAL,qCAA+C7+H,KAE/C,EAAK8+H,mBAAqB,IAAIj/J,EAAA,EAC9B,EAAKk9J,UAAYA,EACjB,EAAKzzJ,UAAYA,EAGjB,EAAKw1J,mBAAmB1+J,KAAK,OAAAk4B,EAAA,GAAqB,SAACX,EAAGjW,GAClD,OAAOiW,EAAEonI,YAAcr9I,EAAEq9I,WAAapnI,EAAE4H,UAAY7d,EAAE6d,WACtDj/B,UAAU,SAAAokB,GACc,SAApBA,EAAMq6I,YACgB,aAAlBr6I,EAAM6a,QACN,EAAKm/H,YAAYpgJ,OAEM,cAAlBoG,EAAM6a,SACX,EAAKo/H,cAAcrgJ,UAI3B4kB,IACA,EAAK87H,WAAa97H,EAAe87H,YAhC0F,E,6DAoCnI,WACI,OAAO5iK,KAAKqiK,aAAgBriK,KAAK2gK,WAAa3gK,KAAK2gK,UAAUiC,Y,IAEjE,SAAerhK,GACXvB,KAAKqiK,YAAc,YAAsB9gK,K,0BAG7C,WACI,OAAOvB,KAAK6iK,iBAAoB7iK,KAAK2gK,WAAa3gK,KAAK2gK,UAAUmC,gB,IAErE,SAAmBvhK,GACfvB,KAAK6iK,gBAAkBthK,I,yBAG3B,WACI,QAAIvB,KAAK2gK,WACE3gK,KAAKmhK,UAA2C,YAA/BnhK,KAAK2gK,UAAUoC,c,+BAK/C,WACI,OAAO/iK,KAAKmhK,SAAW,WAAa,c,oBAGxC,WACInhK,KAAKmhK,UAAYnhK,KAAKmhK,W,mBAG1B,WACInhK,KAAKmhK,UAAW,I,kBAGpB,WACInhK,KAAKmhK,UAAW,I,gCAEpB,WAAkB,WACVnhK,KAAKgjK,cAELhjK,KAAKunB,OAAOvjB,KAAK,OAAAm1J,EAAA,GAAU,MAAO,OAAAhkJ,EAAA,GAAO,kBAAM,EAAKgsJ,WAAa,EAAK3xI,UAAU,OAAA7qB,EAAA,GAAK,IAAIT,UAAU,WAC/F,EAAKsrB,QAAU,IAAI,IAAe,EAAKwzI,aAAaf,UAAW,EAAKrgJ,uB,yBAIhF,SAAY3c,GACRjF,KAAKwiK,cAAc3+J,KAAKoB,K,yBAE5B,WACI,8BACAjF,KAAK0iK,mBAAmB5+J,WACxB9D,KAAKwiK,cAAc1+J,a,4BAGvB,WACI,GAAI9D,KAAKijK,MAAO,CACZ,IAAM33C,EAAiBtrH,KAAKkN,UAAUud,cAChCy4I,EAAcljK,KAAKijK,MAAMrgK,cAC/B,OAAO0oH,IAAmB43C,GAAeA,EAAYt2I,SAAS0+F,GAElE,OAAO,M,CAhGiB,G,OAmGhC62C,EAAkB5hK,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAK2hK,GAAmB,KAAyBT,EAAe,IAAK,KAAyB,KAA2B,KAAyB,KAAmC,KAAyB,KAA0B,KAAyB,KAAW,KAAyB,IAAuB,GAAI,KAAyBQ,EAAqC,KAC3cC,EAAkBh8J,UAAO,KAAyB,CAAEzF,KAAMyhK,EAAmBxhK,UAAW,CAAC,CAAC,wBAAyBe,eAAgB,SAA0CC,EAAIC,EAAKC,GAG9K,IAAIC,EAH+L,EAALH,GAC9L,KAAsBE,EAAU,EAA0B,GACnD,EAALF,GAEF,KAAsBG,EAAK,UAA0BF,EAAIohK,aAAelhK,EAAGE,QAC1EsW,UAAW,SAAiC3W,EAAIC,GAGjD,IAAIE,EAH6D,EAALH,GAC5D,KAAmBlC,EAAK,GACjB,EAALkC,GAEF,KAAsBG,EAAK,UAA0BF,EAAIqhK,MAAQnhK,EAAGE,QACnEe,UAAW,CAAC,EAAG,uBAAwBwV,SAAU,EAAGC,aAAc,SAAwC7W,EAAIC,GAAgB,EAALD,GAC1H,KAAmB,eAAgBC,EAAIu/J,SAAvC,CAAiD,0BAAkD,mBAAvBv/J,EAAIuwG,eAAhF,CAAqH,8BAA+BvwG,EAAIuhK,gBACvJhhK,OAAQ,CAAE6qB,SAAU,WAAYm0I,SAAU,WAAYyB,WAAY,aAAcE,eAAgB,kBAAoB3gJ,QAAS,CAAEoF,OAAQ,SAAUC,OAAQ,SAAUu5I,eAAgB,iBAAkBuB,YAAa,cAAeC,cAAe,iBAAmB7pJ,SAAU,CAAC,qBAAsBpW,SAAU,CAAC,KAA0B,CAGtU,CAAEC,QAASm/J,EAAe9oJ,cAxH3BnU,KAyHC,KAAmC,MAA8BoU,mBAAoBy4F,EAAKlrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,SAAU,EAAG,8BAA+B,EAAG,MAAO,CAAC,OAAQ,IAAK,CAAC,EAAG,4BAA6B,CAAC,EAAG,oBAAqBhG,SAAU,SAAoCqB,EAAIC,GAAgB,EAALD,IAC9T,KAAuBjC,GACvB,KAAoB,GACpB,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,sBAAuB,SAAgFoyB,GAAU,OAAOlwB,EAAI8gK,mBAAmB7+J,KAAKiuB,KACtK,KAAsB,EAAG,MAAO,GAChC,KAAoB,EAAG,GACvB,KAAkB,EAAGyvI,EAA0C,EAAG,EAAG,cAAe,GACpF,OACA,KAAoB,EAAG,GACvB,QACO,EAAL5/J,IACF,KAAiB,GACjB,KAAkB,iBAAkBC,EAAI6/J,oBAAxC,CAA6D,KAAM7/J,EAAIokB,IACvE,KAAmB,kBAAmBpkB,EAAI6gK,WAC1C,KAAiB,GACjB,KAAkB,kBAAmB7gK,EAAI4tB,WACxCjpB,WAAY,CAAC,KAAyBuS,OAAQ,CAAC,ymDAA0mDtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAACi+H,EAAuBE,gBAAkB94I,gBAAiB,I,sBAwG5vDo6I,E,8BACF,WAAY/6I,EAAOuB,EAAUmY,EAAej1B,EAAoBg6B,EAAgBqrE,GAAc,+BAC1FnyG,KAAKqoB,MAAQA,EACbroB,KAAK4pB,SAAWA,EAChB5pB,KAAK+hC,cAAgBA,EACrB/hC,KAAK8M,mBAAqBA,EAC1B9M,KAAKmyG,eAAiBA,EACtBnyG,KAAKqjK,0BAA4Bte,EAAA,EAAa79H,MAC9C,IAAMo8I,EAA4Bj7I,EAAMs4I,UACpCt4I,EAAMs4I,UAAU5F,cAAc/2J,KAAK,OAAAmR,EAAA,GAAO,SAAAlQ,GAAO,SAAOA,EAAO,aAAkBA,EAAO,mBACxF,IAGJjF,KAAKqjK,0BACD,OAAAhmJ,EAAA,GAAMgL,EAAMd,OAAQc,EAAMb,OAAQ87I,EAA2Bj7I,EAAMm6I,cAAcx+J,KAAK,OAAAmR,EAAA,GAAO,SAAAlQ,GACzF,SAAUA,EAAO,YACbA,EAAO,UACPA,EAAO,oBAEVf,UAAU,kBAAM,EAAK4I,mBAAmBkK,iBAEjDqR,EAAMb,OACDxjB,KAAK,OAAAmR,EAAA,GAAO,kBAAMkT,EAAMma,oBACxBt+B,UAAU,kBAAM69B,EAAcgB,SAASnZ,EAAU,aAClDkd,IACA9mC,KAAKujK,eAAiBz8H,EAAey8H,eACrCvjK,KAAKwjK,gBAAkB18H,EAAe08H,kB,qBAO9C,WACI,OAAOxjK,KAAKqoB,MAAM2E,W,qBAGtB,WACShtB,KAAKgtB,UACNhtB,KAAKqoB,MAAMo7I,W,yBAInB,WACI,OAAOzjK,KAAKqoB,MAAM84I,W,+BAGtB,WACI,OAAOnhK,KAAKqoB,MAAMo5I,sB,yBAGtB,WACI,OAAOzhK,KAAKqoB,MAAMrC,K,gCAGtB,WACI,OAAOhmB,KAAKqoB,MAAMy6I,iB,yBAGtB,WACI,OAAQ9iK,KAAKqoB,MAAMu6I,aAAe5iK,KAAKqoB,MAAM2E,W,8BAMjD,WACI,IAAM02I,EAAa1jK,KAAK2jK,cACxB,OAAID,GAAc1jK,KAAKujK,eACZvjK,KAAKujK,gBAENG,GAAc1jK,KAAKwjK,gBAClBxjK,KAAKwjK,gBAET,O,sBAGX,SAASl7I,GACL,OAAQA,EAAM2E,SAEV,KAAK,IACL,KAAK,IACI,YAAe3E,KAChBA,EAAM4E,iBACNltB,KAAK4jK,WAET,MACJ,QAII,YAHI5jK,KAAKqoB,MAAMs4I,WACX3gK,KAAKqoB,MAAMs4I,UAAUkD,qBAAqBv7I,O,mBAU1D,SAAMwqF,EAAQ9qF,GACN8qF,EACA9yG,KAAK+hC,cAAcgB,SAAS/iC,KAAK4pB,SAAUkpF,EAAQ9qF,GAGnDhoB,KAAK4pB,SAAShnB,cAAcksB,MAAM9G,K,6BAG1C,WAAe,WACXhoB,KAAK+hC,cAAc2wE,QAAQ1yG,KAAK4pB,UAAU1lB,UAAU,SAAA4uG,GAC5CA,GAAU,EAAKzqF,MAAMs4I,WACrB,EAAKt4I,MAAMs4I,UAAUmD,mBAAmB,O,yBAIpD,WACI9jK,KAAKqjK,0BAA0BztJ,cAC/B5V,KAAK+hC,cAAc8wE,eAAe7yG,KAAK4pB,c,UAG/Cw5I,EAAwB7iK,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAK4iK,GAAyB,KAAyB,EAAmB,GAAI,KAAyB,KAAoB,KAAyB,KAAsB,KAAyB,KAA2B,KAAyBlB,EAAqC,GAAI,KAAyB,IAAuB,KACzakB,EAAwBj9J,UAAO,KAAyB,CAAEzF,KAAM0iK,EAAyBziK,UAAW,CAAC,CAAC,+BAAgCoC,UAAW,CAAC,OAAQ,SAAU,EAAG,6BAA8B,uBAAwBwV,SAAU,GAAIC,aAAc,SAA8C7W,EAAIC,GAAgB,EAALD,GAC9S,KAAkB,QAAS,WAA8D,OAAOC,EAAIgiK,WAApG,CAAkH,UAAW,SAA4D9xI,GAAU,OAAOlwB,EAAImiK,SAASjyI,KAChN,EAALnwB,IACF,KAAmB,KAAMC,EAAIymB,MAAMo6I,UAAnC,CAA8C,WAAY7gK,EAAIorB,UAAY,EAAI,EAA9E,CAAiF,gBAAiBprB,EAAIoiK,cAAtG,CAAqH,gBAAiBpiK,EAAI+hK,cAA1I,CAAyJ,gBAAiB/hK,EAAIymB,MAAM2E,UACpL,KAAmB,SAAUprB,EAAIqiK,oBACjC,KAAmB,eAAgBriK,EAAI+hK,cAAvC,CAAsD,uCAAqE,UAA7B/hK,EAAIsiK,qBAAlG,CAAoI,wCAAsE,WAA7BtiK,EAAIsiK,qBAAjL,CAAoN,0BAAkD,mBAAvBtiK,EAAIuwG,kBAClPhwG,OAAQ,CAAEohK,eAAgB,iBAAkBC,gBAAiB,mBAAqB3qJ,mBAAoB44F,EAAKrrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,eAAgB,CAAC,QAAS,0BAA2B,EAAG,QAAS,CAAC,EAAG,4BAA6BhG,SAAU,SAA0CqB,EAAIC,GAAgB,EAALD,IACjT,KAAuB4vG,GACvB,KAAsB,EAAG,OAAQ,GACjC,KAAoB,GACpB,KAAoB,EAAG,GACvB,KAAoB,EAAG,GACvB,OACA,KAAkB,EAAGiwD,EAAyC,EAAG,EAAG,OAAQ,IACrE,EAAL7/J,IACF,KAAiB,GACjB,KAAkB,OAAQC,EAAIuiK,iBAC7B59J,WAAY,CAAC,KAAcuS,OAAQ,CAAC,61DAAk2DtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CACx6Di+H,EAAuBC,kBACtB74I,gBAAiB,I,sBA6ExBo7I,E,sDAENA,EAAuB7jK,UAAO,SAAwCC,GAAK,OAAO,IAAKA,GAAK4jK,IAC5FA,EAAuB3jK,UAAO,KAAyB,CAAEC,KAAM0jK,EAAwBzjK,UAAW,CAAC,CAAC,oBAAqBoC,UAAW,CAAC,EAAG,sC,sBAqBlIshK,E,YACF,+CACI,WAAS/qJ,YAEJgrJ,YAAc,IAAI,IACvB,EAAKjC,aAAc,EASnB,EAAKU,YAAc,UAEnB,EAAKD,eAAiB,QAf1B,E,6DAkBA,WAAmB,OAAO9iK,KAAKqiK,a,IAC/B,SAAekC,GAAQvkK,KAAKqiK,YAAc,YAAsBkC,K,gCAChE,WAAkB,WACdvkK,KAAKwkK,SAASv/J,QACTjB,KAAK,OAAAm1J,EAAA,GAAUn5J,KAAKwkK,WACpBtgK,UAAU,SAACuzB,GACZ,EAAK6sI,YAAYtnC,MAAMvlG,EAAQtiB,OAAO,SAAAovD,GAAM,OAAIA,EAAOl8C,MAAMs4I,YAAc,KAC3E,EAAK2D,YAAYG,oBAErBzkK,KAAK+nB,YAAc,IAAI,IAAgB/nB,KAAKskK,aAAar8I,WAAWy8I,mB,kCAGxE,SAAqBp8I,GACjBtoB,KAAK+nB,YAAYyF,UAAUlF,K,gCAE/B,SAAmBi8C,GACfvkE,KAAK+nB,YAAY48I,iBAAiBpgG,K,yBAEtC,WACI,8BACAvkE,KAAKskK,YAAYpjJ,c,CAvCE,G,OA0C3BmjJ,EAAa9jK,UAAO,SAA8BC,GAAK,OAAOokK,EAA0BpkK,GAAK6jK,IAC7FA,EAAa5jK,UAAO,KAAyB,CAAEC,KAAM2jK,EAAc1jK,UAAW,CAAC,CAAC,kBAAmBe,eAAgB,SAAqCC,EAAIC,EAAKC,GAGzJ,IAAIC,EAH0K,EAALH,GACzK,KAAsBE,EAAU,EAAyB,GAClD,EAALF,GAEF,KAAsBG,EAAK,UAA0BF,EAAI4iK,SAAW1iK,IACnEiB,UAAW,CAAC,EAAG,iBAAkBwV,SAAU,EAAGC,aAAc,SAAmC7W,EAAIC,GAAgB,EAALD,GAC/G,KAAmB,sBAAuBC,EAAI8nB,QAC7CvnB,OAAQ,CAAEunB,MAAO,QAASq5I,YAAa,cAAeD,eAAgB,iBAAkBF,WAAY,cAAgBlqJ,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,KAA0B,CAAC,CAC/KC,QAASm/J,EACTl/J,YAAa6hK,KACZ,Q,KAOXO,EAA0C,KAA6B,G,kBAoCvEC,E,sDAENA,EAAmBtkK,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKqkK,IACpFA,EAAmB3rJ,UAAO,KAAwB,CAAExY,KAAMmkK,IAC1DA,EAAmB1rJ,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAc,IAAiB,EAAoB,Q,kMC5sB9G0rJ,EAAa,EACXC,EAAY,kBAAMxgK,QAAQC,UAAd,GACZwgK,EAAgB,GACtB,SAASC,EAAmB9e,GACxB,OAAIA,KAAU6e,WACHA,EAAc7e,IACd,GAIR,IAAM+e,EAAY,SACR/rB,GACT,IAAMgN,EAAS2e,IAGf,OAFAE,EAAc7e,IAAU,EACxB4e,EAAS1mJ,KAAK,kBAAM4mJ,EAAmB9e,IAAWhN,MAC3CgN,GALF+e,EAAY,SAON/e,GACX8e,EAAmB9e,I,8IChBpB,IAAM,EAAb,YACI,WAAYra,EAAWC,GAAI,M,MAAA,2B,EACvB,K,EAAA,E,EAAA,CAAMD,EAAWC,G,kBAAjB,E,iGACKD,UAAYA,EACjB,EAAKC,KAAOA,EAHW,EAD/B,mEAMI,SAAeD,EAAW9lH,GAAa,IAATonE,EAAS,uDAAD,EAClC,OAAc,OAAVA,GAAkBA,EAAQ,EAC1B,8BAA4B0+C,EAAW9lH,EAAIonE,KAE/C0+C,EAAUY,QAAQ9oI,KAAK5D,MAChB8rI,EAAUq5B,YAAcr5B,EAAUq5B,UAAYD,EAAuBp5B,EAAUK,MAAM5hG,KAAKuhG,EAAW,WAXpH,4BAaI,SAAeA,EAAW9lH,GAAa,IAATonE,EAAS,uDAAD,EAClC,GAAe,OAAVA,GAAkBA,EAAQ,GAAiB,OAAVA,GAAkBptF,KAAKotF,MAAQ,EACjE,qCAA4B0+C,EAAW9lH,EAAIonE,IAEd,IAA7B0+C,EAAUY,QAAQvoI,SAClB+gK,EAAyBl/I,GACzB8lH,EAAUq5B,eAAY1gK,OAnBlC,C,UAAgC,G,0ICDzB,ICCM2gK,EAAgB,IDD7B,kIACI,SAAMriG,GACF/iE,KAAK8b,QAAS,EACd9b,KAAKmlK,eAAY1gK,EACjB,IACIuwB,EADI03G,EAAY1sI,KAAZ0sI,QAEJ/iI,GAAS,EACTuN,EAAQw1H,EAAQvoI,OACpB4+D,EAASA,GAAU2pE,EAAQ/3H,QAC3B,GACI,GAAIqgB,EAAQ+tC,EAAOspE,QAAQtpE,EAAO16D,MAAO06D,EAAOqqB,OAC5C,cAEGzjF,EAAQuN,IAAU6rD,EAAS2pE,EAAQ/3H,UAE9C,GADA3U,KAAK8b,QAAS,EACVkZ,EAAO,CACP,OAASrrB,EAAQuN,IAAU6rD,EAAS2pE,EAAQ/3H,UACxCouD,EAAOntD,cAEX,MAAMof,OAnBlB,C,UAAmC,GCCN,CAAkB,GAClCqwI,EAAOD,G,oCCFpB,wEAWA,aAIC,WAAoBjuI,EAA0BC,GAA1B,KAAAD,OAA0B,KAAAC,gB,OAE9C,YAAAkuI,wBAAA,SAAwB1pI,GACvB,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,2CACnCuD,EACA,KAGF,YAAA2pI,iCAAA,SACCC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAM97E,GAAS,IAAI,KACjBz1E,IAAI,cAA+B,OAAhBmxJ,EAAuB,GAAKA,GAC/CnxJ,IAAI,SAAqB,OAAXoxJ,EAAkB,GAAKA,GACrCpxJ,IAAI,YAA2B,OAAdqxJ,EAAqB,GAAKA,GAC3CrxJ,IAAI,aAA6B,OAAfsxJ,EAAsB,GAAKA,GAC7CtxJ,IAAI,WAAyB,OAAbuxJ,EAAoB,GAAKA,GAC3C,OAAO5lK,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,kDACnC,CACCyxD,OAAQA,KAKX,YAAA+7E,0BAAA,SACCL,EACAC,EACAC,EACAC,EACAC,GAEA,IAAM97E,GAAS,IAAI,KACjBz1E,IAAI,cAA+B,OAAhBmxJ,EAAuB,GAAKA,GAC/CnxJ,IAAI,SAAqB,OAAXoxJ,EAAkB,GAAKA,GACrCpxJ,IAAI,YAA2B,OAAdqxJ,EAAqB,GAAKA,GAC3CrxJ,IAAI,aAA6B,OAAfsxJ,EAAsB,GAAKA,GAC7CtxJ,IAAI,WAAyB,OAAbuxJ,EAAoB,GAAKA,GAC3C,OAAO5lK,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,8CACnC,CACCyxD,OAAQA,KAKX,YAAAg8E,gBAAA,WACC,OAAO9lK,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,6CACnC,K,sCAvDU0tI,GAA4B,sB,yBAA5BA,EAA4B,QAA5BA,EAA4B,qBAF5B,S,EADb,I,wBCHS,SAAU1jJ,GAAU,aAKhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,sgBAAkGL,MACtG,KAEJM,YAAa,0QAAwDN,MACjE,KAEJgB,SACI,mVAAgEhB,MAC5D,KAERiB,cAAe,mJAAgCjB,MAAM,KACrDkB,YAAa,iFAAqBlB,MAAM,KACxCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,0DAEVC,SAAU,CACNC,QAAS,4BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,kCACTC,SAAU,yDACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,6BACRC,KAAM,oCACNC,EAAG,sEACHC,GAAI,oCACJ/B,EAAG,yDACHgC,GAAI,sDACJC,EAAG,qBACHC,GAAI,wBACJhN,EAAG,2BACHiN,GAAI,wBACJG,EAAG,2BACHC,GAAI,wBACJC,EAAG,qBACHC,GAAI,yBAERC,uBAAwB,mCACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,6BAEpB8rB,cAAe,iHACfmuF,KAAM,SAAUnhF,GACZ,MAAiB,mBAAVA,GAA8B,0CAAVA,GAE/B7M,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,iBAAS,wCAEnBA,EAAU,uBAAU,2CAlED/sC,CAAQ,EAAQ,U,8WCAnD,IAAMkhK,EAAb,YACI,WAAYC,EAAmBjxI,EAAOlxB,GAAQ,MAM1C,OAN0C,qBAC1C,aACKoiK,eAAiB,KACtB,EAAKC,iBAAkB,EACvB,EAAKC,oBAAqB,EAC1B,EAAKC,WAAY,EACT/sJ,UAAUnV,QACd,KAAK,EACD,EAAKs4B,YAAc,IACnB,MACJ,KAAK,EACD,IAAKwpI,EAAmB,CACpB,EAAKxpI,YAAc,IACnB,MAEJ,GAAiC,iBAAtBwpI,EAAgC,CACnCA,aAA6BD,GAC7B,EAAKI,mBAAqBH,EAAkBG,mBAC5C,EAAK3pI,YAAcwpI,EACnBA,EAAkBpjK,IAAlB,KAGA,EAAKujK,oBAAqB,EAC1B,EAAK3pI,YAAc,IAAI6pI,EAAJ,EAAyBL,IAEhD,MAER,QACI,EAAKG,oBAAqB,EAC1B,EAAK3pI,YAAc,IAAI6pI,EAAJ,EAAyBL,EAAmBjxI,EAAOlxB,GA7BpC,SADlD,4CAkCK,IAlCL,MAkCI,WAAyB,OAAO9D,OAlCpC,kBAwCI,SAAKuB,GACIvB,KAAKqmK,WACNrmK,KAAK68J,MAAMt7J,KA1CvB,mBA6CI,SAAMo7B,GACG38B,KAAKqmK,YACNrmK,KAAKqmK,WAAY,EACjBrmK,KAAKumK,OAAO5pI,MAhDxB,sBAmDI,WACS38B,KAAKqmK,YACNrmK,KAAKqmK,WAAY,EACjBrmK,KAAKwmK,eAtDjB,yBAyDI,W,UACQxmK,KAAKwnB,SAGTxnB,KAAKqmK,WAAY,G,EACjB,E,EAAA,K,0DAAA,c,wCAAA,OA9DR,mBAgEI,SAAM9kK,GACFvB,KAAKy8B,YAAY54B,KAAKtC,KAjE9B,oBAmEI,SAAOo7B,GACH38B,KAAKy8B,YAAYzH,MAAM2H,GACvB38B,KAAK4V,gBArEb,uBAuEI,WACI5V,KAAKy8B,YAAY34B,WACjB9D,KAAK4V,gBAzEb,oCA2EI,WACI,IAAQ6wJ,EAAqBzmK,KAArBymK,iBAMR,OALAzmK,KAAKymK,iBAAmB,KACxBzmK,KAAK4V,cACL5V,KAAKwnB,QAAS,EACdxnB,KAAKqmK,WAAY,EACjBrmK,KAAKymK,iBAAmBA,EACjBzmK,QAlFf,qBAmCI,SAAc6D,EAAMmxB,EAAOlxB,GACvB,IAAMy4B,EAAa,IAAIypI,EAAWniK,EAAMmxB,EAAOlxB,GAE/C,OADAy4B,EAAW6pI,oBAAqB,EACzB7pI,MAtCf,CAAgC,KAqFnB+pI,EAAb,YACI,WAAYI,EAAmBC,EAAgB3xI,EAAOlxB,GAAQ,MAGtDD,EAHsD,qBAC1D,aACK6iK,kBAAoBA,EAEzB,IAAIl1J,EAAU,EAJ4C,OAKtD,YAAWm1J,GACX9iK,EAAO8iK,EAEFA,IACL9iK,EAAO8iK,EAAe9iK,KACtBmxB,EAAQ2xI,EAAe3xI,MACvBlxB,EAAW6iK,EAAe7iK,SACtB6iK,IAAmB,MACnBn1J,EAAUgL,OAAOlX,OAAOqhK,GACpB,YAAWn1J,EAAQoE,cACnB,EAAK/S,IAAI2O,EAAQoE,YAAY20B,KAAK/4B,IAEtCA,EAAQoE,YAAc,EAAKA,YAAY20B,KAAjB,KAG9B,EAAKu9B,SAAWt2D,EAChB,EAAKqrJ,MAAQh5J,EACb,EAAK0iK,OAASvxI,EACd,EAAKwxI,UAAY1iK,EAvByC,EADlE,yDA0BI,SAAKvC,GACD,IAAKvB,KAAKqmK,WAAarmK,KAAK68J,MAAO,CAC/B,IAAQ6J,EAAsB1mK,KAAtB0mK,kBACH,IAAOE,uCAA0CF,EAAkBN,mBAG/DpmK,KAAK6mK,gBAAgBH,EAAmB1mK,KAAK68J,MAAOt7J,IACzDvB,KAAK4V,cAHL5V,KAAK8mK,aAAa9mK,KAAK68J,MAAOt7J,MA9B9C,mBAqCI,SAAMo7B,GACF,IAAK38B,KAAKqmK,UAAW,CACjB,IAAQK,EAAsB1mK,KAAtB0mK,kBACAE,EAA0C,IAA1CA,sCACR,GAAI5mK,KAAKumK,OACAK,GAA0CF,EAAkBN,oBAK7DpmK,KAAK6mK,gBAAgBH,EAAmB1mK,KAAKumK,OAAQ5pI,GACrD38B,KAAK4V,gBALL5V,KAAK8mK,aAAa9mK,KAAKumK,OAAQ5pI,GAC/B38B,KAAK4V,oBAOR,GAAK8wJ,EAAkBN,mBAQpBQ,GACAF,EAAkBR,eAAiBvpI,EACnC+pI,EAAkBP,iBAAkB,GAGpC,YAAgBxpI,GAEpB38B,KAAK4V,kBAfuC,CAE5C,GADA5V,KAAK4V,cACDgxJ,EACA,MAAMjqI,EAEV,YAAgBA,OAxDhC,sBAsEI,WAAQ,WACJ,IAAK38B,KAAKqmK,UAAW,CACjB,IAAQK,EAAsB1mK,KAAtB0mK,kBACR,GAAI1mK,KAAKwmK,UAAW,CAChB,IAAMO,EAAkB,kBAAM,EAAKP,UAAUtxI,KAAK,EAAK4yC,WAClD,IAAO8+F,uCAA0CF,EAAkBN,oBAKpEpmK,KAAK6mK,gBAAgBH,EAAmBK,GACxC/mK,KAAK4V,gBALL5V,KAAK8mK,aAAaC,GAClB/mK,KAAK4V,oBAQT5V,KAAK4V,iBArFrB,0BAyFI,SAAa5G,EAAIzN,GACb,IACIyN,EAAGkmB,KAAKl1B,KAAK8nE,SAAUvmE,GAE3B,MAAOo7B,GAEH,GADA38B,KAAK4V,cACD,IAAOgxJ,sCACP,MAAMjqI,EAGN,YAAgBA,MAnGhC,6BAuGI,SAAgBiK,EAAQ53B,EAAIzN,GACxB,IAAK,IAAOqlK,sCACR,MAAM,IAAIvyI,MAAM,YAEpB,IACIrlB,EAAGkmB,KAAKl1B,KAAK8nE,SAAUvmE,GAE3B,MAAOo7B,GACH,OAAI,IAAOiqI,uCACPhgI,EAAOs/H,eAAiBvpI,EACxBiK,EAAOu/H,iBAAkB,GAClB,IAGP,YAAgBxpI,IACT,GAGf,OAAO,IAzHf,0BA2HI,WACI,IAAQ+pI,EAAsB1mK,KAAtB0mK,kBACR1mK,KAAK8nE,SAAW,KAChB9nE,KAAK0mK,kBAAoB,KACzBA,EAAkB9wJ,kBA/H1B,CAAoCowJ,I,wBClF3B,SAAU3jJ,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGF/uB,EAAOM,aAAa,QAAS,CAEpCC,OAAQ,8VAAsEL,MAC1E,KAEJM,YACI,8VAAsEN,MAClE,KAERgB,SAAU,ySAAyDhB,MAC/D,KAEJiB,cAAe,yJAAiCjB,MAAM,KACtDkB,YAAa,yJAAiClB,MAAM,KACpDoB,eAAgB,CACZC,GAAI,4BACJC,IAAK,+BACLC,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,sCACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,8BACRC,KAAM,oCACNC,EAAG,oDACHC,GAAI,oCACJ/B,EAAG,wCACHgC,GAAI,8BACJC,EAAG,8CACHC,GAAI,8BACJhN,EAAG,wCACHiN,GAAI,wBACJG,EAAG,oDACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,yBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAKzBE,cAAe,4GACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,uBAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbC,EACAD,EACa,yCAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,6BAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,uCACAA,EAAO,GACP,2BAEA,sBAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyB/gB,CAAQ,EAAQ,U,gSCI1D,SAASkiK,EAAsBzlK,GAC3B,OAAgB,MAATA,GAAgC,UAAf,UAAGA,GAU/B,SAAS0lK,EAAqB1lK,GAAwB,IAAjB2lK,EAAiB,uDAAD,EACjD,OAAOC,EAAe5lK,GAASoN,OAAOpN,GAAS2lK,EAMnD,SAASC,EAAe5lK,GAIpB,OAAQ05C,MAAMptB,WAAWtsB,MAAY05C,MAAMtsC,OAAOpN,IAUtD,SAAS6lK,EAAY7lK,GACjB,OAAOgJ,MAAMyL,QAAQzU,GAASA,EAAQ,CAACA,GAW3C,SAAS8lK,EAAoB9lK,GACzB,OAAa,MAATA,EACO,GAEa,iBAAVA,EAAqBA,EAA5B,UAAuCA,EAAvC,MAcX,SAAS+lK,EAAcC,GACnB,OAAOA,aAAwB,IAAaA,EAAa3kK,cAAgB2kK,EA2B7E,SAASC,EAAkBjmK,GAAwB,IAAjBsgD,EAAiB,uDAAL,MACpCjlB,EAAS,GACf,GAAa,MAATr7B,EAAe,CACf,IADe,EACTkmK,EAAel9J,MAAMyL,QAAQzU,GAASA,EAAQ,UAAGA,GAAQghB,MAAMs/B,GADtD,cAEW4lH,GAFX,IAEf,2BAAwC,KAA7BC,EAA6B,QAC9BC,EAAgB,UAAGD,GAAc5qJ,OACnC6qJ,GACA/qI,EAAOh5B,KAAK+jK,IALL,+BASnB,OAAO/qI,I,oCC/GX,gDACM,SAAUgrI,EAAex7H,GAC3B,KAAOA,GAAU,CACb,IAAgB3P,EAA2B2P,EAA3B3P,YAChB,GAD2C2P,EAAnC5kB,QAAmC4kB,EAAdi6H,UAEzB,OAAO,EAGPj6H,EADK3P,GAAeA,aAAuB,IAChCA,EAGA,KAGnB,OAAO,I,4ICXX,aAKC,WAAoBtF,GAAA,KAAAA,O,OAEd,YAAA0wI,WAAN,W,kHACgB,SAAM7nK,KAAKm3B,KAAKjlB,IAAY,wBAAwB41J,a,aACnC,OAD1B1vI,EAAS,UACJC,OAAO7uB,OAAO,KAAY4uB,EAAOC,QAAU,KACtDr4B,KAAKo4B,OAASA,E,gDAPH2vI,GAAa,Y,yBAAbA,EAAa,QAAbA,EAAa,qBAFb,S,EADb,GAqBaC,EAAgB,SAAC5wI,GAC7B,OAAO,WAAqB,OAAAA,EAAcywI,gB,wBChBlC,SAAUxlJ,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,8FAA2FL,MAC/F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SACI,uFAAiFhB,MAC7E,KAERiB,cAAe,iCAA8BjB,MAAM,KACnDkB,YAAa,yCAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACN,OAAsB,IAAfvkB,KAAK8xC,OAA8B,IAAf9xC,KAAK8xC,MAC1B,8BACA,+BAEVttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,WACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,SACHiN,GAAI,UACJC,EAAG,aACHC,GAAI,aACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB/gB,CAAQ,EAAQ,U,kdCW1D,I,iBAsVMmjK,E,sDAENA,EAAc1nK,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKynK,IAC1EA,EAAc/uJ,UAAO,KAAwB,CAAExY,KAAMunK,IACrDA,EAAc9uJ,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAe,KAAkB,O,KAoDrF8uJ,E,8BACF,WAAYC,EAAmBC,EAAUC,EAAcC,GAAW,oBAC9DtoK,KAAKmoK,kBAAoBA,EACzBnoK,KAAKooK,SAAWA,EAChBpoK,KAAKqoK,aAAeA,EACpBroK,KAAKsoK,YAAcA,G,2BAEvB,SAAa5kB,EAAM1tD,EAAOuyE,EAAaC,GAAS,WACtCC,EAAWzoK,KAAKmoK,kBAAkBzkB,EAAM1tD,GAE9C,GADAuyE,EAAY3kK,KAAK6kK,GACbzoK,KAAKqoK,aAAaI,GAAW,CAC7B,IAAMC,EAAgB1oK,KAAKsoK,YAAY5kB,GACnCglB,IACIn+J,MAAMyL,QAAQ0yJ,GACd1oK,KAAK2oK,iBAAiBD,EAAe1yE,EAAOuyE,EAAaC,GAGzDE,EAAc1kK,KAAK,YAAK,IAAIE,UAAU,SAAA4D,GAClC,EAAK6gK,iBAAiB7gK,EAAUkuF,EAAOuyE,EAAaC,MAKpE,OAAOD,I,8BAEX,SAAiBzgK,EAAUkuF,EAAOuyE,EAAaC,GAAS,WACpD1gK,EAASuL,QAAQ,SAAC2mI,EAAOrwI,GACrB,IAAIi/J,EAAiBJ,EAAUh/J,QAC/Bo/J,EAAehlK,KAAK+F,GAAS7B,EAAS3D,OAAS,GAC/C,EAAK0kK,aAAa7uB,EAAOhkD,EAAQ,EAAGuyE,EAAaK,O,0BAQzD,SAAaE,GAAc,WACnBP,EAAc,GAElB,OADAO,EAAez1J,QAAQ,SAAAqwI,GAAI,OAAI,EAAKmlB,aAAanlB,EAAM,EAAG6kB,EAAa,MAChEA,I,kCAMX,SAAqBp0C,EAAO40C,GAAW,WAC/BxnC,EAAU,GACVynC,EAAgB,GAcpB,OAbAA,EAAc,IAAK,EACnB70C,EAAM9gH,QAAQ,SAAAqwI,GAEV,IADA,IAAIxlG,GAAS,EACJr2C,EAAI,EAAGA,GAAK,EAAKugK,SAAS1kB,GAAO77I,IACtCq2C,EAASA,GAAU8qH,EAAcnhK,GAEjCq2C,GACAqjF,EAAQ39H,KAAK8/I,GAEb,EAAK2kB,aAAa3kB,KAClBslB,EAAc,EAAKZ,SAAS1kB,GAAQ,GAAKqlB,EAAYrF,WAAWhgB,MAGjEniB,M,GAUT0nC,E,YACF,WAAYC,EAAcC,GAAgC,MAAhB/tJ,EAAgB,uDAAF,GAAE,4BACtD,aACK8tJ,aAAeA,EACpB,EAAKC,eAAiBA,EACtB,EAAKC,eAAiB,IAAI,IAAgB,IAC1C,EAAKC,cAAgB,IAAI,IAAgB,IACzC,EAAKp1J,MAAQ,IAAI,IAAgBmH,GANqB,E,uDAQ1D,WAAa,OAAOpb,KAAKiU,MAAM1S,O,IAC/B,SAASA,GACLvB,KAAKiU,MAAMpQ,KAAKtC,GAChBvB,KAAKopK,eAAevlK,KAAK7D,KAAKmpK,eAAeG,aAAatpK,KAAK8P,OAC/D9P,KAAKkpK,aAAaK,UAAYvpK,KAAKopK,eAAe7nK,Q,qBAEtD,SAAQioK,GAAgB,WAMpB,OAAO,IAAK,WAAL,EALS,CACZA,EAAiB/6J,WACjBzO,KAAKkpK,aAAaO,eAAe/pI,QACjC1/B,KAAKopK,iBAEgBplK,KAAK,YAAI,WAE9B,OADA,EAAKqlK,cAAcxlK,KAAK,EAAKslK,eAAeO,qBAAqB,EAAKN,eAAe7nK,MAAO,EAAK2nK,eAC1F,EAAKG,cAAc9nK,W,wBAGlC,gB,CA1BgC,M,mgBCje9B,E,mFACF,SAAKg7B,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAyBq4B,Q,GAGvD,E,kIACF,SAAMotI,Q,CAD6B3D,EAAA,GCJjC,E,mFACF,SAAKzpI,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAsBq4B,Q,GAGpD,E,YACF,WAAYE,GAAW,2B,EAAA,K,EAAA,E,EAAA,CACbA,G,qLAEV,SAAMl7B,GACFvB,KAAKy8B,YAAY54B,KAAKgjI,EAAA,EAAauG,WAAW7rI,M,oBAElD,SAAOo7B,GACH,IAAMF,EAAcz8B,KAAKy8B,YACzBA,EAAY54B,KAAKgjI,EAAA,EAAa+iC,YAAYjtI,IAC1CF,EAAY34B,a,uBAEhB,WACI,IAAM24B,EAAcz8B,KAAKy8B,YACzBA,EAAY54B,KAAKgjI,EAAA,EAAawG,kBAC9B5wG,EAAY34B,e,CAfgBkiK,EAAA,G,oVCR9B,SAAU6D,EAAQztI,EAAa0tI,EAAiBjpB,EAAkBkpB,GACpE,OAAO,SAACxjJ,GAAD,OAAYA,EAAO8V,KAAK,IAAI,EAAgBD,EAAa0tI,EAAiBjpB,EAAkBkpB,K,IAEjG,E,8BACF,WAAY3tI,EAAa0tI,EAAiBjpB,EAAkBkpB,GAAe,oBACvE/pK,KAAKo8B,YAAcA,EACnBp8B,KAAK8pK,gBAAkBA,EACvB9pK,KAAK6gJ,iBAAmBA,EACxB7gJ,KAAK+pK,gBAAkBA,G,mBAE3B,SAAKxtI,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAkBq4B,EAAYv8B,KAAKo8B,YAAap8B,KAAK8pK,gBAAiB9pK,KAAK6gJ,iBAAkB7gJ,KAAK+pK,sB,GAGhI,E,YACF,WAAYttI,EAAaL,EAAa0tI,EAAiBjpB,EAAkBkpB,GAAe,kCACpF,YAAMttI,KACDL,YAAcA,EACnB,EAAK0tI,gBAAkBA,EACvB,EAAKjpB,iBAAmBA,EACxB,EAAKkpB,gBAAkBA,EACvB,EAAKC,OAAS,KACd,EAAKC,wBAAyB,EAC9B,EAAK/yJ,MAAQ,EARuE,E,0DAUxF,SAAM3V,GACF,IAAIob,EACJ,IACIA,EAAM3c,KAAKo8B,YAAY76B,GAE3B,MAAOo7B,GAEH,YADA38B,KAAKg1B,MAAM2H,GAGf38B,KAAKq4J,OAAO92J,EAAOob,K,oBAEvB,SAAOpb,EAAOob,GACV,IAAIqtJ,EAAShqK,KAAKgqK,OACbA,IACDA,EAAShqK,KAAKgqK,OAAS,IAAIv8J,KAE/B,IACIpC,EADAwvI,EAAQmvB,EAAO93J,IAAIyK,GAEvB,GAAI3c,KAAK8pK,gBACL,IACIz+J,EAAUrL,KAAK8pK,gBAAgBvoK,GAEnC,MAAOo7B,GACH38B,KAAKg1B,MAAM2H,QAIftxB,EAAU9J,EAEd,IAAKs5I,EAAO,CACRA,EAAS76I,KAAK+pK,gBAAkB/pK,KAAK+pK,kBAAoB,IAAItmK,EAAA,EAC7DumK,EAAO31J,IAAIsI,EAAKk+H,GAChB,IAAMqvB,EAAoB,IAAI,EAAkBvtJ,EAAKk+H,EAAO76I,MAE5D,GADAA,KAAKy8B,YAAY54B,KAAKqmK,GAClBlqK,KAAK6gJ,iBAAkB,CACvB,IAAIrjG,EACJ,IACIA,EAAWx9C,KAAK6gJ,iBAAiB,IAAI,EAAkBlkI,EAAKk+H,IAEhE,MAAOl+G,GAEH,YADA38B,KAAKg1B,MAAM2H,GAGf38B,KAAK6C,IAAI26C,EAASt5C,UAAU,IAAI,EAAwByY,EAAKk+H,EAAO76I,SAGvE66I,EAAMrzH,QACPqzH,EAAMh3I,KAAKwH,K,oBAGnB,SAAOsxB,GACH,IAAMqtI,EAAShqK,KAAKgqK,OAChBA,IACAA,EAAO32J,QAAQ,SAACwnI,EAAOl+H,GACnBk+H,EAAM7lH,MAAM2H,KAEhBqtI,EAAOt5J,SAEX1Q,KAAKy8B,YAAYzH,MAAM2H,K,uBAE3B,WACI,IAAMqtI,EAAShqK,KAAKgqK,OAChBA,IACAA,EAAO32J,QAAQ,SAACwnI,EAAOl+H,GACnBk+H,EAAM/2I,aAEVkmK,EAAOt5J,SAEX1Q,KAAKy8B,YAAY34B,a,yBAErB,SAAY6Y,GACR3c,KAAKgqK,OAAOz3J,OAAOoK,K,yBAEvB,WACS3c,KAAKwnB,SACNxnB,KAAKiqK,wBAAyB,EACX,IAAfjqK,KAAKkX,OACL,mC,CAxFgB8uJ,EAAA,GA6F1B,E,YACF,WAAYrpJ,EAAKk+H,EAAOj0G,GAAM,kCAC1B,YAAMi0G,KACDl+H,IAAMA,EACX,EAAKk+H,MAAQA,EACb,EAAKj0G,OAASA,EAJY,E,0DAM9B,SAAMrlC,GACFvB,KAAK8D,a,0BAET,WACI,IAAQ8iC,EAAgB5mC,KAAhB4mC,OAAQjqB,EAAQ3c,KAAR2c,IAChB3c,KAAK2c,IAAM3c,KAAK4mC,OAAS,KACrBA,GACAA,EAAOujI,YAAYxtJ,O,CAdOqpJ,EAAA,GAkBzB,EAAb,YACI,WAAYrpJ,EAAKytJ,EAAcC,GAAoB,kCAC/C,aACK1tJ,IAAMA,EACX,EAAKytJ,aAAeA,EACpB,EAAKC,qBAAuBA,EAJmB,EADvD,+DAOI,SAAW9tI,GACP,IAAMy3E,EAAe,IAAI+wC,EAAA,EACjBslB,EAAuCrqK,KAAvCqqK,qBAAsBD,EAAiBpqK,KAAjBoqK,aAK9B,OAJIC,IAAyBA,EAAqB7iJ,QAC9CwsF,EAAanxG,IAAI,IAAI,EAA0BwnK,IAEnDr2D,EAAanxG,IAAIunK,EAAalmK,UAAUq4B,IACjCy3E,MAdf,CAAuCwmB,EAAA,GAiBjC,E,YACF,WAAY5zF,GAAM,kCACd,aACKA,OAASA,EACdA,EAAO1vB,QAHO,E,gEAKlB,WACI,IAAM0vB,EAAS5mC,KAAK4mC,OACfA,EAAOpf,QAAWxnB,KAAKwnB,SACxB,8BACAof,EAAO1vB,OAAS,EACK,IAAjB0vB,EAAO1vB,OAAe0vB,EAAOqjI,wBAC7BrjI,EAAOhxB,mB,CAZiBmvI,EAAA,G,oCC/IlC,SAAUulB,EAAWrO,EAAS92B,GAChC,OAAIA,EACO,SAAC5+G,GAAD,OAAYA,EAAOviB,KAAKsmK,EAAW,SAACvuJ,EAAGlU,GAAJ,OAAU,OAAAvD,EAAA,GAAK23J,EAAQlgJ,EAAGlU,IAAI7D,KAAK,OAAAyF,EAAA,GAAI,SAACuS,EAAGogJ,GAAJ,OAAWj3B,EAAeppH,EAAGC,EAAGnU,EAAGu0J,UAEjH,SAAC71I,GAAD,OAAYA,EAAO8V,KAAK,IAAI,EAAmB4/H,K,IAEpD,E,8BACF,WAAYA,GAAO,oBACfj8J,KAAKi8J,QAAUA,G,mBAEnB,SAAK1/H,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAqBq4B,EAAYv8B,KAAKi8J,c,GAGpE,E,YACF,WAAYx/H,EAAaw/H,GAAO,M,MAAA,2B,EAC5B,K,EAAA,E,EAAA,CAAMx/H,G,kBAAN,E,iGACKw/H,QAAUA,EACf,EAAKsO,iBAAkB,EACvB,EAAKhO,cAAe,EACpB,EAAK5yJ,MAAQ,EALe,E,0DAOhC,SAAMpI,GACGvB,KAAKuqK,iBACNvqK,KAAKwqK,QAAQjpK,K,qBAGrB,SAAQA,GACJ,IAAIq7B,EACEjzB,EAAQ3J,KAAK2J,QACnB,IACIizB,EAAS58B,KAAKi8J,QAAQ16J,EAAOoI,GAEjC,MAAOgzB,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAG3B38B,KAAKuqK,iBAAkB,EACvBvqK,KAAK08J,UAAU9/H,K,uBAEnB,SAAUA,GACN,IAAMggI,EAAkB,IAAI,IAAsB58J,MAC5Cy8B,EAAcz8B,KAAKy8B,YACzBA,EAAY55B,IAAI+5J,GAChB,IAAM5b,EAAoB,OAAAC,EAAA,GAAerkH,EAAQggI,GAC7C5b,IAAsB4b,GACtBngI,EAAY55B,IAAIm+I,K,uBAGxB,WACIhhJ,KAAKu8J,cAAe,EACfv8J,KAAKuqK,iBACNvqK,KAAKy8B,YAAY34B,WAErB9D,KAAK4V,gB,wBAET,SAAWu+F,GACPn0G,KAAKy8B,YAAY54B,KAAKswG,K,yBAE1B,SAAYx3E,GACR38B,KAAKy8B,YAAYzH,MAAM2H,K,4BAE3B,WACI38B,KAAKuqK,iBAAkB,EACnBvqK,KAAKu8J,cACLv8J,KAAKy8B,YAAY34B,e,CAnDM,KCX7B,E,mFACF,SAAKy4B,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAwBq4B,Q,GAGtD,E,YACF,WAAYE,GAAW,2B,EAAA,K,EAAA,E,EAAA,CACbA,G,qLAEV,SAAMl7B,GACFA,EAAM+rI,QAAQttI,KAAKy8B,iB,CALWupI,EAAA,G,kMCHtC,IAAMyE,EAAwB,CAC1B/xI,UAAU,EACVgyI,wBAAwB,GAEtBC,EAA6B,2BA0CnC,SAASC,EAAwB92I,GAkB7B,OAjBsBtX,OAAOquJ,oBAAoB/2I,GAE5C3e,OAAO,SAACg5I,GACT,SAAIr6H,EAASq6H,KACTr6H,EAASq6H,GAAczgH,eAAei9H,KAIrB72I,EAASq6H,GACVwc,GAA4Bj9H,eAAe,cAI9DjkC,IAAI,SAAC0kJ,GAEN,OAAO3xI,OAAOuqB,OAAO,CAAEonH,gBADNr6H,EAASq6H,GAAcwc,MAMhD,SAASG,EAAqBh3I,GAC1B,OAAOtX,OAAO24H,eAAerhH,GAGjC,IAAMi3I,EAAe,oBAKrB,SAASC,IAAkB,IAAX5yI,EAAW,uDAAF,GACrB,OAAO,SAAU5L,EAAQ2hI,GAGrB8c,GAAuBz+I,EAFNhQ,OAAOuqB,OAAOvqB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI0jI,GAAwBryI,GAAS,CAC5F+1H,mBAIZ,SAAS+c,EAA2Bp3I,GAEhC,OAD0B,YAAQq3I,GAA0BL,EAAlC,CAAwDh3I,GAOtF,SAASs3I,EAAmBC,GACxB,OAAOA,EAAYn7H,YAAYxC,eAAeq9H,GAGlD,SAASE,GAAuBI,EAAa9gC,GACrC6gC,EAAmBC,GACnBA,EAAYn7H,YAAY66H,GAAcnnK,KAAK2mI,GAG3C/tH,OAAOu3B,eAAes3H,EAAYn7H,YAAa66H,EAAc,CACzDxpK,MAAO,CAACgpI,KAIpB,SAAS4gC,GAAyBE,GAC9B,OAAOD,EAAmBC,GACpBA,EAAYn7H,YAAY66H,GACxB,GA0CV,SAASO,GAA2BC,EAAaC,GAA6D,IAA/CC,EAA+C,uDADzE,GAEjC,OAAOF,EAAYvnK,KAAK,OAAAyjI,EAAA,GAAW,SAACzyG,GAGhC,OAFIw2I,GACAA,EAAaE,YAAY12I,GACzBy2I,GAAoB,EACbF,EAGJD,GAA2BC,EAAaC,EAAcC,EAAmB,M,sBAIlFE,E,YACF,WAAYplJ,GAAM,iCACd,YACIA,IACA,EAAKA,OAASA,GAHJ,E,yDAMlB,SAAKqlJ,GACD,IAAM9/H,EAAa,IAAI6/H,EAGvB,OAFA7/H,EAAWvlB,OAASvmB,KACpB8rC,EAAW8/H,SAAWA,EACf9/H,M,CAXO0uF,EAAA,G,OActBmxC,EAAQprK,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKmrK,GAAS,KAAgB,OACvFA,EAAQ/mK,WAAQ,KAA0B,CAAEC,MAAO8mK,EAAS7mK,QAAS6mK,EAAQprK,Y,KAW7E,SAASsrK,KAAsB,2BAAZC,EAAY,yBAAZA,EAAY,gBAC3B,OAAO,OAAA32J,EAAA,GAAO,SAAC4tD,GAAD,OAAY+oG,EAAa1jK,KAAK,SAAC2jK,GACzC,MAAmC,iBAAxBA,EAEAA,IAAwBhpG,EAAOriE,KAGnCqrK,EAAoBrrK,OAASqiE,EAAOriE,SAyCnD,SAASsrK,GAAgBl4I,GACrB,OAAOm4I,GAAWn4I,EAFA,qBAItB,SAASm4I,GAAWn4I,EAAUo4I,GAC1B,OAAQp4I,GACJo4I,KAAgBp4I,GACkB,mBAA3BA,EAASo4I,GAGxB,IAAMC,GAAsB,IAAI,IAAe,qCACzCC,GAAwB,IAAI,IAAe,uCAC3CC,GAAgB,IAAI,IAAe,uCACnCC,GAAe,IAAI,IAAe,8BAClCC,GAAmB,IAAI,IAAe,0CACtCC,GAAkB,IAAI,IAAe,iCACrCC,GAAwB,IAAI,IAAe,uC,kBAE3CC,E,YACF,WAAYlB,EAAcmB,GAAmB,kCACzC,aACKnB,aAAeA,EACpB,EAAKmB,oBAAsBA,EAHc,E,+DAK7C,SAAWC,GACP5sK,KAAK6D,KAAK+oK,K,uBAKd,WAAS,WACL,OAAO5sK,KAAKgE,KAAK6lK,EAAQiB,GAAuB,OAAApjC,EAAA,GAAS,SAACmlC,GACtD,OAAOA,EAAQ7oK,KAAK6lK,EAAQiD,OAC5B,OAAAplC,EAAA,GAAS,SAACmlC,GACV,IAAME,EAAUF,EAAQ7oK,KAAKsmK,EAAW,SAAC0C,GACrC,OA+BaxB,EA/Bc,EAAKA,aA+BLmB,EA/BmB,EAAKA,oBAgCxD,SAACK,GACJ,IAAMC,EAlLd,SAAsBD,EAAgBE,EAAoBP,GACtD,IATuB74I,EASjBq5I,EAAarC,EAAqBkC,GAAgB98H,YAAY/uC,KAC9DisK,GAViBt5I,EAUgBk5I,EATvB,CACZ9B,EACAN,GAEWn1J,OAAO,SAAC+xD,EAASjhD,GAAV,OAAqBihD,EAAQxuD,OAAOuN,EAAOuN,KAAY,KAKtBrqB,IAAI,YAAwD,IAArD0kJ,EAAqD,EAArDA,aAAcz1H,EAAuC,EAAvCA,SAAUgyI,EAA6B,EAA7BA,uBAC5Ea,EAAsD,mBAAjCyB,EAAe7e,GACpC6e,EAAe7e,KACf6e,EAAe7e,GACfkf,EAAgB3C,EAChBiC,EAAoBpB,EAAa2B,GACjC3B,EACN,OAAiB,IAAb7yI,EACO20I,EAAcrpK,KL7ItB,SAAwCuiB,GAC3C,OAAOA,EAAO8V,KAAK,IAAI,KK8IDgxI,EAAcrpK,KJ9IjC,SAAqCuiB,GACxC,OAAOA,EAAO8V,KAAK,IAAI,KI8IFr4B,KAAK,OAAAyF,EAAA,GAAI,SAACujI,GAAD,MAAmB,CAC7CsgC,OAAQN,EAAe7e,GACvBnhB,eACAmhB,eACAgf,aACAH,uBAGR,OAAO3vJ,EAAA,EAAK,WAAL,cAAS+vJ,IA6JWG,CAAaP,EAAgBxB,EAAcmB,GAClE,OAvEGV,GAuEgBe,EAzEH,oBA0ELA,EAAeQ,iBAAiBP,GAEpCA,IArCyED,GA+BxF,IAA6BxB,EAAcmB,IA9B3B,OAAAljK,EAAA,GAAI,SAAC0iC,GAEL,OA1EhB,SAA8BA,EAAQshI,GAClC,GAAiC,MAA7BthI,EAAO6gG,aAAa99F,KAAc,CAClC,IAAM6zB,EAAS52B,EAAO6gG,aAAazrI,OAO3C,SAAkBwhE,GACd,MAA0B,mBAAXA,GACXA,GACAA,EAAOriE,MACgB,iBAAhBqiE,EAAOriE,KAVWgtK,CAAS3qG,IAE9B0qG,EAAS/B,YAAY,IAAIr3I,MAAJ,kBAUjC,EAVmE8X,EAU1CgiH,EAA2C,EAA3CA,aACfwf,EAAmD,mBADO,EAA7BX,eACI7e,GACvC,WAFgE,EAAbgf,WAEnD,YAAyB99H,OAAO8+G,IAAhC,OAAgDwf,EAAW,KAAO,GAAlE,MAZ6B,0CAcjC,SAAmB5qG,GACf,IACI,OAAOvpC,KAAKC,UAAUspC,GAE1B,MAAOp4D,GACH,OAAOo4D,GAnB6FtpC,CAAUspC,MAUtH,MAAyBorF,EACfwf,EAyDMC,CAAqBzhI,EAAQ,EAAKq/H,cAC3Br/H,EAAO6gG,eACd,OAAA73H,EAAA,GAAO,SAAC63H,GAAD,MAAwC,MAAtBA,EAAa99F,MAAsC,MAAtB89F,EAAazrI,QDxRxE,SAAuCglB,GAC1C,OAAOA,EAAO8V,KAAK,IAAI,KC0RbwxI,EAAQhB,EAAQ7oK,KAAK,OAAAW,EAAA,GAAK,GAAI,OAAAwQ,EAAA,GAAO62J,IAAkB,OAAAviK,EAAA,GAAI,SAACqqB,GAAD,OAAcA,EAASg6I,uBACxF,OAAO,OAAAzwJ,EAAA,GAAM0vJ,EAASc,U,CAzBNpqK,EAAA,G,OA6B5BipK,EAAcnsK,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKksK,GAAe,KAAgB,KAAsB,KAAgBD,MAC/IC,EAAc9nK,WAAQ,KAA0B,CAAEC,MAAO6nK,EAAe5nK,QAAS4nK,EAAcnsK,Y,KAY/F,SAASusK,GAAgBE,GACrB,OAnEOf,GAmEiBe,EArEC,yBAsEdA,EAAee,wBAEnB,G,sBAYLC,E,8BACF,WAAYC,EAAe32I,GAAK,oBAC5Bt3B,KAAKiuK,cAAgBA,EACrBjuK,KAAKs3B,MAAQA,EACbt3B,KAAKkuK,oBAAsB,M,oBAE/B,WACSluK,KAAKkuK,sBACNluK,KAAKkuK,oBAAsBluK,KAAKiuK,cAC3BE,YACAjqK,UAAUlE,KAAKs3B,U,yBAG5B,WACQt3B,KAAKkuK,sBACLluK,KAAKkuK,oBAAoBt4J,cACzB5V,KAAKkuK,oBAAsB,U,UAIvCF,EAAcztK,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKwtK,GAAe,KAAgB,IAAgB,KAAgB,OACzIA,EAAcppK,WAAQ,KAA0B,CAAEC,MAAOmpK,EAAelpK,QAASkpK,EAAcztK,Y,KAUzF6tK,GAAoB,qB,IACF,YAAaA,I,eAC/BC,E,8BACF,WAAY7mG,EAAS8mG,EAAQh3I,EAAOi3I,EAAaC,EAAiBC,EAAoBC,GAAK,oBACvF1uK,KAAKwnE,QAAUA,EACf8mG,EAAOnlK,QACPolK,EAAYl7J,QAAQ,SAACu5J,GAAD,OAA0BplG,EAAQmnG,WAAW/B,KACjEt1I,EAAMoB,SAAS,CAAEh4B,KAAM0tK,M,yBAE3B,SAAWxB,GACP5sK,KAAKwnE,QAAQmnG,WAAW/B,O,UAGhCyB,EAAkB9tK,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAK6tK,GAAmB,KAAgB,IAAgB,KAAgB,IAAgB,KAAgB,KAAe,KAAgB/B,IAAe,KAAgB,IAAwB,GAAI,KAAgB,IAA2B,GAAI,KAAgBH,GAAqB,KACnWkC,EAAkBn1J,UAAO,KAAwB,CAAExY,KAAM2tK,IACzDA,EAAkBl1J,UAAO,KAAwB,I,wBA4B3Cy1J,E,YACF,WAAYxvF,EAAMyvF,EAAoBL,EAAiBC,GAAkB,oBACrEI,EAAmBx7J,QAAQ,SAACwnI,GAAD,OAAWA,EAAMxnI,QAAQ,SAACu5J,GAAD,OAA0BxtF,EAAKuvF,WAAW/B,S,OAGtGgC,EAAqBruK,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKouK,GAAsB,KAAgB,IAAoB,KAAgBpC,IAAkB,KAAgB,IAAwB,GAAI,KAAgB,IAA2B,KAC3QoC,EAAqB11J,UAAO,KAAwB,CAAExY,KAAMkuK,IAC5DA,EAAqBz1J,UAAO,KAAwB,I,uBAoB9C21J,E,8FACF,WAAqC,IAAnBC,EAAmB,uDAAF,GAC/B,MAAO,CACHhwD,SAAU,GACV5sF,UAAW,CACP48I,EACA,CACIxsK,QAASgqK,GACT7iJ,OAAO,EACP9Q,SAAUm2J,GAEd,CACIxsK,QAAS6pK,GACT1iJ,OAAO,EACP9Q,SAAU,IAEd,CACIrW,QAASiqK,GACT9iJ,OAAO,EACPN,WAAY4lJ,GACZ7lJ,KAAM,CAAC,IAAUojJ,GAAkBH,S,qBAKnD,WAA+B,IAAhBmC,EAAgB,uDAAF,GACzB,MAAO,CACHxvD,SAAU,GACV5sF,UAAW,CACP,CACI5vB,QAASkqK,GACT7zJ,SAAU0yJ,IAEd,GACA,GACA,GACAiD,EACA,CACIhsK,QAAS8pK,GACTzzJ,SAAU,CAAC21J,IAEf,CACIhsK,QAAS4pK,GACT/iJ,WAAY6lJ,GACZ9lJ,KAAM,CACF,CAAC,GAAe,IAAI,IAAY,IAAI,KACpC,CAACkjJ,GAAe,IAAI,OAG5B,CACI9pK,QAAS6pK,GACT1iJ,OAAO,EACP9Q,SAAU,IAEd,CACIrW,QAAS+pK,GACTljJ,WAAY4lJ,GACZ7lJ,KAAM,CAAC,IAAUkjJ,GAAeD,W,UAMpD0C,EAAcvuK,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKsuK,IAC1EA,EAAc51J,UAAO,KAAwB,CAAExY,KAAMouK,IACrDA,EAAc31J,UAAO,KAAwB,I,KAK7C,SAAS61J,GAAc7vJ,EAAU+vJ,EAAcC,GAC3C,IADmE,EAC7DC,EAAgB,GAD6C,cAE3CF,GAF2C,IAEnE,2BAAsC,KAA7BG,EAA6B,QAClCD,EAAcxrK,KAAd,MAAAwrK,EAAa,YAASC,KAHyC,kDAK/BF,GAL+B,IAKnE,2BAA8D,KAArDG,EAAqD,QAC1DF,EAAcxrK,KAAd,MAAAwrK,EAAa,YAASE,KANyC,8BAQnE,OAEJ,SAA+BnwJ,EAAUowJ,GACrC,OAAOA,EAAQ9lK,IAAI,SAAC6jK,GAAD,OAAYnuJ,EAASjN,IAAIo7J,KAHrCkC,CAAsBrwJ,EAAUiwJ,GAK3C,SAASH,GAAqBX,EAAQC,GAGlC,IAD4C,IAAvBA,EAAYpqK,QAA0C,IAA1BoqK,EAAY,GAAGpqK,SAC9CmqK,EACd,MAAM,IAAI97H,UAAJ,wGAEV,MAAO,Y,oCC7fX,oCAUai9H,EAVwB,WACjC,SAASC,IAIL,OAHAr7I,MAAMa,KAAKl1B,MACXA,KAAKg6B,QAAU,sBACfh6B,KAAKmB,KAAO,0BACLnB,KAGX,OADA0vK,EAA4Bh9I,UAAYlW,OAAOlX,OAAO+uB,MAAM3B,WACrDg9I,EAR0B,I,wBCS5B,SAAUrtJ,GAAU,aA4ChBA,EAAOM,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,aACA,aACA,gBACA,kBACA,cACA,iBACA,eACA,gBACA,eACA,mBA8BJC,YA5Bc,CACV,OACA,OACA,UACA,OACA,UACA,UACA,OACA,SACA,OACA,UACA,OACA,WAiBJoU,kBAAkB,EAClB1T,SAhBW,CACP,iBACA,UACA,aACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,QAAM,KAAM,QAAM,KAAM,KAAM,KAAM,MASnDE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,yBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACNC,EAAG,gBACHC,GAAI,YACJ/B,EAAG,UACHgC,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJhN,EAAG,QACHiN,GAAI,WACJG,EAAG,UACHC,GAAI,eACJC,EAAG,WACHC,GAAI,eAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB/gB,CAAQ,EAAQ,U,wBCGjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,0TAAgEL,MACpE,KAEJM,YAAa,sOAAkDN,MAAM,KACrEgB,SACI,2WAAoEhB,MAChE,KAERiB,cAAe,iIAA6BjB,MAAM,KAClDkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iHACJC,IAAK,wHACLC,KAAM,+HAEVC,SAAU,CACNC,QAAS,6EACTC,QAAS,6EACTE,QAAS,6EACTD,SAAU,wFACVE,SAAU,wFACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUynB,GAMd,OAAOA,GALK,mCAAUuS,KAAKvS,GACrB,qBACA,uBAAQuS,KAAKvS,GACX,qBACA,uBAGZxnB,KAAM,0CACNC,EAAG,6EACHC,GAAI,gDACJ/B,EAAG,oDACHgC,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJhN,EAAG,wCACHiN,GAAI,wBACJG,EAAG,8CACHC,GAAI,8BACJC,EAAG,wCACHC,GAAI,yBAERC,uBAAwB,6BACxBC,QAAS,wBACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB/gB,CAAQ,EAAQ,U,gnBCuB1D,IAAMrF,EAAM,CAAC,KAmBPkwK,EAAkB,IAAI,IAAe,iBAMrCC,EAAkB,IAAI,IAAe,iBAMrCC,EAAyB,IAAI,IAAe,uBAG5CC,E,YACF,WAAY/iK,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrBgjK,EAAoB,YAAc,YAAW,YAAmBD,GAAc,YAAa,G,iBAoC3FE,E,YACF,WAAYjjK,EAAazJ,EAAS0jB,EAAUipJ,EAAqBnjK,EAAoBI,EAAWgjK,EAAe/5H,GAAQ,kCACnH,YAAMppC,KACDA,YAAcA,EACnB,EAAKzJ,QAAUA,EACf,EAAKwJ,mBAAqBA,EAE1B,EAAKqjK,WAAY,EAEjB,EAAKC,oBAAqB,EAE1B,EAAKC,mBAAoB,EAEzB,EAAKC,mBAAoB,EACzB,EAAK1wI,WAAY,EACjB,EAAK2wI,aAAc,EACnB,EAAKpwD,WAAY,EACjB,EAAKqwD,YAAa,EAElB,EAAKC,SAAW,IAAI,IAEpB,EAAKC,QAAU,IAAI,IAEnB,EAAKC,gBAAkB,IAAI,IAE3B,EAAK7P,UAAY,IAAI,IAErB,EAAKvgI,QAAU,IAAI,IACnB,EAAKqwI,oBAIL,EAAKC,kBAAoB3jK,EAAU2K,cAAc,OACjD,EAAKg5J,kBAAkBluK,UAAUE,IAAI,mBACrC,EAAKkK,YAAYnK,cAAckV,YAAY,EAAK+4J,mBAChD,EAAKC,YAAc,IAAI,IAAJ,EAAyBxtK,EAAS,EAAKutK,kBAAmB7pJ,GAC7E,EAAK8pJ,YAAYC,mBAAmBhkK,GACpC,EAAKikK,aAAef,GAAuB,GAC3C,EAAKgB,oBAAwC,mBAAlBf,EAC3B,EAAK/5H,SAAuB,MAAZA,GAAoB3G,SAAS2G,KAAoB,EAtCkD,E,iEA4CvH,WACI,OAAOn2C,KAAKgtB,UAAYhtB,KAAK+oB,eAAiB/oB,KAAKixK,uBAC7CjxK,KAAKgxK,aAAahkJ,W,oBAG5B,WAAiB,OAAOhtB,KAAK4/B,W,IAC7B,SAAar+B,GACT,IAAM2vK,EAAe,YAAsB3vK,GACvC2vK,IAAiBlxK,KAAK4/B,YACtB5/B,KAAK4/B,UAAYsxI,EACjBlxK,KAAKmxK,8B,iBAIb,WACI,YAAuB1sK,IAAhBzE,KAAKkgH,OACNlgH,KAAKkgH,OACLlgH,KAAK+M,YAAYnK,cAAc4wG,a,IAEzC,SAAUjyG,GAASvB,KAAKkgH,OAAS3+G,I,sBAOjC,WAAmB,OAAOvB,KAAKuwK,aAAevwK,KAAKowK,oB,IACnD,SAAe7uK,GACXvB,KAAKuwK,YAAc,YAAsBhvK,K,oBAG7C,WAAiB,OAAOvB,KAAKswK,mBAAqBtwK,KAAKmgH,W,IACvD,SAAa5+G,GACTvB,KAAKmgH,UAAY,YAAsB5+G,K,qBAK3C,WAAkB,OAAOvB,KAAKwwK,Y,IAC9B,SAAcjvK,GACVvB,KAAKwwK,WAAa,YAAsBjvK,K,wBAG5C,WAGI,OAAOvB,KAAKmvD,aAAenvD,KAAKqwK,mBAAqBrwK,KAAKivB,UACtDjvB,KAAKivB,SAASgD,WAAa,O,+BAEnC,WACI,IAAMm/I,EAAoB,iBACpB/lK,EAAUrL,KAAK+M,YAAYnK,cAC7ByI,EAAQ09B,aAAaqoI,IACrB/lK,EAAQgmK,QAAQz0J,gBAAkBw0J,EAClC/lK,EAAQ1I,UAAUE,IAAIuuK,GAItB/lK,EAAQ1I,UAAUE,IAAI,uB,yBAG9B,WACI7C,KAAK8gK,UAAU5+I,KAAK,CAAEovJ,KAAMtxK,OAC5BA,KAAK8wK,YAAYS,yB,oBAGrB,WACSvxK,KAAK4/B,YACN5/B,KAAK4/B,WAAY,EACjB5/B,KAAKmxK,2BACLnxK,KAAK8M,mBAAmBkK,kB,sBAIhC,WACQhX,KAAK4/B,YACL5/B,KAAK4/B,WAAY,EACjB5/B,KAAKmxK,2BACLnxK,KAAK8M,mBAAmBkK,kB,kCAIhC,WACShX,KAAK4/B,YACN5/B,KAAK4/B,WAAY,EACjB5/B,KAAKmxK,0BAAyB,GAC9BnxK,KAAK8M,mBAAmBkK,kB,4BAIhC,WAAkC,IAAnBw6J,EAAmB,wDAI9B,OAHAxxK,KAAK4/B,WAAa5/B,KAAKivB,SACvBjvB,KAAKmxK,yBAAyBK,GAC9BxxK,KAAK8M,mBAAmBkK,eACjBhX,KAAKivB,W,mBAGhB,WACSjvB,KAAKmwK,YACNnwK,KAAK+M,YAAYnK,cAAcksB,QAC/B9uB,KAAKywK,SAAS5sK,KAAK,CAAEytK,KAAMtxK,QAE/BA,KAAKmwK,WAAY,I,oBAQrB,WACQnwK,KAAKyxK,WACLzxK,KAAKugC,QAAQre,KAAK,CAAEovJ,KAAMtxK,S,0BAIlC,SAAasoB,GACLtoB,KAAKgtB,SACL1E,EAAM4E,iBAGN5E,EAAMsH,oB,4BAId,SAAetH,GACX,IAAItoB,KAAKgtB,SAGT,OAAQ1E,EAAM2E,SACV,KAAK,IACL,KAAK,IAEDjtB,KAAKwL,SAEL8c,EAAM4E,iBACN,MACJ,KAAK,IAEGltB,KAAKmvD,YACLnvD,KAAK0xK,gBAAe,GAGxBppJ,EAAM4E,oB,mBAIlB,WAAK,WAKDltB,KAAKsD,QAAQoB,SACRV,KAAK,YAAK,IACVE,UAAU,WACX,EAAKZ,QAAQgpC,IAAI,WACb,EAAK6jI,WAAY,EACjB,EAAKO,QAAQ7sK,KAAK,CAAEytK,KAAM,U,sCAItC,WAA4C,IAAnBE,EAAmB,wDACxCxxK,KAAK2wK,gBAAgBzuJ,KAAK,CACtBqE,OAAQvmB,KACRwxK,cACAviJ,SAAUjvB,KAAK4/B,gB,CAlNLmwI,G,OAsNtBC,EAAQzvK,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKwvK,GAAS,KAAyB,KAAoB,KAAyB,KAAgB,KAAyB,KAAkB,KAAyB,IAA2B,GAAI,KAAyB,KAA2B,KAAyB,KAAW,KAAyB,IAAuB,GAAI,KAAyB,cACraA,EAAQvvK,UAAO,KAAyB,CAAEC,KAAMsvK,EAASrvK,UAAW,CAAC,CAAC,kBAAmB,CAAC,GAAI,iBAAkB,IAAK,CAAC,YAAa,CAAC,GAAI,WAAY,KAAMe,eAAgB,SAAgCC,EAAIC,EAAKC,GAK3M,IAAIC,EAL4N,EAALH,IAC3N,KAAsBE,EAAU+tK,EAAiB,GACjD,KAAsB/tK,EAAUguK,EAAwB,GACxD,KAAsBhuK,EAAU8tK,EAAiB,IAC1C,EAALhuK,IAEF,KAAsBG,EAAK,UAA0BF,EAAI+vK,OAAS7vK,EAAGE,OACrE,KAAsBF,EAAK,UAA0BF,EAAIgwK,aAAe9vK,EAAGE,OAC3E,KAAsBF,EAAK,UAA0BF,EAAIiwK,WAAa/vK,EAAGE,SACxEe,UAAW,CAAC,OAAQ,SAAU,EAAG,WAAY,uBAAwBwV,SAAU,GAAIC,aAAc,SAA8B7W,EAAIC,GAAgB,EAALD,GAC/I,KAAkB,QAAS,SAA0CmwB,GAAU,OAAOlwB,EAAIkwK,aAAahgJ,IAAvG,CAAmH,UAAW,SAA4CA,GAAU,OAAOlwB,EAAIowB,eAAeF,IAA9M,CAA0N,QAAS,WAA8C,OAAOlwB,EAAIktB,SAA5R,CAAwS,OAAQ,WAA6C,OAAOltB,EAAImwK,UACjW,EAALpwK,IACF,KAAmB,WAAYC,EAAIorB,SAAW,KAAOprB,EAAIu0C,SAAzD,CAAmE,WAAYv0C,EAAIorB,UAAY,KAA/F,CAAqG,gBAAiBprB,EAAIorB,SAASiF,WAAnI,CAA+I,gBAAiBrwB,EAAIowK,cACpK,KAAmB,oBAAqBpwK,EAAIqtB,SAA5C,CAAsD,uBAAwBrtB,EAAI+vK,OAAlF,CAA0F,8BAA+B/vK,EAAIgwK,cAAgBhwK,EAAIiwK,WAAjJ,CAA6J,oBAAqBjwK,EAAIorB,SAAtL,CAAgM,0BAA2BprB,EAAIqvK,uBAC9N9uK,OAAQ,CAAE0zD,MAAO,QAAS9sC,cAAe,gBAAiBotB,SAAU,WAAYlnB,SAAU,WAAY1tB,MAAO,QAAS4tD,WAAY,aAAcniC,SAAU,WAAYykJ,UAAW,aAAetvJ,QAAS,CAAEwuJ,gBAAiB,kBAAmB7P,UAAW,YAAavgI,QAAS,WAAa7nB,SAAU,CAAC,WAAYpW,SAAU,CAAC,Q,sBAuGlU2vK,E,8BACF,WAAYC,EAAaxvK,GAAU,oBAC/B1C,KAAKkyK,YAAcA,EACuB,WAAtCxvK,EAAWE,cAAckM,UACzBpM,EAAWE,cAAciM,aAAa,OAAQ,W,2BAItD,SAAayZ,GACT,IAAM6pJ,EAAanyK,KAAKkyK,YACpBC,EAAWV,YAAcU,EAAWnlJ,UACpCmlJ,EAAW3mK,SAOf8c,EAAMsH,sB,UAGdqiJ,EAAc1xK,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKyxK,GAAe,KAAyBjC,GAAU,KAAyB,OACrJiC,EAAcxxK,UAAO,KAAyB,CAAEC,KAAMuxK,EAAetxK,UAAW,CAAC,CAAC,GAAI,gBAAiB,KAAMoC,UAAW,CAAC,EAAG,kBAAmB,0BAA2ByV,aAAc,SAAoC7W,EAAIC,GAAgB,EAALD,GACnO,KAAkB,QAAS,SAAgDmwB,GAAU,OAAOlwB,EAAIkwK,aAAahgJ,MAC5GxvB,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAASotK,EAAiBntK,YAAayvK,Q,KAyBlFG,EAA4B,IAAI,IAAe,6BAW/CC,E,YACF,WAAYC,EAA2BC,EAAaC,EAEpDC,GAAS,oBACLzyK,KAAKsyK,0BAA4BA,EACjCtyK,KAAKuyK,YAAcA,EACnBvyK,KAAKwyK,iBAAmBA,EACxBxyK,KAAKyyK,UAAYA,IAGnBC,EAAwB,YAAgBL,GAE1CzgE,EAAe,EAEb+gE,E,YACF,WAEApsJ,EAEAhlB,GAAK,oBACDvB,KAAKumB,OAASA,EACdvmB,KAAKuB,MAAQA,I,iBAMfqxK,E,YACF,WAAY7lK,EAAaD,EAAoBG,EAAMslK,EAAaC,EAAkBF,EAElFG,GAAS,kCACL,YAAMH,EAA2BC,EAAaC,EAAkBC,KAC3D1lK,YAAcA,EACnB,EAAKD,mBAAqBA,EAC1B,EAAKG,KAAOA,EACZ,EAAKwlK,UAAYA,EAKjB,EAAKI,YAAc,gBAMnB,EAAKC,wBAA0B,KAE/B,EAAKtvK,WAAa,IAAI,IAEtB,EAAKuvK,KAAL,wBAA6BnhE,KAE7B,EAAKohE,UAAY,EAKjB,EAAKC,cAAgB,KAErB,EAAKroJ,WAAa,aAElB,EAAKD,UAAY,aACjB,EAAKyU,WAAY,EACjB,EAAK++G,aAAe,SAAC+0B,EAAIC,GAAL,OAAYD,IAAOC,GACvC,EAAK7gE,WAAY,EACjB,EAAK6N,WAAY,EAEjB,EAAKizD,gBAAkB,aACvB,EAAK7C,aAAc,EAEnB,EAAKxgK,OAAS,IAAI,IAMlB,EAAKsjK,YAAc,IAAI,IACnB,EAAKZ,YACL,EAAKA,UAAUhhC,cAAf,GAhDC,E,2DAoDT,WACI,OAAOzxI,KAAKszK,SAAWtzK,KAAKuzK,gBAAgBtkJ,SAAWjvB,KAAKuzK,gBAAgBtkJ,SAAS,K,gBAGzF,WAAa,OAAOjvB,KAAKwzK,MAAQ,KAAO,Y,oBAExC,WAAiB,OAAOxzK,KAAKo/B,W,IAC7B,SAAa79B,GACTvB,KAAKo/B,UAAY,YAAsB79B,GACvCvB,KAAKyzK,oB,uBAOT,WAAoB,OAAOzzK,KAAKm+I,c,IAChC,SAAgBnvI,GACZhP,KAAKm+I,aAAenvI,EAChBhP,KAAKuzK,iBAELvzK,KAAK0zK,yB,iBAOb,WAAc,OAAO1zK,KAAKkgH,Q,IAC1B,SAAU3+G,GACNvB,KAAK4/G,WAAWr+G,GAChBvB,KAAKkgH,OAAS3+G,I,cAMlB,WACI,OAAOvB,KAAK2zK,WAAa3zK,KAAK2zK,WAAW3tJ,GAAKhmB,KAAK+yK,O,oBAMvD,WAAiB,OAAO/yK,KAAKsyG,W,IAC7B,SAAa/wG,GACTvB,KAAKsyG,UAAY,YAAsB/wG,GACvCvB,KAAK4zK,aAAa/vK,S,uBAMtB,WACI,OAAO7D,KAAK2zK,WAAa3zK,KAAK2zK,WAAWhpB,YAAc3qJ,KAAK0oJ,c,IAEhE,SAAgBnnJ,GACZvB,KAAK0oJ,aAAennJ,EACpBvB,KAAK4zK,aAAa/vK,S,mBAGtB,WACI,OAAQ7D,KAAK2zK,YAAc3zK,KAAK2zK,WAAW9+D,SAAY70G,KAAK6zK,oB,iBAMhE,WACI,QAAS7zK,KAAK2zK,YAAc3zK,KAAK2zK,WAAWH,UAAYxzK,KAAK8zK,OAA+B,IAAtB9zK,KAAK8zK,MAAM3vK,U,4BAMrF,WAAyB,OAAQnE,KAAKwzK,OAASxzK,KAAK60G,U,oBAKpD,WAAiB,OAAO70G,KAAKyyK,YAAczyK,KAAKyyK,UAAUzlJ,SAAWhtB,KAAKmgH,W,IAC1E,SAAa5+G,GACTvB,KAAKmgH,UAAY,YAAsB5+G,GACvCvB,KAAKyzK,oB,sBAMT,WAAmB,OAAOzzK,KAAKuwK,a,IAC/B,SAAehvK,GAAK,WAChBvB,KAAKuwK,YAAc,YAAsBhvK,GACrCvB,KAAK8zK,OACL9zK,KAAK8zK,MAAMzgK,QAAQ,SAAAi+J,GAAI,OAAIA,EAAKlB,mBAAqB,EAAKG,gB,oBAGlE,SAAahvK,GACTvB,KAAKizK,cAAgB1xK,EACrBvB,KAAKgzK,UAAYzxK,I,gCAGrB,WACI,OAAO,IAAK,WAAL,cAASvB,KAAK8zK,MAAMrqK,IAAI,SAAA6nK,GAAI,OAAIA,EAAKX,sB,4BAGhD,WACI,OAAO,IAAK,WAAL,cAAS3wK,KAAK8zK,MAAMrqK,IAAI,SAAA6nK,GAAI,OAAIA,EAAKb,e,2BAGhD,WACI,OAAO,IAAK,WAAL,cAASzwK,KAAK8zK,MAAMrqK,IAAI,SAAA6nK,GAAI,OAAIA,EAAKZ,c,6BAGhD,WACI,OAAO,IAAK,WAAL,cAAS1wK,KAAK8zK,MAAMrqK,IAAI,SAAA6nK,GAAI,OAAIA,EAAKxQ,gB,gCAEhD,WAAkB,WACd9gK,KAAK+nB,YAAc,IAAI,IAAgB/nB,KAAK8zK,OACvC7rJ,WACA8rJ,0BACArP,iBACAsP,0BAA0Bh0K,KAAKiN,KAAOjN,KAAKiN,KAAK1L,MAAQ,OACzDvB,KAAKiN,MACLjN,KAAKiN,KAAK8C,OACL/L,KAAK,YAAUhE,KAAKwD,aACpBU,UAAU,SAAAoH,GAAG,OAAI,EAAKyc,YAAYisJ,0BAA0B1oK,KAErEtL,KAAK+nB,YAAYkE,OAAOjoB,KAAK,YAAUhE,KAAKwD,aAAaU,UAAU,WAC/D,EAAK+vK,sBAGTj0K,KAAK8zK,MAAM7uK,QAAQjB,KAAK,YAAU,MAAO,YAAUhE,KAAKwD,aAAaU,UAAU,WACvE,EAAK8oB,UAGLzoB,QAAQC,UAAU6Z,KAAK,WACnB,EAAKo1J,oBAGb,EAAKS,cAEL,EAAKR,uBAEL,EAAKS,kBAEL,EAAKC,gCACL,EAAKR,aAAa/vK,W,sBAG1B,WACI7D,KAAKuzK,gBAAkB,IAAI,IAAevzK,KAAKszK,cAAU7uK,GAAW,GACpEzE,KAAK4zK,aAAa/vK,S,uBAEtB,WACQ7D,KAAKyyK,YAILzyK,KAAKq0K,mBACDr0K,KAAKyyK,UAAUzlJ,WAAahtB,KAAKmgH,YACjCngH,KAAKgtB,WAAahtB,KAAKyyK,UAAUzlJ,a,yBAI7C,WACIhtB,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,WAChB9D,KAAK4zK,aAAa9vK,WAClB9D,KAAKs0K,uB,2BAGT,SAAcC,GACVv0K,KAAK2zK,WAAaY,EAGlBv0K,KAAK+M,YAAYnK,cAAciM,aAAa,sBAAuB0lK,EAAavuJ,M,+BAMpF,SAAkBk5H,GAAOl/I,KAAKw0K,iBAAmBt1B,EAAIlvG,KAAK,O,wBAE1D,SAAWzuC,GACHvB,KAAK8zK,OACL9zK,KAAKy0K,qBAAqBlzK,GAAO,K,8BAIzC,SAAiByN,GACbhP,KAAK2qB,UAAY3b,I,+BAGrB,SAAkBA,GACdhP,KAAK4qB,WAAa5b,I,8BAGtB,SAAiB+d,GACb/sB,KAAKgtB,SAAWD,EAChB/sB,KAAK4zK,aAAa/vK,S,8BAMtB,SAAiBykB,GACRtoB,KAAK00K,oBAAoBpsJ,IAC1BtoB,KAAK8uB,U,mBAOb,SAAM9G,GACEhoB,KAAKgtB,UAKLhtB,KAAK2zK,YAAc3zK,KAAK2zK,WAAW9+D,UAG9B70G,KAAK8zK,MAAM3vK,OAAS,GACzBnE,KAAK+nB,YAAYiJ,qBACjBhxB,KAAK4zK,aAAa/vK,SAGlB7D,KAAK20K,YAAY3sJ,GACjBhoB,KAAK4zK,aAAa/vK,W,yBAI1B,SAAYmkB,GACJhoB,KAAK2zK,YACL3zK,KAAK2zK,WAAW7kJ,MAAM9G,K,sBAM9B,SAASM,GACL,IAAMkE,EAASlE,EAAMkE,OAEjBlE,EAAM2E,UAAY,KAAajtB,KAAK40K,cAAcpoJ,IAClDxsB,KAAK+nB,YAAY8sJ,oBACjBvsJ,EAAM4E,kBAEDV,GAAUA,EAAO7pB,UAAUiqB,SAAS,cACzC5sB,KAAK+nB,YAAYyF,UAAUlF,GAC3BtoB,KAAK4zK,aAAa/vK,U,6BAM1B,WAEI7D,KAAKgzK,UAAYhzK,KAAKizK,gBAAwC,IAAtBjzK,KAAK8zK,MAAM3vK,QAAgB,EAAI,K,2CAM3E,WAEI,GAAoC,MAAhCnE,KAAK8yK,wBACL,GAAI9yK,KAAK8zK,MAAM3vK,OAAQ,CACnB,IAAM2wK,EAAev2J,KAAKG,IAAI1e,KAAK8yK,wBAAyB9yK,KAAK8zK,MAAM3vK,OAAS,GAChFnE,KAAK+nB,YAAYkJ,cAAc6jJ,QAG/B90K,KAAK8uB,QAGb9uB,KAAK8yK,wBAA0B,O,2BAQnC,SAAcnpK,GACV,OAAOA,GAAS,GAAKA,EAAQ3J,KAAK8zK,MAAM3vK,S,2BAE5C,SAAckH,GACV,SAAIA,GAA8C,UAAnCA,EAAQyD,SAAS8N,eAChBvR,EACE9J,S,kCAItB,SAAqBA,GAAyB,WAAlBiwK,IAAkB,yDAG1C,GAFAxxK,KAAK+0K,kBACL/0K,KAAK8zK,MAAMzgK,QAAQ,SAAAi+J,GAAI,OAAIA,EAAKpiJ,aAC5B3kB,MAAMyL,QAAQzU,GACdA,EAAM8R,QAAQ,SAAAjO,GAAY,OAAI,EAAK4vK,aAAa5vK,EAAcosK,KAC9DxxK,KAAKi1K,kBAEJ,CACD,IAAMC,EAAoBl1K,KAAKg1K,aAAazzK,EAAOiwK,GAG/C0D,GACI1D,GACAxxK,KAAK+nB,YAAYkJ,cAAcikJ,M,0BAS/C,SAAa3zK,GAAyB,WAAlBiwK,IAAkB,yDAC5B0D,EAAoBl1K,KAAK8zK,MAAMzuK,KAAK,SAAAisK,GACtC,OAAqB,MAAdA,EAAK/vK,OAAiB,EAAK48I,aAAamzB,EAAK/vK,MAAOA,KAM/D,OAJI2zK,IACA1D,EAAc0D,EAAkBC,uBAAyBD,EAAkBj1I,SAC3EjgC,KAAKuzK,gBAAgBtzI,OAAOi1I,IAEzBA,I,kCAEX,WAAoB,WAGhB3wK,QAAQC,UAAU6Z,KAAK,YACf,EAAKo0J,WAAa,EAAKvyD,UACvB,EAAKu0D,qBAAqB,EAAKhC,UAAY,EAAKA,UAAUlxK,MAAQ,EAAK2+G,QAAQ,GAC/E,EAAK0zD,aAAa/vK,Y,6BAQ9B,SAAgBmrB,GACZhvB,KAAKuzK,gBAAgB7iK,QACrB1Q,KAAK8zK,MAAMzgK,QAAQ,SAAAi+J,GACXA,IAAStiJ,GACTsiJ,EAAKpiJ,aAGblvB,KAAK4zK,aAAa/vK,S,yBAMtB,WAAW,WACH7D,KAAKo/B,YACLp/B,KAAKuzK,gBAAgB7iK,QACrB1Q,KAAK8zK,MAAMzgK,QAAQ,SAAAi+J,GACXA,EAAKriJ,UACL,EAAKskJ,gBAAgBtzI,OAAOqxI,KAGpCtxK,KAAK4zK,aAAa/vK,U,+BAI1B,SAAkBqjK,GACd,IAAIkO,EAEAA,EADA7qK,MAAMyL,QAAQhW,KAAKivB,UACLjvB,KAAKivB,SAASxlB,IAAI,SAAA6nK,GAAI,OAAIA,EAAK/vK,QAG/BvB,KAAKivB,SAAWjvB,KAAKivB,SAAS1tB,MAAQ2lK,EAExDlnK,KAAKkgH,OAASk1D,EACdp1K,KAAK+P,OAAOmS,KAAK,IAAIywJ,EAAkB3yK,KAAMo1K,IAC7Cp1K,KAAKqzK,YAAYnxJ,KAAKkzJ,GACtBp1K,KAAK2qB,UAAUyqJ,GACfp1K,KAAK8M,mBAAmBkK,iB,mBAG5B,WAAK,WACIhX,KAAK6zK,mBACN7zK,KAAK+nB,YAAYkJ,eAAe,GAE/BjxB,KAAKgtB,WACFhtB,KAAK2zK,WAKL/uI,WAAW,WACF,EAAKiwE,SACN,EAAKwgE,mBAMbr1K,KAAKq1K,oB,4BAKjB,WACIr1K,KAAK4qB,aACL5qB,KAAK8M,mBAAmBkK,eACxBhX,KAAK4zK,aAAa/vK,S,+BAOtB,WAAiB,YACW,IAApB7D,KAAKgzK,YACLhzK,KAAKgzK,WAAa,EAClBpuI,WAAW,WACP,EAAKouI,UAAY,EAAKC,eAAiB,EACvC,EAAKnmK,mBAAmBkK,oB,yBAIpC,WACIhX,KAAKs0K,qBACLt0K,KAAKs1K,sBACLt1K,KAAKu1K,0BACLv1K,KAAKw1K,0B,gCAET,WACQx1K,KAAKy1K,yBACLz1K,KAAKy1K,uBAAuB7/J,cAC5B5V,KAAKy1K,uBAAyB,MAE9Bz1K,KAAK01K,wBACL11K,KAAK01K,sBAAsB9/J,cAC3B5V,KAAK01K,sBAAwB,MAE7B11K,KAAK21K,6BACL31K,KAAK21K,2BAA2B//J,cAChC5V,KAAK21K,2BAA6B,MAElC31K,KAAK41K,0BACL51K,KAAK41K,wBAAwBhgK,cAC7B5V,KAAK41K,wBAA0B,Q,qCAIvC,WAAuB,WACnB51K,KAAK21K,2BAA6B31K,KAAK61K,qBAAqB3xK,UAAU,SAAAokB,GAClEA,EAAM/B,OAAO0I,SACP,EAAKskJ,gBAAgBtzI,OAAO3X,EAAM/B,QAClC,EAAKgtJ,gBAAgBrkJ,SAAS5G,EAAM/B,QAErC,EAAK+sJ,UACN,EAAKQ,MAAMzgK,QAAQ,SAAAi+J,IACV,EAAKiC,gBAAgBvzI,WAAWsxI,IAASA,EAAKriJ,UAC/CqiJ,EAAKpiJ,aAIb5G,EAAMkpJ,aACN,EAAKsE,wB,iCAKjB,WAAmB,WACf91K,KAAKy1K,uBAAyBz1K,KAAK+1K,iBAAiB7xK,UAAU,SAAAokB,GAC1D,IAAI0tJ,EAAY,EAAKlC,MAAM5rJ,UAAUjf,QAAQqf,EAAMgpJ,MAC/C,EAAK2E,cAAcD,IACnB,EAAKjuJ,YAAY48I,iBAAiBqR,GAEtC,EAAKpC,aAAa/vK,SAEtB7D,KAAK01K,sBAAwB11K,KAAKk2K,gBAAgBhyK,UAAU,WACxD,EAAK6tK,QACL,EAAK6B,aAAa/vK,W,mCAG1B,WAAqB,WACjB7D,KAAK41K,wBAA0B51K,KAAKm2K,kBAAkBjyK,UAAU,SAAAokB,GAC5D,IAAMgpJ,EAAOhpJ,EAAMgpJ,KACb0E,EAAY,EAAKlC,MAAM5rJ,UAAUjf,QAAQqf,EAAMgpJ,MAIjD,EAAK2E,cAAcD,IAAc1E,EAAKnB,YACtC,EAAK2C,wBAA0BkD,O,iCAK3C,SAAoB1tJ,GAEhB,IADA,IAAIyzI,EAAiBzzI,EAAMkE,OACpBuvI,GAAkBA,IAAmB/7J,KAAK+M,YAAYnK,eAAe,CACxE,GAAIm5J,EAAep5J,UAAUiqB,SAAS,YAClC,OAAO,EAEXmvI,EAAiBA,EAAenzH,cAEpC,OAAO,I,6BAGX,WACI,OAAO5oC,KAAK8zK,OAAS9zK,KAAK8zK,MAAM1rK,KAAK,SAAAkpK,GAAI,OAAIA,EAAKnB,c,6BAGtD,WAAe,WACPnwK,KAAK8zK,OACL9zK,KAAK8zK,MAAMzgK,QAAQ,SAAAi+J,GACfA,EAAKhB,kBAAoB,EAAKnwD,UAC9BmxD,EAAKjB,kBAAoB,EAAKiD,e,CArjBpBZ,G,OA0jB1BE,EAAYryK,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKoyK,GAAa,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,IAAuB,GAAI,KAAyB,IAAe,GAAI,KAAyB,IAA2B,GAAI,KAAyB,KAA2B,KAAyB,IAAkB,MAC3aA,EAAYzsK,UAAO,KAAyB,CAAEzF,KAAMkyK,EAAajyK,UAAW,CAAC,CAAC,kBAAmBe,eAAgB,SAAoCC,EAAIC,EAAKC,GAGtJ,IAAIC,EAHuK,EAALH,GACtK,KAAsBE,EAAUmuK,EAAS,GAClC,EAALruK,GAEF,KAAsBG,EAAK,UAA0BF,EAAIkyK,MAAQhyK,IAChEiB,UAAW,CAAC,EAAG,iBAAkBwV,SAAU,GAAIC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,GAC/G,KAAkB,QAAS,WAAkD,OAAOC,EAAIktB,SAAxF,CAAoG,OAAQ,WAAiD,OAAOltB,EAAImwK,SAAxK,CAAoL,UAAW,SAAgDjgJ,GAAU,OAAOlwB,EAAImiK,SAASjyI,KACtQ,EAALnwB,IACF,KAAsB,KAAMC,EAAImxK,MAChC,KAAmB,WAAYnxK,EAAIorB,SAAW,KAAOprB,EAAIoxK,UAAzD,CAAoE,mBAAoBpxK,EAAI4yK,kBAAoB,KAAhH,CAAsH,gBAAiB5yK,EAAIoL,KAAOpL,EAAIqxG,SAAW,KAAjK,CAAuK,gBAAiBrxG,EAAIorB,SAASiF,WAArM,CAAiN,eAAgBrwB,EAAIw0K,WAArO,CAAiP,uBAAwBx0K,EAAI0xK,SAA7Q,CAAuR,OAAQ1xK,EAAIoL,KAAnS,CAAyS,mBAAoBpL,EAAIwxK,iBACjU,KAAmB,yBAA0BxxK,EAAIorB,SAAjD,CAA2D,wBAAyBprB,EAAIw0K,WAAxF,CAAoG,yBAA0Bx0K,EAAIqxG,YACjI9wG,OAAQ,CAAEixK,gBAAiB,CAAC,mBAAoB,mBAAoBE,SAAU,WAAY90B,YAAa,cAAej9I,MAAO,QAAS0xG,SAAU,WAAY03C,YAAa,cAAe39H,SAAU,WAAYmiC,WAAY,aAAchZ,SAAU,WAAYkgI,kBAAmB,qBAAuBl0J,QAAS,CAAEpS,OAAQ,SAAUsjK,YAAa,eAAiB36J,SAAU,CAAC,eAAgBpW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,IAAqBC,YAAaowK,KAAiB,MAAoC/5J,mBAAoBpZ,EAAK2G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,0BAA2BhG,SAAU,SAA8BqB,EAAIC,GAAgB,EAALD,IAClpB,OACA,KAAsB,EAAG,MAAO,GAChC,KAAoB,GACpB,SACCmX,OAAQ,CAAC,6/FAAggGtS,cAAe,EAAGwiB,gBAAiB,I,KA8GjjGstJ,EAAiB,E,iBAKfC,E,8BACF,WAAYxpK,EAAa+4B,GAAe,oBACpC9lC,KAAK+M,YAAcA,EACnB/M,KAAK8lC,gBAAkBA,EAEvB9lC,KAAK60G,SAAU,EACf70G,KAAKw2K,YAAa,EAMlBx2K,KAAKy2K,kBAAoBz2K,KAAK8lC,gBAAgB2wI,kBAE9Cz2K,KAAK02K,QAAU,IAAI,IAEnB12K,KAAK2qJ,YAAc,GAEnB3qJ,KAAKgmB,GAAL,8BAAiCswJ,KACjCt2K,KAAKmgH,WAAY,EACjBngH,KAAK4yG,cAAgB5yG,KAAK+M,YAAYnK,e,qBAG1C,SAAarB,GACLA,IACAvB,KAAK22K,UAAYp1K,EACjBvB,KAAK22K,UAAUC,cAAc52K,S,qBAMrC,WAAkB,OAAOA,KAAKw2K,Y,IAC9B,SAAcj1K,GAASvB,KAAKw2K,WAAa,YAAsBj1K,K,oBAE/D,WAAiB,OAAOvB,KAAKmgH,WAAcngH,KAAK22K,WAAa32K,KAAK22K,UAAU3pJ,U,IAC5E,SAAazrB,GAASvB,KAAKmgH,UAAY,YAAsB5+G,K,iBAE7D,WAAc,OAAQvB,KAAK4yG,cAAcrxG,Q,yBACzC,WACIvB,KAAK22K,UAAU/C,aAAa/vK,S,sBAGhC,SAASykB,GAGDA,GAASA,EAAM2E,UAAY,MAAQ,YAAe3E,EAAO,aACzDtoB,KAAK22K,UAAU1C,oBAEnBj0K,KAAK62K,aAAavuJ,K,mBAGtB,WACQtoB,KAAK82K,WACL92K,KAAK62K,eAET72K,KAAK60G,SAAU,EAEV70G,KAAK22K,UAAU9hE,SAChB70G,KAAK22K,UAAU5E,QAEnB/xK,KAAK22K,UAAU/C,aAAa/vK,S,oBAEhC,WACI7D,KAAK60G,SAAU,EACf70G,KAAK22K,UAAU/C,aAAa/vK,S,0BAGhC,SAAaykB,IACJtoB,KAAK4yG,cAAcrxG,OAAW+mB,GAC/BtoB,KAAK22K,UAAU5S,SAASz7I,GAEvBA,IAAStoB,KAAK+2K,gBAAgBzuJ,KAC/BtoB,KAAK02K,QAAQx0J,KAAK,CAAEs8B,MAAOx+C,KAAK4yG,cAAerxG,MAAOvB,KAAK4yG,cAAcrxG,QACrE+mB,GACAA,EAAM4E,oB,sBAIlB,WAEIltB,KAAK22K,UAAU/C,aAAa/vK,S,mBAGhC,SAAMmkB,GACFhoB,KAAK4yG,cAAc9jF,MAAM9G,K,6BAG7B,SAAgBM,GACZ,OAAQ,YAAeA,IAAU,IAAI3a,IAAI3N,KAAKy2K,mBAAmBriK,IAAIkU,EAAM2E,a,UAGnFspJ,EAAah2K,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK+1K,GAAc,KAAyB,KAAoB,KAAyBnE,KAC5JmE,EAAa91K,UAAO,KAAyB,CAAEC,KAAM61K,EAAc51K,UAAW,CAAC,CAAC,QAAS,kBAAmB,KAAMoC,UAAW,CAAC,EAAG,iBAAkB,qBAAsBwV,SAAU,EAAGC,aAAc,SAAmC7W,EAAIC,GAAgB,EAALD,GAC9O,KAAkB,UAAW,SAAiDmwB,GAAU,OAAOlwB,EAAImiK,SAASjyI,IAA5G,CAAwH,OAAQ,WAAkD,OAAOlwB,EAAImwK,SAA7L,CAAyM,QAAS,WAAmD,OAAOnwK,EAAIo1K,UAAhR,CAA6R,QAAS,WAAmD,OAAOp1K,EAAIq1K,aAC7V,EAALt1K,IACF,KAAsB,KAAMC,EAAIokB,IAChC,KAAmB,WAAYpkB,EAAIorB,UAAY,KAA/C,CAAqD,cAAeprB,EAAI+oJ,aAAe,KAAvF,CAA6F,eAAgB/oJ,EAAI+0K,WAAa/0K,EAAI+0K,UAAUlE,UAAY7wK,EAAI+0K,UAAUlE,UAAU9iD,QAAU,KAA1L,CAAgM,gBAAiB/tH,EAAI+0K,WAAa/0K,EAAI+0K,UAAU1jE,UAAY,QAC3P9wG,OAAQ,CAAEs0K,kBAAmB,CAAC,gCAAiC,qBAAsB9rB,YAAa,cAAe3kI,GAAI,KAAMkxJ,SAAU,CAAC,kBAAmB,YAAaJ,UAAW,CAAC,wBAAyB,aAAc9pJ,SAAU,YAAc7K,QAAS,CAAEu0J,QAAS,wBAA0Bh+J,SAAU,CAAC,eAAgB,mBAAoBpW,SAAU,CAAC,Q,KAsE5Vi4I,EAAK,CACPk8B,kBAAmB,CAAC,M,iBAElBU,E,sDAENA,EAAe52K,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK22K,IAC5EA,EAAej+J,UAAO,KAAwB,CAAExY,KAAMy2K,IACtDA,EAAeh+J,UAAO,KAAwB,CAAEgZ,UAAW,CACnD,IACA,CACI5vB,QAAS6vK,EACTx5J,SAAU2hI,IAEfnhI,QAAS,CAAC,CAAC,Q,wCC53ClB,IAAI3U,EAEA2yK,EAASt6I,EAAQ,QACjBu6I,EAAav6I,EAAQ,QACrBw6I,EAAcx6I,EAAQ,QACtBy6I,EAAkBz6I,EAAQ,QAC1B06I,EAAe16I,EAAQ,QACvBI,EAAaJ,EAAQ,QACrB26I,EAAY36I,EAAQ,QAEpB46I,EAAYC,SAGZC,EAAwB,SAAUC,GACrC,IACC,OAAOH,EAAU,yBAA2BG,EAAmB,iBAAxDH,GACN,MAAOzjJ,MAGN6jJ,EAAQt7J,OAAOutH,yBACnB,GAAI+tC,EACH,IACCA,EAAM,GAAI,IACT,MAAO7jJ,GACR6jJ,EAAQ,KAIV,IAAIC,EAAiB,WACpB,MAAM,IAAI76I,GAEP86I,EAAiBF,EACjB,WACF,IAGC,OAAOC,EACN,MAAOE,GACR,IAEC,OAAOH,EAAMx+J,UAAW,UAAUpH,IACjC,MAAOgmK,GACR,OAAOH,IAVP,GAcDA,EAECI,EAAar7I,EAAQ,OAARA,GACbs7I,EAAWt7I,EAAQ,OAARA,GAEXu7I,EAAW77J,OAAO24H,iBACrBijC,EACG,SAAU78I,GAAK,OAAOA,EAAE+tG,WACxB,MAGAgvC,EAAY,GAEZC,EAAmC,oBAAfC,YAA+BH,EAAuBA,EAASG,YAArB/zK,EAE9Dg0K,EAAa,CAChBnvC,UAAW,KACX,mBAA8C,oBAAnBovC,eAAiCj0K,EAAYi0K,eACxE,UAAWnuK,MACX,gBAAwC,oBAAhBouK,YAA8Bl0K,EAAYk0K,YAClE,2BAA4BR,GAAcE,EAAWA,EAAS,GAAGjpI,OAAO41F,aAAevgI,EACvF,mCAAoCA,EACpC,kBAAmB6zK,EACnB,mBAAoBA,EACpB,2BAA4BA,EAC5B,2BAA4BA,EAC5B,YAAgC,oBAAZM,QAA0Bn0K,EAAYm0K,QAC1D,WAA8B,oBAAXC,OAAyBp0K,EAAYo0K,OACxD,kBAA4C,oBAAlBC,cAAgCr0K,EAAYq0K,cACtE,mBAA8C,oBAAnBC,eAAiCt0K,EAAYs0K,eACxE,YAAarxH,QACb,aAAkC,oBAAbsxH,SAA2Bv0K,EAAYu0K,SAC5D,SAAUt+H,KACV,cAAeu+H,UACf,uBAAwBlqI,mBACxB,cAAemqI,UACf,uBAAwBnvF,mBACxB,UAAWqtF,EACX,SAAU+B,KACV,cAAe9B,EACf,iBAA0C,oBAAjB+B,aAA+B30K,EAAY20K,aACpE,iBAA0C,oBAAjBC,aAA+B50K,EAAY40K,aACpE,yBAA0D,oBAAzBC,qBAAuC70K,EAAY60K,qBACpF,aAAc5B,EACd,sBAAuBY,EACvB,cAAoC,oBAAdiB,UAA4B90K,EAAY80K,UAC9D,eAAsC,oBAAfC,WAA6B/0K,EAAY+0K,WAChE,eAAsC,oBAAfC,WAA6Bh1K,EAAYg1K,WAChE,aAAcj7D,SACd,UAAWvjE,MACX,sBAAuBk9H,GAAcE,EAAWA,EAASA,EAAS,GAAGjpI,OAAO41F,cAAgBvgI,EAC5F,SAA0B,iBAAT+0B,KAAoBA,KAAO/0B,EAC5C,QAAwB,oBAARgJ,IAAsBhJ,EAAYgJ,IAClD,yBAAyC,oBAARA,KAAwB0qK,GAAeE,EAAuBA,GAAS,IAAI5qK,KAAM2hC,OAAO41F,aAAtCvgI,EACnF,SAAU8Z,KACV,WAAY5P,OACZ,WAAY6N,OACZ,eAAgBqR,WAChB,aAAc2hB,SACd,YAAgC,oBAAZjrC,QAA0BE,EAAYF,QAC1D,UAA4B,oBAAV4kI,MAAwB1kI,EAAY0kI,MACtD,eAAgBmuC,EAChB,mBAAoBC,EACpB,YAAgC,oBAAZvuC,QAA0BvkI,EAAYukI,QAC1D,WAAY9H,OACZ,QAAwB,oBAARvzH,IAAsBlJ,EAAYkJ,IAClD,yBAAyC,oBAARA,KAAwBwqK,GAAeE,EAAuBA,GAAS,IAAI1qK,KAAMyhC,OAAO41F,aAAtCvgI,EACnF,sBAAoD,oBAAtBi1K,kBAAoCj1K,EAAYi1K,kBAC9E,WAAYrqI,OACZ,4BAA6B8oI,GAAcE,EAAWA,EAAS,GAAGjpI,OAAO41F,aAAevgI,EACxF,WAAY0zK,EAAa/oI,OAAS3qC,EAClC,gBAAiB+yK,EACjB,mBAAoBQ,EACpB,eAAgBO,EAChB,cAAer7I,EACf,eAAsC,oBAAfs7I,WAA6B/zK,EAAY+zK,WAChE,sBAAoD,oBAAtBmB,kBAAoCl1K,EAAYk1K,kBAC9E,gBAAwC,oBAAhBC,YAA8Bn1K,EAAYm1K,YAClE,gBAAwC,oBAAhBC,YAA8Bp1K,EAAYo1K,YAClE,aAAcpC,EACd,YAAgC,oBAAZnjK,QAA0B7P,EAAY6P,QAC1D,YAAgC,oBAAZwlK,QAA0Br1K,EAAYq1K,QAC1D,YAAgC,oBAAZC,QAA0Bt1K,EAAYs1K,SAG3D,GAAI1B,EACH,IACC,KAAKrjJ,MACJ,MAAOf,GAER,IAAI+lJ,EAAa3B,EAASA,EAASpkJ,IACnCwkJ,EAAW,qBAAuBuB,EAIpC,IAAIC,EAAS,SAASA,EAAO94K,GAC5B,IAAII,EACJ,GAAa,oBAATJ,EACHI,EAAQq2K,EAAsB,6BACxB,GAAa,wBAATz2K,EACVI,EAAQq2K,EAAsB,wBACxB,GAAa,6BAATz2K,EACVI,EAAQq2K,EAAsB,8BACxB,GAAa,qBAATz2K,EAA6B,CACvC,IAAI6N,EAAKirK,EAAO,4BACZjrK,IACHzN,EAAQyN,EAAG0jB,gBAEN,GAAa,6BAATvxB,EAAqC,CAC/C,IAAI+4K,EAAMD,EAAO,oBACbC,GAAO7B,IACV92K,EAAQ82K,EAAS6B,EAAIxnJ,YAMvB,OAFA+lJ,EAAWt3K,GAAQI,EAEZA,GAGJ44K,EAAiB,CACpB7wC,UAAW,KACX,yBAA0B,CAAC,cAAe,aAC1C,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,QAAS,YAAa,WAC/C,uBAAwB,CAAC,QAAS,YAAa,WAC/C,oBAAqB,CAAC,QAAS,YAAa,QAC5C,sBAAuB,CAAC,QAAS,YAAa,UAC9C,2BAA4B,CAAC,gBAAiB,aAC9C,mBAAoB,CAAC,yBAA0B,aAC/C,4BAA6B,CAAC,yBAA0B,YAAa,aACrE,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,WAAY,aACpC,kBAAmB,CAAC,OAAQ,aAC5B,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,YAAa,aACtC,0BAA2B,CAAC,eAAgB,aAC5C,0BAA2B,CAAC,eAAgB,aAC5C,sBAAuB,CAAC,WAAY,aACpC,cAAe,CAAC,oBAAqB,aACrC,uBAAwB,CAAC,oBAAqB,YAAa,aAC3D,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,wBAAyB,CAAC,aAAc,aACxC,cAAe,CAAC,OAAQ,SACxB,kBAAmB,CAAC,OAAQ,aAC5B,iBAAkB,CAAC,MAAO,aAC1B,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,sBAAuB,CAAC,SAAU,YAAa,YAC/C,qBAAsB,CAAC,SAAU,YAAa,WAC9C,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,UAAW,YAAa,QAChD,gBAAiB,CAAC,UAAW,OAC7B,mBAAoB,CAAC,UAAW,UAChC,oBAAqB,CAAC,UAAW,WACjC,wBAAyB,CAAC,aAAc,aACxC,4BAA6B,CAAC,iBAAkB,aAChD,oBAAqB,CAAC,SAAU,aAChC,iBAAkB,CAAC,MAAO,aAC1B,+BAAgC,CAAC,oBAAqB,aACtD,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,yBAA0B,CAAC,cAAe,aAC1C,wBAAyB,CAAC,aAAc,aACxC,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,+BAAgC,CAAC,oBAAqB,aACtD,yBAA0B,CAAC,cAAe,aAC1C,yBAA0B,CAAC,cAAe,aAC1C,sBAAuB,CAAC,WAAY,aACpC,qBAAsB,CAAC,UAAW,aAClC,qBAAsB,CAAC,UAAW,cAG/B/+F,EAAOzN,EAAQ,QACfs9I,EAASt9I,EAAQ,QACjBu9I,EAAU9vI,EAAKrV,KAAKyiJ,SAASziJ,KAAM3qB,MAAMmoB,UAAU1Z,QACnDshK,EAAe/vI,EAAKrV,KAAKyiJ,SAAShgI,MAAOptC,MAAMmoB,UAAU6V,QACzDgyI,EAAWhwI,EAAKrV,KAAKyiJ,SAASziJ,KAAMma,OAAO3c,UAAUlxB,SACrDg5K,EAAYjwI,EAAKrV,KAAKyiJ,SAASziJ,KAAMma,OAAO3c,UAAUlpB,OACtDixK,EAAQlwI,EAAKrV,KAAKyiJ,SAASziJ,KAAMgsG,OAAOxuG,UAAUgsB,MAGlDg8H,EAAa,qGACbC,EAAe,WACfC,EAAe,SAAsBzrI,GACxC,IAAIntC,EAAQw4K,EAAUrrI,EAAQ,EAAG,GAC7Bh4B,EAAOqjK,EAAUrrI,GAAS,GAC9B,GAAc,MAAVntC,GAA0B,MAATmV,EACpB,MAAM,IAAIqgK,EAAa,kDACjB,GAAa,MAATrgK,GAA0B,MAAVnV,EAC1B,MAAM,IAAIw1K,EAAa,kDAExB,IAAI56I,EAAS,GAIb,OAHA29I,EAASprI,EAAQurI,EAAY,SAAUppI,EAAO5rB,EAAQm1J,EAAOC,GAC5Dl+I,EAAOA,EAAOz4B,QAAU02K,EAAQN,EAASO,EAAWH,EAAc,MAAQj1J,GAAU4rB,IAE9E1U,GAIJm+I,EAAmB,SAA0B55K,EAAM65K,GACtD,IACI7gD,EADA8gD,EAAgB95K,EAOpB,GALIi5K,EAAOD,EAAgBc,KAE1BA,EAAgB,KADhB9gD,EAAQggD,EAAec,IACK,GAAK,KAG9Bb,EAAO3B,EAAYwC,GAAgB,CACtC,IAAI15K,EAAQk3K,EAAWwC,GAIvB,GAHI15K,IAAU+2K,IACb/2K,EAAQ04K,EAAOgB,SAEK,IAAV15K,IAA0By5K,EACpC,MAAM,IAAI99I,EAAW,aAAe/7B,EAAO,wDAG5C,MAAO,CACNg5H,MAAOA,EACPh5H,KAAM85K,EACN15K,MAAOA,GAIT,MAAM,IAAIi2K,EAAa,aAAer2K,EAAO,qBAG9Ci8B,EAAOC,QAAU,SAAsBl8B,EAAM65K,GAC5C,GAAoB,iBAAT75K,GAAqC,IAAhBA,EAAKgD,OACpC,MAAM,IAAI+4B,EAAW,6CAEtB,GAAI5jB,UAAUnV,OAAS,GAA6B,kBAAjB62K,EAClC,MAAM,IAAI99I,EAAW,6CAGtB,GAAmC,OAA/Bu9I,EAAM,cAAet5K,GACxB,MAAM,IAAIq2K,EAAa,sFAExB,IAAIpyH,EAAQw1H,EAAaz5K,GACrB+5K,EAAoB91H,EAAMjhD,OAAS,EAAIihD,EAAM,GAAK,GAElD+1H,EAAYJ,EAAiB,IAAMG,EAAoB,IAAKF,GAC5DI,EAAoBD,EAAUh6K,KAC9BI,EAAQ45K,EAAU55K,MAClB85K,GAAqB,EAErBlhD,EAAQghD,EAAUhhD,MAClBA,IACH+gD,EAAoB/gD,EAAM,GAC1BmgD,EAAal1H,EAAOi1H,EAAQ,CAAC,EAAG,GAAIlgD,KAGrC,IAAK,IAAItyH,EAAI,EAAGyzK,GAAQ,EAAMzzK,EAAIu9C,EAAMjhD,OAAQ0D,GAAK,EAAG,CACvD,IAAIy6I,EAAOl9F,EAAMv9C,GACb7F,EAAQw4K,EAAUl4B,EAAM,EAAG,GAC3BnrI,EAAOqjK,EAAUl4B,GAAO,GAC5B,IAEa,MAAVtgJ,GAA2B,MAAVA,GAA2B,MAAVA,GACtB,MAATmV,GAAyB,MAATA,GAAyB,MAATA,IAElCnV,IAAUmV,EAEb,MAAM,IAAIqgK,EAAa,wDASxB,GAPa,gBAATl1B,GAA2Bg5B,IAC9BD,GAAqB,GAMlBjB,EAAO3B,EAFX2C,EAAoB,KADpBF,GAAqB,IAAM54B,GACmB,KAG7C/gJ,EAAQk3K,EAAW2C,QACb,GAAa,MAAT75K,EAAe,CACzB,KAAM+gJ,KAAQ/gJ,GAAQ,CACrB,IAAKy5K,EACJ,MAAM,IAAI99I,EAAW,sBAAwB/7B,EAAO,+CAErD,OAED,GAAI22K,GAAUjwK,EAAI,GAAMu9C,EAAMjhD,OAAQ,CACrC,IAAIs5B,EAAOq6I,EAAMv2K,EAAO+gJ,GAWvB/gJ,GAVD+5K,IAAU79I,IASG,QAASA,KAAU,kBAAmBA,EAAKvrB,KAC/CurB,EAAKvrB,IAEL3Q,EAAM+gJ,QAGfg5B,EAAQlB,EAAO74K,EAAO+gJ,GACtB/gJ,EAAQA,EAAM+gJ,GAGXg5B,IAAUD,IACb5C,EAAW2C,GAAqB75K,IAInC,OAAOA,I,sBC5VC,SAAU8gB,GAAU,aAIZA,EAAOM,aAAa,UAAW,CACxCC,OAAQ,6EAA6EL,MACjF,KAEJM,YAAa,oDAAoDN,MAAM,KACvEgB,SACI,+DAA+DhB,MAC3D,KAERiB,cAAe,kCAAkCjB,MAAM,KACvDkB,YAAa,yBAAyBlB,MAAM,KAC5CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACNC,EAAG,SACHC,GAAI,YACJ/B,EAAG,aACHgC,GAAI,YACJC,EAAG,WACHC,GAAI,UACJhN,EAAG,UACHiN,GAAI,SACJG,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gdAAyFL,MAC7F,KAEJM,YACI,8TAAyEN,MACrE,KAER0U,kBAAkB,EAClB1T,SACI,mYAAwEhB,MACpE,KAERiB,cAAe,qNAA2CjB,MAAM,KAChEkB,YAAa,mGAAwBlB,MAAM,KAC3CoB,eAAgB,CACZC,GAAI,uBACJC,IAAK,0BACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oCACLC,KAAM,2CAEVC,SAAU,CACNC,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gDACRC,KAAM,oCACNC,EAAG,4EACHC,GAAI,sDACJ/B,EAAG,sEACHgC,GAAI,sDACJC,EAAG,sEACHC,GAAI,sDACJhN,EAAG,oDACHiN,GAAI,oCACJG,EAAG,8CACHC,GAAI,8BACJC,EAAG,8CACHC,GAAI,+BAERisB,cAAe,mPACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAGO,yCAAbC,GAAyBD,GAAQ,GACrB,wEAAbC,GACa,iEAAbA,EAEOD,EAAO,GAEPA,GAGfC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,uCACAA,EAAO,GACP,uCACAA,EAAO,GACP,sEACAA,EAAO,GACP,+DAEA,0CA/EmB5sC,CAAQ,EAAQ,U,kCCN1D,gCAAO,IAAMy2K,EAAc,CACzBC,SAAU,CACRC,UAAW,qBACXC,MAAO,4CACPC,cAAe,iCACfC,OAAQ,0CACRC,WAAY,qCACZC,kBAAmB,eACnBC,cAAe,gBAElBC,YAAY,EACZC,eAAe,EACfC,aAAc,yC,sBCHN,SAAU75J,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/Bw5J,KAAM,CACF,CACIC,MAAO,aACPvxK,OAAQ,EACR1J,KAAM,eACNk7K,OAAQ,SACRC,KAAM,KAEV,CACIF,MAAO,aACPG,MAAO,aACP1xK,OAAQ,EACR1J,KAAM,eACNk7K,OAAQ,SACRC,KAAM,KAEV,CACIF,MAAO,aACPG,MAAO,aACP1xK,OAAQ,EACR1J,KAAM,eACNk7K,OAAQ,SACRC,KAAM,KAEV,CACIF,MAAO,aACPG,MAAO,aACP1xK,OAAQ,EACR1J,KAAM,eACNk7K,OAAQ,SACRC,KAAM,KAEV,CACIF,MAAO,aACPG,MAAO,aACP1xK,OAAQ,EACR1J,KAAM,eACNk7K,OAAQ,SACRC,KAAM,KAEV,CACIF,MAAO,aACPG,MAAO,aACP1xK,OAAQ,EACR1J,KAAM,eACNk7K,OAAQ,KACRC,KAAM,MAEV,CACIF,MAAO,aACPG,OAAO,IACP1xK,OAAQ,EACR1J,KAAM,qBACNk7K,OAAQ,KACRC,KAAM,OAGdE,oBAAqB,qBACrBC,oBAAqB,SAAUj+H,EAAOlN,GAClC,MAAoB,WAAbA,EAAM,GAAa,EAAI9B,SAAS8B,EAAM,IAAMkN,EAAO,KAE9D57B,OAAQ,qGAAyCL,MAAM,KACvDM,YAAa,qGAAyCN,MAClD,KAEJgB,SAAU,uIAA8BhB,MAAM,KAC9CiB,cAAe,mDAAgBjB,MAAM,KACrCkB,YAAa,mDAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCACN2nH,EAAG,aACHjH,GAAI,2BACJC,IAAK,iCACLC,KAAM,uCAEVrzF,cAAe,6BACfmuF,KAAM,SAAUnhF,GACZ,MAAiB,iBAAVA,GAEX7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,eAEA,gBAGfxtB,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,SAAU0nC,GAChB,OAAIA,EAAIpmC,SAAW3lB,KAAK2lB,OACb,wBAEA,WAGfrB,QAAS,oBACTC,SAAU,SAAUwnC,GAChB,OAAI/rD,KAAK2lB,SAAWomC,EAAIpmC,OACb,wBAEA,WAGfnB,SAAU,KAEdgB,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAX97F,EAAe,eAAOA,EAAS,SAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBjB,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,eACHC,GAAI,WACJ/B,EAAG,UACHgC,GAAI,WACJC,EAAG,gBACHC,GAAI,iBACJhN,EAAG,UACHiN,GAAI,WACJG,EAAG,gBACHC,GAAI,iBACJC,EAAG,UACHC,GAAI,cAlJ0BzgB,CAAQ,EAAQ,U,kLCHpD,SAAU43K,EAASxlK,GACrB,OAAO,SAAkCqP,GACrC,OAAc,IAAVrP,EACO,cAGAqP,EAAO8V,KAAK,IAAIsgJ,EAAiBzlK,K,IAI9CylK,E,8BACF,WAAYC,GAER,GAFa,oBACb58K,KAAK48K,MAAQA,EACT58K,KAAK48K,MAAQ,EACb,MAAM,IAAI,K,mBAGlB,SAAKrgJ,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI24K,EAAmBtgJ,EAAYv8B,KAAK48K,Y,GAGlEC,E,YACF,WAAYpgJ,EAAamgJ,GAAK,M,MAAA,2B,EAC1B,K,EAAA,E,EAAA,CAAMngJ,G,kBAAN,E,iGACKmgJ,MAAQA,EACb,EAAKE,KAAO,IAAIvyK,MAChB,EAAK2M,MAAQ,EAJa,E,0DAM9B,SAAM3V,GACF,IAAMu7K,EAAO98K,KAAK88K,KACZF,EAAQ58K,KAAK48K,MACb1lK,EAAQlX,KAAKkX,QACf4lK,EAAK34K,OAASy4K,EACdE,EAAKl5K,KAAKrC,GAIVu7K,EADc5lK,EAAQ0lK,GACRr7K,I,uBAGtB,WACI,IAAMk7B,EAAcz8B,KAAKy8B,YACrBvlB,EAAQlX,KAAKkX,MACjB,GAAIA,EAAQ,EAGR,IAFA,IAAM0lK,EAAQ58K,KAAKkX,OAASlX,KAAK48K,MAAQ58K,KAAK48K,MAAQ58K,KAAKkX,MACrD4lK,EAAO98K,KAAK88K,KACTj1K,EAAI,EAAGA,EAAI+0K,EAAO/0K,IAAK,CAC5B,IAAMk1K,EAAO7lK,IAAW0lK,EACxBngJ,EAAY54B,KAAKi5K,EAAKC,IAG9BtgJ,EAAY34B,e,CA9Ba,M,kCCtBjC,IAAIk5K,EAAoBlgJ,EAAQ,QAEhC,SAASmgJ,EAAkBjjJ,GACzBh6B,KAAKg6B,QAAUA,GAGjBijJ,EAAkBvqJ,UAAY,IAAI2B,OACNlzB,KAAO,oBAEnCi8B,EAAOC,QAAU,SAAUx4B,EAAMmjB,GAC/B,GAAqB,iBAAVnjB,EACT,MAAM,IAAIo4K,EAAkB,2BAI9B,IAAIC,GAAyB,KAD7Bl1J,EAAUA,GAAW,IACHu8C,OAAkB,EAAI,EACxC,IACE,OAAO/qC,KAAKW,MAAM6iJ,EAAkBn4K,EAAM0d,MAAM,KAAK26J,KACrD,MAAOjpJ,GACP,MAAM,IAAIgpJ,EAAkB,4BAA8BhpJ,EAAE+F,WAIhEoD,EAAOC,QAAQ4/I,kBAAoBA,G,sBChB1B,SAAU56J,GAAU,aAIzB,SAAS86J,EAAOplI,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAASqlI,EAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC3C,IAAIphC,EAASlX,EAAS,IACtB,OAAQ/I,GACJ,IAAK,IACD,OAAOqgJ,GAAiBh/F,EAClB,sBACA,sBACV,IAAK,KACD,OAAIm/G,EAAOz3J,GAEHkX,GACCogI,GAAiBh/F,EAAW,cAAa,eAG3CphC,EAAS,aACpB,IAAK,IACD,OAAOogI,EAAgB,eAAW,eACtC,IAAK,KACD,OAAImgB,EAAOz3J,GAEHkX,GAAUogI,GAAiBh/F,EAAW,gBAAY,iBAE/Cg/F,EACApgI,EAAS,eAEbA,EAAS,eACpB,IAAK,KACD,OAAIugJ,EAAOz3J,GAEHkX,GACCogI,GAAiBh/F,EACZ,gBACA,iBAGPphC,EAAS,cACpB,IAAK,IACD,OAAIogI,EACO,QAEJh/F,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAIm/G,EAAOz3J,GACHs3I,EACOpgI,EAAS,QAEbA,GAAUohC,EAAW,OAAS,YAC9Bg/F,EACApgI,EAAS,QAEbA,GAAUohC,EAAW,MAAQ,QACxC,IAAK,IACD,OAAIg/F,EACO,gBAEJh/F,EAAW,cAAU,eAChC,IAAK,KACD,OAAIm/G,EAAOz3J,GACHs3I,EACOpgI,EAAS,gBAEbA,GAAUohC,EAAW,eAAW,iBAChCg/F,EACApgI,EAAS,gBAEbA,GAAUohC,EAAW,cAAU,gBAC1C,IAAK,IACD,OAAOg/F,GAAiBh/F,EAAW,QAAO,SAC9C,IAAK,KACD,OAAIm/G,EAAOz3J,GACAkX,GAAUogI,GAAiBh/F,EAAW,QAAO,WAEjDphC,GAAUogI,GAAiBh/F,EAAW,QAAO,WAIvD37C,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wHAAoFL,MACxF,KAEJM,YAAa,oEAAkDN,MAAM,KACrEgB,SACI,kGAAmFhB,MAC/E,KAERiB,cAAe,0CAA8BjB,MAAM,KACnDkB,YAAa,gCAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,uBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,uBACNC,EAAGw4J,EACHv4J,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAG,cACHC,GAAIo4J,EACJplK,EAAGolK,EACHn4J,GAAIm4J,EACJh4J,EAAGg4J,EACH/3J,GAAI+3J,EACJ93J,EAAG83J,EACH73J,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1IyB/gB,CAAQ,EAAQ,U,kCCN1D,gDACe,SAASu4K,EAA4BlvI,EAAGmvI,GACrD,GAAKnvI,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO,YAAiBA,EAAGmvI,GACtD,IAAIvlI,EAAIv7B,OAAOkW,UAAUT,SAASiD,KAAKiZ,GAAG3kC,MAAM,GAAI,GAEpD,MADU,WAANuuC,GAAkB5J,EAAE+B,cAAa6H,EAAI5J,EAAE+B,YAAY/uC,MAC7C,QAAN42C,GAAqB,QAANA,EAAoBxtC,MAAMjG,KAAK6pC,GACxC,cAAN4J,GAAqB,2CAA2C/0B,KAAK+0B,GAAW,YAAiB5J,EAAGmvI,QAAxG,K,sBCGO,SAAUj7J,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wFAAqFL,MACzF,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SACI,wFAA4EhB,MACxE,KAERiB,cAAe,0CAA8BjB,MAAM,KACnDkB,YAAa,gCAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,wBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,kBACNC,EAAG,eACHC,GAAI,cACJ/B,EAAG,eACHgC,GAAI,cACJC,EAAG,cACHC,GAAI,cACJhN,EAAG,YACHiN,GAAI,WACJG,EAAG,oBACHC,GAAI,mBACJC,EAAG,aACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtDyB/gB,CAAQ,EAAQ,U,kCCJ1D,oIAAYy4K,EAAZ,SAAYA,G,OACX,yBACA,2BACA,+BACA,wCACA,oCALWA,EAAZ,CAMC,IAED,aAGA,OADC,SAAmB90C,GAAA,KAAAA,UADV,KAAA/nI,KAAO68K,EAAgBC,OADjC,GAKA,aAEA,OAFA,WACU,KAAA98K,KAAO68K,EAAgBE,QADjC,GASA,aAEA,OAFA,WACU,KAAA/8K,KAAO68K,EAAgBG,eADjC,I,sKCtBM,SAAUp5K,EAAKk6C,EAAOstF,GACxB,OAAKA,ECIH,SAAoBttF,EAAOstF,GAC7B,GAAa,MAATttF,EAAe,CACf,GCTF,SAA8BA,GAChC,OAAOA,GAA6C,mBAA7BA,EAAM,KDQrBm/H,CAAoBn/H,GACpB,OERN,SAA6BA,EAAOstF,GACtC,OAAO,IAAItR,EAAA,EAAW,SAAAj+F,GAClB,IAAM01D,EAAM,IAAI8yD,EAAA,EAShB,OARA9yD,EAAIpvF,IAAIipI,EAAU1nI,SAAS,WACvB,IAAM0nC,EAAa0S,EAAM,OACzByzC,EAAIpvF,IAAIipC,EAAW5nC,UAAU,CACzBL,KADyB,SACpBtC,GAAS0wF,EAAIpvF,IAAIipI,EAAU1nI,SAAS,kBAAMm4B,EAAW14B,KAAKtC,OAC/DyzB,MAFyB,SAEnB2H,GAAOs1D,EAAIpvF,IAAIipI,EAAU1nI,SAAS,kBAAMm4B,EAAWvH,MAAM2H,OAC/D74B,SAHyB,WAGZmuF,EAAIpvF,IAAIipI,EAAU1nI,SAAS,kBAAMm4B,EAAWz4B,qBAG1DmuF,IFHI2rF,CAAmBp/H,EAAOstF,GAEhC,GAAI,OAAA+xC,EAAA,GAAUr/H,GACf,OGZN,SAA0BA,EAAOstF,GACnC,OAAO,IAAItR,EAAA,EAAW,SAAAj+F,GAClB,IAAM01D,EAAM,IAAI8yD,EAAA,EAShB,OARA9yD,EAAIpvF,IAAIipI,EAAU1nI,SAAS,kBAAMo6C,EAAMngC,KAAK,SAAA9c,GACxC0wF,EAAIpvF,IAAIipI,EAAU1nI,SAAS,WACvBm4B,EAAW14B,KAAKtC,GAChB0wF,EAAIpvF,IAAIipI,EAAU1nI,SAAS,kBAAMm4B,EAAWz4B,kBAEjD,SAAA64B,GACCs1D,EAAIpvF,IAAIipI,EAAU1nI,SAAS,kBAAMm4B,EAAWvH,MAAM2H,WAE/Cs1D,IHCI6rF,CAAgBt/H,EAAOstF,GAE7B,GAAI,OAAAiyC,EAAA,GAAYv/H,GACjB,OAAO,OAAAw/H,EAAA,GAAcx/H,EAAOstF,GAE3B,GIlBP,SAAqBttF,GACvB,OAAOA,GAA2C,mBAA3BA,EAAM,KJiBhBy/H,CAAWz/H,IAA2B,iBAAVA,EACjC,OKjBN,SAA2BA,EAAOstF,GACpC,IAAKttF,EACD,MAAM,IAAInqB,MAAM,2BAEpB,OAAO,IAAImmG,EAAA,EAAW,SAAAj+F,GAClB,IACIyoG,EADE/yC,EAAM,IAAI8yD,EAAA,EAiChB,OA/BA9yD,EAAIpvF,IAAI,WACAmiI,GAAuC,mBAApBA,EAAS/vG,QAC5B+vG,EAAS/vG,WAGjBg9D,EAAIpvF,IAAIipI,EAAU1nI,SAAS,WACvB4gI,EAAWxmF,EAAM,OACjByzC,EAAIpvF,IAAIipI,EAAU1nI,SAAS,WACvB,IAAIm4B,EAAW/U,OAAf,CAGA,IAAIjmB,EACAqzB,EACJ,IACI,IAAMgI,EAASooG,EAASnhI,OACxBtC,EAAQq7B,EAAOr7B,MACfqzB,EAAOgI,EAAOhI,KAElB,MAAO+H,GAEH,YADAJ,EAAWvH,MAAM2H,GAGjB/H,EACA2H,EAAWz4B,YAGXy4B,EAAW14B,KAAKtC,GAChBvB,KAAKoE,mBAIV6tF,ILrBIisF,CAAiB1/H,EAAOstF,GAGvC,MAAM,IAAIt5F,WAAqB,OAAVgM,UAAyBA,GAASA,GAAS,sBDZrD2mH,CAAU3mH,EAAOstF,GANpBttF,aAAiBg8E,EAAA,EACVh8E,EAEJ,IAAIg8E,EAAA,EAAW,OAAA2jD,EAAA,GAAY3/H,M,kCON1C,IAAIx7B,EAAO,CACVsmH,UAAW,KACX80C,IAAK,IAGFC,EAAU7hK,OAGd4gB,EAAOC,QAAU,WAEhB,MAAO,CAAEisG,UAAWtmH,GAAOo7J,MAAQp7J,EAAKo7J,OAClCp7J,aAAgBq7J,K,sBCLd,SAAUh8J,GAAU,aAIzB,IAAIi8J,EACI,8DAA8D/7J,MAC1D,KAER,EAAc,kDAAkDA,MAAM,KACtEE,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEGL,EAAOM,aAAa,QAAS,CACpCC,OAAQ,2FAA2FL,MAC/F,KAEJM,YAAa,SAAUC,EAAGC,GACtB,OAAKD,EAEM,QAAQE,KAAKD,GACb,EAAYD,EAAEG,SAEdq7J,EAAex7J,EAAEG,SAJjBq7J,GAOf57J,YAAaA,EACbQ,iBAAkBR,EAClBS,kBACI,+FACJC,uBACI,0FACJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAClBc,SAAU,6DAAuDhB,MAAM,KACvEiB,cAAe,2CAAqCjB,MAAM,KAC1DkB,YAAa,0BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE3D56B,QAAS,WACL,MAAO,mBAAmC,IAAjBpkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE9D36B,SAAU,WACN,MAAO,cAAiC,IAAjBrkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5D16B,QAAS,WACL,MAAO,cAAiC,IAAjBtkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5Dz6B,SAAU,WACN,MACI,0BACkB,IAAjBvkB,KAAKg/C,QAAgB,IAAM,IAC5B,QAGRx6B,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,gBACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,YACHiN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3GyB/gB,CAAQ,EAAQ,U,sBCKjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0WAAwEL,MAC5E,KAEJM,YACI,0WAAwEN,MACpE,KAERgB,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNC,EAAG,2BACHC,GAAI,oCACJ/B,EAAG,iCACHgC,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJhN,EAAG,qBACHiN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB/gB,CAAQ,EAAQ,U,0JCNpD,SAAUy5K,EAAMh9K,GAClB,OAAO,SAACglB,GAAD,OAAYA,EAAO8V,KAAK,IAAImiJ,EAAcj9K,K,IAE/Ci9K,E,8BACF,WAAYj9K,GAAK,oBACbvB,KAAKuB,MAAQA,G,mBAEjB,SAAKg7B,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIu6K,EAAgBliJ,EAAYv8B,KAAKuB,Y,GAG/Dk9K,E,YACF,WAAYhiJ,EAAal7B,GAAK,M,MAAA,2B,EAC1B,K,EAAA,E,EAAA,CAAMk7B,G,kBAAN,E,iGACKl7B,MAAQA,EAFa,E,0DAI9B,SAAMg6B,GACFv7B,KAAKy8B,YAAY54B,KAAK7D,KAAKuB,W,CANL,M,kCCa9B,IAAIm9K,EAAW5hJ,EAAQ,QAEvB,SAAS6hJ,IACP3+K,KAAK4+K,SAAW,KAChB5+K,KAAK6+K,QAAU,KACf7+K,KAAK8+K,KAAO,KACZ9+K,KAAK4e,KAAO,KACZ5e,KAAK++K,KAAO,KACZ/+K,KAAKu6B,SAAW,KAChBv6B,KAAKi8C,KAAO,KACZj8C,KAAK6tH,OAAS,KACd7tH,KAAKyqC,MAAQ,KACbzqC,KAAKg/K,SAAW,KAChBh/K,KAAKmxI,KAAO,KACZnxI,KAAKo+D,KAAO,KASd,IAAI6gH,EAAkB,oBACpBC,EAAc,WAGdC,EAAoB,oCAWpBC,EAAS,CACP,IAAK,IAAK,IAAK,KAAM,IAAK,KAC1BpmK,OAPO,CACP,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,OASvCqmK,EAAa,CAAC,KAAMrmK,OAAOomK,GAO3BE,EAAe,CACb,IAAK,IAAK,IAAK,IAAK,KACpBtmK,OAAOqmK,GACTE,EAAkB,CAChB,IAAK,IAAK,KAGZC,EAAsB,yBACtBC,EAAoB,+BAEpBC,EAAiB,CACfC,YAAY,EACZ,eAAe,GAGjBC,EAAmB,CACjBD,YAAY,EACZ,eAAe,GAGjBE,EAAkB,CAChB1oJ,MAAM,EACN2oJ,OAAO,EACPC,KAAK,EACLC,QAAQ,EACRC,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,GAEXC,EAAcpjJ,EAAQ,QAExB,SAASqjJ,EAAShsI,EAAKisI,EAAkBC,GACvC,GAAIlsI,GAAsB,iBAARA,GAAoBA,aAAewqI,EAAO,OAAOxqI,EAEnE,IAAImsI,EAAI,IAAI3B,EAEZ,OADA2B,EAAEnmJ,MAAMga,EAAKisI,EAAkBC,GACxBC,EAGT3B,EAAIjsJ,UAAUyH,MAAQ,SAAUga,EAAKisI,EAAkBC,GACrD,GAAmB,iBAARlsI,EACT,MAAM,IAAI3B,UAAU,gDAAkD2B,GAQxE,IAAIosI,EAAapsI,EAAIlrC,QAAQ,KAC3Bu3K,GAA2B,IAAhBD,GAAqBA,EAAapsI,EAAIlrC,QAAQ,KAAO,IAAM,IACtEw3K,EAAStsI,EAAI5xB,MAAMi+J,GAErBC,EAAO,GAAKA,EAAO,GAAGj/K,QADP,MAC2B,KAG1C,IAAIk/K,EAFJvsI,EAAMssI,EAAOzwI,KAAKwwI,GAUlB,GAFAE,EAAOA,EAAK5jK,QAEPujK,GAA+C,IAA1BlsI,EAAI5xB,MAAM,KAAKpe,OAAc,CAErD,IAAIw8K,EAAaxB,EAAkBzgI,KAAKgiI,GACxC,GAAIC,EAeF,OAdA3gL,KAAKmxI,KAAOuvC,EACZ1gL,KAAKo+D,KAAOsiH,EACZ1gL,KAAKg/K,SAAW2B,EAAW,GACvBA,EAAW,IACb3gL,KAAK6tH,OAAS8yD,EAAW,GAEvB3gL,KAAKyqC,MADH21I,EACWF,EAAY/lJ,MAAMn6B,KAAK6tH,OAAOt2E,OAAO,IAErCv3C,KAAK6tH,OAAOt2E,OAAO,IAEzB6oI,IACTpgL,KAAK6tH,OAAS,GACd7tH,KAAKyqC,MAAQ,IAERzqC,KAIX,IAAI4gL,EAAQ3B,EAAgBvgI,KAAKgiI,GACjC,GAAIE,EAAO,CAET,IAAIC,GADJD,EAAQA,EAAM,IACShkK,cACvB5c,KAAK4+K,SAAWiC,EAChBH,EAAOA,EAAKnpI,OAAOqpI,EAAMz8K,QAS3B,GAAIk8K,GAAqBO,GAASF,EAAKpvI,MAAM,sBAAuB,CAClE,IAAIutI,EAAgC,OAAtB6B,EAAKnpI,OAAO,EAAG,IACzBsnI,GAAa+B,GAAShB,EAAiBgB,KACzCF,EAAOA,EAAKnpI,OAAO,GACnBv3C,KAAK6+K,SAAU,GAInB,IAAKe,EAAiBgB,KAAW/B,GAAY+B,IAAUf,EAAgBe,IAAU,CAuB/E,IADA,IAUI9B,EAAMgC,EAVNC,GAAW,EACNl5K,EAAI,EAAGA,EAAI03K,EAAgBp7K,OAAQ0D,KAE7B,KADTm5K,EAAMN,EAAKz3K,QAAQs2K,EAAgB13K,QACP,IAAbk5K,GAAkBC,EAAMD,KAAYA,EAAUC,GA+BnE,KARgB,KAbdF,GAFe,IAAbC,EAEOL,EAAK33K,YAAY,KAMjB23K,EAAK33K,YAAY,IAAKg4K,MAQ/BjC,EAAO4B,EAAKl3K,MAAM,EAAGs3K,GACrBJ,EAAOA,EAAKl3K,MAAMs3K,EAAS,GAC3B9gL,KAAK8+K,KAAO/vI,mBAAmB+vI,IAIjCiC,GAAW,EACFl5K,EAAI,EAAGA,EAAIy3K,EAAan7K,OAAQ0D,IAAK,CAC5C,IAAIm5K,GACS,KADTA,EAAMN,EAAKz3K,QAAQq2K,EAAaz3K,QACJ,IAAbk5K,GAAkBC,EAAMD,KAAYA,EAAUC,IAGlD,IAAbD,IAAkBA,EAAUL,EAAKv8K,QAErCnE,KAAK4e,KAAO8hK,EAAKl3K,MAAM,EAAGu3K,GAC1BL,EAAOA,EAAKl3K,MAAMu3K,GAGlB/gL,KAAKihL,YAMLjhL,KAAKu6B,SAAWv6B,KAAKu6B,UAAY,GAMjC,IAAI2mJ,EAAoC,MAArBlhL,KAAKu6B,SAAS,IAA0D,MAA5Cv6B,KAAKu6B,SAASv6B,KAAKu6B,SAASp2B,OAAS,GAGpF,IAAK+8K,EAEH,IADA,IAAIC,EAAYnhL,KAAKu6B,SAAShY,MAAM,MACpBqpH,GAAP/jI,EAAI,EAAOs5K,EAAUh9K,QAAQ0D,EAAI+jI,EAAG/jI,IAAK,CAChD,IAAIy6I,EAAO6+B,EAAUt5K,GACrB,GAAKy6I,IACAA,EAAKhxG,MAAMkuI,GAAsB,CAEpC,IADA,IAAI4B,EAAU,GACL7sK,EAAI,EAAGioH,EAAI8lB,EAAKn+I,OAAQoQ,EAAIioH,EAAGjoH,IAClC+tI,EAAKzyG,WAAWt7B,GAAK,IAMvB6sK,GAAW,IAEXA,GAAW9+B,EAAK/tI,GAIpB,IAAK6sK,EAAQ9vI,MAAMkuI,GAAsB,CACvC,IAAI6B,EAAaF,EAAU33K,MAAM,EAAG3B,GAChCy5K,EAAUH,EAAU33K,MAAM3B,EAAI,GAC9B05K,EAAMj/B,EAAKhxG,MAAMmuI,GACjB8B,IACFF,EAAWz9K,KAAK29K,EAAI,IACpBD,EAAQxlI,QAAQylI,EAAI,KAElBD,EAAQn9K,SACVu8K,EAAO,IAAMY,EAAQtxI,KAAK,KAAO0wI,GAEnC1gL,KAAKu6B,SAAW8mJ,EAAWrxI,KAAK,KAChC,QAONhwC,KAAKu6B,SADHv6B,KAAKu6B,SAASp2B,OAjOH,IAkOG,GAGAnE,KAAKu6B,SAAS3d,cAG3BskK,IAOHlhL,KAAKu6B,SAAWmkJ,EAAS8C,QAAQxhL,KAAKu6B,WAKxCv6B,KAAK4e,MADG5e,KAAKu6B,UAAY,KADjBv6B,KAAK++K,KAAO,IAAM/+K,KAAK++K,KAAO,IAGtC/+K,KAAKo+D,MAAQp+D,KAAK4e,KAMdsiK,IACFlhL,KAAKu6B,SAAWv6B,KAAKu6B,SAASgd,OAAO,EAAGv3C,KAAKu6B,SAASp2B,OAAS,GAC/C,MAAZu8K,EAAK,KACPA,EAAO,IAAMA,IASnB,IAAKhB,EAAemB,GAOlB,IAASh5K,EAAI,EAAG+jI,EAAIyzC,EAAWl7K,OAAQ0D,EAAI+jI,EAAG/jI,IAAK,CACjD,IAAI45K,EAAKpC,EAAWx3K,GACpB,IAA0B,IAAtB64K,EAAKz3K,QAAQw4K,GAAjB,CACA,IAAIC,EAAM33F,mBAAmB03F,GACzBC,IAAQD,IACVC,EAAMpyI,OAAOmyI,IAEff,EAAOA,EAAKn+J,MAAMk/J,GAAIzxI,KAAK0xI,IAK/B,IAAIzlI,EAAOykI,EAAKz3K,QAAQ,MACV,IAAVgzC,IAEFj8C,KAAKi8C,KAAOykI,EAAKnpI,OAAO0E,GACxBykI,EAAOA,EAAKl3K,MAAM,EAAGyyC,IAEvB,IAAI0lI,EAAKjB,EAAKz3K,QAAQ,KA2BtB,OA1BY,IAAR04K,GACF3hL,KAAK6tH,OAAS6yD,EAAKnpI,OAAOoqI,GAC1B3hL,KAAKyqC,MAAQi2I,EAAKnpI,OAAOoqI,EAAK,GAC1BvB,IACFpgL,KAAKyqC,MAAQy1I,EAAY/lJ,MAAMn6B,KAAKyqC,QAEtCi2I,EAAOA,EAAKl3K,MAAM,EAAGm4K,IACZvB,IAETpgL,KAAK6tH,OAAS,GACd7tH,KAAKyqC,MAAQ,IAEXi2I,IAAQ1gL,KAAKg/K,SAAW0B,GACxBb,EAAgBgB,IAAe7gL,KAAKu6B,WAAav6B,KAAKg/K,WACxDh/K,KAAKg/K,SAAW,MAIdh/K,KAAKg/K,UAAYh/K,KAAK6tH,UAGxB7tH,KAAKmxI,MAFGnxI,KAAKg/K,UAAY,KACjBh/K,KAAK6tH,QAAU,KAKzB7tH,KAAKo+D,KAAOp+D,KAAK+iB,SACV/iB,MAgBT2+K,EAAIjsJ,UAAU3P,OAAS,WACrB,IAAI+7J,EAAO9+K,KAAK8+K,MAAQ,GACpBA,IAEFA,GADAA,EAAO/0F,mBAAmB+0F,IACdt9K,QAAQ,OAAQ,KAC5Bs9K,GAAQ,KAGV,IAAIF,EAAW5+K,KAAK4+K,UAAY,GAC9BI,EAAWh/K,KAAKg/K,UAAY,GAC5B/iI,EAAOj8C,KAAKi8C,MAAQ,GACpBr9B,GAAO,EACP6rB,EAAQ,GAENzqC,KAAK4e,KACPA,EAAOkgK,EAAO9+K,KAAK4e,KACV5e,KAAKu6B,WACd3b,EAAOkgK,IAAwC,IAAhC9+K,KAAKu6B,SAAStxB,QAAQ,KAAcjJ,KAAKu6B,SAAW,IAAMv6B,KAAKu6B,SAAW,KACrFv6B,KAAK++K,OACPngK,GAAQ,IAAM5e,KAAK++K,OAInB/+K,KAAKyqC,OAA+B,iBAAfzqC,KAAKyqC,OAAsBjuB,OAAOC,KAAKzc,KAAKyqC,OAAOtmC,SAC1EsmC,EAAQy1I,EAAYzmJ,UAAUz5B,KAAKyqC,MAAO,CACxCm3I,YAAa,SACbC,gBAAgB,KAIpB,IAAIh0D,EAAS7tH,KAAK6tH,QAAWpjF,GAAU,IAAMA,GAAW,GAuBxD,OArBIm0I,GAAoC,MAAxBA,EAASrnI,QAAQ,KAAcqnI,GAAY,KAMvD5+K,KAAK6+K,WAAaD,GAAYiB,EAAgBjB,MAAuB,IAAThgK,GAC9DA,EAAO,MAAQA,GAAQ,IACnBogK,GAAmC,MAAvBA,EAASjvI,OAAO,KAAcivI,EAAW,IAAMA,IACrDpgK,IACVA,EAAO,IAGLq9B,GAA2B,MAAnBA,EAAKlM,OAAO,KAAckM,EAAO,IAAMA,GAC/C4xE,GAA+B,MAArBA,EAAO99E,OAAO,KAAc89E,EAAS,IAAMA,GAOlD+wD,EAAWhgK,GALlBogK,EAAWA,EAASx9K,QAAQ,QAAS,SAAU8vC,GAC7C,OAAOy4C,mBAAmBz4C,OAE5Bu8E,EAASA,EAAOrsH,QAAQ,IAAK,QAEgBy6C,GAO/C0iI,EAAIjsJ,UAAUluB,QAAU,SAAUs9K,GAChC,OAAO9hL,KAAK+hL,cAAc5B,EAAS2B,GAAU,GAAO,IAAO/+J,UAQ7D47J,EAAIjsJ,UAAUqvJ,cAAgB,SAAUD,GACtC,GAAwB,iBAAbA,EAAuB,CAChC,IAAIE,EAAM,IAAIrD,EACdqD,EAAI7nJ,MAAM2nJ,GAAU,GAAO,GAC3BA,EAAWE,EAKb,IAFA,IAAIplJ,EAAS,IAAI+hJ,EACbsD,EAAQzlK,OAAOC,KAAKzc,MACfkiL,EAAK,EAAGA,EAAKD,EAAM99K,OAAQ+9K,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACjBtlJ,EAAOulJ,GAAQniL,KAAKmiL,GAUtB,GAHAvlJ,EAAOqf,KAAO6lI,EAAS7lI,KAGD,KAAlB6lI,EAAS1jH,KAEX,OADAxhC,EAAOwhC,KAAOxhC,EAAO7Z,SACd6Z,EAIT,GAAIklJ,EAASjD,UAAYiD,EAASlD,SAAU,CAG1C,IADA,IAAIwD,EAAQ5lK,OAAOC,KAAKqlK,GACfO,EAAK,EAAGA,EAAKD,EAAMj+K,OAAQk+K,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACJ,aAATC,IAAuB1lJ,EAAO0lJ,GAAQR,EAASQ,IAUrD,OANIzC,EAAgBjjJ,EAAOgiJ,WAAahiJ,EAAOrC,WAAaqC,EAAOoiJ,WACjEpiJ,EAAOoiJ,SAAW,IAClBpiJ,EAAOu0G,KAAOv0G,EAAOoiJ,UAGvBpiJ,EAAOwhC,KAAOxhC,EAAO7Z,SACd6Z,EAGT,GAAIklJ,EAASlD,UAAYkD,EAASlD,WAAahiJ,EAAOgiJ,SAAU,CAW9D,IAAKiB,EAAgBiC,EAASlD,UAAW,CAEvC,IADA,IAAIniK,EAAOD,OAAOC,KAAKqlK,GACd7hL,EAAI,EAAGA,EAAIwc,EAAKtY,OAAQlE,IAAK,CACpC,IAAIu8H,EAAI//G,EAAKxc,GACb28B,EAAO4/F,GAAKslD,EAAStlD,GAGvB,OADA5/F,EAAOwhC,KAAOxhC,EAAO7Z,SACd6Z,EAIT,GADAA,EAAOgiJ,SAAWkD,EAASlD,SACtBkD,EAASljK,MAASghK,EAAiBkC,EAASlD,UAS/ChiJ,EAAOoiJ,SAAW8C,EAAS9C,aAT+B,CAE1D,IADA,IAAIuD,GAAWT,EAAS9C,UAAY,IAAIz8J,MAAM,KACvCggK,EAAQp+K,UAAY29K,EAASljK,KAAO2jK,EAAQ5tK,WAC9CmtK,EAASljK,OAAQkjK,EAASljK,KAAO,IACjCkjK,EAASvnJ,WAAYunJ,EAASvnJ,SAAW,IAC3B,KAAfgoJ,EAAQ,IAAaA,EAAQzmI,QAAQ,IACrCymI,EAAQp+K,OAAS,GAAKo+K,EAAQzmI,QAAQ,IAC1Clf,EAAOoiJ,SAAWuD,EAAQvyI,KAAK,KAkBjC,OAdApT,EAAOixF,OAASi0D,EAASj0D,OACzBjxF,EAAO6N,MAAQq3I,EAASr3I,MACxB7N,EAAOhe,KAAOkjK,EAASljK,MAAQ,GAC/Bge,EAAOkiJ,KAAOgD,EAAShD,KACvBliJ,EAAOrC,SAAWunJ,EAASvnJ,UAAYunJ,EAASljK,KAChDge,EAAOmiJ,KAAO+C,EAAS/C,MAEnBniJ,EAAOoiJ,UAAYpiJ,EAAOixF,UAG5BjxF,EAAOu0G,MAFCv0G,EAAOoiJ,UAAY,KACnBpiJ,EAAOixF,QAAU,KAG3BjxF,EAAOiiJ,QAAUjiJ,EAAOiiJ,SAAWiD,EAASjD,QAC5CjiJ,EAAOwhC,KAAOxhC,EAAO7Z,SACd6Z,EAGT,IAAI4lJ,EAAc5lJ,EAAOoiJ,UAA0C,MAA9BpiJ,EAAOoiJ,SAASjvI,OAAO,GAC1D0yI,EAAWX,EAASljK,MAAQkjK,EAAS9C,UAA4C,MAAhC8C,EAAS9C,SAASjvI,OAAO,GAC1E2yI,EAAaD,GAAYD,GAAgB5lJ,EAAOhe,MAAQkjK,EAAS9C,SACjE2D,EAAgBD,EAChBE,EAAUhmJ,EAAOoiJ,UAAYpiJ,EAAOoiJ,SAASz8J,MAAM,MAAQ,GAE3DsgK,GADAN,EAAUT,EAAS9C,UAAY8C,EAAS9C,SAASz8J,MAAM,MAAQ,GACnDqa,EAAOgiJ,WAAaiB,EAAgBjjJ,EAAOgiJ,WA2BzD,GAlBIiE,IACFjmJ,EAAOrC,SAAW,GAClBqC,EAAOmiJ,KAAO,KACVniJ,EAAOhe,OACU,KAAfgkK,EAAQ,GAAaA,EAAQ,GAAKhmJ,EAAOhe,KAAegkK,EAAQ9mI,QAAQlf,EAAOhe,OAErFge,EAAOhe,KAAO,GACVkjK,EAASlD,WACXkD,EAASvnJ,SAAW,KACpBunJ,EAAS/C,KAAO,KACZ+C,EAASljK,OACQ,KAAf2jK,EAAQ,GAAaA,EAAQ,GAAKT,EAASljK,KAAe2jK,EAAQzmI,QAAQgmI,EAASljK,OAEzFkjK,EAASljK,KAAO,MAElB8jK,EAAaA,IAA8B,KAAfH,EAAQ,IAA4B,KAAfK,EAAQ,KAGvDH,EAEF7lJ,EAAOhe,KAAOkjK,EAASljK,MAA0B,KAAlBkjK,EAASljK,KAAckjK,EAASljK,KAAOge,EAAOhe,KAC7Ege,EAAOrC,SAAWunJ,EAASvnJ,UAAkC,KAAtBunJ,EAASvnJ,SAAkBunJ,EAASvnJ,SAAWqC,EAAOrC,SAC7FqC,EAAOixF,OAASi0D,EAASj0D,OACzBjxF,EAAO6N,MAAQq3I,EAASr3I,MACxBm4I,EAAUL,OAEL,GAAIA,EAAQp+K,OAKZy+K,IAAWA,EAAU,IAC1BA,EAAQ3jJ,MACR2jJ,EAAUA,EAAQ5pK,OAAOupK,GACzB3lJ,EAAOixF,OAASi0D,EAASj0D,OACzBjxF,EAAO6N,MAAQq3I,EAASr3I,WACnB,GAAuB,MAAnBq3I,EAASj0D,OA4BlB,OAtBIg1D,IACFjmJ,EAAOhe,KAAOgkK,EAAQjuK,QACtBioB,EAAOrC,SAAWqC,EAAOhe,MAMrBkkK,KAAalmJ,EAAOhe,MAAQge,EAAOhe,KAAK3V,QAAQ,KAAO,IAAI2zB,EAAOhe,KAAK2D,MAAM,QAE/Eqa,EAAOkiJ,KAAOgE,EAAWnuK,QACzBioB,EAAOrC,SAAWuoJ,EAAWnuK,QAC7BioB,EAAOhe,KAAOge,EAAOrC,WAGzBqC,EAAOixF,OAASi0D,EAASj0D,OACzBjxF,EAAO6N,MAAQq3I,EAASr3I,MAEA,OAApB7N,EAAOoiJ,UAAuC,OAAlBpiJ,EAAOixF,SACrCjxF,EAAOu0G,MAAQv0G,EAAOoiJ,SAAWpiJ,EAAOoiJ,SAAW,KAAOpiJ,EAAOixF,OAASjxF,EAAOixF,OAAS,KAE5FjxF,EAAOwhC,KAAOxhC,EAAO7Z,SACd6Z,EAGT,IAAKgmJ,EAAQz+K,OAaX,OARAy4B,EAAOoiJ,SAAW,KAGhBpiJ,EAAOu0G,KADLv0G,EAAOixF,OACK,IAAMjxF,EAAOixF,OAEb,KAEhBjxF,EAAOwhC,KAAOxhC,EAAO7Z,SACd6Z,EAgBT,IARA,IAAIzlB,EAAOyrK,EAAQp5K,OAAO,GAAG,GACzBu5K,GAAoBnmJ,EAAOhe,MAAQkjK,EAASljK,MAAQgkK,EAAQz+K,OAAS,KAAgB,MAATgT,GAAyB,OAATA,IAA2B,KAATA,EAM9G6rK,EAAK,EACAn7K,EAAI+6K,EAAQz+K,OAAQ0D,GAAK,EAAGA,IAEtB,OADbsP,EAAOyrK,EAAQ/6K,IAEb+6K,EAAQr6I,OAAO1gC,EAAG,GACA,OAATsP,GACTyrK,EAAQr6I,OAAO1gC,EAAG,GAClBm7K,KACSA,IACTJ,EAAQr6I,OAAO1gC,EAAG,GAClBm7K,KAKJ,IAAKN,IAAeC,EAClB,KAAOK,IAAMA,EACXJ,EAAQ9mI,QAAQ,OAIhB4mI,GAA6B,KAAfE,EAAQ,IAAeA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAG7yI,OAAO,IACvE6yI,EAAQ9mI,QAAQ,IAGdinI,GAAsD,MAAjCH,EAAQ5yI,KAAK,KAAKuH,QAAQ,IACjDqrI,EAAQh/K,KAAK,IAGf,IAWMk/K,EAXF38E,EAA4B,KAAfy8E,EAAQ,IAAcA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAG7yI,OAAO,GAuCvE,OApCI8yI,IACFjmJ,EAAOrC,SAAW4rE,EAAa,GAAKy8E,EAAQz+K,OAASy+K,EAAQjuK,QAAU,GACvEioB,EAAOhe,KAAOge,EAAOrC,UAMjBuoJ,KAAalmJ,EAAOhe,MAAQge,EAAOhe,KAAK3V,QAAQ,KAAO,IAAI2zB,EAAOhe,KAAK2D,MAAM,QAE/Eqa,EAAOkiJ,KAAOgE,EAAWnuK,QACzBioB,EAAOrC,SAAWuoJ,EAAWnuK,QAC7BioB,EAAOhe,KAAOge,EAAOrC,YAIzBmoJ,EAAaA,GAAe9lJ,EAAOhe,MAAQgkK,EAAQz+K,UAEhCgiG,GACjBy8E,EAAQ9mI,QAAQ,IAGd8mI,EAAQz+K,OAAS,EACnBy4B,EAAOoiJ,SAAW4D,EAAQ5yI,KAAK,MAE/BpT,EAAOoiJ,SAAW,KAClBpiJ,EAAOu0G,KAAO,MAIQ,OAApBv0G,EAAOoiJ,UAAuC,OAAlBpiJ,EAAOixF,SACrCjxF,EAAOu0G,MAAQv0G,EAAOoiJ,SAAWpiJ,EAAOoiJ,SAAW,KAAOpiJ,EAAOixF,OAASjxF,EAAOixF,OAAS,KAE5FjxF,EAAOkiJ,KAAOgD,EAAShD,MAAQliJ,EAAOkiJ,KACtCliJ,EAAOiiJ,QAAUjiJ,EAAOiiJ,SAAWiD,EAASjD,QAC5CjiJ,EAAOwhC,KAAOxhC,EAAO7Z,SACd6Z,GAGT+hJ,EAAIjsJ,UAAUuuJ,UAAY,WACxB,IAAIriK,EAAO5e,KAAK4e,KACZmgK,EAAOG,EAAYxgI,KAAK9/B,GACxBmgK,IAEW,OADbA,EAAOA,EAAK,MAEV/+K,KAAK++K,KAAOA,EAAKxnI,OAAO,IAE1B34B,EAAOA,EAAK24B,OAAO,EAAG34B,EAAKza,OAAS46K,EAAK56K,SAEvCya,IAAQ5e,KAAKu6B,SAAW3b,IAG9Bye,EAAQlD,MAAQgmJ,EAChB9iJ,EAAQ74B,QA/SR,SAAoB+hB,EAAQu7J,GAC1B,OAAO3B,EAAS55J,GAAQ,GAAO,GAAM/hB,QAAQs9K,IA+S/CzkJ,EAAQ0kJ,cAxSR,SAA0Bx7J,EAAQu7J,GAChC,OAAKv7J,EACE45J,EAAS55J,GAAQ,GAAO,GAAMw7J,cAAcD,GAD7BA,GAwSxBzkJ,EAAQta,OArXR,SAAmBhF,GAQjB,MADmB,iBAARA,IAAoBA,EAAMoiK,EAASpiK,IACxCA,aAAe4gK,EACd5gK,EAAIgF,SADyB47J,EAAIjsJ,UAAU3P,OAAOmS,KAAKnX,IA+WhEsf,EAAQshJ,IAAMA,G,wBC9vBL,SAAUt8J,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,+FAA+FL,MACnG,KAEJM,YACI,8DAA8DN,MAC1D,KAER0U,kBAAkB,EAClB1T,SACI,sEAAsEhB,MAClE,KAERiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN2nH,EAAG,WACHjH,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEV3gH,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,iBACHC,GAAI,aACJ/B,EAAG,aACHgC,GAAI,YACJC,EAAG,WACHC,GAAI,UACJhN,EAAG,WACHiN,GAAI,UACJG,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyB/gB,CAAQ,EAAQ,U,kCCN1D,gFAEam+K,EAAiB,IAF9B,UAEkC,GAAe,KACpCC,EAAQD,G,kCCDrB,IAAIE,EAAiBrmJ,EAAQ,QAE7BM,EAAOC,QAAUs6I,SAASjlJ,UAAU6X,MAAQ44I,G,kCCF5C,wEASA,aAeC,WAAoB1wI,EAAwBlb,EAAwB6rJ,GAAhD,KAAA3wI,KAAwB,KAAAlb,SAAwB,KAAA6rJ,mB,OASpE,YAAA/yD,SAAA,sBAECrwH,KAAKqjL,cAELrjL,KAAK6yD,OAAS7yD,KAAKu3B,OAAOs7B,OAAO3uD,UAAU,SAAAokB,GACtCA,aAAiB,KACpB,EAAKg7J,OAAOC,UAQf,YAAAC,YAAA,WACCxjL,KAAK6yD,OAAOj9C,cACZ5V,KAAKsjL,OAAOpiK,WAMb,YAAAmiK,YAAA,WACCrjL,KAAKsjL,OAAStjL,KAAKojL,iBACjBl/F,MAAM,CAIN,YAAM,CACLviD,UAAW,kBACXD,QAAS,EACT13B,SAAU,WAEX,YAAQ,mBAAoB,YAAM,CAAE23B,UAAW,iBAAkBD,QAAS,OAE1Ep8B,OAAOtF,KAAKyyC,GAAG7vC,gB,sCAxDN6gL,GAAuB,gC,uBAAvBA,EAAuB,yC,EAHpC,I,kCCXA,gCAAO,IAAMztK,EAAW,kBAAMzL,MAAMyL,SAAY,SAACulB,GAAD,OAAOA,GAAyB,iBAAbA,EAAEp3B,QAA7C,I,wBCSf,SAAUke,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACT6B,EAAG,CAAC,qBAAsB,iBAC1BC,GAAI,CAACa,EAAS,cAAeA,EAAS,WACtC5C,EAAG,CAAC,aAAc,YAClBgC,GAAI,CAACY,EAAS,YAAaA,EAAS,WACpCX,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACU,EAAS,WAAYA,EAAS,UACnC1N,EAAG,CAAC,YAAa,UACjBiN,GAAI,CAACS,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,YAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOs4C,EAAWj7C,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAGrC0F,EAAOM,aAAa,WAAY,CAC1CC,OAAQ,CACJ6hH,WACI,4EAA4EliH,MACxE,KAERQ,OAAQ,wIAAwIR,MAC5I,KAEJmiH,SAAU,mBAEd7hH,YACI,4DAA4DN,MAAM,KACtE0U,kBAAkB,EAClB1T,SAAU,uDAAuDhB,MAAM,KACvEiB,cAAe,qCAAqCjB,MAAM,KAC1DkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACN4gH,KAAM,mCAEV3gH,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNC,EAAGm4I,EACHl4I,GAAIk4I,EACJj6I,EAAGi6I,EACHj4I,GAAIi4I,EACJh4I,EAAGg4I,EACH/3I,GAAI+3I,EACJ/kJ,EAAG+kJ,EACH93I,GAAI83I,EACJ33I,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,cACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAO97F,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAET2rB,cAAe,+BACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,SAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAbC,EACAD,EACa,aAAbC,EACAD,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmB5sC,CAAQ,EAAQ,U,kCCN1D,oCAMY4+K,EAAZ,SAAYA,G,OACX,qCACA,qBACA,6CACA,qBACA,6BALWA,EAAZ,CAMC,K,kCCZc,SAASC,EAAgBh0I,GACtC,GAAIplC,MAAMyL,QAAQ25B,GAAM,OAAOA,EADjC,iC,kCCGAvS,EAAOC,QAAUmV,W,sRCiEjB,IAAMoxI,EAA2B,IAAI,IAAe,4BAG9CC,E,+CAEAC,EAAoB,YAAiB,YAAcD,I,iBAEnDE,E,YACF,WAAYj+I,GAAe,M,MAAA,4B,EACvB,K,EAAA,E,iBAAA,E,8FACKA,gBAAkBA,EAEvB,EAAKk+I,UAAY,IAAIv2K,IAErB,EAAKstJ,cAAgB,IAAI,IAKzB,EAAK5xJ,MAAQ,MACb,EAAKo8I,WAAa,GAElB,EAAKnoI,WAAa,IAAI,IAdC,E,4DAiB3B,WAAkB,OAAOpd,KAAKulJ,Y,IAC9B,SAAcv+I,GAKVhH,KAAKulJ,WAAav+I,I,wBAMtB,WAAqB,OAAOhH,KAAKikL,e,IACjC,SAAiBhkL,GAAKD,KAAKikL,cAAgB,YAAsBhkL,K,sBAKjE,SAASikL,GASLlkL,KAAKgkL,UAAU3vK,IAAI6vK,EAASl+J,GAAIk+J,K,wBAMpC,SAAWA,GACPlkL,KAAKgkL,UAAUzxK,OAAO2xK,EAASl+J,M,kBAGnC,SAAKk+J,GACGlkL,KAAK8b,QAAUooK,EAASl+J,IACxBhmB,KAAK8b,OAASooK,EAASl+J,GACvBhmB,KAAKgH,UAAYk9K,EAAS/6K,MAAQ+6K,EAAS/6K,MAAQnJ,KAAKmJ,OAGxDnJ,KAAKgH,UAAYhH,KAAKmkL,qBAAqBD,GAE/ClkL,KAAKod,WAAW8E,KAAK,CAAEpG,OAAQ9b,KAAK8b,OAAQ9U,UAAWhH,KAAKgH,c,kCAGhE,SAAqBk9K,GACjB,IAAIv5K,EAAIC,EAAI+pB,EACZ,IAAKuvJ,EACD,MAAO,GAGX,IAAME,EAA8J,QAA9Ix5K,EAA0F,QAApFD,EAAKu5K,aAA2C,EAASA,EAASE,oBAAiC,IAAPz5K,EAAgBA,EAAK3K,KAAKokL,oBAAiC,IAAPx5K,EAAgBA,KAAwC,QAA/B+pB,EAAK30B,KAAK8lC,uBAAoC,IAAPnR,OAAgB,EAASA,EAAGyvJ,cACpQC,EA4DZ,SAA+Bl7K,EAAOi7K,GAClC,IAAIE,EAAY,CAAC,MAAO,QAOxB,MANa,QAATn7K,GACAm7K,EAAUz6K,UAETu6K,GACDE,EAAU1gL,KAAK,IAEZ0gL,EApEsBC,CAAsBL,EAAS/6K,OAASnJ,KAAKmJ,MAAOi7K,GAEzEI,EAAqBH,EAAmBp7K,QAAQjJ,KAAKgH,WAAa,EAItE,OAHIw9K,GAAsBH,EAAmBlgL,SACzCqgL,EAAqB,GAElBH,EAAmBG,K,sBAE9B,WACIxkL,KAAKykL,qB,yBAET,WACIzkL,KAAK+6J,cAAcl3J,S,yBAEvB,WACI7D,KAAK+6J,cAAcj3J,e,CAxFLggL,G,OA2FtBC,EAAQxjL,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKujL,GAAS,KAAyBH,EAA0B,KAC1HG,EAAQtjL,UAAO,KAAyB,CAAEC,KAAMqjL,EAASpjL,UAAW,CAAC,CAAC,GAAI,UAAW,KAAMoC,UAAW,CAAC,EAAG,YAAaZ,OAAQ,CAAE6qB,SAAU,CAAC,kBAAmB,YAAa7jB,MAAO,CAAC,eAAgB,SAAUnC,UAAW,CAAC,mBAAoB,aAAco9K,aAAc,CAAC,sBAAuB,gBAAiBtoK,OAAQ,CAAC,gBAAiB,WAAaqG,QAAS,CAAE/E,WAAY,iBAAmB1E,SAAU,CAAC,WAAYpW,SAAU,CAAC,KAAmC,Q,sBAiJncoiL,E,YACF,iCAKI1kL,KAAKiF,QAAU,IAAI,IAMnBjF,KAAK2kL,gBAAkB,SAAC3+J,GACpB,mCAA6BA,M,OAIzC0+J,EAAkBnkL,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKkkL,IAClFA,EAAkB9/K,WAAQ,aAAmB,CAAEE,QAAS,WAAuC,OAAO,IAAI4/K,GAAwB7/K,MAAO6/K,EAAmB99J,WAAY,S,KAUlKg+J,EAAgC,CAElCriL,QAASmiL,EACTv7J,KAAM,CAAC,CAAC,IAAI,IAAY,IAAI,IAAYu7J,IACxCt7J,WARJ,SAA+Cy7J,GAC3C,OAAOA,GAAc,IAAIH,I,iBA2TvBI,E,sDAENA,EAAcvkL,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKskL,IAC1EA,EAAc5rK,UAAO,KAAwB,CAAExY,KAAMokL,IACrDA,EAAc3rK,UAAO,KAAwB,CAAEgZ,UAAW,CAACyyJ,GAAgCxrK,QAAS,CAAC,CAAC,IAAc,Q,4BCvoB3G,SAAUiJ,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,gGAAuFL,MAC3F,KAEJM,YACI,0EAAiEN,MAC7D,KAER0U,kBAAkB,EAClB1T,SAAU,sDAAsDhB,MAAM,KACtEiB,cAAe,qCAAqCjB,MAAM,KAC1DkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAG,aACHgC,GAAI,aACJC,EAAG,YACHC,GAAI,YACJhN,EAAG,UACHiN,GAAI,WACJG,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAO97F,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/gB,CAAQ,EAAQ,U,sBCIjD,SAAUud,GAAU,aAIzB,IAAI0iK,EAAW,CACXr0I,EAAG,QACHI,EAAG,QACHG,EAAG,QACH+zI,GAAI,QACJC,GAAI,QACJt0I,EAAG,OACHK,EAAG,OACHk0I,GAAI,OACJC,GAAI,OACJv0I,EAAG,cACHC,EAAG,cACHu0I,IAAK,cACLr0I,EAAG,YACHG,EAAG,QACHm0I,GAAI,QACJC,GAAI,QACJC,GAAI,kBACJC,GAAI,mBAGCnjK,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,yGAA6EL,MACjF,KAEJM,YAAa,4DAAkDN,MAAM,KACrEgB,SAAU,0EAAwDhB,MAC9D,KAEJiB,cAAe,iCAA8BjB,MAAM,KACnDkB,YAAa,0BAAuBlB,MAAM,KAC1CovB,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,WAAO,WAEjBA,EAAU,QAAO,SAGhCL,cAAe,gCACfmuF,KAAM,SAAUnhF,GACZ,MAAiB,UAAVA,GAA4B,UAAVA,GAE7B76B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,uBACTC,SAAU,2BACVC,QAAS,cACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACNC,EAAG,mBACHC,GAAI,YACJ/B,EAAG,aACHgC,GAAI,YACJC,EAAG,WACHC,GAAI,UACJhN,EAAG,aACHiN,GAAI,YACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,QACJC,EAAG,eACHC,GAAI,eAERE,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAO97F,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,kBAEpB,IAAI3J,EAAI2J,EAAS,GAGjB,OAAOA,GAAUq/J,EAAShpK,IAAMgpK,EAFvBr/J,EAAS,IAAO3J,IAEsBgpK,EADvCr/J,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB/gB,CAAQ,EAAQ,U,sBCEjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFL,MAC1F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAAqDhB,MAAM,KACrEiB,cAAe,oCAA8BjB,MAAM,KACnDkB,YAAa,6BAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,sBACVC,QAAS,oBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,iBACHC,GAAI,cACJ/B,EAAG,WACHgC,GAAI,cACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,SACHiN,GAAI,UACJG,EAAG,cACHC,GAAI,gBACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB/gB,CAAQ,EAAQ,U,oCCL1D,IAAI2zE,EAAaz4E,MAAQA,KAAKy4E,WAAe,WACzC,IAAI,EAAgB,SAAUzgE,EAAGgE,GAI7B,OAHA,EAAgBQ,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAE5B,OAAO,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnC,EAAcA,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,IAV1C,GAezCmD,EAAU,SAAUn0D,GAEpB,SAASm0D,EAAOb,EAAWC,GACvB,OAAOvzD,EAAOtjD,KAAKl1B,OAASA,KAMhC,OARAy4E,EAAUk0D,EAAQn0D,GAIlBm0D,EAAOj6G,UAAUtuB,SAAW,SAAUiE,EAAO+kF,GAEzC,YADc,IAAVA,IAAoBA,EAAQ,GACzBptF,MAEJ2sI,EATG,CADO,EAAQ,QAWZoY,cACjB1nH,EAAQsvG,OAASA,G,sBClBR,SAAUtqH,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0FAA0FL,MAC9F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,yDAAyDhB,MAC/D,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,wBAAwBlB,MAAM,KAC3CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,eACHgC,GAAI,YACJC,EAAG,aACHC,GAAI,UACJhN,EAAG,aACHiN,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB/gB,CAAQ,EAAQ,U,wBCIjD,SAAUud,GAAU,aAIzB,IAAIojK,EAAa,CACbC,MAAO,CAEH7gK,GAAI,CAAC,6CAAW,6CAAW,8CAC3B/B,EAAG,CAAC,gEAAe,6EACnBgC,GAAI,CAAC,iCAAS,uCAAU,wCACxBC,EAAG,CAAC,oDAAa,iEACjBC,GAAI,CAAC,qBAAO,2BAAQ,4BACpBhN,EAAG,CAAC,oDAAa,iEACjBiN,GAAI,CAAC,qBAAO,2BAAQ,4BACpBG,EAAG,CAAC,gEAAe,6EACnBC,GAAI,CAAC,iCAAS,uCAAU,wCACxBC,EAAG,CAAC,sEAAgB,uEACpBC,GAAI,CAAC,uCAAU,uCAAU,yCAE7BogK,uBAAwB,SAAUjgK,EAAQkgK,GACtC,OACIlgK,EAAS,IAAM,GACfA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAMA,EAAS,KAAO,IAE/BA,EAAS,IAAO,EAAIkgK,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,IAEnBxI,UAAW,SAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC7C,IACI6nH,EADAD,EAAUH,EAAWC,MAAM/oK,GAG/B,OAAmB,IAAfA,EAAIxY,OAEQ,MAARwY,GAAeqgJ,EAAsB,sEAClCh/F,GAAYg/F,EAAgB4oB,EAAQ,GAAKA,EAAQ,IAG5DC,EAAOJ,EAAWE,uBAAuBjgK,EAAQkgK,GAErC,OAARjpK,GAAgBqgJ,GAA0B,yCAAT6oB,EAC1BngK,EAAS,wCAGbA,EAAS,IAAMmgK,KAIjBxjK,EAAOM,aAAa,UAAW,CACxCC,OAAQ,4aAAmFL,MACvF,KAEJM,YACI,+OAA2DN,MAAM,KACrE0U,kBAAkB,EAClB1T,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,8IAAqCjB,MAAM,KAC1DkB,YAAa,6FAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,6CACTC,QAAS,6CACTC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,8DACX,KAAK,EACD,MAAO,wDACX,KAAK,EACD,MAAO,8DACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBxtB,QAAS,uCACTC,SAAU,WAUN,MATmB,CACf,4FACA,oHACA,kGACA,sFACA,8GACA,4FACA,6FAEgBvkB,KAAK8xC,QAE7BttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNC,EAAG,8FACHC,GAAI4gK,EAAWrI,UACft6J,EAAG2iK,EAAWrI,UACdt4J,GAAI2gK,EAAWrI,UACfr4J,EAAG0gK,EAAWrI,UACdp4J,GAAIygK,EAAWrI,UACfplK,EAAGytK,EAAWrI,UACdn4J,GAAIwgK,EAAWrI,UACfh4J,EAAGqgK,EAAWrI,UACd/3J,GAAIogK,EAAWrI,UACf93J,EAAGmgK,EAAWrI,UACd73J,GAAIkgK,EAAWrI,WAEnB53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5HyB/gB,CAAQ,EAAQ,U,0YCO1D,2B,6CAKaghL,I,uBAAAA,I,2BAJH,CAAC,IAAc,IAAY,IAA0B,Q,EAD/D,GCOA,2B,6CAmCaC,I,uBAAAA,I,2BAZH,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,Q,EAhCF,G,YC4DA,2B,6CA+HaC,I,uBAAAA,I,2BAvCH,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,EAGA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAGA,IACA,IACA,KAhFA,EACA,K,EA7CF,I,sBCxES,SAAU3jK,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,khBAAoGL,MACxG,KAEJM,YACI,wMAAiEN,MAC7D,KAER0U,kBAAkB,EAClB1T,SAAU,yPAAiDhB,MAAM,KACjEiB,cAAe,uOAA8CjB,MAAM,KACnEkB,YAAa,sEAAyBlB,MAAM,KAC5CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4CACLC,KAAM,sFAEVutB,cAAe,4HACfmuF,KAAM,SAAUnhF,GACZ,MAAiB,iEAAVA,GAEX7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,+DAEA,gEAGfxtB,SAAU,CACNC,QAAS,qEACTC,QAAS,iFACTC,SAAU,6DACVC,QAAS,mGACTC,SAAU,mGACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,+CACNC,EAAG,2EACHC,GAAI,0CACJ/B,EAAG,6BACHgC,GAAI,8BACJC,EAAG,+CACHC,GAAI,gDACJhN,EAAG,uBACHiN,GAAI,wBACJC,EAAG,+CACHC,GAAI,gDACJC,EAAG,mCACHC,GAAI,oCACJC,EAAG,iBACHC,GAAI,qBA/D0BzgB,CAAQ,EAAQ,U,8gBCDnD,IAAMmhL,EAAb,YACI,WAAY1/J,EAAQ2/J,GAAc,kCAC9B,aACK3/J,OAASA,EACd,EAAK2/J,eAAiBA,EACtB,EAAKC,UAAY,EACjB,EAAKC,aAAc,EALW,EADtC,+DAQI,SAAW7pJ,GACP,OAAOv8B,KAAKqmL,aAAaniL,UAAUq4B,KAT3C,wBAWI,WACI,IAAM+pJ,EAAUtmL,KAAKumL,SAIrB,OAHKD,IAAWA,EAAQjgB,YACpBrmK,KAAKumL,SAAWvmL,KAAKkmL,kBAElBlmL,KAAKumL,WAhBpB,qBAkBI,WACI,IAAIC,EAAaxmL,KAAKymL,YAWtB,OAVKD,IACDxmL,KAAKomL,aAAc,GACnBI,EAAaxmL,KAAKymL,YAAc,IAAI,KACzB5jL,IAAI7C,KAAKumB,OACfriB,UAAU,IAAIwiL,EAAsB1mL,KAAKqmL,aAAcrmL,QACxDwmL,EAAWh/J,SACXxnB,KAAKymL,YAAc,KACnBD,EAAa,IAAat/J,QAG3Bs/J,IA9Bf,sBAgCI,WACI,OAAO,cAAsBxmL,UAjCrC,CAA2C,KAoC9B2mL,EAAmC,WAC5C,IAAMC,EAAmBX,EAAsBvzJ,UAC/C,MAAO,CACHk5I,SAAU,CAAErqK,MAAO,MACnB4kL,UAAW,CAAE5kL,MAAO,EAAGo8B,UAAU,GACjC4oJ,SAAU,CAAEhlL,MAAO,KAAMo8B,UAAU,GACnC8oJ,YAAa,CAAEllL,MAAO,KAAMo8B,UAAU,GACtCkpJ,WAAY,CAAEtlL,MAAOqlL,EAAiBC,YACtCT,YAAa,CAAE7kL,MAAOqlL,EAAiBR,YAAazoJ,UAAU,GAC9D0oJ,WAAY,CAAE9kL,MAAOqlL,EAAiBP,YACtCvwK,QAAS,CAAEvU,MAAOqlL,EAAiB9wK,SACnC2wH,SAAU,CAAEllI,MAAOqlL,EAAiBngD,WAXI,GAc1CigD,E,YACF,WAAYjqJ,EAAaqqJ,GAAW,kCAChC,YAAMrqJ,KACDqqJ,YAAcA,EAFa,E,2DAIpC,SAAOnqJ,GACH38B,KAAKysI,eACL,sBAAa9vG,M,uBAEjB,WACI38B,KAAK8mL,YAAYV,aAAc,EAC/BpmL,KAAKysI,eACL,8B,0BAEJ,WACI,IAAMq6C,EAAc9mL,KAAK8mL,YACzB,GAAIA,EAAa,CACb9mL,KAAK8mL,YAAc,KACnB,IAAMN,EAAaM,EAAYL,YAC/BK,EAAYX,UAAY,EACxBW,EAAYP,SAAW,KACvBO,EAAYL,YAAc,KACtBD,GACAA,EAAW5wK,mB,CAvBS,M,yKC9C9BmxK,E,6FACF,SAAgB17K,EAASwc,GACjBxc,EAAQ1I,UACR0I,EAAQ1I,UAAUE,IAAIglB,GAEtBxc,EAAQwc,WAAa,IAAMA,I,gCAEnC,SAA0Bxc,EAASwc,GAC/B,GAAIxc,EAAQ1I,UAER,IADA,IAAImW,EAAS+O,EAAUtF,MAAM,KACpB1a,EAAI,EAAGA,EAAIiR,EAAO3U,OAAQ0D,IAC/BwD,EAAQ1I,UAAUE,IAAIiW,EAAOjR,SAKjC,IADA,IAAI,EAASggB,EAAUtF,MAAM,KACpB,EAAI,EAAG,EAAI,EAAOpe,OAAQ,IAC/BkH,EAAQwc,WAAa,IAAM,EAAO,K,yBAI9C,SAAmBxc,EAASwc,GACpBxc,EAAQ1I,UACR0I,EAAQ1I,UAAU6I,OAAOqc,GAEzBxc,EAAQwc,UAAYxc,EAAQwc,UAAUrmB,QAAQ,IAAI0/H,OAAO,UAAYr5G,EAAUtF,MAAM,KAAKytB,KAAK,KAAO,UAAW,MAAO,O,sBAEhI,SAAgB3kC,EAASwc,GACrB,OAAIxc,EAAQ1I,UACD0I,EAAQ1I,UAAUiqB,SAAS/E,GAE3B,IAAIq5G,OAAO,QAAUr5G,EAAY,QAAS,MAAM7E,KAAK3X,EAAQwc,a,sBAE5E,SAAgBxc,GACZ,OAAOd,MAAMmoB,UAAUvd,OAAO+f,KAAK7pB,EAAQqV,WAAW5Y,SAAU,SAAUkyI,GACtE,OAAOA,IAAU3uI,M,kBAGzB,SAAYA,EAASipC,GACjB,OAAO/pC,MAAMjG,KAAK+G,EAAQ0gG,iBAAiBz3D,M,wBAE/C,SAAkBjpC,EAASipC,GACvB,OAAIjpC,EACOA,EAAQD,cAAckpC,GAE1B,O,mBAEX,SAAajpC,GAGT,IAFA,IAAIvD,EAAWuD,EAAQqV,WAAWsmK,WAC9BhiI,EAAM,EACDn9C,EAAI,EAAGA,EAAIC,EAAS3D,OAAQ0D,IAAK,CACtC,GAAIC,EAASD,IAAMwD,EACf,OAAO25C,EACiB,GAAxBl9C,EAASD,GAAGF,UACZq9C,IAER,OAAQ,I,8BAEZ,SAAwB35C,EAAS47K,GAG7B,IAFA,IAAIn/K,EAAWuD,EAAQqV,WAAarV,EAAQqV,WAAWsmK,WAAa,GAChEhiI,EAAM,EACDn9C,EAAI,EAAGA,EAAIC,EAAS3D,OAAQ0D,IAAK,CACtC,GAAIC,EAASD,IAAMwD,EACf,OAAO25C,EACPl9C,EAASD,GAAGq/K,YAAcp/K,EAASD,GAAGq/K,WAAWD,IAA0C,GAAxBn/K,EAASD,GAAGF,UAC/Eq9C,IAER,OAAQ,I,8BAEZ,SAAwB35C,EAASmhB,GAC7B,IAIIzgB,EAAKE,EAJLk7K,EAAoB97K,EAAQokG,aAAe,CAAE/lG,MAAO2B,EAAQynE,YAAatoE,OAAQa,EAAQomB,cAAiBzxB,KAAKonL,2BAA2B/7K,GACxIg8K,EAAe76J,EAAOiF,aACtB61J,EAAe96J,EAAO/hB,wBACtB88K,EAAWvnL,KAAKwnL,cAEjBF,EAAav7K,IAAMs7K,EAAeF,EAAkB38K,OAAU+8K,EAAS/8K,OAEpE88K,EAAav7K,KADjBA,GAAO,EAAKo7K,EAAkB38K,QACD,IACzBuB,GAAO,EAAIu7K,EAAav7K,KAI5BA,EAAMs7K,EAINp7K,EAFAk7K,EAAkBz9K,MAAQ69K,EAAS79K,OAEP,EAArB49K,EAAar7K,KAEdq7K,EAAar7K,KAAOk7K,EAAkBz9K,MAAS69K,EAAS79K,OAEW,GAAjE49K,EAAar7K,KAAOk7K,EAAkBz9K,MAAQ69K,EAAS79K,OAIxD,EAEX2B,EAAQE,MAAMQ,IAAMA,EAAM,KAC1BV,EAAQE,MAAMU,KAAOA,EAAO,O,8BAEhC,SAAwBZ,EAASmhB,GAC7B,IASIzgB,EAAKE,EATLk7K,EAAoB97K,EAAQokG,aAAe,CAAE/lG,MAAO2B,EAAQynE,YAAatoE,OAAQa,EAAQomB,cAAiBzxB,KAAKonL,2BAA2B/7K,GAC1Io8K,EAAqBN,EAAkB38K,OACvCk9K,EAAoBP,EAAkBz9K,MACtCi+K,EAAoBn7J,EAAOiF,aAC3Bm2J,EAAmBp7J,EAAOsmD,YAC1Bw0G,EAAe96J,EAAO/hB,wBACtBo9K,EAAkB7nL,KAAK8nL,qBACvBC,EAAmB/nL,KAAKgoL,sBACxBT,EAAWvnL,KAAKwnL,cAEhBF,EAAav7K,IAAM47K,EAAoBF,EAAqBF,EAAS/8K,QACrEuB,EAAMu7K,EAAav7K,IAAM87K,EAAkBJ,GACjC,IACN17K,EAAM87K,GAIV97K,EAAM47K,EAAoBL,EAAav7K,IAAM87K,EAG7C57K,EADAq7K,EAAar7K,KAAOy7K,EAAoBH,EAAS79K,MAC1C6U,KAAKukC,IAAI,EAAGwkI,EAAar7K,KAAO87K,EAAmBH,EAAmBF,GAEtEJ,EAAar7K,KAAO87K,EAC/B18K,EAAQE,MAAMQ,IAAMA,EAAM,KAC1BV,EAAQE,MAAMU,KAAOA,EAAO,O,yCAEhC,SAAmCZ,GAC/BA,EAAQE,MAAMw2J,WAAa,SAC3B12J,EAAQE,MAAMwH,QAAU,QACxB,IAAIk1K,EAAgB58K,EAAQomB,aAG5B,OAFApmB,EAAQE,MAAMwH,QAAU,OACxB1H,EAAQE,MAAMw2J,WAAa,UACpBkmB,I,wCAEX,SAAkC58K,GAC9BA,EAAQE,MAAMw2J,WAAa,SAC3B12J,EAAQE,MAAMwH,QAAU,QACxB,IAAIm1K,EAAe78K,EAAQynE,YAG3B,OAFAznE,EAAQE,MAAMwH,QAAU,OACxB1H,EAAQE,MAAMw2J,WAAa,UACpBmmB,I,wCAEX,SAAkC78K,GAC9B,IAAI88K,EAAa,GAOjB,OANA98K,EAAQE,MAAMw2J,WAAa,SAC3B12J,EAAQE,MAAMwH,QAAU,QACxBo1K,EAAWz+K,MAAQ2B,EAAQynE,YAC3Bq1G,EAAW39K,OAASa,EAAQomB,aAC5BpmB,EAAQE,MAAMwH,QAAU,OACxB1H,EAAQE,MAAMw2J,WAAa,UACpBomB,I,0BAEX,SAAoB9vK,EAAW/G,GAC3B,IAAI82K,EAAiB50G,iBAAiBn7D,GAAWgqI,iBAAiB,kBAC9DxuE,EAAYu0G,EAAiBv6J,WAAWu6J,GAAkB,EAC1DC,EAAkB70G,iBAAiBn7D,GAAWgqI,iBAAiB,cAC/DvtE,EAAauzG,EAAkBx6J,WAAWw6J,GAAmB,EAC7DC,EAAgBjwK,EAAU5N,wBAE1BI,EADWyG,EAAK7G,wBACGsB,IAAM4+B,SAAS7H,KAAK1a,WAAckgK,EAAcv8K,IAAM4+B,SAAS7H,KAAK1a,WAAayrD,EAAYiB,EAChHkE,EAAS3gE,EAAU+P,UACnB6/J,EAAgB5vK,EAAUw6D,aAC1B01G,EAAavoL,KAAKwoL,eAAel3K,GACjCzG,EAAS,EACTwN,EAAU+P,UAAY4wD,EAASnuE,EAEzBA,EAAS09K,EAAcN,IAC7B5vK,EAAU+P,UAAY4wD,EAASnuE,EAASo9K,EAAgBM,K,oBAGhE,SAAcl9K,EAASmyC,GACnBnyC,EAAQE,MAAMm2B,QAAU,EACxB,IAAIvqB,GAAQ,IAAIujC,KACZhZ,EAAU,EACV,EAAO,WACPA,GAAWr2B,EAAQE,MAAMm2B,QAAQlgC,QAAQ,IAAK,OAAQ,IAAIk5C,MAAOwmE,UAAY/pG,GAAQqmC,EACrFnyC,EAAQE,MAAMm2B,QAAUA,EACxBvqB,GAAQ,IAAIujC,MACPhZ,EAAU,IACVvW,OAAOs9J,uBAAyBA,sBAAsB,IAAU7jJ,WAAW,EAAM,MAG1F,M,qBAEJ,SAAev5B,EAASg0C,GACpB,IAAI3d,EAAU,EAAiCgnJ,EAAnB,GAAerpI,EACvCspI,EAASz8C,YAAY,YACrBxqG,GAAoBgnJ,IACL,IACXhnJ,EAAU,EACV0qG,cAAcu8C,IAElBt9K,EAAQE,MAAMm2B,QAAUA,GAPA,M,gCAUhC,WACI,IAAIknJ,EAAMj+I,SAAS6J,gBACnB,OAAQrpB,OAAO+pD,aAAe0zG,EAAIxgK,YAAcwgK,EAAI58D,WAAa,K,iCAErE,WACI,IAAI48D,EAAMj+I,SAAS6J,gBACnB,OAAQrpB,OAAO8pD,aAAe2zG,EAAIlwG,aAAekwG,EAAI38D,YAAc,K,qBAEvE,SAAe5gH,EAASipC,GACpB,IAAIi1F,EAAI3qB,QAAQlsF,UAIhB,OAHQ62G,EAAC,SAAeA,EAAE1qB,uBAAyB0qB,EAAC,oBAA0BA,EAAC,mBAAyB,SAAU3kH,GAC9G,OAAgE,IAAzD,GAAG3b,QAAQisB,KAAKyV,SAASohE,iBAAiBnnF,GAAI5kB,QAEhDk1B,KAAK7pB,EAASipC,K,2BAE3B,SAAqB7B,EAAIk7G,GACrB,IAAIjkJ,EAAQ+oC,EAAGqgC,YACf,GAAI66E,EAAQ,CACR,IAAIpiJ,EAAQioE,iBAAiB/gC,GAC7B/oC,GAASmkB,WAAWtiB,EAAMg7F,YAAc14E,WAAWtiB,EAAMi7F,aAE7D,OAAO98F,I,kCAEX,SAA4B+oC,GACxB,IAAIlnC,EAAQioE,iBAAiB/gC,GAC7B,OAAO5kB,WAAWtiB,EAAMqpE,aAAe/mD,WAAWtiB,EAAMspE,gB,iCAE5D,SAA2BpiC,GACvB,IAAIlnC,EAAQioE,iBAAiB/gC,GAC7B,OAAO5kB,WAAWtiB,EAAMg7F,YAAc14E,WAAWtiB,EAAMi7F,e,wBAE3D,SAAkB/zD,GACd,IAAI/oC,EAAQ+oC,EAAGqgC,YACXvnE,EAAQioE,iBAAiB/gC,GAE7B,OADA/oC,GAASmkB,WAAWtiB,EAAMqpE,aAAe/mD,WAAWtiB,EAAMspE,iB,mBAG9D,SAAapiC,GACT,IAAI/oC,EAAQ+oC,EAAGqgC,YACXvnE,EAAQioE,iBAAiB/gC,GAE7B,OADA/oC,GAASmkB,WAAWtiB,EAAMqpE,aAAe/mD,WAAWtiB,EAAMspE,iB,4BAG9D,SAAsBpiC,GAClB,IAAIjoC,EAASioC,EAAGhhB,aACZlmB,EAAQioE,iBAAiB/gC,GAE7B,OADAjoC,GAAUqjB,WAAWtiB,EAAMupE,YAAcjnD,WAAWtiB,EAAMwpE,kB,4BAG9D,SAAsBtiC,EAAIk7G,GACtB,IAAInjJ,EAASioC,EAAGhhB,aAChB,GAAIk8H,EAAQ,CACR,IAAIpiJ,EAAQioE,iBAAiB/gC,GAC7BjoC,GAAUqjB,WAAWtiB,EAAMshH,WAAah/F,WAAWtiB,EAAMk7F,cAE7D,OAAOj8F,I,uBAEX,SAAiBioC,GACb,IAAIjoC,EAASioC,EAAGhhB,aACZlmB,EAAQioE,iBAAiB/gC,GAE7B,OADAjoC,GAAUqjB,WAAWtiB,EAAMupE,YAAcjnD,WAAWtiB,EAAMwpE,eAAiBlnD,WAAWtiB,EAAMuoE,gBAAkBjmD,WAAWtiB,EAAMyoE,sB,sBAGnI,SAAgBvhC,GACZ,IAAI/oC,EAAQ+oC,EAAGqgC,YACXvnE,EAAQioE,iBAAiB/gC,GAE7B,OADA/oC,GAASmkB,WAAWtiB,EAAMqpE,aAAe/mD,WAAWtiB,EAAMspE,cAAgBhnD,WAAWtiB,EAAMmoE,iBAAmB7lD,WAAWtiB,EAAMqoE,qB,yBAGnI,WACI,IAAIi1G,EAAM19J,OAAQnT,EAAI2yB,SAAU1W,EAAIjc,EAAEw8B,gBAAiBu2F,EAAI/yH,EAAE8wK,qBAAqB,QAAQ,GAC1F,MAAO,CAAEp/K,MADyFm/K,EAAI37D,YAAcj5F,EAAE8+C,aAAeg4D,EAAEh4D,YACpHvoE,OADqIq+K,EAAI77D,aAAe/4F,EAAE4+C,cAAgBk4D,EAAEl4D,gB,uBAGnM,SAAiBpgC,GACb,IAAIs7B,EAAOt7B,EAAGhoC,wBACd,MAAO,CACHsB,IAAKgiE,EAAKhiE,IAAM4+B,SAAS7H,KAAK1a,UAC9Bnc,KAAM8hE,EAAK9hE,KAAO0+B,SAAS7H,KAAK41C,c,gCAGxC,SAA0BrtE,EAAS09K,GAC/B,IAAIroK,EAAarV,EAAQqV,WACzB,IAAKA,EACD,KAAM,wBACV,OAAOA,EAAWE,aAAamoK,EAAoB19K,K,0BAEvD,WACI,OAAOy/G,UAAUC,Y,kBAErB,WACI,IAAIi+D,EAAK79J,OAAO2/F,UAAUC,UAE1B,OADWi+D,EAAG//K,QAAQ,SACX,IAIG+/K,EAAG//K,QAAQ,YACX,GAED+/K,EAAG//K,QAAQ,QACb,GAEA+/K,EAAG//K,QAAQ,SACX,K,mBAOf,WACI,MAAO,mBAAmB+Z,KAAK8nG,UAAUC,aAAe5/F,OAAM,W,uBAElE,WACI,MAAO,aAAanI,KAAK8nG,UAAUC,a,yBAEvC,SAAmB1/G,EAASmhB,GACxB,GAAIxsB,KAAKipL,UAAUz8J,GACfA,EAAO1U,YAAYzM,OAClB,KAAImhB,EAAOimB,KAAMjmB,EAAOimB,GAAG7vC,cAG5B,KAAM,iBAAmB4pB,EAAS,OAASnhB,EAF3CmhB,EAAOimB,GAAG7vC,cAAckV,YAAYzM,M,yBAI5C,SAAmBA,EAASmhB,GACxB,GAAIxsB,KAAKipL,UAAUz8J,GACfA,EAAO/K,YAAYpW,OAClB,KAAImhB,EAAOimB,KAAMjmB,EAAOimB,GAAG7vC,cAG5B,KAAM,iBAAmByI,EAAU,SAAWmhB,EAF9CA,EAAOimB,GAAG7vC,cAAc6e,YAAYpW,M,uBAI5C,SAAiB0S,GACb,MAA+B,iBAAhBs3D,YAA2Bt3D,aAAes3D,YACrDt3D,GAAsB,iBAARA,GAA4B,OAARA,GAAiC,IAAjBA,EAAIpW,UAA0C,iBAAjBoW,EAAIjP,W,qCAE3F,SAA+B2jC,GAC3B,GAAIA,EAAI,CACJ,IAAIlnC,EAAQioE,iBAAiB/gC,GAC7B,OAAQA,EAAGqgC,YAAcrgC,EAAGsgC,YAAcllD,WAAWtiB,EAAMmoE,iBAAmB7lD,WAAWtiB,EAAMqoE,kBAG/F,GAAsC,OAAlC5zE,KAAKkpL,yBACL,OAAOlpL,KAAKkpL,yBAChB,IAAIC,EAAYx+I,SAAS9yB,cAAc,OACvCsxK,EAAUthK,UAAY,uBACtB8iB,SAAS7H,KAAKhrB,YAAYqxK,GAC1B,IAAIl9E,EAAiBk9E,EAAUr2G,YAAcq2G,EAAUp2G,YAGvD,OAFApoC,SAAS7H,KAAKrhB,YAAY0nK,GAC1BnpL,KAAKkpL,yBAA2Bj9E,EACzBA,I,sCAGf,WACI,GAAuC,OAAnCjsG,KAAKopL,0BACL,OAAOppL,KAAKopL,0BAChB,IAAID,EAAYx+I,SAAS9yB,cAAc,OACvCsxK,EAAUthK,UAAY,uBACtB8iB,SAAS7H,KAAKhrB,YAAYqxK,GAC1B,IAAIE,EAAkBF,EAAU13J,aAAe03J,EAAUt2G,aAGzD,OAFAloC,SAAS7H,KAAKrhB,YAAY0nK,GAC1BnpL,KAAKkpL,yBAA2BG,EACzBA,I,iCAEX,SAA2Bh+K,EAASi+K,EAAYzpL,GAC5CwL,EAAQi+K,GAAY3xI,MAAMtsC,EAASxL,K,4BAEvC,WACI,GAAIsrB,OAAOo+J,aACHp+J,OAAOo+J,eAAe/V,MACtBroJ,OAAOo+J,eAAe/V,QAEjBroJ,OAAOo+J,eAAeC,iBAAmBr+J,OAAOo+J,eAAeE,WAAa,GAAKt+J,OAAOo+J,eAAeG,WAAW,GAAGC,iBAAiBxlL,OAAS,GACpJgnB,OAAOo+J,eAAeC,uBAGzB,GAAI7+I,SAAQ,WAAiBA,SAAQ,UAAc6oI,MACpD,IACI7oI,SAAQ,UAAc6oI,QAE1B,MAAOx+I,O,wBAKf,WACI,IAAKh1B,KAAK4pL,QAAS,CACf,IAAIC,EAAU7pL,KAAK8pL,mBACnB9pL,KAAK4pL,QAAU,GACXC,EAAQD,UACR5pL,KAAK4pL,QAAQC,EAAQD,UAAW,EAChC5pL,KAAK4pL,QAAL,QAA0BC,EAAQE,SAElC/pL,KAAK4pL,QAAL,OACA5pL,KAAK4pL,QAAL,QAAyB,EAEpB5pL,KAAK4pL,QAAL,SACL5pL,KAAK4pL,QAAL,QAAyB,GAGjC,OAAO5pL,KAAK4pL,U,8BAEhB,WACI,IAAIZ,EAAKl+D,UAAUC,UAAUnuG,cACzB00B,EAAQ,wBAAwBoN,KAAKsqI,IACrC,wBAAwBtqI,KAAKsqI,IAC7B,qCAAqCtqI,KAAKsqI,IAC1C,kBAAkBtqI,KAAKsqI,IACvBA,EAAG//K,QAAQ,cAAgB,GAAK,gCAAgCy1C,KAAKsqI,IACrE,GACJ,MAAO,CACHY,QAASt4I,EAAM,IAAM,GACrBy4I,QAASz4I,EAAM,IAAM,O,uBAG7B,SAAiB/vC,GACb,OAAIoN,OAAO4vG,UACA5vG,OAAO4vG,UAAUh9G,GAGA,iBAAVA,GAAsBi9G,SAASj9G,IAAUgd,KAAKs7B,MAAMt4C,KAAWA,I,sBAGrF,SAAgB8J,GACZ,OAAgC,OAAzBA,EAAQokG,e,kCAEnB,SAA4BpkG,GACxB,IAD+B,EAC3B2+K,EAAoBjD,EAAW1hL,KAAKgG,EAAhB,2uBAKpB4+K,EAA2B,GANA,cAOFD,GAPE,IAO/B,2BAAgD,KAAvCE,EAAuC,QACM,QAA9C12G,iBAAiB02G,GAAkBn3K,SAAsE,UAAjDygE,iBAAiB02G,GAAkBnoB,YAC3FkoB,EAAyBrmL,KAAKsmL,IATP,8BAW/B,OAAOD,M,UAGflD,EAAWoD,OAAS,IACpBpD,EAAWmC,yBAA2B,KACtCnC,EAAWqC,0BAA4B,K,0CC7XnCgB,EAA4C,SAAUvgD,EAAYr9G,EAAQ7P,EAAK8gB,GAC/E,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,G,aAgBhE,IAAIugD,EAAa,8BACb,WAAY/pL,GAAQ,oBAChBN,KAAKM,SAAWA,GAFP,sBAIb,WACI,OAAON,KAAKmB,SALH,G,OAQjBkpL,EAAc9pL,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK6pL,GAAe,KAAyB,OAClHA,EAAc5pL,UAAO,KAAyB,CAAEC,KAAM2pL,EAAe1pL,UAAW,CAAC,CAAC,GAAI,YAAa,KAAMwB,OAAQ,CAAEzB,KAAM,OAAQS,KAAM,CAAC,YAAa,WAIrJipL,EAAa,CACT,eACDC,EAAc33J,UAAW,YAAQ,GACpC03J,EAAa,CACT,YAAM,cACPC,EAAc33J,UAAW,YAAQ,G,kBACpC,IAAI43J,EAAY,+C,OAEhBA,EAAa/pL,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK8pL,IACxEA,EAAapxK,UAAO,KAAwB,CAAExY,KAAM4pL,IACpDA,EAAanxK,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,KC5GnD,E,0FACF,SAAc29B,EAAMwzI,EAAMrzI,GACtB,OAAIA,EACQl3C,KAAKwqL,iBAAiBzzI,EAAMG,KAAWl3C,KAAKwqL,iBAAiBD,EAAMrzI,GAEpEl3C,KAAKyqL,cAAc1zI,EAAMwzI,K,2BAExC,SAAqBxzI,EAAMwzI,GACvB,GAAIxzI,IAASwzI,EACT,OAAO,EACX,GAAIxzI,GAAQwzI,GAAuB,iBAARxzI,GAAmC,iBAARwzI,EAAkB,CACpE,IAA4D1iL,EAAG1D,EAAQwY,EAAnE+tK,EAAOngL,MAAMyL,QAAQ+gC,GAAO4zI,EAAOpgL,MAAMyL,QAAQu0K,GACrD,GAAIG,GAAQC,EAAM,CAEd,IADAxmL,EAAS4yC,EAAK5yC,SACAomL,EAAKpmL,OACf,OAAO,EACX,IAAK0D,EAAI1D,EAAgB,GAAR0D,KACb,IAAK7H,KAAKyqL,cAAc1zI,EAAKlvC,GAAI0iL,EAAK1iL,IAClC,OAAO,EACf,OAAO,EAEX,GAAI6iL,GAAQC,EACR,OAAO,EACX,IAAIC,EAAQ7zI,aAAgB2D,KAAMmwI,EAAQN,aAAgB7vI,KAC1D,GAAIkwI,GAASC,EACT,OAAO,EACX,GAAID,GAASC,EACT,OAAO9zI,EAAKmqE,WAAaqpE,EAAKrpE,UAClC,IAAI4pE,EAAU/zI,aAAgBmqF,OAAQ6pD,EAAUR,aAAgBrpD,OAChE,GAAI4pD,GAAWC,EACX,OAAO,EACX,GAAID,GAAWC,EACX,OAAOh0I,EAAK9kB,YAAcs4J,EAAKt4J,WACnC,IAAIxV,EAAOD,OAAOC,KAAKs6B,GAEvB,IADA5yC,EAASsY,EAAKtY,UACCqY,OAAOC,KAAK8tK,GAAMpmL,OAC7B,OAAO,EACX,IAAK0D,EAAI1D,EAAgB,GAAR0D,KACb,IAAK2U,OAAOkW,UAAUgb,eAAexY,KAAKq1J,EAAM9tK,EAAK5U,IACjD,OAAO,EACf,IAAKA,EAAI1D,EAAgB,GAAR0D,KAEb,IAAK7H,KAAKyqL,cAAc1zI,EADxBp6B,EAAMF,EAAK5U,IACwB0iL,EAAK5tK,IACpC,OAAO,EAEf,OAAO,EAEX,OAAOo6B,GAASA,GAAQwzI,GAASA,I,8BAErC,SAAwBz6K,EAAMonC,GAC1B,GAAIpnC,GAAQonC,EAAO,CACf,GAAIl3C,KAAKisK,WAAW/0H,GAChB,OAAOA,EAAMpnC,GAEZ,IAA2B,GAAvBonC,EAAMjuC,QAAQ,KACnB,OAAO6G,EAAKonC,GAKZ,IAFA,IAAI8zI,EAAS9zI,EAAM30B,MAAM,KACrBhhB,EAAQuO,EACHjI,EAAI,EAAGyvC,EAAM0zI,EAAO7mL,OAAQ0D,EAAIyvC,IAAOzvC,EAAG,CAC/C,GAAa,MAATtG,EACA,OAAO,KAEXA,EAAQA,EAAMypL,EAAOnjL,IAEzB,OAAOtG,EAIX,OAAO,O,wBAGf,SAAkBwc,GACd,SAAUA,GAAOA,EAAImyB,aAAenyB,EAAImX,MAAQnX,EAAI45B,S,0BAExD,SAAoBp2C,EAAO+C,EAAMktJ,GAEzBjwJ,GAAS+C,IAASktJ,IACdA,GAAMjwJ,EAAM4C,SACZqtJ,GAAMjwJ,EAAM4C,OACZG,GAAQ/C,EAAM4C,QAElB5C,EAAMgnC,OAAOipH,EAAI,EAAGjwJ,EAAMgnC,OAAOjkC,EAAM,GAAG,O,iCAGlD,SAA2BgqC,EAAK4I,GAC5B,IAAI+zI,EACJ,GAAI38I,GAAOA,EAAInqC,OAAQ,CACnB8mL,EAAc,GADK,oBAEF38I,GAFE,IAEnB,2BAAsB,KAAbh9B,EAAa,QAClB25K,EAAYrnL,KAAK,CAAEyxB,MAAOr1B,KAAKwqL,iBAAiBl5K,EAAM4lC,GAAQ31C,MAAO+P,KAHtD,+BAMvB,OAAO25K,I,oCAEX,SAA8B35K,EAAM3H,EAAOgmC,EAAKu7I,GAC5C,GAAIv7I,EAAIxrC,OAAS,EAAG,CAEhB,IADA,IAAIgnL,GAAW,EACNtjL,EAAI,EAAGA,EAAI8nC,EAAIxrC,OAAQ0D,IAE5B,GADuB7H,KAAKorL,gBAAgBz7I,EAAI9nC,GAAIqjL,GAC7BvhL,EAAO,CAC1BgmC,EAAIpH,OAAO1gC,EAAG,EAAGyJ,GACjB65K,GAAW,EACX,MAGHA,GACDx7I,EAAI/rC,KAAK0N,QAIbq+B,EAAI/rC,KAAK0N,K,6BAGjB,SAAuBA,EAAM66D,GACzB,IAAIxiE,GAAS,EACb,GAAIwiE,EACA,IAAK,IAAItkE,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAC7B,GAAIskE,EAAKtkE,IAAMyJ,EAAM,CACjB3H,EAAQ9B,EACR,MAIZ,OAAO8B,I,2BAEX,SAAqB+kC,GAyBjB,OAxBIA,GAAOA,EAAIm/E,OAAO,iBAAmB,IACrCn/E,EAAMA,EACDltC,QAAQ,eAAgB,KACxBA,QAAQ,UAAW,MACnBA,QAAQ,UAAW,KACnBA,QAAQ,eAAgB,KACxBA,QAAQ,eAAgB,KACxBA,QAAQ,UAAW,KACnBA,QAAQ,UAAW,KACnBA,QAAQ,mBAAoB,KAC5BA,QAAQ,eAAgB,KACxBA,QAAQ,UAAW,KACnBA,QAAQ,UAAW,KACnBA,QAAQ,eAAgB,KACxBA,QAAQ,UAAW,MACnBA,QAAQ,UAAW,KACnBA,QAAQ,eAAgB,KACxBA,QAAQ,eAAgB,KACxBA,QAAQ,UAAW,KACnBA,QAAQ,mBAAoB,KAC5BA,QAAQ,eAAgB,KACxBA,QAAQ,UAAW,KACnBA,QAAQ,cAAe,MAEzBktC,M,GAIT,E,2FACF,SAAcntC,EAAOypL,EAAQK,EAAaC,EAAiBC,GACvD,IAAIC,EAAgB,GAChBC,EAAa,EAAYC,cAAcL,GAAanlI,kBAAkBqlI,GAC1E,GAAIhqL,EAAO,qBACUA,GADV,IACP,2BAAwB,OAAf+P,EAAe,sBACF05K,GADE,IACpB,2BAA0B,KAClBW,EAAa,EAAYD,cAAcr8I,OAAO,EAAYm7I,iBAAiBl5K,EADzD,WACwE40C,kBAAkBqlI,GAChH,GAAIK,EAAYN,GAAiBK,EAAYF,EAAYF,GAAe,CACpEC,EAAc5nL,KAAK0N,GACnB,QALY,gCADjB,+BAWX,OAAOk6K,I,wBAEX,SAAkBjqL,EAAO4T,EAAQo2K,GAC7B,GAAIp2K,SAA6D,KAAlBA,EAAO2H,OAClD,OAAO,EAEX,GAAIvb,QACA,OAAO,EAEX,IAAI8pL,EAAc,EAAYK,cAAcv2K,EAAO8c,YAAYi0B,kBAAkBqlI,GAEjF,OADkB,EAAYG,cAAcnqL,EAAM0wB,YAAYi0B,kBAAkBqlI,GAC7D/hL,MAAM,EAAG6hL,EAAYlnL,UAAYknL,I,sBAExD,SAAgB9pL,EAAO4T,EAAQo2K,GAC3B,GAAIp2K,SAA8D,iBAAXA,GAAyC,KAAlBA,EAAO2H,OACjF,OAAO,EAEX,GAAIvb,QACA,OAAO,EAEX,IAAI8pL,EAAc,EAAYK,cAAcv2K,EAAO8c,YAAYi0B,kBAAkBqlI,GAEjF,OAA6C,IAD3B,EAAYG,cAAcnqL,EAAM0wB,YAAYi0B,kBAAkBqlI,GAC7DtiL,QAAQoiL,K,sBAE/B,SAAgB9pL,EAAO4T,EAAQo2K,GAC3B,GAAIp2K,SAA6D,KAAlBA,EAAO2H,OAClD,OAAO,EAEX,GAAIvb,QACA,OAAO,EAEX,IAAI8pL,EAAc,EAAYK,cAAcv2K,EAAO8c,YAAYi0B,kBAAkBqlI,GAC7EM,EAAc,EAAYH,cAAcnqL,EAAM0wB,YAAYi0B,kBAAkBqlI,GAChF,OAAsF,IAA/EM,EAAY5iL,QAAQoiL,EAAaQ,EAAY1nL,OAASknL,EAAYlnL,U,oBAE7E,SAAc5C,EAAO4T,EAAQo2K,GACzB,OAAIp2K,SAA8D,iBAAXA,GAAyC,KAAlBA,EAAO2H,QAGjFvb,UAGAA,EAAM2/G,SAAW/rG,EAAO+rG,QACjB3/G,EAAM2/G,YAAc/rG,EAAO+rG,UAE3B,EAAYwqE,cAAcnqL,EAAM0wB,YAAYi0B,kBAAkBqlI,IAAiB,EAAYG,cAAcv2K,EAAO8c,YAAYi0B,kBAAkBqlI,M,uBAE7J,SAAiBhqL,EAAO4T,EAAQo2K,GAC5B,QAAIp2K,SAA8D,iBAAXA,GAAyC,KAAlBA,EAAO2H,QAGjFvb,UAGAA,EAAM2/G,SAAW/rG,EAAO+rG,QACjB3/G,EAAM2/G,YAAc/rG,EAAO+rG,UAE3B,EAAYwqE,cAAcnqL,EAAM0wB,YAAYi0B,kBAAkBqlI,IAAiB,EAAYG,cAAcv2K,EAAO8c,YAAYi0B,kBAAkBqlI,O,gBAE7J,SAAUhqL,EAAO4T,EAAQo2K,GACrB,GAAIp2K,SAA6D,IAAlBA,EAAOhR,OAClD,OAAO,EAEX,GAAI5C,QACA,OAAO,EAEX,IAAK,IAAIsG,EAAI,EAAGA,EAAIsN,EAAOhR,OAAQ0D,IAC/B,GAAI,EAAYm6G,OAAOzgH,EAAO4T,EAAOtN,IACjC,OAAO,EAGf,OAAO,I,gBAEX,SAAUtG,EAAO4T,EAAQo2K,GACrB,OAAIp2K,SAGA5T,UAGAA,EAAM2/G,SAAW/rG,EAAO+rG,QACjB3/G,EAAM2/G,UAAY/rG,EAAO+rG,UAEzB3/G,EAAQ4T,K,iBAEvB,SAAW5T,EAAO4T,EAAQo2K,GACtB,OAAIp2K,SAGA5T,UAGAA,EAAM2/G,SAAW/rG,EAAO+rG,QACjB3/G,EAAM2/G,WAAa/rG,EAAO+rG,UAE1B3/G,GAAS4T,K,gBAExB,SAAU5T,EAAO4T,EAAQo2K,GACrB,OAAIp2K,SAGA5T,UAGAA,EAAM2/G,SAAW/rG,EAAO+rG,QACjB3/G,EAAM2/G,UAAY/rG,EAAO+rG,UAEzB3/G,EAAQ4T,K,iBAEvB,SAAW5T,EAAO4T,EAAQo2K,GACtB,OAAIp2K,SAGA5T,UAGAA,EAAM2/G,SAAW/rG,EAAO+rG,QACjB3/G,EAAM2/G,WAAa/rG,EAAO+rG,UAE1B3/G,GAAS4T,O,gBCvR5B,IAAI22K,EAAO,8BACP,WAAYr5I,EAAI03E,GAAI,oBAChBnqH,KAAKyyC,GAAKA,EACVzyC,KAAKmqH,KAAOA,EACZnqH,KAAK+rL,gBAAkB,QACvB/rL,KAAKgsL,aAAe,QACpBhsL,KAAKisL,SAAW,OAChBjsL,KAAKksL,cAAgB,OACrBlsL,KAAKsvC,QAAS,GARX,qBAUP,WACI,OAAOtvC,KAAKmgH,WAXT,IAaP,SAAa7xE,GACTtuC,KAAKmgH,UAAY7xE,EACjBtuC,KAAKmsL,eAfF,6BAiBP,WAAe,WACXnsL,KAAKmqH,KAAK9+F,kBAAkB,WACE,UAAtB,EAAK2gK,cACL,EAAKI,mBAAqB,EAAKlxF,aAAa3wD,KAAK,GACjD,EAAK8hJ,mBAAqB,EAAKlxF,aAAa5wD,KAAK,GACjD,EAAK+hJ,cAAgB,EAAKr2I,QAAQ1L,KAAK,GACvC,EAAKkI,GAAG7vC,cAAc0oB,iBAAiB,aAAc,EAAK8gK,oBAC1D,EAAK35I,GAAG7vC,cAAc0oB,iBAAiB,aAAc,EAAK+gK,oBAC1D,EAAK55I,GAAG7vC,cAAc0oB,iBAAiB,QAAS,EAAKghK,gBAE1B,UAAtB,EAAKN,eACV,EAAKO,cAAgB,EAAKC,QAAQjiJ,KAAK,GACvC,EAAKkiJ,aAAe,EAAK37D,OAAOvmF,KAAK,GACrC,EAAKkI,GAAG7vC,cAAc0oB,iBAAiB,QAAS,EAAKihK,eACrD,EAAK95I,GAAG7vC,cAAc0oB,iBAAiB,OAAQ,EAAKmhK,mBA/BzD,0BAmCP,SAAax4J,GACJj0B,KAAKqY,WAAcrY,KAAK0sL,aACzB1sL,KAAK2sL,aArCN,0BAwCP,SAAa14J,GACTj0B,KAAKmsL,eAzCF,qBA2CP,SAAQl4J,GACJj0B,KAAK2sL,aA5CF,oBA8CP,SAAO14J,GACHj0B,KAAKmsL,eA/CF,qBAiDP,SAAQl4J,GACJj0B,KAAKmsL,eAlDF,sBAoDP,WAAQ,WACJnsL,KAAK8b,QAAS,EACd9b,KAAK4sL,mBACD5sL,KAAK6sL,UACL7sL,KAAK0sL,YAAc9nJ,WAAW,WAAQ,EAAK2/H,QAAWvkK,KAAK6sL,WAE3D7sL,KAAKukK,OACLvkK,KAAK8sL,OAEL9sL,KAAK+sL,YAAcnoJ,WAAW,WAAQ,EAAKooJ,QAD5BhtL,KAAK6sL,UAAY7sL,KAAK8sL,KAAO9sL,KAAK6sL,UAAY7sL,KAAK8sL,SA5DnE,wBAgEP,WAAU,WACN9sL,KAAK8b,QAAS,EACd9b,KAAKitL,mBACDjtL,KAAKktL,WACLltL,KAAK4sL,mBACL5sL,KAAK+sL,YAAcnoJ,WAAW,WAAQ,EAAKooJ,QAAWhtL,KAAKktL,YAG3DltL,KAAKgtL,SAxEN,gBA2EP,WACI,OAAOhtL,KAAKmtL,OA5ET,IA8EP,SAAS3jG,GACLxpF,KAAKmtL,MAAQ3jG,EACTxpF,KAAK8b,SACD9b,KAAKmtL,MACDntL,KAAKqY,WAAarY,KAAKqY,UAAUo3F,cACjCzvG,KAAKotL,aACLptL,KAAKqtL,SAGLrtL,KAAKukK,OAITvkK,KAAKgtL,UA3FV,oBA+FP,WACQhtL,KAAKqY,YACLrY,KAAK4sL,mBACL5sL,KAAKwL,UAETxL,KAAKqY,UAAYsyB,SAAS9yB,cAAc,OACxC,IAAIy1K,EAAe3iJ,SAAS9yB,cAAc,OAC1Cy1K,EAAazlK,UAAY,mBACzB7nB,KAAKqY,UAAUP,YAAYw1K,GAC3BttL,KAAKutL,YAAc5iJ,SAAS9yB,cAAc,OAC1C7X,KAAKutL,YAAY1lK,UAAY,0CAC7B7nB,KAAKotL,aACDptL,KAAKwtL,gBACLxtL,KAAKqY,UAAU9M,MAAMvB,SAAWhK,KAAKwtL,eAEzCxtL,KAAKqY,UAAUP,YAAY9X,KAAKutL,aACV,SAAlBvtL,KAAKisL,SACLthJ,SAAS7H,KAAKhrB,YAAY9X,KAAKqY,WAE/B,EAAWP,YAAY9X,KAAKqY,UADL,WAAlBrY,KAAKisL,SAC6BjsL,KAAKyyC,GAAG7vC,cAER5C,KAAKisL,UAChDjsL,KAAKqY,UAAU9M,MAAMwH,QAAU,iBArH5B,kBAuHP,WACS/S,KAAKwpF,OAAQxpF,KAAKgtB,WAGvBhtB,KAAKsF,SACLtF,KAAKqtL,QACL,EAAWI,OAAOztL,KAAKqY,UAAW,KAE9BrY,KAAKqY,UAAU9M,MAAME,OADE,SAAvBzL,KAAKksL,gBAC2B,EAAW/B,OAEbnqL,KAAKksL,cACvClsL,KAAK0tL,gCAlIF,kBAoIP,WACI1tL,KAAKwL,WArIF,wBAuIP,WACQxL,KAAKsvC,QACLtvC,KAAKutL,YAAY9+G,UAAY,GAC7BzuE,KAAKutL,YAAYz1K,YAAY6yB,SAASmuF,eAAe94H,KAAKmtL,SAG1DntL,KAAKutL,YAAY9+G,UAAYzuE,KAAKmtL,QA7InC,mBAgJP,WAEI,OADentL,KAAK+rL,iBAEhB,IAAK,MACD/rL,KAAK2tL,WACD3tL,KAAK4tL,kBACL5tL,KAAK6tL,cACD7tL,KAAK4tL,kBACL5tL,KAAK8tL,aACD9tL,KAAK4tL,iBACL5tL,KAAK+tL,cAIjB,MACJ,IAAK,SACD/tL,KAAK6tL,cACD7tL,KAAK4tL,kBACL5tL,KAAK2tL,WACD3tL,KAAK4tL,kBACL5tL,KAAK8tL,aACD9tL,KAAK4tL,iBACL5tL,KAAK+tL,cAIjB,MACJ,IAAK,OACD/tL,KAAK+tL,YACD/tL,KAAK4tL,kBACL5tL,KAAK8tL,aACD9tL,KAAK4tL,kBACL5tL,KAAK2tL,WACD3tL,KAAK4tL,iBACL5tL,KAAK6tL,gBAIjB,MACJ,IAAK,QACD7tL,KAAK8tL,aACD9tL,KAAK4tL,kBACL5tL,KAAK+tL,YACD/tL,KAAK4tL,kBACL5tL,KAAK2tL,WACD3tL,KAAK4tL,iBACL5tL,KAAK6tL,mBA9LtB,2BAqMP,WACI,GAAsB,SAAlB7tL,KAAKisL,UAAyC,WAAlBjsL,KAAKisL,SAAuB,CACxD,IAAIphL,EAAS7K,KAAKyyC,GAAG7vC,cAAc6H,wBAGnC,MAAO,CAAEwB,KAFQpB,EAAOoB,KAAO,EAAW+7K,sBAEfj8K,IADXlB,EAAOkB,IAAM,EAAW+7K,sBAIxC,MAAO,CAAE77K,KAAM,EAAGF,IAAK,KA7MxB,wBAgNP,WACI/L,KAAKguL,SAAS,SACd,IAAIC,EAAajuL,KAAKkuL,gBAClBjiL,EAAOgiL,EAAWhiL,KAAO,EAAWkiL,cAAcnuL,KAAKyyC,GAAG7vC,eAC1DmJ,EAAMkiL,EAAWliL,KAAO,EAAWy8K,eAAexoL,KAAKyyC,GAAG7vC,eAAiB,EAAW4lL,eAAexoL,KAAKqY,YAAc,EAC5HrY,KAAKqY,UAAU9M,MAAMU,KAAOA,EAAO,KACnCjM,KAAKqY,UAAU9M,MAAMQ,IAAMA,EAAM,OAtN9B,uBAwNP,WACI/L,KAAKguL,SAAS,QACd,IAAIC,EAAajuL,KAAKkuL,gBAClBjiL,EAAOgiL,EAAWhiL,KAAO,EAAWkiL,cAAcnuL,KAAKqY,WACvDtM,EAAMkiL,EAAWliL,KAAO,EAAWy8K,eAAexoL,KAAKyyC,GAAG7vC,eAAiB,EAAW4lL,eAAexoL,KAAKqY,YAAc,EAC5HrY,KAAKqY,UAAU9M,MAAMU,KAAOA,EAAO,KACnCjM,KAAKqY,UAAU9M,MAAMQ,IAAMA,EAAM,OA9N9B,sBAgOP,WACI/L,KAAKguL,SAAS,OACd,IAAIC,EAAajuL,KAAKkuL,gBAClBjiL,EAAOgiL,EAAWhiL,MAAQ,EAAWkiL,cAAcnuL,KAAKyyC,GAAG7vC,eAAiB,EAAWurL,cAAcnuL,KAAKqY,YAAc,EACxHtM,EAAMkiL,EAAWliL,IAAM,EAAWy8K,eAAexoL,KAAKqY,WAC1DrY,KAAKqY,UAAU9M,MAAMU,KAAOA,EAAO,KACnCjM,KAAKqY,UAAU9M,MAAMQ,IAAMA,EAAM,OAtO9B,yBAwOP,WACI/L,KAAKguL,SAAS,UACd,IAAIC,EAAajuL,KAAKkuL,gBAClBjiL,EAAOgiL,EAAWhiL,MAAQ,EAAWkiL,cAAcnuL,KAAKyyC,GAAG7vC,eAAiB,EAAWurL,cAAcnuL,KAAKqY,YAAc,EACxHtM,EAAMkiL,EAAWliL,IAAM,EAAWy8K,eAAexoL,KAAKyyC,GAAG7vC,eAC7D5C,KAAKqY,UAAU9M,MAAMU,KAAOA,EAAO,KACnCjM,KAAKqY,UAAU9M,MAAMQ,IAAMA,EAAM,OA9O9B,sBAgPP,SAAS/B,GACLhK,KAAKqY,UAAU9M,MAAMU,KAAO,SAC5BjM,KAAKqY,UAAU9M,MAAMQ,IAAM,SAC3B,IAAIqiL,EAAmB,mCAAqCpkL,EAC5DhK,KAAKqY,UAAUwP,UAAY7nB,KAAKquL,kBAAoBD,EAAmB,IAAMpuL,KAAKquL,kBAAoBD,IApPnG,2BAsPP,WACI,IAAIvjL,EAAS7K,KAAKqY,UAAU5N,wBACxB6jL,EAAYzjL,EAAOkB,IACnBwiL,EAAa1jL,EAAOoB,KACpBvC,EAAQ,EAAWykL,cAAcnuL,KAAKqY,WACtC7N,EAAS,EAAWg+K,eAAexoL,KAAKqY,WACxCkvK,EAAW,EAAWC,cAC1B,OAAQ+G,EAAa7kL,EAAQ69K,EAAS79K,OAAW6kL,EAAa,GAAOD,EAAY,GAAOA,EAAY9jL,EAAS+8K,EAAS/8K,SA7PnH,4BA+PP,SAAeypB,GACXj0B,KAAKgtL,SAhQF,wCAkQP,WAA0B,WACtBhtL,KAAKmqH,KAAK9+F,kBAAkB,WACxB,EAAKmjK,eAAiB,EAAKC,eAAelkJ,KAAK,GAC/Cpf,OAAOG,iBAAiB,SAAU,EAAKkjK,oBArQxC,0CAwQP,WACQxuL,KAAKwuL,iBACLrjK,OAAOQ,oBAAoB,SAAU3rB,KAAKwuL,gBAC1CxuL,KAAKwuL,eAAiB,QA3QvB,0BA8QP,WAC8B,UAAtBxuL,KAAKgsL,cACLhsL,KAAKyyC,GAAG7vC,cAAc+oB,oBAAoB,aAAc3rB,KAAKosL,oBAC7DpsL,KAAKyyC,GAAG7vC,cAAc+oB,oBAAoB,aAAc3rB,KAAKqsL,oBAC7DrsL,KAAKyyC,GAAG7vC,cAAc+oB,oBAAoB,QAAS3rB,KAAKssL,gBAE7B,UAAtBtsL,KAAKgsL,eACVhsL,KAAKyyC,GAAG7vC,cAAc+oB,oBAAoB,QAAS3rB,KAAKusL,eACxDvsL,KAAKyyC,GAAG7vC,cAAc+oB,oBAAoB,OAAQ3rB,KAAKysL,eAE3DzsL,KAAK0uL,iCAxRF,oBA0RP,WACQ1uL,KAAKqY,WAAarY,KAAKqY,UAAUuwB,gBACX,SAAlB5oC,KAAKisL,SACLthJ,SAAS7H,KAAKrhB,YAAYzhB,KAAKqY,WACR,WAAlBrY,KAAKisL,SACVjsL,KAAKyyC,GAAG7vC,cAAc6e,YAAYzhB,KAAKqY,WAEvC,EAAWoJ,YAAYzhB,KAAKqY,UAAWrY,KAAKisL,WAEpDjsL,KAAK0uL,+BACL1uL,KAAK2uL,gBACL3uL,KAAKqY,UAAY,OArSd,8BAuSP,WACQrY,KAAK0sL,cACLxoJ,aAAalkC,KAAK0sL,aAClB1sL,KAAK0sL,YAAc,QA1SpB,8BA6SP,WACQ1sL,KAAK+sL,cACL7oJ,aAAalkC,KAAK+sL,aAClB/sL,KAAK+sL,YAAc,QAhTpB,2BAmTP,WACI/sL,KAAKitL,mBACLjtL,KAAK4sL,qBArTF,yBAuTP,WACI5sL,KAAK4uL,eACL5uL,KAAKwL,aAzTF,G,OA4TXsgL,EAAQvrL,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKsrL,GAAS,KAAyB,KAAoB,KAAyB,OAC7IA,EAAQrrL,UAAO,KAAyB,CAAEC,KAAMorL,EAASnrL,UAAW,CAAC,CAAC,GAAI,WAAY,KAAMwB,OAAQ,CAAE4pL,gBAAiB,kBAAmBC,aAAc,eAAgBC,SAAU,WAAYC,cAAe,gBAAiB58I,OAAQ,SAAUtiB,SAAU,CAAC,kBAAmB,YAAaw8D,KAAM,CAAC,WAAY,QAASgkG,cAAe,gBAAiBa,kBAAmB,oBAAqBxB,UAAW,YAAaK,UAAW,YAAaJ,KAAM,U,kBAyCrb,IAAI+B,EAAa,+C,OAEjBA,EAActuL,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKquL,IAC1EA,EAAc31K,UAAO,KAAwB,CAAExY,KAAMmuL,IACrDA,EAAc11K,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,KCtW1D,SAAS01K,EAA6BntL,EAAIC,GAIxC,GAJwD,EAALD,IACjD,KAAsB,EAAG,QACzB,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAiB,GACjB,KAAyBA,EAAOO,OAAO6O,OAAS,UAEpD,SAAS05J,EAAqCptL,EAAIC,GAAgB,EAALD,GACzD,KAA0B,GAE9B,IAAM,EAAM,SAAUo/C,GAAM,MAAO,CAAE,OAAUA,IACzCrhD,EAAM,SAAU8sC,EAAIC,EAAIuiJ,GAAM,MAAO,CAAE,kCAAkC,EAAM,qBAAsBxiJ,EAAI,oBAAqBC,EAAI,yBAA0BuiJ,IAC5J19E,EAAM,SAAUvwD,GAAM,MAAO,CAAE/uC,UAAW+uC,IAC1CwwD,EAAM,CAAC,aACPE,EAAM,CAAC,UACPw9E,EAAM,CAAC,MACPC,EAAM,CAAC,iBACb,SAASC,EAAwCxtL,EAAIC,GAInD,GAJmE,EAALD,IAC5D,KAA+B,GAC/B,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMo1G,EAAS,KAAqB,GACpC,KAAiB,GACjB,KAAyBA,EAAO1hF,OAAS,UAE7C,SAAS+5J,EAAwCztL,EAAIC,GAAgB,EAALD,GAC5D,KAA0B,GAE9B,IAAM0tL,EAAM,SAAU7iJ,GAAM,MAAO,CAAE,gDAAgD,EAAM,0BAA2BA,IACtH,SAAS8iJ,EAAyB3tL,EAAIC,GAKpC,GALoD,EAALD,IAC7C,KAAsB,EAAG,OAAQ,IACjC,KAAkB,EAAGwtL,EAAyC,EAAG,EAAG,eAAgB,IACpF,KAAkB,EAAGC,EAAyC,EAAG,EAAG,eAAgB,IACpF,QACO,EAALztL,EAAQ,CACV,IAAMuzG,EAAS,OACf,KAAkB,UAAW,KAAuB,EAAGm6E,EAAqB,MAAhBn6E,EAAO7/E,OAAyC,IAAxB6/E,EAAO7/E,MAAMlxB,SACjG,KAAiB,GACjB,KAAkB,QAAS+wG,EAAOq6E,sBAClC,KAAiB,GACjB,KAAkB,mBAAoBr6E,EAAOq6E,qBAA7C,CAAmE,0BAA2B,KAAuB,EAAGj+E,EAAK4D,EAAOs6E,kBAExI,IAAMl7E,EAAM,SAAU9nE,GAAM,MAAO,CAAE,+DAA+D,EAAM,0BAA2BA,IACrI,SAASijJ,EAAyB9tL,EAAIC,GAIpC,GAJoD,EAALD,IAC7C,KAAsB,EAAG,OAAQ,IACjC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM+0G,EAAS,OACf,KAAkB,UAAW,KAAuB,EAAGpC,EAA2B,MAAtBoC,EAAOi0C,aAAqD,IAA9Bj0C,EAAOi0C,YAAYxmJ,SAC7G,KAAiB,GACjB,KAAyBuyG,EAAOi0C,aAAe,UAEnD,SAAS+kC,EAA0B/tL,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACtD,IAAMo5G,EAAO,OACb,KAAsB,EAAG,QAAS,GAAI,IACtC,KAAkB,QAAS,WAAkI,OAApE,KAAqBA,GAAuB,OAAuC40E,wBAA5K,CAAuM,QAAS,SAA0D79J,GAA8E,OAApE,KAAqBipF,GAAuB,OAAuC60E,sBAAsB99J,IAA7X,CAAyY,QAAS,SAA0DA,GAA8E,OAApE,KAAqBipF,GAAuB,OAAuC80E,qBAAqB/9J,IAA9jB,CAA0kB,OAAQ,SAAyDA,GAA8E,OAApE,KAAqBipF,GAAuB,OAAuC+0E,YAAYh+J,KACpvB,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMs0G,EAAS,OACf,KAAkB,WAAYA,EAAOjpF,UACrC,KAAmB,YAAaipF,EAAOgqC,UAAvC,CAAkD,aAAchqC,EAAOu5E,eAAiBv5E,EAAOu5E,eAAen6J,MAAQ,IAAtH,CAA2H,cAAe4gF,EAAO00C,YAAjJ,CAA8J,gBAAiB10C,EAAO85E,iBAE1L,SAASC,EAAsBruL,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAClD,IAAMsuL,EAAO,OACb,KAAsB,EAAG,IAAK,IAC9B,KAAkB,QAAS,SAAkDn+J,GAA8E,OAApE,KAAqBm+J,GAAuB,OAAuCv/K,MAAMohB,KAChL,QAEJ,SAASo+J,EAA+BvuL,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC3D,IAAMq7G,EAAO,OACb,KAAsB,EAAG,MAAO,IAChC,KAAkB,QAAS,SAA6DlrF,GAAU,OAAOA,EAAOlC,oBAChH,KAAsB,EAAG,QAAS,GAAI,IACtC,KAAkB,gBAAiB,SAAuEkC,GAAU,OAAOA,EAAO5E,kBAAlI,CAAuJ,UAAW,SAAiE4E,GAA+E,OAArE,KAAqBkrF,GAAuB,KAAqB,GAAmBxvF,UAAUsE,GAAQ,IAAnV,CAA8V,QAAS,SAA+DA,GAA+E,OAArE,KAAqBkrF,GAAuB,KAAqB,GAAmBmzE,SAASr+J,KAC7gB,OACA,KAAiB,EAAG,OAAQ,IAC5B,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMq6G,EAAU,KAAqB,GACrC,KAAiB,GACjB,KAAkB,QAASA,EAAQqvE,aAAe,IAClD,KAAmB,cAAervE,EAAQo0E,kBAA1C,CAA6D,aAAcp0E,EAAQq0E,kBAEvF,SAASC,EAA6D3uL,EAAIC,GAIxE,GAJwF,EAALD,IACjF,KAAsB,EAAG,QACzB,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM4uL,EAAe,OAAuBv+K,UAC5C,KAAiB,GACjB,KAAyBu+K,EAAal7J,OAAS,UAEnD,SAASm7J,EAAqE7uL,EAAIC,GAAgB,EAALD,GACzF,KAA0B,GAE9B,SAAS8uL,EAAqE9uL,EAAIC,GAAgB,EAALD,GACzF,KAA0B,GAE9B,IAAM+uL,EAAM,SAAU3vI,EAAIvU,GAAM,MAAO,CAAEx6B,UAAW+uC,EAAIyuI,eAAgBhjJ,IACxE,SAASmkJ,EAAsDhvL,EAAIC,GAMjE,GANiF,EAALD,IAC1E,KAAsB,EAAG,KAAM,IAC/B,KAAkB,EAAG2uL,EAA8D,EAAG,EAAG,OAAQ,IACjG,KAAkB,EAAGE,EAAsE,EAAG,EAAG,eAAgB,IACjH,OACA,KAAkB,EAAGC,EAAsE,EAAG,EAAG,eAAgB,KAC1G,EAAL9uL,EAAQ,CACV,IAAM4uL,EAAe3uL,EAAIoQ,UACzB,KAAqB,GACrB,IAAM4+K,EAAO,KAAmB,GAC1BC,EAAU,OAChB,KAAiB,GACjB,KAAkB,QAASA,EAAQC,eACnC,KAAiB,GACjB,KAAkB,mBAAoBD,EAAQC,cAA9C,CAA6D,0BAA2B,KAAuB,EAAGx/E,EAAKi/E,IACvH,KAAiB,GACjB,KAAkB,mBAAoBK,EAAtC,CAA4C,0BAA2B,KAAuB,EAAGF,EAAKH,EAAar4K,MAAO24K,EAAQrB,kBAEtI,SAASuB,EAAwCpvL,EAAIC,GAInD,GAJmE,EAALD,IAC5D,KAA+B,GAC/B,KAAkB,EAAGgvL,EAAuD,EAAG,GAAI,cAAe,IAClG,QACO,EAALhvL,EAAQ,CACV,IAAM+5G,EAAU,KAAqB,GACrC,KAAiB,GACjB,KAAkB,UAAWA,EAAQs1E,mBAEzC,SAASC,EAAuDtvL,EAAIC,GAAgB,EAALD,GAC3E,KAA0B,GAE9B,SAASuvL,EAAwCvvL,EAAIC,GAInD,GAJmE,EAALD,IAC5D,KAA+B,GAC/B,KAAkB,EAAGsvL,EAAwD,EAAG,EAAG,eAAgB,IACnG,QACO,EAALtvL,EAAQ,CACV,OACA,IAAMivL,EAAO,KAAmB,GAC1BO,EAAU,OAChB,KAAiB,GACjB,KAAkB,mBAAoBP,EAAtC,CAA4C,0BAA2B,KAAuB,EAAGF,EAAKS,EAAQH,iBAAkBG,EAAQ3B,kBAE5I,SAAS4B,EAAoEzvL,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAChG,IAAM0vL,EAAO,OACb,KAAsB,EAAG,iBAAkB,IAC3C,KAAkB,UAAW,SAA+Gv/J,GAA+E,OAArE,KAAqBu/J,GAAuB,KAAqB,GAAmBC,YAAYx/J,KACtP,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAM4vL,EAAa3vL,EAAIoQ,UACjBw/K,EAAqB,KAAqB,GAAGhC,eAC7CiC,EAAU,KAAqB,GACrC,KAAkB,SAAUF,EAA5B,CAAwC,WAAYC,GAAsBD,EAA1E,CAAsF,WAAYE,EAAQC,eAE9G,SAASC,EAAsDhwL,EAAIC,GAIjE,GAJiF,EAALD,IAC1E,KAA+B,GAC/B,KAAkB,EAAGyvL,EAAqE,EAAG,EAAG,cAAe,IAC/G,QACO,EAALzvL,EAAQ,CACV,IAAMiwL,EAAc,OAAuB5/K,UAC3C,KAAiB,GACjB,KAAkB,UAAW4/K,IAEjC,SAASC,EAAkGlwL,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC9H,IAAMmwL,EAAO,OACb,KAA+B,GAC/B,KAAsB,EAAG,iBAAkB,IAC3C,KAAkB,UAAW,SAA6IhgK,GAA+E,OAArE,KAAqBggK,GAAuB,KAAqB,GAAmBR,YAAYx/J,KACpR,OACA,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMowL,EAAanwL,EAAIoQ,UACjBw/K,EAAqB,KAAqB,GAAGhC,eAC7CwC,EAAU,KAAqB,GACrC,KAAiB,GACjB,KAAkB,SAAUD,EAA5B,CAAwC,WAAYP,GAAsBO,EAA1E,CAAsF,WAAYC,EAAQN,eAE9G,SAASO,EAAmFtwL,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC/G,IAAMuwL,EAAO,OACb,KAAsB,EAAG,8BAA+B,GAAI,IAC5D,KAAkB,sBAAuB,WAAgO,OAArE,KAAqBA,GAAuB,KAAqB,GAAmBC,yCACxR,KAAkB,EAAGN,EAAmG,EAAG,EAAG,eAAgB,IAC9I,OACF,GAAS,EAALlwL,EAAQ,CACV,IAAMiwL,EAAc,KAAqB,GAAG5/K,UACtCogL,EAAU,KAAqB,GACrC,KAAkB,UAAW,KAAuB,EAAG,EAAKA,EAAQt5G,cAApE,CAAmF,WAAYs5G,EAAQC,UACvG,KAAiB,GACjB,KAAkB,kBAAmBT,IAEzC,SAASU,EAAqD3wL,EAAIC,GAEhE,GAFgF,EAALD,GACzE,KAAkB,EAAGswL,EAAoF,EAAG,EAAG,8BAA+B,IACvI,EAALtwL,EAAQ,CACV,IAAM4wL,EAAU,KAAqB,GACrC,KAAkB,OAAQA,EAAQC,eAAiBD,EAAQvB,kBAAoBuB,EAAQvB,iBAAiB7sL,SAE5G,SAASsuL,EAAuC9wL,EAAIC,GAGlD,GAHkE,EAALD,IAC3D,KAAkB,EAAGgwL,EAAuD,EAAG,EAAG,eAAgB,IAClG,KAAkB,EAAGW,EAAsD,EAAG,EAAG,cAAe,KAAM,GAAI,OACnG,EAAL3wL,EAAQ,CACV,IAAM+wL,EAAO,KAAmB,GAC1BC,EAAU,KAAqB,GACrC,KAAkB,QAASA,EAAQH,cAAnC,CAAkD,WAAYE,IAElE,SAASE,EAA8BjxL,EAAIC,GAIzC,GAJyD,EAALD,IAClD,KAAsB,EAAG,KAAM,IAC/B,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMkxL,EAAU,KAAqB,GACrC,KAAiB,GACjB,KAAyBA,EAAQC,qBAErC,IAAMC,EAAO,SAAUhyI,EAAIvU,GAAM,MAAO,CAAEwmJ,qBAAsBjyI,EAAIkyI,qBAAsBzmJ,IACpF0mJ,EAAO,SAAU1mJ,GAAM,MAAO,CAAEjrC,MAAO,UAAWuoF,OAAQt9C,IAChE,SAAS2mJ,GAAyBxxL,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACrD,IAAMyxL,EAAO,OACb,KAAsB,EAAG,MAAO,IAChC,KAAkB,0BAA2B,SAAkFthK,GAA8E,OAApE,KAAqBshK,GAAuB,OAAuCC,wBAAwBvhK,KACpP,KAAkB,EAAGo+J,EAAgC,EAAG,EAAG,MAAO,IAClE,KAAsB,EAAG,MAAO,IAChC,KAAsB,EAAG,KAAM,IAC/B,KAAkB,EAAGa,EAAyC,EAAG,EAAG,eAAgB,IACpF,KAAkB,EAAGG,EAAyC,EAAG,EAAG,eAAgB,IACpF,KAAkB,EAAGuB,EAAwC,EAAG,EAAG,cAAe,KAAM,GAAI,MAC5F,KAAkB,EAAGG,EAA+B,EAAG,EAAG,KAAM,IAChE,OACA,OACA,OACF,GAAS,EAALjxL,EAAQ,CACV,IAAMg2G,EAAS,OACf,KAAkBA,EAAO27E,iBACzB,KAAkB,UAAW,yEAA7B,CAAuG,oBAAqB,KAAuB,GAAIJ,EAAM,KAAuB,GAAIH,EAAMp7E,EAAO47E,sBAAuB57E,EAAO67E,wBAAnO,CAA4P,UAAW77E,EAAO87E,YAC9Q,KAAiB,GACjB,KAAkB,OAAQ97E,EAAOxiG,QACjC,KAAiB,GACjB,KAAmB,aAAcwiG,EAAO66E,cAAgB,OAAS76E,EAAO7+B,cAAgB,QACxF,KAAiB,GACjB,KAAkB,OAAQ6+B,EAAOkjC,OACjC,KAAiB,GACjB,KAAkB,QAASljC,EAAOkjC,OAClC,KAAiB,GACjB,KAAkB,OAAQljC,EAAOxiG,UAAYwiG,EAAOq5E,kBAAoBr5E,EAAOq5E,kBAAuD,IAAnCr5E,EAAOq5E,iBAAiB7sL,UAE/H,IAAMuvL,GAAO,SAAUlnJ,EAAIC,EAAIuiJ,EAAI2E,GAAM,MAAO,CAAE,wDAAwD,EAAM,oBAAqBnnJ,EAAI,mBAAoBC,EAAI,iBAAkBuiJ,EAAI,wBAAyB2E,IAO1MC,GAA0B,CAC5BrxL,QAAS,IACTC,YAAa,aAAW,kBAAM,KAC9BknB,OAAO,G,cAEX,IAAImqK,EAAY,8BACZ,iCACI7zL,KAAKi2C,QAAU,IAAI,KAFX,4BAIZ,SAAc3tB,GACVtoB,KAAKi2C,QAAQ/zB,KAAK,CACd4xK,cAAexrK,EACf9B,OAAQxmB,KAAKwmB,aAPT,G,OAWhBqtK,EAAatzL,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKqzL,IACxEA,EAAa1tL,UAAO,KAAyB,CAAEzF,KAAMmzL,EAAclzL,UAAW,CAAC,CAAC,mBAAoBwB,OAAQ,CAAEqkB,OAAQ,SAAUyI,SAAU,WAAYjC,SAAU,WAAY+mK,QAAS,UAAW1B,SAAU,WAAY/xL,SAAU,YAAc6hB,QAAS,CAAE8zB,QAAS,WAAa7vC,MAAO,EAAGC,KAAM,GAAIC,OAAQ,CAAC,CAAC,OAAQ,SAAU,EAAG,UAAW,UAAW,SAAU,CAAC,EAAG,QAAS,CAAC,EAAG,mBAAoB,4BAA6BhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,IACpd,KAAsB,EAAG,KAAM,GAC/B,KAAkB,QAAS,SAAmDmwB,GAAU,OAAOlwB,EAAIoyL,cAAcliK,KACjH,KAAkB,EAAGg9J,EAA8B,EAAG,EAAG,OAAQ,GACjE,KAAkB,EAAGC,EAAsC,EAAG,EAAG,eAAgB,GACjF,QACO,EAALptL,IACF,KAAkB,UAAW,KAAuB,EAAG,EAAKC,EAAIywL,SAAW,MAA3E,CAAkF,UAAW,KAAuB,EAAG3yL,EAAKkC,EAAIqtB,SAAUrtB,EAAI4kB,OAAOwG,UAAWprB,EAAI4kB,OAAO6O,OAAqC,IAA5BzzB,EAAI4kB,OAAO6O,MAAMlxB,SACrM,KAAmB,aAAcvC,EAAI4kB,OAAO6O,MAA5C,CAAmD,gBAAiBzzB,EAAIqtB,UACxE,KAAiB,GACjB,KAAkB,QAASrtB,EAAItB,UAC/B,KAAiB,GACjB,KAAkB,mBAAoBsB,EAAItB,SAA1C,CAAoD,0BAA2B,KAAuB,GAAIgxG,EAAK1vG,EAAI4kB,WAClHjgB,WAAY,CAAC,IAAgB,IAAgB,IAAa,KAA0BC,cAAe,I,mBAsB5G,IAAIytL,EAAQ,8BACR,WAAYxhJ,EAAI8gF,EAAUoe,EAAIxnB,GAAI,oBAC9BnqH,KAAKyyC,GAAKA,EACVzyC,KAAKuzH,SAAWA,EAChBvzH,KAAK2xI,GAAKA,EACV3xI,KAAKmqH,KAAOA,EACZnqH,KAAK84E,aAAe,QACpB94E,KAAKk0L,SAAW,QAChBl0L,KAAKm0L,mBAAoB,EACzBn0L,KAAKo0L,aAAe,qBACpBp0L,KAAKq0L,kBAAmB,EACxBr0L,KAAK8yL,mBAAqB,mBAC1B9yL,KAAKs0L,YAAa,EAClBt0L,KAAKu0L,WAAa,EAClBv0L,KAAKuzL,sBAAwB,iBAC7BvzL,KAAKwzL,sBAAwB,gBAC7BxzL,KAAKsrL,gBAAkB,WACvBtrL,KAAKw0L,QAAU,GACfx0L,KAAK+rL,gBAAkB,QACvB/rL,KAAKy0L,qBAAuB,WAC5Bz0L,KAAK00L,iBAAkB,EACvB10L,KAAKw/G,SAAW,IAAI,IACpBx/G,KAAKwsL,QAAU,IAAI,IACnBxsL,KAAK8wH,OAAS,IAAI,IAClB9wH,KAAKi2C,QAAU,IAAI,IACnBj2C,KAAK20L,OAAS,IAAI,IAClB30L,KAAK40L,OAAS,IAAI,IAClB50L,KAAK60L,cAAgB,aACrB70L,KAAK80L,eAAiB,aACtB90L,KAAK+0L,kBAAoB,GA7BrB,qBA+BR,WACI,OAAO/0L,KAAKmgH,WAhCR,IAmCR,SAAaA,GACLA,IACAngH,KAAK60G,SAAU,GACnB70G,KAAKmgH,UAAYA,EACZngH,KAAK2xI,GAAGmvB,WACT9gK,KAAK2xI,GAAGnwH,kBAxCR,gCA2CR,WAAkB,WACdxhB,KAAKg1L,UAAU3hL,QAAQ,SAAC/B,GACpB,OAAQA,EAAK2jL,WACT,IAAK,OACD,EAAKvD,aAAepgL,EAAKhR,SACzB,MACJ,IAAK,eACD,EAAKivL,qBAAuBj+K,EAAKhR,SACjC,MACJ,IAAK,QACD,EAAKwwL,cAAgBx/K,EAAKhR,SAC1B,MACJ,QACI,EAAKoxL,aAAepgL,EAAKhR,cAxDjC,sBA6DR,WACIN,KAAKgxL,iBAAmBhxL,KAAKgoB,QAC7BhoB,KAAKk1L,qBAAqB,QA/DtB,mBAiER,WACI,OAAOl1L,KAAKm1L,UAlER,IAoER,SAAY7mJ,GACR,IAAIxY,EAAO91B,KAAKo1L,YAAc,EAAYC,oBAAoB/mJ,EAAKtuC,KAAKo1L,aAAe9mJ,EACvFtuC,KAAKm1L,SAAWr/J,EAChB91B,KAAKgxL,iBAAmBhxL,KAAKm1L,SAC7Bn1L,KAAKk1L,qBAAqBl1L,KAAKuB,OAC/BvB,KAAKs1L,gBAAiB,EACtBt1L,KAAKu1L,oBACDv1L,KAAKqrL,aAAerrL,KAAKqrL,YAAYlnL,QACrCnE,KAAKw1L,mBA5EL,6BA+ER,WACQx1L,KAAKwpD,UACLxpD,KAAKy1L,wBAjFL,iBAoFR,WACI,OAAQz1L,KAAKwvL,eAAiBxvL,KAAKwvL,eAAen6J,MAAQ,OArFtD,iCAuFR,WACQr1B,KAAK01L,wBAA0B11L,KAAK01L,uBAAuB9yL,gBAC3D5C,KAAK01L,uBAAuB9yL,cAAcrB,MAASvB,KAAKwvL,eAAiBxvL,KAAKwvL,eAAen6J,MAAQr1B,KAAKuB,OAAS,MAzFnH,yBA4FR,SAAY+mB,GAAK,WACP9B,EAAS8B,EAAM9B,OAChBA,EAAOwG,WACRhtB,KAAKwiI,WAAWl6G,EAAO9B,GACvBxmB,KAAK21L,oBAAoB/yL,cAAcksB,SAE3C8V,WAAW,WACP,EAAKooJ,KAAK1kK,IACX,OApGC,wBAsGR,SAAWA,EAAO9B,GAAM,WAChBxmB,KAAKwvL,gBAAkBhpK,IACvBxmB,KAAKwvL,eAAiBhpK,EACtBxmB,KAAKuB,MAAQilB,EAAOjlB,MACpBvB,KAAK41L,QAAS,EACd51L,KAAK60L,cAAc70L,KAAKuB,OACxBvB,KAAKy1L,sBACLz1L,KAAKw/G,SAASt9F,KAAK,CACf4xK,cAAexrK,EAAMwrK,cACrBvyL,MAAOvB,KAAKuB,QAEZvB,KAAKwyL,eACL5tJ,WAAW,WACP,EAAKmwJ,kBAAoB,EAAKc,SAAW,EAAKA,SAASC,sBAAwB,GAChF,MApHP,gCAwHR,WAAkB,WAYd,GAXI91L,KAAKs1L,gBAAkBt1L,KAAK+vL,iBAC5B/vL,KAAKs1L,gBAAiB,EAClBt1L,KAAKwyL,eACLxyL,KAAK+1L,kCAAiC,GAE1C/1L,KAAKmqH,KAAK9+F,kBAAkB,WACxBuZ,WAAW,WACP,EAAKoxJ,gBACN,MAGPh2L,KAAKi2L,uBAAyBj2L,KAAKk2L,aAAc,CACjD,GAAIl2L,KAAKwyL,eAAiBxyL,KAAK61L,SAAU,CACrC,IAAIz6I,EAAQp7C,KAAK61L,SAASM,mBAC1Bn2L,KAAK+1L,kCAAiC,IAClC36I,EAAMjyC,MAAQnJ,KAAKo2L,4BAA8Bh7I,EAAMhyC,IAAMpJ,KAAKo2L,6BAClEp2L,KAAK61L,SAASQ,cAAcr2L,KAAKo2L,4BAGtB,EAAWE,WAAWt2L,KAAKqpB,QAAS,0BAEnD,EAAWktK,aAAav2L,KAAKk2L,aAAc,EAAWI,WAAWt2L,KAAKqpB,QAAS,0BAEnFrpB,KAAKi2L,uBAAwB,KAhJ7B,wBAmJR,SAAW10L,GACHvB,KAAKmV,QACLnV,KAAKw2L,cAETx2L,KAAKuB,MAAQA,EACbvB,KAAKk1L,qBAAqB3zL,GAC1BvB,KAAKy1L,sBACLz1L,KAAKu1L,oBACLv1L,KAAK2xI,GAAG36H,iBA3JJ,yBA6JR,WACIhX,KAAKqrL,YAAc,KACfrrL,KAAKy2L,iBAAmBz2L,KAAKy2L,gBAAgB7zL,gBAC7C5C,KAAKy2L,gBAAgB7zL,cAAcrB,MAAQ,IAE/CvB,KAAKgxL,iBAAmBhxL,KAAKgoB,UAlKzB,kCAoKR,SAAqBsmB,GACjBtuC,KAAKwvL,eAAiBxvL,KAAK02L,WAAWpoJ,EAAKtuC,KAAKgxL,kBAC5ChxL,KAAKq0L,mBAAqBr0L,KAAK2qJ,cAAgB3qJ,KAAKwvL,gBAAkBxvL,KAAKgxL,kBAAoBhxL,KAAKgxL,iBAAiB7sL,SAAWnE,KAAKwpD,WACrIxpD,KAAKwvL,eAAiBxvL,KAAKgxL,iBAAiB,IAEhDhxL,KAAKi2L,uBAAwB,IAzKzB,8BA2KR,SAAiBjnL,GACbhP,KAAK60L,cAAgB7lL,IA5KjB,+BA8KR,SAAkBA,GACdhP,KAAK80L,eAAiB9lL,IA/KlB,8BAiLR,SAAiBs/B,GACbtuC,KAAKgtB,SAAWshB,IAlLZ,0BAoLR,SAAahmB,GACLtoB,KAAKgtB,UAAYhtB,KAAKu5G,UAAYv5G,KAAK22L,aAAaruK,KAGxDtoB,KAAKi2C,QAAQ/zB,KAAKoG,GAClBtoB,KAAK21L,oBAAoB/yL,cAAcksB,QACnC9uB,KAAK+vL,eACL/vL,KAAKgtL,KAAK1kK,GAEVtoB,KAAKukK,OACTvkK,KAAK2xI,GAAGnwH,mBA9LJ,0BAgMR,SAAa8G,GACT,OAAO,EAAWsuK,SAAStuK,EAAMkE,OAAQ,2BACrClE,EAAMkE,OAAOqqK,WAAW72L,KAAK21L,oBAAoB/yL,gBAChD5C,KAAK01L,wBAA0BptK,EAAMkE,OAAOqqK,WAAW72L,KAAK01L,uBAAuB9yL,iBAnMpF,8BAqMR,SAAiB0lB,GACb,QAAStoB,KAAKyyC,GAAG7vC,cAAci0L,WAAWvuK,EAAMkE,SAAWxsB,KAAKyyC,GAAG7vC,cAAcgqB,SAAStE,EAAMkE,SAAYxsB,KAAKqpB,SAAWrpB,KAAKqpB,QAAQuD,SAAStE,EAAMkE,WAtMpJ,kCAwMR,WACIxsB,KAAK82L,8BAzMD,kCA2MR,SAAqBxuK,GACjBtoB,KAAK60G,SAAU,EACf70G,KAAKgtL,KAAK1kK,GACVtoB,KAAKwsL,QAAQtqK,KAAKoG,KA9Md,mCAgNR,SAAsBA,GAClBtoB,KAAKuB,MAAQ+mB,EAAMkE,OAAOjrB,MAC1BvB,KAAKk1L,qBAAqBl1L,KAAKuB,OAC/BvB,KAAK60L,cAAc70L,KAAKuB,OACxBvB,KAAKw/G,SAASt9F,KAAK,CACf4xK,cAAexrK,EACf/mB,MAAOvB,KAAKuB,UAtNZ,kBAyNR,WACIvB,KAAK+vL,gBAAiB,IA1NlB,qCA4NR,SAAwBznK,GACpB,OAAQA,EAAM6a,SACV,IAAK,UAWD,GAVAnjC,KAAKqpB,QAAUf,EAAMjd,QAErBrL,KAAKk2L,aAAe,EAAWI,WAAWt2L,KAAKqpB,QADpBrpB,KAAKwyL,cAAgB,+BAAiC,8BAEjFxyL,KAAK+2L,gBACD/2L,KAAKs0L,aACLt0L,KAAKqpB,QAAQ9d,MAAME,OAAS4jC,OAAOrvC,KAAKu0L,cAAgB,EAAWpK,SAEvEnqL,KAAKg2L,eACLh2L,KAAK82L,4BACL92L,KAAK0tL,6BACD1tL,KAAKgoB,SAAWhoB,KAAKgoB,QAAQ7jB,SACxBnE,KAAKwyL,cAAe,CACrB,IAAIwE,EAAmB,EAAWV,WAAWt2L,KAAKk2L,aAAc,wCAC5Dc,GACA,EAAWT,aAAav2L,KAAKk2L,aAAcc,GAInDh3L,KAAKy2L,iBAAmBz2L,KAAKy2L,gBAAgB7zL,gBAC7C5C,KAAKi3L,qBAAsB,EACvBj3L,KAAK00L,iBACL10L,KAAKy2L,gBAAgB7zL,cAAcksB,SAG3C9uB,KAAK20L,OAAOzyK,KAAKoG,GACjB,MACJ,IAAK,OACDtoB,KAAKk3L,mBA1PT,kDA8PR,WACSl3L,KAAKm3L,sBACFn3L,KAAK+0L,kBACL/0L,KAAK61L,SAASuB,eAAep3L,KAAK+0L,mBAE7B/0L,KAAKo2L,4BAA8B,GACxCp2L,KAAK61L,SAASQ,cAAcr2L,KAAKo2L,6BAGzCp2L,KAAKm3L,qBAAsB,IAvQvB,8CAyQR,SAAiCE,GACzBr3L,KAAKwvL,gBAAkBxvL,KAAKgxL,kBAAoBhxL,KAAKgxL,iBAAiB7sL,SAClEkzL,IACAr3L,KAAK+0L,kBAAoB,GAE7B/0L,KAAKo2L,2BAA6Bp2L,KAAKs3L,gBAAgBt3L,KAAKwvL,eAAejuL,MAAOvB,KAAKgxL,qBA9QvF,2BAiRR,WACQhxL,KAAKisL,WACiB,SAAlBjsL,KAAKisL,SACLthJ,SAAS7H,KAAKhrB,YAAY9X,KAAKqpB,SAE/B,EAAWvR,YAAY9X,KAAKqpB,QAASrpB,KAAKisL,UACzCjsL,KAAKqpB,QAAQ9d,MAAMw8B,WACpB/nC,KAAKqpB,QAAQ9d,MAAMw8B,SAAW,EAAWqvC,SAASp3E,KAAKu3L,mBAAmB30L,eAAiB,SAxR/F,kCA4RR,WACQ5C,KAAKqpB,SAAWrpB,KAAKisL,UACrBjsL,KAAKyyC,GAAG7vC,cAAckV,YAAY9X,KAAKqpB,WA9RvC,kBAiSR,SAAKf,GACDtoB,KAAK+vL,gBAAiB,EAClB/vL,KAAKmV,QAAUnV,KAAKm0L,mBACpBn0L,KAAKw2L,cAELx2L,KAAKwyL,gBACLxyL,KAAKm3L,qBAAsB,GAE/Bn3L,KAAK2xI,GAAG36H,eACRhX,KAAK40L,OAAO1yK,KAAKoG,KA1Sb,0BA4SR,WACQtoB,KAAKqpB,UACDrpB,KAAKisL,SACL,EAAWuL,iBAAiBx3L,KAAKqpB,QAASrpB,KAAKu3L,mBAAmB30L,eAElE,EAAW60L,iBAAiBz3L,KAAKqpB,QAASrpB,KAAKu3L,mBAAmB30L,kBAjTtE,0BAoTR,SAAa0lB,GACTtoB,KAAK60G,SAAU,EACf70G,KAAKwsL,QAAQtqK,KAAKoG,KAtTd,yBAwTR,SAAYA,GACRtoB,KAAK60G,SAAU,EACf70G,KAAK8wH,OAAO5uG,KAAKoG,GACZtoB,KAAKi3L,qBACNj3L,KAAK80L,iBAET90L,KAAKi3L,qBAAsB,IA9TvB,mCAgUR,SAAsBttL,GAClB,IAAI+tL,EACJ,GAAI13L,KAAKgxL,kBAAoBhxL,KAAKgxL,iBAAiB7sL,OAAQ,CACvD,IAAK,IAAI0D,EAAK8B,EAAQ,EAAI,GAAK9B,EAAGA,IAAK,CACnC,IAAI2e,EAASxmB,KAAKgxL,iBAAiBnpL,GACnC,IAAI2e,EAAOwG,SAAX,CAII0qK,EAAoBlxK,EACpB,OAGR,IAAKkxK,EACD,IAAK,IAAI,EAAI13L,KAAKgxL,iBAAiB7sL,OAAS,EAAG,GAAKwF,EAAO,IAAK,CAC5D,IAAI,EAAS3J,KAAKgxL,iBAAiB,GACnC,IAAI,EAAOhkK,SAAX,CAII0qK,EAAoB,EACpB,QAKhB,OAAOA,IA1VH,mCA4VR,SAAsB/tL,GAClB,IAAIguL,EACJ,GAAI33L,KAAKgxL,kBAAoBhxL,KAAKgxL,iBAAiB7sL,OAAQ,CACvD,IAAK,IAAI0D,EAAK8B,EAAQ,EAAIA,EAAS3J,KAAKgxL,iBAAiB7sL,OAAS,EAAI0D,IAAK,CACvE,IAAI2e,EAASxmB,KAAKgxL,iBAAiBnpL,GACnC,IAAI2e,EAAOwG,SAAX,CAII2qK,EAAoBnxK,EACpB,OAGR,IAAKmxK,EACD,IAAK,IAAI,EAAI,EAAG,EAAIhuL,EAAO,IAAK,CAC5B,IAAI,EAAS3J,KAAKgxL,iBAAiB,GACnC,IAAI,EAAOhkK,SAAX,CAII2qK,EAAoB,EACpB,QAKhB,OAAOA,IAtXH,uBAwXR,SAAUrvK,EAAOulG,GACb,IAAI7tH,KAAKu5G,UAAav5G,KAAKgxL,kBAAqD,OAAjChxL,KAAKgxL,iBAAiB7sL,OAGrE,OAAQmkB,EAAMi/F,OAEV,KAAK,GACD,IAAKvnH,KAAK+vL,gBAAkBznK,EAAMsvK,OAC9B53L,KAAKukK,YAGL,GAAIvkK,KAAK66I,MAAO,CACZ,IAAIg9C,EAAoB73L,KAAKwvL,eAAiBxvL,KAAK83L,qBAAqB93L,KAAKwvL,eAAejuL,MAAOvB,KAAKgxL,mBAAqB,EAC7H,IAA2B,IAAvB6G,EAA0B,CAC1B,IAAIE,EAAgBF,EAAkBG,UAAY,EAC9CD,EAAiB/3L,KAAKgxL,iBAAiB6G,EAAkBI,YAAY//K,MAAM/T,QAC3EnE,KAAKwiI,WAAWl6G,EAAOtoB,KAAKgxL,iBAAiB6G,EAAkBI,YAAY//K,MAAM6/K,IACjF/3L,KAAKi2L,uBAAwB,GAExBj2L,KAAKgxL,iBAAiB6G,EAAkBI,WAAa,KAC1Dj4L,KAAKwiI,WAAWl6G,EAAOtoB,KAAKgxL,iBAAiB6G,EAAkBI,WAAa,GAAG//K,MAAM,IACrFlY,KAAKi2L,uBAAwB,QAIjCj2L,KAAKwiI,WAAWl6G,EAAOtoB,KAAKgxL,iBAAiB,GAAG94K,MAAM,QAGzD,CACD,IAAI,EAAoBlY,KAAKwvL,eAAiBxvL,KAAKs3L,gBAAgBt3L,KAAKwvL,eAAejuL,MAAOvB,KAAKgxL,mBAAqB,EACpH2G,EAAoB33L,KAAKk4L,sBAAsB,GAC/CP,IACA33L,KAAKwiI,WAAWl6G,EAAOqvK,GACvB33L,KAAKi2L,uBAAwB,GAIzC3tK,EAAM4E,iBACN,MAEJ,KAAK,GACD,GAAIltB,KAAK66I,MAAO,CACZ,IAAI,EAAoB76I,KAAKwvL,eAAiBxvL,KAAK83L,qBAAqB93L,KAAKwvL,eAAejuL,MAAOvB,KAAKgxL,mBAAqB,EAC7H,IAA2B,IAAvB,EAA0B,CAC1B,IAAImH,EAAgB,EAAkBH,UAAY,EAClD,GAAIG,GAAiB,EACjBn4L,KAAKwiI,WAAWl6G,EAAOtoB,KAAKgxL,iBAAiB,EAAkBiH,YAAY//K,MAAMigL,IACjFn4L,KAAKi2L,uBAAwB,OAE5B,GAAIkC,EAAgB,EAAG,CACxB,IAAIC,EAAYp4L,KAAKgxL,iBAAiB,EAAkBiH,WAAa,GACjEG,IACAp4L,KAAKwiI,WAAWl6G,EAAO8vK,EAAUlgL,MAAMkgL,EAAUlgL,MAAM/T,OAAS,IAChEnE,KAAKi2L,uBAAwB,SAKxC,CACD,IAAI,EAAoBj2L,KAAKwvL,eAAiBxvL,KAAKs3L,gBAAgBt3L,KAAKwvL,eAAejuL,MAAOvB,KAAKgxL,mBAAqB,EACpH0G,EAAoB13L,KAAKq4L,sBAAsB,GAC/CX,IACA13L,KAAKwiI,WAAWl6G,EAAOovK,GACvB13L,KAAKi2L,uBAAwB,GAGrC3tK,EAAM4E,iBACN,MAEJ,KAAK,GACL,KAAK,GACIltB,KAAK+vL,iBACN/vL,KAAKukK,OACLj8I,EAAM4E,kBAEV,MAEJ,KAAK,KACIltB,KAAKmV,QAAWnV,KAAKgxL,kBAAoBhxL,KAAKgxL,iBAAiB7sL,OAAS,IACzEnE,KAAKgtL,KAAK1kK,GAEdA,EAAM4E,iBACN,MAEJ,KAAK,GACL,KAAK,EACDltB,KAAKgtL,KAAK1kK,GACV,MAEJ,QACQulG,GACA7tH,KAAK6tH,OAAOvlG,MAndpB,oBAwdR,SAAOA,GAAK,WACJtoB,KAAKs4L,eACLp0J,aAAalkC,KAAKs4L,eAEtB,IAOIC,EAPEC,EAAOlwK,EAAM3L,IAQnB,GAPA3c,KAAKy4L,mBAAqBz4L,KAAK04L,kBAC/B14L,KAAK04L,kBAAoBF,EAErBx4L,KAAK24L,YADL34L,KAAKy4L,qBAAuBz4L,KAAK04L,kBACd14L,KAAK04L,kBAEL14L,KAAK24L,YAAc34L,KAAK24L,YAAcH,EAAOA,EAEhEx4L,KAAK66I,MAAO,CACZ,IAAI+9C,EAAc54L,KAAKwvL,eAAiBxvL,KAAK83L,qBAAqB93L,KAAKwvL,eAAejuL,MAAOvB,KAAKgxL,kBAAoB,CAAEiH,WAAY,EAAGD,UAAW,GAClJO,EAAYv4L,KAAK64L,wBAAwBD,OAExC,CACD,IAAI,EAAc54L,KAAKwvL,eAAiBxvL,KAAKs3L,gBAAgBt3L,KAAKwvL,eAAejuL,MAAOvB,KAAKgxL,mBAAqB,EAClHuH,EAAYv4L,KAAK84L,eAAe,GAEhCP,IAAcA,EAAUvrK,WACxBhtB,KAAKwiI,WAAWl6G,EAAOiwK,GACvBv4L,KAAKi2L,uBAAwB,GAEjCj2L,KAAKs4L,cAAgB1zJ,WAAW,WAC5B,EAAK+zJ,YAAc,MACpB,OAlfC,0BAofR,SAAahvL,GACT,IAAI6c,EAOJ,OANIxmB,KAAK24L,eACLnyK,EAASxmB,KAAK+4L,oBAAoBpvL,EAAO3J,KAAKgxL,iBAAiB7sL,WAE3DqiB,EAASxmB,KAAK+4L,oBAAoB,EAAGpvL,KAGtC6c,IA5fH,iCA8fR,SAAoBrd,EAAOC,GACvB,IAAK,IAAIvB,EAAIsB,EAAOtB,EAAIuB,EAAKvB,IAAK,CAC9B,IAAIs3I,EAAMn/I,KAAKgxL,iBAAiBnpL,GAChC,GAAIs3I,EAAI9pH,MAAM6wB,kBAAkBlmD,KAAKurL,cAAc9zB,WAAWz3J,KAAK24L,YAAYzyI,kBAAkBlmD,KAAKurL,iBAAmBpsC,EAAInyH,SACzH,OAAOmyH,EAGf,OAAO,OArgBH,qCAugBR,SAAwBx1I,GAEpB,GAAI3J,KAAK24L,YAAa,CAClB,IAAK,IAAI9wL,EAAI8B,EAAMsuL,WAAYpwL,EAAI7H,KAAKgxL,iBAAiB7sL,OAAQ0D,IAC7D,IAAK,IAAI0M,EAAK5K,EAAMsuL,aAAepwL,EAAM8B,EAAMquL,UAAY,EAAK,EAAGzjL,EAAIvU,KAAKgxL,iBAAiBnpL,GAAGqQ,MAAM/T,OAAQoQ,IAAK,CAC/G,IAAI4qI,EAAMn/I,KAAKgxL,iBAAiBnpL,GAAGqQ,MAAM3D,GACzC,GAAI4qI,EAAI9pH,MAAM6wB,kBAAkBlmD,KAAKurL,cAAc9zB,WAAWz3J,KAAK24L,YAAYzyI,kBAAkBlmD,KAAKurL,iBAAmBpsC,EAAInyH,SACzH,OAAOmyH,EAKf,IAAK,IAAI,EAAI,EAAG,GAAKx1I,EAAMsuL,WAAY,IACnC,IAAK,IAAI,EAAI,EAAG,GAAMtuL,EAAMsuL,aAAe,EAAKtuL,EAAMquL,UAAYh4L,KAAKgxL,iBAAiB,GAAG94K,MAAM/T,QAAS,IAAK,CAC3G,IAAI,EAAMnE,KAAKgxL,iBAAiB,GAAG94K,MAAM,GACzC,GAAI,EAAImd,MAAM6wB,kBAAkBlmD,KAAKurL,cAAc9zB,WAAWz3J,KAAK24L,YAAYzyI,kBAAkBlmD,KAAKurL,iBAAmB,EAAIv+J,SACzH,OAAO,GAM3B,OAAO,OA7hBH,6BA+hBR,SAAgBshB,EAAKxY,GACjB,IAAInsB,GAAS,EACb,GAAImsB,EACA,IAAK,IAAIjuB,EAAI,EAAGA,EAAIiuB,EAAK3xB,OAAQ0D,IAC7B,GAAY,MAAPymC,GAAgC,MAAjBxY,EAAKjuB,GAAGtG,OAAkB,EAAYygH,OAAO1zE,EAAKxY,EAAKjuB,GAAGtG,MAAOvB,KAAKg5L,SAAU,CAChGrvL,EAAQ9B,EACR,MAIZ,OAAO8B,IAziBH,kCA2iBR,SAAqB2kC,EAAKxY,GACtB,IAAImiK,EAAYD,EAChB,GAAIliK,EACA,IAAK,IAAIjuB,EAAI,EAAGA,EAAIiuB,EAAK3xB,SACrB8zL,EAAapwL,GAEM,KADnBmwL,EAAYh4L,KAAKs3L,gBAAgBhpJ,EAAKxY,EAAKjuB,GAAGqQ,SAFjBrQ,KAQrC,OAAmB,IAAfmwL,EACO,CAAEC,WAAYA,EAAYD,UAAWA,IAGpC,IA1jBR,wBA6jBR,SAAW1pJ,EAAKxY,EAAMmjK,GAClB,GAAIj5L,KAAK66I,QAAUo+C,EAAS,CACxB,IAAI95C,EACJ,GAAIrpH,GAAQA,EAAK3xB,OAAQ,qBACA2xB,GADA,IACrB,6BACIqpH,EAAMn/I,KAAK02L,WAAWpoJ,EADC,QACap2B,OAAO,OAF1B,+BAQzB,OAAOinI,EAGP,IAAIx1I,EAAQ3J,KAAKs3L,gBAAgBhpJ,EAAKxY,GACtC,OAAkB,GAAVnsB,EAAemsB,EAAKnsB,GAAS,OA5kBrC,sBA+kBR,SAAS2e,GACL,IAAIqG,EAAarG,EAAMkE,OAAOjrB,MAC1BotB,GAAcA,EAAWxqB,QACzBnE,KAAKqrL,YAAc18J,EACnB3uB,KAAKw1L,mBAGLx1L,KAAKqrL,YAAc,KACnBrrL,KAAKgxL,iBAAmBhxL,KAAKgoB,SAEjChoB,KAAKs1L,gBAAiB,IAzlBlB,4BA2lBR,WACI,IAAI4D,EAAel5L,KAAKk0L,SAAS3xK,MAAM,KACvC,GAAIviB,KAAKgoB,SAAWhoB,KAAKgoB,QAAQ7jB,OAAQ,CACrC,GAAInE,KAAK66I,MAAO,CACZ,IADY,EACRs+C,EAAiB,GADT,cAESn5L,KAAKgoB,SAFd,IAEZ,2BAAmC,KAA1BoxK,EAA0B,QAC3BC,EAAqB,EAAYlkL,OAAOikL,EAASlhL,MAAOghL,EAAcl5L,KAAKqrL,YAAarrL,KAAKsrL,gBAAiBtrL,KAAKurL,cACnH8N,GAAsBA,EAAmBl1L,QACzCg1L,EAAev1L,KAAK,CAChByxB,MAAO+jK,EAAS/jK,MAChB9zB,MAAO63L,EAAS73L,MAChB2W,MAAOmhL,KARP,8BAYZr5L,KAAKgxL,iBAAmBmI,OAGxBn5L,KAAKgxL,iBAAmB,EAAY77K,OAAOnV,KAAKgoB,QAASkxK,EAAcl5L,KAAKqrL,YAAarrL,KAAKsrL,gBAAiBtrL,KAAKurL,cAExHvrL,KAAKs1L,gBAAiB,KA/mBtB,wBAknBR,WACQt1L,KAAKwpD,SACL,EAAW8sI,WAAWt2L,KAAKyyC,GAAG7vC,cAAe,mCAAmCksB,QAEhF,EAAWwnK,WAAWt2L,KAAKyyC,GAAG7vC,cAAe,mBAAmBksB,UAtnBhE,mBAwnBR,WACI9uB,KAAKs5L,eAznBD,uCA2nBR,WAAyB,WAChBt5L,KAAKu5L,wBACNv5L,KAAKu5L,sBAAwBv5L,KAAKuzH,SAASqH,OAAO,WAAY,QAAS,SAACtyG,GAChE,EAAKkxK,iBAAiBlxK,KACtB,EAAK0kK,KAAK1kK,GACV,EAAKmxK,+BAET,EAAK9nD,GAAG36H,oBAloBZ,yCAsoBR,WACQhX,KAAKu5L,wBACLv5L,KAAKu5L,wBACLv5L,KAAKu5L,sBAAwB,QAzoB7B,wCA4oBR,WACIv5L,KAAK05L,uBAAyB15L,KAAKyuL,eAAelkJ,KAAKvqC,MACvDmrB,OAAOG,iBAAiB,SAAUtrB,KAAK05L,0BA9oBnC,0CAgpBR,WACQ15L,KAAK05L,yBACLvuK,OAAOQ,oBAAoB,SAAU3rB,KAAK05L,wBAC1C15L,KAAK05L,uBAAyB,QAnpB9B,4BAspBR,WACS,EAAWC,aACZ35L,KAAKgtL,KAAK1kK,SAxpBV,+BA2pBR,WACItoB,KAAK41L,OAAiC,MAAvB51L,KAAKwvL,iBA5pBhB,mBA8pBR,SAAMlnK,GACFtoB,KAAKuB,MAAQ,KACbvB,KAAK60L,cAAc70L,KAAKuB,OACxBvB,KAAKw/G,SAASt9F,KAAK,CACf4xK,cAAexrK,EACf/mB,MAAOvB,KAAKuB,QAEhBvB,KAAKk1L,qBAAqBl1L,KAAKuB,OAC/BvB,KAAKy1L,sBACLz1L,KAAKu1L,sBAvqBD,2BAyqBR,WACIv1L,KAAKy5L,8BACLz5L,KAAK0uL,+BACL1uL,KAAKqpB,QAAU,KACfrpB,KAAKk2L,aAAe,KACpBl2L,KAAK80L,mBA9qBD,yBAgrBR,WACI90L,KAAK45L,uBACL55L,KAAKk3L,oBAlrBD,G,OAqrBZjD,EAAS1zL,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKyzL,GAAU,KAAyB,KAAoB,KAAyB,KAAmB,KAAyB,KAA2B,KAAyB,OAChPA,EAAS9tL,UAAO,KAAyB,CAAEzF,KAAMuzL,EAAUtzL,UAAW,CAAC,CAAC,eAAgBe,eAAgB,SAAiCC,EAAIC,EAAKC,GAG1I,IAAIC,EAH2J,EAALH,GAC1J,KAAsBE,EAAU,EAAe,GACxC,EAALF,GAEF,KAAsBG,EAAK,UAA0BF,EAAIozL,UAAYlzL,IACpEwW,UAAW,SAAwB3W,EAAIC,GAOxC,IAAIE,EAPoD,EAALH,IACnD,KAAmB4vG,EAAK,GACxB,KAAmBE,EAAK,GACxB,KAAmBw9E,EAAK,GACxB,KAAmB,IAA0B,GAC7C,KAAmBC,EAAK,IACjB,EAALvtL,IAEF,KAAsBG,EAAK,UAA0BF,EAAI21L,mBAAqBz1L,EAAGE,OACjF,KAAsBF,EAAK,UAA0BF,EAAI60L,gBAAkB30L,EAAGE,OAC9E,KAAsBF,EAAK,UAA0BF,EAAI+zL,oBAAsB7zL,EAAGE,OAClF,KAAsBF,EAAK,UAA0BF,EAAIi0L,SAAW/zL,EAAGE,OACvE,KAAsBF,EAAK,UAA0BF,EAAI8zL,uBAAyB5zL,EAAGE,SACpFuW,SAAU,EAAGC,aAAc,SAA+B7W,EAAIC,GAAgB,EAALD,GAC1E,KAAmB,yBAA0BC,EAAIg0L,OAAjD,CAAyD,wBAAyBh0L,EAAIizG,UACrF1yG,OAAQ,CAAE22E,aAAc,eAAgBo7G,SAAU,WAAYC,kBAAmB,oBAAqBC,aAAc,eAAgBC,iBAAkB,mBAAoBvB,mBAAoB,qBAAsBwB,WAAY,aAAcC,WAAY,aAAchB,sBAAuB,wBAAyBC,sBAAuB,wBAAyBlI,gBAAiB,kBAAmBkJ,QAAS,UAAWzI,gBAAiB,kBAAmB0I,qBAAsB,uBAAwBC,gBAAiB,kBAAmB1nK,SAAU,WAAYhF,QAAS,UAAW7S,OAAQ,SAAUhU,KAAM,OAAQoK,MAAO,QAASkoL,WAAY,aAAcoG,WAAY,aAAcvG,gBAAiB,kBAAmB/5E,SAAU,WAAYtG,SAAU,WAAYzpD,SAAU,WAAYyiI,SAAU,WAAYx0E,SAAU,WAAYkzC,YAAa,cAAeylC,kBAAmB,oBAAqB7E,aAAc,eAAgBh4E,QAAS,UAAWumF,SAAU,WAAYd,QAAS,UAAWe,UAAW,YAAa3E,YAAa,cAAev6C,MAAO,QAASm/C,UAAW,YAAaxH,cAAe,gBAAiBH,SAAU,WAAYhC,gBAAiB,kBAAmBjvJ,eAAgB,iBAAkB6+G,UAAW,YAAaouC,kBAAmB,qBAAuBlsK,QAAS,CAAEq9F,SAAU,WAAYgtE,QAAS,UAAW17D,OAAQ,SAAU76E,QAAS,UAAW0+I,OAAQ,SAAUC,OAAQ,UAAYtyL,SAAU,CAAC,KAA0B,CAACsxL,MAA4BxtL,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,UAAW,UAAW,SAAU,CAAC,YAAa,IAAK,CAAC,EAAG,+BAAgC,CAAC,OAAQ,OAAQ,WAAY,GAAI,gBAAiB,UAAW,gBAAiB,UAAW,OAAQ,UAAW,EAAG,WAAY,QAAS,OAAQ,WAAY,CAAC,KAAM,IAAK,CAAC,EAAG,8BAA+B,EAAG,WAAY,kBAAmB,gBAAiB,qBAAsB,CAAC,EAAG,UAAW,EAAG,QAAS,CAAC,OAAQ,OAAQ,QAAS,+CAAgD,gBAAiB,UAAW,EAAG,WAAY,QAAS,QAAS,QAAS,OAAQ,EAAG,QAAS,CAAC,QAAS,qCAAsC,EAAG,QAAS,EAAG,QAAS,CAAC,OAAQ,SAAU,gBAAiB,UAAW,EAAG,sBAAuB,mBAAoB,mBAAoB,CAAC,EAAG,2BAA4B,eAAgB,EAAG,WAAY,CAAC,EAAG,UAAW,UAAW,QAAS,EAAG,QAAS,CAAC,EAAG,WAAY,CAAC,EAAG,QAAS,CAAC,EAAG,mBAAoB,2BAA4B,CAAC,OAAQ,OAAQ,gBAAiB,UAAW,EAAG,oBAAqB,eAAgB,gBAAiB,EAAG,WAAY,QAAS,QAAS,QAAS,QAAS,CAAC,gBAAiB,IAAK,CAAC,EAAG,yBAA0B,KAAM,WAAY,EAAG,SAAU,CAAC,EAAG,UAAW,WAAY,CAAC,QAAS,+BAAgC,EAAG,QAAS,EAAG,QAAS,CAAC,EAAG,6BAA8B,CAAC,OAAQ,UAAW,EAAG,oBAAqB,mBAAoB,oBAAqB,YAAa,gBAAiB,mBAAoB,CAAC,YAAa,IAAK,CAAC,QAAS,4BAA6B,EAAG,QAAS,CAAC,EAAG,+BAAgC,EAAG,SAAU,CAAC,OAAQ,OAAQ,eAAgB,MAAO,EAAG,qBAAsB,eAAgB,YAAa,mBAAoB,gBAAiB,EAAG,QAAS,gBAAiB,UAAW,SAAU,CAAC,SAAU,IAAK,CAAC,EAAG,0BAA2B,KAAM,aAAc,CAAC,QAAS,GAAI,EAAG,WAAY,CAAC,EAAG,0BAA2B,CAAC,EAAG,OAAQ,YAAa,CAAC,oBAAqB,IAAK,CAAC,EAAG,SAAU,WAAY,WAAY,WAAY,CAAC,EAAG,UAAW,WAAY,sBAAuB,EAAG,QAAS,CAAC,EAAG,UAAW,WAAY,uBAAwB,CAAC,WAAY,IAAK,CAAC,EAAG,gBAAiB,mBAAoB,CAAC,EAAG,8BAA+BhG,SAAU,SAA2BqB,EAAIC,GAAgB,EAALD,IAC3nH,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,QAAS,SAAgDmwB,GAAU,OAAOlwB,EAAIq4L,aAAanoK,KAC7G,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAkB,QAAS,SAAkDA,GAAU,OAAOlwB,EAAIs4L,aAAapoK,IAA/G,CAA2H,OAAQ,SAAiDA,GAAU,OAAOlwB,EAAIkuL,YAAYh+J,IAArN,CAAiO,UAAW,SAAoDA,GAAU,OAAOlwB,EAAI4rB,UAAUsE,GAAQ,KACvU,OACA,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGw9J,EAA0B,EAAG,EAAG,OAAQ,GAC7D,KAAkB,EAAGG,EAA0B,EAAG,EAAG,OAAQ,GAC7D,KAAkB,EAAGC,EAA2B,EAAG,EAAG,QAAS,GAC/D,KAAkB,EAAGM,EAAuB,EAAG,EAAG,IAAK,GACvD,OACA,KAAsB,GAAI,MAAO,GACjC,KAAiB,GAAI,OAAQ,IAC7B,OACA,KAAkB,GAAImD,GAA0B,EAAG,GAAI,MAAO,IAC9D,QACO,EAALxxL,IACF,KAAkBC,EAAIi4L,YACtB,KAAkB,UAAW,KAAuB,GAAInG,GAAM9xL,EAAIorB,SAAUprB,EAAImuL,eAAgBnuL,EAAIizG,QAASjzG,EAAIo4L,YAAcp4L,EAAIorB,UAAnI,CAA8I,UAAWprB,EAAI2J,OAC7J,KAAiB,GACjB,KAAkB,WAAY3J,EAAIorB,UAClC,KAAmB,KAAMprB,EAAI2xG,QAA7B,CAAsC,aAAc3xG,EAAI4tL,eAAiB5tL,EAAI4tL,eAAen6J,MAAQ,IAApG,CAAyG,gBAAiBzzB,EAAImuL,eAA9H,CAA8I,kBAAmBnuL,EAAIw/B,eAArK,CAAqL,WAAYx/B,EAAI61G,SAArM,CAA+M,YAAa71G,EAAIm4L,WAChO,KAAiB,GACjB,KAAkB,WAAYn4L,EAAI4yL,QAAlC,CAA2C,kBAAmB5yL,EAAImqL,gBAAlE,CAAmF,gBAAiBnqL,EAAI6yL,qBAAxG,CAA8H,oBAAqB7yL,EAAIysL,mBACvJ,KAAiB,GACjB,KAAkB,QAASzsL,EAAI4nD,UAAyB,MAAb5nD,EAAIyzB,OAC/C,KAAiB,GACjB,KAAkB,QAASzzB,EAAI4nD,UAAyB,MAAb5nD,EAAIyzB,OAC/C,KAAiB,GACjB,KAAkB,OAAQzzB,EAAI4nD,UAC9B,KAAiB,GACjB,KAAkB,OAAqB,MAAb5nD,EAAIL,OAAiBK,EAAIo4L,YAAcp4L,EAAIorB,UACrE,KAAiB,GACjB,KAAmB,gBAAiBprB,EAAImuL,gBACxC,KAAiB,GACjB,KAAkB,UAAWnuL,EAAIwyL,cACjC,KAAiB,GACjB,KAAkB,OAAQxyL,EAAImuL,kBAC7BxpL,WAAY,CAAC,IAAgB,IAAgB,EAAgB,IAAa,IAAyB,IAAgB,GAAc,IAAiC,IAAkC,KAAyBC,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAC/P,YAAQ,mBAAoB,CACxB,YAAM,OAAQ,YAAM,CAChBhC,UAAW,iBACXD,QAAS,KAEb,YAAM,UAAW,YAAM,CACnBC,UAAW,gBACXD,QAAS,KAEb,YAAW,kBAAmB,YAAQ,6BACtC,YAAW,kBAAmB,YAAQ,mC,mBAiLtD,IAAIy4J,EAAc,+C,OAElBA,EAAe55L,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK25L,IAC5EA,EAAejhL,UAAO,KAAwB,CAAExY,KAAMy5L,IACtDA,EAAehhL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAc,EAAc,IAAiB,GAAgB,EAAc,O,mBCt6BtI,IAAIghL,EAAe,+C,OAEnBA,EAAgB75L,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK45L,IAC9EA,EAAgBlhL,UAAO,KAAwB,CAAExY,KAAM05L,IACvDA,EAAgBjhL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAc,GAAgB,IAAa,GAAe,GAAgB,IAAa,K,mBCwpFnJ,IAAIihL,EAAe,+C,OAEnBA,EAAgB95L,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK65L,IAC9EA,EAAgBnhL,UAAO,KAAwB,CAAExY,KAAM25L,IACvDA,EAAgBlhL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAc,GAAiB,KAAkB,EAAc,O,wCC5+F3H,gFACa8N,EAAQ,IAAI,IAAW,SAAAqV,GAAU,OAAIA,EAAWz4B,aACvD,SAAU0vK,EAAM1nC,GAClB,OAAOA,EAEX,SAAwBA,GACpB,OAAO,IAAI,IAAW,SAAAvvG,GAAU,OAAIuvG,EAAU1nI,SAAS,kBAAMm4B,EAAWz4B,eAHrDw2L,CAAexuD,GAAa5kH,I,kFCAnD,2B,OAIC,YAAAya,UAAA,SAAUpgC,EAA4BkqL,GAErC,OADAA,EAAaA,EAAaA,EAAWvlI,oBAAsB,MAExD3kD,EAAM4T,OAAO,SAAC6C,GAAyB,OAAwD,IAAxDA,EAAEuiL,SAASr0I,oBAAoBj9C,QAAQwiL,KAC9ElqL,G,sCALQi5L,I,wCAAAA,EAAY,U,EAHzB,I,kCCAAp9J,EAAOC,QAAUo9J,gB,4mCCOXC,EAAU,IAAI,IAAQ,W,wXCiB5B,SAASC,EAAyCh5L,EAAIC,GAEpD,GAFoE,EAALD,GAC7D,KAAiB,EAAG,sBAAuB,GACpC,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAkB,QAASA,EAAOgJ,SAAW,UAAY,YAAzD,CAAsE,WAAYhJ,EAAO+G,WAE7F,SAAS4tK,EAA0Bj5L,EAAIC,GAIrC,GAJqD,EAALD,IAC9C,KAAsB,EAAG,OAAQ,GACjC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAiB,GACjB,KAA0B,IAAKA,EAAOuiC,MAAMxlH,MAAO,MAEvD,IAAMi8E,EAAM,CAAC,K,iBAWPupF,E,sDAENA,EAAgBC,eAAiB,8BACjCD,EAAgBE,mBAAqB,8BACrCF,EAAgBG,mBAAqB,4BACrCH,EAAgBI,YAAc,8B,sBAExBC,E,sDAENA,EAAmBC,QAAU,QAC7BD,EAAmBE,SAAW,QAC9BF,EAAmBG,QAAU,Q,KAavBC,EAAY,IAAI,IAAQ,WAMxBC,EAAyB,IAAI,IAAe,oBAAqB,CACnE30K,WAAY,OACZ9hB,QANJ,WACI,OAAO,K,iBAaL02L,E,8BACF,WAAYC,EAA0BC,EAAc/wJ,GAAQ,oBAExD3qC,KAAK27L,sBAAuB,EAC5B37L,KAAKkN,UAAYy9B,EAGjB8wJ,EAAyBG,uCAGzB57L,KAAK67L,cAAgBH,EAChB17L,KAAK27L,uBACN37L,KAAK87L,yBACL97L,KAAK+7L,uBACL/7L,KAAKg8L,wBACLh8L,KAAK27L,sBAAuB,I,yBAIpC,WACI,IAAM9S,EAAM7oL,KAAKkN,UAAUikB,aAAehG,OAC1C,MAAsB,iBAAR09J,GAAoBA,EAAMA,EAAM,O,+BAGlD,WAKI,OAAO,iBAAgB7oL,KAAKi8L,e,wBAGhC,WACI,IAAM9wK,EAASnrB,KAAKorB,aACpB,OAAOD,IAAWA,EAAO+wK,WAAa/wK,EAAOgxK,W,oCAEjD,WACsBn8L,KAAKo8L,uBACK,IAAvBp8L,KAAK67L,eAA0B77L,KAAK67L,cAAcQ,WACrCr8L,KAAKkN,UAAUmvL,SAC7BtxJ,QAAQ24B,KAAK,0H,kCAIrB,WAKI,GAFoB1jE,KAAKo8L,sBACG,IAAvBp8L,KAAK67L,eAA4B77L,KAAK67L,cAAc7pH,OACtChyE,KAAKkN,UAAU41B,MAAoC,mBAArB0wC,iBAAjD,CAGA,IAAM8oH,EAAct8L,KAAKkN,UAAU2K,cAAc,OACjDykL,EAAY35L,UAAUE,IAAI,2BAC1B7C,KAAKkN,UAAU41B,KAAKhrB,YAAYwkL,GAChC,IAAM/oH,EAAgBC,iBAAiB8oH,GAInC/oH,GAA2C,SAA1BA,EAAcxgE,SAC/Bg4B,QAAQ24B,KAAK,sLAIjB1jE,KAAKkN,UAAU41B,KAAKrhB,YAAY66K,M,mCAGpC,WACsBt8L,KAAKo8L,uBACK,IAAvBp8L,KAAK67L,eAA0B77L,KAAK67L,cAAc9R,UACtCuR,EAAUiB,OAAS7B,EAAU6B,MAC1CxxJ,QAAQ24B,KAAK,iCAAmC43H,EAAUiB,KAA7C,6CACqB7B,EAAU6B,KAD/B,2E,UAMzBf,EAAgBj7L,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKg7L,GAAiB,KAAgB,KAAkC,KAAgBD,EAAwB,GAAI,KAAgB,OAC7MC,EAAgBtiL,UAAO,KAAwB,CAAExY,KAAM86L,IACvDA,EAAgBriL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,KAAa,O,KA+BzE,SAASojL,EAAc58L,GACnB,mBACI,aAAmB,qDAAJC,EAAI,yBAAJA,EAAI,uBACf,qBAASA,KACJsgH,WAAY,EAFF,EADvB,2DAKI,WAAiB,OAAOngH,KAAKmgH,WALjC,IAMI,SAAa5+G,GAASvB,KAAKmgH,UAAY,YAAsB5+G,OANjE,CAAqB3B,GAkBzB,SAAS68L,EAAW78L,EAAM88L,GACtB,mBACI,aAAmB,qDAAJ78L,EAAI,yBAAJA,EAAI,uBACf,qBAASA,KACJ68L,aAAeA,EAEpB,EAAK7mI,MAAQ6mI,EAJE,EADvB,wDAOI,WAAc,OAAO18L,KAAK28L,QAP9B,IAQI,SAAUp7L,GACN,IAAMq7L,EAAer7L,GAASvB,KAAK08L,aAC/BE,IAAiB58L,KAAK28L,SAClB38L,KAAK28L,QACL38L,KAAK+M,YAAYnK,cAAcD,UAAU6I,OAAzC,cAAuDxL,KAAK28L,SAE5DC,GACA58L,KAAK+M,YAAYnK,cAAcD,UAAUE,IAAzC,cAAoD+5L,IAExD58L,KAAK28L,OAASC,OAjB1B,CAAqBh9L,GA+BzB,SAASi9L,EAAmBj9L,GAaxB,OAb4B,YAExB,aAAmB,qDAAJC,EAAI,yBAAJA,EAAI,uBACf,qBAASA,KACJi9L,gBAAiB,EAFP,EAFK,gEAOxB,WAAsB,OAAO98L,KAAK88L,gBAPV,IAQxB,SAAkBv7L,GAASvB,KAAK88L,eAAiB,YAAsBv7L,OAR/C,CACR3B,GAuBxB,SAASm9L,EAAcn9L,GAAyB,IAAnBo9L,EAAmB,uDAAD,EAGrCC,EAHsC,YAIxC,aAAmB,qDAAJp9L,EAAI,yBAAJA,EAAI,uBACf,qBAASA,KACJmzK,UAAYgqB,EACjB,EAAKA,gBAAkBA,EAHR,EAJqB,2DASxC,WAAiB,OAAOh9L,KAAKgtB,UAAY,EAAIhtB,KAAKgzK,WATV,IAUxC,SAAazxK,GAETvB,KAAKgzK,UAAqB,MAATzxK,EAAgB,YAAqBA,GAASvB,KAAKg9L,oBAZhC,CAGxBp9L,GAepB,OAAOq9L,EAcX,SAASC,EAAgBt9L,GACrB,mBACI,aAAmB,qDAAJC,EAAI,yBAAJA,EAAI,uBACf,qBAASA,KAEJu2K,YAAa,EAKlB,EAAKxC,aAAe,IAAInwK,EAAA,EART,EADvB,qEAWI,WACI,IAAM05L,EAAWn9L,KAAKo2K,WAIhBv6F,GAFU77E,KAAKq2K,mBAAqBr2K,KAAKsyK,2BAEtB8qB,aADTp9L,KAAKyyK,UAAYzyK,KAAKyyK,UAAUjkC,QAAU,KAF3CxuI,KAAKwyK,kBAAoBxyK,KAAKuyK,aAIzC12F,IAAashH,IACbn9L,KAAKo2K,WAAav6F,EAClB77E,KAAK4zK,aAAa/vK,YAnB9B,CAAqBjE,GAiCzB,SAASy9L,EAAiBz9L,GACtB,mBACI,aAAmB,qDAAJC,EAAI,yBAAJA,EAAI,uBACf,qBAASA,KAEJgiB,gBAAiB,EAMtB,EAAKy7K,oBAAsB,GAK3B,EAAKhgL,YAAc,IAAIk9G,EAAA,EAAW,SAAAj+F,GAG1B,EAAK1a,eACL,EAAK07K,kBAAkBhhK,GAGvB,EAAK+gK,oBAAoB15L,KAAK24B,KArBvB,EADvB,qEA+BI,WAKIv8B,KAAK6hB,gBAAiB,EACtB7hB,KAAKs9L,oBAAoBjqL,QAAQrT,KAAKu9L,mBACtCv9L,KAAKs9L,oBAAsB,OAtCnC,+BAyCI,SAAkB/gK,GACdA,EAAW14B,OACX04B,EAAWz4B,eA3CnB,CAAqBlE,GAgEzB,IAqHI49L,EArHEC,EAAkB,IAAI,IAAe,kBAAmB,CAC1D72K,WAAY,OACZ9hB,QAGJ,WACI,OAAO,aAAO,QAGZ,E,8BACF,iCACI9E,KAAK09L,eAAiB,IAAIj6L,EAAA,EAE1BzD,KAAK29L,cAAgB39L,KAAK09L,gB,iCAQ9B,SAAmB3/K,GACf,OAAO/d,KAAK49L,eAAe7/K,IAAQ/d,KAAKwkF,QAAQzmE,GAAOA,EAAM,O,yBAcjE,SAAYxc,GACR,OAAa,MAATA,GAAiBvB,KAAK49L,eAAer8L,IAAUvB,KAAKwkF,QAAQjjF,GACrDA,EAEJvB,KAAK2vH,Y,uBAMhB,SAAUxqE,GACNnlD,KAAKmlD,OAASA,EACdnlD,KAAK09L,eAAe75L,S,yBASxB,SAAY7B,EAAOm9C,GACf,OAAOn/C,KAAKuqE,QAAQvoE,GAAShC,KAAKuqE,QAAQprB,IACtCn/C,KAAKm6C,SAASn4C,GAAShC,KAAKm6C,SAASgF,IACrCn/C,KAAKo6C,QAAQp4C,GAAShC,KAAKo6C,QAAQ+E,K,sBAS3C,SAASn9C,EAAOm9C,GACZ,GAAIn9C,GAASm9C,EAAQ,CACjB,IAAI0+I,EAAa79L,KAAKwkF,QAAQxiF,GAC1B87L,EAAc99L,KAAKwkF,QAAQrlC,GAC/B,OAAI0+I,GAAcC,GACN99L,KAAK+9L,YAAY/7L,EAAOm9C,GAE7B0+I,GAAcC,EAEzB,OAAO97L,GAASm9C,I,uBAUpB,SAAUlF,EAAMv7B,EAAKokC,GACjB,OAAIpkC,GAAO1e,KAAK+9L,YAAY9jJ,EAAMv7B,GAAO,EAC9BA,EAEPokC,GAAO9iD,KAAK+9L,YAAY9jJ,EAAM6I,GAAO,EAC9BA,EAEJ7I,M,GAWT+jJ,EAAmB,IAAI,IAAe,oBAiB5C,IACIR,EAAmC,oBAAR73I,KAE/B,MAAOh7C,IACH6yL,GAAoB,EAGxB,IAAMS,EAAsB,CACxB,KAAQ,CACJ,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAC1E,UAAW,WAAY,YAE3B,MAAS,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACvF,OAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAIhEC,EAAqB9iJ,EAAM,GAFtB,SAAAvzC,GAAC,OAAIwnC,OAAOxnC,EAAI,KAIrBs2L,EAA4B,CAC9B,KAAQ,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC3E,MAAS,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACpD,OAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAOvCC,EAAiB,qFAEvB,SAAShjJ,EAAMj3C,EAAQk6L,GAEnB,IADA,IAAMC,EAAc/zL,MAAMpG,GACjB0D,EAAI,EAAGA,EAAI1D,EAAQ0D,IACxBy2L,EAAYz2L,GAAKw2L,EAAcx2L,GAEnC,OAAOy2L,E,qBAGLC,E,YACF,WAAYC,EAAex3K,GAAQ,kCAC/B,aAYKy3K,kBAAmB,EACxB,sBAAgBD,IAEhB,EAAKC,kBAAoBz3K,EAAS03K,QAClC,EAAKC,WAAa33K,EAAS03K,SAAW13K,EAAS43K,KAjBhB,E,4DAmBnC,SAAQ3kJ,GACJ,OAAOA,EAAKC,gB,sBAEhB,SAASD,GACL,OAAOA,EAAKE,a,qBAEhB,SAAQF,GACJ,OAAOA,EAAKG,Y,0BAEhB,SAAaH,GACT,OAAOA,EAAK0nE,W,2BAEhB,SAAcp2G,GAAK,WACf,GAAIiyL,EAAmB,CACnB,IAAMqB,EAAM,IAAIl5I,KAAKC,eAAe5lD,KAAKmlD,OAAQ,CAAEliC,MAAO1X,EAAOi6C,SAAU,QAC3E,OAAOpK,EAAM,GAAI,SAAAvzC,GAAC,OAAI,EAAKi3L,+BAA+B,EAAKC,QAAQF,EAAK,IAAInkJ,KAAK,KAAM7yC,EAAG,OAElG,OAAOo2L,EAAoB1yL,K,0BAE/B,WAAY,WACR,GAAIiyL,EAAmB,CACnB,IAAMqB,EAAM,IAAIl5I,KAAKC,eAAe5lD,KAAKmlD,OAAQ,CAAErT,IAAK,UAAW0T,SAAU,QAC7E,OAAOpK,EAAM,GAAI,SAAAvzC,GAAC,OAAI,EAAKi3L,+BAA+B,EAAKC,QAAQF,EAAK,IAAInkJ,KAAK,KAAM,EAAG7yC,EAAI,OAEtG,OAAOq2L,I,+BAEX,SAAkB3yL,GAAK,WACnB,GAAIiyL,EAAmB,CACnB,IAAMqB,EAAM,IAAIl5I,KAAKC,eAAe5lD,KAAKmlD,OAAQ,CAAEhD,QAAS52C,EAAOi6C,SAAU,QAC7E,OAAOpK,EAAM,EAAG,SAAAvzC,GAAC,OAAI,EAAKi3L,+BAA+B,EAAKC,QAAQF,EAAK,IAAInkJ,KAAK,KAAM,EAAG7yC,EAAI,OAErG,OAAOs2L,EAA0B5yL,K,yBAErC,SAAY0uC,GACR,GAAIujJ,EAAmB,CACnB,IAAMqB,EAAM,IAAIl5I,KAAKC,eAAe5lD,KAAKmlD,OAAQ,CAAE3L,KAAM,UAAWgM,SAAU,QAC9E,OAAOxlD,KAAK8+L,+BAA+B9+L,KAAK++L,QAAQF,EAAK5kJ,IAEjE,OAAO5K,OAAOrvC,KAAKuqE,QAAQtwB,M,+BAE/B,WAEI,OAAO,I,+BAEX,SAAkBA,GACd,OAAOj6C,KAAKo6C,QAAQp6C,KAAKg/L,wBAAwBh/L,KAAKuqE,QAAQtwB,GAAOj6C,KAAKm6C,SAASF,GAAQ,EAAG,M,mBAElG,SAAMA,GACF,OAAO,IAAIS,KAAKT,EAAKinE,a,wBAEzB,SAAW1nE,EAAMv2B,EAAOg3B,GAWpB,IAAIrd,EAAS58B,KAAKg/L,wBAAwBxlJ,EAAMv2B,EAAOg3B,GAKvD,OAHIrd,EAAOud,WAGJvd,I,mBAEX,WACI,OAAO,IAAI8d,O,mBAEf,SAAMn5C,GAGF,MAAoB,iBAATA,EACA,IAAIm5C,KAAKn5C,GAEbA,EAAQ,IAAIm5C,KAAKA,KAAKvgB,MAAM54B,IAAU,O,oBAEjD,SAAO04C,EAAMglJ,GACT,IAAKj/L,KAAKwkF,QAAQvqC,GACd,MAAM5lB,MAAM,kDAEhB,GAAImpK,EAAmB,CAGfx9L,KAAK2+L,aAAe1kJ,EAAKC,cAAgB,GAAKD,EAAKC,cAAgB,QACnED,EAAOj6C,KAAK4jJ,MAAM3pG,IACbknE,YAAY5iG,KAAKukC,IAAI,EAAGvkC,KAAKG,IAAI,KAAMu7B,EAAKC,iBAErD+kJ,EAAgBziL,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIk4J,GAAgB,CAAEz5I,SAAU,QAC5E,IAAMq5I,EAAM,IAAIl5I,KAAKC,eAAe5lD,KAAKmlD,OAAQ85I,GACjD,OAAOj/L,KAAK8+L,+BAA+B9+L,KAAK++L,QAAQF,EAAK5kJ,IAEjE,OAAOj6C,KAAK8+L,+BAA+B7kJ,EAAKilJ,kB,8BAEpD,SAAiBjlJ,EAAM2E,GACnB,OAAO5+C,KAAKm/L,kBAAkBllJ,EAAc,GAAR2E,K,+BAExC,SAAkB3E,EAAMr3B,GACpB,IAAI2iG,EAAUvlH,KAAKg/L,wBAAwBh/L,KAAKuqE,QAAQtwB,GAAOj6C,KAAKm6C,SAASF,GAAQr3B,EAAQ5iB,KAAKo6C,QAAQH,IAQ1G,OAHIj6C,KAAKm6C,SAASorE,MAAcvlH,KAAKm6C,SAASF,GAAQr3B,GAAU,GAAK,IAAM,KACvE2iG,EAAUvlH,KAAKg/L,wBAAwBh/L,KAAKuqE,QAAQg7C,GAAUvlH,KAAKm6C,SAASorE,GAAU,IAEnFA,I,6BAEX,SAAgBtrE,EAAML,GAClB,OAAO55C,KAAKg/L,wBAAwBh/L,KAAKuqE,QAAQtwB,GAAOj6C,KAAKm6C,SAASF,GAAOj6C,KAAKo6C,QAAQH,GAAQL,K,uBAEtG,SAAUK,GACN,MAAO,CACHA,EAAKd,iBACLn5C,KAAKo/L,QAAQnlJ,EAAKb,cAAgB,GAClCp5C,KAAKo/L,QAAQnlJ,EAAKZ,eACpBrJ,KAAK,O,yBAOX,SAAYzuC,GACR,GAAqB,iBAAVA,EAAoB,CAC3B,IAAKA,EACD,OAAO,KAIX,GAAI68L,EAAep7K,KAAKzhB,GAAQ,CAC5B,IAAI04C,EAAO,IAAIS,KAAKn5C,GACpB,GAAIvB,KAAKwkF,QAAQvqC,GACb,OAAOA,GAInB,kCAAyB14C,M,4BAE7B,SAAewc,GACX,OAAOA,aAAe28B,O,qBAE1B,SAAQT,GACJ,OAAQgB,MAAMhB,EAAKinE,a,qBAEvB,WACI,OAAO,IAAIxmE,KAAK+jF,O,qCAGpB,SAAwBjlF,EAAMv2B,EAAOg3B,GAGjC,IAAMjiC,EAAI,IAAI0iC,KAGd,OAFA1iC,EAAEmpG,YAAY3nE,EAAMv2B,EAAOg3B,GAC3BjiC,EAAEqnL,SAAS,EAAG,EAAG,EAAG,GACbrnL,I,qBAOX,SAAQ+/B,GACJ,OAAQ,KAAOA,GAAGvuC,OAAO,K,4CAS7B,SAA+BklC,GAC3B,OAAOA,EAAIltC,QAAQ,kBAAmB,M,qBAa1C,SAAQq9L,EAAK5kJ,GAGT,IAAMjiC,EAAI,IAAI0iC,KAGd,OAFA1iC,EAAEsnL,eAAerlJ,EAAKC,cAAeD,EAAKE,WAAYF,EAAKG,WAC3DpiC,EAAEunL,YAAYtlJ,EAAKI,WAAYJ,EAAKK,aAAcL,EAAKM,aAAcN,EAAKO,mBACnEqkJ,EAAI97K,OAAO/K,O,CAtNM,G,OAyNhCumL,EAAkBh+L,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAK+9L,GAAmB,KAAgBd,EAAiB,GAAI,KAAgB,OAC1Jc,EAAkB35L,WAAQ,KAA0B,CAAEC,MAAO05L,EAAmBz5L,QAASy5L,EAAkBh+L,Y,sBAwCrGi/L,E,sDAENA,EAAiBj/L,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKg/L,IAChFA,EAAiBtmL,UAAO,KAAwB,CAAExY,KAAM8+L,IACxDA,EAAiBrmL,UAAO,KAAwB,CAAEgZ,UAAW,CACrD,CAAE5vB,QAAS,EAAaoW,SAAU,IACnCS,QAAS,CAAC,CAAC,Q,KAWZgiI,EApC0B,CAC5BjhH,MAAO,CACHslK,UAAW,MAEf1sL,QAAS,CACL0sL,UAAW,CAAEjmJ,KAAM,UAAWv2B,MAAO,UAAW6uB,IAAK,WACrD4tJ,eAAgB,CAAElmJ,KAAM,UAAWv2B,MAAO,SAC1C08K,cAAe,CAAEnmJ,KAAM,UAAWv2B,MAAO,OAAQ6uB,IAAK,WACtD8tJ,mBAAoB,CAAEpmJ,KAAM,UAAWv2B,MAAO,U,iBA6BhD48K,E,sDAENA,EAAoBt/L,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKq/L,IACtFA,EAAoB3mL,UAAO,KAAwB,CAAExY,KAAMm/L,IAC3DA,EAAoB1mL,UAAO,KAAwB,CAAEgZ,UAAW,CAAC,CAAE5vB,QAASy7L,EAAkBplL,SAAUwiI,IAAShiI,QAAS,CAAC,CAAC,M,sBA6BtH0mL,E,2FACF,SAAatxD,EAASoG,GAClB,SAAUpG,GAAWA,EAAQ7e,UAAY6e,EAAQ3O,SAAY+U,GAAQA,EAAK4F,gB,UAGlFslD,EAAkBv/L,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKs/L,IAClFA,EAAkBl7L,WAAQ,aAAmB,CAAEE,QAAS,WAAuC,OAAO,IAAIg7L,GAAwBj7L,MAAOi7L,EAAmBl5K,WAAY,S,sBAkBlKm5K,E,sDAENA,EAAQx/L,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKu/L,IAC9DA,EAAQt/L,UAAO,KAAyB,CAAEC,KAAMq/L,EAASp/L,UAAW,CAAC,CAAC,GAAI,WAAY,IAAK,CAAC,GAAI,UAAW,KAAMoC,UAAW,CAAC,EAAG,c,KAYhI,SAASi9L,EAASC,EAAO50L,GAAuB,IAAdouE,EAAc,uDAAL,MAGvCwmH,EAAMh7L,QAAQjB,KAAK,OAAAm1J,EAAA,GAAU8mC,IAAQ/7L,UAAU,YAAe,IAAZC,EAAY,EAAZA,OAC9C+7L,GAAS70L,EAAD,UAAaouE,EAAb,YAA8B,GACtCymH,GAAS70L,EAAD,UAAaouE,EAAb,YAA8B,GACtCymH,GAAS70L,EAAD,UAAaouE,EAAb,gBAAkC,GAC3B,IAAXt1E,GAA2B,IAAXA,EAChB+7L,GAAS70L,EAAD,UAAaouE,EAAb,YAAuBt1E,EAAvB,UAAsC,GAEzCA,EAAS,GACd+7L,GAAS70L,EAAD,UAAaouE,EAAb,gBAAkC,KAKtD,SAASymH,GAAS70L,EAASwc,EAAWs4K,GAClC,IAAMx9L,EAAY0I,EAAQzI,cAAcD,UACxCw9L,EAAQx9L,EAAUE,IAAIglB,GAAallB,EAAU6I,OAAOqc,G,sBAElDu4K,E,sDAENA,EAAc7/L,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK4/L,IAC1EA,EAAclnL,UAAO,KAAwB,CAAExY,KAAM0/L,IACrDA,EAAcjnL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,GAAkB,K,KAqBtE,G,8BACF,WAAYy1G,EAEZxjH,EAEA+sB,GAAM,oBACFp4B,KAAK6uH,UAAYA,EACjB7uH,KAAKqL,QAAUA,EACfrL,KAAKo4B,OAASA,EAEdp4B,KAAKqI,MAAQ,G,sBAGjB,WACIrI,KAAK6uH,UAAUwxE,cAAcrgM,U,GAQ/BsgM,GAA+B,CACjC9uF,cAAe,IACf+uF,aAAc,KAQZC,GAAsB,YAAgC,CAAEh8C,SAAS,IAEjEi8C,GAAoB,CAAC,YAAa,cAElCC,GAAkB,CAAC,UAAW,aAAc,WAAY,eAQxD,G,8BACF,WAAYC,EAASr9L,EAASs9L,EAAqB55K,GAAQ,oBACvDhnB,KAAK2gM,QAAUA,EACf3gM,KAAKsD,QAAUA,EAEftD,KAAK6gM,gBAAiB,EAEtB7gM,KAAK8gM,eAAiB,IAAInzL,IAE1B3N,KAAK+gM,4BAA6B,EAE9B/5K,EAAS/O,YACTjY,KAAK2/J,kBAAoB,YAAcihC,K,2BAS/C,SAAarlK,EAAGjW,GAAc,WAAX8S,EAAW,uDAAF,GAClBkwJ,EAAgBtoL,KAAKghM,eACvBhhM,KAAKghM,gBAAkBhhM,KAAK2/J,kBAAkBl1J,wBAC5Cw2L,EAAkBzkL,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIu5J,IAA+BloK,EAAOuL,WAC1FvL,EAAOs+F,WACPn7F,EAAI+sJ,EAAcr8K,KAAOq8K,EAAc5+K,MAAQ,EAC/C4b,EAAIgjK,EAAcv8K,IAAMu8K,EAAc99K,OAAS,GAEnD,IAAM02L,EAAS9oK,EAAO8oK,QAAUC,GAAyB5lK,EAAGjW,EAAGgjK,GACzD8Y,EAAU7lK,EAAI+sJ,EAAcr8K,KAC5Bo1L,EAAU/7K,EAAIgjK,EAAcv8K,IAC5ByxC,EAAWyjJ,EAAgBzvF,cAC3B8vF,EAAS32J,SAAS9yB,cAAc,OACtCypL,EAAO3+L,UAAUE,IAAI,sBACrBy+L,EAAO/1L,MAAMU,KAAb,UAAuBm1L,EAAUF,EAAjC,MACAI,EAAO/1L,MAAMQ,IAAb,UAAsBs1L,EAAUH,EAAhC,MACAI,EAAO/1L,MAAMf,OAAb,UAAkC,EAAT02L,EAAzB,MACAI,EAAO/1L,MAAM7B,MAAb,UAAiC,EAATw3L,EAAxB,MAGoB,MAAhB9oK,EAAOy9B,QACPyrI,EAAO/1L,MAAMuqD,gBAAkB19B,EAAOy9B,OAE1CyrI,EAAO/1L,MAAMg2L,mBAAb,UAAqC/jJ,EAArC,MACAx9C,KAAK2/J,kBAAkB7nJ,YAAYwpL,GAGnCE,GAA0BF,GAC1BA,EAAO/1L,MAAMo2B,UAAY,WAEzB,IAAM8/J,EAAY,IAAI,GAAUzhM,KAAMshM,EAAQlpK,GAoB9C,OAnBAqpK,EAAUp5L,MAAQ,EAElBrI,KAAK8gM,eAAej+L,IAAI4+L,GACnBrpK,EAAOspK,aACR1hM,KAAK2hM,2BAA6BF,GAItCzhM,KAAK4hM,uBAAuB,WACxB,IAAMC,EAA8BJ,IAAc,EAAKE,2BACvDF,EAAUp5L,MAAQ,EAKb+vB,EAAOspK,YAAgBG,GAAgC,EAAKhB,gBAC7DY,EAAUK,WAEftkJ,GACIikJ,I,2BAGX,SAAcA,GACV,IAAMM,EAAY/hM,KAAK8gM,eAAevuL,OAAOkvL,GAS7C,GARIA,IAAczhM,KAAK2hM,6BACnB3hM,KAAK2hM,2BAA6B,MAGjC3hM,KAAK8gM,eAAe3gK,OACrBngC,KAAKghM,eAAiB,MAGrBe,EAAL,CAGA,IAAMC,EAAWP,EAAUp2L,QACrB41L,EAAkBzkL,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIu5J,IAA+BmB,EAAUrpK,OAAOuL,WACxGq+J,EAASz2L,MAAMg2L,mBAAf,UAAuCN,EAAgBV,aAAvD,MACAyB,EAASz2L,MAAMm2B,QAAU,IACzB+/J,EAAUp5L,MAAQ,EAElBrI,KAAK4hM,uBAAuB,WACxBH,EAAUp5L,MAAQ,EAClB25L,EAASthL,WAAWe,YAAYugL,IACjCf,EAAgBV,iB,wBAGvB,WACIvgM,KAAK8gM,eAAeztL,QAAQ,SAAAiuL,GAAM,OAAIA,EAAOQ,c,qCAGjD,WACI9hM,KAAK8gM,eAAeztL,QAAQ,SAAAiuL,GACnBA,EAAOlpK,OAAOspK,YACfJ,EAAOQ,c,gCAKnB,SAAmBlB,GACf,IAAMv1L,EAAU,YAAcu1L,GACzBv1L,GAAWA,IAAYrL,KAAKiiM,kBAIjCjiM,KAAKuxK,uBACLvxK,KAAKiiM,gBAAkB52L,EACvBrL,KAAKkiM,gBAAgBzB,O,yBAMzB,SAAYn4K,GACW,cAAfA,EAAM5nB,KACNV,KAAKmiM,aAAa75K,GAEE,eAAfA,EAAM5nB,KACXV,KAAKoiM,cAAc95K,GAGnBtoB,KAAKqiM,eAKJriM,KAAK+gM,6BACN/gM,KAAKkiM,gBAAgBxB,IACrB1gM,KAAK+gM,4BAA6B,K,0BAI1C,SAAaz4K,GAGT,IAAMg6K,EAAkB,YAAgCh6K,GAClDsjI,EAAmB5rJ,KAAKuiM,sBAC1B7nJ,KAAKqR,MAAQ/rD,KAAKuiM,qBAnKG,IAoKpBviM,KAAK2gM,QAAQ6B,gBAAmBF,GAAoB12C,IACrD5rJ,KAAK6gM,gBAAiB,EACtB7gM,KAAKyiM,aAAan6K,EAAMo6K,QAASp6K,EAAMq6K,QAAS3iM,KAAK2gM,QAAQ3vB,iB,2BAIrE,SAAc1oJ,GACV,IAAKtoB,KAAK2gM,QAAQ6B,iBAAmB,YAAiCl6K,GAAQ,CAI1EtoB,KAAKuiM,qBAAuB7nJ,KAAKqR,MACjC/rD,KAAK6gM,gBAAiB,EAItB,IADA,IAAM/xC,EAAUxmI,EAAMymI,eACblnJ,EAAI,EAAGA,EAAIinJ,EAAQ3qJ,OAAQ0D,IAChC7H,KAAKyiM,aAAa3zC,EAAQjnJ,GAAG66L,QAAS5zC,EAAQjnJ,GAAG86L,QAAS3iM,KAAK2gM,QAAQ3vB,iB,0BAKnF,WACShxK,KAAK6gM,iBAGV7gM,KAAK6gM,gBAAiB,EAEtB7gM,KAAK8gM,eAAeztL,QAAQ,SAAAiuL,IAKnBA,EAAOlpK,OAAOspK,aAFgB,IAAjBJ,EAAOj5L,OACrBi5L,EAAOlpK,OAAOwqK,sBAAyC,IAAjBtB,EAAOj5L,QAE7Ci5L,EAAOQ,e,oCAKnB,SAAuB9yL,GAAa,IAATo+E,EAAS,uDAAD,EAC/BptF,KAAKsD,QAAQ+nB,kBAAkB,kBAAMuZ,WAAW51B,EAAIo+E,O,6BAGxD,SAAgBy1G,GAAU,WACtB7iM,KAAKsD,QAAQ+nB,kBAAkB,WAC3Bw3K,EAAWxvL,QAAQ,SAAC3S,GAChB,EAAKuhM,gBAAgB32K,iBAAiB5qB,EAAM,EAAM8/L,U,kCAK9D,WAAoB,WACZxgM,KAAKiiM,kBACLxB,GAAkBptL,QAAQ,SAAC3S,GACvB,EAAKuhM,gBAAgBt2K,oBAAoBjrB,EAAM,EAAM8/L,MAErDxgM,KAAK+gM,4BACLL,GAAgBrtL,QAAQ,SAAC3S,GACrB,EAAKuhM,gBAAgBt2K,oBAAoBjrB,EAAM,EAAM8/L,W,GAOzE,SAASgB,GAA0Bn2L,GAI/B8f,OAAOqoD,iBAAiBnoE,GAASg3I,iBAAiB,WAKtD,SAAS8+C,GAAyB5lK,EAAGjW,EAAGyoD,GACpC,IAAM+0H,EAAQvkL,KAAKukC,IAAIvkC,KAAKqiC,IAAIrlB,EAAIwyC,EAAK9hE,MAAOsS,KAAKqiC,IAAIrlB,EAAIwyC,EAAK7hE,QAC5D62L,EAAQxkL,KAAKukC,IAAIvkC,KAAKqiC,IAAIt7B,EAAIyoD,EAAKhiE,KAAMwS,KAAKqiC,IAAIt7B,EAAIyoD,EAAK/hE,SACjE,OAAOuS,KAAKykL,KAAKF,EAAQA,EAAQC,EAAQA,GAW7C,IAAME,GAA4B,IAAI,IAAe,6B,kBAC/CC,E,8BACF,WAAYn2L,EAAau1H,EAAQt7G,EAAUm8K,EAAehxF,GAAc,oBACpEnyG,KAAK+M,YAAcA,EACnB/M,KAAKmyG,eAAiBA,EAMtBnyG,KAAKkhM,OAAS,EACdlhM,KAAKmgH,WAAY,EAEjBngH,KAAK6hB,gBAAiB,EACtB7hB,KAAKojM,eAAiBD,GAAiB,GACvCnjM,KAAKqjM,gBAAkB,IAAI,GAAerjM,KAAMsiI,EAAQv1H,EAAaia,I,qBAMzE,WAAiB,OAAOhnB,KAAKmgH,W,IAC7B,SAAa5+G,GACLA,GACAvB,KAAKsjM,0BAETtjM,KAAKmgH,UAAY5+G,EACjBvB,KAAKujM,iC,mBAMT,WAAgB,OAAOvjM,KAAKwjM,UAAYxjM,KAAK+M,YAAYnK,e,IACzD,SAAY27D,GACRv+D,KAAKwjM,SAAWjlI,EAChBv+D,KAAKujM,iC,sBAET,WACIvjM,KAAK6hB,gBAAiB,EACtB7hB,KAAKujM,iC,yBAET,WACIvjM,KAAKqjM,gBAAgB9xB,yB,wBAGzB,WACIvxK,KAAKqjM,gBAAgBI,e,qCAGzB,WACIzjM,KAAKqjM,gBAAgBC,4B,wBAMzB,WACI,MAAO,CACH5sE,SAAU12H,KAAK02H,SACfwqE,OAAQlhM,KAAKkhM,OACbrrI,MAAO71D,KAAK61D,MACZlyB,UAAWnnB,OAAOuqB,OAAOvqB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAKojM,eAAez/J,WAAqC,mBAAxB3jC,KAAKmyG,eAAsC,CAAEX,cAAe,EAAG+uF,aAAc,GAAM,IAAMvgM,KAAK2jC,WACxLi/J,qBAAsB5iM,KAAKojM,eAAeR,wB,0BAOlD,WACI,OAAO5iM,KAAKgtB,YAAchtB,KAAKojM,eAAep2K,W,0CAGlD,YACShtB,KAAKgtB,UAAYhtB,KAAK6hB,gBACvB7hB,KAAKqjM,gBAAgBtyB,mBAAmB/wK,KAAKu+D,W,oBAIrD,SAAOmlI,GAAwB,IAAbp+K,EAAa,uDAAT,EAAG8S,EAAM,uCAC3B,MAAyB,iBAAdsrK,EACA1jM,KAAKqjM,gBAAgBZ,aAAaiB,EAAWp+K,EAAG9I,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAKgxK,cAAe54I,IAGpGp4B,KAAKqjM,gBAAgBZ,aAAa,EAAG,EAAGjmL,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAKgxK,cAAe0yB,Q,UAI/GR,EAAU3iM,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAK0iM,GAAW,KAAyB,KAAoB,KAAyB,KAAgB,KAAyB,KAAkB,KAAyBD,GAA2B,GAAI,KAAyB,IAAuB,KACtTC,EAAUziM,UAAO,KAAyB,CAAEC,KAAMwiM,EAAWviM,UAAW,CAAC,CAAC,GAAI,aAAc,IAAK,CAAC,GAAI,YAAa,KAAMoC,UAAW,CAAC,EAAG,cAAewV,SAAU,EAAGC,aAAc,SAAgC7W,EAAIC,GAAgB,EAALD,GACzN,KAAmB,uBAAwBC,EAAI+hM,YAC9CxhM,OAAQ,CAAE++L,OAAQ,CAAC,kBAAmB,UAAWl0K,SAAU,CAAC,oBAAqB,YAAauxC,QAAS,CAAC,mBAAoB,WAAY1I,MAAO,CAAC,iBAAkB,SAAU8tI,UAAW,CAAC,qBAAsB,aAAcjtE,SAAU,CAAC,oBAAqB,YAAa/yF,UAAW,CAAC,qBAAsB,cAAgBjrB,SAAU,CAAC,e,uBAmEzUkrL,E,sDAENA,EAAgBrjM,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKojM,IAC9EA,EAAgB1qL,UAAO,KAAwB,CAAExY,KAAMkjM,IACvDA,EAAgBzqL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,EAAiB,KAAiB,K,uBA+BxFyqL,E,YACF,WAAY1xF,GAAc,oBACtBnyG,KAAKmyG,eAAiBA,EAEtBnyG,KAAKqI,MAAQ,YAEbrI,KAAKgtB,UAAW,I,OAGxB62K,EAAkBtjM,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKqjM,GAAmB,KAAyB,IAAuB,KACrJA,EAAkB19L,UAAO,KAAyB,CAAEzF,KAAMmjM,EAAmBljM,UAAW,CAAC,CAAC,wBAAyBoC,UAAW,CAAC,EAAG,uBAAwBwV,SAAU,EAAGC,aAAc,SAAwC7W,EAAIC,GAAgB,EAALD,GACpO,KAAmB,oCAAmD,kBAAdC,EAAIyG,MAA5D,CAAuF,8BAA6C,YAAdzG,EAAIyG,MAA1H,CAA+I,+BAAgCzG,EAAIorB,SAAnL,CAA6L,0BAAkD,mBAAvBprB,EAAIuwG,iBAC3NhwG,OAAQ,CAAEkG,MAAO,QAAS2kB,SAAU,YAAc5mB,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAoCqB,EAAIC,KAAUkX,OAAQ,CAAC,whCAA2hCtS,cAAe,EAAGwiB,gBAAiB,I,uBA0C3sC86K,E,sDAENA,EAAwBvjM,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKsjM,IAC9FA,EAAwB5qL,UAAO,KAAwB,CAAExY,KAAMojM,IAC/DA,EAAwB3qL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,M,KAqB9D2qL,GAA8B,IAAI,IAAe,+BAgCjDC,GAAwBxH,E,gDAE1ByH,GAA2B,E,kBACzBC,E,YACF,WAAYt9J,GAAM,MACVj8B,EADU,4BAEd,aAEKw5L,SAAL,6BAAsCF,MACtC,EAAKG,OAAuF,QAA7Ez5L,EAAKi8B,aAAuC,EAASA,EAAOlf,mBAAgC,IAAP/c,GAAgBA,EALtG,E,wCADSq5L,I,OAS/BE,EAAiB3jM,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK0jM,GAAkB,KAAyBH,GAA6B,KACxJG,EAAiBzjM,UAAO,KAAyB,CAAEC,KAAMwjM,EAAkB/hM,OAAQ,CAAEkzB,MAAO,SAAW/yB,SAAU,CAAC,Q,KAsB5G+hM,GAAe,IAAI,IAAe,eAuDpCrsC,GAAmB,EAEjB,G,YACF,WAEAzxI,GAEmB,IAAnBirJ,EAAmB,4EACfxxK,KAAKumB,OAASA,EACdvmB,KAAKwxK,YAAcA,I,kBAGrB8yB,E,8BACF,WAAY16K,EAAU9c,EAAoB0kI,EAASqJ,GAAK,oBACpD76I,KAAK4pB,SAAWA,EAChB5pB,KAAK8M,mBAAqBA,EAC1B9M,KAAKwxI,QAAUA,EACfxxI,KAAK66I,MAAQA,EACb76I,KAAK4/B,WAAY,EACjB5/B,KAAKukM,SAAU,EACfvkM,KAAKmgH,WAAY,EACjBngH,KAAKwkM,qBAAuB,GAE5BxkM,KAAKgmB,GAAL,qBAAwBgyI,MAGxBh4J,KAAKirB,kBAAoB,IAAI,IAE7BjrB,KAAK+6J,cAAgB,IAAIt3J,EAAA,G,qBAG7B,WAAiB,OAAOzD,KAAKwxI,SAAWxxI,KAAKwxI,QAAQ8hC,W,oBAErD,WAAiB,OAAOtzK,KAAK4/B,Y,oBAE7B,WAAiB,OAAQ5/B,KAAK66I,OAAS76I,KAAK66I,MAAM7tH,UAAahtB,KAAKmgH,W,IACpE,SAAa5+G,GAASvB,KAAKmgH,UAAY,YAAsB5+G,K,yBAE7D,WAAsB,OAAOvB,KAAKwxI,SAAWxxI,KAAKwxI,QAAQzoH,gB,kBAO1D,WACI,OAAO/oB,KAAKukM,U,qBAMhB,WAEI,OAAQvkM,KAAKsxB,kBAAkBkiF,aAAe,IAAI12F,S,oBAGtD,WACS9c,KAAK4/B,YACN5/B,KAAK4/B,WAAY,EACjB5/B,KAAK8M,mBAAmBkK,eACxBhX,KAAKykM,+B,sBAIb,WACQzkM,KAAK4/B,YACL5/B,KAAK4/B,WAAY,EACjB5/B,KAAK8M,mBAAmBkK,eACxBhX,KAAKykM,+B,mBAIb,SAAMC,EAAS18K,GAGX,IAAM3c,EAAUrL,KAAKsxB,kBACQ,mBAAlBjmB,EAAQyjB,OACfzjB,EAAQyjB,MAAM9G,K,6BAQtB,WACShoB,KAAKukM,UACNvkM,KAAKukM,SAAU,EACfvkM,KAAK8M,mBAAmBkK,kB,+BAQhC,WACQhX,KAAKukM,UACLvkM,KAAKukM,SAAU,EACfvkM,KAAK8M,mBAAmBkK,kB,sBAIhC,WACI,OAAOhX,KAAK2kM,Y,4BAGhB,SAAer8K,GACNA,EAAM2E,UAAY,KAAS3E,EAAM2E,UAAY,KAAW,YAAe3E,KACxEtoB,KAAKotB,wBAEL9E,EAAM4E,oB,mCAOd,WACSltB,KAAKgtB,WACNhtB,KAAK4/B,WAAY5/B,KAAKszK,WAAYtzK,KAAK4/B,UACvC5/B,KAAK8M,mBAAmBkK,eACxBhX,KAAKykM,2BAA0B,M,8BASvC,WACI,OAAOzkM,KAAKivB,WAAajvB,KAAKszK,UAAmB,O,0BAGrD,WACI,OAAOtzK,KAAKgtB,SAAW,KAAO,M,6BAGlC,WACI,OAAOhtB,KAAK4pB,SAAShnB,gB,gCAEzB,WAMI,GAAI5C,KAAK4/B,UAAW,CAChB,IAAM+kK,EAAY3kM,KAAK2kM,UACnBA,IAAc3kM,KAAKwkM,uBACnBxkM,KAAKwkM,qBAAuBG,EAC5B3kM,KAAK+6J,cAAcl3J,W,yBAI/B,WACI7D,KAAK+6J,cAAcj3J,a,uCAGvB,WAA6C,IAAnB0tK,EAAmB,wDACzCxxK,KAAKirB,kBAAkB/I,KAAK,IAAI,GAAyBliB,KAAMwxK,Q,UAGvE8yB,EAAe/jM,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK8jM,GAAgB,KAAyB,KAAoB,KAAyB,KAA2B,UAAyB7/L,GAAY,KAAyB,MAC3P6/L,EAAe7jM,UAAO,KAAyB,CAAEC,KAAM4jM,EAAgBniM,OAAQ,CAAE6jB,GAAI,KAAMgH,SAAU,WAAYzrB,MAAO,SAAW4gB,QAAS,CAAE8I,kBAAmB,uB,uBA2B3J25K,E,YACF,WAAYv5L,EAASklH,EAAmB3pF,EAAQi0G,GAAK,qCAC3CxvI,EAASklH,EAAmB3pF,EAAQi0G,I,wCAF1B,I,OAKxB+pD,EAAUrkM,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKokM,GAAW,KAAyB,KAAoB,KAAyB,KAA2B,KAAyBb,GAA6B,GAAI,KAAyBM,GAAc,KAC/QO,EAAUz+L,UAAO,KAAyB,CAAEzF,KAAMkkM,EAAWjkM,UAAW,CAAC,CAAC,eAAgBoC,UAAW,CAAC,OAAQ,SAAU,EAAG,aAAc,uBAAwBwV,SAAU,GAAIC,aAAc,SAAgC7W,EAAIC,GAAgB,EAALD,GACpO,KAAkB,QAAS,WAAgD,OAAOC,EAAIwrB,yBAAtF,CAAkH,UAAW,SAA8C0E,GAAU,OAAOlwB,EAAIowB,eAAeF,KACxM,EAALnwB,IACF,KAAsB,KAAMC,EAAIokB,IAChC,KAAmB,WAAYpkB,EAAIijM,eAAnC,CAAmD,gBAAiBjjM,EAAIkjM,mBAAxE,CAA4F,gBAAiBljM,EAAIorB,SAASiF,YAC1H,KAAmB,eAAgBrwB,EAAIqtB,SAAvC,CAAiD,sBAAuBrtB,EAAI0xK,SAA5E,CAAsF,aAAc1xK,EAAIka,OAAxG,CAAgH,sBAAuBla,EAAIorB,YAC1ItU,SAAU,CAAC,aAAcpW,SAAU,CAAC,MAAoCuW,mBAAoBy4F,EAAKlrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,6BAA8B,EAAG,QAAS,WAAY,EAAG,QAAS,CAAC,EAAG,mBAAoB,CAAC,QAAS,sBAAuB,EAAG,QAAS,CAAC,aAAc,GAAI,EAAG,oBAAqB,EAAG,mBAAoB,qBAAsB,CAAC,EAAG,6BAA8B,EAAG,QAAS,YAAa,CAAC,EAAG,wBAAyBhG,SAAU,SAA4BqB,EAAIC,GAAgB,EAALD,IACpf,OACA,KAAkB,EAAGg5L,EAA0C,EAAG,EAAG,sBAAuB,GAC5F,KAAsB,EAAG,OAAQ,GACjC,KAAoB,GACpB,OACA,KAAkB,EAAGC,EAA2B,EAAG,EAAG,OAAQ,GAC9D,KAAiB,EAAG,MAAO,IACpB,EAALj5L,IACF,KAAkB,OAAQC,EAAI0xK,UAC9B,KAAiB,GACjB,KAAkB,OAAQ1xK,EAAIi5I,OAASj5I,EAAIi5I,MAAMupD,QACjD,KAAiB,GACjB,KAAkB,mBAAoBxiM,EAAI0vB,kBAA1C,CAA6D,oBAAqB1vB,EAAIorB,UAAYprB,EAAImnB,iBACrGxiB,WAAY,CAAC,IAAa,GAAW,IAAoBuS,OAAQ,CAAC,04CAA24CtS,cAAe,EAAGwiB,gBAAiB,I,KAiDz/C,SAAS+7K,GAA8BC,EAAah9K,EAASc,GACzD,GAAIA,EAAa3kB,OAAQ,CAIrB,IAHA,IAAI8gM,EAAej9K,EAAQE,UACvB8hJ,EAASlhJ,EAAaZ,UACtBg9K,EAAe,EACVr9L,EAAI,EAAGA,EAAIm9L,EAAc,EAAGn9L,IAC7Bo9L,EAAap9L,GAAGgzI,OAASoqD,EAAap9L,GAAGgzI,QAAUmvB,EAAOk7B,IAC1DA,IAGR,OAAOA,EAEX,OAAO,EAUX,SAASC,GAAyBC,EAAcC,EAAcC,EAAuBC,GACjF,OAAIH,EAAeE,EACRF,EAEPA,EAAeC,EAAeC,EAAwBC,EAC/ChnL,KAAKukC,IAAI,EAAGsiJ,EAAeG,EAAcF,GAE7CC,E,sBAULE,E,sDAENA,EAAgBjlM,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKglM,IAC9EA,EAAgBtsL,UAAO,KAAwB,CAAExY,KAAM8kM,IACvDA,EAAgBrsL,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,GAAiB,IAAc,EAAiB,O,4BCv5DnG,SAAUiJ,GAAU,aAIbA,EAAOM,aAAa,SAAU,CACtCC,OAAQ,CACJ6hH,WACI,iGAAqFliH,MACjF,KAERQ,OAAQ,kIAAsHR,MAC1H,KAEJmiH,SAAU,mBAEd7hH,YACI,kEAA+DN,MAC3D,KAER0U,kBAAkB,EAClB1T,SAAU,iEAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJ4gH,GAAI,aACJ3gH,IAAK,4BACL4gH,IAAK,mBACL3gH,KAAM,iCACN4gH,KAAM,wBAEV3gH,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,eACRC,KAAM,QACNC,EAAG,gBACHC,GAAI,cACJ/B,EAAG,aACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,UACJhN,EAAG,UACHiN,GAAI,WACJG,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUC,EAAQ87F,GACvB,IAAIr1E,EACW,IAAXzmB,EACM,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACW,IAAXA,EACE,IACA,OAIhB,MAHe,MAAX87F,GAA6B,MAAXA,IAClBr1E,EAAS,KAENzmB,EAASymB,GAEpBxmB,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyB/gB,CAAQ,EAAQ,U,kCCH1Ds4B,EAAOC,QAAU,WAChB,GAAsB,mBAAX+R,QAAiE,mBAAjC5yB,OAAOktH,sBAAwC,OAAO,EACjG,GAA+B,iBAApBt6F,OAAO41F,SAAyB,OAAO,EAElD,IAAIjnH,EAAM,GACN0nL,EAAMr2J,OAAO,QACbs2J,EAASlpL,OAAOipL,GACpB,GAAmB,iBAARA,EAAoB,OAAO,EAEtC,GAA4C,oBAAxCjpL,OAAOkW,UAAUT,SAASiD,KAAKuwK,GAA8B,OAAO,EACxE,GAA+C,oBAA3CjpL,OAAOkW,UAAUT,SAASiD,KAAKwwK,GAAiC,OAAO,EAY3E,IAAKD,KADL1nL,EAAI0nL,GADS,GAED1nL,EAAO,OAAO,EAC1B,GAA2B,mBAAhBvB,OAAOC,MAAmD,IAA5BD,OAAOC,KAAKsB,GAAK5Z,OAAgB,OAAO,EAEjF,GAA0C,mBAA/BqY,OAAOquJ,qBAAiF,IAA3CruJ,OAAOquJ,oBAAoB9sJ,GAAK5Z,OAAgB,OAAO,EAE/G,IAAIwhM,EAAOnpL,OAAOktH,sBAAsB3rH,GACxC,GAAoB,IAAhB4nL,EAAKxhM,QAAgBwhM,EAAK,KAAOF,EAAO,OAAO,EAEnD,IAAKjpL,OAAOkW,UAAUi3G,qBAAqBz0G,KAAKnX,EAAK0nL,GAAQ,OAAO,EAEpE,GAA+C,mBAApCjpL,OAAOutH,yBAAyC,CAC1D,IAAI67D,EAAappL,OAAOutH,yBAAyBhsH,EAAK0nL,GACtD,GAdY,KAcRG,EAAWrkM,QAA8C,IAA1BqkM,EAAW3xJ,WAAuB,OAAO,EAG7E,OAAO,I,kCCxCR,goBAOA,IACM4xJ,EAAY,EACZC,EAAM,EAENC,EAAQ,GAMRC,EAAS,GACTC,EAAQ,GACRC,EAAU,GACVC,EAAY,GACZC,EAAM,GACNC,EAAO,GACPC,EAAa,GACbC,EAAW,GACXC,EAAc,GACdC,EAAa,GAIbC,EAAS,GACTC,EAAO,GASPC,EAAO,GAKPC,EAAI,GAyBJC,EAAI,GA6CJC,EAAQ,IAuBd,SAASC,EAAe1+K,GAAmB,2BAAT2+K,EAAS,iCAATA,EAAS,kBACvC,OAAIA,EAAU9iM,OACH8iM,EAAU7+L,KAAK,SAAA8+L,GAAQ,OAAI5+K,EAAM4+K,KAErC5+K,EAAMsvK,QAAUtvK,EAAMm/F,UAAYn/F,EAAM6+K,SAAW7+K,EAAM8+K,U,g3BCrE9DC,E,YAEF,WAAYj/B,EAAUC,EAAcrgJ,GAAO,kCACvC,aACKogJ,SAAWA,EAChB,EAAKC,aAAeA,EACpB,EAAKrgJ,QAAUA,EACX,EAAKA,UACL,EAAKpY,QAAU,EAAKoY,QAAQpY,SANO,E,mEAe3C,SAAe03L,GASX,IARA,IACM/lE,EAAU,GAOP15H,EARU7H,KAAKupK,UAAUtgK,QAAQq+L,GAQhB,EAAGz/L,EAAI7H,KAAKupK,UAAUplK,QAAUnE,KAAKooK,SAASk/B,GAAYtnM,KAAKooK,SAASpoK,KAAKupK,UAAU1hK,IAAKA,IAClH05H,EAAQ39H,KAAK5D,KAAKupK,UAAU1hK,IAEhC,OAAO05H,I,uBAQX,WAAS,cACL,EAAAvhI,KAAKypK,gBAAexpI,OAApB,oBAA8BjgC,KAAKupK,UAAU9/J,IAAI,SAAAi6I,GAAI,OAAI,EAAK6jD,cAAc7jD,W,+BA7FhF,iCAEI1jJ,KAAKypK,eAAiB,IAAI,KAAe,I,qBAG7C,SAAO69B,GACHtnM,KAAKypK,eAAehG,OAAOzjK,KAAKunM,cAAcD,M,oBAGlD,SAAOA,GACHtnM,KAAKypK,eAAexpI,OAAOjgC,KAAKunM,cAAcD,M,sBAGlD,SAASA,GACLtnM,KAAKypK,eAAev6I,SAASlvB,KAAKunM,cAAcD,M,wBAGpD,SAAWA,GACP,OAAOtnM,KAAKypK,eAAezpI,WAAWhgC,KAAKunM,cAAcD,M,+BAG7D,SAAkBA,GACdtnM,KAAKypK,eAAezpI,WAAWhgC,KAAKunM,cAAcD,IAC9CtnM,KAAKwnM,oBAAoBF,GACzBtnM,KAAKynM,kBAAkBH,K,yBAG/B,WACItnM,KAAKypK,eAAe/4J,U,+BAGxB,SAAkB42L,GAAQ,aAClBI,EAAgB,CAACJ,GACrBI,EAAc9jM,KAAd,MAAA8jM,EAAa,YAAS1nM,KAAK2nM,eAAeL,MAC1C,EAAAtnM,KAAKypK,gBAAexpI,OAApB,oBAA8BynK,EAAcj+L,IAAI,SAAAlI,GAAK,OAAI,EAAKgmM,cAAchmM,S,iCAGhF,SAAoB+lM,GAAQ,aACpBI,EAAgB,CAACJ,GACrBI,EAAc9jM,KAAd,MAAA8jM,EAAa,YAAS1nM,KAAK2nM,eAAeL,MAC1C,EAAAtnM,KAAKypK,gBAAev6I,SAApB,oBAAgCw4K,EAAcj+L,IAAI,SAAAlI,GAAK,OAAI,EAAKgmM,cAAchmM,S,2BAElF,SAAcA,GACV,OAAOvB,KAAK4P,QAAU5P,KAAK4P,QAAQrO,GAASA,M,IA0H9CqmM,EAA4B,IAAI,IAAe,6B,iBAK/CC,E,YACF,WAAYp7L,EAAeq7L,GAAK,oBAC5B9nM,KAAKyM,cAAgBA,EACrBzM,KAAK8nM,MAAQA,I,OAGrBD,EAAkBtnM,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKqnM,GAAmB,KAAyB,KAA0B,KAAyBD,EAA2B,KAC5MC,EAAkBpnM,UAAO,KAAyB,CAAEC,KAAMmnM,EAAmBlnM,UAAW,CAAC,CAAC,GAAI,oBAAqB,O,KAyB7GonM,E,YACF,WAAYj4L,GAAI,oBACZ9P,KAAKgS,UAAYlC,I,iBAOnBk4L,E,YAEF,WAAY1nM,GAAQ,oBAChBN,KAAKM,SAAWA,I,OAGxB0nM,EAAeznM,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKwnM,GAAgB,KAAyB,OACrHA,EAAevnM,UAAO,KAAyB,CAAEC,KAAMsnM,EAAgBrnM,UAAW,CAAC,CAAC,GAAI,iBAAkB,KAAMwB,OAAQ,CAAE2D,KAAM,CAAC,qBAAsB,W,sBA6DjJmiM,E,8BACF,WAAYjjM,EAAU8H,GAAkB,oBACpC9M,KAAKgF,SAAWA,EAChBhF,KAAK8M,mBAAqBA,EAE1B9M,KAAKuN,WAAa,IAAI,IAEtBvN,KAAKkoM,QAAU,IAAIz6L,IAOnBzN,KAAKyO,WAAa,IAAI,IAAgB,CAAEtF,MAAO,EAAGC,IAAKuF,OAAOC,a,uBAOlE,WAAmB,OAAO5O,KAAKiP,a,IAC/B,SAAeC,GACPlP,KAAKiP,cAAgBC,GACrBlP,KAAKmP,kBAAkBD,K,sBAG/B,WACIlP,KAAKyP,YAAczP,KAAKgF,SAASK,KAAK,IAAIC,OAAOtF,KAAK4P,W,yBAK1D,WACI5P,KAAKmoM,YAAY17L,cAAciE,QAC/B1Q,KAAKyO,WAAW3K,WAChB9D,KAAKuN,WAAW1J,OAChB7D,KAAKuN,WAAWzJ,WACZ9D,KAAKiP,aAAsD,mBAAhCjP,KAAKiP,YAAY6B,YAC5C9Q,KAAKkP,WAAW4B,WAAW9Q,MAE3BA,KAAKooM,oBACLpoM,KAAKooM,kBAAkBxyL,cACvB5V,KAAKooM,kBAAoB,Q,mCAGjC,WACI,IAAMC,EAAkBroM,KAAKsoM,UAAUnzL,OAAO,SAAAlC,GAAG,OAAKA,EAAInN,OAI1D9F,KAAKuoM,gBAAkBF,EAAgB,GACnCroM,KAAKkP,YAAclP,KAAKsoM,YAActoM,KAAKooM,mBAC3CpoM,KAAKwQ,0B,+BAUb,SAAkBtB,GACVlP,KAAKiP,aAAsD,mBAAhCjP,KAAKiP,YAAY6B,YAC5C9Q,KAAKkP,WAAW4B,WAAW9Q,MAE3BA,KAAKooM,oBACLpoM,KAAKooM,kBAAkBxyL,cACvB5V,KAAKooM,kBAAoB,MAGxBl5L,GACDlP,KAAKmoM,YAAY17L,cAAciE,QAEnC1Q,KAAKiP,YAAcC,EACflP,KAAKsoM,WACLtoM,KAAKwQ,0B,mCAIb,WAAqB,IACbqF,EADa,OAEb,YAAa7V,KAAKiP,aAClB4G,EAAa7V,KAAKiP,YAAY6G,QAAQ9V,MAEjC,YAAaA,KAAKiP,aACvB4G,EAAa7V,KAAKiP,YAEb1E,MAAMyL,QAAQhW,KAAKiP,eACxB4G,EAAa,YAAG7V,KAAKiP,cAErB4G,IACA7V,KAAKooM,kBAAoBvyL,EAAW7R,KAAK,YAAUhE,KAAKuN,aACnDrJ,UAAU,SAAA4L,GAAI,OAAI,EAAK04L,kBAAkB14L,Q,+BAOtD,SAAkBA,GAA+F,WAAzF24L,EAAyF,uDAA5EzoM,KAAKyP,YAAahD,EAA0D,uDAA1CzM,KAAKmoM,YAAY17L,cAAei8L,EAAU,uCACvGzjM,EAAUwjM,EAAWljM,KAAKuK,GAC3B7K,IAGLA,EAAQ0M,iBAAiB,SAACL,EAAM6sB,EAAuB/sB,GACnD,GAA0B,MAAtBE,EAAKO,cACL,EAAK82L,WAAW74L,EAAKsB,GAAeA,EAAc3E,EAAei8L,QAEhE,GAAoB,MAAhBt3L,EACL3E,EAAcjB,OAAO2yB,GACrB,EAAK+pK,QAAQ31L,OAAOjB,EAAKA,UAExB,CACD,IAAMW,EAAOxF,EAAcyF,IAAIisB,GAC/B1xB,EAAc0F,KAAKF,EAAMb,MAGjCpR,KAAK8M,mBAAmB0U,mB,yBAQ5B,SAAY1R,EAAMjI,GACd,OAA8B,IAA1B7H,KAAKsoM,UAAUnkM,OACRnE,KAAKsoM,UAAUtmM,MAEVhC,KAAKsoM,UAAUjjM,KAAK,SAAA4N,GAAG,OAAIA,EAAInN,MAAQmN,EAAInN,KAAK+B,EAAGiI,MAAU9P,KAAKuoM,kB,wBAUtF,SAAWK,EAAUj/L,EAAO8C,EAAei8L,GACvC,IAAMhlD,EAAO1jJ,KAAK6oM,YAAYD,EAAUj/L,GAElC6H,EAAU,IAAIu2L,EAAyBa,GAIzCp3L,EAAQwkF,MADRh2F,KAAK+oK,YAAYX,SACDpoK,KAAK+oK,YAAYX,SAASwgC,QAEf,IAAfF,GAA8B1oM,KAAKkoM,QAAQ9zL,IAAIs0L,GAC3C1oM,KAAKkoM,QAAQh2L,IAAIw2L,GAAc,EAG/B,EAEpB1oM,KAAKkoM,QAAQ7zL,IAAIu0L,EAAUp3L,EAAQwkF,QAEjBvpF,GAAgCzM,KAAKmoM,YAAY17L,eACzDqK,mBAAmB4sI,EAAKpjJ,SAAUkR,EAAS7H,GAIjDm/L,EAAYC,qBACZD,EAAYC,mBAAmBj5L,KAAO84L,O,UAIlDX,EAAQ1nM,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKynM,GAAS,KAAyB,KAAyB,KAAyB,OAClJA,EAAQ9hM,UAAO,KAAyB,CAAEzF,KAAMunM,EAAStnM,UAAW,CAAC,CAAC,aAAce,eAAgB,SAAgCC,EAAIC,EAAKC,GAGrI,IAAIC,EAHsJ,EAALH,GACrJ,KAAsBE,EAAUmmM,EAAgB,GACzC,EAALrmM,GAEF,KAAsBG,EAAK,UAA0BF,EAAI0mM,UAAYxmM,IACpEwW,UAAW,SAAuB3W,EAAIC,GAGvC,IAAIE,EAHmD,EAALH,GAClD,KAAmBkmM,EAAmB,GAC/B,EAALlmM,GAEF,KAAsBG,EAAK,UAA0BF,EAAIumM,YAAcrmM,EAAGE,QACzEe,UAAW,CAAC,OAAQ,OAAQ,EAAG,YAAaZ,OAAQ,CAAE+M,WAAY,aAAc65J,YAAa,cAAen5J,QAAS,WAAa8I,SAAU,CAAC,WAAYtS,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,oBAAqB,KAAMhG,SAAU,SAA0BqB,EAAIC,GAAgB,EAALD,GACrQ,KAA0B,EAAG,IAC5B4E,WAAY,CAACshM,GAAoBrhM,cAAe,I,sBAqDnDsiM,E,WACF,WAAY/7L,EAAai8L,GAAK,oBAC1BhpM,KAAK+M,YAAcA,EACnB/M,KAAKgpM,MAAQA,EAEbhpM,KAAKwD,WAAa,IAAI,IAEtBxD,KAAKipM,aAAe,IAAI,IACxBH,EAAYC,mBAAqB/oM,KAKjCA,KAAK+M,YAAYnK,cAAcD,UAAUE,IAAI,iBAC7C7C,KAAKgN,KAAO,W,sCAQhB,WAAa,MAAO,Y,IACpB,SAASk8L,GAELlpM,KAAK+M,YAAYnK,cAAciM,aAAa,OAAQq6L,K,gBAGxD,WAAa,OAAOlpM,KAAKiU,O,IACzB,SAAS1S,GACDA,IAAUvB,KAAKiU,QACfjU,KAAKiU,MAAQ1S,EACbvB,KAAKmpM,mBACLnpM,KAAKipM,aAAaplM,U,sBAG1B,WACI,OAAO7D,KAAKgpM,MAAMjgC,YAAYrF,WAAW1jK,KAAKiU,S,0BAElD,SAAa+sJ,GACThhK,KAAKopM,gBAAkBpoC,EACvBhhK,KAAK+M,YAAYnK,cAAciM,aAAa,gBAA5C,UAAgEmyJ,M,iBAEpE,WAII,OAAOhhK,KAAKgpM,MAAMjgC,YAAYX,SAC1BpoK,KAAKgpM,MAAMjgC,YAAYX,SAASpoK,KAAKiU,OAASjU,KAAKqpM,uB,sBAE3D,WACIrpM,KAAKqpM,qBA0Db,SAAgCC,GAE5B,IADA,IAqBM3mM,EArBFikC,EAAS0iK,EAAY1gK,cAClBhC,IAoBDjkC,WACKA,OADLA,EApB0BikC,EAoBNjkC,gBAC8B,EAASA,EAAUiqB,SAAS,4BAA6BjqB,aAA6C,EAASA,EAAUiqB,SAAS,eApBtLga,EAASA,EAAOgC,cAEpB,OAAKhC,EAQIA,EAAOjkC,UAAUiqB,SAAS,wBACxB,YAAqBga,EAAOoC,aAAa,eAIzC,GARK,EApEgBugK,CAAuBvpM,KAAK+M,YAAYnK,eACpE5C,KAAK+M,YAAYnK,cAAciM,aAAa,aAA5C,UAA6D7O,KAAKg2F,MAAQ,M,uBAE9E,WAKQh2F,KAAK0jK,YAAc1jK,KAAKopM,iBACxBppM,KAAKwpM,aAAaxpM,KAAK0jK,c,yBAG/B,WAGQolC,EAAYC,qBAAuB/oM,OACnC8oM,EAAYC,mBAAqB,MAErC/oM,KAAKipM,aAAanlM,WAClB9D,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,a,mBAGpB,WACI9D,KAAK+M,YAAYnK,cAAcksB,U,8BAGnC,WAKI9uB,KAAKgN,KAAO,e,UAGpB87L,EAAYvoM,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKsoM,GAAa,KAAyB,KAAoB,KAAyBb,KACzJa,EAAYroM,UAAO,KAAyB,CAAEC,KAAMooM,EAAanoM,UAAW,CAAC,CAAC,kBAAmBwB,OAAQ,CAAE6K,KAAM,QAAU0L,SAAU,CAAC,iBAKtIowL,EAAYC,mBAAqB,K,sBAwD3BU,E,YACF,WAAY18L,EAAai8L,EAAOhkM,GAAQ,kCACpC,YAAM+H,EAAai8L,KACdj8L,YAAcA,EACnB,EAAKi8L,MAAQA,EACb,EAAKhkM,SAAWA,EAKhB,EAAK+H,YAAYnK,cAAcD,UAAUE,IAAI,wBATT,E,uEAWxC,WAAkB,WACd7C,KAAKyP,YAAczP,KAAKgF,SAASK,KAAK,IAAIC,OAAOtF,KAAKgpM,MAAMp5L,SAI5D,IAAM84J,EAAgB1oK,KAAKgpM,MAAMjgC,YAAYT,YAAYtoK,KAAK8P,MAC1DvF,MAAMyL,QAAQ0yJ,GACd1oK,KAAK0pM,oBAAoBhhC,GAEpB,YAAaA,IAClBA,EAAc1kK,KAAK,YAAUhE,KAAKwD,aAC7BU,UAAU,SAAA04B,GAAM,OAAI,EAAK8sK,oBAAoB9sK,KAEtD58B,KAAK2pM,WAAW1kM,QAAQjB,KAAK,YAAUhE,KAAKwD,aACvCU,UAAU,kBAAM,EAAKwlM,0B,sBAI9B,WACI,6B,uBAEJ,WACI,8B,yBAEJ,WACI1pM,KAAK4pM,SACL,gC,iCAGJ,SAAoB9hM,GAChB,IAAM+O,EAAS7W,KAAK6pM,iBAChB/hM,IACA9H,KAAK8pM,UAAYhiM,GAEjB+O,GAAU7W,KAAK8pM,UAEf9pM,KAAKgpM,MAAMR,kBAAkBxoM,KAAK8pM,UAAW9pM,KAAKyP,YAD5BoH,EAAOpK,cACiDzM,KAAKiU,OAInFjU,KAAKyP,YAAYlK,KAAK,M,oBAI9B,WACI,IAAMsR,EAAS7W,KAAK6pM,iBAChBhzL,IACAA,EAAOpK,cAAciE,QACrB1Q,KAAKyP,YAAYlK,KAAK,O,4BAI9B,WAAc,WACJoS,EAAU3X,KAAK2pM,WAGrB,OAAOhyL,GAAWA,EAAQtS,KAAK,SAAAwR,GAAM,OAAKA,EAAOixL,OAASjxL,EAAOixL,QAAU,Q,CApEnDgB,G,OAuEhCW,EAAkBlpM,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKipM,GAAmB,KAAyB,KAAoB,KAAyBxB,GAAU,KAAyB,OAC9MwB,EAAkBhpM,UAAO,KAAyB,CAAEC,KAAM+oM,EAAmB9oM,UAAW,CAAC,CAAC,yBAA0Be,eAAgB,SAA0CC,EAAIC,EAAKC,GAG/K,IAAIC,EAHgM,EAALH,GAC/L,KAAsBE,EAAUgmM,EAAmB,GAC5C,EAALlmM,GAEF,KAAsBG,EAAK,UAA0BF,EAAI+nM,WAAa7nM,IACrEK,OAAQ,CAAE6K,KAAM,OAAQggB,SAAU,WAAYmpB,SAAU,YAAcz9B,SAAU,CAAC,qBAAsBpW,SAAU,CAAC,KAA0B,CACzI,CAAEC,QAASumM,EAAatmM,YAAainM,GACrC,CAAElnM,QAASqlM,EAA2BplM,YAAainM,KACnD,Q,KAyCNM,EAAiB,gB,iBAKjBC,E,8BACF,WAAYC,EAAWjB,EAAOp/K,EAAU3c,GAAI,+BACxCjN,KAAKiqM,UAAYA,EACjBjqM,KAAKgpM,MAAQA,EACbhpM,KAAK4pB,SAAWA,EAChB5pB,KAAKiN,KAAOA,EAEZjN,KAAKwD,WAAa,IAAI,IAEtBxD,KAAKkqM,YAAc,KACnBlqM,KAAKmqM,QAAU,GACfnqM,KAAKoqM,cACDn9L,GACAA,EAAK8C,OAAO/L,KAAK,YAAUhE,KAAKwD,aAAaU,UAAU,kBAAM,EAAKkmM,aAAY,KAKlFH,EAAUhB,aAAa/kM,UAAU,kBAAM,EAAKkmM,iB,kBAGhD,WAAc,OAAOpqM,KAAKqqM,Q,IAC1B,SAAU9oM,GAASvB,KAAKsqM,eAAe/oM,K,kBAKvC,WAAe,OAAOvB,KAAKmqM,S,IAC3B,SAAWI,GAAUvqM,KAAKwqM,gBAAgBD,K,yBAC1C,WACIvqM,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,a,4BAGpB,WACI,IAAM2mM,EAAazqM,KAAKiqM,UAAUn6L,MAAQ9P,KAAKgpM,MAAMjgC,YAAYX,SAC3DpoK,KAAKgpM,MAAMjgC,YAAYX,SAASpoK,KAAKiqM,UAAUn6L,MAC/C,KACAkmF,EAAuB,MAAfh2F,KAAKqqM,OAAiBI,EAAYzqM,KAAKqqM,OACrD,MAAwB,iBAAVr0G,EAAP,UAA+BA,EAAQh2F,KAAKmqM,SAA5C,OAAsDnqM,KAAKkqM,aAAgB,O,yBAEtF,WAA+B,IAAnBQ,EAAmB,wDACrBl2H,EAAUx0E,KAAK2qM,iBACrB,GAAIn2H,IAAYx0E,KAAK4qM,iBAAmBF,EAAa,CACjD,IAAMr/L,EAAUrL,KAAK4pB,SAAShnB,cACxBioM,EAAc7qM,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,MAAkB,eAAiB,cACxEupM,EAA4B,gBAAhBD,EAAgC,eAAiB,cACnEx/L,EAAQE,MAAMs/L,GAAer2H,GAAW,GACxCnpE,EAAQE,MAAMu/L,GAAa,GAC3B9qM,KAAK4qM,gBAAkBp2H,K,4BAS/B,SAAejzE,GAIXvB,KAAKqqM,OAAS,YAAqB9oM,EAAO,MAC1CvB,KAAKoqM,gB,6BAQT,SAAgBG,GACZ,IAAIhpM,EAAQgpM,EACRQ,EAAQ,KACZ,GAAsB,iBAAXR,EAAqB,CAC5B,IAAMnlJ,EAAQmlJ,EAAOhoL,MAAMwnL,GAC3BxoM,EAAQ6jD,EAAM,GACd2lJ,EAAQ3lJ,EAAM,IAAM2lJ,EAExB/qM,KAAKkqM,YAAca,EACnB/qM,KAAKmqM,QAAU,YAAqB5oM,GACpCvB,KAAKoqM,kB,UAGbJ,EAAmBzpM,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKwpM,GAAoB,KAAyBlB,GAAc,KAAyBb,GAAU,KAAyB,KAAoB,KAAyB,IAAuB,KAC/Q+B,EAAmBvpM,UAAO,KAAyB,CAAEC,KAAMspM,EAAoBrpM,UAAW,CAAC,CAAC,GAAI,qBAAsB,KAAMwB,OAAQ,CAAE6zF,MAAO,CAAC,qBAAsB,SAAUu0G,OAAQ,CAAC,2BAA4B,a,sBAoC7MS,E,8BACF,WAAYhC,EAAOiB,GAAS,oBACxBjqM,KAAKgpM,MAAQA,EACbhpM,KAAKiqM,UAAYA,EACjBjqM,KAAKirM,YAAa,G,sBAGtB,WAAkB,OAAOjrM,KAAKirM,Y,IAC9B,SAAc1pM,GAASvB,KAAKirM,WAAa,YAAsB1pM,K,qBAM/D,SAAQ+mB,GACJtoB,KAAKkrM,UACClrM,KAAKgpM,MAAMjgC,YAAYoiC,kBAAkBnrM,KAAKiqM,UAAUn6L,MACxD9P,KAAKgpM,MAAMjgC,YAAYtF,OAAOzjK,KAAKiqM,UAAUn6L,MACnDwY,EAAMsH,sB,UAGdo7K,EAAkBzqM,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKwqM,GAAmB,KAAyB/C,GAAU,KAAyBa,KACjKkC,EAAkBvqM,UAAO,KAAyB,CAAEC,KAAMsqM,EAAmBrqM,UAAW,CAAC,CAAC,GAAI,oBAAqB,KAAM6X,aAAc,SAAwC7W,EAAIC,GAAgB,EAALD,GACtL,KAAkB,QAAS,SAAoDmwB,GAAU,OAAOlwB,EAAIgiK,QAAQ9xI,MAC3G3vB,OAAQ,CAAE+oM,UAAW,CAAC,6BAA8B,gB,sBA0CvDE,E,sDAENA,EAAc7qM,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK4qM,IAC1EA,EAAclyL,UAAO,KAAwB,CAAExY,KAAM0qM,IACrDA,EAAcjyL,UAAO,KAAwB,I,4BC39BpC,SAAUkJ,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,kGAAwFL,MAC5F,KAEJM,YAAa,4DAAkDN,MAAM,KACrEgB,SACI,0FAAiEhB,MAC7D,KAERiB,cAAe,6CAA8BjB,MAAM,KACnDkB,YAAa,sCAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,0BACTC,SAAU,iCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,SACNC,EAAG,eACHC,GAAI,aACJ/B,EAAG,SACHgC,GAAI,YACJC,EAAG,cACHC,GAAI,kBACJhN,EAAG,eACHiN,GAAI,iBACJG,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtDyB/gB,CAAQ,EAAQ,U,kCCD1Du4B,EAAQguK,SAHR,SAAkB9vK,GACd,OAAa,OAANA,GAA2B,iBAANA,I,2OCc1B+vK,E,qFACF,SAAOr4K,GACH,MAAmC,oBAArBs4K,iBAAmC,KAAO,IAAIA,iBAAiBt4K,O,UAGrFq4K,EAAwB/qM,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAK8qM,IAC9FA,EAAwB1mM,WAAQ,aAAmB,CAAEE,QAAS,WAA6C,OAAO,IAAIwmM,GAA8BzmM,MAAOymM,EAAyB1kL,WAAY,S,sBAM1L4kL,E,8BACF,WAAYC,GAAwB,oBAChCzrM,KAAKyrM,yBAA2BA,EAEhCzrM,KAAK0rM,kBAAoB,IAAIj+L,K,0BAEjC,WAAW,WACPzN,KAAK0rM,kBAAkBr4L,QAAQ,SAAC++F,EAAG/mG,GAAJ,OAAgB,EAAKsgM,iBAAiBtgM,O,qBAEzE,SAAQk8J,GAAY,WACVl8J,EAAU,YAAck8J,GAC9B,OAAO,IAAI,IAAW,SAACn7H,GACnB,IACM4nE,EADS,EAAK43F,gBAAgBvgM,GACRnH,UAAUkoC,GACtC,OAAO,WACH4nE,EAAap+F,cACb,EAAKi2L,kBAAkBxgM,Q,6BAQnC,SAAgBA,GACZ,GAAKrL,KAAK0rM,kBAAkBt3L,IAAI/I,GAa5BrL,KAAK0rM,kBAAkBx5L,IAAI7G,GAAS6L,YAbE,CACtC,IAAM40L,EAAS,IAAI,IACb1/J,EAAWpsC,KAAKyrM,yBAAyBnmM,OAAO,SAAAymM,GAAS,OAAID,EAAOjoM,KAAKkoM,KAC3E3/J,GACAA,EAASkhG,QAAQjiI,EAAS,CACtB2gM,eAAe,EACfC,WAAW,EACXC,SAAS,IAGjBlsM,KAAK0rM,kBAAkBr3L,IAAIhJ,EAAS,CAAE+gC,WAAU0/J,SAAQ50L,MAAO,IAKnE,OAAOlX,KAAK0rM,kBAAkBx5L,IAAI7G,GAASygM,S,+BAM/C,SAAkBzgM,GACVrL,KAAK0rM,kBAAkBt3L,IAAI/I,KAC3BrL,KAAK0rM,kBAAkBx5L,IAAI7G,GAAS6L,QAC/BlX,KAAK0rM,kBAAkBx5L,IAAI7G,GAAS6L,OACrClX,KAAK2rM,iBAAiBtgM,M,8BAKlC,SAAiBA,GACb,GAAIrL,KAAK0rM,kBAAkBt3L,IAAI/I,GAAU,CACrC,MAA6BrL,KAAK0rM,kBAAkBx5L,IAAI7G,GAAhD+gC,EAAR,EAAQA,SAAU0/J,EAAlB,EAAkBA,OACd1/J,GACAA,EAASt7B,aAEbg7L,EAAOhoM,WACP9D,KAAK0rM,kBAAkBn5L,OAAOlH,Q,UAI1CmgM,EAAgBjrM,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKgrM,GAAiB,KAAgBF,KAC/GE,EAAgB5mM,WAAQ,aAAmB,CAAEE,QAAS,WAAqC,OAAO,IAAI0mM,EAAgB,aAASF,KAA8BzmM,MAAO2mM,EAAiB5kL,WAAY,S,sBAY3LulL,E,8BACF,WAAYC,EAAkBr/L,EAAazJ,GAAO,oBAC9CtD,KAAKosM,iBAAmBA,EACxBpsM,KAAK+M,YAAcA,EACnB/M,KAAKsD,QAAUA,EAEftD,KAAKsoB,MAAQ,IAAI,IACjBtoB,KAAKmgH,WAAY,EACjBngH,KAAKqsM,qBAAuB,M,qBAMhC,WAAiB,OAAOrsM,KAAKmgH,W,IAC7B,SAAa5+G,GACTvB,KAAKmgH,UAAY,YAAsB5+G,GACvCvB,KAAKmgH,UAAYngH,KAAKysI,eAAiBzsI,KAAK6mL,e,oBAGhD,WAAiB,OAAO7mL,KAAKssM,W,IAC7B,SAAa/qM,GACTvB,KAAKssM,UAAY,YAAqB/qM,GACtCvB,KAAK6mL,e,gCAET,WACS7mL,KAAKqsM,sBAAyBrsM,KAAKgtB,UACpChtB,KAAK6mL,e,yBAGb,WACI7mL,KAAKysI,iB,wBAET,WAAU,WACNzsI,KAAKysI,eACL,IAAMq/D,EAAS9rM,KAAKosM,iBAAiB9+D,QAAQttI,KAAK+M,aAKlD/M,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,EAAKghL,sBACA,EAAKE,SAAWT,EAAO9nM,KAAK,YAAa,EAAKuoM,WAAaT,GAAQ5nM,UAAU,EAAKokB,W,0BAG/F,WACI,IAAI3d,EACiC,QAApCA,EAAK3K,KAAKqsM,4BAAyC,IAAP1hM,GAAyBA,EAAGiL,kB,UAGjFu2L,EAAkB5rM,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAK2rM,GAAmB,KAAyBX,GAAkB,KAAyB,KAAoB,KAAyB,OACtNW,EAAkB1rM,UAAO,KAAyB,CAAEC,KAAMyrM,EAAmBxrM,UAAW,CAAC,CAAC,GAAI,oBAAqB,KAAMwB,OAAQ,CAAE6qB,SAAU,CAAC,4BAA6B,YAAau/K,SAAU,YAAcpqL,QAAS,CAAEmG,MAAO,qBAAuB5P,SAAU,CAAC,uB,sBA0B9P8zL,E,sDAENA,EAAgBjsM,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKgsM,IAC9EA,EAAgBtzL,UAAO,KAAwB,CAAExY,KAAM8rM,IACvDA,EAAgBrzL,UAAO,KAAwB,CAAEgZ,UAAW,CAACm5K,K,oGC5LvD,SAAUmB,IACZ,OAAO,OAAAC,EAAA,GAAS,GCAd,SAAU1zL,IACZ,OAAOyzL,IAAYx2L,EAAA,EAAE,WAAF,gB,kCCDvB,IAAI02L,EAAyB,EAAQ,QAErCtvK,EAAQuvK,wBAA0B,IADF,EAAQ,QACwBC,yBAAwBF,EAAuBG,sBAC/GzvK,EAAQy1H,eAAiBz1H,EAAQuvK,yB,sBCMxB,SAAUvqL,GAAU,aAYzB,SAAS0qL,EAAuBrnL,EAAQs3I,EAAergJ,GASnD,MAAY,MAARA,EACOqgJ,EAAgB,6CAAY,6CACpB,MAARrgJ,EACAqgJ,EAAgB,6CAAY,6CAE5Bt3I,EAAS,KAtBFs/B,GAsB6Bt/B,EArB3CsnL,EAQS,CACTnoL,GAAIm4I,EAAgB,6HAA2B,6HAC/Cl4I,GAAIk4I,EAAgB,6HAA2B,6HAC/Ch4I,GAAIg4I,EAAgB,6HAA2B,6HAC/C/3I,GAAI,6EACJI,GAAI,iHACJE,GAAI,8EAOgC5I,GArBvB4F,MAAM,KAChByiC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCgoJ,EAAM,GACNhoJ,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAChEgoJ,EAAM,GACNA,EAAM,IANlB,IAAsBhoJ,EACdgoJ,EAyBC3qL,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJG,OAAQ,oiBAAuGR,MAC3G,KAEJkiH,WACI,whBAAqGliH,MACjG,MAGZM,YACI,sRAA0DN,MAAM,KACpEgB,SAAU,CACNR,OAAQ,+SAA0DR,MAC9D,KAEJkiH,WACI,+SAA0DliH,MACtD,KAERmiH,SAAU,8IAEdlhH,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,6CACTC,QAAS,mDACTE,QAAS,6CACTD,SAAU,WACN,MAAO,6BAEXE,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,uEACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,mEAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,8BACRC,KAAM,8BACNC,EAAG,wFACH9B,EAAGiqL,EACHjoL,GAAIioL,EACJhoL,EAAGgoL,EACH/nL,GAAI+nL,EACJ/0L,EAAG,iCACHiN,GAAI8nL,EACJ3nL,EAAG,iCACHC,GAAI0nL,EACJznL,EAAG,qBACHC,GAAIwnL,GAERv7J,cAAe,wHACfmuF,KAAM,SAAUnhF,GACZ,MAAO,8DAAiBx7B,KAAKw7B,IAEjC7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,2BACAA,EAAO,GACP,uCACAA,EAAO,GACP,qBAEA,wCAGflsB,uBAAwB,uCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQ97F,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,UADTA,EAAS,UAEnB,IAAK,IACD,OAAOA,EAAS,gBACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1IyB/gB,CAAQ,EAAQ,U,kLCHpD,iBAAO01H,EAAP,WACF,WAAYt2H,GAAS,oBACjBlE,KAAKitM,WAAY,EACb/oM,IACAlE,KAAK6mL,WAAa3iL,GAJxB,wCAOF,SAAK0nK,GACD,IAAM9/H,EAAa,IAAI0uF,EAGvB,OAFA1uF,EAAWvlB,OAASvmB,KACpB8rC,EAAW8/H,SAAWA,EACf9/H,IAXT,uBAaF,SAAU66H,EAAgB3xI,EAAOlxB,GAC7B,IAAQ8nK,EAAa5rK,KAAb4rK,SACFshC,ECjBR,SAAuBC,EAAgBn4K,EAAOlxB,GAChD,GAAIqpM,EAAgB,CAChB,GAAIA,aAA0BnnC,EAAA,EAC1B,OAAOmnC,EAEX,GAAIA,EAAexkE,EAAA,GACf,OAAOwkE,EAAexkE,EAAA,KAG9B,OAAKwkE,GAAmBn4K,GAAUlxB,EAG3B,IAAIkiK,EAAA,EAAWmnC,EAAgBn4K,EAAOlxB,GAFlC,IAAIkiK,EAAA,EAAW,KDOTonC,CAAazmC,EAAgB3xI,EAAOlxB,GASjD,GAPIopM,EAAKrqM,IADL+oK,EACSA,EAAS12I,KAAKg4K,EAAMltM,KAAKumB,QAGzBvmB,KAAKumB,QAAW6R,EAAA,EAAOwuI,wCAA0CsmC,EAAK9mC,mBAC3EpmK,KAAK6mL,WAAWqmB,GAChBltM,KAAKqtM,cAAcH,IAEvB90K,EAAA,EAAOwuI,uCACHsmC,EAAK9mC,qBACL8mC,EAAK9mC,oBAAqB,EACtB8mC,EAAK/mC,iBACL,MAAM+mC,EAAKhnC,eAIvB,OAAOgnC,IAhCT,2BAkCF,SAAcA,GACV,IACI,OAAOltM,KAAK6mL,WAAWqmB,GAE3B,MAAOvwK,GACCvE,EAAA,EAAOwuI,wCACPsmC,EAAK/mC,iBAAkB,EACvB+mC,EAAKhnC,eAAiBvpI,GAEtB,OAAAirI,EAAA,GAAeslC,GACfA,EAAKl4K,MAAM2H,GAGXoO,QAAQ24B,KAAK/mC,MA/CvB,qBAmDF,SAAQ94B,EAAMypM,GAAW,WAErB,OAAO,IADPA,EAAcC,EAAeD,IACN,SAAC9oM,EAASixH,GAC7B,IAAIzhB,EACJA,EAAe,EAAK9vG,UAAU,SAAC3C,GAC3B,IACIsC,EAAKtC,GAET,MAAOo7B,GACH84F,EAAO94F,GACHq3E,GACAA,EAAap+F,gBAGtB6/G,EAAQjxH,OAjEjB,wBAoEF,SAAW+3B,GACP,IAAQhW,EAAWvmB,KAAXumB,OACR,OAAOA,GAAUA,EAAOriB,UAAUq4B,KAtEpC,KAwED,IAxEC,MAwEF,WACI,OAAOv8B,OAzET,kBA2EF,WAAkB,2BAAVwtM,EAAU,yBAAVA,EAAU,gBACd,OAA0B,IAAtBA,EAAWrpM,OACJnE,KAEJ,YAAcwtM,EAAd,CAA0BxtM,QA/EnC,uBAiFF,SAAUstM,GAAW,WAEjB,OAAO,IADPA,EAAcC,EAAeD,IACN,SAAC9oM,EAASixH,GAC7B,IAAIl0H,EACJ,EAAK2C,UAAU,SAACq3B,GAAD,OAAOh6B,EAAQg6B,GAAG,SAACoB,GAAD,OAAS84F,EAAO94F,IAAM,kBAAMn4B,EAAQjD,WArF3E,G,OAyFNi5H,EAAWl1H,OAAS,SAACpB,GACjB,OAAO,IAAIs2H,EAAWt2H,I,EA1FpB,GA4FN,SAASqpM,EAAeD,GAIpB,GAHKA,IACDA,EAAcl1K,EAAA,EAAO7zB,SAAWA,UAE/B+oM,EACD,MAAM,IAAIj5K,MAAM,yBAEpB,OAAOi5K,I,sBE/FF,SAAUjrL,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPs8J,EAAa,SAAU11J,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GACzB,EACAA,EAAI,KAAO,GACT,EACA,GAElB21J,EAAU,CACN9oL,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,8BACA,oCACA,qCAEJ9B,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,oCACA,oCACA,qCAEJiC,EAAG,CACC,2DACA,0DACA,CAAC,uCAAU,wCACX,oCACA,8BACA,+BAEJ/M,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,oCACA,yBAEJoN,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,8BACA,yBAEJE,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,oCACA,oCACA,0BAGRqoL,EAAY,SAAUrtB,GAClB,OAAO,SAAU56J,EAAQs3I,EAAe7tH,EAAQ6uB,GAC5C,IAAI/kC,EAAIw0K,EAAW/nL,GACfgpB,EAAMg/J,EAAQptB,GAAGmtB,EAAW/nL,IAIhC,OAHU,IAANuT,IACAyV,EAAMA,EAAIsuH,EAAgB,EAAI,IAE3BtuH,EAAIltC,QAAQ,MAAOkkB,KAGlC9C,EAAS,CACL,iCACA,uCACA,2BACA,iCACA,2BACA,iCACA,iCACA,iCACA,uCACA,uCACA,uCACA,wCAGGP,EAAOM,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbW,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVutB,cAAe,gBACfmuF,KAAM,SAAUnhF,GACZ,MAAO,WAAQA,GAEnB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,SAEA,UAGfxtB,SAAU,CACNC,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNC,EAAG+oL,EAAU,KACb9oL,GAAI8oL,EAAU,KACd7qL,EAAG6qL,EAAU,KACb7oL,GAAI6oL,EAAU,KACd5oL,EAAG4oL,EAAU,KACb3oL,GAAI2oL,EAAU,KACd31L,EAAG21L,EAAU,KACb1oL,GAAI0oL,EAAU,KACdvoL,EAAGuoL,EAAU,KACbtoL,GAAIsoL,EAAU,KACdroL,EAAGqoL,EAAU,KACbpoL,GAAIooL,EAAU,MAElBt8J,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,UAAM,MAEhC+vC,WAAY,SAAUpC,GAClB,OAAOA,EACF3tC,QAAQ,MAAO,SAAU8vC,GACtB,OAAOb,EAAUa,KAEpB9vC,QAAQ,KAAM,WAEvBmkB,KAAM,CACFC,IAAK,EACLC,IAAK,MAzKyB/gB,CAAQ,EAAQ,U,kCCL1D,4DAKA,2B,6CAKa8oM,I,uBAAAA,I,2BAFH,CAAC,Q,EAHX,I,kCCNA,gCAAO,IAAM7vB,EAAe,SAACxiJ,GAAD,OAAOA,GAAyB,iBAAbA,EAAEp3B,QAAoC,mBAANo3B,I,sBCStE,SAAUlZ,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,whBAAqGL,MACzG,KAEJM,YAAa,sOAAkDN,MAAM,KACrEgB,SAAU,CACNkhH,WACI,mVAAgEliH,MAC5D,KAERQ,OAAQ,yVAAiER,MACrE,KAEJmiH,SAAU,mEAEdlhH,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,+CACTC,QAAS,+CACTE,QAAS,qDACTD,SAAU,gEACVE,SAAU,kDACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUE,GACd,OAAOA,EAAEpjB,QACL,+HACA,SAAU+tC,EAAIs+J,EAAIC,GACd,MAAc,WAAPA,EAAaD,EAAK,eAAOA,EAAKC,EAAK,kBAItDnpL,KAAM,SAAUC,GACZ,MAAI,2HAA4B5B,KAAK4B,GAC1BA,EAAEpjB,QAAQ,mBAAU,mCAE3B,2BAAOwhB,KAAK4B,GACLA,EAAEpjB,QAAQ,4BAAS,+CAEvBojB,GAEXA,EAAG,kFACHC,GAAI,8BACJ/B,EAAG,2BACHgC,GAAI,8BACJC,EAAG,iCACHC,GAAI,oCACJhN,EAAG,qBACHiN,GAAI,wBACJG,EAAG,qBACHC,GAAI,wBACJC,EAAG,2BACHC,GAAI,+BAERC,uBAAwB,uDACxBC,QAAS,SAAUC,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,gBAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,gBAAQA,EAEZA,EAAS,WAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB/gB,CAAQ,EAAQ,U,sKCNpD,iBAAOipM,EAAP,8BACF,WAAYC,GAAoC,IAAnBjiJ,EAAmB,uDAAbgiJ,EAAUhiJ,IAAG,oBAC5C/rD,KAAKguM,gBAAkBA,EACvBhuM,KAAK+rD,IAAMA,GAHb,uBAKF,SAASggF,GAAsB,IAAhB3+C,EAAgB,uDAAR,EAAG/kF,EAAK,uCAC3B,OAAO,IAAIrI,KAAKguM,gBAAgBhuM,KAAM+rI,GAAM3nI,SAASiE,EAAO+kF,OAN9D,G,OASN2gH,EAAUhiJ,IAAM,kBAAMrR,KAAKqR,O,EATrB,G,wRCCC,IAAM,EAAb,YACI,WAAYiiJ,GAAoC,MAAnBjiJ,EAAmB,uDAAb,EAAUA,IAAG,4BAC5C,YAAMiiJ,EAAiB,WACnB,OAAIC,EAAeC,UAAYD,EAAeC,WAAf,eACpBD,EAAeC,SAASniJ,MAGxBA,QAGV2gF,QAAU,GACf,EAAK5wH,QAAS,EACd,EAAKqpJ,eAAY1gK,EAX2B,EADpD,6DAcI,SAASsnI,GAAsB,IAAhB3+C,EAAgB,uDAAR,EAAG/kF,EAAK,uCAC3B,OAAI4lM,EAAeC,UAAYD,EAAeC,WAAaluM,KAChDiuM,EAAeC,SAAS9pM,SAAS2nI,EAAM3+C,EAAO/kF,GAGrD,wBAAsB0jI,EAAM3+C,EAAO/kF,MAnB/C,mBAsBI,SAAM06D,GACF,IAAQ2pE,EAAY1sI,KAAZ0sI,QACR,GAAI1sI,KAAK8b,OACL4wH,EAAQ9oI,KAAKm/D,OADjB,CAIA,IAAI/tC,EACJh1B,KAAK8b,QAAS,EACd,GACI,GAAIkZ,EAAQ+tC,EAAOspE,QAAQtpE,EAAO16D,MAAO06D,EAAOqqB,OAC5C,YAECrqB,EAAS2pE,EAAQ/3H,SAE1B,GADA3U,KAAK8b,QAAS,EACVkZ,EAAO,CACP,KAAO+tC,EAAS2pE,EAAQ/3H,SACpBouD,EAAOntD,cAEX,MAAMof,QAxClB,CAAoC,I,uLCK9B0Y,EAAiBlxB,OAAOkW,UAAUgb,eAKxC,SAASygK,EAAS3vJ,GACd,OAAIj0C,MAAMyL,QAAQwoC,GACPA,EAAM/0C,IAAI0kM,GAEZ3vJ,aAAiB9D,KACf,IAAIA,KAAK8D,EAAM1F,WAEA,iBAAV0F,GAAsBA,EAC3BrC,EAAQqC,EAAO2vJ,GAGf3vJ,EAcf,SAASrC,EAAQqC,EAAOvH,GACpB,IAAM9K,EAAS,GACf,IAAK,IAAMxvB,KAAO6hC,EACV9Q,EAAexY,KAAKspB,EAAO7hC,KAC3BwvB,EAAOxvB,GAAOs6B,EAAKuH,EAAM7hC,GAAMA,IAGvC,OAAOwvB,EAGX,IAAMiiK,EAAiB,CACnBpmJ,eAAe,EACfC,eAAe,EACf4K,QAAQ,EACRC,cAAc,EACdu7I,WAAW,G,iBAGTC,E,8BACF,WAAYjjM,GAAO,oBACfrL,KAAKqL,QAAUA,EACfrL,KAAKuuM,eAAiB,I,8BAE1B,WACI,IAAQC,EAAwBxuM,KAAxBwuM,oBACFxmL,EAAUhoB,KAAKgoB,SAAW,GAEhChoB,KAAKuuM,eAAiBpyJ,EAAQn0B,EAAS,SAACymL,EAAWvrI,GAAZ,OAA6BsrI,GAAuBJ,EAAelrI,GACpGirI,EAASM,GACTA,IACNzuM,KAAKkkB,SAAW,IAAI,IAASlkB,KAAKqL,QAAQzI,cAAeolB,GACzDhoB,KAAKkkB,SAASgvB,W,uBAMlB,WACI,GAAIlzC,KAAKkkB,SAAU,CACf,IAAQsqL,EAAwCxuM,KAAxCwuM,oBAAqBD,EAAmBvuM,KAAnBuuM,eACvBG,EAAa1uM,KAAKgoB,SAAW,GAC7B2mL,EAAsB,GACxBn7G,GAAa,EAEjB,IAAK,IAAMtwB,KAAcwrI,EACrB,GAAIA,EAAWhhK,eAAew1B,GAAa,CACvC,IAAIurI,EAAYC,EAAWxrI,GACvBsrI,GAAuBJ,EAAelrI,GACjC,IAAUqrI,EAAerrI,GAAaurI,KACvCF,EAAerrI,GAAcirI,EAASM,GACtCj7G,GAAa,EA5DlB,iBADFllD,EAiE+BmgK,KA/DxClkM,MAAMyL,QAAQs4B,GACdA,EAAM/jC,MAAMmoB,UAAUlpB,MAAM0rB,KAAKoZ,GAE5BA,IACLA,EAAM9xB,OAAOuqB,OAAO,GAAIuH,KA2DRmgK,EAxDjBngK,GA4DiBigK,EAAerrI,KAAgBurI,IAC/BF,EAAerrI,GAAcurI,EAC7Bj7G,GAAa,GAGrBm7G,EAAoBzrI,GAAcurI,EAK1C,IAFA,IAEA,MAFuBjyL,OAAOC,KAAK8xL,GAEnC,eAAyC,CAApC,IAAM,EAAU,KACX,KAAcG,WACTH,EAAe,GACtB/6G,GAAa,GAGjBA,IACAxzF,KAAKkkB,SAAS0qL,iBACd5uM,KAAKkkB,SAASgtE,aAAay9G,IAvF3C,IAAqBrgK,I,mCA2FjB,WACQtuC,KAAKkkB,UACLlkB,KAAKkkB,SAAS2qL,oB,yBAGtB,WACQ7uM,KAAKkkB,WACLlkB,KAAKkkB,SAAShD,UACdlhB,KAAKkkB,SAAW,Q,oBAGxB,WACI,OAAOlkB,KAAKkkB,a,UAGpBoqL,EAAsB/tM,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK8tM,GAAuB,KAAyB,OAC1IA,EAAsBnoM,UAAO,KAAyB,CAAEzF,KAAM4tM,EAAuB3tM,UAAW,CAAC,CAAC,kBAAmBwB,OAAQ,CAAE6lB,QAAS,UAAWwmL,oBAAqB,uBAAyBpoM,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAwCqB,EAAIC,KAAUkX,OAAQ,CAAC,4z9BAAy29BtS,cAAe,I,sBAuB/o+BsoM,E,mGACF,SAAuBl/I,GACnB,IAAchsD,KAAd,UAAa,YAASgsD,Q,UAG9Bk/I,EAAmBvuM,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKsuM,IACpFA,EAAmB51L,UAAO,KAAwB,CAAExY,KAAMouM,IAC1DA,EAAmB31L,UAAO,KAAwB,CAAEC,QAAS,CAAC,M,8BCxJrD,SAAUiJ,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,qGAAyCL,MAAM,KACvDM,YAAa,qGAAyCN,MAClD,KAEJgB,SAAU,uIAA8BhB,MAAM,KAC9CiB,cAAe,mDAAgBjB,MAAM,KACrCkB,YAAa,mDAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,sCACN2nH,EAAG,cACHjH,GAAI,0BACJC,IAAK,iCACLC,KAAM,uCAEV3gH,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,UACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNC,EAAG,gBACHC,GAAI,WACJ/B,EAAG,UACHgC,GAAI,WACJC,EAAG,sBACHC,GAAI,iBACJhN,EAAG,eACHiN,GAAI,WACJG,EAAG,gBACHC,GAAI,WACJC,EAAG,gBACHC,GAAI,YAERC,uBAAwB,gCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnB8rB,cAAe,4BACfmuF,KAAM,SAAU96H,GACZ,MAAiB,iBAAVA,GAEX8sC,SAAU,SAAUD,EAAME,EAAQm9J,GAC9B,OAAOr9J,EAAO,GAAK,eAAO,kBAxEI5sC,CAAQ,EAAQ,U,kLCJpD,SAAUH,EAAKuS,GACjB,OAAO,SAACqP,GACJ,OAAc,IAAVrP,EACO,cAGAqP,EAAO8V,KAAK,IAAI2yK,EAAa93L,K,IAI1C83L,E,8BACF,WAAYpyB,GAER,GAFa,oBACb58K,KAAK48K,MAAQA,EACT58K,KAAK48K,MAAQ,EACb,MAAM,IAAI,K,mBAGlB,SAAKrgJ,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI+qM,EAAe1yK,EAAYv8B,KAAK48K,Y,GAG9DqyB,E,YACF,WAAYxyK,EAAamgJ,GAAK,M,MAAA,2B,EAC1B,K,EAAA,E,EAAA,CAAMngJ,G,kBAAN,E,iGACKmgJ,MAAQA,EACb,EAAK1lK,MAAQ,EAHa,E,0DAK9B,SAAM3V,GACF,IAAMq7K,EAAQ58K,KAAK48K,MACb1lK,IAAUlX,KAAKkX,MACjBA,GAAS0lK,IACT58K,KAAKy8B,YAAY54B,KAAKtC,GAClB2V,IAAU0lK,IACV58K,KAAKy8B,YAAY34B,WACjB9D,KAAK4V,oB,CAbQ,M,wBCfpB,SAAUyM,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAETxuB,EAAS,CACL,sEACA,iCACA,iCACA,iCACA,iCACA,mDACA,uCACA,qBACA,6CACA,sEACA,sEACA,uEAGCP,EAAOM,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbW,SACI,+YAA0EhB,MACtE,KAERiB,cACI,qTAA2DjB,MAAM,KACrEkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVutB,cAAe,wFACfmuF,KAAM,SAAUnhF,GACZ,MAAO,6CAAUx7B,KAAKw7B,IAE1B7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,6CAEA,8CAGfxtB,SAAU,CACNC,QAAS,uFACTC,QAAS,6FACTC,SAAU,uDACVC,QAAS,iFACTC,SAAU,uDACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,KACNC,EAAG,wFACHC,GAAI,oCACJ/B,EAAG,gEACHgC,GAAI,0CACJC,EAAG,sEACHC,GAAI,gDACJhN,EAAG,8CACHiN,GAAI,wBACJG,EAAG,oDACHC,GAAI,8BACJC,EAAG,8CACHC,GAAI,yBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EACF3tC,QAAQ,kEAAiB,SAAU8vC,GAChC,OAAOF,EAAUE,KAEpB9vC,QAAQ,UAAM,MAEvB+vC,WAAY,SAAUpC,GAClB,OAAOA,EACF3tC,QAAQ,MAAO,SAAU8vC,GACtB,OAAOb,EAAUa,KAEpB9vC,QAAQ,KAAM,WAEvBmkB,KAAM,CACFC,IAAK,EACLC,IAAK,MApHyB/gB,CAAQ,EAAQ,U,sKCLpD,SAAU2iI,EAAWnzF,GACvB,OAAO,SAAoC/tB,GACvC,IAAMqlJ,EAAW,IAAIsjC,EAAc56J,GAC7B66J,EAAS5oL,EAAO8V,KAAKuvI,GAC3B,OAAQA,EAASujC,OAASA,G,IAG5BD,E,8BACF,WAAY56J,GAAQ,oBAChBt0C,KAAKs0C,SAAWA,G,mBAEpB,SAAK/X,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIkrM,EAAgB7yK,EAAYv8B,KAAKs0C,SAAUt0C,KAAKmvM,a,GAG9EC,E,YACF,WAAY3yK,EAAa6X,EAAU66J,GAAM,M,MAAA,2B,EACrC,K,EAAA,E,EAAA,CAAM1yK,G,kBAAN,E,iGACK6X,SAAWA,EAChB,EAAK66J,OAASA,EAHuB,E,0DAKzC,SAAMxyK,GACF,IAAK38B,KAAKqmK,UAAW,CACjB,IAAIzpI,EACJ,IACIA,EAAS58B,KAAKs0C,SAAS3X,EAAK38B,KAAKmvM,QAErC,MAAOE,GAEH,Y,EADA,E,EAAA,K,uCAAA,Q,4DAAA,CAAYA,IAGhBrvM,KAAKsvM,yBACL,IAAM1yC,EAAkB,IAAI,IAAsB58J,MAClDA,KAAK6C,IAAI+5J,GACT,IAAM5b,EAAoB,YAAepkH,EAAQggI,GAC7C5b,IAAsB4b,GACtB58J,KAAK6C,IAAIm+I,G,eArBK,M,sBCLrB,SAAU3+H,GAAU,aAezB,SAAS+6J,EAAU13J,EAAQs3I,EAAergJ,GACtC,IAAIigB,EAASlX,EAAS,IACtB,OAAQ/I,GACJ,IAAK,KAQD,OANIigB,GADW,IAAXlX,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIkX,GADW,IAAXlX,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,MAAuB,YAC3B,IAAK,KAQD,OANIkX,GADW,IAAXlX,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIkX,GADW,IAAXlX,EACU,MAEA,QAGlB,IAAK,KAQD,OANIkX,GADW,IAAXlX,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIkX,GADW,IAAXlX,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBrD,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFL,MACzF,KAEJM,YACI,8DAA8DN,MAC1D,KAER0U,kBAAkB,EAClB1T,SAAU,iEAA4DhB,MAClE,KAEJiB,cAAe,0CAAqCjB,MAAM,KAC1DkB,YAAa,4BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBxtB,QAAS,oBACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,gCACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,cACHC,GAAIu4J,EACJt6J,EAtIR,SAA6B4C,EAAQs3I,EAAergJ,EAAKqhD,GACrD,OAAQrhD,GACJ,IAAK,IACD,OAAOqgJ,EACD,eACAh/F,EACE,eACA,iBAgIZl5C,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAG,MACHiN,GAAIm4J,EACJh4J,EAAG,SACHC,GAAI+3J,EACJ93J,EAAG,SACHC,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5JyB/gB,CAAQ,EAAQ,U,qBCFUs4B,EAAOC,QAAyO,SAAS78B,GAAG,aAAaA,EAAEA,GAAGA,EAAEktC,eAAe,WAAWltC,EAAE+uM,QAAQ/uM,EAAE,IAAIyzB,EAAE,CAACu7K,UAAU,CAAC,IAAI,IAAI,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,EAAE,EAAE,GAAGC,eAAe,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,EAAE,KAAKC,WAAW,CAAC,IAAI,GAAG,KAAKC,MAAM,CAAC,IAAI,GAAG,IAAIC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,GAAG,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAIC,MAAM,CAAC,IAAI,IAAI,IAAIC,eAAe,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,GAAG,IAAIC,KAAK,CAAC,EAAE,IAAI,KAAKC,SAAS,CAAC,EAAE,EAAE,KAAKC,SAAS,CAAC,EAAE,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,IAAIC,SAAS,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,EAAE,IAAI,GAAGC,SAAS,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,EAAE,KAAKC,eAAe,CAAC,GAAG,IAAI,IAAIC,WAAW,CAAC,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,GAAG,KAAKC,QAAQ,CAAC,IAAI,EAAE,GAAGC,WAAW,CAAC,IAAI,IAAI,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,GAAG,GAAG,KAAKC,cAAc,CAAC,GAAG,GAAG,IAAIC,cAAc,CAAC,GAAG,GAAG,IAAIC,cAAc,CAAC,EAAE,IAAI,KAAKC,WAAW,CAAC,IAAI,EAAE,KAAKC,SAAS,CAAC,IAAI,GAAG,KAAKC,YAAY,CAAC,EAAE,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,GAAG,IAAI,KAAKC,UAAU,CAAC,IAAI,GAAG,IAAIC,YAAY,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,GAAG,IAAI,IAAIC,QAAQ,CAAC,IAAI,EAAE,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAIC,KAAK,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,EAAE,IAAI,GAAGC,YAAY,CAAC,IAAI,IAAI,IAAIC,KAAK,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,GAAG,IAAIC,OAAO,CAAC,GAAG,EAAE,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,GAAGC,aAAa,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,qBAAqB,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,GAAG,IAAI,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,IAAI,GAAGC,UAAU,CAAC,GAAG,IAAI,IAAIC,MAAM,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,EAAE,KAAKC,OAAO,CAAC,IAAI,EAAE,GAAGC,iBAAiB,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,EAAE,EAAE,KAAKC,aAAa,CAAC,IAAI,GAAG,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,GAAG,IAAI,KAAKC,gBAAgB,CAAC,IAAI,IAAI,KAAKC,kBAAkB,CAAC,EAAE,IAAI,KAAKC,gBAAgB,CAAC,GAAG,IAAI,KAAKC,gBAAgB,CAAC,IAAI,GAAG,KAAKC,aAAa,CAAC,GAAG,GAAG,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,EAAE,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAIC,OAAO,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,GAAG,GAAGC,OAAO,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,IAAIC,KAAK,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,EAAE,KAAKC,cAAc,CAAC,IAAI,GAAG,KAAKC,IAAI,CAAC,IAAI,EAAE,GAAGC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,GAAG,IAAI,KAAKC,YAAY,CAAC,IAAI,GAAG,IAAIC,OAAO,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,IAAIC,SAAS,CAAC,GAAG,IAAI,IAAIC,SAAS,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,GAAG,IAAIC,OAAO,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,GAAG,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,EAAE,IAAI,KAAKC,UAAU,CAAC,GAAG,IAAI,KAAKC,IAAI,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,GAAG,IAAIC,UAAU,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,IAAI,GAAGC,YAAY,CAAC,IAAI,IAAI,KAAK5gK,EAAE,SAASv3C,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,EAAE,CAACoJ,QAAQ,KAAepJ,EAAEoJ,QAAnD,CAA6D,SAAS78B,GAAG,IAAIu3C,EAAE,GAAG,IAAI,IAAIlwC,KAAKosB,EAAEA,EAAEyZ,eAAe7lC,KAAKkwC,EAAE9jB,EAAEpsB,IAAIA,GAAG,IAAIkU,EAAEvb,EAAE68B,QAAQ,CAACu7K,IAAI,CAACC,SAAS,EAAEC,OAAO,OAAOC,IAAI,CAACF,SAAS,EAAEC,OAAO,OAAOE,IAAI,CAACH,SAAS,EAAEC,OAAO,OAAOG,IAAI,CAACJ,SAAS,EAAEC,OAAO,OAAOI,KAAK,CAACL,SAAS,EAAEC,OAAO,QAAQK,IAAI,CAACN,SAAS,EAAEC,OAAO,OAAOM,IAAI,CAACP,SAAS,EAAEC,OAAO,OAAOO,IAAI,CAACR,SAAS,EAAEC,OAAO,OAAOQ,IAAI,CAACT,SAAS,EAAEC,OAAO,CAAC,QAAQS,QAAQ,CAACV,SAAS,EAAEC,OAAO,CAAC,YAAYU,OAAO,CAACX,SAAS,EAAEC,OAAO,CAAC,WAAWW,QAAQ,CAACZ,SAAS,EAAEC,OAAO,CAAC,YAAYY,IAAI,CAACb,SAAS,EAAEC,OAAO,CAAC,IAAI,IAAI,MAAMa,MAAM,CAACd,SAAS,EAAEC,OAAO,CAAC,MAAM,MAAM,QAAQjG,KAAK,CAACgG,SAAS,EAAEC,OAAO,CAAC,UAAU,IAAI,IAAIhvE,KAAK/tH,EAAE,GAAGA,EAAE2xB,eAAeo8F,GAAG,CAAC,KAAK,aAAa/tH,EAAE+tH,IAAI,MAAM,IAAIz1G,MAAM,8BAA8By1G,GAAG,KAAK,WAAW/tH,EAAE+tH,IAAI,MAAM,IAAIz1G,MAAM,oCAAoCy1G,GAAG,GAAG/tH,EAAE+tH,GAAGgvE,OAAO30M,SAAS4X,EAAE+tH,GAAG+uE,SAAS,MAAM,IAAIxkL,MAAM,sCAAsCy1G,GAAG,IAAI37F,EAAEpyB,EAAE+tH,GAAG+uE,SAASj0L,EAAE7I,EAAE+tH,GAAGgvE,cAAc/8L,EAAE+tH,GAAG+uE,gBAAgB98L,EAAE+tH,GAAGgvE,OAAOt8L,OAAOu3B,eAAeh4B,EAAE+tH,GAAG,WAAW,CAACvoI,MAAM4sC,IAAI3xB,OAAOu3B,eAAeh4B,EAAE+tH,GAAG,SAAS,CAACvoI,MAAMqjB,IAAI7I,EAAE68L,IAAIG,IAAI,SAASv4M,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAErH,EAAE,GAAG,IAAIub,EAAEvb,EAAE,GAAG,IAAIspI,EAAEtpI,EAAE,GAAG,IAAI2tC,EAAE5vB,KAAKG,IAAI7W,EAAEkU,EAAE+tH,GAAGllH,EAAErG,KAAKukC,IAAIj7C,EAAEkU,EAAE+tH,GAAG8B,EAAEhnH,EAAEupB,EAAE,OAAOvpB,IAAIupB,EAAEla,EAAE,EAAEpsB,IAAI+c,EAAEqP,GAAGlY,EAAE+tH,GAAG8B,EAAE7vH,IAAI6I,EAAEqP,EAAE,GAAG61G,EAAEjiI,GAAG+jI,EAAE9B,IAAIllH,IAAIqP,EAAE,GAAGpsB,EAAEkU,GAAG6vH,IAAI33G,EAAE1V,KAAKG,IAAI,GAAGuV,EAAE,MAAM,IAAIA,GAAG,KAAK8jB,GAAG5J,EAAEvpB,GAAG,EAAE,CAACqP,EAAE,KAAKrP,IAAIupB,EAAE,EAAE4J,GAAG,GAAG6zF,GAAGhnH,EAAEupB,GAAGy9F,GAAG,EAAEhnH,EAAEupB,IAAI,IAAI4J,IAAIh8B,EAAE68L,IAAII,IAAI,SAASx4M,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAE3tC,EAAE,GAAG,IAAIokB,EAAEpkB,EAAE,GAAG,IAAIorI,EAAEprI,EAAE,GAAG,IAAI8/K,EAAE/hK,KAAKukC,IAAI3U,EAAEvpB,EAAEgnH,GAAG5zH,EAAEsoK,EAAE/hK,KAAKG,IAAIyvB,EAAEvpB,EAAEgnH,GAAG7mH,EAAE,SAASvkB,GAAG,OAAO8/K,EAAE9/K,GAAG,EAAEwX,EAAE,IAAI,OAAO,IAAIA,EAAE+D,EAAE+tH,EAAE,GAAGA,EAAE9xH,EAAEsoK,EAAErsJ,EAAElP,EAAEopB,GAAG4J,EAAEhzB,EAAEH,GAAG/c,EAAEkd,EAAE6mH,GAAGz9F,IAAImyI,EAAEvkK,EAAElU,EAAEkwC,EAAEnzB,IAAI07J,EAAEvkK,EAAE,EAAE,EAAEkY,EAAEpsB,EAAE+jI,IAAI00C,IAAIvkK,EAAE,EAAE,EAAEg8B,EAAE9jB,GAAGlY,EAAE,EAAEA,GAAG,EAAEA,EAAE,IAAIA,GAAG,IAAI,CAAC,IAAIA,EAAE,IAAI+tH,EAAE,IAAIw2C,IAAIvkK,EAAE68L,IAAIK,IAAI,SAASz4M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAGu3C,EAAEv3C,EAAE,GAAGqH,EAAErH,EAAE,GAAG,MAAM,CAACub,EAAE68L,IAAIG,IAAIv4M,GAAG,GAAQ,EAAE,IAAI+d,KAAKG,IAAIuV,EAAE1V,KAAKG,IAAIq5B,EAAElwC,IAAjC,IAAsC,KAAKA,EAAE,EAAE,EAAE,IAAI0W,KAAKukC,IAAI7uB,EAAE1V,KAAKukC,IAAI/K,EAAElwC,OAAOkU,EAAE68L,IAAIM,KAAK,SAAS14M,GAAG,IAAIyzB,EAAE8jB,EAAEv3C,EAAE,GAAG,IAAIqH,EAAErH,EAAE,GAAG,IAAIub,EAAEvb,EAAE,GAAG,IAAI,MAAM,CAAC,MAAM,EAAEu3C,GAAG9jB,EAAE1V,KAAKG,IAAI,EAAEq5B,EAAE,EAAElwC,EAAE,EAAEkU,MAAM,EAAEkY,IAAI,GAAG,MAAM,EAAEpsB,EAAEosB,IAAI,EAAEA,IAAI,GAAG,MAAM,EAAElY,EAAEkY,IAAI,EAAEA,IAAI,GAAG,IAAIA,IAAIlY,EAAE68L,IAAIW,QAAQ,SAAS/4M,GAAG,IAAIqH,EAAEkwC,EAAEv3C,GAAG,GAAGqH,EAAE,OAAOA,EAAE,IAAIkU,EAAE+tH,EAAE37F,EAAEvpB,EAAE,IAAI,IAAI,IAAIgnH,KAAK33G,EAAE,GAAGA,EAAEyZ,eAAek+F,GAAG,CAAC,IAAW5zH,GAAG8xH,EAAEtpI,EAAE2tC,EAAZla,EAAE23G,GAAcrtH,KAAKq7L,IAAI9vE,EAAE,GAAG37F,EAAE,GAAG,GAAG5vB,KAAKq7L,IAAI9vE,EAAE,GAAG37F,EAAE,GAAG,GAAG5vB,KAAKq7L,IAAI9vE,EAAE,GAAG37F,EAAE,GAAG,IAAIn2B,EAAE4M,IAAIA,EAAE5M,EAAE+D,EAAE6vH,GAAG,OAAO7vH,GAAGA,EAAEw9L,QAAQX,IAAI,SAASp4M,GAAG,OAAOyzB,EAAEzzB,IAAIub,EAAE68L,IAAIO,IAAI,SAAS34M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAG,IAAIu3C,EAAEv3C,EAAE,GAAG,IAAIqH,EAAErH,EAAE,GAAG,IAAI,MAAM,CAAC,KAAK,OAAOyzB,EAAEA,EAAE,OAAO1V,KAAKq7L,KAAK3lL,EAAE,MAAM,MAAM,KAAKA,EAAE,OAAO,OAAO8jB,EAAEA,EAAE,OAAOx5B,KAAKq7L,KAAK7hK,EAAE,MAAM,MAAM,KAAKA,EAAE,OAAO,OAAOlwC,EAAEA,EAAE,OAAO0W,KAAKq7L,KAAK/xM,EAAE,MAAM,MAAM,KAAKA,EAAE,QAAQ,KAAK,MAAMosB,EAAE,MAAM8jB,EAAE,MAAMlwC,GAAG,KAAK,MAAMosB,EAAE,MAAM8jB,EAAE,MAAMlwC,KAAKkU,EAAE68L,IAAIQ,IAAI,SAAS54M,GAAG,IAAIyzB,EAAElY,EAAE68L,IAAIO,IAAI34M,GAAGu3C,EAAE9jB,EAAE,GAAGpsB,EAAEosB,EAAE,GAAG61G,EAAE71G,EAAE,GAAG,OAAOpsB,GAAG,IAAIiiI,GAAG,QAAQ/xF,GAAGA,GAAG,QAAQ,QAAQx5B,KAAKq7L,IAAI7hK,EAAE,EAAE,GAAG,MAAMA,EAAE,GAAG,IAAI,CAAC,KAAKlwC,EAAEA,EAAE,QAAQ0W,KAAKq7L,IAAI/xM,EAAE,EAAE,GAAG,MAAMA,EAAE,GAAG,KAAK,GAAG,KAAKkwC,EAAElwC,GAAG,KAAKA,GAAGiiI,EAAEA,EAAE,QAAQvrH,KAAKq7L,IAAI9vE,EAAE,EAAE,GAAG,MAAMA,EAAE,GAAG,QAAQ/tH,EAAEg9L,IAAIH,IAAI,SAASp4M,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAE3tC,EAAE,GAAG,IAAIokB,EAAEpkB,EAAE,GAAG,IAAIorI,EAAEprI,EAAE,GAAG,IAAI,GAAG,IAAIokB,EAAE,MAAM,CAACklH,EAAE,IAAI8B,EAAE9B,EAAEA,GAAG71G,EAAE,EAAE23G,GAAG7zF,EAAE6zF,EAAE,GAAGA,GAAG,EAAEhnH,GAAGgnH,EAAEhnH,EAAEgnH,EAAEhnH,GAAG7I,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,IAAIukK,EAAE,EAAEA,EAAE,EAAEA,KAAKz4K,EAAEsmC,EAAE,EAAE,IAAImyI,EAAE,IAAI,GAAGz4K,IAAIA,EAAE,GAAGA,IAA0DkU,EAAEukK,GAAG,KAA3Dx2C,EAAE,EAAEjiI,EAAE,EAAEosB,EAAE,GAAG8jB,EAAE9jB,GAAGpsB,EAAE,EAAEA,EAAE,EAAEkwC,EAAE,EAAElwC,EAAE,EAAEosB,GAAG8jB,EAAE9jB,IAAI,EAAE,EAAEpsB,GAAG,EAAEosB,GAAa,OAAOlY,GAAGA,EAAEg9L,IAAIC,IAAI,SAASx4M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAGu3C,EAAEv3C,EAAE,GAAG,IAAIqH,EAAErH,EAAE,GAAG,IAAIub,EAAEg8B,EAAE+xF,EAAEvrH,KAAKukC,IAAIj7C,EAAE,KAAK,OAAOkwC,IAAIlwC,GAAG,IAAI,EAAEA,EAAE,EAAEA,EAAEkU,GAAG+tH,GAAG,EAAEA,EAAE,EAAEA,EAAE,CAAC71G,EAAE,KAAK,IAAIpsB,EAAE,EAAEkU,GAAG+tH,EAAE/tH,GAAG,EAAEg8B,GAAGlwC,EAAEkwC,KAAUlwC,EAAEkwC,GAAG,EAAX,MAAgBh8B,EAAEi9L,IAAIJ,IAAI,SAASp4M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAG,GAAGu3C,EAAEv3C,EAAE,GAAG,IAAIqH,EAAErH,EAAE,GAAG,IAAIub,EAAEwC,KAAKs7B,MAAM5lB,GAAG,EAAE61G,EAAE71G,EAAE1V,KAAKs7B,MAAM5lB,GAAGka,EAAE,IAAItmC,GAAG,EAAEkwC,GAAGnzB,EAAE,IAAI/c,GAAG,EAAEkwC,EAAE+xF,GAAG8B,EAAE,IAAI/jI,GAAG,EAAEkwC,GAAG,EAAE+xF,IAAI,OAAOjiI,GAAG,IAAIkU,GAAG,KAAK,EAAE,MAAM,CAAClU,EAAE+jI,EAAEz9F,GAAG,KAAK,EAAE,MAAM,CAACvpB,EAAE/c,EAAEsmC,GAAG,KAAK,EAAE,MAAM,CAACA,EAAEtmC,EAAE+jI,GAAG,KAAK,EAAE,MAAM,CAACz9F,EAAEvpB,EAAE/c,GAAG,KAAK,EAAE,MAAM,CAAC+jI,EAAEz9F,EAAEtmC,GAAG,KAAK,EAAE,MAAM,CAACA,EAAEsmC,EAAEvpB,KAAK7I,EAAEi9L,IAAID,IAAI,SAASv4M,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAEvb,EAAE,GAAGspI,EAAEtpI,EAAE,GAAG,IAAI2tC,EAAE3tC,EAAE,GAAG,IAAIokB,EAAErG,KAAKukC,IAAI3U,EAAE,KAAK,OAAOtmC,GAAG,EAAEiiI,GAAG37F,EAAE4J,EAAE+xF,EAAEllH,EAAE,CAAC7I,EAAE,KAAKg8B,GAAGA,IAAI9jB,GAAG,EAAE61G,GAAGllH,IAAI,EAAEqP,EAAE,EAAEA,IAAI,GAAG,KAAKpsB,GAAG,KAAKkU,EAAEk9L,IAAIL,IAAI,SAASp4M,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAEprI,EAAE,GAAG,IAAI8/K,EAAE9/K,EAAE,GAAG,IAAIwX,EAAExX,EAAE,GAAG,IAAIukB,EAAEu7J,EAAEtoK,EAAE,OAAO+M,EAAE,IAAIu7J,GAAGv7J,EAAE/M,GAAG+M,GAAGld,EAAE,EAAE+jI,GAAG33G,EAAE1V,KAAKs7B,MAAM,EAAE+xF,IAAI,IAAI,EAAE33G,KAAKpsB,EAAE,EAAEA,GAAGkU,EAAEukK,EAAEz4K,IAAIkwC,EAAE,EAAE//B,GAAGsoK,GAAGrsJ,GAAG,QAAQ,KAAK,EAAE,KAAK,EAAE61G,EAAE/xF,EAAE5J,EAAEpyB,EAAE6I,EAAE07J,EAAE,MAAM,KAAK,EAAEx2C,EAAE/tH,EAAEoyB,EAAE4J,EAAEnzB,EAAE07J,EAAE,MAAM,KAAK,EAAEx2C,EAAEw2C,EAAEnyI,EAAE4J,EAAEnzB,EAAE7I,EAAE,MAAM,KAAK,EAAE+tH,EAAEw2C,EAAEnyI,EAAEpyB,EAAE6I,EAAEmzB,EAAE,MAAM,KAAK,EAAE+xF,EAAE/tH,EAAEoyB,EAAEmyI,EAAE17J,EAAEmzB,EAAE,MAAM,KAAK,EAAE+xF,EAAE/xF,EAAE5J,EAAEmyI,EAAE17J,EAAE7I,EAAE,MAAM,CAAC,IAAI+tH,EAAE,IAAI37F,EAAE,IAAIvpB,IAAI7I,EAAEm9L,KAAKN,IAAI,SAASp4M,GAAG,IAAeu3C,EAAEv3C,EAAE,GAAG,IAAIqH,EAAErH,EAAE,GAAG,IAAIub,EAAEvb,EAAE,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE+d,KAAKG,IAAI,EAAjEle,EAAE,GAAG,KAAiE,EAAEub,GAAGA,IAAI,KAAK,EAAEwC,KAAKG,IAAI,EAAEq5B,GAAG,EAAEh8B,GAAGA,IAAI,KAAK,EAAEwC,KAAKG,IAAI,EAAE7W,GAAG,EAAEkU,GAAGA,MAAMA,EAAEo9L,IAAIP,IAAI,SAASp4M,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAEvb,EAAE,GAAG,IAAIspI,EAAEtpI,EAAE,GAAG,IAAI2tC,EAAE3tC,EAAE,GAAG,IAAI,OAAOu3C,GAAG,MAAMh8B,EAAE,OAAO+tH,EAAE,MAAM37F,EAAEtmC,EAAE,MAAMkU,GAAG,KAAK+tH,EAAE,MAAM37F,EAAEla,GAAGA,EAAE,OAAOlY,GAAG,OAAO+tH,GAAG,MAAM37F,GAAG,SAAS,MAAM5vB,KAAKq7L,IAAI3lL,EAAE,EAAE,KAAK,KAAK,MAAMA,EAAE8jB,EAAEA,EAAE,SAAS,MAAMx5B,KAAKq7L,IAAI7hK,EAAE,EAAE,KAAK,KAAK,MAAMA,EAAElwC,EAAEA,EAAE,SAAS,MAAM0W,KAAKq7L,IAAI/xM,EAAE,EAAE,KAAK,KAAK,MAAMA,EAAE,CAAC,KAAKosB,EAAE1V,KAAKG,IAAIH,KAAKukC,IAAI,EAAE7uB,GAAG,IAAI,KAAK8jB,EAAEx5B,KAAKG,IAAIH,KAAKukC,IAAI,EAAE/K,GAAG,IAAI,KAAKlwC,EAAE0W,KAAKG,IAAIH,KAAKukC,IAAI,EAAEj7C,GAAG,MAAMkU,EAAEo9L,IAAIC,IAAI,SAAS54M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAGu3C,EAAEv3C,EAAE,GAAGqH,EAAErH,EAAE,GAAG,OAAOu3C,GAAG,IAAIlwC,GAAG,QAAQosB,GAAGA,GAAG,QAAQ,QAAQ1V,KAAKq7L,IAAI3lL,EAAE,EAAE,GAAG,MAAMA,EAAE,GAAG,IAAI,CAAC,KAAK8jB,EAAEA,EAAE,QAAQx5B,KAAKq7L,IAAI7hK,EAAE,EAAE,GAAG,MAAMA,EAAE,GAAG,KAAK,GAAG,KAAK9jB,EAAE8jB,GAAG,KAAKA,GAAGlwC,EAAEA,EAAE,QAAQ0W,KAAKq7L,IAAI/xM,EAAE,EAAE,GAAG,MAAMA,EAAE,GAAG,QAAQkU,EAAEq9L,IAAID,IAAI,SAAS34M,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAASosB,EAAEzzB,EAAE,GAAG,KAAKu3C,GAAjBv3C,EAAE,GAAoB,IAAI,KAAKqH,EAAEkwC,EAAEv3C,EAAE,GAAG,IAAI,IAAIspI,EAAEvrH,KAAKq7L,IAAI7hK,EAAE,GAAG5J,EAAE5vB,KAAKq7L,IAAI3lL,EAAE,GAAGrP,EAAErG,KAAKq7L,IAAI/xM,EAAE,GAAG,OAAOkwC,EAAE+xF,EAAE,QAAQA,GAAG/xF,EAAE,GAAG,KAAK,MAAM9jB,EAAEka,EAAE,QAAQA,GAAGla,EAAE,GAAG,KAAK,MAAMpsB,EAAE+c,EAAE,QAAQA,GAAG/c,EAAE,GAAG,KAAK,MAAM,CAACosB,GAAG,OAAO8jB,GAAG,IAAIlwC,GAAG,UAAUkU,EAAEq9L,IAAIC,IAAI,SAAS74M,GAAG,IAAIyzB,EAAE8jB,EAAEv3C,EAAE,GAAGqH,EAAErH,EAAE,GAAGub,EAAEvb,EAAE,GAAG,OAAOyzB,EAAE,IAAI1V,KAAKs7L,MAAM99L,EAAElU,GAAG,EAAE0W,KAAKu7L,IAAI,IAAI7lL,GAAG,KAAK,CAAC8jB,EAAEx5B,KAAKykL,KAAKn7L,EAAEA,EAAEkU,EAAEA,GAAGkY,IAAIlY,EAAEs9L,IAAID,IAAI,SAAS54M,GAAG,IAAIyzB,EAASpsB,EAAErH,EAAE,GAAG,OAAOyzB,EAAEzzB,EAAE,GAAG,IAAI,EAAE+d,KAAKu7L,GAAG,CAAxCt5M,EAAE,GAAyCqH,EAAE0W,KAAKw7L,IAAI9lL,GAAGpsB,EAAE0W,KAAKy7L,IAAI/lL,KAAKlY,EAAE68L,IAAIY,OAAO,SAASh5M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAGu3C,EAAEv3C,EAAE,GAAGqH,EAAErH,EAAE,GAAGspI,EAAE,KAAKxwH,UAAUA,UAAU,GAAGyC,EAAE68L,IAAII,IAAIx4M,GAAG,GAAG,GAAG,KAAKspI,EAAEvrH,KAAK06B,MAAM6wF,EAAE,KAAK,OAAO,GAAG,IAAI37F,EAAE,IAAI5vB,KAAK06B,MAAMpxC,EAAE,MAAM,EAAE0W,KAAK06B,MAAMlB,EAAE,MAAM,EAAEx5B,KAAK06B,MAAMhlB,EAAE,MAAM,OAAO,IAAI61G,IAAI37F,GAAG,IAAIA,GAAGpyB,EAAEi9L,IAAIQ,OAAO,SAASh5M,GAAG,OAAOub,EAAE68L,IAAIY,OAAOz9L,EAAEi9L,IAAIJ,IAAIp4M,GAAGA,EAAE,KAAKub,EAAE68L,IAAIa,QAAQ,SAASj5M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAGu3C,EAAEv3C,EAAE,GAAGqH,EAAErH,EAAE,GAAG,OAAOyzB,IAAI8jB,GAAGA,IAAIlwC,EAAEosB,EAAE,EAAE,GAAGA,EAAE,IAAI,IAAI1V,KAAK06B,OAAOhlB,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG1V,KAAK06B,MAAMhlB,EAAE,IAAI,GAAG,EAAE1V,KAAK06B,MAAMlB,EAAE,IAAI,GAAGx5B,KAAK06B,MAAMpxC,EAAE,IAAI,IAAIkU,EAAEy9L,OAAOZ,IAAI,SAASp4M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAG,GAAG,IAAIyzB,GAAG,IAAIA,EAAE,OAAOzzB,EAAE,KAAKyzB,GAAG,KAAK,CAACA,EAAEA,EAAE,KAAK,IAAIA,EAAEA,GAAG,IAAI8jB,EAAE,IAAI,KAAKv3C,EAAE,KAAK,MAAM,EAAE,EAAEyzB,GAAG8jB,EAAE,KAAK9jB,GAAG,EAAE,GAAG8jB,EAAE,KAAK9jB,GAAG,EAAE,GAAG8jB,EAAE,MAAMh8B,EAAE09L,QAAQb,IAAI,SAASp4M,GAAG,GAAGA,GAAG,IAAI,CAAC,IAAIyzB,EAAE,IAAIzzB,EAAE,KAAK,EAAE,MAAM,CAACyzB,EAAEA,EAAEA,GAAG,IAAI8jB,EAAE,OAAOv3C,GAAG,GAAG,CAAC+d,KAAKs7B,MAAMr5C,EAAE,IAAI,EAAE,IAAI+d,KAAKs7B,OAAO9B,EAAEv3C,EAAE,IAAI,GAAG,EAAE,IAAIu3C,EAAE,EAAE,EAAE,MAAMh8B,EAAE68L,IAAIU,IAAI,SAAS94M,GAAG,IAAIyzB,KAAK,IAAI1V,KAAK06B,MAAMz4C,EAAE,MAAM,MAAM,IAAI+d,KAAK06B,MAAMz4C,EAAE,MAAM,IAAI,IAAI+d,KAAK06B,MAAMz4C,EAAE,MAAMyxB,SAAS,IAAI2b,cAAc,MAAM,SAASod,UAAU/2B,EAAE9vB,QAAQ8vB,GAAGlY,EAAEu9L,IAAIV,IAAI,SAASp4M,GAAG,IAAIyzB,EAAEzzB,EAAEyxB,SAAS,IAAIqf,MAAM,4BAA4B,IAAIrd,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI8jB,EAAE9jB,EAAE,GAAG,IAAIA,EAAE,GAAG9vB,SAAS4zC,EAAEA,EAAEx1B,MAAM,IAAI9Y,IAAK,SAASjJ,GAAG,OAAOA,EAAEA,IAAKwvC,KAAK,KAAK,IAAInoC,EAAE2nC,SAASuI,EAAE,IAAI,MAAM,CAAClwC,GAAG,GAAG,IAAIA,GAAG,EAAE,IAAI,IAAIA,IAAIkU,EAAE68L,IAAIc,IAAI,SAASl5M,GAAG,IAAIyzB,EAAE8jB,EAAEv3C,EAAE,GAAG,IAAIqH,EAAErH,EAAE,GAAG,IAAIub,EAAEvb,EAAE,GAAG,IAAIspI,EAAEvrH,KAAKukC,IAAIvkC,KAAKukC,IAAI/K,EAAElwC,GAAGkU,GAAGoyB,EAAE5vB,KAAKG,IAAIH,KAAKG,IAAIq5B,EAAElwC,GAAGkU,GAAG6I,EAAEklH,EAAE37F,EAAE,OAAOla,EAAErP,GAAG,EAAE,EAAEklH,IAAI/xF,GAAGlwC,EAAEkU,GAAG6I,EAAE,EAAEklH,IAAIjiI,EAAE,GAAGkU,EAAEg8B,GAAGnzB,EAAE,GAAGmzB,EAAElwC,GAAG+c,EAAE,EAAEqP,GAAG,EAAE,CAAC,KAAKA,GAAG,GAAG,IAAIrP,EAAE,KAAKA,EAAE,EAAEupB,GAAG,EAAEvpB,GAAG,KAAK7I,EAAEg9L,IAAIW,IAAI,SAASl5M,GAAG,IAA0BqH,EAAtBosB,EAAEzzB,EAAE,GAAG,IAAIu3C,EAAEv3C,EAAE,GAAG,IAAQub,EAAE,EAAE,OAAOlU,EAAEkwC,EAAE,GAAG,EAAE9jB,EAAE8jB,EAAE,EAAE9jB,GAAG,EAAE8jB,IAAI,IAAIh8B,GAAGg8B,EAAE,GAAGlwC,IAAI,EAAEA,IAAI,CAACrH,EAAE,GAAG,IAAIqH,EAAE,IAAIkU,IAAIA,EAAEi9L,IAAIU,IAAI,SAASl5M,GAAG,IAAeu3C,EAAEv3C,EAAE,GAAG,IAAIqH,EAApBrH,EAAE,GAAG,IAAmBu3C,EAAEh8B,EAAE,EAAE,OAAOlU,EAAE,IAAIkU,GAAGg8B,EAAElwC,IAAI,EAAEA,IAAI,CAACrH,EAAE,GAAG,IAAIqH,EAAE,IAAIkU,IAAIA,EAAE29L,IAAId,IAAI,SAASp4M,GAAG,IAAeu3C,EAAEv3C,EAAE,GAAG,IAAIqH,EAAErH,EAAE,GAAG,IAAI,GAAG,IAAIu3C,EAAE,MAAM,CAAC,IAAIlwC,EAAE,IAAIA,EAAE,IAAIA,GAAG,IAAIkU,EAAE+tH,EAAE,CAAC,EAAE,EAAE,GAAG37F,EAAlF3tC,EAAE,GAAG,IAAiF,EAAE,EAAEokB,EAAEupB,EAAE,EAAEy9F,EAAE,EAAEhnH,EAAE,OAAOrG,KAAKs7B,MAAM1L,IAAI,KAAK,EAAE27F,EAAE,GAAG,EAAEA,EAAE,GAAGllH,EAAEklH,EAAE,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,GAAG8B,EAAE9B,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAGllH,EAAE,MAAM,KAAK,EAAEklH,EAAE,GAAG,EAAEA,EAAE,GAAG8B,EAAE9B,EAAE,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,GAAGllH,EAAEklH,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAE,MAAM,QAAQA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG8B,EAAE,MAAiB,CAAC,KAAK7zF,EAAE+xF,EAAE,IAApB/tH,GAAG,EAAEg8B,GAAGlwC,IAAkB,KAAKkwC,EAAE+xF,EAAE,GAAG/tH,GAAG,KAAKg8B,EAAE+xF,EAAE,GAAG/tH,KAAKA,EAAE29L,IAAIV,IAAI,SAASx4M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAG,IAAIu3C,EAAE9jB,EAAEzzB,EAAE,GAAG,KAAK,EAAEyzB,GAAGpsB,EAAE,EAAE,OAAOkwC,EAAE,IAAIlwC,EAAEosB,EAAE8jB,GAAG,CAACv3C,EAAE,GAAG,IAAIqH,EAAE,IAAIkwC,IAAIh8B,EAAE29L,IAAIX,IAAI,SAASv4M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAG,IAAIu3C,EAAEv3C,EAAE,GAAG,KAAK,EAAEyzB,GAAG,GAAGA,EAAEpsB,EAAE,EAAE,OAAOkwC,EAAE,GAAGA,EAAE,GAAGlwC,EAAEosB,GAAG,EAAE8jB,GAAGA,GAAG,IAAIA,EAAE,IAAIlwC,EAAEosB,GAAG,GAAG,EAAE8jB,KAAK,CAACv3C,EAAE,GAAG,IAAIqH,EAAE,IAAIkwC,IAAIh8B,EAAE29L,IAAIT,IAAI,SAASz4M,GAAG,IAAIyzB,EAAEzzB,EAAE,GAAG,IAAIu3C,EAAE9jB,EAAEzzB,EAAE,GAAG,KAAK,EAAEyzB,GAAG,MAAM,CAACzzB,EAAE,GAAG,KAAKu3C,EAAE9jB,GAAG,KAAK,EAAE8jB,KAAKh8B,EAAEk9L,IAAIS,IAAI,SAASl5M,GAAG,IAAeu3C,EAAE,EAAEv3C,EAAE,GAAG,IAAIqH,EAAEkwC,EAAxBv3C,EAAE,GAAG,IAAuBub,EAAE,EAAE,OAAOlU,EAAE,IAAIkU,GAAGg8B,EAAElwC,IAAI,EAAEA,IAAI,CAACrH,EAAE,GAAG,IAAIqH,EAAE,IAAIkU,IAAIA,EAAE49L,MAAMf,IAAI,SAASp4M,GAAG,MAAM,CAACA,EAAE,GAAG,MAAM,IAAIA,EAAE,GAAG,MAAM,IAAIA,EAAE,GAAG,MAAM,MAAMub,EAAE68L,IAAIe,MAAM,SAASn5M,GAAG,MAAM,CAACA,EAAE,GAAG,IAAI,MAAMA,EAAE,GAAG,IAAI,MAAMA,EAAE,GAAG,IAAI,QAAQub,EAAE82L,KAAK+F,IAAI,SAASp4M,GAAG,MAAM,CAACA,EAAE,GAAG,IAAI,IAAIA,EAAE,GAAG,IAAI,IAAIA,EAAE,GAAG,IAAI,MAAMub,EAAE82L,KAAKkG,IAAIh9L,EAAE82L,KAAKmG,IAAI,SAASx4M,GAAG,MAAM,CAAC,EAAE,EAAEA,EAAE,KAAKub,EAAE82L,KAAKoG,IAAI,SAASz4M,GAAG,MAAM,CAAC,EAAE,IAAIA,EAAE,KAAKub,EAAE82L,KAAKqG,KAAK,SAAS14M,GAAG,MAAM,CAAC,EAAE,EAAE,EAAEA,EAAE,KAAKub,EAAE82L,KAAKuG,IAAI,SAAS54M,GAAG,MAAM,CAACA,EAAE,GAAG,EAAE,IAAIub,EAAE82L,KAAKyG,IAAI,SAAS94M,GAAG,IAAIyzB,EAAE,IAAI1V,KAAK06B,MAAMz4C,EAAE,GAAG,IAAI,KAAKu3C,IAAI9jB,GAAG,KAAKA,GAAG,GAAGA,GAAGhC,SAAS,IAAI2b,cAAc,MAAM,SAASod,UAAUjT,EAAE5zC,QAAQ4zC,GAAGh8B,EAAE68L,IAAI/F,KAAK,SAASryM,GAAG,MAAM,EAAEA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,EAAE,IAAI,QAAkH,SAASqH,EAAErH,GAAG,IAAIyzB,EAAE,WAAW,IAAI,IAAIzzB,EAAE,GAAGyzB,EAAEzX,OAAOC,KAAKs7B,GAAGlwC,EAAEosB,EAAE9vB,OAAO4X,EAAE,EAAEA,EAAElU,EAAEkU,IAAIvb,EAAEyzB,EAAElY,IAAI,CAAC0rI,UAAU,EAAE7gH,OAAO,MAAM,OAAOpmC,EAAzG,GAA8GqH,EAAE,CAACrH,GAAG,IAAIyzB,EAAEzzB,GAAGinJ,SAAS,EAAE5/I,EAAE1D,QAAQ,IAAI,IAAI4X,EAAElU,EAAEo3B,MAAM6qG,EAAEttH,OAAOC,KAAKs7B,EAAEh8B,IAAIoyB,EAAE27F,EAAE3lI,OAAOygB,EAAE,EAAEA,EAAEupB,EAAEvpB,IAAI,CAAC,IAAIgnH,EAAE9B,EAAEllH,GAAG07J,EAAErsJ,EAAE23G,IAAI,IAAI00C,EAAE74B,WAAW64B,EAAE74B,SAASxzH,EAAElY,GAAG0rI,SAAS,EAAE64B,EAAE15I,OAAO7qB,EAAElU,EAAEi0C,QAAQ8vF,IAAI,OAAO33G,EAAE,SAASlY,EAAEvb,EAAEyzB,GAAG,OAAO,SAAS8jB,GAAG,OAAO9jB,EAAEzzB,EAAEu3C,KAAK,SAAS+xF,EAAEtpI,EAAEyzB,GAAG,IAAI,IAAIpsB,EAAE,CAACosB,EAAEzzB,GAAGomC,OAAOpmC,GAAGspI,EAAE/xF,EAAE9jB,EAAEzzB,GAAGomC,QAAQpmC,GAAG2tC,EAAEla,EAAEzzB,GAAGomC,OAAO3S,EAAEka,GAAGvH,QAAQ/+B,EAAEi0C,QAAQ7nB,EAAEka,GAAGvH,QAAQkjG,EAAE/tH,EAAEg8B,EAAE9jB,EAAEka,GAAGvH,QAAQuH,GAAG27F,GAAG37F,EAAEla,EAAEka,GAAGvH,OAAO,OAAOkjG,EAAEmwE,WAAWpyM,EAAEiiI,EAAE,IAAI37F,EAAE,GAAG3xB,OAAOC,KAAKs7B,GAAG1kC,QAAS,SAAS7S,GAAG2tC,EAAE3tC,GAAG,GAAGgc,OAAOu3B,eAAe5F,EAAE3tC,GAAG,WAAW,CAACe,MAAMw2C,EAAEv3C,GAAGq4M,WAAWr8L,OAAOu3B,eAAe5F,EAAE3tC,GAAG,SAAS,CAACe,MAAMw2C,EAAEv3C,GAAGs4M,SAAS,IAAI7kL,EAAE,SAASzzB,GAAG,IAAI,IAAIyzB,EAAEpsB,EAAErH,GAAGu3C,EAAE,GAAGh8B,EAAES,OAAOC,KAAKwX,GAAGka,EAAEpyB,EAAE5X,OAAOygB,EAAE,EAAEA,EAAEupB,EAAEvpB,IAAI,CAAC,IAAIgnH,EAAE7vH,EAAE6I,GAAG,OAAOqP,EAAE23G,GAAGhlG,SAASmR,EAAE6zF,GAAG9B,EAAE8B,EAAE33G,IAAI,OAAO8jB,EAA7H,CAAgIv3C,GAAGgc,OAAOC,KAAKwX,GAAG5gB,QAAS,SAAS0kC,GAAG,IAAIlwC,EAAEosB,EAAE8jB,GAAG5J,EAAE3tC,GAAGu3C,GAAG,SAASv3C,GAAG,IAAIyzB,EAAE,SAASA,GAAG,GAAG,MAAMA,EAAE,OAAOA,EAAE3a,UAAUnV,OAAO,IAAI8vB,EAAE1pB,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5b,YAAY,IAAIy+B,EAAEv3C,EAAEyzB,GAAG,GAAG,iBAAiB8jB,EAAE,IAAI,IAAIlwC,EAAEkwC,EAAE5zC,OAAO4X,EAAE,EAAEA,EAAElU,EAAEkU,IAAIg8B,EAAEh8B,GAAGwC,KAAK06B,MAAMlB,EAAEh8B,IAAI,OAAOg8B,GAAG,MAAM,eAAev3C,IAAIyzB,EAAEgmL,WAAWz5M,EAAEy5M,YAAYhmL,EAApQ,CAAuQpsB,GAAGsmC,EAAE3tC,GAAGu3C,GAAGgc,IAAI,SAASvzD,GAAG,IAAIyzB,EAAE,SAASA,GAAG,OAAO,MAAMA,EAAEA,GAAG3a,UAAUnV,OAAO,IAAI8vB,EAAE1pB,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5b,YAAY9Y,EAAEyzB,KAAK,MAAM,eAAezzB,IAAIyzB,EAAEgmL,WAAWz5M,EAAEy5M,YAAYhmL,EAAzK,CAA4KpsB,OAAS,IAAI+c,EAAEupB,EAAEy9F,EAAE,CAAC4jE,UAAU,CAAC,IAAI,IAAI,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,EAAE,EAAE,GAAGC,eAAe,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,EAAE,KAAKC,WAAW,CAAC,IAAI,GAAG,KAAKC,MAAM,CAAC,IAAI,GAAG,IAAIC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,GAAG,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAIC,MAAM,CAAC,IAAI,IAAI,IAAIC,eAAe,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,GAAG,IAAIC,KAAK,CAAC,EAAE,IAAI,KAAKC,SAAS,CAAC,EAAE,EAAE,KAAKC,SAAS,CAAC,EAAE,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,IAAIC,SAAS,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,EAAE,IAAI,GAAGC,SAAS,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,EAAE,KAAKC,eAAe,CAAC,GAAG,IAAI,IAAIC,WAAW,CAAC,IAAI,IAAI,GAAGC,WAAW,CAAC,IAAI,GAAG,KAAKC,QAAQ,CAAC,IAAI,EAAE,GAAGC,WAAW,CAAC,IAAI,IAAI,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,GAAG,GAAG,KAAKC,cAAc,CAAC,GAAG,GAAG,IAAIC,cAAc,CAAC,GAAG,GAAG,IAAIC,cAAc,CAAC,EAAE,IAAI,KAAKC,WAAW,CAAC,IAAI,EAAE,KAAKC,SAAS,CAAC,IAAI,GAAG,KAAKC,YAAY,CAAC,EAAE,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,GAAG,IAAI,KAAKC,UAAU,CAAC,IAAI,GAAG,IAAIC,YAAY,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,GAAG,IAAI,IAAIC,QAAQ,CAAC,IAAI,EAAE,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAIC,KAAK,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,EAAE,IAAI,GAAGC,YAAY,CAAC,IAAI,IAAI,IAAIC,KAAK,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,GAAG,IAAIC,OAAO,CAAC,GAAG,EAAE,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,GAAGC,aAAa,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,qBAAqB,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,GAAG,IAAI,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,IAAI,GAAGC,UAAU,CAAC,GAAG,IAAI,IAAIC,MAAM,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,EAAE,KAAKC,OAAO,CAAC,IAAI,EAAE,GAAGC,iBAAiB,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,EAAE,EAAE,KAAKC,aAAa,CAAC,IAAI,GAAG,KAAKC,aAAa,CAAC,IAAI,IAAI,KAAKC,eAAe,CAAC,GAAG,IAAI,KAAKC,gBAAgB,CAAC,IAAI,IAAI,KAAKC,kBAAkB,CAAC,EAAE,IAAI,KAAKC,gBAAgB,CAAC,GAAG,IAAI,KAAKC,gBAAgB,CAAC,IAAI,GAAG,KAAKC,aAAa,CAAC,GAAG,GAAG,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,SAAS,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,EAAE,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,IAAI,IAAIC,OAAO,CAAC,IAAI,IAAI,GAAGC,UAAU,CAAC,IAAI,GAAG,GAAGC,OAAO,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,cAAc,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,IAAIC,KAAK,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,EAAE,KAAKC,cAAc,CAAC,IAAI,GAAG,KAAKC,IAAI,CAAC,IAAI,EAAE,GAAGC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,GAAG,IAAI,KAAKC,YAAY,CAAC,IAAI,GAAG,IAAIC,OAAO,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,IAAIC,SAAS,CAAC,GAAG,IAAI,IAAIC,SAAS,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,GAAG,IAAIC,OAAO,CAAC,IAAI,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,GAAG,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,UAAU,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,KAAKC,YAAY,CAAC,EAAE,IAAI,KAAKC,UAAU,CAAC,GAAG,IAAI,KAAKC,IAAI,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,EAAE,IAAI,KAAKC,QAAQ,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,GAAG,IAAIC,UAAU,CAAC,GAAG,IAAI,KAAKC,OAAO,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,MAAM,CAAC,IAAI,IAAI,KAAKC,WAAW,CAAC,IAAI,IAAI,KAAKC,OAAO,CAAC,IAAI,IAAI,GAAGC,YAAY,CAAC,IAAI,IAAI,KAAKr4B,EAAE,CAAC45B,QAAQliM,EAAEmiM,QAAQp1L,EAAEq1L,OAAO,SAAS55M,GAAG,IAAIyzB,EAAEjc,EAAExX,GAAG,OAAOyzB,GAAGA,EAAEzqB,MAAM,EAAE,IAAI6wM,OAAO,SAAS75M,GAAG,IAAIyzB,EAAElP,EAAEvkB,GAAG,OAAOyzB,GAAGA,EAAEzqB,MAAM,EAAE,IAAI8wM,OAAO1qK,EAAE2qK,SAAS,SAAS/5M,GAAG,IAAIyzB,EAAEjc,EAAExX,GAAG,OAAGyzB,IAAiBA,EAAElP,EAAEvkB,MAAkByzB,EAAE2b,EAAEpvC,IAAlCyzB,EAAE,QAAyB,GAAuBumL,UAAU,SAASh6M,EAAEyzB,GAAqC,OAAlCA,OAAE,IAASA,GAAG,IAAIzzB,EAAE2D,OAAO8vB,EAAEzzB,EAAE,GAAS,IAAIP,EAAEO,EAAE,IAAIP,EAAEO,EAAE,IAAIP,EAAEO,EAAE,KAAKyzB,GAAG,GAAGA,EAAE,EAAEh0B,EAAEse,KAAK06B,MAAM,IAAIhlB,IAAI,KAAKwmL,UAAU,SAASj6M,EAAEyzB,GAAG,OAAGA,EAAE,GAAGzzB,EAAE,IAAIA,EAAE,GAAG,EAASy4B,EAAEz4B,EAAEyzB,GAAS,OAAOzzB,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKk6M,WAAWzhL,EAAE0hL,cAAc,SAASn6M,EAAEyzB,GAAG,OAAGA,EAAE,GAAGzzB,EAAE,IAAIA,EAAE,GAAG,EAASuqI,EAAEvqI,EAAEyzB,GAA8F,OAArF1V,KAAK06B,MAAMz4C,EAAE,GAAG,IAAI,KAA0E,MAAnE+d,KAAK06B,MAAMz4C,EAAE,GAAG,IAAI,KAAuD,MAAhD+d,KAAK06B,MAAMz4C,EAAE,GAAG,IAAI,KAAoC,MAAMo6M,eAAe7vE,EAAE8vE,UAAU,SAASr6M,EAAEyzB,GAAG,OAAGA,EAAE,GAAGzzB,EAAE,IAAIA,EAAE,GAAG,EAAS+oI,EAAE/oI,EAAEyzB,GAAS,OAAOzzB,EAAE,GAAG,KAAKA,EAAE,GAAG,MAAMA,EAAE,GAAG,MAAMs6M,WAAWvxE,EAAEwxE,UAAU,SAASv6M,EAAEyzB,GAAwC,YAArC,IAASA,IAAIA,OAAE,IAASzzB,EAAE,GAAGA,EAAE,GAAG,GAAS,OAAOA,EAAE,GAAG,KAAKA,EAAE,GAAG,MAAMA,EAAE,GAAG,UAAK,IAASyzB,GAAG,IAAIA,EAAE,KAAKA,EAAE,IAAI,KAAKslL,QAAQ,SAAS/4M,GAAG,OAAOwb,EAAExb,EAAEgJ,MAAM,EAAE,MAAM,SAASwO,EAAExX,GAAG,GAAGA,EAAE,CAAC,IAAIyzB,EAAE,CAAC,EAAE,EAAE,GAAG8jB,EAAE,EAAElwC,EAAErH,EAAE8wC,MAAM,0BAA0Bv1B,EAAE,GAAG,GAAGlU,EAAE,CAACkU,GAAGlU,EAAEA,EAAE,IAAI,GAAG,IAAI,IAAIiiI,EAAE,EAAEA,EAAE71G,EAAE9vB,OAAO2lI,IAAI71G,EAAE61G,GAAGt6F,SAAS3nC,EAAEiiI,GAAGjiI,EAAEiiI,GAAG,IAAI/tH,IAAIg8B,EAAEx5B,KAAK06B,MAAMzJ,SAASzzB,EAAEA,EAAE,IAAI,IAAI,KAAK,UAAU,GAAGlU,EAAErH,EAAE8wC,MAAM,yCAAyC,CAAe,IAAdv1B,EAAElU,EAAE,GAAGA,EAAEA,EAAE,GAAOiiI,EAAE,EAAEA,EAAE71G,EAAE9vB,OAAO2lI,IAAI71G,EAAE61G,GAAGt6F,SAAS3nC,EAAE2B,MAAM,EAAEsgI,EAAE,EAAEA,EAAE,GAAG,IAAI/tH,IAAIg8B,EAAEx5B,KAAK06B,MAAMzJ,SAASzzB,EAAE,IAAI,IAAI,KAAK,UAAU,GAAGlU,EAAErH,EAAE8wC,MAAM,4FAA4F,CAAC,IAAIw4F,EAAE,EAAEA,EAAE71G,EAAE9vB,OAAO2lI,IAAI71G,EAAE61G,GAAGt6F,SAAS3nC,EAAEiiI,EAAE,IAAI/xF,EAAElqB,WAAWhmB,EAAE,SAAS,GAAGA,EAAErH,EAAE8wC,MAAM,8GAA8G,CAAC,IAAIw4F,EAAE,EAAEA,EAAE71G,EAAE9vB,OAAO2lI,IAAI71G,EAAE61G,GAAGvrH,KAAK06B,MAAM,KAAKprB,WAAWhmB,EAAEiiI,EAAE,KAAK/xF,EAAElqB,WAAWhmB,EAAE,SAAS,GAAGA,EAAErH,EAAE8wC,MAAM,SAAS,CAAC,GAAG,eAAezpC,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,KAAKosB,EAAE23G,EAAE/jI,EAAE,KAAK,OAAO,IAAIiiI,EAAE,EAAEA,EAAE71G,EAAE9vB,OAAO2lI,IAAI71G,EAAE61G,GAAGhnH,EAAEmR,EAAE61G,GAAG,EAAE,KAAK,OAAO/xF,EAAEA,GAAG,GAAGA,EAAEj1B,EAAEi1B,EAAE,EAAE,GAAG,EAAE9jB,EAAE,GAAG8jB,EAAE9jB,GAAG,SAASlP,EAAEvkB,GAAG,GAAGA,EAAE,CAAC,IAAIyzB,EAAEzzB,EAAE8wC,MAAM,4GAA4G,GAAGrd,EAAE,CAAC,IAAI8jB,EAAElqB,WAAWoG,EAAE,IAAI,MAAM,CAACnR,EAAE0sB,SAASvb,EAAE,IAAI,EAAE,KAAKnR,EAAE+K,WAAWoG,EAAE,IAAI,EAAE,KAAKnR,EAAE+K,WAAWoG,EAAE,IAAI,EAAE,KAAKnR,EAAEm4B,MAAMlD,GAAG,EAAEA,EAAE,EAAE,MAAM,SAASnI,EAAEpvC,GAAG,GAAGA,EAAE,CAAC,IAAIyzB,EAAEzzB,EAAE8wC,MAAM,0GAA0G,GAAGrd,EAAE,CAAC,IAAI8jB,EAAElqB,WAAWoG,EAAE,IAAI,MAAM,CAACnR,EAAE0sB,SAASvb,EAAE,IAAI,EAAE,KAAKnR,EAAE+K,WAAWoG,EAAE,IAAI,EAAE,KAAKnR,EAAE+K,WAAWoG,EAAE,IAAI,EAAE,KAAKnR,EAAEm4B,MAAMlD,GAAG,EAAEA,EAAE,EAAE,MAAM,SAAS9e,EAAEz4B,EAAEyzB,GAAG,YAAO,IAASA,IAAIA,OAAE,IAASzzB,EAAE,GAAGA,EAAE,GAAG,GAAG,QAAQA,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKyzB,EAAE,IAAI,SAAS82G,EAAEvqI,EAAEyzB,GAAG,MAAM,QAAQ1V,KAAK06B,MAAMz4C,EAAE,GAAG,IAAI,KAAK,MAAM+d,KAAK06B,MAAMz4C,EAAE,GAAG,IAAI,KAAK,MAAM+d,KAAK06B,MAAMz4C,EAAE,GAAG,IAAI,KAAK,OAAOyzB,GAAGzzB,EAAE,IAAI,GAAG,IAAI,SAAS+oI,EAAE/oI,EAAEyzB,GAAG,YAAO,IAASA,IAAIA,OAAE,IAASzzB,EAAE,GAAGA,EAAE,GAAG,GAAG,QAAQA,EAAE,GAAG,KAAKA,EAAE,GAAG,MAAMA,EAAE,GAAG,MAAMyzB,EAAE,IAAI,SAASnR,EAAEtiB,EAAEyzB,EAAE8jB,GAAG,OAAOx5B,KAAKG,IAAIH,KAAKukC,IAAI7uB,EAAEzzB,GAAGu3C,GAAG,SAAS93C,EAAEO,GAAG,IAAIyzB,EAAEzzB,EAAEyxB,SAAS,IAAI2b,cAAc,OAAO3Z,EAAE9vB,OAAO,EAAE,IAAI8vB,EAAEA,EAAE,IAAIjY,EAAE,GAAG,IAAI,IAAIuf,KAAKqwG,EAAE5vH,EAAE4vH,EAAErwG,IAAIA,EAAE,IAAIjW,EAAE,SAAS9kB,GAAG,OAAOA,aAAa8kB,EAAE9kB,EAAER,gBAAgBslB,GAAGtlB,KAAKywI,OAAM,EAAGzwI,KAAK8T,OAAO,CAAC8kM,IAAI,CAAC,EAAE,EAAE,GAAGG,IAAI,CAAC,EAAE,EAAE,GAAGC,IAAI,CAAC,EAAE,EAAE,GAAGC,IAAI,CAAC,EAAE,EAAE,GAAGC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG8B,MAAM,QAAQ,iBAAiBx6M,GAAGyzB,EAAEqsJ,EAAE45B,QAAQ15M,IAAIR,KAAKi7M,UAAU,MAAMhnL,IAAIA,EAAEqsJ,EAAE65B,QAAQ35M,IAAIR,KAAKi7M,UAAU,MAAMhnL,IAAIA,EAAEqsJ,EAAEg6B,OAAO95M,KAAKR,KAAKi7M,UAAU,MAAMhnL,GAAG,iBAAiBzzB,SAAI,KAAUyzB,EAAEzzB,GAAGspI,QAAG,IAAS71G,EAAE+iL,IAAIh3M,KAAKi7M,UAAU,MAAMhnL,QAAG,IAASA,EAAE23G,QAAG,IAAS33G,EAAEinL,UAAUl7M,KAAKi7M,UAAU,MAAMhnL,QAAG,IAASA,EAAEh0B,QAAG,IAASg0B,EAAE1yB,MAAMvB,KAAKi7M,UAAU,MAAMhnL,QAAG,IAASA,EAAE/O,QAAG,IAAS+O,EAAEknL,UAAUn7M,KAAKi7M,UAAU,MAAMhnL,QAAG,IAASA,EAAE2b,QAAG,IAAS3b,EAAE28K,MAAM5wM,KAAKi7M,UAAU,OAAOhnL,MAAM,IAAI3O,EAAE9kB,GAAG,IAAIyzB,GAAG3O,EAAEoN,UAAU,CAAC8xD,QAAQ,WAAW,OAAOxkF,KAAKywI,OAAOmoE,IAAI,WAAW,OAAO54M,KAAKo7M,SAAS,MAAM9hM,YAAYy/L,IAAI,WAAW,OAAO/4M,KAAKo7M,SAAS,MAAM9hM,YAAY0/L,IAAI,WAAW,OAAOh5M,KAAKo7M,SAAS,MAAM9hM,YAAY2/L,IAAI,WAAW,OAAOj5M,KAAKo7M,SAAS,MAAM9hM,YAAY4/L,KAAK,WAAW,OAAOl5M,KAAKo7M,SAAS,OAAO9hM,YAAY+hM,SAAS,WAAW,OAAOr7M,KAAK8T,OAAO8kM,KAAK0C,SAAS,WAAW,OAAOt7M,KAAK8T,OAAOilM,KAAKwC,SAAS,WAAW,OAAOv7M,KAAK8T,OAAOklM,KAAKwC,SAAS,WAAW,IAAIh7M,EAAER,KAAK8T,OAAO,OAAO,IAAItT,EAAEw6M,MAAMx6M,EAAEy4M,IAAIjgM,OAAO,CAACxY,EAAEw6M,QAAQx6M,EAAEy4M,KAAKwC,UAAU,WAAW,OAAOz7M,KAAK8T,OAAOolM,MAAMwC,UAAU,WAAW,IAAIl7M,EAAER,KAAK8T,OAAO,OAAOtT,EAAEo4M,IAAI5/L,OAAO,CAACxY,EAAEw6M,SAASW,UAAU,WAAW,IAAIn7M,EAAER,KAAK8T,OAAO,OAAOtT,EAAEu4M,IAAI//L,OAAO,CAACxY,EAAEw6M,SAASA,MAAM,SAASx6M,GAAG,YAAO,IAASA,EAAER,KAAK8T,OAAOknM,OAAOh7M,KAAKi7M,UAAU,QAAQz6M,GAAGR,OAAOg3M,IAAI,SAASx2M,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIsyM,MAAM,SAAStyM,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIyvM,KAAK,SAASzvM,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIq7M,IAAI,SAASr7M,GAAG,OAAOA,IAAIA,GAAGA,GAAG,KAAK,EAAE,IAAIA,EAAEA,GAAGR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIs7M,WAAW,SAASt7M,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAI06M,UAAU,SAAS16M,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIu7M,YAAY,SAASv7M,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAI26M,UAAU,SAAS36M,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIw7M,UAAU,SAASx7M,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIe,MAAM,SAASf,GAAG,OAAOR,KAAK47M,WAAW,MAAM,EAAEp7M,IAAIowM,KAAK,SAASpwM,GAAG,OAAOR,KAAK47M,WAAW,OAAO,EAAEp7M,IAAIq0M,QAAQ,SAASr0M,GAAG,OAAOR,KAAK47M,WAAW,OAAO,EAAEp7M,IAAIk4M,OAAO,SAASl4M,GAAG,OAAOR,KAAK47M,WAAW,OAAO,EAAEp7M,IAAIuvM,MAAM,SAASvvM,GAAG,OAAOR,KAAK47M,WAAW,OAAO,EAAEp7M,IAAIg6M,UAAU,WAAW,OAAOl6B,EAAEk6B,UAAUx6M,KAAK8T,OAAO8kM,MAAM6B,UAAU,WAAW,OAAOn6B,EAAEm6B,UAAUz6M,KAAK8T,OAAO8kM,IAAI54M,KAAK8T,OAAOknM,QAAQN,WAAW,WAAW,OAAOp6B,EAAEo6B,WAAW16M,KAAK8T,OAAO8kM,IAAI54M,KAAK8T,OAAOknM,QAAQL,cAAc,WAAW,OAAOr6B,EAAEq6B,cAAc36M,KAAK8T,OAAO8kM,IAAI54M,KAAK8T,OAAOknM,QAAQH,UAAU,WAAW,OAAOv6B,EAAEu6B,UAAU76M,KAAK8T,OAAOilM,IAAI/4M,KAAK8T,OAAOknM,QAAQF,WAAW,WAAW,OAAOx6B,EAAEw6B,WAAW96M,KAAK8T,OAAOilM,IAAI/4M,KAAK8T,OAAOknM,QAAQD,UAAU,WAAW,OAAOz6B,EAAEy6B,UAAU/6M,KAAK8T,OAAOmlM,IAAIj5M,KAAK8T,OAAOknM,QAAQzB,QAAQ,WAAW,OAAOj5B,EAAEi5B,QAAQv5M,KAAK8T,OAAO8kM,IAAI54M,KAAK8T,OAAOknM,QAAQiB,UAAU,WAAW,IAAIz7M,EAAER,KAAK8T,OAAO8kM,IAAI,OAAOp4M,EAAE,IAAI,GAAGA,EAAE,IAAI,EAAEA,EAAE,IAAI07M,WAAW,WAAW,IAAI,IAAI17M,EAAER,KAAK8T,OAAO8kM,IAAI3kL,EAAE,GAAG8jB,EAAE,EAAEA,EAAEv3C,EAAE2D,OAAO4zC,IAAI,CAAC,IAAIlwC,EAAErH,EAAEu3C,GAAG,IAAI9jB,EAAE8jB,GAAGlwC,GAAG,OAAOA,EAAE,MAAM0W,KAAKq7L,KAAK/xM,EAAE,MAAM,MAAM,KAAK,MAAM,MAAMosB,EAAE,GAAG,MAAMA,EAAE,GAAG,MAAMA,EAAE,IAAIkoL,SAAS,SAAS37M,GAAG,IAAIyzB,EAAEj0B,KAAKk8M,aAAankK,EAAEv3C,EAAE07M,aAAa,OAAOjoL,EAAE8jB,GAAG9jB,EAAE,MAAM8jB,EAAE,MAAMA,EAAE,MAAM9jB,EAAE,MAAM+hE,MAAM,SAASx1F,GAAG,IAAIyzB,EAAEj0B,KAAKm8M,SAAS37M,GAAG,OAAOyzB,GAAG,IAAI,MAAMA,GAAG,IAAI,KAAK,IAAImoL,KAAK,WAAW,IAAI57M,EAAER,KAAK8T,OAAO8kM,IAAI,OAAO,IAAIp4M,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIA,EAAE,IAAI,IAAI,KAAK67M,MAAM,WAAW,OAAOr8M,KAAKo8M,QAAQE,OAAO,WAAW,IAAI,IAAI97M,EAAE,GAAGyzB,EAAE,EAAEA,EAAE,EAAEA,IAAIzzB,EAAEyzB,GAAG,IAAIj0B,KAAK8T,OAAO8kM,IAAI3kL,GAAG,OAAOj0B,KAAKi7M,UAAU,MAAMz6M,GAAGR,MAAMu8M,QAAQ,SAAS/7M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOilM,IAAI,OAAO9kL,EAAE,IAAIA,EAAE,GAAGzzB,EAAER,KAAKi7M,UAAU,MAAMhnL,GAAGj0B,MAAMw8M,OAAO,SAASh8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOilM,IAAI,OAAO9kL,EAAE,IAAIA,EAAE,GAAGzzB,EAAER,KAAKi7M,UAAU,MAAMhnL,GAAGj0B,MAAMy8M,SAAS,SAASj8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOilM,IAAI,OAAO9kL,EAAE,IAAIA,EAAE,GAAGzzB,EAAER,KAAKi7M,UAAU,MAAMhnL,GAAGj0B,MAAM08M,WAAW,SAASl8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOilM,IAAI,OAAO9kL,EAAE,IAAIA,EAAE,GAAGzzB,EAAER,KAAKi7M,UAAU,MAAMhnL,GAAGj0B,MAAM28M,OAAO,SAASn8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOmlM,IAAI,OAAOhlL,EAAE,IAAIA,EAAE,GAAGzzB,EAAER,KAAKi7M,UAAU,MAAMhnL,GAAGj0B,MAAM48M,QAAQ,SAASp8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOmlM,IAAI,OAAOhlL,EAAE,IAAIA,EAAE,GAAGzzB,EAAER,KAAKi7M,UAAU,MAAMhnL,GAAGj0B,MAAM68M,UAAU,WAAW,IAAIr8M,EAAER,KAAK8T,OAAO8kM,IAAI3kL,EAAE,GAAGzzB,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIA,EAAE,GAAG,OAAOR,KAAKi7M,UAAU,MAAM,CAAChnL,EAAEA,EAAEA,IAAIj0B,MAAM88M,QAAQ,SAASt8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOknM,MAAM,OAAOh7M,KAAKi7M,UAAU,QAAQhnL,EAAEA,EAAEzzB,GAAGR,MAAM+8M,QAAQ,SAASv8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOknM,MAAM,OAAOh7M,KAAKi7M,UAAU,QAAQhnL,EAAEA,EAAEzzB,GAAGR,MAAMg9M,OAAO,SAASx8M,GAAG,IAAIyzB,EAAEj0B,KAAK8T,OAAOilM,IAAIhhK,GAAG9jB,EAAE,GAAGzzB,GAAG,IAAI,OAAOyzB,EAAE,GAAG8jB,EAAE,EAAE,IAAIA,EAAEA,EAAE/3C,KAAKi7M,UAAU,MAAMhnL,GAAGj0B,MAAMi9M,IAAI,SAASz8M,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAEqH,OAAE,IAASosB,EAAE,GAAGA,EAAElY,EAAE,EAAElU,EAAE,EAAEiiI,EAAE9pI,KAAKg7M,QAAQjjK,EAAEijK,QAAQ7sK,IAAIpyB,EAAE+tH,IAAI,EAAE/tH,GAAGA,EAAE+tH,IAAI,EAAE/tH,EAAE+tH,IAAI,GAAG,EAAEllH,EAAE,EAAEupB,EAAE,OAAOnuC,KAAK44M,IAAIzqK,EAAEnuC,KAAKg3M,MAAMpyL,EAAEmzB,EAAEi/J,MAAM7oK,EAAEnuC,KAAK8yM,QAAQluL,EAAEmzB,EAAE+6J,QAAQ3kK,EAAEnuC,KAAKiwM,OAAOrrL,EAAEmzB,EAAEk4J,QAAQ+K,MAAMh7M,KAAKg7M,QAAQnzM,EAAEkwC,EAAEijK,SAAS,EAAEnzM,KAAK0hE,OAAO,WAAW,OAAOvpE,KAAK44M,OAAOh1D,MAAM,WAAW,IAAIpjJ,EAAEyzB,EAAE8jB,EAAE,IAAIzyB,EAAEzd,EAAE7H,KAAK8T,OAAOiI,EAAEg8B,EAAEjkC,OAAO,IAAI,IAAIg2H,KAAKjiI,EAAEA,EAAE6lC,eAAeo8F,KAAY,oBAAoB71G,EAAE,GAAGhC,SAASiD,KAAzC10B,EAAEqH,EAAEiiI,KAA8C/tH,EAAE+tH,GAAGtpI,EAAEgJ,MAAM,GAAG,oBAAoByqB,EAAElY,EAAE+tH,GAAGtpI,EAAEuqC,QAAQ/V,MAAM,0BAA0Bx0B,IAAI,OAAOu3C,IAAIzyB,EAAEoN,UAAUwqL,OAAO,CAACtE,IAAI,CAAC,MAAM,QAAQ,QAAQG,IAAI,CAAC,MAAM,aAAa,aAAaC,IAAI,CAAC,MAAM,aAAa,SAASC,IAAI,CAAC,MAAM,YAAY,aAAaC,KAAK,CAAC,OAAO,UAAU,SAAS,UAAU5zL,EAAEoN,UAAUyqL,MAAM,CAACvE,IAAI,CAAC,IAAI,IAAI,KAAKG,IAAI,CAAC,IAAI,IAAI,KAAKC,IAAI,CAAC,IAAI,IAAI,KAAKC,IAAI,CAAC,IAAI,IAAI,KAAKC,KAAK,CAAC,IAAI,IAAI,IAAI,MAAM5zL,EAAEoN,UAAU0qL,UAAU,SAAS58M,GAAG,IAAI,IAAIyzB,EAAEj0B,KAAK8T,OAAOikC,EAAE,GAAGlwC,EAAE,EAAEA,EAAErH,EAAE2D,OAAO0D,IAAIkwC,EAAEv3C,EAAEuvC,OAAOloC,IAAIosB,EAAEzzB,GAAGqH,GAAG,OAAO,IAAIosB,EAAE+mL,QAAQjjK,EAAEh8B,EAAEkY,EAAE+mL,OAAOjjK,GAAGzyB,EAAEoN,UAAUuoL,UAAU,SAASz6M,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE/b,KAAK8T,OAAOg2H,EAAE9pI,KAAKk9M,OAAO/uK,EAAEnuC,KAAKm9M,MAAMvxE,EAAE,EAAE,GAAG5rI,KAAKywI,OAAM,EAAG,UAAUjwI,EAAEorI,EAAE33G,OAAO,GAAGA,EAAE9vB,OAAO4X,EAAEvb,GAAGyzB,EAAEzqB,MAAM,EAAEhJ,EAAE2D,QAAQynI,EAAE33G,EAAEzzB,EAAE2D,aAAa,QAAG,IAAS8vB,EAAEzzB,EAAEuvC,OAAO,IAAI,CAAC,IAAIgI,EAAE,EAAEA,EAAEv3C,EAAE2D,OAAO4zC,IAAIh8B,EAAEvb,GAAGu3C,GAAG9jB,EAAEzzB,EAAEuvC,OAAOgI,IAAI6zF,EAAE33G,EAAElY,OAAO,QAAG,IAASkY,EAAE61G,EAAEtpI,GAAG,IAAI,CAAC,IAAI8/K,EAAEx2C,EAAEtpI,GAAG,IAAIu3C,EAAE,EAAEA,EAAEv3C,EAAE2D,OAAO4zC,IAAIh8B,EAAEvb,GAAGu3C,GAAG9jB,EAAEqsJ,EAAEvoI,IAAI6zF,EAAE33G,EAAE+mL,MAAM,GAAGj/L,EAAEi/L,MAAMz8L,KAAKukC,IAAI,EAAEvkC,KAAKG,IAAI,OAAE,IAASktH,EAAE7vH,EAAEi/L,MAAMpvE,IAAI,UAAUprI,EAAE,OAAM,EAAG,IAAIu3C,EAAE,EAAEA,EAAEv3C,EAAE2D,OAAO4zC,IAAIlwC,EAAE0W,KAAKukC,IAAI,EAAEvkC,KAAKG,IAAIyvB,EAAE3tC,GAAGu3C,GAAGh8B,EAAEvb,GAAGu3C,KAAKh8B,EAAEvb,GAAGu3C,GAAGx5B,KAAK06B,MAAMpxC,GAAG,IAAI,IAAImQ,KAAK8xH,EAAE9xH,IAAIxX,IAAIub,EAAE/D,GAAG4M,EAAEpkB,GAAGwX,GAAG+D,EAAEvb,KAAK,OAAM,GAAI8kB,EAAEoN,UAAU0oL,SAAS,SAAS56M,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAE,GAAG,YAAO,IAAS8jB,EAAE/3C,KAAKo9M,UAAU58M,IAAI,iBAAiBu3C,IAAIA,EAAExtC,MAAMmoB,UAAUlpB,MAAM0rB,KAAKjB,IAAIj0B,KAAKi7M,UAAUz6M,EAAEu3C,GAAG/3C,OAAOslB,EAAEoN,UAAUkpL,WAAW,SAASp7M,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK8T,OAAOtT,GAAG,YAAO,IAASu3C,EAAElwC,EAAEosB,IAAG8jB,IAAIlwC,EAAEosB,KAASpsB,EAAEosB,GAAG8jB,EAAE/3C,KAAKi7M,UAAUz6M,EAAEqH,IAA9B7H,OAAwC,oBAAoBmrB,SAASA,OAAOkyL,MAAM/3L,GAAG,IAAI8sF,EAAE9sF,EAAE,SAASk3G,EAAEh8H,GAAG,OAAO,IAAI,CAAC,YAAY,YAAY,eAAeyI,QAAQzI,GAAG,IAAI0kB,EAAEE,EAAE,CAACsvG,KAAK,aAAap4C,KAAKp3D,EAAE,EAAE,WAAW,OAAOA,MAAMo4L,cAAc,SAAS98M,GAAG,OAAO,MAAMA,GAAGwV,QAAQ,SAASxV,GAAG,GAAG+J,MAAMyL,SAASzL,MAAMyL,QAAQxV,GAAG,OAAM,EAAG,IAAIyzB,EAAEzX,OAAOkW,UAAUT,SAASiD,KAAK10B,GAAG,MAAM,YAAYyzB,EAAEsjB,OAAO,EAAE,IAAI,WAAWtjB,EAAEsjB,QAAQ,IAAI8zJ,SAAS,SAAS7qM,GAAG,OAAO,OAAOA,GAAG,oBAAoBgc,OAAOkW,UAAUT,SAASiD,KAAK10B,IAAIg+G,SAAQ,qBAARA,EAAQ,yCAARA,EAAQ,yCAARA,EAAQ,CAAC,SAASh+G,GAAG,OAAO,iBAAiBA,GAAGA,aAAamO,SAAS6vG,SAASh+G,KAAI+8M,eAAe,SAAS/8M,EAAEyzB,GAAG,YAAO,IAASzzB,EAAEyzB,EAAEzzB,GAAGg9M,sBAAsB,SAASh9M,EAAEyzB,EAAE8jB,GAAG,OAAO3yB,EAAEm4L,eAAen4L,EAAEpP,QAAQxV,GAAGA,EAAEyzB,GAAGzzB,EAAEu3C,IAAI9kB,SAAS,SAASzyB,EAAEyzB,EAAE8jB,GAAG,GAAGv3C,GAAG,mBAAmBA,EAAE00B,KAAK,OAAO10B,EAAEm3C,MAAMI,EAAE9jB,IAAIwpL,KAAK,SAASj9M,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAE,GAAG/oB,EAAEpP,QAAQxV,GAAG,GAAGspI,EAAEtpI,EAAE2D,OAAO0D,EAAE,IAAIkU,EAAE+tH,EAAE,EAAE/tH,GAAG,EAAEA,IAAIkY,EAAEiB,KAAK6iB,EAAEv3C,EAAEub,GAAGA,QAAQ,IAAIA,EAAE,EAAEA,EAAE+tH,EAAE/tH,IAAIkY,EAAEiB,KAAK6iB,EAAEv3C,EAAEub,GAAGA,QAAQ,GAAGqJ,EAAEimL,SAAS7qM,GAAG,IAAIspI,GAAG37F,EAAE3xB,OAAOC,KAAKjc,IAAI2D,OAAO4X,EAAE,EAAEA,EAAE+tH,EAAE/tH,IAAIkY,EAAEiB,KAAK6iB,EAAEv3C,EAAE2tC,EAAEpyB,IAAIoyB,EAAEpyB,KAAK2hM,YAAY,SAASl9M,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE,IAAItpI,IAAIyzB,GAAGzzB,EAAE2D,SAAS8vB,EAAE9vB,OAAO,OAAM,EAAG,IAAI4zC,EAAE,EAAElwC,EAAErH,EAAE2D,OAAO4zC,EAAElwC,IAAIkwC,EAAE,GAAU+xF,EAAE71G,EAAE8jB,IAAXh8B,EAAEvb,EAAEu3C,cAAuBxtC,OAAOu/H,aAAav/H,OAAO,IAAI6a,EAAEs4L,YAAY3hM,EAAE+tH,GAAG,OAAM,OAAQ,GAAG/tH,IAAI+tH,EAAE,OAAM,EAAG,OAAM,GAAI8Z,MAAM,SAASpjJ,GAAG,GAAG4kB,EAAEpP,QAAQxV,GAAG,OAAOA,EAAEiJ,IAAI2b,EAAEw+H,OAAO,GAAGx+H,EAAEimL,SAAS7qM,GAAG,CAAC,IAAI,IAAIyzB,EAAEzX,OAAOlX,OAAO9E,GAAGu3C,EAAEv7B,OAAOC,KAAKjc,GAAGqH,EAAEkwC,EAAE5zC,OAAO4X,EAAE,EAAEA,EAAElU,IAAIkU,EAAEkY,EAAE8jB,EAAEh8B,IAAIqJ,EAAEw+H,MAAMpjJ,EAAEu3C,EAAEh8B,KAAK,OAAOkY,EAAE,OAAOzzB,GAAGm9M,QAAQ,SAASn9M,EAAEyzB,EAAE8jB,EAAElwC,GAAG,GAAG20H,EAAEh8H,GAAG,CAAC,IAAIub,EAAEkY,EAAEzzB,GAAGspI,EAAE/xF,EAAEv3C,GAAG4kB,EAAEimL,SAAStvL,IAAIqJ,EAAEimL,SAASvhE,GAAG1kH,EAAE/H,MAAMtB,EAAE+tH,EAAEjiI,GAAGosB,EAAEzzB,GAAG4kB,EAAEw+H,MAAM9Z,KAAK8zE,UAAU,SAASp9M,EAAEyzB,EAAE8jB,GAAG,GAAGykF,EAAEh8H,GAAG,CAAC,IAAIqH,EAAEosB,EAAEzzB,GAAGub,EAAEg8B,EAAEv3C,GAAG4kB,EAAEimL,SAASxjM,IAAIud,EAAEimL,SAAStvL,GAAGqJ,EAAEy4L,QAAQh2M,EAAEkU,GAAGkY,EAAEyZ,eAAeltC,KAAKyzB,EAAEzzB,GAAG4kB,EAAEw+H,MAAM7nI,MAAMsB,MAAM,SAAS7c,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAExmH,EAAEpP,QAAQie,GAAGA,EAAE,CAACA,GAAGqsJ,EAAE10C,EAAEznI,OAAO,IAAIihB,EAAEimL,SAAS7qM,GAAG,OAAOA,EAAE,IAAIqH,GAAGkwC,EAAEA,GAAG,IAAI+lK,QAAQ14L,EAAEu4L,QAAQ5hM,EAAE,EAAEA,EAAEukK,IAAIvkK,EAAE,GAAUqJ,EAAEimL,SAATp3K,EAAE23G,EAAE7vH,IAAiB,IAAI6I,EAAE,EAAEupB,GAAG27F,EAAEttH,OAAOC,KAAKwX,IAAI9vB,OAAOygB,EAAEupB,IAAIvpB,EAAE/c,EAAEiiI,EAAEllH,GAAGpkB,EAAEyzB,EAAE8jB,GAAG,OAAOv3C,GAAGq9M,QAAQ,SAASr9M,EAAEyzB,GAAG,OAAO7O,EAAE/H,MAAM7c,EAAEyzB,EAAE,CAAC6pL,OAAO14L,EAAEw4L,aAAaG,OAAOvhM,OAAOuqB,QAAQ,SAASvmC,GAAG,OAAO4kB,EAAE/H,MAAM7c,EAAE,GAAGgJ,MAAM0rB,KAAK5b,UAAU,GAAG,CAACwkM,OAAO,SAASt9M,EAAEyzB,EAAE8jB,GAAG9jB,EAAEzzB,GAAGu3C,EAAEv3C,OAAOw9M,SAAS,SAASx9M,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAEv3C,GAAGA,EAAEktC,eAAe,eAAeltC,EAAE0vC,YAAY,WAAW,OAAOjc,EAAE0jB,MAAM33C,KAAKsZ,YAAYzR,EAAE,WAAW7H,KAAKkwC,YAAY6H,GAAG,OAAOlwC,EAAE6qB,UAAUuB,EAAEvB,UAAUqlB,EAAErlB,UAAU,IAAI7qB,EAAEkwC,EAAEgmK,OAAO34L,EAAE44L,SAASx9M,GAAG4kB,EAAE24L,OAAOhmK,EAAErlB,UAAUlyB,GAAGu3C,EAAEkmK,UAAUhqL,EAAEvB,UAAUqlB,GAAGmmK,YAAY,SAAS19M,EAAEyzB,EAAE8jB,EAAElwC,QAAG,IAASosB,GAAG8W,QAAQ24B,KAAKljE,EAAE,MAAMu3C,EAAE,gCAAgClwC,EAAE,eAAes2M,EAAE/4L,EAAEA,EAAEg5L,aAAah5L,EAAE6N,SAAS7N,EAAEnc,QAAQ,SAASzI,EAAEyzB,EAAE8jB,GAAG,OAAOxtC,MAAMmoB,UAAUzpB,QAAQisB,KAAK10B,EAAEyzB,EAAE8jB,IAAI3yB,EAAEi5L,kBAAkBj5L,EAAEm4L,eAAen4L,EAAEk5L,yBAAyBl5L,EAAEo4L,sBAAsB,IAAIe,EAAE,CAACC,OAAO,SAASh+M,GAAG,OAAOA,GAAGi+M,WAAW,SAASj+M,GAAG,OAAOA,EAAEA,GAAGk+M,YAAY,SAASl+M,GAAG,OAAOA,GAAGA,EAAE,IAAIm+M,cAAc,SAASn+M,GAAG,OAAOA,GAAG,IAAI,EAAE,GAAGA,EAAEA,GAAG,MAAMA,GAAGA,EAAE,GAAG,IAAIo+M,YAAY,SAASp+M,GAAG,OAAOA,EAAEA,EAAEA,GAAGq+M,aAAa,SAASr+M,GAAG,OAAOA,GAAG,GAAGA,EAAEA,EAAE,GAAGs+M,eAAe,SAASt+M,GAAG,OAAOA,GAAG,IAAI,EAAE,GAAGA,EAAEA,EAAEA,EAAE,KAAKA,GAAG,GAAGA,EAAEA,EAAE,IAAIu+M,YAAY,SAASv+M,GAAG,OAAOA,EAAEA,EAAEA,EAAEA,GAAGw+M,aAAa,SAASx+M,GAAG,SAASA,GAAG,GAAGA,EAAEA,EAAEA,EAAE,IAAIy+M,eAAe,SAASz+M,GAAG,OAAOA,GAAG,IAAI,EAAE,GAAGA,EAAEA,EAAEA,EAAEA,GAAG,KAAKA,GAAG,GAAGA,EAAEA,EAAEA,EAAE,IAAI0+M,YAAY,SAAS1+M,GAAG,OAAOA,EAAEA,EAAEA,EAAEA,EAAEA,GAAG2+M,aAAa,SAAS3+M,GAAG,OAAOA,GAAG,GAAGA,EAAEA,EAAEA,EAAEA,EAAE,GAAG4+M,eAAe,SAAS5+M,GAAG,OAAOA,GAAG,IAAI,EAAE,GAAGA,EAAEA,EAAEA,EAAEA,EAAEA,EAAE,KAAKA,GAAG,GAAGA,EAAEA,EAAEA,EAAEA,EAAE,IAAI6+M,WAAW,SAAS7+M,GAAG,OAAO,EAAE+d,KAAKw7L,IAAIv5M,GAAG+d,KAAKu7L,GAAG,KAAKwF,YAAY,SAAS9+M,GAAG,OAAO+d,KAAKy7L,IAAIx5M,GAAG+d,KAAKu7L,GAAG,KAAKyF,cAAc,SAAS/+M,GAAG,OAAO,IAAI+d,KAAKw7L,IAAIx7L,KAAKu7L,GAAGt5M,GAAG,IAAIg/M,WAAW,SAASh/M,GAAG,OAAO,IAAIA,EAAE,EAAE+d,KAAKq7L,IAAI,EAAE,IAAIp5M,EAAE,KAAKi/M,YAAY,SAASj/M,GAAG,OAAO,IAAIA,EAAE,EAAE,EAAE+d,KAAKq7L,IAAI,GAAG,GAAGp5M,IAAIk/M,cAAc,SAASl/M,GAAG,OAAO,IAAIA,EAAE,EAAE,IAAIA,EAAE,GAAGA,GAAG,IAAI,EAAE,GAAG+d,KAAKq7L,IAAI,EAAE,IAAIp5M,EAAE,IAAI,IAAI,EAAE+d,KAAKq7L,IAAI,GAAG,KAAKp5M,KAAKm/M,WAAW,SAASn/M,GAAG,OAAOA,GAAG,EAAEA,IAAI+d,KAAKykL,KAAK,EAAExiM,EAAEA,GAAG,IAAIo/M,YAAY,SAASp/M,GAAG,OAAO+d,KAAKykL,KAAK,GAAGxiM,GAAG,GAAGA,IAAIq/M,cAAc,SAASr/M,GAAG,OAAOA,GAAG,IAAI,GAAG,IAAI+d,KAAKykL,KAAK,EAAExiM,EAAEA,GAAG,GAAG,IAAI+d,KAAKykL,KAAK,GAAGxiM,GAAG,GAAGA,GAAG,IAAIs/M,cAAc,SAASt/M,GAAG,IAAIyzB,EAAE,QAAQ8jB,EAAE,EAAElwC,EAAE,EAAE,OAAO,IAAIrH,EAAE,EAAE,IAAIA,EAAE,GAAGu3C,IAAIA,EAAE,IAAIlwC,EAAE,GAAGA,EAAE,EAAEosB,EAAE8jB,EAAE,GAAG9jB,EAAE8jB,GAAG,EAAEx5B,KAAKu7L,IAAIv7L,KAAKwhM,KAAK,EAAEl4M,IAAIA,EAAE0W,KAAKq7L,IAAI,EAAE,IAAIp5M,GAAG,IAAI+d,KAAKy7L,KAAKx5M,EAAEyzB,IAAI,EAAE1V,KAAKu7L,IAAI/hK,KAAKioK,eAAe,SAASx/M,GAAG,IAAIyzB,EAAE,QAAQ8jB,EAAE,EAAElwC,EAAE,EAAE,OAAO,IAAIrH,EAAE,EAAE,IAAIA,EAAE,GAAGu3C,IAAIA,EAAE,IAAIlwC,EAAE,GAAGA,EAAE,EAAEosB,EAAE8jB,EAAE,GAAG9jB,EAAE8jB,GAAG,EAAEx5B,KAAKu7L,IAAIv7L,KAAKwhM,KAAK,EAAEl4M,GAAGA,EAAE0W,KAAKq7L,IAAI,GAAG,GAAGp5M,GAAG+d,KAAKy7L,KAAKx5M,EAAEyzB,IAAI,EAAE1V,KAAKu7L,IAAI/hK,GAAG,IAAIkoK,iBAAiB,SAASz/M,GAAG,IAAIyzB,EAAE,QAAQ8jB,EAAE,EAAElwC,EAAE,EAAE,OAAO,IAAIrH,EAAE,EAAE,IAAIA,GAAG,IAAI,GAAGu3C,IAAIA,EAAE,KAAKlwC,EAAE,GAAGA,EAAE,EAAEosB,EAAE8jB,EAAE,GAAG9jB,EAAE8jB,GAAG,EAAEx5B,KAAKu7L,IAAIv7L,KAAKwhM,KAAK,EAAEl4M,GAAGrH,EAAE,EAAEqH,EAAE0W,KAAKq7L,IAAI,EAAE,IAAIp5M,GAAG,IAAI+d,KAAKy7L,KAAKx5M,EAAEyzB,IAAI,EAAE1V,KAAKu7L,IAAI/hK,IAAI,GAAGlwC,EAAE0W,KAAKq7L,IAAI,GAAG,IAAIp5M,GAAG,IAAI+d,KAAKy7L,KAAKx5M,EAAEyzB,IAAI,EAAE1V,KAAKu7L,IAAI/hK,GAAG,GAAG,IAAImoK,WAAW,SAAS1/M,GAAG,IAAIyzB,EAAE,QAAQ,OAAOzzB,EAAEA,IAAIyzB,EAAE,GAAGzzB,EAAEyzB,IAAIksL,YAAY,SAAS3/M,GAAG,IAAIyzB,EAAE,QAAQ,OAAOzzB,GAAG,GAAGA,IAAIyzB,EAAE,GAAGzzB,EAAEyzB,GAAG,GAAGmsL,cAAc,SAAS5/M,GAAG,IAAIyzB,EAAE,QAAQ,OAAOzzB,GAAG,IAAI,EAAEA,EAAEA,IAAI,GAAGyzB,GAAG,QAAQzzB,EAAEyzB,GAAG,GAAG,KAAKzzB,GAAG,GAAGA,IAAI,GAAGyzB,GAAG,QAAQzzB,EAAEyzB,GAAG,IAAIosL,aAAa,SAAS7/M,GAAG,OAAO,EAAE+9M,EAAE+B,cAAc,EAAE9/M,IAAI8/M,cAAc,SAAS9/M,GAAG,OAAOA,EAAE,EAAE,KAAK,OAAOA,EAAEA,EAAEA,EAAE,EAAE,KAAK,QAAQA,GAAG,IAAI,MAAMA,EAAE,IAAIA,EAAE,IAAI,KAAK,QAAQA,GAAG,KAAK,MAAMA,EAAE,MAAM,QAAQA,GAAG,MAAM,MAAMA,EAAE,SAAS+/M,gBAAgB,SAAS//M,GAAG,OAAOA,EAAE,GAAG,GAAG+9M,EAAE8B,aAAa,EAAE7/M,GAAG,GAAG+9M,EAAE+B,cAAc,EAAE9/M,EAAE,GAAG,KAAKmqI,EAAE,CAAC4kC,QAAQgvC,GAAGJ,EAAEqC,cAAcjC,EAAE,IAAI1X,EAAEtoL,KAAKu7L,GAAG2G,EAAE5Z,EAAE,IAAI6Z,EAAE,EAAE7Z,EAAE8Z,EAAE9Z,EAAE,EAAE+Z,EAAE/Z,EAAE,EAAEga,EAAE,EAAEha,EAAE,EAAE/iL,EAAE,CAACpT,MAAM,SAASlQ,GAAGA,EAAEoB,IAAIk/M,UAAU,EAAE,EAAEtgN,EAAEkJ,MAAMlJ,EAAEgK,SAASu2M,YAAY,SAASvgN,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,GAAG,GAAGA,EAAE,CAAC,IAAI37F,EAAE5vB,KAAKG,IAAIorH,EAAE/tH,EAAE,EAAElU,EAAE,GAAG+c,EAAEqP,EAAEka,EAAEy9F,EAAE7zF,EAAE5J,EAAEmyI,EAAErsJ,EAAEpsB,EAAEsmC,EAAEn2B,EAAE+/B,EAAEh8B,EAAEoyB,EAAE3tC,EAAEwgN,OAAO/sL,EAAE23G,GAAGhnH,EAAE07J,GAAG10C,EAAE5zH,GAAGxX,EAAEygN,IAAIr8L,EAAEgnH,EAAEz9F,GAAG04J,GAAG8Z,GAAGngN,EAAEygN,IAAI3gC,EAAE10C,EAAEz9F,GAAGwyK,EAAE,GAAGngN,EAAEygN,IAAI3gC,EAAEtoK,EAAEm2B,EAAE,EAAEwyK,GAAGngN,EAAEygN,IAAIr8L,EAAE5M,EAAEm2B,EAAEwyK,EAAE9Z,IAAIjiL,EAAE07J,GAAG9/K,EAAEwgN,OAAOp8L,EAAEmzB,GAAGv3C,EAAEygN,IAAI3gC,EAAE10C,EAAEz9F,GAAGwyK,EAAEA,GAAGngN,EAAEygN,IAAIr8L,EAAEgnH,EAAEz9F,EAAEwyK,EAAE9Z,EAAE8Z,IAAI/0E,EAAE5zH,GAAGxX,EAAEygN,IAAIr8L,EAAEgnH,EAAEz9F,GAAG04J,EAAE,GAAGrmM,EAAEygN,IAAIr8L,EAAE5M,EAAEm2B,EAAE,EAAE04J,IAAIrmM,EAAEygN,IAAIr8L,EAAEgnH,EAAEz9F,GAAG04J,EAAEA,GAAGrmM,EAAE0gN,YAAY1gN,EAAEwgN,OAAO/sL,EAAE8jB,QAAQv3C,EAAEutE,KAAK95C,EAAE8jB,EAAElwC,EAAEkU,IAAIolM,UAAU,SAAS3gN,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,GAAG,IAAI37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,GAAG+kH,GAAG,GAAG22E,EAAE,GAAGxsL,GAAG,iBAAiBA,IAAI,+BAA+Bka,EAAEla,EAAEhC,aAAa,+BAA+Bkc,GAAG,OAAO3tC,EAAE4gN,OAAO5gN,EAAE48K,UAAUv1K,EAAEkU,GAAGvb,EAAEw8M,OAAOj4L,GAAGvkB,EAAE8jJ,UAAUrwH,GAAGA,EAAEvqB,MAAM,GAAGuqB,EAAEzpB,OAAO,EAAEypB,EAAEvqB,MAAMuqB,EAAEzpB,aAAahK,EAAE6gN,UAAU,KAAKpmK,MAAMlD,IAAIA,GAAG,GAAG,CAAC,OAAOv3C,EAAE8gN,YAAYrtL,GAAG,QAAQzzB,EAAEygN,IAAIp5M,EAAEkU,EAAEg8B,EAAE,EAAE2oK,GAAGlgN,EAAE0gN,YAAY,MAAM,IAAI,WAAW1gN,EAAEwgN,OAAOn5M,EAAE0W,KAAKy7L,IAAIj1L,GAAGgzB,EAAEh8B,EAAEwC,KAAKw7L,IAAIh1L,GAAGgzB,GAAGhzB,GAAG87L,EAAErgN,EAAE+gN,OAAO15M,EAAE0W,KAAKy7L,IAAIj1L,GAAGgzB,EAAEh8B,EAAEwC,KAAKw7L,IAAIh1L,GAAGgzB,GAAGhzB,GAAG87L,EAAErgN,EAAE+gN,OAAO15M,EAAE0W,KAAKy7L,IAAIj1L,GAAGgzB,EAAEh8B,EAAEwC,KAAKw7L,IAAIh1L,GAAGgzB,GAAGv3C,EAAE0gN,YAAY,MAAM,IAAI,cAAc5gC,EAAEvoI,GAAG//B,EAAE,KAAK+/B,GAAGnzB,EAAErG,KAAKw7L,IAAIh1L,EAAE67L,GAAGtgC,EAAE10C,EAAErtH,KAAKy7L,IAAIj1L,EAAE67L,GAAGtgC,EAAE9/K,EAAEygN,IAAIp5M,EAAE+c,EAAE7I,EAAE6vH,EAAE5zH,EAAE+M,EAAE8hL,EAAE9hL,EAAE47L,GAAGngN,EAAEygN,IAAIp5M,EAAE+jI,EAAE7vH,EAAE6I,EAAE5M,EAAE+M,EAAE47L,EAAE57L,GAAGvkB,EAAEygN,IAAIp5M,EAAE+c,EAAE7I,EAAE6vH,EAAE5zH,EAAE+M,EAAEA,EAAE47L,GAAGngN,EAAEygN,IAAIp5M,EAAE+jI,EAAE7vH,EAAE6I,EAAE5M,EAAE+M,EAAE47L,EAAE57L,EAAE8hL,GAAGrmM,EAAE0gN,YAAY,MAAM,IAAI,OAAO,IAAIp3E,EAAE,CAACw2C,EAAE/hK,KAAKijM,QAAQzpK,EAAEv3C,EAAEutE,KAAKlmE,EAAEy4K,EAAEvkK,EAAEukK,EAAE,EAAEA,EAAE,EAAEA,GAAG,MAAMv7J,GAAG67L,EAAE,IAAI,UAAUh8L,EAAErG,KAAKw7L,IAAIh1L,GAAGgzB,EAAE6zF,EAAErtH,KAAKy7L,IAAIj1L,GAAGgzB,EAAEv3C,EAAEwgN,OAAOn5M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAE+gN,OAAO15M,EAAE+jI,EAAE7vH,EAAE6I,GAAGpkB,EAAE+gN,OAAO15M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAE+gN,OAAO15M,EAAE+jI,EAAE7vH,EAAE6I,GAAGpkB,EAAE0gN,YAAY,MAAM,IAAI,WAAWn8L,GAAG67L,EAAE,IAAI,QAAQh8L,EAAErG,KAAKw7L,IAAIh1L,GAAGgzB,EAAE6zF,EAAErtH,KAAKy7L,IAAIj1L,GAAGgzB,EAAEv3C,EAAEwgN,OAAOn5M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAE+gN,OAAO15M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAEwgN,OAAOn5M,EAAE+jI,EAAE7vH,EAAE6I,GAAGpkB,EAAE+gN,OAAO15M,EAAE+jI,EAAE7vH,EAAE6I,GAAG,MAAM,IAAI,OAAOA,EAAErG,KAAKw7L,IAAIh1L,GAAGgzB,EAAE6zF,EAAErtH,KAAKy7L,IAAIj1L,GAAGgzB,EAAEv3C,EAAEwgN,OAAOn5M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAE+gN,OAAO15M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAEwgN,OAAOn5M,EAAE+jI,EAAE7vH,EAAE6I,GAAGpkB,EAAE+gN,OAAO15M,EAAE+jI,EAAE7vH,EAAE6I,GAAGG,GAAG67L,EAAEh8L,EAAErG,KAAKw7L,IAAIh1L,GAAGgzB,EAAE6zF,EAAErtH,KAAKy7L,IAAIj1L,GAAGgzB,EAAEv3C,EAAEwgN,OAAOn5M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAE+gN,OAAO15M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAEwgN,OAAOn5M,EAAE+jI,EAAE7vH,EAAE6I,GAAGpkB,EAAE+gN,OAAO15M,EAAE+jI,EAAE7vH,EAAE6I,GAAG,MAAM,IAAI,OAAOA,EAAErG,KAAKw7L,IAAIh1L,GAAGgzB,EAAE6zF,EAAErtH,KAAKy7L,IAAIj1L,GAAGgzB,EAAEv3C,EAAEwgN,OAAOn5M,EAAE+c,EAAE7I,EAAE6vH,GAAGprI,EAAE+gN,OAAO15M,EAAE+c,EAAE7I,EAAE6vH,GAAG,MAAM,IAAI,OAAOprI,EAAEwgN,OAAOn5M,EAAEkU,GAAGvb,EAAE+gN,OAAO15M,EAAE0W,KAAKw7L,IAAIh1L,GAAGgzB,EAAEh8B,EAAEwC,KAAKy7L,IAAIj1L,GAAGgzB,GAAGv3C,EAAEw4G,OAAOx4G,EAAEihN,WAAWC,eAAe,SAASlhN,EAAEyzB,GAAG,OAAOzzB,EAAE+6B,EAAEtH,EAAEhoB,KAAK,MAAMzL,EAAE+6B,EAAEtH,EAAE/nB,MAAM,MAAM1L,EAAE8kB,EAAE2O,EAAEloB,IAAI,MAAMvL,EAAE8kB,EAAE2O,EAAEjoB,OAAO,MAAM21M,SAAS,SAASnhN,EAAEyzB,GAAGzzB,EAAE4gN,OAAO5gN,EAAE8gN,YAAY9gN,EAAEutE,KAAK95C,EAAEhoB,KAAKgoB,EAAEloB,IAAIkoB,EAAE/nB,MAAM+nB,EAAEhoB,KAAKgoB,EAAEjoB,OAAOioB,EAAEloB,KAAKvL,EAAEohN,QAAQC,WAAW,SAASrhN,GAAGA,EAAE6gN,WAAWE,OAAO,SAAS/gN,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAEg8B,EAAE+pK,YAAY,GAAG/lM,EAAE,CAAC,GAAG,WAAWA,EAAE,CAAC,IAAI+tH,GAAG71G,EAAEsH,EAAEwc,EAAExc,GAAG,EAAE/6B,EAAE+gN,OAAOz3E,EAAEjiI,EAAEkwC,EAAEzyB,EAAE2O,EAAE3O,GAAG9kB,EAAE+gN,OAAOz3E,EAAEjiI,EAAEosB,EAAE3O,EAAEyyB,EAAEzyB,OAAO,UAAUvJ,IAAIlU,GAAG,UAAUkU,GAAGlU,EAAErH,EAAE+gN,OAAOttL,EAAEsH,EAAEwc,EAAEzyB,GAAG9kB,EAAE+gN,OAAOxpK,EAAExc,EAAEtH,EAAE3O,GAAG9kB,EAAE+gN,OAAOxpK,EAAExc,EAAEwc,EAAEzyB,QAAQyyB,EAAEgqK,QAAQvhN,EAAEwhN,cAAcn6M,EAAEosB,EAAEguL,sBAAsBhuL,EAAEiuL,kBAAkBr6M,EAAEosB,EAAEkuL,sBAAsBluL,EAAEmuL,kBAAkBv6M,EAAEkwC,EAAEmqK,kBAAkBnqK,EAAEkqK,sBAAsBp6M,EAAEkwC,EAAEqqK,kBAAkBrqK,EAAEoqK,sBAAsBpqK,EAAExc,EAAEwc,EAAEzyB,GAAG9kB,EAAE+gN,OAAOxpK,EAAExc,EAAEwc,EAAEzyB,KAAK+8L,EAAEv+L,EAAEq6L,EAAEztM,MAAMoT,EAAEpT,MAAMytM,EAAEmE,qBAAqB,SAAS9hN,GAAGA,EAAE8gN,YAAYx9L,EAAEi9L,YAAYppK,MAAM7zB,EAAExK,YAAY,IAAIipM,EAAE,CAACC,KAAK,SAAShiN,EAAEyzB,GAAG,OAAOkqL,EAAE9gM,MAAMrd,KAAKQ,KAAKR,KAAKQ,GAAG,IAAIyzB,KAAKsuL,EAAEC,KAAK,SAAS,CAAC9lB,aAAa,kBAAkB+lB,iBAAiB,OAAOC,kBAAkB,qDAAqDC,gBAAgB,GAAGC,iBAAiB,SAASC,kBAAkB,IAAIC,WAAU,IAAK,IAAIC,EAAER,EAAES,EAAE7E,EAAEZ,eAAmB0F,EAAE,CAACC,aAAa,SAAS1iN,EAAEyzB,GAAG,IAAI8jB,GAAG,GAAGv3C,GAAG8wC,MAAM,wCAAwC,IAAIyG,GAAG,WAAWA,EAAE,GAAG,OAAO,IAAI9jB,EAAE,OAAOzzB,GAAGu3C,EAAE,GAAGA,EAAE,IAAI,IAAI,KAAK,OAAOv3C,EAAE,IAAI,IAAIA,GAAG,IAAI,OAAOyzB,EAAEzzB,GAAG2iN,UAAU,SAAS3iN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE,OAAOoiM,EAAE9S,SAAS7qM,IAAIyzB,GAAGzzB,EAAEuL,KAAK,EAAEgsC,GAAGv3C,EAAE0L,OAAO,EAAErE,GAAGrH,EAAEwL,QAAQ,EAAE+P,GAAGvb,EAAEyL,MAAM,GAAGgoB,EAAE8jB,EAAElwC,EAAEkU,GAAGvb,GAAG,EAAE,CAACuL,IAAIkoB,EAAE/nB,MAAM6rC,EAAE/rC,OAAOnE,EAAEoE,KAAK8P,EAAEvR,OAAOypB,EAAEpsB,EAAE6B,MAAMqS,EAAEg8B,IAAIqrK,WAAW,SAAS5iN,GAAG,IAAIyzB,EAAE8uL,EAAEj7K,OAAOiQ,EAAEirK,EAAExiN,EAAE6iN,SAASpvL,EAAE0uL,iBAAiB96M,EAAE,CAACy7M,OAAON,EAAExiN,EAAE+iN,WAAWtvL,EAAEyuL,mBAAmBc,WAAWrF,EAAEn2L,QAAQk7L,aAAaF,EAAExiN,EAAEgjN,WAAWvvL,EAAE4uL,mBAAmB9qK,GAAG5X,KAAK4X,EAAExsC,MAAMy3M,EAAExiN,EAAEijN,UAAUxvL,EAAE2uL,kBAAkBc,OAAO,KAAKv0K,OAAO,IAAI,OAAOtnC,EAAEsnC,OAAO,SAAS3uC,GAAG,OAAOA,GAAG29M,EAAEb,cAAc98M,EAAE2/B,OAAOg+K,EAAEb,cAAc98M,EAAE8iN,QAAQ,MAAM9iN,EAAE+K,MAAM/K,EAAE+K,MAAM,IAAI,KAAK/K,EAAEkjN,OAAOljN,EAAEkjN,OAAO,IAAI,IAAIljN,EAAE2/B,KAAK,MAAM3/B,EAAE8iN,OAAjJ,CAAyJz7M,GAAGA,GAAGrD,QAAQ,SAAShE,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAEvpB,GAAE,EAAG,IAAI7I,EAAE,EAAE+tH,EAAEtpI,EAAE2D,OAAO4X,EAAE+tH,IAAI/tH,EAAE,QAAG,KAAUoyB,EAAE3tC,EAAEub,WAAM,IAASkY,GAAG,mBAAmBka,IAAIA,EAAEA,EAAEla,GAAGrP,GAAE,QAAI,IAASmzB,GAAGomK,EAAEnoM,QAAQm4B,KAAKA,EAAEA,EAAE4J,GAAGnzB,GAAE,QAAI,IAASupB,GAAG,OAAOtmC,IAAI+c,IAAI/c,EAAE87M,WAAU,GAAIx1K,IAAIy1K,EAAE,CAACC,WAAW,SAASrjN,GAAG,IAAIyzB,EAAE8jB,EAAE,GAAGlwC,EAAE0W,KAAKykL,KAAKxiM,GAAG,IAAIyzB,EAAE,EAAEA,EAAEpsB,EAAEosB,IAAIzzB,EAAEyzB,GAAG,IAAI8jB,EAAEn0C,KAAKqwB,GAAG8jB,EAAEn0C,KAAKpD,EAAEyzB,IAAI,OAAOpsB,KAAK,EAAEA,IAAIkwC,EAAEn0C,KAAKiE,GAAGkwC,EAAEl8B,KAAM,SAASrb,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,IAAKgL,MAAM8Y,GAAG+rK,MAAMvlM,KAAKulM,OAAO,SAAStjN,GAAG,IAAIyzB,EAAE1V,KAAKk9D,IAAIj7E,GAAG+d,KAAKwlM,OAAOhsK,EAAEx5B,KAAK06B,MAAMhlB,GAAG,OAAOzzB,IAAI+d,KAAKq7L,IAAI,GAAG7hK,GAAGA,EAAE9jB,IAAI+vL,EAAEJ,EAAEzF,EAAE2F,MAAMF,EAAEE,MAAM,IAAIG,EAAE9F,EAAM+F,EAAE7B,EAAE8B,EAAElB,EAAEmB,EAAEJ,EAAqxBC,EAAEI,OAAnyB15E,EAA4yBs5E,EAAEK,OAAOJ,EAAED,EAAEj8L,QAAQm8L,EAAEF,EAAEM,KAAKH,EAAEH,EAAEO,IAA9zB,CAACC,cAAc,SAASjkN,EAAEyzB,EAAE8jB,GAAG,OAAOv3C,EAAE,SAASA,EAAEyzB,GAAG,MAAM,CAACsH,EAAE,SAASwc,GAAG,OAAOv3C,EAAEA,EAAEyzB,EAAE8jB,GAAG2sK,SAAS,SAASlkN,GAAGyzB,EAAEzzB,GAAGmkN,UAAU,SAASnkN,GAAG,MAAM,WAAWA,EAAEA,EAAE,UAAUA,EAAE,OAAO,SAASokN,MAAM,SAASpkN,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,GAAG4wL,WAAW,SAASrkN,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,IAAtN,CAA2NA,EAAE8jB,GAAG,CAACxc,EAAE,SAAS/6B,GAAG,OAAOA,GAAGkkN,SAAS,SAASlkN,KAAKmkN,UAAU,SAASnkN,GAAG,OAAOA,GAAGokN,MAAM,SAASpkN,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,GAAG4wL,WAAW,SAASrkN,EAAEyzB,GAAG,OAAOzzB,KAAKskN,sBAAsB,SAAStkN,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAE,QAAQosB,GAAG,QAAQA,IAAIpsB,EAAE,EAAEkwC,EAAEv3C,EAAE8jN,OAAO/4M,OAAO82I,iBAAiB,aAAatqG,EAAEgtK,oBAAoB,cAAchtK,EAAE44E,YAAY,YAAY18F,EAAE,aAAazzB,EAAEwkN,kBAAkBn9M,IAAIo9M,qBAAqB,SAASzkN,GAAG,IAAIyzB,EAAEzzB,EAAEwkN,uBAAkB,IAAS/wL,WAAWzzB,EAAEwkN,kBAAkBxkN,EAAE8jN,OAAO/4M,MAAMolH,YAAY,YAAY18F,EAAE,GAAGA,EAAE,OAA0D,IAAIixL,EAAE,SAAS1kN,GAAGyjN,EAAElG,OAAO/9M,KAAKQ,GAAGR,KAAK61B,WAAW8hB,MAAM33C,KAAKsZ,YAAY2qM,EAAElG,OAAOmH,EAAExyL,UAAU,CAAC0hG,WAAM,EAAOv+F,WAAW,WAAW71B,KAAKw3G,QAAO,GAAI2tG,MAAM,WAAW,IAAI3kN,EAAER,KAAK,OAAOQ,EAAE4kN,QAAQ5kN,EAAE4kN,MAAMnB,EAAElG,OAAO,GAAGv9M,EAAEovH,SAASpvH,EAAE6kN,OAAO,GAAG7kN,GAAG8kN,WAAW,SAAS9kN,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAE27F,OAAO/nH,EAAEosB,EAAEoxL,OAAOtpM,EAAEkY,EAAEmxL,MAAM,OAAOrtK,GAAG,IAAIv3C,GAAGub,IAAIA,EAAEkY,EAAEmxL,MAAM,IAAIv9M,IAAIA,EAAEosB,EAAEoxL,OAAO,IAAI,SAAS7kN,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAE6qB,EAAE3W,EAAEzc,OAAOC,KAAKs7B,GAAG,IAAIh8B,EAAE,EAAE+tH,EAAE7wG,EAAE90B,OAAO4X,EAAE+tH,IAAI/tH,EAAE,GAAGukK,EAAEvoI,EAAE5J,EAAElV,EAAEld,IAAIkY,EAAEyZ,eAAeS,KAAKla,EAAEka,GAAGmyI,IAAI17J,EAAEqP,EAAEka,MAAMmyI,GAAG,MAAMnyI,EAAE,GAAG,CAAC,GAAG3tC,EAAEktC,eAAeS,KAAK3tC,EAAE2tC,GAAGvpB,IAAI5M,SAASsoK,WAAY10C,EAAEprI,EAAE2tC,IAAI,GAAG,WAAWn2B,GAAG,IAAI+M,EAAEqtF,EAAEw5B,IAAI6E,QAAQ7gG,EAAEwiE,EAAEkuE,IAAI7vC,MAAM,CAACx8G,EAAEka,GAAGyB,EAAEqtK,IAAIl4L,EAAEld,GAAG4yM,YAAY,eAAe,GAAGwJ,EAAEzlG,SAASotB,IAAIq4E,EAAEzlG,SAAS8hE,GAAG,CAACrsJ,EAAEka,GAAGy9F,GAAG00C,EAAE10C,GAAG/jI,EAAE,SAASosB,EAAEka,GAAGmyI,GAAvX,CAA2Xz4K,EAAEkU,EAAEg8B,EAAEv3C,GAAGyzB,IAAIA,EAAEmxL,MAAMnB,EAAElG,OAAO,GAAGhmK,GAAG9jB,EAAEoxL,OAAO,KAAKpxL,IAAI83J,gBAAgB,WAAW,MAAM,CAACxwJ,EAAEv7B,KAAK4vH,OAAOr0F,EAAEjW,EAAEtlB,KAAK4vH,OAAOtqG,IAAIw7H,SAAS,WAAW,OAAOmjE,EAAE3lG,SAASt+G,KAAK4vH,OAAOr0F,IAAI0oL,EAAE3lG,SAASt+G,KAAK4vH,OAAOtqG,MAAM4/L,EAAEnH,OAAOkG,EAAEjG,SAAS,IAAIuH,EAAEL,EAAEpe,EAAEye,EAAExH,OAAO,CAACyH,MAAM,KAAKC,YAAY,EAAEC,SAAS,GAAGrB,OAAO,GAAGnxK,OAAO,KAAKyyK,oBAAoB,KAAKC,oBAAoB,OAAOC,EAAE/e,EAAEtqL,OAAOu3B,eAAe+yJ,EAAEp0K,UAAU,kBAAkB,CAACxgB,IAAI,WAAW,OAAOlS,QAAQwc,OAAOu3B,eAAe+yJ,EAAEp0K,UAAU,gBAAgB,CAACxgB,IAAI,WAAW,OAAOlS,KAAKwlN,OAAOnxM,IAAI,SAAS7T,GAAGR,KAAKwlN,MAAMhlN,KAAKuiN,EAAEP,KAAK,SAAS,CAAC7+K,UAAU,CAAC6Z,SAAS,IAAI6mK,OAAO,eAAeyB,WAAW7B,EAAEvvF,KAAKqxF,WAAW9B,EAAEvvF,QAAQ,IAAIsxF,EAAE,CAACC,WAAW,GAAG7rI,QAAQ,KAAK8rI,aAAa,SAAS1lN,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAEnuC,KAAKimN,WAAW,IAAIhyL,EAAEuxL,MAAMhlN,EAAEyzB,EAAEy5C,UAAUhzB,KAAKqR,MAAM93B,EAAEupB,SAASzF,EAAElwC,IAAIrH,EAAE2lN,WAAU,GAAIpqM,EAAE,EAAE+tH,EAAE37F,EAAEhqC,OAAO4X,EAAE+tH,IAAI/tH,EAAE,GAAGoyB,EAAEpyB,GAAGypM,QAAQhlN,EAAE,YAAY2tC,EAAEpyB,GAAGkY,GAAGka,EAAEvqC,KAAKqwB,GAAG,IAAIka,EAAEhqC,QAAQnE,KAAKyoL,yBAAyB29B,gBAAgB,SAAS5lN,GAAG,IAAIyzB,EAAEgwL,EAAE9+F,UAAUnlH,KAAKimN,WAAY,SAAShyL,GAAG,OAAOA,EAAEuxL,QAAQhlN,KAAM,IAAIyzB,IAAIj0B,KAAKimN,WAAW19K,OAAOtU,EAAE,GAAGzzB,EAAE2lN,WAAU,IAAK19B,sBAAsB,WAAW,IAAIjoL,EAAER,KAAK,OAAOQ,EAAE45E,UAAU55E,EAAE45E,QAAQ6pI,EAAEoC,iBAAiBnxL,KAAK/J,OAAQ,WAAW3qB,EAAE45E,QAAQ,KAAK55E,EAAE8lN,kBAAmBA,YAAY,WAAWtmN,KAAKumN,UAAUvmN,KAAKimN,WAAW9hN,OAAO,GAAGnE,KAAKyoL,yBAAyB89B,QAAQ,WAAW,IAAI,IAAI/lN,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE/b,KAAKimN,WAAWn8E,EAAE,EAAEA,EAAE/tH,EAAE5X,QAAQ8vB,GAAGzzB,EAAEub,EAAE+tH,IAAI07E,MAAMztK,EAAEv3C,EAAEklN,SAAS79M,EAAE0W,KAAKs7B,OAAOa,KAAKqR,MAAMvrD,EAAEktE,WAAWltE,EAAEg9C,SAASzF,GAAG,EAAEv3C,EAAEilN,YAAYlnM,KAAKG,IAAI7W,EAAEkwC,GAAGksK,EAAEhxL,SAASzyB,EAAE0yC,OAAO,CAACjf,EAAEzzB,GAAGyzB,GAAGgwL,EAAEhxL,SAASzyB,EAAEmlN,oBAAoB,CAACnlN,GAAGyzB,GAAGzzB,EAAEilN,aAAa1tK,GAAGksK,EAAEhxL,SAASzyB,EAAEolN,oBAAoB,CAACplN,GAAGyzB,GAAGA,EAAEkyL,WAAU,EAAGpqM,EAAEwsB,OAAOuhG,EAAE,MAAMA,IAAI08E,EAAEvC,EAAEj8L,QAAQxjB,QAAQiiN,EAAG,CAAC,OAAO,MAAM,QAAQ,SAAS,WAAW,SAASC,EAAGlmN,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAEmmN,SAAS,GAAG5uK,EAAE,CAAC,IAAIlwC,EAAEkwC,EAAE0kD,UAAU1gF,EAAElU,EAAEoB,QAAQgrB,IAAI,IAAIlY,GAAGlU,EAAE0gC,OAAOxsB,EAAE,GAAGlU,EAAE1D,OAAO,IAAIsiN,EAAGpzM,QAAS,SAAS4gB,UAAUzzB,EAAEyzB,YAAazzB,EAAEmmN,WAAW,IAAIC,GAAG,SAASpmN,EAAEyzB,GAAGj0B,KAAK61B,WAAWr1B,EAAEyzB,IAAIgwL,EAAElG,OAAO6I,GAAGl0L,UAAU,CAACm0L,mBAAmB,KAAKC,gBAAgB,KAAKC,uBAAuB,CAAC,kBAAkB,iBAAiB,cAAc,aAAa,mBAAmB,kBAAkB,eAAeC,oBAAoB,CAAC,kBAAkB,cAAc,cAAc,cAAcnxL,WAAW,SAASr1B,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAK+3C,EAAEytK,MAAMhlN,EAAEu3C,EAAEpuC,MAAMsqB,EAAE8jB,EAAEkvK,aAAalvK,EAAEmvK,cAAcnvK,EAAEq8E,MAAMr8E,EAAEovK,UAAUzmN,MAAM0mN,YAAY,SAAS5mN,GAAGR,KAAK2J,MAAMnJ,GAAGymN,WAAW,WAAW,IAAIzmN,EAAER,KAAKmnN,UAAUlzL,EAAEj0B,KAAKwlN,MAAMztK,EAAE9jB,EAAEozL,OAAOx/M,EAAE7H,KAAKsnN,aAAavrM,EAAEkY,EAAEjM,QAAQq/L,OAAO,OAAO7mN,EAAE+mN,SAAS/mN,EAAE+mN,WAAWxvK,IAAIlwC,EAAE0/M,UAAU/mN,EAAE+mN,QAAQ1/M,EAAE0/M,SAASxrM,EAAEyrM,MAAM,GAAGxhM,IAAI,OAAOxlB,EAAEinN,SAASjnN,EAAEinN,WAAW1vK,IAAIlwC,EAAE4/M,UAAUjnN,EAAEinN,QAAQ5/M,EAAE4/M,SAAS1rM,EAAE2rM,MAAM,GAAG1hM,KAAKshM,WAAW,WAAW,OAAOtnN,KAAKwlN,MAAM11M,KAAK63M,SAAS3nN,KAAK2J,QAAQw9M,QAAQ,WAAW,OAAOnnN,KAAKwlN,MAAMoC,eAAe5nN,KAAK2J,QAAQk+M,cAAc,SAASrnN,GAAG,OAAOR,KAAKwlN,MAAM6B,OAAO7mN,IAAIsnN,iBAAiB,WAAW,OAAO9nN,KAAKmnN,UAAUM,SAASM,iBAAiB,WAAW,OAAO/nN,KAAKmnN,UAAUI,SAASS,eAAe,WAAW,OAAOhoN,KAAK6nN,cAAc7nN,KAAK8nN,qBAAqBG,eAAe,WAAW,OAAOjoN,KAAK6nN,cAAc7nN,KAAK+nN,qBAAqB/qF,MAAM,WAAWh9H,KAAKkoN,SAAQ,IAAKhnM,QAAQ,WAAWlhB,KAAKiU,OAAOyyM,EAAG1mN,KAAKiU,MAAMjU,OAAOmoN,kBAAkB,WAAW,IAAI3nN,EAAER,KAAK6mN,mBAAmB,OAAOrmN,GAAG,IAAIA,EAAE,CAAC4nN,OAAOpoN,KAAKwlN,MAAM6C,cAAcroN,KAAK2J,SAAS2+M,eAAe,SAAS9nN,GAAG,IAAIyzB,EAAEj0B,KAAK8mN,gBAAgB,OAAO7yL,GAAG,IAAIA,EAAE,CAACm0L,OAAOpoN,KAAKwlN,MAAM6C,cAAcroN,KAAK2J,MAAM4+M,OAAO/nN,KAAK0mN,YAAY,WAAW,IAAI1mN,EAAEyzB,EAAE8jB,EAAE/3C,KAAKmnN,UAAUt/M,EAAE7H,KAAKsnN,aAAax3M,MAAM,GAAGiM,EAAEg8B,EAAEjoC,KAAK,IAAItP,EAAE,EAAEyzB,EAAEpsB,EAAE1D,OAAO3D,EAAEyzB,IAAIzzB,EAAEub,EAAEvb,GAAGub,EAAEvb,IAAIR,KAAKsoN,eAAe9nN,GAAGu3C,EAAEywK,QAAQzwK,EAAEywK,SAASxoN,KAAKmoN,qBAAqBM,mBAAmB,SAASjoN,GAAG,IAAIyzB,EAAEj0B,KAAKsoN,eAAe9nN,GAAGR,KAAKmnN,UAAUr3M,KAAKy4B,OAAO/nC,EAAE,EAAEyzB,GAAGj0B,KAAK0oN,cAAcz0L,EAAEzzB,GAAE,IAAKmoN,sBAAsB,WAAW,IAAInoN,EAAEyzB,EAAE8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAEuvK,aAAavrM,EAAElU,EAAEiI,OAAOjI,EAAEiI,KAAK,IAAIioC,EAAE9jC,QAAQ8H,IAAIg8B,EAAE9jC,OAAOyyM,EAAG3uK,EAAE9jC,MAAM8jC,GAAGh8B,GAAGS,OAAOosM,aAAa7sM,KAAKkY,EAAE8jB,GAAGv3C,EAAEub,GAAG4qM,SAASnmN,EAAEmmN,SAASlqH,UAAU74F,KAAKqwB,IAAIzX,OAAOu3B,eAAevzC,EAAE,WAAW,CAACk9B,cAAa,EAAGuW,YAAW,EAAG1yC,MAAM,CAACk7F,UAAU,CAACxoE,MAAMwyL,EAAGpzM,QAAS,SAAS4gB,GAAG,IAAI8jB,EAAE,SAAS9jB,EAAE8b,OAAO,GAAGnC,cAAc3Z,EAAEzqB,MAAM,GAAG3B,EAAErH,EAAEyzB,GAAGzX,OAAOu3B,eAAevzC,EAAEyzB,EAAE,CAACyJ,cAAa,EAAGuW,YAAW,EAAG1yC,MAAM,WAAW,IAAI0yB,EAAE1pB,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5b,WAAWyC,EAAElU,EAAE8vC,MAAM33C,KAAKi0B,GAAG,OAAOgwL,EAAExG,KAAKj9M,EAAEmmN,SAASlqH,UAAW,SAASj8F,GAAG,mBAAmBA,EAAEu3C,IAAIv3C,EAAEu3C,GAAGJ,MAAMn3C,EAAEyzB,KAAMlY,SAAUg8B,EAAE9jC,MAAM8H,GAAGg8B,EAAE8wK,kBAAkBC,WAAW,WAAW9oN,KAAK8hC,QAAQmiL,EAAE5mM,MAAMb,OAAOlX,OAAO,MAAM,CAACtF,KAAKwlN,MAAMx9L,QAAQ2/L,SAAS3nN,KAAKo0H,OAAOp0H,KAAKsnN,cAAc,CAACxJ,OAAO,SAASt9M,EAAEyzB,EAAE8jB,GAAG,UAAUv3C,GAAG,SAASA,GAAGyjN,EAAEtG,QAAQn9M,EAAEyzB,EAAE8jB,OAAOmwK,QAAQ,SAAS1nN,GAAGR,KAAK8oN,aAAa9oN,KAAK+oN,gBAAgB,KAAK/oN,KAAKw6E,OAAOh6E,IAAIg6E,OAAOypI,EAAEvvF,KAAK4wF,WAAW,SAAS9kN,GAAG,IAAI,IAAIyzB,EAAEj0B,KAAKmnN,UAAUpvK,EAAE9jB,EAAEnkB,MAAM,GAAGjI,EAAEkwC,EAAE5zC,OAAO4X,EAAE,EAAEA,EAAElU,IAAIkU,EAAEg8B,EAAEh8B,GAAGupM,WAAW9kN,GAAGyzB,EAAEu0L,SAASv0L,EAAEu0L,QAAQlD,WAAW9kN,IAAIwoN,KAAK,WAAW,IAAIxoN,EAAER,KAAKmnN,UAAUlzL,EAAEzzB,EAAEsP,MAAM,GAAGioC,EAAE9jB,EAAE9vB,OAAO0D,EAAE,EAAE,IAAIrH,EAAEgoN,SAAShoN,EAAEgoN,QAAQQ,OAAOnhN,EAAEkwC,IAAIlwC,EAAEosB,EAAEpsB,GAAGmhN,QAAQr9F,SAAS,SAASnrH,GAAG,IAAIyzB,EAAE8jB,EAAE/3C,KAAKmnN,UAAUt/M,EAAEkwC,EAAEywK,QAAQ,OAAOxoN,KAAK8oN,cAAmI,KAAxG70L,EAAdpsB,QAAG,IAASrH,EAAIR,KAAKipN,8BAA8BphN,GAAG,IAAc7H,KAAKkpN,2BAA2BnxK,EAAEjoC,KAA3CtP,EAAEA,GAAG,IAA+C,GAAGA,IAAWw4G,MAAM,OAAO/kF,EAAE+kF,OAAO/kF,EAAE6hC,gBAAgB7hC,EAAE8hC,aAAa9hC,GAAGg1L,8BAA8B,SAASzoN,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEnuC,KAAK4kB,EAAEupB,EAAEq3K,MAAM55E,EAAEz9F,EAAErM,QAAQw+I,EAAE9/K,EAAE2oN,QAAQ,GAAGnxM,EAAE4M,EAAEoD,QAAQhd,SAASmjC,EAAE04K,mBAAmBn0L,UAAU0hG,QAAQ,GAAGrvG,EAAEopB,EAAE44K,uBAAuBn3K,EAAE,GAAG3W,EAAE,CAACusL,MAAM5gM,EAAE4jM,QAAQr6K,EAAEm5K,aAAa8B,aAAaj7K,EAAExkC,MAAMyyH,MAAMnoG,GAAG,IAAI8jB,EAAE,EAAElwC,EAAEkd,EAAE5gB,OAAO4zC,EAAElwC,IAAIkwC,EAAEh8B,EAAEgJ,EAAEgzB,GAAG+xF,EAAE71G,EAAE,QAAQlY,EAAEg0B,OAAO,GAAGnC,cAAc7xB,EAAEvS,MAAM,GAAGuS,EAAE6zB,EAAE7zB,GAAGyqM,EAAE,CAAClmC,EAAEx2C,GAAG8B,EAAE9B,GAAG9xH,EAAE8xH,IAAI7wG,GAAG,OAAO2W,GAAGs5K,2BAA2B,SAAS1oN,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAK6H,EAAErH,GAAGA,EAAE2oN,OAAOptM,EAAEg8B,EAAEgxK,gBAAgB,GAAGhtM,IAAIlU,EAAE,OAAOkU,EAAE,IAAI+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEvoI,EAAEytK,MAAMxtM,EAAE+/B,EAAEjW,QAAQ/c,EAAEu7J,EAAEt4J,QAAQhd,SAAS+sC,EAAE+uK,gBAAgBp0L,UAAU0hG,QAAQ,GAAGxkF,EAAEmI,EAAEivK,oBAAoB/tL,EAAE,GAAG8xG,EAAE,CAACy6E,MAAMllC,EAAEzwK,UAAUokB,EAAEu0L,QAAQzwK,EAAEuvK,aAAa8B,aAAarxK,EAAEpuC,OAAO4/H,EAAE,CAACo6E,WAAW97M,GAAG,GAAGA,EAAEA,GAAG,GAAGo8M,EAAEjuM,QAAQ45B,GAAG,IAAIzB,EAAE,EAAEvpB,EAAEgrB,EAAEzrC,OAAOgqC,EAAEvpB,IAAIupB,EAAElV,EAAE2yG,EAAEh8F,EAAEzB,IAAIq4K,EAAE,CAAC3+M,EAAE+jI,GAAG5zH,EAAE4zH,GAAG7mH,EAAE6mH,IAAIb,EAAE92G,EAAEs1G,QAAQ,IAAIp7F,EAAE,EAAEvpB,GAAGklH,EAAEttH,OAAOC,KAAKmzB,IAAIzrC,OAAOgqC,EAAEvpB,IAAIupB,EAAElV,EAAE2yG,EAAE9B,EAAE37F,IAAIq4K,EAAE,CAAC3+M,EAAE+jI,GAAG5zH,EAAE43B,EAAEg8F,IAAI5zH,EAAE4zH,GAAG7mH,EAAE6mH,IAAIb,EAAE92G,EAAEs1G,GAAG,OAAOA,EAAEo6E,YAAY5rK,EAAEgxK,gBAAgBvsM,OAAO67C,OAAOp/B,IAAIA,GAAGowL,iBAAiB,SAAS7oN,GAAGyjN,EAAE5mM,MAAM7c,EAAEovH,OAAOpvH,EAAE8oN,gBAAgB,WAAW9oN,EAAE8oN,gBAAgBC,cAAc,SAAS/oN,GAAG,IAAIyzB,EAAEj0B,KAAKwlN,MAAM11M,KAAK63M,SAASnnN,EAAE6nN,eAAetwK,EAAEv3C,EAAE+nN,OAAO1gN,EAAErH,EAAE2oN,QAAQ,GAAGptM,EAAEvb,EAAEovH,OAAOka,EAAEm6E,EAAEuF,cAAchpN,EAAE8oN,eAAe,CAACxzJ,gBAAgB/5C,EAAE+5C,gBAAgBC,YAAYh6C,EAAEg6C,YAAY0zJ,YAAY1tM,EAAE0tM,aAAa1tM,EAAE+5C,gBAAgB0wJ,EAAE,CAAC3+M,EAAE6hN,qBAAqBz1L,EAAEy1L,qBAAqB5/E,EAAE/tH,EAAE+5C,uBAAkB,EAAO/d,GAAGh8B,EAAEg6C,YAAYywJ,EAAE,CAAC3+M,EAAE8hN,iBAAiB11L,EAAE01L,iBAAiB7/E,EAAE/tH,EAAEg6C,mBAAc,EAAOhe,GAAGh8B,EAAE0tM,YAAYjD,EAAE,CAAC3+M,EAAE+hN,iBAAiB31L,EAAE21L,iBAAiB7tM,EAAE0tM,kBAAa,EAAO1xK,IAAI8xK,yBAAyB,WAAW,IAAIrpN,EAAER,KAAKmnN,UAAUqB,QAAQhoN,GAAGR,KAAKqpN,iBAAiB7oN,IAAIspN,sBAAsB,WAAW,IAAItpN,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEnuC,KAAKmnN,UAAUqB,QAAQ5jM,EAAE,GAAG,GAAGupB,EAAE,CAAC,IAAI27F,EAAE37F,EAAEyhF,OAAO7zG,EAAE/b,KAAKipN,8BAA8B96K,GAAE,GAAI3tC,EAAE,EAAEyzB,GAAGpsB,EAAE2U,OAAOC,KAAKV,IAAI5X,OAAO3D,EAAEyzB,IAAIzzB,EAAEokB,EAAEmzB,EAAElwC,EAAErH,IAAIspI,EAAE/xF,GAAG+xF,EAAE/xF,GAAGh8B,EAAEg8B,GAAG5J,EAAEm7K,eAAe1kM,IAAIikM,eAAe,WAAW,IAAIroN,EAAER,KAAKmnN,UAAUlzL,EAAEj0B,KAAKsnN,aAAax3M,KAAKioC,EAAEv3C,EAAEsP,KAAK3L,OAAO0D,EAAEosB,EAAE9vB,OAAO0D,EAAEkwC,EAAEv3C,EAAEsP,KAAKy4B,OAAO1gC,EAAEkwC,EAAElwC,GAAGA,EAAEkwC,GAAG/3C,KAAK+pN,eAAehyK,EAAElwC,EAAEkwC,IAAIgyK,eAAe,SAASvpN,EAAEyzB,GAAG,IAAI,IAAI8jB,EAAE,EAAEA,EAAE9jB,IAAI8jB,EAAE/3C,KAAKyoN,mBAAmBjoN,EAAEu3C,IAAIiyK,WAAW,WAAW,IAAIxpN,EAAE8Y,UAAUnV,OAAOnE,KAAK+pN,eAAe/pN,KAAKsnN,aAAax3M,KAAK3L,OAAO3D,EAAEA,IAAIypN,UAAU,WAAWjqN,KAAKmnN,UAAUr3M,KAAKmvB,OAAOirL,YAAY,WAAWlqN,KAAKmnN,UAAUr3M,KAAK6E,SAASw1M,aAAa,SAAS3pN,EAAEyzB,GAAGj0B,KAAKmnN,UAAUr3M,KAAKy4B,OAAO/nC,EAAEyzB,GAAGj0B,KAAK+pN,eAAevpN,EAAE8Y,UAAUnV,OAAO,IAAIimN,cAAc,WAAWpqN,KAAK+pN,eAAe,EAAEzwM,UAAUnV,WAAWyiN,GAAG7I,OAAOkG,EAAEjG,SAAS,IAAIqM,GAAGzD,GAAGtuE,GAAG,EAAE/5H,KAAKu7L,GAAG,SAASwQ,GAAG9pN,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAEs2L,WAAW1iN,EAAEosB,EAAEu2L,SAASzuM,EAAEkY,EAAEw2L,YAAY3gF,EAAE/tH,EAAEkY,EAAEy2L,YAAYv8K,EAAEla,EAAEsH,EAAE3W,EAAEqP,EAAE3O,EAAE9kB,EAAE8gN,YAAY9gN,EAAEygN,IAAI9yK,EAAEvpB,EAAEqP,EAAEy2L,YAAY3yK,EAAE+xF,EAAEjiI,EAAEiiI,GAAG71G,EAAE02L,YAAY5uM,EAAqBvb,EAAEygN,IAAI9yK,EAAEvpB,EAAEqP,EAAE02L,YAAY5uM,EAAElU,GAA5CiiI,EAAE/tH,EAAEkY,EAAE02L,aAA0C5yK,EAAE+xF,GAAE,GAAKtpI,EAAEygN,IAAI9yK,EAAEvpB,EAAE7I,EAAElU,EAAE0W,KAAKu7L,GAAG,EAAE/hK,EAAEx5B,KAAKu7L,GAAG,GAAGt5M,EAAE0gN,YAAY1gN,EAAEohN,OAAwtBmB,EAAEP,KAAK,SAAS,CAACx3M,SAAS,CAACi2M,IAAI,CAACnrJ,gBAAgBitJ,EAAEj7K,OAAO40J,aAAa3mI,YAAY,OAAO0zJ,YAAY,EAAEmB,YAAY,aAAa,IAAIC,GAAGtF,EAAExH,OAAO,CAAC3pF,MAAM,MAAM02F,aAAa,SAAStqN,GAAG,IAAIyzB,EAAEj0B,KAAKolN,MAAM,QAAQnxL,GAAG1V,KAAKq7L,IAAIp5M,EAAEyzB,EAAEsH,EAAE,GAAGhd,KAAKq7L,IAAI3lL,EAAEitK,OAAOjtK,EAAE82L,YAAY,IAAIC,QAAQ,SAASxqN,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAKolN,MAAM,GAAGrtK,EAAE,CAAC,IAAI,IAAIlwC,EAAEo8M,EAAEgH,kBAAkBlzK,EAAE,CAACxc,EAAE/6B,EAAE8kB,EAAE2O,IAAIlY,EAAElU,EAAEqjN,MAAMphF,EAAEjiI,EAAE4/I,SAASt5G,EAAE4J,EAAEwyK,WAAW3lM,EAAEmzB,EAAEyyK,SAAS5lM,EAAEupB,GAAGvpB,GAAG0zH,GAAG,KAAKv8H,EAAE6I,GAAG7I,GAAGu8H,GAAG,KAAKv8H,EAAEoyB,GAAGpyB,GAAGu8H,GAAyD,OAAhDv8H,GAAGoyB,GAAGpyB,GAAG6I,GAAIklH,GAAG/xF,EAAE4yK,aAAa7gF,GAAG/xF,EAAE2yK,YAAwB,OAAM,GAAIS,eAAe,WAAW,IAAI3qN,EAAER,KAAKolN,MAAMnxL,GAAGzzB,EAAE+pN,WAAW/pN,EAAEgqN,UAAU,EAAEzyK,GAAGv3C,EAAEmqN,YAAYnqN,EAAEkqN,aAAa,EAAE,MAAM,CAACnvL,EAAE/6B,EAAE+6B,EAAEhd,KAAKw7L,IAAI9lL,GAAG8jB,EAAEzyB,EAAE9kB,EAAE8kB,EAAE/G,KAAKy7L,IAAI/lL,GAAG8jB,IAAIqzK,QAAQ,WAAW,IAAI5qN,EAAER,KAAKolN,MAAM,OAAO7mM,KAAKu7L,KAAKt5M,EAAEgqN,SAAShqN,EAAE+pN,aAAa,EAAEhsM,KAAKu7L,MAAMv7L,KAAKq7L,IAAIp5M,EAAEkqN,YAAY,GAAGnsM,KAAKq7L,IAAIp5M,EAAEmqN,YAAY,KAAK5+B,gBAAgB,WAAW,IAAIvrL,EAAER,KAAKolN,MAAMnxL,EAAEzzB,EAAE+pN,YAAY/pN,EAAEgqN,SAAShqN,EAAE+pN,YAAY,EAAExyK,GAAGv3C,EAAEkqN,YAAYlqN,EAAEmqN,aAAa,EAAEnqN,EAAEmqN,YAAY,MAAM,CAACpvL,EAAE/6B,EAAE+6B,EAAEhd,KAAKw7L,IAAI9lL,GAAG8jB,EAAEzyB,EAAE9kB,EAAE8kB,EAAE/G,KAAKy7L,IAAI/lL,GAAG8jB,IAAIixK,KAAK,WAAW,IAAIxoN,EAAEyzB,EAAEj0B,KAAKooN,OAAOxmN,IAAIm2C,EAAE/3C,KAAKolN,MAAMv9M,EAAE,UAAUkwC,EAAE6yK,YAAY,IAAI,EAAE7uM,EAAE,CAACwf,EAAEwc,EAAExc,EAAEjW,EAAEyyB,EAAEzyB,EAAEqlM,YAAY5yK,EAAE4yK,YAAYD,YAAYnsM,KAAKukC,IAAI/K,EAAE2yK,YAAY7iN,EAAE,GAAG4iN,YAAY5iN,EAAE0iN,WAAWxyK,EAAEwyK,WAAWC,SAASzyK,EAAEyyK,SAASa,YAAY9sM,KAAKs7B,MAAM9B,EAAEuzK,cAAchzE,KAAK,GAAGrkH,EAAEmtL,OAAOntL,EAAEs3L,UAAUxzK,EAAE+d,gBAAgB7hC,EAAEu3L,YAAYzzK,EAAEge,YAAYh6C,EAAEsvM,YAAY,CAAC,IAAItvM,EAAEyuM,SAASzuM,EAAEwuM,WAAWjyE,GAAGrkH,EAAEqtL,YAAYrtL,EAAEgtL,IAAIllM,EAAEwf,EAAExf,EAAEuJ,EAAEvJ,EAAE2uM,YAAY3uM,EAAEwuM,WAAWxuM,EAAEyuM,UAAUv2L,EAAEgtL,IAAIllM,EAAEwf,EAAExf,EAAEuJ,EAAEvJ,EAAE4uM,YAAY5uM,EAAEyuM,SAASzuM,EAAEwuM,YAAW,GAAIt2L,EAAEitL,YAAY1gN,EAAE,EAAEA,EAAEub,EAAEsvM,cAAc7qN,EAAEyzB,EAAE+kF,OAAOj9F,EAAEyuM,SAASzuM,EAAEwuM,WAAWxyK,EAAEuzK,cAAchzE,GAAGrkH,EAAEqtL,YAAYrtL,EAAEgtL,IAAIllM,EAAEwf,EAAExf,EAAEuJ,EAAEvJ,EAAE2uM,YAAY3uM,EAAEwuM,WAAWxuM,EAAEyuM,UAAUv2L,EAAEgtL,IAAIllM,EAAEwf,EAAExf,EAAEuJ,EAAEvJ,EAAE4uM,YAAY5uM,EAAEyuM,SAASzuM,EAAEwuM,YAAW,GAAIt2L,EAAEitL,YAAYjtL,EAAE+kF,OAAOjhE,EAAE0xK,aAA16E,SAAYjpN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE,UAAUosB,EAAE22L,YAAY/iN,GAAGrH,EAAEirN,UAAU,EAAEx3L,EAAEw1L,YAAYjpN,EAAEkrN,SAAS,UAAUlrN,EAAEirN,UAAUx3L,EAAEw1L,YAAYjpN,EAAEkrN,SAAS,SAAS3zK,EAAEszK,aAAa,SAAS7qN,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE/xF,EAAEyyK,SAAS,IAAI3iN,IAAIkwC,EAAEyyK,SAASzyK,EAAEwyK,WAAWjyE,GAAGgyE,GAAG9pN,EAAEu3C,GAAGA,EAAEyyK,SAAS1gF,EAAE/xF,EAAEyyK,WAAWzyK,EAAEwyK,YAAYxyK,EAAEszK,cAActzK,EAAEyyK,UAAUlyE,GAAGvgG,EAAEszK,gBAAgB7qN,EAAE8gN,YAAY9gN,EAAEygN,IAAIlpK,EAAExc,EAAEwc,EAAEzyB,EAAEyyB,EAAE4yK,YAAY5yK,EAAEwyK,WAAWjyE,GAAGvgG,EAAEwyK,YAAW,GAAIxuM,EAAE,EAAEA,EAAEg8B,EAAEszK,cAActvM,EAAEvb,EAAEihN,SAAS,IAAIjhN,EAAE8gN,YAAY9gN,EAAEygN,IAAIlpK,EAAExc,EAAEwc,EAAEzyB,EAAE2O,EAAEy2L,YAAY3yK,EAAEwyK,WAAWxyK,EAAEwyK,WAAWjyE,IAAIv8H,EAAE,EAAEA,EAAEg8B,EAAEszK,cAActvM,EAAEvb,EAAEihN,SAA7X,CAAuYjhN,EAAEyzB,EAAE8jB,EAAElwC,GAAGA,GAAGyiN,GAAG9pN,EAAEu3C,GAAGv3C,EAAE8gN,YAAY9gN,EAAEygN,IAAIlpK,EAAExc,EAAEwc,EAAEzyB,EAAE2O,EAAEy2L,YAAY3yK,EAAEwyK,WAAWxyK,EAAEyyK,UAAUhqN,EAAEygN,IAAIlpK,EAAExc,EAAEwc,EAAEzyB,EAAEyyB,EAAE4yK,YAAY5yK,EAAEyyK,SAASzyK,EAAEwyK,YAAW,GAAI/pN,EAAE0gN,YAAY1gN,EAAEihN,SAA+uDkK,CAAG13L,EAAE8jB,EAAEh8B,GAAGkY,EAAEotL,aAAauK,GAAG3H,EAAE1G,eAAesO,GAAG9I,EAAEj7K,OAAO40J,aAAaqmB,EAAEP,KAAK,SAAS,CAACx3M,SAAS,CAAC8gN,KAAK,CAAC/J,QAAQ,GAAGjsJ,gBAAgB+1J,GAAGpC,YAAY,EAAE1zJ,YAAY81J,GAAGE,eAAe,OAAOC,WAAW,GAAGC,iBAAiB,EAAEC,gBAAgB,QAAQC,iBAAgB,EAAGnzG,MAAK,MAAO,IAAIozG,GAAG7G,EAAExH,OAAO,CAAC3pF,MAAM,OAAO40F,KAAK,WAAW,IAAIxoN,EAAEyzB,EAAE8jB,EAAElwC,EAAE7H,KAAK+b,EAAElU,EAAEu9M,MAAMt7E,EAAEjiI,EAAEugN,OAAOxmN,IAAIusC,EAAEpyB,EAAEswM,SAASznM,EAAE/c,EAAEiiM,UAAUtgM,QAAQoiI,EAAEm3E,EAAEj7K,OAAOw4I,EAAE10C,EAAE5gI,SAAS8gN,KAAK9zM,GAAG,EAAE+M,EAAEld,EAAEykN,MAAM,GAAG1nM,EAAEzgB,OAAO,CAAC,GAAG0D,EAAEykN,MAAM,CAAC,IAAI9rN,EAAE,EAAEA,EAAEokB,EAAEzgB,SAAS3D,EAAE,GAAGyzB,EAAEgwL,EAAEsI,aAAa3nM,EAAEpkB,IAAIokB,EAAEpkB,GAAG4kN,MAAMp2L,MAAMiF,EAAEmxL,MAAMp2L,KAAK,CAACpK,EAAEA,EAAEpb,MAAMhJ,GAAGwY,OAAO4L,EAAEpb,MAAM,EAAEhJ,IAAIukB,EAAEopB,EAAE,MAAMppB,GAAGH,EAAEhhB,KAAKghB,EAAE,IAAI,IAAIklH,EAAEs3E,OAAOt3E,EAAE0iF,QAAQzwM,EAAEgwM,gBAAgBzrC,EAAEyrC,eAAejiF,EAAE2iF,aAAa3iF,EAAE2iF,YAAY1wM,EAAEiwM,YAAY1rC,EAAE0rC,YAAYliF,EAAE4iF,eAAed,GAAG7vM,EAAEkwM,iBAAiB3rC,EAAE2rC,kBAAkBniF,EAAE4hF,SAAS3vM,EAAEmwM,iBAAiB5rC,EAAE4rC,gBAAgBpiF,EAAE2hF,UAAUG,GAAG7vM,EAAE0tM,YAAYnpC,EAAEmpC,aAAa3/E,EAAE0hF,YAAYzvM,EAAEg6C,aAAa61E,EAAE8wD,aAAa5yD,EAAEw3E,aAAavpK,EAAEnzB,EAAE,GAAGwgM,OAAOp2L,OAAO86G,EAAEk3E,OAAOjpK,EAAExc,EAAEwc,EAAEzyB,GAAGtN,EAAE,GAAGxX,EAAE,EAAEA,EAAEokB,EAAEzgB,SAAS3D,EAAEu3C,EAAEnzB,EAAEpkB,GAAG4kN,MAAMnxL,GAAG,IAAIjc,EAAEisM,EAAEsI,aAAa3nM,EAAEpkB,GAAGokB,EAAE5M,GAAG+/B,EAAE/oB,OAAOhX,IAAIxX,EAAE,IAAI2tC,IAAI,IAAIn2B,EAAE8xH,EAAEk3E,OAAOjpK,EAAExc,EAAEwc,EAAEzyB,GAAG2+L,EAAEK,OAAO/C,OAAOz3E,EAAE71G,EAAEmxL,MAAMrtK,GAAG//B,EAAExX,GAAGukB,GAAG+kH,EAAEo3E,YAAYp3E,EAAE23E,SAAS33E,EAAEu3E,cAAcsL,GAAG1I,EAAE1G,eAAeqP,GAAG7J,EAAEj7K,OAAO40J,aAAa,SAASmwB,GAAGrsN,GAAG,IAAIyzB,EAAEj0B,KAAKolN,MAAM,QAAQnxL,GAAG1V,KAAKqiC,IAAIpgD,EAAEyzB,EAAEsH,GAAGtH,EAAEitK,OAAOjtK,EAAE64L,UAAU/J,EAAEP,KAAK,SAAS,CAACx3M,SAAS,CAAC8iE,MAAM,CAACozH,OAAO,EAAE6rB,WAAW,SAASj3J,gBAAgB82J,GAAG72J,YAAY62J,GAAGnD,YAAY,EAAEqD,UAAU,EAAE/B,YAAY,EAAEnB,iBAAiB,MAAM,IAAIoD,GAAGzH,EAAExH,OAAO,CAAC3pF,MAAM,QAAQ42F,QAAQ,SAASxqN,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAKolN,MAAM,QAAQrtK,GAAGx5B,KAAKq7L,IAAIp5M,EAAEu3C,EAAExc,EAAE,GAAGhd,KAAKq7L,IAAI3lL,EAAE8jB,EAAEzyB,EAAE,GAAG/G,KAAKq7L,IAAI7hK,EAAE+0K,UAAU/0K,EAAEmpJ,OAAO,IAAI4pB,aAAa+B,GAAGI,SAASJ,GAAGK,SAAS,SAAS1sN,GAAG,IAAIyzB,EAAEj0B,KAAKolN,MAAM,QAAQnxL,GAAG1V,KAAKqiC,IAAIpgD,EAAEyzB,EAAE3O,GAAG2O,EAAEitK,OAAOjtK,EAAE64L,WAAW3B,eAAe,WAAW,IAAI3qN,EAAER,KAAKolN,MAAM,MAAM,CAAC7pL,EAAE/6B,EAAE+6B,EAAEjW,EAAE9kB,EAAE8kB,IAAI8lM,QAAQ,WAAW,OAAO7sM,KAAKu7L,GAAGv7L,KAAKq7L,IAAI55M,KAAKolN,MAAMlkB,OAAO,IAAInV,gBAAgB,WAAW,IAAIvrL,EAAER,KAAKolN,MAAM,MAAM,CAAC7pL,EAAE/6B,EAAE+6B,EAAEjW,EAAE9kB,EAAE8kB,EAAEkvD,QAAQh0E,EAAE0gM,OAAO1gM,EAAEipN,cAAcT,KAAK,SAASxoN,GAAG,IAAIyzB,EAAEj0B,KAAKolN,MAAMrtK,EAAE/3C,KAAKooN,OAAOxmN,IAAIiG,EAAEosB,EAAE84L,WAAWhxM,EAAEkY,EAAEk5L,SAASrjF,EAAE71G,EAAEitK,OAAO/yJ,EAAEla,EAAEsH,EAAE3W,EAAEqP,EAAE3O,EAAEsmH,EAAEm3E,EAAEj7K,OAAOw4I,EAAE10C,EAAE8wD,aAAazoK,EAAEjF,YAAO,IAASxuB,GAAGyjN,EAAEK,OAAO5C,eAAeztL,EAAEzzB,MAAMu3C,EAAEyzK,YAAYv3L,EAAE8hC,aAAauqH,EAAEvoI,EAAE0zK,UAAUkB,GAAG14L,EAAEw1L,YAAY79E,EAAE5gI,SAAS8iE,MAAM27I,aAAa1xK,EAAEwzK,UAAUt3L,EAAE6hC,iBAAiBwqH,EAAE2jC,EAAEK,OAAOnD,UAAUppK,EAAElwC,EAAEiiI,EAAE37F,EAAEvpB,EAAE7I,OAAOqxM,GAAGrK,EAAEj7K,OAAO40J,aAAa,SAAS2wB,GAAG7sN,GAAG,OAAOA,QAAG,IAASA,EAAEkJ,MAAM,SAAS4jN,GAAG9sN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE,OAAOujF,GAAG7sN,IAAgByzB,EAAEzzB,EAAE+6B,GAAhBuuG,EAAEtpI,EAAEkJ,MAAM,GAAUquC,EAAEv3C,EAAE+6B,EAAEuuG,EAAEjiI,EAAE0W,KAAKG,IAAIle,EAAE8kB,EAAE9kB,EAAEZ,MAAMmc,EAAEwC,KAAKukC,IAAItiD,EAAE8kB,EAAE9kB,EAAEZ,QAAQkqI,EAAEtpI,EAAEgK,OAAO,EAAEypB,EAAE1V,KAAKG,IAAIle,EAAE+6B,EAAE/6B,EAAEZ,MAAMm4C,EAAEx5B,KAAKukC,IAAItiD,EAAE+6B,EAAE/6B,EAAEZ,MAAMiI,EAAErH,EAAE8kB,EAAEwkH,EAAE/tH,EAAEvb,EAAE8kB,EAAEwkH,GAAG,CAAC79H,KAAKgoB,EAAEloB,IAAIlE,EAAEqE,MAAM6rC,EAAE/rC,OAAO+P,GAAG,SAASwxM,GAAG/sN,EAAEyzB,EAAE8jB,GAAG,OAAOv3C,IAAIyzB,EAAE8jB,EAAEv3C,IAAIu3C,EAAE9jB,EAAEzzB,EAA2Y,SAASgtN,GAAGhtN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE,OAAOosB,EAAElY,EAAE,OAAOg8B,EAAE+xF,KAAKtpI,GAAGqH,GAAGkU,IAAIuxM,GAAG9sN,GAAG,OAAOspI,IAAIjiI,GAAGosB,GAAG61G,EAAE79H,MAAMgoB,GAAG61G,EAAE59H,SAAS6P,GAAGg8B,GAAG+xF,EAAE/9H,KAAKgsC,GAAG+xF,EAAE99H,QAAQ+2M,EAAEP,KAAK,SAAS,CAACx3M,SAAS,CAACyiN,UAAU,CAAC33J,gBAAgBs3J,GAAGr3J,YAAYq3J,GAAGM,cAAc,SAASjE,YAAY,MAAM,IAAI3nN,GAAGyjN,EAAExH,OAAO,CAAC3pF,MAAM,YAAY40F,KAAK,WAAW,IAAIxoN,EAAER,KAAKooN,OAAOxmN,IAAIqyB,EAAEj0B,KAAKolN,MAAMrtK,EAAE,SAASv3C,GAAG,IAAIyzB,EAAEq5L,GAAG9sN,GAAGu3C,EAAE9jB,EAAE/nB,MAAM+nB,EAAEhoB,KAAKpE,EAAEosB,EAAEjoB,OAAOioB,EAAEloB,IAAIgQ,EAA/wB,SAAYvb,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEpkB,EAAEipN,YAAY79E,EAAE,SAASprI,GAAG,IAAIyzB,EAAEzzB,EAAEktN,cAAc31K,EAAE,GAAG,OAAO9jB,GAAGzzB,EAAEmtN,WAAWntN,EAAEZ,KAAKY,EAAE+6B,IAAItH,EAAEs5L,GAAGt5L,EAAE,OAAO,UAAUzzB,EAAEZ,KAAKY,EAAE8kB,IAAI2O,EAAEs5L,GAAGt5L,EAAE,SAAS,QAAQ8jB,EAAE9jB,IAAG,EAAG8jB,GAAGA,EAAnJ,CAAsJv3C,GAAG,OAAOyjN,EAAE5Y,SAASzmL,IAAI/c,GAAG+c,EAAE7Y,KAAK,EAAEgQ,GAAG6I,EAAE1Y,OAAO,EAAE49H,GAAGllH,EAAE5Y,QAAQ,EAAEmiC,GAAGvpB,EAAE3Y,MAAM,GAAGpE,EAAEkU,EAAE+tH,EAAE37F,GAAGvpB,GAAG,EAAE,CAACpkB,EAAEorI,EAAE7/H,KAAKlE,EAAE,EAAE,EAAEA,EAAEkwC,EAAEA,EAAElwC,EAAEiiI,EAAE8B,EAAE1/H,OAAO6P,EAAE,EAAE,EAAEA,EAAEkY,EAAEA,EAAElY,EAAEC,EAAE4vH,EAAE5/H,QAAQ89H,EAAE,EAAE,EAAEA,EAAE/xF,EAAEA,EAAE+xF,EAAE8B,EAAEA,EAAE3/H,MAAMkiC,EAAE,EAAE,EAAEA,EAAEla,EAAEA,EAAEka,GAA2Yy/K,CAAGptN,EAAEu3C,EAAE,EAAElwC,EAAE,GAAG,MAAM,CAACgmN,MAAM,CAACtyL,EAAEtH,EAAEhoB,KAAKqZ,EAAE2O,EAAEloB,IAAImZ,EAAE6yB,EAAEhzB,EAAEld,GAAGimN,MAAM,CAACvyL,EAAEtH,EAAEhoB,KAAK8P,EAAE6vH,EAAEtmH,EAAE2O,EAAEloB,IAAIgQ,EAAEvb,EAAE0kB,EAAE6yB,EAAEh8B,EAAE6vH,EAAE7vH,EAAE+tH,EAAE/kH,EAAEld,EAAEkU,EAAEvb,EAAEub,EAAEC,IAAxK,CAA6KiY,GAAGpsB,EAAEkwC,EAAE81K,MAAM9xM,EAAEg8B,EAAE+1K,MAAMttN,EAAE+qN,UAAUt3L,EAAE6hC,gBAAgBt1D,EAAEutN,SAASlmN,EAAE0zB,EAAE1zB,EAAEyd,EAAEzd,EAAEqd,EAAErd,EAAEkd,GAAGld,EAAEqd,IAAInJ,EAAEmJ,GAAGrd,EAAEkd,IAAIhJ,EAAEgJ,IAAIvkB,EAAE4gN,OAAO5gN,EAAE8gN,YAAY9gN,EAAEutE,KAAKlmE,EAAE0zB,EAAE1zB,EAAEyd,EAAEzd,EAAEqd,EAAErd,EAAEkd,GAAGvkB,EAAEohN,OAAOphN,EAAE+qN,UAAUt3L,EAAE8hC,YAAYv1D,EAAEutE,KAAKhyD,EAAEwf,EAAExf,EAAEuJ,EAAEvJ,EAAEmJ,EAAEnJ,EAAEgJ,GAAGvkB,EAAEw4G,KAAK,WAAWx4G,EAAE6gN,YAAY72M,OAAO,WAAW,IAAIhK,EAAER,KAAKolN,MAAM,OAAO5kN,EAAEZ,KAAKY,EAAE8kB,GAAG0lM,QAAQ,SAASxqN,EAAEyzB,GAAG,OAAOu5L,GAAGxtN,KAAKolN,MAAM5kN,EAAEyzB,IAAI62L,aAAa,SAAStqN,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAKolN,MAAM,OAAOiI,GAAGt1K,GAAGy1K,GAAGz1K,EAAEv3C,EAAE,MAAMgtN,GAAGz1K,EAAE,KAAK9jB,IAAIg5L,SAAS,SAASzsN,GAAG,OAAOgtN,GAAGxtN,KAAKolN,MAAM5kN,EAAE,OAAO0sN,SAAS,SAAS1sN,GAAG,OAAOgtN,GAAGxtN,KAAKolN,MAAM,KAAK5kN,IAAI2qN,eAAe,WAAW,IAAI3qN,EAAEyzB,EAAE8jB,EAAE/3C,KAAKolN,MAAM,OAAOiI,GAAGt1K,IAAIv3C,EAAEu3C,EAAExc,EAAEtH,GAAG8jB,EAAEzyB,EAAEyyB,EAAEn4C,MAAM,IAAIY,GAAGu3C,EAAExc,EAAEwc,EAAEn4C,MAAM,EAAEq0B,EAAE8jB,EAAEzyB,GAAG,CAACiW,EAAE/6B,EAAE8kB,EAAE2O,IAAIm3L,QAAQ,WAAW,IAAI5qN,EAAER,KAAKolN,MAAM,OAAOiI,GAAG7sN,GAAGA,EAAEkJ,MAAM6U,KAAKqiC,IAAIpgD,EAAE8kB,EAAE9kB,EAAEZ,MAAMY,EAAEgK,OAAO+T,KAAKqiC,IAAIpgD,EAAE+6B,EAAE/6B,EAAEZ,OAAOmsL,gBAAgB,WAAW,IAAIvrL,EAAER,KAAKolN,MAAM,MAAM,CAAC7pL,EAAE/6B,EAAE+6B,EAAEjW,EAAE9kB,EAAE8kB,MAAM0oM,GAAG,GAASC,GAAG7B,GAAG8B,GAAGlB,GAAGmB,GAAGrsN,GAAGksN,GAAGI,IAAxBvD,GAA+BmD,GAAGK,KAAKJ,GAAGD,GAAGM,MAAMJ,GAAGF,GAAGO,UAAUJ,GAAG,IAAIK,GAAGvK,EAAE/F,YAAYuQ,GAAGxK,EAAE1G,eAAucwF,EAAEP,KAAK,MAAM,CAACpmF,MAAM,CAACxpG,KAAK,SAASy0L,OAAO,CAACG,MAAM,CAAC,CAAC9mN,KAAK,WAAWmK,QAAO,EAAG6jN,UAAU,CAACC,iBAAgB,KAAMjH,MAAM,CAAC,CAAChnN,KAAK,cAAcqiN,EAAEP,KAAK,SAAS,CAACmF,SAAS,CAACiH,IAAI,CAACC,mBAAmB,GAAGC,cAAc,OAAO,IAAIC,GAAG1E,GAAGtM,OAAO,CAAC+I,gBAAgBkH,GAAGO,UAAUvH,oBAAoB,CAAC,kBAAkB,cAAc,gBAAgB,cAAc,gBAAgB,eAAe,qBAAqB,kBAAkB,gBAAgBnxL,WAAW,WAAW,IAAIr1B,EAAEyzB,EAAE8jB,EAAE/3C,KAAKqqN,GAAG33L,UAAUmD,WAAW8hB,MAAMI,EAAEz+B,YAAY9Y,EAAEu3C,EAAEovK,WAAW37E,MAAMzzF,EAAEuvK,aAAa97E,MAAMhrI,EAAEouN,KAAI,EAAG36L,EAAE8jB,EAAEkwK,iBAAiBjgM,QAAQwmM,GAAG,YAAYv6L,EAAE66L,cAAc,iCAAiC,yBAAyBN,GAAG,YAAYv6L,EAAE+6L,aAAa,gCAAgC,wBAAwBR,GAAG,YAAYv6L,EAAE46L,mBAAmB,sCAAsC,8BAA8BL,GAAG,YAAYz2K,EAAEiwK,iBAAiBhgM,QAAQinM,aAAa,gCAAgC,wBAAwBT,GAAG,YAAYv6L,EAAEi7L,gBAAgB,mCAAmC,4BAA4B10I,OAAO,SAASh6E,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE7H,KAAKmnN,UAAUr3M,KAAK,IAAI9P,KAAKmvN,OAAOnvN,KAAKovN,WAAWn7L,EAAE,EAAE8jB,EAAElwC,EAAE1D,OAAO8vB,EAAE8jB,IAAI9jB,EAAEj0B,KAAK0oN,cAAc7gN,EAAEosB,GAAGA,EAAEzzB,IAAIkoN,cAAc,SAASloN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK+b,EAAElU,EAAEs/M,UAAUr9E,EAAEjiI,EAAEy/M,aAAan5K,EAAEtmC,EAAEqhN,2BAA2B1oN,EAAEyzB,GAAGzzB,EAAE6uN,QAAQxnN,EAAEggN,cAAc9rM,EAAEwrM,SAAS/mN,EAAE8uN,QAAQznN,EAAEggN,cAAc9rM,EAAE0rM,SAASjnN,EAAE6nN,cAAcxgN,EAAE8B,MAAMnJ,EAAE+nN,OAAOt0L,EAAEzzB,EAAEovH,OAAO,CAAC95D,gBAAgB3nB,EAAE2nB,gBAAgBC,YAAY5nB,EAAE4nB,YAAY23J,cAAcv/K,EAAEu/K,cAAcjE,YAAYt7K,EAAEs7K,YAAY8F,aAAazlF,EAAEz0G,MAAMA,MAAMxtB,EAAE29M,MAAM11M,KAAKgpM,OAAO7kL,IAAIgwL,EAAEjuM,QAAQ8zH,EAAEh6H,KAAKmkB,MAAMzzB,EAAEovH,OAAO89F,cAAc,MAAM7lN,EAAE2nN,uBAAuBhvN,EAAEyzB,EAAE8jB,EAAE5J,GAAG3tC,EAAE2kN,SAASqK,uBAAuB,SAAShvN,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE/b,KAAK8pI,EAAEtpI,EAAEovH,OAAOzhF,EAAEpyB,EAAEisM,iBAAiBpjM,EAAEupB,EAAEshL,eAAe7jF,EAAEz9F,EAAEkoC,eAAeiqG,EAAEvkK,EAAEozM,QAAQpzM,EAAEqzM,WAAWp3M,EAAE+D,EAAE2zM,wBAAwB3zM,EAAEpS,MAAMsqB,EAAEpsB,GAAGkd,EAAEhJ,EAAE4zM,wBAAwB5zM,EAAEpS,MAAMsqB,EAAEqsJ,EAAEz4K,GAAGiiI,EAAE6jF,WAAW/hF,EAAE9B,EAAElqI,KAAKm4C,EAAEnzB,EAAE5M,EAAEpY,KAAKkqI,EAAEvuG,EAAEqwG,EAAE7zF,EAAEnzB,EAAE5M,EAAE4yB,KAAK7lB,EAAEqsC,OAAO04E,EAAExkH,EAAEsmH,EAAE7mH,EAAEqsC,OAAOrZ,EAAEnzB,EAAE5M,EAAE4yB,KAAKk/F,EAAEt/H,OAAOohI,EAAE7mH,EAAEob,UAAK,EAAO2pG,EAAEpgI,MAAMkiI,OAAE,EAAO7mH,EAAEob,MAAMyvL,WAAW,SAASpvN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE7H,KAAKioN,iBAAiBlsM,EAAElU,EAAEgoN,yBAAyB7vN,KAAKo0H,OAAO0V,EAAEjiI,EAAEmgB,QAAQ8nM,QAAQ3hL,EAAEpyB,EAAE5X,OAAOygB,EAAE,GAAG,IAAIqP,EAAE,EAAEA,EAAEka,IAAI4J,EAAEh8B,EAAEkY,KAAI,IAAK61G,IAAI,IAAIllH,EAAE3b,QAAQ8uC,EAAEyzF,aAAQ,IAAS1B,QAAG,IAAS/xF,EAAEyzF,QAAQ5mH,EAAEhhB,KAAKm0C,EAAEyzF,OAAOzzF,EAAEpuC,QAAQnJ,KAAKyzB,GAAG,OAAOrP,GAAGmrM,cAAc,WAAW,OAAO/vN,KAAK4vN,aAAazrN,QAAQ6rN,cAAc,SAASxvN,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAK4vN,WAAWpvN,GAAGqH,OAAE,IAASosB,EAAE8jB,EAAE9uC,QAAQgrB,IAAI,EAAE,OAAO,IAAIpsB,EAAEkwC,EAAE5zC,OAAO,EAAE0D,GAAGunN,SAAS,WAAW,IAAI5uN,EAAEyzB,EAAE8jB,EAAE/3C,KAAKioN,iBAAiBpgN,EAAE,GAAG,IAAIrH,EAAE,EAAEyzB,EAAEj0B,KAAKmnN,UAAUr3M,KAAK3L,OAAO3D,EAAEyzB,IAAIzzB,EAAEqH,EAAEjE,KAAKm0C,EAAEk4K,iBAAiB,KAAKzvN,EAAER,KAAK2J,QAAQ,MAAM,CAACumN,OAAOroN,EAAEsB,MAAM4uC,EAAEo4K,YAAY/mN,IAAI2uC,EAAEq4K,UAAUC,WAAWrwN,KAAK+vN,gBAAgBO,MAAMv4K,IAAI23K,wBAAwB,SAASlvN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAEhY,KAAKwlN,MAAMzgM,EAAE/kB,KAAKgoN,iBAAiBp4K,EAAE7qB,EAAEsxD,eAAep9C,EAAEjhB,EAAElI,KAAK63M,SAAS58E,EAAEhmH,EAAE8qM,yBAAyB7vN,KAAKo0H,OAAOmV,EAAExkH,EAAEwrM,YAAYt3L,EAAEz4B,GAAGsP,KAAKmkB,IAAInR,EAAEi1B,EAAEk3K,aAAahvN,EAAE8kB,EAAEiD,QAAQ8nM,QAAQ9zM,EAAEhc,KAAKmnN,UAAU37E,MAAMjwG,OAAE,IAASguG,EAAEpgI,MAAM,EAAEogI,EAAEzmF,KAAK,GAAGymF,EAAE7qH,KAAK,EAAE6qH,EAAE7qH,IAAI6qH,EAAEzmF,IAAIx9B,OAAE,IAASikH,EAAEpgI,MAAMogI,EAAEngI,IAAImgI,EAAEzmF,KAAK,GAAGymF,EAAE7qH,KAAK,EAAE6qH,EAAEzmF,IAAIymF,EAAE7qH,IAAI6qH,EAAE7qH,IAAI6qH,EAAEzmF,IAAIsvD,EAAE24B,EAAE5mI,OAAO,GAAGlE,QAAG,IAASA,QAAG,IAAS+b,EAAE,IAAInU,EAAE,EAAEA,EAAEuqG,IAAIr2F,EAAEgvH,EAAEljI,IAAI8B,QAAQnJ,IAAIqH,EAAEkU,EAAEyvH,QAAQxvH,IAAI8tH,OAAE,KAAUw2C,EAAEv7J,EAAEwrM,YAAYt3L,EAAEld,EAAEpS,OAAOmG,KAAKmkB,KAAK9qB,MAAMm3K,EAAEl3K,IAAIk3K,EAAE5hK,KAAK,GAAG4hK,EAAEx9H,KAAK,EAAEw9H,EAAEx9H,IAAIw9H,EAAE5hK,KAAK6qH,EAAE7qH,IAAI,GAAGorH,EAAE,GAAGP,EAAEzmF,KAAK,GAAGgnF,EAAE,KAAKvuG,GAAGuuG,IAAI,OAAO37F,EAAEppB,EAAEkrM,iBAAiB10L,GAAGqwG,GAAGhnH,EAAEG,EAAEkrM,iBAAiB10L,EAAEjW,IAAI6oB,OAAE,IAASrrB,GAAGvE,KAAKqiC,IAAIgrF,GAAG9oH,IAAI8oH,EAAE9oH,EAAE8B,EAAEU,GAAG,IAAIsqB,GAAGtqB,EAAE,GAAGsqB,EAAEzB,EAAErrB,EAAEqrB,EAAErrB,GAAG,CAACqd,KAAKyrG,EAAEhsI,KAAKuuC,EAAEvD,KAAKhmB,EAAEwsC,OAAOxsC,EAAEgnH,EAAE,IAAI+jF,wBAAwB,SAASnvN,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE,SAASlU,EAAEmnN,aAAa,SAASxuN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAEkY,EAAEi8L,OAAOpmF,EAAE/tH,EAAEvb,GAAG2tC,EAAE3tC,EAAE,EAAEub,EAAEvb,EAAE,GAAG,KAAKokB,EAAEpkB,EAAEub,EAAE5X,OAAO,EAAE4X,EAAEvb,EAAE,GAAG,KAAKorI,EAAE7zF,EAAE82K,mBAAmB,OAAO,OAAO1gL,IAAIA,EAAE27F,GAAG,OAAOllH,EAAEqP,EAAE7qB,IAAI6qB,EAAE9qB,MAAMyb,EAAEklH,IAAI,OAAOllH,IAAIA,EAAEklH,EAAEA,EAAE37F,GAAGtmC,EAAEiiI,GAAGA,EAAEvrH,KAAKG,IAAIyvB,EAAEvpB,IAAI,EAAEgnH,EAAE,CAACphC,MAAMjsF,KAAKqiC,IAAIh8B,EAAEupB,GAAG,EAAEy9F,EAAE33G,EAAEo8L,WAAWG,MAAMz4K,EAAE+2K,cAAc3lN,MAAMtB,GAAhR,CAAoRosB,EAAE8jB,EAAElwC,GAArsI,SAAYrH,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE/xF,EAAEi3K,aAAa7gL,EAAEla,EAAEo8L,WAAWzrM,EAAEqP,EAAEi8L,OAAO1vN,GAAGorI,EAAEq4E,EAAE3G,cAAcxzE,GAAG,SAAStpI,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAE3tC,EAAEiwN,QAAQ,IAAI10M,EAAE,EAAE+tH,EAAE71G,EAAE9vB,OAAO4X,EAAE+tH,IAAI/tH,EAAEoyB,EAAE5vB,KAAKG,IAAIyvB,EAAE5vB,KAAKqiC,IAAI3sB,EAAElY,GAAGkY,EAAElY,EAAE,KAAK,IAAIA,EAAE,EAAE+tH,EAAEtpI,EAAEkwN,WAAWvsN,OAAO4X,EAAE+tH,IAAI/tH,EAAElU,EAAErH,EAAEmwN,gBAAgB50M,GAAGoyB,EAAEpyB,EAAE,EAAEwC,KAAKG,IAAIyvB,EAAE5vB,KAAKqiC,IAAI/4C,EAAEkwC,IAAI5J,EAAE4J,EAAElwC,EAAE,OAAOsmC,EAA/M,CAAkNla,EAAEq8L,MAAMr8L,EAAEi8L,SAAS,EAAE,OAAOjM,EAAE3G,cAAcxzE,IAAIjiI,EAAE+jI,EAAE7zF,EAAE82K,mBAAmB9yM,EAAEg8B,EAAE+2K,gBAAgBjnN,EAAEiiI,EAAE37F,EAAEpyB,EAAE,GAAG,CAACyuF,MAAM3iG,EAAEsmC,EAAEqiL,MAAMz0M,EAAE5S,MAAMyb,EAAE/c,EAAE,GAAmxH+oN,CAAG38L,EAAE8jB,EAAElwC,GAAGiiI,EAAE9pI,KAAKgwN,cAAcxvN,EAAER,KAAKmnN,UAAU37E,OAAOr9F,EAAEpyB,EAAE5S,MAAM4S,EAAEyuF,MAAMs/B,EAAE/tH,EAAEyuF,MAAM,EAAE5lF,EAAErG,KAAKG,IAAI+vM,GAAG5mN,EAAEqnN,gBAAgB,KAAKnzM,EAAEyuF,MAAMzuF,EAAEy0M,OAAO,MAAM,CAAC5wN,KAAKuuC,EAAEvpB,EAAE,EAAEgmB,KAAKuD,EAAEvpB,EAAE,EAAEwsC,OAAOjjB,EAAEhO,KAAKvb,IAAIokM,KAAK,WAAW,IAAIxoN,EAAER,KAAKwlN,MAAMvxL,EAAEj0B,KAAKgoN,iBAAiBjwK,EAAE/3C,KAAKmnN,UAAUr3M,KAAKjI,EAAE7H,KAAKsnN,aAAavrM,EAAEg8B,EAAE5zC,OAAO2lI,EAAE,EAAE,IAAIm6E,EAAEK,OAAO3C,SAASnhN,EAAEoB,IAAIpB,EAAEqwN,WAAW/mF,EAAE/tH,IAAI+tH,EAAE,CAAC,IAAI37F,EAAEla,EAAEs8L,YAAY1oN,EAAEiI,KAAKg6H,IAAI7uF,MAAM9M,EAAEzvB,MAAMu8B,MAAM9M,EAAE2U,MAAM/K,EAAE+xF,GAAGk/E,OAAO/E,EAAEK,OAAOzC,WAAWrhN,EAAEoB,MAAMsnN,2BAA2B,WAAW,IAAI1oN,EAAER,KAAKi0B,EAAEgwL,EAAElG,OAAO,GAAGsM,GAAG33L,UAAUw2L,2BAA2BvxK,MAAMn3C,EAAE8Y,YAAYy+B,EAAEv3C,EAAEynN,iBAAiBjgM,QAAQngB,EAAErH,EAAEwnN,iBAAiBhgM,QAAQ,OAAOiM,EAAE66L,cAAcL,GAAG12K,EAAE+2K,cAAc76L,EAAE66L,eAAe76L,EAAE+6L,aAAaP,GAAG12K,EAAEi3K,aAAa/6L,EAAE+6L,cAAc/6L,EAAE46L,mBAAmBJ,GAAG12K,EAAE82K,mBAAmB56L,EAAE46L,oBAAoB56L,EAAEi7L,gBAAgBT,GAAG12K,EAAEm3K,gBAAgBj7L,EAAEi7L,iBAAiBj7L,EAAEg7L,aAAaR,GAAG5mN,EAAEonN,aAAah7L,EAAEg7L,cAAch7L,KAAK68L,GAAG7M,EAAE1G,eAAewT,GAAG9M,EAAEj8L,QAAQxjB,QAAQu+M,EAAEP,KAAK,SAAS,CAACpmF,MAAM,CAACxpG,KAAK,UAAUy0L,OAAO,CAACG,MAAM,CAAC,CAAC9mN,KAAK,SAASsJ,SAAS,SAASgc,GAAG,aAAa0hM,MAAM,CAAC,CAAChnN,KAAK,SAASsJ,SAAS,OAAOgc,GAAG,cAAcgrM,SAAS,CAACz6L,UAAU,CAACqgC,MAAM,WAAW,MAAM,IAAIvhC,MAAM,SAAS70B,EAAEyzB,GAAyF,OAAhFA,EAAE0zL,SAASnnN,EAAE4oN,cAAc/zL,OAAO,IAAuD,MAAM70B,EAAEywN,OAAO,KAAKzwN,EAAE0wN,OAAO,KAA/Ej9L,EAAE0zL,SAASnnN,EAAE4oN,cAAct5M,KAAKtP,EAAEmJ,OAAoDmgI,EAAE,SAAS,IAAIqnF,GAAG9G,GAAGtM,OAAO,CAAC+I,gBAAgBkH,GAAGM,MAAMtH,oBAAoB,CAAC,kBAAkB,cAAc,cAAc,uBAAuB,mBAAmB,mBAAmB,cAAc,YAAY,aAAa,YAAYxsI,OAAO,SAASh6E,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEkzL,UAAUr3M,KAAKm0M,EAAExG,KAAK1lK,EAAG,SAASA,EAAElwC,GAAGosB,EAAEy0L,cAAc3wK,EAAElwC,EAAErH,MAAOkoN,cAAc,SAASloN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK+b,EAAElU,EAAEs/M,UAAUr9E,EAAEtpI,EAAE2oN,QAAQ,GAAGh7K,EAAEtmC,EAAEggN,cAAc9rM,EAAEwrM,SAAS3iM,EAAE/c,EAAEggN,cAAc9rM,EAAE0rM,SAAS77E,EAAE/jI,EAAEqhN,2BAA2B1oN,EAAEyzB,GAAGqsJ,EAAEz4K,EAAEy/M,aAAax3M,KAAKmkB,GAAGjc,EAAEnQ,EAAE8B,MAAMob,EAAEgzB,EAAE5J,EAAEijL,mBAAmB,IAAIjjL,EAAE8hL,iBAAiB,iBAAiB3vC,EAAEA,EAAE7hD,IAAIxqG,EAAEjc,GAAG43B,EAAEmI,EAAEnzB,EAAE6qM,eAAe7qM,EAAEqrM,iBAAiB3vC,EAAErsJ,EAAEjc,GAAGxX,EAAE6uN,QAAQlhL,EAAE3tC,EAAE8uN,QAAQ1qM,EAAEpkB,EAAE20L,SAASvpD,EAAEprI,EAAE6nN,cAAcrwM,EAAExX,EAAE+nN,OAAOt0L,EAAEzzB,EAAEovH,OAAO,CAAC95D,gBAAgB81E,EAAE91E,gBAAgBC,YAAY61E,EAAE71E,YAAY0zJ,YAAY79E,EAAE69E,YAAYqD,UAAUlhF,EAAEkhF,UAAUC,WAAWnhF,EAAEmhF,WAAWI,SAASvhF,EAAEuhF,SAASjsB,OAAOnpJ,EAAE,EAAE6zF,EAAEs1D,OAAOlyK,KAAK86G,EAAE96G,MAAMisB,MAAMl2B,IAAIk2B,MAAMrL,GAAGrU,EAAExW,EAAEO,EAAEsqB,GAAGpvC,EAAE2kN,SAASoE,cAAc,SAAS/oN,GAAG,IAAIyzB,EAAEzzB,EAAEovH,OAAO73E,EAAEv3C,EAAE20L,SAASttL,EAAEo8M,EAAEuF,cAAchpN,EAAE8oN,eAAe,CAACxzJ,gBAAgB7hC,EAAE6hC,gBAAgBC,YAAY9hC,EAAE8hC,YAAY0zJ,YAAYx1L,EAAEw1L,YAAYvoB,OAAOjtK,EAAEitK,QAAQjtK,EAAE6hC,gBAAgBg7J,GAAG/4K,EAAE2xK,qBAAqB7hN,EAAEkwC,EAAE+d,kBAAkB7hC,EAAE8hC,YAAY+6J,GAAG/4K,EAAE4xK,iBAAiB9hN,EAAEkwC,EAAEge,cAAc9hC,EAAEw1L,YAAYqH,GAAG/4K,EAAE6xK,iBAAiB7xK,EAAE0xK,aAAax1L,EAAEitK,OAAOnpJ,EAAEmpJ,OAAOnpJ,EAAEgzK,aAAa7B,2BAA2B,SAAS1oN,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAEytK,MAAMzpM,EAAEg8B,EAAEuvK,aAAax9E,EAAEtpI,EAAE2oN,QAAQ,GAAGh7K,EAAEpyB,EAAEjM,KAAKmkB,IAAI,GAAGrP,EAAEylM,GAAG33L,UAAUw2L,2BAA2BvxK,MAAMI,EAAEz+B,WAAWsyH,EAAE,CAAC45E,MAAM39M,EAAEgI,UAAUokB,EAAEu0L,QAAQzsM,EAAEqtM,aAAarxK,EAAEpuC,OAAO,OAAOouC,EAAEgxK,kBAAkBnkM,IAAIA,EAAEq/L,EAAElG,OAAO,GAAGn5L,IAAIA,EAAEs8K,OAAO6vB,GAAG,CAACjnF,EAAEo3D,OAAO/yJ,EAAE27F,EAAE/xF,EAAEjW,QAAQo/J,OAAOr5L,EAAEmgB,QAAQhd,SAAS8iE,MAAMozH,QAAQt1D,EAAE33G,GAAGrP,KAAKysM,GAAGpN,EAAE1G,eAAe+T,GAAG/yM,KAAKu7L,GAAGyX,GAAG,EAAED,GAAGE,GAAGF,GAAG,EAAEvO,EAAEP,KAAK,WAAW,CAAC7+K,UAAU,CAAC8tL,eAAc,EAAGC,cAAa,GAAIt1F,MAAM,CAACxpG,KAAK,UAAU++L,eAAe,SAASnxN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE4uB,SAAS9yB,cAAc,MAAMiyH,EAAEtpI,EAAEsP,KAAKq+B,EAAE27F,EAAE69E,SAAS/iM,EAAEklH,EAAEgvE,OAAO,GAAG/8L,EAAElN,aAAa,QAAQrO,EAAEwlB,GAAG,WAAWmoB,EAAEhqC,OAAO,IAAI8vB,EAAE,EAAE8jB,EAAE5J,EAAE,GAAGr+B,KAAK3L,OAAO8vB,EAAE8jB,IAAI9jB,GAAGpsB,EAAEkU,EAAEjE,YAAY6yB,SAAS9yB,cAAc,QAAQC,YAAY6yB,SAAS9yB,cAAc,SAAStM,MAAMuqD,gBAAgB3nB,EAAE,GAAG2nB,gBAAgB7hC,GAAGrP,EAAEqP,IAAIpsB,EAAEiQ,YAAY6yB,SAASmuF,eAAel0G,EAAEqP,KAAK,OAAOlY,EAAE61M,WAAWC,OAAO,CAAC/Y,OAAO,CAACgZ,eAAe,SAAStxN,GAAG,IAAIyzB,EAAEzzB,EAAEsP,KAAK,OAAOmkB,EAAE6kL,OAAO30M,QAAQ8vB,EAAE0zL,SAASxjN,OAAO8vB,EAAE6kL,OAAOrvM,IAAK,SAASsuC,EAAElwC,GAAG,IAAIkU,EAAEvb,EAAEonN,eAAe,GAAG99E,EAAE/tH,EAAEg2M,WAAWpmG,SAAS9jH,GAAG,MAAM,CAAC2hF,KAAKzxC,EAAEwzK,UAAUzhF,EAAEh0E,gBAAgB01J,YAAY1hF,EAAE/zE,YAAY01J,UAAU3hF,EAAE2/E,YAAYjyG,OAAOv8D,MAAMhnB,EAAE0zL,SAAS,GAAG73M,KAAKjI,KAAKkU,EAAEjM,KAAKjI,GAAG2vG,OAAO7tG,MAAM9B,KAAM,KAAKouC,QAAQ,SAASz1C,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE71G,EAAEtqB,MAAMwkC,EAAEnuC,KAAKwlN,MAAM,IAAIztK,EAAE,EAAElwC,GAAGsmC,EAAEr+B,KAAK63M,UAAU,IAAIxjN,OAAO4zC,EAAElwC,IAAIkwC,GAAGh8B,EAAEoyB,EAAEy5K,eAAe7vK,IAAIjoC,KAAKg6H,KAAK/tH,EAAEjM,KAAKg6H,GAAGtyB,QAAQz7F,EAAEjM,KAAKg6H,GAAGtyB,QAAQrpE,EAAEqsC,WAAWw3I,iBAAiB,GAAG7E,UAAUqE,GAAGlG,cAAciG,GAAGP,SAAS,CAACz6L,UAAU,CAACqgC,MAAM,WAAW,MAAM,IAAIvhC,MAAM,SAAS70B,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAE6kL,OAAOt4M,EAAEmJ,OAAO9B,EAAE,KAAKosB,EAAE0zL,SAASnnN,EAAE4oN,cAAct5M,KAAKtP,EAAEmJ,OAAO,OAAOs6M,EAAEjuM,QAAQ+hC,IAAIA,EAAEA,EAAEvuC,SAAS,IAAI3B,EAAEkwC,GAAGlwC,EAAEkwC,OAAO,IAAIk6K,GAAG5H,GAAGtM,OAAO,CAAC+I,gBAAgBkH,GAAGI,IAAInH,WAAWhD,EAAEvvF,KAAKsyF,oBAAoB,CAAC,kBAAkB,cAAc,cAAc,cAAc,uBAAuB,mBAAmB,oBAAoBkL,aAAa,SAAS1xN,GAAG,IAAI,IAAIyzB,EAAE,EAAE8jB,EAAE,EAAEA,EAAEv3C,IAAIu3C,EAAE/3C,KAAKwlN,MAAM2M,iBAAiBp6K,MAAM9jB,EAAE,OAAOA,GAAGumD,OAAO,SAASh6E,GAAG,IAAQqH,EAAEkU,EAAE+tH,EAAE9pI,KAAKmuC,EAAE27F,EAAE07E,MAAM5gM,EAAEupB,EAAE0iL,UAAUjlF,EAAEz9F,EAAEnmB,QAAQs4J,EAAE,EAAEtoK,EAAE,EAAE+M,EAAE,EAAE6qB,EAAE,EAAE3W,EAAE6wG,EAAEq9E,UAAUp8E,EAAE9xG,EAAEnpB,KAAKy5H,EAAEqC,EAAEomF,iBAAiB,KAAK,EAAElvM,EAAE8oH,EAAE0/E,cAAcrrN,EAAE6pI,EAAEsoF,eAAetoF,EAAEngI,OAAO,GAAGmZ,EAAEyuM,GAAG,CAAC,IAAIv1M,EAAE4vH,EAAEuhF,SAASoE,GAAGh2L,GAAGvf,GAAGA,GAAGs1M,IAAIC,GAAGv1M,GAAGs1M,GAAGC,GAAG,GAAGzuM,EAAEwC,EAAE/G,KAAKw7L,IAAI/9L,GAAGo2F,EAAE7zF,KAAKy7L,IAAIh+L,GAAGwgH,EAAEj+G,KAAKw7L,IAAIx+K,GAAGrW,EAAE3G,KAAKy7L,IAAIz+K,GAAGnW,EAAEpJ,GAAG,GAAGuf,GAAG,GAAGA,GAAGg2L,GAAGpT,EAAEniM,GAAGw1M,IAAIj2L,GAAGi2L,IAAIj2L,GAAGg2L,GAAGC,GAAGjT,EAAEviM,IAAIw1M,IAAIj2L,IAAIi2L,IAAIj2L,GAAG+1L,GAAGE,GAAG7mF,EAAE3uH,KAAKs1M,IAAI/1L,GAAG+1L,IAAI,EAAE/yM,KAAKG,IAAI4G,EAAEA,EAAEikH,EAAE/M,EAAEA,EAAE+M,GAAGs9D,EAAE0X,GAAG,EAAEhgM,KAAKG,IAAI0zF,EAAEA,EAAEm3B,EAAErkH,EAAEA,EAAEqkH,GAAGk3E,EAAEr7L,EAAE,EAAE7G,KAAKukC,IAAIx9B,EAAEA,EAAEikH,EAAE/M,EAAEA,EAAE+M,GAAGm3E,EAAEvC,EAAE,EAAE5/L,KAAKukC,IAAIsvD,EAAEA,EAAEm3B,EAAErkH,EAAEA,EAAEqkH,GAAG+2C,GAAGmgC,EAAE91E,GAAG,EAAE3yH,GAAG0oM,EAAE7Z,GAAG,EAAE9hL,IAAI07L,EAAE91E,GAAG,EAAE/6F,IAAI8wK,EAAE7Z,GAAG,EAAE,IAAIh/L,EAAE,EAAEkU,EAAEgvH,EAAE5mI,OAAO0D,EAAEkU,IAAIlU,EAAEkjI,EAAEljI,GAAGstL,SAASrrD,EAAEo/E,2BAA2Bn+E,EAAEljI,GAAGA,GAAG,IAAIsmC,EAAEs7K,YAAY3/E,EAAEuoF,oBAA0FlkL,EAAEu8K,YAAYnsM,KAAKukC,IAAIvkC,KAAKG,KAA/FkG,EAAE1Y,MAAM0Y,EAAE3Y,KAAKkiC,EAAEs7K,aAAanpC,GAAK17J,EAAE5Y,OAAO4Y,EAAE7Y,IAAIoiC,EAAEs7K,aAAazxM,GAAuC,EAAE,GAAGm2B,EAAEw8K,YAAYpsM,KAAKukC,IAAI3U,EAAEu8K,YAAYnhF,EAAE,GAAGp7F,EAAEmkL,cAAcnkL,EAAEu8K,YAAYv8K,EAAEw8K,cAAc7gF,EAAEyoF,iCAAiC,GAAGpkL,EAAEizJ,QAAQr8K,EAAEopB,EAAEu8K,YAAYv8K,EAAEkzJ,QAAQzxJ,EAAEzB,EAAEu8K,YAAYzxL,EAAE2jJ,MAAM9yC,EAAE0oF,iBAAiB1oF,EAAE4gF,YAAYv8K,EAAEu8K,YAAYv8K,EAAEmkL,aAAaxoF,EAAE2oF,qBAAqB3oF,EAAEngI,OAAOmgI,EAAE6gF,YAAYpsM,KAAKukC,IAAIgnF,EAAE4gF,YAAYv8K,EAAEmkL,aAAaryN,EAAE,GAAG4H,EAAE,EAAEkU,EAAEgvH,EAAE5mI,OAAO0D,EAAEkU,IAAIlU,EAAEiiI,EAAE4+E,cAAc39E,EAAEljI,GAAGA,EAAErH,IAAIkoN,cAAc,SAASloN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK+b,EAAElU,EAAE29M,MAAM17E,EAAE/tH,EAAE80M,UAAU1iL,EAAEpyB,EAAEiM,QAAQpD,EAAEupB,EAAExK,UAAUioG,GAAG9B,EAAE79H,KAAK69H,EAAE59H,OAAO,EAAEo0K,GAAGx2C,EAAE/9H,IAAI+9H,EAAE99H,QAAQ,EAAEgM,EAAEm2B,EAAEg/K,SAASpoM,EAAEopB,EAAEg/K,SAASv9K,EAAE/nC,EAAEy/M,aAAaruL,EAAE8e,GAAGnzB,EAAE6sM,eAAgBjxN,EAAEg3G,OAAJ,EAAa3vG,EAAE6qN,uBAAuB9iL,EAAE9/B,KAAKmkB,KAAKka,EAAEm9K,cAAciG,IAA4EzuM,EAAEtiB,EAAE20L,UAAU,GAAG8uB,EAAElG,OAAOv9M,EAAE,CAAC6nN,cAAcxgN,EAAE8B,MAAM4+M,OAAOt0L,EAAE27F,OAAO,CAAC95D,gBAAgBhzC,EAAEgzC,gBAAgBC,YAAYjzC,EAAEizC,YAAY0zJ,YAAY3mM,EAAE2mM,YAAYmB,YAAY9nM,EAAE8nM,YAAYrvL,EAAEqwG,EAAE7vH,EAAEqlL,QAAQ97K,EAAEg7J,EAAEvkK,EAAEslL,QAAQkpB,WAAWvyM,EAAEwyM,SAASzlM,EAAEumM,cAAcryL,EAAEyxL,YAA1R3yK,GAAGnzB,EAAE8sM,aAAa,EAAE7pN,EAAE6iN,YAAkRC,YAA5U5yK,GAAGnzB,EAAE8sM,aAAa,EAAE7pN,EAAE8iN,YAAoUt1L,MAAM4uL,EAAEzG,sBAAsB5tK,EAAEva,MAAMpB,EAAElY,EAAEjM,KAAKgpM,OAAO7kL,OAAO,IAAIh0B,EAAEO,EAAEovH,OAAO73E,GAAGnzB,EAAE6sM,gBAAgBxxN,EAAEsqN,WAAW,IAAIt2L,EAAEka,EAAEg/K,SAAStlN,EAAEs/M,UAAUr3M,KAAKmkB,EAAE,GAAG27F,OAAO46F,SAASvqN,EAAEuqN,SAASvqN,EAAEsqN,WAAWtqN,EAAEqrN,eAAe9qN,EAAE2kN,SAASqN,eAAe,WAAW,IAAIhyN,EAAEyzB,EAAEj0B,KAAKsnN,aAAavvK,EAAE/3C,KAAKmnN,UAAUt/M,EAAE,EAAE,OAAOo8M,EAAExG,KAAK1lK,EAAEjoC,KAAM,SAASioC,EAAEh8B,GAAGvb,EAAEyzB,EAAEnkB,KAAKiM,GAAGk/B,MAAMz6C,IAAIu3C,EAAEy/D,SAAS3vG,GAAG0W,KAAKqiC,IAAIpgD,MAAOqH,GAAG6qN,uBAAuB,SAASlyN,GAAG,IAAIyzB,EAAEj0B,KAAKmnN,UAAUvqC,MAAM,OAAO3oJ,EAAE,IAAIgnB,MAAMz6C,GAAG+wN,IAAIhzM,KAAKqiC,IAAIpgD,GAAGyzB,GAAG,GAAGo+L,kBAAkB,SAAS7xN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAE,EAAEtoK,EAAEhY,KAAKwlN,MAAM,IAAIhlN,EAAE,IAAIyzB,EAAE,EAAE8jB,EAAE//B,EAAElI,KAAK63M,SAASxjN,OAAO8vB,EAAE8jB,IAAI9jB,EAAE,GAAGjc,EAAEm6M,iBAAiBl+L,GAAG,CAACzzB,GAAGqH,EAAEmQ,EAAE4vM,eAAe3zL,IAAInkB,KAAKmkB,IAAIj0B,KAAK2J,QAAQmgI,EAAEjiI,EAAEkqN,YAAY,MAAM,IAAIvxN,EAAE,OAAO,EAAE,IAAIyzB,EAAE,EAAE8jB,EAAEv3C,EAAE2D,OAAO8vB,EAAE8jB,IAAI9jB,EAAElY,EAAEvb,EAAEyzB,GAAG61G,GAAGA,EAAEg/E,aAAa36K,EAAE27F,EAAEo/E,2BAA2BntM,EAAEkY,IAAIka,EAAEpyB,EAAEo5K,SAAS,UAAUhnJ,EAAEy8K,cAA8BtqC,GAAG10C,EAAEz9F,EAAEy7K,mBAAmBtpC,GAA1C17J,EAAEupB,EAAEs7K,aAA0CnpC,EAAE17J,EAAE07J,GAAG10C,EAAE00C,GAAG,OAAOA,GAAGipC,cAAc,SAAS/oN,GAAG,IAAIyzB,EAAEzzB,EAAEovH,OAAO73E,EAAEv3C,EAAE20L,SAASttL,EAAEo8M,EAAEuF,cAAchpN,EAAE8oN,eAAe,CAACxzJ,gBAAgB7hC,EAAE6hC,gBAAgBC,YAAY9hC,EAAE8hC,YAAY0zJ,YAAYx1L,EAAEw1L,aAAax1L,EAAE6hC,gBAAgBu7J,GAAGt5K,EAAE2xK,qBAAqB7hN,EAAEkwC,EAAE+d,kBAAkB7hC,EAAE8hC,YAAYs7J,GAAGt5K,EAAE4xK,iBAAiB9hN,EAAEkwC,EAAEge,cAAc9hC,EAAEw1L,YAAY4H,GAAGt5K,EAAE6xK,iBAAiB7xK,EAAE0xK,cAAcgJ,qBAAqB,SAASjyN,GAAG,IAAI,IAAIyzB,EAAE,EAAE8jB,EAAE,EAAEA,EAAEv3C,IAAIu3C,EAAE/3C,KAAKwlN,MAAM2M,iBAAiBp6K,KAAK9jB,GAAGj0B,KAAKoyN,eAAer6K,IAAI,OAAO9jB,GAAGm+L,eAAe,SAAS5xN,GAAG,OAAO+d,KAAKukC,IAAIuuK,GAAGrxN,KAAKwlN,MAAM11M,KAAK63M,SAASnnN,GAAGkjN,OAAO,GAAG,IAAI6O,8BAA8B,WAAW,OAAOvyN,KAAKyyN,qBAAqBzyN,KAAKwlN,MAAM11M,KAAK63M,SAASxjN,WAAW4+M,EAAEP,KAAK,gBAAgB,CAACpmF,MAAM,CAACxpG,KAAK,QAAQ+/L,KAAK,KAAKtL,OAAO,CAACG,MAAM,CAAC,CAAC9mN,KAAK,SAASsJ,SAAS,WAAW09M,MAAM,CAAC,CAAChnN,KAAK,WAAWsJ,SAAS,OAAOa,QAAO,EAAG6jN,UAAU,CAACC,iBAAgB,MAAO3jN,SAAS,CAACyiN,UAAU,CAACC,cAAc,SAASsD,SAAS,CAACp+L,KAAK,QAAQ+/L,KAAK,OAAO5P,EAAEP,KAAK,SAAS,CAACmF,SAAS,CAACiL,cAAc,CAAC/D,mBAAmB,GAAGC,cAAc,OAAO,IAAI+D,GAAG9D,GAAGhR,OAAO,CAAC+J,iBAAiB,WAAW,OAAO9nN,KAAKmnN,UAAUI,SAASQ,iBAAiB,WAAW,OAAO/nN,KAAKmnN,UAAUM,WAAWqL,GAAG7O,EAAE1G,eAAewV,GAAG9O,EAAEj8L,QAAQxjB,QAAQwuN,GAAG/O,EAAEK,OAAO5C,eAAe,SAASuR,GAAGzyN,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,GAAGA,EAAEwnB,QAAQkrM,OAAO,GAAGrrN,EAAEkwC,EAAEluC,QAAQkS,OAAE,IAASg8B,EAAEr5B,IAAIuV,EAAE,EAAE61G,OAAE,IAAS/xF,EAAE+K,IAAI7uB,EAAE,EAAE,MAAM,CAAC9qB,MAAMtB,EAAEiiI,EAAE/tH,EAAE3S,IAAIvB,EAAEkU,EAAE+tH,GAAG,SAASqpF,GAAG3yN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkwC,EAAE,EAAEh8B,EAAEk3M,GAAGzyN,EAAEqH,GAAGiiI,EAAEmpF,GAAGh/L,EAAEpsB,GAAG,MAAM,CAACkE,IAAI+9H,EAAE1gI,IAAI8C,MAAM6P,EAAE3S,IAAI4C,OAAO89H,EAAE3gI,MAAM8C,KAAK8P,EAAE5S,OAAO,SAASiqN,GAAG5yN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE,OAAOkoM,EAAE5Y,SAAS7qM,IAAIyzB,EAAEzzB,EAAEuL,IAAIgsC,EAAEv3C,EAAE0L,MAAMrE,EAAErH,EAAEwL,OAAO+P,EAAEvb,EAAEyL,MAAMgoB,EAAE8jB,EAAElwC,EAAEkU,EAAEvb,EAAE,CAACuL,IAAIkoB,EAAE/nB,MAAM6rC,EAAE/rC,OAAOnE,EAAEoE,KAAK8P,GAAGgnM,EAAEP,KAAK,OAAO,CAACM,WAAU,EAAGuJ,UAAS,EAAGjwF,MAAM,CAACxpG,KAAK,SAASy0L,OAAO,CAACG,MAAM,CAAC,CAAC9mN,KAAK,WAAWslB,GAAG,aAAa0hM,MAAM,CAAC,CAAChnN,KAAK,SAASslB,GAAG,gBAAgB,IAAIqtM,GAAGhJ,GAAGtM,OAAO,CAAC8I,mBAAmBmH,GAAGK,KAAKvH,gBAAgBkH,GAAGM,MAAMvH,uBAAuB,CAAC,kBAAkB,iBAAiB,cAAc,aAAa,mBAAmB,kBAAkB,cAAc,yBAAyB,QAAQC,oBAAoB,CAAClxJ,gBAAgB,uBAAuBC,YAAY,mBAAmB0zJ,YAAY,mBAAmBqD,UAAU,iBAAiBpD,qBAAqB,4BAA4BC,iBAAiB,wBAAwBC,iBAAiB,wBAAwBmB,YAAY,mBAAmBgC,WAAW,aAAa7rB,OAAO,cAAcisB,SAAS,iBAAiB3yI,OAAO,SAASh6E,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE7H,KAAK+b,EAAElU,EAAEs/M,UAAUr9E,EAAE/tH,EAAEysM,QAAQr6K,EAAEpyB,EAAEjM,MAAM,GAAqB87H,EAAE/jI,EAAEi6B,QAAQw+I,EAAEz4K,EAAEyrN,UAAUR,GAAGlnF,EAAE2nF,SAA/C1rN,EAAE29M,MAAMx9L,QAAkD86L,WAAW,IAAIj7M,EAAEwnN,QAAQxnN,EAAEggN,cAAc9rM,EAAEwrM,SAAS1/M,EAAEynN,QAAQznN,EAAEggN,cAAc9rM,EAAE0rM,SAASnnC,SAAI,IAAS10C,EAAEm2E,cAAS,IAASn2E,EAAE4nF,cAAc5nF,EAAE4nF,YAAY5nF,EAAEm2E,SAASj4E,EAAE2pF,OAAO5rN,EAAEynN,QAAQxlF,EAAEu+E,cAAcxgN,EAAE8B,MAAMmgI,EAAEggE,UAAU37J,EAAE27F,EAAEla,OAAO/nH,EAAEohN,8BAA8Bn/E,GAAGA,EAAEq7E,SAASlxL,EAAE,EAAE8jB,EAAE5J,EAAEhqC,OAAO8vB,EAAE8jB,IAAI9jB,EAAEpsB,EAAE6gN,cAAcv6K,EAAEla,GAAGA,EAAEzzB,GAAG,IAAI8/K,GAAG,IAAIx2C,EAAEla,OAAOmyF,SAASl6M,EAAE6rN,4BAA4Bz/L,EAAE,EAAE8jB,EAAE5J,EAAEhqC,OAAO8vB,EAAE8jB,IAAI9jB,EAAEka,EAAEla,GAAGkxL,SAASuD,cAAc,SAASloN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE9pI,KAAKmuC,EAAE27F,EAAEq9E,UAAUviM,EAAEpkB,EAAE2oN,QAAQ,GAAGv9E,EAAE9B,EAAEw9E,aAAahnC,EAAEx2C,EAAEngI,MAAMqO,EAAE4zH,EAAE97H,KAAKmkB,GAAGlP,EAAE+kH,EAAEulF,QAAQz/K,EAAEk6F,EAAEwlF,QAAQr2L,EAAEkV,EAAEq6K,QAAQ54F,OAAOmb,EAAEjB,EAAEo/E,2BAA2B1oN,EAAEyzB,GAAGpsB,EAAEkd,EAAEkrM,iBAAiB,iBAAiBj4M,EAAEA,EAAEymH,IAAIxqG,EAAEqsJ,GAAGvkK,EAAEg8B,EAAEnI,EAAE6/K,eAAe3lF,EAAE6pF,gBAAgB37M,EAAEic,EAAEqsJ,GAAG9/K,EAAE6uN,QAAQtqM,EAAEvkB,EAAE8uN,QAAQ1/K,EAAEpvC,EAAE20L,SAASpqD,EAAEvqI,EAAE6nN,cAAc/nC,EAAE9/K,EAAE+nN,OAAOt0L,EAAEzzB,EAAEovH,OAAO,CAACr0F,EAAE1zB,EAAEyd,EAAEvJ,EAAEiT,KAAKpK,EAAEoK,MAAMisB,MAAMpzC,IAAIozC,MAAMl/B,GAAGmlL,OAAOn2D,EAAEm2D,OAAO6rB,WAAWhiF,EAAEgiF,WAAWI,SAASpiF,EAAEoiF,SAASr3J,gBAAgBi1E,EAAEj1E,gBAAgBC,YAAYg1E,EAAEh1E,YAAY0zJ,YAAY1+E,EAAE0+E,YAAY1H,QAAQ+Q,GAAGluM,EAAEm9L,QAAQ9oL,EAAEA,EAAE8oL,QAAQ,GAAGD,cAAc7oL,GAAGA,EAAE6oL,YAAYgL,UAAU/hF,EAAE+hF,YAAY7D,8BAA8B,SAASzoN,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAE6N,QAAQj6B,EAAErH,EAAE2oN,QAAQ,GAAGptM,EAAEkY,EAAEuxL,MAAMx9L,QAAQ8hH,EAAE/tH,EAAE/Q,SAAS8gN,KAAK39K,EAAEk8K,GAAG33L,UAAUu2L,8BAA8BtxK,MAAM1jB,EAAE3a,WAAW,OAAO60B,EAAEk+K,SAASyG,GAAG/6K,EAAEs0K,SAAStwM,EAAEswM,UAAUl+K,EAAE4zK,QAAQ+Q,GAAG/6K,EAAEy7K,YAAY1pF,EAAEi4E,SAAS5zK,EAAE2zK,YAAYiR,GAAG,CAAClrN,EAAEi6M,YAAY/pK,EAAE+pK,YAAYh4E,EAAE8pF,UAAUzlL,EAAEyzK,KAAKwR,GAAGN,GAAG/6K,EAAE6pK,KAAKuR,GAAGl/L,EAAEo7L,QAAQp7L,EAAEq7L,QAAQnhL,EAAEs7K,eAAet7K,GAAGwlL,gBAAgB,SAASnzN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAIiiI,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAEhY,KAAKwlN,MAAMzgM,EAAE/kB,KAAKsvN,QAAQ1/K,EAAE,EAAE3W,EAAE,EAAE,GAAGlU,EAAEiD,QAAQ8nM,QAAQ,CAAC,IAAIlrM,GAAGG,EAAE8uM,cAAcrzN,GAAG8/K,GAAG10C,EAAE5zH,EAAE87M,iCAAiC3vN,OAAO0D,EAAE,EAAEA,EAAEy4K,IAAIx2C,EAAE8B,EAAE/jI,IAAI8B,QAAQouC,IAAIlwC,EAA6B,SAASiiI,EAAEppI,MAAMopI,EAAE29E,UAAU1iM,EAAEiB,MAAMmoB,GAAGppB,EAAE8uM,cAAnE77M,EAAElI,KAAK63M,SAAS79E,EAAEngI,OAAiEmG,KAAKmkB,KAAK,EAAEgF,GAAGkV,GAAG,EAAEyB,GAAGzB,GAAG,GAAG,OAAWppB,EAAEkrM,iBAANrrM,EAAE,EAAqBqU,EAAErU,EAAsBgrB,EAAEhrB,GAAG,OAAOG,EAAEkrM,iBAAiBzvN,IAAIkzN,0BAA0B,WAAW,IAAIlzN,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE/b,KAAKwlN,MAAM17E,EAAE9pI,KAAKmnN,UAAUh5K,EAAE27F,EAAE0+E,QAAQ54F,OAAOhrG,EAAE7I,EAAE80M,UAAUjlF,EAAE9B,EAAEh6H,MAAM,GAAG,SAASwwK,EAAE9/K,EAAEyzB,EAAE8jB,GAAG,OAAOx5B,KAAKukC,IAAIvkC,KAAKG,IAAIle,EAAEu3C,GAAG9jB,GAAG,GAAGka,EAAEk+K,WAAWzgF,EAAEA,EAAEz2H,OAAQ,SAAS3U,GAAG,OAAOA,EAAEovH,OAAO5gG,QAAS,aAAamf,EAAE4lL,uBAAuB9P,EAAE+P,oBAAoBpoF,QAAQ,IAAIprI,EAAE,EAAEyzB,EAAE23G,EAAEznI,OAAO3D,EAAEyzB,IAAIzzB,EAAEu3C,EAAE6zF,EAAEprI,GAAGovH,OAAO/nH,EAAEo8M,EAAEgQ,YAAYhQ,EAAEsI,aAAa3gF,EAAEprI,GAAGovH,OAAO73E,EAAEksK,EAAEiQ,SAAStoF,EAAEprI,GAAGovH,OAAOzhF,EAAE4zK,SAAShqK,EAAEkqK,sBAAsBp6M,EAAEssN,SAAS54L,EAAEwc,EAAEoqK,sBAAsBt6M,EAAEssN,SAAS7uM,EAAEyyB,EAAEmqK,kBAAkBr6M,EAAEhE,KAAK03B,EAAEwc,EAAEqqK,kBAAkBv6M,EAAEhE,KAAKyhB,EAAE,GAAGvJ,EAAEiM,QAAQhd,SAAS8gN,KAAKK,gBAAgB,IAAI3rN,EAAE,EAAEyzB,EAAE23G,EAAEznI,OAAO3D,EAAEyzB,IAAIzzB,EAAgBwyN,GAAdj7K,EAAE6zF,EAAEprI,GAAGovH,OAAYhrG,KAAKpkB,EAAE,GAAGwyN,GAAGpnF,EAAEprI,EAAE,GAAGovH,OAAOhrG,KAAKmzB,EAAEkqK,sBAAsB3hC,EAAEvoI,EAAEkqK,sBAAsBr9L,EAAE3Y,KAAK2Y,EAAE1Y,OAAO6rC,EAAEoqK,sBAAsB7hC,EAAEvoI,EAAEoqK,sBAAsBv9L,EAAE7Y,IAAI6Y,EAAE5Y,SAASxL,EAAEorI,EAAEznI,OAAO,GAAG6uN,GAAGpnF,EAAEprI,EAAE,GAAGovH,OAAOhrG,KAAKmzB,EAAEmqK,kBAAkB5hC,EAAEvoI,EAAEmqK,kBAAkBt9L,EAAE3Y,KAAK2Y,EAAE1Y,OAAO6rC,EAAEqqK,kBAAkB9hC,EAAEvoI,EAAEqqK,kBAAkBx9L,EAAE7Y,IAAI6Y,EAAE5Y,WAAWg9M,KAAK,WAAW,IAAIxoN,EAAEyzB,EAAEj0B,KAAKwlN,MAAMztK,EAAE/3C,KAAKmnN,UAAUt/M,EAAEkwC,EAAEjoC,MAAM,GAAGiM,EAAEkY,EAAE48L,UAAU/mF,EAAE71G,EAAEqwL,OAAOn2K,EAAE,EAAEvpB,EAAE/c,EAAE1D,OAAO,IAAInE,KAAKszN,YAAoCrP,EAAEK,OAAO3C,SAAS1tL,EAAEryB,IAAI,CAACqK,MAAK,KAAtDzL,EAAEu3C,EAAEywK,QAAQ54F,OAAOgyF,MAA0C31M,KAAK,EAAE8P,EAAE9P,KAAKzL,EAAEyL,KAAKC,OAAM,IAAK1L,EAAE0L,MAAM49H,EAAEpgI,MAAMqS,EAAE7P,MAAM1L,EAAE0L,MAAMH,KAAI,IAAKvL,EAAEuL,IAAI,EAAEgQ,EAAEhQ,IAAIvL,EAAEuL,IAAIC,QAAO,IAAKxL,EAAEwL,OAAO89H,EAAEt/H,OAAOuR,EAAE/P,OAAOxL,EAAEwL,SAAS+rC,EAAEywK,QAAQQ,OAAO/E,EAAEK,OAAOzC,WAAW5tL,EAAEryB,MAAMusC,EAAEvpB,IAAIupB,EAAEtmC,EAAEsmC,GAAG66K,KAAKjtM,IAAIwtM,cAAc,SAAS/oN,GAAG,IAAIyzB,EAAEzzB,EAAEovH,OAAO73E,EAAEv3C,EAAE20L,SAASttL,EAAEo8M,EAAEuF,cAAchpN,EAAE8oN,eAAe,CAACxzJ,gBAAgB7hC,EAAE6hC,gBAAgBC,YAAY9hC,EAAE8hC,YAAY0zJ,YAAYx1L,EAAEw1L,YAAYvoB,OAAOjtK,EAAEitK,QAAQjtK,EAAE6hC,gBAAgBg9J,GAAG/6K,EAAE2xK,qBAAqB7hN,EAAEkwC,EAAE+d,kBAAkB7hC,EAAE8hC,YAAY+8J,GAAG/6K,EAAE4xK,iBAAiB9hN,EAAEkwC,EAAEge,cAAc9hC,EAAEw1L,YAAYqJ,GAAG/6K,EAAE6xK,iBAAiB7xK,EAAE0xK,aAAax1L,EAAEitK,OAAO4xB,GAAG/6K,EAAEgzK,YAAYhzK,EAAEmpJ,WAAWkzB,GAAGnQ,EAAEj8L,QAAQxjB,QAAQu+M,EAAEP,KAAK,YAAY,CAAC8N,MAAM,CAAC5vN,KAAK,eAAe2zN,WAAW,CAACthN,SAAQ,GAAI27M,UAAU,CAAC4F,UAAS,GAAIC,YAAY,CAACxhN,SAAQ,GAAImgN,MAAM,CAACsB,aAAY,IAAK7wL,UAAU,CAAC8tL,eAAc,EAAGC,cAAa,GAAInH,YAAY,GAAGhsM,KAAKu7L,GAAG6X,eAAe,SAASnxN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE4uB,SAAS9yB,cAAc,MAAMiyH,EAAEtpI,EAAEsP,KAAKq+B,EAAE27F,EAAE69E,SAAS/iM,EAAEklH,EAAEgvE,OAAO,GAAG/8L,EAAElN,aAAa,QAAQrO,EAAEwlB,GAAG,WAAWmoB,EAAEhqC,OAAO,IAAI8vB,EAAE,EAAE8jB,EAAE5J,EAAE,GAAGr+B,KAAK3L,OAAO8vB,EAAE8jB,IAAI9jB,GAAGpsB,EAAEkU,EAAEjE,YAAY6yB,SAAS9yB,cAAc,QAAQC,YAAY6yB,SAAS9yB,cAAc,SAAStM,MAAMuqD,gBAAgB3nB,EAAE,GAAG2nB,gBAAgB7hC,GAAGrP,EAAEqP,IAAIpsB,EAAEiQ,YAAY6yB,SAASmuF,eAAel0G,EAAEqP,KAAK,OAAOlY,EAAE61M,WAAWC,OAAO,CAAC/Y,OAAO,CAACgZ,eAAe,SAAStxN,GAAG,IAAIyzB,EAAEzzB,EAAEsP,KAAK,OAAOmkB,EAAE6kL,OAAO30M,QAAQ8vB,EAAE0zL,SAASxjN,OAAO8vB,EAAE6kL,OAAOrvM,IAAK,SAASsuC,EAAElwC,GAAG,IAAIkU,EAAEvb,EAAEonN,eAAe,GAAG99E,EAAE/tH,EAAEg2M,WAAWpmG,SAAS9jH,GAAG,MAAM,CAAC2hF,KAAKzxC,EAAEwzK,UAAUzhF,EAAEh0E,gBAAgB01J,YAAY1hF,EAAE/zE,YAAY01J,UAAU3hF,EAAE2/E,YAAYjyG,OAAOv8D,MAAMhnB,EAAE0zL,SAAS,GAAG73M,KAAKjI,KAAKkU,EAAEjM,KAAKjI,GAAG2vG,OAAO7tG,MAAM9B,KAAM,KAAKouC,QAAQ,SAASz1C,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE71G,EAAEtqB,MAAMwkC,EAAEnuC,KAAKwlN,MAAM,IAAIztK,EAAE,EAAElwC,GAAGsmC,EAAEr+B,KAAK63M,UAAU,IAAIxjN,OAAO4zC,EAAElwC,IAAIkwC,GAAGh8B,EAAEoyB,EAAEy5K,eAAe7vK,IAAIjoC,KAAKg6H,GAAGtyB,QAAQz7F,EAAEjM,KAAKg6H,GAAGtyB,OAAOrpE,EAAEqsC,WAAWw2I,SAAS,CAACz6L,UAAU,CAACqgC,MAAM,WAAW,MAAM,IAAIvhC,MAAM,SAAS70B,EAAEyzB,GAAG,OAAOA,EAAE6kL,OAAOt4M,EAAEmJ,OAAO,KAAKnJ,EAAE0wN,YAAY,IAAIuD,GAAGpK,GAAGtM,OAAO,CAAC+I,gBAAgBkH,GAAGI,IAAInH,WAAWhD,EAAEvvF,KAAKsyF,oBAAoB,CAAC,kBAAkB,cAAc,cAAc,cAAc,uBAAuB,mBAAmB,oBAAoBe,iBAAiB,WAAW,OAAO/nN,KAAKwlN,MAAM8K,MAAMtqM,IAAI8hM,iBAAiB,WAAW,OAAO9nN,KAAKwlN,MAAM8K,MAAMtqM,IAAIw0D,OAAO,SAASh6E,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE/b,KAAK8pI,EAAE/tH,EAAEurM,aAAan5K,EAAEpyB,EAAEorM,UAAUviM,EAAE7I,EAAEypM,MAAMx9L,QAAQuiM,YAAY,EAAE3+E,EAAE7vH,EAAE24M,QAAQ,GAAGp0C,EAAEvkK,EAAE44M,QAAQ,GAAG38M,EAAEm2B,EAAEr+B,KAAK,IAAIiM,EAAE64M,gBAAgBzmL,EAAEj3B,MAAM6E,EAAE84M,uBAAuB5gM,EAAE,EAAE8jB,EAAE+xF,EAAEh6H,KAAK3L,OAAO8vB,EAAE8jB,EAAE9jB,IAAI23G,EAAE33G,GAAGrP,EAAE/c,EAAEkU,EAAE+4M,cAAc7gM,GAAGqsJ,EAAErsJ,GAAGpsB,EAAE+c,GAAG/c,EAAE,IAAIosB,EAAE,EAAE8jB,EAAE//B,EAAE7T,OAAO8vB,EAAE8jB,IAAI9jB,EAAEjc,EAAEic,GAAGkhK,SAASp5K,EAAEmtM,2BAA2BlxM,EAAEic,GAAGA,GAAGlY,EAAE2sM,cAAc1wM,EAAEic,GAAGA,EAAEzzB,IAAIo0N,cAAc,WAAW,IAAIp0N,EAAER,KAAKi0B,EAAEzzB,EAAEglN,MAAMztK,EAAE9jB,EAAE48L,UAAUhpN,EAAEosB,EAAEjM,QAAQjM,EAAEwC,KAAKG,IAAIq5B,EAAE7rC,MAAM6rC,EAAE9rC,KAAK8rC,EAAE/rC,OAAO+rC,EAAEhsC,KAAKkoB,EAAEy2L,YAAYnsM,KAAKukC,IAAI/mC,EAAE,EAAE,GAAGkY,EAAE02L,YAAYpsM,KAAKukC,IAAIj7C,EAAEmqN,iBAAiB/9L,EAAEy2L,YAAY,IAAI7iN,EAAEmqN,iBAAiB,EAAE,GAAG/9L,EAAEq+L,cAAcr+L,EAAEy2L,YAAYz2L,EAAE02L,aAAa12L,EAAE8gM,yBAAyBv0N,EAAEkqN,YAAYz2L,EAAEy2L,YAAYz2L,EAAEq+L,aAAa9xN,EAAEmJ,MAAMnJ,EAAEmqN,YAAYnqN,EAAEkqN,YAAYz2L,EAAEq+L,cAAc5J,cAAc,SAASloN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK+b,EAAElU,EAAE29M,MAAM17E,EAAEjiI,EAAEy/M,aAAan5K,EAAEpyB,EAAEiM,QAAQpD,EAAEupB,EAAExK,UAAUioG,EAAE7vH,EAAEu0M,MAAMhwC,EAAEvkK,EAAEjM,KAAKgpM,OAAO9gM,EAAE4zH,EAAEopF,QAAQjwM,EAAE6mH,EAAEqpF,QAAQrlL,EAAEzB,EAAEo8K,WAAWtxL,EAAEz4B,EAAEg3G,OAAO,EAAEo0B,EAAEspF,8BAA8BprF,EAAEh6H,KAAKmkB,IAAI82G,EAAEljI,EAAE6sN,QAAQzgM,GAAGs1G,EAAEwB,GAAGvqI,EAAEg3G,OAAO,EAAE3vG,EAAE8sN,QAAQ1gM,IAAInR,EAAE8B,EAAE8sM,aAAa,EAAE9lF,EAAEspF,8BAA8BprF,EAAEh6H,KAAKmkB,IAAIh0B,EAAEO,EAAE20L,UAAU,GAAG8uB,EAAElG,OAAOv9M,EAAE,CAAC6nN,cAAcxgN,EAAE8B,MAAM4+M,OAAOt0L,EAAEw/L,OAAO7nF,EAAEhc,OAAO,CAAC95D,gBAAgB71D,EAAE61D,gBAAgBC,YAAY91D,EAAE81D,YAAY0zJ,YAAYxpN,EAAEwpN,YAAYmB,YAAY3qN,EAAE2qN,YAAYrvL,EAAEvjB,EAAEsN,EAAEP,EAAE4lM,YAAY,EAAED,YAAY3yK,EAAEj1B,EAAEmW,EAAEsxL,WAAWxyK,GAAGnzB,EAAE6sM,cAAc7hL,EAAEm7F,EAAEy/E,SAASzyK,GAAGnzB,EAAE6sM,cAAc7hL,EAAE25F,EAAEl0G,MAAM4uL,EAAEzG,sBAAsBl9B,EAAErsJ,EAAEqsJ,EAAErsJ,OAAOzzB,EAAE2kN,SAAS0P,qBAAqB,WAAW,IAAIr0N,EAAER,KAAKsnN,aAAarzL,EAAEj0B,KAAKmnN,UAAUpvK,EAAE,EAAE,OAAOksK,EAAExG,KAAKxpL,EAAEnkB,KAAM,SAASmkB,EAAEpsB,GAAGozC,MAAMz6C,EAAEsP,KAAKjI,KAAKosB,EAAEujF,QAAQz/D,MAAOA,GAAGwxK,cAAc,SAAS/oN,GAAG,IAAIyzB,EAAEzzB,EAAEovH,OAAO73E,EAAEv3C,EAAE20L,SAASttL,EAAEo8M,EAAEuF,cAAcztM,EAAEkoM,EAAE1G,eAAe/8M,EAAE8oN,eAAe,CAACxzJ,gBAAgB7hC,EAAE6hC,gBAAgBC,YAAY9hC,EAAE8hC,YAAY0zJ,YAAYx1L,EAAEw1L,aAAax1L,EAAE6hC,gBAAgB/5C,EAAEg8B,EAAE2xK,qBAAqB7hN,EAAEkwC,EAAE+d,kBAAkB7hC,EAAE8hC,YAAYh6C,EAAEg8B,EAAE4xK,iBAAiB9hN,EAAEkwC,EAAEge,cAAc9hC,EAAEw1L,YAAY1tM,EAAEg8B,EAAE6xK,iBAAiB7xK,EAAE0xK,cAAcqL,cAAc,SAASt0N,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE/3C,KAAKmnN,UAAUjwM,MAAMrP,EAAEosB,EAAEqzL,aAAavrM,EAAEkY,EAAEkzL,UAAU,OAAGlsK,MAAMpzC,EAAEiI,KAAKtP,KAAKub,EAAEjM,KAAKtP,GAAGg3G,OAAc,EAA0E48G,GAAG,CAACngM,EAAEuxL,MAAMx9L,QAAQhd,SAASi2M,IAAIiK,MAAM,EAAE3sM,KAAKu7L,GAAG/hK,GAAnH,CAACytK,MAAMvxL,EAAEuxL,MAAM31M,UAAUrP,EAAEgoN,QAAQ3gN,EAAEuhN,aAAan1L,EAAEtqB,OAAoEnJ,MAAMuiN,EAAEP,KAAK,MAAMyB,EAAErgE,MAAMm/D,EAAEoS,WAAWpS,EAAEP,KAAK,MAAM,CAACwP,iBAAiB,IAAI,IAAIoD,GAAGnD,GAAGoD,GAAGpR,EAAE1G,eAAewF,EAAEP,KAAK,QAAQ,CAAC6J,UAAS,EAAGiE,MAAM,CAAC5vN,KAAK,gBAAgBsK,SAAS,CAAC8gN,KAAK,CAAC9yG,KAAK,QAAQ+oG,QAAQ,MAAM,IAAIuT,GAAGjL,GAAGtM,OAAO,CAAC8I,mBAAmBmH,GAAGK,KAAKvH,gBAAgBkH,GAAGM,MAAMrH,WAAWhD,EAAEvvF,KAAKqyF,uBAAuB,CAAC,kBAAkB,cAAc,cAAc,iBAAiB,aAAa,mBAAmB,kBAAkB,QAAQC,oBAAoB,CAAClxJ,gBAAgB,uBAAuBC,YAAY,mBAAmB0zJ,YAAY,mBAAmBqD,UAAU,iBAAiBpD,qBAAqB,4BAA4BC,iBAAiB,wBAAwBC,iBAAiB,wBAAwBmB,YAAY,mBAAmBgC,WAAW,aAAa7rB,OAAO,cAAcisB,SAAS,iBAAiBpF,iBAAiB,WAAW,OAAO/nN,KAAKwlN,MAAM8K,MAAMtqM,IAAI8hM,iBAAiB,WAAW,OAAO9nN,KAAKwlN,MAAM8K,MAAMtqM,IAAIw0D,OAAO,SAASh6E,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE7H,KAAK+b,EAAElU,EAAEs/M,UAAUr9E,EAAE/tH,EAAEysM,QAAQr6K,EAAEpyB,EAAEjM,MAAM,GAAG8U,EAAE/c,EAAE29M,MAAM8K,MAAM1kF,EAAE/jI,EAAEi6B,QAAQ,SAAI,IAAS8pG,EAAEm2E,cAAS,IAASn2E,EAAE4nF,cAAc5nF,EAAE4nF,YAAY5nF,EAAEm2E,SAASj4E,EAAE2pF,OAAO7uM,EAAEklH,EAAEu+E,cAAcxgN,EAAE8B,MAAMmgI,EAAEggE,UAAU37J,EAAE27F,EAAEwiF,OAAM,EAAGxiF,EAAEla,OAAO/nH,EAAEohN,8BAA8Bn/E,GAAGA,EAAEq7E,QAAQlxL,EAAE,EAAE8jB,EAAE5J,EAAEhqC,OAAO8vB,EAAE8jB,IAAI9jB,EAAEpsB,EAAE6gN,cAAcv6K,EAAEla,GAAGA,EAAEzzB,GAAG,IAAIqH,EAAE6rN,4BAA4Bz/L,EAAE,EAAE8jB,EAAE5J,EAAEhqC,OAAO8vB,EAAE8jB,IAAI9jB,EAAEka,EAAEla,GAAGkxL,SAASuD,cAAc,SAASloN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK+b,EAAEvb,EAAE2oN,QAAQ,GAAGr/E,EAAEjiI,EAAEy/M,aAAan5K,EAAEtmC,EAAE29M,MAAM8K,MAAM1rM,EAAEupB,EAAEonL,yBAAyBthM,EAAE61G,EAAEh6H,KAAKmkB,IAAI23G,EAAE/jI,EAAEqhN,2BAA2B1oN,EAAEyzB,GAAGqsJ,EAAEz4K,EAAEs/M,UAAUqB,QAAQ54F,OAAO53G,EAAE+/B,EAAE5J,EAAE6mL,QAAQpwM,EAAE2W,EAAExW,EAAEgzB,EAAE5J,EAAE8mL,QAAQrwM,EAAEU,EAAE9kB,EAAEizN,OAAOtlL,EAAE3tC,EAAE20L,SAASvpD,EAAEprI,EAAE6nN,cAAcxgN,EAAE8B,MAAMnJ,EAAE+nN,OAAOt0L,EAAEzzB,EAAEovH,OAAO,CAACr0F,EAAEvjB,EAAEsN,EAAEP,EAAEiK,KAAKjT,EAAEiT,MAAMisB,MAAMjjC,IAAIijC,MAAMl2B,GAAGm8K,OAAOt1D,EAAEs1D,OAAO6rB,WAAWnhF,EAAEmhF,WAAWI,SAASvhF,EAAEuhF,SAASr3J,gBAAgB81E,EAAE91E,gBAAgBC,YAAY61E,EAAE71E,YAAY0zJ,YAAY79E,EAAE69E,YAAY1H,QAAQsT,GAAGt5M,EAAEgmM,QAAQzhC,EAAEA,EAAEyhC,QAAQ,GAAG+K,UAAUlhF,EAAEkhF,YAAY7D,8BAA8B,WAAW,IAAIzoN,EAAER,KAAKi0B,EAAEzzB,EAAEshC,QAAQiW,EAAEv3C,EAAEglN,MAAMx9L,QAAQngB,EAAEwiN,GAAG33L,UAAUu2L,8BAA8BtxK,MAAMn3C,EAAE8Y,WAAW,OAAOzR,EAAEwkN,SAASgJ,GAAGphM,EAAEo4L,SAASt0K,EAAEs0K,UAAUxkN,EAAEk6M,QAAQsT,GAAGphM,EAAEu/L,YAAYz7K,EAAE/sC,SAAS8gN,KAAK/J,SAASl6M,GAAG6rN,0BAA0B,WAAW,IAAIlzN,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE/b,KAAKmnN,UAAUr9E,EAAE9pI,KAAKwlN,MAAMqL,UAAU1iL,EAAEpyB,EAAEjM,MAAM,GAAG,SAAS8U,EAAEpkB,EAAEyzB,EAAE8jB,GAAG,OAAOx5B,KAAKukC,IAAIvkC,KAAKG,IAAIle,EAAEu3C,GAAG9jB,GAAG,IAAIlY,EAAEysM,QAAQ54F,OAAOy8F,WAAWl+K,EAAEA,EAAEh5B,OAAQ,SAAS3U,GAAG,OAAOA,EAAEovH,OAAO5gG,QAASxuB,EAAE,EAAEyzB,EAAEka,EAAEhqC,OAAO3D,EAAEyzB,IAAIzzB,EAAEu3C,EAAE5J,EAAE3tC,GAAGovH,OAAO/nH,EAAEo8M,EAAEgQ,YAAYhQ,EAAEsI,aAAap+K,EAAE3tC,GAAE,GAAIovH,OAAO73E,EAAEksK,EAAEiQ,SAAS/lL,EAAE3tC,GAAE,GAAIovH,OAAO73E,EAAEgqK,SAAShqK,EAAEkqK,sBAAsBr9L,EAAE/c,EAAEssN,SAAS54L,EAAEuuG,EAAE79H,KAAK69H,EAAE59H,OAAO6rC,EAAEoqK,sBAAsBv9L,EAAE/c,EAAEssN,SAAS7uM,EAAEwkH,EAAE/9H,IAAI+9H,EAAE99H,QAAQ+rC,EAAEmqK,kBAAkBt9L,EAAE/c,EAAEhE,KAAK03B,EAAEuuG,EAAE79H,KAAK69H,EAAE59H,OAAO6rC,EAAEqqK,kBAAkBx9L,EAAE/c,EAAEhE,KAAKyhB,EAAEwkH,EAAE/9H,IAAI+9H,EAAE99H,SAASu9M,cAAc,SAAS/oN,GAAG,IAAIyzB,EAAEzzB,EAAEovH,OAAO73E,EAAEv3C,EAAE20L,SAASttL,EAAEo8M,EAAEuF,cAAchpN,EAAE8oN,eAAe,CAACxzJ,gBAAgB7hC,EAAE6hC,gBAAgBC,YAAY9hC,EAAE8hC,YAAY0zJ,YAAYx1L,EAAEw1L,YAAYvoB,OAAOjtK,EAAEitK,QAAQjtK,EAAE6hC,gBAAgBu/J,GAAGt9K,EAAE2xK,qBAAqB7hN,EAAEkwC,EAAE+d,kBAAkB7hC,EAAE8hC,YAAYs/J,GAAGt9K,EAAE4xK,iBAAiB9hN,EAAEkwC,EAAEge,cAAc9hC,EAAEw1L,YAAY4L,GAAGt9K,EAAE6xK,iBAAiB7xK,EAAE0xK,aAAax1L,EAAEitK,OAAOm0B,GAAGt9K,EAAEgzK,YAAYhzK,EAAEmpJ,WAAW6hB,EAAEP,KAAK,UAAU,CAACpmF,MAAM,CAACxpG,KAAK,UAAUy0L,OAAO,CAACG,MAAM,CAAC,CAACxhM,GAAG,WAAWtlB,KAAK,SAASsJ,SAAS,WAAW09M,MAAM,CAAC,CAAC1hM,GAAG,WAAWtlB,KAAK,SAASsJ,SAAS,UAAUgnN,SAAS,CAACz6L,UAAU,CAACqgC,MAAM,WAAW,MAAM,IAAIvhC,MAAM,SAAS70B,GAAG,MAAM,IAAIA,EAAEywN,OAAO,KAAKzwN,EAAE0wN,OAAO,SAASnO,EAAEP,KAAK,SAAS,CAACmF,SAAS,CAAC6N,QAAQ,CAACjC,UAAS,MAAO,IAAIkC,GAAG,CAAC7G,IAAIG,GAAG2G,OAAOvE,GAAGgE,SAASlD,GAAGW,cAAcC,GAAG/G,KAAKuH,GAAGsC,UAAUlB,GAAGmB,IAAIR,GAAGS,MAAMP,GAAGE,QAAQnC,IAAI,SAASyC,GAAGt1N,EAAEyzB,GAAG,OAAOzzB,EAAEu1N,OAAO,CAACx6L,EAAE/6B,EAAE+6B,EAAEjW,EAAE9kB,EAAE8kB,GAAG2+L,EAAE+R,oBAAoBx1N,EAAEyzB,GAAG,SAASgiM,GAAGz1N,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAEprI,EAAEszN,gCAAgC,IAAIjsN,EAAE,EAAEiiI,EAAE8B,EAAEznI,OAAO0D,EAAEiiI,IAAIjiI,EAAE,IAAIkU,EAAE,EAAEoyB,GAAG4J,EAAE6zF,EAAE/jI,GAAGiI,MAAM3L,OAAO4X,EAAEoyB,IAAIpyB,GAAG6I,EAAEmzB,EAAEh8B,IAAIqpM,MAAMp2L,MAAMiF,EAAErP,GAAG,SAASsxM,GAAG11N,EAAEyzB,GAAG,IAAI8jB,EAAE,GAAG,OAAOk+K,GAAGz1N,EAAG,SAASA,GAAGA,EAAEwqN,QAAQ/2L,EAAEsH,EAAEtH,EAAE3O,IAAIyyB,EAAEn0C,KAAKpD,KAAMu3C,EAAE,SAASo+K,GAAG31N,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAEpN,OAAOwtJ,kBAAkBryB,EAAE,GAAG,OAAOmsF,GAAGz1N,EAAG,SAASA,GAAG,IAAIu3C,GAAGv3C,EAAEwqN,QAAQ/2L,EAAEsH,EAAEtH,EAAE3O,GAAG,CAAC,IAAI6oB,EAAE3tC,EAAE2qN,iBAAiBvmM,EAAE/c,EAAEosB,EAAEka,GAAGvpB,EAAE7I,GAAG+tH,EAAE,CAACtpI,GAAGub,EAAE6I,GAAGA,IAAI7I,GAAG+tH,EAAElmI,KAAKpD,MAAOspI,EAAE,SAASssF,GAAG51N,GAAG,IAAIyzB,GAAG,IAAIzzB,EAAEyI,QAAQ,KAAK8uC,GAAG,IAAIv3C,EAAEyI,QAAQ,KAAK,OAAO,SAASzI,EAAEqH,GAAG,IAAIkU,EAAEkY,EAAE1V,KAAKqiC,IAAIpgD,EAAE+6B,EAAE1zB,EAAE0zB,GAAG,EAAEuuG,EAAE/xF,EAAEx5B,KAAKqiC,IAAIpgD,EAAE8kB,EAAEzd,EAAEyd,GAAG,EAAE,OAAO/G,KAAKykL,KAAKzkL,KAAKq7L,IAAI79L,EAAE,GAAGwC,KAAKq7L,IAAI9vE,EAAE,KAAK,SAAS23C,GAAGjhL,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEiuN,GAAG7hM,EAAEzzB,GAAGu3C,EAAE46K,KAAK56K,EAAE46K,MAAM,IAAI,IAAI52M,EAAEq6M,GAAGr+K,EAAE46K,MAAM7oF,EAAE/xF,EAAEs+K,UAAUH,GAAG11N,EAAEqH,GAAGsuN,GAAG31N,EAAEqH,GAAE,EAAGkU,GAAGoyB,EAAE,GAAG,OAAO27F,EAAE3lI,QAAQ3D,EAAEszN,gCAAgCzgN,QAAS,SAAS7S,GAAG,IAAIyzB,EAAEzzB,EAAEsP,KAAKg6H,EAAE,GAAGy+E,QAAQt0L,IAAIA,EAAEmxL,MAAMp2L,MAAMmf,EAAEvqC,KAAKqwB,KAAMka,GAAG,GAAG,IAAImoL,GAAG,CAACC,MAAM,CAACC,OAAO,SAASh2N,EAAEyzB,GAAG,IAAI8jB,EAAE+9K,GAAG7hM,EAAEzzB,GAAGqH,EAAE,GAAG,OAAOouN,GAAGz1N,EAAG,SAASA,GAAG,GAAGA,EAAEwqN,QAAQjzK,EAAExc,EAAEwc,EAAEzyB,GAAG,OAAOzd,EAAEjE,KAAKpD,GAAGqH,IAAKA,EAAE2B,MAAM,EAAE,IAAI6rB,MAAMosJ,GAAG93K,MAAM83K,GAAG+mC,QAAQ,SAAShoN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEiuN,GAAG7hM,EAAEzzB,GAAGu3C,EAAE46K,KAAK56K,EAAE46K,MAAM,KAAK,IAAI52M,EAAEq6M,GAAGr+K,EAAE46K,MAAM7oF,EAAE/xF,EAAEs+K,UAAUH,GAAG11N,EAAEqH,GAAGsuN,GAAG31N,EAAEqH,GAAE,EAAGkU,GAAG,OAAO+tH,EAAE3lI,OAAO,IAAI2lI,EAAEtpI,EAAEonN,eAAe99E,EAAE,GAAGu+E,eAAev4M,MAAMg6H,GAAG,SAAS,SAAStpI,EAAEyzB,GAAG,OAAOwtJ,GAAGjhL,EAAEyzB,EAAE,CAACoiM,WAAU,KAAMvoJ,MAAM,SAASttE,EAAEyzB,GAAG,OAAOiiM,GAAG11N,EAAEs1N,GAAG7hM,EAAEzzB,KAAKi2N,QAAQ,SAASj2N,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEiuN,GAAG7hM,EAAEzzB,GAAGu3C,EAAE46K,KAAK56K,EAAE46K,MAAM,KAAK,IAAI52M,EAAEq6M,GAAGr+K,EAAE46K,MAAM,OAAOwD,GAAG31N,EAAEqH,EAAEkwC,EAAEs+K,UAAUt6M,IAAIwf,EAAE,SAAS/6B,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEiuN,GAAG7hM,EAAEzzB,GAAGub,EAAE,GAAG+tH,GAAE,EAAG,OAAOmsF,GAAGz1N,EAAG,SAASA,GAAGA,EAAEysN,SAASplN,EAAE0zB,IAAIxf,EAAEnY,KAAKpD,GAAGA,EAAEwqN,QAAQnjN,EAAE0zB,EAAE1zB,EAAEyd,KAAKwkH,GAAE,KAAO/xF,EAAEs+K,YAAYvsF,IAAI/tH,EAAE,IAAIA,GAAGuJ,EAAE,SAAS9kB,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEiuN,GAAG7hM,EAAEzzB,GAAGub,EAAE,GAAG+tH,GAAE,EAAG,OAAOmsF,GAAGz1N,EAAG,SAASA,GAAGA,EAAE0sN,SAASrlN,EAAEyd,IAAIvJ,EAAEnY,KAAKpD,GAAGA,EAAEwqN,QAAQnjN,EAAE0zB,EAAE1zB,EAAEyd,KAAKwkH,GAAE,KAAO/xF,EAAEs+K,YAAYvsF,IAAI/tH,EAAE,IAAIA,KAAK26M,GAAGzS,EAAElG,OAAO,SAAS4Y,GAAGn2N,EAAEyzB,GAAG,OAAOgwL,EAAE2S,MAAMp2N,EAAG,SAASA,GAAG,OAAOA,EAAE08K,MAAMjpJ,IAAK,SAAS4iM,GAAGr2N,EAAEyzB,GAAG,OAAOzzB,EAAEqb,KAAM,SAASrb,EAAEu3C,GAAG,IAAIlwC,EAAEosB,EAAE8jB,EAAEv3C,EAAEub,EAAEkY,EAAEzzB,EAAEu3C,EAAE,OAAOlwC,EAAE67M,SAAS3nM,EAAE2nM,OAAO77M,EAAE8B,MAAMoS,EAAEpS,MAAM9B,EAAE67M,OAAO3nM,EAAE2nM,SAAU,SAASoT,GAAGt2N,EAAEyzB,EAAE8jB,EAAElwC,GAAG,OAAO0W,KAAKukC,IAAItiD,EAAEu3C,GAAG9jB,EAAE8jB,IAAIx5B,KAAKukC,IAAItiD,EAAEqH,GAAGosB,EAAEpsB,IAAI,SAASkvN,GAAGv2N,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE/xF,EAAEi/K,IAAI7oL,EAAE3tC,EAAEy2N,WAAW,GAAGl/K,EAAE5X,OAAO3/B,EAAEu3C,EAAEmlI,MAAMnlI,EAAE5X,MAAM4X,EAAE5X,KAAK4X,EAAE41K,WAAW7jF,EAAEt/H,OAAOs/H,EAAEpgI,MAAMlJ,EAAEu3C,EAAEmlI,MAAMnlI,EAAE5X,KAAK2pG,EAAEx2D,WAAW,CAAC,IAAI1uD,EAAEklH,EAAEx2D,aAAanlC,EAAEpiC,IAAIwS,KAAKukC,IAAI3U,EAAEpiC,IAAI6Y,EAAE7Y,KAAKoiC,EAAEliC,KAAKsS,KAAKukC,IAAI3U,EAAEliC,KAAK2Y,EAAE3Y,MAAMkiC,EAAEniC,OAAOuS,KAAKukC,IAAI3U,EAAEniC,OAAO4Y,EAAE5Y,QAAQmiC,EAAEjiC,MAAMqS,KAAKukC,IAAI3U,EAAEjiC,MAAM0Y,EAAE1Y,OAAO,GAAGrE,EAAEosB,EAAEijM,WAAWJ,GAAG3oL,EAAE3tC,EAAE,OAAO,SAASub,EAAEkY,EAAEkjM,YAAYL,GAAG3oL,EAAE3tC,EAAE,MAAM,UAAUqH,IAAIrH,EAAE0kB,GAAGnJ,IAAIvb,EAAEukB,EAAE,CAACvkB,EAAE0kB,EAAErd,EAAErH,EAAEukB,EAAEhJ,EAAE,IAAI6vH,EAAE7zF,EAAE41K,WAAW,CAAC9lN,EAAErH,EAAE0kB,GAAG,CAACnJ,EAAEvb,EAAEukB,GAAG,QAAQ6mH,EAAE,KAAKA,EAAE,IAAI3wF,MAAM2wF,EAAE,KAAK3wF,MAAM2wF,EAAE,MAAM,SAASwrF,GAAG52N,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAEgjM,WAA2H,OAAhH,SAAWz2N,GAAG,IAAIqH,EAAE,CAACoE,KAAK,EAAEF,IAAI,EAAEG,MAAM,EAAEF,OAAO,GAAG,OAAOxL,EAAE6S,QAAS,SAAS7S,GAAGqH,EAAErH,GAAG+d,KAAKukC,IAAI7uB,EAAEzzB,GAAGu3C,EAAEv3C,MAAOqH,EAASA,CAAErH,EAAE,CAAC,OAAO,SAAS,CAAC,MAAM,WAAW,SAAS62N,GAAG72N,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAE,GAAG,IAAIz4K,EAAE,EAAEkU,EAAEvb,EAAE2D,OAAO0D,EAAEkU,IAAIlU,GAAGsmC,GAAG27F,EAAEtpI,EAAEqH,IAAImvN,KAAKx8I,OAAOsvD,EAAEpgI,OAAOuqB,EAAE/O,EAAE4kH,EAAEt/H,QAAQypB,EAAElP,EAAEqyM,GAAGttF,EAAE6jF,WAAW15L,IAAI8iM,GAAG9iM,EAAE8jB,EAAE+xF,KAAK8B,GAAE,EAAG00C,EAAEn8K,SAASygB,GAAE,IAAKupB,EAAEmpL,WAAWh3C,EAAE18K,KAAKkmI,GAAG,OAAOllH,GAAGyyM,GAAG/2C,EAAErsJ,EAAE8jB,IAAI6zF,EAAE,SAAS2rF,GAAG/2N,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEmzB,EAAEy8B,QAAQo3D,EAAE33G,EAAEsH,EAAE+kJ,EAAErsJ,EAAE3O,EAAE,IAAIzd,EAAE,EAAEkU,EAAEvb,EAAE2D,OAAO0D,EAAEkU,IAAIlU,EAAEsmC,GAAG27F,EAAEtpI,EAAEqH,IAAImvN,IAAIltF,EAAE6jF,YAAYx/K,EAAEliC,KAAKkiC,EAAEmpL,UAAU1yM,EAAE3Y,KAAKgoB,EAAEhoB,KAAKkiC,EAAEjiC,MAAMiiC,EAAEmpL,UAAUv/K,EAAEm/K,WAAWtyM,EAAE1Y,MAAM+nB,EAAEhoB,KAAKgoB,EAAE/O,EAAEipB,EAAEpiC,IAAIu0K,EAAEnyI,EAAEniC,OAAOs0K,EAAEnyI,EAAE3jC,OAAO2jC,EAAEzkC,MAAMykC,EAAEjiC,MAAMiiC,EAAEliC,KAAKq0K,EAAEnyI,EAAEniC,SAASmiC,EAAEliC,KAAK2/H,EAAEz9F,EAAEjiC,MAAM0/H,EAAEz9F,EAAEzkC,MAAMykC,EAAEpiC,IAAIkoB,EAAEloB,IAAIoiC,EAAEniC,OAAOioB,EAAEloB,IAAIkoB,EAAElP,EAAEopB,EAAE3jC,OAAO2jC,EAAEniC,OAAOmiC,EAAEpiC,IAAI6/H,EAAEz9F,EAAEjiC,OAAO+nB,EAAEsH,EAAEqwG,EAAE33G,EAAE3O,EAAEg7J,EAAEyiC,EAAEP,KAAK,SAAS,CAACgV,OAAO,CAAChjJ,QAAQ,CAACzoE,IAAI,EAAEG,MAAM,EAAEF,OAAO,EAAEC,KAAK,MAAM,IAAIwrN,GAAGC,GAAG,CAAC3wM,SAAS,GAAG4wM,OAAO,SAASn3N,EAAEyzB,GAAGzzB,EAAEo3N,QAAQp3N,EAAEo3N,MAAM,IAAI3jM,EAAEqjM,UAAUrjM,EAAEqjM,YAAW,EAAGrjM,EAAEjqB,SAASiqB,EAAEjqB,UAAU,MAAMiqB,EAAEyvL,OAAOzvL,EAAEyvL,QAAQ,EAAEzvL,EAAE4jM,QAAQ5jM,EAAE4jM,SAAS,WAAW,MAAM,CAAC,CAACtV,EAAE,EAAEyG,KAAK,WAAW/0L,EAAE+0L,KAAKrxK,MAAM1jB,EAAE3a,eAAe9Y,EAAEo3N,MAAMh0N,KAAKqwB,IAAI6jM,UAAU,SAASt3N,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAEo3N,MAAMp3N,EAAEo3N,MAAM3uN,QAAQgrB,IAAI,GAAG,IAAI8jB,GAAGv3C,EAAEo3N,MAAMrvL,OAAOwP,EAAE,IAAIggL,UAAU,SAASv3N,EAAEyzB,EAAE8jB,GAAG,IAAI,IAAIlwC,EAAEkU,EAAE,CAAC,YAAY,WAAW,UAAU+tH,EAAE/tH,EAAE5X,OAAOgqC,EAAE,EAAEA,EAAE27F,IAAI37F,EAAS4J,EAAErK,eAAT7lC,EAAEkU,EAAEoyB,MAAyBla,EAAEpsB,GAAGkwC,EAAElwC,KAAK2yE,OAAO,SAASh6E,EAAEyzB,EAAE8jB,GAAG,GAAGv3C,EAAE,CAAC,IAA2Bub,EAAEkoM,EAAEj8L,QAAQm7L,WAAjC3iN,EAAEwnB,QAAQwvM,QAAQ,IAA2BhjJ,SAASs1D,EAAE71G,EAAElY,EAAErS,MAAMykC,EAAE4J,EAAEh8B,EAAEvR,OAAOoa,EAAE,SAASpkB,GAAG,IAAIyzB,EAAE,SAASzzB,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE,GAAG,IAAIkY,EAAE,EAAE8jB,GAAGv3C,GAAG,IAAI2D,OAAO8vB,EAAE8jB,IAAI9jB,EAASlY,EAAEnY,KAAK,CAAC+F,MAAMsqB,EAAE+iM,IAAvBnvN,EAAErH,EAAEyzB,GAAyBipJ,IAAIr1K,EAAEmC,SAAS2jN,WAAW9lN,EAAEwuE,eAAeqtI,OAAO77M,EAAE67M,SAAS,OAAO3nM,EAA7J,CAAgKvb,GAAGu3C,EAAE8+K,GAAGF,GAAG1iM,EAAE,SAAQ,GAAIpsB,EAAEgvN,GAAGF,GAAG1iM,EAAE,UAAUlY,EAAE86M,GAAGF,GAAG1iM,EAAE,QAAO,GAAI61G,EAAE+sF,GAAGF,GAAG1iM,EAAE,WAAW,MAAM,CAAC+jM,WAAWjgL,EAAE/+B,OAAO+C,GAAGk8M,eAAepwN,EAAEmR,OAAO8wH,GAAG+mF,UAAU8F,GAAG1iM,EAAE,aAAaikM,SAASngL,EAAE/+B,OAAOnR,GAAG8lN,WAAW5xM,EAAE/C,OAAO8wH,IAAvY,CAA4YtpI,EAAEo3N,OAAOhsF,EAAEhnH,EAAEszM,SAAS53C,EAAE17J,EAAE+oM,WAAW31M,EAAEwE,OAAO67C,OAAO,CAAC6+J,WAAWjjM,EAAEkjM,YAAYp/K,EAAEy8B,QAAQz4D,EAAEu+E,eAAewvC,EAAEquF,aAAaruF,EAAE,EAAE8B,EAAEznI,OAAOi0N,cAAcjqL,EAAE,IAAIppB,EAAE2xM,GAAG,CAACO,WAAWP,GAAG,GAAG36M,GAAGmJ,EAAE4kH,EAAE/kH,EAAEopB,EAAE5S,EAAExf,EAAE9P,KAAKqZ,EAAEvJ,EAAEhQ,KAAKgQ,IAAI,SAASvb,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE,IAAIg8B,EAAE,EAAElwC,EAAErH,EAAE2D,OAAO4zC,EAAElwC,IAAIkwC,GAAGh8B,EAAEvb,EAAEu3C,IAAIruC,MAAMqS,EAAE4xM,WAAW5xM,EAAEi7M,IAAIM,WAAWrjM,EAAEqmE,eAAermE,EAAEkkM,aAAap8M,EAAEvR,OAAOuR,EAAE4xM,YAAY15L,EAAEmkM,cAAzJ,CAAwKxsF,EAAE5yH,OAAOsnK,GAAGtoK,GAAGq/M,GAAGzrF,EAAE7mH,EAAE/M,GAAGq/M,GAAG/2C,EAAEv7J,EAAE/M,IAAIq/M,GAAGzrF,EAAE7mH,EAAE/M,GAAG,SAASxX,GAAG,IAAIyzB,EAAEzzB,EAAEy2N,WAAW,SAASl/K,EAAEA,GAAG,IAAIlwC,EAAE0W,KAAKukC,IAAI7uB,EAAE8jB,GAAGv3C,EAAEu3C,GAAG,GAAG,OAAOv3C,EAAEu3C,IAAIlwC,EAAEA,EAAErH,EAAE8kB,GAAGyyB,EAAE,OAAOv3C,EAAE+6B,GAAGwc,EAAE,QAAQA,EAAE,SAASA,EAAE,UAApI,CAA+IhzB,GAAGwyM,GAAG3yM,EAAEozM,WAAWjzM,EAAE/M,GAAG+M,EAAEwW,GAAGxW,EAAEG,EAAEH,EAAEO,GAAGP,EAAEA,EAAEwyM,GAAG3yM,EAAEqzM,eAAelzM,EAAE/M,GAAGxX,EAAEqwN,UAAU,CAAC5kN,KAAK8Y,EAAE9Y,KAAKF,IAAIgZ,EAAEhZ,IAAIG,MAAM6Y,EAAE9Y,KAAK8Y,EAAEG,EAAElZ,OAAO+Y,EAAEhZ,IAAIgZ,EAAEA,GAAGk/L,EAAExG,KAAK74L,EAAEisM,UAAW,SAAS58L,GAAG,IAAI8jB,EAAE9jB,EAAE+iM,IAAIN,GAAG3+K,EAAEv3C,EAAEqwN,WAAW94K,EAAEyiC,OAAOz1D,EAAEG,EAAEH,EAAEA,QAASszM,IAAIZ,GAAGj7M,OAAO67C,OAAO,CAACixE,UAAU,KAAKimE,QAAQ,ghBAAghBkoB,GAAGloB,SAASkoB,GAAGa,GAAG,WAAWC,GAAG,uBAAuBC,GAAG,yBAAuDxiM,GAAG,CAAC,iBAAiB,wBAAwByiM,GAAG,CAACC,WAAW,YAAYC,UAAU,YAAYC,SAAS,UAAUC,aAAa,aAAaC,YAAY,YAAYC,YAAY,YAAYC,UAAU,UAAUC,aAAa,WAAWC,WAAW,YAAY,SAASC,GAAG34N,EAAEyzB,GAAG,IAAI8jB,EAAEksK,EAAEt4F,SAASnrH,EAAEyzB,GAAGpsB,EAAEkwC,GAAGA,EAAEzG,MAAM,qBAAqB,OAAOzpC,EAAE8G,OAAO9G,EAAE,SAAI,EAAO,IAAIuxN,KAAK,WAAW,IAAI54N,GAAE,EAAG,IAAI,IAAIyzB,EAAEzX,OAAOu3B,eAAe,GAAG,UAAU,CAAC7hC,IAAI,WAAW1R,GAAE,KAAM2qB,OAAOG,iBAAiB,IAAI,KAAK2I,GAAG,MAAMzzB,IAAI,OAAOA,EAA9I,IAAoJ,CAACgkJ,SAAQ,GAAI,SAAS60E,GAAG74N,EAAEyzB,EAAE8jB,GAAGv3C,EAAE8qB,iBAAiB2I,EAAE8jB,EAAEqhL,IAAI,SAASE,GAAG94N,EAAEyzB,EAAE8jB,GAAGv3C,EAAEmrB,oBAAoBsI,EAAE8jB,EAAEqhL,IAAI,SAASG,GAAG/4N,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,GAAG,MAAM,CAACrb,KAAKF,EAAEglN,MAAMvxL,EAAE8hM,OAAOh6M,GAAG,KAAKwf,OAAE,IAASwc,EAAEA,EAAE,KAAKzyB,OAAE,IAASzd,EAAEA,EAAE,MAAM,SAAS2xN,GAAGh5N,GAAG,IAAIyzB,EAAE0W,SAAS9yB,cAAc,OAAO,OAAOoc,EAAEpM,UAAUrnB,GAAG,GAAGyzB,EAA2tC,IAAIwlM,GAAG,CAACC,qBAAoB,EAAGC,SAAS,oBAAoBxuM,QAAQ,oBAAoBwf,SAASivL,cAAc,SAASp5N,GAAG,IAAIR,KAAK05N,oBAAoB,CAAC,IAAIzlM,EAAEzzB,EAAE20C,YAAY30C,EAAE20C,cAAcxK,UAAU,SAASnqC,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAE83N,MAAM93N,EAAE83N,IAAI,IAAI,IAAIvgL,EAAE8hL,eAAe,CAAC9hL,EAAE8hL,gBAAe,EAAG5lM,EAAE,mBAAmBA,EAAE,IAAIpsB,EAAE8iC,SAAS9yB,cAAc,SAAShQ,EAAEgH,aAAa,OAAO,YAAYhH,EAAEiQ,YAAY6yB,SAASmuF,eAAe7kG,IAAIzzB,EAAEsX,YAAYjQ,IAAvO,CAA4OosB,EAAErV,KAAKqV,EAAE0W,SAASC,KAAKytL,MAAMyB,eAAe,SAASt5N,EAAEyzB,GAAG,iBAAiBzzB,EAAEA,EAAEmqC,SAASovL,eAAev5N,GAAGA,EAAE2D,SAAS3D,EAAEA,EAAE,IAAIA,GAAGA,EAAE8jN,SAAS9jN,EAAEA,EAAE8jN,QAAQ,IAAIvsK,EAAEv3C,GAAGA,EAAE6jJ,YAAY7jJ,EAAE6jJ,WAAW,MAAM,OAAOtsG,GAAGA,EAAEusK,SAAS9jN,GAAGR,KAAK45N,cAAcp5N,GAAG,SAASA,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAE+K,MAAM1D,EAAErH,EAAEwoC,aAAa,UAAUjtB,EAAEvb,EAAEwoC,aAAa,SAAS,GAAGxoC,EAAE83N,IAAI,CAAC0B,QAAQ,CAACxvN,OAAO3C,EAAE6B,MAAMqS,EAAExQ,MAAM,CAACwH,QAAQglC,EAAEhlC,QAAQvI,OAAOutC,EAAEvtC,OAAOd,MAAMquC,EAAEruC,SAASquC,EAAEhlC,QAAQglC,EAAEhlC,SAAS,QAAQ,OAAOgJ,GAAG,KAAKA,EAAE,CAAC,IAAI+tH,EAAEqvF,GAAG34N,EAAE,cAAS,IAASspI,IAAItpI,EAAEkJ,MAAMogI,GAAG,GAAG,OAAOjiI,GAAG,KAAKA,EAAE,GAAG,KAAKrH,EAAE+K,MAAMf,OAAOhK,EAAEgK,OAAOhK,EAAEkJ,OAAOuqB,EAAEjM,QAAQghC,aAAa,OAAO,CAAC,IAAI7a,EAAEgrL,GAAG34N,EAAE,eAAU,IAASspI,IAAItpI,EAAEgK,OAAO2jC,IAAjZ,CAAsZ3tC,EAAEyzB,GAAG8jB,GAAG,MAAMkiL,eAAe,SAASz5N,GAAG,IAAIyzB,EAAEzzB,EAAE8jN,OAAO,GAAGrwL,EAAEqkM,IAAI,CAAC,IAAIvgL,EAAE9jB,EAAEqkM,IAAI0B,QAAQ,CAAC,SAAS,SAAS3mN,QAAS,SAAS7S,GAAG,IAAIqH,EAAEkwC,EAAEv3C,GAAGyjN,EAAE3G,cAAcz1M,GAAGosB,EAAEwU,gBAAgBjoC,GAAGyzB,EAAEplB,aAAarO,EAAEqH,KAAMo8M,EAAExG,KAAK1lK,EAAExsC,OAAO,GAAI,SAAS/K,EAAEu3C,GAAG9jB,EAAE1oB,MAAMwsC,GAAGv3C,IAAKyzB,EAAEvqB,MAAMuqB,EAAEvqB,aAAauqB,EAAEqkM,MAAMhtM,iBAAiB,SAAS9qB,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAErH,EAAE8jN,OAAO,GAAG,WAAWrwL,EAAE,CAAC,IAAIlY,EAAEg8B,EAAEugL,MAAMvgL,EAAEugL,IAAI,IAAIe,GAAGxxN,EAAEosB,GAAGlY,EAAEm+M,UAAUn+M,EAAEm+M,QAAQ,KAAK15N,EAAEwlB,GAAG,IAAIiO,GAAG,SAASA,GAAG8jB,EAAE,SAASv3C,EAAEyzB,GAAG,IAAI8jB,EAAE0gL,GAAGj4N,EAAEE,OAAOF,EAAEE,KAAKmH,EAAEo8M,EAAE+R,oBAAoBx1N,EAAEyzB,GAAG,OAAOslM,GAAGxhL,EAAE9jB,EAAEpsB,EAAE0zB,EAAE1zB,EAAEyd,EAAE9kB,GAA1F,CAA8FyzB,EAAEzzB,WAAhyF,SAAYA,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEpkB,EAAE83N,MAAM93N,EAAE83N,IAAI,IAAI1sF,EAAEhnH,EAAEu1M,QAAQ,SAAS35N,GAAG,IAAIyzB,EAAEulM,GAAGjB,IAAIxgL,EAAEyhL,GAAGjB,GAAG,WAAW1wN,EAAE2xN,GAAGjB,GAAG,WAAWxgL,EAAEjgC,YAAY0hN,MAAM3xN,EAAEiQ,YAAY0hN,MAAMvlM,EAAEnc,YAAYigC,GAAG9jB,EAAEnc,YAAYjQ,GAAGosB,EAAEggI,OAAO,WAAWl8G,EAAE2gC,WAAW,IAAI3gC,EAAE3vB,UAAU,IAAIvgB,EAAE6wE,WAAW,IAAI7wE,EAAEugB,UAAU,KAAK,IAAIrM,EAAE,WAAWkY,EAAEggI,SAASzzJ,KAAK,OAAO64N,GAAGthL,EAAE,SAASh8B,EAAEwuB,KAAKwN,EAAE,WAAWshL,GAAGxxN,EAAE,SAASkU,EAAEwuB,KAAK1iC,EAAE,WAAWosB,EAA5U,EAAgVpsB,EAAE,WAAW,GAAG+c,EAAEu1M,QAAQ,CAAC,IAAItyN,EAAEkwC,EAAE/vB,QAAQoyM,qBAAqB55N,EAAEkgB,WAAW3E,EAAElU,EAAEA,EAAEkrE,YAAY,EAAE9+C,EAAEslM,GAAG,SAASxhL,IAAIlwC,GAAGA,EAAEkrE,YAAYh3D,GAAGg8B,EAAEusK,QAAQrwL,EAAEslM,GAAG,SAASxhL,MAAM+xF,GAAE,EAAG37F,EAAE,GAAG,WAAWA,EAAE5jC,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5b,WAAWyC,EAAEA,GAAG/b,KAAK8pI,IAAIA,GAAE,EAAGm6E,EAAEoC,iBAAiBnxL,KAAK/J,OAAQ,WAAW2+G,GAAE,EAAGjiI,EAAE8vC,MAAM57B,EAAEoyB,UAAW,SAAS3tC,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAE83N,MAAM93N,EAAE83N,IAAI,IAAIzwN,EAAEkwC,EAAEsiL,YAAY,SAAS75N,GAAnkD,6BAAskDA,EAAE85N,eAAoBrmM,KAAKgwL,EAAExG,KAAKznL,GAAI,SAAS/B,GAAGolM,GAAG74N,EAAEyzB,EAAEpsB,KAAMkwC,EAAEwiL,SAAS/5N,EAAEivG,aAAajvG,EAAEmC,UAAUE,IAAI21N,IAA3K,CAAgLh4N,EAAG,WAAW,GAAGokB,EAAEu1M,QAAQ,CAAC,IAAIlmM,EAAEzzB,EAAEkgB,WAAWuT,GAAGA,IAAI23G,EAAElrH,YAAYuT,EAAEtT,aAAairH,EAAE33G,EAAEygD,YAAYk3D,EAAEqoB,YAA60DumE,CAAG3yN,EAAEkwC,EAAEv3C,IAAImrB,oBAAoB,SAASnrB,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAErH,EAAE8jN,OAAO,GAAG,WAAWrwL,EAAE,CAAC,IAAIlY,IAAIg8B,EAAEugL,KAAK,IAAI4B,SAAS,IAAI15N,EAAEwlB,GAAG,IAAIiO,GAAGlY,GAAGu9M,GAAGzxN,EAAEosB,EAAElY,QAAr8D,SAAYvb,GAAG,IAAIyzB,EAAEzzB,EAAE83N,KAAK,GAAGvgL,EAAE9jB,EAAEkmM,eAAelmM,EAAEkmM,QAAQ,SAAS35N,GAAG,IAAIyzB,EAAEzzB,EAAE83N,KAAK,GAAGvgL,EAAE9jB,EAAEomM,YAAYtiL,IAAIksK,EAAExG,KAAKznL,GAAI,SAAS/B,GAAGqlM,GAAG94N,EAAEyzB,EAAE8jB,YAAa9jB,EAAEomM,aAAa75N,EAAEmC,UAAU6I,OAAOgtN,IAA7H,CAAkIh4N,GAAGu3C,GAAGA,EAAEr3B,YAAYq3B,EAAEr3B,WAAWe,YAAYs2B,GAAkuD0iL,CAAG5yN,KAAKo8M,EAAEh+I,SAASozJ,GAAGpV,EAAEyW,YAAYpB,GAAG,IAAiHqB,GAAG1W,EAAElG,OAAO,CAACloL,WAAW,aAAaikM,eAAe,aAAaG,eAAe,aAAa3uM,iBAAiB,aAAaK,oBAAoB,cAAzP8tM,GAAGE,SAASF,GAAG,CAACK,eAAe,SAASt5N,GAAG,OAAOA,GAAGA,EAAE8jN,SAAS9jN,EAAEA,EAAE8jN,QAAQ9jN,GAAGA,EAAE6jJ,WAAW,OAAO,QAAwK0+D,EAAEP,KAAK,SAAS,CAAC5yJ,QAAQ,KAAK,IAAIgrK,GAAG,CAACC,SAAS,GAAGC,SAAS,EAAEC,SAAS,SAASv6N,GAAG,IAAIyzB,EAAEj0B,KAAK66N,SAAS,GAAG7hN,OAAOxY,GAAG6S,QAAS,SAAS7S,IAAI,IAAIyzB,EAAEhrB,QAAQzI,IAAIyzB,EAAErwB,KAAKpD,KAAMR,KAAK86N,YAAYE,WAAW,SAASx6N,GAAG,IAAIyzB,EAAEj0B,KAAK66N,SAAS,GAAG7hN,OAAOxY,GAAG6S,QAAS,SAAS7S,GAAG,IAAIu3C,EAAE9jB,EAAEhrB,QAAQzI,IAAI,IAAIu3C,GAAG9jB,EAAEsU,OAAOwP,EAAE,KAAM/3C,KAAK86N,YAAYpqN,MAAM,WAAW1Q,KAAK66N,SAAS,GAAG76N,KAAK86N,YAAY5jN,MAAM,WAAW,OAAOlX,KAAK66N,SAAS12N,QAAQujG,OAAO,WAAW,OAAO1nG,KAAK66N,UAAUx5D,OAAO,SAAS7gK,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE5rI,KAAKi7N,YAAYz6N,GAAG8/K,EAAE10C,EAAEznI,OAAO,IAAI0D,EAAE,EAAEA,EAAEy4K,IAAIz4K,EAAE,GAAG,mBAAmB+c,GAAGklH,GAAG/tH,EAAE6vH,EAAE/jI,IAAIqzN,QAAQjnM,OAAOka,EAAE,CAAC3tC,GAAGwY,OAAO++B,GAAG,KAAKn0C,KAAKmY,EAAEiM,UAAS,IAAKpD,EAAE+yB,MAAMmyF,EAAE37F,IAAI,OAAM,EAAG,OAAM,GAAI8sL,YAAY,SAASz6N,GAAG,IAAIyzB,EAAEzzB,EAAE26N,WAAW36N,EAAE26N,SAAS,IAAI,GAAGlnM,EAAEjO,KAAKhmB,KAAK86N,SAAS,OAAO7mM,EAAEgnM,YAAY,IAAIljL,EAAE,GAAGlwC,EAAE,GAAGkU,EAAEvb,GAAGA,EAAE43B,QAAQ,GAAG0xG,EAAE/tH,EAAEiM,SAASjM,EAAEiM,QAAQ4nC,SAAS,GAAG,OAAO5vD,KAAK66N,SAAS7hN,OAAO+C,EAAE6zC,SAAS,IAAIv8C,QAAS,SAAS7S,GAAG,IAAI,IAAIu3C,EAAE9uC,QAAQzI,GAAG,CAAC,IAAIyzB,EAAEzzB,EAAEwlB,GAAGjK,EAAE+tH,EAAE71G,IAAG,IAAKlY,KAAI,IAAKA,IAAIA,EAAEkoM,EAAErgE,MAAMm/D,EAAEj7K,OAAO8nB,QAAQ37B,KAAK8jB,EAAEn0C,KAAKpD,GAAGqH,EAAEjE,KAAK,CAACs3N,OAAO16N,EAAEwnB,QAAQjM,GAAG,SAAUkY,EAAEgnM,YAAYpzN,EAAEosB,EAAEjO,GAAGhmB,KAAK86N,SAASjzN,GAAGuzN,YAAY,SAAS56N,UAAUA,EAAE26N,WAAWE,GAAG,CAACC,aAAa,GAAGv0M,SAAS,GAAGw0M,kBAAkB,SAAS/6N,EAAEyzB,EAAE8jB,GAAG/3C,KAAKs7N,aAAa96N,GAAGyzB,EAAEj0B,KAAK+mB,SAASvmB,GAAGyjN,EAAErgE,MAAM7rG,IAAIyjL,oBAAoB,SAASh7N,GAAG,OAAOR,KAAKs7N,aAAa5tL,eAAeltC,GAAGR,KAAKs7N,aAAa96N,QAAG,GAAQi7N,iBAAiB,SAASj7N,GAAG,OAAOR,KAAK+mB,SAAS2mB,eAAeltC,GAAGyjN,EAAE5mM,MAAMb,OAAOlX,OAAO,MAAM,CAACy9M,EAAEuN,MAAMtwN,KAAK+mB,SAASvmB,KAAK,IAAIk7N,oBAAoB,SAASl7N,EAAEyzB,GAAGj0B,KAAK+mB,SAAS2mB,eAAeltC,KAAKR,KAAK+mB,SAASvmB,GAAGyjN,EAAElG,OAAO/9M,KAAK+mB,SAASvmB,GAAGyzB,KAAK0nM,kBAAkB,SAASn7N,GAAGyjN,EAAExG,KAAKj9M,EAAE6mN,OAAQ,SAASpzL,GAAGA,EAAEqjM,UAAUrjM,EAAEjM,QAAQsvM,UAAUrjM,EAAEjqB,SAASiqB,EAAEjM,QAAQhe,SAASiqB,EAAEyvL,OAAOzvL,EAAEjM,QAAQ07L,OAAOgU,GAAGC,OAAOn3N,EAAEyzB,OAAQ2nM,GAAG3X,EAAE1G,eAAese,GAAG5X,EAAEO,IAAIC,cAAc1B,EAAEP,KAAK,SAAS,CAACwO,SAAS,CAACtgF,SAAQ,EAAGy4E,OAAO,KAAKv2L,KAAK,UAAU5oB,SAAS,UAAUqsN,WAAU,EAAGvgK,gBAAgB,kBAAkBgmK,eAAe,OAAOC,aAAa,EAAEC,kBAAkB,EAAEC,eAAe,OAAOC,WAAW,OAAOC,YAAY,EAAEC,cAAc,OAAOC,UAAU,OAAOC,gBAAgB,OAAOC,cAAc,EAAEC,gBAAgB,EAAEC,gBAAgB,OAAOC,YAAY,OAAOC,SAAS,EAAEC,SAAS,EAAEC,aAAa,EAAEC,UAAU,EAAEC,aAAa,EAAEC,mBAAmB,OAAOC,eAAc,EAAGlnK,YAAY,gBAAgB0zJ,YAAY,EAAElzL,UAAU,CAAC2mM,YAAYjZ,EAAEvvF,KAAK99D,MAAM,SAASp2D,EAAEyzB,GAAG,IAAI8jB,EAAE,GAAGlwC,EAAEosB,EAAE6kL,OAAO/8L,EAAElU,EAAEA,EAAE1D,OAAO,EAAE,GAAG3D,EAAE2D,OAAO,EAAE,CAAC,IAAI2lI,EAAEtpI,EAAE,GAAGspI,EAAEz0G,MAAM0iB,EAAE+xF,EAAEz0G,MAAMy0G,EAAEmnF,OAAOl5K,EAAE+xF,EAAEmnF,OAAOl1M,EAAE,GAAG+tH,EAAEngI,MAAMoS,IAAIg8B,EAAElwC,EAAEiiI,EAAEngI,QAAQ,OAAOouC,GAAGolL,WAAWlZ,EAAEvvF,KAAK0oG,WAAWnZ,EAAEvvF,KAAK2oG,YAAYpZ,EAAEvvF,KAAKr/F,MAAM,SAAS70B,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAE0zL,SAASnnN,EAAE4oN,cAAc/zL,OAAO,GAAG,OAAO0iB,IAAIA,GAAG,MAAMksK,EAAE3G,cAAc98M,EAAEe,OAAOw2C,GAAGv3C,EAAE0wN,OAAOn5K,GAAGv3C,EAAEe,MAAMw2C,GAAGulL,WAAW,SAAS98N,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAE2zL,eAAepnN,EAAE4oN,cAAct5M,KAAKtP,EAAEmJ,OAAOy7M,MAAM,MAAM,CAACrvJ,YAAYhe,EAAEge,YAAYD,gBAAgB/d,EAAE+d,kBAAkBynK,eAAe,WAAW,OAAOv9N,KAAKm1L,SAASinC,eAAeoB,WAAWvZ,EAAEvvF,KAAK+oG,UAAUxZ,EAAEvvF,KAAKgpG,aAAazZ,EAAEvvF,KAAKjwD,OAAOw/I,EAAEvvF,KAAKipG,YAAY1Z,EAAEvvF,SAAS,IAAIkpG,GAAG,CAACC,QAAQ,SAASr9N,GAAG,IAAIA,EAAE2D,OAAO,OAAM,EAAG,IAAI8vB,EAAE8jB,EAAElwC,EAAE,EAAEkU,EAAE,EAAE+tH,EAAE,EAAE,IAAI71G,EAAE,EAAE8jB,EAAEv3C,EAAE2D,OAAO8vB,EAAE8jB,IAAI9jB,EAAE,CAAC,IAAIka,EAAE3tC,EAAEyzB,GAAG,GAAGka,GAAGA,EAAE2yG,WAAW,CAAC,IAAIl8H,EAAEupB,EAAE49I,kBAAkBlkL,GAAG+c,EAAE2W,EAAExf,GAAG6I,EAAEU,IAAIwkH,GAAG,MAAM,CAACvuG,EAAE1zB,EAAEiiI,EAAExkH,EAAEvJ,EAAE+tH,IAAI2sF,QAAQ,SAASj2N,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE71G,EAAEsH,EAAE4S,EAAEla,EAAE3O,EAAEV,EAAEjW,OAAOwtJ,kBAAkB,IAAIpkH,EAAE,EAAElwC,EAAErH,EAAE2D,OAAO4zC,EAAElwC,IAAIkwC,EAAE,CAAC,IAAI6zF,EAAEprI,EAAEu3C,GAAG,GAAG6zF,GAAGA,EAAEkV,WAAW,CAAC,IAAIw/B,EAAE10C,EAAEu/E,iBAAiBnzM,EAAEisM,EAAE6Z,sBAAsB7pM,EAAEqsJ,GAAGtoK,EAAE4M,IAAIA,EAAE5M,EAAE+D,EAAE6vH,IAAI,GAAG7vH,EAAE,CAAC,IAAIgJ,EAAEhJ,EAAEgwK,kBAAkBjiD,EAAE/kH,EAAEwW,EAAE4S,EAAEppB,EAAEO,EAAE,MAAM,CAACiW,EAAEuuG,EAAExkH,EAAE6oB,KAAK,SAAS4vL,GAAGv9N,EAAEyzB,GAAG,OAAOA,IAAIgwL,EAAEjuM,QAAQie,GAAG1pB,MAAMmoB,UAAU9uB,KAAK+zC,MAAMn3C,EAAEyzB,GAAGzzB,EAAEoD,KAAKqwB,IAAIzzB,EAAE,SAASw9N,GAAGx9N,GAAG,OAAO,iBAAiBA,GAAGA,aAAa6uC,SAAS7uC,EAAEyI,QAAQ,OAAO,EAAEzI,EAAE+hB,MAAM,MAAM/hB,EAAE,SAASy9N,GAAGz9N,GAAG,IAAIyzB,EAAE8uL,EAAEj7K,OAAO,MAAM,CAAC80L,SAASp8N,EAAEo8N,SAASD,SAASn8N,EAAEm8N,SAASuB,OAAO19N,EAAE09N,OAAOC,OAAO39N,EAAE29N,OAAO3Z,IAAIhkN,EAAEgkN,IAAI4Z,cAAc59N,EAAE49N,cAAchC,cAAc57N,EAAE47N,cAAciC,gBAAgBzC,GAAGp7N,EAAE89N,eAAerqM,EAAEyuL,mBAAmB6b,eAAe3C,GAAGp7N,EAAEg+N,cAAcvqM,EAAE2uL,kBAAkB6b,WAAWj+N,EAAE67N,UAAUqC,aAAa9C,GAAGp7N,EAAEk+N,aAAazqM,EAAE0uL,iBAAiBwZ,YAAY37N,EAAE27N,YAAYF,eAAez7N,EAAEy7N,eAAe0C,iBAAiB/C,GAAGp7N,EAAEo+N,gBAAgB3qM,EAAEyuL,mBAAmBmc,gBAAgBjD,GAAGp7N,EAAEs7N,eAAe7nM,EAAE2uL,kBAAkBkc,cAAclD,GAAGp7N,EAAEs+N,cAAc7qM,EAAE0uL,iBAAiBoc,YAAYv+N,EAAE07N,WAAWH,aAAav7N,EAAEu7N,aAAaC,kBAAkBx7N,EAAEw7N,kBAAkBS,gBAAgBj8N,EAAEi8N,gBAAgBuC,kBAAkBpD,GAAGp7N,EAAEy+N,iBAAiBhrM,EAAEyuL,mBAAmBwc,iBAAiBtD,GAAGp7N,EAAE87N,gBAAgBroM,EAAE2uL,kBAAkBuc,eAAevD,GAAGp7N,EAAE2+N,eAAelrM,EAAE0uL,iBAAiByc,aAAa5+N,EAAEk8N,YAAYH,cAAc/7N,EAAE+7N,cAAcC,gBAAgBh8N,EAAEg8N,gBAAgBM,UAAUt8N,EAAEs8N,UAAUC,aAAav8N,EAAEu8N,aAAajnK,gBAAgBt1D,EAAEs1D,gBAAgBp0B,QAAQ,EAAE29L,sBAAsB7+N,EAAEw8N,mBAAmBC,cAAcz8N,EAAEy8N,cAAclnK,YAAYv1D,EAAEu1D,YAAY0zJ,YAAYjpN,EAAEipN,aAAa,SAAS6V,GAAG9+N,EAAEyzB,GAAG,MAAM,WAAWA,EAAEzzB,EAAE+6B,EAAE/6B,EAAEkJ,MAAM,EAAE,UAAUuqB,EAAEzzB,EAAE+6B,EAAE/6B,EAAEkJ,MAAMlJ,EAAEo8N,SAASp8N,EAAE+6B,EAAE/6B,EAAEo8N,SAAS,SAAS2C,GAAG/+N,GAAG,OAAOu9N,GAAG,GAAGC,GAAGx9N,IAAI,IAAijQg/N,GAA1iQja,EAAExH,OAAO,CAACloL,WAAW,WAAW71B,KAAK4vH,OAAOquG,GAAGj+N,KAAKm1L,UAAUn1L,KAAKy/N,YAAY,IAAIC,SAAS,WAAW,IAAIl/N,EAAER,KAAkB+3C,EAAXv3C,EAAE20L,SAAa5+J,UAAU1uB,EAAEkwC,EAAEmlL,YAAYvlL,MAAMn3C,EAAE8Y,WAAWyC,EAAEg8B,EAAE6e,MAAMjf,MAAMn3C,EAAE8Y,WAAWwwH,EAAE/xF,EAAEolL,WAAWxlL,MAAMn3C,EAAE8Y,WAAW60B,EAAE,GAAG,OAAOA,EAAE4vL,GAAG5vL,EAAE6vL,GAAGn2N,IAAIsmC,EAAE4vL,GAAG5vL,EAAE6vL,GAAGjiN,IAAMgiN,GAAG5vL,EAAE6vL,GAAGl0F,KAAK61F,cAAc,WAAW,OAAOJ,GAAGv/N,KAAKm1L,SAAS5+J,UAAU6mM,WAAWzlL,MAAM33C,KAAKsZ,aAAasmN,QAAQ,SAASp/N,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAEo9I,SAAS5+J,UAAUxa,EAAE,GAAG,OAAOkoM,EAAExG,KAAKj9M,EAAG,SAASA,GAAG,IAAIspI,EAAE,CAACplF,OAAO,GAAGu7I,MAAM,GAAGt7I,MAAM,IAAIo5K,GAAGj0F,EAAEplF,OAAOs5K,GAAGn2N,EAAEw1N,YAAYnoM,KAAK6iB,EAAEv3C,EAAEyzB,KAAK8pM,GAAGj0F,EAAEm2D,MAAMp4L,EAAEwtB,MAAMH,KAAK6iB,EAAEv3C,EAAEyzB,IAAI8pM,GAAGj0F,EAAEnlF,MAAMq5K,GAAGn2N,EAAE21N,WAAWtoM,KAAK6iB,EAAEv3C,EAAEyzB,KAAKlY,EAAEnY,KAAKkmI,KAAM/tH,GAAG8jN,aAAa,WAAW,OAAON,GAAGv/N,KAAKm1L,SAAS5+J,UAAUknM,UAAU9lL,MAAM33C,KAAKsZ,aAAawmN,UAAU,WAAW,IAAIt/N,EAAER,KAAKi0B,EAAEzzB,EAAE20L,SAAS5+J,UAAUwhB,EAAE9jB,EAAEypM,aAAa/lL,MAAMn3C,EAAE8Y,WAAWzR,EAAEosB,EAAEwwC,OAAO9sB,MAAMn3C,EAAE8Y,WAAWyC,EAAEkY,EAAE0pM,YAAYhmL,MAAMn3C,EAAE8Y,WAAWwwH,EAAE,GAAG,OAAOA,EAAEi0F,GAAGj0F,EAAEk0F,GAAGjmL,IAAI+xF,EAAEi0F,GAAGj0F,EAAEk0F,GAAGn2N,IAAMk2N,GAAGj0F,EAAEk0F,GAAGjiN,KAAKy+D,OAAO,SAASh6E,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAE/kB,KAAK4vC,EAAE7qB,EAAEowK,SAASl8J,EAAElU,EAAE6qG,OAAOmb,EAAEhmH,EAAE6qG,OAAOquG,GAAGruL,GAAG25F,EAAExkH,EAAEw/K,QAAQzhL,EAAEiC,EAAE9Q,MAAMhU,EAAE,CAACi+N,OAAOjlM,EAAEilM,OAAOC,OAAOllM,EAAEklM,QAAQniN,EAAE,CAACuf,EAAEtC,EAAEsC,EAAEjW,EAAE2T,EAAE3T,GAAGiW,EAAE,CAAC7xB,MAAMuvB,EAAEvvB,MAAMc,OAAOyuB,EAAEzuB,QAAQ8a,EAAE,CAACiW,EAAEtC,EAAE8mM,OAAOz6M,EAAE2T,EAAE+mM,QAAQ,GAAGz2F,EAAEplI,OAAO,CAAC4mI,EAAErpG,QAAQ,EAAE,IAAI0wE,EAAE,GAAGoqB,EAAE,GAAGl3G,EAAEs4M,GAAGhuL,EAAE5lC,UAAUkrB,KAAKnQ,EAAEwkH,EAAExkH,EAAEk7M,gBAAgB,IAAI/6M,EAAE,GAAG,IAAI+O,EAAE,EAAE8jB,EAAEwxF,EAAEplI,OAAO8vB,EAAE8jB,IAAI9jB,EAAE/O,EAAEthB,MAAamY,OAAE,EAAO+tH,OAAE,EAAyB8B,OAAE,EAAO00C,OAAE,EAAOtoK,OAAE,EAAO+D,GAAtElU,EAAE0hI,EAAEt1G,IAAsEo7L,QAAQvlF,EAAEjiI,EAAEynN,SAASznN,EAAE4rN,OAAOtlL,EAAEtmC,EAAE0gN,OAAiEjoC,GAAxC10C,EAAE/jI,EAAEugN,OAAOR,eAA7BhjM,EAAE/c,EAAEwgN,eAA2C0J,YAAe9J,iBAAiBjwM,EAAE4zH,EAAEo8E,iBAAiB,CAACiJ,OAAOl1M,EAAEA,EAAEmkN,iBAAiB/xL,EAAEvpB,GAAG,GAAGssM,OAAOpnF,EAAEA,EAAEo2F,iBAAiB/xL,EAAEvpB,GAAG,GAAGyQ,MAAMirJ,EAAE,GAAGA,EAAE4/C,iBAAiB/xL,EAAEvpB,GAAG,GAAGrjB,MAAMyW,EAAE,GAAGA,EAAEkoN,iBAAiB/xL,EAAEvpB,GAAG,GAAGjb,MAAMwkC,EAAEi7K,aAAaxkM,EAAE2W,EAAE1zB,EAAE+nH,OAAOr0F,EAAEjW,EAAEzd,EAAE+nH,OAAOtqG,KAAKsqB,EAAEz6B,SAAS+P,EAAEA,EAAE/P,OAAQ,SAAS3U,GAAG,OAAOovC,EAAEz6B,OAAO3U,EAAEsiB,MAAO8sB,EAAEuwL,WAAWj7M,EAAEA,EAAErJ,KAAM,SAASrb,EAAEyzB,GAAG,OAAO2b,EAAEuwL,SAAS3/N,EAAEyzB,EAAEnR,MAAOmhM,EAAExG,KAAKv4L,EAAG,SAAS1kB,GAAG4xG,EAAExuG,KAAKgsC,EAAErZ,UAAU+mM,WAAWpoM,KAAKnQ,EAAEvkB,EAAEukB,EAAEqjM,SAAS5rF,EAAE54H,KAAKgsC,EAAErZ,UAAUgnM,eAAeroM,KAAKnQ,EAAEvkB,EAAEukB,EAAEqjM,WAAYr9E,EAAEn0E,MAAM7xC,EAAE26M,SAASx6M,EAAEpC,GAAGioH,EAAEqyF,WAAWr4M,EAAE46M,cAAcz6M,EAAEpC,GAAGioH,EAAEjoG,KAAK/d,EAAE66M,QAAQ16M,EAAEpC,GAAGioH,EAAE0yF,UAAU14M,EAAE86M,aAAa36M,EAAEpC,GAAGioH,EAAEtmE,OAAO1/C,EAAE+6M,UAAU56M,EAAEpC,GAAGioH,EAAExvG,EAAEjW,EAAEiW,EAAEwvG,EAAEzlH,EAAEA,EAAEA,EAAEylH,EAAE8xF,aAAajtL,EAAEitL,aAAa9xF,EAAEq1F,YAAYhuH,EAAE24B,EAAEs1F,gBAAgB7jG,EAAEuO,EAAEu1F,WAAWp7M,EAA05BlJ,EAAE,SAASxb,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAEvb,EAAE+6B,EAAEuuG,EAAEtpI,EAAE8kB,EAAgBV,EAAEpkB,EAAEq8N,aAA8Bv8C,EAAEvoI,EAAEmmL,OAAOlmN,EAAE+/B,EAAEomL,OAAOp5M,EAApEvkB,EAAEs8N,UAAsEl4M,EAAEgrB,EAA3CpvC,EAAEu8N,aAA6Cn4M,EAAE,MAAM,UAAU07J,EAAEvkK,GAAGkY,EAAEvqB,MAAM,WAAW42K,KAAKvkK,GAAGkY,EAAEvqB,MAAM,GAAGuqB,EAAEvqB,MAAM7B,EAAE6B,QAAQqS,EAAElU,EAAE6B,MAAMuqB,EAAEvqB,OAAOqS,EAAE,IAAIA,EAAE,IAAI,QAAQ/D,EAAE8xH,GAAG/kH,EAAE+kH,GAAG,WAAW9xH,EAAEic,EAAEzpB,OAAOua,EAAEkP,EAAEzpB,OAAO,EAAE,WAAWwN,EAAE,SAASsoK,EAAEvkK,GAAGgJ,EAAE,UAAUu7J,IAAIvkK,GAAGgJ,GAAG,SAASu7J,EAAEvkK,GAAG6zB,EAAE,UAAU0wI,IAAIvkK,GAAG6zB,GAAG,CAACrU,EAAExf,EAAEuJ,EAAEwkH,GAAjX,CAAqXiB,EAA/wCxvG,EAAE,SAAS/6B,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAE4nN,OAAOxmN,IAAIiG,EAAE,EAAEosB,EAAE0oM,SAAS5gN,EAAE,EAAE+tH,EAAE71G,EAAE6O,KAAKqL,EAAE27F,EAAEr0H,OAAQ,SAASjV,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,EAAEywB,OAAOvgD,OAAO8vB,EAAEgsK,MAAM97L,OAAO8vB,EAAE0wB,MAAMxgD,QAAS,GAAiDygB,EAAEqP,EAAE2iC,MAAMzyD,OAAOynI,EAAE33G,EAAEwwC,OAAOtgE,OAAOm8K,EAAErsJ,EAAE6qM,cAAc9mN,EAAEic,EAAEyqM,aAAa35M,EAAEkP,EAAEkrM,eAAet3N,GAAG+c,EAAE07J,EAAEz4K,GAAG+c,GAAGA,EAAE,GAAGqP,EAAE8nM,aAAa,EAAEl0N,GAAG+c,EAAEqP,EAAE+nM,kBAAkB,EAAEn0N,IAArMsmC,GAAGla,EAAEmpM,WAAWj5N,OAAO8vB,EAAEwpM,UAAUt5N,QAAuK6T,EAAEnQ,GAAGsmC,GAAGA,EAAE,GAAGla,EAAEkoM,YAAY,EAAEt0N,GAAG+jI,EAAE33G,EAAEuoM,gBAAgB,EAAE30N,GAAG+jI,EAAE7mH,EAAEld,GAAG+jI,GAAGA,EAAE,GAAG33G,EAAEsoM,cAAc,EAAE,IAAI3sL,EAAE,EAAE3W,EAAE,SAASz4B,GAAGub,EAAEwC,KAAKukC,IAAI/mC,EAAEg8B,EAAEwoL,YAAY//N,GAAGkJ,MAAMkmC,IAAI,OAAOmI,EAAEyoL,KAAKvc,EAAEwc,WAAWngD,EAAErsJ,EAAE4qM,gBAAgB5qM,EAAE0qM,kBAAkB1a,EAAExG,KAAKxpL,EAAE2iC,MAAM39B,GAAG8e,EAAEyoL,KAAKvc,EAAEwc,WAAWzoN,EAAEic,EAAEsqM,eAAetqM,EAAEoqM,iBAAiBpa,EAAExG,KAAKxpL,EAAEmpM,WAAWpkN,OAAOib,EAAEwpM,WAAWxkM,GAAG2W,EAAE3b,EAAEgpM,cAAcjlN,EAAE,EAAE,EAAEisM,EAAExG,KAAK3zE,EAAG,SAAStpI,GAAGyjN,EAAExG,KAAKj9M,EAAEkkD,OAAOzrB,GAAGgrL,EAAExG,KAAKj9M,EAAEy/L,MAAMhnK,GAAGgrL,EAAExG,KAAKj9M,EAAEmkD,MAAM1rB,KAAM2W,EAAE,EAAEmI,EAAEyoL,KAAKvc,EAAEwc,WAAW17M,EAAEkP,EAAEirM,iBAAiBjrM,EAAE+qM,mBAAmB/a,EAAExG,KAAKxpL,EAAEwwC,OAAOxrC,GAAG,CAACvvB,MAAMqS,GAAG,EAAEkY,EAAE2oM,SAASpyN,OAAO3C,GAA14B,CAA84B7H,KAAK+qI,GAA8X9qI,EAAE,SAASO,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEpkB,EAAEovH,OAAOgc,EAAEprI,EAAE4nN,OAAO9nC,EAAE9/K,EAAE4nN,OAAOyI,UAAU74M,EAAE,SAAS+M,EAAE,SAASH,EAAEU,EAAE2O,EAAEzpB,OAAOua,EAAE,MAAMH,EAAEU,EAAEsmH,EAAEphI,OAAOypB,EAAEzpB,SAASua,EAAE,UAAU,IAAI6qB,GAAG0wI,EAAEr0K,KAAKq0K,EAAEp0K,OAAO,EAAE+sB,GAAGqnJ,EAAEv0K,IAAIu0K,EAAEt0K,QAAQ,EAAE,WAAW+Y,GAAGgzB,EAAE,SAASv3C,GAAG,OAAOA,GAAGovC,GAAG/nC,EAAE,SAASrH,GAAG,OAAOA,EAAEovC,KAAKmI,EAAE,SAASv3C,GAAG,OAAOA,GAAGyzB,EAAEvqB,MAAM,GAAG7B,EAAE,SAASrH,GAAG,OAAOA,GAAGorI,EAAEliI,MAAMuqB,EAAEvqB,MAAM,IAAIqS,EAAE,SAASvb,GAAG,OAAOA,EAAEyzB,EAAEvqB,MAAMkb,EAAEk4M,UAAUl4M,EAAEi4M,aAAajxF,EAAEliI,OAAOogI,EAAE,SAAStpI,GAAG,OAAOA,EAAEyzB,EAAEvqB,MAAMkb,EAAEk4M,UAAUl4M,EAAEi4M,aAAa,GAAG1uL,EAAE,SAAS3tC,GAAG,OAAOA,GAAGy4B,EAAE,MAAM,UAAU8e,EAAEnzB,EAAE2W,IAAIvjB,EAAE,OAAO+D,EAAE6I,EAAE2W,KAAKvjB,EAAE,SAAS+M,EAAEopB,EAAEvpB,EAAEU,KAAKzd,EAAE+c,EAAE2W,KAAKvjB,EAAE,QAAQ8xH,EAAEllH,EAAE2W,KAAKvjB,EAAE,SAAS+M,EAAEopB,EAAEvpB,EAAEU,KAAK,IAAIylH,EAAEvqI,EAAE20L,SAAS,MAAM,CAAC+oC,OAAOnzF,EAAEmzF,OAAOnzF,EAAEmzF,OAAOlmN,EAAEmmN,OAAOpzF,EAAEozF,OAAOpzF,EAAEozF,OAAOp5M,GAAhrB,CAAorB/kB,KAAKu7B,GAAGxW,EAAEqjM,aAAar9E,EAAErpG,QAAQ,EAAE,OAAOqpG,EAAEmzF,OAAOj+N,EAAEi+N,OAAOnzF,EAAEozF,OAAOl+N,EAAEk+N,OAAOpzF,EAAExvG,EAAEvf,EAAEuf,EAAEwvG,EAAEzlH,EAAEtJ,EAAEsJ,EAAEylH,EAAErhI,MAAM6xB,EAAE7xB,MAAMqhI,EAAEvgI,OAAO+wB,EAAE/wB,OAAOugI,EAAEg1F,OAAOz6M,EAAEiW,EAAEwvG,EAAEi1F,OAAO16M,EAAEA,EAAEP,EAAE6qG,OAAOmb,EAAEvqI,GAAGovC,EAAEu5K,QAAQv5K,EAAEu5K,OAAOj0L,KAAKnQ,EAAEgmH,GAAGhmH,GAAG27M,UAAU,SAASlgO,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAKooN,OAAOxmN,IAAiBma,EAAE/b,KAAK2gO,iBAAiBngO,EAAEyzB,EAArCj0B,KAAKolN,OAAqCrtK,EAAEwpK,OAAOxlM,EAAE6kN,GAAG7kN,EAAE8kN,IAAI9oL,EAAEwpK,OAAOxlM,EAAE+kN,GAAG/kN,EAAEglN,IAAIhpL,EAAEwpK,OAAOxlM,EAAEilN,GAAGjlN,EAAEklN,KAAKN,iBAAiB,SAASngO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEvoI,EAAE+kL,UAAU9kN,EAAE+/B,EAAEglL,aAAah4M,EAAEgzB,EAAEmmL,OAAOtuL,EAAEmI,EAAEomL,OAAOllM,EAAEz4B,EAAE+6B,EAAEwvG,EAAEvqI,EAAE8kB,EAAEikH,EAAEt1G,EAAEvqB,MAAMoZ,EAAEmR,EAAEzpB,OAAO,GAAG,WAAWolC,EAAEhrB,EAAEmmH,EAAEjoH,EAAE,EAAE,SAASiC,GAAGhJ,GAAGlU,EAAEoxB,GAAGqnJ,EAAEx2C,EAAEjiI,EAAEsmC,EAAEvpB,EAAE07J,EAAE10C,EAAEhnH,EAAE07J,IAAIvkK,GAAGlU,EAAEoxB,EAAEswG,GAAG+2C,EAAEx2C,EAAEjiI,EAAEsmC,EAAEvpB,EAAE07J,EAAE10C,EAAEhnH,EAAE07J,QAAQ,GAAG,SAASv7J,GAAGld,GAAGkU,EAAEkd,EAAEjhB,EAAEsoK,GAAGA,EAAEx2C,EAAE/tH,EAAEukK,GAAG,UAAUv7J,GAAGld,GAAGkU,EAAEkd,EAAEswG,EAAEvxH,EAAEsoK,GAAGA,EAAEx2C,EAAE/tH,EAAEukK,IAAIz4K,GAAGkU,EAAEg8B,EAAEgoL,QAAQz/C,EAAEx2C,EAAE/tH,EAAEukK,GAAG,QAAQ1wI,EAAEhrB,GAAGupB,EAAE48F,GAAGu1C,EAAE10C,EAAEz9F,MAAM,CAACvpB,GAAGupB,EAAE48F,EAAEjoH,GAAGw9J,EAAE10C,EAAEz9F,EAAE,IAAIluC,EAAE6pI,EAAEA,EAAEjiI,EAAEA,EAAE5H,EAAE,MAAM,CAAC2gO,GAAG/4N,EAAEi5N,GAAG/kN,EAAEilN,GAAGl3F,EAAE+2F,GAAG1yL,EAAE4yL,GAAGn8M,EAAEq8M,GAAGr1F,IAAIs1F,UAAU,SAAS1gO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEla,EAAE2iC,MAAMhyC,EAAEupB,EAAEhqC,OAAO,GAAGygB,EAAE,CAAC,IAAIgnH,EAAEiwF,GAAG5nM,EAAEuwL,IAAIvwL,EAAEsH,EAAEtH,EAAEvqB,OAAO,IAAIlJ,EAAE+6B,EAAE+jM,GAAGrrM,EAAEA,EAAE8qM,aAAahnL,EAAE4sK,UAAU/4E,EAAE+4E,UAAU1wL,EAAE8qM,aAAahnL,EAAEopL,aAAa,SAASt5N,EAAEosB,EAAE6qM,cAAc/iN,EAAEkY,EAAE8nM,aAAahkL,EAAEwzK,UAAUt3L,EAAEgoM,eAAelkL,EAAEyoL,KAAKvc,EAAEwc,WAAW54N,EAAEosB,EAAE4qM,gBAAgB5qM,EAAE0qM,kBAAkB70F,EAAE,EAAEA,EAAEllH,IAAIklH,EAAE/xF,EAAEqpL,SAASjzL,EAAE27F,GAAG8B,EAAErwG,EAAE/6B,EAAE+6B,GAAG/6B,EAAE8kB,EAAEzd,EAAE,GAAGrH,EAAE8kB,GAAGzd,EAAEkU,EAAE+tH,EAAE,IAAIllH,IAAIpkB,EAAE8kB,GAAG2O,EAAE+nM,kBAAkBjgN,KAAKslN,SAAS,SAAS7gO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAEkP,EAAEyqM,aAAa9uL,EAAE3b,EAAEkoM,YAAYljM,EAAEhF,EAAEwqM,WAAW1zF,EAAE92G,EAAE6O,KAAKymG,EAAEt1G,EAAEgpM,cAAcn6M,EAAE,EAAE7iB,EAAEspI,EAAE+1F,GAAGrrM,EAAE,QAAQ,EAAEjY,EAAE6/M,GAAG5nM,EAAEuwL,IAAIvwL,EAAEsH,EAAEtH,EAAEvqB,OAAO6xB,EAAE,SAAStH,GAAG8jB,EAAEqpL,SAASntM,EAAEjY,EAAEuf,EAAE/6B,EAAE+6B,EAAEzY,GAAGtiB,EAAE8kB,EAAEP,EAAE,GAAGvkB,EAAE8kB,GAAGP,EAAE6qB,GAAGtqB,EAAEtJ,EAAE2oM,UAAU1rL,GAAG,IAAI8e,EAAE4sK,UAAU1rL,EAAE8e,EAAEopL,aAAa,SAASppL,EAAEyoL,KAAKvc,EAAEwc,WAAW17M,EAAEkP,EAAEsqM,eAAetqM,EAAEoqM,iBAAiB79N,EAAE+6B,EAAE+jM,GAAGrrM,EAAE3O,GAAGyyB,EAAEwzK,UAAUt3L,EAAEmoM,cAAcnY,EAAExG,KAAKxpL,EAAEmpM,WAAW7hM,GAAGzY,EAAEymH,GAAG,UAAUjkH,EAAE,WAAW2T,EAAElU,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEH,EAAE,EAAE07J,EAAEv1C,EAAE5mI,OAAOygB,EAAE07J,IAAI17J,EAAE,CAAC,IAAI/c,EAAEkjI,EAAEnmH,GAA0BklH,EAAE71G,EAAEmsM,YAAYx7M,GAAGmzB,EAAEwzK,UAA5CxvM,EAAEkY,EAAEosM,gBAAgBz7M,GAAoCq/L,EAAExG,KAAK51M,EAAE68C,OAAOnpB,GAAGqwG,EAAE,EAAE5zH,GAAGm2B,EAAEtmC,EAAEo4L,OAAO97L,OAAOynI,EAAE5zH,IAAI4zH,EAAE,CAAC,GAAGrC,EAAE,CAAC,IAAIn3B,EAAEp2F,EAAEuf,EAAEt7B,GAAG83C,EAAEwzK,UAAUt3L,EAAEorM,sBAAsBtnL,EAAEg2K,SAAS/xM,EAAE6oM,WAAWzyG,EAAErtF,GAAGvkB,EAAE8kB,EAAEP,EAAEA,GAAGgzB,EAAE0zK,UAAU,EAAE1zK,EAAEyzK,YAAY1hF,EAAE/zE,YAAYhe,EAAEupL,WAAWtlN,EAAE6oM,WAAWzyG,EAAErtF,GAAGvkB,EAAE8kB,EAAEP,EAAEA,GAAGgzB,EAAEwzK,UAAUzhF,EAAEh0E,gBAAgB/d,EAAEg2K,SAAS/xM,EAAE6oM,WAAW7oM,EAAE4oM,MAAMxyG,EAAE,GAAGrtF,EAAE,GAAGvkB,EAAE8kB,EAAE,EAAEP,EAAE,EAAEA,EAAE,GAAGgzB,EAAEwzK,UAAUxvM,EAAEwf,EAAE4S,EAAEy9F,IAAIq4E,EAAExG,KAAK51M,EAAE88C,MAAMppB,GAAGzY,EAAE,EAAEmhM,EAAExG,KAAKxpL,EAAEwpM,UAAUliM,GAAG/6B,EAAE8kB,GAAGsqB,GAAG2xL,WAAW,SAAS/gO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE71G,EAAEwwC,OAAOt2B,EAAE27F,EAAE3lI,OAAO,GAAGgqC,EAAE,CAAC,IAAIvpB,EAAEi3M,GAAG5nM,EAAEuwL,IAAIvwL,EAAEsH,EAAEtH,EAAEvqB,OAAO,IAAIlJ,EAAE+6B,EAAE+jM,GAAGrrM,EAAEA,EAAEmrM,cAAc5+N,EAAE8kB,GAAG2O,EAAEuoM,gBAAgBzkL,EAAE4sK,UAAU//L,EAAE+/L,UAAU1wL,EAAEmrM,cAAcrnL,EAAEopL,aAAa,SAASt5N,EAAEosB,EAAEkrM,eAAepnL,EAAEwzK,UAAUt3L,EAAEwoM,gBAAgB1kL,EAAEyoL,KAAKvc,EAAEwc,WAAW54N,EAAEosB,EAAEirM,iBAAiBjrM,EAAE+qM,mBAAmBjjN,EAAE,EAAEA,EAAEoyB,IAAIpyB,EAAEg8B,EAAEqpL,SAASt3F,EAAE/tH,GAAG6I,EAAE2W,EAAE/6B,EAAE+6B,GAAG/6B,EAAE8kB,EAAEzd,EAAE,GAAGrH,EAAE8kB,GAAGzd,EAAEosB,EAAEsoM,gBAAgBiF,eAAe,SAAShhO,EAAEyzB,EAAE8jB,EAAElwC,GAAGkwC,EAAEwzK,UAAUt3L,EAAE6hC,gBAAgB/d,EAAEyzK,YAAYv3L,EAAE8hC,YAAYhe,EAAE0zK,UAAUx3L,EAAEw1L,YAAY,IAAI1tM,EAAEkY,EAAEiqM,OAAOp0F,EAAE71G,EAAEkqM,OAAOhwL,EAAE3tC,EAAE+6B,EAAE3W,EAAEpkB,EAAE8kB,EAAEsmH,EAAE/jI,EAAE6B,MAAM42K,EAAEz4K,EAAE2C,OAAOwN,EAAEic,EAAE8oM,aAAahlL,EAAEupK,YAAYvpK,EAAEipK,OAAO7yK,EAAEn2B,EAAE4M,GAAG,QAAQklH,GAAG9pI,KAAK0gO,UAAUlgO,EAAEqH,GAAGkwC,EAAEwpK,OAAOpzK,EAAEy9F,EAAE5zH,EAAE4M,GAAGmzB,EAAE0pL,iBAAiBtzL,EAAEy9F,EAAEhnH,EAAEupB,EAAEy9F,EAAEhnH,EAAE5M,GAAG,WAAW8xH,GAAG,UAAU/tH,GAAG/b,KAAK0gO,UAAUlgO,EAAEqH,GAAGkwC,EAAEwpK,OAAOpzK,EAAEy9F,EAAEhnH,EAAE07J,EAAEtoK,GAAG+/B,EAAE0pL,iBAAiBtzL,EAAEy9F,EAAEhnH,EAAE07J,EAAEnyI,EAAEy9F,EAAE5zH,EAAE4M,EAAE07J,GAAG,WAAWx2C,GAAG9pI,KAAK0gO,UAAUlgO,EAAEqH,GAAGkwC,EAAEwpK,OAAOpzK,EAAEn2B,EAAE4M,EAAE07J,GAAGvoI,EAAE0pL,iBAAiBtzL,EAAEvpB,EAAE07J,EAAEnyI,EAAEvpB,EAAE07J,EAAEtoK,GAAG,WAAW8xH,GAAG,SAAS/tH,GAAG/b,KAAK0gO,UAAUlgO,EAAEqH,GAAGkwC,EAAEwpK,OAAOpzK,EAAEvpB,EAAE5M,GAAG+/B,EAAE0pL,iBAAiBtzL,EAAEvpB,EAAEupB,EAAEn2B,EAAE4M,GAAGmzB,EAAEmpK,YAAYnpK,EAAEihE,OAAO/kF,EAAEw1L,YAAY,GAAG1xK,EAAE0pK,UAAUuH,KAAK,WAAW,IAAIxoN,EAAER,KAAKooN,OAAOxmN,IAAIqyB,EAAEj0B,KAAKolN,MAAM,GAAG,IAAInxL,EAAEyN,QAAQ,CAAC,IAAIqW,EAAE,CAACruC,MAAMuqB,EAAEvqB,MAAMc,OAAOypB,EAAEzpB,QAAQ3C,EAAE,CAAC0zB,EAAEtH,EAAEsH,EAAEjW,EAAE2O,EAAE3O,GAAGvJ,EAAEwC,KAAKqiC,IAAI3sB,EAAEyN,QAAQ,MAAM,EAAEzN,EAAEyN,QAAkG1hC,KAAKm1L,SAASzkD,UAAtGz8G,EAAE2iC,MAAMzyD,QAAQ8vB,EAAEmpM,WAAWj5N,QAAQ8vB,EAAE6O,KAAK3+B,QAAQ8vB,EAAEwpM,UAAUt5N,QAAQ8vB,EAAEwwC,OAAOtgE,UAAkC3D,EAAE4gN,OAAO5gN,EAAEkhO,YAAY3lN,EAAE/b,KAAKwhO,eAAe35N,EAAEosB,EAAEzzB,EAAEu3C,GAAGlwC,EAAEyd,GAAG2O,EAAE0oM,SAAS1Y,EAAEO,IAAIM,sBAAsBtkN,EAAEyzB,EAAEmqM,eAAep+N,KAAKkhO,UAAUr5N,EAAEosB,EAAEzzB,GAAGR,KAAKqhO,SAASx5N,EAAEosB,EAAEzzB,GAAGR,KAAKuhO,WAAW15N,EAAEosB,EAAEzzB,GAAGyjN,EAAEO,IAAIS,qBAAqBzkN,EAAEyzB,EAAEmqM,eAAe59N,EAAE6gN,aAAasgB,YAAY,SAASnhO,GAAG,IAAIyzB,EAAE8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAEo9I,SAAS,OAAOp9I,EAAE0nL,YAAY1nL,EAAE0nL,aAAa,GAAG,aAAaj/N,EAAEE,KAAKq3C,EAAEwsJ,QAAQ,IAAIxsJ,EAAEwsJ,QAAQxsJ,EAAEqwK,OAAOwZ,0BAA0BphO,EAAEqH,EAAE+qB,KAAK/qB,GAAGA,EAAEgC,SAASkuC,EAAEwsJ,QAAQ16L,YAAYoqB,GAAGgwL,EAAEvG,YAAY3lK,EAAEwsJ,QAAQxsJ,EAAE0nL,gBAAgB1nL,EAAE0nL,YAAY1nL,EAAEwsJ,SAAS18L,EAAE6oI,SAAS7oI,EAAEshN,UAAUpxK,EAAEkoL,eAAe,CAAC1kM,EAAE/6B,EAAE+6B,EAAEjW,EAAE9kB,EAAE8kB,GAAGyyB,EAAEyiC,QAAO,GAAIziC,EAAEotK,UAAUlxL,KAAiBurM,GAAGqC,YAAZjE,GAA2B,IAAIkE,GAAG7d,EAAE1G,eAAe,SAASwkB,KAAK,OAAO9d,EAAE5mM,MAAMb,OAAOlX,OAAO,MAAM,GAAGkE,MAAM0rB,KAAK5b,WAAW,CAACwkM,OAAO,SAASt9M,EAAEyzB,EAAE8jB,EAAElwC,GAAG,GAAG,UAAUrH,GAAG,UAAUA,EAAE,CAAC,IAAIub,EAAE+tH,EAAE37F,EAAEvpB,EAAEmzB,EAAEv3C,GAAG2D,OAAO,IAAI8vB,EAAEzzB,KAAKyzB,EAAEzzB,GAAG,IAAIub,EAAE,EAAEA,EAAE6I,IAAI7I,EAAY+tH,EAAEg4F,IAAZ3zL,EAAE4J,EAAEv3C,GAAGub,IAAUrb,KAAK,UAAUF,EAAE,WAAW,UAAUub,GAAGkY,EAAEzzB,GAAG2D,QAAQ8vB,EAAEzzB,GAAGoD,KAAK,IAAiDqgN,EAAE5mM,MAAM4W,EAAEzzB,GAAGub,IAAzDkY,EAAEzzB,GAAGub,GAAGrb,MAAMytC,EAAEztC,MAAMytC,EAAEztC,OAAOuzB,EAAEzzB,GAAGub,GAAGrb,KAAqB,CAAC26N,GAAGI,iBAAiB3xF,GAAG37F,GAAoBA,QAAQ81K,EAAEtG,QAAQn9M,EAAEyzB,EAAE8jB,EAAElwC,MAAM,SAASm6N,KAAK,OAAO/d,EAAE5mM,MAAMb,OAAOlX,OAAO,MAAM,GAAGkE,MAAM0rB,KAAK5b,WAAW,CAACwkM,OAAO,SAASt9M,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAEkY,EAAEzzB,IAAIgc,OAAOlX,OAAO,MAAMwkI,EAAE/xF,EAAEv3C,GAAG,WAAWA,EAAEyzB,EAAEzzB,GAAGuhO,GAAGhmN,EAAE+tH,GAAG,UAAUtpI,EAAEyzB,EAAEzzB,GAAGyjN,EAAE5mM,MAAMtB,EAAE,CAACs/M,GAAGI,iBAAiB3xF,EAAEppI,MAAMopI,IAAIm6E,EAAEtG,QAAQn9M,EAAEyzB,EAAE8jB,EAAElwC,MAAM,SAASo6N,GAAGzhO,GAAG,IAAIyzB,EAAEzzB,EAAEwnB,QAAQi8L,EAAExG,KAAKj9M,EAAE6mN,OAAQ,SAASpzL,GAAGyjM,GAAGI,UAAUt3N,EAAEyzB,KAAMA,EAAE+tM,GAAGjf,EAAEj7K,OAAOi7K,EAAEviN,EAAE43B,OAAO13B,MAAMuzB,GAAGzzB,EAAEwnB,QAAQxnB,EAAE43B,OAAOpQ,QAAQiM,EAAEzzB,EAAE0hO,sBAAsB1hO,EAAE2hO,sBAAsB3hO,EAAEg0L,QAAQW,SAASlhK,EAAE+8L,SAASxwN,EAAEg0L,QAAQ3+J,aAAa,SAASusM,GAAG5hO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE,SAASvb,GAAG,OAAOA,EAAEwlB,KAAKne,GAAG,GAAGA,EAAEosB,EAAE8jB,UAAUksK,EAAE9+F,UAAU3kH,EAAEub,IAAI,GAAG,OAAOlU,EAAE,SAASw6N,GAAG7hO,GAAG,MAAM,QAAQA,GAAG,WAAWA,EAAE,SAAS8hO,GAAG9hO,EAAEyzB,GAAG,OAAO,SAAS8jB,EAAElwC,GAAG,OAAOkwC,EAAEv3C,KAAKqH,EAAErH,GAAGu3C,EAAE9jB,GAAGpsB,EAAEosB,GAAG8jB,EAAEv3C,GAAGqH,EAAErH,IAAIuiN,EAAEP,KAAK,SAAS,CAACx3M,SAAS,GAAG6nD,OAAO,CAAC,YAAY,WAAW,QAAQ,aAAa,aAAaupE,MAAM,CAACmmG,QAAQ,KAAK3vM,KAAK,UAAUyjM,WAAU,EAAGmM,kBAAkB,KAAKvsL,QAAQ,KAAKmkL,qBAAoB,EAAGqI,YAAW,EAAGC,4BAA4B,IAAI,IAAIC,GAAG,SAASniO,EAAEyzB,GAAG,OAAOj0B,KAAKipI,UAAUzoI,EAAEyzB,GAAGj0B,MAAMikN,EAAElG,OAAO4kB,GAAGjwM,UAAU,CAACu2G,UAAU,SAASzoI,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAKi0B,EAAE,SAASzzB,GAAG,IAAIyzB,GAAGzzB,EAAEA,GAAGgc,OAAOlX,OAAO,OAAOwK,KAAKtP,EAAEsP,MAAM,GAAG,OAAOmkB,EAAE0zL,SAAS1zL,EAAE0zL,UAAU,GAAG1zL,EAAE6kL,OAAO7kL,EAAE6kL,QAAQ,GAAGt4M,EAAEwnB,QAAQg6M,GAAGjf,EAAEj7K,OAAOi7K,EAAEviN,EAAEE,MAAMF,EAAEwnB,SAAS,IAAIxnB,EAAnK,CAAsKyzB,GAAG,IAAIpsB,EAAE8yN,GAAGb,eAAet5N,EAAEyzB,GAAGlY,EAAElU,GAAGA,EAAEy8M,OAAOx6E,EAAE/tH,GAAGA,EAAEvR,OAAO2jC,EAAEpyB,GAAGA,EAAErS,MAAMquC,EAAE/xB,GAAGi+L,EAAE3nI,MAAMvkC,EAAEn2C,IAAIiG,EAAEkwC,EAAEusK,OAAOvoM,EAAEg8B,EAAE3f,OAAOnE,EAAE8jB,EAAEruC,MAAMykC,EAAE4J,EAAEvtC,OAAOs/H,EAAE/xF,EAAEiR,YAAY8gF,EAAE37F,EAAE27F,EAAE,KAAK/xF,EAAE/vB,QAAQiM,EAAEjM,QAAQ+vB,EAAE6qL,iBAAgB,EAAG7qL,EAAE8/K,QAAQ,GAAG9/K,EAAEytK,MAAMztK,EAAEA,EAAEg6K,WAAWh6K,EAAE4qL,GAAGvvM,UAAU2kB,EAAE/xB,IAAI+xB,EAAEv7B,OAAOu3B,eAAegE,EAAE,OAAO,CAAC7lC,IAAI,WAAW,OAAO6lC,EAAE3f,OAAOtoB,MAAMuE,IAAI,SAAS7T,GAAGu3C,EAAE3f,OAAOtoB,KAAKtP,KAAKqH,GAAGkU,GAAGg8B,EAAEliB,aAAakiB,EAAEyiC,UAAUzvC,QAAQ/V,MAAM,sEAAsEa,WAAW,WAAW,IAAIr1B,EAAER,KAAK,OAAO46N,GAAGv5D,OAAO7gK,EAAE,cAAcyjN,EAAE4e,YAAYriO,EAAEA,EAAEwnB,QAAQ86M,kBAAkBtiO,EAAEuiO,aAAaviO,EAAEwnB,QAAQy6M,YAAYjiO,EAAEwiO,QAAO,GAAIxiO,EAAEyiO,cAAcrI,GAAGv5D,OAAO7gK,EAAE,aAAaA,GAAGkQ,MAAM,WAAW,OAAOuzM,EAAEK,OAAO5zM,MAAM1Q,MAAMA,MAAMkjO,KAAK,WAAW,OAAOld,EAAEI,gBAAgBpmN,MAAMA,MAAMgjO,OAAO,SAASxiO,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEjM,QAAQngB,EAAEosB,EAAEqwL,OAAOvoM,EAAEg8B,EAAEqiL,qBAAqBnmM,EAAE+0B,aAAa,KAAK8gF,EAAEvrH,KAAKukC,IAAI,EAAEvkC,KAAKs7B,MAAMoqK,EAAEkf,gBAAgBt7N,KAAKsmC,EAAE5vB,KAAKukC,IAAI,EAAEvkC,KAAKs7B,MAAM99B,EAAE+tH,EAAE/tH,EAAEkoM,EAAEmf,iBAAiBv7N,KAAK,IAAIosB,EAAEvqB,QAAQogI,GAAG71G,EAAEzpB,SAAS2jC,KAAKtmC,EAAE6B,MAAMuqB,EAAEvqB,MAAMogI,EAAEjiI,EAAE2C,OAAOypB,EAAEzpB,OAAO2jC,EAAEtmC,EAAE0D,MAAM7B,MAAMogI,EAAE,KAAKjiI,EAAE0D,MAAMf,OAAO2jC,EAAE,KAAK81K,EAAE4e,YAAY5uM,EAAE8jB,EAAE+qL,mBAAmBtiO,GAAG,CAAC,IAAIokB,EAAE,CAAClb,MAAMogI,EAAEt/H,OAAO2jC,GAAGysL,GAAGv5D,OAAOptI,EAAE,SAAS,CAACrP,IAAImzB,EAAEsrL,UAAUtrL,EAAEsrL,SAASpvM,EAAErP,GAAGqP,EAAEivM,OAAOjvM,EAAEumD,OAAO,CAACh9B,SAASzF,EAAE2qL,gCAAgCR,oBAAoB,WAAW,IAAI1hO,EAAER,KAAKgoB,QAAQiM,EAAEzzB,EAAE6mN,QAAQ,GAAGtvK,EAAEv3C,EAAE8vN,MAAMrM,EAAExG,KAAKxpL,EAAEuzL,MAAO,SAAShnN,EAAEu3C,GAAGv3C,EAAEwlB,KAAKxlB,EAAEwlB,GAAGo8M,GAAGnuM,EAAEuzL,MAAM,UAAUzvK,MAAOksK,EAAExG,KAAKxpL,EAAEyzL,MAAO,SAASlnN,EAAEu3C,GAAGv3C,EAAEwlB,KAAKxlB,EAAEwlB,GAAGo8M,GAAGnuM,EAAEyzL,MAAM,UAAU3vK,MAAOA,IAAIA,EAAE/xB,GAAG+xB,EAAE/xB,IAAI,UAAUm8M,oBAAoB,WAAW,IAAI3hO,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQ+vB,EAAEv3C,EAAE6mN,QAAQ,GAAGx/M,EAAE,GAAGkU,EAAES,OAAOC,KAAKs7B,GAAGtiC,OAAQ,SAASjV,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,IAAG,EAAGzzB,GAAI,IAAIyzB,EAAEozL,SAASx/M,EAAEA,EAAEmR,QAAQib,EAAEozL,OAAOG,OAAO,IAAI/9M,IAAK,SAASjJ,GAAG,MAAM,CAACwnB,QAAQxnB,EAAE8iO,MAAM,WAAWC,UAAU,aAActvM,EAAEozL,OAAOK,OAAO,IAAIj+M,IAAK,SAASjJ,GAAG,MAAM,CAACwnB,QAAQxnB,EAAE8iO,MAAM,SAASC,UAAU,YAAatvM,EAAEq8L,OAAOzoN,EAAEjE,KAAK,CAACokB,QAAQiM,EAAEq8L,MAAMgT,MAAM,eAAeE,WAAU,EAAGD,UAAU,cAActf,EAAExG,KAAK51M,EAAG,SAASosB,GAAG,IAAIpsB,EAAEosB,EAAEjM,QAAQ8hH,EAAEjiI,EAAEme,GAAGmoB,EAAE2zL,GAAGj6N,EAAEnH,KAAKuzB,EAAEqvM,OAAOjB,GAAGx6N,EAAEmC,YAAYq4N,GAAGpuM,EAAEsvM,aAAa17N,EAAEmC,SAASiqB,EAAEsvM,WAAWxnN,EAAE+tH,IAAG,EAAG,IAAIllH,EAAE,KAAK,GAAGklH,KAAK/xF,GAAGA,EAAE+xF,GAAGppI,OAAOytC,GAAGvpB,EAAEmzB,EAAE+xF,IAAI9hH,QAAQngB,EAAE+c,EAAEhjB,IAAIpB,EAAEoB,IAAIgjB,EAAE4gM,MAAMhlN,MAAM,CAAC,IAAIorI,EAAEyvF,GAAGG,oBAAoBrtL,GAAG,IAAIy9F,EAAE,OAAOhnH,EAAE,IAAIgnH,EAAE,CAAC5lH,GAAG8jH,EAAEppI,KAAKytC,EAAEnmB,QAAQngB,EAAEjG,IAAIpB,EAAEoB,IAAI4jN,MAAMhlN,IAAIu3C,EAAEnzB,EAAEoB,IAAIpB,EAAEA,EAAE6+M,oBAAoBxvM,EAAEuvM,YAAYhjO,EAAE8vN,MAAM1rM,KAAMq/L,EAAExG,KAAK1hM,EAAG,SAASvb,EAAEyzB,GAAGzzB,UAAUu3C,EAAE9jB,KAAMzzB,EAAE6mN,OAAOtvK,EAAEsjL,GAAGM,kBAAkB37N,OAAO0jO,yBAAyB,WAAW,IAAIljO,EAAEyzB,EAAE8jB,EAAE/3C,KAAK6H,EAAE,GAAGkU,EAAEg8B,EAAEjoC,KAAK63M,SAAS,IAAInnN,EAAE,EAAEyzB,EAAElY,EAAE5X,OAAO3D,EAAEyzB,EAAEzzB,IAAI,CAAC,IAAIspI,EAAE/tH,EAAEvb,GAAG2tC,EAAE4J,EAAE6vK,eAAepnN,GAAGokB,EAAEklH,EAAEppI,MAAMq3C,EAAE3f,OAAO13B,KAAK,GAAGytC,EAAEztC,MAAMytC,EAAEztC,OAAOkkB,IAAImzB,EAAE4rL,mBAAmBnjO,GAAG2tC,EAAE4J,EAAE6vK,eAAepnN,IAAI2tC,EAAEztC,KAAKkkB,EAAEupB,EAAEiJ,MAAM0yF,EAAE1yF,OAAO,EAAEjJ,EAAExkC,MAAMnJ,EAAE2tC,EAAE4jL,WAAW5jL,EAAE4jL,WAAW3K,YAAY5mN,GAAG2tC,EAAE4jL,WAAW9K,iBAAiB,CAAC,IAAIr7E,EAAE6pF,GAAGtnL,EAAEztC,MAAM,QAAG,IAASkrI,EAAE,MAAM,IAAIv3G,MAAM,IAAI8Z,EAAEztC,KAAK,0BAA0BytC,EAAE4jL,WAAW,IAAInmF,EAAE7zF,EAAEv3C,GAAGqH,EAAEjE,KAAKuqC,EAAE4jL,aAAa,OAAOlqN,GAAG+7N,cAAc,WAAW,IAAIpjO,EAAER,KAAKikN,EAAExG,KAAKj9M,EAAEsP,KAAK63M,SAAU,SAAS1zL,EAAE8jB,GAAGv3C,EAAEonN,eAAe7vK,GAAGg6K,WAAW/0F,SAAUx8H,IAAIw8H,MAAM,WAAWh9H,KAAK4jO,gBAAgB5jO,KAAKw0L,QAAQ3+J,cAAc2kD,OAAO,SAASh6E,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE7H,KAAK,GAAGQ,GAAG,iBAAiBA,IAAIA,EAAE,CAACg9C,SAASh9C,EAAEqjO,KAAKvqN,UAAU,KAAK2oN,GAAGp6N,GAAG+yN,GAAGQ,YAAYvzN,IAAG,IAAK+yN,GAAGv5D,OAAOx5J,EAAE,gBAAgB,CAACA,EAAE2sL,QAAQvgL,MAAMpM,EAAEiI,KAAK,IAAIiM,EAAElU,EAAE67N,2BAA2B,IAAIzvM,EAAE,EAAE8jB,EAAElwC,EAAEiI,KAAK63M,SAASxjN,OAAO8vB,EAAE8jB,EAAE9jB,IAAIpsB,EAAE+/M,eAAe3zL,GAAG89L,WAAWpJ,wBAAwB9gN,EAAEi8N,eAAej8N,EAAEmgB,QAAQ2b,WAAW97B,EAAEmgB,QAAQ2b,UAAU6Z,UAAUymK,EAAExG,KAAK1hM,EAAG,SAASvb,GAAGA,EAAEw8H,UAAWn1H,EAAEk8N,iBAAiBl8N,EAAE2sL,QAAQ3+J,aAAahuB,EAAEm8N,WAAW,GAAGpJ,GAAGv5D,OAAOx5J,EAAE,eAAeA,EAAEgwN,QAAQh8M,KAAKymN,GAAG,IAAI,SAASz6N,EAAE+6N,gBAAgB/6N,EAAEo8N,iBAAiB,CAACzmL,SAASh9C,EAAEg9C,SAAS6mK,OAAO7jN,EAAE6jN,OAAOwf,KAAKrjO,EAAEqjO,MAAMh8N,EAAEqrC,OAAO1yC,KAAKsjO,aAAa,WAAW,IAAItjO,EAAER,MAAK,IAAK46N,GAAGv5D,OAAO7gK,EAAE,kBAAkBk3N,GAAGl9I,OAAOx6E,KAAKA,KAAK0J,MAAM1J,KAAKwK,QAAQhK,EAAEq3N,QAAQ,GAAG5T,EAAExG,KAAKj9M,EAAEo3N,MAAO,SAAS3jM,GAAGA,EAAE60L,YAAY70L,EAAE60L,aAAatoN,EAAEq3N,QAAQj0N,KAAK+zC,MAAMn3C,EAAEq3N,QAAQ5jM,EAAE4jM,YAAar3N,GAAGA,EAAEq3N,QAAQxkN,QAAS,SAAS7S,EAAEyzB,GAAGzzB,EAAE0jO,KAAKjwM,IAAK2mM,GAAGv5D,OAAO7gK,EAAE,oBAAoBo6N,GAAGv5D,OAAO7gK,EAAE,iBAAiBujO,eAAe,WAAW,IAAG,IAAKnJ,GAAGv5D,OAAOrhK,KAAK,wBAAwB,CAAC,IAAI,IAAIQ,EAAE,EAAEyzB,EAAEj0B,KAAK8P,KAAK63M,SAASxjN,OAAO3D,EAAEyzB,IAAIzzB,EAAER,KAAKmkO,cAAc3jO,GAAGo6N,GAAGv5D,OAAOrhK,KAAK,yBAAyBmkO,cAAc,SAAS3jO,GAAG,IAAIyzB,EAAEj0B,KAAK4nN,eAAepnN,GAAGu3C,EAAE,CAAC7D,KAAKjgB,EAAEtqB,MAAMnJ,IAAG,IAAKo6N,GAAGv5D,OAAOrhK,KAAK,sBAAsB,CAAC+3C,MAAM9jB,EAAE89L,WAAW7J,UAAU0S,GAAGv5D,OAAOrhK,KAAK,qBAAqB,CAAC+3C,MAAM7E,OAAO,SAAS1yC,GAAG,IAAIyzB,EAAEj0B,KAAKQ,GAAG,iBAAiBA,IAAIA,EAAE,CAACg9C,SAASh9C,EAAEqjO,KAAKvqN,UAAU,KAAK,IAAIy+B,EAAE9jB,EAAEjM,QAAQ2b,UAAU97B,EAAEi6N,GAAGthO,EAAEg9C,SAASzF,GAAGA,EAAEyF,UAAUzhC,EAAEvb,EAAEqjO,KAAK,IAAG,IAAKjJ,GAAGv5D,OAAOptI,EAAE,gBAAgB,CAAC,IAAI61G,EAAE,SAAStpI,GAAGo6N,GAAGv5D,OAAOptI,EAAE,eAAegwL,EAAEhxL,SAAS8kB,GAAGA,EAAEguK,WAAW,CAACvlN,GAAGyzB,IAAI,GAAG8jB,GAAGlwC,EAAE,CAAC,IAAIsmC,EAAE,IAAI03K,EAAE,CAACH,SAAS79M,EAAE,MAAMw8M,OAAO7jN,EAAE6jN,QAAQtsK,EAAEssK,OAAOnxK,OAAO,SAAS1yC,EAAEyzB,GAAG,IAAiCpsB,EAAEosB,EAAEwxL,YAAY1pM,EAAElU,EAAEosB,EAAEyxL,SAASllN,EAAEwoN,MAAKjxK,EAAjEksK,EAAEI,OAAO90C,QAAQt7I,EAAEowL,SAAgDtoM,GAAGA,EAAElU,IAAI89M,oBAAoB5tK,EAAE+tK,WAAWF,oBAAoB97E,IAAIk8E,EAAEE,aAAajyL,EAAEka,EAAEtmC,EAAEkU,QAAQkY,EAAE+0L,OAAOl/E,EAAE,IAAI+7E,EAAE,CAACH,SAAS,EAAEF,MAAMvxL,KAAK,OAAOA,IAAI+0L,KAAK,SAASxoN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE7H,KAAK,GAAG6H,EAAE6I,QAAQuzM,EAAE3G,cAAc98M,KAAKA,EAAE,GAAGqH,EAAEy9M,WAAW9kN,KAAKqH,EAAE6B,OAAO,GAAG7B,EAAE2C,QAAQ,KAAI,IAAKowN,GAAGv5D,OAAOx5J,EAAE,aAAa,CAACrH,IAAI,CAAC,IAAIu3C,EAAElwC,EAAEgwN,QAAQ5jM,EAAE,EAAEA,EAAE8jB,EAAE5zC,QAAQ4zC,EAAE9jB,GAAGsuL,GAAG,IAAItuL,EAAE8jB,EAAE9jB,GAAG+0L,KAAKnhN,EAAEgpN,WAAW,IAAIhpN,EAAEu8N,aAAa5jO,GAAGyzB,EAAE8jB,EAAE5zC,SAAS8vB,EAAE8jB,EAAE9jB,GAAG+0L,KAAKnhN,EAAEgpN,WAAWhpN,EAAEw8N,aAAa7jO,GAAGo6N,GAAGv5D,OAAOx5J,EAAE,YAAY,CAACrH,MAAM8kN,WAAW,SAAS9kN,GAAG,IAAI,IAAIyzB,EAAE,EAAE8jB,GAAG/3C,KAAK8P,KAAK63M,UAAU,IAAIxjN,OAAO8vB,EAAE8jB,IAAI9jB,EAAEj0B,KAAKmyN,iBAAiBl+L,IAAIj0B,KAAK4nN,eAAe3zL,GAAG89L,WAAWzM,WAAW9kN,GAAGR,KAAKw0L,QAAQ8wB,WAAW9kN,IAAI8jO,uBAAuB,SAAS9jO,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE,GAAG,IAAIosB,EAAE,EAAE8jB,GAAG/3C,KAAK8P,KAAK63M,UAAU,IAAIxjN,OAAO8vB,EAAE8jB,IAAI9jB,EAAEzzB,IAAIR,KAAKmyN,iBAAiBl+L,IAAIpsB,EAAEjE,KAAK5D,KAAK4nN,eAAe3zL,IAAI,OAAOpsB,EAAEgU,KAAKymN,GAAG,QAAQ,UAAUz6N,GAAGisN,8BAA8B,WAAW,OAAO9zN,KAAKskO,wBAAuB,IAAKF,aAAa,SAAS5jO,GAAG,IAAIyzB,EAAE8jB,EAAE,IAAG,IAAK6iL,GAAGv5D,OAAOrhK,KAAK,qBAAqB,CAACQ,IAAI,CAAC,IAAIu3C,GAAG9jB,EAAEj0B,KAAK8zN,iCAAiC3vN,OAAO,EAAE4zC,GAAG,IAAIA,EAAE/3C,KAAKukO,YAAYtwM,EAAE8jB,GAAGv3C,GAAGo6N,GAAGv5D,OAAOrhK,KAAK,oBAAoB,CAACQ,MAAM+jO,YAAY,SAAS/jO,EAAEyzB,GAAG,IAAI8jB,EAAE,CAAC7D,KAAK1zC,EAAEmJ,MAAMnJ,EAAEmJ,MAAM66N,YAAYvwM,IAAG,IAAK2mM,GAAGv5D,OAAOrhK,KAAK,oBAAoB,CAAC+3C,MAAMv3C,EAAEuxN,WAAW/I,KAAK/0L,GAAG2mM,GAAGv5D,OAAOrhK,KAAK,mBAAmB,CAAC+3C,MAAMssL,aAAa,SAAS7jO,GAAG,IAAIyzB,EAAEj0B,KAAKw0L,QAAQz8I,EAAE,CAACy8I,QAAQvgK,EAAEuwM,YAAYhkO,IAAG,IAAKo6N,GAAGv5D,OAAOrhK,KAAK,oBAAoB,CAAC+3C,MAAM9jB,EAAE+0L,OAAO4R,GAAGv5D,OAAOrhK,KAAK,mBAAmB,CAAC+3C,MAAM0sL,kBAAkB,SAASjkO,GAAG,OAAO81N,GAAGC,MAAMC,OAAOx2N,KAAKQ,IAAIkkO,mBAAmB,SAASlkO,GAAG,OAAO81N,GAAGC,MAAMlhM,MAAMr1B,KAAKQ,EAAE,CAAC61N,WAAU,KAAMsO,mBAAmB,SAASnkO,GAAG,OAAO81N,GAAGC,MAAM,UAAUv2N,KAAKQ,EAAE,CAAC61N,WAAU,KAAMuL,0BAA0B,SAASphO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEyuN,GAAGC,MAAMtiM,GAAG,MAAM,mBAAmBpsB,EAAEA,EAAE7H,KAAKQ,EAAEu3C,GAAG,IAAI6sL,kBAAkB,SAASpkO,GAAG,OAAO81N,GAAGC,MAAM/N,QAAQxoN,KAAKQ,EAAE,CAAC61N,WAAU,KAAMzO,eAAe,SAASpnN,GAAG,IAAIyzB,EAAEj0B,KAAK8P,KAAK63M,SAASnnN,GAAGyzB,EAAE4wM,QAAQ5wM,EAAE4wM,MAAM,IAAI,IAAI9sL,EAAE9jB,EAAE4wM,MAAM7kO,KAAKgmB,IAAI,OAAO+xB,IAAIA,EAAE9jB,EAAE4wM,MAAM7kO,KAAKgmB,IAAI,CAACtlB,KAAK,KAAKoP,KAAK,GAAG04M,QAAQ,KAAKuJ,WAAW,KAAKv6G,OAAO,KAAK+vG,QAAQ,KAAKE,QAAQ,KAAKrwK,MAAMnjB,EAAEmjB,OAAO,EAAEztC,MAAMnJ,IAAIu3C,GAAGg9K,uBAAuB,WAAW,IAAI,IAAIv0N,EAAE,EAAEyzB,EAAE,EAAE8jB,EAAE/3C,KAAK8P,KAAK63M,SAASxjN,OAAO8vB,EAAE8jB,IAAI9jB,EAAEj0B,KAAKmyN,iBAAiBl+L,IAAIzzB,IAAI,OAAOA,GAAG2xN,iBAAiB,SAAS3xN,GAAG,IAAIyzB,EAAEj0B,KAAK4nN,eAAepnN,GAAG,MAAM,kBAAkByzB,EAAEujF,QAAQvjF,EAAEujF,QAAQx3G,KAAK8P,KAAK63M,SAASnnN,GAAGg3G,QAAQstH,eAAe,WAAW,OAAO9kO,KAAKgoB,QAAQ2pM,eAAe3xN,OAAO2jO,mBAAmB,SAASnjO,GAAG,IAAIyzB,EAAEj0B,KAAKgmB,GAAG+xB,EAAE/3C,KAAK8P,KAAK63M,SAASnnN,GAAGqH,EAAEkwC,EAAE8sL,OAAO9sL,EAAE8sL,MAAM5wM,GAAGpsB,IAAIA,EAAEkqN,WAAW7wM,iBAAiB62B,EAAE8sL,MAAM5wM,KAAK/S,QAAQ,WAAW,IAAI1gB,EAAEyzB,EAAE8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAEusK,OAAO,IAAIvsK,EAAEmrL,OAAO1iO,EAAE,EAAEyzB,EAAE8jB,EAAEjoC,KAAK63M,SAASxjN,OAAO3D,EAAEyzB,IAAIzzB,EAAEu3C,EAAE4rL,mBAAmBnjO,GAAGqH,IAAIkwC,EAAE62I,eAAeq1B,EAAEK,OAAO5zM,MAAMqnC,GAAG4iL,GAAGV,eAAeliL,EAAEn2C,KAAKm2C,EAAEusK,OAAO,KAAKvsK,EAAEn2C,IAAI,MAAMg5N,GAAGv5D,OAAOtpH,EAAE,kBAAkB4qL,GAAGvvM,UAAU2kB,EAAE/xB,KAAK++M,cAAc,WAAW,OAAO/kO,KAAKskN,OAAO0gB,UAAUrtL,MAAM33C,KAAKskN,OAAOhrM,YAAY2pN,YAAY,WAAW,IAAIziO,EAAER,KAAKQ,EAAEg0L,QAAQ,IAAIgrC,GAAG,CAACpX,OAAO5nN,EAAEykO,eAAezkO,EAAEyT,MAAMzT,EAAEsP,KAAKqlL,SAAS30L,EAAEwnB,QAAQgpM,UAAUxwN,IAAIuiO,WAAW,WAAW,IAAIviO,EAAER,KAAKi0B,EAAEzzB,EAAEigC,WAAW,GAAGsX,EAAE,WAAWv3C,EAAE0kO,aAAavtL,MAAMn3C,EAAE8Y,YAAY2qM,EAAExG,KAAKj9M,EAAEwnB,QAAQ6qC,OAAQ,SAAShrD,GAAG8yN,GAAGrvM,iBAAiB9qB,EAAEqH,EAAEkwC,GAAG9jB,EAAEpsB,GAAGkwC,IAAKv3C,EAAEwnB,QAAQy6M,aAAa1qL,EAAE,WAAWv3C,EAAEwiO,UAAUrI,GAAGrvM,iBAAiB9qB,EAAE,SAASu3C,GAAG9jB,EAAE+uM,OAAOjrL,IAAI62I,aAAa,WAAW,IAAIpuL,EAAER,KAAKi0B,EAAEzzB,EAAEigC,WAAWxM,WAAWzzB,EAAEigC,WAAWwjL,EAAExG,KAAKxpL,EAAG,SAASA,EAAE8jB,GAAG4iL,GAAGhvM,oBAAoBnrB,EAAEu3C,EAAE9jB,OAAQkxM,iBAAiB,SAAS3kO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAE4J,EAAE,MAAM,SAAS,IAAIh8B,EAAE,EAAE+tH,EAAEtpI,EAAE2D,OAAO4X,EAAE+tH,IAAI/tH,GAAGlU,EAAErH,EAAEub,KAAK/b,KAAK4nN,eAAe//M,EAAEwgN,eAAe0J,WAAW5jL,EAAE,cAActmC,GAAG,YAAYosB,GAAGj0B,KAAK4nN,eAAepnN,EAAE,GAAG6nN,eAAe0J,WAAW,IAAI5jL,EAAE,wBAAwB+2L,aAAa,SAAS1kO,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEugK,QAAQ,IAAG,IAAKomC,GAAGv5D,OAAOptI,EAAE,cAAc,CAACzzB,IAAI,CAACyzB,EAAE2uM,iBAAgB,EAAG3uM,EAAEgwM,iBAAiB,KAAK,IAAIp8N,EAAEosB,EAAE0tM,YAAYnhO,GAAGu3C,IAAIlwC,EAAEkwC,EAAEstK,OAAOttK,EAAE4pL,YAAYnhO,GAAGqH,EAAEkwC,EAAE4pL,YAAYnhO,IAAIo6N,GAAGv5D,OAAOptI,EAAE,aAAa,CAACzzB,IAAI,IAAIub,EAAEkY,EAAEgwM,iBAAiB,OAAOloN,EAAEkY,EAAEif,OAAOn3B,GAAGlU,IAAIosB,EAAEkyL,YAAYlyL,EAAEivM,OAAOjvM,EAAEif,OAAO,CAACsK,SAASvpB,EAAEjM,QAAQo0G,MAAMomG,kBAAkBqB,MAAK,KAAM5vM,EAAE2uM,iBAAgB,EAAG3uM,EAAEgwM,iBAAiB,KAAKhwM,IAAI0tM,YAAY,SAASnhO,GAAG,IAAIyzB,EAAE8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAE/vB,SAAS,GAAGjM,EAAElU,EAAEu0H,MAAM,OAAOrkF,EAAEisL,WAAWjsL,EAAEisL,YAAY,GAAuBjsL,EAAEj8B,OAAtB,aAAatb,EAAEE,KAAc,GAAYq3C,EAAE6pL,0BAA0BphO,EAAEub,EAAE6W,KAAK7W,GAAGkoM,EAAEhxL,SAASprB,EAAE06N,SAAS16N,EAAEu0H,MAAMmmG,QAAQ,CAAC/hO,EAAEu1N,OAAOh+K,EAAEj8B,QAAQi8B,GAAG,YAAYv3C,EAAEE,MAAM,UAAUF,EAAEE,MAAMmH,EAAEouC,SAASpuC,EAAEouC,QAAQ/gB,KAAK6iB,EAAEv3C,EAAEu1N,OAAOh+K,EAAEj8B,QAAQi8B,EAAEisL,WAAW7/N,QAAQ4zC,EAAEotL,iBAAiBptL,EAAEisL,WAAWjoN,EAAE6W,MAAK,GAAImlB,EAAEj8B,OAAO3X,QAAQ4X,EAAE6W,MAAMmlB,EAAEotL,iBAAiBptL,EAAEj8B,OAAOC,EAAE6W,MAAK,GAAIqB,GAAGgwL,EAAEvG,YAAY3lK,EAAEj8B,OAAOi8B,EAAEisL,YAAYjsL,EAAEisL,WAAWjsL,EAAEj8B,OAAOmY,KAAK0uM,GAAGvvM,UAAU,GAAG,IAAIu5C,GAAGg2J,GAAiE,SAASyC,KAAK,MAAM,IAAI/wM,MAAM,6GAA6G,SAASgxM,GAAG7kO,GAAGR,KAAKgoB,QAAQxnB,GAAG,GAAxOmiO,GAAG2C,WAAW3C,GAAGA,GAAG4C,MAAM,GAAGthB,EAAEuhB,YAAYxD,GAAG/d,EAAEwhB,WAAW1D,GAAgL9d,EAAElG,OAAOsnB,GAAG3yM,UAAU,CAAC+a,QAAQ23L,GAAGjrM,MAAMirM,GAAGriN,OAAOqiN,GAAGviO,IAAIuiO,GAAG7/N,KAAK6/N,GAAGr6J,QAAQq6J,GAAGM,MAAMN,GAAGO,QAAQ,SAASnlO,GAAG,OAAOA,KAAK6kO,GAAGO,SAAS,SAASplO,GAAGyjN,EAAElG,OAAOsnB,GAAG3yM,UAAUlyB,IAAI,IAAIqlO,GAAG,CAACC,MAAMT,IAAI9hK,GAAG,CAACwiK,WAAW,CAACjyN,OAAO,SAAStT,GAAG,OAAOyjN,EAAEjuM,QAAQxV,GAAGA,EAAE,GAAGA,GAAGg+M,OAAO,SAASh+M,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkwC,EAAE5zC,OAAO,EAAE4zC,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGx5B,KAAKqiC,IAAI/4C,GAAG,GAAGrH,IAAI+d,KAAKs7B,MAAMr5C,KAAKqH,EAAErH,EAAE+d,KAAKs7B,MAAMr5C,IAAI,IAAIub,EAAEkoM,EAAEH,MAAMvlM,KAAKqiC,IAAI/4C,IAAIiiI,EAAE,GAAG,GAAG,IAAItpI,EAAE,GAAG+d,KAAKukC,IAAIvkC,KAAKqiC,IAAI7I,EAAE,IAAIx5B,KAAKqiC,IAAI7I,EAAEA,EAAE5zC,OAAO,KAAK,KAAK,CAAC,IAAIgqC,EAAE81K,EAAEH,MAAMvlM,KAAKqiC,IAAIpgD,IAAIokB,EAAErG,KAAKs7B,MAAM1L,GAAG5vB,KAAKs7B,MAAM99B,GAAG6I,EAAErG,KAAKukC,IAAIvkC,KAAKG,IAAIkG,EAAE,IAAI,GAAGklH,EAAEtpI,EAAEwlO,cAAcphN,OAAO,CAAC,IAAIgnH,GAAG,EAAErtH,KAAKs7B,MAAM99B,GAAG6vH,EAAErtH,KAAKukC,IAAIvkC,KAAKG,IAAIktH,EAAE,IAAI,GAAG9B,EAAEtpI,EAAEm8H,QAAQiP,QAAQ9B,EAAE,IAAI,OAAOA,GAAGm8F,YAAY,SAASzlO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAErH,EAAE+d,KAAKq7L,IAAI,GAAGr7L,KAAKs7B,MAAMoqK,EAAEH,MAAMtjN,KAAK,OAAO,IAAIA,EAAE,IAAI,IAAIqH,GAAG,IAAIA,GAAG,IAAIA,GAAG,IAAIosB,GAAGA,IAAI8jB,EAAE5zC,OAAO,EAAE3D,EAAEwlO,gBAAgB,MAAME,GAAGjiB,EAAEjuM,QAAQmwN,GAAGliB,EAAE3G,cAAc8oB,GAAGniB,EAAE1G,eAAe8oB,GAAGpiB,EAAEzG,sBAAsB,SAAS8oB,GAAG9lO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAEvb,EAAEkwN,WAAWvsN,OAAO2lI,EAAEvrH,KAAKG,IAAIuV,EAAElY,EAAE,GAAGoyB,EAAE3tC,EAAEmwN,gBAAgB7mF,GAAGllH,EAAEpkB,EAAE2vN,YAAYvkF,EAAEprI,EAAE4vN,UAAU,KAAKr4K,IAAIlwC,EAAE,IAAIkU,EAAEwC,KAAKukC,IAAI3U,EAAEvpB,EAAEgnH,EAAEz9F,GAAG,IAAIla,GAAGzzB,EAAEmwN,gBAAgB,GAAGxiL,GAAG,GAAGA,EAAE3tC,EAAEmwN,gBAAgB7mF,EAAE,IAAI,GAAG37F,GAAG27F,EAAE71G,EAAEpsB,GAAGA,GAAG+c,EAAE,MAAMupB,EAAEy9F,EAAE,OAAO,OAAOz9F,EAAitB,SAASn/B,GAAGxO,GAAG,OAAOA,EAAE+lO,UAAU/lO,EAAEgmO,eAAe,EAAE,SAASC,GAAGjmO,GAAG,IAAIyzB,EAAE8jB,EAAE,OAAOv3C,EAAEuS,SAASkhB,EAAEgwL,EAAEj8L,QAAQo7L,WAAW5iN,GAAGu3C,EAAEksK,EAAEj8L,QAAQm7L,UAAU3iN,EAAEg0E,SAASvgD,EAAEuvL,WAAWzrK,EAAEvtC,QAAQ,EAAE,SAASk8N,GAAGlmO,EAAEyzB,GAAG,OAAOgwL,EAAElG,OAAOkG,EAAEj8L,QAAQo7L,WAAW,CAACG,WAAW6iB,GAAGnyM,EAAEsvL,WAAW/iN,EAAE+iN,YAAYF,SAAS+iB,GAAGnyM,EAAEovL,SAAS7iN,EAAE6iN,UAAUI,UAAU2iB,GAAGnyM,EAAEwvL,UAAUjjN,EAAEijN,WAAWD,WAAW4iB,GAAGnyM,EAAEuvL,WAAWhjN,EAAEgjN,cAAc,CAAC3tJ,MAAMouJ,EAAEj8L,QAAQxjB,QAAQ,CAACyvB,EAAE0yM,UAAUnmO,EAAEmmO,UAAU5jB,EAAEj7K,OAAO26K,qBAAqB,SAASmkB,GAAGpmO,GAAG,IAAIyzB,EAAEyyM,GAAGlmO,EAAEA,EAAEqmO,OAAO,MAAM,CAACA,MAAM5yM,EAAE6yM,MAAMtmO,EAAEsmO,MAAMp2F,QAAQg2F,GAAGlmO,EAAEA,EAAEsmO,OAAO7yM,GAAG,SAAS8yM,GAAGvmO,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE,GAAG,IAAIg8B,EAAE,EAAElwC,EAAErH,EAAE2D,OAAO4zC,EAAElwC,IAAIkwC,OAAE,KAAU9jB,EAAEzzB,EAAEu3C,IAAIwwK,QAAQxsM,EAAEnY,KAAKqwB,GAAG,OAAOlY,EAAE,SAASirN,GAAGxmO,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAEw6F,GAAGruL,EAAE,GAAGuoI,EAAE/hK,KAAKG,IAAI0nN,GAAGv+N,EAAErH,EAAE2D,QAAQ3D,EAAE2D,QAAQ6T,EAAE,EAAE,IAAIic,EAAE1V,KAAKC,KAAKyV,GAAGpsB,IAAIosB,GAAGlY,EAAElU,EAAEkwC,GAAGx5B,KAAKs7B,MAAM99B,EAAEkY,IAAIrP,EAAEgnH,EAAEhnH,EAAE,GAAG5M,IAAI4M,EAAErG,KAAK06B,MAAM2yF,EAAE5zH,EAAEic,GAAG,IAAI61G,EAAEvrH,KAAKukC,IAAI8oF,EAAE,GAAG9B,EAAEw2C,EAAEx2C,IAAI37F,EAAE3tC,EAAEspI,GAAGA,IAAIllH,GAAGupB,EAAEo6K,OAAOz+E,EAAE9xH,IAAI4M,EAAErG,KAAK06B,MAAM2yF,EAAE5zH,EAAEic,WAAWka,EAAE9Y,MAAM0tL,EAAEP,KAAK,QAAQ,CAACzvM,SAAQ,EAAG/I,SAAS,OAAOa,QAAO,EAAG6jN,UAAU,CAAC37M,SAAQ,EAAG8iD,MAAM,kBAAkB41J,UAAU,EAAEwb,YAAW,EAAGC,iBAAgB,EAAGX,WAAU,EAAGC,eAAe,GAAGW,cAAc,EAAEC,cAAc,mBAAmBC,mBAAmB,GAAGC,yBAAyB,EAAE3Y,iBAAgB,EAAG3C,WAAW,GAAGC,iBAAiB,GAAGsb,WAAW,CAACx0N,SAAQ,EAAGy0N,YAAY,GAAGhzJ,QAAQ,CAACzoE,IAAI,EAAEC,OAAO,IAAIknN,MAAM,CAACsB,aAAY,EAAGiT,YAAY,EAAEC,YAAY,GAAGC,QAAO,EAAGnzJ,QAAQ,EAAE3qE,SAAQ,EAAGkJ,SAAQ,EAAG60N,UAAS,EAAGC,gBAAgB,EAAEC,YAAY,EAAE70M,SAASswC,GAAGwiK,WAAWjyN,OAAO+yN,MAAM,GAAGC,MAAM,MAAM,IAAIiB,GAAGxiB,EAAExH,OAAO,CAACiqB,cAAc,EAAE10J,WAAW,WAAW,MAAM,CAACrnE,KAAKjM,KAAK40E,aAAa,EAAE7oE,IAAI/L,KAAK80E,YAAY,EAAE5oE,MAAMlM,KAAK60E,cAAc,EAAE7oE,OAAOhM,KAAK+0E,eAAe,IAAI27I,SAAS,WAAW,OAAO1wN,KAAKioO,QAAQC,WAAW,WAAW,IAAI1nO,EAAER,KAAKwlN,MAAM11M,KAAK,OAAO9P,KAAKgoB,QAAQ8wL,SAAS94M,KAAKq2E,eAAe71E,EAAE2nO,QAAQ3nO,EAAE4nO,UAAU5nO,EAAEs4M,QAAQ,IAAI2qB,kBAAkB,aAAa4E,aAAa,WAAWpkB,EAAEhxL,SAASjzB,KAAKgoB,QAAQqgN,aAAa,CAACroO,QAAQw6E,OAAO,SAASh6E,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE5rI,KAAKsgL,EAAE10C,EAAE5jH,QAAQkrM,MAAMl7M,EAAEsoK,EAAEgoD,WAAW,GAAG18F,EAAEy8F,eAAez8F,EAAE1qG,SAAS1gC,EAAEorI,EAAE3jG,UAAUhU,EAAE23G,EAAE28F,QAAQtkB,EAAElG,OAAO,CAAC9xM,KAAK,EAAEC,MAAM,EAAEH,IAAI,EAAEC,OAAO,GAAG+rC,GAAG6zF,EAAEq8F,OAAO,KAAKr8F,EAAEsnF,MAAM,KAAKtnF,EAAE48F,YAAY,KAAK58F,EAAE68F,eAAe,EAAE78F,EAAE88F,kBAAkB,EAAE98F,EAAE+8F,iBAAiB/8F,EAAE+8F,kBAAkB,GAAG/8F,EAAEg9F,eAAe,KAAKh9F,EAAEi9F,YAAY,KAAKj9F,EAAEk9F,sBAAsBl9F,EAAEm9F,gBAAgBn9F,EAAEo9F,qBAAqBp9F,EAAEq9F,mBAAmBr9F,EAAEs9F,sBAAsBt9F,EAAEu9F,kBAAkBv9F,EAAEw9F,mBAAmBj7L,EAAEy9F,EAAEy9F,cAAc,MAAMl7L,EAAEy9F,EAAE09F,gBAAgBn7L,IAAIA,KAAKA,EAAEhqC,SAASynI,EAAEsnF,MAAM,IAAI/kL,EAAE,GAAGtmC,EAAE,EAAEkU,EAAE6vH,EAAEsnF,MAAM/uN,OAAO0D,EAAEkU,IAAIlU,EAAEsmC,EAAEvqC,KAAK,CAACrC,MAAMqqI,EAAEsnF,MAAMrrN,GAAGi/N,OAAM,IAAK,OAAOl7F,EAAEq8F,OAAO95L,EAAe27F,EAAE8B,EAAE29F,uBAAjB3kN,EAAE5M,EAAEm2B,EAAEhqC,QAAmC,SAAS3D,EAAEyzB,GAAG,IAAI,IAAI8jB,EAAE,GAAGlwC,EAAErH,EAAE2D,OAAO8vB,EAAElY,EAAE,EAAE+tH,EAAEtpI,EAAE2D,OAAO4X,EAAE+tH,EAAE/tH,GAAGlU,EAAEkwC,EAAEn0C,KAAKpD,EAAE+d,KAAKs7B,MAAM99B,KAAK,OAAOg8B,EAAhG,CAAmG5J,EAAEn2B,GAAGm2B,GAAGy9F,EAAEk9E,aAAal9E,EAAE49F,8BAA8B59F,EAAE69F,wBAAwB79F,EAAE89F,6BAA6B99F,EAAE+9F,YAAY/9F,EAAEg+F,MAAMh+F,EAAEi+F,WAAWj+F,EAAEk+F,aAAaxpD,EAAEvtK,UAAUutK,EAAEsnD,UAAU,SAAStnD,EAAE/5J,QAAQqlH,EAAEm+F,UAAU57L,GAAGA,EAAEvpB,IAAIklH,EAAE8B,EAAE29F,sBAAsB39F,EAAEk+F,eAAel+F,EAAEsnF,MAAMppF,EAAE8B,EAAEo+F,cAAcp+F,EAAEq+F,SAASnhB,WAAW,WAAW,IAAItoN,EAAEyzB,EAAE8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAE/vB,QAAQkrM,MAAMrpN,QAAQkuC,EAAEs+B,gBAAgB71E,EAAEu3C,EAAE9rC,KAAKgoB,EAAE8jB,EAAE7rC,QAAQ1L,EAAEu3C,EAAEhsC,IAAIkoB,EAAE8jB,EAAE/rC,OAAOnE,GAAGA,GAAGkwC,EAAEo4K,YAAY3vN,EAAEu3C,EAAEq4K,UAAUn8L,EAAE8jB,EAAEmyL,eAAeriO,EAAEkwC,EAAE04K,QAAQx8L,EAAEzzB,GAAGwpO,YAAY,WAAW/lB,EAAEhxL,SAASjzB,KAAKgoB,QAAQgiN,YAAY,CAAChqO,QAAQ8oO,oBAAoB,WAAW7kB,EAAEhxL,SAASjzB,KAAKgoB,QAAQ8gN,oBAAoB,CAAC9oO,QAAQ+oO,cAAc,WAAW,IAAIvoO,EAAER,KAAKQ,EAAE61E,gBAAgB71E,EAAEkJ,MAAMlJ,EAAE0gC,SAAS1gC,EAAEyL,KAAK,EAAEzL,EAAE0L,MAAM1L,EAAEkJ,QAAQlJ,EAAEgK,OAAOhK,EAAEynC,UAAUznC,EAAEuL,IAAI,EAAEvL,EAAEwL,OAAOxL,EAAEgK,QAAQhK,EAAEo0E,YAAY,EAAEp0E,EAAEs0E,WAAW,EAAEt0E,EAAEq0E,aAAa,EAAEr0E,EAAEu0E,cAAc,GAAGi0J,mBAAmB,WAAW/kB,EAAEhxL,SAASjzB,KAAKgoB,QAAQghN,mBAAmB,CAAChpO,QAAQipO,iBAAiB,WAAWhlB,EAAEhxL,SAASjzB,KAAKgoB,QAAQihN,iBAAiB,CAACjpO,QAAQkpO,oBAAoBjlB,EAAEvvF,KAAKy0G,gBAAgB,WAAWllB,EAAEhxL,SAASjzB,KAAKgoB,QAAQmhN,gBAAgB,CAACnpO,QAAQopO,iBAAiB,WAAWnlB,EAAEhxL,SAASjzB,KAAKgoB,QAAQohN,iBAAiB,CAACppO,QAAQqpO,WAAWplB,EAAEvvF,KAAK40G,gBAAgB,SAAS9oO,GAAG,IAAIyzB,EAAEj0B,KAAK,OAAOkmO,GAAG1lO,IAAIA,EAAE2D,OAAO8/M,EAAEhxL,SAASgB,EAAEjM,QAAQshN,gBAAgB,CAACr1M,EAAEzzB,KAAKyzB,EAAEi/L,MAAMjP,EAAEhxL,SAASgB,EAAEjM,QAAQshN,gBAAgB,CAACr1M,EAAEA,EAAEi/L,SAASj/L,EAAEi/L,MAAM1yN,IAAI2pO,4BAA4B,WAAWlmB,EAAEhxL,SAASjzB,KAAKgoB,QAAQmiN,4BAA4B,CAACnqO,QAAQoqO,qBAAqB,WAAW,IAAI5pO,EAAER,KAAKgoB,QAAQkrM,MAAMlzN,KAAKkzN,MAAMlzN,KAAKkzN,MAAMzpN,IAAIjJ,EAAE6pO,cAAc7pO,EAAEyyB,SAASjzB,OAAOsqO,2BAA2B,WAAWrmB,EAAEhxL,SAASjzB,KAAKgoB,QAAQsiN,2BAA2B,CAACtqO,QAAQwpO,4BAA4B,WAAWvlB,EAAEhxL,SAASjzB,KAAKgoB,QAAQwhN,4BAA4B,CAACxpO,QAAQypO,sBAAsB,WAAW,IAAIjpO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAE5kB,KAAK4rI,EAAEhnH,EAAEoD,QAAQs4J,EAAE10C,EAAEsnF,MAAMl7M,EAAE4M,EAAE8rM,WAAWvsN,OAAO4gB,EAAEu7J,EAAEmnD,aAAa,EAAE73L,EAAE0wI,EAAEonD,YAAYzuM,EAAElU,GAAGH,EAAE2lN,eAAejqD,EAAEvtK,SAASgS,GAAG6qB,GAAG53B,GAAG,IAAI4M,EAAEyxD,eAAezxD,EAAE4lN,cAAczlN,GAAGkP,GAAGzzB,EAAEokB,EAAE6lN,kBAAkBC,OAAOhhO,MAAMquC,EAAEv3C,EAAEmqO,QAAQngO,OAAOhK,EAAEmqO,QAAQ9/N,OAAOhD,EAAE0W,KAAKG,IAAIkG,EAAEsc,SAAStc,EAAE4gM,MAAM97M,MAAMuqB,GAAGA,EAAE,GAAGlY,EAAE6vH,EAAE/gI,OAAO+Z,EAAEsc,SAASlpB,EAAEnQ,GAAGmQ,EAAE,MAAM+D,EAAElU,GAAGmQ,GAAG4zH,EAAE/gI,OAAO,GAAG,IAAIi/H,EAAEllH,EAAEqjB,UAAUj5B,GAAG48H,EAAE8iF,WAAWpuC,EAAE9rG,QAAQiyJ,GAAG76F,EAAE27F,YAAYp5L,EAAE5vB,KAAKykL,KAAK/uK,EAAEA,EAAE8jB,EAAEA,GAAG9e,EAAEgrL,EAAE2mB,UAAUrsN,KAAKG,IAAIH,KAAKwhM,KAAKxhM,KAAKG,KAAKle,EAAEmqO,QAAQngO,OAAO,GAAGuR,EAAE,IAAIwC,KAAKwhM,KAAKxhM,KAAKG,IAAIorH,EAAE37F,EAAE,IAAI5vB,KAAKwhM,KAAKhoK,EAAE5J,KAAKlV,EAAE1a,KAAKukC,IAAI/9B,EAAExG,KAAKG,IAAIkxB,EAAE3W,KAAKrU,EAAE4lN,cAAcvxM,IAAIywM,2BAA2B,WAAWzlB,EAAEhxL,SAASjzB,KAAKgoB,QAAQ0hN,2BAA2B,CAAC1pO,QAAQ2pO,UAAU,WAAW1lB,EAAEhxL,SAASjzB,KAAKgoB,QAAQ2hN,UAAU,CAAC3pO,QAAQ4pO,IAAI,WAAW,IAAIppO,EAAER,KAAKi0B,EAAEzzB,EAAEypO,QAAQ,CAACvgO,MAAM,EAAEc,OAAO,GAAGutC,EAAEv3C,EAAEglN,MAAM39M,EAAErH,EAAEwnB,QAAQjM,EAAElU,EAAEqrN,MAAMppF,EAAEjiI,EAAE0/N,WAAWp5L,EAAEtmC,EAAE6mN,UAAU9pM,EAAEpkB,EAAE+pO,aAAa3+F,EAAE,WAAW/jI,EAAEmC,SAASs2K,EAAE9/K,EAAE61E,eAAe,GAAGiqG,EAAErsJ,EAAEvqB,MAAMlJ,EAAE0gC,SAAStc,IAAIqP,EAAEvqB,MAAMsF,GAAGm/B,GAAGs4L,GAAG38F,IAAIw2C,EAAE17J,IAAIqP,EAAEzpB,OAAOwE,GAAGm/B,GAAGs4L,GAAG38F,IAAI71G,EAAEzpB,OAAOhK,EAAEynC,UAAUlsB,EAAEhJ,SAAS6R,EAAE,CAAC,IAAI5M,EAAE4uN,GAAG7qN,GAAGgJ,EAAEvkB,EAAEiqO,iBAAiB76L,EAAE7qB,EAAE/iB,MAAMi3B,EAAElU,EAAE5N,KAAK4zH,EAAEhmH,EAAE2lN,OAAOnhG,EAAExkH,EAAE4lN,QAAQ7nN,EAAE,GAAG9K,EAAE6uN,MAAMrjB,WAAWvjN,EAAE8b,EAAEy4D,QAAQ,GAAG8rG,EAAE,CAAC,IAAItkK,EAAE,IAAIxb,EAAEgqO,cAAcjvM,EAAE0oL,EAAE4mB,UAAUrqO,EAAEgqO,eAAellN,EAAE/G,KAAKw7L,IAAIx+K,GAAG62E,EAAE7zF,KAAKy7L,IAAIz+K,GAAmDtH,EAAEzpB,OAAO+T,KAAKG,IAAIle,EAAEynC,UAAUhU,EAAEzpB,QAA9E4nG,EAAE24B,EAAErhI,MAAM4b,GAAGikH,EAAE/+H,QAAQwR,EAAEutH,EAAE1+H,OAAO,KAAKmR,EAAE,EAAE8G,IAA4C7iB,GAAG,IAAIilB,EAAEE,EAAE+4L,EAAE39M,EAAEmwN,gBAAgB,GAAGnwN,EAAEyL,KAAKsyM,EAAE/9M,EAAE0L,MAAM1L,EAAEmwN,gBAAgBnwN,EAAEkwN,WAAWvsN,OAAO,GAAG6X,GAAGkJ,EAAE0mH,EAAEtmH,EAAEsqB,EAAElmC,MAAM0oG,EAAExiE,EAAE/kC,OAAOunG,GAAGxiE,EAAEplC,OAAOolC,EAAE/kC,QAAQua,EAAEwmH,EAAEx5B,GAAGn5E,EAAEzuB,OAAOyuB,EAAEpuB,QAAQya,EAAE2T,EAAEvvB,MAAM0oG,EAAEn5E,EAAEpuB,SAASqa,EAAE0qB,EAAElmC,MAAM,EAAE0b,EAAE6T,EAAEvvB,MAAM,GAAGlJ,EAAEo0E,YAAYr2D,KAAKukC,KAAK59B,EAAEi5L,GAAG39M,EAAEkJ,OAAOlJ,EAAEkJ,MAAMy0M,GAAG,GAAG,EAAE39M,EAAEq0E,aAAat2D,KAAKukC,KAAK19B,EAAEm5L,GAAG/9M,EAAEkJ,OAAOlJ,EAAEkJ,MAAM60M,GAAG,GAAG,OAAoCtqL,EAAEvqB,MAAM6U,KAAKG,IAAIle,EAAE0gC,SAASjN,EAAEvqB,OAArDqS,EAAE4rN,OAAO,EAAE58F,EAAErhI,MAAMzJ,EAAE6iB,IAAyCtiB,EAAEs0E,WAAWllC,EAAEplC,OAAO,EAAEhK,EAAEu0E,cAAc97C,EAAEzuB,OAAO,EAAGhK,EAAEsqO,gBAAgBxqD,GAAG9/K,EAAEkJ,MAAMlJ,EAAEiwN,QAAQ14K,EAAEruC,MAAMlJ,EAAE+nO,QAAQt8N,KAAKzL,EAAE+nO,QAAQr8N,MAAM1L,EAAEgK,OAAOypB,EAAEzpB,SAAShK,EAAEkJ,MAAMuqB,EAAEvqB,MAAMlJ,EAAEgK,OAAOhK,EAAEiwN,QAAQ14K,EAAEvtC,OAAOhK,EAAE+nO,QAAQx8N,IAAIvL,EAAE+nO,QAAQv8N,SAAS8+N,cAAc,WAAW,IAAItqO,EAAER,KAAKQ,EAAE+nO,UAAU/nO,EAAE+nO,QAAQt8N,KAAKsS,KAAKukC,IAAItiD,EAAEo0E,YAAYp0E,EAAE+nO,QAAQt8N,MAAMzL,EAAE+nO,QAAQx8N,IAAIwS,KAAKukC,IAAItiD,EAAEs0E,WAAWt0E,EAAE+nO,QAAQx8N,KAAKvL,EAAE+nO,QAAQr8N,MAAMqS,KAAKukC,IAAItiD,EAAEq0E,aAAar0E,EAAE+nO,QAAQr8N,OAAO1L,EAAE+nO,QAAQv8N,OAAOuS,KAAKukC,IAAItiD,EAAEu0E,cAAcv0E,EAAE+nO,QAAQv8N,UAAU69N,SAAS,WAAW5lB,EAAEhxL,SAASjzB,KAAKgoB,QAAQ6hN,SAAS,CAAC7pO,QAAQq2E,aAAa,WAAW,IAAI71E,EAAER,KAAKgoB,QAAQhe,SAAS,MAAM,QAAQxJ,GAAG,WAAWA,GAAGuqO,YAAY,WAAW,OAAO/qO,KAAKgoB,QAAQsvM,WAAWzD,cAAc,SAASrzN,GAAG,GAAG2lO,GAAG3lO,GAAG,OAAOi+H,IAAI,IAAI,iBAAiBj+H,GAAGA,aAAamO,UAAU6vG,SAASh+G,GAAG,OAAOi+H,IAAI,GAAGj+H,EAAE,GAAGR,KAAKq2E,gBAAgB,QAAG,IAAS71E,EAAE+6B,EAAE,OAAOv7B,KAAK6zN,cAAcrzN,EAAE+6B,QAAQ,QAAG,IAAS/6B,EAAE8kB,EAAE,OAAOtlB,KAAK6zN,cAAcrzN,EAAE8kB,GAAG,OAAO9kB,GAAG+oO,sBAAsB,SAAS/oO,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE/b,KAAK,IAAI+b,EAAEm3M,MAAM1yN,EAAEiJ,IAAK,SAASjJ,GAAG,OAAOA,EAAEe,QAASwa,EAAEouN,8BAA8Bl2M,EAAElY,EAAEquN,qBAAqB5pO,IAAIub,EAAEm3M,MAAMn3M,EAAEuuN,6BAA6BvyL,EAAE,EAAElwC,EAAErH,EAAE2D,OAAO4zC,EAAElwC,IAAIkwC,EAAEv3C,EAAEu3C,GAAG1iB,MAAMpB,EAAE8jB,GAAG,OAAO9jB,GAAGw2M,eAAe,WAAW,IAAIjqO,EAAER,KAAKi0B,EAAEzzB,EAAEgoO,YAAY,OAAOv0M,IAAIzzB,EAAEgoO,YAAYv0M,EAA1oQ,SAAYzzB,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAE6qB,EAAE3W,EAAE8xG,EAAExB,EAAEzmH,EAAE7iB,EAAE83C,EAAE5zC,OAAO6X,EAAE,GAAGuf,EAAE,GAAGjW,EAAE,GAAG8sF,EAAE,EAAEoqB,EAAE,EAAE,IAAIzgH,EAAE,EAAEA,EAAE9b,IAAI8b,EAAE,CAAC,GAAG6I,EAAEmzB,EAAEh8B,GAAGsZ,MAAmC70B,EAAEggO,KAAKlgD,GAApC10C,EAAE7zF,EAAEh8B,GAAG+qN,MAAM7yM,EAAE6yM,MAAM7yM,EAAE4yM,OAAiB13L,OAAOn3B,EAAEnQ,EAAEy4K,GAAGz4K,EAAEy4K,IAAI,CAACxwK,KAAK,GAAGk7N,GAAG,IAAIjmN,EAAE6mH,EAAE43E,WAAW5zK,EAAE3W,EAAE,EAAEktM,GAAGvhN,IAAIshN,GAAGthN,IAAI,GAAGshN,GAAGthN,GAAG,IAAIklH,EAAE,EAAE37F,EAAEvpB,EAAEzgB,OAAO2lI,EAAE37F,IAAI27F,EAASq8F,GAAPp7F,EAAEnmH,EAAEklH,KAAUo8F,GAAGn7F,KAAKn7F,EAAEq0K,EAAEsc,YAAY//N,EAAEwX,EAAElI,KAAKkI,EAAEgzN,GAAGp7L,EAAEm7F,GAAG9xG,GAAGlU,QAAQ6qB,EAAEq0K,EAAEsc,YAAY//N,EAAEwX,EAAElI,KAAKkI,EAAEgzN,GAAGp7L,EAAEhrB,GAAGqU,EAAElU,EAAE/I,EAAEpY,KAAKgsC,GAAGrU,EAAE33B,KAAKq1B,GAAG3T,EAAE1hB,KAAKmhB,EAAE,GAAGqtF,EAAE7zF,KAAKukC,IAAIlT,EAAEwiE,GAAGoqB,EAAEj+G,KAAKukC,IAAI7pB,EAAEujG,GAAG,SAASt3G,EAAE1kB,GAAG,MAAM,CAACkJ,MAAMsS,EAAExb,IAAI,EAAEgK,OAAO+wB,EAAE/6B,IAAI,EAAEqK,OAAOya,EAAE9kB,IAAI,GAAG,OAAO,SAASA,EAAEyzB,GAAGgwL,EAAExG,KAAKj9M,EAAG,SAASA,GAAG,IAAIu3C,EAAElwC,EAAErH,EAAEwqO,GAAGjvN,EAAElU,EAAE1D,OAAO,EAAE,GAAG4X,EAAEkY,EAAE,CAAC,IAAI8jB,EAAE,EAAEA,EAAEh8B,IAAIg8B,SAASv3C,EAAEsP,KAAKjI,EAAEkwC,IAAIlwC,EAAE0gC,OAAO,EAAExsB,MAArH,CAA6HlU,EAAE5H,GAAGspI,EAAEvtH,EAAE/S,QAAQmpG,GAAGtvF,EAAEyY,EAAEtyB,QAAQuzH,GAAG,CAACx6H,MAAMkjB,EAAE,GAAG/N,KAAK+N,EAAEjlB,EAAE,GAAGyqO,OAAOxlN,EAAEqkH,GAAGohG,QAAQzlN,EAAEpC,IAAi8OmoN,CAAGzqO,EAAEoB,IAAIglO,GAAGpmO,EAAEwnB,QAAQkrM,OAAO1yN,EAAEkwN,WAAWlwN,EAAEmoO,kBAAkBnoO,EAAEkoO,kBAAkBz0M,EAAEy2M,OAAOhhO,OAAOuqB,GAAGs8L,YAAY,SAAS/vN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE,OAAOmqN,GAAG1lO,IAAIyzB,GAAGj0B,KAAK6zN,cAAcrzN,EAAE,IAAIu3C,GAAG/3C,KAAK6zN,cAAcrzN,EAAE,IAAIqH,EAAE0W,KAAKG,IAAIuV,EAAE8jB,GAAGh8B,EAAEwC,KAAKukC,IAAI7uB,EAAE8jB,KAAK9jB,OAAE,EAAO8jB,EAAEv3C,GAAGR,KAAK6zN,cAAcrzN,GAAGqH,EAAErH,EAAEub,EAAEvb,GAAG,CAACke,IAAI7W,EAAEi7C,IAAI/mC,EAAE5S,MAAM8qB,EAAE7qB,IAAI2uC,IAAImzL,eAAe,SAAS1qO,GAAG,IAAIyzB,EAAEj0B,KAAKuwN,YAAY/vN,GAAG,YAAO,IAASyzB,EAAE9qB,MAAM,IAAI8qB,EAAE9qB,MAAM,KAAK8qB,EAAE7qB,IAAI,KAAKpJ,KAAK6zN,cAAcrzN,IAAI0/N,iBAAiBjc,EAAEvvF,KAAKu7F,iBAAiBhM,EAAEvvF,KAAKy2G,iBAAiBlnB,EAAEvvF,KAAKi8F,gBAAgB,SAASnwN,GAAG,IAAIyzB,EAAEj0B,KAAKgoB,QAAQnd,OAAOktC,EAAE/3C,KAAKioO,OAAO9jO,OAAO0D,EAAE,EAAE0W,KAAKukC,IAAI/K,GAAG9jB,EAAE,EAAE,GAAG,GAAG,OAAOzzB,EAAE,GAAGA,EAAEu3C,EAAE,EAAE,KAAK/3C,KAAKoxN,mBAAmB5wN,EAAEqH,GAAGosB,EAAEpsB,EAAE,EAAE,KAAKupN,mBAAmB,SAAS5wN,GAAG,OAAOR,KAAKkqO,iBAAiB1pO,EAAE,EAAEA,GAAGR,KAAKmwN,YAAY3vN,EAAER,KAAKywN,SAAS2a,mBAAmB,SAAS5qO,GAAG,IAAIyzB,GAAGzzB,EAAER,KAAKmwN,aAAanwN,KAAKywN,QAAQ,OAAOzwN,KAAKkqO,eAAe,EAAEj2M,EAAEA,GAAGw7L,aAAa,WAAW,OAAOzvN,KAAKiwN,iBAAiBjwN,KAAKqrO,iBAAiBA,aAAa,WAAW,IAAI7qO,EAAER,KAAK0e,IAAIuV,EAAEj0B,KAAK8iD,IAAI,OAAO9iD,KAAKw0N,YAAY,EAAEh0N,EAAE,GAAGyzB,EAAE,EAAEA,EAAEzzB,EAAE,GAAGyzB,EAAE,EAAEzzB,EAAE,GAAGupO,UAAU,SAASvpO,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE9pI,KAAKgoB,QAAQkrM,MAAqBtuM,EAAEklH,EAAEwhG,eAAjBtrO,KAAKywN,QAA6BzwN,KAAKurO,YAAY,EAAE3/F,EAAE9B,EAAEg9F,MAAMp2F,QAAQ,SAASlwI,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE,GAAG,IAAIosB,EAAE,EAAE8jB,EAAEv3C,EAAE2D,OAAO8vB,EAAE8jB,EAAE9jB,IAAIzzB,EAAEyzB,GAAG6yM,OAAOj/N,EAAEjE,KAAKqwB,GAAG,OAAOpsB,EAAjF,CAAoFrH,GAAG,GAAG8/K,EAAE10C,EAAEznI,OAAO6T,EAAE4zH,EAAE,GAAG7mH,EAAE6mH,EAAE00C,EAAE,GAAG,GAAGA,EAAE17J,EAAE,OAAO,SAASpkB,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE,EAAE37F,EAAEla,EAAE,GAAG,IAAI8jB,EAAEx5B,KAAKC,KAAKu5B,GAAGlwC,EAAE,EAAEA,EAAErH,EAAE2D,OAAO0D,IAAIkU,EAAEvb,EAAEqH,GAAGA,IAAIsmC,GAAGpyB,EAAEwsM,OAAO1gN,EAAEsmC,EAAEla,IAAI61G,EAAE/xF,WAAWh8B,EAAEsZ,MAAvH,CAA8H70B,EAAEorI,EAAE00C,EAAE17J,GAAGmiN,GAAGvmO,GAAG,GAAGqH,EAAE,SAASrH,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE,SAASprI,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAErH,EAAE2D,OAAO,GAAG0D,EAAE,EAAE,OAAM,EAAG,IAAIkwC,EAAEv3C,EAAE,GAAGyzB,EAAE,EAAEA,EAAEpsB,IAAIosB,EAAE,GAAGzzB,EAAEyzB,GAAGzzB,EAAEyzB,EAAE,KAAK8jB,EAAE,OAAM,EAAG,OAAOA,EAAzG,CAA4Gv3C,GAAG8/K,GAAGrsJ,EAAE9vB,OAAO,GAAG0D,EAAE,IAAI+jI,EAAE,OAAOrtH,KAAKukC,IAAIw9H,EAAE,GAAG,IAAInyI,EAAE,EAAEvpB,GAAG7I,EAAEkoM,EAAEM,KAAKV,WAAWj4E,IAAIznI,OAAO,EAAEgqC,EAAEvpB,EAAEupB,IAAI,IAAI27F,EAAE/tH,EAAEoyB,IAAImyI,EAAE,OAAOx2C,EAAE,OAAOvrH,KAAKukC,IAAIw9H,EAAE,GAAxR,CAA4R10C,EAAEprI,EAAE,EAAEokB,GAAG07J,EAAE,EAAE,CAAC,IAAIrsJ,EAAE,EAAE8jB,EAAEuoI,EAAE,EAAErsJ,EAAE8jB,EAAE9jB,IAAI+yM,GAAGxmO,EAAEqH,EAAE+jI,EAAE33G,GAAG23G,EAAE33G,EAAE,IAAI,OAA8B+yM,GAAGxmO,EAAEqH,EAAEo8M,EAAE3G,cAAhCvhM,EAAEukK,EAAE,GAAGv7J,EAAE/M,IAAIsoK,EAAE,GAAG,MAA+B,EAAEtoK,EAAE+D,EAAE/D,GAAGgvN,GAAGxmO,EAAEqH,EAAEkd,EAAEk/L,EAAE3G,cAAcvhM,GAAGvb,EAAE2D,OAAO4gB,EAAEhJ,GAAGgrN,GAAGvmO,GAAG,OAAOwmO,GAAGxmO,EAAEqH,GAAGk/N,GAAGvmO,IAAI+qO,UAAU,WAAW,IAAI/qO,EAAER,KAAKgoB,QAAQkrM,MAAMj/L,EAAEgwL,EAAE4mB,UAAU7qO,KAAKwqO,eAAezyL,EAAEx5B,KAAKqiC,IAAIriC,KAAKw7L,IAAI9lL,IAAIpsB,EAAE0W,KAAKqiC,IAAIriC,KAAKy7L,IAAI/lL,IAAIlY,EAAE/b,KAAKyqO,iBAAiB3gG,EAAEtpI,EAAEqnO,iBAAiB,EAAE15L,EAAEpyB,EAAEA,EAAE2uN,OAAOhhO,MAAMogI,EAAE,EAAEllH,EAAE7I,EAAEA,EAAE4uN,QAAQngO,OAAOs/H,EAAE,EAAE,OAAO9pI,KAAKq2E,eAAezxD,EAAEmzB,EAAE5J,EAAEtmC,EAAEsmC,EAAE4J,EAAEnzB,EAAE/c,EAAE+c,EAAE/c,EAAEsmC,EAAE4J,EAAEnzB,EAAEmzB,EAAE5J,EAAEtmC,GAAG0iO,WAAW,WAAW,IAAI/pO,EAAEyzB,EAAE8jB,EAAElwC,EAAE7H,KAAKwlN,MAAMzpM,EAAE/b,KAAKgoB,QAAQjV,QAAQ,GAAG,SAASgJ,EAAE,QAAQA,EAAE,IAAIvb,EAAE,EAAEyzB,EAAEpsB,EAAEiI,KAAK63M,SAASxjN,OAAO3D,EAAEyzB,IAAIzzB,EAAE,GAAGqH,EAAEsqN,iBAAiB3xN,MAAMu3C,EAAElwC,EAAE+/M,eAAepnN,IAAI+mN,UAAUvnN,KAAKgmB,IAAI+xB,EAAE0vK,UAAUznN,KAAKgmB,IAAI,OAAM,EAAG,OAAM,GAAIwlN,sBAAsB,SAAShrO,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAE6qB,EAAE3W,EAAE8xG,EAAExB,EAAEzmH,EAAE7iB,EAAE+b,EAAEhc,KAAKu7B,EAAEvf,EAAEwpM,MAAMlgM,EAAEtJ,EAAEgM,QAAQoqF,EAAE9sF,EAAEopM,UAAUlyF,EAAEl3G,EAAEtb,SAASkb,EAAEktF,EAAEu8G,gBAAgBvpM,EAAEpJ,EAAEq6D,eAAe8nI,EAAEniM,EAAE8tN,aAAavrB,EAAEJ,EAAEh6M,QAAQ+gB,EAAE,EAAE,GAAGylH,EAAE37H,GAAGojG,GAAGy0F,EAAE,GAAG4Z,EAAEruG,EAAE60H,WAAWZ,GAAGj0H,EAAEq5G,UAAU,EAAE,GAAG,EAAE/K,EAAED,EAAE,EAAEE,EAAEsD,EAAEwnB,YAAY7qB,EAAE,SAASpgN,GAAG,OAAOmgN,EAAEplL,EAAE/6B,EAAEigN,IAAI,IAAI,QAAQjkF,GAAGvoG,EAAE2sL,EAAE5kM,EAAEhQ,QAAQ4Y,EAAE5I,EAAEhQ,OAAO2+H,EAAE21C,EAAErsJ,EAAEysL,EAAE37L,EAAE67L,EAAEpgN,EAAEuL,KAAK20M,EAAEznL,EAAEz4B,EAAEwL,QAAQ,WAAWwwH,GAAGvoG,EAAE2sL,EAAE5kM,EAAEjQ,KAAKgZ,EAAEvkB,EAAEuL,IAAIktB,EAAE2nL,EAAEpgN,EAAEwL,QAAQ00M,EAAE97L,EAAEqP,EAAEysL,EAAEpgC,EAAEtkK,EAAEjQ,IAAI4+H,GAAG,SAASnO,GAAGvoG,EAAE2sL,EAAE5kM,EAAE9P,OAAOiiC,EAAEnyB,EAAE9P,MAAMy+H,EAAEiB,EAAE33G,EAAEysL,EAAE1oM,EAAE4oM,EAAEpgN,EAAEyL,MAAMy0M,EAAE9wK,EAAEpvC,EAAE0L,QAAQ+nB,EAAE2sL,EAAE5kM,EAAE/P,MAAM+L,EAAExX,EAAEyL,KAAK2jC,EAAEgxK,EAAEpgN,EAAE0L,OAAOw0M,EAAEvyK,EAAEla,EAAEysL,EAAE90E,EAAE5vH,EAAE/P,KAAK0+H,GAAG5yF,EAAE,EAAEA,EAAEwmK,IAAIxmK,EAAaouL,IAAXt+N,EAAEs2M,EAAEpmK,IAAI,IAAQ1iB,QAAQ0iB,EAAEomK,EAAEh6M,SAAS4zC,IAAI/7B,EAAEgsN,eAAe1iN,EAAEza,SAASqa,GAAG6lH,EAAE34B,EAAE+0H,cAAc59F,EAAEn3B,EAAEg1H,cAActkN,EAAEsvF,EAAEi1H,oBAAoB,GAAGpnO,EAAEmyG,EAAEk1H,0BAA0B,IAAIv8F,EAAEs7F,GAAGj0H,EAAEq5G,UAAU1zK,EAAE,GAAGwxF,EAAE88F,GAAGj0H,EAAEv8C,MAAM9d,EAAE,mBAAmBj1B,EAAEsvF,EAAE45G,YAAY,GAAG/rN,EAAEmyG,EAAE65G,kBAAkB,QAAG,KAAUlwM,EAAEuqN,GAAGtqN,EAAEnU,EAAE0gN,QAAQxwK,EAAE7yB,MAAM4kH,EAAE62E,EAAEplL,EAAExf,EAAEgvH,GAAG3lH,EAAE+oB,EAAEy9F,EAAE5zH,EAAE43B,EAAEk6F,EAAEllH,EAAE07J,EAAEv7J,EAAEkU,EAAE6wG,EAAE+8D,EAAEjjM,KAAK,CAAC8nO,IAAIv9L,EAAEw9L,IAAI/mN,EAAEgnN,IAAIhgG,EAAEigG,IAAIvrD,EAAEsgD,GAAG5oN,EAAE6oN,GAAG97M,EAAE+7M,GAAGlxL,EAAEmxL,GAAG9nM,EAAEvvB,MAAMqhI,EAAEl1E,MAAM0zE,EAAEyiF,WAAWlpM,EAAEmpM,iBAAiBhsN,MAAM,OAAO4mM,EAAEilC,YAAYvtB,EAAE1X,EAAEklC,YAAY93M,EAAE4yK,GAAGmlC,mBAAmB,WAAW,IAAIxrO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAE6qB,EAAE5vC,KAAKi5B,EAAE2W,EAAE5nB,QAAQ+iH,EAAE9xG,EAAEi6L,MAAM3pF,EAAEtwG,EAAEjvB,SAAS8Y,EAAEioH,EAAE48F,OAAO1nO,EAAE2vC,EAAEymC,eAAer6D,EAAE4zB,EAAEk6L,aAAavuM,EAAEqrM,GAAG77F,GAAGzlH,EAAEylH,EAAEv2D,QAAQ49B,EAAEpjG,GAAGiqB,EAAEy1L,WAAWlyF,GAAGynF,EAAE4mB,UAAUj7L,EAAE46L,eAAetlN,EAAE,GAAG,IAAI,QAAQqkH,GAAGO,EAAEl6F,EAAE5jC,OAAOomG,EAAE9sF,EAAE6oB,EAAEquF,EAAE,OAAO,UAAU,WAAW+M,GAAGO,EAAEl6F,EAAE7jC,IAAIqmG,EAAE9sF,EAAE6oB,EAAEquF,EAAE,QAAQ,UAAU,SAAS+M,GAAGxtH,EAAE6zB,EAAE1jC,OAAO4W,EAAE,EAAEsvF,GAAG9sF,EAAE6oB,EAAErrB,EAAE,OAAO,UAAU/G,EAAE6zB,EAAE3jC,MAAM6W,EAAE,EAAEsvF,GAAG9sF,EAAE6oB,EAAErrB,EAAE,QAAQ,QAAQtiB,EAAE,EAAEyzB,EAAEjY,EAAE7X,OAAO3D,EAAEyzB,IAAIzzB,EAAEqH,GAAGkwC,EAAE/7B,EAAExb,IAAI60B,MAAM8wM,GAAGt+N,KAAK+c,EAAEgrB,EAAE+gL,gBAAgB54K,EAAEwwK,QAAQ/nN,GAAGuqI,EAAE+8F,YAAYxnD,GAAG10C,EAAE7zF,EAAE+uL,MAAMvrM,EAAEurM,MAAMvrM,EAAEsrM,OAAOrjB,WAAWxrM,EAAEkuN,GAAGr+N,GAAGA,EAAE1D,OAAO,EAAElE,GAAG8b,EAAE6I,EAAEG,EAAE,QAAQwkH,IAAI/M,EAAE,EAAE,IAAIxkH,GAAGsoK,GAAG9jD,EAAE,EAAE,IAAI8jD,IAAIx2C,EAAEllH,EAAEG,GAAG,EAAE/M,GAAGsoK,EAAE,GAAGp7J,EAAEthB,KAAK,CAAC23B,EAAExf,EAAEuJ,EAAEwkH,EAAEqjF,SAAS3wF,EAAEnnG,MAAMxtB,EAAE24N,KAAK50F,EAAEqgG,WAAWlnN,EAAE4/L,UAAUx2K,KAAK,OAAOjpB,GAAGgnN,UAAU,SAAS1rO,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEjM,QAAQ0mM,UAAU,GAAG32K,EAAEhlC,QAAQ,CAAC,IAAIlL,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE33G,EAAEryB,IAAI0+K,EAAErsJ,EAAEuxL,MAAMxtM,EAAEisM,EAAEwnB,YAAY1mN,EAAEgzB,EAAEkvL,WAAWZ,GAAGtuL,EAAE0zK,UAAU,EAAE,GAAG,EAAE77K,EAAE3b,EAAE20M,iBAAiB30M,EAAE20M,eAAe30M,EAAEu3M,sBAAsBhrO,IAAI,IAAIspI,EAAE,EAAE37F,EAAEyB,EAAEzrC,OAAO2lI,EAAE37F,IAAI27F,EAAEjiI,GAAG+c,EAAEgrB,EAAEk6F,IAAIpgI,MAAMqS,EAAE6I,EAAEixC,MAAMhuD,GAAGkU,IAAI6vH,EAAEw1E,OAAOx1E,EAAE6/E,UAAU5jN,EAAE+jI,EAAE4/E,YAAYzvM,EAAE6vH,EAAE6gF,cAAc7gF,EAAE6gF,YAAY7nM,EAAEonM,YAAYpgF,EAAE8gF,eAAe9nM,EAAEqnM,kBAAkBrgF,EAAE01E,YAAYvpK,EAAEwuL,YAAY36F,EAAEo1E,OAAOp8L,EAAE8mN,IAAI9mN,EAAE+mN,KAAK//F,EAAE21E,OAAO38L,EAAEgnN,IAAIhnN,EAAEinN,MAAM9zL,EAAEmvL,kBAAkBt7F,EAAEo1E,OAAOp8L,EAAEg8M,GAAGh8M,EAAEi8M,IAAIj1F,EAAE21E,OAAO38L,EAAEk8M,GAAGl8M,EAAEm8M,KAAKn1F,EAAE61E,SAAS71E,EAAEy1E,WAAW,GAAGt8L,EAAE,CAAC,IAAIkU,EAAE8xG,EAAExB,EAAEzmH,EAAE7iB,EAAE8kB,EAAE/I,EAAEqqN,GAAGtuL,EAAE0zK,UAAU77K,EAAEk8L,YAAY,EAAE,GAAGvwM,EAAEqU,EAAEm8L,YAAY93M,EAAEoiD,gBAAgBp9C,EAAEjhB,EAAEsoK,EAAErsJ,EAAEhoB,KAAKhM,GAAGA,EAAE,EAAE8qI,EAAE/yH,EAAEsoK,EAAErsJ,EAAE/nB,MAAM8P,GAAGA,EAAE,EAAEutH,EAAEzmH,EAAEyY,IAAIguG,EAAEvxH,EAAEsoK,EAAErsJ,EAAEloB,IAAI9L,GAAGA,EAAE,EAAE6iB,EAAE9K,EAAEsoK,EAAErsJ,EAAEjoB,OAAOgQ,GAAGA,EAAE,EAAEid,EAAE8xG,EAAExvG,GAAGqwG,EAAE6/E,UAAU1mM,EAAE6mH,EAAE4/E,YAAY6a,GAAGtuL,EAAE8d,MAAM,GAAG+1E,EAAE01E,YAAY11E,EAAEo1E,OAAO/nL,EAAEswG,GAAGqC,EAAE21E,OAAOx2E,EAAEjoH,GAAG8oH,EAAE61E,YAAY0qB,YAAY,WAAW,IAAI3rO,EAAER,KAAK,GAAGQ,EAAEwnB,QAAQkrM,MAAMngN,QAAQ,CAAC,IAAIkhB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAE9/K,EAAEoB,IAAIoW,EAAExX,EAAEqoO,cAAcroO,EAAEqoO,YAAYroO,EAAEwrO,sBAAsB,IAAI/3M,EAAE,EAAEpsB,EAAEmQ,EAAE7T,OAAO8vB,EAAEpsB,IAAIosB,EAAE,CAAC,GAAGka,GAAG27F,EAAE9xH,EAAEic,IAAIusM,KAAKlgD,EAAE8gC,OAAO9gC,EAAElD,UAAUtzC,EAAEvuG,EAAEuuG,EAAExkH,GAAGg7J,EAAE08B,OAAOlzE,EAAEqjF,UAAU7sC,EAAEkgD,KAAKryL,EAAEgB,OAAOmxI,EAAEirC,UAAUp9K,EAAE0nB,MAAMyqH,EAAE6gD,aAAa,SAAS7gD,EAAEqkC,UAAU76E,EAAE66E,UAAoB/4E,EAAE9B,EAAEmiG,WAAW/F,GAAzBthN,EAAEklH,EAAEz0G,OAA2B,IAAI0iB,EAAE,EAAEh8B,EAAE6I,EAAEzgB,OAAO4zC,EAAEh8B,IAAIg8B,EAAEuoI,EAAE8gD,SAAS,GAAGx8M,EAAEmzB,GAAG,EAAE6zF,GAAGA,GAAGz9F,EAAEq1K,gBAAgBljC,EAAE8gD,SAASx8M,EAAE,EAAEgnH,GAAG00C,EAAE+gC,aAAa+qB,WAAW,WAAW,IAAI5rO,EAAER,KAAKi0B,EAAEzzB,EAAEoB,IAAIm2C,EAAEv3C,EAAEwnB,QAAQngB,EAAEkwC,EAAEwvL,WAAW,GAAG1/N,EAAEkL,QAAQ,CAAC,IAAIgJ,EAAE+tH,EAAE37F,EAAEi4L,GAAGv+N,EAAE8+N,UAAU5jB,EAAEj7K,OAAO26K,kBAAkB79L,EAAEq/L,EAAEj8L,QAAQo7L,WAAWv7M,GAAG+jI,EAAEq4E,EAAEj8L,QAAQm7L,UAAUt7M,EAAE2sE,SAAS8rG,EAAE17J,EAAE4+L,WAAW,EAAExrM,EAAE+/B,EAAE/tC,SAAS+a,EAAE,EAAE,GAAGvkB,EAAE61E,eAAet6D,EAAEvb,EAAEyL,KAAKzL,EAAEkJ,MAAM,EAAEogI,EAAE,WAAW9xH,EAAExX,EAAEwL,OAAOs0K,EAAE10C,EAAE5/H,OAAOxL,EAAEuL,IAAIu0K,EAAE10C,EAAE7/H,QAAQ,CAAC,IAAI6jC,EAAE,SAAS53B,EAAE+D,EAAE6zB,EAAEpvC,EAAEyL,KAAKq0K,EAAE10C,EAAE7/H,IAAIvL,EAAE0L,MAAMo0K,EAAE10C,EAAE7/H,IAAI+9H,EAAEtpI,EAAEuL,IAAIvL,EAAEgK,OAAO,EAAEua,EAAE6qB,GAAG,GAAGrxB,KAAKu7L,GAAG,GAAGv7L,KAAKu7L,GAAG7lL,EAAEmtL,OAAOntL,EAAEmpJ,UAAUrhK,EAAE+tH,GAAG71G,EAAE+oL,OAAOj4L,GAAGkP,EAAE0wL,UAAU,SAAS1wL,EAAEktM,aAAa,SAASltM,EAAEs3L,UAAUp9K,EAAEla,EAAEusM,KAAK57M,EAAEuqB,OAAOlb,EAAEmtM,SAASv5N,EAAE2/N,YAAY,EAAE,GAAGvzM,EAAEotL,YAAY2H,KAAK,SAASxoN,GAAGR,KAAKuqO,eAAevqO,KAAKksO,UAAU1rO,GAAGR,KAAKosO,aAAapsO,KAAKmsO,gBAAgBtU,QAAQ,WAAW,IAAIr3N,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQ+vB,EAAE9jB,EAAEi/L,OAAOj/L,EAAEi/L,MAAM3Q,GAAG,EAAE16M,EAAEosB,EAAEy6L,WAAWz6L,EAAEy6L,UAAUnM,GAAG,EAAE,OAAO/hN,EAAE+pO,cAAcxyL,IAAIlwC,GAAGrH,EAAEwoN,OAAOxoN,EAAE6rO,MAAM,CAAC,CAAC9pB,EAAE16M,EAAEmhN,KAAK,WAAWxoN,EAAE0rO,UAAUv0L,MAAMn3C,EAAE8Y,WAAW9Y,EAAE4rO,WAAWz0L,MAAMn3C,EAAE8Y,aAAa,CAACipM,EAAExqK,EAAEixK,KAAK,WAAWxoN,EAAE2rO,YAAYx0L,MAAMn3C,EAAE8Y,cAAc,CAAC,CAACipM,EAAExqK,EAAEixK,KAAK,WAAWxoN,EAAEwoN,KAAKrxK,MAAMn3C,EAAE8Y,eAAeu2M,yBAAyB,SAASrvN,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEoiD,eAAe,OAAOpiD,EAAEuxL,MAAMsO,gCAAgC3+M,OAAQ,SAAStN,GAAG,QAAQrH,GAAGqH,EAAEnH,OAAOF,KAAKu3C,EAAElwC,EAAE0/M,UAAUtzL,EAAEjO,GAAGne,EAAE4/M,UAAUxzL,EAAEjO,SAAU+hN,GAAGr1M,UAAU25M,MAAMtE,GAAGr1M,UAAUs2L,KAAK,IAAIsjB,GAAGvE,GAAGwE,GAAGtoB,EAAE3G,cAAckvB,GAAGF,GAAGvuB,OAAO,CAACmrB,oBAAoB,WAAW,IAAI1oO,EAAEyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEi0M,aAAargO,EAAEosB,EAAEjM,QAAQkrM,MAAMn3M,EAAElU,EAAE6W,IAAIorH,EAAEjiI,EAAEi7C,IAAI3U,EAAE,EAAEvpB,EAAEmzB,EAAE5zC,OAAO,OAAE,IAAS4X,IAAIvb,EAAEu3C,EAAE9uC,QAAQ8S,KAAK,IAAIoyB,EAAE3tC,QAAG,IAASspI,IAAItpI,EAAEu3C,EAAE9uC,QAAQ6gI,KAAK,IAAIllH,EAAEpkB,GAAGyzB,EAAEw4M,SAASt+L,EAAEla,EAAEy4M,SAAS9nN,EAAEqP,EAAEvV,IAAIq5B,EAAE5J,GAAGla,EAAE6uB,IAAI/K,EAAEnzB,IAAIykN,WAAW,WAAW,IAAI7oO,EAAER,KAAKkoO,aAAaj0M,EAAEj0B,KAAKysO,SAAS10L,EAAE/3C,KAAK0sO,SAAS1sO,KAAKkzN,MAAM,IAAIj/L,GAAG8jB,IAAIv3C,EAAE2D,OAAO,EAAE3D,EAAEA,EAAEgJ,MAAMyqB,EAAE8jB,EAAE,IAAImoL,iBAAiB,SAAS1/N,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAKwlN,MAAM,OAAOztK,EAAE6vK,eAAe3zL,GAAG89L,WAAWjK,qBAAqB9nN,KAAKgmB,GAAGhmB,KAAK6zN,cAAc97K,EAAEjoC,KAAK63M,SAAS1zL,GAAGnkB,KAAKtP,IAAIR,KAAKkoO,aAAa1nO,IAAIsoN,WAAW,WAAW,IAAItoN,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQnd,OAAOktC,EAAEv3C,EAAE0yN,MAAMoZ,GAAG55M,UAAUo2L,WAAW5zL,KAAK10B,GAAGA,EAAE61E,iBAAiB71E,EAAE0pO,gBAAgB1pO,EAAE0pO,gBAAgBnyL,IAAIv3C,EAAEmsO,YAAYnsO,EAAEisO,UAAUx4M,EAAE,GAAG,GAAGzzB,EAAEosO,YAAYruN,KAAKukC,IAAI/K,EAAE5zC,QAAQ8vB,EAAE,EAAE,GAAG,KAAKg8L,iBAAiB,SAASzvN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAEnuC,KAAK,OAAOusO,GAAGt4M,IAAIs4M,GAAGx0L,KAAKv3C,EAAE2tC,EAAEq3K,MAAM11M,KAAK63M,SAAS5vK,GAAGjoC,KAAKmkB,IAAIs4M,GAAG/rO,KAAKqH,EAAEsmC,EAAEkoC,eAAe71E,EAAE+6B,EAAE/6B,EAAE8kB,SAAI,IAASzd,QAAG,IAASrH,GAAGy6C,MAAMhnB,MAAMlY,EAAEoyB,EAAE+5L,aAAa1nO,EAAEyjN,EAAE1G,eAAe11M,EAAErH,GAAGyzB,GAAG,KAAK61G,EAAE/tH,EAAE9S,QAAQzI,IAAIspI,EAAE71G,EAAEgnB,MAAMhnB,KAAKA,EAAEzzB,IAAI2tC,EAAEijL,oBAAoBn9L,EAAEka,EAAEw+L,aAAax+L,EAAEy+L,cAAcjc,gBAAgB,SAASnwN,GAAG,IAAIyzB,EAAEj0B,KAAKkzN,MAAM,OAAO1yN,EAAE,GAAGA,EAAEyzB,EAAE9vB,OAAO,EAAE,KAAKnE,KAAKiwN,iBAAiBh8L,EAAEzzB,GAAGA,EAAER,KAAKysO,WAAWtB,iBAAiB,SAAS3qO,GAAG,IAAIyzB,EAAE1V,KAAK06B,MAAMj5C,KAAK2sO,YAAY3sO,KAAKorO,mBAAmB5qO,GAAGR,KAAK4sO,aAAa,OAAOruN,KAAKG,IAAIH,KAAKukC,IAAI7uB,EAAE,GAAGj0B,KAAKkzN,MAAM/uN,OAAO,IAAIsrN,aAAa,WAAW,OAAOzvN,KAAKgM,UAAiCwgO,GAAGviN,UAAvB,CAACjgB,SAAS,UAA0B,IAAc6iO,GAAG5oB,EAAE3G,cAAkBwvB,GAAGR,GAAGvuB,OAAO,CAAC8V,cAAc,SAASrzN,GAAG,MAAM,iBAAiBA,GAAGA,EAAE8rO,GAAG55M,UAAUmhM,cAAc3+L,KAAKl1B,KAAKQ,IAAIusO,uBAAuB,WAAW,IAAIvsO,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQkrM,MAAM,GAAGj/L,EAAEugM,YAAY,CAAC,IAAIz8K,EAAEksK,EAAEtlK,KAAKn+C,EAAEke,KAAK7W,EAAEo8M,EAAEtlK,KAAKn+C,EAAEsiD,KAAK/K,EAAE,GAAGlwC,EAAE,EAAErH,EAAEsiD,IAAI,EAAE/K,EAAE,GAAGlwC,EAAE,IAAIrH,EAAEke,IAAI,GAAG,IAAI3C,OAAE,IAASkY,EAAEvV,UAAK,IAASuV,EAAE+4M,aAAaljG,OAAE,IAAS71G,EAAE6uB,UAAK,IAAS7uB,EAAEg5M,kBAAa,IAASh5M,EAAEvV,IAAIle,EAAEke,IAAIuV,EAAEvV,SAAI,IAASuV,EAAE+4M,eAA4BxsO,EAAEke,IAAf,OAAOle,EAAEke,IAAUuV,EAAE+4M,aAAmBzuN,KAAKG,IAAIle,EAAEke,IAAIuV,EAAE+4M,oBAAe,IAAS/4M,EAAE6uB,IAAItiD,EAAEsiD,IAAI7uB,EAAE6uB,SAAI,IAAS7uB,EAAEg5M,eAA4BzsO,EAAEsiD,IAAf,OAAOtiD,EAAEsiD,IAAU7uB,EAAEg5M,aAAmB1uN,KAAKukC,IAAItiD,EAAEsiD,IAAI7uB,EAAEg5M,eAAelxN,IAAI+tH,GAAGtpI,EAAEke,KAAKle,EAAEsiD,MAAM/mC,EAAEvb,EAAEsiD,IAAItiD,EAAEke,IAAI,EAAEle,EAAEke,IAAIle,EAAEsiD,IAAI,GAAGtiD,EAAEke,MAAMle,EAAEsiD,MAAMtiD,EAAEsiD,MAAM7uB,EAAEugM,aAAah0N,EAAEke,QAAQwuN,aAAa,WAAW,IAAI1sO,EAAEyzB,EAAEj0B,KAAKgoB,QAAQkrM,MAAMn7K,EAAE9jB,EAAEk5M,SAAStlO,EAAEosB,EAAEq3M,cAAc,OAAOvzL,EAAEv3C,EAAE+d,KAAKC,KAAKxe,KAAK8iD,IAAI/K,GAAGx5B,KAAKs7B,MAAM75C,KAAK0e,IAAIq5B,GAAG,GAAGv3C,EAAER,KAAKotO,oBAAoBvlO,EAAEA,GAAG,IAAIA,IAAIrH,EAAE+d,KAAKG,IAAI7W,EAAErH,IAAIA,GAAG4sO,kBAAkB,WAAW,OAAOz+N,OAAOwtJ,mBAAmBkxE,yBAAp+BppB,EAAEvvF,KAA8/B20G,WAAW,WAAW,IAAI7oO,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQkrM,MAAMn7K,EAAEv3C,EAAE0sO,eAAerlO,EAAE,CAACylO,SAASv1L,EAAEx5B,KAAKukC,IAAI,EAAE/K,GAAGr5B,IAAIuV,EAAEvV,IAAIokC,IAAI7uB,EAAE6uB,IAAIyqL,UAAUt5M,EAAEs5M,UAAUJ,SAASlpB,EAAE1G,eAAetpL,EAAEu5M,cAAcv5M,EAAEk5M,WAAWpxN,EAAEvb,EAAE0yN,MAAM,SAAS1yN,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAE,GAAGvpB,EAAEpkB,EAAE2sO,SAASvhG,EAAEhnH,GAAG,EAAE07J,EAAE9/K,EAAE8sO,SAAS,EAAEt1N,EAAExX,EAAEke,IAAIqG,EAAEvkB,EAAEsiD,IAAIlT,EAAEpvC,EAAE+sO,UAAUt0M,EAAEhF,EAAEvV,IAAIqsH,EAAE92G,EAAE6uB,IAAIymF,EAAE06E,EAAEwpB,SAAS1iG,EAAE9xG,GAAGqnJ,EAAE10C,GAAGA,EAAE,GAAGrC,EAAE,OAAOsjG,GAAG70N,IAAI60N,GAAG9nN,GAAG,MAAM,CAACkU,EAAE8xG,IAAIjB,EAAEvrH,KAAKC,KAAKusH,EAAExB,GAAGhrH,KAAKs7B,MAAM5gB,EAAEswG,IAAI+2C,IAAI/2C,EAAE06E,EAAEwpB,QAAQ3jG,EAAEP,EAAE+2C,EAAE10C,GAAGA,GAAGhnH,GAAGioN,GAAGj9L,GAAGmI,EAAEx5B,KAAKq7L,IAAI,GAAGqK,EAAEypB,eAAenkG,KAAKxxF,EAAEx5B,KAAKq7L,IAAI,GAAGhqK,GAAG25F,EAAEhrH,KAAKC,KAAK+qH,EAAExxF,GAAGA,GAAGlwC,EAAE0W,KAAKs7B,MAAM5gB,EAAEswG,GAAGA,EAAExtH,EAAEwC,KAAKC,KAAKusH,EAAExB,GAAGA,EAAE3kH,KAAKioN,GAAG70N,IAAIisM,EAAE0pB,YAAY31N,EAAEuxH,EAAEA,EAAE,OAAO1hI,EAAEmQ,IAAI60N,GAAG9nN,IAAIk/L,EAAE0pB,YAAY5oN,EAAEwkH,EAAEA,EAAE,OAAOxtH,EAAEgJ,IAAc+kH,EAAEm6E,EAAE2pB,aAAd9jG,GAAG/tH,EAAElU,GAAG0hI,EAAqBhrH,KAAK06B,MAAM6wF,GAAGP,EAAE,KAAKhrH,KAAK06B,MAAM6wF,GAAGvrH,KAAKC,KAAKsrH,GAAGjiI,EAAE0W,KAAK06B,MAAMpxC,EAAEkwC,GAAGA,EAAEh8B,EAAEwC,KAAK06B,MAAMl9B,EAAEg8B,GAAGA,EAAE5J,EAAEvqC,KAAKipO,GAAG70N,GAAGnQ,EAAEmQ,GAAG,IAAI,IAAI8K,EAAE,EAAEA,EAAEgnH,IAAIhnH,EAAEqrB,EAAEvqC,KAAK2a,KAAK06B,OAAOpxC,EAAEib,EAAEymH,GAAGxxF,GAAGA,GAAG,OAAO5J,EAAEvqC,KAAKipO,GAAG9nN,GAAGhJ,EAAEgJ,GAAGopB,EAA/oB,CAAkpBtmC,EAAErH,GAAGA,EAAE6sO,2BAA2B7sO,EAAEsiD,IAAImhK,EAAEnhK,IAAI/mC,GAAGvb,EAAEke,IAAIulM,EAAEvlM,IAAI3C,GAAGkY,EAAEpqB,SAASkS,EAAElS,UAAUrJ,EAAE2I,MAAM3I,EAAEsiD,IAAItiD,EAAE4I,IAAI5I,EAAEke,MAAMle,EAAE2I,MAAM3I,EAAEke,IAAIle,EAAE4I,IAAI5I,EAAEsiD,MAAMsnL,qBAAqB,WAAW,IAAI5pO,EAAER,KAAKQ,EAAEqtO,eAAertO,EAAE0yN,MAAM1pN,QAAQhJ,EAAEwnO,cAAcxnO,EAAE0yN,MAAMjqN,QAAQ,GAAGqjO,GAAG55M,UAAU03M,qBAAqBl1M,KAAK10B,IAAIsoN,WAAW,WAAW,IAAItoN,EAAEyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEy8L,WAAW7oN,EAAEosB,EAAEvV,IAAI3C,EAAEkY,EAAE6uB,IAAIwpL,GAAG55M,UAAUo2L,WAAW5zL,KAAKjB,GAAGA,EAAEjM,QAAQnd,QAAQktC,EAAE5zC,SAAS0D,GAAGrH,GAAGub,EAAElU,GAAG0W,KAAKukC,IAAI/K,EAAE5zC,OAAO,EAAE,GAAG,EAAE4X,GAAGvb,GAAGyzB,EAAE04M,YAAY9kO,EAAEosB,EAAE65M,UAAU/xN,EAAEkY,EAAE24M,YAAY7wN,EAAElU,KAAKkmO,GAAG,CAAC/jO,SAAS,OAAOkpN,MAAM,CAACjgM,SAASswC,GAAGwiK,WAAWvnB,SAAS,SAASwvB,GAAGxtO,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAE3tC,EAAEwnB,QAAQpD,EAAE,SAASpkB,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE,CAACkwC,EAAEr3C,UAAK,IAASuzB,QAAG,IAAS8jB,EAAEyzF,MAAMzzF,EAAEpuC,MAAM,GAAGouC,EAAEyzF,OAAOx7F,KAAK,KAAK,YAAO,IAASxvC,EAAEqH,KAAKrH,EAAEqH,GAAG,CAACq1K,IAAI,GAAG+wD,IAAI,KAAKztO,EAAEqH,GAAxI,CAA4IosB,EAAEka,EAAE2hL,QAAQ/3K,GAAG6zF,EAAEhnH,EAAEs4J,IAAIoD,EAAE17J,EAAEqpN,IAAIj2N,EAAEnQ,EAAE1D,OAAO,IAAI4X,EAAE,EAAEA,EAAE/D,IAAI+D,EAAE+tH,EAAEtpI,EAAE+vN,YAAY1oN,EAAEkU,IAAIk/B,MAAM6uF,EAAEprH,MAAMu8B,MAAM6uF,EAAEhnF,MAAM/K,EAAEjoC,KAAKiM,GAAGy7F,SAASo0B,EAAE7vH,GAAG6vH,EAAE7vH,IAAI,EAAEukK,EAAEvkK,GAAGukK,EAAEvkK,IAAI,EAAEoyB,EAAE+/L,eAAetiG,EAAE7vH,GAAG,IAAI+tH,EAAEprH,IAAI,GAAGorH,EAAEhnF,IAAI,EAAEw9H,EAAEvkK,IAAI+tH,EAAEprH,IAAIktH,EAAE7vH,IAAI+tH,EAAEhnF,KAAK,SAASqrL,GAAG3tO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE/xF,EAAE5zC,OAAO,IAAI0D,EAAE,EAAEA,EAAEiiI,IAAIjiI,EAAEkU,EAAEvb,EAAE+vN,YAAYx4K,EAAElwC,IAAIozC,MAAMl/B,EAAE2C,MAAMu8B,MAAMl/B,EAAE+mC,MAAM7uB,EAAEnkB,KAAKjI,GAAG2vG,SAASh3G,EAAEke,IAAIH,KAAKG,IAAIle,EAAEke,IAAI3C,EAAE2C,KAAKle,EAAEsiD,IAAIvkC,KAAKukC,IAAItiD,EAAEsiD,IAAI/mC,EAAE+mC,MAAM,IAAIsrL,GAAGtB,GAAG/uB,OAAO,CAACmrB,oBAAoB,WAAW,IAAI1oO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE/b,KAAK8pI,EAAE/tH,EAAEiM,QAAQmmB,EAAEpyB,EAAEypM,MAAM11M,KAAK63M,SAAS/iM,EAAE7I,EAAE8zM,2BAA2BjkF,EAAE9B,EAAEgmF,QAAQxvC,EAAE,GAAGtoK,EAAE4M,EAAEzgB,OAAO,GAAG4X,EAAE2C,IAAI/P,OAAOwtJ,kBAAkBpgJ,EAAE+mC,IAAIn0C,OAAO0/N,uBAAkB,IAASziG,EAAE,IAAIprI,EAAE,GAAGorI,GAAGprI,EAAEwX,IAAIxX,EAAEorI,OAAE,KAAU33G,EAAErP,EAAEpkB,IAAIgrI,MAAM,IAAIhrI,EAAE,EAAEA,EAAEwX,IAAIxX,EAAEu3C,EAAE5J,GAAGla,EAAErP,EAAEpkB,IAAImJ,OAAOmG,KAAK87H,EAAEoiG,GAAGjyN,EAAEukK,EAAErsJ,EAAE8jB,GAAGo2L,GAAGpyN,EAAEkY,EAAE8jB,GAAGksK,EAAExG,KAAKn9B,EAAG,SAAS9/K,GAAGqH,EAAErH,EAAE08K,IAAIlkK,OAAOxY,EAAEytO,KAAKlyN,EAAE2C,IAAIH,KAAKG,IAAI3C,EAAE2C,IAAIulM,EAAEvlM,IAAI7W,IAAIkU,EAAE+mC,IAAIvkC,KAAKukC,IAAI/mC,EAAE+mC,IAAImhK,EAAEnhK,IAAIj7C,MAAOkU,EAAE2C,IAAIulM,EAAEzlG,SAASziG,EAAE2C,OAAOu8B,MAAMl/B,EAAE2C,KAAK3C,EAAE2C,IAAI,EAAE3C,EAAE+mC,IAAImhK,EAAEzlG,SAASziG,EAAE+mC,OAAO7H,MAAMl/B,EAAE+mC,KAAK/mC,EAAE+mC,IAAI,EAAE/mC,EAAEgxN,0BAA0BK,kBAAkB,WAAW,IAAI5sO,EAAE,OAAOR,KAAKq2E,eAAe93D,KAAKC,KAAKxe,KAAK0J,MAAM,KAAKlJ,EAAEyjN,EAAEj8L,QAAQo7L,WAAWpjN,KAAKgoB,QAAQkrM,OAAO30M,KAAKC,KAAKxe,KAAKwK,OAAOhK,EAAEgjN,cAAc6pB,yBAAyB,WAAWrtO,KAAKq2E,gBAAgBr2E,KAAKkzN,MAAMrpN,WAAWq2N,iBAAiB,SAAS1/N,EAAEyzB,GAAG,OAAOj0B,KAAKkrO,eAAelrO,KAAKwlN,MAAM11M,KAAK63M,SAAS1zL,GAAGnkB,KAAKtP,KAAKyvN,iBAAiB,SAASzvN,GAAG,OAAOR,KAAKoxN,qBAAqBpxN,KAAK6zN,cAAcrzN,GAAGR,KAAK2sO,aAAa3sO,KAAK4sO,cAAczB,iBAAiB,SAAS3qO,GAAG,OAAOR,KAAK2sO,YAAY3sO,KAAKorO,mBAAmB5qO,GAAGR,KAAK4sO,aAAajc,gBAAgB,SAASnwN,GAAG,IAAIyzB,EAAEj0B,KAAK6tO,eAAe,OAAOrtO,EAAE,GAAGA,EAAEyzB,EAAE9vB,OAAO,EAAE,KAAKnE,KAAKiwN,iBAAiBh8L,EAAEzzB,OAAa4tO,GAAGnkN,UAAN8jN,GAAmB,IAAIO,GAAGrqB,EAAE1G,eAAegxB,GAAGtqB,EAAEM,KAAKT,MAAU0qB,GAAG,CAACxkO,SAAS,OAAOkpN,MAAM,CAACjgM,SAASswC,GAAGwiK,WAAWE,cAAc,SAASwI,GAAGjuO,EAAEyzB,GAAG,OAAOgwL,EAAEzlG,SAASh+G,IAAIA,GAAG,EAAEA,EAAEyzB,EAAE,IAAIy6M,GAAGpC,GAAGvuB,OAAO,CAACmrB,oBAAoB,WAAW,IAAI1oO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEnuC,KAAK4kB,EAAEupB,EAAEnmB,QAAQ4jH,EAAEz9F,EAAEq3K,MAAMllC,EAAE10C,EAAE97H,KAAK63M,SAAS3vM,EAAEm2B,EAAEkoC,eAAe,SAAStxD,EAAEvkB,GAAG,OAAOwX,EAAExX,EAAE+mN,UAAUp5K,EAAEnoB,GAAGxlB,EAAEinN,UAAUt5K,EAAEnoB,GAAGmoB,EAAEzvB,IAAI/P,OAAOwtJ,kBAAkBhuH,EAAE2U,IAAIn0C,OAAO0/N,kBAAkBlgM,EAAEwgM,WAAWhgO,OAAOwtJ,kBAAkB,IAAIvsH,EAAEhrB,EAAEkrM,QAAQ,QAAG,IAASlgL,EAAE,IAAIpvC,EAAE,EAAEA,EAAE8/K,EAAEn8K,OAAO3D,IAAI,GAAGyzB,EAAE23G,EAAEg8E,eAAepnN,GAAGorI,EAAEumF,iBAAiB3xN,IAAIukB,EAAEkP,SAAI,IAASA,EAAEu3G,MAAM,CAAC57F,GAAE,EAAG,MAAM,GAAGhrB,EAAEkrM,SAASlgL,EAAE,CAAC,IAAI3W,EAAE,GAAG,IAAIz4B,EAAE,EAAEA,EAAE8/K,EAAEn8K,OAAO3D,IAAI,CAAC,IAAIuqI,EAAE,EAAE92G,EAAE23G,EAAEg8E,eAAepnN,IAAIE,UAAK,IAASkkB,EAAEkrM,cAAS,IAAS77L,EAAEu3G,MAAMhrI,EAAE,GAAGyzB,EAAEu3G,OAAOx7F,KAAK,KAAK,GAAG47F,EAAEumF,iBAAiB3xN,IAAIukB,EAAEkP,GAAG,SAAI,IAASgF,EAAE8xG,KAAK9xG,EAAE8xG,GAAG,IAAIhvH,EAAE,EAAE+tH,GAAGjiI,EAAEy4K,EAAE9/K,GAAGsP,MAAM3L,OAAO4X,EAAE+tH,EAAE/tH,IAAI,CAAC,IAAIwtH,EAAEtwG,EAAE8xG,GAAGhzF,EAAE5J,EAAEoiL,YAAY1oN,EAAEkU,IAAIk/B,MAAMlD,EAAEr5B,MAAMu8B,MAAMlD,EAAE+K,MAAM7uB,EAAEnkB,KAAKiM,GAAGy7F,QAAQz/D,EAAEr5B,IAAI,GAAGq5B,EAAE+K,IAAI,IAAIymF,EAAExtH,GAAGwtH,EAAExtH,IAAI,EAAEwtH,EAAExtH,IAAIg8B,EAAE+K,MAAMmhK,EAAExG,KAAKxkL,EAAG,SAASz4B,GAAG,GAAGA,EAAE2D,OAAO,EAAE,CAAC,IAAI8vB,EAAEgwL,EAAEvlM,IAAIle,GAAGu3C,EAAEksK,EAAEnhK,IAAItiD,GAAG2tC,EAAEzvB,IAAIH,KAAKG,IAAIyvB,EAAEzvB,IAAIuV,GAAGka,EAAE2U,IAAIvkC,KAAKukC,IAAI3U,EAAE2U,IAAI/K,WAAY,IAAIv3C,EAAE,EAAEA,EAAE8/K,EAAEn8K,OAAO3D,IAAI,GAAGyzB,EAAE23G,EAAEg8E,eAAepnN,GAAGorI,EAAEumF,iBAAiB3xN,IAAIukB,EAAEkP,GAAG,IAAIlY,EAAE,EAAE+tH,GAAGjiI,EAAEy4K,EAAE9/K,GAAGsP,MAAM3L,OAAO4X,EAAE+tH,EAAE/tH,IAAIg8B,EAAE5J,EAAEoiL,YAAY1oN,EAAEkU,IAAIk/B,MAAMlD,EAAEr5B,MAAMu8B,MAAMlD,EAAE+K,MAAM7uB,EAAEnkB,KAAKiM,GAAGy7F,QAAQz/D,EAAEr5B,IAAI,GAAGq5B,EAAE+K,IAAI,IAAI3U,EAAEzvB,IAAIH,KAAKG,IAAIq5B,EAAEr5B,IAAIyvB,EAAEzvB,KAAKyvB,EAAE2U,IAAIvkC,KAAKukC,IAAI/K,EAAE+K,IAAI3U,EAAE2U,KAAK,IAAI/K,EAAEr5B,MAAMyvB,EAAEwgM,WAAWpwN,KAAKG,IAAIq5B,EAAEr5B,IAAIyvB,EAAEwgM,cAAcxgM,EAAEzvB,IAAIulM,EAAEzlG,SAASrwE,EAAEzvB,KAAKyvB,EAAEzvB,IAAI,KAAKyvB,EAAE2U,IAAImhK,EAAEzlG,SAASrwE,EAAE2U,KAAK3U,EAAE2U,IAAI,KAAK3U,EAAEwgM,WAAW1qB,EAAEzlG,SAASrwE,EAAEwgM,YAAYxgM,EAAEwgM,WAAW,KAAK3uO,KAAK+sO,0BAA0BA,uBAAuB,WAAW,IAAIvsO,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQkrM,MAAM1yN,EAAEke,IAAI+vN,GAAGx6M,EAAEvV,IAAIle,EAAEke,KAAKle,EAAEsiD,IAAI2rL,GAAGx6M,EAAE6uB,IAAItiD,EAAEsiD,KAAKtiD,EAAEke,MAAMle,EAAEsiD,MAAM,IAAItiD,EAAEke,KAAK,OAAOle,EAAEke,KAAKle,EAAEke,IAAIH,KAAKq7L,IAAI,GAAGr7L,KAAKs7B,MAAM00L,GAAG/tO,EAAEke,MAAM,GAAGle,EAAEsiD,IAAIvkC,KAAKq7L,IAAI,GAAGr7L,KAAKs7B,MAAM00L,GAAG/tO,EAAEsiD,MAAM,KAAKtiD,EAAEke,IAAI,EAAEle,EAAEsiD,IAAI,KAAK,OAAOtiD,EAAEke,MAAMle,EAAEke,IAAIH,KAAKq7L,IAAI,GAAGr7L,KAAKs7B,MAAM00L,GAAG/tO,EAAEsiD,MAAM,IAAI,OAAOtiD,EAAEsiD,MAAMtiD,EAAEsiD,IAAI,IAAItiD,EAAEke,IAAIH,KAAKq7L,IAAI,GAAGr7L,KAAKs7B,MAAM00L,GAAG/tO,EAAEke,MAAM,GAAG,IAAI,OAAOle,EAAEmuO,aAAqBnuO,EAAEmuO,WAAVnuO,EAAEke,IAAI,EAAele,EAAEke,IAAIle,EAAEsiD,IAAI,EAAevkC,KAAKq7L,IAAI,GAAGr7L,KAAKs7B,MAAM00L,GAAG/tO,EAAEsiD,OAAoB,IAAIumL,WAAW,WAAW,IAAI7oO,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQkrM,MAAMn7K,GAAGv3C,EAAE61E,eAAexuE,EAAE,CAAC6W,IAAI+vN,GAAGx6M,EAAEvV,KAAKokC,IAAI2rL,GAAGx6M,EAAE6uB,MAAM/mC,EAAEvb,EAAE0yN,MAAM,SAAS1yN,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE,GAAG+tH,EAAEwkG,GAAG9tO,EAAEke,IAAIH,KAAKq7L,IAAI,GAAGr7L,KAAKs7B,MAAM00L,GAAGt6M,EAAEvV,QAAQyvB,EAAE5vB,KAAKs7B,MAAM00L,GAAGt6M,EAAE6uB,MAAMl+B,EAAErG,KAAKC,KAAKyV,EAAE6uB,IAAIvkC,KAAKq7L,IAAI,GAAGzrK,IAAI,IAAI27F,GAAG/xF,EAAEx5B,KAAKs7B,MAAM00L,GAAGt6M,EAAE06M,aAAa9mO,EAAE0W,KAAKs7B,MAAM5lB,EAAE06M,WAAWpwN,KAAKq7L,IAAI,GAAG7hK,IAAIh8B,EAAEnY,KAAKkmI,GAAGA,EAAEjiI,EAAE0W,KAAKq7L,IAAI,GAAG7hK,KAAKA,EAAEx5B,KAAKs7B,MAAM00L,GAAGzkG,IAAIjiI,EAAE0W,KAAKs7B,MAAMiwF,EAAEvrH,KAAKq7L,IAAI,GAAG7hK,KAAK,IAAI6zF,EAAE7zF,EAAE,EAAEx5B,KAAKq7L,IAAI,GAAGr7L,KAAKqiC,IAAI7I,IAAI,EAAE,GAAGh8B,EAAEnY,KAAKkmI,GAAG,MAAOjiI,IAAIA,EAAE,EAAE+jI,IAAI7zF,GAAG,EAAE,EAAE6zF,GAAG9B,EAAEvrH,KAAK06B,MAAMpxC,EAAE0W,KAAKq7L,IAAI,GAAG7hK,GAAG6zF,GAAGA,QAAQ7zF,EAAE5J,GAAG4J,IAAI5J,GAAGtmC,EAAE+c,GAAG,IAAI07J,EAAEguD,GAAG9tO,EAAEsiD,IAAIgnF,GAAG,OAAO/tH,EAAEnY,KAAK08K,GAAGvkK,EAAnd,CAAsdlU,EAAErH,GAAGA,EAAEsiD,IAAImhK,EAAEnhK,IAAI/mC,GAAGvb,EAAEke,IAAIulM,EAAEvlM,IAAI3C,GAAGkY,EAAEpqB,SAASkuC,GAAGA,EAAEv3C,EAAE2I,MAAM3I,EAAEsiD,IAAItiD,EAAE4I,IAAI5I,EAAEke,MAAMle,EAAE2I,MAAM3I,EAAEke,IAAIle,EAAE4I,IAAI5I,EAAEsiD,KAAK/K,GAAGh8B,EAAElS,WAAWugO,qBAAqB,WAAWpqO,KAAK4uO,WAAW5uO,KAAKkzN,MAAM1pN,QAAQ8iO,GAAG55M,UAAU03M,qBAAqBl1M,KAAKl1B,OAAOkgO,iBAAiB,SAAS1/N,EAAEyzB,GAAG,OAAOj0B,KAAKkrO,eAAelrO,KAAKwlN,MAAM11M,KAAK63M,SAAS1zL,GAAGnkB,KAAKtP,KAAKmwN,gBAAgB,SAASnwN,GAAG,IAAIyzB,EAAEj0B,KAAK4uO,WAAW,OAAOpuO,EAAE,GAAGA,EAAEyzB,EAAE9vB,OAAO,EAAE,KAAKnE,KAAKiwN,iBAAiBh8L,EAAEzzB,KAAKquO,mBAAmB,SAASruO,GAAG,IAAIyzB,EAAE1V,KAAKs7B,MAAM00L,GAAG/tO,IAAI,OAAO+d,KAAKs7B,MAAMr5C,EAAE+d,KAAKq7L,IAAI,GAAG3lL,IAAI1V,KAAKq7L,IAAI,GAAG3lL,IAAI60L,WAAW,WAAW,IAAItoN,EAAER,KAAKi0B,EAAEzzB,EAAEke,IAAIq5B,EAAE,EAAEu0L,GAAG55M,UAAUo2L,WAAW5zL,KAAK10B,GAAG,IAAIyzB,IAAIA,EAAEzzB,EAAEquO,mBAAmBruO,EAAEmuO,YAAY52L,EAAEu2L,GAAG9tO,EAAEwnB,QAAQkrM,MAAM7P,SAASN,EAAEj7K,OAAO66K,iBAAiBniN,EAAEiwN,SAASjwN,EAAEmsO,YAAY4B,GAAGt6M,GAAGzzB,EAAEsuO,aAAa/2L,EAAEv3C,EAAEosO,aAAa2B,GAAG/tO,EAAEsiD,KAAKyrL,GAAGt6M,KAAK,EAAE8jB,IAAIk4K,iBAAiB,SAASzvN,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE,EAAE,OAAOv3C,GAAGyzB,EAAE4/L,cAAcrzN,IAAIyzB,EAAEvV,KAAKle,EAAE,IAAIu3C,GAAGw2L,GAAG/tO,GAAGyzB,EAAE04M,aAAa14M,EAAE24M,YAAY34M,EAAE66M,cAAc76M,EAAEm9L,mBAAmBr5K,IAAIozL,iBAAiB,SAAS3qO,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEm3M,mBAAmB5qO,GAAG,OAAO,IAAIu3C,GAAG,IAAI9jB,EAAEvV,IAAI,EAAEH,KAAKq7L,IAAI,GAAG3lL,EAAE04M,aAAa50L,EAAE9jB,EAAE66M,cAAc76M,EAAE24M,gBAAsB8B,GAAGzkN,UAANukN,GAAmB,IAAIO,GAAG9qB,EAAE1G,eAAeyxB,GAAG/qB,EAAEzG,sBAAsByxB,GAAGhrB,EAAEj8L,QAAQxjB,QAAQ0qO,GAAG,CAACn8N,SAAQ,EAAGo8N,SAAQ,EAAGnlO,SAAS,YAAYqqN,WAAW,CAACthN,SAAQ,EAAG8iD,MAAM,kBAAkB41J,UAAU,EAAEO,WAAW,GAAGC,iBAAiB,GAAGyC,UAAU,CAAC4F,UAAS,GAAIpB,MAAM,CAACkc,mBAAkB,EAAGC,cAAc,yBAAyBC,iBAAiB,EAAEC,iBAAiB,EAAEt8M,SAASswC,GAAGwiK,WAAWvnB,QAAQ+V,YAAY,CAACxhN,SAAQ,EAAGswM,SAAS,GAAGpwL,SAAS,SAASzyB,GAAG,OAAOA,KAAK,SAASgvO,GAAGhvO,GAAG,IAAIyzB,EAAEzzB,EAAE0yN,MAAM,OAAOj/L,EAAElhB,SAASvS,EAAEuS,QAAQg8N,GAAG96M,EAAEovL,SAASN,EAAEj7K,OAAO66K,iBAAiB,EAAE1uL,EAAEq7M,iBAAiB,EAAE,SAASG,GAAGjvO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,GAAG,OAAOvb,IAAIqH,GAAGrH,IAAIub,EAAE,CAAC5S,MAAM8qB,EAAE8jB,EAAE,EAAE3uC,IAAI6qB,EAAE8jB,EAAE,GAAGv3C,EAAEqH,GAAGrH,EAAEub,EAAE,CAAC5S,MAAM8qB,EAAE8jB,EAAE3uC,IAAI6qB,GAAG,CAAC9qB,MAAM8qB,EAAE7qB,IAAI6qB,EAAE8jB,GAAG,SAAS23L,GAAGlvO,GAAG,OAAO,IAAIA,GAAG,MAAMA,EAAE,SAASA,EAAE,IAAI,OAAO,QAAQ,SAASmvO,GAAGnvO,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAE4J,EAAEzyB,EAAEzd,EAAE,EAAE,GAAGo8M,EAAEjuM,QAAQie,GAAG,IAAIlY,EAAE,EAAE+tH,EAAE71G,EAAE9vB,OAAO4X,EAAE+tH,IAAI/tH,EAAEvb,EAAE4gO,SAASntM,EAAElY,GAAGg8B,EAAExc,EAAE4S,GAAGA,GAAGtmC,OAAOrH,EAAE4gO,SAASntM,EAAE8jB,EAAExc,EAAE4S,GAAG,SAASyhM,GAAGpvO,EAAEyzB,EAAE8jB,GAAG,KAAKv3C,GAAG,MAAMA,EAAEu3C,EAAEzyB,GAAG2O,EAAElP,EAAE,GAAGvkB,EAAE,KAAKA,EAAE,MAAMu3C,EAAEzyB,GAAG2O,EAAElP,GAAG,SAAS8qN,GAAGrvO,GAAG,OAAOyjN,EAAE3lG,SAAS99G,GAAGA,EAAE,EAAE,IAAIsvO,GAAGhD,GAAG/uB,OAAO,CAACgrB,cAAc,WAAW,IAAIvoO,EAAER,KAAKQ,EAAEkJ,MAAMlJ,EAAE0gC,SAAS1gC,EAAEgK,OAAOhK,EAAEynC,UAAUznC,EAAEs0E,WAAW06J,GAAGhvO,EAAEwnB,SAAS,EAAExnB,EAAEw0N,QAAQz2M,KAAKs7B,MAAMr5C,EAAEkJ,MAAM,GAAGlJ,EAAEy0N,QAAQ12M,KAAKs7B,OAAOr5C,EAAEgK,OAAOhK,EAAEs0E,YAAY,GAAGt0E,EAAEuvO,YAAYxxN,KAAKG,IAAIle,EAAEgK,OAAOhK,EAAEs0E,WAAWt0E,EAAEkJ,OAAO,GAAGw/N,oBAAoB,WAAW,IAAI1oO,EAAER,KAAKi0B,EAAEzzB,EAAEglN,MAAMztK,EAAEppC,OAAOwtJ,kBAAkBt0J,EAAE8G,OAAO0/N,kBAAkBpqB,EAAExG,KAAKxpL,EAAEnkB,KAAK63M,SAAU,SAAS5rM,EAAE+tH,GAAG,GAAG71G,EAAEk+L,iBAAiBroF,GAAG,CAAC,IAAI37F,EAAEla,EAAE2zL,eAAe99E,GAAGm6E,EAAExG,KAAK1hM,EAAEjM,KAAM,SAASmkB,EAAElY,GAAG,IAAI+tH,GAAGtpI,EAAEqzN,cAAc5/L,GAAGgnB,MAAM6uF,IAAI37F,EAAEr+B,KAAKiM,GAAGy7F,SAASz/D,EAAEx5B,KAAKG,IAAIorH,EAAE/xF,GAAGlwC,EAAE0W,KAAKukC,IAAIgnF,EAAEjiI,SAAWrH,EAAEke,IAAIq5B,IAAIppC,OAAOwtJ,kBAAkB,EAAEpkH,EAAEv3C,EAAEsiD,IAAIj7C,IAAI8G,OAAO0/N,kBAAkB,EAAExmO,EAAErH,EAAEusO,0BAA0BK,kBAAkB,WAAW,OAAO7uN,KAAKC,KAAKxe,KAAK+vO,YAAYP,GAAGxvO,KAAKgoB,WAAWoiN,qBAAqB,WAAW,IAAI5pO,EAAER,KAAK8sO,GAAGp6M,UAAU03M,qBAAqBl1M,KAAK10B,GAAGA,EAAE+zN,YAAY/zN,EAAEglN,MAAM11M,KAAKgpM,OAAOrvM,IAAK,WAAW,IAAIwqB,EAAEgwL,EAAEhxL,SAASzyB,EAAEwnB,QAAQusM,YAAYthM,SAAS3Z,UAAU9Y,GAAG,OAAOyzB,GAAG,IAAIA,EAAEA,EAAE,MAAOisM,iBAAiB,SAAS1/N,EAAEyzB,GAAG,OAAOj0B,KAAK6zN,cAAc7zN,KAAKwlN,MAAM11M,KAAK63M,SAAS1zL,GAAGnkB,KAAKtP,KAAKopO,IAAI,WAAW,IAAIppO,EAAER,KAAKgoB,QAAQxnB,EAAEuS,SAASvS,EAAE+zN,YAAYxhN,QAAQ,SAASvS,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAEkoM,EAAEj8L,QAAQo7L,WAAW5iN,EAAEwnB,QAAQusM,aAAazqF,EAAE,CAAC8B,EAAE,EAAE9B,EAAEtpI,EAAEkJ,MAAMlJ,EAAE,EAAEwb,EAAExb,EAAEgK,OAAOhK,EAAEs0E,YAAY3mC,EAAE,GAAG3tC,EAAEoB,IAAI4+N,KAAKzkN,EAAEozB,OAAO3uC,EAAEwvO,iBAAiB,GAAG,IAAIprN,EAAEgnH,EAAE00C,EAAEtoK,EAAExX,EAAEglN,MAAM11M,KAAKgpM,OAAO30M,OAAO,IAAI8vB,EAAE,EAAEA,EAAEjc,EAAEic,IAAI,CAACpsB,EAAErH,EAAEyvO,iBAAiBh8M,EAAEzzB,EAAEuvO,YAAY,GAAGnrN,EAAEpkB,EAAEoB,IAAIgqI,EAAE7vH,EAAEynM,WAA8BzrK,EAAEksK,EAAEjuM,QAAvBsqK,EAAE9/K,EAAE+zN,YAAYtgM,IAAkB,CAAC/O,EAAE++L,EAAEisB,YAAYtrN,EAAEA,EAAE47M,KAAKlgD,GAAGv7J,EAAEu7J,EAAEn8K,OAAOynI,GAAG,CAAC1mH,EAAEN,EAAE27M,YAAYjgD,GAAG52K,MAAMqb,EAAE6mH,GAAGprI,EAAEwvO,iBAAiB/7M,GAAG8jB,EAAE,IAAIhzB,EAAEvkB,EAAE2vO,cAAcl8M,GAAG2b,EAAEq0K,EAAE2mB,UAAU7lN,GAAG,IAAIkU,EAAEw2M,GAAG7/L,EAAE/nC,EAAE0zB,EAAEwc,EAAE7yB,EAAE,EAAE,KAAK6lH,EAAE0kG,GAAG7/L,EAAE/nC,EAAEyd,EAAEyyB,EAAEhzB,EAAE,GAAG,KAAKkU,EAAE9vB,MAAM2gI,EAAE8B,IAAI9B,EAAE8B,EAAE3yG,EAAE9vB,MAAMglC,EAAEy9F,EAAE7mH,GAAGkU,EAAE7vB,IAAI0gI,EAAEA,IAAIA,EAAEA,EAAE7wG,EAAE7vB,IAAI+kC,EAAE27F,EAAE/kH,GAAGgmH,EAAE5hI,MAAM2gI,EAAEtpI,IAAIspI,EAAEtpI,EAAEuqI,EAAE5hI,MAAMglC,EAAE3tC,EAAEukB,GAAGgmH,EAAE3hI,IAAI0gI,EAAE9tH,IAAI8tH,EAAE9tH,EAAE+uH,EAAE3hI,IAAI+kC,EAAEnyB,EAAE+I,GAAGvkB,EAAE4vO,cAAc5vO,EAAEuvO,YAAYjmG,EAAE37F,GAAnpB,CAAupBnuC,MAAMA,KAAKqwO,eAAe,EAAE,EAAE,EAAE,IAAID,cAAc,SAAS5vO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK+b,EAAEkY,EAAE23G,EAAErtH,KAAKy7L,IAAIjiK,EAAE6zF,GAAG9B,EAAEvrH,KAAKukC,IAAI7uB,EAAE61G,EAAEjiI,EAAE6B,MAAM,GAAG6U,KAAKy7L,IAAIjiK,EAAE+xF,GAAG37F,GAAGla,EAAEzzB,EAAE+d,KAAKw7L,IAAIhiK,EAAEv3C,GAAGokB,GAAGrG,KAAKukC,IAAI7uB,EAAEjY,GAAGnU,EAAE2C,OAAO3C,EAAEitE,YAAY,GAAGv2D,KAAKw7L,IAAIhiK,EAAE/7B,GAAGD,EAAE8zN,GAAG9zN,GAAG+tH,EAAE+lG,GAAG/lG,GAAG37F,EAAE0hM,GAAG1hM,GAAGvpB,EAAEirN,GAAGjrN,GAAG/c,EAAEkoO,YAAYxxN,KAAKG,IAAIH,KAAKs7B,MAAMr5C,GAAGub,EAAE+tH,GAAG,GAAGvrH,KAAKs7B,MAAMr5C,GAAG2tC,EAAEvpB,GAAG,IAAI/c,EAAEwoO,eAAet0N,EAAE+tH,EAAE37F,EAAEvpB,IAAIyrN,eAAe,SAAS7vO,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE/b,KAAiD4kB,EAAEmzB,EAAEh8B,EAAEg0N,YAAYnkG,EAAE7vH,EAAEvR,OAAOuR,EAAE+4D,WAAWjtE,EAAEkU,EAAEg0N,YAAYh0N,EAAEi5M,QAAQz2M,KAAKs7B,OAAzFr5C,EAAEub,EAAEg0N,aAA9Bh0N,EAAErS,MAAMuqB,EAAElY,EAAEg0N,cAAmH,EAAEh0N,EAAE9P,MAAM8P,EAAEk5M,QAAQ12M,KAAKs7B,OAAOj1B,EAAEgnH,GAAG,EAAE7vH,EAAEhQ,IAAIgQ,EAAE+4D,aAAaq7J,cAAc,SAAS3vO,GAAG,IAAIyzB,EAAEj0B,KAAKwlN,MAAMztK,GAAGv3C,GAAG,IAAIyzB,EAAEnkB,KAAKgpM,OAAO30M,UAAU8vB,EAAEjM,SAAS,IAAIuiM,YAAY,IAAI,IAAI,OAAOxyK,EAAE,EAAEA,EAAE,IAAIA,GAAGx5B,KAAKu7L,GAAG,EAAE,KAAKob,8BAA8B,SAAS10N,GAAG,IAAIyzB,EAAEj0B,KAAK,GAAGikN,EAAE3G,cAAc98M,GAAG,OAAOi+H,IAAI,IAAI1mF,EAAE9jB,EAAE87M,aAAa97M,EAAE6uB,IAAI7uB,EAAEvV,KAAK,OAAOuV,EAAEjM,QAAQkrM,MAAMrpN,SAASoqB,EAAE6uB,IAAItiD,GAAGu3C,GAAGv3C,EAAEyzB,EAAEvV,KAAKq5B,GAAGk4L,iBAAiB,SAASzvO,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAKmwO,cAAc3vO,GAAG+d,KAAKu7L,GAAG,EAAE,MAAM,CAACv+K,EAAEhd,KAAKw7L,IAAIhiK,GAAG9jB,EAAEj0B,KAAKg1N,QAAQ1vM,EAAE/G,KAAKy7L,IAAIjiK,GAAG9jB,EAAEj0B,KAAKi1N,UAAUM,yBAAyB,SAAS/0N,EAAEyzB,GAAG,OAAOj0B,KAAKiwO,iBAAiBzvO,EAAER,KAAKk1N,8BAA8BjhM,KAAKq8M,gBAAgB,SAAS9vO,GAAG,IAAIyzB,EAAEj0B,KAAK0e,IAAIq5B,EAAE/3C,KAAK8iD,IAAI,OAAO9iD,KAAKu1N,yBAAyB/0N,GAAG,EAAER,KAAKw0N,YAAY,EAAEvgM,EAAE,GAAG8jB,EAAE,EAAEA,EAAE9jB,EAAE,GAAG8jB,EAAE,EAAE9jB,EAAE,IAAIi4M,UAAU,WAAW,IAAI1rO,EAAEyzB,EAAE8jB,EAAElwC,EAAE7H,KAAK+b,EAAElU,EAAEjG,IAAIkoI,EAAEjiI,EAAEmgB,QAAQmmB,EAAE27F,EAAE4kF,UAAU9pM,EAAEklH,EAAEuqF,WAAWzoF,EAAEmjG,GAAGnqN,EAAE6mM,UAAUt9K,EAAEs9K,WAAWnrC,EAAEyuD,GAAGnqN,EAAEixC,MAAM1nB,EAAE0nB,OAAO,GAAGi0E,EAAEyqF,YAAYxhN,SAAS,SAASvS,GAAG,IAAIyzB,EAAEzzB,EAAEoB,IAAIm2C,EAAEv3C,EAAEwnB,QAAQngB,EAAEkwC,EAAEw8K,YAAYx4M,EAAEyzN,GAAGz3L,GAAG+xF,EAAEtpI,EAAE00N,8BAA8Bn9K,EAAEm7K,MAAMrpN,QAAQrJ,EAAEke,IAAIle,EAAEsiD,KAAK3U,EAAE81K,EAAEj8L,QAAQo7L,WAAWv7M,GAAGosB,EAAEmtL,OAAOntL,EAAEusM,KAAKryL,EAAEgB,OAAOlb,EAAEktM,aAAa,SAAS,IAAI,IAAIv8M,EAAEpkB,EAAEglN,MAAM11M,KAAKgpM,OAAO30M,OAAO,EAAEygB,GAAG,EAAEA,IAAI,CAAC,IAAkB07J,EAAE9/K,EAAEyvO,iBAAiBrrN,EAAEklH,GAAnC,IAAIllH,EAAE7I,EAAE,EAAE,GAA6B,GAAG/D,EAAEg3N,GAAGnnO,EAAE8+N,UAAU/hN,EAAEm+L,EAAEj7K,OAAO26K,kBAAkBxuL,EAAEs3L,UAAUvzM,EAAE,IAAI+M,EAAEvkB,EAAE2vO,cAAcvrN,GAAGgrB,EAAEq0K,EAAE2mB,UAAU7lN,GAAGkP,EAAE0wL,UAAU+qB,GAAG9/L,GAAGggM,GAAGhgM,EAAEpvC,EAAEwvO,iBAAiBprN,GAAG07J,GAAGqvD,GAAG17M,EAAEzzB,EAAE+zN,YAAY3vM,GAAG07J,EAAEnyI,EAAEq1K,YAAYvvL,EAAEotL,UAAre,CAAgfx5M,GAAGsmC,EAAEp7B,SAASkxM,EAAExG,KAAK51M,EAAEqrN,MAAO,SAAS1yN,EAAEu3C,GAAG,IAAIA,IAAI9jB,EAAEpsB,EAAEqtN,8BAA8BrtN,EAAEgmO,eAAe91L,IAAI,SAASv3C,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAEtpI,EAAEoB,IAAIusC,EAAEla,EAAEqgM,SAAS1vM,EAAEpkB,EAAEglN,MAAM11M,KAAKgpM,OAAO30M,OAAOynI,EAAEojG,GAAG/6M,EAAE4hC,MAAMhuD,EAAE,GAAGy4K,EAAE0uD,GAAG/6M,EAAEw3L,UAAU5jN,EAAE,GAAG,IAAIsmC,GAAGvpB,IAAIgnH,GAAG00C,EAAE,CAAC,GAAGx2C,EAAEs3E,OAAOt3E,EAAE0hF,YAAY5/E,EAAE9B,EAAE2hF,UAAUnrC,EAAEx2C,EAAE2iF,cAAc3iF,EAAE2iF,YAAYx4L,EAAE+3L,YAAY,IAAIliF,EAAE4iF,eAAez4L,EAAEg4L,kBAAkB,GAAGniF,EAAEw3E,YAAYnzK,EAAE27F,EAAEm3E,IAAIzgN,EAAEw0N,QAAQx0N,EAAEy0N,QAAQl9K,EAAE,EAAE,EAAEx5B,KAAKu7L,QAAQ,CAAC/9L,EAAEvb,EAAEyvO,iBAAiB,EAAEl4L,GAAG+xF,EAAEk3E,OAAOjlM,EAAEwf,EAAExf,EAAEuJ,GAAG,IAAI,IAAItN,EAAE,EAAEA,EAAE4M,EAAE5M,IAAI+D,EAAEvb,EAAEyvO,iBAAiBj4N,EAAE+/B,GAAG+xF,EAAEy3E,OAAOxlM,EAAEwf,EAAExf,EAAEuJ,GAAGwkH,EAAEo3E,YAAYp3E,EAAE23E,SAAS33E,EAAEu3E,WAA1c,CAAsdx5M,EAAEsmC,EAAEla,EAAE8jB,MAAOnzB,EAAE7R,SAAS64H,GAAG00C,EAAE,CAAC,IAAIvkK,EAAEqlM,OAAOrlM,EAAE0vM,UAAU7/E,EAAE7vH,EAAEyvM,YAAYlrC,EAAEvkK,EAAE0wM,cAAc1wM,EAAE0wM,YAAYwiB,GAAG,CAACrqN,EAAEonM,WAAW79K,EAAE69K,WAAW,MAAMjwM,EAAE2wM,eAAeuiB,GAAG,CAACrqN,EAAEqnM,iBAAiB99K,EAAE89K,iBAAiB,KAAKzrN,EAAEqH,EAAE29M,MAAM11M,KAAKgpM,OAAO30M,OAAO,EAAE3D,GAAG,EAAEA,IAAIyzB,EAAEpsB,EAAEqtN,8BAA8BprF,EAAEopF,MAAMrpN,QAAQhC,EAAE6W,IAAI7W,EAAEi7C,KAAK/K,EAAElwC,EAAEooO,iBAAiBzvO,EAAEyzB,GAAGlY,EAAEulM,YAAYvlM,EAAEilM,OAAOn5M,EAAEmtN,QAAQntN,EAAEotN,SAASl5M,EAAEwlM,OAAOxpK,EAAExc,EAAEwc,EAAEzyB,GAAGvJ,EAAE0lM,SAAS1lM,EAAEslM,YAAY8qB,YAAY,WAAW,IAAI3rO,EAAER,KAAKi0B,EAAEzzB,EAAEoB,IAAIm2C,EAAEv3C,EAAEwnB,QAAQkrM,MAAM,GAAGn7K,EAAEhlC,QAAQ,CAAC,IAAIlL,EAAEkU,EAAE+tH,EAAEtpI,EAAE2vO,cAAc,GAAGhiM,EAAE81K,EAAEj8L,QAAQo7L,WAAWrrK,GAAGnzB,EAAEmqN,GAAGh3L,EAAE4uL,UAAU5jB,EAAEj7K,OAAO26K,kBAAkBxuL,EAAEmtL,OAAOntL,EAAEusM,KAAKryL,EAAEgB,OAAOlb,EAAEmpJ,UAAU58K,EAAEw0N,QAAQx0N,EAAEy0N,SAAShhM,EAAE+oL,OAAOlzE,GAAG71G,EAAE0wL,UAAU,SAAS1wL,EAAEktM,aAAa,SAASld,EAAExG,KAAKj9M,EAAE0yN,MAAO,SAASppF,EAAE8B,IAAI,IAAIA,GAAG7zF,EAAEluC,WAAWhC,EAAErH,EAAE00N,8BAA8B10N,EAAEqtO,eAAejiG,IAAI7zF,EAAEq3L,oBAAoBrzN,EAAEkY,EAAEssM,YAAYz2F,GAAGpgI,MAAMuqB,EAAEs3L,UAAUxzK,EAAEs3L,cAAcp7M,EAAE85L,UAAUhyM,EAAE,EAAEg8B,EAAEw3L,kBAAkB1nO,EAAEsmC,EAAEhO,KAAK,EAAE4X,EAAEu3L,iBAAiBvzN,EAAE,EAAEg8B,EAAEw3L,iBAAiBphM,EAAEhO,KAAK,EAAE4X,EAAEu3L,mBAAmBr7M,EAAEs3L,UAAU3mM,EAAEqP,EAAEmtM,SAASt3F,EAAE,GAAGjiI,MAAOosB,EAAEotL,YAAY+qB,WAAWnoB,EAAEvvF,OAAao7G,GAAG7lN,UAANilN,GAAmB,IAAIqB,GAAGtsB,EAAE/F,YAAYsyB,GAAGvsB,EAAEj8L,QAAQxjB,QAAQisO,GAAGxsB,EAAE1G,eAAemzB,GAAG/hO,OAAOgiO,mBAAmB,iBAAiBC,GAAGjiO,OAAOwM,kBAAkB,iBAAiB01N,GAAG,CAACzxL,YAAY,CAAC0xL,QAAO,EAAG3wM,KAAK,EAAE4wM,MAAM,KAAK5xL,OAAO,CAAC2xL,QAAO,EAAG3wM,KAAK,IAAI4wM,MAAM,IAAIn/L,OAAO,CAACk/L,QAAO,EAAG3wM,KAAK,IAAI4wM,MAAM,IAAIr/L,KAAK,CAACo/L,QAAO,EAAG3wM,KAAK,KAAK4wM,MAAM,IAAIj/L,IAAI,CAACg/L,QAAO,EAAG3wM,KAAK,MAAM4wM,MAAM,IAAIprN,KAAK,CAACmrN,QAAO,EAAG3wM,KAAK,OAAO4wM,MAAM,GAAG9tN,MAAM,CAAC6tN,QAAO,EAAG3wM,KAAK,OAAO4wM,MAAM,IAAIC,QAAQ,CAACF,QAAO,EAAG3wM,KAAK,OAAO4wM,MAAM,GAAGv3L,KAAK,CAACs3L,QAAO,EAAG3wM,KAAK,SAAS8wM,GAAGz0N,OAAOC,KAAKo0N,IAAI,SAASz0E,GAAG57J,EAAEyzB,GAAG,OAAOzzB,EAAEyzB,EAAE,SAASi9M,GAAG1wO,GAAG,OAAOyjN,EAAE1G,eAAe/8M,EAAEqnE,KAAKnpD,IAAIle,EAAE0yN,MAAMx0M,KAAK,SAASyyN,GAAG3wO,GAAG,OAAOyjN,EAAE1G,eAAe/8M,EAAEqnE,KAAK/kB,IAAItiD,EAAE0yN,MAAMpwK,KAAK,SAASsuL,GAAG5wO,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE,SAASvb,EAAEyzB,EAAE8jB,GAAG,IAAI,IAAIlwC,EAAEkU,EAAE+tH,EAAE37F,EAAE,EAAEvpB,EAAEpkB,EAAE2D,OAAO,EAAEgqC,GAAG,GAAGA,GAAGvpB,GAAG,CAAC,GAAG7I,EAAEvb,GAAGqH,EAAEsmC,EAAEvpB,GAAG,GAAG,IAAI,KAAKklH,EAAEtpI,EAAEqH,IAAIkU,EAAE,MAAM,CAACs1N,GAAG,KAAKC,GAAGxnG,GAAG,GAAGA,EAAE71G,GAAG8jB,EAAE5J,EAAEtmC,EAAE,MAAM,CAAC,KAAKkU,EAAEkY,GAAG8jB,GAAG,MAAM,CAACs5L,GAAGt1N,EAAEu1N,GAAGxnG,GAAGllH,EAAE/c,EAAE,GAAG,MAAM,CAACwpO,GAAGvnG,EAAEwnG,GAAG,MAAhM,CAAuM9wO,EAAEyzB,EAAE8jB,GAAG+xF,EAAE/tH,EAAEs1N,GAAGt1N,EAAEu1N,GAAGv1N,EAAEs1N,GAAG7wO,EAAEA,EAAE2D,OAAO,GAAG3D,EAAE,GAAG2tC,EAAEpyB,EAAEs1N,GAAGt1N,EAAEu1N,GAAGv1N,EAAEu1N,GAAG9wO,EAAEA,EAAE2D,OAAO,GAAG3D,EAAE,GAAGokB,EAAEupB,EAAEla,GAAG61G,EAAE71G,GAAoC,OAAO61G,EAAEjiI,IAAtBsmC,EAAEtmC,GAAGiiI,EAAEjiI,KAAzB+c,GAAGmzB,EAAE+xF,EAAE71G,IAAIrP,EAAE,GAAgC,SAAS2sN,GAAG/wO,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAEgxO,SAAS3pO,EAAErH,EAAEwnB,QAAQ6/C,KAAK9rD,EAAElU,EAAE4pO,OAAO3nG,EAAE/tH,GAAGlU,EAAEkb,OAAOorB,EAAEla,EAAE,MAAM,mBAAmBlY,IAAIoyB,EAAEpyB,EAAEoyB,IAAI81K,EAAEzlG,SAASrwE,KAAKA,EAAE,iBAAiB27F,EAAE/xF,EAAE5d,MAAMgU,EAAE27F,GAAG/xF,EAAE5d,MAAMgU,IAAI,OAAOA,GAAGA,GAAGpyB,GAAG,mBAAmB+tH,IAAI37F,EAAE27F,EAAE71G,GAAGgwL,EAAEzlG,SAASrwE,KAAKA,EAAE4J,EAAE5d,MAAMgU,KAAKA,GAAG,SAASujM,GAAGlxO,EAAEyzB,GAAG,GAAGgwL,EAAE3G,cAAcrpL,GAAG,OAAO,KAAK,IAAI8jB,EAAEv3C,EAAEwnB,QAAQ6/C,KAAKhgE,EAAE0pO,GAAG/wO,EAAEA,EAAEqzN,cAAc5/L,IAAI,OAAO,OAAOpsB,GAAKkwC,EAAEkB,QAAQpxC,GAAGrH,EAAEgxO,SAASzmK,QAAQljE,EAAEkwC,EAAEkB,QAAvCpxC,EAAkD,SAASqwD,GAAG13D,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEqsN,GAAG9sO,OAAO,IAAI4X,EAAEk1N,GAAGhoO,QAAQzI,GAAGub,EAAE6I,EAAE,IAAI7I,EAAE,GAAGoyB,GAAG27F,EAAE+mG,GAAGI,GAAGl1N,KAAKg1N,MAAMjnG,EAAEinG,MAAMH,GAAG9mG,EAAEgnG,QAAQvyN,KAAKC,MAAMu5B,EAAE9jB,IAAIka,EAAE27F,EAAE3pG,QAAQt4B,EAAE,OAAOopO,GAAGl1N,GAAG,OAAOk1N,GAAGrsN,EAAE,GAAG,SAAS+sN,GAAGnxO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAE+tH,EAAE,GAAG37F,EAAE,GAAGvpB,EAAEqP,EAAE9vB,OAAO,IAAI0D,EAAE,EAAEA,EAAE+c,IAAI/c,EAAEsmC,EAAEpyB,EAAEkY,EAAEpsB,IAAIA,EAAEiiI,EAAElmI,KAAK,CAACrC,MAAMwa,EAAE+qN,OAAM,IAAK,OAAO,IAAIliN,GAAGmzB,EAAE,SAASv3C,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAE37F,EAAE3tC,EAAEgxO,SAAS5sN,GAAGupB,EAAE48B,QAAQ92C,EAAE,GAAG1yB,MAAMsG,GAAG+jI,EAAE33G,EAAEA,EAAE9vB,OAAO,GAAG5C,MAAM,IAAIwa,EAAE6I,EAAE7I,GAAG6vH,EAAE7vH,GAAGoyB,EAAEtrC,IAAIkZ,EAAE,EAAElU,IAAIiiI,EAAE/xF,EAAEh8B,KAAK,IAAIkY,EAAE61G,GAAGg9F,OAAM,GAAI,OAAO7yM,EAAzJ,CAA4JzzB,EAAEspI,EAAE37F,EAAE4J,GAAG+xF,EAAE,IAAIwnG,GAAGhF,GAAGvuB,OAAO,CAACloL,WAAW,WAAW71B,KAAKyjO,oBAAoB6I,GAAG55M,UAAUmD,WAAWX,KAAKl1B,OAAOw6E,OAAO,WAAW,IAAIh6E,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQ+vB,EAAE9jB,EAAE4zC,OAAO5zC,EAAE4zC,KAAK,IAAIhgE,EAAErH,EAAEgxO,SAAS,IAAI3L,GAAGC,MAAM7xM,EAAE29M,SAAS33L,MAAM,OAAOs2L,GAAG,aAAax4L,EAAEh1B,OAAO,cAAc,eAAewtN,GAAG,aAAax4L,EAAEr5B,IAAI,WAAW,aAAa6xN,GAAG,aAAax4L,EAAE+K,IAAI,WAAW,aAAamhK,EAAEpG,QAAQ9lK,EAAE85L,eAAehqO,EAAE4lC,WAAW6+L,GAAG55M,UAAU8nD,OAAO7iC,MAAMn3C,EAAE8Y,YAAYu6M,cAAc,SAASrzN,GAAG,OAAOA,QAAG,IAASA,EAAEA,IAAIA,EAAEA,EAAEA,GAAG8rO,GAAG55M,UAAUmhM,cAAc3+L,KAAKl1B,KAAKQ,IAAI0oO,oBAAoB,WAAW,IAAI1oO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAE5kB,KAAK4rI,EAAEhnH,EAAE4gM,MAAMllC,EAAE17J,EAAE4sN,SAASx5N,EAAE4M,EAAEoD,QAAQjD,EAAE/M,EAAE6vD,KAAKppB,MAAM,MAAM7O,EAAEghM,GAAG33M,EAAEy3M,GAAG3lG,EAAE,GAAGxB,EAAE,GAAGzmH,EAAE,GAAG7iB,EAAE2kB,EAAEsjN,aAAa,IAAI1nO,EAAE,EAAEu3C,EAAE93C,EAAEkE,OAAO3D,EAAEu3C,IAAIv3C,EAAEsiB,EAAElf,KAAK8tO,GAAG9sN,EAAE3kB,EAAEO,KAAK,IAAIA,EAAE,EAAEu3C,GAAG6zF,EAAE97H,KAAK63M,UAAU,IAAIxjN,OAAO3D,EAAEu3C,IAAIv3C,EAAE,GAAGorI,EAAEumF,iBAAiB3xN,GAAG,GAA6ByjN,EAAE5Y,UAA5BtvL,EAAE6vH,EAAE97H,KAAK63M,SAASnnN,GAAGsP,MAAkB,IAAI,IAAIy5H,EAAE/oI,GAAG,GAAGyzB,EAAE,EAAEpsB,EAAEkU,EAAE5X,OAAO8vB,EAAEpsB,IAAIosB,EAAE61G,EAAE4nG,GAAG9sN,EAAE7I,EAAEkY,IAAI82G,EAAEnnI,KAAKkmI,GAAGP,EAAE/oI,GAAGyzB,GAAG61G,OAAOP,EAAE/oI,GAAGsiB,EAAEtZ,MAAM,GAAG2kC,IAAI48F,EAAEA,EAAE/xH,OAAO8J,GAAGqrB,GAAE,QAASo7F,EAAE/oI,GAAG,GAAGsiB,EAAE3e,SAASyrC,EAAErxB,KAAKG,IAAIkxB,EAAE9sB,EAAE,IAAImW,EAAE1a,KAAKukC,IAAI7pB,EAAEnW,EAAEA,EAAE3e,OAAO,KAAK4mI,EAAE5mI,SAAS4mI,EAAEhzF,EAAE,EAAE,SAASv3C,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE,GAAG+tH,EAAE,GAAG,IAAI71G,EAAE,EAAE8jB,EAAEv3C,EAAE2D,OAAO8vB,EAAE8jB,IAAI9jB,EAAElY,EAAElU,EAAErH,EAAEyzB,MAAMlY,EAAElU,IAAG,EAAGiiI,EAAElmI,KAAKiE,IAAI,OAAOiiI,EAAjG,CAAoGiB,GAAGlvH,KAAKugJ,IAAIrxB,EAAElvH,KAAKugJ,IAAIxsH,EAAErxB,KAAKG,IAAIkxB,EAAEm7F,EAAE,IAAI9xG,EAAE1a,KAAKukC,IAAI7pB,EAAE8xG,EAAEA,EAAE5mI,OAAO,KAAKyrC,EAAE8hM,GAAG9sN,EAAEssN,GAAGl5N,KAAK43B,EAAE3W,EAAEy4M,GAAG9sN,EAAEusN,GAAGn5N,KAAKihB,EAAE2W,EAAEA,IAAIghM,IAAItwD,EAAEv1G,QAAQrwB,KAAKqR,MAAMhnC,GAAG6qB,EAAE3W,EAAEA,IAAIy3M,IAAIpwD,EAAEolD,MAAMhrL,KAAKqR,MAAMhnC,GAAG,EAAEkU,EAAErU,EAAElG,IAAIH,KAAKG,IAAIkxB,EAAE3W,GAAGrU,EAAEk+B,IAAIvkC,KAAKukC,IAAIlT,EAAE,EAAE3W,GAAGrU,EAAE5jB,OAAO,GAAG4jB,EAAEktN,YAAY,CAAChiO,KAAKi7H,EAAE48E,SAASp+E,EAAEuvE,OAAOh2L,IAAIumN,WAAW,WAAW,IAAI7oO,EAAEyzB,EAAE8jB,EAAElwC,EAAE7H,KAAK+b,EAAElU,EAAE6W,IAAIorH,EAAEjiI,EAAEi7C,IAAI3U,EAAEtmC,EAAEmgB,QAAQpD,EAAEupB,EAAE+kL,MAAMtnF,EAAEz9F,EAAE05B,KAAKy4G,EAAEz4K,EAAEiqO,YAAY95N,EAAE,GAAG+M,EAAEld,EAAEkqO,iBAAiBh2N,GAAG6zB,EAAEhrB,EAAE2B,OAAO0S,EAAEkV,EAAE6jM,aAAa,IAAI1xD,EAAE,SAAS1wI,GAAG,SAASA,GAAG,WAAW3W,EAAEqnJ,EAAExwK,KAAK,WAAW8/B,EAAE0wI,EAAEw4B,OAAO,SAASt4M,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAE+tH,EAAEtpI,EAAEgxO,SAASrjM,EAAE3tC,EAAEwnB,QAAQpD,EAAEupB,EAAE05B,KAAK+jE,EAAEhnH,EAAE65B,MAAMyZ,GAAGtzC,EAAEqtN,QAAQh+M,EAAE8jB,EAAElwC,GAAGy4K,EAAEkwD,GAAG,CAAC5rN,EAAEuoN,SAASvoN,EAAEstN,aAAa,IAAIl6N,EAAE,SAAS4zH,GAAGhnH,EAAEutN,WAAWptN,EAAEkP,EAAE2b,EAAE,GAAG,GAAG53B,IAAI+M,GAAG+kH,EAAE/+D,QAAQhmD,EAAE,UAAU/M,IAAI+M,GAAG+kH,EAAE/+D,QAAQhmD,EAAE/M,EAAE,MAAM4zH,GAAG9B,EAAEvkI,KAAKwyC,EAAE9jB,EAAE23G,GAAG,IAAI00C,EAAE,MAAMrsJ,EAAE,QAAQ8jB,EAAE,uCAAuCuoI,EAAE,IAAI10C,EAAE,IAAI7vH,EAAEgJ,EAAEhJ,EAAEg8B,EAAEh8B,GAAG+tH,EAAEjnI,IAAIkZ,EAAEukK,EAAE10C,GAAGh8F,EAAEhsC,KAAKmY,GAAG,OAAOA,IAAIg8B,GAAG,UAAU5J,EAAEikM,QAAQxiM,EAAEhsC,KAAKmY,GAAG6zB,EAArY,CAAwY/nC,EAAEkU,EAAE+tH,EAAE/kH,GAAG,UAAUopB,EAAEikM,QAAQ9xD,EAAEn8K,SAAS4X,EAAEukK,EAAE,GAAGx2C,EAAEw2C,EAAEA,EAAEn8K,OAAO,IAAI4X,EAAE21N,GAAG7pO,EAAEqpO,GAAG/iM,KAAKpyB,EAAE+tH,EAAE4nG,GAAG7pO,EAAEspO,GAAGhjM,KAAK27F,EAAEtpI,EAAE,EAAEyzB,EAAEqsJ,EAAEn8K,OAAO3D,EAAEyzB,IAAIzzB,GAAGu3C,EAAEuoI,EAAE9/K,KAAKub,GAAGg8B,GAAG+xF,GAAG9xH,EAAEpU,KAAKm0C,GAAG,OAAOlwC,EAAE6W,IAAI3C,EAAElU,EAAEi7C,IAAIgnF,EAAEjiI,EAAEwqO,MAAMzmG,EAAEntF,OAAO75B,EAAEgjN,SAAS1vK,GAAG0zE,EAAEqmG,QAAQpqO,EAAE6W,IAAI7W,EAAEi7C,IAAI/9B,GAAG,SAASvkB,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,GAAG,IAAI+tH,EAAE37F,EAAE,IAAI27F,EAAEmnG,GAAG9sO,OAAO,EAAE2lI,GAAGmnG,GAAGhoO,QAAQ8uC,GAAG+xF,IAAI,GAAW+mG,GAAR1iM,EAAE8iM,GAAGnnG,IAASgnG,QAAQtwO,EAAEgxO,SAASjsO,KAAKwW,EAAElU,EAAEsmC,IAAIla,EAAE,EAAE,OAAOka,EAAE,OAAO8iM,GAAGl5L,EAAEk5L,GAAGhoO,QAAQ8uC,GAAG,GAA3J,CAA+JlwC,EAAEmQ,EAAE7T,OAAOynI,EAAEqmG,QAAQpqO,EAAE6W,IAAI7W,EAAEi7C,MAAMj7C,EAAEyqO,WAAW1tN,EAAEkiN,MAAMp2F,SAAS,SAAS7oI,EAAEwqO,MAAM,SAAS7xO,GAAG,IAAI,IAAIyzB,EAAEg9M,GAAGhoO,QAAQzI,GAAG,EAAEu3C,EAAEk5L,GAAG9sO,OAAO8vB,EAAE8jB,IAAI9jB,EAAE,GAAG48M,GAAGI,GAAGh9M,IAAI68M,OAAO,OAAOG,GAAGh9M,GAAxF,CAA4FpsB,EAAEwqO,YAAO,EAAOxqO,EAAE7G,OAAO,SAASR,EAAEyzB,EAAE8jB,EAAElwC,GAAG,GAAG,WAAWA,IAAIrH,EAAE2D,OAAO,MAAM,CAAC,CAAC0jE,KAAK5zC,EAAEipJ,IAAI,GAAG,CAACr1G,KAAK9vB,EAAEmlI,IAAI,IAAI,IAAInhK,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAE,GAAGtoK,EAAE,CAACic,GAAG,IAAIlY,EAAE,EAAE+tH,EAAEtpI,EAAE2D,OAAO4X,EAAE+tH,IAAI/tH,GAAG6I,EAAEpkB,EAAEub,IAAIkY,GAAGrP,EAAEmzB,GAAG//B,EAAEpU,KAAKghB,GAAG,IAAI5M,EAAEpU,KAAKm0C,GAAGh8B,EAAE,EAAE+tH,EAAE9xH,EAAE7T,OAAO4X,EAAE+tH,IAAI/tH,EAAE6vH,EAAE5zH,EAAE+D,EAAE,GAAY6I,EAAE5M,EAAE+D,QAAG,KAAhBoyB,EAAEn2B,EAAE+D,EAAE,UAAsB,IAAS6vH,GAAGrtH,KAAK06B,OAAO2yF,EAAEz9F,GAAG,KAAKvpB,GAAG07J,EAAE18K,KAAK,CAACikE,KAAKjjD,EAAEs4J,IAAInhK,GAAG+tH,EAAE,KAAK,OAAOw2C,EAArT,CAAwTz4K,EAAEiqO,YAAYhiO,KAAKiM,EAAE+tH,EAAE7wG,GAAGpxB,EAAE0qO,SAAS,SAAS/xO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,GAAG,IAAI+tH,EAAE37F,EAAEvpB,EAAE,EAAEgnH,EAAE,EAAE,OAAO7vH,EAAElR,QAAQopB,EAAE9vB,SAAS2lI,EAAEsnG,GAAG5wO,EAAE,OAAOyzB,EAAE,GAAG,OAAOrP,EAAE,IAAIqP,EAAE9vB,OAAO,EAAE2lI,GAAGsnG,GAAG5wO,EAAE,OAAOyzB,EAAE,GAAG,OAAO61G,GAAG,EAAE37F,EAAEijM,GAAG5wO,EAAE,OAAOyzB,EAAEA,EAAE9vB,OAAO,GAAG,OAAOynI,EAAE,IAAI33G,EAAE9vB,OAAOgqC,GAAGA,EAAEijM,GAAG5wO,EAAE,OAAOyzB,EAAEA,EAAE9vB,OAAO,GAAG,QAAQ,GAAG,CAACgF,MAAMyb,EAAExb,IAAIwiI,EAAE4mG,OAAO,GAAG5tN,EAAE,EAAEgnH,IAApQ,CAAyQ/jI,EAAE7G,OAAOgX,EAAE,EAAE,EAAEm2B,GAAGvpB,EAAE/a,SAASmO,EAAEnO,UAAU8nO,GAAG9pO,EAAEmQ,EAAEnQ,EAAEyqO,aAAapS,iBAAiB,SAAS1/N,EAAEyzB,GAAG,IAAI8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAEy5L,SAASz1N,EAAEg8B,EAAEytK,MAAM11M,KAAKg6H,EAAE/xF,EAAE/vB,QAAQ6/C,KAAK15B,EAAEpyB,EAAE+8L,QAAQt4M,EAAEub,EAAE+8L,OAAO30M,OAAO4X,EAAE+8L,OAAOt4M,GAAG,GAAGokB,EAAE7I,EAAE4rM,SAAS1zL,GAAGnkB,KAAKtP,GAAG,OAAOyjN,EAAE5Y,SAASzmL,KAAKupB,EAAE4J,EAAE87K,cAAcjvM,IAAIklH,EAAE2oG,cAAc5qO,EAAEkb,OAAOwuN,GAAGx5L,EAAE5J,GAAG27F,EAAE2oG,eAAe,iBAAiBtkM,EAAEA,EAAEtmC,EAAEkb,OAAOwuN,GAAGx5L,EAAE5J,GAAG27F,EAAE+nG,eAAea,WAAWC,mBAAmB,SAASnyO,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAoBiiI,EAAE9pI,KAAKgoB,QAAQmmB,EAAE27F,EAAEjiE,KAAKgqK,eAA+BjmG,EAAE5rI,KAAKsyO,WAAWhyD,EAAEnyI,EAAEy9F,GAAG5zH,EAAE+/B,EAAE9jB,GAAGlP,EAAE+kH,EAAEopF,MAAMtjL,EAAEg8F,GAAG00C,GAAGtoK,GAAGA,EAAE8uN,MAAM7tM,EAAlIj5B,KAAKwxO,SAAiIzuN,OAAOviB,EAAEqH,IAAI+nC,EAAE0wI,EAA9FnyI,EAAEnuC,KAAKqyO,SAA6FtnG,EAAEn7F,EAAE7qB,EAAE+hN,MAAM/hN,EAAE8hN,MAAMt9F,EAAEinG,GAAG,CAACzlG,EAAE93G,SAAS83G,EAAEs/F,aAAatlN,EAAEkO,SAASlO,EAAEslN,eAAe,OAAO9gG,EAAEA,EAAEtwG,EAAEhF,EAAE8jB,GAAG9e,GAAGmxM,qBAAqB,SAAS5pO,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAE,GAAG,IAAIosB,EAAE,EAAE8jB,EAAEv3C,EAAE2D,OAAO8vB,EAAE8jB,IAAI9jB,EAAEpsB,EAAEjE,KAAK5D,KAAK2yO,mBAAmBnyO,EAAEyzB,GAAG1yB,MAAM0yB,EAAEzzB,IAAI,OAAOqH,GAAG+qO,kBAAkB,SAASpyO,GAAG,IAAIyzB,EAAEj0B,KAAKuyO,SAASx6L,EAAEq5L,GAAGpxO,KAAKgB,OAAO,OAAOR,EAAE,OAAO,OAAOR,KAAKoxN,oBAAoBn9L,EAAE9qB,MAAM4uC,GAAG9jB,EAAEu+M,SAASviB,iBAAiB,SAASzvN,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE,KAAK,QAAG,IAASosB,QAAG,IAAS8jB,IAAIlwC,EAAE7H,KAAK8xO,YAAYnqB,SAAS5vK,GAAG9jB,IAAI,OAAOpsB,IAAIA,EAAE6pO,GAAG1xO,KAAKQ,IAAI,OAAOqH,EAAE,OAAO7H,KAAK4yO,kBAAkB/qO,IAAI8oN,gBAAgB,SAASnwN,GAAG,IAAIyzB,EAAEj0B,KAAK0wN,WAAW,OAAOlwN,GAAG,GAAGA,EAAEyzB,EAAE9vB,OAAOnE,KAAK4yO,kBAAkB3+M,EAAEzzB,GAAGe,OAAO,MAAM4pO,iBAAiB,SAAS3qO,GAAG,IAAIyzB,EAAEj0B,KAAKuyO,SAASx6L,EAAE/3C,KAAKorO,mBAAmB5qO,GAAGyzB,EAAEu+M,OAAOv+M,EAAE7qB,IAAIvB,EAAEupO,GAAGpxO,KAAKgB,OAAO,MAAM+2C,EAAE,QAAQ,OAAO/3C,KAAKwxO,SAAS7L,QAAQ99N,IAAIgrO,cAAc,SAASryO,GAAG,IAAIyzB,EAAEj0B,KAAKgoB,QAAQkrM,MAAMn7K,EAAE/3C,KAAK4B,IAAI2+N,YAAY//N,GAAGkJ,MAAM7B,EAAEo8M,EAAE4mB,UAAU7qO,KAAKq2E,eAAepiD,EAAEyzM,YAAYzzM,EAAEwzM,aAAa1rN,EAAEwC,KAAKw7L,IAAIlyM,GAAGiiI,EAAEvrH,KAAKy7L,IAAInyM,GAAGsmC,EAAEsiM,GAAGx8M,EAAEovL,SAASN,EAAEj7K,OAAO66K,iBAAiB,MAAM,CAACz9L,EAAE6yB,EAAEh8B,EAAEoyB,EAAE27F,EAAE/kH,EAAEgzB,EAAE+xF,EAAE37F,EAAEpyB,IAAI+2N,cAAc,SAAStyO,GAAG,OAAOR,KAAK6yO,cAAcryO,GAAG0kB,GAAG6sN,iBAAiB,SAASvxO,GAAG,IAAIyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEjM,QAAQ6/C,KAAKhgE,EAAEkwC,EAAE85L,eAAe91N,EAAElU,EAAEkwC,EAAE0G,OAAO52C,EAAEu3C,YAAY0qF,EAAE71G,EAAE0+M,mBAAmBnyO,EAAE,EAAEmxO,GAAG19M,EAAE,CAACzzB,GAAGyzB,EAAEq+M,YAAYv2N,GAAGoyB,EAAEla,EAAE4+M,cAAc/oG,GAAGllH,EAAErG,KAAKs7B,MAAM5lB,EAAEoiD,eAAepiD,EAAEvqB,MAAMykC,EAAEjpB,EAAE+O,EAAEzpB,OAAO2jC,EAAEppB,GAAG,OAAOkP,EAAEjM,QAAQnd,QAAQ+Z,IAAIA,EAAE,EAAEA,EAAE,KAA0O0sN,GAAGrnN,UAArO,CAACjgB,SAAS,SAASgoO,aAAa,SAASI,OAAO,OAAOR,SAAS,GAAG/pK,KAAK,CAAC4pK,QAAO,EAAGhzL,MAAK,EAAGxF,OAAM,EAAGgmJ,eAAc,EAAGkzC,YAAW,EAAGF,QAAQ,cAAcJ,eAAe,IAAI3e,MAAM,CAAC0U,UAAS,EAAGrhN,OAAO,OAAOugN,MAAM,CAACp2F,SAAQ,KAAsB,IAAIqiG,GAAG,CAACC,SAASxG,GAAGhuB,OAAO4vB,GAAGnI,YAAYyI,GAAGuE,aAAanD,GAAGjoK,KAAKypK,IAAI4B,GAAG,CAACR,SAAS,yBAAyBtzL,YAAY,gBAAgBD,OAAO,YAAYvN,OAAO,SAASF,KAAK,KAAKI,IAAI,QAAQnsB,KAAK,KAAK1C,MAAM,WAAW+tN,QAAQ,cAAcx3L,KAAK,QAAQqsL,GAAGC,MAAMF,SAAS,mBAAmBplO,EAAE,CAACkjC,IAAI,SAAS+J,QAAQ,WAAW,OAAOylM,IAAI/4M,MAAM,SAASlG,EAAE8jB,GAAG,MAAM,iBAAiB9jB,GAAG,iBAAiB8jB,EAAE9jB,EAAEzzB,EAAEyzB,EAAE8jB,GAAG9jB,aAAazzB,IAAIyzB,EAAEzzB,EAAEyzB,IAAIA,EAAEuwD,UAAUvwD,EAAE6kB,UAAU,MAAM/1B,OAAO,SAASkR,EAAE8jB,GAAG,OAAOv3C,EAAEyzB,GAAGlR,OAAOg1B,IAAIl1C,IAAI,SAASoxB,EAAE8jB,EAAElwC,GAAG,OAAOrH,EAAEyzB,GAAGpxB,IAAIk1C,EAAElwC,GAAGixC,WAAWvzC,KAAK,SAAS0uB,EAAE8jB,EAAElwC,GAAG,OAAOrH,EAAEyzB,GAAG1uB,KAAK/E,EAAEu3C,GAAGlwC,IAAIkjE,QAAQ,SAAS92C,EAAE8jB,EAAElwC,GAAG,OAAOosB,EAAEzzB,EAAEyzB,GAAG,YAAY8jB,EAAE9jB,EAAEk+M,WAAWtqO,GAAGixC,UAAU7kB,EAAE82C,QAAQhzB,GAAGe,WAAW4sL,MAAM,SAASzxM,EAAE8jB,GAAG,OAAOv3C,EAAEyzB,GAAGyxM,MAAM3tL,GAAGe,WAAW6sL,QAAQ,SAAS1xM,GAAG,OAAOzzB,EAAEyzB,KAAK,IAAI8uL,EAAEP,KAAK,SAAS,CAAC5yJ,QAAQ,CAACujL,OAAO,CAACC,WAAU,MAAO,IAAIC,GAAG,CAAC7qB,QAAQ,SAAShoN,GAAG,IAAIyzB,EAAEzzB,EAAEw4G,KAAKjhE,EAAEv3C,EAAEglN,MAAM39M,EAAEkwC,EAAE6vK,eAAe3zL,GAAGlY,EAAElU,GAAGkwC,EAAEo6K,iBAAiBl+L,IAAIpsB,EAAE2gN,QAAQ1e,WAAW,GAAGhgE,EAAE/tH,EAAE5X,QAAQ,EAAE,OAAO2lI,EAAE,SAAStpI,EAAEyzB,GAAG,OAAOA,EAAE61G,GAAG/tH,EAAEkY,GAAGmxL,OAAO,MAAM,MAAM1pD,SAAS,SAASl7J,GAAG,IAAIyzB,EAAEzzB,EAAEk7J,SAAS3jH,EAAE9jB,EAAEA,EAAEsH,EAAE,KAAK1zB,EAAEosB,EAAEA,EAAE3O,EAAE,KAAK,OAAO2+L,EAAEjuM,QAAQie,GAAG,SAASzzB,EAAEu3C,GAAG,OAAO9jB,EAAE8jB,IAAI,SAASv3C,GAAG,MAAM,CAAC+6B,EAAE,OAAOwc,EAAEv3C,EAAE+6B,EAAEwc,EAAEzyB,EAAE,OAAOzd,EAAErH,EAAE8kB,EAAEzd,MAAM,SAASyrO,GAAG9yO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAEvb,EAAEovH,QAAQ,GAAGka,EAAE/tH,EAAEi9F,KAAK,QAAG,IAAS8wB,IAAIA,IAAI/tH,EAAE+5C,kBAAiB,IAAKg0E,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAG,IAAKA,EAAE,MAAM,SAAS,GAAGjiI,EAAEgmB,WAAWi8G,EAAE,IAAItrB,SAAS32G,IAAI0W,KAAKs7B,MAAMhyC,KAAKA,EAAE,MAAM,MAAMiiI,EAAE,IAAI,MAAMA,EAAE,KAAKjiI,EAAEosB,EAAEpsB,KAAKA,IAAIosB,GAAGpsB,EAAE,GAAGA,GAAGkwC,IAAIlwC,EAAE,OAAOiiI,GAAG,IAAI,SAAS,MAAM,QAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,OAAO,MAAM,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,MAAM,OAAOA,EAAE,QAAQ,OAAM,GAAI,SAASypG,GAAG/yO,GAAG,OAAOA,EAAEiyC,GAAGghL,QAAQ,IAAI8B,yBAAyB,SAAS/0N,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAE3tC,EAAEiyC,GAAGghL,OAAO7uM,EAAEupB,EAAEnmB,QAAQ4jH,EAAEz9F,EAAEq3K,MAAM11M,KAAKgpM,OAAO30M,OAAOm8K,EAAE9/K,EAAEw4G,KAAKhhG,EAAE,GAAG,IAAI4zH,EAAE,OAAO,KAAK,IAAkC7zF,EAAEnzB,EAAEsuM,MAAMrpN,QAAQskC,EAAEzvB,IAAIyvB,EAAE2U,IAAIj7C,EAAEsmC,EAAEonL,yBAAyB,EAAzFthM,EAAErP,EAAEsuM,MAAMrpN,QAAQskC,EAAE2U,IAAI3U,EAAEzvB,KAAoE3C,EAAE,EAAEA,EAAE6vH,IAAI7vH,EAAE+tH,EAAE,UAAUw2C,GAAG,QAAQA,EAAEnyI,EAAEonL,yBAAyBx5M,EAAE,UAAUukK,EAAErsJ,EAAE8jB,GAAG5J,EAAEmiM,gBAAgBv0N,GAAG6I,EAAE8pM,UAAU4F,WAAWxqF,EAAE0pG,GAAG3rO,EAAE0zB,EAAEuuG,EAAE2pG,GAAG5rO,EAAEyd,EAAEwkH,EAAEohF,MAAM/8K,EAAEgiM,cAAcp0N,GAAGwC,KAAKu7L,GAAG,GAAG9hM,EAAEpU,KAAKkmI,GAAG,OAAO9xH,EAA3Z,CAA8ZxX,GAAG,SAASA,GAAG,IAAIyzB,EAAE8jB,EAAEv3C,EAAEiyC,GAAGm9E,QAAQ,GAAG/nH,EAAErH,EAAEiyC,GAAGghL,QAAQ,GAAG13M,EAAEvb,EAAEw4G,KAAK8wB,EAAE,KAAK,GAAGtrB,SAASziG,GAAG,OAAO,KAAK,GAAG,UAAUA,EAAE+tH,OAAE,IAAS/xF,EAAE27L,YAAY7rO,EAAEmE,OAAO+rC,EAAE27L,YAAY,QAAQ33N,EAAE+tH,OAAE,IAAS/xF,EAAE47L,SAAS9rO,EAAEkE,IAAIgsC,EAAE47L,cAAS,IAAS57L,EAAE67L,UAAU9pG,EAAE/xF,EAAE67L,UAAU/rO,EAAE4nN,eAAe3lF,EAAEjiI,EAAE4nN,gBAAgB,MAAM3lF,EAAE,CAAC,QAAG,IAASA,EAAEvuG,QAAG,IAASuuG,EAAExkH,EAAE,OAAOwkH,EAAE,GAAGm6E,EAAEzlG,SAASsrB,GAAG,MAAM,CAACvuG,GAAGtH,EAAEpsB,EAAEwuE,gBAAgByzD,EAAE,KAAKxkH,EAAE2O,EAAE,KAAK61G,GAAG,OAAO,KAAlZ,CAAwZtpI,GAAG,SAASqzO,GAAGrzO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAEkU,EAAEvb,EAAEyzB,GAAG+kF,KAAK8wB,EAAE,CAAC71G,GAAG,IAAI8jB,EAAE,OAAOh8B,EAAE,MAAK,IAAKA,IAAI,IAAI+tH,EAAE7gI,QAAQ8S,IAAI,CAAC,IAAIyiG,SAASziG,GAAG,OAAOA,EAAE,KAAKlU,EAAErH,EAAEub,IAAI,OAAM,EAAG,GAAGlU,EAAEksL,QAAQ,OAAOh4K,EAAE+tH,EAAElmI,KAAKmY,GAAGA,EAAElU,EAAEmxG,KAAK,OAAM,EAAG,SAAS86H,GAAGtzO,GAAG,IAAIyzB,EAAEzzB,EAAEw4G,KAAKjhE,EAAE,UAAU,OAAM,IAAK9jB,EAAE,MAAMuqF,SAASvqF,KAAK8jB,EAAE,YAAYs7L,GAAGt7L,GAAGv3C,IAAI,SAASuzO,GAAGvzO,GAAG,OAAOA,IAAIA,EAAEwuB,KAAK,SAAStf,GAAGlP,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,GAAG,IAAI+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE,GAAG/jI,GAAGkU,EAAE,CAAC,IAAIvb,EAAEwgN,OAAO/sL,EAAE,GAAGsH,EAAEtH,EAAE,GAAG3O,GAAGwkH,EAAE,EAAEA,EAAEjiI,IAAIiiI,EAAEm6E,EAAEK,OAAO/C,OAAO/gN,EAAEyzB,EAAE61G,EAAE,GAAG71G,EAAE61G,IAAI,QAAG,IAAS/xF,EAAE,GAAGmzK,MAAM,IAAI1qN,EAAE+gN,OAAOxpK,EAAEh8B,EAAE,GAAGwf,EAAEwc,EAAEh8B,EAAE,GAAGuJ,GAAGwkH,EAAE/tH,EAAE,EAAE+tH,EAAE,IAAIA,EAAEm6E,EAAEK,OAAO/C,OAAO/gN,EAAEu3C,EAAE+xF,GAAG/xF,EAAE+xF,EAAE,IAAG,QAAS,IAAI37F,EAAE4J,EAAE,GAAGy7L,GAAG5uN,EAAEmzB,EAAE,GAAG07L,GAAG7nG,EAAErtH,KAAKykL,KAAKzkL,KAAKq7L,IAAI7hK,EAAE,GAAGxc,EAAE4S,EAAE,GAAG5vB,KAAKq7L,IAAI7hK,EAAE,GAAGzyB,EAAEV,EAAE,IAAIklH,EAAE/tH,EAAE,EAAE+tH,EAAE,IAAIA,EAAEtpI,EAAEygN,IAAI9yK,EAAEvpB,EAAEgnH,EAAE7zF,EAAE+xF,GAAGohF,MAAMnzK,EAAE+xF,EAAE,GAAGohF,OAAM,IAAK,SAAS8oB,GAAGxzO,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,GAAG,IAAI37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAE6qB,EAAE3W,EAAE8xG,EAAE92G,EAAE9vB,OAAOolI,EAAE1hI,EAAEwkN,SAASvpM,EAAE,GAAG7iB,EAAE,GAAG+b,EAAE,EAAEuf,EAAE,EAAE,IAAI/6B,EAAE8gN,YAAYnzK,EAAE,EAAEvpB,EAAEmmH,EAAE58F,EAAEvpB,IAAIupB,EAAEn2B,EAAE+/B,EAAEuoI,EAAErsJ,EAAE23G,EAAEz9F,EAAE48F,GAAGq6E,MAAMx5E,EAAE/jI,GAAGkd,EAAEgvN,GAAGzzD,GAAG1wI,EAAEmkM,GAAG/7N,GAAG8xH,QAAG,IAAS7wG,GAAGlU,IAAIH,EAAEmmH,GAAG9xG,EAAEkV,EAAE,IAAIppB,GAAG6qB,GAAG5zB,EAAE8G,EAAElf,KAAK08K,GAAG/kJ,EAAEt7B,EAAE2D,KAAKoU,IAAIgE,GAAGuf,IAAIguG,GAAGxkH,GAAGjC,EAAElf,KAAK08K,GAAG1wI,GAAG3vC,EAAE2D,KAAKoU,KAAKtI,GAAGlP,EAAEsiB,EAAE7iB,EAAE+b,EAAEuf,GAAGvf,EAAEuf,EAAE,EAAEzY,EAAE,GAAG7iB,EAAE,KAAKyP,GAAGlP,EAAEsiB,EAAE7iB,EAAE+b,EAAEuf,GAAG/6B,EAAE0gN,YAAY1gN,EAAE+qN,UAAUxvM,EAAEvb,EAAEw4G,OAAO,IAAIi7H,GAAG,CAACjuN,GAAG,SAASkuN,oBAAoB,SAAS1zO,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,GAAG3tC,EAAEsP,KAAK63M,UAAU,IAAIxjN,OAAOygB,EAAEqP,EAAEm/M,UAAUxnG,EAAE,GAAG,IAAI/jI,EAAE,EAAEA,EAAEsmC,IAAItmC,EAAEiiI,EAAE,MAAM/tH,GAAGg8B,EAAEv3C,EAAEonN,eAAe//M,IAAI2gN,UAAUzsM,EAAE6zG,QAAQ7zG,aAAaiyM,GAAGK,OAAOvkF,EAAE,CAACiqD,QAAQvzL,EAAE2xN,iBAAiBtqN,GAAGmxG,KAAKs6H,GAAGv3N,EAAElU,EAAEsmC,GAAGq3K,MAAMhlN,EAAEiyC,GAAG12B,IAAIg8B,EAAEo8L,QAAQrqG,EAAE8B,EAAEhoI,KAAKkmI,GAAG,IAAIjiI,EAAE,EAAEA,EAAEsmC,IAAItmC,GAAGiiI,EAAE8B,EAAE/jI,MAAMiiI,EAAE9wB,KAAK66H,GAAGjoG,EAAE/jI,EAAE+c,GAAGklH,EAAE4xB,SAAS63E,GAAGzpG,GAAGA,EAAEsqG,OAAON,GAAGhqG,KAAKuqG,mBAAmB,SAAS7zO,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAEprI,EAAEszN,gCAAgCxzC,EAAE9/K,EAAEoB,IAAI,IAAIm2C,EAAE6zF,EAAEznI,OAAO,EAAE4zC,GAAG,IAAIA,GAAG9jB,EAAE23G,EAAE7zF,GAAGo8L,UAAUlgN,EAAE8/J,UAAUh4K,GAAGlU,EAAEosB,EAAEwe,IAAI2yK,MAAMt7E,EAAEjiI,EAAEiiM,WAAW,GAAcllL,EAAE7I,EAAE+5C,iBAAiBitJ,EAAEj7K,OAAO40J,cAAzCvuJ,EAAEla,EAAEmgN,SAAqDxvN,GAAGklH,EAAE3lI,SAAS8/M,EAAEK,OAAO3C,SAASrhC,EAAE9/K,EAAEqwN,WAAWmjB,GAAG1zD,EAAEx2C,EAAE37F,EAAEpyB,EAAE6I,EAAE/c,EAAEykN,OAAOrI,EAAEK,OAAOzC,WAAWvhC,OAAOg0D,GAAGrwB,EAAEO,IAAIC,cAAc8vB,GAAGtwB,EAAEvvF,KAAK8/G,GAAGvwB,EAAE1G,eAAe,SAASk3B,GAAGj0O,EAAEyzB,GAAG,OAAOzzB,EAAEk0O,eAAel0O,EAAEm0O,SAAS1gN,EAAEA,EAAEzzB,EAAEm0O,SAAS5xB,EAAEP,KAAK,SAAS,CAACqP,OAAO,CAAC9+M,SAAQ,EAAG/I,SAAS,MAAMqjL,MAAM,SAASiqC,WAAU,EAAGztN,SAAQ,EAAG65M,OAAO,IAAIztK,QAAQ,SAASz1C,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAEm1L,aAAavhN,EAAE7H,KAAKwlN,MAAMzpM,EAAElU,EAAE+/M,eAAe7vK,GAAGh8B,EAAEy7F,OAAO,OAAOz7F,EAAEy7F,QAAQ3vG,EAAEiI,KAAK63M,SAAS5vK,GAAGy/D,OAAO,KAAK3vG,EAAE2yE,UAAU+nJ,QAAQ,KAAKqS,QAAQ,KAAK97B,OAAO,CAAC67B,SAAS,GAAGngK,QAAQ,GAAGs9I,eAAe,SAAStxN,GAAG,IAAIyzB,EAAEzzB,EAAEsP,KAAK63M,SAAS5vK,EAAEv3C,EAAEwnB,QAAQ6pM,QAAQ,GAAGhqN,EAAEkwC,EAAE+gK,QAAQ/gK,EAAE+gK,OAAO47B,cAAc,OAAOl0O,EAAE8jO,yBAAyB76N,IAAK,SAASsuC,GAAG,IAAIh8B,EAAEg8B,EAAEg6K,WAAWpmG,SAAS9jH,EAAE,OAAE,GAAQ,MAAM,CAAC2hF,KAAKv1D,EAAE8jB,EAAEpuC,OAAO0rB,MAAMk2L,UAAUxvM,EAAE+5C,gBAAgB0hD,QAAQh3G,EAAE2xN,iBAAiBp6K,EAAEpuC,OAAO6iN,QAAQzwM,EAAEgwM,eAAe8oB,SAAS94N,EAAEiwM,WAAWU,eAAe3wM,EAAEkwM,iBAAiBP,SAAS3vM,EAAEmwM,gBAAgBT,UAAU1vM,EAAE0tM,YAAY+B,YAAYzvM,EAAEg6C,YAAYg3J,WAAWhxM,EAAEgxM,WAAWI,SAASpxM,EAAEoxM,SAAS/D,aAAarxK,EAAEpuC,QAAS3J,SAAS2xN,eAAe,SAASnxN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE4uB,SAAS9yB,cAAc,MAAMiyH,EAAEtpI,EAAEsP,KAAK63M,SAAS,IAAI5rM,EAAElN,aAAa,QAAQrO,EAAEwlB,GAAG,WAAWiO,EAAE,EAAE8jB,EAAE+xF,EAAE3lI,OAAO8vB,EAAE8jB,EAAE9jB,KAAKpsB,EAAEkU,EAAEjE,YAAY6yB,SAAS9yB,cAAc,QAAQC,YAAY6yB,SAAS9yB,cAAc,SAAStM,MAAMuqD,gBAAgBg0E,EAAE71G,GAAG6hC,gBAAgBg0E,EAAE71G,GAAGoB,OAAOxtB,EAAEiQ,YAAY6yB,SAASmuF,eAAegR,EAAE71G,GAAGoB,QAAQ,OAAOtZ,EAAE61M,aAAa,IAAIkjB,GAAGvvB,EAAExH,OAAO,CAACloL,WAAW,SAASr1B,GAAGyjN,EAAElG,OAAO/9M,KAAKQ,GAAGR,KAAK+0O,eAAe,GAAG/0O,KAAKg1O,aAAa,KAAKh1O,KAAKi1O,cAAa,GAAI5M,aAAakM,GAAG/5J,OAAO,SAASh6E,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK,OAAO6H,EAAEwgO,eAAexgO,EAAEq5B,SAAS1gC,EAAEqH,EAAEogC,UAAUhU,EAAEpsB,EAAE0gO,QAAQxwL,EAAElwC,EAAEihO,sBAAsBjhO,EAAEkhO,gBAAgBlhO,EAAEmhO,qBAAqBnhO,EAAEqtO,oBAAoBrtO,EAAEstO,cAActtO,EAAEutO,mBAAmBvtO,EAAE8hO,YAAY9hO,EAAE+hO,MAAM/hO,EAAEgiO,WAAWhiO,EAAEmiO,cAAcniO,EAAEoiO,SAASD,YAAYuK,GAAGzL,oBAAoByL,GAAGxL,cAAc,WAAW,IAAIvoO,EAAER,KAAKQ,EAAE61E,gBAAgB71E,EAAEkJ,MAAMlJ,EAAE0gC,SAAS1gC,EAAEyL,KAAK,EAAEzL,EAAE0L,MAAM1L,EAAEkJ,QAAQlJ,EAAEgK,OAAOhK,EAAEynC,UAAUznC,EAAEuL,IAAI,EAAEvL,EAAEwL,OAAOxL,EAAEgK,QAAQhK,EAAEo0E,YAAY,EAAEp0E,EAAEs0E,WAAW,EAAEt0E,EAAEq0E,aAAa,EAAEr0E,EAAEu0E,cAAc,EAAEv0E,EAAEypO,QAAQ,CAACvgO,MAAM,EAAEc,OAAO,IAAIw+N,mBAAmBuL,GAAGW,kBAAkBX,GAAGY,YAAY,WAAW,IAAI30O,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQ8wL,QAAQ,GAAG/gK,EAAEksK,EAAEhxL,SAASgB,EAAE69L,eAAe,CAACtxN,EAAEglN,OAAOhlN,IAAI,GAAGyzB,EAAE9e,SAAS4iC,EAAEA,EAAE5iC,OAAQ,SAAS4iC,GAAG,OAAO9jB,EAAE9e,OAAO4iC,EAAEv3C,EAAEglN,MAAM11M,SAAUtP,EAAEwnB,QAAQne,SAASkuC,EAAEluC,UAAUrJ,EAAE60O,YAAYt9L,GAAGq9L,iBAAiBb,GAAG5K,UAAU4K,GAAG3K,IAAI,WAAW,IAAIppO,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQ+vB,EAAE9jB,EAAE6kL,OAAOjxM,EAAEosB,EAAElhB,QAAQgJ,EAAEvb,EAAEoB,IAAIkoI,EAAEm6E,EAAEj8L,QAAQo7L,WAAWrrK,GAAG5J,EAAE27F,EAAE3pG,KAAKvb,EAAEpkB,EAAEu0O,eAAe,GAAGnpG,EAAEprI,EAAEypO,QAAQ3pD,EAAE9/K,EAAE61E,eAAe,GAAGiqG,GAAG10C,EAAEliI,MAAMlJ,EAAE0gC,SAAS0qG,EAAEphI,OAAO3C,EAAE,GAAG,IAAI+jI,EAAEliI,MAAM7B,EAAE,GAAG,EAAE+jI,EAAEphI,OAAOhK,EAAEynC,WAAWpgC,EAAE,CAAC,GAAGkU,EAAEykN,KAAK12F,EAAE36F,OAAOmxI,EAAE,CAAC,IAAItoK,EAAExX,EAAE80O,WAAW,CAAC,GAAGvwN,EAAE,EAAEhJ,EAAE4oM,UAAU,OAAO5oM,EAAEolN,aAAa,SAASld,EAAExG,KAAKj9M,EAAE60O,YAAa,SAAS70O,EAAEyzB,GAAG,IAAIpsB,EAAE4sO,GAAG18L,EAAE5J,GAAGA,EAAE,EAAEpyB,EAAEwkN,YAAY//N,EAAEgpF,MAAM9/E,OAAO,IAAIuqB,GAAGjc,EAAEA,EAAE7T,OAAO,GAAG0D,EAAE,EAAEkwC,EAAEy8B,QAAQo3D,EAAEliI,SAASqb,GAAGopB,EAAE4J,EAAEy8B,QAAQx8D,EAAEA,EAAE7T,QAAQ8vB,EAAE,EAAE,EAAE,IAAI,GAAGrP,EAAEqP,GAAG,CAAChoB,KAAK,EAAEF,IAAI,EAAErC,MAAM7B,EAAE2C,OAAO2jC,GAAGn2B,EAAEA,EAAE7T,OAAO,IAAI0D,EAAEkwC,EAAEy8B,UAAWo3D,EAAEphI,QAAQua,MAAM,CAAC,IAAI6qB,EAAEmI,EAAEy8B,QAAQv7C,EAAEz4B,EAAE+0O,aAAa,GAAGxqG,EAAEvqI,EAAEg1O,cAAc,GAAGjsG,EAAExxF,EAAEy8B,QAAQ1xD,EAAE,EAAE7iB,EAAE,EAAEgkN,EAAExG,KAAKj9M,EAAE60O,YAAa,SAAS70O,EAAEyzB,GAAG,IAAIpsB,EAAE4sO,GAAG18L,EAAE5J,GAAGA,EAAE,EAAEpyB,EAAEwkN,YAAY//N,EAAEgpF,MAAM9/E,MAAMuqB,EAAE,GAAGh0B,EAAEkuC,EAAE,EAAEyB,EAAEg8F,EAAEphI,SAAS++H,GAAGzmH,EAAEi1B,EAAEy8B,QAAQv7C,EAAEr1B,KAAKkf,GAAGioH,EAAEnnI,KAAK3D,GAAG6iB,EAAE,EAAE7iB,EAAE,GAAG6iB,EAAEvE,KAAKukC,IAAIhgC,EAAEjb,GAAG5H,GAAGkuC,EAAEyB,EAAEhrB,EAAEqP,GAAG,CAAChoB,KAAK,EAAEF,IAAI,EAAErC,MAAM7B,EAAE2C,OAAO2jC,KAAMo7F,GAAGzmH,EAAEmW,EAAEr1B,KAAKkf,GAAGioH,EAAEnnI,KAAK3D,GAAG2rI,EAAEliI,OAAO6/H,EAAE/oI,EAAEkJ,MAAMkiI,EAAEliI,MAAMlJ,EAAEgK,OAAOohI,EAAEphI,YAAYhK,EAAEkJ,MAAMkiI,EAAEliI,MAAMlJ,EAAEgK,OAAOohI,EAAEphI,OAAO,GAAGq/N,SAAS0K,GAAGl+J,aAAa,WAAW,MAAM,QAAQr2E,KAAKgoB,QAAQhe,UAAU,WAAWhK,KAAKgoB,QAAQhe,UAAUg/M,KAAK,WAAW,IAAIxoN,EAAER,KAAKi0B,EAAEzzB,EAAEwnB,QAAQ+vB,EAAE9jB,EAAE6kL,OAAOjxM,EAAEk7M,EAAEj7K,OAAO/rB,EAAElU,EAAE60L,aAAa5yD,EAAEjiI,EAAEmD,SAAS8gN,KAAK39K,EAAE3tC,EAAEgK,OAAOoa,EAAEpkB,EAAEg1O,cAAc5pG,EAAEprI,EAAEkJ,MAAM42K,EAAE9/K,EAAE80O,WAAW,GAAGrhN,EAAElhB,QAAQ,CAAC,IAAIiF,EAAE+M,EAAEuvN,GAAGrgN,EAAEuwL,IAAIhkN,EAAEyL,KAAKzL,EAAEypO,QAAQvgO,OAAOkmC,EAAEpvC,EAAEoB,IAAIq3B,EAAEu7M,GAAGz8L,EAAE4uL,UAAU9+N,EAAE46M,kBAAkB13E,EAAEk5E,EAAEj8L,QAAQo7L,WAAWrrK,GAAGwxF,EAAEwB,EAAE5qG,KAAKyP,EAAE+0K,UAAU5/L,EAAE4/L,UAAU,QAAQ/0K,EAAEuxL,aAAa,SAASvxL,EAAE67K,UAAU,GAAG77K,EAAE47K,YAAYvyL,EAAE2W,EAAE27K,UAAUtyL,EAAE2W,EAAE4wL,KAAKz1F,EAAE57F,OAAO,IAAIrsB,EAAE2xN,GAAG18L,EAAEwxF,GAAGtpI,EAAEO,EAAEu0O,eAAe/4N,EAAE,SAASxb,EAAEqH,GAAG,OAAOosB,EAAEo5J,OAAO,IAAI,QAAQ,OAAOt1I,EAAEy8B,QAAQ,IAAI,MAAM,OAAOh0E,EAAEqH,EAAE,QAAQ,OAAOrH,EAAEqH,EAAEkwC,EAAEy8B,SAAS,IAAIj5C,EAAE/6B,EAAE61E,eAAer+D,EAAEujB,EAAE,CAACA,EAAE/6B,EAAEyL,KAAK+P,EAAE4vH,EAAE00C,EAAE,IAAIh7J,EAAE9kB,EAAEuL,IAAIgsC,EAAEy8B,QAAQs3I,KAAK,GAAG,CAACvwL,EAAE/6B,EAAEyL,KAAK8rC,EAAEy8B,QAAQlvD,EAAE9kB,EAAEuL,IAAIiQ,EAAEmyB,EAAEvpB,EAAE,IAAIknM,KAAK,GAAG7H,EAAEO,IAAIM,sBAAsBtkN,EAAEoB,IAAIqyB,EAAEmqM,eAAe,IAAI94M,EAAEikH,EAAExxF,EAAEy8B,QAAQyvI,EAAExG,KAAKj9M,EAAE60O,YAAa,SAASphN,EAAEpsB,GAAG,IAAIoxB,EAAE2W,EAAE2wL,YAAYtsM,EAAEu1D,MAAM9/E,MAAMqhI,EAAEjoH,EAAEymH,EAAE,EAAEtwG,EAAEm5E,EAAEp6F,EAAEujB,EAAEihG,EAAExkH,EAAEsN,EAAEP,EAAE2/L,SAASlkN,EAAEypO,QAAQvgO,OAAO6xB,EAAE1zB,EAAE,GAAGuqG,EAAE24B,EAAEhzF,EAAEy8B,QAAQh0E,EAAEyL,KAAKzL,EAAEypO,QAAQvgO,QAAQ8yH,EAAExkH,EAAEsN,GAAGA,EAAEtN,EAAE8zM,OAAO15G,EAAEp6F,EAAEujB,EAAE/6B,EAAEyL,KAAK+P,EAAE4vH,EAAE00C,EAAEtoK,EAAE8zM,QAAQjkN,EAAE,GAAG20H,EAAEl3G,EAAE9kB,EAAEuL,IAAIvL,EAAEypO,QAAQz/N,SAAS4nG,EAAEp6F,EAAEujB,EAAE62E,EAAE5xG,EAAE+0O,aAAav9N,EAAE8zM,MAAM/zK,EAAEy8B,QAAQx8D,EAAE8zM,OAAOtvF,EAAExkH,EAAEsN,EAAE9kB,EAAEuL,IAAIiQ,EAAEmyB,EAAEvpB,EAAE5M,EAAE8zM,QAAQ,IAAI5mM,EAAEH,EAAEwW,EAAE62E,IAAI,SAAS5xG,EAAEyzB,EAAEpsB,GAAG,KAAKozC,MAAMn4B,IAAIA,GAAG,GAAG,CAAC8sB,EAAEwxK,OAAO,IAAIjzK,EAAEqmM,GAAG3sO,EAAE4jN,UAAU3hF,EAAE2/E,aAAa,GAAG75K,EAAE27K,UAAUipB,GAAG3sO,EAAE0jN,UAAUxvM,GAAG6zB,EAAE48K,QAAQgoB,GAAG3sO,EAAE2kN,QAAQ1iF,EAAEiiF,gBAAgBn8K,EAAE88K,eAAe8nB,GAAG3sO,EAAE6kN,eAAe5iF,EAAEmiF,kBAAkBr8K,EAAE87K,SAAS8oB,GAAG3sO,EAAE6jN,SAAS5hF,EAAEoiF,iBAAiBt8K,EAAE67K,UAAUt9K,EAAEyB,EAAE47K,YAAYgpB,GAAG3sO,EAAE2jN,YAAYzvM,GAAG6zB,EAAE68K,aAAa78K,EAAE68K,YAAY+nB,GAAG3sO,EAAEgtO,SAAS/qG,EAAEkiF,aAAaj0K,GAAGA,EAAE28L,cAAc,CAAC,IAAI9vN,EAAE9B,EAAEvE,KAAKk3N,MAAM,EAAE7pG,EAAE7mH,EAAE6/L,MAAMpkN,EAAEsiB,EAAE,GAAWmhM,EAAEK,OAAOnD,UAAUvxK,EAAE/nC,EAAEklN,WAAWnoM,EAAEgnH,EAA1C33G,EAAEs1G,EAAE,EAA0C1hI,EAAEslN,eAAev9K,EAAEm+K,SAAShpM,EAAE8/L,WAAWrkN,EAAEsiB,GAAGmR,EAAEnR,EAAEymH,GAAG,IAAIp7F,GAAGyB,EAAE0xL,WAAWv8M,EAAE8/L,WAAWrkN,EAAEsiB,GAAGmR,EAAEnR,EAAEymH,GAAG35F,EAAEyxK,WAA1jB,CAAskBn8L,EAAEs3G,EAAEvoG,GAAGh0B,EAAE4H,GAAGoE,KAAK8Y,EAAE8/L,WAAW3/L,EAAEjlB,EAAE4H,GAAG6B,OAAOzJ,EAAE4H,GAAGkE,IAAIywH,EAAE,SAASh8H,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAEwtH,EAAE,EAAEO,EAAE/kH,EAAE6/L,MAAMpkN,EAAEsiB,EAAE/G,GAAGoyB,EAAEla,EAAElY,EAAE6zB,EAAEwxL,SAASrpL,EAAEyxC,KAAKsgD,EAAE37F,GAAG4J,EAAEy/D,SAAS5nE,EAAE0xK,YAAY1xK,EAAE67K,UAAU,EAAE77K,EAAEoxK,OAAOl3E,EAAE37F,GAAGyB,EAAE2xK,OAAOx8L,EAAE6/L,MAAM96E,EAAEjiI,GAAGsmC,GAAGyB,EAAE6xK,UAA1J,CAAqKv8L,EAAEs3G,EAAEvoG,EAAEgF,GAAGsC,EAAEvjB,EAAEujB,GAAGwvG,EAAEhzF,EAAEy8B,QAAQx8D,EAAEsN,GAAGA,IAAK2+L,EAAEO,IAAIS,qBAAqBzkN,EAAEoB,IAAIqyB,EAAEmqM,iBAAiBsX,iBAAiB,SAASl1O,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE9pI,KAAK,GAAGQ,GAAGspI,EAAE79H,MAAMzL,GAAGspI,EAAE59H,OAAO+nB,GAAG61G,EAAE/9H,KAAKkoB,GAAG61G,EAAE99H,OAAO,IAAI+P,EAAE+tH,EAAEirG,eAAeh9L,EAAE,EAAEA,EAAEh8B,EAAE5X,SAAS4zC,EAAE,GAAGv3C,IAAIqH,EAAEkU,EAAEg8B,IAAI9rC,MAAMzL,GAAGqH,EAAEoE,KAAKpE,EAAE6B,OAAOuqB,GAAGpsB,EAAEkE,KAAKkoB,GAAGpsB,EAAEkE,IAAIlE,EAAE2C,OAAO,OAAOs/H,EAAEurG,YAAYt9L,GAAG,OAAO,MAAM4pL,YAAY,SAASnhO,GAAG,IAAIyzB,EAAE8jB,EAAE/3C,KAAK6H,EAAEkwC,EAAE/vB,QAAQjM,EAAE,YAAYvb,EAAEE,KAAK,QAAQF,EAAEE,KAAK,GAAG,cAAcqb,GAAG,IAAIlU,EAAE06N,UAAU16N,EAAE+sO,QAAQ,WAAW,CAAC,GAAG,UAAU74N,EAAE,OAAO,IAAIlU,EAAEouC,QAAQ,OAAOhiB,EAAE8jB,EAAE29L,iBAAiBl1O,EAAE+6B,EAAE/6B,EAAE8kB,GAAG,UAAUvJ,EAAEkY,GAAGpsB,EAAEouC,SAASpuC,EAAEouC,QAAQ/gB,KAAK6iB,EAAEv3C,EAAEu1N,OAAO9hM,IAAIpsB,EAAE+sO,SAAS3gN,IAAI8jB,EAAEi9L,eAAej9L,EAAEi9L,cAAcntO,EAAE+sO,QAAQ1/M,KAAK6iB,EAAEv3C,EAAEu1N,OAAOh+K,EAAEi9L,cAAcj9L,EAAEi9L,aAAa/gN,GAAGpsB,EAAE06N,SAAStuM,GAAGpsB,EAAE06N,QAAQrtM,KAAK6iB,EAAEv3C,EAAEu1N,OAAO9hM,OAAO,SAAS0hN,GAAGn1O,EAAEyzB,GAAG,IAAI8jB,EAAE,IAAI+8L,GAAG,CAAClzO,IAAIpB,EAAEoB,IAAIomB,QAAQiM,EAAEuxL,MAAMhlN,IAAIk3N,GAAGK,UAAUv3N,EAAEu3C,EAAE9jB,GAAGyjM,GAAGC,OAAOn3N,EAAEu3C,GAAGv3C,EAAEqxN,OAAO95K,EAAE,IAAI69L,GAAG,CAAC5vN,GAAG,SAAS4D,SAASkrN,GAAGe,WAAW,SAASr1O,GAAG,IAAIyzB,EAAEzzB,EAAEwnB,QAAQ6pM,OAAO59L,GAAG0hN,GAAGn1O,EAAEyzB,IAAIo0M,aAAa,SAAS7nO,GAAG,IAAIyzB,EAAEzzB,EAAEwnB,QAAQ6pM,OAAO95K,EAAEv3C,EAAEqxN,OAAO59L,GAAGgwL,EAAEpG,QAAQ5pL,EAAE8uL,EAAEj7K,OAAO+pL,QAAQ95K,GAAG2/K,GAAGK,UAAUv3N,EAAEu3C,EAAE9jB,GAAG8jB,EAAE/vB,QAAQiM,GAAG0hN,GAAGn1O,EAAEyzB,IAAI8jB,IAAI2/K,GAAGI,UAAUt3N,EAAEu3C,UAAUv3C,EAAEqxN,SAASikB,WAAW,SAASt1O,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAEqxN,OAAO95K,GAAGA,EAAE4pL,YAAY1tM,KAAK8hN,GAAG9xB,EAAEvvF,KAAKquF,EAAEP,KAAK,SAAS,CAAC5rJ,MAAM,CAAC7jD,SAAQ,EAAG0wM,UAAU,OAAO6T,WAAU,EAAG9iJ,QAAQ,GAAGxqE,SAAS,MAAMw/E,KAAK,GAAGk6H,OAAO,OAAO,IAAIsyB,GAAGzwB,EAAExH,OAAO,CAACloL,WAAW,SAASr1B,GAAGyjN,EAAElG,OAAO/9M,KAAKQ,GAAGR,KAAK+0O,eAAe,IAAI1M,aAAa0N,GAAGv7J,OAAO,SAASh6E,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE7H,KAAK,OAAO6H,EAAEwgO,eAAexgO,EAAEq5B,SAAS1gC,EAAEqH,EAAEogC,UAAUhU,EAAEpsB,EAAE0gO,QAAQxwL,EAAElwC,EAAEihO,sBAAsBjhO,EAAEkhO,gBAAgBlhO,EAAEmhO,qBAAqBnhO,EAAEqtO,oBAAoBrtO,EAAEstO,cAActtO,EAAEutO,mBAAmBvtO,EAAE8hO,YAAY9hO,EAAE+hO,MAAM/hO,EAAEgiO,WAAWhiO,EAAEmiO,cAAcniO,EAAEoiO,SAASD,YAAY+L,GAAGjN,oBAAoBiN,GAAGhN,cAAc,WAAW,IAAIvoO,EAAER,KAAKQ,EAAE61E,gBAAgB71E,EAAEkJ,MAAMlJ,EAAE0gC,SAAS1gC,EAAEyL,KAAK,EAAEzL,EAAE0L,MAAM1L,EAAEkJ,QAAQlJ,EAAEgK,OAAOhK,EAAEynC,UAAUznC,EAAEuL,IAAI,EAAEvL,EAAEwL,OAAOxL,EAAEgK,QAAQhK,EAAEo0E,YAAY,EAAEp0E,EAAEs0E,WAAW,EAAEt0E,EAAEq0E,aAAa,EAAEr0E,EAAEu0E,cAAc,EAAEv0E,EAAEypO,QAAQ,CAACvgO,MAAM,EAAEc,OAAO,IAAIw+N,mBAAmB+M,GAAGb,kBAAkBa,GAAGZ,YAAYY,GAAGX,iBAAiBW,GAAGpM,UAAUoM,GAAGnM,IAAI,WAAW,IAAIppO,EAAEyzB,EAAEj0B,KAAK+3C,EAAE9jB,EAAEjM,QAAQngB,EAAEosB,EAAEg2M,QAAQ,GAAGluN,EAAEkY,EAAEoiD,eAAet+B,EAAEhlC,SAASvS,GAAGyjN,EAAEjuM,QAAQ+hC,EAAEyxC,MAAMzxC,EAAEyxC,KAAKrlF,OAAO,GAAG8/M,EAAEj8L,QAAQo7L,WAAWrrK,GAAGyrK,WAAW,EAAEzrK,EAAEy8B,QAAQvgD,EAAEvqB,MAAM7B,EAAE6B,MAAMqS,EAAEkY,EAAEiN,SAAS1gC,EAAEyzB,EAAEzpB,OAAO3C,EAAE2C,OAAOuR,EAAEvb,EAAEyzB,EAAEgU,WAAWhU,EAAEvqB,MAAM7B,EAAE6B,MAAMuqB,EAAEzpB,OAAO3C,EAAE2C,OAAO,GAAGq/N,SAASkM,GAAG1/J,aAAa,WAAW,IAAI71E,EAAER,KAAKgoB,QAAQhe,SAAS,MAAM,QAAQxJ,GAAG,WAAWA,GAAGwoN,KAAK,WAAW,IAAIxoN,EAAER,KAAKi0B,EAAEzzB,EAAEoB,IAAIm2C,EAAEv3C,EAAEwnB,QAAQ,GAAG+vB,EAAEhlC,QAAQ,CAAC,IAAIlL,EAAEkU,EAAE+tH,EAAE37F,EAAE81K,EAAEj8L,QAAQo7L,WAAWrrK,GAAGnzB,EAAEupB,EAAEq1K,WAAW53E,EAAEhnH,EAAE,EAAEmzB,EAAEy8B,QAAQ8rG,EAAE,EAAEtoK,EAAExX,EAAEuL,IAAIgZ,EAAEvkB,EAAEyL,KAAK2jC,EAAEpvC,EAAEwL,OAAOitB,EAAEz4B,EAAE0L,MAAM+nB,EAAEs3L,UAAUtH,EAAE1G,eAAexlK,EAAE4uL,UAAU5jB,EAAEj7K,OAAO26K,kBAAkBxuL,EAAEusM,KAAKryL,EAAEgB,OAAO3uC,EAAE61E,gBAAgBt6D,EAAEgJ,GAAGkU,EAAElU,GAAG,EAAE+kH,EAAE9xH,EAAE4zH,EAAE/jI,EAAEoxB,EAAElU,IAAIhJ,EAAE,SAASg8B,EAAE/tC,SAAS+a,EAAE6mH,EAAE3yG,EAAE2yG,EAAE9B,EAAE9xH,GAAG43B,EAAE53B,GAAG,EAAEnQ,EAAE+nC,EAAE53B,EAAEsoK,EAAE/hK,KAAKu7L,IAAI,SAAS/hK,EAAE/tC,UAAU,GAAG,KAAKiqB,EAAEmtL,OAAOntL,EAAEmpJ,UAAUrhK,EAAE+tH,GAAG71G,EAAE+oL,OAAO18B,GAAGrsJ,EAAE0wL,UAAU,SAAS1wL,EAAEktM,aAAa,SAAS,IAAIp2F,EAAEhzF,EAAEyxC,KAAK,GAAGy6H,EAAEjuM,QAAQ+0H,GAAG,IAAI,IAAIxB,EAAE,EAAEzmH,EAAE,EAAEA,EAAEioH,EAAE5mI,SAAS2e,EAAEmR,EAAEmtM,SAASr2F,EAAEjoH,GAAG,EAAEymH,EAAE1hI,GAAG0hI,GAAG3kH,OAAOqP,EAAEmtM,SAASr2F,EAAE,EAAE,EAAEljI,GAAGosB,EAAEotL,cAAc,SAAS40B,GAAGz1O,EAAEyzB,GAAG,IAAI8jB,EAAE,IAAIi+L,GAAG,CAACp0O,IAAIpB,EAAEoB,IAAIomB,QAAQiM,EAAEuxL,MAAMhlN,IAAIk3N,GAAGK,UAAUv3N,EAAEu3C,EAAE9jB,GAAGyjM,GAAGC,OAAOn3N,EAAEu3C,GAAGv3C,EAAE01O,WAAWn+L,EAAE,IAAIo+L,GAAG,GAAGC,GAAGnC,GAAGoC,GAAGT,GAAGU,GAAG,CAACtwN,GAAG,QAAQ4D,SAASosN,GAAGH,WAAW,SAASr1O,GAAG,IAAIyzB,EAAEzzB,EAAEwnB,QAAQ4uC,MAAM3iC,GAAGgiN,GAAGz1O,EAAEyzB,IAAIo0M,aAAa,SAAS7nO,GAAG,IAAIyzB,EAAEzzB,EAAEwnB,QAAQ4uC,MAAM7e,EAAEv3C,EAAE01O,WAAWjiN,GAAGgwL,EAAEpG,QAAQ5pL,EAAE8uL,EAAEj7K,OAAO8uB,OAAO7e,GAAG2/K,GAAGK,UAAUv3N,EAAEu3C,EAAE9jB,GAAG8jB,EAAE/vB,QAAQiM,GAAGgiN,GAAGz1O,EAAEyzB,IAAI8jB,IAAI2/K,GAAGI,UAAUt3N,EAAEu3C,UAAUv3C,EAAE01O,cAAc,IAAI,IAAIK,MAAMJ,GAAGhD,OAAOiD,GAAGD,GAAGtkB,OAAOwkB,GAAGF,GAAGv/K,MAAM0/K,GAAG3pK,GAAG6pK,QAAQvyB,EAAE,WAAW,SAASzjN,EAAEA,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAE,MAAM,iBAAiBrH,GAAGqH,EAAE2nC,SAAShvC,EAAE,KAAK,IAAIA,EAAEyI,QAAQ,OAAOpB,EAAEA,EAAE,IAAIosB,EAAEvT,WAAWq3B,KAAKlwC,EAAErH,EAAEqH,EAAE,SAASosB,EAAEzzB,GAAG,OAAO,MAAMA,GAAG,SAASA,EAAE,SAASu3C,EAAEA,EAAElwC,EAAEkU,GAAG,IAAI+tH,EAAEn/F,SAASxZ,YAAYgd,EAAE81K,EAAEwyB,eAAe1+L,GAAGnzB,EAAEklH,EAAEt2D,iBAAiBz7B,GAAGlwC,GAAG+jI,EAAE9B,EAAEt2D,iBAAiBrlC,GAAGtmC,GAAGy4K,EAAErsJ,EAAErP,GAAG5M,EAAEic,EAAE23G,GAAG7mH,EAAEpW,OAAOwtJ,kBAAkB,OAAOmkB,GAAGtoK,EAAEuG,KAAKG,IAAI4hK,EAAE9/K,EAAEokB,EAAEmzB,EAAEh8B,GAAGgJ,EAAE/M,EAAExX,EAAEorI,EAAEz9F,EAAEpyB,GAAGgJ,GAAG,OAAOk/L,EAAE2S,MAAM,SAASp2N,EAAEyzB,GAAG,GAAGgwL,EAAEjuM,QAAQxV,IAAI+J,MAAMmoB,UAAUvd,OAAO,OAAO3U,EAAE2U,OAAO8e,GAAG,IAAI8jB,EAAE,GAAG,OAAOksK,EAAExG,KAAKj9M,EAAG,SAASA,GAAGyzB,EAAEzzB,IAAIu3C,EAAEn0C,KAAKpD,KAAMu3C,GAAGksK,EAAE9+F,UAAU56G,MAAMmoB,UAAUyyF,UAAU,SAAS3kH,EAAEyzB,EAAE8jB,GAAG,OAAOv3C,EAAE2kH,UAAUlxF,EAAE8jB,IAAI,SAASv3C,EAAEyzB,EAAE8jB,GAAGA,OAAE,IAASA,EAAEv3C,EAAEu3C,EAAE,IAAI,IAAIlwC,EAAE,EAAEkU,EAAEvb,EAAE2D,OAAO0D,EAAEkU,IAAIlU,EAAE,GAAGosB,EAAEiB,KAAK6iB,EAAEv3C,EAAEqH,GAAGA,EAAErH,GAAG,OAAOqH,EAAE,OAAO,GAAGo8M,EAAEyyB,cAAc,SAASl2O,EAAEyzB,EAAE8jB,GAAGksK,EAAE3G,cAAcvlK,KAAKA,GAAG,GAAG,IAAI,IAAIlwC,EAAEkwC,EAAE,EAAElwC,EAAErH,EAAE2D,OAAO0D,IAAI,CAAC,IAAIkU,EAAEvb,EAAEqH,GAAG,GAAGosB,EAAElY,GAAG,OAAOA,IAAIkoM,EAAE0yB,kBAAkB,SAASn2O,EAAEyzB,EAAE8jB,GAAGksK,EAAE3G,cAAcvlK,KAAKA,EAAEv3C,EAAE2D,QAAQ,IAAI,IAAI0D,EAAEkwC,EAAE,EAAElwC,GAAG,EAAEA,IAAI,CAAC,IAAIkU,EAAEvb,EAAEqH,GAAG,GAAGosB,EAAElY,GAAG,OAAOA,IAAIkoM,EAAE3lG,SAAS,SAAS99G,GAAG,OAAOy6C,MAAMptB,WAAWrtB,KAAKg+G,SAASh+G,IAAIyjN,EAAE2pB,aAAa,SAASptO,EAAEyzB,EAAE8jB,GAAG,OAAOx5B,KAAKqiC,IAAIpgD,EAAEyzB,GAAG8jB,GAAGksK,EAAE0pB,YAAY,SAASntO,EAAEyzB,GAAG,IAAI8jB,EAAEx5B,KAAK06B,MAAMz4C,GAAG,OAAOu3C,EAAE9jB,GAAGzzB,GAAGu3C,EAAE9jB,GAAGzzB,GAAGyjN,EAAEnhK,IAAI,SAAStiD,GAAG,OAAOA,EAAEiV,OAAQ,SAASjV,EAAEyzB,GAAG,OAAOgnB,MAAMhnB,GAAGzzB,EAAE+d,KAAKukC,IAAItiD,EAAEyzB,IAAKtlB,OAAO0/N,oBAAoBpqB,EAAEvlM,IAAI,SAASle,GAAG,OAAOA,EAAEiV,OAAQ,SAASjV,EAAEyzB,GAAG,OAAOgnB,MAAMhnB,GAAGzzB,EAAE+d,KAAKG,IAAIle,EAAEyzB,IAAKtlB,OAAOwtJ,oBAAoB8nD,EAAEtlK,KAAKpgC,KAAKogC,KAAK,SAASn+C,GAAG,OAAO+d,KAAKogC,KAAKn+C,IAAI,SAASA,GAAG,OAAO,IAAKA,GAAGA,IAAIy6C,MAAMz6C,GAAGA,EAAEA,EAAE,EAAE,GAAG,GAAGyjN,EAAE4mB,UAAU,SAASrqO,GAAG,OAAOA,GAAG+d,KAAKu7L,GAAG,MAAMmK,EAAE2mB,UAAU,SAASpqO,GAAG,OAAOA,GAAG,IAAI+d,KAAKu7L,KAAKmK,EAAEypB,eAAe,SAASltO,GAAG,GAAGyjN,EAAEzlG,SAASh+G,GAAG,CAAC,IAAI,IAAIyzB,EAAE,EAAE8jB,EAAE,EAAEx5B,KAAK06B,MAAMz4C,EAAEyzB,GAAGA,IAAIzzB,GAAGyzB,GAAG,GAAG8jB,IAAI,OAAOA,IAAIksK,EAAEgH,kBAAkB,SAASzqN,EAAEyzB,GAAG,IAAI8jB,EAAE9jB,EAAEsH,EAAE/6B,EAAE+6B,EAAE1zB,EAAEosB,EAAE3O,EAAE9kB,EAAE8kB,EAAEvJ,EAAEwC,KAAKykL,KAAKjrJ,EAAEA,EAAElwC,EAAEA,GAAGiiI,EAAEvrH,KAAKs7L,MAAMhyM,EAAEkwC,GAAG,OAAO+xF,GAAG,GAAGvrH,KAAKu7L,KAAKhwE,GAAG,EAAEvrH,KAAKu7L,IAAI,CAACoR,MAAMphF,EAAE2d,SAAS1rI,IAAIkoM,EAAE6Z,sBAAsB,SAASt9N,EAAEyzB,GAAG,OAAO1V,KAAKykL,KAAKzkL,KAAKq7L,IAAI3lL,EAAEsH,EAAE/6B,EAAE+6B,EAAE,GAAGhd,KAAKq7L,IAAI3lL,EAAE3O,EAAE9kB,EAAE8kB,EAAE,KAAK2+L,EAAE2yB,WAAW,SAASp2O,GAAG,OAAOA,EAAE,GAAG,EAAE,EAAE,IAAIyjN,EAAEwnB,YAAY,SAASjrO,EAAEyzB,EAAE8jB,GAAG,IAAIlwC,EAAErH,EAAEq2O,wBAAwB96N,EAAEg8B,EAAE,EAAE,OAAOx5B,KAAK06B,OAAOhlB,EAAElY,GAAGlU,GAAGA,EAAEkU,GAAGkoM,EAAEgQ,YAAY,SAASzzN,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,EAAEvb,EAAEwuB,KAAKiF,EAAEzzB,EAAEspI,EAAE71G,EAAEka,EAAE4J,EAAE/oB,KAAKiF,EAAE8jB,EAAEnzB,EAAErG,KAAKykL,KAAKzkL,KAAKq7L,IAAI9vE,EAAEvuG,EAAExf,EAAEwf,EAAE,GAAGhd,KAAKq7L,IAAI9vE,EAAExkH,EAAEvJ,EAAEuJ,EAAE,IAAIsmH,EAAErtH,KAAKykL,KAAKzkL,KAAKq7L,IAAIzrK,EAAE5S,EAAEuuG,EAAEvuG,EAAE,GAAGhd,KAAKq7L,IAAIzrK,EAAE7oB,EAAEwkH,EAAExkH,EAAE,IAAIg7J,EAAE17J,GAAGA,EAAEgnH,GAAG5zH,EAAE4zH,GAAGhnH,EAAEgnH,GAAG7mH,EAAEld,GAAGy4K,EAAErlI,MAAMqlI,GAAG,EAAEA,GAAG1wI,EAAE/nC,GAAGmQ,EAAEijC,MAAMjjC,GAAG,EAAEA,GAAG,MAAM,CAACm8M,SAAS,CAAC54L,EAAEuuG,EAAEvuG,EAAExW,GAAGopB,EAAE5S,EAAExf,EAAEwf,GAAGjW,EAAEwkH,EAAExkH,EAAEP,GAAGopB,EAAE7oB,EAAEvJ,EAAEuJ,IAAIzhB,KAAK,CAAC03B,EAAEuuG,EAAEvuG,EAAEqU,GAAGzB,EAAE5S,EAAExf,EAAEwf,GAAGjW,EAAEwkH,EAAExkH,EAAEsqB,GAAGzB,EAAE7oB,EAAEvJ,EAAEuJ,MAAM2+L,EAAE6yB,QAAQnoO,OAAOmoO,SAAS,MAAM7yB,EAAE+P,oBAAoB,SAASxzN,GAAG,IAAIyzB,EAAE8jB,EAAElwC,EAAEkU,EAAE+tH,EAAE37F,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,GAAGxX,GAAG,IAAIiJ,IAAK,SAASjJ,GAAG,MAAM,CAACy5F,MAAMz5F,EAAEovH,OAAOmnH,OAAO,EAAEC,GAAG,KAAMjyN,EAAE/M,EAAE7T,OAAO,IAAI8vB,EAAE,EAAEA,EAAElP,IAAIkP,EAAE,KAAKpsB,EAAEmQ,EAAEic,IAAIgmE,MAAMjrE,KAAK,CAAC,GAAG+oB,EAAE9jB,EAAE,EAAEjc,EAAEic,EAAE,GAAG,MAAMlY,EAAEkY,EAAElP,EAAE,EAAE/M,EAAEic,EAAE,GAAG,QAAQlY,EAAEk+E,MAAMjrE,KAAK,CAAC,IAAI4gB,EAAE7zB,EAAEk+E,MAAM1+D,EAAE1zB,EAAEoyF,MAAM1+D,EAAE1zB,EAAEkvO,OAAO,IAAInnM,GAAG7zB,EAAEk+E,MAAM30E,EAAEzd,EAAEoyF,MAAM30E,GAAGsqB,EAAE,EAAmB/nC,EAAEmvO,IAAlBj/L,GAAGA,EAAEkiD,MAAMjrE,KAAUnnB,EAAEkvO,QAAQh7N,GAAGA,EAAEk+E,MAAMjrE,KAAU+oB,EAAEg/L,OAAO/2O,KAAK2+C,KAAK5G,EAAEg/L,UAAU/2O,KAAK2+C,KAAK92C,EAAEkvO,QAAa,GAAQh/L,EAAEg/L,OAAOlvO,EAAEkvO,QAAQ,EAAE,IAAI9iN,EAAE,EAAEA,EAAElP,EAAE,IAAIkP,EAASlY,EAAE/D,EAAEic,EAAE,IAAbpsB,EAAEmQ,EAAEic,IAAcgmE,MAAMjrE,MAAMjT,EAAEk+E,MAAMjrE,OAAOi1L,EAAE2pB,aAAa/lO,EAAEkvO,OAAO,EAAE/2O,KAAK82O,SAASjvO,EAAEmvO,GAAGj7N,EAAEi7N,GAAG,GAAGltG,EAAEjiI,EAAEmvO,GAAGnvO,EAAEkvO,OAAO5oM,EAAEpyB,EAAEi7N,GAAGnvO,EAAEkvO,QAAQnrG,EAAErtH,KAAKq7L,IAAI9vE,EAAE,GAAGvrH,KAAKq7L,IAAIzrK,EAAE,KAAK,IAAIvpB,EAAE,EAAErG,KAAKykL,KAAKp3D,GAAG/jI,EAAEmvO,GAAGltG,EAAEllH,EAAE/c,EAAEkvO,OAAOh7N,EAAEi7N,GAAG7oM,EAAEvpB,EAAE/c,EAAEkvO,UAAU,IAAI9iN,EAAE,EAAEA,EAAElP,IAAIkP,GAAGpsB,EAAEmQ,EAAEic,IAAIgmE,MAAMjrE,OAAyBjT,EAAEkY,EAAElP,EAAE,EAAE/M,EAAEic,EAAE,GAAG,MAAjC8jB,EAAE9jB,EAAE,EAAEjc,EAAEic,EAAE,GAAG,QAA6B8jB,EAAEkiD,MAAMjrE,OAAiCnnB,EAAEoyF,MAAMgoH,sBAAsBp6M,EAAEoyF,MAAM1+D,GAAhE+kJ,GAAGz4K,EAAEoyF,MAAM1+D,EAAEwc,EAAEkiD,MAAM1+D,GAAG,GAA4C1zB,EAAEoyF,MAAMkoH,sBAAsBt6M,EAAEoyF,MAAM30E,EAAEg7J,EAAEz4K,EAAEmvO,IAAIj7N,IAAIA,EAAEk+E,MAAMjrE,OAAiCnnB,EAAEoyF,MAAMioH,kBAAkBr6M,EAAEoyF,MAAM1+D,GAA5D+kJ,GAAGvkK,EAAEk+E,MAAM1+D,EAAE1zB,EAAEoyF,MAAM1+D,GAAG,GAAwC1zB,EAAEoyF,MAAMmoH,kBAAkBv6M,EAAEoyF,MAAM30E,EAAEg7J,EAAEz4K,EAAEmvO,MAAM/yB,EAAEiQ,SAAS,SAAS1zN,EAAEyzB,EAAE8jB,GAAG,OAAOA,EAAE9jB,GAAGzzB,EAAE2D,OAAO,EAAE3D,EAAE,GAAGA,EAAEyzB,EAAE,GAAGA,GAAGzzB,EAAE2D,OAAO,EAAE3D,EAAEA,EAAE2D,OAAO,GAAG3D,EAAEyzB,EAAE,IAAIgwL,EAAEsI,aAAa,SAAS/rN,EAAEyzB,EAAE8jB,GAAG,OAAOA,EAAE9jB,GAAG,EAAEzzB,EAAEA,EAAE2D,OAAO,GAAG3D,EAAEyzB,EAAE,GAAGA,GAAG,EAAEzzB,EAAE,GAAGA,EAAEyzB,EAAE,IAAIgwL,EAAEwpB,QAAQ,SAASjtO,EAAEyzB,GAAG,IAAI8jB,EAAEx5B,KAAKs7B,MAAMoqK,EAAEH,MAAMtjN,IAAIqH,EAAErH,EAAE+d,KAAKq7L,IAAI,GAAG7hK,GAAG,OAAO9jB,EAAEpsB,EAAE,IAAI,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,GAAGA,GAAG,EAAE,EAAEA,GAAG,EAAE,EAAEA,GAAG,EAAE,EAAE,IAAI0W,KAAKq7L,IAAI,GAAG7hK,IAAIksK,EAAEoC,iBAAiB,oBAAoBl7L,OAAO,SAAS3qB,GAAGA,KAAK2qB,OAAOs9J,uBAAuBt9J,OAAO8rN,6BAA6B9rN,OAAO+rN,0BAA0B/rN,OAAOgsN,wBAAwBhsN,OAAOisN,yBAAyB,SAAS52O,GAAG,OAAO2qB,OAAOyZ,WAAWpkC,EAAE,IAAI,KAAKyjN,EAAE+R,oBAAoB,SAASx1N,EAAEyzB,GAAG,IAAI8jB,EAAElwC,EAAEkU,EAAEvb,EAAEszL,eAAetzL,EAAEspI,EAAEtpI,EAAEgsB,QAAQhsB,EAAE62O,WAAWlpM,EAAE27F,EAAEr/H,wBAAwBma,EAAE7I,EAAE+yI,QAAQlqI,GAAGA,EAAEzgB,OAAO,GAAG4zC,EAAEnzB,EAAE,GAAG89K,QAAQ76L,EAAE+c,EAAE,GAAG+9K,UAAU5qJ,EAAEh8B,EAAE2mL,QAAQ76L,EAAEkU,EAAE4mL,SAAS,IAAI/2D,EAAE/9G,WAAWo2L,EAAEt4F,SAASme,EAAE,iBAAiBw2C,EAAEzyJ,WAAWo2L,EAAEt4F,SAASme,EAAE,gBAAgB9xH,EAAE6V,WAAWo2L,EAAEt4F,SAASme,EAAE,kBAAkB/kH,EAAE8I,WAAWo2L,EAAEt4F,SAASme,EAAE,mBAAwC7wG,EAAEkV,EAAEniC,OAAOmiC,EAAEpiC,IAAIu0K,EAAEv7J,EAAE,MAAM,CAACwW,EAAEwc,EAAEx5B,KAAK06B,OAAOlB,EAAE5J,EAAEliC,KAAK2/H,IAAxEz9F,EAAEjiC,MAAMiiC,EAAEliC,KAAK2/H,EAAE5zH,GAA4D8xH,EAAEpgI,MAAMuqB,EAAE4iN,yBAAyBvxN,EAAEzd,EAAE0W,KAAK06B,OAAOpxC,EAAEsmC,EAAEpiC,IAAIu0K,GAAGrnJ,EAAE6wG,EAAEt/H,OAAOypB,EAAE4iN,2BAA2B5yB,EAAEqzB,mBAAmB,SAAS92O,GAAG,OAAOu3C,EAAEv3C,EAAE,YAAY,gBAAgByjN,EAAEszB,oBAAoB,SAAS/2O,GAAG,OAAOu3C,EAAEv3C,EAAE,aAAa,iBAAiByjN,EAAEuzB,kBAAkB,SAASh3O,EAAEyzB,EAAE8jB,GAAG,OAAO9jB,EAAEgwL,EAAEt4F,SAASnrH,EAAEyzB,IAAIhrB,QAAQ,MAAM,EAAE8uC,EAAEvI,SAASvb,EAAE,IAAI,IAAIub,SAASvb,EAAE,KAAKgwL,EAAEwyB,eAAe,SAASj2O,GAAG,IAAIyzB,EAAEzzB,EAAEkgB,WAAW,OAAOuT,GAAG,wBAAwBA,EAAEhC,aAAagC,EAAEA,EAAErV,MAAMqV,GAAGgwL,EAAEkf,gBAAgB,SAAS3iO,GAAG,IAAIyzB,EAAEgwL,EAAEwyB,eAAej2O,GAAG,IAAIyzB,EAAE,OAAOzzB,EAAEuyE,YAAY,IAAIh7B,EAAE9jB,EAAE8+C,YAAYlrE,EAAEkwC,EAAEksK,EAAEuzB,kBAAkBvjN,EAAE,eAAe8jB,GAAGksK,EAAEuzB,kBAAkBvjN,EAAE,gBAAgB8jB,GAAGh8B,EAAEkoM,EAAEqzB,mBAAmB92O,GAAG,OAAOy6C,MAAMl/B,GAAGlU,EAAE0W,KAAKG,IAAI7W,EAAEkU,IAAIkoM,EAAEmf,iBAAiB,SAAS5iO,GAAG,IAAIyzB,EAAEgwL,EAAEwyB,eAAej2O,GAAG,IAAIyzB,EAAE,OAAOzzB,EAAEqyE,aAAa,IAAI96B,EAAE9jB,EAAE4+C,aAAahrE,EAAEkwC,EAAEksK,EAAEuzB,kBAAkBvjN,EAAE,cAAc8jB,GAAGksK,EAAEuzB,kBAAkBvjN,EAAE,iBAAiB8jB,GAAGh8B,EAAEkoM,EAAEszB,oBAAoB/2O,GAAG,OAAOy6C,MAAMl/B,GAAGlU,EAAE0W,KAAKG,IAAI7W,EAAEkU,IAAIkoM,EAAEt4F,SAAS,SAASnrH,EAAEyzB,GAAG,OAAOzzB,EAAEi3O,aAAaj3O,EAAEi3O,aAAaxjN,GAAG0W,SAASxZ,YAAYqiD,iBAAiBhzE,EAAE,MAAM6hJ,iBAAiBpuH,IAAIgwL,EAAE4e,YAAY,SAASriO,EAAEyzB,GAAG,IAAI8jB,EAAEv3C,EAAEq2O,wBAAwB5iN,GAAG,oBAAoB9I,QAAQA,OAAO23M,kBAAkB,EAAE,GAAG,IAAI/qL,EAAE,CAAC,IAAIlwC,EAAErH,EAAE8jN,OAAOvoM,EAAEvb,EAAEgK,OAAOs/H,EAAEtpI,EAAEkJ,MAAM7B,EAAE2C,OAAOuR,EAAEg8B,EAAElwC,EAAE6B,MAAMogI,EAAE/xF,EAAEv3C,EAAEoB,IAAI0uN,MAAMv4K,EAAEA,GAAGlwC,EAAE0D,MAAMf,QAAQ3C,EAAE0D,MAAM7B,QAAQ7B,EAAE0D,MAAMf,OAAOuR,EAAE,KAAKlU,EAAE0D,MAAM7B,MAAMogI,EAAE,QAAQm6E,EAAEwc,WAAW,SAASjgO,EAAEyzB,EAAE8jB,GAAG,OAAO9jB,EAAE,IAAIzzB,EAAE,MAAMu3C,GAAGksK,EAAEisB,YAAY,SAAS1vO,EAAEyzB,EAAE8jB,EAAElwC,GAAG,IAAIkU,GAAGlU,EAAEA,GAAG,IAAIiI,KAAKjI,EAAEiI,MAAM,GAAGg6H,EAAEjiI,EAAE6vO,eAAe7vO,EAAE6vO,gBAAgB,GAAG7vO,EAAE24N,OAAOvsM,IAAIlY,EAAElU,EAAEiI,KAAK,GAAGg6H,EAAEjiI,EAAE6vO,eAAe,GAAG7vO,EAAE24N,KAAKvsM,GAAGzzB,EAAEggO,KAAKvsM,EAAE,IAAIka,EAAEvpB,EAAEgnH,EAAE00C,EAAEtoK,EAAE+M,EAAE,EAAE6qB,EAAEmI,EAAE5zC,OAAO,IAAIgqC,EAAE,EAAEA,EAAEyB,EAAEzB,IAAI,GAAG,OAAOmyI,EAAEvoI,EAAE5J,MAAK,IAAK81K,EAAEjuM,QAAQsqK,GAAGv7J,EAAEk/L,EAAEsc,YAAY//N,EAAEub,EAAE+tH,EAAE/kH,EAAEu7J,QAAQ,GAAG2jC,EAAEjuM,QAAQsqK,GAAG,IAAI17J,EAAE,EAAEgnH,EAAE00C,EAAEn8K,OAAOygB,EAAEgnH,EAAEhnH,IAAI,OAAO5M,EAAEsoK,EAAE17J,KAAKq/L,EAAEjuM,QAAQgC,KAAK+M,EAAEk/L,EAAEsc,YAAY//N,EAAEub,EAAE+tH,EAAE/kH,EAAE/M,IAAI,IAAIihB,EAAE6wG,EAAE3lI,OAAO,EAAE,GAAG80B,EAAE8e,EAAE5zC,OAAO,CAAC,IAAIgqC,EAAE,EAAEA,EAAElV,EAAEkV,WAAWpyB,EAAE+tH,EAAE37F,IAAI27F,EAAEvhG,OAAO,EAAEtP,GAAG,OAAOlU,GAAGk/L,EAAEsc,YAAY,SAAS//N,EAAEyzB,EAAE8jB,EAAElwC,EAAEkU,GAAG,IAAI+tH,EAAE71G,EAAElY,GAAG,OAAO+tH,IAAIA,EAAE71G,EAAElY,GAAGvb,EAAE+/N,YAAYxkN,GAAGrS,MAAMquC,EAAEn0C,KAAKmY,IAAI+tH,EAAEjiI,IAAIA,EAAEiiI,GAAGjiI,GAAGo8M,EAAE0zB,mBAAmB,SAASn3O,GAAG,IAAIyzB,EAAE,EAAE,OAAOgwL,EAAExG,KAAKj9M,EAAG,SAASA,GAAGyjN,EAAEjuM,QAAQxV,IAAIA,EAAE2D,OAAO8vB,IAAIA,EAAEzzB,EAAE2D,UAAW8vB,GAAGgwL,EAAEpuJ,MAAMu8C,EAAE,SAAS5xG,GAAG,OAAOA,aAAao3O,iBAAiBp3O,EAAEuiN,EAAEj7K,OAAO40J,cAActqF,EAAE5xG,IAAI,SAASA,GAAG,OAAOuqC,QAAQ/V,MAAM,uBAAuBx0B,GAAGyjN,EAAEuF,cAAc,SAAShpN,GAAG,OAAOA,aAAaq3O,eAAer3O,aAAao3O,eAAep3O,EAAEyjN,EAAEpuJ,MAAMr1D,GAAGi8M,SAAS,IAAID,OAAO,IAAI/B,aAApxN,GAAoyN9tI,GAAGmrK,UAAUjS,GAAGl5J,GAAGorK,UAAUlyB,EAAEl5I,GAAGqrK,iBAAiBhyB,EAAEr5I,GAAGsrK,YAAYxiB,GAAG9oJ,GAAGurK,kBAAkB7tB,GAAG19I,GAAG5lD,SAASg8L,EAAEp2I,GAAGiyC,QAAQ2mG,EAAE54I,GAAG3hE,SAASgjN,GAAGrhJ,GAAGqrB,YAAYs+H,GAAG3pJ,GAAGwrK,QAAQzgB,GAAG/qJ,GAAG3lD,SAAS2zM,GAAGhuJ,GAAG/c,QAAQgrK,GAAGjuJ,GAAGyrK,MAAM9L,GAAG3/J,GAAG0rK,aAAahd,GAAG1uJ,GAAG2rK,MAAM/0K,GAAGoJ,GAAGm/G,QAAQ0zC,GAAG7yJ,GAAG6pK,QAAQ/4B,KAAKs1B,GAAI,SAASvyO,EAAEyzB,GAAG04C,GAAG0rK,aAAa9c,kBAAkBtnM,EAAEzzB,EAAEA,EAAEypB,aAAcksN,GAAGA,GAAGzoM,eAAe6oM,KAAK5pK,GAAG/c,QAAQmrK,SAASob,GAAGI,KAAK5pK,GAAG3lD,SAAS6O,aAAa,IAAI0iN,GAAG5rK,GAAG,MAAM,oBAAoBxhD,SAASA,OAAOqtN,MAAM7rK,IAAIA,GAAG6rK,MAAM7rK,GAAGA,GAAG8rK,OAAOtC,GAAGtkB,OAAOjoM,SAAS+iD,GAAG+rK,MAAMvC,GAAGv/K,MAAMhtC,SAAS+iD,GAAGgsK,cAAchsK,GAAG/c,QAAQ+c,GAAGisK,WAAWjsK,GAAGiyC,QAAQm/F,OAAO,IAAIpxI,GAAGksK,cAAclsK,GAAG6pK,QAAQlyB,OAAO33I,GAAGmsK,cAAcnsK,GAAGwrK,QAAQxrK,GAAGosK,gBAAgBjM,GAAGngK,GAAG6pK,QAAQ/4B,KAAK,CAAC,MAAM,SAAS,WAAW,OAAO,YAAY,QAAQ,WAAY,SAASj9M,GAAGmsE,GAAGnsE,GAAG,SAASyzB,EAAE8jB,GAAG,OAAO,IAAI40B,GAAG14C,EAAE04C,GAAG6pK,QAAQn5N,MAAM06B,GAAG,GAAG,CAACr3C,KAAKF,EAAEuvC,OAAO,GAAGnzB,cAAcpc,EAAEgJ,MAAM,SAAU+uO,GAAj0xKtkN,CAAE,WAAW,IAAI,OAAO6I,EAAQ,QAAU,MAAMt8B,KAA9C,K,kCCNtE,SAASw4O,EAAuBC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIx+C,eAAe,6DAG3B,OAAOw+C,EALT,iC,kCCAA,4DAEM,SAAU9/E,IAAkB,2BAALpgJ,EAAK,yBAALA,EAAK,gBAC9B,IAAM+yH,EAAY/yH,EAAMA,EAAM5U,OAAS,GACvC,OAAI,YAAY2nI,IACZ/yH,EAAMkmB,MACC,SAAC1Y,GAAD,OAAY,YAAOxN,EAAOwN,EAAQulH,KAGlC,SAACvlH,GAAD,OAAY,YAAOxN,EAAOwN,M,kCCTzC,kDAGA,IACIwjK,EAAU,SAkBd,IAASmvD,gBAnBE,WAmBoBnvD,EAAS,OACxC,IAASxkD,YAAcwkD,G,kCCvBvB,gDACe,SAASovD,EAAUC,EAAUC,GAC1C,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI7mM,UAAU,sDAGtB4mM,EAAS1mN,UAAYlW,OAAOlX,OAAO+zO,GAAcA,EAAW3mN,UAAW,CACrEwd,YAAa,CACX3uC,MAAO63O,EACPz7M,UAAU,EACVD,cAAc,KAGd27M,GAAY,YAAeD,EAAUC,K,sBCJlC,SAAUh3N,GAAU,aAIzB,IAAI0oL,EAAQ,CACRlmL,GAAI,4CACJ/B,EAAG,uCACHgC,GAAI,yCACJC,EAAG,gCACHC,GAAI,iCACJhN,EAAG,0BACHiN,GAAI,2BACJG,EAAG,2CACHC,GAAI,gDACJC,EAAG,wBACHC,GAAI,yBASR,SAAS+zN,EAAkB5zN,EAAQs3I,EAAergJ,EAAKqhD,GACnD,OAAOg/F,EACDgwC,EAAMrwL,GAAK,GACXqhD,EACEgvI,EAAMrwL,GAAK,GACXqwL,EAAMrwL,GAAK,GAEvB,SAAS48N,EAAQ7zN,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASsnL,EAAMrwL,GACX,OAAOouL,EAAMpuL,GAAK4F,MAAM,KAE5B,SAAS66J,EAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC3C,IAAIphC,EAASlX,EAAS,IACtB,OAAe,IAAXA,EAEIkX,EAAS08M,EAAkB5zN,EAAQs3I,EAAergJ,EAAI,GAAIqhD,GAEvDg/F,EACApgI,GAAU28M,EAAQ7zN,GAAUsnL,EAAMrwL,GAAK,GAAKqwL,EAAMrwL,GAAK,IAE1DqhD,EACOphC,EAASowK,EAAMrwL,GAAK,GAEpBigB,GAAU28M,EAAQ7zN,GAAUsnL,EAAMrwL,GAAK,GAAKqwL,EAAMrwL,GAAK,IAIjE0F,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJG,OAAQ,iJAAoGR,MACxG,KAEJkiH,WACI,2HAAkGliH,MAC9F,KAERmiH,SAAU,+DAEd7hH,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,CACNR,OAAQ,sIAAoFR,MACxF,KAEJkiH,WACI,0GAA2FliH,MACvF,KAERmiH,SAAU,cAEdlhH,cAAe,wCAA8BjB,MAAM,KACnDkB,YAAa,sBAAiBlB,MAAM,KACpCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN2nH,EAAG,aACHjH,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEV3gH,SAAU,CACNC,QAAS,qBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,gBACNC,EApFR,SAA0Bc,EAAQs3I,EAAergJ,EAAKqhD,GAClD,OAAIg/F,EACO,uBAEAh/F,EAAW,iCAAoB,mBAiFtCn5C,GAAIu4J,EACJt6J,EAAGw2N,EACHx0N,GAAIs4J,EACJr4J,EAAGu0N,EACHt0N,GAAIo4J,EACJplK,EAAGshO,EACHr0N,GAAIm4J,EACJh4J,EAAGk0N,EACHj0N,GAAI+3J,EACJ93J,EAAGg0N,EACH/zN,GAAI63J,GAER53J,uBAAwB,cACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,QAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA3HyB/gB,CAAQ,EAAQ,U,qBCN1D,IAAI00O,EAAwB,mBAAR/rO,KAAsBA,IAAIilB,UAC1C+mN,EAAoBj9N,OAAOutH,0BAA4ByvG,EAASh9N,OAAOutH,yBAAyBt8H,IAAIilB,UAAW,QAAU,KACzHgnN,EAAUF,GAAUC,GAAsD,mBAA1BA,EAAkBvnO,IAAqBunO,EAAkBvnO,IAAM,KAC/GynO,EAAaH,GAAU/rO,IAAIilB,UAAUrf,QACrCumO,EAAwB,mBAARjsO,KAAsBA,IAAI+kB,UAC1CmnN,EAAoBr9N,OAAOutH,0BAA4B6vG,EAASp9N,OAAOutH,yBAAyBp8H,IAAI+kB,UAAW,QAAU,KACzHonN,EAAUF,GAAUC,GAAsD,mBAA1BA,EAAkB3nO,IAAqB2nO,EAAkB3nO,IAAM,KAC/G6nO,EAAaH,GAAUjsO,IAAI+kB,UAAUrf,QAErC2mO,EADgC,mBAAZ1lO,SAA0BA,QAAQoe,UAC5Bpe,QAAQoe,UAAUte,IAAM,KAElD6lO,EADgC,mBAAZlgE,SAA0BA,QAAQrnJ,UAC5BqnJ,QAAQrnJ,UAAUte,IAAM,KAElD8lO,EADgC,mBAAZpgE,SAA0BA,QAAQpnJ,UAC1BonJ,QAAQpnJ,UAAUynN,MAAQ,KACtDC,EAAiB1yL,QAAQh1B,UAAUomB,QACnCuhM,EAAiB79N,OAAOkW,UAAUT,SAClCqoN,EAAmB3iE,SAASjlJ,UAAUT,SACtCsoN,EAASlrM,OAAO3c,UAAU4e,MAC1BkpM,EAASnrM,OAAO3c,UAAUlpB,MAC1B+wK,EAAWlrI,OAAO3c,UAAUlxB,QAC5Bi5O,EAAeprM,OAAO3c,UAAUkb,YAChC8sM,EAAerrM,OAAO3c,UAAU9V,YAChC+9N,EAAQz5G,OAAOxuG,UAAU1P,KACzBq3J,EAAU9vK,MAAMmoB,UAAU1Z,OAC1B4hO,EAAQrwO,MAAMmoB,UAAUsd,KACxB6qM,EAAYtwO,MAAMmoB,UAAUlpB,MAC5B2zB,EAAS5e,KAAKs7B,MACdihM,EAAkC,mBAAXjiE,OAAwBA,OAAOnmJ,UAAUomB,QAAU,KAC1EiiM,EAAOv+N,OAAOktH,sBACdsxG,EAAgC,mBAAX5rM,QAAoD,iBAApBA,OAAO41F,SAAwB51F,OAAO1c,UAAUT,SAAW,KAChHgpN,EAAsC,mBAAX7rM,QAAoD,iBAApBA,OAAO41F,SAElEk2G,EAAgC,mBAAX9rM,QAAyBA,OAAO8rM,cAAuB9rM,OAA9D,GACZA,OAAO8rM,YACP,KACFC,EAAe3+N,OAAOkW,UAAUi3G,qBAEhCyxG,GAA0B,mBAAZpyG,QAAyBA,QAAQmM,eAAiB34H,OAAO24H,kBACvE,GAAG7L,YAAc/+H,MAAMmoB,UACjB,SAAUmuL,GACR,OAAOA,EAAEv3E,WAEX,MAGV,SAAS+xG,EAAoBr2L,EAAKtW,GAC9B,GACIsW,IAAQs2L,KACLt2L,KAAQ,KACRA,GAAQA,GACPA,GAAOA,GAAO,KAAQA,EAAM,KAC7B21L,EAAMzlN,KAAK,IAAKwZ,GAEnB,OAAOA,EAEX,IAAI6sM,EAAW,mCACf,GAAmB,iBAARv2L,EAAkB,CACzB,IAAIw2L,EAAMx2L,EAAM,GAAK7nB,GAAQ6nB,GAAO7nB,EAAO6nB,GAC3C,GAAIw2L,IAAQx2L,EAAK,CACb,IAAIy2L,EAASpsM,OAAOmsM,GAChBE,EAAMlB,EAAOtlN,KAAKwZ,EAAK+sM,EAAOt3O,OAAS,GAC3C,OAAOo2K,EAASrlJ,KAAKumN,EAAQF,EAAU,OAAS,IAAMhhE,EAASrlJ,KAAKqlJ,EAASrlJ,KAAKwmN,EAAK,cAAe,OAAQ,KAAM,KAG5H,OAAOnhE,EAASrlJ,KAAKwZ,EAAK6sM,EAAU,OAGxC,IAAII,EAAc7+M,EAAQ,GACtB8+M,EAAgBD,EAAYxyB,OAC5B0yB,EAAgBC,EAASF,GAAiBA,EAAgB,KAuM9D,SAASG,EAAWn3N,EAAGo3N,EAAclmN,GACjC,IAAImmN,EAAkD,YAArCnmN,EAAKomN,YAAcF,GAA6B,IAAM,IACvE,OAAOC,EAAYr3N,EAAIq3N,EAG3B,SAASphE,EAAMj2J,GACX,OAAO21J,EAASrlJ,KAAKma,OAAOzqB,GAAI,KAAM,UAG1C,SAAS5O,EAAQ+H,GAAO,QAAsB,mBAAfo+N,EAAMp+N,IAA+Bm9N,GAAgC,iBAARn9N,GAAoBm9N,KAAen9N,GAE/H,SAASoyB,EAASpyB,GAAO,QAAsB,oBAAfo+N,EAAMp+N,IAAgCm9N,GAAgC,iBAARn9N,GAAoBm9N,KAAen9N,GAOjI,SAAS+9N,EAAS/9N,GACd,GAAIk9N,EACA,OAAOl9N,GAAsB,iBAARA,GAAoBA,aAAeqxB,OAE5D,GAAmB,iBAARrxB,EACP,OAAO,EAEX,IAAKA,GAAsB,iBAARA,IAAqBi9N,EACpC,OAAO,EAEX,IAEI,OADAA,EAAY9lN,KAAKnX,IACV,EACT,MAAOkW,IACT,OAAO,EArOXmJ,EAAOC,QAAU,SAAS++M,EAASr+N,EAAKiK,EAASq0N,EAAOC,GACpD,IAAIxmN,EAAO9N,GAAW,GAEtB,GAAI5T,EAAI0hB,EAAM,eAAsC,WAApBA,EAAKomN,YAA+C,WAApBpmN,EAAKomN,WACjE,MAAM,IAAI1pM,UAAU,oDAExB,GACIp+B,EAAI0hB,EAAM,qBAAuD,iBAAzBA,EAAKymN,gBACvCzmN,EAAKymN,gBAAkB,GAAKzmN,EAAKymN,kBAAoBjB,IAC5B,OAAzBxlN,EAAKymN,iBAGX,MAAM,IAAI/pM,UAAU,0FAExB,IAAIgqM,GAAgBpoO,EAAI0hB,EAAM,kBAAmBA,EAAK0mN,cACtD,GAA6B,kBAAlBA,GAAiD,WAAlBA,EACtC,MAAM,IAAIhqM,UAAU,iFAGxB,GACIp+B,EAAI0hB,EAAM,WACS,OAAhBA,EAAKy0K,QACW,OAAhBz0K,EAAKy0K,UACH/6J,SAAS1Z,EAAKy0K,OAAQ,MAAQz0K,EAAKy0K,QAAUz0K,EAAKy0K,OAAS,GAEhE,MAAM,IAAI/3J,UAAU,4DAExB,GAAIp+B,EAAI0hB,EAAM,qBAAwD,kBAA1BA,EAAK2mN,iBAC7C,MAAM,IAAIjqM,UAAU,qEAExB,IAAIiqM,EAAmB3mN,EAAK2mN,iBAE5B,QAAmB,IAAR1+N,EACP,MAAO,YAEX,GAAY,OAARA,EACA,MAAO,OAEX,GAAmB,kBAARA,EACP,OAAOA,EAAM,OAAS,QAG1B,GAAmB,iBAARA,EACP,OAAO2+N,EAAc3+N,EAAK+X,GAE9B,GAAmB,iBAAR/X,EAAkB,CACzB,GAAY,IAARA,EACA,OAAOu9N,IAAWv9N,EAAM,EAAI,IAAM,KAEtC,IAAI2wB,EAAMW,OAAOtxB,GACjB,OAAO0+N,EAAmBpB,EAAoBt9N,EAAK2wB,GAAOA,EAE9D,GAAmB,iBAAR3wB,EAAkB,CACzB,IAAI4+N,EAAYttM,OAAOtxB,GAAO,IAC9B,OAAO0+N,EAAmBpB,EAAoBt9N,EAAK4+N,GAAaA,EAGpE,IAAIC,OAAiC,IAAf9mN,EAAKumN,MAAwB,EAAIvmN,EAAKumN,MAE5D,QADqB,IAAVA,IAAyBA,EAAQ,GACxCA,GAASO,GAAYA,EAAW,GAAoB,iBAAR7+N,EAC5C,OAAO/H,EAAQ+H,GAAO,UAAY,WAGtC,IAuRewd,EAvRXgvK,EA6UR,SAAmBz0K,EAAMumN,GACrB,IAAIQ,EACJ,GAAoB,OAAhB/mN,EAAKy0K,OACLsyC,EAAa,SACV,MAA2B,iBAAhB/mN,EAAKy0K,QAAuBz0K,EAAKy0K,OAAS,GAGxD,OAAO,KAFPsyC,EAAajC,EAAM1lN,KAAK3qB,MAAMurB,EAAKy0K,OAAS,GAAI,KAIpD,MAAO,CACH3qM,KAAMi9O,EACNl4K,KAAMi2K,EAAM1lN,KAAK3qB,MAAM8xO,EAAQ,GAAIQ,IAxV1BC,CAAUhnN,EAAMumN,GAE7B,QAAoB,IAATC,EACPA,EAAO,QACJ,GAAIrzO,EAAQqzO,EAAMv+N,IAAQ,EAC7B,MAAO,aAGX,SAASg/N,EAAQx7O,EAAO+C,EAAM04O,GAK1B,GAJI14O,IACAg4O,EAAOzB,EAAU3lN,KAAKonN,IACjB14O,KAAKU,GAEV04O,EAAU,CACV,IAAIC,EAAU,CACVZ,MAAOvmN,EAAKumN,OAKhB,OAHIjoO,EAAI0hB,EAAM,gBACVmnN,EAAQf,WAAapmN,EAAKomN,YAEvBE,EAAS76O,EAAO07O,EAASZ,EAAQ,EAAGC,GAE/C,OAAOF,EAAS76O,EAAOu0B,EAAMumN,EAAQ,EAAGC,GAG5C,GAAmB,mBAARv+N,IAAuBoyB,EAASpyB,GAAM,CAC7C,IAAI5c,EAmKZ,SAAgB83B,GACZ,GAAIA,EAAE93B,KAAQ,OAAO83B,EAAE93B,KACvB,IAAI2hB,EAAIy3N,EAAOrlN,KAAKolN,EAAiBplN,KAAK+D,GAAI,wBAC9C,OAAInW,EAAYA,EAAE,GACX,KAvKQo6N,CAAOn/N,GACdtB,GAAO0gO,EAAWp/N,EAAKg/N,GAC3B,MAAO,aAAe57O,EAAO,KAAOA,EAAO,gBAAkB,KAAOsb,GAAKtY,OAAS,EAAI,MAAQy2O,EAAM1lN,KAAKzY,GAAM,MAAQ,KAAO,IAElI,GAAIq/N,EAAS/9N,GAAM,CACf,IAAIq/N,GAAYnC,EAAoB1gE,EAASrlJ,KAAKma,OAAOtxB,GAAM,yBAA0B,MAAQi9N,EAAY9lN,KAAKnX,GAClH,MAAsB,iBAARA,GAAqBk9N,EAA2CmC,GAAvBC,EAAUD,IAErE,IAqPe7hN,EArPDxd,IAsPS,iBAANwd,IACU,oBAAhB85C,aAA+B95C,aAAa85C,aAG1B,iBAAf95C,EAAEzsB,UAAmD,mBAAnBysB,EAAEyN,cA1P9B,CAGhB,IAFA,IAAIpkB,GAAI,IAAM81N,EAAaxlN,KAAKma,OAAOtxB,EAAIjP,WACvCmiH,GAAQlzG,EAAImpK,YAAc,GACrBr/K,GAAI,EAAGA,GAAIopH,GAAM9sH,OAAQ0D,KAC9B+c,IAAK,IAAMqsG,GAAMppH,IAAG1G,KAAO,IAAM46O,EAAWlhE,EAAM5pD,GAAMppH,IAAGtG,OAAQ,SAAUu0B,GAKjF,OAHAlR,IAAK,IACD7G,EAAIipK,YAAcjpK,EAAIipK,WAAW7iL,SAAUygB,IAAK,OACpDA,GAAK,KAAO81N,EAAaxlN,KAAKma,OAAOtxB,EAAIjP,WAAa,IAG1D,GAAIkH,EAAQ+H,GAAM,CACd,GAAmB,IAAfA,EAAI5Z,OAAgB,MAAO,KAC/B,IAAIm5O,GAAKH,EAAWp/N,EAAKg/N,GACzB,OAAIxyC,IAoRZ,SAA0B+yC,GACtB,IAAK,IAAIz1O,EAAI,EAAGA,EAAIy1O,EAAGn5O,OAAQ0D,IAC3B,GAAIoB,EAAQq0O,EAAGz1O,GAAI,OAAS,EACxB,OAAO,EAGf,OAAO,EA1RY01O,CAAiBD,IACrB,IAAME,EAAaF,GAAI/yC,GAAU,IAErC,KAAOqwC,EAAM1lN,KAAKooN,GAAI,MAAQ,KAEzC,GA6FJ,SAAiBv/N,GAAO,QAAsB,mBAAfo+N,EAAMp+N,IAA+Bm9N,GAAgC,iBAARn9N,GAAoBm9N,KAAen9N,GA7FvH0/N,CAAQ1/N,GAAM,CACd,IAAIqnC,GAAQ+3L,EAAWp/N,EAAKg/N,GAC5B,MAAM,UAAW1oN,MAAM3B,aAAc,UAAW3U,IAAQo9N,EAAajmN,KAAKnX,EAAK,SAG1D,IAAjBqnC,GAAMjhD,OAAuB,IAAMkrC,OAAOtxB,GAAO,IAC9C,MAAQsxB,OAAOtxB,GAAO,KAAO68N,EAAM1lN,KAAKkwB,GAAO,MAAQ,KAHnD,MAAQ/V,OAAOtxB,GAAO,KAAO68N,EAAM1lN,KAAKmlJ,EAAQnlJ,KAAK,YAAc6nN,EAAQh/N,EAAI2/N,OAAQt4L,IAAQ,MAAQ,KAKtH,GAAmB,iBAARrnC,GAAoBy+N,EAAe,CAC1C,GAAIX,GAA+C,mBAAvB99N,EAAI89N,IAAiCF,EAC7D,OAAOA,EAAY59N,EAAK,CAAEs+N,MAAOO,EAAWP,IACzC,GAAsB,WAAlBG,GAAqD,mBAAhBz+N,EAAIg/N,QAChD,OAAOh/N,EAAIg/N,UAGnB,GAwIJ,SAAexhN,GACX,IAAKm+M,IAAYn+M,GAAkB,iBAANA,EACzB,OAAO,EAEX,IACIm+M,EAAQxkN,KAAKqG,GACb,IACIu+M,EAAQ5kN,KAAKqG,GACf,MAAO3W,IACL,OAAO,EAEX,OAAO2W,aAAa9tB,IACtB,MAAOwmB,IACT,OAAO,EArJH0pN,CAAM5/N,GAAM,CACZ,IAAI6/N,GAAW,GAMf,OALIjE,GACAA,EAAWzkN,KAAKnX,EAAK,SAAUxc,EAAOob,GAClCihO,GAASh6O,KAAKm5O,EAAQpgO,EAAKoB,GAAK,GAAQ,OAASg/N,EAAQx7O,EAAOwc,MAGjE8/N,EAAa,MAAOnE,EAAQxkN,KAAKnX,GAAM6/N,GAAUrzC,GAE5D,GA0KJ,SAAehvK,GACX,IAAKu+M,IAAYv+M,GAAkB,iBAANA,EACzB,OAAO,EAEX,IACIu+M,EAAQ5kN,KAAKqG,GACb,IACIm+M,EAAQxkN,KAAKqG,GACf,MAAOzY,GACL,OAAO,EAEX,OAAOyY,aAAa5tB,IACtB,MAAOsmB,IACT,OAAO,EAvLH6pN,CAAM//N,GAAM,CACZ,IAAIggO,GAAW,GAMf,OALIhE,GACAA,EAAW7kN,KAAKnX,EAAK,SAAUxc,GAC3Bw8O,GAASn6O,KAAKm5O,EAAQx7O,EAAOwc,MAG9B8/N,EAAa,MAAO/D,EAAQ5kN,KAAKnX,GAAMggO,GAAUxzC,GAE5D,GAsIJ,SAAmBhvK,GACf,IAAKy+M,IAAez+M,GAAkB,iBAANA,EAC5B,OAAO,EAEX,IACIy+M,EAAW9kN,KAAKqG,EAAGy+M,GACnB,IACIC,EAAW/kN,KAAKqG,EAAG0+M,GACrB,MAAOr1N,IACL,OAAO,EAEX,OAAO2W,aAAajnB,QACtB,MAAO2f,IACT,OAAO,EAnJH+pN,CAAUjgO,GACV,OAAOkgO,EAAiB,WAE5B,GA8KJ,SAAmB1iN,GACf,IAAK0+M,IAAe1+M,GAAkB,iBAANA,EAC5B,OAAO,EAEX,IACI0+M,EAAW/kN,KAAKqG,EAAG0+M,GACnB,IACID,EAAW9kN,KAAKqG,EAAGy+M,GACrB,MAAOp1N,IACL,OAAO,EAEX,OAAO2W,aAAaw+I,QACtB,MAAO9lJ,IACT,OAAO,EA3LHiqN,CAAUngO,GACV,OAAOkgO,EAAiB,WAE5B,GAgJJ,SAAmB1iN,GACf,IAAK2+M,IAAiB3+M,GAAkB,iBAANA,EAC9B,OAAO,EAEX,IAEI,OADA2+M,EAAahlN,KAAKqG,IACX,EACT,MAAOtH,IACT,OAAO,EAxJHkqN,CAAUpgO,GACV,OAAOkgO,EAAiB,WAE5B,GAqDJ,SAAkBlgO,GAAO,QAAsB,oBAAfo+N,EAAMp+N,IAAgCm9N,GAAgC,iBAARn9N,GAAoBm9N,KAAen9N,GArDzHugG,CAASvgG,GACT,OAAOs/N,EAAUN,EAAQpuO,OAAOoP,KAEpC,GAuEJ,SAAkBA,GACd,IAAKA,GAAsB,iBAARA,IAAqB+8N,EACpC,OAAO,EAEX,IAEI,OADAA,EAAc5lN,KAAKnX,IACZ,EACT,MAAOkW,IACT,OAAO,EA/EHmqN,CAASrgO,GACT,OAAOs/N,EAAUN,EAAQjC,EAAc5lN,KAAKnX,KAEhD,GAgDJ,SAAmBA,GAAO,QAAsB,qBAAfo+N,EAAMp+N,IAAiCm9N,GAAgC,iBAARn9N,GAAoBm9N,KAAen9N,GAhD3HsgO,CAAUtgO,GACV,OAAOs/N,EAAUjD,EAAellN,KAAKnX,IAEzC,GA2CJ,SAAkBA,GAAO,QAAsB,oBAAfo+N,EAAMp+N,IAAgCm9N,GAAgC,iBAARn9N,GAAoBm9N,KAAen9N,GA3CzHugO,CAASvgO,GACT,OAAOs/N,EAAUN,EAAQ1tM,OAAOtxB,KAIpC,GAAsB,oBAAXoN,QAA0BpN,IAAQoN,OACzC,MAAO,sBAEX,GAC2B,oBAAfozN,YAA8BxgO,IAAQwgO,YACxB,oBAAXz2M,QAA0B/pB,IAAQ+pB,OAE7C,MAAO,0BAEX,IA0BJ,SAAgB/pB,GAAO,QAAsB,kBAAfo+N,EAAMp+N,IAA8Bm9N,GAAgC,iBAARn9N,GAAoBm9N,KAAen9N,GA1BpHygO,CAAOzgO,KAASoyB,EAASpyB,GAAM,CAChC,IAAI0gO,GAAKtB,EAAWp/N,EAAKg/N,GACrB2B,GAAgBtD,EAAMA,EAAIr9N,KAASvB,OAAOkW,UAAY3U,aAAevB,QAAUuB,EAAImyB,cAAgB1zB,OACnGmiO,GAAW5gO,aAAevB,OAAS,GAAK,iBACxCoiO,IAAaF,IAAiBxD,GAAe1+N,OAAOuB,KAASA,GAAOm9N,KAAen9N,EAAMy8N,EAAOtlN,KAAKinN,EAAMp+N,GAAM,GAAI,GAAK4gO,GAAW,SAAW,GAEhJjnO,IADiBgnO,IAA4C,mBAApB3gO,EAAImyB,YAA6B,GAAKnyB,EAAImyB,YAAY/uC,KAAO4c,EAAImyB,YAAY/uC,KAAO,IAAM,KAC3Gy9O,IAAaD,GAAW,IAAM/D,EAAM1lN,KAAKmlJ,EAAQnlJ,KAAK,GAAI0pN,IAAa,GAAID,IAAY,IAAK,MAAQ,KAAO,IACvI,OAAkB,IAAdF,GAAGt6O,OAAuBuT,GAAM,KAChC6yL,EACO7yL,GAAM,IAAM8lO,EAAaiB,GAAIl0C,GAAU,IAE3C7yL,GAAM,KAAOkjO,EAAM1lN,KAAKupN,GAAI,MAAQ,KAE/C,OAAOpvM,OAAOtxB,IAiDlB,IAAIq8J,EAAS59J,OAAOkW,UAAUgb,gBAAkB,SAAU/wB,GAAO,OAAOA,KAAO3c,MAC/E,SAASoU,EAAI2J,EAAKpB,GACd,OAAOy9J,EAAOllJ,KAAKnX,EAAKpB,GAG5B,SAASw/N,EAAMp+N,GACX,OAAOs8N,EAAenlN,KAAKnX,GAU/B,SAAS9U,EAAQq0O,EAAI/hN,GACjB,GAAI+hN,EAAGr0O,QAAW,OAAOq0O,EAAGr0O,QAAQsyB,GACpC,IAAK,IAAI1zB,EAAI,EAAG+jI,EAAI0xG,EAAGn5O,OAAQ0D,EAAI+jI,EAAG/jI,IAClC,GAAIy1O,EAAGz1O,KAAO0zB,EAAK,OAAO1zB,EAE9B,OAAQ,EAsFZ,SAAS60O,EAAchuM,EAAK5Y,GACxB,GAAI4Y,EAAIvqC,OAAS2xB,EAAKymN,gBAAiB,CACnC,IAAIsC,EAAYnwM,EAAIvqC,OAAS2xB,EAAKymN,gBAC9BuC,EAAU,OAASD,EAAY,mBAAqBA,EAAY,EAAI,IAAM,IAC9E,OAAOnC,EAAclC,EAAOtlN,KAAKwZ,EAAK,EAAG5Y,EAAKymN,iBAAkBzmN,GAAQgpN,EAI5E,OAAO/C,EADCxhE,EAASrlJ,KAAKqlJ,EAASrlJ,KAAKwZ,EAAK,WAAY,QAAS,eAAgBqwM,GACzD,SAAUjpN,GAGnC,SAASipN,EAAQnvM,GACb,IAAImI,EAAInI,EAAEC,WAAW,GACjBtU,EAAI,CACJ0V,EAAG,IACHC,EAAG,IACHm0I,GAAI,IACJ25D,GAAI,IACJC,GAAI,KACNlnM,GACF,OAAIxc,EAAY,KAAOA,EAChB,OAASwc,EAAI,GAAO,IAAM,IAAM0iM,EAAavlN,KAAK6iB,EAAE9lB,SAAS,KAGxE,SAASorN,EAAU3uM,GACf,MAAO,UAAYA,EAAM,IAG7B,SAASuvM,EAAiBv9O,GACtB,OAAOA,EAAO,SAGlB,SAASm9O,EAAan9O,EAAMy/B,EAAMzL,EAAS61K,GAEvC,OAAO7pM,EAAO,KAAOy/B,EAAO,OADRoqK,EAASizC,EAAa9oN,EAAS61K,GAAUqwC,EAAM1lN,KAAKR,EAAS,OAC7B,IA2BxD,SAAS8oN,EAAaF,EAAI/yC,GACtB,GAAkB,IAAd+yC,EAAGn5O,OAAgB,MAAO,GAC9B,IAAI+6O,EAAa,KAAO30C,EAAO5lI,KAAO4lI,EAAO3qM,KAC7C,OAAOs/O,EAAatE,EAAM1lN,KAAKooN,EAAI,IAAM4B,GAAc,KAAO30C,EAAO5lI,KAGzE,SAASw4K,EAAWp/N,EAAKg/N,GACrB,IAAIoC,EAAQnpO,EAAQ+H,GAChBu/N,EAAK,GACT,GAAI6B,EAAO,CACP7B,EAAGn5O,OAAS4Z,EAAI5Z,OAChB,IAAK,IAAI0D,EAAI,EAAGA,EAAIkW,EAAI5Z,OAAQ0D,IAC5By1O,EAAGz1O,GAAKuM,EAAI2J,EAAKlW,GAAKk1O,EAAQh/N,EAAIlW,GAAIkW,GAAO,GAGrD,IACIqhO,EADAz5C,EAAuB,mBAATo1C,EAAsBA,EAAKh9N,GAAO,GAEpD,GAAIk9N,EAAmB,CACnBmE,EAAS,GACT,IAAK,IAAI5iH,EAAI,EAAGA,EAAImpE,EAAKxhM,OAAQq4H,IAC7B4iH,EAAO,IAAMz5C,EAAKnpE,IAAMmpE,EAAKnpE,GAIrC,IAAK,IAAI7/G,KAAOoB,EACP3J,EAAI2J,EAAKpB,KACVwiO,GAAS9vM,OAAO1gC,OAAOgO,MAAUA,GAAOA,EAAMoB,EAAI5Z,QAClD82O,GAAqBmE,EAAO,IAAMziO,aAAgByyB,SAG3CurM,EAAMzlN,KAAK,SAAUvY,GAC5B2gO,EAAG15O,KAAKm5O,EAAQpgO,EAAKoB,GAAO,KAAOg/N,EAAQh/N,EAAIpB,GAAMoB,IAErDu/N,EAAG15O,KAAK+Y,EAAM,KAAOogO,EAAQh/N,EAAIpB,GAAMoB,MAG/C,GAAoB,mBAATg9N,EACP,IAAK,IAAIxmO,EAAI,EAAGA,EAAIoxL,EAAKxhM,OAAQoQ,IACzB4mO,EAAajmN,KAAKnX,EAAK4nL,EAAKpxL,KAC5B+oO,EAAG15O,KAAK,IAAMm5O,EAAQp3C,EAAKpxL,IAAM,MAAQwoO,EAAQh/N,EAAI4nL,EAAKpxL,IAAKwJ,IAI3E,OAAOu/N,I,wBCpgBF,SAAUj7N,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,8FAA8FL,MAClG,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,4DAA4DhB,MAClE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CivB,cAAe,SACfmuF,KAAM,SAAUnhF,GACZ,MAAO,QAAQx7B,KAAKw7B,IAExB7M,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCluB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNC,EAAG,mBACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,YACJC,EAAG,SACHC,GAAI,SACJhN,EAAG,SACHiN,GAAI,SACJG,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB/gB,CAAQ,EAAQ,U,0GCF3C,SAASu6O,EAAmB1vM,GACzC,OCJa,SAA4BA,GACzC,GAAIplC,MAAMyL,QAAQ25B,GAAM,OAAO,OAAA2vM,EAAA,GAAiB3vM,GDGzC,CAAkBA,IAAQ,OAAA4vM,EAAA,GAAgB5vM,IAAQ,OAAA6vM,EAAA,GAA2B7vM,IELvE,WACb,MAAM,IAAI6C,UAAU,wIFIwE,K,sBGKrF,SAAUnwB,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,yIAAqGL,MACzG,KAEJM,YACI,sFAAsFN,MAClF,KAER0U,kBAAkB,EAClB1T,SAAU,mHAAyDhB,MAC/D,KAEJiB,cAAe,uBAAuBjB,MAAM,KAC5CkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpB8tB,cAAe,SACfmuF,KAAM,SAAUnhF,GACZ,MAAO,QAAQx7B,KAAKw7B,IAExB7M,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCluB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,yBACJC,IAAK,+BACLC,KAAM,qCACN2nH,EAAG,YACHjH,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEV3gH,SAAU,CACNC,QAAS,yBACTC,QAAS,0BACTC,SAAU,sCACVC,QAAS,yBACTC,SAAU,6CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,qBACNC,EAAG,iBACHC,GAAI,aACJ/B,EAAG,mBACHgC,GAAI,aACJC,EAAG,oBACHC,GAAI,cACJhN,EAAG,mBACHiN,GAAI,aACJC,EAAG,qBACHC,GAAI,eACJC,EAAG,oBACHC,GAAI,cACJC,EAAG,oBACHC,GAAI,eAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7EyB/gB,CAAQ,EAAQ,U,sBCEjD,SAAUud,GAAU,aAIzB,IAAIojK,EAAa,CACbC,MAAO,CAEH7gK,GAAI,CAAC,SAAU,UAAW,WAC1B/B,EAAG,CAAC,cAAe,iBACnBgC,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBI,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE7BogK,uBAAwB,SAAUjgK,EAAQkgK,GACtC,OAAkB,IAAXlgK,EACDkgK,EAAQ,GACRlgK,GAAU,GAAKA,GAAU,EACvBkgK,EAAQ,GACRA,EAAQ,IAEpBxI,UAAW,SAAU13J,EAAQs3I,EAAergJ,GACxC,IAAIipK,EAAUH,EAAWC,MAAM/oK,GAC/B,OAAmB,IAAfA,EAAIxY,OACG64J,EAAgB4oB,EAAQ,GAAKA,EAAQ,GAGxClgK,EACA,IACA+/J,EAAWE,uBAAuBjgK,EAAQkgK,KAMjDvjK,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFL,MACvF,KAEJM,YACI,2DAA2DN,MAAM,KACrE0U,kBAAkB,EAClB1T,SAAU,iEAA4DhB,MAClE,KAEJiB,cAAe,0CAAqCjB,MAAM,KAC1DkB,YAAa,4BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBxtB,QAAS,mBACTC,SAAU,WAUN,MATmB,CACf,kCACA,sCACA,iCACA,iCACA,wCACA,gCACA,iCAEgBvkB,KAAK8xC,QAE7BttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,mBACHC,GAAI4gK,EAAWrI,UACft6J,EAAG2iK,EAAWrI,UACdt4J,GAAI2gK,EAAWrI,UACfr4J,EAAG0gK,EAAWrI,UACdp4J,GAAIygK,EAAWrI,UACfplK,EAAG,MACHiN,GAAIwgK,EAAWrI,UACfh4J,EAAG,SACHC,GAAIogK,EAAWrI,UACf93J,EAAG,SACHC,GAAIkgK,EAAWrI,WAEnB53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB/gB,CAAQ,EAAQ,U,oCCL1D,wEAuBA,aAIC,WAAoBqyB,EAA0BC,GAA1B,KAAAD,OAA0B,KAAAC,gB,OAE9C,YAAAqoN,aAAA,WACC,OAAOz/O,KAAKm3B,KAAKjlB,IAAyBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,iCAG9E,YAAAqnN,eAAA,SAAeC,GACd,IAAM71J,GAAS,IAAI,KAAaz1E,IAAI,WAAYsrO,EAAS1tN,YACzD,OAAOjyB,KAAKm3B,KAAKjlB,IAA2BlS,KAAKo3B,cAAcgB,OAAOC,OAAS,iCAAkC,CAChHyxD,OAAQA,KAIV,YAAA81J,yBAAA,SAAyBhkN,GACxB,OAAO57B,KAAKm3B,KAAKgB,KAAan4B,KAAKo3B,cAAcgB,OAAOC,OAAS,qCAAsCuD,IAExG,YAAAikN,6BAAA,SAA6BjkN,GAC5B,OAAO57B,KAAKm3B,KAAKgB,KAAan4B,KAAKo3B,cAAcgB,OAAOC,OAAS,yCAA0CuD,IAG5G,YAAAkkN,wCAAA,SACClkN,GAEA,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,mDACnCuD,IAGF,YAAAmkN,mBAAA,SAAmBnkN,GAClB,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,6BACnCuD,IAIF,YAAAokN,0BAAA,SAA0BpkN,GACzB,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,2CACnCuD,IAGF,YAAAqkN,4BAAA,SAA4BrkN,GAC3B,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,6CACnCuD,IAIF,YAAAskN,uBAAA,WACC,OAAOlgP,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,sCAGrC,YAAA8nN,wBAAA,SAAwBC,GACvB,IAAMC,EAAmBD,EAAWpwM,KAAK,KACnC85C,GAAS,IAAI,KAAaz1E,IAAI,aAAcgsO,GAElD,OAAOrgP,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,wCACnC,CACCyxD,OAAQA,KAIX,YAAAw2J,0BAAA,SAA0B1kN,GACzB,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,uCACnCuD,IAGF,YAAA2kN,qCAAA,WACC,OAAOvgP,KAAKm3B,KAAKjlB,IAChB,oDAGF,YAAAsuO,mBAAA,SAAmBp4G,GAClB,IAAMt+C,GAAS,IAAI,KAAaz1E,IAAI,aAAc+zH,EAAWn2G,YAC7D,OAAOjyB,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,sCACnC,CACCyxD,OAAQA,KAKX,YAAA22J,iBAAA,SAAiBC,GAChB,IAAM52J,GAAS,IAAI,KAAaz1E,IAAI,SAAUqsO,EAAOzuN,YAErD,OAAOjyB,KAAKm3B,KAAKjlB,IAAwBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,iCAAkC,CAC7GyxD,OAAQA,KAIV,YAAA62J,4BAAA,SAA4Bv4G,GAC3B,IAAMt+C,GAAS,IAAI,KAAaz1E,IAAI,aAAc+zH,EAAWn2G,YAC7D,OAAOjyB,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,6CACnC,CACCyxD,OAAQA,KAKX,YAAA82J,eAAA,SAAeC,EAAiBC,GAC/B,IAAMC,EAAMpyO,OAAOkyO,GACnB,OAAK5lM,MAAM8lM,GAMJ,KALFD,EAAWz7O,KAAK,SAAAk2B,GAAK,OAAA5sB,OAAO4sB,EAAEylN,UAAYD,KACrC,EAEFA,EAAI9uN,YAKb,YAAAgvN,qBAAA,SAAqBH,GACpB,IAAMI,EAAe,GAIrB,OAHAJ,EAAWztO,QAAQ,SAAAkoB,GAClB2lN,EAAat9O,KAAK23B,EAAEylN,UAEdE,EAAajvN,YAGrB,YAAAkvN,cAAA,SAAcL,GACb,IAAMI,EAA0B,GAIhC,OAHAJ,EAAWv+N,MAAM,KAAKlP,QAAQ,SAAAkoB,GAC7B2lN,EAAat9O,KAAK,CAAEo9O,OAAQzlN,MAEtB2lN,GAER,YAAAE,0BAAA,WACC,OAAOphP,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,yCAGrC,YAAAgpN,wBAAA,SAAwBzlN,GACvB,OAAO57B,KAAKm3B,KAAKgB,KAAWn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,0CAA2CuD,IAE3G,YAAA0lN,qBAAA,WACC,OAAOthP,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,6CAGrC,YAAAkpN,aAAA,SAAaC,GACZ,IAAM13J,GAAS,IAAI,KAAaz1E,IAAI,iBAAkBmtO,EAAevvN,YACrE,OAAOjyB,KAAKm3B,KAAKjlB,IAAyBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,yBAA0B,CACtGyxD,OAAQA,K,sCAlJE23J,GAAe,sB,yBAAfA,EAAe,QAAfA,EAAe,qBAFf,S,EADb,I,sKCtBM,SAAUC,EAAaC,GAA0B,IAAjB71G,EAAiB,uDAAL,IAC9C,OAAO,SAACvlH,GAAD,OAAYA,EAAO8V,KAAK,IAAIulN,EAAqBD,EAAS71G,K,IAE/D81G,E,8BACF,WAAYD,EAAS71G,GAAS,oBAC1B9rI,KAAK2hP,QAAUA,EACf3hP,KAAK8rI,UAAYA,G,mBAErB,SAAKvvG,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI29O,EAAuBtlN,EAAYv8B,KAAK2hP,QAAS3hP,KAAK8rI,gB,GAGpF+1G,E,YACF,WAAYplN,EAAaklN,EAAS71G,GAAS,M,MAAA,2B,EACvC,K,EAAA,E,EAAA,CAAMrvG,G,kBAAN,E,iGACKklN,QAAUA,EACf,EAAK71G,UAAYA,EACjB,EAAKg2G,sBAAwB,KAC7B,EAAKC,UAAY,KACjB,EAAKjhG,UAAW,EANuB,E,0DAQ3C,SAAMv/I,GACFvB,KAAKgiP,gBACLhiP,KAAK+hP,UAAYxgP,EACjBvB,KAAK8gJ,UAAW,EAChB9gJ,KAAK6C,IAAI7C,KAAK8hP,sBAAwB9hP,KAAK8rI,UAAU1nI,SAAS69O,EAAcjiP,KAAK2hP,QAAS3hP,S,uBAE9F,WACIA,KAAKkiP,gBACLliP,KAAKy8B,YAAY34B,a,2BAErB,WAEI,GADA9D,KAAKgiP,gBACDhiP,KAAK8gJ,SAAU,CACf,IAAQihG,EAAc/hP,KAAd+hP,UACR/hP,KAAK+hP,UAAY,KACjB/hP,KAAK8gJ,UAAW,EAChB9gJ,KAAKy8B,YAAY54B,KAAKk+O,M,2BAG9B,WACI,IAAMD,EAAwB9hP,KAAK8hP,sBACL,OAA1BA,IACA9hP,KAAKwL,OAAOs2O,GACZA,EAAsBlsO,cACtB5V,KAAK8hP,sBAAwB,U,CAjCJ,KAqCrC,SAASG,EAAa1lN,GAClBA,EAAW2lN,kB,0JCnDT,SAAUC,EAAKC,EAAaC,GAC9B,IAAIC,GAAU,EAId,OAHIhpO,UAAUnV,QAAU,IACpBm+O,GAAU,GAEP,SAA8B/7N,GACjC,OAAOA,EAAO8V,KAAK,IAAIkmN,EAAaH,EAAaC,EAAMC,K,IAGzDC,E,8BACF,WAAYH,EAAaC,GAAqB,IAAfC,EAAe,4EAC1CtiP,KAAKoiP,YAAcA,EACnBpiP,KAAKqiP,KAAOA,EACZriP,KAAKsiP,QAAUA,G,mBAEnB,SAAK/lN,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIs+O,EAAejmN,EAAYv8B,KAAKoiP,YAAapiP,KAAKqiP,KAAMriP,KAAKsiP,c,GAG3FE,E,YACF,WAAY/lN,EAAa2lN,EAAaK,EAAOH,GAAO,M,MAAA,2B,EAChD,K,EAAA,E,EAAA,CAAM7lN,G,kBAAN,E,iGACK2lN,YAAcA,EACnB,EAAKK,MAAQA,EACb,EAAKH,QAAUA,EACf,EAAK34O,MAAQ,EALmC,E,uDAOpD,WACI,OAAO3J,KAAKyiP,O,IAEhB,SAASlhP,GACLvB,KAAKsiP,SAAU,EACftiP,KAAKyiP,MAAQlhP,I,mBAEjB,SAAMA,GACF,GAAKvB,KAAKsiP,QAKN,OAAOtiP,KAAKy8J,SAASl7J,GAJrBvB,KAAKqiP,KAAO9gP,EACZvB,KAAKy8B,YAAY54B,KAAKtC,K,sBAM9B,SAASA,GACL,IACIq7B,EADEjzB,EAAQ3J,KAAK2J,QAEnB,IACIizB,EAAS58B,KAAKoiP,YAAYpiP,KAAKqiP,KAAM9gP,EAAOoI,GAEhD,MAAOgzB,GACH38B,KAAKy8B,YAAYzH,MAAM2H,GAE3B38B,KAAKqiP,KAAOzlN,EACZ58B,KAAKy8B,YAAY54B,KAAK+4B,O,CAlCD,M,kCCpBvB,SAAU83F,KAAhB,iC,kCCEA,IAEIojD,EAFeh7I,EAAQ,OAEfD,CAAa,qCAAqC,GAE9D,GAAIi7I,EACH,IACCA,EAAM,GAAI,UACT,MAAO7jJ,GAER6jJ,EAAQ,KAIV16I,EAAOC,QAAUy6I,G,kCCDjBz6I,EAAQqlN,oBAZuB,WAC3B,SAASC,EAAwBpzG,GAM7B,OALAl7G,MAAMa,KAAKl1B,MACXA,KAAKg6B,QAAUu1G,EACXA,EAAOprI,OAAS,4CAA8CorI,EAAO9lI,IAAI,SAAUkzB,EAAK90B,GAAK,OAAOA,EAAI,EAAI,KAAO80B,EAAI1K,aAAe+d,KAAK,QAAU,GACzJhwC,KAAKmB,KAAO,sBACZnB,KAAKuvI,OAASA,EACPvvI,KAGX,OADA2iP,EAAwBjwN,UAAYlW,OAAOlX,OAAO+uB,MAAM3B,WACjDiwN,EAVoB,I,kCCF/B,wEAGM,SAAU1sO,IAAU,2BAAJpW,EAAI,yBAAJA,EAAI,gBACtB,IAAIisI,EAAYjsI,EAAKA,EAAKsE,OAAS,GACnC,OAAI,YAAY2nI,IACZjsI,EAAKo/B,MACE,YAAcp/B,EAAMisI,IAGpB,YAAUjsI,K,kCCVnB,SAAU+iP,IACZ,MAAsB,mBAAXxzM,QAA0BA,OAAO41F,SAGrC51F,OAAO41F,SAFH,aAFf,gCAMO,IAAMA,EAAW49G,K,sBCGf,SAAUvgO,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gXAAyEL,MAC7E,KAEJM,YAAa,sOAAkDN,MAAM,KACrEgB,SAAU,6RAAuDhB,MAAM,KACvEiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,8EACTC,QAAS,2DACTC,SAAU,6EACVC,QAAS,wEACTC,SAAU,8GACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,6DACRC,KAAM,gFACNC,EAAG,uCACHC,GAAI,0CACJ/B,EAAG,0DACHgC,GAAI,0CACJC,EAAG,8CACHC,GAAI,8BACJhN,EAAG,wCACHiN,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB/gB,CAAQ,EAAQ,U,kCCL1D,wHAOA,aAEC,WAAoB+9O,EAA0BC,EAAkC1rN,GAA5D,KAAAyrN,UAA0B,KAAAC,cAAkC,KAAA1rN,gB,OAEhF,YAAA2rN,UAAA,SAAU3oK,EAA2Bv2E,GAArC,WACC,IAAKu2E,EAAQjmC,IAAIsjH,WAAW,SAA2B,yBAAhBr9E,EAAQjmC,IAAgC,CAC9E,IAAI6uM,EAAS5oK,EAAQ6oK,cACH,MAAdD,EAAO,KAAYA,EAASA,EAAOh4L,UAAU,IACjD,IAAMk4L,EAAc,IAAI,IAAiB9oK,EAAQwQ,OAAQ5qF,KAAKo3B,cAAcgB,OAAOC,OAAS2qN,EAAQ5oK,EAAQt3C,MAC5Gs3C,EAAU59D,OAAOuqB,OAAOqzC,EAAS8oK,GAElC,IAAMC,EAAUh4N,OAAOmP,SAAS8jC,KAC1BglL,EAAYhpK,EAAQwpE,MAAM,CAC/By/F,WAAY,CACX1rN,cAAe,UAAUC,aAAaC,QAAQ,eAC9CyrN,SAAUH,KAIZ,OAAOt/O,EAAKsiJ,OAAOi9F,GAAWp/O,KAC7B,YAAW,SAACioC,G,MACX,IAAKA,EAASu/C,OAEb,OAAO,YAAWv/C,GAKnB,GAHwB,MAApBA,EAASu/C,QACZ,EAAKs3J,YAAY1oN,SAEM,MAApB6R,EAASu/C,OAAgB,CAC5B,IAMI+3J,EANEC,EAAev3M,EAASxU,QAAQvlB,IAAI,gBACpCuxO,EAAkBD,EAAe,eAAeA,EAAiB,GACjE7mN,EAAMsP,EAASjX,MAEjB0uN,EAAa/mN,EAAI3C,QAAU2C,EAAI3C,QAAmB,QAAV,EAAC2C,EAAI3H,aAAK,eAAEw2G,MAoBxD,MAhBC+3G,EADG5mN,EAAI4yG,OACS/yH,OAAOC,KAAKkgB,EAAI4yG,QAAQ,GAExB/yH,OAAOC,KAAKkgB,GAAK,MAIjC+mN,EAAa/mN,EAAI4mN,IAGd5mN,EAAI4yG,QACHg0G,IACHG,EAAa/mN,EAAI4yG,OAAOg0G,GAAe,IAIzC,EAAKV,QAAQx3J,KAAK,CAAE7B,KAAMi6J,EAAiB3lF,QAAS4lF,EAAYhjP,KAAM,WAChE,IAAI2zB,MAAMqvN,GAEhB,OAAO,YAAWz3M,O,sCAtDV03M,GAAgB,gC,yBAAhBA,EAAgB,QAAhBA,EAAgB,Y,EAD7B,I,kCCRA,iFAIA,OAJA,gBAMA,aAEA,OAFA,iB,sBCNA,mBAQE,WAGA,IAAIl/O,EAUAm/O,EAAkB,sBAIlBC,EAAiB,4BAMjBC,EAAc,yBAiBdC,EAAoB,GAEpBC,EAAgB,IAkBhBC,EAAW,IACX9oO,EAAmB,iBAEnB+oO,EAAM,IAGNC,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAOJ,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aArCyB,IAsC1B,CAAC,OAjCkB,KAkCnB,CAAC,UAAWD,GACZ,CAAC,eAtC2B,IAuC5B,CAAC,QArCmB,MAyClBM,EAAU,qBACVC,EAAW,iBAEXC,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBAEZC,EAAY,kBACZC,EAAa,mBAEbC,EAAY,kBACZC,EAAS,eACTrG,EAAY,kBACZsG,EAAY,kBAEZC,EAAa,mBAGbC,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBC,EAAkB,WAClBC,EAAmBllH,OAAOglH,EAAc3/N,QACxC8/N,EAAqBnlH,OAAOilH,EAAgB5/N,QAG5C+/N,EAAW,mBACXC,EAAa,kBACbC,EAAgB,mBAGhBC,EAAe,mDACfC,EAAgB,QAChBhsE,GAAa,mGAMbisE,GAAe,sBACfC,GAAkB1lH,OAAOylH,GAAapgO,QAGtCsgO,GAAc,OAGdC,GAAe,KAGfC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAYdC,GAA6B,mBAG7BxsE,GAAe,WAMfysE,GAAe,kCAGfC,GAAU,OAGVC,GAAa,qBAGbC,GAAa,aAGbC,GAAe,8BAGfC,GAAY,cAGZC,GAAW,mBAGXC,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAOpBC,GAAeC,gDAEfC,GAAe,4BAKfC,GAAe,4BAEfC,GAAeC,8OAKfC,GAAU,IAAMF,GAAe,IAC/BG,GAAU,IAAMP,GAAe,IAC/BQ,GAAW,OAEXC,GAAU,IAAMP,GAAe,IAC/BQ,GAAS,oBAAuBN,GAAeI,GAlB9B,kBAkB0DN,GAAeC,GAAe,IACzGQ,GAAS,2BAETC,GAAc,qBACdC,GAAa,kCACbC,GAAa,qCACbC,GAAU,IAAMZ,GAAe,IAI/Ba,GAAc,MAAQP,GAAU,IAAMC,GAAS,IAC/CO,GAAc,MAAQF,GAAU,IAAML,GAAS,IAC/CQ,GAAkB,qCAClBC,GAAkB,qCAClBC,GAZa,MAAQb,GAAU,IAAMI,GAY1BU,KACXC,GAAW,oBAIXC,GAAQD,GAAWF,GAHP,gBAAwB,CAACR,GAAaC,GAAYC,IAAY54M,KAAK,KAAO,IAAMo5M,GAAWF,GAAW,KAIlHI,GAAU,MAAQ,CAtBN,oBAsBkBX,GAAYC,IAAY54M,KAAK,KAAO,IAAMq5M,GACxEE,GAAW,MAAQ,CAACb,GAAcL,GAAU,IAAKA,GAASM,GAAYC,GA3B3D,qBA2BiF54M,KAAK,KAAO,IAGxGw5M,GAAStoH,OA/BA,YA+Be,KAMxBuoH,GAAcvoH,OAAOmnH,GAAS,KAG9BqB,GAAYxoH,OAAOunH,GAAS,MAAQA,GAAS,KAAOc,GAAWF,GAAO,KAGtEM,GAAgBzoH,OAAO,CACzB2nH,GAAU,IAAMN,GAAU,IAAMS,GAAkB,MAAQ,CAACZ,GAASS,GAAS,KAAK74M,KAAK,KAAO,IAC9F+4M,GAAc,IAAME,GAAkB,MAAQ,CAACb,GAASS,GAAUC,GAAa,KAAK94M,KAAK,KAAO,IAChG64M,GAAU,IAAMC,GAAc,IAAME,GACpCH,GAAU,IAAMI,GAtBD,mDADA,mDA0BfX,GACAgB,IACAt5M,KAAK,KAAM,KAGT45M,GAAe1oH,OAAO,0BAA+B4mH,GAA/B,mBAGtB+B,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBC,GAAiB,GACrBA,GAAe1E,GAAc0E,GAAezE,GAC5CyE,GAAexE,GAAWwE,GAAevE,GACzCuE,GAAetE,GAAYsE,GAAerE,GAC1CqE,GAAepE,GAAmBoE,GAAenE,GACjDmE,GAAelE,IAAa,EAC5BkE,GAAe3F,GAAW2F,GAAe1F,GACzC0F,GAAe5E,GAAkB4E,GAAezF,GAChDyF,GAAe3E,GAAe2E,GAAexF,GAC7CwF,GAAevF,GAAYuF,GAAetF,GAC1CsF,GAAepF,GAAUoF,GAAenF,GACxCmF,GAAelF,GAAakF,GAAehF,GAC3CgF,GAAe/E,GAAU+E,GAAepL,GACxCoL,GAAe7E,IAAc,EAG7B,IAAI8E,GAAgB,GACpBA,GAAc5F,GAAW4F,GAAc3F,GACvC2F,GAAc7E,GAAkB6E,GAAc5E,GAC9C4E,GAAc1F,GAAW0F,GAAczF,GACvCyF,GAAc3E,GAAc2E,GAAc1E,GAC1C0E,GAAczE,GAAWyE,GAAcxE,GACvCwE,GAAcvE,GAAYuE,GAAcrF,GACxCqF,GAAcpF,GAAaoF,GAAcnF,GACzCmF,GAAcjF,GAAaiF,GAAchF,GACzCgF,GAAcrL,GAAaqL,GAAc/E,GACzC+E,GAActE,GAAYsE,GAAcrE,GACxCqE,GAAcpE,GAAaoE,GAAcnE,IAAa,EACtDmE,GAAcxF,GAAYwF,GAAcvF,GACxCuF,GAAc9E,IAAc,EAG5B,IA4EI+E,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiBt8N,WACjBu8N,GAAe56M,SAGf66M,GAA8B,iBAAVviN,QAAsBA,QAAUA,OAAOtrB,SAAWA,QAAUsrB,OAGhFwiN,GAA0B,iBAARrR,MAAoBA,MAAQA,KAAKz8N,SAAWA,QAAUy8N,KAGxE75J,GAAOirK,IAAcC,IAAY3yE,SAAS,cAATA,GAGjC4yE,GAA4CltN,IAAYA,EAAQ11B,UAAY01B,EAG5EmtN,GAAaD,IAAgC,iBAAVntN,GAAsBA,IAAWA,EAAOz1B,UAAYy1B,EAGvFqtN,GAAgBD,IAAcA,GAAWntN,UAAYktN,GAGrDG,GAAcD,IAAiBJ,GAAWM,QAG1CC,GAAY,WACd,IAIE,OAFYJ,IAAcA,GAAW1tN,SAAW0tN,GAAW1tN,QAAQ,QAAQyoM,OAOpEmlB,IAAeA,GAAYG,SAAWH,GAAYG,QAAQ,QACjE,MAAO52N,KAXK,GAeZ62N,GAAoBF,IAAYA,GAASG,cACzCC,GAAaJ,IAAYA,GAASpM,OAClCyM,GAAYL,IAAYA,GAASjN,MACjCuN,GAAeN,IAAYA,GAASz6M,SACpCg7M,GAAYP,IAAYA,GAAS9M,MACjCsN,GAAmBR,IAAYA,GAASS,aAc5C,SAAS1zM,GAAMV,EAAMwzF,EAAS5qI,GAC5B,OAAQA,EAAKsE,QACX,KAAK,EAAG,OAAO8yC,EAAK/hB,KAAKu1G,GACzB,KAAK,EAAG,OAAOxzF,EAAK/hB,KAAKu1G,EAAS5qI,EAAK,IACvC,KAAK,EAAG,OAAOo3C,EAAK/hB,KAAKu1G,EAAS5qI,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOo3C,EAAK/hB,KAAKu1G,EAAS5qI,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOo3C,EAAKU,MAAM8yF,EAAS5qI,GAa7B,SAASyrP,GAAgBvyO,EAAOwyO,EAAQC,EAAUpJ,GAIhD,IAHA,IAAIz4O,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,SAE9BwF,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GAClB4hP,EAAOnJ,EAAa7gP,EAAOiqP,EAASjqP,GAAQwX,GAE9C,OAAOqpO,EAYT,SAASqJ,GAAU1yO,EAAOyyO,GAIxB,IAHA,IAAI7hP,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,SAE9BwF,EAAQxF,IAC8B,IAAzCqnP,EAASzyO,EAAMpP,GAAQA,EAAOoP,KAIpC,OAAOA,EAYT,SAAS2yO,GAAe3yO,EAAOyyO,GAG7B,IAFA,IAAIrnP,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OAEhCA,MAC0C,IAA3CqnP,EAASzyO,EAAM5U,GAASA,EAAQ4U,KAItC,OAAOA,EAaT,SAAS4yO,GAAW5yO,EAAOsnB,GAIzB,IAHA,IAAI12B,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,SAE9BwF,EAAQxF,GACf,IAAKk8B,EAAUtnB,EAAMpP,GAAQA,EAAOoP,GAClC,OAAO,EAGX,OAAO,EAYT,SAAS6yO,GAAY7yO,EAAOsnB,GAM1B,IALA,IAAI12B,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACnC0nP,EAAW,EACXjvN,EAAS,KAEJjzB,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACd02B,EAAU9+B,EAAOoI,EAAOoP,KAC1B6jB,EAAOivN,KAActqP,GAGzB,OAAOq7B,EAYT,SAASkvN,GAAc/yO,EAAOxX,GAE5B,QADsB,MAATwX,IAAoBA,EAAM5U,SACpB4nP,GAAYhzO,EAAOxX,EAAO,IAAM,EAYrD,SAASyqP,GAAkBjzO,EAAOxX,EAAOy7C,GAIvC,IAHA,IAAIrzC,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,SAE9BwF,EAAQxF,GACf,GAAI64C,EAAWz7C,EAAOwX,EAAMpP,IAC1B,OAAO,EAGX,OAAO,EAYT,SAASsiP,GAASlzO,EAAOyyO,GAKvB,IAJA,IAAI7hP,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACnCy4B,EAASryB,MAAMpG,KAEVwF,EAAQxF,GACfy4B,EAAOjzB,GAAS6hP,EAASzyO,EAAMpP,GAAQA,EAAOoP,GAEhD,OAAO6jB,EAWT,SAASsvN,GAAUnzO,EAAOjF,GAKxB,IAJA,IAAInK,GAAS,EACTxF,EAAS2P,EAAO3P,OAChB0G,EAASkO,EAAM5U,SAEVwF,EAAQxF,GACf4U,EAAMlO,EAASlB,GAASmK,EAAOnK,GAEjC,OAAOoP,EAeT,SAASozO,GAAYpzO,EAAOyyO,EAAUpJ,EAAagK,GACjD,IAAIziP,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OAKvC,IAHIioP,GAAajoP,IACfi+O,EAAcrpO,IAAQpP,MAEfA,EAAQxF,GACfi+O,EAAcoJ,EAASpJ,EAAarpO,EAAMpP,GAAQA,EAAOoP,GAE3D,OAAOqpO,EAeT,SAASiK,GAAiBtzO,EAAOyyO,EAAUpJ,EAAagK,GACtD,IAAIjoP,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OAIvC,IAHIioP,GAAajoP,IACfi+O,EAAcrpO,IAAQ5U,IAEjBA,KACLi+O,EAAcoJ,EAASpJ,EAAarpO,EAAM5U,GAASA,EAAQ4U,GAE7D,OAAOqpO,EAaT,SAASkK,GAAUvzO,EAAOsnB,GAIxB,IAHA,IAAI12B,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,SAE9BwF,EAAQxF,GACf,GAAIk8B,EAAUtnB,EAAMpP,GAAQA,EAAOoP,GACjC,OAAO,EAGX,OAAO,EAUT,IAAIwzO,GAAYC,GAAa,UAmC7B,SAASC,GAAYxtF,EAAY5+H,EAAWqsN,GAC1C,IAAI9vN,EAOJ,OANA8vN,EAASztF,EAAY,SAAS19J,EAAOob,EAAKsiJ,GACxC,GAAI5+H,EAAU9+B,EAAOob,EAAKsiJ,GAExB,OADAriI,EAASjgB,GACF,IAGJigB,EAcT,SAAS+vN,GAAc5zO,EAAOsnB,EAAWgxH,EAAWu7F,GAIlD,IAHA,IAAIzoP,EAAS4U,EAAM5U,OACfwF,EAAQ0nJ,GAAau7F,EAAY,GAAK,GAElCA,EAAYjjP,MAAYA,EAAQxF,GACtC,GAAIk8B,EAAUtnB,EAAMpP,GAAQA,EAAOoP,GACjC,OAAOpP,EAGX,OAAQ,EAYV,SAASoiP,GAAYhzO,EAAOxX,EAAO8vJ,GACjC,OAAO9vJ,GAAUA,EAidnB,SAAuBwX,EAAOxX,EAAO8vJ,GAInC,IAHA,IAAI1nJ,EAAQ0nJ,EAAY,EACpBltJ,EAAS4U,EAAM5U,SAEVwF,EAAQxF,GACf,GAAI4U,EAAMpP,KAAWpI,EACnB,OAAOoI,EAGX,OAAQ,EAzdJkjP,CAAc9zO,EAAOxX,EAAO8vJ,GAC5Bs7F,GAAc5zO,EAAO+zO,GAAWz7F,GAatC,SAAS07F,GAAgBh0O,EAAOxX,EAAO8vJ,EAAWr0G,GAIhD,IAHA,IAAIrzC,EAAQ0nJ,EAAY,EACpBltJ,EAAS4U,EAAM5U,SAEVwF,EAAQxF,GACf,GAAI64C,EAAWjkC,EAAMpP,GAAQpI,GAC3B,OAAOoI,EAGX,OAAQ,EAUV,SAASmjP,GAAUvrP,GACjB,OAAOA,GAAUA,EAYnB,SAASyrP,GAASj0O,EAAOyyO,GACvB,IAAIrnP,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAOA,EAAU8oP,GAAQl0O,EAAOyyO,GAAYrnP,EAAU+/O,EAUxD,SAASsI,GAAa7vO,GACpB,OAAO,SAASuwO,GACd,OAAiB,MAAVA,EAAiBzoP,EAAYyoP,EAAOvwO,IAW/C,SAASwwO,GAAeD,GACtB,OAAO,SAASvwO,GACd,OAAiB,MAAVuwO,EAAiBzoP,EAAYyoP,EAAOvwO,IAiB/C,SAASywO,GAAWnuF,EAAYusF,EAAUpJ,EAAagK,EAAWM,GAMhE,OALAA,EAASztF,EAAY,SAAS19J,EAAOoI,EAAOs1J,GAC1CmjF,EAAcgK,GACTA,GAAY,EAAO7qP,GACpBiqP,EAASpJ,EAAa7gP,EAAOoI,EAAOs1J,KAEnCmjF,EAgCT,SAAS6K,GAAQl0O,EAAOyyO,GAKtB,IAJA,IAAI5uN,EACAjzB,GAAS,EACTxF,EAAS4U,EAAM5U,SAEVwF,EAAQxF,GAAQ,CACvB,IAAIi4E,EAAUovK,EAASzyO,EAAMpP,IACzByyE,IAAY33E,IACdm4B,EAASA,IAAWn4B,EAAY23E,EAAWx/C,EAASw/C,GAGxD,OAAOx/C,EAYT,SAASywN,GAAUt1M,EAAGyzM,GAIpB,IAHA,IAAI7hP,GAAS,EACTizB,EAASryB,MAAMwtC,KAEVpuC,EAAQouC,GACfnb,EAAOjzB,GAAS6hP,EAAS7hP,GAE3B,OAAOizB,EAyBT,SAAS0wN,GAASn+M,GAChB,OAAOA,EACHA,EAAO3lC,MAAM,EAAG+jP,GAAgBp+M,GAAU,GAAG3tC,QAAQqlP,GAAa,IAClE13M,EAUN,SAASq+M,GAAUv2M,GACjB,OAAO,SAAS11C,GACd,OAAO01C,EAAK11C,IAchB,SAASksP,GAAWP,EAAQn6N,GAC1B,OAAOk5N,GAASl5N,EAAO,SAASpW,GAC9B,OAAOuwO,EAAOvwO,KAYlB,SAAS+wO,GAASl5O,EAAOmI,GACvB,OAAOnI,EAAMJ,IAAIuI,GAYnB,SAASgxO,GAAgBC,EAAYC,GAInC,IAHA,IAAIlkP,GAAS,EACTxF,EAASypP,EAAWzpP,SAEfwF,EAAQxF,GAAU4nP,GAAY8B,EAAYD,EAAWjkP,GAAQ,IAAM,IAC5E,OAAOA,EAYT,SAASmkP,GAAcF,EAAYC,GAGjC,IAFA,IAAIlkP,EAAQikP,EAAWzpP,OAEhBwF,KAAWoiP,GAAY8B,EAAYD,EAAWjkP,GAAQ,IAAM,IACnE,OAAOA,EAWT,SAASokP,GAAah1O,EAAO4xI,GAI3B,IAHA,IAAIxmJ,EAAS4U,EAAM5U,OACfy4B,EAAS,EAENz4B,KACD4U,EAAM5U,KAAYwmJ,KAClB/tH,EAGN,OAAOA,EAWT,IAAIoxN,GAAeb,GAjxBG,CAEpB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IACnC,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAER,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,MAouBxBc,GAAiBd,GAhuBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAouBP,SAASe,GAAiBC,GACxB,MAAO,KAAOjE,GAAciE,GAsB9B,SAASC,GAAWj/M,GAClB,OAAOy6M,GAAa5mO,KAAKmsB,GAsC3B,SAASk/M,GAAW5kP,GAClB,IAAIE,GAAS,EACTizB,EAASryB,MAAMd,EAAI02B,MAKvB,OAHA12B,EAAI4J,QAAQ,SAAS9R,EAAOob,GAC1BigB,IAASjzB,GAAS,CAACgT,EAAKpb,KAEnBq7B,EAWT,SAAS0xN,GAAQr3M,EAAMtV,GACrB,OAAO,SAASiW,GACd,OAAOX,EAAKtV,EAAUiW,KAa1B,SAAS22M,GAAex1O,EAAO4xI,GAM7B,IALA,IAAIhhJ,GAAS,EACTxF,EAAS4U,EAAM5U,OACf0nP,EAAW,EACXjvN,EAAS,KAEJjzB,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACdpI,IAAUopJ,GAAeppJ,IAAUuiP,IACrC/qO,EAAMpP,GAASm6O,EACflnN,EAAOivN,KAAcliP,GAGzB,OAAOizB,EAUT,SAAS4xN,GAAWn6O,GAClB,IAAI1K,GAAS,EACTizB,EAASryB,MAAM8J,EAAI8rB,MAKvB,OAHA9rB,EAAIhB,QAAQ,SAAS9R,GACnBq7B,IAASjzB,GAASpI,IAEbq7B,EAUT,SAAS6xN,GAAWp6O,GAClB,IAAI1K,GAAS,EACTizB,EAASryB,MAAM8J,EAAI8rB,MAKvB,OAHA9rB,EAAIhB,QAAQ,SAAS9R,GACnBq7B,IAASjzB,GAAS,CAACpI,EAAOA,KAErBq7B,EAoDT,SAAS8xN,GAAWv/M,GAClB,OAAOi/M,GAAWj/M,GAiDpB,SAAqBA,GAEnB,IADA,IAAIvS,EAAS8sN,GAAUtpJ,UAAY,EAC5BspJ,GAAU1mO,KAAKmsB,MAClBvS,EAEJ,OAAOA,EArDH+xN,CAAYx/M,GACZo9M,GAAUp9M,GAUhB,SAASgyM,GAAchyM,GACrB,OAAOi/M,GAAWj/M,GAmDpB,SAAwBA,GACtB,OAAOA,EAAOmC,MAAMo4M,KAAc,GAnD9BkF,CAAez/M,GA7kBrB,SAAsBA,GACpB,OAAOA,EAAO5sB,MAAM,IA6kBhBssO,CAAa1/M,GAWnB,SAASo+M,GAAgBp+M,GAGvB,IAFA,IAAIxlC,EAAQwlC,EAAOhrC,OAEZwF,KAAWm9O,GAAa9jO,KAAKmsB,EAAOY,OAAOpmC,MAClD,OAAOA,EAUT,IAAImlP,GAAmB3B,GA38BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MAk4gBP/6I,GAt3egB,SAAS28I,EAAav9O,GAIxC,IA6BM8qE,EA7BF/xE,GAHJiH,EAAqB,MAAXA,EAAkB4tE,GAAOgzB,GAAErrF,SAASq4D,GAAK5iE,SAAUhL,EAAS4gG,GAAE48I,KAAK5vK,GAAM0qK,MAG/Dv/O,MAChBmwC,GAAOlpC,EAAQkpC,KACfrmB,GAAQ7iB,EAAQ6iB,MAChBsjJ,GAAWnmK,EAAQmmK,SACnBp5J,GAAO/M,EAAQ+M,KACf/B,GAAShL,EAAQgL,OACjB0kH,GAAS1vH,EAAQ0vH,OACjB7xF,GAAS79B,EAAQ69B,OACjBmD,GAAYhhC,EAAQghC,UAGpBy8M,GAAa1kP,EAAMmoB,UAEnBw8N,GAAc1yO,GAAOkW,UAGrBy8N,GAAa39O,EAAQ,sBAGrB49O,GAPYz3E,GAASjlJ,UAOIT,SAGzByb,GAAiBwhN,GAAYxhN,eAG7B2hN,GAAY,EAGZC,IACEhzK,EAAM,SAAS59B,KAAKywM,IAAcA,GAAW1yO,MAAQ0yO,GAAW1yO,KAAK8yO,UAAY,KACvE,iBAAmBjzK,EAAO,GAQtCkzK,GAAuBN,GAAYj9N,SAGnCw9N,GAAmBL,GAAal6N,KAAK1Y,IAGrCkzO,GAAUtwK,GAAKgzB,EAGfu9I,GAAazuH,GAAO,IACtBkuH,GAAal6N,KAAKwY,IAAgBlsC,QAAQmlP,GAAc,QACvDnlP,QAAQ,yDAA0D,SAAW,KAI5EouP,GAASnF,GAAgBj5O,EAAQo+O,OAASnrP,EAC1C2qC,GAAS59B,EAAQ49B,OACjBopI,GAAahnK,EAAQgnK,WACrBq3E,GAAcD,GAASA,GAAOC,YAAcprP,EAC5CqrP,GAAexB,GAAQ9xO,GAAO24H,eAAgB34H,IAC9CuzO,GAAevzO,GAAOlX,OACtBqkI,GAAuBulH,GAAYvlH,qBACnCphG,GAAS0mN,GAAW1mN,OACpBynN,GAAmB5gN,GAASA,GAAO6gN,mBAAqBxrP,EACxDyrP,GAAc9gN,GAASA,GAAO41F,SAAWvgI,EACzC0rP,GAAiB/gN,GAASA,GAAO8rM,YAAcz2O,EAE/CsvC,GAAkB,WACpB,IACE,IAAIkD,EAAOm5M,GAAU5zO,GAAQ,kBAE7B,OADAy6B,EAAK,GAAI,GAAI,IACNA,EACP,MAAOhjB,KALW,GASlBo8N,GAAkB7+O,EAAQ0yB,eAAiBk7C,GAAKl7C,cAAgB1yB,EAAQ0yB,aACxEosN,GAAS51M,IAAQA,GAAKqR,MAAQqzB,GAAK1kC,KAAKqR,KAAOrR,GAAKqR,IACpDwkM,GAAgB/+O,EAAQozB,aAAew6C,GAAKx6C,YAAcpzB,EAAQozB,WAGlE4rN,GAAajyO,GAAKC,KAClBiyO,GAAclyO,GAAKs7B,MACnB62M,GAAmBl0O,GAAOktH,sBAC1BinH,GAAiBf,GAASA,GAAO3/M,SAAWxrC,EAC5CmsP,GAAiBp/O,EAAQgtG,SACzBqyI,GAAa5B,GAAWj/M,KACxB8gN,GAAaxC,GAAQ9xO,GAAOC,KAAMD,IAClCu0O,GAAYxyO,GAAKukC,IACjBkuM,GAAYzyO,GAAKG,IACjBuyO,GAAYv2M,GAAKqR,IACjBmlM,GAAiB1/O,EAAQg+B,SACzB2hN,GAAe5yO,GAAKqqH,OACpBwoH,GAAgBnC,GAAWplP,QAG3BmvK,GAAWo3E,GAAU5+O,EAAS,YAC9B/D,GAAM2iP,GAAU5+O,EAAS,OACzBjN,GAAU6rP,GAAU5+O,EAAS,WAC7B7D,GAAMyiP,GAAU5+O,EAAS,OACzB8C,GAAU87O,GAAU5+O,EAAS,WAC7B6/O,GAAejB,GAAU5zO,GAAQ,UAGjC80O,GAAUh9O,IAAW,IAAIA,GAGzBi9O,GAAY,GAGZC,GAAqBC,GAASz4E,IAC9B04E,GAAgBD,GAAShkP,IACzBkkP,GAAoBF,GAASltP,IAC7BqtP,GAAgBH,GAAS9jP,IACzBkkP,GAAoBJ,GAASn9O,IAG7Bw9O,GAAc1iN,GAASA,GAAO1c,UAAYjuB,EAC1CstP,GAAgBD,GAAcA,GAAYh5M,QAAUr0C,EACpDutP,GAAiBF,GAAcA,GAAY7/N,SAAWxtB,EAyH1D,SAASwtP,GAAO1wP,GACd,GAAI2wP,GAAa3wP,KAAWyU,GAAQzU,MAAYA,aAAiB4wP,IAAc,CAC7E,GAAI5wP,aAAiB6wP,GACnB,OAAO7wP,EAET,GAAImsC,GAAexY,KAAK3zB,EAAO,eAC7B,OAAO8wP,GAAa9wP,GAGxB,OAAO,IAAI6wP,GAAc7wP,GAW3B,IAAI+wP,GAAc,WAChB,SAASpF,KACT,OAAO,SAAStsE,GACd,IAAKyqB,GAASzqB,GACZ,MAAO,GAET,GAAImvE,GACF,OAAOA,GAAanvE,GAEtBssE,EAAOx6N,UAAYkuJ,EACnB,IAAIhkJ,EAAS,IAAIswN,EAEjB,OADAA,EAAOx6N,UAAYjuB,EACZm4B,GAZO,GAqBlB,SAAS21N,MAWT,SAASH,GAAc7wP,EAAOixP,GAC5BxyP,KAAKyyP,YAAclxP,EACnBvB,KAAK0yP,YAAc,GACnB1yP,KAAK2yP,YAAcH,EACnBxyP,KAAK4yP,UAAY,EACjB5yP,KAAK6yP,WAAapuP,EAgFpB,SAAS0tP,GAAY5wP,GACnBvB,KAAKyyP,YAAclxP,EACnBvB,KAAK0yP,YAAc,GACnB1yP,KAAK8yP,QAAU,EACf9yP,KAAK+yP,cAAe,EACpB/yP,KAAKgzP,cAAgB,GACrBhzP,KAAKizP,cAAgB9O,EACrBnkP,KAAKkzP,UAAY,GAgHnB,SAASC,GAAKz+N,GACZ,IAAI/qB,GAAS,EACTxF,EAAoB,MAAXuwB,EAAkB,EAAIA,EAAQvwB,OAG3C,IADAnE,KAAK0Q,UACI/G,EAAQxF,GAAQ,CACvB,IAAI2wF,EAAQpgE,EAAQ/qB,GACpB3J,KAAKqU,IAAIygF,EAAM,GAAIA,EAAM,KAiG7B,SAASs+J,GAAU1+N,GACjB,IAAI/qB,GAAS,EACTxF,EAAoB,MAAXuwB,EAAkB,EAAIA,EAAQvwB,OAG3C,IADAnE,KAAK0Q,UACI/G,EAAQxF,GAAQ,CACvB,IAAI2wF,EAAQpgE,EAAQ/qB,GACpB3J,KAAKqU,IAAIygF,EAAM,GAAIA,EAAM,KA8G7B,SAASu+J,GAAS3+N,GAChB,IAAI/qB,GAAS,EACTxF,EAAoB,MAAXuwB,EAAkB,EAAIA,EAAQvwB,OAG3C,IADAnE,KAAK0Q,UACI/G,EAAQxF,GAAQ,CACvB,IAAI2wF,EAAQpgE,EAAQ/qB,GACpB3J,KAAKqU,IAAIygF,EAAM,GAAIA,EAAM,KAiG7B,SAASw+J,GAASx/O,GAChB,IAAInK,GAAS,EACTxF,EAAmB,MAAV2P,EAAiB,EAAIA,EAAO3P,OAGzC,IADAnE,KAAKuzP,SAAW,IAAIF,KACX1pP,EAAQxF,GACfnE,KAAK6C,IAAIiR,EAAOnK,IA6CpB,SAAS6pP,GAAM9+N,GACb,IAAI5kB,EAAO9P,KAAKuzP,SAAW,IAAIH,GAAU1+N,GACzC10B,KAAKmgC,KAAOrwB,EAAKqwB,KAqGnB,SAASszN,GAAclyP,EAAOmyP,GAC5B,IAAIvU,EAAQnpO,GAAQzU,GAChBoyP,GAASxU,GAASyU,GAAYryP,GAC9BsyP,GAAU1U,IAAUwU,GAAS1jN,GAAS1uC,GACtCuyP,GAAU3U,IAAUwU,IAAUE,GAAUxI,GAAa9pP,GACrDwyP,EAAc5U,GAASwU,GAASE,GAAUC,EAC1Cl3N,EAASm3N,EAAc1G,GAAU9rP,EAAM4C,OAAQkrC,IAAU,GACzDlrC,EAASy4B,EAAOz4B,OAEpB,IAAK,IAAIwY,KAAOpb,GACTmyP,IAAahmN,GAAexY,KAAK3zB,EAAOob,IACvCo3O,IAEQ,UAAPp3O,GAECk3O,IAAkB,UAAPl3O,GAA0B,UAAPA,IAE9Bm3O,IAAkB,UAAPn3O,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDq3O,GAAQr3O,EAAKxY,KAElBy4B,EAAOh5B,KAAK+Y,GAGhB,OAAOigB,EAUT,SAASq3N,GAAYl7O,GACnB,IAAI5U,EAAS4U,EAAM5U,OACnB,OAAOA,EAAS4U,EAAMm7O,GAAW,EAAG/vP,EAAS,IAAMM,EAWrD,SAAS0vP,GAAgBp7O,EAAOg/B,GAC9B,OAAOq8M,GAAYC,GAAUt7O,GAAQu7O,GAAUv8M,EAAG,EAAGh/B,EAAM5U,SAU7D,SAASowP,GAAax7O,GACpB,OAAOq7O,GAAYC,GAAUt7O,IAY/B,SAASy7O,GAAiBtH,EAAQvwO,EAAKpb,IAChCA,IAAUkD,IAAcgwP,GAAGvH,EAAOvwO,GAAMpb,IACxCA,IAAUkD,KAAekY,KAAOuwO,KACnCwH,GAAgBxH,EAAQvwO,EAAKpb,GAcjC,SAASozP,GAAYzH,EAAQvwO,EAAKpb,GAChC,IAAIqzP,EAAW1H,EAAOvwO,GAChB+wB,GAAexY,KAAKg4N,EAAQvwO,IAAQ83O,GAAGG,EAAUrzP,KAClDA,IAAUkD,GAAekY,KAAOuwO,IACnCwH,GAAgBxH,EAAQvwO,EAAKpb,GAYjC,SAASszP,GAAa97O,EAAO4D,GAE3B,IADA,IAAIxY,EAAS4U,EAAM5U,OACZA,KACL,GAAIswP,GAAG17O,EAAM5U,GAAQ,GAAIwY,GACvB,OAAOxY,EAGX,OAAQ,EAcV,SAAS2wP,GAAe71F,EAAYssF,EAAQC,EAAUpJ,GAIpD,OAHA2S,GAAS91F,EAAY,SAAS19J,EAAOob,EAAKsiJ,GACxCssF,EAAOnJ,EAAa7gP,EAAOiqP,EAASjqP,GAAQ09J,KAEvCmjF,EAYT,SAAS4S,GAAW9H,EAAQ3mO,GAC1B,OAAO2mO,GAAU+H,GAAW1uO,EAAQ9J,GAAK8J,GAAS2mO,GAyBpD,SAASwH,GAAgBxH,EAAQvwO,EAAKpb,GACzB,aAAPob,GAAsBo3B,GACxBA,GAAem5M,EAAQvwO,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASpb,EACT,UAAY,IAGd2rP,EAAOvwO,GAAOpb,EAYlB,SAAS2zP,GAAOhI,EAAQvhH,GAMtB,IALA,IAAIhiI,GAAS,EACTxF,EAASwnI,EAAMxnI,OACfy4B,EAASryB,EAAMpG,GACf6qB,EAAiB,MAAVk+N,IAEFvjP,EAAQxF,GACfy4B,EAAOjzB,GAASqlB,EAAOvqB,EAAYyN,GAAIg7O,EAAQvhH,EAAMhiI,IAEvD,OAAOizB,EAYT,SAAS03N,GAAU5uO,EAAQyvO,EAAOC,GAShC,OARI1vO,GAAWA,IACT0vO,IAAU3wP,IACZihB,EAASA,GAAU0vO,EAAQ1vO,EAAS0vO,GAElCD,IAAU1wP,IACZihB,EAASA,GAAUyvO,EAAQzvO,EAASyvO,IAGjCzvO,EAmBT,SAAS2vO,GAAU9zP,EAAO+zP,EAASC,EAAY54O,EAAKuwO,EAAQ1hH,GAC1D,IAAI5uG,EACA44N,EArkFc,EAqkFLF,EACTG,EArkFc,EAqkFLH,EACTI,EArkFiB,EAqkFRJ,EAKb,GAHIC,IACF34N,EAASswN,EAASqI,EAAWh0P,EAAOob,EAAKuwO,EAAQ1hH,GAAS+pH,EAAWh0P,IAEnEq7B,IAAWn4B,EACb,OAAOm4B,EAET,IAAKyuK,GAAS9pM,GACZ,OAAOA,EAET,IAAI49O,EAAQnpO,GAAQzU,GACpB,GAAI49O,GAEF,GADAviN,EA68GJ,SAAwB7jB,GACtB,IAAI5U,EAAS4U,EAAM5U,OACfy4B,EAAS,IAAI7jB,EAAMm3B,YAAY/rC,GAOnC,OAJIA,GAA6B,iBAAZ4U,EAAM,IAAkB20B,GAAexY,KAAKnc,EAAO,WACtE6jB,EAAOjzB,MAAQoP,EAAMpP,MACrBizB,EAAO4hB,MAAQzlC,EAAMylC,OAEhB5hB,EAt9GI+4N,CAAep0P,IACnBi0P,EACH,OAAOnB,GAAU9yP,EAAOq7B,OAErB,CACL,IAAIllB,EAAMk+O,GAAOr0P,GACbs0P,EAASn+O,GAAOgtO,GAAWhtO,GAAOitO,EAEtC,GAAI10M,GAAS1uC,GACX,OAAOu0P,GAAYv0P,EAAOi0P,GAE5B,GAAI99O,GAAOotO,GAAaptO,GAAO2sO,GAAYwR,IAAW3I,GAEpD,GADAtwN,EAAU64N,GAAUI,EAAU,GAAKE,GAAgBx0P,IAC9Ci0P,EACH,OAAOC,EA+nEf,SAAuBlvO,EAAQ2mO,GAC7B,OAAO+H,GAAW1uO,EAAQyvO,GAAazvO,GAAS2mO,GA/nEtC+I,CAAc10P,EAnH1B,SAAsB2rP,EAAQ3mO,GAC5B,OAAO2mO,GAAU+H,GAAW1uO,EAAQ2vO,GAAO3vO,GAAS2mO,GAkHrBiJ,CAAav5N,EAAQr7B,IAknEtD,SAAqBglB,EAAQ2mO,GAC3B,OAAO+H,GAAW1uO,EAAQ6vO,GAAW7vO,GAAS2mO,GAlnEpCmJ,CAAY90P,EAAOyzP,GAAWp4N,EAAQr7B,QAEvC,CACL,IAAK0oP,GAAcvyO,GACjB,OAAOw1O,EAAS3rP,EAAQ,GAE1Bq7B,EA49GN,SAAwBswN,EAAQx1O,EAAK89O,GACnC,IAAIc,EAAOpJ,EAAOh9M,YAClB,OAAQx4B,GACN,KAAK0tO,EACH,OAAOmR,GAAiBrJ,GAE1B,KAAK3I,EACL,KAAKC,EACH,OAAO,IAAI8R,GAAMpJ,GAEnB,KAAK7H,EACH,OA5nDN,SAAuBmR,EAAUhB,GAC/B,IAAIh5F,EAASg5F,EAASe,GAAiBC,EAASh6F,QAAUg6F,EAASh6F,OACnE,OAAO,IAAIg6F,EAAStmN,YAAYssH,EAAQg6F,EAASC,WAAYD,EAASE,YA0nD3DC,CAAczJ,EAAQsI,GAE/B,KAAKlQ,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAO8Q,GAAgB1J,EAAQsI,GAEjC,KAAK5Q,EACH,OAAO,IAAI0R,EAEb,KAAKzR,EACL,KAAKjG,EACH,OAAO,IAAI0X,EAAKpJ,GAElB,KAAKlI,EACH,OA/nDN,SAAqB6R,GACnB,IAAIj6N,EAAS,IAAIi6N,EAAO3mN,YAAY2mN,EAAOtwO,OAAQ8gO,GAAQ3oM,KAAKm4M,IAEhE,OADAj6N,EAAOwjE,UAAYy2J,EAAOz2J,UACnBxjE,EA4nDIk6N,CAAY5J,GAErB,KAAKjI,EACH,OAAO,IAAIqR,EAEb,KAAKpR,EACH,OAvnDG6M,GAAgBv1O,GAAOu1O,GAAc78N,KAunDrBg4N,IAvnDqC,IAr4D/C6J,CAAex1P,EAAOmW,EAAK89O,IAIxChqH,IAAUA,EAAQ,IAAIgoH,IACtB,IAAI1jC,EAAUtkF,EAAMt5H,IAAI3Q,GACxB,GAAIuuN,EACF,OAAOA,EAETtkF,EAAMn3H,IAAI9S,EAAOq7B,GAEbkhN,GAAMv8O,GACRA,EAAM8R,QAAQ,SAAS2jP,GACrBp6N,EAAO/5B,IAAIwyP,GAAU2B,EAAU1B,EAASC,EAAYyB,EAAUz1P,EAAOiqI,MAE9DmyG,GAAMp8O,IACfA,EAAM8R,QAAQ,SAAS2jP,EAAUr6O,GAC/BigB,EAAOvoB,IAAIsI,EAAK04O,GAAU2B,EAAU1B,EAASC,EAAY54O,EAAKpb,EAAOiqI,MAIzE,IAIIz4G,EAAQosN,EAAQ16O,GAJLixP,EACVD,EAASwB,GAAeC,GACxBzB,EAASS,GAASz5O,IAEkBlb,GASzC,OARAkqP,GAAU14N,GAASxxB,EAAO,SAASy1P,EAAUr6O,GACvCoW,IAEFikO,EAAWz1P,EADXob,EAAMq6O,IAIRrC,GAAY/3N,EAAQjgB,EAAK04O,GAAU2B,EAAU1B,EAASC,EAAY54O,EAAKpb,EAAOiqI,MAEzE5uG,EAyBT,SAASu6N,GAAejK,EAAQ3mO,EAAQwM,GACtC,IAAI5uB,EAAS4uB,EAAM5uB,OACnB,GAAc,MAAV+oP,EACF,OAAQ/oP,EAGV,IADA+oP,EAAS1wO,GAAO0wO,GACT/oP,KAAU,CACf,IAAIwY,EAAMoW,EAAM5uB,GAEZ5C,EAAQ2rP,EAAOvwO,GAEnB,GAAKpb,IAAUkD,KAAekY,KAAOuwO,MAAa7sN,EAHlC9Z,EAAO5J,IAGqCpb,GAC1D,OAAO,EAGX,OAAO,EAaT,SAAS61P,GAAUngN,EAAMogN,EAAMx3P,GAC7B,GAAmB,mBAARo3C,EACT,MAAM,IAAIzE,GAAUoxM,GAEtB,OAAOh/M,GAAW,WAAaqS,EAAKU,MAAMlzC,EAAW5E,IAAUw3P,GAcjE,SAASC,GAAev+O,EAAOjF,EAAQ03O,EAAUxuM,GAC/C,IAAIrzC,GAAS,EACT4tP,EAAWzL,GACX0L,GAAW,EACXrzP,EAAS4U,EAAM5U,OACfy4B,EAAS,GACT66N,EAAe3jP,EAAO3P,OAE1B,IAAKA,EACH,OAAOy4B,EAEL4uN,IACF13O,EAASm4O,GAASn4O,EAAQ05O,GAAUhC,KAElCxuM,GACFu6M,EAAWvL,GACXwL,GAAW,GAEJ1jP,EAAO3P,QAtvFG,MAuvFjBozP,EAAW7J,GACX8J,GAAW,EACX1jP,EAAS,IAAIw/O,GAASx/O,IAExB+5M,EACA,OAASlkN,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACd+tP,EAAuB,MAAZlM,EAAmBjqP,EAAQiqP,EAASjqP,GAGnD,GADAA,EAASy7C,GAAwB,IAAVz7C,EAAeA,EAAQ,EAC1Ci2P,GAAYE,GAAaA,EAAU,CAErC,IADA,IAAIC,EAAcF,EACXE,KACL,GAAI7jP,EAAO6jP,KAAiBD,EAC1B,SAAS7pC,EAGbjxL,EAAOh5B,KAAKrC,QAEJg2P,EAASzjP,EAAQ4jP,EAAU16M,IACnCpgB,EAAOh5B,KAAKrC,GAGhB,OAAOq7B,EAjkCTq1N,GAAO2F,iBAAmB,CAQxB,OAAUtR,EAQV,SAAYC,EAQZ,YAAeC,EAQf,SAAY,GAQZ,QAAW,CAQT,EAAKyL,MAKTA,GAAOv/N,UAAY6/N,GAAW7/N,WACbwd,YAAc+hN,IAE/BG,GAAc1/N,UAAY4/N,GAAWC,GAAW7/N,YACxBwd,YAAckiN,IAsHtCD,GAAYz/N,UAAY4/N,GAAWC,GAAW7/N,YACxBwd,YAAciiN,GAoGpCgB,GAAKzgO,UAAUhiB,MAvEf,WACE1Q,KAAKuzP,SAAWlC,GAAeA,GAAa,MAAQ,GACpDrxP,KAAKmgC,KAAO,GAsEdgzN,GAAKzgO,UAAL,OAzDA,SAAoB/V,GAClB,IAAIigB,EAAS58B,KAAKoU,IAAIuI,WAAe3c,KAAKuzP,SAAS52O,GAEnD,OADA3c,KAAKmgC,MAAQvD,EAAS,EAAI,EACnBA,GAuDTu2N,GAAKzgO,UAAUxgB,IA3Cf,SAAiByK,GACf,IAAI7M,EAAO9P,KAAKuzP,SAChB,GAAIlC,GAAc,CAChB,IAAIz0N,EAAS9sB,EAAK6M,GAClB,OAAOigB,IAAWinN,EAAiBp/O,EAAYm4B,EAEjD,OAAO8Q,GAAexY,KAAKplB,EAAM6M,GAAO7M,EAAK6M,GAAOlY,GAsCtD0uP,GAAKzgO,UAAUte,IA1Bf,SAAiBuI,GACf,IAAI7M,EAAO9P,KAAKuzP,SAChB,OAAOlC,GAAgBvhP,EAAK6M,KAASlY,EAAaipC,GAAexY,KAAKplB,EAAM6M,IAyB9Ew2O,GAAKzgO,UAAUre,IAZf,SAAiBsI,EAAKpb,GACpB,IAAIuO,EAAO9P,KAAKuzP,SAGhB,OAFAvzP,KAAKmgC,MAAQngC,KAAKoU,IAAIuI,GAAO,EAAI,EACjC7M,EAAK6M,GAAQ00O,IAAgB9vP,IAAUkD,EAAao/O,EAAiBtiP,EAC9DvB,MAyHTozP,GAAU1gO,UAAUhiB,MApFpB,WACE1Q,KAAKuzP,SAAW,GAChBvzP,KAAKmgC,KAAO,GAmFdizN,GAAU1gO,UAAV,OAvEA,SAAyB/V,GACvB,IAAI7M,EAAO9P,KAAKuzP,SACZ5pP,EAAQkrP,GAAa/kP,EAAM6M,GAE/B,QAAIhT,EAAQ,IAIRA,GADYmG,EAAK3L,OAAS,EAE5B2L,EAAKmvB,MAELsJ,GAAOrT,KAAKplB,EAAMnG,EAAO,KAEzB3J,KAAKmgC,KACA,KA0DTizN,GAAU1gO,UAAUxgB,IA9CpB,SAAsByK,GACpB,IAAI7M,EAAO9P,KAAKuzP,SACZ5pP,EAAQkrP,GAAa/kP,EAAM6M,GAE/B,OAAOhT,EAAQ,EAAIlF,EAAYqL,EAAKnG,GAAO,IA2C7CypP,GAAU1gO,UAAUte,IA/BpB,SAAsBuI,GACpB,OAAOk4O,GAAa70P,KAAKuzP,SAAU52O,IAAQ,GA+B7Cy2O,GAAU1gO,UAAUre,IAlBpB,SAAsBsI,EAAKpb,GACzB,IAAIuO,EAAO9P,KAAKuzP,SACZ5pP,EAAQkrP,GAAa/kP,EAAM6M,GAQ/B,OANIhT,EAAQ,KACR3J,KAAKmgC,KACPrwB,EAAKlM,KAAK,CAAC+Y,EAAKpb,KAEhBuO,EAAKnG,GAAO,GAAKpI,EAEZvB,MA2GTqzP,GAAS3gO,UAAUhiB,MAtEnB,WACE1Q,KAAKmgC,KAAO,EACZngC,KAAKuzP,SAAW,CACd,KAAQ,IAAIJ,GACZ,IAAO,IAAK1lP,IAAO2lP,IACnB,OAAU,IAAID,KAkElBE,GAAS3gO,UAAT,OArDA,SAAwB/V,GACtB,IAAIigB,EAASi7N,GAAW73P,KAAM2c,GAAjB,OAAgCA,GAE7C,OADA3c,KAAKmgC,MAAQvD,EAAS,EAAI,EACnBA,GAmDTy2N,GAAS3gO,UAAUxgB,IAvCnB,SAAqByK,GACnB,OAAOk7O,GAAW73P,KAAM2c,GAAKzK,IAAIyK,IAuCnC02O,GAAS3gO,UAAUte,IA3BnB,SAAqBuI,GACnB,OAAOk7O,GAAW73P,KAAM2c,GAAKvI,IAAIuI,IA2BnC02O,GAAS3gO,UAAUre,IAdnB,SAAqBsI,EAAKpb,GACxB,IAAIuO,EAAO+nP,GAAW73P,KAAM2c,GACxBwjB,EAAOrwB,EAAKqwB,KAIhB,OAFArwB,EAAKuE,IAAIsI,EAAKpb,GACdvB,KAAKmgC,MAAQrwB,EAAKqwB,MAAQA,EAAO,EAAI,EAC9BngC,MA2DTszP,GAAS5gO,UAAU7vB,IAAMywP,GAAS5gO,UAAU9uB,KAnB5C,SAAqBrC,GAEnB,OADAvB,KAAKuzP,SAASl/O,IAAI9S,EAAOsiP,GAClB7jP,MAkBTszP,GAAS5gO,UAAUte,IANnB,SAAqB7S,GACnB,OAAOvB,KAAKuzP,SAASn/O,IAAI7S,IAuG3BiyP,GAAM9gO,UAAUhiB,MA3EhB,WACE1Q,KAAKuzP,SAAW,IAAIH,GACpBpzP,KAAKmgC,KAAO,GA0EdqzN,GAAM9gO,UAAN,OA9DA,SAAqB/V,GACnB,IAAI7M,EAAO9P,KAAKuzP,SACZ32N,EAAS9sB,EAAI,OAAW6M,GAG5B,OADA3c,KAAKmgC,KAAOrwB,EAAKqwB,KACVvD,GA0DT42N,GAAM9gO,UAAUxgB,IA9ChB,SAAkByK,GAChB,OAAO3c,KAAKuzP,SAASrhP,IAAIyK,IA8C3B62O,GAAM9gO,UAAUte,IAlChB,SAAkBuI,GAChB,OAAO3c,KAAKuzP,SAASn/O,IAAIuI,IAkC3B62O,GAAM9gO,UAAUre,IArBhB,SAAkBsI,EAAKpb,GACrB,IAAIuO,EAAO9P,KAAKuzP,SAChB,GAAIzjP,aAAgBsjP,GAAW,CAC7B,IAAI0E,EAAQhoP,EAAKyjP,SACjB,IAAK9lP,IAAQqqP,EAAM3zP,OAAS4zP,IAG1B,OAFAD,EAAMl0P,KAAK,CAAC+Y,EAAKpb,IACjBvB,KAAKmgC,OAASrwB,EAAKqwB,KACZngC,KAET8P,EAAO9P,KAAKuzP,SAAW,IAAIF,GAASyE,GAItC,OAFAhoP,EAAKuE,IAAIsI,EAAKpb,GACdvB,KAAKmgC,KAAOrwB,EAAKqwB,KACVngC,MAscT,IAAI+0P,GAAWiD,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAUn5F,EAAY5+H,GAC7B,IAAIzD,GAAS,EAKb,OAJAm4N,GAAS91F,EAAY,SAAS19J,EAAOoI,EAAOs1J,GAE1C,OADAriI,IAAWyD,EAAU9+B,EAAOoI,EAAOs1J,KAG9BriI,EAaT,SAASy7N,GAAat/O,EAAOyyO,EAAUxuM,GAIrC,IAHA,IAAIrzC,GAAS,EACTxF,EAAS4U,EAAM5U,SAEVwF,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACdyyE,EAAUovK,EAASjqP,GAEvB,GAAe,MAAX66E,IAAoBs7K,IAAajzP,EAC5B23E,GAAYA,IAAY0/J,GAAS1/J,GAClCp/B,EAAWo/B,EAASs7K,IAE1B,IAAIA,EAAWt7K,EACXx/C,EAASr7B,EAGjB,OAAOq7B,EAuCT,SAAS07N,GAAWr5F,EAAY5+H,GAC9B,IAAIzD,EAAS,GAMb,OALAm4N,GAAS91F,EAAY,SAAS19J,EAAOoI,EAAOs1J,GACtC5+H,EAAU9+B,EAAOoI,EAAOs1J,IAC1BriI,EAAOh5B,KAAKrC,KAGTq7B,EAcT,SAAS27N,GAAYx/O,EAAOsjO,EAAOh8M,EAAWm4N,EAAU57N,GACtD,IAAIjzB,GAAS,EACTxF,EAAS4U,EAAM5U,OAKnB,IAHAk8B,IAAcA,EAAYo4N,IAC1B77N,IAAWA,EAAS,MAEXjzB,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACd0yO,EAAQ,GAAKh8M,EAAU9+B,GACrB86O,EAAQ,EAEVkc,GAAYh3P,EAAO86O,EAAQ,EAAGh8M,EAAWm4N,EAAU57N,GAEnDsvN,GAAUtvN,EAAQr7B,GAEVi3P,IACV57N,EAAOA,EAAOz4B,QAAU5C,GAG5B,OAAOq7B,EAcT,IAAI87N,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASV,GAAW/K,EAAQ1B,GAC1B,OAAO0B,GAAUwL,GAAQxL,EAAQ1B,EAAU/uO,IAW7C,SAAS07O,GAAgBjL,EAAQ1B,GAC/B,OAAO0B,GAAU0L,GAAa1L,EAAQ1B,EAAU/uO,IAYlD,SAASo8O,GAAc3L,EAAQn6N,GAC7B,OAAO64N,GAAY74N,EAAO,SAASpW,GACjC,OAAOsvJ,GAAWihF,EAAOvwO,MAY7B,SAASm8O,GAAQ5L,EAAQ/7G,GAMvB,IAHA,IAAIxnI,EAAQ,EACRxF,GAHJgtI,EAAO4nH,GAAS5nH,EAAM+7G,IAGJ/oP,OAED,MAAV+oP,GAAkBvjP,EAAQxF,GAC/B+oP,EAASA,EAAO8L,GAAM7nH,EAAKxnI,OAE7B,OAAQA,GAASA,GAASxF,EAAU+oP,EAASzoP,EAc/C,SAASw0P,GAAe/L,EAAQgM,EAAUC,GACxC,IAAIv8N,EAASs8N,EAAShM,GACtB,OAAOl3O,GAAQk3O,GAAUtwN,EAASsvN,GAAUtvN,EAAQu8N,EAAYjM,IAUlE,SAASkM,GAAW73P,GAClB,OAAa,MAATA,EACKA,IAAUkD,EAn7FJ,qBARL,gBA67FF0rP,IAAkBA,MAAkB3zO,GAAOjb,GA23FrD,SAAmBA,GACjB,IAAI+5K,EAAQ5tI,GAAexY,KAAK3zB,EAAO4uP,IACnCz4O,EAAMnW,EAAM4uP,IAEhB,IACE5uP,EAAM4uP,IAAkB1rP,EACxB,IAAI40P,GAAW,EACf,MAAOplO,IAET,IAAI2I,EAAS4yN,GAAqBt6N,KAAK3zB,GAQvC,OAPI83P,IACE/9E,EACF/5K,EAAM4uP,IAAkBz4O,SAEjBnW,EAAM4uP,KAGVvzN,EA34FH08N,CAAU/3P,GA+5GhB,SAAwBA,GACtB,OAAOiuP,GAAqBt6N,KAAK3zB,GA/5G7B84O,CAAe94O,GAYrB,SAASg4P,GAAOh4P,EAAOs/G,GACrB,OAAOt/G,EAAQs/G,EAWjB,SAAS24I,GAAQtM,EAAQvwO,GACvB,OAAiB,MAAVuwO,GAAkBx/M,GAAexY,KAAKg4N,EAAQvwO,GAWvD,SAAS88O,GAAUvM,EAAQvwO,GACzB,OAAiB,MAAVuwO,GAAkBvwO,KAAOH,GAAO0wO,GA0BzC,SAASwM,GAAiBC,EAAQnO,EAAUxuM,GAS1C,IARA,IAAIu6M,EAAWv6M,EAAagvM,GAAoBF,GAC5C3nP,EAASw1P,EAAO,GAAGx1P,OACnBy1P,EAAYD,EAAOx1P,OACnB01P,EAAWD,EACXE,EAASvvP,EAAMqvP,GACf3qH,EAAYqsG,IACZ1+M,EAAS,GAENi9N,KAAY,CACjB,IAAI9gP,EAAQ4gP,EAAOE,GACfA,GAAYrO,IACdzyO,EAAQkzO,GAASlzO,EAAOy0O,GAAUhC,KAEpCv8G,EAAY+hH,GAAUj4O,EAAM5U,OAAQ8qI,GACpC6qH,EAAOD,IAAa78M,IAAewuM,GAAarnP,GAAU,KAAO4U,EAAM5U,QAAU,KAC7E,IAAImvP,GAASuG,GAAY9gP,GACzBtU,EAENsU,EAAQ4gP,EAAO,GAEf,IAAIhwP,GAAS,EACT2yO,EAAOwd,EAAO,GAElBjsC,EACA,OAASlkN,EAAQxF,GAAUy4B,EAAOz4B,OAAS8qI,GAAW,CACpD,IAAI1tI,EAAQwX,EAAMpP,GACd+tP,EAAWlM,EAAWA,EAASjqP,GAASA,EAG5C,GADAA,EAASy7C,GAAwB,IAAVz7C,EAAeA,EAAQ,IACxC+6O,EACEoR,GAASpR,EAAMob,GACfH,EAAS36N,EAAQ86N,EAAU16M,IAC5B,CAEL,IADA68M,EAAWD,IACFC,GAAU,CACjB,IAAIrlP,EAAQslP,EAAOD,GACnB,KAAMrlP,EACEk5O,GAASl5O,EAAOkjP,GAChBH,EAASoC,EAAOE,GAAWnC,EAAU16M,IAE3C,SAAS6wK,EAGTyuB,GACFA,EAAK14O,KAAK8zP,GAEZ96N,EAAOh5B,KAAKrC,IAGhB,OAAOq7B,EA+BT,SAASm9N,GAAW7M,EAAQ/7G,EAAMtxI,GAGhC,IAAIo3C,EAAiB,OADrBi2M,EAAStmN,GAAOsmN,EADhB/7G,EAAO4nH,GAAS5nH,EAAM+7G,KAEMA,EAASA,EAAO8L,GAAM7hP,GAAKg6H,KACvD,OAAe,MAARl6F,EAAexyC,EAAYkzC,GAAMV,EAAMi2M,EAAQrtP,GAUxD,SAASm6P,GAAgBz4P,GACvB,OAAO2wP,GAAa3wP,IAAU63P,GAAW73P,IAAU8iP,EAuCrD,SAAS4V,GAAY14P,EAAOs/G,EAAOy0I,EAASC,EAAY/pH,GACtD,OAAIjqI,IAAUs/G,IAGD,MAATt/G,GAA0B,MAATs/G,IAAmBqxI,GAAa3wP,KAAW2wP,GAAarxI,GACpEt/G,GAAUA,GAASs/G,GAAUA,EAmBxC,SAAyBqsI,EAAQrsI,EAAOy0I,EAASC,EAAY2E,EAAW1uH,GACtE,IAAI2uH,EAAWnkP,GAAQk3O,GACnBkN,EAAWpkP,GAAQ6qG,GACnBw5I,EAASF,EAAW7V,EAAWsR,GAAO1I,GACtCoN,EAASF,EAAW9V,EAAWsR,GAAO/0I,GAKtC05I,GAHJF,EAASA,GAAUhW,EAAUS,EAAYuV,IAGhBvV,EACrB0V,GAHJF,EAASA,GAAUjW,EAAUS,EAAYwV,IAGhBxV,EACrB2V,EAAYJ,GAAUC,EAE1B,GAAIG,GAAaxqN,GAASi9M,GAAS,CACjC,IAAKj9M,GAAS4wE,GACZ,OAAO,EAETs5I,GAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADA/uH,IAAUA,EAAQ,IAAIgoH,IACd2G,GAAY9O,GAAa6B,GAC7BwN,GAAYxN,EAAQrsI,EAAOy0I,EAASC,EAAY2E,EAAW1uH,GA81EnE,SAAoB0hH,EAAQrsI,EAAOnpG,EAAK49O,EAASC,EAAY2E,EAAW1uH,GACtE,OAAQ9zH,GACN,KAAK2tO,EACH,GAAK6H,EAAOwJ,YAAc71I,EAAM61I,YAC3BxJ,EAAOuJ,YAAc51I,EAAM41I,WAC9B,OAAO,EAETvJ,EAASA,EAAO1wF,OAChB37C,EAAQA,EAAM27C,OAEhB,KAAK4oF,EACH,QAAK8H,EAAOwJ,YAAc71I,EAAM61I,aAC3BwD,EAAU,IAAI1hF,GAAW00E,GAAS,IAAI10E,GAAW33D,KAKxD,KAAK0jI,EACL,KAAKC,EACL,KAAKK,EAGH,OAAO4P,IAAIvH,GAASrsI,GAEtB,KAAK4jI,EACH,OAAOyI,EAAO/rP,MAAQ0/G,EAAM1/G,MAAQ+rP,EAAOlzN,SAAW6mF,EAAM7mF,QAE9D,KAAKgrN,EACL,KAAKpG,EAIH,OAAOsO,GAAWrsI,EAAQ,GAE5B,KAAK+jI,EACH,IAAI+V,EAAUtM,GAEhB,KAAKpJ,EAIH,GAFA0V,IAAYA,EAAUnM,IAElBtB,EAAO/sN,MAAQ0gF,EAAM1gF,QA3nLN,EAwnLHm1N,GAId,OAAO,EAGT,IAAIxlC,EAAUtkF,EAAMt5H,IAAIg7O,GACxB,GAAIp9B,EACF,OAAOA,GAAWjvG,EAEpBy0I,GAloLqB,EAqoLrB9pH,EAAMn3H,IAAI64O,EAAQrsI,GAClB,IAAIjkF,EAAS89N,GAAYC,EAAQzN,GAASyN,EAAQ95I,GAAQy0I,EAASC,EAAY2E,EAAW1uH,GAE1F,OADAA,EAAK,OAAW0hH,GACTtwN,EAET,KAAKsoN,EACH,GAAI6M,GACF,OAAOA,GAAc78N,KAAKg4N,IAAW6E,GAAc78N,KAAK2rF,GAG9D,OAAO,EA35ED+5I,CAAW1N,EAAQrsI,EAAOw5I,EAAQ/E,EAASC,EAAY2E,EAAW1uH,GAExE,KAvvGuB,EAuvGjB8pH,GAAiC,CACrC,IAAIuF,EAAeN,GAAY7sN,GAAexY,KAAKg4N,EAAQ,eACvD4N,EAAeN,GAAY9sN,GAAexY,KAAK2rF,EAAO,eAE1D,GAAIg6I,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAe3N,EAAO3rP,QAAU2rP,EAC/C8N,EAAeF,EAAej6I,EAAMt/G,QAAUs/G,EAGlD,OADA2qB,IAAUA,EAAQ,IAAIgoH,IACf0G,EAAUa,EAAcC,EAAc1F,EAASC,EAAY/pH,IAGtE,QAAKivH,IAGLjvH,IAAUA,EAAQ,IAAIgoH,IA05ExB,SAAsBtG,EAAQrsI,EAAOy0I,EAASC,EAAY2E,EAAW1uH,GACnE,IAAIyvH,EAjqLmB,EAiqLP3F,EACZ4F,EAAWhE,GAAWhK,GACtBiO,EAAYD,EAAS/2P,OAIzB,GAAIg3P,GAHWjE,GAAWr2I,GACD18G,SAEM82P,EAC7B,OAAO,EAGT,IADA,IAAItxP,EAAQwxP,EACLxxP,KAAS,CACd,IAAIgT,EAAMu+O,EAASvxP,GACnB,KAAMsxP,EAAYt+O,KAAOkkG,EAAQnzE,GAAexY,KAAK2rF,EAAOlkG,IAC1D,OAAO,EAIX,IAAIy+O,EAAa5vH,EAAMt5H,IAAIg7O,GACvBmO,EAAa7vH,EAAMt5H,IAAI2uG,GAC3B,GAAIu6I,GAAcC,EAChB,OAAOD,GAAcv6I,GAASw6I,GAAcnO,EAE9C,IAAItwN,GAAS,EACb4uG,EAAMn3H,IAAI64O,EAAQrsI,GAClB2qB,EAAMn3H,IAAIwsG,EAAOqsI,GAGjB,IADA,IAAIoO,EAAWL,IACNtxP,EAAQwxP,GAAW,CAE1B,IAAIvG,EAAW1H,EADfvwO,EAAMu+O,EAASvxP,IAEX4xP,EAAW16I,EAAMlkG,GAErB,GAAI44O,EACF,IAAIiG,EAAWP,EACX1F,EAAWgG,EAAU3G,EAAUj4O,EAAKkkG,EAAOqsI,EAAQ1hH,GACnD+pH,EAAWX,EAAU2G,EAAU5+O,EAAKuwO,EAAQrsI,EAAO2qB,GAGzD,KAAMgwH,IAAa/2P,EACVmwP,IAAa2G,GAAYrB,EAAUtF,EAAU2G,EAAUjG,EAASC,EAAY/pH,GAC7EgwH,GACD,CACL5+N,GAAS,EACT,MAEF0+N,IAAaA,EAAkB,eAAP3+O,GAE1B,GAAIigB,IAAW0+N,EAAU,CACvB,IAAIG,EAAUvO,EAAOh9M,YACjBwrN,EAAU76I,EAAM3wE,YAGhBurN,GAAWC,KACV,gBAAiBxO,MAAU,gBAAiBrsI,IACzB,mBAAX46I,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvD9+N,GAAS,GAKb,OAFA4uG,EAAK,OAAW0hH,GAChB1hH,EAAK,OAAW3qB,GACTjkF,EAv9EA++N,CAAazO,EAAQrsI,EAAOy0I,EAASC,EAAY2E,EAAW1uH,IA3D5DowH,CAAgBr6P,EAAOs/G,EAAOy0I,EAASC,EAAY0E,GAAazuH,IAmFzE,SAASqwH,GAAY3O,EAAQ3mO,EAAQu1O,EAAWvG,GAC9C,IAAI5rP,EAAQmyP,EAAU33P,OAClBA,EAASwF,EACToyP,GAAgBxG,EAEpB,GAAc,MAAVrI,EACF,OAAQ/oP,EAGV,IADA+oP,EAAS1wO,GAAO0wO,GACTvjP,KAAS,CACd,IAAImG,EAAOgsP,EAAUnyP,GACrB,GAAKoyP,GAAgBjsP,EAAK,GAClBA,EAAK,KAAOo9O,EAAOp9O,EAAK,MACtBA,EAAK,KAAMo9O,GAEnB,OAAO,EAGX,OAASvjP,EAAQxF,GAAQ,CAEvB,IAAIwY,GADJ7M,EAAOgsP,EAAUnyP,IACF,GACXirP,EAAW1H,EAAOvwO,GAClBq/O,EAAWlsP,EAAK,GAEpB,GAAIisP,GAAgBjsP,EAAK,IACvB,GAAI8kP,IAAanwP,KAAekY,KAAOuwO,GACrC,OAAO,MAEJ,CACL,IAAI1hH,EAAQ,IAAIgoH,GAChB,GAAI+B,EACF,IAAI34N,EAAS24N,EAAWX,EAAUoH,EAAUr/O,EAAKuwO,EAAQ3mO,EAAQilH,GAEnE,KAAM5uG,IAAWn4B,EACTw1P,GAAY+B,EAAUpH,EAAUqH,EAA+C1G,EAAY/pH,GAC3F5uG,GAEN,OAAO,GAIb,OAAO,EAWT,SAASs/N,GAAa36P,GACpB,SAAK8pM,GAAS9pM,KA05FE01C,EA15FiB11C,EA25FxB+tP,IAAeA,MAAcr4M,MAx5FxBg1H,GAAW1qK,GAASouP,GAAanI,IAChCxkO,KAAKyuO,GAASlwP,IAs5F/B,IAAkB01C,EA12FlB,SAASklN,GAAa56P,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK2lD,GAEW,iBAAT3lD,EACFyU,GAAQzU,GACX66P,GAAoB76P,EAAM,GAAIA,EAAM,IACpC86P,GAAY96P,GAEXusJ,GAASvsJ,GAUlB,SAAS+6P,GAASpP,GAChB,IAAKqP,GAAYrP,GACf,OAAO4D,GAAW5D,GAEpB,IAAItwN,EAAS,GACb,IAAK,IAAIjgB,KAAOH,GAAO0wO,GACjBx/M,GAAexY,KAAKg4N,EAAQvwO,IAAe,eAAPA,GACtCigB,EAAOh5B,KAAK+Y,GAGhB,OAAOigB,EAkCT,SAAS4/N,GAAOj7P,EAAOs/G,GACrB,OAAOt/G,EAAQs/G,EAWjB,SAAS47I,GAAQx9F,EAAYusF,GAC3B,IAAI7hP,GAAS,EACTizB,EAASmhJ,GAAY9e,GAAc10J,EAAM00J,EAAW96J,QAAU,GAKlE,OAHA4wP,GAAS91F,EAAY,SAAS19J,EAAOob,EAAKsiJ,GACxCriI,IAASjzB,GAAS6hP,EAASjqP,EAAOob,EAAKsiJ,KAElCriI,EAUT,SAASy/N,GAAY91O,GACnB,IAAIu1O,EAAYY,GAAan2O,GAC7B,OAAwB,GAApBu1O,EAAU33P,QAAe23P,EAAU,GAAG,GACjCa,GAAwBb,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS5O,GACd,OAAOA,IAAW3mO,GAAUs1O,GAAY3O,EAAQ3mO,EAAQu1O,IAY5D,SAASM,GAAoBjrH,EAAM6qH,GACjC,OAAIY,GAAMzrH,IAAS0rH,GAAmBb,GAC7BW,GAAwB3D,GAAM7nH,GAAO6qH,GAEvC,SAAS9O,GACd,IAAI0H,EAAW1iP,GAAIg7O,EAAQ/7G,GAC3B,OAAQyjH,IAAanwP,GAAamwP,IAAaoH,EAC3Cc,GAAM5P,EAAQ/7G,GACd8oH,GAAY+B,EAAUpH,EAAUqH,IAexC,SAASc,GAAU7P,EAAQ3mO,EAAQy2O,EAAUzH,EAAY/pH,GACnD0hH,IAAW3mO,GAGfmyO,GAAQnyO,EAAQ,SAASy1O,EAAUr/O,GAEjC,GADA6uH,IAAUA,EAAQ,IAAIgoH,IAClBnoD,GAAS2wD,IA+BjB,SAAuB9O,EAAQ3mO,EAAQ5J,EAAKqgP,EAAUC,EAAW1H,EAAY/pH,GAC3E,IAAIopH,EAAWsI,GAAQhQ,EAAQvwO,GAC3Bq/O,EAAWkB,GAAQ32O,EAAQ5J,GAC3BmzM,EAAUtkF,EAAMt5H,IAAI8pP,GAExB,GAAIlsC,EACF0kC,GAAiBtH,EAAQvwO,EAAKmzM,OADhC,CAIA,IAAI59E,EAAWqjH,EACXA,EAAWX,EAAUoH,EAAWr/O,EAAM,GAAKuwO,EAAQ3mO,EAAQilH,GAC3D/mI,EAEA+yP,EAAWtlH,IAAaztI,EAE5B,GAAI+yP,EAAU,CACZ,IAAIrY,EAAQnpO,GAAQgmP,GAChBnI,GAAU1U,GAASlvM,GAAS+rN,GAC5BmB,GAAWhe,IAAU0U,GAAUxI,GAAa2Q,GAEhD9pH,EAAW8pH,EACP7c,GAAS0U,GAAUsJ,EACjBnnP,GAAQ4+O,GACV1iH,EAAW0iH,EAEJwI,GAAkBxI,GACzB1iH,EAAWmiH,GAAUO,GAEdf,GACP2D,GAAW,EACXtlH,EAAW4jH,GAAYkG,GAAU,IAE1BmB,GACP3F,GAAW,EACXtlH,EAAW0kH,GAAgBoF,GAAU,IAGrC9pH,EAAW,GAGNwsG,GAAcsd,IAAapI,GAAYoI,IAC9C9pH,EAAW0iH,EACPhB,GAAYgB,GACd1iH,EAAW9oE,GAAcwrL,GAEjBvpD,GAASupD,KAAa3oF,GAAW2oF,KACzC1iH,EAAW6jH,GAAgBiG,KAI7BxE,GAAW,EAGXA,IAEFhsH,EAAMn3H,IAAI2nP,EAAU9pH,GACpB+qH,EAAU/qH,EAAU8pH,EAAUgB,EAAUzH,EAAY/pH,GACpDA,EAAK,OAAWwwH,IAElBxH,GAAiBtH,EAAQvwO,EAAKu1H,IAzF1BmrH,CAAcnQ,EAAQ3mO,EAAQ5J,EAAKqgP,EAAUD,GAAWxH,EAAY/pH,OAEjE,CACH,IAAI0G,EAAWqjH,EACXA,EAAW2H,GAAQhQ,EAAQvwO,GAAMq/O,EAAWr/O,EAAM,GAAKuwO,EAAQ3mO,EAAQilH,GACvE/mI,EAEAytI,IAAaztI,IACfytI,EAAW8pH,GAEbxH,GAAiBtH,EAAQvwO,EAAKu1H,KAE/BgkH,IAwFL,SAASoH,GAAQvkP,EAAOg/B,GACtB,IAAI5zC,EAAS4U,EAAM5U,OACnB,GAAKA,EAIL,OAAO6vP,GADPj8M,GAAKA,EAAI,EAAI5zC,EAAS,EACJA,GAAU4U,EAAMg/B,GAAKtzC,EAYzC,SAAS84P,GAAYt+F,EAAYu+F,EAAWC,GAExCD,EADEA,EAAUr5P,OACA8nP,GAASuR,EAAW,SAAShS,GACvC,OAAIx1O,GAAQw1O,GACH,SAASjqP,GACd,OAAOu3P,GAAQv3P,EAA2B,IAApBiqP,EAASrnP,OAAeqnP,EAAS,GAAKA,IAGzDA,IAGG,CAACtkM,IAGf,IAAIv9C,GAAS,EAUb,OATA6zP,EAAYvR,GAASuR,EAAWhQ,GAAUkQ,OAnxF9C,SAAoB3kP,EAAO4kP,GACzB,IAAIx5P,EAAS4U,EAAM5U,OAGnB,IADA4U,EAAM8C,KAyxFsB,SAASqxO,EAAQrsI,GACzC,OA04BJ,SAAyBqsI,EAAQrsI,EAAO48I,GAOtC,IANA,IAAI9zP,GAAS,EACTi0P,EAAc1Q,EAAO2Q,SACrBC,EAAcj9I,EAAMg9I,SACpB15P,EAASy5P,EAAYz5P,OACrB45P,EAAeN,EAAOt5P,SAEjBwF,EAAQxF,GAAQ,CACvB,IAAIy4B,EAASohO,GAAiBJ,EAAYj0P,GAAQm0P,EAAYn0P,IAC9D,GAAIizB,EACF,OAAIjzB,GAASo0P,EACJnhO,EAGFA,GAAmB,QADd6gO,EAAO9zP,IACiB,EAAI,GAU5C,OAAOujP,EAAOvjP,MAAQk3G,EAAMl3G,MAl6BnBs0P,CAAgB/Q,EAAQrsI,EAAO48I,KAzxFnCt5P,KACL4U,EAAM5U,GAAU4U,EAAM5U,GAAQ5C,MAEhC,OAAOwX,EAqxFEmlP,CAPMzB,GAAQx9F,EAAY,SAAS19J,EAAOob,EAAKsiJ,GAIpD,MAAO,CAAE,SAHMgtF,GAASuR,EAAW,SAAShS,GAC1C,OAAOA,EAASjqP,KAEa,QAAWoI,EAAO,MAASpI,MAgC9D,SAAS48P,GAAWjR,EAAQvhH,EAAOtrG,GAKjC,IAJA,IAAI12B,GAAS,EACTxF,EAASwnI,EAAMxnI,OACfy4B,EAAS,KAEJjzB,EAAQxF,GAAQ,CACvB,IAAIgtI,EAAOxF,EAAMhiI,GACbpI,EAAQu3P,GAAQ5L,EAAQ/7G,GAExB9wG,EAAU9+B,EAAO4vI,IACnBitH,GAAQxhO,EAAQm8N,GAAS5nH,EAAM+7G,GAAS3rP,GAG5C,OAAOq7B,EA2BT,SAASyhO,GAAYtlP,EAAOjF,EAAQ03O,EAAUxuM,GAC5C,IAAI/zC,EAAU+zC,EAAa+vM,GAAkBhB,GACzCpiP,GAAS,EACTxF,EAAS2P,EAAO3P,OAChBm4O,EAAOvjO,EAQX,IANIA,IAAUjF,IACZA,EAASugP,GAAUvgP,IAEjB03O,IACFlP,EAAO2P,GAASlzO,EAAOy0O,GAAUhC,OAE1B7hP,EAAQxF,GAKf,IAJA,IAAIktJ,EAAY,EACZ9vJ,EAAQuS,EAAOnK,GACf+tP,EAAWlM,EAAWA,EAASjqP,GAASA,GAEpC8vJ,EAAYpoJ,EAAQqzO,EAAMob,EAAUrmG,EAAWr0G,KAAgB,GACjEs/L,IAASvjO,GACXwvB,GAAOrT,KAAKonN,EAAMjrF,EAAW,GAE/B9oH,GAAOrT,KAAKnc,EAAOs4I,EAAW,GAGlC,OAAOt4I,EAYT,SAASulP,GAAWvlP,EAAOwlP,GAIzB,IAHA,IAAIp6P,EAAS4U,EAAQwlP,EAAQp6P,OAAS,EAClCi8F,EAAYj8F,EAAS,EAElBA,KAAU,CACf,IAAIwF,EAAQ40P,EAAQp6P,GACpB,GAAIA,GAAUi8F,GAAaz2F,IAAUwqN,EAAU,CAC7C,IAAIA,EAAWxqN,EACXqqP,GAAQrqP,GACV4+B,GAAOrT,KAAKnc,EAAOpP,EAAO,GAE1B60P,GAAUzlP,EAAOpP,IAIvB,OAAOoP,EAYT,SAASm7O,GAAWiB,EAAOC,GACzB,OAAOD,EAAQ1E,GAAYU,MAAkBiE,EAAQD,EAAQ,IAkC/D,SAASsJ,GAAWtvN,EAAQ4I,GAC1B,IAAInb,EAAS,GACb,IAAKuS,GAAU4I,EAAI,GAAKA,EAAI58B,EAC1B,OAAOyhB,EAIT,GACMmb,EAAI,IACNnb,GAAUuS,IAEZ4I,EAAI04M,GAAY14M,EAAI,MAElB5I,GAAUA,SAEL4I,GAET,OAAOnb,EAWT,SAAS8hO,GAASznN,EAAM9tC,GACtB,OAAOw1P,GAAYC,GAAS3nN,EAAM9tC,EAAO+9C,IAAWjQ,EAAO,IAU7D,SAAS4nN,GAAW5/F,GAClB,OAAOg1F,GAAYngP,GAAOmrJ,IAW5B,SAAS6/F,GAAe7/F,EAAYlnH,GAClC,IAAIh/B,EAAQjF,GAAOmrJ,GACnB,OAAOm1F,GAAYr7O,EAAOu7O,GAAUv8M,EAAG,EAAGh/B,EAAM5U,SAalD,SAASi6P,GAAQlR,EAAQ/7G,EAAM5vI,EAAOg0P,GACpC,IAAKlqD,GAAS6hD,GACZ,OAAOA,EAST,IALA,IAAIvjP,GAAS,EACTxF,GAHJgtI,EAAO4nH,GAAS5nH,EAAM+7G,IAGJ/oP,OACdi8F,EAAYj8F,EAAS,EACrB46P,EAAS7R,EAEI,MAAV6R,KAAoBp1P,EAAQxF,GAAQ,CACzC,IAAIwY,EAAMq8O,GAAM7nH,EAAKxnI,IACjBuoI,EAAW3wI,EAEf,GAAY,cAARob,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOuwO,EAGT,GAAIvjP,GAASy2F,EAAW,CACtB,IAAIw0J,EAAWmK,EAAOpiP,IACtBu1H,EAAWqjH,EAAaA,EAAWX,EAAUj4O,EAAKoiP,GAAUt6P,KAC3CA,IACfytI,EAAWm5D,GAASupD,GAChBA,EACCZ,GAAQ7iH,EAAKxnI,EAAQ,IAAM,GAAK,IAGzCgrP,GAAYoK,EAAQpiP,EAAKu1H,GACzB6sH,EAASA,EAAOpiP,GAElB,OAAOuwO,EAWT,IAAI8R,GAAe1N,GAAqB,SAASr6M,EAAMnnC,GAErD,OADAwhP,GAAQj9O,IAAI4iC,EAAMnnC,GACXmnC,GAFoBiQ,GAazB+3M,GAAmBlrN,GAA4B,SAASkD,EAAM9H,GAChE,OAAO4E,GAAekD,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASioN,GAAS/vN,GAClB,UAAY,KALwB+X,GAgBxC,SAASi4M,GAAYlgG,GACnB,OAAOm1F,GAAYtgP,GAAOmrJ,IAY5B,SAASmgG,GAAUrmP,EAAO5P,EAAOC,GAC/B,IAAIO,GAAS,EACTxF,EAAS4U,EAAM5U,OAEfgF,EAAQ,IACVA,GAASA,EAAQhF,EAAS,EAAKA,EAASgF,IAE1CC,EAAMA,EAAMjF,EAASA,EAASiF,GACpB,IACRA,GAAOjF,GAETA,EAASgF,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIyzB,EAASryB,EAAMpG,KACVwF,EAAQxF,GACfy4B,EAAOjzB,GAASoP,EAAMpP,EAAQR,GAEhC,OAAOyzB,EAYT,SAASyiO,GAASpgG,EAAY5+H,GAC5B,IAAIzD,EAMJ,OAJAm4N,GAAS91F,EAAY,SAAS19J,EAAOoI,EAAOs1J,GAE1C,QADAriI,EAASyD,EAAU9+B,EAAOoI,EAAOs1J,QAG1BriI,EAeX,SAAS0iO,GAAgBvmP,EAAOxX,EAAOg+P,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAAT1mP,EAAgBymP,EAAMzmP,EAAM5U,OAEvC,GAAoB,iBAAT5C,GAAqBA,GAAUA,GAASk+P,GAn/H3Btb,WAm/H0D,CAChF,KAAOqb,EAAMC,GAAM,CACjB,IAAIC,EAAOF,EAAMC,IAAU,EACvB/H,EAAW3+O,EAAM2mP,GAEJ,OAAbhI,IAAsB5b,GAAS4b,KAC9B6H,EAAc7H,GAAYn2P,EAAUm2P,EAAWn2P,GAClDi+P,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAOD,EAET,OAAOE,GAAkB5mP,EAAOxX,EAAO2lD,GAAUq4M,GAgBnD,SAASI,GAAkB5mP,EAAOxX,EAAOiqP,EAAU+T,GACjD,IAAIC,EAAM,EACNC,EAAgB,MAAT1mP,EAAgB,EAAIA,EAAM5U,OACrC,GAAa,IAATs7P,EACF,OAAO,EAST,IALA,IAAIG,GADJr+P,EAAQiqP,EAASjqP,KACQA,EACrBs+P,EAAsB,OAAVt+P,EACZu+P,EAAchkB,GAASv6O,GACvBw+P,EAAiBx+P,IAAUkD,EAExB+6P,EAAMC,GAAM,CACjB,IAAIC,EAAMjP,IAAa+O,EAAMC,GAAQ,GACjC/H,EAAWlM,EAASzyO,EAAM2mP,IAC1BM,EAAetI,IAAajzP,EAC5Bw7P,EAAyB,OAAbvI,EACZwI,EAAiBxI,GAAaA,EAC9ByI,EAAcrkB,GAAS4b,GAE3B,GAAIkI,EACF,IAAIQ,EAASb,GAAcW,OAE3BE,EADSL,EACAG,IAAmBX,GAAcS,GACjCH,EACAK,GAAkBF,IAAiBT,IAAeU,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcV,IAAeY,IAChEF,IAAaE,IAGbZ,EAAc7H,GAAYn2P,EAAUm2P,EAAWn2P,GAEtD6+P,EACFZ,EAAME,EAAM,EAEZD,EAAOC,EAGX,OAAO1O,GAAUyO,EA1jICtb,YAskIpB,SAASkc,GAAetnP,EAAOyyO,GAM7B,IALA,IAAI7hP,GAAS,EACTxF,EAAS4U,EAAM5U,OACf0nP,EAAW,EACXjvN,EAAS,KAEJjzB,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACd+tP,EAAWlM,EAAWA,EAASjqP,GAASA,EAE5C,IAAKoI,IAAU8qP,GAAGiD,EAAUpb,GAAO,CACjC,IAAIA,EAAOob,EACX96N,EAAOivN,KAAwB,IAAVtqP,EAAc,EAAIA,GAG3C,OAAOq7B,EAWT,SAAS0jO,GAAa/+P,GACpB,MAAoB,iBAATA,EACFA,EAELu6O,GAASv6O,GACJ2iP,GAED3iP,EAWV,SAASg/P,GAAah/P,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIyU,GAAQzU,GAEV,OAAO0qP,GAAS1qP,EAAOg/P,IAAgB,GAEzC,GAAIzkB,GAASv6O,GACX,OAAOywP,GAAiBA,GAAe98N,KAAK3zB,GAAS,GAEvD,IAAIq7B,EAAUr7B,EAAQ,GACtB,MAAkB,KAAVq7B,GAAkB,EAAIr7B,IAAU,IAAa,KAAOq7B,EAY9D,SAAS4jO,GAASznP,EAAOyyO,EAAUxuM,GACjC,IAAIrzC,GAAS,EACT4tP,EAAWzL,GACX3nP,EAAS4U,EAAM5U,OACfqzP,GAAW,EACX56N,EAAS,GACT0/M,EAAO1/M,EAEX,GAAIogB,EACFw6M,GAAW,EACXD,EAAWvL,QAER,GAAI7nP,GAjtIU,IAitIkB,CACnC,IAAIkQ,EAAMm3O,EAAW,KAAOiV,GAAU1nP,GACtC,GAAI1E,EACF,OAAOm6O,GAAWn6O,GAEpBmjP,GAAW,EACXD,EAAW7J,GACXpR,EAAO,IAAIgX,QAGXhX,EAAOkP,EAAW,GAAK5uN,EAEzBixL,EACA,OAASlkN,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACd+tP,EAAWlM,EAAWA,EAASjqP,GAASA,EAG5C,GADAA,EAASy7C,GAAwB,IAAVz7C,EAAeA,EAAQ,EAC1Ci2P,GAAYE,GAAaA,EAAU,CAErC,IADA,IAAIgJ,EAAYpkB,EAAKn4O,OACdu8P,KACL,GAAIpkB,EAAKokB,KAAehJ,EACtB,SAAS7pC,EAGT29B,GACFlP,EAAK14O,KAAK8zP,GAEZ96N,EAAOh5B,KAAKrC,QAEJg2P,EAASjb,EAAMob,EAAU16M,KAC7Bs/L,IAAS1/M,GACX0/M,EAAK14O,KAAK8zP,GAEZ96N,EAAOh5B,KAAKrC,IAGhB,OAAOq7B,EAWT,SAAS4hO,GAAUtR,EAAQ/7G,GAGzB,OAAiB,OADjB+7G,EAAStmN,GAAOsmN,EADhB/7G,EAAO4nH,GAAS5nH,EAAM+7G,aAEUA,EAAO8L,GAAM7hP,GAAKg6H,KAapD,SAASwvH,GAAWzT,EAAQ/7G,EAAMyvH,EAASrL,GACzC,OAAO6I,GAAQlR,EAAQ/7G,EAAMyvH,EAAQ9H,GAAQ5L,EAAQ/7G,IAAQokH,GAc/D,SAASsL,GAAU9nP,EAAOsnB,EAAWygO,EAAQlU,GAI3C,IAHA,IAAIzoP,EAAS4U,EAAM5U,OACfwF,EAAQijP,EAAYzoP,GAAU,GAE1ByoP,EAAYjjP,MAAYA,EAAQxF,IACtCk8B,EAAUtnB,EAAMpP,GAAQA,EAAOoP,KAEjC,OAAO+nP,EACH1B,GAAUrmP,EAAQ6zO,EAAY,EAAIjjP,EAASijP,EAAYjjP,EAAQ,EAAIxF,GACnEi7P,GAAUrmP,EAAQ6zO,EAAYjjP,EAAQ,EAAI,EAAKijP,EAAYzoP,EAASwF,GAa1E,SAASo3P,GAAiBx/P,EAAOmrI,GAC/B,IAAI9vG,EAASr7B,EAIb,OAHIq7B,aAAkBu1N,KACpBv1N,EAASA,EAAOr7B,SAEX4qP,GAAYz/G,EAAS,SAAS9vG,EAAQmmC,GAC3C,OAAOA,EAAO9rB,KAAKU,MAAMorB,EAAO0nE,QAASyhH,GAAU,CAACtvN,GAASmmC,EAAOljE,QACnE+8B,GAaL,SAASokO,GAAQrH,EAAQnO,EAAUxuM,GACjC,IAAI74C,EAASw1P,EAAOx1P,OACpB,GAAIA,EAAS,EACX,OAAOA,EAASq8P,GAAS7G,EAAO,IAAM,GAKxC,IAHA,IAAIhwP,GAAS,EACTizB,EAASryB,EAAMpG,KAEVwF,EAAQxF,GAIf,IAHA,IAAI4U,EAAQ4gP,EAAOhwP,GACfkwP,GAAY,IAEPA,EAAW11P,GACd01P,GAAYlwP,IACdizB,EAAOjzB,GAAS2tP,GAAe16N,EAAOjzB,IAAUoP,EAAO4gP,EAAOE,GAAWrO,EAAUxuM,IAIzF,OAAOwjN,GAASjI,GAAY37N,EAAQ,GAAI4uN,EAAUxuM,GAYpD,SAASikN,GAAcluO,EAAOjf,EAAQotP,GAMpC,IALA,IAAIv3P,GAAS,EACTxF,EAAS4uB,EAAM5uB,OACfg9P,EAAartP,EAAO3P,OACpBy4B,EAAS,KAEJjzB,EAAQxF,GAEf+8P,EAAWtkO,EAAQ7J,EAAMppB,GADbA,EAAQw3P,EAAartP,EAAOnK,GAASlF,GAGnD,OAAOm4B,EAUT,SAASwkO,GAAoB7/P,GAC3B,OAAO67P,GAAkB77P,GAASA,EAAQ,GAU5C,SAAS8/P,GAAa9/P,GACpB,MAAuB,mBAATA,EAAsBA,EAAQ2lD,GAW9C,SAAS6xM,GAASx3P,EAAO2rP,GACvB,OAAIl3O,GAAQzU,GACHA,EAEFq7P,GAAMr7P,EAAO2rP,GAAU,CAAC3rP,GAASq5K,GAAa3oJ,GAAS1wB,IAYhE,IAAI+/P,GAAW5C,GAWf,SAAS6C,GAAUxoP,EAAO5P,EAAOC,GAC/B,IAAIjF,EAAS4U,EAAM5U,OAEnB,OADAiF,EAAMA,IAAQ3E,EAAYN,EAASiF,GAC1BD,GAASC,GAAOjF,EAAU4U,EAAQqmP,GAAUrmP,EAAO5P,EAAOC,GASrE,IAAI86B,GAAemsN,IAAmB,SAASrqO,GAC7C,OAAOo5D,GAAKl7C,aAAale,IAW3B,SAAS8vO,GAAYt5F,EAAQg5F,GAC3B,GAAIA,EACF,OAAOh5F,EAAOhzJ,QAEhB,IAAIrF,EAASq4J,EAAOr4J,OAChBy4B,EAASizN,GAAcA,GAAY1rP,GAAU,IAAIq4J,EAAOtsH,YAAY/rC,GAGxE,OADAq4J,EAAO57F,KAAKhkC,GACLA,EAUT,SAAS25N,GAAiBiL,GACxB,IAAI5kO,EAAS,IAAI4kO,EAAYtxN,YAAYsxN,EAAY9K,YAErD,OADA,IAAIl+E,GAAW57I,GAAQvoB,IAAI,IAAImkK,GAAWgpF,IACnC5kO,EAgDT,SAASg6N,GAAgB6K,EAAYjM,GACnC,IAAIh5F,EAASg5F,EAASe,GAAiBkL,EAAWjlG,QAAUilG,EAAWjlG,OACvE,OAAO,IAAIilG,EAAWvxN,YAAYssH,EAAQilG,EAAWhL,WAAYgL,EAAWt9P,QAW9E,SAAS65P,GAAiBz8P,EAAOs/G,GAC/B,GAAIt/G,IAAUs/G,EAAO,CACnB,IAAI6gJ,EAAengQ,IAAUkD,EACzBo7P,EAAsB,OAAVt+P,EACZogQ,EAAiBpgQ,GAAUA,EAC3Bu+P,EAAchkB,GAASv6O,GAEvBy+P,EAAen/I,IAAUp8G,EACzBw7P,EAAsB,OAAVp/I,EACZq/I,EAAiBr/I,GAAUA,EAC3Bs/I,EAAcrkB,GAASj7H,GAE3B,IAAMo/I,IAAcE,IAAgBL,GAAev+P,EAAQs/G,GACtDi/I,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BwB,GAAgBxB,IACjByB,EACH,OAAO,EAET,IAAM9B,IAAcC,IAAgBK,GAAe5+P,EAAQs/G,GACtDs/I,GAAeuB,GAAgBC,IAAmB9B,IAAcC,GAChEG,GAAayB,GAAgBC,IAC5B3B,GAAgB2B,IACjBzB,EACH,OAAQ,EAGZ,OAAO,EAuDT,SAAS0B,GAAY/hQ,EAAMgiQ,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAapiQ,EAAKsE,OAClB+9P,EAAgBJ,EAAQ39P,OACxBkzE,GAAa,EACb8qL,EAAaN,EAAS19P,OACtBi+P,EAAcrR,GAAUkR,EAAaC,EAAe,GACpDtlO,EAASryB,EAAM43P,EAAaC,GAC5BC,GAAeN,IAEV1qL,EAAY8qL,GACnBvlO,EAAOy6C,GAAawqL,EAASxqL,GAE/B,OAAS2qL,EAAYE,IACfG,GAAeL,EAAYC,KAC7BrlO,EAAOklO,EAAQE,IAAcniQ,EAAKmiQ,IAGtC,KAAOI,KACLxlO,EAAOy6C,KAAex3E,EAAKmiQ,KAE7B,OAAOplO,EAcT,SAAS0lO,GAAiBziQ,EAAMgiQ,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAapiQ,EAAKsE,OAClBo+P,GAAgB,EAChBL,EAAgBJ,EAAQ39P,OACxBq+P,GAAc,EACdC,EAAcZ,EAAS19P,OACvBi+P,EAAcrR,GAAUkR,EAAaC,EAAe,GACpDtlO,EAASryB,EAAM63P,EAAcK,GAC7BJ,GAAeN,IAEVC,EAAYI,GACnBxlO,EAAOolO,GAAaniQ,EAAKmiQ,GAG3B,IADA,IAAIn3P,EAASm3P,IACJQ,EAAaC,GACpB7lO,EAAO/xB,EAAS23P,GAAcX,EAASW,GAEzC,OAASD,EAAeL,IAClBG,GAAeL,EAAYC,KAC7BrlO,EAAO/xB,EAASi3P,EAAQS,IAAiB1iQ,EAAKmiQ,MAGlD,OAAOplO,EAWT,SAASy3N,GAAU9tO,EAAQxN,GACzB,IAAIpP,GAAS,EACTxF,EAASoiB,EAAOpiB,OAGpB,IADA4U,IAAUA,EAAQxO,EAAMpG,MACfwF,EAAQxF,GACf4U,EAAMpP,GAAS4c,EAAO5c,GAExB,OAAOoP,EAaT,SAASk8O,GAAW1uO,EAAQwM,EAAOm6N,EAAQqI,GACzC,IAAImN,GAASxV,EACbA,IAAWA,EAAS,IAKpB,IAHA,IAAIvjP,GAAS,EACTxF,EAAS4uB,EAAM5uB,SAEVwF,EAAQxF,GAAQ,CACvB,IAAIwY,EAAMoW,EAAMppB,GAEZuoI,EAAWqjH,EACXA,EAAWrI,EAAOvwO,GAAM4J,EAAO5J,GAAMA,EAAKuwO,EAAQ3mO,GAClD9hB,EAEAytI,IAAaztI,IACfytI,EAAW3rH,EAAO5J,IAEhB+lP,EACFhO,GAAgBxH,EAAQvwO,EAAKu1H,GAE7ByiH,GAAYzH,EAAQvwO,EAAKu1H,GAG7B,OAAOg7G,EAmCT,SAASyV,GAAiBpX,EAAQqX,GAChC,OAAO,SAAS3jG,EAAYusF,GAC1B,IAAIv0M,EAAOjhC,GAAQipJ,GAAcqsF,GAAkBwJ,GAC/C1S,EAAcwgB,EAAcA,IAAgB,GAEhD,OAAO3rN,EAAKgoH,EAAYssF,EAAQmS,GAAYlS,EAAU,GAAIpJ,IAW9D,SAASygB,GAAeC,GACtB,OAAOpE,GAAS,SAASxR,EAAQ1lL,GAC/B,IAAI79D,GAAS,EACTxF,EAASqjE,EAAQrjE,OACjBoxP,EAAapxP,EAAS,EAAIqjE,EAAQrjE,EAAS,GAAKM,EAChDiqK,EAAQvqK,EAAS,EAAIqjE,EAAQ,GAAK/iE,EAWtC,IATA8wP,EAAcuN,EAAS3+P,OAAS,GAA0B,mBAAdoxP,GACvCpxP,IAAUoxP,GACX9wP,EAEAiqK,GAASq0F,GAAev7L,EAAQ,GAAIA,EAAQ,GAAIknG,KAClD6mF,EAAapxP,EAAS,EAAIM,EAAY8wP,EACtCpxP,EAAS,GAEX+oP,EAAS1wO,GAAO0wO,KACPvjP,EAAQxF,GAAQ,CACvB,IAAIoiB,EAASihD,EAAQ79D,GACjB4c,GACFu8O,EAAS5V,EAAQ3mO,EAAQ5c,EAAO4rP,GAGpC,OAAOrI,IAYX,SAAS8K,GAAetL,EAAUE,GAChC,OAAO,SAAS3tF,EAAYusF,GAC1B,GAAkB,MAAdvsF,EACF,OAAOA,EAET,IAAK8e,GAAY9e,GACf,OAAOytF,EAASztF,EAAYusF,GAM9B,IAJA,IAAIrnP,EAAS86J,EAAW96J,OACpBwF,EAAQijP,EAAYzoP,GAAU,EAC9B6+P,EAAWxmP,GAAOyiJ,IAEd2tF,EAAYjjP,MAAYA,EAAQxF,KACa,IAA/CqnP,EAASwX,EAASr5P,GAAQA,EAAOq5P,KAIvC,OAAO/jG,GAWX,SAAS05F,GAAc/L,GACrB,OAAO,SAASM,EAAQ1B,EAAU0N,GAMhC,IALA,IAAIvvP,GAAS,EACTq5P,EAAWxmP,GAAO0wO,GAClBn6N,EAAQmmO,EAAShM,GACjB/oP,EAAS4uB,EAAM5uB,OAEZA,KAAU,CACf,IAAIwY,EAAMoW,EAAM65N,EAAYzoP,IAAWwF,GACvC,IAA+C,IAA3C6hP,EAASwX,EAASrmP,GAAMA,EAAKqmP,GAC/B,MAGJ,OAAO9V,GAgCX,SAAS+V,GAAgB35E,GACvB,OAAO,SAASn6I,GAGd,IAAIy+M,EAAaQ,GAFjBj/M,EAASld,GAASkd,IAGdgyM,GAAchyM,GACd1qC,EAEA0pP,EAAMP,EACNA,EAAW,GACXz+M,EAAOY,OAAO,GAEdmzN,EAAWtV,EACX2T,GAAU3T,EAAY,GAAG59M,KAAK,IAC9Bb,EAAO3lC,MAAM,GAEjB,OAAO2kP,EAAI7kE,KAAgB45E,GAW/B,SAASC,GAAiBlwO,GACxB,OAAO,SAASkc,GACd,OAAOg9M,GAAYzmE,GAAM09E,GAAOj0N,GAAQ3tC,QAAQgoP,GAAQ,KAAMv2N,EAAU,KAY5E,SAASowO,GAAW/M,GAClB,OAAO,WAIL,IAAIz2P,EAAOyZ,UACX,OAAQzZ,EAAKsE,QACX,KAAK,EAAG,OAAO,IAAImyP,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAKz2P,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAIy2P,EAAKz2P,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAIy2P,EAAKz2P,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAIy2P,EAAKz2P,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAIy2P,EAAKz2P,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAIy2P,EAAKz2P,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAIy2P,EAAKz2P,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAIyjQ,EAAchR,GAAWgE,EAAK5jO,WAC9BkK,EAAS05N,EAAK3+M,MAAM2rN,EAAazjQ,GAIrC,OAAOwrM,GAASzuK,GAAUA,EAAS0mO,GAgDvC,SAASC,GAAWC,GAClB,OAAO,SAASvkG,EAAY5+H,EAAWgxH,GACrC,IAAI2xG,EAAWxmP,GAAOyiJ,GACtB,IAAK8e,GAAY9e,GAAa,CAC5B,IAAIusF,EAAWkS,GAAYr9N,EAAW,GACtC4+H,EAAaxiJ,GAAKwiJ,GAClB5+H,EAAY,SAAS1jB,GAAO,OAAO6uO,EAASwX,EAASrmP,GAAMA,EAAKqmP,IAElE,IAAIr5P,EAAQ65P,EAAcvkG,EAAY5+H,EAAWgxH,GACjD,OAAO1nJ,GAAS,EAAIq5P,EAASxX,EAAWvsF,EAAWt1J,GAASA,GAASlF,GAWzE,SAASg/P,GAAW7W,GAClB,OAAO8W,GAAS,SAASC,GACvB,IAAIx/P,EAASw/P,EAAMx/P,OACfwF,EAAQxF,EACRy/P,EAASxR,GAAc1/N,UAAUmxO,KAKrC,IAHIjX,GACF+W,EAAM95P,UAEDF,KAAS,CACd,IAAIstC,EAAO0sN,EAAMh6P,GACjB,GAAmB,mBAARstC,EACT,MAAM,IAAIzE,GAAUoxM,GAEtB,GAAIggB,IAAW1yG,GAAgC,WAArB4yG,GAAY7sN,GACpC,IAAIi6G,EAAU,IAAIkhG,GAAc,IAAI,GAIxC,IADAzoP,EAAQunJ,EAAUvnJ,EAAQxF,IACjBwF,EAAQxF,GAAQ,CAGvB,IAAI4/P,EAAWD,GAFf7sN,EAAO0sN,EAAMh6P,IAGTmG,EAAmB,WAAZi0P,EAAwBC,GAAQ/sN,GAAQxyC,EAMjDysJ,EAJEphJ,GAAQm0P,GAAWn0P,EAAK,KACtB,KAAAA,EAAK,KACJA,EAAK,GAAG3L,QAAqB,GAAX2L,EAAK,GAElBohJ,EAAQ4yG,GAAYh0P,EAAK,KAAK6nC,MAAMu5G,EAASphJ,EAAK,IAElC,GAAfmnC,EAAK9yC,QAAe8/P,GAAWhtN,GACtCi6G,EAAQ6yG,KACR7yG,EAAQ2yG,KAAK5sN,GAGrB,OAAO,WACL,IAAIp3C,EAAOyZ,UACP/X,EAAQ1B,EAAK,GAEjB,GAAIqxJ,GAA0B,GAAfrxJ,EAAKsE,QAAe6R,GAAQzU,GACzC,OAAO2vJ,EAAQgzG,MAAM3iQ,GAAOA,QAK9B,IAHA,IAAIoI,EAAQ,EACRizB,EAASz4B,EAASw/P,EAAMh6P,GAAOguC,MAAM33C,KAAMH,GAAQ0B,IAE9CoI,EAAQxF,GACfy4B,EAAS+mO,EAAMh6P,GAAOurB,KAAKl1B,KAAM48B,GAEnC,OAAOA,KAwBb,SAASunO,GAAaltN,EAAMq+M,EAAS7qH,EAASo3H,EAAUC,EAASsC,EAAeC,EAAcC,EAAQC,EAAKC,GACzG,IAAIC,EAAQnP,EAAUtR,EAClB0gB,EA5iKa,EA4iKJpP,EACTqP,EA5iKiB,EA4iKLrP,EACZyM,EAAsB,GAAVzM,EACZsP,EAtiKa,IAsiKJtP,EACTgB,EAAOqO,EAAYlgQ,EAAY4+P,GAAWpsN,GA6C9C,OA3CA,SAASi6G,IAKP,IAJA,IAAI/sJ,EAASmV,UAAUnV,OACnBtE,EAAO0K,EAAMpG,GACbwF,EAAQxF,EAELwF,KACL9J,EAAK8J,GAAS2P,UAAU3P,GAE1B,GAAIo4P,EACF,IAAIp3G,EAAck6G,GAAU3zG,GACxB4zG,EAAe/W,GAAaluP,EAAM8qJ,GASxC,GAPIk3G,IACFhiQ,EAAO+hQ,GAAY/hQ,EAAMgiQ,EAAUC,EAASC,IAE1CqC,IACFvkQ,EAAOyiQ,GAAiBziQ,EAAMukQ,EAAeC,EAActC,IAE7D59P,GAAU2gQ,EACN/C,GAAa59P,EAASqgQ,EAAO,CAC/B,IAAIO,EAAaxW,GAAe1uP,EAAM8qJ,GACtC,OAAOq6G,GACL/tN,EAAMq+M,EAAS6O,GAAcjzG,EAAQvG,YAAalgB,EAClD5qI,EAAMklQ,EAAYT,EAAQC,EAAKC,EAAQrgQ,GAG3C,IAAIm/P,EAAcoB,EAASj6H,EAAUzqI,KACjCgP,EAAK21P,EAAYrB,EAAYrsN,GAAQA,EAczC,OAZA9yC,EAAStE,EAAKsE,OACVmgQ,EACFzkQ,EAAOolQ,GAAQplQ,EAAMykQ,GACZM,GAAUzgQ,EAAS,GAC5BtE,EAAKgK,UAEH46P,GAASF,EAAMpgQ,IACjBtE,EAAKsE,OAASogQ,GAEZvkQ,MAAQA,OAASo/E,IAAQp/E,gBAAgBkxJ,IAC3CliJ,EAAKsnP,GAAQ+M,GAAWr0P,IAEnBA,EAAG2oC,MAAM2rN,EAAazjQ,IAajC,SAASqlQ,GAAe3Z,EAAQ4Z,GAC9B,OAAO,SAASjY,EAAQ1B,GACtB,OAh/DJ,SAAsB0B,EAAQ3B,EAAQC,EAAUpJ,GAI9C,OAHA6V,GAAW/K,EAAQ,SAAS3rP,EAAOob,EAAKuwO,GACtC3B,EAAOnJ,EAAaoJ,EAASjqP,GAAQob,EAAKuwO,KAErC9K,EA4+DEgjB,CAAalY,EAAQ3B,EAAQ4Z,EAAW3Z,GAAW,KAY9D,SAAS6Z,GAAoBz5F,EAAUlnD,GACrC,OAAO,SAASnjH,EAAOs/G,GACrB,IAAIjkF,EACJ,GAAIr7B,IAAUkD,GAAao8G,IAAUp8G,EACnC,OAAOigH,EAKT,GAHInjH,IAAUkD,IACZm4B,EAASr7B,GAEPs/G,IAAUp8G,EAAW,CACvB,GAAIm4B,IAAWn4B,EACb,OAAOo8G,EAEW,iBAATt/G,GAAqC,iBAATs/G,GACrCt/G,EAAQg/P,GAAah/P,GACrBs/G,EAAQ0/I,GAAa1/I,KAErBt/G,EAAQ++P,GAAa/+P,GACrBs/G,EAAQy/I,GAAaz/I,IAEvBjkF,EAASgvI,EAASrqK,EAAOs/G,GAE3B,OAAOjkF,GAWX,SAAS0oO,GAAWC,GAClB,OAAO7B,GAAS,SAASlG,GAEvB,OADAA,EAAYvR,GAASuR,EAAWhQ,GAAUkQ,OACnCgB,GAAS,SAAS7+P,GACvB,IAAI4qI,EAAUzqI,KACd,OAAOulQ,EAAU/H,EAAW,SAAShS,GACnC,OAAO7zM,GAAM6zM,EAAU/gH,EAAS5qI,SAexC,SAAS2lQ,GAAcrhQ,EAAQshQ,GAG7B,IAAIC,GAFJD,EAAQA,IAAUhhQ,EAAY,IAAM87P,GAAakF,IAEzBthQ,OACxB,GAAIuhQ,EAAc,EAChB,OAAOA,EAAcjH,GAAWgH,EAAOthQ,GAAUshQ,EAEnD,IAAI7oO,EAAS6hO,GAAWgH,EAAOjV,GAAWrsP,EAASuqP,GAAW+W,KAC9D,OAAOrX,GAAWqX,GACdlE,GAAUpgB,GAAcvkN,GAAS,EAAGz4B,GAAQ6rC,KAAK,IACjDpT,EAAOpzB,MAAM,EAAGrF,GA6CtB,SAASwhQ,GAAY/Y,GACnB,OAAO,SAASzjP,EAAOC,EAAKo+F,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBu7J,GAAe55P,EAAOC,EAAKo+F,KAChEp+F,EAAMo+F,EAAO/iG,GAGf0E,EAAQy8P,GAASz8P,GACbC,IAAQ3E,GACV2E,EAAMD,EACNA,EAAQ,GAERC,EAAMw8P,GAASx8P,GA57CrB,SAAmBD,EAAOC,EAAKo+F,EAAMolJ,GAKnC,IAJA,IAAIjjP,GAAS,EACTxF,EAAS4sP,GAAUP,IAAYpnP,EAAMD,IAAUq+F,GAAQ,IAAK,GAC5D5qE,EAASryB,EAAMpG,GAEZA,KACLy4B,EAAOgwN,EAAYzoP,IAAWwF,GAASR,EACvCA,GAASq+F,EAEX,OAAO5qE,EAs7CEipO,CAAU18P,EAAOC,EADxBo+F,EAAOA,IAAS/iG,EAAa0E,EAAQC,EAAM,GAAK,EAAKw8P,GAASp+J,GAC3BolJ,IAWvC,SAASkZ,GAA0Bl6F,GACjC,OAAO,SAASrqK,EAAOs/G,GAKrB,MAJsB,iBAATt/G,GAAqC,iBAATs/G,IACvCt/G,EAAQwkQ,GAASxkQ,GACjBs/G,EAAQklJ,GAASllJ,IAEZ+qD,EAASrqK,EAAOs/G,IAqB3B,SAASmkJ,GAAc/tN,EAAMq+M,EAAS0Q,EAAUr7G,EAAalgB,EAASo3H,EAAUC,EAASwC,EAAQC,EAAKC,GACpG,IAAIyB,EArxKc,EAqxKJ3Q,EAMdA,GAAY2Q,EAAUliB,EAxxKI,GAJF,GA6xKxBuR,KAAa2Q,EAzxKa,GAyxKuBliB,MAG/CuR,IAAW,GAEb,IAAI4Q,EAAU,CACZjvN,EAAMq+M,EAAS7qH,EAVCw7H,EAAUpE,EAAWp9P,EAFtBwhQ,EAAUnE,EAAUr9P,EAGdwhQ,EAAUxhQ,EAAYo9P,EAFvBoE,EAAUxhQ,EAAYq9P,EAYzBwC,EAAQC,EAAKC,GAG5B5nO,EAASopO,EAASruN,MAAMlzC,EAAWyhQ,GAKvC,OAJIjC,GAAWhtN,IACbkvN,GAAQvpO,EAAQspO,GAElBtpO,EAAO+tH,YAAcA,EACdy7G,GAAgBxpO,EAAQqa,EAAMq+M,GAUvC,SAAS+Q,GAAY/8E,GACnB,IAAIryI,EAAO14B,GAAK+qK,GAChB,OAAO,SAAS5jK,EAAQ6nN,GAGtB,GAFA7nN,EAASqgP,GAASrgP,IAClB6nN,EAAyB,MAAbA,EAAoB,EAAIyjB,GAAU5yI,GAAUmvH,GAAY,OACnDqjB,GAAelrO,GAAS,CAGvC,IAAI4gP,GAAQr0O,GAASvM,GAAU,KAAKnD,MAAM,KAI1C,SADA+jP,GAAQr0O,GAFIglB,EAAKqvN,EAAK,GAAK,MAAQA,EAAK,GAAK/4B,KAEnB,KAAKhrN,MAAM,MACvB,GAAK,MAAQ+jP,EAAK,GAAK/4B,IAEvC,OAAOt2L,EAAKvxB,IAWhB,IAAI+6O,GAAc9yP,IAAQ,EAAI6gP,GAAW,IAAI7gP,GAAI,CAAC,EAAE,KAAK,IAAOs2O,EAAmB,SAASnwO,GAC1F,OAAO,IAAInG,GAAImG,IAD2D4gH,GAW5E,SAAS6xI,GAAcrN,GACrB,OAAO,SAAShM,GACd,IAAIx1O,EAAMk+O,GAAO1I,GACjB,OAAIx1O,GAAOktO,EACFyJ,GAAWnB,GAEhBx1O,GAAOutO,EACFwJ,GAAWvB,GAn6I1B,SAAqBA,EAAQn6N,GAC3B,OAAOk5N,GAASl5N,EAAO,SAASpW,GAC9B,MAAO,CAACA,EAAKuwO,EAAOvwO,MAm6IX6pP,CAAYtZ,EAAQgM,EAAShM,KA6BxC,SAASuZ,GAAWxvN,EAAMq+M,EAAS7qH,EAASo3H,EAAUC,EAASwC,EAAQC,EAAKC,GAC1E,IAAIG,EAl4KiB,EAk4KLrP,EAChB,IAAKqP,GAA4B,mBAAR1tN,EACvB,MAAM,IAAIzE,GAAUoxM,GAEtB,IAAIz/O,EAAS09P,EAAWA,EAAS19P,OAAS,EAS1C,GARKA,IACHmxP,IAAW,GACXuM,EAAWC,EAAUr9P,GAEvB8/P,EAAMA,IAAQ9/P,EAAY8/P,EAAMxT,GAAU3yI,GAAUmmJ,GAAM,GAC1DC,EAAQA,IAAU//P,EAAY+/P,EAAQpmJ,GAAUomJ,GAChDrgQ,GAAU29P,EAAUA,EAAQ39P,OAAS,EAx4KX,GA04KtBmxP,EAAmC,CACrC,IAAI8O,EAAgBvC,EAChBwC,EAAevC,EAEnBD,EAAWC,EAAUr9P,EAEvB,IAAIqL,EAAO60P,EAAYlgQ,EAAYu/P,GAAQ/sN,GAEvCivN,EAAU,CACZjvN,EAAMq+M,EAAS7qH,EAASo3H,EAAUC,EAASsC,EAAeC,EAC1DC,EAAQC,EAAKC,GAkBf,GAfI10P,GA26BN,SAAmBA,EAAMyW,GACvB,IAAI+uO,EAAUxlP,EAAK,GACf42P,EAAangP,EAAO,GACpBogP,EAAarR,EAAUoR,EAS3B,KAReC,EAAa,KAGxBD,GAAc1iB,GA50MA,GA40MmBsR,GACjCoR,GAAc1iB,GAx0MA,KAw0MmBsR,GAAgCxlP,EAAK,GAAG3L,QAAUoiB,EAAO,IAC5E,KAAdmgP,GAAqDngP,EAAO,GAAGpiB,QAAUoiB,EAAO,IA90MlE,GA80M0E+uO,GAI1F,OAAOxlP,EAr1MQ,EAw1Mb42P,IACF52P,EAAK,GAAKyW,EAAO,GAEjBogP,GA31Me,EA21MDrR,EAA2B,EAz1MnB,GA41MxB,IAAI/zP,EAAQglB,EAAO,GACnB,GAAIhlB,EAAO,CACT,IAAIsgQ,EAAW/xP,EAAK,GACpBA,EAAK,GAAK+xP,EAAWD,GAAYC,EAAUtgQ,EAAOglB,EAAO,IAAMhlB,EAC/DuO,EAAK,GAAK+xP,EAAWtT,GAAez+O,EAAK,GAAIg0O,GAAev9N,EAAO,IAGrEhlB,EAAQglB,EAAO,MAGbzW,EAAK,IADL+xP,EAAW/xP,EAAK,IACKwyP,GAAiBT,EAAUtgQ,EAAOglB,EAAO,IAAMhlB,EACpEuO,EAAK,GAAK+xP,EAAWtT,GAAez+O,EAAK,GAAIg0O,GAAev9N,EAAO,KAGrEhlB,EAAQglB,EAAO,MAEbzW,EAAK,GAAKvO,GAGRmlQ,EAAa1iB,IACfl0O,EAAK,GAAgB,MAAXA,EAAK,GAAayW,EAAO,GAAKyqO,GAAUlhP,EAAK,GAAIyW,EAAO,KAGrD,MAAXzW,EAAK,KACPA,EAAK,GAAKyW,EAAO,IAGnBzW,EAAK,GAAKyW,EAAO,GACjBzW,EAAK,GAAK62P,EA59BRC,CAAUV,EAASp2P,GAErBmnC,EAAOivN,EAAQ,GACf5Q,EAAU4Q,EAAQ,GAClBz7H,EAAUy7H,EAAQ,GAClBrE,EAAWqE,EAAQ,GACnBpE,EAAUoE,EAAQ,KAClB1B,EAAQ0B,EAAQ,GAAKA,EAAQ,KAAOzhQ,EAC/BkgQ,EAAY,EAAI1tN,EAAK9yC,OACtB4sP,GAAUmV,EAAQ,GAAK/hQ,EAAQ,KAEX,GAAVmxP,IACZA,IAAW,IAERA,GA56KY,GA46KDA,EAGd14N,EA56KgB,GA26KP04N,GA16Ka,IA06KiBA,EApgB3C,SAAqBr+M,EAAMq+M,EAASkP,GAClC,IAAIlO,EAAO+M,GAAWpsN,GAwBtB,OAtBA,SAASi6G,IAMP,IALA,IAAI/sJ,EAASmV,UAAUnV,OACnBtE,EAAO0K,EAAMpG,GACbwF,EAAQxF,EACRwmJ,EAAck6G,GAAU3zG,GAErBvnJ,KACL9J,EAAK8J,GAAS2P,UAAU3P,GAE1B,IAAIm4P,EAAW39P,EAAS,GAAKtE,EAAK,KAAO8qJ,GAAe9qJ,EAAKsE,EAAS,KAAOwmJ,EACzE,GACA4jG,GAAe1uP,EAAM8qJ,GAGzB,OADAxmJ,GAAU29P,EAAQ39P,QACLqgQ,EACJQ,GACL/tN,EAAMq+M,EAAS6O,GAAcjzG,EAAQvG,YAAalmJ,EAClD5E,EAAMiiQ,EAASr9P,EAAWA,EAAW+/P,EAAQrgQ,GAG1CwzC,GADG33C,MAAQA,OAASo/E,IAAQp/E,gBAAgBkxJ,EAAWolG,EAAOr/M,EACpDj3C,KAAMH,IA8edgnQ,CAAY5vN,EAAMq+M,EAASkP,GAC1BlP,GAAWvR,GAAgC,IAAXuR,GAAqDwM,EAAQ39P,OAG9FggQ,GAAaxsN,MAAMlzC,EAAWyhQ,GA9O3C,SAAuBjvN,EAAMq+M,EAAS7qH,EAASo3H,GAC7C,IAAI6C,EAtsKa,EAssKJpP,EACTgB,EAAO+M,GAAWpsN,GAkBtB,OAhBA,SAASi6G,IAQP,IAPA,IAAI8wG,GAAa,EACbC,EAAa3oP,UAAUnV,OACvBkzE,GAAa,EACb8qL,EAAaN,EAAS19P,OACtBtE,EAAO0K,EAAM43P,EAAaF,GAC1BjzP,EAAMhP,MAAQA,OAASo/E,IAAQp/E,gBAAgBkxJ,EAAWolG,EAAOr/M,IAE5DogC,EAAY8qL,GACnBtiQ,EAAKw3E,GAAawqL,EAASxqL,GAE7B,KAAO4qL,KACLpiQ,EAAKw3E,KAAe/9D,YAAY0oP,GAElC,OAAOrqN,GAAM3oC,EAAI01P,EAASj6H,EAAUzqI,KAAMH,IA0NjCinQ,CAAc7vN,EAAMq+M,EAAS7qH,EAASo3H,QAJ/C,IAAIjlO,EAhmBR,SAAoBqa,EAAMq+M,EAAS7qH,GACjC,IAAIi6H,EA90Ja,EA80JJpP,EACTgB,EAAO+M,GAAWpsN,GAMtB,OAJA,SAASi6G,IAEP,OADUlxJ,MAAQA,OAASo/E,IAAQp/E,gBAAgBkxJ,EAAWolG,EAAOr/M,GAC3DU,MAAM+sN,EAASj6H,EAAUzqI,KAAMsZ,YA0lB5BytP,CAAW9vN,EAAMq+M,EAAS7qH,GASzC,OAAO27H,IADMt2P,EAAOkvP,GAAcmH,IACJvpO,EAAQspO,GAAUjvN,EAAMq+M,GAexD,SAAS0R,GAAuBpS,EAAUoH,EAAUr/O,EAAKuwO,GACvD,OAAI0H,IAAanwP,GACZgwP,GAAGG,EAAU1F,GAAYvyO,MAAU+wB,GAAexY,KAAKg4N,EAAQvwO,GAC3Dq/O,EAEFpH,EAiBT,SAASqS,GAAoBrS,EAAUoH,EAAUr/O,EAAKuwO,EAAQ3mO,EAAQilH,GAOpE,OANI6/D,GAASupD,IAAavpD,GAAS2wD,KAEjCxwH,EAAMn3H,IAAI2nP,EAAUpH,GACpBmI,GAAUnI,EAAUoH,EAAUv3P,EAAWwiQ,GAAqBz7H,GAC9DA,EAAK,OAAWwwH,IAEXpH,EAYT,SAASsS,GAAgB3lQ,GACvB,OAAOm9O,GAAcn9O,GAASkD,EAAYlD,EAgB5C,SAASm5P,GAAY3hP,EAAO8nG,EAAOy0I,EAASC,EAAY2E,EAAW1uH,GACjE,IAAIyvH,EApgLmB,EAogLP3F,EACZ6R,EAAYpuP,EAAM5U,OAClBy1P,EAAY/4I,EAAM18G,OAEtB,GAAIgjQ,GAAavN,KAAeqB,GAAarB,EAAYuN,GACvD,OAAO,EAGT,IAAIC,EAAa57H,EAAMt5H,IAAI6G,GACvBsiP,EAAa7vH,EAAMt5H,IAAI2uG,GAC3B,GAAIumJ,GAAc/L,EAChB,OAAO+L,GAAcvmJ,GAASw6I,GAActiP,EAE9C,IAAIpP,GAAS,EACTizB,GAAS,EACT0/M,EAlhLqB,EAkhLbgZ,EAAoC,IAAIhC,GAAW7uP,EAM/D,IAJA+mI,EAAMn3H,IAAI0E,EAAO8nG,GACjB2qB,EAAMn3H,IAAIwsG,EAAO9nG,KAGRpP,EAAQw9P,GAAW,CAC1B,IAAIE,EAAWtuP,EAAMpP,GACjB4xP,EAAW16I,EAAMl3G,GAErB,GAAI4rP,EACF,IAAIiG,EAAWP,EACX1F,EAAWgG,EAAU8L,EAAU19P,EAAOk3G,EAAO9nG,EAAOyyH,GACpD+pH,EAAW8R,EAAU9L,EAAU5xP,EAAOoP,EAAO8nG,EAAO2qB,GAE1D,GAAIgwH,IAAa/2P,EAAW,CAC1B,GAAI+2P,EACF,SAEF5+N,GAAS,EACT,MAGF,GAAI0/M,GACF,IAAKgQ,GAAUzrI,EAAO,SAAS06I,EAAU1B,GACnC,IAAKnM,GAASpR,EAAMud,KACfwN,IAAa9L,GAAYrB,EAAUmN,EAAU9L,EAAUjG,EAASC,EAAY/pH,IAC/E,OAAO8wG,EAAK14O,KAAKi2P,KAEjB,CACNj9N,GAAS,EACT,YAEG,GACDyqO,IAAa9L,IACXrB,EAAUmN,EAAU9L,EAAUjG,EAASC,EAAY/pH,GACpD,CACL5uG,GAAS,EACT,OAKJ,OAFA4uG,EAAK,OAAWzyH,GAChByyH,EAAK,OAAW3qB,GACTjkF,EA0KT,SAAS8mO,GAASzsN,GAChB,OAAO0nN,GAAYC,GAAS3nN,EAAMxyC,EAAW6iQ,IAAUrwN,EAAO,IAUhE,SAASigN,GAAWhK,GAClB,OAAO+L,GAAe/L,EAAQzwO,GAAM25O,IAWtC,SAASa,GAAa/J,GACpB,OAAO+L,GAAe/L,EAAQgJ,GAAQF,IAUxC,IAAIgO,GAAW1S,GAAiB,SAASr6M,GACvC,OAAOq6M,GAAQp/O,IAAI+kC,IADIy9E,GAWzB,SAASovI,GAAY7sN,GAKnB,IAJA,IAAIra,EAAUqa,EAAK91C,KAAO,GACtB4X,EAAQw4O,GAAU30N,GAClBz4B,EAASupC,GAAexY,KAAKq8N,GAAW30N,GAAU7jB,EAAM5U,OAAS,EAE9DA,KAAU,CACf,IAAI2L,EAAOiJ,EAAM5U,GACbojQ,EAAYz3P,EAAKmnC,KACrB,GAAiB,MAAbswN,GAAqBA,GAAatwN,EACpC,OAAOnnC,EAAK3O,KAGhB,OAAOy7B,EAUT,SAASioO,GAAU5tN,GAEjB,OADavJ,GAAexY,KAAK+8N,GAAQ,eAAiBA,GAASh7M,GACrD0zG,YAchB,SAAS+yG,KACP,IAAI9gO,EAASq1N,GAAOzG,UAAYA,GAEhC,OADA5uN,EAASA,IAAW4uN,GAAW2Q,GAAev/N,EACvCtjB,UAAUnV,OAASy4B,EAAOtjB,UAAU,GAAIA,UAAU,IAAMsjB,EAWjE,SAASi7N,GAAWpuP,EAAKkT,GACvB,IAgYiBpb,EACbb,EAjYAoP,EAAOrG,EAAI8pP,SACf,OAiYgB,WADZ7yP,SADaa,EA/XAob,KAiYmB,UAARjc,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVa,EACU,OAAVA,GAlYDuO,EAAmB,iBAAP6M,EAAkB,SAAW,QACzC7M,EAAKrG,IAUX,SAASizP,GAAaxP,GAIpB,IAHA,IAAItwN,EAASngB,GAAKywO,GACd/oP,EAASy4B,EAAOz4B,OAEbA,KAAU,CACf,IAAIwY,EAAMigB,EAAOz4B,GACb5C,EAAQ2rP,EAAOvwO,GAEnBigB,EAAOz4B,GAAU,CAACwY,EAAKpb,EAAOs7P,GAAmBt7P,IAEnD,OAAOq7B,EAWT,SAASwzN,GAAUlD,EAAQvwO,GACzB,IAAIpb,EAlxJR,SAAkB2rP,EAAQvwO,GACxB,OAAiB,MAAVuwO,EAAiBzoP,EAAYyoP,EAAOvwO,GAixJ7Bm/G,CAASoxH,EAAQvwO,GAC7B,OAAOu/O,GAAa36P,GAASA,EAAQkD,EAqCvC,IAAI2xP,GAAc1F,GAA+B,SAASxD,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS1wO,GAAO0wO,GACTtB,GAAY8E,GAAiBxD,GAAS,SAASsa,GACpD,OAAO79H,GAAqBz0G,KAAKg4N,EAAQsa,OANRC,GAiBjCzR,GAAgBtF,GAA+B,SAASxD,GAE1D,IADA,IAAItwN,EAAS,GACNswN,GACLhB,GAAUtvN,EAAQw5N,GAAWlJ,IAC7BA,EAAS4C,GAAa5C,GAExB,OAAOtwN,GAN8B6qO,GAgBnC7R,GAASwD,GA2Eb,SAASsO,GAAQxa,EAAQ/7G,EAAMw2H,GAO7B,IAJA,IAAIh+P,GAAS,EACTxF,GAHJgtI,EAAO4nH,GAAS5nH,EAAM+7G,IAGJ/oP,OACdy4B,GAAS,IAEJjzB,EAAQxF,GAAQ,CACvB,IAAIwY,EAAMq8O,GAAM7nH,EAAKxnI,IACrB,KAAMizB,EAAmB,MAAVswN,GAAkBya,EAAQza,EAAQvwO,IAC/C,MAEFuwO,EAASA,EAAOvwO,GAElB,OAAIigB,KAAYjzB,GAASxF,EAChBy4B,KAETz4B,EAAmB,MAAV+oP,EAAiB,EAAIA,EAAO/oP,SAClByjQ,GAASzjQ,IAAW6vP,GAAQr3O,EAAKxY,KACjD6R,GAAQk3O,IAAW0G,GAAY1G,IA6BpC,SAAS6I,GAAgB7I,GACvB,MAAqC,mBAAtBA,EAAOh9M,aAA8BqsN,GAAYrP,GAE5D,GADAoF,GAAWxC,GAAa5C,IA8E9B,SAASuL,GAAcl3P,GACrB,OAAOyU,GAAQzU,IAAUqyP,GAAYryP,OAChCyuP,IAAoBzuP,GAASA,EAAMyuP,KAW1C,SAASgE,GAAQzyP,EAAO4C,GACtB,IAAIzD,SAAca,EAGlB,SAFA4C,EAAmB,MAAVA,EAAiBgX,EAAmBhX,KAGlC,UAARzD,GACU,UAARA,GAAoBgnP,GAAS1kO,KAAKzhB,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQ4C,EAajD,SAAS4+P,GAAexhQ,EAAOoI,EAAOujP,GACpC,IAAK7hD,GAAS6hD,GACZ,OAAO,EAET,IAAIxsP,SAAciJ,EAClB,SAAY,UAARjJ,EACKq9K,GAAYmvE,IAAW8G,GAAQrqP,EAAOujP,EAAO/oP,QACrC,UAARzD,GAAoBiJ,KAASujP,IAE7BuH,GAAGvH,EAAOvjP,GAAQpI,GAa7B,SAASq7P,GAAMr7P,EAAO2rP,GACpB,GAAIl3O,GAAQzU,GACV,OAAO,EAET,IAAIb,SAAca,EAClB,QAAY,UAARb,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATa,IAAiBu6O,GAASv6O,KAGvBmlP,EAAc1jO,KAAKzhB,KAAWklP,EAAazjO,KAAKzhB,IAC1C,MAAV2rP,GAAkB3rP,KAASib,GAAO0wO,GAyBvC,SAAS+W,GAAWhtN,GAClB,IAAI8sN,EAAWD,GAAY7sN,GACvB4pE,EAAQoxI,GAAO8R,GAEnB,GAAoB,mBAATljJ,KAAyBkjJ,KAAY5R,GAAYz/N,WAC1D,OAAO,EAET,GAAIukB,IAAS4pE,EACX,OAAO,EAET,IAAI/wG,EAAOk0P,GAAQnjJ,GACnB,QAAS/wG,GAAQmnC,IAASnnC,EAAK,IA7S5BkpK,IAAY48E,GAAO,IAAI58E,GAAS,IAAIL,YAAY,MAAQ0sE,GACxD53O,IAAOmoP,GAAO,IAAInoP,KAAQm3O,GAC1BrgP,IAAWqxP,GAAOrxP,GAAQC,YAAcugP,GACxCp3O,IAAOioP,GAAO,IAAIjoP,KAAQs3O,GAC1B3wO,IAAWshP,GAAO,IAAIthP,KAAY6wO,KACrCyQ,GAAS,SAASr0P,GAChB,IAAIq7B,EAASw8N,GAAW73P,GACpB+0P,EAAO15N,GAAUkoN,EAAYvjP,EAAM2uC,YAAczrC,EACjDojQ,EAAavR,EAAO7E,GAAS6E,GAAQ,GAEzC,GAAIuR,EACF,OAAQA,GACN,KAAKrW,GAAoB,OAAOnM,EAChC,KAAKqM,GAAe,OAAO9M,EAC3B,KAAK+M,GAAmB,OAAO5M,EAC/B,KAAK6M,GAAe,OAAO3M,EAC3B,KAAK4M,GAAmB,OAAO1M,EAGnC,OAAOvoN,IA+SX,IAAIkrO,GAAa3Y,GAAaljF,GAAa87F,GAS3C,SAASxL,GAAYh7P,GACnB,IAAI+0P,EAAO/0P,GAASA,EAAM2uC,YAG1B,OAAO3uC,KAFqB,mBAAR+0P,GAAsBA,EAAK5jO,WAAcw8N,IAa/D,SAAS2N,GAAmBt7P,GAC1B,OAAOA,GAAUA,IAAU8pM,GAAS9pM,GAYtC,SAASo7P,GAAwBhgP,EAAKq/O,GACpC,OAAO,SAAS9O,GACd,OAAc,MAAVA,GAGGA,EAAOvwO,KAASq/O,IACpBA,IAAav3P,GAAckY,KAAOH,GAAO0wO,KAsIhD,SAAS0R,GAAS3nN,EAAM9tC,EAAOw4B,GAE7B,OADAx4B,EAAQ4nP,GAAU5nP,IAAU1E,EAAawyC,EAAK9yC,OAAS,EAAKgF,EAAO,GAC5D,WAML,IALA,IAAItJ,EAAOyZ,UACP3P,GAAS,EACTxF,EAAS4sP,GAAUlxP,EAAKsE,OAASgF,EAAO,GACxC4P,EAAQxO,EAAMpG,KAETwF,EAAQxF,GACf4U,EAAMpP,GAAS9J,EAAKsJ,EAAQQ,GAE9BA,GAAS,EAET,IADA,IAAIq+P,EAAYz9P,EAAMpB,EAAQ,KACrBQ,EAAQR,GACf6+P,EAAUr+P,GAAS9J,EAAK8J,GAG1B,OADAq+P,EAAU7+P,GAASw4B,EAAU5oB,GACtB4+B,GAAMV,EAAMj3C,KAAMgoQ,IAY7B,SAASphO,GAAOsmN,EAAQ/7G,GACtB,OAAOA,EAAKhtI,OAAS,EAAI+oP,EAAS4L,GAAQ5L,EAAQkS,GAAUjuH,EAAM,GAAI,IAaxE,SAAS8zH,GAAQlsP,EAAOwlP,GAKtB,IAJA,IAAI4I,EAAYpuP,EAAM5U,OAClBA,EAAS6sP,GAAUuN,EAAQp6P,OAAQgjQ,GACnCc,EAAW5T,GAAUt7O,GAElB5U,KAAU,CACf,IAAIwF,EAAQ40P,EAAQp6P,GACpB4U,EAAM5U,GAAU6vP,GAAQrqP,EAAOw9P,GAAac,EAASt+P,GAASlF,EAEhE,OAAOsU,EAWT,SAASmkP,GAAQhQ,EAAQvwO,GACvB,IAAY,gBAARA,GAAgD,mBAAhBuwO,EAAOvwO,KAIhC,aAAPA,EAIJ,OAAOuwO,EAAOvwO,GAiBhB,IAAIwpP,GAAU+B,GAASlJ,IAUnBp6N,GAAa2rN,IAAiB,SAASt5M,EAAMogN,GAC/C,OAAOj4K,GAAKx6C,WAAWqS,EAAMogN,IAW3BsH,GAAcuJ,GAASjJ,IAY3B,SAASmH,GAAgBl1G,EAAS4C,EAAWwhG,GAC3C,IAAI/uO,EAAUutI,EAAY,GAC1B,OAAO6qG,GAAYztG,EA1brB,SAA2B3qI,EAAQ4hP,GACjC,IAAIhkQ,EAASgkQ,EAAQhkQ,OACrB,IAAKA,EACH,OAAOoiB,EAET,IAAI65E,EAAYj8F,EAAS,EAGzB,OAFAgkQ,EAAQ/nK,IAAcj8F,EAAS,EAAI,KAAO,IAAMgkQ,EAAQ/nK,GACxD+nK,EAAUA,EAAQn4N,KAAK7rC,EAAS,EAAI,KAAO,KACpCoiB,EAAO/kB,QAAQulP,GAAe,uBAAyBohB,EAAU,UAkb5CC,CAAkB7hP,EAqHhD,SAA2B4hP,EAAS7S,GAOlC,OANA7J,GAAUrH,EAAW,SAASkiB,GAC5B,IAAI/kQ,EAAQ,KAAO+kQ,EAAK,GACnBhR,EAAUgR,EAAK,KAAQxa,GAAcqc,EAAS5mQ,IACjD4mQ,EAAQvkQ,KAAKrC,KAGV4mQ,EAAQtsP,OA5HuCwsP,CAtjBxD,SAAwB9hP,GACtB,IAAI+qB,EAAQ/qB,EAAO+qB,MAAM01M,IACzB,OAAO11M,EAAQA,EAAM,GAAG/uB,MAAM0kO,IAAkB,GAojBwBqhB,CAAe/hP,GAAS+uO,KAYlG,SAAS4S,GAASjxN,GAChB,IAAI//B,EAAQ,EACRqxP,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQvX,KACRpS,EApiNK,IAoiNmB2pB,EAAQD,GAGpC,GADAA,EAAaC,EACT3pB,EAAY,GACd,KAAM3nO,GAziNE,IA0iNN,OAAOoC,UAAU,QAGnBpC,EAAQ,EAEV,OAAO+/B,EAAKU,MAAMlzC,EAAW6U,YAYjC,SAAS86O,GAAYr7O,EAAOonB,GAC1B,IAAIx2B,GAAS,EACTxF,EAAS4U,EAAM5U,OACfi8F,EAAYj8F,EAAS,EAGzB,IADAg8B,EAAOA,IAAS17B,EAAYN,EAASg8B,IAC5Bx2B,EAAQw2B,GAAM,CACrB,IAAIsoO,EAAOvU,GAAWvqP,EAAOy2F,GACzB7+F,EAAQwX,EAAM0vP,GAElB1vP,EAAM0vP,GAAQ1vP,EAAMpP,GACpBoP,EAAMpP,GAASpI,EAGjB,OADAwX,EAAM5U,OAASg8B,EACRpnB,EAUT,IAtTM6jB,GAOApoB,GA+SFomK,IAtTEh+I,GAASqkB,GAsTkB,SAAS9R,GACxC,IAAIvS,EAAS,GAOb,OAN6B,KAAzBuS,EAAOU,WAAW,IACpBjT,EAAOh5B,KAAK,IAEdurC,EAAO3tC,QAAQk5K,GAAY,SAASppI,EAAO5rB,EAAQm1J,EAAOC,GACxDl+I,EAAOh5B,KAAKi3K,EAAQC,EAAUt5K,QAAQm5K,GAAc,MAASj1J,GAAU4rB,KAElE1U,GA9ToB,SAASjgB,GAIlC,OAh0MiB,MA6zMbnI,GAAM2rB,MACR3rB,GAAM9D,QAEDiM,IAGLnI,GAAQooB,GAAOpoB,MACZooB,IAgUT,SAASo8N,GAAMz3P,GACb,GAAoB,iBAATA,GAAqBu6O,GAASv6O,GACvC,OAAOA,EAET,IAAIq7B,EAAUr7B,EAAQ,GACtB,MAAkB,KAAVq7B,GAAkB,EAAIr7B,IAAU,IAAa,KAAOq7B,EAU9D,SAAS60N,GAASx6M,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOm4M,GAAal6N,KAAK+hB,GACzB,MAAOhjB,IACT,IACE,OAAQgjB,EAAO,GACf,MAAOhjB,KAEX,MAAO,GA4BT,SAASo+N,GAAanhG,GACpB,GAAIA,aAAmBihG,GACrB,OAAOjhG,EAAQtN,QAEjB,IAAIhnH,EAAS,IAAIw1N,GAAclhG,EAAQuhG,YAAavhG,EAAQyhG,WAI5D,OAHA/1N,EAAO81N,YAAc2B,GAAUnjG,EAAQwhG,aACvC91N,EAAOg2N,UAAa1hG,EAAQ0hG,UAC5Bh2N,EAAOi2N,WAAa3hG,EAAQ2hG,WACrBj2N,EAsIT,IAAI8rO,GAAahK,GAAS,SAAS3lP,EAAOjF,GACxC,OAAOspP,GAAkBrkP,GACrBu+O,GAAev+O,EAAOw/O,GAAYzkP,EAAQ,EAAGspP,IAAmB,IAChE,KA6BFuL,GAAejK,GAAS,SAAS3lP,EAAOjF,GAC1C,IAAI03O,EAAWr0O,GAAKrD,GAIpB,OAHIspP,GAAkB5R,KACpBA,EAAW/mP,GAEN24P,GAAkBrkP,GACrBu+O,GAAev+O,EAAOw/O,GAAYzkP,EAAQ,EAAGspP,IAAmB,GAAOM,GAAYlS,EAAU,IAC7F,KA0BFod,GAAiBlK,GAAS,SAAS3lP,EAAOjF,GAC5C,IAAIkpC,EAAa7lC,GAAKrD,GAItB,OAHIspP,GAAkBpgN,KACpBA,EAAav4C,GAER24P,GAAkBrkP,GACrBu+O,GAAev+O,EAAOw/O,GAAYzkP,EAAQ,EAAGspP,IAAmB,GAAO34P,EAAWu4C,GAClF,KAsON,SAASmoE,GAAUpsG,EAAOsnB,EAAWgxH,GACnC,IAAIltJ,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIwF,EAAqB,MAAb0nJ,EAAoB,EAAIjzC,GAAUizC,GAI9C,OAHI1nJ,EAAQ,IACVA,EAAQonP,GAAU5sP,EAASwF,EAAO,IAE7BgjP,GAAc5zO,EAAO2kP,GAAYr9N,EAAW,GAAI12B,GAsCzD,SAASk/P,GAAc9vP,EAAOsnB,EAAWgxH,GACvC,IAAIltJ,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIwF,EAAQxF,EAAS,EAOrB,OANIktJ,IAAc5sJ,IAChBkF,EAAQy0G,GAAUizC,GAClB1nJ,EAAQ0nJ,EAAY,EAChB0/F,GAAU5sP,EAASwF,EAAO,GAC1BqnP,GAAUrnP,EAAOxF,EAAS,IAEzBwoP,GAAc5zO,EAAO2kP,GAAYr9N,EAAW,GAAI12B,GAAO,GAiBhE,SAAS29P,GAAQvuP,GAEf,OADsB,MAATA,GAAoBA,EAAM5U,OACvBo0P,GAAYx/O,EAAO,GAAK,GAgG1C,SAAS6xB,GAAK7xB,GACZ,OAAQA,GAASA,EAAM5U,OAAU4U,EAAM,GAAKtU,EA0E9C,IAAI0qG,GAAeuvJ,GAAS,SAAS/E,GACnC,IAAItpN,EAAS47M,GAAS0N,EAAQyH,IAC9B,OAAQ/wN,EAAOlsC,QAAUksC,EAAO,KAAOspN,EAAO,GAC1CD,GAAiBrpN,GACjB,KA0BFy4N,GAAiBpK,GAAS,SAAS/E,GACrC,IAAInO,EAAWr0O,GAAKwiP,GAChBtpN,EAAS47M,GAAS0N,EAAQyH,IAO9B,OALI5V,IAAar0O,GAAKk5B,GACpBm7M,EAAW/mP,EAEX4rC,EAAOpR,MAEDoR,EAAOlsC,QAAUksC,EAAO,KAAOspN,EAAO,GAC1CD,GAAiBrpN,EAAQqtN,GAAYlS,EAAU,IAC/C,KAwBFud,GAAmBrK,GAAS,SAAS/E,GACvC,IAAI38M,EAAa7lC,GAAKwiP,GAClBtpN,EAAS47M,GAAS0N,EAAQyH,IAM9B,OAJApkN,EAAkC,mBAAdA,EAA2BA,EAAav4C,IAE1D4rC,EAAOpR,MAEDoR,EAAOlsC,QAAUksC,EAAO,KAAOspN,EAAO,GAC1CD,GAAiBrpN,EAAQ5rC,EAAWu4C,GACpC,KAoCN,SAAS7lC,GAAK4B,GACZ,IAAI5U,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAOA,EAAS4U,EAAM5U,EAAS,GAAKM,EAuFtC,IAAIukQ,GAAOtK,GAASuK,IAsBpB,SAASA,GAAQlwP,EAAOjF,GACtB,OAAQiF,GAASA,EAAM5U,QAAU2P,GAAUA,EAAO3P,OAC9Ck6P,GAAYtlP,EAAOjF,GACnBiF,EAqFN,IAAImwP,GAASxF,GAAS,SAAS3qP,EAAOwlP,GACpC,IAAIp6P,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACnCy4B,EAASs4N,GAAOn8O,EAAOwlP,GAM3B,OAJAD,GAAWvlP,EAAOkzO,GAASsS,EAAS,SAAS50P,GAC3C,OAAOqqP,GAAQrqP,EAAOxF,IAAWwF,EAAQA,IACxCkS,KAAKmiP,KAEDphO,IA2ET,SAAS/yB,GAAQkP,GACf,OAAgB,MAATA,EAAgBA,EAAQq4O,GAAcl8N,KAAKnc,GAkapD,IAAIowP,GAAQzK,GAAS,SAAS/E,GAC5B,OAAO6G,GAASjI,GAAYoB,EAAQ,EAAGyD,IAAmB,MA0BxDgM,GAAU1K,GAAS,SAAS/E,GAC9B,IAAInO,EAAWr0O,GAAKwiP,GAIpB,OAHIyD,GAAkB5R,KACpBA,EAAW/mP,GAEN+7P,GAASjI,GAAYoB,EAAQ,EAAGyD,IAAmB,GAAOM,GAAYlS,EAAU,MAwBrF6d,GAAY3K,GAAS,SAAS/E,GAChC,IAAI38M,EAAa7lC,GAAKwiP,GAEtB,OADA38M,EAAkC,mBAAdA,EAA2BA,EAAav4C,EACrD+7P,GAASjI,GAAYoB,EAAQ,EAAGyD,IAAmB,GAAO34P,EAAWu4C,KAgG9E,SAASssN,GAAMvwP,GACb,IAAMA,IAASA,EAAM5U,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANA4U,EAAQ6yO,GAAY7yO,EAAO,SAAS8hI,GAClC,GAAIuiH,GAAkBviH,GAEpB,OADA12I,EAAS4sP,GAAUl2G,EAAM12I,OAAQA,IAC1B,IAGJkpP,GAAUlpP,EAAQ,SAASwF,GAChC,OAAOsiP,GAASlzO,EAAOyzO,GAAa7iP,MAyBxC,SAAS4/P,GAAUxwP,EAAOyyO,GACxB,IAAMzyO,IAASA,EAAM5U,OACnB,MAAO,GAET,IAAIy4B,EAAS0sO,GAAMvwP,GACnB,OAAgB,MAAZyyO,EACK5uN,EAEFqvN,GAASrvN,EAAQ,SAASi+G,GAC/B,OAAOljG,GAAM6zM,EAAU/mP,EAAWo2I,KAwBtC,IAAI2uH,GAAU9K,GAAS,SAAS3lP,EAAOjF,GACrC,OAAOspP,GAAkBrkP,GACrBu+O,GAAev+O,EAAOjF,GACtB,KAqBF21P,GAAM/K,GAAS,SAAS/E,GAC1B,OAAOqH,GAAQpV,GAAY+N,EAAQyD,OA0BjCsM,GAAQhL,GAAS,SAAS/E,GAC5B,IAAInO,EAAWr0O,GAAKwiP,GAIpB,OAHIyD,GAAkB5R,KACpBA,EAAW/mP,GAENu8P,GAAQpV,GAAY+N,EAAQyD,IAAoBM,GAAYlS,EAAU,MAwB3Eme,GAAUjL,GAAS,SAAS/E,GAC9B,IAAI38M,EAAa7lC,GAAKwiP,GAEtB,OADA38M,EAAkC,mBAAdA,EAA2BA,EAAav4C,EACrDu8P,GAAQpV,GAAY+N,EAAQyD,IAAoB34P,EAAWu4C,KAmBhE4sN,GAAMlL,GAAS4K,IA6DfO,GAAUnL,GAAS,SAAS/E,GAC9B,IAAIx1P,EAASw1P,EAAOx1P,OAChBqnP,EAAWrnP,EAAS,EAAIw1P,EAAOx1P,EAAS,GAAKM,EAGjD,OADA+mP,EAA8B,mBAAZA,GAA0BmO,EAAO16N,MAAOusN,GAAY/mP,EAC/D8kQ,GAAU5P,EAAQnO,KAkC3B,SAASse,GAAMvoQ,GACb,IAAIq7B,EAASq1N,GAAO1wP,GAEpB,OADAq7B,EAAO+1N,WAAY,EACZ/1N,EAsDT,SAASinO,GAAKtiQ,EAAOwoQ,GACnB,OAAOA,EAAYxoQ,GAmBrB,IAAIyoQ,GAAYtG,GAAS,SAAS/3H,GAChC,IAAIxnI,EAASwnI,EAAMxnI,OACfgF,EAAQhF,EAASwnI,EAAM,GAAK,EAC5BpqI,EAAQvB,KAAKyyP,YACbsX,EAAc,SAAS7c,GAAU,OAAOgI,GAAOhI,EAAQvhH,IAE3D,QAAIxnI,EAAS,GAAKnE,KAAK0yP,YAAYvuP,SAC7B5C,aAAiB4wP,IAAiB6B,GAAQ7qP,KAGhD5H,EAAQA,EAAMiI,MAAML,GAAQA,GAAShF,EAAS,EAAI,KAC5CuuP,YAAY9uP,KAAK,CACrB,KAAQigQ,GACR,KAAQ,CAACkG,GACT,QAAWtlQ,IAEN,IAAI2tP,GAAc7wP,EAAOvB,KAAK2yP,WAAWkR,KAAK,SAAS9qP,GAI5D,OAHI5U,IAAW4U,EAAM5U,QACnB4U,EAAMnV,KAAKa,GAENsU,KAZA/Y,KAAK6jQ,KAAKkG,KA+PjBE,GAAUtH,GAAiB,SAAS/lO,EAAQr7B,EAAOob,GACjD+wB,GAAexY,KAAK0H,EAAQjgB,KAC5BigB,EAAOjgB,GAET+3O,GAAgB93N,EAAQjgB,EAAK,KAuI7BtX,GAAOk+P,GAAWp+I,IAqBlB+kJ,GAAW3G,GAAWsF,IA2G1B,SAASx1P,GAAQ4rJ,EAAYusF,GAE3B,OADWx1O,GAAQipJ,GAAcwsF,GAAYsJ,IACjC91F,EAAYy+F,GAAYlS,EAAU,IAuBhD,SAAS2e,GAAalrG,EAAYusF,GAEhC,OADWx1O,GAAQipJ,GAAcysF,GAAiBwM,IACtCj5F,EAAYy+F,GAAYlS,EAAU,IA0BhD,IAAI3hF,GAAU84F,GAAiB,SAAS/lO,EAAQr7B,EAAOob,GACjD+wB,GAAexY,KAAK0H,EAAQjgB,GAC9BigB,EAAOjgB,GAAK/Y,KAAKrC,GAEjBmzP,GAAgB93N,EAAQjgB,EAAK,CAACpb,MAsE9B6oQ,GAAY1L,GAAS,SAASz/F,EAAY9tB,EAAMtxI,GAClD,IAAI8J,GAAS,EACTksP,EAAwB,mBAAR1kH,EAChBv0G,EAASmhJ,GAAY9e,GAAc10J,EAAM00J,EAAW96J,QAAU,GAKlE,OAHA4wP,GAAS91F,EAAY,SAAS19J,GAC5Bq7B,IAASjzB,GAASksP,EAASl+M,GAAMw5F,EAAM5vI,EAAO1B,GAAQk6P,GAAWx4P,EAAO4vI,EAAMtxI,KAEzE+8B,IA+BLytO,GAAQ1H,GAAiB,SAAS/lO,EAAQr7B,EAAOob,GACnD+3O,GAAgB93N,EAAQjgB,EAAKpb,KA6C/B,SAASkI,GAAIw1J,EAAYusF,GAEvB,OADWx1O,GAAQipJ,GAAcgtF,GAAWwQ,IAChCx9F,EAAYy+F,GAAYlS,EAAU,IAkFhD,IAAI8e,GAAY3H,GAAiB,SAAS/lO,EAAQr7B,EAAOob,GACvDigB,EAAOjgB,EAAM,EAAI,GAAG/Y,KAAKrC,IACxB,WAAa,MAAO,CAAC,GAAI,MAmSxBgpQ,GAAS7L,GAAS,SAASz/F,EAAYu+F,GACzC,GAAkB,MAAdv+F,EACF,MAAO,GAET,IAAI96J,EAASq5P,EAAUr5P,OAMvB,OALIA,EAAS,GAAK4+P,GAAe9jG,EAAYu+F,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHr5P,EAAS,GAAK4+P,GAAevF,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAYt+F,EAAYs5F,GAAYiF,EAAW,GAAI,MAqBxDzxM,GAAMukM,IAAU,WAClB,OAAOlxK,GAAK1kC,KAAKqR,OA0DnB,SAASw4M,GAAIttN,EAAMc,EAAG22H,GAGpB,OAFA32H,EAAI22H,EAAQjqK,EAAYszC,EAEjB0uN,GAAWxvN,EAAM+sM,EAAev/O,EAAWA,EAAWA,EAAWA,EADxEszC,EAAKd,GAAa,MAALc,EAAad,EAAK9yC,OAAS4zC,GAqB1C,SAAS2M,GAAO3M,EAAGd,GACjB,IAAIra,EACJ,GAAmB,mBAARqa,EACT,MAAM,IAAIzE,GAAUoxM,GAGtB,OADA7rM,EAAIqmE,GAAUrmE,GACP,WAOL,QANMA,EAAI,IACRnb,EAASqa,EAAKU,MAAM33C,KAAMsZ,YAExBy+B,GAAK,IACPd,EAAOxyC,GAEFm4B,GAuCX,IAAI2N,GAAOm0N,GAAS,SAASznN,EAAMwzF,EAASo3H,GAC1C,IAAIvM,EAv4Ta,EAw4TjB,GAAIuM,EAAS19P,OAAQ,CACnB,IAAI29P,EAAUvT,GAAesT,EAAUgD,GAAUt6N,KACjD+qN,GAAWvR,EAEb,OAAO0iB,GAAWxvN,EAAMq+M,EAAS7qH,EAASo3H,EAAUC,KAgDlD0I,GAAU9L,GAAS,SAASxR,EAAQvwO,EAAKklP,GAC3C,IAAIvM,EAAUmV,EACd,GAAI5I,EAAS19P,OAAQ,CACnB,IAAI29P,EAAUvT,GAAesT,EAAUgD,GAAU2F,KACjDlV,GAAWvR,EAEb,OAAO0iB,GAAW9pP,EAAK24O,EAASpI,EAAQ2U,EAAUC,KAsJpD,SAASv1D,GAASt1J,EAAMogN,EAAMrvO,GAC5B,IAAI0iP,EACAC,EACAC,EACAhuO,EACAiuO,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACT/H,GAAW,EAEf,GAAmB,mBAARjsN,EACT,MAAM,IAAIzE,GAAUoxM,GAUtB,SAASsnB,EAAWrjM,GAClB,IAAIhoE,EAAO6qQ,EACPjgI,EAAUkgI,EAKd,OAHAD,EAAWC,EAAWlmQ,EACtBsmQ,EAAiBljM,EACjBjrC,EAASqa,EAAKU,MAAM8yF,EAAS5qI,GAI/B,SAASsrQ,EAAYtjM,GAMnB,OAJAkjM,EAAiBljM,EAEjBgjM,EAAUjmO,GAAWwmO,EAAc/T,GAE5B2T,EAAUE,EAAWrjM,GAAQjrC,EAatC,SAASyuO,EAAaxjM,GACpB,IAAIyjM,EAAoBzjM,EAAOijM,EAM/B,OAAQA,IAAiBrmQ,GAAc6mQ,GAAqBjU,GACzDiU,EAAoB,GAAOL,GANJpjM,EAAOkjM,GAM8BH,EAGjE,SAASQ,IACP,IAAIvjM,EAAO9b,KACX,GAAIs/M,EAAaxjM,GACf,OAAO0jM,EAAa1jM,GAGtBgjM,EAAUjmO,GAAWwmO,EA3BvB,SAAuBvjM,GACrB,IAEI2jM,EAAcnU,GAFMxvL,EAAOijM,GAI/B,OAAOG,EACHja,GAAUwa,EAAaZ,GAJD/iM,EAAOkjM,IAK7BS,EAoB+BC,CAAc5jM,IAGnD,SAAS0jM,EAAa1jM,GAKpB,OAJAgjM,EAAUpmQ,EAINy+P,GAAYwH,EACPQ,EAAWrjM,IAEpB6iM,EAAWC,EAAWlmQ,EACfm4B,GAeT,SAAS8uO,IACP,IAAI7jM,EAAO9b,KACP4/M,EAAaN,EAAaxjM,GAM9B,GAJA6iM,EAAWpxP,UACXqxP,EAAW3qQ,KACX8qQ,EAAejjM,EAEX8jM,EAAY,CACd,GAAId,IAAYpmQ,EACd,OAAO0mQ,EAAYL,GAErB,GAAIG,EAIF,OAFA/mO,GAAa2mO,GACbA,EAAUjmO,GAAWwmO,EAAc/T,GAC5B6T,EAAWJ,GAMtB,OAHID,IAAYpmQ,IACdomQ,EAAUjmO,GAAWwmO,EAAc/T,IAE9Bz6N,EAIT,OA3GAy6N,EAAO0O,GAAS1O,IAAS,EACrBhsD,GAASrjL,KACXgjP,IAAYhjP,EAAQgjP,QAEpBJ,GADAK,EAAS,YAAajjP,GACH+oO,GAAUgV,GAAS/9O,EAAQ4iP,UAAY,EAAGvT,GAAQuT,EACrE1H,EAAW,aAAcl7O,IAAYA,EAAQk7O,SAAWA,GAoG1DwI,EAAUE,OApCV,WACMf,IAAYpmQ,GACdy/B,GAAa2mO,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,EAAUpmQ,GAgCjDinQ,EAAUv/H,MA7BV,WACE,OAAO0+H,IAAYpmQ,EAAYm4B,EAAS2uO,EAAax/M,OA6BhD2/M,EAqBT,IAAIG,GAAQnN,GAAS,SAASznN,EAAMp3C,GAClC,OAAOu3P,GAAUngN,EAAM,EAAGp3C,KAsBxButF,GAAQsxK,GAAS,SAASznN,EAAMogN,EAAMx3P,GACxC,OAAOu3P,GAAUngN,EAAM8uN,GAAS1O,IAAS,EAAGx3P,KAqE9C,SAASohD,GAAQhK,EAAM60N,GACrB,GAAmB,mBAAR70N,GAAmC,MAAZ60N,GAAuC,mBAAZA,EAC3D,MAAM,IAAIt5N,GAAUoxM,GAEtB,IAAImoB,EAAW,WACb,IAAIlsQ,EAAOyZ,UACPqD,EAAMmvP,EAAWA,EAASn0N,MAAM33C,KAAMH,GAAQA,EAAK,GACnD2U,EAAQu3P,EAASv3P,MAErB,GAAIA,EAAMJ,IAAIuI,GACZ,OAAOnI,EAAMtC,IAAIyK,GAEnB,IAAIigB,EAASqa,EAAKU,MAAM33C,KAAMH,GAE9B,OADAksQ,EAASv3P,MAAQA,EAAMH,IAAIsI,EAAKigB,IAAWpoB,EACpCooB,GAGT,OADAmvO,EAASv3P,MAAQ,IAAKysC,GAAQ+qN,OAAS3Y,IAChC0Y,EA0BT,SAASzvD,GAAOj8K,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAImS,GAAUoxM,GAEtB,OAAO,WACL,IAAI/jP,EAAOyZ,UACX,OAAQzZ,EAAKsE,QACX,KAAK,EAAG,OAAQk8B,EAAUnL,KAAKl1B,MAC/B,KAAK,EAAG,OAAQqgC,EAAUnL,KAAKl1B,KAAMH,EAAK,IAC1C,KAAK,EAAG,OAAQwgC,EAAUnL,KAAKl1B,KAAMH,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQwgC,EAAUnL,KAAKl1B,KAAMH,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQwgC,EAAUsX,MAAM33C,KAAMH,IAlClCohD,GAAQ+qN,MAAQ3Y,GA2FhB,IAAI4Y,GAAW3K,GAAS,SAASrqN,EAAMi1N,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAW/nQ,QAAe6R,GAAQk2P,EAAW,IACvDjgB,GAASigB,EAAW,GAAI1e,GAAUkQ,OAClCzR,GAASsM,GAAY2T,EAAY,GAAI1e,GAAUkQ,QAEtBv5P,OAC7B,OAAOu6P,GAAS,SAAS7+P,GAIvB,IAHA,IAAI8J,GAAS,EACTxF,EAAS6sP,GAAUnxP,EAAKsE,OAAQgoQ,KAE3BxiQ,EAAQxF,GACftE,EAAK8J,GAASuiQ,EAAWviQ,GAAOurB,KAAKl1B,KAAMH,EAAK8J,IAElD,OAAOguC,GAAMV,EAAMj3C,KAAMH,OAqCzBusQ,GAAU1N,GAAS,SAASznN,EAAM4qN,GACpC,IAAIC,EAAUvT,GAAesT,EAAUgD,GAAUuH,KACjD,OAAO3F,GAAWxvN,EAAM8sM,EAAmBt/O,EAAWo9P,EAAUC,KAmC9DuK,GAAe3N,GAAS,SAASznN,EAAM4qN,GACzC,IAAIC,EAAUvT,GAAesT,EAAUgD,GAAUwH,KACjD,OAAO5F,GAAWxvN,EAvgVQ,GAugVuBxyC,EAAWo9P,EAAUC,KAyBpEwK,GAAQ5I,GAAS,SAASzsN,EAAMsnN,GAClC,OAAOkI,GAAWxvN,EA/hVA,IA+hVuBxyC,EAAWA,EAAWA,EAAW85P,KAia5E,SAAS9J,GAAGlzP,EAAOs/G,GACjB,OAAOt/G,IAAUs/G,GAAUt/G,GAAUA,GAASs/G,GAAUA,EA0B1D,IAAImsG,GAAK84C,GAA0BvM,IAyB/BgT,GAAMzG,GAA0B,SAASvkQ,EAAOs/G,GAClD,OAAOt/G,GAASs/G,IAqBd+yI,GAAcoG,GAAgB,WAAa,OAAO1gP,UAApB,IAAsC0gP,GAAkB,SAASz4P,GACjG,OAAO2wP,GAAa3wP,IAAUmsC,GAAexY,KAAK3zB,EAAO,YACtDooI,GAAqBz0G,KAAK3zB,EAAO,WA0BlCyU,GAAUzL,EAAMyL,QAmBhB+0O,GAAgBD,GAAoB0C,GAAU1C,IA75PlD,SAA2BvpP,GACzB,OAAO2wP,GAAa3wP,IAAU63P,GAAW73P,IAAU6jP,GAu7PrD,SAASrnE,GAAYx8K,GACnB,OAAgB,MAATA,GAAiBqmQ,GAASrmQ,EAAM4C,UAAY8nK,GAAW1qK,GA4BhE,SAAS67P,GAAkB77P,GACzB,OAAO2wP,GAAa3wP,IAAUw8K,GAAYx8K,GA0C5C,IAAI0uC,GAAW0gN,IAAkBoX,GAmB7BvpB,GAASwM,GAAawC,GAAUxC,IAxgQpC,SAAoBzpP,GAClB,OAAO2wP,GAAa3wP,IAAU63P,GAAW73P,IAAUijP,GA+qQrD,SAAS/G,GAAQl8O,GACf,IAAK2wP,GAAa3wP,GAChB,OAAO,EAET,IAAImW,EAAM0hP,GAAW73P,GACrB,OAAOmW,GAAO+sO,GA9yWF,yBA8yWc/sO,GACC,iBAAjBnW,EAAMy4B,SAA4C,iBAAdz4B,EAAMJ,OAAqBu9O,GAAcn9O,GAkDzF,SAAS0qK,GAAW1qK,GAClB,IAAK8pM,GAAS9pM,GACZ,OAAO,EAIT,IAAImW,EAAM0hP,GAAW73P,GACrB,OAAOmW,GAAOgtO,GAAWhtO,GAAOitO,GA32WrB,0BA22W+BjtO,GA/1W/B,kBA+1WkDA,EA6B/D,SAAS6mG,GAAUh9G,GACjB,MAAuB,iBAATA,GAAqBA,GAAS68G,GAAU78G,GA6BxD,SAASqmQ,GAASrmQ,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS4Z,EA4B7C,SAASkwL,GAAS9pM,GAChB,IAAIb,SAAca,EAClB,OAAgB,MAATA,IAA0B,UAARb,GAA4B,YAARA,GA2B/C,SAASwxP,GAAa3wP,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAoBjC,IAAIo8O,GAAQsN,GAAYuC,GAAUvC,IA5xQlC,SAAmB1pP,GACjB,OAAO2wP,GAAa3wP,IAAUq0P,GAAOr0P,IAAUqjP,GA6+QjD,SAAStmI,GAAS/8G,GAChB,MAAuB,iBAATA,GACX2wP,GAAa3wP,IAAU63P,GAAW73P,IAAUsjP,EA+BjD,SAASnG,GAAcn9O,GACrB,IAAK2wP,GAAa3wP,IAAU63P,GAAW73P,IAAUujP,EAC/C,OAAO,EAET,IAAIlkE,EAAQkvE,GAAavuP,GACzB,GAAc,OAAVq/K,EACF,OAAO,EAET,IAAI01E,EAAO5oN,GAAexY,KAAK0rJ,EAAO,gBAAkBA,EAAM1wI,YAC9D,MAAsB,mBAARomN,GAAsBA,aAAgBA,GAClDlH,GAAal6N,KAAKohO,IAAS7G,GAoB/B,IAAIt/M,GAAW+6M,GAAesC,GAAUtC,IA59QxC,SAAsB3pP,GACpB,OAAO2wP,GAAa3wP,IAAU63P,GAAW73P,IAAUyjP,GA6gRjDlH,GAAQqN,GAAYqC,GAAUrC,IAngRlC,SAAmB5pP,GACjB,OAAO2wP,GAAa3wP,IAAUq0P,GAAOr0P,IAAU0jP,GAqhRjD,SAAS3G,GAAS/8O,GAChB,MAAuB,iBAATA,IACVyU,GAAQzU,IAAU2wP,GAAa3wP,IAAU63P,GAAW73P,IAAUq9O,EAoBpE,SAAS9C,GAASv6O,GAChB,MAAuB,iBAATA,GACX2wP,GAAa3wP,IAAU63P,GAAW73P,IAAU2jP,EAoBjD,IAAImG,GAAeD,GAAmBoC,GAAUpC,IAvjRhD,SAA0B7pP,GACxB,OAAO2wP,GAAa3wP,IAClBqmQ,GAASrmQ,EAAM4C,WAAa6lP,GAAeoP,GAAW73P,KA6oRtDqqN,GAAKk6C,GAA0BtJ,IAyB/BgQ,GAAM1G,GAA0B,SAASvkQ,EAAOs/G,GAClD,OAAOt/G,GAASs/G,IA0BlB,SAAS34F,GAAQ3mB,GACf,IAAKA,EACH,MAAO,GAET,GAAIw8K,GAAYx8K,GACd,OAAO+8O,GAAS/8O,GAAS4/O,GAAc5/O,GAAS8yP,GAAU9yP,GAE5D,GAAI2uP,IAAe3uP,EAAM2uP,IACvB,OAv8VN,SAAyBlrH,GAIvB,IAHA,IAAIl1H,EACA8sB,EAAS,KAEJ9sB,EAAOk1H,EAASnhI,QAAQ+wB,MAC/BgI,EAAOh5B,KAAKkM,EAAKvO,OAEnB,OAAOq7B,EAg8VI6vO,CAAgBlrQ,EAAM2uP,OAE/B,IAAIx4O,EAAMk+O,GAAOr0P,GAGjB,OAFWmW,GAAOktO,EAASyJ,GAAc32O,GAAOutO,EAASuJ,GAAa16O,IAE1DvS,GA0Bd,SAASqkQ,GAASrkQ,GAChB,OAAKA,GAGLA,EAAQwkQ,GAASxkQ,MACH0iP,GAAY1iP,KAAU,IAxkYtB,uBAykYAA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,EAoCjC,SAAS68G,GAAU78G,GACjB,IAAIq7B,EAASgpO,GAASrkQ,GAClBmrQ,EAAY9vO,EAAS,EAEzB,OAAOA,GAAWA,EAAU8vO,EAAY9vO,EAAS8vO,EAAY9vO,EAAU,EA8BzE,SAAS+vO,GAASprQ,GAChB,OAAOA,EAAQ+yP,GAAUl2I,GAAU78G,GAAQ,EAAG4iP,GAAoB,EA0BpE,SAAS4hB,GAASxkQ,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIu6O,GAASv6O,GACX,OAAO2iP,EAET,GAAI74C,GAAS9pM,GAAQ,CACnB,IAAIs/G,EAAgC,mBAAjBt/G,EAAMu3C,QAAwBv3C,EAAMu3C,UAAYv3C,EACnEA,EAAQ8pM,GAASxqF,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATt/G,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ+rP,GAAS/rP,GACjB,IAAIqrQ,EAAWrlB,GAAWvkO,KAAKzhB,GAC/B,OAAQqrQ,GAAYnlB,GAAUzkO,KAAKzhB,GAC/B6oP,GAAa7oP,EAAMiI,MAAM,GAAIojQ,EAAW,EAAI,GAC3CtlB,GAAWtkO,KAAKzhB,GAAS2iP,GAAO3iP,EA2BvC,SAAS6nE,GAAc7nE,GACrB,OAAO0zP,GAAW1zP,EAAO20P,GAAO30P,IAsDlC,SAAS0wB,GAAS1wB,GAChB,OAAgB,MAATA,EAAgB,GAAKg/P,GAAah/P,GAqC3C,IAAIwlC,GAAS87N,GAAe,SAAS3V,EAAQ3mO,GAC3C,GAAIg2O,GAAYh2O,IAAWw3J,GAAYx3J,GACrC0uO,GAAW1uO,EAAQ9J,GAAK8J,GAAS2mO,QAGnC,IAAK,IAAIvwO,KAAO4J,EACVmnB,GAAexY,KAAK3O,EAAQ5J,IAC9Bg4O,GAAYzH,EAAQvwO,EAAK4J,EAAO5J,MAoClCkwP,GAAWhK,GAAe,SAAS3V,EAAQ3mO,GAC7C0uO,GAAW1uO,EAAQ2vO,GAAO3vO,GAAS2mO,KAgCjC4f,GAAejK,GAAe,SAAS3V,EAAQ3mO,EAAQy2O,EAAUzH,GACnEN,GAAW1uO,EAAQ2vO,GAAO3vO,GAAS2mO,EAAQqI,KA+BzCwX,GAAalK,GAAe,SAAS3V,EAAQ3mO,EAAQy2O,EAAUzH,GACjEN,GAAW1uO,EAAQ9J,GAAK8J,GAAS2mO,EAAQqI,KAoBvCj9G,GAAKorH,GAASxO,IA8DdnuO,GAAW23O,GAAS,SAASxR,EAAQ1lL,GACvC0lL,EAAS1wO,GAAO0wO,GAEhB,IAAIvjP,GAAS,EACTxF,EAASqjE,EAAQrjE,OACjBuqK,EAAQvqK,EAAS,EAAIqjE,EAAQ,GAAK/iE,EAMtC,IAJIiqK,GAASq0F,GAAev7L,EAAQ,GAAIA,EAAQ,GAAIknG,KAClDvqK,EAAS,KAGFwF,EAAQxF,GAMf,IALA,IAAIoiB,EAASihD,EAAQ79D,GACjBopB,EAAQmjO,GAAO3vO,GACfymP,GAAc,EACdC,EAAcl6O,EAAM5uB,SAEf6oQ,EAAaC,GAAa,CACjC,IAAItwP,EAAMoW,EAAMi6O,GACZzrQ,EAAQ2rP,EAAOvwO,IAEfpb,IAAUkD,GACTgwP,GAAGlzP,EAAO2tP,GAAYvyO,MAAU+wB,GAAexY,KAAKg4N,EAAQvwO,MAC/DuwO,EAAOvwO,GAAO4J,EAAO5J,IAK3B,OAAOuwO,IAsBLggB,GAAexO,GAAS,SAAS7+P,GAEnC,OADAA,EAAK+D,KAAKa,EAAWwiQ,IACdtvN,GAAMw1N,GAAW1oQ,EAAW5E,KAgSrC,SAASqS,GAAIg7O,EAAQ/7G,EAAMzsB,GACzB,IAAI9nF,EAAmB,MAAVswN,EAAiBzoP,EAAYq0P,GAAQ5L,EAAQ/7G,GAC1D,OAAOv0G,IAAWn4B,EAAYigH,EAAe9nF,EA4D/C,SAASkgO,GAAM5P,EAAQ/7G,GACrB,OAAiB,MAAV+7G,GAAkBwa,GAAQxa,EAAQ/7G,EAAMsoH,IAqBjD,IAAI2T,GAASlI,GAAe,SAAStoO,EAAQr7B,EAAOob,GACrC,MAATpb,GACyB,mBAAlBA,EAAM0wB,WACf1wB,EAAQiuP,GAAqBt6N,KAAK3zB,IAGpCq7B,EAAOr7B,GAASob,GACfuiP,GAASh4M,KA4BRmmN,GAAWnI,GAAe,SAAStoO,EAAQr7B,EAAOob,GACvC,MAATpb,GACyB,mBAAlBA,EAAM0wB,WACf1wB,EAAQiuP,GAAqBt6N,KAAK3zB,IAGhCmsC,GAAexY,KAAK0H,EAAQr7B,GAC9Bq7B,EAAOr7B,GAAOqC,KAAK+Y,GAEnBigB,EAAOr7B,GAAS,CAACob,IAElB+gP,IAoBC4P,GAAS5O,GAAS3E,IA8BtB,SAASt9O,GAAKywO,GACZ,OAAOnvE,GAAYmvE,GAAUuG,GAAcvG,GAAUoP,GAASpP,GA0BhE,SAASgJ,GAAOhJ,GACd,OAAOnvE,GAAYmvE,GAAUuG,GAAcvG,GAAQ,GAloTrD,SAAoBA,GAClB,IAAK7hD,GAAS6hD,GACZ,OA09FJ,SAAsBA,GACpB,IAAItwN,EAAS,GACb,GAAc,MAAVswN,EACF,IAAK,IAAIvwO,KAAOH,GAAO0wO,GACrBtwN,EAAOh5B,KAAK+Y,GAGhB,OAAOigB,EAj+FE2wO,CAAargB,GAEtB,IAAIsgB,EAAUjR,GAAYrP,GACtBtwN,EAAS,GAEb,IAAK,IAAIjgB,KAAOuwO,GACD,eAAPvwO,IAAyB6wP,GAAY9/N,GAAexY,KAAKg4N,EAAQvwO,KACrEigB,EAAOh5B,KAAK+Y,GAGhB,OAAOigB,EAsnToD6wO,CAAWvgB,GAuGxE,IAAI7vO,GAAQwlP,GAAe,SAAS3V,EAAQ3mO,EAAQy2O,GAClDD,GAAU7P,EAAQ3mO,EAAQy2O,KAkCxBmQ,GAAYtK,GAAe,SAAS3V,EAAQ3mO,EAAQy2O,EAAUzH,GAChEwH,GAAU7P,EAAQ3mO,EAAQy2O,EAAUzH,KAuBlCmY,GAAOhK,GAAS,SAASxW,EAAQvhH,GACnC,IAAI/uG,EAAS,GACb,GAAc,MAAVswN,EACF,OAAOtwN,EAET,IAAI44N,GAAS,EACb7pH,EAAQsgH,GAAStgH,EAAO,SAASwF,GAG/B,OAFAA,EAAO4nH,GAAS5nH,EAAM+7G,GACtBsI,IAAWA,EAASrkH,EAAKhtI,OAAS,GAC3BgtI,IAET8jH,GAAW/H,EAAQ+J,GAAa/J,GAAStwN,GACrC44N,IACF54N,EAASy4N,GAAUz4N,EAAQ+wO,EAAwDzG,KAGrF,IADA,IAAI/iQ,EAASwnI,EAAMxnI,OACZA,KACLq6P,GAAU5hO,EAAQ+uG,EAAMxnI,IAE1B,OAAOy4B,IA4CLoyN,GAAO0U,GAAS,SAASxW,EAAQvhH,GACnC,OAAiB,MAAVuhH,EAAiB,GAnmT1B,SAAkBA,EAAQvhH,GACxB,OAAOwyH,GAAWjR,EAAQvhH,EAAO,SAASpqI,EAAO4vI,GAC/C,OAAO2rH,GAAM5P,EAAQ/7G,KAimTMy8H,CAAS1gB,EAAQvhH,KAqBhD,SAASkiI,GAAO3gB,EAAQ7sN,GACtB,GAAc,MAAV6sN,EACF,MAAO,GAET,IAAIn6N,EAAQk5N,GAASgL,GAAa/J,GAAS,SAAS9+M,GAClD,MAAO,CAACA,KAGV,OADA/N,EAAYq9N,GAAYr9N,GACjB89N,GAAWjR,EAAQn6N,EAAO,SAASxxB,EAAO4vI,GAC/C,OAAO9wG,EAAU9+B,EAAO4vI,EAAK,MA4IjC,IAAI28H,GAAUvH,GAAc9pP,IA0BxBsxP,GAAYxH,GAAcrQ,IA4K9B,SAASpiP,GAAOo5O,GACd,OAAiB,MAAVA,EAAiB,GAAKO,GAAWP,EAAQzwO,GAAKywO,IAkNvD,IAAI8gB,GAAY7K,GAAiB,SAASvmO,EAAQipJ,EAAMl8K,GAEtD,OADAk8K,EAAOA,EAAKjpK,cACLggB,GAAUjzB,EAAQskQ,GAAWpoF,GAAQA,KAkB9C,SAASooF,GAAW9+N,GAClB,OAAO++N,GAAWj8O,GAASkd,GAAQvyB,eAqBrC,SAASwmP,GAAOj0N,GAEd,OADAA,EAASld,GAASkd,KACDA,EAAO3tC,QAAQmmP,GAASqG,IAAcxsP,QAAQioP,GAAa,IAsH9E,IAAI0kB,GAAYhL,GAAiB,SAASvmO,EAAQipJ,EAAMl8K,GACtD,OAAOizB,GAAUjzB,EAAQ,IAAM,IAAMk8K,EAAKjpK,gBAuBxCwxP,GAAYjL,GAAiB,SAASvmO,EAAQipJ,EAAMl8K,GACtD,OAAOizB,GAAUjzB,EAAQ,IAAM,IAAMk8K,EAAKjpK,gBAoBxCyxP,GAAapL,GAAgB,eA0N7BqL,GAAYnL,GAAiB,SAASvmO,EAAQipJ,EAAMl8K,GACtD,OAAOizB,GAAUjzB,EAAQ,IAAM,IAAMk8K,EAAKjpK,gBAgExC2xP,GAAYpL,GAAiB,SAASvmO,EAAQipJ,EAAMl8K,GACtD,OAAOizB,GAAUjzB,EAAQ,IAAM,IAAMukQ,GAAWroF,KAsiB9C2oF,GAAYrL,GAAiB,SAASvmO,EAAQipJ,EAAMl8K,GACtD,OAAOizB,GAAUjzB,EAAQ,IAAM,IAAMk8K,EAAKj4I,gBAoBxCsgO,GAAajL,GAAgB,eAqBjC,SAASv9E,GAAMv2I,EAAQ2/F,EAAS4/B,GAI9B,OAHAv/H,EAASld,GAASkd,IAClB2/F,EAAU4/B,EAAQjqK,EAAYqqI,KAEdrqI,EArybpB,SAAwB0qC,GACtB,OAAO06M,GAAiB7mO,KAAKmsB,GAqyblBs/N,CAAet/N,GA1jb5B,SAAsBA,GACpB,OAAOA,EAAOmC,MAAMq4M,KAAkB,GAyjbF+kB,CAAav/N,GAzrcnD,SAAoBA,GAClB,OAAOA,EAAOmC,MAAM41M,KAAgB,GAwrcuBynB,CAAWx/N,GAE7DA,EAAOmC,MAAMw9F,IAAY,GA2BlC,IAAI8/H,GAAUlQ,GAAS,SAASznN,EAAMp3C,GACpC,IACE,OAAO83C,GAAMV,EAAMxyC,EAAW5E,GAC9B,MAAOo0B,GACP,OAAOwpN,GAAQxpN,GAAKA,EAAI,IAAII,GAAMJ,MA8BlC46O,GAAUnL,GAAS,SAASxW,EAAQ4hB,GAKtC,OAJArjB,GAAUqjB,EAAa,SAASnyP,GAC9BA,EAAMq8O,GAAMr8O,GACZ+3O,GAAgBxH,EAAQvwO,EAAK4tB,GAAK2iN,EAAOvwO,GAAMuwO,MAE1CA,IAqGT,SAASgS,GAAS39P,GAChB,OAAO,WACL,OAAOA,GAkDX,IAAIwtQ,GAAOtL,KAuBPuL,GAAYvL,IAAW,GAkB3B,SAASv8M,GAAS3lD,GAChB,OAAOA,EA6CT,SAASiqP,GAASv0M,GAChB,OAAOklN,GAA4B,mBAARllN,EAAqBA,EAAOo+M,GAAUp+M,EAjte/C,IAwzepB,IAAI2zC,GAAS8zK,GAAS,SAASvtH,EAAMtxI,GACnC,OAAO,SAASqtP,GACd,OAAO6M,GAAW7M,EAAQ/7G,EAAMtxI,MA2BhCovQ,GAAWvQ,GAAS,SAASxR,EAAQrtP,GACvC,OAAO,SAASsxI,GACd,OAAO4oH,GAAW7M,EAAQ/7G,EAAMtxI,MAwCpC,SAASqvQ,GAAMhiB,EAAQ3mO,EAAQyB,GAC7B,IAAI+K,EAAQtW,GAAK8J,GACbuoP,EAAcjW,GAActyO,EAAQwM,GAEzB,MAAX/K,GACEqjL,GAAS9kL,KAAYuoP,EAAY3qQ,SAAW4uB,EAAM5uB,UACtD6jB,EAAUzB,EACVA,EAAS2mO,EACTA,EAASltP,KACT8uQ,EAAcjW,GAActyO,EAAQ9J,GAAK8J,KAE3C,IAAIujP,IAAUz+D,GAASrjL,IAAY,UAAWA,IAAcA,EAAQ8hP,OAChEjU,EAAS5pF,GAAWihF,GAqBxB,OAnBAzB,GAAUqjB,EAAa,SAASxlF,GAC9B,IAAIryI,EAAO1wB,EAAO+iK,GAClB4jE,EAAO5jE,GAAcryI,EACjB4+M,IACF3I,EAAOx6N,UAAU42J,GAAc,WAC7B,IAAIkpE,EAAWxyP,KAAK2yP,UACpB,GAAImX,GAAStX,EAAU,CACrB,IAAI51N,EAASswN,EAAOltP,KAAKyyP,aACrB/lH,EAAU9vG,EAAO81N,YAAc2B,GAAUr0P,KAAK0yP,aAIlD,OAFAhmH,EAAQ9oI,KAAK,CAAE,KAAQqzC,EAAM,KAAQ39B,UAAW,QAAW4zO,IAC3DtwN,EAAO+1N,UAAYH,EACZ51N,EAET,OAAOqa,EAAKU,MAAMu1M,EAAQhB,GAAU,CAAClsP,KAAKuB,SAAU+X,gBAKnD4zO,EAmCT,SAASx4H,MAiDT,IAAIy6I,GAAO7J,GAAWrZ,IA8BlBmjB,GAAY9J,GAAW3Z,IAiCvB0jB,GAAW/J,GAAWhZ,IAwB1B,SAASx+F,GAAS3c,GAChB,OAAOyrH,GAAMzrH,GAAQq7G,GAAawM,GAAM7nH,IAh3X1C,SAA0BA,GACxB,OAAO,SAAS+7G,GACd,OAAO4L,GAAQ5L,EAAQ/7G,IA82XwBm+H,CAAiBn+H,GAuEpE,IAAI/1F,GAAQuqN,KAsCR4J,GAAa5J,IAAY,GAoB7B,SAAS8B,KACP,MAAO,GAgBT,SAASM,KACP,OAAO,EA+JT,IA2oBMxhP,GA3oBF1jB,GAAMwiQ,GAAoB,SAASmK,EAAQC,GAC7C,OAAOD,EAASC,GACf,GAuBCjxP,GAAO6nP,GAAY,QAiBnBqJ,GAASrK,GAAoB,SAASsK,EAAUC,GAClD,OAAOD,EAAWC,GACjB,GAuBC/1N,GAAQwsN,GAAY,SAwKpBwJ,GAAWxK,GAAoB,SAASljH,EAAY2tH,GACtD,OAAO3tH,EAAa2tH,GACnB,GAuBC72N,GAAQotN,GAAY,SAiBpBjoN,GAAWinN,GAAoB,SAAS0K,EAASC,GACnD,OAAOD,EAAUC,GAChB,GAgmBH,OA1iBA/d,GAAOttM,MAp6MP,SAAe5M,EAAGd,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAIzE,GAAUoxM,GAGtB,OADA7rM,EAAIqmE,GAAUrmE,GACP,WACL,KAAMA,EAAI,EACR,OAAOd,EAAKU,MAAM33C,KAAMsZ,aA85M9B24O,GAAOsS,IAAMA,GACbtS,GAAOlrN,OAASA,GAChBkrN,GAAO4a,SAAWA,GAClB5a,GAAO6a,aAAeA,GACtB7a,GAAO8a,WAAaA,GACpB9a,GAAO35G,GAAKA,GACZ25G,GAAOvtM,OAASA,GAChButM,GAAO1nN,KAAOA,GACd0nN,GAAO4c,QAAUA,GACjB5c,GAAOuY,QAAUA,GACjBvY,GAAOge,UAl8KP,WACE,IAAK32P,UAAUnV,OACb,MAAO,GAET,IAAI5C,EAAQ+X,UAAU,GACtB,OAAOtD,GAAQzU,GAASA,EAAQ,CAACA,IA87KnC0wP,GAAO6X,MAAQA,GACf7X,GAAOznJ,MApgTP,SAAezxF,EAAOonB,EAAMuuI,GAExBvuI,GADGuuI,EAAQq0F,GAAehqP,EAAOonB,EAAMuuI,GAASvuI,IAAS17B,GAClD,EAEAssP,GAAU3yI,GAAUj+E,GAAO,GAEpC,IAAIh8B,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,IAAKA,GAAUg8B,EAAO,EACpB,MAAO,GAMT,IAJA,IAAIx2B,EAAQ,EACRkiP,EAAW,EACXjvN,EAASryB,EAAMimP,GAAWrsP,EAASg8B,IAEhCx2B,EAAQxF,GACby4B,EAAOivN,KAAcuT,GAAUrmP,EAAOpP,EAAQA,GAASw2B,GAEzD,OAAOvD,GAo/STq1N,GAAOhkN,QAl+SP,SAAiBl1B,GAMf,IALA,IAAIpP,GAAS,EACTxF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACnC0nP,EAAW,EACXjvN,EAAS,KAEJjzB,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACdpI,IACFq7B,EAAOivN,KAActqP,GAGzB,OAAOq7B,GAu9STq1N,GAAOj5O,OA97SP,WACE,IAAI7U,EAASmV,UAAUnV,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAItE,EAAO0K,EAAMpG,EAAS,GACtB4U,EAAQO,UAAU,GAClB3P,EAAQxF,EAELwF,KACL9J,EAAK8J,EAAQ,GAAK2P,UAAU3P,GAE9B,OAAOuiP,GAAUl2O,GAAQ+C,GAASs7O,GAAUt7O,GAAS,CAACA,GAAQw/O,GAAY14P,EAAM,KAm7SlFoyP,GAAOie,KA3tCP,SAAcpY,GACZ,IAAI3zP,EAAkB,MAAT2zP,EAAgB,EAAIA,EAAM3zP,OACnCghQ,EAAazH,KASjB,OAPA5F,EAAS3zP,EAAc8nP,GAAS6L,EAAO,SAASwO,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAI9zN,GAAUoxM,GAEtB,MAAO,CAACuhB,EAAWmB,EAAK,IAAKA,EAAK,MAJlB,GAOX5H,GAAS,SAAS7+P,GAEvB,IADA,IAAI8J,GAAS,IACJA,EAAQxF,GAAQ,CACvB,IAAImiQ,EAAOxO,EAAMnuP,GACjB,GAAIguC,GAAM2uN,EAAK,GAAItmQ,KAAMH,GACvB,OAAO83C,GAAM2uN,EAAK,GAAItmQ,KAAMH,OA4sCpCoyP,GAAOke,SA9qCP,SAAkB5pP,GAChB,OAz5YF,SAAsBA,GACpB,IAAIwM,EAAQtW,GAAK8J,GACjB,OAAO,SAAS2mO,GACd,OAAOiK,GAAejK,EAAQ3mO,EAAQwM,IAs5YjCq9O,CAAa/a,GAAU9uO,EA/ieZ,KA6tgBpB0rO,GAAOiN,SAAWA,GAClBjN,GAAOgY,QAAUA,GACjBhY,GAAO3sP,OAtuHP,SAAgBotB,EAAW29O,GACzB,IAAIzzO,EAAS01N,GAAW5/N,GACxB,OAAqB,MAAd29O,EAAqBzzO,EAASo4N,GAAWp4N,EAAQyzO,IAquH1Dpe,GAAOqe,MAzuMP,SAASA,EAAMr5N,EAAMutN,EAAO91F,GAE1B,IAAI9xI,EAAS6pO,GAAWxvN,EA7+TN,EA6+T6BxyC,EAAWA,EAAWA,EAAWA,EAAWA,EAD3F+/P,EAAQ91F,EAAQjqK,EAAY+/P,GAG5B,OADA5nO,EAAO+tH,YAAc2lH,EAAM3lH,YACpB/tH,GAsuMTq1N,GAAOse,WA7rMP,SAASA,EAAWt5N,EAAMutN,EAAO91F,GAE/B,IAAI9xI,EAAS6pO,GAAWxvN,EAzhUA,GAyhU6BxyC,EAAWA,EAAWA,EAAWA,EAAWA,EADjG+/P,EAAQ91F,EAAQjqK,EAAY+/P,GAG5B,OADA5nO,EAAO+tH,YAAc4lH,EAAW5lH,YACzB/tH,GA0rMTq1N,GAAO1lD,SAAWA,GAClB0lD,GAAOlrO,SAAWA,GAClBkrO,GAAOib,aAAeA,GACtBjb,GAAO4Z,MAAQA,GACf5Z,GAAO7kK,MAAQA,GACf6kK,GAAOyW,WAAaA,GACpBzW,GAAO0W,aAAeA,GACtB1W,GAAO2W,eAAiBA,GACxB3W,GAAOrlG,KAt0SP,SAAc7zI,EAAOg/B,EAAG22H,GACtB,IAAIvqK,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAKA,EAIEi7P,GAAUrmP,GADjBg/B,EAAK22H,GAAS32H,IAAMtzC,EAAa,EAAI25G,GAAUrmE,IACnB,EAAI,EAAIA,EAAG5zC,GAH9B,IAo0SX8tP,GAAOue,UArySP,SAAmBz3P,EAAOg/B,EAAG22H,GAC3B,IAAIvqK,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAKA,EAKEi7P,GAAUrmP,EAAO,GADxBg/B,EAAI5zC,GADJ4zC,EAAK22H,GAAS32H,IAAMtzC,EAAa,EAAI25G,GAAUrmE,KAEhB,EAAI,EAAIA,GAJ9B,IAmySXk6M,GAAOwe,eAzvSP,SAAwB13P,EAAOsnB,GAC7B,OAAQtnB,GAASA,EAAM5U,OACnB08P,GAAU9nP,EAAO2kP,GAAYr9N,EAAW,IAAI,GAAM,GAClD,IAuvSN4xN,GAAOye,UAjtSP,SAAmB33P,EAAOsnB,GACxB,OAAQtnB,GAASA,EAAM5U,OACnB08P,GAAU9nP,EAAO2kP,GAAYr9N,EAAW,IAAI,GAC5C,IA+sSN4xN,GAAOj5I,KA/qSP,SAAcjgG,EAAOxX,EAAO4H,EAAOC,GACjC,IAAIjF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAKA,GAGDgF,GAAyB,iBAATA,GAAqB45P,GAAehqP,EAAOxX,EAAO4H,KACpEA,EAAQ,EACRC,EAAMjF,GAzvIV,SAAkB4U,EAAOxX,EAAO4H,EAAOC,GACrC,IAAIjF,EAAS4U,EAAM5U,OAWnB,KATAgF,EAAQi1G,GAAUj1G,IACN,IACVA,GAASA,EAAQhF,EAAS,EAAKA,EAASgF,IAE1CC,EAAOA,IAAQ3E,GAAa2E,EAAMjF,EAAUA,EAASi6G,GAAUh1G,IACrD,IACRA,GAAOjF,GAETiF,EAAMD,EAAQC,EAAM,EAAIujQ,GAASvjQ,GAC1BD,EAAQC,GACb2P,EAAM5P,KAAW5H,EAEnB,OAAOwX,EA4uIA43P,CAAS53P,EAAOxX,EAAO4H,EAAOC,IAN5B,IA6qSX6oP,GAAO98O,OA3vOP,SAAgB8pJ,EAAY5+H,GAE1B,OADWrqB,GAAQipJ,GAAc2sF,GAAc0M,IACnCr5F,EAAYy+F,GAAYr9N,EAAW,KA0vOjD4xN,GAAOn1F,QAvqOP,SAAiBmC,EAAYusF,GAC3B,OAAO+M,GAAY9uP,GAAIw1J,EAAYusF,GAAW,IAuqOhDyG,GAAO2e,YAhpOP,SAAqB3xG,EAAYusF,GAC/B,OAAO+M,GAAY9uP,GAAIw1J,EAAYusF,GAAWvH,IAgpOhDgO,GAAO4e,aAxnOP,SAAsB5xG,EAAYusF,EAAUnP,GAE1C,OADAA,EAAQA,IAAU53O,EAAY,EAAI25G,GAAUi+H,GACrCkc,GAAY9uP,GAAIw1J,EAAYusF,GAAWnP,IAunOhD4V,GAAOqV,QAAUA,GACjBrV,GAAO6e,YAviSP,SAAqB/3P,GAEnB,OADsB,MAATA,GAAoBA,EAAM5U,OACvBo0P,GAAYx/O,EAAOkrO,GAAY,IAsiSjDgO,GAAO8e,aA/gSP,SAAsBh4P,EAAOsjO,GAE3B,OADsB,MAATtjO,GAAoBA,EAAM5U,OAKhCo0P,GAAYx/O,EADnBsjO,EAAQA,IAAU53O,EAAY,EAAI25G,GAAUi+H,IAFnC,IA6gSX4V,GAAO+e,KAz9LP,SAAc/5N,GACZ,OAAOwvN,GAAWxvN,EA5wUD,MAqugBnBg7M,GAAO8c,KAAOA,GACd9c,GAAO+c,UAAYA,GACnB/c,GAAOgf,UA3/RP,SAAmBnZ,GAKjB,IAJA,IAAInuP,GAAS,EACTxF,EAAkB,MAAT2zP,EAAgB,EAAIA,EAAM3zP,OACnCy4B,EAAS,KAEJjzB,EAAQxF,GAAQ,CACvB,IAAImiQ,EAAOxO,EAAMnuP,GACjBizB,EAAO0pO,EAAK,IAAMA,EAAK,GAEzB,OAAO1pO,GAm/RTq1N,GAAOif,UA38GP,SAAmBhkB,GACjB,OAAiB,MAAVA,EAAiB,GAAK2L,GAAc3L,EAAQzwO,GAAKywO,KA28G1D+E,GAAOkf,YAj7GP,SAAqBjkB,GACnB,OAAiB,MAAVA,EAAiB,GAAK2L,GAAc3L,EAAQgJ,GAAOhJ,KAi7G5D+E,GAAOpoF,QAAUA,GACjBooF,GAAOj4B,QA56RP,SAAiBjhN,GAEf,OADsB,MAATA,GAAoBA,EAAM5U,OACvBi7P,GAAUrmP,EAAO,GAAI,GAAK,IA26R5Ck5O,GAAO9iJ,aAAeA,GACtB8iJ,GAAO6W,eAAiBA,GACxB7W,GAAO8W,iBAAmBA,GAC1B9W,GAAOmb,OAASA,GAChBnb,GAAOob,SAAWA,GAClBpb,GAAOmY,UAAYA,GACnBnY,GAAOzG,SAAWA,GAClByG,GAAOoY,MAAQA,GACfpY,GAAOx1O,KAAOA,GACdw1O,GAAOiE,OAASA,GAChBjE,GAAOxoP,IAAMA,GACbwoP,GAAOmf,QA1rGP,SAAiBlkB,EAAQ1B,GACvB,IAAI5uN,EAAS,GAMb,OALA4uN,EAAWkS,GAAYlS,EAAU,GAEjCyM,GAAW/K,EAAQ,SAAS3rP,EAAOob,EAAKuwO,GACtCwH,GAAgB93N,EAAQ4uN,EAASjqP,EAAOob,EAAKuwO,GAAS3rP,KAEjDq7B,GAorGTq1N,GAAOof,UArpGP,SAAmBnkB,EAAQ1B,GACzB,IAAI5uN,EAAS,GAMb,OALA4uN,EAAWkS,GAAYlS,EAAU,GAEjCyM,GAAW/K,EAAQ,SAAS3rP,EAAOob,EAAKuwO,GACtCwH,GAAgB93N,EAAQjgB,EAAK6uO,EAASjqP,EAAOob,EAAKuwO,MAE7CtwN,GA+oGTq1N,GAAOhnN,QAphCP,SAAiB1kB,GACf,OAAO81O,GAAYhH,GAAU9uO,EAxveX,KA4wgBpB0rO,GAAOqf,gBAh/BP,SAAyBngI,EAAM6qH,GAC7B,OAAOI,GAAoBjrH,EAAMkkH,GAAU2G,EA7xezB,KA6wgBpB/J,GAAOhxM,QAAUA,GACjBgxM,GAAO50O,MAAQA,GACf40O,GAAOkb,UAAYA,GACnBlb,GAAOrnK,OAASA,GAChBqnK,GAAOgd,SAAWA,GAClBhd,GAAOid,MAAQA,GACfjd,GAAO31C,OAASA,GAChB21C,GAAOsf,OAzzBP,SAAgBx5N,GAEd,OADAA,EAAIqmE,GAAUrmE,GACP2mN,GAAS,SAAS7+P,GACvB,OAAOy9P,GAAQz9P,EAAMk4C,MAuzBzBk6M,GAAOyb,KAAOA,GACdzb,GAAOuf,OAnhGP,SAAgBtkB,EAAQ7sN,GACtB,OAAOwtO,GAAO3gB,EAAQ5wC,GAAOohD,GAAYr9N,MAmhG3C4xN,GAAOwf,KA73LP,SAAcx6N,GACZ,OAAOyN,GAAO,EAAGzN,IA63LnBg7M,GAAOyf,QAr4NP,SAAiBzyG,EAAYu+F,EAAWC,EAAQ/uF,GAC9C,OAAkB,MAAdzP,EACK,IAEJjpJ,GAAQwnP,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnCxnP,GADLynP,EAAS/uF,EAAQjqK,EAAYg5P,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAYt+F,EAAYu+F,EAAWC,KA23N5CxL,GAAOkd,KAAOA,GACdld,GAAOga,SAAWA,GAClBha,GAAOmd,UAAYA,GACnBnd,GAAOod,SAAWA,GAClBpd,GAAOma,QAAUA,GACjBna,GAAOoa,aAAeA,GACtBpa,GAAOqY,UAAYA,GACnBrY,GAAOjD,KAAOA,GACdiD,GAAO4b,OAASA,GAChB5b,GAAOnkG,SAAWA,GAClBmkG,GAAO0f,WA/rBP,SAAoBzkB,GAClB,OAAO,SAAS/7G,GACd,OAAiB,MAAV+7G,EAAiBzoP,EAAYq0P,GAAQ5L,EAAQ/7G,KA8rBxD8gH,GAAO+W,KAAOA,GACd/W,GAAOgX,QAAUA,GACjBhX,GAAO2f,UApsRP,SAAmB74P,EAAOjF,EAAQ03O,GAChC,OAAQzyO,GAASA,EAAM5U,QAAU2P,GAAUA,EAAO3P,OAC9Ck6P,GAAYtlP,EAAOjF,EAAQ4pP,GAAYlS,EAAU,IACjDzyO,GAksRNk5O,GAAO4f,YAxqRP,SAAqB94P,EAAOjF,EAAQkpC,GAClC,OAAQjkC,GAASA,EAAM5U,QAAU2P,GAAUA,EAAO3P,OAC9Ck6P,GAAYtlP,EAAOjF,EAAQrP,EAAWu4C,GACtCjkC,GAsqRNk5O,GAAOiX,OAASA,GAChBjX,GAAO72M,MAAQA,GACf62M,GAAOsd,WAAaA,GACpBtd,GAAOqa,MAAQA,GACfra,GAAOx8H,OAxvNP,SAAgBwpC,EAAY5+H,GAE1B,OADWrqB,GAAQipJ,GAAc2sF,GAAc0M,IACnCr5F,EAAYq9C,GAAOohD,GAAYr9N,EAAW,MAuvNxD4xN,GAAOzmP,OAzmRP,SAAgBuN,EAAOsnB,GACrB,IAAIzD,EAAS,GACb,IAAM7jB,IAASA,EAAM5U,OACnB,OAAOy4B,EAET,IAAIjzB,GAAS,EACT40P,EAAU,GACVp6P,EAAS4U,EAAM5U,OAGnB,IADAk8B,EAAYq9N,GAAYr9N,EAAW,KAC1B12B,EAAQxF,GAAQ,CACvB,IAAI5C,EAAQwX,EAAMpP,GACd02B,EAAU9+B,EAAOoI,EAAOoP,KAC1B6jB,EAAOh5B,KAAKrC,GACZg9P,EAAQ36P,KAAK+F,IAIjB,OADA20P,GAAWvlP,EAAOwlP,GACX3hO,GAwlRTq1N,GAAOvxE,KAluLP,SAAczpI,EAAM9tC,GAClB,GAAmB,mBAAR8tC,EACT,MAAM,IAAIzE,GAAUoxM,GAGtB,OAAO8a,GAASznN,EADhB9tC,EAAQA,IAAU1E,EAAY0E,EAAQi1G,GAAUj1G,KA+tLlD8oP,GAAOpoP,QAAUA,GACjBooP,GAAO3pB,WAhtNP,SAAoBrpE,EAAYlnH,EAAG22H,GAOjC,OALE32H,GADG22H,EAAQq0F,GAAe9jG,EAAYlnH,EAAG22H,GAAS32H,IAAMtzC,GACpD,EAEA25G,GAAUrmE,IAEL/hC,GAAQipJ,GAAck1F,GAAkB2K,IACvC7/F,EAAYlnH,IA0sN1Bk6M,GAAO59O,IAv6FP,SAAa64O,EAAQ/7G,EAAM5vI,GACzB,OAAiB,MAAV2rP,EAAiBA,EAASkR,GAAQlR,EAAQ/7G,EAAM5vI,IAu6FzD0wP,GAAO6f,QA54FP,SAAiB5kB,EAAQ/7G,EAAM5vI,EAAOg0P,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa9wP,EAC3C,MAAVyoP,EAAiBA,EAASkR,GAAQlR,EAAQ/7G,EAAM5vI,EAAOg0P,IA24FhEtD,GAAO8f,QA1rNP,SAAiB9yG,GAEf,OADWjpJ,GAAQipJ,GAAcs1F,GAAe4K,IACpClgG,IAyrNdgzF,GAAOzoP,MAhjRP,SAAeuP,EAAO5P,EAAOC,GAC3B,IAAIjF,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAKA,GAGDiF,GAAqB,iBAAPA,GAAmB25P,GAAehqP,EAAO5P,EAAOC,IAChED,EAAQ,EACRC,EAAMjF,IAGNgF,EAAiB,MAATA,EAAgB,EAAIi1G,GAAUj1G,GACtCC,EAAMA,IAAQ3E,EAAYN,EAASi6G,GAAUh1G,IAExCg2P,GAAUrmP,EAAO5P,EAAOC,IAVtB,IA8iRX6oP,GAAOsY,OAASA,GAChBtY,GAAO+f,WAx3QP,SAAoBj5P,GAClB,OAAQA,GAASA,EAAM5U,OACnBk8P,GAAetnP,GACf,IAs3QNk5O,GAAOggB,aAn2QP,SAAsBl5P,EAAOyyO,GAC3B,OAAQzyO,GAASA,EAAM5U,OACnBk8P,GAAetnP,EAAO2kP,GAAYlS,EAAU,IAC5C,IAi2QNyG,GAAO1vO,MA5hEP,SAAe4sB,EAAQ0S,EAAW9T,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBg1N,GAAe5zN,EAAQ0S,EAAW9T,KACzE8T,EAAY9T,EAAQtpC,IAEtBspC,EAAQA,IAAUtpC,EAAY0/O,EAAmBp2M,IAAU,IAI3DoB,EAASld,GAASkd,MAEQ,iBAAb0S,GACO,MAAbA,IAAsB1R,GAAS0R,OAEpCA,EAAY0+M,GAAa1+M,KACPusM,GAAWj/M,GACpBoyN,GAAUpgB,GAAchyM,GAAS,EAAGpB,GAGxCoB,EAAO5sB,MAAMs/B,EAAW9T,GAZtB,IAuhEXkkN,GAAOigB,OAnsLP,SAAgBj7N,EAAM9tC,GACpB,GAAmB,mBAAR8tC,EACT,MAAM,IAAIzE,GAAUoxM,GAGtB,OADAz6O,EAAiB,MAATA,EAAgB,EAAI4nP,GAAU3yI,GAAUj1G,GAAQ,GACjDu1P,GAAS,SAAS7+P,GACvB,IAAIkZ,EAAQlZ,EAAKsJ,GACb6+P,EAAYzG,GAAU1hQ,EAAM,EAAGsJ,GAKnC,OAHI4P,GACFmzO,GAAU8b,EAAWjvP,GAEhB4+B,GAAMV,EAAMj3C,KAAMgoQ,MAwrL7B/V,GAAOkgB,KAl1QP,SAAcp5P,GACZ,IAAI5U,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAOA,EAASi7P,GAAUrmP,EAAO,EAAG5U,GAAU,IAi1QhD8tP,GAAOttP,KArzQP,SAAcoU,EAAOg/B,EAAG22H,GACtB,OAAM31J,GAASA,EAAM5U,OAIdi7P,GAAUrmP,EAAO,GADxBg/B,EAAK22H,GAAS32H,IAAMtzC,EAAa,EAAI25G,GAAUrmE,IAChB,EAAI,EAAIA,GAH9B,IAozQXk6M,GAAOmgB,UArxQP,SAAmBr5P,EAAOg/B,EAAG22H,GAC3B,IAAIvqK,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,OAAKA,EAKEi7P,GAAUrmP,GADjBg/B,EAAI5zC,GADJ4zC,EAAK22H,GAAS32H,IAAMtzC,EAAa,EAAI25G,GAAUrmE,KAEnB,EAAI,EAAIA,EAAG5zC,GAJ9B,IAmxQX8tP,GAAOogB,eAzuQP,SAAwBt5P,EAAOsnB,GAC7B,OAAQtnB,GAASA,EAAM5U,OACnB08P,GAAU9nP,EAAO2kP,GAAYr9N,EAAW,IAAI,GAAO,GACnD,IAuuQN4xN,GAAOqgB,UAjsQP,SAAmBv5P,EAAOsnB,GACxB,OAAQtnB,GAASA,EAAM5U,OACnB08P,GAAU9nP,EAAO2kP,GAAYr9N,EAAW,IACxC,IA+rQN4xN,GAAOnvH,IApuPP,SAAavhI,EAAOwoQ,GAElB,OADAA,EAAYxoQ,GACLA,GAmuPT0wP,GAAOsgB,SA9oLP,SAAkBt7N,EAAMogN,EAAMrvO,GAC5B,IAAIgjP,GAAU,EACV9H,GAAW,EAEf,GAAmB,mBAARjsN,EACT,MAAM,IAAIzE,GAAUoxM,GAMtB,OAJIv4C,GAASrjL,KACXgjP,EAAU,YAAahjP,IAAYA,EAAQgjP,QAAUA,EACrD9H,EAAW,aAAcl7O,IAAYA,EAAQk7O,SAAWA,GAEnD32D,GAASt1J,EAAMogN,EAAM,CAC1B,QAAW2T,EACX,QAAW3T,EACX,SAAY6L,KAioLhBjR,GAAO4R,KAAOA,GACd5R,GAAO/pO,QAAUA,GACjB+pO,GAAO6b,QAAUA,GACjB7b,GAAO8b,UAAYA,GACnB9b,GAAOugB,OArfP,SAAgBjxQ,GACd,OAAIyU,GAAQzU,GACH0qP,GAAS1qP,EAAOy3P,IAElBld,GAASv6O,GAAS,CAACA,GAAS8yP,GAAUz5E,GAAa3oJ,GAAS1wB,MAkfrE0wP,GAAO7oL,cAAgBA,GACvB6oL,GAAOtwN,UA10FP,SAAmBurN,EAAQ1B,EAAUpJ,GACnC,IAAIjD,EAAQnpO,GAAQk3O,GAChBulB,EAAYtzB,GAASlvM,GAASi9M,IAAW7B,GAAa6B,GAG1D,GADA1B,EAAWkS,GAAYlS,EAAU,GACd,MAAfpJ,EAAqB,CACvB,IAAIkU,EAAOpJ,GAAUA,EAAOh9M,YAE1BkyM,EADEqwB,EACYtzB,EAAQ,IAAImX,EAAO,GAE1BjrD,GAAS6hD,IACFjhF,GAAWqqF,GAAQhE,GAAWxC,GAAa5C,IAG3C,GAMlB,OAHCulB,EAAYhnB,GAAYwM,IAAY/K,EAAQ,SAAS3rP,EAAOoI,EAAOujP,GAClE,OAAO1B,EAASpJ,EAAa7gP,EAAOoI,EAAOujP,KAEtC9K,GAuzFT6P,GAAOygB,MArnLP,SAAez7N,GACb,OAAOstN,GAAIttN,EAAM,IAqnLnBg7M,GAAOkX,MAAQA,GACflX,GAAOmX,QAAUA,GACjBnX,GAAOoX,UAAYA,GACnBpX,GAAO0gB,KAzmQP,SAAc55P,GACZ,OAAQA,GAASA,EAAM5U,OAAUq8P,GAASznP,GAAS,IAymQrDk5O,GAAO2gB,OA/kQP,SAAgB75P,EAAOyyO,GACrB,OAAQzyO,GAASA,EAAM5U,OAAUq8P,GAASznP,EAAO2kP,GAAYlS,EAAU,IAAM,IA+kQ/EyG,GAAO4gB,SAxjQP,SAAkB95P,EAAOikC,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAav4C,EACpDsU,GAASA,EAAM5U,OAAUq8P,GAASznP,EAAOtU,EAAWu4C,GAAc,IAujQ5Ei1M,GAAO6gB,MAhyFP,SAAe5lB,EAAQ/7G,GACrB,OAAiB,MAAV+7G,GAAwBsR,GAAUtR,EAAQ/7G,IAgyFnD8gH,GAAOqX,MAAQA,GACfrX,GAAOsX,UAAYA,GACnBtX,GAAOz3K,OApwFP,SAAgB0yK,EAAQ/7G,EAAMyvH,GAC5B,OAAiB,MAAV1T,EAAiBA,EAASyT,GAAWzT,EAAQ/7G,EAAMkwH,GAAaT,KAowFzE3O,GAAO8gB,WAzuFP,SAAoB7lB,EAAQ/7G,EAAMyvH,EAASrL,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa9wP,EAC3C,MAAVyoP,EAAiBA,EAASyT,GAAWzT,EAAQ/7G,EAAMkwH,GAAaT,GAAUrL,IAwuFnFtD,GAAOn+O,OAASA,GAChBm+O,GAAO+gB,SAhrFP,SAAkB9lB,GAChB,OAAiB,MAAVA,EAAiB,GAAKO,GAAWP,EAAQgJ,GAAOhJ,KAgrFzD+E,GAAOuX,QAAUA,GACjBvX,GAAOvsE,MAAQA,GACfusE,GAAOghB,KA3mLP,SAAc1xQ,EAAO2vJ,GACnB,OAAOk7G,GAAQ/K,GAAanwG,GAAU3vJ,IA2mLxC0wP,GAAOwX,IAAMA,GACbxX,GAAOyX,MAAQA,GACfzX,GAAO0X,QAAUA,GACjB1X,GAAO2X,IAAMA,GACb3X,GAAOihB,UAj3PP,SAAmBngP,EAAOjf,GACxB,OAAOmtP,GAAcluO,GAAS,GAAIjf,GAAU,GAAI6gP,KAi3PlD1C,GAAOkhB,cA/1PP,SAAuBpgP,EAAOjf,GAC5B,OAAOmtP,GAAcluO,GAAS,GAAIjf,GAAU,GAAIsqP,KA+1PlDnM,GAAO4X,QAAUA,GAGjB5X,GAAOv9N,QAAUo5O,GACjB7b,GAAOmhB,UAAYrF,GACnB9b,GAAOl0C,OAAS8uD,GAChB5a,GAAOohB,WAAavG,GAGpBoC,GAAMjd,GAAQA,IAKdA,GAAOpvP,IAAMA,GACbovP,GAAO2c,QAAUA,GACjB3c,GAAO+b,UAAYA,GACnB/b,GAAOgc,WAAaA,GACpBhc,GAAOzzO,KAAOA,GACdyzO,GAAOliG,MAprFP,SAAerqI,EAAQyvO,EAAOC,GAa5B,OAZIA,IAAU3wP,IACZ2wP,EAAQD,EACRA,EAAQ1wP,GAEN2wP,IAAU3wP,IAEZ2wP,GADAA,EAAQ2Q,GAAS3Q,KACCA,EAAQA,EAAQ,GAEhCD,IAAU1wP,IAEZ0wP,GADAA,EAAQ4Q,GAAS5Q,KACCA,EAAQA,EAAQ,GAE7Bb,GAAUyR,GAASrgP,GAASyvO,EAAOC,IAwqF5CnD,GAAOruG,MA7jLP,SAAeriJ,GACb,OAAO8zP,GAAU9zP,EArzVI,IAk3gBvB0wP,GAAOqhB,UApgLP,SAAmB/xQ,GACjB,OAAO8zP,GAAU9zP,EAAOosQ,IAogL1B1b,GAAOshB,cAr+KP,SAAuBhyQ,EAAOg0P,GAE5B,OAAOF,GAAU9zP,EAAOosQ,EADxBpY,EAAkC,mBAAdA,EAA2BA,EAAa9wP,IAq+K9DwtP,GAAOuhB,UA7hLP,SAAmBjyQ,EAAOg0P,GAExB,OAAOF,GAAU9zP,EAz1VI,EAw1VrBg0P,EAAkC,mBAAdA,EAA2BA,EAAa9wP,IA6hL9DwtP,GAAOwhB,WA18KP,SAAoBvmB,EAAQ3mO,GAC1B,OAAiB,MAAVA,GAAkB4wO,GAAejK,EAAQ3mO,EAAQ9J,GAAK8J,KA08K/D0rO,GAAOmR,OAASA,GAChBnR,GAAOyhB,UA1xCP,SAAmBnyQ,EAAOmjH,GACxB,OAAiB,MAATnjH,GAAiBA,GAAUA,EAASmjH,EAAenjH,GA0xC7D0wP,GAAOyd,OAASA,GAChBzd,GAAO0hB,SAz9EP,SAAkBxkO,EAAQ3iB,EAAQxiB,GAChCmlC,EAASld,GAASkd,GAClB3iB,EAAS+zO,GAAa/zO,GAEtB,IAAIroB,EAASgrC,EAAOhrC,OAKhBiF,EAJJY,EAAWA,IAAavF,EACpBN,EACAmwP,GAAUl2I,GAAUp0G,GAAW,EAAG7F,GAItC,OADA6F,GAAYwiB,EAAOroB,SACA,GAAKgrC,EAAO3lC,MAAMQ,EAAUZ,IAAQojB,GA+8EzDylO,GAAOwC,GAAKA,GACZxC,GAAO3iN,OAj7EP,SAAgBH,GAEd,OADAA,EAASld,GAASkd,KACAk3M,EAAmBrjO,KAAKmsB,GACtCA,EAAO3tC,QAAQ2kP,EAAiB8H,IAChC9+M,GA86EN8iN,GAAO2hB,aA55EP,SAAsBzkO,GAEpB,OADAA,EAASld,GAASkd,KACAy3M,GAAgB5jO,KAAKmsB,GACnCA,EAAO3tC,QAAQmlP,GAAc,QAC7Bx3M,GAy5EN8iN,GAAO79F,MA57OP,SAAe6K,EAAY5+H,EAAWquI,GACpC,IAAIz3H,EAAOjhC,GAAQipJ,GAAc0sF,GAAayM,GAI9C,OAHI1pF,GAASq0F,GAAe9jG,EAAY5+H,EAAWquI,KACjDruI,EAAY57B,GAEPwyC,EAAKgoH,EAAYy+F,GAAYr9N,EAAW,KAw7OjD4xN,GAAO5sP,KAAOA,GACd4sP,GAAO9sI,UAAYA,GACnB8sI,GAAO4hB,QArxHP,SAAiB3mB,EAAQ7sN,GACvB,OAAOosN,GAAYS,EAAQwQ,GAAYr9N,EAAW,GAAI43N,KAqxHxDhG,GAAOiY,SAAWA,GAClBjY,GAAO4W,cAAgBA,GACvB5W,GAAO6hB,YAjvHP,SAAqB5mB,EAAQ7sN,GAC3B,OAAOosN,GAAYS,EAAQwQ,GAAYr9N,EAAW,GAAI83N,KAivHxDlG,GAAOp4M,MAAQA,GACfo4M,GAAO5+O,QAAUA,GACjB4+O,GAAOkY,aAAeA,GACtBlY,GAAO8hB,MArtHP,SAAe7mB,EAAQ1B,GACrB,OAAiB,MAAV0B,EACHA,EACAwL,GAAQxL,EAAQwQ,GAAYlS,EAAU,GAAI0K,KAmtHhDjE,GAAO+hB,WAtrHP,SAAoB9mB,EAAQ1B,GAC1B,OAAiB,MAAV0B,EACHA,EACA0L,GAAa1L,EAAQwQ,GAAYlS,EAAU,GAAI0K,KAorHrDjE,GAAOgiB,OArpHP,SAAgB/mB,EAAQ1B,GACtB,OAAO0B,GAAU+K,GAAW/K,EAAQwQ,GAAYlS,EAAU,KAqpH5DyG,GAAOiiB,YAxnHP,SAAqBhnB,EAAQ1B,GAC3B,OAAO0B,GAAUiL,GAAgBjL,EAAQwQ,GAAYlS,EAAU,KAwnHjEyG,GAAO//O,IAAMA,GACb+/O,GAAOjlC,GAAKA,GACZilC,GAAOsa,IAAMA,GACbta,GAAO79O,IAzgHP,SAAa84O,EAAQ/7G,GACnB,OAAiB,MAAV+7G,GAAkBwa,GAAQxa,EAAQ/7G,EAAMqoH,KAygHjDvH,GAAO6K,MAAQA,GACf7K,GAAOrnN,KAAOA,GACdqnN,GAAO/qM,SAAWA,GAClB+qM,GAAOsF,SA5pOP,SAAkBt4F,EAAY19J,EAAO8vJ,EAAWqd,GAC9CzP,EAAa8e,GAAY9e,GAAcA,EAAanrJ,GAAOmrJ,GAC3D5N,EAAaA,IAAcqd,EAAStwD,GAAUizC,GAAa,EAE3D,IAAIltJ,EAAS86J,EAAW96J,OAIxB,OAHIktJ,EAAY,IACdA,EAAY0/F,GAAU5sP,EAASktJ,EAAW,IAErCitF,GAASr/E,GACX5N,GAAaltJ,GAAU86J,EAAWh2J,QAAQ1H,EAAO8vJ,IAAc,IAC7DltJ,GAAU4nP,GAAY9sF,EAAY19J,EAAO8vJ,IAAc,GAmpOhE4gG,GAAOhpP,QA9lSP,SAAiB8P,EAAOxX,EAAO8vJ,GAC7B,IAAIltJ,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIwF,EAAqB,MAAb0nJ,EAAoB,EAAIjzC,GAAUizC,GAI9C,OAHI1nJ,EAAQ,IACVA,EAAQonP,GAAU5sP,EAASwF,EAAO,IAE7BoiP,GAAYhzO,EAAOxX,EAAOoI,IAslSnCsoP,GAAOjnC,QAlqFP,SAAiBtlM,EAAQvc,EAAOC,GAS9B,OARAD,EAAQy8P,GAASz8P,GACbC,IAAQ3E,GACV2E,EAAMD,EACNA,EAAQ,GAERC,EAAMw8P,GAASx8P,GArsVnB,SAAqBsc,EAAQvc,EAAOC,GAClC,OAAOsc,GAAUsrO,GAAU7nP,EAAOC,IAAQsc,EAASqrO,GAAU5nP,EAAOC,GAusV7D+qQ,CADPzuP,EAASqgP,GAASrgP,GACSvc,EAAOC,IA0pFpC6oP,GAAOqb,OAASA,GAChBrb,GAAO2B,YAAcA,GACrB3B,GAAOj8O,QAAUA,GACjBi8O,GAAOlH,cAAgBA,GACvBkH,GAAOl0E,YAAcA,GACrBk0E,GAAOmL,kBAAoBA,GAC3BnL,GAAO5T,UAtwKP,SAAmB98O,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB2wP,GAAa3wP,IAAU63P,GAAW73P,IAAUgjP,GAqwKjD0N,GAAOhiN,SAAWA,GAClBgiN,GAAOzT,OAASA,GAChByT,GAAOhpE,UA7sKP,SAAmB1nL,GACjB,OAAO2wP,GAAa3wP,IAA6B,IAAnBA,EAAMoG,WAAmB+2O,GAAcn9O,IA6sKvE0wP,GAAO7xN,QAzqKP,SAAiB7+B,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAIw8K,GAAYx8K,KACXyU,GAAQzU,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMgnC,QAC1D0H,GAAS1uC,IAAU8pP,GAAa9pP,IAAUqyP,GAAYryP,IAC1D,OAAQA,EAAM4C,OAEhB,IAAIuT,EAAMk+O,GAAOr0P,GACjB,GAAImW,GAAOktO,GAAUltO,GAAOutO,EAC1B,OAAQ1jP,EAAM4+B,KAEhB,GAAIo8N,GAAYh7P,GACd,OAAQ+6P,GAAS/6P,GAAO4C,OAE1B,IAAK,IAAIwY,KAAOpb,EACd,GAAImsC,GAAexY,KAAK3zB,EAAOob,GAC7B,OAAO,EAGX,OAAO,GAqpKTs1O,GAAOmiB,QAtnKP,SAAiB7yQ,EAAOs/G,GACtB,OAAOo5I,GAAY14P,EAAOs/G,IAsnK5BoxI,GAAOoiB,YAnlKP,SAAqB9yQ,EAAOs/G,EAAO00I,GAEjC,IAAI34N,GADJ24N,EAAkC,mBAAdA,EAA2BA,EAAa9wP,GAClC8wP,EAAWh0P,EAAOs/G,GAASp8G,EACrD,OAAOm4B,IAAWn4B,EAAYw1P,GAAY14P,EAAOs/G,EAAOp8G,EAAW8wP,KAAgB34N,GAilKrFq1N,GAAOxU,QAAUA,GACjBwU,GAAOzzI,SA1hKP,SAAkBj9G,GAChB,MAAuB,iBAATA,GAAqBqvP,GAAervP,IA0hKpD0wP,GAAOhmF,WAAaA,GACpBgmF,GAAO1zI,UAAYA,GACnB0zI,GAAO2V,SAAWA,GAClB3V,GAAOtU,MAAQA,GACfsU,GAAOqiB,QA11JP,SAAiBpnB,EAAQ3mO,GACvB,OAAO2mO,IAAW3mO,GAAUs1O,GAAY3O,EAAQ3mO,EAAQm2O,GAAan2O,KA01JvE0rO,GAAOsiB,YAvzJP,SAAqBrnB,EAAQ3mO,EAAQgvO,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa9wP,EACrDo3P,GAAY3O,EAAQ3mO,EAAQm2O,GAAan2O,GAASgvO,IAszJ3DtD,GAAOh3M,MAvxJP,SAAe15C,GAIb,OAAO+8G,GAAS/8G,IAAUA,IAAUA,GAoxJtC0wP,GAAOuiB,SAvvJP,SAAkBjzQ,GAChB,GAAIumQ,GAAWvmQ,GACb,MAAM,IAAI8yB,GAtsXM,mEAwsXlB,OAAO6nO,GAAa36P,IAovJtB0wP,GAAOwiB,MAxsJP,SAAelzQ,GACb,OAAgB,MAATA,GAwsJT0wP,GAAOyiB,OAjuJP,SAAgBnzQ,GACd,OAAiB,OAAVA,GAiuJT0wP,GAAO3zI,SAAWA,GAClB2zI,GAAO5mD,SAAWA,GAClB4mD,GAAOC,aAAeA,GACtBD,GAAOvT,cAAgBA,GACvBuT,GAAO9hN,SAAWA,GAClB8hN,GAAO0iB,cArlJP,SAAuBpzQ,GACrB,OAAOg9G,GAAUh9G,IAAUA,IAAS,kBAAqBA,GAAS4Z,GAqlJpE82O,GAAOnU,MAAQA,GACfmU,GAAO3T,SAAWA,GAClB2T,GAAOnW,SAAWA,GAClBmW,GAAO5G,aAAeA,GACtB4G,GAAO2iB,YAn/IP,SAAqBrzQ,GACnB,OAAOA,IAAUkD,GAm/InBwtP,GAAOjU,UA/9IP,SAAmBz8O,GACjB,OAAO2wP,GAAa3wP,IAAUq0P,GAAOr0P,IAAU4jP,GA+9IjD8M,GAAO/T,UA38IP,SAAmB38O,GACjB,OAAO2wP,GAAa3wP,IAn6XP,oBAm6XiB63P,GAAW73P,IA28I3C0wP,GAAOjiN,KAz/RP,SAAcj3B,EAAO8oC,GACnB,OAAgB,MAAT9oC,EAAgB,GAAK83O,GAAW37N,KAAKnc,EAAO8oC,IAy/RrDowM,GAAOkc,UAAYA,GACnBlc,GAAO96O,KAAOA,GACd86O,GAAOlpP,YAh9RP,SAAqBgQ,EAAOxX,EAAO8vJ,GACjC,IAAIltJ,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIwF,EAAQxF,EAKZ,OAJIktJ,IAAc5sJ,IAEhBkF,GADAA,EAAQy0G,GAAUizC,IACF,EAAI0/F,GAAU5sP,EAASwF,EAAO,GAAKqnP,GAAUrnP,EAAOxF,EAAS,IAExE5C,GAAUA,EArvMrB,SAA2BwX,EAAOxX,EAAO8vJ,GAEvC,IADA,IAAI1nJ,EAAQ0nJ,EAAY,EACjB1nJ,KACL,GAAIoP,EAAMpP,KAAWpI,EACnB,OAAOoI,EAGX,OAAOA,EA+uMDkrQ,CAAkB97P,EAAOxX,EAAOoI,GAChCgjP,GAAc5zO,EAAO+zO,GAAWnjP,GAAO,IAq8R7CsoP,GAAOmc,UAAYA,GACnBnc,GAAOoc,WAAaA,GACpBpc,GAAOrmC,GAAKA,GACZqmC,GAAOua,IAAMA,GACbva,GAAOnvM,IAhfP,SAAa/pC,GACX,OAAQA,GAASA,EAAM5U,OACnBk0P,GAAat/O,EAAOmuC,GAAUqyM,IAC9B90P,GA8eNwtP,GAAO6iB,MApdP,SAAe/7P,EAAOyyO,GACpB,OAAQzyO,GAASA,EAAM5U,OACnBk0P,GAAat/O,EAAO2kP,GAAYlS,EAAU,GAAI+N,IAC9C90P,GAkdNwtP,GAAO8iB,KAjcP,SAAch8P,GACZ,OAAOi0O,GAASj0O,EAAOmuC,KAiczB+qM,GAAO+iB,OAvaP,SAAgBj8P,EAAOyyO,GACrB,OAAOwB,GAASj0O,EAAO2kP,GAAYlS,EAAU,KAua/CyG,GAAOvzO,IAlZP,SAAa3F,GACX,OAAQA,GAASA,EAAM5U,OACnBk0P,GAAat/O,EAAOmuC,GAAUs1M,IAC9B/3P,GAgZNwtP,GAAOgjB,MAtXP,SAAel8P,EAAOyyO,GACpB,OAAQzyO,GAASA,EAAM5U,OACnBk0P,GAAat/O,EAAO2kP,GAAYlS,EAAU,GAAIgR,IAC9C/3P,GAoXNwtP,GAAOwV,UAAYA,GACnBxV,GAAO8V,UAAYA,GACnB9V,GAAOijB,WAztBP,WACE,MAAO,IAytBTjjB,GAAOkjB,WAzsBP,WACE,MAAO,IAysBTljB,GAAOmjB,SAzrBP,WACE,OAAO,GAyrBTnjB,GAAO4d,SAAWA,GAClB5d,GAAOojB,IA77RP,SAAat8P,EAAOg/B,GAClB,OAAQh/B,GAASA,EAAM5U,OAAUm5P,GAAQvkP,EAAOqlG,GAAUrmE,IAAMtzC,GA67RlEwtP,GAAOqjB,WAliCP,WAIE,OAHIl2L,GAAKgzB,IAAMpyG,OACbo/E,GAAKgzB,EAAIs9I,IAEJ1vP,MA+hCTiyP,GAAOv9H,KAAOA,GACdu9H,GAAOlmM,IAAMA,GACbkmM,GAAOsjB,IAj5EP,SAAapmO,EAAQhrC,EAAQshQ,GAC3Bt2N,EAASld,GAASkd,GAGlB,IAAIqmO,GAFJrxQ,EAASi6G,GAAUj6G,IAEMuqP,GAAWv/M,GAAU,EAC9C,IAAKhrC,GAAUqxQ,GAAarxQ,EAC1B,OAAOgrC,EAET,IAAIuwN,GAAOv7P,EAASqxQ,GAAa,EACjC,OACEhQ,GAAc/U,GAAYiP,GAAM+F,GAChCt2N,EACAq2N,GAAchV,GAAWkP,GAAM+F,IAs4EnCxT,GAAOwjB,OA32EP,SAAgBtmO,EAAQhrC,EAAQshQ,GAC9Bt2N,EAASld,GAASkd,GAGlB,IAAIqmO,GAFJrxQ,EAASi6G,GAAUj6G,IAEMuqP,GAAWv/M,GAAU,EAC9C,OAAQhrC,GAAUqxQ,EAAYrxQ,EACzBgrC,EAASq2N,GAAcrhQ,EAASqxQ,EAAW/P,GAC5Ct2N,GAq2EN8iN,GAAO56M,SA30EP,SAAkBlI,EAAQhrC,EAAQshQ,GAChCt2N,EAASld,GAASkd,GAGlB,IAAIqmO,GAFJrxQ,EAASi6G,GAAUj6G,IAEMuqP,GAAWv/M,GAAU,EAC9C,OAAQhrC,GAAUqxQ,EAAYrxQ,EACzBqhQ,GAAcrhQ,EAASqxQ,EAAW/P,GAASt2N,EAC5CA,GAq0EN8iN,GAAOziN,SA1yEP,SAAkBL,EAAQumO,EAAOhnG,GAM/B,OALIA,GAAkB,MAATgnG,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJxkB,GAAej/N,GAASkd,GAAQ3tC,QAAQqlP,GAAa,IAAK6uB,GAAS,IAqyE5EzjB,GAAOrpH,OA1rFP,SAAgBusH,EAAOC,EAAOugB,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB5S,GAAe5N,EAAOC,EAAOugB,KAC3EvgB,EAAQugB,EAAWlxQ,GAEjBkxQ,IAAalxQ,IACK,kBAAT2wP,GACTugB,EAAWvgB,EACXA,EAAQ3wP,GAEe,kBAAT0wP,IACdwgB,EAAWxgB,EACXA,EAAQ1wP,IAGR0wP,IAAU1wP,GAAa2wP,IAAU3wP,GACnC0wP,EAAQ,EACRC,EAAQ,IAGRD,EAAQyQ,GAASzQ,GACbC,IAAU3wP,GACZ2wP,EAAQD,EACRA,EAAQ,GAERC,EAAQwQ,GAASxQ,IAGjBD,EAAQC,EAAO,CACjB,IAAIwgB,EAAOzgB,EACXA,EAAQC,EACRA,EAAQwgB,EAEV,GAAID,GAAYxgB,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAIqT,EAAOtX,KACX,OAAOH,GAAUmE,EAASsT,GAAQrT,EAAQD,EAAQhL,GAAe,QAAUse,EAAO,IAAItkQ,OAAS,KAAOixP,GAExG,OAAOlB,GAAWiB,EAAOC,IAupF3BnD,GAAOx8O,OA5+NP,SAAgBwpJ,EAAYusF,EAAUpJ,GACpC,IAAInrM,EAAOjhC,GAAQipJ,GAAcktF,GAAciB,GAC3ChB,EAAY9yO,UAAUnV,OAAS,EAEnC,OAAO8yC,EAAKgoH,EAAYy+F,GAAYlS,EAAU,GAAIpJ,EAAagK,EAAW2I,KAy+N5E9C,GAAO4jB,YAh9NP,SAAqB52G,EAAYusF,EAAUpJ,GACzC,IAAInrM,EAAOjhC,GAAQipJ,GAAcotF,GAAmBe,GAChDhB,EAAY9yO,UAAUnV,OAAS,EAEnC,OAAO8yC,EAAKgoH,EAAYy+F,GAAYlS,EAAU,GAAIpJ,EAAagK,EAAW8L,KA68N5EjG,GAAO6jB,OA/wEP,SAAgB3mO,EAAQ4I,EAAG22H,GAMzB,OAJE32H,GADG22H,EAAQq0F,GAAe5zN,EAAQ4I,EAAG22H,GAAS32H,IAAMtzC,GAChD,EAEA25G,GAAUrmE,GAET0mN,GAAWxsO,GAASkd,GAAS4I,IA0wEtCk6M,GAAOzwP,QApvEP,WACE,IAAI3B,EAAOyZ,UACP61B,EAASld,GAASpyB,EAAK,IAE3B,OAAOA,EAAKsE,OAAS,EAAIgrC,EAASA,EAAO3tC,QAAQ3B,EAAK,GAAIA,EAAK,KAivEjEoyP,GAAOr1N,OAtoGP,SAAgBswN,EAAQ/7G,EAAMzsB,GAG5B,IAAI/6G,GAAS,EACTxF,GAHJgtI,EAAO4nH,GAAS5nH,EAAM+7G,IAGJ/oP,OAOlB,IAJKA,IACHA,EAAS,EACT+oP,EAASzoP,KAEFkF,EAAQxF,GAAQ,CACvB,IAAI5C,EAAkB,MAAV2rP,EAAiBzoP,EAAYyoP,EAAO8L,GAAM7nH,EAAKxnI,KACvDpI,IAAUkD,IACZkF,EAAQxF,EACR5C,EAAQmjH,GAEVwoI,EAASjhF,GAAW1qK,GAASA,EAAM2zB,KAAKg4N,GAAU3rP,EAEpD,OAAO2rP,GAonGT+E,GAAOh5M,MAAQA,GACfg5M,GAAOlD,aAAeA,EACtBkD,GAAO8jB,OA15NP,SAAgB92G,GAEd,OADWjpJ,GAAQipJ,GAAcg1F,GAAc4K,IACnC5/F,IAy5NdgzF,GAAO9xN,KA/0NP,SAAc8+H,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAI8e,GAAY9e,GACd,OAAOq/E,GAASr/E,GAAcyvF,GAAWzvF,GAAcA,EAAW96J,OAEpE,IAAIuT,EAAMk+O,GAAO32F,GACjB,OAAIvnJ,GAAOktO,GAAUltO,GAAOutO,EACnBhmF,EAAW9+H,KAEbm8N,GAASr9F,GAAY96J,QAq0N9B8tP,GAAOqc,UAAYA,GACnBrc,GAAO7pP,KA/xNP,SAAc62J,EAAY5+H,EAAWquI,GACnC,IAAIz3H,EAAOjhC,GAAQipJ,GAAcqtF,GAAY+S,GAI7C,OAHI3wF,GAASq0F,GAAe9jG,EAAY5+H,EAAWquI,KACjDruI,EAAY57B,GAEPwyC,EAAKgoH,EAAYy+F,GAAYr9N,EAAW,KA2xNjD4xN,GAAO+jB,YAhsRP,SAAqBj9P,EAAOxX,GAC1B,OAAO+9P,GAAgBvmP,EAAOxX,IAgsRhC0wP,GAAOgkB,cApqRP,SAAuBl9P,EAAOxX,EAAOiqP,GACnC,OAAOmU,GAAkB5mP,EAAOxX,EAAOm8P,GAAYlS,EAAU,KAoqR/DyG,GAAOikB,cAjpRP,SAAuBn9P,EAAOxX,GAC5B,IAAI4C,EAAkB,MAAT4U,EAAgB,EAAIA,EAAM5U,OACvC,GAAIA,EAAQ,CACV,IAAIwF,EAAQ21P,GAAgBvmP,EAAOxX,GACnC,GAAIoI,EAAQxF,GAAUswP,GAAG17O,EAAMpP,GAAQpI,GACrC,OAAOoI,EAGX,OAAQ,GA0oRVsoP,GAAOkkB,gBArnRP,SAAyBp9P,EAAOxX,GAC9B,OAAO+9P,GAAgBvmP,EAAOxX,GAAO,IAqnRvC0wP,GAAOmkB,kBAzlRP,SAA2Br9P,EAAOxX,EAAOiqP,GACvC,OAAOmU,GAAkB5mP,EAAOxX,EAAOm8P,GAAYlS,EAAU,IAAI,IAylRnEyG,GAAOokB,kBAtkRP,SAA2Bt9P,EAAOxX,GAEhC,GADsB,MAATwX,GAAoBA,EAAM5U,OAC3B,CACV,IAAIwF,EAAQ21P,GAAgBvmP,EAAOxX,GAAO,GAAQ,EAClD,GAAIkzP,GAAG17O,EAAMpP,GAAQpI,GACnB,OAAOoI,EAGX,OAAQ,GA+jRVsoP,GAAOsc,UAAYA,GACnBtc,GAAOx6F,WA3oEP,SAAoBtoH,EAAQ3iB,EAAQxiB,GAOlC,OANAmlC,EAASld,GAASkd,GAClBnlC,EAAuB,MAAZA,EACP,EACAsqP,GAAUl2I,GAAUp0G,GAAW,EAAGmlC,EAAOhrC,QAE7CqoB,EAAS+zO,GAAa/zO,GACf2iB,EAAO3lC,MAAMQ,EAAUA,EAAWwiB,EAAOroB,SAAWqoB,GAqoE7DylO,GAAO7zM,SAAWA,GAClB6zM,GAAOqkB,IAzUP,SAAav9P,GACX,OAAQA,GAASA,EAAM5U,OACnB8oP,GAAQl0O,EAAOmuC,IACf,GAuUN+qM,GAAOskB,MA7SP,SAAex9P,EAAOyyO,GACpB,OAAQzyO,GAASA,EAAM5U,OACnB8oP,GAAQl0O,EAAO2kP,GAAYlS,EAAU,IACrC,GA2SNyG,GAAO3xP,SA7hEP,SAAkB6uC,EAAQnnB,EAAS0mJ,GAIjC,IAAIlpG,EAAWysL,GAAO2F,iBAElBlpF,GAASq0F,GAAe5zN,EAAQnnB,EAAS0mJ,KAC3C1mJ,EAAUvjB,GAEZ0qC,EAASld,GAASkd,GAClBnnB,EAAU8kP,GAAa,GAAI9kP,EAASw9C,EAAUwhM,IAE9C,IAIIwP,EACAC,EALAr9P,EAAU0zP,GAAa,GAAI9kP,EAAQ5O,QAASosD,EAASpsD,QAAS4tP,IAC9D0P,EAAcj6P,GAAKrD,GACnBu9P,EAAgBlpB,GAAWr0O,EAASs9P,GAIpC/sQ,EAAQ,EACRitQ,EAAc5uP,EAAQ4uP,aAAehvB,GACrCrhO,EAAS,WAGTswP,EAAe31I,IAChBl5G,EAAQsnB,QAAUs4M,IAAWrhO,OAAS,IACvCqwP,EAAYrwP,OAAS,KACpBqwP,IAAgBpwB,EAAgBY,GAAeQ,IAAWrhO,OAAS,KACnEyB,EAAQ8uP,UAAYlvB,IAAWrhO,OAAS,KACzC,KAMEwwP,EAAY,kBACbrpO,GAAexY,KAAKlN,EAAS,cACzBA,EAAQ+uP,UAAY,IAAIv1Q,QAAQ,MAAO,KACvC,6BAA+BuoP,GAAmB,KACnD,KAEN56M,EAAO3tC,QAAQq1Q,EAAc,SAASvlO,EAAO0lO,EAAaC,EAAkBC,EAAiBC,EAAetsQ,GAsB1G,OArBAosQ,IAAqBA,EAAmBC,GAGxC3wP,GAAU4oB,EAAO3lC,MAAMG,EAAOkB,GAAQrJ,QAAQqmP,GAAmBqG,IAG7D8oB,IACFR,GAAa,EACbjwP,GAAU,YAAcywP,EAAc,UAEpCG,IACFV,GAAe,EACflwP,GAAU,OAAS4wP,EAAgB,eAEjCF,IACF1wP,GAAU,iBAAmB0wP,EAAmB,+BAElDttQ,EAAQkB,EAASymC,EAAMntC,OAIhBmtC,IAGT/qB,GAAU,OAIV,IAAI6wP,EAAW1pO,GAAexY,KAAKlN,EAAS,aAAeA,EAAQovP,SACnE,GAAKA,GAKA,GAAIjwB,GAA2BnkO,KAAKo0P,GACvC,MAAM,IAAI/iP,GA3idmB,2DAsid7B9N,EAAS,iBAAmBA,EAAS,QASvCA,GAAUkwP,EAAelwP,EAAO/kB,QAAQukP,EAAsB,IAAMx/N,GACjE/kB,QAAQwkP,EAAqB,MAC7BxkP,QAAQykP,EAAuB,OAGlC1/N,EAAS,aAAe6wP,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCZ,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJlwP,EACA,gBAEF,IAAIqW,EAASgyO,GAAQ,WACnB,OAAOj3F,GAAS++F,EAAaK,EAAY,UAAYxwP,GAClDoxB,MAAMlzC,EAAWkyQ,KAMtB,GADA/5O,EAAOrW,OAASA,EACZk3N,GAAQ7gN,GACV,MAAMA,EAER,OAAOA,GA46DTq1N,GAAOolB,MApsBP,SAAet/N,EAAGyzM,GAEhB,IADAzzM,EAAIqmE,GAAUrmE,IACN,GAAKA,EAAI58B,EACf,MAAO,GAET,IAAIxR,EAAQw6O,EACRhgP,EAAS6sP,GAAUj5M,EAAGosM,GAE1BqH,EAAWkS,GAAYlS,GACvBzzM,GAAKosM,EAGL,IADA,IAAIvnN,EAASywN,GAAUlpP,EAAQqnP,KACtB7hP,EAAQouC,GACfyzM,EAAS7hP,GAEX,OAAOizB,GAsrBTq1N,GAAO2T,SAAWA,GAClB3T,GAAO7zI,UAAYA,GACnB6zI,GAAO0a,SAAWA,GAClB1a,GAAOqlB,QAx5DP,SAAiB/1Q,GACf,OAAO0wB,GAAS1wB,GAAOqb,eAw5DzBq1O,GAAO8T,SAAWA,GAClB9T,GAAOslB,cApuIP,SAAuBh2Q,GACrB,OAAOA,EACH+yP,GAAUl2I,GAAU78G,IAAQ,iBAAmB4Z,GACpC,IAAV5Z,EAAcA,EAAQ,GAkuI7B0wP,GAAOhgO,SAAWA,GAClBggO,GAAOulB,QAn4DP,SAAiBj2Q,GACf,OAAO0wB,GAAS1wB,GAAOqsC,eAm4DzBqkN,GAAOn1O,KA12DP,SAAcqyB,EAAQs2N,EAAO/2F,GAE3B,IADAv/H,EAASld,GAASkd,MACHu/H,GAAS+2F,IAAUhhQ,GAChC,OAAO6oP,GAASn+M,GAElB,IAAKA,KAAYs2N,EAAQlF,GAAakF,IACpC,OAAOt2N,EAET,IAAIy+M,EAAazM,GAAchyM,GAC3B0+M,EAAa1M,GAAcskB,GAI/B,OAAOlE,GAAU3T,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAET79M,KAAK,KA81DhDiiN,GAAOwlB,QAx0DP,SAAiBtoO,EAAQs2N,EAAO/2F,GAE9B,IADAv/H,EAASld,GAASkd,MACHu/H,GAAS+2F,IAAUhhQ,GAChC,OAAO0qC,EAAO3lC,MAAM,EAAG+jP,GAAgBp+M,GAAU,GAEnD,IAAKA,KAAYs2N,EAAQlF,GAAakF,IACpC,OAAOt2N,EAET,IAAIy+M,EAAazM,GAAchyM,GAG/B,OAAOoyN,GAAU3T,EAAY,EAFnBE,GAAcF,EAAYzM,GAAcskB,IAAU,GAEvBz1N,KAAK,KA8zD5CiiN,GAAOylB,UAxyDP,SAAmBvoO,EAAQs2N,EAAO/2F,GAEhC,IADAv/H,EAASld,GAASkd,MACHu/H,GAAS+2F,IAAUhhQ,GAChC,OAAO0qC,EAAO3tC,QAAQqlP,GAAa,IAErC,IAAK13M,KAAYs2N,EAAQlF,GAAakF,IACpC,OAAOt2N,EAET,IAAIy+M,EAAazM,GAAchyM,GAG/B,OAAOoyN,GAAU3T,EAFLD,GAAgBC,EAAYzM,GAAcskB,KAElBz1N,KAAK,KA8xD3CiiN,GAAO0lB,SAtvDP,SAAkBxoO,EAAQnnB,GACxB,IAAI7jB,EAnvdmB,GAovdnByzQ,EAnvdqB,MAqvdzB,GAAIvsE,GAASrjL,GAAU,CACrB,IAAI65B,EAAY,cAAe75B,EAAUA,EAAQ65B,UAAYA,EAC7D19C,EAAS,WAAY6jB,EAAUo2F,GAAUp2F,EAAQ7jB,QAAUA,EAC3DyzQ,EAAW,aAAc5vP,EAAUu4O,GAAav4O,EAAQ4vP,UAAYA,EAItE,IAAIpC,GAFJrmO,EAASld,GAASkd,IAEKhrC,OACvB,GAAIiqP,GAAWj/M,GAAS,CACtB,IAAIy+M,EAAazM,GAAchyM,GAC/BqmO,EAAY5nB,EAAWzpP,OAEzB,GAAIA,GAAUqxQ,EACZ,OAAOrmO,EAET,IAAI/lC,EAAMjF,EAASuqP,GAAWkpB,GAC9B,GAAIxuQ,EAAM,EACR,OAAOwuQ,EAET,IAAIh7O,EAASgxN,EACT2T,GAAU3T,EAAY,EAAGxkP,GAAK4mC,KAAK,IACnCb,EAAO3lC,MAAM,EAAGJ,GAEpB,GAAIy4C,IAAcp9C,EAChB,OAAOm4B,EAASg7O,EAKlB,GAHIhqB,IACFxkP,GAAQwzB,EAAOz4B,OAASiF,GAEtB+mC,GAAS0R,IACX,GAAI1S,EAAO3lC,MAAMJ,GAAKykH,OAAOhsE,GAAY,CACvC,IAAIvQ,EACA0Z,EAAYpuB,EAMhB,IAJKilB,EAAU/Z,SACb+Z,EAAYq/E,GAAOr/E,EAAUt7B,OAAQ0L,GAASo1N,GAAQ3oM,KAAKmD,IAAc,MAE3EA,EAAUu+C,UAAY,EACd9uD,EAAQuQ,EAAUnD,KAAKsM,IAC7B,IAAI6sN,EAASvmO,EAAM3nC,MAErBizB,EAASA,EAAOpzB,MAAM,EAAGquQ,IAAWpzQ,EAAY2E,EAAMyuQ,SAEnD,GAAI1oO,EAAOlmC,QAAQs3P,GAAa1+M,GAAYz4C,IAAQA,EAAK,CAC9D,IAAIO,EAAQizB,EAAO7zB,YAAY84C,GAC3Bl4C,GAAS,IACXizB,EAASA,EAAOpzB,MAAM,EAAGG,IAG7B,OAAOizB,EAASg7O,GAksDlB3lB,GAAOnjN,SA5qDP,SAAkBK,GAEhB,OADAA,EAASld,GAASkd,KACAi3M,EAAiBpjO,KAAKmsB,GACpCA,EAAO3tC,QAAQ0kP,EAAe4I,IAC9B3/M,GAyqDN8iN,GAAOruN,SAvpBP,SAAkB61C,GAChB,IAAIzzD,IAAOqpO,GACX,OAAOp9N,GAASwnD,GAAUzzD,GAspB5BisO,GAAOuc,UAAYA,GACnBvc,GAAOic,WAAaA,GAGpBjc,GAAOx0C,KAAOpqM,GACd4+O,GAAO6lB,UAAY3N,GACnBlY,GAAOjwP,MAAQ4oC,GAEfskO,GAAMjd,IACA1rO,GAAS,GACb0xO,GAAWhG,GAAQ,SAASh7M,EAAMqyI,GAC3B57I,GAAexY,KAAK+8N,GAAOv/N,UAAW42J,KACzC/iK,GAAO+iK,GAAcryI,KAGlB1wB,IACH,CAAE,OAAS,IAWjB0rO,GAAOv3D,QA/ihBK,UAkjhBZ+wD,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,gBAAiB,SAASniE,GACxF2oE,GAAO3oE,GAAY3+B,YAAcsnG,KAInCxG,GAAU,CAAC,OAAQ,QAAS,SAASniE,EAAY3/K,GAC/CwoP,GAAYz/N,UAAU42J,GAAc,SAASvxI,GAC3CA,EAAIA,IAAMtzC,EAAY,EAAIssP,GAAU3yI,GAAUrmE,GAAI,GAElD,IAAInb,EAAU58B,KAAK+yP,eAAiBppP,EAChC,IAAIwoP,GAAYnyP,MAChBA,KAAK4jJ,QAUT,OARIhnH,EAAOm2N,aACTn2N,EAAOq2N,cAAgBjC,GAAUj5M,EAAGnb,EAAOq2N,eAE3Cr2N,EAAOs2N,UAAUtvP,KAAK,CACpB,KAAQotP,GAAUj5M,EAAGosM,GACrB,KAAQ76D,GAAc1sJ,EAAOk2N,QAAU,EAAI,QAAU,MAGlDl2N,GAGTu1N,GAAYz/N,UAAU42J,EAAa,SAAW,SAASvxI,GACrD,OAAO/3C,KAAK6J,UAAUy/K,GAAYvxI,GAAGluC,aAKzC4hP,GAAU,CAAC,SAAU,MAAO,aAAc,SAASniE,EAAY3/K,GAC7D,IAAIjJ,EAAOiJ,EAAQ,EACfouQ,EAjihBe,GAiihBJr3Q,GA/hhBG,GA+hhByBA,EAE3CyxP,GAAYz/N,UAAU42J,GAAc,SAASkiE,GAC3C,IAAI5uN,EAAS58B,KAAK4jJ,QAMlB,OALAhnH,EAAOo2N,cAAcpvP,KAAK,CACxB,SAAY85P,GAAYlS,EAAU,GAClC,KAAQ9qP,IAEVk8B,EAAOm2N,aAAen2N,EAAOm2N,cAAgBglB,EACtCn7O,KAKX6uN,GAAU,CAAC,OAAQ,QAAS,SAASniE,EAAY3/K,GAC/C,IAAIquQ,EAAW,QAAUruQ,EAAQ,QAAU,IAE3CwoP,GAAYz/N,UAAU42J,GAAc,WAClC,OAAOtpL,KAAKg4Q,GAAU,GAAGz2Q,QAAQ,MAKrCkqP,GAAU,CAAC,UAAW,QAAS,SAASniE,EAAY3/K,GAClD,IAAIsuQ,EAAW,QAAUtuQ,EAAQ,GAAK,SAEtCwoP,GAAYz/N,UAAU42J,GAAc,WAClC,OAAOtpL,KAAK+yP,aAAe,IAAIZ,GAAYnyP,MAAQA,KAAKi4Q,GAAU,MAItE9lB,GAAYz/N,UAAUub,QAAU,WAC9B,OAAOjuC,KAAKmV,OAAO+xC,KAGrBirM,GAAYz/N,UAAUrtB,KAAO,SAASg7B,GACpC,OAAOrgC,KAAKmV,OAAOkrB,GAAWuK,QAGhCunN,GAAYz/N,UAAUw3O,SAAW,SAAS7pO,GACxC,OAAOrgC,KAAK6J,UAAUxE,KAAKg7B,IAG7B8xN,GAAYz/N,UAAU03O,UAAY1L,GAAS,SAASvtH,EAAMtxI,GACxD,MAAmB,mBAARsxI,EACF,IAAIghH,GAAYnyP,MAElBA,KAAKyJ,IAAI,SAASlI,GACvB,OAAOw4P,GAAWx4P,EAAO4vI,EAAMtxI,OAInCsyP,GAAYz/N,UAAU+iG,OAAS,SAASp1F,GACtC,OAAOrgC,KAAKmV,OAAOmnM,GAAOohD,GAAYr9N,MAGxC8xN,GAAYz/N,UAAUlpB,MAAQ,SAASL,EAAOC,GAC5CD,EAAQi1G,GAAUj1G,GAElB,IAAIyzB,EAAS58B,KACb,OAAI48B,EAAOm2N,eAAiB5pP,EAAQ,GAAKC,EAAM,GACtC,IAAI+oP,GAAYv1N,IAErBzzB,EAAQ,EACVyzB,EAASA,EAAOw1O,WAAWjpQ,GAClBA,IACTyzB,EAASA,EAAOgwH,KAAKzjJ,IAEnBC,IAAQ3E,IAEVm4B,GADAxzB,EAAMg1G,GAAUh1G,IACD,EAAIwzB,EAAO4zO,WAAWpnQ,GAAOwzB,EAAOj4B,KAAKyE,EAAMD,IAEzDyzB,IAGTu1N,GAAYz/N,UAAU2/O,eAAiB,SAAShyO,GAC9C,OAAOrgC,KAAK6J,UAAUyoQ,UAAUjyO,GAAWx2B,WAG7CsoP,GAAYz/N,UAAUxK,QAAU,WAC9B,OAAOloB,KAAK2E,KAAKw/O,IAInB8T,GAAW9F,GAAYz/N,UAAW,SAASukB,EAAMqyI,GAC/C,IAAI4uF,EAAgB,qCAAqCl1P,KAAKsmK,GAC1D6uF,EAAU,kBAAkBn1P,KAAKsmK,GACjC8uF,EAAanmB,GAAOkmB,EAAW,QAAwB,QAAd7uF,EAAuB,QAAU,IAAOA,GACjF+uF,EAAeF,GAAW,QAAQn1P,KAAKsmK,GAEtC8uF,IAGLnmB,GAAOv/N,UAAU42J,GAAc,WAC7B,IAAI/nL,EAAQvB,KAAKyyP,YACb5yP,EAAOs4Q,EAAU,CAAC,GAAK7+P,UACvBg/P,EAAS/2Q,aAAiB4wP,GAC1B3G,EAAW3rP,EAAK,GAChB04Q,EAAUD,GAAUtiQ,GAAQzU,GAE5BwoQ,EAAc,SAASxoQ,GACzB,IAAIq7B,EAASw7O,EAAWzgO,MAAMs6M,GAAQ/F,GAAU,CAAC3qP,GAAQ1B,IACzD,OAAQs4Q,GAAW3lB,EAAY51N,EAAO,GAAKA,GAGzC27O,GAAWL,GAAoC,mBAAZ1sB,GAA6C,GAAnBA,EAASrnP,SAExEm0Q,EAASC,GAAU,GAErB,IAAI/lB,EAAWxyP,KAAK2yP,UAChB6lB,IAAax4Q,KAAK0yP,YAAYvuP,OAC9Bs0Q,EAAcJ,IAAiB7lB,EAC/BkmB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5Bh3Q,EAAQm3Q,EAAWn3Q,EAAQ,IAAI4wP,GAAYnyP,MAC3C,IAAI48B,EAASqa,EAAKU,MAAMp2C,EAAO1B,GAE/B,OADA+8B,EAAO81N,YAAY9uP,KAAK,CAAE,KAAQigQ,GAAM,KAAQ,CAACkG,GAAc,QAAWtlQ,IACnE,IAAI2tP,GAAcx1N,EAAQ41N,GAEnC,OAAIimB,GAAeC,EACVzhO,EAAKU,MAAM33C,KAAMH,IAE1B+8B,EAAS58B,KAAK6jQ,KAAKkG,GACZ0O,EAAeN,EAAUv7O,EAAOr7B,QAAQ,GAAKq7B,EAAOr7B,QAAWq7B,OAK1E6uN,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,WAAY,SAASniE,GACxE,IAAIryI,EAAOg4M,GAAW3lE,GAClBqvF,EAAY,0BAA0B31P,KAAKsmK,GAAc,MAAQ,OACjE+uF,EAAe,kBAAkBr1P,KAAKsmK,GAE1C2oE,GAAOv/N,UAAU42J,GAAc,WAC7B,IAAIzpL,EAAOyZ,UACX,GAAI++P,IAAiBr4Q,KAAK2yP,UAAW,CACnC,IAAIpxP,EAAQvB,KAAKuB,QACjB,OAAO01C,EAAKU,MAAM3hC,GAAQzU,GAASA,EAAQ,GAAI1B,GAEjD,OAAOG,KAAK24Q,GAAW,SAASp3Q,GAC9B,OAAO01C,EAAKU,MAAM3hC,GAAQzU,GAASA,EAAQ,GAAI1B,QAMrDo4P,GAAW9F,GAAYz/N,UAAW,SAASukB,EAAMqyI,GAC/C,IAAI8uF,EAAanmB,GAAO3oE,GACxB,GAAI8uF,EAAY,CACd,IAAIz7P,EAAMy7P,EAAWj3Q,KAAO,GACvBusC,GAAexY,KAAKq8N,GAAW50O,KAClC40O,GAAU50O,GAAO,IAEnB40O,GAAU50O,GAAK/Y,KAAK,CAAE,KAAQ0lL,EAAY,KAAQ8uF,OAItD7mB,GAAU4S,GAAa1/P,EAlthBA,GAkthB+BtD,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQsD,IAIV0tP,GAAYz/N,UAAUkxH,MAh9dtB,WACE,IAAIhnH,EAAS,IAAIu1N,GAAYnyP,KAAKyyP,aAOlC,OANA71N,EAAO81N,YAAc2B,GAAUr0P,KAAK0yP,aACpC91N,EAAOk2N,QAAU9yP,KAAK8yP,QACtBl2N,EAAOm2N,aAAe/yP,KAAK+yP,aAC3Bn2N,EAAOo2N,cAAgBqB,GAAUr0P,KAAKgzP,eACtCp2N,EAAOq2N,cAAgBjzP,KAAKizP,cAC5Br2N,EAAOs2N,UAAYmB,GAAUr0P,KAAKkzP,WAC3Bt2N,GAy8dTu1N,GAAYz/N,UAAU7oB,QA97dtB,WACE,GAAI7J,KAAK+yP,aAAc,CACrB,IAAIn2N,EAAS,IAAIu1N,GAAYnyP,MAC7B48B,EAAOk2N,SAAW,EAClBl2N,EAAOm2N,cAAe,OAEtBn2N,EAAS58B,KAAK4jJ,SACPkvG,UAAY,EAErB,OAAOl2N,GAs7dTu1N,GAAYz/N,UAAUnxB,MA36dtB,WACE,IAAIwX,EAAQ/Y,KAAKyyP,YAAYlxP,QACzB+J,EAAMtL,KAAK8yP,QACX3T,EAAQnpO,GAAQ+C,GAChB6/P,EAAUttQ,EAAM,EAChB67P,EAAYhoB,EAAQpmO,EAAM5U,OAAS,EACnC8N,EA8pIN,SAAiB9I,EAAOC,EAAK8iQ,GAI3B,IAHA,IAAIviQ,GAAS,EACTxF,EAAS+nQ,EAAW/nQ,SAEfwF,EAAQxF,GAAQ,CACvB,IAAI2L,EAAOo8P,EAAWviQ,GAClBw2B,EAAOrwB,EAAKqwB,KAEhB,OAAQrwB,EAAKpP,MACX,IAAK,OAAayI,GAASg3B,EAAM,MACjC,IAAK,YAAa/2B,GAAO+2B,EAAM,MAC/B,IAAK,OAAa/2B,EAAM4nP,GAAU5nP,EAAKD,EAAQg3B,GAAO,MACtD,IAAK,YAAah3B,EAAQ4nP,GAAU5nP,EAAOC,EAAM+2B,IAGrD,MAAO,CAAE,MAASh3B,EAAO,IAAOC,GA7qIrByvQ,CAAQ,EAAG1R,EAAWnnQ,KAAKkzP,WAClC/pP,EAAQ8I,EAAK9I,MACbC,EAAM6I,EAAK7I,IACXjF,EAASiF,EAAMD,EACfQ,EAAQivQ,EAAUxvQ,EAAOD,EAAQ,EACjCq0P,EAAYx9P,KAAKgzP,cACjB8lB,EAAatb,EAAUr5P,OACvB0nP,EAAW,EACXktB,EAAY/nB,GAAU7sP,EAAQnE,KAAKizP,eAEvC,IAAK9T,IAAWy5B,GAAWzR,GAAahjQ,GAAU40Q,GAAa50Q,EAC7D,OAAO48P,GAAiBhoP,EAAO/Y,KAAK0yP,aAEtC,IAAI91N,EAAS,GAEbixL,EACA,KAAO1pN,KAAY0nP,EAAWktB,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbz3Q,EAAQwX,EAHZpP,GAAS2B,KAKA0tQ,EAAYF,GAAY,CAC/B,IAAIhpQ,EAAO0tP,EAAUwb,GAEjBt4Q,EAAOoP,EAAKpP,KACZg3P,GAAWlM,EAFA17O,EAAK07O,UAEIjqP,GAExB,GA7zDY,GA6zDRb,EACFa,EAAQm2P,OACH,IAAKA,EAAU,CACpB,GAj0Da,GAi0DTh3P,EACF,SAASmtN,EAET,MAAMA,GAIZjxL,EAAOivN,KAActqP,EAEvB,OAAOq7B,GAg4dTq1N,GAAOv/N,UAAU4lH,GAAK0xH,GACtB/X,GAAOv/N,UAAUo3O,MA1iQjB,WACE,OAAOA,GAAM9pQ,OA0iQfiyP,GAAOv/N,UAAUumP,OA7gQjB,WACE,OAAO,IAAI7mB,GAAcpyP,KAAKuB,QAASvB,KAAK2yP,YA6gQ9CV,GAAOv/N,UAAU7uB,KAp/PjB,WACM7D,KAAK6yP,aAAepuP,IACtBzE,KAAK6yP,WAAa3qO,GAAQloB,KAAKuB,UAEjC,IAAIqzB,EAAO50B,KAAK4yP,WAAa5yP,KAAK6yP,WAAW1uP,OAG7C,MAAO,CAAE,KAAQywB,EAAM,MAFXA,EAAOnwB,EAAYzE,KAAK6yP,WAAW7yP,KAAK4yP,eAg/PtDX,GAAOv/N,UAAUwxO,MA77PjB,SAAsB3iQ,GAIpB,IAHA,IAAIq7B,EACAgK,EAAS5mC,KAEN4mC,aAAkB2rN,IAAY,CACnC,IAAI3uG,EAAQyuG,GAAazrN,GACzBg9G,EAAMgvG,UAAY,EAClBhvG,EAAMivG,WAAapuP,EACfm4B,EACFu3L,EAASs+B,YAAc7uG,EAEvBhnH,EAASgnH,EAEX,IAAIuwE,EAAWvwE,EACfh9G,EAASA,EAAO6rN,YAGlB,OADAt+B,EAASs+B,YAAclxP,EAChBq7B,GA66PTq1N,GAAOv/N,UAAU7oB,QAt5PjB,WACE,IAAItI,EAAQvB,KAAKyyP,YACjB,GAAIlxP,aAAiB4wP,GAAa,CAChC,IAAI+mB,EAAU33Q,EAUd,OATIvB,KAAK0yP,YAAYvuP,SACnB+0Q,EAAU,IAAI/mB,GAAYnyP,QAE5Bk5Q,EAAUA,EAAQrvQ,WACV6oP,YAAY9uP,KAAK,CACvB,KAAQigQ,GACR,KAAQ,CAACh6P,IACT,QAAWpF,IAEN,IAAI2tP,GAAc8mB,EAASl5Q,KAAK2yP,WAEzC,OAAO3yP,KAAK6jQ,KAAKh6P,KAw4PnBooP,GAAOv/N,UAAU62C,OAAS0oL,GAAOv/N,UAAUomB,QAAUm5M,GAAOv/N,UAAUnxB,MAv3PtE,WACE,OAAOw/P,GAAiB/gQ,KAAKyyP,YAAazyP,KAAK0yP,cAy3PjDT,GAAOv/N,UAAU1wB,MAAQiwP,GAAOv/N,UAAUkY,KAEtCslN,KACF+B,GAAOv/N,UAAUw9N,IAj+PnB,WACE,OAAOlwP,OAk+PFiyP,GAMDlD,GAQN3vK,GAAKgzB,EAAIA,IAITr1E,cACE,OAAOq1E,KADH,oCAeRl9E,KAAKl1B,Q,6bC5xhBP,SAASm5Q,EAA0Dx3Q,EAAIC,GAIrE,GAJqF,EAALD,IAC9E,KAAsB,EAAG,aAAc,IACvC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMy3Q,EAAoBx3Q,EAAIoQ,UAC9B,KAAkB,QAASonQ,GAC3B,KAAiB,GACjB,KAA0B,IAAKA,EAAmB,MAEtD,SAASC,EAA6C13Q,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACzE,IAAM23Q,EAAM,OACZ,KAAsB,EAAG,iBAAkB,IAC3C,KAAsB,EAAG,aAAc,IACvC,KAAkB,kBAAmB,SAA4FxnP,GAA6E,OAAnE,KAAqBwnP,GAAqB,KAAqB,GAAkBC,gBAAgBznP,EAAOvwB,SACnP,KAAkB,EAAG43Q,EAA2D,EAAG,EAAG,aAAc,IACpG,OACA,OACF,GAAS,EAALx3Q,EAAQ,CACV,IAAM+0G,EAAS,KAAqB,GACpC,KAAkB,aAAcA,EAAO8iK,qBAAvC,CAA6D,QAAS9iK,EAAO7gD,OAC7E,KAAiB,GACjB,KAAkB,QAAS6gD,EAAOv4F,SAAlC,CAA4C,WAAYu4F,EAAO1pF,SAA/D,CAAyE,aAAc0pF,EAAO+iK,MAAMC,mBACpG,KAAiB,GACjB,KAAkB,UAAWhjK,EAAOijK,4BAExC,SAASC,EAAkCj4Q,EAAIC,GAI7C,GAJ6D,EAALD,IACtD,KAAsB,EAAG,MAAO,IAChC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMs0G,EAAS,KAAqB,GACpC,KAAiB,GACjB,KAAyBA,EAAO93F,WAEpC,SAAS07P,EAA4Bl4Q,EAAIC,GAQvC,GARuD,EAALD,IAChD,KAAsB,EAAG,MAAO,IAChC,KAAsB,EAAG,MAAO,IAChC,KAAc,GACd,OACA,KAAkB,EAAG03Q,EAA8C,EAAG,EAAG,iBAAkB,IAC3F,KAAkB,EAAGO,EAAmC,EAAG,EAAG,MAAO,IACrE,QACO,EAALj4Q,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAiB,GACjB,KAA0B,IAAKA,EAAOwzP,MAAMC,kBAAmB,KAC/D,KAAiB,GACjB,KAAkB,OAAQzzP,EAAO0zP,0BAA0Bx1Q,OAAS,GACpE,KAAiB,GACjB,KAAkB,OAAQ8hB,EAAO0zP,0BAA0Bx1Q,QAAU,IAEzE,SAAS21Q,EAA+Bn4Q,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC3D,IAAMm8G,EAAO,OACb,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAuI,OAAnE,KAAqBA,GAAsB,OAAsCi8J,cAChL,OACA,KAAsB,EAAG,MAAO,GAChC,KAAiB,EAAG,OAAQ,IAC5B,OACA,OACF,GAAS,EAALp4Q,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAkB,aAAcA,EAAOmhK,MAAMO,eAA7C,CAA6D,qBAAsB1hK,EAAO2hK,2BAA1F,CAAsH,qBAAsB,QAA5I,CAAqJ,WAAY3hK,EAAO2hK,4BACxK,KAAmB,aAAc3hK,EAAOmhK,MAAMO,iBAElD,SAASE,EAAgCv4Q,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC5D,IAAMozG,EAAO,OACb,OACA,OACA,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAyI,OAApE,KAAqBA,GAAuB,OAAuColK,aACnL,OACA,KAAsB,EAAG,MAAO,GAChC,KAAiB,EAAG,OAAQ,IAC5B,OACA,OACF,GAAS,EAALx4Q,EAAQ,CACV,IAAMuzG,EAAS,OACf,KAAkB,aAAcA,EAAOukK,MAAMW,cAA7C,CAA4D,qBAAsBllK,EAAOmlK,uBAAzF,CAAiH,qBAAsB,QAAvI,CAAgJ,WAAYnlK,EAAOmlK,wBACnK,KAAmB,aAAcnlK,EAAOukK,MAAMW,gB,qBAE5CE,E,YACF,iCAKIt6Q,KAAKiF,QAAU,IAAI,IAEnBjF,KAAK05Q,kBAAoB,kBAEzB15Q,KAAKu6Q,cAAgB,YAErBv6Q,KAAKw6Q,kBAAoB,gBAEzBx6Q,KAAKg6Q,eAAiB,aAEtBh6Q,KAAKo6Q,cAAgB,YAErBp6Q,KAAKy6Q,cAAgB,SAACj9P,EAAMW,EAAUha,GAClC,GAAc,GAAVA,GAA2B,GAAZga,EACf,qBAAeha,GAGnB,IAAM8Z,EAAaT,EAAOW,EAEpB05E,EAAW55E,GAHjB9Z,EAASoa,KAAKukC,IAAI3+C,EAAQ,IAItBoa,KAAKG,IAAIT,EAAaE,EAAUha,GAChC8Z,EAAaE,EACjB,gBAAUF,EAAa,EAAvB,mBAA8B45E,EAA9B,eAA6C1zF,M,OAIzDm2Q,EAAiB/5Q,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK85Q,IAChFA,EAAiB11Q,WAAQ,aAAmB,CAAEE,QAAS,WAAsC,OAAO,IAAIw1Q,GAAuBz1Q,MAAOy1Q,EAAkB1zP,WAAY,S,KAU9J8zP,EAA8B,CAEhCn4Q,QAAS+3Q,EACTnxP,KAAM,CAAC,CAAC,IAAI,IAAY,IAAI,IAAYmxP,IACxClxP,WARJ,SAA6Cy7J,GACzC,OAAOA,GAAc,IAAIy1F,IA0BvBK,EAAgC,IAAI,IAAe,iCAGnDC,E,+CAEAC,EAAyB,YAAc,YAAiBD,I,iBAKxDE,E,YACF,WAAYrB,EAAO3sQ,EAAoBia,GAAQ,MAY3C,GAZ2C,qBAC3C,aACK0yP,MAAQA,EACb,EAAK3sQ,mBAAqBA,EAC1B,EAAKiuQ,WAAa,EAClB,EAAKtqD,QAAU,EACf,EAAKuqD,iBAAmB,GACxB,EAAKC,eAAgB,EACrB,EAAKC,uBAAwB,EAE7B,EAAK19P,KAAO,IAAI,IAChB,EAAK29P,aAAe1B,EAAMx0Q,QAAQf,UAAU,kBAAM,EAAK4I,mBAAmBkK,iBACtE+P,EAAU,CACV,IAAQ5I,EAAmE4I,EAAnE5I,SAAUi9P,EAAyDr0P,EAAzDq0P,gBAAiBC,EAAwCt0P,EAAxCs0P,aAAcC,EAA0Bv0P,EAA1Bu0P,qBACjC,MAAZn9P,IACA,EAAKo9P,UAAYp9P,GAEE,MAAnBi9P,IACA,EAAKJ,iBAAmBI,GAER,MAAhBC,IACA,EAAKJ,cAAgBI,GAEG,MAAxBC,IACA,EAAKJ,sBAAwBI,GAxBM,S,4DA6B/C,WAAkB,OAAOt7Q,KAAK+6Q,Y,IAC9B,SAAcx5Q,GACVvB,KAAK+6Q,WAAax8P,KAAKukC,IAAI,YAAqBvhD,GAAQ,GACxDvB,KAAK8M,mBAAmBkK,iB,kBAG5B,WAAe,OAAOhX,KAAKywN,S,IAC3B,SAAWlvN,GACPvB,KAAKywN,QAAU,YAAqBlvN,GACpCvB,KAAK8M,mBAAmBkK,iB,oBAG5B,WAAiB,OAAOhX,KAAKu7Q,W,IAC7B,SAAah6Q,GACTvB,KAAKu7Q,UAAYh9P,KAAKukC,IAAI,YAAqBvhD,GAAQ,GACvDvB,KAAKw7Q,oC,2BAGT,WAAwB,OAAOx7Q,KAAKg7Q,kB,IACpC,SAAoBz5Q,GAChBvB,KAAKg7Q,kBAAoBz5Q,GAAS,IAAIkI,IAAI,SAAA8/H,GAAC,OAAI,YAAqBA,KACpEvpI,KAAKw7Q,oC,wBAGT,WAAqB,OAAOx7Q,KAAKi7Q,e,IACjC,SAAiB15Q,GACbvB,KAAKi7Q,cAAgB,YAAsB15Q,K,gCAG/C,WAA6B,OAAOvB,KAAKk7Q,uB,IACzC,SAAyB35Q,GACrBvB,KAAKk7Q,sBAAwB,YAAsB35Q,K,sBAEvD,WACIvB,KAAKy7Q,cAAe,EACpBz7Q,KAAKw7Q,kCACLx7Q,KAAKykL,qB,yBAET,WACIzkL,KAAKm7Q,aAAavlQ,gB,sBAGtB,WACI,GAAK5V,KAAK07Q,cAAV,CAGA,IAAMC,EAAoB37Q,KAAKke,UAC/Ble,KAAKke,YACLle,KAAK47Q,eAAeD,M,0BAGxB,WACI,GAAK37Q,KAAK67Q,kBAAV,CAGA,IAAMF,EAAoB37Q,KAAKke,UAC/Ble,KAAKke,YACLle,KAAK47Q,eAAeD,M,uBAGxB,WAEI,GAAK37Q,KAAK67Q,kBAAV,CAGA,IAAMF,EAAoB37Q,KAAKke,UAC/Ble,KAAKke,UAAY,EACjBle,KAAK47Q,eAAeD,M,sBAGxB,WAEI,GAAK37Q,KAAK07Q,cAAV,CAGA,IAAMC,EAAoB37Q,KAAKke,UAC/Ble,KAAKke,UAAYle,KAAK87Q,mBAAqB,EAC3C97Q,KAAK47Q,eAAeD,M,6BAGxB,WACI,OAAO37Q,KAAKke,WAAa,GAAsB,GAAjBle,KAAKme,W,yBAGvC,WACI,IAAM49P,EAAe/7Q,KAAK87Q,mBAAqB,EAC/C,OAAO97Q,KAAKke,UAAY69P,GAAiC,GAAjB/7Q,KAAKme,W,8BAGjD,WACI,OAAKne,KAAKme,SAGHI,KAAKC,KAAKxe,KAAKmE,OAASnE,KAAKme,UAFzB,I,6BAYf,SAAgBA,GAGZ,IACMw9P,EAAoB37Q,KAAKke,UAC/Ble,KAAKke,UAAYK,KAAKs7B,MAFH75C,KAAKke,UAAYle,KAAKme,SAEAA,IAAa,EACtDne,KAAKme,SAAWA,EAChBne,KAAK47Q,eAAeD,K,kCAGxB,WACI,OAAO37Q,KAAKgtB,WAAahtB,KAAK07Q,gB,sCAGlC,WACI,OAAO17Q,KAAKgtB,WAAahtB,KAAK67Q,oB,6CAMlC,WACS77Q,KAAKy7Q,eAILz7Q,KAAKme,WACNne,KAAKu7Q,UAA2C,GAA/Bv7Q,KAAKo7Q,gBAAgBj3Q,OAClCnE,KAAKo7Q,gBAAgB,GAnLX,IAsLlBp7Q,KAAK25Q,0BAA4B35Q,KAAKo7Q,gBAAgB5xQ,SACS,IAA3DxJ,KAAK25Q,0BAA0B1wQ,QAAQjJ,KAAKme,WAC5Cne,KAAK25Q,0BAA0B/1Q,KAAK5D,KAAKme,UAG7Cne,KAAK25Q,0BAA0B99P,KAAK,SAACE,EAAGC,GAAJ,OAAUD,EAAIC,IAClDhc,KAAK8M,mBAAmBkK,kB,4BAG5B,SAAe2kQ,GACX37Q,KAAKwd,KAAK0E,KAAK,CACXy5P,oBACAz9P,UAAWle,KAAKke,UAChBC,SAAUne,KAAKme,SACfha,OAAQnE,KAAKmE,a,CAlLO02Q,G,OAsLhCC,EAAkBv6Q,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKs6Q,GAAmB,KAAyBR,GAAmB,KAAyB,KAA2B,UAAyB71Q,KAC9Nq2Q,EAAkBr6Q,UAAO,KAAyB,CAAEC,KAAMo6Q,EAAmB34Q,OAAQ,CAAE+b,UAAW,YAAa/Z,OAAQ,SAAUga,SAAU,WAAYi9P,gBAAiB,kBAAmBC,aAAc,eAAgBC,qBAAsB,uBAAwBzlN,MAAO,SAAW1zC,QAAS,CAAE3E,KAAM,QAAUlb,SAAU,CAAC,Q,sBAwCzT05Q,E,YACF,WAAYC,EAAM1rJ,EAAmBxpG,GAAQ,iCACzC,YAAMk1P,EAAM1rJ,EAAmBxpG,IAC3BA,GAA4C,MAAhCA,EAASm1P,sBACrB,EAAK1C,qBAAuBzyP,EAASm1P,qBAHA,E,wCADtBpB,G,OAQ3BkB,EAAaz7Q,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKw7Q,GAAc,KAAyB1B,GAAmB,KAAyB,KAA2B,KAAyBK,EAA+B,KAC9OqB,EAAa71Q,UAAO,KAAyB,CAAEzF,KAAMs7Q,EAAcr7Q,UAAW,CAAC,CAAC,kBAAmBoC,UAAW,CAAC,OAAQ,QAAS,EAAG,iBAAkBZ,OAAQ,CAAE6qB,SAAU,YAActU,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,MAAoC8D,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,iCAAkC,CAAC,EAAG,2BAA4B,CAAC,QAAS,0BAA2B,EAAG,QAAS,CAAC,EAAG,+BAAgC,CAAC,EAAG,6BAA8B,CAAC,kBAAmB,GAAI,OAAQ,SAAU,QAAS,iCAAkC,EAAG,aAAc,qBAAsB,qBAAsB,WAAY,QAAS,EAAG,QAAS,CAAC,kBAAmB,GAAI,OAAQ,SAAU,EAAG,oCAAqC,EAAG,aAAc,qBAAsB,qBAAsB,WAAY,SAAU,CAAC,UAAW,YAAa,YAAa,QAAS,EAAG,sBAAuB,CAAC,IAAK,iDAAkD,CAAC,kBAAmB,GAAI,OAAQ,SAAU,EAAG,gCAAiC,EAAG,aAAc,qBAAsB,qBAAsB,WAAY,SAAU,CAAC,IAAK,kDAAmD,CAAC,kBAAmB,GAAI,OAAQ,SAAU,QAAS,gCAAiC,EAAG,aAAc,qBAAsB,qBAAsB,WAAY,QAAS,EAAG,QAAS,CAAC,EAAG,2BAA4B,CAAC,EAAG,iCAAkC,CAAC,QAAS,iCAAkC,EAAG,aAAc,QAAS,EAAG,QAAS,CAAC,QAAS,gCAAiC,EAAG,QAAS,CAAC,EAAG,iCAAkC,EAAG,aAAc,SAAU,CAAC,EAAG,QAAS,WAAY,aAAc,mBAAoB,CAAC,EAAG,QAAS,EAAG,QAAS,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,iCAAkC,CAAC,kBAAmB,GAAI,OAAQ,SAAU,EAAG,iCAAkC,EAAG,aAAc,qBAAsB,qBAAsB,WAAY,SAAU,CAAC,IAAK,8DAA+D,CAAC,kBAAmB,GAAI,OAAQ,SAAU,EAAG,gCAAiC,EAAG,aAAc,qBAAsB,qBAAsB,WAAY,SAAU,CAAC,IAAK,+DAAgEhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,IACpuE,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGk4Q,EAA6B,EAAG,EAAG,MAAO,GAC/D,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,GAChC,KAAc,GACd,OACA,KAAkB,EAAGC,EAAgC,EAAG,EAAG,SAAU,GACrE,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAA2D,OAAOl4Q,EAAIu6Q,iBACjG,OACA,KAAsB,EAAG,MAAO,GAChC,KAAiB,EAAG,OAAQ,GAC5B,OACA,OACA,OACA,KAAsB,GAAI,SAAU,GACpC,KAAkB,QAAS,WAA4D,OAAOv6Q,EAAIw6Q,aAClG,OACA,KAAsB,GAAI,MAAO,GACjC,KAAiB,GAAI,OAAQ,IAC7B,OACA,OACA,KAAkB,GAAIlC,EAAiC,EAAG,EAAG,SAAU,IACvE,OACA,OACA,QACO,EAALv4Q,IACF,KAAiB,GACjB,KAAkB,QAASC,EAAIy5Q,cAC/B,KAAiB,GACjB,KAA0B,IAAKz5Q,EAAI63Q,MAAMgB,cAAc74Q,EAAIsc,UAAWtc,EAAIuc,SAAUvc,EAAIuC,QAAS,KACjG,KAAiB,GACjB,KAAkB,OAAQvC,EAAI05Q,sBAC9B,KAAiB,GACjB,KAAkB,aAAc15Q,EAAI63Q,MAAMe,kBAA1C,CAA6D,qBAAsB54Q,EAAIq4Q,2BAAvF,CAAmH,qBAAsB,QAAzI,CAAkJ,WAAYr4Q,EAAIq4Q,4BAClK,KAAmB,aAAcr4Q,EAAI63Q,MAAMe,mBAC3C,KAAiB,GACjB,KAAkB,aAAc54Q,EAAI63Q,MAAMc,cAA1C,CAAyD,qBAAsB34Q,EAAIy4Q,uBAAnF,CAA2G,qBAAsB,QAAjI,CAA0I,WAAYz4Q,EAAIy4Q,wBAC1J,KAAmB,aAAcz4Q,EAAI63Q,MAAMc,eAC3C,KAAiB,GACjB,KAAkB,OAAQ34Q,EAAI05Q,wBAC7B/0Q,WAAY,CAAC,IAAa,IAAkB,IAAmB,IAAqB,IAAkB,IAAgB,KAAmBuS,OAAQ,CAAC,uzBAAwzBtS,cAAe,EAAGwiB,gBAAiB,I,sBAmCh/BqzP,E,sDAENA,EAAmB97Q,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK67Q,IACpFA,EAAmBnjQ,UAAO,KAAwB,CAAExY,KAAM27Q,IAC1DA,EAAmBljQ,UAAO,KAAwB,CAAEgZ,UAAW,CAACuoP,GAA8BthQ,QAAS,CAAC,CAC5F,IACA,IACA,IACA,IACA,Q,wCCxfZ,oFAUA,aAqBC,WAAoBge,EAA+CD,GAA/C,KAAAC,gBAA+C,KAAAD,OAjB3D,KAAAmlP,YAAc1kP,aAAaC,QAAQ,gBACnC,KAAA0kP,WAAa3kP,aAAaC,QAAQ,cAClC,KAAA2kP,cAAgBx8Q,KAAKu8Q,WAAa,IAAMv8Q,KAAKs8Q,YAC7C,KAAA5kP,eAAiB,IAAI,IAAY,CACxC,eAAgB,mBAChBC,cAAe33B,KAAKw8Q,gBAEb,KAAAx0P,QAAU,CAAEyP,QAASz3B,KAAK03B,gBAWjC13B,KAAKy8Q,sBAAwB,IAAI,IAAiD,MAClFz8Q,KAAK08Q,uBAAyB18Q,KAAKy8Q,sBAAsBxkP,eACzDj4B,KAAK28Q,kBAAoB,IAAI,IAAwB,MACrD38Q,KAAK48Q,mBAAqB58Q,KAAK28Q,kBAAkB1kP,eACjDj4B,KAAK68Q,4BAA8B,IAAI,IAAwD,MAC/F78Q,KAAK88Q,6BAA+B98Q,KAAK68Q,4BAA4B5kP,e,OAGtE,YAAA8kP,qBAAA,SAAqBC,GACpB,IAAMlzL,GAAS,IAAI,KAAaz1E,IAAI,aAAc2oQ,GAClD,OAAOh9Q,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,qCACnC,CACCyxD,OAAQA,EACRryD,QAASz3B,KAAK03B,kBAKjB,YAAAulP,0BAAA,SAA0BC,GACzB,OAAOl9Q,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,4CACnC6kP,EACAl9Q,KAAKgoB,UAIP,YAAAm1P,sBAAA,SAAsBD,GACrB,OAAOl9Q,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,0CACnC6kP,EACAl9Q,KAAKgoB,UAIP,YAAAo1P,+BAAA,sBACCp9Q,KAAKm3B,KACHjlB,IACAlS,KAAKo3B,cAAcgB,OAAOC,OAAS,0CACnC,IAEAn0B,UAAU,SAAA4L,GAAQ,SAAK+sQ,4BAA4Bh5Q,KAAKiM,MAE3D,YAAAutQ,8BAAA,SAA8BC,GAA9B,WACOxzL,GAAS,IAAI,KAAaz1E,IAAI,gBAAiBipQ,aAAa,EAAbA,EAAerrP,YAEpEjyB,KAAKm3B,KACHjlB,IACAlS,KAAKo3B,cAAcgB,OAAOC,OAAS,2CACnC,CACCyxD,OAAQA,EACRryD,QAASz3B,KAAK03B,iBAGfxzB,UAAU,SAAA4L,GAAQ,SAAK2sQ,sBAAsB54Q,KAAKiM,M,sCAzEzCytQ,GAAwB,sB,yBAAxBA,EAAwB,QAAxBA,EAAwB,qBAFxB,S,EADb,I,0eCeA,IAAM99Q,EAAM,CAAC,KAEP6xG,EAAM,CAAC,CAAC,CAAC,GAAI,kBAAmB,IAAK,CAAC,GAAI,gBAAiB,IAAK,CAAC,GAAI,gBAAiB,IAAK,CAAC,GAAI,cAAe,KAAM,CAAC,CAAC,GAAI,WAAY,IAAK,CAAC,GAAI,UAAW,KAAM,KAClKC,EAAM,CAAC,qEAAsE,wBAAyB,KAUtGisK,E,+CAEAC,EAAoB,YAAc,YAAmBD,IAGrDE,E,+CAEAC,EAAwB,YAAmBD,GAM3CE,EAAW,IAAI,IAAe,WAM9BC,EAAe,IAAI,IAAe,c,iBAqClCC,E,YACF,WAAY/wQ,GAAW,kCACnB,aACKA,YAAcA,EAEnB,EAAKguJ,cAAgB,IAAI,IACG,gBAAxB,EAAKgjH,gBACLhxQ,EAAYnK,cAAcD,UAAUE,IAAI,mBANzB,E,iEASvB,WACI,IAAMiM,EAAW9O,KAAK+M,YAAYnK,cAAckM,SAAS8N,cACzD,MAAiB,aAAb9N,EACO,OAEM,oBAAbA,EACO,cAEJ,O,yBAEX,WACI9O,KAAK+6J,cAAcl3J,S,yBAEvB,WACI7D,KAAK+6J,cAAcj3J,e,CAxBL25Q,G,OA2BtBK,EAAQv9Q,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKs9Q,GAAS,KAAyB,OAChGA,EAAQ33Q,UAAO,KAAyB,CAAEzF,KAAMo9Q,EAASn9Q,UAAW,CAAC,CAAC,YAAa,CAAC,oBAAqBoC,UAAW,CAAC,EAAG,WAAY,iBAAkBZ,OAAQ,CAAE4mB,cAAe,gBAAiBiE,SAAU,YAActU,SAAU,CAAC,WAAYpW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAASq7Q,EAAUp7Q,YAAas7Q,KAAa,KAAmC,MAA8BjlQ,mBAAoBpZ,EAAK2G,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAA0BqB,EAAIC,GAAgB,EAALD,IAC5d,OACA,KAAoB,KACnBmX,OAAQ,CAnGL,y5aAmGYtS,cAAe,EAAGwiB,gBAAiB,I,sBAwBrDg1P,E,sDAENA,EAA0Bz9Q,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAKw9Q,IAClGA,EAA0Bv9Q,UAAO,KAAyB,CAAEC,KAAMs9Q,EAA2Br9Q,UAAW,CAAC,CAAC,GAAI,kBAAmB,IAAK,CAAC,GAAI,gBAAiB,KAAMoC,UAAW,CAAC,EAAG,qB,sBAY3Kk7Q,E,sDAENA,EAAwB19Q,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKy9Q,IAC9FA,EAAwBx9Q,UAAO,KAAyB,CAAEC,KAAMu9Q,EAAyBt9Q,UAAW,CAAC,CAAC,GAAI,gBAAiB,IAAK,CAAC,GAAI,cAAe,KAAMoC,UAAW,CAAC,EAAG,mB,sBAwBnKm7Q,E,YACF,WAAYt0P,EAAU9c,EAAoBqxQ,EAAShyM,GAAI,2BACnD,aACKviD,SAAWA,EAChB,EAAKw0P,oBAAqB,EAC1B,EAAK56Q,WAAa,IAAI,IACtB,EAAK28G,WAAY,EACjB,EAAKi+J,sBAAwBD,GAAYhyM,GAAgC,gBAAxBA,EAAK4xM,gBACtD,EAAKM,MAAQF,GAAWhyM,EAGxB,IAAM9gE,EAAU,EAAKimB,kBAV8B,MAWZ,WAAnCjmB,EAAQyD,SAAS8N,eAA+BvR,EAAQ09B,aAAa,SACrE19B,EAAQwD,aAAa,OAAQ,UAE7B,EAAKwvQ,OAGL,EAAKA,MAAMtjH,cAAc/2J,KAAK,YAAU,EAAKR,aAAaU,UAAU,WAChE4I,EAAmBkK,iBAlBwB,E,2DAuBvD,WAAiB,OAAOhX,KAAKmgH,cAAgBngH,KAAKq+Q,QAASr+Q,KAAKq+Q,MAAMrxP,W,IACtE,SAAazrB,GACTvB,KAAKmgH,UAAY,YAAsB5+G,K,gCAE3C,WACI,YAASvB,KAAKs+Q,OAAQt+Q,KAAK4pB,Y,yBAE/B,WACI5pB,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,a,+BAGpB,WACI,OAAQ9D,KAAKo+Q,oBAAsBp+Q,KAAK+oB,kBACjC/oB,KAAKq+Q,QAASr+Q,KAAKq+Q,MAAMt1P,iB,6BAGpC,WACI,OAAO/oB,KAAK4pB,SAAShnB,kB,CA1CH+6Q,G,OA6C1BO,EAAY39Q,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK09Q,GAAa,KAAyB,KAAoB,KAAyB,KAA2B,KAAyBL,EAAc,GAAI,KAAyBD,EAAU,KAClQM,EAAY/3Q,UAAO,KAAyB,CAAEzF,KAAMw9Q,EAAav9Q,UAAW,CAAC,CAAC,iBAAkB,CAAC,IAAK,gBAAiB,IAAK,CAAC,SAAU,gBAAiB,KAAMe,eAAgB,SAAoCC,EAAIC,EAAKC,GAKnN,IAAIC,EALoO,EAALH,IACnO,KAAsBE,EAAUm8Q,EAA2B,GAC3D,KAAsBn8Q,EAAUo8Q,EAAyB,GACzD,KAAsBp8Q,EAAU,IAAS,IAClC,EAALF,IAEF,KAAsBG,EAAK,UAA0BF,EAAI28Q,QAAUz8Q,EAAGE,OACtE,KAAsBF,EAAK,UAA0BF,EAAI48Q,MAAQ18Q,EAAGE,OACpE,KAAsBF,EAAK,UAA0BF,EAAI08Q,OAASx8Q,KACjEiB,UAAW,CAAC,EAAG,gBAAiB,uBAAwBwV,SAAU,EAAGC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,GACrI,KAAmB,yBAA0BC,EAAIorB,SAAjD,CAA2D,uBAAwBprB,EAAI28Q,SAAW38Q,EAAI48Q,MAAtG,CAA6G,4BAA6B58Q,EAAI28Q,SAAW38Q,EAAI48Q,QAC5Jr8Q,OAAQ,CAAE4mB,cAAe,gBAAiBiE,SAAU,YAActU,SAAU,CAAC,eAAgBpW,SAAU,CAAC,MAAoCuW,mBAAoB04F,EAAKnrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,yBAA0B,CAAC,aAAc,GAAI,EAAG,uBAAwB,EAAG,mBAAoB,qBAAsB,CAAC,EAAG,kBAAmBhG,SAAU,SAA8BqB,EAAIC,GAAgB,EAALD,IACzY,KAAuB2vG,GACvB,KAAsB,EAAG,MAAO,GAChC,KAAiB,EAAG,MAAO,GAC3B,KAAoB,GACpB,KAAsB,EAAG,MAAO,GAChC,KAAoB,EAAG,GACvB,OACA,KAAoB,EAAG,GACvB,QACO,EAAL3vG,IACF,KAAiB,GACjB,KAAkB,mBAAoBC,EAAI0vB,kBAA1C,CAA6D,oBAAqB1vB,EAAI68Q,uBACrFl4Q,WAAY,CAAC,KAAmBC,cAAe,EAAGwiB,gBAAiB,I,sBA2uBtE01P,E,sDAENA,EAAcn+Q,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKk+Q,IAC1EA,EAAcxlQ,UAAO,KAAwB,CAAExY,KAAMg+Q,IACrDA,EAAcvlQ,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAe,IAAiB,IAAiB,IAAyB,KAAe,IAC3I,IACA,IACA,O,gYC/9BF3Z,EAAM,CAAC,KACb,SAASk/Q,EAA4BC,GACjC,OAAOvqP,MAAM,sCAAD,OAAuCuqP,EAAvC,MAiBhB,SAASC,EAAmC1qO,GACxC,OAAO9f,MAAM,mIACyC8f,EADzC,OAQjB,SAAS2qO,EAAuCC,GAC5C,OAAO1qP,MAAM,qIACyC0qP,EADzC,O,IAOXC,E,YACF,WAAY7qO,EAAK8qO,EAASj3P,GAAO,oBAC7BhoB,KAAKm0C,IAAMA,EACXn0C,KAAKi/Q,QAAUA,EACfj/Q,KAAKgoB,QAAUA,I,iBAUjBk3P,E,8BACF,WAAYC,EAAaC,EAAYz0O,EAAU00O,GAAa,oBACxDr/Q,KAAKm/Q,YAAcA,EACnBn/Q,KAAKo/Q,WAAaA,EAClBp/Q,KAAKq/Q,cAAgBA,EAIrBr/Q,KAAKs/Q,gBAAkB,IAAI7xQ,IAK3BzN,KAAKu/Q,gBAAkB,IAAI9xQ,IAE3BzN,KAAKw/Q,kBAAoB,IAAI/xQ,IAE7BzN,KAAKy/Q,sBAAwB,IAAIhyQ,IAEjCzN,KAAK0/Q,uBAAyB,IAAIjyQ,IAElCzN,KAAK2/Q,WAAa,GAMlB3/Q,KAAK4/Q,qBAAuB,iBAC5B5/Q,KAAKkN,UAAYy9B,G,yBAOrB,SAAWi0O,EAAUzqO,EAAKnsB,GACtB,OAAOhoB,KAAK6/Q,sBAAsB,GAAIjB,EAAUzqO,EAAKnsB,K,+BAOzD,SAAkB42P,EAAUG,EAAS/2P,GACjC,OAAOhoB,KAAK8/Q,6BAA6B,GAAIlB,EAAUG,EAAS/2P,K,mCAQpE,SAAsB+3P,EAAWnB,EAAUzqO,EAAKnsB,GAC5C,OAAOhoB,KAAKggR,kBAAkBD,EAAWnB,EAAU,IAAII,EAAc7qO,EAAK,KAAMnsB,M,gCAUpF,SAAmB8jP,GAEf,OADA9rQ,KAAK2/Q,WAAW/7Q,KAAKkoQ,GACd9rQ,O,0CAQX,SAA6B+/Q,EAAWnB,EAAUG,EAAS/2P,GACvD,IAAMi4P,EAAejgR,KAAKo/Q,WAAWc,SAAS,IAAgBC,KAAMpB,GAEpE,IAAKkB,EACD,MAAMnB,EAAuCC,GAEjD,OAAO/+Q,KAAKggR,kBAAkBD,EAAWnB,EAAU,IAAII,EAAc,GAAIiB,EAAcj4P,M,2BAM3F,SAAcmsB,EAAKnsB,GACf,OAAOhoB,KAAKogR,yBAAyB,GAAIjsO,EAAKnsB,K,kCAMlD,SAAqB+2P,EAAS/2P,GAC1B,OAAOhoB,KAAKqgR,gCAAgC,GAAItB,EAAS/2P,K,sCAO7D,SAAyB+3P,EAAW5rO,EAAKnsB,GACrC,OAAOhoB,KAAKsgR,qBAAqBP,EAAW,IAAIf,EAAc7qO,EAAK,KAAMnsB,M,6CAO7E,SAAgC+3P,EAAWhB,EAAS/2P,GAChD,IAAMi4P,EAAejgR,KAAKo/Q,WAAWc,SAAS,IAAgBC,KAAMpB,GACpE,IAAKkB,EACD,MAAMnB,EAAuCC,GAEjD,OAAO/+Q,KAAKsgR,qBAAqBP,EAAW,IAAIf,EAAc,GAAIiB,EAAcj4P,M,oCAUpF,SAAuBmyG,GAAwB,IAAjBtyG,EAAiB,uDAALsyG,EAEtC,OADAn6H,KAAK0/Q,uBAAuBrrQ,IAAI8lH,EAAOtyG,GAChC7nB,O,mCAMX,SAAsBm6H,GAClB,OAAOn6H,KAAK0/Q,uBAAuBxtQ,IAAIioH,IAAUA,I,oCAQrD,SAAuBtyG,GAEnB,OADA7nB,KAAK4/Q,qBAAuB/3P,EACrB7nB,O,oCAMX,WACI,OAAOA,KAAK4/Q,uB,+BAUhB,SAAkBW,GAAO,WACfpsO,EAAMn0C,KAAKo/Q,WAAWc,SAAS,IAAgBM,aAAcD,GACnE,IAAKpsO,EACD,MAAM0qO,EAAmC0B,GAE7C,IAAME,EAAazgR,KAAKw/Q,kBAAkBttQ,IAAIiiC,GAC9C,OAAIssO,EACO,YAAGC,EAASD,IAEhBzgR,KAAK2gR,uBAAuB,IAAI3B,EAAcuB,EAAS,OAAOv8Q,KAAK,YAAI,SAAA48Q,GAAG,OAAI,EAAKpB,kBAAkBnrQ,IAAI8/B,EAAKysO,KAAO,YAAI,SAAAA,GAAG,OAAIF,EAASE,Q,6BAUpJ,SAAgBz/Q,GAAoB,IAAd4+Q,EAAc,uDAAF,GACxBpjQ,EAAMkkQ,EAAQd,EAAW5+Q,GAC3Bi3B,EAASp4B,KAAKs/Q,gBAAgBptQ,IAAIyK,GAEtC,GAAIyb,EACA,OAAOp4B,KAAK8gR,kBAAkB1oP,GAIlC,GADAA,EAASp4B,KAAK+gR,4BAA4BhB,EAAW5+Q,GAGjD,OADAnB,KAAKs/Q,gBAAgBjrQ,IAAIsI,EAAKyb,GACvBp4B,KAAK8gR,kBAAkB1oP,GAGlC,IAAM4oP,EAAiBhhR,KAAKu/Q,gBAAgBrtQ,IAAI6tQ,GAChD,OAAIiB,EACOhhR,KAAKihR,0BAA0B9/Q,EAAM6/Q,GAEzC,YAAWrC,EAA4BhiQ,M,yBAElD,WACI3c,KAAK2/Q,WAAa,GAClB3/Q,KAAKs/Q,gBAAgB5uQ,QACrB1Q,KAAKu/Q,gBAAgB7uQ,QACrB1Q,KAAKw/Q,kBAAkB9uQ,U,+BAK3B,SAAkB0nB,GACd,OAAIA,EAAO6mP,QAEA,YAAGyB,EAAS1gR,KAAKkhR,sBAAsB9oP,KAIvCp4B,KAAK2gR,uBAAuBvoP,GAAQp0B,KAAK,YAAI,SAAA48Q,GAAG,OAAIF,EAASE,Q,uCAW5E,SAA0Bz/Q,EAAM6/Q,GAAc,WAGpCG,EAAYnhR,KAAKohR,+BAA+BjgR,EAAM6/Q,GAC5D,GAAIG,EAIA,OAAO,YAAGA,GAId,IAAME,EAAuBL,EACxB7rQ,OAAO,SAAAmsQ,GAAa,OAAKA,EAAcrC,UACvCx1Q,IAAI,SAAA63Q,GACL,OAAO,EAAKC,0BAA0BD,GAAet9Q,KAAK,YAAW,SAAC24B,GAClE,IAAMwX,EAAM,EAAKirO,WAAWc,SAAS,IAAgBM,aAAcc,EAAcntO,KAG3E03C,EAAe,yBAAH,OAA4B13C,EAA5B,oBAA2CxX,EAAI3C,SAEjE,OADA,EAAKqlP,cAAc3zG,YAAY,IAAIr3I,MAAMw3D,IAClC,YAAG,WAKlB,OAAO,YAASw1L,GAAsBr9Q,KAAK,YAAI,WAC3C,IAAMw9Q,EAAY,EAAKJ,+BAA+BjgR,EAAM6/Q,GAE5D,IAAKQ,EACD,MAAM7C,EAA4Bx9Q,GAEtC,OAAOqgR,O,4CAQf,SAA+B5C,EAAUoC,GAErC,IAAK,IAAIn5Q,EAAIm5Q,EAAe78Q,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CACjD,IAAMuwB,EAAS4oP,EAAen5Q,GAK9B,GAAIuwB,EAAO6mP,SAAW7mP,EAAO6mP,QAAQh2Q,QAAQ21Q,IAAa,EAAG,CACzD,IAAMgC,EAAM5gR,KAAKkhR,sBAAsB9oP,GACjCopP,EAAYxhR,KAAKyhR,uBAAuBb,EAAKhC,EAAUxmP,EAAOpQ,SACpE,GAAIw5P,EACA,OAAOA,GAInB,OAAO,O,oCAMX,SAAuBppP,GAAM,WACzB,OAAOp4B,KAAK0hR,WAAWtpP,GAAQp0B,KAAK,YAAI,SAAAi7Q,GAAO,OAAI7mP,EAAO6mP,QAAUA,IAAU,YAAI,kBAAM,EAAKiC,sBAAsB9oP,Q,uCAMvH,SAA0BA,GACtB,OAAIA,EAAO6mP,QACA,YAAG,MAEPj/Q,KAAK0hR,WAAWtpP,GAAQp0B,KAAK,YAAI,SAAAi7Q,GAAO,OAAI7mP,EAAO6mP,QAAUA,O,oCAOxE,SAAuB0C,EAAS/C,EAAU52P,GAGtC,IAAM45P,EAAaD,EAAQv2Q,cAAR,eAA8BwzQ,EAA9B,OACnB,IAAKgD,EACD,OAAO,KAIX,IAAMC,EAAcD,EAAW/9H,WAAU,GAIzC,GAHAg+H,EAAYp5O,gBAAgB,MAGe,QAAvCo5O,EAAY/yQ,SAAS8N,cACrB,OAAO5c,KAAK8hR,kBAAkBD,EAAa75P,GAK/C,GAA2C,WAAvC65P,EAAY/yQ,SAAS8N,cACrB,OAAO5c,KAAK8hR,kBAAkB9hR,KAAK+hR,cAAcF,GAAc75P,GAOnE,IAAM44P,EAAM5gR,KAAKgiR,sBAAsB,eAGvC,OADApB,EAAI9oQ,YAAY+pQ,GACT7hR,KAAK8hR,kBAAkBlB,EAAK54P,K,mCAKvC,SAAsB0mB,GAClB,IAAMuzO,EAAMjiR,KAAKkN,UAAU2K,cAAc,OACzCoqQ,EAAIxzM,UAAY//B,EAChB,IAAMkyO,EAAMqB,EAAI72Q,cAAc,OAE9B,IAAKw1Q,EACD,MAAMvsP,MAAM,uBAEhB,OAAOusP,I,2BAKX,SAAcv1Q,GAIV,IAHA,IAAMu1Q,EAAM5gR,KAAKgiR,sBAAsB,eACjC96F,EAAa77K,EAAQ67K,WAElBr/K,EAAI,EAAGA,EAAIq/K,EAAW/iL,OAAQ0D,IAAK,CACxC,MAAwBq/K,EAAWr/K,GAA3B1G,EAAR,EAAQA,KACK,OAATA,GACAy/Q,EAAI/xQ,aAAa1N,EAFrB,EAAcI,OAKlB,IAAK,IAAI,EAAI,EAAG,EAAI8J,EAAQ27K,WAAW7iL,OAAQ,IACvCkH,EAAQ27K,WAAW,GAAGr/K,WAAa3H,KAAKkN,UAAUtF,cAClDg5Q,EAAI9oQ,YAAYzM,EAAQ27K,WAAW,GAAGnjC,WAAU,IAGxD,OAAO+8H,I,+BAKX,SAAkBA,EAAK54P,GASnB,OARA44P,EAAI/xQ,aAAa,MAAO,IACxB+xQ,EAAI/xQ,aAAa,SAAU,QAC3B+xQ,EAAI/xQ,aAAa,QAAS,QAC1B+xQ,EAAI/xQ,aAAa,sBAAuB,iBACxC+xQ,EAAI/xQ,aAAa,YAAa,SAC1BmZ,GAAWA,EAAQk6P,SACnBtB,EAAI/xQ,aAAa,UAAWmZ,EAAQk6P,SAEjCtB,I,wBAMX,SAAWuB,GAAU,IACbx3Q,EADa,OAEJ41Q,EAAqB4B,EAA1BhuO,IAAcnsB,EAAYm6P,EAAZn6P,QAChBo6P,EAAuG,QAApFz3Q,EAAKqd,aAAyC,EAASA,EAAQo6P,uBAAoC,IAAPz3Q,GAAgBA,EACrI,IAAK3K,KAAKm/Q,YACN,MAjbD9qP,MAAM,8JAobT,GAAe,MAAXksP,EACA,MAAMlsP,MAAM,+BAAD,OAAgCksP,EAAhC,OAEf,IAAMpsO,EAAMn0C,KAAKo/Q,WAAWc,SAAS,IAAgBM,aAAcD,GAEnE,IAAKpsO,EACD,MAAM0qO,EAAmC0B,GAK7C,IAAM8B,EAAkBriR,KAAKy/Q,sBAAsBvtQ,IAAIiiC,GACvD,GAAIkuO,EACA,OAAOA,EAEX,IAAMzmP,EAAM57B,KAAKm/Q,YAAYjtQ,IAAIiiC,EAAK,CAAEmuO,aAAc,OAAQF,oBAAmBp+Q,KAAK,YAAS,kBAAM,EAAKy7Q,sBAAsBltQ,OAAO4hC,KAAO,eAE9I,OADAn0C,KAAKy/Q,sBAAsBprQ,IAAI8/B,EAAKvY,GAC7BA,I,+BAQX,SAAkBmkP,EAAWnB,EAAUxmP,GAEnC,OADAp4B,KAAKs/Q,gBAAgBjrQ,IAAIwsQ,EAAQd,EAAWnB,GAAWxmP,GAChDp4B,O,kCAOX,SAAqB+/Q,EAAW3nP,GAC5B,IAAMmqP,EAAkBviR,KAAKu/Q,gBAAgBrtQ,IAAI6tQ,GAOjD,OANIwC,EACAA,EAAgB3+Q,KAAKw0B,GAGrBp4B,KAAKu/Q,gBAAgBlrQ,IAAI0rQ,EAAW,CAAC3nP,IAElCp4B,O,mCAGX,SAAsBo4B,GAClB,IAAKA,EAAOoqP,WAAY,CACpB,IAAM5B,EAAM5gR,KAAKgiR,sBAAsB5pP,EAAO6mP,SAC9Cj/Q,KAAK8hR,kBAAkBlB,EAAKxoP,EAAOpQ,SACnCoQ,EAAOoqP,WAAa5B,EAExB,OAAOxoP,EAAOoqP,a,yCAGlB,SAA4BzC,EAAW5+Q,GACnC,IAAK,IAAI0G,EAAI,EAAGA,EAAI7H,KAAK2/Q,WAAWx7Q,OAAQ0D,IAAK,CAC7C,IAAM+0B,EAAS58B,KAAK2/Q,WAAW93Q,GAAG1G,EAAM4+Q,GACxC,GAAInjP,EACA,OAoDcr7B,EApDcq7B,GAqDxBuX,KAAO5yC,EAAMymB,QApDb,IAAIg3P,EAAcpiP,EAAOuX,IAAK,KAAMvX,EAAO5U,SAC3C,IAAIg3P,EAAcpiP,EAAQ,MAkD9C,IAA8Br7B,M,UA5C9B29Q,EAAgB3+Q,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK0+Q,GAAiB,KAAgB,IAAmB,GAAI,KAAgB,KAAsB,KAAgB,IAAU,GAAI,KAAgB,OAC1NA,EAAgBt6Q,WAAQ,aAAmB,CAAEE,QAAS,WAAqC,OAAO,IAAIo6Q,EAAgB,aAAS,IAAY,GAAI,aAAS,KAAe,aAAS,IAAU,GAAI,aAAS,OAAmBr6Q,MAAOq6Q,EAAiBt4P,WAAY,S,KAoC9P,SAAS85P,EAASE,GACd,OAAOA,EAAI/8H,WAAU,GAGzB,SAASg9H,EAAQd,EAAW5+Q,GACxB,OAAO4+Q,EAAY,IAAM5+Q,E,IAevBshR,E,YACF,WAAY11Q,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrB21Q,EAAoB,YAAWD,GAM/BE,EAAoB,IAAI,IAAe,oBAAqB,CAC9D/7P,WAAY,OACZ9hB,QAGJ,WACI,IAAMoI,EAAY,aAAO,KACnB01Q,EAAY11Q,EAAYA,EAAUotB,SAAW,KACnD,MAAO,CAGHuoP,YAAa,kBAAMD,EAAaA,EAAU5jG,SAAW4jG,EAAU/0J,OAAU,QAI3Ei1J,EAAoB,CACtB,YACA,gBACA,MACA,SACA,OACA,SACA,SACA,eACA,aACA,aACA,OACA,UAIEC,EAA2BD,EAAkBr5Q,IAFxC,SAAAu5Q,GAAI,iBAAQA,EAAR,OAE4ChzO,KAAK,MAE1DizO,EAAiB,4B,iBA4BjBC,E,YACF,WAAYxgR,EAAYygR,EAAeC,EAAYR,EAAWvD,GAAa,M,MAAA,2B,EACvE,K,EAAA,E,EAAA,CAAM38Q,G,kBAAN,E,iGACKygR,cAAgBA,EACrB,EAAKP,UAAYA,EACjB,EAAKvD,cAAgBA,EACrB,EAAKgE,SAAU,EAEf,EAAKC,kBAAoB,IAAap8P,MAGjCk8P,GACD1gR,EAAWE,cAAciM,aAAa,cAAe,QAXc,E,yDAkB3E,WACI,OAAO7O,KAAKqjR,S,IAEhB,SAAWE,GACPvjR,KAAKqjR,QAAU,YAAsBE,K,mBAGzC,WAAgB,OAAOvjR,KAAKwjR,U,IAC5B,SAAYjiR,GACJA,IAAUvB,KAAKwjR,WACXjiR,EACAvB,KAAKyjR,eAAeliR,GAEfvB,KAAKwjR,UACVxjR,KAAK0jR,mBAET1jR,KAAKwjR,SAAWjiR,K,mBAIxB,WAAgB,OAAOvB,KAAK2jR,U,IAC5B,SAAYpiR,GACR,IAAM2wI,EAAWlyI,KAAK4jR,kBAAkBriR,GACpC2wI,IAAalyI,KAAK2jR,WAClB3jR,KAAK2jR,SAAWzxI,EAChBlyI,KAAK6jR,4B,oBAIb,WAAiB,OAAO7jR,KAAK8jR,W,IAC7B,SAAaviR,GACT,IAAM2wI,EAAWlyI,KAAK4jR,kBAAkBriR,GACpC2wI,IAAalyI,KAAK8jR,YAClB9jR,KAAK8jR,UAAY5xI,EACjBlyI,KAAK6jR,4B,4BAgBb,SAAejF,GACX,IAAKA,EACD,MAAO,CAAC,GAAI,IAEhB,IAAMx5N,EAAQw5N,EAASr8P,MAAM,KAC7B,OAAQ6iC,EAAMjhD,QACV,KAAK,EAAG,MAAO,CAAC,GAAIihD,EAAM,IAC1B,KAAK,EAAG,OAAOA,EACf,QAAS,MAAM/wB,MAAM,uBAAD,OAAwBuqP,EAAxB,S,sBAG5B,WAGI5+Q,KAAK6jR,2B,gCAET,WACI,IAAME,EAAiB/jR,KAAKgkR,gCAC5B,GAAID,GAAkBA,EAAe5jP,KAAM,CACvC,IAAM8jP,EAAUjkR,KAAK4iR,UAAUC,cAO3BoB,IAAYjkR,KAAKkkR,gBACjBlkR,KAAKkkR,cAAgBD,EACrBjkR,KAAKmkR,yBAAyBF,O,yBAI1C,WACIjkR,KAAKsjR,kBAAkB1tQ,cACnB5V,KAAKgkR,iCACLhkR,KAAKgkR,gCAAgCtzQ,U,4BAG7C,WACI,OAAQ1Q,KAAKokR,U,4BAEjB,SAAexD,GACX5gR,KAAK0jR,mBAKL,IADA,IAAMW,EAAYzD,EAAI70K,iBAAiB,SAC9BlkG,EAAI,EAAGA,EAAIw8Q,EAAUlgR,OAAQ0D,IAClCw8Q,EAAUx8Q,GAAG2rG,aAAe,IAIhC,IAAM29B,EAAOnxI,KAAK4iR,UAAUC,cAC5B7iR,KAAKkkR,cAAgB/yI,EACrBnxI,KAAKskR,qCAAqC1D,GAC1C5gR,KAAKmkR,yBAAyBhzI,GAC9BnxI,KAAK+M,YAAYnK,cAAckV,YAAY8oQ,K,8BAE/C,WACI,IAAM2D,EAAgBvkR,KAAK+M,YAAYnK,cACnC4hR,EAAaD,EAAcv9F,WAAW7iL,OAM1C,IALInE,KAAKgkR,iCACLhkR,KAAKgkR,gCAAgCtzQ,QAIlC8zQ,KAAc,CACjB,IAAMxqI,EAAQuqI,EAAcv9F,WAAWw9F,GAGhB,IAAnBxqI,EAAMryI,UAAmD,QAAjCqyI,EAAMlrI,SAAS8N,eACvC2nQ,EAAc9iQ,YAAYu4H,M,oCAItC,WACI,GAAKh6I,KAAKykR,iBAAV,CAGA,IAAMC,EAAO1kR,KAAK+M,YAAYnK,cACxB+hR,EAAe3kR,KAAK4kR,QACtB5kR,KAAKmjR,cAAc0B,sBAAsB7kR,KAAK4kR,SAC9C5kR,KAAKmjR,cAAc2B,yBACnBH,GAAgB3kR,KAAK+kR,wBACjB/kR,KAAK+kR,uBACLL,EAAK/hR,UAAU6I,OAAOxL,KAAK+kR,uBAE3BJ,GACAD,EAAK/hR,UAAUE,IAAI8hR,GAEvB3kR,KAAK+kR,sBAAwBJ,GAE7B3kR,KAAKglR,UAAYhlR,KAAKilR,yBAClBjlR,KAAKilR,wBACLP,EAAK/hR,UAAU6I,OAAOxL,KAAKilR,wBAE3BjlR,KAAKglR,UACLN,EAAK/hR,UAAUE,IAAI7C,KAAKglR,UAE5BhlR,KAAKilR,uBAAyBjlR,KAAKglR,a,+BAQ3C,SAAkBzjR,GACd,MAAwB,iBAAVA,EAAqBA,EAAMub,OAAOyF,MAAM,KAAK,GAAKhhB,I,sCAOpE,SAAyB4vI,GACrB,IAAMnmI,EAAWhL,KAAKgkR,gCAClBh5Q,GACAA,EAASqI,QAAQ,SAAC49G,EAAO5lH,GACrB4lH,EAAM59G,QAAQ,SAAA2vQ,GACV33Q,EAAQwD,aAAam0Q,EAAK7hR,KAA1B,eAAwCgwI,EAAxC,YAAgD6xI,EAAKzhR,MAArD,a,kDAShB,SAAqC8J,GAIjC,IAHA,IAAM65Q,EAAsB75Q,EAAQ0gG,iBAAiBg3K,GAC/C/3Q,EAAWhL,KAAKgkR,gCAClBhkR,KAAKgkR,iCAAmC,IAAIv2Q,IAHR,cAKpCq1Q,EAAkBzvQ,QAAQ,SAAA2vQ,GACtB,IAAMmC,EAAuBD,EAAoBr9Q,GAC3CtG,EAAQ4jR,EAAqBn8O,aAAag6O,GAC1C1xO,EAAQ/vC,EAAQA,EAAM+vC,MAAM2xO,GAAkB,KACpD,GAAI3xO,EAAO,CACP,IAAI41I,EAAal8K,EAASkH,IAAIizQ,GACzBj+F,GAEDl8K,EAASqJ,IAAI8wQ,EADbj+F,EAAa,IAGjBA,EAAWtjL,KAAK,CAAEzC,KAAM6hR,EAAMzhR,MAAO+vC,EAAM,SAX9CzpC,EAAI,EAAGA,EAAIq9Q,EAAoB/gR,OAAQ0D,IAAhD,O,4BAiBJ,SAAeu9Q,GAAO,WAIlB,GAHAplR,KAAKqlR,cAAgB,KACrBrlR,KAAKslR,SAAW,KAChBtlR,KAAKsjR,kBAAkB1tQ,cACnBwvQ,EAAS,CACT,MAA8BplR,KAAKulR,eAAeH,GAAlD,mBAAOrF,EAAP,KAAkBnB,EAAlB,KACImB,IACA//Q,KAAKqlR,cAAgBtF,GAErBnB,IACA5+Q,KAAKslR,SAAW1G,GAEpB5+Q,KAAKsjR,kBAAoBtjR,KAAKmjR,cAAcqC,gBAAgB5G,EAAUmB,GACjE/7Q,KAAK,YAAK,IACVE,UAAU,SAAA08Q,GAAG,OAAI,EAAK6E,eAAe7E,IAAM,SAACjkP,GAC7C,IAAMkvD,EAAe,yBAAH,OAA4Bk0L,EAA5B,YAAyCnB,EAAzC,aAAsDjiP,EAAI3C,SAC5E,EAAKqlP,cAAc3zG,YAAY,IAAIr3I,MAAMw3D,W,CA3OnC62L,G,OAgPtBQ,EAAQ3iR,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAK0iR,GAAS,KAAyB,KAAoB,KAAyBhE,GAAkB,KAAyB,eAAgB,KAAyByD,GAAoB,KAAyB,OAC9QO,EAAQ/8Q,UAAO,KAAyB,CAAEzF,KAAMwiR,EAASviR,UAAW,CAAC,CAAC,aAAcoC,UAAW,CAAC,OAAQ,MAAO,EAAG,WAAY,eAAgBwV,SAAU,EAAGC,aAAc,SAA8B7W,EAAIC,GAAgB,EAALD,IAC9M,KAAmB,qBAAsBC,EAAI6iR,iBAAmB,OAAS,MAAzE,CAAgF,qBAAsB7iR,EAAI0jR,UAAY1jR,EAAIojR,SAA1H,CAAoI,0BAA2BpjR,EAAIyjR,eAAiBzjR,EAAIgjR,SACxL,KAAmB,kBAAmBhjR,EAAI2hR,OAA1C,CAAkD,oBAAmC,YAAd3hR,EAAIi0D,OAAqC,WAAdj0D,EAAIi0D,OAAoC,SAAdj0D,EAAIi0D,SAC/H1zD,OAAQ,CAAE0zD,MAAO,QAAS0tN,OAAQ,SAAUa,QAAS,UAAWQ,QAAS,UAAWI,SAAU,YAActsQ,SAAU,CAAC,WAAYpW,SAAU,CAAC,MAAoCuW,mBAAoBpZ,EAAK2G,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAA0BqB,EAAIC,GAAgB,EAALD,IAClR,OACA,KAAoB,KACnBmX,OAAQ,CAAC,ypBAA0pBtS,cAAe,EAAGwiB,gBAAiB,I,sBAyDzsB08P,E,sDAENA,EAAcnlR,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKklR,IAC1EA,EAAcxsQ,UAAO,KAAwB,CAAExY,KAAMglR,IACrDA,EAAcvsQ,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,KAAkB,O,wCC98BtE,SAAUusQ,EAAgBhpP,GAC5BiI,WAAW,WAAQ,MAAMjI,GAAQ,GADrC,iC,kCCCA,IAAI87C,EAAaz4E,MAAQA,KAAKy4E,WAAe,WACzC,IAAI,EAAgB,SAAUzgE,EAAGgE,GAI7B,OAHA,EAAgBQ,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAE5B,OAAO,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnC,EAAcA,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,IAV1C,GAczCo8I,EAAc,EAAQ,QACtB33E,EAAkB,SAAUz1H,GAE5B,SAASy1H,EAAeD,EAAiBjiJ,QACzB,IAARA,IAAkBA,EAAM65N,EAAY73E,UAAUhiJ,KAClD,IAAIrK,EAAQ82B,EAAOtjD,KAAKl1B,KAAMguM,EAAiB,WAC3C,OAAIC,EAAeC,UAAYD,EAAeC,WAAaxsJ,EAChDusJ,EAAeC,SAASniJ,MAGxBA,OAET/rD,KAIN,OAHA0hD,EAAMgrF,QAAU,GAChBhrF,EAAM5lC,QAAS,EACf4lC,EAAMyjH,eAAY1gK,EACXi9C,EAgCX,OA9CA+2B,EAAUw1H,EAAgBz1H,GAgB1By1H,EAAev7K,UAAUtuB,SAAW,SAAU2nI,EAAM3+C,EAAO/kF,GAEvD,YADc,IAAV+kF,IAAoBA,EAAQ,GAC5B6gH,EAAeC,UAAYD,EAAeC,WAAaluM,KAChDiuM,EAAeC,SAAS9pM,SAAS2nI,EAAM3+C,EAAO/kF,GAG9CmwE,EAAO9lD,UAAUtuB,SAAS8wB,KAAKl1B,KAAM+rI,EAAM3+C,EAAO/kF,IAGjE4lM,EAAev7K,UAAUy5G,MAAQ,SAAUppE,GACvC,IAAI2pE,EAAU1sI,KAAK0sI,QACnB,GAAI1sI,KAAK8b,OACL4wH,EAAQ9oI,KAAKm/D,OADjB,CAIA,IAAI/tC,EACJh1B,KAAK8b,QAAS,EACd,GACI,GAAIkZ,EAAQ+tC,EAAOspE,QAAQtpE,EAAO16D,MAAO06D,EAAOqqB,OAC5C,YAECrqB,EAAS2pE,EAAQ/3H,SAE1B,GADA3U,KAAK8b,QAAS,EACVkZ,EAAO,CACP,KAAO+tC,EAAS2pE,EAAQ/3H,SACpBouD,EAAOntD,cAEX,MAAMof,KAGPi5K,EA/CW,CAgDpB23E,EAAY73E,WACd1wK,EAAQ4wK,eAAiBA,G,kCCjEzB,wEAGM,SAAU49D,EAAMga,GAClB,OAAO,IAAI,IAAW,SAAAtpP,GAClB,IAAIiiB,EACJ,IACIA,EAAQqnO,IAEZ,MAAOlpP,GAEH,YADAJ,EAAWvH,MAAM2H,GAIrB,OADe6hB,EAAQ,YAAKA,GAAS,eACvBt6C,UAAUq4B,O,kCCZhC,4DAYA,aAWC,WAAoBkW,GAAA,KAAAA,KANX,KAAAzqB,QAAyB,G,OAelC,YAAA0qB,gBAAA,WACC1yC,KAAK2yC,eAEU,IAAImzO,SAAS9lR,KAAKyyC,GAAG7vC,cAAe5C,KAAKgoB,UAMjD,YAAA2qB,aAAR,WACC3yC,KAAKgoB,QAAU,CACd+9P,QAAS,CACRC,SAAS,EACTC,QAAQ,IAI0D,KAAhEjmR,KAAKyyC,GAAG7vC,cAAcomC,aAAa,4BACtC,MAAehpC,KAAKgoB,QAAS,WAAY,CACxCg+P,QAAS,CACRziN,GAAI,uBAEL0iN,OAAQ,CACP1iN,GAAI,yBAGN,MAAevjE,KAAKgoB,QAAS,SAAU,CACtCg+P,QAAS,IACTC,OAAQ,Q,sCA5CCC,GAAe,Y,uBAAfA,EAAe,kF,EAJ5B,I,sGCkMIC,E,4GAxMEC,EAAc,IAAI,IAAe,e,aAEvC,IAAIC,EAAgB,8BAChB,aAAyB,IAAbjuP,EAAa,uDAAJ,KAAI,oBACrBp4B,KAAKsmR,YAAeluP,GAAUA,EAAOkuP,aAAgB,cAFzC,8BAIhB,SAAgB53O,GACZ,IAAIvC,EAASuC,EAAIltC,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAClD,OAAQ2qC,EAAOhoC,OAAS,GACpB,KAAK,EACD,MAEJ,KAAK,EACDgoC,GAAU,KACV,MAEJ,KAAK,EACDA,GAAU,IACV,MAEJ,QACI,MAAM,IAAI9X,MAAM,6BAGxB,OAAOr0B,KAAKumR,iBAAiBp6O,KAtBjB,uBAyBhB,SAAUuC,GACN,IACIvC,EAAS,GAEb,IADAuC,EAAMW,OAAOX,GAAKltC,QAAQ,MAAO,KACzB2C,OAAS,GAAM,EACnB,MAAM,IAAIkwB,MAAM,qEAEpB,IAEA,IAAYmyP,EAAIhqH,EAAZuC,EAAK,EAAege,EAAM,EAE7BvgB,EAAS9tH,EAAIqB,OAAOgtI,MAEpBvgB,IACKgqH,EAAKznH,EAAK,EAAS,GAALynH,EAAUhqH,EAASA,EAG/BuC,IAAO,GACR5yH,GAAUkD,OAAOo3O,aAAa,IAAOD,KAAS,EAAIznH,EAAM,IACzD,EAEFvC,EApBU,oEAoBKvzJ,QAAQuzJ,GAE3B,OAAOrwH,IAhDK,8BAkDhB,SAAiBuC,GACb,OAAOK,mBAAmBxkC,MAAMmoB,UAAUjpB,IACrCyrB,KAAKl1B,KAAK0mR,UAAUh4O,GAAM,SAACkB,GAC5B,MAAO,KAAO,KAAOA,EAAEC,WAAW,GAAG5d,SAAS,KAAKzoB,OAAO,KAEzDwmC,KAAK,OAvDE,yBAyDhB,WAAsC,IAA1BnrC,EAA0B,uDAAlB7E,KAAKsmR,cACrB,IAAKzhR,GAAmB,KAAVA,EACV,OAAO,KAEX,IAAMugD,EAAQvgD,EAAM0d,MAAM,KAC1B,GAAqB,IAAjB6iC,EAAMjhD,OACN,MAAM,IAAIkwB,MAAM,0HAEpB,IAAMsyP,EAAU3mR,KAAK4mR,gBAAgBxhO,EAAM,IAC3C,IAAKuhO,EACD,MAAM,IAAItyP,MAAM,4BAEpB,OAAOmF,KAAKW,MAAMwsP,KArEN,oCAuEhB,WAAiD,IACzCA,EADe9hR,EAA0B,uDAAlB7E,KAAKsmR,cAGhC,KADAK,EAAU3mR,KAAKy4B,YAAY5zB,MACV8hR,EAAQj5O,eAAe,OACpC,OAAO,KAEX,IAAMuM,EAAO,IAAIS,KAAK,GAEtB,OADAT,EAAK4sO,cAAcF,EAAQG,KACpB7sO,IA/EK,4BAiFhB,WAAwD,IAAzCp1C,EAAyC,uDAAjC7E,KAAKsmR,cAAeS,EAAa,uCACpD,IAAKliR,GAAmB,KAAVA,EACV,OAAO,EAEX,IAAMo1C,EAAOj6C,KAAKgnR,uBAAuBniR,GAEzC,OADAkiR,EAAgBA,GAAiB,EACpB,OAAT9sO,KAGKA,EAAKnB,WAAY,IAAI4B,MAAO5B,UAA4B,IAAhBiuO,KA1FrC,2BA4FhB,SAAcE,EAAY7sM,GACtB,MAA0B,mBAAf6sM,EACAA,EAAW7sM,GAEf6sM,MAhGK,G,OAmGpBZ,EAAiB9lR,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK6lR,GAAkB,KAAgBD,KAClHC,EAAiBzhR,WAAQ,KAA0B,CAAEC,MAAOwhR,EAAkBvhR,QAAS,SAAUtE,GAAK,OAAO6lR,EAAiB9lR,UAAKC,MAInI6lR,EAAmB,YAAW,CAAE,YAAQ,EAAG,YAAOD,IAC9C,YAAW,oBAAqB,CAAC5pQ,UAClC6pQ,G,gBAEH,IAAIa,EAAc,8BACd,WAAY9uP,EAAQf,GAAS,oBACzBr3B,KAAKq3B,UAAYA,EACjBr3B,KAAKmnR,cAAgB,CAAC,KAAM,OAC5BnnR,KAAKsmR,YAAcluP,EAAOkuP,YAC1BtmR,KAAKonR,WAAahvP,EAAOgvP,YAAc,gBACvCpnR,KAAKinR,WACD7uP,EAAO6uP,YAAoC,KAAtB7uP,EAAO6uP,WACtB7uP,EAAO6uP,WACP,UACVjnR,KAAKqnR,mBAAqBjvP,EAAOivP,oBAAsB,GACvDrnR,KAAKsnR,kBAAoBlvP,EAAOkvP,mBAAqB,GACrDtnR,KAAKunR,kBAAoBnvP,EAAOmvP,oBAAqB,EACrDvnR,KAAKwnR,gBAAkBpvP,EAAOovP,iBAbpB,kCAed,SAAoBptM,GAChB,IAAMqtM,EAAa,gBAAMrtM,EAAQjmC,KAAK,GAAO,GACvCuzO,EAAmC,OAAxBD,EAAWltP,SAAX,UACRktP,EAAWltP,UADH,OACcktP,EAAW1oG,OAAS/+K,KAAKmnR,cAAc5vB,SAASkwB,EAAW1oG,MAChF,IAAM0oG,EAAW1oG,KACjB,IACJ0oG,EAAWltP,SACjB,OAAqB,OAAbmtP,GACJ1nR,KAAKqnR,mBAAmBliK,UAAU,SAACwiK,GAAD,MAA8B,iBAAXA,EAC/CA,IAAWD,EACXC,aAAkBzmJ,QACdymJ,EAAO3kQ,KAAK0kQ,MACF,IA3Bd,gCA6Bd,SAAmBttM,GACf,IAAMwtM,EAAe,gBAAMxtM,EAAQjmC,KAAK,GAAO,GAC/C,OAAQn0C,KAAKsnR,kBAAkBniK,UAAU,SAAC0iK,GACtC,GAAqB,iBAAVA,EAAoB,CAC3B,IAAMC,EAAc,gBAAMD,GAAO,GAAO,GACxC,OAAQC,EAAYvtP,WAAaqtP,EAAartP,UAC1CutP,EAAY32I,OAASy2I,EAAaz2I,KAE1C,OAAI02I,aAAiB3mJ,QACV2mJ,EAAM7kQ,KAAKo3D,EAAQjmC,QAG5B,IAzCI,gCA2Cd,SAAmBtvC,EAAOu1E,EAASv2E,GAC/B,IAAMojR,EAAajnR,KAAKq3B,UAAU0wP,cAAc/nR,KAAKinR,WAAY7sM,GAC7D4tM,GAAiB,EACrB,IAAKnjR,GAAS7E,KAAKunR,kBACf,MAAM,IAAIlzP,MAAM,kDAepB,OAbIr0B,KAAKwnR,kBACLQ,GAAiBnjR,GAAQ7E,KAAKq3B,UAAUqE,eAAe72B,IAEvDA,GAASmjR,GAAkBhoR,KAAKwnR,gBAChCptM,EAAUA,EAAQwpE,QAEb/+I,IACLu1E,EAAUA,EAAQwpE,MAAM,CACpBy/F,WAAY,eACPrjP,KAAKonR,WADA,UACgBH,GADhB,OAC6BpiR,OAIxChB,EAAKsiJ,OAAO/rE,KA9DT,uBAgEd,SAAUA,EAASv2E,GAAI,WACnB,IAAK7D,KAAKioR,oBAAoB7tM,IAC1Bp6E,KAAKkoR,mBAAmB9tM,GACxB,OAAOv2E,EAAKsiJ,OAAO/rE,GAEvB,IAAMv1E,EAAQ7E,KAAKsmR,YAAYlsM,GAC/B,OAAIv1E,aAAiBN,QACV,YAAKM,GAAOb,KAAK,YAAS,SAACmkR,GAC9B,OAAO,EAAKC,mBAAmBD,EAAY/tM,EAASv2E,MAIjD7D,KAAKooR,mBAAmBvjR,EAAOu1E,EAASv2E,OA5EzC,G,OAgFlBqjR,EAAe3mR,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK0mR,GAAgB,KAAgBd,GAAc,KAAgBC,KAC1Ia,EAAetiR,WAAQ,KAA0B,CAAEC,MAAOqiR,EAAgBpiR,QAAS,SAAUtE,GAAK,OAAO0mR,EAAe3mR,UAAKC,MAK7H0mR,EAAiB,YAAW,CAAE,YAAQ,EAAG,YAAOd,IAC5C,YAAW,oBAAqB,CAAC5pQ,OAAQ6pQ,KAC1Ca,G,gBAIH,IAAImB,EAAYlC,EAAW,8BACvB,WAAY9lH,GACR,GADoB,oBAChBA,EACA,MAAM,IAAIhsI,MAAM,+FAHD,2BAMvB,SAAerM,GACX,MAAO,CACH+2F,SAAUonK,EACVh0P,UAAW,CACP,CACI5vB,QAAS,IACToW,SAAUuuQ,EACVx9P,OAAO,GAEX1B,EAAQsgQ,oBAAsB,CAC1B/lR,QAAS6jR,EACTxtQ,SAAUoP,EAAQoQ,QAEtBiuP,QAnBW,G,OAwB3BgC,EAAU9nR,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAK6nR,GAAW,KAAgBA,EAAW,MACxGA,EAAUnvQ,UAAO,KAAwB,CAAExY,KAAM2nR,IACjDA,EAAUlvQ,UAAO,KAAwB,IAIzCkvQ,EAAYlC,EAAc,YAAW,CAAE,YAAQ,EAAG,eAAa,YAAQ,EAAG,eACtE,YAAW,oBAAqB,CAACkC,KAClCA,G,wCCjPH,IAAI5vM,EAAaz4E,MAAQA,KAAKy4E,WAAe,WACzC,IAAI,EAAgB,SAAUzgE,EAAGgE,GAI7B,OAHA,EAAgBQ,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAE5B,OAAO,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnC,EAAcA,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,IAV1C,GAezCsjE,EAAwB,SAAUt0H,GAElC,SAASs0H,EAAqBhhE,EAAWC,GACrC,IAAIrqF,EAAQ82B,EAAOtjD,KAAKl1B,KAAM8rI,EAAWC,IAAS/rI,KAGlD,OAFA0hD,EAAMoqF,UAAYA,EAClBpqF,EAAMqqF,KAAOA,EACNrqF,EAqBX,OA1BA+2B,EAAUq0H,EAAsBt0H,GAOhCs0H,EAAqBp6K,UAAUu5G,eAAiB,SAAUH,EAAW9lH,EAAIonE,GAErE,YADc,IAAVA,IAAoBA,EAAQ,GAClB,OAAVA,GAAkBA,EAAQ,EACnB5U,EAAO9lD,UAAUu5G,eAAe/2G,KAAKl1B,KAAM8rI,EAAW9lH,EAAIonE,IAErE0+C,EAAUY,QAAQ9oI,KAAK5D,MAChB8rI,EAAUq5B,YAAcr5B,EAAUq5B,UAAYsjB,sBAAsB,WAAc,OAAO38C,EAAUK,MAAM,WAEpH2gE,EAAqBp6K,UAAUs5G,eAAiB,SAAUF,EAAW9lH,EAAIonE,GAErE,QADc,IAAVA,IAAoBA,EAAQ,GACjB,OAAVA,GAAkBA,EAAQ,GAAiB,OAAVA,GAAkBptF,KAAKotF,MAAQ,EACjE,OAAO5U,EAAO9lD,UAAUs5G,eAAe92G,KAAKl1B,KAAM8rI,EAAW9lH,EAAIonE,GAEpC,IAA7B0+C,EAAUY,QAAQvoI,SAClBokR,qBAAqBviQ,GACrB8lH,EAAUq5B,eAAY1gK,IAIvBqoM,EA3BiB,CADR,EAAQ,QA6BZjhE,aAChBxuG,EAAQyvK,qBAAuBA,G,0GCzChB,SAAS07E,EAAe74O,EAAK9nC,GAC1C,OAAO,OAAA4gR,EAAA,GAAe94O,ICLT,SAA+BA,EAAK9nC,GACjD,GAAsB,oBAAXunC,QAA4BA,OAAO41F,YAAYxoH,OAAOmzB,GAAjE,CACA,IAAI+4O,EAAO,GACPn8C,GAAK,EACL13M,GAAK,EACLmB,OAAKvxB,EAET,IACE,IAAK,IAAiCkkR,EAA7Bj5Q,EAAKigC,EAAIP,OAAO41F,cAAmBunG,GAAMo8C,EAAKj5Q,EAAG7L,QAAQ+wB,QAChE8zP,EAAK9kR,KAAK+kR,EAAGpnR,QAETsG,GAAK6gR,EAAKvkR,SAAW0D,GAH8C0kO,GAAK,IAK9E,MAAO5vM,GACP9H,GAAK,EACLmB,EAAK2G,EACL,QACA,IACO4vM,GAAsB,MAAhB78N,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAImlB,EAAI,MAAMmB,GAIlB,OAAO0yP,GDnBuB,CAAqB/4O,EAAK9nC,IAAM,OAAA23O,EAAA,GAA2B7vM,EAAK9nC,IAAM,OAAA+gR,EAAA,O,sBEI7F,SAAUvmQ,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,SA7DUlX,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/gB,CAAQ,EAAQ,U,sBCIjD,SAAUud,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGb,SAASy3O,EAAenjQ,EAAQs3I,EAAe7tH,EAAQ6uB,GACnD,IAAI7xB,EAAS,GACb,GAAI6wH,EACA,OAAQ7tH,GACJ,IAAK,IACDhD,EAAS,0DACT,MACJ,IAAK,KACDA,EAAS,oCACT,MACJ,IAAK,IACDA,EAAS,8CACT,MACJ,IAAK,KACDA,EAAS,0CACT,MACJ,IAAK,IACDA,EAAS,kCACT,MACJ,IAAK,KACDA,EAAS,wBACT,MACJ,IAAK,IACDA,EAAS,wCACT,MACJ,IAAK,KACDA,EAAS,8BACT,MACJ,IAAK,IACDA,EAAS,8CACT,MACJ,IAAK,KACDA,EAAS,oCACT,MACJ,IAAK,IACDA,EAAS,wCACT,MACJ,IAAK,KACDA,EAAS,yCAIjB,OAAQgD,GACJ,IAAK,IACDhD,EAAS,sEACT,MACJ,IAAK,KACDA,EAAS,gDACT,MACJ,IAAK,IACDA,EAAS,0DACT,MACJ,IAAK,KACDA,EAAS,gDACT,MACJ,IAAK,IACDA,EAAS,8CACT,MACJ,IAAK,KACDA,EAAS,oCACT,MACJ,IAAK,IACDA,EAAS,oDACT,MACJ,IAAK,KACDA,EAAS,0CACT,MACJ,IAAK,IACDA,EAAS,gEACT,MACJ,IAAK,KACDA,EAAS,sDACT,MACJ,IAAK,IACDA,EAAS,oDACT,MACJ,IAAK,KACDA,EAAS,0CAIrB,OAAOA,EAAO3qC,QAAQ,MAAOkkB,GAGxBrD,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,0cAAwFL,MAC5F,KAEJM,YACI,8VAAgFN,MAC5E,KAER0U,kBAAkB,EAClB1T,SAAU,6RAAuDhB,MAAM,KACvEiB,cAAe,+JAAkCjB,MAAM,KACvDkB,YAAa,iFAAqBlB,MAAM,KACxCoB,eAAgB,CACZC,GAAI,wCACJC,IAAK,2CACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,sCACTC,SAAU,WACVC,QAAS,0BACTC,SAAU,4CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,mCACRC,KAAM,yCACNC,EAAGikQ,EACHhkQ,GAAIgkQ,EACJ/lQ,EAAG+lQ,EACH/jQ,GAAI+jQ,EACJ9jQ,EAAG8jQ,EACH7jQ,GAAI6jQ,EACJ7wQ,EAAG6wQ,EACH5jQ,GAAI4jQ,EACJzjQ,EAAGyjQ,EACHxjQ,GAAIwjQ,EACJvjQ,EAAGujQ,EACHtjQ,GAAIsjQ,GAERx3O,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAGzBE,cAAe,2LACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,mCAAbC,GAAqC,mCAAbA,EACjBD,EAEM,yCAAbC,GACa,qDAAbA,GACa,yCAAbA,EAEOD,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,GAAQ,GAAKA,EAAO,EACb,iCACAA,EAAO,GACP,iCACAA,EAAO,GACP,uCACAA,EAAO,GACP,mDAEA,wCAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KAxMyB/gB,CAAQ,EAAQ,U,sBCEjD,SAAUud,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,ocAAuFL,MAC3F,KAEJM,YACI,uTAAuEN,MACnE,KAER0U,kBAAkB,EAClB1T,SAAU,mSAAwDhB,MAC9D,KAEJiB,cAAe,4KAA0CjB,MAAM,KAC/DkB,YAAa,wFAA4BlB,MAAM,KAC/CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,wCACJC,IAAK,2CACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAEVotB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAGzBE,cAAe,wHACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,6BAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,mCAAbC,EACAD,EACa,yCAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,6BAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,uCACAA,EAAO,GACP,2BAEA,4BAGfxtB,SAAU,CACNC,QAAS,oBACTC,QAAS,gCACTC,SAAU,8CACVC,QAAS,gCACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,oCACNC,EAAG,oDACHC,GAAI,gDACJ/B,EAAG,8CACHgC,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJhN,EAAG,kCACHiN,GAAI,wBACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB/gB,CAAQ,EAAQ,U,sBCKjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0KAAwCL,MAC5C,KAEJM,YAAa,qGAAyCN,MAClD,KAEJgB,SAAU,uIAA8BhB,MAAM,KAC9CiB,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,mDAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN2nH,EAAG,WACHjH,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAEVrzF,cAAe,gFACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,iBAAbC,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCD,EACa,iBAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,iBAAbC,GAAkC,iBAAbA,EACrBD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,IAAIi3O,EAAY,IAAPp3O,EAAaE,EACtB,OAAIk3O,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,gBAGf5kQ,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEdgB,uBAAwB,gCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBjB,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJ/B,EAAG,iBACHgC,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJhN,EAAG,WACHiN,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,eAhG0BzgB,CAAQ,EAAQ,U,sBCCjD,SAAUud,GAAU,aAIzB,IAAI0iK,EAAW,CACX5zI,EAAG,gBACHT,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHm0I,GAAI,gBACJ25D,GAAI,gBACJC,GAAI,gBACJ/5D,GAAI,gBACJI,GAAI,gBACJyjG,GAAI,gBACJ5jG,GAAI,gBACJI,GAAI,gBACJP,GAAI,gBACJC,GAAI,gBACJO,GAAI,gBACJJ,IAAK,iBAGA/iK,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJG,OAAQ,wbAAqFR,MACzF,KAEJkiH,WACI,gXAAyEliH,MACrE,MAGZM,YAAa,sOAAkDN,MAAM,KACrEgB,SAAU,ySAAyDhB,MAC/D,KAEJiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,qEACTC,QAAS,qEACTE,QAAS,qEACTD,SAAU,uHACVE,SAAU,mIACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,oCACRC,KAAM,wBACNC,EAAG,sEACH9B,EAAG,oDACHgC,GAAI,0CACJC,EAAG,wCACHC,GAAI,8BACJhN,EAAG,kCACHiN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAERisB,cAAe,gGACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,uBAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbC,EACAD,EACa,uBAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,mCAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,qBACAA,EAAO,GACP,iCAEA,sBAGflsB,uBAAwB,sCACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUq/J,EAASr/J,IAAWq/J,EAF7Br/J,EAAS,KAEmCq/J,EAD5Cr/J,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAIO,EAAS,CACL6hH,WACI,8HAAoFliH,MAChF,KAERQ,OAAQ,gIAAsFR,MAC1F,KAEJmiH,SAAU,kCAEd7hH,EAAc,yFAAkDN,MAAM,KACtEE,EAAc,CACV,QACA,WACA,aACA,QACA,aACA,wCACA,2CACA,QACA,gBACA,gBACA,QACA,SAIJC,EACI,mPAER,SAASy6J,EAAOplI,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAASqlI,EAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC3C,IAAIphC,EAASlX,EAAS,IACtB,OAAQ/I,GACJ,IAAK,IACD,OAAOqgJ,GAAiBh/F,EAAW,gBAAe,mBACtD,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,UAAY,UAEvCkX,EAAS,YAExB,IAAK,IACD,OAAOogI,EAAgB,SAAWh/F,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,SAAW,SAEtCkX,EAAS,WAExB,IAAK,IACD,OAAOogI,EAAgB,SAAWh/F,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,SAAW,SAEtCkX,EAAS,WAExB,IAAK,IACD,OAAOogI,GAAiBh/F,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,MAAQ,UAEnCkX,EAAS,MAExB,IAAK,IACD,OAAOogI,GAAiBh/F,EAAW,gBAAU,kBACjD,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,iBAAW,uBAEtCkX,EAAS,iBAExB,IAAK,IACD,OAAOogI,GAAiBh/F,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,OAAS,OAEpCkX,EAAS,QAKvBva,EAAOM,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbH,YAAaA,EACbQ,iBAAkBR,EAGlBS,kBACI,gPACJC,uBACI,6FACJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAClBc,SAAU,mFAAmDhB,MAAM,KACnEiB,cAAe,kCAAuBjB,MAAM,KAC5CkB,YAAa,kCAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN2nH,EAAG,cAEP1nH,SAAU,CACNC,QAAS,cACTC,QAAS,kBACTC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,oBAGnBxtB,QAAS,oBACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,0BAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACNC,EAAGw4J,EACHv4J,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAGolK,EACHn4J,GAAIm4J,EACJh4J,EAAGg4J,EACH/3J,GAAI+3J,EACJ93J,EAAG83J,EACH73J,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnLyB/gB,CAAQ,EAAQ,U,kECN3C,I,wBCcXkkR,EAA2B,SAAUxwM,GAErC,SAASwwM,IACL,IAAItnO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAMunO,YAAc91O,eACbuO,EAwEX,OA5EA+2B,YAAUuwM,EAAWxwM,GAMrBwwM,EAAUt2P,UAAUw2P,mBAAqB,SAAUC,EAAkBC,GACjE,IAAer2P,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1Ci4F,EAAW,GACXx9C,EAAoB08C,aAAqBn3F,EAAQwW,SAmBrD,OAlBImhQ,GACA1/K,EAAS7lG,KAAK,CACVlD,KAAM,SACNic,IAAK,SACL2hF,SAAUryC,EACVu+C,MAAO,CACH5qB,MAAO5/E,KAAKipR,YACZp+K,eAAgB,gBAChBG,WAAYm+K,KAIxB1/K,EAAS7lG,KAAK,CACVlD,KAAM,OACNic,IAAK,OACLg+E,QAAQ,EACR6P,MAAO,CAAEl3C,QAAS81N,KAEdvxQ,aAAc+pE,IAAU,CAAEhH,SAAUppE,EAAQopE,UAAY,SAAU8E,EAAWrsB,GAAc,OAAQx7C,aAAc,MAAO,CAAEoK,IAAKy9D,EAAW73D,UAAW,CAAC,cAAc7O,OAAOq6C,GAAYrjB,KAAK,MAChMn4B,aAAcgxF,IAAkB,CAAElO,QAAS5nE,EAAMgqE,eAAiBhqE,EAAMiqE,SAAU4M,iBAAkB72E,EAAMiqE,SAAUiL,KAAM,GAA+BwB,SAAUA,QAE3Ku/K,EAAUt2P,UAAU22P,oBAAsB,SAAUF,EAAkBC,EAAalrL,EAAQ7vC,GACvF,IAAIi7N,EAAatpR,KAAKwR,QAAQ6rC,YAAY4gC,eAC1C,IAAKqrM,EACD,MAAM,IAAIj1P,MAAM,gCAEpB,IAAetB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1Cy6C,GAAqBl5B,EAAMiqE,UAAY2L,aAAqBn3F,EAAQwW,SACpEkkC,GAAyBn5B,EAAMiqE,UAAY4L,aAAyBp3F,EAAQwW,SAC5EyhF,EAAW,GAkCf,OAjCI0/K,GACA1/K,EAAS7lG,KAAK,CACVlD,KAAM,SACNic,IAAK,SACL2hF,SAAUryC,EACVs9N,OAAQ,CAAC,CACD5sQ,IAAK,OACLijE,MAAO5/E,KAAKipR,YACZp+K,eAAgB,gBAChBG,WAAYm+K,MAI5B1/K,EAAS7lG,KAAK,CACVlD,KAAM,OACNic,IAAK,OACLg+E,QAAQ,EACR4uL,OAAQ,CAAC,CACD5sQ,IAAK,OACL22C,QAAS81N,MAGjBl9N,GACAu9C,EAAS7lG,KAAK,CACVlD,KAAM,SACNic,IAAK,SACL2hF,UAAU,EACVirL,OAAQ,CAAC,CACD5sQ,IAAK,OACL22C,QAASm1C,SAIjB5wF,aAAc+pE,IAAU,CAAEhH,SAAUppE,EAAQopE,UAAY,SAAU8E,EAAWrsB,GAAc,OAAQx7C,aAAc,MAAO,CAAEoK,IAAKy9D,EAAW73D,UAAW,CAAC,cAAc7O,OAAOq6C,GAAYrjB,KAAK,MAChMn4B,aAAcyxQ,EAAY,CAAE3uL,QAAS5nE,EAAMgqE,eAAiBhqE,EAAMiqE,SAAU4M,iBAAkB72E,EAAMiqE,SAAUwsL,UAAW,CAAC,CAAEvhL,KAAM,CAAC,CAAEloC,KAAMm+B,EAAQn2D,SAAUsmB,MAAmBo7C,SAAUA,QAE3Lu/K,EA7EoB,CA8E7B3sM,KAEF,SAASotM,EAAe1tN,EAAM6kC,GAE1B,IADA,IAAI8oL,EAAQ,GACH7hR,EAAI,EAAGA,EAAI+4F,EAAQ/4F,GAAK,EAC7B6hR,EAAM7hR,GAAK,GAEf,IAAK,IAAI6H,EAAK,EAAGmzF,EAAS9mC,EAAMrsD,EAAKmzF,EAAO1+F,OAAQuL,IAAM,CACtD,IAAI+rD,EAAMonC,EAAOnzF,GACjBg6Q,EAAMjuN,EAAI/zD,KAAK9D,KAAK63D,GAExB,OAAOiuN,EAEX,SAASC,EAAoB5tN,EAAMmiC,GAE/B,IADA,IAAI0rL,EAAQ,GACH/hR,EAAI,EAAGA,EAAIq2F,EAAQr2F,GAAK,EAC7B+hR,EAAM/hR,GAAK,GAEf,IAAK,IAAI6H,EAAK,EAAGuzF,EAASlnC,EAAMrsD,EAAKuzF,EAAO9+F,OAAQuL,IAAM,CACtD,IAAI+rD,EAAMwnC,EAAOvzF,GACjBk6Q,EAAMnuN,EAAI4lC,UAAUz9F,KAAK63D,GAE7B,OAAOmuN,EAEX,SAASC,EAAsB3xN,EAAI0oC,GAC/B,IAAI8oL,EAAQ,GACZ,GAAKxxN,EAKA,CACD,IAASrwD,EAAI,EAAGA,EAAI+4F,EAAQ/4F,GAAK,EAC7B6hR,EAAM7hR,GAAK,CACP+6F,kBAAmB1qC,EAAG0qC,kBACtBpxB,QAAStZ,EAAGsZ,QACZzV,KAAM,IAGd,IAAK,IAAIrsD,EAAK,EAAG/E,EAAKutD,EAAG6D,KAAMrsD,EAAK/E,EAAGxG,OAAQuL,IAAM,CACjD,IAAI+rD,EAAM9wD,EAAG+E,GACbg6Q,EAAMjuN,EAAI/zD,KAAKq0D,KAAKn4D,KAAK63D,SAd7B,IAAK,IAAI5zD,EAAI,EAAGA,EAAI+4F,EAAQ/4F,GAAK,EAC7B6hR,EAAM7hR,GAAK,KAgBnB,OAAO6hR,EAGX,IAAII,EAA8B,SAAUtxM,GAExC,SAASsxM,IACL,OAAkB,OAAXtxM,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAQ/D,OAVAy4E,YAAUqxM,EAActxM,GAIxBsxM,EAAap3P,UAAUwgB,OAAS,WAC5B,IAAIngB,EAAQ/yB,KAAK+yB,MACbkrE,EAAe7rB,aAAkBpyE,KAAKwR,QAASuhB,EAAMknB,MACzD,OAAQpiC,aAAc41F,IAAgB,CAAExzD,KAAMlnB,EAAMknB,KAAMonB,YAAatuC,EAAMsuC,YAAazD,WAAY7qC,EAAM6qC,WAAY+vC,cAAe56E,EAAM46E,cAAexP,eAAgBprE,EAAMorE,eAAgBne,eAAgB+pM,GAAkB,SAAU7pM,EAAYC,GAAgB,OAASA,GAAgBptD,EAAMi3P,cAAiBnyQ,aAAc,MAAO,CAAEgQ,UAAW,qBAAsB5F,IAAKi+D,GACnXroE,aAAc,IAAKm+B,YAAS,CAAEhwB,GAAI+M,EAAMk3P,YAAapiQ,UAAW,yBAA2Bo2E,GAAe9d,GAAgBtoE,aAAcu7B,IAAU,KAAM,aAEzJ02O,EAXuB,CAYhC5tM,KACF,SAAS6tM,EAAeh3P,GACpB,OAAOA,EAAM86E,cAGjB,IAAIq8K,EAAkCnjO,aAAgB,CAClDrV,KAAM,UACNE,OAAQ,UACRkQ,gBAAgB,EAChBnQ,SAAU,WAEd,SAASw4O,EAAmB1uN,GACxB,IAAI1oD,EAAU0oD,EAAIc,WAAWrE,GAAGnlD,QAChC,MAAmB,cAAZA,GAAwC,SAAZA,IAC9B0oD,EAAIc,WAAWtpD,IAAIwqC,QACpBge,EAAI4lC,WAAa5lC,EAAI6lC,SACrB7lC,EAAIR,SACJQ,EAAIP,MAIZ,IAAIkvN,EAAiC,SAAU5xM,GAE3C,SAAS4xM,IACL,OAAkB,OAAX5xM,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAM/D,OARAy4E,YAAU2xM,EAAiB5xM,GAI3B4xM,EAAgB13P,UAAUwgB,OAAS,WAC/B,IAAIngB,EAAQ/yB,KAAK+yB,MACjB,OAAQlb,aAAcq1F,IAAel3D,YAAS,GAAIjjB,EAAO,CAAE2rE,gBAAiB,CAAC,mBAAoB,yBAA0B,cAAeyO,kBAAmB+8K,EAAiCjtN,uBAAwBlqC,EAAMkqC,uBAAwByvC,iBAAkB35E,EAAM0oC,IAAIc,WAAWtpD,IAAIwqC,WAE5R2sO,EAT0B,CAUnCluM,KAEEmuM,EAAoC,SAAU7xM,GAE9C,SAAS6xM,IACL,OAAkB,OAAX7xM,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAS/D,OAXAy4E,YAAU4xM,EAAoB7xM,GAI9B6xM,EAAmB33P,UAAUwgB,OAAS,WAClC,IAAengB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC1CurD,EAAavrD,EAAQwW,QAAQ8mC,iBAAmBo7N,EAChD59K,EAAWxvC,aAAiB/pC,EAAM0oC,IAAKsB,EAAYvrD,GAAS,EAAMuhB,EAAMkqC,wBAC5E,OAAQplD,aAAcw0F,IAAW,CAAE5wC,IAAK1oC,EAAM0oC,IAAK6wC,SAAUA,EAAUtsB,eAAgBS,EAAoBosB,WAAY95E,EAAM85E,WAAYC,YAAY,EAAOC,iBAAiB,EAAO/sE,WAAYjN,EAAMiN,WAAY+9B,OAAQhrC,EAAMgrC,OAAQC,SAAUjrC,EAAMirC,SAAUC,QAASlrC,EAAMkrC,SAAW,SAAUyhB,EAAWrsB,EAAY6sB,EAAYC,GAAgB,OACzVtoE,YADkW,CACpV,IAAKm+B,YAAS,CAAEnuB,UAAW,CAAC,mBAAoB,wBAAwB7O,OAAOq6C,GAAYrjB,KAAK,KAAM/tB,IAAKy9D,GAAavhB,aAAkBprC,EAAM0oC,IAAKjqD,IAAW2uE,MAE3KkqM,EAZ6B,CAatCnuM,KACF,SAASuE,EAAmB4sB,GACxB,OAAQx1F,aAAcu7B,IAAU,KAC5Bv7B,aAAc,MAAO,CAAEgQ,UAAW,uBAAwBtc,MAAO,CAAEwqD,YAAas3C,EAAWt3C,aAAes3C,EAAWv3C,mBACrHu3C,EAAWf,UAAaz0F,aAAc,MAAO,CAAEgQ,UAAW,iBAAmBwlF,EAAWf,UACxFz0F,aAAc,MAAO,CAAEgQ,UAAW,kBAAoBwlF,EAAW/kF,MAAMsuC,OAAS/+C,aAAcu7B,IAAU,KAAM,UAGtH,IAAIk3O,EAAmC,SAAU9xM,GAE7C,SAAS8xM,IACL,IAAI5oO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAM6oO,YAActpO,aAAQspO,GACrB7oO,EAiBX,OArBA+2B,YAAU6xM,EAAmB9xM,GAM7B8xM,EAAkB53P,UAAUwgB,OAAS,WACjC,IAAIngB,EAAQ/yB,KAAK+yB,MACbpoB,EAAK3K,KAAKuqR,YAAYx3P,EAAMy3P,kBAAmBh6K,EAAU7lG,EAAG6lG,QAASi6K,EAAgB9/Q,EAAG8/Q,cAC5F,OAAQ5yQ,aAAcm4F,IAAc,CAAE3uC,YAAatuC,EAAMsuC,YAAazD,WAAY7qC,EAAM6qC,WAAY2yC,WAAYx9E,EAAMw9E,WAAYI,QAAS59E,EAAM49E,QAASH,QAASA,EAASC,WAAYg6K,EAAe35K,eAAgB/9E,EAAM+9E,eAAgB/B,aAAch8E,EAAMg8E,aAAcc,cAAe98E,EAAM88E,cAAekB,eAAgB,WAC3T,IAAI25K,GAAqB33P,EAAMm9C,UAAYn9C,EAAMm9C,UAAU0yB,kBAAoB,QAC1E7vE,EAAMq9C,YAAcr9C,EAAMq9C,YAAYwyB,kBAAoB,OAC3D,GACJ,OAAQ/qF,aAAcu7B,IAAU,KAAMo9D,EAAQ/mG,IAAI,SAAUgyD,GACxD,IAAIlgB,EAAakgB,EAAIc,WAAWzoC,SAASynB,WACzC,OAAQ1jC,aAAc,MAAO,CAAEgQ,UAAW,2BAA4BlL,IAAK4+B,EAAYhwC,MAAO,CACtFw2J,WAAY2oH,EAAkBnvO,GAAc,SAAW,KACtD4uO,EAAmB1uN,GAAQ5jD,aAAcwyQ,EAAoBr0O,YAAS,CAAEylB,IAAKA,EAAKoxC,YAAY,EAAO7sE,WAAYub,IAAexoB,EAAM09C,eAAgBxT,wBAAwB,GAASU,aAAWlC,EAAK1oC,EAAM6qC,cAAkB/lD,aAAcuyQ,EAAiBp0O,YAAS,CAAEylB,IAAKA,EAAKoxC,YAAY,EAAOC,YAAY,EAAOC,iBAAiB,EAAO/sE,WAAYub,IAAexoB,EAAM09C,eAAgBxT,wBAAwB,GAASU,aAAWlC,EAAK1oC,EAAM6qC,oBAErc,SAAU8hB,EAAWrsB,EAAY6sB,EAAYC,EAAciwB,EAAax5C,EAAO8sG,EAAYvzD,GAAa,OAAQt4F,aAAc,IAAKm+B,YAAS,CAAE/zB,IAAKy9D,EAAW73D,UAAW,CAAC,wBAAwB7O,OAAOq6C,GAAYrjB,KAAK,KAAM4mB,MAAOA,EAAO,gBAAiB8sG,EAAY,gBAAiBvzD,GAAap6D,aAAqBq6D,IAAejwB,MAEnVmqM,EAtB4B,CAuBrCpuM,KACF,SAASquM,EAAYC,GAGjB,IAFA,IAAIh6K,EAAU,GACVi6K,EAAgB,GACX/6Q,EAAK,EAAGi7Q,EAAqBH,EAAkB96Q,EAAKi7Q,EAAmBxmR,OAAQuL,IAAM,CAC1F,IAAI68G,EAAYo+J,EAAmBj7Q,GACnC8gG,EAAQ5sG,KAAK2oH,EAAU9wD,KAClB8wD,EAAUq+J,WACXH,EAAc7mR,KAAK2oH,EAAU9wD,KAGrC,MAAO,CAAE+0C,QAASA,EAASi6K,cAAeA,GAG9C,IAAII,EAA0B9jO,aAAgB,CAAEphC,KAAM,WAClDmlQ,EAA2B,SAAUtyM,GAErC,SAASsyM,IACL,IAAIppO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAShE,OARA0hD,EAAMg+B,UAAYvsC,eAClBuO,EAAMr5C,MAAQ,CACV4hR,YAAa50O,gBAEjBqM,EAAMi+B,aAAe,SAAUltC,GAC3B0pC,aAAOz6B,EAAMg+B,UAAWjtC,GACxB0pC,aAAOz6B,EAAM3uB,MAAM6sD,MAAOntC,IAEvBiP,EAgBX,OA3BA+2B,YAAUqyM,EAAWtyM,GAarBsyM,EAAUp4P,UAAUwgB,OAAS,WACzB,IAAIvoC,EAAK3K,KAAMwR,EAAU7G,EAAG6G,QAASuhB,EAAQpoB,EAAGooB,MAAO1qB,EAAQsC,EAAGtC,MAAOq3E,EAAY/0E,EAAG+0E,UACpFzlC,EAAOlnB,EAAMknB,KAAMonB,EAActuC,EAAMsuC,YACvC48B,EAAe7rB,aAAkB5gE,EAASyoC,EAAM,QACpD,OAAQpiC,aAAci2F,IAAa,CAAE7zD,KAAMA,EAAMonB,YAAaA,EAAazD,WAAY7qC,EAAM6qC,WAAY+vC,cAAe56E,EAAM46E,cAAexP,eAAgBprE,EAAMorE,eAAgBve,MAAO5/E,KAAK2/E,cAAgB,SAAUorM,EAAUn7K,EAAeo7K,EAAej+P,GAAc,OAAQlV,aAAc,KAAMm+B,YAAS,CAAE/zB,IAAK8oQ,EAAU/9Q,KAAM,WAAY6a,UAAW,CAAC,kBAAkB7O,OAAO42F,EAAe78E,EAAM2rE,iBAAmB,IAAI1uD,KAAK,MAAQg7O,EAAej4P,EAAMsrE,eAAiBtrE,EAAM46E,cAAgB,CAAE,kBAAmBtlG,EAAM4hR,aAAgB,IACxhBpyQ,aAAc,MAAO,CAAEgQ,UAAW,gDAAiD5F,IAAK8Q,EAAMmtD,YAC1FntD,EAAMk4P,gBAAmBpzQ,aAAcu2F,IAAgB,CAAEn0D,KAAMA,EAAMo0D,cAAew8K,GAA2B,SAAUK,EAAWC,EAAgBjrM,EAAYC,GAAgB,OAAQtoE,aAAc,IAAKm+B,YAAS,CAAE/zB,IAAKipQ,EAAWrjQ,UAAW,CAAC,0BAA0B7O,OAAOmyQ,GAAgBn7O,KAAK,MAAQiuD,GAAe9d,MAC9TpzD,GAAelV,aAAciyQ,EAAc,CAAE7vO,KAAMA,EAAMonB,YAAaA,EAAassC,cAAe56E,EAAM46E,cAAes8K,YAAa5hR,EAAM4hR,YAAaD,YAAaj3P,EAAMi3P,YAAapsN,WAAY7qC,EAAM6qC,WAAYugC,eAAgBprE,EAAMorE,iBAC5OtmF,aAAc,MAAO,CAAEgQ,UAAW,wBAAyB5F,IAAK8Q,EAAMq4P,gBAClEr4P,EAAMs4P,UACNxzQ,aAAc,MAAO,CAAEgQ,UAAW,wBAAyBtc,MAAO,CAAEshH,UAAW95F,EAAMu4P,gBACjFzzQ,aAAcyyQ,EAAmB,CAAE/5K,WAAYt2D,EAAMuwO,iBAAkBz3P,EAAMy3P,iBAAkB75K,QAAS59E,EAAM49E,QAASG,eAAgBpxB,EAAWqvB,cAAeh8E,EAAM46E,cAAekC,cAAe98E,EAAM88E,cAAexuC,YAAatuC,EAAMsuC,YAAaoP,eAAgB19C,EAAM09C,eAAgBP,UAAWn9C,EAAMm9C,UAAWE,YAAar9C,EAAMq9C,YAAaxS,WAAY7qC,EAAM6qC,eACtX/lD,aAAc,MAAO,CAAEgQ,UAAW,qBAAuBkL,EAAMw4P,gBAEpET,EA5BoB,CA6B7BzuM,KA6KF,SAASmvM,EAAW/vN,EAAKgwN,EAAWC,EAAS7qL,GACzC,GAAIplC,EAAI4lC,WAAaoqL,GAAahwN,EAAI6lC,UAAYoqL,EAAU,EACxD,OAAOjwN,EAEX,IAAIc,EAAad,EAAIc,WACjBzB,EAAYyB,EAAWnhB,MACvB4f,EAAclB,aAAgBgB,EAAW,CACzC3xD,MAAO03F,EAAM4qL,GAAWxxO,KACxB7wC,IAAKovC,YAAQqoD,EAAM6qL,EAAU,GAAGzxO,KAAM,KAE1C,OAAOjE,YAASA,YAAS,GAAIylB,GAAM,CAAE4lC,SAAUoqL,EAAWnqL,QAASoqL,EAAU,EAAGnvN,WAAY,CACpFtpD,IAAKspD,EAAWtpD,IAChBilD,GAAIliB,YAASA,YAAS,GAAIumB,EAAWrE,IAAK,CAAEzC,kBAAkB,IAC9D3hC,SAAUyoC,EAAWzoC,SACrBsnB,MAAO4f,GACRC,QAASQ,EAAIR,SAAWD,EAAY7xD,MAAM2vC,YAAcgiB,EAAU3xD,MAAM2vC,UAAWoiB,MAAOO,EAAIP,OAASF,EAAY5xD,IAAI0vC,YAAcgiB,EAAU1xD,IAAI0vC,YAE9J,IAAI6yO,EAAqC,SAAUnzM,GAE/C,SAASmzM,IACL,IAAIjqO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAKhE,OAHA0hD,EAAMkqO,gBAAiB,EAEvBlqO,EAAMmqO,YAAc,GACbnqO,EAmCX,OA1CA+2B,YAAUkzM,EAAqBnzM,GAS/BmzM,EAAoBj5P,UAAUiiE,QAAU,SAAUm3L,GAM9C,IALA,IAAIpqO,EAAQ1hD,KACRywG,EAAaj4B,EAAO9lD,UAAUiiE,QAAQz/D,KAAKl1B,KAAM8rR,GACjDr3L,EAAiBz0F,KAAKy0F,eACtBs3L,EAAgB,SAAUj3L,GAAS,OAAQpzC,EAAMmqO,YAAY51L,YAAcnB,KAEtEkB,EAAQ,EAAGA,EAAQvB,EAAetwF,OAAQ6xF,GAAS,EACxDvB,EAAeuB,GAASvB,EAAeuB,GAAO7gF,OAAO42Q,GAEzD,OAAOt7K,GAEXk7K,EAAoBj5P,UAAUwiE,uBAAyB,SAAUjxC,EAAW6wC,EAAOF,GAC/E,IAAeH,EAANz0F,KAA0By0F,eAAgBo3L,EAA1C7rR,KAA2D6rR,YAChEv2L,EAAgBrxC,EAAUqxC,cAAee,EAAgBpyC,EAAUoyC,cAAeC,EAAkBryC,EAAUqyC,gBAClH,GAAIt2F,KAAK4rR,gBAAkBt2L,EAAe,CACtC,IAAI02L,EAAkB/1L,YAAcX,GAEpC,IAAKu2L,EAAYG,GACb,GAAIhsR,KAAKq0F,eAAgB,CACrB,IAAI43L,EAAmBj2O,YAASA,YAAS,GAAIs/C,GAAgB,CAAEv1B,KAAM81B,aAAeP,EAAcv1B,KAAM+0B,EAAM/0B,QAE9G8rN,EADyB51L,YAAcg2L,KACL,EAClCx3L,EAAe4B,GAAeC,GAAmB21L,EACjDjsR,KAAKu1F,WAAWD,EAAeR,EAAOF,QAGtCi3L,EAAYG,IAAmB,EAC/Bp3L,EAAchxF,KAAK0xF,GAI/B,OAAO9c,EAAO9lD,UAAUwiE,uBAAuBhgE,KAAKl1B,KAAMikD,EAAW6wC,EAAOF,IAEzE+2L,EA3C8B,CA4CvCx3L,KAEE+3L,EAA0B,SAAU1zM,GAEpC,SAAS0zM,IACL,IAAIxqO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAWhE,OAVA0hD,EAAMyqO,WAAa,IAAInlL,IACvBtlD,EAAM0qO,YAAc,IAAIplL,IACxBtlD,EAAM2qO,SAAW,IAAIrlL,IACrBtlD,EAAM4qO,eAAiB,IAAItlL,IAC3BtlD,EAAMg+B,UAAYvsC,eAClBuO,EAAMr5C,MAAQ,CACVkkR,eAAgB,KAChBC,iBAAkB,KAClBC,qBAAsB,IAEnB/qO,EAuKX,OApLA+2B,YAAUyzM,EAAU1zM,GAepB0zM,EAASx5P,UAAUwgB,OAAS,WACxB,IAAIwO,EAAQ1hD,KACR2K,EAAK3K,KAAM+yB,EAAQpoB,EAAGooB,MAAO1qB,EAAQsC,EAAGtC,MACxC2f,EADyDrd,EAAG6G,QAC1CwW,QAClBk2E,EAASnrE,EAAM8tE,MAAM18F,OACrBuoR,EAAqB/C,EAAoB52P,EAAMsvE,iBAAkBnE,GACjEyuL,EAAmBhD,EAAoB52P,EAAMwvE,YAAarE,GAC1D0uL,EAAqBjD,EAAoB3pR,KAAK6sR,mBAAoB3uL,GAClE4uL,EAAkBnD,EAAoB3pR,KAAK+sR,gBAAiB7uL,GAC5DtzF,EAnQZ,SAA+BmxD,EAC/B5N,EAAcC,EAAiBgmC,EAAaq4L,EAAsBD,EAAkB3rL,GAChF,IAAImsL,EAAY,IAAIrB,EACpBqB,EAAU34L,gBAAiB,EAC3B24L,EAAU54L,YAAcA,GACH,IAAjBjmC,IAA6C,IAApBC,GACzB4+N,EAAU14L,SAAWk4L,EACrBQ,EAAUpB,gBAAiB,GAEE,iBAAjBz9N,EACZ6+N,EAAUz4L,YAAcpmC,EAEQ,iBAApBC,IACZ4+N,EAAUz4L,YAAcnmC,EACxB4+N,EAAUpB,gBAAiB,GAK/B,IAFA,IAAIE,EAAY,GACZmB,EAAoB,GACfplR,EAAI,EAAGA,EAAIk0D,EAAK53D,OAAQ0D,GAAK,EAAG,CACrC,IAEIqlR,EAAcT,GAFdhxN,EAAMM,EAAKl0D,IACM00D,WAAWzoC,SAASynB,YAEtB,MAAf2xO,EACApB,EAAUloR,KAAK,CACX+F,MAAO9B,EACPutF,UAAW83L,EACXntN,KAAM,CACF52D,MAAOsyD,EAAI4lC,SACXj4F,IAAKqyD,EAAI6lC,QAAU,KAK3B2rL,EAAkBrpR,KAAK63D,GAS/B,IANA,IAAIm5B,EAAgBo4L,EAAUr4L,QAAQm3L,GAElCnhR,EAwDR,SAAoBwiR,EAAUpxN,EAAM8kC,GAKhC,IAJA,IAAIusL,EA8DR,SAA6Bj2L,EAAO+G,GAEhC,IADA,IAAIkvL,EAAiB,GACZnsL,EAAM,EAAGA,EAAM/C,EAAQ+C,GAAO,EACnCmsL,EAAexpR,KAAK,IAExB,IAAK,IAAI8L,EAAK,EAAG29Q,EAAUl2L,EAAOznF,EAAK29Q,EAAQlpR,OAAQuL,IACnD,KAAIq+D,EAAOs/M,EAAQ39Q,GACnB,IAASuxF,EAAMlzB,EAAKhO,KAAK52D,MAAO83F,EAAMlzB,EAAKhO,KAAK32D,IAAK63F,GAAO,EACxDmsL,EAAensL,GAAKr9F,KAAKmqE,GAGjC,OAAOq/M,EAzEcE,CAAoBH,EAAUtsL,EAAM18F,QACrDopR,EAAsB,GACtBC,EAAqB,GACrBC,EAAkB,GACbxsL,EAAM,EAAGA,EAAMJ,EAAM18F,OAAQ88F,GAAO,EAAG,CAM5C,IALA,IAAI9J,EAAQi2L,EAAensL,GAEvBupL,EAAmB,GACnBkD,EAAgB,EAChBC,EAAmB,EACdj+Q,EAAK,EAAGk+Q,EAAUz2L,EAAOznF,EAAKk+Q,EAAQzpR,OAAQuL,IAGnD86Q,EAAiB5mR,KAAK,CAClB63D,IAAK+vN,EAFL/vN,EAAMM,GADNgS,EAAO6/M,EAAQl+Q,IACC/F,OAEKs3F,EAAKA,EAAM,EAAGJ,GACnC+pL,WAAW,EACXzkL,YAAY,EACZ0nL,YAAa9/M,EAAKonB,WAClB03B,UAAW9+C,EAAKonB,WAAau4L,IAEjCA,EAAgB3/M,EAAKonB,WAAapnB,EAAKqnB,UAG3C,IAAI04L,EAAkB,GACtBJ,EAAgB,EAChBC,EAAmB,EACnB,IAAK,IAAIhjR,EAAK,EAAGojR,EAAU52L,EAAOxsF,EAAKojR,EAAQ5pR,OAAQwG,IAAM,CACzD,IAAIojE,EACAtS,EAAMM,GADNgS,EAAOggN,EAAQpjR,IACChB,OAEhBqkR,EAAajgN,EAAKhO,KAAK52D,QAAU83F,EACrC0sL,GAAoB5/M,EAAKonB,WAAau4L,EACtCA,EAAgB3/M,EAAKonB,WAAapnB,EAAKqnB,UAHtBrnB,EAAKhO,KAAK32D,IAAM2kE,EAAKhO,KAAK52D,MAAQ,GAK/CwkR,GAAoB5/M,EAAKqnB,UACrB44L,GACAF,EAAgBlqR,KAAK,CACjB63D,IAAK+vN,EAAW/vN,EAAKsS,EAAKhO,KAAK52D,MAAO4kE,EAAKhO,KAAK32D,IAAKy3F,GACrD+pL,WAAW,EACXzkL,YAAY,EACZ0nL,YAAa9/M,EAAKonB,WAClB03B,UAAW,KAIdmhK,IACLF,EAAgBlqR,KAAK,CACjB63D,IAAK+vN,EAAW/vN,EAAKsS,EAAKhO,KAAK52D,MAAO4kE,EAAKhO,KAAK32D,IAAKy3F,GACrD+pL,WAAW,EACXzkL,YAAY,EACZ0nL,YAAa9/M,EAAKonB,WAClB03B,UAAW8gK,IAEfA,EAAmB,GAG3BJ,EAAoB3pR,KAAK4mR,GACzBgD,EAAmB5pR,KAAKkqR,GACxBL,EAAgB7pR,KAAK+pR,GAEzB,MAAO,CAAEJ,oBAAqBA,EAAqBC,mBAAoBA,EAAoBC,gBAAiBA,GArHnGQ,CADMjB,EAAU91L,UACKn7B,EAAM8kC,GAAQ0sL,EAAsB5iR,EAAG4iR,oBAAqBC,EAAqB7iR,EAAG6iR,mBAAoBC,EAAkB9iR,EAAG8iR,gBACvJS,EAAW,GACXC,EAAiB,GAEZz+Q,EAAK,EAAG0+Q,EAAsBnB,EAAmBv9Q,EAAK0+Q,EAAoBjqR,OAAQuL,IAAM,CAE7F89Q,GADI/xN,EAAM2yN,EAAoB1+Q,IACP2xF,UAAUz9F,KAAK,CAClC63D,IAAKA,EACLmvN,WAAW,EACXzkL,YAAY,EACZ0nL,YAAa,EACbhhK,UAAW,IAEf,IAAK,IAAI5rB,EAAMxlC,EAAI4lC,SAAUJ,GAAOxlC,EAAI6lC,QAASL,GAAO,EACpDssL,EAAoBtsL,GAAKr9F,KAAK,CAC1B63D,IAAK+vN,EAAW/vN,EAAKwlC,EAAKA,EAAM,EAAGJ,GACnC+pL,WAAW,EACXzkL,YAAY,EACZ0nL,YAAa,EACbhhK,UAAW,IAKvB,IAAS5rB,EAAM,EAAGA,EAAMJ,EAAM18F,OAAQ88F,GAAO,EACzCitL,EAAStqR,KAAK,GAElB,IAAK,IAAIgH,EAAK,EAAGyjR,EAAkBz5L,EAAehqF,EAAKyjR,EAAgBlqR,OAAQyG,IAAM,CACjF,IACI6wD,EADA6yN,EAAcD,EAAgBzjR,GAE9B2jR,EAAaD,EAAYvuN,KAQ7B,IAPAytN,EAAmBe,EAAWplR,OAAOvF,KAAK,CACtC63D,IAAK+vN,EAHL/vN,EAAMM,EAAKuyN,EAAY3kR,OAGF4kR,EAAWplR,MAAOolR,EAAWnlR,IAAKy3F,GACvD+pL,WAAW,EACXzkL,YAAY,EACZ0nL,YAAa,EACbhhK,UAAW,IAEN5rB,EAAMstL,EAAWplR,MAAO83F,EAAMstL,EAAWnlR,IAAK63F,GAAO,EAC1DitL,EAASjtL,IAAQ,EACjBssL,EAAoBtsL,GAAKr9F,KAAK,CAC1B63D,IAAK+vN,EAAW/vN,EAAKwlC,EAAKA,EAAM,EAAGJ,GACnC+pL,WAAW,EACXzkL,YAAY,EACZ0nL,YAAa,EACbhhK,UAAW,IAKvB,IAAS5rB,EAAM,EAAGA,EAAMJ,EAAM18F,OAAQ88F,GAAO,EACzCktL,EAAevqR,KAAK6pR,EAAgBxsL,IAExC,MAAO,CAAEssL,oBAAqBA,EAAqBC,mBAAoBA,EAAoBU,SAAUA,EAAUC,eAAgBA,GAuKlHK,CAAsB1yN,aAAc/oC,EAAMuvE,YAAat6E,EAAQ6iC,YAAa93B,EAAMo7B,aAAcp7B,EAAMq7B,gBAAiBpmC,EAAQijC,iBAAkB5iD,EAAMokR,qBAAsBpkR,EAAMmkR,iBAAkBz5P,EAAM8tE,OAAQ0sL,EAAsB3iR,EAAG2iR,oBAAqBC,EAAqB5iR,EAAG4iR,mBAAoBU,EAAWtjR,EAAGsjR,SAAUC,EAAiBvjR,EAAGujR,eAC9VzD,EACF33P,EAAMm9C,WAAan9C,EAAMm9C,UAAU0yB,mBAChC7vE,EAAMq9C,aAAer9C,EAAMq9C,YAAYwyB,mBACxC,GACJ,OAAQ/qF,aAAc,KAAM,CAAEoK,IAAKjiB,KAAK0/E,UAAW1yE,KAAM,OACrD+lB,EAAM0sE,aAAe1sE,EAAM0sE,cAC3B1sE,EAAM8tE,MAAMp3F,IAAI,SAAU1H,EAAMk/F,GAC5B,IAAIwtL,EAAgB/sO,EAAMgtO,aAAaztL,EAAKluE,EAAMiqE,SAAWuwL,EAAoBtsL,GAAOusL,EAAmBvsL,GAAMluE,EAAM6qC,WAAY8sN,GAC/HiE,EAAgBjtO,EAAMgtO,aAAaztL,EAwJvD,SAA+B2tL,EAAYC,GACvC,IAAKD,EAAWzqR,OACZ,MAAO,GAEX,IAAI2qR,EASR,SAA8BD,GAE1B,IADA,IAAIC,EAAmB,GACdp/Q,EAAK,EAAGq/Q,EAAkBF,EAAen/Q,EAAKq/Q,EAAgB5qR,OAAQuL,IAE3E,IADA,IACS/E,EAAK,EAAGqkR,EADAD,EAAgBr/Q,GACW/E,EAAKqkR,EAAa7qR,OAAQwG,IAAM,CACxE,IAAI4hH,EAAYyiK,EAAarkR,GAC7BmkR,EAAiBviK,EAAU9wD,IAAIc,WAAWzoC,SAASynB,YAAcgxE,EAAUshK,YAGnF,OAAOiB,EAlBgBG,CAAqBJ,GAC5C,OAAOD,EAAWnlR,IAAI,SAAUgyD,GAAO,MAAQ,CAC3CA,IAAKA,EACLmvN,WAAW,EACXzkL,YAAY,EACZ0nL,YAAaiB,EAAiBrzN,EAAIc,WAAWzoC,SAASynB,YACtDsxE,UAAW,KAlKyCqiK,CAAsBpC,EAAgB7rL,GAAMusL,GAAqBz6P,EAAM6qC,WAAY,GAAIlW,QAAQ30B,EAAMm9C,WAAYxoB,QAAQ30B,EAAMq9C,cAAc,GACzL,OAAQv4D,aAAcizQ,EAAW,CAAEnuQ,IAAK5a,EAAK4a,IAAKijE,MAAOl+B,EAAMyqO,WAAWh5O,UAAUpxC,EAAK4a,KAAMujE,WAAYx+B,EAAM0qO,YAAYj5O,UAAUpxC,EAAK4a,KAA+E0kD,YAAatuC,EAAMsuC,YAAapnB,KAAMl4C,EAAKk4C,KAAM0zD,cAAe56E,EAAMo8P,eAAgBlE,eAAgBl4P,EAAMsjF,iBAA2B,IAARpV,EAAW+oL,YAAaj3P,EAAMsjF,gBAA4Ez4C,WAAY7qC,EAAM6qC,WAAY6S,eAAgB19C,EAAM09C,eAAgBP,UAAWn9C,EAAMm9C,UAAWE,YAAar9C,EAAMq9C,YAAa+tB,eAAgBp8F,EAAKo8F,eAAgBE,eAAgBt8F,EAAKs8F,eAAgBK,gBAAiB38F,EAAK28F,gBAAiBmR,cAAe9tG,EAAK8tG,cAAec,QAASu9K,EAASjtL,GAAMqqL,cAAe6C,EAAeltL,GAAMupL,iBAAkB+C,EAAoBtsL,GAAMmqL,eAAgB1pO,EAAM2qO,SAASl5O,UAAUpxC,EAAK4a,KAAM0uQ,UACh3BxzQ,aAAcu7B,IAAU,KACpBv7B,aAAcu7B,IAAU,KAAMq7O,GAC9B52Q,aAAcu7B,IAAU,KAAMu7O,IAAkBpD,UACpD1zQ,aAAcu7B,IAAU,KACpBsO,EAAM0tO,eAAexC,EAAmB3rL,GAAM,aAC9Cv/C,EAAM0tO,eAAe1C,EAAmBzrL,GAAM,gBAC9Cv/C,EAAM0tO,eAAezC,EAAiB1rL,GAAM,mBAGhEirL,EAASx5P,UAAUguD,kBAAoB,WACnC1gF,KAAKqvR,cAAa,IAEtBnD,EAASx5P,UAAUkuD,mBAAqB,SAAUqT,EAAWq7L,GACzD,IAAIC,EAAevvR,KAAK+yB,MACxB/yB,KAAKqvR,cAAc7yO,aAAay3C,EAAWs7L,KAE/CrD,EAASx5P,UAAUm6P,iBAAmB,WAClC,IAAI95P,EAAQ/yB,KAAK+yB,MACjB,OAAIA,EAAMm9C,WAAan9C,EAAMm9C,UAAUnU,KAAK53D,OACjC4uB,EAAMm9C,UAAUnU,KAEvBhpC,EAAMq9C,aAAer9C,EAAMq9C,YAAYrU,KAAK53D,OACrC4uB,EAAMq9C,YAAYrU,KAEtBhpC,EAAMqvE,mBAEjB8pL,EAASx5P,UAAUq6P,cAAgB,WAC/B,IAAIh6P,EAAQ/yB,KAAK+yB,MACjB,OAAIA,EAAMq9C,aAAer9C,EAAMq9C,YAAYrU,KAAK53D,OACrC4uB,EAAMq9C,YAAYrU,KAEtB,IAEXmwN,EAASx5P,UAAUg8P,aAAe,SAAUztL,EAAKuuL,EAAe5xN,EAAY8sN,EAAmB79K,EAAYC,EAAYC,GACnH,IAAIv7F,EAAUxR,KAAKwR,QACfi/D,EAAiBzwE,KAAK+yB,MAAM09C,eAC5B87M,EAAiBvsR,KAAKqI,MAAMkkR,eAC5BtvN,EAAqD,IAA5Bj9D,KAAK+yB,MAAM8tE,MAAM18F,OAC1CyoG,EAAWC,GAAcC,GAAcC,EACvConB,EAAQ,GACZ,GAAIo4J,EACA,IAAK,IAAI78Q,EAAK,EAAG+/Q,EAAkBD,EAAe9/Q,EAAK+/Q,EAAgBtrR,OAAQuL,IAAM,CACjF,IAAI68G,EAAYkjK,EAAgB//Q,GAC5B+rD,EAAM8wD,EAAU9wD,IAChBlgB,EAAakgB,EAAIc,WAAWzoC,SAASynB,WACrC5+B,EAAM4+B,EAAa,IAAM0lD,EACzB2pL,EAAYr+J,EAAUq+J,YAAcF,EAAkBnvO,GACtD4qD,EAAaomB,EAAUpmB,WACvBl6F,EAAO,GACPC,EAAQ,GACRi6F,IACI30F,EAAQtI,OACRgD,EAAQ,EACRD,EAAOsgR,EAAe51M,MAAMlb,EAAI6lC,SAAWirL,EAAe51M,MAAMlb,EAAI4lC,YAGpEp1F,EAAO,EACPC,EAAQqgR,EAAe31M,OAAOnb,EAAI4lC,UAAYkrL,EAAe31M,OAAOnb,EAAI6lC,WAOhF6yB,EAAMvwH,KAAKiU,aAAc,MAAO,CAAEgQ,UAAW,4BAA8Bs+E,EAAa,gCAAkC,IAAKxpF,IAAKA,EAAKsF,IAAK2qF,EAAW,KAAO5sG,KAAKssR,eAAen5O,UAAUx2B,GAAMpR,MAAO,CACnMw2J,WAAY6oH,EAAY,GAAK,SAC7B/9J,UAAW1mB,EAAa,GAAKomB,EAAUM,UACvC9gH,IAAKo6F,EAAaomB,EAAUshK,YAAc,GAC1C5hR,KAAMA,EACNC,MAAOA,IACNi+Q,EAAmB1uN,GAAQ5jD,aAAcwyQ,EAAoBr0O,YAAS,CAAEylB,IAAKA,EAAKoxC,WAAYA,EAAY7sE,WAAYub,IAAek1B,EAAgBxT,uBAAwBA,GAA0BU,aAAWlC,EAAKmC,KAAkB/lD,aAAcuyQ,EAAiBp0O,YAAS,CAAEylB,IAAKA,EAAKoxC,WAAYA,EAAYC,WAAYA,EAAYC,gBAAiBA,EAAiB/sE,WAAYub,IAAek1B,EAAgBxT,uBAAwBA,GAA0BU,aAAWlC,EAAKmC,OAG7e,OAAOu2D,GAEX+3J,EAASx5P,UAAU08P,eAAiB,SAAUrzN,EAAMmyC,GAChD,IAAIhlG,EAAQlJ,KAAKwR,QAAQtI,MACrB00D,EAAa59D,KAAK+yB,MAAM6qC,WACxB2uN,EAAiBvsR,KAAKqI,MAAMkkR,eAC5Bp4J,EAAQ,GACZ,GAAIo4J,EACA,IAAK,IAAI78Q,EAAK,EAAGmzF,EAAS9mC,EAAMrsD,EAAKmzF,EAAO1+F,OAAQuL,IAAM,CACtD,IAAI+rD,EAAMonC,EAAOnzF,GACbggR,EAAexmR,EAAQ,CACvBgD,MAAO,EACPD,KAAMsgR,EAAe51M,MAAMlb,EAAI6lC,SAAWirL,EAAe51M,MAAMlb,EAAI4lC,WACnE,CACAp1F,KAAM,EACNC,MAAOqgR,EAAe31M,OAAOnb,EAAI4lC,UAAYkrL,EAAe31M,OAAOnb,EAAI6lC,UAE3E6yB,EAAMvwH,KAAKiU,aAAc,MAAO,CAAE8E,IAAKuhD,aAAmBzC,EAAIc,YAAa10C,UAAW,wBAAyBtc,MAAOmkR,GAA6B,aAAbxhL,EAClIr2F,aAAcs2F,IAASn4D,YAAS,CAAEylB,IAAKA,GAAOkC,aAAWlC,EAAKmC,KAC9DqwC,aAAWC,KAGvB,OAAOr2F,KAAc8/B,WAAM,EAAQisB,YAAc,CAACxwB,IAAU,IAAK+gF,KAErE+3J,EAASx5P,UAAU28P,aAAe,SAAUM,GACxC,IAAe58P,EAAN/yB,KAAiB+yB,MAAOq5P,EAAxBpsR,KAAyCosR,YAClD,IAAKr5P,EAAMiqE,UACe,OAAtBjqE,EAAMggD,YACR,CACE,GAAI48M,EAAwB,CACxB,IAAIC,EAAW78P,EAAM8tE,MAAMp3F,IAAI,SAAU1H,GAAQ,OAAOqqR,EAAYllL,WAAWnlG,EAAK4a,OAChFizQ,EAASzrR,QAETnE,KAAK87E,SAAS,CACVywM,eAAgB,IAAIr2M,IAFTl2E,KAAK0/E,UAAUtD,QAEkBwzM,GAAU,GACtD,KAIZ,IAAIC,EAAqB7vR,KAAKqI,MAAMokR,qBAChCqD,EAAqB9vR,KAAK+vR,4BAC1BC,GAA8C,IAAvBj9P,EAAMo7B,eAAmD,IAA1Bp7B,EAAMq7B,gBAChEpuD,KAAK47E,aAAa,CAId6wM,qBAAsBz2O,YAASA,YAAS,GAAI65O,GAAqBC,GACjEtD,iBAAkBwD,EAAuBhwR,KAAKiwR,0BAA4B,SAItF/D,EAASx5P,UAAUq9P,0BAA4B,WAC3C,IAAIG,EAAWlwR,KAAKssR,eAAeplL,WAC/BulL,EAAuB,GAE3B,IAAK,IAAI9vQ,KAAOuzQ,EAAU,CACtB,IAAI1lR,EAAS+T,KAAK06B,MAAMi3O,EAASvzQ,GAAKlS,wBAAwBD,QAC1D+wC,EAAa5+B,EAAI4F,MAAM,KAAK,GAChCkqQ,EAAqBlxO,GAAch9B,KAAKukC,IAAI2pO,EAAqBlxO,IAAe,EAAG/wC,GAEvF,OAAOiiR,GAEXP,EAASx5P,UAAUu9P,wBAA0B,WACzC,IAAIE,EAAWnwR,KAAK+yB,MAAM8tE,MAAM,GAAGlkF,IAE/ByzQ,EAAgBpwR,KAAKqsR,SAASnlL,WAAWipL,GAC7C,OAFanwR,KAAKmsR,WAAWjlL,WAAWipL,GAE1B1lR,wBAAwBuB,OAASokR,EAAc3lR,wBAAwBsB,KAEzFmgR,EAASx5P,UAAU29P,WAAa,WAC5B,IAAIC,EAAQtwR,KAAKmsR,WAAWjlL,WAC5B,OAAOlnG,KAAK+yB,MAAM8tE,MAAMp3F,IAAI,SAAU1H,GAAQ,OAAOuuR,EAAMvuR,EAAK4a,QAE7DuvQ,EArLmB,CAsL5B7vM,KACF6vM,EAASlwM,iBAAiB,CACtBywM,qBAAsBjwO,OA2B1B,IAAI+zO,EAAuB,SAAU/3M,GAEjC,SAAS+3M,IACL,IAAI7uO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAoBhE,OAnBA0hD,EAAM8uO,sBAAwBvvO,aAAQwoO,GACtC/nO,EAAM+uO,iBAAmBxvO,aAAQwoO,GACjC/nO,EAAMgvO,iBAAmBzvO,aAAQwoO,GACjC/nO,EAAMivO,uBAAyB1vO,aAAQwoO,GACvC/nO,EAAM4tB,eAAiBruB,aAAQ4oO,GAC/BnoO,EAAM8tB,iBAAmBvuB,aAAQ4oO,GACjCnoO,EAAMkvO,QAAU,IAAI5pL,IACpBtlD,EAAMi+B,aAAe,SAAU2B,GAC3B5/B,EAAM4/B,OAASA,EACXA,EACA5/B,EAAMlwC,QAAQupE,6BAA6Br5B,EAAO,CAC9CjP,GAAI6uC,EACJ2W,kBAAmBv2C,EAAM3uB,MAAMklE,oBAInCv2C,EAAMlwC,QAAQwpE,+BAA+Bt5B,IAG9CA,EAkFX,OAxGA+2B,YAAU83M,EAAO/3M,GAwBjB+3M,EAAM79P,UAAUwgB,OAAS,WACrB,IAAIwO,EAAQ1hD,KACR+yB,EAAQ/yB,KAAK+yB,MACbsuC,EAActuC,EAAMsuC,YAAajT,EAAkBr7B,EAAMq7B,gBAAiBD,EAAep7B,EAAMo7B,aAAc7C,EAAav4B,EAAMu4B,WAChIs1C,EAAS7tE,EAAM8tE,MAAM18F,OACrB0sR,EAAwB7wR,KAAKwwR,sBAAsBz9P,EAAMsvE,iBAAkBzB,GAC3EkwL,EAAmB9wR,KAAKywR,iBAAiB19P,EAAMwvE,YAAa3B,GAC5DmwL,EAAmB/wR,KAAK0wR,iBAAiB39P,EAAMuvE,YAAa1B,GAC5DowL,EAAyBhxR,KAAK2wR,uBAAuB59P,EAAMqvE,kBAAmBxB,GAC9EqwL,EAAiBjxR,KAAKsvE,eAAev8C,EAAMm9C,UAAW0wB,GACtDswL,EAAmBlxR,KAAKwvE,iBAAiBz8C,EAAMq9C,YAAawwB,GAC5DuwL,GAAoC,IAAjBhjO,IAA6C,IAApBC,EAG5C+iO,IAAqB7lO,IACrB6lO,GAAmB,EACnB/iO,EAAkB,KAClBD,EAAe,MAEnB,IAAIkF,EAAa,CACb,kBACA89N,EAAmB,2BAA6B,6BAChD7lO,EAAa,GAAK,2BAEtB,OAAQzzC,aAAc,MAAO,CAAEgQ,UAAWwrC,EAAWrjB,KAAK,KAAM/tB,IAAKjiB,KAAK2/E,aAAcp0E,MAAO,CAGvF7B,MAAOqpB,EAAMggD,YACbhrC,SAAUhV,EAAM21E,gBAEpB7wF,aAAc8mF,IAAU,CAAElgD,KAAM,OAAS,SAAUof,EAASD,GAAc,OAAQ/lD,aAAcu7B,IAAU,KACtGv7B,aAAc,QAAS,CAAE7K,KAAM,eAAgB6a,UAAW,2BAA4Btc,MAAO,CACrF7B,MAAOqpB,EAAMggD,YACbhrC,SAAUhV,EAAM21E,cAChBl+F,OAAQ8gD,EAAav4B,EAAM8/C,aAAe,KAE9C9/C,EAAMq+P,aACNv5Q,aAAc,QAAS,CAAE7K,KAAM,gBAAkB+lB,EAAM8tE,MAAMp3F,IAAI,SAAUo3F,EAAOn5F,GAAO,OAAQmQ,aAAcq0Q,EAAU,CAAEjqQ,IAAKy/B,EAAMkvO,QAAQz9O,UAAUzrC,GAAMiV,IAAKkkF,EAAM18F,OAC/J08F,EAAM,GAAG5mD,KAAKsG,cACd74C,EACJynR,eAAgBvuL,EAAS,EAAGyV,gBAAiBtjF,EAAMsjF,gBAAiBz4C,WAAYA,EAAYyD,YAAaA,EAAaw/B,MAAOA,EAAOpB,YAAa1sE,EAAMs+P,eAAgBhvL,iBAAkBwuL,EAAsBnpR,GAAM+oE,eAAgB19C,EAAM09C,eAAgB8xB,YAAauuL,EAAiBppR,GAAKyN,OAAOm8Q,GAAyBhvL,YAAayuL,EAAiBrpR,GAAM06F,kBAAmB4uL,EAAuBtpR,GAAMwoE,UAAW+gN,EAAevpR,GAAM0oE,YAAa8gN,EAAiBxpR,GAAMymD,aAAcA,EAAcC,gBAAiBA,EAAiB2kB,YAAahgD,EAAMggD,YAAaF,aAAc9/C,EAAM8/C,aAAcmqB,SAAUjqE,EAAMiqE,oBAI5nBuzL,EAAM79P,UAAU6pD,YAAc,WAC1Bv8E,KAAKuxR,aAAe,IAAIr7M,IAAcl2E,KAAKshF,OAAQthF,KAAK4wR,QAAQrpL,UAAU99F,IAAI,SAAU+nR,GAAU,OAAOA,EAAOnB,aAAa,MAC7H,GAAO,GACPrwR,KAAKyxR,aAAe,IAAIv7M,IAAcl2E,KAAKshF,OAAQthF,KAAK4wR,QAAQ1pL,WAAW,GAAGmpL,cAC9E,GACA,IAEJE,EAAM79P,UAAU8pD,SAAW,SAAUC,EAAcC,GAC/C,IAAe+0M,EAANzxR,KAAwByxR,aAAcF,EAAtCvxR,KAAwDuxR,aAC7DtwL,EAAMwwL,EAAaz6M,YAAYyF,GAC/B/0E,EAAM6pR,EAAar6M,WAAWwF,GAClC,GAAW,MAAPh1E,GAAsB,MAAPu5F,EAAa,CAC5B,IAAIl/F,EAAO/B,KAAK+yB,MAAM8tE,MAAMn5F,GAAKu5F,GACjC,MAAO,CACH5/B,YAAarhE,KAAK+yB,MAAMsuC,YACxB7B,SAAUxpB,YAAS,CAAEoF,MAAOp7C,KAAK0xR,aAAahqR,EAAKu5F,GAAMxjD,QAAQ,GAAQ17C,EAAK8tG,eAC9EC,MAAO9vG,KAAK2xR,UAAUjqR,EAAKu5F,GAC3BlzB,KAAM,CACF9hE,KAAMwlR,EAAa96M,MAAMsqB,GACzB/0F,MAAOulR,EAAa76M,OAAOqqB,GAC3Bl1F,IAAKwlR,EAAaz6M,KAAKpvE,GACvBsE,OAAQulR,EAAax6M,QAAQrvE,IAEjCqoG,MAAO,GAGf,OAAO,MAEXwgL,EAAM79P,UAAUi/P,UAAY,SAAUjqR,EAAKu5F,GACvC,OAAOjhG,KAAK4wR,QAAQ1pL,WAAWx/F,GAAK2oR,aAAapvL,IAErDsvL,EAAM79P,UAAUg/P,aAAe,SAAUhqR,EAAKu5F,GAC1C,IAAI93F,EAAQnJ,KAAK+yB,MAAM8tE,MAAMn5F,GAAKu5F,GAAKhnD,KAEvC,MAAO,CAAE9wC,MAAOA,EAAOC,IADbovC,YAAQrvC,EAAO,KAGtBonR,EAzGgB,CA0GzBl0M,KACF,SAASi1M,EAAY71N,GACjB,OAAOA,EAAIc,WAAWtpD,IAAIwqC,OAG9B,IAAIm0O,EAAgC,SAAUp5M,GAE1C,SAASo5M,IACL,IAAIlwO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAMsgD,oBAAqB,EACpBtgD,EAKX,OATA+2B,YAAUm5M,EAAgBp5M,GAM1Bo5M,EAAel/P,UAAUutE,WAAa,SAAUxmC,EAAWo4N,GACvD,OAAOA,EAAc5xL,WAAWxmC,IAE7Bm4N,EAVyB,CAWlCrwL,KAEEuwL,EAA0B,SAAUt5M,GAEpC,SAASs5M,IACL,IAAIpwO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAGhE,OAFA0hD,EAAMqwO,OAAS,IAAIH,EACnBlwO,EAAMswO,SAAW7+O,eACVuO,EAMX,OAXA+2B,YAAUq5M,EAAUt5M,GAOpBs5M,EAASp/P,UAAUwgB,OAAS,WACxB,IAAengB,EAAN/yB,KAAiB+yB,MAAOvhB,EAAxBxR,KAAqCwR,QAC9C,OAAQqG,aAAc04Q,EAAOv6O,YAAS,CAAE/zB,IAAKjiB,KAAKgyR,UAAYhyR,KAAK+xR,OAAO9vL,WAAWlvE,EAAOA,EAAMsuC,YAAatuC,EAAMw0B,iBAAkB/1C,EAASuhB,EAAM8+P,eAAgB,CAAExwN,YAAatuC,EAAMsuC,YAAaw/B,MAAO9tE,EAAM8+P,cAAchxL,MAAOuwL,aAAcr+P,EAAMq+P,aAAc1oL,cAAe31E,EAAM21E,cAAe2oL,eAAgBt+P,EAAMs+P,eAAgBljO,aAAcp7B,EAAMo7B,aAAcC,gBAAiBr7B,EAAMq7B,gBAAiBioD,gBAAiBtjF,EAAMsjF,gBAAiB/qD,WAAYv4B,EAAMu4B,WAAY2mO,iBAAkBl/P,EAAMk/P,iBAAkBl/M,YAAahgD,EAAMggD,YAAaF,aAAc9/C,EAAM8/C,aAAcmqB,SAAUjqE,EAAMiqE,aAE/lB80L,EAZmB,CAa5Bz1M,KAEE61M,EAA8B,SAAU15M,GAExC,SAAS05M,IACL,IAAIxwO,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAIhE,OAHA0hD,EAAMywO,mBAAqBlxO,aAAQkxO,GACnCzwO,EAAMw6C,UAAY/oD,eAClBuO,EAAMswO,SAAW7+O,eACVuO,EAaX,OAnBA+2B,YAAUy5M,EAAc15M,GAQxB05M,EAAax/P,UAAUwgB,OAAS,WAC5B,IAAIwO,EAAQ1hD,KACR2K,EAAK3K,KAAKwR,QAASwW,EAAUrd,EAAGqd,QAChC+K,EAAQ/yB,KAAK+yB,MACb8+P,EAAgB7xR,KAAKmyR,mBAAmBp/P,EAAMsuC,YAFkB12D,EAAGmwE,sBAGnEs3M,EAAgBpqQ,EAAQqgC,YAAexwC,aAAcwnF,IAAW,CAAEp9E,IAAKjiB,KAAKk8F,UAAW76B,YAAatuC,EAAMsuC,YAAak+B,MAAOsyL,EAAc9wL,YAAavB,qBAA+C,IAAzBqyL,EAAcjxL,SAC7LwoL,EAAc,SAAUiJ,GAAc,OAAQx6Q,aAAci6Q,EAAU,CAAE7vQ,IAAKy/B,EAAMswO,SAAU3wN,YAAatuC,EAAMsuC,YAAawwN,cAAeA,EAAehmO,cAAe94B,EAAM84B,cAAeka,cAAehzC,EAAMgzC,cAAe7oB,WAAYnqB,EAAMmqB,WAAYod,aAAcvnC,EAAMunC,aAAcmW,eAAgB19C,EAAM09C,eAAgBP,UAAWn9C,EAAMm9C,UAAWE,YAAar9C,EAAMq9C,YAAa7oB,iBAAkBv/B,EAAQu/B,iBAAkB6pO,aAAciB,EAAWtnL,kBAAmBrC,cAAe2pL,EAAW3pL,cAAev6C,aAAcnmC,EAAQmmC,aAAcC,gBAAiBpmC,EAAQomC,gBAAiBioD,gBAAiBruF,EAAQmhC,YAAamC,YAAav4B,EAAMgqE,aAAck1L,iBAAkBvwO,EAAMunO,YAAal2M,YAAas/M,EAAWt/M,YAAaF,aAAcw/M,EAAWx/M,aAAcmqB,SAAUjqE,EAAMiqE,YAChyB,OAAOh1E,EAAQqmC,YACTruD,KAAKqpR,oBAAoB+I,EAAehJ,EAAayI,EAAc3zL,OAAQl2E,EAAQqmC,aACnFruD,KAAKkpR,mBAAmBkJ,EAAehJ,IAE1C8I,EApBuB,CAqBhClJ,GACF,SAASmJ,EAAmB9wN,EAAayZ,GACrC,IAAI2lB,EAAY,IAAIZ,IAAex+B,EAAYkjB,YAAazJ,GAC5D,OAAO,IAAI0lB,IAAcC,EAAW,kBAAkBz9E,KAAKq+C,EAAY4iB,mBAG3E,IAAIquM,EAA2C,SAAU95M,GAErD,SAAS85M,IACL,OAAkB,OAAX95M,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA2B/D,OA7BAy4E,YAAU65M,EAA2B95M,GAKrC85M,EAA0B5/P,UAAUkyD,iBAAmB,SAAUrjB,EAAc0iB,EAAkBK,GAC7F,IAIIiuM,EAJAn1O,EAAUp9C,KAAK+yB,MAAMqqB,QACrBmnC,EAAc/L,EAAO9lD,UAAUkyD,iBAAiB1vD,KAAKl1B,KAAMuhE,EAAc0iB,EAAkBK,GAC3Fn7E,EAAQo7E,EAAYp7E,MACpBC,EAAMm7E,EAAYn7E,IAYtB,GATI,iBAAiB4Z,KAAKihE,KACtB96E,EAAQi0C,EAAQ8tB,YAAY/hE,IAE5BopR,EAAYn1O,EAAQ8tB,YAAY9hE,IAClB0vC,YAAc1vC,EAAI0vC,YAC5B1vC,EAAMivC,YAASk6O,EAAW,KAI9BvyR,KAAK+yB,MAAMm9B,WACXlwD,KAAK+yB,MAAMo9B,eAAgB,CAC3B,IAAIywC,EAASriF,KAAKC,KAClBk6B,aAAUvvC,EAAOC,IACjBA,EAAMivC,YAASjvC,EAAK,EAAIw3F,GAE5B,MAAO,CAAEz3F,MAAOA,EAAOC,IAAKA,IAEzBkpR,EA9BoC,CA+B7C3uM,KAEE6uM,EAAOz1M,aAAa,CACpBh0B,YAAa,eACb4J,MAAO,CACH8/N,QAAS,CACLxzQ,UAAWizQ,EACX/+N,0BAA2Bm/N,GAE/BI,WAAY,CACRhyR,KAAM,UACN88C,SAAU,CAAE5D,KAAM,IAEtB+4O,YAAa,CACTjyR,KAAM,UACN88C,SAAU,CAAE8B,MAAO,IAEvBszO,aAAc,CACVlyR,KAAM,UACN88C,SAAU,CAAE56B,OAAQ,GACpBstC,WAAW,EACXC,gBAAgB,MAKbqiO,O,qBCz6BkDp1P,EAAOC,QAGhE,WAAc,aAEpB,SAASw1P,EAAQ90Q,GAaf,OATE80Q,EADoB,mBAAXzjP,QAAoD,iBAApBA,OAAO41F,SACtC,SAAUjnH,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,mBAAXqxB,QAAyBrxB,EAAImyB,cAAgBd,QAAUrxB,IAAQqxB,OAAO1c,UAAY,gBAAkB3U,IAI9GA,GAGjB,SAASu0B,EAAgBxe,EAAUye,GACjC,KAAMze,aAAoBye,GACxB,MAAM,IAAIC,UAAU,qCAIxB,SAASsgP,EAAkBtmQ,EAAQuG,GACjC,IAAK,IAAIlrB,EAAI,EAAGA,EAAIkrB,EAAM5uB,OAAQ0D,IAAK,CACrC,IAAI+9L,EAAa7yK,EAAMlrB,GACvB+9L,EAAW3xJ,WAAa2xJ,EAAW3xJ,aAAc,EACjD2xJ,EAAWloK,cAAe,EACtB,UAAWkoK,IAAYA,EAAWjoK,UAAW,GACjDnhB,OAAOu3B,eAAevnB,EAAQo5K,EAAWjpL,IAAKipL,IAIlD,SAASmtF,EAAaxgP,EAAaygP,EAAYC,GAG7C,OAFID,GAAYF,EAAkBvgP,EAAY7f,UAAWsgQ,GACrDC,GAAaH,EAAkBvgP,EAAa0gP,GACzC1gP,EAGT,SAAS2gP,IAeP,OAdAA,EAAW12Q,OAAOuqB,QAAU,SAAUva,GACpC,IAAK,IAAI3kB,EAAI,EAAGA,EAAIyR,UAAUnV,OAAQ0D,IAAK,CACzC,IAAI0e,EAASjN,UAAUzR,GAEvB,IAAK,IAAI8U,KAAO4J,EACV/J,OAAOkW,UAAUgb,eAAexY,KAAK3O,EAAQ5J,KAC/C6P,EAAO7P,GAAO4J,EAAO5J,IAK3B,OAAO6P,IAGOmrB,MAAM33C,KAAMsZ,WAkB9B,SAAS65Q,EAAgBhlP,GAIvB,OAHAglP,EAAkB32Q,OAAO6sH,eAAiB7sH,OAAO24H,eAAiB,SAAyBhnG,GACzF,OAAOA,EAAEm7F,WAAa9sH,OAAO24H,eAAehnG,KAEvBA,GAGzB,SAASilP,EAAgBjlP,EAAGo7F,GAM1B,OALA6pJ,EAAkB52Q,OAAO6sH,gBAAkB,SAAyBl7F,EAAGo7F,GAErE,OADAp7F,EAAEm7F,UAAYC,EACPp7F,IAGcA,EAAGo7F,GAG5B,SAASR,IACP,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAzuF,KAAKhoB,UAAUT,SAASiD,KAAK8zG,QAAQC,UAAUvuF,KAAM,GAAI,gBAClD,EACP,MAAOzmB,GACP,OAAO,GAIX,SAASo/P,EAAWC,EAAQzzR,EAAM0zR,GAchC,OAZEF,EADEtqJ,IACWC,QAAQC,UAER,SAAoBqqJ,EAAQzzR,EAAM0zR,GAC7C,IAAIx3Q,EAAI,CAAC,MACTA,EAAEnY,KAAK+zC,MAAM57B,EAAGlc,GAChB,IACIi0B,EAAW,IADG6jJ,SAASptI,KAAKoN,MAAM27O,EAAQv3Q,IAG9C,OADIw3Q,GAAOH,EAAgBt/P,EAAUy/P,EAAM7gQ,WACpCoB,IAIO6jB,MAAM,KAAMr+B,WAWhC,SAASk6Q,EAA2Bv6C,EAAM/jN,GACxC,OAAIA,GAAyB,iBAATA,GAAqC,mBAATA,EATlD,SAAgC+jN,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIx+C,eAAe,6DAG3B,OAAOw+C,EAQAD,CAAuBC,GAHrB/jN,EAkCX,SAASu+P,EAAKjnQ,EAAQshI,EAAU4lI,GAkB9B,OAhBED,EADqB,oBAAZzqJ,SAA2BA,QAAQ92H,IACrC82H,QAAQ92H,IAER,SAAcsa,EAAQshI,EAAU4lI,GACrC,IAAI9zR,EAdV,SAAwBstP,EAAQp/F,GAC9B,MAAQtxI,OAAOkW,UAAUgb,eAAexY,KAAKg4N,EAAQp/F,IAEpC,QADfo/F,EAASimC,EAAgBjmC,MAI3B,OAAOA,EAQQymC,CAAennQ,EAAQshI,GAElC,GAAKluJ,EAAL,CACA,IAAI69B,EAAOjhB,OAAOutH,yBAAyBnqI,EAAMkuJ,GAEjD,OAAIrwH,EAAKvrB,IACAurB,EAAKvrB,IAAIgjB,KAAKw+P,GAGhBj2P,EAAKl8B,SAIJirB,EAAQshI,EAAU4lI,GAAYlnQ,GAG5C,IAAIonQ,EAAgB,eA8BhBC,EAAe,SAAsB91Q,GACvC,OAAOvB,OAAOC,KAAKsB,GAAKtU,IAAI,SAAUkT,GACpC,OAAOoB,EAAIpB,MAQXuL,EAAU,SAAiB4rQ,GAC7B,OAAOvpR,MAAMmoB,UAAUlpB,MAAM0rB,KAAK4+P,IAOhCpwN,EAAO,SAAc1pC,GACvB+Q,QAAQ24B,KAAK,GAAG1qD,OAAO46Q,EAAe,KAAK56Q,OAAOghB,KAOhDhF,EAAQ,SAAegF,GACzB+Q,QAAQ/V,MAAM,GAAGhc,OAAO46Q,EAAe,KAAK56Q,OAAOghB,KAQjD+5P,EAA2B,GAyB3BC,EAAiB,SAAwBp8O,GAC3C,MAAsB,mBAARA,EAAqBA,IAAQA,GAEzCq8O,EAAiB,SAAwBr8O,GAC3C,OAAOA,GAAgC,mBAAlBA,EAAIkwH,WAEvBosH,EAAY,SAAmBt8O,GACjC,OAAOq8O,EAAer8O,GAAOA,EAAIkwH,YAAcvjK,QAAQC,QAAQozC,IAE7DimI,EAAY,SAAmBjmI,GACjC,OAAOA,GAAOrzC,QAAQC,QAAQozC,KAASA,GAGrCu8O,EAAgB33Q,OAAO67C,OAAO,CAChCuzM,OAAQ,SACR33I,SAAU,WACV3uF,MAAO,QACPo8I,IAAK,MACLtgC,MAAO,UAOL6nC,EAAY,SAAmBy7F,GACjC,OAAOA,aAAgB9lK,SALH,SAAyB8lK,GAC7C,MAAyB,WAAlBmO,EAAQnO,IAAsBA,EAAK0P,OAIRC,CAAgB3P,IAwBhDjrM,EAAS,SAAgBvhE,GAC3B,IAAI0kB,EAAS,GAEb,IAAK,IAAI/0B,KAAKqQ,EACZ0kB,EAAO1kB,EAAMrQ,IALA,SAKmBqQ,EAAMrQ,GAGxC,OAAO+0B,GAEL03P,EAAc76M,EAAO,CAAC,YAAa,QAAS,cAAe,SAAU,QAAS,QAAS,cAAe,gBAAiB,QAAS,cAAe,eAAgB,OAAQ,OAAQ,QAAS,QAAS,SAAU,UAAW,iBAAkB,UAAW,UAAW,SAAU,SAAU,OAAQ,eAAgB,QAAS,QAAS,OAAQ,QAAS,SAAU,QAAS,WAAY,QAAS,WAAY,aAAc,qBAAsB,iBAAkB,uBAAwB,gBAAiB,qBAAsB,UAAW,SAAU,MAAO,YAAa,UAAW,WAAY,YAAa,SAAU,eAAgB,aAAc,cAAe,eAAgB,SAAU,eAAgB,aAAc,cAAe,eAAgB,WAAY,cAAe,kBAAmB,MAAO,qBAAsB,+BAAgC,oBAAqB,eAAgB,eAAgB,YAAa,gBAAiB,eAC/4B86M,EAAY96M,EAAO,CAAC,UAAW,UAAW,OAAQ,WAAY,UAE9D+6M,EAAe,WACjB,OAAO7pP,SAAS7H,KAAK13B,cAAc,IAAI4N,OAAOs7Q,EAAYj8Q,aAExDo8Q,EAAoB,SAA2BC,GACjD,IAAIr8Q,EAAYm8Q,IAChB,OAAOn8Q,EAAYA,EAAUjN,cAAcspR,GAAkB,MAG3DC,EAAiB,SAAwB9sQ,GAC3C,OAAO4sQ,EAAkB,IAAIz7Q,OAAO6O,KAGlC+sQ,EAAW,WACb,OAAOD,EAAeL,EAAYO,QAEhCC,EAAW,WACb,IAAID,EAAQD,IACZ,OAAO1sQ,EAAQ2sQ,EAAM9oL,iBAAiB,IAAI/yF,OAAOs7Q,EAAYS,SAE3DC,EAAU,WACZ,IAAIC,EAAcH,IAAW3/Q,OAAO,SAAU4/Q,GAC5C,OAAOnK,GAAUmK,KAEnB,OAAOE,EAAY9wR,OAAS8wR,EAAY,GAAK,MAE3Cv1D,EAAW,WACb,OAAOi1D,EAAeL,EAAY19N,QAEhCs+N,EAAa,WACf,OAAOP,EAAeL,EAAYhhO,UAKhC6hO,EAAW,WACb,OAAOR,EAAeL,EAAYc,QAEhCC,EAAmB,WACrB,OAAOV,EAAeL,EAAY,oBAEhCgB,EAAuB,WACzB,OAAOX,EAAeL,EAAY,wBAEhCiB,EAAmB,WACrB,OAAOd,EAAkB,IAAIz7Q,OAAOs7Q,EAAY5nJ,QAAS,MAAM1zH,OAAOs7Q,EAAYkB,WAEhFC,EAAkB,WACpB,OAAOhB,EAAkB,IAAIz7Q,OAAOs7Q,EAAY5nJ,QAAS,MAAM1zH,OAAOs7Q,EAAY1oB,UAEhF8pB,EAAa,WACf,OAAOf,EAAeL,EAAY5nJ,UAEhCipJ,EAAY,WACd,OAAOhB,EAAeL,EAAY/vN,SAEhCu7J,EAAY,WACd,OAAO60D,EAAeL,EAAY7vN,SAEhCmxN,EAAsB,WACxB,OAAOjB,EAAeL,EAAY,wBAEhCuB,EAAiB,WACnB,OAAOlB,EAAeL,EAAYhvP,QAIhCwwP,EAAuB,WACzB,IAAIC,EAAgC7tQ,EAAQ0sQ,IAAW7oL,iBAAiB,wDACvElwF,KAAK,SAAUE,EAAGC,GAIjB,OAHAD,EAAIyzB,SAASzzB,EAAEitB,aAAa,eAC5BhtB,EAAIwzB,SAASxzB,EAAEgtB,aAAa,cAGnB,EACEjtB,EAAIC,GACL,EAGH,IAELg6Q,EAAyB9tQ,EAAQ0sQ,IAAW7oL,iBAflC,2QAe+D52F,OAAO,SAAUs9B,GAC5F,MAAuC,OAAhCA,EAAGzJ,aAAa,cAEzB,OArOgB,SAAqB2G,GAGrC,IAFA,IAAI/S,EAAS,GAEJ/0B,EAAI,EAAGA,EAAI8nC,EAAIxrC,OAAQ0D,KACE,IAA5B+0B,EAAO3zB,QAAQ0mC,EAAI9nC,KACrB+0B,EAAOh5B,KAAK+rC,EAAI9nC,IAIpB,OAAO+0B,EA4NAq5P,CAAYF,EAA8B/8Q,OAAOg9Q,IAAyB7gR,OAAO,SAAUs9B,GAChG,OAAOm4O,GAAUn4O,MAGjByjP,EAAU,WACZ,OAAQC,MAAcxrP,SAAS7H,KAAKngC,UAAUiqB,SAAS0nQ,EAAY,iBAEjE6B,EAAU,WACZ,OAAOxrP,SAAS7H,KAAKngC,UAAUiqB,SAAS0nQ,EAAY,iBAElD7hM,EAAY,WACd,OAAOmiM,IAAW7rP,aAAa,iBAG7B9+B,EAAS,CACXmsR,oBAAqB,MAEnBC,EAAe,SAAsB3R,EAAMn4L,GAI7C,GAFAm4L,EAAKlxK,YAAc,GAEfjnB,EAAM,CACR,IACIn1B,GADS,IAAIk/N,WACGC,gBAAgBhqM,EAAM,aAC1CrkE,EAAQkvC,EAAOhsD,cAAc,QAAQ47K,YAAY3zK,QAAQ,SAAU2mI,GACjE0qI,EAAK5sQ,YAAYkiI,KAEnB9xH,EAAQkvC,EAAOhsD,cAAc,QAAQ47K,YAAY3zK,QAAQ,SAAU2mI,GACjE0qI,EAAK5sQ,YAAYkiI,OAInB48C,EAAW,SAAkB8tF,EAAM78P,GACrC,IAAKA,EACH,OAAO,EAKT,IAFA,IAAIllB,EAAYklB,EAAUtF,MAAM,OAEvB1a,EAAI,EAAGA,EAAIlF,EAAUwB,OAAQ0D,IACpC,IAAK68Q,EAAK/hR,UAAUiqB,SAASjqB,EAAUkF,IACrC,OAAO,EAIX,OAAO,GAWL2uR,EAAmB,SAA0B9R,EAAM56L,EAAQjiE,GAG7D,GAXwB,SAA6B68P,EAAM56L,GAC3D5hE,EAAQw8P,EAAK/hR,WAAW0Q,QAAQ,SAAUwU,IACgB,IAAlDgsQ,EAAaS,GAAarrR,QAAQ4e,KAAwE,IAAhDgsQ,EAAaU,GAAWtrR,QAAQ4e,KAA+E,IAAvDgsQ,EAAa/pM,EAAO2sM,WAAWxtR,QAAQ4e,IAC7J68P,EAAK/hR,UAAU6I,OAAOqc,KAM1B6uQ,CAAoBhS,EAAM56L,GAEtBA,EAAO6sM,aAAe7sM,EAAO6sM,YAAY9uQ,GAAY,CACvD,GAA6C,iBAAlCiiE,EAAO6sM,YAAY9uQ,KAA4BiiE,EAAO6sM,YAAY9uQ,GAAWxU,QACtF,OAAOqwD,EAAK,+BAA+B1qD,OAAO6O,EAAW,+CAAgD7O,OAAO65Q,EAAQ/oM,EAAO6sM,YAAY9uQ,IAAa,MAG9J4oG,GAASi0J,EAAM56L,EAAO6sM,YAAY9uQ,MAGtC,SAAS+uQ,EAAStjO,EAASujO,GACzB,IAAKA,EACH,OAAO,KAGT,OAAQA,GACN,IAAK,SACL,IAAK,WACL,IAAK,OACH,OAAOC,GAAgBxjO,EAASghO,EAAYuC,IAE9C,IAAK,WACH,OAAOvjO,EAAQloD,cAAc,IAAI4N,OAAOs7Q,EAAYyC,SAAU,WAEhE,IAAK,QACH,OAAOzjO,EAAQloD,cAAc,IAAI4N,OAAOs7Q,EAAYj0K,MAAO,oBAAsB/sD,EAAQloD,cAAc,IAAI4N,OAAOs7Q,EAAYj0K,MAAO,uBAEvI,IAAK,QACH,OAAO/sD,EAAQloD,cAAc,IAAI4N,OAAOs7Q,EAAYl5O,MAAO,WAE7D,QACE,OAAO07O,GAAgBxjO,EAASghO,EAAY91O,QAGlD,IAgIIw4O,EAhIAC,GAAa,SAAoBz4O,GAGnC,GAFAA,EAAM1vB,QAEa,SAAf0vB,EAAM99C,KAAiB,CAEzB,IAAI4tC,EAAMkQ,EAAMj9C,MAChBi9C,EAAMj9C,MAAQ,GACdi9C,EAAMj9C,MAAQ+sC,IAGd4oP,GAAc,SAAqB1qQ,EAAQ7pB,EAAWu2I,GACnD1sH,GAAW7pB,IAIS,iBAAdA,IACTA,EAAYA,EAAU4f,MAAM,OAAOpN,OAAOuyC,UAG5C/kD,EAAU0Q,QAAQ,SAAUwU,GACtB2E,EAAOnZ,QACTmZ,EAAOnZ,QAAQ,SAAUqxQ,GACvBxrI,EAAYwrI,EAAK/hR,UAAUE,IAAIglB,GAAa68P,EAAK/hR,UAAU6I,OAAOqc,KAGpEqxH,EAAY1sH,EAAO7pB,UAAUE,IAAIglB,GAAa2E,EAAO7pB,UAAU6I,OAAOqc,OAIxE4oG,GAAW,SAAkBjkG,EAAQ7pB,GACvCu0R,GAAY1qQ,EAAQ7pB,GAAW,IAE7BkxH,GAAc,SAAqBrnG,EAAQ7pB,GAC7Cu0R,GAAY1qQ,EAAQ7pB,GAAW,IAE7Bm0R,GAAkB,SAAyBpS,EAAM78P,GACnD,IAAK,IAAIhgB,EAAI,EAAGA,EAAI68Q,EAAK19F,WAAW7iL,OAAQ0D,IAC1C,GAAI+uL,EAAS8tF,EAAK19F,WAAWn/K,GAAIggB,GAC/B,OAAO68P,EAAK19F,WAAWn/K,IAIzBsvR,GAAsB,SAA6BzS,EAAM52H,EAAUvsJ,GACjEA,GAA6B,IAApBiuC,SAASjuC,GACpBmjR,EAAKn5Q,MAAMuiJ,GAA6B,iBAAVvsJ,EAAqB,GAAGyX,OAAOzX,EAAO,MAAQA,EAE5EmjR,EAAKn5Q,MAAM6rR,eAAetpI,IAG1ByW,GAAO,SAAcmgH,GACvB,IAAI3xQ,EAAUuG,UAAUnV,OAAS,QAAsBM,IAAjB6U,UAAU,GAAmBA,UAAU,GAAK,OAClForQ,EAAKn5Q,MAAMm2B,QAAU,GACrBgjP,EAAKn5Q,MAAMwH,QAAUA,GAEnBi6K,GAAO,SAAc03F,GACvBA,EAAKn5Q,MAAMm2B,QAAU,GACrBgjP,EAAKn5Q,MAAMwH,QAAU,QAEnB0wJ,GAAS,SAAgBihH,EAAMxrI,EAAWnmI,GAC5CmmI,EAAYqrB,GAAKmgH,EAAM3xQ,GAAWi6K,GAAK03F,IAGrCkG,GAAY,SAAmBlG,GACjC,SAAUA,KAASA,EAAK5xM,aAAe4xM,EAAKjzP,cAAgBizP,EAAK/6F,iBAAiBxlL,UAIhFkzR,GAAe,SAAsB3S,GACvC,SAAUA,EAAK5rM,aAAe4rM,EAAK7xM,eAGjCykN,GAAkB,SAAyB5S,GAC7C,IAAIn5Q,EAAQ4f,OAAOqoD,iBAAiBkxM,GAChC6S,EAAe1pQ,WAAWtiB,EAAM82I,iBAAiB,uBAAyB,KAC1Em1I,EAAgB3pQ,WAAWtiB,EAAM82I,iBAAiB,wBAA0B,KAChF,OAAOk1I,EAAe,GAAKC,EAAgB,GAOzCC,GAA0B,SAAiCr2I,GAC7D,IAAIpkB,EAAQ1jH,UAAUnV,OAAS,QAAsBM,IAAjB6U,UAAU,IAAmBA,UAAU,GACvEo+Q,EAAmB9B,IAEnBhL,GAAU8M,KACR16J,IACF06J,EAAiBnsR,MAAM+5M,WAAa,OACpCoyE,EAAiBnsR,MAAM7B,MAAQ,QAGjCk7B,WAAW,WACT8yP,EAAiBnsR,MAAM+5M,WAAa,SAAStsM,OAAOooI,EAAQ,IAAM,YAClEs2I,EAAiBnsR,MAAM7B,MAAQ,MAC9B,MAeHiuR,GAAY,WACd,MAAyB,oBAAXxsQ,QAA8C,oBAAbwf,UAG7CitP,GAAY,4BAA6B5+Q,OAAOs7Q,EAAY19N,MAAO,wBAA0B59C,OAAOs7Q,EAAYhhO,QAAS,aAAet6C,OAAOs7Q,EAAYO,MAAO,qCAAyC77Q,OAAOs7Q,EAAY/vN,OAAQ,wBAA0BvrD,OAAOs7Q,EAAY,kBAAmB,8BAAgCt7Q,OAAOs7Q,EAAYS,KAAM,KAAK/7Q,OAAOu7Q,EAAUv/P,MAAO,+BAAiChc,OAAOs7Q,EAAYS,KAAM,KAAK/7Q,OAAOu7Q,EAAUsD,SAAU,+BAAiC7+Q,OAAOs7Q,EAAYS,KAAM,KAAK/7Q,OAAOu7Q,EAAUuD,QAAS,+BAAiC9+Q,OAAOs7Q,EAAYS,KAAM,KAAK/7Q,OAAOu7Q,EAAUlkN,KAAM,+BAAiCr3D,OAAOs7Q,EAAYS,KAAM,KAAK/7Q,OAAOu7Q,EAAU7yN,QAAS,+BAAiC1oD,OAAOs7Q,EAAYc,MAAO,0BAA4Bp8Q,OAAOs7Q,EAAY19N,MAAO,UAAY59C,OAAOs7Q,EAAY19N,MAAO,+CAAmD59C,OAAOs7Q,EAAYhvP,MAAO,2CAA6CtsB,OAAOs7Q,EAAYhhO,QAAS,sBAAwBt6C,OAAOs7Q,EAAYhhO,QAAS,aAAet6C,OAAOs7Q,EAAY,kBAAmB,iCAAmCt7Q,OAAOs7Q,EAAY91O,MAAO,yCAA6CxlC,OAAOs7Q,EAAYr0G,KAAM,2BAA6BjnK,OAAOs7Q,EAAYl5O,MAAO,kGAAsGpiC,OAAOs7Q,EAAYr0P,OAAQ,kCAAoCjnB,OAAOs7Q,EAAYj0K,MAAO,+BAAiCrnG,OAAOs7Q,EAAYyC,SAAU,aAAe/9Q,OAAOs7Q,EAAYyC,SAAU,8DAAkE/9Q,OAAOs7Q,EAAYj/P,MAAO,oDAAsDrc,OAAOs7Q,EAAYyD,SAAU,oCAAsC/+Q,OAAOs7Q,EAAY,sBAAuB,UAAYt7Q,OAAOs7Q,EAAY,sBAAuB,wCAA0Ct7Q,OAAOs7Q,EAAY5nJ,QAAS,0CAA8C1zH,OAAOs7Q,EAAYkB,QAAS,qDAAyDx8Q,OAAOs7Q,EAAY1oB,OAAQ,iDAAmD5yP,OAAOs7Q,EAAY7vN,OAAQ,6BAA+BzrD,OAAOs7Q,EAAY,gCAAiC,yBAA2Bt7Q,OAAOs7Q,EAAY,sBAAuB,kCAAmC9yR,QAAQ,aAAc,IAgB/4Ew2R,GAAyB,SAAgC/jQ,GACvDgkQ,GAAKrN,aAAeoM,IAAgB/iQ,EAAEzH,OAAOjrB,OAC/C02R,GAAKD,yBAGPhB,EAAc/iQ,EAAEzH,OAAOjrB,OA8ErB22R,GAAuB,SAA8BngQ,EAAOvL,GAE1DuL,aAAiBs9C,YACnB7oD,EAAO1U,YAAYigB,GACS,WAAnB86P,EAAQ96P,GACjBogQ,GAAapgQ,EAAOvL,GACXuL,GACTs+P,EAAa7pQ,EAAQuL,IAIrBogQ,GAAe,SAAsBpgQ,EAAOvL,GAE1CuL,EAAMq8P,OACRgE,GAAiB5rQ,EAAQuL,GAEzBs+P,EAAa7pQ,EAAQuL,EAAM9F,aAI3BmmQ,GAAmB,SAA0B5rQ,EAAQk4P,GAGvD,GAFAl4P,EAAOgnF,YAAc,GAEjB,KAAKkxK,EACP,IAAK,IAAI78Q,EAAI,EAAIA,KAAK68Q,EAAO78Q,IAC3B2kB,EAAO1U,YAAY4sQ,EAAK78Q,GAAGg8I,WAAU,SAGvCr3H,EAAO1U,YAAY4sQ,EAAK7gI,WAAU,KAIlCw0I,GAAoB,WAItB,GAAIV,KACF,OAAO,EAGT,IAAIW,EAAS3tP,SAAS9yB,cAAc,OAChC0gR,EAAqB,CACvBC,gBAAiB,qBACjBC,WAAY,8BACZ90P,UAAW,gBAGb,IAAK,IAAI97B,KAAK0wR,EACZ,GAAI/7Q,OAAOkW,UAAUgb,eAAexY,KAAKqjQ,EAAoB1wR,SAAiC,IAApBywR,EAAO/sR,MAAM1D,GACrF,OAAO0wR,EAAmB1wR,GAI9B,OAAO,EArBe,GAmFxB,SAAS6wR,GAAan5M,EAAQo5M,EAAY7uM,GAxnBd,IAA+Bp7C,EAynBzD+0H,GAAOlkF,EAAQuK,EAAO,OAAO9wE,QAznB4B01B,EAynBCiqP,EAxnBnDjqP,EAAIqB,OAAO,GAAGnC,cAAgBc,EAAIllC,MAAM,IAwnBwB,WAAY,gBACnF6sR,EAAa92M,EAAQuK,EAAO,GAAG9wE,OAAO2/Q,EAAY,gBAElDp5M,EAAO1wE,aAAa,aAAci7E,EAAO,GAAG9wE,OAAO2/Q,EAAY,qBAG/Dp5M,EAAO13D,UAAYysQ,EAAYqE,GAC/BnC,EAAiBj3M,EAAQuK,EAAQ,GAAG9wE,OAAO2/Q,EAAY,WACvDloK,GAASlxC,EAAQuK,EAAO,GAAG9wE,OAAO2/Q,EAAY,iBA8BhD,IAmCIC,GAAe,CACjB1kQ,QAAS,IAAI5f,QACbukR,YAAa,IAAIvkR,QACjBwkR,SAAU,IAAIxkR,SAGZykR,GAAa,CAAC,QAAS,OAAQ,QAAS,SAAU,QAAS,WAAY,YAgFvEC,GAAsB,SAA6Bx6O,EAAOsrC,GACvDtrC,EAAMmsG,cAAe7gE,EAAOmvM,mBAC/Bz6O,EAAMmsG,YAAc7gE,EAAOmvM,mBAI3BC,GAAoB,SAA2BrC,GACjD,IAAIsC,EAAa7E,EAAYuC,GAAavC,EAAYuC,GAAavC,EAAY91O,MAC/E,OAAOs4O,GAAgB5B,IAAciE,IAGnCC,GAAkB,GAEtBA,GAAgB5vM,KAAO4vM,GAAgBC,MAAQD,GAAgBE,SAAWF,GAAgB1zQ,OAAS0zQ,GAAgBr4C,IAAMq4C,GAAgBjlP,IAAM,SAAUqK,EAAOsrC,GAS9J,MARiC,iBAAtBA,EAAOn7D,YAAwD,iBAAtBm7D,EAAOn7D,WACzD6vB,EAAMj9C,MAAQuoF,EAAOn7D,WACXkvJ,EAAU/zF,EAAOn7D,aAC3B+0C,EAAK,iFAAwF1qD,OAAO65Q,EAAQ/oM,EAAOn7D,YAAa,MAGlIqqQ,GAAoBx6O,EAAOsrC,GAC3BtrC,EAAM99C,KAAOopF,EAAOtrC,MACbA,GAGT46O,GAAgBn5G,KAAO,SAAUzhI,EAAOsrC,GAEtC,OADAkvM,GAAoBx6O,EAAOsrC,GACpBtrC,GAGT46O,GAAgBh+O,MAAQ,SAAUA,EAAO0uC,GACvC,IAAIjE,EAAazqC,EAAMhwC,cAAc,SACjCmuR,EAAcn+O,EAAMhwC,cAAc,UAItC,OAHAy6E,EAAWtkF,MAAQuoF,EAAOn7D,WAC1Bk3D,EAAWnlF,KAAOopF,EAAOtrC,MACzB+6O,EAAYh4R,MAAQuoF,EAAOn7D,WACpBysB,GAGTg+O,GAAgBn5P,OAAS,SAAUA,EAAQ6pD,GAGzC,GAFA7pD,EAAOuzE,YAAc,GAEjB1pB,EAAOmvM,iBAAkB,CAC3B,IAAItuI,EAAchgH,SAAS9yB,cAAc,UACzCw+Q,EAAa1rI,EAAa7gE,EAAOmvM,kBACjCtuI,EAAYppJ,MAAQ,GACpBopJ,EAAY39H,UAAW,EACvB29H,EAAY17H,UAAW,EACvBgR,EAAOnoB,YAAY6yI,GAGrB,OAAO1qH,GAGTm5P,GAAgB/4K,MAAQ,SAAUA,GAEhC,OADAA,EAAM7M,YAAc,GACb6M,GAGT+4K,GAAgBrC,SAAW,SAAUyC,EAAmB1vM,GACtD,IAAIitM,EAAWH,EAAS1B,IAAc,YACtC6B,EAASx1R,MAAQ,EACjBw1R,EAAS/wQ,GAAKsuQ,EAAYyC,SAC1BA,EAAS/kL,QAAUtqD,QAAQoiC,EAAOn7D,YAClC,IAAI0G,EAAQmkQ,EAAkBpuR,cAAc,QAE5C,OADAirR,EAAahhQ,EAAOy0D,EAAOmvM,kBACpBO,GAGTJ,GAAgBrB,SAAW,SAAUA,EAAUjuM,GAI7C,GAHAiuM,EAASx2R,MAAQuoF,EAAOn7D,WACxBqqQ,GAAoBjB,EAAUjuM,GAE1B,qBAAsB3+D,OAAQ,CAEhC,IAAIsuQ,EAAoBjqP,SAASrkB,OAAOqoD,iBAAiBohN,KAAYlrR,OACjEgwR,EAAelqP,SAASrkB,OAAOqoD,iBAAiBohN,KAAYhgN,aAAeplC,SAASrkB,OAAOqoD,iBAAiBohN,KAAY//M,cAY5H,IAAI02H,iBAVa,WACf,IAAIouF,EAAe5B,EAASjlN,YAAc4mN,EAGxC9E,IAAWrpR,MAAM7B,MADfiwR,EAAeF,EACQ,GAAGzgR,OAAO2gR,EAAc,MAExB,OAIIrsJ,QAAQyqJ,EAAU,CACjD7wG,YAAY,EACZ0yG,gBAAiB,CAAC,WAItB,OAAO7B,GAGT,IAAI8B,GAAgB,SAAuB/lQ,EAAUg2D,GACnD,IAAIx2B,EAAU4hO,IAAa9pR,cAAc,IAAI4N,OAAOs7Q,EAAYhhO,UAE5Dw2B,EAAOyC,MACT2rM,GAAqBpuM,EAAOyC,KAAMj5B,GAClCixG,GAAKjxG,EAAS,UACLw2B,EAAON,MAChBl2B,EAAQkgD,YAAc1pB,EAAON,KAC7B+6E,GAAKjxG,EAAS,UAEd05H,GAAK15H,GA1LS,SAAqBx/B,EAAUg2D,GAC/C,IAAIx2B,EAAU4hO,IACV2D,EAAcD,GAAaC,YAAY3mR,IAAI4hB,GAC3CgmQ,GAAYjB,GAAe/uM,EAAOtrC,QAAUq6O,EAAYr6O,MAC5Du6O,GAAW1lR,QAAQ,SAAUwjR,GAC3B,IAAIsC,EAAa7E,EAAYuC,GACzBkD,EAAiBjD,GAAgBxjO,EAAS6lO,IA6C9B,SAAuBtC,EAAWmD,GACpD,IAAIx7O,EAAQo4O,EAAS1B,IAAc2B,GAEnC,GAAKr4O,EAML,IAAK,IAAIwkO,KAnBY,SAA0BxkO,GAC/C,IAAK,IAAI32C,EAAI,EAAGA,EAAI22C,EAAM0oI,WAAW/iL,OAAQ0D,IAAK,CAChD,IAAIoyR,EAAWz7O,EAAM0oI,WAAWr/K,GAAG1G,MAEqB,IAAlD,CAAC,OAAQ,QAAS,SAAS8H,QAAQgxR,IACvCz7O,EAAM/V,gBAAgBwxP,IAY1BC,CAAiB17O,GAEAw7O,EAGG,UAAdnD,GAAkC,gBAAT7T,GAI7BxkO,EAAM3vC,aAAam0Q,EAAMgX,EAAgBhX,KA3DzCmX,CAActD,EAAW/sM,EAAOkwM,iBAEhCD,EAAelyQ,UAAYsxQ,EAEvBW,GACF9sG,GAAK+sG,KAILjwM,EAAOtrC,QACLs7O,GASQ,SAAmBhwM,GACjC,IAAKsvM,GAAgBtvM,EAAOtrC,OAC1B,OAAOxpB,EAAM,qJAA4Khc,OAAO8wE,EAAOtrC,MAAO,MAGhN,IAAIu7O,EAAiBb,GAAkBpvM,EAAOtrC,OAC1CA,EAAQ46O,GAAgBtvM,EAAOtrC,OAAOu7O,EAAgBjwM,GAC1Dy6E,GAAK/lH,GAEL5Z,WAAW,WACTqyP,GAAWz4O,KAlBT47O,CAAUtwM,GAoDK,SAAwBA,GAC3C,IAAIiwM,EAAiBb,GAAkBpvM,EAAOtrC,OAE1CsrC,EAAO6sM,aACTlmK,GAASspK,EAAgBjwM,EAAO6sM,YAAYn4O,OApD5C67O,CAAevwM,IAsKjBwwM,CAAYxmQ,EAAUg2D,GAEtB0sM,EAAiBtB,IAAcprM,EAAQ,YA2FrCywM,GAAc,SAAqBjnO,GACrC,MAAO,eAAgBt6C,OAAOs7Q,EAAY,gBAAiB,MAAOt7Q,OAAOs6C,EAAS,WAsBhFknO,GAAe,GAyCfC,GAAe,WACjB,OAAOjG,KAAkBA,IAAexrP,aAAa,oBAuFnD0xP,GAAe,SAAsB5mQ,EAAUg2D,GACjD,IAAIvlB,EAASoxN,IAEba,EAAiBjyN,EAAQulB,EAAQ,UAjDT,SAA6Bh2D,EAAUg2D,GAC/D,IAAI6wM,EAAyBtF,IAE7B,IAAKvrM,EAAO8wM,eAAiD,IAAhC9wM,EAAO8wM,cAAcz2R,OAChD,OAAO6oL,GAAK2tG,GAGdp2H,GAAKo2H,GACLA,EAAuBnnL,YAAc,GACrC,IAAIqnL,EAAsBrrP,cAAwC/qC,IAA/BqlF,EAAO+wM,oBAAoCJ,KAAiB3wM,EAAO+wM,qBAElGA,GAAuB/wM,EAAO8wM,cAAcz2R,QAC9Cu/D,EAAK,yIAGPomB,EAAO8wM,cAAcvnR,QAAQ,SAAUm0F,EAAM79F,GAC3C,IAAImxR,EAlCgB,SAA2BtzL,GACjD,IAAIszL,EAASnwP,SAAS9yB,cAAc,MAGpC,OAFA44G,GAASqqK,EAAQxG,EAAY,kBAC7B+B,EAAayE,EAAQtzL,GACdszL,EA8BQC,CAAkBvzL,GAO/B,GANAmzL,EAAuB7iR,YAAYgjR,GAE/BnxR,IAAUkxR,GACZpqK,GAASqqK,EAAQxG,EAAY,yBAG3B3qR,IAAUmgF,EAAO8wM,cAAcz2R,OAAS,EAAG,CAC7C,IAAI62R,EAnCc,SAA2BlxM,GACjD,IAAIkxM,EAASrwP,SAAS9yB,cAAc,MAOpC,OANA44G,GAASuqK,EAAQ1G,EAAY,uBAEzBxqM,EAAOmxM,wBACTD,EAAOzvR,MAAM7B,MAAQogF,EAAOmxM,uBAGvBD,EA2BUE,CAAkBpxM,GAC/B6wM,EAAuB7iR,YAAYkjR,MA0BvCG,CAAoBrnQ,EAAUg2D,GAhOf,SAAoBh2D,EAAUg2D,GAC7C,IAAI+uM,EAAcD,GAAaC,YAAY3mR,IAAI4hB,GAE/C,GAAI+kQ,GAAe/uM,EAAOirM,OAAS8D,EAAY9D,MAAQC,IACrDwB,EAAiBxB,IAAWlrM,EAAQ,aAMtC,GAmBiB,WAGjB,IAFA,IAAIsxM,EAAQtG,IAEHjtR,EAAI,EAAGA,EAAIuzR,EAAMj3R,OAAQ0D,IAChCmlL,GAAKouG,EAAMvzR,IAzBbwzR,GAEKvxM,EAAOirM,KAIZ,IAAqD,IAAjDv4Q,OAAOC,KAAK83Q,GAAWtrR,QAAQ6gF,EAAOirM,MAAc,CACtD,IAAIA,EAAON,EAAkB,IAAIz7Q,OAAOs7Q,EAAYS,KAAM,KAAK/7Q,OAAOu7Q,EAAUzqM,EAAOirM,QACvFxwH,GAAKwwH,GAgCQ,SAAoBA,EAAMjrM,GACzCirM,EAAKvhL,YAAc,GAGjB6iL,EAAatB,EADXjrM,EAAOwxM,SACUf,GAAYzwM,EAAOwxM,UACb,YAAhBxxM,EAAOirM,KACG,wTACM,UAAhBjrM,EAAOirM,KACG,wKAOAwF,GALG,CACpB1C,SAAU,IACVC,QAAS,IACTznN,KAAM,KAEuCyZ,EAAOirM,QA7CtDwG,CAAWxG,EAAMjrM,GAoBiB,WAKpC,IAJA,IAAI+qM,EAAQD,IACR4G,EAAuBrwQ,OAAOqoD,iBAAiBqhN,GAAOxyI,iBAAiB,oBACvEo5I,EAAmB5G,EAAM9oL,iBAAiB,4DAErClkG,EAAI,EAAGA,EAAI4zR,EAAiBt3R,OAAQ0D,IAC3C4zR,EAAiB5zR,GAAG0D,MAAMuqD,gBAAkB0lO,EAzB5CE,GAEAlF,EAAiBzB,EAAMjrM,EAAQ,QAE/B2mC,GAASskK,EAAMjrM,EAAO2sM,UAAU1B,WAEhC//P,EAAM,oFAA+Fhc,OAAO8wE,EAAOirM,KAAM,MAyM3H4G,CAAW7nQ,EAAUg2D,GA3JL,SAAqBh2D,EAAUg2D,GAC/C,IAAIsrM,EAAQD,IAEZ,IAAKrrM,EAAO8xM,SACV,OAAO5uG,GAAKooG,GAGd7wH,GAAK6wH,EAAO,IAEZA,EAAMvmR,aAAa,MAAOi7E,EAAO8xM,UACjCxG,EAAMvmR,aAAa,MAAOi7E,EAAO+xM,UAEjC1E,GAAoB/B,EAAO,QAAStrM,EAAOgyM,YAC3C3E,GAAoB/B,EAAO,SAAUtrM,EAAOiyM,aAE5C3G,EAAMvtQ,UAAYysQ,EAAYc,MAC9BoB,EAAiBpB,EAAOtrM,EAAQ,SA6IhCkyM,CAAYloQ,EAAUg2D,GAzBN,SAAqBh2D,EAAUg2D,GAC/C,IAAIlzB,EAAQ8oK,IACZj8D,GAAO7sG,EAAOkzB,EAAOlzB,OAASkzB,EAAOmyM,WAEjCnyM,EAAOlzB,OACTshO,GAAqBpuM,EAAOlzB,MAAOA,GAGjCkzB,EAAOmyM,YACTrlO,EAAMslO,UAAYpyM,EAAOmyM,WAI3BzF,EAAiB5/N,EAAOkzB,EAAQ,SAchCqyM,CAAYroQ,EAAUg2D,GA/OA,SAA2Bh2D,EAAUg2D,GAC3D,IAAIsyM,EAAcvG,IAClBQ,EAAa+F,EAAatyM,EAAOuyM,iBAEjC7F,EAAiB4F,EAAatyM,EAAQ,eACtC25E,GAAO24H,EAAatyM,EAAOwyM,iBAC3BF,EAAYvtR,aAAa,aAAci7E,EAAOyyM,sBA2O9CC,CAAkB1oQ,EAAUg2D,IA0C1B52C,GAAS,SAAgBpf,EAAUg2D,IAvCrB,SAAqBh2D,EAAUg2D,GAC/C,IAAI+qM,EAAQD,IAEZuC,GAAoBtC,EAAO,QAAS/qM,EAAOpgF,OAE3CytR,GAAoBtC,EAAO,UAAW/qM,EAAOtV,SAEzCsV,EAAO2yM,aACT5H,EAAMtpR,MAAMkxR,WAAa3yM,EAAO2yM,YAOnB,SAAoB5H,EAAO/qM,GAE1C+qM,EAAMhtQ,UAAY,GAAG7O,OAAOs7Q,EAAYO,MAAO,KAAK77Q,OAAO4xQ,GAAUiK,GAAS/qM,EAAO2sM,UAAU5B,MAAQ,IAEnG/qM,EAAO+zE,OACTptC,GAAS,CAAC9lF,SAAS6J,gBAAiB7J,SAAS7H,MAAOwxP,EAAY,gBAChE7jK,GAASokK,EAAOP,EAAYz2H,QAE5BptC,GAASokK,EAAOP,EAAYoI,OAI9BlG,EAAiB3B,EAAO/qM,EAAQ,SAEE,iBAAvBA,EAAO6sM,aAChBlmK,GAASokK,EAAO/qM,EAAO6sM,aAIrB7sM,EAAOirM,MACTtkK,GAASokK,EAAOP,EAAY,QAAQt7Q,OAAO8wE,EAAOirM,QAvBpD4H,CAAW9H,EAAO/qM,IA4BlB8yM,CAAY9oQ,EAAUg2D,GAphBF,SAAyBh2D,EAAUg2D,GACvD,IAAIzxE,EAAYm8Q,IAEhB,GAAKn8Q,EAAL,EA9BF,SAA6BA,EAAW47G,GACd,iBAAbA,EACT57G,EAAU9M,MAAMkxR,WAAaxoK,EACnBA,GACVxD,GAAS,CAAC9lF,SAAS6J,gBAAiB7J,SAAS7H,MAAOwxP,EAAY,iBA8BlEuI,CAAoBxkR,EAAWyxE,EAAOmqC,WAEjCnqC,EAAOmqC,UAAYnqC,EAAOgzM,mBAC7Bp5N,EAAK,mFA7BT,SAA6BrrD,EAAWrO,GAClCA,KAAYsqR,EACd7jK,GAASp4G,EAAWi8Q,EAAYtqR,KAEhC05D,EAAK,iEACL+sD,GAASp4G,EAAWi8Q,EAAYljO,SA2BlC2rO,CAAoB1kR,EAAWyxE,EAAO9/E,UAvBxC,SAAyBqO,EAAW2kR,GAClC,GAAIA,GAAwB,iBAATA,EAAmB,CACpC,IAAIC,EAAY,QAAQjkR,OAAOgkR,GAE3BC,KAAa3I,GACf7jK,GAASp4G,EAAWi8Q,EAAY2I,KAmBpCC,CAAgB7kR,EAAWyxE,EAAOkzM,MAElCxG,EAAiBn+Q,EAAWyxE,EAAQ,aAEpC,IAAIqzM,EAAYxyP,SAAS7H,KAAKkG,aAAa,yBAEvCm0P,IACF9kR,EAAUxJ,aAAa,kBAAmBsuR,GAC1CxyP,SAAS7H,KAAK2F,gBAAgB,2BA+fhC20P,CAAgBtpQ,EAAUg2D,GAC1B4wM,GAAa5mQ,EAAUg2D,GACvB+vM,GAAc/lQ,EAAUg2D,GA9mBN,SAAuBh2D,EAAUg2D,GACnD,IAAI4iD,EAAUgpJ,IACV2H,EAAgB9H,IAChB+H,EAAe7H,IAEd3rM,EAAOyzM,mBAAsBzzM,EAAO0zM,kBACvCxwG,GAAKtgD,GAIP8pJ,EAAiB9pJ,EAAS5iD,EAAQ,WAElC4uM,GAAa2E,EAAe,UAAWvzM,GAEvC4uM,GAAa4E,EAAc,SAAUxzM,GAEjCA,EAAO2zM,eAab,SAA8BJ,EAAeC,EAAcxzM,GAYzD,GAXA2mC,GAAS,CAAC4sK,EAAeC,GAAehJ,EAAYoJ,QAEhD5zM,EAAO6zM,qBACTN,EAAc9xR,MAAMuqD,gBAAkBg0B,EAAO6zM,oBAG3C7zM,EAAO8zM,oBACTN,EAAa/xR,MAAMuqD,gBAAkBg0B,EAAO8zM,oBAIzCnrM,IAAa,CAChB,IAAIorM,EAA+B1yQ,OAAOqoD,iBAAiB6pN,GAAeh7I,iBAAiB,oBAC3Fg7I,EAAc9xR,MAAMuyR,gBAAkBD,EACtCR,EAAc9xR,MAAMwyR,iBAAmBF,GA3BvCG,CAAqBX,EAAeC,EAAcxzM,IAElD+pC,GAAY,CAACwpK,EAAeC,GAAehJ,EAAYoJ,QACvDL,EAAc9xR,MAAMuqD,gBAAkBunO,EAAc9xR,MAAMuyR,gBAAkBT,EAAc9xR,MAAMwyR,iBAAmB,GACnHT,EAAa/xR,MAAMuqD,gBAAkBwnO,EAAa/xR,MAAMuyR,gBAAkBR,EAAa/xR,MAAMwyR,iBAAmB,IAG9Gj0M,EAAOm0M,gBACTZ,EAAc38Q,WAAWC,aAAa28Q,EAAcD,GAslBtDa,CAAcpqQ,EAAUg2D,GA5SP,SAAsBh2D,EAAUg2D,GACjD,IAAIrlB,EAASq7J,IACbr8D,GAAOh/F,EAAQqlB,EAAOrlB,QAElBqlB,EAAOrlB,QACTyzN,GAAqBpuM,EAAOrlB,OAAQA,GAItC+xN,EAAiB/xN,EAAQqlB,EAAQ,UAoSjCq0M,CAAarqQ,EAAUg2D,GAEQ,mBAApBA,EAAOs0M,UAChBt0M,EAAOs0M,SAASxJ,MAehByJ,GAAe,WACjB,OAAO9I,KAAsBA,IAAmBhsM,SAmE9C+0M,GAAc,WAChB,IAAIzJ,EAAQD,IAEPC,GACHoD,GAAKsG,OAGP1J,EAAQD,IACR,IAAIloJ,EAAUgpJ,IACV2H,EAAgB9H,IACpBhxH,GAAK73B,GACL63B,GAAK84H,EAAe,gBACpB5sK,GAAS,CAACokK,EAAOnoJ,GAAU4nJ,EAAYtiO,SACvCqrO,EAAcrwQ,UAAW,EACzB6nQ,EAAMhmR,aAAa,gBAAgB,GACnCgmR,EAAMhmR,aAAa,aAAa,GAChCgmR,EAAM/lQ,SAKJ0vQ,GAAc,GA2CdC,GAAY,WACd,GAAID,GAAYpwI,QAEd,OA/7BuB,WACzB,IAAIspI,EAAmB9B,IACnB8I,EAAwBlvP,SAASrkB,OAAOqoD,iBAAiBkkN,GAAkBhuR,OAC/EguR,EAAiBnsR,MAAM6rR,eAAe,cACtCM,EAAiBnsR,MAAM7B,MAAQ,OAC/B,IAAIi1R,EAA4BnvP,SAASrkB,OAAOqoD,iBAAiBkkN,GAAkBhuR,OAC/Ek1R,EAA0BpvP,SAASkvP,EAAwBC,EAA4B,KAC3FjH,EAAiBnsR,MAAM6rR,eAAe,cACtCM,EAAiBnsR,MAAM7B,MAAQ,GAAGsP,OAAO4lR,EAAyB,KAs7BhEC,GACOL,GAAYpwI,QAAQ80E,QAQ3B47D,GAAc,WAChB,GAAIN,GAAYpwI,QAAS,CACvB,IAAIywF,EAAY2/C,GAAYpwI,QAAQjlJ,QAEpC,OADAsuR,GAAwB54C,GACjBA,IAkCPkgD,GAAgB,CAClBnoO,MAAO,GACPqlO,UAAW,GACXzyM,KAAM,GACN+C,KAAM,GACN9nB,OAAQ,GACRswN,UAAMtwR,EACN62R,cAAU72R,EACVo5J,OAAO,EACPl6H,WAAW,EACX8yP,UAAW,CACT5B,MAAO,aACP5gK,SAAU,sBACV8gK,KAAM,mBAERiK,UAAW,CACTnK,MAAO,aACP5gK,SAAU,sBACV8gK,KAAM,mBAER4B,iBAAalyR,EACb+nB,OAAQ,OACRynG,UAAU,EACVgrK,YAAY,EACZnC,mBAAmB,EACnBoC,gBAAgB,EAChBC,eAAe,EACfC,wBAAwB,EACxBC,wBAAwB,EACxB9B,mBAAmB,EACnBC,kBAAkB,EAClB8B,gBAAY76R,EACZ86R,kBAAmB,KACnBC,uBAAwB,GACxB7B,wBAAoBl5R,EACpBg7R,iBAAkB,SAClBC,sBAAuB,GACvB9B,uBAAmBn5R,EACnBg5R,gBAAgB,EAChBQ,gBAAgB,EAChB0B,cAAc,EACdC,aAAa,EACbtD,iBAAiB,EACjBD,gBAAiB,UACjBE,qBAAsB,oBACtBsD,qBAAqB,EACrBjE,cAAUn3R,EACVq3R,gBAAYr3R,EACZs3R,iBAAat3R,EACbo3R,SAAU,GACVz6I,WAAO38I,EACPizR,kBAAkB,EAClBhuR,WAAOjF,EACP+vE,aAAS/vE,EACTg4R,gBAAYh4R,EACZ+5C,WAAO/5C,EACPw0R,iBAAkB,GAClBtqQ,WAAY,GACZmxQ,aAAc,GACdC,eAAe,EACf/F,gBAAiB,GACjBgG,oBAAgBv7R,EAChBw7R,uBAAmBx7R,EACnBu4R,MAAM,EACNhzR,SAAU,SACV4wR,cAAe,GACfC,yBAAqBp2R,EACrBw2R,2BAAuBx2R,EACvBy7R,kBAAcz7R,EACd07R,YAAQ17R,EACR25R,cAAU35R,EACVkqG,aAASlqG,EACT27R,kBAAc37R,EACd00H,eAAW10H,EACX47R,kBAAkB,GAEhBC,GAAkB,CAAC,iBAAkB,oBAAqB,iBAAkB,wBAAyB,oBAAqB,mBAAoB,uBAAwB,kBAAmB,yBAA0B,qBAAsB,oBAAqB,sBAAuB,cAAe,SAAU,YAAa,OAAQ,OAAQ,WAAY,cAAe,WAAY,aAAc,eAAgB,UAAW,YAAa,gBAAiB,iBAAkB,mBAAoB,kBAAmB,oBAAqB,OAAQ,QAAS,aACxhBC,GAAmB,CACrB58P,UAAW,6BAET68P,GAA0B,CAAC,oBAAqB,gBAAiB,WAAY,eAAgB,cAAe,aAAc,0BAM1HC,GAAmB,SAA0BC,GAC/C,OAAOlkR,OAAOkW,UAAUgb,eAAexY,KAAK6pQ,GAAe2B,IAezDC,GAAwB,SAA+BD,GACzD,OAAOH,GAAiBG,IAGtBE,GAAsB,SAA6B7oQ,GAChD0oQ,GAAiB1oQ,IACpB2rC,EAAK,sBAAuB1qD,OAAO+e,EAAO,OAI1C8oQ,GAA2B,SAAkC9oQ,IACf,IAA5CyoQ,GAAwBv3R,QAAQ8uB,IAClC2rC,EAAK,kBAAmB1qD,OAAO+e,EAAO,mCAItC+oQ,GAA2B,SAAkC/oQ,GA17CvC,IAA6BgpQ,EAAiBC,EAVvChnQ,EAq8C3B2mQ,GAAsB5oQ,KA37C2BgpQ,EA47C/BhpQ,EA57CgDipQ,EA47CzCL,GAAsB5oQ,GAt8CpBiC,EAWtB,IAAKhhB,OAAO+nR,EAAiB,+EAAiF/nR,OAAOgoR,EAAY,eAVrF,IAA/CjN,EAAyB9qR,QAAQ+wB,KACrC+5P,EAAyBnwR,KAAKo2B,GAC9B0pC,EAAK1pC,MA29CLinQ,GAA6BzkR,OAAO67C,OAAO,CAC7CooO,iBAAkBA,GAClBS,qBApDyB,SAA8BR,GACvD,OAA+C,IAAxCJ,GAAgBr3R,QAAQy3R,IAoD/BC,sBAAuBA,GACvBQ,aAl7CiB,SAAsBthS,GACvC,IAAIiqF,EAAS,GAgBb,MAdyB,WAArB+oM,EAAQhzR,EAAK,KAAqBopL,EAAUppL,EAAK,IAGnD,CAAC,QAAS,OAAQ,QAAQwT,QAAQ,SAAUlS,EAAMwI,GAChD,IAAIiuC,EAAM/3C,EAAK8J,GAEI,iBAARiuC,GAAoBqxI,EAAUrxI,GACvCkyC,EAAO3oF,GAAQy2C,OACEnzC,IAARmzC,GACT5iB,EAAM,sBAAsBhc,OAAO7X,EAAM,0CAA8C6X,OAAO65Q,EAAQj7O,OAR1Gs7O,EAASppM,EAAQjqF,EAAK,IAajBiqF,GAk6CP8gM,UAjVgB,WAChB,OAAOA,GAAUgK,MAiVjByJ,aAAcA,GACd+C,YArUgB,WAChB,OAAO3L,KAAqBA,IAAkBlsM,SAqU9CirM,aAAcA,EACdI,SAAUA,EACVl1D,SAAUA,EACVw1D,WAAYA,EACZmM,iBA13CqB,WACrB,OAAO1M,EAAeL,EAAY,oBA03ClCa,SAAUA,EACVH,QAASA,EACTF,SAAUA,EACVe,eAAgBA,EAChBH,WAAYA,EACZH,iBAAkBA,EAClBE,gBAAiBA,EACjBE,UAAWA,EACX71D,UAAWA,EACX81D,oBAAqBA,EACrBE,qBAAsBA,EACtBR,qBAAsBA,EACtB7iM,UAAWA,EACX8rM,KApVF,WAGE,IAFA,IAAItG,EAAOj4R,KAEFshS,EAAOhoR,UAAUnV,OAAQtE,EAAO,IAAI0K,MAAM+2R,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E1hS,EAAK0hS,GAAQjoR,UAAUioR,GAGzB,OAAOlO,EAAW4E,EAAMp4R,IA8UxBqvQ,MAzTF,SAAesyB,GAsBb,OArB6B,SAAU9/O,IAt4CzC,SAAmB03L,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI7mM,UAAU,sDAGtB4mM,EAAS1mN,UAAYlW,OAAOlX,OAAO+zO,GAAcA,EAAW3mN,UAAW,CACrEwd,YAAa,CACX3uC,MAAO63O,EACPz7M,UAAU,EACVD,cAAc,KAGd27M,GAAY+5C,EAAgBh6C,EAAUC,GA23CxCF,CAAUsoD,EAAW//O,GAErB,IA5zCkBggP,EAChBC,EA2zCEnpN,GA5zCckpN,EA4zCQD,EA3zCxBE,EAA4B54J,IAEzB,WACL,IACInsG,EADAglQ,EAAQzO,EAAgBuO,GAG5B,GAAIC,EAA2B,CAC7B,IAAIE,EAAY1O,EAAgBnzR,MAAMkwC,YAEtCtT,EAASosG,QAAQC,UAAU24J,EAAOtoR,UAAWuoR,QAE7CjlQ,EAASglQ,EAAMjqP,MAAM33C,KAAMsZ,WAG7B,OAAOk6Q,EAA2BxzR,KAAM48B,KA+yCxC,SAAS6kQ,IAGP,OAFAnvP,EAAgBtyC,KAAMyhS,GAEfjpN,EAAO7gC,MAAM33C,KAAMsZ,WAU5B,OAPAy5Q,EAAa0O,EAAW,CAAC,CACvB9kR,IAAK,QACLpb,MAAO,SAAeuoF,GACpB,OAAO2pM,EAAKN,EAAgBsO,EAAU/uQ,WAAY,QAAS1yB,MAAMk1B,KAAKl1B,KAAMkzR,EAAS,GAAIsO,EAAa13M,QAInG23M,EAlBoB,CAmB3BzhS,OAsSFkuC,MA5iBU,SAAe6iM,GACzB,IAAIknD,EAAOj4R,KACXw6R,GAAezpD,EAEf,IAAI+wD,EAAkB,SAAyBt9R,EAASjD,GACtDi5R,GAAe,GACfh2R,EAAQjD,IAGNwgS,EAAc,GAClB,OAAO,IAAIx9R,QAAQ,SAAUC,IAC3B,SAAUgjG,EAAK3/F,EAAGorB,GACZprB,EAAI2yR,GAAar2R,QACnBwmC,SAAS7H,KAAKj0B,aAAa,wBAAyBhH,GACpDowR,EAAKsG,KAAK/D,GAAa3yR,IAAIwW,KAAK,SAAUue,QACZ,IAAjBA,EAAOr7B,OAChBwgS,EAAYn+R,KAAKg5B,EAAOr7B,OACxBimG,EAAK3/F,EAAI,EAAGorB,IAEZ6uQ,EAAgBt9R,EAAS,CACvBgxH,QAAS54F,EAAO44F,aAKtBssK,EAAgBt9R,EAAS,CACvBjD,MAAOwgS,IAfb,CAkBG,MAghBLtH,aAAcA,GACduH,gBAngBoB,SAAyBx6L,EAAM79F,GACnD,OAAIA,GAASA,EAAQ6wR,GAAar2R,OACzBq2R,GAAajyP,OAAO5+B,EAAO,EAAG69F,GAGhCgzL,GAAa52R,KAAK4jG,IA+fzBy6L,gBAzfoB,SAAyBt4R,QACV,IAAxB6wR,GAAa7wR,IACtB6wR,GAAajyP,OAAO5+B,EAAO,IAwf7B20R,YAAaA,GACb4D,cAAe5D,GACf6D,aA3OiB,WACjB,OAAO3D,GAAYpwI,SAAWowI,GAAYpwI,QAAQ+zI,gBA2OlD1D,UAAWA,GACXK,YAAaA,GACbsD,YA/MgB,WAChB,IAAIhhJ,EAAQo9I,GAAYpwI,QACxB,OAAOhN,IAAUA,EAAMihJ,QAAU5D,KAAcK,OA8M/CwD,cAvMkB,SAAuBvqP,GACzC,GAAIymP,GAAYpwI,QAAS,CACvB,IAAIywF,EAAY2/C,GAAYpwI,QAAQm0I,SAASxqP,GAE7C,OADA0/O,GAAwB54C,GAAW,GAC5BA,IAoMT2jD,eA3LmB,WACnB,OAAOhE,GAAYpwI,SAAWowI,GAAYpwI,QAAQphE,eAiMpD,SAASy1M,KAEP,IAAI5J,EAAcD,GAAaC,YAAY3mR,IAAIlS,MAE/C,GAAK64R,EAAL,CAIA,IAAIC,EAAWF,GAAaE,SAAS5mR,IAAIlS,MAEpC64R,EAAY0E,oBACfvwG,GAAK8rG,EAASuE,eAETxE,EAAY2E,kBACfxwG,GAAK8rG,EAASpsJ,UAIlB7Y,GAAY,CAACilK,EAASjE,MAAOiE,EAASpsJ,SAAU4nJ,EAAYtiO,SAC5D8mO,EAASjE,MAAMpsP,gBAAgB,aAC/BqwP,EAASjE,MAAMpsP,gBAAgB,gBAC/BqwP,EAASuE,cAAcrwQ,UAAW,EAClC8rQ,EAASwE,aAAatwQ,UAAW,GAcnC,IA+DI01Q,GAAyB,SAAgCl2Q,GAC3D,IAAInU,EAAYm8Q,IAEhB,OAAIhoQ,IAAWnU,KAIVg/Q,GAAah/Q,IAAiC,UAAnBmU,EAAO6kJ,SACrCgmH,GAAanC,MACfA,IAAatoQ,SAASJ,KAkBpBm2Q,GAAS,WACX,QAASx3Q,OAAOy3Q,wBAA0Bj4P,SAASk4P,cAIjDC,GAAwB,WAC1B,IAAIzqR,EAAYm8Q,IACZK,EAAQD,IACZv8Q,EAAU9M,MAAM6rR,eAAe,eAE3BvC,EAAMrjQ,UAAY,IACpBnZ,EAAU9M,MAAMw3R,WAAa,eAuD7BC,GAAiB,CACnBC,mBAAoB,IAAI3uR,SAO1B,SAAS4uR,GAAyBpvQ,EAAUzb,EAAW8qR,EAAY/C,GAC7D+C,EACFC,GAA8BtvQ,EAAUssQ,IAvdnC,IAAI77R,QAAQ,SAAUC,GAC3B,IAAI+2B,EAAIpQ,OAAOk4Q,QACX/9Q,EAAI6F,OAAOm4Q,QACf9E,GAAY+E,oBAAsB3+P,WAAW,WAb3C45P,GAAYgF,uBAAyBhF,GAAYgF,sBAAsB10Q,OACzE0vQ,GAAYgF,sBAAsB10Q,QAClC0vQ,GAAYgF,sBAAwB,MAC3B74P,SAAS7H,MAClB6H,SAAS7H,KAAKhU,QAWZtqB,KApBsB,UAyBP,IAAN+2B,QAAkC,IAANjW,GAErC6F,OAAOs4Q,SAASloQ,EAAGjW,KA6cEjH,KAAK,WAC1B,OAAO+kR,GAA8BtvQ,EAAUssQ,KAEjD5B,GAAYkF,cAAc/3Q,oBAAoB,UAAW6yQ,GAAYmF,eAAgB,CACnF3sI,QAASwnI,GAAYa,yBAEvBb,GAAYoF,qBAAsB,GAGhCvrR,EAAUqI,aAAeiqB,SAAS7H,KAAKkG,aAAa,0BACtD3wB,EAAUqI,WAAWe,YAAYpJ,GAG/B69Q,MAvK+B,OAA/BjsR,EAAOmsR,sBACTzrP,SAAS7H,KAAKv3B,MAAMspE,aAAe,GAAG77D,OAAO/O,EAAOmsR,oBAAqB,MACzEnsR,EAAOmsR,oBAAsB,MA+DhB,WACf,GAAIx/F,EAASjsJ,SAAS7H,KAAMwxP,EAAYuP,QAAS,CAC/C,IAAIh5R,EAAS2kC,SAAS7E,SAAS7H,KAAKv3B,MAAMQ,IAAK,IAC/C8nH,GAAYlpF,SAAS7H,KAAMwxP,EAAYuP,QACvCl5P,SAAS7H,KAAKv3B,MAAMQ,IAAM,GAC1B4+B,SAAS7H,KAAK1a,WAAsB,EAAVvd,GAmG1Bi5R,GAvEoB,oBAAX34Q,QAA0Bw3Q,MACnCx3Q,OAAOQ,oBAAoB,SAAUm3Q,IAuBpB56Q,EAAQyiB,SAAS7H,KAAKh7B,UAC5BuL,QAAQ,SAAUo/B,GACzBA,EAAG1J,aAAa,8BAClB0J,EAAG5jC,aAAa,cAAe4jC,EAAGzJ,aAAa,8BAC/CyJ,EAAGhK,gBAAgB,8BAEnBgK,EAAGhK,gBAAgB,kBAkDvBorF,GAAY,CAAClpF,SAAS6J,gBAAiB7J,SAAS7H,MAAO,CAACwxP,EAAYh0J,MAAOg0J,EAAY,eAAgBA,EAAY,eAAgBA,EAAY,eAAgBA,EAAY,kBAG7K,SAAShvP,GAAMy+P,GACb,IAAIlP,EAAQD,IAEZ,GAAKC,EAAL,CAIA,IAAIgE,EAAcD,GAAaC,YAAY3mR,IAAIlS,MAE/C,GAAK64R,IAAejiG,EAASi+F,EAAOgE,EAAYmG,UAAUnK,OAA1D,CAIA,IAAIoO,EAAqBD,GAAeC,mBAAmB/wR,IAAIlS,MAC/D6zH,GAAYghK,EAAOgE,EAAYpC,UAAU5B,OACzCpkK,GAASokK,EAAOgE,EAAYmG,UAAUnK,OACtC,IAAI5gK,EAAWugK,IACf3gK,GAAYI,EAAU4kK,EAAYpC,UAAUxiK,UAC5CxD,GAASwD,EAAU4kK,EAAYmG,UAAU/qK,UACzC+vK,GAAqBhkS,KAAM60R,EAAOgE,QAEN,IAAjBkL,GACTA,EAAaE,iBAA8C,IAAzBF,EAAavuK,QAC/CuuK,EAAaG,iBAA8C,IAAzBH,EAAavuK,SAE/CuuK,EAAe,CACbE,aAAa,EACbC,aAAa,GAKjBjB,EAAmBc,GAAgB,MAGrC,IAAIC,GAAuB,SAA8BlwQ,EAAU+gQ,EAAOgE,GACxE,IAAIxgR,EAAYm8Q,IAEZ2P,EAAuB9L,IAAqBf,GAAgBzC,GAC5DlmL,EAAUkqL,EAAYlqL,QACtByxL,EAAevH,EAAYuH,aAEf,OAAZzxL,GAAuC,mBAAZA,GAC7BA,EAAQkmL,GAGNsP,EACFC,GAAatwQ,EAAU+gQ,EAAOx8Q,EAAW+nR,GAGzC8C,GAAyBpvQ,EAAUzb,EAAW89Q,IAAWiK,IAIzDgE,GAAe,SAAsBtwQ,EAAU+gQ,EAAOx8Q,EAAW+nR,GACnE5B,GAAY6F,+BAAiCnB,GAAyB34P,KAAK,KAAMzW,EAAUzb,EAAW89Q,IAAWiK,GACjHvL,EAAMvpQ,iBAAiB+sQ,GAAmB,SAAUpkQ,GAC9CA,EAAEzH,SAAWqoQ,IACf2J,GAAY6F,wCACL7F,GAAY6F,mCAKrBjB,GAAgC,SAAuCtvQ,EAAUssQ,GACnFx7P,WAAW,WACmB,mBAAjBw7P,GACTA,IAGFtsQ,EAASwwQ,cAIb,SAASC,GAAmBzwQ,EAAU0wQ,EAASx3Q,GAC7C,IAAI8rQ,EAAWF,GAAaE,SAAS5mR,IAAI4hB,GACzC0wQ,EAAQnxR,QAAQ,SAAUksE,GACxBu5M,EAASv5M,GAAQvyD,SAAWA,IAIhC,SAASy3Q,GAAiBjmP,EAAOxxB,GAC/B,IAAKwxB,EACH,OAAO,EAGT,GAAmB,UAAfA,EAAM99C,KAIR,IAHA,IACIgkS,EADkBlmP,EAAM99B,WAAWA,WACVqrF,iBAAiB,SAErClkG,EAAI,EAAGA,EAAI68R,EAAOvgS,OAAQ0D,IACjC68R,EAAO78R,GAAGmlB,SAAWA,OAGvBwxB,EAAMxxB,SAAWA,EAuDrB,IAAI23Q,GAAqB,WACvB,SAASA,EAAM1xQ,EAAUm6D,GACvB96C,EAAgBtyC,KAAM2kS,GAEtB3kS,KAAKizB,SAAWA,EAChBjzB,KAAK6+O,UAAYzxJ,EACjBptF,KAAKqiS,SAAU,EACfriS,KAAKmJ,QA2DP,OAxDA4pR,EAAa4R,EAAO,CAAC,CACnBhoR,IAAK,QACLpb,MAAO,WAOL,OANKvB,KAAKqiS,UACRriS,KAAKqiS,SAAU,EACfriS,KAAK0lJ,QAAU,IAAIhrG,KACnB16C,KAAKgmB,GAAK4e,WAAW5kC,KAAKizB,SAAUjzB,KAAK6+O,YAGpC7+O,KAAK6+O,YAEb,CACDliO,IAAK,OACLpb,MAAO,WAOL,OANIvB,KAAKqiS,UACPriS,KAAKqiS,SAAU,EACfn+P,aAAalkC,KAAKgmB,IAClBhmB,KAAK6+O,WAAa,IAAInkM,KAAS16C,KAAK0lJ,SAG/B1lJ,KAAK6+O,YAEb,CACDliO,IAAK,WACLpb,MAAO,SAAkBw2C,GACvB,IAAIsqP,EAAUriS,KAAKqiS,QAYnB,OAVIA,GACFriS,KAAKkjO,OAGPljO,KAAK6+O,WAAa9mM,EAEdsqP,GACFriS,KAAKmJ,QAGAnJ,KAAK6+O,YAEb,CACDliO,IAAK,eACLpb,MAAO,WAML,OALIvB,KAAKqiS,UACPriS,KAAKkjO,OACLljO,KAAKmJ,SAGAnJ,KAAK6+O,YAEb,CACDliO,IAAK,YACLpb,MAAO,WACL,OAAOvB,KAAKqiS,YAITsC,EAlEgB,GAqErBC,GAAyB,CAC3BvL,MAAO,SAAelqP,EAAQ8wP,GAC5B,MAAO,wDAAwDj9Q,KAAKmsB,GAAU5qC,QAAQC,UAAYD,QAAQC,QAAQy7R,GAAqB,0BAEzI9rP,IAAK,SAAahF,EAAQ8wP,GAExB,MAAO,8FAA8Fj9Q,KAAKmsB,GAAU5qC,QAAQC,UAAYD,QAAQC,QAAQy7R,GAAqB,iBA8BjL,SAAS4E,GAAc/6M,IA1BvB,SAAmCA,GAE5BA,EAAOk2M,gBACVxjR,OAAOC,KAAKmoR,IAAwBvxR,QAAQ,SAAUsJ,GAChDmtE,EAAOtrC,QAAU7hC,IACnBmtE,EAAOk2M,eAAiB4E,GAAuBjoR,OAsBrDmoR,CAA0Bh7M,GAEtBA,EAAO+1M,sBAAwB/1M,EAAOw1M,YACxC57N,EAAK,oMAOPomB,EAAOnmD,UAAYqwP,EAAelqM,EAAOnmD,WA1B3C,SAAqCmmD,KAE9BA,EAAOt9D,QAAmC,iBAAlBs9D,EAAOt9D,SAAwBme,SAASv/B,cAAc0+E,EAAOt9D,SAAoC,iBAAlBs9D,EAAOt9D,SAAwBs9D,EAAOt9D,OAAO1U,eACvJ4rD,EAAK,uDACLomB,EAAOt9D,OAAS,QAuBlBu4Q,CAA4Bj7M,GAEA,iBAAjBA,EAAOlzB,QAChBkzB,EAAOlzB,MAAQkzB,EAAOlzB,MAAMr0C,MAAM,MAAMytB,KAAK,WArkDtC,SAAc85C,GAEvB,IAzEIk7M,EAsBA1xO,EACA9U,EACAyhI,EACA7kI,EACAm+O,EACAt5P,EACA82P,EACAgB,EAkB6BvrQ,EA0B7By4Q,KAzEAD,EAAexQ,OAMnBwQ,EAAatkR,WAAWe,YAAYujR,GACpCnxK,GAAY,CAAClpF,SAAS6J,gBAAiB7J,SAAS7H,MAAO,CAACwxP,EAAY,eAAgBA,EAAY,eAAgBA,EAAY,iBACrH,GAoEP,GAAIqD,KACF3iQ,EAAM,mDADR,CAKA,IAAI3c,EAAYsyB,SAAS9yB,cAAc,OACvCQ,EAAUwP,UAAYysQ,EAAYj8Q,UAE9B4sR,GACFx0K,GAASp4G,EAAWi8Q,EAAY,kBAGlC+B,EAAah+Q,EAAWu/Q,IACxB,IAAItrK,EAzCqB,iBADQ9/F,EA0CHs9D,EAAOt9D,QAzCDme,SAASv/B,cAAcohB,GAAUA,EA0CrE8/F,EAAcx0G,YAAYO,GAvCH,SAA4ByxE,GACnD,IAAI+qM,EAAQD,IACZC,EAAMhmR,aAAa,OAAQi7E,EAAO+zE,MAAQ,QAAU,UACpDg3H,EAAMhmR,aAAa,YAAai7E,EAAO+zE,MAAQ,SAAW,aAErD/zE,EAAO+zE,OACVg3H,EAAMhmR,aAAa,aAAc,QAkCnCq2R,CAAmBp7M,GA9BN,SAAkBwiC,GAC0B,QAArDnhG,OAAOqoD,iBAAiB84C,GAAetlH,WACzCypH,GAAS+jK,IAAgBF,EAAY9vE,KA6BvC2gF,CAAS74K,GAtELh5D,EAAU4hO,IACV12O,EAAQs4O,GAAgBxjO,EAASghO,EAAY91O,OAC7CyhI,EAAO62G,GAAgBxjO,EAASghO,EAAYr0G,MAC5C7kI,EAAQkY,EAAQloD,cAAc,IAAI4N,OAAOs7Q,EAAYl5O,MAAO,WAC5Dm+O,EAAcjmO,EAAQloD,cAAc,IAAI4N,OAAOs7Q,EAAYl5O,MAAO,YAClEnb,EAAS62P,GAAgBxjO,EAASghO,EAAYr0P,QAC9C82P,EAAWzjO,EAAQloD,cAAc,IAAI4N,OAAOs7Q,EAAYyC,SAAU,WAClEgB,EAAWjB,GAAgBxjO,EAASghO,EAAYyD,UACpDv5O,EAAM4mP,QAAUpN,GAChB/3G,EAAK94C,SAAW6wJ,GAChB/3P,EAAOknG,SAAW6wJ,GAClBjB,EAAS5vJ,SAAW6wJ,GACpBD,EAASqN,QAAUpN,GAEnB58O,EAAMgqP,QAAU,SAAUnxQ,GACxB+jQ,GAAuB/jQ,GACvBslQ,EAAYh4R,MAAQ65C,EAAM75C,OAG5B65C,EAAM+rF,SAAW,SAAUlzG,GACzB+jQ,GAAuB/jQ,GACvBmnB,EAAMiqP,YAAY9jS,MAAQ65C,EAAM75C,QAomDlC+jS,CAAKx7M,GAyCP,SAASy7M,GAA0Bj9Q,GACjC,IAAIusQ,EAAQD,IAEZ,GAAItsQ,EAAMkE,SAAWqoQ,EAArB,CAIA,IAAIx8Q,EAAYm8Q,IAChBK,EAAMlpQ,oBAAoB0sQ,GAAmBkN,IAC7CltR,EAAU9M,MAAM+pE,UAAY,QAG9B,IA2tBIkwN,GA3tBAC,GAAyB,SAAgCptR,EAAWw8Q,GAClEwD,IAAqBf,GAAgBzC,IACvCx8Q,EAAU9M,MAAM+pE,UAAY,SAC5Bu/M,EAAMvpQ,iBAAiB+sQ,GAAmBkN,KAE1CltR,EAAU9M,MAAM+pE,UAAY,QAI5BowN,GAAqB,SAA4BrtR,EAAWgoR,EAAkBsF,IA3frE,WAGX,IAFU,mBAAmB3iR,KAAK8nG,UAAUC,aAAe5/F,OAAOy6Q,UAAmC,aAAvB96K,UAAU9jG,UAA2B8jG,UAAU+6K,eAAiB,KAElIjvG,EAASjsJ,SAAS7H,KAAMwxP,EAAYuP,QAAS,CACvD,IAAIh5R,EAAS8/B,SAAS7H,KAAK1a,UAC3BuiB,SAAS7H,KAAKv3B,MAAMQ,IAAM,GAAGiN,QAAiB,EAAVnO,EAAa,MACjD4lH,GAAS9lF,SAAS7H,KAAMwxP,EAAYuP,QAkBnB,WAEnB,IACIiC,EADAztR,EAAYm8Q,IAGhBn8Q,EAAU0tR,aAAe,SAAU9xQ,GACjC6xQ,EAAmBpD,GAAuBzuQ,EAAEzH,SAG9CnU,EAAU2tR,YAAc,SAAU/xQ,GAC5B6xQ,IACF7xQ,EAAE/G,iBACF+G,EAAErE,oBA7BJq2Q,GAMYn7K,UAAUC,UAAUz5E,MAAM,8CAKlCsjP,IAAW97M,aAAe3tD,OAAO6hG,YAFb,KAGtBwnK,IAAejpR,MAAMwpE,cAAgB,GAAG/7D,OAHlB,GAG4C,SAyetEktR,GAxasB,oBAAX/6Q,QAA0Bw3Q,OACnCG,KACA33Q,OAAOG,iBAAiB,SAAUw3Q,KAyahCzC,GAA4C,WAAxBsF,IAnhBW,OAA/B17R,EAAOmsR,qBAKPzrP,SAAS7H,KAAKg2C,aAAe3tD,OAAO6hG,cAEtC/iH,EAAOmsR,oBAAsB5mP,SAASrkB,OAAOqoD,iBAAiB7oC,SAAS7H,MAAMu/G,iBAAiB,kBAC9F13G,SAAS7H,KAAKv3B,MAAMspE,aAAe,GAAG77D,OAAO/O,EAAOmsR,oBA5iCjC,WACrB,IAAIjtG,EAAYx+I,SAAS9yB,cAAc,OACvCsxK,EAAUthK,UAAYysQ,EAAY,qBAClC3pP,SAAS7H,KAAKhrB,YAAYqxK,GAC1B,IAAIl9E,EAAiBk9E,EAAU1+K,wBAAwBf,MAAQy/K,EAAUp2G,YAEzE,OADApoC,SAAS7H,KAAKrhB,YAAY0nK,GACnBl9E,EAsiCqEk6L,GAAoB,QAghBhGvhQ,WAAW,WACTvsB,EAAU+P,UAAY,KAItBg+Q,GAAe,SAAoB/tR,EAAWw8Q,EAAO/qM,GACvD2mC,GAASp4G,EAAWyxE,EAAO2sM,UAAUxiK,UACrCswC,GAAKswH,GAELpkK,GAASokK,EAAO/qM,EAAO2sM,UAAU5B,OACjCpkK,GAAS,CAAC9lF,SAAS6J,gBAAiB7J,SAAS7H,MAAOwxP,EAAYh0J,OAE5Dx2C,EAAOm1M,YAAcn1M,EAAOmqC,WAAanqC,EAAO+zE,OAClDptC,GAAS,CAAC9lF,SAAS6J,gBAAiB7J,SAAS7H,MAAOwxP,EAAY,iBAkFhE+R,GAAuB,CACzBpmQ,OAAQ,SAAgBqzB,EAASwsO,EAAch2M,GAC7C,IAAI7pD,EAAS62P,GAAgBxjO,EAASghO,EAAYr0P,QAE9CqmQ,EAAe,SAAsB1/P,EAAQwuJ,EAAamxG,GAC5D,IAAI//Q,EAASmkB,SAAS9yB,cAAc,UACpC2O,EAAOjlB,MAAQglS,EACflQ,EAAa7vQ,EAAQ4uK,GAEjBtrG,EAAOn7D,WAAWsD,aAAes0Q,EAAYt0Q,aAC/CzL,EAAOyI,UAAW,GAGpB2X,EAAO9uB,YAAY0O,IAGrBs5Q,EAAazsR,QAAQ,SAAUmzR,GAC7B,IAAID,EAAcC,EAAY,GAC1BpxG,EAAcoxG,EAAY,GAK9B,GAAIj8R,MAAMyL,QAAQo/K,GAAc,CAE9B,IAAIgE,EAAWzuJ,SAAS9yB,cAAc,YACtCuhL,EAAS/jK,MAAQkxQ,EACjBntG,EAASpsK,UAAW,EAEpBiT,EAAOnoB,YAAYshL,GACnBhE,EAAY/hL,QAAQ,SAAU86B,GAC5B,OAAOm4P,EAAaltG,EAAUjrJ,EAAE,GAAIA,EAAE,WAIxCm4P,EAAarmQ,EAAQm1J,EAAamxG,KAGtCtmQ,EAAOnR,SAETuxF,MAAO,SAAe/sD,EAASwsO,EAAch2M,GAC3C,IAAIu2B,EAAQy2K,GAAgBxjO,EAASghO,EAAYj0K,OACjDy/K,EAAazsR,QAAQ,SAAUmzR,GAC7B,IAAIC,EAAaD,EAAY,GACzBE,EAAaF,EAAY,GACzBG,EAAah8P,SAAS9yB,cAAc,SACpC+uR,EAAoBj8P,SAAS9yB,cAAc,SAC/C8uR,EAAWjmS,KAAO,QAClBimS,EAAWxlS,KAAOmzR,EAAYj0K,MAC9BsmL,EAAWplS,MAAQklS,EAEf38M,EAAOn7D,WAAWsD,aAAew0Q,EAAWx0Q,aAC9C00Q,EAAW30L,SAAU,GAGvB,IAAI38E,EAAQsV,SAAS9yB,cAAc,QACnCw+Q,EAAahhQ,EAAOqxQ,GACpBrxQ,EAAMxN,UAAYysQ,EAAYj/P,MAC9BuxQ,EAAkB9uR,YAAY6uR,GAC9BC,EAAkB9uR,YAAYud,GAC9BgrF,EAAMvoG,YAAY8uR,KAEpB,IAAIlC,EAASrkL,EAAMtU,iBAAiB,SAEhC24L,EAAOvgS,QACTugS,EAAO,GAAG51Q,UASZ+3Q,GAAqB,SAASA,EAAmB/G,GACnD,IAAIljQ,EAAS,GA0Bb,MAxBmB,oBAARnvB,KAAuBqyR,aAAwBryR,IACxDqyR,EAAazsR,QAAQ,SAAU9R,EAAOob,GACpC,IAAImqR,EAAiBvlS,EAEW,WAA5BsxR,EAAQiU,KAEVA,EAAiBD,EAAmBC,IAGtClqQ,EAAOh5B,KAAK,CAAC+Y,EAAKmqR,MAGpBtqR,OAAOC,KAAKqjR,GAAczsR,QAAQ,SAAUsJ,GAC1C,IAAImqR,EAAiBhH,EAAanjR,GAEF,WAA5Bk2Q,EAAQiU,KAEVA,EAAiBD,EAAmBC,IAGtClqQ,EAAOh5B,KAAK,CAAC+Y,EAAKmqR,MAIflqQ,GA2CLmqQ,GAAc,SAAqBjzQ,EAAUvyB,GAC/CuyB,EAASkzQ,WAAW,CAClBzlS,MAAOA,KAIPi0R,GAAU,SAAiB1hQ,EAAU+kQ,EAAat3R,GAChDs3R,EAAYgH,qBACdvB,KAGEzF,EAAYyG,YACdxrQ,EAASkkQ,yBACezzR,QAAQC,UAAU6Z,KAAK,WAC7C,OAAO61Q,EAAU2E,EAAYyG,WAAW/9R,EAAOs3R,EAAYoH,sBAE3C5hR,KAAK,SAAU4oR,GAC3Brc,GAAU0K,OAA+C,IAApB2R,EACvCnzQ,EAAS2uQ,cAETsE,GAAYjzQ,OAAqC,IAApBmzQ,EAAkC1lS,EAAQ0lS,MAI3EF,GAAYjzQ,EAAUvyB,IA0BtB2lS,GAAW,SAAkBrO,EAAalvR,EAAOw9R,GAGnD,IAFA,IAAIn9G,EAAoB8rG,IAEfjuR,EAAI,EAAGA,EAAImiL,EAAkB7lL,OAAQ0D,IAS5C,OARA8B,GAAgBw9R,KAEFn9G,EAAkB7lL,OAC9BwF,EAAQ,GACY,IAAXA,IACTA,EAAQqgL,EAAkB7lL,OAAS,GAG9B6lL,EAAkBrgL,GAAOmlB,QAIlC8lQ,IAAW9lQ,SAETs4Q,GAAY,CAAC,YAAa,aAAc,UAAW,YAAa,OAAQ,QAAS,KAAM,QAEvFC,GAAU,CAAC,SAAU,OAsBrBC,GAAc,SAAqBxzQ,EAAUG,EAAG4kQ,GAElD,IAAI5kQ,EAAEszQ,aAIFtzQ,EAAEzH,QAAUsH,EAAS8iQ,YAAc3iQ,EAAEzH,OAAOolM,YAAc99L,EAAS8iQ,WAAWhlE,UAAW,CAC3F,IAAyD,IAArD,CAAC,WAAY,QAAQ3oN,QAAQ4vR,EAAYr6O,OAC3C,OAGF6/O,KACApqQ,EAAE/G,mBAIFs6Q,GAAY,SAAmBvzQ,EAAG4kQ,GAKpC,IAJA,IAAIvsK,EAAgBr4F,EAAEzH,OAClBw9J,EAAoB8rG,IACpB2R,GAAY,EAEP5/R,EAAI,EAAGA,EAAImiL,EAAkB7lL,OAAQ0D,IAC5C,GAAIykH,IAAkB09D,EAAkBniL,GAAI,CAC1C4/R,EAAW5/R,EACX,MASFq/R,GAASrO,EAAa4O,EALnBxzQ,EAAEwzF,UAK4B,EAHD,GAMlCxzF,EAAErE,kBACFqE,EAAE/G,kBAGAw6Q,GAAe,WACjB,IAAIrK,EAAgB9H,IAChB+H,EAAe7H,IAEf9qP,SAASlgB,gBAAkB4yQ,GAAiBzS,GAAU0S,GACxDA,EAAaxuQ,QACJ6b,SAASlgB,gBAAkB6yQ,GAAgB1S,GAAUyS,IAC9DA,EAAcvuQ,SAId64Q,GAAY,SAAmB1zQ,EAAG4kQ,EAAa+O,GAC7C5T,EAAe6E,EAAYqG,kBAC7BjrQ,EAAE/G,iBACF06Q,EAAYzT,EAAczyG,OAgC1BmmH,IAAqB,EAwFrBC,GAAc,SAAqBh0Q,EAAUglQ,EAAUD,GACzD,OAAO,IAAIt0R,QAAQ,SAAUC,GAE3B,IAAIojS,EAAc,SAAqBpyK,GACrC1hG,EAASkzQ,WAAW,CAClBxxK,QAASA,KAIbwtK,GAAeC,mBAAmB5uR,IAAIyf,EAAUtvB,GAEhDs0R,EAASuE,cAAc0K,QAAU,WAC/B,OA9TyB,SAAkCj0Q,EAAU+kQ,GACzE/kQ,EAASk0Q,iBAELnP,EAAYr6O,MAWW,SAAgC1qB,EAAU+kQ,GACrE,IAAIlqQ,EA9Lc,SAAuBmF,EAAU+kQ,GACnD,IAAIr6O,EAAQ1qB,EAAS8iQ,WAErB,IAAKp4O,EACH,OAAO,KAGT,OAAQq6O,EAAYr6O,OAClB,IAAK,WACH,OAaiB,SAA0BA,GAC/C,OAAOA,EAAMwzD,QAAU,EAAI,EAdhBi2L,CAAiBzpP,GAE1B,IAAK,QACH,OAcc,SAAuBA,GACzC,OAAOA,EAAMwzD,QAAUxzD,EAAMj9C,MAAQ,KAf1B2mS,CAAc1pP,GAEvB,IAAK,OACH,OAea,SAAsBA,GACvC,OAAOA,EAAM2pP,MAAMhkS,OAA4C,OAAnCq6C,EAAMxV,aAAa,YAAuBwV,EAAM2pP,MAAQ3pP,EAAM2pP,MAAM,GAAK,KAhB1FC,CAAa5pP,GAEtB,QACE,OAAOq6O,EAAYkH,cAAgBvhP,EAAMj9C,MAAMub,OAAS0hC,EAAMj9C,OA4KjD8mS,CAAcv0Q,EAAU+kQ,GAErCA,EAAYmH,gBACdlsQ,EAASw0Q,eACe/jS,QAAQC,UAAU6Z,KAAK,WAC7C,OAAO61Q,EAAU2E,EAAYmH,eAAerxQ,EAAYkqQ,EAAYoH,sBAEpD5hR,KAAK,SAAU4hR,GAC/BnsQ,EAASy0Q,gBACTz0Q,EAAS00Q,cAELvI,EACFnsQ,EAAS20Q,sBAAsBxI,GAE/BzK,GAAQ1hQ,EAAU+kQ,EAAalqQ,MAGzBmF,EAAS8iQ,WAAW8R,gBAI9BlT,GAAQ1hQ,EAAU+kQ,EAAalqQ,IAH/BmF,EAASy0Q,gBACTz0Q,EAAS20Q,sBAAsB5P,EAAYoH,oBA9B3C0I,CAAuB70Q,EAAU+kQ,GAEjCrD,GAAQ1hQ,EAAU+kQ,GAAa,GAwTtB+P,CAAyB90Q,EAAU+kQ,IAG5CC,EAASwE,aAAayK,QAAU,WAC9B,OAzTwB,SAAiCj0Q,EAAU8zQ,GACvE9zQ,EAASk0Q,iBACTJ,EAAYzT,EAAcvoB,QAuTfi9B,CAAwB/0Q,EAAU8zQ,IAG3C9O,EAASsD,YAAY2L,QAAU,WAC7B,OAAOH,EAAYzT,EAAc7uP,QAxIhB,SAA0BxR,EAAUglQ,EAAU8O,GACjDhP,GAAaC,YAAY3mR,IAAI4hB,GAE/B+pI,MAYK,SAA0B/pI,EAAUglQ,EAAU8O,GAEnE9O,EAASjE,MAAMkT,QAAU,WACvB,IAAIlP,EAAcD,GAAaC,YAAY3mR,IAAI4hB,GAE3C+kQ,EAAY0E,mBAAqB1E,EAAY2E,kBAAoB3E,EAAYyD,iBAAmBzD,EAAYr6O,OAIhHopP,EAAYzT,EAAc7uP,QApB1BwjQ,CAAiBh1Q,EAAUglQ,EAAU8O,IA0Bd,SAA8B9O,GACvDA,EAASjE,MAAMkU,YAAc,WAC3BjQ,EAASzgR,UAAU2wR,UAAY,SAAU/0Q,GACvC6kQ,EAASzgR,UAAU2wR,eAAYvkS,EAG3BwvB,EAAEzH,SAAWssQ,EAASzgR,YACxBwvR,IAAqB,KA7BzBoB,CAAqBnQ,GAmCM,SAAkCA,GAC/DA,EAASzgR,UAAU0wR,YAAc,WAC/BjQ,EAASjE,MAAMmU,UAAY,SAAU/0Q,GACnC6kQ,EAASjE,MAAMmU,eAAYvkS,GAEvBwvB,EAAEzH,SAAWssQ,EAASjE,OAASiE,EAASjE,MAAMjoQ,SAASqH,EAAEzH,WAC3Dq7Q,IAAqB,KAvCzBqB,CAAyBpQ,GA6CN,SAA0BhlQ,EAAUglQ,EAAU8O,GACnE9O,EAASzgR,UAAU0vR,QAAU,SAAU9zQ,GACrC,IAAI4kQ,EAAcD,GAAaC,YAAY3mR,IAAI4hB,GAE3C+zQ,GACFA,IAAqB,EAInB5zQ,EAAEzH,SAAWssQ,EAASzgR,WAAa27Q,EAAe6E,EAAYiE,oBAChE8K,EAAYzT,EAAclgK,WAtD5Bk1K,CAAiBr1Q,EAAUglQ,EAAU8O,IAgIrCwB,CAAiBt1Q,EAAUglQ,EAAU8O,GArQjB,SAA2B9zQ,EAAU0qQ,EAAa3F,EAAa+O,GACjFpJ,EAAYkF,eAAiBlF,EAAYoF,sBAC3CpF,EAAYkF,cAAc/3Q,oBAAoB,UAAW6yQ,EAAYmF,eAAgB,CACnF3sI,QAASwnI,EAAYa,yBAEvBb,EAAYoF,qBAAsB,GAG/B/K,EAAYh7H,QACf2gI,EAAYmF,eAAiB,SAAU1vQ,GACrC,OAmCe,SAAwBH,EAAUG,EAAG2zQ,GACxD,IAAI/O,EAAcD,GAAaC,YAAY3mR,IAAI4hB,GAE3C+kQ,EAAYuG,wBACdnrQ,EAAErE,kBAIU,UAAVqE,EAAEtX,IACJ2qR,GAAYxzQ,EAAUG,EAAG4kQ,GACN,QAAV5kQ,EAAEtX,IACX6qR,GAAUvzQ,EAAG4kQ,IAC0B,IAA9BuO,GAAUn+R,QAAQgrB,EAAEtX,KAC7B+qR,MACqC,IAA5BL,GAAQp+R,QAAQgrB,EAAEtX,MAC3BgrR,GAAU1zQ,EAAG4kQ,EAAa+O,GAlDjBjE,CAAe7vQ,EAAUG,EAAG2zQ,IAGrCpJ,EAAYkF,cAAgB7K,EAAYwG,uBAAyBl0Q,OAASypQ,IAC1E4J,EAAYa,uBAAyBxG,EAAYwG,uBACjDb,EAAYkF,cAAcp4Q,iBAAiB,UAAWkzQ,EAAYmF,eAAgB,CAChF3sI,QAASwnI,EAAYa,yBAEvBb,EAAYoF,qBAAsB,GAoPlCyF,CAAkBv1Q,EAAU0qQ,GAAa3F,EAAa+O,GAElD/O,EAAYh7H,QAAUg7H,EAAYr6O,OAASq6O,EAAYp0N,QAAUo0N,EAAYyD,iBAC/E7rK,GAAS9lF,SAAS7H,KAAMwxP,EAAY,iBAEpCzgK,GAAYlpF,SAAS7H,KAAMwxP,EAAY,iBArgBZ,SAAoCxgQ,EAAUg2D,GACxD,WAAjBA,EAAOtrC,OAAuC,UAAjBsrC,EAAOtrC,MAwCjB,SAA4B1qB,EAAUg2D,GAC7D,IAAIx2B,EAAU4hO,IAEVoU,EAAsB,SAA6BxJ,GACrD,OAAOuG,GAAqBv8M,EAAOtrC,OAAO8U,EAASuzO,GAAmB/G,GAAeh2M,IAGnFmqM,EAAenqM,EAAOg2M,eAAiBjiH,EAAU/zF,EAAOg2M,eAC1DxB,KACApK,EAAUpqM,EAAOg2M,cAAczhR,KAAK,SAAUyhR,GAC5ChsQ,EAAS2uQ,cACT6G,EAAoBxJ,MAEoB,WAAjCjN,EAAQ/oM,EAAOg2M,cACxBwJ,EAAoBx/M,EAAOg2M,cAE3B9qQ,EAAM,yEAAyEhc,OAAO65Q,EAAQ/oM,EAAOg2M,gBAvDrGyJ,CAAmBz1Q,EAAUg2D,IACsD,IAA1E,CAAC,OAAQ,QAAS,SAAU,MAAO,YAAY7gF,QAAQ6gF,EAAOtrC,SAAkBy1O,EAAenqM,EAAOn7D,aAAekvJ,EAAU/zF,EAAOn7D,cA0D5H,SAA0BmF,EAAUg2D,GACzD,IAAItrC,EAAQ1qB,EAAS8iQ,WACrB5pG,GAAKxuI,GACL01O,EAAUpqM,EAAOn7D,YAAYtQ,KAAK,SAAUsQ,GAC1C6vB,EAAMj9C,MAAyB,WAAjBuoF,EAAOtrC,MAAqB3wB,WAAWc,IAAe,EAAI,GAAG3V,OAAO2V,GAClF41I,GAAK/lH,GACLA,EAAM1vB,QACNgF,EAAS2uQ,gBAJX,MAKY,SAAU9lQ,GACpB3H,EAAM,gCAAgChc,OAAO2jB,IAC7C6hB,EAAMj9C,MAAQ,GACdgjK,GAAK/lH,GACLA,EAAM1vB,QACNgF,EAAS2uQ,gBAtET+G,CAAiB11Q,EAAUg2D,GAogB3B2/M,CAA2B31Q,EAAU+kQ,GAvlBzB,SAAmB/uM,GACjC,IAAIzxE,EAAYm8Q,IACZK,EAAQD,IAEuB,mBAAxB9qM,EAAOo2M,cAChBp2M,EAAOo2M,aAAarL,GAGtB,IACI8Q,EADax6Q,OAAOqoD,iBAAiB7oC,SAAS7H,MACbwyC,UACrC8wN,GAAa/tR,EAAWw8Q,EAAO/qM,GAE/B27M,GAAuBptR,EAAWw8Q,GAE9BqB,MACFwP,GAAmBrtR,EAAWyxE,EAAOu2M,iBAAkBsF,GAjXtCz9Q,EAAQyiB,SAAS7H,KAAKh7B,UAC5BuL,QAAQ,SAAUo/B,GACzBA,IAAO+hP,KAh2CA,SAAkBkV,EAAUC,GACzC,GAAiC,mBAAtBD,EAAS98Q,SAClB,OAAO88Q,EAAS98Q,SAAS+8Q,GA81CI/8Q,CAAS6lB,EAAI+hP,OAItC/hP,EAAG1J,aAAa,gBAClB0J,EAAG5jC,aAAa,4BAA6B4jC,EAAGzJ,aAAa,gBAG/DyJ,EAAG5jC,aAAa,cAAe,YA2W5BsnR,KAAcqI,GAAYgF,wBAC7BhF,GAAYgF,sBAAwB74P,SAASlgB,eAGlB,mBAAlBq/D,EAAOq2M,QAChBv7P,WAAW,WACT,OAAOklD,EAAOq2M,OAAOtL,KAIzBhhK,GAAYx7G,EAAWi8Q,EAAY,kBA2jBjCsV,CAAU/Q,GACVgR,GAAWrL,GAAa3F,EAAa+O,GACrCkC,GAAUhR,EAAUD,GAEpBj0P,WAAW,WACTk0P,EAASzgR,UAAU+P,UAAY,OAqBjCyhR,GAAa,SAAoBE,EAAgBlR,EAAa+O,GAChE,IAAIlQ,EAAmB9B,IACvB5oG,GAAK0qG,GAEDmB,EAAYz3I,QACd2oJ,EAAe37I,QAAU,IAAIu2I,GAAM,WACjCiD,EAAY,gBACLmC,EAAe37I,SACrByqI,EAAYz3I,OAEXy3I,EAAYnB,mBACdnzH,GAAKmzH,GACL9yP,WAAW,WACLmlQ,EAAe37I,QAAQi0I,SAEzB5K,GAAwBoB,EAAYz3I,YAO1C0oJ,GAAY,SAAmBhR,EAAUD,GAC3C,IAAIA,EAAYh7H,MAIhB,OAAKm2H,EAAe6E,EAAYsG,eAI5BtG,EAAY+G,aAAehV,GAAUkO,EAASwE,cACzCxE,EAASwE,aAAaxuQ,QAG3B+pQ,EAAY8G,cAAgB/U,GAAUkO,EAASuE,eAC1CvE,EAASuE,cAAcvuQ,aAGhCo4Q,GAASrO,GAAc,EAAG,GAXjBmR,MAcPA,GAAoB,WAClBr/P,SAASlgB,eAAwD,mBAAhCkgB,SAASlgB,cAAcw/Q,MAC1Dt/P,SAASlgB,cAAcw/Q,QA6EvBC,GAAgB,SAAuBnsR,GACzC,IAAK,IAAIlW,KAAKkW,EACZA,EAAIlW,GAAK,IAAIyM,SAMb61R,GAA+B3tR,OAAO67C,OAAO,CAC/CoqO,YAAaA,GACb2H,eAAgB3H,GAChB7L,SA7tCF,SAAoB9iQ,GAClB,IAAI+kQ,EAAcD,GAAaC,YAAY3mR,IAAI4hB,GAAY9zB,MACvD84R,EAAWF,GAAaE,SAAS5mR,IAAI4hB,GAAY9zB,MAErD,OAAK84R,EAIElC,EAASkC,EAASxlO,QAASulO,EAAYr6O,OAHrC,MAytCTlZ,MAAOA,GACP0hQ,WAAY1hQ,GACZ+kQ,WAAY/kQ,GACZglQ,WAAYhlQ,GACZijQ,cAl7BF,WACEhE,GAAmBvkS,KAAM,CAAC,gBAAiB,iBAAiB,IAk7B5DgoS,eAh7BF,WACEzD,GAAmBvkS,KAAM,CAAC,gBAAiB,iBAAiB,IAg7B5DwoS,YA96BF,WACE,OAAO/D,GAAiBzkS,KAAK42R,YAAY,IA86BzC0R,aA56BF,WACE,OAAO7D,GAAiBzkS,KAAK42R,YAAY,IA46BzC6R,sBAz6BF,SAA+BzzQ,GAC7B,IAAI8jQ,EAAWF,GAAaE,SAAS5mR,IAAIlS,MACzCq2R,EAAayC,EAASmH,kBAAmBjrQ,GACzC,IAAIu1Q,EAAqBp/Q,OAAOqoD,iBAAiBslN,EAASjE,OAC1DiE,EAASmH,kBAAkB10R,MAAMg7F,WAAa,IAAIvtF,OAAOuxR,EAAmBloJ,iBAAiB,iBAC7Fy2I,EAASmH,kBAAkB10R,MAAMi7F,YAAc,IAAIxtF,OAAOuxR,EAAmBloJ,iBAAiB,kBAC9FkiB,GAAKu0H,EAASmH,mBACd,IAAIzhP,EAAQx+C,KAAK42R,WAEbp4O,IACFA,EAAM3vC,aAAa,gBAAgB,GACnC2vC,EAAM3vC,aAAa,mBAAoBylR,EAAY,uBACnD2C,GAAWz4O,GACXiyE,GAASjyE,EAAO81O,EAAYkW,cA65B9BxS,uBAz5BF,WACE,IAAIc,EAAWF,GAAaE,SAAS5mR,IAAIlS,MAErC84R,EAASmH,mBACXjzG,GAAK8rG,EAASmH,mBAGhB,IAAIzhP,EAAQx+C,KAAK42R,WAEbp4O,IACFA,EAAM/V,gBAAgB,gBACtB+V,EAAM/V,gBAAgB,oBACtBorF,GAAYr1E,EAAO81O,EAAYkW,cA84BjCnV,iBA14BF,WAEE,OADeuD,GAAaE,SAAS5mR,IAAIlS,MACzB46R,eAy4BhB6P,MAzPF,SAAeC,IArkCa,SAA+B5gN,GACzD,IAAK,IAAI/xD,KAAS+xD,EAChB82M,GAAoB7oQ,GAEhB+xD,EAAO+zE,OACTgjI,GAAyB9oQ,GAG3B+oQ,GAAyB/oQ,IA8jC3B4yQ,CAAsBD,GAElBlM,GAAYgH,iBACdhH,GAAYgH,gBAAgBlB,WAG9B9F,GAAYgH,gBAAkBxlS,KAC9B,IAAI64R,EAiBc,SAAuB6R,GACzC,IAAIjU,EAAYvD,EAAS,GAAI6L,GAActI,UAAWiU,EAAWjU,WAE7DuI,EAAY9L,EAAS,GAAI6L,GAAcC,UAAW0L,EAAW1L,WAE7Dl1M,EAASopM,EAAS,GAAI6L,GAAe2L,GAazC,OAXA5gN,EAAO2sM,UAAYA,EACnB3sM,EAAOk1M,UAAYA,GAEU,IAAzB0L,EAAW/mQ,YACbmmD,EAAO2sM,UAAY,CACjB5B,MAAO,oBACP5gK,SAAU,qBAEZnqC,EAAOk1M,UAAY,IAGdl1M,EAnCW8gN,CAAcF,GAChC7F,GAAchM,GACdr8Q,OAAO67C,OAAOwgO,GAEV2F,GAAYpwI,UACdowI,GAAYpwI,QAAQ80E,cACbs7D,GAAYpwI,SAIrBlqH,aAAas6P,GAAY+E,qBACzB,IAAIzK,EAsEiB,SAA0BhlQ,GAC/C,IAAIglQ,EAAW,CACbjE,MAAOD,IACPv8Q,UAAWm8Q,IACXlhO,QAAS4hO,IACTxoJ,QAASgpJ,IACT2H,cAAe9H,IACf+H,aAAc7H,IACd2G,YAAavG,IACboK,kBAAmB3K,IACnBsF,cAAevF,KAGjB,OADAuD,GAAaE,SAASzkR,IAAIyf,EAAUglQ,GAC7BA,EAnFQ+R,CAAiB7qS,MAGhC,OAFAkzC,GAAOlzC,KAAM64R,GACbD,GAAaC,YAAYxkR,IAAIrU,KAAM64R,GAC5BiP,GAAY9nS,KAAM84R,EAAUD,IAoOnCr+M,OA7FF,SAAgBsP,GACd,IAAI+qM,EAAQD,IACRiE,EAAcD,GAAaC,YAAY3mR,IAAIlS,MAE/C,IAAK60R,GAASj+F,EAASi+F,EAAOgE,EAAYmG,UAAUnK,OAClD,OAAOnxN,EAAK,8IAGd,IAAIonO,EAAuB,GAE3BtuR,OAAOC,KAAKqtE,GAAQz2E,QAAQ,SAAU0kB,GAChCkgQ,GAAKiJ,qBAAqBnpQ,GAC5B+yQ,EAAqB/yQ,GAAS+xD,EAAO/xD,GAErC2rC,EAAK,iCAAkC1qD,OAAO+e,EAAO,sHAIzD,IAAIgzQ,EAAgB7X,EAAS,GAAI2F,EAAaiS,GAE9C53P,GAAOlzC,KAAM+qS,GACbnS,GAAaC,YAAYxkR,IAAIrU,KAAM+qS,GACnCvuR,OAAOq3F,iBAAiB7zG,KAAM,CAC5B8pF,OAAQ,CACNvoF,MAAO2xR,EAAS,GAAIlzR,KAAK8pF,OAAQA,GACjCnsD,UAAU,EACVsW,YAAY,MAoEhBqwP,SA/DF,WACE,IAAIxL,EAAWF,GAAaE,SAAS5mR,IAAIlS,MACrC64R,EAAcD,GAAaC,YAAY3mR,IAAIlS,MAE1C64R,IAKDC,EAASjE,OAAS2J,GAAY6F,iCAChC7F,GAAY6F,wCACL7F,GAAY6F,gCAIjB7F,GAAYwM,qBACd9mQ,aAAas6P,GAAYwM,2BAClBxM,GAAYwM,oBAGgB,mBAA1BnS,EAAY1/J,WACrB0/J,EAAY1/J,mBAGFn5H,KAKI8pF,cAET00M,GAAYmF,sBACZnF,GAAYkF,cAEnBwG,GAActR,IACdsR,GAAclH,QAiCZiI,GAA0B,WAC5B,SAASA,IAIP,GAHA34P,EAAgBtyC,KAAMirS,GAGA,oBAAX9/Q,OAAX,CAKuB,oBAAZ5mB,SACTywB,EAAM,4MAGRwwQ,GAAkBxlS,KAElB,IAAK,IAAIshS,EAAOhoR,UAAUnV,OAAQtE,EAAO,IAAI0K,MAAM+2R,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E1hS,EAAK0hS,GAAQjoR,UAAUioR,GAGzB,IAAI2J,EAAc1uR,OAAO67C,OAAOr4D,KAAKkwC,YAAYixP,aAAathS,IAC9D2c,OAAOq3F,iBAAiB7zG,KAAM,CAC5B8pF,OAAQ,CACNvoF,MAAO2pS,EACPvtQ,UAAU,EACVsW,YAAY,EACZvW,cAAc,KAIlB,IAAIxJ,EAAUl0B,KAAKyqS,MAAMzqS,KAAK8pF,QAE9B8uM,GAAa1kQ,QAAQ7f,IAAIrU,KAAMk0B,IAkBjC,OAdA6+P,EAAakY,EAAY,CAAC,CACxBtuR,IAAK,OACLpb,MAAO,SAAc4pS,GAEnB,OADcvS,GAAa1kQ,QAAQhiB,IAAIlS,MACxBqe,KAAK8sR,KAErB,CACDxuR,IAAK,UACLpb,MAAO,SAAkB6pS,GAEvB,OADcxS,GAAa1kQ,QAAQhiB,IAAIlS,MACzB,QAAYorS,OAIvBH,EAlDqB,GAsD9B,GAAsB,oBAAX9/Q,QAA0B,QAAQnI,KAAK8nG,UAAUugL,WAAa/wQ,SAAS1b,KAAK0yB,MAAM,uBAAwB,CACnH,IAAIya,GAAM,IAAIrR,KACV4wP,GAAiB1zQ,aAAaC,QAAQ,mBAErCyzQ,IAEOv/O,GAAIm1D,UAAYxmE,KAAKvgB,MAAMmxQ,KAA5B,MAAuE,GAChF1mQ,WAAW,WACT+F,SAAS7H,KAAKv3B,MAAMmiJ,cAAgB,OACpC,IAAI69I,EAAkB5gQ,SAAS9yB,cAAc,SAC7C0zR,EAAgBC,IAAM,8DACtBD,EAAgBE,MAAO,EACvB9gQ,SAAS7H,KAAKhrB,YAAYyzR,GAC1B3mQ,WAAW,WACT2mQ,EAAgBhoH,OAAhB,MAAgC,eAE/B,OACF,KAZH3rJ,aAAaW,QAAQ,kBAAmB,GAAGvf,OAAO+yC,KAiBtDmnO,EAAS+X,GAAWv4Q,UAAWy3Q,IAG/BjX,EAAS+X,GAAYhK,IAGrBzkR,OAAOC,KAAK0tR,IAAiB92R,QAAQ,SAAUsJ,GAC7CsuR,GAAWtuR,GAAO,WAEd,IAAI+uR,EADN,GAAIlG,GAGF,OAAQkG,EAAmBlG,IAAiB7oR,GAAKg7B,MAAM+zP,EAAkBpyR,cAI/E2xR,GAAW9W,cAAgBA,EAC3B8W,GAAWlhH,QAAU,SAErB,IAAIkuG,GAAOgT,GAGX,OAFAhT,GAAI,QAAcA,GAEXA,GAxnGyEnzR,QA2nG9D,IAAT9E,MAAwBA,KAAK2rS,cAAe3rS,KAAK4rS,KAAO5rS,KAAK6rS,WAAa7rS,KAAKi4R,KAAOj4R,KAAKirS,WAAajrS,KAAK2rS,aAExH,oBAAoBhhQ,UAAU,SAAS1W,EAAEzzB,GAAG,IAAIu3C,EAAE9jB,EAAEpc,cAAc,SAAS,GAAGoc,EAAE60J,qBAAqB,QAAQ,GAAGhxK,YAAYigC,GAAGA,EAAE+zP,WAAW/zP,EAAE+zP,WAAW9+Q,WAAW+qB,EAAE+zP,WAAWjgS,QAAQrL,QAAQ,IAAIu3C,EAAE02B,UAAUjuE,EAAE,MAAMyzB,GAAG8jB,EAAEmkP,UAAU17R,GAA1M,CAA8MmqC,SAAS,2ywB,kCCloGtO,SAASohQ,IACtB,MAAM,IAAIv5P,UAAU,6IADtB,iC,sBCSS,SAAUnwB,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,sdAA0FL,MAC9F,KAEJM,YACI,sdAA0FN,MACtF,KAERgB,SACI,ugBAA8FhB,MAC1F,KAERiB,cAAe,qQAAmDjB,MAC9D,KAEJkB,YAAa,uFAAsBlB,MAAM,KACzCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,2EACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,8BACNC,EAAG,+FACHC,GAAI,4DACJ/B,EAAG,gEACHgC,GAAI,kEACJC,EAAG,uEACHC,GAAI,uDACJhN,EAAG,8CACHiN,GAAI,gDACJG,EAAG,oDACHC,GAAI,sDACJC,EAAG,0DACHC,GAAI,uDAERC,uBAAwB,4BACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,sBAEpB2rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAIzBE,cAAe,wMACfG,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,kCACAA,EAAO,EACP,kCACAA,EAAO,GACP,4BACAA,EAAO,GACP,8CACAA,EAAO,GACP,8CACAA,EAAO,GACP,4BAEA,mCAGfD,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,mCAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,mCAAbC,GAAqC,6BAAbA,GAEX,+CAAbA,GACAD,GAAQ,GAFRA,EAIAA,EAAO,IAGtB/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KAjIyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,weAA6FL,MACjG,KAEJM,YACI,4XAA2EN,MACvE,KAER0U,kBAAkB,EAClB1T,SAAU,+SAA0DhB,MAChE,KAEJiB,cAAe,iLAAqCjB,MAAM,KAC1DkB,YAAa,mGAAwBlB,MAAM,KAC3CoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,8BACRC,KAAM,oCACNC,EAAG,4EACHC,GAAI,kEACJ/B,EAAG,0DACHgC,GAAI,oCACJC,EAAG,oDACHC,GAAI,8BACJhN,EAAG,8CACHiN,GAAI,wBACJG,EAAG,gEACHC,GAAI,0CACJC,EAAG,oDACHC,GAAI,+BAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAGzBE,cAAe,kKACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,yCAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,qDAAbC,EACAD,EACa,qDAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,6BAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,uCACAA,EAAO,GACP,mDACAA,EAAO,GACP,mDACAA,EAAO,GACP,2BAEA,wCAGflsB,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,sBAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1HyB/gB,CAAQ,EAAQ,U,kCCN1D,oFAIM,SAAUs8I,IAA+C,IAAzCugG,EAAyC,uDAA/B,EAAGqqD,EAA4B,uCAATlgK,EAAS,uCACvDtqB,GAAU,EAUd,OATI,YAAUwqL,GACVxqL,EAAS7yG,OAAOq9R,GAAqB,EAAK,EAAKr9R,OAAOq9R,GAEjD,YAAYA,KACjBlgK,EAAYkgK,GAEX,YAAYlgK,KACbA,EAAY,KAET,IAAI,IAAW,SAAAvvG,GAClB,IAAM0vQ,EAAM,YAAUtqD,GAChBA,GACEA,EAAU71G,EAAU//E,MAC5B,OAAO+/E,EAAU1nI,SAASs0B,EAAUuzQ,EAAK,CACrCtiS,MAAO,EAAG63G,SAAQjlF,iBAI9B,SAAS7D,EAASrwB,GACd,IAAQsB,EAA8BtB,EAA9BsB,MAAO63G,EAAuBn5G,EAAvBm5G,OAAQjlF,EAAel0B,EAAfk0B,WAEvB,GADAA,EAAW14B,KAAK8F,IACZ4yB,EAAW/U,OAAf,CAGK,IAAgB,IAAZg6F,EACL,OAAOjlF,EAAWz4B,WAEtBuE,EAAMsB,MAAQA,EAAQ,EACtB3J,KAAKoE,SAASiE,EAAOm5G,M,kCChCzB,IAAIj3E,EAAOzN,EAAQ,QACfD,EAAeC,EAAQ,QACvBovQ,EAAoBpvQ,EAAQ,QAE5BI,EAAaJ,EAAQ,QACrBqvQ,EAAStvQ,EAAa,8BACtBuvQ,EAAQvvQ,EAAa,6BACrBwvQ,EAAgBxvQ,EAAa,mBAAmB,IAAS0N,EAAKrV,KAAKk3Q,EAAOD,GAE1EG,EAAkBxvQ,EAAQ,QAC1ByvQ,EAAO1vQ,EAAa,cAExBO,EAAOC,QAAU,SAAkBmvQ,GAClC,GAAgC,mBAArBA,EACV,MAAM,IAAItvQ,EAAW,0BAEtB,IAAI+Z,EAAOo1P,EAAc9hQ,EAAM6hQ,EAAO9yR,WACtC,OAAO4yR,EACNj1P,EACA,EAAIs1P,EAAK,EAAGC,EAAiBroS,QAAUmV,UAAUnV,OAAS,KAC1D,IAIF,IAAIsoS,EAAY,WACf,OAAOJ,EAAc9hQ,EAAM4hQ,EAAQ7yR,YAGhCgzR,EACHA,EAAgBlvQ,EAAOC,QAAS,QAAS,CAAE97B,MAAOkrS,IAElDrvQ,EAAOC,QAAQsa,MAAQ80P,G,0lNClBxB,SAASC,EAA4C/qS,EAAIC,GAAgB,EAALD,GAChE,KAA0B,GAE9B,IAAMgrS,EAAoB,IAAI,IAAe,6CAEvCC,EAAkB,IAAI,IAAe,2CAErCC,EAAwB,IAAI,IAAe,iD,iBAO3CC,E,8BAKF,WAAYC,GAAY,oBACpB/sS,KAAK+sS,aAAeA,G,iBAKxB,WAII,OAHK/sS,KAAKgtS,kBACNhtS,KAAKitS,2BAEiBjtS,KAA1B,mB,sCAKJ,WACI,IAAIA,KAAKgtS,iBAAT,CAGA,IAYkBzrS,EAZZ2rS,EAasB,mBADV3rS,EAZUvB,KAAK+sS,oBAakDtoS,IAArBlD,EAASwoL,QAZjE/pL,KAAK+sS,eACLxoS,QAAQC,QAAQxE,KAAK+sS,cAC3B/sS,KAAKgtS,iBAAmBE,EAAW7uR,KAInC,SAAA9c,GAAK,OAYL,SAAyBA,GACrB,MAAwB,mBAAVA,EAbT4rS,CAAgB5rS,GAASA,EAAQA,EAAMguM,e,UAiBxDu9F,EAAyBvsS,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAKssS,GAA0B,KAAgBH,KAC1IG,EAAyBloS,WAAQ,KAA0B,CAAEC,MAAOioS,EAA0BhoS,QAASgoS,EAAyBvsS,Y,sBAiD1H6sS,E,8BAMF,WAAYC,EAAmBC,EAAuBC,GAA2B,oBAC7EvtS,KAAKqtS,kBAAoBA,EACzBrtS,KAAKstS,sBAAwBA,EAC7BttS,KAAKutS,4BAA8BA,EAKnCvtS,KAAKwtS,WAAa,IAAI,IAItBxtS,KAAKqrF,KAAO,IAAI,IAIhBrrF,KAAKkzC,OAAS,IAAI,IAKlBlzC,KAAKslC,MAAQ,IAAI,IAKjBtlC,KAAKytS,WAAa,IAAI,IAOtBztS,KAAKkhB,QAAU,IAAI,IAYnBlhB,KAAKw1R,QAAU,IAAI,IAcnBx1R,KAAK4rQ,OAAS,IAAI,IAKlB5rQ,KAAK0tS,aAAe,IAAI//R,IAKxB3N,KAAK2tS,YAAc3tS,KAAK0tS,aAAa7qS,IAAI0nC,KAAKvqC,KAAK0tS,cAInD1tS,KAAK4tS,kBAAmB,G,wBA6B5B,WAAe,WAEL5lR,EAAU,GAWhB,OAPAhoB,KAAK0tS,aAAar6R,QAIlB,SAAA+6B,GACIpmB,EAAQomB,GAAQ,EAAwBA,KAErCpmB,G,IA3BX,SAAgBA,GAEZxL,OAAOuqB,OAAO/mC,KAAMgoB,GAGmBxL,OAAOC,KAAKuL,GACvC3U,QAAQrT,KAAK2tS,e,uBAiC7B,WACI,OAAO3tS,KAAK4tS,kB,IAPhB,SAAgB75G,GACZA,EAAU/zL,KAAKu+R,OAASv+R,KAAKw1H,Y,sBAejC,WAEIx1H,KAAKqtS,kBAAkBJ,6B,6BAO3B,iBAE+CxoS,IAAxBzE,KAAK6tS,eAClB7tS,KAAKstS,sBACLttS,KAAK6tS,iBACG7tS,KAAKu+R,S,yBAQvB,SAAYt5R,GAGRuX,OAAOC,KAAKxX,GAEPkQ,OAIL,SAACi5B,GAAD,OAAWA,EAAKqpH,WAAW,UACtBpkJ,QAAQrT,KAAK2tS,aAEb3tS,KAAKw6E,W,yBAOd,iBAG2D/1E,IAA9BzE,KAAK8tS,qBACxB9tS,KAAKutS,4BACLvtS,KAAK8tS,uBACS9tS,KAAKw1H,Y,kBAS7B,WACI,OAAO,YAAUx1H,UAAM,OAAQ,EAAf,SAAuB,8FAEtB,OAFsB,SAEhBA,KAAKqtS,kBAAkBzB,KAFP,OA4CpB,OA1CTA,EAF6B,OAK7B5jR,EAAUxL,OAAOuqB,OAAO,GAAI/mC,KAAK+tS,YAAa,CAAE7N,aAIlD,SAAC8N,GACG,EAAKR,WAAWtrR,KAAK,CAAE8rR,kBACvB7N,OAIJ,SAAC6N,GACG,EAAKJ,kBAAmB,EACxB,EAAKviN,KAAKnpE,KAAK,CAAE8rR,kBACjB5P,SAIJ,SAAC4P,GACG,EAAK96P,OAAOhxB,KAAK,CAAE8rR,kBACnBr/L,QAIJ,SAACq/L,GACG,EAAKJ,kBAAmB,EACxB,EAAKtoQ,MAAMpjB,KAAK,CAAE8rR,kBAClB5N,aAGJ,WACI,EAAKqN,WAAWvrR,QAChBi3G,UAGJ,WACI,EAAKj4G,QAAQgB,UAxCc,SA4Cd0pR,EAAKrN,KAAKv2Q,GA5CI,aA8C/B,UAFE4U,EA5C6B,QA+C/B58B,KAAKw1R,QAAQtzQ,KAAK0a,EAAOr7B,OAGzBvB,KAAK4rQ,OAAO1pP,KAAK0a,EAAO44F,SAlDO,kBAoD5B54F,GApD4B,gD,qBA+D3C,SAAQA,GACJ,OAAO,YAAU58B,UAAM,OAAQ,EAAf,SAAuB,gFAC9BA,KAAK4tS,iBADyB,iDAItB,OAJsB,SAIhB5tS,KAAKqtS,kBAAkBzB,KAJP,cAK9BtmQ,MAAM1I,GALwB,gD,oBAiB3C,SAAO5U,GACH,OAAO,YAAUhoB,UAAM,OAAQ,EAAf,SAAuB,0FAC/BgoB,IACAhoB,KAAK+tS,YAAc/lR,GAElBhoB,KAAK4tS,iBAJyB,iDAOtB,OAPsB,SAOhB5tS,KAAKqtS,kBAAkBzB,KAPP,OAO7BA,EAP6B,OAS7BqC,EAAajuS,KAAK+tS,YAElBG,EAAmB1xR,OAAOC,KAAKwxR,GAChC94R,OAIL,SAACwH,GAAD,OAASivR,EAAK1K,qBAAqBvkR,KAC9BlH,OAKL,SAACsI,EAAKpB,GAEF,OADAoB,EAAIpB,GAAOsxR,EAAWtxR,GACfoB,GACY,IACvB6tR,EAAKpxN,OAAO0zN,GA1BuB,kD,UA8B/Cd,EAAc7sS,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK4sS,GAAe,KAAyBN,GAA2B,KAAyBF,GAAkB,KAAyBC,KACjNO,EAAcjnS,UAAO,KAAyB,CAAEzF,KAAM0sS,EAAezsS,UAAW,CAAC,CAAC,SAAUwB,OAAQ,CAAE4rS,YAAa,cAAeI,YAAa,cAAev3O,MAAO,QAASqlO,UAAW,YAAazyM,KAAM,OAAQ+C,KAAM,OAAQ9nB,OAAQ,SAAUswN,KAAM,OAAQuG,SAAU,WAAYrnK,SAAU,WAAY4pC,MAAO,QAASrxI,OAAQ,SAAUgyB,MAAO,QAAS90C,MAAO,QAAS8qE,QAAS,UAAWioN,WAAY,aAAczyR,SAAU,WAAYgzR,KAAM,OAAQvG,UAAW,YAAauI,UAAW,YAAarI,YAAa,cAAev1I,MAAO,QAASs2I,iBAAkB,mBAAoB/zP,UAAW,YAAas7P,WAAY,aAAcnC,kBAAmB,oBAAqBoC,eAAgB,iBAAkBC,cAAe,gBAAiBC,uBAAwB,yBAA0BC,uBAAwB,yBAA0B9B,kBAAmB,oBAAqBC,iBAAkB,mBAAoB+B,kBAAmB,oBAAqBE,iBAAkB,mBAAoB9B,mBAAoB,qBAAsBC,kBAAmB,oBAAqB4B,uBAAwB,yBAA0BE,sBAAuB,wBAAyBjC,eAAgB,iBAAkBQ,eAAgB,iBAAkB0B,aAAc,eAAgBC,YAAa,cAAetD,gBAAiB,kBAAmBD,gBAAiB,kBAAmBE,qBAAsB,uBAAwBsD,oBAAqB,sBAAuBP,WAAY,aAAc1D,SAAU,WAAYE,WAAY,aAAcC,YAAa,cAAeF,SAAU,WAAY5C,iBAAkB,mBAAoBtqQ,WAAY,aAAcmxQ,aAAc,eAAgBC,cAAe,gBAAiB/F,gBAAiB,kBAAmBgG,eAAgB,iBAAkBC,kBAAmB,oBAAqBrF,cAAe,gBAAiBC,oBAAqB,sBAAuBI,sBAAuB,wBAAyBoF,iBAAkB,mBAAoBwN,eAAgB,iBAAkBC,qBAAsB,wBAA0B3rR,QAAS,CAAEqrR,WAAY,aAAcniN,KAAM,OAAQn4C,OAAQ,SAAU5N,MAAO,QAASmoQ,WAAY,aAAcvsR,QAAS,UAAWs0Q,QAAS,UAAW5pB,OAAQ,UAAYtpQ,SAAU,CAAC,MAA8B8D,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAgCqB,EAAIC,KAAU4E,cAAe,EAAGwiB,gBAAiB,I,sBAqf50EolR,E,8BAKF,WAAYlvR,EAAkB4sP,GAAQ,oBAClC9rQ,KAAKkf,iBAAmBA,EACxBlf,KAAK8rQ,SAAWA,EAYhB9rQ,KAAKw1R,QAAU,IAAI,IAcnBx1R,KAAK4rQ,OAAS,IAAI,K,iBAQtB,SAAS5jP,GACL,GAAIA,aAAmBolR,EACnBptS,KAAKquS,aAAermR,OAEnB,GAAIzd,MAAMyL,QAAQgS,GAAU,CAC7BhoB,KAAK+tS,YAAc,GADU,kBAE4C/lR,EAF5C,GAE5BhoB,KAAK+tS,YAAYn3O,MAFW,KAEJ52D,KAAK+tS,YAAYvkN,KAFb,KAEmBxpF,KAAK+tS,YAAYhZ,KAFpC,UAK7B/0R,KAAK+tS,YAAc/lR,I,sBAS3B,WACI,IAAKhoB,KAAKquS,aAAc,CAEpB,IAAMvpS,EAAU9E,KAAK8rQ,SAAS/qP,wBAAwBqsR,GACtDptS,KAAKsuS,QAAUtuS,KAAKkf,iBAAiB8B,gBAAgBlc,GACrD9E,KAAKquS,aAAeruS,KAAKsuS,QAAQx6Q,Y,yBAQzC,WACQ9zB,KAAKsuS,SACLtuS,KAAKsuS,QAAQptR,Y,qBAUrB,SAAQoH,GAAK,WAIT,GAHAA,EAAM4E,iBACN5E,EAAMimR,2BACNjmR,EAAMsH,kBACD5vB,KAAKquS,aAAV,CAEIruS,KAAK+tS,cACL/tS,KAAKquS,aAAaN,YAAc/tS,KAAK+tS,aAGzC,IAAMS,EAAa,IAAI,IACvBxuS,KAAKquS,aAAa7Y,QAAQv9P,eAAej0B,KAAK,YAAUwqS,IAAatqS,UAIrE,SAAAjE,GAAC,OAAI,EAAKu1R,QAAQtzQ,KAAKjiB,KACvBD,KAAKquS,aAAaziC,OAAO3zO,eAAej0B,KAAK,YAAUwqS,IAAatqS,UAIpE,SAAAjE,GAAC,OAAI,EAAK2rQ,OAAO1pP,KAAKjiB,KACtBD,KAAKquS,aAAa9P,OAAOlgR,KAGzB,kBAAMmwR,EAAW3qS,c,UAGzBuqS,EAAc7tS,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK4tS,GAAe,KAAyB,KAA0B,KAAyB,OACrKA,EAAc3tS,UAAO,KAAyB,CAAEC,KAAM0tS,EAAeztS,UAAW,CAAC,CAAC,GAAI,OAAQ,KAAM6X,aAAc,SAAoC7W,EAAIC,GAAgB,EAALD,GAC7J,KAAkB,QAAS,SAAgDmwB,GAAU,OAAOlwB,EAAIq0C,QAAQnkB,MACvG3vB,OAAQ,CAAEypS,KAAM,QAAUzpR,QAAS,CAAEqzQ,QAAS,UAAW5pB,OAAQ,Y,sBAmKpE6iC,E,YACF,iCAIIzuS,KAAKo8R,YAAc,CACf/wR,QAIA,SAAAugS,GAAI,OAAIA,EAAK/V,kBACb7tQ,QAAS,CAAEs0Q,iBAAiB,IAKhCt8R,KAAK42D,MAAQ,CACTvrD,QAIA,SAAAugS,GAAI,OAAIA,EAAKlsE,YAEb13M,QAAS,CAAE4uC,MAAO,MAMtB52D,KAAKszD,QAAU,CACXjoD,QAIA,SAAAugS,GAAI,OAAIA,EAAKvK,oBAEbr5Q,QAAS,CAAEwhE,KAAM,MASrBxpF,KAAK0sI,QAAU,CACXrhI,QAIA,SAAAugS,GAAI,OAAIA,EAAKlW,cAEb1tQ,QAAS,CAAEu1Q,mBAAmB,IAKlCv9R,KAAKq9R,cAAgB,CACjBhyR,QAIA,SAAAugS,GAAI,OAAIA,EAAKrW,oBACbvtQ,QAAS,CAAEu1Q,mBAAmB,IAKlCv9R,KAAKs9R,aAAe,CAChBjyR,QAIA,SAAAugS,GAAI,OAAIA,EAAKnW,mBACbztQ,QAAS,CAAEw1Q,kBAAkB,IAKjCx9R,KAAKykE,OAAS,CACVp5D,QAIA,SAAAugS,GAAI,OAAIA,EAAK9rE,aAEb93M,QAAS,CAAEy8C,OAAQ,Q,OAI/BgqO,EAAkBluS,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKiuS,IAClFA,EAAkB7pS,WAAQ,KAA0B,CAAEC,MAAO4pS,EAAmB3pS,QAAS2pS,EAAkBluS,UAAMqmB,WAAY,SAC1G6nR,EAAkBntL,gBAAkB,aAAmB,CAAEx8G,QAAS,WAAuC,OAAO,IAAI2pS,GAAwB5pS,MAAO4pS,EAAmB7nR,WAAY,S,sBA0D/L8nR,E,YACF,iCACI1uS,KAAKM,SAAW,O,OAGxBouS,EAAoBnuS,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKkuS,IACtFA,EAAoBvoS,UAAO,KAAyB,CAAEzF,KAAMguS,EAAqB/tS,UAAW,CAAC,CAAC,gBAAiBwB,OAAQ,CAAE7B,SAAU,YAAc8F,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,qBAAsBhG,SAAU,SAAsCqB,EAAIC,GAAgB,EAALD,GAC9P,KAAkB,EAAG+qS,EAA6C,EAAG,EAAG,eAAgB,GACjF,EAAL/qS,GACF,KAAkB,mBAAoBC,EAAItB,WACzCiG,WAAY,CAAC,KAA0BC,cAAe,EAAGwiB,gBAAiB,I,sBAsD7E2lR,E,8BAUF,WAAY7iC,EAAU3sP,EAAUinH,EAAKx/H,EAAaymS,EAAmBuB,EAAaC,GAAa,oBAC3F7uS,KAAK8rQ,SAAWA,EAChB9rQ,KAAKmf,SAAWA,EAChBnf,KAAKomI,IAAMA,EACXpmI,KAAK4G,YAAcA,EACnB5G,KAAKqtS,kBAAoBA,EACzBrtS,KAAK4uS,YAAcA,EACnB5uS,KAAK6uS,cAAgBA,EACrB7uS,KAAK8gK,UAAY,IAAI,K,uBAOzB,WAEI9gK,KAAKwsB,OAASxsB,KAAKwsB,QAAUxsB,KAAK4uS,YAAYt7O,QAEzCtzD,KAAK6uS,cAAcr0N,OAAOx6E,KAAKwsB,OAAOxE,SAE3ChoB,KAAK6uS,cAAc37P,OAAOlvC,KAAK,YAAUhE,KAAK8gK,YAAY58J,UAAUlE,KAAK8uS,WAAWvkQ,KAAKvqC,OACzFA,KAAK6uS,cAAcrB,WAAWxpS,KAAK,YAAUhE,KAAK8gK,YAAY58J,UAAUlE,KAAK+uS,eAAexkQ,KAAKvqC,OACjGA,KAAK6uS,cAAc3tR,QAAQld,KAAK,YAAUhE,KAAK8gK,YAAY58J,UAAUlE,KAAKgvS,YAAYzkQ,KAAKvqC,S,yBAO/F,WACIA,KAAK8gK,UAAUj9J,S,wBASnB,WACI,OAAO,YAAU7D,UAAM,OAAQ,EAAf,SAAuB,mFAUtB,OARRA,KAAKivS,qBACNjvS,KAAKivS,mBAAqBjvS,KAAKkvS,yBAHA,SAUhBlvS,KAAKqtS,kBAAkBzB,KAVP,OAgBnC,IAHMuD,EAA8BnvS,KAAKwsB,OAASnhB,QAbf,QAgB5B8jS,EAASz6N,YACZy6N,EAAS1tR,YAAY0tR,EAASz6N,YAElCy6N,EAASr3R,YAAY9X,KAAKivS,mBAAmB30Q,SAAS13B,eAnBnB,gD,4BA4B3C,WACS5C,KAAKivS,oBAGVjvS,KAAKomI,IAAIjlH,WAAWnhB,KAAKivS,mBAAmB7tR,Y,yBAQhD,WACSphB,KAAKivS,qBAGVjvS,KAAKomI,IAAI/kH,WAAWrhB,KAAKivS,mBAAmB7tR,UAC5CphB,KAAKivS,mBAAmB/tR,UACxBlhB,KAAKivS,wBAAqB,K,mCAO9B,WAGI,IAMMpuR,EANU7gB,KAAK8rQ,SAAS/qP,wBAAwB2tR,GAMzBppS,OAAOtF,KAAKmf,SAAU,IAGnD,OADA0B,EAAaiT,SAASxzB,SAAWN,KAAK4G,YAC/Bia,M,UAGf8tR,EAAoBpuS,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKmuS,GAAqB,KAAyB,KAAkC,KAAyB,KAAkB,KAAyB,KAAwB,KAAyB,KAAqB,KAAyB7B,GAA2B,KAAyB2B,GAAoB,KAAyBrB,EAAe,KACzbuB,EAAoBluS,UAAO,KAAyB,CAAEC,KAAMiuS,EAAqBhuS,UAAW,CAAC,CAAC,GAAI,aAAc,KAAMwB,OAAQ,CAAEqqB,OAAQ,CAAC,aAAc,a,KAsGvJ,SAAS4iR,IACL,OAAO,gD,qBAELC,E,4FAKF,WAA2B,IAAZrnR,EAAY,uDAAF,GACrB,MAAO,CACH+2F,SAAUswL,EACVl9Q,UAAW,CACP26Q,EACA,CAAEvqS,QAASoqS,EAAmB/zR,SAAUoP,EAAQsnR,aAAeF,GAC/D,CAAE7sS,QAASqqS,EAAiBh0R,SAAUoP,EAAQunR,aAAc,GAC5D,CAAEhtS,QAASsqS,EAAuBj0R,SAAUoP,EAAQwnR,mBAAoB,O,sBAQpF,WAA4B,IAAZxnR,EAAY,uDAAF,GACtB,MAAO,CACH+2F,SAAUswL,EACVl9Q,UAAW,GAAF,mBACFnK,EAAQsnR,YAAc,CACrBxC,EACA,CAAEvqS,QAASoqS,EAAmB/zR,SAAUoP,EAAQsnR,cAChD,IAJC,iBAKqB7qS,IAAvBujB,EAAQunR,WAA2B,CAClC,CAAEhtS,QAASqqS,EAAiBh0R,SAAUoP,EAAQunR,aAC9C,IAPC,iBAQ2B9qS,IAA7BujB,EAAQwnR,iBAAiC,CACxC,CAAEjtS,QAASsqS,EAAuBj0R,SAAUoP,EAAQwnR,mBACpD,U,UAKpBH,EAAkB9uS,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAK6uS,IAClFA,EAAkBn2R,UAAO,KAAwB,CAAExY,KAAM2uS,IACzDA,EAAkBl2R,UAAO,KAAwB,CAAEC,QAAS,CAAC,CACjD,Q,wCChqDZ,IAAIq2R,EAAiB3yQ,EAAQ,QACzB4yQ,EAAQ5yQ,EAAQ,QAChB2Q,EAAU3Q,EAAQ,QAClB1oB,EAAMoI,OAAOkW,UAAUgb,eAEvBiiQ,EAAwB,CACxBC,SAAU,SAAkBn2N,GACxB,OAAOA,EAAS,MAEpBo2N,MAAO,QACP/vM,QAAS,SAAiBrmB,EAAQ98D,GAC9B,OAAO88D,EAAS,IAAM98D,EAAM,KAEhCm5P,OAAQ,SAAgBr8L,GACpB,OAAOA,IAIXzjE,EAAUzL,MAAMyL,QAChBpS,EAAO2G,MAAMmoB,UAAU9uB,KACvBksS,EAAc,SAAUngQ,EAAKogQ,GAC7BnsS,EAAK+zC,MAAMhI,EAAK35B,EAAQ+5R,GAAgBA,EAAe,CAACA,KAGxDC,EAAQt1P,KAAKhoB,UAAU6tB,YAEvB8tD,EAAgB5gE,EAAO,QACvB1mB,EAAW,CACX86J,gBAAgB,EAChBouH,WAAW,EACXC,kBAAkB,EAClBtuH,YAAa,UACbhzI,QAAS,QACTuhQ,iBAAiB,EACjBl4J,UAAW,IACXjpG,QAAQ,EACRohQ,iBAAiB,EACjBC,QAASX,EAAM1gQ,OACfshQ,kBAAkB,EAClBvtR,OAAQsrF,EACR52D,UAAWhK,EAAQs4L,WAAW13H,GAE9BvO,SAAS,EACTywM,cAAe,SAAuBt2P,GAClC,OAAO+1P,EAAM96Q,KAAK+kB,IAEtBu2P,WAAW,EACXC,oBAAoB,GAWpBC,EAAW,GAEXj3Q,EAAY,SAASA,EACrByzN,EACAzzK,EACAk3N,EACAC,EACAV,EACAO,EACAD,EACAJ,EACAC,EACAl7R,EACA0G,EACAo0R,EACAM,EACAxtR,EACA00B,EACA64P,EACA1hQ,EACAiiQ,GAOA,IALA,IA9BuD5wS,EA8BnD8d,EAAMmvO,EAEN4jD,EAAQD,EACRrpM,EAAO,EACPupM,GAAW,OAC0B,KAAjCD,EAAQA,EAAM5+R,IAAIw+R,MAAkCK,GAAU,CAElE,IAAI7zH,EAAM4zH,EAAM5+R,IAAIg7O,GAEpB,GADA1lJ,GAAQ,OACW,IAAR01E,EAAqB,CAC5B,GAAIA,IAAQ11E,EACR,MAAM,IAAI+lC,WAAW,uBAErBwjK,GAAW,OAGgB,IAAxBD,EAAM5+R,IAAIw+R,KACjBlpM,EAAO,GAiBf,GAbsB,mBAAXryF,EACP4I,EAAM5I,EAAOskE,EAAQ17D,GACdA,aAAe28B,KACtB38B,EAAMwyR,EAAcxyR,GACW,UAAxB4yR,GAAmC36R,EAAQ+H,KAClDA,EAAM2xR,EAAMt/P,SAASryB,EAAK,SAAUxc,GAChC,OAAIA,aAAiBm5C,KACV61P,EAAchvS,GAElBA,KAIH,OAARwc,EAAc,CACd,GAAI0yR,EACA,OAAOJ,IAAYC,EAAmBD,EAAQ52N,EAAQ1yD,EAASspR,QAASzhQ,EAAS,MAAO7rB,GAAU02D,EAGtG17D,EAAM,GAGV,GAvEoB,iBADmC9d,EAwE7B8d,IAtEN,iBAAN9d,GACM,kBAANA,GACM,iBAANA,GACM,iBAANA,GAmEoByvS,EAAMz/P,SAASlyB,GAC7C,OAAIsyR,EAEO,CAAC54P,EADO64P,EAAmB72N,EAAS42N,EAAQ52N,EAAQ1yD,EAASspR,QAASzhQ,EAAS,MAAO7rB,IAC/D,IAAM00B,EAAU44P,EAAQtyR,EAAKgJ,EAASspR,QAASzhQ,EAAS,QAAS7rB,KAE5F,CAAC00B,EAAUgiC,GAAU,IAAMhiC,EAAUpI,OAAOtxB,KAGvD,IAMIizR,EANAl9R,EAAS,GAEb,QAAmB,IAARiK,EACP,OAAOjK,EAIX,GAA4B,UAAxB68R,GAAmC36R,EAAQ+H,GAEvCuyR,GAAoBD,IACpBtyR,EAAM2xR,EAAMt/P,SAASryB,EAAKsyR,IAE9BW,EAAU,CAAC,CAAEzvS,MAAOwc,EAAI5Z,OAAS,EAAI4Z,EAAIiyB,KAAK,MAAQ,UAAO,SAC1D,GAAIh6B,EAAQb,GACf67R,EAAU77R,MACP,CACH,IAAIsH,EAAOD,OAAOC,KAAKsB,GACvBizR,EAAUn1R,EAAOY,EAAKZ,KAAKA,GAAQY,EAGvC,IAAIw0R,EAAgBb,EAAkB32N,EAAOj4E,QAAQ,MAAO,OAASi4E,EAEjEy3N,EAAiBN,GAAkB56R,EAAQ+H,IAAuB,IAAfA,EAAI5Z,OAAe8sS,EAAgB,KAAOA,EAEjG,GAAIf,GAAoBl6R,EAAQ+H,IAAuB,IAAfA,EAAI5Z,OACxC,OAAO+sS,EAAiB,KAG5B,IAAK,IAAI38R,EAAI,EAAGA,EAAIy8R,EAAQ7sS,SAAUoQ,EAAG,CACrC,IAAIoI,EAAMq0R,EAAQz8R,GACdhT,EAAuB,iBAARob,QAAyC,IAAdA,EAAIpb,MAAwBob,EAAIpb,MAAQwc,EAAIpB,GAE1F,IAAI6zR,GAAuB,OAAVjvS,EAAjB,CAIA,IAAI4vS,EAAalB,GAAaG,EAAkBzzR,EAAInb,QAAQ,MAAO,OAASmb,EACxEy0R,EAAYp7R,EAAQ+H,GACa,mBAAxB4yR,EAAqCA,EAAoBO,EAAgBC,GAAcD,EAC9FA,GAAkBjB,EAAY,IAAMkB,EAAa,IAAMA,EAAa,KAE1EN,EAAYx8R,IAAI64O,EAAQ1lJ,GACxB,IAAI6pM,EAAmB5B,IACvB4B,EAAiBh9R,IAAIq8R,EAAUG,GAC/Bf,EAAYh8R,EAAQ2lB,EAChBl4B,EACA6vS,EACAT,EACAC,EACAV,EACAO,EACAD,EACAJ,EACwB,UAAxBO,GAAmCL,GAAoBt6R,EAAQ+H,GAAO,KAAOsyR,EAC7El7R,EACA0G,EACAo0R,EACAM,EACAxtR,EACA00B,EACA64P,EACA1hQ,EACAyiQ,KAIR,OAAOv9R,GA6EXspB,EAAOC,QAAU,SAAU6vN,EAAQp3N,GAC/B,IAGIk7Q,EAHAjzR,EAAMmvO,EACNllO,EA5EwB,SAAmC8N,GAC/D,IAAKA,EACD,OAAO/O,EAGX,QAAqC,IAA1B+O,EAAKo6Q,kBAAqE,kBAA1Bp6Q,EAAKo6Q,iBAC5D,MAAM,IAAI19P,UAAU,0EAGxB,QAAoC,IAAzB1c,EAAKs6Q,iBAAmE,kBAAzBt6Q,EAAKs6Q,gBAC3D,MAAM,IAAI59P,UAAU,yEAGxB,GAAI1c,QAAKu6Q,SAAmF,mBAAjBv6Q,EAAKu6Q,QAC5E,MAAM,IAAI79P,UAAU,iCAGxB,IAAI5D,EAAU9Y,EAAK8Y,SAAW7nB,EAAS6nB,QACvC,QAA4B,IAAjB9Y,EAAK8Y,SAA4C,UAAjB9Y,EAAK8Y,SAAwC,eAAjB9Y,EAAK8Y,QACxE,MAAM,IAAI4D,UAAU,qEAGxB,IAAIzvB,EAAS0qB,EAAO,QACpB,QAA2B,IAAhB3X,EAAK/S,OAAwB,CACpC,IAAK3O,EAAI8gB,KAAKuY,EAAQs4L,WAAYjwM,EAAK/S,QACnC,MAAM,IAAIyvB,UAAU,mCAExBzvB,EAAS+S,EAAK/S,OAElB,IAOI6+J,EAPAnqI,EAAYhK,EAAQs4L,WAAWhjN,GAE/B5N,EAAS4R,EAAS5R,OActB,IAb2B,mBAAhB2gB,EAAK3gB,QAAyBa,EAAQ8f,EAAK3gB,WAClDA,EAAS2gB,EAAK3gB,QAKdysK,EADA9rJ,EAAK8rJ,eAAe+tH,EACN75Q,EAAK8rJ,YACZ,YAAa9rJ,EACNA,EAAKgqE,QAAU,UAAY,SAE3B/4E,EAAS66J,YAGvB,mBAAoB9rJ,GAAuC,kBAAxBA,EAAK86Q,eACxC,MAAM,IAAIp+P,UAAU,iDAKxB,MAAO,CACHqvI,eAA+C,kBAAxB/rJ,EAAK+rJ,eAA+B/rJ,EAAK+rJ,eAAiB96J,EAAS86J,eAC1FouH,eAJsC,IAAnBn6Q,EAAKm6Q,WAAqD,IAAzBn6Q,EAAKs6Q,iBAAkCrpR,EAASkpR,YAAcn6Q,EAAKm6Q,UAKvHC,iBAAmD,kBAA1Bp6Q,EAAKo6Q,mBAAmCp6Q,EAAKo6Q,iBAAmBnpR,EAASmpR,iBAClGtuH,YAAaA,EACbhzI,QAASA,EACTuhQ,gBAAiD,kBAAzBr6Q,EAAKq6Q,gBAAgCr6Q,EAAKq6Q,gBAAkBppR,EAASopR,gBAC7FS,eAAgB96Q,EAAK86Q,eACrB34J,eAAqC,IAAnBniH,EAAKmiH,UAA4BlxH,EAASkxH,UAAYniH,EAAKmiH,UAC7EjpG,OAA+B,kBAAhBlZ,EAAKkZ,OAAuBlZ,EAAKkZ,OAASjoB,EAASioB,OAClEohQ,gBAAiD,kBAAzBt6Q,EAAKs6Q,gBAAgCt6Q,EAAKs6Q,gBAAkBrpR,EAASqpR,gBAC7FC,QAAiC,mBAAjBv6Q,EAAKu6Q,QAAyBv6Q,EAAKu6Q,QAAUtpR,EAASspR,QACtEC,iBAAmD,kBAA1Bx6Q,EAAKw6Q,iBAAiCx6Q,EAAKw6Q,iBAAmBvpR,EAASupR,iBAChGn7R,OAAQA,EACR4N,OAAQA,EACR00B,UAAWA,EACX84P,cAA6C,mBAAvBz6Q,EAAKy6Q,cAA+Bz6Q,EAAKy6Q,cAAgBxpR,EAASwpR,cACxFC,UAAqC,kBAAnB16Q,EAAK06Q,UAA0B16Q,EAAK06Q,UAAYzpR,EAASypR,UAC3E30R,KAA2B,mBAAdia,EAAKja,KAAsBia,EAAKja,KAAO,KACpD40R,mBAAuD,kBAA5B36Q,EAAK26Q,mBAAmC36Q,EAAK26Q,mBAAqB1pR,EAAS0pR,oBAM5Fa,CAA0Bx7Q,GAKV,mBAAnB9N,EAAQ7S,OAEf4I,GADA5I,EAAS6S,EAAQ7S,QACJ,GAAI4I,GACV/H,EAAQgS,EAAQ7S,UAEvB67R,EADShpR,EAAQ7S,QAIrB,IAAIsH,EAAO,GAEX,GAAmB,iBAARsB,GAA4B,OAARA,EAC3B,MAAO,GAGX,IAAI4yR,EAAsBhB,EAAsB3nR,EAAQ45J,aACpDgvH,EAAyC,UAAxBD,GAAmC3oR,EAAQ4oR,eAE3DI,IACDA,EAAUx0R,OAAOC,KAAKsB,IAGtBiK,EAAQnM,MACRm1R,EAAQn1R,KAAKmM,EAAQnM,MAIzB,IADA,IAAIg1R,EAAcpB,IACT5nS,EAAI,EAAGA,EAAImpS,EAAQ7sS,SAAU0D,EAAG,CACrC,IAAI8U,EAAMq0R,EAAQnpS,GAEdmgB,EAAQwoR,WAA0B,OAAbzyR,EAAIpB,IAG7BmzR,EAAYrzR,EAAMgd,EACd1b,EAAIpB,GACJA,EACAg0R,EACAC,EACA5oR,EAAQkoR,iBACRloR,EAAQyoR,mBACRzoR,EAAQwoR,UACRxoR,EAAQooR,gBACRpoR,EAAQgnB,OAAShnB,EAAQqoR,QAAU,KACnCroR,EAAQ7S,OACR6S,EAAQnM,KACRmM,EAAQioR,UACRjoR,EAAQuoR,cACRvoR,EAAQjF,OACRiF,EAAQyvB,UACRzvB,EAAQsoR,iBACRtoR,EAAQ4mB,QACRiiQ,IAIR,IAAIU,EAAS90R,EAAKuzB,KAAKhoB,EAAQiwH,WAC3Bx+D,GAAoC,IAA3BzxD,EAAQ65J,eAA0B,IAAM,GAYrD,OAVI75J,EAAQmoR,kBAGJ12N,GAFoB,eAApBzxD,EAAQ4mB,QAEE,uBAGA,mBAIX2iQ,EAAOptS,OAAS,EAAIs1E,EAAS83N,EAAS,K,kCC1VjDn0Q,EAAOC,QAAUm0Q,W,kCCFjB,IAAI/4N,EAAaz4E,MAAQA,KAAKy4E,WAAe,WACzC,IAAI,EAAgB,SAAUzgE,EAAGgE,GAI7B,OAHA,EAAgBQ,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAE5B,OAAO,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnC,EAAcA,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,IAV1C,GAezCqjE,EAA2B,SAAUr0H,GAErC,SAASq0H,IACL,OAAkB,OAAXr0H,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAuB/D,OAzBAy4E,EAAUo0H,EAAyBr0H,GAInCq0H,EAAwBn6K,UAAUy5G,MAAQ,SAAUppE,GAChD/iE,KAAK8b,QAAS,EACd9b,KAAKmlK,eAAY1gK,EACjB,IACIuwB,EADA03G,EAAU1sI,KAAK0sI,QAEf/iI,GAAS,EACTuN,EAAQw1H,EAAQvoI,OACpB4+D,EAASA,GAAU2pE,EAAQ/3H,QAC3B,GACI,GAAIqgB,EAAQ+tC,EAAOspE,QAAQtpE,EAAO16D,MAAO06D,EAAOqqB,OAC5C,cAEGzjF,EAAQuN,IAAU6rD,EAAS2pE,EAAQ/3H,UAE9C,GADA3U,KAAK8b,QAAS,EACVkZ,EAAO,CACP,OAASrrB,EAAQuN,IAAU6rD,EAAS2pE,EAAQ/3H,UACxCouD,EAAOntD,cAEX,MAAMof,IAGP63K,EA1BoB,CADR,EAAQ,QA4BZoB,gBACnB5wK,EAAQwvK,wBAA0BA,G,4aCxBlC,IAAMptM,EAAM,CAAC,SACPC,EAAM,WAAc,MAAO,CAAE8xG,cAAe,MAC5CF,EAAM,CAAC,KACPmgM,EAA4B,IAAI,IAAe,4BAA6B,CAC9E7qR,WAAY,OACZ9hB,QAEJ,WACI,MAAO,CACH+wD,MAAO,aAIX+7C,EAAe,EAMb8/L,EAAyC,CAC3CnvS,QAAS,IACTC,YAAa,aAAW,kBAAMmvS,IAC9BjoR,OAAO,GAGLkoR,E,YACF,WAEArrR,EAEAhlB,GAAK,oBACDvB,KAAKumB,OAASA,EACdvmB,KAAKuB,MAAQA,IAQfswS,EAAkB,IAAI,IAAe,iB,iBAKrCC,E,8BACF,WAAY9iL,GAAe,oBACvBhvH,KAAKgvH,gBAAkBA,EAEvBhvH,KAAKkgH,OAAS,KAEdlgH,KAAKkB,MAAL,0BAAgC0wG,KAEhC5xG,KAAK4/B,UAAY,KAEjB5/B,KAAK6hB,gBAAiB,EAEtB7hB,KAAK+xS,eAAiB,QAEtB/xS,KAAKmgH,WAAY,EAEjBngH,KAAKsyG,WAAY,EAEjBtyG,KAAKgyS,8BAAgC,aAKrChyS,KAAKy/G,UAAY,aAMjBz/G,KAAK+P,OAAS,IAAI,K,iBAGtB,WAAa,OAAO/P,KAAKkB,O,IACzB,SAASK,GACLvB,KAAKkB,MAAQK,EACbvB,KAAKiyS,4B,yBAGT,WACI,OAAOjyS,KAAK+xS,gB,IAEhB,SAAkB9xS,GACdD,KAAK+xS,eAAuB,WAAN9xS,EAAiB,SAAW,QAClDD,KAAKkyS,wB,iBAQT,WAAc,OAAOlyS,KAAKkgH,Q,IAC1B,SAAUgyB,GACFlyI,KAAKkgH,SAAWgyB,IAEhBlyI,KAAKkgH,OAASgyB,EACdlyI,KAAKmyS,gCACLnyS,KAAKoyS,+B,uCAGb,WACQpyS,KAAK4/B,YAAc5/B,KAAK4/B,UAAUoyE,UAClChyG,KAAK4/B,UAAUoyE,SAAU,K,oBAOjC,WAAiB,OAAOhyG,KAAK4/B,W,IAC7B,SAAa3Q,GACTjvB,KAAK4/B,UAAY3Q,EACjBjvB,KAAKuB,MAAQ0tB,EAAWA,EAAS1tB,MAAQ,KACzCvB,KAAKoyS,8B,oBAGT,WAAiB,OAAOpyS,KAAKmgH,W,IAC7B,SAAa5+G,GACTvB,KAAKmgH,UAAY,YAAsB5+G,GACvCvB,KAAKkyS,wB,oBAGT,WAAiB,OAAOlyS,KAAKsyG,W,IAC7B,SAAa/wG,GACTvB,KAAKsyG,UAAY,YAAsB/wG,GACvCvB,KAAKkyS,wB,gCAMT,WAIIlyS,KAAK6hB,gBAAiB,I,oBAM1B,WACQ7hB,KAAKy/G,WACLz/G,KAAKy/G,c,qCAGb,WAAuB,WACfz/G,KAAKigH,SACLjgH,KAAKigH,QAAQ5sG,QAAQ,SAAAgtG,GACjBA,EAAMl/G,KAAO,EAAKA,KAClBk/G,EAAMgyL,oB,2CAKlB,WAA6B,WAGrBryS,KAAKigH,UADoC,OAAnBjgH,KAAK4/B,WAAsB5/B,KAAK4/B,UAAUr+B,QAAUvB,KAAKkgH,UAE/ElgH,KAAK4/B,UAAY,KACjB5/B,KAAKigH,QAAQ5sG,QAAQ,SAAAgtG,GACjBA,EAAMrO,QAAU,EAAKzwG,QAAU8+G,EAAM9+G,MACjC8+G,EAAMrO,UACN,EAAKpyE,UAAYygF,Q,8BAMjC,WACQrgH,KAAK6hB,gBACL7hB,KAAK+P,OAAOmS,KAAK,IAAI0vR,EAAe5xS,KAAK4/B,UAAW5/B,KAAKkgH,W,iCAGjE,WACQlgH,KAAKigH,SACLjgH,KAAKigH,QAAQ5sG,QAAQ,SAAAgtG,GAAK,OAAIA,EAAMgyL,oB,wBAO5C,SAAW9wS,GACPvB,KAAKuB,MAAQA,EACbvB,KAAKgvH,gBAAgBh4G,iB,8BAOzB,SAAiBhI,GACbhP,KAAKgyS,8BAAgChjS,I,+BAOzC,SAAkBA,GACdhP,KAAKy/G,UAAYzwG,I,8BAMrB,SAAiB+d,GACb/sB,KAAKgtB,SAAWD,EAChB/sB,KAAKgvH,gBAAgBh4G,mB,UAG7B86R,EAAmBvxS,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKsxS,GAAoB,KAAyB,OACjIA,EAAmBrxS,UAAO,KAAyB,CAAEC,KAAMoxS,EAAoB3vS,OAAQ,CAAEhB,KAAM,OAAQqxG,cAAe,gBAAiBjxG,MAAO,QAAS0tB,SAAU,WAAYjC,SAAU,WAAYimF,SAAU,WAAYp9C,MAAO,SAAW1zC,QAAS,CAAEpS,OAAQ,Y,sBAoCxP4hS,E,gHAAsBG,G,OAE5BH,EAAcpxS,UAAO,SAA+BC,GAAK,OAAO8xS,EAA2B9xS,GAAKmxS,IAChGA,EAAclxS,UAAO,KAAyB,CAAEC,KAAMixS,EAAehxS,UAAW,CAAC,CAAC,oBAAqBe,eAAgB,SAAsCC,EAAIC,EAAKC,GAG9J,IAAIC,EAH+K,EAALH,GAC9K,KAAsBE,EAAU0wS,EAAgB,GACzC,EAAL5wS,GAEF,KAAsBG,EAAK,UAA0BF,EAAIq+G,QAAUn+G,IAClEiB,UAAW,CAAC,OAAQ,aAAc,EAAG,mBAAoB2V,SAAU,CAAC,iBAAkBpW,SAAU,CAAC,KAA0B,CACxHovS,EACA,CAAEnvS,QAASsvS,EAAiBrvS,YAAamvS,KACzC,Q,KAINW,EAA2C,KAA6BX,GAqBxEa,E,YACF,WAAYzlS,GAAW,oBACnB/M,KAAK+M,YAAcA,IAKrB0lS,EAA2B,YAAmB,YAAcD,I,iBAK5DE,E,YACF,WAAYC,EAAYjwS,EAAYssH,EAAiBjtF,EAAe6wQ,EAAkBzgM,EAAgB0gM,EAAmB18P,GAAQ,kCAC7H,YAAMzzC,KACDssH,gBAAkBA,EACvB,EAAKjtF,cAAgBA,EACrB,EAAK6wQ,iBAAmBA,EACxB,EAAKzgM,eAAiBA,EACtB,EAAK0gM,kBAAoBA,EACzB,EAAKxgM,UAAL,sBAAgCT,GAEhC,EAAK5rF,GAAK,EAAKqsF,UAMf,EAAKtiG,OAAS,IAAI,IAElB,EAAKwiG,UAAW,EAEhB,EAAK2N,OAAS,KAEd,EAAK+gD,+BAAiC,aAGtC,EAAK0xI,WAAaA,EACdx8P,IACA,EAAKA,SAAW,YAAqBA,EAAU,IAEnD,EAAK8qH,+BACD2xI,EAAiBh4K,OAAO,SAAC50G,EAAI7kB,GACrB6kB,IAAO,EAAKA,IAAM7kB,IAAS,EAAKA,OAChC,EAAK6wG,SAAU,KA/BkG,E,0DAoCjI,WAAgB,OAAOhyG,KAAKuyG,U,IAC5B,SAAYhxG,GACR,IAAMuxS,EAAkB,YAAsBvxS,GAC1CvB,KAAKuyG,WAAaugM,IAClB9yS,KAAKuyG,SAAWugM,EACZA,GAAmB9yS,KAAK2yS,YAAc3yS,KAAK2yS,WAAWpxS,QAAUvB,KAAKuB,MACrEvB,KAAK2yS,WAAW1jR,SAAWjvB,MAErB8yS,GAAmB9yS,KAAK2yS,YAAc3yS,KAAK2yS,WAAWpxS,QAAUvB,KAAKuB,QAG3EvB,KAAK2yS,WAAW1jR,SAAW,MAE3B6jR,GAEA9yS,KAAK4yS,iBAAiBvxI,OAAOrhK,KAAKgmB,GAAIhmB,KAAKmB,MAE/CnB,KAAKgvH,gBAAgBh4G,kB,iBAI7B,WAAc,OAAOhX,KAAKkgH,Q,IAC1B,SAAU3+G,GACFvB,KAAKkgH,SAAW3+G,IAChBvB,KAAKkgH,OAAS3+G,EACU,OAApBvB,KAAK2yS,aACA3yS,KAAKgyG,UAENhyG,KAAKgyG,QAAUhyG,KAAK2yS,WAAWpxS,QAAUA,GAEzCvB,KAAKgyG,UACLhyG,KAAK2yS,WAAW1jR,SAAWjvB,U,yBAM3C,WACI,OAAOA,KAAK+xS,gBAAmB/xS,KAAK2yS,YAAc3yS,KAAK2yS,WAAWngM,eAAkB,S,IAExF,SAAkBjxG,GACdvB,KAAK+xS,eAAiBxwS,I,oBAG1B,WACI,OAAOvB,KAAKmgH,WAAkC,OAApBngH,KAAK2yS,YAAuB3yS,KAAK2yS,WAAW3lR,U,IAE1E,SAAazrB,GACTvB,KAAK+yS,aAAa,YAAsBxxS,M,oBAG5C,WACI,OAAOvB,KAAKsyG,WAActyG,KAAK2yS,YAAc3yS,KAAK2yS,WAAW1/L,U,IAEjE,SAAa1xG,GACTvB,KAAKsyG,UAAY,YAAsB/wG,K,iBAG3C,WACI,OAAOvB,KAAK28L,QACP38L,KAAK2yS,YAAc3yS,KAAK2yS,WAAW98O,OACpC71D,KAAK6yS,mBAAqB7yS,KAAK6yS,kBAAkBh9O,OAAS,U,IAElE,SAAUq8E,GAAYlyI,KAAK28L,OAASzqD,I,mBAEpC,WAAgB,gBAAUlyI,KAAKgmB,IAAMhmB,KAAKqyG,UAA1B,Y,mBAEhB,SAAMrqF,EAAS8qF,GACPA,EACA9yG,KAAK+hC,cAAcgB,SAAS/iC,KAAK4yG,cAAeE,EAAQ9qF,GAGxDhoB,KAAK4yG,cAAchwG,cAAcksB,MAAM9G,K,2BAQ/C,WAGIhoB,KAAKgvH,gBAAgBh4G,iB,sBAEzB,WACQhX,KAAK2yS,aAEL3yS,KAAKgyG,QAAUhyG,KAAK2yS,WAAWpxS,QAAUvB,KAAKkgH,OAC1ClgH,KAAKgyG,UACLhyG,KAAK2yS,WAAW1jR,SAAWjvB,MAG/BA,KAAKmB,KAAOnB,KAAK2yS,WAAWxxS,Q,6BAGpC,WAAe,WACXnB,KAAK+hC,cACA2wE,QAAQ1yG,KAAK+M,aAAa,GAC1B7I,UAAU,SAAAyuG,IACNA,GAAe,EAAKggM,YACrB,EAAKA,WAAWK,a,yBAI5B,WACIhzS,KAAK+hC,cAAc8wE,eAAe7yG,KAAK+M,aACvC/M,KAAKihK,mC,8BAGT,WACIjhK,KAAK+P,OAAOmS,KAAK,IAAI0vR,EAAe5xS,KAAMA,KAAKkgH,W,+BAEnD,WACI,OAAOlgH,KAAK+oB,eAAiB/oB,KAAKgtB,W,2BAEtC,SAAc1E,GAQVA,EAAMsH,oB,4BAMV,SAAetH,GAIXA,EAAMsH,kBACN,IAAMqjR,EAAoBjzS,KAAK2yS,YAAc3yS,KAAKuB,QAAUvB,KAAK2yS,WAAWpxS,MAC5EvB,KAAKgyG,SAAU,EACfhyG,KAAK8/B,mBACD9/B,KAAK2yS,aACL3yS,KAAK2yS,WAAWX,8BAA8BhyS,KAAKuB,OAC/C0xS,GACAjzS,KAAK2yS,WAAW7yQ,sB,0BAK5B,SAAav+B,GACLvB,KAAKmgH,YAAc5+G,IACnBvB,KAAKmgH,UAAY5+G,EACjBvB,KAAKgvH,gBAAgBh4G,oB,CA1LCy7R,G,OA8LlCC,EAAoBnyS,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKkyS,GAAqB,KAAyBZ,GAAqB,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAsB,KAAyB,KAAmC,KAAyBziQ,QAAS,UAAyB5qC,GAAY,KAAyB4qC,UACrcqjQ,EAAoBjyS,UAAO,KAAyB,CAAEC,KAAMgyS,EAAqBp6R,UAAW,SAAmC3W,EAAIC,GAG3H,IAAIE,EAHuI,EAALH,GACtI,KAAmBlC,EAAK,GACjB,EAALkC,GAEF,KAAsBG,EAAK,UAA0BF,EAAIgxG,cAAgB9wG,EAAGE,QAC3EG,OAAQ,CAAE6jB,GAAI,KAAMgsF,QAAS,UAAWzwG,MAAO,QAASixG,cAAe,gBAAiBxlF,SAAU,WAAYimF,SAAU,WAAYp9C,MAAO,QAAS10D,KAAM,OAAQglB,UAAW,CAAC,aAAc,aAAcqC,eAAgB,CAAC,kBAAmB,kBAAmB0qR,gBAAiB,CAAC,mBAAoB,oBAAsB/wR,QAAS,CAAEpS,OAAQ,UAAYzN,SAAU,CAAC,Q,sBA8D1WiwS,E,YACF,WAAYI,EAAYjwS,EAAYywS,EAAgBC,EAAcC,EAAiBnjI,EAAeojI,EAAkBn9P,GAAQ,qCAClHw8P,EAAYjwS,EAAYywS,EAAgBC,EAAcC,EAAiBnjI,EAAeojI,EAAkBn9P,I,wCAFzFu8P,G,OAK7BH,EAAehyS,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK+xS,GAAgB,KAAyBV,EAAiB,GAAI,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAsB,KAAyB,KAAmC,KAAyB,IAAuB,GAAI,KAAyBJ,EAA2B,GAAI,KAAyB,cAC3dc,EAAepsS,UAAO,KAAyB,CAAEzF,KAAM6xS,EAAgB5xS,UAAW,CAAC,CAAC,qBAAsBoC,UAAW,CAAC,EAAG,oBAAqBwV,SAAU,GAAIC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,GACtN,KAAkB,QAAS,WAAqD,OAAOC,EAAIgxG,cAAchwG,cAAcksB,UAChH,EAALntB,IACF,KAAmB,WAAY,KAA/B,CAAqC,KAAMC,EAAIokB,GAA/C,CAAmD,aAAc,KAAjE,CAAuE,kBAAmB,KAA1F,CAAgG,mBAAoB,MACpH,KAAmB,oBAAqBpkB,EAAIowG,QAA5C,CAAqD,qBAAsBpwG,EAAIorB,SAA/E,CAAyF,0BAAkD,mBAAvBprB,EAAIuwG,eAAxH,CAA6J,cAA6B,YAAdvwG,EAAIi0D,MAAhL,CAAqM,aAA4B,WAAdj0D,EAAIi0D,MAAvN,CAA2O,WAA0B,SAAdj0D,EAAIi0D,SAC1P1zD,OAAQ,CAAE4mB,cAAe,gBAAiBotB,SAAU,YAAcz9B,SAAU,CAAC,kBAAmBpW,SAAU,CAAC,MAAoCuW,mBAAoBy4F,EAAKlrG,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,mBAAoB,CAAC,QAAS,IAAK,CAAC,EAAG,uBAAwB,CAAC,EAAG,0BAA2B,CAAC,EAAG,0BAA2B,CAAC,OAAQ,QAAS,EAAG,kBAAmB,sBAAuB,EAAG,KAAM,UAAW,WAAY,WAAY,WAAY,SAAU,SAAU,CAAC,QAAS,IAAK,CAAC,aAAc,GAAI,EAAG,mBAAoB,sBAAuB,EAAG,mBAAoB,oBAAqB,oBAAqB,kBAAmB,sBAAuB,CAAC,EAAG,qBAAsB,+BAAgC,CAAC,EAAG,2BAA4B,CAAC,EAAG,UAAW,SAAUhG,SAAU,SAAiCqB,EAAIC,GAoBlzB,GApBk0B,EAALD,IAC3zB,OACA,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAsB,EAAG,OAAQ,GACjC,KAAiB,EAAG,OAAQ,GAC5B,KAAiB,EAAG,OAAQ,GAC5B,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAkB,SAAU,SAAyDmwB,GAAU,OAAOlwB,EAAI2xS,eAAezhR,IAAzH,CAAqI,QAAS,SAAwDA,GAAU,OAAOlwB,EAAIuxG,cAAcrhF,KACzO,OACA,KAAsB,EAAG,OAAQ,GACjC,KAAiB,EAAG,OAAQ,GAC5B,OACA,OACA,KAAsB,EAAG,OAAQ,GACjC,KAAsB,GAAI,OAAQ,IAClC,KAAc,GAAI,QAClB,OACA,KAAoB,IACpB,OACA,QACO,EAALnwB,EAAQ,CACV,IAAM0xG,EAAM,KAAmB,GAC/B,KAAmB,MAAOzxG,EAAI2xG,SAC9B,KAAiB,GACjB,KAAkB,KAAM3xG,EAAI2xG,QAA5B,CAAqC,UAAW3xG,EAAIowG,QAApD,CAA6D,WAAYpwG,EAAIorB,SAA7E,CAAuF,WAAYprB,EAAIu0C,SAAvG,CAAiH,WAAYv0C,EAAIqxG,UACjI,KAAmB,OAAQrxG,EAAIT,KAA/B,CAAqC,QAASS,EAAIL,MAAlD,CAAyD,aAAcK,EAAIukB,UAA3E,CAAsF,kBAAmBvkB,EAAI4mB,eAA7G,CAA6H,mBAAoB5mB,EAAIsxS,iBACrJ,KAAiB,GACjB,KAAkB,mBAAoB7/L,EAAtC,CAA2C,oBAAqBzxG,EAAI68Q,oBAApE,CAAyF,qBAAqB,EAA9G,CAAoH,kBAAmB,GAAvI,CAA2I,qBAAsB,KAAuB,GAAI/+Q,IAC5L,KAAiB,GACjB,KAAmB,yBAA+C,UAArBkC,EAAI4wG,iBAChDjsG,WAAY,CAAC,KAAmBuS,OAAQ,CAAC,ohFAAqhFtS,cAAe,EAAGwiB,gBAAiB,I,sBAoEpmFwqR,E,sDAENA,EAAejzS,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKgzS,IAC5EA,EAAet6R,UAAO,KAAwB,CAAExY,KAAM8yS,IACtDA,EAAer6R,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAiB,KAAkB,O,4BC5qBrF,SAAUiJ,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0WAAwEL,MAC5E,KAEJM,YACI,0WAAwEN,MACpE,KAERgB,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNC,EAAG,2BACHC,GAAI,oCACJ/B,EAAG,iCACHgC,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJhN,EAAG,qBACHiN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MArDyB/gB,CAAQ,EAAQ,U,0UC6BpD2uS,EAAuB,CAEzBC,aAAc,YAAQ,QAAS,CAC3B,YAAM,wBAAyB,YAAM,CAAEhyQ,QAAS,EAAGC,UAAW,cAC9D,YAAM,UAAW,YAAM,CAAEA,UAAW,cACpC,YAAW,eAAgB,YAAQ,mCAAoC,YAAU,CAC7E,YAAM,CAAED,QAAS,EAAGC,UAAW,WAAY92B,OAAQ,IACnD,YAAM,CAAE62B,QAAS,GAAKC,UAAW,cAAe92B,OAAQ,KACxD,YAAM,CAAE62B,QAAS,EAAGC,UAAW,WAAY92B,OAAQ,QAEvD,YAAW,cAAe,YAAQ,mCAAoC,YAAM,CAAE62B,QAAS,SASzFiyQ,EAAyB,YAAgC,CAAEnvJ,SAAS,IAcpEovJ,EAA8B,IAAI,IAAe,+BAMjDC,EAA+C,CACjDtxS,QAASqxS,EACTzqR,KAAM,CAAC,KACPC,WAPJ,SAA6CC,GACzC,OAAO,kBAAMA,EAAQC,iBAAiBC,WAAW,CAAEuqR,eArB5B,QA8BrBC,EAA8B,IAAI,IAAe,8BAA+B,CAClFntR,WAAY,OACZ9hB,QAGJ,WACI,MAAO,CACH+nL,UAAW,EACXK,UAAW,EACX8mH,kBAAmB,S,iBASrBC,E,8BACF,WAAYpqR,EAAU9c,EAAaqrJ,EAAmBx2I,EAAmBte,EAAS6J,EAAW+mS,EAAgBnyQ,EAAehY,EAAgB9c,EAAM64B,EAElJ54B,GAAS,+BACLlN,KAAK6pB,SAAWA,EAChB7pB,KAAK+M,YAAcA,EACnB/M,KAAKo4J,kBAAoBA,EACzBp4J,KAAK4hB,kBAAoBA,EACzB5hB,KAAKsD,QAAUA,EACftD,KAAKmN,UAAYA,EACjBnN,KAAKk0S,eAAiBA,EACtBl0S,KAAK+hC,cAAgBA,EACrB/hC,KAAKiN,KAAOA,EACZjN,KAAK8lC,gBAAkBA,EACvB9lC,KAAKm0S,UAAY,QACjBn0S,KAAKmgH,WAAY,EACjBngH,KAAKo0S,kBAAmB,EACxBp0S,KAAKq0S,+BAAgC,EAErCr0S,KAAK6sL,UAAY7sL,KAAK8lC,gBAAgB+mJ,UAEtC7sL,KAAKktL,UAAYltL,KAAK8lC,gBAAgBonJ,UAetCltL,KAAKs0S,cAAgB,OACrBt0S,KAAKu0S,SAAW,GAEhBv0S,KAAKw0S,kBAAoB,GAEzBx0S,KAAKwD,WAAa,IAAI,IAKtBxD,KAAKgyB,eAAiB,SAAC1J,GACf,EAAKmsR,qBAAuBnsR,EAAM2E,UAAY,MAAW,YAAe3E,KACxEA,EAAM4E,iBACN5E,EAAMsH,kBACN,EAAKtsB,QAAQgpC,IAAI,kBAAM,EAAK0gJ,KAAK,OAGzChtL,KAAKkrB,gBAAkBnB,EACnB+b,IACIA,EAAgB97B,WAChBhK,KAAKgK,SAAW87B,EAAgB97B,UAEhC87B,EAAgBwuQ,gBAChBt0S,KAAKs0S,cAAgBxuQ,EAAgBwuQ,gBAG7ChxS,EAAQ+nB,kBAAkB,WACtBte,EAAYnK,cAAc0oB,iBAAiB,UAAW,EAAK0G,mB,qBAInE,WAAiB,OAAOhyB,KAAKm0S,W,IAC7B,SAAa5yS,GACLA,IAAUvB,KAAKm0S,YACfn0S,KAAKm0S,UAAY5yS,EACbvB,KAAKyrB,cACLzrB,KAAK00S,kBACD10S,KAAK20S,kBACL30S,KAAK20S,iBAAiBpwI,KAAK,GAE/BvkK,KAAKyrB,YAAYC,qB,oBAK7B,WAAiB,OAAO1rB,KAAKmgH,W,IAC7B,SAAa5+G,GACTvB,KAAKmgH,UAAY,YAAsB5+G,GAEnCvB,KAAKmgH,UACLngH,KAAKgtL,KAAK,GAGVhtL,KAAK40S,qC,mBAIb,WAAgB,OAAO50S,KAAKu0S,U,IAC5B,SAAYhzS,GAAK,WACbvB,KAAKk0S,eAAeW,kBAAkB70S,KAAK+M,YAAYnK,cAAe5C,KAAKu0S,SAAU,WAIrFv0S,KAAKu0S,SAAoB,MAAThzS,EAAgB8tC,OAAO9tC,GAAOub,OAAS,IAClD9c,KAAKu0S,UAAYv0S,KAAKy0S,oBACvBz0S,KAAKgtL,KAAK,IAGVhtL,KAAK40S,mCACL50S,KAAK80S,wBACL90S,KAAKsD,QAAQ+nB,kBAAkB,WAK3B9mB,QAAQC,UAAU6Z,KAAK,WACnB,EAAK61R,eAAea,SAAS,EAAKhoS,YAAYnK,cAAe,EAAKo3B,QAAS,kB,wBAM3F,WAAqB,OAAOh6B,KAAKg1S,e,IACjC,SAAiBzzS,GACbvB,KAAKg1S,cAAgBzzS,EACjBvB,KAAK20S,kBACL30S,KAAKi1S,iBAAiBj1S,KAAKg1S,iB,6BAGnC,WAAe,WAEXh1S,KAAKo0S,kBAAmB,EACxBp0S,KAAK40S,mCACL50S,KAAK+hC,cAAc2wE,QAAQ1yG,KAAK+M,aAC3B/I,KAAK,YAAUhE,KAAKwD,aACpBU,UAAU,SAAA4uG,GAENA,EAGe,aAAXA,GACL,EAAKxvG,QAAQgpC,IAAI,kBAAM,EAAKi4H,SAH5B,EAAKjhK,QAAQgpC,IAAI,kBAAM,EAAK0gJ,KAAK,S,yBAU7C,WACI,IAAMpqL,EAAgB5C,KAAK+M,YAAYnK,cACvCshC,aAAalkC,KAAKk1S,oBACdl1S,KAAKyrB,cACLzrB,KAAKyrB,YAAYgD,UACjBzuB,KAAK20S,iBAAmB,MAG5B/xS,EAAc+oB,oBAAoB,UAAW3rB,KAAKgyB,gBAClDhyB,KAAKw0S,kBAAkBnhS,QAAQ,YAAsB,uBACjDzQ,EAAc+oB,oBADmC,UACEgoR,KAEvD3zS,KAAKw0S,kBAAkBrwS,OAAS,EAChCnE,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,WAChB9D,KAAKk0S,eAAeW,kBAAkBjyS,EAAe5C,KAAKg6B,QAAS,WACnEh6B,KAAK+hC,cAAc8wE,eAAejwG,K,kBAGtC,WAA2B,WAAtBwqF,EAAsB,uDAAdptF,KAAK6sL,UACd,IAAI7sL,KAAKgtB,UAAahtB,KAAKg6B,WAAYh6B,KAAKy0S,qBACvCz0S,KAAK20S,iBAAiBQ,gBAAmBn1S,KAAK20S,iBAAiBS,gBADpE,CAIA,IAAMjmR,EAAanvB,KAAKknC,iBACxBlnC,KAAK4/J,UACL5/J,KAAKwvB,QAAUxvB,KAAKwvB,SAAW,IAAI,IAAgB6lR,EAAkBr1S,KAAK4hB,mBAC1E5hB,KAAK20S,iBAAmBxlR,EAAWrQ,OAAO9e,KAAKwvB,SAASsE,SACxD9zB,KAAK20S,iBAAiBW,cACjBtxS,KAAK,YAAUhE,KAAKwD,aACpBU,UAAU,kBAAM,EAAK07J,YAC1B5/J,KAAKi1S,iBAAiBj1S,KAAKg1S,eAC3Bh1S,KAAK80S,wBACL90S,KAAK20S,iBAAiBpwI,KAAKn3E,M,kBAG/B,WAA2B,IAAtBA,EAAsB,uDAAdptF,KAAKktL,UACVltL,KAAK20S,kBACL30S,KAAK20S,iBAAiB3nH,KAAK5/F,K,oBAInC,WACIptF,KAAKy0S,oBAAsBz0S,KAAKgtL,OAAShtL,KAAKukK,S,+BAGlD,WACI,QAASvkK,KAAK20S,kBAAoB30S,KAAK20S,iBAAiB/pB,c,4BAG5D,WAAc,WACV,GAAI5qR,KAAKyrB,YACL,OAAOzrB,KAAKyrB,YAEhB,IAAM8pR,EAAsBv1S,KAAKo4J,kBAAkBmB,4BAA4Bv5J,KAAK+M,aAE9EmjB,EAAWlwB,KAAK6pB,SAAS7f,WAC1BmmB,oBAAoBnwB,KAAK+M,aACzByoS,sBAAsB,gBACtBplR,wBAAuB,GACvBqlR,mBAAmB,GACnBC,yBAAyBH,GAoB9B,OAnBArlR,EAASylR,gBAAgB3xS,KAAK,YAAUhE,KAAKwD,aAAaU,UAAU,SAAA6L,GAC5D,EAAK4kS,kBACD5kS,EAAO6lS,yBAAyBC,kBAAoB,EAAKlB,iBAAiB/pB,aAG1E,EAAKtnR,QAAQgpC,IAAI,kBAAM,EAAK0gJ,KAAK,OAI7ChtL,KAAKyrB,YAAczrB,KAAK6pB,SAASvkB,OAAO,CACpC0B,UAAWhH,KAAKiN,KAChB6iB,iBAAkBI,EAClBF,WAxQgB,oBAyQhBjG,eAAgB/pB,KAAKkrB,oBAEzBlrB,KAAK00S,kBACL10S,KAAKyrB,YAAYU,cACZnoB,KAAK,YAAUhE,KAAKwD,aACpBU,UAAU,kBAAM,EAAK07J,YACnB5/J,KAAKyrB,c,qBAGhB,WACQzrB,KAAKyrB,aAAezrB,KAAKyrB,YAAYxL,eACrCjgB,KAAKyrB,YAAY1M,SAErB/e,KAAK20S,iBAAmB,O,6BAG5B,WACI,IAAM3qS,EAAWhK,KAAKyrB,YAAY2Z,YAAYtV,iBACxCgjF,EAAS9yG,KAAK81S,aACdzsR,EAAUrpB,KAAK+vB,sBACrB/lB,EAAS6mB,cAAc,CACnBrU,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI+rE,EAAO0/K,MAAOnpQ,EAAQmpQ,MACtDh2Q,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI+rE,EAAOntB,UAAWt8D,EAAQs8D,c,wBAOlE,WACI,IAEIowN,EAFEC,GAASh2S,KAAKiN,MAA2B,OAAnBjN,KAAKiN,KAAK1L,MAChCyI,EAAWhK,KAAKgK,SAEN,SAAZA,GAAmC,SAAZA,EACvB+rS,EAAiB,CAAExlR,QAAS,SAAUC,QAAqB,SAAZxmB,EAAsB,MAAQ,UAE5D,UAAZA,GACQ,QAAZA,GAAsBgsS,GACV,SAAZhsS,IAAwBgsS,EACzBD,EAAiB,CAAExlR,QAAS,QAASC,QAAS,WAE7B,SAAZxmB,GACQ,SAAZA,GAAuBgsS,GACX,QAAZhsS,IAAuBgsS,KACxBD,EAAiB,CAAExlR,QAAS,MAAOC,QAAS,WAKhD,MAAiBxwB,KAAKi2S,gBAAgBF,EAAexlR,QAASwlR,EAAevlR,SAC7E,MAAO,CACHgiQ,KAAMujB,EACNpwN,SAAU,CAAEp1D,QAHhB,EAAQgL,EAGoB/K,QAH5B,EAAWlL,M,iCAOf,WACI,IAEI4wR,EAFEF,GAASh2S,KAAKiN,MAA2B,OAAnBjN,KAAKiN,KAAK1L,MAChCyI,EAAWhK,KAAKgK,SAEN,SAAZA,EACAksS,EAAkB,CAAEzlR,SAAU,SAAUC,SAAU,UAEjC,SAAZ1mB,EACLksS,EAAkB,CAAEzlR,SAAU,SAAUC,SAAU,OAEjC,UAAZ1mB,GACQ,QAAZA,GAAsBgsS,GACV,SAAZhsS,IAAwBgsS,EACzBE,EAAkB,CAAEzlR,SAAU,MAAOC,SAAU,WAE9B,SAAZ1mB,GACQ,SAAZA,GAAuBgsS,GACX,QAAZhsS,IAAuBgsS,KACxBE,EAAkB,CAAEzlR,SAAU,QAASC,SAAU,WAKrD,MAAiB1wB,KAAKi2S,gBAAgBC,EAAgBzlR,SAAUylR,EAAgBxlR,UAChF,MAAO,CACH8hQ,KAAM0jB,EACNvwN,SAAU,CAAEl1D,SAHhB,EAAQ8K,EAGqB7K,SAH7B,EAAWpL,M,mCAOf,WAAqB,WAGbtlB,KAAK20S,mBACL30S,KAAK20S,iBAAiB36Q,QAAUh6B,KAAKg6B,QACrCh6B,KAAK20S,iBAAiBtC,gBACtBryS,KAAKsD,QAAQ6yS,iBAAiBnyS,KAAK,YAAK,GAAI,YAAUhE,KAAKwD,aAAaU,UAAU,WAC1E,EAAKywS,kBACL,EAAKlpR,YAAYC,sB,8BAMjC,SAAiB00G,GACTpgI,KAAK20S,mBACL30S,KAAK20S,iBAAiBv0K,aAAeA,EACrCpgI,KAAK20S,iBAAiBtC,mB,6BAI9B,SAAgB92Q,EAAGjW,GAiBf,MAhBsB,UAAlBtlB,KAAKgK,UAA0C,UAAlBhK,KAAKgK,SACxB,QAANsb,EACAA,EAAI,SAEO,WAANA,IACLA,EAAI,OAIE,QAANiW,EACAA,EAAI,QAEO,UAANA,IACLA,EAAI,OAGL,CAAEA,IAAGjW,O,8CAGhB,WAAgC,YAExBtlB,KAAKmgH,WAAcngH,KAAKg6B,SAAYh6B,KAAKo0S,mBACzCp0S,KAAKw0S,kBAAkBrwS,SAKvBnE,KAAKo2S,+BACLp2S,KAAKw0S,kBACA5wS,KAAK,CAAC,aAAc,WACjB,EAAKyyS,kCACL,EAAK9xI,UAGe,QAAvBvkK,KAAKs0S,gBACVt0S,KAAKs2S,oCACLt2S,KAAKw0S,kBACA5wS,KAAK,CAAC,aAAc,WAGjB,EAAKyyS,kCACLnyQ,aAAa,EAAKgxQ,oBAClB,EAAKA,mBAAqBtwQ,WAAW,kBAAM,EAAK2/H,QAxZ5C,SA2ZhBvkK,KAAKu2S,cAAcv2S,KAAKw0S,sB,6CAE5B,WAA+B,aAC3B,IAAIx0S,KAAKq0S,8BAAT,CAGAr0S,KAAKq0S,+BAAgC,EACrC,IAAMmC,EAAgB,GACtB,GAAIx2S,KAAKo2S,+BACLI,EAAc5yS,KAAK,CAAC,aAAc,kBAAM,EAAKopL,SAAS,CAAC,QAAS,SAAA1kK,GAAK,OAAI,EAAKmuR,eAAenuR,WAE5F,GAA2B,QAAvBtoB,KAAKs0S,cAAyB,CACnCt0S,KAAKs2S,oCACL,IAAMI,EAAmB,WACrBxyQ,aAAa,EAAKgxQ,oBAClB,EAAKloH,KAAK,EAAKlnJ,gBAAgBkuQ,oBAEnCwC,EAAc5yS,KAAK,CAAC,WAAY8yS,GAAmB,CAAC,cAAeA,IAEvE12S,KAAKu2S,cAAcC,IACnB,EAAAx2S,KAAKw0S,mBAAkB5wS,KAAvB,QAA+B4yS,M,2BAEnC,SAAc/5M,GAAS,WACnBA,EAAUppF,QAAQ,YAAsB,uBACpC,EAAKtG,YAAYnK,cAAc0oB,iBADK,UAC6BqoR,O,0CAGzE,WACI,OAAQ3zS,KAAKmN,UAAUwpS,MAAQ32S,KAAKmN,UAAUypS,U,4BAGlD,SAAetuR,GACX,GAAItoB,KAAKy0S,oBAAqB,CAE1B,IACMoC,GADM72S,KAAKkN,WAAay9B,UACE6rH,iBAAiBluI,EAAMo6K,QAASp6K,EAAMq6K,SAChEt3L,EAAUrL,KAAK+M,YAAYnK,cAK7Bi0S,IAAwBxrS,GAAYA,EAAQuhB,SAASiqR,IACrD72S,KAAKgtL,U,+CAKjB,WACI,IAAM8pH,EAAW92S,KAAKs0S,cACtB,GAAiB,QAAbwC,EAAoB,CACpB,IAAMzrS,EAAUrL,KAAK+M,YAAYnK,cAC3B,EAAQyI,EAAQE,OAGL,OAAburS,GAA2C,UAArBzrS,EAAQyD,UAA6C,aAArBzD,EAAQyD,YAC9D,EAAM4yI,WAAa,EAAMI,aAAe,EAAMC,iBAC1C,EAAMC,cAAgB,QAIb,OAAb80J,GAAsBzrS,EAAQwgJ,YAC9B,EAAMjK,eAAiB,QAE3B,EAAMD,YAAc,OACpB,EAAME,wBAA0B,mB,UAI5CoyJ,EAAW1zS,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKyzS,GAAY,KAAyB,KAAiB,KAAyB,KAAoB,KAAyB,KAA0B,KAAyB,KAA0B,KAAyB,KAAgB,KAAyB,KAAkB,KAAyB,KAAuB,KAAyB,KAAsB,KAAyBL,GAA8B,KAAyB,IAAuB,GAAI,KAAyBG,EAA6B,GAAI,KAAyB,OAC9nBE,EAAWxzS,UAAO,KAAyB,CAAEC,KAAMuzS,EAAYtzS,UAAW,CAAC,CAAC,GAAI,aAAc,KAAMoC,UAAW,CAAC,EAAG,uBAAwBZ,OAAQ,CAAE0qL,UAAW,CAAC,sBAAuB,aAAcK,UAAW,CAAC,sBAAuB,aAAconH,cAAe,CAAC,0BAA2B,iBAAkBtqS,SAAU,CAAC,qBAAsB,YAAagjB,SAAU,CAAC,qBAAsB,YAAagN,QAAS,CAAC,aAAc,WAAYomG,aAAc,CAAC,kBAAmB,iBAAmB1nH,SAAU,CAAC,gB,sBAwE9e28R,E,8BACF,WAAYvoS,EAAoBiqS,GAAmB,oBAC/C/2S,KAAK8M,mBAAqBA,EAC1B9M,KAAK+2S,oBAAsBA,EAE3B/2S,KAAKg3S,YAAc,UAEnBh3S,KAAKi3S,qBAAsB,EAE3Bj3S,KAAKk3S,QAAU,IAAI,IAEnBl3S,KAAKm3S,WAAan3S,KAAK+2S,oBAAoBzpK,QAAQ,IAAYtgG,U,mBAMnE,SAAKogD,GAAK,WAEFptF,KAAKo1S,iBACLlxQ,aAAalkC,KAAKo1S,gBAClBp1S,KAAKo1S,eAAiB,MAG1Bp1S,KAAKi3S,qBAAsB,EAC3Bj3S,KAAKm1S,eAAiBvwQ,WAAW,WAC7B,EAAKoyQ,YAAc,UACnB,EAAK7B,eAAiB,KAGtB,EAAK9C,iBACNjlN,K,kBAMP,SAAKA,GAAK,WAEFptF,KAAKm1S,iBACLjxQ,aAAalkC,KAAKm1S,gBAClBn1S,KAAKm1S,eAAiB,MAE1Bn1S,KAAKo1S,eAAiBxwQ,WAAW,WAC7B,EAAKoyQ,YAAc,SACnB,EAAK5B,eAAiB,KAGtB,EAAK/C,iBACNjlN,K,yBAGP,WACI,OAAOptF,KAAKk3S,U,uBAGhB,WACI,MAA4B,YAArBl3S,KAAKg3S,c,yBAEhB,WACIh3S,KAAKk3S,QAAQpzS,a,6BAEjB,WACI9D,KAAKi3S,qBAAsB,I,4BAE/B,SAAe3uR,GACX,IAAM6a,EAAU7a,EAAM6a,QACN,WAAZA,GAAyBnjC,KAAK4qR,aAC9B5qR,KAAKk3S,QAAQrzS,OAED,YAAZs/B,GAAqC,WAAZA,IACzBnjC,KAAKi3S,qBAAsB,K,oCAQnC,WACQj3S,KAAKi3S,qBACLj3S,KAAKgtL,KAAK,K,2BAQlB,WACIhtL,KAAK8M,mBAAmBkK,mB,UAGhCq+R,EAAiB90S,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK60S,GAAkB,KAAyB,KAA2B,KAAyB,OAC/KA,EAAiBlvS,UAAO,KAAyB,CAAEzF,KAAM20S,EAAkB10S,UAAW,CAAC,CAAC,0BAA2BoC,UAAW,CAAC,cAAe,QAASwV,SAAU,EAAGC,aAAc,SAAuC7W,EAAIC,GAAgB,EAALD,GAChO,KAAkB,QAAS,WAAuD,OAAOC,EAAIw1S,2BAA6B,EAAO,KAAjI,CAAuJ,WAAY,WAA0D,OAAOx1S,EAAIw1S,2BAA6B,EAAO,MACrQ,EAALz1S,GACF,KAAmB,OAA4B,YAApBC,EAAIo1S,YAA4B,EAAI,OAC9D5wS,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,cAAe,EAAG,YAAahG,SAAU,SAAmCqB,EAAIC,GAOjH,IAAIy1S,EAP6H,EAAL11S,IAC5H,KAAsB,EAAG,MAAO,GAChC,KAAkB,eAAgB,WAA4E,OAAOC,EAAI01S,mBAAzH,CAA+I,cAAe,SAAuExlR,GAAU,OAAOlwB,EAAI21S,eAAezlR,KACzQ,KAAc,EAAG,SACjB,KAAc,GACd,QACO,EAALnwB,IAEF,KAAmB,sBAA+E,OAAvD01S,EAAU,KAAmB,EAAG,EAAGz1S,EAAIu1S,aAAuB,KAAOE,EAAQpsQ,SACxH,KAAkB,UAAWrpC,EAAIw+H,aAAjC,CAA+C,SAAUx+H,EAAIo1S,aAC7D,KAAiB,GACjB,KAAyBp1S,EAAIo4B,WAC5BzzB,WAAY,CAAC,KAAiBixS,MAAO,CAAC,KAAmB1+R,OAAQ,CAAC,uUAAwUtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAAC8vQ,EAAqBC,eAAiB1qR,gBAAiB,I,sBAgC1eyuR,E,sDAENA,EAAiBl3S,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKi3S,IAChFA,EAAiBv+R,UAAO,KAAwB,CAAExY,KAAM+2S,IACxDA,EAAiBt+R,UAAO,KAAwB,CAAEgZ,UAAW,CAAC0hR,GAA+Cz6R,QAAS,CAAC,CAC3G,IACA,IACA,IACA,KACD,IAAiB,O,wCCxvB5B,IAAIqgB,EAAYqD,EAAQ,QACpB3C,EAAQ2C,EAAQ,QAChB2Q,EAAU3Q,EAAQ,QAEtBM,EAAOC,QAAU,CACboQ,QAASA,EACTtT,MAAOA,EACPV,UAAWA,I,8jBC2CTi+Q,E,+CAOAC,E,+CAeAC,EAAa,IAqJnB,SAASr5O,EAAQp9D,EAAM02S,GACnB,MAAO,CAAEn3S,KAAM,EAAiBS,OAAM02S,cAAa7vR,QAAS,IA4DhE,SAASmnN,EAAQ2oE,GAAsB,IAAbh/R,EAAa,uDAAJ,KAC/B,MAAO,CAAEpY,KAAM,EAAiBoY,SAAQg/R,WAuE5C,SAASC,EAAShnE,GAAqB,IAAd/oN,EAAc,uDAAJ,KAC/B,MAAO,CAAEtnB,KAAM,EAAkBqwO,QAAO/oN,WAyC5C,SAASzc,EAAMw/C,GACX,MAAO,CAAErqD,KAAM,EAAeoY,OAAQiyC,EAAQlgD,OAAQ,MA+B1D,SAASxC,EAAMlH,EAAM2X,EAAQkP,GACzB,MAAO,CAAEtnB,KAAM,EAAeS,OAAM2X,SAAQkP,WA+ChD,SAASgwR,EAAUjnE,GACf,MAAO,CAAErwO,KAAM,EAAmBqwO,SA0KtC,SAASzrB,EAAW2yF,EAAiBlnE,GAAqB,IAAd/oN,EAAc,uDAAJ,KAClD,MAAO,CAAEtnB,KAAM,EAAoBw3S,KAAMD,EAAiBt0Q,UAAWotM,EAAO/oN,WAqEhF,SAASmwR,IAA2B,IAAdnwR,EAAc,uDAAJ,KAC5B,MAAO,CAAEtnB,KAAM,EAAsBsnB,WAsGzC,SAASyiB,EAAM6J,EAAU3Q,GAAyB,IAAd3b,EAAc,uDAAJ,KAC1C,MAAO,CAAEtnB,KAAM,GAAgB4zC,WAAU3Q,YAAW3b,WAkFxD,SAASowR,EAAQN,EAASn0Q,GACtB,MAAO,CAAEjjC,KAAM,GAAkBo3S,UAASn0Q,aAU9C,SAAS00Q,EAAkBl/J,GACvB50I,QAAQC,QAAQ,MAAM6Z,KAAK86H,G,IAqBzBm/J,E,8BACF,aAAmC,IAAvB96P,EAAuB,uDAAZ,EAAG4vC,EAAS,uDAAD,EAAC,oBAC/BptF,KAAKu4S,WAAa,GAClBv4S,KAAKw4S,YAAc,GACnBx4S,KAAKy4S,cAAgB,GACrBz4S,KAAK04S,UAAW,EAChB14S,KAAKwD,YAAa,EAClBxD,KAAK24S,WAAY,EACjB34S,KAAKm0S,UAAY,EACjBn0S,KAAK44S,aAAe,KACpB54S,KAAKojC,UAAYoa,EAAW4vC,G,wBAEhC,WACSptF,KAAK24S,YACN34S,KAAK24S,WAAY,EACjB34S,KAAKu4S,WAAWllS,QAAQ,SAAArE,GAAE,OAAIA,MAC9BhP,KAAKu4S,WAAa,M,qBAG1B,SAAQvpS,GACJhP,KAAKw4S,YAAY50S,KAAKoL,K,oBAE1B,SAAOA,GACHhP,KAAKu4S,WAAW30S,KAAKoL,K,uBAEzB,SAAUA,GACNhP,KAAKy4S,cAAc70S,KAAKoL,K,wBAE5B,WACI,OAAOhP,KAAK04S,W,kBAEhB,c,kBACA,WACS14S,KAAK64S,eACN74S,KAAK84S,WACL94S,KAAK+4S,oBAET/4S,KAAK04S,UAAW,I,8BAGpB,WAAgB,WACZL,EAAkB,kBAAM,EAAKW,gB,sBAEjC,WACIh5S,KAAKw4S,YAAYnlS,QAAQ,SAAArE,GAAE,OAAIA,MAC/BhP,KAAKw4S,YAAc,K,mBAEvB,c,qBACA,c,oBACA,WACIx4S,KAAKg5S,c,qBAET,WACSh5S,KAAKwD,aACNxD,KAAKwD,YAAa,EACbxD,KAAK64S,cACN74S,KAAK84S,WAET94S,KAAKi5S,SACLj5S,KAAKy4S,cAAcplS,QAAQ,SAAArE,GAAE,OAAIA,MACjChP,KAAKy4S,cAAgB,M,mBAG7B,c,yBACA,SAAYzuS,GACRhK,KAAKm0S,UAAYn0S,KAAKojC,UAAYp5B,EAAWhK,KAAKojC,UAAY,I,yBAElE,WACI,OAAOpjC,KAAKojC,UAAYpjC,KAAKm0S,UAAYn0S,KAAKojC,UAAY,I,6BAG9D,SAAgB81Q,GACZ,IAAMC,EAAuB,SAAbD,EAAuBl5S,KAAKw4S,YAAcx4S,KAAKu4S,WAC/DY,EAAQ9lS,QAAQ,SAAArE,GAAE,OAAIA,MACtBmqS,EAAQh1S,OAAS,M,GAmBnBi1S,E,8BACF,WAAYC,GAAQ,+BAChBr5S,KAAKu4S,WAAa,GAClBv4S,KAAKw4S,YAAc,GACnBx4S,KAAK24S,WAAY,EACjB34S,KAAK04S,UAAW,EAChB14S,KAAKwD,YAAa,EAClBxD,KAAKy4S,cAAgB,GACrBz4S,KAAK44S,aAAe,KACpB54S,KAAKojC,UAAY,EACjBpjC,KAAKs5S,QAAUD,EACf,IAAIE,EAAY,EACZC,EAAe,EACfC,EAAa,EACX78H,EAAQ58K,KAAKs5S,QAAQn1S,OACd,GAATy4K,EACAy7H,EAAkB,kBAAM,EAAKW,cAG7Bh5S,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GACjBA,EAAOo2H,OAAO,aACJH,GAAa38H,GACf,EAAKo8H,cAGb11H,EAAOnqD,UAAU,aACPqgL,GAAgB58H,GAClB,EAAKrvK,eAGb+1K,EAAOq2H,QAAQ,aACLF,GAAc78H,GAChB,EAAKk8H,eAKrB94S,KAAKojC,UAAYpjC,KAAKs5S,QAAQ7jS,OAAO,SAACoyD,EAAMy7G,GAAP,OAAkB/kK,KAAKukC,IAAI+kB,EAAMy7G,EAAOlgJ,YAAY,I,wBAE7F,WACSpjC,KAAK24S,YACN34S,KAAK24S,WAAY,EACjB34S,KAAKu4S,WAAWllS,QAAQ,SAAArE,GAAE,OAAIA,MAC9BhP,KAAKu4S,WAAa,M,kBAG1B,WACIv4S,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAOgiH,W,qBAE1C,SAAQt2R,GACJhP,KAAKw4S,YAAY50S,KAAKoL,K,sBAE1B,WACShP,KAAK64S,eACN74S,KAAK04S,UAAW,EAChB14S,KAAKw4S,YAAYnlS,QAAQ,SAAArE,GAAE,OAAIA,MAC/BhP,KAAKw4S,YAAc,M,oBAG3B,SAAOxpS,GACHhP,KAAKu4S,WAAW30S,KAAKoL,K,uBAEzB,SAAUA,GACNhP,KAAKy4S,cAAc70S,KAAKoL,K,wBAE5B,WACI,OAAOhP,KAAK04S,W,kBAEhB,WACS14S,KAAK44S,cACN54S,KAAKslS,OAETtlS,KAAK84S,WACL94S,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAOC,W,mBAE1C,WACIvjL,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAO/1F,Y,qBAE1C,WACIvtF,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAOs2H,c,oBAE1C,WACI55S,KAAKg5S,YACLh5S,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAO21H,a,qBAE1C,WACIj5S,KAAKuN,e,wBAET,WACSvN,KAAKwD,aACNxD,KAAKwD,YAAa,EAClBxD,KAAKg5S,YACLh5S,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAOpiK,YACtClhB,KAAKy4S,cAAcplS,QAAQ,SAAArE,GAAE,OAAIA,MACjChP,KAAKy4S,cAAgB,M,mBAG7B,WACIz4S,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAOtmD,UACtCh9H,KAAKwD,YAAa,EAClBxD,KAAK24S,WAAY,EACjB34S,KAAK04S,UAAW,I,yBAEpB,SAAYnvK,GACR,IAAMswK,EAAiBtwK,EAAIvpI,KAAKojC,UAChCpjC,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GACjB,IAAMt5K,EAAWs5K,EAAOlgJ,UAAY7kB,KAAKG,IAAI,EAAGm7R,EAAiBv2H,EAAOlgJ,WAAa,EACrFkgJ,EAAOw2H,YAAY9vS,O,yBAG3B,WACI,IAAM+vS,EAAgB/5S,KAAKs5S,QAAQ7jS,OAAO,SAACukS,EAAc12H,GAErD,OAD4C,OAAjB02H,GAAyB12H,EAAOlgJ,UAAY42Q,EAAa52Q,UACxDkgJ,EAAS02H,GACtC,MACH,OAAwB,MAAjBD,EAAwBA,EAAcE,cAAgB,I,2BAEjE,WACIj6S,KAAKs5S,QAAQjmS,QAAQ,SAAAiwK,GACbA,EAAO42H,eACP52H,EAAO42H,oB,6BAKnB,SAAgBhB,GACZ,IAAMC,EAAuB,SAAbD,EAAuBl5S,KAAKw4S,YAAcx4S,KAAKu4S,WAC/DY,EAAQ9lS,QAAQ,SAAArE,GAAE,OAAIA,MACtBmqS,EAAQh1S,OAAS,M,GAWnBg2S,EAAa,K,wiBC9nCnB,SAASC,IAML,MAA0B,oBAAZzvD,SAAyD,qBAA9B,GAAG14N,SAASiD,KAAKy1N,SAE9D,SAAS0vD,EAAoBf,GACzB,OAAQA,EAAQn1S,QACZ,KAAK,EACD,OAAO,IAAI,IACf,KAAK,EACD,OAAOm1S,EAAQ,GACnB,QACI,OAAO,IAAI,IAAsBA,IAG7C,SAASgB,EAAmBC,EAAQC,EAAYnvS,EAAS2sS,GAA0C,IAA/ByC,EAA+B,uDAAnB,GAAIC,EAAe,uDAAF,GACvFnrK,EAAS,GACTorK,EAAsB,GACxBC,GAAkB,EAClBC,EAAmB,KA+BvB,GA9BA7C,EAAU3kS,QAAQ,SAAAynS,GACd,IAAMjwS,EAASiwS,EAAE,OACXC,EAAelwS,GAAU+vS,EACzBI,EAAsBD,GAAgBF,GAAqB,GACjEr+R,OAAOC,KAAKq+R,GAAIznS,QAAQ,SAAA+6B,GACpB,IAAI6sQ,EAAiB7sQ,EACjB8sQ,EAAkBJ,EAAG1sQ,GACzB,GAAa,WAATA,EAEA,OADA6sQ,EAAiBT,EAAWW,sBAAsBF,EAAgB1rK,GAC1D2rK,GACJ,KAAK,IACDA,EAAkBT,EAAUrsQ,GAC5B,MACJ,KAAK,IACD8sQ,EAAkBR,EAAWtsQ,GAC7B,MACJ,QACI8sQ,EACIV,EAAWY,oBAAoBhtQ,EAAM6sQ,EAAgBC,EAAiB3rK,GAItFyrK,EAAmBC,GAAkBC,IAEpCH,GACDJ,EAAoB/2S,KAAKo3S,GAE7BH,EAAmBG,EACnBJ,EAAiB/vS,IAEjB0kI,EAAOprI,OAAQ,CACf,IAAMk3S,EAAa,QACnB,MAAM,IAAIhnR,MAAJ,wDAA2DgnR,GAA3D,OAAwE9rK,EAAOv/F,KAAKqrQ,KAE9F,OAAOV,EAEX,SAASW,EAAeh4H,EAAQxtI,EAAWxtB,EAAO2K,GAC9C,OAAQ6iB,GACJ,IAAK,QACDwtI,EAAOq2H,QAAQ,kBAAM1mR,EAAS3K,GAASizR,EAAmBjzR,EAAO,QAASg7J,MAC1E,MACJ,IAAK,OACDA,EAAOo2H,OAAO,kBAAMzmR,EAAS3K,GAASizR,EAAmBjzR,EAAO,OAAQg7J,MACxE,MACJ,IAAK,UACDA,EAAOnqD,UAAU,kBAAMlmG,EAAS3K,GAASizR,EAAmBjzR,EAAO,UAAWg7J,OAI1F,SAASi4H,EAAmBtnR,EAAGilR,EAAW51H,GACtC,IAAMlgJ,EAAYkgJ,EAAOlgJ,UAEnB9a,EAAQkzR,EAAmBvnR,EAAE5oB,QAAS4oB,EAAEwnR,YAAaxnR,EAAE0uI,UAAW1uI,EAAEkP,QAAS+1Q,GAAajlR,EAAEilR,UAAwBz0S,MAAb2+B,EAAyBnP,EAAEmP,UAAYA,IADnIkgJ,EAAOt2J,UAElBld,EAAOmkB,EAAC,MAId,OAHY,MAARnkB,IACAwY,EAAK,MAAYxY,GAEdwY,EAEX,SAASkzR,EAAmBnwS,EAASowS,EAAa94I,EAAWx/H,GAAgD,IAAvC+1Q,EAAuC,uDAA3B,GAAI91Q,EAAuB,uDAAX,EAAGpW,EAAQ,uCACzG,MAAO,CAAE3hB,UAASowS,cAAa94I,YAAWx/H,UAAS+1Q,YAAW91Q,YAAWpW,WAAYA,GAEzF,SAAS0uR,EAAgBjyS,EAAKkT,EAAK+nG,GAC/B,IAAInjH,EAaJ,OAZIkI,aAAegE,KACflM,EAAQkI,EAAIyI,IAAIyK,KAEZlT,EAAI4K,IAAIsI,EAAKpb,EAAQmjH,IAIzBnjH,EAAQkI,EAAIkT,MAERpb,EAAQkI,EAAIkT,GAAO+nG,GAGpBnjH,EAEX,SAASo6S,EAAqBC,GAC1B,IAAMC,EAAeD,EAAQ3yS,QAAQ,KAGrC,MAAO,CAFI2yS,EAAQ5wP,UAAU,EAAG6wP,GACjBD,EAAQrkQ,OAAOskQ,EAAe,IAGjD,IAAIC,EAAY,SAACC,EAAMC,GAAP,OAAgB,GAE5BC,EAAW,SAAC5wS,EAASipC,GAAV,OAAuB,GAElC4nQ,EAAS,SAAC7wS,EAASipC,EAAU5qB,GAC7B,MAAO,IAKLyyR,EAAU/B,KACZ+B,GAA8B,oBAAZv9L,WAElBk9L,EAAY,SAACC,EAAMC,GACf,OAAOD,EAAKnvR,SAASovR,IAEzBC,EAAY,WACR,GAAIE,GAAWv9L,QAAQlsF,UAAUuY,QAC7B,OAAO,SAAC5/B,EAASipC,GAAV,OAAuBjpC,EAAQ4/B,QAAQqJ,IAG9C,IAAMssI,EAAQhiE,QAAQlsF,UAChB1jB,EAAK4xK,EAAMlsI,iBAAmBksI,EAAMw7H,oBAAsBx7H,EAAMjsI,mBAClEisI,EAAMy7H,kBAAoBz7H,EAAM/hE,sBACpC,OAAI7vG,EACO,SAAC3D,EAASipC,GAAV,OAAuBtlC,EAAG2oC,MAAMtsC,EAAS,CAACipC,KAG1C2nQ,EAZP,GAgBZC,EAAS,SAAC7wS,EAASipC,EAAU5qB,GACzB,IAAI63G,EAAU,GACd,GAAI73G,EASA,IADA,IAAM4yR,EAAQjxS,EAAQ0gG,iBAAiBz3D,GAC9BzsC,EAAI,EAAGA,EAAIy0S,EAAMn4S,OAAQ0D,IAC9B05H,EAAQ39H,KAAK04S,EAAMz0S,QAGtB,CACD,IAAM00S,EAAMlxS,EAAQD,cAAckpC,GAC9BioQ,GACAh7K,EAAQ39H,KAAK24S,GAGrB,OAAOh7K,IAQf,IAAIi7K,EAAe,KACfC,GAAa,EACjB,SAAS,EAAsBruQ,GACtBouQ,IACDA,GAcmB,oBAAZ7xQ,SACAA,SAAS7H,KAEb,OAjB6B,GAChC25Q,IAAaD,EAAajxS,OAAS,qBAAsBixS,EAAajxS,OAE1E,IAAIqxB,GAAS,EAQb,OAPI4/Q,EAAajxS,QAbrB,SAA8B6iC,GAG1B,MAA+B,SAAxBA,EAAK4c,UAAU,EAAG,GAUE0xP,CAAqBtuQ,MAC5CxR,EAASwR,KAAQouQ,EAAajxS,QACfkxS,IAEX7/Q,EADkB,SAAWwR,EAAK2B,OAAO,GAAGnC,cAAgBQ,EAAKmJ,OAAO,KAClDilQ,EAAajxS,OAGpCqxB,EAQX,IAAM,EAAiBq/Q,EACjB,EAAkBH,EAClB,EAAcI,EACpB,SAASS,EAAoBzvD,GACzB,IAAM0vD,EAAS,GAKf,OAJApgS,OAAOC,KAAKywO,GAAQ75O,QAAQ,SAAA+6B,GACxB,IAAMyuQ,EAAUzuQ,EAAK5sC,QAAQ,kBAAmB,SAChDo7S,EAAOC,GAAW3vD,EAAO9+M,KAEtBwuQ,E,qBAaLE,E,oGACF,SAAsB1uQ,GAClB,OAAO,EAAsBA,K,4BAEjC,SAAe/iC,EAASipC,GACpB,OAAO,EAAejpC,EAASipC,K,6BAEnC,SAAgBynQ,EAAMC,GAClB,OAAO,EAAgBD,EAAMC,K,mBAEjC,SAAM3wS,EAASipC,EAAU5qB,GACrB,OAAO,EAAYre,EAASipC,EAAU5qB,K,0BAE1C,SAAare,EAAS+iC,EAAMs2E,GACxB,OAAOA,GAAgB,K,qBAE3B,SAAQr5G,EAAS2sS,EAAWx6P,EAAU4vC,EAAOi3H,GACzC,OAAO,IAAI,IAAoB7mK,EAAU4vC,O,UAGjD0vN,EAAoBv8S,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKs8S,IACtFA,EAAoBl4S,WAAQ,KAA0B,CAAEC,MAAOi4S,EAAqBh4S,QAASg4S,EAAoBv8S,Y,sBAO3Gw8S,E,sDAENA,EAAgBC,KAAO,IAAI,E,KAYrBC,EAAkB,WAClBC,EAAkB,WAGlBC,EAAuB,aACvBC,EAAsB,cACtBC,EAAyB,eACzBC,EAAwB,gBAC9B,SAASC,EAAmBh8S,GACxB,GAAoB,iBAATA,EACP,OAAOA,EACX,IAAM0pC,EAAU1pC,EAAM+vC,MAAM,qBAC5B,OAAKrG,GAAWA,EAAQ9mC,OAAS,EACtB,EACJq5S,EAAsB3vR,WAAWod,EAAQ,IAAKA,EAAQ,IAEjE,SAASuyQ,EAAsBj8S,EAAOk9C,GAClC,OAAQA,GACJ,IAAK,IACD,OAtBO,IAsBAl9C,EACX,QACI,OAAOA,GAGnB,SAASk8S,EAAc3F,EAASvoK,EAAQmuK,GACpC,OAAO5F,EAAQpqQ,eAAe,YAC1BoqQ,EAGR,SAA6BhxB,EAAKv3I,EAAQmuK,GACtC,IACIlgQ,EACA4vC,EAAQ,EACRi3H,EAAS,GACb,GAAmB,iBAARyiE,EAAkB,CACzB,IAAM77O,EAAU67O,EAAIx1O,MALV,4EAMV,GAAgB,OAAZrG,EAEA,OADAskG,EAAO3rI,KAAP,qCAA0CkjR,EAA1C,kBACO,CAAEtpO,SAAU,EAAG4vC,MAAO,EAAGi3H,OAAQ,IAE5C7mK,EAAWggQ,EAAsB3vR,WAAWod,EAAQ,IAAKA,EAAQ,IACjE,IAAM0yQ,EAAa1yQ,EAAQ,GACT,MAAd0yQ,IACAvwN,EAAQowN,EAAsB3vR,WAAW8vR,GAAa1yQ,EAAQ,KAElE,IAAM2yQ,EAAY3yQ,EAAQ,GACtB2yQ,IACAv5F,EAASu5F,QAIbpgQ,EAAWspO,EAEf,IAAK42B,EAAqB,CACtB,IAAIG,GAAiB,EACjB5/R,EAAasxH,EAAOprI,OACpBq5C,EAAW,IACX+xF,EAAO3rI,KAAP,oEACAi6S,GAAiB,GAEjBzwN,EAAQ,IACRmiD,EAAO3rI,KAAP,iEACAi6S,GAAiB,GAEjBA,GACAtuK,EAAOhnG,OAAOtqB,EAAY,EAA1B,qCAA2D6oQ,EAA3D,kBAGR,MAAO,CAAEtpO,WAAU4vC,QAAOi3H,UAzCtBy5F,CAAoBhG,EAASvoK,EAAQmuK,GA2C7C,SAASK,EAAQhgS,GAAqB,IAAhB0e,EAAgB,uDAAF,GAIhC,OAHAjgB,OAAOC,KAAKsB,GAAK1K,QAAQ,SAAA+6B,GACrB3R,EAAY2R,GAAQrwB,EAAIqwB,KAErB3R,EAYX,SAASuhR,EAAWllS,EAAQmlS,GAA+B,IAAhBxhR,EAAgB,uDAAF,GACrD,GAAIwhR,EAIA,IAAK,IAAI7vQ,KAAQt1B,EACb2jB,EAAY2R,GAAQt1B,EAAOs1B,QAI/B2vQ,EAAQjlS,EAAQ2jB,GAEpB,OAAOA,EAEX,SAASyhR,EAAwB7yS,EAASsR,EAAKpb,GAG3C,OAAIA,EACOob,EAAM,IAAMpb,EAAQ,IAGpB,GAGf,SAAS48S,EAAoB9yS,GAMzB,IADA,IAAI+yS,EAAiB,GACZv2S,EAAI,EAAGA,EAAIwD,EAAQE,MAAMpH,OAAQ0D,IAAK,CAC3C,IAAM8U,EAAMtR,EAAQE,MAAM+F,KAAKzJ,GAC/Bu2S,GAAkBF,EAAwB7yS,EAASsR,EAAKtR,EAAQE,MAAM82I,iBAAiB1lI,IAE3F,IAAK,IAAM,KAAOtR,EAAQE,MAEjBF,EAAQE,MAAMmiC,eAAe,KAAQ,EAAI+pH,WAAW,OAIzD2mJ,GAAkBF,EAAwB7yS,EADN,EA2F3B7J,QAAQ,kBAAmB,SAASob,cA1FevR,EAAQE,MAAM,KAE9EF,EAAQwD,aAAa,QAASuvS,GAElC,SAAS,EAAU/yS,EAASyN,EAAQulS,GAC5BhzS,EAAO,QACPmR,OAAOC,KAAK3D,GAAQzF,QAAQ,SAAA+6B,GACxB,IAAMkwQ,EAAYC,GAAoBnwQ,GAClCiwQ,IAAiBA,EAAa3wQ,eAAeU,KAC7CiwQ,EAAajwQ,GAAQ/iC,EAAQE,MAAM+yS,IAEvCjzS,EAAQE,MAAM+yS,GAAaxlS,EAAOs1B,KAGlCgsQ,KACA+D,EAAoB9yS,IAIhC,SAASmzS,EAAYnzS,EAASyN,GACtBzN,EAAO,QACPmR,OAAOC,KAAK3D,GAAQzF,QAAQ,SAAA+6B,GACxB,IAAMkwQ,EAAYC,GAAoBnwQ,GACtC/iC,EAAQE,MAAM+yS,GAAa,KAG3BlE,KACA+D,EAAoB9yS,IAIhC,SAASozS,GAAwB1tE,GAC7B,OAAIxmO,MAAMyL,QAAQ+6N,GACM,GAAhBA,EAAM5sO,OACC4sO,EAAM,GACV,YAASA,GAEbA,EAaX,IAAM2tE,GAAc,IAAIx9K,OAAJ,UAlLY,KAkLZ,wBAjLU,MAiLoE,KAClG,SAASy9K,GAAmBp9S,GACxB,IAAIuoF,EAAS,GACb,GAAqB,iBAAVvoF,EAAoB,CAE3B,IADA,IAAI+vC,EACGA,EAAQotQ,GAAYhgQ,KAAKn9C,IAC5BuoF,EAAOlmF,KAAK0tC,EAAM,IAEtBotQ,GAAYt+M,UAAY,EAE5B,OAAOtW,EAEX,SAAS80N,GAAkBr9S,EAAOuoF,EAAQylD,GACtC,IAAMsvK,EAAWt9S,EAAM0wB,WACjByc,EAAMmwQ,EAASr9S,QAAQk9S,GAAa,SAACtsM,EAAG0sM,GAC1C,IAAIC,EAAWj1N,EAAOg1N,GAMtB,OAJKh1N,EAAOp8C,eAAeoxQ,KACvBvvK,EAAO3rI,KAAP,yDAA8Dk7S,IAC9DC,EAAW,IAERA,EAAS9sR,aAGpB,OAAOyc,GAAOmwQ,EAAWt9S,EAAQmtC,EAErC,SAAS+9N,GAAgBznI,GAGrB,IAFA,IAAMr1F,EAAM,GACRr+B,EAAO0zH,EAASnhI,QACZyN,EAAKsjB,MACT+a,EAAI/rC,KAAK0N,EAAK/P,OACd+P,EAAO0zH,EAASnhI,OAEpB,OAAO8rC,EAEX,IAAMqvQ,GAAmB,gBACzB,SAAST,GAAoB//P,GACzB,OAAOA,EAAMh9C,QAAQw9S,GAAkB,sCAAIl8R,EAAJ,yBAAIA,EAAJ,uBAAUA,EAAE,GAAG8qB,gBAK1D,SAASqxQ,GAA+BzhQ,EAAU4vC,GAC9C,OAAoB,IAAb5vC,GAA4B,IAAV4vC,EAE7B,SAAS8xN,GAAmC7zS,EAAS2sS,EAAWmH,GAC5D,IAAMC,EAAqB5iS,OAAOC,KAAK0iS,GACvC,GAAIC,EAAmBj7S,QAAU6zS,EAAU7zS,OAAQ,CAC/C,IAAIk7S,EAAmBrH,EAAU,GAC7BsH,EAAoB,GAOxB,GANAF,EAAmB/rS,QAAQ,SAAA+6B,GAClBixQ,EAAiB3xQ,eAAeU,IACjCkxQ,EAAkB17S,KAAKwqC,GAE3BixQ,EAAiBjxQ,GAAQ+wQ,EAAe/wQ,KAExCkxQ,EAAkBn7S,OAElB,IAF0B,iBAGtB,IAAI22S,EAAK9C,EAAUnwS,GACnBy3S,EAAkBjsS,QAAQ,SAAU+6B,GAChC0sQ,EAAG1sQ,GAAQmxQ,GAAal0S,EAAS+iC,MAHhCvmC,EAAI,EAAGA,EAAImwS,EAAU7zS,OAAQ0D,IAAtC,IAQR,OAAOmwS,EAEX,SAASwH,GAAaC,EAAS/7J,EAAMlyI,GACjC,OAAQkyI,EAAKhjJ,MACT,KAAK,EACD,OAAO++S,EAAQC,aAAah8J,EAAMlyI,GACtC,KAAK,EACD,OAAOiuS,EAAQE,WAAWj8J,EAAMlyI,GACpC,KAAK,EACD,OAAOiuS,EAAQG,gBAAgBl8J,EAAMlyI,GACzC,KAAK,EACD,OAAOiuS,EAAQI,cAAcn8J,EAAMlyI,GACvC,KAAK,EACD,OAAOiuS,EAAQK,WAAWp8J,EAAMlyI,GACpC,KAAK,EACD,OAAOiuS,EAAQM,aAAar8J,EAAMlyI,GACtC,KAAK,EACD,OAAOiuS,EAAQO,eAAet8J,EAAMlyI,GACxC,KAAK,EACD,OAAOiuS,EAAQQ,WAAWv8J,EAAMlyI,GACpC,KAAK,EACD,OAAOiuS,EAAQS,eAAex8J,EAAMlyI,GACxC,KAAK,EACD,OAAOiuS,EAAQU,kBAAkBz8J,EAAMlyI,GAC3C,KAAK,GACD,OAAOiuS,EAAQW,gBAAgB18J,EAAMlyI,GACzC,KAAK,GACD,OAAOiuS,EAAQY,WAAW38J,EAAMlyI,GACpC,KAAK,GACD,OAAOiuS,EAAQa,aAAa58J,EAAMlyI,GACtC,QACI,MAAM,IAAI6iB,MAAJ,qDAAwDqvH,EAAKhjJ,QAG/E,SAAS6+S,GAAal0S,EAAS+iC,GAC3B,OAAOjjB,OAAOqoD,iBAAiBnoE,GAAS+iC,GAU5C,IAAMmyQ,GAAY,IAqDZC,GAAsB,IAAI7yS,IAAI,CAAC,OAAQ,MACvC8yS,GAAuB,IAAI9yS,IAAI,CAAC,QAAS,MAC/C,SAAS+yS,GAAqBC,EAAKC,GAC/B,IAAMC,EAAoBL,GAAoBpsS,IAAIusS,IAAQF,GAAqBrsS,IAAIusS,GAC7EG,EAAoBN,GAAoBpsS,IAAIwsS,IAAQH,GAAqBrsS,IAAIwsS,GACnF,OAAO,SAACj+I,EAAWx/H,GACf,IAAI49Q,EAAWJ,GAAOJ,IAAaI,GAAOh+I,EACtCq+I,EAAWJ,GAAOL,IAAaK,GAAOz9Q,EAO1C,OANK49Q,GAAYF,GAA0C,kBAAdl+I,IACzCo+I,EAAWp+I,EAAY69I,GAAoBpsS,IAAIusS,GAAOF,GAAqBrsS,IAAIusS,KAE9EK,GAAYF,GAAwC,kBAAZ39Q,IACzC69Q,EAAW79Q,EAAUq9Q,GAAoBpsS,IAAIwsS,GAAOH,GAAqBrsS,IAAIwsS,IAE1EG,GAAYC,GAW3B,IAAMC,GAAa,QACbC,GAAmB,IAAIhgL,OAAJ,YAAiB+/K,GAAjB,QAAoC,KAqC7D,SAASE,GAAkB5G,EAAQhwK,EAAUgF,GACzC,OAAO,IAAI,GAA2BgrK,GAAQr2N,MAAMqmD,EAAUgF,GAElE,IACM,G,8BACF,WAAY6xK,GAAO,oBACfphT,KAAKohT,QAAUA,G,oBAEnB,SAAM72K,EAAUgF,GACZ,IAAM/9H,EAAU,IAAI,GAA2B+9H,GAE/C,OADAvvI,KAAKqhT,8BAA8B7vS,GAC5BguS,GAAax/S,KAAMy+S,GAAwBl0K,GAAW/4H,K,2CAEjE,SAA8BA,GAC1BA,EAAQ8vS,qBAXM,GAYd9vS,EAAQ+vS,gBAAkB,GAC1B/vS,EAAQ+vS,gBAbM,IAa2B,GACzC/vS,EAAQgwS,YAAc,I,0BAE1B,SAAaj3K,EAAU/4H,GAAO,WACtBiwS,EAAajwS,EAAQiwS,WAAa,EAClCC,EAAWlwS,EAAQkwS,SAAW,EAC5Bz3S,EAAS,GACT03S,EAAc,GAyBpB,MAxB+B,KAA3Bp3K,EAASppI,KAAK4uC,OAAO,IACrBv+B,EAAQ+9H,OAAO3rI,KAAK,wFAExB2mI,EAASstK,YAAYxkS,QAAQ,SAAAJ,GAEzB,GADA,EAAKouS,8BAA8B7vS,GACnB,GAAZyB,EAAIvS,KAAuB,CAC3B,IAAMkhT,EAAW3uS,EACX9R,EAAOygT,EAASzgT,KACtBA,EAAK8wB,WAAW1P,MAAM,WAAWlP,QAAQ,SAAA0kC,GACrC6pQ,EAASzgT,KAAO42C,EAChB9tC,EAAOrG,KAAK,EAAK+7S,WAAWiC,EAAUpwS,MAE1CowS,EAASzgT,KAAOA,OAEf,GAAgB,GAAZ8R,EAAIvS,KAA4B,CACrC,IAAM4kN,EAAa,EAAKs6F,gBAAgB3sS,EAAKzB,GAC7CiwS,GAAcn8F,EAAWm8F,WACzBC,GAAYp8F,EAAWo8F,SACvBC,EAAY/9S,KAAK0hN,QAGjB9zM,EAAQ+9H,OAAO3rI,KAAK,6EAGrB,CACHlD,KAAM,EACNS,KAAMopI,EAASppI,KACf8I,SACA03S,cACAF,aACAC,WACA15R,QAAS,Q,wBAGjB,SAAWuiH,EAAU/4H,GACjB,IAAMqwS,EAAW7hT,KAAKigT,WAAW11K,EAASzxH,OAAQtH,GAC5CswS,EAAav3K,EAASviH,SAAWuiH,EAASviH,QAAQ8hE,QAAW,KACnE,GAAI+3N,EAASE,sBAAuB,CAChC,IAAMC,EAAc,IAAIr0S,IAClBm8E,EAASg4N,GAAa,GAa5B,GAZAD,EAAS/oS,OAAOzF,QAAQ,SAAA9R,GACpB,GAAI8pM,GAAS9pM,GAAQ,CACjB,IAAM0gT,EAAY1gT,EAClBib,OAAOC,KAAKwlS,GAAW5uS,QAAQ,SAAA+6B,GAC3BuwQ,GAAmBsD,EAAU7zQ,IAAO/6B,QAAQ,SAAA4+E,GACnCnI,EAAOp8C,eAAeukD,IACvB+vN,EAAYn/S,IAAIovF,UAMhC+vN,EAAY7hR,KAAM,CAClB,IAAM+hR,EAAiBz1C,GAAgBu1C,EAAYluS,UACnDtC,EAAQ+9H,OAAO3rI,KAAf,iBAA8B2mI,EACzBppI,KADL,yFAC0F+gT,EAAelyQ,KAAK,SAGtH,MAAO,CACHtvC,KAAM,EACNS,KAAMopI,EAASppI,KACfoK,MAAOs2S,EACP75R,QAAS85R,EAAY,CAAEh4N,OAAQg4N,GAAc,Q,6BAGrD,SAAgBv3K,EAAU/4H,GACtBA,EAAQiwS,WAAa,EACrBjwS,EAAQkwS,SAAW,EACnB,IA/MqBS,EAAiB5yK,EACpC6yK,EA8MIz+Q,EAAY67Q,GAAax/S,KAAMy+S,GAAwBl0K,EAAS5mG,WAAYnyB,GAElF,MAAO,CACH9Q,KAAM,EACN2hT,UAnNiBF,EAgNgB53K,EAAS2tK,KAhNR3oK,EAgNc/9H,EAAQ+9H,OA/M1D6yK,EAAc,GACU,iBAAnBD,EACPA,EAAgB5/R,MAAM,WAAWlP,QAAQ,SAAAq7B,GAAG,OAOpD,SAAiC4zQ,EAAUF,EAAa7yK,GACpD,GAAmB,KAAf+yK,EAAS,GAAW,CACpB,IAAM1lR,EAqBd,SAA6Bu9F,EAAOoV,GAChC,OAAQpV,GACJ,IAAK,SACD,MAAO,YACX,IAAK,SACD,MAAO,YACX,IAAK,aACD,OAAO,SAACwoC,EAAWx/H,GAAZ,OAAwBtV,WAAWsV,GAAWtV,WAAW80I,IACpE,IAAK,aACD,OAAO,SAACA,EAAWx/H,GAAZ,OAAwBtV,WAAWsV,GAAWtV,WAAW80I,IACpE,QAEI,OADApzB,EAAO3rI,KAAP,sCAA2Cu2H,EAA3C,uBACO,UAjCIooL,CAAoBD,EAAU/yK,GAC7C,GAAqB,mBAAV3yG,EAEP,YADAwlR,EAAYx+S,KAAKg5B,GAGrB0lR,EAAW1lR,EAEf,IAAM0U,EAAQgxQ,EAAShxQ,MAAM,2CAC7B,GAAa,MAATA,GAAiBA,EAAMntC,OAAS,EAEhC,OADAorI,EAAO3rI,KAAP,8CAAmD0+S,EAAnD,uBACOF,EAEX,IAAMz/I,EAAYrxH,EAAM,GAClBuQ,EAAYvQ,EAAM,GAClBnO,EAAUmO,EAAM,GACtB8wQ,EAAYx+S,KAAK88S,GAAqB/9I,EAAWx/H,IAE7B,KAAhB0e,EAAU,IADa8gH,GAAa49I,IAAap9Q,GAAWo9Q,IAE5D6B,EAAYx+S,KAAK88S,GAAqBv9Q,EAASw/H,IA3BC6/I,CAAwB9zQ,EAAK0zQ,EAAa7yK,KAG1F6yK,EAAYx+S,KAAKu+S,GAEdC,GA4MCz+Q,YACA89Q,WAAYjwS,EAAQiwS,WACpBC,SAAUlwS,EAAQkwS,SAClB15R,QAASy6R,GAA0Bl4K,EAASviH,Y,2BAGpD,SAAcuiH,EAAU/4H,GAAO,WAC3B,MAAO,CACH9Q,KAAM,EACNqwO,MAAOxmG,EAASwmG,MAAMtnO,IAAI,SAAAmb,GAAC,OAAI46R,GAAa,EAAM56R,EAAGpT,KACrDwW,QAASy6R,GAA0Bl4K,EAASviH,Y,wBAGpD,SAAWuiH,EAAU/4H,GAAO,WAClBgwS,EAAchwS,EAAQgwS,YACxBkB,EAAe,EACb3xE,EAAQxmG,EAASwmG,MAAMtnO,IAAI,SAAA+9F,GAC7Bh2F,EAAQgwS,YAAcA,EACtB,IAAMmB,EAAWnD,GAAa,EAAMh4M,EAAMh2F,GAE1C,OADAkxS,EAAenkS,KAAKukC,IAAI4/P,EAAclxS,EAAQgwS,aACvCmB,IAGX,OADAnxS,EAAQgwS,YAAckB,EACf,CACHhiT,KAAM,EACNqwO,QACA/oN,QAASy6R,GAA0Bl4K,EAASviH,Y,0BAGpD,SAAauiH,EAAU/4H,GACnB,IAEIqwS,EAFEe,EAkSd,SAA4BrhT,EAAOguI,GAC/B,IAAIuoK,EAAU,KACd,GAAIv2S,EAAMmsC,eAAe,YACrBoqQ,EAAUv2S,OAET,GAAoB,iBAATA,EAEZ,OAAOshT,GADUpF,EAAcl8S,EAAOguI,GAAQ/xF,SACf,EAAG,IAEtC,IAAMslQ,EAAWvhT,EAEjB,GADkBuhT,EAASvgS,MAAM,OAAOna,KAAK,SAAAnI,GAAC,MAAmB,KAAfA,EAAE8vC,OAAO,IAA4B,KAAf9vC,EAAE8vC,OAAO,KAClE,CACX,IAAMgzQ,EAAMF,GAAc,EAAG,EAAG,IAGhC,OAFAE,EAAIC,SAAU,EACdD,EAAID,SAAWA,EACRC,EAGX,OAAOF,IADP/K,EAAUA,GAAW2F,EAAcqF,EAAUvzK,IAChB/xF,SAAUs6P,EAAQ1qN,MAAO0qN,EAAQzzF,QApTxC4+F,CAAmB14K,EAASutK,QAAStmS,EAAQ+9H,QAC/D/9H,EAAQ0xS,sBAAwBN,EAEhC,IAAIO,EAAgB54K,EAASzxH,OAASyxH,EAASzxH,OAAS,YAAM,IAC9D,GAA0B,GAAtBqqS,EAAcziT,KACdmhT,EAAW7hT,KAAKggT,eAAemD,EAAe3xS,OAE7C,CACD,IAAI,EAAgB+4H,EAASzxH,OACzBsnB,GAAU,EACd,IAAK,EAAe,CAChBA,GAAU,EACV,IAAMgjR,EAAe,GACjBR,EAAUv+F,SACV++F,EAAY,OAAaR,EAAUv+F,QAEvC,EAAgB,YAAM++F,GAE1B5xS,EAAQgwS,aAAeoB,EAAUplQ,SAAWolQ,EAAUx1N,MACtD,IAAMi2N,EAAYrjT,KAAKigT,WAAW,EAAezuS,GACjD6xS,EAAUC,YAAcljR,EACxByhR,EAAWwB,EAGf,OADA7xS,EAAQ0xS,sBAAwB,KACzB,CACHxiT,KAAM,EACNo3S,QAAS8K,EACTr3S,MAAOs2S,EACP75R,QAAS,Q,wBAGjB,SAAWuiH,EAAU/4H,GACjB,IAAMuxS,EAAM/iT,KAAKujT,cAAch5K,EAAU/4H,GAEzC,OADAxR,KAAKwjT,kBAAkBT,EAAKvxS,GACrBuxS,I,2BAEX,SAAcx4K,EAAU/4H,GACpB,IAAMsH,EAAS,GACXvO,MAAMyL,QAAQu0H,EAASzxH,QACvByxH,EAASzxH,OAAOzF,QAAQ,SAAAowS,GACK,iBAAdA,EACHA,GAAc,IACd3qS,EAAOlV,KAAK6/S,GAGZjyS,EAAQ+9H,OAAO3rI,KAAf,0CAAuD6/S,EAAvD,qBAIJ3qS,EAAOlV,KAAK6/S,KAKpB3qS,EAAOlV,KAAK2mI,EAASzxH,QAEzB,IAAIipS,GAAwB,EACxB2B,EAAkB,KAoBtB,OAnBA5qS,EAAOzF,QAAQ,SAAAswS,GACX,GAAIt4G,GAASs4G,GAAY,CACrB,IAAMC,EAAWD,EACXt/F,EAASu/F,EAAQ,OAKvB,GAJIv/F,IACAq/F,EAAkBr/F,SACXu/F,EAAQ,SAEd7B,EACD,IAAK,IAAI3zQ,KAAQw1Q,EAEb,GADcA,EAASx1Q,GACbnc,WAAWhpB,QAzlBb,OAylBiD,EAAG,CACxD84S,GAAwB,EACxB,UAMb,CACHrhT,KAAM,EACNoY,SACAurM,OAAQq/F,EACR74S,OAAQ0/H,EAAS1/H,OACjBk3S,wBACA/5R,QAAS,Q,+BAGjB,SAAkB+6R,EAAKvxS,GAAO,WACpBsmS,EAAUtmS,EAAQ0xS,sBACpBv1O,EAAUn8D,EAAQgwS,YAClB9zO,EAAYl8D,EAAQgwS,YACpB1J,GAAWpqO,EAAY,IACvBA,GAAaoqO,EAAQt6P,SAAWs6P,EAAQ1qN,OAE5C21N,EAAIjqS,OAAOzF,QAAQ,SAAAkhD,GACK,iBAATA,GAEX/3C,OAAOC,KAAK83C,GAAOlhD,QAAQ,SAAA+6B,GACvB,GAAK,EAAKgzQ,QAAQyC,sBAAsBz1Q,GAAxC,CAIA,IAld6BmhG,EACnCzlD,EACA7+C,EAgdYs2Q,EAAkB/vS,EAAQ+vS,gBAAgB/vS,EAAQ8vS,sBAClDwC,EAAiBvC,EAAgBnzQ,GACnC21Q,GAAuB,EACvBD,IACIp2O,GAAaC,GAAWD,GAAao2O,EAAep2O,WACpDC,GAAWm2O,EAAen2O,UAC1Bn8D,EAAQ+9H,OAAO3rI,KAAf,4BAAyCwqC,EAAzC,+CAAoF01Q,EAAep2O,UAAnG,oBAAwHo2O,EACnHn2O,QADL,oFACwFD,EADxF,oBAC6GC,EAD7G,QAEAo2O,GAAuB,GAK3Br2O,EAAYo2O,EAAep2O,WAE3Bq2O,IACAxC,EAAgBnzQ,GAAQ,CAAEs/B,YAAWC,YAErCn8D,EAAQwW,UApeiBunH,EAqeyB/9H,EAAQ+9H,OApepEzlD,EAoe2Ct4E,EAAQwW,QApelC8hE,QAAU,IAC3B7+C,EAAU0zQ,GAmeoBpqP,EAAMnmB,KAle9BjqC,QACR8mC,EAAQ53B,QAAQ,SAAAyrS,GACPh1N,EAAOp8C,eAAeoxQ,IACvBvvK,EAAO3rI,KAAP,sDAA2Dk7S,EAA3D,yCAycIttS,EAAQ+9H,OAAO3rI,KAAf,2CAAwDwqC,EAAxD,2D,4BA2BhB,SAAem8F,EAAU/4H,GAAO,WACtBuxS,EAAM,CAAEriT,KAAM,EAAmBoY,OAAQ,GAAIkP,QAAS,MAC5D,IAAKxW,EAAQ0xS,sBAET,OADA1xS,EAAQ+9H,OAAO3rI,KAAf,4DACOm/S,EAEX,IACIiB,EAA4B,EAC1BC,EAAU,GACZC,GAAoB,EACpBC,GAAsB,EACtBvJ,EAAiB,EACf5C,EAAYztK,EAASwmG,MAAMtnO,IAAI,SAAAqP,GACjC,IAAMvN,EAAQ,EAAKg4S,cAAczqS,EAAQtH,GACrC4yS,EAA4B,MAAhB74S,EAAMV,OAAiBU,EAAMV,OAgIzD,SAAuBiO,GACnB,GAAqB,iBAAVA,EACP,OAAO,KACX,IAAIjO,EAAS,KACb,GAAIN,MAAMyL,QAAQ8C,GACdA,EAAOzF,QAAQ,SAAAowS,GACX,GAAIp4G,GAASo4G,IAAeA,EAAW/1Q,eAAe,UAAW,CAC7D,IAAM3vB,EAAM0lS,EACZ54S,EAASgjB,WAAW9P,EAAG,eAChBA,EAAG,eAIjB,GAAIstL,GAASvyL,IAAWA,EAAO40B,eAAe,UAAW,CAC1D,IAAM3vB,EAAMjF,EACZjO,EAASgjB,WAAW9P,EAAG,eAChBA,EAAG,OAEd,OAAOlT,EAlJuDw5S,CAAc94S,EAAMuN,QACtEjO,EAAS,EASb,OARiB,MAAbu5S,IACAJ,IACAn5S,EAASU,EAAMV,OAASu5S,GAE5BD,EAAsBA,GAAuBt5S,EAAS,GAAKA,EAAS,EACpEq5S,EAAoBA,GAAqBr5S,EAAS+vS,EAClDA,EAAiB/vS,EACjBo5S,EAAQrgT,KAAKiH,GACNU,IAEP44S,GACA3yS,EAAQ+9H,OAAO3rI,KAAf,+DAEAsgT,GACA1yS,EAAQ+9H,OAAO3rI,KAAf,wDAEJ,IAAMO,EAASomI,EAASwmG,MAAM5sO,OAC1BmgT,EAAkB,EAClBN,EAA4B,GAAKA,EAA4B7/S,EAC7DqN,EAAQ+9H,OAAO3rI,KAAf,yEAEkC,GAA7BogT,IACLM,EAhCwB,GAgCiBngT,EAAS,IAEtD,IAAM4pC,EAAQ5pC,EAAS,EACjBq9S,EAAchwS,EAAQgwS,YACtB0B,EAAwB1xS,EAAQ0xS,sBAChCqB,EAAkBrB,EAAsB1lQ,SAU9C,OATAw6P,EAAU3kS,QAAQ,SAACynS,EAAIjzS,GACnB,IAAMgD,EAASy5S,EAAkB,EAAKz8S,GAAKkmC,EAAQ,EAAKu2Q,EAAkBz8S,EAAMo8S,EAAQp8S,GAClF28S,EAAwB35S,EAAS05S,EACvC/yS,EAAQgwS,YAAcA,EAAc0B,EAAsB91N,MAAQo3N,EAClEtB,EAAsB1lQ,SAAWgnQ,EACjC,EAAKhB,kBAAkB1I,EAAItpS,GAC3BspS,EAAGjwS,OAASA,EACZk4S,EAAIjqS,OAAOlV,KAAKk3S,KAEbiI,I,4BAEX,SAAex4K,EAAU/4H,GACrB,MAAO,CACH9Q,KAAM,EACNijC,UAAW67Q,GAAax/S,KAAMy+S,GAAwBl0K,EAAS5mG,WAAYnyB,GAC3EwW,QAASy6R,GAA0Bl4K,EAASviH,Y,+BAGpD,SAAkBuiH,EAAU/4H,GAExB,OADAA,EAAQkwS,WACD,CACHhhT,KAAM,EACNsnB,QAASy6R,GAA0Bl4K,EAASviH,Y,6BAGpD,SAAgBuiH,EAAU/4H,GACtB,MAAO,CACH9Q,KAAM,GACNijC,UAAW3jC,KAAKkgT,eAAe31K,EAAS5mG,UAAWnyB,GACnDwW,QAASy6R,GAA0Bl4K,EAASviH,Y,wBAGpD,SAAWuiH,EAAU/4H,GACjB,IAAMizS,EAAiBjzS,EAAQ8vS,qBACzBt5R,EAAWuiH,EAASviH,SAAW,GACrCxW,EAAQiwS,aACRjwS,EAAQkzS,aAAen6K,EACvB,MAiCR,SAA2Bj2F,GACvB,IAAMqwQ,IAAerwQ,EAAS/xB,MAAM,WAAWld,KAAK,SAAAR,GAAK,OAAIA,GAASo8S,KAQtE,OAPI0D,IACArwQ,EAAWA,EAAS9yC,QAAQ0/S,GAAkB,KAM3C,CAHP5sQ,EAAWA,EAAS9yC,QAAQ,OAAQ47S,GAC/B57S,QAAQ,QAAS,SAAA8vC,GAAK,MAAI8rQ,eAA4B9rQ,EAAMiG,OAAO,KACnE/1C,QAAQ,cAAe87S,GACVqH,GA1CkBC,CAAkBr6K,EAASj2F,UAA3D,mBAAOA,EAAP,KAAiBuwQ,EAAjB,KACArzS,EAAQ8vS,qBACJmD,EAAetgT,OAAUsgT,EAAiB,IAAMnwQ,EAAYA,EAChEonQ,EAAgBlqS,EAAQ+vS,gBAAiB/vS,EAAQ8vS,qBAAsB,IACvE,IAAM39Q,EAAY67Q,GAAax/S,KAAMy+S,GAAwBl0K,EAAS5mG,WAAYnyB,GAGlF,OAFAA,EAAQkzS,aAAe,KACvBlzS,EAAQ8vS,qBAAuBmD,EACxB,CACH/jT,KAAM,GACN4zC,WACAvG,MAAO/lB,EAAQ+lB,OAAS,EACxB3Z,WAAYpM,EAAQoM,SACpBywR,cACAlhR,YACAmhR,iBAAkBv6K,EAASj2F,SAC3BtsB,QAASy6R,GAA0Bl4K,EAASviH,Y,0BAGpD,SAAauiH,EAAU/4H,GACdA,EAAQkzS,cACTlzS,EAAQ+9H,OAAO3rI,KAAf,gDAEJ,IAAMk0S,EAA+B,SAArBvtK,EAASutK,QACrB,CAAEt6P,SAAU,EAAG4vC,MAAO,EAAGi3H,OAAQ,QACjCo5F,EAAclzK,EAASutK,QAAStmS,EAAQ+9H,QAAQ,GACpD,MAAO,CACH7uI,KAAM,GACNijC,UAAW67Q,GAAax/S,KAAMy+S,GAAwBl0K,EAAS5mG,WAAYnyB,GAC3EsmS,UACA9vR,QAAS,U,GAkBf,G,YACF,WAAYunH,GAAM,oBACdvvI,KAAKuvI,OAASA,EACdvvI,KAAKyhT,WAAa,EAClBzhT,KAAK0hT,SAAW,EAChB1hT,KAAK+kT,kBAAoB,KACzB/kT,KAAK0kT,aAAe,KACpB1kT,KAAKshT,qBAAuB,KAC5BthT,KAAKkjT,sBAAwB,KAC7BljT,KAAKwhT,YAAc,EACnBxhT,KAAKuhT,gBAAkB,GACvBvhT,KAAKgoB,QAAU,OAuBvB,SAASqjL,GAAS9pM,GACd,OAAQgJ,MAAMyL,QAAQzU,IAA0B,iBAATA,EAsB3C,SAASkhT,GAA0Bz6R,GA5DnC,IAAyBjK,EAsErB,OATIiK,GACAA,EAAU+1R,EAAQ/1R,IACP,SACPA,EAAO,QAhEMjK,EAgEuBiK,EAAO,QA/DtC+1R,EAAQhgS,GAAO,MAmExBiK,EAAU,GAEPA,EAEX,SAAS66R,GAAcrlQ,EAAU4vC,EAAOi3H,GACpC,MAAO,CAAE7mK,WAAU4vC,QAAOi3H,UAG9B,SAAS2gG,GAA0B35S,EAAS2sS,EAAWiN,EAAeC,EAAgB1nQ,EAAU4vC,GAAyC,IAAlCi3H,EAAkC,uDAAzB,KAAM8gG,EAAmB,wDACrI,MAAO,CACHzkT,KAAM,EACN2K,UACA2sS,YACAiN,gBACAC,iBACA1nQ,WACA4vC,QACAhqD,UAAWoa,EAAW4vC,EACtBi3H,SACA8gG,e,IAIF,G,8BACF,iCACInlT,KAAKolT,KAAO,IAAI33S,K,sBAEpB,SAAQpC,GACJ,IAAIg6S,EAAerlT,KAAKolT,KAAKlzS,IAAI7G,GAOjC,OANIg6S,EACArlT,KAAKolT,KAAK7yS,OAAOlH,GAGjBg6S,EAAe,GAEZA,I,oBAEX,SAAOh6S,EAASg6S,GAAY,MACpBC,EAAuBtlT,KAAKolT,KAAKlzS,IAAI7G,GACpCi6S,GACDtlT,KAAKolT,KAAK/wS,IAAIhJ,EAASi6S,EAAuB,KAElD,EAAAA,GAAqB1hT,KAArB,oBAA6ByhT,M,iBAEjC,SAAIh6S,GACA,OAAOrL,KAAKolT,KAAKhxS,IAAI/I,K,mBAEzB,WACIrL,KAAKolT,KAAK10S,Y,GAaZ60S,GAAoB,IAAIrkL,OADV,SAC8B,KAE5CskL,GAAoB,IAAItkL,OADV,SAC8B,KAqFlD,SAASukL,GAAwBlL,EAAQtxJ,EAAa85J,EAAK2C,EAAgBC,GAA4F,IAA5EC,EAA4E,uDAA3D,GAAIC,EAAuD,uDAAzC,GAAI79R,EAAqC,uCAA5B89R,EAA4B,uCAAXv2K,EAAW,uDAAF,GACjK,OAAO,IAAI,IAAkCw2K,eAAexL,EAAQtxJ,EAAa85J,EAAK2C,EAAgBC,EAAgBC,EAAgBC,EAAa79R,EAAS89R,EAAiBv2K,G,IAE3K,G,6FACF,SAAegrK,EAAQtxJ,EAAa85J,EAAK2C,EAAgBC,EAAgBC,EAAgBC,EAAa79R,EAAS89R,GAA4B,IAAXv2K,EAAW,uDAAF,GACrIu2K,EAAkBA,GAAmB,IAAI,GACzC,IAAMt0S,EAAU,IAAI,GAAyB+oS,EAAQtxJ,EAAa68J,EAAiBJ,EAAgBC,EAAgBp2K,EAAQ,IAC3H/9H,EAAQwW,QAAUA,EAClBxW,EAAQw0S,gBAAgBC,UAAU,CAACL,GAAiB,KAAMp0S,EAAQ+9H,OAAQvnH,GAC1Ew3R,GAAax/S,KAAM+iT,EAAKvxS,GAExB,IAAM00S,EAAY10S,EAAQ00S,UAAU/wS,OAAO,SAAAgxS,GAAQ,OAAIA,EAASC,sBAChE,GAAIF,EAAU/hT,QAAUqY,OAAOC,KAAKopS,GAAa1hT,OAAQ,CACrD,IAAMw6J,EAAKunJ,EAAUA,EAAU/hT,OAAS,GACnCw6J,EAAG0nJ,2BACJ1nJ,EAAGsnJ,UAAU,CAACJ,GAAc,KAAMr0S,EAAQ+9H,OAAQvnH,GAG1D,OAAOk+R,EAAU/hT,OAAS+hT,EAAUz8S,IAAI,SAAA08S,GAAQ,OAAIA,EAASJ,mBACzD,CAACf,GAA0B/7J,EAAa,GAAI,GAAI,GAAI,EAAG,EAAG,IAAI,M,0BAEtE,SAAa85J,EAAKvxS,M,wBAGlB,SAAWuxS,EAAKvxS,M,6BAGhB,SAAgBuxS,EAAKvxS,M,+BAGrB,SAAkBuxS,EAAKvxS,GACnB,IAAM80S,EAAsB90S,EAAQs0S,gBAAgBS,QAAQ/0S,EAAQnG,SACpE,GAAIi7S,EAAqB,CACrB,IAAME,EAAeh1S,EAAQi1S,iBAAiB1D,EAAI/6R,SAC5C0lD,EAAYl8D,EAAQw0S,gBAAgBxE,YACpC7zO,EAAU3tE,KAAK0mT,sBAAsBJ,EAAqBE,EAAcA,EAAax+R,SACvF0lD,GAAaC,GAGbn8D,EAAQm1S,yBAAyBh5O,GAGzCn8D,EAAQo1S,aAAe7D,I,6BAE3B,SAAgBA,EAAKvxS,GACjB,IAAMg1S,EAAeh1S,EAAQi1S,iBAAiB1D,EAAI/6R,SAClDw+R,EAAaG,2BACb3mT,KAAKkgT,eAAe6C,EAAIp/Q,UAAW6iR,GACnCh1S,EAAQm1S,yBAAyBH,EAAaR,gBAAgBxE,aAC9DhwS,EAAQo1S,aAAe7D,I,mCAE3B,SAAsBsC,EAAc7zS,EAASwW,GACzC,IACI06R,EADclxS,EAAQw0S,gBAAgBxE,YAIpChkQ,EAA+B,MAApBx1B,EAAQw1B,SAAmB+/P,EAAmBv1R,EAAQw1B,UAAY,KAC7E4vC,EAAyB,MAAjBplE,EAAQolE,MAAgBmwN,EAAmBv1R,EAAQolE,OAAS,KAQ1E,OAPiB,IAAb5vC,GACA6nQ,EAAahyS,QAAQ,SAAAwzS,GACjB,IAAMC,EAAqBt1S,EAAQu1S,4BAA4BF,EAAarpQ,EAAU4vC,GACtFs1N,EACInkS,KAAKukC,IAAI4/P,EAAcoE,EAAmBtpQ,SAAWspQ,EAAmB15N,SAG7Es1N,I,4BAEX,SAAeK,EAAKvxS,GAChBA,EAAQw1S,cAAcjE,EAAI/6R,SAAS,GACnCw3R,GAAax/S,KAAM+iT,EAAIp/Q,UAAWnyB,GAClCA,EAAQo1S,aAAe7D,I,2BAE3B,SAAcA,EAAKvxS,GAAO,WAChBy1S,EAAkBz1S,EAAQy1S,gBAC5BrlT,EAAM4P,EACJwW,EAAU+6R,EAAI/6R,QACpB,GAAIA,IAAYA,EAAQ8hE,QAAU9hE,EAAQolE,UACtCxrF,EAAM4P,EAAQi1S,iBAAiBz+R,IAC3B2+R,2BACiB,MAAjB3+R,EAAQolE,OAAe,CACM,GAAzBxrF,EAAIglT,aAAalmT,OACjBkB,EAAIokT,gBAAgBkB,wBACpBtlT,EAAIglT,aAAeO,IAEvB,IAAM/5N,EAAQmwN,EAAmBv1R,EAAQolE,OACzCxrF,EAAIwlT,cAAch6N,GAGtB21N,EAAIhyE,MAAM5sO,SACV4+S,EAAIhyE,MAAM19N,QAAQ,SAAAuR,GAAC,OAAI46R,GAAa,EAAM56R,EAAGhjB,KAE7CA,EAAIokT,gBAAgBqB,wBAIhBzlT,EAAIqlT,gBAAkBA,GACtBrlT,EAAI+kT,4BAGZn1S,EAAQo1S,aAAe7D,I,wBAE3B,SAAWA,EAAKvxS,GAAO,WACb81S,EAAiB,GACnB5E,EAAelxS,EAAQw0S,gBAAgBxE,YACrCp0N,EAAQ21N,EAAI/6R,SAAW+6R,EAAI/6R,QAAQolE,MAAQmwN,EAAmBwF,EAAI/6R,QAAQolE,OAAS,EACzF21N,EAAIhyE,MAAM19N,QAAQ,SAAAuR,GACd,IAAM4hS,EAAeh1S,EAAQi1S,iBAAiB1D,EAAI/6R,SAC9ColE,GACAo5N,EAAaY,cAAch6N,GAE/BoyN,GAAa,EAAM56R,EAAG4hS,GACtB9D,EAAenkS,KAAKukC,IAAI4/P,EAAc8D,EAAaR,gBAAgBxE,aACnE8F,EAAe1jT,KAAK4iT,EAAaR,mBAKrCsB,EAAej0S,QAAQ,SAAA8yS,GAAQ,OAAI30S,EAAQw0S,gBAAgBuB,6BAA6BpB,KACxF30S,EAAQm1S,yBAAyBjE,GACjClxS,EAAQo1S,aAAe7D,I,0BAE3B,SAAaA,EAAKvxS,GACd,GAAIuxS,EAAIC,QAAS,CACb,IAAMF,EAAWC,EAAID,SAErB,OAAOrF,EADajsS,EAAQs4E,OAAS80N,GAAkBkE,EAAUtxS,EAAQs4E,OAAQt4E,EAAQ+9H,QAAUuzK,EACjEtxS,EAAQ+9H,QAG1C,MAAO,CAAE/xF,SAAUulQ,EAAIvlQ,SAAU4vC,MAAO21N,EAAI31N,MAAOi3H,OAAQ0+F,EAAI1+F,U,0BAGvE,SAAa0+F,EAAKvxS,GACd,IAAMsmS,EAAUtmS,EAAQ0xS,sBAAwBljT,KAAKwnT,aAAazE,EAAIjL,QAAStmS,GACzE20S,EAAW30S,EAAQw0S,gBACrBlO,EAAQ1qN,QACR57E,EAAQi2S,cAAc3P,EAAQ1qN,OAC9B+4N,EAASe,yBAEb,IAAM37S,EAAQw3S,EAAIx3S,MACA,GAAdA,EAAM7K,KACNV,KAAKggT,eAAez0S,EAAOiG,IAG3BA,EAAQi2S,cAAc3P,EAAQt6P,UAC9Bx9C,KAAKigT,WAAW10S,EAAOiG,GACvB20S,EAASkB,yBAEb71S,EAAQ0xS,sBAAwB,KAChC1xS,EAAQo1S,aAAe7D,I,wBAE3B,SAAWA,EAAKvxS,GACZ,IAAM20S,EAAW30S,EAAQw0S,gBACnBlO,EAAUtmS,EAAQ0xS,uBAGnBpL,GAAWqO,EAASuB,4BAA4BvjT,QACjDgiT,EAASwB,eAEb,IAAMtjG,EAAUyzF,GAAWA,EAAQzzF,QAAW0+F,EAAI1+F,OAC9C0+F,EAAIO,YACJ6C,EAASyB,eAAevjG,GAGxB8hG,EAASF,UAAUlD,EAAIjqS,OAAQurM,EAAQ7yM,EAAQ+9H,OAAQ/9H,EAAQwW,SAEnExW,EAAQo1S,aAAe7D,I,4BAE3B,SAAeA,EAAKvxS,GAChB,IAAM0xS,EAAwB1xS,EAAQ0xS,sBAChCx1O,EAAal8D,EAAQw0S,gBAAiBxoQ,SACtCA,EAAW0lQ,EAAsB1lQ,SAEjCqqQ,EADer2S,EAAQi1S,mBACMT,gBACnC6B,EAAcxjG,OAAS6+F,EAAsB7+F,OAC7C0+F,EAAIjqS,OAAOzF,QAAQ,SAAAm0F,GAEfqgN,EAAcC,aADCtgN,EAAK38F,QAAU,GACK2yC,GACnCqqQ,EAAc5B,UAAUz+M,EAAK1uF,OAAQ0uF,EAAK68G,OAAQ7yM,EAAQ+9H,OAAQ/9H,EAAQwW,SAC1E6/R,EAAcR,0BAIlB71S,EAAQw0S,gBAAgBuB,6BAA6BM,GAGrDr2S,EAAQm1S,yBAAyBj5O,EAAYlwB,GAC7ChsC,EAAQo1S,aAAe7D,I,wBAE3B,SAAWA,EAAKvxS,GAAO,WAGbk8D,EAAYl8D,EAAQw0S,gBAAgBxE,YACpCx5R,EAAW+6R,EAAI/6R,SAAW,GAC1BolE,EAAQplE,EAAQolE,MAAQmwN,EAAmBv1R,EAAQolE,OAAS,EAC9DA,IAC+B,IAA9B57E,EAAQo1S,aAAalmT,MACJ,GAAbgtE,GAAkBl8D,EAAQw0S,gBAAgB0B,4BAA4BvjT,UAC3EqN,EAAQw0S,gBAAgBkB,wBACxB11S,EAAQo1S,aAAeO,IAE3B,IAAIzE,EAAeh1O,EACbq6O,EAAOv2S,EAAQw2S,YAAYjF,EAAIzuQ,SAAUyuQ,EAAI+B,iBAAkB/B,EAAIh1Q,MAAOg1Q,EAAI8B,cAAa78R,EAAQoM,SAAyB5iB,EAAQ+9H,QAC1I/9H,EAAQy2S,kBAAoBF,EAAK5jT,OACjC,IAAI+jT,EAAsB,KAC1BH,EAAK10S,QAAQ,SAAChI,EAASxD,GACnB2J,EAAQ22S,kBAAoBtgT,EAC5B,IAAM2+S,EAAeh1S,EAAQi1S,iBAAiB1D,EAAI/6R,QAAS3c,GACvD+hF,GACAo5N,EAAaY,cAAch6N,GAE3B/hF,IAAYmG,EAAQnG,UACpB68S,EAAsB1B,EAAaR,iBAEvCxG,GAAa,EAAMuD,EAAIp/Q,UAAW6iR,GAIlCA,EAAaR,gBAAgBqB,wBAE7B3E,EAAenkS,KAAKukC,IAAI4/P,EADR8D,EAAaR,gBAAgBxE,eAGjDhwS,EAAQ22S,kBAAoB,EAC5B32S,EAAQy2S,kBAAoB,EAC5Bz2S,EAAQm1S,yBAAyBjE,GAC7BwF,IACA12S,EAAQw0S,gBAAgBuB,6BAA6BW,GACrD12S,EAAQw0S,gBAAgBkB,yBAE5B11S,EAAQo1S,aAAe7D,I,0BAE3B,SAAaA,EAAKvxS,GACd,IAAM42S,EAAgB52S,EAAQ42S,cACxBzpJ,EAAKntJ,EAAQw0S,gBACblO,EAAUiL,EAAIjL,QACdt6P,EAAWj/B,KAAKqiC,IAAIk3P,EAAQt6P,UAC5B6qQ,EAAU7qQ,GAAYhsC,EAAQy2S,kBAAoB,GACpD76N,EAAQ5vC,EAAWhsC,EAAQ22S,kBAE/B,OADyBrQ,EAAQt6P,SAAW,EAAI,UAAYs6P,EAAQzzF,QAEhE,IAAK,UACDj3H,EAAQi7N,EAAUj7N,EAClB,MACJ,IAAK,OACDA,EAAQg7N,EAAcE,mBAG9B,IAAMnC,EAAW30S,EAAQw0S,gBACrB54N,GACA+4N,EAASiB,cAAch6N,GAE3B,IAAMm7N,EAAepC,EAAS3E,YAC9BhC,GAAax/S,KAAM+iT,EAAIp/Q,UAAWnyB,GAClCA,EAAQo1S,aAAe7D,EAKvBqF,EAAcE,mBACT3pJ,EAAG6iJ,YAAc+G,GAAiB5pJ,EAAGjxF,UAAY06O,EAAcpC,gBAAgBt4O,e,GAGtFy5O,GAA6B,GAC7B,G,WACF,WAAY/F,EAAS/1S,EAASy6S,EAAiB0C,EAAiBC,EAAiBl5K,EAAQ22K,EAAWwC,GAAe,oBAC/G1oT,KAAKohT,QAAUA,EACfphT,KAAKqL,QAAUA,EACfrL,KAAK8lT,gBAAkBA,EACvB9lT,KAAKwoT,gBAAkBA,EACvBxoT,KAAKyoT,gBAAkBA,EACvBzoT,KAAKuvI,OAASA,EACdvvI,KAAKkmT,UAAYA,EACjBlmT,KAAKooT,cAAgB,KACrBpoT,KAAKkjT,sBAAwB,KAC7BljT,KAAK4mT,aAAeO,GACpBnnT,KAAKinT,gBAAkB,EACvBjnT,KAAKgoB,QAAU,GACfhoB,KAAKmoT,kBAAoB,EACzBnoT,KAAKioT,kBAAoB,EACzBjoT,KAAKsoT,mBAAqB,EAC1BtoT,KAAKgmT,gBAAkB0C,GAAmB,IAAI,GAAgB1oT,KAAKohT,QAAS/1S,EAAS,GACrF66S,EAAUtiT,KAAK5D,KAAKgmT,iB,wCAExB,WACI,OAAOhmT,KAAKgoB,QAAQ8hE,S,2BAExB,SAAc9hE,EAAS2gS,GAAY,WAC/B,GAAK3gS,EAAL,CAEA,IAAM0mL,EAAa1mL,EACf4gS,EAAkB5oT,KAAKgoB,QAEA,MAAvB0mL,EAAWlxJ,WACXorQ,EAAgBprQ,SAAW+/P,EAAmB7uG,EAAWlxJ,WAErC,MAApBkxJ,EAAWthH,QACXw7N,EAAgBx7N,MAAQmwN,EAAmB7uG,EAAWthH,QAE1D,IAAMy7N,EAAYn6G,EAAW5kH,OAC7B,GAAI++N,EAAW,CACX,IAAIC,EAAiBF,EAAgB9+N,OAChCg/N,IACDA,EAAiB9oT,KAAKgoB,QAAQ8hE,OAAS,IAE3CttE,OAAOC,KAAKosS,GAAWx1S,QAAQ,SAAAlS,GACtBwnT,GAAiBG,EAAep7Q,eAAevsC,KAChD2nT,EAAe3nT,GAAQy9S,GAAkBiK,EAAU1nT,GAAO2nT,EAAgB,EAAKv5K,e,0BAK/F,WACI,IAAMvnH,EAAU,GAChB,GAAIhoB,KAAKgoB,QAAS,CACd,IAAM+gS,EAAY/oT,KAAKgoB,QAAQ8hE,OAC/B,GAAIi/N,EAAW,CACX,IAAMj/N,EAAS9hE,EAAO,OAAa,GACnCxL,OAAOC,KAAKssS,GAAW11S,QAAQ,SAAAlS,GAC3B2oF,EAAO3oF,GAAQ4nT,EAAU5nT,MAIrC,OAAO6mB,I,8BAEX,WAAiD,IAAhCA,EAAgC,uDAAtB,KAAM3c,EAAgB,uCAAP29S,EAAO,uCACvCx8R,EAASnhB,GAAWrL,KAAKqL,QACzBmG,EAAU,IAAIy3S,EAAyBjpT,KAAKohT,QAAS50R,EAAQxsB,KAAK8lT,gBAAiB9lT,KAAKwoT,gBAAiBxoT,KAAKyoT,gBAAiBzoT,KAAKuvI,OAAQvvI,KAAKkmT,UAAWlmT,KAAKgmT,gBAAgBkD,KAAK18R,EAAQw8R,GAAW,IAS/M,OARAx3S,EAAQo1S,aAAe5mT,KAAK4mT,aAC5Bp1S,EAAQ0xS,sBAAwBljT,KAAKkjT,sBACrC1xS,EAAQwW,QAAUhoB,KAAKmpT,eACvB33S,EAAQw1S,cAAch/R,GACtBxW,EAAQ22S,kBAAoBnoT,KAAKmoT,kBACjC32S,EAAQy2S,kBAAoBjoT,KAAKioT,kBACjCz2S,EAAQ42S,cAAgBpoT,KACxBA,KAAKinT,kBACEz1S,I,sCAEX,SAAyBw3S,GAIrB,OAHAhpT,KAAK4mT,aAAeO,GACpBnnT,KAAKgmT,gBAAkBhmT,KAAKgmT,gBAAgBkD,KAAKlpT,KAAKqL,QAAS29S,GAC/DhpT,KAAKkmT,UAAUtiT,KAAK5D,KAAKgmT,iBAClBhmT,KAAKgmT,kB,yCAEhB,SAA4Ba,EAAarpQ,EAAU4vC,GAC/C,IAAMg8N,EAAiB,CACnB5rQ,SAAsB,MAAZA,EAAmBA,EAAWqpQ,EAAYrpQ,SACpD4vC,MAAOptF,KAAKgmT,gBAAgBxE,aAAwB,MAATp0N,EAAgBA,EAAQ,GAAKy5N,EAAYz5N,MACpFi3H,OAAQ,IAENglG,EAAU,IAAI,GAAmBrpT,KAAKohT,QAASyF,EAAYx7S,QAASw7S,EAAY7O,UAAW6O,EAAY5B,cAAe4B,EAAY3B,eAAgBkE,EAAgBvC,EAAYyC,yBAEpL,OADAtpT,KAAKkmT,UAAUtiT,KAAKylT,GACbD,I,2BAEX,SAAcvhP,GACV7nE,KAAKgmT,gBAAgB8B,YAAY9nT,KAAKgmT,gBAAgBxoQ,SAAWqqB,K,2BAErE,SAAculB,GAENA,EAAQ,GACRptF,KAAKgmT,gBAAgBoB,cAAch6N,K,yBAG3C,SAAY94C,EAAUwwQ,EAAkB/2Q,EAAO82Q,EAAazwR,EAAUm7G,GAClE,IAAIhO,EAAU,GAId,GAHIsjL,GACAtjL,EAAQ39H,KAAK5D,KAAKqL,SAElBipC,EAASnwC,OAAS,EAAG,CAErBmwC,GADAA,EAAWA,EAAS9yC,QAAQ+jT,GAAmB,IAAMvlT,KAAKwoT,kBACtChnT,QAAQgkT,GAAmB,IAAMxlT,KAAKyoT,iBAC1D,IACIz9S,EAAWhL,KAAKohT,QAAQ32Q,MAAMzqC,KAAKqL,QAASipC,EADzB,GAATvG,GAEA,IAAVA,IACA/iC,EAAW+iC,EAAQ,EAAI/iC,EAASxB,MAAMwB,EAAS7G,OAAS4pC,EAAO/iC,EAAS7G,QACpE6G,EAASxB,MAAM,EAAGukC,IAE1BwzF,EAAQ39H,KAAR,MAAA29H,EAAO,YAASv2H,IAKpB,OAHKopB,GAA8B,GAAlBmtG,EAAQp9H,QACrBorI,EAAO3rI,KAAP,kBAAwBkhT,EAAxB,oDAAsFA,EAAtF,wDAEGvjL,M,GAGT,G,WACF,WAAY6/K,EAAS/1S,EAASqiE,EAAW67O,GAA4B,oBACjEvpT,KAAKohT,QAAUA,EACfphT,KAAKqL,QAAUA,EACfrL,KAAK0tE,UAAYA,EACjB1tE,KAAKupT,6BAA+BA,EACpCvpT,KAAKw9C,SAAW,EAChBx9C,KAAKwpT,kBAAoB,GACzBxpT,KAAKypT,iBAAmB,GACxBzpT,KAAK0pT,WAAa,IAAIj8S,IACtBzN,KAAK2pT,cAAgB,GACrB3pT,KAAK4pT,eAAiB,GACtB5pT,KAAK6pT,UAAY,GACjB7pT,KAAK8pT,0BAA4B,KAC5B9pT,KAAKupT,+BACNvpT,KAAKupT,6BAA+B,IAAI97S,KAE5CzN,KAAK+pT,qBAAuBvtS,OAAOlX,OAAOtF,KAAK6pT,UAAW,IAC1D7pT,KAAKgqT,sBAAwBhqT,KAAKupT,6BAA6Br3S,IAAI7G,GAC9DrL,KAAKgqT,wBACNhqT,KAAKgqT,sBAAwBhqT,KAAK+pT,qBAClC/pT,KAAKupT,6BAA6Bl1S,IAAIhJ,EAASrL,KAAK+pT,uBAExD/pT,KAAKiqT,gB,qDAET,WACI,OAAQjqT,KAAK0pT,WAAWvpR,MACpB,KAAK,EACD,OAAO,EACX,KAAK,EACD,OAAOngC,KAAK0nT,4BAA4BvjT,OAAS,EACrD,QACI,OAAO,K,uCAGnB,WACI,OAAOqY,OAAOC,KAAKzc,KAAKypT,oB,uBAE5B,WACI,OAAOzpT,KAAK0tE,UAAY1tE,KAAKw9C,W,2BAEjC,SAAc4vC,GAKV,IAAM88N,EAA0C,GAAxBlqT,KAAK0pT,WAAWvpR,MAAa3jB,OAAOC,KAAKzc,KAAK4pT,gBAAgBzlT,OAClFnE,KAAKw9C,UAAY0sQ,GACjBlqT,KAAK8nT,YAAY9nT,KAAKwhT,YAAcp0N,GAChC88N,GACAlqT,KAAKknT,yBAITlnT,KAAK0tE,WAAa0f,I,kBAG1B,SAAK/hF,EAASm2S,GAEV,OADAxhT,KAAKqnT,wBACE,IAAI8C,EAAgBnqT,KAAKohT,QAAS/1S,EAASm2S,GAAexhT,KAAKwhT,YAAaxhT,KAAKupT,gC,2BAE5F,WACQvpT,KAAKypT,mBACLzpT,KAAKwpT,kBAAoBxpT,KAAKypT,kBAElCzpT,KAAKypT,iBAAmBzpT,KAAK0pT,WAAWx3S,IAAIlS,KAAKw9C,UAC5Cx9C,KAAKypT,mBACNzpT,KAAKypT,iBAAmBjtS,OAAOlX,OAAOtF,KAAK6pT,UAAW,IACtD7pT,KAAK0pT,WAAWr1S,IAAIrU,KAAKw9C,SAAUx9C,KAAKypT,qB,0BAGhD,WACIzpT,KAAKw9C,UAhiBqB,EAiiB1Bx9C,KAAKiqT,kB,yBAET,SAAYpiP,GACR7nE,KAAKqnT,wBACLrnT,KAAKw9C,SAAWqqB,EAChB7nE,KAAKiqT,kB,0BAET,SAAa77Q,EAAM7sC,GACfvB,KAAK+pT,qBAAqB37Q,GAAQ7sC,EAClCvB,KAAKgqT,sBAAsB57Q,GAAQ7sC,EACnCvB,KAAK2pT,cAAcv7Q,GAAQ,CAAEy5B,KAAM7nE,KAAKwhT,YAAajgT,W,qCAEzD,WACI,OAAOvB,KAAK8pT,4BAA8B9pT,KAAKypT,mB,4BAEnD,SAAeplG,GAAM,WACbA,IACArkN,KAAKwpT,kBAAL,OAAmCnlG,GAQvC7nM,OAAOC,KAAKzc,KAAKgqT,uBAAuB32S,QAAQ,SAAA+6B,GAC5C,EAAKy7Q,UAAUz7Q,GAAQ,EAAK47Q,sBAAsB57Q,IAAS,IAC3D,EAAKq7Q,iBAAiBr7Q,GAAQ,MAElCpuC,KAAK8pT,0BAA4B9pT,KAAKypT,mB,uBAE1C,SAAUjrQ,EAAO6lK,EAAQ90E,EAAQvnH,GAAO,WAChCq8L,IACArkN,KAAKwpT,kBAAL,OAAmCnlG,GAEvC,IAAMv6H,EAAU9hE,GAAWA,EAAQ8hE,QAAW,GACxChxE,EAwJd,SAAuB0lC,EAAO4rQ,GAC1B,IACIC,EADEvxS,EAAS,GAaf,OAXA0lC,EAAMnrC,QAAQ,SAAAxO,GACI,MAAVA,GACAwlT,EAAgBA,GAAiB7tS,OAAOC,KAAK2tS,IAC/B/2S,QAAQ,SAAA+6B,GAClBt1B,EAAOs1B,GAAQ,MAInB4vQ,EAAWn5S,GAAO,EAAOiU,KAG1BA,EAtKYwxS,CAAc9rQ,EAAOx+C,KAAKgqT,uBACzCxtS,OAAOC,KAAK3D,GAAQzF,QAAQ,SAAA+6B,GACxB,IAAME,EAAMswQ,GAAkB9lS,EAAOs1B,GAAO07C,EAAQylD,GACpD,EAAKq6K,eAAex7Q,GAAQE,EACvB,EAAKy7Q,qBAAqBr8Q,eAAeU,KAC1C,EAAKy7Q,UAAUz7Q,GAAQ,EAAK47Q,sBAAsBt8Q,eAAeU,GAC7D,EAAK47Q,sBAAsB57Q,GAC3B,KAER,EAAKm8Q,aAAan8Q,EAAME,O,mCAGhC,WAAqB,WACXx1B,EAAS9Y,KAAK4pT,eACd72R,EAAQvW,OAAOC,KAAK3D,GACN,GAAhBia,EAAM5uB,SAEVnE,KAAK4pT,eAAiB,GACtB72R,EAAM1f,QAAQ,SAAA+6B,GAEV,EAAKq7Q,iBAAiBr7Q,GADVt1B,EAAOs1B,KAGvB5xB,OAAOC,KAAKzc,KAAK+pT,sBAAsB12S,QAAQ,SAAA+6B,GACtC,EAAKq7Q,iBAAiB/7Q,eAAeU,KACtC,EAAKq7Q,iBAAiBr7Q,GAAQ,EAAK27Q,qBAAqB37Q,S,mCAIpE,WAAqB,WACjB5xB,OAAOC,KAAKzc,KAAK+pT,sBAAsB12S,QAAQ,SAAA+6B,GAC3C,IAAME,EAAM,EAAKy7Q,qBAAqB37Q,GACtC,EAAKw7Q,eAAex7Q,GAAQE,EAC5B,EAAKi8Q,aAAan8Q,EAAME,O,8BAGhC,WACI,OAAOtuC,KAAK0pT,WAAWx3S,IAAIlS,KAAKw9C,Y,sBAEpC,WACI,IAAM6yN,EAAa,GACnB,IAAK,IAAIjiO,KAAQpuC,KAAKypT,iBAClBp5C,EAAWzsQ,KAAKwqC,GAEpB,OAAOiiO,I,0CAEX,SAA6B81C,GAAQ,WACjC3pS,OAAOC,KAAK0pS,EAASwD,eAAet2S,QAAQ,SAAA+6B,GACxC,IAAMo8Q,EAAW,EAAKb,cAAcv7Q,GAC9Bq8Q,EAAWtE,EAASwD,cAAcv7Q,KACnCo8Q,GAAYC,EAAS5iP,KAAO2iP,EAAS3iP,OACtC,EAAK0iP,aAAan8Q,EAAMq8Q,EAASlpT,W,4BAI7C,WAAc,WACVvB,KAAKqnT,wBACL,IAAMpC,EAAgB,IAAIt3S,IACpBu3S,EAAiB,IAAIv3S,IACrByyB,EAAmC,IAAzBpgC,KAAK0pT,WAAWvpR,MAAgC,IAAlBngC,KAAKw9C,SAC/CktQ,EAAiB,GACrB1qT,KAAK0pT,WAAWr2S,QAAQ,SAACs3S,EAAU9iP,GAC/B,IAAM+iP,EAAgB5M,EAAW2M,GAAU,GAC3CnuS,OAAOC,KAAKmuS,GAAev3S,QAAQ,SAAA+6B,GAC/B,IAAM7sC,EAAQqpT,EAAcx8Q,GACxB7sC,GAAS,IACT0jT,EAAcpiT,IAAIurC,GAEb7sC,GAAS,KACd2jT,EAAeriT,IAAIurC,KAGtBhO,IACDwqR,EAAa,OAAa/iP,EAAO,EAAKrqB,UAE1CktQ,EAAe9mT,KAAKgnT,KAExB,IAAMC,EAAW5F,EAAc9kR,KAAOssO,GAAgBw4C,EAAcnxS,UAAY,GAC1Eg3S,EAAY5F,EAAe/kR,KAAOssO,GAAgBy4C,EAAepxS,UAAY,GAEnF,GAAIssB,EAAS,CACT,IAAM2qR,EAAML,EAAe,GACrBM,EAAMjN,EAAQgN,GACpBA,EAAG,OAAa,EAChBC,EAAG,OAAa,EAChBN,EAAiB,CAACK,EAAKC,GAE3B,OAAOhG,GAA0BhlT,KAAKqL,QAASq/S,EAAgBG,EAAUC,EAAW9qT,KAAKw9C,SAAUx9C,KAAK0tE,UAAW1tE,KAAKqkN,QAAQ,O,GAGlI,G,YACF,WAAYk2F,EAAQlvS,EAAS2sS,EAAWiN,EAAeC,EAAgBpN,GAAyC,MAAhCmT,EAAgC,oFAC5G,YAAM1Q,EAAQlvS,EAASysS,EAAQ1qN,SAC1B/hF,QAAUA,EACf,EAAK2sS,UAAYA,EACjB,EAAKiN,cAAgBA,EACrB,EAAKC,eAAiBA,EACtB,EAAK+F,yBAA2BA,EAChC,EAAKnT,QAAU,CAAEt6P,SAAUs6P,EAAQt6P,SAAU4vC,MAAO0qN,EAAQ1qN,MAAOi3H,OAAQyzF,EAAQzzF,QAPyB,E,sEAShH,WACI,OAAOrkN,KAAKg4S,UAAU7zS,OAAS,I,4BAEnC,WACI,IAAI6zS,EAAYh4S,KAAKg4S,UACrB,EAAkCh4S,KAAK83S,QAAjC1qN,EAAN,EAAMA,MAAO5vC,EAAb,EAAaA,SAAU6mK,EAAvB,EAAuBA,OACvB,GAAIrkN,KAAKirT,0BAA4B79N,EAAO,CACxC,IAAM89N,EAAe,GACf9nR,EAAYoa,EAAW4vC,EACvB+9N,EAAc/9N,EAAQhqD,EAEtBgoR,EAAmBpN,EAAWhG,EAAU,IAAI,GAClDoT,EAAgB,OAAa,EAC7BF,EAAatnT,KAAKwnT,GAClB,IAAMC,EAAmBrN,EAAWhG,EAAU,IAAI,GAClDqT,EAAgB,OAAaC,GAAYH,GACzCD,EAAatnT,KAAKynT,GAiBlB,IADA,IAAMt9Q,EAAQiqQ,EAAU7zS,OAAS,EACxB0D,EAAI,EAAGA,GAAKkmC,EAAOlmC,IAAK,CAC7B,IAAIizS,EAAKkD,EAAWhG,EAAUnwS,IAAI,GAGlCizS,EAAE,OAAawQ,IADQl+N,EADL0tN,EAAE,OACuBt9P,GACCpa,GAC5C8nR,EAAatnT,KAAKk3S,GAGtBt9P,EAAWpa,EACXgqD,EAAQ,EACRi3H,EAAS,GACT2zF,EAAYkT,EAEhB,OAAOlG,GAA0BhlT,KAAKqL,QAAS2sS,EAAWh4S,KAAKilT,cAAejlT,KAAKklT,eAAgB1nQ,EAAU4vC,EAAOi3H,GAAQ,O,CAxDnG,IA2DjC,SAASinG,GAAYzgT,GAAyB,IAAjB0gT,EAAiB,uDAAD,EACnCC,EAAOjtS,KAAKq7L,IAAI,GAAI2xG,EAAgB,GAC1C,OAAOhtS,KAAK06B,MAAMpuC,EAAS2gT,GAAQA,E,IAwDjC,G,+CAqBA,G,kJACF,SAAsBr9J,EAAc5e,GAChC,OAAOgvK,GAAoBpwJ,K,iCAE/B,SAAoBs9J,EAAsBC,EAAoBnqT,EAAOguI,GACjE,IAAI9wF,EAAO,GACLktQ,EAASpqT,EAAM0wB,WAAWnV,OAChC,GAAI8uS,GAAqBF,IAAiC,IAAVnqT,GAAyB,MAAVA,EAC3D,GAAqB,iBAAVA,EACPk9C,EAAO,SAEN,CACD,IAAMotQ,EAAoBtqT,EAAM+vC,MAAM,0BAClCu6Q,GAAoD,GAA/BA,EAAkB,GAAG1nT,QAC1CorI,EAAO3rI,KAAP,8CAAmD6nT,EAAnD,YAA2ElqT,IAIvF,OAAOoqT,EAASltQ,M,CAlBmB,IAuBrCmtQ,GAFO,kBAGWnvS,EAHU,iUAC7B8F,MAAM,KAGD9Y,EAAM,GACZgT,EAAKpJ,QAAQ,SAAAsJ,GAAG,OAAIlT,EAAIkT,IAAO,IACxBlT,EAHX,IAAwBgT,EACdhT,EAFoB2xI,GAO9B,SAAS0wK,GAA4BzgT,EAASowS,EAAa94I,EAAWx/H,EAAS4oR,EAAqBC,EAAYC,EAAU/F,EAAWgG,EAAiBjH,EAAeC,EAAgB9hR,EAAWmsG,GAC5L,MAAO,CACH7uI,KAAM,EACN2K,UACAowS,cACAsQ,sBACAppJ,YACAqpJ,aACA7oR,UACA8oR,WACA/F,YACAgG,kBACAjH,gBACAC,iBACA9hR,YACAmsG,UAIR,IAAM48K,GAAe,GACf,G,8BACF,WAAYC,EAAcrJ,EAAKsJ,GAAY,oBACvCrsT,KAAKosT,aAAeA,EACpBpsT,KAAK+iT,IAAMA,EACX/iT,KAAKqsT,aAAeA,G,oBAExB,SAAMttN,EAAcxjB,EAAWlwE,EAASy+E,GACpC,OA4CR,SAAmCwiO,EAAUvtN,EAAcxjB,EAAWlwE,EAASy+E,GAC3E,OAAOwiO,EAASlkT,KAAK,SAAA4G,GAAE,OAAIA,EAAG+vF,EAAcxjB,EAAWlwE,EAASy+E,KA7CrDyiO,CAA0BvsT,KAAK+iT,IAAIV,SAAUtjN,EAAcxjB,EAAWlwE,EAASy+E,K,yBAE1F,SAAY0iO,EAAW1iO,EAAQylD,GAC3B,IAAMk9K,EAAoBzsT,KAAKqsT,aAAa,KACtCK,EAAc1sT,KAAKqsT,aAAaG,GAChCG,EAAeF,EAAoBA,EAAkBG,YAAY9iO,EAAQylD,GAAU,GACzF,OAAOm9K,EAAcA,EAAYE,YAAY9iO,EAAQylD,GAAUo9K,I,mBAEnE,SAAMpS,EAAQlvS,EAAS0zF,EAAcxjB,EAAWmqO,EAAgBC,EAAgBkH,EAAgBC,EAAahH,EAAiBiH,GAC1H,IAAMx9K,EAAS,GACTy9K,EAA4BhtT,KAAK+iT,IAAI/6R,SAAWhoB,KAAK+iT,IAAI/6R,QAAQ8hE,QAAUqiO,GAE3Ec,EAAqBjtT,KAAK4sT,YAAY7tN,EADb8tN,GAAkBA,EAAe/iO,QAAUqiO,GACQ58K,GAC5E29K,EAAsBJ,GAAeA,EAAYhjO,QAAUqiO,GAC3DgB,EAAkBntT,KAAK4sT,YAAYrxO,EAAW2xO,EAAqB39K,GACnE28K,EAAkB,IAAIv+S,IACtBy/S,EAAc,IAAI3/S,IAClB4/S,EAAe,IAAI5/S,IACnB6/S,EAA0B,SAAd/xO,EACZgyO,EAAmB,CAAEzjO,OAAQttE,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIimR,GAA4BE,IACzFhH,EAAY6G,EACd,GACAtH,GAAwBlL,EAAQlvS,EAASrL,KAAK+iT,IAAIp/Q,UAAW+hR,EAAgBC,EAAgBsH,EAAoBE,EAAiBI,EAAkBzH,EAAiBv2K,GACrKnsG,EAAY,EAIhB,GAHA8iR,EAAU7yS,QAAQ,SAAAsrJ,GACdv7H,EAAY7kB,KAAKukC,IAAI67G,EAAGnhH,SAAWmhH,EAAGvxE,MAAOhqD,KAE7CmsG,EAAOprI,OACP,OAAO2nT,GAA4BzgT,EAASrL,KAAKosT,aAAcrtN,EAAcxjB,EAAW+xO,EAAWL,EAAoBE,EAAiB,GAAI,GAAIC,EAAaC,EAAcjqR,EAAWmsG,GAE1L22K,EAAU7yS,QAAQ,SAAAsrJ,GACd,IAAM49I,EAAM59I,EAAGtzJ,QACTw/S,EAAWnP,EAAgB0R,EAAa7Q,EAAK,IACnD59I,EAAGsmJ,cAAc5xS,QAAQ,SAAA+6B,GAAI,OAAIy8Q,EAASz8Q,IAAQ,IAClD,IAAM08Q,EAAYpP,EAAgB2R,EAAc9Q,EAAK,IACrD59I,EAAGumJ,eAAe7xS,QAAQ,SAAA+6B,GAAI,OAAI08Q,EAAU18Q,IAAQ,IAChDmuQ,IAAQlxS,GACR6gT,EAAgBrpT,IAAI05S,KAG5B,IAAMiR,EAAsB/gD,GAAgBy/C,EAAgBp4S,UAC5D,OAAOg4S,GAA4BzgT,EAASrL,KAAKosT,aAAcrtN,EAAcxjB,EAAW+xO,EAAWL,EAAoBE,EAAiBjH,EAAWsH,EAAqBJ,EAAaC,EAAcjqR,O,GAMrM,G,8BACF,WAAYtqB,EAAQimR,GAAa,oBAC7B/+R,KAAK8Y,OAASA,EACd9Y,KAAK++R,cAAgBA,G,0BAEzB,SAAYj1M,EAAQylD,GAChB,IAAMs2K,EAAc,GACd4H,EAAiB1P,EAAQ/9S,KAAK++R,eAmBpC,OAlBAviR,OAAOC,KAAKqtE,GAAQz2E,QAAQ,SAAAsJ,GACxB,IAAMpb,EAAQuoF,EAAOntE,GACR,MAATpb,IACAksT,EAAe9wS,GAAOpb,KAG9BvB,KAAK8Y,OAAOA,OAAOzF,QAAQ,SAAA9R,GACvB,GAAqB,iBAAVA,EAAoB,CAC3B,IAAMmsT,EAAWnsT,EACjBib,OAAOC,KAAKixS,GAAUr6S,QAAQ,SAAA+6B,GAC1B,IAAIE,EAAMo/Q,EAASt/Q,GACfE,EAAInqC,OAAS,IACbmqC,EAAMswQ,GAAkBtwQ,EAAKm/Q,EAAgBl+K,IAEjDs2K,EAAYz3Q,GAAQE,OAIzBu3Q,M,GAaT,G,8BACF,WAAY1kT,EAAM4hT,GAAG,+BACjB/iT,KAAKmB,KAAOA,EACZnB,KAAK+iT,IAAMA,EACX/iT,KAAK2tT,oBAAsB,GAC3B3tT,KAAKiK,OAAS,GACd84S,EAAI94S,OAAOoJ,QAAQ,SAAA0vS,GAEf,EAAK94S,OAAO84S,EAAI5hT,MAAQ,IAAI,GAAqB4hT,EAAIx3S,MAD9Bw3S,EAAI/6R,SAAW+6R,EAAI/6R,QAAQ8hE,QAAW,MAGjE8jO,GAAkB5tT,KAAKiK,OAAQ,OAAQ,KACvC2jT,GAAkB5tT,KAAKiK,OAAQ,QAAS,KACxC84S,EAAIpB,YAAYtuS,QAAQ,SAAA0vS,GACpB,EAAK4K,oBAAoB/pT,KAAK,IAAI,GAA2BzC,EAAM4hT,EAAK,EAAK94S,WAEjFjK,KAAK6tT,mBAwBF,IAAI,GAxB4C1sT,EAgBpC,CACfT,KAAM,EACNijC,UAHc,CAAEjjC,KAAM,EAAkBqwO,MAAO,GAAI/oN,QAAS,MAI5Dq6R,SALa,CAAC,SAAC1/I,EAAWx/H,GAAZ,OAAwB,IAMtCnb,QAAS,KACTy5R,WAAY,EACZC,SAAU,GAtB+C1hT,KAAKiK,S,4BAElE,WACI,OAAOjK,KAAK+iT,IAAItB,WAAa,I,6BAEjC,SAAgB1iN,EAAcxjB,EAAWlwE,EAASy+E,GAE9C,OADc9pF,KAAK2tT,oBAAoBtoT,KAAK,SAAA4zB,GAAC,OAAIA,EAAEqY,MAAMytD,EAAcxjB,EAAWlwE,EAASy+E,MAC3E,O,yBAEpB,SAAYiV,EAAcjV,EAAQylD,GAC9B,OAAOvvI,KAAK6tT,mBAAmBjB,YAAY7tN,EAAcjV,EAAQylD,O,GAgBzE,SAASq+K,GAAkB7vS,EAAK+vS,EAAMC,GAC9BhwS,EAAI2vB,eAAeogR,GACd/vS,EAAI2vB,eAAeqgR,KACpBhwS,EAAIgwS,GAAQhwS,EAAI+vS,IAGf/vS,EAAI2vB,eAAeqgR,KACxBhwS,EAAI+vS,GAAQ/vS,EAAIgwS,IAWxB,IAAMC,GAAwB,IAAI,GAC5B,G,8BACF,WAAYC,EAAU7M,EAAS8M,GAAW,oBACtCluT,KAAKiuT,SAAWA,EAChBjuT,KAAKohT,QAAUA,EACfphT,KAAKkuT,YAAcA,EACnBluT,KAAKmuT,YAAc,GACnBnuT,KAAKouT,aAAe,GACpBpuT,KAAKs5S,QAAU,I,uBAEnB,SAAStzR,EAAIukH,GACT,IAAMgF,EAAS,GACTwzK,EAAM5B,GAAkBnhT,KAAKohT,QAAS72K,EAAUgF,GACtD,GAAIA,EAAOprI,OACP,MAAM,IAAIkwB,MAAJ,qEAAwEk7G,EAAOv/F,KAAK,QAG1FhwC,KAAKmuT,YAAYnoS,GAAM+8R,I,0BAG/B,SAAal7S,EAAG4yS,EAAWC,GACvB,IAAMrvS,EAAUxD,EAAEwD,QACZ2sS,EAAYsC,EAAmBt6S,KAAKohT,QAASphT,KAAKkuT,YAAa7iT,EAASxD,EAAEmwS,UAAWyC,EAAWC,GACtG,OAAO16S,KAAKohT,QAAQjyE,QAAQ9jO,EAAS2sS,EAAWnwS,EAAE21C,SAAU31C,EAAEulF,MAAOvlF,EAAEw8M,OAAQ,IAAI,K,oBAEvF,SAAOr+L,EAAI3a,GAAqB,IAGxBg6S,EAHwB,OAAZr9R,EAAY,uDAAF,GACpBunH,EAAS,GACTwzK,EAAM/iT,KAAKmuT,YAAYnoS,GAEvBqoS,EAAgB,IAAI5gT,IAY1B,GAXIs1S,GACAsC,EAAeI,GAAwBzlT,KAAKohT,QAAS/1S,EAAS03S,EAAK9F,EAAiBC,EAAiB,GAAI,GAAIl1R,EAASgmS,GAAuBz+K,IAChIl8H,QAAQ,SAAAi7S,GACjB,IAAMx1S,EAAS4iS,EAAgB2S,EAAeC,EAAKjjT,QAAS,IAC5DijT,EAAKpJ,eAAe7xS,QAAQ,SAAA+6B,GAAI,OAAIt1B,EAAOs1B,GAAQ,UAIvDmhG,EAAO3rI,KAAK,uEACZyhT,EAAe,IAEf91K,EAAOprI,OACP,MAAM,IAAIkwB,MAAJ,sEAAyEk7G,EAAOv/F,KAAK,QAE/Fq+Q,EAAch7S,QAAQ,SAACyF,EAAQzN,GAC3BmR,OAAOC,KAAK3D,GAAQzF,QAAQ,SAAA+6B,GACxBt1B,EAAOs1B,GAAQ,EAAKgzQ,QAAQ7B,aAAal0S,EAAS+iC,EAAM,SAGhE,IAAMkrQ,EAAU+L,EAAa57S,IAAI,SAAA5B,GAC7B,IAAMiR,EAASu1S,EAAcn8S,IAAIrK,EAAEwD,SACnC,OAAO,EAAKkjT,aAAa1mT,EAAG,GAAIiR,KAE9BwqK,EAAS+2H,EAAoBf,GAInC,OAHAt5S,KAAKouT,aAAapoS,GAAMs9J,EACxBA,EAAOnqD,UAAU,kBAAM,EAAKj4G,QAAQ8E,KACpChmB,KAAKs5S,QAAQ11S,KAAK0/K,GACXA,I,qBAEX,SAAQt9J,GACJ,IAAMs9J,EAAStjL,KAAKwuT,WAAWxoS,GAC/Bs9J,EAAOpiK,iBACAlhB,KAAKouT,aAAapoS,GACzB,IAAMrc,EAAQ3J,KAAKs5S,QAAQrwS,QAAQq6K,GAC/B35K,GAAS,GACT3J,KAAKs5S,QAAQ/wQ,OAAO5+B,EAAO,K,wBAGnC,SAAWqc,GACP,IAAMs9J,EAAStjL,KAAKouT,aAAapoS,GACjC,IAAKs9J,EACD,MAAM,IAAIjvJ,MAAJ,2DAA8DrO,IAExE,OAAOs9J,I,oBAEX,SAAOt9J,EAAI3a,EAASyqC,EAAW7iB,GAE3B,IAAMw7R,EAAYjT,EAAmBnwS,EAAS,GAAI,GAAI,IAEtD,OADAiwS,EAAet7S,KAAKwuT,WAAWxoS,GAAK8vB,EAAW24Q,EAAWx7R,GACnD,e,qBAEX,SAAQjN,EAAI3a,EAAS,EAASxL,GAC1B,GAAe,YAAX,EAIJ,GAAe,UAAX,EAAJ,CAKA,IAAMyjL,EAAStjL,KAAKwuT,WAAWxoS,GAC/B,OAAQ,GACJ,IAAK,OACDs9J,EAAOC,OACP,MACJ,IAAK,QACDD,EAAO/1F,QACP,MACJ,IAAK,QACD+1F,EAAOtmD,QACP,MACJ,IAAK,UACDsmD,EAAOs2H,UACP,MACJ,IAAK,SACDt2H,EAAO21H,SACP,MACJ,IAAK,OACD31H,EAAOgiH,OACP,MACJ,IAAK,cACDhiH,EAAOw2H,YAAYjsR,WAAWhuB,EAAK,KACnC,MACJ,IAAK,UACDG,KAAKkhB,QAAQ8E,SA3BjBhmB,KAAKsF,OAAO0gB,EAAI3a,EADCxL,EAAK,IAAM,SAJ5BG,KAAK+6N,SAAS/0M,EAAInmB,EAAK,Q,GA6C7B6uT,GAAmB,oBAEnBC,GAAqB,sBACrBC,GAAoB,uBACpBC,GAAiB,mBAEjBC,GAAqB,GACrBC,GAAqB,CACvBC,YAAa,GACbC,eAAe,EACfC,YAAY,EACZC,cAAc,EACdC,sBAAsB,GAEpBC,GAA6B,CAC/BL,YAAa,GACbE,YAAY,EACZD,eAAe,EACfE,cAAc,EACdC,sBAAsB,GAGpB,G,8BACF,WAAY5wQ,GAAuB,IAAhBwwQ,EAAgB,uDAAF,GAAE,oBAC/BhvT,KAAKgvT,YAAcA,EACnB,IAAMM,EAAQ9wQ,GAASA,EAAM9Q,eAAe,SACtCnsC,EAAQ+tT,EAAQ9wQ,EAAK,MAAYA,EAEvC,GADAx+C,KAAKuB,MAAQguT,GAAsBhuT,GAC/B+tT,EAAO,CACP,IAAMtnS,EAAU+1R,EAAQv/P,UACjBx2B,EAAO,MACdhoB,KAAKgoB,QAAUA,OAGfhoB,KAAKgoB,QAAU,GAEdhoB,KAAKgoB,QAAQ8hE,SACd9pF,KAAKgoB,QAAQ8hE,OAAS,K,mBAG9B,WACI,OAAO9pF,KAAKgoB,QAAQ8hE,S,2BAExB,SAAc9hE,GACV,IAAM6gS,EAAY7gS,EAAQ8hE,OAC1B,GAAI++N,EAAW,CACX,IAAME,EAAY/oT,KAAKgoB,QAAQ8hE,OAC/BttE,OAAOC,KAAKosS,GAAWx1S,QAAQ,SAAA+6B,GACJ,MAAnB26Q,EAAU36Q,KACV26Q,EAAU36Q,GAAQy6Q,EAAUz6Q,W,GAM1CohR,GAAa,OACbC,GAAsB,IAAI,GAAWD,IACrC,G,8BACF,WAAYxpS,EAAIqmG,EAAaqjM,GAAO,oBAChC1vT,KAAKgmB,GAAKA,EACVhmB,KAAKqsH,YAAcA,EACnBrsH,KAAK0vT,QAAUA,EACf1vT,KAAKs5S,QAAU,GACft5S,KAAK2vT,UAAY,GACjB3vT,KAAK4vT,OAAS,GACd5vT,KAAK6vT,kBAAoB,IAAIpiT,IAC7BzN,KAAK8vT,eAAiB,UAAY9pS,EAClCyqG,GAASpE,EAAarsH,KAAK8vT,iB,qBAE/B,SAAOzkT,EAASlK,EAAM4uT,EAAO98R,GAAQ,IA4wCZ6iB,EA5wCY,OACjC,IAAK91C,KAAK2vT,UAAUjiR,eAAevsC,GAC/B,MAAM,IAAIkzB,MAAJ,2DAA8D07R,EAA9D,4CAAuG5uT,EAAvG,sBAEV,GAAa,MAAT4uT,GAAiC,GAAhBA,EAAM5rT,OACvB,MAAM,IAAIkwB,MAAJ,qDAAwDlzB,EAAxD,+CAEV,GAswCgB,UADK20C,EArwCIi6Q,IAswCe,QAAbj6Q,EArwCvB,MAAM,IAAIzhB,MAAJ,gDAAmD07R,EAAnD,wCAAwF5uT,EAAxF,wBAEV,IAAMs7F,EAAYi/M,EAAgB17S,KAAK6vT,kBAAmBxkT,EAAS,IAC7DyE,EAAO,CAAE3O,OAAM4uT,QAAO98R,YAC5BwpE,EAAU74F,KAAKkM,GACf,IAAMkgT,EAAqBtU,EAAgB17S,KAAK0vT,QAAQO,gBAAiB5kT,EAAS,IAMlF,OALK2kT,EAAmBtiR,eAAevsC,KACnCsvH,GAASplH,EAAS8xS,GAClB1sL,GAASplH,EAAS8xS,cAA6Bh8S,GAC/C6uT,EAAmB7uT,GAAQsuT,IAExB,WAIH,EAAKC,QAAQQ,WAAW,WACpB,IAAMvmT,EAAQ8yF,EAAUxzF,QAAQ6G,GAC5BnG,GAAS,GACT8yF,EAAUl0D,OAAO5+B,EAAO,GAEvB,EAAKgmT,UAAUxuT,WACT6uT,EAAmB7uT,Q,sBAK1C,SAASA,EAAM4hT,GACX,OAAI/iT,KAAK2vT,UAAUxuT,KAKfnB,KAAK2vT,UAAUxuT,GAAQ4hT,GAChB,K,yBAGf,SAAY5hT,GACR,IAAMo9D,EAAUv+D,KAAK2vT,UAAUxuT,GAC/B,IAAKo9D,EACD,MAAM,IAAIlqC,MAAJ,0CAA6ClzB,EAA7C,+BAEV,OAAOo9D,I,qBAEX,SAAQlzD,EAASowS,EAAal6S,GAA+B,WAAxB4uT,IAAwB,yDACnD5xP,EAAUv+D,KAAKowT,YAAY3U,GAC3Bn4H,EAAS,IAAI,GAA0BtjL,KAAKgmB,GAAIy1R,EAAapwS,GAC/D2kT,EAAqBhwT,KAAK0vT,QAAQO,gBAAgB/9S,IAAI7G,GACrD2kT,IACDv/L,GAASplH,EAAS8xS,GAClB1sL,GAASplH,EAAS8xS,cAA6B1B,GAC/Cz7S,KAAK0vT,QAAQO,gBAAgB57S,IAAIhJ,EAAS2kT,EAAqB,KAEnE,IAAIrtJ,EAAYqtJ,EAAmBvU,GAC7Bt4Q,EAAU,IAAI,GAAW5hC,EAAOvB,KAAKgmB,IACrCspS,EAAQ/tT,GAASA,EAAMmsC,eAAe,UACvC4hR,GAAS3sJ,GACVx/H,EAAQktR,cAAc1tJ,EAAU36I,SAEpCgoS,EAAmBvU,GAAet4Q,EAC7Bw/H,IACDA,EAAY8sJ,IAEhB,IAAMnC,EAAYnqR,EAAQ5hC,QAAUiuT,GAOpC,GAAKlC,GAAa3qJ,EAAUphK,QAAU4hC,EAAQ5hC,MAA9C,CAmBA,IAAM+uT,EAAmB5U,EAAgB17S,KAAK0vT,QAAQa,iBAAkBllT,EAAS,IACjFilT,EAAiBj9S,QAAQ,SAAAiwK,GAKjBA,EAAO0rI,aAAe,EAAKhpS,IAAMs9J,EAAOm4H,aAAeA,GAAen4H,EAAOktI,QAC7EltI,EAAOpiK,YAGf,IAAIokM,EAAa/mJ,EAAQkyP,gBAAgB9tJ,EAAUphK,MAAO4hC,EAAQ5hC,MAAO8J,EAAS83B,EAAQ2mD,QACtF4mO,GAAuB,EAC3B,IAAKprG,EAAY,CACb,IAAK6qG,EACD,OACJ7qG,EAAa/mJ,EAAQsvP,mBACrB6C,GAAuB,EAyB3B,OAvBA1wT,KAAK0vT,QAAQiB,qBACb3wT,KAAK4vT,OAAOhsT,KAAK,CAAEyH,UAASowS,cAAan2F,aAAY3iD,YAAWx/H,UAASmgJ,SAAQotI,yBAC5EA,IACDjgM,GAASplH,EAASqjT,IAClBprI,EAAOq2H,QAAQ,WACX9lL,GAAYxoH,EAASqjT,OAG7BprI,EAAOo2H,OAAO,WACV,IAAI/vS,EAAQ,EAAK2vS,QAAQrwS,QAAQq6K,GAC7B35K,GAAS,GACT,EAAK2vS,QAAQ/wQ,OAAO5+B,EAAO,GAE/B,IAAM2vS,EAAU,EAAKoW,QAAQa,iBAAiBr+S,IAAI7G,GAClD,GAAIiuS,EAAS,CACT,IAAI,EAAQA,EAAQrwS,QAAQq6K,GACxB,GAAS,GACTg2H,EAAQ/wQ,OAAO,EAAO,MAIlCvoC,KAAKs5S,QAAQ11S,KAAK0/K,GAClBgtI,EAAiB1sT,KAAK0/K,GACfA,EAzDH,IAAKstI,GAAUjuJ,EAAU74E,OAAQ3mD,EAAQ2mD,QAAS,CAC9C,IAAMylD,EAAS,GACTy8K,EAAaztP,EAAQsyP,YAAYluJ,EAAUphK,MAAOohK,EAAU74E,OAAQylD,GACpE08K,EAAW1tP,EAAQsyP,YAAY1tR,EAAQ5hC,MAAO4hC,EAAQ2mD,OAAQylD,GAChEA,EAAOprI,OACPnE,KAAK0vT,QAAQoB,YAAYvhL,GAGzBvvI,KAAK0vT,QAAQQ,WAAW,WACpB1R,EAAYnzS,EAAS2gT,GACrB,EAAU3gT,EAAS4gT,Q,wBAiDvC,SAAW9qT,GAAI,kBACJnB,KAAK2vT,UAAUxuT,GACtBnB,KAAK0vT,QAAQO,gBAAgB58S,QAAQ,SAAC09S,EAAU1lT,UACrC0lT,EAAS5vT,KAEpBnB,KAAK6vT,kBAAkBx8S,QAAQ,SAACopF,EAAWpxF,GACvC,EAAKwkT,kBAAkBx7S,IAAIhJ,EAASoxF,EAAUtnF,OAAO,SAAA2/E,GACjD,OAAOA,EAAM3zF,MAAQA,S,+BAIjC,SAAkBkK,GACdrL,KAAK0vT,QAAQO,gBAAgB19S,OAAOlH,GACpCrL,KAAK6vT,kBAAkBt9S,OAAOlH,GAC9B,IAAM2lT,EAAiBhxT,KAAK0vT,QAAQa,iBAAiBr+S,IAAI7G,GACrD2lT,IACAA,EAAe39S,QAAQ,SAAAiwK,GAAM,OAAIA,EAAOpiK,YACxClhB,KAAK0vT,QAAQa,iBAAiBh+S,OAAOlH,M,4CAG7C,SAA+B49I,EAAaz3I,GAAO,WACzCxG,EAAWhL,KAAK0vT,QAAQnV,OAAO9vQ,MAAMw+G,EAAam0J,GAAqB,GAI7EpyS,EAASqI,QAAQ,SAAAkpS,GAGb,IAAIA,EAAG,aAAP,CAEA,IAAM0U,EAAa,EAAKvB,QAAQwB,yBAAyB3U,GACrD0U,EAAW9wR,KACX8wR,EAAW59S,QAAQ,SAAA89S,GAAE,OAAIA,EAAGC,sBAAsB7U,EAAK/qS,GAAS,GAAO,KAGvE,EAAK6/S,kBAAkB9U,MAK/Bv8S,KAAK0vT,QAAQ4B,yBAAyB,kBAAMtmT,EAASqI,QAAQ,SAAAkpS,GAAG,OAAI,EAAK8U,kBAAkB9U,S,mCAE/F,SAAsBlxS,EAASmG,EAAS+/S,EAAsBpB,GAAiB,WACrEqB,EAAgBxxT,KAAK0vT,QAAQO,gBAAgB/9S,IAAI7G,GACvD,GAAImmT,EAAe,CACf,IAAMlY,EAAU,GAWhB,GAVA98R,OAAOC,KAAK+0S,GAAen+S,QAAQ,SAAAooS,GAG/B,GAAI,EAAKkU,UAAUlU,GAAc,CAC7B,IAAMn4H,EAAS,EAAK/kH,QAAQlzD,EAASowS,EAAa+T,GAAYW,GAC1D7sI,GACAg2H,EAAQ11S,KAAK0/K,MAIrBg2H,EAAQn1S,OAKR,OAJAnE,KAAK0vT,QAAQ+B,qBAAqBzxT,KAAKgmB,GAAI3a,GAAS,EAAMmG,GACtD+/S,GACAlX,EAAoBf,GAASI,OAAO,kBAAM,EAAKgW,QAAQgC,iBAAiBrmT,MAErE,EAGf,OAAO,I,4CAEX,SAA+BA,GAAO,WAC5BoxF,EAAYz8F,KAAK6vT,kBAAkB39S,IAAI7G,GACvCsmT,EAAgB3xT,KAAK0vT,QAAQO,gBAAgB/9S,IAAI7G,GAGvD,GAAIoxF,GAAak1N,EAAe,CAC5B,IAAMC,EAAkB,IAAIjkT,IAC5B8uF,EAAUppF,QAAQ,SAAAqtB,GACd,IAAM+6Q,EAAc/6Q,EAASv/B,KAC7B,IAAIywT,EAAgBx9S,IAAIqnS,GAAxB,CAEAmW,EAAgB/uT,IAAI44S,GACpB,IACMn2F,EADU,EAAKqqG,UAAUlU,GACJoS,mBACrBlrJ,EAAYgvJ,EAAclW,IAAgBgU,GAC1CtsR,EAAU,IAAI,GAAWqsR,IACzBlsI,EAAS,IAAI,GAA0B,EAAKt9J,GAAIy1R,EAAapwS,GACnE,EAAKqkT,QAAQiB,qBACb,EAAKf,OAAOhsT,KAAK,CACbyH,UACAowS,cACAn2F,aACA3iD,YACAx/H,UACAmgJ,SACAotI,sBAAsB,U,wBAKtC,SAAWrlT,EAASmG,GAAO,WACjBqgT,EAAS7xT,KAAK0vT,QAKpB,GAJIrkT,EAAQymT,mBACR9xT,KAAK+xT,+BAA+B1mT,EAASmG,IAG7CxR,KAAKoxT,sBAAsB/lT,EAASmG,GAAS,GAAjD,CAIA,IAAIwgT,GAAoC,EACxC,GAAIH,EAAOI,gBAAiB,CACxB,IAAMC,EAAiBL,EAAOvY,QAAQn1S,OAAS0tT,EAAOM,wBAAwBjgT,IAAI7G,GAAW,GAK7F,GAAI6mT,GAAkBA,EAAe/tT,OACjC6tT,GAAoC,OAIpC,IADA,IAAIprR,EAASv7B,EACNu7B,EAASA,EAAOlmB,YAEnB,GADiBmxS,EAAO5B,gBAAgB/9S,IAAI00B,GAC9B,CACVorR,GAAoC,EACpC,OAYhB,GAHAhyT,KAAKoyT,+BAA+B/mT,GAGhC2mT,EACAH,EAAOJ,qBAAqBzxT,KAAKgmB,GAAI3a,GAAS,EAAOmG,OAEpD,CACD,IAAM6gT,EAAchnT,EAAO,aACtBgnT,GAAeA,IAAgBtD,KAGhC8C,EAAO3B,WAAW,kBAAM,EAAKmB,kBAAkBhmT,KAC/CwmT,EAAOS,uBAAuBjnT,GAC9BwmT,EAAOU,mBAAmBlnT,EAASmG,Q,wBAI/C,SAAWnG,EAASu7B,GAChB6pF,GAASplH,EAASrL,KAAK8vT,kB,oCAE3B,SAAuB0C,GAAW,WACxBnN,EAAe,GA4BrB,OA3BArlT,KAAK4vT,OAAOv8S,QAAQ,SAAAyhF,GAChB,IAAMwuF,EAASxuF,EAAMwuF,OACrB,IAAIA,EAAOxiB,UAAX,CAEA,IAAMz1J,EAAUypF,EAAMzpF,QAChBoxF,EAAY,EAAKozN,kBAAkB39S,IAAI7G,GACzCoxF,GACAA,EAAUppF,QAAQ,SAACqtB,GACf,GAAIA,EAASv/B,MAAQ2zF,EAAM2mN,YAAa,CACpC,IAAMgT,EAAYjT,EAAmBnwS,EAASypF,EAAM2mN,YAAa3mN,EAAM6tE,UAAUphK,MAAOuzF,EAAM3xD,QAAQ5hC,OACtGktT,EAAS,MAAY+D,EACrBlX,EAAexmN,EAAMwuF,OAAQ5iJ,EAASqvR,MAAOtB,EAAW/tR,EAASzN,aAIzEqwJ,EAAOmvI,iBACP,EAAK/C,QAAQQ,WAAW,WAGpB5sI,EAAOpiK,YAIXmkS,EAAazhT,KAAKkxF,MAG1B90F,KAAK4vT,OAAS,GACPvK,EAAaxpS,KAAK,SAACE,EAAGC,GAGzB,IAAMyjC,EAAK1jC,EAAEupM,WAAWy9F,IAAIrB,SACtBhiQ,EAAK1jC,EAAEspM,WAAWy9F,IAAIrB,SAC5B,OAAU,GAANjiQ,GAAiB,GAANC,EACJD,EAAKC,EAET,EAAKgwQ,QAAQnV,OAAOmY,gBAAgB32S,EAAE1Q,QAAS2Q,EAAE3Q,SAAW,GAAK,M,qBAGhF,SAAQmG,GACJxR,KAAKs5S,QAAQjmS,QAAQ,SAAAk2H,GAAC,OAAIA,EAAEroH,YAC5BlhB,KAAK+xT,+BAA+B/xT,KAAKqsH,YAAa76G,K,iCAE1D,SAAoBnG,GAChB,IAAIsnT,GAAe,EAKnB,OAJI3yT,KAAK6vT,kBAAkBz7S,IAAI/I,KAC3BsnT,GAAe,KAEd3yT,KAAK4vT,OAAOvqT,KAAK,SAAAyvF,GAAK,OAAIA,EAAMzpF,UAAYA,KAA4BsnT,M,GAI/E,G,8BACF,WAAY1E,EAAU1T,EAAQ2T,GAAW,oBACrCluT,KAAKiuT,SAAWA,EAChBjuT,KAAKu6S,OAASA,EACdv6S,KAAKkuT,YAAcA,EACnBluT,KAAKs5S,QAAU,GACft5S,KAAK4yT,gBAAkB,IAAInlT,IAC3BzN,KAAKuwT,iBAAmB,IAAI9iT,IAC5BzN,KAAKmyT,wBAA0B,IAAI1kT,IACnCzN,KAAKiwT,gBAAkB,IAAIxiT,IAC3BzN,KAAK6yT,cAAgB,IAAIllT,IACzB3N,KAAKiyT,gBAAkB,EACvBjyT,KAAK2wT,mBAAqB,EAC1B3wT,KAAK8yT,iBAAmB,GACxB9yT,KAAK+yT,eAAiB,GACtB/yT,KAAKgzT,UAAY,GACjBhzT,KAAKizT,cAAgB,GACrBjzT,KAAKkzT,wBAA0B,IAAIzlT,IACnCzN,KAAKmzT,uBAAyB,GAC9BnzT,KAAKozT,uBAAyB,GAE9BpzT,KAAKqzT,kBAAoB,SAAChoT,EAASmG,M,iCAGvC,SAAmBnG,EAASmG,GACxBxR,KAAKqzT,kBAAkBhoT,EAASmG,K,yBAEpC,WACI,IAAM8nS,EAAU,GAQhB,OAPAt5S,KAAK+yT,eAAe1/S,QAAQ,SAAA89S,GACxBA,EAAG7X,QAAQjmS,QAAQ,SAAAiwK,GACXA,EAAOktI,QACPlX,EAAQ11S,KAAK0/K,OAIlBg2H,I,6BAEX,SAAgB0V,EAAa3iM,GACzB,IAAM8kM,EAAK,IAAI,GAA6BnC,EAAa3iM,EAAarsH,MAgBtE,OAfIA,KAAKiuT,UAAYjuT,KAAKu6S,OAAOmY,gBAAgB1yT,KAAKiuT,SAAU5hM,GAC5DrsH,KAAKszT,sBAAsBnC,EAAI9kM,IAM/BrsH,KAAK4yT,gBAAgBv+S,IAAIg4G,EAAa8kM,GAMtCnxT,KAAKuzT,oBAAoBlnM,IAEtBrsH,KAAK8yT,iBAAiB9D,GAAemC,I,mCAEhD,SAAsBA,EAAI9kM,GACtB,IAAMt+E,EAAQ/tC,KAAK+yT,eAAe5uT,OAAS,EAC3C,GAAI4pC,GAAS,EAAG,CAEZ,IADA,IAAIylR,GAAQ,EACH3rT,EAAIkmC,EAAOlmC,GAAK,EAAGA,IAExB,GAAI7H,KAAKu6S,OAAOmY,gBADM1yT,KAAK+yT,eAAelrT,GACIwkH,YAAaA,GAAc,CACrErsH,KAAK+yT,eAAexqR,OAAO1gC,EAAI,EAAG,EAAGspT,GACrCqC,GAAQ,EACR,MAGHA,GACDxzT,KAAK+yT,eAAexqR,OAAO,EAAG,EAAG4oR,QAIrCnxT,KAAK+yT,eAAenvT,KAAKutT,GAG7B,OADAnxT,KAAKkzT,wBAAwB7+S,IAAIg4G,EAAa8kM,GACvCA,I,sBAEX,SAASnC,EAAa3iM,GAClB,IAAI8kM,EAAKnxT,KAAK8yT,iBAAiB9D,GAI/B,OAHKmC,IACDA,EAAKnxT,KAAKyzT,gBAAgBzE,EAAa3iM,IAEpC8kM,I,6BAEX,SAAgBnC,EAAa7tT,EAAMo9D,GAC/B,IAAI4yP,EAAKnxT,KAAK8yT,iBAAiB9D,GAC3BmC,GAAMA,EAAGp2F,SAAS55N,EAAMo9D,IACxBv+D,KAAKiyT,oB,qBAGb,SAAQjD,EAAax9S,GAAO,WACxB,GAAKw9S,EAAL,CAEA,IAAMmC,EAAKnxT,KAAK0zT,gBAAgB1E,GAChChvT,KAAKkwT,WAAW,WACZ,EAAKgD,wBAAwB3gT,OAAO4+S,EAAG9kM,oBAChC,EAAKymM,iBAAiB9D,GAC7B,IAAMrlT,EAAQ,EAAKopT,eAAe9pT,QAAQkoT,GACtCxnT,GAAS,GACT,EAAKopT,eAAexqR,OAAO5+B,EAAO,KAG1C3J,KAAKsxT,yBAAyB,kBAAMH,EAAGjwS,QAAQ1P,Q,6BAEnD,SAAgBwU,GACZ,OAAOhmB,KAAK8yT,iBAAiB9sS,K,sCAEjC,SAAyB3a,GAMrB,IAAM4lT,EAAa,IAAItjT,IACjBgkT,EAAgB3xT,KAAKiwT,gBAAgB/9S,IAAI7G,GAC/C,GAAIsmT,EAEA,IADA,IAAMl1S,EAAOD,OAAOC,KAAKk1S,GAChB9pT,EAAI,EAAGA,EAAI4U,EAAKtY,OAAQ0D,IAAK,CAClC,IAAM8rT,EAAOhC,EAAcl1S,EAAK5U,IAAImnT,YACpC,GAAI2E,EAAM,CACN,IAAMxC,EAAKnxT,KAAK0zT,gBAAgBC,GAC5BxC,GACAF,EAAWpuT,IAAIsuT,IAK/B,OAAOF,I,qBAEX,SAAQjC,EAAa3jT,EAASlK,EAAMI,GAChC,GAAIqyT,GAAcvoT,GAAU,CACxB,IAAM8lT,EAAKnxT,KAAK0zT,gBAAgB1E,GAChC,GAAImC,EAEA,OADAA,EAAG5yP,QAAQlzD,EAASlK,EAAMI,IACnB,EAGf,OAAO,I,wBAEX,SAAWytT,EAAa3jT,EAASu7B,EAAQjmB,GACrC,GAAKizS,GAAcvoT,GAAnB,CAIA,IAAM88P,EAAU98P,EAAO,aACvB,GAAI88P,GAAWA,EAAQ8mD,cAAe,CAClC9mD,EAAQ8mD,eAAgB,EACxB9mD,EAAQ+mD,YAAa,EACrB,IAAMvlT,EAAQ3J,KAAKozT,uBAAuBnqT,QAAQoC,GAC9C1B,GAAS,GACT3J,KAAKozT,uBAAuB7qR,OAAO5+B,EAAO,GAMlD,GAAIqlT,EAAa,CACb,IAAMmC,EAAKnxT,KAAK0zT,gBAAgB1E,GAO5BmC,GACAA,EAAGxoH,WAAWt9L,EAASu7B,GAI3BjmB,GACA3gB,KAAKuzT,oBAAoBloT,M,iCAGjC,SAAoBA,GAChBrL,KAAKmzT,uBAAuBvvT,KAAKyH,K,mCAErC,SAAsBA,EAAS9J,GACvBA,EACKvB,KAAK6yT,cAAcz+S,IAAI/I,KACxBrL,KAAK6yT,cAAchwT,IAAIwI,GACvBolH,GAASplH,EAASsjT,KAGjB3uT,KAAK6yT,cAAcz+S,IAAI/I,KAC5BrL,KAAK6yT,cAActgT,OAAOlH,GAC1BwoH,GAAYxoH,EAASsjT,O,wBAG7B,SAAWK,EAAa3jT,EAASwoT,EAAeriT,GAC5C,GAAIoiT,GAAcvoT,GAAU,CACxB,IAAM8lT,EAAKnC,EAAchvT,KAAK0zT,gBAAgB1E,GAAe,KAO7D,GANImC,EACAA,EAAG1nK,WAAWp+I,EAASmG,GAGvBxR,KAAKyxT,qBAAqBzC,EAAa3jT,GAAS,EAAOmG,GAEvDqiT,EAAe,CACf,IAAMC,EAAS9zT,KAAKkzT,wBAAwBhhT,IAAI7G,GAC5CyoT,GAAUA,EAAO9tS,KAAOgpS,GACxB8E,EAAOrqK,WAAWp+I,EAASmG,SAKnCxR,KAAKuyT,mBAAmBlnT,EAASmG,K,kCAGzC,SAAqBw9S,EAAa3jT,EAAS8jT,EAAc39S,GACrDxR,KAAKozT,uBAAuBxvT,KAAKyH,GACjCA,EAAO,aACH,CAAE2jT,cAAaC,cAAez9S,EAAS29S,eAAcC,sBAAsB,K,oBAEnF,SAAOJ,EAAa3jT,EAASlK,EAAM4uT,EAAO98R,GACtC,OAAI2gS,GAAcvoT,GACPrL,KAAK0zT,gBAAgB1E,GAAap0L,OAAOvvH,EAASlK,EAAM4uT,EAAO98R,GAEnE,e,+BAEX,SAAkB6hE,EAAOi/N,EAAcrO,EAAgBC,EAAgBqO,GACnE,OAAOl/N,EAAMwwH,WAAWphI,MAAMlkF,KAAKu6S,OAAQzlN,EAAMzpF,QAASypF,EAAM6tE,UAAUphK,MAAOuzF,EAAM3xD,QAAQ5hC,MAAOmkT,EAAgBC,EAAgB7wN,EAAM6tE,UAAU36I,QAAS8sE,EAAM3xD,QAAQnb,QAAS+rS,EAAcC,K,oCAExM,SAAuBl0J,GAAgB,WAC/B90J,EAAWhL,KAAKu6S,OAAO9vQ,MAAMq1H,EAAkBs9I,GAAqB,GACxEpyS,EAASqI,QAAQ,SAAAhI,GAAO,OAAI,EAAK4oT,kCAAkC5oT,KAC1B,GAArCrL,KAAKmyT,wBAAwBhyR,OAEjCn1B,EAAWhL,KAAKu6S,OAAO9vQ,MAAMq1H,EAAkBw9I,GAAuB,IAC7DjqS,QAAQ,SAAAhI,GAAO,OAAI,EAAK6oT,sCAAsC7oT,O,+CAE3E,SAAkCA,GAC9B,IAAMiuS,EAAUt5S,KAAKuwT,iBAAiBr+S,IAAI7G,GACtCiuS,GACAA,EAAQjmS,QAAQ,SAAAiwK,GAIRA,EAAOktI,OACPltI,EAAOmvI,kBAAmB,EAG1BnvI,EAAOpiK,c,mDAKvB,SAAsC7V,GAClC,IAAMiuS,EAAUt5S,KAAKmyT,wBAAwBjgT,IAAI7G,GAC7CiuS,GACAA,EAAQjmS,QAAQ,SAAAiwK,GAAM,OAAIA,EAAO21H,a,+BAGzC,WAAiB,WACb,OAAO,IAAI10S,QAAQ,SAAAC,GACf,GAAI,EAAK80S,QAAQn1S,OACb,OAAOk2S,EAAoB,EAAKf,SAASI,OAAO,kBAAMl1S,MAGtDA,Q,8BAIZ,SAAiB6G,GAAO,WACd88P,EAAU98P,EAAO,aACvB,GAAI88P,GAAWA,EAAQ8mD,cAAe,CAGlC,GADA5jT,EAAO,aAAiB0jT,GACpB5mD,EAAQ6mD,YAAa,CACrBhvT,KAAKsyT,uBAAuBjnT,GAC5B,IAAM8lT,EAAKnxT,KAAK0zT,gBAAgBvrD,EAAQ6mD,aACpCmC,GACAA,EAAGE,kBAAkBhmT,GAG7BrL,KAAKuyT,mBAAmBlnT,EAAS88P,EAAQ8mD,eAEzCjvT,KAAKu6S,OAAO4Z,eAAe9oT,EAASujT,KACpC5uT,KAAKo0T,sBAAsB/oT,GAAS,GAExCrL,KAAKu6S,OAAO9vQ,MAAMp/B,EAASujT,IAAmB,GAAMv7S,QAAQ,SAAAqwI,GACxD,EAAK0wK,sBAAsB1wK,GAAM,O,mBAGzC,WAAsB,WAAhB8uK,EAAgB,wDAAD,EACblZ,EAAU,GAKd,GAJIt5S,KAAK4yT,gBAAgBzyR,OACrBngC,KAAK4yT,gBAAgBv/S,QAAQ,SAAC89S,EAAI9lT,GAAL,OAAiB,EAAKioT,sBAAsBnC,EAAI9lT,KAC7ErL,KAAK4yT,gBAAgBliT,SAErB1Q,KAAKiyT,iBAAmBjyT,KAAKmzT,uBAAuBhvT,OACpD,IAAK,IAAI0D,EAAI,EAAGA,EAAI7H,KAAKmzT,uBAAuBhvT,OAAQ0D,IAAK,CACzD,IAAM00S,EAAMv8S,KAAKmzT,uBAAuBtrT,GACxC4oH,GAAS8rL,EAAKsS,IAGtB,GAAI7uT,KAAK+yT,eAAe5uT,SACnBnE,KAAK2wT,oBAAsB3wT,KAAKozT,uBAAuBjvT,QAAS,CACjE,IAAMkwT,EAAa,GACnB,IACI/a,EAAUt5S,KAAKs0T,iBAAiBD,EAAY7B,GADhD,QAII,IAAK,IAAI,EAAI,EAAG,EAAI6B,EAAWlwT,OAAQ,IACnCkwT,EAAW,WAKnB,IAAK,IAAI,EAAI,EAAG,EAAIr0T,KAAKozT,uBAAuBjvT,OAAQ,IAAK,CACzD,IAAMkH,EAAUrL,KAAKozT,uBAAuB,GAC5CpzT,KAAK0xT,iBAAiBrmT,GAQ9B,GALArL,KAAK2wT,mBAAqB,EAC1B3wT,KAAKmzT,uBAAuBhvT,OAAS,EACrCnE,KAAKozT,uBAAuBjvT,OAAS,EACrCnE,KAAKgzT,UAAU3/S,QAAQ,SAAArE,GAAE,OAAIA,MAC7BhP,KAAKgzT,UAAY,GACbhzT,KAAKizT,cAAc9uT,OAAQ,CAI3B,IAAMowT,EAAWv0T,KAAKizT,cACtBjzT,KAAKizT,cAAgB,GACjB3Z,EAAQn1S,OACRk2S,EAAoBf,GAASI,OAAO,WAChC6a,EAASlhT,QAAQ,SAAArE,GAAE,OAAIA,QAI3BulT,EAASlhT,QAAQ,SAAArE,GAAE,OAAIA,S,yBAInC,SAAYugI,GACR,MAAM,IAAIl7G,MAAJ,yFAA4Fk7G,EAAOv/F,KAAK,U,8BAElH,SAAiBqkR,EAAY7B,GAAW,WAC9BuB,EAAe,IAAI,GACnBS,EAAiB,GACjBC,EAAoB,IAAIhnT,IACxBinT,EAAqB,GACrBxI,EAAkB,IAAIz+S,IACtBknT,EAAsB,IAAIlnT,IAC1BmnT,EAAuB,IAAInnT,IAC3BonT,EAAsB,IAAIlnT,IAChC3N,KAAK6yT,cAAcx/S,QAAQ,SAAAqwI,GACvBmxK,EAAoBhyT,IAAI6gJ,GAExB,IADA,IAAMoxK,EAAuB,EAAKva,OAAO9vQ,MAAMi5G,EAzvBnC,sBAyvB0D,GAC7D,EAAI,EAAG,EAAIoxK,EAAqB3wT,OAAQ,IAC7C0wT,EAAoBhyT,IAAIiyT,EAAqB,MAGrD,IAAM7G,EAAWjuT,KAAKiuT,SAChB8G,EAAqBxqT,MAAMjG,KAAKtE,KAAKiwT,gBAAgBxzS,QACrDu4S,EAAeC,GAAaF,EAAoB/0T,KAAKmzT,wBAIrD+B,EAAkB,IAAIznT,IACxB5F,EAAI,EACRmtT,EAAa3hT,QAAQ,SAAC8gH,EAAO/0C,GACzB,IAAMv3D,EAAYo1R,EAAkBp1S,IACpCqtT,EAAgB7gT,IAAI+qE,EAAMv3D,GAC1BssG,EAAM9gH,QAAQ,SAAAqwI,GAAI,OAAIjzB,GAASizB,EAAM77H,OAKzC,IAHA,IAAMstS,EAAgB,GAChBC,EAAmB,IAAIznT,IACvB0nT,EAA8B,IAAI1nT,IAC/B,EAAI,EAAG,EAAI3N,KAAKozT,uBAAuBjvT,OAAQ,IAAK,CACzD,IAAMkH,EAAUrL,KAAKozT,uBAAuB,GACtCjrD,EAAU98P,EAAO,aACnB88P,GAAWA,EAAQ8mD,gBACnBkG,EAAcvxT,KAAKyH,GACnB+pT,EAAiBvyT,IAAIwI,GACjB88P,EAAQgnD,aACRnvT,KAAKu6S,OAAO9vQ,MAAMp/B,EAjxBhB,qBAixBwC,GAAMgI,QAAQ,SAAAkpS,GAAG,OAAI6Y,EAAiBvyT,IAAI05S,KAGpF8Y,EAA4BxyT,IAAIwI,IAI5C,IAAMiqT,EAAkB,IAAI7nT,IACtB8nT,EAAeN,GAAaF,EAAoBxqT,MAAMjG,KAAK8wT,IACjEG,EAAaliT,QAAQ,SAAC8gH,EAAO/0C,GACzB,IAAMv3D,EAAYq1R,EAAkBr1S,IACpCytT,EAAgBjhT,IAAI+qE,EAAMv3D,GAC1BssG,EAAM9gH,QAAQ,SAAAqwI,GAAI,OAAIjzB,GAASizB,EAAM77H,OAEzCwsS,EAAWzwT,KAAK,WACZoxT,EAAa3hT,QAAQ,SAAC8gH,EAAO/0C,GACzB,IAAMv3D,EAAYqtS,EAAgBhjT,IAAIktE,GACtC+0C,EAAM9gH,QAAQ,SAAAqwI,GAAI,OAAI7vB,GAAY6vB,EAAM77H,OAE5C0tS,EAAaliT,QAAQ,SAAC8gH,EAAO/0C,GACzB,IAAMv3D,EAAYytS,EAAgBpjT,IAAIktE,GACtC+0C,EAAM9gH,QAAQ,SAAAqwI,GAAI,OAAI7vB,GAAY6vB,EAAM77H,OAE5CstS,EAAc9hT,QAAQ,SAAAhI,GAClB,EAAKqmT,iBAAiBrmT,OAK9B,IAFA,IAAMmqT,EAAa,GACbC,EAAuB,GACpB,EAAIz1T,KAAK+yT,eAAe5uT,OAAS,EAAG,GAAK,EAAG,IACtCnE,KAAK+yT,eAAe,GAC5B2C,uBAAuBlD,GAAan/S,QAAQ,SAAAyhF,GAC3C,IAAMwuF,EAASxuF,EAAMwuF,OACfj4K,EAAUypF,EAAMzpF,QAEtB,GADAmqT,EAAW5xT,KAAK0/K,GACZ,EAAK6vI,uBAAuBhvT,OAAQ,CACpC,IAAM,EAAUkH,EAAO,aAEvB,GAAI,GAAW,EAAQ6jT,WAEnB,YADA5rI,EAAOpiK,UAIf,IAAMy0S,GAAkB1H,IAAa,EAAK1T,OAAOmY,gBAAgBzE,EAAU5iT,GACrEs6S,EAAiB2P,EAAgBpjT,IAAI7G,GACrCq6S,EAAiBwP,EAAgBhjT,IAAI7G,GACrCw7S,EAAc,EAAK+O,kBAAkB9gO,EAAOi/N,EAAcrO,EAAgBC,EAAgBgQ,GAChG,GAAI9O,EAAYt3K,QAAUs3K,EAAYt3K,OAAOprI,OACzCsxT,EAAqB7xT,KAAKijT,OAD9B,CAQA,GAAI8O,EAIA,OAHAryI,EAAOq2H,QAAQ,kBAAM6E,EAAYnzS,EAASw7S,EAAYmF,cACtD1oI,EAAOnqD,UAAU,kBAAM,EAAU9tH,EAASw7S,EAAYoF,iBACtDuI,EAAe5wT,KAAK0/K,GAKxB,GAAIxuF,EAAM47N,qBAIN,OAHAptI,EAAOq2H,QAAQ,kBAAM6E,EAAYnzS,EAASw7S,EAAYmF,cACtD1oI,EAAOnqD,UAAU,kBAAM,EAAU9tH,EAASw7S,EAAYoF,iBACtDuI,EAAe5wT,KAAK0/K,GAQxBujI,EAAYX,UAAU7yS,QAAQ,SAAAsrJ,GAAE,OAAIA,EAAG2qJ,yBAA0B,IACjEyK,EAAa54R,OAAO9vB,EAASw7S,EAAYX,WAEzCwO,EAAmB9wT,KADL,CAAEijT,cAAavjI,SAAQj4K,YAErCw7S,EAAYqF,gBAAgB74S,QAAQ,SAAAhI,GAAO,OAAIqwS,EAAgBwQ,EAAiB7gT,EAAS,IAAIzH,KAAK0/K,KAClGujI,EAAY5B,cAAc5xS,QAAQ,SAACwiT,EAAWxqT,GAC1C,IAAM0nB,EAAQvW,OAAOC,KAAKo5S,GAC1B,GAAI9iS,EAAM5uB,OAAQ,CACd,IAAI2xT,EAASnB,EAAoBziT,IAAI7G,GAChCyqT,GACDnB,EAAoBtgT,IAAIhJ,EAASyqT,EAAS,IAAInoT,KAElDolB,EAAM1f,QAAQ,SAAA+6B,GAAI,OAAI0nR,EAAOjzT,IAAIurC,QAGzCy4Q,EAAY3B,eAAe7xS,QAAQ,SAACwiT,EAAWxqT,GAC3C,IAAM0nB,EAAQvW,OAAOC,KAAKo5S,GACtBC,EAASlB,EAAqB1iT,IAAI7G,GACjCyqT,GACDlB,EAAqBvgT,IAAIhJ,EAASyqT,EAAS,IAAInoT,KAEnDolB,EAAM1f,QAAQ,SAAA+6B,GAAI,OAAI0nR,EAAOjzT,IAAIurC,UAI7C,GAAIqnR,EAAqBtxT,OAAQ,CAC7B,IAAMorI,EAAS,GACfkmL,EAAqBpiT,QAAQ,SAAAwzS,GACzBt3K,EAAO3rI,KAAP,WAAgBijT,EAAYpL,YAA5B,0BACAoL,EAAYt3K,OAAOl8H,QAAQ,SAAA2hB,GAAK,OAAIu6G,EAAO3rI,KAAP,YAAiBoxB,EAAjB,WAExCwgS,EAAWniT,QAAQ,SAAAiwK,GAAM,OAAIA,EAAOpiK,YACpClhB,KAAK8wT,YAAYvhL,GAErB,IAAMwmL,EAAwB,IAAItoT,IAK5BuoT,EAAsB,IAAIvoT,IAChCinT,EAAmBrhT,QAAQ,SAAAyhF,GACvB,IAAMzpF,EAAUypF,EAAMzpF,QAClB0oT,EAAa3/S,IAAI/I,KACjB2qT,EAAoB3hT,IAAIhJ,EAASA,GACjC,EAAK4qT,sBAAsBnhO,EAAMwuF,OAAO0rI,YAAal6N,EAAM+xN,YAAakP,MAGhFvB,EAAenhT,QAAQ,SAAAiwK,GACnB,IAAMj4K,EAAUi4K,EAAOj4K,QACC,EAAK6qT,oBAAoB7qT,GAAS,EAAOi4K,EAAO0rI,YAAa1rI,EAAOm4H,YAAa,MACzFpoS,QAAQ,SAAA8iT,GACpBza,EAAgBqa,EAAuB1qT,EAAS,IAAIzH,KAAKuyT,GACzDA,EAAWj1S,cAUnB,IAAMk1S,EAAejB,EAAchgT,OAAO,SAAAuuI,GACtC,OAAO2yK,GAAuB3yK,EAAMixK,EAAqBC,KAGvD0B,EAAgB,IAAI7oT,IACG8oT,GAAsBD,EAAet2T,KAAKu6S,OAAQ8a,EAA6BT,EAAsB,KAC7GvhT,QAAQ,SAAAqwI,GACrB2yK,GAAuB3yK,EAAMixK,EAAqBC,IAClDwB,EAAaxyT,KAAK8/I,KAI1B,IAAM8yK,EAAe,IAAI/oT,IACzBunT,EAAa3hT,QAAQ,SAAC8gH,EAAO/0C,GACzBm3O,GAAsBC,EAAc,EAAKjc,OAAQ,IAAI5sS,IAAIwmH,GAAQwgM,EAAqB,OAE1FyB,EAAa/iT,QAAQ,SAAAqwI,GACjB,IAAMvrH,EAAOm+R,EAAcpkT,IAAIwxI,GACzB+yK,EAAMD,EAAatkT,IAAIwxI,GAC7B4yK,EAAcjiT,IAAIqvI,EAAMlnI,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI5O,GAAOs+R,MAEnE,IAAMC,EAAc,GACdC,EAAa,GACbC,EAAuC,GAC7ClC,EAAmBrhT,QAAQ,SAAAyhF,GACvB,IAAQzpF,EAAiCypF,EAAjCzpF,QAASi4K,EAAwBxuF,EAAxBwuF,OAAQujI,EAAgB/xN,EAAhB+xN,YAGzB,GAAIkN,EAAa3/S,IAAI/I,GAAU,CAC3B,GAAIwpT,EAAoBzgT,IAAI/I,GAKxB,OAJAi4K,EAAOnqD,UAAU,kBAAM,EAAU9tH,EAASw7S,EAAYoF,YACtD3oI,EAAOt2J,UAAW,EAClBs2J,EAAOuzI,kBAAkBhQ,EAAYzjR,gBACrCoxR,EAAe5wT,KAAK0/K,GASxB,IAAIwzI,EAAsBF,EAC1B,GAAIZ,EAAoB71R,KAAO,EAAG,CAG9B,IAFA,IAAIo8Q,EAAMlxS,EACJ0rT,EAAe,GACdxa,EAAMA,EAAI77R,YAAY,CACzB,IAAMs2S,EAAiBhB,EAAoB9jT,IAAIqqS,GAC/C,GAAIya,EAAgB,CAChBF,EAAsBE,EACtB,MAEJD,EAAanzT,KAAK24S,GAEtBwa,EAAa1jT,QAAQ,SAAAuzB,GAAM,OAAIovR,EAAoB3hT,IAAIuyB,EAAQkwR,KAEnE,IAAMG,EAAc,EAAKC,gBAAgB5zI,EAAO0rI,YAAanI,EAAakP,EAAuBtB,EAAmB+B,EAAcF,GAElI,GADAhzI,EAAO6zI,cAAcF,GACjBH,IAAwBF,EACxBF,EAAY9yT,KAAK0/K,OAEhB,CACD,IAAM8zI,EAAgB,EAAK7G,iBAAiBr+S,IAAI4kT,GAC5CM,GAAiBA,EAAcjzT,SAC/Bm/K,EAAOs1H,aAAeyB,EAAoB+c,IAE9C5C,EAAe5wT,KAAK0/K,SAIxBk7H,EAAYnzS,EAASw7S,EAAYmF,YACjC1oI,EAAOnqD,UAAU,kBAAM,EAAU9tH,EAASw7S,EAAYoF,YAItD0K,EAAW/yT,KAAK0/K,GACZuxI,EAAoBzgT,IAAI/I,IACxBmpT,EAAe5wT,KAAK0/K,KAKhCqzI,EAAWtjT,QAAQ,SAAAiwK,GAGf,IAAM+zI,EAAoB5C,EAAkBviT,IAAIoxK,EAAOj4K,SACvD,GAAIgsT,GAAqBA,EAAkBlzT,OAAQ,CAC/C,IAAM8yT,EAAc5c,EAAoBgd,GACxC/zI,EAAO6zI,cAAcF,MAM7BzC,EAAenhT,QAAQ,SAAAiwK,GACfA,EAAOs1H,aACPt1H,EAAOg0I,iBAAiBh0I,EAAOs1H,cAG/Bt1H,EAAOpiK,YAMf,IAAK,IAAI,EAAI,EAAG,EAAIi0S,EAAchxT,OAAQ,IAAK,CAC3C,IAAM,EAAUgxT,EAAc,GACxB,EAAU,EAAO,aAKvB,GAJAthM,GAAY,EAASqpL,IAIjB,IAAW,EAAQiS,aAAvB,CAEA,IAAI7V,EAAU,GAId,GAAI4S,EAAgB/rR,KAAM,CACtB,IAAIo3R,EAAuBrL,EAAgBh6S,IAAI,GAC3CqlT,GAAwBA,EAAqBpzT,QAC7Cm1S,EAAQ11S,KAAR,MAAA01S,EAAO,YAASie,IAGpB,IADA,IAAIC,EAAuBx3T,KAAKu6S,OAAO9vQ,MAAM,EAAS6yQ,GAAuB,GACpE/oS,EAAI,EAAGA,EAAIijT,EAAqBrzT,OAAQoQ,IAAK,CAClD,IAAIkjT,EAAiBvL,EAAgBh6S,IAAIslT,EAAqBjjT,IAC1DkjT,GAAkBA,EAAetzT,QACjCm1S,EAAQ11S,KAAR,MAAA01S,EAAO,YAASme,KAI5B,IAAMC,EAAgBpe,EAAQnkS,OAAO,SAAAo0H,GAAC,OAAKA,EAAEu3B,YACzC42J,EAAcvzT,OACdwzT,GAA8B33T,KAAM,EAAS03T,GAG7C13T,KAAK0xT,iBAAiB,IAc9B,OAVAyD,EAAchxT,OAAS,EACvBuyT,EAAYrjT,QAAQ,SAAAiwK,GAChB,EAAKg2H,QAAQ11S,KAAK0/K,GAClBA,EAAOo2H,OAAO,WACVp2H,EAAOpiK,UACP,IAAMvX,EAAQ,EAAK2vS,QAAQrwS,QAAQq6K,GACnC,EAAKg2H,QAAQ/wQ,OAAO5+B,EAAO,KAE/B25K,EAAOC,SAEJmzI,I,iCAEX,SAAoB1H,EAAa3jT,GAC7B,IAAIsnT,GAAe,EACbxqD,EAAU98P,EAAO,aASvB,OARI88P,GAAWA,EAAQ8mD,gBACnB0D,GAAe,GACf3yT,KAAKuwT,iBAAiBn8S,IAAI/I,KAC1BsnT,GAAe,GACf3yT,KAAKmyT,wBAAwB/9S,IAAI/I,KACjCsnT,GAAe,GACf3yT,KAAKiwT,gBAAgB77S,IAAI/I,KACzBsnT,GAAe,GACZ3yT,KAAK0zT,gBAAgB1E,GAAa4I,oBAAoBvsT,IAAYsnT,I,wBAE7E,SAAW1/R,GACPjzB,KAAKgzT,UAAUpvT,KAAKqvB,K,sCAExB,SAAyBA,GACrBjzB,KAAKizT,cAAcrvT,KAAKqvB,K,iCAE5B,SAAoB5nB,EAASwsT,EAAkB7I,EAAavT,EAAaqc,GACrE,IAAIxe,EAAU,GACd,GAAIue,EAAkB,CAClB,IAAME,EAAwB/3T,KAAKmyT,wBAAwBjgT,IAAI7G,GAC3D0sT,IACAze,EAAUye,OAGb,CACD,IAAM/G,EAAiBhxT,KAAKuwT,iBAAiBr+S,IAAI7G,GACjD,GAAI2lT,EAAgB,CAChB,IAAMgH,GAAsBF,GAAgBA,GAAgBtI,GAC5DwB,EAAe39S,QAAQ,SAAAiwK,GACfA,EAAOktI,SAENwH,GAAsB10I,EAAOm4H,aAAeA,IAEjDnC,EAAQ11S,KAAK0/K,MAazB,OATI0rI,GAAevT,KACfnC,EAAUA,EAAQnkS,OAAO,SAAAmuK,GACrB,QAAI0rI,GAAeA,GAAe1rI,EAAO0rI,aAErCvT,GAAeA,GAAen4H,EAAOm4H,gBAK1CnC,I,mCAEX,SAAsB0V,EAAanI,EAAakP,GAAqB,aAE3D9sK,EAAc49J,EAAYx7S,QAG1B4sT,EAAoBpR,EAAYkF,yBAAsBtnT,EAAYuqT,EAClEkJ,EAAoBrR,EAAYkF,yBAAsBtnT,EALxCoiT,EAAYpL,YADiC,cAO/BoL,EAAYX,WAPmB,qBAOR,IAC/C76S,EAD+C,QACjBA,QAC9BwsT,EAAmBxsT,IAAY49I,EAC/BqwJ,EAAUoC,EAAgBqa,EAAuB1qT,EAAS,IACxC,EAAK6qT,oBAAoB7qT,EAASwsT,EAAkBI,EAAmBC,EAAmBrR,EAAY1jR,SAC9G9vB,QAAQ,SAAAiwK,GACpB,IAAM60I,EAAa70I,EAAO80I,gBACtBD,EAAWje,eACXie,EAAWje,gBAEf52H,EAAOpiK,UACPo4R,EAAQ11S,KAAK0/K,MAXrB,+BAPiE,8BAuBjEk7H,EAAYv1J,EAAa49J,EAAYmF,c,6BAEzC,SAAgBgD,EAAanI,EAAakP,EAAuBtB,EAAmB+B,EAAcF,GAAa,WACrG7a,EAAcoL,EAAYpL,YAC1BxyJ,EAAc49J,EAAYx7S,QAG1BgtT,EAAoB,GACpBC,EAAsB,IAAI3qT,IAC1B4qT,EAAiB,IAAI5qT,IACrB6qT,EAAgB3R,EAAYX,UAAUz8S,IAAI,SAAAgvT,GAC5C,IAAMptT,EAAUotT,EAAoBptT,QACpCitT,EAAoBz1T,IAAIwI,GAExB,IAAM88P,EAAU98P,EAAO,aACvB,GAAI88P,GAAWA,EAAQinD,qBACnB,OAAO,IAAI,IAAoBqJ,EAAoBj7Q,SAAUi7Q,EAAoBrrO,OACrF,IAgTiBksN,EACnBof,EAjTQb,EAAmBxsT,IAAY49I,EAC/B0vK,GA+SWrf,GA/S4Byc,EAAsB7jT,IAAI7G,IAAYyjT,IAC9ErlT,IAAI,SAAA8/H,GAAC,OAAIA,EAAE6uL,kBA+SlBM,EAAe,GACrBE,GAA0Btf,EAASof,GAC5BA,GAhTMvjT,OAAO,SAAAo0H,GAMR,QADWA,EACDl+H,SADCk+H,EACYl+H,UAAYA,IAEjCovS,EAAY+b,EAAatkT,IAAI7G,GAC7BqvS,EAAa4b,EAAcpkT,IAAI7G,GAC/B2sS,EAAYsC,EAAmB,EAAKC,OAAQ,EAAK2T,YAAa7iT,EAASotT,EAAoBzgB,UAAWyC,EAAWC,GACjHp3H,EAAS,EAAKirI,aAAakK,EAAqBzgB,EAAW2gB,GAMjE,GAHIF,EAAoBtT,aAAesP,GACnC8D,EAAe11T,IAAIwI,GAEnBwsT,EAAkB,CAClB,IAAMgB,EAAgB,IAAI,GAA0B7J,EAAavT,EAAapwS,GAC9EwtT,EAAc1B,cAAc7zI,GAC5B+0I,EAAkBz0T,KAAKi1T,GAE3B,OAAOv1I,IAEX+0I,EAAkBhlT,QAAQ,SAAAiwK,GACtBo4H,EAAgB,EAAKyW,wBAAyB7uI,EAAOj4K,QAAS,IAAIzH,KAAK0/K,GACvEA,EAAOo2H,OAAO,kBA8H1B,SAA4BjwS,EAAKkT,EAAKpb,GAClC,IAAIu3T,EACJ,GAAIrvT,aAAegE,KAEf,GADAqrT,EAAgBrvT,EAAIyI,IAAIyK,GACL,CACf,GAAIm8S,EAAc30T,OAAQ,CACtB,IAAMwF,EAAQmvT,EAAc7vT,QAAQ1H,GACpCu3T,EAAcvwR,OAAO5+B,EAAO,GAEJ,GAAxBmvT,EAAc30T,QACdsF,EAAI8I,OAAOoK,SAMnB,GADAm8S,EAAgBrvT,EAAIkT,GACD,CACf,GAAIm8S,EAAc30T,OAAQ,CACtB,IAAM,EAAQ20T,EAAc7vT,QAAQ1H,GACpCu3T,EAAcvwR,OAAO,EAAO,GAEJ,GAAxBuwR,EAAc30T,eACPsF,EAAIkT,GAIvB,OAAOm8S,EAxJqBC,CAAmB,EAAK5G,wBAAyB7uI,EAAOj4K,QAASi4K,OAEzFg1I,EAAoBjlT,QAAQ,SAAAhI,GAAO,OAAIolH,GAASplH,EAASgyS,KACzD,IAAM/5H,EAAS+2H,EAAoBme,GAUnC,OATAl1I,EAAOnqD,UAAU,WACbm/L,EAAoBjlT,QAAQ,SAAAhI,GAAO,OAAIwoH,GAAYxoH,EAASgyS,KAC5D,EAAUp0J,EAAa49J,EAAYoF,YAIvCsM,EAAellT,QAAQ,SAAAhI,GACnBqwS,EAAgB+Y,EAAmBppT,EAAS,IAAIzH,KAAK0/K,KAElDA,I,0BAEX,SAAaujI,EAAa7O,EAAW2gB,GACjC,OAAI3gB,EAAU7zS,OAAS,EACZnE,KAAKu6S,OAAOprE,QAAQ03E,EAAYx7S,QAAS2sS,EAAW6O,EAAYrpQ,SAAUqpQ,EAAYz5N,MAAOy5N,EAAYxiG,OAAQs0G,GAIrH,IAAI,IAAoB9R,EAAYrpQ,SAAUqpQ,EAAYz5N,W,GAGnE,G,8BACF,WAAY4hO,EAAavT,EAAapwS,GAAO,oBACzCrL,KAAKgvT,YAAcA,EACnBhvT,KAAKy7S,YAAcA,EACnBz7S,KAAKqL,QAAUA,EACfrL,KAAKg5T,QAAU,IAAI,IACnBh5T,KAAKi5T,qBAAsB,EAC3Bj5T,KAAKk5T,iBAAmB,GACxBl5T,KAAK8gK,WAAY,EACjB9gK,KAAKyyT,kBAAmB,EACxBzyT,KAAKgtB,UAAW,EAChBhtB,KAAKwwT,QAAS,EACdxwT,KAAKojC,UAAY,G,4BAErB,SAAckgJ,GAAM,WACZtjL,KAAKi5T,sBAETj5T,KAAKg5T,QAAU11I,EACf9mK,OAAOC,KAAKzc,KAAKk5T,kBAAkB7lT,QAAQ,SAAA08S,GACvC,EAAKmJ,iBAAiBnJ,GAAO18S,QAAQ,SAAA4f,GAAQ,OAAIqoR,EAAeh4H,EAAQysI,OAAOtrT,EAAWwuB,OAE9FjzB,KAAKk5T,iBAAmB,GACxBl5T,KAAKi5T,qBAAsB,EAC3Bj5T,KAAK62T,kBAAkBvzI,EAAOlgJ,WAC9BpjC,KAAKwwT,QAAS,K,2BAElB,WACI,OAAOxwT,KAAKg5T,U,+BAEhB,SAAkB51R,GACdpjC,KAAKojC,UAAYA,I,8BAErB,SAAiBkgJ,GAAM,WACb/5C,EAAIvpI,KAAKg5T,QACXzvL,EAAE4vL,iBACF71I,EAAOq2H,QAAQ,kBAAMpwK,EAAE4vL,gBAAgB,WAE3C71I,EAAOo2H,OAAO,kBAAM,EAAKT,WACzB31H,EAAOnqD,UAAU,kBAAM,EAAKj4G,c,yBAEhC,SAAY/f,EAAM8xB,GACdyoR,EAAgB17S,KAAKk5T,iBAAkB/3T,EAAM,IAAIyC,KAAKqvB,K,oBAE1D,SAAOjkB,GACChP,KAAKwwT,QACLxwT,KAAKo5T,YAAY,OAAQpqT,GAE7BhP,KAAKg5T,QAAQtf,OAAO1qS,K,qBAExB,SAAQA,GACAhP,KAAKwwT,QACLxwT,KAAKo5T,YAAY,QAASpqT,GAE9BhP,KAAKg5T,QAAQrf,QAAQ3qS,K,uBAEzB,SAAUA,GACFhP,KAAKwwT,QACLxwT,KAAKo5T,YAAY,UAAWpqT,GAEhChP,KAAKg5T,QAAQ7/L,UAAUnqH,K,kBAE3B,WACIhP,KAAKg5T,QAAQ1zB,S,wBAEjB,WACI,OAAOtlS,KAAKwwT,QAAiBxwT,KAAKg5T,QAAQngB,e,kBAE9C,YACK74S,KAAKwwT,QAAUxwT,KAAKg5T,QAAQz1I,S,mBAEjC,YACKvjL,KAAKwwT,QAAUxwT,KAAKg5T,QAAQzrO,U,qBAEjC,YACKvtF,KAAKwwT,QAAUxwT,KAAKg5T,QAAQpf,Y,oBAEjC,WACI55S,KAAKg5T,QAAQ/f,W,qBAEjB,WACIj5S,KAAK8gK,WAAY,EACjB9gK,KAAKg5T,QAAQ93S,Y,mBAEjB,YACKlhB,KAAKwwT,QAAUxwT,KAAKg5T,QAAQh8L,U,yBAEjC,SAAYuM,GACHvpI,KAAKwwT,QACNxwT,KAAKg5T,QAAQlf,YAAYvwK,K,yBAGjC,WACI,OAAOvpI,KAAKwwT,OAAS,EAAIxwT,KAAKg5T,QAAQ/e,gB,6BAG1C,SAAgBf,GACZ,IAAM3vK,EAAIvpI,KAAKg5T,QACXzvL,EAAE4vL,iBACF5vL,EAAE4vL,gBAAgBjgB,O,GAgC9B,SAASqW,GAAsBhuT,GAI3B,OAAgB,MAATA,EAAgBA,EAAQ,KAEnC,SAASqyT,GAAclwK,GACnB,OAAOA,GAA6B,IAArBA,EAAI,SAKvB,SAAS21K,GAAahuT,EAAS9J,GAC3B,IAAM+3T,EAAWjuT,EAAQE,MAAMwH,QAE/B,OADA1H,EAAQE,MAAMwH,QAAmB,MAATxR,EAAgBA,EAAQ,OACzC+3T,EAEX,SAAS/C,GAAsBgD,EAAWhf,EAAQvvS,EAAUwuT,EAAiBx9E,GACzE,IAAMy9E,EAAY,GAClBzuT,EAASqI,QAAQ,SAAAhI,GAAO,OAAIouT,EAAU71T,KAAKy1T,GAAahuT,MACxD,IAAMquT,EAAiB,GACvBF,EAAgBnmT,QAAQ,SAAC0f,EAAO1nB,GAC5B,IAAMyN,EAAS,GACfia,EAAM1f,QAAQ,SAAA+6B,GACV,IAAM7sC,EAAQuX,EAAOs1B,GAAQmsQ,EAAOgF,aAAal0S,EAAS+iC,EAAM4tM,GAG3Dz6O,GAAyB,GAAhBA,EAAM4C,SAChBkH,EAAO,aAAiBgkT,GACxBqK,EAAe91T,KAAKyH,MAG5BkuT,EAAUllT,IAAIhJ,EAASyN,KAI3B,IAAIjR,EAAI,EAER,OADAmD,EAASqI,QAAQ,SAAAhI,GAAO,OAAIguT,GAAahuT,EAASouT,EAAU5xT,QACrD6xT,EAYX,SAASzE,GAAa0E,EAAOxlM,GACzB,IAAMylM,EAAU,IAAInsT,IAEpB,GADAksT,EAAMtmT,QAAQ,SAAA+rE,GAAI,OAAIw6O,EAAQvlT,IAAI+qE,EAAM,MACpB,GAAhB+0C,EAAMhwH,OACN,OAAOy1T,EACX,IACMC,EAAU,IAAIlsT,IAAIwmH,GAClB2lM,EAAe,IAAIrsT,IACzB,SAASssT,EAAQr2K,GACb,IAAKA,EACD,OALU,EAMd,IAAItkE,EAAO06O,EAAa5nT,IAAIwxI,GAC5B,GAAItkE,EACA,OAAOA,EACX,IAAMx4C,EAAS88G,EAAKhjI,WAWpB,OATI0+D,EADAw6O,EAAQxlT,IAAIwyB,GACLA,EAEFizR,EAAQzlT,IAAIwyB,GAbP,EAiBHmzR,EAAQnzR,GAEnBkzR,EAAazlT,IAAIqvI,EAAMtkE,GAChBA,EAQX,OANA+0C,EAAM9gH,QAAQ,SAAAqwI,GACV,IAAMtkE,EAAO26O,EAAQr2K,GAvBP,IAwBVtkE,GACAw6O,EAAQ1nT,IAAIktE,GAAMx7E,KAAK8/I,KAGxBk2K,EAYX,SAASnpM,GAASplH,EAASwc,GACvB,GAAIxc,EAAQ1I,UACR0I,EAAQ1I,UAAUE,IAAIglB,OAErB,CACD,IAAIod,EAAU55B,EAAO,UAChB45B,IACDA,EAAU55B,EAAO,UAAsB,IAE3C45B,EAAQpd,IAAa,GAG7B,SAASgsG,GAAYxoH,EAASwc,GAC1B,GAAIxc,EAAQ1I,UACR0I,EAAQ1I,UAAU6I,OAAOqc,OAExB,CACD,IAAIod,EAAU55B,EAAO,UACjB45B,UACOA,EAAQpd,IAI3B,SAAS8vS,GAA8B9F,EAAQxmT,EAASiuS,GACpDe,EAAoBf,GAASI,OAAO,kBAAMmY,EAAOH,iBAAiBrmT,KAOtE,SAASutT,GAA0Btf,EAASof,GACxC,IAAK,IAAI7wT,EAAI,EAAGA,EAAIyxS,EAAQn1S,OAAQ0D,IAAK,CACrC,IAAMy7K,EAASg2H,EAAQzxS,GACnBy7K,aAAkB,IAClBs1I,GAA0Bt1I,EAAOg2H,QAASof,GAG1CA,EAAa90T,KAAK0/K,IAI9B,SAASstI,GAAU70S,EAAGC,GAClB,IAAMg+S,EAAKx9S,OAAOC,KAAKV,GACjBk+S,EAAKz9S,OAAOC,KAAKT,GACvB,GAAIg+S,EAAG71T,QAAU81T,EAAG91T,OAChB,OAAO,EACX,IAAK,IAAI0D,EAAI,EAAGA,EAAImyT,EAAG71T,OAAQ0D,IAAK,CAChC,IAAMumC,EAAO4rR,EAAGnyT,GAChB,IAAKmU,EAAE0xB,eAAeU,IAASryB,EAAEqyB,KAAUpyB,EAAEoyB,GACzC,OAAO,EAEf,OAAO,EAEX,SAASioR,GAAuBhrT,EAASspT,EAAqBC,GAC1D,IAAMsF,EAAYtF,EAAqB1iT,IAAI7G,GAC3C,IAAK6uT,EACD,OAAO,EACX,IAAIC,EAAWxF,EAAoBziT,IAAI7G,GAQvC,OAPI8uT,EACAD,EAAU7mT,QAAQ,SAAAvD,GAAI,OAAIqqT,EAASt3T,IAAIiN,KAGvC6kT,EAAoBtgT,IAAIhJ,EAAS6uT,GAErCtF,EAAqBriT,OAAOlH,IACrB,E,IAGL,G,8BACF,WAAY4iT,EAAU7M,EAAS5G,GAAU,+BACrCx6S,KAAKiuT,SAAWA,EAChBjuT,KAAKohT,QAAUA,EACfphT,KAAKo6T,cAAgB,GAErBp6T,KAAKqzT,kBAAoB,SAAChoT,EAASmG,KACnCxR,KAAKq6T,kBAAoB,IAAI,GAA0BpM,EAAU7M,EAAS5G,GAC1Ex6S,KAAKs6T,gBAAkB,IAAI,GAAwBrM,EAAU7M,EAAS5G,GACtEx6S,KAAKq6T,kBAAkBhH,kBAAoB,SAAChoT,EAASmG,GAAV,OAAsB,EAAK6hT,kBAAkBhoT,EAASmG,K,8BAErG,SAAgB+oT,EAAavL,EAAa3iM,EAAalrH,EAAMopI,GACzD,IAAMiwL,EAAWD,EAAc,IAAMp5T,EACjCo9D,EAAUv+D,KAAKo6T,cAAcI,GACjC,IAAKj8P,EAAS,CACV,IAAMgxE,EAAS,GACTwzK,EAAM5B,GAAkBnhT,KAAKohT,QAAS72K,EAAUgF,GACtD,GAAIA,EAAOprI,OACP,MAAM,IAAIkwB,MAAJ,iCAAoClzB,EAApC,kEAAkGouI,EAAOv/F,KAAK,WAExHuuB,EAjsDZ,SAAsBp9D,EAAM4hT,GACxB,OAAO,IAAI,GAAiB5hT,EAAM4hT,GAgsDhB0X,CAAat5T,EAAM4hT,GAC7B/iT,KAAKo6T,cAAcI,GAAYj8P,EAEnCv+D,KAAKq6T,kBAAkBK,gBAAgB1L,EAAa7tT,EAAMo9D,K,sBAE9D,SAASywP,EAAa3iM,GAClBrsH,KAAKq6T,kBAAkBt/F,SAASi0F,EAAa3iM,K,qBAEjD,SAAQ2iM,EAAax9S,GACjBxR,KAAKq6T,kBAAkBn5S,QAAQ8tS,EAAax9S,K,sBAEhD,SAASw9S,EAAa3jT,EAASu7B,EAAQjmB,GACnC3gB,KAAKq6T,kBAAkB1xH,WAAWqmH,EAAa3jT,EAASu7B,EAAQjmB,K,sBAEpE,SAASquS,EAAa3jT,EAASmG,EAASqiT,GACpC7zT,KAAKq6T,kBAAkB5wK,WAAWulK,EAAa3jT,EAASwoT,IAAiB,EAAOriT,K,+BAEpF,SAAkBnG,EAAS4rI,GACvBj3I,KAAKq6T,kBAAkBjG,sBAAsB/oT,EAAS4rI,K,qBAE1D,SAAQ+3K,EAAa3jT,EAASyiJ,EAAUvsJ,GACpC,GAA0B,KAAtBusJ,EAAS/9G,OAAO,GAAW,CAC3B,MAAqB4rQ,EAAqB7tJ,GAA1C,mBAEA9tJ,KAAKs6T,gBAAgB1e,QAFrB,KAEiCvwS,EAFjC,KACa9J,QAIbvB,KAAKq6T,kBAAkB97P,QAAQywP,EAAa3jT,EAASyiJ,EAAUvsJ,K,oBAGvE,SAAOytT,EAAa3jT,EAASyqC,EAAW6kR,EAAY1nS,GAEhD,GAA2B,KAAvB6iB,EAAU/F,OAAO,GAAW,CAC5B,MAAqB4rQ,EAAqB7lQ,GAA1C,mBACA,OAAO91C,KAAKs6T,gBAAgB1/L,OAD5B,KACuCvvH,EADvC,KACwD4nB,GAE5D,OAAOjzB,KAAKq6T,kBAAkBz/L,OAAOo0L,EAAa3jT,EAASyqC,EAAW6kR,EAAY1nS,K,mBAEtF,WAAsB,IAAhBu/R,EAAgB,wDAAD,EACjBxyT,KAAKq6T,kBAAkBluL,MAAMqmL,K,mBAEjC,WACI,OAAOxyT,KAAKq6T,kBAAkB/gB,QACzBtgS,OAAOhZ,KAAKs6T,gBAAgBhhB,W,+BAErC,WACI,OAAOt5S,KAAKq6T,kBAAkBO,wB,GAsBtC,SAASC,GAA2BxvT,EAASyN,GACzC,IAAIgiT,EAAc,KACdC,EAAY,KAUhB,OATIxwT,MAAMyL,QAAQ8C,IAAWA,EAAO3U,QAChC22T,EAAcE,GAA0BliT,EAAO,IAC3CA,EAAO3U,OAAS,IAChB42T,EAAYC,GAA0BliT,EAAOA,EAAO3U,OAAS,MAG5D2U,IACLgiT,EAAcE,GAA0BliT,IAEpCgiT,GAAeC,EAAa,IAAI,GAAmB1vT,EAASyvT,EAAaC,GAC7E,K,sBAUFE,E,WACF,WAAYrxS,EAAUsxS,EAAcC,GAAU,oBAC1Cn7T,KAAK4pB,SAAWA,EAChB5pB,KAAKk7T,aAAeA,EACpBl7T,KAAKm7T,WAAaA,EAClBn7T,KAAKkjC,OAAS,EACd,IAAIk4R,EAAgBH,EAAmBI,uBAAuBnpT,IAAI0X,GAC7DwxS,GACDH,EAAmBI,uBAAuBhnT,IAAIuV,EAAUwxS,EAAgB,IAE5Ep7T,KAAKs7T,eAAiBF,E,yCAE1B,WACQp7T,KAAKkjC,OAAS,IACVljC,KAAKk7T,cACL,EAAUl7T,KAAK4pB,SAAU5pB,KAAKk7T,aAAcl7T,KAAKs7T,gBAErDt7T,KAAKkjC,OAAS,K,oBAGtB,WACIljC,KAAKmJ,QACDnJ,KAAKkjC,OAAS,IACd,EAAUljC,KAAK4pB,SAAU5pB,KAAKs7T,gBAC1Bt7T,KAAKm7T,aACL,EAAUn7T,KAAK4pB,SAAU5pB,KAAKm7T,YAC9Bn7T,KAAKm7T,WAAa,MAEtBn7T,KAAKkjC,OAAS,K,qBAGtB,WACIljC,KAAKi5S,SACDj5S,KAAKkjC,OAAS,IACd+3R,EAAmBI,uBAAuB9oT,OAAOvS,KAAK4pB,UAClD5pB,KAAKk7T,eACL1c,EAAYx+S,KAAK4pB,SAAU5pB,KAAKk7T,cAChCl7T,KAAKm7T,WAAa,MAElBn7T,KAAKm7T,aACL3c,EAAYx+S,KAAK4pB,SAAU5pB,KAAKm7T,YAChCn7T,KAAKm7T,WAAa,MAEtB,EAAUn7T,KAAK4pB,SAAU5pB,KAAKs7T,gBAC9Bt7T,KAAKkjC,OAAS,O,UAI1B+3R,EAAmBI,uBAAyB,IAAI/mT,Q,KAChD,SAAS0mT,GAA0BliT,GAG/B,IAFA,IAAI8jB,EAAS,KACP7J,EAAQvW,OAAOC,KAAK3D,GACjBjR,EAAI,EAAGA,EAAIkrB,EAAM5uB,OAAQ0D,IAAK,CACnC,IAAMumC,EAAOrb,EAAMlrB,GACf0zT,GAAqBntR,MACrBxR,EAASA,GAAU,IACZwR,GAAQt1B,EAAOs1B,IAG9B,OAAOxR,EAEX,SAAS2+R,GAAqBntR,GAC1B,MAAgB,YAATA,GAA+B,aAATA,EAUjC,IACMotR,GAAiB,YACjBC,GAAqB,eAErB,G,8BACF,WAAY7xS,EAAU1oB,EAAOw6T,EAAW55L,EAAQ65L,EAASC,EAAWC,GAAS,+BACzE77T,KAAK4pB,SAAWA,EAChB5pB,KAAKkB,MAAQA,EACblB,KAAK07T,UAAYA,EACjB17T,KAAK8hI,OAASA,EACd9hI,KAAK27T,QAAUA,EACf37T,KAAK47T,UAAYA,EACjB57T,KAAK67T,UAAYA,EACjB77T,KAAK24S,WAAY,EACjB34S,KAAKwD,YAAa,EAClBxD,KAAK87T,WAAa,EAClB97T,KAAKm0S,UAAY,EACjBn0S,KAAK+7T,SAAW,SAAC9nS,GAAD,OAAO,EAAK+nS,gBAAgB/nS,K,oBAEhD,WA8CJ,IAAgC5oB,EAAS9J,EAC/B06T,EADsB5wT,EA7CDrL,KAAK4pB,SA6CKroB,EA7CX,UAAmBvB,KAAK07T,UAAxB,cAAuC17T,KAAK27T,QAA5C,YAAuD37T,KAAK8hI,OAA5D,uBAAiF9hI,KAAK47T,UAAtF,YAAmG57T,KAAKkB,QA8C5H+6T,EAAOC,GAAkB7wT,EAAS,IAAIyR,QAEnC3Y,SAoDb,SAAoB5C,EAAOi3L,GAEvB,IADA,IACS3wL,EAAI,EAAGA,EAAItG,EAAM4C,OAAQ0D,IArDL,MAsDftG,EAAMwuC,OAAOloC,IAEnBqP,EAxDIilT,CAAWF,GACnB16T,EAAQ,GAAH,OAAM06T,EAAN,aAAe16T,IAExB66T,GAAkB/wT,EAAS,GAAI9J,GAnD3B86T,GAAwBr8T,KAAK4pB,SAAU5pB,KAAK+7T,UAAU,GACtD/7T,KAAK87T,WAAaphR,KAAKqR,Q,mBAE3B,WACIuwQ,GAAmBt8T,KAAK4pB,SAAU5pB,KAAKkB,MAAO,Y,oBAElD,WACIo7T,GAAmBt8T,KAAK4pB,SAAU5pB,KAAKkB,MAAO,a,yBAElD,SAAY8I,GACR,IAAML,EAAQ4yT,GAAsBv8T,KAAK4pB,SAAU5pB,KAAKkB,OACxDlB,KAAKm0S,UAAYnqS,EAAWhK,KAAK07T,UACjCU,GAAkBp8T,KAAK4pB,SAAU,QAAhB,WAA6B5pB,KAAKm0S,UAAlC,MAAiDxqS,K,yBAEtE,WACI,OAAO3J,KAAKm0S,Y,6BAEhB,SAAgB7rR,GACZ,IAAMk0S,EAAYl0S,EAAMm0S,wBAA0B/hR,KAAKqR,MACjD2wQ,EArCO,IAqCO7uS,WAAWvF,EAAMo0S,YAAY//L,QAxCjB,IAyC5Br0G,EAAMgyM,eAAiBt6N,KAAKkB,OAC5Bqd,KAAKukC,IAAI05Q,EAAYx8T,KAAK87T,WAAY,IAAM97T,KAAK8hI,QAAU46L,GAAe18T,KAAK07T,WAC/E17T,KAAKi5S,W,oBAGb,WACQj5S,KAAK24S,YAET34S,KAAK24S,WAAY,EACjB34S,KAAK67T,YACLQ,GAAwBr8T,KAAK4pB,SAAU5pB,KAAK+7T,UAAU,M,qBAE1D,WAsBJ,IAAiC1wT,EAASlK,EAEhC4pD,EACAphD,EAxBE3J,KAAKwD,aAETxD,KAAKwD,YAAa,EAClBxD,KAAKi5S,SAkB6B93S,EAjBKnB,KAAKkB,OAoB1CyI,EAAQgzT,GADR5xQ,EADOmxQ,GADgB7wT,EAjBDrL,KAAK4pB,SAkBO,IACpBrH,MAAM,KACmBphB,KAChC,IACT4pD,EAAOxiB,OAAO5+B,EAAO,GAErByyT,GAAkB/wT,EAAS,GADV0/C,EAAO/a,KAAK,Y,GApBrC,SAASssR,GAAmBjxT,EAASlK,EAAMqqF,GAEvC4wO,GAAkB/wT,EAAS,YAAamgF,EAD1B+wO,GAAsBlxT,EAASlK,IAuBjD,SAASo7T,GAAsBlxT,EAAS9J,GACpC,IAAM06T,EAAOC,GAAkB7wT,EAAS,IACxC,OAAI4wT,EAAKhzT,QAAQ,KAAO,EAEb0zT,GADQV,EAAK15S,MAAM,KACYhhB,GAEnCo7T,GAAuB,CAACV,GAAO16T,GAE1C,SAASo7T,GAAuB5xQ,EAAQ6xQ,GACpC,IAAK,IAAI/0T,EAAI,EAAGA,EAAIkjD,EAAO5mD,OAAQ0D,IAC/B,GAAIkjD,EAAOljD,GAAGoB,QAAQ2zT,IAAgB,EAClC,OAAO/0T,EAGf,OAAQ,EAEZ,SAASw0T,GAAwBhxT,EAAS2D,EAAI6tT,GAC1CA,EAAWxxT,EAAQsgB,oBAAoB8vS,GAAoBzsT,GACvD3D,EAAQigB,iBAAiBmwS,GAAoBzsT,GAErD,SAASotT,GAAkB/wT,EAASlK,EAAMI,EAAOoI,GAC7C,IAAMykC,EAAOotR,GAAiBr6T,EAC9B,GAAa,MAATwI,EAAe,CACf,IAAM2vT,EAAWjuT,EAAQE,MAAM6iC,GAC/B,GAAIkrR,EAASn1T,OAAQ,CACjB,IAAM4mD,EAASuuQ,EAAS/2S,MAAM,KAC9BwoC,EAAOphD,GAASpI,EAChBA,EAAQwpD,EAAO/a,KAAK,MAG5B3kC,EAAQE,MAAM6iC,GAAQ7sC,EAE1B,SAAS26T,GAAkB7wT,EAASlK,GAChC,OAAOkK,EAAQE,MAAMiwT,GAAiBr6T,IAAS,GAYnD,IAEM,G,8BACF,WAAYkK,EAAS2sS,EAAW19E,EAAeohG,EAAW55L,EAAQuiF,EAAQy4G,EAAcC,GAAc,oBAClG/8T,KAAKqL,QAAUA,EACfrL,KAAKg4S,UAAYA,EACjBh4S,KAAKs6N,cAAgBA,EACrBt6N,KAAK07T,UAAYA,EACjB17T,KAAK8hI,OAASA,EACd9hI,KAAK88T,aAAeA,EACpB98T,KAAK+8T,eAAiBA,EACtB/8T,KAAKu4S,WAAa,GAClBv4S,KAAKw4S,YAAc,GACnBx4S,KAAKy4S,cAAgB,GACrBz4S,KAAK04S,UAAW,EAChB14S,KAAKg9T,gBAAkB,GACvBh9T,KAAKkjC,OAAS,EACdljC,KAAKqkN,OAASA,GAhBC,SAiBfrkN,KAAKojC,UAAYs4R,EAAY55L,EAC7B9hI,KAAKi9T,gB,sBAET,SAAQjuT,GACJhP,KAAKw4S,YAAY50S,KAAKoL,K,oBAE1B,SAAOA,GACHhP,KAAKu4S,WAAW30S,KAAKoL,K,uBAEzB,SAAUA,GACNhP,KAAKy4S,cAAc70S,KAAKoL,K,qBAE5B,WACIhP,KAAKslS,OACDtlS,KAAKkjC,QAAU,IAEnBljC,KAAKkjC,OAAS,EACdljC,KAAKk9T,QAAQh8S,UACblhB,KAAKm9T,iBACLn9T,KAAKo9T,gBACDp9T,KAAK+8T,gBACL/8T,KAAK+8T,eAAe77S,UAExBlhB,KAAKy4S,cAAcplS,QAAQ,SAAArE,GAAE,OAAIA,MACjChP,KAAKy4S,cAAgB,M,2BAEzB,WACIz4S,KAAKu4S,WAAWllS,QAAQ,SAAArE,GAAE,OAAIA,MAC9BhP,KAAKu4S,WAAa,K,4BAEtB,WACIv4S,KAAKw4S,YAAYnlS,QAAQ,SAAArE,GAAE,OAAIA,MAC/BhP,KAAKw4S,YAAc,K,oBAEvB,WACIx4S,KAAKslS,OACDtlS,KAAKkjC,QAAU,IAEnBljC,KAAKkjC,OAAS,EACdljC,KAAKk9T,QAAQjkB,SACbj5S,KAAKm9T,iBACDn9T,KAAK+8T,gBACL/8T,KAAK+8T,eAAe9jB,SAExBj5S,KAAKo9T,mB,yBAET,SAAY77T,GACRvB,KAAKk9T,QAAQpjB,YAAYv4S,K,yBAE7B,WACI,OAAOvB,KAAKk9T,QAAQjjB,gB,wBAExB,WACI,OAAOj6S,KAAKkjC,QAAU,I,kBAE1B,WACQljC,KAAKkjC,QAAU,IAEnBljC,KAAKkjC,OAAS,EAEdljC,KAAKk9T,QAAQvlR,QACT33C,KAAK8hI,QACL9hI,KAAKk9T,QAAQ3vO,W,kBAGrB,WACIvtF,KAAKslS,OACAtlS,KAAK64S,eACN74S,KAAKm9T,iBACLn9T,KAAKkjC,OAAS,EACVljC,KAAK+8T,gBACL/8T,KAAK+8T,eAAe5zT,SAG5BnJ,KAAKk9T,QAAQzvO,W,mBAEjB,WACIztF,KAAKslS,OACLtlS,KAAKk9T,QAAQ3vO,U,qBAEjB,WACIvtF,KAAKg9H,QACLh9H,KAAKujL,S,mBAET,WACIvjL,KAAKk9T,QAAQh8S,UACblhB,KAAKi9T,eACLj9T,KAAKk9T,QAAQvlR,U,0BAEjB,WAAY,WACR33C,KAAKk9T,QAAU,IAAI,GAA6Bl9T,KAAKqL,QAASrL,KAAKs6N,cAAet6N,KAAK07T,UAAW17T,KAAK8hI,OAAQ9hI,KAAKqkN,OA5GlG,WA4G6H,kBAAM,EAAK40F,a,6BAG9J,SAAgBC,GACZ,IAAMC,EAAuB,SAAbD,EAAuBl5S,KAAKw4S,YAAcx4S,KAAKu4S,WAC/DY,EAAQ9lS,QAAQ,SAAArE,GAAE,OAAIA,MACtBmqS,EAAQh1S,OAAS,I,2BAErB,WAAa,WACTnE,KAAKslS,OACL,IAAMxsR,EAAS,GACf,GAAI9Y,KAAK64S,aAAc,CACnB,IAAMwkB,EAAWr9T,KAAKkjC,QAAU,EAChC1mB,OAAOC,KAAKzc,KAAK88T,cAAczpT,QAAQ,SAAA+6B,GACvB,UAARA,IACAt1B,EAAOs1B,GAAQivR,EAAW,EAAKP,aAAa1uR,GAAQmxQ,GAAa,EAAKl0S,QAAS+iC,MAI3FpuC,KAAKg9T,gBAAkBlkT,M,GAWzB,G,YACF,WAAYzN,EAASyN,GAAM,kCACvB,aACKzN,QAAUA,EACf,EAAKiyT,gBAAkB,GACvB,EAAKC,eAAgB,EACrB,EAAKC,QAAU7gB,EAAoB7jS,GALZ,E,yDAO3B,WAAI,YACI9Y,KAAKu9T,eAAkBv9T,KAAKs9T,kBAEhCt9T,KAAKu9T,eAAgB,EACrB/gT,OAAOC,KAAKzc,KAAKw9T,SAASnqT,QAAQ,SAAA+6B,GAC9B,EAAKkvR,gBAAgBlvR,GAAQ,EAAK/iC,QAAQE,MAAM6iC,KAEpD,0B,kBAEJ,WAAI,WACKpuC,KAAKs9T,kBAEVt9T,KAAKslS,OACL9oR,OAAOC,KAAKzc,KAAKw9T,SACZnqT,QAAQ,SAAA+6B,GAAI,OAAI,EAAK/iC,QAAQE,MAAMolH,YAAYviF,EAAM,EAAKovR,QAAQpvR,MACvE,0B,qBAEJ,WAAO,WACEpuC,KAAKs9T,kBAEV9gT,OAAOC,KAAKzc,KAAKs9T,iBAAiBjqT,QAAQ,SAAA+6B,GACtC,IAAM7sC,EAAQ,EAAK+7T,gBAAgBlvR,GAC/B7sC,EACA,EAAK8J,QAAQE,MAAMolH,YAAYviF,EAAM7sC,GAGrC,EAAK8J,QAAQE,MAAM6rR,eAAehpP,KAG1CpuC,KAAKs9T,gBAAkB,KACvB,+B,CAtCwB,KA0C1BG,GAAwB,cAExB,G,8BACF,iCACIz9T,KAAK09T,OAAS,EACd19T,KAAK29T,MAAQhzR,SAASv/B,cAAc,S,oCAExC,SAAsBgjC,GAClB,OAAO,EAAsBA,K,4BAEjC,SAAe/iC,EAASipC,GACpB,OAAO,EAAejpC,EAASipC,K,6BAEnC,SAAgBynQ,EAAMC,GAClB,OAAO,EAAgBD,EAAMC,K,mBAEjC,SAAM3wS,EAASipC,EAAU5qB,GACrB,OAAO,EAAYre,EAASipC,EAAU5qB,K,0BAE1C,SAAare,EAAS+iC,EAAMs2E,GACxB,OAAOv5F,OAAOqoD,iBAAiBnoE,GAAS+iC,K,kCAE5C,SAAqB/iC,EAASlK,EAAM62S,GAChCA,EAAYA,EAAUvuS,IAAI,SAAAqxS,GAAE,OAAI6B,EAAoB7B,KACpD,IAAI8iB,EAAc,cAAH,OAAiBz8T,EAAjB,QACXm9H,EAAM,GACV05K,EAAU3kS,QAAQ,SAAAynS,GACdx8K,EA1BM,IA2BN,IAAMzzH,EAASgjB,WAAWitR,EAAE,QAC5B8iB,GAAe,GAAJ,OAAOt/L,GAAP,OAAsB,IAATzzH,EAAb,SACXyzH,GA7BM,IA8BN9hH,OAAOC,KAAKq+R,GAAIznS,QAAQ,SAAA+6B,GACpB,IAAM7sC,EAAQu5S,EAAG1sQ,GACjB,OAAQA,GACJ,IAAK,SACD,OACJ,IAAK,SAID,YAHI7sC,IACAq8T,GAAe,GAAJ,OAAOt/L,EAAP,sCAAwC/8H,EAAxC,SAGnB,QAEI,YADAq8T,GAAe,GAAJ,OAAOt/L,GAAP,OAAalwF,EAAb,aAAsB7sC,EAAtB,WAIvBq8T,GAAe,GAAJ,OAAOt/L,EAAP,SAEfs/L,GAAe,MACf,IAAMC,EAAQlzR,SAAS9yB,cAAc,SAErC,OADAgmT,EAAMrqN,YAAcoqN,EACbC,I,qBAEX,SAAQxyT,EAAS2sS,EAAWx6P,EAAU4vC,EAAOi3H,GAAqD,IAA7Cs0G,EAA6C,uDAA3B,GAI7DmF,EAA6BnF,EAAgBxjT,OAAO,SAAAmuK,GAAM,OAAIA,aAAkB,KAChF67H,EAAiB,GACnBF,GAA+BzhQ,EAAU4vC,IACzC0wO,EAA2BzqT,QAAQ,SAAAiwK,GAC/B,IAAIxqK,EAASwqK,EAAO05I,gBACpBxgT,OAAOC,KAAK3D,GAAQzF,QAAQ,SAAA+6B,GAAI,OAAI+wQ,EAAe/wQ,GAAQt1B,EAAOs1B,OAI1E,IAAMy3Q,EAAckY,GADpB/lB,EAAYkH,GAAmC7zS,EAAS2sS,EAAWmH,IAMnE,GAAgB,GAAZ3hQ,EACA,OAAO,IAAI,GAAkBnyC,EAASw6S,GAE1C,IAAMvrF,EAAgB,GAAH,OAAMmjG,IAAN,OAA8Bz9T,KAAK09T,UAChDG,EAAQ79T,KAAKg+T,qBAAqB3yT,EAASivN,EAAe09E,GAChErtQ,SAASv/B,cAAc,QAAQ0M,YAAY+lT,GAC3C,IAAMI,EAAgBpD,GAA2BxvT,EAAS2sS,GACpD10H,EAAS,IAAI,GAAmBj4K,EAAS2sS,EAAW19E,EAAe98K,EAAU4vC,EAAOi3H,EAAQwhG,EAAaoY,GAE/G,OADA36I,EAAOnqD,UAAU,kBAAM/kF,GAAcypR,KAC9Bv6I,M,GAGf,SAASy6I,GAA2B/lB,GAChC,IAAIkmB,EAAgB,GAWpB,OAVIlmB,IACYztS,MAAMyL,QAAQgiS,GAAaA,EAAY,CAACA,IAChD3kS,QAAQ,SAAAynS,GACRt+R,OAAOC,KAAKq+R,GAAIznS,QAAQ,SAAA+6B,GACR,UAARA,GAA4B,UAARA,IAExB8vR,EAAc9vR,GAAQ0sQ,EAAG1sQ,QAI9B8vR,EAEX,SAAS9pR,GAAcsvG,GACnBA,EAAKhjI,WAAWe,YAAYiiI,G,IAU1B,G,8BACF,WAAYr4I,EAAS2sS,EAAWhwR,EAAS+0S,GAAc,oBACnD/8T,KAAKqL,QAAUA,EACfrL,KAAKg4S,UAAYA,EACjBh4S,KAAKgoB,QAAUA,EACfhoB,KAAK+8T,eAAiBA,EACtB/8T,KAAKu4S,WAAa,GAClBv4S,KAAKw4S,YAAc,GACnBx4S,KAAKy4S,cAAgB,GACrBz4S,KAAKy7Q,cAAe,EACpBz7Q,KAAK24S,WAAY,EACjB34S,KAAK04S,UAAW,EAChB14S,KAAKwD,YAAa,EAClBxD,KAAK6nE,KAAO,EACZ7nE,KAAK44S,aAAe,KACpB54S,KAAKg9T,gBAAkB,GACvBh9T,KAAK07T,UAAY1zS,EAAO,SACxBhoB,KAAK8hI,OAAS95G,EAAO,OAAa,EAClChoB,KAAK6nE,KAAO7nE,KAAK07T,UAAY17T,KAAK8hI,Q,wBAEtC,WACS9hI,KAAK24S,YACN34S,KAAK24S,WAAY,EACjB34S,KAAKu4S,WAAWllS,QAAQ,SAAArE,GAAE,OAAIA,MAC9BhP,KAAKu4S,WAAa,M,kBAG1B,WACIv4S,KAAKuuT,eACLvuT,KAAKm+T,8B,0BAET,WAAY,WACR,IAAIn+T,KAAKy7Q,aAAT,CAEAz7Q,KAAKy7Q,cAAe,EACpB,IAAMu8B,EAAYh4S,KAAKg4S,UACvBh4S,KAAKo+T,UACDp+T,KAAKq+T,qBAAqBr+T,KAAKqL,QAAS2sS,EAAWh4S,KAAKgoB,SAC5DhoB,KAAKs+T,eAAiBtmB,EAAU7zS,OAAS6zS,EAAUA,EAAU7zS,OAAS,GAAK,GAC3EnE,KAAKo+T,UAAU9yS,iBAAiB,SAAU,kBAAM,EAAK0tR,iB,uCAEzD,WAEQh5S,KAAK8hI,OACL9hI,KAAKu+T,uBAGLv+T,KAAKo+T,UAAU7wO,U,kCAIvB,SAAqBliF,EAAS2sS,EAAWhwR,GAGrC,OAAO3c,EAAO,QAAY2sS,EAAWhwR,K,qBAEzC,SAAQhZ,GACJhP,KAAKw4S,YAAY50S,KAAKoL,K,oBAE1B,SAAOA,GACHhP,KAAKu4S,WAAW30S,KAAKoL,K,uBAEzB,SAAUA,GACNhP,KAAKy4S,cAAc70S,KAAKoL,K,kBAE5B,WACIhP,KAAKuuT,eACAvuT,KAAK64S,eACN74S,KAAKw4S,YAAYnlS,QAAQ,SAAArE,GAAE,OAAIA,MAC/BhP,KAAKw4S,YAAc,GACnBx4S,KAAK04S,UAAW,EACZ14S,KAAK+8T,gBACL/8T,KAAK+8T,eAAe5zT,SAG5BnJ,KAAKo+T,UAAU76I,S,mBAEnB,WACIvjL,KAAKslS,OACLtlS,KAAKo+T,UAAU7wO,U,oBAEnB,WACIvtF,KAAKslS,OACDtlS,KAAK+8T,gBACL/8T,KAAK+8T,eAAe9jB,SAExBj5S,KAAKg5S,YACLh5S,KAAKo+T,UAAUnlB,W,mBAEnB,WACIj5S,KAAKu+T,uBACLv+T,KAAKwD,YAAa,EAClBxD,KAAK24S,WAAY,EACjB34S,KAAK04S,UAAW,I,kCAEpB,WACQ14S,KAAKo+T,WACLp+T,KAAKo+T,UAAUxyD,W,qBAGvB,WACI5rQ,KAAKg9H,QACLh9H,KAAKujL,S,wBAET,WACI,OAAOvjL,KAAK04S,W,qBAEhB,WACS14S,KAAKwD,aACNxD,KAAKwD,YAAa,EAClBxD,KAAKu+T,uBACLv+T,KAAKg5S,YACDh5S,KAAK+8T,gBACL/8T,KAAK+8T,eAAe77S,UAExBlhB,KAAKy4S,cAAcplS,QAAQ,SAAArE,GAAE,OAAIA,MACjChP,KAAKy4S,cAAgB,M,yBAG7B,SAAYlvK,QACe9kI,IAAnBzE,KAAKo+T,WACLp+T,KAAKslS,OAETtlS,KAAKo+T,UAAU5c,YAAcj4K,EAAIvpI,KAAK6nE,O,yBAE1C,WACI,OAAO7nE,KAAKo+T,UAAU5c,YAAcxhT,KAAK6nE,O,qBAE7C,WACI,OAAO7nE,KAAK8hI,OAAS9hI,KAAK07T,Y,2BAE9B,WAAa,WACH5iT,EAAS,GACX9Y,KAAK64S,cACLr8R,OAAOC,KAAKzc,KAAKs+T,gBAAgBjrT,QAAQ,SAAA+6B,GACzB,UAARA,IACAt1B,EAAOs1B,GACH,EAAKuqQ,UAAY,EAAK2lB,eAAelwR,GAAQmxQ,GAAa,EAAKl0S,QAAS+iC,MAIxFpuC,KAAKg9T,gBAAkBlkT,I,6BAG3B,SAAgBogS,GACZ,IAAMC,EAAuB,SAAbD,EAAuBl5S,KAAKw4S,YAAcx4S,KAAKu4S,WAC/DY,EAAQ9lS,QAAQ,SAAArE,GAAE,OAAIA,MACtBmqS,EAAQh1S,OAAS,M,GAInB,G,8BACF,iCACInE,KAAKw+T,cAAgB,8BAA8Bx7S,KAAKy7S,KAAsBxsS,YAC9EjyB,KAAK0+T,oBAAsB,IAAI,I,oCAEnC,SAAsBtwR,GAClB,OAAO,EAAsBA,K,4BAEjC,SAAe/iC,EAASipC,GACpB,OAAO,EAAejpC,EAASipC,K,6BAEnC,SAAgBynQ,EAAMC,GAClB,OAAO,EAAgBD,EAAMC,K,mBAEjC,SAAM3wS,EAASipC,EAAU5qB,GACrB,OAAO,EAAYre,EAASipC,EAAU5qB,K,0BAE1C,SAAare,EAAS+iC,EAAMs2E,GACxB,OAAOv5F,OAAOqoD,iBAAiBnoE,GAAS+iC,K,0CAE5C,SAA6BuwR,GACzB3+T,KAAKw+T,cAAgBG,I,qBAEzB,SAAQtzT,EAAS2sS,EAAWx6P,EAAU4vC,EAAOi3H,GAAqD,IAA7Cs0G,EAA6C,uDAA3B,GAAIiG,EAAuB,uCACxFC,GAAgBD,IAA4B5+T,KAAKw+T,cACvD,GAAIK,EACA,OAAO7+T,KAAK0+T,oBAAoBvvF,QAAQ9jO,EAAS2sS,EAAWx6P,EAAU4vC,EAAOi3H,EAAQs0G,GAEzF,IAAM3/M,EAAgB,GAAT5rB,EAAa,OAAS,WAC7B0xO,EAAgB,CAAEthR,WAAU4vC,QAAO4rB,QAGrCqrG,IACAy6G,EAAa,OAAaz6G,GAE9B,IAAM86F,EAAiB,GACjB4f,EAA8BpG,EAAgBxjT,OAAO,SAAAmuK,GAAM,OAAIA,aAAkB,KACnF27H,GAA+BzhQ,EAAU4vC,IACzC2xO,EAA4B1rT,QAAQ,SAAAiwK,GAChC,IAAIxqK,EAASwqK,EAAO05I,gBACpBxgT,OAAOC,KAAK3D,GAAQzF,QAAQ,SAAA+6B,GAAI,OAAI+wQ,EAAe/wQ,GAAQt1B,EAAOs1B,OAK1E,IAAM6vR,EAAgBpD,GAA2BxvT,EADjD2sS,EAAYkH,GAAmC7zS,EAD/C2sS,EAAYA,EAAUvuS,IAAI,SAAAqP,GAAM,OAAIklS,EAAWllS,GAAQ,KACYqmS,IAEnE,OAAO,IAAI,GAAoB9zS,EAAS2sS,EAAW8mB,EAAeb,O,GAM1E,SAASQ,KACL,MA/gJ0B,oBAAXtzS,aAAqD,IAApBA,OAAOwf,UA+gJhCi0E,QAAQlsF,UAAR,SAAiC,G,kLC5gJtDssS,E,YACF,WAAYC,EAAcr2I,GAAG,kCACzB,cACKs2I,iBAAmB,EAExB,EAAKrwM,UAAYowM,EAAavnM,eAAekxD,EAAI9lJ,KADhC,CAAE9c,GAAI,IAAKxf,cAAe,IAAkB24T,KAAMrmT,OAAQ,GAAIhJ,KAAM,CAAE6zB,UAAW,MAHzE,E,0DAM7B,SAAMA,GACF,IAAM3d,EAAKhmB,KAAKk/T,iBAAiBjtS,WACjCjyB,KAAKk/T,mBACL,IAAMpqO,EAAQvqF,MAAMyL,QAAQ2tB,GAAa,YAASA,GAAaA,EAE/D,OADAy7R,GAAsBp/T,KAAK6uH,UAAW,KAAM7oG,EAAI,WAAY,CAAC8uE,IACtD,IAAI,GAAwB9uE,EAAIhmB,KAAK6uH,e,CAZd,K,OAetCmwM,EAAwBz+T,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKw+T,GAAyB,KAAgB,KAA0B,KAAgB,QACjLA,EAAwBp6T,WAAQ,KAA0B,CAAEC,MAAOm6T,EAAyBl6T,QAASk6T,EAAwBz+T,Y,KAWvH,G,YACF,WAAYmjC,EAAKmrF,GAAS,kCACtB,cACKnrF,IAAMA,EACX,EAAKmrF,UAAYA,EAHK,E,2DAK1B,SAAOxjH,EAAS2c,GACZ,OAAO,IAAI,GAAwBhoB,KAAK0jC,IAAKr4B,EAAS2c,GAAW,GAAIhoB,KAAK6uH,e,CAP5C,KAUhC,G,8BACF,WAAY7oG,EAAI3a,EAAS2c,EAAS6mG,GAAS,oBACvC7uH,KAAKgmB,GAAKA,EACVhmB,KAAKqL,QAAUA,EACfrL,KAAK6uH,UAAYA,EACjB7uH,KAAK44S,aAAe,KACpB54S,KAAK04S,UAAW,EAChB14S,KAAKojC,UAAY,EACjBpjC,KAAKq/T,SAAS,SAAUr3S,I,sBAE5B,SAAQ8tB,EAAW7iB,GACf,OAAOjzB,KAAK6uH,UAAU+L,OAAO56H,KAAKqL,QAA3B,YAAyCrL,KAAKgmB,GAA9C,YAAoD8vB,GAAa7iB,K,sBAE5E,SAAS2oR,GAAgB,2BAAJ/7S,EAAI,iCAAJA,EAAI,kBACrB,OAAOu/T,GAAsBp/T,KAAK6uH,UAAW7uH,KAAKqL,QAASrL,KAAKgmB,GAAI41R,EAAS/7S,K,oBAEjF,SAAOmP,GACHhP,KAAKs/T,QAAQ,OAAQtwT,K,qBAEzB,SAAQA,GACJhP,KAAKs/T,QAAQ,QAAStwT,K,uBAE1B,SAAUA,GACNhP,KAAKs/T,QAAQ,UAAWtwT,K,kBAE5B,WACIhP,KAAKq/T,SAAS,U,wBAElB,WACI,OAAOr/T,KAAK04S,W,kBAEhB,WACI14S,KAAKq/T,SAAS,QACdr/T,KAAK04S,UAAW,I,mBAEpB,WACI14S,KAAKq/T,SAAS,W,qBAElB,WACIr/T,KAAKq/T,SAAS,a,oBAElB,WACIr/T,KAAKq/T,SAAS,Y,qBAElB,WACIr/T,KAAKq/T,SAAS,a,mBAElB,WACIr/T,KAAKq/T,SAAS,W,yBAElB,SAAY91L,GACRvpI,KAAKq/T,SAAS,cAAe91L,K,yBAEjC,WACI,IAAI5+H,EAAIC,EACR,OAAuH,QAA/GA,EAAwD,QAAlDD,EAAK3K,KAAK6uH,UAAUgjM,OAAOvY,SAASt5S,KAAKgmB,WAAwB,IAAPrb,OAAgB,EAASA,EAAGsvS,qBAAkC,IAAPrvS,EAAgBA,EAAK,M,GAG5J,SAASw0T,GAAsB7rM,EAAUloH,EAAS2a,EAAI41R,EAAS/7S,GAC3D,OAAO0zH,EAAS5C,YAAYtlH,EAArB,YAAmC2a,EAAnC,YAAyC41R,GAAW/7S,GAG/D,IAAM0/T,GAAmB,IACnBC,GAA0B,a,kBAC1BC,E,8BACF,WAAYvxH,EAAU2jH,EAAQ/nS,GAAK,oBAC/B9pB,KAAKkuM,SAAWA,EAChBluM,KAAK6xT,OAASA,EACd7xT,KAAK8pB,MAAQA,EACb9pB,KAAK0/T,WAAa,EAClB1/T,KAAK2/T,aAAe,EACpB3/T,KAAK4/T,0BAA4B,GACjC5/T,KAAK6/T,eAAiB,IAAIpyT,IAC1BzN,KAAK8/T,cAAgB,EACrB9/T,KAAKk0B,QAAU3vB,QAAQC,QAAQ,GAC/BqtT,EAAOwB,kBAAoB,SAAChoT,EAAS6iM,GAK7BA,GAAYA,EAASxtL,WAAWrV,IAChC6iM,EAASzsL,YAAYpW,EAAQqV,WAAYrV,K,6BAIrD,SAAeghH,EAAa3rH,GAAI,WAItBwtM,EAAWluM,KAAKkuM,SAASx2E,eAAerL,EAAa3rH,GAC3D,KAAK2rH,GAAgB3rH,GAASA,EAAKoP,MAASpP,EAAKoP,KAAL,WAAwB,CAChE,IAAIyjH,EAAWvzH,KAAK6/T,eAAe3tT,IAAIg8L,GAMvC,OALK36E,IACDA,EAAW,IAAI,GAPI,GAOsC26E,EAAUluM,KAAK6xT,QAExE7xT,KAAK6/T,eAAexrT,IAAI65L,EAAU36E,IAE/BA,EAEX,IAAMgnM,EAAc75T,EAAKslB,GACnBgpS,EAActuT,EAAKslB,GAAK,IAAMhmB,KAAK0/T,WACzC1/T,KAAK0/T,aACL1/T,KAAK6xT,OAAO92F,SAASi0F,EAAa3iM,GAClC,IAAM,EAAkB,SAAC9tD,GACjBh0D,MAAMyL,QAAQuoD,GACdA,EAAQlrD,QAAQ,GAGhB,EAAKw+S,OAAO6I,gBAAgBH,EAAavL,EAAa3iM,EAAa9tD,EAAQp9D,KAAMo9D,IAKzF,OAF0B79D,EAAKoP,KAAL,UACRuD,QAAQ,GACnB,IAAI,GAAkBrT,KAAMgvT,EAAa9gH,EAAUluM,KAAK6xT,U,mBAEnE,WACI7xT,KAAK8/T,gBACD9/T,KAAKkuM,SAAS6xH,OACd//T,KAAKkuM,SAAS6xH,U,gCAGtB,WAAkB,WAEd//T,KAAKk0B,QAAQ7V,KAAK,WACd,EAAKshT,mB,sCAIb,SAAyBzoT,EAAOlI,EAAIc,GAAI,WAChCoH,GAAS,GAAKA,EAAQlX,KAAK2/T,aAC3B3/T,KAAK8pB,MAAMwiB,IAAI,kBAAMt9B,EAAGc,MAGiB,GAAzC9P,KAAK4/T,0BAA0Bz7T,QAC/BI,QAAQC,QAAQ,MAAM6Z,KAAK,WACvB,EAAKyL,MAAMwiB,IAAI,WACX,EAAKszR,0BAA0BvsT,QAAQ,SAAAkhD,GACnC,kBAAmBA,EAAnB,IACAvlD,EADA,cAGJ,EAAK4wT,0BAA4B,OAI7C5/T,KAAK4/T,0BAA0Bh8T,KAAK,CAACoL,EAAIc,O,iBAE7C,WAAG,WACC9P,KAAK8/T,gBAGqB,GAAtB9/T,KAAK8/T,eACL9/T,KAAK8pB,MAAMuB,kBAAkB,WACzB,EAAK20S,qBACL,EAAKnO,OAAO1lL,MAAM,EAAKwzL,gBAG3B3/T,KAAKkuM,SAAS9kM,KACdpJ,KAAKkuM,SAAS9kM,Q,+BAGtB,WACI,OAAOpJ,KAAK6xT,OAAO+I,wB,UAG3B6E,EAAyBl/T,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAKi/T,GAA0B,KAAgB,KAA0B,KAAgB,IAA0B,KAAgB,OAC9NA,EAAyB76T,WAAQ,KAA0B,CAAEC,MAAO46T,EAA0B36T,QAAS26T,EAAyBl/T,Y,KAS1H,G,8BACF,WAAYyuT,EAAa9gH,EAAU2jH,GAAM,oBACrC7xT,KAAKgvT,YAAcA,EACnBhvT,KAAKkuM,SAAWA,EAChBluM,KAAK6xT,OAASA,EACd7xT,KAAKigU,YAAcjgU,KAAKkuM,SAAS+xH,YAAc,SAACloR,GAAD,OAAOm2J,EAAS+xH,YAAYloR,IAAK,M,iBAEpF,WACI,OAAO/3C,KAAKkuM,SAASp+L,O,qBAEzB,WACI9P,KAAK6xT,OAAO3wS,QAAQlhB,KAAKgvT,YAAahvT,KAAKkuM,UAC3CluM,KAAKkuM,SAAShtL,Y,2BAElB,SAAc/f,EAAM4+Q,GAChB,OAAO//Q,KAAKkuM,SAASr2L,cAAc1W,EAAM4+Q,K,2BAE7C,SAAcx+Q,GACV,OAAOvB,KAAKkuM,SAASztL,cAAclf,K,wBAEvC,SAAWA,GACP,OAAOvB,KAAKkuM,SAASz5E,WAAWlzH,K,yBAEpC,SAAYqlC,EAAQs5R,GAChBlgU,KAAKkuM,SAASp2L,YAAY8uB,EAAQs5R,GAClClgU,KAAK6xT,OAAOsO,SAASngU,KAAKgvT,YAAakR,EAAUt5R,GAAQ,K,0BAE7D,SAAaA,EAAQs5R,EAAUE,GAAuB,IAAbC,IAAa,yDAClDrgU,KAAKkuM,SAASvtL,aAAaimB,EAAQs5R,EAAUE,GAE7CpgU,KAAK6xT,OAAOsO,SAASngU,KAAKgvT,YAAakR,EAAUt5R,EAAQy5R,K,yBAE7D,SAAYz5R,EAAQ05R,EAAUzM,GAC1B7zT,KAAK6xT,OAAO0O,SAASvgU,KAAKgvT,YAAasR,EAAUtgU,KAAKkuM,SAAU2lH,K,+BAEpE,SAAkB2M,EAAgBC,GAC9B,OAAOzgU,KAAKkuM,SAASwyH,kBAAkBF,EAAgBC,K,wBAE3D,SAAW/8K,GACP,OAAO1jJ,KAAKkuM,SAASxtL,WAAWgjI,K,yBAEpC,SAAYA,GACR,OAAO1jJ,KAAKkuM,SAASm3F,YAAY3hJ,K,0BAErC,SAAajxG,EAAItxC,EAAMI,EAAOw+Q,GAC1B//Q,KAAKkuM,SAASr/L,aAAa4jC,EAAItxC,EAAMI,EAAOw+Q,K,6BAEhD,SAAgBttO,EAAItxC,EAAM4+Q,GACtB//Q,KAAKkuM,SAASzlK,gBAAgBgK,EAAItxC,EAAM4+Q,K,sBAE5C,SAASttO,EAAItxC,GACTnB,KAAKkuM,SAASz9E,SAASh+E,EAAItxC,K,yBAE/B,SAAYsxC,EAAItxC,GACZnB,KAAKkuM,SAASr6E,YAAYphF,EAAItxC,K,sBAElC,SAASsxC,EAAIlnC,EAAOhK,EAAOo/T,GACvB3gU,KAAKkuM,SAASv6E,SAASlhF,EAAIlnC,EAAOhK,EAAOo/T,K,yBAE7C,SAAYluR,EAAIlnC,EAAOo1T,GACnB3gU,KAAKkuM,SAASz6E,YAAYhhF,EAAIlnC,EAAOo1T,K,yBAEzC,SAAYluR,EAAItxC,EAAMI,GACdJ,EAAK4uC,OAAO,IAAMwvR,IAAoBp+T,GAAQq+T,GAC9Cx/T,KAAK4gU,kBAAkBnuR,IAAMlxC,GAG7BvB,KAAKkuM,SAASv9E,YAAYl+E,EAAItxC,EAAMI,K,sBAG5C,SAASmiJ,EAAMniJ,GACXvB,KAAKkuM,SAAS55D,SAASoP,EAAMniJ,K,oBAEjC,SAAOirB,EAAQspB,EAAW7iB,GACtB,OAAOjzB,KAAKkuM,SAAStzE,OAAOpuG,EAAQspB,EAAW7iB,K,+BAEnD,SAAkB5nB,EAAS9J,GACvBvB,KAAK6xT,OAAO+O,kBAAkBv1T,EAAS9J,O,GAGzC,G,YACF,WAAYuD,EAASkqT,EAAa9gH,EAAU2jH,GAAM,kCAC9C,aAAM7C,EAAa9gH,EAAU2jH,KACxB/sT,QAAUA,EACf,EAAKkqT,YAAcA,EAH2B,E,gEAKlD,SAAYv8Q,EAAItxC,EAAMI,GACdJ,EAAK4uC,OAAO,IAAMwvR,GACI,KAAlBp+T,EAAK4uC,OAAO,IAAa5uC,GAAQq+T,GAEjCx/T,KAAK4gU,kBAAkBnuR,EADvBlxC,OAAkBkD,IAAVlD,KAA+BA,GAIvCvB,KAAK6xT,OAAOlnE,QAAQ3qP,KAAKgvT,YAAav8Q,EAAItxC,EAAKo2C,OAAO,GAAIh2C,GAI9DvB,KAAKkuM,SAASv9E,YAAYl+E,EAAItxC,EAAMI,K,oBAG5C,SAAOirB,EAAQspB,EAAW7iB,GAAQ,IA8BJwoR,EACxBolB,EA/B4B,OAC9B,GAAI/qR,EAAU/F,OAAO,IAAMwvR,GAAkB,CACzC,IAAMl0T,EAgBlB,SAAkCmhB,GAC9B,OAAQA,GACJ,IAAK,OACD,OAAOme,SAAS7H,KACpB,IAAK,WACD,OAAO6H,SACX,IAAK,SACD,OAAOxf,OACX,QACI,OAAOqB,GAzBSs0S,CAAyBt0S,GACrCrrB,EAAO20C,EAAUyB,OAAO,GACxBw4Q,EAAQ,GAGZ,GAAI5uT,EAAK4uC,OAAO,IAAMwvR,GAAkB,QAwB1CsB,GADwBplB,EAtBuBt6S,GAuBxB8H,QAAQ,KAG9B,CAFSwyS,EAAYzwP,UAAU,EAAG61Q,GAC3BplB,EAAYlkQ,OAAOspR,EAAW,KA1BI,mBACnC1/T,EADmC,KAC7B4uT,EAD6B,KAGxC,OAAO/vT,KAAK6xT,OAAOj3L,OAAO56H,KAAKgvT,YAAa3jT,EAASlK,EAAM4uT,EAAO,SAAAznS,GAE9D,EAAKxjB,QAAQi8T,yBADGz4S,EAAK,QAAc,EACY2K,EAAU3K,KAGjE,OAAOtoB,KAAKkuM,SAAStzE,OAAOpuG,EAAQspB,EAAW7iB,O,CAnCvB,I,kBAgE1B+tS,E,YACF,WAAYp4I,EAAK2xH,EAAQC,GAAU,sCACzB5xH,EAAI9lJ,KAAMy3Q,EAAQC,I,wCAFQ,I,OAKxCwmB,EAA0BzgU,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAKwgU,GAA2B,KAAgB,MAAW,KAAgB,GAAyB,KAAgB,MACjNA,EAA0Bp8T,WAAQ,KAA0B,CAAEC,MAAOm8T,EAA2Bl8T,QAASk8T,EAA0BzgU,Y,KAwB7H0gU,GAAwB,IAAI,IAAe,uBAC3CC,GAA6B,CAC/B,CAAE3+T,QAAS,IAAkBoW,SAAU,IACvC,CAAEpW,QAAS,GAA2B6mB,WAZ1C,WACI,OAAO,IAAI,KAYX,CAAE7mB,QAAS,GAAkBoW,SAAU,IAA6B,CAChEpW,QAAS,IACT6mB,WAZR,SAAoCmqG,EAAUs+L,EAAQ1nM,GAClD,OAAO,IAAI,GAAyBoJ,EAAUs+L,EAAQ1nM,IAYlDhhG,KAAM,CAAC,IAAsB,GAAkB,OAOjDg4S,GAA+B,CACjC,CAAE5+T,QAAS,EAAiB6mB,WA3BhC,WACI,MDmpIwC,mBAA1Bq1S,KCnpIoB,IAAI,GAAyB,IAAI,KA2BnE,CAAEl8T,QAAS0+T,GAAuBroT,SAAU,sBAFd,OAEwCsoT,I,IAMhC,CACtC,CAAE3+T,QAAS,EAAiBoW,SAAU,GACtC,CAAEpW,QAAS0+T,GAAuBroT,SAAU,mBAFT,OAEgCsoT,I,eAejEE,E,sDAENA,EAAwB7gU,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAK4gU,IAC9FA,EAAwBloT,UAAO,KAAwB,CAAExY,KAAM0gU,IAC/DA,EAAwBjoT,UAAO,KAAwB,CAAEgZ,UAAWgvS,GAA8B/nT,QAAS,CAAC,O,6BCvbnG,SAAUiJ,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACTD,EAAG,CAAC,aAAc,gBAClBiC,EAAG,CAAC,YAAa,eACjB/M,EAAG,CAAC,UAAW,aACfoN,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAO03I,EAAgBj6I,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAuBxD,SAAS0kT,EAA4B37S,GAEjC,GADAA,EAAS8pB,SAAS9pB,EAAQ,IACtBu1B,MAAMv1B,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI47S,EAAY57S,EAAS,GAEzB,OACW27S,EADO,IAAdC,EADa57S,EAAS,GAIS47S,GAChC,GAAI57S,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAO27S,EAA4B37S,GAInC,OAAO27S,EADP37S,GAAkB,KAKjBrD,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,6FAAuFL,MAC3F,KAEJM,YACI,+DAA+DN,MAC3D,KAER0U,kBAAkB,EAClB1T,SACI,4EAAmEhB,MAC/D,KAERiB,cAAe,uCAA8BjB,MAAM,KACnDkB,YAAa,gCAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVC,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,sBACTC,SAAU,WAEN,OAAQvkB,KAAK8xC,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBrtB,aAAc,CACVC,OAlGR,SAA2ByqB,GAEvB,OAAIkyR,EADSlyR,EAAOoI,OAAO,EAAGpI,EAAOlmC,QAAQ,OAElC,KAAOkmC,EAEX,MAAQA,GA8FXxqB,KA5FR,SAAyBwqB,GAErB,OAAIkyR,EADSlyR,EAAOoI,OAAO,EAAGpI,EAAOlmC,QAAQ,OAElC,QAAUkmC,EAEd,SAAWA,GAwFdvqB,EAAG,kBACHC,GAAI,cACJ/B,EAAGi6I,EACHj4I,GAAI,cACJC,EAAGg4I,EACH/3I,GAAI,aACJhN,EAAG+kJ,EACH93I,GAAI,UACJG,EAAG23I,EACH13I,GAAI,cACJC,EAAGy3I,EACHx3I,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtIyB/gB,CAAQ,EAAQ,U,kFCN3C,SAAS,EAAK0nB,EAAQshI,EAAU4lI,GAiB7C,OAfE,EADqB,oBAAZ1qJ,SAA2BA,QAAQ92H,IACrC82H,QAAQ92H,IAER,SAAcsa,EAAQshI,EAAU4lI,GACrC,IAAI9zR,ECLK,SAAwBstP,EAAQp/F,GAC7C,MAAQtxI,OAAOkW,UAAUgb,eAAexY,KAAKg4N,EAAQp/F,IAEpC,QADfo/F,EAAS,OAAA/3G,EAAA,GAAe+3G,MAI1B,OAAOA,EDDQ,CAAc1gO,EAAQshI,GACjC,GAAKluJ,EAAL,CACA,IAAI69B,EAAOjhB,OAAOutH,yBAAyBnqI,EAAMkuJ,GAEjD,OAAIrwH,EAAKvrB,IACAurB,EAAKvrB,IAAIgjB,KAAKw+P,GAGhBj2P,EAAKl8B,SAIJirB,EAAQshI,EAAU4lI,GAAYlnQ,K,qBElB5C,IAAI/iB,EAAM,CACT,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,WAAY,OACZ,cAAe,OACf,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,WAAY,OACZ,cAAe,OACf,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,YAAa,OACb,eAAgB,OAChB,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,QAAS,OACT,aAAc,OACd,gBAAiB,OACjB,WAAY,OACZ,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,YAAa,OACb,eAAgB,OAChB,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,QAIf,SAAS83T,EAAe3lS,GACvB,IAAI5V,EAAKw7S,EAAsB5lS,GAC/B,OAAO6lS,EAAoBz7S,GAE5B,SAASw7S,EAAsB5lS,GAC9B,IAAI6lS,EAAoBtzR,EAAE1kC,EAAKmyB,GAAM,CACpC,IAAI3H,EAAI,IAAII,MAAM,uBAAyBuH,EAAM,KAEjD,MADA3H,EAAEi4C,KAAO,mBACHj4C,EAEP,OAAOxqB,EAAImyB,GAEZ2lS,EAAe9kT,KAAO,WACrB,OAAOD,OAAOC,KAAKhT,IAEpB83T,EAAe/8T,QAAUg9T,EACzBpkS,EAAOC,QAAUkkS,EACjBA,EAAev7S,GAAK,Q,oaCnSpB,aAMC,aACChmB,KAAK0hU,iBAAmB,IAAIhzT,EAAA,EAAgB,M,OAG7C,YAAAizT,UAAA,SAAU3nS,EAAiBt5B,GAK1BV,KAAK0hU,iBAAiB79T,KAJK,CAC1Bm2B,QAASA,EACTt5B,KAAMA,K,yBAVIkhU,EAAiB,Q,sCAAjBA,IAAiB,WAFjB,S,EADb,G,kFCKA,SAASC,IAIL,MAAO,CAAEC,gBAHT,WAA6C,IAApBC,EAAoB,uDAAF,GACvC,OAAOvlT,OAAOuqB,OAPX,CACHm4G,IAAK,GACL8iL,SAAU,IAKoCD,KAKtD,SAASE,IAqBL,MAAO,CAAEC,aApBT,SAAsBC,GAClB,IAAMC,EAAY,SAAC/5T,GAAD,OAAWA,EAAM62I,KAC7BmjL,EAAiB,SAACh6T,GAAD,OAAWA,EAAM25T,UAClCM,EAAY,YAAeF,EAAWC,EAAgB,SAACnjL,EAAK8iL,GAAN,OAAmB9iL,EAAIz1I,IAAI,SAACuc,GAAD,OAAQg8S,EAASh8S,OAClGu8S,EAAc,YAAeH,EAAW,SAACljL,GAAD,OAASA,EAAI/6I,SAC3D,OAAKg+T,EAQE,CACHC,UAAW,YAAeD,EAAaC,GACvCC,eAAgB,YAAeF,EAAaE,GAC5CC,UAAW,YAAeH,EAAaG,GACvCC,YAAa,YAAeJ,EAAaI,IAXlC,CACHH,YACAC,iBACAC,YACAC,iBAahB,IAAIC,EACH,SAAUA,G,OACPA,EAAUA,EAAS,aAAmB,GAAK,eAC3CA,EAAUA,EAAS,KAAW,GAAK,OACnCA,EAAUA,EAAS,KAAW,GAAK,OAH5BA,EAAV,CADY,IAMb,SAASC,EAAoBC,GACzB,OAAO,SAAmB9qR,EAAKvvC,GAC3B,IAAMs6T,EAAoB,CACtBzjL,IAAK,YAAI72I,EAAM62I,KACf8iL,SAAUxlT,OAAOuqB,OAAO,GAAI1+B,EAAM25T,WAEhCY,EAAYF,EAAQ9qR,EAAK+qR,GAC/B,OAAIC,IAAcJ,EAAUK,KACjBrmT,OAAOuqB,OAAO,GAAI1+B,EAAOs6T,GAEhCC,IAAcJ,EAAUM,aACjBtmT,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI1+B,GAAQ,CAAE25T,SAAUW,EAAkBX,WAE1E35T,GAIf,SAAS06T,EAAcC,EAAQlpI,GAC3B,IAAMn9K,EAAMm9K,EAASkpI,GAIrB,OAHI,qBAAuBv+T,IAARkY,GACfouB,QAAQ24B,KAAK,uFAAwF,kEAAmE,8BAA+Bs/P,EAAQ,iCAAkClpI,EAAS7nK,YAEvPtV,EAGX,SAASsmT,EAA2BnpI,GAChC,SAASopI,EAAcF,EAAQ36T,GAC3B,IAAMsU,EAAMomT,EAAcC,EAAQlpI,GAClC,OAAIn9K,KAAOtU,EAAM25T,SACNQ,EAAUrD,MAErB92T,EAAM62I,IAAIt7I,KAAK+Y,GACftU,EAAM25T,SAASrlT,GAAOqmT,EACfR,EAAUK,MAErB,SAASM,EAAenB,EAAU35T,GAC9B,IADmC,EAC/Bu6T,GAAY,EADmB,cAEdZ,GAFc,IAEnC,2BACIY,EAAYM,EADe,QACO76T,KAAWm6T,EAAUrD,MAAQyD,EAHhC,8BAKnC,OAAOA,EAAYJ,EAAUK,KAAOL,EAAUrD,KAqBlD,SAASiE,EAAkBC,EAAiBh7T,GACxC,IAGMu6T,GAHOS,aAA2B94T,MAClC84T,EACAh7T,EAAM62I,IAAI/pI,OAAO,SAACwH,GAAD,OAAS0mT,EAAgBh7T,EAAM25T,SAASrlT,OAE1DxH,OAAO,SAACwH,GAAD,OAASA,KAAOtU,EAAM25T,WAC7Bv4T,IAAI,SAACkT,GAAD,cAAgBtU,EAAM25T,SAASrlT,KAAMxY,OAAS,EAIvD,OAHIy+T,IACAv6T,EAAM62I,IAAM72I,EAAM62I,IAAI/pI,OAAO,SAAC6Q,GAAD,OAAQA,KAAM3d,EAAM25T,YAE9CY,EAAYJ,EAAUK,KAAOL,EAAUrD,KAoBlD,SAASmE,EAAiB9oP,EAAQnyE,GAC9B,OAAOk7T,EAAkB,CAAC/oP,GAASnyE,GAEvC,SAASk7T,EAAkBC,EAASn7T,GAChC,IAAMo7T,EAAU,GAGhB,OAFAD,EAAUA,EAAQruT,OAAO,SAACqlE,GAAD,OAAYA,EAAOx0D,MAAM3d,EAAM25T,YACtB79T,OAAS,EAElBq/T,EAAQruT,OAAO,SAACqlE,GAAD,OApB5C,SAAoB/9D,EAAM+9D,EAAQnyE,GAC9B,IACM0xI,EAAUv9H,OAAOuqB,OAAO,GADb1+B,EAAM25T,SAASxnP,EAAOx0D,IACKw0D,EAAOv1E,SAC7Cy+T,EAASX,EAAchpL,EAAS+/C,GAChC6pI,EAAYD,IAAWlpP,EAAOx0D,GAMpC,OALI29S,IACAlnT,EAAK+9D,EAAOx0D,IAAM09S,SACXr7T,EAAM25T,SAASxnP,EAAOx0D,KAEjC3d,EAAM25T,SAAS0B,GAAU3pL,EAClB4pL,EAU6CC,CAAWH,EAASjpP,EAAQnyE,KAAQlE,OAChF,GAEAkE,EAAM62I,IAAM72I,EAAM62I,IAAIz1I,IAAI,SAACuc,GAAD,OAAQy9S,EAAQz9S,IAAOA,IAC1Cw8S,EAAUK,MAGVL,EAAUM,aAGlBN,EAAUrD,KA2BrB,SAAS0E,EAAkB7B,EAAU35T,GACjC,IADsC,EAChCi4B,EAAQ,GACRy5G,EAAU,GAFsB,cAGjBioL,GAHiB,IAGtC,2BAA+B,KAApBgB,EAAoB,QACrBh9S,EAAK+8S,EAAcC,EAAQlpI,GAC7B9zK,KAAM3d,EAAM25T,SACZjoL,EAAQn2I,KAAK,CAAEoiB,KAAI/gB,QAAS+9T,IAG5B1iS,EAAM18B,KAAKo/T,IATmB,8BAYtC,IAAMc,EAAqBP,EAAkBxpL,EAAS1xI,GAChD07T,EAAmBZ,EAAe7iS,EAAOj4B,GAC/C,QAAQ,GACJ,KAAK07T,IAAqBvB,EAAUrD,MAChC2E,IAAuBtB,EAAUrD,KACjC,OAAOqD,EAAUrD,KACrB,KAAK4E,IAAqBvB,EAAUK,MAChCiB,IAAuBtB,EAAUK,KACjC,OAAOL,EAAUK,KACrB,QACI,OAAOL,EAAUM,cAG7B,MAAO,CACHkB,UAzFJ,SAAmB37T,GACf,OAAOmU,OAAOuqB,OAAO,GAAI1+B,EAAO,CAC5B62I,IAAK,GACL8iL,SAAU,MAuFdiC,OAAQxB,EAAoBS,GAC5BgB,QAASzB,EAAoBU,GAC7BgB,OAAQ1B,EA3HZ,SAAuBT,EAAU35T,GAI7B,OAHAA,EAAM62I,IAAM,GACZ72I,EAAM25T,SAAW,GACjBmB,EAAenB,EAAU35T,GAClBm6T,EAAUK,OAwHjBuB,OAAQ3B,EAtHZ,SAAuBO,EAAQ36T,GAC3B,IAAMsU,EAAMomT,EAAcC,EAAQlpI,GAClC,OAAIn9K,KAAOtU,EAAM25T,UACb35T,EAAM25T,SAASrlT,GAAOqmT,EACfR,EAAUM,eAErBz6T,EAAM62I,IAAIt7I,KAAK+Y,GACftU,EAAM25T,SAASrlT,GAAOqmT,EACfR,EAAUK,QA+GjBwB,UAAW5B,EAAoBa,GAC/BgB,WAAY7B,EAAoBc,GAChCgB,UAAW9B,EApCf,SAA0BO,EAAQ36T,GAC9B,OAAOw7T,EAAkB,CAACb,GAAS36T,KAoCnCm8T,WAAY/B,EAAoBoB,GAChCY,UAAWhC,EAjHf,SAA0B9lT,EAAKtU,GAC3B,OAAO+6T,EAAkB,CAACzmT,GAAMtU,KAiHhCq8T,WAAYjC,EAAoBW,GAChC35T,IAAKg5T,EA9DT,SAAoBh5T,EAAKpB,GASrB,OAAOk7T,EARSl7T,EAAM62I,IAAIzpI,OAAO,SAACxQ,EAAS+gB,GACvC,IAAMjW,EAAStG,EAAIpB,EAAM25T,SAASh8S,IAIlC,OAHIjW,IAAW1H,EAAM25T,SAASh8S,IAC1B/gB,EAAQrB,KAAK,CAAEoiB,KAAI/gB,QAAS8K,IAEzB9K,GACR,IACqBkQ,OAAO,qBAAG6Q,MAAe3d,EAAM25T,WACrB35T,KAsDlCs8T,OAAQlC,EApDZ,WAAoCp6T,GAAK,IAAX2d,EAAW,EAAXA,GACpBg9S,EAAS36T,EAAM25T,SAASh8S,GAC9B,OAAKg9S,EAIEM,EAAiB,CACpBt9S,GAAIA,EACJ/gB,SAHkBwE,EALe,EAAhBA,KAKKu5T,IAIvB36T,GANQm6T,EAAUrD,QAqD7B,SAASyF,EAAyB9qI,EAAUj+K,GACxC,MAA6ConT,EAA2BnpI,GACxE,SAASopI,EAAcF,EAAQ36T,GAC3B,OAAO86T,EAAe,CAACH,GAAS36T,GAEpC,SAAS86T,EAAe0B,EAAWx8T,GAC/B,IAAMy8T,EAASD,EAAU1vT,OAAO,SAAC8kF,GAAD,QAAa8oO,EAAc9oO,EAAO6/F,KAAazxL,EAAM25T,YACrF,OAAsB,IAAlB8C,EAAO3gU,OACAq+T,EAAUrD,MAGjB9hT,EAAMynT,EAAQz8T,GACPm6T,EAAUK,MAoBzB,SAASS,EAAiB9oP,EAAQnyE,GAC9B,OAAOk7T,EAAkB,CAAC/oP,GAASnyE,GAavC,SAASk7T,EAAkBC,EAASn7T,GAChC,IAAMy8T,EAAS,GACTC,EAAevB,EAAQruT,OAAO,SAACqlE,GAAD,OAbxC,SAA0BsqP,EAAQtqP,EAAQnyE,GACtC,KAAMmyE,EAAOx0D,MAAM3d,EAAM25T,UACrB,OAAO,EAEX,IACMjoL,EAAUv9H,OAAOuqB,OAAO,GADb1+B,EAAM25T,SAASxnP,EAAOx0D,IACKw0D,EAAOv1E,SAC7Cy+T,EAASX,EAAchpL,EAAS+/C,GAGtC,cAFOzxL,EAAM25T,SAASxnP,EAAOx0D,IAC7B8+S,EAAOlhU,KAAKm2I,GACL2pL,IAAWlpP,EAAOx0D,GAIuBg/S,CAAiBF,EAAQtqP,EAAQnyE,KAC5ElE,OAAS,EACd,GAAsB,IAAlB2gU,EAAO3gU,OACP,OAAOq+T,EAAUrD,KAGjB,IAAM8F,EAAc58T,EAAM62I,IACpBgmL,EAAiB,GAWvB,OAVA78T,EAAM62I,IAAM72I,EAAM62I,IAAI/pI,OAAO,SAAC6Q,EAAIrc,GAC9B,OAAIqc,KAAM3d,EAAM25T,WAIZkD,EAAethU,KAAK+F,IACb,KAGf0T,EAAMynT,EAAQz8T,IACT08T,GACDG,EAAe9wK,MAAM,SAACvsJ,GAAD,OAAOQ,EAAM62I,IAAIr3I,KAAOo9T,EAAYp9T,KAClD26T,EAAUM,aAGVN,EAAUK,KA4B7B,SAASgB,EAAkB7B,EAAU35T,GACjC,IADsC,EAChCi4B,EAAQ,GACRy5G,EAAU,GAFsB,cAGjBioL,GAHiB,IAGtC,2BAA+B,KAApBgB,EAAoB,QACrBh9S,EAAK+8S,EAAcC,EAAQlpI,GAC7B9zK,KAAM3d,EAAM25T,SACZjoL,EAAQn2I,KAAK,CAAEoiB,KAAI/gB,QAAS+9T,IAG5B1iS,EAAM18B,KAAKo/T,IATmB,8BAYtC,IAAMc,EAAqBP,EAAkBxpL,EAAS1xI,GAChD07T,EAAmBZ,EAAe7iS,EAAOj4B,GAC/C,QAAQ,GACJ,KAAK07T,IAAqBvB,EAAUrD,MAChC2E,IAAuBtB,EAAUrD,KACjC,OAAOqD,EAAUrD,KACrB,KAAK4E,IAAqBvB,EAAUK,MAChCiB,IAAuBtB,EAAUK,KACjC,OAAOL,EAAUK,KACrB,QACI,OAAOL,EAAUM,cAG7B,SAASzlT,EAAMynT,EAAQz8T,GACnBy8T,EAAOjpT,KAAKA,GAIZ,IAHA,IAAMqjI,EAAM,GACRr3I,EAAI,EACJ0M,EAAI,EACD1M,EAAIi9T,EAAO3gU,QAAUoQ,EAAIlM,EAAM62I,IAAI/6I,QAAQ,CAC9C,IAAM81F,EAAQ6qO,EAAOj9T,GACfs9T,EAAUpC,EAAc9oO,EAAO6/F,GAC/BsrI,EAAW/8T,EAAM62I,IAAI3qI,GAEvBsH,EAAKo+E,EADM5xF,EAAM25T,SAASoD,KACH,GACvBlmL,EAAIt7I,KAAKuhU,GACTt9T,MAGAq3I,EAAIt7I,KAAKwhU,GACT7wT,KAIJlM,EAAM62I,IAAMA,EAAIlmI,OADhBnR,EAAIi9T,EAAO3gU,OACY2gU,EAAOt7T,MAAM3B,GAAG4B,IAAIqwL,GAGpBzxL,EAAM62I,IAAI11I,MAAM+K,IAE3CuwT,EAAOzxT,QAAQ,SAAC4mF,EAAOpyF,GACnBQ,EAAM25T,SAASloI,EAAS7/F,IAAUA,IAG1C,MAAO,CACHwqO,UAzJJ,EAAQA,UA0JJC,WA1JJ,EAAmBA,WA2JfV,UA3JJ,EAA+BA,UA4J3BC,OAAQxB,EAAoBS,GAC5BmB,UAAW5B,EAAoBa,GAC/BiB,UAAW9B,EA/Df,SAA0BO,EAAQ36T,GAC9B,OAAOw7T,EAAkB,CAACb,GAAS36T,KA+DnC87T,OAAQ1B,EAjJZ,SAAuBqC,EAAQz8T,GAI3B,OAHAA,EAAM25T,SAAW,GACjB35T,EAAM62I,IAAM,GACZikL,EAAe2B,EAAQz8T,GAChBm6T,EAAUK,OA8IjBuB,OAAQ3B,EA5IZ,SAAuBO,EAAQ36T,GAC3B,IAAM2d,EAAK+8S,EAAcC,EAAQlpI,GACjC,OAAI9zK,KAAM3d,EAAM25T,UACZ35T,EAAM62I,IAAM72I,EAAM62I,IAAI/pI,OAAO,SAACm5B,GAAD,OAASA,IAAQtoB,IAC9C3I,EAAM,CAAC2lT,GAAS36T,GACTm6T,EAAUK,MAGVK,EAAcF,EAAQ36T,KAqIjC67T,QAASzB,EAAoBU,GAC7BmB,WAAY7B,EAAoBc,GAChCiB,WAAY/B,EAAoBoB,GAChCp6T,IAAKg5T,EA1FT,SAAoB4C,EAAch9T,GAQ9B,OAAOk7T,EAPSl7T,EAAM62I,IAAIzpI,OAAO,SAACxQ,EAAS+gB,GACvC,IAAMjW,EAASs1T,EAAah9T,EAAM25T,SAASh8S,IAI3C,OAHIjW,IAAW1H,EAAM25T,SAASh8S,IAC1B/gB,EAAQrB,KAAK,CAAEoiB,KAAI/gB,QAAS8K,IAEzB9K,GACR,IAC+BoD,KAmFlCs8T,OAAQlC,EAjFZ,WAAoCp6T,GAAK,IAAX2d,EAAW,EAAXA,GACpBg9S,EAAS36T,EAAM25T,SAASh8S,GAC9B,OAAKg9S,EAIEM,EAAiB,CACpBt9S,GAAIA,EACJ/gB,SAHkBwE,EALe,EAAhBA,KAKKu5T,IAIvB36T,GANQm6T,EAAUrD,QAkF7B,SAASmG,IAAgC,IAAZt9S,EAAY,uDAAF,GACnC,EAAmCxL,OAAOuqB,OAAO,CAAEw+R,cAAc,EAAOzrI,SAAU,SAAChmK,GAAD,OAAcA,EAAS9N,KAAMgC,GAAvG8xK,EAAR,EAAQA,SAAUyrI,EAAlB,EAAkBA,aACZC,EAAe3D,IACf4D,EAAmBxD,IACnByD,EAAeH,EACfX,EAAyB9qI,EAAUyrI,GACnCtC,EAA2BnpI,GACjC,OAAOt9K,OAAOuqB,OAAOvqB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,CAAE+yJ,WAC/CyrI,gBAAgBC,GAAeC,GAAmBC,G,MC1Y9CC,EAAZ,SAAYA,G,OACX,4DACA,gDACA,kEACA,kDACA,gDACA,+CACA,8DACA,kDACA,wDACA,kEACA,iEAXWA,EAAZ,CAYC,IAyCD,aAEA,OAFA,WACU,KAAAjlU,KAAOilU,EAAgBC,mBADjC,GASA,aAGA,OADC,SAAmBn9L,GAAA,KAAAA,UADV,KAAA/nI,KAAOilU,EAAgBE,wBADjC,GAKA,aAGA,OADC,SAAmBp9L,GAAA,KAAAA,UADV,KAAA/nI,KAAOilU,EAAgBG,0BADjC,GCxDaC,EAA+BT,IAE/BU,EAAgCD,EAAQjE,gBAAgB,CACpEmE,kBAAkB,EAClBC,eAAgB,EAChBC,YAAa,GACbC,uBAAmB3hU,EACnB4hU,aAAa,EACbC,gBAAgB,EAChBC,UAAW,IAAI,IAAiB,IAChCC,wBAAwB,IAGlB,SAASC,EAAap+T,EAA2B06D,GACvD,YAD4B,IAAA16D,MAAQ29T,GAC5BjjQ,EAAOriE,MACd,KAAKilU,EAAgBE,uBACpB,OAAO,YAAP,eACIx9T,GAAK,CACRg+T,YAAatjQ,EAAO0lE,QAAQh2C,UAC5B2zO,uBAAmB3hU,IAErB,KAAKkhU,EAAgBG,yBACpB,OAAO,YAAP,eACIz9T,GAAK,CACRi+T,eAAgBvjQ,EAAO0lE,QAAQh2C,YAEjC,KAAKkzO,EAAgBe,oBACpB,OAAO,YAAP,GACIr+T,GAEL,KAAKs9T,EAAgBgB,YACpB,OAAOZ,EAAQ9B,OAAOlhQ,EAAO0lE,QAAQz7H,KAAM,YAAF,eACrC3E,GAAK,CACR+9T,kBAAmBrjQ,EAAO0lE,QAAQz7H,KAAKgZ,MAEzC,KAAK2/S,EAAgBiB,YACpB,OAAOb,EAAQ1B,UAAUthQ,EAAO0lE,QAAQo+L,YAAax+T,GACtD,KAAKs9T,EAAgBmB,YACpB,OAAOf,EAAQtB,UAAU1hQ,EAAO0lE,QAAQziH,GAAI3d,GAC7C,KAAKs9T,EAAgBoB,eACpB,OAAOhB,EAAQ7B,QAAQnhQ,EAAO0lE,QAAQu+L,MAAO,YAAF,eACvC3+T,GAAK,CACR49T,kBAAkB,KAEpB,KAAKN,EAAgBsB,mBACpB,OAAO,YAAP,eACI5+T,GAAK,CACRg+T,aAAa,EACbH,eAAgB,EAChBC,YAAa,GACbI,UAAW,IAAI,IAAiB,MAElC,KAAKZ,EAAgBuB,gBACpB,OAAOnB,EAAQ7B,QAAQnhQ,EAAO0lE,QAAQu+L,MAAO,YAAF,eACvChB,GAAiB,CACpBK,aAAa,EACbH,eAAgBnjQ,EAAO0lE,QAAQ0+L,WAC/BhB,YAAapjQ,EAAO0lE,QAAQu+L,MAC5BT,UAAWxjQ,EAAO0lE,QAAQjrH,KAC1BgpT,wBAAwB,KAE1B,QACC,OAAOn+T,GAIK,I,EAAA,GAAF,EAAwD09T,EAAQ7D,gBAAc,UAAjD,EAAS,Y,YC1EtCkF,EAAmB,YAAkC,SAKrDC,EAAiB,YAAeD,EAAkB,GCPlDE,GDSoB,YAAeF,EAAkB,GAEpC,YAAeA,EAAkB,SAAAG,GAAc,OAAAA,EAAWtB,mBAElD,YAAemB,EAAkB,SAAAG,GAAc,OAAAA,EAAWlB,cAExD,YAAee,EAAkB,SAAAG,GAAc,OAAAA,EAAWjB,iBAE3D,YAAec,EAAkB,SAAAG,GAAc,OAAAA,EAAWnB,oBAEhD,YAChDgB,EACA,SAAAG,GAAc,OAAAA,EAAWf,yBAGO,YAAeY,EAAkB,SAAAG,GACjE,IAAMrvT,EAAgB,GAOtB,OANA,eAAKqvT,EAAWvF,SAAU,SAAA32T,GACzB6M,EAAMtU,KAAKyH,MAEU,IAAI,KACWm8T,UAAUtvT,EAAOqvT,EAAWhB,UAAUkB,UAAWF,EAAWhB,UAAUjiJ,WAEpG,IAAI,IAAkBijJ,EAAWpB,YAAaoB,EAAWrB,kBChCjC,YAAkC,U,GAK5B,YAAeoB,EAAkB,SAAAI,GACtE,OAAOA,EAAWrB,cAGqB,YAAeiB,EAAkB,SAAAI,GAAc,OAAAA,EAAWpB,iBAE3D,YAAegB,EAAkB,SAAAI,GAAc,OAAAA,EAAWC,oBAEzD,YAAeL,EAAkB,SAAAI,GAAc,OAAAA,EAAWnB,YAEhE,YAAee,EAAkB,SAAAI,GAClE,IAAMxvT,EAAgB,GACtB,eAAKwvT,EAAW1F,SAAU,SAAA32T,GACzB6M,EAAMtU,KAAKyH,KAEZ,IACMuxB,GADgB,IAAI,KACW4qS,UAAUtvT,EAAOwvT,EAAWnB,UAAUkB,UAAWC,EAAWnB,UAAUjiJ,WAC3G,OAAO,IAAI,IAAkB1nJ,EAAQ8qS,EAAWP,WAAY,MAGZ,YAChDG,EACA,SAAAI,GAAc,OAAAA,EAAWlB,yBAGW,YAAec,EAAkB,SAAAnB,GACrE,QAAKA,EAAYgB,a,WCnCNS,EAAZ,SAAYA,G,OACX,6DACA,uDAFWA,EAAZ,CAGC,IAED,aAEA,OAFA,WACU,KAAAlnU,KAAOknU,EAAsBC,yBADvC,GCFYC,EAAZ,SAAYA,G,OACX,yDACA,gDACA,qEACA,gDACA,gDACA,+CACA,8DACA,kDACA,wDACA,6DACA,iEAXWA,EAAZ,CAYC,IAyCD,aAGA,OADC,SAAmBr/L,GAAA,KAAAA,UADV,KAAA/nI,KAAOonU,EAAgBC,wBADjC,GAKA,aAGA,OADC,SAAmBt/L,GAAA,KAAAA,UADV,KAAA/nI,KAAOonU,EAAgBE,0BADjC,G,oFCnDA,aAwDC,WACSC,EACA1wS,EAEAD,GAJT,WACS,KAAA2wS,WACA,KAAA1wS,SAEA,KAAAD,QAzDT,KAAA4wS,OAASloU,KAAKioU,SAASjkU,KACtB,YAAc,IAAgBw5K,OAC9B,OAAA16C,EAAA,GAAI,SAAA//D,GACHnrC,aAAaW,QAAQgjJ,EAAA,EAAYW,aAAcn5G,EAAO0lE,QAAQ9vG,WAC9D,EAAKrB,MAAMoB,SAAS,IAAI,QAK1B,KAAAyvS,QAAUnoU,KAAKioU,SAASjkU,KACvB,YAAe,IAAgBy5K,QAC/B,OAAA36C,EAAA,GAAI,WACHlrG,aAAa4jI,WAAW+f,EAAA,EAAYW,cACpC,EAAK3kJ,OAAOixF,SAAS,CAAC,eAAgB,CAAE4/M,YAAa,CAAEC,UAAW,EAAKA,gBAKzE,KAAAC,UAAYtoU,KAAKioU,SAASjkU,KACzB,YAAiB,IAAgBukU,UACjC,OAAAzlM,EAAA,GAAI,SAAA//D,GACHnrC,aAAaW,QAAQgjJ,EAAA,EAAYW,aAAcn5G,EAAO0lE,QAAQ9vG,cAqBhE,KAAAk1I,MAA4B,OAAAg+F,EAAA,GAAM,WACjC,IAAM28D,EAAY5wS,aAAaC,QAAQ0jJ,EAAA,EAAYW,cAC/CusJ,EAAmB,OAAAxyT,EAAA,GAAG,CAAEvV,KAAM,cAIlC,OAHI8nU,IACHC,EAAmB,OAAAxyT,EAAA,GAAG,IAAI,IAAM,CAAE0iB,UAAW6vS,MAEvCC,IAWPzoU,KAAKu3B,OAAOs7B,OAAO3uD,UAAU,SAAAokB,GACxBA,aAAiB,MACpB,EAAK+/S,UAAY//S,EAAM6rB,O,6CA/Ddu0R,GAAW,gC,yBAAXA,EAAW,QAAXA,EAAW,YAEvB,aADC,YAAO,CAAEhwS,UAAU,I,gEAUpB,aADC,YAAO,CAAEA,UAAU,I,iEAUpB,aADC,YAAO,CAAEA,UAAU,I,mEAyBpB,aADC,c,0BACM8hG,EAAA,I,8BA7CR,GCAA,aAmBC,WAAoBytM,GAAA,KAAAA,WAJpB,KAAAp6J,MAA4B,OAAAg+F,EAAA,GAAM,WACjC,OAAO,OAAA51P,EAAA,GAAG,IAAI4xT,K,6CAfHc,GAAiB,Y,yBAAjBA,EAAiB,QAAjBA,EAAiB,YAc7B,aADC,c,0BACMnuM,EAAA,I,8BAfR,GCgBA,aA4FC,WACSytM,EAEA3wS,GAFA,KAAA2wS,WAEA,KAAA3wS,QA7FT,KAAAsxS,2BAA6B,IAAI/C,EAAuB,CAAEpzO,WAAW,IACrE,KAAAo2O,2BAA6B,IAAIhD,EAAuB,CAAEpzO,WAAW,IAErE,KAAAq2O,6BAA+B,IAAIhD,EAAyB,CAAErzO,WAAW,IACzE,KAAAs2O,6BAA+B,IAAIjD,EAAyB,CAAErzO,WAAW,IAkFzE,KAAAo7E,MAA4B,OAAAg+F,EAAA,GAAM,WACjC,OAAO,OAAA51P,EAAA,GAAG,IAAI2vT,K,6CAxFHoD,GAAW,sB,yBAAXA,EAAW,QAAXA,EAAW,YAuFvB,aADC,c,0BACMxuM,EAAA,I,8BAxFR,GCnBayuM,GCcb,WAyEC,WACShB,EAEA3wS,GAFA,KAAA2wS,WAEA,KAAA3wS,QA1ET,KAAAsxS,2BAA6B,IAAIb,EAAuB,CAAEt1O,WAAW,IACrE,KAAAo2O,2BAA6B,IAAId,EAAuB,CAAEt1O,WAAW,IAErE,KAAAq2O,6BAA+B,IAAId,EAAyB,CAAEv1O,WAAW,IACzE,KAAAs2O,6BAA+B,IAAIf,EAAyB,CAAEv1O,WAAW,I,sCAL7Dy2O,GAAW,sB,yBAAXA,EAAW,QAAXA,EAAW,YADxB,GDd2C,CAC1CC,UAAU,EACVxwS,eAAWl0B,EACXk2B,UAAMl2B,EACN2kU,cAAc,IAGR,SAASC,EAAYhhU,EAA0B06D,GACrD,YAD2B,IAAA16D,MAAQ4gU,GAC3BlmQ,EAAOriE,MACd,KAAK,IAAgB88K,MAUrB,KAAK,IAAgB+qJ,SAEpB,MAAO,CACNY,UAAU,EACVxwS,UAHsBoqC,EAAO0lE,QAAQ9vG,UAIrCgC,UAAMl2B,EACN2kU,cAAc,GAIhB,KAAK,IAAgB3rJ,OACpB,OAAOwrJ,EAER,KAAK,IAAgBK,WACpB,IAAMC,EAAcxmQ,EAAO0lE,QAAQ9tG,KACnC,OAAO,YAAP,eACItyB,GAAK,CACRsyB,KAAM4uS,EACNH,cAAc,IAIhB,QACC,OAAO/gU,GE1CH,IAAM,EAAqCi9T,IAErCkE,EAA4C,EAAQ1H,gBAAgB,CAChF2H,yBAAyB,IAGnB,SAASC,GAAmBrhU,EAAiC06D,GACnE,YADkC,IAAA16D,MAAQmhU,GAClCzmQ,EAAOriE,MACd,KAAKknU,EAAsBC,wBAC1B,OAAO,YAAP,eAAYx/T,GAAK,CAAEohU,yBAAyB,IAC7C,KAAK7B,EAAsB+B,qBAC1B,OAAO,EAAQzF,QAAQnhQ,EAAO0lE,QAAQxB,YAAa,YAAF,eAC7C5+H,GAAK,CACRohU,yBAAyB,KAE3B,QACC,OAAOphU,GAIkB,YAAwC,eAA7D,IAEQ,IAAF,EAAwD,EAAQ65T,gBAAc,UAAjD,GAAS,YCdtC,GAA+BoD,IAEC,GAAQxD,gBAAgB,CACpEuE,aAAa,EACbC,gBAAgB,EAChBa,WAAY,EACZZ,UAAW,IAAI,IAAiB,IAChCoB,uBAAmBljU,EACnB+hU,wBAAwB,IAiDG,YAAkC,SAEO,GAAQtE,eAFtE,ICvEM0H,GAAyB,YAAwC,eAKjEC,GAAuB,YAAeD,GAAwB,ICA9DE,IDE0B,YAAeF,GAAwB,IAE1C,YAAeA,GAAwB,SAAAG,GAAM,OAAAA,EAAGN,0BCJrD,SAAAphU,GAAS,OAAAA,EAAMy2K,OAEjCkrJ,GAAa,YAAeF,GAAiB,SAAAhrJ,GAAQ,OAAAA,EAAKqqJ,WAQ1Dc,IANc,YAAeD,GAAY,SAAAb,GAAY,OAACA,IAEnC,YAAeW,GAAiB,SAAAhrJ,GAAQ,OAAAA,EAAKnmJ,YAEjD,YAAemxS,GAAiB,SAAAhrJ,GAAQ,OAAAA,EAAKsqJ,eAE9C,YAAeU,GAAiB,SAAAhrJ,GAAQ,OAAAA,EAAKnkJ,QAE3DuvS,GAAqB,YAAeD,GAAa,SAAAtvS,GAC7D,OAAKA,EAIEA,EAAKqsS,MAHJ,KAMImD,GAA4B,YACxCD,GACA7C,EACA,SAAC+C,EAAuBC,GAEvB,OAwBF,SAA+BC,EAA6BD,QAA7B,IAAAC,MAAA,SAA6B,IAAAD,MAAA,IAC3D,IAAME,EAAoB,GAC1B,eAAKD,EAAc,SAAC5mS,GACnB,IAAM8mS,EAAW,eAAKH,EAAU,SAACnhI,GAAgB,OAAAA,EAAMljL,KAAO0d,IAC1D8mS,GACHD,EAAU3mU,KAAK4mU,KAIjB,IAAM5tS,EAAmB,GAQzB,OAPA,eAAK2tS,EAAW,SAACrhI,GAChB,eAAKA,EAAMjiE,YAAa,SAAAjhH,GAClB,eAAK4W,EAAQ,SAAA8G,GAAO,OAAAA,IAAQ1d,KAChC4W,EAAOh5B,KAAKoiB,OAIR4W,EA1CS6tS,CAAsBL,EAAaC,KAUvCK,GAAyB,YACrCP,GACAN,GACA,SAACc,EAAyBC,GACzB,IAAMhuS,EAAuB,GAO7B,OANA,eAAK+tS,EAAe,SAAA3kT,GACnB,IAAM6kT,EAAiB,eAAKD,EAAgB,SAAAlmD,GAAQ,OAAAA,EAAK1+P,KAAOA,IAC5D6kT,GACHjuS,EAAOh5B,KAAKinU,KAGPjuS,I,uCCxCT,cAEC,WACStF,EACAurN,EACAioF,EACAhoF,GAHA,KAAAxrN,QACA,KAAAurN,UACA,KAAAioF,cACA,KAAAhoF,c,OAGT,YAAAioF,UAAA,SAAUvhP,EAAMs0E,EAASp9J,GACxBV,KAAK6iP,QAAQx3J,KAAK,CACjB7B,KAAI,EACJs0E,QAAO,EACPp9J,KAAI,KAIN,YAAAsqU,WAAA,SAAWC,EAAoBC,GAC9B,IAAKA,EACJ,OAAO,EAERD,EAAaA,EAAWjgR,UAAU,GAClC,IAAImgR,GAAQ,EAMZ,OALAD,EAAU3oT,MAAM,KAAKlP,QAAQ,SAAC/B,EAAM3H,GAC/BshU,EAAW1oT,MAAM,KAAK5Y,KAAW2H,IACpC65T,GAAQ,MAGFA,GAYT,YAAAC,YAAA,SAAYvjD,EAA+Bx/Q,GAA3C,WACC,OAAOrI,KAAKs3B,MAAMtzB,KACjB,YAAOgmU,IACP,OAAAlnM,EAAA,GAAI,SAAAqmM,GACCA,GACE,EAAKrmF,YAAYrnN,oBACrB,EAAKsvS,UAAU,GAAI,oEAA8C,UACjE,EAAKjoF,YAAY1oN,UAG4B,IAA1C,EAAK0wS,YAAYO,cAAclnU,OAClC,EAAK2mU,YAAYh4R,UAAU5uC,UAAU,WACU,IAA1C,EAAK4mU,YAAYO,cAAclnU,QAClC,EAAK2+O,YAAY1oN,SAEb,EAAK0wS,YAAYO,cAAcjjU,KAAK,SAAAmzB,GAAK,SAAKyvS,WAAW3iU,EAAM8rC,IAAK5Y,EAAE+vS,iBAC1E,EAAKxoF,YAAY1oN,WAId,EAAK0wS,YAAYO,cAAcjjU,KAAK,SAAAmzB,GAAK,SAAKyvS,WAAW3iU,EAAM8rC,IAAK5Y,EAAE+vS,iBAC1E,EAAKxoF,YAAY1oN,UAInB,EAAK0oN,YAAY1oN,a,sCAhETmxS,GAAS,6C,yBAATA,EAAS,QAATA,EAAS,Y,EADtB,G,iCCPS,SAAUlpT,GAAU,aAIzB,SAAS+6J,EAAU13J,EAAQs3I,EAAergJ,GACtC,IAAIigB,EAASlX,EAAS,IACtB,OAAQ/I,GACJ,IAAK,KAQD,OANIigB,GADW,IAAXlX,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOs3I,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIpgI,GADW,IAAXlX,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOs3I,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIpgI,GADW,IAAXlX,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIkX,GADW,IAAXlX,EACU,MAEA,QAGlB,IAAK,KAQD,OANIkX,GADW,IAAXlX,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIkX,GADW,IAAXlX,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBrD,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJG,OAAQ,mHAAoGR,MACxG,KAEJkiH,WACI,+GAAgGliH,MAC5F,MAGZM,YACI,oEAA+DN,MAC3D,KAER0U,kBAAkB,EAClB1T,SAAU,iEAA4DhB,MAClE,KAEJiB,cAAe,0CAAqCjB,MAAM,KAC1DkB,YAAa,4BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBxtB,QAAS,oBACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MAAO,kCACX,KAAK,EACD,MAAO,iCACX,KAAK,EACD,MAAO,gCACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,cACHC,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAG,MACHiN,GAAIm4J,EACJh4J,EAAG,SACHC,GAAI+3J,EACJ93J,EAAG,SACHC,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1JyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAI0iK,EAAW,CACXr0I,EAAG,QACHI,EAAG,QACHG,EAAG,QACH+zI,GAAI,QACJC,GAAI,QACJt0I,EAAG,OACHK,EAAG,OACHk0I,GAAI,OACJC,GAAI,OACJv0I,EAAG,cACHC,EAAG,cACHu0I,IAAK,cACLr0I,EAAG,YACHG,EAAG,QACHm0I,GAAI,QACJC,GAAI,QACJC,GAAI,kBACJC,GAAI,mBAGCnjK,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EL,MACnF,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SACI,2KAAqEhB,MACjE,KAERiB,cAAe,sDAA8BjB,MAAM,KACnDkB,YAAa,+CAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,kBACTC,SAAU,mDACVC,QAAS,qBACTC,SAAU,iDACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,qBACNC,EAAG,+BACHC,GAAI,iBACJ/B,EAAG,uBACHgC,GAAI,sBACJC,EAAG,WACHC,GAAI,UACJhN,EAAG,aACHiN,GAAI,YACJG,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAERisB,cAAe,oDACfmuF,KAAM,SAAUnhF,GACZ,MAAO,8BAAmBx7B,KAAKw7B,IAEnC7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,YACAA,EAAO,GACP,kBACAA,EAAO,GACP,eAEA,cAGflsB,uBAAwB,6DACxBC,QAAS,SAAUC,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,kBAEpB,IAAI3J,EAAI2J,EAAS,GAGjB,OAAOA,GAAUq/J,EAAShpK,IAAMgpK,EAFvBr/J,EAAS,IAAO3J,IAEsBgpK,EADvCr/J,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KApGyB/gB,CAAQ,EAAQ,U,0QCF1D,aAqBC,WACS0mU,EACDC,EACCC,EACAC,GAHA,KAAAH,sBACD,KAAAC,oBACC,KAAAC,qBACA,KAAAC,sBAjBD,KAAA3mQ,MAAgBtqB,KAAKqR,MAoB7B,KAAA6/Q,KAAO,E,OACP,YAAAv7M,SAAA,WACCrwH,KAAK0rU,mBAAmBG,YAAY7rU,KAAK0rU,mBAAmBI,uBAC5D9rU,KAAK+rU,WAAa/rU,KAAKwrU,oBAAoBQ,UAE3ChsU,KAAK2rU,oBAAoB3+I,Q,sCA3Bdi/I,GAAa,0C,uBAAbA,EAAa,qlBCV1B,gBACC,gBA6BC,gBAWC,wBACD,OAED,OACD,S,shHDzCA,G,yGEQA,aAEC,WAAoB90S,EAA0BC,GAA1B,KAAAD,OAA0B,KAAAC,gB,OAG9C,YAAA80S,WAAA,SAAWC,GACV,IAAMvwS,EAAoB,CAAEuwS,SAAQ,EAAEC,YAAa,GAAIC,MAAO,IACxD50S,EAAU,IAAI,IAAY,CAAE,eAAgB,qBAClD,OAAOz3B,KAAKm3B,KAAKgB,KAAuBn4B,KAAKo3B,cAAcgB,OAAOC,OAAM,mCAAoCuD,EAAK,CAChHnE,QAAO,KAIT,YAAA60S,cAAA,SAAc1wS,GACb,IAAMnE,EAAU,IAAI,IAAY,CAAE,eAAgB,qBAClD,OAAOz3B,KAAKm3B,KAAKgB,KACbn4B,KAAKo3B,cAAcgB,OAAOC,OAAM,8BACnCuD,EACA,CAAEnE,QAAO,KAIX,YAAA80S,eAAA,SAAe3wS,GACd,IAAMnE,EAAU,IAAI,IAAY,CAAE,eAAgB,qBAClD,OAAOz3B,KAAKm3B,KAAKgB,KACbn4B,KAAKo3B,cAAcgB,OAAOC,OAAM,+BACnCuD,EACA,CAAEnE,QAAO,KAIX,YAAA+0S,eAAA,SAAe5wS,GACd,IAAMnE,EAAU,IAAI,IAAY,CAAE,eAAgB,qBAClD,OAAOz3B,KAAKm3B,KAAKgB,KACbn4B,KAAKo3B,cAAcgB,OAAOC,OAAM,+BACnCuD,EACA,CAAEnE,QAAO,KAIX,YAAAg1S,YAAA,SAAYC,GACX,IAAM5iP,GAAS,IAAI,KAAaz1E,IAAI,YAAaq4T,GACjD,OAAO1sU,KAAKm3B,KAAKjlB,IAASlS,KAAKo3B,cAAcgB,OAAOC,OAAS,qBAAsB,CAClFyxD,OAAQA,K,sCA1CE6iP,GAAY,sB,yBAAZA,EAAY,QAAZA,EAAY,Y,EADzB,G,8CCkBE,eACC,iBACD,Q,sBA6BM,oBACC,iBAAQ,Q,oBAAsC,OAC/C,Q,MADS,sD,sBAET,oBACC,iBAAQ,Q,oBAAgD,OACzD,Q,MADS,8D,sBAET,oBACC,iBACC,Q,oBACD,OACD,Q,MAFE,+D,sBAGF,oBACC,iBACC,Q,oBACD,OACD,Q,MAFE,mE,6FC3CV,aAoDC,WACSC,EACAC,EACAt1S,EACAk0S,EACAqB,EACAC,EACDC,EACCnlD,EACAzwP,EACA0rN,EACAgoF,GAVA,KAAA8B,qBACA,KAAAC,eACA,KAAAt1S,SACA,KAAAk0S,oBACA,KAAAqB,KACA,KAAAC,MACD,KAAAC,WACC,KAAAnlD,QACA,KAAAzwP,gBACA,KAAA0rN,cACA,KAAAgoF,cAtDF,KAAA94Q,SAAU,EAET,KAAAu9E,OAAc,GACf,KAAAvqE,MAAgBtqB,KAAKqR,MAQpB,KAAAkhR,sBAAoD,IAAI,IAExD,KAAAC,OAAS,CAChBC,gBAAiB,SACjBC,SAAU,GACVC,eAAe,EACfC,mBAAmB,GAuCnBttU,KAAK4V,YAAc,IAAInS,EAAA,EACvBzD,KAAKutU,aAAen2S,EAAcgB,OAAOo1S,Y,OAY1C,YAAAn9M,SAAA,sBACcllG,OACbyM,aAAa4jI,WAAW,SAExBx7J,KAAK6nR,MAAM/9L,OAAO5lF,UAAU,SAAA+0B,GACvBA,IACH,EAAKw0S,WAAax0S,EACd,QAAKw0S,WAAWC,SAEnB,EAAKd,mBAAmBe,aAAa,EAAKF,WAAWC,QAAQxpU,UAAU,SAAA+0B,MACvE,EAAK4zS,aAAaJ,YAAY,EAAKgB,WAAWC,QAAQxpU,UAAU,SAAA+0B,GAC/D,EAAK20S,YAAc30S,QAMkB,UAArCrB,aAAaC,QAAQ,aAAgE,OAArCD,aAAaC,QAAQ,cACxED,aAAaW,QAAQ,WAAY,QACjC+B,SAASuzS,UAGV7tU,KAAK8tU,cAAgB9tU,KAAKktU,OAE1BltU,KAAK+tU,gBAGL/tU,KAAK6nR,MAAMugD,YAAYlkU,UAAU,SAAA4lF,GAChC,EAAKu+O,UAAYv+O,EAAOu+O,WAAa,OAOvC,YAAA7kJ,YAAA,WACCxjL,KAAKyrU,kBAAkB9J,UAAU,MACjC3hU,KAAK4V,YAAY/R,OACjB7D,KAAK4V,YAAY9R,WACjB9D,KAAKgyD,SAAU,GAGhB,YAAAg8Q,WAAA,SAAW/5S,GACK,MAAXA,EAAEnkB,MAEL9P,KAAKiuU,UAAU71L,SAASr/G,MAAMu7G,SADRt0I,KAAKiuU,UAAU71L,SAASr/G,MAAMx3B,MACPub,SAQ/C,YAAAixT,cAAA,WAEM/tU,KAAKyrU,kBAAkB/J,iBAAiB5lM,YAI5C97H,KAAKyrU,kBAAkB9J,UAHD,4GAG0B,QAGjD3hU,KAAKiuU,UAAYjuU,KAAK8sU,GAAGjyL,MAAM,CAC9B9hH,MAAO,CACN,GACA,IAAWm1S,QAAQ,CAClB,IAAWj7N,SACX,IAAW27B,UAAU,GACrB,IAAWK,UAAU,GACrB,IAAWH,QAAQ,yBAUvB,YAAAq/L,YAAA,sBACO/1L,EAAWp4I,KAAKiuU,UAAU71L,SAE5Bp4I,KAAKiuU,UAAUt+M,QAClBnzG,OAAOC,KAAK27H,GAAU/kI,QAAQ,SAAAmmI,GAAe,OAAApB,EAASoB,GAAaxG,mBAIpEhzI,KAAKgyD,SAAU,EAQfhyD,KAAK8iP,YAAY5qN,MANkB,CAClCk2S,SAAUh2L,EAASr/G,MAAMx3B,MACzB8sU,SAAU,KACVv1S,SAAU,IAAYw1S,QAGYpqU,UAClC,WACC,EAAK4mU,YAAYh4R,UAAU5uC,UAAU,WACpC,EAAKqqU,UAAY32S,aAAaC,QAAQ,aACf,UAAnB,EAAK02S,YACR,EAAKx1S,MAAQ,EAAK+pN,YAAYroN,cAAc2zS,UAE7C,EAAKnB,sBAAsBd,SAAW,EAAKpzS,MAC3C,EAAKk0S,sBAAsBuB,OAAS,IAAI,IACxC,EAAKvB,sBAAsBuB,OAAOC,MAAQ,EAC1C,EAAK7B,mBACH8B,wBAAwB,EAAKzB,uBAC7BjpU,KAAK,OAAAC,EAAA,GAAU,EAAK2R,cACpB1R,UAAU,SAAA4L,GACV,GAAyB,IAArBA,EAAKA,KAAK3L,OACb,GAAI,QAAKspU,WAAWC,OAEnB,EAAKd,mBACHe,aAAa,EAAKF,WAAWC,QAC7B1pU,KAAK,OAAAC,EAAA,GAAU,EAAK2R,cACpB1R,UAAU,SAAA+nC,GAEV,GADA,EAAK0iS,gBAAkB1iS,EAASm8F,WACR,IAApBn8F,EAAS2iS,QAAwC,OAAxB3iS,EAASm8F,WAyBrC,OAHAxwG,aAAaW,QAAQ,eAAgBiB,KAAKC,UArBN,CACnCE,OAAQ,EACRk1S,aAAc,EACdzmM,WAAY,EAAKumM,gBACjBG,aAAa,EACbC,UAAW,EACXC,UAAW,GACXC,aAAc,GACd9C,SAAU,GACVvyS,SAAU,GACVs1S,iBAAkB,GAClBC,eAAgB,GAChBC,eAAgB,GAChBC,kBAAmB,EACnBC,gBAAiB,EACjBC,YAAa,GACbC,eAAgB,EAChBC,iBAAkB,GAClBC,oBAAqB,GACrBC,kBAAmB,WAGpB,EAAK7E,YAAYtiN,SAAS,yBAGI,IAApBv8E,EAAS2iS,QAAwC,OAAxB3iS,EAASm8F,aAC5C,EAAK06G,YAAY/mN,eAAc,GAE/B,EAAKxE,OAAOiD,cAAc,gBAAgB,EAAKizS,WAAWC,eAKvD,CACN,IAAM,EAAQ,EAAKD,WAAWmC,MAC1B,QACH,EAAK9sF,YAAY/nN,uBAAuB,GAAO72B,UAAU,SAAA+0B,GACpDA,QAAEq6B,QAAQ,GAAGk4B,QAChB5zD,aAAaW,QAAQ,QAAS,EAAMtG,YACpC,EAAK64S,YAAYtiN,SAAS,iBAE1B,IAAK+1K,KAAK,4CAKZ,EAAKusC,YAAYtiN,SAAS,gBAAgB,EAAKilN,iBAIjD,EAAK3C,YAAYtiN,SAAS,gBAAgB,EAAKilN,iBAKpD,SAAC9wS,GACA,EAAKq1B,SAAU,EAEd,IAAKusO,KAAK,OADQ,MAAf5hQ,EAAI6uD,OACW,6CAEA7uD,EAAI3H,MAAM66S,aAF+B,SAI5D,EAAK9C,IAAI/1T,mBAWZ,YAAA84T,uBAAA,SAAuBt2L,EAAqBu2L,GAC3C,IAAMvhM,EAAUxuI,KAAKiuU,UAAU71L,SAASoB,GACxC,QAAKhL,GAIUA,EAAQ3F,SAASknM,KAAoBvhM,EAAQoC,OAASpC,EAAQ3O,U,sCA7QlEmwM,GAAc,8G,uBAAdA,EAAc,wCAFf,CAAC,OAAgB,w6CDpB7B,gBACC,cAKE,6CAAwB,OAE3B,OACA,gBAGA,gBAEC,gBACC,oBAGA,gBACC,gBACD,OACA,gBACC,cACC,qCAAwB,cACxB,+BACD,OACD,OAIA,iCACC,iBACC,kBACC,mBACC,kBACC,6BACC,qBAAW,yBAAa,OACxB,oBAIC,gCAAS,EAAAhC,WAAA,KAJV,OASA,8BAGA,8BAGA,8BAKA,8BAKD,OACD,OAEA,kBACC,gBACA,qBAEC,+BAAS,EAAAG,gBAMT,wBACD,OACD,OAED,OACD,OACD,OACD,OAEA,kBACC,kBACC,kBAAwC,S,gBAAuD,OAChG,OACD,OAgCD,OAED,Q,MA3GiD,yCAIzC,uCAWe,yCAGI,sCAaP,kEAGA,mEAGA,mEAKA,iEAaZ,6CAgBoC,qF,qGCtE5C,G,YCpBA,aAQC,WACStmD,EACAooD,EACAntF,EACAgoF,EACAW,GALT,WACS,KAAA5jD,QACA,KAAAooD,oBACA,KAAAntF,cACA,KAAAgoF,cACA,KAAAW,oBAUT,KAAAz5Q,SAAU,EARThyD,KAAK6nR,MAAMugD,YAAYlkU,UAAU,SAAA4lF,GAChC,EAAKomP,eAAiBpmP,EAAOskP,SAC7B,EAAK+B,eAAiBrmP,EAAOsmP,cAE9BpwU,KAAK4V,YAAc,IAAInS,EAAA,E,OAMxB,YAAA+/K,YAAA,WACCxjL,KAAKyrU,kBAAkB9J,UAAU,MACjC3hU,KAAK4V,YAAY/R,OACjB7D,KAAK4V,YAAY9R,YAGlB,YAAAusH,SAAA,eAGKggN,EAHL,OACCz4S,aAAalnB,QAGb1Q,KAAK6nR,MAAM1zO,IAAIjwC,UAAU,SAAAiwC,GAEvBk8R,EADkB,IAAfl8R,EAAIhwC,OACMgwC,EAAI,GAAGg9F,KAEPh9F,EAAI,GAAGg9F,KAAO,IAAMh9F,EAAI,GAAGg9F,OAI1C,IAAMm/L,EAA6B,CAClClC,SAAUrkP,mBAAmB/pF,KAAKmwU,gBAClC9B,SAAUruU,KAAKkwU,eACfp3S,SAAU,IAAYy3S,OAGvBvwU,KAAK8iP,YAAY5qN,MAAMo4S,GAAYpsU,UAAU,WAC5C,EAAK+rU,kBAAkBO,YAAYtsU,UAAU,SAAAusU,GAC5C74S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,mBAC7C94S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,qBAE9C,EAAK5F,YAAYh4R,UAAU5uC,UAAU,WACpC,EAAK4mU,YAAYtiN,SAAS6nN,Q,sCAlDjBM,GAAsB,oD,uBAAtBA,EAAsB,4F,EALnC,G,sBCgCQ,oBACC,iBAAQ,Q,oBAAsC,OAC/C,Q,MADS,sD,sBAQT,oBACC,iBAAQ,Q,oBAAsC,OAC/C,Q,MADS,sD,qCAoBV,iBACC,iBACC,eACA,oBACC,0DAKA,0BACD,OACD,OACD,QCzEP,iBAkBC,WACSV,EACAnD,EACAhqF,EACAvrN,EACAy1S,EACAlC,EACAW,GANA,KAAAwE,oBACA,KAAAnD,KACA,KAAAhqF,cACA,KAAAvrN,SACA,KAAAy1S,WACA,KAAAlC,cACA,KAAAW,oBAlBF,KAAAzmQ,MAAgBtqB,KAAKqR,MAEpB,KAAAiG,SAAU,EAOV,KAAAk7Q,OAAS,CAAEC,gBAAiB,SAAUC,SAAU,GAAIC,eAAe,EAAOC,mBAAmB,GAWpGttU,KAAK4V,YAAc,IAAInS,EAAA,E,OAGxB,YAAA+/K,YAAA,WACCqiC,EAAE,UAAU62E,MAAM,QAClB18R,KAAKyrU,kBAAkB9J,UAAU,MACjC3hU,KAAK4V,YAAY/R,OACjB7D,KAAK4V,YAAY9R,WACjB9D,KAAKgyD,SAAU,GAGhB,YAAAq+D,SAAA,WACCrwH,KAAK4wU,kBAAoB5wU,KAAK8sU,GAAGjyL,MAAM,CACtCg2L,aAAc,CAAC,GAAI,IAAW3C,QAAQ,CAAC,IAAWj7N,YAClDo5N,MAAO,CAAC,GAAI,IAAW6B,QAAQ,CAAC,IAAWj7N,cAE5CjzG,KAAK8tU,cAAgB9tU,KAAKktU,QAG3B,YAAA4D,+BAAA,SAA+Bt3L,EAAqBu2L,GACnD,IAAMvhM,EAAUxuI,KAAK4wU,kBAAkBx4L,SAASoB,GAChD,QAAKhL,GAIUA,EAAQ3F,SAASknM,KAAoBvhM,EAAQoC,OAASpC,EAAQ3O,UAI9E,YAAAkxM,oBAAA,sBACO34L,EAAWp4I,KAAK4wU,kBAAkBx4L,SACxC,IAAIp4I,KAAK4wU,kBAAkBjhN,QAsB3B,OAlBA3vH,KAAKgyD,SAAU,EAQfhyD,KAAK8iP,YAAY5qN,MANkB,CAClCk2S,SAAUh2L,EAASy4L,aAAatvU,MAChC8sU,SAAUj2L,EAASi0L,MAAM9qU,MACzBu3B,SAAU,IAAYk4S,oBAGY9sU,UAAU,WAC5C,EAAK+rU,kBAAkBO,YAAYtsU,UAAU,SAAAusU,GAC5C74S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,mBAC7C94S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,qBAE9C,EAAK5F,YAAYh4R,UAAU5uC,UAAU,WACpC,EAAK4mU,YAAYtiN,gBAIZ,EArBNhsG,OAAOC,KAAK27H,GAAU/kI,QAAQ,SAAAmmI,GAAe,OAAApB,EAASoB,GAAaxG,mBAwBrE,YAAAi+L,QAAA,WACCjxU,KAAKu3B,OAAOiD,cAAc,mBAG3B,YAAA02S,aAAA,SAAal3S,EAAiB+oC,EAAgBl7C,GAC7C7nB,KAAKgtU,SAAS3hP,KAAKrxD,EAAS+oC,EAAQ,CACnCvlB,SAAU,IACV2zR,iBAAkB,SAClBC,mBAAoB,MACpBphT,WAAY,CAACnI,M,sCAtFHwpT,GAA2B,wE,uBAA3BA,EAA2B,+oDDjBxC,gBACC,cAKE,wCAAwB,OAE3B,OAIA,gBAEC,gBACC,cACC,gBACD,OAEA,gBACC,aACC,yCAAwB,cACxB,+BACD,OACD,OAIA,+BACC,iBACC,iBACC,kBACC,kBACC,6BACC,qBAAW,wCAAa,OACxB,oBAOA,8BAGD,OACD,OACA,kBACC,6BACC,qBAAW,sBAAK,OAChB,oBACA,8BAGD,OACD,OAEA,kBACC,kBACC,kBACC,gBACA,qBACC,+BAAS,EAAAN,wBAKT,wBACD,OACD,OACD,OAEA,wBAaD,OACD,OACD,OACD,OACD,OAEA,kBACC,kBACC,kBAA0C,S,gBAAuD,OAClG,OACD,OAGD,OAED,Q,MArE2B,+CAWP,iFASA,0EAqBQ,wBAqBkB,oF,iGClF9C,GCAA,aAQC,WACSlpD,EACAooD,EACAntF,EACAgoF,EACAW,GALT,WACS,KAAA5jD,QACA,KAAAooD,oBACA,KAAAntF,cACA,KAAAgoF,cACA,KAAAW,oBAUT,KAAAz5Q,SAAU,EARThyD,KAAK4V,YAAc,IAAInS,EAAA,EACvBzD,KAAK6nR,MAAMugD,YAAYpkU,KAAK,OAAAC,EAAA,GAAUjE,KAAK4V,cAAc1R,UAAU,SAAA4lF,GAClE,EAAKomP,eAAiBpmP,EAAOskP,SAC7B,EAAK+B,eAAiBrmP,EAAOsmP,c,OAQ/B,YAAA//M,SAAA,eAGKggN,EAHL,OACCz4S,aAAalnB,QAGb1Q,KAAK6nR,MAAM1zO,IAAInwC,KAAK,OAAAC,EAAA,GAAUjE,KAAK4V,cAAc1R,UAAU,SAAAiwC,GAEzDk8R,EADkB,IAAfl8R,EAAIhwC,OACMgwC,EAAI,GAAGg9F,KAEPh9F,EAAI,GAAGg9F,KAAO,IAAMh9F,EAAI,GAAGg9F,OAI1C,IAAMm/L,EAA6B,CAClClC,SAAUrkP,mBAAmB/pF,KAAKmwU,gBAClC9B,SAAUruU,KAAKkwU,eACfp3S,SAAU,IAAYw4S,WAGvBtxU,KAAK8iP,YACH5qN,MAAMo4S,GACNtsU,KAAK,OAAAC,EAAA,GAAUjE,KAAK4V,cACpB1R,UAAU,WACV,EAAK+rU,kBACHO,YACAxsU,KAAK,OAAAC,EAAA,GAAU,EAAK2R,cACpB1R,UAAU,SAAAusU,GACV74S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,mBAC7C94S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,qBAE/C,EAAK5F,YACHh4R,UACA9uC,KAAK,OAAAC,EAAA,GAAU,EAAK2R,cACpB1R,UAAU,WACV,EAAK4mU,YAAYtiN,SAAS6nN,QAK/B,YAAA7sJ,YAAA,WACCxjL,KAAKyrU,kBAAkB9J,UAAU,MACjC3hU,KAAK4V,YAAY/R,OACjB7D,KAAK4V,YAAY9R,Y,sCA9DNytU,GAAmB,oD,uBAAnBA,EAAmB,yF,EALhC,GCmBMC,EAAiB,CACtB,CACCrgM,KAAM,GACNlyH,UAAW,EACXnX,SAAU,CACT,CACCqpI,KAAM,QACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,wBACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,iBACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,kBACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,sBACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,2BACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,cACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,kBACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,uBACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,WAEpC,CACC7tC,KAAM,GACNlyH,UAAW,EACXnP,KAAM,CAAEu4T,UAAWl9S,OAAOmP,SAAS0kJ,cAMvC,2B,OAuCQ,EAAAyyJ,QAAP,WACC,MAAO,CACN1yN,SAAU2yN,EACVv/S,UAAW,CAAC,IAAa,EAAc,O,sCAJ7Bu/S,I,uBAAAA,I,4BAtBD,CACV,IACA,CACCnvU,QAAS,IACToW,SAAU,IACV+Q,OAAO,IAER,SAtBQ,CACR,IACA,IACA,IACA,IACA,IAAaioT,SAASH,GAEtB,IACA,IACA,IACA,IAAgBG,WAChB,IAAYC,WAAW,OAAQ9yJ,EAAA,GAC/B,IAAc8yJ,WAAW,CAAC,MAC1B,Q,EAdF,I,oqBCvDA,IAAMnyU,EAAM,CAAC,gBAAiB,IACxBC,EAAM,CAAC,KACb,SAASmyU,EAA+BlwU,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC3D,IAAMmwU,EAAM,OACZ,KAAsB,EAAG,MAAO,GAChC,KAAkB,UAAW,SAA+DhgT,GAA4E,OAAlE,KAAqBggT,GAAqB,OAAsC9/S,eAAeF,IAArM,CAAiN,QAAS,WAAmI,OAAlE,KAAqBggT,GAAqB,OAAsCtqT,OAAOtF,KAAK,UAAvX,CAAoY,uBAAwB,SAAqF4P,GAA4E,OAAlE,KAAqBggT,GAAqB,OAAsCtuS,kBAAkB1R,IAA7lB,CAAymB,sBAAuB,SAAoFA,GAA4E,OAAlE,KAAqBggT,GAAqB,OAAsCruS,iBAAiB3R,KAC/zB,KAAsB,EAAG,MAAO,GAChC,KAAoB,GACpB,OACA,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAkB,KAAMA,EAAO8rT,QAA/B,CAAwC,UAAW9rT,EAAOC,WAA1D,CAAsE,iBAAkBD,EAAO+rT,sBAC/F,KAAmB,aAAc/rT,EAAOE,WAAa,KAArD,CAA2D,kBAAmBF,EAAOuC,gBAAkB,KAAvG,CAA6G,mBAAoBvC,EAAOitR,iBAAmB,OAE/J,IAAM++B,EAAoB,CAStBC,cAAe,YAAQ,gBAAiB,CACpC,YAAM,OAAQ,YAAM,CAChBxwS,QAAS,EACTC,UAAW,gBAEf,YAAW,gBAAiB,YAAQ,mCAAoC,YAAM,CAC1ED,QAAS,EACTC,UAAW,eAEf,YAAW,YAAa,YAAQ,oBAAqB,YAAM,CAAED,QAAS,QAM1EywS,YAAa,YAAQ,cAAe,CAGhC,YAAM,UAAW,YAAM,CAAEzwS,QAAS,KAClC,YAAW,YAAa,CACpB,YAAM,CAAEA,QAAS,IACjB,YAAQ,qDA6Bd0wS,EAAmB,IAAI,IAAe,kBA2ItCC,EAAiB,IAAI,IAAe,kBAWpCC,E,+CAEAC,EAAwB,YAAmB,YAAcD,I,iBAIzDE,E,YACF,WAAYzlU,EAKZG,EAAW60B,EAAe0wS,GAAW,kCAEjC,aACK1lU,YAAcA,EACnB,EAAKg1B,cAAgBA,EACrB,EAAK0wS,YAAcA,EAEnB,EAAKzlU,KAAO,WAEZ,EAAK0lU,SAAW,IAAI,IAEpB,EAAKC,SAAW,IAAI,IAEpB,EAAKC,cAAe,EAEpB,EAAKC,kBAAmB,EACpBJ,GAAeA,EAAYj4K,SAC3Bi4K,EAAYj4K,QAAZ,GAjB6B,E,0DAqBrC,SAAM1nD,EAAQ9qF,GACNhoB,KAAK+hC,eAAiB+wE,EACtB9yG,KAAK+hC,cAAcgB,SAAS/iC,KAAKsxB,kBAAmBwhF,EAAQ9qF,GAG5DhoB,KAAKsxB,kBAAkBxC,MAAM9G,GAEjChoB,KAAK2yU,SAAS9uU,KAAK7D,Q,6BAEvB,WACQA,KAAK+hC,eAIL/hC,KAAK+hC,cAAc2wE,QAAQ1yG,KAAK+M,aAAa,K,yBAGrD,WACQ/M,KAAK+hC,eACL/hC,KAAK+hC,cAAc8wE,eAAe7yG,KAAK+M,aAEvC/M,KAAKyyU,aAAezyU,KAAKyyU,YAAYj3K,YACrCx7J,KAAKyyU,YAAYj3K,WAAWx7J,MAEhCA,KAAK0yU,SAAS5uU,WACd9D,KAAK2yU,SAAS7uU,a,0BAGlB,WACI,OAAO9D,KAAKgtB,SAAW,KAAO,M,6BAGlC,WACI,OAAOhtB,KAAK+M,YAAYnK,gB,4BAQ5B,SAAe0lB,GACPtoB,KAAKgtB,WACL1E,EAAM4E,iBACN5E,EAAMsH,qB,+BASd,WACI5vB,KAAK0yU,SAAS7uU,KAAK7D,Q,sBAGvB,WAKI,IAJA,IAAI2K,EAAIC,EACFg5I,EAAQ5jJ,KAAK+M,YAAYnK,cAAcihJ,WAAU,GACjDu3I,EAAQx3I,EAAM73C,iBAAiB,6BAE5BlkG,EAAI,EAAGA,EAAIuzR,EAAMj3R,OAAQ0D,IAAK,CACnC,IAAMktR,EAAOqG,EAAMvzR,GACQ,QAA1B8C,EAAKoqR,EAAKr0Q,kBAA+B,IAAP/V,GAAyBA,EAAG8W,YAAYszQ,GAE/E,OAAqC,QAA5BnqR,EAAKg5I,EAAMpwC,mBAAgC,IAAP5oG,OAAgB,EAASA,EAAGkS,SAAW,O,CA7FlEy1T,G,OAgG1BC,EAAYjyU,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKgyU,GAAa,KAAyB,KAAoB,KAAyB,KAAW,KAAyB,KAAsB,KAAyBH,EAAgB,KAC5PG,EAAYrsU,UAAO,KAAyB,CAAEzF,KAAM8xU,EAAa7xU,UAAW,CAAC,CAAC,GAAI,gBAAiB,KAAMoC,UAAW,CAAC,EAAG,uBAAwBwV,SAAU,GAAIC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,GACrN,KAAkB,QAAS,SAA8CmwB,GAAU,OAAOlwB,EAAIkxU,eAAehhT,IAA7G,CAAyH,aAAc,WAAuD,OAAOlwB,EAAImxU,sBAClM,EAALpxU,IACF,KAAmB,OAAQC,EAAIoL,KAA/B,CAAqC,WAAYpL,EAAIijM,eAArD,CAAqE,gBAAiBjjM,EAAIorB,SAASiF,WAAnG,CAA+G,WAAYrwB,EAAIorB,UAAY,MAC3I,KAAmB,iBAAiB,EAApC,CAA0C,4BAA6BprB,EAAIgxU,aAA3E,CAAyF,gCAAiChxU,EAAIixU,oBAC7H1wU,OAAQ,CAAE6qB,SAAU,WAAYjE,cAAe,gBAAiB/b,KAAM,QAAU0L,SAAU,CAAC,eAAgBpW,SAAU,CAAC,MAAoC2uH,MAAOxxH,EAAKoZ,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,YAAa,GAAI,EAAG,kBAAmB,EAAG,oBAAqB,qBAAsBhG,SAAU,SAA8BqB,EAAIC,GAAgB,EAALD,IACzW,OACA,KAAoB,GACpB,KAAiB,EAAG,MAAO,IACpB,EAALA,IACF,KAAiB,GACjB,KAAkB,oBAAqBC,EAAImnB,eAAiBnnB,EAAIorB,SAAhE,CAA0E,mBAAoBprB,EAAI0vB,qBACjG/qB,WAAY,CAAC,KAAmBC,cAAe,EAAGwiB,gBAAiB,I,KAwEtEgqT,EAA2B,IAAI,IAAe,2BAA4B,CAC5EpsT,WAAY,OACZ9hB,QAGJ,WACI,MAAO,CACHmuU,gBAAgB,EAChBC,UAAW,QACXC,UAAW,QACXnyS,cAAe,uCAQnBoyS,EAAe,E,iBAEbC,E,8BACF,WAAYtmU,EAAazJ,EAASwiC,GAAe,oBAC7C9lC,KAAK+M,YAAcA,EACnB/M,KAAKsD,QAAUA,EACftD,KAAK8lC,gBAAkBA,EACvB9lC,KAAKszU,WAAatzU,KAAK8lC,gBAAgBotS,UACvClzU,KAAKuzU,WAAavzU,KAAK8lC,gBAAgBqtS,UAEvCnzU,KAAKwzU,uBAAyB,IAAI,IAElCxzU,KAAKyzU,iBAAmB,IAAavsT,MAErClnB,KAAKkmB,WAAa,GAElBlmB,KAAKgyU,qBAAuB,OAE5BhyU,KAAKu3S,eAAiB,IAAI,IAE1Bv3S,KAAKiwB,kBAAoBjwB,KAAK8lC,gBAAgB7V,mBAAqB,GAEnEjwB,KAAKghC,cAAgBhhC,KAAK8lC,gBAAgB9E,cAC1ChhC,KAAK0zU,gBAAkB1zU,KAAK8lC,gBAAgBmtS,eAC5CjzU,KAAK2zU,aAAe3zU,KAAK8lC,gBAAgB/E,YAEzC/gC,KAAKwnB,OAAS,IAAI,IAMlBxnB,KAAKslC,MAAQtlC,KAAKwnB,OAClBxnB,KAAK+xU,QAAL,yBAAiCqB,M,sBAGrC,WAAkB,OAAOpzU,KAAKszU,Y,IAC9B,SAAc/xU,GAKVvB,KAAKszU,WAAa/xU,EAClBvB,KAAK4zU,uB,qBAGT,WAAkB,OAAO5zU,KAAKuzU,Y,IAC9B,SAAchyU,GAIVvB,KAAKuzU,WAAahyU,EAClBvB,KAAK4zU,uB,0BAGT,WAAuB,OAAO5zU,KAAK0zU,iB,IACnC,SAAmBnyU,GACfvB,KAAK0zU,gBAAkB,YAAsBnyU,K,uBAGjD,WAAoB,OAAOvB,KAAK2zU,c,IAChC,SAAgBpyU,GACZvB,KAAK2zU,aAAe,YAAsBpyU,K,sBAQ9C,SAAe0jC,GAAO,WACZ4uS,EAAqB7zU,KAAK8zU,oBAC5BD,GAAsBA,EAAmB1vU,QACzC0vU,EAAmBtxT,MAAM,KAAKlP,QAAQ,SAACwU,GACnC,EAAK3B,WAAW2B,IAAa,IAGrC7nB,KAAK8zU,oBAAsB7uS,EACvBA,GAAWA,EAAQ9gC,SACnB8gC,EAAQ1iB,MAAM,KAAKlP,QAAQ,SAACwU,GACxB,EAAK3B,WAAW2B,IAAa,IAEjC7nB,KAAK+M,YAAYnK,cAAcilB,UAAY,M,qBAUnD,WAAkB,OAAO7nB,KAAKgwB,Y,IAC9B,SAAciV,GAAWjlC,KAAKgwB,WAAaiV,I,sBAC3C,WACIjlC,KAAK4zU,uB,gCAET,WAAkB,WACd5zU,KAAK+zU,2BACL/zU,KAAK+nB,YAAc,IAAI,IAAgB/nB,KAAKwzU,wBACvCvrT,WACA+rT,gBACAtvK,iBACL1kK,KAAKyzU,iBAAmBzzU,KAAK+nB,YAAYkE,OAAO/nB,UAAU,kBAAM,EAAKsjB,OAAOtF,KAAK,SAIjFliB,KAAKwzU,uBAAuBvuU,QAAQjB,KAAK,YAAUhE,KAAKwzU,wBAAyB,YAAU,SAAAt7T,GAAK,OAAI,IAAK,WAAL,cAASA,EAAMzO,IAAI,SAAC6H,GAAD,OAAUA,EAAKqhU,gBAAazuU,UAAU,SAAA+vU,GAAW,OAAI,EAAKlsT,YAAY48I,iBAAiBsvK,O,yBAElN,WACIj0U,KAAKwzU,uBAAuBtyT,UAC5BlhB,KAAKyzU,iBAAiB79T,cACtB5V,KAAKwnB,OAAO1jB,a,sBAGhB,WAGI,OADoB9D,KAAKwzU,uBAAuBvuU,QAC7BjB,KAAK,YAAUhE,KAAKwzU,wBAAyB,YAAU,SAAAt7T,GAAK,OAAI,IAAK,WAAL,cAASA,EAAMzO,IAAI,SAAC6H,GAAD,OAAUA,EAAKohU,kB,qBAQzH,SAAQwB,M,wBAOR,SAAWA,M,4BAEX,SAAe5rT,GACX,IAAM2E,EAAU3E,EAAM2E,QAChBknT,EAAUn0U,KAAK+nB,YACrB,OAAQkF,GACJ,KAAK,IACI,YAAe3E,KAChBA,EAAM4E,iBACNltB,KAAKwnB,OAAOtF,KAAK,YAErB,MACJ,KAAK,IACGliB,KAAKo0U,YAAiC,QAAnBp0U,KAAKgH,WACxBhH,KAAKwnB,OAAOtF,KAAK,WAErB,MACJ,KAAK,IACGliB,KAAKo0U,YAAiC,QAAnBp0U,KAAKgH,WACxBhH,KAAKwnB,OAAOtF,KAAK,WAErB,MACJ,QACQ+K,IAAY,KAAYA,IAAY,KACpCknT,EAAQE,eAAe,YAE3BF,EAAQ3mT,UAAUlF,M,4BAO9B,WAAiC,WAAlBwqF,EAAkB,uDAAT,UAEhB9yG,KAAKs0U,YACLt0U,KAAKsD,QAAQoB,SACRV,KAAK,YAAK,IACVE,UAAU,kBAAM,EAAKqwU,gBAAgBzhO,KAG1C9yG,KAAKu0U,gBAAgBzhO,K,6BAO7B,SAAgBA,GACZ,IAAMqhO,EAAUn0U,KAAK+nB,YAKrB,GAJAosT,EAAQE,eAAevhO,GAAQ9hF,sBAI1BmjT,EAAQ/nT,YAAcpsB,KAAKwzU,uBAAuBrvU,OAMnD,IALA,IAAIkH,EAAUrL,KAAKwzU,uBAAuBxxU,MAAMsvB,kBAAkBsX,cAK3Dv9B,GAAS,CACZ,GAAqC,SAAjCA,EAAQ29B,aAAa,QAAoB,CACzC39B,EAAQyjB,QACR,MAGAzjB,EAAUA,EAAQu9B,iB,6BASlC,WACI5oC,KAAK+nB,YAAYkJ,eAAe,K,0BAMpC,SAAaorN,GAGT,IAAMm4F,EAAYj2T,KAAKG,IA3NC,EA2N6B29N,EAAO,IACtDo4F,EAAe,kBAAH,OAAqBD,GACjCE,EAAkBl4T,OAAOC,KAAKzc,KAAKkmB,YAAY7gB,KAAK,SAAAuqC,GAAC,OAAIA,EAAE6nH,WAAW,qBACvEi9K,GAAmBA,IAAoB10U,KAAK20U,qBACzC30U,KAAK20U,qBACL30U,KAAKkmB,WAAWlmB,KAAK20U,qBAAsB,GAE/C30U,KAAKkmB,WAAWuuT,IAAgB,EAChCz0U,KAAK20U,mBAAqBF,K,gCAUlC,WAA+D,IAA5CG,EAA4C,uDAArC50U,KAAKkzU,UAAW2B,EAAqB,uDAAd70U,KAAKmzU,UAC5CluS,EAAUjlC,KAAKkmB,WACrB+e,EAAQ,mBAA8B,WAAT2vS,EAC7B3vS,EAAQ,kBAA6B,UAAT2vS,EAC5B3vS,EAAQ,kBAA6B,UAAT4vS,EAC5B5vS,EAAQ,kBAA6B,UAAT4vS,I,6BAGhC,WAEI70U,KAAKgyU,qBAAuB,U,6BAGhC,WAEIhyU,KAAKgyU,qBAAuB,S,8BAGhC,SAAiB1pT,GACbtoB,KAAKu3S,eAAe1zS,KAAKykB,GACzBtoB,KAAK80U,cAAe,I,+BAExB,SAAkBxsT,GACdtoB,KAAK80U,cAAe,EAOE,UAAlBxsT,EAAM6a,SAA4D,IAArCnjC,KAAK+nB,YAAY6F,kBAC9CtF,EAAMjd,QAAQ+c,UAAY,K,sCASlC,WAAwB,WACpBpoB,KAAK+0U,UAAU9vU,QACVjB,KAAK,YAAUhE,KAAK+0U,YACpB7wU,UAAU,SAACgU,GACZ,EAAKs7T,uBAAuBx2M,MAAM9kH,EAAM/C,OAAO,SAAA7D,GAAI,OAAIA,EAAKmhU,cAAgB,KAC5E,EAAKe,uBAAuB/uK,wB,UAIxC4uK,EAAa9yU,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK6yU,GAAc,KAAyB,KAAoB,KAAyB,KAAgB,KAAyBL,KACrMK,EAAa5yU,UAAO,KAAyB,CAAEC,KAAM2yU,EAAc3xU,eAAgB,SAAqCC,EAAIC,EAAKC,GAKzH,IAAIC,EAL0I,EAALH,IACzI,KAAsBE,EAAUuwU,EAAkB,GAClD,KAAsBvwU,EAAU2wU,EAAa,GAC7C,KAAsB3wU,EAAU2wU,EAAa,IACtC,EAAL7wU,IAEF,KAAsBG,EAAK,UAA0BF,EAAI0yU,YAAcxyU,EAAGE,OAC1E,KAAsBF,EAAK,UAA0BF,EAAImzU,UAAYjzU,GACrE,KAAsBA,EAAK,UAA0BF,EAAIsW,MAAQpW,KAChEwW,UAAW,SAA4B3W,EAAIC,GAG5C,IAAIE,EAHwD,EAALH,GACvD,KAAmB,IAAa,GACzB,EAALA,GAEF,KAAsBG,EAAK,UAA0BF,EAAIgF,YAAc9E,EAAGE,QACzEG,OAAQ,CAAE6+B,cAAe,gBAAiBkyS,UAAW,YAAaC,UAAW,YAAaF,eAAgB,iBAAkBlyS,YAAa,cAAe/Q,WAAY,CAAC,QAAS,cAAertB,UAAW,YAAawjB,UAAW,CAAC,aAAc,aAAcqC,eAAgB,CAAC,kBAAmB,kBAAmB0qR,gBAAiB,CAAC,mBAAoB,oBAAsB/wR,QAAS,CAAEqF,OAAQ,SAAU8d,MAAO,W,sBAuEvZ0vS,E,YACF,WAAYtyU,EAAY4/H,EAAQx7F,GAAc,qCACpCpkC,EAAY4/H,EAAQx7F,I,wCAFZusS,G,OAKtB2B,EAAQz0U,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKw0U,GAAS,KAAyB,KAAoB,KAAyB,KAAgB,KAAyBhC,KACtLgC,EAAQ7uU,UAAO,KAAyB,CAAEzF,KAAMs0U,EAASr0U,UAAW,CAAC,CAAC,aAAc4X,SAAU,EAAGC,aAAc,SAA8B7W,EAAIC,GAAgB,EAALD,GACpJ,KAAmB,aAAc,KAAjC,CAAuC,kBAAmB,KAA1D,CAAgE,mBAAoB,OACnF+W,SAAU,CAAC,WAAYpW,SAAU,CAAC,KAA0B,CACzD,CAAEC,QAAS8vU,EAAgB7vU,YAAawyU,KACxC,MAAoCn8T,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,WAAY,KAAM,OAAQ,OAAQ,EAAG,iBAAkB,EAAG,KAAM,UAAW,UAAW,SAAU,CAAC,EAAG,qBAAsBhG,SAAU,SAA0BqB,EAAIC,GAAgB,EAALD,IAC3Q,OACA,KAAkB,EAAGkwU,EAAgC,EAAG,EAAG,iBAC1DtrU,WAAY,CAAC,KAAiBuS,OAAQ,CAAC,g7DAAm7DtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAC5/DsuS,EAAkBC,cAClBD,EAAkBE,cACjBnpT,gBAAiB,I,KAyCxBisT,EAA2B,IAAI,IAAe,4BAM9CC,EAA4C,CAC9C3yU,QAAS0yU,EACT9rT,KAAM,CAAC,KACPC,WAPJ,SAA0CC,GACtC,OAAO,kBAAMA,EAAQC,iBAAiBC,gBAWpCg7H,EAA8B,YAAgC,CAAEC,SAAS,I,iBAGzE2wL,E,8BACF,WAAYtrT,EAAUD,EAAUhI,EAAmBmI,EAAgBqqT,EAGnEgB,EAAmBnoU,EAGnB80B,GAAa,+BACT/hC,KAAK6pB,SAAWA,EAChB7pB,KAAK4pB,SAAWA,EAChB5pB,KAAK4hB,kBAAoBA,EACzB5hB,KAAKo1U,kBAAoBA,EACzBp1U,KAAKiN,KAAOA,EACZjN,KAAK+hC,cAAgBA,EACrB/hC,KAAKyrB,YAAc,KACnBzrB,KAAKq1U,WAAY,EACjBr1U,KAAKgsB,4BAA8B,IAAa9E,MAChDlnB,KAAKs1U,mBAAqB,IAAapuT,MACvClnB,KAAKu1U,uBAAyB,IAAaruT,MAK3ClnB,KAAKw1U,kBAAoB,SAACltT,GACjB,YAAiCA,KAClC,EAAKmtT,UAAY,UAKzBz1U,KAAKy1U,eAAYhxU,EAMjBzE,KAAKshC,cAAe,EAEpBthC,KAAK01U,WAAa,IAAI,IAOtB11U,KAAK21U,WAAa31U,KAAK01U,WAEvB11U,KAAK41U,WAAa,IAAI,IAOtB51U,KAAK61U,YAAc71U,KAAK41U,WACxB51U,KAAKkrB,gBAAkBnB,EACvB/pB,KAAK81U,oBAAsB1B,aAAsBf,EAAee,OAAa3vU,EAC7EmlB,EAAShnB,cAAc0oB,iBAAiB,aAActrB,KAAKw1U,kBAAmBjxL,GAC1E6wL,IACAA,EAAkBvC,iBAAmB7yU,KAAK+1U,oB,yCAOlD,WAAqC,OAAO/1U,KAAK4yC,M,IACjD,SAAiC3yC,GAC7BD,KAAK4yC,KAAO3yC,I,gBAGhB,WAAa,OAAOD,KAAKyyH,O,IACzB,SAAS7/E,GAAI,WACLA,IAAS5yC,KAAKyyH,QAGlBzyH,KAAKyyH,MAAQ7/E,EACb5yC,KAAKu1U,uBAAuB3/T,cACxBg9B,IAIA5yC,KAAKu1U,uBAAyB3iS,EAAKtN,MAAMphC,UAAU,SAACixH,GAChD,EAAK6gN,aAAa7gN,GAEF,UAAXA,GAAiC,QAAXA,IAAqB,EAAK2gN,qBACjD,EAAKA,oBAAoBtuT,OAAOtF,KAAKizG,S,gCAKrD,WACIn1H,KAAKi2U,aACLj2U,KAAKk2U,iB,yBAET,WACQl2U,KAAKyrB,cACLzrB,KAAKyrB,YAAYgD,UACjBzuB,KAAKyrB,YAAc,MAEvBzrB,KAAK4pB,SAAShnB,cAAc+oB,oBAAoB,aAAc3rB,KAAKw1U,kBAAmBjxL,GACtFvkJ,KAAKu1U,uBAAuB3/T,cAC5B5V,KAAKgsB,4BAA4BpW,cACjC5V,KAAKs1U,mBAAmB1/T,gB,oBAG5B,WACI,OAAO5V,KAAKq1U,Y,eAGhB,WACI,OAAOr1U,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,MAAkB,MAAQ,Q,6BAG5D,WACI,SAAUvB,KAAKo1U,oBAAqBp1U,KAAK81U,uB,wBAG7C,WACI,OAAO91U,KAAKq1U,UAAYr1U,KAAKm2U,YAAcn2U,KAAKo2U,a,sBAGpD,WAAQ,WACJ,IAAIp2U,KAAKq1U,UAAT,CAGAr1U,KAAKi2U,aACL,IAAM9mT,EAAanvB,KAAKknC,iBAClBU,EAAgBzY,EAAWiW,YACjCplC,KAAKq2U,aAAazuS,EAAc9X,kBAChC8X,EAAc7G,YAAuC,MAAzB/gC,KAAK4yC,KAAK7R,aAAuB/gC,KAAK+1U,kBAC9D/1U,KAAK4yC,KAAK7R,YACd5R,EAAWrQ,OAAO9e,KAAKs2U,cACnBt2U,KAAK4yC,KAAK0hS,aACVt0U,KAAK4yC,KAAK0hS,YAAYx1T,OAAO9e,KAAKu2U,UAEtCv2U,KAAKgsB,4BAA8BhsB,KAAKw2U,sBAAsBtyU,UAAU,kBAAM,EAAKiyU,cACnFn2U,KAAKy2U,YACDz2U,KAAK4yC,gBAAgBygS,GACrBrzU,KAAK4yC,KAAK8jS,qB,uBAIlB,WACI12U,KAAK4yC,KAAKtN,MAAMpjB,S,mBAMpB,SAAM4wF,EAAQ9qF,GACNhoB,KAAK+hC,eAAiB+wE,EACtB9yG,KAAK+hC,cAAcgB,SAAS/iC,KAAK4pB,SAAUkpF,EAAQ9qF,GAGnDhoB,KAAK4pB,SAAShnB,cAAcksB,MAAM9G,K,0BAI1C,SAAamtG,GAAM,WACf,GAAKn1H,KAAKyrB,aAAgBzrB,KAAK22U,SAA/B,CAGA,IAAM/jS,EAAO5yC,KAAK4yC,KAClB5yC,KAAKgsB,4BAA4BpW,cACjC5V,KAAKyrB,YAAY1M,UAKb/e,KAAKshC,cAA4B,YAAX6zF,GAAyBn1H,KAAKy1U,WAAcz1U,KAAK+1U,mBACvE/1U,KAAK8uB,MAAM9uB,KAAKy1U,WAEpBz1U,KAAKy1U,eAAYhxU,EACbmuC,aAAgBygS,GAChBzgS,EAAKgkS,kBACDhkS,EAAK0hS,YAEL1hS,EAAK2kQ,eACAvzS,KAAK,YAAO,SAAAskB,GAAK,MAAsB,SAAlBA,EAAM6a,UAAqB,YAAK,GAE1D,YAAUyP,EAAK0hS,YAAYuC,YACtB3yU,UAAU,CACXL,KAAM,kBAAM+uC,EAAK0hS,YAAYv1T,UAE7Bjb,SAAU,kBAAM,EAAKgzU,gBAAe,MAIxC92U,KAAK82U,gBAAe,KAIxB92U,KAAK82U,gBAAe,GAChBlkS,EAAK0hS,aACL1hS,EAAK0hS,YAAYv1T,a,uBAQ7B,WACI/e,KAAK4yC,KAAKwhS,WAAap0U,KAAK+1U,kBAAoB/1U,KAAK81U,yBAAsBrxU,EAC3EzE,KAAK4yC,KAAK5rC,UAAYhH,KAAKsL,IAC3BtL,KAAK+2U,oBACL/2U,KAAK4yC,KAAKokS,eAAeh3U,KAAKy1U,WAAa,WAC3Cz1U,KAAK82U,gBAAe,K,+BAGxB,WACI,GAAI92U,KAAK4yC,KAAKqkS,aAAc,CAGxB,IAFA,IAAI56F,EAAQ,EACR+3F,EAAap0U,KAAK4yC,KAAKwhS,WACpBA,GACH/3F,IACA+3F,EAAaA,EAAWA,WAE5Bp0U,KAAK4yC,KAAKqkS,aAAa56F,M,4BAI/B,SAAe9sH,GACXvvH,KAAKq1U,UAAY9lN,EACjBvvH,KAAKq1U,UAAYr1U,KAAK01U,WAAWxzT,OAASliB,KAAK41U,WAAW1zT,OACtDliB,KAAK+1U,oBACL/1U,KAAKo1U,kBAAkBxC,aAAerjN,K,wBAO9C,c,4BASA,WACI,IAAKvvH,KAAKyrB,YAAa,CACnB,IAAM2M,EAASp4B,KAAK0vB,oBACpB1vB,KAAKk3U,sBAAsB9+S,EAAOtI,kBAClC9vB,KAAKyrB,YAAczrB,KAAK6pB,SAASvkB,OAAO8yB,GAIxCp4B,KAAKyrB,YAAYkE,gBAAgBzrB,YAErC,OAAOlE,KAAKyrB,c,+BAMhB,WACI,OAAO,IAAI,IAAc,CACrBqE,iBAAkB9vB,KAAK6pB,SAAS7f,WAC3BmmB,oBAAoBnwB,KAAK4pB,UACzButT,qBACAC,oBACA5hC,sBAAsB,wCAC3Bx0Q,cAAehhC,KAAK4yC,KAAK5R,eAAiB,mCAC1ChR,WAAYhwB,KAAK4yC,KAAK3iB,kBACtBlG,eAAgB/pB,KAAKkrB,kBACrBlkB,UAAWhH,KAAKiN,S,mCAQxB,SAAsBjD,GAAQ,WACtBhK,KAAK4yC,KAAKghS,oBACV5pU,EAAS2rS,gBAAgBzxS,UAAU,SAAA6L,GAG/B,EAAK6iC,KAAKghS,mBAFsC,UAAnC7jU,EAAOsnU,eAAe5mT,SAAuB,QAAU,SACpB,QAAnC1gB,EAAOsnU,eAAe3mT,SAAqB,QAAU,a,0BAU9E,SAAaZ,GACT,MAAyD,WAAxB9vB,KAAK4yC,KAAKsgS,UAAyB,CAAC,MAAO,SAAW,CAAC,QAAS,OAAjG,mBAAK3iT,EAAL,KAAc+mT,EAAd,KACA,EAA2D,UAAxBt3U,KAAK4yC,KAAKugS,UAAwB,CAAC,SAAU,OAAS,CAAC,MAAO,UAAjG,mBAAKziT,EAAL,KAAe6mT,EAAf,KACK/mT,EAA6BE,EAApB8mT,EAA8BD,EACvC9mT,EAA+BF,EAArBknT,EAA8BH,EACzCj2I,EAAU,EACVrhM,KAAK+1U,mBAGL0B,EAAmBlnT,EAAkC,WAAxBvwB,KAAK4yC,KAAKsgS,UAAyB,QAAU,MAC1EoE,EAAkB7mT,EAAuB,QAAZF,EAAoB,QAAU,MAC3D8wK,EAAuB,WAAb3wK,EAnTS,MAqTb1wB,KAAK4yC,KAAKqgS,iBAChBziT,EAAuB,QAAbE,EAAqB,SAAW,MAC1C8mT,EAAuC,QAArBD,EAA6B,SAAW,OAE9DznT,EAAiBe,cAAc,CAC3B,CAAEN,UAASC,UAASC,WAAUC,WAAU2wK,WACxC,CAAE9wK,QAAS+mT,EAAiB9mT,UAASC,SAAUgnT,EAAkB/mT,WAAU2wK,WAC3E,CACI9wK,UACAC,QAASgnT,EACT/mT,WACAC,SAAU6mT,EACVl2I,SAAUA,GAEd,CACI9wK,QAAS+mT,EACT9mT,QAASgnT,EACT/mT,SAAUgnT,EACV/mT,SAAU6mT,EACVl2I,SAAUA,O,iCAKtB,WAAmB,WACTptE,EAAWj0H,KAAKyrB,YAAY+Y,gBAC5BrY,EAAcnsB,KAAKyrB,YAAYU,cAC/BurT,EAAc13U,KAAK81U,oBAAsB91U,KAAK81U,oBAAoBtuT,OAAS,cAC3E40G,EAAQp8H,KAAK81U,oBAAsB91U,KAAK81U,oBAAoBpD,WAAW1uU,KAAK,YAAO,SAAA8X,GAAM,OAAIA,IAAW,EAAKs5T,oBAAoB,YAAO,kBAAM,EAAKC,aAAc,cACvK,OAAO,YAAMphN,EAAUyjN,EAAat7M,EAAOjwG,K,8BAG/C,SAAiB7D,GACR,YAAgCA,KAGjCtoB,KAAKy1U,UAA6B,IAAjBntT,EAAMi3D,OAAe,aAAU96E,EAI5CzE,KAAK+1U,mBACLztT,EAAM4E,oB,4BAKlB,SAAe5E,GACX,IAAM2E,EAAU3E,EAAM2E,QAElBA,IAAY,KAASA,IAAY,MACjCjtB,KAAKy1U,UAAY,YAEjBz1U,KAAK+1U,oBAAuB9oT,IAAY,KAA4B,QAAbjtB,KAAKsL,KAC3D2hB,IAAY,KAA2B,QAAbjtB,KAAKsL,OAChCtL,KAAKy1U,UAAY,WACjBz1U,KAAKo2U,c,0BAIb,SAAa9tT,GACLtoB,KAAK+1U,mBAELztT,EAAMsH,kBACN5vB,KAAKo2U,YAGLp2U,KAAK23U,e,0BAIb,WAAY,WAEH33U,KAAK+1U,mBAAsB/1U,KAAK81U,sBAGrC91U,KAAKs1U,mBAAqBt1U,KAAK81U,oBAAoBpD,WAI9C1uU,KAAK,YAAO,SAAA8X,GAAM,OAAIA,IAAW,EAAKs5T,oBAAsBt5T,EAAOkR,WAAW,YAAM,EAAG,MACvF9oB,UAAU,WACX,EAAKuxU,UAAY,QAIb,EAAK7iS,gBAAgBygS,GAAgB,EAAKzgS,KAAKkiS,aAG/C,EAAKliS,KAAK2kQ,eACLvzS,KAAK,YAAK,GAAI,YAAM,EAAG,KAAgB,YAAU,EAAK8xU,oBAAoBpD,aAC1ExuU,UAAU,kBAAM,EAAKkyU,aAG1B,EAAKA,gB,wBAKjB,WAOI,OAHKp2U,KAAKwvB,SAAWxvB,KAAKwvB,QAAQ5oB,cAAgB5G,KAAK4yC,KAAKhsC,cACxD5G,KAAKwvB,QAAU,IAAI,IAAexvB,KAAK4yC,KAAKhsC,YAAa5G,KAAK4hB,oBAE3D5hB,KAAKwvB,Y,UAGpB2lT,EAAe50U,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK20U,GAAgB,KAAyB,KAAiB,KAAyB,KAAoB,KAAyB,KAA0B,KAAyBF,GAA2B,KAAyB5C,EAAgB,GAAI,KAAyBG,EAAa,IAAK,KAAyB,IAAuB,GAAI,KAAyB,OAC/b2C,EAAe10U,UAAO,KAAyB,CAAEC,KAAMy0U,EAAgBx0U,UAAW,CAAC,CAAC,GAAI,uBAAwB,IAAK,CAAC,GAAI,oBAAqB,KAAMoC,UAAW,CAAC,gBAAiB,OAAQ,EAAG,oBAAqBwV,SAAU,EAAGC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,GACzR,KAAkB,YAAa,SAAqDmwB,GAAU,OAAOlwB,EAAIg2U,iBAAiB9lT,IAA1H,CAAsI,UAAW,SAAmDA,GAAU,OAAOlwB,EAAIowB,eAAeF,IAAxO,CAAoP,QAAS,SAAiDA,GAAU,OAAOlwB,EAAIkwK,aAAahgJ,KACzU,EAALnwB,GACF,KAAmB,gBAAiBC,EAAI+0U,UAAY,KAApD,CAA0D,gBAAiB/0U,EAAI+0U,SAAW/0U,EAAIgxC,KAAKm/R,QAAU,OAC5G5vU,OAAQ,CAAEm/B,aAAc,CAAC,6BAA8B,gBAAiBu2S,6BAA8B,CAAC,uBAAwB,gCAAiCjlS,KAAM,CAAC,oBAAqB,QAAS2jS,SAAU,CAAC,qBAAsB,aAAep0T,QAAS,CAAEuzT,WAAY,aAAcC,WAAY,aAAcC,WAAY,aAAcC,YAAa,eAAiBn9T,SAAU,CAAC,oB,sBAmF1Xo/T,E,sDAENA,EAAyBv3U,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAKs3U,IAChGA,EAAyB5+T,UAAO,KAAwB,CAAExY,KAAMo3U,IAChEA,EAAyB3+T,UAAO,KAAwB,CAAEgZ,UAAW,CAAC+iT,GAA4C97T,QAAS,CAAC,O,sBAatH2+T,E,sDAENA,EAAcx3U,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKu3U,IAC1EA,EAAc7+T,UAAO,KAAwB,CAAExY,KAAMq3U,IACrDA,EAAc5+T,UAAO,KAAwB,CAAEgZ,UAAW,CAAC+iT,GAA4C97T,QAAS,CAAC,CACrG,IACA,IACA,IACA,IACA0+T,GACD,IAAqB,IAAiBA,K,4BCh5CxC,SAAUz1T,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0KAAwCL,MAC5C,KAEJM,YAAa,qGAAyCN,MAClD,KAEJgB,SAAU,uIAA8BhB,MAAM,KAC9CiB,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,mDAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN2nH,EAAG,WACHjH,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAEVrzF,cAAe,gFACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,iBAAbC,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCD,EACa,iBAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,iBAAbC,GAAkC,iBAAbA,EACrBD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,IAAIi3O,EAAY,IAAPp3O,EAAaE,EACtB,OAAIk3O,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACO,OAAPA,EACA,eACAA,EAAK,KACL,eAEA,gBAGf5kQ,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,mBACTC,SAAU,iBACVC,SAAU,KAEdgB,uBAAwB,gCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBjB,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJ/B,EAAG,iBACHgC,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJhN,EAAG,WACHiN,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,eAhG0BzgB,CAAQ,EAAQ,U,0JCA7C,EAAc,SAAC83B,GACxB,GAAMA,GAA+C,mBAA9BA,EAAO,KAC1B,OCV8B7e,EDUD6e,ECVS,SAACL,GAC3C,IAAM6yG,EAAMrxH,EAAI,OAChB,GAA6B,mBAAlBqxH,EAAIlrI,UACX,MAAM,IAAIsuC,UAAU,kEAGpB,OAAO48F,EAAIlrI,UAAUq4B,IDMpB,GAAI,OAAAwhJ,EAAA,GAAYnhJ,GACjB,OAAO,OAAAo7S,EAAA,GAAiBp7S,GAEvB,GAAI,OAAAihJ,EAAA,GAAUjhJ,GACf,OEhB2B1I,EFgBD0I,EEhBa,SAACL,GAQ5C,OAPArI,EAAQ7V,KAAK,SAAC9c,GACLg7B,EAAW/U,SACZ+U,EAAW14B,KAAKtC,GAChBg7B,EAAWz4B,aAEhB,SAAC64B,GAAD,OAASJ,EAAWvH,MAAM2H,KACxBte,KAAK,KAAMsnQ,EAAA,GACTppP,GFUF,GAAMK,GAA6C,mBAA5BA,EAAO,KAC/B,OGnB4BomO,EHmBDpmO,EGnBc,SAACL,GAE9C,IADA,IAAMyoG,EAAWg+H,EAAS,SACvB,CACC,IAAI1xP,OAAI,EACR,IACIA,EAAO0zH,EAASnhI,OAEpB,MAAO84B,GAEH,OADAJ,EAAWvH,MAAM2H,GACVJ,EAEX,GAAIjrB,EAAKsjB,KAAM,CACX2H,EAAWz4B,WACX,MAGJ,GADAy4B,EAAW14B,KAAKyN,EAAK/P,OACjBg7B,EAAW/U,OACX,MAUR,MAP+B,mBAApBw9G,EAAS/vG,QAChBsH,EAAW15B,IAAI,WACPmiI,EAAS/vG,QACT+vG,EAAS/vG,WAIdsH,GHLH,IGtB4BymO,EDAD9uO,EDAGnW,EDsBxBxc,EAAQ,OAAA8pM,EAAA,GAASzuK,GAAU,oBAAnB,WAA6CA,EAA7C,KACRq7S,EAAM,uBAAgB12U,EAAhB,iCACN,+DACN,MAAM,IAAIixC,UAAUylS,K,kCI1BtB,SAAU/wR,EAAS3rB,GACrB,OAAOA,EADX,iC,kCCAA,4GAMM,SAAUv5B,EAAMq+B,EAAWqkF,GAC7B,IAAMwzN,EAAkB5+T,UAAUnV,QAAU,EAC5C,OAAO,SAACoiB,GAAD,OAAYA,EAAOviB,KAAKq8B,EAAY,YAAO,SAACpgC,EAAG4H,GAAJ,OAAUw4B,EAAUpgC,EAAG4H,EAAG0e,KAAW,IAAU,YAAK,GAAI2xT,EAAkB,YAAexzN,GAAgB,YAAa,kBAAM,IAAI,U,kCCRtL,oFAIe,SAASyzN,EAASxoS,GAC/B,OAAO,YAAeA,IAAQ,YAAgBA,IAAQ,YAA2BA,IAAQ,gB,sBCIlF,SAAUttB,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGF/uB,EAAOM,aAAa,QAAS,CACpCC,OAAQ,4eAAiGL,MACrG,KAEJM,YACI,sRAA0DN,MAAM,KACpEgB,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVutB,cAAe,gBACfmuF,KAAM,SAAUnhF,GACZ,MAAO,WAAQA,GAEnB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,SAEA,UAGfxtB,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNC,EAAG,2BACHC,GAAI,oCACJ/B,EAAG,iCACHgC,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJhN,EAAG,qBACHiN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EACF3tC,QAAQ,sDAAe,SAAU8vC,GAC9B,OAAOF,EAAUE,KAEpB/uB,MAAM,IACN1Y,UACAmmC,KAAK,IACLxuC,QAAQ,oCAA2B,SAAU8vC,GAC1C,OAAOF,EAAUE,KAEpB/uB,MAAM,IACN1Y,UACAmmC,KAAK,IACLxuC,QAAQ,UAAM,MAEvB+vC,WAAY,SAAUpC,GAClB,OAAOA,EACF3tC,QAAQ,MAAO,SAAU8vC,GACtB,OAAOb,EAAUa,KAEpB9vC,QAAQ,KAAM,WAEvBmkB,KAAM,CACFC,IAAK,EACLC,IAAK,KA9GyB/gB,CAAQ,EAAQ,U,sBCIjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFL,MAC7F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,6CAA6ChB,MAAM,KAC7DiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVutB,cAAe,wBACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,SAAbC,EACOD,EACa,UAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbC,GAAoC,UAAbA,EACvBD,EAAO,QADX,GAIXC,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGf96B,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACNC,EAAG,iBACHC,GAAI,WACJ/B,EAAG,UACHgC,GAAI,WACJC,EAAG,QACHC,GAAI,SACJhN,EAAG,SACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/gB,CAAQ,EAAQ,U,oUCP1D,iBAOA,OAPA,WAEC,KAAAszU,aAAuB,EAEvB,KAAAC,QAAkB,GAJnB,G,wBCAA,aAUA,OAJC,SAAYx/K,EAAoBy/K,EAAyBC,QAA7C,IAAA1/K,MAAA,SAAoB,IAAAy/K,MAAA,QAAyB,IAAAC,MAAA,IACxDv4U,KAAKkY,MAAQ2gJ,EACb74J,KAAKmnU,WAAamR,GARpB,GCIA,2BAsHA,OA7GC,YAAAhgF,WAAA,SAAWkgF,EAAkBC,EAAgCC,QAAA,IAAAA,MAAA,IAE5D,IAAIC,EAAiB34U,KAAK44U,cAAcJ,EAAWC,EAAatjU,OAAQujU,GAIpED,EAAahR,YAChBkR,EAAiB34U,KAAKwnU,UAAUmR,EAAgBF,EAAahR,UAAWgR,EAAan0J,YAMtF,IAAM6iJ,EAAawR,EAAex0U,OAC5B00U,EAAaJ,EAAaK,WAAaL,EAAat6T,SAC1Dw6T,EAAiBA,EAAenvU,MAAMqvU,EAAYA,EAAaJ,EAAat6T,UAG5E,IAAM46T,EAAe,IAAIC,EAGzB,OAFAD,EAAa7gU,MAAQygU,EACrBI,EAAa5R,WAAaA,EACnB4R,GASR,YAAAvR,UAAA,SAAUyR,EAAuBC,EAAyBC,GACzD,YADgC,IAAAD,MAAA,SAAyB,IAAAC,MAAA,OACpDD,EAKID,EAAep9T,KAAK,SAACE,EAAGC,GAChC,OAAID,EAAEm9T,GAAcl9T,EAAEk9T,GACC,QAAfC,GAAwB,EAAI,EAGhCp9T,EAAEm9T,GAAcl9T,EAAEk9T,GACC,QAAfC,EAAuB,GAAK,EAG7B,IAbAF,GAyBT,YAAAL,cAAA,SAAcK,EAAuBG,EAAgBV,QAAA,IAAAA,MAAA,IACpD,IAAM97S,EAAgB,GAClBy8S,EAAsB,GACpB96E,EAAoB,GACtB+6E,EAAyB,GACzBC,GAAoB,EAqCxB,OAnCAb,EAAkBrlU,QAAQ,SAAA/B,GACrBA,KAAQ8nU,IACXH,EAAe5lU,QAAQ,SAAChI,EAAS1B,GAC5B0B,EAAQiG,KAAU8nU,EAAU9nU,IAC/BgoU,EAAa11U,KAAK+F,KAGpB2vU,EAAajmU,QAAQ,SAAAhI,GACpBguU,EAAaz1U,KAAKq1U,EAAe5tU,MAElC4tU,EAAiBI,EAAa7vU,MAAM,GACpC6vU,EAAe,GAAG7vU,MAAM,GACxB8vU,EAAe,GAAG9vU,MAAM,MAI1BgT,OAAOC,KAAK28T,GAAW/lU,QAAQ,SAAAsJ,GAC9B,IAAM68T,EAAaJ,EAAUz8T,GAAKsV,WAAWnV,OAAOF,cACpD,GAAID,IAAQ+7T,EAAkBtwU,KAAK,SAAA6rB,GAAK,OAAAA,IAAMtX,KAAQ68T,EAAY,CACjED,GAAW,EACX,IACCN,EAAe5lU,QAAQ,SAAChI,EAAS1B,GAC5B0B,EAAQsR,IACEtR,EAAQsR,GAAKsV,WAAWnV,OAAOF,cACnC3T,QAAQuwU,IAAe,IAAiC,IAA5Bj7E,EAAQt1P,QAAQU,IACpD40P,EAAQ36P,KAAK+F,KAIf,MAAO8vU,GACR1uS,QAAQ0wC,IAAIg+P,EAAI98T,EAAK68T,OAKnBD,GAILh7E,EAAQlrP,QAAQ,SAAAijN,GACf15L,EAAOh5B,KAAKq1U,EAAe3iH,MAGrB15L,GAPCq8S,GASV,EAtHA,G,wBCYA,aAaC,wBAZA,KAAAS,cAAgB,IAAIhrU,EAAA,EAAuB,IAC3C,KAAAirU,UAAoB,EAIpB,KAAAC,qBAA4C,OAAA3jU,EAAA,IAAG,GAG/C,KAAA4jU,sBAAwB,IAAInrU,EAAA,EAAwB,GAEpD,KAAAqlG,cAAgC,GAG/B/zG,KAAK85U,gBAAkB95U,KAAK65U,sBAAsB5hT,eAGlD,IAAM8hT,EAAuB/5U,KAAK85U,gBAChC91U,KAAK,OAAAk4B,EAAA,KAAwB,OAAAlN,EAAA,GAAK,IAClC9qB,UAAU,SAAAo0B,GAAO,OAAC,EAAKqhT,SAAWrhT,EAAM,IAC1Ct4B,KAAK+zG,cAAcnwG,KAAKm2U,GA6B1B,OA1BC,YAAAjkU,QAAA,SAAQ0zJ,GAEP,OAAOxpK,KAAK05U,cAAczhT,gBAG3B,YAAAnnB,WAAA,SAAW04J,GAEVxpK,KAAK05U,cAAc51U,WACnB9D,KAAK65U,sBAAsB/1U,WAC3B9D,KAAK+zG,cAAc1gG,QAAQ,SAAA2mU,GAAM,OAAAA,EAAGpkU,iBAGrC,YAAA0iP,WAAA,SAAWkgF,EAAkBC,EAAgCC,GAE5D,YAF4D,IAAAA,MAAA,KACtC,IAAI,GACLpgF,WAAWkgF,EAAWC,EAAcC,IAG1D,YAAAlR,UAAA,SAAUyR,EAAuBC,EAAyBC,GAEzD,YAFgC,IAAAD,MAAA,SAAyB,IAAAC,MAAA,QACnC,IAAI,GACL3R,UAAUyR,EAAgBC,EAAYC,IAG5D,YAAAP,cAAA,SAAcK,EAAuBG,EAAgBV,GAEpD,YAFoD,IAAAA,MAAA,KAC9B,IAAI,GACLE,cAAcK,EAAgBG,EAAWV,IAEhE,EAjDA,GChBA,EASC,SACCp9T,EACA69T,EACAD,EACAe,EACA1+D,QAHA,IAAA49D,MAAA,YACA,IAAAD,MAAA,SACA,IAAAe,MAAA,QACA,IAAA1+D,MAAA,IAEAv7Q,KAAKmV,OAASmG,EACdtb,KAAKskL,UAAY60J,EACjBn5U,KAAKynU,UAAYyR,EACjBl5U,KAAK84U,WAAamB,EAClBj6U,KAAKme,SAAWo9P,G,wBCZlB,2B,OAMC,YAAA2+D,kBAAA,SAAkB9R,GAQjB,OAPe,IAAI,KACjB/zT,IAAI,iBAAkB+zT,EAAYjzT,QAClCd,IAAI,YAAa+zT,EAAY9jJ,WAC7BjwK,IAAI,YAAa+zT,EAAYX,WAC7BpzT,IAAI,aAAc+zT,EAAY0Q,WAAW7mT,YACzC5d,IAAI,WAAY+zT,EAAYjqT,SAAS8T,aAQxC,YAAAkoT,eAAA,WACC,IAAMv9S,EAAS,IAAI,IAEnB,OADAA,EAAOvoB,IAAI,eAAgB,oBACpBuoB,GAGR,YAAA07N,WAAA,SAAWkgF,EAAkBC,EAAgCC,GAE5D,YAF4D,IAAAA,MAAA,KACtC,IAAI,GACLpgF,WAAWkgF,EAAWC,EAAcC,IAG1D,YAAAlR,UAAA,SAAUyR,EAAuBC,EAAyBC,GAEzD,YAFgC,IAAAD,MAAA,SAAyB,IAAAC,MAAA,QACnC,IAAI,GACL3R,UAAUyR,EAAgBC,EAAYC,IAG5D,YAAAP,cAAA,SAAcK,EAAuBG,EAAgBV,GAEpD,YAFoD,IAAAA,MAAA,KAC9B,IAAI,GACLE,cAAcK,EAAgBG,EAAWV,I,yBArCnD0B,EAAgB,Q,sCAAhBA,M,EADb,GCLA,2B,OAOC,YAAA17N,UAAA,SAAUn9G,GACT,OAAIvB,KAAKs+G,SAAS/8G,IACV,IAAIA,GAAQiI,OAAO,GAEnB,IAST,YAAA80G,SAAA,SAAS/8G,GACR,OAAQ05C,MAAMj7C,KAAKo+G,UAAU78G,KAQ9B,YAAA68G,UAAA,SAAU78G,GACT,OAAOiuC,SAAS,GAAGjuC,EAAS,KAQ7B,YAAA84U,WAAA,SAAWpgS,GACV,IAAMh3B,EAAQg3B,EAAKE,WAAa,EAC1BrI,EAAMmI,EAAKG,UACXZ,EAAOS,EAAKC,cAClB,OAAID,EACOh3B,EAAK,IAAI6uB,EAAG,IAAI0H,EAGpB,IAQR,YAAA8gS,iBAAA,SAAiBrgS,GAChB,IAAIsgS,EAAqB,GAOzB,OANItgS,IACHsgS,GAAcv6U,KAAKs+G,SAASrkE,EAAKh3B,OAASjjB,KAAK0+G,UAAUzkE,EAAKh3B,OAAS,IAAM,GAC7Es3T,GAAcv6U,KAAKs+G,SAASrkE,EAAKnI,KAAO9xC,KAAK0+G,UAAUzkE,EAAKnI,KAAO,IAAM,GAEzEyoS,GAActgS,EAAKT,MAEb+gS,GAQR,YAAAC,2BAAA,SAA2BC,GAC1B,GAAIA,GAAaA,EAAUt2U,OAAS,EAAG,CACtC,IAAMkqH,EAAYosN,EAAU39T,OAAOyF,MAAM,KACzC,MAAO,CACN,CACCi3B,KAAMx5C,KAAKo+G,UAAUiQ,EAAU,IAC/BprG,MAAOjjB,KAAKo+G,UAAUiQ,EAAU,IAChCv8E,IAAK9xC,KAAKo+G,UAAUiQ,EAAU,MAKjC,IAAMy3G,EAAQ,IAAIprL,KAClB,MAAO,CACN,CACClB,KAAMssL,EAAM5rL,cACZj3B,MAAO6iN,EAAM3rL,WAAa,EAC1BrI,IAAKg0L,EAAMnkH,YAUd,YAAA+4N,kBAAA,SAAkBD,GACjB,QADiB,IAAAA,MAAA,IACbA,GAAaA,EAAUt2U,OAAS,EAAG,CACtC,IAAMkqH,EAAYosN,EAAU39T,OAAOyF,MAAM,KACnCi3B,EAAOx5C,KAAKo+G,UAAUiQ,EAAU,IAChCprG,EAAQjjB,KAAKo+G,UAAUiQ,EAAU,IACjCv8E,EAAM9xC,KAAKo+G,UAAUiQ,EAAU,IAEjCzxF,EAAS,IAAI8d,KAIjB,OAHA9d,EAAO6kF,QAAQ3vE,GACflV,EAAOilF,SAAS5+F,EAAQ,GACxB2Z,EAAOukF,YAAY3nE,GACZ5c,EAGR,OAAO,IAAI8d,MAOZ,YAAAigS,sBAAA,SAAsB70G,QAAA,IAAAA,MAAA,IAAkBprL,MACvC,IAAMz3B,EAAQ6iN,EAAM3rL,WAAa,EAC3BX,EAAOssL,EAAM5rL,cAEnB,OAAUj3B,EAAK,IADF6iN,EAAM1rL,UACI,IAAIZ,G,yBAzHhBohS,EAAiB,Q,sCAAjBA,M,EADb,G,qICgBK,iBACC,eACA,kBACE,QACD,eAA6E,QAE3E,OACH,OACD,Q,uBAPO,sFAEJ,4BACK,uEAAuE,6B,yBAc5E,wBAA4E,QAE1E,Q,uBAF+C,eAAAr5U,OAA2B,sB,iGChCpF,aAQC,WAAmB6lC,EAAsFt3B,GAAtF,KAAAs3B,YAAsF,KAAAt3B,OAHzG,KAAA+qU,wBAA0B,IAAI,IAAY,IAC1C,KAAAC,aAAuB,EACvB,KAAAC,oBAA8B,E,OAG9B,YAAA1qN,SAAA,sBAECrwH,KAAK86U,aAAc,EACnBl2S,WAAW,WACV,EAAKk2S,aAAc,GACjB,OAGJ,YAAAE,UAAA,WACCh7U,KAAKonC,UAAU9B,SAGhB,YAAA21S,aAAA,sBACmD,IAA9Cj7U,KAAK66U,wBAAwBt5U,MAAM4C,SAKvCnE,KAAK86U,aAAc,EACnB96U,KAAK+6U,oBAAqB,EAC1Bn2S,WAAW,WACV,EAAKwC,UAAU9B,MAAM,EAAKu1S,wBAAwBt5U,QAChD,Q,sCA5BQ25U,GAA2B,eAI0C,O,uBAJrEA,EAA2B,khCDTxC,gBAIC,gBACC,gBACC,eAAmC,QAAgB,OACnD,iBACC,cACD,OACD,OACD,OACA,gBACC,gBACC,gBACC,yBACD,OACA,kBACC,kBACC,wBASD,OACD,OACD,OACA,kBACC,kBACC,kBACC,kBACC,0BACC,yBACC,+BAGD,OACA,uBAAwB,mBAAO,kBAAQ,kBAAM,OAAU,8BAAiB,OACzE,OACA,kBACA,qBAIC,+BAAS,EAAAD,iBAGT,0BAAa,OACb,iBACD,qBAAwC,+BAAS,EAAAD,cAAa,kBAAM,OACrE,OACD,OACD,OACD,OACD,OACD,Q,MAzDC,6DAIqC,2BASrB,4BAI4C,wCAiBrB,sDACD,wCAYhC,qE,yEC5CP,G,yBCQK,iBACC,eAGA,kBACE,QACD,eACE,QAAoB,OAEvB,OACD,Q,gCARE,yGAGC,4BACK,0FACJ,8BChBT,iBAWC,WAAmB5zS,EAAqFt3B,GAArF,KAAAs3B,YAAqF,KAAAt3B,O,OAKxG,YAAAkrU,UAAA,WACCh7U,KAAKonC,UAAU9B,SAQhB,YAAA61S,wBAAA,SAAwB3vP,GACvB,YADuB,IAAAA,MAAA,GACfA,GACP,KAAK,EACJ,MAAO,UACR,KAAK,EACJ,MAAO,QACR,KAAK,EACJ,MAAO,SACR,QACC,MAAO,Y,sCA9BE4vP,GAA0B,eAO0C,O,uBAPpEA,EAA0B,w3BDRvC,gBACC,gBACC,gBACC,eAAmC,kCAAuB,OAC1D,iBACC,cACD,OACD,OACD,OACA,gBACC,gBACC,gBACC,iBACC,wBAWD,OACD,OACD,OACA,kBACC,kBACC,qBAAqC,+BAAS,EAAAJ,cAAa,kBAAM,OAAS,iBAC1E,qBAAsG,cAAE,OACvG,iBACF,OACD,OACD,OACD,Q,MAtB6D,gCAiBJ,iD,6CC1BzD,G,iCCAG,8BCAH,iBAcC,WAAmB5zS,EAAsFt3B,GAAtF,KAAAs3B,YAAsF,KAAAt3B,OARzG,KAAAgrU,aAAuB,E,OAiBvB,YAAAzqN,SAAA,aAKA,YAAA2qN,UAAA,WACCh7U,KAAKonC,UAAU9B,SAMhB,YAAA+1S,WAAA,sBAECr7U,KAAK86U,aAAc,EACnBl2S,WAAW,WACV,EAAKwC,UAAU9B,OAAM,IACnB,O,sCApCQg2S,GAA2B,eAU0C,O,uBAVrEA,EAA2B,wrBDRxC,gBACC,gBACC,gBAEC,mCACD,OACA,gBACC,eAAmC,QAAgB,OACnD,iBACC,cACD,OACD,OACD,OACA,gBACC,iBACC,kBACC,kBACC,SACD,OACD,OACD,OACA,kBACC,kBACC,qBAAmB,+BAAS,EAAAN,cAAa,kBAAM,OAAS,iBACxD,qBAAmB,+BAAS,EAAAK,eAC3B,oBACD,OACD,OACD,OACD,OACD,Q,MA1B2C,mCAGL,2BAUjC,6EAOyE,yC,6CCpB9E,G,yECDE,mBAA6E,sEAC5E,iBACD,Q,qCAGA,mBAAqD,4DACpD,mBAAU,gBAAK,OAChB,QCHF,iBAWC,WAA+CvrU,GAAA,KAAAA,O,OAS/C,YAAAugH,SAAA,uBACMrwH,KAAK8P,KAAKyrU,gBAAkBv7U,KAAK8P,KAAK0rU,oBAAsBx7U,KAAK8P,KAAK0tC,UAI3Ex9C,KAAKy7U,mBAAmBz7U,KAAK8P,KAAK0rU,oBAAoBt3U,UAAU,WAC/D,EAAK4L,KAAKyrU,gBAAiB,KAS7B,YAAAE,mBAAA,SAAmBC,GAClB,OAAO,OAAAzlU,EAAA,GAAG,IAAIjS,KAAK,OAAAopF,EAAA,GAAMsuP,KAM1B,YAAAC,oBAAA,WACC37U,KAAK8P,KAAKk9T,SAASx3M,WAMb,YAAAomN,UAAP,WACC57U,KAAK8P,KAAKk9T,SAASx3M,W,sCA7CRqmN,GAA2B,KAMnB,O,uBANRA,EAA2B,ubDZxC,gBACC,gBAAsC,QAAkB,OACxD,gBACC,yBAGD,OACA,gBACC,yBAGD,OACD,Q,MAXuC,6BAE5B,2CAKA,8C,6CCDX,GCKYC,EAAZ,SAAYA,G,OACX,uBACA,mBACA,uBACA,uBAJWA,EAAZ,CAKC,IAED,aAQC,WAAoB9O,EAA+BrlS,GAA/B,KAAAqlS,WAA+B,KAAArlS,S,OAanD,YAAAo0S,uBAAA,SACCxnC,EACAngL,EACAsnM,EACAsgB,EACAC,EACAC,EACAC,GAYA,YAjBA,IAAA/nN,MAAqB0nN,EAAYM,aACjC,IAAA1gB,MAAA,UACA,IAAAsgB,OAAA,QACA,IAAAC,OAAA,QACA,IAAAC,MAAA,UACA,IAAAC,MAAA,UAYOn8U,KAAKgtU,SAASqP,kBAAkB,EAA6B,CACnE7+R,SAAUk+Q,EACV5rT,KAZa,CACbkqB,QAASu6Q,EACTy4B,SAAUhtU,KAAKgtU,SACf1wC,gBAAiB0/C,EACjBT,eAAgBU,EAChBT,mBAAoBU,EACpB/K,iBAAkBgL,EAClBz7U,KAAM0zH,EACNrxD,OAAQ,QAKRouQ,iBAAkBgL,KAWpB,YAAAG,cAAA,SAAc1lR,EAAoB2lR,EAA0BC,GAC3D,YADa,IAAA5lR,MAAA,SAAoB,IAAA2lR,MAAA,SAA0B,IAAAC,MAAA,IACpDx8U,KAAK2nC,OAAO0jD,KAAK,EAA6B,CACpDv7E,KAAM,CAAE8mD,MAAK,EAAE2lR,YAAW,EAAEC,eAAc,GAC1C9yU,MAAO,WAST,YAAA+yU,cAAA,SAAcxoU,GACb,OAAOjU,KAAK2nC,OAAO0jD,KAAK,EAA4B,CACnDv7E,KAAMmE,EACNvK,MAAO,WAWT,YAAAgzU,wBAAA,SAAwB9lR,EAAO+lR,EAAUr1M,GACxC,OAAOtnI,KAAK2nC,OAAO0jD,KAAK,EAA6B,CACpDv7E,KAAM,CAAE8mD,MAAK,EAAE+lR,SAAQ,EAAEr1M,SAAQ,GACjC59H,MAAO,W,sCAlFGkzU,GAAkB,sB,yBAAlBA,EAAkB,QAAlBA,EAAkB,Y,EAD/B,I,sBCVS,SAAUv6T,GAAU,aA4ChBA,EAAOM,aAAa,KAAM,CAC/BC,OAzCS,CACL,YACA,UACA,WACA,aACA,YACA,YACA,UACA,YACA,qBACA,sBACA,UACA,WA8BJC,YA5Bc,CACV,MACA,QACA,UACA,MACA,OACA,QACA,UACA,SACA,OACA,OACA,OACA,QAiBJoU,kBAAkB,EAClB1T,SAhBW,CACP,kBACA,cACA,iBACA,oBACA,eACA,eACA,kBAUJC,cARgB,CAAC,OAAQ,OAAQ,WAAS,UAAQ,UAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,QAAM,QAAM,QAAM,IAAK,MASlDE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,kBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,eACNC,EAAG,mBACHC,GAAI,aACJ/B,EAAG,gBACHgC,GAAI,mBACJC,EAAG,iBACHC,GAAI,oBACJhN,EAAG,QACHiN,GAAI,WACJG,EAAG,QACHC,GAAI,eACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB/gB,CAAQ,EAAQ,U,kCCJ1D,IAAI+3U,EAA+B,oBAAXztS,QAA0BA,OAC9C0tS,EAAgBhgT,EAAQ,QAE5BM,EAAOC,QAAU,WAChB,MAA0B,mBAAfw/S,GACW,mBAAXztS,QACsB,iBAAtBytS,EAAW,QACO,iBAAlBztS,OAAO,QAEX0tS,M,kCCXR,gDACM,SAAUv2M,EAAYw2M,EAAoBC,EAAYlxM,GACxD,IAAI1zG,EAYJ,OAVIA,EADA2kT,GAAoD,iBAAvBA,EACpBA,EAGA,CACLv2M,WAAYu2M,EACZC,aACAv2M,UAAU,EACVqF,aAGD,SAACvlH,GAAD,OAAYA,EAAO8V,KAE9B,YAAgJ,IACxIiqJ,EAEAtyE,EAHwI,IAAjHwyB,kBAAiH,MAApG73H,OAAOwtJ,kBAA6F,MAA1E6gL,kBAA0E,MAA7DruU,OAAOwtJ,kBAAsD,EAAzB8gL,EAAyB,EAAnCx2M,SAAuBqF,EAAY,EAAZA,UAE5HrF,EAAW,EAEXoC,GAAW,EACXq0M,GAAa,EACjB,OAAO,SAA8B32T,GAEjC,IAAI42T,EADJ12M,KAEK6/C,GAAWz9C,GACZA,GAAW,EACXy9C,EAAU,IAAI,IAAc9/C,EAAYw2M,EAAYlxM,GACpDqxM,EAAW72J,EAAQpiL,UAAUlE,MAC7Bg0G,EAAeztF,EAAOriB,UAAU,CAC5BL,KAD4B,SACvBtC,GACD+kL,EAAQziL,KAAKtC,IAEjByzB,MAJ4B,SAItB2H,GACFksG,GAAW,EACXy9C,EAAQtxJ,MAAM2H,IAElB74B,SAR4B,WASxBo5U,GAAa,EACblpO,OAAevvG,EACf6hL,EAAQxiL,cAGZo5U,IACAlpO,OAAevvG,IAInB04U,EAAW72J,EAAQpiL,UAAUlE,MAEjCA,KAAK6C,IAAI,WACL4jI,IACA02M,EAASvnU,cACTunU,OAAW14U,EACPuvG,IAAiBkpO,GAAcD,GAA4B,IAAbx2M,IAC9CzyB,EAAap+F,cACbo+F,OAAevvG,EACf6hL,OAAU7hL,MA3CS24U,CAAoBhlT,O,sBCJ9C,SAAU/V,GAAU,aAIzB,IAAIO,EAAS,CACL,iCACA,iCACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,iCACA,uCACA,iCACA,kCAEJg3B,EAAO,CAAC,iCAAS,qBAAO,2BAAQ,qBAAO,uCAAU,2BAAQ,4BAEpDv3B,EAAOM,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbW,SAAUq2B,EACVp2B,cAAeo2B,EACfn2B,YAAam2B,EACbj2B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAEVutB,cAAe,wCACfmuF,KAAM,SAAUnhF,GACZ,MAAO,uBAAUA,GAErB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,qBAEJ,sBAEXxtB,SAAU,CACNC,QAAS,6CACTC,QAAS,6CACTC,SAAU,qCACVC,QAAS,kFACTC,SAAU,sEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNC,EAAG,oDACHC,GAAI,oCACJ/B,EAAG,wCACHgC,GAAI,wBACJC,EAAG,oDACHC,GAAI,oCACJhN,EAAG,kCACHiN,GAAI,kBACJG,EAAG,wCACHC,GAAI,wBACJC,EAAG,wCACHC,GAAI,yBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,UAAM,MAEhC+vC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,KAAM,WAEhCmkB,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB/gB,CAAQ,EAAQ,U,sBCEjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,mHAAmHL,MACvH,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SACI,sEAAsEhB,MAClE,KAERiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACNC,EAAG,qBACHC,GAAI,cACJ/B,EAAG,SACHgC,GAAI,aACJC,EAAG,SACHC,GAAI,aACJhN,EAAG,UACHiN,GAAI,cACJG,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAERisB,cAAe,mCACfG,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGfvN,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,YAAbC,EACOD,EACa,UAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAbC,GAA0C,YAAbA,EACvB,IAATD,EACO,EAEJA,EAAO,QAJX,GAOXlsB,uBAAwB,UACxBC,QAAS,KACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyB/gB,CAAQ,EAAQ,U,sBCKjD,SAAUud,GAAU,aAIfA,EAAOM,aAAa,MAAO,CACjCC,OAAQ,6FAA0FL,MAC9F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,kDAAkDhB,MAAM,KAClEiB,cAAe,iCAAiCjB,MAAM,KACtDkB,YAAa,yBAAyBlB,MAAM,KAC5CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,aACHgC,GAAI,YACJC,EAAG,WACHC,GAAI,UACJhN,EAAG,YACHiN,GAAI,WACJG,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB/gB,CAAQ,EAAQ,U,kCCN1D,IAAI+3B,EAAeC,EAAQ,QACvBugT,EAAYvgT,EAAQ,QACpBigN,EAAUjgN,EAAQ,QAElBI,EAAaJ,EAAQ,QACrBwgT,EAAWzgT,EAAa,aAAa,GACrC0gT,EAAO1gT,EAAa,SAAS,GAE7B2gT,EAAcH,EAAU,yBAAyB,GACjDI,EAAcJ,EAAU,yBAAyB,GACjDK,EAAcL,EAAU,yBAAyB,GACjDM,EAAUN,EAAU,qBAAqB,GACzCO,EAAUP,EAAU,qBAAqB,GACzCQ,EAAUR,EAAU,qBAAqB,GAQzCS,EAAc,SAAU3xQ,EAAMxvD,GAKjC,IAHA,IAEIohU,EAFAp5Q,EAAOwH,EAGmB,QAAtB4xQ,EAAOp5Q,EAAK9gE,MAAgB8gE,EAAOo5Q,EAC1C,GAAIA,EAAKphU,MAAQA,EAKhB,OAJAgoD,EAAK9gE,KAAOk6U,EAAKl6U,KAEjBk6U,EAAKl6U,KAAqDsoE,EAAKtoE,KAC/DsoE,EAAKtoE,KAAOk6U,EACLA,GA8BV3gT,EAAOC,QAAU,WACwB,IAAI2gT,EACJC,EACSC,EAG7CC,EAAU,CACbC,OAAQ,SAAUzhU,GACjB,IAAKwhU,EAAQ/pU,IAAIuI,GAChB,MAAM,IAAIugB,EAAW,iCAAmC6/M,EAAQpgO,KAGlEzK,IAAK,SAAUyK,GACd,GAAI2gU,GAAY3gU,IAAuB,iBAARA,GAAmC,mBAARA,IACzD,GAAIqhU,EACH,OAAOR,EAAYQ,EAAKrhU,QAEnB,GAAI4gU,GACV,GAAIU,EACH,OAAON,EAAQM,EAAIthU,QAGpB,GAAIuhU,EACH,OA/CS,SAAUG,EAAS1hU,GAChC,IAAI+mI,EAAOo6L,EAAYO,EAAS1hU,GAChC,OAAO+mI,GAAQA,EAAKniJ,MA6CT+8U,CAAQJ,EAAIvhU,IAItBvI,IAAK,SAAUuI,GACd,GAAI2gU,GAAY3gU,IAAuB,iBAARA,GAAmC,mBAARA,IACzD,GAAIqhU,EACH,OAAON,EAAYM,EAAKrhU,QAEnB,GAAI4gU,GACV,GAAIU,EACH,OAAOJ,EAAQI,EAAIthU,QAGpB,GAAIuhU,EACH,OA3CS,SAAUG,EAAS1hU,GAChC,QAASmhU,EAAYO,EAAS1hU,GA0CnB4hU,CAAQL,EAAIvhU,GAGrB,OAAO,GAERtI,IAAK,SAAUsI,EAAKpb,GACf+7U,GAAY3gU,IAAuB,iBAARA,GAAmC,mBAARA,IACpDqhU,IACJA,EAAM,IAAIV,GAEXG,EAAYO,EAAKrhU,EAAKpb,IACZg8U,GACLU,IACJA,EAAK,IAAIV,GAEVK,EAAQK,EAAIthU,EAAKpb,KAEZ28U,IAEJA,EAAK,CAAEvhU,IAAK,GAAI9Y,KAAM,OA5Eb,SAAUw6U,EAAS1hU,EAAKpb,GACrC,IAAImiJ,EAAOo6L,EAAYO,EAAS1hU,GAC5B+mI,EACHA,EAAKniJ,MAAQA,EAGb88U,EAAQx6U,KAA0D,CACjE8Y,IAAKA,EACL9Y,KAAMw6U,EAAQx6U,KACdtC,MAAOA,GAqENi9U,CAAQN,EAAIvhU,EAAKpb,MAIpB,OAAO48U,I,kCC7HR,IAAIthT,EAAeC,EAAQ,QAEvB2hT,EAAW3hT,EAAQ,QAEnB4hT,EAAWD,EAAS5hT,EAAa,6BAErCO,EAAOC,QAAU,SAA4Bl8B,EAAM65K,GAClD,IAAIG,EAAYt+I,EAAa17B,IAAQ65K,GACrC,MAAyB,mBAAdG,GAA4BujK,EAASv9U,EAAM,gBAAkB,EAChEs9U,EAAStjK,GAEVA,I,kCCbR,oFAIM,SAAU99J,IAAoB,IAChC,IAAI6+I,EAAavtJ,OAAOwtJ,kBACpBrwB,EAAY,KAFgB,mBAAXjgG,EAAW,yBAAXA,EAAW,gBAGhC,IAAI10B,EAAO00B,EAAYA,EAAY1nC,OAAS,GAU5C,OATI,YAAYgT,IACZ20H,EAAYjgG,EAAY5M,MACpB4M,EAAY1nC,OAAS,GAAoD,iBAAxC0nC,EAAYA,EAAY1nC,OAAS,KAClE+3J,EAAarwH,EAAY5M,QAGR,iBAAT9nB,IACZ+kJ,EAAarwH,EAAY5M,OAEX,OAAd6sG,GAA6C,IAAvBjgG,EAAY1nC,QAAgB0nC,EAAY,aAAc,IACrEA,EAAY,GAEhB,YAASqwH,EAAT,CAAqB,YAAUrwH,EAAaigG,M,sBCV9C,SAAUzpH,GAAU,aAIzB,IAAIi8J,EACI,8DAA8D/7J,MAC1D,KAER,EAAc,kDAAkDA,MAAM,KACtEE,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEGL,EAAOM,aAAa,QAAS,CACpCC,OAAQ,2FAA2FL,MAC/F,KAEJM,YAAa,SAAUC,EAAGC,GACtB,OAAKD,EAEM,QAAQE,KAAKD,GACb,EAAYD,EAAEG,SAEdq7J,EAAex7J,EAAEG,SAJjBq7J,GAOf57J,YAAaA,EACbQ,iBAAkBR,EAClBS,kBACI,+FACJC,uBACI,0FACJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAClBc,SAAU,6DAAuDhB,MAAM,KACvEiB,cAAe,2CAAqCjB,MAAM,KAC1DkB,YAAa,0BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE3D56B,QAAS,WACL,MAAO,mBAAmC,IAAjBpkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE9D36B,SAAU,WACN,MAAO,cAAiC,IAAjBrkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5D16B,QAAS,WACL,MAAO,cAAiC,IAAjBtkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5Dz6B,SAAU,WACN,MACI,0BACkB,IAAjBvkB,KAAKg/C,QAAgB,IAAM,IAC5B,QAGRx6B,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,gBACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,YACHiN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3GyB/gB,CAAQ,EAAQ,U,2GCPtDizC,EAAE6zF,EAAE00C,EAAI9/K,EAAEspI,EAAE37F,EAAElV,EAAEhF,E,YAAE2b,EAAE,GAAGhrB,EAAE,GAAG7I,EAAE,oEAAoE,SAASgJ,EAAEgzB,EAAE6zF,GAAG,IAAI,IAAI00C,KAAK10C,EAAE7zF,EAAEuoI,GAAG10C,EAAE00C,GAAG,OAAOvoI,EAAE,SAAS93C,EAAE83C,GAAG,IAAI6zF,EAAE7zF,EAAEr3B,WAAWkrH,GAAGA,EAAEnqH,YAAYs2B,GAAG,SAASzyB,EAAEsmH,EAAE00C,EAAEz4K,GAAG,IAAIrH,EAAEspI,EAAE37F,EAAElV,EAAE,GAAG,IAAIkV,KAAKmyI,EAAE,OAAOnyI,EAAE3tC,EAAE8/K,EAAEnyI,GAAG,OAAOA,EAAE27F,EAAEw2C,EAAEnyI,GAAGlV,EAAEkV,GAAGmyI,EAAEnyI,GAAG,GAAG70B,UAAUnV,OAAO,IAAI80B,EAAEnxB,SAASwR,UAAUnV,OAAO,EAAE4zC,EAAE7iB,KAAK5b,UAAU,GAAGzR,GAAG,mBAAmB+jI,GAAG,MAAMA,EAAE+yM,aAAa,IAAIxwS,KAAKy9F,EAAE+yM,kBAAa,IAAS1lT,EAAEkV,KAAKlV,EAAEkV,GAAGy9F,EAAE+yM,aAAaxwS,IAAI,OAAOo7F,EAAEqC,EAAE3yG,EAAEz4B,EAAEspI,EAAE,MAAM,SAASP,EAAExxF,EAAElwC,EAAErH,EAAEspI,EAAE37F,GAAG,IAAIlV,EAAE,CAACv4B,KAAKq3C,EAAEhlB,MAAMlrB,EAAE8U,IAAInc,EAAEyhB,IAAI6nH,EAAE80M,IAAI,KAAKp1M,GAAG,KAAKq1M,IAAI,EAAEC,IAAI,KAAKC,SAAI,EAAOC,IAAI,KAAKC,IAAI,KAAK/uS,iBAAY,EAAOgvS,IAAI,MAAM/wS,IAAImyI,EAAEnyI,GAAG,OAAO,MAAMA,GAAG,MAAMy9F,EAAEuzM,OAAOvzM,EAAEuzM,MAAMlmT,GAAGA,EAAoC,SAASm5E,EAAEr6D,GAAG,OAAOA,EAAEjwC,SAAoO,SAASkU,EAAE+7B,EAAE6zF,EAAE00C,GAAG,MAAM10C,EAAE,GAAG7zF,EAAE44E,YAAYib,EAAE,MAAM00C,EAAE,GAAGA,GAAGvoI,EAAE6zF,GAAG,MAAM00C,EAAE,GAAG,iBAAiBA,GAAGvkK,EAAEiH,KAAK4oH,GAAG00C,EAAEA,EAAE,KAAK,SAASv1C,EAAEhzF,EAAE6zF,EAAE00C,EAAEz4K,EAAErH,GAAG,IAAIspI,EAAE/xF,EAAE,GAAG,UAAU6zF,EAAE,GAAG,iBAAiB00C,EAAEvoI,EAAExsC,MAAMM,QAAQy0K,MAAM,CAAC,GAAG,iBAAiBz4K,IAAIkwC,EAAExsC,MAAMM,QAAQhE,EAAE,IAAIA,EAAE,IAAI+jI,KAAK/jI,EAAEy4K,GAAG10C,KAAK00C,GAAGtkK,EAAE+7B,EAAExsC,MAAMqgI,EAAE,IAAI,GAAG00C,EAAE,IAAI10C,KAAK00C,EAAEz4K,GAAGy4K,EAAE10C,KAAK/jI,EAAE+jI,IAAI5vH,EAAE+7B,EAAExsC,MAAMqgI,EAAE00C,EAAE10C,SAAS,GAAG,MAAMA,EAAE,IAAI,MAAMA,EAAE,GAAG9B,EAAE8B,KAAKA,EAAEA,EAAEpqI,QAAQ,WAAW,KAAKoqI,EAAEA,EAAEhvH,gBAAgBm7B,EAAE6zF,EAAEhvH,cAAcpT,MAAM,GAAGoiI,EAAEpiI,MAAM,GAAGuuC,EAAE6zF,IAAI7zF,EAAE6zF,EAAE,IAAI7zF,EAAE6zF,EAAEA,EAAE9B,GAAGw2C,EAAEA,EAAEz4K,GAAGkwC,EAAEzsB,iBAAiBsgH,EAAE9B,EAAE5kH,EAAEpC,EAAEgnH,GAAG/xF,EAAEpsB,oBAAoBigH,EAAE9B,EAAE5kH,EAAEpC,EAAEgnH,QAAQ,GAAG,4BAA4B8B,EAAE,CAAC,GAAGprI,EAAEorI,EAAEA,EAAEpqI,QAAQ,cAAc,KAAKA,QAAQ,SAAS,UAAU,GAAG,UAAUoqI,GAAG,WAAWA,GAAG,SAASA,GAAG,SAASA,GAAG,SAASA,GAAG,aAAaA,GAAG,aAAaA,GAAGA,KAAK7zF,EAAE,IAAIA,EAAE6zF,GAAG,MAAM00C,EAAE,GAAGA,EAAE,MAAMvoI,EAAE,MAAMA,IAAI,mBAAmBuoI,IAAI,MAAMA,IAAG,IAAKA,IAAI,GAAG10C,EAAE3iI,QAAQ,KAAK8uC,EAAEtP,gBAAgBmjG,GAAG7zF,EAAElpC,aAAa+8H,EAAE00C,KAAK,SAASx9J,EAAEi1B,GAAGv3C,GAAE,EAAG,IAAI,OAAOR,KAAK4rI,EAAE7zF,EAAEr3C,MAAK,GAAIkrI,EAAEtjH,MAAMsjH,EAAEtjH,MAAMyvB,GAAGA,GAAhD,QAA2Dv3C,GAAE,GAAI,SAAS0kB,EAAE6yB,GAAGv3C,GAAE,EAAG,IAAI,OAAOR,KAAK4rI,EAAE7zF,EAAEr3C,MAAK,GAAIkrI,EAAEtjH,MAAMsjH,EAAEtjH,MAAMyvB,GAAGA,GAAhD,QAA2Dv3C,GAAE,GAAI,SAAS+6B,EAAEwc,EAAE6zF,GAAG5rI,KAAK+yB,MAAMglB,EAAE/3C,KAAKwR,QAAQo6H,EAAE,SAASi7D,EAAE9uJ,EAAE6zF,GAAG,GAAG,MAAMA,EAAE,OAAO7zF,EAAEyxF,GAAGq9D,EAAE9uJ,EAAEyxF,GAAGzxF,EAAEyxF,GAAGo1M,IAAI31U,QAAQ8uC,GAAG,GAAG,KAAK,IAAI,IAAIuoI,EAAE10C,EAAE7zF,EAAE6mS,IAAIz6U,OAAOynI,IAAI,GAAG,OAAO00C,EAAEvoI,EAAE6mS,IAAIhzM,KAAK,MAAM00C,EAAEw+J,IAAI,OAAOx+J,EAAEw+J,IAAI,MAAM,mBAAmB/mS,EAAEr3C,KAAKmmM,EAAE9uJ,GAAG,KAAK,SAAS4yF,EAAE5yF,GAAG,IAAI6zF,EAAE00C,EAAE,GAAG,OAAOvoI,EAAEA,EAAEyxF,KAAK,MAAMzxF,EAAEinS,IAAI,CAAC,IAAIjnS,EAAE+mS,IAAI/mS,EAAEinS,IAAIp/U,KAAK,KAAKgsI,EAAE,EAAEA,EAAE7zF,EAAE6mS,IAAIz6U,OAAOynI,IAAI,GAAG,OAAO00C,EAAEvoI,EAAE6mS,IAAIhzM,KAAK,MAAM00C,EAAEw+J,IAAI,CAAC/mS,EAAE+mS,IAAI/mS,EAAEinS,IAAIp/U,KAAK0gL,EAAEw+J,IAAI,MAAM,OAAOn0M,EAAE5yF,IAAI,SAASwmK,EAAExmK,GAAGv3C,EAAEokC,WAAWmT,GAAG9e,EAAE8e,GAAG,SAAS2oK,EAAE3oK,KAAKA,EAAEgnS,MAAMhnS,EAAEgnS,KAAI,IAAKj1M,EAAElmI,KAAKm0C,KAAK8tK,EAAEu5H,OAAOjxS,IAAIy9F,EAAEyzM,sBAAsBlxS,EAAEy9F,EAAEyzM,oBAAoB9gI,GAAGsH,GAAG,SAASA,IAAI,IAAI9tK,EAAE6zF,EAAE00C,EAAEz4K,EAAErH,EAAE2tC,EAAElV,EAAEhF,EAAE,IAAI61G,EAAEjuH,KAAK,SAASk8B,EAAE6zF,GAAG,OAAO7zF,EAAEmnS,IAAIL,IAAIjzM,EAAEszM,IAAIL,MAAM9mS,EAAE+xF,EAAEn1H,SAASojC,EAAEgnS,MAAMnzM,EAAE9B,EAAE3lI,OAAO0D,OAAE,EAAOrH,OAAE,EAAOy4B,GAAGkV,GAAGmyI,EAAEvoI,GAAGmnS,KAAKJ,KAAK7qT,EAAEqsJ,EAAEg/J,OAAOz3U,EAAE,IAAIrH,EAAEukB,EAAE,GAAGopB,IAAI+wS,IAAI/wS,EAAE+wS,IAAI,EAAE95T,EAAE6O,EAAEka,EAAE3tC,EAAE8/K,EAAEi/J,SAAI,IAAStrT,EAAEo1H,gBAAgB,MAAMl7G,EAAE8wS,IAAI,CAAChmT,GAAG,KAAKpxB,EAAE,MAAMoxB,EAAE4tK,EAAE14J,GAAGlV,EAAEkV,EAAE8wS,KAAKl8H,EAAEl7M,EAAEsmC,GAAGA,EAAE2wS,KAAK7lT,GAAG0xG,EAAEx8F,IAAI27F,EAAE3lI,OAAOynI,GAAG9B,EAAEjuH,KAAK,SAASk8B,EAAE6zF,GAAG,OAAO7zF,EAAEmnS,IAAIL,IAAIjzM,EAAEszM,IAAIL,OAAOh5H,EAAEu5H,IAAI,EAAE,SAASn7H,EAAElsK,EAAE6zF,EAAE00C,EAAEz4K,EAAErH,EAAEspI,EAAE37F,EAAElV,EAAEhF,EAAElY,GAAG,IAAIgJ,EAAE9kB,EAAEqlB,EAAEtN,EAAEwkH,EAAExgH,EAAE+uH,EAAEjoH,EAAEjb,GAAGA,EAAE+2U,KAAKh6T,EAAEM,EAAEpC,EAAE3e,OAAO,IAAIm8K,EAAEs+J,IAAI,GAAG75T,EAAE,EAAEA,EAAE6mH,EAAEznI,OAAO4gB,IAAI,GAAG,OAAO/M,EAAEsoK,EAAEs+J,IAAI75T,GAAG,OAAO/M,EAAE4zH,EAAE7mH,KAAK,kBAAkB/M,EAAE,KAAK,iBAAiBA,GAAG,iBAAiBA,GAAG,iBAAiBA,EAAEuxH,EAAE,KAAKvxH,EAAE,KAAK,KAAKA,GAAGzN,MAAMyL,QAAQgC,GAAGuxH,EAAEn3B,EAAE,CAACtqG,SAASkQ,GAAG,KAAK,KAAK,MAAMA,EAAE6mU,IAAI,EAAEt1M,EAAEvxH,EAAEtX,KAAKsX,EAAE+a,MAAM/a,EAAE2E,IAAI3E,EAAEiK,IAAIjK,EAAEiK,IAAI,KAAKjK,EAAEknU,KAAKlnU,GAAG,CAAC,GAAGA,EAAEwxH,GAAG82C,EAAEtoK,EAAE6mU,IAAIv+J,EAAEu+J,IAAI,EAAE,QAAQv5T,EAAExC,EAAEiC,KAAKO,GAAGtN,EAAE2E,KAAK2I,EAAE3I,KAAK3E,EAAEtX,OAAO4kB,EAAE5kB,KAAKoiB,EAAEiC,QAAG,OAAY,IAAI9kB,EAAE,EAAEA,EAAEilB,EAAEjlB,IAAI,CAAC,IAAIqlB,EAAExC,EAAE7iB,KAAK+X,EAAE2E,KAAK2I,EAAE3I,KAAK3E,EAAEtX,OAAO4kB,EAAE5kB,KAAK,CAACoiB,EAAE7iB,QAAG,EAAO,MAAMqlB,EAAE,KAAKF,EAAE2yB,EAAE//B,EAAEsN,EAAEA,GAAGsqB,EAAEpvC,EAAEspI,EAAE37F,EAAElV,EAAEhF,EAAElY,GAAGygH,EAAExkH,EAAE8mU,KAAK7+U,EAAE+X,EAAEiK,MAAMqD,EAAErD,KAAKhiB,IAAI8qI,IAAIA,EAAE,IAAIzlH,EAAErD,KAAK8oH,EAAEnnI,KAAK0hB,EAAErD,IAAI,KAAKjK,GAAG+yH,EAAEnnI,KAAK3D,EAAE+X,EAAEgnU,KAAKxiN,EAAExkH,IAAI,MAAMwkH,GAAG,MAAMxgH,IAAIA,EAAEwgH,GAAG,mBAAmBxkH,EAAEtX,MAAMsX,EAAE4mU,MAAMt5T,EAAEs5T,IAAI5mU,EAAE+mU,IAAI9qT,EAAE0sL,EAAE3oM,EAAEic,EAAE8jB,GAAG9jB,EAAEsuL,EAAExqK,EAAE//B,EAAEsN,EAAExC,EAAE05G,EAAEvoG,GAAG,mBAAmBqsJ,EAAE5/K,OAAO4/K,EAAEy+J,IAAI9qT,IAAIA,GAAG3O,EAAEw5T,KAAK7qT,GAAGA,EAAEvT,YAAYq3B,IAAI9jB,EAAE4yK,EAAEvhL,IAAI,IAAIg7J,EAAEw+J,IAAI9iU,EAAE+I,EAAEG,EAAEH,KAAK,MAAMjC,EAAEiC,KAAK,mBAAmBu7J,EAAE5/K,MAAM,MAAMoiB,EAAEiC,GAAG+5T,KAAKh8T,EAAEiC,GAAG+5T,KAAKx+J,EAAEy+J,MAAMz+J,EAAEy+J,IAAIj7T,EAAEjc,GAAGw9R,aAAanhF,EAAEphM,EAAEiC,GAAGjC,EAAEiC,KAAK,GAAGgmH,EAAE,IAAIhmH,EAAE,EAAEA,EAAEgmH,EAAE5mI,OAAO4gB,IAAIo5L,EAAEpzE,EAAEhmH,GAAGgmH,IAAIhmH,GAAGgmH,IAAIhmH,IAAI,SAAS47L,EAAE5oK,EAAE6zF,EAAE00C,GAAG,IAAI,IAAIz4K,EAAErH,EAAEu3C,EAAE6mS,IAAI90M,EAAE,EAAEtpI,GAAGspI,EAAEtpI,EAAE2D,OAAO2lI,KAAKjiI,EAAErH,EAAEspI,MAAMjiI,EAAE2hI,GAAGzxF,EAAE6zF,EAAE,mBAAmB/jI,EAAEnH,KAAKigN,EAAE94M,EAAE+jI,EAAE00C,GAAGiiC,EAAEjiC,EAAEz4K,EAAEA,EAAErH,EAAEqH,EAAEi3U,IAAIlzM,IAAI,OAAOA,EAAE,SAASr3H,EAAEwjC,EAAE6zF,GAAG,OAAOA,EAAEA,GAAG,GAAG,MAAM7zF,GAAG,kBAAkBA,IAAIxtC,MAAMyL,QAAQ+hC,GAAGA,EAAE3vC,KAAK,SAAS2vC,GAAGxjC,EAAEwjC,EAAE6zF,KAAKA,EAAEhoI,KAAKm0C,IAAI6zF,EAAE,SAAS22E,EAAExqK,EAAE6zF,EAAE00C,EAAEz4K,EAAErH,EAAEspI,GAAG,IAAI37F,EAAElV,EAAEhF,EAAE,QAAG,IAAS23G,EAAEmzM,IAAI5wS,EAAEy9F,EAAEmzM,IAAInzM,EAAEmzM,SAAI,OAAY,GAAG,MAAMz+J,GAAG9/K,GAAGspI,GAAG,MAAMtpI,EAAEkgB,WAAWq3B,EAAE,GAAG,MAAM+xF,GAAGA,EAAEppH,aAAaq3B,EAAEA,EAAEjgC,YAAYtX,GAAG2tC,EAAE,SAAS,CAAC,IAAIlV,EAAE6wG,EAAE71G,EAAE,GAAGgF,EAAEA,EAAEosQ,cAAcpxQ,EAAEpsB,EAAE1D,OAAO8vB,GAAG,EAAE,GAAGgF,GAAGz4B,EAAE,MAAMu3C,EAAEA,EAAEp3B,aAAangB,EAAEspI,GAAG37F,EAAE27F,EAAE,YAAO,IAAS37F,EAAEA,EAAE3tC,EAAE6kS,YAAY,SAASvhR,EAAEi0B,GAAG,IAAI6zF,EAAE00C,EAAEz4K,EAAE,GAAG,MAAMkwC,EAAEr3C,MAAM,iBAAiBq3C,EAAEr3C,KAAK,OAAOq3C,EAAE+mS,IAAI,GAAG/mS,EAAE6mS,IAAI,IAAIhzM,EAAE7zF,EAAE6mS,IAAIz6U,OAAO,EAAEynI,GAAG,EAAEA,IAAI,IAAI00C,EAAEvoI,EAAE6mS,IAAIhzM,MAAM/jI,EAAEic,EAAEw8J,IAAI,OAAOz4K,EAAE,OAAO,KAAK,SAASud,EAAE2yB,EAAEuoI,EAAEz4K,EAAErH,EAAEspI,EAAE37F,EAAElV,EAAEhF,EAAE2b,GAAG,IAAIhrB,EAAE7I,EAAE9b,EAAEqlB,EAAEikH,EAAEvxH,EAAEwkH,EAAExgH,EAAE+uH,EAAEjoH,EAAEoC,EAAE2hL,EAAEl8D,EAAE4zE,EAAEmC,EAAEmF,EAAEvlC,EAAE5/K,KAAK,QAAG,IAAS4/K,EAAEpwI,YAAY,OAAO,KAAK,MAAMroC,EAAEo3U,MAAMrvS,EAAE/nC,EAAEo3U,IAAIhrT,EAAEqsJ,EAAEw+J,IAAIj3U,EAAEi3U,IAAIx+J,EAAE2+J,IAAI,KAAK9wS,EAAE,CAACla,KAAKrP,EAAEgnH,EAAEizM,MAAMj6T,EAAE07J,GAAG,IAAIvoI,EAAE,GAAG,mBAAmB8tK,EAAE,CAAC,GAAG7pM,EAAEskK,EAAEvtJ,MAAMg4G,GAAGnmH,EAAEihM,EAAE5pI,cAAcz7E,EAAEokB,EAAEo6T,KAAKl8T,EAAE8B,EAAEmmH,EAAEA,EAAEh4G,MAAMxxB,MAAMqjB,EAAE4kH,GAAGhpI,EAAEqH,EAAEm3U,IAAIxiN,GAAGzgH,EAAEukK,EAAE0+J,IAAIn3U,EAAEm3U,KAAKx1M,GAAGztH,EAAEyjU,KAAK,cAAc35H,GAAGA,EAAEnzL,UAAUwgB,OAAOotI,EAAE0+J,IAAIjjU,EAAE,IAAI8pM,EAAE7pM,EAAE8G,IAAIw9J,EAAE0+J,IAAIjjU,EAAE,IAAIwf,EAAEvf,EAAE8G,GAAG/G,EAAEm0B,YAAY21K,EAAE9pM,EAAEm3B,OAAO8vK,GAAGj4E,GAAGA,EAAE94C,IAAIl2E,GAAGA,EAAEgX,MAAM/W,EAAED,EAAE1T,QAAQ0T,EAAE1T,MAAM,IAAI0T,EAAEvK,QAAQsR,EAAE/G,EAAEwjU,IAAI/+U,EAAEP,EAAE8b,EAAEgjU,KAAI,EAAGhjU,EAAEkjU,IAAI,GAAGljU,EAAE0jU,IAAI,IAAI,MAAM1jU,EAAE2jU,MAAM3jU,EAAE2jU,IAAI3jU,EAAE1T,OAAO,MAAMw9M,EAAE85H,2BAA2B5jU,EAAE2jU,KAAK3jU,EAAE1T,QAAQ0T,EAAE2jU,IAAI36T,EAAE,GAAGhJ,EAAE2jU,MAAM36T,EAAEhJ,EAAE2jU,IAAI75H,EAAE85H,yBAAyB3jU,EAAED,EAAE2jU,OAAOp6T,EAAEvJ,EAAEgX,MAAMw2G,EAAExtH,EAAE1T,MAAM0T,EAAEmjU,IAAI5+J,EAAErgL,EAAE,MAAM4lN,EAAE85H,0BAA0B,MAAM5jU,EAAE6jU,oBAAoB7jU,EAAE6jU,qBAAqB,MAAM7jU,EAAE2kE,mBAAmB3kE,EAAEkjU,IAAIr7U,KAAKmY,EAAE2kE,uBAAuB,CAAC,GAAG,MAAMmlI,EAAE85H,0BAA0B3jU,IAAIsJ,GAAG,MAAMvJ,EAAE8jU,2BAA2B9jU,EAAE8jU,0BAA0B7jU,EAAE8G,IAAI/G,EAAE+iU,KAAK,MAAM/iU,EAAEs/D,wBAAuB,IAAKt/D,EAAEs/D,sBAAsBr/D,EAAED,EAAE2jU,IAAI58T,IAAIw9J,EAAE4+J,MAAMr3U,EAAEq3U,IAAI,CAAC,IAAI5+J,EAAE4+J,MAAMr3U,EAAEq3U,MAAMnjU,EAAEgX,MAAM/W,EAAED,EAAE1T,MAAM0T,EAAE2jU,IAAI3jU,EAAEgjU,KAAI,GAAIz+J,EAAEw+J,IAAIj3U,EAAEi3U,IAAIx+J,EAAEs+J,IAAI/2U,EAAE+2U,IAAIt+J,EAAEs+J,IAAIvrU,QAAQ,SAAS0kC,GAAGA,IAAIA,EAAEyxF,GAAG82C,KAAKp7J,EAAE,EAAEA,EAAEnJ,EAAE0jU,IAAIt7U,OAAO+gB,IAAInJ,EAAEkjU,IAAIr7U,KAAKmY,EAAE0jU,IAAIv6T,IAAInJ,EAAE0jU,IAAI,GAAG1jU,EAAEkjU,IAAI96U,QAAQ80B,EAAEr1B,KAAKmY,GAAG,MAAMg8B,EAAE,MAAMh8B,EAAE+jU,qBAAqB/jU,EAAE+jU,oBAAoB9jU,EAAED,EAAE2jU,IAAI58T,GAAG,MAAM/G,EAAE6kE,oBAAoB7kE,EAAEkjU,IAAIr7U,KAAK,WAAWmY,EAAE6kE,mBAAmBt7D,EAAEikH,EAAEvxH,KAAK,GAAG+D,EAAEvK,QAAQsR,EAAE/G,EAAEgX,MAAM/W,EAAED,EAAEujU,IAAIvnS,EAAE8uJ,EAAEj7D,EAAEwzM,IAAIz0M,EAAE,EAAE,cAAck7E,GAAGA,EAAEnzL,UAAUwgB,OAAO,CAAC,IAAIn3B,EAAE1T,MAAM0T,EAAE2jU,IAAI3jU,EAAEgjU,KAAI,EAAGl4I,GAAGA,EAAEvmB,GAAG17J,EAAE7I,EAAEm3B,OAAOn3B,EAAEgX,MAAMhX,EAAE1T,MAAM0T,EAAEvK,SAAS+sM,EAAE,EAAEA,EAAExiM,EAAE0jU,IAAIt7U,OAAOo6M,IAAIxiM,EAAEkjU,IAAIr7U,KAAKmY,EAAE0jU,IAAIlhI,IAAIxiM,EAAE0jU,IAAI,QAAQ,GAAG1jU,EAAEgjU,KAAI,EAAGl4I,GAAGA,EAAEvmB,GAAG17J,EAAE7I,EAAEm3B,OAAOn3B,EAAEgX,MAAMhX,EAAE1T,MAAM0T,EAAEvK,SAASuK,EAAE1T,MAAM0T,EAAE2jU,UAAU3jU,EAAEgjU,OAAOp0M,EAAE,IAAI5uH,EAAE1T,MAAM0T,EAAE2jU,IAAI,MAAM3jU,EAAEgkU,kBAAkBv/U,EAAEukB,EAAEA,EAAE,GAAGvkB,GAAGub,EAAEgkU,oBAAoB9/U,GAAG,MAAM8b,EAAEikU,0BAA0BhoU,EAAE+D,EAAEikU,wBAAwB16T,EAAEikH,IAAIm3E,EAAE,MAAM97L,GAAGA,EAAElkB,OAAO0xG,GAAG,MAAMxtF,EAAEjI,IAAIiI,EAAEmO,MAAMjrB,SAAS8c,EAAEq/L,EAAElsK,EAAExtC,MAAMyL,QAAQ0qM,GAAGA,EAAE,CAACA,GAAGpgC,EAAEz4K,EAAErH,EAAEspI,EAAE37F,EAAElV,EAAEhF,EAAE2b,GAAG7zB,EAAEnc,KAAK0gL,EAAEw+J,IAAIx+J,EAAE2+J,IAAI,KAAKljU,EAAEkjU,IAAI96U,QAAQ80B,EAAEr1B,KAAKmY,GAAGygH,IAAIzgH,EAAEyjU,IAAIzjU,EAAEytH,GAAG,MAAMztH,EAAE+iU,KAAI,OAAQ,MAAM3wS,GAAGmyI,EAAE4+J,MAAMr3U,EAAEq3U,KAAK5+J,EAAEs+J,IAAI/2U,EAAE+2U,IAAIt+J,EAAEw+J,IAAIj3U,EAAEi3U,KAAKx+J,EAAEw+J,IAAIj+H,EAAEh5M,EAAEi3U,IAAIx+J,EAAEz4K,EAAErH,EAAEspI,EAAE37F,EAAElV,EAAE2W,IAAIhrB,EAAEgnH,EAAEq0M,SAASr7T,EAAE07J,GAAG,MAAMvoI,GAAGuoI,EAAE4+J,IAAI,MAAMtvS,GAAG,MAAMzB,KAAKmyI,EAAEw+J,IAAI7qT,EAAEqsJ,EAAE2+J,MAAMrvS,EAAEzB,EAAEA,EAAEllC,QAAQgrB,IAAI,MAAM23G,EAAEkzM,IAAI/mS,EAAEuoI,EAAEz4K,IAAI,SAASk7M,EAAEhrK,EAAEuoI,GAAG10C,EAAEozM,KAAKpzM,EAAEozM,IAAI1+J,EAAEvoI,GAAGA,EAAE3vC,KAAK,SAASk4K,GAAG,IAAIvoI,EAAEuoI,EAAE2+J,IAAI3+J,EAAE2+J,IAAI,GAAGlnS,EAAE3vC,KAAK,SAAS2vC,GAAGA,EAAE7iB,KAAKorJ,KAAK,MAAMvoI,GAAG6zF,EAAEkzM,IAAI/mS,EAAEuoI,EAAE4+J,QAAQ,SAASr+H,EAAEj1E,EAAE00C,EAAEz4K,EAAErH,EAAEspI,EAAE37F,EAAElV,EAAEhF,GAAG,IAAIrP,EAAE7I,EAAEgJ,EAAEO,EAAEzd,EAAEkrB,MAAMw2G,EAAE+2C,EAAEvtJ,MAAM/a,EAAEsoK,EAAE5/K,KAAK0xG,EAAE,EAAE,GAAG,QAAQp6F,IAAI8xH,GAAE,GAAI,MAAM37F,EAAE,KAAKikE,EAAEjkE,EAAEhqC,OAAOiuG,IAAI,IAAIxtF,EAAEupB,EAAEikE,KAAK,iBAAiBxtF,KAAK5M,IAAIA,EAAE4M,EAAEs7T,YAAYloU,EAAE,IAAI4M,EAAEjd,UAAU,CAACikI,EAAEhnH,EAAEupB,EAAEikE,GAAG,KAAK,MAAM,GAAG,MAAMw5B,EAAE,CAAC,GAAG,OAAO5zH,EAAE,OAAO2yB,SAASmuF,eAAeyQ,GAAGqC,EAAE9B,EAAEn/F,SAASw1S,gBAAgB,6BAA6BnoU,GAAG2yB,SAAS9yB,cAAcG,EAAEuxH,EAAEsI,IAAItI,GAAGp7F,EAAE,KAAKla,GAAE,EAAG,GAAG,OAAOjc,EAAEsN,IAAIikH,GAAGt1G,GAAG23G,EAAE97H,OAAOy5H,IAAIqC,EAAE97H,KAAKy5H,OAAO,CAAC,GAAGp7F,EAAEA,GAAG4J,EAAE7iB,KAAK02G,EAAEo7C,YAAYjrK,GAAGuJ,EAAEzd,EAAEkrB,OAAO6c,GAAGwwS,wBAAwBr7T,EAAEwkH,EAAE62M,yBAAyBnsT,EAAE,CAAC,GAAG,MAAMka,EAAE,IAAI7oB,EAAE,GAAG8sF,EAAE,EAAEA,EAAEw5B,EAAEs7C,WAAW/iL,OAAOiuG,IAAI9sF,EAAEsmH,EAAEs7C,WAAW90E,GAAGjxG,MAAMyqI,EAAEs7C,WAAW90E,GAAG7wG,OAAOwjB,GAAGhJ,KAAKgJ,IAAIhJ,GAAGgJ,EAAEs7T,QAAQtkU,EAAEskU,QAAQt7T,EAAEs7T,SAASz0M,EAAEn9D,aAAam9D,EAAEn9D,UAAU1pD,GAAGA,EAAEs7T,QAAQ,KAAK,GAAt3N,SAAWtoS,EAAE6zF,EAAE00C,EAAEz4K,EAAErH,GAAG,IAAIspI,EAAE,IAAIA,KAAKw2C,EAAE,aAAax2C,GAAG,QAAQA,GAAGA,KAAK8B,GAAGb,EAAEhzF,EAAE+xF,EAAE,KAAKw2C,EAAEx2C,GAAGjiI,GAAG,IAAIiiI,KAAK8B,EAAEprI,GAAG,mBAAmBorI,EAAE9B,IAAI,aAAaA,GAAG,QAAQA,GAAG,UAAUA,GAAG,YAAYA,GAAGw2C,EAAEx2C,KAAK8B,EAAE9B,IAAIiB,EAAEhzF,EAAE+xF,EAAE8B,EAAE9B,GAAGw2C,EAAEx2C,GAAGjiI,GAAiqN20H,CAAEoP,EAAErC,EAAEjkH,EAAEwkH,EAAE71G,GAAGlP,EAAEu7J,EAAEs+J,IAAI,QAAQ,GAAGxsO,EAAEkuE,EAAEvtJ,MAAMjrB,SAASm8M,EAAEr4E,EAAErhI,MAAMyL,QAAQo8F,GAAGA,EAAE,CAACA,GAAGkuE,EAAEz4K,EAAErH,EAAEspI,GAAG,kBAAkB9xH,EAAEm2B,EAAElV,EAAEkV,EAAEA,EAAE,GAAGtmC,EAAE+2U,KAAK/3I,EAAEh/L,EAAE,GAAGosB,GAAG,MAAMka,EAAE,IAAIikE,EAAEjkE,EAAEhqC,OAAOiuG,KAAK,MAAMjkE,EAAEikE,IAAInyG,EAAEkuC,EAAEikE,IAAIn+E,IAAI,UAAUs1G,QAAG,KAAUn3B,EAAEm3B,EAAEhoI,SAAS6wG,IAAIw5B,EAAErqI,OAAO,aAAayW,IAAIo6F,GAAG,WAAWp6F,GAAGo6F,IAAI9sF,EAAE/jB,QAAQwpI,EAAEa,EAAE,QAAQx5B,EAAE9sF,EAAE/jB,OAAM,GAAI,YAAYgoI,QAAG,KAAUn3B,EAAEm3B,EAAEv3B,UAAUI,IAAIw5B,EAAE55B,SAAS+4B,EAAEa,EAAE,UAAUx5B,EAAE9sF,EAAE0sF,SAAQ,IAAK,OAAO45B,EAAE,SAASuyE,EAAEpmK,EAAEuoI,EAAEz4K,GAAG,IAAI,mBAAmBkwC,EAAEA,EAAEuoI,GAAGvoI,EAAEqkC,QAAQkkG,EAAE,MAAMvoI,GAAG6zF,EAAEkzM,IAAI/mS,EAAElwC,IAAI,SAASq8M,EAAEnsK,EAAEuoI,EAAEz4K,GAAG,IAAIrH,EAAEspI,EAAE,GAAG8B,EAAE00M,SAAS10M,EAAE00M,QAAQvoS,IAAIv3C,EAAEu3C,EAAE91B,OAAOzhB,EAAE47E,SAAS57E,EAAE47E,UAAUrkC,EAAE+mS,KAAK3gI,EAAE39M,EAAE,KAAK8/K,IAAI,OAAO9/K,EAAEu3C,EAAEinS,KAAK,CAAC,GAAGx+U,EAAEqgF,qBAAqB,IAAIrgF,EAAEqgF,uBAAuB,MAAM9oC,GAAG6zF,EAAEkzM,IAAI/mS,EAAEuoI,GAAG9/K,EAAEZ,KAAKY,EAAE8+U,IAAI,KAAKvnS,EAAEinS,SAAI,EAAO,GAAGx+U,EAAEu3C,EAAE6mS,IAAI,IAAI90M,EAAE,EAAEA,EAAEtpI,EAAE2D,OAAO2lI,IAAItpI,EAAEspI,IAAIo6E,EAAE1jN,EAAEspI,GAAGw2C,EAAEz4K,GAAG,mBAAmBkwC,EAAEr3C,MAAMmH,GAAG,MAAMkwC,EAAE+mS,KAAK7+U,EAAE83C,EAAE+mS,KAAK/mS,EAAEyxF,GAAGzxF,EAAE+mS,IAAI/mS,EAAEgnS,SAAI,EAAO,SAAS/7H,EAAEjrK,EAAE6zF,EAAE00C,GAAG,OAAOtgL,KAAKkwC,YAAY6H,EAAEuoI,GAAG,SAASmgC,EAAEngC,EAAEz4K,EAAErH,GAAG,IAAIspI,EAAE37F,EAAElV,EAAE2yG,EAAEpC,IAAIoC,EAAEpC,GAAG82C,EAAEz4K,GAAGsmC,GAAG27F,EAAE,mBAAmBtpI,GAAG,KAAKA,GAAGA,EAAEo+U,KAAK/2U,EAAE+2U,IAAI3lT,EAAE,GAAG7T,EAAEvd,EAAEy4K,IAAIx2C,GAAGtpI,GAAGqH,GAAG+2U,IAAIt5T,EAAE8sF,EAAE,KAAK,CAACkuE,IAAInyI,GAAGyB,EAAEA,OAAE,IAAS/nC,EAAEwhJ,iBAAiBvf,GAAGtpI,EAAE,CAACA,GAAG2tC,EAAE,KAAKtmC,EAAE6sE,WAAW38B,EAAE7iB,KAAKrtB,EAAEm/K,YAAY,KAAK/tJ,GAAG6wG,GAAGtpI,EAAEA,EAAE2tC,EAAEA,EAAE2wS,IAAIj3U,EAAE6sE,WAAWo1D,GAAGi5E,EAAE9pL,EAAEqnJ,GAA6uBvoI,EAAEnzB,EAAEpb,MAAMoiI,EAAE,CAACkzM,IAAI,SAAS/mS,EAAE6zF,EAAE00C,EAAEz4K,GAAG,IAAI,IAAIrH,EAAEspI,EAAE37F,EAAEy9F,EAAEA,EAAEpC,IAAI,IAAIhpI,EAAEorI,EAAEozM,OAAOx+U,EAAEgpI,GAAG,IAAI,IAAIM,EAAEtpI,EAAE0vC,cAAc,MAAM45F,EAAEy2M,2BAA2B//U,EAAEs7E,SAASguD,EAAEy2M,yBAAyBxoS,IAAI5J,EAAE3tC,EAAEu+U,KAAK,MAAMv+U,EAAEggV,oBAAoBhgV,EAAEggV,kBAAkBzoS,EAAElwC,GAAG,IAAIsmC,EAAE3tC,EAAEu+U,KAAK5wS,EAAE,OAAO3tC,EAAEg/U,IAAIh/U,EAAE,MAAMorI,GAAG7zF,EAAE6zF,EAAE,MAAM7zF,IAAIuoI,EAAE,EAAwD9/K,GAAE,EAAG+6B,EAAE7I,UAAUopD,SAAS,SAAS/jC,EAAE6zF,GAAG,IAAI00C,EAAEA,EAAE,MAAMtgL,KAAK0/U,KAAK1/U,KAAK0/U,MAAM1/U,KAAKqI,MAAMrI,KAAK0/U,IAAI1/U,KAAK0/U,IAAI36T,EAAE,GAAG/kB,KAAKqI,OAAO,mBAAmB0vC,IAAIA,EAAEA,EAAEhzB,EAAE,GAAGu7J,GAAGtgL,KAAK+yB,QAAQglB,GAAGhzB,EAAEu7J,EAAEvoI,GAAG,MAAMA,GAAG/3C,KAAKk/U,MAAMtzM,GAAG5rI,KAAKy/U,IAAI77U,KAAKgoI,GAAG80E,EAAE1gN,QAAQu7B,EAAE7I,UAAU+tT,YAAY,SAAS1oS,GAAG/3C,KAAKk/U,MAAMl/U,KAAK8+U,KAAI,EAAG/mS,GAAG/3C,KAAKi/U,IAAIr7U,KAAKm0C,GAAG2oK,EAAE1gN,QAAQu7B,EAAE7I,UAAUwgB,OAAOk/D,EAAE03B,EAAE,GAAG7wG,EAAE,mBAAmB10B,QAAQA,QAAQmuB,UAAUrU,KAAKksB,KAAKhmC,QAAQC,WAAWogC,WAAWihL,EAAEu5H,IAAI,EAAEnrT,EAAE,ECAztU,IAAM61G,EAAEw2C,EAAEz4K,EAAMoxB,EAAE,GAAG2W,EAAE,GAAG3b,EAAE8jB,EAAE8mS,IAAI9iU,EAAEg8B,EAAEqnS,IAAIn/U,EAAE83C,EAAEkoS,OAAOr0M,EAAE7zF,EAAEinS,IAAIl8T,EAAEi1B,EAAEuoS,QAAswD,SAAStkU,IAAI,IAAI,IAAIxb,EAAEA,EAAEy4B,EAAEtkB,SAAS,GAAGnU,EAAE8+U,KAAK9+U,EAAEkgV,IAAI,IAAIlgV,EAAEkgV,IAAIzB,IAAI5rU,QAAQmpH,IAAGh8H,EAAEkgV,IAAIzB,IAAI5rU,QAAQ6R,IAAG1kB,EAAEkgV,IAAIzB,IAAI,GAAG,MAAMn1M,GAAGtpI,EAAEkgV,IAAIzB,IAAI,GAAGlnS,EAAE+mS,IAAIh1M,EAAEtpI,EAAE0+U,MAAMnnS,EAAE8mS,IAAI,SAAS9mS,GAAG+xF,EAAE,KAAK71G,GAAGA,EAAE8jB,IAAIA,EAAEqnS,IAAI,SAASrnS,GAAGh8B,GAAGA,EAAEg8B,GAAO,IAAIlwC,GAAGiiI,EAAE/xF,EAAEinS,KAAK0B,IAAI74U,IAAIy4K,IAAIx2C,GAAGjiI,EAAEo3U,IAAI,GAAGn1M,EAAEm1M,IAAI,GAAGp3U,EAAE2hI,GAAGn2H,QAAQ,SAAS0kC,GAAGA,EAAE4oS,MAAM5oS,EAAEyxF,GAAGzxF,EAAE4oS,KAAK5oS,EAAE6oS,IAAIhxS,EAAEmI,EAAE4oS,IAAI5oS,EAAElwC,OAAE,MAAWA,EAAEo3U,IAAI5rU,QAAQmpH,IAAG30H,EAAEo3U,IAAI5rU,QAAQ6R,IAAGrd,EAAEo3U,IAAI,KAAK3+J,EAAEx2C,GAAG/xF,EAAEkoS,OAAO,SAASz/U,GAAGP,GAAGA,EAAEO,GAAG,IAAI2tC,EAAE3tC,EAAEw+U,IAAI7wS,GAAGA,EAAEuyS,MAAMvyS,EAAEuyS,IAAIzB,IAAI96U,SAAS,IAAI80B,EAAEr1B,KAAKuqC,IAAItmC,IAAIkwC,EAAE0wI,yBAAyB5gL,EAAEkwC,EAAE0wI,wBAAwBl0K,IAAGyH,IAAImyB,EAAEuyS,IAAIl3M,GAAGn2H,QAAQ,SAAS0kC,GAAGA,EAAElwC,IAAIkwC,EAAE2oS,IAAI3oS,EAAElwC,GAAGkwC,EAAE6oS,MAAMhxS,IAAImI,EAAEyxF,GAAGzxF,EAAE6oS,KAAK7oS,EAAElwC,OAAE,EAAOkwC,EAAE6oS,IAAIhxS,KAAK0wI,EAAEx2C,EAAE,MAAM/xF,EAAEinS,IAAI,SAASx+U,EAAEspI,GAAGA,EAAE1hI,KAAK,SAAS5H,GAAG,IAAIA,EAAEy+U,IAAI5rU,QAAQmpH,IAAGh8H,EAAEy+U,IAAIz+U,EAAEy+U,IAAI9pU,OAAO,SAAS4iC,GAAG,OAAOA,EAAEyxF,IAAItkH,GAAE6yB,KAAK,MAAMuoI,GAAGx2C,EAAE1hI,KAAK,SAAS2vC,GAAGA,EAAEknS,MAAMlnS,EAAEknS,IAAI,MAAMn1M,EAAE,GAAG/xF,EAAE+mS,IAAIx+J,EAAE9/K,EAAE0+U,QAAQtzM,GAAGA,EAAEprI,EAAEspI,IAAI/xF,EAAEuoS,QAAQ,SAAS9/U,GAAGsiB,GAAGA,EAAEtiB,GAAG,IAAIspI,EAAEw2C,EAAE9/K,EAAEw+U,IAAI1+J,GAAGA,EAAEogK,MAAMpgK,EAAEogK,IAAIl3M,GAAGn2H,QAAQ,SAAS0kC,GAAG,IAAIykF,GAAEzkF,GAAG,MAAMA,GAAG+xF,EAAE/xF,KAAKuoI,EAAEogK,SAAI,EAAO52M,GAAG/xF,EAAE+mS,IAAIh1M,EAAEw2C,EAAE4+J,OAAO,IAAIn0M,EAAE,mBAAmB09C,sBAAsB,SAASl0K,GAAEwjC,GAAG,IAAIv3C,EAAEspI,EAAE,WAAW5lG,aAAao8I,GAAGv1C,GAAGw9I,qBAAqB/nR,GAAGokC,WAAWmT,IAAIuoI,EAAE17I,WAAWklG,EAAE,KAAKiB,IAAIvqI,EAAEioL,sBAAsB3+C,IAAI,SAAStN,GAAEzkF,GAAG,IAAIv3C,EAAEspI,EAAEw2C,EAAEvoI,EAAEinS,IAAI,mBAAmB1+J,IAAIvoI,EAAEinS,SAAI,EAAO1+J,KAAKx2C,EAAEtpI,EAAE,SAAS0kB,GAAE6yB,GAAG,IAAIv3C,EAAEspI,EAAE/xF,EAAEinS,IAAIjnS,EAAEyxF,KAAKM,EAAEtpI,ECA/kF,SAAS+9M,GAAExmK,EAAEv3C,GAAG,IAAI,IAAIyzB,KAAK8jB,EAAE,GAAG,aAAa9jB,KAAKA,KAAKzzB,GAAG,OAAM,EAAG,IAAI,IAAIspI,KAAKtpI,EAAE,GAAG,aAAaspI,GAAG/xF,EAAE+xF,KAAKtpI,EAAEspI,GAAG,OAAM,EAAG,OAAM,EAA+D,SAAS5kH,GAAE6yB,GAAG/3C,KAAK+yB,MAAMglB,GAAkT7yB,GAAEwN,UAAU,IAAIqlB,GAAG8oS,sBAAqB,EAAG37T,GAAEwN,UAAU2oD,sBAAsB,SAAStjC,EAAEv3C,GAAG,OAAO+9M,GAAEv+M,KAAK+yB,MAAMglB,IAAIwmK,GAAEv+M,KAAKqI,MAAM7H,IAAI,IAAI+6B,GAAEtH,EAAE4qT,IAAI5qT,EAAE4qT,IAAI,SAAS9mS,GAAGA,EAAEr3C,MAAMq3C,EAAEr3C,KAAKogV,KAAK/oS,EAAE91B,MAAM81B,EAAEhlB,MAAM9Q,IAAI81B,EAAE91B,IAAI81B,EAAE91B,IAAI,MAAMsZ,IAAGA,GAAEwc,IAAU,oBAAoB3I,QAAQA,OAAO2xS,KAAK3xS,OAAO2xS,IAAI,qBAAyO,IAA8MrgI,GAAEzsL,EAAE6qT,IAAI7qT,EAAE6qT,IAAI,SAAS/mS,EAAEv3C,EAAEyzB,EAAE61G,GAAG,GAAG/xF,EAAE15B,KAAK,IAAI,IAAIiiK,EAAEnyI,EAAE3tC,EAAE2tC,EAAEA,EAAEq7F,IAAI,IAAI82C,EAAEnyI,EAAE6wS,MAAM1+J,EAAE0+J,IAAI,OAAO,MAAMx+U,EAAEs+U,MAAMt+U,EAAEs+U,IAAI7qT,EAAE6qT,IAAIt+U,EAAEo+U,IAAI3qT,EAAE2qT,KAAKt+J,EAAE0+J,IAAIjnS,EAAEv3C,GAAGkgN,GAAE3oK,EAAEv3C,EAAEyzB,EAAE61G,IAAI,IAAI62E,GAAE1sL,EAAEqsT,QAAQ,SAASx8T,GAAEi0B,EAAEv3C,EAAEyzB,GAAG,OAAO8jB,IAAIA,EAAEinS,KAAKjnS,EAAEinS,IAAI0B,MAAM3oS,EAAEinS,IAAI0B,IAAIl3M,GAAGn2H,QAAQ,SAAS0kC,GAAG,mBAAmBA,EAAEinS,KAAKjnS,EAAEinS,QAAQjnS,EAAEinS,IAAI0B,IAAI,MAAM,OAAO3oS,EAAxkD,SAAWA,EAAEv3C,GAAG,IAAI,IAAIyzB,KAAKzzB,EAAEu3C,EAAE9jB,GAAGzzB,EAAEyzB,GAAG,OAAO8jB,EAA0hDgzF,CAAE,GAAGhzF,IAAIinS,MAAMjnS,EAAEinS,IAAIM,MAAMrrT,IAAI8jB,EAAEinS,IAAIM,IAAI9+U,GAAGu3C,EAAEinS,IAAI,MAAMjnS,EAAE6mS,IAAI7mS,EAAE6mS,KAAK7mS,EAAE6mS,IAAIn1U,IAAI,SAASsuC,GAAG,OAAOj0B,GAAEi0B,EAAEv3C,EAAEyzB,MAAM8jB,EAAE,SAASosK,GAAEpsK,EAAEv3C,EAAEyzB,GAAG,OAAO8jB,IAAIA,EAAEmnS,IAAI,KAAKnnS,EAAE6mS,IAAI7mS,EAAE6mS,KAAK7mS,EAAE6mS,IAAIn1U,IAAI,SAASsuC,GAAG,OAAOosK,GAAEpsK,EAAEv3C,EAAEyzB,KAAK8jB,EAAEinS,KAAKjnS,EAAEinS,IAAIM,MAAM9+U,IAAIu3C,EAAE+mS,KAAK7qT,EAAEtT,aAAao3B,EAAE+mS,IAAI/mS,EAAEgnS,KAAKhnS,EAAEinS,IAAIF,KAAI,EAAG/mS,EAAEinS,IAAIM,IAAIrrT,IAAI8jB,EAAE,SAAS0oK,KAAIzgN,KAAKghV,IAAI,EAAEhhV,KAAKQ,EAAE,KAAKR,KAAK6+U,IAAI,KAAK,SAASj+H,GAAE7oK,GAAG,IAAIv3C,EAAEu3C,EAAEyxF,GAAGw1M,IAAI,OAAOx+U,GAAGA,EAAEygV,KAAKzgV,EAAEygV,IAAIlpS,GAAuL,SAASisK,KAAIhkN,KAAKsgL,EAAE,KAAKtgL,KAAKmuC,EAAE,KAAKla,EAAEqsT,QAAQ,SAASvoS,GAAG,IAAIv3C,EAAEu3C,EAAEinS,IAAIx+U,GAAGA,EAAE0gV,KAAK1gV,EAAE0gV,MAAM1gV,IAAG,IAAKu3C,EAAEknS,MAAMlnS,EAAEr3C,KAAK,MAAMigN,IAAGA,GAAE5oK,KAAK0oK,GAAE/tL,UAAU,IAAIqlB,GAAGinS,IAAI,SAASjnS,EAAEv3C,GAAG,IAAIyzB,EAAEzzB,EAAEw+U,IAAIl1M,EAAE9pI,KAAK,MAAM8pI,EAAEtpI,IAAIspI,EAAEtpI,EAAE,IAAIspI,EAAEtpI,EAAEoD,KAAKqwB,GAAG,IAAIqsJ,EAAEsgC,GAAE92E,EAAEo1M,KAAK/wS,GAAE,EAAGtmC,EAAE,WAAWsmC,IAAIA,GAAE,EAAGla,EAAEitT,IAAI,KAAK5gK,EAAEA,EAAE10C,GAAGA,MAAM33G,EAAEitT,IAAIr5U,EAAE,IAAI+jI,EAAE,WAAW,MAAM9B,EAAEk3M,IAAI,CAAC,GAAGl3M,EAAEzhI,MAAM44U,IAAI,CAAC,IAAIlpS,EAAE+xF,EAAEzhI,MAAM44U,IAAIn3M,EAAEo1M,IAAIN,IAAI,GAAGz6H,GAAEpsK,EAAEA,EAAEinS,IAAIM,IAAIvnS,EAAEinS,IAAImC,KAAK,IAAI3gV,EAAE,IAAIspI,EAAEhuD,SAAS,CAACmlQ,IAAIn3M,EAAE+0M,IAAI,OAAOr+U,EAAEspI,EAAEtpI,EAAEy+B,OAAOz+B,EAAEigV,gBAAgB7wS,GAAE,IAAKpvC,EAAEy+U,IAAIn1M,EAAEk3M,OAAOpxS,GAAGk6F,EAAEhuD,SAAS,CAACmlQ,IAAIn3M,EAAE+0M,IAAI/0M,EAAEo1M,IAAIN,IAAI,KAAK7mS,EAAE15B,KAAKxW,EAAEA,IAAI44M,GAAE/tL,UAAUmuD,qBAAqB,WAAW7gF,KAAKQ,EAAE,IAAIigN,GAAE/tL,UAAUwgB,OAAO,SAAS6E,EAAE9jB,GAAG,GAAGj0B,KAAK6+U,IAAI,CAAC,GAAG7+U,KAAKk/U,IAAIN,IAAI,CAAC,IAAI90M,EAAEn/F,SAAS9yB,cAAc,OAAOs2B,EAAEnuC,KAAKk/U,IAAIN,IAAI,GAAGI,IAAIh/U,KAAKk/U,IAAIN,IAAI,GAAG96T,GAAE9jB,KAAK6+U,IAAI/0M,EAAE37F,EAAEgzS,IAAIhzS,EAAEmxS,KAAKt/U,KAAK6+U,IAAI,KAAK,IAAIh3U,EAAEosB,EAAEgtT,KAAKzgV,EAAE8/K,EAAE,KAAKvoI,EAAE4tC,UAAU,OAAO99E,IAAIA,EAAEo3U,IAAI,MAAM,CAACz+U,EAAE8/K,EAAE,KAAKrsJ,EAAEgtT,IAAI,KAAKlpS,EAAEjwC,UAAUD,IAAI,IAAI+7M,GAAE,SAAS7rK,EAAEv3C,EAAEyzB,GAAG,KAAKA,EAAE,KAAKA,EAAE,IAAI8jB,EAAE5J,EAAE57B,OAAO/R,GAAGu3C,EAAEhlB,MAAMquT,cAAc,MAAMrpS,EAAEhlB,MAAMquT,YAAY,KAAKrpS,EAAE5J,EAAEhO,MAAM,IAAIlM,EAAE8jB,EAAEuoI,EAAErsJ,GAAG,CAAC,KAAKA,EAAE9vB,OAAO,GAAG8vB,EAAEgL,KAAFhL,GAAU,GAAGA,EAAE,GAAGA,EAAE,GAAG,MAAM8jB,EAAEuoI,EAAErsJ,EAAEA,EAAE,KAAK,SAAS02G,GAAE5yF,GAAG,OAAO/3C,KAAK+/U,gBAAgB,WAAW,OAAOhoS,EAAEvmC,SAASumC,EAAEjwC,SAAS,SAAS+9M,GAAE9tK,GAAG,IAAI9jB,EAAEj0B,KAAK8pI,EAAE/xF,EAAElwC,EAAEosB,EAAE4sD,qBAAqB,WAAW1yC,EAAE,KAAKla,EAAE23G,GAAG33G,EAAE23G,EAAE,KAAK33G,EAAEpsB,EAAE,MAAMosB,EAAEpsB,GAAGosB,EAAEpsB,IAAIiiI,GAAG71G,EAAE4sD,uBAAuB9oC,EAAEmnS,KAAKjrT,EAAE23G,IAAI33G,EAAEpsB,EAAEiiI,EAAE71G,EAAE23G,EAAE,CAACjkI,SAAS,EAAE+Y,WAAWopH,EAAEk9C,WAAW,GAAGlvK,YAAY,SAASigC,GAAG/3C,KAAKgnL,WAAWpjL,KAAKm0C,GAAG9jB,EAAEpsB,EAAEiQ,YAAYigC,IAAIp3B,aAAa,SAASo3B,EAAEv3C,GAAGR,KAAKgnL,WAAWpjL,KAAKm0C,GAAG9jB,EAAEpsB,EAAEiQ,YAAYigC,IAAIt2B,YAAY,SAASs2B,GAAG/3C,KAAKgnL,WAAWz+I,OAAOvoC,KAAKgnL,WAAW/9K,QAAQ8uC,KAAK,EAAE,GAAG9jB,EAAEpsB,EAAE4Z,YAAYs2B,MAAM5J,EAAE3tC,EAAEmqI,GAAE,CAACn5H,QAAQyiB,EAAEziB,SAASumC,EAAEmnS,KAAKjrT,EAAE23G,IAAI33G,EAAE23G,GAAG33G,EAAE4sD,wBAA0FmjI,GAAEtxL,UAAU,IAAIqlB,GAAGkpS,IAAI,SAASlpS,GAAG,IAAIv3C,EAAER,KAAKi0B,EAAE2sL,GAAEpgN,EAAE0+U,KAAKp1M,EAAEtpI,EAAE2tC,EAAEj8B,IAAI6lC,GAAG,OAAO+xF,EAAE,KAAK,SAASw2C,GAAG,IAAInyI,EAAE,WAAW3tC,EAAEuyB,MAAMquT,aAAat3M,EAAElmI,KAAK08K,GAAGsjC,GAAEpjN,EAAEu3C,EAAE+xF,IAAIw2C,KAAKrsJ,EAAEA,EAAEka,GAAGA,MAAM61K,GAAEtxL,UAAUwgB,OAAO,SAAS6E,GAAG/3C,KAAKsgL,EAAE,KAAKtgL,KAAKmuC,EAAE,IAAI1gC,IAAI,IAAIjN,EAAEspI,EAAE/xF,EAAEjwC,UAAUiwC,EAAEqpS,aAAa,MAAMrpS,EAAEqpS,YAAY,IAAI5gV,EAAEqJ,UAAU,IAAI,IAAIoqB,EAAEzzB,EAAE2D,OAAO8vB,KAAKj0B,KAAKmuC,EAAE95B,IAAI7T,EAAEyzB,GAAGj0B,KAAKsgL,EAAE,CAAC,EAAE,EAAEtgL,KAAKsgL,IAAI,OAAOvoI,EAAEjwC,UAAUk8M,GAAEtxL,UAAUkuD,mBAAmBojI,GAAEtxL,UAAUguD,kBAAkB,WAAW,IAAI3oC,EAAE/3C,KAAKA,KAAKmuC,EAAE96B,QAAQ,SAAS7S,EAAEyzB,GAAG2vL,GAAE7rK,EAAE9jB,EAAEzzB,MAAM,IAAI+hN,GAAE,oBAAoBnzK,QAAQA,OAAO2xS,KAAK3xS,OAAO2xS,IAAI,kBAAkB,MAAM/9H,GAAE,0RAA0RiB,GAAE,oBAAoBt5K,SAASm8J,GAAE,SAAS/uJ,GAAG,OAAO,oBAAoB3I,QAAQ,iBAAiBA,SAAS,eAAe,eAAepsB,KAAK+0B,IAAkLA,EAAErlB,UAAU2uT,iBAAiB,GAAG,CAAC,qBAAqB,4BAA4B,uBAAuBhuU,QAAQ,SAAS7S,GAAGgc,OAAOu3B,eAAegE,EAAErlB,UAAUlyB,EAAE,CAACk9B,cAAa,EAAGxrB,IAAI,WAAW,OAAOlS,KAAK,UAAUQ,IAAI6T,IAAI,SAAS0jC,GAAGv7B,OAAOu3B,eAAe/zC,KAAKQ,EAAE,CAACk9B,cAAa,EAAGC,UAAS,EAAGp8B,MAAMw2C,SAAS,IAAIupS,GAAErtT,EAAE3L,MAAM,SAAS09L,MAAK,SAAST,KAAI,OAAOvlN,KAAKuhV,aAAa,SAAS/6H,KAAI,OAAOxmN,KAAKg7F,iBAAiB/mE,EAAE3L,MAAM,SAASyvB,GAAG,OAAOupS,KAAIvpS,EAAEupS,GAAEvpS,IAAIA,EAAEypS,QAAQx7H,GAAEjuK,EAAE0pS,qBAAqBl8H,GAAExtK,EAAE2pS,mBAAmBl7H,GAAEzuK,EAAE4pS,YAAY5pS,GAAG,IAAMqtL,GAAG,CAAC1nM,cAAa,EAAGxrB,IAAI,WAAW,OAAOlS,KAAK4hV,QAAQj/G,GAAG1uM,EAAEkrT,MAAMlrT,EAAEkrT,MAAM,SAASpnS,GAAG,IAAIv3C,EAAEu3C,EAAEr3C,KAAKuzB,EAAE8jB,EAAEhlB,MAAMutJ,EAAErsJ,EAAE,GAAG,iBAAiBzzB,EAAE,CAAC,IAAI2tC,GAAG,IAAI3tC,EAAEyI,QAAQ,KAAK,IAAI,IAAIpB,KAAKy4K,EAAE,GAAGrsJ,EAAE,CAAC,IAAI23G,EAAE33G,EAAEpsB,GAAGo8M,IAAG,aAAap8M,GAAG,aAAarH,GAAG,UAAUqH,GAAG,iBAAiBosB,GAAG,MAAM23G,IAAI,iBAAiB/jI,GAAG,UAAUosB,GAAG,MAAMA,EAAE1yB,MAAMsG,EAAE,QAAQ,aAAaA,IAAG,IAAK+jI,EAAEA,EAAE,GAAG,iBAAiB5oH,KAAKnb,GAAGA,EAAE,aAAa,6BAA6Bmb,KAAKnb,EAAErH,KAAKsmM,GAAE7yK,EAAEvzB,MAAMmH,EAAE,UAAU,aAAamb,KAAKnb,GAAGA,EAAE,YAAY,YAAYmb,KAAKnb,GAAGA,EAAE,aAAa,mCAAmCmb,KAAKnb,GAAGA,EAAEA,EAAE+U,cAAcuxB,GAAG60K,GAAEhgM,KAAKnb,GAAGA,EAAEA,EAAErG,QAAQ,YAAY,OAAOob,cAAc,OAAOgvH,IAAIA,OAAE,GAAQ,aAAa5oH,KAAKnb,KAAKA,EAAEA,EAAE+U,cAAc0jK,EAAEz4K,KAAKA,EAAE,mBAAmBy4K,EAAEz4K,GAAG+jI,GAAG,UAAUprI,GAAG8/K,EAAEhN,UAAU/oK,MAAMyL,QAAQsqK,EAAE/+K,SAAS++K,EAAE/+K,MAAMuoI,EAAE71G,EAAEnsB,UAAUuL,QAAQ,SAAS0kC,GAAGA,EAAEhlB,MAAM9D,UAAU,GAAGqxJ,EAAE/+K,MAAM0H,QAAQ8uC,EAAEhlB,MAAMxxB,UAAU,UAAUf,GAAG,MAAM8/K,EAAE57D,eAAe47D,EAAE/+K,MAAMuoI,EAAE71G,EAAEnsB,UAAUuL,QAAQ,SAAS0kC,GAAGA,EAAEhlB,MAAM9D,SAASqxJ,EAAEhN,UAAU,GAAGgN,EAAE57D,aAAaz7G,QAAQ8uC,EAAEhlB,MAAMxxB,OAAO++K,EAAE57D,cAAc3sE,EAAEhlB,MAAMxxB,SAASw2C,EAAEhlB,MAAMutJ,EAAErsJ,EAAE2tT,OAAO3tT,EAAEpM,YAAYu9M,GAAGnxL,WAAW,cAAchgB,EAAE,MAAMA,EAAEpM,YAAYy4J,EAAEshK,MAAM3tT,EAAEpM,WAAWrL,OAAOu3B,eAAeusI,EAAE,YAAY8kD,KAAKrtL,EAAE8pS,SAASt/H,GAAEogB,IAAIA,GAAG5qL,IAAI,IAAI40B,GAAG14C,EAAEmrT,IAAInrT,EAAEmrT,IAAI,SAASrnS,GAAG40B,IAAIA,GAAG50B,IAAytB,ICIn7P+pS,GAAkC,oBAAfvjG,WAA6BA,WAAapzN,OAC7D22T,GAAU7uS,iBACVlI,QAAQ24B,KAAK,oCAGbo+Q,GAAU7uS,iBAAmB,CACzB7gB,UAAW2vT,EACXlqU,cAAekqU,EACf7uS,OAAQ6uS,EACR5uS,UHbirB,WAAa,MAAM,CAACipC,QAAQ,OGc7sBhpC,SAAU2uS,EACV1uS,cAgCR,SAAuBqxE,GACnB,IHhD6+RknB,EAAO00C,EGgDh/R0hK,GHhDg/R1hK,EAAE,CAAC0+J,IAAIpzM,EAAE,OAAO33G,IAAIu1G,GGgDj+R9kB,EHhDs+RpkC,SAAS,SAASvoC,EAAE6zF,GAAG,OAAO7zF,EAAEjwC,SAAS8jI,IAAIz4G,SAAS,SAAS4kB,GAAG,IAAIuoI,EAAEz4K,EAAE,OAAO7H,KAAK+/U,kBAAkBz/J,EAAE,IAAIz4K,EAAE,IAAI+jI,GAAG5rI,KAAKA,KAAK+/U,gBAAgB,WAAW,OAAOl4U,GAAG7H,KAAKq7E,sBAAsB,SAAStjC,GAAG/3C,KAAK+yB,MAAMxxB,QAAQw2C,EAAEx2C,OAAO++K,EAAEl4K,KAAK,SAAS2vC,GAAGA,EAAE+mS,KAAI,EAAGp+H,EAAE3oK,MAAM/3C,KAAKiyF,IAAI,SAASl6C,GAAGuoI,EAAE18K,KAAKm0C,GAAG,IAAI6zF,EAAE7zF,EAAE8oC,qBAAqB9oC,EAAE8oC,qBAAqB,WAAWy/F,EAAE/3I,OAAO+3I,EAAEr3K,QAAQ8uC,GAAG,GAAG6zF,GAAGA,EAAE12G,KAAK6iB,MAAMA,EAAEjwC,YAAoBqrB,SAASq2G,GAAG82C,EAAEhgG,SAASrE,YAAYqkG,EGiDt9S2hK,EAAeD,EAAY7uT,SA0B/B,OAzBA6uT,EAAY7uT,SAAW,WACnB,IAAIuuB,EAAQ1hD,KACR0iQ,GAAS1iQ,KAAK+/U,gBACdj4U,EAAWm6U,EAAatqS,MAAM33C,KAAMsZ,WACxC,GAAIopP,EAAO,CACP,IAAIw/E,EAAS,GACbliV,KAAKq7E,sBAAwB,SAAU8mQ,GAC/BzgS,EAAM3uB,MAAMxxB,QAAU4gV,EAAO5gV,OAC7B2gV,EAAO7uU,QAAQ,SAAUu8B,GACrBA,EAAEp+B,QAAU2wU,EAAO5gV,MACnBquC,EAAE6wS,iBAIdzgV,KAAKiyF,IAAM,SAAUriD,GACjBsyS,EAAOt+U,KAAKgsC,GACZ,IAAIwyS,EAAMxyS,EAAEixC,qBACZjxC,EAAEixC,qBAAuB,WACrBqhQ,EAAO35S,OAAO25S,EAAOj5U,QAAQ2mC,GAAI,GACjCwyS,GAAOA,EAAIltT,KAAK0a,KAI5B,OAAO9nC,GAEJk6U,GA3DH1uS,aDhBktI,SAAWyE,EAAE9jB,GAAG,IAAI61G,EAAEtpI,EAAEqlN,GAAE,CAACq5H,IAAInnS,EAAElwC,EAAEosB,IAAI,OAAO61G,EAAEu4M,cAAcpuT,EAAE61G,GCiBlxIv2F,UAOR,SAAmB+uS,GACfA,IACA,IAAIC,EAAuBR,EAAe1C,kBACtCmD,EAAY,GAMhB,IAFAT,EAAe1C,kBAHf,SAA0BpsT,GACtBuvT,EAAU5+U,KAAKqvB,IAGnB8uT,EAAcA,EAAqBU,GAAe,IAAK93S,SAAS9yB,cAAc,QACvE2qU,EAAUr+U,QACbq+U,EAAU7tU,OAAV6tU,GAEJT,EAAe1C,kBAAoBkD,GAlB/B/uS,uBA2DR,SAAgCkwG,GAC5Bq+L,EAAc,KAAMr+L,KAxCxB,IAAI++L,GAA+B,SAAUjqQ,GAEzC,SAASiqQ,IACL,OAAkB,OAAXjqQ,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAI/D,OANAy4E,YAAUgqQ,EAAejqQ,GAIzBiqQ,EAAc/vT,UAAUwgB,OAAS,WAAc,OAAO6uS,EAAqB,MAAO,KAClFU,EAAc/vT,UAAUguD,kBAAoB,WAAc1gF,KAAK87E,SAAS,KACjE2mQ,EAPwB,CAQjCV,G,aCpCEW,GAA0B,SAAUlqQ,GAEpC,SAASkqQ,EAASjwS,EAAI2vC,QACM,IAApBA,IAA8BA,EAAkB,IACpD,IAAI1gC,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KA6CjC,OA5CA0hD,EAAMihS,aAAc,EACpBjhS,EAAMkhS,YAAa,EACnBlhS,EAAMggC,kBAAoB,GAC1BhgC,EAAMmhS,sBAAwB,EAC9BnhS,EAAMohS,aAAe,SAAU//Q,GAE3B,OAAQA,EAAOriE,MACX,IAAK,iBACL,IAAK,mBACDghD,EAAMqhS,aAAaz1P,aAG/B5rC,EAAMqyC,WAAa,SAAUjkF,GACzB4xC,EAAMslB,YAAcl3D,EACpB4xC,EAAMqhS,aAAa3oQ,QAAQtqE,EAAKm1D,gBAAgBlW,gBAEpDrN,EAAMshS,oBAAsB,WACxB,GAAIthS,EAAMihS,YAAa,CACnBjhS,EAAMkhS,YAAa,EACnB,IAAIK,EAAgBvhS,EAAMslB,YAC1BzzB,cAAU,WACNL,cAAOr7B,cAAc6lF,KAAc,CAAE11E,QAASi7T,EAAch+Q,gBAAiB+M,MAAOixQ,EAAcjxQ,MAAO3T,QAAS4kR,EAAc5kR,SAAW,SAAUhL,EAAY7oD,EAAQuyF,EAAcC,GAGnL,OAFAt7C,EAAMwhS,cAAc7vR,GACpB3R,EAAMyhS,UAAU34U,GACRqN,cAAcwoE,KAA2BltD,SAAU,CAAE5xB,MAAOmgD,EAAMmhS,uBACtEhrU,cAAckkF,KAAiB/lD,YAAS,CAAE+mD,aAAcA,EAAcC,SAAUA,GAAYimP,OAChGvhS,EAAMjP,WAGTiP,EAAMkhS,aACXlhS,EAAMkhS,YAAa,EACnBpvS,cAAuBkO,EAAMjP,IAC7BiP,EAAMwhS,cAAc,IACpBxhS,EAAMyhS,UAAU,MAGxBzhS,EAAMjP,GAAKA,EACXiP,EAAMqhS,aAAe,IAAIj2P,KAAcprC,EAAMshS,qBAC7C,IAAI70P,KAAoB,CACpB/L,gBAAiBA,EACjBtiB,YAAape,EACbgxC,SAAUhxC,EAAMohS,aAChB7vP,OAAQvxC,EAAMqyC,aAEXryC,EAgEX,OAhHA+2B,YAAUiqQ,EAAUlqQ,GAkDpBh8D,OAAOu3B,eAAe2uS,EAAShwT,UAAW,OAAQ,CAC9CxgB,IAAK,WAAc,OAAOlS,KAAKgnE,YAAYtI,SAE3CzqB,YAAY,EACZvW,cAAc,IAElBglT,EAAShwT,UAAUwgB,OAAS,WACxB,IAAIkwS,EAAepjV,KAAK2iV,YACnBS,EAIDpjV,KAAK6iV,uBAAyB,EAH9B7iV,KAAK2iV,aAAc,EAKvB3iV,KAAK+iV,aAAa3oQ,UACdgpQ,GACApjV,KAAKsvB,cAGbozT,EAAShwT,UAAUxR,QAAU,WACrBlhB,KAAK2iV,cACL3iV,KAAK2iV,aAAc,EACnB3iV,KAAK+iV,aAAa3oQ,YAG1BsoQ,EAAShwT,UAAUpD,WAAa,WAC5B,IAAIoyB,EAAQ1hD,KACZuzC,cAAU,WACNilC,EAAO9lD,UAAUpD,WAAW4F,KAAKwsB,MAGzCghS,EAAShwT,UAAUswC,eAAiB,SAAU/rB,GAC1Cj3C,KAAK+iV,aAAax1P,MAAM,kBACxBt2C,IACAj3C,KAAK+iV,aAAat1P,OAAO,mBAE7Bi1P,EAAShwT,UAAUk8K,eAAiB,WAChC5uM,KAAK+iV,aAAax1P,MAAM,mBAE5Bm1P,EAAShwT,UAAUm8K,gBAAkB,WACjC7uM,KAAK+iV,aAAat1P,OAAO,kBAAkB,IAE/Ci1P,EAAShwT,UAAUw+D,aAAe,SAAU9O,EAAiBjnD,GACzDn7B,KAAK8iE,mBAAmBouB,aAAa9O,EAAiBjnD,IAE1DunT,EAAShwT,UAAUwwT,cAAgB,SAAU7vR,GACzC,IAAKvS,cAAcuS,EAAYrzD,KAAK0hF,mBAAoB,CAEpD,IADA,IAAI/+E,EAAY3C,KAAKyyC,GAAG9vC,UACf+M,EAAK,EAAG/E,EAAK3K,KAAK0hF,kBAAmBhyE,EAAK/E,EAAGxG,OAAQuL,IAE1D/M,EAAU6I,OADMb,EAAG+E,IAGvB,IAAK,IAAI9E,EAAK,EAAGy4U,EAAehwR,EAAYzoD,EAAKy4U,EAAal/U,OAAQyG,IAElEjI,EAAUE,IADMwgV,EAAaz4U,IAGjC5K,KAAK0hF,kBAAoBruB,IAGjCqvR,EAAShwT,UAAUywT,UAAY,SAAU34U,GACrCuqC,aAAe/0C,KAAKyyC,GAAI,SAAUjoC,IAE/Bk4U,EAjHmB,CAkH5B7/Q,O,8cCrFIpjE,EAAM,CAAC,qBACPC,EAAM,CAAC,qBACb,SAAS4jV,EAAiD3hV,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC7E,IAAMw3G,EAAM,OACZ,KAAsB,EAAG,eAAgB,GACzC,KAAkB,SAAU,SAAyFrnF,GAA4E,OAAlE,KAAqBqnF,GAAqB,OAAsCoqO,8BAA8BzxT,EAAOkgF,WACpP,OACF,GAAS,EAALrwG,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAkB,QAAgC,MAAvBA,EAAOkrO,aAAuB,KAAOlrO,EAAOkrO,aAAa3tR,MAApF,CAA2F,UAAWyiD,EAAOmrO,yBAA7G,CAAuI,gBAAiBnrO,EAAOorO,+BAA/J,CAA+L,aAAcprO,EAAOqrO,gCAApN,CAAqP,qBAAsBrrO,EAAOsrO,mCAEtR,SAASC,EAAgDliV,EAAIC,GAAgB,EAALD,GACpE,KAAiB,EAAG,cAAe,IAEvC,SAASmiV,EAAwDniV,EAAIC,GAAgB,EAALD,GAC5E,KAAoB,EAAG,EAAG,CAAC,QAAS,gCAExC,SAASoiV,EAAyDpiV,EAAIC,GAAgB,EAALD,IAC7E,KAAsB,EAAG,YACzB,KAAc,EAAG,SACjB,QAEJ,SAASqiV,EAA2CriV,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACvE,IAAMozG,EAAO,OACb,KAAsB,EAAG,SAAU,IACnC,KAAkB,QAAS,WAAoJ,OAApE,KAAqBA,GAAuB,OAAuCk/C,QAAO,KACrM,KAAkB,EAAG6vL,EAAyD,EAAG,EAAG,aAAc,IAClG,KAAkB,EAAGC,EAA0D,EAAG,EAAG,cAAe,KAAM,GAAI,MAC9G,OACF,GAAS,EAALpiV,EAAQ,CACV,IAAM64G,EAAM,KAAmB,GACzBvE,EAAS,OACf,KAAiB,GACjB,KAAkB,OAAQA,EAAOguO,UAAjC,CAA4C,WAAYzpO,IAE5D,SAAS0pO,EAAwCviV,EAAIC,GAInD,GAJmE,EAALD,IAC5D,KAAsB,EAAG,MAAO,IAChC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM26G,EAAS,OACf,KAAiB,GACjB,KAA0B,IAAKA,EAAO6nO,oBAAqB,OAE/D,IAcIC,EAdE9yO,EAAM,CAAC,CAAC,CAAC,GAAI,EAAG,4CAA6C,CAAC,CAAC,GAAI,0BAA2B,MAC9FC,EAAM,SAAUxwD,EAAIvU,GAAM,MAAO,CAAE,mCAAoCuU,EAAI,qCAAsCvU,IACjHilE,EAAM,CAAC,2CAA4C,6B,aACzD,IAAI4yO,EAA6B,+C,OAEjCA,EAA8B9jV,UAAO,SAA+CC,GAAK,OAAO,IAAKA,GAAK6jV,IAC1GA,EAA8B5jV,UAAO,KAAyB,CAAEC,KAAM2jV,EAA+B1jV,UAAW,CAAC,CAAC,GAAI,0BAA2B,O,kBA0FjJ,IAAI2jV,EAA2BF,EAA0B,8BACrD,WAAYG,EAAWh0N,EAAmBjjH,GAAoE,WAApDk3U,EAAoD,uDAAxC,KAAMC,EAAkC,uCAAnBjB,EAAmB,uDAAJ,KAAI,oBAC1GxjV,KAAKukV,UAAYA,EACjBvkV,KAAKuwH,kBAAoBA,EACzBvwH,KAAKsN,eAAiBA,EACtBtN,KAAKwkV,UAAYA,EACjBxkV,KAAKykV,cAAgBA,EACrBzkV,KAAKwjV,aAAeA,EAEpBxjV,KAAK0kV,iBAAmB,QAExB1kV,KAAKU,KAAO,OAEZV,KAAKmkV,oBAAsB,0BAM3BnkV,KAAK2kV,+BAAiC,OAKtC3kV,KAAK4kV,kBAAmB,EAExB5kV,KAAK6kV,WAAY,EAEjB7kV,KAAK8kV,qBAAsB,EAE3B9kV,KAAK+kV,4BAA6B,EAKlC/kV,KAAKglV,8BAA+B,EAEpChlV,KAAKilV,uCAAwC,EAE7CjlV,KAAKmmB,UAAY,kBAEjBnmB,KAAKklV,uBAAwB,EAE7BllV,KAAKyjV,0BAA2B,EAEhCzjV,KAAK0jV,gCAAiC,EAEtC1jV,KAAK2jV,gCAAkC,GAEvC3jV,KAAK4jV,iCAAmC,QAExC5jV,KAAKmlV,uBAAwB,EAK7BnlV,KAAKolV,mCAAoC,EAEzCplV,KAAKqlV,UAAY,IAAI,IACrBrlV,KAAKy/G,UAAY,SAACrN,KAClBpyG,KAAKslV,UAAY,IAAI,IAAgB,MACrCtlV,KAAKulV,aAAevlV,KAAKslV,UAAUthV,KAAK,YAAU,SAAAmxL,GAAQ,OAAIA,EAC1DA,EAASlwL,QAAQjB,KAAK,YAAI,SAAAgkB,GAAO,OAAIA,EAAQE,YAAY,YAAUitK,EAASjtK,YAAc,YAAG,SACjGloB,KAAKwlV,eAAiBxlV,KAAKulV,aAAavhV,KAAK,YAAI,SAAAgkB,GAAO,OAAIA,EAAUA,EAAQ7jB,OAAS,KACvFnE,KAAKylV,aAAe,IAAI,IAAY,IAEpCzlV,KAAK0lV,qBAAuB,YAAc,CACtC1lV,KAAKylV,aAAa10M,aAClB/wI,KAAKwlV,iBACNxhV,KAAK,YAAI,0CAA4B,EAAKmgV,qBAAjC,aACa,EAAKwB,4BAE9B3lV,KAAKuN,WAAa,IAAI,KAxE2B,8BA0ErD,WACI,QAASvN,KAAKwkV,YA3EmC,iBA8ErD,WACI,OAAOxkV,KAAKylV,aAAalkV,QA/EwB,oBAqFrD,WACI,OAAOvB,KAAKslV,UAAUxpN,YAtF2B,IAkFrD,SAAaq5D,GACTn1L,KAAKslV,UAAUzhV,KAAKsxL,KAnF6B,sBAwFrD,WAAQ,WAEEnlK,EAAa,0BACfhwB,KAAKukV,UAAUv0T,WACXzlB,MAAMyL,QAAQhW,KAAKukV,UAAUv0T,YAC7BhwB,KAAKukV,UAAUv0T,WAAWpsB,KAAKosB,GAEW,iBAA9BhwB,KAAKukV,UAAUv0T,WAC3BhwB,KAAKukV,UAAUv0T,WAAa,CAAChwB,KAAKukV,UAAUv0T,WAAYA,GAEd,iBAA9BhwB,KAAKukV,UAAUv0T,aAC3BhwB,KAAKukV,UAAUv0T,WAAWA,IAAc,GAI5ChwB,KAAKukV,UAAUv0T,WAAaA,EAG5BhwB,KAAKwkV,WACLxkV,KAAKwkV,UAAUx3T,UAAW,EAC1BhtB,KAAKwkV,UAAUlzT,kBAAkB3uB,UAAUE,IAAI,+BAG/CkoC,QAAQ/V,MAAM,wEAGlBh1B,KAAKukV,UAAUqB,aACV5hV,KAAK,YAAM,GAAI,YAAUhE,KAAKuN,aAC9BrJ,UAAU,SAACqjB,GACRA,GACA,EAAKs+T,mBAEA,EAAKf,qBACN,EAAK9tK,UAKL,EAAK4tK,kBACL,EAAK3wL,WAKjBj0J,KAAKukV,UAAUqB,aACV5hV,KAAK,YAAK,IACVA,KAAK,YAAUhE,KAAKuN,aACpBrJ,UAAU,WACP,EAAKqgV,UAAUx8T,YACf,EAAKw8T,UAAUx8T,YAAYhY,OAAO/L,KAAK,YAAU,EAAKuJ,aACjDrJ,UAAU,kBAAM,EAAK4hV,6CAG1B/6S,QAAQ0wC,IAAI,oCAEhB,EAAK05G,SAAW,EAAKovJ,UAAUv8T,QAW/B,IAAI+9T,EAAsB,EAAK5wJ,SAASjtK,UAAU,EAAKy9T,0BACvD,EAAKxwJ,SAASlwL,QACTjB,KAAK,YAAU,EAAKuJ,aACpBrJ,UAAU,WAEX0gC,WAAW,WAEP,IAAM5c,EAAU,EAAKmtK,SAASjtK,UAExB89T,EAAqBh+T,EAAQ,EAAK29T,0BAClCM,EAAa,EAAK1B,UAAUx8T,YAC9Bk+T,GAAc,EAAK1B,UAAU75T,cAGC,EAAK65T,UAAU/lM,YAAYunM,EAAqBC,IAItEC,EAAW75T,YACXpE,EAAQ3iB,KAAK,SAAAmhB,GAAM,OAAI,EAAK+9T,UAAU/lM,YAAYh4H,EAAQy/T,EAAW75T,eACzE65T,EAAWj1T,qBAGf4T,WAAW,WACP,EAAKihT,qBAEJ,EAAKZ,uCACN,EAAKa,4CAIbC,EAAsBC,QAMlChmV,KAAK0lV,qBAAqB1hV,KAAK,YAAUhE,KAAKuN,aAAarJ,UAAU,SAAAgiV,GAE7D,EAAK1B,YACD0B,EACA,EAAK1B,UAAUlzT,kBAAkB3uB,UAAUE,IAAI,sCAG/C,EAAK2hV,UAAUlzT,kBAAkB3uB,UAAU6I,OAAO,yCAK9DxL,KAAKsN,eAAeyC,SACf/L,KAAK,YAAUhE,KAAKuN,aACpBrJ,UAAU,WACP,EAAKqgV,UAAU75T,WACf,EAAKm7T,qBAGb7lV,KAAKmmV,uBACLnmV,KAAKulV,aAAavhV,KAAK,YAAUhE,KAAKuN,aAAarJ,UAAU,WAEzD,EAAKqsH,kBAAkBv5G,mBArNsB,2CAwNrD,SAA8B3O,GAC1BrI,KAAKqlV,UAAUnjU,KAAK7Z,KAzN6B,yBA2NrD,WACIrI,KAAKuN,WAAW1J,OAChB7D,KAAKuN,WAAWzJ,aA7NiC,yCA+NrD,WACI,OAAO9D,KAAKukV,UAAUjxK,UAAYtzK,KAAKklV,wBAhOU,4BAuOrD,SAAe58T,GAAK,YAEXA,EAAM3L,KAA4B,IAArB2L,EAAM3L,IAAIxY,QACvBmkB,EAAM2E,SAAW,KAAK3E,EAAM2E,SAAW,KACvC3E,EAAM2E,SAAW,KAAQ3E,EAAM2E,SAAW,KAC1C3E,EAAM2E,UAAY,KACfjtB,KAAKglV,+BAAiC18T,EAAM2E,UAAY,KAAQ3E,EAAM2E,UAAY,OACtF3E,EAAMsH,kBAEN5vB,KAAKukV,UAAUjxK,UAAYhrJ,EAAM3L,KAAO2L,EAAM2E,UAAY,KAE1D2X,WAAW,kBAAM,EAAKoyI,YAGc,IAApCh3K,KAAK+kV,4BAAuCz8T,EAAM2E,UAAY,KAAUjtB,KAAKuB,QAC7EvB,KAAKi0J,QAAO,GACZ3rI,EAAMsH,qBAvPuC,0BA8PrD,SAAatH,GACT,GAAIA,EAAM2E,UAAY,KAAY3E,EAAM2E,UAAY,IAAY,CAC5D,IAAMm5T,EAAyBpmV,KAAKukV,UAAU8B,2BACxC18U,EAAQ3J,KAAKm1L,SAASjtK,UAAUi9F,UAAU,SAAA7zG,GAAI,OAAIA,EAAK0U,KAAOogU,IACpE,IAAe,IAAXz8U,EAAc,CACd,IAAMk6H,EAAmB7jI,KAAKm1L,SAASjtK,UAAUve,GACjD3J,KAAKykV,cAAc6B,SAASziN,EAAiB8gE,UAAY,IACnD3kM,KAAKumV,aAAa58U,GAClB3J,KAAK2kV,+BACL3kV,KAAKwmV,qBAvQ8B,0BAiRrD,SAAaxhJ,GACT,OAAsC,IAAlChlM,KAAK2lV,yBACE3gJ,EAAc,EAElBA,IArR0C,2BA6RrD,WACI,OAAOhlM,KAAKm1L,SAASjtK,UAAU/jB,OAASnE,KAAK2lV,2BA9RI,wBAgSrD,SAAWpkV,GACPvB,KAAKymV,wBAA0BllV,EAC/BvB,KAAKylV,aAAanxM,SAAS/yI,GAC3BvB,KAAKuwH,kBAAkBv5G,iBAnS0B,oBAqSrD,WACIhX,KAAKy/G,cAtS4C,8BAwSrD,SAAiBzwG,GAAE,WACfhP,KAAKylV,aAAa10M,aAAa/sI,KAAK,YAAO,SAAAzC,GAAK,OAAIA,IAAU,EAAKklV,0BAA0B,YAAI,kBAAM,EAAKA,6BAA0BhiV,IAAY,YAAUzE,KAAKuN,aAAarJ,UAAU8K,KAzSvI,+BA2SrD,SAAkBA,GACdhP,KAAKy/G,UAAYzwG,IA5SgC,oBAiTrD,WACI,GAAKhP,KAAK0mV,mBAAsB1mV,KAAKukV,UAAUl8T,MAA/C,CAKA,IAAMA,EAAQroB,KAAKukV,UAAUl8T,MAAMzlB,cAC7BwlB,EAAYC,EAAMD,UAExBpoB,KAAK0mV,kBAAkB9jV,cAAcksB,QACrCzG,EAAMD,UAAYA,KA3T+B,oBAiUrD,SAAO0G,GACH9uB,KAAKylV,aAAanxM,SAAS,IACvBxlH,GACA9uB,KAAKg3K,WApUwC,kCA2UrD,WAAoB,WACXh3K,KAAKukV,UAAU9xK,WAWpBzyK,KAAK2mV,uBAAyB3mV,KAAKukV,UAAU9xK,UAAUlxK,MACvDvB,KAAKukV,UAAU9xK,UAAU1hC,aACpB/sI,KAAK,YAAUhE,KAAKuN,aACpBrJ,UAAU,SAAC4P,GACZ,IAAI8yU,GAAwB,EAC5B,GAAI,EAAKrC,UAAUjxK,WACV,EAAK8xK,mCAAsC,EAAKK,aAAalkV,OAAS,EAAKkkV,aAAalkV,MAAM4C,SAC5F,EAAKwiV,wBAA0Bp8U,MAAMyL,QAAQ,EAAK2wU,wBAAyB,CACzE7yU,GAAWvJ,MAAMyL,QAAQlC,KAC1BA,EAAS,IAEb,IAAM+yU,EAAe,EAAKtC,UAAUv8T,QAAQve,IAAI,SAAA+c,GAAM,OAAIA,EAAOjlB,QACjE,EAAKolV,uBAAuBtzU,QAAQ,SAAAm1B,GAC3B10B,EAAO1L,KAAK,SAAAnI,GAAC,OAAI,EAAKskV,UAAU/lM,YAAYv+I,EAAGuoC,MAC5Cq+S,EAAaz+U,KAAK,SAAAnI,GAAC,OAAI,EAAKskV,UAAU/lM,YAAYv+I,EAAGuoC,OAGzD10B,EAAOlQ,KAAK4kC,GACZo+S,GAAwB,KAKxC,EAAKD,uBAAyB7yU,EAC1B8yU,GACA,EAAKrC,UAAU55T,UAAU7W,MAnCzB9T,KAAKukV,UAAUjxK,UAGfvoI,QAAQ/V,MAAM,qHAhV2B,sDAuXrD,WACI,GAAIh1B,KAAKukV,UAAUl8T,OAASroB,KAAKukV,UAAUv8T,QAAQ7jB,OAAS,EAAG,CAC3D,IAAM2iV,EAAkB9mV,KAAK+mV,qBACvBC,EAAoBhnV,KAAKukV,UAAUx8T,YAAY6F,iBAAmB,EAClEwD,EAAa,YAA8B41T,EAAmBhnV,KAAKukV,UAAUv8T,QAAShoB,KAAKukV,UAAUz7T,cAErGm+T,GAA8BjnV,KAAKwkV,WAAa,EAAI,GAAKpzT,EAAa41T,EACtEE,EAAmBlnV,KAAKukV,UAAUl8T,MAAMzlB,cAAcwlB,UACtD++T,EAAoBnnV,KAAKonV,kBAAkBxkV,cAAc6uB,aACzD41T,EAAyB9oU,KAAKs7B,OAhdhB,IAgdiDstS,GAAqBL,GACpFQ,EAA4B/oU,KAAK06B,OAAOiuS,EAAmBC,GAAqBL,GAAmB,EACrGQ,GAA6BL,EAC7BjnV,KAAKukV,UAAUl8T,MAAMzlB,cAAcwlB,UAAY6+T,EAA6BH,EAEvEQ,EAA4BD,GAA0BJ,IAC3DjnV,KAAKukV,UAAUl8T,MAAMzlB,cAAcwlB,WAAa6+T,EAA6B,GAAKH,GAtdlE,IAudiBK,OAvYQ,8BA+YrD,WACI,GAAKnnV,KAAKonV,mBAAsBpnV,KAAKonV,kBAAkBxkV,cAAvD,CAKA,IAFA,IACI2kV,EADAl8U,EAAUrL,KAAKonV,kBAAkBxkV,cAE9ByI,EAAUA,EAAQu9B,eACrB,GAAIv9B,EAAQ1I,UAAUiqB,SAAS,oBAAqB,CAChD26T,EAAel8U,EACf,MAGJk8U,IACAvnV,KAAKonV,kBAAkBxkV,cAAc2I,MAAM7B,MAAQ69U,EAAax0Q,YAAc,SA5ZjC,gCA+ZrD,WACI,OAAI/yE,KAAKukV,UAAUv8T,QAAQ7jB,OAAS,EACzBnE,KAAKukV,UAAUv8T,QAAQhmB,MAAMsvB,kBAAkB7mB,wBAAwBD,OAE3E,IAna0C,oCAwarD,WACI,OAAIxK,KAAKwkV,UACE,EAGA,MA7asC,G,OAibzDF,EAAyB/jV,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAK8jV,GAA0B,KAAyB,KAAY,KAAyB,KAA2B,KAAyB,KAAuB,KAAyB,IAAW,GAAI,KAAyB,KAAuB,KAAyB,IAAc,KAClYA,EAAyBn+U,UAAO,KAAyB,CAAEzF,KAAM4jV,EAA0B3jV,UAAW,CAAC,CAAC,0BAA2Be,eAAgB,SAAiDC,EAAIC,EAAKC,GAGrM,IAAIC,EAHsN,EAALH,GACrN,KAAsBE,EAAUwiV,EAA+B,GACxD,EAAL1iV,GAEF,KAAsBG,EAAK,UAA0BF,EAAIqiV,UAAYniV,EAAGE,QACvEsW,UAAW,SAAwC3W,EAAIC,GAIxD,IAAIE,EAJoE,EAALH,IACnE,KAAmBlC,EAAK,EAAG,KAC3B,KAAmBC,EAAK,EAAG,MACpB,EAALiC,IAEF,KAAsBG,EAAK,UAA0BF,EAAI8kV,kBAAoB5kV,EAAGE,OAChF,KAAsBF,EAAK,UAA0BF,EAAIwlV,kBAAoBtlV,EAAGE,SAC/EuW,SAAU,EAAGC,aAAc,SAA+C7W,EAAIC,GAAgB,EAALD,GAC1F,KAAmB,sCAAuCC,EAAI4lV,oBAC7DrlV,OAAQ,CAAEuiV,iBAAkB,mBAAoBhkV,KAAM,OAAQyjV,oBAAqB,sBAAuBQ,+BAAgC,iCAAkCC,iBAAkB,mBAAoBC,UAAW,YAAaC,oBAAqB,sBAAuBC,2BAA4B,6BAA8BC,6BAA8B,+BAAgCC,sCAAuC,wCAAyC9+T,UAAW,YAAa++T,sBAAuB,wBAAyBzB,yBAA0B,2BAA4BC,+BAAgC,iCAAkCC,gCAAiC,kCAAmCC,iCAAkC,mCAAoCuB,sBAAuB,wBAAyBC,kCAAmC,qCAAuCjjU,QAAS,CAAEkjU,UAAW,aAAe/iV,SAAU,CAAC,KAA0B,CACz+B,CACIC,QAAS,IACTC,YAAa,aAAW,kBAAM4hV,IAC9B16T,OAAO,MAEV7Q,mBAAoB44F,EAAKrrG,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,WAAY,GAAI,EAAG,0BAA2B,4BAA6B,CAAC,EAAG,0BAA2B,iBAAkB,yBAA0B,iBAAkB,EAAG,WAAY,CAAC,oBAAqB,IAAK,CAAC,QAAS,wCAAyC,kBAAmB,2CAA4C,EAAG,QAAS,UAAW,gBAAiB,aAAc,qBAAsB,SAAU,EAAG,QAAS,CAAC,eAAgB,MAAO,EAAG,0BAA2B,oBAAqB,EAAG,OAAQ,cAAe,cAAe,UAAW,QAAS,QAAS,CAAC,oBAAqB,IAAK,CAAC,QAAS,4BAA6B,WAAY,KAAM,EAAG,QAAS,CAAC,aAAc,GAAI,kBAAmB,GAAI,aAAc,QAAS,QAAS,0BAA2B,EAAG,QAAS,EAAG,QAAS,CAAC,QAAS,qCAAsC,EAAG,QAAS,CAAC,kBAAmB,2CAA4C,EAAG,wCAAyC,EAAG,QAAS,UAAW,gBAAiB,aAAc,qBAAsB,UAAW,CAAC,WAAY,KAAM,EAAG,6BAA8B,CAAC,aAAc,GAAI,kBAAmB,GAAI,aAAc,QAAS,EAAG,0BAA2B,EAAG,SAAU,CAAC,EAAG,OAAQ,YAAa,CAAC,cAAe,IAAK,CAAC,EAAG,uCAAwChG,SAAU,SAA2CqB,EAAIC,GAAgB,EAALD,IAC94C,KAAuB2vG,GACvB,KAAiB,EAAG,QAAS,GAC7B,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,EAAGgyO,EAAkD,EAAG,EAAG,eAAgB,GAC7F,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAkB,UAAW,SAAoExxT,GAAU,OAAOlwB,EAAIowB,eAAeF,IAArI,CAAiJ,QAAS,SAAkEA,GAAU,OAAOlwB,EAAI6lV,aAAa31T,IAA9P,CAA0Q,OAAQ,WAAqE,OAAOlwB,EAAIkvH,WAClW,OACA,KAAkB,EAAG+yN,EAAiD,EAAG,EAAG,cAAe,GAC3F,KAAkB,EAAGG,EAA4C,EAAG,EAAG,SAAU,GACjF,KAAoB,GACpB,OACA,KAAkB,EAAGE,EAAyC,EAAG,EAAG,MAAO,GAC3E,KAAc,GAAI,UACX,EAALviV,IACF,KAAiB,GACjB,KAAkB,UAAW,KAAuB,GAAI4vG,EAAK3vG,EAAI2iV,UAAUjxK,SAAU1xK,EAAI8lV,gCACzF,KAAiB,GACjB,KAAkB,OAAQ9lV,EAAI8lV,+BAC9B,KAAiB,GACjB,KAAkB,OAAQ9lV,EAAIlB,KAA9B,CAAoC,cAAekB,EAAI6jV,aAAvD,CAAqE,cAAe7jV,EAAI8iV,kBACxF,KAAmB,aAAc9iV,EAAIukB,WACrC,KAAiB,GACjB,KAAkB,OAAQvkB,EAAIijV,WAC9B,KAAiB,GACjB,KAAkB,QAASjjV,EAAIujV,uBAAyBvjV,EAAIL,QAAUK,EAAIijV,WAC1E,KAAiB,GACjB,KAAkB,OAAQ,KAAmB,GAAI,EAAGjjV,EAAI8jV,yBACvDn/U,WAAY,CAAC,IAAgB,IAAa,IAA6B,IAAwB,IAA6B,IAAoB,IAAmB,IAAmB,IAAkB,KAAiBixS,MAAO,CAAC,KAAmB1+R,OAAQ,CAAC,inFAAknFkQ,gBAAiB,IA8Ez4Fs7T,EAA2BF,EAA6B,YAAW,CAAE,YAAQ,EAAG,YAAO,MACnF,YAAQ,EAAG,eAAa,YAAQ,EAAG,YAAO,MAC1C,YAAQ,EAAG,eAAa,YAAQ,EAAG,YAAO,OAC3CE,G,gBASH,IAAIqD,EAAwB,+C,OAE5BA,EAAyBpnV,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAKmnV,IAChGA,EAAyBzuU,UAAO,KAAwB,CAAExY,KAAMinV,IAChEA,EAAyBxuU,UAAO,KAAwB,CAAEC,QAAS,CAAC,CACxD,IACA,IACA,IACA,IACA,IACA,IACA,Q,wICjvBN,iBAAOytH,EAAP,WACF,WAAY33F,EAAM3tC,EAAOyzB,GAAK,oBAC1Bh1B,KAAKkvC,KAAOA,EACZlvC,KAAKuB,MAAQA,EACbvB,KAAKg1B,MAAQA,EACbh1B,KAAK8gJ,SAAoB,MAAT5xG,EALlB,2CAOF,SAAQ9C,GACJ,OAAQpsC,KAAKkvC,MACT,IAAK,IACD,OAAO9C,EAASvoC,MAAQuoC,EAASvoC,KAAK7D,KAAKuB,OAC/C,IAAK,IACD,OAAO6qC,EAASpX,OAASoX,EAASpX,MAAMh1B,KAAKg1B,OACjD,IAAK,IACD,OAAOoX,EAAStoC,UAAYsoC,EAAStoC,cAd/C,gBAiBF,SAAGD,EAAMmxB,EAAOlxB,GAEZ,OADa9D,KAAKkvC,MAEd,IAAK,IACD,OAAOrrC,GAAQA,EAAK7D,KAAKuB,OAC7B,IAAK,IACD,OAAOyzB,GAASA,EAAMh1B,KAAKg1B,OAC/B,IAAK,IACD,OAAOlxB,GAAYA,OAzB7B,oBA4BF,SAAOqpM,EAAgBn4K,EAAOlxB,GAC1B,OAAIqpM,GAAiD,mBAAxBA,EAAetpM,KACjC7D,KAAKstI,QAAQ6/D,GAGbntM,KAAK4nV,GAAGz6I,EAAgBn4K,EAAOlxB,KAjC5C,0BAoCF,WAEI,OADa9D,KAAKkvC,MAEd,IAAK,IACD,OAAO,YAAGlvC,KAAKuB,OACnB,IAAK,IACD,OAAO,YAAWvB,KAAKg1B,OAC3B,IAAK,IACD,OAAO,cAEf,MAAM,IAAIX,MAAM,yCA9ClB,yBAgDF,SAAkB9yB,GACd,YAAqB,IAAVA,EACA,IAAIslI,EAAa,IAAKtlI,GAE1BslI,EAAaghN,6BApDtB,yBAsDF,SAAmBlrT,GACf,OAAO,IAAIkqG,EAAa,SAAKpiI,EAAWk4B,KAvD1C,4BAyDF,WACI,OAAOkqG,EAAaihN,yBA1DtB,G,OA6DNjhN,EAAaihN,qBAAuB,IAAIjhN,EAAa,KACrDA,EAAaghN,2BAA6B,IAAIhhN,EAAa,SAAKpiI,G,EA9D1D,I,sBCAG,SAAU4d,GAAU,aAIzB,IAAIO,EAAS,CACL,mDACA,+DACA,uCACA,mDACA,eACA,2BACA,uCACA,mDACA,2EACA,+DACA,+DACA,gEAEJW,EAAW,CACP,mDACA,2BACA,mDACA,2BACA,+DACA,uCACA,oDAGClB,EAAOM,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbW,SAAUA,EACVC,cAAeD,EACfE,YAAa,iLAAqClB,MAAM,KACxDoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVutB,cAAe,4BACfmuF,KAAM,SAAUnhF,GACZ,MAAO,iBAASA,GAEpB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,eAEA,gBAGfxtB,SAAU,CACNC,QAAS,4CACTC,QAAS,4CACTC,SAAU,UACVC,QAAS,4CACTC,SAAU,6DACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,sDACRC,KAAM,0CACNC,EAAG,uFACHC,GAAI,sDACJ/B,EAAG,mDACHgC,GAAI,0CACJC,EAAG,+DACHC,GAAI,sDACJhN,EAAG,mDACHiN,GAAI,0CACJG,EAAG,uCACHC,GAAI,8BACJC,EAAG,mDACHC,GAAI,2CAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,UAAM,MAEhC+vC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,KAAM,WAEhCmkB,KAAM,CACFC,IAAK,EACLC,IAAK,MAxFyB/gB,CAAQ,EAAQ,U,kWCWpDrF,EAAM,CAAC,IAAK,CAAC,CAAC,qBACdC,EAAM,CAAC,IAAK,mBACZ4xG,EAAM,CAAC,CAAC,CAAC,GAAI,kBAAmB,IAAK,CAAC,GAAI,gBAAiB,KAAM,CAAC,CAAC,kBAAmB,CAAC,qBAAsB,CAAC,GAAI,iBAAkB,IAAK,CAAC,GAAI,oBAAqB,IAAK,CAAC,GAAI,eAAgB,IAAK,CAAC,GAAI,kBAAmB,KAAM,KAChOC,EAAM,CAAC,qCAAsC,4HAA6H,K,iBAG1Kw2O,E,sDAENA,EAAexnV,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKunV,IAC5EA,EAAetnV,UAAO,KAAyB,CAAEC,KAAMqnV,EAAgBpnV,UAAW,CAAC,CAAC,oBAAqB,CAAC,GAAI,mBAAoB,IAAK,CAAC,GAAI,iBAAkB,KAAMoC,UAAW,CAAC,EAAG,sB,sBAY7KilV,E,sDAENA,EAAaznV,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKwnV,IACxEA,EAAavnV,UAAO,KAAyB,CAAEC,KAAMsnV,EAAcrnV,UAAW,CAAC,CAAC,kBAAmB,CAAC,GAAI,iBAAkB,IAAK,CAAC,GAAI,eAAgB,KAAMoC,UAAW,CAAC,EAAG,oB,sBAcnKklV,E,sDAENA,EAAgB1nV,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKynV,IAC9EA,EAAgBxnV,UAAO,KAAyB,CAAEC,KAAMunV,EAAiBtnV,UAAW,CAAC,CAAC,qBAAsB,CAAC,GAAI,oBAAqB,IAAK,CAAC,GAAI,kBAAmB,KAAMoC,UAAW,CAAC,EAAG,uB,sBAclLmlV,E,YACF,iCAEIloV,KAAKqtL,MAAQ,U,OAGrB66J,EAAe3nV,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK0nV,IAC5EA,EAAeznV,UAAO,KAAyB,CAAEC,KAAMwnV,EAAgBvnV,UAAW,CAAC,CAAC,qBAAsBoC,UAAW,CAAC,EAAG,oBAAqBwV,SAAU,EAAGC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,GACrN,KAAmB,6BAA4C,QAAdC,EAAIyrL,QACpDlrL,OAAQ,CAAEkrL,MAAO,SAAW30K,SAAU,CAAC,oB,sBAoC1CyvU,E,sDAENA,EAAa5nV,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK2nV,IACxEA,EAAa1nV,UAAO,KAAyB,CAAEC,KAAMynV,EAAcxnV,UAAW,CAAC,CAAC,GAAI,iBAAkB,IAAK,CAAC,GAAI,eAAgB,KAAMoC,UAAW,CAAC,EAAG,oB,sBA8F/IqlV,E,YAEF,WAAYj2O,GAAc,oBACtBnyG,KAAKmyG,eAAiBA,I,OAG9Bi2O,EAAQ7nV,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAK4nV,GAAS,KAAyB,IAAuB,KACvHA,EAAQjiV,UAAO,KAAyB,CAAEzF,KAAM0nV,EAASznV,UAAW,CAAC,CAAC,aAAcoC,UAAW,CAAC,EAAG,WAAY,uBAAwBwV,SAAU,EAAGC,aAAc,SAA8B7W,EAAIC,GAAgB,EAALD,GACvM,KAAmB,0BAAkD,mBAAvBC,EAAIuwG,iBACjDz5F,SAAU,CAAC,WAAYG,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAA0BqB,EAAIC,GAAgB,EAALD,IACvH,KAAuBlC,GACvB,KAAoB,GACpB,KAAoB,EAAG,KACtBqZ,OAAQ,CAAC,0uFAA2uFtS,cAAe,EAAGwiB,gBAAiB,I,sBA6B1xFq/T,E,sDAENA,EAAc9nV,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK6nV,IAC1EA,EAAcliV,UAAO,KAAyB,CAAEzF,KAAM2nV,EAAe1nV,UAAW,CAAC,CAAC,oBAAqBoC,UAAW,CAAC,EAAG,mBAAoB8V,mBAAoB04F,EAAKnrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,yBAA0BhG,SAAU,SAAgCqB,EAAIC,GAAgB,EAALD,IAC9Q,KAAuB2vG,GACvB,KAAoB,GACpB,KAAsB,EAAG,MAAO,GAChC,KAAoB,EAAG,GACvB,OACA,KAAoB,EAAG,KACtB9qG,cAAe,EAAGwiB,gBAAiB,I,sBA6CtCs/T,E,sDAENA,EAAc/nV,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK8nV,IAC1EA,EAAcpvU,UAAO,KAAwB,CAAExY,KAAM4nV,IACrDA,EAAcnvU,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,KAAkB,O,4BClTnE,SAAUiJ,GAAU,aAIzB,IAAI0iK,EAAW,CACXr0I,EAAG,QACHI,EAAG,QACHG,EAAG,QACH+zI,GAAI,QACJC,GAAI,QACJt0I,EAAG,OACHK,EAAG,OACHk0I,GAAI,OACJC,GAAI,OACJv0I,EAAG,WACHC,EAAG,WACHu0I,IAAK,WACLr0I,EAAG,OACHG,EAAG,QACHm0I,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SAGCnjK,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,oGAA+EL,MACnF,KAEJM,YAAa,iEAAkDN,MAAM,KACrEgB,SAAU,4FAAwDhB,MAC9D,KAEJiB,cAAe,mDAA8BjB,MAAM,KACnDkB,YAAa,4CAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,gBACNC,EAAG,uBACH9B,EAAG,YACHgC,GAAI,WACJC,EAAG,YACHC,GAAI,WACJhN,EAAG,aACHiN,GAAI,YACJG,EAAG,YACHC,GAAI,WACJC,EAAG,aACHC,GAAI,aAERE,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAO97F,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI3J,EAAI2J,EAAS,GAGjB,OAAOA,GAAUq/J,EAAShpK,IAAMgpK,EAFvBr/J,EAAS,IAAO3J,IAEsBgpK,EADvCr/J,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzFyB/gB,CAAQ,EAAQ,U,sBCIjD,SAAUud,GAAU,aAIzB,IAAIkmU,EACA,6FAAgEhmU,MAAM,KAC1E,SAAS66J,EAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC3C,IAAIhZ,EAAMt/B,EACV,OAAQ/I,GACJ,IAAK,IACD,OAAOqhD,GAAYg/F,EACb,4BACA,6BACV,IAAK,KACD,OAAOh4G,GAAOgZ,GAAYg/F,GACpB,gBACA,iBACV,IAAK,IACD,MAAO,OAASh/F,GAAYg/F,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOh4G,GAAOgZ,GAAYg/F,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASh/F,GAAYg/F,EAAgB,UAAS,gBACzD,IAAK,KACD,OAAOh4G,GAAOgZ,GAAYg/F,EAAgB,UAAS,gBACvD,IAAK,IACD,MAAO,OAASh/F,GAAYg/F,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOh4G,GAAOgZ,GAAYg/F,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASh/F,GAAYg/F,EAAgB,YAAW,eAC3D,IAAK,KACD,OAAOh4G,GAAOgZ,GAAYg/F,EAAgB,YAAW,eACzD,IAAK,IACD,MAAO,OAASh/F,GAAYg/F,EAAgB,SAAQ,WACxD,IAAK,KACD,OAAOh4G,GAAOgZ,GAAYg/F,EAAgB,SAAQ,WAE1D,MAAO,GAEX,SAASr3I,EAAKq4C,GACV,OACKA,EAAW,GAAK,cACjB,IACAuqR,EAAYvoV,KAAK8xC,OACjB,aAICzvB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,4HAAoGL,MACxG,KAEJM,YACI,gFAAiEN,MAC7D,KAER0U,kBAAkB,EAClB1T,SAAU,6EAAsDhB,MAAM,KACtEiB,cAAe,yCAAgCjB,MAAM,KACrDkB,YAAa,qBAAqBlB,MAAM,KACxCoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVutB,cAAe,SACfmuF,KAAM,SAAUnhF,GACZ,MAAyC,MAAlCA,EAAMzO,OAAO,GAAGnzB,eAE3B+0B,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,IACW,IAAZnN,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzC3tB,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOsB,EAAKuP,KAAKl1B,MAAM,IAE3BskB,QAAS,oBACTC,SAAU,WACN,OAAOoB,EAAKuP,KAAKl1B,MAAM,IAE3BwkB,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,KACNC,EAAGw4J,EACHv4J,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAGolK,EACHn4J,GAAIm4J,EACJh4J,EAAGg4J,EACH/3J,GAAI+3J,EACJ93J,EAAG83J,EACH73J,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB/gB,CAAQ,EAAQ,U,sBCEjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,6DAAoDhB,MAAM,KACpEiB,cAAe,uCAA8BjB,MAAM,KACnDkB,YAAa,gCAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACN2gH,IAAK,mBACLC,KAAM,wBAEV3gH,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,eACTD,SAAU,kBACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,kBACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,YACJhN,EAAG,SACHiN,GAAI,WACJG,EAAG,cACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,GAEQ,IAANA,EADA,KAII,OAIxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/gB,CAAQ,EAAQ,U,sKCJpD,SAAU0jV,IAA+C,IAAlCC,EAAkC,uDAAnBC,EACxC,OAAO,SAACniU,GACJ,OAAOA,EAAO8V,KAAK,IAAIssT,EAAqBF,K,IAG9CE,E,8BACF,WAAYF,GAAY,oBACpBzoV,KAAKyoV,aAAeA,G,mBAExB,SAAKlsT,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI0kV,EAAuBrsT,EAAYv8B,KAAKyoV,mB,GAGtEG,E,YACF,WAAYnsT,EAAagsT,GAAY,M,MAAA,2B,EACjC,K,EAAA,E,EAAA,CAAMhsT,G,kBAAN,E,iGACKgsT,aAAeA,EACpB,EAAK3nM,UAAW,EAHiB,E,0DAKrC,SAAMv/I,GACFvB,KAAK8gJ,UAAW,EAChB9gJ,KAAKy8B,YAAY54B,KAAKtC,K,uBAE1B,WACI,GAAKvB,KAAK8gJ,SAWN,OAAO9gJ,KAAKy8B,YAAY34B,WAVxB,IAAI64B,EACJ,IACIA,EAAM38B,KAAKyoV,eAEf,MAAOx0T,GACH0I,EAAM1I,EAEVj0B,KAAKy8B,YAAYzH,MAAM2H,O,CAnBE,KA0BrC,SAAS+rT,IACL,OAAO,IAAI,M,sBC/BN,SAAUrmU,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0KAAwCL,MAC5C,KAEJM,YAAa,qGAAyCN,MAClD,KAEJgB,SAAU,uIAA8BhB,MAAM,KAC9CiB,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,mDAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,2CACLC,KAAM,+CACN2nH,EAAG,WACHjH,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAEVrzF,cAAe,gFACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,iBAAbC,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCD,EACa,iBAAbC,GAAkC,iBAAbA,EACrBD,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1CC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,IAAIi3O,EAAY,IAAPp3O,EAAaE,EACtB,OAAIk3O,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,gBAGf5kQ,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,SAAU0nC,GAChB,OAAIA,EAAIpmC,SAAW3lB,KAAK2lB,OACb,gBAEA,iBAGfrB,QAAS,mBACTC,SAAU,SAAUwnC,GAChB,OAAI/rD,KAAK2lB,SAAWomC,EAAIpmC,OACb,gBAEA,iBAGfnB,SAAU,KAEdgB,uBAAwB,gCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBjB,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJ/B,EAAG,iBACHgC,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJhN,EAAG,WACHiN,GAAI,YACJC,EAAG,WACHC,GAAI,YACJC,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,aAERI,KAAM,CAEFC,IAAK,EACLC,IAAK,KApHyB/gB,CAAQ,EAAQ,U,sBCCjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,0cAAwFL,MAC5F,KAEJM,YACI,oSAAmEN,MAC/D,KAER0U,kBAAkB,EAClB1T,SACI,uUAA8DhB,MAC1D,KAERiB,cAAe,+JAAkCjB,MAAM,KACvDkB,YAAa,iFAAqBlB,MAAM,KACxCoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,0CACNC,EAAG,kFACHC,GAAI,gDACJ/B,EAAG,oDACHgC,GAAI,sDACJC,EAAG,kCACHC,GAAI,oCACJhN,EAAG,wCACHiN,GAAI,0CACJG,EAAG,kCACHC,GAAI,oCACJC,EAAG,gEACHC,GAAI,mEAERC,uBAAwB,gBACxBC,QAAS,WACT+rB,cAAe,wKACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,yCAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,6BAAbC,EACAD,EACa,2DAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,qDAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,uCACAA,EAAO,GACP,2BACAA,EAAO,GACP,yDACAA,EAAO,GACP,mDAEA,wCAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KAtFyB/gB,CAAQ,EAAQ,U,4YCAnD,IAAM+jV,EAAb,YACI,WAAYpsT,GAAW,kCACnB,YAAMA,KACDA,YAAcA,EAFA,EAD3B,wCAAuC,KAMjC,iBAAOh5B,EAAP,YACF,+CACI,aACK+jJ,UAAY,GACjB,EAAKhgI,QAAS,EACd,EAAK6+I,WAAY,EACjB,EAAKx9B,UAAW,EAChB,EAAKC,YAAc,KANvB,EADE,4CASD,IATC,MASF,WACI,OAAO,IAAI+/M,EAAkB7oV,QAV/B,kBAYF,SAAK4rK,GACD,IAAM0a,EAAU,IAAIwiK,EAAiB9oV,KAAMA,MAE3C,OADAsmL,EAAQ1a,SAAWA,EACZ0a,IAfT,kBAiBF,SAAK/kL,GACD,GAAIvB,KAAKwnB,OACL,MAAM,IAAI,IAEd,IAAKxnB,KAAKqmK,UAIN,IAHA,IAAQ7e,EAAcxnJ,KAAdwnJ,UACFlwG,EAAMkwG,EAAUrjJ,OAChBy8D,EAAO4mF,EAAUh+I,QACd3B,EAAI,EAAGA,EAAIyvC,EAAKzvC,IACrB+4D,EAAK/4D,GAAGhE,KAAKtC,KA1BvB,mBA8BF,SAAMo7B,GACF,GAAI38B,KAAKwnB,OACL,MAAM,IAAI,IAEdxnB,KAAK6oI,UAAW,EAChB7oI,KAAK8oI,YAAcnsG,EACnB38B,KAAKqmK,WAAY,EAIjB,IAHA,IAAQ7e,EAAcxnJ,KAAdwnJ,UACFlwG,EAAMkwG,EAAUrjJ,OAChBy8D,EAAO4mF,EAAUh+I,QACd3B,EAAI,EAAGA,EAAIyvC,EAAKzvC,IACrB+4D,EAAK/4D,GAAGmtB,MAAM2H,GAElB38B,KAAKwnJ,UAAUrjJ,OAAS,IA3C1B,sBA6CF,WACI,GAAInE,KAAKwnB,OACL,MAAM,IAAI,IAEdxnB,KAAKqmK,WAAY,EAIjB,IAHA,IAAQ7e,EAAcxnJ,KAAdwnJ,UACFlwG,EAAMkwG,EAAUrjJ,OAChBy8D,EAAO4mF,EAAUh+I,QACd3B,EAAI,EAAGA,EAAIyvC,EAAKzvC,IACrB+4D,EAAK/4D,GAAG/D,WAEZ9D,KAAKwnJ,UAAUrjJ,OAAS,IAxD1B,yBA0DF,WACInE,KAAKqmK,WAAY,EACjBrmK,KAAKwnB,QAAS,EACdxnB,KAAKwnJ,UAAY,OA7DnB,2BA+DF,SAAcjrH,GACV,GAAIv8B,KAAKwnB,OACL,MAAM,IAAI,IAGV,O,EAAA,E,EAAA,K,0DAAA,gB,wCAAA,CAA2B+U,I,YApEjC,wBAuEF,SAAWA,GACP,GAAIv8B,KAAKwnB,OACL,MAAM,IAAI,IAET,OAAIxnB,KAAK6oI,UACVtsG,EAAWvH,MAAMh1B,KAAK8oI,aACf,IAAa5hH,OAEflnB,KAAKqmK,WACV9pI,EAAWz4B,WACJ,IAAaojB,QAGpBlnB,KAAKwnJ,UAAU5jJ,KAAK24B,GACb,IAAI,IAAoBv8B,KAAMu8B,MArF3C,0BAwFF,WACI,IAAMuP,EAAa,IAAI,IAEvB,OADAA,EAAWvlB,OAASvmB,KACb8rC,MA3FT,CAAuB,K,OA8F7BroC,EAAQ6B,OAAS,SAACm3B,EAAalW,GAC3B,OAAO,IAAIuiU,EAAiBrsT,EAAalW,I,EA/FvC,GAiGOuiU,EAAb,YACI,WAAYrsT,EAAalW,GAAM,kCAC3B,aACKkW,YAAcA,EACnB,EAAKlW,OAASA,EAHa,EADnC,yDAMI,SAAKhlB,GACD,IAAQk7B,EAAgBz8B,KAAhBy8B,YACJA,GAAeA,EAAY54B,MAC3B44B,EAAY54B,KAAKtC,KAT7B,mBAYI,SAAMo7B,GACF,IAAQF,EAAgBz8B,KAAhBy8B,YACJA,GAAeA,EAAYzH,OAC3Bh1B,KAAKy8B,YAAYzH,MAAM2H,KAfnC,sBAkBI,WACI,IAAQF,EAAgBz8B,KAAhBy8B,YACJA,GAAeA,EAAY34B,UAC3B9D,KAAKy8B,YAAY34B,aArB7B,wBAwBI,SAAWy4B,GAEP,OADmBv8B,KAAXumB,OAEGvmB,KAAKumB,OAAOriB,UAAUq4B,GAGtB,IAAarV,UA9BhC,CAAsCzjB,I,gaCvFtC,SAASslV,EAA0CpnV,EAAIC,GAGrD,GAHqE,EAALD,IAC9D,OACA,KAAiB,EAAG,SAAU,IACvB,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAmB,iBAAkB,sCAAwCA,EAAO+iU,uBAApF,CAA4G,oBAAqB/iU,EAAOgjU,uBAAwB,KAAhK,CAAsK,mBAAoBhjU,EAAOijU,0BAA2B,KAA5N,CAAkO,eAAgBjjU,EAAOkjU,wBAAyB,KAClR,KAAmB,IAAKljU,EAAOmjU,qBAEnC,SAASC,EAA0C1nV,EAAIC,GAGrD,GAHqE,EAALD,IAC9D,OACA,KAAiB,EAAG,SAAU,IACvB,EAALA,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAmB,oBAAqBA,EAAO2wO,uBAAwB,KAAvE,CAA6E,mBAAoB3wO,EAAO4wO,0BAA2B,KAAnI,CAAyI,eAAgB5wO,EAAO6wO,wBAAyB,KACzL,KAAmB,IAAK7wO,EAAO8wO,qBAEnC,SAASE,EAAkC3nV,EAAIC,GAG7C,GAH6D,EAALD,IACtD,OACA,KAAiB,EAAG,SAAU,IACvB,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAmB,iBAAkB,sCAAwCA,EAAO+iU,uBAApF,CAA4G,oBAAqB/iU,EAAOgjU,uBAAwB,KAAhK,CAAsK,mBAAoBhjU,EAAOijU,0BAA2B,KAA5N,CAAkO,eAAgBjjU,EAAOkjU,wBAAyB,KAClR,KAAmB,IAAKljU,EAAOmjU,qBAEnC,SAASG,EAAkC5nV,EAAIC,GAG7C,GAH6D,EAALD,IACtD,OACA,KAAiB,EAAG,SAAU,IACvB,EAALA,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAmB,oBAAqBA,EAAO2wO,uBAAwB,KAAvE,CAA6E,mBAAoB3wO,EAAO4wO,0BAA2B,KAAnI,CAAyI,eAAgB5wO,EAAO6wO,wBAAyB,KACzL,KAAmB,IAAK7wO,EAAO8wO,qBAEnC,IAAM3pV,EAAM,8wGASN+pV,E,YACF,WAAYz8U,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrB08U,EAA+B,YAAWD,EAAwB,WAElEE,EAAuC,IAAI,IAAe,uCAAwC,CACpG9iU,WAAY,OACZ9hB,QAGJ,WACI,MAAO,CAAE6kV,SArBK,Q,iBAqDZC,E,YACF,WAAY78U,EAAaia,EAAU9Z,EAAWgjK,EAAenpJ,GAAQ,2BACjE,YAAMha,KACDA,YAAcA,EACnB,EAAKG,UAAYA,EACjB,EAAK28U,UA1DK,IA2DV,EAAK3pO,OAAS,EACd,EAAK4pO,oBAAqB,EAE1B,EAAKl3T,KAAO,cACZ,IAAMm3T,EAAmBH,EAAmBI,WATqB,OAUjE,EAAKhB,uBAAyB,EAAKiB,4BAG9BF,EAAiB31U,IAAIlH,EAAU09B,OAChCm/S,EAAiB11U,IAAInH,EAAU09B,KAAM,IAAIj9B,IAAI,CApEvC,OAsEV,EAAKm8U,mBAAqB9iU,EAAS43K,MAAQ53K,EAAS03K,QACpD,EAAKwrJ,gBAAoC,mBAAlBh6K,KAChBnpJ,IAAaA,EAASojU,iBACzBpjU,IACIA,EAAS4iU,WACT,EAAKA,SAAW5iU,EAAS4iU,UAEzB5iU,EAASqjU,cACT,EAAKA,YAAcrjU,EAASqjU,cAxB6B,E,2DA6BrE,WAAiB,OAAOpqV,KAAK6pV,W,IAC7B,SAAa1pT,GACTngC,KAAK6pV,UAAY,YAAqB1pT,GACtCngC,KAAKgpV,uBAAyBhpV,KAAKiqV,6BAE9BjqV,KAAK8pV,oBAAsB9pV,KAAKqqV,YACjCrqV,KAAKsqV,qB,uBAIb,WACI,OAAOtqV,KAAKuqV,cAAgBvqV,KAAK2pV,SAAW,I,IAEhD,SAAgBpoV,GACZvB,KAAKuqV,aAAe,YAAqBhpV,K,iBAG7C,WACI,MAAqB,gBAAdvB,KAAK4yB,KAAyB5yB,KAAKkgH,OAAS,G,IAEvD,SAAUgyB,GACNlyI,KAAKkgH,OAAS3hG,KAAKukC,IAAI,EAAGvkC,KAAKG,IAAI,IAAK,YAAqBwzH,O,sBAEjE,WACI,IAAM7mI,EAAUrL,KAAK+M,YAAYnK,cAIjC5C,KAAKqqV,WAAa,YAAeh/U,IAAYrL,KAAKkN,UAAU09B,KAC5D5qC,KAAKsqV,mBAGL,IAAME,EAAiB,qCAAH,OAAwCxqV,KAAK8pV,mBAAqB,YAAc,GAAhF,cACpBz+U,EAAQ1I,UAAUE,IAAI2nV,K,8BAG1B,WACI,OAAQxqV,KAAK2pV,SAnHK,IAmH2B,I,yBAGjD,WACI,IAAMznE,EAAoC,EAA1BliR,KAAKopV,mBAAyBppV,KAAKoqV,YACnD,oBAAcloE,EAAd,YAAyBA,K,qCAG7B,WACI,OAAO,EAAI3jQ,KAAKu7L,GAAK95M,KAAKopV,qB,kCAG9B,WACI,MAAkB,gBAAdppV,KAAK4yB,KACE5yB,KAAKkpV,2BAA6B,IAAMlpV,KAAKkgH,QAAU,IAG9DlgH,KAAK8pV,oBAAoC,kBAAd9pV,KAAK4yB,KACQ,GAAjC5yB,KAAKkpV,0BAET,O,mCAGX,WACI,OAAOlpV,KAAKoqV,YAAcpqV,KAAK2pV,SAAW,M,8BAG9C,WACI,IAAMc,EAAYzqV,KAAKqqV,WACjBK,EAAkB1qV,KAAK6pV,UACvBc,EAAYf,EAAmBI,WACjCY,EAAsBD,EAAUz4U,IAAIu4U,GACxC,IAAKG,IAAwBA,EAAoBx2U,IAAIs2U,GAAkB,CACnE,IAAMG,EAAW7qV,KAAKkN,UAAU2K,cAAc,SAC9CgzU,EAASh8U,aAAa,wBAAyB7O,KAAKgpV,wBACpD6B,EAASr3O,YAAcxzG,KAAK8qV,oBAC5BL,EAAU3yU,YAAY+yU,GACjBD,IACDA,EAAsB,IAAIj9U,IAC1Bg9U,EAAUt2U,IAAIo2U,EAAWG,IAE7BA,EAAoB/nV,IAAI6nV,M,+BAIhC,WACI,IAAMK,EAAsB/qV,KAAKkpV,0BACjC,MA5IiC,46CA8I5B1nV,QAAQ,eAFN,UAEyB,IAAOupV,IAClCvpV,QAAQ,aAHN,UAGuB,GAAMupV,IAC/BvpV,QAAQ,YAJN,UAIsBxB,KAAKgpV,2B,uCAGtC,WAGI,OAAOhpV,KAAK2pV,SAAS13T,WAAWzwB,QAAQ,IAAK,S,CA5HpBioV,G,OA+HjCG,EAAmBrpV,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKopV,GAAoB,KAAyB,KAAoB,KAAyB,KAAkB,KAAyB,IAAU,GAAI,KAAyB,IAAuB,GAAI,KAAyBF,KACpTE,EAAmBzjV,UAAO,KAAyB,CAAEzF,KAAMkpV,EAAoBjpV,UAAW,CAAC,CAAC,yBAA0BoC,UAAW,CAAC,OAAQ,cAAe,WAAY,KAAM,EAAG,wBAAyBwV,SAAU,GAAIC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,IACnR,KAAmB,gBAA8B,gBAAbC,EAAIgxB,KAAyB,EAAI,KAArE,CAA2E,gBAA8B,gBAAbhxB,EAAIgxB,KAAyB,IAAM,KAA/H,CAAqI,gBAA8B,gBAAbhxB,EAAIgxB,KAAyBhxB,EAAIL,MAAQ,KAA/L,CAAqM,OAAQK,EAAIgxB,MACjN,KAAmB,QAAShxB,EAAI+nV,SAAU,KAA1C,CAAgD,SAAU/nV,EAAI+nV,SAAU,MACxE,KAAmB,0BAA2B/nV,EAAIsoV,mBACjD/nV,OAAQ,CAAE0zD,MAAO,QAASjjC,KAAM,OAAQ+2T,SAAU,WAAYS,YAAa,cAAe7oV,MAAO,SAAWmX,SAAU,CAAC,sBAAuBpW,SAAU,CAAC,MAAoC8D,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,sBAAuB,gBAAiB,YAAa,QAAS,cAAe,OAAQ,EAAG,YAAa,CAAC,KAAM,MAAO,KAAM,MAAO,EAAG,iBAAkB,oBAAqB,mBAAoB,eAAgB,EAAG,gBAAiB,CAAC,KAAM,MAAO,KAAM,MAAO,EAAG,oBAAqB,mBAAoB,eAAgB,EAAG,gBAAiB,CAAC,KAAM,MAAO,KAAM,QAAShG,SAAU,SAAqCqB,EAAIC,GAAgB,EAALD,IACnoB,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGonV,EAA2C,EAAG,EAAG,SAAU,GAChF,KAAkB,EAAGM,EAA2C,EAAG,EAAG,SAAU,GAChF,QACO,EAAL1nV,IACF,KAAmB,QAASC,EAAI+nV,SAAU,KAA1C,CAAgD,SAAU/nV,EAAI+nV,SAAU,MACxE,KAAkB,WAAyB,kBAAb/nV,EAAIgxB,MAClC,KAAmB,UAAWhxB,EAAIopV,eAClC,KAAiB,GACjB,KAAkB,gBAAgB,GAClC,KAAiB,GACjB,KAAkB,gBAAgB,KACjCzkV,WAAY,CAAC,IAAiB,KAAsBuS,OAAQ,CAACrZ,GAAM+G,cAAe,EAAGwiB,gBAAiB,IAO/G4gU,EAAmBI,WAAa,IAAI11U,Q,sBAmE9B22U,E,YACF,WAAYvoV,EAAYskB,EAAU2jB,EAAUulI,EAAenpJ,GAAQ,kCAC/D,YAAMrkB,EAAYskB,EAAU2jB,EAAUulI,EAAenpJ,KAChD6L,KAAO,gBAFmD,E,wCAD9Cg3T,G,OAMzBqB,EAAW1qV,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKyqV,GAAY,KAAyB,KAAoB,KAAyB,KAAkB,KAAyB,IAAU,GAAI,KAAyB,IAAuB,GAAI,KAAyBvB,KAC5RuB,EAAW9kV,UAAO,KAAyB,CAAEzF,KAAMuqV,EAAYtqV,UAAW,CAAC,CAAC,gBAAiBoC,UAAW,CAAC,OAAQ,cAAe,OAAQ,gBAAiB,EAAG,cAAe,wBAAyBwV,SAAU,EAAGC,aAAc,SAAiC7W,EAAIC,GAAgB,EAALD,IACvQ,KAAmB,QAASC,EAAI+nV,SAAU,KAA1C,CAAgD,SAAU/nV,EAAI+nV,SAAU,MACxE,KAAmB,0BAA2B/nV,EAAIsoV,mBACjD/nV,OAAQ,CAAE0zD,MAAO,SAAWvzD,SAAU,CAAC,MAAoC8D,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,sBAAuB,gBAAiB,YAAa,QAAS,cAAe,OAAQ,EAAG,YAAa,CAAC,KAAM,MAAO,KAAM,MAAO,EAAG,iBAAkB,oBAAqB,mBAAoB,eAAgB,EAAG,gBAAiB,CAAC,KAAM,MAAO,KAAM,MAAO,EAAG,oBAAqB,mBAAoB,eAAgB,EAAG,gBAAiB,CAAC,KAAM,MAAO,KAAM,QAAShG,SAAU,SAA6BqB,EAAIC,GAAgB,EAALD,IACzgB,OACA,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAG2nV,EAAmC,EAAG,EAAG,SAAU,GACxE,KAAkB,EAAGC,EAAmC,EAAG,EAAG,SAAU,GACxE,QACO,EAAL5nV,IACF,KAAmB,QAASC,EAAI+nV,SAAU,KAA1C,CAAgD,SAAU/nV,EAAI+nV,SAAU,MACxE,KAAkB,WAAyB,kBAAb/nV,EAAIgxB,MAClC,KAAmB,UAAWhxB,EAAIopV,eAClC,KAAiB,GACjB,KAAkB,gBAAgB,GAClC,KAAiB,GACjB,KAAkB,gBAAgB,KACjCzkV,WAAY,CAAC,IAAiB,KAAsBuS,OAAQ,CAACrZ,GAAM+G,cAAe,EAAGwiB,gBAAiB,I,sBAgDzGkiU,E,sDAENA,EAAyB3qV,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAK0qV,IAChGA,EAAyBhyU,UAAO,KAAwB,CAAExY,KAAMwqV,IAChEA,EAAyB/xU,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAiB,KAAe,O,wCCpZ/F,SAAUiyL,EAAS9vK,GACrB,OAAa,OAANA,GAA2B,iBAANA,EADhC,iC,kCCAA,gDACM,SAAUq3H,EAAUtkH,GACtB,OAAQ,YAAQA,IAASA,EAAMzgB,WAAWygB,GAAO,GAAM,I,sBCOlD,SAAUjsB,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,8bAAsFL,MAC1F,KAEJM,YACI,8bAAsFN,MAClF,KAERgB,SAAU,ySAAyDhB,MAC/D,KAEJiB,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,gGACJC,IAAK,4GACLC,KAAM,wHAEVutB,cAAe,uQACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAGM,4DAAbC,GACa,mCAAbA,GACa,wEAAbA,EAEOD,EACa,wEAAbC,GAA4C,uBAAbA,EAC/BD,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1CC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,IAAIi3O,EAAY,IAAPp3O,EAAaE,EACtB,OAAIk3O,EAAK,IACE,0DACAA,EAAK,IACL,iCACAA,EAAK,KACL,sEACAA,EAAK,KACL,qBACAA,EAAK,KACL,sEAEA,sBAGf5kQ,SAAU,CACNC,QAAS,qEACTC,QAAS,+DACTC,SAAU,wFACVC,QAAS,kDACTC,SAAU,8FACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,oCACRC,KAAM,oCACNC,EAAG,sEACHC,GAAI,0CACJ/B,EAAG,oDACHgC,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJhN,EAAG,wCACHiN,GAAI,wBACJG,EAAG,wCACHC,GAAI,wBACJC,EAAG,wCACHC,GAAI,yBAGRC,uBAAwB,yFACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,4BACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,kCACpB,QACI,OAAOA,IAGnB2rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,UAAM,MAEhC+vC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,KAAM,WAEhCmkB,KAAM,CAEFC,IAAK,EACLC,IAAK,KA7GyB/gB,CAAQ,EAAQ,U,8ICL7CqmV,EAAb,YACI,WAAY7kK,EAAS/pJ,GAAU,M,IAAA,2B,EAC3B,K,EAAA,E,kBAAA,E,sGACK+pJ,QAAUA,EACf,EAAK/pJ,WAAaA,EAClB,EAAK/U,QAAS,EAJa,EADnC,gEAOI,WACI,IAAIxnB,KAAKwnB,OAAT,CAGAxnB,KAAKwnB,QAAS,EACd,IAAM8+J,EAAUtmL,KAAKsmL,QACf9+B,EAAY8+B,EAAQ9+B,UAE1B,GADAxnJ,KAAKsmL,QAAU,KACV9+B,GAAkC,IAArBA,EAAUrjJ,SAAgBmiL,EAAQjgB,YAAaigB,EAAQ9+J,OAAzE,CAGA,IAAM4jU,EAAkB5jM,EAAUv+I,QAAQjJ,KAAKu8B,aACtB,IAArB6uT,GACA5jM,EAAUj/G,OAAO6iT,EAAiB,SApB9C,C,UAAyC,I,oCCEzChuT,EAAOC,QAAUguT,a,sBCMR,SAAUhpU,GAAU,aAIzB,IAAIO,EAAS,CACL,iCACA,6CACA,2BACA,iCACA,qBACA,qBACA,uCACA,2BACA,6CACA,uCACA,iCACA,kCAEJg3B,EAAO,CAAC,qBAAO,2BAAQ,iCAAS,2BAAQ,2BAAQ,qBAAO,4BAElDv3B,EAAOM,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbW,SAAUq2B,EACVp2B,cAAeo2B,EACfn2B,YAAam2B,EACbj2B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAEVutB,cAAe,wCACfmuF,KAAM,SAAUnhF,GACZ,MAAO,uBAAUA,GAErB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,qBAEJ,sBAEXxtB,SAAU,CACNC,QAAS,oBACTC,QAAS,sCACTC,SAAU,2EACVC,QAAS,sCACTC,SAAU,mFACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,kBACNC,EAAG,oDACHC,GAAI,oCACJ/B,EAAG,kCACHgC,GAAI,wBACJC,EAAG,wCACHC,GAAI,8BACJhN,EAAG,8CACHiN,GAAI,oCACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,kCACHC,GAAI,yBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,UAAM,MAEhC+vC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,KAAM,WAEhCmkB,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB/gB,CAAQ,EAAQ,U,kCCH1Ds4B,EAAOC,QAAUiuT,U,sBCOR,SAAUjpU,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,oFAAoFL,MACxF,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,6CAA6ChB,MAAM,KAC7DiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVutB,cAAe,8BACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,SAAbC,EACOD,EACa,cAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbC,GAAsC,UAAbA,EACzBD,EAAO,QADX,GAIXC,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGf96B,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNC,EAAG,gBACHC,GAAI,UACJ/B,EAAG,UACHgC,GAAI,WACJC,EAAG,QACHC,GAAI,SACJhN,EAAG,SACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/gB,CAAQ,EAAQ,U,kCCL1D,IAAIwnS,EAAkBxvQ,EAAQ,QAE1ByuT,EAAyB,WAC5B,QAASj/C,GAGVi/C,EAAuBC,wBAA0B,WAEhD,IAAKl/C,EACJ,OAAO,KAER,IACC,OAA8D,IAAvDA,EAAgB,GAAI,SAAU,CAAE/qS,MAAO,IAAK4C,OAClD,MAAO8vB,GAER,OAAO,IAITmJ,EAAOC,QAAUkuT,G,8ICpBJ,EAAb,YACI,WAAY3kT,EAAQ6kT,EAAYr3O,GAAU,M,IAAA,2B,EACtC,K,EAAA,E,kBAAA,E,sGACKxtE,OAASA,EACd,EAAK6kT,WAAaA,EAClB,EAAKr3O,WAAaA,EAClB,EAAKzqG,MAAQ,EALyB,EAD9C,0DAQI,SAAMpI,GACFvB,KAAK4mC,OAAO8kT,WAAW1rV,KAAKyrV,WAAYlqV,EAAOvB,KAAKo0G,WAAYp0G,KAAK2J,QAAS3J,QATtF,oBAWI,SAAOg1B,GACHh1B,KAAK4mC,OAAO+kT,YAAY32T,EAAOh1B,MAC/BA,KAAK4V,gBAbb,uBAeI,WACI5V,KAAK4mC,OAAOglT,eAAe5rV,MAC3BA,KAAK4V,kBAjBb,C,UAAqC,G,wBCE/B,SAAUq+F,EAAkB43O,EAAiBjvT,EAAQ6uT,EAAYr3O,GAA0F,IAA9EwoD,EAA8E,uDAA5D,IAAI,EAAgBivL,EAAiBJ,EAAYr3O,GAClJ,IAAIwoD,EAAgBp1I,OAGpB,OAAIoV,aAAkB49F,EAAA,EACX59F,EAAO14B,UAAU04J,GAErB,OAAAuhB,EAAA,GAAYvhJ,EAAZ,CAAoBggI,K,sBCEtB,SAAUv6I,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,kGAA6FL,MACjG,KAEJM,YAAa,yDAAoDN,MAAM,KACvEgB,SAAU,oEAAqDhB,MAAM,KACrEiB,cAAe,0CAAgCjB,MAAM,KACrDkB,YAAa,4BAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACN4gH,KAAM,uCAEVrzF,cAAe,cACfmuF,KAAM,SAAUnhF,GACZ,MAAyC,MAAlCA,EAAMzO,OAAO,GAAGnzB,eAE3B+0B,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpC3tB,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,sBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,gBACNC,EAAG,kBACHC,GAAI,cACJ/B,EAAG,aACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,WACHiN,GAAI,WACJG,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyB/gB,CAAQ,EAAQ,U,kCCT3C,SAASgnV,EAAkBn8S,EAAK2H,IAClC,MAAPA,GAAeA,EAAM3H,EAAIxrC,UAAQmzC,EAAM3H,EAAIxrC,QAE/C,IAAK,IAAI0D,EAAI,EAAGkkV,EAAO,IAAIxhV,MAAM+sC,GAAMzvC,EAAIyvC,EAAKzvC,IAC9CkkV,EAAKlkV,GAAK8nC,EAAI9nC,GAGhB,OAAOkkV,EAPT,iC,kCCIA,IAAIC,EAAgB,kDAChB7vG,EAAQ3/N,OAAOkW,UAAUT,SACzB6wB,EAAMvkC,KAAKukC,IACXmpS,EAAW,oBAEXC,EAAW,SAAkBnwU,EAAGC,GAGhC,IAFA,IAAI2zB,EAAM,GAED9nC,EAAI,EAAGA,EAAIkU,EAAE5X,OAAQ0D,GAAK,EAC/B8nC,EAAI9nC,GAAKkU,EAAElU,GAEf,IAAK,IAAI0M,EAAI,EAAGA,EAAIyH,EAAE7X,OAAQoQ,GAAK,EAC/Bo7B,EAAIp7B,EAAIwH,EAAE5X,QAAU6X,EAAEzH,GAG1B,OAAOo7B,GAGPw8S,EAAQ,SAAeC,EAASvhV,GAEhC,IADA,IAAI8kC,EAAM,GACD9nC,EAAIgD,GAAU,EAAG0J,EAAI,EAAG1M,EAAIukV,EAAQjoV,OAAQ0D,GAAK,EAAG0M,GAAK,EAC9Do7B,EAAIp7B,GAAK63U,EAAQvkV,GAErB,OAAO8nC,GAGP08S,EAAQ,SAAU18S,EAAK28S,GAEvB,IADA,IAAI59S,EAAM,GACD7mC,EAAI,EAAGA,EAAI8nC,EAAIxrC,OAAQ0D,GAAK,EACjC6mC,GAAOiB,EAAI9nC,GACPA,EAAI,EAAI8nC,EAAIxrC,SACZuqC,GAAO49S,GAGf,OAAO59S,GAGXtR,EAAOC,QAAU,SAAckvT,GAC3B,IAAI//T,EAASxsB,KACb,GAAsB,mBAAXwsB,GAAyB2vN,EAAMxkM,MAAMnrB,KAAYy/T,EACxD,MAAM,IAAIz5S,UAAUw5S,EAAgBx/T,GAyBxC,IAvBA,IAEIggU,EAFA3sV,EAAOssV,EAAM7yU,UAAW,GAGxBmzU,EAAS,WACT,GAAIzsV,gBAAgBwsV,EAAO,CACvB,IAAI5vT,EAASpQ,EAAOmrB,MAChB33C,KACAksV,EAASrsV,EAAMyZ,YAEnB,OAAIkD,OAAOogB,KAAYA,EACZA,EAEJ58B,KAEX,OAAOwsB,EAAOmrB,MACV40S,EACAL,EAASrsV,EAAMyZ,aAKnBozU,EAAc5pS,EAAI,EAAGt2B,EAAOroB,OAAStE,EAAKsE,QAC1CwoV,EAAY,GACP9kV,EAAI,EAAGA,EAAI6kV,EAAa7kV,IAC7B8kV,EAAU9kV,GAAK,IAAMA,EAKzB,GAFA2kV,EAAQ70K,SAAS,SAAU,oBAAsB00K,EAAMM,EAAW,KAAO,4CAAjEh1K,CAA8G80K,GAElHjgU,EAAOkG,UAAW,CAClB,IAAIk6T,EAAQ,aACZA,EAAMl6T,UAAYlG,EAAOkG,UACzB85T,EAAM95T,UAAY,IAAIk6T,EACtBA,EAAMl6T,UAAY,KAGtB,OAAO85T,I,sBCzEF,SAAUnqU,GAAU,aAIzB,SAASwqU,EAAyBnnU,EAAQs3I,EAAergJ,GAMrD,OAAO+I,EAAS,IAoBpB,SAAkB8jE,EAAM9jE,GACpB,OAAe,IAAXA,EAKR,SAAsB8jE,GAClB,IAAIsjQ,EAAgB,CAChBhqU,EAAG,IACH9G,EAAG,IACHhE,EAAG,KAEP,YAAsCvT,IAAlCqoV,EAActjQ,EAAKz5C,OAAO,IACnBy5C,EAEJsjQ,EAActjQ,EAAKz5C,OAAO,IAAMy5C,EAAKx+B,UAAU,GAb3C+hS,CAAavjQ,GAEjBA,EAxBeppB,CALT,CACTt7C,GAAI,WACJO,GAAI,MACJJ,GAAI,UAE8BtI,GAAM+I,GAchD,SAASsnU,EAAWtnU,GAChB,OAAIA,EAAS,EACFsnU,EAAWtnU,EAAS,IAExBA,EAoBX,IAAIjD,EAAc,CACV,QACA,mBACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EACI,uJAuBJuqU,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGC5qU,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,qFAAgFL,MACpF,KAEJM,YAAa,wDAAmDN,MAAM,KACtEgB,SAAU,kDAA6ChB,MAAM,KAC7DiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,wBAAwBlB,MAAM,KAC3C2qU,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,sBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBvqU,YAAaA,EACbQ,iBAAkBR,EAClBS,kBA9CI,6FA+CJC,uBA7CI,gEA8CJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAElBkB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,0BACTC,SAAU,eACVC,QAAS,qBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,cACNC,EAAG,2BACHC,GAAI,YACJ/B,EAAG,cACHgC,GAAI+nU,EACJ9nU,EAAG,SACHC,GAAI,SACJhN,EAAG,YACHiN,GAAI4nU,EACJznU,EAAG,SACHC,GAAIwnU,EACJvnU,EAAG,WACHC,GAvIR,SAAiCG,GAC7B,OAAQsnU,EAAWtnU,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YAgIxBF,uBAAwB,qBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,QAAO,QAGvCC,KAAM,CACFC,IAAK,EACLC,IAAK,GAET2rB,cAAe,YACfmuF,KAAM,SAAU96H,GACZ,MAAiB,SAAVA,GAEX8sC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAOH,EAAO,GAAK,OAAS,UAtKE5sC,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,2LAA8IL,MAClJ,KAEJM,YACI,sEAAiEN,MAC7D,KAERG,YAAa,yCACbS,kBAAmB,yCACnBD,iBAAkB,yCAClBE,uBAAwB,yCACxBG,SAAU,sEAAkDhB,MAAM,KAClEiB,cAAe,uCAAwBjB,MAAM,KAC7CkB,YAAa,uCAAwBlB,MAAM,KAC3CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNC,EAAG,wBACHC,GAAI,iBACJ/B,EAAG,YACHgC,GAAI,YACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,QACJG,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1DyB/gB,CAAQ,EAAQ,U,sBCIjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,ocAAuFL,MAC3F,KAEJM,YAAa,sOAAkDN,MAAM,KACrEgB,SAAU,mSAAwDhB,MAC9D,KAEJiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,8EAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,mDACTC,QAAS,6CACTC,SAAU,wCACVC,QAAS,mDACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,wFACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0FAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,8BACNC,EAAG,wFACHC,GAAI,gDACJ/B,EAAG,gEACHgC,GAAI,0CACJC,EAAG,8CACHC,GAAI,8BACJhN,EAAG,8CACHiN,GAAI,8BACJG,EAAG,0DACHC,GAAI,0CACJC,EAAG,gEACHC,GAAI,2CAERC,uBAAwB,0FACxBC,QAAS,SAAUC,GACf,IAAI47S,EAAY57S,EAAS,GACrB2nU,EAAc3nU,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,gBACO,IAAhB2nU,EACA3nU,EAAS,gBACT2nU,EAAc,IAAMA,EAAc,GAClC3nU,EAAS,gBACK,IAAd47S,EACA57S,EAAS,gBACK,IAAd47S,EACA57S,EAAS,gBACK,IAAd47S,GAAiC,IAAdA,EACnB57S,EAAS,gBAETA,EAAS,iBAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyB/gB,CAAQ,EAAQ,U,kCCD1Ds4B,EAAOC,QAAU,SAASiwT,EAAMvxU,EAAGC,GACjC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEm0B,cAAgBl0B,EAAEk0B,YAAa,OAAO,EAE5C,IAAI/rC,EAAQ0D,EAAG4U,EACf,GAAIlS,MAAMyL,QAAQ+F,GAAI,CAEpB,IADA5X,EAAS4X,EAAE5X,SACG6X,EAAE7X,OAAQ,OAAO,EAC/B,IAAK0D,EAAI1D,EAAgB,GAAR0D,KACf,IAAKylV,EAAMvxU,EAAElU,GAAImU,EAAEnU,IAAK,OAAO,EACjC,OAAO,EAKT,GAAIkU,EAAEm0B,cAAgBgxF,OAAQ,OAAOnlH,EAAEwK,SAAWvK,EAAEuK,QAAUxK,EAAE4kT,QAAU3kT,EAAE2kT,MAC5E,GAAI5kT,EAAE+8B,UAAYt8B,OAAOkW,UAAUomB,QAAS,OAAO/8B,EAAE+8B,YAAc98B,EAAE88B,UACrE,GAAI/8B,EAAEkW,WAAazV,OAAOkW,UAAUT,SAAU,OAAOlW,EAAEkW,aAAejW,EAAEiW,WAIxE,IADA9tB,GADAsY,EAAOD,OAAOC,KAAKV,IACL5X,UACCqY,OAAOC,KAAKT,GAAG7X,OAAQ,OAAO,EAE7C,IAAK0D,EAAI1D,EAAgB,GAAR0D,KACf,IAAK2U,OAAOkW,UAAUgb,eAAexY,KAAKlZ,EAAGS,EAAK5U,IAAK,OAAO,EAEhE,IAAKA,EAAI1D,EAAgB,GAAR0D,KAAY,CAC3B,IAAI8U,EAAMF,EAAK5U,GAEf,IAAKylV,EAAMvxU,EAAEY,GAAMX,EAAEW,IAAO,OAAO,EAGrC,OAAO,EAIT,OAAOZ,GAAIA,GAAKC,GAAIA,I,+wGCrChBuxU,oB,8GACF,sIACIvtV,KAAKwtV,QAAS,IAGhBC,sBAAwB,IAAI,6CAAe,gCAC3CC,gBAAkB,IAAI,6CAAe,uCAC3C,SAASC,YACL,OAAO,KAEX,IAAMC,aAAe,sBACrB,SAASC,aAAa14J,GAClB,IAAM24J,EAAkB,CACpBN,QAAQ,EACR96O,QAASi7O,UACTI,qBAAiBtpV,EACjBupV,oBAAgBvpV,EAChBtD,KAAMysV,aACNK,WAAW,EACXC,SAAS,EAGT5rV,SAAU,CACNirF,OAAO,EACP4gQ,MAAM,EACN3M,SAAS,EACT4M,QAAQ,EACRC,OAAQ,SACRC,MAAM,EACNt/T,MAAM,EACNi2O,SAAS,EACTvsO,UAAU,EACV1V,MAAM,IAGVgF,EAA8B,mBAAbmtK,EAA0BA,IAAaA,EAKtD/8J,EAAS5b,OAAOuqB,OAAO,GAAI+mT,EAAiB,CAAExrV,SADnC0lB,EAAQ1lB,YAHT0lB,EAAQkmU,SAClB,CAAE3gQ,OAAO,EAAM6gQ,QAAQ,EAAMprU,MAAM,IAEO8qU,EAAgBxrV,UACA0lB,GAChE,GAAIoQ,EAAOo1T,QAAUp1T,EAAOo1T,OAAS,EACjC,MAAM,IAAIn5T,MAAJ,uDAA0D+D,EAAOo1T,SAE3E,OAAOp1T,EAGX,IAAMm2T,eAAiB,iBACjBC,QAAU,UACVC,MAAQ,QACRC,SAAW,WACXC,OAAS,SACTC,MAAQ,QACRC,cAAgB,gBAChBC,mBAAqB,qBACrBC,cAAgB,gBAChBC,eAAiB,iBACjBC,aAAe,eACfC,aAAe,eACfC,gBAAkB,kBAClBC,c,8GACF,WAAYrsR,EAAQy5P,GAIhB,GAJyB,yHACzBx8T,KAAK+iE,OAASA,EACd/iE,KAAKw8T,UAAYA,EACjBx8T,KAAKU,KAAO6tV,oBACe,IAAhBxrR,EAAOriE,KACd,MAAM,IAAI2zB,MAAM,wFAKtBg7T,Q,8GACF,sIACIrvV,KAAKU,KAAO8tV,UAGdc,M,8GACF,WAAY9yB,GAAS,yHACjBx8T,KAAKw8T,UAAYA,EACjBx8T,KAAKU,KAAO+tV,QAGdc,S,8GACF,WAAY/yB,GAAS,yHACjBx8T,KAAKw8T,UAAYA,EACjBx8T,KAAKU,KAAOguV,WAGdc,O,8GACF,WAAYhzB,GAAS,yHACjBx8T,KAAKw8T,UAAYA,EACjBx8T,KAAKU,KAAOiuV,SAGdc,M,8GACF,sIACIzvV,KAAKU,KAAOkuV,QAGdc,a,8GACF,WAAY1pU,GAAE,yHACVhmB,KAAKgmB,GAAKA,EACVhmB,KAAKU,KAAOmuV,gBAGdc,iB,8GACF,WAAYxmV,EAAOC,GAAkB,IAAb0S,IAAa,kLACjC9b,KAAKmJ,MAAQA,EACbnJ,KAAKoJ,IAAMA,EACXpJ,KAAK8b,OAASA,EACd9b,KAAKU,KAAOouV,qBAGdc,Y,8GACF,WAAYjmV,GAAK,yHACb3J,KAAK2J,MAAQA,EACb3J,KAAKU,KAAOquV,gBAGdc,a,8GACF,WAAYC,GAAQ,yHAChB9vV,KAAK8vV,SAAWA,EAChB9vV,KAAKU,KAAOsuV,iBAGde,Y,8GACF,WAAYC,GAAe,yHACvBhwV,KAAKgwV,gBAAkBA,EACvBhwV,KAAKU,KAAOuuV,eAGdgB,Y,8GACF,WAAYzkQ,GAAM,yHACdxrF,KAAKwrF,OAASA,EACdxrF,KAAKU,KAAOwuV,eAGdgB,e,8GACF,WAAY1kQ,GAAM,yHACdxrF,KAAKwrF,OAASA,EACdxrF,KAAKU,KAAOyuV,kB,kCAIdgB,E,+ZAA2B,4C,OAEjCA,EAAmB5vV,UAAO,SAAoCC,GAAK,OAAO4vV,qCAAgC5vV,GAAK2vV,IAC/GA,EAAmBvrV,WAAQ,8CAA0B,CAAEC,MAAOsrV,EAAoBrrV,QAASqrV,EAAmB5vV,Y,KACxG6vV,qCAAgD,8CAA6BD,oBAKnF,SAASznF,WAAW1mQ,EAAOm9C,GACvB,OAAOn9C,EAAMmT,OAAO,SAAC7D,GAAD,OAAU6tC,EAAOl2C,QAAQqI,GAAQ,IAKzD,SAAS++U,YAAYC,GACjB,IAAQC,EAAsCD,EAAtCC,eAAgBC,EAAsBF,EAAtBE,kBAKxB,OAAIA,GAAqBD,EAAepsV,OAClBosV,EAAeA,EAAepsV,OAAS,GAAjDkE,MAGMkoV,EAAeC,GAAzBnoV,MAGZ,SAASooV,aAAaH,GAClB,OAAOA,EAAYI,YAAYJ,EAAYK,aAAe,GAK9D,SAASC,WAAW7tR,GAChB,OAAO,IAAIqsR,cAAcrsR,GAASroB,KAAKqR,OAK3C,SAAS8kS,gBAAgB9C,EAAiBrhN,GACtC,OAAOlwH,OAAOC,KAAKiwH,GAASj3H,OAAO,SAACq7U,EAAkBC,GAClD,IAAMh0K,EAAMpuK,OAAOoiV,GAEnB,OADAD,EAAiB/zK,GAAOi0K,eAAejD,EAAiBrhN,EAAQqwC,GAAMA,GAC/D+zK,GACR,IAKP,SAASE,eAAejD,EAAiBhrR,EAAQguR,GAC7C,OAAOv0U,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIg8B,GAAS,CAAEA,OAAQgrR,EAAgBhrR,EAAOA,OAAQguR,KAK7F,SAASE,eAAejD,EAAgB/jV,GACpC,OAAOA,EAAOR,IAAI,SAACynV,EAAen0K,GAAhB,MAAyB,CACvC10K,MAAO8oV,cAAcnD,EAAgBkD,EAAc7oV,MAAO00K,GAC1D/nJ,MAAOk8T,EAAcl8T,SAM7B,SAASm8T,cAAcnD,EAAgB3lV,EAAO+oV,GAC1C,OAAOpD,EAAe3lV,EAAO+oV,GAKjC,SAASC,oBAAoBj5T,GACzB,OAAOA,EAAOiI,WAAajI,EAAOk5T,iBAAmBl5T,EAAOm5T,iBAKhE,SAASC,kBAAkBlB,EAAajwT,EAAWoxT,EAAUC,GACzD,IAAMC,EAA0B,GAC1BC,EAAsB,GACtBC,EAAyB,GAa/B,OAZAvB,EAAYwB,gBAAgBz+U,QAAQ,SAAC2S,EAAI+2J,GACrC,IAAMg1K,EAAezB,EAAYI,YAAY1qU,GACxC+rU,IAEDh1K,GACAi1K,iBAAiB1B,EAAYC,eAAexzK,GAAMg1K,EAAc1xT,EAAWoxT,EAAUC,KAGzFE,EAAoB5rU,GAAM+rU,EAC1BJ,EAAwB/tV,KAAKoiB,GAC7B6rU,EAAuBjuV,KAAK0sV,EAAYC,eAAexzK,QAEpDvgK,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIupT,GAAc,CAAEwB,gBAAiBH,EAAyBjB,YAAakB,EAAqBrB,eAAgBsB,IAKvJ,SAASG,iBAAiB3pV,EAAO06D,EAAQ1iC,EAAWoxT,EAAUQ,GAC1D,IAAMC,EAAiB7xT,IAAcA,EAAUh4B,EAAO06D,EAAOA,QACvDovR,EAAgBV,IACjB1uR,EAAOA,OAAOriE,KAAK4wC,MAAMmgT,EAAShoV,IAAI,SAACmb,GAAD,OAAOgvP,aAAahvP,KAAIorB,KAAK,MAClEoiT,EAAiBH,GACnBlvR,EAAOA,OAAOriE,KAAK4wC,MAAM2gT,EAAYxoV,IAAI,SAACmb,GAAD,OAAOgvP,aAAahvP,KAAIorB,KAAK,MAC1E,OAAOkiT,GAAkBC,GAAiBC,EAM9C,SAASx+E,aAAahvP,GAClB,OAAOA,EAAEpjB,QAAQ,sBAAuB,QAG5C,IAAM6wV,qBAAuB,CACzBC,MAAO,QACPC,SAAU,WACVC,KAAM,OACNC,OAAQ,UAENC,yBAA2B,IAAI,6CAAe,iD,iCAC9CC,kB,WACF,2BAAYC,EAAmBx6T,EAAQy6T,GAAU,yIAC7C7yV,KAAKo4B,OAASA,EACdp4B,KAAK6yV,WAAaA,EAClB7yV,KAAK4yV,kBAAoBA,EACzB5yV,KAAK8yV,sB,4JAET,SAAO/vR,EAAQ16D,GAAK,WAChB,GAAKrI,KAAK4yV,kBAgBV,GAAI7vR,EAAOriE,OAAS6tV,eAAgB,CAChC,GAAIlmV,EAAM0qV,UAAY1qV,EAAMglF,SACxB,OAEJ,IAAM0R,EAAesxP,YAAYhoV,GACjC,GAAIgpV,oBAAoBrxV,KAAKo4B,SACzB45T,iBAAiBjzP,EAAch8B,EAAQ/iE,KAAKo4B,OAAOiI,UAAWrgC,KAAKo4B,OAAOk5T,gBAAiBtxV,KAAKo4B,OAAOm5T,kBACvG,OAEJ,IAAMyB,EAAiBhzV,KAAKo4B,OAAO41T,eAC7BmD,cAAcnxV,KAAKo4B,OAAO41T,eAAgBjvP,EAAc12F,EAAMmoV,mBAC9DzxP,EACAk0P,EAAkBjzV,KAAKo4B,OAAO21T,gBAC9BiD,eAAehxV,KAAKo4B,OAAO21T,gBAAiBhrR,EAAQ16D,EAAMsoV,cAC1D5tR,EACN/iE,KAAKkzV,oBAAoB,kBAAM,EAAKC,oBAAoBxnQ,KAAKsnQ,EAAiBD,SAE7E,CAED,IAAMI,EAAuB52U,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI1+B,GAAQ,CAAEypV,gBAAiBzpV,EAAMypV,gBAAiBpB,YAAa1wV,KAAKo4B,OAAO21T,gBAC9H8C,gBAAgB7wV,KAAKo4B,OAAO21T,gBAAiB1lV,EAAMqoV,aACnDroV,EAAMqoV,YAAaH,eAAgBvwV,KAAKo4B,OAAO41T,eAC/CiD,eAAejxV,KAAKo4B,OAAO41T,eAAgB3lV,EAAMkoV,gBACjDloV,EAAMkoV,iBAChBvwV,KAAKkzV,oBAAoB,kBAAM,EAAKN,kBAAkBjnQ,KAAK,KAAMynQ,EAAsB,EAAKC,mBAAmB,EAAKj7T,c,qCAG5H,WAAuB,WACnB,OAAKp4B,KAAK4yV,kBAGH,IAAI,qCAAW,SAACr2T,GACnB,IAAMiqJ,EAAa,EAAKosK,kBAAkB98U,QAAQ,EAAKu9U,mBAAmB,EAAKj7T,SAI/E,OAHA,EAAK+6T,oBAAsB3sK,EAC3BA,EAAW8+G,OACX9+G,EAAWtiL,UAAU,SAAC6L,GAAD,OAAYwsB,EAAW14B,KAAKkM,KAC1Cy2K,EAAW5wK,cAPX,uC,iCAUf,WAAmB,WAET09U,EAAWtzV,KAAKuzV,0BAA0BvvV,KAAK,0DAE/CwvV,EAASF,EAAStvV,KAAK,uDAAO,SAAC+L,GAAD,OAAYA,EAAOrP,OAAS2xV,qBAAqBC,SAE/EmB,EAAQH,EAAStvV,KAAK,uDAAO,SAAC+L,GAAD,OAAYA,EAAOrP,OAAS2xV,qBAAqBG,QAE9EkB,EAAiBJ,EAAStvV,KAAK,uDAAO,SAAC+L,GAAD,OAAYA,EAAOrP,OAAS2xV,qBAAqBE,WAAW,uDAAI,SAACxiV,GAAD,OAAY,EAAK4jV,aAAa5jV,EAAO04H,WAAW,uDAAU,SAAC1lE,GACnK,OAAIA,EAAOriE,OAASuuV,aAST,EAAK4D,WAAW7uV,KAAK,uDAAO,SAAC++D,GAAD,OAAYA,EAAOriE,OAAS,6CAAS,uDAAQ,KAAO,uDAAa,KAAO,uDAAI,kBAAMqiE,IAAS,uDAAW,kBAAM,6CAAGA,KAAU,uDAAK,IAG1J,6CAAGA,MAKZ6wR,EADWN,EAAStvV,KAAK,uDAAO,SAAC+L,GAAD,OAAYA,EAAOrP,OAAS2xV,qBAAqBI,SAAS,uDAAI,SAAC1iV,GAAD,OAAY,EAAK4jV,aAAa5jV,EAAO04H,YACtGzkI,KAAK,uDAAUyvV,IAC5CI,EAAmBH,EAAe1vV,KAAK,uDAAUyvV,IACvDzzV,KAAKwzV,OAASA,EAAOxvV,KAAK,uDAAUyvV,IAEpCzzV,KAAKioU,SAAWjoU,KAAKwzV,OAAOxvV,KAAK,uDAAU,kBAAM4vV,KACjD5zV,KAAK0zV,eAAiB1zV,KAAKwzV,OAAOxvV,KAAK,uDAAU,kBAAM6vV,O,0BAE3D,SAAAF,aAAa5wR,QACT,MAAyB,iBAAXA,OAAsBo2G,KAAK,IAAD,OAAKp2G,OAAL,MAAkBA,S,gCAE9D,SAAmB3qC,GACf,IAAM07T,EAAmB,CACrB3yV,KAAMi3B,EAAOj3B,KACbmB,SAAU81B,EAAO91B,SACjB2rV,UAAW71T,EAAO61T,WAKtB,OAHsB,IAAlB71T,EAAOo1T,SACPsG,EAAiBtG,OAASp1T,EAAOo1T,QAE9BsG,I,iCAEX,SAAoBnoQ,GAChB,IACIA,IAEJ,MAAOhvD,GACHoO,QAAQ24B,KAAK,uEAAwE/mC,Q,UAIjGg2T,kBAAkBpyV,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKmyV,mBAAmB,8CAAgBD,0BAA2B,8CAAgBjF,uBAAwB,8CAAgB0C,sBACxMwC,kBAAkB/tV,WAAQ,8CAA0B,CAAEC,MAAO8tV,kBAAmB7tV,QAAS6tV,kBAAkBpyV,Y,qBAiBrGwzV,YAAc,CAAErzV,KAAM,4CACtBszV,UAAY,iCACZC,iBAAmB,CAAEvzV,KAAMszV,WAIjC,SAASE,iBAAiBljQ,EAASjuB,EAAQ16D,EAAO2sB,EAAOw2I,GACrD,GAAIx2I,EACA,MAAO,CACH3sB,QACA2sB,MAAO,wCAGf,IACIm/T,EADA54Q,EAAYlzE,EAEhB,IACIkzE,EAAYyV,EAAQ3oF,EAAO06D,GAE/B,MAAOpmC,GACHw3T,EAAYx3T,EAAI1K,WAChBu5I,EAAaE,YAAY/uI,GAE7B,MAAO,CACHt0B,MAAOkzE,EACPvmD,MAAOm/T,GAMf,SAASC,gBAAgB7D,EAAgB8D,EAA0BrjQ,EAASsjQ,EAAgB5D,EAAaoB,EAAiByC,EAAkB/oL,EAAcn+E,GAGtJ,GAAIgnQ,GAA4B9D,EAAepsV,QAC3CosV,EAAepsV,SAAW2tV,EAAgB3tV,OAC1C,OAAOosV,EAMX,IAJA,IAAMiE,EAAqBjE,EAAe/mV,MAAM,EAAG6qV,GAG7CI,EAAuB3C,EAAgB3tV,QAAUkpF,EAAW,EAAI,GAC7DxlF,EAAIwsV,EAA0BxsV,EAAI4sV,EAAsB5sV,IAAK,CAClE,IAAMioV,EAAWgC,EAAgBjqV,GAC3Bk7D,EAAS2tR,EAAYZ,GAAU/sR,OAC/B2xR,EAAgBF,EAAmB3sV,EAAI,GACvC8sV,EAAgBD,EAAgBA,EAAcrsV,MAAQisV,EACtDM,EAAgBF,EAAgBA,EAAc1/T,WAAQvwB,EAEtDqwF,EADay/P,EAAiBtrV,QAAQ6mV,IAAa,EAEnD4E,EACAR,iBAAiBljQ,EAASjuB,EAAQ4xR,EAAeC,EAAeppL,GACtEgpL,EAAmB5wV,KAAKkxF,GAO5B,OAHIzH,GACAmnQ,EAAmB5wV,KAAK2sV,EAAeA,EAAepsV,OAAS,IAE5DqwV,EAEX,SAASK,iBAAiBC,EAAuBC,GAC7C,MAAO,CACHC,aAAcD,OAAetwV,EAAW,IACxCksV,aAAc,EACdD,YAAa,CAAEv/S,EAAGy/S,WAAWmD,cAC7BjC,gBAAiB,CAAC,GAClByC,iBAAkB,GAClBD,eAAgBQ,EAChBtE,kBAAmB,EACnBD,eAAgB,GAChBwC,UAAU,EACV1lQ,UAAU,GAMlB,SAAS4nQ,gBAAgBH,EAAuBI,EAAoB1pL,EAAcupL,GAA4B,IAAZ/sU,EAAY,uDAAF,GAIxG,OAAO,SAACgpE,GAAD,OAAa,SAACs/P,EAAayB,GAC9B,MAA6JzB,GAAe4E,EAAtKF,EAAN,EAAMA,aAActE,EAApB,EAAoBA,YAAaC,EAAjC,EAAiCA,aAAcmB,EAA/C,EAA+CA,gBAAiByC,EAAhE,EAAgEA,iBAAkBD,EAAlF,EAAkFA,eAAgB9D,EAAlG,EAAkGA,kBAAmBD,EAArH,EAAqHA,eAAgBwC,EAArI,EAAqIA,SAAU1lQ,EAA/I,EAA+IA,SAK/I,SAAS8nQ,EAAoBp9S,GAIzB,IAFA,IAAIq9S,EAASr9S,EACTs9S,EAAcvD,EAAgBtoV,MAAM,EAAG4rV,EAAS,GAC3CvtV,EAAI,EAAGA,EAAIwtV,EAAYlxV,OAAQ0D,IAAK,CACzC,GAAI0oV,EAAe1oV,EAAI,GAAGmtB,MAAO,CAG7BqgU,EAAcvD,EAAgBtoV,MAAM,GADpC4rV,EAASvtV,GACuC,GAChD,aAGO6oV,EAAY2E,EAAYxtV,IAGvC0sV,EAAmBA,EAAiBp/U,OAAO,SAAC6Q,GAAD,OAAqC,IAA7BqvU,EAAYpsV,QAAQ+c,KACvE8rU,EAAkB,CAAC,GAAJ,2HAAUA,EAAgBtoV,MAAM4rV,EAAS,KACxDd,EAAiB/D,EAAe6E,GAAQ/sV,MACxCkoV,EAAiBA,EAAe/mV,MAAM4rV,GACtC5E,EACIA,EAAoB4E,EAAS5E,EAAoB4E,EAAS,EAElE,SAASE,IAGL5E,EAAc,CAAEv/S,EAAGy/S,WAAWmD,cAC9BpD,EAAe,EACfmB,EAAkB,CAAC,GACnByC,EAAmB,GACnBD,EAAiB/D,EAAeC,GAAmBnoV,MACnDmoV,EAAoB,EACpBD,EAAiB,GAnChBD,IAEDI,EAAcl0U,OAAOlX,OAAOorV,IAsChC,IAAI2D,EAA2B,EAC/B,OAAQtC,EAAarxV,MACjB,KAAKwuV,aACD6D,EAAWhB,EAAavmQ,OACxB6oQ,EAA2B/4G,IAC3B,MAEJ,KAAK6zG,iBACD9hQ,EAAW0kQ,EAAavmQ,SAKpBsmQ,EAAkB,GAAH,2HAAOA,GAAP,CAAwBnB,IACvCD,EAAYC,GAAgB,IAAIvB,cAAc,CAC1C1uV,KAAM,yBACNg6C,KAAKqR,OACT4kS,IACA0D,EAA2BvC,EAAgB3tV,OAAS,EACpDosV,EAAiBA,EAAev3U,OAAOu3U,EAAeA,EAAepsV,OAAS,IAC1EqsV,IAAsBsB,EAAgB3tV,OAAS,GAC/CqsV,IAEJ6D,EAA2B/4G,KAG3Bg6G,IAEJ,MAEJ,KAAK7G,MAEDiC,EAAc,CAAEv/S,EAAGy/S,WAAWmD,cAC9BpD,EAAe,EACfmB,EAAkB,CAAC,GACnByC,EAAmB,GACnBD,EAAiBQ,EACjBtE,EAAoB,EACpBD,EAAiB,GACjB,MAEJ,KAAK5B,OACD2G,IACA,MAEJ,KAAK5G,SAGDgC,EAAc,CAAEv/S,EAAGy/S,WAAWmD,cAC9BpD,EAAe,EACfmB,EAAkB,CAAC,GACnByC,EAAmB,GACnB/D,EAAoB,EACpBD,EAAiB,GACjB,MAEJ,KAAK1B,cAGD,IAAYiB,EAAaiC,EAAjB/rU,GACFrc,EAAQ4qV,EAAiBtrV,QAAQ6mV,GAEnCyE,GADW,IAAX5qV,EACmB,CAACmmV,GAAJ,2HAAiByE,IAGdA,EAAiBp/U,OAAO,SAAC6Q,GAAD,OAAQA,IAAO8pU,IAG9DuE,EAA2BvC,EAAgB7oV,QAAQ6mV,GACnD,MAEJ,KAAKhB,mBAKD,IAFA,IAAQ3lV,EAAuB4oV,EAAvB5oV,MAAOC,EAAgB2oV,EAAhB3oV,IAAK0S,EAAWi2U,EAAXj2U,OACdy5U,EAAY,GACT1tV,EAAIsB,EAAOtB,EAAIuB,EAAKvB,IACzB0tV,EAAU3xV,KAAKiE,GAEf0sV,EADAz4U,EACmB4sP,WAAW6rF,EAAkBgB,GAG7B,GAAH,2HAAOhB,GAAqBgB,GAGhDlB,EAA2BvC,EAAgB7oV,QAAQE,GACnD,MAEJ,KAAK4lV,cAGDyB,EAAoBuB,EAAapoV,MAEjC0qV,EAA2B/4G,IAC3B,MAEJ,KAAK0zG,eAGD,IAAM,EAAQ8C,EAAgB7oV,QAAQ8oV,EAAajC,WACpC,IAAX,IACAU,EAAoB,GACxB6D,EAA2B/4G,IAC3B,MAEJ,KAAKszG,MAEDkD,EAAkBppF,WAAWopF,EAAiByC,GAC9CA,EAAmB,GACnB/D,EAAoBjyU,KAAKG,IAAI8xU,EAAmBsB,EAAgB3tV,OAAS,GACzE,MAEJ,KAAKoqV,eAED,GAAIwE,EACA,OAAOzC,GAAe4E,EAE1B,GAAI7nQ,GACCijQ,GACG0B,iBAAiB1B,EAAYC,eAAeC,GAAoBuB,EAAc/pU,EAAQqY,UAAWrY,EAAQspU,gBAAiBtpU,EAAQupU,kBAAoB,CAK1J,IAAMiE,EAAYjF,EAAeA,EAAepsV,OAAS,GACzDosV,EAAiB,GAAH,2HACPA,EAAe/mV,MAAM,GAAI,IADlB,CAEV0qV,iBAAiBljQ,EAAS+gQ,EAAahvR,OAAQyyR,EAAUntV,MAAOmtV,EAAUxgU,MAAOw2I,KAErF6oL,EAA2B/4G,IAC3B,MAGAtzN,EAAQwlU,QAAUsE,EAAgB3tV,SAAW6jB,EAAQwlU,QACrD2H,EAAoB,GAEpB3E,IAAsBsB,EAAgB3tV,OAAS,GAC/CqsV,IAEJ,IAAM,EAAWG,IAGjBD,EAAY,GAAYqB,EAGxBsC,GAFAvC,EAAkB,GAAH,2HAAOA,GAAP,CAAwB,KAEI3tV,OAAS,EACpD,MAEJ,KAAK8qV,aAAc,MAaX8C,EAAa/B,gBAVbgF,EAHW,EAGXA,aACAtE,EAJW,EAIXA,YACAC,EALW,EAKXA,aACAmB,EANW,EAMXA,gBACAyC,EAPW,EAOXA,iBACAD,EARW,EAQXA,eACA9D,EATW,EASXA,kBACAD,EAVW,EAUXA,eACAwC,EAXW,EAWXA,SACA1lQ,EAZW,EAYXA,SAEJ,MAEJ,KAAK,2CAEDgnQ,EAA2B,EACvBrsU,EAAQwlU,QAAUsE,EAAgB3tV,OAAS6jB,EAAQwlU,SAEnD+C,EAAiB6D,gBAAgB7D,EAAgB8D,EAA0BrjQ,EAASsjQ,EAAgB5D,EAAaoB,EAAiByC,EAAkB/oL,EAAcn+E,GAClK8nQ,EAAoBrD,EAAgB3tV,OAAS6jB,EAAQwlU,QAErD6G,EAA2B/4G,KAE/B,MAEJ,KAAK,2CAED,GADuBi1G,EAAep7U,OAAO,SAAC9M,GAAD,OAAWA,EAAM2sB,QAAO7wB,OAAS,EAG1EkwV,EAA2B,EACvBrsU,EAAQwlU,QAAUsE,EAAgB3tV,OAAS6jB,EAAQwlU,SAEnD+C,EAAiB6D,gBAAgB7D,EAAgB8D,EAA0BrjQ,EAASsjQ,EAAgB5D,EAAaoB,EAAiByC,EAAkB/oL,EAAcn+E,GAClK8nQ,EAAoBrD,EAAgB3tV,OAAS6jB,EAAQwlU,QAErD6G,EAA2B/4G,SAG9B,CAGD,IAAKjuJ,IAAa0lQ,EAAU,CACpBvC,IAAsBsB,EAAgB3tV,OAAS,GAC/CqsV,IAGJ,IAAM,EAAWG,IACjBD,EAAY,GAAY,IAAItB,cAAc2C,GAAer3S,KAAKqR,OAC9D+lS,EAAkB,GAAH,2HAAOA,GAAP,CAAwB,IAEvCvB,EAAiB6D,gBAAgB7D,EADjC8D,EAA2BvC,EAAgB3tV,OAAS,EACuB6sF,EAASsjQ,EAAgB5D,EAAaoB,EAAiByC,EAAkB/oL,EAAcn+E,GAGtKkjQ,EAAiBA,EAAe9mV,IAAI,SAAC2yD,GAAD,OAAU5/C,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIq1B,GAAM,CAAE/zD,MAAO2oF,EAAQ50B,EAAI/zD,MAAO4rV,sBAChHzD,EAAoBsB,EAAgB3tV,OAAS,EACzC6jB,EAAQwlU,QAAUsE,EAAgB3tV,OAAS6jB,EAAQwlU,QACnD2H,EAAoBrD,EAAgB3tV,OAAS6jB,EAAQwlU,QAGzD6G,EAA2B/4G,IAE/B,MAEJ,QAGI+4G,EAA2B/4G,IAMnC,OAFAi1G,EAAiB6D,gBAAgB7D,EAAgB8D,EAA0BrjQ,EAASsjQ,EAAgB5D,EAAaoB,EAAiByC,EAAkB/oL,EAAcn+E,GAE3J,CACH2nQ,aAFJA,EAAeD,EAAeC,EAAcjD,GAGxCrB,cACAC,eACAmB,kBACAyC,mBACAD,iBACA9D,oBACAD,iBACAwC,WACA1lQ,c,iCAKNooQ,E,gIACF,WAAY5C,EAAY5qB,EAAUytB,EAAWC,EAAWC,EAAgBpqL,EAAc56E,EAAcx4D,GAAM,oIACtG,IAAMy9T,EAAqBhB,iBAAiBjkQ,EAAcx4D,EAAOs6E,SAC3DojP,EAAcb,gBAAgBrkQ,EAAcilQ,EAAoBrqL,EAAcpzI,EAAOs6E,QAASt6E,GAC9F29T,EAAgB,6CAAM,6CAAM9tB,EAAShwS,eAAej0B,KAAK,uDAAK,IAAK2xV,EAAU1tB,UAAUjkU,KAAK,uDAAI4sV,aAAciC,EAAY8C,EAAUjC,gBAAgB1vV,KAAK,uDAAU,uCACnKgyV,EAAiBN,EAAU1xV,KAAK,uDAAI8xV,IACpCG,EAAqB,IAAI,qCAAc,GACvCC,EAA0BH,EAC3B/xV,KAAK,uDAAegyV,GAAiB,uDAAK,cAA8C,IAApC1F,EAAoC,EAA3CjoV,MAA2C,uHAApB06D,EAAoB,KACrFozR,GAAqBnlQ,EADgE,MACxDs/P,EAAavtR,GAQ9C,OALIA,EAAOriE,OAAS6tV,gBAAkB8C,oBAAoBj5T,KACtD+9T,EAAqB3E,kBAAkB2E,EAAoB/9T,EAAOiI,UAAWjI,EAAOk5T,gBAAiBl5T,EAAOm5T,mBAGhHoE,EAAUt0L,OAAOt+F,EAAQozR,GAClB,CAAE9tV,MAAO8tV,EAAoBpzR,WACrC,CAAE16D,MAAOwtV,EAAoB9yR,OAAQ,QACnC7+D,UAAU,YAAsB,IAAZ6+D,EAAY,EAAZA,OACrBkzR,EAAmBpyV,KADc,EAAnBwE,OAEV06D,EAAOriE,OAAS6tV,gBAEhBqH,EAAe/xV,KADQk/D,EAAOA,UAIhCqzR,EAA6BT,EAAUnC,OAAOtvV,UAAU,WAC1D,EAAKmyV,YAEHC,EAAeL,EAAmBh+T,eAClCs+T,EAASD,EAAatyV,KAAK,uDAAIqsV,cACrCrwV,KAAKo2V,2BAA6BA,EAClCp2V,KAAKw2V,kBAAoBN,EACzBl2V,KAAK6yV,WAAaA,EAClB7yV,KAAKswV,YAAcgG,EACnBt2V,KAAKqI,MAAQkuV,G,uBAEjB,SAASxzR,GACL/iE,KAAK6yV,WAAWhvV,KAAKk/D,K,kBAEzB,SAAKA,GACD/iE,KAAK6yV,WAAWhvV,KAAKk/D,K,mBAEzB,SAAM,M,sBACN,c,2BACA,SAAcA,GACV/iE,KAAK04B,SAAS,IAAI02T,cAAcrsR,GAASroB,KAAKqR,U,qBAElD,WACI/rD,KAAK04B,SAAS,IAAI22T,W,mBAEtB,WACIrvV,KAAK04B,SAAS,IAAI42T,OAAO50S,KAAKqR,U,sBAElC,WACI/rD,KAAK04B,SAAS,IAAI62T,UAAU70S,KAAKqR,U,oBAErC,WACI/rD,KAAK04B,SAAS,IAAI82T,QAAQ90S,KAAKqR,U,mBAEnC,WACI/rD,KAAK04B,SAAS,IAAI+2T,S,0BAEtB,SAAazpU,GACThmB,KAAK04B,SAAS,IAAIg3T,aAAa1pU,M,0BAEnC,SAAa8pU,GACT9vV,KAAK04B,SAAS,IAAIm3T,aAAaC,M,yBAEnC,SAAYnmV,GACR3J,KAAK04B,SAAS,IAAIk3T,YAAYjmV,M,yBAElC,SAAYqmV,GACRhwV,KAAK04B,SAAS,IAAIq3T,YAAYC,M,yBAElC,SAAYxkQ,GACRxrF,KAAK04B,SAAS,IAAIu3T,YAAYzkQ,M,4BAElC,SAAeA,GACXxrF,KAAK04B,SAAS,IAAIw3T,eAAe1kQ,Q,UAGzCiqQ,EAAcl1V,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKi1V,GAAe,8CAAgBtF,oBAAqB,8CAAgB,4CAAwB,8CAAgB,4CAA2B,8CAAgBwC,mBAAoB,8CAAgB,4CAA+B,8CAAgB,8CAAsB,8CAAgB,4CAAgB,8CAAgBlF,yBAC1XgI,EAAc7wV,WAAQ,8CAA0B,CAAEC,MAAO4wV,EAAe3wV,QAAS2wV,EAAcl1V,Y,KAsBzFk2V,gCAAkC,IAAI,6CAAe,iEAC3D,SAASC,kCAAkCf,EAAWv9T,GAClD,OAAOsvB,QAAQiuS,IAAcv9T,EAAOs6E,UAAYi7O,UAEpD,SAASgJ,+BACL,IAAMC,EAAe,+BACrB,MAAsB,iBAAXzrU,aACyB,IAAzBA,OAAOyrU,GACPzrU,OAAOyrU,GAGP,KAGf,SAASC,sBAAsBC,GAC3B,OAAOA,EAASzuV,M,uCAEd0uV,E,sSACF,WAA8B,IAAZ/uU,EAAY,uDAAF,GACxB,MAAO,CACH+2F,SAAUg4O,EACV5kU,UAAW,CACPwgU,kBACAxC,mBACAsF,cACA,CACIlzV,QAASmrV,gBACT90U,SAAUoP,GAEd,CACIzlB,QAASk0V,gCACTttU,KAAM,CAACupU,yBAA0BjF,uBACjCrkU,WAAYstU,mCAEhB,CACIn0V,QAASmwV,yBACTtpU,WAAYutU,8BAEhB,CACIp0V,QAASkrV,sBACTtkU,KAAM,CAACukU,iBACPtkU,WAAYykU,cAEhB,CACItrV,QAAS,2CACT4mB,KAAM,CAACssU,eACPrsU,WAAYytU,uBAEhB,CACIt0V,QAAS,2CACTC,YAAa2tV,0B,UAMjC4G,EAAoBx2V,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKu2V,IACtFA,EAAoB79U,UAAO,8CAAwB,CAAExY,KAAMq2V,IAC3DA,EAAoB59U,UAAO,8CAAwB,I,4BC55B1C,SAAUkJ,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/gB,CAAQ,EAAQ,U,mPCA1D,SAASoN,EAAI7G,GACX,OAAOmoE,iBAAiBnoE,GAG1B,SAASgJ,EAAIhJ,EAAS0S,GACpB,IAAK,IAAIpB,KAAOoB,EAAK,CACnB,IAAIuwB,EAAMvwB,EAAIpB,GACK,iBAAR2xB,IACTA,GAAY,MAEdjjC,EAAQE,MAAMoR,GAAO2xB,EAEvB,OAAOjjC,EAGT,SAAS42Q,EAAIp6P,GACX,IAAIo6P,EAAMt3O,SAAS9yB,cAAc,OAEjC,OADAoqQ,EAAIp6P,UAAYA,EACTo6P,EAGT,IAAI+0E,EACiB,oBAAZp4O,UACNA,QAAQlsF,UAAUuY,SACjB2zE,QAAQlsF,UAAUmsF,uBAClBD,QAAQlsF,UAAU0pR,oBAClBx9L,QAAQlsF,UAAUiiB,mBAEtB,SAAS1J,EAAQ5/B,EAASo/B,GACxB,IAAKusT,EACH,MAAM,IAAI3iU,MAAM,wCAGlB,OAAO2iU,EAAU9hU,KAAK7pB,EAASo/B,GAGjC,SAASj/B,EAAOH,GACVA,EAAQG,OACVH,EAAQG,SAEJH,EAAQqV,YACVrV,EAAQqV,WAAWe,YAAYpW,GAKrC,SAAS4rV,EAAc5rV,EAASipC,GAC9B,OAAO/pC,MAAMmoB,UAAUvd,OAAO+f,KAAK7pB,EAAQvD,SAAU,SAAUkyI,GAAS,OAAO/uG,EAAQ+uG,EAAO1lG,KAIhG,IAAI4iT,EAIO,SAAU37T,GAAK,MAAQ,aAAeA,GAJ7C27T,EAKM,SAAU37T,GAAK,MAAQ,YAAcA,GAL3C27T,EAMW,qBANXA,EASO,YATPA,EAUU,eAVVA,EAWQ,SAAU37T,GAAK,MAAQ,cAAgBA,GAX/C27T,EAYW,SAAU37T,GAAK,MAAQ,iBAAmBA,GAOrD47T,EAAwB,CAAE57T,EAAG,KAAMjW,EAAG,MAE1C,SAAS8xU,EAAkBvvV,EAAG0zB,GAC5B,IAAI54B,EAAYkF,EAAEwD,QAAQ1I,UACtBklB,EAAYqvU,EAAoB37T,GAEhC54B,EAAUiqB,SAAS/E,GACrBqc,aAAaizT,EAAsB57T,IAEnC54B,EAAUE,IAAIglB,GAIlB,SAASwvU,EAAqBxvV,EAAG0zB,GAC/B47T,EAAsB57T,GAAKqJ,WACzB,WAAc,OAAO/8B,EAAEyvV,SAAWzvV,EAAEwD,QAAQ1I,UAAU6I,OAAO0rV,EAAoB37T,KACjF1zB,EAAE29D,SAAS+xR,oBASf,IAAIC,EAAe,SAAsBnsV,GACvCrL,KAAKqL,QAAUA,EACfrL,KAAKy1E,SAAW,IAGdgiR,EAAqB,CAAEr3T,QAAS,CAAE1C,cAAc,IAEpD85T,EAAa9kU,UAAU6X,KAAO,SAAeuL,EAAWzJ,QACd,IAA7BrsC,KAAKy1E,SAAS3/B,KACvB91C,KAAKy1E,SAAS3/B,GAAa,IAE7B91C,KAAKy1E,SAAS3/B,GAAWlyC,KAAKyoC,GAC9BrsC,KAAKqL,QAAQigB,iBAAiBwqB,EAAWzJ,GAAS,IAGpDmrT,EAAa9kU,UAAUglU,OAAS,SAAiB5hT,EAAWtpB,GACxD,IAAImrU,EAAS33V,KAEfA,KAAKy1E,SAAS3/B,GAAa91C,KAAKy1E,SAAS3/B,GAAW3gC,OAAO,SAAUk3B,GACnE,SAAI7f,GAAU6f,IAAY7f,KAG1BmrU,EAAOtsV,QAAQsgB,oBAAoBmqB,EAAWzJ,GAAS,IAChD,MAIXmrT,EAAa9kU,UAAUklU,UAAY,WACjC,IAAK,IAAIz2V,KAAQnB,KAAKy1E,SACpBz1E,KAAK03V,OAAOv2V,IAIhBs2V,EAAmBr3T,QAAQluB,IAAM,WAC7B,IAAIylV,EAAS33V,KAEf,OAAOwc,OAAOC,KAAKzc,KAAKy1E,UAAU2+E,MAChC,SAAUz3I,GAAO,OAAuC,IAAhCg7U,EAAOliR,SAAS94D,GAAKxY,UAIjDqY,OAAOq3F,iBAAkB2jP,EAAa9kU,UAAW+kU,GAEjD,IAAII,EAAe,WACjB73V,KAAK83V,cAAgB,IAwCvB,SAASC,EAAY52V,GACnB,GAAkC,mBAAvBgqB,OAAO6sU,YAChB,OAAO,IAAIA,YAAY72V,GAEvB,IAAI82V,EAAMttT,SAASotT,YAAY,eAE/B,OADAE,EAAIC,gBAAgB/2V,GAAM,GAAO,OAAOsD,GACjCwzV,EAIX,SAASE,EACPtwV,EACA8qN,EACAptN,EACA6yV,EACAC,GAKA,IAAIrtK,EACJ,QAJ2B,IAAtBotK,IAA+BA,GAAoB,QAC3B,IAAxBC,IAAiCA,GAAsB,GAG/C,QAAT1lI,EACF3nC,EAAS,CACP,gBACA,kBACA,YACA,IACA,KACA,YACG,IAAa,SAAT2nC,EAST,MAAM,IAAIt+L,MAAM,oCARhB22J,EAAS,CACP,eACA,iBACA,aACA,IACA,OACA,UAQN,SACEnjL,EACAtC,EACA0c,EACAm2U,EACAC,GAEA,IAAI9sS,EAAgBtpC,EAAI,GACpBq2U,EAAkBr2U,EAAI,GACtBmG,EAAYnG,EAAI,GAChBqD,EAAIrD,EAAI,GACR+gK,EAAK/gK,EAAI,GACTs2U,EAAOt2U,EAAI,QACY,IAAtBm2U,IAA+BA,GAAoB,QAC3B,IAAxBC,IAAiCA,GAAsB,GAE5D,IAAIhtV,EAAUxD,EAAEwD,QAGhBxD,EAAE2wV,MAAMlzU,GAAK,KAGTja,EAAQ+c,GAAa,IACvBvgB,EAAE2wV,MAAMlzU,GAAK,SAIXja,EAAQ+c,GAAavgB,EAAE0jD,GAAiB1jD,EAAEywV,GAAmB,IAC/DzwV,EAAE2wV,MAAMlzU,GAAK,OAGX/f,IACF8F,EAAQotV,cAAcV,EAAa,aAAezyU,IAE9C/f,EAAO,EACT8F,EAAQotV,cAAcV,EAAa,aAAe/0K,IACzCz9K,EAAO,GAChB8F,EAAQotV,cAAcV,EAAa,aAAeQ,IAGhDH,GA7KR,SAAoCvwV,EAAG0zB,GACrC67T,EAAkBvvV,EAAG0zB,GACrB87T,EAAqBxvV,EAAG0zB,GA4KpBm9T,CAA2B7wV,EAAGyd,IAI9Bzd,EAAE2wV,MAAMlzU,KAAO/f,GAAQ8yV,IACzBhtV,EAAQotV,cAAcV,EAAa,MAAQzyU,EAAI,UAAazd,EAAE2wV,MAAMlzU,KAjDtEqzU,CAAoB9wV,EAAGtC,EAAMylL,EAAQotK,EAAmBC,GAqD1D,SAASO,EAAMr9T,GACb,OAAOiU,SAASjU,EAAG,KAAO,EApI5Bs8T,EAAanlU,UAAUmmU,aAAe,SAAuBxtV,GAC3D,IAAI6qN,EAAKl2N,KAAK83V,cAAc3iV,OAAO,SAAU+gN,GAAM,OAAOA,EAAG7qN,UAAYA,IAAY,GAKrF,OAJK6qN,IACHA,EAAK,IAAIshI,EAAansV,GACtBrL,KAAK83V,cAAcl0V,KAAKsyN,IAEnBA,GAGT2hI,EAAanlU,UAAU6X,KAAO,SAAel/B,EAASyqC,EAAWzJ,GAC/DrsC,KAAK64V,aAAaxtV,GAASk/B,KAAKuL,EAAWzJ,IAG7CwrT,EAAanlU,UAAUglU,OAAS,SAAiBrsV,EAASyqC,EAAWzJ,GACnE,IAAI6pL,EAAKl2N,KAAK64V,aAAaxtV,GAC3B6qN,EAAGwhI,OAAO5hT,EAAWzJ,GAEjB6pL,EAAG91L,SAELpgC,KAAK83V,cAAcvvT,OAAOvoC,KAAK83V,cAAc7uV,QAAQitN,GAAK,IAI9D2hI,EAAanlU,UAAUklU,UAAY,WACjC53V,KAAK83V,cAAczkV,QAAQ,SAAU4gB,GAAK,OAAOA,EAAE2jU,cACnD53V,KAAK83V,cAAgB,IAGvBD,EAAanlU,UAAU++O,KAAO,SAAepmQ,EAASyqC,EAAWzJ,GAC/D,IAAI6pL,EAAKl2N,KAAK64V,aAAaxtV,GACvB,EAAc,SAAU4sV,GAC1B/hI,EAAGwhI,OAAO5hT,EAAW,GACrBzJ,EAAQ4rT,IAEV/hI,EAAG3rL,KAAKuL,EAAW,IAyHrB,IAAIgjT,EAAM,CACRC,SACsB,oBAAbpuT,UACP,qBAAsBA,SAAS6J,gBAAgBjpC,MACjDytV,cACoB,oBAAX7tU,SACN,iBAAkBA,QAChB,mBAAoBA,OAAO2/F,WAC1B3/F,OAAO2/F,UAAU+6K,eAAiB,GACnC16Q,OAAO8tU,eAAiBtuT,oBAAoBxf,OAAO8tU,eACxDC,kBACuB,oBAAdpuO,WAA6BA,UAAUquO,iBAChDC,SACuB,oBAAdtuO,WACP,UAAU9nG,KAAK8nG,WAAaA,UAAUC,YAG1C,SAASsuO,EAAexxV,GACtB,IAAIwD,EAAUxD,EAAEwD,QACZiuV,EAAmB/6U,KAAKs7B,MAAMxuC,EAAQ+c,WACtC2lD,EAAO1iE,EAAQZ,wBAEnB5C,EAAE0xV,eAAiBh7U,KAAK06B,MAAM80B,EAAKrkE,OACnC7B,EAAEywV,gBAAkB/5U,KAAK06B,MAAM80B,EAAKvjE,QAEpC3C,EAAE8xR,aAAetuR,EAAQwtE,YACzBhxE,EAAE0jD,cAAgBlgD,EAAQytE,aAErBztE,EAAQuhB,SAAS/kB,EAAE2xV,kBAEtBvC,EAAc5rV,EAAS6rV,EAAiB,MAAM7jV,QAAQ,SAAUo/B,GAAM,OAAOjnC,EAAOinC,KAEpFpnC,EAAQyM,YAAYjQ,EAAE2xV,iBAEnBnuV,EAAQuhB,SAAS/kB,EAAE4xV,kBAEtBxC,EAAc5rV,EAAS6rV,EAAiB,MAAM7jV,QAAQ,SAAUo/B,GAAM,OAAOjnC,EAAOinC,KAEpFpnC,EAAQyM,YAAYjQ,EAAE4xV,kBAIrB5xV,EAAE29D,SAASk0R,iBACZ7xV,EAAE0xV,eAAiB1xV,EAAE29D,SAASm0R,oBAAsB9xV,EAAE8xR,cAEtD9xR,EAAE+xV,kBAAmB,EACrB/xV,EAAEgyV,WAAahyV,EAAE0xV,eAAiB1xV,EAAEiyV,iBACpCjyV,EAAEkyV,WAAalyV,EAAE0xV,eAAiB1xV,EAAEgyV,WACpChyV,EAAEmyV,gBAAkBC,EAClBpyV,EACA+wV,EAAO/wV,EAAEgyV,WAAahyV,EAAE0xV,eAAkB1xV,EAAE8xR,eAE9C9xR,EAAEqyV,eAAiBtB,GACf/wV,EAAEsyV,yBAA2B9uV,EAAQqtE,aACpC7wE,EAAEgyV,WAAahyV,EAAEmyV,kBACjBnyV,EAAE8xR,aAAe9xR,EAAE0xV,kBAGxB1xV,EAAE+xV,kBAAmB,GAIpB/xV,EAAE29D,SAAS40R,iBACZvyV,EAAEywV,gBAAkBzwV,EAAE29D,SAAS60R,oBAAsBxyV,EAAE0jD,eAEvD1jD,EAAEyyV,kBAAmB,EACrBzyV,EAAE0yV,YAAc1yV,EAAEywV,gBAAkBzwV,EAAE2yV,kBACtC3yV,EAAE4yV,WAAa5yV,EAAEywV,gBAAkBzwV,EAAE0yV,YACrC1yV,EAAE6yV,iBAAmBT,EACnBpyV,EACA+wV,EAAO/wV,EAAE0yV,YAAc1yV,EAAEywV,gBAAmBzwV,EAAE0jD,gBAEhD1jD,EAAE8yV,cAAgB/B,EACfU,GAAoBzxV,EAAE0yV,YAAc1yV,EAAE6yV,mBACpC7yV,EAAE0jD,cAAgB1jD,EAAEywV,mBAGzBzwV,EAAEyyV,kBAAmB,EAGnBzyV,EAAEqyV,gBAAkBryV,EAAEgyV,WAAahyV,EAAEmyV,kBACvCnyV,EAAEqyV,eAAiBryV,EAAEgyV,WAAahyV,EAAEmyV,iBAElCnyV,EAAE8yV,eAAiB9yV,EAAE0yV,YAAc1yV,EAAE6yV,mBACvC7yV,EAAE8yV,cAAgB9yV,EAAE0yV,YAAc1yV,EAAE6yV,kBAiCxC,SAAmBrvV,EAASxD,GAC1B,IAAI+yV,EAAc,CAAElxV,MAAO7B,EAAEgyV,YACzBP,EAAmB/6U,KAAKs7B,MAAMxuC,EAAQ+c,WAGxCwyU,EAAY3uV,KADVpE,EAAEqB,MAEFrB,EAAEsyV,yBACF9uV,EAAQqtE,WACR7wE,EAAE0xV,eACF1xV,EAAE8xR,aAEetuR,EAAQqtE,WAEzB7wE,EAAEgzV,wBACJD,EAAY5uV,OAASnE,EAAEizV,iBAAmBxB,EAE1CsB,EAAY7uV,IAAMlE,EAAEkzV,cAAgBzB,EAEtCjlV,EAAIxM,EAAE2xV,eAAgBoB,GAEtB,IAAII,EAAc,CAAEjvV,IAAKutV,EAAkB9uV,OAAQ3C,EAAE0yV,aACjD1yV,EAAEozV,uBAEFD,EAAY9uV,MADVrE,EAAEqB,MAEFrB,EAAE8xR,cACD9xR,EAAEsyV,yBAA2B9uV,EAAQqtE,YACtC7wE,EAAEqzV,gBACFrzV,EAAEszV,qBACF,EAEkBtzV,EAAEqzV,gBAAkB7vV,EAAQqtE,WAIhDsiR,EAAY/uV,KADVpE,EAAEqB,MAEFrB,EAAEsyV,yBACF9uV,EAAQqtE,WACW,EAAnB7wE,EAAE0xV,eACF1xV,EAAE8xR,aACF9xR,EAAEuzV,eACFvzV,EAAEszV,qBAEetzV,EAAEuzV,eAAiB/vV,EAAQqtE,WAGlDrkE,EAAIxM,EAAE4xV,eAAgBuB,GAEtB3mV,EAAIxM,EAAEwzV,WAAY,CAChBpvV,KAAMpE,EAAEqyV,eACRxwV,MAAO7B,EAAEmyV,gBAAkBnyV,EAAEyzV,mBAE/BjnV,EAAIxM,EAAE0zV,WAAY,CAChBxvV,IAAKlE,EAAE8yV,cACPnwV,OAAQ3C,EAAE6yV,iBAAmB7yV,EAAE2zV,mBAnFjCC,CAAUpwV,EAASxD,GAEfA,EAAE+xV,iBACJvuV,EAAQ1I,UAAUE,IAAIq0V,EAAiB,OAEvC7rV,EAAQ1I,UAAU6I,OAAO0rV,EAAiB,MAC1CrvV,EAAEmyV,gBAAkB,EACpBnyV,EAAEqyV,eAAiB,EACnB7uV,EAAQqtE,YAAyB,IAAZ7wE,EAAEqB,MAAiBrB,EAAE8xR,aAAe,GAEvD9xR,EAAEyyV,iBACJjvV,EAAQ1I,UAAUE,IAAIq0V,EAAiB,OAEvC7rV,EAAQ1I,UAAU6I,OAAO0rV,EAAiB,MAC1CrvV,EAAE6yV,iBAAmB,EACrB7yV,EAAE8yV,cAAgB,EAClBtvV,EAAQ+c,UAAY,GAIxB,SAAS6xU,EAAapyV,EAAG6zV,GAOvB,OANI7zV,EAAE29D,SAASm2R,qBACbD,EAAYn9U,KAAKukC,IAAI44S,EAAW7zV,EAAE29D,SAASm2R,qBAEzC9zV,EAAE29D,SAASo2R,qBACbF,EAAYn9U,KAAKG,IAAIg9U,EAAW7zV,EAAE29D,SAASo2R,qBAEtCF,EAmHT,SAASG,EACPh0V,EACAoa,GAEA,IAAIq2U,EAAkBr2U,EAAI,GACtBspC,EAAgBtpC,EAAI,GACpB4sI,EAAQ5sI,EAAI,GACZs4U,EAAct4U,EAAI,GAClBs5U,EAAat5U,EAAI,GACjBy4U,EAAmBz4U,EAAI,GACvBmG,EAAYnG,EAAI,GAChBqD,EAAIrD,EAAI,GACRw3U,EAAiBx3U,EAAI,GAErB5W,EAAUxD,EAAEwD,QAEZywV,EAAoB,KACpBC,EAAqB,KACrBjlM,EAAW,KAEf,SAASklM,EAAiB/nU,GACpBA,EAAE66H,SAAW76H,EAAE66H,QAAQ,KACzB76H,EAAE46H,GAAS56H,EAAE66H,QAAQ,GAAGD,OAE1BxjJ,EAAQ+c,GACN0zU,EAAoBhlM,GAAY7iI,EAAE46H,GAASktM,GAC7C3E,EAAkBvvV,EAAGyd,GACrB+zU,EAAexxV,GAEfosB,EAAErE,kBACEqE,EAAEvzB,KAAK+2J,WAAW,UAAYxjI,EAAE86H,eAAe5qJ,OAAS,GAC1D8vB,EAAE/G,iBAIN,SAAS+uU,IACP5E,EAAqBxvV,EAAGyd,GACxBzd,EAAE4xV,GAAgB92V,UAAU6I,OAAO0rV,GACnCrvV,EAAEygB,MAAMovU,OAAO7vV,EAAEq0V,cAAe,YAAaF,GAG/C,SAASG,EAAUloU,EAAGmoU,GACpBN,EAAoBzwV,EAAQ+c,GACxBg0U,GAAanoU,EAAE66H,UACjB76H,EAAE46H,GAAS56H,EAAE66H,QAAQ,GAAGD,OAE1BktM,EAAqB9nU,EAAE46H,GACvBiI,GACGjvJ,EAAE0jD,GAAiB1jD,EAAEywV,KACrBzwV,EAAE0yV,GAAe1yV,EAAE6yV,IACjB0B,EAKHv0V,EAAEygB,MAAMiiB,KAAK1iC,EAAEq0V,cAAe,YAAaF,IAJ3Cn0V,EAAEygB,MAAMiiB,KAAK1iC,EAAEq0V,cAAe,YAAaF,GAC3Cn0V,EAAEygB,MAAMmpP,KAAK5pQ,EAAEq0V,cAAe,UAAWD,GACzChoU,EAAE/G,kBAKJrlB,EAAE4xV,GAAgB92V,UAAUE,IAAIq0V,GAEhCjjU,EAAErE,kBAGJ/nB,EAAEygB,MAAMiiB,KAAK1iC,EAAE0zV,GAAa,YAAa,SAAUtnU,GACjDkoU,EAAUloU,KAEZpsB,EAAEygB,MAAMiiB,KAAK1iC,EAAE0zV,GAAa,aAAc,SAAUtnU,GAClDkoU,EAAUloU,GAAG,KAsgBjB,IAeIwhD,EAAW,CACb,aAhpBF,SAAmB5tE,GAGjBA,EAAEygB,MAAMiiB,KAAK1iC,EAAE0zV,WAAY,YAAa,SAAUtnU,GAAK,OAAOA,EAAErE,oBAChE/nB,EAAEygB,MAAMiiB,KAAK1iC,EAAE4xV,eAAgB,YAAa,SAAUxlU,GACpD,IAAIyoD,EACFzoD,EAAE46H,MACF1jI,OAAO+pD,YACPrtE,EAAE4xV,eAAehvV,wBAAwBsB,IAG3ClE,EAAEwD,QAAQ+c,YAFMs0D,EAAc70E,EAAE8yV,cAAgB,GAAK,GAElB9yV,EAAEywV,gBACrCe,EAAexxV,GAEfosB,EAAErE,oBAGJ/nB,EAAEygB,MAAMiiB,KAAK1iC,EAAEwzV,WAAY,YAAa,SAAUpnU,GAAK,OAAOA,EAAErE,oBAChE/nB,EAAEygB,MAAMiiB,KAAK1iC,EAAE2xV,eAAgB,YAAa,SAAUvlU,GACpD,IAAIwoD,EACFxoD,EAAE26H,MACFzjI,OAAO8pD,YACPptE,EAAE2xV,eAAe/uV,wBAAwBwB,KAG3CpE,EAAEwD,QAAQqtE,aAFM+D,EAAe50E,EAAEqyV,eAAiB,GAAK,GAEnBryV,EAAE0xV,eACtCF,EAAexxV,GAEfosB,EAAErE,qBAqnBJ,aAjnBF,SAAmB/nB,GACjBg0V,EAAuBh0V,EAAG,CACxB,iBACA,eACA,QACA,aACA,aACA,kBACA,aACA,IACA,mBACFg0V,EAAuBh0V,EAAG,CACxB,kBACA,gBACA,QACA,cACA,aACA,mBACA,YACA,IACA,oBA8lBFqsH,SAphBF,SAAkBrsH,GAChB,IAAIwD,EAAUxD,EAAEwD,QAkChBxD,EAAEygB,MAAMiiB,KAAK1iC,EAAEq0V,cAAe,UAAW,SAAUjoU,GACjD,KACGA,EAAEytT,oBAAsBztT,EAAEytT,sBAC3BztT,EAAE+mE,oBAnCoC/vD,EAAQ5/B,EAAS,WACf4/B,EAAQpjC,EAAEwzV,WAAY,WAAapwT,EAAQpjC,EAAE0zV,WAAY,WAuCnG,CAIA,IA/WgB9oT,EA+WZhoB,EAAgBkgB,SAASlgB,cACzBkgB,SAASlgB,cACT5iB,EAAEq0V,cAAczxU,cACpB,GAAIA,EAAe,CACjB,GAA8B,WAA1BA,EAAc4mJ,QAChB5mJ,EAAgBA,EAAc4xU,gBAAgB5xU,mBAG9C,KAAOA,EAAcuY,YACnBvY,EAAgBA,EAAcuY,WAAWvY,cAG7C,GAzXFwgB,EAFgBwH,EA2XChoB,EAzXL,4BACZwgB,EAAQwH,EAAI,6BACZxH,EAAQwH,EAAI,+BACZxH,EAAQwH,EAAI,4BAuXR,OAIJ,IAAI6pT,EAAS,EACTC,EAAS,EAEb,OAAQtoU,EAAEszF,OACR,KAAK,GAED+0O,EADEroU,EAAEmzK,SACMv/L,EAAE8xR,aACH1lQ,EAAE2jK,QACD/vL,EAAE0xV,gBAEF,GAEZ,MACF,KAAK,GAEDgD,EADEtoU,EAAEmzK,QACKv/L,EAAE0jD,cACFt3B,EAAE2jK,OACF/vL,EAAEywV,gBAEF,GAEX,MACF,KAAK,GAEDgE,EADEroU,EAAEmzK,QACKv/L,EAAE8xR,aACF1lQ,EAAE2jK,OACF/vL,EAAE0xV,eAEF,GAEX,MACF,KAAK,GAEDgD,EADEtoU,EAAEmzK,SACMv/L,EAAE0jD,cACHt3B,EAAE2jK,QACD/vL,EAAEywV,iBAEF,GAEZ,MACF,KAAK,GAEDiE,EADEtoU,EAAEwzF,SACK5/G,EAAEywV,iBAEDzwV,EAAEywV,gBAEd,MACF,KAAK,GACHiE,EAAS10V,EAAEywV,gBACX,MACF,KAAK,GACHiE,GAAU10V,EAAEywV,gBACZ,MACF,KAAK,GACHiE,EAAS10V,EAAE0jD,cACX,MACF,KAAK,GACHgxS,GAAU10V,EAAE0jD,cACZ,MACF,QACE,OAGA1jD,EAAE29D,SAASk0R,iBAA8B,IAAX4C,GAG9Bz0V,EAAE29D,SAAS40R,iBAA8B,IAAXmC,IAIlClxV,EAAQ+c,WAAam0U,EACrBlxV,EAAQqtE,YAAc4jR,EACtBjD,EAAexxV,GAlIjB,SAA8By0V,EAAQC,GACpC,IAAIn0U,EAAY7J,KAAKs7B,MAAMxuC,EAAQ+c,WACnC,GAAe,IAAXk0U,EAAc,CAChB,IAAKz0V,EAAEyyV,iBACL,OAAO,EAET,GACiB,IAAdlyU,GAAmBm0U,EAAS,GAC5Bn0U,GAAavgB,EAAE0jD,cAAgB1jD,EAAEywV,iBAAmBiE,EAAS,EAE9D,OAAQ10V,EAAE29D,SAASg3R,iBAIvB,IAAI9jR,EAAartE,EAAQqtE,WACzB,GAAe,IAAX6jR,EAAc,CAChB,IAAK10V,EAAE+xV,iBACL,OAAO,EAET,GACkB,IAAflhR,GAAoB4jR,EAAS,GAC7B5jR,GAAc7wE,EAAE8xR,aAAe9xR,EAAE0xV,gBAAkB+C,EAAS,EAE7D,OAAQz0V,EAAE29D,SAASg3R,iBAGvB,OAAO,EA0GHC,CAAqBH,EAAQC,IAC/BtoU,EAAE/G,sBA0YNwvU,MArYF,SAAe70V,GACb,IAAIwD,EAAUxD,EAAEwD,QAsGhB,SAASsxV,EAAkB1oU,GACzB,IAAIhS,EAhFN,SAA2BgS,GACzB,IAAIqoU,EAASroU,EAAEqoU,OACXC,GAAU,EAAItoU,EAAEsoU,OAoBpB,YAlBsB,IAAXD,QAA4C,IAAXC,IAE1CD,GAAW,EAAIroU,EAAE2oU,YAAe,EAChCL,EAAStoU,EAAE4oU,YAAc,GAGvB5oU,EAAE6oU,WAA6B,IAAhB7oU,EAAE6oU,YAEnBR,GAAU,GACVC,GAAU,IAGRD,GAAWA,GAAUC,GAAWA,IAElCD,EAAS,EACTC,EAAStoU,EAAE8oU,YAGT9oU,EAAEwzF,SAEG,EAAE80O,GAASD,GAEb,CAACA,EAAQC,GAsDNS,CAAkB/oU,GACxBqoU,EAASr6U,EAAI,GACbs6U,EAASt6U,EAAI,GAEjB,IAvDF,SAAiCuK,EAAQ8vU,EAAQC,GAE/C,IAAKzD,EAAIC,UAAY1tV,EAAQD,cAAc,gBACzC,OAAO,EAGT,IAAKC,EAAQuhB,SAASJ,GACpB,OAAO,EAKT,IAFA,IAAIywU,EAASzwU,EAENywU,GAAUA,IAAW5xV,GAAS,CACnC,GAAI4xV,EAAOt6V,UAAUiqB,SAASsqU,GAC5B,OAAO,EAGT,IAAI3rV,EAAQ2G,EAAI+qV,GAGhB,GAAIV,GAAUhxV,EAAM+pE,UAAUhkC,MAAM,iBAAkB,CACpD,IAAI4rT,EAAeD,EAAOnkR,aAAemkR,EAAOpqR,aAChD,GAAIqqR,EAAe,IAEdD,EAAO70U,UAAY,GAAKm0U,EAAS,GACjCU,EAAO70U,UAAY80U,GAAgBX,EAAS,GAE7C,OAAO,EAKb,GAAID,GAAU/wV,EAAMgqE,UAAUjkC,MAAM,iBAAkB,CACpD,IAAI6rT,EAAgBF,EAAOpkR,YAAcokR,EAAOlqR,YAChD,GAAIoqR,EAAgB,IAEfF,EAAOvkR,WAAa,GAAK4jR,EAAS,GAClCW,EAAOvkR,WAAaykR,GAAiBb,EAAS,GAE/C,OAAO,EAKbW,EAASA,EAAOv8U,WAGlB,OAAO,EAQH08U,CAAwBnpU,EAAEzH,OAAQ8vU,EAAQC,GAA9C,CAIA,IAAIc,GAAgB,EACfx1V,EAAE29D,SAAS83R,iBAKLz1V,EAAEyyV,mBAAqBzyV,EAAE+xV,kBAG9B2C,EACFlxV,EAAQ+c,WAAam0U,EAAS10V,EAAE29D,SAAS+3R,WAEzClyV,EAAQ+c,WAAak0U,EAASz0V,EAAE29D,SAAS+3R,WAE3CF,GAAgB,GACPx1V,EAAE+xV,mBAAqB/xV,EAAEyyV,mBAG9BgC,EACFjxV,EAAQqtE,YAAc4jR,EAASz0V,EAAE29D,SAAS+3R,WAE1ClyV,EAAQqtE,YAAc6jR,EAAS10V,EAAE29D,SAAS+3R,WAE5CF,GAAgB,IAnBhBhyV,EAAQ+c,WAAam0U,EAAS10V,EAAE29D,SAAS+3R,WACzClyV,EAAQqtE,YAAc4jR,EAASz0V,EAAE29D,SAAS+3R,YAqB5ClE,EAAexxV,IAEfw1V,EAAgBA,GAzIlB,SAA8Bf,EAAQC,GACpC,IAAIjD,EAAmB/6U,KAAKs7B,MAAMxuC,EAAQ+c,WACtCo1U,EAA8B,IAAtBnyV,EAAQ+c,UAChBq1U,EACFnE,EAAmBjuV,EAAQomB,eAAiBpmB,EAAQytE,aAClD4kR,EAAgC,IAAvBryV,EAAQqtE,WACjBkgM,EACFvtQ,EAAQqtE,WAAartE,EAAQynE,cAAgBznE,EAAQwtE,YAWvD,QANIt6D,KAAKqiC,IAAI27S,GAAUh+U,KAAKqiC,IAAI07S,GAClBkB,GAASC,EAETC,GAAU9kF,KAGJ/wQ,EAAE29D,SAASg3R,iBAuHEC,CAAqBH,EAAQC,MACxCtoU,EAAEkzK,UACtBlzK,EAAErE,kBACFqE,EAAE/G,wBAIwB,IAAnB/B,OAAOwyU,QAChB91V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,QAASsxV,QACS,IAAxBxxU,OAAOyyU,cACvB/1V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,aAAcsxV,IAgPtC9rM,MA5OF,SAAehpJ,GACb,GAAKixV,EAAIE,eAAkBF,EAAII,kBAA/B,CAIA,IAAI7tV,EAAUxD,EAAEwD,QAuCZwyV,EAAc,GACdnwR,EAAY,EACZowR,EAAQ,GACRC,EAAa,KAwJbjF,EAAIE,eACNnxV,EAAEygB,MAAMiiB,KAAKl/B,EAAS,aAAc2yV,GACpCn2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,YAAa4yV,GACnCp2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,WAAY6yV,IACzBpF,EAAII,oBACT/tU,OAAOgzU,cACTt2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,cAAe2yV,GACrCn2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,cAAe4yV,GACrCp2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,YAAa6yV,IAC1B/yU,OAAOizU,iBAChBv2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,gBAAiB2yV,GACvCn2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,gBAAiB4yV,GACvCp2V,EAAEygB,MAAMiiB,KAAKl/B,EAAS,cAAe6yV,KA9KzC,SAASG,EAAeC,EAAaC,GACnClzV,EAAQ+c,WAAam2U,EACrBlzV,EAAQqtE,YAAc4lR,EAEtBjF,EAAexxV,GAQjB,SAAS22V,EAASvqU,GAChB,OAAIA,EAAEy6H,cACGz6H,EAAEy6H,cAAc,GAGhBz6H,EAIX,SAASwqU,EAAaxqU,GACpB,QAAIA,EAAEyqU,aAAiC,QAAlBzqU,EAAEyqU,aAAuC,IAAdzqU,EAAEuwQ,WAG9CvwQ,EAAEy6H,eAA4C,IAA3Bz6H,EAAEy6H,cAAcvqJ,WAIrC8vB,EAAEyqU,aACgB,UAAlBzqU,EAAEyqU,aACFzqU,EAAEyqU,cAAgBzqU,EAAE0qU,uBAOxB,SAASX,EAAW/pU,GAClB,GAAKwqU,EAAaxqU,GAAlB,CAIA,IAAI48H,EAAQ2tM,EAASvqU,GAErB4pU,EAAYjvM,MAAQiC,EAAMjC,MAC1BivM,EAAYhvM,MAAQgC,EAAMhC,MAE1BnhF,GAAY,IAAIhzB,MAAOwmE,UAEJ,OAAf68O,GACF3xN,cAAc2xN,IAiDlB,SAASE,EAAUhqU,GACjB,GAAIwqU,EAAaxqU,GAAI,CACnB,IAAI48H,EAAQ2tM,EAASvqU,GAEjB2qU,EAAgB,CAAEhwM,MAAOiC,EAAMjC,MAAOC,MAAOgC,EAAMhC,OAEnDyvM,EAAcM,EAAchwM,MAAQivM,EAAYjvM,MAChD2vM,EAAcK,EAAc/vM,MAAQgvM,EAAYhvM,MAEpD,GAtDJ,SAAiCriI,EAAQ8vU,EAAQC,GAC/C,IAAKlxV,EAAQuhB,SAASJ,GACpB,OAAO,EAKT,IAFA,IAAIywU,EAASzwU,EAENywU,GAAUA,IAAW5xV,GAAS,CACnC,GAAI4xV,EAAOt6V,UAAUiqB,SAASsqU,GAC5B,OAAO,EAGT,IAAI3rV,EAAQ2G,EAAI+qV,GAGhB,GAAIV,GAAUhxV,EAAM+pE,UAAUhkC,MAAM,iBAAkB,CACpD,IAAI4rT,EAAeD,EAAOnkR,aAAemkR,EAAOpqR,aAChD,GAAIqqR,EAAe,IAEdD,EAAO70U,UAAY,GAAKm0U,EAAS,GACjCU,EAAO70U,UAAY80U,GAAgBX,EAAS,GAE7C,OAAO,EAKb,GAAID,GAAU/wV,EAAMgqE,UAAUjkC,MAAM,iBAAkB,CACpD,IAAI6rT,EAAgBF,EAAOpkR,YAAcokR,EAAOlqR,YAChD,GAAIoqR,EAAgB,IAEfF,EAAOvkR,WAAa,GAAK4jR,EAAS,GAClCW,EAAOvkR,WAAaykR,GAAiBb,EAAS,GAE/C,OAAO,EAKbW,EAASA,EAAOv8U,WAGlB,OAAO,EAYD08U,CAAwBnpU,EAAEzH,OAAQ8xU,EAAaC,GACjD,OAGFF,EAAeC,EAAaC,GAC5BV,EAAce,EAEd,IAAIp9C,GAAc,IAAI9mQ,MAAOwmE,UAEzB29O,EAAUr9C,EAAc9zO,EACxBmxR,EAAU,IACZf,EAAMviU,EAAI+iU,EAAcO,EACxBf,EAAMx4U,EAAIi5U,EAAcM,EACxBnxR,EAAY8zO,GAxJlB,SAAuB86C,EAAQC,GAC7B,IAAIn0U,EAAY7J,KAAKs7B,MAAMxuC,EAAQ+c,WAC/BswD,EAAartE,EAAQqtE,WACrBomR,EAAavgV,KAAKqiC,IAAI07S,GACtByC,EAAaxgV,KAAKqiC,IAAI27S,GAE1B,GAAIwC,EAAaD,GAGf,GACGvC,EAAS,GAAKn0U,IAAcvgB,EAAE0jD,cAAgB1jD,EAAEywV,iBAChDiE,EAAS,GAAmB,IAAdn0U,EAGf,OAA0B,IAAnB+C,OAAOm4Q,SAAiBi5D,EAAS,GAAKzD,EAAIM,cAE9C,GAAI0F,EAAaC,IAInBzC,EAAS,GAAK5jR,IAAe7wE,EAAE8xR,aAAe9xR,EAAE0xV,gBAChD+C,EAAS,GAAoB,IAAf5jR,GAEf,OAAO,EAIX,OAAO,EAgID2kR,CAAciB,EAAaC,IAC7BtqU,EAAE/G,kBAIR,SAASgxU,IACHr2V,EAAE29D,SAASw5R,cACb5yN,cAAc2xN,GACdA,EAAa7xN,YAAY,WACnBrkI,EAAE+rB,cACJw4G,cAAc2xN,GAIXD,EAAMviU,GAAMuiU,EAAMx4U,EAKnB/G,KAAKqiC,IAAIk9S,EAAMviU,GAAK,KAAQhd,KAAKqiC,IAAIk9S,EAAMx4U,GAAK,IAClD8mH,cAAc2xN,GAIXl2V,EAAEwD,SAKPgzV,EAAyB,GAAVP,EAAMviU,EAAkB,GAAVuiU,EAAMx4U,GAEnCw4U,EAAMviU,GAAK,GACXuiU,EAAMx4U,GAAK,IAPT8mH,cAAc2xN,GAVd3xN,cAAc2xN,IAkBf,QA4CLkB,EAAmB,SAA0B5zV,EAAS6zV,GACxD,IAAIvH,EAAS33V,KAOb,QANsB,IAAjBk/V,IAA0BA,EAAe,IAEvB,iBAAZ7zV,IACTA,EAAUs/B,SAASv/B,cAAcC,KAG9BA,IAAYA,EAAQyD,SACvB,MAAM,IAAIulB,MAAM,0DAQlB,IAAK,IAAI1X,KALT3c,KAAKqL,QAAUA,EAEfA,EAAQ1I,UAAUE,IAxkCZ,MA0kCN7C,KAAKwlE,SAvCqC,CAC1CiQ,SAAU,CAAC,aAAc,aAAc,WAAY,QAAS,SAC5DmmR,mBAAoB,KACpBD,mBAAoB,KACpBpE,mBAAoB,IACpBoC,oBAAqB,EACrBU,oBAAqB,EACrBX,iBAAiB,EACjBU,iBAAiB,EACjB4E,aAAa,EACb1B,kBAAkB,EAClBd,kBAAkB,EAClBe,WAAY,GA4BI2B,EACdl/V,KAAKwlE,SAAS7oD,GAAOuiV,EAAaviV,GAGpC3c,KAAKu5V,eAAiB,KACtBv5V,KAAKs4V,gBAAkB,KACvBt4V,KAAK25R,aAAe,KACpB35R,KAAKurD,cAAgB,KAErB,IASM3uB,EADAuiU,EARFrwU,EAAQ,WAAc,OAAOzjB,EAAQ1I,UAAUE,IAAIq0V,IACnDjtD,EAAO,WAAc,OAAO5+R,EAAQ1I,UAAU6I,OAAO0rV,IAEzDl3V,KAAKkJ,MAAmC,QAA3BgJ,EAAI7G,GAASrE,WACP,IAAfhH,KAAKkJ,OACPmC,EAAQ1I,UAAUE,IAxlCf,WA0lCL7C,KAAKo/V,kBACCD,EAAqB9zV,EAAQqtE,WAEjCrtE,EAAQqtE,YAAc,EACtB97C,EAASvxB,EAAQqtE,WAAa,EAC9BrtE,EAAQqtE,WAAaymR,EACdviU,GAET58B,KAAKm6V,yBAA2Bn6V,KAAKo/V,iBACjC/zV,EAAQwtE,YAAcxtE,EAAQ0nE,YAC9B,EACJ/yE,KAAKsoB,MAAQ,IAAIuvU,EACjB73V,KAAKk8V,cAAgB7wV,EAAQ6wV,eAAiBvxT,SAE9C3qC,KAAKw5V,eAAiBv3E,EAAIi1E,EAAiB,MAC3C7rV,EAAQyM,YAAY9X,KAAKw5V,gBACzBx5V,KAAKq7V,WAAap5E,EAAIi1E,EAAkB,MACxCl3V,KAAKw5V,eAAe1hV,YAAY9X,KAAKq7V,YACrCr7V,KAAKq7V,WAAWxsV,aAAa,WAAY,GACzC7O,KAAKsoB,MAAMiiB,KAAKvqC,KAAKq7V,WAAY,QAASvsU,GAC1C9uB,KAAKsoB,MAAMiiB,KAAKvqC,KAAKq7V,WAAY,OAAQpxD,GACzCjqS,KAAK45V,iBAAmB,KACxB55V,KAAKg6V,gBAAkB,KACvBh6V,KAAKk6V,eAAiB,KACtB,IAAImF,EAAantV,EAAIlS,KAAKw5V,gBAC1Bx5V,KAAK86V,iBAAmBtrT,SAAS6vT,EAAWrzV,OAAQ,IAChDivC,MAAMj7C,KAAK86V,mBACb96V,KAAK66V,yBAA0B,EAC/B76V,KAAK+6V,cAAgBnC,EAAMyG,EAAWtzV,MAEtC/L,KAAK66V,yBAA0B,EAEjC76V,KAAKs7V,iBACH1C,EAAMyG,EAAW3rR,iBAAmBklR,EAAMyG,EAAWzrR,kBAEvDv/D,EAAIrU,KAAKw5V,eAAgB,CAAEzmV,QAAS,UACpC/S,KAAK85V,iBACHlB,EAAMyG,EAAW94P,YAAcqyP,EAAMyG,EAAW74P,aAClDnyF,EAAIrU,KAAKw5V,eAAgB,CAAEzmV,QAAS,KACpC/S,KAAK65V,WAAa,KAClB75V,KAAK+5V,WAAa,KAElB/5V,KAAKy5V,eAAiBx3E,EAAIi1E,EAAiB,MAC3C7rV,EAAQyM,YAAY9X,KAAKy5V,gBACzBz5V,KAAKu7V,WAAat5E,EAAIi1E,EAAkB,MACxCl3V,KAAKy5V,eAAe3hV,YAAY9X,KAAKu7V,YACrCv7V,KAAKu7V,WAAW1sV,aAAa,WAAY,GACzC7O,KAAKsoB,MAAMiiB,KAAKvqC,KAAKu7V,WAAY,QAASzsU,GAC1C9uB,KAAKsoB,MAAMiiB,KAAKvqC,KAAKu7V,WAAY,OAAQtxD,GACzCjqS,KAAKs6V,iBAAmB,KACxBt6V,KAAK06V,iBAAmB,KACxB16V,KAAK26V,cAAgB,KACrB,IAAI2E,EAAaptV,EAAIlS,KAAKy5V,gBAC1Bz5V,KAAKk7V,gBAAkB1rT,SAAS8vT,EAAWpzV,MAAO,IAC9C+uC,MAAMj7C,KAAKk7V,kBACbl7V,KAAKi7V,wBAAyB,EAC9Bj7V,KAAKo7V,eAAiBxC,EAAM0G,EAAWrzV,OAEvCjM,KAAKi7V,wBAAyB,EAEhCj7V,KAAKm7V,qBAAuBn7V,KAAKkJ,MA76BnC,SAAoBmC,GAClB,IAAIyN,EAAS5G,EAAI7G,GACjB,OACEutV,EAAM9/U,EAAOpP,OACbkvV,EAAM9/U,EAAO87D,aACbgkR,EAAM9/U,EAAO+7D,cACb+jR,EAAM9/U,EAAO46D,iBACbklR,EAAM9/U,EAAO86D,kBAs6B0B,CAAW5zE,KAAKu7V,YAAc,KACvEv7V,KAAKw7V,iBACH5C,EAAM0G,EAAWxrR,gBAAkB8kR,EAAM0G,EAAWtrR,mBACtD3/D,EAAIrU,KAAKy5V,eAAgB,CAAE1mV,QAAS,UACpC/S,KAAKw6V,kBACH5B,EAAM0G,EAAWzyO,WAAa+rO,EAAM0G,EAAW74P,cACjDpyF,EAAIrU,KAAKy5V,eAAgB,CAAE1mV,QAAS,KACpC/S,KAAKu6V,YAAc,KACnBv6V,KAAKy6V,WAAa,KAElBz6V,KAAKw4V,MAAQ,CACXj9T,EACElwB,EAAQqtE,YAAc,EAClB,QACArtE,EAAQqtE,YAAc14E,KAAK25R,aAAe35R,KAAKu5V,eAC/C,MACA,KACNj0U,EACEja,EAAQ+c,WAAa,EACjB,QACA/c,EAAQ+c,WAAapoB,KAAKurD,cAAgBvrD,KAAKs4V,gBAC/C,MACA,MAGRt4V,KAAKs3V,SAAU,EAEft3V,KAAKwlE,SAASiQ,SAASpiE,QAAQ,SAAUmwD,GAAe,OAAOiS,EAASjS,GAAam0R,KAErF33V,KAAKu/V,cAAgBhhV,KAAKs7B,MAAMxuC,EAAQ+c,WACxCpoB,KAAKw/V,eAAiBn0V,EAAQqtE,WAC9B14E,KAAKsoB,MAAMiiB,KAAKvqC,KAAKqL,QAAS,SAAU,SAAU4oB,GAAK,OAAO0jU,EAAO8H,SAASxrU,KAC9EolU,EAAer5V,OAGjBi/V,EAAiBvsU,UAAU8nD,OAAS,WAC7Bx6E,KAAKs3V,UAKVt3V,KAAKm6V,yBAA2Bn6V,KAAKo/V,iBACjCp/V,KAAKqL,QAAQwtE,YAAc74E,KAAKqL,QAAQ0nE,YACxC,EAGJ1+D,EAAIrU,KAAKw5V,eAAgB,CAAEzmV,QAAS,UACpCsB,EAAIrU,KAAKy5V,eAAgB,CAAE1mV,QAAS,UACpC/S,KAAK85V,iBACHlB,EAAM1mV,EAAIlS,KAAKw5V,gBAAgBjzP,YAC/BqyP,EAAM1mV,EAAIlS,KAAKw5V,gBAAgBhzP,aACjCxmG,KAAKw6V,kBACH5B,EAAM1mV,EAAIlS,KAAKy5V,gBAAgB5sO,WAC/B+rO,EAAM1mV,EAAIlS,KAAKy5V,gBAAgBhzP,cAGjCpyF,EAAIrU,KAAKw5V,eAAgB,CAAEzmV,QAAS,SACpCsB,EAAIrU,KAAKy5V,eAAgB,CAAE1mV,QAAS,SAEpCsmV,EAAer5V,MAEfm4V,EAAkBn4V,KAAM,MAAO,GAAG,GAAO,GACzCm4V,EAAkBn4V,KAAM,OAAQ,GAAG,GAAO,GAE1CqU,EAAIrU,KAAKw5V,eAAgB,CAAEzmV,QAAS,KACpCsB,EAAIrU,KAAKy5V,eAAgB,CAAE1mV,QAAS,OAGtCksV,EAAiBvsU,UAAU+sU,SAAW,SAAmBxrU,GAClDj0B,KAAKs3V,UAIV+B,EAAer5V,MACfm4V,EAAkBn4V,KAAM,MAAOA,KAAKqL,QAAQ+c,UAAYpoB,KAAKu/V,eAC7DpH,EACEn4V,KACA,OACAA,KAAKqL,QAAQqtE,WAAa14E,KAAKw/V,gBAGjCx/V,KAAKu/V,cAAgBhhV,KAAKs7B,MAAM75C,KAAKqL,QAAQ+c,WAC7CpoB,KAAKw/V,eAAiBx/V,KAAKqL,QAAQqtE,aAGrCumR,EAAiBvsU,UAAUxR,QAAU,WAC9BlhB,KAAKs3V,UAIVt3V,KAAKsoB,MAAMsvU,YACXpsV,EAAOxL,KAAKq7V,YACZ7vV,EAAOxL,KAAKu7V,YACZ/vV,EAAOxL,KAAKw5V,gBACZhuV,EAAOxL,KAAKy5V,gBACZz5V,KAAK0/V,kBAGL1/V,KAAKqL,QAAU,KACfrL,KAAKq7V,WAAa,KAClBr7V,KAAKu7V,WAAa,KAClBv7V,KAAKw5V,eAAiB,KACtBx5V,KAAKy5V,eAAiB,KAEtBz5V,KAAKs3V,SAAU,IAGjB2H,EAAiBvsU,UAAUgtU,gBAAkB,WAC3C1/V,KAAKqL,QAAQwc,UAAY7nB,KAAKqL,QAAQwc,UACnCtF,MAAM,KACNpN,OAAO,SAAUhU,GAAQ,OAAQA,EAAKmwC,MAAM,mBAC5CtB,KAAK,MAGK,QC5zCX2vT,EAAW,WACX,GAAmB,oBAARlyV,IACP,OAAOA,IASX,SAASmyV,EAASjwT,EAAKhzB,GACnB,IAAIigB,GAAU,EAQd,OAPA+S,EAAIvnC,KAAK,SAAU0sF,EAAOnrF,GACtB,OAAImrF,EAAM,KAAOn4E,IACbigB,EAASjzB,GACF,KAIRizB,EAEX,OAAsB,WAClB,SAASijU,IACL7/V,KAAK8/V,YAAc,GAuEvB,OArEAtjV,OAAOu3B,eAAe8rT,EAAQntU,UAAW,OAAQ,CAI7CxgB,IAAK,WACD,OAAOlS,KAAK8/V,YAAY37V,QAE5B8vC,YAAY,EACZvW,cAAc,IAMlBmiU,EAAQntU,UAAUxgB,IAAM,SAAUyK,GAC9B,IAAIhT,EAAQi2V,EAAS5/V,KAAK8/V,YAAanjV,GACnCm4E,EAAQ90F,KAAK8/V,YAAYn2V,GAC7B,OAAOmrF,GAASA,EAAM,IAO1B+qQ,EAAQntU,UAAUre,IAAM,SAAUsI,EAAKpb,GACnC,IAAIoI,EAAQi2V,EAAS5/V,KAAK8/V,YAAanjV,IAClChT,EACD3J,KAAK8/V,YAAYn2V,GAAO,GAAKpI,EAG7BvB,KAAK8/V,YAAYl8V,KAAK,CAAC+Y,EAAKpb,KAOpCs+V,EAAQntU,UAAUngB,OAAS,SAAUoK,GACjC,IAAI+X,EAAU10B,KAAK8/V,YACfn2V,EAAQi2V,EAASlrU,EAAS/X,IACzBhT,GACD+qB,EAAQ6T,OAAO5+B,EAAO,IAO9Bk2V,EAAQntU,UAAUte,IAAM,SAAUuI,GAC9B,SAAUijV,EAAS5/V,KAAK8/V,YAAanjV,IAKzCkjV,EAAQntU,UAAUhiB,MAAQ,WACtB1Q,KAAK8/V,YAAYv3T,OAAO,IAO5Bs3T,EAAQntU,UAAUrf,QAAU,SAAU4f,EAAUrxB,QAChC,IAARA,IAAkBA,EAAM,MAC5B,IAAK,IAAI8N,EAAK,EAAG/E,EAAK3K,KAAK8/V,YAAapwV,EAAK/E,EAAGxG,OAAQuL,IAAM,CAC1D,IAAIolF,EAAQnqF,EAAG+E,GACfujB,EAASiC,KAAKtzB,EAAKkzF,EAAM,GAAIA,EAAM,MAGpC+qQ,EAzEX,GAtBW,GAsGX5nV,EAA8B,oBAAXkT,QAA8C,oBAAbwf,UAA4Bxf,OAAOwf,WAAaA,SAGpGo1T,EACsB,oBAAXj4T,QAA0BA,OAAOvpB,OAASA,KAC1CupB,OAES,oBAATmxM,MAAwBA,KAAK16N,OAASA,KACtC06N,KAEW,oBAAX9tN,QAA0BA,OAAO5M,OAASA,KAC1C4M,OAGJwsJ,SAAS,cAATA,GASPqoL,EACqC,mBAA1Bv3K,sBAIAA,sBAAsBl+I,KAAKw1T,GAE/B,SAAU9sU,GAAY,OAAO2R,WAAW,WAAc,OAAO3R,EAASynB,KAAKqR,QAAW,IAAO,KAwEpGk0S,EAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,UAE/EC,EAAwD,oBAArB30J,iBAInC40J,EAA0C,WAM1C,SAASA,IAMLngW,KAAKogW,YAAa,EAMlBpgW,KAAKqgW,sBAAuB,EAM5BrgW,KAAKsgW,mBAAqB,KAM1BtgW,KAAKugW,WAAa,GAClBvgW,KAAKwgW,iBAAmBxgW,KAAKwgW,iBAAiBj2T,KAAKvqC,MACnDA,KAAKq2V,QAjGb,SAAmBpjU,EAAUm6D,GACzB,IAAIqzQ,GAAc,EAAOC,GAAe,EAAO51F,EAAe,EAO9D,SAAS61F,IACDF,IACAA,GAAc,EACdxtU,KAEAytU,GACAE,IAUR,SAASC,IACLb,EAAwBW,GAO5B,SAASC,IACL,IAAIE,EAAYpmT,KAAKqR,MACrB,GAAI00S,EAAa,CAEb,GAAIK,EAAYh2F,EA7CN,EA8CN,OAMJ41F,GAAe,OAGfD,GAAc,EACdC,GAAe,EACf97T,WAAWi8T,EAQH,IANZ/1F,EAAeg2F,EAEnB,OAAOF,EA6CYruF,CAASvyQ,KAAKq2V,QAAQ9rT,KAAKvqC,OAgK9C,OAxJAmgW,EAAyBztU,UAAUquU,YAAc,SAAU30T,IACjDpsC,KAAKugW,WAAWt3V,QAAQmjC,IAC1BpsC,KAAKugW,WAAW38V,KAAKwoC,GAGpBpsC,KAAKogW,YACNpgW,KAAKghW,YASbb,EAAyBztU,UAAUuuU,eAAiB,SAAU70T,GAC1D,IAAIo7G,EAAYxnJ,KAAKugW,WACjB52V,EAAQ69I,EAAUv+I,QAAQmjC,IAEzBziC,GACD69I,EAAUj/G,OAAO5+B,EAAO,IAGvB69I,EAAUrjJ,QAAUnE,KAAKogW,YAC1BpgW,KAAKkhW,eASbf,EAAyBztU,UAAU2jU,QAAU,WACnBr2V,KAAKmhW,oBAIvBnhW,KAAKq2V,WAWb8J,EAAyBztU,UAAUyuU,iBAAmB,WAElD,IAAIC,EAAkBphW,KAAKugW,WAAWprV,OAAO,SAAUi3B,GACnD,OAAOA,EAASi1T,eAAgBj1T,EAAS23F,cAQ7C,OADAq9N,EAAgB/tV,QAAQ,SAAU+4B,GAAY,OAAOA,EAASk1T,oBACvDF,EAAgBj9V,OAAS,GAQpCg8V,EAAyBztU,UAAUsuU,SAAW,WAGrC/oV,IAAajY,KAAKogW,aAMvBz1T,SAASrf,iBAAiB,gBAAiBtrB,KAAKwgW,kBAChDr1U,OAAOG,iBAAiB,SAAUtrB,KAAKq2V,SACnC6J,GACAlgW,KAAKsgW,mBAAqB,IAAI/0J,iBAAiBvrM,KAAKq2V,SACpDr2V,KAAKsgW,mBAAmBhzN,QAAQ3iG,SAAU,CACtCu8I,YAAY,EACZ+kB,WAAW,EACXD,eAAe,EACfE,SAAS,MAIbvhK,SAASrf,iBAAiB,qBAAsBtrB,KAAKq2V,SACrDr2V,KAAKqgW,sBAAuB,GAEhCrgW,KAAKogW,YAAa,IAQtBD,EAAyBztU,UAAUwuU,YAAc,WAGxCjpV,GAAcjY,KAAKogW,aAGxBz1T,SAAShf,oBAAoB,gBAAiB3rB,KAAKwgW,kBACnDr1U,OAAOQ,oBAAoB,SAAU3rB,KAAKq2V,SACtCr2V,KAAKsgW,oBACLtgW,KAAKsgW,mBAAmBxvV,aAExB9Q,KAAKqgW,sBACL11T,SAAShf,oBAAoB,qBAAsB3rB,KAAKq2V,SAE5Dr2V,KAAKsgW,mBAAqB,KAC1BtgW,KAAKqgW,sBAAuB,EAC5BrgW,KAAKogW,YAAa,IAStBD,EAAyBztU,UAAU8tU,iBAAmB,SAAU71V,GAC5D,IAAIC,EAAKD,EAAGwjJ,aAAcA,OAAsB,IAAPvjJ,EAAgB,GAAKA,EAEvCq1V,EAAe73V,KAAK,SAAUuU,GACjD,SAAUwxI,EAAallJ,QAAQ0T,MAG/B3c,KAAKq2V,WAQb8J,EAAyBoB,YAAc,WAInC,OAHKvhW,KAAKwhW,YACNxhW,KAAKwhW,UAAY,IAAIrB,GAElBngW,KAAKwhW,WAOhBrB,EAAyBqB,UAAY,KAC9BrB,EAhMmC,GA0M1CsB,EAAsB,SAAUj1U,EAAQuG,GACxC,IAAK,IAAIrjB,EAAK,EAAG/E,EAAK6R,OAAOC,KAAKsW,GAAQrjB,EAAK/E,EAAGxG,OAAQuL,IAAM,CAC5D,IAAIiN,EAAMhS,EAAG+E,GACb8M,OAAOu3B,eAAevnB,EAAQ7P,EAAK,CAC/Bpb,MAAOwxB,EAAMpW,GACbs3B,YAAY,EACZtW,UAAU,EACVD,cAAc,IAGtB,OAAOlR,GASPk1U,EAAe,SAAUl1U,GAOzB,OAHkBA,GAAUA,EAAO0vU,eAAiB1vU,EAAO0vU,cAAc/qU,aAGnD4uU,GAItB4B,EAAYC,EAAe,EAAG,EAAG,EAAG,GAOxC,SAASC,EAAQtgW,GACb,OAAOssB,WAAWtsB,IAAU,EAShC,SAASugW,EAAehpV,GAEpB,IADA,IAAIzM,EAAY,GACPqD,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCrD,EAAUqD,EAAK,GAAK4J,UAAU5J,GAElC,OAAOrD,EAAUoJ,OAAO,SAAU0qB,EAAMn2B,GAEpC,OAAOm2B,EAAO0hU,EADF/oV,EAAO,UAAY9O,EAAW,YAE3C,GA0GP,IAAI+3V,EAGkC,oBAAvBC,mBACA,SAAUx1U,GAAU,OAAOA,aAAkBk1U,EAAYl1U,GAAQw1U,oBAKrE,SAAUx1U,GAAU,OAAQA,aAAkBk1U,EAAYl1U,GAAQ86H,YAC3C,mBAAnB96H,EAAOy1U,SA0DtB,SAASL,EAAermU,EAAGjW,EAAG5b,EAAOc,GACjC,MAAO,CAAE+wB,EAAGA,EAAGjW,EAAGA,EAAG5b,MAAOA,EAAOc,OAAQA,GAO/C,IAAI03V,EAAmC,WAMnC,SAASA,EAAkB11U,GAMvBxsB,KAAKmiW,eAAiB,EAMtBniW,KAAKoiW,gBAAkB,EAMvBpiW,KAAKqiW,aAAeT,EAAe,EAAG,EAAG,EAAG,GAC5C5hW,KAAKwsB,OAASA,EA0BlB,OAlBA01U,EAAkBxvU,UAAU4vU,SAAW,WACnC,IAnFgB91U,EAmFZuhD,GAnFYvhD,EAmFUxsB,KAAKwsB,OAlF9BvU,EAGD8pV,EAAqBv1U,GAhH7B,SAA2BA,GACvB,IAAI+1U,EAAO/1U,EAAOy1U,UAClB,OAAOL,EAAe,EAAG,EAAGW,EAAK74V,MAAO64V,EAAK/3V,QA+GlCg4V,CAAkBh2U,GAvGjC,SAAmCA,GAG/B,IAAIumD,EAAcvmD,EAAOumD,YAAaF,EAAermD,EAAOqmD,aAS5D,IAAKE,IAAgBF,EACjB,OAAO8uR,EAEX,IAAI7oV,EAAS4oV,EAAYl1U,GAAQgnD,iBAAiBhnD,GAC9Ci2U,EA3CR,SAAqB3pV,GAGjB,IAFA,IACI2pV,EAAW,GACN/yV,EAAK,EAAGgzV,EAFD,CAAC,MAAO,QAAS,SAAU,QAEDhzV,EAAKgzV,EAAYv+V,OAAQuL,IAAM,CACrE,IAAI1F,EAAW04V,EAAYhzV,GAE3B+yV,EAASz4V,GAAY63V,EADT/oV,EAAO,WAAa9O,IAGpC,OAAOy4V,EAmCQE,CAAY7pV,GACvB8pV,EAAWH,EAASx2V,KAAOw2V,EAASv2V,MACpC22V,EAAUJ,EAAS12V,IAAM02V,EAASz2V,OAKlCtC,EAAQm4V,EAAQ/oV,EAAOpP,OAAQc,EAASq3V,EAAQ/oV,EAAOtO,QAqB3D,GAlByB,eAArBsO,EAAOgqV,YAOHvkV,KAAK06B,MAAMvvC,EAAQk5V,KAAc7vR,IACjCrpE,GAASo4V,EAAehpV,EAAQ,OAAQ,SAAW8pV,GAEnDrkV,KAAK06B,MAAMzuC,EAASq4V,KAAahwR,IACjCroE,GAAUs3V,EAAehpV,EAAQ,MAAO,UAAY+pV,KAoDhE,SAA2Br2U,GACvB,OAAOA,IAAWk1U,EAAYl1U,GAAQme,SAAS6J,gBA9C1CuuT,CAAkBv2U,GAAS,CAK5B,IAAIw2U,EAAgBzkV,KAAK06B,MAAMvvC,EAAQk5V,GAAY7vR,EAC/CkwR,EAAiB1kV,KAAK06B,MAAMzuC,EAASq4V,GAAWhwR,EAMpB,IAA5Bt0D,KAAKqiC,IAAIoiT,KACTt5V,GAASs5V,GAEoB,IAA7BzkV,KAAKqiC,IAAIqiT,KACTz4V,GAAUy4V,GAGlB,OAAOrB,EAAea,EAASx2V,KAAMw2V,EAAS12V,IAAKrC,EAAOc,GA0CnD04V,CAA0B12U,GALtBm1U,GAmFP,OADA3hW,KAAKqiW,aAAet0R,EACZA,EAAKrkE,QAAU1J,KAAKmiW,gBACxBp0R,EAAKvjE,SAAWxK,KAAKoiW,iBAQ7BF,EAAkBxvU,UAAUywU,cAAgB,WACxC,IAAIp1R,EAAO/tE,KAAKqiW,aAGhB,OAFAriW,KAAKmiW,eAAiBp0R,EAAKrkE,MAC3B1J,KAAKoiW,gBAAkBr0R,EAAKvjE,OACrBujE,GAEJm0R,EAnD4B,GAsDnCkB,GAOA,SAA6B52U,EAAQ62U,GACjC,IA/FoB14V,EACpB4wB,EAAUjW,EAAU5b,EAAkBc,EAEtC84V,EACAv1R,EA2FIw1R,GA9FJhoU,GADoB5wB,EA+FiB04V,GA9F9B9nU,EAAGjW,EAAI3a,EAAG2a,EAAG5b,EAAQiB,EAAGjB,MAAOc,EAASG,EAAGH,OAElD84V,EAAoC,oBAApBE,gBAAkCA,gBAAkBhnV,OACpEuxD,EAAOvxD,OAAOlX,OAAOg+V,EAAO5wU,WAEhC+uU,EAAmB1zR,EAAM,CACrBxyC,EAAGA,EAAGjW,EAAGA,EAAG5b,MAAOA,EAAOc,OAAQA,EAClCuB,IAAKuZ,EACLpZ,MAAOqvB,EAAI7xB,EACXsC,OAAQxB,EAAS8a,EACjBrZ,KAAMsvB,IAEHwyC,GAyFH0zR,EAAmBzhW,KAAM,CAAEwsB,OAAQA,EAAQ+2U,YAAaA,KAK5DE,GAAmC,WAWnC,SAASA,EAAkBxwU,EAAU8+L,EAAY2xI,GAc7C,GAPA1jW,KAAK2jW,oBAAsB,GAM3B3jW,KAAK4jW,cAAgB,IAAIjE,EACD,mBAAb1sU,EACP,MAAM,IAAIuf,UAAU,2DAExBxyC,KAAK6jW,UAAY5wU,EACjBjzB,KAAK8jW,YAAc/xI,EACnB/xN,KAAK+jW,aAAeL,EAoHxB,OA5GAD,EAAkB/wU,UAAU46G,QAAU,SAAU9gH,GAC5C,IAAKlT,UAAUnV,OACX,MAAM,IAAIquC,UAAU,4CAGxB,GAAuB,oBAAZosE,SAA6BA,mBAAmBpiG,OAA3D,CAGA,KAAMgQ,aAAkBk1U,EAAYl1U,GAAQoyF,SACxC,MAAM,IAAIpsE,UAAU,yCAExB,IAAIwxT,EAAehkW,KAAK4jW,cAEpBI,EAAa5vV,IAAIoY,KAGrBw3U,EAAa3vV,IAAImY,EAAQ,IAAI01U,EAAkB11U,IAC/CxsB,KAAK8jW,YAAY/C,YAAY/gW,MAE7BA,KAAK8jW,YAAYzN,aAQrBoN,EAAkB/wU,UAAUuxU,UAAY,SAAUz3U,GAC9C,IAAKlT,UAAUnV,OACX,MAAM,IAAIquC,UAAU,4CAGxB,GAAuB,oBAAZosE,SAA6BA,mBAAmBpiG,OAA3D,CAGA,KAAMgQ,aAAkBk1U,EAAYl1U,GAAQoyF,SACxC,MAAM,IAAIpsE,UAAU,yCAExB,IAAIwxT,EAAehkW,KAAK4jW,cAEnBI,EAAa5vV,IAAIoY,KAGtBw3U,EAAazxV,OAAOia,GACfw3U,EAAa7jU,MACdngC,KAAK8jW,YAAY7C,eAAejhW,SAQxCyjW,EAAkB/wU,UAAU5hB,WAAa,WACrC9Q,KAAKkkW,cACLlkW,KAAK4jW,cAAclzV,QACnB1Q,KAAK8jW,YAAY7C,eAAejhW,OAQpCyjW,EAAkB/wU,UAAU2uU,aAAe,WACvC,IAAI3/S,EAAQ1hD,KACZA,KAAKkkW,cACLlkW,KAAK4jW,cAAcvwV,QAAQ,SAAU8wV,GAC7BA,EAAY7B,YACZ5gT,EAAMiiT,oBAAoB//V,KAAKugW,MAU3CV,EAAkB/wU,UAAU4uU,gBAAkB,WAE1C,GAAKthW,KAAK+jI,YAAV,CAGA,IAAIniI,EAAM5B,KAAK+jW,aAEXrvU,EAAU10B,KAAK2jW,oBAAoBl6V,IAAI,SAAU06V,GACjD,OAAO,IAAIf,GAAoBe,EAAY33U,OAAQ23U,EAAYhB,mBAEnEnjW,KAAK6jW,UAAU3uU,KAAKtzB,EAAK8yB,EAAS9yB,GAClC5B,KAAKkkW,gBAOTT,EAAkB/wU,UAAUwxU,YAAc,WACtClkW,KAAK2jW,oBAAoBp7T,OAAO,IAOpCk7T,EAAkB/wU,UAAUqxG,UAAY,WACpC,OAAO/jI,KAAK2jW,oBAAoBx/V,OAAS,GAEtCs/V,EAlJ4B,GAwJnCj8M,GAA+B,oBAAZlzI,QAA0B,IAAIA,QAAY,IAAIqrV,EAKjEyE,GAOA,SAASA,EAAenxU,GACpB,KAAMjzB,gBAAgBokW,GAClB,MAAM,IAAI5xT,UAAU,sCAExB,IAAKl5B,UAAUnV,OACX,MAAM,IAAIquC,UAAU,4CAExB,IAAIu/K,EAAaouI,EAAyBoB,cACtCn1T,EAAW,IAAIq3T,GAAkBxwU,EAAU8+L,EAAY/xN,MAC3DwnJ,GAAUnzI,IAAIrU,KAAMosC,IAK5B,CACI,UACA,YACA,cACF/4B,QAAQ,SAAUu3E,GAChBw5Q,GAAe1xU,UAAUk4D,GAAU,WAC/B,IAAIjgF,EACJ,OAAQA,EAAK68I,GAAUt1I,IAAIlS,OAAO4qF,GAAQjzC,MAAMhtC,EAAI2O,cAI5D,IAQe3P,QAN4B,IAA5Bo2V,EAASqE,eACTrE,EAASqE,eAEbA,GCz3BPC,GAA2B,IAAI,IAAe,4BAC9CC,GAA0B,WAO1B,OANA,SAAkB/oU,EAAGjW,EAAGJ,EAAGH,GACvB/kB,KAAKu7B,EAAIA,EACTv7B,KAAKslB,EAAIA,EACTtlB,KAAKklB,EAAIA,EACTllB,KAAK+kB,EAAIA,GALa,GAS1Bw/U,GAA0B,WAK1B,OAJA,SAAkBhpU,EAAGjW,GACjBtlB,KAAKu7B,EAAIA,EACTv7B,KAAKslB,EAAIA,GAHa,GAQ1Bk/U,GAAyB,CACzB,YACA,YACA,aACA,eACA,eACA,gBACA,cACA,gBACA,cACA,iBAEAC,GAAwC,WACxC,SAASA,EAAuBrsU,QACb,IAAXA,IAAqBA,EAAS,IAClCp4B,KAAK+mC,OAAO3O,GAgBhB,OAVAqsU,EAAuB/xU,UAAUqU,OAIjC,SAAU3O,GAEN,IAAK,IAAIzb,UADM,IAAXyb,IAAqBA,EAAS,IAClBA,EACZp4B,KAAwB2c,GAASyb,EAA0Bzb,IAG5D8nV,EAnBiC,GA0BxC,GAA2C,WAC3C,SAASC,EAA0Bv6O,EAAMw6O,EAASjiW,EAAYgjI,EAAY3+G,GACtE/mB,KAAKmqH,KAAOA,EACZnqH,KAAK2kW,QAAUA,EACf3kW,KAAK0C,WAAaA,EAClB1C,KAAK0lI,WAAaA,EAClB1lI,KAAK+mB,SAAWA,EAChB/mB,KAAK8zB,SAAW,KAChB9zB,KAAK4kW,GAAK,KACV5kW,KAAKouJ,QAAU,KACfpuJ,KAAK2jC,UAAY,KACjB3jC,KAAK6kW,WAAa,KAClB7kW,KAAK8kW,UAAY,IAAIrhW,EAAA,EACrBzD,KAAKgtB,UAAW,EAChBhtB,KAAK+kW,UAAY,IAAI,IACrB/kW,KAAKglW,UAAY,IAAI,IACrBhlW,KAAKilW,WAAa,IAAI,IACtBjlW,KAAKklW,aAAe,IAAI,IACxBllW,KAAKmlW,aAAe,IAAI,IACxBnlW,KAAKolW,cAAgB,IAAI,IACzBplW,KAAKqlW,YAAc,IAAI,IACvBrlW,KAAKslW,cAAgB,IAAI,IACzBtlW,KAAKulW,YAAc,IAAI,IACvBvlW,KAAKwlW,cAAgB,IAAI,IAif7B,OA5eAd,EAA0BhyU,UAAU29F,SAGpC,WACI,IAAI3uE,EAAQ1hD,KACZ,IAAKA,KAAKgtB,UAAY,YAAkBhtB,KAAK0lI,YAAa,CAEtD,IAAI+/N,EAAW,IAAIhB,GAAuBzkW,KAAK+mB,UAC/C0+U,EAAS1+T,OAAO/mC,KAAKo4B,QACrBp4B,KAAKmqH,KAAK9+F,kBAGV,WACIq2B,EAAM5tB,SAAW,IAAI,EAAiB4tB,EAAMh/C,WAAWE,cAAe6iW,KAErEzlW,KAAK6kW,aACN7kW,KAAK6kW,WAAa7kW,KAAK2kW,QAAQt/V,KAAKrF,KAAKo4B,QAAU,IAAI9yB,SACvDtF,KAAK6kW,WAAWt/V,KAAKvF,KAAKo4B,QAAU,KAExCp4B,KAAKmqH,KAAK9+F,kBAGV,WACIq2B,EAAMkjT,GAAK,IAAI,GAGf,WACIljT,EAAM84B,WAEN94B,EAAMh/C,WAAWE,cAAckF,SAAS,IACxC45C,EAAMkjT,GAAGt3N,QAAQ5rF,EAAMh/C,WAAWE,cAAckF,SAAS,IAE7D45C,EAAMkjT,GAAGt3N,QAAQ5rF,EAAMh/C,WAAWE,iBAEtC5C,KAAKmqH,KAAK9+F,kBAGV,WACIm5U,GAAuBnxV,QAIvB,SAAUyiC,GAEN,IAAIP,EAAYO,EAAUt0C,QAAQ,WAIlC,SAAUouC,GAAK,MAAO,IAAMA,EAAEhzB,gBAC9B,OAAAusG,EAAA,GAAUznE,EAAMh/C,WAAWE,cAAe2yC,GACrCvxC,KAAK,OAAAm9I,EAAA,GAAU,IAAK,OAAAl9I,EAAA,GAAUy9C,EAAMojT,YACpC5gW,UAIL,SAAUokB,GACNo5B,EAAM5L,GAAW5zB,KAAKoG,WAS1Co8U,EAA0BhyU,UAAU8wJ,YAGpC,WACI,IAAI9hI,EAAQ1hD,KACR,YAAkBA,KAAK0lI,cACvB1lI,KAAK8kW,UAAUjhW,OACf7D,KAAK8kW,UAAUhhW,WACX9D,KAAK4kW,IACL5kW,KAAK4kW,GAAG9zV,aAER9Q,KAAKouJ,SAA6B,oBAAXjjI,QACvBA,OAAO+Y,aAAalkC,KAAKouJ,SAE7BpuJ,KAAKmqH,KAAK9+F,kBAGV,WACQq2B,EAAM5tB,UACN4tB,EAAM5tB,SAAS5S,YAGvBlhB,KAAK8zB,SAAW,OAMxB4wU,EAA0BhyU,UAAUgzU,UAGpC,YACS1lW,KAAKgtB,UAAYhtB,KAAK6kW,YAAc,YAAkB7kW,KAAK0lI,aAE9C1lI,KAAK6kW,WAAWt/V,KAAKvF,KAAKo4B,QAAU,MAE9Cp4B,KAAKwjL,cACLxjL,KAAKqwH,aAQjBq0O,EAA0BhyU,UAAUizU,YAIpC,SAAU1gW,GACFA,EAAO,WAAiBA,EAAO,SAAautH,iBAAmB,YAAkBxyH,KAAK0lI,aAClFzgI,EAAO,SAAaG,eAAiBH,EAAO,SAAaujC,iBAChB,IAArCvjC,EAAO,SAAaG,aACpBpF,KAAKwjL,eAEqC,IAArCv+K,EAAO,SAAaG,cACzBpF,KAAKqwH,aAQrBq0O,EAA0BhyU,UAAUq3S,GAGpC,WACI,OAAO/pU,KAAK8zB,UAKhB4wU,EAA0BhyU,UAAU8nD,OAGpC,WACI,IAAI94B,EAAQ1hD,KACU,oBAAXmrB,SACHnrB,KAAKouJ,SACLjjI,OAAO+Y,aAAalkC,KAAKouJ,SAE7BpuJ,KAAKouJ,QAAUjjI,OAAOyZ,WAGtB,WACI,IAAK8c,EAAM10B,UAAY00B,EAAMmjT,WACzB,IACInjT,EAAMyoE,KAAK9+F,kBAGX,WACQq2B,EAAM5tB,UACN4tB,EAAM5tB,SAAS0mD,WAI3B,MAAOxlD,MAIX,KAOZ0vU,EAA0BhyU,UAAUkzU,SAIpC,SAAUnsR,GAEN,YADe,IAAXA,IAAqBA,EAAS,UAC3B,IAAI6qR,GAAStkW,KAAK0C,WAAWE,cAAc62E,EAAS,QAASz5E,KAAK0C,WAAWE,cAAc62E,EAAS,OAAQz5E,KAAK0C,WAAWE,cAAc62E,EAAS,SAAUz5E,KAAK0C,WAAWE,cAAc62E,EAAS,YAM/MirR,EAA0BhyU,UAAU1oB,SAIpC,SAAU67V,GAEN,YADiB,IAAbA,IAAuBA,GAAW,IACjCA,GAAY7lW,KAAK8zB,SACX,IAAIywU,GAASvkW,KAAK8zB,SAAS0kU,MAAMj9T,GAAK,EAAGv7B,KAAK8zB,SAAS0kU,MAAMlzU,GAAK,GAGlE,IAAIi/U,GAASvkW,KAAK0C,WAAWE,cAAc81E,WAAY14E,KAAK0C,WAAWE,cAAcwlB,YAOpGs8U,EAA0BhyU,UAAU8mI,WAIpC,SAAUxyJ,QACY,IAAdA,IAAwBA,EAAY,OAExC,IAAIqE,EAAUrL,KAAK0C,WAAWE,cAC9B,MAAkB,QAAdoE,EACOqE,EAAQ1I,UAAUiqB,SAAS,iBAC9BvhB,EAAQ1I,UAAUiqB,SAAS,gBAEZ,SAAd5lB,EACEqE,EAAQ1I,UAAUiqB,SAAS,iBAC9BvhB,EAAQ1I,UAAUiqB,SAAS,gBAGxBvhB,EAAQ1I,UAAUiqB,SAAS,cAAgB5lB,IAS1D09V,EAA0BhyU,UAAU+wQ,SAMpC,SAAUloQ,EAAGjW,EAAGw4U,GACP99V,KAAKgtB,WACG,MAAL1H,GAAsB,MAATw4U,EACb99V,KAAK8lW,iBAAiB,YAAavqU,EAAGuiU,IAG7B,MAALviU,GACAv7B,KAAK8lW,iBAAiB,aAAcvqU,EAAGuiU,GAElC,MAALx4U,GACAtlB,KAAK8lW,iBAAiB,YAAaxgV,EAAGw4U,MAUtD4G,EAA0BhyU,UAAUqzU,UAKpC,SAAUxqU,EAAGuiU,GACT99V,KAAK8lW,iBAAiB,aAAcvqU,EAAGuiU,IAO3C4G,EAA0BhyU,UAAUszU,UAKpC,SAAU1gV,EAAGw4U,GACT99V,KAAK8lW,iBAAiB,YAAaxgV,EAAGw4U,IAO1C4G,EAA0BhyU,UAAUuzU,YAKpC,SAAUp7V,EAAQizV,GACd99V,KAAK8lW,iBAAiB,YAAcj7V,GAAU,EAAIizV,IAOtD4G,EAA0BhyU,UAAUwzU,aAKpC,SAAUr7V,EAAQizV,GACd99V,KAAK8lW,iBAAiB,aAAej7V,GAAU,EAAIizV,IAOvD4G,EAA0BhyU,UAAUyzU,cAKpC,SAAUt7V,EAAQizV,GAId99V,KAAK8lW,iBAAiB,aAFX9lW,KAAK0C,WAAWE,cAAci2E,YACrC74E,KAAK0C,WAAWE,cAAcmwE,aACUloE,GAAU,GAAIizV,IAO9D4G,EAA0BhyU,UAAU0zU,eAKpC,SAAUv7V,EAAQizV,GAId99V,KAAK8lW,iBAAiB,YAFZ9lW,KAAK0C,WAAWE,cAAck2E,aACpC94E,KAAK0C,WAAWE,cAAciwE,cACQhoE,GAAU,GAAIizV,IAQ5D4G,EAA0BhyU,UAAU2zU,gBAMpC,SAAUC,EAAIz7V,EAAQizV,GAElB,IAAIzyV,EAAUrL,KAAK0C,WAAWE,cAAcwI,cAAck7V,GAC1D,GAAIj7V,EAAS,CAET,IAAIk7V,EAAal7V,EAAQZ,wBAErB+7V,EAAcxmW,KAAK0C,WAAWE,cAAc6H,wBAC5CzK,KAAK0C,WAAWE,cAAcD,UAAUiqB,SAAS,iBAKjD5sB,KAAK8lW,iBAAiB,aADPS,EAAWt6V,KAAOu6V,EAAYv6V,KAF5BjM,KAAK0C,WAAWE,cAAhB,YAG+BiI,GAAU,GAAIizV,GAE9D99V,KAAK0C,WAAWE,cAAcD,UAAUiqB,SAAS,iBAKjD5sB,KAAK8lW,iBAAiB,YADPS,EAAWx6V,IAAMy6V,EAAYz6V,IAF3B/L,KAAK0C,WAAWE,cAAhB,WAG8BiI,GAAU,GAAIizV,KAWzE4G,EAA0BhyU,UAAUozU,iBAOpC,SAAUt5U,EAAQjrB,EAAOu8V,GACrB,IAAIp8S,EAAQ1hD,KAKZ,GAJIA,KAAK2jC,YACLxY,OAAOo9P,qBAAqBvoR,KAAK2jC,WACjC3jC,KAAK2jC,UAAY,MAEhBm6T,GAA2B,oBAAX3yU,QAGhB,GAAI5pB,IAAUvB,KAAK0C,WAAWE,cAAc4pB,GAAS,CAEtD,IAAIi6U,EAAa,EAEbC,EAAgB,EAEhBC,EAAiBC,YAAY76S,MAE7B86S,EAAa7mW,KAAK0C,WAAWE,cAAc4pB,GAE3Cs6U,GAAkBD,EAAatlW,GAAS,EAExC,EAIJ,SAAUwlW,GACNL,GAAiBnoV,KAAKu7L,IAAMgkJ,GAASiJ,EAAeJ,IACpDF,EAAaloV,KAAK06B,MAAM13C,EAAQulW,EAAiBA,EAAiBvoV,KAAKw7L,IAAI2sJ,IAEvEhlT,EAAMh/C,WAAWE,cAAc4pB,KAAYq6U,IACvCH,GAAiBnoV,KAAKu7L,GACtBp4J,EAAMokT,iBAAiBt5U,EAAQjrB,EAAO,IAGtCmgD,EAAMh/C,WAAWE,cAAc4pB,GAAUi6U,EAEzCI,EAAanlT,EAAMh/C,WAAWE,cAAc4pB,GAC5Cm6U,EAAiBI,EACjBrlT,EAAM/d,UAAYxY,OAAOs9J,sBAAsB,MAI3Dt9J,OAAOs9J,sBAAsB,SAnC7BzoL,KAAK0C,WAAWE,cAAc4pB,GAAUjrB,GA4DpDmjW,EAA0BnkW,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAKkkW,GAA2B,KAAyB,KAAgB,KAAyB,KAAyB,KAAyB,KAAoB,KAAyB,KAAc,KAAyBL,GAA0B,KAC/VK,EAA0BjkW,UAAO,KAAyB,CAAEC,KAAMgkW,EAA2B/jW,UAAW,CAAC,CAAC,GAAI,mBAAoB,KAAMwB,OAAQ,CAAE6qB,SAAU,WAAYoL,OAAQ,CAAC,mBAAoB,WAAajW,QAAS,CAAE4iV,UAAW,YAAaC,UAAW,YAAaC,WAAY,aAAcC,aAAc,eAAgBC,aAAc,eAAgBC,cAAe,gBAAiBC,YAAa,cAAeC,cAAe,gBAAiBC,YAAa,cAAeC,cAAe,iBAAmB9sV,SAAU,CAAC,uBAAwBpW,SAAU,CAAC,QAyChiBoiW,EAxgBoC,GA+3B3C,GAAwC,WACxC,SAASsC,KAcT,OAZJA,EAAuBzmW,UAAO,SAAwCC,GAAK,OAAO,IAAKA,GAAKwmW,IAC5FA,EAAuB9tV,UAAO,KAAwB,CAAExY,KAAMsmW,IAC9DA,EAAuB7tV,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,KAAe,OAUvE4tV,EAfiC,I,kCC19B5C,4DAEM,SAAUt6J,IAA8C,IAArCxwC,EAAqC,uDAAxBvtJ,OAAOwtJ,kBACzC,OAAO,YAAS,IAAUD,K,kCCD9B,oFAMA,aAUC,WAAoB/kI,EAA0BC,GAA1B,KAAAD,OAA0B,KAAAC,gBAItC,KAAAM,eAAiB,IAAI,IAAY,CACxC,eAAgB,mBAChBC,cAAe,UAAiBC,aAAaC,QAAQ,eACrDC,OAAQ,qBAED,KAAA9P,QAAU,CAAEyP,QAASz3B,KAAK03B,gBAPjC13B,KAAKinW,iBAAmB,IAAI,I,OAS7B,YAAAC,SAAA,WACC,OAAOlnW,KAAKmnW,YAQb,YAAAC,YAAA,SAAYhvU,GACXp4B,KAAKmnW,WAAa/uU,EAClBp4B,KAAKinW,iBAAiBpjW,KAAK7D,KAAKmnW,aAEjC,YAAA32B,UAAA,WACC,OAAOxwU,KAAKm3B,KAAKjlB,IAAoBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,sBAAuBr4B,KAAKgoB,U,sCAlCzFq/U,GAAiB,sB,yBAAjBA,EAAiB,QAAjBA,EAAiB,Y,EAD9B,I,sBCGS,SAAUhlV,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFL,MACzF,KAEJM,YACI,6DAA6DN,MAAM,KACvE0U,kBAAkB,EAClB1T,SAAU,2DAAqDhB,MAAM,KACrEiB,cAAe,oCAA8BjB,MAAM,KACnDkB,YAAa,6BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,gBACHC,GAAI,cACJ/B,EAAG,aACHgC,GAAI,cACJC,EAAG,aACHC,GAAI,WACJhN,EAAG,YACHiN,GAAI,WACJC,EAAG,YACHC,GAAI,UACJC,EAAG,iBACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxDyB/gB,CAAQ,EAAQ,U,kCCR1D,gDACM,SAAUwiW,EAAUrrM,EAAS92B,GAC/B,OAAO,YAAS82B,EAAS92B,EAAgB,K,kQCmBvC1lI,EAAM,CAAC,SACPC,EAAM,WAAc,MAAO,CAAE8xG,cAAe,MAC5CF,EAAM,CAAC,KACPi2P,EAA+B,IAAI,IAAe,+BAAgC,CACpF3gV,WAAY,OACZ9hB,QAAS0iW,IAGb,SAASA,IACL,MAAO,CACH3xS,MAAO,SACP4xS,YAAa,uBAYrB,IAAI71P,EAAe,EAEb7qF,EAAWygV,IAMXE,EAAsC,CACxCnlW,QAAS,IACTC,YAAa,aAAW,kBAAMmlW,IAC9Bj+U,OAAO,GAGLk+U,E,+CAIAC,E,YACF,WAAY96V,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrB+6V,EAAwB,YAAc,YAAW,YAAmB,YAAcD,M,iBASlFF,E,YACF,WAAYjlW,EAAYoK,EAAoBi1B,EAAez+B,EAAS6yC,EAAUg8D,EAAgBgjF,GAAQ,M,MAAA,4B,EAClG,K,EAAA,E,EAAA,CAAMzyL,G,iBAAN,E,iGACKoK,mBAAqBA,EAC1B,EAAKi1B,cAAgBA,EACrB,EAAKz+B,QAAUA,EACf,EAAK6uG,eAAiBA,EACtB,EAAKgjF,SAAWA,EAKhB,EAAKhvK,UAAY,GAIjB,EAAKqC,eAAiB,KACtB,EAAK6pF,UAAL,yBAAmCT,GAEnC,EAAK5rF,GAAK,EAAKqsF,UAEf,EAAKG,cAAgB,QAErB,EAAKrxG,KAAO,KAEZ,EAAK4O,OAAS,IAAI,IAElB,EAAKg4V,oBAAsB,IAAI,IAK/B,EAAKn9U,WAAa,aAClB,EAAKo9U,uBAAyB,GAC9B,EAAKC,mBAAqB,EAC1B,EAAKj2D,8BAAgC,aACrC,EAAKz/L,UAAW,EAChB,EAAK4N,WAAY,EACjB,EAAK+nP,gBAAiB,EACtB,EAAK/yK,SAAW,EAAKA,UAAYpuK,EACjC,EAAK8uC,MAAQ,EAAK6mI,aAAe,EAAKvH,SAASt/H,OAAS9uC,EAAS8uC,MACjE,EAAK1f,SAAW3G,SAAS2G,IAAa,EAxC4D,E,0DA2CtG,WAAgB,gBAAUn2C,KAAKgmB,IAAMhmB,KAAKqyG,UAA1B,Y,oBAEhB,WAAiB,OAAOryG,KAAKsyG,W,IAC7B,SAAa/wG,GAASvB,KAAKsyG,UAAY,YAAsB/wG,K,6BAC7D,WAAe,WACXvB,KAAK+hC,cAAc2wE,QAAQ1yG,KAAK+M,aAAa,GAAM7I,UAAU,SAAAyuG,GACpDA,GAMDpuG,QAAQC,UAAU6Z,KAAK,WACnB,EAAKuM,aACL,EAAK9d,mBAAmBkK,mBAIpChX,KAAKmoW,mBAAmBnoW,KAAKkoW,kB,gCAGjC,c,yBACA,WACIloW,KAAK+hC,cAAc8wE,eAAe7yG,KAAK+M,e,mBAK3C,WAAgB,OAAO/M,KAAKuyG,U,IAC5B,SAAYhxG,GACJA,GAASvB,KAAKgyG,UACdhyG,KAAKuyG,SAAWhxG,EAChBvB,KAAK8M,mBAAmBkK,kB,oBAOhC,WAAiB,OAAOhX,KAAKmgH,W,IAC7B,SAAa5+G,GACT,IAAM2wI,EAAW,YAAsB3wI,GACnC2wI,IAAalyI,KAAKgtB,WAClBhtB,KAAKmgH,UAAY+xB,EACjBlyI,KAAK8M,mBAAmBkK,kB,yBAShC,WAAsB,OAAOhX,KAAKkoW,gB,IAClC,SAAkB3mW,GACd,IAAMm+B,EAAUn+B,GAASvB,KAAKkoW,eAC9BloW,KAAKkoW,eAAiB,YAAsB3mW,GACxCm+B,IAEI1/B,KAAKooW,sBADLpoW,KAAKkoW,eACsB,EAGAloW,KAAKgyG,QAAU,EAAkB,GAEhEhyG,KAAK+nW,oBAAoB7lV,KAAKliB,KAAKkoW,iBAEvCloW,KAAKmoW,mBAAmBnoW,KAAKkoW,kB,+BAEjC,WACI,OAAOloW,KAAK+oB,eAAiB/oB,KAAKgtB,W,gCAGtC,WAMIhtB,KAAK8M,mBAAmB0U,kB,wBAG5B,SAAWjgB,GACPvB,KAAKgyG,UAAYzwG,I,8BAGrB,SAAiByN,GACbhP,KAAKgyS,8BAAgChjS,I,+BAGzC,SAAkBA,GACdhP,KAAK4qB,WAAa5b,I,8BAGtB,SAAiB+d,GACb/sB,KAAKgtB,SAAWD,I,6BAEpB,WACI,OAAI/sB,KAAKgyG,QACE,OAEJhyG,KAAKqoW,cAAgB,QAAU,U,mCAE1C,SAAsBxsR,GAClB,IAAIshH,EAAWn9L,KAAKioW,mBAChB58V,EAAUrL,KAAK+M,YAAYnK,cAC/B,GAAIu6L,IAAathH,IAGb77E,KAAKgoW,uBAAuB7jW,OAAS,GACrCkH,EAAQ1I,UAAU6I,OAAOxL,KAAKgoW,wBAElChoW,KAAKgoW,uBAAyBhoW,KAAKsoW,0CAA0CnrK,EAAUthH,GACvF77E,KAAKioW,mBAAqBpsR,EACtB77E,KAAKgoW,uBAAuB7jW,OAAS,GAAG,CACxCkH,EAAQ1I,UAAUE,IAAI7C,KAAKgoW,wBAE3B,IAAMxd,EAAiBxqV,KAAKgoW,uBAC5BhoW,KAAKsD,QAAQ+nB,kBAAkB,WAC3BuZ,WAAW,WACPv5B,EAAQ1I,UAAU6I,OAAOg/U,IAC1B,U,8BAIf,WACI,IAAMliU,EAAQ,IAAIs/U,EAClBt/U,EAAM/B,OAASvmB,KACfsoB,EAAM0pF,QAAUhyG,KAAKgyG,QACrBhyG,KAAKgyS,8BAA8BhyS,KAAKgyG,SACxChyG,KAAK+P,OAAOmS,KAAKoG,GAGbtoB,KAAK4yG,gBACL5yG,KAAK4yG,cAAchwG,cAAcovG,QAAUhyG,KAAKgyG,W,oBAIxD,WACIhyG,KAAKgyG,SAAWhyG,KAAKgyG,U,2BASzB,SAAc1pF,GAAK,IACX3d,EADW,OAET88V,EAAuC,QAAxB98V,EAAK3K,KAAKm1L,gBAA6B,IAAPxqL,OAAgB,EAASA,EAAG88V,YAQjFn/U,EAAMsH,kBAED5vB,KAAKgtB,UAA4B,SAAhBy6U,EAeZznW,KAAKgtB,UAA4B,SAAhBy6U,IAGvBznW,KAAK4yG,cAAchwG,cAAcovG,QAAUhyG,KAAKgyG,QAChDhyG,KAAK4yG,cAAchwG,cAAcylW,cAAgBroW,KAAKqoW,gBAjBlDroW,KAAKqoW,eAAiC,UAAhBZ,GACtBljW,QAAQC,UAAU6Z,KAAK,WACnB,EAAK6pV,gBAAiB,EACtB,EAAKH,oBAAoB7lV,KAAK,EAAKgmV,kBAG3CloW,KAAKyjK,SACLzjK,KAAKooW,sBAAsBpoW,KAAKuyG,SAAW,EAAkB,GAI7DvyG,KAAK8/B,sB,mBAUb,SAAMgzE,EAAQ9qF,GACN8qF,EACA9yG,KAAK+hC,cAAcgB,SAAS/iC,KAAK4yG,cAAeE,EAAQ9qF,GAGxDhoB,KAAK4yG,cAAchwG,cAAcksB,MAAM9G,K,iCAG/C,SAAoBM,GAIhBA,EAAMsH,oB,uDAEV,SAA0CutK,EAAUthH,GAEhD,GAA4B,mBAAxB77E,KAAKmyG,eACL,MAAO,GAEX,IAAIo2P,EAAa,GACjB,OAAQprK,GACJ,KAAK,EAGD,GAAiB,IAAbthH,EACA0sR,EAAa,wBAEZ,IAAgB,GAAZ1sR,EAIL,MAAO,GAHP0sR,EAAa,0BAKjB,MACJ,KAAK,EACDA,EAA0B,IAAb1sR,EACT,oBAAsB,0BAC1B,MACJ,KAAK,EACD0sR,EAA0B,IAAb1sR,EACT,oBAAsB,wBAC1B,MACJ,KAAK,EACD0sR,EAA0B,IAAb1sR,EACT,wBAA0B,0BAGtC,kCAA4B0sR,K,gCAUhC,SAAmBhnW,GACf,IAAMinW,EAAiBxoW,KAAK4yG,cACxB41P,IACAA,EAAe5lW,cAAcylW,cAAgB9mW,O,CA9R/BumW,G,OAkS1BH,EAAYpnW,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKmnW,GAAa,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAsB,KAAyB,KAAgB,KAAyB,YAAa,KAAyB,IAAuB,GAAI,KAAyBJ,EAA8B,KAC7ZI,EAAYxhW,UAAO,KAAyB,CAAEzF,KAAMinW,EAAahnW,UAAW,CAAC,CAAC,iBAAkB2X,UAAW,SAA2B3W,EAAIC,GAIlI,IAAIE,EAJ8I,EAALH,IAC7I,KAAmBlC,EAAK,GACxB,KAAmB,IAAW,IACvB,EAALkC,IAEF,KAAsBG,EAAK,UAA0BF,EAAIgxG,cAAgB9wG,EAAGE,OAC5E,KAAsBF,EAAK,UAA0BF,EAAI0/L,OAASx/L,EAAGE,SACpEe,UAAW,CAAC,EAAG,gBAAiBwV,SAAU,GAAIC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,IAC9G,KAAsB,KAAMC,EAAIokB,IAChC,KAAmB,WAAY,MAC/B,KAAmB,6BAA8BpkB,EAAIymW,cAArD,CAAoE,uBAAwBzmW,EAAIowG,QAAhG,CAAyG,wBAAyBpwG,EAAIorB,SAAtI,CAAgJ,4BAAkD,UAArBprB,EAAI4wG,cAAjL,CAA4M,0BAAkD,mBAAvB5wG,EAAIuwG,kBAC1OhwG,OAAQ,CAAE4mB,cAAe,gBAAiB8sC,MAAO,QAAS1f,SAAU,WAAYhwB,UAAW,CAAC,aAAc,aAAcqC,eAAgB,CAAC,kBAAmB,kBAAmBxC,GAAI,KAAMwsF,cAAe,gBAAiBrxG,KAAM,OAAQ8xG,SAAU,WAAYjB,QAAS,UAAWhlF,SAAU,WAAYq7U,cAAe,gBAAiBn1D,gBAAiB,CAAC,mBAAoB,mBAAoB3xS,MAAO,SAAW4gB,QAAS,CAAEpS,OAAQ,SAAUg4V,oBAAqB,uBAAyBrvV,SAAU,CAAC,eAAgBpW,SAAU,CAAC,KAA0B,CAAColW,IAAuC,MAAoC7uV,mBAAoBy4F,EAAKlrG,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,uBAAwB,CAAC,QAAS,IAAK,CAAC,EAAG,gCAAiC,CAAC,OAAQ,WAAY,EAAG,qBAAsB,sBAAuB,EAAG,KAAM,WAAY,UAAW,WAAY,WAAY,SAAU,SAAU,CAAC,QAAS,IAAK,CAAC,YAAa,GAAI,EAAG,sBAAuB,sBAAuB,EAAG,mBAAoB,oBAAqB,kBAAmB,oBAAqB,sBAAuB,CAAC,EAAG,qBAAsB,kCAAmC,CAAC,EAAG,sBAAuB,CAAC,EAAG,2BAA4B,CAAC,UAAW,MAAO,YAAa,QAAS,UAAW,YAAa,EAAG,MAAO,QAAS,WAAY,EAAG,0BAA2B,CAAC,OAAQ,OAAQ,SAAU,QAAS,IAAK,4BAA6B,EAAG,+BAAgC,CAAC,EAAG,0BAA2B,CAAC,EAAG,qBAAsB,EAAG,qBAAsB,CAAC,gBAAiB,IAAK,CAAC,EAAG,UAAW,SAAUhG,SAAU,SAA8BqB,EAAIC,GA4B/kD,GA5B+lD,EAALD,IACxlD,OACA,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAsB,EAAG,OAAQ,GACjC,KAAsB,EAAG,QAAS,EAAG,GACrC,KAAkB,SAAU,SAAsDmwB,GAAU,OAAOlwB,EAAI6mW,oBAAoB32U,IAA3H,CAAuI,QAAS,SAAqDA,GAAU,OAAOlwB,EAAIuxG,cAAcrhF,KACxO,OACA,KAAsB,EAAG,OAAQ,GACjC,KAAiB,EAAG,OAAQ,GAC5B,OACA,KAAiB,EAAG,OAAQ,GAC5B,KAAsB,EAAG,OAAQ,GACjC,OACA,KAAsB,EAAG,MAAO,GAChC,KAAiB,GAAI,OAAQ,IAC7B,OACA,OACA,KAAiB,GAAI,OAAQ,IAC7B,OACA,OACA,KAAsB,GAAI,OAAQ,GAAI,IACtC,KAAkB,oBAAqB,WAAqE,OAAOlwB,EAAIwxG,uBACvH,KAAsB,GAAI,OAAQ,IAClC,KAAc,GAAI,QAClB,OACA,KAAoB,IACpB,OACA,QACO,EAALzxG,EAAQ,CACV,IAAM0xG,EAAM,KAAmB,GACzBy+N,EAAM,KAAmB,IAC/B,KAAmB,MAAOlwU,EAAI2xG,SAC9B,KAAiB,GACjB,KAAmB,+CAAgDu+N,EAAIt+N,cAAgBs+N,EAAIt+N,YAAY12F,QACvG,KAAiB,GACjB,KAAkB,KAAMlb,EAAI2xG,QAA5B,CAAqC,WAAY3xG,EAAIqxG,SAArD,CAA+D,UAAWrxG,EAAIowG,QAA9E,CAAuF,WAAYpwG,EAAIorB,SAAvG,CAAiH,WAAYprB,EAAIu0C,UACjI,KAAmB,QAASv0C,EAAIL,MAAhC,CAAuC,OAAQK,EAAIT,KAAnD,CAAyD,aAAcS,EAAIukB,WAAa,KAAxF,CAA8F,kBAAmBvkB,EAAI4mB,eAArH,CAAqI,eAAgB5mB,EAAI8mW,kBAAzJ,CAA4K,mBAAoB9mW,EAAIsxS,iBACpM,KAAiB,GACjB,KAAkB,mBAAoB7/L,EAAtC,CAA2C,oBAAqBzxG,EAAI68Q,oBAApE,CAAyF,kBAAmB,GAA5G,CAAgH,qBAAqB,EAArI,CAA2I,qBAAsB,KAAuB,GAAI/+Q,MAC3L6G,WAAY,CAAC,IAAkB,KAA2BuS,OAAQ,CAAC,64NAA84NtS,cAAe,EAAGwiB,gBAAiB,I,sBA0Iv/N2/U,E,sDAENA,EAAoCpoW,UAAO,SAAqDC,GAAK,OAAO,IAAKA,GAAKmoW,IACtHA,EAAoCzvV,UAAO,KAAwB,CAAExY,KAAMioW,IAC3EA,EAAoCxvV,UAAO,KAAwB,I,sBAS7DyvV,E,sDAENA,EAAkBroW,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKooW,IAClFA,EAAkB1vV,UAAO,KAAwB,CAAExY,KAAMkoW,IACzDA,EAAkBzvV,UAAO,KAAwB,CAAEC,QAAS,CAAC,CACjD,IAAiB,IAAiB,IAClCuvV,GACD,IAAiBA,K,0ZC9iB5B,IAAMlpW,EAAM,CAAC,aAAc,IACrBC,EAAM,CAAC,KACP4xG,EAAM,+iNAMNu3P,EAAyB,CAC3B,aACA,kBACA,kBACA,oBACA,qBACA,eACA,WAIEC,E,YACF,WAAY/7V,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrBg8V,EAAsB,YAAW,YAAc,YAAmBD,K,iBAIlEE,E,YACF,WAAYtmW,EAAYq/B,EAAeowE,GAAc,2BACjD,YAAMzvG,KACDq/B,cAAgBA,EACrB,EAAKowE,eAAiBA,EAEtB,EAAK82P,cAAgB,EAAKC,mBAAmB,UAAW,gBAExD,EAAKC,aAAe,EAAKD,mBAAmB,mBAPK,oBAU9BL,GAV8B,IAUjD,2BAA2C,KAAhC7lF,EAAgC,QACnC,EAAKkmF,mBAAmBlmF,IACxB,EAAK1xP,kBAAkB3uB,UAAUE,IAAImgR,IAZI,qCAkBjDtgR,EAAWE,cAAcD,UAAUE,IAAI,mBACnC,EAAKomW,gBACL,EAAKpzS,MA9CkB,UA0BsB,E,oEAuBrD,WACI71D,KAAK+hC,cAAc2wE,QAAQ1yG,KAAK+M,aAAa,K,yBAEjD,WACI/M,KAAK+hC,cAAc8wE,eAAe7yG,KAAK+M,e,mBAG3C,SAAM+lG,EAAQ9qF,GACN8qF,EACA9yG,KAAK+hC,cAAcgB,SAAS/iC,KAAKsxB,kBAAmBwhF,EAAQ9qF,GAG5DhoB,KAAKsxB,kBAAkBxC,MAAM9G,K,6BAGrC,WACI,OAAOhoB,KAAK+M,YAAYnK,gB,+BAE5B,WACI,OAAO5C,KAAK+oB,eAAiB/oB,KAAKgtB,W,gCAGtC,WAAgC,kCAAVk6J,EAAU,yBAAVA,EAAU,gBAC5B,OAAOA,EAAW9+K,KAAK,SAAAghW,GAAS,OAAI,EAAK93U,kBAAkByX,aAAaqgU,S,CA/CxDL,G,OAkDxBC,EAAUzoW,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKwoW,GAAW,KAAyB,KAAoB,KAAyB,KAAsB,KAAyB,IAAuB,KACzNA,EAAU7iW,UAAO,KAAyB,CAAEzF,KAAMsoW,EAAWroW,UAAW,CAAC,CAAC,SAAU,aAAc,IAAK,CAAC,SAAU,oBAAqB,IAAK,CAAC,SAAU,kBAAmB,IAAK,CAAC,SAAU,UAAW,IAAK,CAAC,SAAU,eAAgB,IAAK,CAAC,SAAU,qBAAsB,IAAK,CAAC,SAAU,kBAAmB,KAAM2X,UAAW,SAAyB3W,EAAIC,GAGpV,IAAIE,EAHgW,EAALH,GAC/V,KAAmB,IAAW,GACvB,EAALA,GAEF,KAAsBG,EAAK,UAA0BF,EAAI0/L,OAASx/L,EAAGE,QACpEe,UAAW,CAAC,EAAG,uBAAwBwV,SAAU,EAAGC,aAAc,SAAgC7W,EAAIC,GAAgB,EAALD,IAClH,KAAmB,WAAYC,EAAIorB,UAAY,MAC/C,KAAmB,0BAAkD,mBAAvBprB,EAAIuwG,eAAlD,CAAuF,sBAAuBvwG,EAAIorB,YACjH7qB,OAAQ,CAAE6qB,SAAU,WAAYjE,cAAe,gBAAiB8sC,MAAO,SAAWn9C,SAAU,CAAC,aAAcpW,SAAU,CAAC,MAAoC2uH,MAAOxxH,EAAKoZ,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,sBAAuB,CAAC,YAAa,GAAI,EAAG,oBAAqB,EAAG,oBAAqB,oBAAqB,oBAAqB,CAAC,EAAG,6BAA8BhG,SAAU,SAA4BqB,EAAIC,GAAgB,EAALD,IAC1b,OACA,KAAsB,EAAG,OAAQ,GACjC,KAAoB,GACpB,OACA,KAAiB,EAAG,OAAQ,GAC5B,KAAiB,EAAG,OAAQ,IACrB,EAALA,IACF,KAAiB,GACjB,KAAmB,0BAA2BC,EAAIqnW,eAAiBrnW,EAAIunW,cACvE,KAAkB,oBAAqBvnW,EAAI68Q,oBAA3C,CAAgE,oBAAqB78Q,EAAIunW,aAAzF,CAAuG,mBAAoBvnW,EAAI0vB,qBAC9H/qB,WAAY,CAAC,KAAmBuS,OAAQ,CAACw4F,GAAM9qG,cAAe,EAAGwiB,gBAAiB,I,sBA2CrFqgV,E,YACF,WAAYj2D,EAAc1wS,EAAYwtK,GAAa,qCACzCxtK,EAAY0wS,EAAcljI,I,wEAEpC,SAAoB5nJ,GAEZtoB,KAAKgtB,WACL1E,EAAM4E,iBACN5E,EAAMimR,gC,CARMy6D,G,OAYxBK,EAAU9oW,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAK6oW,GAAW,KAAyB,KAAsB,KAAyB,KAAoB,KAAyB,IAAuB,KACzNA,EAAUljW,UAAO,KAAyB,CAAEzF,KAAM2oW,EAAW1oW,UAAW,CAAC,CAAC,IAAK,aAAc,IAAK,CAAC,IAAK,oBAAqB,IAAK,CAAC,IAAK,kBAAmB,IAAK,CAAC,IAAK,UAAW,IAAK,CAAC,IAAK,eAAgB,IAAK,CAAC,IAAK,qBAAsB,IAAK,CAAC,IAAK,kBAAmB,KAAMoC,UAAW,CAAC,EAAG,uBAAwBwV,SAAU,EAAGC,aAAc,SAAgC7W,EAAIC,GAAgB,EAALD,GAC1X,KAAkB,QAAS,SAA4CmwB,GAAU,OAAOlwB,EAAI0nW,oBAAoBx3U,KACzG,EAALnwB,IACF,KAAmB,WAAYC,EAAIorB,UAAY,EAAIprB,EAAIu0C,UAAY,EAAnE,CAAsE,WAAYv0C,EAAIorB,UAAY,KAAlG,CAAwG,gBAAiBprB,EAAIorB,SAASiF,YACtI,KAAmB,0BAAkD,mBAAvBrwB,EAAIuwG,eAAlD,CAAuF,sBAAuBvwG,EAAIorB,YACjH7qB,OAAQ,CAAE6qB,SAAU,WAAYjE,cAAe,gBAAiB8sC,MAAO,QAAS1f,SAAU,YAAcz9B,SAAU,CAAC,YAAa,aAAcpW,SAAU,CAAC,MAAoC2uH,MAAOxxH,EAAKoZ,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,sBAAuB,CAAC,YAAa,GAAI,EAAG,oBAAqB,EAAG,oBAAqB,oBAAqB,oBAAqB,CAAC,EAAG,6BAA8BhG,SAAU,SAA4BqB,EAAIC,GAAgB,EAALD,IAC7d,OACA,KAAsB,EAAG,OAAQ,GACjC,KAAoB,GACpB,OACA,KAAiB,EAAG,OAAQ,GAC5B,KAAiB,EAAG,OAAQ,IACrB,EAALA,IACF,KAAiB,GACjB,KAAmB,0BAA2BC,EAAIqnW,eAAiBrnW,EAAIunW,cACvE,KAAkB,oBAAqBvnW,EAAI68Q,oBAA3C,CAAgE,oBAAqB78Q,EAAIunW,aAAzF,CAAuG,mBAAoBvnW,EAAI0vB,qBAC9H/qB,WAAY,CAAC,KAAmBuS,OAAQ,CAACw4F,GAAM9qG,cAAe,EAAGwiB,gBAAiB,I,sBAiDrFugV,E,sDAENA,EAAgBhpW,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK+oW,IAC9EA,EAAgBrwV,UAAO,KAAwB,CAAExY,KAAM6oW,IACvDA,EAAgBpwV,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAC/C,IACA,KACD,O,4BC1OF,SAAUiJ,GAAU,aAIzB,IAAI0iK,EAAW,CACX5zI,EAAG,gBACHT,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHm0I,GAAI,gBACJH,GAAI,gBACJI,GAAI,gBACJyjG,GAAI,gBACJ5jG,GAAI,gBACJI,GAAI,gBACJP,GAAI,gBACJC,GAAI,gBACJO,GAAI,gBACJJ,IAAK,iBAGA/iK,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wbAAqFL,MACzF,KAEJM,YAAa,sOAAkDN,MAAM,KACrEgB,SAAU,+SAA0DhB,MAChE,KAEJiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,qEACTC,QAAS,qEACTC,SAAU,2CACVC,QAAS,+DACTC,SAAU,uHACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,0CACRC,KAAM,oCACNC,EAAG,kFACHC,GAAI,0CACJ/B,EAAG,oDACHgC,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJhN,EAAG,wCACHiN,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAERC,uBAAwB,sCACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUq/J,EAASr/J,IAAWq/J,EAF7Br/J,EAAS,KAEmCq/J,EAD5Cr/J,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhFyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,gXAAyEL,MAC7E,KAEJM,YACI,gXAAyEN,MACrE,KAERgB,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNC,EAAG,2BACHC,GAAI,oCACJ/B,EAAG,iCACHgC,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJhN,EAAG,qBACHiN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB/gB,CAAQ,EAAQ,U,qBCN1D,oBAAWs6E,EAAMt6E,GACf,aAG4D,iBAAnBs4B,EAAOC,QAC9CD,EAAOC,QAAUv4B,KAGjBi4B,EAAO,QAAD,+DARV,CAaG/8B,EAAM,WACP,aAEA,IAAIm8O,EAAQ3/N,OAAOkW,UAAUT,SAE7B,SAASyb,EAAgB3vB,EAAKqwB,GAC5B,OAAW,MAAPrwB,GAIGvB,OAAOkW,UAAUgb,eAAexY,KAAKnX,EAAKqwB,GAGnD,SAAShO,EAAS7+B,GAChB,IAAKA,EACH,OAAO,EAET,GAAIyU,EAAQzU,IAA2B,IAAjBA,EAAM4C,OAC1B,OAAO,EACF,GAAqB,iBAAV5C,EAAoB,CACpC,IAAK,IAAIsG,KAAKtG,EACZ,GAAImsC,EAAensC,EAAOsG,GACxB,OAAO,EAGX,OAAO,EAET,OAAO,EAGT,SAASoqB,EAAUvxB,GACjB,OAAOy7O,EAAMjnN,KAAKx0B,GAOpB,IAAIsV,EAAUzL,MAAMyL,SAAW,SAAU+H,GAEvC,MAA2B,mBAApBo+N,EAAMjnN,KAAKnX,IAOpB,SAASyrV,EAAQ7sV,GACf,IAAI8sV,EAASj6T,SAAS7yB,GACtB,OAAI8sV,EAAOx3U,aAAetV,EACjB8sV,EAEF9sV,EAGT,SAAS7X,EAASkjB,GAGhB,IAeI0hV,EAiBAC,EAhCAC,EAAa,SAAU7rV,GACzB,OAAOvB,OAAOC,KAAKmtV,GAAYn0V,OAAO,SAAUmrV,EAAOxyT,GACrD,MAAa,WAATA,GAK4B,mBAArBw7T,EAAWx7T,KACpBwyT,EAAMxyT,GAAQw7T,EAAWx7T,GAAM7D,KAAKq/T,EAAY7rV,IALzC6iV,GASR,KAcL,SAASiJ,EAAoB9rV,EAAKqwB,GAChC,GAAIs7T,EAAmB3rV,EAAKqwB,GAC1B,OAAOrwB,EAAIqwB,GAuBf,SAAS/5B,EAAK0J,EAAKozH,EAAM5vI,EAAOuoW,GAI9B,GAHoB,iBAAT34N,IACTA,EAAO,CAACA,KAELA,GAAwB,IAAhBA,EAAKhtI,OAChB,OAAO4Z,EAET,GAAoB,iBAATozH,EACT,OAAO98H,EAAI0J,EAAKozH,EAAK5uH,MAAM,KAAK9Y,IAAI+/V,GAASjoW,EAAOuoW,GAEtD,IAAIC,EAAc54N,EAAK,GACnB/rI,EAAeukW,EAAyB5rV,EAAKgsV,GACjD,OAAoB,IAAhB54N,EAAKhtI,aACc,IAAjBiB,GAA4B0kW,IAC9B/rV,EAAIgsV,GAAexoW,GAEd6D,SAGY,IAAjBA,IAGA2Y,EAAIgsV,GADiB,iBAAZ54N,EAAK,GACK,GAEA,IAIhB98H,EAAI0J,EAAIgsV,GAAc54N,EAAK3nI,MAAM,GAAIjI,EAAOuoW,IAkKrD,OAhOEJ,GAnBF1hV,EAAUA,GAAW,IAkBTgiV,sBACW,WACnB,OAAO,GAGY,SAAUjsV,EAAKqwB,GAClC,MAAwB,iBAATA,GAAqB7jC,MAAMyL,QAAQ+H,IAAS2vB,EAAe3vB,EAAKqwB,IAYjFu7T,EADE3hV,EAAQgiV,sBACiB,SAAUjsV,EAAKgsV,GACb,iBAAhBA,GAAmD,iBAAhBA,IAC5CA,EAAc16T,OAAO06T,IAEvB,IAAI3kW,EAAeykW,EAAmB9rV,EAAKgsV,GAC3C,GAAoB,cAAhBA,GAA+C,cAAhBA,GAChB,gBAAhBA,GAAyD,mBAAjB3kW,EACzC,MAAM,IAAIivB,MAAM,iEAElB,OAAOjvB,GAGkB,SAAU2Y,EAAKgsV,GACxC,OAAOF,EAAmB9rV,EAAKgsV,IAmCnCH,EAAWx1V,IAAM,SAAU2J,EAAKozH,GAO9B,GANoB,iBAATA,EACTA,EAAO,CAACA,GACiB,iBAATA,IAChBA,EAAOA,EAAK5uH,MAAM,OAGf4uH,GAAwB,IAAhBA,EAAKhtI,OAChB,QAAS4Z,EAGX,IAAK,IAAIlW,EAAI,EAAGA,EAAIspI,EAAKhtI,OAAQ0D,IAAK,CACpC,IAAI0M,EAAIi1V,EAAOr4N,EAAKtpI,IAEpB,KAAkB,iBAAN0M,GAAkByB,EAAQ+H,IAAQxJ,EAAIwJ,EAAI5Z,SACnD6jB,EAAQgiV,sBAAyBz1V,KAAKiI,OAAOuB,GAAQ2vB,EAAe3vB,EAAKxJ,KAG1E,OAAO,EAFPwJ,EAAMA,EAAIxJ,GAMd,OAAO,GAGTq1V,EAAWK,aAAe,SAAUlsV,EAAKozH,EAAM5vI,GAC7C,OAAO8S,EAAI0J,EAAKozH,EAAM5vI,GAAO,IAG/BqoW,EAAWv1V,IAAM,SAAU0J,EAAKozH,EAAM5vI,EAAOuoW,GAC3C,OAAOz1V,EAAI0J,EAAKozH,EAAM5vI,EAAOuoW,IAG/BF,EAAW1qU,OAAS,SAAUnhB,EAAKozH,EAAM5vI,EAAO+2I,GAC9C,IAAI3oG,EAAMi6T,EAAW13V,IAAI6L,EAAKozH,GAC9BmH,IAAOA,EACFtiI,EAAQ25B,IAEXi6T,EAAWv1V,IAAI0J,EAAKozH,EADpBxhG,EAAM,IAGRA,EAAIpH,OAAO+vG,EAAI,EAAG/2I,IAGpBqoW,EAAWp2L,MAAQ,SAAUz1J,EAAKozH,GAQhC,IAAI5vI,EAAOsG,EAPX,IAAIu4B,EAAQ+wG,IAGD,MAAPpzH,IAKExc,EAAQqoW,EAAW13V,IAAI6L,EAAKozH,IAAlC,CAIA,GAAqB,iBAAV5vI,EACT,OAAOqoW,EAAWv1V,IAAI0J,EAAKozH,EAAM,IAC5B,GA3JX,SAAoBpzH,GAClB,MAAsB,kBAARA,GAAuC,qBAAlBkU,EAASlU,GA0J/BsgO,CAAU98O,GACnB,OAAOqoW,EAAWv1V,IAAI0J,EAAKozH,GAAM,GAC5B,GAAqB,iBAAV5vI,EAChB,OAAOqoW,EAAWv1V,IAAI0J,EAAKozH,EAAM,GAC5B,GAAIn7H,EAAQzU,GACjBA,EAAM4C,OAAS,MACV,KA1KX,SAAmB4Z,GACjB,MAAsB,iBAARA,GAAsC,oBAAlBkU,EAASlU,GAyK9BstL,CAAS9pM,GAOlB,OAAOqoW,EAAWv1V,IAAI0J,EAAKozH,EAAM,MANjC,IAAKtpI,KAAKtG,EACJmoW,EAAmBnoW,EAAOsG,WACrBtG,EAAMsG,MAQrB+hW,EAAWhmW,KAAO,SAAUma,EAAKozH,GAC/B,IAAIxhG,EAAMi6T,EAAW13V,IAAI6L,EAAKozH,GACzBn7H,EAAQ25B,IAEXi6T,EAAWv1V,IAAI0J,EAAKozH,EADpBxhG,EAAM,IAIRA,EAAI/rC,KAAK+zC,MAAMhI,EAAKplC,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5b,UAAW,KAG5DswV,EAAWM,SAAW,SAAUnsV,EAAK4tH,EAAOjnB,GAG1C,IAFA,IAAInjH,EAEKsG,EAAI,EAAGyvC,EAAMq0F,EAAMxnI,OAAQ0D,EAAIyvC,EAAKzvC,IAC3C,QAAgD,KAA3CtG,EAAQqoW,EAAW13V,IAAI6L,EAAK4tH,EAAM9jI,KACrC,OAAOtG,EAIX,OAAOmjH,GAGTklP,EAAW13V,IAAM,SAAU6L,EAAKozH,EAAMzsB,GAIpC,GAHoB,iBAATysB,IACTA,EAAO,CAACA,KAELA,GAAwB,IAAhBA,EAAKhtI,OAChB,OAAO4Z,EAET,GAAW,MAAPA,EACF,OAAO2mG,EAET,GAAoB,iBAATysB,EACT,OAAOy4N,EAAW13V,IAAI6L,EAAKozH,EAAK5uH,MAAM,KAAMmiG,GAG9C,IAAIqlP,EAAcP,EAAOr4N,EAAK,IAC1Bg5N,EAAUR,EAAyB5rV,EAAKgsV,GAC5C,YAAgB,IAAZI,EACKzlP,EAGW,IAAhBysB,EAAKhtI,OACAgmW,EAGFP,EAAW13V,IAAI6L,EAAIgsV,GAAc54N,EAAK3nI,MAAM,GAAIk7G,IAGzDklP,EAAWQ,IAAM,SAAcrsV,EAAKozH,GAKlC,GAJoB,iBAATA,IACTA,EAAO,CAACA,IAGC,MAAPpzH,EACF,OAAOA,EAGT,GAAIqiB,EAAQ+wG,GACV,OAAOpzH,EAET,GAAoB,iBAATozH,EACT,OAAOy4N,EAAWQ,IAAIrsV,EAAKozH,EAAK5uH,MAAM,MAGxC,IAAIwnV,EAAcP,EAAOr4N,EAAK,IAE9B,OADAw4N,EAAyB5rV,EAAKgsV,GACzBL,EAAmB3rV,EAAKgsV,GAIT,IAAhB54N,EAAKhtI,OAOAylW,EAAWQ,IAAIrsV,EAAIgsV,GAAc54N,EAAK3nI,MAAM,KAN/CwM,EAAQ+H,GACVA,EAAIwqB,OAAOwhU,EAAa,UAEjBhsV,EAAIgsV,GAMRhsV,GAbEA,GAgBJ6rV,EAGT,IAAIS,EAAMvlW,IAGV,OAFAulW,EAAI/kW,OAASR,EACbulW,EAAIC,mBAAqBxlW,EAAQ,CAACklW,uBAAuB,IAClDK,K,sBCnTA,SAAUhoV,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gGAAgGL,MACpG,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,0EAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,WACL,MACI,WACCnkB,KAAKg/C,QAAU,EAAI,OAA0B,IAAjBh/C,KAAKg/C,QAAgB,IAAM,OACxD,OAGR56B,QAAS,WACL,MACI,aACCpkB,KAAKg/C,QAAU,EAAI,OAA0B,IAAjBh/C,KAAKg/C,QAAgB,IAAM,OACxD,OAGR36B,SAAU,WACN,MACI,WACCrkB,KAAKg/C,QAAU,EAAI,OAA0B,IAAjBh/C,KAAKg/C,QAAgB,IAAM,OACxD,OAGR16B,QAAS,WACL,MACI,WACCtkB,KAAKg/C,QAAU,EAAI,OAA0B,IAAjBh/C,KAAKg/C,QAAgB,IAAM,OACxD,OAGRz6B,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MACI,uBACC9xC,KAAKg/C,QAAU,EACV,OACiB,IAAjBh/C,KAAKg/C,QACH,IACA,OACR,MAER,QACI,MACI,uBACCh/C,KAAKg/C,QAAU,EACV,OACiB,IAAjBh/C,KAAKg/C,QACH,IACA,OACR,QAIhBx6B,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNC,EAAG,iBACHC,GAAI,aACJ/B,EAAG,YACHgC,GAAI,YACJC,EAAG,SACHC,GAAI,SACJhN,EAAG,YACHiN,GAAI,YACJC,EAAG,gBACHC,GAAI,eACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB/gB,CAAQ,EAAQ,U,8QCYpDrF,EAAM,CAAC,mBACP8qW,E,YACF,WAAYx9V,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrBy9V,EAA2B,YAAWD,EAAoB,WAM1DE,EAA4B,IAAI,IAAe,4BAA6B,CAAE7jV,WAAY,OAAQ9hB,QAExG,WACI,IAAMoI,EAAY,aAAO,KACnB01Q,EAAY11Q,EAAYA,EAAUotB,SAAW,KACnD,MAAO,CAGHuoP,YAAa,kBAAMD,EAAaA,EAAU5jG,SAAW4jG,EAAU/0J,OAAU,QAI7E68O,EAAgB,E,iBAIdC,E,YACF,WAAY59V,EAAazJ,EAAS6uG,EAKlC73E,GAAQ,M,MAAA,oB,EACJ,K,EAAA,E,EAAA,CAAMvtB,G,kBAAN,E,iGACKA,YAAcA,EACnB,EAAKzJ,QAAUA,EACf,EAAK6uG,eAAiBA,EAEtB,EAAKy4P,kBAAmB,EACxB,EAAK1qP,OAAS,EACd,EAAK2qP,aAAe,EAMpB,EAAKC,aAAe,IAAI,IAExB,EAAKC,0BAA4B,IAAa7jV,MAQ9C,EAAK0L,KAAO,cAEZ,EAAK83U,cAAL,2BAAyCA,KAOzC,IAAMv5N,EAAO72G,EAAWA,EAASuoP,cAActgQ,MAAM,KAAK,GAAK,GAjC3D,OAkCJ,EAAKyoV,oBAAL,eAAmC75N,EAAnC,YAA2C,EAAKu5N,cAAhD,MACA,EAAKE,iBAAsC,mBAAnBz4P,EAnCpB,E,wDAsCR,WAAc,OAAOnyG,KAAKkgH,Q,IAC1B,SAAUjgH,GACND,KAAKkgH,OAAS6vC,EAAM,YAAqB9vJ,IAAM,K,uBAGnD,WAAoB,OAAOD,KAAK6qW,c,IAChC,SAAgB5qW,GAAKD,KAAK6qW,aAAe96M,EAAM9vJ,GAAK,K,+BAEpD,WAGI,MAAO,CAAE0hC,UAAW,WAAF,OADJ3hC,KAAKuB,MAAQ,IACT,c,8BAMtB,WACI,MAAkB,WAAdvB,KAAK4yB,KAGE,CAAE+O,UAAW,WAAF,OADJ3hC,KAAKirW,YAAc,IACf,YAEf,O,6BAEX,WAAe,WAGXjrW,KAAKsD,QAAQ+nB,kBAAmB,WAC5B,IAAMhgB,EAAU,EAAK6/V,iBAAiBtoW,cACtC,EAAKmoW,0BACD,YAAU1/V,EAAS,iBACdrH,KAAK,YAAQ,SAACiwB,GAAD,OAAOA,EAAEzH,SAAWnhB,KACjCnH,UAAU,WACO,gBAAd,EAAK0uB,MAAwC,WAAd,EAAKA,MACpC,EAAKtvB,QAAQgpC,IAAI,kBAAM,EAAKw+T,aAAajnW,KAAK,CAAEtC,MAAO,EAAKA,gB,yBAKhF,WACIvB,KAAK+qW,0BAA0Bn1V,kB,CArFV40V,G,OAwF7BG,EAAepqW,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKmqW,GAAgB,KAAyB,KAAoB,KAAyB,KAAgB,KAAyB,IAAuB,GAAI,KAAyBF,EAA2B,KAC1RE,EAAexkW,UAAO,KAAyB,CAAEzF,KAAMiqW,EAAgBhqW,UAAW,CAAC,CAAC,qBAAsB2X,UAAW,SAA8B3W,EAAIC,GAG/I,IAAIE,EAH2J,EAALH,GAC1J,KAAmBlC,EAAK,GACjB,EAALkC,GAEF,KAAsBG,EAAK,UAA0BF,EAAIspW,iBAAmBppW,EAAGE,QAC9Ee,UAAW,CAAC,OAAQ,cAAe,gBAAiB,IAAK,gBAAiB,MAAO,WAAY,KAAM,EAAG,oBAAqBwV,SAAU,EAAGC,aAAc,SAAqC7W,EAAIC,GAAgB,EAALD,IAC3M,KAAmB,gBAA8B,kBAAbC,EAAIgxB,MAAyC,UAAbhxB,EAAIgxB,KAAmB,KAAOhxB,EAAIL,MAAtG,CAA6G,OAAQK,EAAIgxB,MACzH,KAAmB,0BAA2BhxB,EAAIgpW,oBACjDzoW,OAAQ,CAAE0zD,MAAO,QAASjjC,KAAM,OAAQrxB,MAAO,QAAS0pW,YAAa,eAAiB9oV,QAAS,CAAE2oV,aAAc,gBAAkBpyV,SAAU,CAAC,kBAAmBpW,SAAU,CAAC,MAAoC8D,MAAO,GAAIC,KAAM,EAAGC,OAAQ,CAAC,CAAC,cAAe,QAAS,CAAC,QAAS,OAAQ,SAAU,IAAK,YAAa,QAAS,EAAG,8BAA+B,4BAA6B,CAAC,IAAK,IAAK,IAAK,IAAK,QAAS,IAAK,SAAU,IAAK,eAAgB,iBAAkB,EAAG,MAAO,CAAC,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,CAAC,QAAS,OAAQ,SAAU,QAAS,CAAC,EAAG,0BAA2B,2BAA4B,EAAG,WAAY,CAAC,EAAG,2BAA4B,wBAAyB,2BAA4B,EAAG,WAAY,CAAC,kBAAmB,IAAK,CAAC,EAAG,6BAA8B,wBAAyB,6BAA8BhG,SAAU,SAAiCqB,EAAIC,GAAgB,EAALD,IAC13B,KAAsB,EAAG,MAAO,GAChC,OACA,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,QACzB,KAAsB,EAAG,UAAW,GACpC,KAAiB,EAAG,SAAU,GAC9B,OACA,OACA,KAAiB,EAAG,OAAQ,GAC5B,OACA,OACA,KAAiB,EAAG,MAAO,GAC3B,KAAiB,EAAG,MAAO,EAAG,GAC9B,KAAiB,EAAG,MAAO,GAC3B,QACO,EAALA,IACF,KAAiB,GACjB,KAAkB,KAAMC,EAAI8oW,eAC5B,KAAiB,GACjB,KAAmB,OAAQ9oW,EAAIopW,qBAC/B,KAAiB,GACjB,KAAkB,UAAWppW,EAAIupW,oBACjC,KAAiB,GACjB,KAAkB,UAAWvpW,EAAIwpW,uBAChC7kW,WAAY,CAAC,KAAiBuS,OAAQ,CAAC,k7JAAq7JtS,cAAe,EAAGwiB,gBAAiB,I,KA4DxgK,SAAS+mI,EAAM9vJ,GAAqB,IAAlBye,EAAkB,uDAAZ,EAAGokC,EAAS,uDAAH,IAC7B,OAAOvkC,KAAKukC,IAAIpkC,EAAKH,KAAKG,IAAIokC,EAAK7iD,I,qBAUjCorW,E,sDAENA,EAAqB9qW,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAK6qW,IACxFA,EAAqBnyV,UAAO,KAAwB,CAAExY,KAAM2qW,IAC5DA,EAAqBlyV,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAc,KAAkB,O,4BC5OxF,SAAUiJ,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,gGAAgGL,MACpG,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,0EAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUE,GACd,OAAQ,YAAY5B,KAAK4B,GAAK,MAAQ,MAAQ,IAAMA,GAExDD,KAAM,QACNC,EAAG,iBACHC,GAAI,aACJ/B,EAAG,YACHgC,GAAI,YACJC,EAAG,SACHC,GAAI,SACJhN,EAAG,YACHiN,GAAI,YACJG,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9DyB/gB,CAAQ,EAAQ,U,kCCNpD,SAAU+4K,EAAUt8K,GACtB,QAASA,GAAoC,mBAApBA,EAAM2C,WAAkD,mBAAf3C,EAAM8c,KAD5E,iC,sJC0BMitV,EAAe,IAAI,IAAe,cAAe,CACnD1kV,WAAY,OACZ9hB,QAGJ,WACI,OAAO,aAAO,Q,iBAcZymW,E,8BACF,WAAYr+V,GAKR,GALiB,oBAEjBlN,KAAKuB,MAAQ,MAEbvB,KAAK+P,OAAS,IAAI,IACd7C,EAAW,CAKX,IAEM3L,GAFU2L,EAAU41B,KAAO51B,EAAU41B,KAAKx3B,IAAM,QACtC4B,EAAUsnC,gBAAkBtnC,EAAUsnC,gBAAgBlpC,IAAM,MAE5EtL,KAAKuB,MAAmB,QAAVA,GAA6B,QAAVA,EAAmBA,EAAQ,Q,0BAGpE,WACIvB,KAAK+P,OAAOjM,e,UAGpBynW,EAAehrW,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK+qW,GAAgB,KAAgBD,EAAc,KAC1HC,EAAe3mW,WAAQ,aAAmB,CAAEE,QAAS,WAAoC,OAAO,IAAIymW,EAAe,aAASD,EAAc,KAAQzmW,MAAO0mW,EAAgB3kV,WAAY,S,sBAuF/K4kV,E,sDAENA,EAAWjrW,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKgrW,IACpEA,EAAWtyV,UAAO,KAAwB,CAAExY,KAAM8qW,IAClDA,EAAWryV,UAAO,KAAwB,I,4BCtJjC,SAAUkJ,GAAU,aAIzB,IAAIC,EACI,6DAA6DC,MAAM,KACvEC,EACI,kDAAkDD,MAAM,KAEvDF,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,iGAAiGL,MACrG,KAEJM,YAAa,SAAUC,EAAGC,GACtB,OAAKD,EAEM,QAAQE,KAAKD,GACbP,EAAuBM,EAAEG,SAEzBX,EAAoBQ,EAAEG,SAJtBX,GAOf2U,kBAAkB,EAClB1T,SAAU,wDAAwDhB,MAC9D,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAG,mBACHC,GAAI,cACJ/B,EAAG,eACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,UACHiN,GAAI,WACJG,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/gB,CAAQ,EAAQ,U,sGCDtD2mW,E,oZAw/EAC,E,aAv/EJ,IAAIC,EAAeF,EAAc,8FAC7B,WACI,UAAIzrW,KAAK4rW,cAAgB5rW,KAAK4rW,aAAaznW,OAAS,IAEV,IAA7BnE,KAAK4rW,aAAaznW,QAAgBnE,KAAK4rW,aAAa5pW,QAAUhC,QAJlD,sBAQ7B,WACI,IAAI6rW,EAAS7rW,KAAK8rW,2BAA2B9rW,MAI7C,OAHIA,KAAK+rW,oBACLF,EAAM,SAAe7rW,KAAKgsW,gBAAgBhsW,KAAK4rW,eAE5CC,IAbkB,6BAe7B,SAAgBD,GACZ,OAAOA,EAEFz2V,OAAO,SAAA3P,GAAM,OAAKA,EAAOumW,oBACzBtiW,IAAI,SAACjE,GACN,OAAOA,EAAOymW,eApBO,wCAwB7B,SAA2B3nW,GACvB,IAAIunW,EAAS,GAGb,OAFArvV,OAAOuqB,OAAO8kU,EAAQvnW,UACfunW,EAAOD,aACPC,MA5BkB,G,OAgCjCF,EAAaprW,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKmrW,IACxEA,EAAaxlW,UAAO,KAAyB,CAAEzF,KAAMirW,EAAchrW,UAAW,CAAC,CAAC,mBAAoBe,eAAgB,SAAqCC,EAAIC,EAAKC,GAG1J,IAAIC,EAH2K,EAALH,GAC1K,KAAsBE,EAAU4pW,EAAgB,GACzC,EAAL9pW,GAEF,KAAsBG,EAAK,UAA0BF,EAAIgqW,aAAe9pW,IACvEK,OAAQ,CAAE2F,SAAU,WAAYokW,aAAc,eAAgBC,gBAAiB,kBAAmBC,SAAU,WAAYC,eAAgB,iBAAkBjxE,MAAO,QAASkxE,qBAAsB,uBAAwBC,8BAA+B,gCAAiCC,2BAA4B,6BAA8BC,UAAW,YAAaC,mBAAoB,qBAAsBC,oBAAqB,sBAAuBC,iBAAkB,mBAAoBC,+BAAgC,iCAAkCC,4BAA6B,8BAA+BC,gBAAiB,kBAAmBC,aAAc,eAAgBC,gBAAiB,kBAAmBC,yBAA0B,2BAA4BC,sBAAuB,wBAAyBC,wBAAyB,0BAA2BC,8BAA+B,gCAAiCC,iCAAkC,mCAAoCC,iBAAkB,mBAAoBC,uBAAwB,yBAA0BC,0BAA2B,4BAA6BC,QAAS,UAAWtmF,WAAY,aAAcumF,gBAAiB,kBAAmBC,YAAa,cAAeC,eAAgB,iBAAkBC,kBAAmB,oBAAqB94S,QAAS,UAAW+4S,MAAO,QAASlyV,KAAM,OAAQq7B,MAAO,QAASx2C,KAAM,OAAQstW,aAAc,eAAgBC,cAAe,gBAAiBC,UAAW,YAAaC,aAAc,eAAgBh5V,OAAQ,SAAUi5V,QAAS,UAAWC,aAAc,eAAgBC,WAAY,aAAcC,OAAQ,SAAUC,cAAe,gBAAiBC,SAAU,WAAYC,KAAM,OAAQhlW,MAAO,QAASq+B,SAAU,WAAY7G,SAAU,WAAYytU,cAAe,gBAAiBC,WAAY,aAAcC,mBAAoB,qBAAsBC,YAAa,cAAeC,YAAa,cAAeC,kBAAmB,oBAAqBC,WAAY,aAAcC,sBAAuB,wBAAyBC,sBAAuB,wBAAyBC,eAAgB,iBAAkBC,wBAAyB,0BAA2BC,YAAa,cAAetyT,WAAY,aAAcglE,OAAQ,SAAUutP,gBAAiB,kBAAmBC,sBAAuB,wBAAyBpxQ,QAAS,UAAWqxQ,QAAS,UAAWC,mBAAoB,qBAAsBC,gBAAiB,kBAAmBC,mBAAoB,qBAAsBC,cAAe,gBAAiBC,oBAAqB,sBAAuBC,kBAAmB,oBAAqBC,YAAa,cAAex7K,QAAS,UAAWy7K,mBAAoB,qBAAsBC,qBAAsB,uBAAwBC,mBAAoB,qBAAsBC,kBAAmB,oBAAqBC,yBAA0B,2BAA4BC,yBAA0B,2BAA4BC,cAAe,gBAAiBC,cAAe,gBAAiBxjL,KAAM,OAAQyjL,SAAU,WAAYtrJ,MAAO,QAASurJ,kBAAmB,oBAAqBC,wBAAyB,0BAA2BC,oCAAqC,sCAAuCC,aAAc,eAAgBC,gBAAiB,kBAAmBC,gBAAiB,kBAAmBC,eAAgB,iBAAkBC,aAAc,eAAgBC,YAAa,cAAeC,WAAY,aAAcC,WAAY,aAAcC,kBAAmB,oBAAqBC,eAAgB,iBAAkBC,iBAAkB,mBAAoBC,eAAgB,iBAAkBC,YAAa,cAAeC,YAAa,cAAeloT,SAAU,WAAYmoT,cAAe,gBAAiBC,kBAAmB,oBAAqBC,sBAAuB,wBAAyBC,QAAS,UAAWC,UAAW,YAAaC,WAAY,aAAc9tL,SAAU,WAAY+tL,UAAW,YAAaC,gBAAiB,kBAAmBC,eAAgB,kBAAoB/rW,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAA+BqB,EAAIC,KAAU4E,cAAe,I,kBA0dx/H,IAAI4rW,EAAyB,YACzB,WAAY9uW,GAAO,kCACf,aACKA,QAAUA,EAFA,EADM,+DAKzB,SAAWy/D,EAAQqrF,GACfpuJ,KAAKsD,QAAQ+nB,kBAAkB,WAC3BF,OAAOyZ,WAAW,WACdm+B,KACDqrF,OATc,4CAYzB,SAA+B/iJ,EAAS3K,EAAMggC,EAAU2xU,GAAU,WAC9DryW,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,2CAAqChgB,EAAS3K,EAAMggC,EAAU2xU,UAd7C,CAA2C,6B,OAkBxED,EAA0B7xW,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAK4xW,GAA2B,KAAgB,OAC7IA,EAA0BxtW,WAAQ,KAA0B,CAAEC,MAAOutW,EAA2BttW,QAAS,SAAUtE,GAAK,OAAO4xW,EAA0B7xW,UAAKC,MAI9J4xW,EAA4B,YAAW,CAAE,YAAW,oBAAqB,CAAC,OACvEA,G,gBAEH,IAAIE,EAAgC,gJAChC,SAAoBpzV,GAChBlf,KAAKkf,iBAAmBA,IAFI,yCAIhC,SAA4BE,GACxBpf,KAAKof,yBAA2BA,IALJ,2BAOhC,SAAcmzV,GACV,IAAIhmB,EAAOvsV,KAoBPkxJ,EAAU,IArBe,iIAGzB,SAAKpnE,GACD,oBAAWA,IACX9pF,KAAKy/J,cAAclvC,kBAAkB/uG,kBALhB,6BAOzB,WACI,OAAO+qU,EAAKvrU,gBAAgBuxV,KARP,uBAUzB,SAAUpxW,GACN,OAAwD,MAAjD+vJ,EAAQshN,gCAAgCrxW,KAX1B,wBAazB,SAAWA,EAAMtB,GACb,IAAMghB,EAAe7gB,KAAKwyW,gCAC1B,OAAOthN,EAAQshN,gCAAgCrxW,GAAMw2C,MAAM92B,EAAchhB,KAfpD,uBAiBzB,SAAUsB,EAAM8xB,GACZi+H,EAAQ/vJ,GAAQ8xB,MAlBK,CAEOw/U,IAoBpC,OAAOvhN,IA7BqB,6BA+BhC,SAAgBwhN,GAIZ,IAAI5tW,EAAU9E,KAAKof,yBAAyB2B,wBAAwB2xV,GACpE,OAAO1yW,KAAKkf,iBAAiB8B,gBAAgBlc,OApCjB,CAAkD,wB,OAuCtFwtW,EAAiC/xW,UAAO,SAAkDC,GAAK,OAAOmyW,EAA8CnyW,GAAK8xW,IACzJA,EAAiC1tW,WAAQ,KAA0B,CAAEC,MAAOytW,EAAkCxtW,QAAS,SAAUtE,GAAK,OAAO8xW,EAAiC/xW,UAAKC,M,KAC7KiyW,E,mFACF,SAAK3oR,GACD9pF,KAAK4yW,QAAU9oR,EACf9pF,KAAKy/J,cAAgBz/J,KAAKghB,kBAC1BhhB,KAAK6yW,kBAAoB7yW,KAAKy/J,cAAc3rI,SAC5C9zB,KAAK8yW,4BAA8B9yW,KAAKy/J,cAAc3rI,SACtD9zB,KAAK+yW,MAAQ/yW,KAAKy/J,cAAcnlI,SAAS13B,cACzC5C,KAAK6yW,kBAAkBG,OAAOhzW,KAAK4yW,W,oBAEvC,WACI,OAAO5yW,KAAK+yW,Q,qBAEhB,WACQ/yW,KAAKy/J,eACLz/J,KAAKy/J,cAAcv+I,Y,2CAG3B,WACI,OAAOlhB,KAAK8yW,gC,gBAIpB,IAAIG,EAAa,8BACb,WAAYC,EAAYh0V,EAAkBi0V,EAA2BC,EAA2B/yV,GAAyB,oBACrHrgB,KAAKkf,iBAAmBA,EACxBlf,KAAKmzW,0BAA4BA,EACjCnzW,KAAKozW,0BAA4BA,EACjCpzW,KAAKqgB,0BAA4BA,EACjCrgB,KAAKqzW,cAAe,EACpBrzW,KAAKwD,YAAa,EAElBxD,KAAKszW,YAAc,IAAI,UAAQ,SAAA9uW,GAC3BA,GAAQ,KAGZxE,KAAKuzW,gBAAa9uW,EAClBzE,KAAKwzW,kBAAe/uW,EACpBzE,KAAKyzW,aAAUhvW,EACfzE,KAAKoW,gBAAa3R,EAClBzE,KAAK0zW,iBAAcjvW,EACnBzE,KAAK2zW,sBAAmBlvW,EACxBzE,KAAK4zW,yBAAsBnvW,EAC3BzE,KAAK6zW,gBAAapvW,EAClBzE,KAAK8zW,yBAAsBrvW,EAC3BzE,KAAK+zW,cAAWtvW,EAChBzE,KAAKwR,aAAU/M,EACfzE,KAAKg0W,wBAAqBvvW,EAC1BzE,KAAKi0W,oBAAiBxvW,EACtBzE,KAAKk0W,gBAAazvW,EAClBzE,KAAKo7R,WAAQ32R,EACbzE,KAAKm0W,gBAAa1vW,EAClBzE,KAAKo0W,0BAAuB3vW,EAC5BzE,KAAKq0W,wBAAqB5vW,EAC1BzE,KAAKs0W,4BAAyB7vW,EAC9BzE,KAAKu0W,cAAW9vW,EAChBzE,KAAKw0W,iCAA8B/vW,EACnCzE,KAAKy0W,wBAAqBhwW,EAC1BzE,KAAK00W,mBAAgBjwW,EACrBzE,KAAK20W,yBAAsBlwW,EAC3BzE,KAAK40W,iBAAcnwW,EACnBzE,KAAK60W,mBAAgBpwW,EACrBzE,KAAK80W,uBAAoBrwW,EACzBzE,KAAK+0W,8BAA2BtwW,EAChCzE,KAAKg1W,+BAA4BvwW,EACjCzE,KAAKi1W,mCAAgCxwW,EACrCzE,KAAKk1W,kCAA+BzwW,EACpCzE,KAAKm1W,iBAAc1wW,EACnBzE,KAAKo1W,sBAAmB3wW,EACxBzE,KAAKq1W,gBAAa5wW,EAClBzE,KAAKs1W,eAAY7wW,EACjBzE,KAAKu1W,aAAU9wW,EACfzE,KAAKksW,kBAAeznW,EACpBzE,KAAKw1W,cAAW/wW,EAChBzE,KAAKy1W,kBAAehxW,EACpBzE,KAAK01W,4BAAyBjxW,EAC9BzE,KAAK21W,2BAAwBlxW,EAC7BzE,KAAK41W,qBAAkBnxW,EACvBzE,KAAK61W,kBAAepxW,EACpBzE,KAAK81W,cAAWrxW,EAChBzE,KAAK+1W,eAAYtxW,EACjBzE,KAAKg2W,0BAAuBvxW,EAC5BzE,KAAKi2W,uBAAoBxxW,EACzBzE,KAAKk2W,kBAAezxW,EACpBzE,KAAKm2W,4BAAyB1xW,EAC9BzE,KAAKo2W,oBAAiB3xW,EACtBzE,KAAKq2W,oBAAiB5xW,EACtBzE,KAAKs2W,eAAY7xW,EACjBzE,KAAKu2W,qBAAkB9xW,EACvBzE,KAAKw2W,eAAY/xW,EACjBzE,KAAKy2W,cAAWhyW,EAChBzE,KAAK02W,kBAAejyW,EACpBzE,KAAK22W,uBAAoBlyW,EACzBzE,KAAK42W,2BAAwBnyW,EAC7BzE,KAAK62W,uBAAoBpyW,EACzBzE,KAAK82W,4BAAyBryW,EAC9BzE,KAAK+2W,0BAAuBtyW,EAC5BzE,KAAKg3W,iBAAcvyW,EACnBzE,KAAKi3W,iBAAcxyW,EACnBzE,KAAKk3W,8BAA2BzyW,EAChCzE,KAAKm3W,gCAA6B1yW,EAClCzE,KAAKo3W,qBAAkB3yW,EACvBzE,KAAKq3W,sBAAmB5yW,EACxBzE,KAAKs3W,qCAAkC7yW,EACvCzE,KAAKu3W,sBAAmB9yW,EACxBzE,KAAKw3W,uBAAoB/yW,EACzBzE,KAAKy3W,wBAAqBhzW,EAC1BzE,KAAK03W,oBAAiBjzW,EACtBzE,KAAK23W,6BAA0BlzW,EAC/BzE,KAAKisG,oBAAiBxnG,EACtBzE,KAAK43W,yBAAsBnzW,EAC3BzE,KAAK63W,uBAAoBpzW,EACzBzE,KAAK83W,2BAAwBrzW,EAC7BzE,KAAK+3W,gCAA6BtzW,EAClCzE,KAAKg4W,6BAA0BvzW,EAC/BzE,KAAKi4W,yBAAsBxzW,EAC3BzE,KAAKk4W,8BAA2BzzW,EAChCzE,KAAKm4W,oBAAiB1zW,EACtBzE,KAAKo4W,2BAAwB3zW,EAC7BzE,KAAKq4W,oCAAiC5zW,EACtCzE,KAAKs4W,mBAAgB7zW,EACrBzE,KAAKu4W,4BAAyB9zW,EAC9BzE,KAAKw4W,sBAAmB/zW,EACxBzE,KAAKy4W,+BAA4Bh0W,EACjCzE,KAAK04W,6BAA0Bj0W,EAC/BzE,KAAK24W,kBAAel0W,EACpBzE,KAAK44W,4BAAyBn0W,EAC9BzE,KAAK64W,iBAAcp0W,EACnBzE,KAAK84W,iBAAcr0W,EACnBzE,KAAK+4W,sBAAmBt0W,EACxBzE,KAAKg5W,kBAAev0W,EACpBzE,KAAKi5W,yBAAsBx0W,EAC3BzE,KAAKk5W,sBAAmBz0W,EACxBzE,KAAKm5W,0BAAuB10W,EAC5BzE,KAAKo5W,6BAA0B30W,EAC/BzE,KAAKq5W,yBAAsB50W,EAC3BzE,KAAKs5W,sBAAmB70W,EACxBzE,KAAKu5W,kBAAe90W,EACpBzE,KAAKw5W,qBAAkB/0W,EACvBzE,KAAKy5W,2BAAwBh1W,EAC7BzE,KAAK05W,oCAAiCj1W,EACtCzE,KAAK25W,oBAAiBl1W,EACtBzE,KAAK45W,4BAAyBn1W,EAC9BzE,KAAK65W,iCAA8Bp1W,EACnCzE,KAAK85W,2BAAwBr1W,EAC7BzE,KAAK+5W,qBAAkBt1W,EACvBzE,KAAKg6W,wBAAqBv1W,EAC1BzE,KAAKi6W,mBAAgBx1W,EACrBzE,KAAKk6W,sBAAmBz1W,EACxBzE,KAAKm6W,8BAA2B11W,EAChCzE,KAAKo6W,iBAAc31W,EACnBzE,KAAKq6W,sBAAmB51W,EACxBzE,KAAKs6W,mBAAgB71W,EACrBzE,KAAKu6W,iBAAc91W,EACnBzE,KAAKw6W,yBAAsB/1W,EAC3BzE,KAAKy6W,kCAA+Bh2W,EACpCzE,KAAK06W,6BAA0Bj2W,EAC/BzE,KAAK26W,sCAAmCl2W,EACxCzE,KAAK46W,4BAAyBn2W,EAC9BzE,KAAK66W,qCAAkCp2W,EACvCzE,KAAK86W,wBAAqBr2W,EAC1BzE,KAAK+6W,iCAA8Bt2W,EACnCzE,KAAKg7W,gCAA6Bv2W,EAClCzE,KAAKi7W,iBAAcx2W,EACnBzE,KAAKk7W,qBAAkBz2W,EACvBzE,KAAKm7W,cAAW12W,EAChBzE,KAAKo7W,+BAA4B32W,EACjCzE,KAAKq7W,+BAA4B52W,EACjCzE,KAAKs7W,8BAA2B72W,EAChCzE,KAAKu7W,2BAAwB92W,EAC7BzE,KAAKw7W,uBAAoB/2W,EACzBzE,KAAKwvW,2BAAwB/qW,EAC7BzE,KAAKy7W,0BAAuBh3W,EAC5BzE,KAAK07W,yBAAsBj3W,EAC3BzE,KAAK27W,0BAAuBl3W,EAC5BzE,KAAK47W,mBAAgBn3W,EACrBzE,KAAK67W,gCAA6Bp3W,EAClCzE,KAAK87W,6BAA0Br3W,EAC/BzE,KAAK+7W,6BAA0Bt3W,EAC/BzE,KAAKg8W,gCAA6Bv3W,EAClCzE,KAAKi8W,kCAA+Bx3W,EACpCzE,KAAKk8W,mCAAgCz3W,EACrCzE,KAAKm8W,sCAAmC13W,EACxCzE,KAAKo8W,sCAAmC33W,EACxCzE,KAAKq8W,2CAAwC53W,EAC7CzE,KAAKs8W,+BAA4B73W,EACjCzE,KAAKu8W,2BAAwB93W,EAC7BzE,KAAKw8W,8BAA2B/3W,EAChCzE,KAAKy8W,8BAA2Bh4W,EAChCzE,KAAKw7E,WAAQ/2E,EACbzE,KAAK08W,2BAAwBj4W,EAC7BzE,KAAK28W,qBAAkBl4W,EACvBzE,KAAK48W,2BAAwBn4W,EAC7BzE,KAAK68W,mBAAgBp4W,EACrBzE,KAAK88W,6BAA0Br4W,EAC/BzE,KAAK+8W,kBAAet4W,EACpBzE,KAAKg9W,4BAAyBv4W,EAC9BzE,KAAKi9W,wBAAqBx4W,EAC1BzE,KAAKk9W,2BAAwBz4W,EAC7BzE,KAAKm9W,2BAAwB14W,EAC7BzE,KAAKo9W,6BAA0B34W,EAC/BzE,KAAKq9W,0BAAuB54W,EAC5BzE,KAAKs9W,wBAAqB74W,EAC1BzE,KAAKu9W,6BAA0B94W,EAC/BzE,KAAKw9W,uBAAoB/4W,EACzBzE,KAAKy9W,sBAAmBh5W,EACxBzE,KAAK09W,8BAA2Bj5W,EAChCzE,KAAKg9F,cAAWv4F,EAChBzE,KAAK29W,sBAAmBl5W,EACxBzE,KAAK49W,oBAAiBn5W,EACtBzE,KAAKoxW,gBAAa3sW,EAClBzE,KAAK69W,uBAAoBp5W,EACzBzE,KAAKkyW,qBAAkBztW,EACvBzE,KAAK89W,4BAAyBr5W,EAC9BzE,KAAK+9W,2BAAwBt5W,EAC7BzE,KAAKuxW,sBAAmB9sW,EACxBzE,KAAKg+W,0BAAuBv5W,EAC5BzE,KAAKi+W,+BAA4Bx5W,EACjCzE,KAAKk+W,mBAAgBz5W,EACrBzE,KAAKm+W,iCAA8B15W,EACnCzE,KAAKo+W,4BAAyB35W,EAC9BzE,KAAKq+W,8BAA2B55W,EAChCzE,KAAKs+W,0BAAuB75W,EAC5BzE,KAAKu+W,uBAAoB95W,EACzBzE,KAAKw+W,sBAAmB/5W,EACxBzE,KAAKy+W,kCAA+Bh6W,EACpCzE,KAAK0+W,eAAYj6W,EACjBzE,KAAK2+W,mBAAgBl6W,EACrBzE,KAAK4+W,yBAAsBn6W,EAC3BzE,KAAK6+W,oCAAiCp6W,EACtCzE,KAAK8+W,yBAAsBr6W,EAC3BzE,KAAK++W,6BAA0Bt6W,EAC/BzE,KAAKg/W,2BAAwBv6W,EAC7BzE,KAAKi/W,6BAA0Bx6W,EAC/BzE,KAAKk/W,mCAAgCz6W,EACrCzE,KAAK6xW,2BAAwBptW,EAC7BzE,KAAKm/W,mCAAgC16W,EACrCzE,KAAKo/W,gCAA6B36W,EAClCzE,KAAKq/W,wCAAqC56W,EAC1CzE,KAAKs/W,+BAA4B76W,EACjCzE,KAAKu/W,iCAA8B96W,EACnCzE,KAAKw/W,4BAAyB/6W,EAC9BzE,KAAKy/W,eAAYh7W,EACjBzE,KAAK0/W,6BAA0Bj7W,EAC/BzE,KAAK2/W,kCAA+Bl7W,EACpCzE,KAAK4/W,4BAAyBn7W,EAC9BzE,KAAK6/W,+BAA4Bp7W,EACjCzE,KAAK8/W,sBAAmBr7W,EACxBzE,KAAK+/W,uBAAoBt7W,EACzBzE,KAAKggX,iBAAcv7W,EACnBzE,KAAKigX,0BAAuBx7W,EAC5BzE,KAAKkgX,+BAA4Bz7W,EACjCzE,KAAKmgX,qCAAkC17W,EACvCzE,KAAKogX,eAAY37W,EACjBzE,KAAKqgX,uBAAoB57W,EACzBzE,KAAKsgX,oBAAiB77W,EACtBzE,KAAKugX,qBAAkB97W,EACvBzE,KAAKwgX,iCAA8B/7W,EACnCzE,KAAKygX,4BAAyBh8W,EAC9BzE,KAAK0gX,qBAAkBj8W,EACvBzE,KAAK2gX,wBAAqBl8W,EAC1BzE,KAAK4gX,kCAA+Bn8W,EACpCzE,KAAK6gX,qBAAkBp8W,EACvBzE,KAAK8gX,6BAA0Br8W,EAC/BzE,KAAKmyW,oBAAiB1tW,EACtBzE,KAAK+gX,0BAAuBt8W,EAC5BzE,KAAKghX,0BAAuBv8W,EAC5BzE,KAAKihX,gBAAax8W,EAClBzE,KAAKkhX,mCAAgCz8W,EACrCzE,KAAKmhX,4BAAyB18W,EAC9BzE,KAAKohX,6BAA0B38W,EAC/BzE,KAAKqhX,yBAAsB58W,EAC3BzE,KAAKshX,sBAAmB78W,EACxBzE,KAAKuhX,sBAAmB98W,EACxBzE,KAAKwhX,oBAAiB/8W,EACtBzE,KAAKyhX,kBAAeh9W,EACpBzE,KAAK0hX,iBAAcj9W,EACnBzE,KAAK2hX,6BAA0Bl9W,EAC/BzE,KAAK4hX,gBAAan9W,EAClBzE,KAAK6hX,4BAAyBp9W,EAC9BzE,KAAK8hX,iCAA8Br9W,EACnCzE,KAAK+hX,4BAAyBt9W,EAC9BzE,KAAKgiX,yBAAsBv9W,EAC3BzE,KAAKiiX,uBAAoBx9W,EACzBzE,KAAKkiX,cAAWz9W,EAChBzE,KAAKmiX,kBAAe19W,EACpBzE,KAAKoiX,iCAA8B39W,EACnCzE,KAAKqiX,6BAA0B59W,EAC/BzE,KAAKsiX,oBAAiB79W,EACtBzE,KAAKuiX,gCAA6B99W,EAClCzE,KAAKwiX,6BAA0B/9W,EAC/BzE,KAAKyiX,6BAA0Bh+W,EAC/BzE,KAAK0iX,yCAAsCj+W,EAC3CzE,KAAK2iX,6BAA0Bl+W,EAC/BzE,KAAK4iX,+BAA4Bn+W,EACjCzE,KAAK6iX,oBAAiBp+W,EACtBzE,KAAK8iX,0BAAuBr+W,EAC5BzE,KAAK+iX,4BAAyBt+W,EAC9BzE,KAAKgjX,kCAA+Bv+W,EACpCzE,KAAKijX,mCAAgCx+W,EACrCzE,KAAKkjX,eAAYz+W,EACjBzE,KAAKmjX,kCAA+B1+W,EACpCzE,KAAKojX,kBAAe3+W,EACpBzE,KAAKqjX,qBAAkB5+W,EACvBzE,KAAKsjX,mCAAgC7+W,EACrCzE,KAAKujX,6BAA0B9+W,EAC/BzE,KAAKwjX,mCAAgC/+W,EACrCzE,KAAKyjX,uCAAoCh/W,EACzCzE,KAAK0jX,0CAAuCj/W,EAC5CzE,KAAK2jX,uBAAoBl/W,EACzBzE,KAAK4jX,oBAAiBn/W,EACtBzE,KAAK6jX,uBAAoBp/W,EACzBzE,KAAK8jX,iCAA8Br/W,EACnCzE,KAAK+jX,yBAAsBt/W,EAC3BzE,KAAKgkX,mCAAgCv/W,EACrCzE,KAAKikX,mBAAgBx/W,EACrBzE,KAAKkkX,sBAAmBz/W,EACxBzE,KAAKmkX,6BAA0B1/W,EAC/BzE,KAAKokX,wBAA0B,IAAI,IACnCpkX,KAAKqkX,iBAAmB,IAAI,IAC5BrkX,KAAKskX,uBAAyB,IAAI,IAClCtkX,KAAKukX,sBAAwB,IAAI,IACjCvkX,KAAKwkX,oBAAsB,IAAI,IAC/BxkX,KAAKykX,mBAAqB,IAAI,IAC9BzkX,KAAK0kX,mBAAqB,IAAI,IAC9B1kX,KAAK2kX,mBAAqB,IAAI,IAC9B3kX,KAAK4kX,YAAc,IAAI,IACvB5kX,KAAK6kX,cAAgB,IAAI,IACzB7kX,KAAK8kX,aAAe,IAAI,IACxB9kX,KAAK+kX,kBAAoB,IAAI,IAC7B/kX,KAAKglX,cAAgB,IAAI,IACzBhlX,KAAKilX,wBAA0B,IAAI,IACnCjlX,KAAKklX,sBAAwB,IAAI,IACjCllX,KAAKmlX,eAAiB,IAAI,IAC1BnlX,KAAKolX,eAAiB,IAAI,IAC1BplX,KAAKqlX,eAAiB,IAAI,IAC1BrlX,KAAKslX,qBAAuB,IAAI,IAChCtlX,KAAKulX,sBAAwB,IAAI,IACjCvlX,KAAKwlX,aAAe,IAAI,IACxBxlX,KAAKylX,2BAA6B,IAAI,IACtCzlX,KAAK0lX,oBAAsB,IAAI,IAC/B1lX,KAAK2lX,eAAiB,IAAI,IAC1B3lX,KAAK4lX,wBAA0B,IAAI,IACnC5lX,KAAK6lX,aAAe,IAAI,IACxB7lX,KAAK8lX,WAAa,IAAI,IACtB9lX,KAAK+lX,SAAW,IAAI,IACpB/lX,KAAKgmX,UAAY,IAAI,IACrBhmX,KAAKimX,QAAU,IAAI,IACnBjmX,KAAKkmX,YAAc,IAAI,IACvBlmX,KAAKmmX,kBAAoB,IAAI,IAC7BnmX,KAAKomX,cAAgB,IAAI,IACzBpmX,KAAKqmX,gBAAkB,IAAI,IAC3BrmX,KAAKsmX,iBAAmB,IAAI,IAC5BtmX,KAAKumX,gBAAkB,IAAI,IAC3BvmX,KAAKwmX,YAAc,IAAI,IACvBxmX,KAAKymX,YAAc,IAAI,IACvBzmX,KAAK0mX,iBAAmB,IAAI,IAC5B1mX,KAAK2mX,YAAc,IAAI,IACvB3mX,KAAK4mX,aAAe,IAAI,IACxB5mX,KAAK6mX,cAAgB,IAAI,IACzB7mX,KAAK8mX,aAAe,IAAI,IACxB9mX,KAAK+mX,cAAgB,IAAI,IACzB/mX,KAAKgnX,eAAiB,IAAI,IAC1BhnX,KAAKinX,aAAe,IAAI,IACxBjnX,KAAKknX,YAAc,IAAI,IACvBlnX,KAAKmnX,kBAAoB,IAAI,IAC7BnnX,KAAKonX,WAAa,IAAI,IACtBpnX,KAAKqnX,iBAAmB,IAAI,IAC5BrnX,KAAKsnX,UAAY,IAAI,IACrBtnX,KAAKunX,gBAAkB,IAAI,IAC3BvnX,KAAKwnX,gBAAkB,IAAI,IAC3BxnX,KAAKynX,kBAAoB,IAAI,IAC7BznX,KAAK0nX,YAAc,IAAI,IACvB1nX,KAAK2nX,YAAc,IAAI,IACvB3nX,KAAK4nX,gBAAkB,IAAI,IAC3B5nX,KAAK6nX,kBAAoB,IAAI,IAC7B7nX,KAAK8nX,kBAAoB,IAAI,IAC7B9nX,KAAK+nX,mBAAqB,IAAI,IAC9B/nX,KAAKgoX,mBAAqB,IAAI,IAC9BhoX,KAAKioX,WAAa,IAAI,IACtBjoX,KAAKkoX,oBAAsB,IAAI,IAC/BloX,KAAKmoX,mBAAqB,IAAI,IAC9BnoX,KAAKooX,kBAAoB,IAAI,IAC7BpoX,KAAKqoX,sBAAwB,IAAI,IACjCroX,KAAKsoX,kBAAoB,IAAI,IAC7BtoX,KAAKuoX,6BAA+B,IAAI,IACxCvoX,KAAKwoX,wBAA0B,IAAI,IACnCxoX,KAAKyoX,mBAAqB,IAAI,IAC9BzoX,KAAK0oX,WAAa,IAAI,IACtB1oX,KAAK2oX,aAAe,IAAI,IACxB3oX,KAAK4oX,YAAc,IAAI,IACvB5oX,KAAK6oX,aAAe,IAAI,IACxB7oX,KAAK8oX,WAAa,IAAI,IACtB9oX,KAAK+oX,aAAe,IAAI,IACxB/oX,KAAKgpX,4BAA8B,IAAI,IACvChpX,KAAKipX,yBAA2B,IAAI,IACpCjpX,KAAKkpX,yBAA2B,IAAI,IACpClpX,KAAKmpX,2BAA6B,IAAI,IACtCnpX,KAAKopX,cAAgB,IAAI,IACzBppX,KAAKqpX,WAAa,IAAI,IACtBrpX,KAAKspX,eAAiBpW,EAAWtwW,cACjC5C,KAAKozW,0BAA0BmW,oBAAoBvpX,KAAKkf,kBACxDlf,KAAKozW,0BAA0BoW,4BAA4BxpX,KAAKqgB,4BA3XvD,8BA6Xb,WACIrgB,KAAKypX,2BACLzpX,KAAK0pX,YAAc,gBAAcC,4BAA4B3pX,KAAK0pX,YAAa1pX,MAAM,GACrFA,KAAK4pX,WAAa,CACdC,oBAAqB7pX,KAAK6pX,oBAAoBt/U,KAAKvqC,MACnD8pX,mBAAoB9pX,KAAKmzW,0BACzB4W,sBAAuB,CACnB3W,0BAA2BpzW,KAAKozW,2BAEpC4W,QAAUhqX,KAAKgqX,SAAW,IAE1BhqX,KAAKmF,SAAWnF,KAAKmF,QAAQhB,OAAS,IACtCnE,KAAK0pX,YAAYtzW,WAAapW,KAAKmF,QAC9BsE,IAAI,SAACjE,GACN,OAAOA,EAAOymW,cAGtB,IAAI,OAAKjsW,KAAKspX,eAAgBtpX,KAAK0pX,YAAa1pX,KAAK4pX,YACjD5pX,KAAK0pX,YAAYO,MACjBjqX,KAAKiqX,IAAMjqX,KAAK0pX,YAAYO,KAE5BjqX,KAAK0pX,YAAYQ,YACjBlqX,KAAKkqX,UAAYlqX,KAAK0pX,YAAYQ,WAEtClqX,KAAKqzW,cAAe,EAIpBrzW,KAAKszW,YAAY6W,WAAW,KAAM,SAAA3lX,GAAO,OAAIA,MAzZpC,yBA2Zb,SAAYS,GACJjF,KAAKqzW,cACL,gBAAc+W,gBAAgBnlX,EAASjF,KAAK0pX,YAAa1pX,KAAKiqX,IAAKjqX,KAAKkqX,aA7ZnE,yBAgab,WACQlqX,KAAKqzW,eAGLrzW,KAAKwD,YAAa,EACdxD,KAAKiqX,KACLjqX,KAAKiqX,IAAI/oW,aAtaR,sCA0ab,WAAwB,WACpB,IAAEmpW,cAAc,SAAQ,SAAC1tW,EAAKm5B,GACtB,EAAKA,IAAc,EAAKA,GAAW0xG,UAAUrjJ,OAAS,GACtD,qBAAmBmmX,sBAAsBx0U,OA7axC,iCAibb,SAAoBP,EAAWjtB,GAG3B,IAAItoB,KAAKwD,WAAT,CAIA,IAAI66D,EAAUr+D,KAAKu1C,GACf8oB,EACkB,cAAd9oB,EAGAv1C,KAAKszW,YAAYj1V,KAAM,SAAAue,GACnByhC,EAAQn8C,KAAKoG,KAIjB+1C,EAAQn8C,KAAKoG,GAIjByiB,QAAQ0wC,IAAI,iDAAmDlmC,QAtc1D,G,OA0cjB09T,EAAc1yW,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKyyW,GAAe,KAAyB,KAAoB,KAAyB,KAA0B,KAAyBb,GAA4B,KAAyBE,GAAmC,KAAyB,OACnUW,EAAc9sW,UAAO,KAAyB,CAAEzF,KAAMuyW,EAAetyW,UAAW,CAAC,CAAC,oBAAqBe,eAAgB,SAAsCC,EAAIC,EAAKC,GAG9J,IAAIC,EAH+K,EAALH,GAC9K,KAAsBE,EAAU8pW,EAAc,GACvC,EAALhqW,GAEF,KAAsBG,EAAK,UAA0BF,EAAIuD,QAAUrD,IAClEK,OAAQ,CAAEoxW,WAAY,aAAcC,aAAc,eAAgBC,QAAS,UAAWr9V,WAAY,aAAcs9V,YAAa,cAAeC,iBAAkB,mBAAoBC,oBAAqB,sBAAuBC,WAAY,aAAcC,oBAAqB,sBAAuBC,SAAU,WAAYviW,QAAS,UAAWwiW,mBAAoB,qBAAsBC,eAAgB,iBAAkBC,WAAY,aAAc94E,MAAO,QAAS+4E,WAAY,aAAcC,qBAAsB,uBAAwBC,mBAAoB,qBAAsBC,uBAAwB,yBAA0BC,SAAU,WAAYC,4BAA6B,8BAA+BC,mBAAoB,qBAAsBC,cAAe,gBAAiBC,oBAAqB,sBAAuBC,YAAa,cAAeC,cAAe,gBAAiBC,kBAAmB,oBAAqBC,yBAA0B,2BAA4BC,0BAA2B,4BAA6BC,8BAA+B,gCAAiCC,6BAA8B,+BAAgCC,YAAa,cAAeC,iBAAkB,mBAAoBC,WAAY,aAAcC,UAAW,YAAaC,QAAS,UAAWrJ,aAAc,eAAgBsJ,SAAU,WAAYC,aAAc,eAAgBC,uBAAwB,yBAA0BC,sBAAuB,wBAAyBC,gBAAiB,kBAAmBC,aAAc,eAAgBC,SAAU,WAAYC,UAAW,YAAaC,qBAAsB,uBAAwBC,kBAAmB,oBAAqBC,aAAc,eAAgBC,uBAAwB,yBAA0BC,eAAgB,iBAAkBC,eAAgB,iBAAkBC,UAAW,YAAaC,gBAAiB,kBAAmBC,UAAW,YAAaC,SAAU,WAAYC,aAAc,eAAgBC,kBAAmB,oBAAqBC,sBAAuB,wBAAyBC,kBAAmB,oBAAqBC,uBAAwB,yBAA0BC,qBAAsB,uBAAwBC,YAAa,cAAeC,YAAa,cAAeC,yBAA0B,2BAA4BC,2BAA4B,6BAA8BC,gBAAiB,kBAAmBC,iBAAkB,mBAAoBC,gCAAiC,kCAAmCC,iBAAkB,mBAAoBC,kBAAmB,oBAAqBC,mBAAoB,qBAAsBC,eAAgB,iBAAkBC,wBAAyB,0BAA2B1rQ,eAAgB,iBAAkB2rQ,oBAAqB,sBAAuBC,kBAAmB,oBAAqBC,sBAAuB,wBAAyBC,2BAA4B,6BAA8BC,wBAAyB,0BAA2BC,oBAAqB,sBAAuBC,yBAA0B,2BAA4BC,eAAgB,iBAAkBC,sBAAuB,wBAAyBC,+BAAgC,iCAAkCC,cAAe,gBAAiBC,uBAAwB,yBAA0BC,iBAAkB,mBAAoBC,0BAA2B,4BAA6BC,wBAAyB,0BAA2BC,aAAc,eAAgBC,uBAAwB,yBAA0BC,YAAa,cAAeC,YAAa,cAAeC,iBAAkB,mBAAoBC,aAAc,eAAgBC,oBAAqB,sBAAuBC,iBAAkB,mBAAoBC,qBAAsB,uBAAwBC,wBAAyB,0BAA2BC,oBAAqB,sBAAuBC,iBAAkB,mBAAoBC,aAAc,eAAgBC,gBAAiB,kBAAmBC,sBAAuB,wBAAyBC,+BAAgC,iCAAkCC,eAAgB,iBAAkBC,uBAAwB,yBAA0BC,4BAA6B,8BAA+BC,sBAAuB,wBAAyBC,gBAAiB,kBAAmBC,mBAAoB,qBAAsBC,cAAe,gBAAiBC,iBAAkB,mBAAoBC,yBAA0B,2BAA4BC,YAAa,cAAeC,iBAAkB,mBAAoBC,cAAe,gBAAiBC,YAAa,cAAeC,oBAAqB,sBAAuBC,6BAA8B,+BAAgCC,wBAAyB,0BAA2BC,iCAAkC,mCAAoCC,uBAAwB,yBAA0BC,gCAAiC,kCAAmCC,mBAAoB,qBAAsBC,4BAA6B,8BAA+BC,2BAA4B,6BAA8BC,YAAa,cAAeC,gBAAiB,kBAAmBC,SAAU,WAAYC,0BAA2B,4BAA6BC,0BAA2B,4BAA6BC,yBAA0B,2BAA4BC,sBAAuB,wBAAyBC,kBAAmB,oBAAqBhM,sBAAuB,wBAAyBiM,qBAAsB,uBAAwBC,oBAAqB,sBAAuBC,qBAAsB,uBAAwBC,cAAe,gBAAiBC,2BAA4B,6BAA8BC,wBAAyB,0BAA2BC,wBAAyB,0BAA2BC,2BAA4B,6BAA8BC,6BAA8B,+BAAgCC,8BAA+B,gCAAiCC,iCAAkC,mCAAoCC,iCAAkC,mCAAoCC,sCAAuC,wCAAyCC,0BAA2B,4BAA6BC,sBAAuB,wBAAyBC,yBAA0B,2BAA4BC,yBAA0B,2BAA4BjhS,MAAO,QAASkhS,sBAAuB,wBAAyBC,gBAAiB,kBAAmBC,sBAAuB,wBAAyBC,cAAe,gBAAiBC,wBAAyB,0BAA2BC,aAAc,eAAgBC,uBAAwB,yBAA0BC,mBAAoB,qBAAsBC,sBAAuB,wBAAyBC,sBAAuB,wBAAyBC,wBAAyB,0BAA2BC,qBAAsB,uBAAwBC,mBAAoB,qBAAsBC,wBAAyB,0BAA2BC,kBAAmB,oBAAqBC,iBAAkB,mBAAoBC,yBAA0B,2BAA4B1gR,SAAU,WAAY2gR,iBAAkB,mBAAoBC,eAAgB,iBAAkBxM,WAAY,aAAcyM,kBAAmB,oBAAqB3L,gBAAiB,kBAAmB4L,uBAAwB,yBAA0BC,sBAAuB,wBAAyBxM,iBAAkB,mBAAoByM,qBAAsB,uBAAwBC,0BAA2B,4BAA6BC,cAAe,gBAAiBC,4BAA6B,8BAA+BC,uBAAwB,yBAA0BC,yBAA0B,2BAA4BC,qBAAsB,uBAAwBC,kBAAmB,oBAAqBC,iBAAkB,mBAAoBC,6BAA8B,+BAAgCC,UAAW,YAAaC,cAAe,gBAAiBC,oBAAqB,sBAAuBC,+BAAgC,iCAAkCC,oBAAqB,sBAAuBC,wBAAyB,0BAA2BC,sBAAuB,wBAAyBC,wBAAyB,0BAA2BC,8BAA+B,gCAAiCrN,sBAAuB,wBAAyBsN,8BAA+B,gCAAiCC,2BAA4B,6BAA8BC,mCAAoC,qCAAsCC,0BAA2B,4BAA6BC,4BAA6B,8BAA+BC,uBAAwB,yBAA0BC,UAAW,YAAaC,wBAAyB,0BAA2BC,6BAA8B,+BAAgCC,uBAAwB,yBAA0BC,0BAA2B,4BAA6BC,iBAAkB,mBAAoBC,kBAAmB,oBAAqBC,YAAa,cAAeC,qBAAsB,uBAAwBC,0BAA2B,4BAA6BC,gCAAiC,kCAAmCC,UAAW,YAAaC,kBAAmB,oBAAqBC,eAAgB,iBAAkBC,gBAAiB,kBAAmBC,4BAA6B,8BAA+BC,uBAAwB,yBAA0BC,gBAAiB,kBAAmBC,mBAAoB,qBAAsBC,6BAA8B,+BAAgCC,gBAAiB,kBAAmBC,wBAAyB,0BAA2B3O,eAAgB,iBAAkB4O,qBAAsB,uBAAwBC,qBAAsB,uBAAwBC,WAAY,aAAcC,8BAA+B,gCAAiCC,uBAAwB,yBAA0BC,wBAAyB,0BAA2BC,oBAAqB,sBAAuBC,iBAAkB,mBAAoBC,iBAAkB,mBAAoBC,eAAgB,iBAAkBC,aAAc,eAAgBC,YAAa,cAAeC,wBAAyB,0BAA2BC,WAAY,aAAcC,uBAAwB,yBAA0BC,4BAA6B,8BAA+BC,uBAAwB,yBAA0BC,oBAAqB,sBAAuBC,kBAAmB,oBAAqBC,SAAU,WAAYC,aAAc,eAAgBC,4BAA6B,8BAA+BC,wBAAyB,0BAA2BC,eAAgB,iBAAkBC,2BAA4B,6BAA8BC,wBAAyB,0BAA2BC,wBAAyB,0BAA2BC,oCAAqC,sCAAuCC,wBAAyB,0BAA2BC,0BAA2B,4BAA6BC,eAAgB,iBAAkBC,qBAAsB,uBAAwBC,uBAAwB,yBAA0BC,6BAA8B,+BAAgCC,8BAA+B,gCAAiCC,UAAW,YAAaC,6BAA8B,+BAAgCC,aAAc,eAAgBC,gBAAiB,kBAAmBC,8BAA+B,gCAAiCC,wBAAyB,0BAA2BC,8BAA+B,gCAAiCC,kCAAmC,oCAAqCC,qCAAsC,uCAAwCC,kBAAmB,oBAAqBC,eAAgB,iBAAkBC,kBAAmB,oBAAqBC,4BAA6B,8BAA+BC,oBAAqB,sBAAuBC,8BAA+B,gCAAiCC,cAAe,gBAAiBC,iBAAkB,mBAAoBC,wBAAyB,0BAA2BuF,YAAa,cAAeM,QAAS,WAAa7nW,QAAS,CAAEiiW,wBAAyB,0BAA2BC,iBAAkB,mBAAoBC,uBAAwB,yBAA0BC,sBAAuB,wBAAyBC,oBAAqB,sBAAuBC,mBAAoB,qBAAsBC,mBAAoB,qBAAsBC,mBAAoB,qBAAsBC,YAAa,cAAeC,cAAe,gBAAiBC,aAAc,eAAgBC,kBAAmB,oBAAqBC,cAAe,gBAAiBC,wBAAyB,0BAA2BC,sBAAuB,wBAAyBC,eAAgB,iBAAkBC,eAAgB,iBAAkBC,eAAgB,iBAAkBC,qBAAsB,uBAAwBC,sBAAuB,wBAAyBC,aAAc,eAAgBC,2BAA4B,6BAA8BC,oBAAqB,sBAAuBC,eAAgB,iBAAkBC,wBAAyB,0BAA2BC,aAAc,eAAgBC,WAAY,aAAcC,SAAU,WAAYC,UAAW,YAAaC,QAAS,UAAWC,YAAa,cAAeC,kBAAmB,oBAAqBC,cAAe,gBAAiBC,gBAAiB,kBAAmBC,iBAAkB,mBAAoBC,gBAAiB,kBAAmBC,YAAa,cAAeC,YAAa,cAAeC,iBAAkB,mBAAoBC,YAAa,cAAeC,aAAc,eAAgBC,cAAe,gBAAiBC,aAAc,eAAgBC,cAAe,gBAAiBC,eAAgB,iBAAkBC,aAAc,eAAgBC,YAAa,cAAeC,kBAAmB,oBAAqBC,WAAY,aAAcC,iBAAkB,mBAAoBC,UAAW,YAAaC,gBAAiB,kBAAmBC,gBAAiB,kBAAmBC,kBAAmB,oBAAqBC,YAAa,cAAeC,YAAa,cAAeC,gBAAiB,kBAAmBC,kBAAmB,oBAAqBC,kBAAmB,oBAAqBC,mBAAoB,qBAAsBC,mBAAoB,qBAAsBC,WAAY,aAAcC,oBAAqB,sBAAuBC,mBAAoB,qBAAsBC,kBAAmB,oBAAqBC,sBAAuB,wBAAyBC,kBAAmB,oBAAqBC,6BAA8B,+BAAgCC,wBAAyB,0BAA2BC,mBAAoB,qBAAsBC,WAAY,aAAcC,aAAc,eAAgBC,YAAa,cAAeC,aAAc,eAAgBC,WAAY,aAAcC,aAAc,eAAgBC,4BAA6B,8BAA+BC,yBAA0B,2BAA4BC,yBAA0B,2BAA4BC,2BAA4B,6BAA8BC,cAAe,gBAAiBC,WAAY,cAAgB/mX,SAAU,CAAC,KAA0B,CAC7re8vW,EACAE,IACA,MAA8BlsW,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAgCqB,EAAIC,KAAU4E,cAAe,IAo8CpIysW,EAAgB,YAAW,CAAE,YAAW,oBAAqB,CAAC,IACtD,IACAb,EACAE,EACA,OACLW,G,gBAGH,IAAIsX,EAAe7e,EAAc,kGAC7B,SAAsBmI,GAClB,MAAO,CACH90P,SAAU2sP,EACVv5U,UAAW,CACP,CAAE5vB,QAAS,IAA8BqW,SAAUi7V,EAAYnqV,OAAO,OALrD,qBAS7B,SAAemqV,GACX,MAAO,CACH90P,SAAU2sP,EACVv5U,UAAW,CACP,CAAE5vB,QAAS,IAA8BqW,SAAUi7V,EAAYnqV,OAAO,SAbrD,G,OAkBjC6gW,EAAahqX,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK+pX,IACxEA,EAAarxW,UAAO,KAAwB,CAAExY,KAAM6pX,IACpDA,EAAapxW,UAAO,KAAwB,CAAEC,QAAS,CAAC,M,KAwPlDu5V,EAA8D,KAA6BL,I,kCCxwFjG,IAGIhmE,EAHexvQ,EAAQ,OAGLD,CAAa,2BAA2B,KAAS,EACvE,GAAIyvQ,EACH,IACCA,EAAgB,GAAI,IAAK,CAAE/qS,MAAO,IACjC,MAAO0yB,GAERq4Q,GAAkB,EAIpBlvQ,EAAOC,QAAUivQ,G,8ICVX,SAAUk+E,IAAmB,2BAAPhjT,EAAO,yBAAPA,EAAO,gBAC/B,GAAuB,IAAnBA,EAAQrjE,OAAc,CACtB,IAAMnC,EAAQwlE,EAAQ,GACtB,GAAI,YAAQxlE,GACR,OAAOyoX,EAAiBzoX,EAAO,MAEnC,GAAI,YAASA,IAAUwa,OAAO24H,eAAenzI,KAAWwa,OAAOkW,UAAW,CACtE,IAAMjW,EAAOD,OAAOC,KAAKza,GACzB,OAAOyoX,EAAiBhuW,EAAKhT,IAAI,SAAAkT,GAAG,OAAI3a,EAAM2a,KAAOF,IAG7D,GAA2C,mBAAhC+qD,EAAQA,EAAQrjE,OAAS,GAAmB,CACnD,IAAMghI,EAAiB39D,EAAQvoC,MAE/B,OAAOwrV,EADPjjT,EAA8B,IAAnBA,EAAQrjE,QAAgB,YAAQqjE,EAAQ,IAAOA,EAAQ,GAAKA,EACtC,MAAMxjE,KAAK,YAAI,SAACnE,GAAD,OAAUslI,EAAc,WAAd,cAAkBtlI,OAEhF,OAAO4qX,EAAiBjjT,EAAS,MAErC,SAASijT,EAAiBjjT,EAAS/qD,GAC/B,OAAO,IAAI,IAAW,SAAA8f,GAClB,IAAM+a,EAAMkwB,EAAQrjE,OACpB,GAAY,IAARmzC,EAOJ,IAHA,IAAMxjC,EAAS,IAAIvJ,MAAM+sC,GACrBozU,EAAY,EACZC,EAAU,EARiB,cAU3B,IAAMpkW,EAAS,YAAKihD,EAAQ3/D,IACxBi5I,GAAW,EACfvkH,EAAW15B,IAAI0jB,EAAOriB,UAAU,CAC5BL,KAAM,SAAAtC,GACGu/I,IACDA,GAAW,EACX6pO,KAEJ72W,EAAOjM,GAAKtG,GAEhByzB,MAAO,SAAA2H,GAAG,OAAIJ,EAAWvH,MAAM2H,IAC/B74B,SAAU,aACN4mX,IACkBpzU,GAAQwpG,IAClB6pO,IAAYrzU,GACZ/a,EAAW14B,KAAK4Y,EACZA,EAAKhH,OAAO,SAACmnB,EAAQjgB,EAAK9U,GAAd,OAAqB+0B,EAAOjgB,GAAO7I,EAAOjM,GAAI+0B,GAAS,IACnE9oB,GAERyoB,EAAWz4B,iBApBlB+D,EAAI,EAAGA,EAAIyvC,EAAKzvC,IAAzB,UANI00B,EAAWz4B,e,sBClBd,SAAUue,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,SA7DUlX,CAAQ,EAAQ,U,ovBCkC1D,IAAMrF,EAAM,CAAC,WACPC,EAAM,CAAC,SACb,SAASkrX,EAA0BjpX,EAAIC,GAIrC,GAJqD,EAALD,IAC9C,KAAsB,EAAG,OAAQ,GACjC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMuzG,EAAS,OACf,KAAiB,GACjB,KAAyBA,EAAOy1C,cAEpC,SAASkgO,EAAiClpX,EAAIC,GAI5C,GAJ4D,EAALD,IACrD,KAAsB,EAAG,OAAQ,IACjC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM26G,EAAS,KAAqB,GACpC,KAAiB,GACjB,KAAyBA,EAAOwuQ,eAEpC,SAASC,EAAuCppX,EAAIC,GAAgB,EAALD,GAC3D,KAAoB,EAAG,EAAG,CAAC,gBAAiB,SAEhD,SAASqpX,EAA0BrpX,EAAIC,GAKrC,GALqD,EAALD,IAC9C,KAAsB,EAAG,OAAQ,GACjC,KAAkB,EAAGkpX,EAAkC,EAAG,EAAG,OAAQ,IACrE,KAAkB,EAAGE,EAAwC,EAAG,EAAG,aAAc,IACjF,QACO,EAALppX,EAAQ,CACV,IAAM+0G,EAAS,OACf,KAAkB,aAAcA,EAAOu0Q,eACvC,KAAiB,GACjB,KAAkB,gBAAgB,IAEtC,SAASC,EAAiCvpX,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC7D,IAAM64G,EAAM,OACZ,KAAsB,EAAG,MAAO,IAChC,KAAsB,EAAG,MAAO,GAAI,IACpC,KAAkB,uBAAwB,SAAuF1oF,GAA4E,OAAlE,KAAqB0oF,GAAqB,OAAsC2wQ,0BAA0BtnX,KAAKiuB,EAAOqR,UAAjQ,CAA8Q,UAAW,SAAiErR,GAA6E,OAAnE,KAAqB0oF,GAAsB,OAAuCxoF,eAAeF,KACrc,KAAoB,EAAG,GACvB,OACA,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMs0G,EAAS,OACf,KAAkB,2BAAuBxxG,GACzC,KAAiB,GACjB,KAA8B,oBAAqBwxG,EAAOm1Q,iBAAkB,IAC5E,KAAmB,mBAAoBn1Q,EAAOo1Q,iBAA9C,CAAgE,YAAap1Q,EAAOq1Q,iBAAkB,MACtG,KAAkB,UAAWr1Q,EAAOjmF,WAApC,CAAgD,kBAAmBimF,EAAOq9D,SAAW,mBAAqB,WAC1G,KAAmB,KAAMr9D,EAAOjwF,GAAK,SAArC,CAA+C,uBAAwBiwF,EAAOq9D,SAA9E,CAAwF,aAAcr9D,EAAO9vF,WAAa,KAA1H,CAAgI,kBAAmB8vF,EAAO7vF,4BAE9J,IAAMkrF,EAAM,CAAC,CAAC,CAAC,uBAAwB,KACjCC,EAAM,CAAC,qBAAsB,KAC7Bg6Q,EAAsB,CAMxBC,mBAAoB,YAAQ,qBAAsB,CAC9C,YAAW,YAAa,YAAM,kBAAmB,CAAC,eAAiB,CAAEp3V,UAAU,OAWnFq3V,eAAgB,YAAQ,iBAAkB,CACtC,YAAM,OAAQ,YAAM,CAChB9pV,UAAW,cACXoG,SAAU,OACVrG,QAAS,KAEb,YAAM,UAAW,YAAM,CACnBA,QAAS,EACTqG,SAAU,oBACVpG,UAAW,eAEf,YAAM,mBAAoB,YAAM,CAC5BD,QAAS,EACTqG,SAAU,oBACVpG,UAAW,eAEf,YAAW,YAAa,YAAQ,qCAChC,YAAW,YAAa,YAAQ,oBAAqB,YAAM,CAAED,QAAS,SA4C1EkwE,EAAe,EAWb85Q,EAA0B,IA0C1BC,EAA6B,IAAI,IAAe,8BAMhDC,EAAoB,IAAI,IAAe,qBAEvCC,EAAsC,CACxCtpX,QAASopX,EACTxiW,KAAM,CAAC,KACPC,WATJ,SAAqDC,GACjD,OAAO,kBAAMA,EAAQC,iBAAiBC,gBAWpCuiW,E,YACF,WAEAvlW,EAEAhlB,GAAK,oBACDvB,KAAKumB,OAASA,EACdvmB,KAAKuB,MAAQA,IAKfwqX,E,YACF,WAAYh/W,EAAaulK,EAA2BC,EAAaC,EAAkBC,GAAS,oBACxFzyK,KAAK+M,YAAcA,EACnB/M,KAAKsyK,0BAA4BA,EACjCtyK,KAAKuyK,YAAcA,EACnBvyK,KAAKwyK,iBAAmBA,EACxBxyK,KAAKyyK,UAAYA,IAGnBu5M,EAAsB,YAAmB,YAAc,YAAc,YAAgBD,MAMrFE,GAAqB,IAAI,IAAe,oB,kBAgBxCC,E,YACF,WAAY5+W,EAAgBR,EAAoBxJ,EAASgvK,EAA2B5vK,EAAYuK,EAAMslK,EAAaC,EAAkB25M,EAAkB15M,EAAWt8H,EAAUi2U,EAAuBC,EAAgBvmV,GAAe,MAC1Nn7B,EAAIC,EAAI+pB,EADkN,4BAE9N,YAAMjyB,EAAY4vK,EAA2BC,EAAaC,EAAkBC,KACvEnlK,eAAiBA,EACtB,EAAKR,mBAAqBA,EAC1B,EAAKxJ,QAAUA,EACf,EAAK2J,KAAOA,EACZ,EAAKk/W,iBAAmBA,EACxB,EAAK15M,UAAYA,EACjB,EAAK45M,eAAiBA,EACtB,EAAKvmV,gBAAkBA,EAEvB,EAAKwmV,YAAa,EAElB,EAAKnuO,aAAe,SAAC+0B,EAAIC,GAAL,OAAYD,IAAOC,GAEvC,EAAKJ,KAAL,qBAA0BnhE,KAE1B,EAAK26Q,uBAAyB,KAE9B,EAAKjoF,SAAW,IAAI,IAEpB,EAAK35Q,UAAY,aAEjB,EAAKC,WAAa,aAElB,EAAK4hW,SAAL,2BAAoC56Q,KAEpC,EAAKu5Q,0BAA4B,IAAI,IACrC,EAAKsB,oBAAsD,QAA/B9hX,EAAK,EAAKm7B,uBAAoC,IAAPn7B,OAAgB,EAASA,EAAGslB,oBAAsB,GACrH,EAAK0iT,UAAW,EAEhB,EAAK9/J,YAAc,aACnB,EAAKvgE,WAAY,EACjB,EAAKlzE,WAAY,EACjB,EAAKstV,wBAAgI,QAArG/3V,EAAqC,QAA/B/pB,EAAK,EAAKk7B,uBAAoC,IAAPl7B,OAAgB,EAASA,EAAG+hX,8BAA2C,IAAPh4V,GAAgBA,EAE7J,EAAKxO,UAAY,GAEjB,EAAKymW,uBAAyB,YAAM,WAChC,IAAM5kW,EAAU,EAAKA,QACrB,OAAIA,EACOA,EAAQ/iB,QAAQjB,KAAK,YAAUgkB,GAAU,YAAU,kBAAM,IAAK,WAAL,cAASA,EAAQve,IAAI,SAAA+c,GAAM,OAAIA,EAAOyE,yBAEnG,EAAK3nB,QAAQoB,SACfV,KAAK,YAAK,GAAI,YAAU,kBAAM,EAAK4oX,4BAG5C,EAAKhnC,aAAe,IAAI,IAExB,EAAKinC,cAAgB,EAAKjnC,aAAa5hV,KAAK,YAAO,SAAAmqC,GAAC,OAAIA,IAAI,YAAI,eAEhE,EAAK2+U,cAAgB,EAAKlnC,aAAa5hV,KAAK,YAAO,SAAAmqC,GAAC,OAAKA,IAAI,YAAI,eAEjE,EAAKwiI,gBAAkB,IAAI,IAM3B,EAAK0C,YAAc,IAAI,IACnB,EAAKZ,YAGL,EAAKA,UAAUhhC,cAAf,GAIiH,OAAhH3rG,aAAyD,EAASA,EAAgBinV,6BACnF,EAAKC,2BAA6BlnV,EAAgBinV,2BAEtD,EAAKE,uBAAyBb,EAC9B,EAAKlhW,gBAAkB,EAAK+hW,yBAC5B,EAAK92U,SAAW3G,SAAS2G,IAAa,EAEtC,EAAKnwB,GAAK,EAAKA,GA3E+M,E,0DA8ElO,WACI,OAAOhmB,KAAK2yU,UAAY3yU,KAAKssX,a,uBAGjC,WAAoB,OAAOtsX,KAAK0oJ,c,IAChC,SAAgBnnJ,GACZvB,KAAK0oJ,aAAennJ,EACpBvB,KAAK4zK,aAAa/vK,S,oBAGtB,WAAiB,OAAO7D,KAAKsyG,W,IAC7B,SAAa/wG,GACTvB,KAAKsyG,UAAY,YAAsB/wG,GACvCvB,KAAK4zK,aAAa/vK,S,oBAGtB,WAAiB,OAAO7D,KAAKo/B,W,IAC7B,SAAa79B,GAITvB,KAAKo/B,UAAY,YAAsB79B,K,kCAG3C,WAA+B,OAAOvB,KAAK0sX,yB,IAC3C,SAA2BnrX,GACvBvB,KAAK0sX,wBAA0B,YAAsBnrX,K,uBAOzD,WAAoB,OAAOvB,KAAKm+I,c,IAChC,SAAgBnvI,GAIZhP,KAAKm+I,aAAenvI,EAChBhP,KAAKuzK,iBAELvzK,KAAK0zK,yB,iBAIb,WAAc,OAAO1zK,KAAKkgH,Q,IAC1B,SAAUgyB,IAEFA,IAAalyI,KAAKkgH,QAAWlgH,KAAKo/B,WAAa70B,MAAMyL,QAAQk8H,MACzDlyI,KAAKgoB,SACLhoB,KAAKy0K,qBAAqBviC,GAE9BlyI,KAAKkgH,OAASgyB,K,qCAItB,WAAkC,OAAOlyI,KAAKgtX,4B,IAC9C,SAA8BzrX,GAC1BvB,KAAKgtX,2BAA6B,YAAqBzrX,K,cAG3D,WAAW,OAAOvB,KAAK0jC,K,IACvB,SAAOniC,GACHvB,KAAK0jC,IAAMniC,GAASvB,KAAK+yK,KACzB/yK,KAAK4zK,aAAa/vK,S,sBAEtB,WAAQ,WACJ7D,KAAKuzK,gBAAkB,IAAI,IAAevzK,KAAKszK,UAC/CtzK,KAAK4zK,aAAa/vK,OAIlB7D,KAAKmrX,0BACAnnX,KAAK,cAAwB,YAAUhE,KAAKskS,WAC5CpgS,UAAU,kBAAM,EAAKgpX,oBAAoB,EAAKxiW,e,gCAEvD,WAAkB,WACd1qB,KAAKmtX,kBACLntX,KAAKuzK,gBAAgB7zI,QAAQ17B,KAAK,YAAUhE,KAAKskS,WAAWpgS,UAAU,SAAAokB,GAClEA,EAAMgY,MAAMjtB,QAAQ,SAAAmT,GAAM,OAAIA,EAAOyZ,WACrC3X,EAAMiY,QAAQltB,QAAQ,SAAAmT,GAAM,OAAIA,EAAO0I,eAE3ClvB,KAAKgoB,QAAQ/iB,QAAQjB,KAAK,YAAU,MAAO,YAAUhE,KAAKskS,WAAWpgS,UAAU,WAC3E,EAAKkpX,gBACL,EAAK15M,2B,uBAGb,WACI,IAAM25M,EAAoBrtX,KAAKstX,4BAI/B,GAAID,IAAsBrtX,KAAKusX,uBAAwB,CACnD,IAAMlhX,EAAUrL,KAAK+M,YAAYnK,cACjC5C,KAAKusX,uBAAyBc,EAC1BA,EACAhiX,EAAQwD,aAAa,kBAAmBw+W,GAGxChiX,EAAQo9B,gBAAgB,mBAG5BzoC,KAAKyyK,WACLzyK,KAAKq0K,qB,yBAGb,SAAYpvK,GAGJA,EAAO,UACPjF,KAAK4zK,aAAa/vK,OAElBoB,EAAO,2BAAiCjF,KAAK+nB,aAC7C/nB,KAAK+nB,YAAYisT,cAAch0U,KAAKgtX,8B,yBAG5C,WACIhtX,KAAKskS,SAASzgS,OACd7D,KAAKskS,SAASxgS,WACd9D,KAAK4zK,aAAa9vK,a,oBAGtB,WACI9D,KAAK0qB,UAAY1qB,KAAKslC,QAAUtlC,KAAKqrF,S,kBAGzC,WACQrrF,KAAKytB,aACLztB,KAAKssX,YAAa,EAClBtsX,KAAK+nB,YAAYisJ,0BAA0B,MAC3Ch0K,KAAKutX,0BACLvtX,KAAK8M,mBAAmBkK,kB,mBAIhC,WACQhX,KAAKssX,aACLtsX,KAAKssX,YAAa,EAClBtsX,KAAK+nB,YAAYisJ,0BAA0Bh0K,KAAKwtX,SAAW,MAAQ,OACnExtX,KAAK8M,mBAAmBkK,eACxBhX,KAAK4qB,gB,wBASb,SAAWrpB,GACPvB,KAAKuB,MAAQA,I,8BASjB,SAAiByN,GACbhP,KAAK2qB,UAAY3b,I,+BASrB,SAAkBA,GACdhP,KAAK4qB,WAAa5b,I,8BAQtB,SAAiB+d,GACb/sB,KAAKgtB,SAAWD,EAChB/sB,KAAK8M,mBAAmBkK,eACxBhX,KAAK4zK,aAAa/vK,S,qBAGtB,WACI,OAAO7D,KAAKssX,a,oBAGhB,WACI,OAAOtsX,KAAKszK,SAAWtzK,KAAKuzK,gBAAgBtkJ,SAAWjvB,KAAKuzK,gBAAgBtkJ,SAAS,K,wBAGzF,WACI,GAAIjvB,KAAKwzK,MACL,MAAO,GAEX,GAAIxzK,KAAKo/B,UAAW,CAChB,IAAMigH,EAAkBr/I,KAAKuzK,gBAAgBtkJ,SAASxlB,IAAI,SAAA+c,GAAM,OAAIA,EAAOm+K,YAK3E,OAJI3kM,KAAKwtX,UACLnuO,EAAgBx1I,UAGbw1I,EAAgBrvG,KAAK,MAEhC,OAAOhwC,KAAKuzK,gBAAgBtkJ,SAAS,GAAG01K,Y,oBAG5C,WACI,QAAO3kM,KAAKiN,MAA2B,QAApBjN,KAAKiN,KAAK1L,Q,4BAGjC,SAAe+mB,GACNtoB,KAAKgtB,WACNhtB,KAAK0qB,UAAY1qB,KAAKytX,mBAAmBnlW,GAAStoB,KAAK0tX,qBAAqBplW,M,kCAIpF,SAAqBA,GACjB,IAAM2E,EAAU3E,EAAM2E,QAChBM,EAAaN,IAAY,KAAcA,IAAY,KACrDA,IAAY,KAAcA,IAAY,IACpC0gW,EAAY1gW,IAAY,KAASA,IAAY,IAC7CknT,EAAUn0U,KAAK+nB,YAErB,IAAKosT,EAAQy5C,YAAeD,IAAc,YAAerlW,KACnDtoB,KAAKszK,UAAYhrJ,EAAMsvK,SAAWrqK,EACpCjF,EAAM4E,iBACNltB,KAAKqrF,YAEJ,IAAKrrF,KAAKszK,SAAU,CACrB,IAAMu6M,EAA2B7tX,KAAKivB,SACtCklT,EAAQ3mT,UAAUlF,GAClB,IAAMknK,EAAiBxvL,KAAKivB,SAExBugK,GAAkBq+L,IAA6Br+L,GAG/CxvL,KAAKqsX,eAAe/lC,SAAS92J,EAAemV,UAAW,Q,gCAKnE,SAAmBr8K,GACf,IAAM6rT,EAAUn0U,KAAK+nB,YACfkF,EAAU3E,EAAM2E,QAChBM,EAAaN,IAAY,KAAcA,IAAY,IACnD2gW,EAAWz5C,EAAQy5C,WACzB,GAAIrgW,GAAcjF,EAAMsvK,OAEpBtvK,EAAM4E,iBACNltB,KAAKslC,aAIJ,GAAKsoV,GAAa3gW,IAAY,KAASA,IAAY,MAAUknT,EAAQ/nT,YACrE,YAAe9D,GAIf,IAAKslW,GAAY5tX,KAAKo/B,WAAanS,IAAY,KAAK3E,EAAM6+K,QAAS,CACpE7+K,EAAM4E,iBACN,IAAM4gW,EAAuB9tX,KAAKgoB,QAAQ5f,KAAK,SAAA+2I,GAAG,OAAKA,EAAInyH,WAAamyH,EAAIlwH,WAC5EjvB,KAAKgoB,QAAQ3U,QAAQ,SAAAmT,GACZA,EAAOwG,WACR8gW,EAAuBtnW,EAAOyZ,SAAWzZ,EAAO0I,kBAIvD,CACD,IAAM6+V,EAAyB55C,EAAQvmT,gBACvCumT,EAAQ3mT,UAAUlF,GACdtoB,KAAKo/B,WAAa7R,GAAcjF,EAAMm/F,UAAY0sN,EAAQ/nT,YAC1D+nT,EAAQvmT,kBAAoBmgW,GAC5B55C,EAAQ/nT,WAAWgB,6BAjBvB9E,EAAM4E,iBACNinT,EAAQ/nT,WAAWgB,0B,sBAoB3B,WACSptB,KAAKgtB,WACNhtB,KAAK2yU,UAAW,EAChB3yU,KAAK4zK,aAAa/vK,U,qBAO1B,WACI7D,KAAK2yU,UAAW,EACX3yU,KAAKgtB,UAAahtB,KAAK0qB,YACxB1qB,KAAK4qB,aACL5qB,KAAK8M,mBAAmBkK,eACxBhX,KAAK4zK,aAAa/vK,U,yBAM1B,WAAW,WACP7D,KAAKguX,WAAW1yN,eAAet3J,KAAK,YAAK,IAAIE,UAAU,WACnD,EAAK4I,mBAAmB0U,gBACxB,EAAKysW,0B,4BAIb,WACI,OAAOjuX,KAAKmsX,iBAAL,cAA+BnsX,KAAKmsX,iBAAiBt2T,OAAU,K,iBAG1E,WACI,OAAQ71D,KAAKuzK,iBAAmBvzK,KAAKuzK,gBAAgBnzI,Y,kCAEzD,WAAoB,WAGhB77B,QAAQC,UAAU6Z,KAAK,WACnB,EAAKo2J,qBAAqB,EAAKhC,UAAY,EAAKA,UAAUlxK,MAAQ,EAAK2+G,QACvE,EAAK0zD,aAAa/vK,W,kCAO1B,SAAqBtC,GAAK,WAGtB,GAFAvB,KAAKuzK,gBAAgBtkJ,SAAS5b,QAAQ,SAAAmT,GAAM,OAAIA,EAAO0nW,sBACvDluX,KAAKuzK,gBAAgB7iK,QACjB1Q,KAAKszK,UAAY/xK,EACZgJ,MAAMyL,QAAQzU,GAGnBA,EAAM8R,QAAQ,SAACjO,GAAD,OAAkB,EAAK4vK,aAAa5vK,KAClDpF,KAAKi1K,kBAEJ,CACD,IAAMk5M,EAAsBnuX,KAAKg1K,aAAazzK,GAG1C4sX,EACAnuX,KAAK+nB,YAAY48I,iBAAiBwpN,GAE5BnuX,KAAK0qB,WAGX1qB,KAAK+nB,YAAY48I,kBAAkB,GAG3C3kK,KAAK8M,mBAAmBkK,iB,0BAM5B,SAAazV,GAAK,WACR4sX,EAAsBnuX,KAAKgoB,QAAQ3iB,KAAK,SAACmhB,GAG3C,GAAI,EAAK+sJ,gBAAgBvzI,WAAWxZ,GAChC,OAAO,EAEX,IAEI,OAAuB,MAAhBA,EAAOjlB,OAAiB,EAAK48I,aAAa33H,EAAOjlB,MAAOA,GAEnE,MAAOyzB,GAKH,OAAO,KAMf,OAHIm5V,GACAnuX,KAAKuzK,gBAAgBtzI,OAAOkuV,GAEzBA,I,6BAGX,WAAe,WACXnuX,KAAK+nB,YAAc,IAAI,IAA2B/nB,KAAKgoB,SAClDgsT,cAAch0U,KAAKgtX,4BACnBj5M,0BACAC,0BAA0Bh0K,KAAKwtX,SAAW,MAAQ,OAClD9oN,iBACA0pN,wBAAwB,CAAC,aAC9BpuX,KAAK+nB,YAAYkE,OAAOjoB,KAAK,YAAUhE,KAAKskS,WAAWpgS,UAAU,WACzD,EAAKwmB,aAGA,EAAK4oJ,UAAY,EAAKvrJ,YAAYqE,YACnC,EAAKrE,YAAYqE,WAAWgB,wBAIhC,EAAK0B,QACL,EAAKwW,WAGbtlC,KAAK+nB,YAAYhY,OAAO/L,KAAK,YAAUhE,KAAKskS,WAAWpgS,UAAU,WACzD,EAAKooX,YAAc,EAAKjkW,MACxB,EAAKgmW,sBAAsB,EAAKtmW,YAAY6F,iBAAmB,GAEzD,EAAK0+V,YAAe,EAAKh5M,WAAY,EAAKvrJ,YAAYqE,YAC5D,EAAKrE,YAAYqE,WAAWgB,4B,2BAKxC,WAAa,WACHkhW,EAAqB,YAAMtuX,KAAKgoB,QAAQ/iB,QAASjF,KAAKskS,UAC5DtkS,KAAK4sX,uBAAuB5oX,KAAK,YAAUsqX,IAAqBpqX,UAAU,SAAAokB,GACtE,EAAKimW,UAAUjmW,EAAM/B,OAAQ+B,EAAMkpJ,aAC/BlpJ,EAAMkpJ,cAAgB,EAAK8B,UAAY,EAAKg5M,aAC5C,EAAKhnV,QACL,EAAKxW,WAKb,IAAK,WAAL,cAAS9uB,KAAKgoB,QAAQve,IAAI,SAAA+c,GAAM,OAAIA,EAAOu0I,kBACtC/2J,KAAK,YAAUsqX,IACfpqX,UAAU,WACX,EAAK4I,mBAAmBkK,eACxB,EAAK48J,aAAa/vK,W,uBAI1B,SAAU2iB,EAAQgrJ,GACd,IAAMg9M,EAAcxuX,KAAKuzK,gBAAgBvzI,WAAWxZ,GAChC,MAAhBA,EAAOjlB,OAAkBvB,KAAKo/B,WAQ1BovV,IAAgBhoW,EAAOyI,WACvBzI,EAAOyI,SAAWjvB,KAAKuzK,gBAAgBtzI,OAAOzZ,GAC1CxmB,KAAKuzK,gBAAgBrkJ,SAAS1I,IAElCgrJ,GACAxxK,KAAK+nB,YAAYkJ,cAAczK,GAE/BxmB,KAAKszK,WACLtzK,KAAKi1K,cACDzD,GAKAxxK,KAAK8uB,WArBbtI,EAAO0I,WACPlvB,KAAKuzK,gBAAgB7iK,QACH,MAAd1Q,KAAKuB,OACLvB,KAAK81K,kBAAkBtvJ,EAAOjlB,QAsBlCitX,IAAgBxuX,KAAKuzK,gBAAgBvzI,WAAWxZ,IAChDxmB,KAAK81K,oBAET91K,KAAK4zK,aAAa/vK,S,yBAGtB,WAAW,WACP,GAAI7D,KAAKszK,SAAU,CACf,IAAMtrJ,EAAUhoB,KAAKgoB,QAAQE,UAC7BloB,KAAKuzK,gBAAgB13J,KAAK,SAACE,EAAGC,GAC1B,OAAO,EAAKyyW,eAAiB,EAAKA,eAAe1yW,EAAGC,EAAGgM,GACnDA,EAAQ/e,QAAQ8S,GAAKiM,EAAQ/e,QAAQ+S,KAE7Chc,KAAK4zK,aAAa/vK,U,+BAI1B,SAAkBqjK,GACd,IAAIkO,EAEAA,EADAp1K,KAAKszK,SACStzK,KAAKivB,SAASxlB,IAAI,SAAA+c,GAAM,OAAIA,EAAOjlB,QAGnCvB,KAAKivB,SAAWjvB,KAAKivB,SAAS1tB,MAAQ2lK,EAExDlnK,KAAKkgH,OAASk1D,EACdp1K,KAAKqzK,YAAYnxJ,KAAKkzJ,GACtBp1K,KAAK2qB,UAAUyqJ,GACfp1K,KAAK2wK,gBAAgBzuJ,KAAKliB,KAAK0uX,gBAAgBt5M,IAC/Cp1K,KAAK8M,mBAAmBkK,iB,qCAM5B,WACQhX,KAAK+nB,cACD/nB,KAAKwzK,MACLxzK,KAAK+nB,YAAYiJ,qBAGjBhxB,KAAK+nB,YAAYkJ,cAAcjxB,KAAKuzK,gBAAgBtkJ,SAAS,O,sBAKzE,WACI,IAAItkB,EACJ,OAAQ3K,KAAKssX,aAAetsX,KAAKgtB,WAAqC,QAAvBriB,EAAK3K,KAAKgoB,eAA4B,IAAPrd,OAAgB,EAASA,EAAGxG,QAAU,I,mBAGxH,SAAM6jB,GACFhoB,KAAK+M,YAAYnK,cAAcksB,MAAM9G,K,qCAGzC,WACI,IAAIrd,EACJ,GAAI3K,KAAKmmB,UACL,OAAO,KAEX,IAAMoC,EAA2C,QAAhC5d,EAAK3K,KAAKmsX,wBAAqC,IAAPxhX,OAAgB,EAASA,EAAG8kB,aAErF,OAAOzvB,KAAKwoB,gBADaD,EAAUA,EAAU,IAAM,IACJvoB,KAAKwoB,eAAiBD,I,sCAGzE,WACI,OAAIvoB,KAAK0qB,WAAa1qB,KAAK+nB,aAAe/nB,KAAK+nB,YAAYqE,WAChDpsB,KAAK+nB,YAAYqE,WAAWpG,GAEhC,O,uCAGX,WACI,IAAIrb,EACJ,GAAI3K,KAAKmmB,UACL,OAAO,KAEX,IAAMoC,EAA2C,QAAhC5d,EAAK3K,KAAKmsX,wBAAqC,IAAPxhX,OAAgB,EAASA,EAAG8kB,aACjFluB,GAASgnB,EAAUA,EAAU,IAAM,IAAMvoB,KAAKwsX,SAIlD,OAHIxsX,KAAKwoB,iBACLjnB,GAAS,IAAMvB,KAAKwoB,gBAEjBjnB,I,iCAGX,SAAoBguH,GAChBvvH,KAAK4lV,aAAa1jU,KAAKqtG,K,+BAM3B,SAAkB2vB,GACdl/I,KAAKw0K,iBAAmBt1B,EAAIlvG,KAAK,O,8BAMrC,WACIhwC,KAAK8uB,QACL9uB,KAAKqrF,S,4BAMT,WACI,OAAOrrF,KAAKssX,aAAetsX,KAAKwzK,OAAUxzK,KAAK2yU,YAAc3yU,KAAK0oJ,iB,CAloB7CsjO,G,OAqoB7BE,EAAe3rX,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK0rX,GAAgB,KAAyB,KAAuB,KAAyB,KAA2B,KAAyB,KAAgB,KAAyB,KAA2B,KAAyB,KAAoB,KAAyB,IAAuB,GAAI,KAAyB,IAAe,GAAI,KAAyB,IAA2B,GAAI,KAAyB,IAAgB,GAAI,KAAyB,IAAkB,IAAK,KAAyB,YAAa,KAAyBP,GAA6B,KAAyB,KAAuB,KAAyBC,EAAmB,KACvvBM,EAAezrX,UAAO,KAAyB,CAAEC,KAAMwrX,EAAgB5zW,UAAW,SAA8B3W,EAAIC,GAK5G,IAAIE,EALwH,EAALH,IACvH,KAAmBlC,EAAK,GACxB,KAAmBC,EAAK,GACxB,KAAmB,IAAqB,IACjC,EAALiC,IAEF,KAAsBG,EAAK,UAA0BF,EAAI28D,QAAUz8D,EAAGE,OACtE,KAAsBF,EAAK,UAA0BF,EAAIymB,MAAQvmB,EAAGE,OACpE,KAAsBF,EAAK,UAA0BF,EAAIosX,WAAalsX,EAAGE,SACxEG,OAAQ,CAAEgkB,UAAW,CAAC,aAAc,aAAcH,GAAI,KAAM2kI,YAAa,cAAe13C,SAAU,WAAYqgE,SAAU,WAAYq5M,uBAAwB,yBAA0BnuO,YAAa,cAAej9I,MAAO,QAASwrX,0BAA2B,4BAA6B/8V,WAAY,aAAcxH,eAAgB,CAAC,kBAAmB,kBAAmB6tJ,kBAAmB,oBAAqBo4M,eAAgB,kBAAoBtsW,QAAS,CAAEyjU,aAAc,eAAgBinC,cAAe,SAAUC,cAAe,SAAUn8M,gBAAiB,kBAAmB0C,YAAa,eAAiB/wK,SAAU,CAAC,KAAmC,Q,uBAsHroBqsX,E,YACF,+CACI,WAASr1W,YAEJs1W,WAAa,EAElB,EAAKtD,iBAAmB,EAExB,EAAKD,iBAAmB,MAMxB,EAAKwD,SAAW,EAChB,EAAKC,WAAa,CACd,CACIv+V,QAAS,QACTC,QAAS,MACTC,SAAU,QACVC,SAAU,OAEd,CACIH,QAAS,QACTC,QAAS,SACTC,SAAU,QACVC,SAAU,WAzBtB,E,4EAoCA,SAAwBq+V,EAAeC,EAAcC,GACjD,IAAM1mM,EAAavoL,KAAKkvX,iBAQxB,OAAO3wW,KAAKG,IAAIH,KAAKukC,IAAI,EAPSylI,EAAawmM,EAMWC,EALjCzmM,EAAa,GAMc0mM,K,sBAExD,WAAQ,WACJ,2BACAjvX,KAAKsN,eAAeyC,SAAS/L,KAAK,YAAUhE,KAAKskS,WAAWpgS,UAAU,WAC9D,EAAKwmB,YACL,EAAKykW,aAAe,EAAK5wT,QAAQ37D,cAAc6H,wBAC/C,EAAKqC,mBAAmBkK,oB,kBAIpC,WAAI,WACA,6BACI,uBACAhX,KAAKmvX,aAAenvX,KAAKu+D,QAAQ37D,cAAc6H,wBAG/CzK,KAAKsrX,iBACD97U,SAASgkC,iBAAiBxzE,KAAKu+D,QAAQ37D,eAAeygN,UAAY,KACtErjN,KAAKovX,4BAELpvX,KAAKsD,QAAQoB,SAASV,KAAK,YAAK,IAAIE,UAAU,WACtC,EAAKonX,kBAAoB,EAAK0C,WAAW7+V,YACzC,EAAK6+V,WAAW7+V,WAAWtC,iBAC3B,EAAKmhW,WAAW7+V,WAAWtC,eAAethB,MAAM83M,SAAhD,UAA8D,EAAKioK,iBAAnE,Y,mCAMhB,SAAsB3hX,GAClB,IAAMynB,EAAa,YAA8BznB,EAAO3J,KAAKgoB,QAAShoB,KAAK8oB,cACrEy/J,EAAavoL,KAAKkvX,iBACxBlvX,KAAKqoB,MAAMzlB,cAAcwlB,UAAY,aAA0Bze,EAAQynB,GAAcm3J,EAAYA,EAAYvoL,KAAKqoB,MAAMzlB,cAAcwlB,UAAWsjW,K,iCAErJ,WACI1rX,KAAKqvX,2BACLrvX,KAAKqoB,MAAMzlB,cAAcwlB,UAAYpoB,KAAK4uX,a,iCAE9C,SAAoBr/P,GACZvvH,KAAK0qB,UACL1qB,KAAK4uX,WAAa,GAGlB5uX,KAAKguX,WAAW5sL,QAAU,EAC1BphM,KAAK8M,mBAAmBkK,gBAE5B,mCAA0Bu4G,M,6BAE9B,SAAgBhuH,GACZ,OAAO,IAAIuqX,EAAgB9rX,KAAMuB,K,sCASrC,WACI,IAKI6/L,EALEkuL,EAActvX,KAAKguX,WAAW7+V,WAAWtC,eAAepiB,wBACxD8kX,EAAevvX,KAAKsN,eAAeqoJ,kBACnCzsJ,EAAQlJ,KAAKwtX,SACbgC,EAAexvX,KAAKszK,SAAWm8M,GACjCC,GAGJ,GAAI1vX,KAAKszK,SACL8tB,EA17B4BsuL,QA47B3B,GAAI1vX,KAAK2sX,uBACVvrL,EAv9BmB,OAy9BlB,CACD,IAAInyK,EAAWjvB,KAAKuzK,gBAAgBtkJ,SAAS,IAAMjvB,KAAKgoB,QAAQhmB,MAChEo/L,EAAUnyK,GAAYA,EAAS4rH,MAr9BL60O,GANP,GA89BlBxmX,IACDk4L,IAAY,GAGhB,IAAM5wC,EAAe,GAAK8+N,EAAYrjX,KAAOm1L,GAAWl4L,EAAQsmX,EAAe,IACzE/+N,EAAgB6+N,EAAYpjX,MAAQk1L,EAAUmuL,EAAa7lX,OAC1DR,EAAQ,EAAIsmX,GAEfh/N,EAAe,EACf4wC,GAAW5wC,EAr8Be,EAu8BrBC,EAAgB,IACrB2wC,GAAW3wC,EAx8Be,GA68B9BzwJ,KAAKguX,WAAW5sL,QAAU7iL,KAAK06B,MAAMmoJ,GACrCphM,KAAKguX,WAAW7+V,WAAWzD,mB,sCAO/B,SAAyBqjW,EAAeC,EAAcC,GAClD,IAGIU,EAHEpnM,EAAavoL,KAAKkvX,iBAClBU,GAA0BrnM,EAAavoL,KAAKmvX,aAAa3kX,QAAU,EACnEqlX,EAAsBtxW,KAAKs7B,MAAM6xU,EAA0BnjM,GAGjE,OAAIvoL,KAAK2sX,uBACE,GAGPgD,EADoB,IAApB3vX,KAAK4uX,WACsBG,EAAgBxmM,EAEtCvoL,KAAK4uX,aAAeK,GAEIF,GADD/uX,KAAK8vX,gBAAkBD,IASDtnM,GAL1BA,GAAcvoL,KAAK8vX,gBAAkBvnM,EAAamjM,GAA2BnjM,GAW1EymM,EAAezmM,EAAa,EAKpDhqK,KAAK06B,OAAkC,EAA5B02U,EAAgCC,M,yCAQtD,SAA4BX,GACxB,IAAM1mM,EAAavoL,KAAKkvX,iBAClBK,EAAevvX,KAAKsN,eAAeqoJ,kBACnCo6N,EAAoB/vX,KAAKmvX,aAAapjX,IAjgCd,EAkgCxBikX,EAAuBT,EAAa/kX,OAASxK,KAAKmvX,aAAanjX,OAlgCvC,EAmgCxBikX,EAAiB1xW,KAAKqiC,IAAI5gD,KAAK6uX,UAE/BqB,EADmB3xW,KAAKG,IAAI1e,KAAK8vX,gBAAkBvnM,EAAYmjM,GACxBuE,EAAiBjwX,KAAKmvX,aAAa3kX,OAC5E0lX,EAAoBF,EACpBhwX,KAAKmwX,eAAeD,EAAmBF,GAElCC,EAAiBF,EACtB/vX,KAAKowX,iBAAiBH,EAAgBF,EAAmBd,GAGzDjvX,KAAKqrX,iBAAmBrrX,KAAKqwX,4B,4BAIrC,SAAeH,EAAmBF,GAE9B,IAAMM,EAAwB/xW,KAAK06B,MAAMi3U,EAAoBF,GAG7DhwX,KAAK4uX,YAAc0B,EACnBtwX,KAAK6uX,UAAYyB,EACjBtwX,KAAKqrX,iBAAmBrrX,KAAKqwX,0BAIzBrwX,KAAK4uX,YAAc,IACnB5uX,KAAK4uX,WAAa,EAClB5uX,KAAK6uX,SAAW,EAChB7uX,KAAKqrX,iBAAL,oB,8BAIR,SAAiB4E,EAAgBF,EAAmBd,GAEhD,IAAMsB,EAAwBhyW,KAAK06B,MAAMg3U,EAAiBF,GAS1D,GANA/vX,KAAK4uX,YAAc2B,EACnBvwX,KAAK6uX,UAAY0B,EACjBvwX,KAAKqrX,iBAAmBrrX,KAAKqwX,0BAIzBrwX,KAAK4uX,YAAcK,EAInB,OAHAjvX,KAAK4uX,WAAaK,EAClBjvX,KAAK6uX,SAAW,OAChB7uX,KAAKqrX,iBAAL,iB,uCAKR,WACI,IAOImF,EAPEjoM,EAAavoL,KAAKkvX,iBAClBh3W,EAAQlY,KAAK8vX,gBACbvqL,EAAchnL,KAAKG,IAAIxG,EAAQqwK,EAAYmjM,GAG3CuD,EAFwB/2W,EAAQqwK,EAEIgd,EAItCirL,EADAxwX,KAAKwzK,MACkB,EAInBj1J,KAAKukC,IAAI9iD,KAAKgoB,QAAQE,UAAUjf,QAAQjJ,KAAKuzK,gBAAgBtkJ,SAAS,IAAK,GAEnFuhW,GAAwB,YAA8BA,EAAsBxwX,KAAKgoB,QAAShoB,KAAK8oB,cAG/F,IAAMkmW,EAAezpL,EAAc,EACnCvlM,KAAK4uX,WAAa5uX,KAAKywX,wBAAwBD,EAAsBxB,EAAcC,GACnFjvX,KAAK6uX,SAAW7uX,KAAK0wX,yBAAyBF,EAAsBxB,EAAcC,GAClFjvX,KAAK2wX,4BAA4B1B,K,qCAGrC,WACI,IAAM1mM,EAAavoL,KAAKkvX,iBAClBU,GAA0BrnM,EAAavoL,KAAKmvX,aAAa3kX,QAAU,EACnEgmB,EAAUjS,KAAKqiC,IAAI5gD,KAAK6uX,UAAYe,EAAyBrnM,EAAa,EAChF,oBAAc/3J,EAAd,Y,4BAGJ,WACI,OA7mCsB,EA6mCfxwB,KAAKsrX,mB,2BAGhB,WACI,OAAOtrX,KAAKgoB,QAAQ7jB,OAASnE,KAAK8oB,aAAa3kB,W,CA3R/B+nX,I,OA8RxByC,EAAUpuX,UAAO,SAA2BC,GAAK,OAAOowX,GAAuBpwX,GAAKmuX,IACpFA,EAAUxoX,UAAO,KAAyB,CAAEzF,KAAMiuX,EAAWhuX,UAAW,CAAC,CAAC,eAAgBe,eAAgB,SAAkCC,EAAIC,EAAKC,GAK7I,IAAIC,EAL8J,EAALH,IAC7J,KAAsBE,EAAUoqX,GAAoB,GACpD,KAAsBpqX,EAAU,IAAW,GAC3C,KAAsBA,EAAU,IAAc,IACvC,EAALF,IAEF,KAAsBG,EAAK,UAA0BF,EAAIqpX,cAAgBnpX,EAAGE,OAC5E,KAAsBF,EAAK,UAA0BF,EAAIomB,QAAUlmB,GACnE,KAAsBA,EAAK,UAA0BF,EAAIknB,aAAehnB,KACvEiB,UAAW,CAAC,OAAQ,WAAY,oBAAqB,OAAQ,gBAAiB,OAAQ,EAAG,cAAewV,SAAU,GAAIC,aAAc,SAAgC7W,EAAIC,GAAgB,EAALD,GACpL,KAAkB,UAAW,SAA8CmwB,GAAU,OAAOlwB,EAAIowB,eAAeF,IAA/G,CAA2H,QAAS,WAAgD,OAAOlwB,EAAI6uK,YAA/L,CAA8M,OAAQ,WAA+C,OAAO7uK,EAAI8uK,YACzQ,EAAL/uK,IACF,KAAmB,KAAMC,EAAIokB,GAA7B,CAAiC,WAAYpkB,EAAIu0C,SAAjD,CAA2D,gBAAiBv0C,EAAI8oB,UAAY9oB,EAAIokB,GAAK,SAAW,KAAhH,CAAsH,gBAAiBpkB,EAAI8oB,UAA3I,CAAsJ,aAAc9oB,EAAIukB,WAAa,KAArL,CAA2L,gBAAiBvkB,EAAIqxG,SAAShhF,WAAzN,CAAqO,gBAAiBrwB,EAAIorB,SAASiF,WAAnQ,CAA+Q,eAAgBrwB,EAAIw0K,WAAnS,CAA+S,mBAAoBx0K,EAAI4yK,kBAAoB,KAA3V,CAAiW,wBAAyB5yK,EAAIykV,4BAC9X,KAAmB,sBAAuBzkV,EAAIorB,SAA9C,CAAwD,qBAAsBprB,EAAIw0K,WAAlF,CAA8F,sBAAuBx0K,EAAIqxG,SAAzH,CAAmI,mBAAoBrxG,EAAI4xK,MAA3J,CAAkK,sBAAuB5xK,EAAI0xK,YAC5LnxK,OAAQ,CAAE6qB,SAAU,WAAYjE,cAAe,gBAAiBotB,SAAU,YAAcz9B,SAAU,CAAC,aAAcpW,SAAU,CAAC,KAA0B,CACnJ,CAAEC,QAAS,IAAqBC,YAAamsX,GAC7C,CAAEpsX,QAAS,IAA6BC,YAAamsX,KACrD,MAAoC91W,mBAAoB04F,EAAKnrG,MAAO,EAAGC,KAAM,GAAIC,OAAQ,CAAC,CAAC,qBAAsB,GAAI,EAAG,qBAAsB,EAAG,SAAU,CAAC,SAAU,mBAAoB,UAAW,IAAK,CAAC,EAAG,mBAAoB,EAAG,YAAa,CAAC,QAAS,6CAA8C,EAAG,gBAAiB,CAAC,QAAS,wBAAyB,EAAG,WAAY,EAAG,gBAAiB,CAAC,EAAG,4BAA6B,CAAC,EAAG,oBAAqB,CAAC,wBAAyB,GAAI,kCAAmC,GAAI,iCAAkC,GAAI,mCAAoC,mCAAoC,EAAG,gCAAiC,oCAAqC,4BAA6B,0BAA2B,+BAAgC,8BAA+B,6BAA8B,gBAAiB,SAAU,UAAW,CAAC,EAAG,yBAA0B,uBAAwB,CAAC,EAAG,wBAAyB,EAAG,YAAa,CAAC,QAAS,sBAAuB,EAAG,mBAAoB,CAAC,EAAG,gBAAiB,CAAC,EAAG,uBAAwB,CAAC,EAAG,yBAA0B,CAAC,OAAQ,UAAW,WAAY,KAAM,EAAG,UAAW,WAAY,CAAC,QAAS,KAAMhG,SAAU,SAA4BqB,EAAIC,GAc/tC,GAd+uC,EAALD,IACxuC,KAAuB2vG,GACvB,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,QAAS,WAAqD,OAAO1vG,EAAI6hK,WAC3F,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGmnN,EAA2B,EAAG,EAAG,OAAQ,GAC9D,KAAkB,EAAGI,EAA2B,EAAG,EAAG,OAAQ,GAC9D,OACA,KAAsB,EAAG,MAAO,GAChC,KAAiB,EAAG,MAAO,GAC3B,OACA,OACA,KAAkB,EAAGE,EAAkC,EAAG,GAAI,cAAe,GAC7E,KAAkB,gBAAiB,WAAqE,OAAOtpX,EAAI0jC,SAAnH,CAA+H,SAAU,WAA8D,OAAO1jC,EAAIivX,eAAlN,CAAoO,SAAU,WAA8D,OAAOjvX,EAAI0jC,WAChT,EAAL3jC,EAAQ,CACV,IAAM0xG,EAAM,KAAmB,GAC/B,KAAmB,YAAazxG,EAAI8oB,UAAY9oB,EAAIokB,GAAK,SAAW,MACpE,KAAiB,GACjB,KAAkB,WAAYpkB,EAAI4xK,OAClC,KAAmB,KAAM5xK,EAAI4qX,UAC7B,KAAiB,GACjB,KAAkB,gBAAgB,GAClC,KAAiB,GACjB,KAAkB,gBAAgB,GAClC,KAAiB,GACjB,KAAkB,gCAAiC5qX,EAAI6qX,mBAAvD,CAA2E,oCAAqC7qX,EAAIspB,gBAApH,CAAqI,4BAA6BmoF,EAAlK,CAAuK,0BAA2BzxG,EAAI8oB,UAAtM,CAAiN,+BAAgC9oB,EAAIktX,WAArP,CAAiQ,8BAAmD,MAApBltX,EAAIutX,aAAuB,KAAOvtX,EAAIutX,aAAazlX,MAAnV,CAA0V,6BAA8B9H,EAAIitX,YAC3XtoX,WAAY,CAAC,IAAyB,IAAiB,IAAqB,IAA4B,IAAwB,KAAiBuS,OAAQ,CAAC,stEAAytEtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CACr5E4nV,EAAoBC,mBACpBD,EAAoBE,iBACnBziW,gBAAiB,I,KAMxB4nW,GAAuC,KAA6BjC,I,kBAiEpEmC,E,sDAENA,EAAgBvwX,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKswX,IAC9EA,EAAgB53W,UAAO,KAAwB,CAAExY,KAAMowX,IACvDA,EAAgB33W,UAAO,KAAwB,CAAEgZ,UAAW,CAAC05V,GAAsCzyW,QAAS,CAAC,CACjG,IACA,IACA,IACA,KACD,IACH,IACA,IACA,O,wCC97CR,wEAaA,aAIC,WAAoB+d,EAA0BC,GAA1B,KAAAD,OAA0B,KAAAC,gB,OAE9C,YAAA25V,gBAAA,SAAgB5kD,GACf,IAAMriP,GAAS,IAAI,KAAaz1E,IAAI,WAAY83T,GAChD,OAAOnsU,KAAKm3B,KAAKjlB,IAA4BlS,KAAKo3B,cAAcgB,OAAOC,OAAS,2BAA4B,CAC3GyxD,OAAQA,KAIV,YAAAknS,oBAAA,SAAoB7kD,EAAkB6C,GACrC,IAAMllP,GAAS,IAAI,KAAaz1E,IAAI,WAAY83T,GAAU93T,IAAI,YAAa26T,GAC3E,OAAOhvU,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,+BACnC,CAAEyxD,OAAQA,KAIZ,YAAA4kP,wBAAA,SAAwB9yS,GACvB,OAAO57B,KAAKm3B,KAAKgB,KAChBn4B,KAAKo3B,cAAcgB,OAAOC,OAAS,kCACnCuD,IAGF,YAAAq1V,cAAA,SAAcr1V,GACb,OAAO57B,KAAKm3B,KAAKgB,KAAwB,qCAAsCyD,IAEhF,YAAAs1V,cAAA,SAAct1V,GACb,OAAO57B,KAAKm3B,KAAKgB,KAAwB,mCAAoCyD,IAG9E,YAAAu1V,sBAAA,SAAsBx3V,GACrB,OAAO35B,KAAKm3B,KAAKjlB,IACblS,KAAKo3B,cAAcgB,OAAOC,OAAM,qDAAqDsB,IAG1F,YAAAg0S,aAAA,SAAavzP,GACZ,IAAM0P,GAAS,IAAI,KAAaz1E,IAAI,UAAW+lE,GACzCg3S,EAAQpxX,KAAKm3B,KAAKjlB,IAAuBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,+BAAgC,CACjHyxD,OAAQA,IAOT,OALAsnS,EAAMltX,UAAU,SAAA+0B,GACf8R,QAAQ0wC,IAAIxiD,GACZrB,aAAaW,QAAQ,QAASU,EAAEW,SAAS3H,YACzC2F,aAAaW,QAAQ,wBAAyBiB,KAAKC,UAAUR,MAEvDm4V,GAER,YAAAC,0BAAA,SAA0Bl9U,GACzB,IAAM21C,GAAS,IAAI,KAAaz1E,IAAI,MAAO8/B,GAC3C,OAAOn0C,KAAKm3B,KAAKjlB,IAChBlS,KAAKo3B,cAAcgB,OAAOC,OAAS,qCACnC,CACCyxD,OAAQA,K,sCArDCwnS,GAAkB,sB,yBAAlBA,EAAkB,QAAlBA,EAAkB,qBAFlB,S,EADb,I,0YCgBA,SAASC,EAA8B5vX,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC1D,IAAMmwU,EAAM,OACZ,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAAqI,OAAlE,KAAqBA,GAAqB,OAAsC/uQ,WAC9K,KAAc,GACd,OACA,OACF,GAAS,EAALphE,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAiB,GACjB,KAAyBA,EAAOnW,KAAKizD,SAEzC,SAASyuT,EAA4C7vX,EAAIC,IACzD,IAAM6vX,EAAqB,IAAI,IAAe,mBAIxCC,E,YACF,iCAEI1xX,KAAK2xX,WAAa,YAKlB3xX,KAAK4xX,oBAAsB,GAE3B5xX,KAAKw9C,SAAW,EAEhBx9C,KAAK8P,KAAO,KAEZ9P,KAAKoxU,mBAAqB,SAE1BpxU,KAAKmxU,iBAAmB,WAY1B0gD,EAActzW,KAAKq7L,IAAI,EAAG,IAAM,EAIhCk4K,E,8BACF,WAAYC,EAAmBtmW,GAAW,+BACtCzrB,KAAKyrB,YAAcA,EAEnBzrB,KAAKgyX,gBAAkB,IAAI,IAE3BhyX,KAAK+jC,aAAe,IAAI,IAExB/jC,KAAKiyX,UAAY,IAAI,IAErBjyX,KAAKkyX,oBAAqB,EAC1BlyX,KAAK+xX,kBAAoBA,EAEzB/xX,KAAK0yF,WAAWxuF,UAAU,kBAAM,EAAKsxH,YACrCu8P,EAAkBI,QAAQjuX,UAAU,kBAAM,EAAKkuX,oB,sBAGnD,WACSpyX,KAAKgyX,gBAAgBxqW,QACtBxnB,KAAK+xX,kBAAkB9kO,OAE3B/oH,aAAalkC,KAAKqyX,sB,+BAGtB,WACSryX,KAAKiyX,UAAUzqW,SAChBxnB,KAAKkyX,oBAAqB,EAC1BlyX,KAAKiyX,UAAUpuX,OACf7D,KAAKiyX,UAAUnuX,YAEnBogC,aAAalkC,KAAKqyX,sB,6BAOtB,WACIryX,KAAKsyX,sB,2BAGT,SAAc90U,GAAQ,WAGlBx9C,KAAKqyX,mBAAqBztV,WAAW,kBAAM,EAAK4wF,WAAWj3G,KAAKG,IAAI8+B,EAAUq0U,M,mBAGlF,WACS7xX,KAAK+jC,aAAavc,SACnBxnB,KAAK+jC,aAAalgC,OAClB7D,KAAK+jC,aAAajgC,c,4BAI1B,WACI9D,KAAKyrB,YAAYgD,UACZzuB,KAAKiyX,UAAUzqW,QAChBxnB,KAAKiyX,UAAUnuX,WAEnB9D,KAAKgyX,gBAAgBnuX,KAAK,CAAE0uX,kBAAmBvyX,KAAKkyX,qBACpDlyX,KAAKgyX,gBAAgBluX,WACrB9D,KAAKkyX,oBAAqB,I,4BAG9B,WACI,OAAOlyX,KAAKgyX,kB,yBAGhB,WACI,OAAOhyX,KAAK+xX,kBAAkBS,W,sBAGlC,WACI,OAAOxyX,KAAKiyX,c,oBAedQ,E,8BACF,WAAYC,EAAa5iX,GAAI,oBACzB9P,KAAK0yX,YAAcA,EACnB1yX,KAAK8P,KAAOA,G,qBAGhB,WACI9P,KAAK0yX,YAAYJ,sB,qBAGrB,WACI,QAAStyX,KAAK8P,KAAKizD,W,UAG3B0vT,EAAelyX,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKiyX,GAAgB,KAAyBX,GAAiB,KAAyBL,KAC/JgB,EAAetsX,UAAO,KAAyB,CAAEzF,KAAM+xX,EAAgB9xX,UAAW,CAAC,CAAC,qBAAsBoC,UAAW,CAAC,EAAG,uBAAwBqD,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,6BAA8B,EAAG,QAAS,CAAC,EAAG,8BAA+B,CAAC,aAAc,GAAI,EAAG,UAAWhG,SAAU,SAAiCqB,EAAIC,GAAgB,EAALD,IACvV,KAAsB,EAAG,QACzB,KAAc,GACd,OACA,KAAkB,EAAG4vX,EAA+B,EAAG,EAAG,MAAO,IAC1D,EAAL5vX,IACF,KAAiB,GACjB,KAAyBC,EAAIkO,KAAKkqB,SAClC,KAAiB,GACjB,KAAkB,OAAQp4B,EAAI+wX,aAC7BpsX,WAAY,CAAC,IAAa,KAAmBuS,OAAQ,CAAC,+TAAgUtS,cAAe,EAAGwiB,gBAAiB,I,KAiC5Z4pW,EAAwB,CAE1BC,cAAe,YAAQ,QAAS,CAC5B,YAAM,eAAgB,YAAM,CACxBlxV,UAAW,aACXD,QAAS,KAEb,YAAM,UAAW,YAAM,CACnBC,UAAW,WACXD,QAAS,KAEb,YAAW,eAAgB,YAAQ,qCACnC,YAAW,yBAA0B,YAAQ,oCAAqC,YAAM,CACpFA,QAAS,S,iBAgBfoxV,E,YACF,WAAYxvX,EAASyJ,EAAaD,EAAoBK,EAEtD4lX,GAAc,M,IAAA,2B,EACV,K,EAAA,E,kBAAA,E,sGACKzvX,QAAUA,EACf,EAAKyJ,YAAcA,EACnB,EAAKD,mBAAqBA,EAC1B,EAAKK,UAAYA,EACjB,EAAK4lX,eAAiBA,EAEtB,EAAKC,eAAiB,IAEtB,EAAKxvX,YAAa,EAElB,EAAKyvX,YAAc,IAAI,IAEvB,EAAKd,QAAU,IAAI,IAEnB,EAAKK,SAAW,IAAI,IAEpB,EAAKU,gBAAkB,OAMvB,EAAKzzW,gBAAkB,SAACE,GAGpB,OAFA,EAAKwzW,qBACL,EAAKC,wBACE,EAAKjxV,cAAc1iB,gBAAgBE,IAQ1C,EAAK4iH,MAJyB,cAA9BwwP,EAAepB,YAA+BoB,EAAenB,oBAG1B,QAA9BmB,EAAepB,WACP,MAGA,SANA,YAUb,EAAKxkX,UAAUkmX,UACI,WAAf,EAAK9wP,QACL,EAAK2mE,MAAQ,UAEE,cAAf,EAAK3mE,QACL,EAAK2mE,MAAQ,UA/CX,E,0EAoDd,SAAsBvpL,GAGlB,OAFA3f,KAAKmzX,qBACLnzX,KAAKozX,wBACEpzX,KAAKmiC,cAAcviB,sBAAsBD,K,kCAGpD,SAAqBA,GAGjB,OAFA3f,KAAKmzX,qBACLnzX,KAAKozX,wBACEpzX,KAAKmiC,cAActiB,qBAAqBF,K,4BAGnD,SAAe2I,GACX,IAAmB6a,EAAY7a,EAAZ6a,QAInB,IAHiB,SAAZA,GAAoC,SADV7a,EAAvBq6I,WACwD,WAAZx/H,IAChDnjC,KAAKszX,gBAEO,YAAZnwV,EAAuB,CAGvB,IAAMowV,EAAUvzX,KAAKwyX,SACrBxyX,KAAKsD,QAAQgpC,IAAI,WACbinV,EAAQ1vX,OACR0vX,EAAQzvX,gB,mBAKpB,WACS9D,KAAKwD,aACNxD,KAAKkzX,gBAAkB,UACvBlzX,KAAK8M,mBAAmB0U,gBACxBxhB,KAAKwzX,2B,kBAIb,WAYI,OARAxzX,KAAKkzX,gBAAkB,SAIvBlzX,KAAK+M,YAAYnK,cAAciM,aAAa,WAAY,IAGxDq1B,aAAalkC,KAAKyzX,oBACXzzX,KAAKmyX,U,yBAGhB,WACInyX,KAAKwD,YAAa,EAClBxD,KAAKszX,kB,2BAMT,WAAa,WACTtzX,KAAKsD,QAAQ6yS,iBAAiBnyS,KAAK,YAAK,IAAIE,UAAU,WAClD,EAAKiuX,QAAQtuX,OACb,EAAKsuX,QAAQruX,e,mCAIrB,WACI,IAAMuH,EAAUrL,KAAK+M,YAAYnK,cAC3B8wX,EAAe1zX,KAAK+yX,eAAe/iW,WACrC0jW,IACInpX,MAAMyL,QAAQ09W,GAEdA,EAAargX,QAAQ,SAAAsgX,GAAQ,OAAItoX,EAAQ1I,UAAUE,IAAI8wX,KAGvDtoX,EAAQ1I,UAAUE,IAAI6wX,IAGiB,WAA3C1zX,KAAK+yX,eAAe3hD,oBACpB/lU,EAAQ1I,UAAUE,IAAI,wBAEmB,QAAzC7C,KAAK+yX,eAAe5hD,kBACpB9lU,EAAQ1I,UAAUE,IAAI,uB,gCAI9B,WACQ7C,KAAKmiC,cAAcliB,gB,mCAQ3B,WAAqB,WACZjgB,KAAKyzX,oBACNzzX,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,EAAKooW,mBAAqB7uV,WAAW,WACjC,IAAMgvV,EAAe,EAAK7mX,YAAYnK,cAAcwI,cAAc,iBAC5DyoX,EAAc,EAAK9mX,YAAYnK,cAAcwI,cAAc,eACjE,GAAIwoX,GAAgBC,EAAa,CAG7B,IAAIvoQ,EAAiB,KACjB,EAAKn+G,UAAU8K,WACf0yB,SAASlgB,yBAAyB4qD,aAClCu+S,EAAahnW,SAAS+d,SAASlgB,iBAC/B6gG,EAAiB3gF,SAASlgB,eAE9BmpW,EAAanrV,gBAAgB,eAC7BorV,EAAY/7W,YAAY87W,GACxBtoQ,SAAgEA,EAAex8F,QAC/E,EAAKmkW,YAAYpvX,OACjB,EAAKovX,YAAYnvX,aAEtB,EAAKkvX,sB,CA3KW,K,OAgLnCF,EAAqBvyX,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKsyX,GAAsB,KAAyB,KAAgB,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAkB,KAAyBpB,KAC5ToB,EAAqB3sX,UAAO,KAAyB,CAAEzF,KAAMoyX,EAAsBnyX,UAAW,CAAC,CAAC,wBAAyB2X,UAAW,SAAoC3W,EAAIC,GAGpK,IAAIE,EAHgL,EAALH,GAC/K,KAAmB,IAAiB,GAC7B,EAALA,GAEF,KAAsBG,EAAK,UAA0BF,EAAIugC,cAAgBrgC,EAAGE,QAC3Ee,UAAW,CAAC,EAAG,2BAA4BwV,SAAU,EAAGC,aAAc,SAA2C7W,EAAIC,GAAgB,EAALD,GACjI,KAA+B,cAAe,SAAsEmwB,GAAU,OAAOlwB,EAAIkyX,eAAehiW,KACjJ,EAALnwB,GACF,KAA+B,SAAUC,EAAIsxX,kBAC5C5wX,SAAU,CAAC,MAAoC8D,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,cAAe,QAAS,CAAC,kBAAmB,KAAMhG,SAAU,SAAuCqB,EAAIC,GAAgB,EAALD,IAC/L,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAG6vX,EAA6C,EAAG,EAAG,cAAe,GACvF,OACA,KAAiB,EAAG,QACb,EAAL7vX,IACF,KAAiB,GACjB,KAAmB,YAAaC,EAAI2gI,MAApC,CAA2C,OAAQ3gI,EAAIsnM,SACtD3iM,WAAY,CAAC,KAAyBuS,OAAQ,CAAC,iYAAkYtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAACivV,EAAsBC,kB,sBA0ChfkB,E,sDAENA,EAAkBxzX,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKuzX,IAClFA,EAAkB76W,UAAO,KAAwB,CAAExY,KAAMqzX,IACzDA,EAAkB56W,UAAO,KAAwB,CAAEC,QAAS,CAAC,CACjD,IACA,IACA,IACA,IACA,KACD,O,KA8BL46W,EAAgC,IAAI,IAAe,gCAAiC,CACtFptW,WAAY,OACZ9hB,QAGJ,WACI,OAAO,IAAI4sX,K,iBAKTuC,E,8BACF,WAAYpqW,EAAU04G,EAAO18F,EAAWkxQ,EAAqBm9E,EAAiBC,GAAc,oBACxFn0X,KAAK6pB,SAAWA,EAChB7pB,KAAKuiI,MAAQA,EACbviI,KAAK6lC,UAAYA,EACjB7lC,KAAK+2S,oBAAsBA,EAC3B/2S,KAAKk0X,gBAAkBA,EACvBl0X,KAAKm0X,eAAiBA,EAMtBn0X,KAAKo0X,wBAA0B,KAE/Bp0X,KAAKq0X,wBAA0B5B,EAE/BzyX,KAAKs0X,2BAA6BxB,EAElC9yX,KAAKu0X,gBAAkB,yB,+BAG3B,WACI,IAAM3tV,EAAS5mC,KAAKk0X,gBACpB,OAAOttV,EAASA,EAAO4tV,mBAAqBx0X,KAAKo0X,yB,IAErD,SAAuB7yX,GACfvB,KAAKk0X,gBACLl0X,KAAKk0X,gBAAgBM,mBAAqBjzX,EAG1CvB,KAAKo0X,wBAA0B7yX,I,+BAUvC,SAAkB0d,EAAWmZ,GACzB,OAAOp4B,KAAK0/J,QAAQzgJ,EAAWmZ,K,8BASnC,SAAiB93B,EAAU83B,GACvB,OAAOp4B,KAAK0/J,QAAQp/J,EAAU83B,K,kBAQlC,SAAK4B,GAA4B,IAAnB+oC,EAAmB,uDAAV,GAAI3qC,EAAM,uCACvB0J,EAAUtlB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAKm0X,gBAAiB/7V,GAStE,OANA0J,EAAQhyB,KAAO,CAAEkqB,UAAS+oC,UAGtBjhC,EAAQ8vV,sBAAwB53V,IAChC8H,EAAQ8vV,yBAAsBntX,GAE3BzE,KAAKq8U,kBAAkBr8U,KAAKq0X,wBAAyBvyV,K,qBAKhE,WACQ9hC,KAAKw0X,oBACLx0X,KAAKw0X,mBAAmBh/P,Y,yBAGhC,WAEQx1H,KAAKo0X,yBACLp0X,KAAKo0X,wBAAwB5+P,Y,sCAMrC,SAAyBrmG,EAAYiJ,GACjC,IACMjZ,EAAW,IAAS7Z,OAAO,CAC7BshC,OAFiBxO,GAAUA,EAAOlZ,kBAAoBkZ,EAAOlZ,iBAAiBC,UAEtDnf,KAAK6lC,UAC7B1T,UAAW,CAAC,CAAE5vB,QAASmvX,EAAmB94W,SAAUwf,MAElD+P,EAAkB,IAAI,IAAgBnoC,KAAKs0X,2BAA4Bl8V,EAAOlZ,iBAAkBC,GAChGs1W,EAAetlW,EAAWrQ,OAAOqpB,GAEvC,OADAssV,EAAa3gW,SAASi/V,eAAiB36V,EAChCq8V,EAAa3gW,W,qBAKxB,SAAQw/B,EAASohU,GAAU,WACjBt8V,EAAS5b,OAAOuqB,OAAOvqB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI,IAAI2qV,GAAsB1xX,KAAKm0X,gBAAiBO,GACvGvlW,EAAanvB,KAAKknC,eAAe9O,GACjC/f,EAAYrY,KAAK20X,yBAAyBxlW,EAAYiJ,GACtDs6V,EAAc,IAAIZ,EAAez5W,EAAW8W,GAClD,GAAImkC,aAAmB,IAAa,CAChC,IAAM3zC,EAAS,IAAI,IAAe2zC,EAAS,KAAM,CAC7CthD,UAAWomB,EAAOtoB,KAClB4iX,gBAEJA,EAAY5+V,SAAWzb,EAAUwH,qBAAqBF,OAErD,CACD,IAAMR,EAAWnf,KAAKooC,gBAAgBhQ,EAAQs6V,GACxC,EAAS,IAAI,IAAgBp/T,OAAS7uD,EAAW0a,GACjDkpB,EAAahwB,EAAUuH,sBAAsB,GAEnD8yW,EAAY5+V,SAAWuU,EAAWvU,SAiBtC,OAZA9zB,KAAK+2S,oBAAoBzpK,QAAQ,IAAYngG,iBAAiBnpC,KAAK,YAAUmrB,EAAWhD,gBAAgBjoB,UAAU,SAAAmE,GAC9G,IAAM1F,EAAYwsB,EAAWtC,eAAelqB,UAC5C0F,EAAM4iC,QAAUtoC,EAAUE,IAAI,EAAK0xX,iBAAmB5xX,EAAU6I,OAAO,EAAK+oX,mBAE5En8V,EAAOw5V,qBAEPv5W,EAAU46W,YAAY/uX,UAAU,WAC5B,EAAKq+H,MAAM+jN,SAASluT,EAAOw5V,oBAAqBx5V,EAAOu5V,cAG/D3xX,KAAK40X,iBAAiBlC,EAAat6V,GACnCp4B,KAAKw0X,mBAAqB9B,EACnB1yX,KAAKw0X,qB,8BAGhB,SAAiB9B,EAAat6V,GAAM,WAEhCs6V,EAAYmC,iBAAiB3wX,UAAU,WAE/B,EAAKswX,oBAAsB9B,IAC3B,EAAK8B,mBAAqB,MAE1Bp8V,EAAOw5V,qBACP,EAAKrvP,MAAM7xH,UAGf1Q,KAAKw0X,oBAGLx0X,KAAKw0X,mBAAmBK,iBAAiB3wX,UAAU,WAC/CwuX,EAAYX,kBAAkB14Q,UAElCr5G,KAAKw0X,mBAAmBh/P,WAIxBk9P,EAAYX,kBAAkB14Q,QAG9BjhF,EAAOolB,UAAYplB,EAAOolB,SAAW,GACrCk1U,EAAY/rV,cAAcziC,UAAU,kBAAMwuX,EAAYoC,cAAc18V,EAAOolB,c,4BAOnF,SAAeplB,GACX,IAAMwP,EAAgB,IAAI,IAC1BA,EAAc5gC,UAAYoxB,EAAOpxB,UACjC,IAAI8oB,EAAmB9vB,KAAK6pB,SAAS7f,WAAW89B,SAE1C5+B,EAA6B,QAArBkvB,EAAOpxB,UACf02V,EAAwC,SAA9BtlU,EAAOg5S,oBACY,UAA9Bh5S,EAAOg5S,qBAAmCloU,GACZ,QAA9BkvB,EAAOg5S,oBAAgCloU,EACtC0vQ,GAAW8kF,GAAwC,WAA9BtlU,EAAOg5S,mBAkBlC,OAjBIssB,EACA5tU,EAAiB7jB,KAAK,KAEjB2sQ,EACL9oP,EAAiB5jB,MAAM,KAGvB4jB,EAAiBiV,qBAGW,QAA5B3M,EAAO+4S,iBACPrhT,EAAiB/jB,IAAI,KAGrB+jB,EAAiB9jB,OAAO,KAE5B47B,EAAc9X,iBAAmBA,EAC1B9vB,KAAK6pB,SAASvkB,OAAOsiC,K,6BAOhC,SAAgBxP,EAAQs6V,GAEpB,OAAO,IAASptX,OAAO,CACnBshC,OAFiBxO,GAAUA,EAAOlZ,kBAAoBkZ,EAAOlZ,iBAAiBC,UAEtDnf,KAAK6lC,UAC7B1T,UAAW,CACP,CAAE5vB,QAASuvX,EAAgBl5W,SAAU85W,GACrC,CAAEnwX,QAASkvX,EAAoB74W,SAAUwf,EAAOtoB,a,UAKhEmkX,EAAY1zX,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKyzX,GAAa,KAAgB,KAAiB,KAAgB,KAAuB,KAAgB,KAAkB,KAAgB,KAA4B,KAAgBA,EAAa,IAAK,KAAgBD,KAC3RC,EAAYrvX,WAAQ,aAAmB,CAAEE,QAAS,WAAiC,OAAO,IAAImvX,EAAY,aAAS,KAAU,aAAS,KAAgB,aAAS,KAAW,aAAS,KAAqB,aAASA,EAAa,IAAK,aAASD,KAAoCnvX,MAAOovX,EAAartW,WAAYmtW,I,4BC/uBvS,SAAU1xW,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFL,MAC1F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SACI,8DAA8DhB,MAC1D,KAERiB,cAAe,kCAAkCjB,MAAM,KACvDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNC,EAAG,aACHC,GAAI,aACJ/B,EAAG,cACHgC,GAAI,YACJC,EAAG,aACHC,GAAI,WACJhN,EAAG,YACHiN,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,SAAS06I,EAAoB/3G,EAAKg4G,EAAergJ,EAAKqhD,GAClD,IAAIj7C,EAAS,CACT6B,EAAG,CAAC,oBAAe,wBACnBC,GAAI,CAACmgC,EAAM,aAAWA,EAAM,iBAC5BliC,EAAG,CAAC,eAAa,oBACjBgC,GAAI,CAACkgC,EAAM,aAAWA,EAAM,iBAC5BjgC,EAAG,CAAC,SAAU,cACdC,GAAI,CAACggC,EAAM,QAASA,EAAM,WAC1BhtC,EAAG,CAAC,QAAS,aACbiN,GAAI,CAAC+/B,EAAM,OAAQA,EAAM,UACzB9/B,EAAG,CAAC,WAAY,gBAChBC,GAAI,CAAC6/B,EAAM,SAAUA,EAAM,aAC3B5/B,EAAG,CAAC,QAAS,aACbC,GAAI,CAAC2/B,EAAM,OAAQA,EAAM,UACzB1/B,EAAG,CAAC,QAAS,aACbC,GAAI,CAACy/B,EAAM,OAAQA,EAAM,WAE7B,OAAOg4G,EAAgBj6I,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAsB5C0F,EAAOM,aAAa,SAAU,CAItCC,OAAQ,mGAAoFL,MACxF,KAEJM,YAAa,8DAAkDN,MAAM,KACrE0U,kBAAkB,EAClB1T,SAAU,yFAA4ChB,MAAM,KAC5DiB,cAAe,4CAA2BjB,MAAM,KAChDkB,YAAa,wCAAuBlB,MAAM,KAC1CovB,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCL,cAAe,cACf7tB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,kCACN0gH,GAAI,qBACJC,IAAK,2BACLC,KAAM,oCAEV3gH,SAAU,CACNC,QAAS,2BACTC,QAAS,4BACTC,SAAU,yBACVC,QAAS,wBACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACNC,EAAGm4I,EACHl4I,GAAIk4I,EACJj6I,EAAGi6I,EACHj4I,GAAIi4I,EACJh4I,EAAGg4I,EACH/3I,GAAI+3I,EACJ/kJ,EAAG+kJ,EACH93I,GAAI83I,EACJ73I,EAAG63I,EACH53I,GAAI43I,EACJ33I,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,2BACxBC,QAAS,SAAUu/B,EAAKw8D,GACpB,IAAI+nB,EAAI/nB,EAAO5kG,cACf,OAAI2sH,EAAEguH,SAAS,MAAQhuH,EAAEguH,SAAS,KAAavyM,EAAM,IAE9CA,EA1Ef,SAAwBA,GAEpB,IAAI4mF,GADJ5mF,EAAM,GAAKA,GACCgG,UAAUhG,EAAI7gD,OAAS,GAC/BwgI,EAAK3/E,EAAI7gD,OAAS,EAAI6gD,EAAIgG,UAAUhG,EAAI7gD,OAAS,GAAK,GAC1D,OACY,IAANwgI,GAAkB,IAANA,GACR,KAALiH,GAAiB,KAALA,GAAkB,MAANjH,GAAmB,MAALiH,GAAkB,MAALA,EAGjD,OADI,QAkEMmpP,CAAe/vU,IAEhCr/B,KAAM,CACFC,IAAK,EACLC,IAAK,KAhHyB/gB,CAAQ,EAAQ,U,wBCIjD,SAAUud,GAAU,aAIzB,IAAIO,EACI,yGAAoFL,MAChF,KAERM,EAAc,2DAAkDN,MAAM,KAC1E,SAAS46J,EAAOplI,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAASqlI,EAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC3C,IAAIphC,EAASlX,EAAS,IACtB,OAAQ/I,GACJ,IAAK,IACD,OAAOqgJ,GAAiBh/F,EAAW,mBAAe,mBACtD,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,UAAY,aAEvCkX,EAAS,YAExB,IAAK,IACD,OAAOogI,EAAgB,YAAWh/F,EAAW,YAAW,aAC5D,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,YAAW,YAEtCkX,EAAS,cAExB,IAAK,IACD,OAAOogI,EAAgB,SAAWh/F,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,SAAW,YAEtCkX,EAAS,WAExB,IAAK,IACD,OAAOogI,GAAiBh/F,EAAW,WAAQ,YAC/C,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,MAAQ,UAEnCkX,EAAS,aAExB,IAAK,IACD,OAAOogI,GAAiBh/F,EAAW,SAAW,WAClD,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,UAAY,YAEvCkX,EAAS,WAExB,IAAK,IACD,OAAOogI,GAAiBh/F,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIg/F,GAAiBh/F,EACVphC,GAAUugJ,EAAOz3J,GAAU,OAAS,SAEpCkX,EAAS,SAKvBva,EAAOM,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbU,SAAU,gEAAsDhB,MAAM,KACtEiB,cAAe,4BAAuBjB,MAAM,KAC5CkB,YAAa,4BAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,yBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBxtB,QAAS,oBACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACD,MAAO,4BAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAGw4J,EACHv4J,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAGolK,EACHn4J,GAAIm4J,EACJh4J,EAAGg4J,EACH/3J,GAAI+3J,EACJ93J,EAAG83J,EACH73J,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9IyB/gB,CAAQ,EAAQ,U,kGCP1D,IAAIkwX,EAAmB,WAGnB,OAFA,aADmB,G,oFCUnB5qP,EAA0C,SAAU5N,EAAGv8H,GACvD,GAAuB,iBAAZ+oI,SAAoD,mBAArBA,QAAQuB,SAAyB,OAAOvB,QAAQuB,SAAS/N,EAAGv8H,IAEtGgqI,EAAoC,SAAUC,EAAYC,GAC1D,OAAO,SAAU39G,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAAKutH,KAYvD,EAAmB,WACnB,SAAS+qP,EAAgBC,EAAUtyG,EAAW9gP,EAASqzV,EAAO51N,GAC1Dv/J,KAAKk1X,SAAWA,EAChBl1X,KAAK4iR,UAAYA,EACjB5iR,KAAK8hC,QAAUA,EACf9hC,KAAKm1X,MAAQA,EACbn1X,KAAK6uH,UAAY0wC,EAAgB7nC,eAAe,KAAM,MACtD13H,KAAKo1X,aACAC,EAAkBC,SACnBD,EAAkBC,OAAS,IAAI7nX,KAE9B4nX,EAAkBE,kBACnBF,EAAkBE,gBAAkB,IAAI9nX,KA2DhD,IAAI4nX,EA2BJ,OAnFAA,EAAoBJ,EACpBA,EAAgBviW,UAAU8iW,OAAS,SAAUrhV,EAAK3/B,GAC9C,IAAIktC,EAAQ1hD,UACE,IAAVwU,IAAoBA,GAAQ,GAChC,IAAIihX,EAASz1X,KAAK01X,eAAevhV,GACjC,GAAI3/B,GAAS6gX,EAAkBC,OAAOlhX,IAAIqhX,GACtC,OAAO,OAAAx/W,EAAA,GAAGjW,KAAK21X,UAAUN,EAAkBC,OAAOpjX,IAAIujX,KAE1D,GAAIJ,EAAkBE,gBAAgBnhX,IAAIqhX,GACtC,OAAOJ,EAAkBE,gBAAgBrjX,IAAIujX,GAEjD,IAAI75V,EAAM57B,KAAKm1X,MAAMjjX,IAAIujX,EAAQ,CAAEnzG,aAAc,SAC5Ct+Q,KAAK,OAAA4xX,EAAA,GAAS,WACfP,EAAkBE,gBAAgBhjX,OAAOkjX,KACzC,OAAAp6P,EAAA,KAAS,OAAA5xH,EAAA,GAAI,SAAUw1Q,GACvB,IAAI42G,EAAQn0U,EAAMsgO,sBAAsB/C,GAExC,OADAo2G,EAAkBC,OAAOjhX,IAAIohX,EAAQI,GAC9Bn0U,EAAMi0U,UAAUE,MAG3B,OADAR,EAAkBE,gBAAgBlhX,IAAIohX,EAAQ75V,GACvCA,GAEXq5V,EAAgBviW,UAAU0iW,WAAa,WAC/Bp1X,KAAK8hC,QACL9hC,KAAK81X,SAAW91X,KAAK8hC,QAAQi0V,QAEN,OAAlB/1X,KAAKk1X,SACVl1X,KAAK81X,SAAW91X,KAAKk1X,SAEG,OAAnBl1X,KAAK4iR,YACV5iR,KAAK81X,SAAW91X,KAAK4iR,UAAUozG,uBAGvCf,EAAgBviW,UAAUgjW,eAAiB,SAAUvhV,GAC7Cn0C,KAAK81X,WAAa,gBAAgB9yW,KAAKmxB,IAEb,KAD1BA,EAAMn0C,KAAK81X,SAAW3hV,GACdlrC,QAAQ,QACZkrC,EAAMA,EAAI6W,UAAU,IAG5B,IAAIprD,EAAOI,KAAK6uH,UAAUh3G,cAAc,QAExC,OADAjY,EAAKw+D,KAAOjqB,EACLv0C,EAAKw+D,MAEhB62T,EAAgBviW,UAAUsvP,sBAAwB,SAAUtzO,GACxD,IAAIuzO,EAAMjiR,KAAK6uH,UAAUh3G,cAAc,OACvCoqQ,EAAIxzM,UAAY//B,EAChB,IAAIkyO,EAAMqB,EAAI72Q,cAAc,OAC5B,IAAKw1Q,EACD,MAAM,IAAIvsP,MAAM,mCAEpB,OAAOusP,GAEXq0G,EAAgBviW,UAAUijW,UAAY,SAAU/0G,GAC5C,OAAOA,EAAI/8H,WAAU,IAGzBoxO,EAAgB3zQ,gBAAkB,KAAsB,CAAEx8G,QAAS,WAAqC,OAAO,IAAImwX,EAAgB,KAAY,IAAkB,GAAI,KAAY,IAAqB,GAAI,KAAY,EAAoB,GAAI,KAAY,KAAgB,KAAY,OAA0BpwX,MAAOowX,EAAiBruW,WAAY,UACpVquW,EAAkBI,EA/FwB,SAAUxrP,EAAYr9G,EAAQ7P,EAAK8gB,GAC7E,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EA2FtBF,CAAW,CAAEK,EAAQ,EAAG,eAAaA,EAAQ,EAAG,YAAO,MACzFA,EAAQ,EAAG,eACXA,EAAQ,EAAG,eACXG,EAAW,oBAAqB,CAAC/6F,OAAQ,IACrC2lV,EACA,IACA,OACLC,IACS10X,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKy0X,GAAiB,KAAgB,IAAe,GAAI,KAAgB,IAAyB,GAAI,KAAgB,EAAwB,GAAI,KAAgB,KAAoB,KAAgB,OAC/QA,EAAgBrwX,WAAQ,KAA0B,CAAEC,MAAOowX,EAAiBnwX,QAAS,SAAUtE,GAAK,OAAOy0X,EAAgB10X,UAAKC,IAAOomB,WAAY,SAgBxIquW,EAlGY,GCnBnB,EAA0C,SAAUz4P,EAAGv8H,GACvD,GAAuB,iBAAZ+oI,SAAoD,mBAArBA,QAAQuB,SAAyB,OAAOvB,QAAQuB,SAAS/N,EAAGv8H,IAItG,EAAoB,WACpB,SAASg2X,EAAiB12N,GACtBv/J,KAAKk2X,YAAc,GACnBl2X,KAAK6uH,UAAY0wC,EAAgB7nC,eAAe,KAAM,MAkD1D,OAhDAu+P,EAAiBvjW,UAAUyjW,SAAW,SAAU7qX,EAAKujG,EAAUv7C,EAAS8iU,EAAiBC,GACrF,GAAID,IAAoBC,EAAS,CAC7B,IAAI31W,EAAapV,EAAIgrX,UAAYhrX,EAAIgrX,SAAS51W,WAC1CA,GACA1gB,KAAK6uH,UAAUptG,YAAYf,EAAYpV,EAAIgrX,UAE/CznR,EAASpgC,UAAY,GAErB4nT,EACAr2X,KAAK6uH,UAAUluG,aAAakuF,EAAUv7C,EAASu7C,EAASn6B,YAGxD10E,KAAK6uH,UAAU/2G,YAAY+2F,EAAUv7C,GAEhB,QAArBA,EAAQxkD,WACRxD,EAAIgrX,SAAWhjU,IAGvB2iU,EAAiBvjW,UAAU6jW,YAAc,SAAU31G,EAAKzsO,EAAKqiV,GAGzD,IAFA,IAAIC,EAAU71G,EAAI70K,iBAAiB,UAC/B2qR,EAAgB,GACX7uX,EAAI,EAAGA,EAAI4uX,EAAQtyX,OAAQ0D,IAAK,CACrC,IAAI8uX,EAAaF,EAAQ5uX,GAAGmhC,aAAa,QACpC2tV,GAA6B,2BAAfA,GAA0D,2BAAfA,IAE1DD,EAAc9yX,KADD6yX,EAAQ5uX,GAAGq0R,WAAau6F,EAAQ5uX,GAAG2rG,aAEhDxzG,KAAK6uH,UAAUptG,YAAYg1W,EAAQ5uX,GAAG6Y,WAAY+1W,EAAQ5uX,KAGlE,GAAI6uX,EAAcvyX,OAAS,IAAmB,WAAbqyX,GACf,SAAbA,IAAwBx2X,KAAKk2X,YAAY/hV,IAAQ,CAClD,IAAStsC,EAAI,EAAGA,EAAI6uX,EAAcvyX,OAAQ0D,IACtC,IAAI8vK,SAAS++M,EAAc7uX,GAA3B,CAA+BsjB,QAEnCnrB,KAAKk2X,YAAY/hV,IAAO,IAGhC8hV,EAAiB30Q,gBAAkB,KAAsB,CAAEx8G,QAAS,WAAsC,OAAO,IAAImxX,EAAiB,KAAY,OAA0BpxX,MAAOoxX,EAAkBrvW,WAAY,UACjNqvW,EAtD0C,SAAUpsP,EAAYr9G,EAAQ7P,EAAK8gB,GAC7E,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EAkDzC,CAAW,CAAE,EAAW,oBAAqB,CAAC,OAC9DmsP,IACU11X,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKy1X,GAAkB,KAAgB,OAClHA,EAAiBrxX,WAAQ,KAA0B,CAAEC,MAAOoxX,EAAkBnxX,QAAS,SAAUtE,GAAK,OAAOy1X,EAAiB11X,UAAKC,IAAOomB,WAAY,SAO3IqvW,EArDa,GCJpB,EAA0C,SAAUz5P,EAAGv8H,GACvD,GAAuB,iBAAZ+oI,SAAoD,mBAArBA,QAAQuB,SAAyB,OAAOvB,QAAQuB,SAAS/N,EAAGv8H,IAKtG,EAAsB,WACtB,SAAS22X,EAAmBC,EAAmBpkV,GAC3CzyC,KAAK62X,kBAAoBA,EACzB72X,KAAK82X,IAAMrkV,EAiDf,OA/CAmkV,EAAmBlkW,UAAUggB,gBAAkB,WAC3C1yC,KAAK+2X,kBAETH,EAAmBlkW,UAAUizU,YAAc,SAAU1gW,GAC7CA,EAAO,SACPjF,KAAK+2X,kBAGbH,EAAmBlkW,UAAUqkW,eAAiB,WAC1C/2X,KAAK62X,kBAAkBV,SAASn2X,KAAKwR,QAASxR,KAAK82X,IAAIl0X,cAAe5C,KAAKszD,QAAStzD,KAAKo2X,gBAAiBp2X,KAAKq2X,WAkBnHO,EA5C0C,SAAU/sP,EAAYr9G,EAAQ7P,EAAK8gB,GAC7E,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EAwCvC,CAAW,CAAE,EAAW,oBAAqB,CAAC,EAAkB,OAClF8sP,IACYr2X,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKo2X,GAAoB,KAAyB,GAA0B,KAAyB,OACpLA,EAAmBzwX,UAAO,KAAyB,CAAEzF,KAAMk2X,EAAoBj2X,UAAW,CAAC,CAAC,eAAgBwB,OAAQ,CAAEqP,QAAS,UAAW8hD,QAAS,UAAW8iU,gBAAiB,kBAAmBC,QAAS,WAAa/zX,SAAU,CAAC,MAA8B8D,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAqCqB,EAAIC,KAAU4E,cAAe,EAAGwiB,gBAAiB,IAiBzW4tW,EApDe,GCIpB,SAAU18F,EAAiB7uR,EAAS4lH,GACtC,IAAK,IAAIppH,EAAI,EAAGA,EAAIopH,EAAM9sH,OAAQ0D,IACjBwD,EAAQ29B,aAAaioF,EAAMppH,KAEpCwD,EAAQo9B,gBAAgBwoF,EAAMppH,IAGtC,IAAImvX,EAAW3rX,EAAQy9K,qBAAqB,KAC5C,IAASjhL,EAAI,EAAGA,EAAImvX,EAAS7yX,OAAQ0D,IACjCqyR,EAAiB88F,EAASnvX,GAAIopH,GCvBtC,IAMI,EAA0C,SAAUuL,EAAGv8H,GACvD,GAAuB,iBAAZ+oI,SAAoD,mBAArBA,QAAQuB,SAAyB,OAAOvB,QAAQuB,SAAS/N,EAAGv8H,IAEtG,EAAoC,SAAUiqI,EAAYC,GAC1D,OAAO,SAAU39G,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAAKutH,KASvD,EAAsB,WACtB,SAAS+sP,EAAmBH,EAAKl1W,EAAmBs1W,EAAWC,EAAWtoQ,EAAWgoQ,EAAmB/0V,EAAS4jG,GAC7G1lI,KAAK82X,IAAMA,EACX92X,KAAK4hB,kBAAoBA,EACzB5hB,KAAKk3X,UAAYA,EACjBl3X,KAAKm3X,UAAYA,EACjBn3X,KAAK6uH,UAAYA,EACjB7uH,KAAK62X,kBAAoBA,EACzB72X,KAAK8hC,QAAUA,EACf9hC,KAAK0lI,WAAaA,EAClB1lI,KAAKo2X,iBAAkB,EACvBp2X,KAAKq2X,SAAU,EACfr2X,KAAKo3X,iBAAkB,EACvBp3X,KAAKq3X,UAAW,EAChBr3X,KAAKs3X,iBAAkB,EACvBt3X,KAAKu2X,YAAc,SACnBv2X,KAAKu3X,cAAgB,IAAI,IACzBv3X,KAAKw3X,YAAc,IAAI,IACvBx3X,KAAKy3X,aDrCiB,oBAAZC,QCsCL,YAAiB13X,KAAK0lI,aAAgB1lI,KAAKy3X,cAC5Cz3X,KAAK23X,MAAM,+CA0MnB,OAvMAV,EAAmBvkW,UAAU29F,SAAW,WAC/BrwH,KAAK43X,qBAAsB53X,KAAK63X,kBAGrC73X,KAAK83X,cAETb,EAAmBvkW,UAAUizU,YAAc,SAAU1gW,GAC5CjF,KAAK43X,qBAAsB53X,KAAK63X,kBAGjC5yX,EAAO,WACPjF,KAAK83X,cAGbb,EAAmBvkW,UAAU8wJ,YAAc,WACnCxjL,KAAKmjI,eACLnjI,KAAKmjI,cAAcvtH,eAG3BqhX,EAAmBvkW,UAAUolW,WAAa,WACtC,IAAIp2U,EAAQ1hD,MACP,YAAiBA,KAAK0lI,aAAgB1lI,KAAKy3X,gBAG3Cz3X,KAAK+3X,UAIN/3X,KAAK+3X,YAAc/3X,KAAKg4X,WAG5Bh4X,KAAKg4X,SAAWh4X,KAAK+3X,UACrB/3X,KAAKmjI,cAAgBnjI,KAAKm3X,UAAU3B,OAAOx1X,KAAK+3X,UAAW/3X,KAAKq3X,UAC3DnzX,UAAU,SAAU08Q,GACrB,GD/EiB,OADDzsO,ECgFQuN,EAAMq2U,WD/E3BhoV,OAAO,IAAcoE,EAAIlrC,QAAQ,UAAY,EC+EN,CACtC,IAAIgvX,EAAWv2U,EAAMq2U,UAAUx1W,MAAM,KAAK,GAC1Cq+P,ED5EV,SAA0BrtJ,EAAUqtJ,EAAKq3G,GAC3C,IAAIzwH,EAASoZ,EAAIx1Q,cAAc,QAAW6sX,EAAW,MACrD,IAAKzwH,EACD,MAAM,IAAInzO,MAAM,WAAc4jW,EAAW,eAE7C,IAAIC,EAAQ3kQ,EAAS17G,cAAc,MAAO,OAC1C07G,EAASz7G,YAAYogX,EAAO1wH,GAC5B,IAAI2wH,EAAW5kQ,EAAS17G,cAAc,MAAO,OAG7C,OAFA07G,EAAS1kH,aAAaspX,EAAU,OAAQ,IAAMF,EAAU,SACxD1kQ,EAASz7G,YAAYogX,EAAOC,GACrBD,ECkEW,CAAwBx2U,EAAMmtE,UAAW+xJ,EAAKq3G,GDlF9D,IAAsB9jV,ECoFhBuN,EAAM02U,YAAYx3G,IACnB,SAAUjkP,GACT+kB,EAAMi2U,MAAMh7V,MAfZ38B,KAAK23X,MAAM,kCAkBnBV,EAAmBvkW,UAAU0lW,YAAc,SAAUx3G,GACjD,GAAKA,EAAL,CAgBA,GAbI5gR,KAAKq4X,qBAAuB,YAAkBr4X,KAAK0lI,aACnD,EAAyBk7I,EAAK5gR,KAAKq4X,qBAEnCr4X,KAAKs4X,kBDlEX,SAAwBjtX,EAAS4lH,GACnC,IAAK,IAAI+xJ,KAAQ/xJ,EACb5lH,EAAQwD,aAAam0Q,EAAM/xJ,EAAM+xJ,ICiE7B,CAAsBpC,EAAK5gR,KAAKs4X,kBAEhCt4X,KAAKu4X,cACL33G,EAAM5gR,KAAKu4X,YAAY33G,EAAK5gR,KAAK82X,IAAIl0X,gBAEzC5C,KAAKw4X,UAAU53G,GACX,YAAkB5gR,KAAK0lI,aACvB1lI,KAAK62X,kBAAkBN,YAAY31G,EAAK5gR,KAAK+3X,UAAW/3X,KAAKu2X,aAE7Dv2X,KAAKs3X,gBAAiB,CACtB,IAAIjzG,EAAYzD,EAAI70K,iBAAiB,SACrCxhG,MAAMjG,KAAK+/Q,GAAWhxQ,QAAQ,SAAUqE,GAAO,OAAOA,EAAI87F,aAAe,KAE7ExzG,KAAKu3X,cAAcr1W,KAAK0+P,KAE5Bq2G,EAAmBvkW,UAAU8lW,UAAY,SAAU/lV,GAC/C,GAAIzyC,KAAKo3X,gBAAiB,CACtB,IAAKp3X,KAAKy4X,SAAU,CAChB,IAAI3zX,EAAU9E,KAAKk3X,UAAUn2W,wBAAwB,GACrD/gB,KAAKy4X,SAAWz4X,KAAK4hB,kBAAkBZ,gBAAgBlc,GAE3D9E,KAAKy4X,SAAS3kW,SAAStiB,QAAUxR,KACjCA,KAAKy4X,SAAS3kW,SAASsiW,gBAAkBp2X,KAAKo2X,gBAC9Cp2X,KAAKy4X,SAAS3kW,SAASuiW,QAAUr2X,KAAKq2X,QACtCr2X,KAAKy4X,SAAS3kW,SAASw/B,QAAU7gB,EACjCzyC,KAAK6uH,UAAU/2G,YAAY9X,KAAK82X,IAAIl0X,cAAe5C,KAAKy4X,SAASt5W,SAASjN,IAAI,GAAoB4kX,IAAIl0X,oBAGtG5C,KAAK62X,kBAAkBV,SAASn2X,KAAMA,KAAK82X,IAAIl0X,cAAe6vC,EAAIzyC,KAAKo2X,gBAAiBp2X,KAAKq2X,UAGrGY,EAAmBvkW,UAAUilW,MAAQ,SAAU1/C,GAE3C,GADAj4U,KAAKw3X,YAAYt1W,KAAK+1T,GAClBj4U,KAAK04X,eAAgB,CACrB,IAAIC,EAAQ34X,KAAK6uH,UAAUh3G,cAAc,OACzC7X,KAAK6uH,UAAUhgH,aAAa8pX,EAAO,MAAO34X,KAAK04X,gBAC/C14X,KAAKw4X,UAAUG,KAGvB1B,EAAmBvkW,UAAUklW,iBAAmB,WAC5C,OAAO,YAAiB53X,KAAK0lI,aAAe,YAAkB1lI,KAAK0lI,aAEvEuxP,EAAmBvkW,UAAUmlW,eAAiB,WAC1C,OAAO,YAAiB73X,KAAK0lI,aAAe1lI,KAAK8hC,SAAW9hC,KAAK8hC,QAAQ82V,aAsD7E3B,EA9L0C,SAAUptP,EAAYr9G,EAAQ7P,EAAK8gB,GAC7E,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EA0LvC,CAAW,CAAE,EAAQ,EAAG,eACzC,EAAQ,EAAG,YAAO,MAClB,EAAW,oBAAqB,CAAC,IAC7B,IACA,IACA,EACA,IACA,EACAkrP,EACAx4W,UACLy6W,IACY12X,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKy2X,GAAoB,KAAyB,KAAoB,KAAyB,KAA0B,KAAyB,KAAkC,KAAyB,GAAyB,KAAyB,KAAmB,KAAyB,GAA0B,KAAyB,EAAwB,GAAI,KAAyB,OACleA,EAAmBx2X,UAAO,KAAyB,CAAEC,KAAMu2X,EAAoBt2X,UAAW,CAAC,CAAC,GAAI,YAAa,KAAMwB,OAAQ,CAAEi0X,gBAAiB,kBAAmBC,QAAS,UAAWe,gBAAiB,kBAAmBC,SAAU,WAAYC,gBAAiB,kBAAmBf,YAAa,cAAewB,UAAW,YAAaO,iBAAkB,mBAAoBD,oBAAqB,sBAAuBK,eAAgB,iBAAkBH,YAAa,eAAiBp2W,QAAS,CAAEo1W,cAAe,gBAAiBC,YAAa,eAAiBl1X,SAAU,CAAC,KAA0B,CAAC,IAAmB,QAuChlB20X,EA9Ne,GCZtB,EAAmB,WACnB,SAAS4B,KAWT,IAAIC,EAaJ,OAtBAA,EAAoBD,EACpBA,EAAgBpnD,QAAU,SAAUr5S,GAChC,MAAO,CACH2mF,SAAU+5Q,EACV3mW,UAAW,CACP,CAAE5vB,QAASyyX,EAAiBp8W,SAAUwf,MAKtDygW,EAAgBt4X,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKq4X,IAC9EA,EAAgB3/W,UAAO,KAAwB,CAAExY,KAAMm4X,IACvDA,EAAgB1/W,UAAO,KAAwB,IAUpC0/W,EAzBY,I,4UCRjB,SAAU31P,EAAU+4B,EAAS92B,GAC/B,MAA8B,mBAAnBA,EACA,SAAC5+G,GAAD,OAAYA,EAAOviB,KAAKk/H,EAAU,SAACnnH,EAAGlU,GAAJ,OAAU,YAAKo0J,EAAQlgJ,EAAGlU,IAAI7D,KAAK,YAAI,SAACgY,EAAGogJ,GAAJ,OAAWj3B,EAAeppH,EAAGC,EAAGnU,EAAGu0J,UAEhH,SAAC71I,GAAD,OAAYA,EAAO8V,KAAK,IAAI08V,EAAkB98N,K,IAEnD88N,E,8BACF,WAAY98N,GAAO,oBACfj8J,KAAKi8J,QAAUA,G,mBAEnB,SAAK1/H,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI80X,EAAoBz8V,EAAYv8B,KAAKi8J,c,GAGnE+8N,E,YACF,WAAYv8V,EAAaw/H,GAAO,M,MAAA,2B,EAC5B,K,EAAA,E,EAAA,CAAMx/H,G,kBAAN,E,iGACKw/H,QAAUA,EACf,EAAKtyJ,MAAQ,EAHe,E,0DAKhC,SAAMpI,GACF,IAAIq7B,EACEjzB,EAAQ3J,KAAK2J,QACnB,IACIizB,EAAS58B,KAAKi8J,QAAQ16J,EAAOoI,GAEjC,MAAOqrB,GAEH,YADAh1B,KAAKy8B,YAAYzH,MAAMA,GAG3Bh1B,KAAK08J,UAAU9/H,K,uBAEnB,SAAUA,GACN,IAAMokH,EAAoBhhJ,KAAKghJ,kBAC3BA,GACAA,EAAkBprI,cAEtB,IAAMgnJ,EAAkB,IAAI,IAAsB58J,MAC5Cy8B,EAAcz8B,KAAKy8B,YACzBA,EAAY55B,IAAI+5J,GAChB58J,KAAKghJ,kBAAoB,YAAepkH,EAAQggI,GAC5C58J,KAAKghJ,oBAAsB4b,GAC3BngI,EAAY55B,IAAI7C,KAAKghJ,qB,uBAG7B,WACI,IAAQA,EAAsBhhJ,KAAtBghJ,kBACHA,IAAqBA,EAAkBx5H,QACxC,4BAEJxnB,KAAK4V,gB,0BAET,WACI5V,KAAKghJ,uBAAoBv8I,I,4BAE7B,WACIzE,KAAKghJ,uBAAoBv8I,EACrBzE,KAAKqmK,WACL,8B,wBAGR,SAAWlyD,GACPn0G,KAAKy8B,YAAY54B,KAAKswG,O,CAhDI,M,wSChB3B,IAAM,EAAb,YACI,WAAY23B,EAAWC,GAAI,M,MAAA,2B,EACvB,K,EAAA,E,EAAA,CAAMD,EAAWC,G,kBAAjB,E,iGACKD,UAAYA,EACjB,EAAKC,KAAOA,EAHW,EAD/B,mEAMI,SAAeD,EAAW9lH,GAAa,IAATonE,EAAS,uDAAD,EAClC,OAAc,OAAVA,GAAkBA,EAAQ,EAC1B,8BAA4B0+C,EAAW9lH,EAAIonE,KAE/C0+C,EAAUY,QAAQ9oI,KAAK5D,MAChB8rI,EAAUq5B,YAAcr5B,EAAUq5B,UAAYsjB,sBAAsB,kBAAM38C,EAAUK,MAAM,YAXzG,4BAaI,SAAeL,EAAW9lH,GAAa,IAATonE,EAAS,uDAAD,EAClC,GAAe,OAAVA,GAAkBA,EAAQ,GAAiB,OAAVA,GAAkBptF,KAAKotF,MAAQ,EACjE,qCAA4B0+C,EAAW9lH,EAAIonE,IAEd,IAA7B0+C,EAAUY,QAAQvoI,SAClBokR,qBAAqBviQ,GACrB8lH,EAAUq5B,eAAY1gK,OAnBlC,C,UAA0C,G,0ICAnC,ICCMmoM,EAA0B,IDDvC,kIACI,SAAM7pI,GACF/iE,KAAK8b,QAAS,EACd9b,KAAKmlK,eAAY1gK,EACjB,IACIuwB,EADI03G,EAAY1sI,KAAZ0sI,QAEJ/iI,GAAS,EACTuN,EAAQw1H,EAAQvoI,OACpB4+D,EAASA,GAAU2pE,EAAQ/3H,QAC3B,GACI,GAAIqgB,EAAQ+tC,EAAOspE,QAAQtpE,EAAO16D,MAAO06D,EAAOqqB,OAC5C,cAEGzjF,EAAQuN,IAAU6rD,EAAS2pE,EAAQ/3H,UAE9C,GADA3U,KAAK8b,QAAS,EACVkZ,EAAO,CACP,OAASrrB,EAAQuN,IAAU6rD,EAAS2pE,EAAQ/3H,UACxCouD,EAAOntD,cAEX,MAAMof,OAnBlB,C,UAA6C,GCCN,CAA4B,I,kCCAnE,IAAIs3Q,EAAkBxvQ,EAAQ,QAE1B06I,EAAe16I,EAAQ,QACvBI,EAAaJ,EAAQ,QAErBm8V,EAAOn8V,EAAQ,QAGnBM,EAAOC,QAAU,SAChBtf,EACA+vI,EACAvsJ,GAEA,IAAKwc,GAAuB,iBAARA,GAAmC,mBAARA,EAC9C,MAAM,IAAImf,EAAW,0CAEtB,GAAwB,iBAAb4wH,GAA6C,iBAAbA,EAC1C,MAAM,IAAI5wH,EAAW,4CAEtB,GAAI5jB,UAAUnV,OAAS,GAA6B,kBAAjBmV,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI4jB,EAAW,2DAEtB,GAAI5jB,UAAUnV,OAAS,GAA6B,kBAAjBmV,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI4jB,EAAW,yDAEtB,GAAI5jB,UAAUnV,OAAS,GAA6B,kBAAjBmV,UAAU,IAAqC,OAAjBA,UAAU,GAC1E,MAAM,IAAI4jB,EAAW,6DAEtB,GAAI5jB,UAAUnV,OAAS,GAA6B,kBAAjBmV,UAAU,GAC5C,MAAM,IAAI4jB,EAAW,2CAGtB,IAAIg8V,EAAgB5/W,UAAUnV,OAAS,EAAImV,UAAU,GAAK,KACtD6/W,EAAc7/W,UAAUnV,OAAS,EAAImV,UAAU,GAAK,KACpD8/W,EAAkB9/W,UAAUnV,OAAS,EAAImV,UAAU,GAAK,KACxDgkB,EAAQhkB,UAAUnV,OAAS,GAAImV,UAAU,GAGzCmkB,IAASw7V,GAAQA,EAAKl7W,EAAK+vI,GAE/B,GAAIw+I,EACHA,EAAgBvuR,EAAK+vI,EAAU,CAC9BpwH,aAAkC,OAApB07V,GAA4B37V,EAAOA,EAAKC,cAAgB07V,EACtEnlV,WAA8B,OAAlBilV,GAA0Bz7V,EAAOA,EAAKwW,YAAcilV,EAChE33X,MAAOA,EACPo8B,SAA0B,OAAhBw7V,GAAwB17V,EAAOA,EAAKE,UAAYw7V,QAErD,KAAI77V,IAAW47V,GAAkBC,GAAgBC,GAIvD,MAAM,IAAI5hN,EAAa,+GAFvBz5J,EAAI+vI,GAAYvsJ,K,qBCnDlB,IAAI83X,EAAOv8V,EAAQ,QAYnBM,EAAOC,QAAU,SAASqR,GACxB,IAAIvC,EAASuC,EAAIltC,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAClD,OAAQ2qC,EAAOhoC,OAAS,GACtB,KAAK,EACH,MACF,KAAK,EACHgoC,GAAU,KACV,MACF,KAAK,EACHA,GAAU,IACV,MACF,QACE,KAAM,4BAGV,IACE,OA1BJ,SAA0BuC,GACxB,OAAOK,mBAAmBsqV,EAAK3qV,GAAKltC,QAAQ,OAAQ,SAAUshB,EAAGymH,GAC/D,IAAIr9D,EAAOq9D,EAAE15F,WAAW,GAAG5d,SAAS,IAAI2b,cAIxC,OAHIs+B,EAAK/nE,OAAS,IAChB+nE,EAAO,IAAMA,GAER,IAAMA,KAoBNq6M,CAAiBp6O,GACxB,MAAOxP,GACP,OAAO08V,EAAKltV,M,mLClBVmtV,E,8BACF,iCACIt5X,KAAKu5X,WAAY,EACjBv5X,KAAKw5X,QAAS,G,qBAGlB,WAAiB,OAAOx5X,KAAKu5X,W,IAC7B,SAAah4X,GAASvB,KAAKu5X,UAAY,YAAsBh4X,K,iBAE7D,WAAc,OAAOvB,KAAKw5X,Q,IAC1B,SAAUj4X,GAASvB,KAAKw5X,OAAS,YAAsBj4X,O,UAE3D+3X,EAAW/4X,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAK84X,IACpEA,EAAWnzX,UAAO,KAAyB,CAAEzF,KAAM44X,EAAY34X,UAAW,CAAC,CAAC,gBAAiBoC,UAAW,CAAC,OAAQ,YAAa,EAAG,eAAgBwV,SAAU,EAAGC,aAAc,SAAiC7W,EAAIC,GAAgB,EAALD,IACpN,KAAmB,mBAAoBC,EAAIs2N,SAAW,WAAa,cACnE,KAAmB,uBAAwBt2N,EAAIs2N,SAA/C,CAAyD,0BAA2Bt2N,EAAIs2N,SAAxF,CAAkG,oBAAqBt2N,EAAI63X,SAC1Ht3X,OAAQ,CAAE+1N,SAAU,WAAYuhK,MAAO,SAAWrzX,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAA6BqB,EAAIC,KAAUkX,OAAQ,CAAC,iTAAkTtS,cAAe,EAAGwiB,gBAAiB,I,sBAmC3d0wW,E,sDAENA,EAAiBn5X,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKk5X,IAChFA,EAAiBxgX,UAAO,KAAwB,CAAExY,KAAMg5X,IACxDA,EAAiBvgX,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,KAAkB,O,wCC3D/EoD,OAAOu3B,eAAe1W,EAAS,aAAc,CAAE97B,OAAO,IAQtD,IAAI87M,EAAuB,WAavB,SAASA,EAAMvzE,EAAGiB,EAAG/uH,EAAGD,QACV,IAANA,IAAgBA,EAAI,GAExB/b,KAAK8pI,EAAIvrH,KAAKG,IAAI,EAAGH,KAAKukC,IAAI,EAAGgnF,GAAK,IACtC9pI,KAAK+qI,EAAIxsH,KAAKG,IAAI,EAAGH,KAAKukC,IAAI,EAAGioF,GAAK,IACtC/qI,KAAKgc,EAAIuC,KAAKG,IAAI,EAAGH,KAAKukC,IAAI,EAAG9mC,GAAK,IACtChc,KAAK+b,EAAIwC,KAAKG,IAAI,EAAGH,KAAKukC,IAAI,EAAG/mC,GAAK,IAmY1C,OAxXAshM,EAAMs8K,WAAa,SAAUjrV,GAEzB,GAAIA,EAAIzlC,QAAQ,MAAQ,EACpB,OAAOo0M,EAAMu8K,cAAclrV,GAG/B,IAAI4qK,EAAM+D,EAAMw8K,UAAUnrV,GAC1B,GAAI4qK,EACA,OAAO+D,EAAMu8K,cAActgL,GAG/B,GAAI5qK,EAAIzlC,QAAQ,QAAU,EACtB,OAAOo0M,EAAMy8K,eAAeprV,GAEhC,MAAM,IAAIra,MAAM,0BAA4Bqa,EAAM,MAItD2uK,EAAMu8K,cAAgB,SAAUlrV,GAC5B,IAAI56B,EAAS46B,EAAI4C,MAAM+rK,EAAM08K,OAC7B,GAAIjmX,EAKA,OAAO,IAAIupM,GAJPvzE,EAAIt6F,SAAS17B,EAAO,GAAI,KAIP,KAHjBi3H,EAAIv7F,SAAS17B,EAAO,GAAI,KAGE,KAF1BkI,EAAIwzB,SAAS17B,EAAO,GAAI,KAEW,KADnCiI,OAAkBtX,IAAdqP,EAAO,GAAmB07B,SAAS17B,EAAO,GAAI,IAAM,KACZ,KAGpD,GADAA,EAAS46B,EAAI4C,MAAM+rK,EAAM28K,YACb,CACR,IAAIlwP,EAAIt6F,SAAS17B,EAAO,GAAI,IACxBi3H,EAAIv7F,SAAS17B,EAAO,GAAI,IACxBkI,EAAIwzB,SAAS17B,EAAO,GAAI,IACxBiI,OAAkBtX,IAAdqP,EAAO,GAAmB07B,SAAS17B,EAAO,GAAI,IAAM,GAK5D,OAAO,IAAIupM,GAJXvzE,GAAS,GAAJA,GAIgB,KAHrBiB,GAAS,GAAJA,GAGyB,KAF9B/uH,GAAS,GAAJA,GAEkC,KADvCD,GAAS,GAAJA,GAC2C,KAEpD,MAAM,IAAIsY,MAAM,wCAA0Cqa,EAAM,MAEpE2uK,EAAMy8K,eAAiB,SAAUprV,GAC7B,IAAI56B,EAAS46B,EAAI4C,MAAM+rK,EAAM48K,OAC7B,GAAInmX,EACA,OAAO,IAAIupM,GAAOvpM,EAAO,GAAK,KAAMA,EAAO,GAAK,KAAMA,EAAO,GAAK,KAGtE,GADAA,EAAS46B,EAAI4C,MAAM+rK,EAAM68K,QAErB,OAAO,IAAI78K,GAAOvpM,EAAO,GAAK,KAAMA,EAAO,GAAK,KAAMA,EAAO,GAAK,KAAMA,EAAO,IAEnF,MAAM,IAAIugB,MAAM,qCAAuCqa,EAAM,MAEjE2uK,EAAM1yF,UAAY,SAAUh7E,GACxB,GAAmB,IAAfA,EAAIxrC,OACJ,OAAO,IAAIk5M,EAAM1tK,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAEjD,GAAmB,IAAfA,EAAIxrC,OACJ,OAAO,IAAIk5M,EAAM1tK,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAEzC,MAAM,IAAItb,MAAM,sEASpBgpL,EAAM88K,QAAU,SAAUp1W,EAAGH,EAAG5I,EAAGg/L,QACjB,IAAVA,IAAoBA,EAAQ,GAChC,IAAIpC,EAAMyE,EAAM+8K,SAASr1W,EAAGH,EAAG5I,GAC/B,OAAO,IAAIqhM,EAAMzE,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIoC,IAE7CqC,EAAMg9K,OAAS,SAAU3rV,GAErB,OAAsB,IAAfA,EAAIvqC,OAAe,IAAMuqC,EAAMA,GAE1C2uK,EAAM3qL,UAAU4nW,YAAc,WAC1B,IAAIhhL,EAAM,IACJ+D,EAAMg9K,OAAO97W,KAAK06B,MAAe,IAATj5C,KAAK8pI,GAAS73G,SAAS,KAC/CorL,EAAMg9K,OAAO97W,KAAK06B,MAAe,IAATj5C,KAAK+qI,GAAS94G,SAAS,KAC/CorL,EAAMg9K,OAAO97W,KAAK06B,MAAe,IAATj5C,KAAKgc,GAASiW,SAAS,KAIrD,OAHIjyB,KAAK+b,EAAI,IACTu9L,GAAO+D,EAAMg9K,OAAO97W,KAAK06B,MAAe,IAATj5C,KAAK+b,GAASkW,SAAS,MAEnDqnL,GAEX+D,EAAM3qL,UAAU6nW,aAAe,SAAUC,QACd,IAAnBA,IAA6BA,EAAiB,GAClD,IAAI3mB,EAAa,CACbt1V,KAAK06B,MAAe,IAATj5C,KAAK8pI,GAChBvrH,KAAK06B,MAAe,IAATj5C,KAAK+qI,GAChBxsH,KAAK06B,MAAe,IAATj5C,KAAKgc,IAEhBwgH,EAAIj+G,KAAKq7L,IAAI,GAAI4gL,GACrB,OAAe,IAAXx6X,KAAK+b,GACL83V,EAAWjwW,KAAK2a,KAAK06B,MAAMj5C,KAAK+b,EAAIygH,GAAKA,GAClC,QAAUq3O,EAAW7jU,KAAK,MAAQ,KAEtC,OAAS6jU,EAAW7jU,KAAK,MAAQ,KAE5CqtK,EAAM3qL,UAAUT,SAAW,WACvB,OAAe,IAAXjyB,KAAK+b,EACE/b,KAAKs6X,cAETt6X,KAAKu6X,gBAEhBl9K,EAAM3qL,UAAU+nW,MAAQ,WACpB,OAAOp9K,EAAMq9K,SAAS16X,KAAK8pI,EAAG9pI,KAAK+qI,EAAG/qI,KAAKgc,IAM/CqhM,EAAMq9K,SAAW,SAAU5wP,EAAGiB,EAAG/uH,GAC7B,IAAI0C,EAAMH,KAAKG,IAAIorH,EAAGiB,EAAG/uH,GACrB8mC,EAAMvkC,KAAKukC,IAAIgnF,EAAGiB,EAAG/uH,GAErBioM,EAAIxlF,IAGR,GAAI//G,IAAQokC,EAAK,CACb,IAAIwiB,EAAQxiB,EAAMpkC,EACdi8W,GAAM73U,EAAMgnF,GAAKxkE,EACjB0lK,GAAMloL,EAAMioF,GAAKzlE,EACjBy5F,GAAMj8G,EAAM9mC,GAAKspD,EAEjB2+I,EADAn6E,IAAMhnF,EACFi8G,EAAKisE,EAEJjgG,IAAMjoF,EACP,EAAM63U,EAAK57N,EAGX,EAAMisE,EAAK2vJ,GAEnB12K,GAAK,GACG,IACJA,GAAQ,GAGhB,MAAO,CAAK,IAAJA,EAvBQ,IAARnhK,GAAaA,EAAMpkC,GAAOokC,EAAM,EAuBpBA,IAKxBu6J,EAAM+8K,SAAW,SAAUn2K,EAAG9F,EAAG6E,GACzB/nK,MAAMgpK,KACNA,EAAI,GAERA,GAAOA,EAAI,IAAO,KAAO,IAAO,IAChC,IAAIn6E,EAAI,EACJiB,EAAI,EACJ/uH,EAAI,EACR,GAAU,IAANmiM,EACAr0E,EAAIiB,EAAI/uH,EAAIgnM,MAEX,CACD,IAAIj+L,EAA0B,GAArBk/L,EAAI1lM,KAAKs7B,MAAMoqK,IACpBhrL,EAAIlU,EAAIxG,KAAKs7B,MAAM90B,GACnBwkH,EAAIy5E,GAAK,EAAI7E,GACb+F,EAAIlB,GAAK,EAAI7E,EAAIllL,GACjBz4B,EAAIwiN,GAAK,EAAK7E,GAAK,EAAIllL,IAC3B,OAAQlU,GAAK,GACT,KAAK,EACD+kH,EAAIk5E,EACJj4E,EAAIvqI,EACJwb,EAAIutH,EACJ,MACJ,KAAK,EACDO,EAAIo6E,EACJn5E,EAAIi4E,EACJhnM,EAAIutH,EACJ,MACJ,KAAK,EACDO,EAAIP,EACJwB,EAAIi4E,EACJhnM,EAAIxb,EACJ,MACJ,KAAK,EACDspI,EAAIP,EACJwB,EAAIm5E,EACJloM,EAAIgnM,EACJ,MACJ,KAAK,EACDl5E,EAAItpI,EACJuqI,EAAIxB,EACJvtH,EAAIgnM,EACJ,MACJ,KAAK,EACDl5E,EAAIk5E,EACJj4E,EAAIxB,EACJvtH,EAAIkoM,GAIhB,MAAO,CAACp6E,EAAGiB,EAAG/uH,IAElBqhM,EAAM3qL,UAAUkoW,OAAS,SAAUC,EAAUC,EAAkBC,EAAkBC,GAC7E,IAAIC,EAAM59K,EAAMq9K,SAAS16X,KAAK8pI,EAAG9pI,KAAK+qI,EAAG/qI,KAAKgc,GAC1CA,EAAIi/W,EAAI,GACH,GAALj/W,GAAU++W,EAAmB,IAC7B/+W,EAAI,KAER,IAAI+I,IAAOk2W,EAAI,GAAKJ,GAAY,IAAO,KAAO,IAC1Cj2W,EAAIrG,KAAKukC,IAAIvkC,KAAKG,IAAIu8W,EAAI,GAAKH,EAAkB,GAAM,GAC3D9+W,EAAIuC,KAAKukC,IAAIvkC,KAAKG,IAAI1C,EAAI++W,EAAkB,GAAM,GAClD,IAAIh/W,EAAIwC,KAAKukC,IAAIvkC,KAAKG,IAAI1e,KAAK+b,EAAIi/W,EAAe,GAAM,GACpDE,EAAO79K,EAAM+8K,SAASr1W,EAAGH,EAAG5I,GAEhC,OADAk/W,EAAKt3X,KAAKmY,GACHshM,EAAM1yF,UAAUuwQ,IAE3B79K,EAAM3qL,UAAUyoW,SAAW,WACvB,OAAOn7X,KAAK46X,OAAO,EAAG,EAAK,EAAM,GAAK,IAE1Cv9K,EAAM3qL,UAAU0oW,OAAS,WACrB,OAAOp7X,KAAK46X,OAAO,EAAG,EAAK,GAAK,IAGpCv9K,EAAM08K,MAAQ,4EACd18K,EAAM28K,WAAa,gEACnB38K,EAAM48K,MAAQ,uCACd58K,EAAM68K,OAAS,oDAKf78K,EAAMw8K,UAAYr9W,OAAO67C,OAAO,CAC5Bm3I,UAAW,UACXC,aAAc,UACdC,KAAM,UACNC,WAAY,UACZC,MAAO,UACPC,MAAO,UACPC,OAAQ,UACRC,MAAO,UACPC,eAAgB,UAChBC,KAAM,UACNC,WAAY,UACZC,MAAO,UACPC,UAAW,UACXC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,MAAO,UACPC,eAAgB,UAChBC,SAAU,UACVC,QAAS,UACTC,KAAM,UACNC,SAAU,UACVC,SAAU,UACVC,cAAe,UACfC,SAAU,UACVC,UAAW,UACXC,SAAU,UACVC,UAAW,UACXC,YAAa,UACbC,eAAgB,UAChBC,WAAY,UACZC,WAAY,UACZC,QAAS,UACTC,WAAY,UACZC,aAAc,UACdC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,SAAU,UACVC,YAAa,UACbC,QAAS,UACTC,QAAS,UACTC,WAAY,UACZC,UAAW,UACXC,YAAa,UACbC,YAAa,UACbC,QAAS,UACTC,UAAW,UACXC,WAAY,UACZC,KAAM,UACNC,UAAW,UACXC,KAAM,UACNC,MAAO,UACPC,YAAa,UACbC,KAAM,UACNC,SAAU,UACVC,QAAS,UACTC,UAAW,UACXC,OAAQ,UACRC,MAAO,UACPC,MAAO,UACPC,SAAU,UACVC,cAAe,UACfC,UAAW,UACXC,aAAc,UACdC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,qBAAsB,UACtBC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,UAAW,UACXC,YAAa,UACbC,cAAe,UACfC,aAAc,UACdC,eAAgB,UAChBC,eAAgB,UAChBC,eAAgB,UAChBC,YAAa,UACbC,KAAM,UACNC,UAAW,UACXC,MAAO,UACPC,QAAS,UACTC,OAAQ,UACRC,iBAAkB,UAClBC,WAAY,UACZC,aAAc,UACdC,aAAc,UACdC,eAAgB,UAChBC,gBAAiB,UACjBC,kBAAmB,UACnBC,gBAAiB,UACjBC,gBAAiB,UACjBC,aAAc,UACdC,UAAW,UACXC,UAAW,UACXC,SAAU,UACVC,YAAa,UACbC,KAAM,UACNC,QAAS,UACTC,MAAO,UACPC,UAAW,UACXC,OAAQ,UACRC,UAAW,UACXC,OAAQ,UACRC,cAAe,UACfC,UAAW,UACXC,cAAe,UACfC,cAAe,UACfC,WAAY,UACZC,UAAW,UACXC,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,WAAY,UACZC,OAAQ,UACRC,cAAe,UACfC,IAAK,UACLC,UAAW,UACXC,UAAW,UACXC,YAAa,UACbC,OAAQ,UACRC,WAAY,UACZC,SAAU,UACVC,SAAU,UACVC,OAAQ,UACRC,OAAQ,UACRC,QAAS,UACTC,UAAW,UACXC,UAAW,UACXC,UAAW,UACXC,KAAM,UACNC,YAAa,UACbC,UAAW,UACXC,IAAK,UACLC,KAAM,UACNC,QAAS,UACTC,OAAQ,UACRC,UAAW,UACXC,OAAQ,UACRC,MAAO,UACPC,MAAO,UACPC,WAAY,UACZC,OAAQ,UACRC,YAAa,YAEV0E,EAtZgB,GAia3B,SAAS8jC,EAAck6I,EAASpjP,QACV,IAAdA,IAAwBA,EAAY,KAiExC,IAhEA,IA8DIqjP,EAAWC,EAAcC,EA9DzB1rX,EAAO,GACP2rX,EAAY,SAAUjjM,GAAQ,MAAgB,OAATA,GAA0B,OAATA,GACtDkjM,GAAoB,EACpBC,EAAU,SAAUj0X,EAAKlC,EAAQwE,GACjC,IAAI4xX,EAAeP,EAAQrxX,EAAW,GAClC6xX,EAAcR,EAAQrxX,GACtB8xX,EAAWT,EAAQrxX,EAAW,GAC9B+xX,EAAmB,WACdjsX,EAAKpI,KAENoI,EAAKpI,GAAO,IAEXoI,EAAKpI,GAAKlC,KAEXsK,EAAKpI,GAAKlC,GAAU,KAI5B,GADAu2X,IACoB,MAAhBF,EAAqB,CACrB,GAAIH,EAUA,MATiB,MAAbI,GAEAhsX,EAAKpI,GAAKlC,IAAW,IACrBwE,KAIA0xX,GAAoB,EAEjBJ,EAAY5zX,EAAK6zX,EAAe/1X,EAAQg2X,EAAiBxxX,EAAU,WAEzE,QAAqBvF,IAAjBm3X,GAA8BA,IAAiB3jP,GAAawjP,EAAUG,GAG3E,OADAF,GAAoB,EACbJ,EAAY5zX,EAAK6zX,EAAe/1X,EAAQg2X,EAAiBxxX,EAAU,WAGlF,IAAK0xX,EAAmB,CACpB,GAAIG,IAAgB5jP,EAIhB,OAFAzyI,IACAu2X,IACOT,EAAY5zX,EAAK6zX,EAAe/1X,EAAQg2X,EAAiBxxX,EAAU,WAEzE,GAAIyxX,EAAUI,GASf,OAPAr2X,EAAS,EACTkC,IACAq0X,IACoB,OAAhBF,GAAqC,OAAbC,GAExB9xX,IAEGsxX,EAAY5zX,EAAK6zX,EAAe/1X,EAAQg2X,EAAiBxxX,EAAU,WAIlF8F,EAAKpI,GAAKlC,IAAWq2X,EACrBP,EAAY5zX,EACZ6zX,EAAe/1X,EACfg2X,EAAiBxxX,GAIZtC,EAAM,EAAGlC,EAAS,EAAGwE,EAAW,EAAGA,EAAWqxX,EAAQl3X,OAAQ6F,IACnE2xX,EAAQj0X,EAAKlC,EAAQwE,GACrBtC,EAAM4zX,EACN91X,EAAS+1X,EACTvxX,EAAWwxX,EAEf,OAAO1rX,EAGX,IAgBIksX,EACAC,EACAC,EACA9iC,EACA+iC,EACAC,EArBAC,EAAwB7/W,OAAO67C,OAAO,CACtCixE,UAAW,KACX63G,cAAeA,IAoBnB,SAASm7I,IAIL,YAHa73X,IAATw3X,IACAA,IAAuBtxV,SAASk4P,cAE7Bo5F,EAEX,SAASM,IAIL,YAHe93X,IAAXy3X,IACAA,GAAUI,OAAmBnxW,OAAOqxW,YAEjCN,EAEX,SAASO,IACL,QAAiBh4X,IAAbu3X,EAAwB,CAExB,IAAIU,EAAYvxW,OAEhB6wW,EAAWx/W,OAAOkW,UAAUT,SAASiD,KAAKwnW,EAAUrnT,aAAapsE,QAAQ,eAAiB,IAD1DsgI,EAETmzP,EAAUC,QAAUD,EAAUC,OAAOC,mBAFM,sCAAjBrzP,EAAEt3G,WAA7B,IAAUs3G,EAIpC,OAAOyyP,EAEX,SAASa,IACL,QAAiBp4X,IAAb20V,EAAwB,CACxB,IAAIvwK,EAAM19J,OACViuU,IAAcvwK,EAAIi0M,WAAaj0M,EAAIi0M,OAAOC,YAAcl0M,EAAIi0M,OAAOE,UAC9D,SAASh6W,KAAK8nG,UAAUC,YAAc,aAAa/nG,KAAK8nG,UAAUmyQ,QAE3E,OAAO7jC,EAEX,SAAS8jC,IACL,QAAkBz4X,IAAd03X,EAAyB,CACzB,IAAItzM,EAAM19J,OACVgxW,OAA0C,IAAvBtzM,EAAIs0M,eAE3B,OAAOhB,EAgHX,IAAIiB,EAA4B5gX,OAAO67C,OAAO,CAC1CixE,UAAW,KACXgzP,YAAaA,EACbC,cAAeA,EACfE,gBAAiBA,EACjBI,gBAAiBA,EACjBK,iBAAkBA,EAClBG,eArHJ,WAQI,YAPc54X,IAAV23X,IAEAA,GAAS,mBAAmBp5W,KAAK8nG,UAAU9jG,WAEf,aAAvB8jG,UAAU9jG,UAA2B8jG,UAAU+6K,eAAiB,KAChE16Q,OAAOy6Q,UAETw2F,GA8GPkB,gBA5GJ,WACI,IAAK3yV,SAAS7H,KACV,OAAQ,EAEZ,IAAIxK,EAAM,IAENilW,EAAWzyQ,UAAUC,UAAUnuG,cAAc00B,MAAM,WAAa,IAAU,IAC1E2wO,EAAMt3O,SAAS9yB,cAAc,OAEjC,IADA8yB,SAAS7H,KAAKhrB,YAAYmqQ,KACb,CACT,IAAIu7G,EAAe,EAANllW,EAEb,GADA2pP,EAAI12Q,MAAMf,OAASgzX,EAAS,KACxBA,EAASD,GAAYt7G,EAAIpvM,eAAiB2qT,EAC1C,MAGAllW,EAAMklW,EAId,OADA7yV,SAAS7H,KAAKrhB,YAAYwgQ,GACnB3pP,GAyFPmlW,kBAvFJ,WACI,IAAI36V,EAAO6H,SAAS7H,KAChBm/O,EAAMt3O,SAAS9yB,cAAc,OACjCoqQ,EAAI12Q,MAAM7B,MAAQu4Q,EAAI12Q,MAAMf,OAAS,QACrCy3Q,EAAI12Q,MAAMm2B,QAAU,IACpBugP,EAAI12Q,MAAMkpE,SAAW,SACrBwtM,EAAI12Q,MAAMmyX,gBAAkB,YAC5Bz7G,EAAI12Q,MAAMvB,SAAW,WACrB84B,EAAKhrB,YAAYmqQ,GACjB,IAAIv4Q,EAAQu4Q,EAAInvM,YAAcmvM,EAAIlvM,YAKlC,OAHIkvM,EAAIvhQ,YACJuhQ,EAAIvhQ,WAAWe,YAAYwgQ,GAExBv4Q,GA0EPi0X,qBAvEJ,WACI,IAAIC,EAAW,CAAC,SAAU,MAAO,IAAK,MAClC37G,EAAMt3O,SAAS9yB,cAAc,OAE7B27S,GAAQ,EADD7oR,SAASm+I,qBAAqB,QAAQ,GAG5ChxK,YAAYmqQ,GACjBA,EAAIpzQ,aAAa,QAAS+uX,EAASn0X,IAAI,SAAUgwE,GAAU,MAAO,IAAMA,EAAS,+BAAiCzgE,OAAO,6BAA6Bg3B,KAAK,MAC3J,IAAIujC,EAAgBpoD,OAAOqoD,iBAAiByuM,GAI5C,GAHwC,UAApC1uM,EAAcsqT,oBACdrqE,GAAQ,IAEPA,EACD,IAAK,IAAI9jT,EAAK,EAAGouX,EAAaF,EAAUluX,EAAKouX,EAAW35X,OAAQuL,IAE5D,GAA+C,UAA3C6jE,EADAuqT,EAAWpuX,GACO,qBAAkC,CACpD8jT,GAAQ,EACR,MAOZ,OAHIvxC,EAAIvhQ,YACJuhQ,EAAIvhQ,WAAWe,YAAYwgQ,GAExBuxC,GAgDPuqE,aAzCJ,WACI,OAAIpzV,SAAS7H,KACF6H,SAAS7H,KAAKiwC,YAErB5nD,OAAO6hG,YACA7hG,OAAO+hG,WAEdviF,SAAS6J,iBAAmB7J,SAAS6J,gBAAgBu+B,YAC9CpoC,SAAS6J,gBAAgBu+B,aAE5B,GAgCRirT,cAzBJ,WACI,OAAIrzV,SAAS7H,KACF6H,SAAS7H,KAAK+vC,aAErB1nD,OAAO6hG,YACA7hG,OAAO6hG,YAEdriF,SAAS6J,iBAAmB7J,SAAS6J,gBAAgBq+B,aAC9CloC,SAAS6J,gBAAgBq+B,cAE5B,KA6BZ,SAASorT,EAAS18X,GACd,OAAgB,MAATA,GAA2B,KAAVA,EAAe,KAAOA,EAElD,SAAS28X,EAAO38X,EAAO48X,GAEnB,YADyB,IAArBA,IAA+BA,GAAmB,GACtC,MAAT58X,IAAkB48X,GAA8B,KAAV58X,GAEjD,SAAS68X,EAAQ78X,GACb,OAAQ28X,EAAO38X,GAKnB,SAAS88X,EAAe98X,GACpB,OAAO28X,EAAO38X,IAAUA,EAAM0wB,SAAW1wB,EAAM0wB,WAAa,KAyFhE,SAASne,EAAOo5O,GACZ,GAAIA,aAAkBv/O,KAAOu/O,aAAkBz/O,IAAK,CAChD,IAAI6wX,EAAW,GAEf,OADApxI,EAAO75O,QAAQ,SAAU9R,GAAS,OAAO+8X,EAAS16X,KAAKrC,KAChD+8X,EAEX,OAAO9hX,OAAOC,KAAKywO,GAAQzjP,IAAI,SAAUkT,GAAO,OAAOuwO,EAAOvwO,KAGlE,IAAI4hX,EAA4B/hX,OAAO67C,OAAO,CAC1CixE,UAAW,KACX20P,SAAUA,EACVC,OAAQA,EACRE,QAASA,EACTI,eA3GJ,SAAwBj9X,GACpB,OAAQA,GAAS68X,EAAQ78X,IAA2B,IAAjBA,EAAM4C,QA2GzCk6X,eAAgBA,EAChBI,iBAtGJ,SAA0BxyX,EAAMC,GAC5B,OAAY,MAARD,GAAyB,MAATC,IAGR,MAARD,GAAyB,MAATC,KAGR,MAARD,GAAyB,MAATC,IAGbD,IAASC,GA6FhBwyX,WA3FJ,SAAoB3hV,EAAM4hV,GAGtB,OAFe5hV,EAAOvjB,KAAKC,UAAUsjB,GAAQ,SAC9B4hV,EAAOnlW,KAAKC,UAAUklW,GAAQ,OA0F7CC,kBAvFJ,SAA2B3iX,EAAQC,EAAQ2iX,QACf,IAApBA,IAA8BA,GAAkB,GACpD,IAAIC,EAA0B,MAAV7iX,EAChB8iX,EAA0B,MAAV7iX,EAUpB,GANID,GAAUA,EAAO8pP,WACjB9pP,EAASA,EAAO8pP,YAEhB7pP,GAAUA,EAAO6pP,WACjB7pP,EAASA,EAAO6pP,YAEhB+4H,GAAiBC,EACjB,OAAO,EAEX,GAAID,EACA,OAAQ,EAEZ,GAAIC,EACA,OAAO,EAEX,SAASC,EAAejjX,EAAGC,GACvB,OAAQD,EAAIC,EAAI,EAAKD,EAAIC,GAAK,EAAI,EAEtC,GAAsB,iBAAXC,EAAqB,CAC5B,IAAK4iX,EACD,OAAOG,EAAe/iX,EAAQC,GAElC,IAEI,OAAOD,EAAOk7B,cAAcj7B,GAEhC,MAAO+X,GAGH,OAAO+qW,EAAe/iX,EAAQC,IAGtC,OAAO8iX,EAAe/iX,EAAQC,IAiD9B7W,KA/CJ,SAASA,EAAK45J,EAAY5+H,EAAW9+B,GACjC,GAAI09J,QACA,OAAO,KAEX,IAAK10J,MAAMyL,QAAQipJ,GAEf,OAAO55J,EADUyO,EAAOmrJ,GACA5+H,EAAW9+B,GAIvC,IAFA,IAAI09X,EAAoBhgO,EACpBigO,EAAoB,KACfr3X,EAAI,EAAGA,EAAIo3X,EAAkB96X,OAAQ0D,IAAK,CAC/C,IAAIyJ,EAAO2tX,EAAkBp3X,GAC7B,GAAyB,iBAAdw4B,GACP,GAAI/uB,EAAK+uB,KAAe9+B,EAAO,CAC3B29X,EAAoB5tX,EACpB,YAKJ,GADe+uB,EACF/uB,GAAO,CAChB4tX,EAAoB5tX,EACpB,OAIZ,OAAO4tX,GAsBPprX,OAAQA,IASRqyO,EAAkB,WAIlBg5I,EAAe,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SAoFT,SAASC,EAAkB1wV,GACvB,OAAIA,QACO,KAEJA,EAAIltC,QAAQ,WAAY,SAAUupI,GAAK,MAAO,IAAMA,EAAE,GAAGnuH,gBAQpE,SAASyiX,EAAkB3wV,GACvB,OAAIA,QACO,KAEJA,EAAIltC,QAAQ,YAAa,SAAUupI,GAAK,OAAOA,EAAE,GAAGn9F,gBAuB/D,IAAI0xV,EAA2B9iX,OAAO67C,OAAO,CACzCixE,UAAW,KACXi2P,YArHJ,SAAqB36W,GACjB,IAAI46W,EAAqBnwV,OAAOo3O,aAkChC,SAASg5G,EAAWC,EAAW/qX,GAC3B,OAAO6qX,EAAqBE,GAAa/qX,EAAS,GAAQ,KAE9D,SAASgrX,EAAgBD,GACrB,GAAgC,IAAf,WAAZA,GACD,OAAOF,EAAmBE,GAE9B,IAAIl4H,EAAS,GAeb,OAdgC,IAAf,WAAZk4H,GACDl4H,EAASg4H,EAAqBE,GAAa,EAAK,GAAQ,KAEvB,IAAf,WAAZA,IAjBd,SAA0BA,GACtB,GAAIA,GAAa,OAAUA,GAAa,MACpC,MAAMrrW,MAAM,oBAAsBqrW,EAAUztW,SAAS,IAAI2b,cACrD,0BAeJgyV,CAAiBF,GACjBl4H,EAASg4H,EAAqBE,GAAa,GAAM,GAAQ,KACzDl4H,GAAUi4H,EAAWC,EAAW,IAEC,IAAf,WAAZA,KACNl4H,EAASg4H,EAAqBE,GAAa,GAAM,EAAQ,KACzDl4H,GAAUi4H,EAAWC,EAAW,IAChCl4H,GAAUi4H,EAAWC,EAAW,IAEpCl4H,EAAUg4H,EAAgC,GAAZE,EAAoB,KAQtD,IALA,IAAIG,EAzDJ,SAAoB1wV,GAMhB,IALA,IAGI5tC,EACAuyD,EAJA3nB,EAAS,GACTo1G,EAAU,EACVp9I,EAASgrC,EAAOhrC,OAGbo9I,EAAUp9I,IACb5C,EAAQ4tC,EAAOU,WAAW0xG,OACb,OAAUhgJ,GAAS,OAAUggJ,EAAUp9I,EAGxB,QAAX,OADb2vD,EAAQ3kB,EAAOU,WAAW0xG,OAEtBp1G,EAAOvoC,OAAe,KAARrC,IAAkB,KAAe,KAARuyD,GAAiB,QAKxD3nB,EAAOvoC,KAAKrC,GACZggJ,KAIJp1G,EAAOvoC,KAAKrC,GAGpB,OAAO4qC,EAgCM2zV,CAAWl7W,GACxBzgB,EAAS07X,EAAW17X,OACpBwF,GAAS,EAETo2X,EAAa,KACRp2X,EAAQxF,GAEb47X,GAAcJ,EADFE,EAAWl2X,IAG3B,OAAOo2X,GAkDPX,kBAAmBA,EACnBC,kBAAmBA,EACnBW,WA1BJ,SAAoBtxV,GAChB,OAAOA,EAAI,GAAGd,cAAgBc,EAAI6I,OAAO,GAAG36B,eA0B5C0yB,OAxBJ,SAAgB2wV,GACZ,OAAmB,MAAZA,GAAqBA,EAASz+X,QAAqBy+X,EAASz+X,QAAQ2kP,EAAiB,SAAUgI,GAAO,OAAOgxI,EAAahxI,KAAlF8xI,GAwB/CC,qBAhBJ,SAA8BlyH,GAC1B,OAAKA,GAA0B,MAAbA,EAINA,EAAUxsQ,QADZ,wCACyB,eAAeA,QAAQ,IAAK,KAAK+gB,MAAM,KAC7D9Y,IAAI,SAAUo8K,GAAQ,OAAOA,EAAK76H,UAAU,EAAG,GAAGpd,eAAkBi4I,EAAK1hL,OAAS,EAAK0hL,EAAK76H,UAAU,EAAG66H,EAAK1hL,QAAU,MAAQ6rC,KAAK,KAJvI,QAuBf,SAASmwV,EAAY90X,EAASwc,GAC1B,GAAKA,GAAkC,IAArBA,EAAU1jB,OAA5B,CAGA,KAAI0jB,EAAU5e,QAAQ,MAAQ,GAA9B,CAIA,GAAIoC,EAAQ1I,UACR0I,EAAQ1I,UAAUE,IAAIglB,QAErB,GAAIxc,EAAQwc,WAAaxc,EAAQwc,UAAU1jB,OAAS,EAAG,CACxD,IAAIi8X,EAAa/0X,EAAQwc,UAAUtF,MAAM,KACrC69W,EAAWn3X,QAAQ4e,GAAa,IAChCu4W,EAAWx8X,KAAKikB,GAChBxc,EAAQwD,aAAa,QAASuxX,EAAWpwV,KAAK,YAMlD3kC,EAAQwD,aAAa,QAASgZ,GAElC,OAAOxc,EAlBHwc,EAAUtF,MAAM,KAAKlP,QAAQ,SAAU9R,GAAS,OAAO4+X,EAAY90X,EAAS9J,MAoBpF,SAAS8+X,EAAeh1X,EAASwc,GAC7B,GAAIxc,EAAQ1I,UACR0I,EAAQ1I,UAAU6I,OAAOqc,QAExB,GAAIxc,EAAQwc,WAAaxc,EAAQwc,UAAU1jB,OAAS,EAAG,CACxD,IAAIm8X,EAAej1X,EAAQwc,UAAUtF,MAAM,KAAKpN,OAAO,SAAUy6B,GAAK,OAAOA,IAAM/nB,IAAcmoB,KAAK,KACtG3kC,EAAQwD,aAAa,QAASyxX,IAGtC,SAASC,EAAoBl1X,EAASwc,EAAW24W,GACzCA,EACAL,EAAY90X,EAASwc,GAGrBw4W,EAAeh1X,EAASwc,GAuBhC,SAAS44W,EAAcp1X,EAASwc,GAC5B,GAAIxc,EAAQ1I,UAER,OAAO0I,EAAQ1I,UAAUiqB,SAAS/E,GAEtC,GAAIxc,EAAQwc,UAAW,CAGnB,IAAI64W,EAAYr1X,EAAQwc,YAAcA,EAGlC+E,EAAWvhB,EAAQwc,UAAU5e,QAAQ,IAAM4e,EAAY,MAAQ,EAE/D84W,EAAiE,IAA/Ct1X,EAAQwc,UAAU5e,QAAQ4e,EAAY,KACxD+4W,EAAgBv1X,EAAQwc,UAAU9e,YAAY,IAAM8e,KAAgBxc,EAAQwc,UAAU1jB,OAAS0jB,EAAU1jB,OAAS,EACtH,OAAOu8X,GAAa9zW,GAAY+zW,GAAmBC,EAGvD,OAAO,EAEX,SAASC,EAAax1X,EAASy1X,GAC3BP,EAAoBl1X,EAAS,aAAcy1X,GAkB/C,SAASC,EAAetuV,GACpB,IAAI9nC,EAAKwgB,OAAOqoD,iBAAiB/gC,GAAyB/oC,EAAQiB,EAAGjB,MAAOorE,EAAanqE,EAAGmqE,WAAYD,EAAelqE,EAAGkqE,aAAcE,EAAgBpqE,EAAGoqE,cAAeH,EAAcjqE,EAAGiqE,YAAai4C,EAAYliH,EAAGkiH,UAAWrmB,EAAc77F,EAAG67F,YAAaC,EAAe97F,EAAG87F,aAAcF,EAAa57F,EAAG47F,WAAYu8P,EAAYn4V,EAAGm4V,UAC3U,MAAO,CACHt4V,OAAQqjB,WAFmCljB,EAAGH,QAG9Cd,MAAOmkB,WAAWnkB,GAClBorE,WAAYjnD,WAAWinD,GACvBD,aAAchnD,WAAWgnD,GACzBE,cAAelnD,WAAWknD,GAC1BH,YAAa/mD,WAAW+mD,GACxBi4C,UAAWh/F,WAAWg/F,GACtBrmB,YAAa34E,WAAW24E,GACxBC,aAAc54E,WAAW44E,GACzBF,WAAY14E,WAAW04E,GACvBu8P,UAAWA,GAoDnB,SAASk+B,EAAavuV,GAClB,KAAOA,GAAMA,EAAGiiC,YACZjiC,EAAGhxB,YAAYgxB,EAAGiiC,YAO1B,SAASusT,EAAiBv9O,GAClBA,GAAQA,EAAKhjI,YACbgjI,EAAKhjI,WAAWe,YAAYiiI,GAYpC,SAASw9O,EAAa5gY,GAClB,IAAI6gY,EAAUx2V,SAAS9yB,cAAc,OAErC,OADAspX,EAAQ1yT,WAAanuE,GAAY,IAAIwc,OAC9BqkX,EAAQzsT,WAmDnB,SAAS0sT,EAAiBC,EAAYC,GAClC,IAAK,IAAIz5X,EAAI,EAAGA,EAAIy5X,EAAgBn9X,OAAQ0D,IAAK,CAC7C,IAAI05X,EAAqBD,EAAgBz5X,GACrC25X,EAAoBH,EAAWv5X,SAASD,GACxC25X,IAAsBD,GACtBF,EAAW1gX,aAAa4gX,EAAoBC,IA6DxD,SAASC,EAAcp2X,EAAS3B,GAC5BA,EAAQg4X,EAAWh4X,GACnB2B,EAAQE,MAAM7B,MAAQA,EAAMuoB,WAC5B5mB,EAAQE,MAAM21B,SAAWx3B,EAAMuoB,WAC/B5mB,EAAQE,MAAMw8B,SAAWr+B,EAAMuoB,WAanC,SAAS0vW,EAAet2X,EAASb,GAC7BA,EAASk3X,EAAWl3X,GACpBa,EAAQE,MAAMf,OAASA,EAAOynB,WAC9B5mB,EAAQE,MAAM08B,UAAYz9B,EAAOynB,WACjC5mB,EAAQE,MAAMy8B,UAAYx9B,EAAOynB,WAErC,SAASyvW,EAAWvhW,GAChB,MAAoB,iBAATA,EACAA,EAAO,KAEXA,EAQX,SAASi6Q,EAAOjsQ,GACZ,MAAwB,mBAAT8qH,KACT9qH,aAAa8qH,KACb9qH,GAAkB,iBAANA,GAAwC,iBAAfA,EAAExmC,UAA+C,iBAAfwmC,EAAEr/B,SASnF,SAASm6K,EAAU96I,GACf,MAA+B,mBAAhBknC,YACTlnC,aAAaknC,YACblnC,GAAkB,iBAANA,GAAwB,OAANA,GAA6B,IAAfA,EAAExmC,UAAwC,iBAAfwmC,EAAEr/B,SAEnF,SAAS8yX,EAAgBzzV,GACrB,OAAOisQ,EAAOjsQ,IAAM86I,EAAU96I,GAqClC,IAAI0zV,EAAwBrlX,OAAO67C,OAAO,CACtCixE,UAAW,KACX62P,YAAaA,EACbE,eAAgBA,EAChBE,oBAAqBA,EACrBuB,cAnWJ,SAAuBz2X,EAAS02X,EAAcC,GAG1C,IAFA,IACIl5V,EADSz9B,EAAQu9B,cACA8rC,WACd5rC,GACCi5V,GACAxB,EAAoBz3V,EAASi5V,EAAcj5V,IAAYz9B,GAEvD22X,GACAzB,EAAoBz3V,EAASk5V,EAAmBl5V,IAAYz9B,GAEhEy9B,EAAUA,EAAQu8P,aA0VtBo7F,cAAeA,EACfI,aAAcA,EACdoB,WAlUJ,SAAoB52X,EAAS0oL,GACzBwsM,EAAoBl1X,EAAS,gBAAiB0oL,IAkU9CmuM,sBAhUJ,SAA+B72X,EAAS6rV,EAAKirC,GAEzC,IADA,IAAI5gP,EAAU,EACPl2I,GAAS,CACZ,GAAIo1X,EAAcp1X,EAAS6rV,GACvB,OAAO,EAGX,GADA7rV,EAAUA,EAAQu9B,cACdu5V,KAAa5gP,EAAU4gP,EACvB,MAGR,OAAO,GAsTPpB,eAAgBA,EAChBqB,eArSJ,SAAwB3vV,GACpB,IAAItS,EAAO4gW,EAAetuV,GAC1B,MAAuB,eAAnBtS,EAAK2iU,UACE3iU,EAAK31B,OAAS21B,EAAK20C,WAAa30C,EAAK40C,cAEzC50C,EAAK31B,QAiSZ63X,cA/RJ,SAAuB5vV,GACnB,IAAItS,EAAO4gW,EAAetuV,GAC1B,MAAuB,eAAnBtS,EAAK2iU,UACE3iU,EAAKz2B,MAAQy2B,EAAKy0C,YAAcz0C,EAAK00C,aAEzC10C,EAAKz2B,OA2RZ44X,kBAzRJ,SAA2B7vV,GACvB,IAAItS,EAAO4gW,EAAetuV,GAE1B,OAAOl0B,KAAKC,KAAKi0B,EAAGhhB,cADF0O,EAAKsmE,aAAetmE,EAAK0sF,aAwR3C01Q,iBArRJ,SAA0B9vV,GACtB,IAAItS,EAAO4gW,EAAetuV,GAE1B,OAAOl0B,KAAKC,KAAKi0B,EAAGqgC,aADF3yC,EAAKomE,WAAapmE,EAAKqmE,eAoRzCnuB,cAjRJ,SAAuBhtE,EAASm5M,GAC5B,IAAI9rI,EAAartE,EAAQqtE,WASzB,OARI8rI,IAEA9rI,EAAan6D,KAAKqiC,IAAI83B,GAElBmkT,MACAnkT,EAAartE,EAAQwtE,YAAcxtE,EAAQ0nE,YAAc2F,IAG1DA,GAwQPE,cAtQJ,SAAuBvtE,EAAS9J,EAAOijN,GAC/BA,KAEIi4K,KAAqBI,OACrBt7X,EAAQ8J,EAAQwtE,YAAcxtE,EAAQ0nE,YAAcxxE,GAGpD27X,MACA37X,IAAU,IAGlB8J,EAAQqtE,WAAan3E,GA4PrBy/X,aAAcA,EACd5sV,cArPJ,SAAuBxN,EAAQ47V,GAC3BvB,EAAiBr6V,EAAOx7B,cAAco3X,KAqPtCvB,iBAAkBA,EAClBr2G,UA/OJ,SAAmBv/Q,GACf,OAAgC,OAAzBA,EAAQokG,cA+OfyxR,aAAcA,EACduB,WAnOJ,SAAoBpB,EAAYqB,GACxBrB,EAAWsB,UAKXtB,EAAWuB,mBAAmB,aAAcF,GAG5CrB,EAAW5yT,UAAYi0T,GA2N3BG,oBAvNJ,SAA6Bx3X,EAAS47K,GAClC,OAAI57K,EAAQ67K,YAAc77K,EAAQ67K,WAAWD,GACzB57K,EAAQ67K,WAAWD,GAClB1lL,MAEd,MAmNPkwB,aAjNJ,SAAsBpmB,GAClB,OAAOA,GAAWA,EAAQwnE,aAAexnE,EAAQwnE,aAAe,GAiNhEC,YA/MJ,SAAqBznE,GACjB,OAAOA,GAAWA,EAAQ0nE,YAAc1nE,EAAQ0nE,YAAc,GA+M9DyuS,eA7MJ,SAAwB6f,EAAYyB,EAAQC,GAEpCA,GAAgBA,EAAa19F,cAAgBy9F,IAG7CC,EACIA,EAAa19F,YAEbg8F,EAAW1gX,aAAamiX,EAAQC,EAAa19F,aAI7Cg8F,EAAWvpX,YAAYgrX,GAKvBzB,EAAW3sT,YAAc2sT,EAAW3sT,aAAeouT,GAEnDzB,EAAW2B,sBAAsB,aAAcF,KA2LvD1B,iBAAkBA,EAClB6B,2BA/KJ,SAAoC5B,EAAYqB,EAAcK,GAC1D,IAAIzqW,EAiBJ,OAhBIyqW,GAEAA,EAAaH,mBAAmB,WAAYF,GAC5CpqW,EAAMyqW,EAAa19F,cAGfg8F,EAAW3sT,WAEX2sT,EAAWuB,mBAAmB,aAAcF,GAI5CrB,EAAW5yT,UAAYi0T,EAE3BpqW,EAAM+oW,EAAW3sT,YAEdp8C,GA8JP4qW,UA3JJ,SAAmBt8V,EAAQpvB,GACnB0mX,EAAOt3V,EAAO8tC,YACd9tC,EAAOjmB,aAAanJ,EAAkBovB,EAAO8tC,YAG7C9tC,EAAO9uB,YAAYN,IAuJvB2rX,mBApJJ,SAA4BC,EAAUtqX,GAC7BA,GAGL0D,OAAOC,KAAK3D,GAAQzF,QAAQ,SAAUsJ,GAClC,IAAI0mX,EAAehE,EAAkB1iX,GACjC0mX,IACAD,EAAS73X,MAAM83X,GAAgBvqX,EAAO6D,OA8I9C2mX,0BA1IJ,SAAmCj4X,GAC/B,OAAOA,EAAQ0nE,YAAc1nE,EAAQwtE,aA0IrC0qT,wBAxIJ,SAAiCl4X,GAC7B,OAAOA,EAAQwnE,aAAexnE,EAAQytE,cAwItC0qT,gBAtIJ,SAAyBn4X,EAAS3B,GAChB,SAAVA,GACA2B,EAAQE,MAAM7B,MAAQ,KACtB2B,EAAQE,MAAMw8B,SAAW,KACzB18B,EAAQE,MAAM21B,SAAW,KACzB71B,EAAQE,MAAMmjW,KAAO,YAGrB+yB,EAAcp2X,EAAS3B,IA+H3B+3X,cAAeA,EACfgC,iBAvHJ,SAA0Bp4X,EAASb,GAChB,SAAXA,GACAa,EAAQE,MAAMf,OAAS,KACvBa,EAAQE,MAAMy8B,UAAY,KAC1B38B,EAAQE,MAAM08B,UAAY,KAC1B58B,EAAQE,MAAMmjW,KAAO,YAGrBizB,EAAet2X,EAASb,IAgH5Bm3X,eAAgBA,EAChBD,WAAYA,EACZtnF,OAAQA,EACRnxH,UAAWA,EACX24M,gBAAiBA,EACjB8B,aAvEJ,SAAsB5vG,GAGlB,IAFA,IAAItP,EAAasP,EAAWA,EAAS3vR,OAAS,EAC1Cm0B,EAAM,GACDzwB,EAAI,EAAGA,EAAI28Q,EAAY38Q,IAC5BywB,EAAI10B,KAAKkwR,EAASjsR,IAEtB,OAAOywB,GAkEPqrW,oBAhEJ,SAA6Bl6X,EAAKwpB,GAC9B,GAAKxpB,EAGL,IAAK,IAAI5B,EAAI,EAAGA,EAAI4B,EAAItF,OAAQ0D,IAAK,CACjC,IAAIm7Q,EAAOv5Q,EAAI5B,GACforB,EAAS+vP,EAAK7hR,KAAM6hR,EAAKzhR,SA2D7BqiY,iBAvDJ,SAA0BC,EAAWx7X,GACZ,kBAAVA,GACPw7X,EAAU7xR,QAAU3pG,EACpBw7X,EAAUx7B,eAAgB,GAK1Bw7B,EAAUx7B,eAAgB,KAwDlC,SAASgiB,EAAcn9H,EAAQj6N,GACtBi6N,IAAUkxI,EAAQlxI,KAGnB3iP,MAAMyL,QAAQk3O,GACdA,EAAO75O,QAAQ,SAAU9R,EAAOoI,GAAS,OAAOspB,EAAS,GAAKtpB,EAAOpI,KAGrEib,OAAOC,KAAKywO,GAAQ75O,QAAQ,SAAUsJ,GAAO,OAAOsW,EAAStW,EAAKuwO,EAAOvwO,OAgBjF,SAASmnX,EAAY52I,EAAQvwO,GACzB,OAAOuwO,EAAOvwO,GAElB,SAASg0G,EAAYu8H,EAAQvwO,EAAKpb,GAC9B2rP,EAAOvwO,GAAOpb,EAiBlB,SAASwiY,EAAsBx9W,EAAQiG,EAAQshI,EAAUnsH,GACrD,IAAIpgC,EAAQuiY,EAAYv9W,EAAQunI,QAClBrpJ,IAAVlD,GACAovH,EAAYnkG,EAAQshI,EAAUnsH,EAAYA,EAAUpgC,GAASA,GAuGrE,IAAIyiY,EAA2BxnX,OAAO67C,OAAO,CACzCixE,UAAW,KACX+gP,cAAeA,EACf4Z,YA/IJ,SAAqB/2I,GAGjB,IAFA,IAAItsL,EAAO,GACPnkD,EAAOD,OAAOC,KAAKywO,GACdrlP,EAAI,EAAGA,EAAI4U,EAAKtY,OAAQ0D,IAAK,CAClC,IAAI8U,EAAMF,EAAK5U,GAEf+4D,EAAKjkD,GADOuwO,EAAOvwO,GAGvB,OAAOikD,GAwIPsjU,gBAtIJ,SAAyBh3I,GACrB,OAAO1zN,KAAKW,MAAMX,KAAKC,UAAUyzN,KAsIjC42I,YAAaA,EACbnzQ,YAAaA,EACbwzQ,wBA5HJ,SAAiC59W,EAAQiG,GAErC,IADA,IAAI6jP,EAAa,GACR3gQ,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC2gQ,EAAW3gQ,EAAK,GAAK4J,UAAU5J,GAEnC2gQ,EAAWh9P,QAAQ,SAAUk2H,GAAK,OAAOw6P,EAAsBx9W,EAAQiG,EAAQ+8G,MAwH/Ew6P,sBAAuBA,EACvBK,oBA7GJ,SAA6B/lD,GACzB,IAAIgmD,EAAY,GAIhB,OAHAhmD,EAAQlpU,OAAO,SAAU4I,GAAO,OAAc,MAAPA,IAAgB1K,QAAQ,SAAU0K,GACrEvB,OAAOC,KAAKsB,GAAK1K,QAAQ,SAAUsJ,GAAO,OAAO0nX,EAAU1nX,GAAO,SAE/DH,OAAOC,KAAK4nX,IAyGnBC,UAvGJ,SAASA,EAAU3oV,EAAMp1B,EAAQg+W,QACP,IAAlBA,IAA4BA,GAAgB,GAC3CrG,EAAO33W,IAGZ8jW,EAAc9jW,EAAQ,SAAU5J,EAAKu1H,GACjC,IAAIonL,EAAW39Q,EAAKh/B,GAChB28S,IAAapnL,IAGO,iBAAbonL,GAA6C,iBAAbpnL,GAA0B3nI,MAAMyL,QAAQsjT,IAG1EirE,QAA8B9/X,IAAbytI,KACtBv2F,EAAKh/B,GAAOu1H,GAHZoyP,EAAUhrE,EAAUpnL,OA6F5BnrG,OAtFJ,SAAgBmmN,GAEZ,IADA,IAAI1lL,EAAU,GACL93D,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC83D,EAAQ93D,EAAK,GAAK4J,UAAU5J,GAShC,OAPA83D,EAAQn0D,QAAQ,SAAUkT,GAClB23W,EAAO33W,IACP8jW,EAAc9jW,EAAQ,SAAU5J,EAAKpb,GACjC2rP,EAAOvwO,GAAOpb,MAInB2rP,GA2EPs3I,qBAzEJ,SAA8BjjY,GAC1B,OAAO68X,EAAQ78X,IAAwC,IAA9Bib,OAAOC,KAAKlb,GAAO4C,QAyE5C+N,IAvEJ,SAAaqU,EAAQk+W,EAAY//Q,GAC7B,GAAc,MAAVn+F,EACA,OAAOm+F,EAIX,IAFA,IAAIjoG,EAAOgoX,EAAWliX,MAAM,KACxBmiX,EAAen+W,EACZ9J,EAAKtY,OAAS,GAEjB,GAAoB,OADpBugY,EAAeA,EAAajoX,EAAK9H,UAE7B,OAAO+vG,EAGf,IAAInjH,EAAQmjY,EAAajoX,EAAK,IAC9B,OAAgB,MAATlb,EAAgBA,EAAQmjH,GA2D/BrwG,IAzDJ,SAAamY,EAAQi4W,EAAYljY,GAC7B,GAAc,MAAVirB,EAAJ,CAKA,IAFA,IAAI/P,EAAOgoX,EAAWliX,MAAM,KACxBoiX,EAAiBn4W,EACd/P,EAAKtY,OAAS,GAEjB,GAAsB,OADtBwgY,EAAiBA,EAAeloX,EAAK9H,UAEjC,OAGRgwX,EAAeloX,EAAK,IAAMlb,IA8C1BqjY,WA5CJ,SAASA,EAAW13I,GAOhB,OANA1wO,OAAO67C,OAAO60L,GACdp5O,EAAOo5O,GAAQ/3O,OAAO,SAAUlV,GAAK,OAAY,MAALA,IAAcoT,QAAQ,SAAUpT,GACvD,iBAANA,GAA+B,mBAANA,GAChC2kY,EAAW3kY,KAGZitP,GAsCP23I,mBApCJ,SAA4B/0X,EAAMonC,EAAO4tV,GACrC,GAAK5tV,GAAUpnC,EAAf,CAIA,IAAKg1X,EACD,OAAOh1X,EAAKonC,GAKhB,IAFA,IAAI8zI,EAAS9zI,EAAM30B,MAAM,KACrBwiX,EAAgBj1X,EACXjI,EAAI,EAAGA,EAAImjL,EAAO7mL,OAAQ0D,IAE/B,GAAIu2X,EADJ2G,EAAgBA,EAAc/5M,EAAOnjL,KAEjC,OAAO,KAGf,OAAOk9X,MA4HPC,EAA4BxoX,OAAO67C,OAAO,CAC1CixE,UAAW,KACX27P,eAjGJ,SAAwBC,GACpB,IACIC,EAAeD,EAASjzW,WACxBsvG,EAFgB,qBAEQ7iF,KAAKymV,GACjC,OAAO5jQ,GAAWA,EAAQp9H,OAAS,EAAIo9H,EAAQ,GAAK,IA8FpD6jQ,uBA5FJ,SAAgCtxX,GAC5B,IAAIwjC,EAAMxjC,EAAO3P,OACbkhY,EAAc,EAClB,GAAI/tV,GAAO,EACP,OAAOxjC,EAEX,IAAK,IAAIjM,EAAI,EAAGA,EAAIiM,EAAO3P,OAAQ0D,IAAK,CACpC,IAAItG,EAAQuS,EAAOjM,GACf0W,KAAKs7B,MAAMt4C,KAAWA,IAG1B8jY,EAAc9mX,KAAKukC,IAAIuiV,EAAa9jY,EAAM0wB,WAAW1P,MAAM,KAAK,GAAGpe,SAOvE,IALA,IAAImhY,EAAQ,EACRC,EAAQ,EACRC,EAAS,EACTC,EAAS,EACTngX,EAAI,EACCiW,EAAI,EAAGA,EAAI+b,EAAK/b,IAErB+pW,GAAS/pW,EACTgqW,GAFAjgX,EAAIxR,EAAOynB,GAGXkqW,GAAUlqW,EAAIA,EACdiqW,GAAUjqW,EAAIjW,EAElB,IAAIxC,GAAKw0B,EAAMkuV,EAASF,EAAQC,IAAUjuV,EAAMmuV,EAASH,EAAQA,GAC7DtpX,EAAKupX,EAAQjuV,EAAQx0B,EAAIwiX,EAAShuV,EAClC1a,EAAS,GACb,IAASrB,EAAI,EAAGA,GAAK+b,EAAK/b,IACtBqB,EAAOh5B,KAAKiqB,YAAY0N,EAAIzY,EAAI9G,GAAG2gH,QAAQ0oQ,KAE/C,OAAOzoW,GA8DP8oW,uBAvDJ,SAAgCC,GAC5B,IAAKA,EACD,MAAO,GAEX,IAAIC,EAAW,GAKf,OAJAvb,EAAcsb,EAAa,SAAUE,EAAUC,GAC3C,IAAIC,EAAiB3G,EAAkByG,GACvCD,EAAShiY,KAAKmiY,EAAiB,KAAOD,EAAa,OAEhDF,EAAS51V,KAAK,MA+CrBhW,QAtCJ,SAAiBi+S,GACb,IAAI+tD,EAAWr7V,SAAS9yB,cAAc,OAClCouX,EAAOt7V,SAASv/B,cAAc,kBAClC46X,EAASv3T,UAAYwpQ,EAChBguD,IAEDA,EAAO/E,EADQ,wOAEXv2V,SAAS7H,MACT6H,SAAS7H,KAAKhrB,YAAYmuX,IAGlCA,EAAKtlX,aAAaqlX,EAAUC,EAAKn+X,SAAS,KA4B1Co+X,8BApBJ,SAAuCC,EAAqBC,GACxDD,EAAoB9nX,KAAK,SAAUgwV,GAC/B,IAAIg4B,EAAMh4B,EAAai4B,SACZ,MAAPD,IACmB,iBAARA,EACPD,EAAQtuX,YAAYuuX,GAGpBD,EAAQ33T,UAAY43T,QAqBpC,SAASE,IAEL,IADA,IAAIzyX,EAAS,GACJpE,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCoE,EAAOpE,GAAM4J,UAAU5J,GAE3B,IAAK,IAAI7H,EAAI,EAAGA,EAAIiM,EAAO3P,OAAQ0D,IAAK,CACpC,IAAItG,EAAQuS,EAAOjM,GACnB,GAAIq2X,EAAO38X,GACP,OAAOA,EAGf,OAAO,KASX,SAAS4V,EAAKw4B,GACV,GAAKA,GAAQA,EAAIxrC,OAGjB,OAAOwrC,EAAIA,EAAIxrC,OAAS,GAE5B,SAASqiY,GAASzqX,EAAGC,EAAGghC,GACpB,OAAS,MAALjhC,GAAkB,MAALC,GAGL,MAALD,GACE,MAALC,GACAD,EAAE5X,SAAW6X,EAAE7X,QACfiwJ,GAAMr4I,EAAG,SAAUxa,EAAOoI,GAAS,OAAOqzC,EAAaA,EAAWz7C,EAAOya,EAAErS,IAAUqS,EAAErS,KAAWpI,IAyB1G,SAASklY,GAAgB1tX,EAAOm0O,GAC5B,IAAIvjP,EAAQoP,EAAM9P,QAAQikP,GACtBvjP,GAAS,GACToP,EAAMwvB,OAAO5+B,EAAO,GAG5B,SAAS+8X,GAAmB3tX,EAAO4tX,GAC/BtzX,GAAQszX,EAAU,SAAUr1X,GAAQ,OAAOm1X,GAAgB1tX,EAAOzH,KAEtE,SAASs1X,GAAgB7tX,EAAOm0O,EAAQ57F,GACpCv4I,EAAMwvB,OAAO+oH,EAAS,EAAG47F,GAmB7B,SAASqK,GAASx+O,EAAOxX,GACrB,OAAOwX,EAAM9P,QAAQ1H,IAAU,EA2BnC,SAAS6yJ,GAAMjoF,EAAM9rC,GACjB,GAAY,MAAR8rC,EACA,OAAO,EAEX,IAAK,IAAItkE,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAC7B,IAAKw4B,EAAU8rC,EAAKtkE,GAAIA,GACpB,OAAO,EAGf,OAAO,EAuBX,SAASwL,GAAQ84D,EAAMpJ,GACnB,GAAY,MAARoJ,EAGJ,IAAK,IAAItkE,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAC7Bk7D,EAAOoJ,EAAKtkE,GAAIA,GASxB,SAAS4B,GAAI0iE,EAAMw+K,GACf,GAAY,MAARx+K,EACA,OAAO,KAGX,IADA,IAAI97B,EAAS,GACJxoC,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAC7BwoC,EAAOzsC,KAAK+mP,EAAQx+K,EAAKtkE,GAAIA,IAEjC,OAAOwoC,EA4CX,IAAIw2V,GAA0BrqX,OAAO67C,OAAO,CACxCixE,UAAW,KACXi9P,mBAAoBA,EACpBO,UA1MJ,SAAmBhzX,GACf,OAAOA,GAAwC,MAA9ByyX,EAAmBzyX,IA0MpCizX,kBAxMJ,SAA2BxlY,GACvB,OAAgB,MAATA,GAAiBA,EAAM4C,OAAS,GAwMvCgT,KAAMA,EACNqvX,SAAUA,GACVQ,cAxLJ,SAAuBC,EAAQC,GAC3B,OAAOV,GAASS,EAAQC,IAwLxBC,eArLJ,SAAwBC,EAAMr7C,GAC1B,OAAOy6C,GAASY,EAAMr7C,IAqLtBs7C,gBAnLJ,SAAyBtuX,GACrB,OAAOA,EAAM8C,KAAK,SAAUE,EAAGC,GAAK,OAAOD,EAAIC,KAmL/CsrX,uBAjLJ,SAAgCvuX,EAAOm0O,GACnC,GAAKn0O,EAGL,IAAK,IAAIpP,EAAQoP,EAAM5U,OAAS,EAAGwF,GAAS,EAAGA,IACtBoP,EAAMpP,KAAWujP,GACjBn0O,EAAMpP,EAAQ,KAAOujP,GAEtCn0O,EAAMwvB,OAAO5+B,EAAQ,EAAG,IA0KhC88X,gBAAiBA,GACjBC,mBAAoBA,GACpBE,gBAAiBA,GACjBW,qBA7JJ,SAA8B5rV,EAAM6vP,EAAKl6I,GACrC,GAAY,MAAR31G,GAAuB,MAAP6vP,EAIpB,IAAK,IAAI3jS,EAAI2jS,EAAIrnS,OAAS,EAAG0D,GAAK,EAAGA,IAEjC++X,GAAgBjrV,EADL6vP,EAAI3jS,GACaypJ,IAuJhCk2O,YApJJ,SAAqBzuX,EAAO0uX,EAAen2O,GAEvCo1O,GAAmB3tX,EAAO0uX,GAG1Bp0X,GAAQo0X,EAAcj+X,QAAQK,UAAW,SAAUkU,GAAO,OAAO6oX,GAAgB7tX,EAAOgF,EAAKuzI,MAgJ7FimG,SAAUA,GACV+P,QA5IJ,SAAiBogI,GACb,MAAO,GAAG1uX,OAAO2+B,MAAM,GAAI+vV,IA4I3BC,QA1IJ,SAAiBn7W,EAAQjG,GACP,MAAVA,GAA4B,MAAViG,GAGtBnZ,GAAQkT,EAAQ,SAAUhlB,GAAS,OAAOirB,EAAO5oB,KAAKrC,MAuItDqmY,UArIJ,SAAmB7uX,GACf,OAAOtP,GAAIsP,EAAOslX,IAqIlBl5Q,UAnIJ,SAAmB85C,EAAY5+H,GAC3B,IAAK,IAAIx4B,EAAI,EAAGA,EAAIo3J,EAAW96J,OAAQ0D,IACnC,GAAIw4B,EAAU4+H,EAAWp3J,GAAIA,EAAGo3J,GAC5B,OAAOp3J,EAGf,OAAQ,GA8HRusJ,MAAOA,GACPhsJ,KAxGJ,SAAc+jE,EAAM9rC,GAChB,GAAY,MAAR8rC,EACA,OAAO,EAEX,IAAK,IAAItkE,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAC7B,GAAIw4B,EAAU8rC,EAAKtkE,GAAIA,GACnB,OAAO,EAGf,OAAO,GAgGPwL,QAASA,GACT5J,IAAKA,GACL0L,OA9DJ,SAAgBg3D,EAAM9rC,GAClB,GAAY,MAAR8rC,EACA,OAAO,KAGX,IADA,IAAIjwB,EAAW,GACNr0C,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IACzBw4B,EAAU8rC,EAAKtkE,GAAIA,IACnBq0C,EAASt4C,KAAKuoE,EAAKtkE,IAG3B,OAAOq0C,GAqDPzmC,OA7CJ,SAAgB02D,EAAMq7B,EAAMwyH,GACxB,GAAY,MAAR7tJ,GAA2B,MAAX6tJ,EAChB,OAAO,KAGX,IADA,IAAIp9L,EAASo9L,EACJnyN,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAC7B+0B,EAAS4qE,EAAK5qE,EAAQuvC,EAAKtkE,GAAIA,GAEnC,OAAO+0B,GAsCPirW,qBAnCJ,SAA8B17T,EAAMl5C,GAC3Bk5C,GAGWA,EAAK3iE,MAAM,GACjB6J,QAAQ4f,MAuCtB,SAASokB,GAAS91C,EAAOumY,GAErB,IADA,IAAIC,EAAW,GAAKxmY,EACbwmY,EAAS5jY,OAAS2jY,GACrBC,EAAW,IAAMA,EAErB,OAAOA,EAsDX,SAASC,GAAmBzmY,GACxB,MAAqB,iBAAVA,EACA,GAEJA,EAAM0wB,WAAWzwB,QAAQ,0BAA2B,OAM/D,IAAIymY,GAA2BzrX,OAAO67C,OAAO,CACzCixE,UAAW,KACXjyF,SAAUA,GACV6wV,qBAjEJ,SAA8BlmY,EAAOmV,GAEjC,IADA,IAAIylB,EAAS,GACJ/0B,EAAI7F,EAAO6F,GAAKsP,EAAMtP,IAC3B+0B,EAAOh5B,KAAKiE,GAEhB,OAAO+0B,GA6DPg2H,UArDJ,SAAmBrxJ,GACf,MAAiB,KAAVA,IAAiB05C,MAAMptB,WAAWtsB,KAAWi9G,SAASj9G,IAqD7D4mY,kBAnDJ,WAEI,OAAOx5X,OAAOwM,kBAAoB,kBAkDlCitX,YAhDJ,SAAqB7mY,GAIjB,MAHqB,iBAAVA,IACPA,EAAQiuC,SAASjuC,EAAO,KAEP,iBAAVA,EACAgd,KAAKs7B,MAAMt4C,GAGX,MAyCX8mY,SAtCJ,SAAkB3iX,EAAQ4iX,GAEtB,IADA,IAAIhvL,EAAM,GACDzxM,EAAI,EAAGA,EAAIygY,EAAOzgY,IACvByxM,GAAOjqK,OAAOo3O,aAAsB,IAAT/gQ,GAC3BA,KAAY,EAEhB,OAAO4zL,GAiCPivL,sCA/BJ,SAA+ChnY,GAC3C,MAAqB,iBAAVA,EACA,GAEJymY,GAAmBzpX,KAAK06B,MAAc,IAAR13C,GAAe,MA4BpDymY,mBAAoBA,GACpB1xH,IAdJ,SAAaxiQ,GACT,OAAiB,MAAVA,EAAiB,KAAOA,EAAO2B,OAAO,SAAUmnK,EAAOr7K,GAAS,OAAOq7K,EAAQr7K,GAAU,MA6BpG,SAASinY,GAAcvuV,EAAMwuV,EAAa5mV,GAGtC,QAFoB,IAAhB4mV,IAA0BA,GAAc,QAC1B,IAAd5mV,IAAwBA,EAAY,MACnC5H,EACD,OAAO,KAEX,IAAIyuV,EAAa,CAACzuV,EAAKC,cAAeD,EAAKE,WAAa,EAAGF,EAAKG,WAAW3wC,IAAI,SAAU64I,GAAQ,OAAOjrG,GAASirG,EAAM,KAAOtyG,KAAK6R,GAInI,OAHI4mV,IACAC,GAAc,IAAM,CAACzuV,EAAKI,WAAYJ,EAAKK,aAAcL,EAAKM,cAAc9wC,IAAI,SAAU64I,GAAQ,OAAOjrG,GAASirG,EAAM,KAAOtyG,KAAK,MAEjI04V,EAKX,SAASC,GAAwBpnY,GAC7B,IAAKA,EACD,OAAO,KAEX,IAAIoJ,EAAKpJ,EAAMghB,MAAM,KAAM+vD,EAAU3nE,EAAG,GAAIi+X,EAAUj+X,EAAG,GACzD,IAAK2nE,EACD,OAAO,KAEX,IAAI04G,EAAS14G,EAAQ/vD,MAAM,KAAK9Y,IAAI,SAAUwvB,GAAK,OAAOuW,SAASvW,EAAG,MACtE,GAAiE,IAA7D+xJ,EAAO71K,OAAO,SAAU8jB,GAAK,OAAQgiB,MAAMhiB,KAAO90B,OAClD,OAAO,KAEX,IAAIq1C,EAAOwxI,EAAO,GAAI/nK,EAAQ+nK,EAAO,GAAIl5I,EAAMk5I,EAAO,GAClD/wI,EAAO,IAAIS,KAAKlB,EAAMv2B,EAAQ,EAAG6uB,GACrC,GAAImI,EAAKC,gBAAkBV,GACvBS,EAAKE,aAAel3B,EAAQ,GAC5Bg3B,EAAKG,YAActI,EAEnB,OAAO,KAEX,IAAK82V,GAAuB,aAAZA,EACZ,OAAO3uV,EAEX,IAAIrvC,EAAKg+X,EAAQrmX,MAAM,KAAK9Y,IAAI,SAAU64I,GAAQ,OAAO9yG,SAAS8yG,EAAM,MAAStjG,EAAQp0C,EAAG,GAAIq0C,EAAUr0C,EAAG,GAAIs0C,EAAUt0C,EAAG,GAU9H,OATIo0C,GAAS,GAAKA,EAAQ,IACtB/E,EAAKolJ,SAASrgJ,GAEdC,GAAW,GAAKA,EAAU,IAC1BhF,EAAK4uV,WAAW5pV,GAEhBC,GAAW,GAAKA,EAAU,IAC1BjF,EAAK6uV,WAAW5pV,GAEbjF,EAGX,IAgCQ8uV,GAhCJC,GAAyBxsX,OAAO67C,OAAO,CACvCixE,UAAW,KACXk/P,cAAeA,GACfG,wBAAyBA,KASzBM,GAA2B,6BAC3BC,GAAiB,CAAC,aAAc,WAAY,YAAa,eACzDC,GAAyB,CAAC,YAAa,WAAY,aAAc,cACjEC,GAAW,GAgBXC,IACIN,GAAO,CACP9oW,OAAQ,QACRlwB,OAAQ,QACRu5X,OAAQ,OACRtsQ,MAAO,OACPhoG,MAAO,MACPu0W,KAAM,MACNC,MAAO,OAEY,SAAU1zV,GAC7B,GAAmC,kBAAxBszV,GAAStzV,GAChB,OAAOszV,GAAStzV,GAEpB,IAAIrD,EAAK9H,SAAS9yB,cAAckxX,GAAKjzV,IAAc,OAE/C4wF,GADJ5wF,EAAY,KAAOA,KACarD,EAMhC,OALKi0F,IACDj0F,EAAG5jC,aAAainC,EAAW,WAC3B4wF,EAAsC,mBAAjBj0F,EAAGqD,IAE5BrD,EAAK,KACE22V,GAAStzV,GAAa4wF,IAoCrC,SAAS+iQ,GAAUnhX,GAEf,OADkBA,EACCkE,QADDlE,EACuB+uN,WAQ7C,SAASqyJ,GAAgBphX,GAGrB,IAFA,IAAIgQ,EAAM,GACNqxW,EAAUF,GAAUnhX,GACjBqhX,GACHrxW,EAAI10B,KAAK+lY,GACTA,EAAUA,EAAQ/gW,cAEtB,OAAOtQ,EAmBX,SAASsxW,GAAathX,GAClB,IAAIuhX,EAAcvhX,EAClB,OAAIuhX,EAAYC,SAELD,EAAYC,WAEnBD,EAAY14P,KAEL04P,EAAY14P,KAEnB04P,EAAYt9W,aAELs9W,EAAYt9W,eAEnBs9W,EAAYE,kBAELF,EAAYE,kBAIhBL,GAAgBphX,GAmB3B,IAAI0hX,GAA0BxtX,OAAO67C,OAAO,CACxCixE,UAAW,KACX2gQ,yBA7IJ,SAAkC3hX,GAC9BA,EAAM2gX,KAA4B,GA6IlCiB,2BA3IJ,SAAoC5hX,GAChC,OAA2C,IAApCA,EAAM2gX,KA2IbI,iBAAkBA,GAClBc,oBAhHJ,SAA6BC,EAAoB9hX,GAE7C,IADA,IAAI+hX,EAAgBZ,GAAUnhX,GACvB+hX,GAAe,CAClB,IAAIC,EAAeF,EAAmBG,WAAWF,EAAe,YAChE,GAAIC,EACA,OAAOA,EAEXD,EAAgBA,EAAczhW,cAElC,OAAO,MAwGP4hW,kBAhGJ,SAA2Bn/X,EAASq1B,GAChCr1B,EAAQigB,iBAAiB,UAAWoV,GACpCr1B,EAAQigB,iBAAiB,QAASoV,GAClCr1B,EAAQigB,iBAAiB,QAASoV,GAGlCr1B,EAAQigB,iBAAiB,UAAWoV,GACpCr1B,EAAQigB,iBAAiB,QAASoV,IA0FlC+oW,UAAWA,GACXgB,qBA/EJ,SAA8Bp/X,EAASid,GACnC,SAAKA,IAAUjd,IAGRu+X,GAAathX,GAAOrf,QAAQoC,IAAY,GA4E/Cq+X,gBAAiBA,GACjBgB,mBA3DJ,SAA4BpiX,GACxBA,EAAMyhX,kBAAoBH,GAAathX,IA2DvCshX,aAAcA,GACde,4BA7BJ,SAAqC7gB,EAAoBsZ,EAAU96W,EAAOoY,GACtE,IAEI1Y,EAFYuvO,GAAS2xI,GAAgB5gX,GAEf,CAAEk8H,SAAS,QAAS//I,EADvB8yP,GAAS4xI,GAAwB7gX,GAMhDwhW,GAAsBA,EAAmB8gB,gCACzC9gB,EAAmB8gB,+BAA+BxH,EAAU96W,EAAOoY,EAAU1Y,GAIjFo7W,EAAS93W,iBAAiBhD,EAAOoY,EAAU1Y,MAyB/C6iX,GAA0B,mCAC1BC,GAA0B,aAC1BC,GAAc,GA2BlB,SAASC,GAAarnI,EAAO9kN,QACJ,IAAjBA,IAA2BA,EAAe,GAC1C8kN,EAAMx/P,OAAS,GACfgnB,OAAOyZ,WAAW,WAAc,OAAO++N,EAAMtwP,QAAQ,SAAU4jC,GAAQ,OAAOA,OAAe4H,GAUrG,SAAS0tJ,GAASt1J,EAAMogN,EAAM4zI,GAK1B,IAAI78O,EAEJ,YANkB,IAAd68O,IAAwBA,GAAY,GAMjC,WAEH,IADA,IAAIprY,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAGzB,IAAI8B,EAAUxR,KAGVkrY,EAAUD,IAAc78O,EAK5BjjI,OAAO+Y,aAAakqH,GAEpBA,EAAUjjI,OAAOyZ,WAAW,WAGxBwpH,EAAU,KAEL68O,GAIDh0V,EAAKU,MAAMnmC,EAAS3R,IAEzBw3P,GAEC6zI,GACAj0V,EAAKU,MAAMnmC,EAAS3R,IAiBhC,IAAIsrY,GAA6B3uX,OAAO67C,OAAO,CAC3CixE,UAAW,KACX8hQ,OA1FJ,SAAgBn0V,EAAMt6B,GACdouX,GAAYpuX,KAGhBs6B,IACA8zV,GAAYpuX,IAAO,IAsFnB0uX,sBAnFJ,SAA+Bp0V,GAC3B,IAAIq0V,EAAQr0V,EAAKhlB,WAAWzwB,QAAQqpY,GAAyB,IAC7D,OAAOS,EAAM9hY,MAAM8hY,EAAMriY,QAAQ,KAAO,EAAGqiY,EAAMriY,QAAQ,MAAMqoC,MAAMw5V,KAA4B,IAkFjG7+N,WAhFJ,SAAoB39H,GAChB,SAAUA,GAAOA,EAAI4B,aAAe5B,EAAIpZ,MAAQoZ,EAAIqJ,QAgFpD4zV,gBA9EJ,SAAyB5nI,GACrBqnI,GAAarnI,EAAO,MA8EpB6nI,kBA5EJ,SAA2B7nI,GACvBqnI,GAAarnI,EAAO,IA4EpBqnI,aAAcA,GACdz+L,SAAUA,GACV2hI,QAtBJ,WAEI,IADA,IAAIu9D,EAAM,GACD/7X,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC+7X,EAAI/7X,GAAM4J,UAAU5J,GAExB,OAAO,SAAUkoC,GAAO,OAAO6zV,EAAIh2X,OAAO,SAAUi2X,EAAUzyW,GAAK,OAAOA,EAAEyyW,IAAc9zV,KAkB1F+zV,cAhBJ,SAAuB10V,GACfA,GACAA,OA2CR,SAAS20V,GAAiBj9W,EAAYk9W,EAAgBC,EAAgBC,GAClE,IAAIl+Q,EAASk+Q,EAAWC,GAA4BC,GAChDC,EAAkBL,EAAepiY,IAAI,SAAU+/E,GAAQ,MAAQ,CAC/DjoF,MAAOioF,EACP2iT,UAAWt+Q,EAAOl/F,EAAW/R,cAAe4sE,EAAKtjC,wBAMrD,OAJAgmV,EAAgBrwX,KAAK,SAAUE,EAAGC,GAAK,OAAOA,EAAEmwX,UAAYpwX,EAAEowX,YAC1DL,IACAI,EAAkBA,EAAgB/2X,OAAO,SAAUi3X,GAAc,OAAgC,IAAzBA,EAAWD,aAEhFD,EAAgBziY,IAAI,SAAU2iY,GAAc,OAAOA,EAAW7qY,QAQzE,SAAS8qY,GAAY/nY,GACjB,IAEIuD,EACA0M,EACA0N,EAJA2C,EAAItgB,EAAKsY,cACT3c,EAAI,IAAIsK,MAAMqa,EAAEzgB,OAAS,GAI7B,IAAK0D,EAAI0M,EAAI,EAAG0N,EAAMhiB,EAAEkE,OAAQoQ,GAAK0N,EAAKpa,EAAI0M,GAAK,EAC/CtU,EAAE4H,GAAK+c,EAAEpb,MAAM3B,EAAGA,EAAI,GAE1B,OAAO5H,EAEX,SAASgsY,GAAiBK,EAAMC,GAC5B,GAAoB,IAAhBD,EAAKnoY,QAAgC,IAAhBooY,EAAKpoY,OAC1B,OAAO,EAEX,IAIIoQ,EACA+iC,EALAk1V,EAASH,GAAYC,GACrBG,EAASJ,GAAYE,GACrBpjI,EAAQqjI,EAAOroY,OAASsoY,EAAOtoY,OAC/BuoY,EAAY,EAGhB,IAAKn4X,EAAI,EAAG+iC,EAAMk1V,EAAOroY,OAAQoQ,EAAI+iC,EAAK/iC,IAAK,CAC3C,IAEIo4X,EAFApxW,EAAIixW,EAAOj4X,GACXioH,OAAI,EAER,IAAKA,EAAI,EAAGmwQ,EAAOF,EAAOtoY,OAAQq4H,EAAImwQ,EAAMnwQ,IAEpCjhG,IADIkxW,EAAOjwQ,IAEXkwQ,IAIZ,OAAOA,EAAY,EAAK,EAAIA,EAAavjI,EAAQ,EAErD,SAAS6iI,GAA0BM,EAAMC,GAKrC,IAJA,IAAIxwX,EAAIuwX,EAAK9qY,QAAQ,MAAO,IACxBwa,EAAIuwX,EAAK/qY,QAAQ,MAAO,IACxBkiN,EAAS,EAEJ77M,EAAI,EAAGA,EAAIkU,EAAE5X,OAAQ0D,IAAK,CAC/B,IAAIk1K,EAAM/gK,EAAE/S,QAAQ8S,EAAElU,KACT,IAATk1K,IAIJ2mC,GAAoC,KAAxB1nM,EAAE7X,OADF44K,GAC+B/gK,EAAE7X,OAC7Cu/M,GAAUA,GAEd,OAAOA,EAGX,IAAIkpL,GAA+BpwX,OAAO67C,OAAO,CAC7CixE,UAAW,KACXujQ,kBA3FJ,SAA2BC,EAAaC,EAAalB,GACjD,IAAImB,EAAe,GACfC,EAAgBH,EAAY33X,OAAO,SAAUwZ,GAC7C,OAAQo+W,EAAY3kY,KAAK,SAAU8kY,GAAc,OAAOA,IAAev+W,MAO3E,OALIs+W,EAAc9oY,OAAS,GACvB8oY,EAAc55X,QAAQ,SAAU85X,GAC5B,OAAOH,EAAaG,GAAgBvB,GAAiBuB,EAActB,KAGpEmB,GAkFPpB,iBAAkBA,GAClBS,YAAaA,GACbJ,iBAAkBA,GAClBD,0BAA2BA,KAc3BoB,GAAmB,CAEnBroB,kBAAmB,WAEnBsoB,kBAAmB,aAEnBC,mBAAoB,cAEpBC,iBAAkB,YAGlBC,0BAA2B,qBAE3BC,cAAe,MAEfC,eAAgB,YAEhBC,eAAgB,SAEhBC,eAAgB,OAEhBC,gBAAiB,QAEjBC,gBAAiB,QAEjBC,gBAAiB,cAEjBC,gBAAiB,QAGjBC,eAAgB,cAEhBC,gBAAiB,cAEjBC,cAAe,YAEf3oL,MAAO,QAEPlgL,MAAO,QAEPsmO,OAAQ,SAERwiI,MAAO,OAEPpsY,MAAO,QAEPmyN,SAAU,WAEVtwN,KAAM,OAENsT,KAAM,OAENk3X,OAAQ,SAERC,SAAU,WAEVC,YAAa,eAEbC,aAAc,UAEd57V,KAAM,OAENz9B,OAAQ,SAERhQ,QAAS,UAETspY,SAAU,WAEVC,SAAU,WAEVC,QAAS,MAETC,UAAW,cAEXC,gBAAiB,QAEjBC,mBAAoB,QAEpBC,cAAe,OAEfC,eAAgB,QAEhBC,WAAY,QAEZC,cAAe,QAEfC,WAAY,cAEZC,WAAY,OAEZt9B,QAAS,OAET1wJ,KAAM,OAENiuL,UAAW,aAEXC,UAAW,aAEXC,WAAY,cACZC,QAAS,WAETC,cAAe,MAEfC,eAAgB,OAEhBC,WAAY,QAmBhB,SAASC,GAAiBhxH,EAAUwrH,EAAoB5kY,EAAQqqY,GAC5D,IAAIC,EAAmB,KAEnB10G,EAAQ51R,GAAUA,EAAOuqY,YAAY30G,MAKzC,GAJIA,IACA00G,EAAmB10G,EAAMxc,IAGzBwrH,IAAuB0F,EAAkB,CACzC,IAAIE,EAAe5F,EAAmBt1G,WAClCk7G,IACAF,EAAmBE,EAAapxH,IAIxC,IAAIkxH,EAqBC,CACD,IAAI/vU,EAAOp1B,SAAS9yB,cAAc,QAC9B87W,EAAWyZ,GAAiBxuH,GAYhC,OAXK+0G,IACIkc,EAKDlc,EAAW/0G,GAJX7zO,QAAQ24B,KAAK,8BAAgCk7M,GAC7C+0G,EAAW,KAMnB5zT,EAAKlxD,aAAa,QAAS,mBAAqB8kX,GAChD5zT,EAAKlxD,aAAa,eAAgB,MAC3BkxD,EAlCP,IAAIkwU,OAAiB,EACrB,GAAgC,mBAArBH,EACPG,EAAiBH,QAEhB,IAAgC,iBAArBA,EAIZ,MAAM,IAAIz7W,MAAM,6DAHhB47W,EAAiBH,EAKrB,MAA8B,iBAAnBG,EACA/O,EAAa+O,GAEfrO,EAAgBqO,GACdA,OAGPllW,QAAQ24B,KAAK,qEAqBzB,IAAIwsU,GAAyB1zX,OAAO67C,OAAO,CACvCixE,UAAW,KACX8jQ,iBAAkBA,GAClB+C,WAlEJ,SAAoBvxH,EAAUwrH,EAAoB5kY,GAC9C,IAAI4qY,EAAeR,GAAiBhxH,EAAUwrH,EAAoB5kY,GAClE,GAAI4qY,EAAavoX,UAAU5e,QAAQ,YAAc,EAC7C,OAAOmnY,EAEX,IAAIC,EAAU1lW,SAAS9yB,cAAc,QAErC,OADAw4X,EAAQv4X,YAAYs4X,GACbC,GA4DPT,iBAAkBA,KASlBU,GAA2B,WAC3B,SAASA,KAwDT,OAtDAA,EAAUC,gBAAkB,EAC5BD,EAAUE,YAAc,EACxBF,EAAUG,UAAY,EACtBH,EAAUI,SAAW,EACrBJ,EAAUK,eAAiB,EAC3BL,EAAUM,WAAa,EACvBN,EAAUO,gBAAkB,GAC5BP,EAAUQ,gBAAkB,IAC5BR,EAAUS,kBAAoB,GAC9BT,EAAUU,sBAAwB,WAClCV,EAAUW,sBAAwB,YAClCX,EAAUY,kBAAoB,QAC9BZ,EAAUa,gBAAkB,MAC5Bb,EAAUc,cAAgB,EAC1Bd,EAAUe,QAAU,EACpBf,EAAUgB,aAAe,GACzBhB,EAAUiB,UAAY,GACtBjB,EAAUkB,UAAY,GACtBlB,EAAUmB,WAAa,GACvBnB,EAAUoB,UAAY,GACtBpB,EAAUqB,SAAW,GACrBrB,EAAUsB,OAAS,GACnBtB,EAAUuB,UAAY,GACtBvB,EAAUwB,SAAW,GACrBxB,EAAUyB,WAAa,GACvBzB,EAAU0B,MAAQ,GAClB1B,EAAU2B,MAAQ,GAClB3B,EAAU4B,MAAQ,GAClB5B,EAAU6B,MAAQ,GAClB7B,EAAU8B,MAAQ,GAClB9B,EAAU+B,MAAQ,GAClB/B,EAAUgC,OAAS,IACnBhC,EAAUiC,YAAc,GACxBjC,EAAUkC,cAAgB,GAC1BlC,EAAUmC,cAAgB,GAC1BnC,EAAUoC,aAAe,GACzBpC,EAAUqC,wBAA0B,WACpCrC,EAAUsC,wBAA0B,WACpCtC,EAAUuC,2BAA6B,aACvCvC,EAAUwC,2BAA6B,aACvCxC,EAAUyC,iCAAmC,SAC7CzC,EAAU0C,OAAS,SACnB1C,EAAU2C,mBAAqB,mBAC/B3C,EAAU4C,WAAa,MACvB5C,EAAU6C,cAAgB,SAC1B7C,EAAU8C,kBAAoB,SAC9B9C,EAAU+C,iBAAmB,QAC7B/C,EAAUgD,uBAAyB,aACnChD,EAAUiD,qBAAuB,qBACjCjD,EAAUkD,aAAe,QACzBlD,EAAUmD,aAAe,QACzBnD,EAAUoD,YAAc,OACxBpD,EAAUqD,SAAW,MACrBrD,EAAUsD,UAAY,OACftD,EAzDoB,GAqE/B,SAASuD,GAAavrX,EAAOwrX,GACzB,OAAQxrX,EAAMi/F,OAASj/F,EAAM2E,WAAa6mX,EAsF9C,IAsYWC,GAtYPC,GAA6Bx3X,OAAO67C,OAAO,CAC3CixE,UAAW,KACXuqQ,aAAcA,GACdI,eAvFJ,SAAwB3rX,GAEpB,IAAIi/F,EAAQj/F,EAAMi/F,MAClB,MAAqB,iBAAVA,GAAsBA,GACrBj/F,EAAM6+K,UAAY7+K,EAAM8+K,UAAY9+K,EAAMsvK,QAA0B,IAAhBtvK,EAAMi/F,OAA+B,KAAhBj/F,EAAMi/F,WAE1E9iH,IAAV8iH,GAkFP2sR,8BAhFJ,SAAuC5rX,GACnC,IAAI6rX,EAAc9kW,OAAOo3O,aAAan+P,EAAM8rX,UAO5C,GAAIP,GAAavrX,EAAOgoX,GAAUgB,cAC9B,OAAO,EAGX,GAAIhpX,EAAMsvK,QAAUtvK,EAAM6+K,QACtB,OAAO,EAEX,GAAI+2L,EAAO51W,EAAM3L,KAAM,CAGnB,IAAI03X,EAA0C,IAArB/rX,EAAM3L,IAAIxY,OAG/BmwY,EAiDZ,SAA6ChsX,GACzC,OAAQi0W,KAAmBD,MApFC,QAqFxBh0W,EAAM3L,KApFuB,KAqF7B2L,EAAM8rX,SApDkCG,CAAoCjsX,GAC5E,OAAO+rX,GAAsBC,EAIjC,MAxCuB,sGAwCKrrY,QAAQkrY,IAAgB,GAuDpDK,+BA5CJ,SAAwCpK,EAAoBqK,EAAeC,EAASlvY,EAAQmvY,GACxF,IAAIC,EAAkBxK,EAAmByK,+BACrCC,EAAatvY,EAAOuqY,YAAYvgC,sBAEpC,IAAKolC,IAAoBE,EACrB,OAAO,EAEX,IAAIhrT,EAAS,CACTxhE,MAAOmsX,EACPE,QAASA,EACTnvY,OAAQA,EACRykX,IAAKmgB,EAAmB2K,SACxBrxP,KAAMgxP,EACN5kY,KAAM4kY,EAAQ5kY,KACd+7V,OAAQrmW,EAAOuqY,YACfv+X,QAAS44X,EAAmB/lP,aAC5B6lO,UAAWkgB,EAAmB4K,gBAGlC,SAAIF,IACuBA,EAAWhrT,OAMlC8qT,GAEOA,EAAgB9qT,MA+B3BmrT,GAAwBz4X,OAAO67C,OAAO,CACtCixE,UAAW,KACX7sH,KARJ,SAAchT,GACV,IAAIgT,EAAO,GAEX,OADAhT,EAAI4J,QAAQ,SAAU++F,EAAGz1F,GAAO,OAAOF,EAAK7Y,KAAK+Y,KAC1CF,KAkNPy4X,GAA0B14X,OAAO67C,OAAO,CACxCixE,UAAW,KACX6rQ,eA9FJ,SAAwB7sX,GACpB,IAII8sX,EAAK,EACLC,EAAK,EAELC,EAAK,EACLC,EAAK,EA4CT,MA1CI,WAAYjtX,IACZ+sX,EAAK/sX,EAAMktX,QAEX,eAAgBltX,IAChB+sX,GAAM/sX,EAAMy0U,WAAa,KAEzB,gBAAiBz0U,IACjB+sX,GAAM/sX,EAAMu0U,YAAc,KAE1B,gBAAiBv0U,IACjB8sX,GAAM9sX,EAAMs0U,YAAc,KAG1B,SAAUt0U,GAASA,EAAMqqM,OAASrqM,EAAMmtX,kBACxCL,EAAKC,EACLA,EAAK,GAETC,EA3BiB,GA2BZF,EACLG,EA5BiB,GA4BZF,EACD,WAAY/sX,IACZitX,EAAKjtX,EAAMi0U,QAEX,WAAYj0U,IACZgtX,EAAKhtX,EAAMg0U,SAEVg5C,GAAMC,IAAOjtX,EAAMw0U,YACG,GAAnBx0U,EAAMw0U,WACNw4C,GApCU,GAqCVC,GArCU,KAwCVD,GAvCU,IAwCVC,GAxCU,MA4CdD,IAAOF,IACPA,EAAME,EAAK,GAAM,EAAI,GAErBC,IAAOF,IACPA,EAAME,EAAK,GAAM,EAAI,GAElB,CACHG,MAAON,EACPO,MAAON,EACPO,OAAQN,EACRO,OAAQN,IAsCZO,YA5BJ,SAAqBC,GACjB,MAAI,YAAaA,EACgB,GAAtBA,EAAWvxG,QAGL,IADJuxG,EAAWxuR,OAASwuR,EAAWx2T,SAyB5Cy2T,cAdJ,SAAuBC,EAAIC,EAAIC,GAE3B,GAAmB,IAAfA,EACA,OAAO,EAEX,IAAIC,EAAQ73X,KAAKqiC,IAAIq1V,EAAGvzM,QAAUwzM,EAAGxzM,SACjC2zM,EAAQ93X,KAAKqiC,IAAIq1V,EAAGtzM,QAAUuzM,EAAGvzM,SACrC,OAAOpkL,KAAKukC,IAAIszV,EAAOC,IAAUF,KA0FjCG,GAA4B95X,OAAO67C,OAAO,CAC1CixE,UAAW,KACXitQ,oBApEJ,SAA6BC,EAAUC,GACnC,GAAKD,EAAL,CAoCA,IAjCA,IAAIx5V,EAAa,SAAU05V,EAAOC,GAC9B,IAAIC,EAAYH,EAAaC,EAAM1wX,IAC/B6wX,EAAYJ,EAAaE,EAAM3wX,IAC/B8wX,OAA0BryY,IAAdmyY,EACZG,OAA0BtyY,IAAdoyY,EAGhB,OAF4BC,GAAaC,EAK9BH,EAAYC,EAJQC,GAAcC,EAkBzCD,EACO,GAEH,EALGJ,EAAMM,WAAaL,EAAMK,YAUpCC,GAAuB,EAClBpvY,EAAI,EAAGA,EAAI2uY,EAASryY,OAAS,EAAG0D,IAGrC,GAAIm1C,EAFOw5V,EAAS3uY,GACT2uY,EAAS3uY,EAAI,IACa,EAAG,CACpCovY,GAAuB,EACvB,MAGJA,GACAT,EAAS36X,KAAKmhC,KAuBlBk6V,qBApBJ,SAA8B/iR,EAAOlhG,GACjC,IAAIkkX,EAAW,IAEf,SAASC,EAAqBC,GAC1BA,EAAahkY,QAAQ,SAAUqwI,GAE3B,GAAIA,EAAK7I,OAAS6I,EAAK4zP,cAAe,CAClCH,EAASvzY,KAAK8/I,EAAK/mI,KACnB,IAAIA,EAAMw6X,EAASnnW,KAAK,KACxB/c,EAASywH,EAAM/mI,GACfy6X,EAAqB1zP,EAAK6zP,oBAC1BJ,EAASl4W,SATrBm4W,CAAqBjjR,MAiCrBqjR,GAAwBh7X,OAAO67C,OAAO,CACtCixE,UAAW,KACXmuQ,aARJ,SAAsBtrU,GAClB,IAAI93D,EAAM,IAAI1G,IAEd,OADAw+D,EAAK94D,QAAQ,SAAUkoB,GAAK,OAAOlnB,EAAIxR,IAAI04B,KACpClnB,KAcP2hC,GAAgD,WAShD,OARAA,GAAWx5B,OAAOuqB,QAAU,SAASvmC,GACjC,IAAK,IAAIokB,EAAG/c,EAAI,EAAGkwC,EAAIz+B,UAAUnV,OAAQ0D,EAAIkwC,EAAGlwC,IAE5C,IAAK,IAAI0hI,KADT3kH,EAAItL,UAAUzR,GACO2U,OAAOkW,UAAUgb,eAAexY,KAAKtQ,EAAG2kH,KACzD/oI,EAAE+oI,GAAK3kH,EAAE2kH,IAEjB,OAAO/oI,IAEKm3C,MAAM33C,KAAMsZ,YAG5B84F,GADQp8D,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAASA,GAAS,GAAIgvV,GAAe6B,IAAazJ,GAAef,GAAW2M,IAAYnH,GAAWmI,IAAamB,IAAgByB,IAAkBrO,GAAe2R,IAAY8D,IAAgBiB,IAAWC,IAAajN,IAAcjE,GAAcsS,IAAekB,IAAWlY,GAS5aoY,GAAgC,WAChC,SAASA,EAAex9P,EAAW1yC,QACb,IAAd0yC,IAAwBA,EAAY,QAC3B,IAAT1yC,IAAmBA,EAAO,GAC9BxnG,KAAK48H,UAAYsd,EACjBl6I,KAAKwnG,KAAOA,EAahB,OAXAkwS,EAAehlX,UAAU7uB,KAAO,WAC5B,IAAI8zY,EAAc33Y,KAAK48H,UAEvB,OADA58H,KAAK48H,WAAa58H,KAAKwnG,KAChBmwS,GAEXD,EAAehlX,UAAUklX,KAAO,WAC5B,OAAO53Y,KAAK48H,WAEhB86Q,EAAehlX,UAAU1D,KAAO,SAAU9X,GACtClX,KAAK48H,WAAa1lH,GAEfwgY,EAlByB,IA2BzB3D,GAGR12W,EAAQ02W,gBAAkB12W,EAAQ02W,cAAgB,KAFnCA,GAAa,YAAkB,GAAK,cAClDA,GAAcA,GAAa,SAAe,GAAK,WAEnD,IAAIxvY,GAAyB,WACzB,SAASA,EAAQ0uB,GACb,IAAIyuB,EAAQ1hD,KACZA,KAAKwrF,OAASnuD,EAAQ02W,cAAc8D,YACpC73Y,KAAK83Y,WAAa,KAClB93Y,KAAK+3Y,QAAU,GACf9kX,EAAS,SAAU1xB,GAAS,OAAOmgD,EAAMg4P,OAAOn4S,IAAW,SAAUuoF,GAAU,OAAOpoC,EAAMs2V,SAASluT,KA2CzG,OAzCAvlF,EAAQ+wB,IAAM,SAAU2iX,GACpB,OAAO,IAAI1zY,EAAQ,SAAUC,GACzB,IAAI0zY,EAAqBD,EAAS9zY,OAC9Bg0Y,EAAiB,IAAI5tY,MAAM2tY,GAC/B7kY,GAAQ4kY,EAAU,SAAU/jX,EAASvqB,GACjCuqB,EAAQ7V,KAAK,SAAU9c,GACnB42Y,EAAexuY,GAASpI,EAEG,KAD3B22Y,GAEI1zY,EAAQ2zY,UAM5B5zY,EAAQC,QAAU,SAAUjD,GACxB,OAAO,IAAIgD,EAAQ,SAAUC,GAAW,OAAOA,EAAQjD,MAE3DgD,EAAQmuB,UAAUrU,KAAO,SAAU44B,GAC3Bj3C,KAAKwrF,SAAWnuD,EAAQ02W,cAAc8D,YACtC73Y,KAAK+3Y,QAAQn0Y,KAAKqzC,GAGlBA,EAAKj3C,KAAK83Y,aAGlBvzY,EAAQmuB,UAAUjpB,IAAM,SAAUs8T,GAC9B,IAAIrkR,EAAQ1hD,KACZ,OAAO,IAAIuE,EAAQ,SAAUC,GAAW,OAAOk9C,EAAMrjC,KAAK,SAAU9c,GAAS,OAAOiD,EAAQuhU,EAAQxkU,SAExGgD,EAAQmuB,UAAUy3V,WAAa,SAAUiuB,EAAoBC,GACzD,OAAOr4Y,KAAKwrF,QAAUnuD,EAAQ02W,cAAc8D,YAAcO,EAAqBC,EAAWr4Y,KAAK83Y,aAEnGvzY,EAAQmuB,UAAUgnR,OAAS,SAAUn4S,GACjCvB,KAAKwrF,OAASnuD,EAAQ02W,cAAchvO,SACpC/kK,KAAK83Y,WAAav2Y,EAClB8R,GAAQrT,KAAK+3Y,QAAS,SAAUO,GAAU,OAAOA,EAAO/2Y,MAE5DgD,EAAQmuB,UAAUslX,SAAW,SAAUluT,GACnC/+C,QAAQ24B,KAAK,QAEVn/D,EAjDkB,GA6DzBogS,GAAuB,WACvB,SAASA,IACL3kS,KAAKw8T,WAAY,IAAI9hR,MAAOwmE,UAOhC,OALAyjL,EAAMjyQ,UAAU6lX,MAAQ,SAAUtgE,GAC9B,IAAIz6R,GAAY,IAAI9C,MAAOwmE,UAAalhH,KAAKw8T,UAC7CzxR,QAAQslC,KAAK4nQ,EAAM,MAAQz6R,GAC3Bx9C,KAAKw8T,WAAY,IAAI9hR,MAAOwmE,WAEzByjL,EATgB,GAkBvB6zG,GAAkC,WAClC,SAASA,IACLx4Y,KAAKy4Y,aAAe,GAmCxB,OAjCAD,EAAiB9lX,UAAUgmX,gBAAkB,SAAUj8X,GACnD,IAAK,IAAI5U,EAAI,EAAGA,EAAI4U,EAAKtY,OAAQ0D,IAC7B7H,KAAKy4Y,aAAah8X,EAAK5U,KAAM,GAGrC2wY,EAAiB9lX,UAAUimX,aAAe,SAAU5qC,EAAO6qC,GAEvD7qC,EAAQ37P,GAAEisR,eAAetwB,GAEzB,IADA,IAAI72V,EAAQ,IACC,CACT,IAAI2hY,OAAU,EAgBd,GAfI9qC,GACA8qC,EAAU9qC,EACI,IAAV72V,IACA2hY,GAAW,IAAM3hY,IAGhB0hY,GACLC,EAAUD,EACI,IAAV1hY,IACA2hY,GAAW,IAAM3hY,IAIrB2hY,EAAU,GAAK3hY,GAEdlX,KAAKy4Y,aAAaI,GAEnB,OADA74Y,KAAKy4Y,aAAaI,IAAW,EACtBA,EAEX3hY,MAGDshY,EArC2B,GA8ClCM,GAAyB,WACzB,SAASA,EAAQhvT,EAAQivT,GAIrB,GAHA/4Y,KAAKg5Y,aAAe,GACpBh5Y,KAAKi5Y,uBAAyB,GAC9Bj5Y,KAAK8gK,WAAY,EACZh3E,GAAWA,EAAOovT,YAAvB,CAGAl5Y,KAAKm5Y,cAAgBrvT,EACrB9pF,KAAK+4Y,OAASA,EACd/4Y,KAAK+4Y,OAAOt9T,IAAI,sCAChBz7E,KAAKo5Y,kBACLp5Y,KAAKq5Y,cACL,IAAIC,EAAgBt5Y,KAAKu5Y,mBACzBv5Y,KAAKw5Y,UAAUF,GACft5Y,KAAK+4Y,OAAOt9T,IAAI,yDAuMpB,OArMAq9T,EAAQpmX,UAAU6mX,iBAAmB,WACjC,OAAOnnS,GAAEt+F,OAAO9T,KAAKg5Y,cAAcvvY,IAAI,SAAUgwY,GAAa,OAAOA,EAAUC,gBAEnFZ,EAAQpmX,UAAU0mX,gBAAkB,WAChC,IAAI13V,EAAQ1hD,KACRA,KAAKm5Y,cAActlC,YACnB7zW,KAAKm5Y,cAActlC,WAAWxgW,QAAQ,SAAUsmY,GAAiB,OAAOj4V,EAAM9qB,aAAa+iX,MAGnGb,EAAQpmX,UAAUkE,aAAe,SAAU+iX,GAKvC,IAEIC,EAFeD,EAAcE,cAAcr4Y,QAAQ,kBAAmB,SAASob,cAEjDgxB,cAElC5tC,KAAKi5Y,uBAAuBW,GAAkBD,EAAcG,gBAEhEhB,EAAQpmX,UAAUqnX,2BAA6B,SAAU1uY,EAAS2uY,EAAwBC,GACtF,IAAIt9X,EAAMtR,EAAQyD,SACdorY,EAAkBD,EAAYA,EAAU5uY,EAAQ29B,aAAa,aAAUvkC,EAC3E,OAAOzE,KAAKghB,gBAAgBrE,EAAKq9X,EAAwB3uY,EAAS6uY,IAEtEpB,EAAQpmX,UAAU1R,gBAAkB,SAAUrE,EAAKq9X,EAAwB3uY,EAAS6uY,GAChF,GAAIl6Y,KAAKi5Y,wBAA0Bj5Y,KAAKi5Y,uBAAuBt8X,GAAM,CACjE,IACIw9X,EAAe,IAAIn6Y,KAAKi5Y,uBAAuBt8X,GAAKu9X,GAExD,OADAl6Y,KAAKo6Y,SAASD,EAAcH,GACrBG,EAEX,OAAO,MAEXrB,EAAQpmX,UAAU0nX,SAAW,SAAUC,EAAML,GACzC,IAAKK,EACD,MAAMhmX,MAAM,uCAEhBr0B,KAAKw5Y,UAAU,CAACa,GAAOL,IAE3BlB,EAAQpmX,UAAU8mX,UAAY,SAAUF,EAAeU,GACnDh6Y,KAAKs6Y,cAAchB,GACnBt5Y,KAAKu6Y,gBAAgBjB,GACrBt5Y,KAAKw6Y,qBAAqBlB,EAAe,uBAGrClnS,GAAE8rR,OAAO8b,IACTV,EAAcjmY,QAAQ2mY,GAE1Bh6Y,KAAKw6Y,qBAAqBlB,EAAe,yBAE7CR,EAAQpmX,UAAU2mX,YAAc,WAC5B,IAAI33V,EAAQ1hD,KAEZA,KAAKm5Y,cAAcD,YAAY7lY,QAAQrT,KAAKy6Y,kBAAkBlwW,KAAKvqC,OAGnEoyG,GAAEi4Q,cAAcrqX,KAAKg5Y,aAAc,SAAUr8X,EAAK88X,GAC9C,IAAIiB,EACAjB,EAAUY,KAAKM,kBAAoBlB,EAAUY,KAAKM,iBAAiBC,iBAAmBnB,EAAUY,KAAKM,iBAAiBC,gBAAgBC,gBACtIH,EAAwBjB,EAAUY,KAAKM,iBAAiBC,gBAAgBC,eAE5E,IA2IgB3qW,EACpBrwC,EA5IQi7Y,EAAoBp5V,EAAMq5V,sBAAsBL,EAAuBjB,EAAUY,KAAKl5Y,MACtF65Y,GA0IY9qW,EA1IqBupW,EAAUY,KA2InDx6Y,EAAO,CAAC,MAAMmZ,OA3I2C8hY,GA6ItD,IADe5qW,EAAY3F,KAAKoN,MAAMzH,EAAarwC,KA3IlD45Y,EAAUC,aAAesB,IAE7B,IAAIC,EAAmBz+X,OAAOC,KAAKzc,KAAKg5Y,cAAchpW,KAAK,MAC3DhwC,KAAK+4Y,OAAOt9T,IAAI,kBAAoBw/T,IAGxCnC,EAAQpmX,UAAU+nX,kBAAoB,SAAUS,GAC5C,IAAIC,EAAWD,EAAKP,iBACfQ,EAgBLn7Y,KAAKg5Y,aAAamC,EAASC,UALX,CACZf,KAAMa,EACNxB,aAAc,KACd0B,SAAUD,EAASC,UANnBrwW,QAAQ/V,MAAM,iBANVkmX,EAAKxoX,UAAUwd,YACJgrW,EAAKxoX,UAAUwd,YAAY/uC,KAG3B,GAAK+5Y,GAEuB,mBAUnDpC,EAAQpmX,UAAU4nX,cAAgB,SAAUhB,GACxC,IAAI53V,EAAQ1hD,KACZs5Y,EAAcjmY,QAAQ,SAAUqmY,GAC5Bh4V,EAAM25V,2BAA2B3B,EAAc,SAAUyB,EAAUC,GAC/D,IAAIl0N,EAAai0N,EAASG,kBACrBp0N,GAGLA,EAAW7zK,QAAQ,SAAU+1V,GACzB,IAAImyC,EAAY75V,EAAM85V,mBAAmBJ,EAAUhyC,EAAUgyC,SAAUhyC,EAAUh1U,UACjFslX,EAAatwC,EAAUniL,eAAiBs0N,SAKxDzC,EAAQpmX,UAAU6nX,gBAAkB,SAAUjB,GAC1C,IAAI53V,EAAQ1hD,KACZs5Y,EAAcjmY,QAAQ,SAAUqmY,GAC5Bh4V,EAAM25V,2BAA2B3B,EAAc,SAAUyB,EAAUC,GAC/DhpS,GAAEi4Q,cAAc8wB,EAASP,gBAAiB,SAAUtxN,EAAYmyN,GAE5D,GAAmB,kBAAfnyN,EAAJ,CAGA,IAAIoyN,EAAah6V,EAAMq5V,sBAAsBU,EAAYL,GACzD1B,EAAapwN,GAAY3xI,MAAM+hW,EAAcgC,WAK7D5C,EAAQpmX,UAAU2oX,2BAA6B,SAAU3B,EAAczmX,GAEnE,IADA,IAAIP,EAAYlW,OAAO24H,eAAeukQ,GAClB,MAAbhnX,GAAmB,CACtB,IAAIwd,EAAcxd,EAAUwd,YACxBA,EAAYxC,eAAe,qBAG3Bza,EAFeid,EAAYyqW,iBACZ36Y,KAAK27Y,YAAYzrW,IAGpCxd,EAAYlW,OAAO24H,eAAeziH,KAG1ComX,EAAQpmX,UAAUipX,YAAc,SAAUzrW,GACtC,GAAIA,EAAYyqW,kBAAoBzqW,EAAYyqW,iBAAiBS,SAC7D,OAAOlrW,EAAYyqW,iBAAiBS,SAExC,IAAIQ,EAAoB1rW,EAAYje,WAEpC,OADe2pX,EAAkB5wV,UAAU,EAAG4wV,EAAkB3yY,QAAQ,OAG5E6vY,EAAQpmX,UAAUqoX,sBAAwB,SAAUc,EAAYT,GAC5D,IAAI15V,EAAQ1hD,KACR87Y,EAAY,GAOhB,OANID,GACAzpS,GAAEi4Q,cAAcwxB,EAAY,SAAU3xQ,EAAY6xQ,GAC9C,IAAIR,EAAY75V,EAAM85V,mBAAmBJ,EAAUW,GACnDD,EAAUntY,OAAOu7H,IAAeqxQ,IAGjCO,GAEXhD,EAAQpmX,UAAU8oX,mBAAqB,SAAUQ,EAAYZ,EAAUhnX,GAEnE,QADiB,IAAbA,IAAuBA,GAAW,GACrB,YAAbgnX,EACA,OAAOp7Y,KAEN,GAAIA,KAAKm5Y,cAAcpvB,uBAAyB/pX,KAAKm5Y,cAAcpvB,sBAAsBr8U,eAAe0tW,GACzG,OAAOp7Y,KAAKm5Y,cAAcpvB,sBAAsBqxB,GAGhD,IAAI3B,EAAYz5Y,KAAKg5Y,aAAaoC,GAClC,OAAI3B,EACOA,EAAUC,cAEhBtlX,GACD2W,QAAQ/V,MAAM,0CAA4ComX,EAAW,uBAAyBY,GAE3F,OAGflD,EAAQpmX,UAAU8nX,qBAAuB,SAAUlB,EAAe2C,GAC9D,IAAIv6V,EAAQ1hD,KACZs5Y,EAAcjmY,QAAQ,SAAUqmY,GAC5Bh4V,EAAM25V,2BAA2B3B,EAAc,SAAUyB,GACrD,IAAIhiG,EAAUgiG,EAASc,GAClB9iG,GAGLA,EAAQ9lS,QAAQ,SAAUi2K,GAAc,OAAOowN,EAAapwN,YAIxEwvN,EAAQpmX,UAAUwpX,QAAU,SAAU/6Y,GAClC,OAAOnB,KAAKw7Y,mBAAmB,UAAWr6Y,GAAM,IAEpD23Y,EAAQpmX,UAAUxR,QAAU,WAExB,IAAIlhB,KAAK8gK,UAAT,CAGA9gK,KAAK+4Y,OAAOt9T,IAAI,2CAChB,IAAI69T,EAAgBt5Y,KAAKu5Y,mBACzBv5Y,KAAKw6Y,qBAAqBlB,EAAe,qBACzCt5Y,KAAKm5Y,cAAcpvB,sBAAwB,KAC3C/pX,KAAK8gK,WAAY,EACjB9gK,KAAK+4Y,OAAOt9T,IAAI,6DAEbq9T,EAtNkB,GA+N7B,SAASqD,GAAa3vX,EAAQ88J,EAAYsc,GACtC,IAAI7yK,EAAQqpX,GAAiB5vX,EAAO0jB,aAC/Bnd,EAAMspX,sBACPtpX,EAAMspX,oBAAsB,IAEhCtpX,EAAMspX,oBAAoBz4Y,KAAK0lL,GAEnC,SAASgzN,GAAc9vX,EAAQ88J,EAAYsc,GACvC,IAAI7yK,EAAQqpX,GAAiB5vX,EAAO0jB,aAC/Bnd,EAAMwpX,uBACPxpX,EAAMwpX,qBAAuB,IAEjCxpX,EAAMwpX,qBAAqB34Y,KAAK0lL,GAEpC,SAASkzN,GAAWhwX,EAAQ88J,EAAYsc,GACpC,IAAI7yK,EAAQqpX,GAAiB5vX,EAAO0jB,aAC/Bnd,EAAM0pX,oBACP1pX,EAAM0pX,kBAAoB,IAE9B1pX,EAAM0pX,kBAAkB74Y,KAAK0lL,GAEjC,SAAS4xN,GAAKE,GACV,OAAO,SAAUsB,GACDN,GAAiBM,GACvBtB,SAAWA,GAGzB,SAASuB,GAAUx7Y,GACf,OAAO,SAAUqrB,EAAQowX,EAAah3M,GAClCi3M,GAAcrwX,EAAQrrB,GAAM,EAAOqrB,EAAQowX,EAAa,OAGhE,SAASE,GAAS37Y,GACd,OAAO,SAAUqrB,EAAQowX,EAAah3M,GAClCi3M,GAAcrwX,EAAQrrB,GAAM,EAAMqrB,EAAQowX,EAAa,OAG/D,SAASC,GAAcrwX,EAAQrrB,EAAMizB,EAAU2oX,EAAgBC,EAAuBrzY,GAClF,GAAa,OAATxI,EAIJ,GAAqB,iBAAVwI,EAAX,CAKA,IAAIopB,EAAQqpX,GAAiB5vX,EAAO0jB,aAC/Bnd,EAAMuoX,oBACPvoX,EAAMuoX,kBAAoB,IAE9BvoX,EAAMuoX,kBAAkB13Y,KAAK,CACzBqjL,cAAe+1N,EACf5B,SAAUj6Y,EACVizB,SAAUA,SAXV2W,QAAQ/V,MAAM,qDAJd+V,QAAQ/V,MAAM,8CAkBtB,SAASioX,GAAU97Y,GACf,OAAO,SAAU47Y,EAAgBC,EAAuBrzY,GACpD,IACIopB,EADAmd,EAAuC,mBAAlB6sW,EAA+BA,EAAiBA,EAAe7sW,YAExF,GAAqB,iBAAVvmC,EAAoB,CAE3B,IAAI2/K,OAAa,EACb0zN,GACAjqX,EAAQqpX,GAAiBlsW,GACzBo5I,EAAa0zN,IAGbjqX,EAAQqpX,GAAiBlsW,GACzBo5I,EAAa,iBAEZv2J,EAAM6nX,kBACP7nX,EAAM6nX,gBAAkB,IAEvB7nX,EAAM6nX,gBAAgBtxN,KACvBv2J,EAAM6nX,gBAAgBtxN,GAAc,IAExCv2J,EAAM6nX,gBAAgBtxN,GAAY3/K,GAASxI,IAIvD,SAASi7Y,GAAiB5vX,GAItB,OAHKA,EAAOkhB,eAAe,sBACvBlhB,EAAOmuX,iBAAmB,IAEvBnuX,EAAOmuX,iBASlB,IA8JWuC,GA9JPtzQ,GAAoD,SAAUC,EAAYr9G,EAAQ7P,EAAK8gB,GACvF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DG,GAA8C,SAAUC,EAAYC,GACpE,OAAO,SAAU39G,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAAKutH,KAEvDizQ,GAA8B,WAC9B,SAASA,IACLn9Y,KAAKo9Y,iBAAmB,IAAI3vY,IAC5BzN,KAAKq9Y,kBAAoB,IAAI5vY,IAC7BzN,KAAKs9Y,oBAAsB,IAAI3vY,IAC/B3N,KAAKu9Y,qBAAuB,IAAI5vY,IAChC3N,KAAKw9Y,oBAAsB,GAC3Bx9Y,KAAKmlK,WAAY,EAEjBnlK,KAAKy9Y,YAAc,GAuHvB,IAAIC,EAYJ,OAjIAA,EAAiBP,EAUjBA,EAAazqX,UAAUirX,SAAW,SAAUC,EAAexT,EAAoBvgB,GAG3E,QAF4B,IAAxBA,IAAkCA,EAAsB,MAC5D7pX,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,gBAC/BukX,EAAqB,CACrB,IAAI3mM,EAAQknN,EAAmByT,iBAC/B79Y,KAAK89Y,kBAAkBj0B,EAAqB3mM,KAGpDi6N,EAAazqX,UAAUqrX,aAAe,SAAUxoW,EAAW2tI,GACvD,IAAI86N,EAAc96N,EAAQljL,KAAKq9Y,kBAAoBr9Y,KAAKo9Y,iBACpD3gT,EAAYuhT,EAAY9rY,IAAIqjC,GAKhC,OAJKknD,IACDA,EAAY,IAAI9uF,IAChBqwY,EAAY3pY,IAAIkhC,EAAWknD,IAExBA,GAEX0gT,EAAazqX,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,EAAUwiJ,GACrE,IAAIxhI,EAAQ1hD,KAGZ,YAFc,IAAVkjL,IAAoBA,GAAQ,GAChCljL,KAAK+9Y,aAAaxoW,EAAW2tI,GAAOrgL,IAAI69B,GACjC,WAAc,OAAOghB,EAAM/1B,oBAAoB4pB,EAAW7U,EAAUwiJ,KAE/Ei6N,EAAazqX,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,EAAUwiJ,QAC1D,IAAVA,IAAoBA,GAAQ,GAChCljL,KAAK+9Y,aAAaxoW,EAAW2tI,GAAO3wK,OAAOmuB,IAK/Cy8W,EAAazqX,UAAUurX,8BAAgC,SAAU1oW,EAAW7U,EAAUwiJ,GAElF,YADc,IAAVA,IAAoBA,GAAQ,GACzBljL,KAAKsrB,iBAAiBiqB,EAAYmoW,EAAeQ,SAAUx9W,EAAUwiJ,IAEhFi6N,EAAazqX,UAAUorX,kBAAoB,SAAUp9W,EAAUwiJ,QAC7C,IAAVA,IAAoBA,GAAQ,IAC/BA,EAAQljL,KAAKu9Y,qBAAuBv9Y,KAAKs9Y,qBAAqBz6Y,IAAI69B,IAEvEy8W,EAAazqX,UAAUyrX,qBAAuB,SAAUz9W,EAAUwiJ,QAChD,IAAVA,IAAoBA,GAAQ,IAC/BA,EAAQljL,KAAKu9Y,qBAAuBv9Y,KAAKs9Y,qBAAqB/qY,OAAOmuB,IAE1Ey8W,EAAazqX,UAAU+lU,cAAgB,SAAUnwU,GAC7CtoB,KAAKo+Y,oBAAoB91X,GAAO,GAChCtoB,KAAKo+Y,oBAAoB91X,GAAO,GAChCtoB,KAAKy9Y,YAAYn1X,EAAM5nB,OAAQ,GAEnCy8Y,EAAazqX,UAAU2rX,kBAAoB,SAAU/1X,GAC5CtoB,KAAKy9Y,YAAYn1X,EAAM5nB,OACxBV,KAAKy4V,cAAcnwU,IAG3B60X,EAAazqX,UAAU0rX,oBAAsB,SAAU91X,EAAO46J,GAC1D,IAAIxhI,EAAQ1hD,KACRu1C,EAAYjtB,EAAM5nB,KAClB49Y,EAAwB,SAAU7hT,GAAa,OAAOA,EAAUppF,QAAQ,SAAUqtB,GAC9EwiJ,EACAxhI,EAAM68V,cAAc,WAAc,OAAO79W,EAASpY,KAGlDoY,EAASpY,MAIjBg2X,EAAsBt+Y,KAAK+9Y,aAAaxoW,EAAYmoW,EAAeQ,SAAUh7N,IAC7Eo7N,EAAsBt+Y,KAAK+9Y,aAAaxoW,EAAW2tI,KAC7BA,EAAQljL,KAAKu9Y,qBAAuBv9Y,KAAKs9Y,qBAC/CjqY,QAAQ,SAAUqtB,GAC1BwiJ,EACAxhI,EAAM68V,cAAc,WAAc,OAAO79W,EAAS6U,EAAWjtB,KAG7DoY,EAAS6U,EAAWjtB,MAQhC60X,EAAazqX,UAAU6rX,cAAgB,SAAUtnW,GAE7Cj3C,KAAKw9Y,oBAAoB55Y,KAAKqzC,GAKzBj3C,KAAKmlK,YAENh6I,OAAOyZ,WAAW5kC,KAAKw+Y,gBAAgBj0W,KAAKvqC,MAAO,GAEnDA,KAAKmlK,WAAY,IAIzBg4O,EAAazqX,UAAU8rX,gBAAkB,WACrCx+Y,KAAKmlK,WAAY,EAMjB,IAAIs5O,EAAYz+Y,KAAKw9Y,oBAAoBh0Y,QACzCxJ,KAAKw9Y,oBAAsB,GAE3BiB,EAAUprY,QAAQ,SAAU4jC,GAAQ,OAAOA,OAK/CkmW,EAAae,SAAW,MACxBt0Q,GAAW,CACPK,GAAQ,EAAGgzQ,GAAU,kBACrBhzQ,GAAQ,EAAGgzQ,GAAU,uBACrBhzQ,GAAQ,EAAGgzQ,GAAU,yBACtBE,EAAazqX,UAAW,WAAY,MACxBgrX,EAAiB9zQ,GAAW,CACvCsxQ,GAAK,iBACNiC,GA3I2B,IAqJvBD,GAwCR7/W,EAAQ6/W,cAAgB7/W,EAAQ6/W,YAAc,KAtClC,oBAA0B,0BAErCA,GAAW,oBAA0B,yBAErCA,GAAW,uBAA6B,wCACxCA,GAAW,yBAA+B,2CAC1CA,GAAW,gBAAsB,gCACjCA,GAAW,aAAmB,oCAE9BA,GAAW,qBAA2B,2BAEtCA,GAAW,qBAA2B,0BAEtCA,GAAW,kBAAwB,mCACnCA,GAAW,sBAA4B,wCACvCA,GAAW,uBAA6B,yCACxCA,GAAW,WAAiB,2BAC5BA,GAAW,gBAAsB,iCACjCA,GAAW,gBAAsB,iCACjCA,GAAW,cAAoB,+BAC/BA,GAAW,qBAA2B,sCACtCA,GAAW,mBAAyB,oCACpCA,GAAW,iBAAuB,kCAClCA,GAAW,iBAAuB,6BAClCA,GAAW,uBAA6B,yCACxCA,GAAW,yBAA+B,4CAC1CA,GAAW,kBAAwB,mCACnCA,GAAW,gBAAsB,gCACjCA,GAAW,yBAA+B,4CAG1CA,GAAW,cAAoB,6BAC/BA,GAAW,YAAkB,2BAC7BA,GAAW,UAAgB,yBAC3BA,GAAW,cAAoB,6BAYnC,IAAIwB,GAAgC,WAChC,SAASA,KA+CT,OA7CAA,EAAe3jL,SAAW,SAAU39L,EAAQuhX,QACpB,IAAhBA,IAA0BA,GAAc,GAC5CD,EAAeE,WAAWxhX,EAAOyhX,YAAczhX,OACZ34B,IAA/Bi6Y,EAAeC,YACfD,EAAeC,YAAcA,EAGzBD,EAAeC,cAAgBA,GAC/BvsS,GAAEg5R,OAAO,WACLrgW,QAAQ24B,KAAK,4JACb34B,QAAQ24B,KAAK,+FACd,uBAKfg7U,EAAeI,gBAAkB,SAAU90B,EAAS20B,QAC5B,IAAhBA,IAA0BA,GAAc,GACvC30B,GAGLA,EAAQ32W,QAAQ,SAAU+pB,GAAU,OAAOshX,EAAe3jL,SAAS39L,EAAQuhX,MAE/ED,EAAeK,iBAAmB,SAAUF,EAAY1pR,GACpD,GAAIn1H,KAAKg/Y,aAAaH,GAClB,OAAO,EAEX,IACII,EAAiB,0BAA4B9pR,EAAS,cAAgB0pR,EAAa,gFAIvF,OAHAzsS,GAAEg5R,OAAO,WACLrgW,QAAQ24B,KAAKu7U,IAHA9pR,EAAS0pR,IAKnB,GAEXH,EAAeM,aAAe,SAAUH,GACpC,QAASH,EAAeE,WAAWC,IAEvCH,EAAeQ,qBAAuB,WAClC,OAAO9sS,GAAEt+F,OAAO4qY,EAAeE,aAEnCF,EAAeS,eAAiB,WAC5B,OAAQT,EAAeC,aAG3BD,EAAeE,WAAa,GACrBF,EAhDyB,GAyDhCU,GAAsD,SAAUv1Q,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAQ5Du1Q,GAAwB,WACxB,SAASA,EAAOxzC,EAAQyzC,EAAoBvxC,EAAOvgP,GAC/CxtH,KAAKu/Y,QAAS,EACdv/Y,KAAKw/Y,aAAc,EACnBx/Y,KAAKy/Y,cAAe,EACpBz/Y,KAAK0/Y,aAAe,IAAIvC,GACxBn9Y,KAAK2/Y,gBAAiB,EACtB3/Y,KAAK4/Y,aAAc,EACnB5/Y,KAAK6/Y,mBAAoB,EACzB7/Y,KAAK6rW,OAASA,EACd7rW,KAAKs/Y,mBAAqBA,EAC1Bt/Y,KAAK+zL,SAAW83K,EAAO7+K,KACvBhtL,KAAK6b,KAAOgwV,EAAOhwV,KACnB7b,KAAKyuW,SAAW5C,EAAO4C,SACvBzuW,KAAK+tW,MAAQA,EACb/tW,KAAKwtH,QAAUA,EAmmBnB,OAhmBA6xR,EAAO3sX,UAAUotX,UAAY,SAAUj0C,EAAQyzC,GAC3Ct/Y,KAAK6rW,OAASA,EACd7rW,KAAKs/Y,mBAAqBA,GAE9BD,EAAO3sX,UAAUqtX,sBAAwB,WACrC,OAAO//Y,KAAKs/Y,oBAEhBD,EAAO3sX,UAAU4mH,UAAY,SAAU1yG,GACnC5mC,KAAK4mC,OAASA,GAElBy4W,EAAO3sX,UAAUstX,UAAY,WACzB,OAAOhgZ,KAAK4mC,QAEhBy4W,EAAO3sX,UAAUutX,kBAAoB,SAAUC,GAC3ClgZ,KAAKkgZ,eAAiBA,GAE1Bb,EAAO3sX,UAAUytX,kBAAoB,WACjC,OAAOngZ,KAAKkgZ,gBAGhBb,EAAO3sX,UAAU0tX,WAAa,WAC1BpgZ,KAAKqgZ,UAAUrgZ,KAAK6rW,OAAO0C,QAC3B,IAAIyI,EAAch3W,KAAKoqY,mBAAmBkW,iBACtCrpC,EAAcj3W,KAAKoqY,mBAAmBmW,iBAEtCvgZ,KAAK+nC,SADL/nC,KAAK6rW,OAAO9jU,SACI/nC,KAAK6rW,OAAO9jU,SAGZivU,EAGhBh3W,KAAKkhC,SADLlhC,KAAK6rW,OAAO3qU,SACIlhC,KAAK6rW,OAAO3qU,SAGZ+1U,EAEhBj3W,KAAK6rW,OAAO6C,OACZ1uW,KAAK0uW,KAAO1uW,KAAK6rW,OAAO6C,MAE5B1uW,KAAKwgZ,YAAcxgZ,KAAKygZ,YAAYC,yBAAyB1gZ,KAAK6rW,QAClE,IAAI80C,EAAsB3gZ,KAAKoqY,mBAAmBwW,6BAClD5gZ,KAAK8kY,kBAAoB1yR,GAAE8rR,OAAOl+X,KAAK6rW,OAAO30T,QAAUl3C,KAAK6rW,OAAO30T,MAAMjuC,QAAQ,MAAQ,IAAM03Y,EAChG3gZ,KAAK6gZ,yBAA2BzuS,GAAE8rR,OAAOl+X,KAAK6rW,OAAOmC,eAAiBhuW,KAAK6rW,OAAOmC,aAAa/kW,QAAQ,MAAQ,IAAM03Y,EACrH3gZ,KAAK2vI,YAET0vQ,EAAO3sX,UAAUouX,aAAe,WAC5B,OAAO,GAEXzB,EAAO3sX,UAAUquX,oBAAsB,SAAUhzC,GAC7C,QAAI37P,GAAEgsR,QAAQp+X,KAAK6rW,SAAWz5P,GAAEgsR,QAAQp+X,KAAK6rW,OAAOsC,gBAGA,IAA7BnuW,KAAK6rW,OAAOsC,cACZnuW,KAAK6rW,OAAOsC,eAAiBJ,IAGxDsxC,EAAO3sX,UAAUsuX,YAAc,WAC3B,OAAOhhZ,KAAKihZ,SAEhB5B,EAAO3sX,UAAUwuX,UAAY,WACzB,OAAOlhZ,KAAKwtH,SAEhB6xR,EAAO3sX,UAAUyuX,gBAAkB,WAI/B,OAAOnhZ,KAAKwtH,YADUxtH,KAAK6rW,OAAO12V,UAAYnV,KAAK6rW,OAAOkB,kBAG9DsyC,EAAO3sX,UAAU0uX,oBAAsB,WACnC,OAAOphZ,KAAK8kY,mBAEhBua,EAAO3sX,UAAU2uX,2BAA6B,WAC1C,OAAOrhZ,KAAK6gZ,0BAEhBxB,EAAO3sX,UAAUi9G,SAAW,WACxB,IAAI2xQ,EAAYthZ,KAAK6rW,OACrB,SAAS01C,EAAStpE,EAAKt7T,EAAKoB,GACxBq0F,GAAEg5R,OAAO,WACDrtX,EACAgtB,QAAQ24B,KAAKu0Q,EAAKl6T,GAGlBq0F,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KAAKu0Q,IAASt7T,IAEzDA,GAEF+hY,GAAeM,aAAa3hX,EAAQ6/W,YAAYsE,oBAC1B,CAAC,iBAAkB,WAAY,gBAAiB,cAAe,cAAe,QAAS,aAAc,WAC3GnuY,QAAQ,SAAU/B,GAC3B8gG,GAAE8rR,OAAOojB,EAAUhwY,MACfotY,GAAeS,iBACfoC,EAAS,YAAcjwY,EAAO,gFAAkFA,EAAM,2BAA6BA,GAGnJiwY,EAAS,YAAcjwY,EAAO,iDAAmD+rB,EAAQ6/W,YAAYsE,kBAAoB,6CAA+ClwY,EAAM,2BAA6BA,MAKtNotY,GAAeM,aAAa3hX,EAAQ6/W,YAAYuE,mBAClB,iBAA3BzhZ,KAAK6rW,OAAOyC,YAA4D,2BAA3BtuW,KAAK6rW,OAAOyC,aACrDowC,GAAeS,iBACfoC,EAAS,YAAcvhZ,KAAK6rW,OAAOyC,WAAa,4CAA6C,2BAG7FizC,EAAS,YAAcvhZ,KAAK6rW,OAAOyC,WAAa,oDAAsDjxU,EAAQ6/W,YAAYuE,iBAAkB,4BAInJ/C,GAAeM,aAAa3hX,EAAQ6/W,YAAYwE,2BAClB,iBAA3B1hZ,KAAK6rW,OAAOyC,YAA4D,yBAA3BtuW,KAAK6rW,OAAOyC,aACrDowC,GAAeS,iBACfoC,EAAS,YAAcvhZ,KAAK6rW,OAAOyC,WAAa,4CAA6C,yBAG7FizC,EAAS,YAAcvhZ,KAAK6rW,OAAOyC,WAAa,oDAAsDjxU,EAAQ6/W,YAAYwE,yBAA0B,0BAI5J1hZ,KAAKoqY,mBAAmBuX,cACU,CAAC,WAAY,gBAAiB,QAAS,cAC7CtuY,QAAQ,SAAU/B,GACtC8gG,GAAE8rR,OAAOojB,EAAUhwY,KACnBiwY,EAAS,YAAcjwY,EAAO,iFAAmFA,EAAM,4BAI/H8gG,GAAE8rR,OAAOl+X,KAAK6rW,OAAOniW,QAAuC,iBAAtB1J,KAAK6rW,OAAOniW,OAClD63Y,EAAS,wDAA0DvhZ,KAAK6rW,OAAOniW,MAAO,wBAEtF0oG,GAAElgG,IAAIlS,KAAM,+CAAgD,OAC5DuhZ,EAAS,iHAAkH,uBAE3HnvS,GAAElgG,IAAIlS,KAAM,mCAAoC,OAChDuhZ,EAAS,0GAA2G,yBAEpHnvS,GAAElgG,IAAIlS,KAAM,mCAAoC,OAChDuhZ,EAAS,0GAA2G,wBAEpHD,EAAUM,uBACVL,EAAS,wEAAyE,wBAClFvhZ,KAAK6rW,OAAOsD,sBAAwBmyC,EAAUM,sBAE9CN,EAAUO,4BACVN,EAAS,sFAAuF,0BAChGvhZ,KAAK6rW,OAAOgB,+BAAiCy0C,EAAUO,2BAEvDP,EAAUQ,yBACV/2W,QAAQ24B,KAAK,gFAAiF,wBAC9F1jE,KAAK6rW,OAAOiB,4BAA8Bw0C,EAAUQ,wBAEpDR,EAAUS,yBACVR,EAAS,4EAA6E,0BACtFvhZ,KAAK6rW,OAAOwD,wBAA0BiyC,EAAUS,wBAEhDT,EAAUU,gBACVT,EAAS,0DAA2D,yBAChEnvS,GAAEgsR,QAAQp+X,KAAK6rW,OAAOuD,kBACtBpvW,KAAK6rW,OAAOuD,eAAiBkyC,EAAUU,gBAG3CV,EAAUW,oBACVV,EAAS,gFAAiF,wBAE1FD,EAAUY,oBACVX,EAAS,gFAAiF,uBAE1FD,EAAUa,UACVZ,EAAS,2GAA4G,yBAErHD,EAAUxwC,kBACVywC,EAAS,yFAA0F,sBAAuBvhZ,KAAK6rW,QAC/H7rW,KAAK6rW,OAAO3nL,UAAW,GAEvBo9N,EAAUtwC,iBACVuwC,EAAS,sFAAuF,uBAAwBvhZ,KAAK6rW,QAC7H7rW,KAAK6rW,OAAO12V,QAAS,GAErBmsY,EAAUhwC,iBACViwC,EAAS,yFAA0F,wBAAyBvhZ,KAAK6rW,QACjI7rW,KAAK6rW,OAAOoG,WAAY,GAExBqvC,EAAU9sN,UACV+sN,EAAS,uFAAwF,yBAA0BvhZ,KAAK6rW,QAChI7rW,KAAK6rW,OAAOoE,mBAAqBqxC,EAAU9sN,SAE3C8sN,EAAUc,oBACVb,EAAS,yHAA0H,0BAA2BvhZ,KAAK6rW,QACnK7rW,KAAK6rW,OAAOwE,0BAA2B,IAG/CgvC,EAAO3sX,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GACrD1gC,KAAK0/Y,aAAap0X,iBAAiBiqB,EAAW7U,IAElD2+W,EAAO3sX,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GACxD1gC,KAAK0/Y,aAAa/zX,oBAAoB4pB,EAAW7U,IAErD2+W,EAAO3sX,UAAU2vX,yBAA2B,SAAU3N,GAClD,MAAO,CACHhxP,KAAMgxP,EACN5kY,KAAM4kY,EAAQ5kY,KACdtK,OAAQxF,KACR6rW,OAAQ7rW,KAAK6rW,OACbr6V,QAASxR,KAAKoqY,mBAAmB/lP,aACjC4lO,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,iBAG3CqK,EAAO3sX,UAAU4vX,oBAAsB,SAAU5N,GAE7C,GAA6C,kBAAlC10Y,KAAK6rW,OAAO+F,kBACnB,OAAO5xW,KAAK6rW,OAAO+F,kBAGvB,GAA6C,mBAAlC5xW,KAAK6rW,OAAO+F,kBAAkC,CACrD,IAAI9nR,EAAS9pF,KAAKqiZ,yBAAyB3N,GAE3C,OAAO6N,EADQviZ,KAAK6rW,OAAO+F,mBACX9nR,GAEpB,OAAO,GAEXu1T,EAAO3sX,UAAU8vX,eAAiB,SAAU9N,GAExC,QAAIA,EAAQ75P,QAAU76I,KAAKoqY,mBAAmBqY,sBAGvCziZ,KAAK0iZ,aAAahO,EAAS10Y,KAAK6rW,OAAOriT,WAElD61V,EAAO3sX,UAAUiwX,UAAY,SAAUjO,GACnC,OAAO10Y,KAAK0iZ,aAAahO,EAAS10Y,KAAK6rW,OAAOiG,UAElDutC,EAAO3sX,UAAUkwX,YAAc,SAAUlO,GACrC,OAAO10Y,KAAK0iZ,aAAahO,EAAS10Y,KAAK6rW,OAAOkG,YAElDstC,EAAO3sX,UAAUmwX,wBAA0B,SAAUnO,GACjD,OAAO10Y,KAAK0iZ,aAAahO,EAAS10Y,KAAK6rW,OAAO6E,oBAElD2uC,EAAO3sX,UAAUowX,gBAAkB,SAAUpO,GACzC,OAAO10Y,KAAK0iZ,aAAahO,EAAS10Y,KAAK6rW,OAAS7rW,KAAK6rW,OAAO8F,cAAgB,OAEhF0tC,EAAO3sX,UAAUqwX,YAAc,WAC3B,OAAiC,IAA1B/iZ,KAAK6rW,OAAOoG,WAEvBotC,EAAO3sX,UAAUgwX,aAAe,SAAUhO,EAASnzY,GAE/C,MAAqB,kBAAVA,EACAA,EAGU,mBAAVA,GAEYA,EADNvB,KAAKqiZ,yBAAyB3N,KAMnD2K,EAAO3sX,UAAUswX,UAAY,SAAUzD,EAAQh5X,QAC5B,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKu/Y,OAASA,EACdv/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAO6D,qBAAsB38X,KAExF84X,EAAO3sX,UAAUuwX,kBAAoB,SAAUviZ,EAAM6lB,GACjD,MAAO,CACH0jW,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChBxpX,KAAMA,EACN8E,OAAQxF,KACRmF,QAAS,CAACnF,MACVumB,OAAQA,IAGhB84X,EAAO3sX,UAAU0wX,SAAW,WACxB,OAAOpjZ,KAAKu/Y,QAEhBF,EAAO3sX,UAAU2wX,QAAU,WACvB,OAAOrjZ,KAAK6b,MAEhBwjY,EAAO3sX,UAAU4wX,QAAU,SAAUznY,EAAM0K,QACxB,IAAXA,IAAqBA,EAAS,OAC9BvmB,KAAK6b,OAASA,IACd7b,KAAK6b,KAAOA,EACZ7b,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAOkE,mBAAoBh9X,MAG1F84X,EAAO3sX,UAAU8wX,eAAiB,SAAUzvN,EAASxtK,QAClC,IAAXA,IAAqBA,EAAS,OAC9BvmB,KAAKw/Y,cAAgBzrN,IACrB/zL,KAAKw/Y,YAAczrN,EACnB/zL,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAOoE,2BAA4Bl9X,MAGlG84X,EAAO3sX,UAAUgxX,cAAgB,WAC7B,OAAO1jZ,KAAKw/Y,aAEhBH,EAAO3sX,UAAUixX,gBAAkB,WAC/B,OAAO3jZ,KAAK6b,OAASy0X,GAAUqD,UAEnC0L,EAAO3sX,UAAUkxX,iBAAmB,WAChC,OAAO5jZ,KAAK6b,OAASy0X,GAAUsD,WAEnCyL,EAAO3sX,UAAUmxX,WAAa,WAC1B,OAAOzxS,GAAEgsR,QAAQp+X,KAAK6b,OAE1BwjY,EAAO3sX,UAAUoxX,UAAY,WACzB,OAAO1xS,GAAE8rR,OAAOl+X,KAAK6b,OAEzBwjY,EAAO3sX,UAAUqxX,YAAc,WAC3B,OAAO/jZ,KAAKyuW,UAEhB4wC,EAAO3sX,UAAUsxX,YAAc,SAAUv1C,GACrCzuW,KAAKyuW,SAAWA,GAEpB4wC,EAAO3sX,UAAUuxX,WAAa,SAAU71C,GACpCpuW,KAAKouW,QAAUA,GAEnBixC,EAAO3sX,UAAUwxX,WAAa,WAC1B,OAAOlkZ,KAAKouW,SAEhBixC,EAAO3sX,UAAUyxX,QAAU,WACvB,OAAOnkZ,KAAKiM,MAEhBozY,EAAO3sX,UAAU0xX,WAAa,WAC1B,OAAOpkZ,KAAKqkZ,SAEhBhF,EAAO3sX,UAAU4xX,SAAW,WACxB,OAAOtkZ,KAAKiM,KAAOjM,KAAKwgZ,aAE5BnB,EAAO3sX,UAAU6xX,QAAU,SAAUt4Y,EAAMsa,QACxB,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKqkZ,QAAUrkZ,KAAKiM,KAChBjM,KAAKiM,OAASA,IACdjM,KAAKiM,KAAOA,EACZjM,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAOmF,mBAAoBj+X,MAG1F84X,EAAO3sX,UAAU+xX,eAAiB,WAC9B,OAAOzkZ,KAAKy/Y,cAGhBJ,EAAO3sX,UAAUgyX,gBAAkB,SAAU5oY,EAAQyK,EAAQo+X,QAC1C,IAAXp+X,IAAqBA,EAAS,OAC9BvmB,KAAKy/Y,eAAiB3jY,IACtB9b,KAAKy/Y,aAAe3jY,EACpB9b,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAOuF,4BAA6Br+X,KAE/F,IAAIs+X,EAAqB7kZ,KAAKijZ,kBAAkB5D,EAAOyF,qBAAsBv+X,GACzEo+X,GACAvyS,GAAEkyR,UAAUugB,EAAoBF,GAEpC3kZ,KAAK0/Y,aAAajnD,cAAcosD,IAEpCxF,EAAO3sX,UAAU2tX,UAAY,SAAU9xC,GAE/BvuW,KAAKuuW,QADM,IAAXA,GAAmBA,IAAW+hC,GAAUoD,YAC1BpD,GAAUoD,YAEnBnlC,IAAW+hC,GAAUmD,aACZnD,GAAUmD,aAGV,MAGtB4L,EAAO3sX,UAAUqyX,oBAAsB,SAAUC,EAAkBz+X,QAChD,IAAXA,IAAqBA,EAAS,OAC9BvmB,KAAKglZ,mBAAqBA,IAC1BhlZ,KAAKglZ,iBAAmBA,EACxBhlZ,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAO4F,iCAAkC1+X,MAGxG84X,EAAO3sX,UAAUwyX,kBAAoB,SAAUC,EAAgB5+X,QAC5C,IAAXA,IAAqBA,EAAS,OAC9BvmB,KAAKmlZ,iBAAmBA,IACxBnlZ,KAAKmlZ,eAAiBA,EACtBnlZ,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAO+F,+BAAgC7+X,MAGtG84X,EAAO3sX,UAAU2yX,mBAAqB,WAClC,OAAOrlZ,KAAKglZ,kBAEhB3F,EAAO3sX,UAAU4yX,iBAAmB,WAChC,OAAOtlZ,KAAKmlZ,gBAEhB9F,EAAO3sX,UAAU6yX,SAAW,WACxB,OAAOvlZ,KAAKuuW,SAAW+hC,GAAUoD,aAAe1zY,KAAKuuW,SAAW+hC,GAAUmD,cAE9E4L,EAAO3sX,UAAU8yX,aAAe,WAC5B,OAAOxlZ,KAAKuuW,SAAW+hC,GAAUoD,aAErC2L,EAAO3sX,UAAU+yX,cAAgB,WAC7B,OAAOzlZ,KAAKuuW,SAAW+hC,GAAUmD,cAErC4L,EAAO3sX,UAAUgzX,UAAY,WACzB,OAAO1lZ,KAAKuuW,QAEhB8wC,EAAO3sX,UAAUuvW,WAAa,SAAUluM,EAASxtK,QAC9B,IAAXA,IAAqBA,EAAS,OAClC,IAAI2rH,GAAuB,IAAZ6hD,EACX/zL,KAAK+zL,UAAY7hD,IACjBlyI,KAAK+zL,QAAU7hD,EACflyI,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAOsG,sBAAuBp/X,MAG7F84X,EAAO3sX,UAAUk4P,UAAY,WACzB,OAAO5qR,KAAK+zL,SAEhBsrN,EAAO3sX,UAAUq9W,UAAY,WACzB,OAAO/vY,KAAK6rW,QAEhBwzC,EAAO3sX,UAAUkzX,mBAAqB,WAClC,OAAO5lZ,KAAK6rW,OAAO8B,iBAEvB0xC,EAAO3sX,UAAUmzX,SAAW,WACxB,OAAO7lZ,KAAK+tW,OAEhBsxC,EAAO3sX,UAAUuuX,MAAQ,WACrB,OAAOjhZ,KAAK6lZ,YAEhBxG,EAAO3sX,UAAUozX,cAAgB,WAC7B,OAAO9lZ,KAAK6rW,QAEhBwzC,EAAO3sX,UAAUqzX,eAAiB,WAC9B,OAAO/lZ,KAAKwgZ,aAEhBnB,EAAO3sX,UAAUszX,uBAAyB,SAAUtR,GAUhD,MATa,CACThxP,KAAMgxP,EACN5kY,KAAM4kY,EAAQ5kY,KACd+7V,OAAQ7rW,KAAK6rW,OACbrmW,OAAQxF,KACRiqX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,eAIzCg7P,EAAO3sX,UAAUuzX,WAAa,SAAUvR,GACpC,GAAItiS,GAAEgsR,QAAQp+X,KAAK6rW,OAAOztQ,SACtB,OAAO,EAEX,IAAItU,EAAS9pF,KAAKgmZ,uBAAuBtR,GACrCt2S,EAAUp+F,KAAK6rW,OAAOztQ,QAAQtU,GAElC,OAAOvrE,KAAKukC,IAAIs7C,EAAS,IAE7BihT,EAAO3sX,UAAUwzX,WAAa,SAAUxR,GACpC,GAAItiS,GAAEgsR,QAAQp+X,KAAK6rW,OAAO4D,SACtB,OAAO,EAEX,IAAI3lR,EAAS9pF,KAAKgmZ,uBAAuBtR,GACrCjlC,EAAUzvW,KAAK6rW,OAAO4D,QAAQ3lR,GAElC,OAAOvrE,KAAKukC,IAAI2sT,EAAS,IAE7B4vC,EAAO3sX,UAAUyzX,eAAiB,SAAU3F,EAAaj6X,QACtC,IAAXA,IAAqBA,EAAS,OACb,MAAjBvmB,KAAK+nC,WACLy4W,EAAcjiY,KAAKukC,IAAI09V,EAAaxgZ,KAAK+nC,WAExB,MAAjB/nC,KAAKkhC,WACLs/W,EAAcjiY,KAAKG,IAAI8hY,EAAaxgZ,KAAKkhC,WAEzClhC,KAAKwgZ,cAAgBA,IAEjBxgZ,KAAK0uW,MAAmB,SAAXnoV,IACbvmB,KAAK0uW,KAAO,GAEhB1uW,KAAKwgZ,YAAcA,EACnBxgZ,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAO+G,oBAAqB7/X,MAG3F84X,EAAO3sX,UAAU2zX,iBAAmB,SAAU38Y,GAC1C,OAAqB,MAAjB1J,KAAKkhC,UACEx3B,EAAQ1J,KAAKkhC,UAI5Bm+W,EAAO3sX,UAAU4zX,YAAc,WAC3B,OAAOtmZ,KAAK+nC,UAEhBs3W,EAAO3sX,UAAU6zX,YAAc,WAC3B,OAAOvmZ,KAAKkhC,UAEhBm+W,EAAO3sX,UAAU8zX,QAAU,WACvB,OAAOxmZ,KAAK0uW,MAAQ,GAIxB2wC,EAAO3sX,UAAU+zX,QAAU,SAAU/3C,GAC7B1uW,KAAK0uW,OAASA,IACd1uW,KAAK0uW,KAAOA,IAGpB2wC,EAAO3sX,UAAUg0X,WAAa,SAAUngY,QACrB,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKmmZ,eAAenmZ,KAAK+nC,SAAUxhB,IAEvC84X,EAAO3sX,UAAUi0X,kBAAoB,SAAUl2C,EAAUlqV,QACtC,IAAXA,IAAqBA,EAAS,OAC9BvmB,KAAK2/Y,iBAAmBlvC,IACxBzwW,KAAK2/Y,eAAiBlvC,EACtBzwW,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAOuH,wBAAyBrgY,MAG/F84X,EAAO3sX,UAAUm0X,iBAAmB,WAChC,OAAO7mZ,KAAK2/Y,gBAEhBN,EAAO3sX,UAAUo0X,eAAiB,SAAU3hM,EAAO5+L,QAChC,IAAXA,IAAqBA,EAAS,OAC9BvmB,KAAK4/Y,cAAgBz6L,IACrBnlN,KAAK4/Y,YAAcz6L,EACnBnlN,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAO0H,oBAAqBxgY,MAG3F84X,EAAO3sX,UAAUs0X,cAAgB,WAC7B,OAAOhnZ,KAAK4/Y,aAEhBP,EAAO3sX,UAAUu0X,oBAAsB,WACnC,OAAOjnZ,KAAKgnZ,iBAAmBhnZ,KAAK6mZ,oBAAsB7mZ,KAAKknZ,iBAEnE7H,EAAO3sX,UAAUy0X,qBAAuB,WACpC,OAAOnnZ,KAAKonZ,gBAAkBpnZ,KAAKqnZ,mBAAqBrnZ,KAAKsnZ,gBAEjEjI,EAAO3sX,UAAU60X,eAAiB,SAAUhmZ,EAAOglB,QAChC,IAAXA,IAAqBA,EAAS,OAC9BvmB,KAAK6/Y,oBAAsBt+Y,IAC3BvB,KAAK6/Y,kBAAoBt+Y,EACzBvB,KAAK0/Y,aAAajnD,cAAcz4V,KAAKijZ,kBAAkB5D,EAAOmI,oBAAqBjhY,MAG3F84X,EAAO3sX,UAAUw0X,cAAgB,WAC7B,OAAOlnZ,KAAK6/Y,mBAEhBR,EAAO3sX,UAAU00X,aAAe,WAC5B,OAAmC,IAA5BpnZ,KAAK6rW,OAAO4F,aAEvB4tC,EAAO3sX,UAAU40X,aAAe,WAC5B,OAAmC,IAA5BtnZ,KAAK6rW,OAAO6F,aAEvB2tC,EAAO3sX,UAAU20X,gBAAkB,WAC/B,OAAsC,IAA/BrnZ,KAAK6rW,OAAO2F,gBAEvB6tC,EAAO3sX,UAAU+0X,YAAc,SAAUC,GACrC,IAAIt7C,EAAWpsW,KAAK+vY,YAAY3jC,SAIhC,OAHgB,MAAZA,IACAA,EAAWs7C,GAERt7C,GAIXizC,EAAO3sX,UAAUi1X,eAAiB,WAE9B,OADA58W,QAAQ24B,KAAK,mHACN1jE,KAAK6rW,UAAW7rW,KAAK6rW,OAAOoF,cAIvCouC,EAAO3sX,UAAUk1X,cAAgB,WAE7B,OADA78W,QAAQ24B,KAAK,iHACN1jE,KAAK6rW,UAAW7rW,KAAK6rW,OAAOqF,aAIvCmuC,EAAO3sX,UAAUm1X,aAAe,WAE5B,OADA98W,QAAQ24B,KAAK,+GACN1jE,KAAK6rW,UAAW7rW,KAAK6rW,OAAOsF,YAGvCkuC,EAAO6D,qBAAuB,gBAE9B7D,EAAOmF,mBAAqB,cAE5BnF,EAAO+G,oBAAsB,eAE7B/G,EAAO+F,+BAAiC,wBACxC/F,EAAO4F,iCAAmC,0BAE1C5F,EAAOsG,sBAAwB,iBAE/BtG,EAAOyF,qBAAuB,gBAE9BzF,EAAOuF,4BAA8B,sBAErCvF,EAAOkE,mBAAqB,cAC5BlE,EAAOoE,2BAA6B,qBAEpCpE,EAAOuH,wBAA0B,wBAEjCvH,EAAO0H,oBAAsB,qBAE7B1H,EAAOmI,oBAAsB,qBAC7BpI,GAAa,CACTzC,GAAU,uBACX0C,EAAO3sX,UAAW,0BAAsB,GAC3C0sX,GAAa,CACTzC,GAAU,gBACX0C,EAAO3sX,UAAW,mBAAe,GACpC0sX,GAAa,CACTzC,GAAU,cACX0C,EAAO3sX,UAAW,iBAAa,GAClC0sX,GAAa,CACTzC,GAAU,YACX0C,EAAO3sX,UAAW,eAAW,GAChC0sX,GAAa,CACTzC,GAAU,YACX0C,EAAO3sX,UAAW,eAAW,GAChC0sX,GAAa,CACT9C,IACD+C,EAAO3sX,UAAW,aAAc,MAC5B2sX,EAlnBiB,GAioBxByI,GAA6B,WAC7B,SAASA,EAAYC,EAAqB/yV,EAASzZ,EAAYgzT,GAE3DvuW,KAAKgoZ,kBAAoB,GACzBhoZ,KAAKioZ,kBAAoB,IAAI9K,GAC7Bn9Y,KAAKg1D,QAAUA,EACfh1D,KAAKu7C,WAAaA,EAClBv7C,KAAK+nZ,oBAAsBA,EAC3B/nZ,KAAKuuW,OAASA,EAgQlB,OA7PAu5C,EAAYI,eAAiB,SAAUlzV,EAASzZ,GAC5C,OAAOyZ,EAAU,IAAMzZ,GAI3BusW,EAAYp1X,UAAUsqG,MAAQ,WAC1Bh9H,KAAK4mC,OAAS,KACd5mC,KAAK8H,SAAW,KAChB9H,KAAKgoZ,kBAAoB,MAE7BF,EAAYp1X,UAAUstX,UAAY,WAC9B,OAAOhgZ,KAAK4mC,QAEhBkhX,EAAYp1X,UAAU4mH,UAAY,SAAU1yG,GACxC5mC,KAAK4mC,OAASA,GAElBkhX,EAAYp1X,UAAUsuX,YAAc,WAChC,OAAO8G,EAAYI,eAAeloZ,KAAKg1D,QAASh1D,KAAKu7C,aAEzDusW,EAAYp1X,UAAUouX,aAAe,WACjC,OAAyC,IAAlC9gZ,KAAKgoZ,kBAAkB7jZ,QAElC2jZ,EAAYp1X,UAAU0wX,SAAW,WAC7B,IAAI+E,EAAiBnoZ,KAAKooZ,yBAAyBC,iBACnD,SAAKF,GAA4C,IAA1BA,EAAehkZ,SAG/BgkZ,EAAe/zP,MAAM,SAAUnzD,GAAO,OAAOA,EAAImiT,cAE5D0E,EAAYp1X,UAAU41X,UAAY,WAQ9B,GANAtoZ,KAAKgoZ,kBAAkB30Y,QAAQ,SAAU2mI,GACjCA,aAAiB8tQ,GACjB9tQ,EAAMsuQ,cAIVtoZ,KAAKgoZ,kBAAkB7jZ,OAAS,EAChC,GAAInE,KAAKoqY,mBAAmBme,cAAe,CACvC,IACIC,EADYp2S,GAAEj7F,KAAKnX,KAAKgoZ,mBACE7D,UAC9BnkZ,KAAKukZ,QAAQiE,OAEZ,CACD,IAAIC,EAAiBzoZ,KAAKgoZ,kBAAkB,GAAG7D,UAC/CnkZ,KAAKukZ,QAAQkE,QAMjBzoZ,KAAKukZ,QAAQ,OAGrBuD,EAAYp1X,UAAUyxX,QAAU,WAC5B,OAAOnkZ,KAAKiM,MAEhB67Y,EAAYp1X,UAAU0xX,WAAa,WAC/B,OAAOpkZ,KAAKqkZ,SAEhByD,EAAYp1X,UAAU6xX,QAAU,SAAUt4Y,GACtCjM,KAAKqkZ,QAAUp4Y,EACXjM,KAAKiM,OAASA,IACdjM,KAAKiM,KAAOA,EACZjM,KAAKioZ,kBAAkBxvD,cAAcz4V,KAAK0oZ,cAAcZ,EAAYtD,uBAG5EsD,EAAYp1X,UAAUgzX,UAAY,WAC9B,OAAO1lZ,KAAKuuW,QAEhBu5C,EAAYp1X,UAAUg2X,cAAgB,SAAUhoZ,GAC5C,MAAO,CAAEA,KAAMA,IAEnBonZ,EAAYp1X,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GAC1D1gC,KAAKioZ,kBAAkB38X,iBAAiBiqB,EAAW7U,IAEvDonX,EAAYp1X,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GAC7D1gC,KAAKioZ,kBAAkBt8X,oBAAoB4pB,EAAW7U,IAE1DonX,EAAYp1X,UAAUi2X,WAAa,WAC/B,OAAO3oZ,KAAKg1D,SAEhB8yV,EAAYp1X,UAAUk2X,cAAgB,WAClC,OAAO5oZ,KAAKu7C,YAEhBusW,EAAYp1X,UAAUm2X,6BAA+B,SAAUC,GAC3D,IAAIlsX,GAAS,EAWb,OAVA58B,KAAK8H,SAASuL,QAAQ,SAAU01Y,GACxBD,IAAgBC,IAChBnsX,GAAS,GAETmsX,aAAsBjB,GAClBiB,EAAWF,6BAA6BC,KACxClsX,GAAS,KAIdA,GAEXkrX,EAAYp1X,UAAUqzX,eAAiB,WACnC,IAAIiD,EAAmB,EAMvB,OALIhpZ,KAAKgoZ,mBACLhoZ,KAAKgoZ,kBAAkB30Y,QAAQ,SAAU2mI,GACrCgvQ,GAAoBhvQ,EAAM+rQ,mBAG3BiD,GAEXlB,EAAYp1X,UAAUqwX,YAAc,WAChC,IAAK/iZ,KAAKgoZ,kBACN,OAAO,EAGX,IAAIprX,GAAS,EAMb,OALA58B,KAAKgoZ,kBAAkB30Y,QAAQ,SAAU2mI,GACjCA,EAAM+oQ,gBACNnmX,GAAS,KAGVA,GAEXkrX,EAAYp1X,UAAU4zX,YAAc,WAChC,IAAI1pX,EAAS,EAIb,OAHA58B,KAAKgoZ,kBAAkB30Y,QAAQ,SAAU41Y,GACrCrsX,GAAUqsX,EAAW3C,gBAElB1pX,GAEXkrX,EAAYp1X,UAAUw2X,SAAW,SAAUlvQ,GAClCh6I,KAAK8H,WACN9H,KAAK8H,SAAW,IAEpB9H,KAAK8H,SAASlE,KAAKo2I,IAEvB8tQ,EAAYp1X,UAAUy2X,qBAAuB,WACzC,OAAOnpZ,KAAKgoZ,mBAEhBF,EAAYp1X,UAAU21X,eAAiB,WACnC,IAAIzrX,EAAS,GAEb,OADA58B,KAAKopZ,eAAexsX,GACbA,GAEXkrX,EAAYp1X,UAAU22X,wBAA0B,WAC5C,IAAIzsX,EAAS,GAEb,OADA58B,KAAKspZ,wBAAwB1sX,GACtBA,GAGXkrX,EAAYp1X,UAAUozX,cAAgB,WAClC,OAAO9lZ,KAAK+nZ,oBAAoBwB,kBAEpCzB,EAAYp1X,UAAU62X,eAAiB,WACnC,OAAOvpZ,KAAK+nZ,oBAAoBwB,kBAEpCzB,EAAYp1X,UAAU82X,UAAY,WAC9B,OAAOxpZ,KAAK+nZ,oBAAoByB,aAEpC1B,EAAYp1X,UAAU21I,aAAe,WACjC,OAAOroK,KAAK+nZ,oBAAoB1/O,gBAEpCy/O,EAAYp1X,UAAUgxI,WAAa,WAC/B,OAAO1jK,KAAK+nZ,oBAAoBrkP,cAEpCokP,EAAYp1X,UAAU+2X,YAAc,SAAUtoP,GAC1CnhK,KAAK+nZ,oBAAoB0B,YAAYtoP,IAEzC2mP,EAAYp1X,UAAU42X,wBAA0B,SAAUI,GACtD1pZ,KAAKgoZ,kBAAkB30Y,QAAQ,SAAU2mI,GACjCA,aAAiBqlQ,GACjBqK,EAAY9lZ,KAAKo2I,GAEZA,aAAiB8tQ,GACtB9tQ,EAAMsvQ,wBAAwBI,MAI1C5B,EAAYp1X,UAAU02X,eAAiB,SAAUM,GAC7C1pZ,KAAK8H,SAASuL,QAAQ,SAAU2mI,GACxBA,aAAiBqlQ,GACjBqK,EAAY9lZ,KAAKo2I,GAEZA,aAAiB8tQ,GACtB9tQ,EAAMovQ,eAAeM,MAIjC5B,EAAYp1X,UAAU41I,YAAc,WAChC,OAAOtoK,KAAK8H,UAEhBggZ,EAAYp1X,UAAUkzX,mBAAqB,WACvC,OAAO5lZ,KAAK+nZ,oBAAoBnC,sBAEpCkC,EAAYp1X,UAAU01X,uBAAyB,WAC3C,OAAOpoZ,KAAK+nZ,qBAEhBD,EAAYp1X,UAAUi3X,0BAA4B,WAC9C,IAAIjoW,EAAQ1hD,KAEZA,KAAKgoZ,kBAAoB,GACzB,IAAI4B,EAAgB5pZ,KAGpB,GAAIA,KAAKwpZ,YACL,KAAOI,EAAc5J,aAAe4J,EAAcJ,aAC9CI,EAAgBA,EAAc5J,YAGnB4J,EAAc7B,oBAAoB1/O,eASjDroK,KAAK8H,SAASuL,QAAQ,SAAUw2Y,GAE5B,OADsBA,EAAejE,sBAEjC,KAAKkC,EAAYgC,uBAETF,EAAc7B,oBAAoBrkP,cAClChiH,EAAMsmW,kBAAkBpkZ,KAAKimZ,GAEjC,MACJ,KAAK/B,EAAYiC,yBAERH,EAAc7B,oBAAoBrkP,cACnChiH,EAAMsmW,kBAAkBpkZ,KAAKimZ,GAEjC,MACJ,QAGUA,aAA0B/B,GAC5B+B,EAAeL,cACdK,EAAe7B,kBAAkB7jZ,QAClCu9C,EAAMsmW,kBAAkBpkZ,KAAKimZ,MA3B7C7pZ,KAAKgoZ,kBAAoBhoZ,KAAK8H,SAiClC9H,KAAKioZ,kBAAkBxvD,cAAcz4V,KAAK0oZ,cAAcZ,EAAYkC,oCAExElC,EAAYgC,uBAAyB,OACrChC,EAAYiC,yBAA2B,SACvCjC,EAAYmC,qBAAuB,UACnCnC,EAAYtD,mBAAqB,cACjCsD,EAAYkC,iCAAmC,2BA1QO,SAAUngR,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAuQxDsgD,CAAa,CACTuyN,GAAU,uBACXmL,EAAYp1X,UAAW,0BAAsB,GACzCo1X,EAxQsB,GAiR7BoC,GAAqC,WACrC,SAASA,EAAoBC,EAAan1V,EAASwf,EAASwhB,GACxDh2F,KAAKioZ,kBAAoB,IAAI9K,GAC7Bn9Y,KAAKoqZ,YAAa,EAClBpqZ,KAAKmqZ,YAAcA,EACnBnqZ,KAAKg1D,QAAUA,EACfh1D,KAAKmhK,SAAWgpP,KAAiBA,EAAY55C,cAC7CvwW,KAAKw0E,QAAUA,EACfx0E,KAAKg2F,MAAQA,EAgJjB,OA9IAk0T,EAAoBx3X,UAAUutX,kBAAoB,SAAUC,GACxDlgZ,KAAKkgZ,eAAiBA,GAE1BgK,EAAoBx3X,UAAUytX,kBAAoB,WAC9C,OAAOngZ,KAAKkgZ,gBAEhBgK,EAAoBx3X,UAAU01I,SAAW,WACrC,OAAOpoK,KAAKg2F,OAEhBk0T,EAAoBx3X,UAAUk4P,UAAY,WAEtC,QAAI5qR,KAAK8H,UACE9H,KAAK8H,SAASM,KAAK,SAAU4xI,GAAS,OAAOA,EAAM4wI,eAIlEs/H,EAAoBx3X,UAAU82X,UAAY,WACtC,OAAOxpZ,KAAKw0E,SAEhB01U,EAAoBx3X,UAAU+2X,YAAc,SAAUtoP,GAClDnhK,KAAKmhK,cAAwB18J,IAAb08J,GAAiCA,EAIjDnhK,KAAKioZ,kBAAkBxvD,cAHX,CACR/3V,KAAMwpZ,EAAoBG,0BAIlCH,EAAoBx3X,UAAU21I,aAAe,WACzC,OAAOroK,KAAKoqZ,YAEhBF,EAAoBx3X,UAAUgxI,WAAa,WACvC,OAAO1jK,KAAKmhK,UAEhB+oP,EAAoBx3X,UAAUi2X,WAAa,WACvC,OAAO3oZ,KAAKg1D,SAEhBk1V,EAAoBx3X,UAAUuuX,MAAQ,WAClC,OAAOjhZ,KAAK2oZ,cAEhBuB,EAAoBx3X,UAAU43X,YAAc,SAAUxiZ,GAClD9H,KAAK8H,SAAWA,GAEpBoiZ,EAAoBx3X,UAAU41I,YAAc,WACxC,OAAOtoK,KAAK8H,UAEhBoiZ,EAAoBx3X,UAAU62X,eAAiB,WAC3C,OAAOvpZ,KAAKmqZ,aAEhBD,EAAoBx3X,UAAU21X,eAAiB,WAC3C,IAAIzrX,EAAS,GAEb,OADA58B,KAAKopZ,eAAexsX,GACbA,GAEXstX,EAAoBx3X,UAAU02X,eAAiB,SAAUM,GAChD1pZ,KAAK8H,UAGV9H,KAAK8H,SAASuL,QAAQ,SAAU2mI,GACxBA,aAAiBqlQ,GACjBqK,EAAY9lZ,KAAKo2I,GAEZA,aAAiBkwQ,GACtBlwQ,EAAMovQ,eAAeM,MAIjCQ,EAAoBx3X,UAAUkzX,mBAAqB,WAC/C,OAAO5lZ,KAAKw0E,QAAUszU,GAAYmC,qBAAuBjqZ,KAAKmqZ,YAAYx8C,iBAI9Eu8C,EAAoBx3X,UAAU63X,gBAAkB,WAC5C,IAAI7oW,EAAQ1hD,KACZA,KAAKwqZ,gBAELxqZ,KAAKqoZ,iBAAiBh1Y,QAAQ,SAAU4tF,GAAO,OAAOA,EAAI31E,iBAAiB+zX,GAAOsG,sBAAuBjkW,EAAM+oW,0BAA0BlgX,KAAKmX,OAElJwoW,EAAoBx3X,UAAU83X,cAAgB,WAC1C,IAAIxqZ,KAAKwpZ,YAAT,CAUA,IANA,IAAIkB,GAA4B,EAE5BC,GAA8B,EAE9BC,GAAuB,EACvB9iZ,EAAW9H,KAAK6qZ,eACXhjZ,EAAI,EAAG0M,EAAIzM,EAAS3D,OAAQ0D,EAAI0M,EAAG1M,IAAK,CAC7C,IAAIgiZ,EAAiB/hZ,EAASD,GAC9B,GAAKgiZ,EAAej/H,YAApB,CAIA,IAAIkgI,EAAkBjB,EAAejE,qBACjCkF,IAAoBhD,GAAYgC,wBAChCY,GAA4B,EAC5BE,GAAuB,GAElBE,IAAoBhD,GAAYiC,0BACrCY,GAA8B,EAC9BC,GAAuB,IAGvBF,GAA4B,EAC5BC,GAA8B,EAC1BG,IAAoBhD,GAAYmC,uBAEhCW,EAAuBA,GADVf,EACyC/hZ,SAASM,KAAK,SAAU4xI,GAAS,YAAsCv1I,IAA/Bu1I,EAAM4rQ,0BAIhH,IAAIwE,EAAaM,GAA6BC,GAA+BC,EACzE5qZ,KAAKoqZ,aAAeA,IACpBpqZ,KAAKoqZ,WAAaA,EAIlBpqZ,KAAKioZ,kBAAkBxvD,cAHT,CACV/3V,KAAMwpZ,EAAoBa,8BAKtCb,EAAoBx3X,UAAUm4X,aAAe,WACzC,IAAI/iZ,EAAW9H,KAAK8H,SAChB4sE,EAAa5sE,EAAS,GAC1B,GAAI4sE,KAAgBA,EAAW80U,YAAc90U,EAAW80U,aACpD,OAAO1hZ,EAEX,KAA2B,IAApBA,EAAS3D,QAAgB2D,EAAS,aAAcoiZ,GACnDpiZ,EAAWA,EAAS,GAAGA,SAE3B,OAAOA,GAEXoiZ,EAAoBx3X,UAAU+3X,0BAA4B,WACtDzqZ,KAAKwqZ,iBAETN,EAAoBx3X,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GAClE1gC,KAAKioZ,kBAAkB38X,iBAAiBiqB,EAAW7U,IAEvDwpX,EAAoBx3X,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GACrE1gC,KAAKioZ,kBAAkBt8X,oBAAoB4pB,EAAW7U,IAE1DwpX,EAAoBG,uBAAyB,kBAC7CH,EAAoBa,yBAA2B,oBACxCb,EAxJ8B,GAiKrCc,GAAqB,CACrBC,cAAe,CACXr9C,YAAa,0BACbM,UAAW,yBAEfg9C,aAAc,CACVt9C,YAAa,0BACbM,UAAW,0BAUfi9C,GAAsD,SAAUthR,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAM5DshR,GAA+B,WAC/B,SAASA,KAqST,OAnSAA,EAAc14X,UAAUirX,SAAW,SAAUC,GACzC59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,kBAEvC8lZ,EAAc14X,UAAU24X,iBAAmB,SAAU/tW,EAAMguW,EAAgBC,GAIvE,IAAIC,EAAmB,IAAIhT,GAC3B,GAAI+S,EAAiB,CACjB,IAAI9S,EAAe8S,EAAgB9hZ,IAAI,SAAUw3F,GAAO,OAAOA,EAAIggT,UACnEuK,EAAiB9S,gBAAgBD,GAGrC,IAAIgT,EAAmBF,EAAkBA,EAAgB/hZ,QAAU,KAE/DkiZ,EAAiB1rZ,KAAK2rZ,yBAAyBruW,EAAM,EAAGguW,EAAgBG,EAAkBD,EAAkB,MAC5GI,EAAW5rZ,KAAK6rZ,YAAYH,EAAgB,GAChD1rZ,KAAK+4Y,OAAOt9T,IAAI,2CAA6CmwU,GAC7D,IAAIE,EAAa9rZ,KAAK+rZ,kBAAkBL,EAAgB,EAAGE,EAAUJ,GAUrE,OADAxrZ,KAAKygZ,YAAYuL,6BAA6B,KAAMF,EAR5B,SAAU9xQ,EAAOpzG,GACjCozG,aAAiBkwQ,IACjBlwQ,EAAMuwQ,kBAIVvwQ,EAAMimQ,kBAAkBr5W,KAGrB,CACHklX,WAAYA,EACZF,SAAUA,IAGlBR,EAAc14X,UAAUu5X,oBAAsB,SAAUC,EAAeC,GACnE,IAAIzqW,EAAQ1hD,KACRosZ,EAAsB,GAK1B,OAJAF,EAAc74Y,QAAQ,SAAU4tF,GAC5B,IAAIorT,EAAe3qW,EAAM4qW,wBAAwBH,EAAkBlrT,GACnEmrT,EAAoBxoZ,KAAKyoZ,KAEtBD,GAEXhB,EAAc14X,UAAU45X,wBAA0B,SAAUC,EAAoB/mZ,GAI5E,IAHA,IAEIgnZ,EAAYhnZ,EACPqC,EAHE7H,KAAKysZ,UAAUF,GAGN,EAAG1kZ,GAAK,EAAGA,IAAK,CAChC,IAAI6kZ,EAAY,IAAIxC,GAAoB,KAAM,aAAe1kZ,EAAOy7Y,QAAU,KAAOp5Y,GAAG,EAAMA,GAC9F7H,KAAKwR,QAAQ4oY,SAASsS,GACtBA,EAAUpC,YAAY,CAACkC,IACvBA,EAAUvM,kBAAkByM,GAC5BF,EAAYE,EAGhB,OAAOF,GAEXpB,EAAc14X,UAAU+5X,UAAY,SAAUF,GAG1C,IAFA,IAAII,EAAO,EACPhjB,EAAU4iB,EACP5iB,GAAWA,EAAQ,IAAMA,EAAQ,aAAcugB,IAClDyC,IACAhjB,EAAUA,EAAQ,GAAGrhO,cAEzB,OAAOqkP,GAEXvB,EAAc14X,UAAUq5X,kBAAoB,SAAUL,EAAgBkB,EAAaC,EAAYrB,GAI3F,IAHA,IAAI5uX,EAAS,GAGJ/0B,EAAI,EAAGA,EAAI6jZ,EAAevnZ,OAAQ0D,IAAK,CAC5C,IAAImyI,EAAQ0xQ,EAAe7jZ,GAC3B,GAAImyI,aAAiBkwQ,GAAqB,CAEtC,IAAI4C,EAAgB9yQ,EAChB+yQ,EAAc/sZ,KAAK+rZ,kBAAkBe,EAAcxkP,cAAeskP,EAAc,EAAGC,EAAYrB,GACnGsB,EAAcxC,YAAYyC,GAC1BnwX,EAAOh5B,KAAKkpZ,OAEX,CAKD,IAHA,IAAIE,OAAmB,EACnBC,OAAqB,EAEhB14Y,EAAIs4Y,EAAa,EAAGt4Y,GAAKq4Y,EAAar4Y,IAAK,CAChD,IAAI24Y,EAAW1B,EAAiB7S,aAAa,KAAM,MAC/CwU,EAAoBntZ,KAAKotZ,wBAAwB,MACjDC,EAAc,IAAInD,GAAoBiD,EAAmBD,GAAU,EAAMN,GAC7E5sZ,KAAKwR,QAAQ4oY,SAASiT,GAClBJ,GACAA,EAAmB3C,YAAY,CAAC+C,IAEpCJ,EAAqBI,EAChBL,IACDA,EAAmBC,GAI3B,GAAID,EAAkB,CAGlB,GAFApwX,EAAOh5B,KAAKopZ,GACItB,EAAetjZ,KAAK,SAAU4xI,GAAS,OAAOA,aAAiBkwQ,KAChE,CACX+C,EAAmB3C,YAAY,CAACtwQ,IAChC,SAGAizQ,EAAmB3C,YAAYoB,GAC/B,MAGR9uX,EAAOh5B,KAAKo2I,IAGpB,OAAOp9G,GAEXwuX,EAAc14X,UAAUm5X,YAAc,SAAUyB,EAAcX,GAE1D,IADA,IAAIY,EAAmBZ,EACd9kZ,EAAI,EAAGA,EAAIylZ,EAAanpZ,OAAQ0D,IAAK,CAC1C,IAAIgiZ,EAAiByD,EAAazlZ,GAClC,GAAIgiZ,aAA0BK,GAAqB,CAC/C,IACIsD,EAAUxtZ,KAAK6rZ,YADChC,EACyBvhP,cAAeqkP,EAAO,GAC/DY,EAAmBC,IACnBD,EAAmBC,IAI/B,OAAOD,GAEXnC,EAAc14X,UAAUi5X,yBAA2B,SAAUruW,EAAM04C,EAAOs1T,EAAgBG,EAAkBD,EAAkB5kX,GAC1H,IAAI8a,EAAQ1hD,KACR48B,EAAS,GACb,OAAK0gB,GAGLA,EAAKjqC,QAAQ,SAAUJ,GACnB,IAAIw6Y,EAEAA,EADA/rW,EAAMgsW,cAAcz6Y,GACDyuC,EAAMisW,kBAAkBrC,EAAgBr4Y,EAAK+iF,EAAOy1T,EAAkBD,EAAkB5kX,GAGxF8a,EAAMksW,aAAatC,EAAgBr4Y,EAAKw4Y,EAAkBD,EAAkB5kX,GAEnGhK,EAAOh5B,KAAK6pZ,KAET7wX,GAZIA,GAcfwuX,EAAc14X,UAAUi7X,kBAAoB,SAAUrC,EAAgBnB,EAAan0T,EAAOu1T,EAAiBC,EAAkB5kX,GACzH,IAAIumX,EAAoBntZ,KAAKotZ,wBAAwBjD,GACjDn1V,EAAUw2V,EAAiB7S,aAAawU,EAAkBn4V,QAAS,MACnE83V,EAAgB,IAAI5C,GAAoBiD,EAAmBn4V,GAAS,EAAOghC,GAC/Eh2F,KAAKwR,QAAQ4oY,SAAS0S,GACtB,IAAIhlZ,EAAW9H,KAAK2rZ,yBAAyBwB,EAAkBrlZ,SAAUkuF,EAAQ,EAAGs1T,EAAgBC,EAAiBC,EAAkBsB,GAEvI,OADAA,EAAcxC,YAAYxiZ,GACnBglZ,GAEX1B,EAAc14X,UAAU06X,wBAA0B,SAAUjD,GACxD,IAAIgD,EAAoB,GAIxB,OAHA/6S,GAAErrE,OAAOomX,EAAmBntZ,KAAKoqY,mBAAmByjB,yBACpDz7S,GAAErrE,OAAOomX,EAAmBhD,GAC5BnqZ,KAAK8tZ,wBAAwBX,GACtBA,GAEX/B,EAAc14X,UAAUk7X,aAAe,SAAUtC,EAAgBz/C,EAAQ4/C,EAAkBD,EAAkB5kX,GACzG,IAAImnX,EAAe/tZ,KAAKguZ,aAAaniD,GACrC7rW,KAAK8tZ,wBAAwBC,GAE7B,IAAIvoZ,EAASxF,KAAKiuZ,mBAAmBpiD,EAAQ4/C,GAC7C,GAAKjmZ,EAODA,EAAOs6Y,UAAUiO,EAAcliD,OAPtB,CAET,IAAIkC,EAAQy9C,EAAiB7S,aAAaoV,EAAahgD,MAAOggD,EAAa72W,OAC3E1xC,EAAS,IAAI65Y,GAAO0O,EAAcliD,EAAQkC,EAAOu9C,GACjDtrZ,KAAKwR,QAAQ4oY,SAAS50Y,GAK1B,OAAOA,GAEX4lZ,EAAc14X,UAAUu7X,mBAAqB,SAAUpiD,EAAQ4/C,GAC3D,IAAInzX,EAAM85E,GAAE/sG,KAAKomZ,EAAkB,SAAUxqT,GACzC,IAAIitT,EAAYjtT,EAAI8+S,wBACpB,SAAKmO,GAIDA,IAAcriD,IAIAqiD,QAAUngD,OAEjBmgD,EAAUngD,QAAUlC,EAAOkC,UAS1C,OAHIz1U,GACA85E,GAAEq0R,gBAAgBglB,EAAkBnzX,GAEjCA,GAEX8yX,EAAc14X,UAAUs7X,aAAe,SAAUniD,GAE7C,IAAIkiD,EAAe,GASnB,OAPA37S,GAAErrE,OAAOgnX,EAAc/tZ,KAAKoqY,mBAAmB+jB,oBAE3CtiD,EAAOnrW,MACPV,KAAKouZ,kBAAkBviD,EAAQkiD,GAGnC37S,GAAErrE,OAAOgnX,EAAcliD,GAChBkiD,GAEX3C,EAAc14X,UAAU07X,kBAAoB,SAAUviD,EAAQkiD,GAC1D,IAAIM,EACJ,GAAIxiD,EAAOnrW,gBAAgB6J,MACJshW,EAAOnrW,KAAK0H,KAAK,SAAU2T,GAAK,MAAoB,iBAANA,IAE7DgvB,QAAQ24B,KAAK,gFAGb2qV,EAAWxiD,EAAOnrW,SAGrB,IAA2B,iBAAhBmrW,EAAOnrW,KAKnB,YADAqqC,QAAQ24B,KAAK,gEAHb2qV,EAAWxiD,EAAOnrW,KAAK6hB,MAAM,KAOjC,IAAI+rY,EAAiBl8S,GAAErrE,OAAO,GAAI/mC,KAAKoqY,mBAAmBmkB,iBAAkBvD,IAC5EqD,EAASh7Y,QAAQ,SAAU7S,GACvB,IAAIguZ,EAAaF,EAAe9tZ,EAAEsc,QAC9B0xY,EACAp8S,GAAErrE,OAAOgnX,EAAcS,GAGvBzjX,QAAQ24B,KAAK,yBAA2BljE,EAAI,+DAIxD4qZ,EAAc14X,UAAUo7X,wBAA0B,SAAUjiD,GACxD,GAAIA,EAAQ,CACR,IAAI4iD,EAAe5iD,OACQpnW,IAAvBgqZ,EAAa5zQ,OACb9vG,QAAQ24B,KAAK,sHAEgBj/D,IAA7BgqZ,EAAaC,aACb3jX,QAAQ24B,KAAK,4HAEoBj/D,IAAjCgqZ,EAAa3D,iBACb//W,QAAQ24B,KAAK,2JAEqBj/D,IAAlCgqZ,EAAaE,kBACb5jX,QAAQ24B,KAAK,uFAEwBj/D,IAArCgqZ,EAAaG,qBACb7jX,QAAQ24B,KAAK,sFAEb+qV,EAAaE,kBAAoBF,EAAaG,sBAC9C7jX,QAAQ24B,KAAK,wIAEb+qV,EAAaI,cACb9jX,QAAQ24B,KAAK,8BAAgC+qV,EAAaI,YAAc,+DACxEJ,EAAarnI,WAAaqnI,EAAaI,eAKnDzD,EAAc14X,UAAUg7X,cAAgB,SAAUoB,GAC9C,YAAmCrqZ,IAA5BqqZ,EAAehnZ,UAE1BqjZ,GAAa,CACTxO,GAAU,uBACXyO,EAAc14X,UAAW,0BAAsB,GAClDy4X,GAAa,CACTxO,GAAU,gBACXyO,EAAc14X,UAAW,mBAAe,GAC3Cy4X,GAAa,CACTxO,GAAU,YACXyO,EAAc14X,UAAW,eAAW,GACvCy4X,GAAa,EACC,EArSwDhhR,EAqSrD8yQ,GAAU,iBApSpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAoSpC,MACXyuY,EAAc14X,UAAW,WAAY,MACxBy4X,GAAa,CACzBjQ,GAAK,kBACNkQ,GAzS6C,IAAsBjhR,EAIvC,GA+S/B4kR,GAAwB,WACxB,SAASA,KAoIT,OAjIAA,EAAOC,gCAAkC,0BAEzCD,EAAOE,yBAA2B,mBAElCF,EAAOG,gCAAkC,yBAEzCH,EAAOI,+BAAiC,wBAExCJ,EAAOK,0BAA4B,sBAEnCL,EAAOM,2BAA6B,qBAEpCN,EAAOO,2BAA6B,qBAEpCP,EAAOQ,2BAA6B,qBAEpCR,EAAOS,mBAAqB,cAE5BT,EAAOU,qBAAuB,gBAE9BV,EAAOW,oBAAsB,eAE7BX,EAAOY,0BAA4B,oBAEnCZ,EAAOa,qBAAuB,gBAE9Bb,EAAOc,gCAAkC,0BAEzCd,EAAOe,8BAAgC,wBAEvCf,EAAOgB,uBAAyB,iBAEhChB,EAAOiB,uBAAyB,iBAEhCjB,EAAOkB,uBAAyB,iBAEhClB,EAAOmB,8BAAgC,uBAEvCnB,EAAOoB,8BAAgC,wBAEvCpB,EAAOqB,oBAAsB,eAE7BrB,EAAOsB,oCAAsC,6BAE7CtB,EAAOuB,4BAA8B,sBAErCvB,EAAOwB,sBAAwB,iBAE/BxB,EAAOyB,iCAAmC,0BAE1CzB,EAAO0B,oBAAsB,eAC7B1B,EAAO2B,kBAAoB,aAC3B3B,EAAO4B,gBAAkB,WACzB5B,EAAO6B,iBAAmB,YAC1B7B,EAAO8B,eAAiB,UACxB9B,EAAO+B,mBAAqB,cAC5B/B,EAAOgC,0BAA4B,oBACnChC,EAAOiC,sBAAwB,gBAC/BjC,EAAOkC,wBAA0B,kBACjClC,EAAOmC,yBAA2B,mBAClCnC,EAAOoC,wBAA0B,kBACjCpC,EAAOqC,mBAAqB,cAC5BrC,EAAOsC,mBAAqB,cAC5BtC,EAAOuC,wBAA0B,mBACjCvC,EAAOwC,oBAAsB,cAC7BxC,EAAOyC,qBAAuB,eAC9BzC,EAAO0C,sBAAwB,gBAC/B1C,EAAO2C,qBAAuB,eAE9B3C,EAAOjK,qBAAuB,gBAE9BiK,EAAO4C,sBAAwB,iBAC/B5C,EAAO6C,oBAAsB,eAC7B7C,EAAOxL,mBAAqB,cAE5BwL,EAAO8C,0BAA4B,oBACnC9C,EAAO+C,kBAAoB,aAC3B/C,EAAOgD,yBAA2B,mBAElChD,EAAOiD,iBAAmB,YAG1BjD,EAAOkD,wBAA0B,kBAEjClD,EAAOmD,uBAAyB,kBAEhCnD,EAAOoD,0BAA4B,oBAEnCpD,EAAOqD,mBAAqB,cAE5BrD,EAAOsD,mBAAqB,cAC5BtD,EAAOuD,uBAAyB,kBAChCvD,EAAOwD,0BAA4B,oBACnCxD,EAAOyD,0BAA4B,oBACnCzD,EAAO0D,2BAA6B,qBACpC1D,EAAO2D,2BAA6B,qBAEpC3D,EAAO4D,kBAAoB,aAC3B5D,EAAO6D,4BAA8B,sBACrC7D,EAAO8D,2BAA6B,qBAGpC9D,EAAO+D,yBAA2B,oBAIlC/D,EAAOgE,8BAAgC,wBAGvChE,EAAOiE,0BAA4B,oBACnCjE,EAAOkE,sCAAwC,+BAC/ClE,EAAOmE,gCAAkC,0BACzCnE,EAAOoE,2BAA6B,qBACpCpE,EAAOqE,kBAAoB,aAC3BrE,EAAOsE,qBAAuB,eAC9BtE,EAAOuE,oBAAsB,cAC7BvE,EAAOwE,qBAAuB,eAC9BxE,EAAOyE,mBAAqB,aAE5BzE,EAAO0E,qBAAuB,eAI9B1E,EAAO2E,sCAAwC,8BAC/C3E,EAAO4E,kCAAoC,2BAC3C5E,EAAO6E,kCAAoC,2BAC3C7E,EAAO8E,qCAAuC,6BAC9C9E,EAAO+E,qBAAuB,gBAC9B/E,EAAOgF,kBAAoB,aACpBhF,EArIiB,GAwJxBiF,GAAwC,WACxC,SAASA,IAELh0Z,KAAKi0Z,YAAc,GAevB,OAbAD,EAAuBthY,UAAUwhY,oBAAsB,SAAUv3Y,GAC7D,IACIigB,EADAu3X,EAAan0Z,KAAKi0Z,YAAYt3Y,GAUlC,OADA3c,KAAKi0Z,YAAYt3Y,GALbigB,EAFsB,iBAAfu3X,EAEE,EAGAA,EAAa,EAGnBv3X,GAEJo3X,EAlBiC,GA2BxCI,GAAsD,SAAUvqR,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5DuqR,GAAkC,WAClC,SAASA,IAELr0Z,KAAKs0Z,sBAAwB,EAC7Bt0Z,KAAKu0Z,wBAA0B,EAC/Bv0Z,KAAKw0Z,yBAA0B,EAE/Bx0Z,KAAKy0Z,mBAAqB,EAG1Bz0Z,KAAK00Z,qBAAuB,GAC5B10Z,KAAK20Z,sBAAwB,GAC7B30Z,KAAK40Z,uBAAyB,GAE9B50Z,KAAK60Z,oBAAsB,GAE3B70Z,KAAK80Z,2BAA6B,GAClC90Z,KAAK+0Z,iCAAmC,GACxC/0Z,KAAKg1Z,gBAAkB,GACvBh1Z,KAAKi1Z,aAAe,GACpBj1Z,KAAKk1Z,aAAe,GACpBl1Z,KAAKm1Z,OAAQ,EACbn1Z,KAAKo1Z,wBAAyB,EAC9Bp1Z,KAAKy/W,WAAY,EACjBz/W,KAAKq1Z,UAAY,EACjBr1Z,KAAKs1Z,UAAY,EACjBt1Z,KAAKu1Z,WAAa,EAClBv1Z,KAAKw1Z,gBAAiB,EACtBx1Z,KAAKy1Z,YAAa,EA6hFtB,OA3hFApB,EAAiB3hY,UAAU4yQ,KAAO,WAC9BtlS,KAAK2/W,6BAA+B3/W,KAAKoqY,mBAAmBsrB,iCAC5D,IAAIj2C,EAAYz/W,KAAKoqY,mBAAmBurB,cACpC31Z,KAAK41Z,sBAAsBn2C,KAC3Bz/W,KAAKy/W,UAAYA,GAErBz/W,KAAK61Z,cAAgB71Z,KAAKoqY,mBAAmBuX,cAEjD0S,EAAiB3hY,UAAUojY,cAAgB,SAAU1/Y,EAAYmQ,QAC9C,IAAXA,IAAqBA,EAAS,OAClC,IAAIwvY,IAA0B/1Z,KAAKoW,WACnCpW,KAAKoW,WAAaA,EAGlBpW,KAAK4hX,WAAWo0C,SAIhBh2Z,KAAKo1Z,wBAAyB,EAC9B,IAAIa,EAAoBj2Z,KAAKsrZ,eACzB4K,EAAqBl2Z,KAAKm2Z,cAAc9K,iBAAiBj1Y,GAAY,EAAM6/Y,GAC/Ej2Z,KAAKo2Z,kBAAoBF,EAAmBpK,WAC5C9rZ,KAAKs0Z,sBAAwB4B,EAAmBtK,SAAW,EAC3D5rZ,KAAKsrZ,eAAiBtrZ,KAAKq2Z,mBAAmBr2Z,KAAKo2Z,mBACnDp2Z,KAAKs2Z,uBAAuB/vY,EAAQ0vY,GACpCj2Z,KAAKu2Z,oBAAoBhwY,EAAQ0vY,GACjCj2Z,KAAKw2Z,mBAAmBjwY,EAAQ0vY,GAChCj2Z,KAAKm1Z,OAAQ,EACbn1Z,KAAKy2Z,oBACLz2Z,KAAK02Z,uBAAuBnwY,GAC5BvmB,KAAK22Z,+BACD32Z,KAAKoqY,mBAAmBwsB,sBAAwBb,GAChD/1Z,KAAK62Z,kBAAiB,EAAMtwY,GAQhCvmB,KAAK0/Y,aAAajnD,cANW,CACzB/3V,KAAMquZ,GAAOC,gCACb/kC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,IAQZvmB,KAAK0/Y,aAAajnD,cALU,CACxB/3V,KAAMquZ,GAAOE,yBACbhlC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,YAGpBlqX,KAAKy1Z,WAAaz1Z,KAAK82Z,4BAA4B1uZ,KAAK,SAAU64F,GAAO,QAASA,EAAIulT,aAE1F6N,EAAiB3hY,UAAUqkY,sBAAwB,WAC/C,OAAO/2Z,KAAKg3Z,sBAAwBh3Z,KAAKg3Z,qBAAqB7yZ,OAAS,GAE3EkwZ,EAAiB3hY,UAAUukY,wBAA0B,WACjD,OAAOj3Z,KAAKg3Z,sBAEhB3C,EAAiB3hY,UAAUwkY,+BAAiC,WACpDl3Z,KAAKoqY,mBAAmBme,eACxBvoZ,KAAKm3Z,aAAen3Z,KAAKq1Z,UAAYr1Z,KAAKijJ,eAAiBjjJ,KAAK64E,YAChE74E,KAAKo3Z,cAAgBp3Z,KAAKq1Z,UAAYr1Z,KAAKijJ,iBAG3CjjJ,KAAKm3Z,aAAen3Z,KAAKijJ,eACzBjjJ,KAAKo3Z,cAAgBp3Z,KAAK64E,YAAc74E,KAAKijJ,iBAIrDoxQ,EAAiB3hY,UAAU2kY,8BAAgC,SAAU7xZ,GAGjE,IAFA,IAAI8xZ,EAAgB9xZ,EAChBL,EAAU,GACU,MAAjBmyZ,GACHnyZ,EAAQvB,KAAK0zZ,GACbA,EAAgBt3Z,KAAKu3Z,qBAAqBD,GAE9C,OAAOnyZ,GAKXkvZ,EAAiB3hY,UAAUikY,6BAA+B,WAEtD,GAAmC,MAA/B32Z,KAAK40Z,uBAAT,CAGA,IAAI4C,EAAax3Z,KAAK80Z,2BAA2BrrZ,IAAI,SAAUjE,GAAU,OAAOA,EAAOy7Y,UAAYjxW,KAAK,KACxGhwC,KAAKy3Z,oBAEDD,IADYx3Z,KAAK80Z,2BAA2BrrZ,IAAI,SAAUjE,GAAU,OAAOA,EAAOy7Y,UAAYjxW,KAAK,MAOnGhwC,KAAK0/Y,aAAajnD,cALJ,CACV/3V,KAAMquZ,GAAOe,8BACb7lC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,cAK5BmqC,EAAiB3hY,UAAUglY,2BAA6B,SAAU7+U,EAAaoqE,IACvEpqE,IAAgB74E,KAAK64E,aAAeoqE,IAAmBjjJ,KAAKijJ,gBAAkBjjJ,KAAKw1Z,kBACnFx1Z,KAAK64E,YAAcA,EACnB74E,KAAKijJ,eAAiBA,EAItBjjJ,KAAKw1Z,gBAAiB,EACtBx1Z,KAAKk3Z,iCACDl3Z,KAAKm1Z,OACLn1Z,KAAK22Z,iCAIjBtC,EAAiB3hY,UAAUijY,YAAc,WACrC,OAAO31Z,KAAKy/W,WAEhB40C,EAAiB3hY,UAAUkjY,sBAAwB,SAAUzwM,GACzD,OAAIA,IAASnlN,KAAKoqY,mBAAmBuX,eACjC52W,QAAQ24B,KAAK,iGACN,IAIf2wV,EAAiB3hY,UAAUilY,aAAe,SAAUl4C,EAAWl5V,QAC5C,IAAXA,IAAqBA,EAAS,OAC9Bk5V,IAAcz/W,KAAKy/W,WAAcz/W,KAAK41Z,sBAAsB51Z,KAAKy/W,aAGrEz/W,KAAKy/W,UAAYA,EAIjBz/W,KAAKo1Z,wBAAyB,EAC9Bp1Z,KAAKy2Z,oBACLz2Z,KAAK02Z,uBAAuBnwY,GAM5BvmB,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOG,gCACbjlC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,cAIxBmqC,EAAiB3hY,UAAUklY,wBAA0B,SAAUC,EAAWC,GACtE,IAAK93Z,KAAKw0Z,0BAA4Bx0Z,KAAK+3Z,iBACvC,OAAO,KAEX,IAAIC,EAAoBh4Z,KAAKi4Z,iBAAiBH,GAC1CI,EAAc,KAUlB,OATAl4Z,KAAK+3Z,iBAAiB1kZ,QAAQ,SAAU7N,GACpC,IAAI2yZ,EAAgB3yZ,EAAOuqY,YAAY8nB,UACnCO,EAAmB5yZ,EAAOuqY,YAAYqoB,iBACpB5xB,GAAS2xB,EAAeN,IACtBO,IAAqBJ,IAEzCE,EAAc1yZ,KAGf0yZ,GAEX7D,EAAiB3hY,UAAUirX,SAAW,SAAUC,GAC5C59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,qBAEvC+uZ,EAAiB3hY,UAAU2lY,+BAAiC,SAAU9xY,GAClE,IAAI+xY,EACAC,EACAv4Z,KAAKoqY,mBAAmBme,eACxB+P,EAAWt4Z,KAAK00Z,qBAAuB10Z,KAAK00Z,qBAAqB,GAAK,KACtE6D,EAAav4Z,KAAK20Z,sBAAwBviT,GAAEj7F,KAAKnX,KAAK20Z,uBAAyB,OAG/E2D,EAAWt4Z,KAAK00Z,qBAAuBtiT,GAAEj7F,KAAKnX,KAAK00Z,sBAAwB,KAC3E6D,EAAav4Z,KAAK20Z,sBAAwB30Z,KAAK20Z,sBAAsB,GAAK,MAE9E30Z,KAAKw4Z,YAAYnlZ,QAAQ,SAAU7N,GAC/BA,EAAO0/Y,kBAAkB1/Y,IAAW8yZ,EAAU/xY,GAC9C/gB,EAAOu/Y,oBAAoBv/Y,IAAW+yZ,EAAYhyY,MAG1D8tY,EAAiB3hY,UAAU+lY,gBAAkB,SAAUh8Y,EAAMi8Y,EAAYnyY,GAQrE,IAAIm7B,EAAQ1hD,UACG,IAAXumB,IAAqBA,EAAS,OAIlCvmB,KAAK24Z,sBAAsBC,iBAE3B,IAAIC,EAAmB,GAEnBC,GAAyB,EAI7B,IAHkB,MAAdJ,IACAA,EAAa14Z,KAAKoqY,mBAAmB2uB,0BAER,IAA1BD,GACHA,EAAwB,EACxB94Z,KAAKg5Z,oBAAoBv8Y,EAAM,SAAUjX,GAErC,GAAIqzZ,EAAiB5vZ,QAAQzD,IAAW,EACpC,OAAO,EAGX,IAAIyzZ,EAAiBv3W,EAAMw3W,oBAAoBC,2BAA2B3zZ,EAAQkzZ,GAElF,GAAIO,EAAiB,EAAG,CACpB,IAAIG,EAAW13W,EAAM23W,qBAAqB7zZ,EAAQyzZ,GAClDzzZ,EAAO2gZ,eAAeiT,EAAU7yY,GAChCsyY,EAAiBj1Z,KAAK4B,GACtBszZ,IAEJ,OAAO,GACRvyY,GAEHsyY,EAAiB10Z,QAUjBnE,KAAK0/Y,aAAajnD,cATJ,CACV/3V,KAAMquZ,GAAOa,qBACbzqZ,QAAS0zZ,EACTrzZ,OAAoC,IAA5BqzZ,EAAiB10Z,OAAe00Z,EAAiB,GAAK,KAC9Dx7F,UAAU,EACV4sD,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQ,qBAKpB8tY,EAAiB3hY,UAAU4mY,eAAiB,SAAU38Y,EAAK+7Y,EAAYnyY,QACpD,IAAXA,IAAqBA,EAAS,OAC9B5J,GACA3c,KAAKy4Z,gBAAgB,CAAC97Y,GAAM+7Y,EAAYnyY,IAGhD8tY,EAAiB3hY,UAAU6mY,mBAAqB,SAAUb,EAAYnyY,QACnD,IAAXA,IAAqBA,EAAS,OAClC,IAAIsuY,EAAsB70Z,KAAKw5Z,yBAC/Bx5Z,KAAKy4Z,gBAAgB5D,EAAqB6D,EAAYnyY,IAE1D8tY,EAAiB3hY,UAAU2jY,mBAAqB,SAAUoD,GACtD,IAAI78X,EAAS,GACT88X,EAAuB,SAAU9tD,GACjC,IAAK,IAAI/jW,EAAI,EAAGA,EAAI+jW,EAAaznW,OAAQ0D,IAAK,CAC1C,IAAImyI,EAAQ4xN,EAAa/jW,GACrBmyI,aAAiBqlQ,GACjBziX,EAAOh5B,KAAKo2I,GAEPA,aAAiBkwQ,IACtBwP,EAAqB1/Q,EAAMsuB,iBAKvC,OADAoxP,EAAqBD,GACd78X,GAEXy3X,EAAiB3hY,UAAUinY,4BAA8B,WACrD,OAAI35Z,KAAK45Z,yBAA2B55Z,KAAK65Z,0BAA4B75Z,KAAK85Z,0BAC/D95Z,KAAK45Z,wBACP5gZ,OAAOhZ,KAAK85Z,2BACZ9gZ,OAAOhZ,KAAK65Z,0BAEd,MAGXxF,EAAiB3hY,UAAUqnY,qBAAuB,WAC9C,OAAO/5Z,KAAKo2Z,mBAGhB/B,EAAiB3hY,UAAUsnY,kBAAoB,WAC3C,OAAOh6Z,KAAKy0Z,oBAGhBJ,EAAiB3hY,UAAUunY,6BAA+B,WACtD,OAAOj6Z,KAAK45Z,yBAGhBvF,EAAiB3hY,UAAUwnY,8BAAgC,WACvD,OAAOl6Z,KAAK65Z,0BAGhBxF,EAAiB3hY,UAAUynY,+BAAiC,WACxD,OAAOn6Z,KAAK85Z,2BAEhBzF,EAAiB3hY,UAAU0nY,yBAA2B,SAAU15Z,GAC5D,OAAQA,GACJ,KAAK4vY,GAAUoD,YACX,OAAO1zY,KAAKi6Z,+BAChB,KAAK3pB,GAAUmD,aACX,OAAOzzY,KAAKk6Z,gCAChB,QACI,OAAOl6Z,KAAKm6Z,mCAIxB9F,EAAiB3hY,UAAU2nY,kBAAoB,SAAU70Z,GACrD,OAAOxF,KAAKw5Z,yBAAyBvwZ,QAAQzD,IAAW,GAG5D6uZ,EAAiB3hY,UAAU8mY,uBAAyB,WAChD,OAAOx5Z,KAAK60Z,qBAEhBR,EAAiB3hY,UAAU4nY,8BAAgC,WACvD,OAAOt6Z,KAAK80Z,4BAEhBT,EAAiB3hY,UAAU6nY,8BAAgC,SAAU7lB,GACjE,OAAK10Y,KAAKw6Z,cAGHx6Z,KAAKy6Z,0BAA0B/lB,EAAS10Y,KAAK00Z,sBAFzC10Z,KAAK00Z,sBAIpBL,EAAiB3hY,UAAUgoY,+BAAiC,SAAUhmB,GAClE,OAAK10Y,KAAKw6Z,cAGHx6Z,KAAKy6Z,0BAA0B/lB,EAAS10Y,KAAK20Z,uBAFzC30Z,KAAK20Z,uBAIpBN,EAAiB3hY,UAAU+nY,0BAA4B,SAAU/lB,EAASimB,EAAkBC,EAAgBC,GA8CxG,IA7CA,IA4CIC,EA5CAl+X,EAAS,GACTm+X,EAAoB,KACpBp/B,EAAU,SAAU9zX,GACpB,IAYImzZ,EAZA/5T,EAAM05T,EAAiB9yZ,GACvBozZ,EAAoBN,EAAiBx2Z,OAAS0D,EAC9Cu2F,EAAU7/E,KAAKG,IAAIuiF,EAAIglT,WAAWvR,GAAUumB,GAC5CC,EAAuB,CAACj6T,GAC5B,GAAI7C,EAAU,EAAG,CAEb,IADA,IAAI+8T,EAAe/8T,EAAU,EACpB7pF,EAAI,EAAGA,GAAK4mZ,EAAc5mZ,IAC/B2mZ,EAAqBt3Z,KAAK+2Z,EAAiB9yZ,EAAI0M,IAEnD1M,GAAKszZ,EAILP,GAMAI,GAAe,EACfE,EAAqB7nZ,QAAQ,SAAU+nZ,GAC/BR,EAAeQ,KACfJ,GAAe,MAKvBA,GAAe,EAEfA,IACsB,IAAlBp+X,EAAOz4B,QAAgB42Z,GACDF,GAAyBA,EAAuB55T,IAElErkE,EAAOh5B,KAAKm3Z,GAGpBn+X,EAAOh5B,KAAKq9F,IAEhB85T,EAAoB95T,EACpB65T,EAAUjzZ,GAGLA,EAAI,EAAGA,EAAI8yZ,EAAiBx2Z,OAAQ0D,IACzC8zX,EAAQ9zX,GACRA,EAAIizZ,EAER,OAAOl+X,GAMXy3X,EAAiB3hY,UAAU2oY,0CAA4C,SAAU3mB,GAC7E,IAAIhzV,EAAQ1hD,KACZ,IAAKA,KAAKw6Z,cACN,OAAOx6Z,KAAK+0Z,iCAEhB,IAEI6F,EAAiB56Z,KAAK2/W,6BAA+B,KAAO3/W,KAAKs7Z,mBAAmB/wX,KAAKvqC,MAC7F,OAAOA,KAAKy6Z,0BAA0B/lB,EAAS10Y,KAAK40Z,uBAAwBgG,EAH/C,SAAU35T,GAAO,OAAOA,EAAIkjT,UAAYziW,EAAMy1W,gBAK/E9C,EAAiB3hY,UAAU4oY,mBAAqB,SAAUr6T,GACtD,IAAIs6T,EAAat6T,EAAIkjT,UACjBqX,EAAcv6T,EAAIkjT,UAAYljT,EAAI8kT,iBAKlC0V,EAAaz7Z,KAAKm3Z,aAAe,IACjCuE,EAAc17Z,KAAKo3Z,cAAgB,IAGvC,QAFuBmE,EAAaE,GAAcD,EAAcC,GACxCF,EAAaG,GAAeF,EAAcE,IAMtErH,EAAiB3hY,UAAUipY,4BAA8B,WACrD,OAAO37Z,KAAK47Z,qBAAqB57Z,KAAK00Z,uBAG1CL,EAAiB3hY,UAAUmpY,6BAA+B,WACtD,OAAO77Z,KAAK47Z,qBAAqB57Z,KAAK20Z,wBAE1CN,EAAiB3hY,UAAUopY,wBAA0B,SAAUr/Y,EAAMs/Y,EAAYC,EAAaC,EAAgB1mX,EAAWhvB,GACrH,IAAIm7B,EAAQ1hD,KAEZ,QADe,IAAXumB,IAAqBA,EAAS,OAC7B9J,IAAQ21F,GAAEosR,eAAe/hX,GAA9B,CAGA,IAAIy/Y,GAAa,EACjBz/Y,EAAKpJ,QAAQ,SAAUsJ,GACnB,IAAIw/Y,EAAcz6W,EAAMu2W,iBAAiBt7Y,GACzC,GAAKw/Y,EAAL,CAGA,GAAIH,EAAa,CACb,GAAID,EAAW9yZ,QAAQkzZ,IAAgB,EACnC,OAEJJ,EAAWn4Z,KAAKu4Z,OAEf,CACD,GAAIJ,EAAW9yZ,QAAQkzZ,GAAe,EAClC,OAEJ/pT,GAAEq0R,gBAAgBs1B,EAAYI,GAElCF,EAAeE,GACfD,GAAa,KAEZA,IAGDl8Z,KAAKo1Z,wBACLp1Z,KAAKy2Z,oBAETz2Z,KAAK02Z,uBAAuBnwY,GAS5BvmB,KAAK0/Y,aAAajnD,cARN,CACR/3V,KAAM60C,EACNpwC,QAAS42Z,EACTv2Z,OAA8B,IAAtBu2Z,EAAW53Z,OAAe43Z,EAAW,GAAK,KAClD9xC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,OAIhB8tY,EAAiB3hY,UAAU0pY,mBAAqB,SAAUC,EAAS91Y,QAChD,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKo1Z,wBAAyB,EAC9Bp1Z,KAAKs8Z,qBAAqBD,EAASr8Z,KAAKg1Z,gBAAiBjG,GAAOI,+BAAgCnvZ,KAAK2mZ,kBAAkBp8W,KAAKvqC,MAAOumB,IAEvI8tY,EAAiB3hY,UAAUi0X,kBAAoB,SAAU7qY,EAAQtW,EAAQ+gB,GACjEzK,IAAWtW,EAAOqhZ,qBAGtBrhZ,EAAOmhZ,kBAAkB7qY,EAAQyK,GAC5BzK,GAAW9b,KAAKoqY,mBAAmBmyB,2CACpC/2Z,EAAOy8X,YAAW,EAAM17W,KAGhC8tY,EAAiB3hY,UAAU8pY,kBAAoB,SAAU7/Y,EAAK4J,QAC3C,IAAXA,IAAqBA,EAAS,OAC9B5J,GACA3c,KAAKy8Z,mBAAmB,CAAC9/Y,GAAM4J,IAGvC8tY,EAAiB3hY,UAAU+pY,mBAAqB,SAAUhgZ,EAAM8J,QAC7C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKo1Z,wBAAyB,EAC9Bp1Z,KAAK87Z,wBAAwBr/Y,EAAMzc,KAAKg1Z,iBAAiB,EAAMh1Z,KAAK2mZ,kBAAkBp8W,KAAKvqC,MAAM,GAAO+uZ,GAAOI,+BAAgC5oY,IAEnJ8tY,EAAiB3hY,UAAUgqY,sBAAwB,SAAUjgZ,EAAM8J,QAChD,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKo1Z,wBAAyB,EAC9Bp1Z,KAAK87Z,wBAAwBr/Y,EAAMzc,KAAKg1Z,iBAAiB,EAAOh1Z,KAAK2mZ,kBAAkBp8W,KAAKvqC,MAAM,GAAQ+uZ,GAAOI,+BAAgC5oY,IAErJ8tY,EAAiB3hY,UAAUiqY,qBAAuB,SAAUhgZ,EAAK4J,QAC9C,IAAXA,IAAqBA,EAAS,OAC9B5J,GACA3c,KAAK08Z,sBAAsB,CAAC//Y,GAAM4J,IAG1C8tY,EAAiB3hY,UAAUkqY,gBAAkB,SAAUngZ,EAAM8J,QAC1C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK87Z,wBAAwBr/Y,EAAMzc,KAAKk1Z,cAAc,EAAM,SAAU1vZ,GAAU,OAAOA,EAAOshZ,gBAAe,EAAMvgY,IAAYwoY,GAAOM,2BAA4B9oY,IAEtK8tY,EAAiB3hY,UAAUmqY,gBAAkB,SAAUR,EAAS91Y,QAC7C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKs8Z,qBAAqBD,EAASr8Z,KAAKk1Z,aAAcnG,GAAOM,2BAA4B,SAAU/uX,EAAO96B,GACtGA,EAAOshZ,eAAexmX,EAAO/Z,IAC9BA,IAEP8tY,EAAiB3hY,UAAUoqY,eAAiB,SAAUngZ,EAAK4J,QACxC,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK48Z,gBAAgB,CAACjgZ,GAAM4J,IAEhC8tY,EAAiB3hY,UAAUqqY,mBAAqB,SAAUtgZ,EAAM8J,QAC7C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK87Z,wBAAwBr/Y,EAAMzc,KAAKk1Z,cAAc,EAAO,SAAU1vZ,GAAU,OAAOA,EAAOshZ,gBAAe,EAAOvgY,IAAYwoY,GAAOM,2BAA4B9oY,IAExK8tY,EAAiB3hY,UAAUsqY,kBAAoB,SAAUrgZ,EAAK4J,QAC3C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK+8Z,mBAAmB,CAACpgZ,GAAM4J,IAEnC8tY,EAAiB3hY,UAAU4pY,qBAAuB,SAAUD,EAASN,EAAYjmX,EAAWmmX,EAAgB11Y,GACxG,IAAIm7B,EAAQ1hD,KACZ+7Z,EAAW53Z,OAAS,EAChBiuG,GAAE8rR,OAAOm+B,IACTA,EAAQhpZ,QAAQ,SAAUsJ,GACtB,IAAInX,EAASk8C,EAAMu2W,iBAAiBt7Y,GAChCnX,GACAu2Z,EAAWn4Z,KAAK4B,KAI5BxF,KAAKsrZ,eAAej4Y,QAAQ,SAAU7N,GAClC,IAAI86B,EAAQy7X,EAAW9yZ,QAAQzD,IAAW,EAC1Cy2Z,EAAe37X,EAAO96B,KAEtBxF,KAAKo1Z,wBACLp1Z,KAAKy2Z,oBAETz2Z,KAAK02Z,uBAAuBnwY,GAS5BvmB,KAAK0/Y,aAAajnD,cARN,CACR/3V,KAAMo1C,EACN3wC,QAAS42Z,EACTv2Z,OAA8B,IAAtBu2Z,EAAW53Z,OAAe43Z,EAAW,GAAK,KAClD9xC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,KAIhB8tY,EAAiB3hY,UAAUuqY,gBAAkB,SAAUZ,EAAS91Y,QAC7C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKs8Z,qBAAqBD,EAASr8Z,KAAKi1Z,aAAclG,GAAOQ,2BAA4BvvZ,KAAKunZ,eAAeh9W,KAAKvqC,MAAOumB,IAE7H8tY,EAAiB3hY,UAAU60X,eAAiB,SAAUzrY,EAAQtW,EAAQ+gB,GAClE,GAAIzK,IAAWtW,EAAO0hZ,kBAGtB1hZ,EAAO+hZ,eAAezrY,EAAQyK,GAC1BzK,IAAWtW,EAAO0+Y,cAAc,CAChC,IAAIgZ,EAAiBl9Z,KAAKm9Z,eAAeC,kBAAkB53Z,GAC3DA,EAAOy+Y,WAAWiZ,KAG1B7I,EAAiB3hY,UAAU2qY,gBAAkB,SAAU5gZ,EAAM8J,QAC1C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK87Z,wBAAwBr/Y,EAAMzc,KAAKi1Z,cAAc,EAAMj1Z,KAAKunZ,eAAeh9W,KAAKvqC,MAAM,GAAO+uZ,GAAOQ,2BAA4BhpY,IAEzI8tY,EAAiB3hY,UAAU4qY,eAAiB,SAAUC,EAAQh3Y,QAC3C,IAAXA,IAAqBA,EAAS,OAC9Bg3Y,GACAv9Z,KAAKq9Z,gBAAgB,CAACE,GAASh3Y,IAGvC8tY,EAAiB3hY,UAAU8qY,kBAAoB,SAAUD,EAAQh3Y,QAC9C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKy9Z,mBAAmB,CAACF,GAASh3Y,IAEtC8tY,EAAiB3hY,UAAU+qY,mBAAqB,SAAUhhZ,EAAM8J,QAC7C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK87Z,wBAAwBr/Y,EAAMzc,KAAKi1Z,cAAc,EAAOj1Z,KAAKunZ,eAAeh9W,KAAKvqC,MAAM,GAAQ+uZ,GAAOQ,2BAA4BhpY,IAG3I8tY,EAAiB3hY,UAAU2mY,qBAAuB,SAAU7zZ,EAAQ4zZ,GAOhE,OANIA,EAAW5zZ,EAAO8gZ,gBAClB8S,EAAW5zZ,EAAO8gZ,eAElB9gZ,EAAO6gZ,iBAAiB+S,KACxBA,EAAW5zZ,EAAO+gZ,eAEf6S,GAEX/E,EAAiB3hY,UAAUgrY,uBAAyB,SAAU/gZ,GAE1D,OADa3c,KAAKi4Z,iBAAiBt7Y,IAClB3c,KAAK29Z,cAAchhZ,IAExC03Y,EAAiB3hY,UAAUkrY,gBAAkB,SAAUroL,EAAc9tH,EACrE41M,EACA92S,GACI,IAAIm7B,EAAQ1hD,UACG,IAAXumB,IAAqBA,EAAS,OAClC,IAAIs3Y,EAAO,GACXtoL,EAAaliO,QAAQ,SAAUyqZ,GAC3B,IAAI78T,EAAMv/C,EAAMg8W,uBAAuBI,EAAYnhZ,KACnD,GAAKskF,IAGL48T,EAAKj6Z,KAAK,CACN8F,MAAOo0Z,EAAY1E,SACnB2E,OAAQ,CAAC,GACT54Z,QAAS,CAAC87F,KAG0D,UAAnDv/C,EAAM0oV,mBAAmB4zB,wBAE1Cv2S,GAAYA,GAEZA,GAAU,CACV,IAAIw2S,EAAWv8W,EAAM61W,qBAAqBt2T,GAC1C,IAAKg9T,EACD,OAEJ,IAAIC,EAAYj9T,EAAI8kT,iBAAmB+X,EAAY1E,SAC/C+E,EAAgBF,EAASlY,iBAAmBmY,EAChDL,EAAKj6Z,KAAK,CACN8F,MAAOy0Z,EACPJ,OAAQ,CAAC,GACT54Z,QAAS,CAAC84Z,QAIF,IAAhBJ,EAAK15Z,SAGTnE,KAAKo+Z,iBAAiBP,EAAMxgG,EAAU92S,GAClCvmB,KAAKy1Z,YACLz1Z,KAAKq+Z,yBAGbhK,EAAiB3hY,UAAU4rY,2BAA6B,SAAUC,GAC9D,IAAuC70Z,EAAQ60Z,EAAgB70Z,MAG3D80Z,EAAsB,EACtBC,EAAsB,EACtBC,GAAiB,EAcrB,OAnBcH,EAAgBp5Z,QAMtBkO,QAAQ,SAAU4tF,GACtBu9T,GAAuBv9T,EAAIqlT,cACvBrlT,EAAIslT,cAAgB,EACpBkY,GAAuBx9T,EAAIslT,cAK3BmY,GAAiB,IAGJh1Z,GAAS80Z,KACRE,GAAmBh1Z,GAAS+0Z,IAOtDpK,EAAiB3hY,UAAU0rY,iBAAmB,SAAUO,EAAYthG,EAAU92S,GAE1E,IADuBo4Y,GAAcA,EAAWvqQ,MAAMp0J,KAAKs+Z,2BAA2B/zX,KAAKvqC,OAC3F,CAiBA,IAAI4+Z,EAAc,GACdC,EAAU,GACdF,EAAWtrZ,QAAQ,SAAUgB,GACzB,IAAI3K,EAAQ2K,EAAI3K,MAAOvE,EAAUkP,EAAIlP,QAAS44Z,EAAS1pZ,EAAI0pZ,OAGvDe,EAAY,GACZC,EAAe,GACnB55Z,EAAQkO,QAAQ,SAAU4tF,GAAO,OAAO49T,EAAQj7Z,KAAKq9F,KA+DrD,IApDA,IAAI+9T,GAAmB,EACnBC,EAAY,EACZC,EAAU,WAEV,KADAD,EACgB,IAIZ,OADAl0X,QAAQ/V,MAAM,8CACP,QAEXgqY,GAAmB,EACnB,IAAIG,EAAa,GACbC,EAAmB,EACnBC,EAAqB31Z,EACzBvE,EAAQkO,QAAQ,SAAU4tF,EAAKt3F,GACLo1Z,EAAa99T,EAAIggT,SAEnCoe,GAAsBP,EAAU79T,EAAIggT,UAGpCke,EAAWv7Z,KAAKq9F,GAEhBm+T,GADmBrB,EAAOp0Z,MAOlC,IAAI21Z,EAAa,EAAIF,EACrBD,EAAW9rZ,QAAQ,SAAU4tF,EAAKt3F,GAC9B,IACI41Z,EADU51Z,IAAWw1Z,EAAWh7Z,OAAS,EAGzCo7Z,EAAcF,GAGdE,EAAchhZ,KAAK06B,MAAM8kX,EAAOp0Z,GAASD,EAAQ41Z,GACjDD,GAAsBE,GAEtBA,EAAct+T,EAAIqlT,eAClBiZ,EAAct+T,EAAIqlT,cAClByY,EAAa99T,EAAIggT,UAAW,EAC5B+d,GAAmB,GAEd/9T,EAAIslT,cAAgB,GAAKgZ,EAAct+T,EAAIslT,gBAChDgZ,EAAct+T,EAAIslT,cAClBwY,EAAa99T,EAAIggT,UAAW,EAC5B+d,GAAmB,GAEvBF,EAAU79T,EAAIggT,SAAWse,KAG1BP,GAEa,UADFE,MAIlB/5Z,EAAQkO,QAAQ,SAAU4tF,GACtB,IAAIm4T,EAAW0F,EAAU79T,EAAIggT,SACzBhgT,EAAI8kT,mBAAqBqT,IACzBn4T,EAAIklT,eAAeiT,EAAU7yY,GAC7Bq4Y,EAAYh7Z,KAAKq9F,QAK7B,IAAIu+T,EAAuBZ,EAAYz6Z,OAAS,EAC5Cq7Z,IACAx/Z,KAAKy/Z,cAAcl5Y,GACnBvmB,KAAK0/Z,mBACL1/Z,KAAK22Z,iCAOL6I,GAAwBniG,IAUxBr9T,KAAK0/Y,aAAajnD,cATJ,CACV/3V,KAAMquZ,GAAOa,qBACbzqZ,QAAS05Z,EACTr5Z,OAA2B,IAAnBq5Z,EAAQ16Z,OAAe06Z,EAAQ,GAAK,KAC5CxhG,SAAUA,EACV4sD,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,SAvHZ,GAAI82S,EAAU,CACV,IAAIl4T,EAAUw5Z,GAAcA,EAAWx6Z,OAAS,EAAIw6Z,EAAW,GAAGx5Z,QAAU,KAU5EnF,KAAK0/Y,aAAajnD,cATJ,CACV/3V,KAAMquZ,GAAOa,qBACbzqZ,QAASA,EACTK,OAAQL,GAA8B,IAAnBA,EAAQhB,OAAegB,EAAQ,GAAK,KACvDk4T,SAAUA,EACV4sD,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,MAmHxB8tY,EAAiB3hY,UAAUitY,iBAAmB,SAAUn6Z,EAAQ4oW,EAAS7nV,QACtD,IAAXA,IAAqBA,EAAS,OAC7B/gB,IAGLA,EAAOy+Y,WAAW71C,GASlBpuW,KAAK0/Y,aAAajnD,cARN,CACR/3V,KAAMquZ,GAAOQ,2BACbpqZ,QAAS,CAACK,GACVA,OAAQA,EACRykX,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,MAIhB8tY,EAAiB3hY,UAAUktY,mBAAqB,SAAUvuQ,EAAWC,EAAS/qI,QAC3D,IAAXA,IAAqBA,EAAS,OAClC,IAAI/gB,EAASxF,KAAKg1Z,gBAAgB3jQ,GAClCrxJ,KAAKg1Z,gBAAgBzsX,OAAO8oH,EAAW,GACvCrxJ,KAAKg1Z,gBAAgBzsX,OAAO+oH,EAAS,EAAG9rJ,GASxCxF,KAAK0/Y,aAAajnD,cARN,CACR/3V,KAAMquZ,GAAOI,+BACbhqZ,QAASnF,KAAKg1Z,gBACdxvZ,OAAwC,IAAhCxF,KAAKg1Z,gBAAgB7wZ,OAAenE,KAAKg1Z,gBAAgB,GAAK,KACtE/qC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,KAIhB8tY,EAAiB3hY,UAAUmtY,YAAc,SAAUC,EAAmBxuQ,EAAS/qI,GAG3E,QAFe,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK+/Z,uBAAuB52Z,QACxBmoJ,EAAUtxJ,KAAKw4Z,YAAYr0Z,OAAS27Z,EAAkB37Z,OAGtD,OAFA4mC,QAAQ24B,KAAK,mEAAqE4tF,QAClFvmH,QAAQ24B,KAAK,iGAIjB,IAAIs8V,EAAgBhga,KAAKiga,eAAeH,IACrB9/Z,KAAKkga,kBAAkBF,EAAe1uQ,KAIzDl/C,GAAEo1R,YAAYxnY,KAAKw4Z,YAAawH,EAAe1uQ,GAC/CtxJ,KAAK02Z,uBAAuBnwY,GAU5BvmB,KAAK0/Y,aAAajnD,cATN,CACR/3V,KAAMquZ,GAAOS,mBACbrqZ,QAAS66Z,EACTx6Z,OAAiC,IAAzBw6Z,EAAc77Z,OAAe67Z,EAAc,GAAK,KACxD1uQ,QAASA,EACT24N,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,IAGZvmB,KAAK+/Z,uBAAuB9mH,WAEhCo7G,EAAiB3hY,UAAUwtY,kBAAoB,SAAUF,EAAe1uQ,GAEpE,IAAI6uQ,EAAsBnga,KAAKw4Z,YAAYhvZ,QAG3C,OAFA4oG,GAAEo1R,YAAY24B,EAAqBH,EAAe1uQ,KAE7CtxJ,KAAKoga,0BAA0BD,MAG/Bnga,KAAKqga,4BAA4BF,IAK1C9L,EAAiB3hY,UAAU2tY,4BAA8B,SAAUF,GAC/D,IAAIG,GAAiB,EACjBC,GAAa,EAYjB,OAVAJ,EAAoB9sZ,QAAQ,SAAU4tF,GAC9BA,EAAI8uS,YAAY9+B,aACZqvD,IACAC,GAAa,GAIjBD,GAAiB,IAGlBC,GAEXlM,EAAiB3hY,UAAU0tY,0BAA4B,SAAUI,GAC7D,IAAID,GAAa,EA2BjB,OA1BAvga,KAAKygZ,YAAYuL,6BAA6B,KAAMhsZ,KAAKmsZ,iBAAkB,SAAUnyQ,GACjF,GAAMA,aAAiBkwQ,GAAvB,CAGA,IAAIuW,EAAczmR,EAElB,GADoBymR,EAAYlX,kBAAoBkX,EAAYlX,iBAAiB/4C,cACjF,CAGA,IAAIkwD,EAAa,GACjBD,EAAYpY,iBAAiBh1Y,QAAQ,SAAU4tF,GAC3C,IAAI0/T,EAAcH,EAAev3Z,QAAQg4F,GACzCy/T,EAAW98Z,KAAK+8Z,KAELpiZ,KAAKukC,IAAInL,MAAMp5B,KAAMmiZ,GACrBniZ,KAAKG,IAAIi5B,MAAMp5B,KAAMmiZ,GAGpBD,EAAYpY,iBAAiBlkZ,OAAS,IAGlDo8Z,GAAa,OAKdA,GAEXlM,EAAiB3hY,UAAUkuY,WAAa,SAAUjkZ,EAAK20I,EAAS/qI,QAC7C,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAK6/Z,YAAY,CAACljZ,GAAM20I,EAAS/qI,IAErC8tY,EAAiB3hY,UAAUmuY,kBAAoB,SAAUxvQ,EAAWC,EAAS/qI,QAC1D,IAAXA,IAAqBA,EAAS,OAElCvmB,KAAK4ga,WADQ5ga,KAAKw4Z,YAAYnnQ,GACNC,EAAS/qI,IAMrC8tY,EAAiB3hY,UAAUouY,sBAAwB,WAC/C,OAAO9ga,KAAKq1Z,WAEhBhB,EAAiB3hY,UAAUquY,kBAAoB,SAAUxyD,GACrD,OAAQA,GACJ,KAAK+hC,GAAUoD,YACX,OAAO1zY,KAAKs1Z,UAChB,KAAKhlB,GAAUmD,aACX,OAAOzzY,KAAKu1Z,WAChB,QACI,OAAOv1Z,KAAKq1Z,YAIxBhB,EAAiB3hY,UAAUgtY,iBAAmB,WAC1C,IAAIsB,EAAehha,KAAK47Z,qBAAqB57Z,KAAK40Z,wBAC9CqM,EAAejha,KAAK47Z,qBAAqB57Z,KAAK00Z,sBAC9CwM,EAAgBlha,KAAK47Z,qBAAqB57Z,KAAK20Z,uBAGnD30Z,KAAKw1Z,eAAiBx1Z,KAAKq1Z,YAAc2L,GACjBhha,KAAKq1Z,YAAc2L,GAAgBhha,KAAKs1Z,YAAc2L,GAAgBjha,KAAKu1Z,aAAe2L,KAE9Glha,KAAKq1Z,UAAY2L,EACjBhha,KAAKs1Z,UAAY2L,EACjBjha,KAAKu1Z,WAAa2L,EAQlBlha,KAAK0/Y,aAAajnD,cALJ,CACV/3V,KAAMquZ,GAAOkE,sCACbhpC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,cAM5BmqC,EAAiB3hY,UAAUyuY,gBAAkB,WACzC,OAAOnha,KAAKi1Z,aAAej1Z,KAAKi1Z,aAAe,IAGnDZ,EAAiB3hY,UAAU0uY,gBAAkB,WACzC,OAAOpha,KAAKk1Z,aAAel1Z,KAAKk1Z,aAAe,IAGnDb,EAAiB3hY,UAAUs0X,cAAgB,WACvC,OAAOhnZ,KAAKk1Z,cAAgBl1Z,KAAKk1Z,aAAa/wZ,OAAS,GAAKnE,KAAKy/W,WAGrE40C,EAAiB3hY,UAAU2uY,mBAAqB,WAC5C,OAAOrha,KAAKg1Z,gBAAkBh1Z,KAAKg1Z,gBAAkB,IAGzDX,EAAiB3hY,UAAUokY,0BAA4B,WACnD,OAAO92Z,KAAK40Z,wBAGhBP,EAAiB3hY,UAAU4uY,wBAA0B,WACjD,OAAOtha,KAAK00Z,sBAEhBL,EAAiB3hY,UAAU6uY,yBAA2B,WAClD,OAAOvha,KAAK20Z,uBAEhBN,EAAiB3hY,UAAU8uY,oBAAsB,SAAU9ga,GACvD,OAAQA,GACJ,KAAK4vY,GAAUoD,YACX,OAAO1zY,KAAKsha,0BAChB,KAAKhxB,GAAUmD,aACX,OAAOzzY,KAAKuha,2BAChB,QACI,OAAOvha,KAAK82Z,8BAMxBzC,EAAiB3hY,UAAU+uY,qBAAuB,WAC9C,OAAOzha,KAAKsrZ,eAAiBtrZ,KAAKsrZ,eAAe9hZ,QAAU,MAE/D6qZ,EAAiB3hY,UAAUgvY,oBAAsB,WAC7C,OAAO1ha,KAAK+3Z,iBAAmB/3Z,KAAK+3Z,iBAAiBvuZ,QAAU,MAEnE6qZ,EAAiB3hY,UAAUivY,4BAA8B,WACrD,OAAO3ha,KAAK4ha,uBAGhBvN,EAAiB3hY,UAAUmvY,kBAAoB,WAC3C,OAAO7ha,KAAKw4Z,aAEhBnE,EAAiB3hY,UAAU0N,QAAU,WACjC,OAAOgyE,GAAEosR,eAAex+X,KAAKw4Z,cAEjCnE,EAAiB3hY,UAAUovY,gBAAkB,WACzC,OAAO1vT,GAAEosR,eAAex+X,KAAKg1Z,kBAEjCX,EAAiB3hY,UAAUqvY,iBAAmB,SAAUplZ,EAAKo3K,EAASxtK,QACnD,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKgia,kBAAkB,CAACrlZ,GAAMo3K,EAASxtK,IAE3C8tY,EAAiB3hY,UAAUsvY,kBAAoB,SAAUvlZ,EAAMs3K,EAASxtK,GACpE,IAAIm7B,EAAQ1hD,UACG,IAAXumB,IAAqBA,EAAS,OAClCvmB,KAAK+/Z,uBAAuB52Z,QAC5BnJ,KAAKg5Z,oBAAoBv8Y,EAAM,SAAUjX,GACrC,OAAIA,EAAOolR,cAAgB72F,IACvBvuL,EAAOy8X,WAAWluM,EAASxtK,IACpB,IAGZA,EAAQ,WAUP,MATY,CACR7lB,KAAMquZ,GAAOU,qBACb17N,QAASA,EACTvuL,OAAQ,KACRL,QAAS,KACT8kX,IAAKvoU,EAAMyhW,QACXj5B,UAAWxoU,EAAMwoU,UACjB3jW,OAAQA,KAIhBvmB,KAAK+/Z,uBAAuB9mH,UAEhCo7G,EAAiB3hY,UAAUuvY,gBAAkB,SAAUtlZ,EAAK4xV,EAAQhoV,QACjD,IAAXA,IAAqBA,EAAS,OAC9B5J,GACA3c,KAAKkia,iBAAiB,CAACvlZ,GAAM4xV,EAAQhoV,IAG7C8tY,EAAiB3hY,UAAUwvY,iBAAmB,SAAUzlZ,EAAM8xV,EAAQhoV,GAClE,IAOI47Y,EAPAzgX,EAAQ1hD,UACG,IAAXumB,IAAqBA,EAAS,OACa,UAA3CvmB,KAAKoqY,mBAAmBg4B,gBAI5Bpia,KAAK+/Z,uBAAuB52Z,QAGxBg5Z,GADW,IAAX5zD,GAAmBA,IAAW+hC,GAAUoD,YACzBpD,GAAUoD,YAEpBnlC,IAAW+hC,GAAUmD,aACXnD,GAAUmD,aAGV,KAEnBzzY,KAAKg5Z,oBAAoBv8Y,EAAM,SAAUwkF,GACrC,OAAIA,EAAIykT,cAAgByc,IACpBlhU,EAAIo/S,UAAU8hB,IACP,IAGZ57Y,EAAQ,WAUP,MATY,CACR7lB,KAAMquZ,GAAOW,oBACbnhD,OAAQ4zD,EACR38Z,OAAQ,KACRL,QAAS,KACT8kX,IAAKvoU,EAAMyhW,QACXj5B,UAAWxoU,EAAMwoU,UACjB3jW,OAAQA,KAIhBvmB,KAAK+/Z,uBAAuB9mH,UAhCxBluQ,QAAQ24B,KAAK,6EAsCrB2wV,EAAiB3hY,UAAUsmY,oBAAsB,SACjDv8Y,EAGAsmD,EAEAx8C,EAAQwxU,GACJ,IAAIr2S,EAAQ1hD,KACZ,IAAIoyG,GAAEosR,eAAe/hX,GAArB,CAGA,IAAI4lZ,EAAiB,GAarB,GAZA5lZ,EAAKpJ,QAAQ,SAAUsJ,GACnB,IAAInX,EAASk8C,EAAMi8W,cAAchhZ,GAC5BnX,IAMkB,IADFu9D,EAAOv9D,IAExB68Z,EAAez+Z,KAAK4B,KAGvB68Z,EAAel+Z,SAGpBnE,KAAK02Z,uBAAuBnwY,GACxB6rF,GAAE8rR,OAAOnmC,IAAgBA,GAAa,CACtC,IAAIuqE,EAAUvqE,IACduqE,EAAQn9Z,QAAUk9Z,EAClBC,EAAQ98Z,OAAmC,IAA1B68Z,EAAel+Z,OAAek+Z,EAAe,GAAK,KACnEria,KAAK0/Y,aAAajnD,cAAc6pE,MAGxCjO,EAAiB3hY,UAAU6vY,sBAAwB,SAAUthU,GACzD,IAAI4zT,EAAsB70Z,KAAKw5Z,yBAC3BgJ,EAAW3N,EAAoB5rZ,QAAQg4F,GAC3C,OAAIuhU,EAAW,EACJ3N,EAAoB2N,EAAW,GAEnC,MAIXnO,EAAiB3hY,UAAU6kY,qBAAuB,SAAUt2T,GACxD,IAAI4zT,EAAsB70Z,KAAKw5Z,yBAC3BgJ,EAAW3N,EAAoB5rZ,QAAQg4F,GAC3C,OAAIuhU,EAAY3N,EAAoB1wZ,OAAS,EAClC0wZ,EAAoB2N,EAAW,GAEnC,MAEXnO,EAAiB3hY,UAAU+vY,uBAAyB,SAAUhC,GAI1D,IAFA,IAAIx/T,EAAMw/T,EAAYpX,0BAA0B,GAC5CqZ,EAAgBjC,EAAYrY,yBAAyBhgP,aAC5C,CAIT,KAFAnnE,EAAMjhG,KAAKu3Z,qBAAqBt2T,IAG5B,OAAO,KAIX,IADA,IAAI0hU,EAAe1hU,EAAI++S,YAChB2iB,EAAava,yBAAyBhgP,aAAes6P,GACxDC,EAAeA,EAAa3iB,YAEhC,GAAI2iB,IAAiBlC,EACjB,OAAOkC,IAInBtO,EAAiB3hY,UAAUkwY,cAAgB,WACvC,OAAO5ia,KAAK00Z,qBAAqBvwZ,OAAS,GAE9CkwZ,EAAiB3hY,UAAUmwY,eAAiB,WACxC,OAAO7ia,KAAK20Z,sBAAsBxwZ,OAAS,GAE/CkwZ,EAAiB3hY,UAAUowY,qCAAuC,WAC9D,IAAIlmY,EAAS58B,KAAKsrZ,eAAiBtrZ,KAAKsrZ,eAAe9hZ,MAAM,GAAK,GAOlE,OANIxJ,KAAK+ia,kBAAoB3wT,GAAE8rR,OAAOl+X,KAAK+ia,mBACvC/ia,KAAK+ia,iBAAiB1vZ,QAAQ,SAAU4tF,GAAO,OAAOrkE,EAAOh5B,KAAKq9F,KAElEjhG,KAAKw0Z,yBAA2Bx0Z,KAAK+3Z,kBACrC/3Z,KAAK+3Z,iBAAiB1kZ,QAAQ,SAAU7N,GAAU,OAAOo3B,EAAOh5B,KAAK4B,KAElEo3B,GAEXy3X,EAAiB3hY,UAAUswY,0BAA4B,SAAUx9Z,GAC7D,IAAImpW,EAAgBnpW,EAAOqhZ,mBAAqB7mZ,KAAKg1Z,gBAAgB/rZ,QAAQzD,GAAU,KACnFopW,EAAappW,EAAOwhZ,gBAAkBhnZ,KAAKk1Z,aAAajsZ,QAAQzD,GAAU,KAC1E4oW,EAAU5oW,EAAO0hZ,gBAAkB1hZ,EAAO0+Y,aAAe,KAC7D,MAAO,CACHn2C,MAAOvoW,EAAOqgZ,WACd74N,MAAOxnL,EAAOolR,YACdwjF,QAASA,EACT1kW,MAAOlE,EAAOugZ,iBACdn3C,WAAYA,EACZL,OAAQ/oW,EAAOkgZ,YACf/2C,cAAeA,EACfD,KAAMlpW,EAAOghZ,YAGrB6N,EAAiB3hY,UAAUuwY,eAAiB,WACxC,GAAI7wT,GAAEgsR,QAAQp+X,KAAKsrZ,gBACf,MAAO,GAEX,IAAI4X,EAAqBlja,KAAKsrZ,eAAe7hZ,IAAIzJ,KAAKgja,0BAA0Bz4X,KAAKvqC,OAMjFmja,GALuBnja,KAAK+ia,iBAE1B/ia,KAAK+ia,iBAAiBt5Z,IAAIzJ,KAAKgja,0BAA0Bz4X,KAAKvqC,OAE9D,IACqCgZ,OAAOkqZ,GAIlD,OAHKlja,KAAKy/W,WACNz/W,KAAKoja,qBAAqBD,GAEvBA,GAEX9O,EAAiB3hY,UAAU0wY,qBAAuB,SAAUD,GACxD,IAAIE,EAAgBrja,KAAKw4Z,YAAY/uZ,IAAI,SAAUjE,GAAU,OAAOA,EAAOqgZ,aAC3Esd,EAAgBtnZ,KAAK,SAAUynZ,EAAOC,GAGlC,OAFWF,EAAcp6Z,QAAQq6Z,EAAMv1D,OAC5Bs1D,EAAcp6Z,QAAQs6Z,EAAMx1D,UAI/CsmD,EAAiB3hY,UAAUmkY,iBAAmB,SAAU2M,EAAyBj9Y,QAI7C,IAA5Bi9Y,IAAsCA,GAA0B,QACrD,IAAXj9Y,IAAqBA,EAAS,OAElC,IAAI+kY,EAAiBtrZ,KAAKq2Z,mBAAmBr2Z,KAAKo2Z,mBAC9CqN,EAAe,GAIfC,EAAmB,IACnBC,EAAgB,IAChBrY,GACAA,EAAej4Y,QAAQ,SAAU7N,GAC7B,IAAImpW,EAAgBnpW,EAAOuqY,YAAYphC,cACnC8B,EAAWjrW,EAAOuqY,YAAYt/B,SAC9B7B,EAAappW,EAAOuqY,YAAYnhC,WAChCzpJ,EAAQ3/M,EAAOuqY,YAAY5qL,MAC3By+M,EAAY,CACZ71D,MAAOvoW,EAAOqgZ,WACdz3C,QAAS5oW,EAAOuqY,YAAY3hC,QAC5BphL,KAAMxnL,EAAOuqY,YAAY/iN,KACzBuhL,OAAQ/oW,EAAOuqY,YAAYxhC,OAC3BI,cAAeA,EACfC,WAAYppW,EAAOuqY,YAAYnhC,WAC/BllW,MAAOlE,EAAOuqY,YAAYrmY,OAE1B0oG,GAAEgsR,QAAQzvB,IAAkB8B,IAC5BmzD,EAAUj1D,cAAgB+0D,KAE1BtxT,GAAEgsR,QAAQxvB,IAAezpJ,IACzBy+M,EAAUh1D,WAAa+0D,KAE3BF,EAAa7/Z,KAAKgga,KAG1B5ja,KAAK6ja,eAAeJ,EAAcD,EAAyBj9Y,IAE/D8tY,EAAiB3hY,UAAUmxY,eAAiB,SAAUJ,EAAcD,EAAyBj9Y,GACzF,IAAIm7B,EAAQ1hD,KAGZ,QAFgC,IAA5Bwja,IAAsCA,GAA0B,QACrD,IAAXj9Y,IAAqBA,EAAS,OAC9B6rF,GAAEosR,eAAex+X,KAAKsrZ,gBACtB,OAAO,EAEX,IAAIwY,EAAoB9ja,KAAKija,iBAC7Bjja,KAAKo1Z,wBAAyB,EAE9B,IAAI2O,EAAqB/ja,KAAKsrZ,eAAe9hZ,QAC7CxJ,KAAKg1Z,gBAAkB,GACvBh1Z,KAAKi1Z,aAAe,GACpBj1Z,KAAKk1Z,aAAe,GACpB,IAAIxzV,GAAU,EACVsiW,EAAkB,GAClBC,EAAe,GACfC,EAAwB,GAiC5B,GAhCIT,IACAA,EAAapwZ,QAAQ,SAAUhL,GAE3B,GAAI+pG,GAAE8rR,OAAOx8U,EAAMyiX,cAAc97Z,EAAM0lW,QACnCm2D,EAAsBtga,KAAKyE,OAD/B,CAIA,IAAI7C,EAASk8C,EAAMu2W,iBAAiB5vZ,EAAM0lW,OACrCvoW,GAKDk8C,EAAM0iX,wBAAwB5+Z,EAAQ6C,EAAO27Z,EAAiBC,EAAc19Y,GAC5E6rF,GAAEq0R,gBAAgBs9B,EAAoBv+Z,KALtCulC,QAAQ24B,KAAK,mBAAqBr7D,EAAM0lW,MAAQ,cAChDrsS,GAAU,MAOd1hE,KAAKy1Z,YACLz1Z,KAAKq+Z,0BAAqB55Z,OAAWA,GAAW,IAIxDs/Z,EAAmB1wZ,QAAQrT,KAAKqka,sBAAsB95X,KAAKvqC,OAE3DA,KAAKg1Z,gBAAgBn5Y,KAAK7b,KAAKska,2BAA2B/5X,KAAKvqC,KAAMgka,IACrEhka,KAAKk1Z,aAAar5Y,KAAK7b,KAAKska,2BAA2B/5X,KAAKvqC,KAAMika,IAClEjka,KAAKy2Z,oBAELyN,EAAsB7wZ,QAAQ,SAAUuwZ,GACpC,IAAIW,EAAU7iX,EAAMyiX,cAAcP,EAAU71D,OAC5CrsT,EAAM0iX,wBAAwBG,EAASX,EAAWI,EAAiBC,EAAc19Y,KAEjFk9Y,EAAc,CACd,IAAIe,EAAkBf,EAAah6Z,IAAI,SAAUm6Z,GAAa,OAAOA,EAAU71D,QAC/E/tW,KAAKw4Z,YAAY38Y,KAAK,SAAU4oZ,EAAMC,GAGlC,OAFaF,EAAgBv7Z,QAAQw7Z,EAAKxjB,SAC7BujB,EAAgBv7Z,QAAQy7Z,EAAKzjB,WAoBlD,OAZAjhZ,KAAK2ka,uBACL3ka,KAAK02Z,uBAAuBnwY,GACvBi9Y,GAODxja,KAAK0/Y,aAAajnD,cANJ,CACV/3V,KAAMquZ,GAAOC,gCACb/kC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,IAIhBvmB,KAAK4ka,kBAAkBd,EAAmBv9Y,GACnCm7C,GAEX2yV,EAAiB3hY,UAAUkyY,kBAAoB,SAAUd,EAAmBv9Y,GACxE,IAAIm7B,EAAQ1hD,KACZ,IAAIA,KAAKoqY,mBAAmBy6B,iCAA5B,CAGA,IAAIC,EAAmB9ka,KAAKija,iBAExB8B,EAA2B,SAAUxvX,EAAWyvX,EAAU7/Z,GAC1CqhY,GAASs9B,EAAkBr6Z,IAAIu7Z,GAAUnpZ,OAAQipZ,EAAiBr7Z,IAAIu7Z,GAAUnpZ,SAahG6lC,EAAMg+V,aAAajnD,cARP,CACR/3V,KAAM60C,EACNpwC,QAASA,EACTK,OAA2B,IAAnBL,EAAQhB,OAAegB,EAAQ,GAAK,KAC5C8kX,IAAKvoU,EAAMyhW,QACXj5B,UAAWxoU,EAAMwoU,UACjB3jW,OAAQA,KAKZ0+Y,EAAoB,SAAUC,GAC9B,IAAIC,EAAiB,GACjBC,EAAuB,GAU3B,OATAtB,EAAkBzwZ,QAAQ,SAAU4tF,GAChCmkU,EAAqBnkU,EAAI8sQ,OAAS9sQ,IAEtCv/C,EAAM82W,YAAYnlZ,QAAQ,SAAU7N,GAChC,IAAI6/Z,EAAiBD,EAAqB5/Z,EAAOqgZ,YAC5Cwf,IAAkBH,EAAiBG,EAAgB7/Z,IACpD2/Z,EAAevha,KAAK4B,KAGrB2/Z,GAIXJ,EAAyBhW,GAAOQ,2BADN,SAAU+V,GAAM,OAAOA,EAAGv3D,MAAQ,IAAMu3D,EAAGl3D,SACYpuW,KAAKi1Z,cAEtF8P,EAAyBhW,GAAOM,2BADN,SAAUiW,GAAM,OAAOA,EAAGv3D,MAAQ,IAAMu3D,EAAG12D,YACY5uW,KAAKk1Z,cAEtF6P,EAAyBhW,GAAOI,+BADH,SAAUmW,GAAM,OAAOA,EAAGv3D,MAAQ,IAAMu3D,EAAG32D,eACgB3uW,KAAKg1Z,iBAG7Fh1Z,KAAKula,uBAAuBN,EADA,SAAUK,EAAI11X,GAAK,OAAO01X,EAAG/2D,SAAW3+T,EAAE81W,cACAn/X,GACtE,IACI0hF,EAAOg9T,EADqB,SAAUK,EAAI11X,GAAK,OAAO01X,EAAGt4O,OAASp9I,EAAEg7O,cAExE5qR,KAAKwla,wBAAwBv9T,EAAM1hF,GAEnCvmB,KAAKyla,uBAAuBR,EADA,SAAUK,EAAI11X,GAAK,OAAO01X,EAAG57Z,QAAUkmC,EAAEm2W,mBACCx/X,GAEtEvmB,KAAK0la,sBAAsB5B,EAAmBv9Y,KAElD8tY,EAAiB3hY,UAAU6yY,uBAAyB,SAAUJ,EAAgB5+Y,GACrE4+Y,EAAehha,QAYpBnE,KAAK0/Y,aAAajnD,cATN,CACR/3V,KAAMquZ,GAAOW,oBACbnhD,OAAQ,KACRppW,QAASgga,EACT3/Z,OAAQ,KACRykX,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,KAIhB8tY,EAAiB3hY,UAAU8yY,wBAA0B,SAAUL,EAAgB5+Y,GACtE4+Y,EAAehha,QAYpBnE,KAAK0/Y,aAAajnD,cATN,CACR/3V,KAAMquZ,GAAOU,qBACb17N,aAAStvL,EACTU,QAASgga,EACT3/Z,OAAQ,KACRykX,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,KAIhB8tY,EAAiB3hY,UAAU+yY,uBAAyB,SAAUN,EAAgB5+Y,GACrE4+Y,EAAehha,QAYpBnE,KAAK0/Y,aAAajnD,cATN,CACR/3V,KAAMquZ,GAAOa,qBACbzqZ,QAASgga,EACT3/Z,OAAQ,KACR63T,UAAU,EACV4sD,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,KAIhB8tY,EAAiB3hY,UAAUgzY,sBAAwB,SAAU5B,EAAmBv9Y,GAiB5E,IAhBA,IAAIo/Y,EAAe,GACfb,EAAmB9ka,KAAKija,iBACxB2C,EAAU,SAAU/9Z,GACpB,IAAI68C,EAASo/W,EAAkBj8Z,GAC3B88C,EAAQmgX,EAAiBj9Z,GAE7B,IAAK68C,GAAUC,EAAMqoI,KACjB,MAAO,WAEX,GAAItoI,EAAOqpT,QAAUppT,EAAMopT,MAAO,CAC9B,IACI83D,EAAczzT,GAAE/sG,KAAKyga,EAAOjR,oBADhB,SAAUrvZ,GAAU,OAAOA,EAAOqgZ,aAAelhW,EAAMopT,QAEvE43D,EAAa/ha,KAAKiia,KAGtBC,EAAS9la,KACJ6H,EAAI,EAAGA,EAAIi9Z,EAAiB3ga,OAAQ0D,IACzC+9Z,EAAQ/9Z,GAEP89Z,EAAaxha,QAYlBnE,KAAK0/Y,aAAajnD,cATN,CACR/3V,KAAMquZ,GAAOS,mBACbrqZ,QAASwga,EACTnga,OAAQ,KACR8rJ,aAAS7sJ,EACTwlX,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB3jW,OAAQA,KAIhB8tY,EAAiB3hY,UAAU4xY,2BAA6B,SAAU/lK,EAASkmK,EAAMC,GAG7E,OAFanmK,EAAQkmK,EAAKxjB,SACb1iJ,EAAQmmK,EAAKzjB,UAG9BoT,EAAiB3hY,UAAU2xY,sBAAwB,SAAU7+Z,EAAQ+gB,GACjE/gB,EAAOy8X,YAAW,EAAO17W,GACzB/gB,EAAOy+Y,WAAW,MAClBz+Y,EAAO66Y,UAAU,MACjB76Y,EAAOmhZ,mBAAkB,EAAOpgY,GAChC/gB,EAAOshZ,gBAAe,EAAOvgY,GAC7B/gB,EAAO+hZ,gBAAe,EAAOhhY,IAEjC8tY,EAAiB3hY,UAAU0xY,wBAA0B,SAAU5+Z,EAAQo+Z,EAAWI,EAAiBC,EAAc19Y,GAC7G,GAAK/gB,EAAL,CAIAA,EAAOy8X,YAAY2hC,EAAU52O,KAAMzmK,GAEnC/gB,EAAO66Y,UAAUujB,EAAUr1D,QAE3B,IAAIyI,EAAch3W,KAAKoqY,mBAAmBkW,iBACpB,MAAlBsjB,EAAUl1D,OACVlpW,EAAOihZ,QAAQmd,EAAUl1D,OACpB1uW,KAAKy1Z,YAAcmO,EAAUl1D,OAC9B1uW,KAAKy1Z,YAAa,IAGtBmO,EAAUl6Z,OAASstW,GAClB4sD,EAAUl6Z,OAASstW,GACpBxxW,EAAO2gZ,eAAeyd,EAAUl6Z,MAAO6c,GAEV,iBAAtBq9Y,EAAUx1D,SACjB5oW,EAAOy+Y,WAAW2f,EAAUx1D,SAC5B5oW,EAAO+hZ,gBAAe,EAAMhhY,GAC5BvmB,KAAKi1Z,aAAarxZ,KAAK4B,KAGnB4sG,GAAE8rR,OAAO0lC,EAAUx1D,UACnBrjU,QAAQ24B,KAAK,yPAIjBl+D,EAAOy+Y,WAAW,MAClBz+Y,EAAO+hZ,gBAAe,EAAOhhY,IAEM,iBAA5Bq9Y,EAAUj1D,eACjB3uW,KAAKg1Z,gBAAgBpxZ,KAAK4B,GAC1BA,EAAOmhZ,mBAAkB,EAAMpgY,GAC/By9Y,EAAgBx+Z,EAAOy7Y,SAAW2iB,EAAUj1D,eAG5CnpW,EAAOmhZ,mBAAkB,EAAOpgY,GAEA,iBAAzBq9Y,EAAUh1D,YACjB5uW,KAAKk1Z,aAAatxZ,KAAK4B,GACvBA,EAAOshZ,gBAAe,EAAMvgY,GAC5B09Y,EAAaz+Z,EAAOy7Y,SAAW2iB,EAAUh1D,YAGzCppW,EAAOshZ,gBAAe,EAAOvgY,KAGrC8tY,EAAiB3hY,UAAUutY,eAAiB,SAAUxjZ,GAClD,OAAOzc,KAAK+la,WAAWtpZ,EAAMzc,KAAK29Z,cAAcpzX,KAAKvqC,QAEzDq0Z,EAAiB3hY,UAAUqzY,WAAa,SAAUtpZ,EAAMupZ,GACpD,IAAIC,EAAe,GASnB,OARIxpZ,GACAA,EAAKpJ,QAAQ,SAAUsJ,GACnB,IAAInX,EAASwga,EAAqBrpZ,GAC9BnX,GACAyga,EAAaria,KAAK4B,KAIvByga,GAGX5R,EAAiB3hY,UAAUwzY,wBAA0B,SAAUvpZ,GAC3D,GAAW,MAAPA,EACA,OAAO,KAEX,IAAInX,EAASxF,KAAK29Z,cAAchhZ,GAIhC,OAHKnX,GACDulC,QAAQ24B,KAAK,kCAAoC/mD,GAE9CnX,GAEX6uZ,EAAiB3hY,UAAUulY,iBAAmB,SAAUt7Y,GACpD,OAAO3c,KAAKmma,UAAUxpZ,EAAK3c,KAAKsrZ,iBAEpC+I,EAAiB3hY,UAAUirY,cAAgB,SAAUhhZ,GACjD,OAAO3c,KAAKmma,UAAUxpZ,EAAK3c,KAAKw4Z,cAEpCnE,EAAiB3hY,UAAUyzY,UAAY,SAAUxpZ,EAAKypZ,GAClD,IAAKzpZ,EACD,OAAO,KAEX,IAAK,IAAI9U,EAAI,EAAGA,EAAIu+Z,EAAWjia,OAAQ0D,IACnC,GAAI7H,KAAKqma,aAAaD,EAAWv+Z,GAAI8U,GACjC,OAAOypZ,EAAWv+Z,GAG1B,OAAO7H,KAAKmka,cAAcxnZ,IAE9B03Y,EAAiB3hY,UAAUyxY,cAAgB,SAAUxnZ,GACjD,IAAI+kC,EAAQ1hD,KACZ,OAAKA,KAAK+ia,kBACL3wT,GAAE8rR,OAAOl+X,KAAK+ia,oBACf3wT,GAAEgsR,QAAQp+X,KAAK+ia,kBAGZ3wT,GAAE/sG,KAAKrF,KAAK+ia,iBAAkB,SAAUuD,GAAY,OAAO5kX,EAAM2kX,aAAaC,EAAU3pZ,KAFpF,MAIf03Y,EAAiB3hY,UAAU2zY,aAAe,SAAU7ga,EAAQmX,GACxD,IAAI4pZ,EAAgB/ga,IAAWmX,EAC3B6pZ,EAAgBhha,EAAOuqY,cAAgBpzX,EACvC8pZ,EAAYjha,EAAOqgZ,YAAclpY,EACrC,OAAO4pZ,GAAiBC,GAAiBC,GAE7CpS,EAAiB3hY,UAAUg0Y,wBAA0B,SAAUlha,EAAQ80B,EAAUqsY,GAE7E,QADuB,IAAnBA,IAA6BA,GAAiB,IAC7Cnha,EACD,OAAO,KAEX,IAAI4hR,EAAapnR,KAAK4ma,cAAcpha,EAAOuqY,YAAavqY,EAAQ,KAAM,KAAM80B,GAC5E,OAAIqsY,EACO3ma,KAAK6ma,0BAA0Brha,EAAQ4hR,GAE3CA,GAEXitI,EAAiB3hY,UAAUo0Y,qCAAuC,SAAUrG,EAAa1Y,EAAqBztX,GAC1G,IAAI6vX,EAAcpC,EAAsBA,EAAoBwB,iBAAmB,KAC/E,OAAIY,EACOnqZ,KAAK4ma,cAAczc,EAAa,KAAMsW,EAAa1Y,EAAqBztX,GAE5E,MAEX+5X,EAAiB3hY,UAAUq0Y,6BAA+B,SAAUtG,EAAanmY,GAC7E,OAAOt6B,KAAK8ma,qCAAqCrG,EAAaA,EAAYrY,yBAA0B9tX,IAGxG+5X,EAAiB3hY,UAAUk0Y,cAAgB,SAAU/6D,EAAQrmW,EAAQi7Z,EAAa1Y,EAAqBztX,GACnG,IAAIwzU,EAAoBjC,EAAOiC,kBAC/B,GAAIA,EAAmB,CACnB,IAAIhkR,EAAS,CACT+hR,OAAQA,EACRrmW,OAAQA,EACRi7Z,YAAaA,EACb1Y,oBAAqBA,EACrBztX,SAAUA,EACV2vV,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7BvjY,QAASxR,KAAKoqY,mBAAmB/lP,cAErC,MAAiC,mBAAtBypN,EAEAA,EAAkBhkR,GAES,iBAAtBgkR,EAEL9tW,KAAKgna,kBAAkBlwJ,SAASg3F,EAAmBhkR,IAE9D/+C,QAAQ24B,KAAK,6DACN,IAEN,OAAyB,MAArBmoS,EAAOzkF,WACLykF,EAAOzkF,WAETykF,EAAO30T,MACLk7D,GAAE8tR,qBAAqBr0B,EAAO30T,OAElC,IA8BXm9W,EAAiB3hY,UAAUm0Y,0BAA4B,SAAUrha,EAAQ4hR,GACrE,GAAIpnR,KAAKoqY,mBAAmB68B,4BACxB,OAAO7/I,EAGX,IAGI8/I,EAHA9O,EAAmB5yZ,EAAOuqY,YAAYqoB,iBAEtChqD,EAAU,KAGd,GAJ8Bh8P,GAAE8rR,OAAOk6B,GAKnChqD,EAAUgqD,EAAmBA,EAAiBlU,aAAe,KAC7DgjB,GAAe,MAEd,CACD,IAAIC,EAAgB3ha,EAAO0hZ,gBACvBkgB,EAAqBpna,KAAKy/W,YAAcz/W,KAAK8ha,kBAC7CqF,GAAiBC,GACjBh5D,EAAU5oW,EAAO0+Y,aACjBgjB,GAAe,GAGfA,GAAe,EAGvB,GAAIA,EAAc,CACd,IAAIG,EAAoC,iBAAZj5D,EAAwBA,EAAU,OAG9D,OAFqBpuW,KAAKoqY,mBAAmBk9B,mBACfnvD,CAAekvD,EAAeA,GAC3B,IAAMjgJ,EAAa,IAExD,OAAOA,GAIXitI,EAAiB3hY,UAAU60Y,eAAiB,SAAUx5D,EAAOxyT,GACzD,IAAKwyT,EACD,OAAO,KAEX,GAAIA,aAAiB+5C,GACjB,OAAO/5C,EAEX,IAAIy5D,EAAkBxna,KAAK25Z,8BACvB8N,EAAwC,iBAAflsX,EACzB3e,EAAS,KAgBb,OAfA58B,KAAKygZ,YAAYinB,8BAA8BF,EAAiB,SAAUxtR,GACtE,GAAIA,aAAiB8tQ,GAAa,CAC9B,IAAI2Y,EAAczmR,GAEdytR,EACU15D,IAAU0yD,EAAY9X,cAAgBptW,IAAeklX,EAAY7X,gBAGjE76C,IAAU0yD,EAAY9X,gBAGhC/rX,EAAS6jY,MAId7jY,GAEXy3X,EAAiB3hY,UAAUi1Y,QAAU,WACjC,OAAO3na,KAAKm1Z,OAEhBd,EAAiB3hY,UAAU8jY,mBAAqB,SAAUjwY,EAAQ0vY,GAC9Dj2Z,KAAKi1Z,aAAej1Z,KAAK4na,eAAe3R,EAAmBj2Z,KAAKi1Z,aAAc,SAAUh0T,EAAK4mU,GAAQ,OAAO5mU,EAAIsmT,eAAesgB,EAAMthZ,IAErI,WAAc,OAAO,MAErB,SAAUslV,GAAU,QAASA,EAAOuC,UAEpCpuW,KAAKi1Z,aAAa5hZ,QAAQ,SAAU4tF,GAC3BA,EAAIijT,cACLjjT,EAAIgjT,WAAWhjT,EAAI8uS,YAAY3hC,YAI3CimD,EAAiB3hY,UAAU4jY,uBAAyB,SAAU/vY,EAAQ0vY,GAClEj2Z,KAAKg1Z,gBAAkBh1Z,KAAK4na,eAAe3R,EAAmBj2Z,KAAKg1Z,gBAAiB,SAAU/zT,EAAK4mU,GAAQ,OAAO5mU,EAAI0lT,kBAAkBkhB,EAAMthZ,IAAY,SAAUslV,GAAU,OAAOA,EAAO8C,eAAkB,SAAU9C,GAAU,OAAOA,EAAO4E,YAEpP4jD,EAAiB3hY,UAAUk1Y,eAAiB,SAAU3R,EAAmB6R,EAAcC,EAAaC,EAAcC,GAC9G,IAAIvmX,EAAQ1hD,KACP8na,IACDA,EAAe,IAGnB,IAGII,EAAcJ,EAAa3yZ,OAFC,SAAU8rF,GAAO,OAAOv/C,EAAM4pW,eAAeriZ,QAAQg4F,GAAO,IAGxFknU,EAAeL,EAAa3yZ,OAJF,SAAU8rF,GAAO,OAAOv/C,EAAM4pW,eAAeriZ,QAAQg4F,IAAQ,IAKvFmnU,EAAiBpoa,KAAKsrZ,eAAen2Y,OAHxB,SAAU8rF,GAAO,OAAQg1T,GAAqBA,EAAkBhtZ,QAAQg4F,GAAO,IAIhGinU,EAAY70Z,QAAQ,SAAU4tF,GAAO,OAAO8mU,EAAY9mU,GAAK,KAC7D,IAAIonU,EAAU,GAmCd,OAhCAD,EAAe/0Z,QAAQ,SAAU4tF,GAER,iBADT+mU,EAAa/mU,EAAI8uS,cAEzBs4B,EAAQzka,KAAKq9F,KAIrBonU,EAAQxsZ,KAAK,SAAU4oZ,EAAMC,GACzB,IAAI4D,EAASN,EAAavD,EAAK10B,aAC3Bw4B,EAASP,EAAatD,EAAK30B,aAC/B,OAAIu4B,IAAWC,EACJ,EAEFD,EAASC,GACN,EAEL,IAIXH,EAAe/0Z,QAAQ,SAAU4tF,GAE7B,GADmBgnU,EAAahnU,EAAI8uS,aAClB,CAEd,GAAIs4B,EAAQp/Z,QAAQg4F,IAAQ,EACxB,OAEJonU,EAAQzka,KAAKq9F,MAGrBonU,EAAQh1Z,QAAQ,SAAU4tF,GAAO,OAAO8mU,EAAY9mU,GAAK,KAC/CknU,EAAanvZ,OAAOqvZ,IAGlChU,EAAiB3hY,UAAU6jY,oBAAsB,SAAUhwY,EAAQ0vY,GAC/Dj2Z,KAAKk1Z,aAAel1Z,KAAK4na,eAAe3R,EAAmBj2Z,KAAKk1Z,aAAc,SAAUj0T,EAAK4mU,GAAQ,OAAO5mU,EAAI6lT,eAAe+gB,EAAMthZ,IAAY,SAAUslV,GAAU,OAAOA,EAAO+C,YAAe,SAAU/C,GAAU,OAAOA,EAAO1mJ,SAExOkvM,EAAiB3hY,UAAU81Y,sBAAwB,SAAUjiZ,QAC1C,IAAXA,IAAqBA,EAAS,OAClC,IAAIkiZ,EAAa,GACjBzoa,KAAKygZ,YAAYuL,6BAA6B,KAAMhsZ,KAAKo2Z,kBAAmB,SAAUp8Q,GAClF,GAAIA,aAAiBkwQ,GAAqB,CACtC,IAAIwe,EAAa,CACb1zW,QAASglF,EAAM2uQ,aACft9T,KAAM2uD,EAAMuvQ,iBAAiBh5C,eAEjCk4D,EAAW7ka,KAAK8ka,MAGxB1oa,KAAK2oa,oBAAoBF,EAAYliZ,IAEzC8tY,EAAiB3hY,UAAUk2Y,oBAAsB,WAC7C,IAAIC,EAAmB,GAUvB,OATA7oa,KAAKygZ,YAAYuL,6BAA6B,KAAMhsZ,KAAKmsZ,iBAAkB,SAAUzoQ,GACjF,GAAIA,aAAgBwmQ,GAAqB,CACrC,IAAInC,EAAsBrkQ,EAC1BmlR,EAAiBjla,KAAK,CAClBoxD,QAAS+yV,EAAoBY,aAC7Bt9T,KAAM08T,EAAoBrkP,kBAI/BmlQ,GAEXxU,EAAiB3hY,UAAUi2Y,oBAAsB,SAAUF,EAAYliZ,GACnE,IAAIm7B,EAAQ1hD,UACG,IAAXumB,IAAqBA,EAAS,OAClCvmB,KAAK+/Z,uBAAuB52Z,QAC5B,IAAI2/Z,EAAiB,GACrBL,EAAWp1Z,QAAQ,SAAUuwZ,GACzB,IACI1xR,EAAW0xR,EAAUv4U,KACrB08T,EAAsBrmW,EAAM0mW,uBAFjBwb,EAAU5uW,SAGpB+yV,GAGDA,EAAoBrkP,eAAiBxxB,IAGzCxwF,EAAMq3V,OAAOt9T,IAAI,qBAAuBssU,EAAoBY,aAAe,IAAMz2Q,EAAW,KAC5F61Q,EAAoB0B,YAAYv3Q,GAChC42R,EAAella,KAAKmkZ,MAExB/nZ,KAAK+oa,gCAAgCxiZ,GACrCvmB,KAAKq4Z,+BAA+B9xY,GACpCuiZ,EAAez1Z,QAAQ,SAAU00Y,GAO7BrmW,EAAMg+V,aAAajnD,cANP,CACR/3V,KAAMquZ,GAAOY,0BACb8Q,YAAa1Y,EACb99B,IAAKvoU,EAAMyhW,QACXj5B,UAAWxoU,EAAMwoU,cAIzBlqX,KAAK+/Z,uBAAuB9mH,UAGhCo7G,EAAiB3hY,UAAUs2Y,qBAAuB,SAAUrsZ,EAAKu1H,EAAU3rH,GAEvE,IAAI0iZ,OADW,IAAX1iZ,IAAqBA,EAAS,OAG9B0iZ,EADAtsZ,aAAeutY,GACDvtY,EAAIskY,QAGJtkY,EAElB3c,KAAK2oa,oBAAoB,CAAC,CAAE3zW,QAASi0W,EAAa59U,KAAM6mD,IAAa3rH,IAEzE8tY,EAAiB3hY,UAAU01X,uBAAyB,SAAUzrY,GAC1D,GAAIA,aAAeutY,GACf,OAAOvtY,EAEQ,iBAARA,GACPouB,QAAQ/V,MAAM,uCAGlB,IAAIsD,EAAM,KASV,OARAt4B,KAAKygZ,YAAYuL,6BAA6B,KAAMhsZ,KAAKmsZ,iBAAkB,SAAUzoQ,GACjF,GAAIA,aAAgBwmQ,GAAqB,CACrC,IAAInC,EAAsBrkQ,EACtBqkQ,EAAoB9G,UAAYtkY,IAChC2b,EAAMyvX,MAIXzvX,GAEX+7X,EAAiB3hY,UAAUw2Y,2BAA6B,WACpD,IAAIxnX,EAAQ1hD,KAoBZ,OAfwBA,KAAKw4Z,YAAYrjZ,OAHrCnV,KAAKy/W,YAAcz/W,KAAKw0Z,wBAGoB,SAAUhvZ,GAClD,IAAI2ja,EAAiBznX,EAAMqhX,kBAAoB3wT,GAAEmlJ,SAAS71M,EAAMqhX,iBAAkBv9Z,GAC9E4ja,EAAa1nX,EAAMuzW,cAAgB7iT,GAAEmlJ,SAAS71M,EAAMuzW,aAAczvZ,GACtE,OAAO2ja,GAAkBC,GAMe,SAAU5ja,GAGlD,OADqBk8C,EAAMqhX,kBAAoB3wT,GAAEmlJ,SAAS71M,EAAMqhX,iBAAkBv9Z,IACzDA,EAAOolR,eAK5CypI,EAAiB3hY,UAAU22Y,yBAA2B,SAAUlka,GAC5D,IAAIy3B,GAAS,EAMb,OALAz3B,EAAQkO,QAAQ,SAAU4tF,GAClBmR,GAAE8rR,OAAOj9R,EAAI8uS,YAAY3xS,WACzBxhE,GAAS,KAGVA,GAEXy3X,EAAiB3hY,UAAU42Y,gCAAkC,WACzD,IAAI5nX,EAAQ1hD,KACZA,KAAKupa,oBAAsB,GAC3B,IAAIC,EAAY,SAAUvoU,GACtB,IAAI4qQ,EAAS5qQ,EAAI8uS,YACblkC,GAAUz5P,GAAE8rR,OAAOryB,EAAOsC,eAC1BzsT,EAAM6nX,oBAAoB3la,KAAKq9F,IAGvCjhG,KAAKw4Z,YAAYnlZ,QAAQm2Z,GACrBxpa,KAAK+ia,kBACL/ia,KAAK+ia,iBAAiB1vZ,QAAQm2Z,IAGtCnV,EAAiB3hY,UAAU+2Y,uBAAyB,WAChD,OAAOzpa,KAAKupa,qBAEhBlV,EAAiB3hY,UAAUgkY,uBAAyB,SAAUnwY,GAC1D,IAAImjZ,EAAoB1pa,KAAKkpa,6BAC7Blpa,KAAK2pa,oBAAoBD,GACzB1pa,KAAKspa,kCAELtpa,KAAK+oa,gCAAgCxiZ,GAErCvmB,KAAKq4Z,+BAA+B9xY,IAExC8tY,EAAiB3hY,UAAUk3Y,0BAA4B,WACnD,OAAO5pa,KAAKw0Z,yBAEhBH,EAAiB3hY,UAAUm3Y,oBAAsB,SAAUC,EAASvjZ,QACjD,IAAXA,IAAqBA,EAAS,OAClC,IAAIwjZ,EAAiBD,GAAWA,EAAQ3la,OAAS,EAEjD,GAAK4la,GAAmB/pa,KAAKw0Z,wBAA7B,CAGA,GAAIuV,EAAgB,CAChB/pa,KAAKgqa,kCAAkCF,GACvC,IAAI5T,EAAqBl2Z,KAAKm2Z,cAAc9K,iBAAiBye,GAAS,GACtE9pa,KAAKiqa,sBAAwB/T,EAAmBpK,WAChD9rZ,KAAKu0Z,wBAA0B2B,EAAmBtK,SAAW,EAC7D5rZ,KAAK+3Z,iBAAmB/3Z,KAAKq2Z,mBAAmBr2Z,KAAKiqa,uBACrDjqa,KAAKw0Z,yBAA0B,OAG/Bx0Z,KAAKiqa,sBAAwB,KAC7Bjqa,KAAKu0Z,yBAA2B,EAChCv0Z,KAAK+3Z,iBAAmB,KACxB/3Z,KAAKw0Z,yBAA0B,EAEnCx0Z,KAAKy2Z,oBACLz2Z,KAAK02Z,uBAAuBnwY,KAEhC8tY,EAAiB3hY,UAAUs3Y,kCAAoC,SAAUF,GACrE,IAAI7N,EAAiBj8Z,KAAKoqY,mBAAmB8/B,gCACzCC,EAAgBnqa,KAAKoqY,mBAAmBggC,qCAC5C,GAAKnO,GAAmBkO,EAAxB,CAGA,IAAIE,EAAmB,SAAUC,GAC7BA,EAASj3Z,QAAQ,SAAUy7Y,GAEvB,GADc18S,GAAE8rR,OAAO4wB,EAAehnZ,UACzB,CACT,IAAIqiZ,EAAc2E,EACdqb,GACAA,EAAchgB,GAElBkgB,EAAiBlgB,EAAYriZ,eAIzBm0Z,GACAA,EAFSnN,MAOrBgb,GACAO,EAAiBP,KAIzBzV,EAAiB3hY,UAAU+jY,kBAAoB,WACvCz2Z,KAAKuqa,qBACLvqa,KAAKwqa,iBAAmBxqa,KAAKw4Z,aAE7Bx4Z,KAAK+3Z,kBAAoB/3Z,KAAKiqa,uBAC9Bjqa,KAAKmsZ,iBAAmBnsZ,KAAKiqa,sBAAsBzga,QACnDxJ,KAAKy0Z,mBAAqBz0Z,KAAKu0Z,wBAC/Bv0Z,KAAKw4Z,YAAcx4Z,KAAK+3Z,iBAAiBvuZ,QACzCxJ,KAAKuqa,oBAAqB,IAG1Bvqa,KAAKmsZ,iBAAmBnsZ,KAAKo2Z,kBAAkB5sZ,QAC/CxJ,KAAKy0Z,mBAAqBz0Z,KAAKs0Z,sBAC/Bt0Z,KAAKw4Z,YAAcx4Z,KAAKsrZ,eAAe9hZ,QACvCxJ,KAAKuqa,oBAAqB,EAI1Bvqa,KAAKyqa,gCAETzqa,KAAK0qa,4BACL1qa,KAAKg3Z,qBAAuBh3Z,KAAKw4Z,YAAYrjZ,OAAO,SAAU8rF,GAAO,OAAOA,EAAI8uS,YAAY/9B,aAC5FhyW,KAAK2ka,uBACL3ka,KAAK2qa,0BACL3qa,KAAK4qa,wBACL5qa,KAAKw6Z,cAAgBx6Z,KAAKqpa,yBAAyBrpa,KAAKw4Z,aAMxDx4Z,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOO,2BACbrlC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBmqC,EAAiB3hY,UAAU+3Y,6BAA+B,WACtD,IAAI/oX,EAAQ1hD,KACZ,IAAIoyG,GAAEgsR,QAAQp+X,KAAKwqa,kBAAnB,CAKA,IAAIK,GAAc,EAMlB,GALA7qa,KAAKw4Z,YAAYnlZ,QAAQ,SAAU4tF,GAC3Bv/C,EAAM8oX,iBAAiBvha,QAAQg4F,IAAQ,IACvC4pU,GAAc,MAGlBA,EAAJ,CAKA,IAAIC,EAAiB9qa,KAAKwqa,iBAAiBr1Z,OAAO,SAAU8rF,GAAO,OAAOv/C,EAAM82W,YAAYvvZ,QAAQg4F,IAAQ,IACxG8pU,EAAiB/qa,KAAKw4Z,YAAYrjZ,OAAO,SAAU8rF,GAAO,OAAO6pU,EAAe7ha,QAAQg4F,GAAO,IAE/F+pU,EAAiBF,EAAetha,QACpCuha,EAAe13Z,QAAQ,SAAU43Z,GAC7B,IAAIrkY,EAASqkY,EAAO9qB,oBAEpB,GAAKv5W,EAAL,CAOA,IADA,IAAIiC,EAAW,IACPA,EAAS1kC,QAAUyiC,GACRA,EAAOyhX,iBACbh1Y,QAAQ,SAAU63Z,GACvB,IAAIC,EAAyBH,EAAe/ha,QAAQiia,IAAY,EAC5DE,EAAkBviY,EAAS5/B,QAAQiia,GAAW,EAC9CC,GAA0BC,GAC1BviY,EAASjlC,KAAKsna,KAGtBtkY,EAASA,EAAOu5W,oBAGpB,GAAKt3W,EAAS1kC,OAAd,CAKA,IAAIo6P,EAAU11N,EAASp/B,IAAI,SAAUw3F,GAAO,OAAO+pU,EAAe/ha,QAAQg4F,KACtEb,EAAY7hF,KAAKukC,IAAInL,MAAMp5B,KAAMggP,GACrCnsJ,GAAEw0R,gBAAgBokC,EAAgBC,EAAQ7qU,EAAY,QANlD4qU,EAAepna,KAAKqna,QAnBpBD,EAAepna,KAAKqna,KA2B5Bjra,KAAKw4Z,YAAcwS,KAEvB3W,EAAiB3hY,UAAU24Y,6BAA+B,WACtD,OAAOrra,KAAKs0Z,sBAAwB,GAOxCD,EAAiB3hY,UAAUi4Y,wBAA0B,WAE7C3qa,KAAK4ha,sBADL5ha,KAAK+ia,iBACwB/ia,KAAKsrZ,eAAetyY,OAAOhZ,KAAK+ia,kBAGhC/ia,KAAKsrZ,gBAG1C+I,EAAiB3hY,UAAUiyY,qBAAuB,WAC9C,IAAI2G,EAAStra,KAAKw4Z,YAAYrjZ,OAAO,SAAUy6B,GAAK,OAAOA,EAAEmgW,YAAY9+B,eACrEs6D,EAAWvra,KAAKw4Z,YAAYrjZ,OAAO,SAAUy6B,GAAK,OAAQA,EAAEmgW,YAAY9+B,eAC5EjxW,KAAKw4Z,YAAc8S,EAAOtyZ,OAAOuyZ,IAErClX,EAAiB3hY,UAAUg4Y,0BAA4B,WAGnD,GADA1qa,KAAKwra,kCACDp5T,GAAEgsR,QAAQp+X,KAAK+ia,kBAAnB,CAGA/ia,KAAKw4Z,YAAcx4Z,KAAK+ia,iBAAmB/ia,KAAK+ia,iBAAiB/pZ,OAAOhZ,KAAKw4Z,aAAex4Z,KAAKw4Z,YACjG,IAAIpM,EAAsBpsZ,KAAKm2Z,cAAclK,oBAAoBjsZ,KAAK+ia,iBAAkB/ia,KAAKmsZ,kBAC7FnsZ,KAAKmsZ,iBAAmBC,EAAoBpzY,OAAOhZ,KAAKmsZ,oBAO5DkI,EAAiB3hY,UAAUk4Y,sBAAwB,WAC/C5qa,KAAK45Z,wBAA0B,GAC/B55Z,KAAK65Z,yBAA2B,GAChC75Z,KAAK85Z,0BAA4B,GACjC95Z,KAAKyra,wBAA0B,GAC/Bzra,KAAK0ra,yBAA2B,GAChC1ra,KAAK2ra,0BAA4B,GACjC3ra,KAAK00Z,qBAAuB,GAC5B10Z,KAAK20Z,sBAAwB,GAC7B30Z,KAAK40Z,uBAAyB,GAC9B50Z,KAAK60Z,oBAAsB,GAC3B70Z,KAAK80Z,2BAA6B,IAEtCT,EAAiB3hY,UAAUq2Y,gCAAkC,SAAUxiZ,GACnEvmB,KAAK4ra,2CACL5ra,KAAK6ra,gCAAgCtlZ,GACrCvmB,KAAKy3Z,oBACLz3Z,KAAKq+Z,0BAAqB55Z,OAAWA,GAAW,GAChDzE,KAAK0/Z,mBAOL1/Z,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOc,gCACb5lC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBmqC,EAAiB3hY,UAAUm5Y,gCAAkC,SAAUtlZ,GACnEvmB,KAAK8ra,sBAAsB9ra,KAAK45Z,wBAAyB55Z,KAAK00Z,sBAC9D10Z,KAAK8ra,sBAAsB9ra,KAAK85Z,0BAA2B95Z,KAAK40Z,wBAChE50Z,KAAK8ra,sBAAsB9ra,KAAK65Z,yBAA0B75Z,KAAK20Z,uBAC/D30Z,KAAK+ra,2BACL/ra,KAAKy/Z,cAAcl5Y,IAEvB8tY,EAAiB3hY,UAAUq5Y,yBAA2B,WAE9C/ra,KAAK60Z,oBADL70Z,KAAKoqY,mBAAmBme,cACGvoZ,KAAK20Z,sBAC3B37Y,OAAOhZ,KAAK40Z,wBACZ57Y,OAAOhZ,KAAK00Z,sBAGU10Z,KAAK00Z,qBAC3B17Y,OAAOhZ,KAAK40Z,wBACZ57Y,OAAOhZ,KAAK20Z,wBAIzBN,EAAiB3hY,UAAU+sY,cAAgB,SAAUl5Y,GACjDvmB,KAAKgsa,uBAAuBzlZ,GAC5BvmB,KAAKisa,yBAET5X,EAAiB3hY,UAAUs5Y,uBAAyB,SAAUzlZ,GAC1D,IAAIm7B,EAAQ1hD,KAERksa,EAAalsa,KAAKsrZ,eAAe9hZ,MAAM,GAEvC2ia,EAAWnsa,KAAKoqY,mBAAmBme,cACvC,CACIvoZ,KAAK00Z,qBACL10Z,KAAK20Z,sBACL30Z,KAAK40Z,wBACPvhZ,QAAQ,SAAUlO,GAChB,GAAIgna,EAAU,CAEV,IAAIC,EAAS1qX,EAAMk6W,qBAAqBz2Z,GACxCA,EAAQkO,QAAQ,SAAU7N,GACtB4ma,GAAU5ma,EAAOugZ,iBACjBvgZ,EAAO++Y,QAAQ6nB,EAAQ7lZ,SAG1B,CAED,IAAI8lZ,EAAS,EACblna,EAAQkO,QAAQ,SAAU7N,GACtBA,EAAO++Y,QAAQ8nB,EAAQ9lZ,GACvB8lZ,GAAU7ma,EAAOugZ,mBAGzB3zS,GAAEs0R,mBAAmBwlC,EAAY/ma,KAKrC+ma,EAAW74Z,QAAQ,SAAU7N,GACzBA,EAAO++Y,QAAQ,KAAMh+X,MAG7B8tY,EAAiB3hY,UAAUu5Y,sBAAwB,WAE/C,CACIjsa,KAAK45Z,wBACL55Z,KAAK65Z,yBACL75Z,KAAK85Z,2BACPzmZ,QAAQ,SAAUlO,GAChBA,EAAQkO,QAAQ,SAAU7N,GAClBA,aAAkBsiZ,IACAtiZ,EACN8iZ,iBAK5B+L,EAAiB3hY,UAAUo5Y,sBAAwB,SAAUQ,EAAqB3R,GAC9EA,EAAiBx2Z,OAAS,EAC1BnE,KAAKygZ,YAAY8rB,oCAAoCD,EAAqB,SAAUtyR,GAC5EA,aAAiBqlQ,IACjBsb,EAAiB/2Z,KAAKo2I,MAIlCq6Q,EAAiB3hY,UAAU85Y,oCAAsC,WAGzDxsa,KAAK+0Z,iCAFL/0Z,KAAK2/W,6BAEmC3/W,KAAK40Z,uBAIL50Z,KAAKysa,iCAEjDzsa,KAAK80Z,2BAA6B90Z,KAAK+0Z,iCAClC/7Y,OAAOhZ,KAAK00Z,sBACZ17Y,OAAOhZ,KAAK20Z,uBAGjB,IAAI/3X,EAAS,GAIb,OAHA58B,KAAK80Z,2BAA2BzhZ,QAAQ,SAAU4tF,GAC9CrkE,EAAOqkE,EAAIggT,UAAW,IAEnBrkX,GAEXy3X,EAAiB3hY,UAAUg6Y,yBAA2B,SAAUhsa,EAAMisZ,GAClE,IAAI/vX,EACJ,OAAQl8B,GACJ,KAAK4vY,GAAUoD,YACX92W,EAAS58B,KAAKyra,wBAAwB9e,GACtC,MACJ,KAAKrc,GAAUmD,aACX72W,EAAS58B,KAAK0ra,yBAAyB/e,GACvC,MACJ,QACI/vX,EAAS58B,KAAK2ra,0BAA0Bhf,GAMhD,OAHIv6S,GAAEgsR,QAAQxhW,KACVA,EAAS,IAENA,GAEXy3X,EAAiB3hY,UAAUi6Y,6BAA+B,SAAUC,GAGhE5sa,KAAKyra,wBAA0B,GAC/Bzra,KAAK0ra,yBAA2B,GAChC1ra,KAAK2ra,0BAA4B,GACjC,IAAIkB,EAAY,SAAU/ka,EAAU80B,EAAQ+vX,GAExC,IADA,IAAImgB,GAAc,EACTjla,EAAI,EAAGA,EAAIC,EAAS3D,OAAQ0D,IAAK,CAEtC,IAAImyI,EAAQlyI,EAASD,IAEjBmyI,aAAiBqlQ,IAE8B,IAAjCutB,EAAc5yR,EAAMinQ,SAKpB4rB,EADI7yR,EACkBmvQ,uBAAwBvsX,EAAQ+vX,EAAO,MAG3EmgB,GAAc,EACTlwY,EAAO+vX,KACR/vX,EAAO+vX,GAAQ,IAEnB/vX,EAAO+vX,GAAM/oZ,KAAKo2I,IAG1B,OAAO8yR,GAEXD,EAAU7sa,KAAK45Z,wBAAyB55Z,KAAKyra,wBAAyB,GACtEoB,EAAU7sa,KAAK65Z,yBAA0B75Z,KAAK0ra,yBAA0B,GACxEmB,EAAU7sa,KAAK85Z,0BAA2B95Z,KAAK2ra,0BAA2B,IAE9EtX,EAAiB3hY,UAAU+kY,kBAAoB,WAC3C,IAAImV,EAAgB5sa,KAAKwsa,sCACzBxsa,KAAK2sa,6BAA6BC,IAEtCvY,EAAiB3hY,UAAU+5Y,+BAAiC,WACxD,OAAOzsa,KAAK40Z,uBAAuBz/Y,OAAOnV,KAAKs7Z,mBAAmB/wX,KAAKvqC,QAE3Eq0Z,EAAiB3hY,UAAU2rY,qBAAuB,SAAU0O,EAA0BxmZ,EAAQymZ,GAE1F,QADe,IAAXzmZ,IAAqBA,EAAS,QAC7BvmB,KAAKy1Z,aAGVz1Z,KAAKita,kBAAoBF,GAA4B/sa,KAAKita,kBACrDjta,KAAKita,mBAAV,CAMA,IAAIC,EAAoBlta,KAAK40Z,uBAAuBz/Y,OAAO,SAAU8rF,GAAO,OAAQA,EAAIulT,YACpF2mB,EAAiBnta,KAAK40Z,uBAAuBz/Y,OAAO,SAAU8rF,GAAO,OAAOA,EAAIulT,YACpF,GAAK2mB,EAAehpa,OAApB,CAIA,IACIipa,EADAC,EAAqB,GAEzBx/M,EAAO,OAAa,CAChB,IAAIy/M,EAAYH,EAAe13Z,OAAO,SAAUyB,EAAO+pF,GAAO,OAAO/pF,EAAQ+pF,EAAIulT,WAAc,GAC/F4mB,EAAyBpta,KAAKita,kBAAoBjta,KAAK47Z,qBAAqBsR,GAC5E,IAAK,IAAIrla,EAAI,EAAGA,EAAIsla,EAAehpa,OAAQ0D,IAAK,CAC5C,IAAIo5F,EAAMksU,EAAetla,GACrB0la,EAAkBH,EAAyBnsU,EAAIulT,UAAY8mB,EAC3DE,OAAmB,EAOvB,GANID,EAAkBtsU,EAAIqlT,cACtBknB,EAAmBvsU,EAAIqlT,cAEG,MAArBrlT,EAAIslT,eAAyBgnB,EAAkBtsU,EAAIslT,gBACxDinB,EAAmBvsU,EAAIslT,eAEvBinB,EAAkB,CAGlBvsU,EAAIklT,eAAeqnB,EAAkBjnZ,GACrC6rF,GAAEq0R,gBAAgB0mC,EAAgBlsU,GAClCisU,EAAkBtpa,KAAKq9F,GACvB,SAAS4sH,EAEbw/M,EAAmBxla,GAAK0W,KAAK06B,MAAMs0X,GAEvC,MAEJ,IAAIE,EAAiBL,EACrBD,EAAe95Z,QAAQ,SAAU4tF,EAAKp5F,GAClCo5F,EAAIklT,eAAe5nY,KAAKG,IAAI2uZ,EAAmBxla,GAAI4la,GAAiBlnZ,GACpEknZ,GAAkBJ,EAAmBxla,KAEzC7H,KAAKy/Z,cAAcl5Y,GACdymZ,IACDhta,KAAK0/Z,mBACL1/Z,KAAK0ta,2BAA2BP,EAAgB5mZ,SAtChDvmB,KAAKy1Z,YAAa,IA0C1BpB,EAAiB3hY,UAAUi7Y,iBAAmB,SAAUC,EAAWrnZ,EAAQymZ,QACxD,IAAXzmZ,IAAqBA,EAAS,oBAElC,IAAIsuY,EAAsB70Z,KAAKw5Z,yBAC/B,KAAIoU,GAAa,IAAM/Y,EAAoB1wZ,OAA3C,CAGA,IAAI0pa,EAAe,GACfC,EAAkB,GACtBjZ,EAAoBxhZ,QAAQ,SAAU7N,IACW,IAAzCA,EAAOuqY,YAAY1+B,kBACnBy8D,EAAgBlqa,KAAK4B,GAGrBqoa,EAAajqa,KAAK4B,KAU1B,IANA,IAAIuoa,EAAqBF,EAAarka,MAAM,GACxCwka,GAAmB,EACnBC,EAAkB,SAAUzoa,GAC5B4sG,GAAEq0R,gBAAgBonC,EAAcroa,GAChCsoa,EAAgBlqa,KAAK4B,KAEjBwoa,GAAkB,CACtBA,GAAmB,EACnB,IAAIE,EAAkBN,EAAY5ta,KAAK47Z,qBAAqBkS,GAC5D,GAAII,GAAmB,EAEnBL,EAAax6Z,QAAQ,SAAU7N,GAC3BA,EAAOkhZ,WAAWngY,UAStB,IALA,IAAI+pM,EAAQ49M,EAAkBlua,KAAK47Z,qBAAqBiS,GAGpDM,EAAmBD,EAEdrma,EAAIgma,EAAa1pa,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CAC/C,IAAIrC,EAASqoa,EAAahma,GACtBuxZ,EAAW76Y,KAAK06B,MAAMzzC,EAAOugZ,iBAAmBz1L,GAChD8oM,EAAW5zZ,EAAO8gZ,eAClB9gZ,EAAOkhZ,WAAWngY,GAClB0nZ,EAAgBzoa,GAChBwoa,GAAmB,GAEdxoa,EAAO6gZ,iBAAiB+S,IAC7B5zZ,EAAO2gZ,eAAe3gZ,EAAO+gZ,cAAehgY,GAC5C0nZ,EAAgBzoa,GAChBwoa,GAAmB,GAKfxoa,EAAO2gZ,eAFW,IAANt+Y,EAEUsma,EAGA/U,EAHkB7yY,GAMhD4nZ,GAAoB/U,GAIhCp5Z,KAAKy/Z,cAAcl5Y,GACnBvmB,KAAK0/Z,mBACDsN,GAGJhta,KAAK0ta,2BAA2BK,EAAoBxnZ,KAExD8tY,EAAiB3hY,UAAUg7Y,2BAA6B,SAAUvoa,EAASohB,GACvE,IAAIm7B,EAAQ1hD,KACZmF,EAAQkO,QAAQ,SAAU7N,GAUtBk8C,EAAMg+V,aAAajnD,cATP,CACR/3V,KAAMquZ,GAAOa,qBACbpqZ,OAAQA,EACRL,QAAS,CAACK,GACV63T,UAAU,EACV4sD,IAAKvoU,EAAMyhW,QACXj5B,UAAWxoU,EAAMwoU,UACjB3jW,OAAQA,OAKpB8tY,EAAiB3hY,UAAUi3Y,oBAAsB,SAAUyE,GACvD,IAAIC,EAAqB,GACrBC,EAAsB,GACtBC,EAAuB,GAC3BH,EAAe/6Z,QAAQ,SAAU7N,GAC7B,OAAQA,EAAOkgZ,aACX,IAAK,OACD2oB,EAAmBzqa,KAAK4B,GACxB,MACJ,IAAK,QACD8oa,EAAoB1qa,KAAK4B,GACzB,MACJ,QACI+oa,EAAqB3qa,KAAK4B,MAItC,IAAIgpa,EAAyB,IAAIxa,GACjCh0Z,KAAK45Z,wBAA0B55Z,KAAKyua,sBAAsBC,sBAAsBL,EAAoBrua,KAAKmsZ,iBAAkBqiB,EAAwBl+B,GAAUoD,YAAa1zY,KAAK45Z,yBAC/K55Z,KAAK65Z,yBAA2B75Z,KAAKyua,sBAAsBC,sBAAsBJ,EAAqBtua,KAAKmsZ,iBAAkBqiB,EAAwBl+B,GAAUmD,aAAczzY,KAAK65Z,0BAClL75Z,KAAK85Z,0BAA4B95Z,KAAKyua,sBAAsBC,sBAAsBH,EAAsBvua,KAAKmsZ,iBAAkBqiB,EAAwB,KAAMxua,KAAK85Z,4BAEtKzF,EAAiB3hY,UAAUk5Y,yCAA2C,WAClE,IAAIpE,EAAkBxna,KAAK25Z,8BAC3B35Z,KAAKygZ,YAAYinB,8BAA8BF,EAAiB,SAAUxtR,GAClEA,aAAiB8tQ,IACC9tQ,EACN2vQ,+BAIxB0K,EAAiB3hY,UAAUi8Y,oBAAsB,WAC7C,OAAO3ua,KAAK+ia,kBAEhB1O,EAAiB3hY,UAAU84Y,+BAAiC,WACxD,GAAKxra,KAAKo1Z,uBAAV,CAGAp1Z,KAAKo1Z,wBAAyB,EAC9B,IAAIwZ,EAAoB5ua,KAAKoqY,mBAAmBykC,oBAAoB7ua,KAAKy/W,WAOrEqvD,EAAqB9ua,KAAKy/W,UAC1Bz/W,KAAKoqY,mBAAmB2kC,4BAA8B/ua,KAAKoqY,mBAAmB4kC,4BAE9EvxD,EAAmBz9W,KAAKoqY,mBAAmB6kC,qBAG/C,KAFqBjva,KAAKg1Z,gBAAgB7wZ,OAAS,GAAKnE,KAAK61Z,gBACpBiZ,GAAuBF,GAAsBnxD,EASlFz9W,KAAK+ia,iBAAmB,SARP,CACjB,IAAImM,EAAmBlva,KAAKmva,oBAAoBC,uBAAuBpva,KAAKg1Z,kBACnDh1Z,KAAKqva,cAAcH,EAAkBlva,KAAK+ia,oBAE/D/ia,KAAK+ia,iBAAmBmM,MAOpC7a,EAAiB3hY,UAAU28Y,cAAgB,SAAUC,EAAOC,GACxD,OAAO/oC,GAAS8oC,EAAOC,EAAO,SAAUxzZ,EAAGC,GAAK,OAAOD,EAAE8pY,aAAe7pY,EAAE6pY,cAE9EwO,EAAiB3hY,UAAUkpY,qBAAuB,SAAUwK,GACxD,OAAOA,EAAW3wZ,OAAO,SAAU/L,EAAOu3F,GAAO,OAAOv3F,EAAQu3F,EAAI8kT,kBAAqB,IAE7FsO,EAAiB3hY,UAAU88Y,oBAAsB,WAC7C,OAAOxva,KAAKmsZ,kBAEhBkI,EAAiB3hY,UAAU+8Y,mBAAqB,WAC5C,IAAI/6D,EAAgB10W,KAAKoqY,mBAAmB+jB,mBAC5C,OAAyB,MAAjBz5C,IAA0D,IAAjCA,EAAcvC,gBACvB,MAAnBnyW,KAAKoW,YAAsBpW,KAAKoW,WAAWhO,KAAK,SAAUwnC,GAAK,OAA4B,IAArBA,EAAEuiU,kBAEjFiiD,GAAa,CACTzX,GAAU,uBACX0X,EAAiB3hY,UAAW,0BAAsB,GACrD0hY,GAAa,CACTzX,GAAU,sBACX0X,EAAiB3hY,UAAW,yBAAqB,GACpD0hY,GAAa,CACTzX,GAAU,kBACX0X,EAAiB3hY,UAAW,qBAAiB,GAChD0hY,GAAa,CACTzX,GAAU,0BACX0X,EAAiB3hY,UAAW,6BAAyB,GACxD0hY,GAAa,CACTzX,GAAU,wBACX0X,EAAiB3hY,UAAW,2BAAuB,GACtD0hY,GAAa,CACTzX,GAAU,iBACX0X,EAAiB3hY,UAAW,oBAAgB,GAC/C0hY,GAAa,CACTzX,GAAU,gBACX0X,EAAiB3hY,UAAW,mBAAe,GAC9C0hY,GAAa,CACTzX,GAAU,2BACX0X,EAAiB3hY,UAAW,8BAA0B,GACzD0hY,GAAa,CACTzX,GAAU,wBACX0X,EAAiB3hY,UAAW,2BAAuB,GACtD0hY,GAAa,CACTtX,GAAS,mBACVuX,EAAiB3hY,UAAW,sBAAkB,GACjD0hY,GAAa,CACTtX,GAAS,eACVuX,EAAiB3hY,UAAW,kBAAc,GAC7C0hY,GAAa,CACTtX,GAAS,0BACVuX,EAAiB3hY,UAAW,6BAAyB,GACxD0hY,GAAa,CACTzX,GAAU,cACX0X,EAAiB3hY,UAAW,iBAAa,GAC5C0hY,GAAa,CACTzX,GAAU,YACX0X,EAAiB3hY,UAAW,eAAW,GAC1C0hY,GAAa,CACT9X,IACD+X,EAAiB3hY,UAAW,OAAQ,MACvC0hY,GAAa,EACC,EAvjFwDjqR,EAujFrD8yQ,GAAU,iBAtjFpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAsjFpC,MACX03Y,EAAiB3hY,UAAW,WAAY,MACxB0hY,GAAa,CAC5BlZ,GAAK,qBACNmZ,GA3jF6C,IAAsBlqR,EAGpC,GAkkFlCulS,GAAsD,SAAU7lS,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAG5D6lS,GAA6B,WAC7B,SAASA,KA8GT,OA5GAA,EAAYj9Y,UAAUguX,yBAA2B,SAAU70C,GACvD,IAAI+jE,EAAiB5va,KAAKoqY,mBACtBpzB,EAAiC,MAAnBnL,EAAO9jU,SAAmB8jU,EAAO9jU,SAAW6nY,EAAetvB,iBACzErpC,EAAiC,MAAnBpL,EAAO3qU,SAAmB2qU,EAAO3qU,SAAY0uY,EAAervB,kBAAoBnuS,GAAE+1R,oBAChGz+X,EAAwB,MAAhBmiW,EAAOniW,MAAgBmiW,EAAOniW,MAAQkma,EAAeC,cACjE,OAAOtxZ,KAAKukC,IAAIvkC,KAAKG,IAAIhV,EAAOutW,GAAcD,IAElD24D,EAAYj9Y,UAAUo9Y,yBAA2B,SAAUtqa,EAAQuqa,GAC/D,IAAInzY,EAAS,GACT42R,GAAQ,EACRw8G,EAAc,SAAUzjB,EAAoBI,GAC5C,IAAK,IAAI9kZ,EAAI,EAAGA,EAAI0kZ,EAAmBpoZ,OAAQ0D,IAAK,CAChD,GAAI2rT,EACA,OAGJ,IAAI9vK,EAAO6oQ,EAAmB1kZ,GAC1B67I,aAAgBwmQ,IAEhB8lB,EADetsR,EACM4kB,cAAeqkP,EAAO,GAC3C/vX,EAAO+vX,GAAQjpQ,GAEVA,IAASl+I,IACdguT,GAAQ,KAOpB,OAHAw8G,EAAYD,EAAsB,GAG3Bv8G,EAAQ52R,EAAS,MAoC5B+yY,EAAYj9Y,UAAUs5X,6BAA+B,SAAUplX,EAAQqpY,EAAMh9Y,GACzE,IAAIyuB,EAAQ1hD,KACPiwa,GAGLA,EAAK58Z,QAAQ,SAAU2mI,GACfA,aAAiBkwQ,IACjBxoW,EAAMsqW,6BAA6BhyQ,EAAOA,EAAMsuB,cAAer1I,GAEnEA,EAAS+mH,EAAOpzG,MAGxB+oY,EAAYj9Y,UAAUg1Y,8BAAgC,SAAUuI,EAAMh9Y,GAClE,IAAIyuB,EAAQ1hD,KACPiwa,GAGLA,EAAK58Z,QAAQ,SAAU2mI,GACfA,aAAiB8tQ,IACjBpmW,EAAMgmX,8BAA8B1tR,EAAMsuB,cAAer1I,GAE7DA,EAAS+mH,MAGjB21R,EAAYj9Y,UAAU65Y,oCAAsC,SAAU0D,EAAMh9Y,GACxE,IAAIyuB,EAAQ1hD,KACPiwa,GAGLA,EAAK58Z,QAAQ,SAAU2mI,GACfA,aAAiB8tQ,IACjBpmW,EAAM6qX,oCAAoCvyR,EAAMmvQ,uBAAwBl2X,GAE5EA,EAAS+mH,MAGjB01R,GAAa,CACT/yB,GAAU,uBACXgzB,EAAYj9Y,UAAW,0BAAsB,GAClCg9Y,GAAa,CACvBx0B,GAAK,gBACNy0B,GA9G0B,GAwH7BO,GAAsD,SAAUrmS,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAG5DqmS,GAAuC,WACvC,SAASA,KAiJT,OA/IAA,EAAsBz9Y,UAAUg8Y,sBAAwB,SAExD0B,EAEA7jB,EAEAiiB,EAEAjgE,EAEA8hE,GACI,IAEIC,EACAC,EAHA7uX,EAAQ1hD,KACR48B,EAAS,GAGT4zY,EAAmBxwa,KAAKywa,iBAAiBJ,GAuC7C,OApCAD,EAAqB/8Z,QAAQ,SAAUikZ,GAInC,IAHA,IAAIoZ,EAAsBhvX,EAAMouX,yBAAyBvjB,EAAoB+K,GACzEqZ,EAAkB,GAClBC,GAAeL,EACV1oa,EAAI,EAAGA,EAAI6oa,EAAoBvsa,OAAQ0D,IAC5C,GAAI+oa,GAAeF,EAAoB7oa,KAAO0oa,EAAqB1oa,GAAI,CAEnE,IAAIgpa,EAAWnvX,EAAMisW,kBAAkB+iB,EAAoB7oa,GAAI2ma,EAAwBgC,EAAkBjiE,GACzGoiE,EAAgB9oa,GAAKgpa,EAEZ,GAALhpa,EACA+0B,EAAOh5B,KAAKita,GAGZF,EAAgB9oa,EAAI,GAAGqhZ,SAAS2nB,QAKpCF,EAAgB9oa,GAAKyoa,EAAiBzoa,GAGE,IAA3B8oa,EAAgBxsa,OAIjCy4B,EAAOh5B,KAAK0zZ,GAGIllT,GAAEj7F,KAAKw5Z,GACbznB,SAASoO,GAEvBgZ,EAAmBK,EACnBJ,EAAuBG,IAE3B1wa,KAAK8wa,wBAAwBl0Y,EAAQ,MAC9BA,GAEXuzY,EAAsBz9Y,UAAUi7X,kBAAoB,SAAUb,EAAe0hB,EAAwBgC,EAAkBjiE,GACnH,IAAIv5S,EAAU83V,EAAcnE,aACxBptW,EAAaizX,EAAuBta,oBAAoBl/V,GAExDyrW,EAAc+P,EADH1oB,GAAYI,eAAelzV,EAASzZ,IAgBnD,OAXIklX,GAAeA,EAAYrY,2BAA6B0E,IACxD2T,EAAc,MAEdruT,GAAE8rR,OAAOuiC,GAETA,EAAYzjS,SAGZyjS,EAAc,IAAI3Y,GAAYgF,EAAe93V,EAASzZ,EAAYgzT,GAClEvuW,KAAKwR,QAAQ4oY,SAASqmB,IAEnBA,GAGX0P,EAAsBz9Y,UAAU+9Y,iBAAmB,SAAUM,GACzD,IAAIn0Y,EAAS,GACTsuK,EAAY,SAAU8lO,GACtBA,EAAgB39Z,QAAQ,SAAU49Z,GAC9B,GAAIA,aAAyBnpB,GAAa,CACtC,IAAI2Y,EAAcwQ,EAClBr0Y,EAAOq0Y,EAAcjwB,eAAiByf,EACtCv1N,EAAUu1N,EAAYn4P,mBAOlC,OAHIyoQ,GACA7lO,EAAU6lO,GAEPn0Y,GAEXuzY,EAAsBz9Y,UAAUo+Y,wBAA0B,SAAUE,EAAiBpqY,GACjF,IAAI8a,EAAQ1hD,KACZgxa,EAAgB39Z,QAAQ,SAAU69Z,GAE9B,GADAA,EAAe53R,UAAU1yG,GACrBsqY,aAA0BppB,GAAa,CACvC,IAAI2Y,EAAcyQ,EAClBxvX,EAAMovX,wBAAwBrQ,EAAYn4P,cAAem4P,OAIrE0P,EAAsBz9Y,UAAUo9Y,yBAA2B,SAAUvjB,EAAoB/mZ,GACrF,IAAIo3B,EAAS,GACT42R,GAAQ,EACRw8G,EAAc,SAAUzjB,EAAoBI,GAC5C,IAAK,IAAI9kZ,EAAI,EAAGA,EAAI0kZ,EAAmBpoZ,OAAQ0D,IAAK,CAEhD,GAAI2rT,EACA,OAEJ,IAAI9vK,EAAO6oQ,EAAmB1kZ,GAC1B67I,aAAgBwmQ,IAEhB8lB,EADetsR,EACM4kB,cAAeqkP,EAAO,GAC3C/vX,EAAO+vX,GAAQjpQ,GAEVA,IAASl+I,IACdguT,GAAQ,KAQpB,OAJAw8G,EAAYzjB,EAAoB,GAI5B/4F,EACO52R,GAEXmO,QAAQ24B,KAAK,sBACN,OAEXwsW,GAAa,CACTvzB,GAAU,gBACXwzB,EAAsBz9Y,UAAW,mBAAe,GACnDw9Y,GAAa,CACTvzB,GAAU,YACXwzB,EAAsBz9Y,UAAW,eAAW,GACvBw9Y,GAAa,CACjCh1B,GAAK,0BACNi1B,GAjJoC,GAsKvCgB,GAA8B,WAC9B,SAASA,KAiFT,OA/EAA,EAAaC,kBAAoB,CAC7B,eAAgB,WAAY,eAAgB,yBAC5C,wBAAyB,kBAAmB,eAC5C,WAAY,YAAa,uBAAwB,oBACjD,eAAgB,yBAA0B,iBAAkB,kBAEhED,EAAaE,kBAAoB,CAC7B,aAAc,sBAAuB,WAAY,UAAW,qBAAsB,iBAAkB,aACpG,QAAS,aAAc,uBAAwB,qBAAsB,yBAA0B,WAC/F,8BAA+B,qBAAsB,gBAAiB,sBAAuB,cAC7F,gBAAiB,oBAAqB,2BAA4B,4BAA6B,gCAC/F,+BAAgC,cAAe,mBAAoB,aAAc,YAAa,WAElGF,EAAaG,iBAAmB,CAC5B,aAAc,eAAgB,UAAW,aAAc,cAAe,mBAAoB,uBAE9FH,EAAaI,kBAAoB,CAC7B,YAAa,kBAAmB,YAAa,WAAY,eAAgB,oBACzE,wBAAyB,oBAAqB,yBAA0B,uBACxE,cAAe,cAAe,2BAA4B,6BAC1D,kBAAmB,mBAAoB,kCAAmC,mBAC1E,oBAAqB,qBAAsB,iBAAkB,0BAC7D,iBAAkB,sBAAuB,oBAAqB,wBAAyB,6BACvF,0BAA2B,sBAAuB,4BAEtDJ,EAAaK,mBAAqB,CAC9B,6BAA8B,0BAA2B,0BAA2B,6BACpF,+BAAgC,gCAAiC,mCACjE,mCAAoC,wCAAyC,4BAC7E,wBAAyB,2BAA4B,2BAA4B,QAAS,wBAAyB,kBACnH,wBAAyB,gBAAiB,0BAA2B,eAAgB,yBACrF,qBAAsB,wBAAyB,wBAAyB,0BAA2B,uBACnG,qBAAsB,0BAA2B,oBAAqB,mBAAoB,2BAC1F,WAAY,mBAAoB,iBAAkB,aAAc,oBAAqB,kBACrF,yBAA0B,wBAAyB,mBAAoB,uBAAwB,4BAA6B,gBAC5H,8BAA+B,yBAA0B,2BAA4B,uBACrF,oBAAqB,mBAAoB,+BAAgC,YAAa,gBAAiB,sBACvG,iCAAkC,sBAAuB,0BAA2B,wBAAyB,0BAC7G,gCAAiC,wBAAyB,gCAAiC,6BAC3F,qCAAsC,4BAA6B,8BAA+B,yBAA0B,YAC5H,0BAA2B,+BAAgC,yBAA0B,4BAA6B,mBAClH,oBAAqB,cAAe,uBAAwB,4BAA6B,kCAAmC,YAC5H,oBAAqB,iBAAkB,kBAAmB,8BAA+B,yBAA0B,kBACnH,qBAAsB,+BAAgC,kBAAmB,0BAA2B,iBAAkB,uBACtH,uBAAwB,aAAc,gCAAiC,yBAA0B,0BAA2B,sBAC5H,mBAAoB,mBAAoB,iBAAkB,eAAgB,cAAe,0BAA2B,aACpH,yBAA0B,8BAA+B,yBAA0B,sBAAuB,oBAAqB,WAC/H,eAAgB,8BAA+B,0BAA2B,iBAAkB,6BAA8B,0BAC1H,0BAA2B,sCAAuC,0BAA2B,4BAC7F,iBAAkB,uBAAwB,yBAA0B,+BAAgC,gCAAiC,YACrI,+BAAgC,eAAgB,kBAAmB,gCAAiC,0BACpG,gCAAiC,oCAAqC,uCAAwC,oBAC9G,iBAAkB,oBAAqB,8BAA+B,sBAAuB,gCAC7F,gBAAiB,mBAAoB,2BAkBzCL,EAAaM,eArF+C,WAC5D,IAAK,IAAI7sZ,EAAI,EAAG/c,EAAI,EAAGwjI,EAAK/xH,UAAUnV,OAAQ0D,EAAIwjI,EAAIxjI,IAAK+c,GAAKtL,UAAUzR,GAAG1D,OACxE,IAAI2lI,EAAIv/H,MAAMqa,GAAI43G,EAAI,EAA3B,IAA8B30H,EAAI,EAAGA,EAAIwjI,EAAIxjI,IACzC,IAAK,IAAIkU,EAAIzC,UAAUzR,GAAI0M,EAAI,EAAG+2H,EAAKvvH,EAAE5X,OAAQoQ,EAAI+2H,EAAI/2H,IAAKioH,IAC1DsN,EAAEtN,GAAKzgH,EAAExH,GACjB,OAAOu1H,EAgFuBsB,CAAe+lS,EAAaG,iBAAkBH,EAAaE,kBAAmBF,EAAaC,kBAAmBD,EAAaI,kBAfzJJ,EAAaO,oBAAsB,CAC/B,iBAAkB,wBAAyB,iCAC3C,gBAAiB,yBAA0B,mBAAoB,4BAA6B,0BAC5F,eAAgB,yBAA0B,cAAe,cAAe,mBACxE,eAAgB,sBAAuB,mBAAoB,uBAAwB,0BACnF,sBAAuB,mBAAoB,eAAgB,kBAAmB,wBAC9E,iCAAkC,iBAAkB,yBAA0B,8BAC9E,wBAAyB,kBAAmB,qBAAsB,gBAAiB,mBACnF,2BAA4B,cAAe,mBAAoB,gBAAiB,cAAe,sBAC/F,+BAAgC,0BAA2B,mCAAoC,yBAC/F,kCAAmC,qBAAsB,8BACzD,6BAA8B,cAAe,kBAAmB,WAAY,4BAC5E,4BAA6B,2BAA4B,wBAAyB,oBAClF,wBAAyB,uBAAwB,sBAAuB,uBAAwB,iBAE0GP,EAAaK,oBAK3NL,EAAaQ,qBAAuB,CAChC,SAAU,eAAgB,yBAA0B,kBAAmB,WAAY,8BAEhFR,EAlFuB,GAkG9BS,GAA4B,WAC5B,SAASA,KAiJT,OA/IAA,EAAWR,kBAAoB,CAC3B,aACA,kBACA,cACA,iBACA,oBACA,YACA,UACA,QACA,OACA,QACA,OACA,mBACA,eACA,gBACA,YACA,eACA,WACA,cACA,SACA,UACA,eACA,aACA,SACA,iBAEJQ,EAAWP,kBAAoB,CAC3B,uBACA,gCACA,6BACA,YACA,qBACA,sBACA,mBACA,iCACA,8BACA,kBACA,eACA,mBACA,kBACA,2BACA,wBACA,0BACA,gCACA,mCACA,mBACA,yBACA,4BACA,WAEJO,EAAWN,iBAAmB,CAC1B,WACA,eACA,kBACA,WACA,sBACA,iBACA,SAEJM,EAAWL,kBAAoB,CAC3B,WACA,OACA,QACA,WACA,WACA,gBACA,cAEJK,EAAWJ,mBAAqB,CAC5B,oBACA,2BACA,2BACA,gBACA,gBACA,OACA,WACA,QACA,oBACA,0BACA,sCACA,eACA,kBACA,kBACA,iBACA,eACA,cACA,aACA,aACA,oBACA,iBACA,mBACA,iBACA,cACA,cACA,WACA,gBACA,oBACA,wBACA,UACA,YACA,aACA,WACA,YACA,kBACA,kBAkCJI,EAAWH,eApJmD,WAC9D,IAAK,IAAI7sZ,EAAI,EAAG/c,EAAI,EAAGwjI,EAAK/xH,UAAUnV,OAAQ0D,EAAIwjI,EAAIxjI,IAAK+c,GAAKtL,UAAUzR,GAAG1D,OACxE,IAAI2lI,EAAIv/H,MAAMqa,GAAI43G,EAAI,EAA3B,IAA8B30H,EAAI,EAAGA,EAAIwjI,EAAIxjI,IACzC,IAAK,IAAIkU,EAAIzC,UAAUzR,GAAI0M,EAAI,EAAG+2H,EAAKvvH,EAAE5X,OAAQoQ,EAAI+2H,EAAI/2H,IAAKioH,IAC1DsN,EAAEtN,GAAKzgH,EAAExH,GACjB,OAAOu1H,EA+IqB+nS,CAAiBD,EAAWN,iBAAkBM,EAAWP,kBAAmBO,EAAWR,kBAAmBQ,EAAWL,kBAhCjJK,EAAWF,oBAAsB,CAC7B,qBACA,cACA,cACA,oBACA,aACA,eACA,wBACA,wBACA,iBACA,0BACA,cACA,aACA,SACA,kBACA,wBACA,UACA,UACA,qBACA,kBACA,qBACA,gBACA,sBACA,oBACA,cACA,UACA,qBACA,mBACA,4BACA,uBACA,sBAEgME,EAAWJ,oBAG/MI,EAAWD,qBAAuB,CAAC,SAAU,eAAgB,yBAA0B,kBACnF,WAAY,8BACTC,EAlJqB,GA2J5BE,GAAkC,WAClC,SAASA,KAiFT,OA/EAA,EAAiB33Y,MAAQ,SAAU43Y,GAC/B,IAAKA,EACD,OAAO,KAEX,IAAgB,IAAZA,EACA,MAAO,CACHC,WAAY,CACRF,EAAiBG,oBACjBH,EAAiBI,qBAErBC,iBAAkB,WAG1B,GAAuB,iBAAZJ,EACP,OAAOD,EAAiB33Y,MAAM,CAAC43Y,IAEnC,GAAIxna,MAAMyL,QAAQ+7Z,GAAU,CACxB,IAAIK,EAAU,GASd,OARAL,EAAQ1+Z,QAAQ,SAAUsJ,GACtB,IAAI01Z,EAAeP,EAAiBQ,eAAe31Z,GAC9C01Z,EAILD,EAAQxua,KAAKyua,GAHTtnY,QAAQ24B,KAAK,oBAAsB/mD,EAAM,oEAAsEH,OAAOC,KAAKq1Z,EAAiBQ,gBAAgBtiY,KAAK,QAKlJ,IAAnBoiY,EAAQjua,OACD,KAEJ,CACH6ta,WAAYI,EACZD,iBAAkBC,EAAQ,GAAGpsZ,IASrC,MANa,CACTgsZ,WAAYF,EAAiBS,gBAAgBR,EAAQC,YACrDG,iBAAkBJ,EAAQI,iBAC1BK,gBAAiBT,EAAQS,gBACzBxoa,SAAU+na,EAAQ/na,WAI1B8na,EAAiBS,gBAAkB,SAAUjua,GACzC,IAAIs4B,EAAS,GAgBb,OAfAt4B,EAAK+O,QAAQ,SAAUg3M,GACnB,IAAIooN,EAAQ,KACZ,GAAkB,iBAAPpoN,EAAiB,CACxB,IAAIgoN,EAAeP,EAAiBQ,eAAejoN,GACnD,IAAKgoN,EAED,YADAtnY,QAAQ24B,KAAK,oBAAsB2mJ,EAAK,oEAAsE7tM,OAAOC,KAAKq1Z,EAAiBQ,gBAAgBtiY,KAAK,MAGpKyiY,EAAQJ,OAGRI,EAAQpoN,EAEZztL,EAAOh5B,KAAK6ua,KAET71Y,GAgBXk1Y,EAAiBQ,eAAiB,CAC9Bnta,QAfJ2sa,EAAiBG,oBAAsB,CACnCjsZ,GAAI,UACJ0sZ,aAAc,UACdC,SAAU,UACV9xJ,QAAS,UACT+xJ,UAAW,sBAWXC,QATJf,EAAiBI,oBAAsB,CACnClsZ,GAAI,UACJ0sZ,aAAc,UACdC,SAAU,UACV9xJ,QAAS,SACT+xJ,UAAW,uBAMRd,EAlF2B,GA2FlCgB,GAAsD,SAAUjpS,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DipS,GAAgD,SAAU7oS,EAAYC,GACtE,OAAO,SAAU39G,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAAKutH,KAEvD8oS,GAA8D,WAC9D,IAAK,IAAIpuZ,EAAI,EAAG/c,EAAI,EAAGwjI,EAAK/xH,UAAUnV,OAAQ0D,EAAIwjI,EAAIxjI,IAAK+c,GAAKtL,UAAUzR,GAAG1D,OACxE,IAAI2lI,EAAIv/H,MAAMqa,GAAI43G,EAAI,EAA3B,IAA8B30H,EAAI,EAAGA,EAAIwjI,EAAIxjI,IACzC,IAAK,IAAIkU,EAAIzC,UAAUzR,GAAI0M,EAAI,EAAG+2H,EAAKvvH,EAAE5X,OAAQoQ,EAAI+2H,EAAI/2H,IAAKioH,IAC1DsN,EAAEtN,GAAKzgH,EAAExH,GACjB,OAAOu1H,GAOX,SAASmpS,GAAO1xa,GACZ,OAAiB,IAAVA,GAA4B,SAAVA,EAgB7B,IAAI2xa,GAAoC,WACpC,SAASA,IACLlza,KAAKmza,qBAAuB,IAAIh2B,GAChCn9Y,KAAKoza,WAAa,QAAU70Z,KAAKqqH,SAAS32G,WAC1CjyB,KAAKqza,eAAiB,GAuxC1B,IAAIC,EAmDJ,OAx0CAA,EAAuBJ,EACvBA,EAAmBxgZ,UAAU6gZ,OAAS,SAAUpwB,EAASj5B,GACrDlqX,KAAK0pX,YAAYO,IAAMk5B,EACvBnjZ,KAAK0pX,YAAYQ,UAAYA,EAC7BlqX,KAAKwza,qBACLxza,KAAKyza,sBAETP,EAAmBxgZ,UAAUxR,QAAU,WAInClhB,KAAK0pX,YAAYO,IAAM,KACvBjqX,KAAK0pX,YAAYQ,UAAY,KAC7BlqX,KAAK2rB,oBAAoB2nZ,EAAqBI,gBAAiB1za,KAAK2za,8BAExET,EAAmBxgZ,UAAU4yQ,KAAO,WAChC,IAAI5jP,EAAQ1hD,MAC0C,IAAhDA,KAAK0pX,YAAYnH,6BACnBviX,KAAK4za,6BACL5za,KAAK6za,4BAET,IAAI3wP,EAAQljL,KAAK69Y,iBAkBjB,GAjBA79Y,KAAK0/Y,aAAa5B,kBAAkB99Y,KAAK8za,mBAAmBvpY,KAAKvqC,MAAOkjL,GACpEljL,KAAK+za,0BAA4B/za,KAAKg0a,+BACtCjpY,QAAQ24B,KAAK,2IAEb1jE,KAAK+za,2BACA/za,KAAKi0a,uBACNlpY,QAAQ24B,KAAK,mFAEb1jE,KAAKk0a,wBACLnpY,QAAQ24B,KAAK,qNAKjB1jE,KAAKm0a,+BAAiCn0a,KAAKo0a,0BAC3CrpY,QAAQ24B,KAAK,sNAEb1jE,KAAKk0a,uBAAwB,CAC7B,IAAIj8F,EAAM,SAAU7pS,GAAQ,MAAO,aAAeA,EAAO,mDACrDgkE,GAAE8rR,OAAOl+X,KAAK0pX,YAAY3S,uBAC1BhsU,QAAQ24B,KAAKu0Q,EAAI,yBAEjB7lO,GAAE8rR,OAAOl+X,KAAK0pX,YAAY3S,uBAC1BhsU,QAAQ24B,KAAKu0Q,EAAI,uBAEjB7lO,GAAE8rR,OAAOl+X,KAAK0pX,YAAY3S,uBAC1BhsU,QAAQ24B,KAAKu0Q,EAAI,4BAGrBj4U,KAAKq0a,0BACL31B,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYo3B,qBAAsB,wBAEzEt0a,KAAKq0a,2BAA6Br0a,KAAKu0a,wBAAyBv0a,KAAKw0a,sBACtEzpY,QAAQ24B,KAAK,kHAEjB,IAAI+wW,EAAuB,SAAUtza,GAC7BugD,EAAMgoU,YAAYtuF,OAAS15O,EAAMgoU,YAAYtuF,MAAMj6R,IACnD4pC,QAAQ24B,KAAK,qBAAuBviE,EAAO,8IAGnDsza,EAAqB,kBACrBA,EAAqB,iBACrBA,EAAqB,mBACrBA,EAAqB,qBACrBA,EAAqB,yBACrBz0a,KAAK2za,4BAA8B3za,KAAK00a,oBAAoBnqY,KAAKvqC,MACjEA,KAAKsrB,iBAAiBgoZ,EAAqBI,gBAAiB1za,KAAK2za,8BAErET,EAAmBxgZ,UAAUmhZ,yBAA2B,WACpD,IAAInyX,EAAQ1hD,KACuB,MAA/BA,KAAK0pX,YAAYtzW,YAGrBpW,KAAK0pX,YAAYtzW,WAAW/C,QAAQ,SAAUw4V,GAC1C,IAAI8oE,EAAiBn4Z,OAAOquJ,oBAAoBghM,GAC5C+oE,EAAkB5B,GAAiBpB,GAAWH,eAAgBG,GAAWD,sBAC7EjwX,EAAMmzX,gBAAgBF,EAAgBC,EAAiBA,EAAiB,SAAU,iEAG1F1B,EAAmBxgZ,UAAUkhZ,2BAA6B,WACtD,IAAIe,EAAiBn4Z,OAAOquJ,oBAAoB7qK,KAAK0pX,aACjDkrD,EAAkB5B,GAAiB7B,GAAaM,eAAgBN,GAAaQ,qBAAsBv/T,GAAEt+F,OAAOi7Y,IAAQtlZ,IAAI,SAAU6e,GAAS,OAAOwsZ,GAAcC,oBAAoBzsZ,MACpL0sZ,EAA+BhC,GAAiB4B,EAAiB,CAAC,MAAO,cAC7E50a,KAAK60a,gBAAgBF,EAAgBK,EAA8BJ,EAAiB,cAAe,wDAEvG1B,EAAmBxgZ,UAAUmiZ,gBAAkB,SAAUF,EAAgBK,EAA8BJ,EAAiBK,EAAeC,GACnI,IAAIC,EAAoB/iU,GAAEy6R,kBAAkB8nC,EAAgBK,EAA8BJ,GAC1FxiU,GAAEi4Q,cAAc8qD,EAAmB,SAAUx4Z,EAAKpb,GAC9CwpC,QAAQ24B,KAAK,oBAAsBuxW,EAAgB,cAAgBt4Z,EAAM,gCAAkCpb,EAAMiI,MAAM,EAAG,GAAGwmC,KAAK,SAElIxzB,OAAOC,KAAK04Z,GAAmBhxa,OAAS,GACxC4mC,QAAQ24B,KAAK,iCAAmCuxW,EAAgB,6BAA+BC,IAIvGhC,EAAmBxgZ,UAAU63W,WAAa,SAAUl/X,EAASsR,GACzD,IAAIy4Z,EAAU/pa,EAAQrL,KAAKoza,YAC3B,OAAOgC,EAAUA,EAAQz4Z,QAAOlY,GAEpCyua,EAAmBxgZ,UAAU2iZ,WAAa,SAAUhqa,EAASsR,EAAKpb,GAC9D,IAAI6za,EAAU/pa,EAAQrL,KAAKoza,YACvBhhU,GAAEgsR,QAAQg3C,KAEV/pa,EAAQrL,KAAKoza,YADbgC,EAAU,IAGdA,EAAQz4Z,GAAOpb,GAEnB2xa,EAAmBxgZ,UAAU4iZ,eAAiB,WAC1C,MAAyC,WAAlCt1a,KAAK0pX,YAAYjU,cAA+D,aAAlCz1W,KAAK0pX,YAAYjU,cAE1Ey9D,EAAmBxgZ,UAAU6iZ,iBAAmB,WAC5C,OAAOtC,GAAOjza,KAAK0pX,YAAY9L,iBAEnCs1D,EAAmBxgZ,UAAUuhZ,oBAAsB,WAC/C,MAAyC,aAAlCj0a,KAAK0pX,YAAYjU,cAE5By9D,EAAmBxgZ,UAAU8iZ,0BAA4B,WACrD,OAAOvC,GAAOjza,KAAK0pX,YAAYlH,0BAEnC0wD,EAAmBxgZ,UAAU2xH,WAAa,WACtC,OAAOrkJ,KAAK0pX,YAAYl4W,SAE5B0ha,EAAmBxgZ,UAAUijY,YAAc,WACvC,OAAOsd,GAAOjza,KAAK0pX,YAAYjK,YAEnCyzD,EAAmBxgZ,UAAU+iZ,cAAgB,WACzC,OAAOxC,GAAOjza,KAAK0pX,YAAYhI,cAEnCwxD,EAAmBxgZ,UAAUgjZ,0BAA4B,WACrD,OAAO11a,KAAK0pX,YAAYvT,wBAE5B+8D,EAAmBxgZ,UAAUijZ,kBAAoB,WAC7C,OAAO31a,KAAK0pX,YAAYtT,gBAE5B88D,EAAmBxgZ,UAAUkjZ,mBAAqB,WAC9C,OAAO51a,KAAK0pX,YAAY7T,eAAiBy6B,GAAUqC,yBAEvDugC,EAAmBxgZ,UAAUmjZ,mBAAqB,WAC9C,OAAO71a,KAAK0pX,YAAY7T,eAAiBy6B,GAAUsC,yBAEvDsgC,EAAmBxgZ,UAAUwhZ,qBAAuB,WAChD,OAAOl0a,KAAK0pX,YAAY7T,eAAiBy6B,GAAUwC,4BAEvDogC,EAAmBxgZ,UAAUojZ,kBAAoB,WAC7C,OAAQ1jU,GAAEgsR,QAAQp+X,KAAK0pX,YAAY7T,eAC/B71W,KAAK0pX,YAAY7T,eAAiBy6B,GAAUuC,4BAC5C7yY,KAAK0pX,YAAY7T,eAAiBy6B,GAAUyC,kCAEpDmgC,EAAmBxgZ,UAAUqjZ,cAAgB,WACzC,MAAqC,YAA9B/1a,KAAK0pX,YAAY5T,UAE5Bo9D,EAAmBxgZ,UAAUsjZ,4BAA8B,WACvD,OAAO/C,GAAOjza,KAAK0pX,YAAY7J,4BAEnCqzD,EAAmBxgZ,UAAUujZ,gCAAkC,WAC3D,OAAOhD,GAAOjza,KAAK0pX,YAAYlG,gCAEnC0vD,EAAmBxgZ,UAAUwjZ,gCAAkC,WAC3D,OAAOjD,GAAOjza,KAAK0pX,YAAYpG,gCAEnC4vD,EAAmBxgZ,UAAUyjZ,+BAAiC,WAC1D,OAAOlD,GAAOjza,KAAK0pX,YAAYjL,+BAEnCy0D,EAAmBxgZ,UAAU0jZ,gBAAkB,WAC3C,OAAOnD,GAAOjza,KAAK0pX,YAAYnU,SAAWhrW,MAAMyL,QAAQhW,KAAKq2a,aAAarE,cAE9EkB,EAAmBxgZ,UAAU2jZ,WAAa,WACtC,OAAOr2a,KAAK0pX,YAAYnU,SAE5B29D,EAAmBxgZ,UAAU4jZ,gBAAkB,WAC3C,OAAOrD,GAAOjza,KAAK0pX,YAAY/K,gBAEnCu0D,EAAmBxgZ,UAAU6jZ,uBAAyB,WAClD,OAAOtD,GAAOjza,KAAK0pX,YAAY5G,uBAEnCowD,EAAmBxgZ,UAAUmyY,+BAAiC,WAC1D,OAAOoO,GAAOjza,KAAK0pX,YAAYvG,+BAEnC+vD,EAAmBxgZ,UAAU8jZ,gCAAkC,WAC3D,OAAOvD,GAAOjza,KAAK0pX,YAAY1F,gCAEnCkvD,EAAmBxgZ,UAAUmrX,eAAiB,WAC1C,OAAQo1B,GAAOjza,KAAK0pX,YAAY9K,sBAEpCs0D,EAAmBxgZ,UAAU+jZ,wBAA0B,WACnD,OAAOxD,GAAOjza,KAAK0pX,YAAY7X,wBAEnCqhE,EAAmBxgZ,UAAUqhZ,uBAAyB,WAClD,IAAIn3Y,EAASq2Y,GAAOjza,KAAK0pX,YAAYrM,sBACrC,OAAIzgV,GAAU58B,KAAK2hZ,cACf52W,QAAQ24B,KAAK,+DACN,GAEJ9mC,GAEXs2Y,EAAmBxgZ,UAAUgkZ,4BAA8B,WACvD,OAAOzD,GAAOjza,KAAK0pX,YAAY9G,4BAEnCswD,EAAmBxgZ,UAAUikZ,uBAAyB,WAClD,OAAO1D,GAAOjza,KAAK0pX,YAAYzJ,uBAEnCizD,EAAmBxgZ,UAAU0hZ,uBAAyB,WAClD,OAAOnB,GAAOjza,KAAK0pX,YAAY3I,uBAGnCmyD,EAAmBxgZ,UAAUkkZ,uBAAyB,WAClD,OAAO3D,GAAOjza,KAAK0pX,YAAY1I,uBAAyBiyD,GAAOjza,KAAK0pX,YAAY3I,uBAEpFmyD,EAAmBxgZ,UAAUyhZ,4BAA8B,WACvD,OAAOlB,GAAOjza,KAAK0pX,YAAYxJ,4BAEnCgzD,EAAmBxgZ,UAAUmkZ,kCAAoC,WAC7D,OAAO5D,GAAOjza,KAAK0pX,YAAYvJ,kCAEnC+yD,EAAmBxgZ,UAAUokZ,qBAAuB,WAChD,OAAO7D,GAAOjza,KAAK0pX,YAAYpM,qBAEnC41D,EAAmBxgZ,UAAUqkZ,0BAA4B,WACrD,OAAO9D,GAAOjza,KAAK0pX,YAAYnM,0BAEnC21D,EAAmBxgZ,UAAUskZ,2BAA6B,WACtD,OAAO/D,GAAOjza,KAAK0pX,YAAYhM,2BAEnCw1D,EAAmBxgZ,UAAUukZ,4BAA8B,WACvD,OAAOhE,GAAOjza,KAAK0pX,YAAYpN,4BAEnC42D,EAAmBxgZ,UAAUwkZ,wBAA0B,WACnD,OAAOjE,GAAOjza,KAAK0pX,YAAYnN,wBAEnC22D,EAAmBxgZ,UAAUykZ,oBAAsB,WAC/C,OAAOlE,GAAOjza,KAAK0pX,YAAY7L,oBAEnCq1D,EAAmBxgZ,UAAU0kZ,mBAAqB,WAC9C,MAAyC,SAAlCp3a,KAAK0pX,YAAYxT,cAE5Bg9D,EAAmBxgZ,UAAUs8Y,0BAA4B,WACrD,OAAOiE,GAAOjza,KAAK0pX,YAAYtM,0BAEnC81D,EAAmBxgZ,UAAUq8Y,0BAA4B,WACrD,OAAOkE,GAAOjza,KAAK0pX,YAAYvF,0BAEnC+uD,EAAmBxgZ,UAAU2kZ,gCAAkC,WAC3D,OAAOpE,GAAOjza,KAAK0pX,YAAYvK,gCAEnC+zD,EAAmBxgZ,UAAU4kZ,0BAA4B,WACrD,OAAOrE,GAAOjza,KAAK0pX,YAAYtI,0BAEnC8xD,EAAmBxgZ,UAAU6kZ,iBAAmB,WAC5C,OAAOtE,GAAOjza,KAAK0pX,YAAYpJ,iBAEnC4yD,EAAmBxgZ,UAAU8kZ,kBAAoB,WAC7C,OAAOvE,GAAOjza,KAAK0pX,YAAYnJ,kBAEnC2yD,EAAmBxgZ,UAAU+kZ,8BAAgC,WACzD,OAAOxE,GAAOjza,KAAK0pX,YAAYlJ,8BAEnC0yD,EAAmBxgZ,UAAUglZ,yBAA2B,WACpD,OAAOzE,GAAOjza,KAAK0pX,YAAYjJ,yBAGnCyyD,EAAmBxgZ,UAAU0vY,aAAe,WACxC,IAAIrsD,EAAY/1W,KAAK0pX,YAAY3T,WAAau6B,GAAU8C,kBAMxD,OAAyC,IALtB,CACf9C,GAAU+C,iBACV/C,GAAUgD,uBACVhD,GAAU8C,mBAEGnqY,QAAQ8sW,IACrB3jQ,GAAEg5R,OAAO,WACL,OAAOrgW,QAAQ24B,KAAK,YAAcqyS,EAAY,kDAAoDu6B,GAAU8C,kBAAoB,KAAO9C,GAAUgD,uBAAyB,QAAUhD,GAAU+C,mBAC/L,gCACI/C,GAAU8C,mBAEdr9B,GAEXm9D,EAAmBxgZ,UAAUilZ,2BAA6B,WACtD,OAAO1E,GAAOjza,KAAK0pX,YAAYlN,2BAEnC02D,EAAmBxgZ,UAAUklZ,oCAAsC,WAC/D,OAAO3E,GAAOjza,KAAK0pX,YAAYjG,oCAEnCyvD,EAAmBxgZ,UAAUmlZ,uCAAyC,WAClE,OAAO5E,GAAOjza,KAAK0pX,YAAYhG,uCAEnCwvD,EAAmBxgZ,UAAUolZ,2BAA6B,WACtD,OAAO7E,GAAOjza,KAAK0pX,YAAYjN,2BAEnCy2D,EAAmBxgZ,UAAUqlZ,yBAA2B,WACpD,OAAO9E,GAAOjza,KAAK0pX,YAAY5L,yBAEnCo1D,EAAmBxgZ,UAAUslZ,wBAA0B,WACnD,OAAO/E,GAAOjza,KAAK0pX,YAAY3L,wBAEnCm1D,EAAmBxgZ,UAAUkuX,2BAA6B,WACtD,OAAOqyB,GAAOjza,KAAK0pX,YAAYrL,2BAEnC60D,EAAmBxgZ,UAAUulZ,oBAAsB,WAC/C,OAAOj4a,KAAK0pX,YAAY/V,kBAE5Bu/D,EAAmBxgZ,UAAUwlZ,uBAAyB,WAClD,OAAOl4a,KAAK0pX,YAAY9V,qBAE5Bs/D,EAAmBxgZ,UAAUylZ,mBAAqB,WAC9C,OAAOlF,GAAOjza,KAAK0pX,YAAY5J,mBAEnCozD,EAAmBxgZ,UAAU0lZ,kBAAoB,WAC7C,OAAOnF,GAAOjza,KAAK0pX,YAAY7I,kBAEnCqyD,EAAmBxgZ,UAAU2lZ,0BAA4B,WACrD,OAAOpF,GAAOjza,KAAK0pX,YAAY/H,0BAEnCuxD,EAAmBxgZ,UAAU4lZ,yBAA2B,WACpD,OAAOrF,GAAOjza,KAAK0pX,YAAY3H,yBAEnCmxD,EAAmBxgZ,UAAUg9U,mBAAqB,WAC9C,OAAO1vW,KAAK0pX,YAAY9T,iBAE5Bs9D,EAAmBxgZ,UAAU6lZ,mBAAqB,WAC9C,OAAOtF,GAAOjza,KAAK0pX,YAAYpI,mBAEnC4xD,EAAmBxgZ,UAAU8lZ,aAAe,WACxC,OAAOvF,GAAOjza,KAAK0pX,YAAYtY,aAEnC8hE,EAAmBxgZ,UAAU+lZ,mBAAqB,WAC9C,OAAOxF,GAAOjza,KAAK0pX,YAAY/L,mBAEnCu1D,EAAmBxgZ,UAAUgmZ,0BAA4B,WACrD,OAAOzF,GAAOjza,KAAK0pX,YAAYrH,0BAEnC6wD,EAAmBxgZ,UAAUimZ,iBAAmB,WAC5C,OAAO1F,GAAOjza,KAAK0pX,YAAYpH,iBAEnC4wD,EAAmBxgZ,UAAUkmZ,sBAAwB,WACjD,OAAO3F,GAAOjza,KAAK0pX,YAAY3F,sBAEnCmvD,EAAmBxgZ,UAAUmmZ,4BAA8B,WACvD,OAAO74a,KAAK0pX,YAAYxR,0BAE5Bg7D,EAAmBxgZ,UAAUomV,YAAc,WACvC,OAAO94W,KAAK0pX,YAAY3V,UAE5Bm/D,EAAmBxgZ,UAAUmmV,YAAc,WACvC,OAAO74W,KAAK0pX,YAAYlU,UAE5B09D,EAAmBxgZ,UAAUomZ,gBAAkB,WAC3C,OAAO94a,KAAK0pX,YAAY5Q,aAE5Bo6D,EAAmBxgZ,UAAUqmZ,gBAAkB,WAC3C,OAAO/4a,KAAK0pX,YAAY7Q,aAE5Bq6D,EAAmBxgZ,UAAUmiV,cAAgB,WACzC,OAAO70W,KAAK0pX,YAAY7U,eAE5Bq+D,EAAmBxgZ,UAAUsmZ,4BAA8B,WACvD,OAAOh5a,KAAK0pX,YAAYjO,sBAE5By3D,EAAmBxgZ,UAAUumZ,eAAiB,WAC1C,OAAOj5a,KAAK0pX,YAAYvU,aAE5B+9D,EAAmBxgZ,UAAUwmZ,2BAA6B,WACtD,OAAOl5a,KAAK0pX,YAAY1R,yBAE5Bk7D,EAAmBxgZ,UAAUymZ,wBAA0B,WACnD,OAAOn5a,KAAK0pX,YAAYrP,kBAE5B64D,EAAmBxgZ,UAAU0mZ,sBAAwB,WACjD,OAAOp5a,KAAK0pX,YAAY/P,gBAE5Bu5D,EAAmBxgZ,UAAU2mZ,iCAAmC,WAC5D,OAAOr5a,KAAK0pX,YAAYrO,2BAE5B63D,EAAmBxgZ,UAAU4mZ,kBAAoB,WAC7C,OAAOt5a,KAAK0pX,YAAYpP,eAE5B44D,EAAmBxgZ,UAAU6mZ,8BAAgC,WACzD,OAAOv5a,KAAK0pX,YAAY1O,4BAE5Bk4D,EAAmBxgZ,UAAU8mZ,uBAAyB,WAClD,OAAOx5a,KAAK0pX,YAAYlQ,iBAE5B05D,EAAmBxgZ,UAAU+mZ,+BAAiC,WAC1D,OAAOz5a,KAAK0pX,YAAYlV,6BAE5B0+D,EAAmBxgZ,UAAUgnZ,qBAAuB,WAChD,OAAOzG,GAAOjza,KAAK0pX,YAAY/I,qBAAuBsyD,GAAOjza,KAAK0pX,YAAY9I,+BAElFsyD,EAAmBxgZ,UAAUmiX,6BAA+B,WACxD,OAAO70Y,KAAK0pX,YAAYla,uBAE5B0jE,EAAmBxgZ,UAAUinZ,0BAA4B,WACrD,OAAO35a,KAAK0pX,YAAY5P,uBAE5Bo5D,EAAmBxgZ,UAAUqiX,OAAS,WAClC,OAAO/0Y,KAAK0pX,YAAYO,KAE5BipD,EAAmBxgZ,UAAUsiX,aAAe,WACxC,OAAOh1Y,KAAK0pX,YAAYQ,WAE5BgpD,EAAmBxgZ,UAAUknZ,gBAAkB,WAC3C,OAAO3G,GAAOjza,KAAK0pX,YAAYzF,gBAEnCivD,EAAmBxgZ,UAAUkkY,mBAAqB,WAC9C,OAAOqc,GAAOjza,KAAK0pX,YAAYxF,mBAEnCgvD,EAAmBxgZ,UAAUmnZ,iBAAmB,WAC5C,OAAO5G,GAAOjza,KAAK0pX,YAAYlI,iBAEnC0xD,EAAmBxgZ,UAAUonZ,eAAiB,WAC1C,QAAI7G,GAAOjza,KAAK0pX,YAAYtG,eACjBs7B,GAAeK,iBAAiB1hX,EAAQ6/W,YAAY68B,iBAAkB,iBAIrF7G,EAAmBxgZ,UAAUsrY,oBAAsB,WAC/C,OAAOh+Z,KAAK0pX,YAAYtU,kBAE5B89D,EAAmBxgZ,UAAUsnZ,kBAAoB,WAC7C,OAAO/G,GAAOjza,KAAK0pX,YAAYxX,kBAEnCghE,EAAmBxgZ,UAAUunZ,oBAAsB,WAC/C,OAAOhH,GAAOjza,KAAK0pX,YAAYrJ,oBAEnC6yD,EAAmBxgZ,UAAUwnZ,gCAAkC,WAC3D,OAAOjH,GAAOjza,KAAK0pX,YAAYxI,gCAEnCgyD,EAAmBxgZ,UAAUynZ,wBAA0B,WACnD,OAAOn6a,KAAK0pX,YAAY3S,sBAE5Bm8D,EAAmBxgZ,UAAU0nZ,mCAAqC,WAC9D,OAAOp6a,KAAK0pX,YAAYpS,iCAE5B47D,EAAmBxgZ,UAAU2nZ,oBAAsB,WAC/C,OAAOr6a,KAAK0pX,YAAYrS,kBAE5B67D,EAAmBxgZ,UAAU4nZ,qBAAuB,WAChD,OAAOt6a,KAAK0pX,YAAYlS,mBAE5B07D,EAAmBxgZ,UAAU6nZ,sBAAwB,WACjD,OAAOv6a,KAAK0pX,YAAYjS,oBAE5By7D,EAAmBxgZ,UAAU8nZ,oBAAsB,WAI/C,SADqBx6a,KAAKiva,sBAAwBjva,KAAKm0a,+BAAiCn0a,KAAK62a,sCAItF5D,GAAOjza,KAAK0pX,YAAY7F,oBAEnCqvD,EAAmBxgZ,UAAU+nZ,kBAAoB,WAC7C,OAAOz6a,KAAK0pX,YAAYhS,gBAE5Bw7D,EAAmBxgZ,UAAUgoZ,2BAA6B,WACtD,OAAO16a,KAAK0pX,YAAY/R,yBAE5Bu7D,EAAmBxgZ,UAAUioZ,sBAAwB,WACjD,OAAO1H,GAAOjza,KAAK0pX,YAAYrI,sBAEnC6xD,EAAmBxgZ,UAAUkoZ,0BAA4B,WACrD,OAAO3H,GAAOjza,KAAK0pX,YAAY5I,0BAEnCoyD,EAAmBxgZ,UAAUmoZ,WAAa,WACtC,OAAO76a,KAAK0pX,YAAYjW,SAI5By/D,EAAmBxgZ,UAAUm8Y,oBAAsB,SAAUpvD,GACzD,OAAOA,GAAoBwzD,GAAOjza,KAAK0pX,YAAYlM,oBAEvD01D,EAAmBxgZ,UAAU61X,YAAc,WACvC,OAAO0qB,GAAOjza,KAAK0pX,YAAYtJ,YAEnC8yD,EAAmBxgZ,UAAUooZ,sBAAwB,WACjD,OAAO96a,KAAK0pX,YAAY1V,oBAE5Bk/D,EAAmBxgZ,UAAUu8Y,mBAAqB,WAC9C,OAAOgE,GAAOjza,KAAK0pX,YAAYjM,mBAEnCy1D,EAAmBxgZ,UAAUqoZ,qBAAuB,WAChD,OAAO/6a,KAAK0pX,YAAYzT,mBAE5Bi9D,EAAmBxgZ,UAAUsoZ,kBAAoB,WAC7C,OAAOh7a,KAAK0pX,YAAYrT,gBAE5B68D,EAAmBxgZ,UAAUuoZ,qBAAuB,WAChD,OAAOhI,GAAOjza,KAAK0pX,YAAYzM,qBAEnCi2D,EAAmBxgZ,UAAUwoZ,wBAA0B,WACnD,OAAOjI,GAAOjza,KAAK0pX,YAAYxM,wBAEnCg2D,EAAmBxgZ,UAAUyoZ,wBAA0B,WACnD,OAAOlI,GAAOjza,KAAK0pX,YAAYvM,wBAEnC+1D,EAAmBxgZ,UAAU0oZ,QAAU,WACnC,OAAOnI,GAAOjza,KAAK0pX,YAAYluS,QAEnC03V,EAAmBxgZ,UAAU2oZ,cAAgB,WACzC,OAAOr7a,KAAK0pX,YAAYtzW,YAE5B88Z,EAAmBxgZ,UAAU67X,eAAiB,WAC1C,OAAOvuZ,KAAK0pX,YAAY9U,aAE5Bs+D,EAAmBxgZ,UAAU4oZ,cAAgB,WACzC,OAAOt7a,KAAK0pX,YAAYvV,YAE5B++D,EAAmBxgZ,UAAU6oZ,sBAAwB,WACjD,OAAOv7a,KAAK0pX,YAAYrV,oBAE5B6+D,EAAmBxgZ,UAAU8oZ,wBAA0B,WACnD,OAAOx7a,KAAK0pX,YAAYtV,sBAE5B8+D,EAAmBxgZ,UAAU+oZ,eAAiB,WAC1C,OAAOxI,GAAOjza,KAAK0pX,YAAYjI,eAEnCyxD,EAAmBxgZ,UAAUgpZ,wBAA0B,WACnD,OAAOzI,GAAOjza,KAAK0pX,YAAYhN,wBAEnCw2D,EAAmBxgZ,UAAUipZ,wBAA0B,WACnD,OAAO1I,GAAOjza,KAAK0pX,YAAY9M,wBAEnCs2D,EAAmBxgZ,UAAU+vX,kBAAoB,WAC7C,OAAOwwB,GAAOjza,KAAK0pX,YAAYhJ,kBAEnCwyD,EAAmBxgZ,UAAUkpZ,6BAA+B,WACxD,OAAO3I,GAAOjza,KAAK0pX,YAAYtK,6BAEnC8zD,EAAmBxgZ,UAAUmpZ,8BAAgC,WACzD,OAAO5I,GAAOjza,KAAK0pX,YAAY5F,8BAEnCovD,EAAmBxgZ,UAAUopZ,qCAAuC,WAChE,OAAO7I,GAAOjza,KAAK0pX,YAAYrK,qCAEnC6zD,EAAmBxgZ,UAAUgjY,+BAAiC,WAC1D,OAAOud,GAAOjza,KAAK0pX,YAAY/J,+BAEnCuzD,EAAmBxgZ,UAAUqpZ,sBAAwB,WACjD,OAAO9I,GAAOjza,KAAK0pX,YAAY5K,sBAEnCo0D,EAAmBxgZ,UAAUspZ,iCAAmC,WAC5D,OAAO/I,GAAOjza,KAAK0pX,YAAY7K,iCAEnCq0D,EAAmBxgZ,UAAUupZ,8BAAgC,WACzD,OAAOhJ,GAAOjza,KAAK0pX,YAAYnK,8BAEnC2zD,EAAmBxgZ,UAAUwpZ,yBAA2B,WACpD,OAAOjJ,GAAOjza,KAAK0pX,YAAYlK,yBAEnC0zD,EAAmBxgZ,UAAUypZ,yBAA2B,WACpD,OAAOlJ,GAAOjza,KAAK0pX,YAAY3G,yBAEnCmwD,EAAmBxgZ,UAAU0pZ,+BAAiC,WAC1D,OAAOnJ,GAAOjza,KAAK0pX,YAAY1G,+BAEnCkwD,EAAmBxgZ,UAAU2pZ,aAAe,WACxC,OAAOpJ,GAAOjza,KAAK0pX,YAAYzI,aAEnCiyD,EAAmBxgZ,UAAU4pZ,sCAAwC,WACjE,OAAOrJ,GAAOjza,KAAK0pX,YAAYhH,sCAEnCwwD,EAAmBxgZ,UAAU6pZ,gCAAkC,WAC3D,OAAOv8a,KAAK0pX,YAAYpO,0BAE5B43D,EAAmBxgZ,UAAU8pZ,8BAAgC,WACzD,OAAOpqU,GAAE8rR,OAAOl+X,KAAK0pX,YAAY3R,4BAA8B/3W,KAAK0pX,YAAY3R,2BAA6Bu4B,GAAUS,mBAE3HmiC,EAAmBxgZ,UAAU+pZ,yBAA2B,WACpD,OAAOxJ,GAAOjza,KAAK0pX,YAAYtL,yBAEnC80D,EAAmBxgZ,UAAUgqZ,cAAgB,WAEzC,OAAI18a,KAAK65a,oBAGF5G,GAAOjza,KAAK0pX,YAAY1J,cAEnCkzD,EAAmBxgZ,UAAUiqZ,8BAAgC,WACzD,OAAO1J,GAAOjza,KAAK0pX,YAAYvL,8BAEnC+0D,EAAmBxgZ,UAAUu0Y,0BAA4B,WACrD,OAAOgM,GAAOjza,KAAK0pX,YAAYhK,0BAEnCwzD,EAAmBxgZ,UAAUkqZ,yBAA2B,WACpD,OAAO3J,GAAOjza,KAAK0pX,YAAY9J,yBAEnCszD,EAAmBxgZ,UAAU2hZ,uBAAyB,WAClD,OAAO31B,GAAeM,aAAa3hX,EAAQ6/W,YAAYo3B,uBAAyBrB,GAAOjza,KAAK0pX,YAAYpL,uBAE5G40D,EAAmBxgZ,UAAU6hZ,oBAAsB,WAC/C,OAAOtB,GAAOjza,KAAK0pX,YAAYnL,oBAEnC20D,EAAmBxgZ,UAAU8hZ,mBAAqB,WAC9C,OAAOvB,GAAOjza,KAAK0pX,YAAYlL,mBAEnC00D,EAAmBxgZ,UAAUmqZ,iBAAmB,WAC5C,OAAO78a,KAAK0pX,YAAY9N,eAE5Bs3D,EAAmBxgZ,UAAUoqZ,8BAAgC,WACzD,OAAO7J,GAAOjza,KAAK0pX,YAAYtH,8BAEnC8wD,EAAmBxgZ,UAAUqqZ,yBAA2B,WACpD,OAAO9J,GAAOjza,KAAK0pX,YAAYvI,yBAEnC+xD,EAAmBxgZ,UAAUsqZ,gCAAkC,WAC3D,OAAO/J,GAAOjza,KAAK0pX,YAAYxK,gCAEnCg0D,EAAmBxgZ,UAAUoiQ,SAAW,WACpC,OAAO90R,KAAK0pX,YAAYtuF,OAE5B83I,EAAmBxgZ,UAAUuqZ,YAAc,WACvC,OAAOj9a,KAAK0pX,YAAYnV,UAE5B2+D,EAAmBxgZ,UAAUwqZ,gBAAkB,WAC3C,OAAOl9a,KAAK0pX,YAAYxd,cAE5BgnE,EAAmBxgZ,UAAUyqZ,gBAAkB,WAC3C,OAAOn9a,KAAK0pX,YAAYlW,cAE5B0/D,EAAmBxgZ,UAAU0qZ,eAAiB,WAE1C,QADmBnK,GAAOjza,KAAK0pX,YAAYvH,eAEhCu8B,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYmgC,mBAAoB,iBAMvFnK,EAAmBxgZ,UAAU4qZ,iBAAmB,WAC5C,OAAOrK,GAAOjza,KAAK0pX,YAAY9F,iBAEnCsvD,EAAmBxgZ,UAAU6qZ,uBAAyB,WAClD,OAAIv9a,KAAK0pX,YAAYzR,oBAAsB,EAChCj4W,KAAK0pX,YAAYzR,oBAjpBA,IAqpBhCi7D,EAAmBxgZ,UAAU8qZ,mBAAqB,WAC9C,OAAOx9a,KAAK0pX,YAAYzO,aAE5Bi4D,EAAmBxgZ,UAAU+qZ,uBAAyB,WAClD,OAAOz9a,KAAK0pX,YAAYxO,iBAE5Bg4D,EAAmBxgZ,UAAUgrZ,0BAA4B,WACrD,OAAO19a,KAAK0pX,YAAYpV,wBAE5B4+D,EAAmBxgZ,UAAUirZ,0BAA4B,WACrD,OAAO39a,KAAK0pX,YAAYhU,wBAE5Bw9D,EAAmBxgZ,UAAUkrZ,yBAA2B,WACpD,OAAO59a,KAAK0pX,YAAY/T,uBAE5Bu9D,EAAmBxgZ,UAAUmrZ,mBAAqB,WAC9C,OAAO5K,GAAOjza,KAAK0pX,YAAYnY,mBAEnC2hE,EAAmBxgZ,UAAUorZ,0BAA4B,WACrD,OAAO7K,GAAOjza,KAAK0pX,YAAYnG,0BAEnC2vD,EAAmBxgZ,UAAUshZ,4BAA8B,WACvD,OAAOf,GAAOjza,KAAK0pX,YAAYzL,4BAEnCi1D,EAAmBxgZ,UAAUqrZ,oBAAsB,WAC/C,OAAO9K,GAAOjza,KAAK0pX,YAAY3J,oBAEnCmzD,EAAmBxgZ,UAAUsrZ,iBAAmB,WAC5C,OAAOh+a,KAAK0pX,YAAYvX,gBAE5B+gE,EAAmBxgZ,UAAUurZ,uBAAyB,WAClD,OAAOhL,GAAOjza,KAAK0pX,YAAYnG,0BAEnC2vD,EAAmBxgZ,UAAUwrZ,0BAA4B,WACrD,OAAOjL,GAAOjza,KAAK0pX,YAAY/G,0BAEnCuwD,EAAmBxgZ,UAAUy7X,iBAAmB,WAC5C,OAAOnuZ,KAAK0pX,YAAYhV,eAE5Bw+D,EAAmBxgZ,UAAUm7X,sBAAwB,WACjD,OAAO7tZ,KAAK0pX,YAAYjV,oBAE5By+D,EAAmBxgZ,UAAUyrZ,uBAAyB,WAClD,OAAOn+a,KAAK0pX,YAAY/U,qBAE5Bu+D,EAAmBxgZ,UAAU0rZ,oBAAsB,WAC/C,OAAOnL,GAAOjza,KAAK0pX,YAAYzH,oBAEnCixD,EAAmBxgZ,UAAU2rZ,6BAA+B,WACxD,OAAOpL,GAAOjza,KAAK0pX,YAAY40D,6BAEnCpL,EAAmBxgZ,UAAU6rZ,sBAAwB,WACjD,OAAOtL,GAAOjza,KAAK0pX,YAAY1H,sBAEnCkxD,EAAmBxgZ,UAAU6pY,wCAA0C,WACnE,OAAO0W,GAAOjza,KAAK0pX,YAAYrN,wCAEnC62D,EAAmBxgZ,UAAU8rZ,wBAA0B,WACnD,OAAOx+a,KAAK0pX,YAAYrQ,qBAE5B65D,EAAmBxgZ,UAAU+rZ,gBAAkB,WAC3C,OAAOz+a,KAAK0pX,YAAYnP,aAE5B24D,EAAmBxgZ,UAAUgsZ,yBAA2B,WACpD,OAAO1+a,KAAK0pX,YAAYlO,mBAE5B03D,EAAmBxgZ,UAAUisZ,0BAA4B,WACrD,OAAO3+a,KAAK0pX,YAAYnO,uBAE5B23D,EAAmBxgZ,UAAUksZ,wBAA0B,WACnD,OAAO5+a,KAAK0pX,YAAYpQ,kBAE5B45D,EAAmBxgZ,UAAUmsZ,wBAA0B,WACnD,OAAO7+a,KAAK0pX,YAAYzQ,qBAE5Bi6D,EAAmBxgZ,UAAUosZ,qBAAuB,WAChD,OAAO9+a,KAAK0pX,YAAYxQ,kBAE5Bg6D,EAAmBxgZ,UAAUqsZ,yBAA2B,WACpD,OAAO/+a,KAAK0pX,YAAY/N,sBAE5Bu3D,EAAmBxgZ,UAAUssZ,iBAAmB,WAC5C,OAAOh/a,KAAK0pX,YAAYnQ,cAE5B25D,EAAmBxgZ,UAAUusZ,0BAA4B,WACrD,OAAOj/a,KAAK0pX,YAAY1P,oBAE5Bk5D,EAAmBxgZ,UAAUwsZ,qBAAuB,WAChD,OAAOl/a,KAAK0pX,YAAYzP,eAE5Bi5D,EAAmBxgZ,UAAUivX,WAAa,WAEtC,QADoBsxB,GAAOjza,KAAK0pX,YAAYxH,WAEjCw8B,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYsE,kBAAmB,cAMtF0xB,EAAmBxgZ,UAAUysZ,aAAe,WACxC,OAAOlM,GAAOjza,KAAK0pX,YAAY9H,aAEnCsxD,EAAmBxgZ,UAAU0sZ,yBAA2B,WACpD,OAAOnM,GAAOjza,KAAK0pX,YAAY7H,yBAEnCqxD,EAAmBxgZ,UAAU2sZ,YAAc,WACvC,OAAOpM,GAAOjza,KAAK0pX,YAAYhL,YAEnCw0D,EAAmBxgZ,UAAU4sZ,8BAAgC,WACzD,OAAOrM,GAAOjza,KAAK0pX,YAAY5H,8BAEnCoxD,EAAmBxgZ,UAAUw3Y,8BAAgC,WACzD,OAAOlqa,KAAK0pX,YAAY9P,wBAE5Bs5D,EAAmBxgZ,UAAU03Y,mCAAqC,WAC9D,OAAOpqa,KAAK0pX,YAAY7P,6BAE5Bq5D,EAAmBxgZ,UAAU6sZ,uBAAyB,WAClD,OAAOv/a,KAAK0pX,YAAY3P,iBAE5Bm5D,EAAmBxgZ,UAAU8sZ,4BAA8B,WACvD,OAAOx/a,KAAK0pX,YAAYvQ,sBAE5B+5D,EAAmBxgZ,UAAU+sZ,+BAAiC,WAC1D,OAAOz/a,KAAK0pX,YAAYtQ,yBAE5B85D,EAAmBxgZ,UAAUgtZ,iCAAmC,WAC5D,OAAO1/a,KAAK0pX,YAAYtO,2BAE5B83D,EAAmBxgZ,UAAUitZ,gCAAkC,WAC3D,OAAO3/a,KAAK0pX,YAAYvP,0BAE5B+4D,EAAmBxgZ,UAAUktZ,4BAA8B,WACvD,OA/wBcr+a,EA+wBMvB,KAAK0pX,YAAYxS,0BA9wB7B,EACD31W,EAf4B,EAa3C,IAAsBA,GAixBlB2xa,EAAmBxgZ,UAAUmtZ,8BAAgC,WACzD,OAzxBet+a,EAyxBMvB,KAAK0pX,YAAYvS,6BAxxB7B,EACF51W,EAP8B,EAK7C,IAAuBA,GA2xBnB2xa,EAAmBxgZ,UAAUotZ,gCAAkC,WAC3D,OAAO7M,GAAOjza,KAAK0pX,YAAYzG,gCAEnCiwD,EAAmBxgZ,UAAUqtZ,gBAAkB,WAC3C,OAAO//a,KAAK0pX,YAAYvO,UAE5B+3D,EAAmBxgZ,UAAUstZ,2BAA6B,WACtD,OAAOhgb,KAAK0pX,YAAYhO,qBAE5Bw3D,EAAmBxgZ,UAAUutZ,wBAA0B,WACnD,OAAO7tU,GAAE8rR,OAAOl+X,KAAK0pX,YAAY1T,sBAAwBh2W,KAAK0pX,YAAY1T,qBAAuB,MAErGk9D,EAAmBxgZ,UAAUi+F,YAAc,SAAUh0G,EAAKpb,GACtD,IAAI2+a,EAAoBlgb,KAAK0pX,YACzBlhV,EAAgB03Y,EAAkBvja,GAClC6rB,IAAkBjnC,IAClB2+a,EAAkBvja,GAAOpb,EAMzBvB,KAAKmza,qBAAqB16E,cALZ,CACV/3V,KAAMic,EACNvX,aAAc7D,EACdinC,cAAeA,MAO3B0qY,EAAmBxgZ,UAAUytZ,iBAAmB,SAAU90a,GACtDrL,KAAKqza,eAAezva,KAAKyH,GACzBrL,KAAK00a,uBAETxB,EAAmBxgZ,UAAUgiZ,oBAAsB,WAC/C,IAAI3+D,EAAY/1W,KAAKoia,eACjBge,EAAsBrqE,IAAcu6B,GAAUgD,uBAC9C+sC,EAAiBtqE,IAAcu6B,GAAU+C,iBACzCitC,EAAkBvqE,IAAcu6B,GAAU8C,kBAC9CpzY,KAAKqza,eAAehga,QAAQ,SAAU4gB,GAClCm+E,GAAEmuR,oBAAoBtsW,EAAG,wBAAyBmsZ,GAClDhuU,GAAEmuR,oBAAoBtsW,EAAG,mBAAoBqsZ,GAC7CluU,GAAEmuR,oBAAoBtsW,EAAG,kBAAmBosZ,MAGpDnN,EAAmBxgZ,UAAUpH,iBAAmB,SAAU3O,EAAK+jB,GAC3D4yY,EAAqBhpD,sBAAsB3tW,GAC3C3c,KAAKmza,qBAAqB7nZ,iBAAiB3O,EAAK+jB,IAEpDwyY,EAAmB5oD,sBAAwB,SAAUx0U,GAC/B,2BAAdA,GACA/K,QAAQ24B,KAAK,uEAGrBwvW,EAAmBxgZ,UAAU/G,oBAAsB,SAAUhP,EAAK+jB,GAC9D1gC,KAAKmza,qBAAqBxnZ,oBAAoBhP,EAAK+jB,IAEvDwyY,EAAmBxgZ,UAAUqmY,uBAAyB,WAClD,QAAS/4Z,KAAK0pX,YAAY1L,sBAE9Bk1D,EAAmBxgZ,UAAU6tZ,mBAAqB,WAC9C,OAAOvgb,KAAK0pX,YAAYtS,iBAAmBp3W,KAAK0pX,YAAYtS,gBAAkB,EAAIp3W,KAAK0pX,YAAYtS,gBAAkB,IAGzH87D,EAAmBxgZ,UAAU8tZ,gBAAkB,WAC3C,MAA6C,iBAAlCxgb,KAAK0pX,YAAYhT,aACjB12W,KAAK0pX,YAAYhT,aAErB12W,KAAKygb,aAAa,GAAI,iBAEjCvN,EAAmBxgZ,UAAUguZ,yBAA2B,WACpD,MAAsD,iBAA3C1gb,KAAK0pX,YAAY9S,sBACjB52W,KAAK0pX,YAAY9S,sBAErB52W,KAAKygb,aAAa,GAAI,iBAEjCvN,EAAmBxgZ,UAAUiuZ,qBAAuB,WAChD,MAAkD,iBAAvC3gb,KAAK0pX,YAAY/S,kBACjB32W,KAAK0pX,YAAY/S,kBAErB32W,KAAKwgb,mBAEhBtN,EAAmBxgZ,UAAUkuZ,qBAAuB,WAChD,MAAkD,iBAAvC5gb,KAAK0pX,YAAY7S,kBACjB72W,KAAK0pX,YAAY7S,kBAErB72W,KAAKwgb,mBAEhBtN,EAAmBxgZ,UAAUmuZ,0BAA4B,WACrD,MAAuD,iBAA5C7gb,KAAK0pX,YAAY5S,uBACjB92W,KAAK0pX,YAAY5S,uBAErB92W,KAAK2gb,wBAEhBzN,EAAmBxgZ,UAAUgmV,wBAA0B,WACnD,MAAwD,mBAA7C14W,KAAK0pX,YAAYhR,yBACjB14W,KAAK0pX,YAAYhR,2BAIhCw6D,EAAmBxgZ,UAAUkmV,uBAAyB,SAAUl1N,GAC5D,MAAuD,mBAA5C1jJ,KAAK0pX,YAAY9Q,wBACjB54W,KAAK0pX,YAAY9Q,uBAAuBl1N,IAIvDwvR,EAAmBxgZ,UAAUouZ,oBAAsB,WAC/C,IAAIvpE,EAAmBv3W,KAAK0pX,YAAYnS,iBACxC,OAAInlQ,GAAE8rR,OAAO3mB,IACLA,EAAmB,GACnBxsU,QAAQ24B,KAAK,wDAEVnlD,KAAKukC,IAAI,IAAKy0T,IAElB,MAEX27D,EAAmBxgZ,UAAUquZ,oBAAsB,WAC/C,OAAO9N,GAAOjza,KAAK0pX,YAAY/F,oBAEnCuvD,EAAmBxgZ,UAAU0nV,YAAc,WAGvC,IAAIx9U,EAAS,KAIb,OAHI58B,KAAK0pX,YAAYtP,aAAehoQ,GAAE8rR,OAAOl+X,KAAK0pX,YAAYtP,eAC1Dx9U,EAAS58B,KAAK0pX,YAAYtP,eAE1Bx9U,GAAUw1E,GAAE8rR,OAAOthW,GACZA,EAEJ+N,UAEXuoY,EAAmBxgZ,UAAU4tX,eAAiB,WAC1C,GAAItgZ,KAAK0pX,YAAY1S,YAAcs8D,EAAqB0N,cACpD,OAAOhhb,KAAK0pX,YAAY1S,YAE5B,IAAIiqE,EAAcjhb,KAAKygb,aAAa,KAAM,sBAC1C,OAAOlia,KAAKukC,IAAIm+X,EAAa3N,EAAqB0N,gBAEtD9N,EAAmBxgZ,UAAU6tX,eAAiB,WAC1C,OAAIvgZ,KAAK0pX,YAAYzS,aAAej3W,KAAK0pX,YAAYzS,YAAcq8D,EAAqB0N,cAC7Ehhb,KAAK0pX,YAAYzS,YAErB,MAEXi8D,EAAmBxgZ,UAAUm9Y,YAAc,WACvC,MAAyC,iBAA9B7va,KAAK0pX,YAAYjT,UAAyBz2W,KAAK0pX,YAAYjT,SAAW68D,EAAqB0N,cAC3F,IAEJhhb,KAAK0pX,YAAYjT,UAE5By8D,EAAmBxgZ,UAAUwuZ,aAAe,WACxC,IAAI1qE,EAAYx2W,KAAK0pX,YAAYlT,UAUjC,MATyB,iBAAdA,EACHA,EAAY,IACZpkQ,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KAAK,8CAAiD,2BAC5F1jE,KAAK0pX,YAAYlT,UAAYA,EAAY,GAI7CA,EAAY85B,GAAUO,gBAEnBr6B,GAEX08D,EAAmBxgZ,UAAUyuZ,qBAAuB,WAGhD,OAFmBnhb,KAAKkhb,eACDlhb,KAAKohb,wBAMhClO,EAAmBxgZ,UAAU+qW,kBAAoB,WAK7C,OAJwB,MAApBz9X,KAAK64E,cAEL74E,KAAK64E,YAD2D,iBAApC74E,KAAK0pX,YAAYz9Q,gBAA+BjsG,KAAK0pX,YAAYz9Q,gBAAkB,EAC3EjsG,KAAK0pX,YAAYz9Q,eAAiBmG,GAAEqrR,qBAErEz9X,KAAK64E,aAEhBq6V,EAAmBxgZ,UAAU8gZ,mBAAqB,WAC9C,IAAI9xX,EAAQ1hD,KAGRgoB,EAAUhoB,KAAK0pX,YACf1hW,EAAQq5Z,gBACRt2Y,QAAQ24B,KAAK,uFAEb17C,EAAQs5Z,kBACRv2Y,QAAQ24B,KAAK,yFAEb17C,EAAQu5Z,gBACRx2Y,QAAQ24B,KAAK,oGAEb17C,EAAQw5Z,uBACRz2Y,QAAQ24B,KAAK,2IAEb17C,EAAQy5Z,WACR12Y,QAAQ24B,KAAK,qIAE2B,kBAAjC17C,EAAQ+uV,sBACfhsU,QAAQ24B,KAAK,2JAEb17C,EAAQ05Z,iBAAmB15Z,EAAQ25Z,gBACnC52Y,QAAQ24B,KAAK,0FAEb17C,EAAQ45Z,oBACR72Y,QAAQ24B,KAAK,4GAEb17C,EAAQ65Z,kBACR92Y,QAAQ24B,KAAK,gFAEb17C,EAAQ0oV,mBACR3lU,QAAQ24B,KAAK,iKAEb17C,EAAQ85Z,2BACR/2Y,QAAQ24B,KAAK,gGAEb17C,EAAQ+5Z,kBACRh3Y,QAAQ24B,KAAK,8EAEb17C,EAAQ6vV,mBACR9sU,QAAQ24B,KAAK,gFAEb17C,EAAQg6Z,iBACRj3Y,QAAQ24B,KAAK,gFAEb17C,EAAQi6Z,wBACRl3Y,QAAQ24B,KAAK,wFAKb17C,EAAQ+2V,yBACRh0U,QAAQ24B,KAAK,2IAEb17C,EAAQg3V,uBACRj0U,QAAQ24B,KAAK,wIAEb17C,EAAQi3V,yBACRl0U,QAAQ24B,KAAK,0IAEb17C,EAAQs3V,2BACRv0U,QAAQ24B,KAAK,mHAEb17C,EAAQy1V,kBACR1yU,QAAQ24B,KAAK,uIAEb17C,EAAQisV,gBACRlpU,QAAQ24B,KAAK,gKAEb17C,EAAQurV,YACRxoU,QAAQ24B,KAAK,oJAEb17C,EAAQk6Z,oBACRn3Y,QAAQ24B,KAAK,kFAEb17C,EAAQm6Z,uBACRp3Y,QAAQ24B,KAAK,wFAEb17C,EAAQ4vV,qBACR7sU,QAAQ24B,KAAK,gGAAkG17C,EAAQ4vV,oBAAsB,cAE7I5vV,EAAQo6Z,uBACRr3Y,QAAQ24B,KAAK,qIAEb17C,EAAQi6X,oBACRl3W,QAAQ24B,KAAK,kIAEb17C,EAAQk6X,oBACRn3W,QAAQ24B,KAAK,kIAEb17C,EAAQm1V,uBACRpyU,QAAQ24B,KAAK,0JAEb17C,EAAQ05V,cACR32U,QAAQ24B,KAAK,yIACb17C,EAAQmuV,uBAAyB,UAER,aAAzBnuV,EAAQ6tV,eACR9qU,QAAQ24B,KAAK,8IACb17C,EAAQ6tV,aAAe,cAEE,eAAzB7tV,EAAQ6tV,eACR9qU,QAAQ24B,KAAK,+IACb17C,EAAQ6tV,aAAe,cAEvB7tV,EAAQq6Z,gBACRt3Y,QAAQ24B,KAAK,+HAEb17C,EAAQ66V,iBACR93U,QAAQ24B,KAAK,gGACb17C,EAAQ+tV,UAAY,eAEM,IAA1B/tV,EAAQk2V,gBACRnzU,QAAQ24B,KAAK,oJACb17C,EAAQk2V,mBAAgBz5W,EACxBujB,EAAQutV,QAAUvtV,EAAQutV,UAAW,IAEX,IAA1BvtV,EAAQk2V,gBACRnzU,QAAQ24B,KAAK,oJACb17C,EAAQk2V,mBAAgBz5W,EACxBujB,EAAQutV,QAAUvtV,EAAQutV,UAAW,GAEzC,IAAI+sE,EAAyB,CACzBzmE,2BAA4B,oBAC5BC,wBAAyB,iBACzBC,wBAAyB,iBACzBC,2BAA4B,oBAC5BE,8BAA+B,uBAC/BC,iCAAkC,0BAClCF,6BAA8B,sBAC9BG,iCAAkC,0BAClCqG,wBAAyB,2BAEzB8/D,EAA4B,GAChC/la,OAAOC,KAAK6la,GAAwBjva,QAAQ,SAAUsJ,GAClD,IAAI6la,EAAcF,EAAuB3la,GACrCpb,EAAQmgD,EAAMgoU,YAAY/sW,GAC9B,QAAclY,IAAVlD,EAAqB,CACrB,GAAY,iCAARob,EAEA,YADAouB,QAAQ24B,KAAK,0IAGjB34B,QAAQ24B,KAAK,oCAAsC/mD,EAAM,0FAA4F6la,GACrJD,EAA0BC,GAAejhb,KAG7Cib,OAAOC,KAAK8la,GAA2Bp+a,OAAS,IAAMiuG,GAAE8rR,OAAOl2W,EAAQutV,WACvExqU,QAAQ24B,KAAK,oJACb17C,EAAQutV,SAAU,GAEC,MAAnBvtV,EAAQutV,UACRvtV,EAAQutV,QAAUu8D,GAAiB33Y,MAAMnS,EAAQutV,UAErD,IAAIktE,EAAazib,KAAK0pX,YAAYnU,QAClC,GAAI/4V,OAAOC,KAAK8la,GAA2Bp+a,OAAS,GAAKs+a,GAAcA,EAAWzQ,WAAY,CAC1F,IAAI0Q,EAAaD,EAAWzQ,WAAW78Z,OAAO,SAAUk1M,GAAM,MAAiB,YAAVA,EAAGrkM,KAC9C,IAAtB08Z,EAAWv+a,QACXiuG,GAAEkyR,UAAUo+C,EAAW,GAAI,CACvBxoC,gBAAiBqoC,IAIzBv6Z,EAAQ26Z,kBACR53Y,QAAQ24B,KAAK,6FACb17C,EAAQstV,UAAYttV,EAAQstV,WAAa,CACrCzB,WAAY,CAAC,CAAE50V,UAAW,6BAG9B+I,EAAQ46Z,qBACR73Y,QAAQ24B,KAAK,iKAEb17C,EAAQ80V,yBAA2B90V,EAAQ60V,iBAC3C9xU,QAAQ24B,KAAK,8QACR17C,EAAQ0sV,gBACT1sV,EAAQ0sV,cAAgB,IAEvB1sV,EAAQ0sV,cAAcxwL,WACvBl8J,EAAQ0sV,cAAcxwL,UAAW,KAGrCl8J,EAAQ+0V,cAAgB/0V,EAAQg1V,0BAChCjyU,QAAQ24B,KAAK,4bACR17C,EAAQ0sV,gBACT1sV,EAAQ0sV,cAAgB,IAEvB1sV,EAAQ0sV,cAAcv/V,SACvB6S,EAAQ0sV,cAAcv/V,QAAS,IAGnC6S,EAAQ20V,kBACR5xU,QAAQ24B,KAAK,wPACR17C,EAAQ0sV,gBACT1sV,EAAQ0sV,cAAgB,IAEvB1sV,EAAQ0sV,cAAczC,YACvBjqV,EAAQ0sV,cAAczC,WAAY,IAGtCjqV,EAAQ44V,8BACR71U,QAAQ24B,KAAK,iGAEb17C,EAAQ64V,iBACR91U,QAAQ24B,KAAK,iLAEb17C,EAAQ2xV,gBACR5uU,QAAQ24B,KAAK,gNAEb17C,EAAQ26V,yBACR53U,QAAQ24B,KAAK,4JAEb17C,EAAQmqV,iBACRpnU,QAAQ24B,KAAK,2HACR17C,EAAQ0sV,gBACT1sV,EAAQ0sV,cAAgB,IAEgB,MAAxC1sV,EAAQ0sV,cAAcvC,iBACtBnqV,EAAQ0sV,cAAcvC,gBAAiB,IAG/C,IAAI0wE,EAAuB,SAAUC,EAASjmI,EAAS9yH,GAC3B,MAApB/hK,EAAQ86Z,KACR/3Y,QAAQ24B,KAAK,0BAA4BqmH,EAAU,MAAQ+4P,EAAU,gEAAkEjmI,EAAU,cACzH,MAApB70R,EAAQ60R,KACR70R,EAAQ60R,GAAW70R,EAAQ86Z,MAIvCD,EAAqB,wBAAyB,6BAA8B,UAC5EA,EAAqB,mBAAoB,gBAAiB,UAC1DA,EAAqB,kBAAmB,mBAAoB,WAEhE3P,EAAmBxgZ,UAAU+gZ,mBAAqB,WAC1Czza,KAAK2hZ,cACL3hZ,KAAK+ib,sBAGb7P,EAAmBxgZ,UAAUqwZ,mBAAqB,WAC1C/ib,KAAK81a,qBACD1jU,GAAEgsR,QAAQp+X,KAAKy+a,oBACf1zY,QAAQ24B,KAAK,wKAIjB1jE,KAAKk0a,yBACD9hU,GAAEgsR,QAAQp+X,KAAK0+a,6BACf3zY,QAAQ24B,KAAK,oLAGb0uC,GAAEgsR,QAAQp+X,KAAK2+a,8BACf5zY,QAAQ24B,KAAK,8LAKzBwvW,EAAmBxgZ,UAAU40Y,kBAAoB,WAC7C,GAAItna,KAAK0pX,YAAYvR,eACjB,OAAOn4W,KAAK0pX,YAAYvR,eAE5B,IAAI5rB,EAAOvsV,KACX,OAAO,SAAU2c,EAAK+nG,GAClB,IAAIwvP,EAAa3nB,EAAKm9B,YAAYxV,WAClC,OAAIA,GAAcA,EAAWv3V,GAClBu3V,EAAWv3V,GAEf+nG,IAIfwuT,EAAmBxgZ,UAAUohZ,mBAAqB,SAAUh+X,EAAWxtB,GACnE,IAAI06Z,EAAqBlO,GAAcC,oBAAoBj/X,GACP,mBAAzC91C,KAAK0pX,YAAYs5D,IACxBhjb,KAAK0pX,YAAYs5D,GAAoB16Z,IAI7C4qZ,EAAmBxgZ,UAAU0uZ,qBAAuB,WAChD,OAAKphb,KAAK0pX,YAAYpT,WAAalkQ,GAAEgsR,QAAQp+X,KAAK0pX,YAAYpT,WACnDt2W,KAAKijb,sBAEPjjb,KAAK0pX,YAAYpT,WAAat2W,KAAK4yJ,UAAU5yJ,KAAK0pX,YAAYpT,WAC5Dt2W,KAAK0pX,YAAYpT,WAE5BvrU,QAAQ24B,KAAK,uEACN1jE,KAAKijb,wBAEhB/P,EAAmBxgZ,UAAUwwZ,oBAAsB,SAAUxuC,EAASyuC,GAKlE,QADsB,IAAlBA,IAA4BA,GAAgB,GACH,mBAAlCnjb,KAAK0pX,YAAY/Q,aAA6B,CACrD,GAAIwqE,EACA,MAAO,CAAE34a,OAAQxK,KAAKijb,sBAAuBG,WAAW,GAE5D,IAMI54a,EAASxK,KAAK0pX,YAAY/Q,aANjB,CACTj1N,KAAMgxP,EACN5kY,KAAM4kY,EAAQ5kY,KACdm6W,IAAKjqX,KAAK0pX,YAAYO,IACtBz4W,QAASxR,KAAK0pX,YAAYl4W,UAG9B,GAAc,MAAVhH,EACA,MAAO,CAAEA,OAAQA,EAAQ44a,WAAW,GAG5C,GAAI1uC,EAAQc,QAAUx1Y,KAAKo9a,iBACvB,OAAIp9a,KAAK4yJ,UAAU5yJ,KAAK0pX,YAAYnT,iBACzB,CAAE/rW,OAAQxK,KAAK0pX,YAAYnT,gBAAiB6sE,WAAW,GAE3D,CAAE54a,OAxwCW,IAwwCwB44a,WAAW,GAE3D,IAAIC,EAAmBrjb,KAAKijb,sBACxB3sE,EAAYt2W,KAAK0pX,YAAYpT,WAAat2W,KAAK4yJ,UAAU5yJ,KAAK0pX,YAAYpT,WAAat2W,KAAK0pX,YAAYpT,UAAY+sE,EACpHC,EAAe/ka,KAAKG,IAAI2ka,EAAkB/sE,GAC9C,GAAIt2W,KAAKujb,iBAAiBxsB,wBAAyB,CAC/C,GAAIosB,EACA,MAAO,CAAE34a,OAAQ8rW,EAAW8sE,WAAW,GAE3C,IAAIpxE,EAAahyW,KAAKwjb,qBAAqBC,yBAAyB/uC,GAGpE,MAAO,CAAElqY,OAAQ+T,KAAKukC,IAAIkvT,EAAYsxE,GAAeF,WAAW,GAEpE,MAAO,CAAE54a,OAAQ8rW,EAAW8sE,WAAW,IAE3ClQ,EAAmBxgZ,UAAUgxZ,mBAAqB,WAC9C,MAAgD,mBAAlC1jb,KAAK0pX,YAAY/Q,cAEnCu6D,EAAmBxgZ,UAAUixZ,kBAAoB,WAC7C,OAAO3jb,KAAKygb,aAAa,GAAI,mBAEjCvN,EAAmBxgZ,UAAUkxZ,oBAAsB,WAC/C,OAAO5jb,KAAKu7K,YAAYqoQ,uBAE5B1Q,EAAmBxgZ,UAAUkgI,UAAY,SAAUrxJ,GAC/C,OAAQ05C,MAAM15C,IAA2B,iBAAVA,GAInC2xa,EAAmBxgZ,UAAU+tZ,aAAe,SAAU/7T,EAAcm/T,GAChE,IAAI7xW,EAAQhyE,KAAKu7K,YAAYuoQ,WAAW9xW,MACxC,OAAIA,GAAuC,IAA9BA,EAAM/oE,QAAQ,YAChBjJ,KAAKu7K,YAAYwoQ,gBAAgB/xW,EAAO6xW,GAE5Cn/T,GAEXwuT,EAAmBxgZ,UAAUuwZ,oBAAsB,WAC/C,OAAOjjb,KAAKygb,aA/yCK,GA+yC4B,cAGjDvN,EAAmB8N,cAAgB,GACnC9N,EAAmB8Q,mBAAqB,eACxC9Q,EAAmB+Q,kCAAoC,4BACvD/Q,EAAmBgR,yCAA2C,kCAC9DhR,EAAmBiR,yBAA2B,oBAC9CjR,EAAmBkR,8BAAgC,yBACnDlR,EAAmBmR,yBAA2B,oBAC9CnR,EAAmBoR,+BAAiC,yBACpDpR,EAAmBqR,6BAA+B,wBAClDrR,EAAmBsR,kCAAoC,4BACvDtR,EAAmBuR,uBAAyB,kBAC5CvR,EAAmBwR,iCAAmC,8BACtDxR,EAAmByR,kBAAoB,cACvCzR,EAAmBQ,gBAAkB,YACrCZ,GAAa,CACTn2B,GAAU,gBACXu2B,EAAmBxgZ,UAAW,mBAAe,GAChDogZ,GAAa,CACTn2B,GAAU,qBACXu2B,EAAmBxgZ,UAAW,wBAAoB,GACrDogZ,GAAa,CACTn2B,GAAU,iBACXu2B,EAAmBxgZ,UAAW,oBAAgB,GACjDogZ,GAAa,CACTn2B,GAAU,YACXu2B,EAAmBxgZ,UAAW,eAAW,GAC5CogZ,GAAa,CACTn2B,GAAU,cACXu2B,EAAmBxgZ,UAAW,iBAAa,GAC9CogZ,GAAa,CACTn2B,GAAU,gBACXu2B,EAAmBxgZ,UAAW,mBAAe,GAChDogZ,GAAa,CACTn2B,GAAU,yBACXu2B,EAAmBxgZ,UAAW,4BAAwB,GACzDogZ,GAAa,CACTn2B,GAAU,YACXu2B,EAAmBxgZ,UAAW,eAAW,GAC5CogZ,GAAa,CACTC,GAAU,EAAG91B,GAAU,YAAa81B,GAAU,EAAG91B,GAAU,eAC5Di2B,EAAmBxgZ,UAAW,SAAU,MAC3CogZ,GAAa,CACTt2B,IACD02B,EAAmBxgZ,UAAW,UAAW,MAC5CogZ,GAAa,CACTx2B,IACD42B,EAAmBxgZ,UAAW,OAAQ,MACpB4gZ,EAAuBR,GAAa,CACrD53B,GAAK,uBACNg4B,GA70CiC,GAu1CpC0R,GAA8D,WAC9D,IAAK,IAAIhga,EAAI,EAAG/c,EAAI,EAAGwjI,EAAK/xH,UAAUnV,OAAQ0D,EAAIwjI,EAAIxjI,IAAK+c,GAAKtL,UAAUzR,GAAG1D,OACxE,IAAI2lI,EAAIv/H,MAAMqa,GAAI43G,EAAI,EAA3B,IAA8B30H,EAAI,EAAGA,EAAIwjI,EAAIxjI,IACzC,IAAK,IAAIkU,EAAIzC,UAAUzR,GAAI0M,EAAI,EAAG+2H,EAAKvvH,EAAE5X,OAAQoQ,EAAI+2H,EAAI/2H,IAAKioH,IAC1DsN,EAAEtN,GAAKzgH,EAAExH,GACjB,OAAOu1H,GAEPgrS,GAA+B,WAC/B,SAASA,KA+JT,OA7JAA,EAAc+P,kBAAoB,WAI9B,OAHK/P,EAAcgQ,kBACfhQ,EAAcgQ,gBAAkBhQ,EAAciQ,OAAOt7a,IAAI,SAAU6e,GAAS,OAAOwsZ,EAAcC,oBAAoBzsZ,MAElHwsZ,EAAcgQ,iBAEzBhQ,EAAcnrD,4BAA8B,SAAUD,EAAazqW,EAAW+la,QACxC,IAA9BA,IAAwCA,GAA4B,GACxExR,GAAmBv0Z,GAEQ,iBAAhByqW,IACPA,EAAc,IAGlB,IAAIu7D,EAAev7D,EACfw7D,EAAY,SAAUvoa,GAAO,YAAiC,IAAnBsC,EAAUtC,IAiBzD,OAfAioa,GAAiB9P,EAAcxD,iBAAkBwD,EAAc1D,kBAAmB0D,EAAczD,kBAAmByD,EAAcpD,oBAAqBoD,EAAc+P,qBAAqB1va,OAAO+va,GAC3L7xa,QAAQ,SAAUsJ,GAAO,OAAOsoa,EAAatoa,GAAOsC,EAAUtC,KACnEm4Z,EAActD,mBACTr8Z,OAAO+va,GACP7xa,QAAQ,SAAUsJ,GAAO,OAAOsoa,EAAatoa,GAAOm4Z,EAAcqQ,UAAUlma,EAAUtC,MAC3Fm4Z,EAAcvD,kBACTp8Z,OAAO+va,GACP7xa,QAAQ,SAAUsJ,GAAO,OAAOsoa,EAAatoa,GAAOm4Z,EAAc/uK,SAAS9mP,EAAUtC,MAErFqoa,GACDlQ,EAAciQ,OAET5va,OAAO,SAAUmT,GAAS,OAAO48Z,EAAU58Z,IAAU48Z,EAAUpQ,EAAcC,oBAAoBzsZ,MACjGjV,QAAQ,SAAUiV,GAAS,OAAO4qZ,GAAmB5oD,sBAAsBhiW,KAE7EohW,GAEXorD,EAAcC,oBAAsB,SAAUj/X,GAC1C,OAAKA,GAAaA,EAAU3xC,OAAS,EAC1B2xC,EAGA,KAAOA,EAAU,GAAGlI,cAAgBkI,EAAUyB,OAAO,IAGpEu9X,EAAc1qD,gBAAkB,SAAUnlX,EAASykX,EAAaO,EAAKC,GACjE,GAAKjlX,EAAL,CAGAuua,GAAmBvua,GAEnB,IAAIggb,EAAev7D,EACfw7D,EAAY,SAAUvoa,GAAO,OAAO1X,EAAQ0X,IAEhDioa,GAAiB9P,EAAcxD,iBAAkBwD,EAAczD,kBAAmByD,EAAc1D,kBAAmB0D,EAAc+P,qBAAqB1va,OAAO+va,GACxJ7xa,QAAQ,SAAUsJ,GAAO,OAAOsoa,EAAatoa,GAAO1X,EAAQ0X,GAAKvX,eACtE0va,EAActD,mBACTr8Z,OAAO+va,GACP7xa,QAAQ,SAAUsJ,GAAO,OAAOsoa,EAAatoa,GAAOm4Z,EAAcqQ,UAAUlgb,EAAQ0X,GAAKvX,gBAC9F0va,EAAcvD,kBACTp8Z,OAAO+va,GACP7xa,QAAQ,SAAUsJ,GAAO,OAAOsoa,EAAatoa,GAAOm4Z,EAAc/uK,SAAS9gQ,EAAQ0X,GAAKvX,gBACzFH,EAAQs+W,yBACR0G,EAAIm7D,2BAA2BtQ,EAAcqQ,UAAUlgb,EAAQs+W,wBAAwBn+W,eAEvFH,EAAQi5W,eACR+L,EAAI/L,cAAc42D,EAAcqQ,UAAUlgb,EAAQi5W,cAAc94W,eAEhEH,EAAQ2wW,iBACRqU,EAAIo7D,eAAepgb,EAAQ2wW,gBAAgBxwW,cAE3CH,EAAQwuW,SACRwW,EAAIq7D,WAAWrgb,EAAQwuW,QAAQruW,cAE/BH,EAAQ0uW,kBACRsW,EAAIs7D,oBAAoBtgb,EAAQ0uW,iBAAiBvuW,cAEjDH,EAAQ2uW,qBACRqW,EAAIu7D,uBAAuBvgb,EAAQ2uW,oBAAoBxuW,cAEvDH,EAAQmR,YACR6zW,EAAI6rC,cAAc7wZ,EAAQmR,WAAWhR,aAAc,sBAEnDH,EAAQkvW,YACR8V,EAAIw7D,cAAcxgb,EAAQkvW,WAAW/uW,cAErCH,EAAQyxW,cACRuT,EAAIy7D,gBAAgB5Q,EAAc/uK,SAAS9gQ,EAAQyxW,aAAatxW,eAEhEH,EAAQwyW,oBACRwS,EAAI07D,sBAAsB7Q,EAAc/uK,SAAS9gQ,EAAQwyW,mBAAmBryW,eAE5EH,EAAQw6W,WACRyK,EAAUytC,aAAamd,EAAcqQ,UAAUlgb,EAAQw6W,UAAUr6W,eAEjEH,EAAQi7W,2BACR+J,EAAI27D,6BAA6B9Q,EAAcqQ,UAAUlgb,EAAQi7W,0BAA0B96W,eAE3FH,EAAQs7W,iBACR0J,EAAI47D,mBAAmB/Q,EAAcqQ,UAAUlgb,EAAQs7W,gBAAgBn7W,eAEvEH,EAAQu7W,6BACRyJ,EAAI67D,+BAA+BhR,EAAcqQ,UAAUlgb,EAAQu7W,4BAA4Bp7W,eAE/FH,EAAQq3W,2BACR2N,EAAI87D,6BAA6BjR,EAAcqQ,UAAUlgb,EAAQq3W,0BAA0Bl3W,eAE3FH,EAAQ49W,gBACRoH,EAAI+7D,kBAAkBlR,EAAcqQ,UAAUlgb,EAAQ49W,eAAez9W,eAErEH,EAAQ89W,wBACRkH,EAAIg8D,0BAA0BnR,EAAcqQ,UAAUlgb,EAAQ89W,uBAAuB39W,eAErFH,EAAQswW,SACR0U,EAAIi8D,WAAWjhb,EAAQswW,QAAQnwW,cAGnC,IAAIkjB,EAAQ,CACR5nB,KAAMquZ,GAAOgE,8BACb9oC,IAAKP,EAAYO,IACjBC,UAAWR,EAAYQ,WAE3B93Q,GAAEi4Q,cAAcplX,EAAS,SAAU0X,EAAKpb,GACpC+mB,EAAM3L,GAAOpb,IAEjB0oX,EAAIxxB,cAAcnwU,KAEtBwsZ,EAAcqQ,UAAY,SAAU5jb,GAChC,MAAqB,kBAAVA,EACAA,EAEe,iBAAVA,IAGmB,SAAxBA,EAAMqsC,eAAqC,IAATrsC,IAMjDuza,EAAc/uK,SAAW,SAAUxkQ,GAC/B,MAAqB,iBAAVA,EACAA,EAEe,iBAAVA,EACLoN,OAAOpN,QAGd,GAIRuza,EAAciQ,OAAS,GACvBjQ,EAAc1D,kBAAoBD,GAAaC,kBAC/C0D,EAAczD,kBAAoBF,GAAaE,kBAC/CyD,EAAcxD,iBAAmBH,GAAaG,iBAC9CwD,EAAcvD,kBAAoBJ,GAAaI,kBAC/CuD,EAActD,mBAAqBL,GAAaK,mBAChDsD,EAAcpD,oBAAsBP,GAAaO,oBACjDoD,EAAcrD,eAAiBN,GAAaM,eACrCqD,EAhKwB,GAmKnC,SAAStB,GAAmBvua,IACpBA,EAAQ08a,eAAiB18a,EAAQy8a,kBACjC32Y,QAAQ24B,KAAK,8EAHrBoxW,GAAciQ,OAAS3yU,GAAEt+F,OAAOi7Y,IAahC,IAwHQ3lR,GAgSAA,GAxZJ+8S,GAAsD,SAAUt8S,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Ds8S,GAA0B,WAC1B,SAASA,IACL,IAAI1kY,EAAQ1hD,KACZA,KAAKqmb,iBAAmB,GACxBrmb,KAAK8gK,WAAY,EACjB9gK,KAAKqkJ,WAAa,WAAc,OAAO3iG,EAAMlwC,SAC7CxR,KAAKs3V,QAAU,WAAc,OAAQ51S,EAAMo/G,WAkG/C,OAjFAslR,EAAS1zZ,UAAU4zZ,sBAAwB,WACvC,OAAOtmb,KAAK8pX,oBAEhBs8D,EAAS1zZ,UAAUxR,QAAU,WAKzBlhB,KAAKqmb,iBAAiBhza,QAAQ,SAAU4jC,GAAQ,OAAOA,MACvDj3C,KAAKqmb,iBAAiBlib,OAAS,EAC/BnE,KAAK8gK,WAAY,EACjB9gK,KAAKy4V,cAAc,CAAE/3V,KAAM0lb,EAASG,mBAExCH,EAAS1zZ,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GAClD1gC,KAAKioZ,oBACNjoZ,KAAKioZ,kBAAoB,IAAI9K,IAEjCn9Y,KAAKioZ,kBAAkB38X,iBAAiBiqB,EAAW7U,IAEvD0lZ,EAAS1zZ,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GACtD1gC,KAAKioZ,mBACLjoZ,KAAKioZ,kBAAkBt8X,oBAAoB4pB,EAAW7U,IAG9D0lZ,EAAS1zZ,UAAU8zZ,mBAAqB,SAAUl+Z,GAC9C,IAAIo5B,EAAQ1hD,KACZmrB,OAAOyZ,WAAW,WAAc,OAAO8c,EAAM+2S,cAAcnwU,IAAW,IAE1E89Z,EAAS1zZ,UAAU+lU,cAAgB,SAAUnwU,GACrCtoB,KAAKioZ,mBACLjoZ,KAAKioZ,kBAAkBxvD,cAAcnwU,IAG7C89Z,EAAS1zZ,UAAU+zZ,4BAA8B,SAAUv5L,EAAQ5kO,EAAOoY,GACtE,IAAIghB,EAAQ1hD,KACZ,IAAIA,KAAK8gK,UAAT,CAGIosF,aAAkB73K,YAClB+8B,GAAEu4R,4BAA4B3qY,KAAKsmb,wBAAyBp5L,EAAQ5kO,EAAOoY,GAG3EwsN,EAAO5hO,iBAAiBhD,EAAOoY,GAEnC,IAAIgmZ,EAAc,WAGd,OAFAx5L,EAAOvhO,oBAAoBrD,EAAOoY,GAClCghB,EAAM2kY,iBAAmB3kY,EAAM2kY,iBAAiBlxa,OAAO,SAAUnG,GAAM,OAAOA,IAAO03a,IAC9E,MAGX,OADA1mb,KAAKqmb,iBAAiBzib,KAAK8ib,GACpBA,IAEXN,EAAS1zZ,UAAUi0Z,eAAiB,SAAU1vY,GAEtCj3C,KAAKs3V,UACLt3V,KAAKqmb,iBAAiBzib,KAAKqzC,GAG3BA,KAGRmvY,EAAS1zZ,UAAUk0Z,kBAAoB,SAAUvsC,EAAM7oY,GAInD,OAHI6oY,EAAKn5X,SACLlhB,KAAK2mb,eAAetsC,EAAKn5X,QAAQqpB,KAAK8vW,IAEnCr6Y,KAAKo6Y,SAASC,EAAM7oY,IAE/B40a,EAAS1zZ,UAAU0nX,SAAW,SAAUC,EAAM7oY,GAE1C,OADCA,GAAWxR,KAAKqkJ,cAAc+1P,SAASC,GACjCA,GAEX+rC,EAASG,gBAAkB,YAC3BJ,GAAa,CACTxpC,GAAU,YACXypC,EAAS1zZ,UAAW,eAAW,GAClCyzZ,GAAa,CACTxpC,GAAU,uBACXypC,EAAS1zZ,UAAW,0BAAsB,GAC7CyzZ,GAAa,CACT3pC,IACD4pC,EAAS1zZ,UAAW,UAAW,MAC3B0zZ,EAxGmB,GAiH1B3tW,IACI2wD,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFq9S,GAAiB,IAAInvC,GACrBtlX,GAA2B,SAAUomD,GAErC,SAASpmD,EAAU9xB,GACf,IAAIohD,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAcjC,OAbA0hD,EAAMolY,gBAAkB,GACxBplY,EAAMqlY,wBAA0B,GAEhCrlY,EAAMo/U,WAAY,EAElBp/U,EAAMqyI,SAAU,EAIhBryI,EAAMslY,OAASH,GAAehjb,OAC1BvD,GACAohD,EAAMulY,YAAY3mb,GAEfohD,EAkPX,OAlQA+2B,GAAUrmD,EAAWomD,GAkBrBpmD,EAAUM,UAAUw0Z,UAAY,WAC5B,OAAOlnb,KAAKgnb,QAGhB50Z,EAAUM,UAAUy0Z,8BAAgC,SAAUzma,EAAYu5X,GACtE,IAAIv4V,EAAQ1hD,KAGRonb,EAAgBh1U,GAAEsxR,aAAahjX,EAAWsmK,YAC9C50E,GAAE/+F,QAAQ+za,EAAe,SAAUC,GAC/B,GAAMA,aAAqBhyW,YAA3B,CAGA,IAAIiyW,EAAY5lY,EAAM2iG,aAAa01P,2BAA2BstC,EAAW,SAAUC,GAG/E5lY,EAAM6lY,uBAAuBF,EAAWC,EAAUhhD,WACnD2T,GACH,GAAIqtC,EAAW,CACX,GAAIA,EAAUE,UAAYH,EAAUv/a,SAAS3D,OAAQ,CACjDu9C,EAAMylY,8BAA8BE,GAEpC,IAAInva,EAAQ3N,MAAMmoB,UAAUlpB,MAAM0rB,KAAKmyZ,EAAUv/a,UACjDw/a,EAAUE,SAAStva,GAGvBwpC,EAAM+lY,qBAAqBH,EAAW5ma,EAAY2ma,QAE7CA,EAAUrgQ,YACftlI,EAAMylY,8BAA8BE,OAIhDj1Z,EAAUM,UAAU60Z,uBAAyB,SAAUhha,EAAQo1B,GAC3Dy2D,GAAEuxR,oBAAoBp9W,EAAO2gK,WAAY,SAAU/lL,EAAMI,GAAS,OAAOo6C,EAAK9sC,aAAa1N,EAAMI,MAErG6wB,EAAUM,UAAU+0Z,qBAAuB,SAAUttC,EAAcz5X,EAAY2ma,GAC3E,IAAIK,EAAavtC,EAAa7T,SAC9B5lX,EAAWE,aAAa8ma,EAAYL,GACpC3ma,EAAWC,aAAagqB,SAASlqB,cAAc4ma,EAAUv4a,UAAW44a,GACpE1nb,KAAK8mb,gBAAgBljb,KAAKu2Y,GAC1Bn6Y,KAAK2nb,iCAAiCxtC,EAAcktC,IAExDj1Z,EAAUM,UAAUi1Z,iCAAmC,SAAUxtC,EAAcktC,GAC3E,IAAIO,EAAa5nb,KACjBA,KAAK6nb,0BAA0B,SAAUz8a,GACjCw8a,EAAWx8a,EAAc67K,iBAAmBogQ,IAC5CO,EAAWx8a,EAAc67K,eAAiBkzN,MAItD/nX,EAAUM,UAAUm1Z,0BAA4B,SAAU9kX,GAEtD,IADA,IAAI+kX,EAAgBtra,OAAO24H,eAAen1I,MAClB,MAAjB8nb,GAAuB,CAC1B,IAAI3sC,EAAW2sC,EAAcC,sBACzBC,EAAoBF,EAAc53Y,YAAa/uC,KAC/Cg6Y,GAAYA,EAAS6sC,IAAqB7sC,EAAS6sC,GAAkBC,gBACrE71U,GAAE/+F,QAAQ8nY,EAAS6sC,GAAkBC,eAAgB,SAAU78a,GAAiB,OAAO23D,EAAO33D,KAElG08a,EAAgBtra,OAAO24H,eAAe2yS,KAG9C11Z,EAAUM,UAAUu0Z,YAAc,SAAU3mb,EAAU25Y,GAClD,IAAIiuC,EAAO91U,GAAE8uR,aAAa5gY,GAC1BN,KAAKmob,uBAAuBD,EAAMjuC,IAEtC7nX,EAAUM,UAAUy1Z,uBAAyB,SAAU98a,EAAS4uY,GAC5Dj6Y,KAAKkob,KAAO78a,EACZrL,KAAKkob,KAAKE,cAAgBpob,KAC1BA,KAAKqob,6BACLrob,KAAKsob,qBAECtob,KAAKqkJ,cACPrkJ,KAAKmnb,8BAA8Bnnb,KAAKsmY,SAAU2T,IAG1D7nX,EAAUM,UAAU61Z,kCAAoC,WAG9Cvob,KAAKsmY,UACPtmY,KAAKmnb,8BAA8Bnnb,KAAKsmY,WAGhDl0W,EAAUM,UAAU41Z,mBAAqB,WACrC,IAAI5mY,EAAQ1hD,KACZ,GAAKA,KAAKkob,KAAV,CAGA,IAAIN,EAAa5nb,KACjBA,KAAK6nb,0BAA0B,SAAUz8a,GACrC,IAAIo9a,EAAgB9mY,EAAMwmY,KAAK98a,cAAcA,EAAcA,eACvDo9a,IACAZ,EAAWx8a,EAAc67K,eAAiBuhQ,EAAcJ,eAAiBI,OAIrFp2Z,EAAUM,UAAU21Z,2BAA6B,WAC7C,IAAI3mY,EAAQ1hD,KAEZ,GADAA,KAAKyob,gCACAzob,KAAKkob,KAAV,CAGA,IAAIQ,EAAkB1ob,KAAK2ob,uBAAuB,mBAC9Cv2U,GAAEosR,eAAekqD,KAGhB1ob,KAAK+mb,0BACN/mb,KAAK+mb,wBAA0B,IAEnC30U,GAAE/+F,QAAQq1a,EAAiB,SAAUE,GACjC,IAAIloZ,EAAWghB,EAAMknY,EAAct/P,YAAY/+I,KAAKmX,GACpDA,EAAMwmY,KAAK58Z,iBAAiBs9Z,EAAc9yY,UAAWpV,GACrDghB,EAAMqlY,wBAAwBnjb,KAAK,CAAEkyC,UAAW8yY,EAAc9yY,UAAWpV,SAAUA,SAG3FtO,EAAUM,UAAUi2Z,uBAAyB,SAAUhsa,GAGnD,IAFA,IAAI2b,EAAM,GACNuwZ,EAAYrsa,OAAO24H,eAAen1I,MAClB,MAAb6ob,GAAmB,CACtB,IAAI1tC,EAAW0tC,EAAUd,sBACrBC,EAAoBa,EAAU34Y,YAAa/uC,KAI/C,QAAyBsD,IAArBujb,EAAgC,CAChC,IACIzmT,EADgB,yBACQ7iF,KAAKmqY,EAAU34Y,YAAYje,YACnDsvG,GAAWA,EAAQp9H,OAAS,IAC5B6jb,EAAmBzmT,EAAQ,GAAGzkH,QAGlCq+X,GAAYA,EAAS6sC,IAAqB7sC,EAAS6sC,GAAkBrra,KACrE2b,EAAMA,EAAItf,OAAOmiY,EAAS6sC,GAAkBrra,KAEhDksa,EAAYrsa,OAAO24H,eAAe0zS,GAEtC,OAAOvwZ,GAEXlG,EAAUM,UAAU+1Z,8BAAgC,WAChD,IAAI/mY,EAAQ1hD,KACPA,KAAK+mb,yBAA4B/mb,KAAKkob,OAG3C91U,GAAE/+F,QAAQrT,KAAK+mb,wBAAyB,SAAU9yZ,GAAK,OAAOytB,EAAMwmY,KAAKv8Z,oBAAoBsI,EAAE6hB,UAAW7hB,EAAEyM,YAC5G1gC,KAAK+mb,wBAA0B,KAEnC30Z,EAAUM,UAAU4zW,OAAS,WACzB,OAAOtmY,KAAKkob,MAEhB91Z,EAAUM,UAAUo2Z,oBAAsB,WACtC,OAAO9ob,KAAKkob,MAEhB91Z,EAAUM,UAAUq2Z,mBAAqB,SAAU9pa,GAC/Cjf,KAAKgpb,gBAAkB/pa,GAE3BmT,EAAUM,UAAUu2Z,mBAAqB,WACrC,OAAOjpb,KAAKgpb,iBAIhB52Z,EAAUM,UAAUw2Z,OAAS,SAAUhB,GACnClob,KAAKkob,KAAOA,GAEhB91Z,EAAUM,UAAUy2Z,oBAAsB,SAAU3mD,GAChD,OAAOxiY,KAAKkob,KAAK98a,cAAco3X,IAEnCpwW,EAAUM,UAAU02Z,yBAA2B,SAAU5mD,GACrD,OAAOxiY,KAAKkob,KAAK98a,cAAco3X,IAEnCpwW,EAAUM,UAAU5a,YAAc,SAAUooT,EAAU7nT,GAIlD,GAHKA,IACDA,EAAYrY,KAAKkob,MAEjB91U,GAAEwvR,gBAAgB1hE,GAClB7nT,EAAUP,YAAYooT,OAErB,CACD,IAAImpH,EAAiBnpH,EACrB7nT,EAAUP,YAAYuxa,EAAe/iD,UACrCtmY,KAAK8mb,gBAAgBljb,KAAKylb,KAGlCj3Z,EAAUM,UAAU42Z,WAAa,SAAUC,EAAS/3a,GAChDxR,KAAK4mb,kBAAkB2C,EAAS/3a,IAEpC4gB,EAAUM,UAAU82Z,YAAc,WAC9B,OAAOxpb,KAAK8gY,WAEhB1uW,EAAUM,UAAUuvW,WAAa,SAAUluM,GACnCA,IAAY/zL,KAAK+zL,UACjB/zL,KAAK+zL,QAAUA,EACf3hF,GAAE6vR,WAAWjiY,KAAKkob,KAAMn0P,KAGhC3hK,EAAUM,UAAUmuW,aAAe,SAAUC,GACrCA,IAAc9gY,KAAK8gY,YACnB9gY,KAAK8gY,UAAYA,EACjB1uR,GAAEyuR,aAAa7gY,KAAKkob,KAAMpnD,GAK1B9gY,KAAKy4V,cAJS,CACV/3V,KAAM0xB,EAAUq3Z,wBAChB11P,QAAS/zL,KAAK8gY,cAK1B1uW,EAAUM,UAAUxR,QAAU,WAC1BkxF,GAAE/+F,QAAQrT,KAAK8mb,gBAAiB,SAAUuC,GAClCA,GAAkBA,EAAenoa,SACjCmoa,EAAenoa,YAGvBlhB,KAAK8mb,gBAAgB3ib,OAAS,EAC9BnE,KAAKyob,gCACLjwW,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCoyB,EAAUM,UAAUg3Z,oBAAsB,SAAUpha,EAAOoY,GACvD,IAAIghB,EAAQ1hD,KACZA,KAAKkob,KAAK58Z,iBAAiBhD,EAAOoY,GAClC1gC,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAMwmY,KAAKv8Z,oBAAoBrD,EAAOoY,MAEnFtO,EAAUM,UAAUytW,YAAc,SAAUt4W,GACxCuqF,GAAE+tR,YAAYngY,KAAKkob,KAAMrga,IAE7BuK,EAAUM,UAAU2tW,eAAiB,SAAUx4W,GAC3CuqF,GAAEiuR,eAAergY,KAAKkob,KAAMrga,IAEhCuK,EAAUM,UAAU6tW,oBAAsB,SAAU14W,EAAW24W,GAC3DpuR,GAAEmuR,oBAAoBvgY,KAAKkob,KAAMrga,EAAW24W,IAEhDpuW,EAAUM,UAAUsW,aAAe,SAAUrsB,GACzC,IAAIura,EAAOlob,KAAKkob,KAChB,OAAOA,EAAOA,EAAKl/Y,aAAarsB,GAAO,MAE3CyV,EAAUM,UAAUi3Z,cAAgB,SAAUC,GAC1C,OAAO5pb,KAAKmpb,oBAAoB,SAAYS,EAAU,OAE1Dx3Z,EAAUq3Z,wBAA0B,mBAtQkB,SAAU5/S,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAmQxD+/S,CAAa,CACT1tC,IACD/pX,EAAUM,UAAW,oCAAqC,MACtDN,EAnQoB,CAoQ7Bg0Z,IAQE0D,IACI1gT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFugT,GAAgC,SAAUvxW,GAE1C,SAASuxW,IACL,OAAkB,OAAXvxW,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAiB/D,OAnBA8pb,GAAYC,EAAgBvxW,GAI5BuxW,EAAer3Z,UAAUs3Z,QAAU,WAC/B,OAAO,GAEXD,EAAer3Z,UAAUq2Z,mBAAqB,SAAU1wa,GACpD+5F,GAAE+tR,YAAY9nX,EAAUiuX,SAAU,gBAClC9tT,EAAO9lD,UAAUq2Z,mBAAmB7zZ,KAAKl1B,KAAMqY,IAEnD0xa,EAAer3Z,UAAUxR,QAAU,WAC/B,IAAI+oa,EAAajqb,KAAKgpb,gBACNiB,GAAcA,EAAW3yF,WAErCllP,GAAEiuR,eAAe4pD,EAAW3jD,SAAU,gBAE1C9tT,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAE3B+pb,EApByB,CAqBlC33Z,IAWF,SAAS83Z,GAAYjoa,GACjB,OAAOkoa,GAAkB5/Y,KAAKvqC,KAAM,QAAUiiB,EAAM,KAExD,SAASkoa,GAAkB71Y,EAAUyoW,EAAgBC,EAAuBrzY,GACvD,OAAb2qC,EAIiB,iBAAV3qC,EAIXygb,GAAiBrtC,EAAgB,iBAAkB,CAC/C91N,cAAe+1N,EACf5xY,cAAekpC,IALfvJ,QAAQ/V,MAAM,oDAJd+V,QAAQ/V,MAAM,sDAgBtB,SAASq1Z,GAAav0Y,EAAWtpB,EAAQ88J,GACnB,OAAdxzI,EAIJs0Y,GAAiB59Z,EAAQ,kBAAmB,CACxC88J,WAAYA,EACZxzI,UAAWA,IALX/K,QAAQ/V,MAAM,uDAQtB,SAASo1Z,GAAiB59Z,EAAQ7P,EAAKpb,GAEnC,IAAIwxB,EAMR,SAA4BvG,EAAQ89Z,GAOhC,OANK99Z,EAAOu7Z,wBACRv7Z,EAAOu7Z,sBAAwB,IAE9Bv7Z,EAAOu7Z,sBAAsBuC,KAC9B99Z,EAAOu7Z,sBAAsBuC,GAAgB,IAE1C99Z,EAAOu7Z,sBAAsBuC,GAbxBC,CAAmB/9Z,EAAQA,EAAO0jB,YAAY/uC,MACrD4xB,EAAMpW,KACPoW,EAAMpW,GAAO,IAEjBoW,EAAMpW,GAAK/Y,KAAKrC,GAkBpB,IACQ6nI,GA6PAA,GAoOAA,GAkBJohT,GApfAC,IACIrhT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFkhT,GAAgC,SAAUlyW,GAE1C,SAASkyW,IACL,OAAOlyW,EAAOtjD,KAAKl1B,KAAM0qb,EAAeC,WAAa3qb,KA+FzD,OAjGAyqb,GAAYC,EAAgBlyW,GAI5BkyW,EAAeh4Z,UAAU4yQ,KAAO,SAAUx7M,GACtC9pF,KAAK8pF,OAASA,EACd,IACI8gW,EADAC,EAAS7qb,KAAK6qb,OAGd/gW,EAAOghW,iBACP9qb,KAAK+qb,oBAAqB,EACMjhW,EAAOkhW,WAAa16C,GAAUc,eACvDtnT,EAAOkhW,WAAa16C,GAAUyB,WAEjC64C,EAAa,GAER9gW,EAAOmhW,UACZL,EAAa9gW,EAAOmhW,WAGpBL,EAAa5qb,KAAKkrb,cAAcphW,GAC5BA,EAAOkhW,WAAa16C,GAAUgC,SAC9BtyY,KAAKmrb,qBAAsB,MAKnCnrb,KAAK+qb,oBAAqB,EAC1BH,EAAa5qb,KAAKkrb,cAAcphW,IAEhCsoB,GAAE8rR,OAAO0sD,IACTC,EAAOv2S,SAASs2S,GAAY,GAEhC5qb,KAAKymb,4BAA4BoE,EAAOvkD,SAAU,UAAW,SAAUh+W,IACtDA,EAAM2E,UAAYqjX,GAAUiC,aAC1BjqX,EAAM2E,UAAYqjX,GAAUkC,gBAEvClqX,EAAM4E,oBAIlBw9Z,EAAeh4Z,UAAU04Z,iBAAmB,WACxC,GAAKprb,KAAK+qb,mBAAV,CAGA,IAAIF,EAAS7qb,KAAK6qb,OAIbz4U,GAAEqqR,mBACHouD,EAAO/B,sBAAsBh6Z,QAEjC,IAAIu8Z,EAAUR,EAAOS,kBACrB,GAAItrb,KAAKmrb,oBACLE,EAAQprZ,aAEP,CAKD,IAAI1+B,EAAQspb,EAAO/uT,WACfxkF,EAAO86D,GAAE8rR,OAAO38X,IAAUA,EAAM4C,QAAW,EAC3CmzC,GACA+zY,EAAQE,kBAAkBj0Y,EAAKA,MAK3CozY,EAAeh4Z,UAAU84Z,QAAU,WAC/B,IAAIX,EAAS7qb,KAAK6qb,OACdY,EAAUZ,EAAO/B,sBACjBuC,EAAUR,EAAOS,kBACrBG,EAAQ38Z,QACRu8Z,EAAQprZ,UAEZyqZ,EAAeh4Z,UAAUg5Z,SAAW,WAChC,IAAIL,EAAUrrb,KAAK6qb,OAAOS,kBACtBl5U,GAAEkqR,eACF+uD,EAAQE,kBAAkB,EAAG,IAGrCb,EAAeh4Z,UAAUopG,SAAW,WAEhC,OAAO97H,KAAK8pF,OAAO6hW,WADN3rb,KAAK6qb,OACmB/uT,aAEzC4uT,EAAeh4Z,UAAUw4Z,cAAgB,SAAUphW,GAE/C,OADkBA,EAAO8hW,cAAgB9hW,EAAOtkF,OAAOuqY,YAAYriC,QAC9C5jR,EAAO+hW,YAAY/hW,EAAOvoF,OAASuoF,EAAOvoF,OAEnEmpb,EAAeh4Z,UAAUs3Z,QAAU,WAC/B,OAAO,GAEXU,EAAeC,SAAW,0HApG4B,SAAU9gT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAiGxDgiT,CAAa,CACT5B,GAAY,WACbQ,EAAeh4Z,UAAW,cAAU,GAChCg4Z,EAlGyB,CAmGlCX,IAUEgC,GAAiC,WACjC,SAASA,EAAgBC,EAAsBC,EAAqBC,GAChE,IAAIxqY,EAAQ1hD,KACZA,KAAKmsb,OAAQ,EACbH,EAAqBI,iBAAiBH,GAAqB5ta,KAAK,SAAUgua,GAEjE3qY,EAAMyqY,OAMXzqY,EAAM2qY,SAAWA,EACjBH,EAAQp0a,YAAYu0a,EAAS/lD,UACzB+lD,EAASjB,kBACTiB,EAASjB,mBAET1pY,EAAM4qY,WACND,EAAS5qU,QAAQ//D,EAAM4qY,YAXnBD,EAASnra,SACTmra,EAASnra,YAoCzB,OAtBA6qa,EAAgBr5Z,UAAUxR,QAAU,WAChClhB,KAAKmsb,OAAQ,EACTnsb,KAAKqsb,UAAYrsb,KAAKqsb,SAASnra,SAC/BlhB,KAAKqsb,SAASnra,WAGtB6qa,EAAgBr5Z,UAAU0nB,QAAU,WAChC,OAAOp6C,KAAKqsb,SAAWrsb,KAAKqsb,SAASjyY,UAAYp6C,KAAKssb,WAE1DP,EAAgBr5Z,UAAU+uF,QAAU,SAAUlgH,GACtCvB,KAAKqsb,SACLrsb,KAAKqsb,SAAS5qU,QAAQlgH,GAGtBvB,KAAKssb,UAAY/qb,GAGzBwqb,EAAgBr5Z,UAAUsmQ,oBAAsB,SAAUruI,GAClD3qJ,KAAKqsb,UAAYrsb,KAAKqsb,SAASrzJ,qBAC/Bh5R,KAAKqsb,SAASrzJ,oBAAoBruI,IAGnCohS,EA5C0B,GAsDjCQ,GAAgC,WAChC,SAASA,IACLvsb,KAAKwsb,oBAAsB,GA4D/B,OA1DAD,EAAe75Z,UAAU4yQ,KAAO,SAAUx7M,EAAQhjD,GAC9C9mC,KAAKysb,cAAgB3iW,EAAO2iW,cAAgB3iW,EAAO2iW,cAAgB3lZ,EACnE9mC,KAAK0sb,mBACL1sb,KAAK2sb,kBAAkB7iW,IAE3ByiW,EAAe75Z,UAAUk6Z,iBAAmB,WACxC,OAAO5sb,KAAKysb,eAEhBF,EAAe75Z,UAAUg6Z,iBAAmB,WACxC,IAAIhrY,EAAQ1hD,KACPA,KAAKysb,eAGVzsb,KAAKysb,cAAcp5a,QAAQ,SAAUw5a,GACL,iBAAjBA,IAGNA,EAAaC,WAIbD,EAAah+B,YAIbg+B,EAAa7pa,KAIlB0+B,EAAM8qY,oBAAoBK,EAAaC,YAAcD,EAHjD9hZ,QAAQ24B,KAAK,oEAJb34B,QAAQ24B,KAAK,2EAJb34B,QAAQ24B,KAAK,8EAczB6oX,EAAe75Z,UAAUi6Z,kBAAoB,SAAU7iW,GACnD,GAAIA,EAAOijW,cACP/sb,KAAK+sb,cAAgBjjW,EAAOijW,mBAE3B,GAAI/sb,KAAKysb,cAActob,QAAU,EAAG,CACrC,IAAI6ob,EAAoBhtb,KAAKysb,cAAc,GACV,iBAAtBO,EACPhtb,KAAK+sb,cAAgBC,EAEhBA,EAAkBF,WACvB9sb,KAAK+sb,cAAgBC,EAAkBF,WAGvC/hZ,QAAQ24B,KAAK,uFAIjB34B,QAAQ24B,KAAK,0CAGrB6oX,EAAe75Z,UAAUu6Z,iBAAmB,WACxC,OAAOjtb,KAAK+sb,eAEhBR,EAAe75Z,UAAUw6Z,gBAAkB,SAAU/rb,GACjD,OAAOnB,KAAKwsb,oBAAoBrrb,IAE7Borb,EA9DyB,GAuEhCY,IACI/jT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF4jT,GAAsD,SAAUvjT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAO5DujT,GAAgC,SAAU70W,GAE1C,SAAS60W,IACL,IAAI3rY,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAUhE,OATA0hD,EAAM4rY,aAAc,EACpB5rY,EAAM6rY,UAAY,KAOlB7rY,EAAM8rY,aAAe,KACd9rY,EAsLX,OAlMAyrY,GAAYE,EAAgB70W,GAe5B60W,EAAe36Z,UAAU+6Z,gBAAkB,WACvC1iZ,QAAQ24B,KAAK,4SACb1jE,KAAK0tb,qBAAqBC,yBAE9BN,EAAe36Z,UAAU+xX,eAAiB,WAEtC,QAASzkZ,KAAKwtb,cAElBH,EAAe36Z,UAAUk7Z,cAAgB,WACrC,IAAIC,EAA4B,8EAAiF7tb,KAAK8tb,mBAAqB,iEAAsE9tb,KAAK+tb,qBAAuB,+CAC7O/tb,KAAKinb,YAAY4G,IAErBR,EAAe36Z,UAAU4yQ,KAAO,SAAUx7M,GACtC9pF,KAAKgub,UAAUlkW,GACf9pF,KAAKiub,mBAAkB,GACvBjub,KAAKkub,qBACLlub,KAAKmub,0BAETd,EAAe36Z,UAAUs7Z,UAAY,SAAUlkW,GAE3C,GADA9pF,KAAK0tb,qBAAuB5jW,EACxBA,EAAOskW,gBAAkBf,EAAegB,qBACxCrub,KAAKsub,mBAAoB,OAExB,GAAIxkW,EAAOskW,gBAAkBf,EAAekB,sBAC7Cvub,KAAKsub,mBAAoB,MAExB,CAED,IAAIz4E,EAAe71W,KAAKwub,SAASv5P,UAEjCj1L,KAAKsub,kBADe,CAACh+C,GAAUwC,2BAA4BxC,GAAUqC,yBAC9B1pY,QAAQ4sW,IAAiB,EAEpE71W,KAAKstb,YAAcD,EAAeoB,iBAAiB3kW,GACnD9pF,KAAK0ub,kBAAkB5kW,IAE3BujW,EAAe36Z,UAAUg8Z,kBAAoB,SAAU5kW,GACnD,IAAIpoC,EAAQ1hD,KACRkkW,GAAqC,IAAvBp6Q,EAAO6kW,YACrBltT,GAAqC,IAAvB33C,EAAO8kW,YAEzB,GADuB5ub,KAAKstb,aAAeppF,GAAeziO,EACpC,CAClB,IAAI27C,EAAYp9K,KAAKoqY,mBAAmBk9B,oBACpCunB,EAAkBlkZ,SAAS9yB,cAAc,OAC7Cu6F,GAAE+tR,YAAY0uD,EAAiB,yBAC/B,IAAIC,EAAY,SAAUtlW,EAAM8iG,GAC5B,IAAI/sG,EAAS6yB,GAAE8uR,aAAwB,iFAAuF13S,EAAO,aACrIqlW,EAAgB/2a,YAAYynE,GAC5B79B,EAAM+kY,4BAA4BlnW,EAAQ,QAAS+sG,IAEnD43K,GACA4qF,EAAU1xQ,EAAU,cAAe,gBAAiB,WAAc,OAAO17H,EAAMqtY,cAE/EttT,GACAqtT,EAAU1xQ,EAAU,cAAe,gBAAiB,WAAc,OAAO17H,EAAMstY,cAE/Ehvb,KAAKstb,aACLwB,EAAU1xQ,EAAU,cAAe,gBAAiB,WAAc,OAAO17H,EAAMutY,cAEnFjvb,KAAKkvb,mBAAmBtmZ,cAAc9wB,YAAY+2a,KAI1DxB,EAAe36Z,UAAUy8Z,qBAAuB,WAC5C,OAAO,GAEX9B,EAAe36Z,UAAUy7Z,uBAAyB,WAC9C,IAAIiB,EAAa/B,EAAegC,cAAcrvb,KAAK0tb,qBAAsB1tb,KAAKmvb,wBAC9Envb,KAAKsvb,kBAAoBl9U,GAAEm6F,SAASvsM,KAAKivb,UAAU1kZ,KAAKvqC,MAAOovb,IAEnE/B,EAAe36Z,UAAU68Z,SAAW,WAChC,OAAOvvb,KAAKwtb,cAEhBH,EAAe36Z,UAAU88Z,SAAW,SAAUv1V,GACtCA,EACAj6F,KAAKyvb,eAAex1V,GAGpBj6F,KAAKiub,oBAETjub,KAAKkub,qBAILlub,KAAK0vb,cAETrC,EAAe36Z,UAAUq8Z,UAAY,WACjC/ub,KAAKiub,oBACLjub,KAAKkub,qBACLlub,KAAK2vb,eAETtC,EAAe36Z,UAAUs8Z,UAAY,WACjChvb,KAAK+ub,YACL/ub,KAAKivb,aAGT5B,EAAe36Z,UAAUg9Z,WAAa,WAClC,IAAIE,EAAkB5vb,KAAKwtb,aAI3B,OAHAxtb,KAAKwtb,aAAextb,KAAK6vb,kBAGjB7vb,KAAK8vb,eAAe9vb,KAAKwtb,aAAcoC,IAEnDvC,EAAe36Z,UAAUu8Z,UAAY,SAAUc,EAAqBC,QACpC,IAAxBD,IAAkCA,GAAsB,QACpC,IAApBC,IAA8BA,GAAkB,GAChDhwb,KAAK0vb,cAGL1vb,KAAK0tb,qBAAqBC,sBAAsB,CAAEoC,oBAAqBA,EAAqBC,gBAAiBA,IAEjH,IAAIrlb,EAAK3K,KAAK0tb,qBAAqC/ib,EAAGslb,eACjCF,GAAuB/vb,KAAKutb,YADiC5ib,EAAGulb,aAA2Bvlb,EAAGikb,eAE/G5ub,KAAKutb,YACLvtb,KAAKutb,UAAY,OAGzBF,EAAe36Z,UAAUy9Z,gBAAkB,WAClCnwb,KAAKsub,oBACNtub,KAAKiub,oBACLjub,KAAKwtb,aAAe,OAI5BH,EAAe36Z,UAAU09Z,oBAAsB,WAC3C,OAAOpwb,KAAKsub,mBAEhBjB,EAAe36Z,UAAUi9Z,YAAc,SAAUI,QACjB,IAAxBA,IAAkCA,GAAsB,GAC5D/vb,KAAKkub,qBACLlub,KAAK0tb,qBAAqB2C,yBACtBN,EAEA/vb,KAAKivb,WAAU,GAETjvb,KAAKstb,aAEXttb,KAAKsvb,qBAGbjC,EAAe36Z,UAAU04Z,iBAAmB,SAAUthW,GAClD9pF,KAAKutb,UAAYzjW,EAAOyjW,WAG5BF,EAAegC,cAAgB,SAAUvlW,EAAQwmW,GAE7C,OADkBjD,EAAeoB,iBAAiB3kW,IAErB,MAArBA,EAAOslW,YACPrkZ,QAAQ24B,KAAK,0DAEV,GAEiB,MAArBomB,EAAOslW,WAAqBtlW,EAAOslW,WAAakB,GAG3DjD,EAAeoB,iBAAmB,SAAU3kW,GAKxC,OAJIA,EAAOnyC,QAAUmyC,EAAOomW,cACxBnlZ,QAAQ24B,KAAK,gHACbomB,EAAOomW,aAAc,IAEK,IAAvBpmW,EAAOomW,aAElB7C,EAAe36Z,UAAUxR,QAAU,WAC/BlhB,KAAKutb,UAAY,KACjB/0W,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCqtb,EAAegB,qBAAuB,OACtChB,EAAekB,sBAAwB,QACvCnB,GAAa,CACTlD,GAAY,uBACbmD,EAAe36Z,UAAW,0BAAsB,GACnD06Z,GAAa,CACTzwC,GAAU,uBACX0wC,EAAe36Z,UAAW,0BAAsB,GACnD06Z,GAAa,CACTzwC,GAAU,aACX0wC,EAAe36Z,UAAW,gBAAY,GACzC06Z,GAAa,CACT9wC,IACD+wC,EAAe36Z,UAAW,gBAAiB,MACvC26Z,EAnMyB,CAoMlCj7Z,IAQEm+Z,IACInnT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFgnT,GAAsD,SAAU3mT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAW0gT,GACPA,EAAkBA,EAAiB,IAAU,GAAK,MAClDA,EAAkBA,EAAiB,IAAU,GAAK,MAFtD,CAGGA,KAAsBA,GAAoB,KAC7C,IAsQQphT,GAkGAA,GAsUAA,GA4QAA,GA4uBAA,GA6FAA,GA0EAA,GAkHAA,GA6HAA,GAqLJqnT,GAjvEAC,GAAuB,CACvBC,WAAY,aACZn9Q,MAAO,aACPxxD,OAAQ,SACR4uU,SAAU,YACVC,SAAU,YACVC,YAAa,eACb9lO,QAAS,WACT+lO,gBAAiB,sBACjBC,mBAAoB,yBACpBC,UAAW,YACXC,aAAc,OACdC,WAAY,KACZvka,SAAU,WACVwka,YAAa,eACb35R,WAAY,cACZk8G,SAAU,YACV09K,UAAW,YACX/uH,UAAW,aACXgvH,YAAa,eACbC,YAAa,eACbC,aAAc,MACdC,YAAa,MAKbC,GAA8B,SAAUl5W,GAExC,SAASk5W,IACL,OAAkB,OAAXl5W,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA8N/D,OAhOAuwb,GAAYmB,EAAcl5W,GAK1Bk5W,EAAah/Z,UAAUi/Z,cAAgB,SAAUjxb,GAC7C,OAAQV,KAAK4xb,0BAA0Blxb,IAASA,IAASgxb,EAAaxqa,OAG1Ewqa,EAAah/Z,UAAUm/Z,YAAc,SAAUnxb,GAC3C,OAAOA,IAASgxb,EAAaI,UAGjCJ,EAAah/Z,UAAUq/Z,wBAA0B,SAAUrxb,EAAMa,GAC7DvB,KAAKgyb,0BAA0Btxb,GAC/BV,KAAKiyb,2BAA2B1wb,GAChCvB,KAAK2vb,aAAY,IAErB+B,EAAah/Z,UAAUs/Z,0BAA4B,SAAUtxb,GACzDV,KAAKkyb,OAAO59S,SAAS5zI,GACrBV,KAAKmyb,OAAO79S,SAASt0I,KAAKoyb,eAAenF,oBACzCjtb,KAAKqyb,iBAAiB/9S,UAAS,IAEnCo9S,EAAah/Z,UAAUm9Z,eAAiB,WACpC,OAAK7vb,KAAKsyb,sBAAsB9H,GAAkB+H,KAG9Cvyb,KAAKwyb,wBAA0Bxyb,KAAKsyb,sBAAsB9H,GAAkBiI,KACrE,CACHC,WAAY1yb,KAAK2yb,gBACjB/mR,SAAU5rK,KAAK4yb,kBACfC,WAAY7yb,KAAK8yb,gBAAgBtI,GAAkB+H,KACnDQ,WAAY/yb,KAAK8yb,gBAAgBtI,GAAkBiI,MAGpDzyb,KAAK8yb,gBAAgBtI,GAAkB+H,KAVnC,MAYfb,EAAah/Z,UAAUsga,kBAAoB,WACvC,OAAOhzb,KAAKkyb,OAAOp2T,YAEvB41T,EAAah/Z,UAAUuga,kBAAoB,WACvC,OAAOjzb,KAAKmyb,OAAOr2T,YAEvB41T,EAAah/Z,UAAUkga,gBAAkB,WACrC,OAA2C,IAApC5yb,KAAKkzb,gBAAgBp3T,WAAsB,KAAO,OAE7D41T,EAAah/Z,UAAUo9Z,eAAiB,SAAU/za,EAAGC,GAEjD,IAAKD,IAAMC,EACP,OAAO,EAGX,IAAMD,GAAKC,GAAOD,IAAMC,EACpB,OAAO,EAGX,IAMIsc,EANA66Z,GAAap3a,EAAE6vJ,SACfwnR,GAAap3a,EAAE4vJ,SAEnB,IAD6BunR,GAAaC,GAAeD,IAAcC,EAEnE,OAAO,EAIX,GAAID,EAGA76Z,EAAMt4B,KAAKqzb,qBAFGt3a,EACAC,OAGb,CACD,IAAIs3a,EAAYv3a,EACZw3a,EAAYv3a,EAChBsc,EAAMg7Z,EAAU1nR,WAAa2nR,EAAU3nR,UAChC5rK,KAAKqzb,qBAAqBC,EAAUT,WAAYU,EAAUV,aAC1D7yb,KAAKqzb,qBAAqBC,EAAUP,WAAYQ,EAAUR,YAErE,OAAOz6Z,GAEXo5Z,EAAah/Z,UAAU+8Z,eAAiB,SAAUx1V,GAE9C,GADiBA,EAAM2xE,SACP,CACZ,IAAI4nR,EAAgBv5V,EAChBw5V,EAAuC,OAA3BD,EAAc5nR,SAC9B5rK,KAAKqyb,iBAAiB/9S,UAAUm/S,GAChCzzb,KAAKkzb,gBAAgB5+S,SAASm/S,GAC9Bzzb,KAAKkyb,OAAO59S,SAASk/S,EAAcX,WAAWnyb,MAC9CV,KAAKmyb,OAAO79S,SAASk/S,EAAcT,WAAWryb,MAC9CV,KAAK0zb,mBAAmBF,EAAcX,WAAYrI,GAAkB+H,KACpEvyb,KAAK0zb,mBAAmBF,EAAcT,WAAYvI,GAAkBiI,SAEnE,CACD,IAAIkB,EAAc15V,EAClBj6F,KAAKqyb,iBAAiB/9S,UAAS,GAC/Bt0I,KAAKkzb,gBAAgB5+S,UAAS,GAC9Bt0I,KAAKkyb,OAAO59S,SAASq/S,EAAYjzb,MACjCV,KAAKmyb,OAAO79S,SAASt0I,KAAKoyb,eAAenF,oBACzCjtb,KAAK0zb,mBAAmBC,EAAanJ,GAAkB+H,KACvDvyb,KAAK0zb,mBAAmB,KAAMlJ,GAAkBiI,OAGxDf,EAAah/Z,UAAUkha,eAAiB,SAAU9pW,GAC9C,IAAImQ,EAAQj6F,KAAKuvb,WAEjB,GADiBt1V,EAAM2xE,SACP,CACZ,IAAI4nR,EAAgBv5V,EAChB45V,EAAc7zb,KAAK8zb,0BAA0BhqW,EAAQ0pW,EAAcX,YACnEkB,EAAe/zb,KAAK8zb,0BAA0BhqW,EAAQ0pW,EAAcT,YACxE,MAA+B,QAA3BS,EAAc5nR,SACPioR,GAAeE,EAEnBF,GAAeE,EAI1B,OADa/zb,KAAK8zb,0BAA0BhqW,EAD1BmQ,IAItBy3V,EAAah/Z,UAAUs7Z,UAAY,SAAUlkW,GACzCtR,EAAO9lD,UAAUs7Z,UAAU94Z,KAAKl1B,KAAM8pF,GACtC9pF,KAAKoyb,eAAiB,IAAI7F,GAC1Bvsb,KAAKoyb,eAAe9sJ,KAAKx7M,EAAQ9pF,KAAKg0b,2BACtCh0b,KAAKi0b,oBAAsBnqW,EAAOoqW,uBAClCl0b,KAAKm0b,yBACLn0b,KAAKo0b,uBAET1C,EAAah/Z,UAAUyha,uBAAyB,WAC5C,IAAIzyY,EAAQ1hD,KACRysb,EAAgBzsb,KAAKoyb,eAAexF,mBACxCH,EAAcp5a,QAAQ,SAAUmT,GAC5B,IAAI6ta,EAAe,WACf,IAAI13a,EAAyB,iBAAX6J,EAAuBA,EAASA,EAAOsma,WAEzD,MAAO,CACHvrb,MAAOob,EACP6sE,KAHY9nC,EAAM07H,UAAUzgK,KAMpC+kC,EAAMwwY,OAAOoC,UAAUD,KACvB3yY,EAAMywY,OAAOmC,UAAUD,OAE3B,IAAInja,EAAWu7Z,EAActob,QAAU,EACvCnE,KAAKkyb,OAAOqC,YAAYrja,GACxBlxB,KAAKmyb,OAAOoC,YAAYrja,IAE5Bwga,EAAah/Z,UAAU8/Z,qBAAuB,WAC1C,OAAOxyb,KAAKi0b,oBAEhBvC,EAAah/Z,UAAUq7Z,mBAAqB,WACxC,MAAkB,+FAAqG/tb,KAAKw0b,oBAAoBhK,GAAkB+H,KAAO,2dAA6evyb,KAAKw0b,oBAAoBhK,GAAkBiI,MAErsBf,EAAah/Z,UAAUo7Z,iBAAmB,WACtC,MAAO,iBAEX4D,EAAah/Z,UAAUw7Z,mBAAqB,WACxC,IAAIuG,EAAyBz0b,KAAKsyb,sBAAsB9H,GAAkB+H,KACtEmC,EAAmB10b,KAAKi0b,oBAAsBQ,EAClDriV,GAAEyuR,aAAa7gY,KAAK20b,gBAAiBD,GACrCtiV,GAAEyuR,aAAa7gY,KAAKmyb,OAAO7rD,SAAUouD,GACrCtiV,GAAEyuR,aAAa7gY,KAAK40b,mBAAoBF,IAE5ChD,EAAah/Z,UAAUu7Z,kBAAoB,SAAUjhB,GACjD,IAAI6nB,EAAgB,2BAA6B70b,KAAKknb,YAClD9pQ,EAAYp9K,KAAKoqY,mBAAmBk9B,oBACpCylB,EAAgB/sb,KAAKoyb,eAAenF,mBACxCjtb,KAAKkyb,OAAO59S,SAASy4S,EAAe/f,GACpChta,KAAKmyb,OAAO79S,SAASy4S,EAAe/f,GACpChta,KAAKqyb,iBACA/9S,UAAS,EAAM04R,GACf8nB,QAAQD,GACRE,SAAS33Q,EAAU,eAAgB,QACxCp9K,KAAKkzb,gBACA5+S,UAAS,EAAO04R,GAChB8nB,QAAQD,GACRE,SAAS33Q,EAAU,cAAe,QAE3Cs0Q,EAAah/Z,UAAU0qJ,UAAY,SAAU43Q,GACzC,IAAI53Q,EAAYp9K,KAAKoqY,mBAAmBk9B,oBACpC2tB,EAAqBvE,GAAqBsE,GAI9C,OAHKC,GAAsBj1b,KAAKoyb,eAAelF,gBAAgB8H,KAC3DC,EAAqBj1b,KAAKoyb,eAAelF,gBAAgB8H,GAAanmC,aAEnEzxO,EAAU43Q,EAAaC,IAElCvD,EAAah/Z,UAAU0ha,oBAAsB,WACzC,IAAI1yY,EAAQ1hD,KACR0gC,EAAW,WAAc,OAAOghB,EAAMiuY,eAC1C3vb,KAAKkyb,OAAOgD,cAAcx0Z,GAC1B1gC,KAAKmyb,OAAO+C,cAAcx0Z,GAC1B1gC,KAAKkzb,gBAAgBgC,cAAcx0Z,GACnC1gC,KAAKqyb,iBAAiB6C,cAAcx0Z,IAExCgxZ,EAAah/Z,UAAUk/Z,0BAA4B,SAAUc,GACzD,IAAIyC,EAAqBn1b,KAAKoyb,eAAelF,gBAAgBwF,GAC7D,OAAOyC,GAAsBA,EAAmBC,iBAEpD1D,EAAaxqa,MAAQ,QACrBwqa,EAAa2D,OAAS,SACtB3D,EAAa4D,UAAY,WACzB5D,EAAa6D,UAAY,WACzB7D,EAAa8D,mBAAqB,kBAClC9D,EAAa+D,aAAe,cAC5B/D,EAAagE,sBAAwB,qBACrChE,EAAaI,SAAW,UACxBJ,EAAaiE,SAAW,WACxBjE,EAAakE,aAAe,cAC5BlE,EAAamE,YAAc,aAC3BnE,EAAaoE,UAAY,WACzBtF,GAAa,CACTtG,GAAY,cACbwH,EAAah/Z,UAAW,cAAU,GACrC89Z,GAAa,CACTtG,GAAY,cACbwH,EAAah/Z,UAAW,cAAU,GACrC89Z,GAAa,CACTtG,GAAY,qBACbwH,EAAah/Z,UAAW,wBAAoB,GAC/C89Z,GAAa,CACTtG,GAAY,oBACbwH,EAAah/Z,UAAW,uBAAmB,GAC9C89Z,GAAa,CACTtG,GAAY,oBACbwH,EAAah/Z,UAAW,uBAAmB,GAC9C89Z,GAAa,CACTtG,GAAY,uBACbwH,EAAah/Z,UAAW,0BAAsB,GAC1Cg/Z,EAjOuB,CAkOhCrE,IAQE0I,IACI3sT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFwsT,GAA8B,SAAUx9W,GAExC,SAASw9W,IACL,OAAkB,OAAXx9W,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAyE/D,OA3EA+1b,GAAYC,EAAcx9W,GAI1Bw9W,EAAatja,UAAUs7Z,UAAY,SAAUlkW,GACzCtR,EAAO9lD,UAAUs7Z,UAAU94Z,KAAKl1B,KAAM8pF,GACtC9pF,KAAKi2b,mBAAqBnsW,EAC1B9pF,KAAKk2b,yBAETF,EAAatja,UAAUwja,sBAAwB,WACvCl2b,KAAKi2b,mBAAmBE,iBACxBprZ,QAAQ24B,KAAK,0NAGb1jE,KAAKi2b,mBAAmBG,sBAAwBp2b,KAAKi2b,mBAAmBE,eAAen0U,OACvFhiH,KAAKi2b,mBAAmBI,wBAA0Br2b,KAAKi2b,mBAAmBE,eAAetF,SACzF7wb,KAAKi2b,mBAAmBK,2BAA6Bt2b,KAAKi2b,mBAAmBE,eAAerF,cAGpGkF,EAAatja,UAAUyja,eAAiB,SAAU3mQ,EAAgBnE,EAAakrQ,GAC3E,GAAiB,MAAbA,EACA,OAAQ/mQ,GACJ,KAAKwmQ,EAAa9ua,MACd,OAAO,EACX,KAAK8ua,EAAaX,OACd,OAAOr1b,KAAKi2b,mBAAmBG,sBAAwB,EAAI,EAC/D,KAAKJ,EAAaV,UACd,OAAOt1b,KAAKi2b,mBAAmBG,sBAAwB,EAAI,EAC/D,KAAKJ,EAAaP,aAClB,KAAKO,EAAaN,sBACd,OAAO11b,KAAKi2b,mBAAmBK,2BAA6B,GAAK,EACrE,KAAKN,EAAaT,UAClB,KAAKS,EAAaR,mBACd,OAAOx1b,KAAKi2b,mBAAmBI,yBAA2B,EAAI,EAG1E,OAAOr2b,KAAKg9C,YAALh9C,CAAkBqrL,EAAakrQ,IAE1CP,EAAatja,UAAUoha,0BAA4B,SAAUhqW,EAAQ0sW,GACjE,IAAIC,EAAYz2b,KAAKi2b,mBAAmBnnF,YAAYhlR,EAAO45D,MACvDtoG,EAAQp7C,KAAK02b,kBAAkBF,GAC/BnrQ,EAAcjwI,EAAM92C,KACpBqyb,EAAgBv7Y,EAAMo2G,GACtBkhS,EAAa8D,EAAY91b,KACzBy0b,EAAqBn1b,KAAKoyb,eAAelF,gBAAgBwF,GAC7D,GAAIyC,IAEmB,MAAf9pQ,GAAuB8pQ,EAAmBC,iBAC1C,OAAOD,EAAmBnya,KAAKqoK,EAAaorQ,GAGpD,IAAIG,EAAgB52b,KAAKm2b,eAAezD,EAAYrnQ,EAAaorQ,GACjE,OAAQ/D,GACJ,KAAKsD,EAAaX,OACd,OAAyB,IAAlBuB,EACX,KAAKZ,EAAaV,UACd,OAAyB,IAAlBsB,EACX,KAAKZ,EAAaP,aACd,OAAOmB,EAAgB,EAC3B,KAAKZ,EAAaN,sBACd,OAAOkB,GAAiB,EAC5B,KAAKZ,EAAaT,UACd,OAAOqB,EAAgB,EAC3B,KAAKZ,EAAaR,mBACd,OAAOoB,GAAiB,EAC5B,KAAKZ,EAAalE,SACd,IAAI+E,EAAkB72b,KAAKm2b,eAAezD,EAAYiE,EAAeF,GACrE,OAAOz2b,KAAKi2b,mBAAmBa,iBAC3BF,GAAiB,GAAKC,GAAmB,EACzCD,EAAgB,GAAKC,EAAkB,EAE/C,QACI,MAAM,IAAIxia,MAAM,8BAAgCq+Z,KAGrDsD,EA5EuB,CA6EhCtE,IAQEqF,IACI3tT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFwtT,GAAsD,SAAUntT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DmtT,GAA4B,SAAUz+W,GAEtC,SAASy+W,IACL,OAAkB,OAAXz+W,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAqK/D,OAvKA+2b,GAAYE,EAAYz+W,GAIxBy+W,EAAWvka,UAAUgka,kBAAoB,SAAUF,GAS/C,MAAO,CACHlyb,KAAMqkY,GAAwB6tD,EAAYU,UAC1C1lS,GAAIm3O,GAAwB6tD,EAAYW,UAGhDF,EAAWvka,UAAUu/Z,2BAA6B,SAAU1wb,GACxD,GAAa,MAATA,EAAe,CACf,IAAI21b,EAAWvuD,GAAwBpnY,GACvCvB,KAAKo3b,uBAAuB31U,QAAQy1U,QAGpCl3b,KAAKo3b,uBAAuB31U,QAAQ,MAExCzhH,KAAKq3b,qBAAqB51U,QAAQ,MAClCzhH,KAAKs3b,uBAAuB71U,QAAQ,MACpCzhH,KAAKu3b,qBAAqB91U,QAAQ,OAEtCw1U,EAAWvka,UAAUgha,mBAAqB,SAAUz5V,EAAOjwF,GACvD,IAAIW,EAAKsvF,EACL,CAAC0uS,GAAwB1uS,EAAMi9V,UAAWvuD,GAAwB1uS,EAAMk9V,SACxE,CAAC,KAAM,MAAOD,EAAWvsb,EAAG,GAAIwsb,EAASxsb,EAAG,GAC5CC,EAAK5K,KAAKw3b,oBAAoBxtb,GAA6Bytb,EAAS7sb,EAAG,GAAnBA,EAAG,GAClD62G,QAAQy1U,GACjBO,EAAOh2U,QAAQ01U,IAEnBF,EAAWvka,UAAUu7Z,kBAAoB,SAAUjhB,GAC/Cx0V,EAAO9lD,UAAUu7Z,kBAAkB/4Z,KAAKl1B,KAAMgta,GAC9Chta,KAAKo3b,uBAAuB31U,QAAQ,MACpCzhH,KAAKq3b,qBAAqB51U,QAAQ,MAClCzhH,KAAKs3b,uBAAuB71U,QAAQ,MACpCzhH,KAAKu3b,qBAAqB91U,QAAQ,OAEtCw1U,EAAWvka,UAAUsqB,WAAa,WAC9B,OAAOh9C,KAAK03b,iBAAiB16Y,WAAah9C,KAAK03b,iBAAiB16Y,WAAah9C,KAAK4+X,kBAAkBr0V,KAAKvqC,OAE7Gi3b,EAAWvka,UAAUksW,kBAAoB,SAAU+4D,EAAYlB,GAG3D,OAAiB,MAAbA,GADaA,EACqBkB,GAC1B,EAFKlB,EAIAkB,EACN,EAEJ,GAEXV,EAAWvka,UAAUs7Z,UAAY,SAAUlkW,GACvCtR,EAAO9lD,UAAUs7Z,UAAU94Z,KAAKl1B,KAAM8pF,GACtC9pF,KAAK03b,iBAAmB5tW,EACxB9pF,KAAK43b,wBAETX,EAAWvka,UAAUkla,qBAAuB,WACxC,IAAIl2Y,EAAQ1hD,KAERisb,EAAsB,CACtB4L,cAAe,WAAc,OAAOn2Y,EAAMiuY,eAC1C3iF,aAAchtW,KAAK03b,kBAEvB13b,KAAKo3b,uBAAyB,IAAIrL,GAAgB/rb,KAAKgsb,qBAAsBC,EAAqBjsb,KAAK83b,sBACvG93b,KAAKq3b,qBAAuB,IAAItL,GAAgB/rb,KAAKgsb,qBAAsBC,EAAqBjsb,KAAK+3b,oBACrG/3b,KAAKs3b,uBAAyB,IAAIvL,GAAgB/rb,KAAKgsb,qBAAsBC,EAAqBjsb,KAAKg4b,sBACvGh4b,KAAKu3b,qBAAuB,IAAIxL,GAAgB/rb,KAAKgsb,qBAAsBC,EAAqBjsb,KAAKi4b,oBACrGj4b,KAAK2mb,eAAe,WAChBjlY,EAAM01Y,uBAAuBl2a,UAC7BwgC,EAAM21Y,qBAAqBn2a,UAC3BwgC,EAAM41Y,uBAAuBp2a,UAC7BwgC,EAAM61Y,qBAAqBr2a,aAGnC+1a,EAAWvka,UAAUsha,wBAA0B,WAC3C,OAAOiD,EAAWiB,wBAEtBjB,EAAWvka,UAAU8ha,oBAAsB,SAAUxqb,GACjD,IAAIkzK,EAAMlzK,IAAawgb,GAAkB+H,IAAM,IAAM,IACrD,MAAkB,4DAAiEr1Q,EAAM,0FAAgGA,EAAM,mHAAyHA,EAAM,yDAElU+5Q,EAAWvka,UAAU4/Z,sBAAwB,SAAUtob,GACnD,IACIwc,EADcxc,IAAawgb,GAAkB+H,IACtBvyb,KAAKgzb,oBAAsBhzb,KAAKizb,oBAC3D,GAAIzsa,IAAWkra,GAAaxqa,MACxB,OAAO,EAEX,GAAIlnB,KAAK4xb,0BAA0Bpra,GAC/B,OAAO,EAEX,IAAI7b,EAAK3K,KAAKw3b,oBAAoBxtb,GAA6Bytb,EAAS9sb,EAAG,GAC3E,OAA6B,MAD2BA,EAAG,GAC3CyvC,YAAsB5zB,IAAWkra,GAAaI,UAAgC,MAApB2F,EAAOr9Y,YAErF68Y,EAAWvka,UAAU2ga,qBAAuB,SAAU8E,EAASC,GAC3D,OAAOD,EAAQjB,WAAakB,EAAQlB,UAC7BiB,EAAQhB,SAAWiB,EAAQjB,QAC3BgB,EAAQz3b,OAAS03b,EAAQ13b,MAGpCu2b,EAAWvka,UAAUiga,cAAgB,WACjC,OAAOsE,EAAWoB,aAEtBpB,EAAWvka,UAAUoga,gBAAkB,SAAU9ob,GAC7C,IACItJ,EADcsJ,IAAawgb,GAAkB+H,IACxBvyb,KAAKgzb,oBAAsBhzb,KAAKizb,oBACrDtob,EAAK3K,KAAKw3b,oBAAoBxtb,GAA6Bytb,EAAS9sb,EAAG,GAC3E,MAAO,CACHusb,SAAU1uD,GAF0C79X,EAAG,GAEtByvC,WACjC+8Y,OAAQ3uD,GAAcivD,EAAOr9Y,WAC7B15C,KAAMA,EACNgyb,WAAYuE,EAAWoB,cAG/BpB,EAAWvka,UAAU4la,iBAAmB,WACpC,IACI3tS,EADY3qJ,KAAKoqY,mBAAmBk9B,mBACtBlqP,CAAU,gBAAiB,cAC7Cp9K,KAAKo3b,uBAAuBp+J,oBAAoBruI,GAChD3qJ,KAAKq3b,qBAAqBr+J,oBAAoBruI,GAC9C3qJ,KAAKs3b,uBAAuBt+J,oBAAoBruI,GAChD3qJ,KAAKu3b,qBAAqBv+J,oBAAoBruI,IAElDssS,EAAWvka,UAAUw7Z,mBAAqB,WACtC11W,EAAO9lD,UAAUw7Z,mBAAmBh5Z,KAAKl1B,MACzCA,KAAKs4b,mBACL,IAAIC,EAAiBv4b,KAAKgzb,oBAC1BnyD,EAAa7gY,KAAK83b,qBAAsB93b,KAAK2xb,cAAc4G,IAC3D13D,EAAa7gY,KAAK+3b,mBAAoB/3b,KAAK6xb,YAAY0G,IACvD,IAAIC,EAAiBx4b,KAAKizb,oBAC1BpyD,EAAa7gY,KAAKg4b,qBAAsBh4b,KAAK2xb,cAAc6G,IAC3D33D,EAAa7gY,KAAKi4b,mBAAoBj4b,KAAK6xb,YAAY2G,KAE3DvB,EAAWvka,UAAU8ka,oBAAsB,SAAUxtb,GACjD,OAAOA,IAAawgb,GAAkB+H,IAClC,CAACvyb,KAAKo3b,uBAAwBp3b,KAAKq3b,sBACnC,CAACr3b,KAAKs3b,uBAAwBt3b,KAAKu3b,uBAE3CN,EAAWoB,YAAc,OACzBpB,EAAWiB,uBAAyB,CAChClC,GAAaX,OACbW,GAAaP,aACbO,GAAaT,UACbS,GAAaV,UACbU,GAAalE,UAEjBkF,GAAa,CACT9M,GAAY,yBACb+M,EAAWvka,UAAW,4BAAwB,GACjDska,GAAa,CACT9M,GAAY,uBACb+M,EAAWvka,UAAW,0BAAsB,GAC/Cska,GAAa,CACT9M,GAAY,yBACb+M,EAAWvka,UAAW,4BAAwB,GACjDska,GAAa,CACT9M,GAAY,uBACb+M,EAAWvka,UAAW,0BAAsB,GAC/Cska,GAAa,CACTr6C,GAAU,yBACXs6C,EAAWvka,UAAW,4BAAwB,GAC1Cuka,EAxKqB,CAyK9BjB,IAQEyC,GAA+B,WAC/B,SAASA,EAAcr1D,EAAUs1D,GAC7B,IAAIh3Y,EAAQ1hD,UACc,IAAtB04b,IAAgCA,GAAoB,GACxD14b,KAAK24b,aAAe,GACpB34b,KAAK44b,UAAW,EAChB54b,KAAK0/Y,aAAe,IAAIvC,GACxBn9Y,KAAKojY,SAAWA,EAChBpjY,KAAK04b,kBAAoBA,EACzB,IAAIG,EAAgB74b,KAAK84b,aAAavuZ,KAAKvqC,MACvC+4b,EAAe/4b,KAAKg5b,YAAYzuZ,KAAKvqC,MACrCi5b,EAAcj5b,KAAKk5b,WAAW3uZ,KAAKvqC,MACvCA,KAAKojY,SAAS93W,iBAAiB,aAAcuta,EAAe,CAAEr0S,SAAS,IACvExkJ,KAAKojY,SAAS93W,iBAAiB,YAAayta,EAAc,CAAEv0S,SAAS,IAErExkJ,KAAKojY,SAAS93W,iBAAiB,WAAY2ta,EAAa,CAAEz0S,SAAS,IACnExkJ,KAAK24b,aAAa/0b,KAAK,WACnB89C,EAAM0hV,SAASz3W,oBAAoB,aAAckta,EAAe,CAAEr0S,SAAS,IAC3E9iG,EAAM0hV,SAASz3W,oBAAoB,YAAaota,EAAc,CAAEv0S,SAAS,IACzE9iG,EAAM0hV,SAASz3W,oBAAoB,WAAYsta,EAAa,CAAEz0S,SAAS,MAsG/E,OAnGAi0S,EAAc/la,UAAUyma,eAAiB,SAAUC,GAC/C,IAAK,IAAIvxb,EAAI,EAAGA,EAAIuxb,EAAUj1b,OAAQ0D,IAElC,GADcuxb,EAAUvxb,GAAG2rB,aAAexzB,KAAKg+V,WAAWxqU,WAEtD,OAAO4la,EAAUvxb,GAGzB,OAAO,MAEX4wb,EAAc/la,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GAC5D1gC,KAAK0/Y,aAAap0X,iBAAiBiqB,EAAW7U,IAElD+3Z,EAAc/la,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GAC/D1gC,KAAK0/Y,aAAa/zX,oBAAoB4pB,EAAW7U,IAErD+3Z,EAAc/la,UAAUoma,aAAe,SAAUO,GAC7C,IAAI33Y,EAAQ1hD,KAEZ,IAAIA,KAAK44b,SAAT,CAGA54b,KAAKg+V,WAAaq7F,EAAWvqS,QAAQ,GACrC9uJ,KAAK44b,UAAW,EAChB54b,KAAKgmJ,OAAQ,EACb,IAAIszS,EAAiBt5b,KAAKg+V,WAC1B7yU,OAAOyZ,WAAW,WAEV8c,EAAMk3Y,UADSl3Y,EAAMs8S,aAAes7F,IACD53Y,EAAMskG,QACzCtkG,EAAMskG,OAAQ,EAMdtkG,EAAMg+V,aAAajnD,cALL,CACV/3V,KAAM+3b,EAAcc,eACpBv7F,WAAYt8S,EAAMs8S,WAClBq7F,WAAYA,MAIrB,OAEPZ,EAAc/la,UAAUsma,YAAc,SAAUK,GAC5C,GAAKr5b,KAAK44b,SAAV,CAGA,IAAI/nS,EAAQ7wJ,KAAKm5b,eAAeE,EAAWvqS,SACtC+B,IAGiBz+C,GAAE4jS,cAAcnlP,EAAO7wJ,KAAKg+V,WAAY,KAE1Dh+V,KAAKgmJ,OAAQ,KAGrByyS,EAAc/la,UAAUwma,WAAa,SAAUG,GACtCr5b,KAAK44b,WAGL54b,KAAKgmJ,QAKNhmJ,KAAK0/Y,aAAajnD,cAJJ,CACV/3V,KAAM+3b,EAAce,UACpBx7F,WAAYh+V,KAAKg+V,aAGrBh+V,KAAKy5b,qBAGLz5b,KAAK04b,mBACLW,EAAWnsa,iBAEfltB,KAAK44b,UAAW,IAEpBH,EAAc/la,UAAU+ma,kBAAoB,WACxC,IAAI1tY,GAAM,IAAIrR,MAAOwmE,UACjBlhH,KAAK05b,aAAe15b,KAAK05b,YAAc,GAExB3tY,EAAM/rD,KAAK05b,YACXjB,EAAckB,mBAMzB35b,KAAK0/Y,aAAajnD,cAJJ,CACV/3V,KAAM+3b,EAAcmB,iBACpB57F,WAAYh+V,KAAKg+V,aAIrBh+V,KAAK05b,YAAc,MAOvB15b,KAAK05b,YAAc3tY,GAG3B0sY,EAAc/la,UAAUxR,QAAU,WAC9BlhB,KAAK24b,aAAatlb,QAAQ,SAAU4jC,GAAQ,OAAOA,OAEvDwhZ,EAAce,UAAY,MAC1Bf,EAAcmB,iBAAmB,YACjCnB,EAAcc,eAAiB,UAC/Bd,EAAckB,kBAAoB,IAC3BlB,EAzHwB,GAkI/BoB,IACIzwT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFswT,GAAsD,SAAUjwT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DiwT,GAA4B,SAAUvhX,GAEtC,SAASuhX,IACL,IAAIr4Y,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAMs4Y,kBAAoB,EACnBt4Y,EA2OX,OA/OAm4Y,GAAYE,EAAYvhX,GAMxBuhX,EAAWrna,UAAU4yQ,KAAO,SAAUx7M,GAClC,IAAIxpF,EAAW8xG,GAAEm0R,mBAAmBz8S,EAAOxpF,SAAUy5b,EAAWpP,UAEhErqb,EAAWA,GAAYA,EAASwc,KAAOxc,EAASwc,OAASxc,EACzDN,KAAKinb,YAAY3mb,GACjBN,KAAK8pF,OAASA,EACd9pF,KAAKi6b,WACLj6b,KAAKk6b,WAAWpwW,EAAOtkF,QACvBxF,KAAKm6b,YACLn6b,KAAKo6b,YACLp6b,KAAKq6b,kBACLr6b,KAAKs6b,UAAUxwW,EAAO+kU,cAE1BkrC,EAAWrna,UAAU4na,UAAY,SAAUzrC,GACvC,IAAI0rC,EAAuBnoV,GAAE9iE,OAAOu/W,GAChC7uZ,KAAKw6b,QACLx6b,KAAKw6b,MAAM/rX,UAAY8rX,IAG/BR,EAAWrna,UAAUwna,WAAa,SAAU10b,GACxCxF,KAAKy6b,UAAU,gBAAiBz6b,KAAK06b,SAAUl1b,GAC/CxF,KAAKy6b,UAAU,iBAAkBz6b,KAAK26b,UAAWn1b,GACjDxF,KAAKy6b,UAAU,aAAcz6b,KAAK46b,UAAWp1b,GAC7CxF,KAAKy6b,UAAU,OAAQz6b,KAAK66b,MAAOr1b,GACnCxF,KAAKy6b,UAAU,SAAUz6b,KAAK86b,QAASt1b,IAE3Cu0b,EAAWrna,UAAU+na,UAAY,SAAU77K,EAAUstK,EAAS1mb,GAC1D,GAAe,MAAX0mb,EAAJ,CAGA,IAAI6O,EAAQ3oV,GAAEw9R,iBAAiBhxH,EAAU5+Q,KAAKoqY,mBAAoB5kY,GAClE0mb,EAAQp0a,YAAYijb,KAExBhB,EAAWrna,UAAUuna,SAAW,WAC5B,IAAIv4Y,EAAQ1hD,KACRgoB,EAAUhoB,KAAKoqY,mBACnB,IAAIpiX,EAAQsuZ,kBAAZ,CAGA,IAAI0kB,EAAgB,IAAIvC,GAAcz4b,KAAKsmY,UAAU,GACjD3oB,EAAmB31V,EAAQywZ,qBAC3BwiB,EAAgBt9E,GAAoBvrQ,GAAE8rR,OAAOl+X,KAAK66b,OAClDK,EAAoBD,EAAgB,IAAIxC,GAAcz4b,KAAK66b,OAAO,GAAQG,EAC1Eh7b,KAAK8pF,OAAOqxW,YAKZn7b,KAAKymb,4BAA4ByU,EAAmBzC,GAJpCwC,EAAgB,YAAc,kBAC7B,SAAU3ya,GACvBN,EAAQ+sX,SAASqmD,8BAA8B15Y,EAAMooC,OAAOtkF,OAAQ8iB,EAAM01U,cAI9Eh+V,KAAK8pF,OAAO+yR,eAUZ78W,KAAKymb,4BAA4BuU,EAAevC,GAAce,UAT5C,SAAUlxa,GAIpBq1V,GAAoBj8T,EAAMm5Y,MAAMjua,SAHvBtE,EAAM01U,WAAWxxU,SAM9Bk1B,EAAM25Y,eAAeC,aAAa55Y,EAAMooC,OAAOtkF,QAAQ,EAAO,oBAMtExF,KAAK2mb,eAAe,WAAc,OAAOqU,EAAc95a,YACnD+5a,GACAj7b,KAAK2mb,eAAe,WAAc,OAAOuU,EAAkBh6a,cAGnE64a,EAAWrna,UAAUyna,UAAY,WAC7B,IAAIz4Y,EAAQ1hD,KAEZ,GAAKA,KAAK66b,MAAV,CAMA,IAAIl9E,EAAmB39W,KAAKoqY,mBAAmBquC,qBAE/C,IADoBz4a,KAAK8pF,OAAOqxW,YAAe/oV,GAAEirR,mBAAqB1f,EAElEvrQ,GAAE6uR,iBAAiBjhY,KAAK66b,WAD5B,CAIA76b,KAAKymb,4BAA4Bzmb,KAAK66b,MAAO,QAAS,WAAc,OAAOn5Y,EAAM65Y,SAAS75Y,EAAMm5Y,SAC3Fl9E,IACD39W,KAAK66b,MAAMtvb,MAAMm2B,QAAU,KAE/B,IAAIn2B,EAAQvL,KAAK66b,MAAMtvb,MACvBA,EAAM+5M,WAAa,4BACnB/5M,EAAM,sBAAwB,+BAElCwub,EAAWrna,UAAU8oa,mBAAqB,SAAUC,GAC3Cz7b,KAAKoqY,mBAAmBquC,uBACzBz4a,KAAK66b,MAAMtvb,MAAMm2B,QAAU+5Z,EAAa,IAAM,MAGtD1B,EAAWrna,UAAU6oa,SAAW,SAAUrnY,GACtCl0D,KAAK07b,YAAYC,yBAAyB37b,KAAK8pF,OAAOtkF,OAAQ0uD,IAElE6lY,EAAWrna,UAAUkpa,gBAAkB,WACnCxpV,GAAE6uR,iBAAiBjhY,KAAK06b,UACxBtoV,GAAE6uR,iBAAiBjhY,KAAK26b,WACxBvoV,GAAE6uR,iBAAiBjhY,KAAK46b,WACxBxoV,GAAE6uR,iBAAiBjhY,KAAK67b,aAE5B9B,EAAWrna,UAAU0na,UAAY,WAC7B,IAAI14Y,EAAQ1hD,KAEZ,GADoBA,KAAK8pF,OAAO+yR,cAChC,CAIA,IAAIi/E,EAAgB97b,KAAKoqY,mBAAmBgtC,qBAE5Cp3a,KAAKymb,4BAA4Bzmb,KAAK8pF,OAAOtkF,OAAQ65Y,GAAO6D,qBAAsB,WAC9ExhW,EAAMs4Y,mBAAoB,IAAIt/Y,MAAOwmE,YAGrClhH,KAAK+7b,QACL/7b,KAAKymb,4BAA4Bzmb,KAAK+7b,OAAQ,QAAS,SAAUzza,GAI7D,IAAIi3X,EAAS79V,EAAMooC,OAAOtkF,OAAO49Y,WAC7B44C,GAAU,IAAIthZ,MAAOwmE,UAGNq+R,GADEy8C,EAAUt6Y,EAAMs4Y,kBAAqB,IAItDt4Y,EAAMooC,OAAOwxW,aADGQ,EAAiBxza,EAAM6+K,SAAW7+K,EAAM8+K,QAAW9+K,EAAMm/F,YAKrFznH,KAAKymb,4BAA4Bzmb,KAAK8pF,OAAOtkF,OAAQ65Y,GAAOkE,mBAAoBvjZ,KAAKi8b,cAAc1xZ,KAAKvqC,OACxGA,KAAKi8b,gBACLj8b,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOxL,mBAAoBvjZ,KAAKk8b,kBAAkB3xZ,KAAKvqC,OAC3GA,KAAKk8b,yBA5BDl8b,KAAK47b,mBA8Bb7B,EAAWrna,UAAUupa,cAAgB,WAUjC,GATA7pV,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,4BAA6BtmY,KAAK8pF,OAAOtkF,OAAOm+Y,mBACrFvxS,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,6BAA8BtmY,KAAK8pF,OAAOtkF,OAAOo+Y,oBACtFxxS,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,6BAA8BtmY,KAAK8pF,OAAOtkF,OAAOq+Y,cAClF7jZ,KAAK06b,UACLtoV,GAAEmuR,oBAAoBvgY,KAAK06b,SAAU,aAAc16b,KAAK8pF,OAAOtkF,OAAOm+Y,mBAEtE3jZ,KAAK26b,WACLvoV,GAAEmuR,oBAAoBvgY,KAAK26b,UAAW,aAAc36b,KAAK8pF,OAAOtkF,OAAOo+Y,oBAEvE5jZ,KAAK46b,UAAW,CAChB,IAAIuB,GAAoBn8b,KAAK8pF,OAAOtkF,OAAOuqY,YAAY3+B,aAAepxW,KAAKoqY,mBAAmBouC,eAC9FpmU,GAAEmuR,oBAAoBvgY,KAAK46b,UAAW,YAAauB,IAAqBn8b,KAAK8pF,OAAOtkF,OAAOq+Y,gBAMnGk2C,EAAWrna,UAAUwpa,kBAAoB,WACrC,GAAKl8b,KAAK67b,WAAV,CAGA,IAAI56V,EAAMjhG,KAAK8pF,OAAOtkF,OAClB42b,EAAwBp8b,KAAKq7b,eAAegB,+BAC5CC,EAAeF,EAAsBnzb,QAAQg4F,GAC7Cs7V,EAAwBH,EAAsBj4b,OAAS,EACvDq4b,EAAYv7V,EAAI6iT,aAAey4C,EACnCnqV,GAAEyuR,aAAa7gY,KAAK67b,WAAYW,GAC5BF,GAAgB,EAChBt8b,KAAK67b,WAAWptX,WAAa6tX,EAAe,GAAGrqa,WAG/CmgF,GAAE4uR,aAAahhY,KAAK67b,cAG5B9B,EAAWrna,UAAU2na,gBAAkB,WAC9Br6b,KAAK86b,UAGV96b,KAAKymb,4BAA4Bzmb,KAAK8pF,OAAOtkF,OAAQ65Y,GAAOyF,qBAAsB9kZ,KAAKytb,gBAAgBljZ,KAAKvqC,OAC5GA,KAAKytb,oBAETsM,EAAWrna,UAAU+6Z,gBAAkB,WACnC,IAAIgP,EAAgBz8b,KAAK8pF,OAAOtkF,OAAOi/Y,iBACvCryS,GAAEmuR,oBAAoBvgY,KAAK86b,QAAS,aAAc2B,IAEtD1C,EAAWpP,SAAW,45BAWtBmP,GAAa,CACTn9C,GAAU,uBACXo9C,EAAWrna,UAAW,0BAAsB,GAC/Cona,GAAa,CACTn9C,GAAU,mBACXo9C,EAAWrna,UAAW,sBAAkB,GAC3Cona,GAAa,CACTn9C,GAAU,gBACXo9C,EAAWrna,UAAW,mBAAe,GACxCona,GAAa,CACTn9C,GAAU,iBACXo9C,EAAWrna,UAAW,oBAAgB,GACzCona,GAAa,CACT5P,GAAY,YACb6P,EAAWrna,UAAW,eAAW,GACpCona,GAAa,CACT5P,GAAY,aACb6P,EAAWrna,UAAW,gBAAY,GACrCona,GAAa,CACT5P,GAAY,cACb6P,EAAWrna,UAAW,iBAAa,GACtCona,GAAa,CACT5P,GAAY,cACb6P,EAAWrna,UAAW,iBAAa,GACtCona,GAAa,CACT5P,GAAY,eACb6P,EAAWrna,UAAW,kBAAc,GACvCona,GAAa,CACT5P,GAAY,UACb6P,EAAWrna,UAAW,aAAS,GAClCona,GAAa,CACT5P,GAAY,WACb6P,EAAWrna,UAAW,cAAU,GACnCona,GAAa,CACT5P,GAAY,UACb6P,EAAWrna,UAAW,aAAS,GAC3Bqna,EAhPqB,CAiP9B3na,IAQEsqa,IACItzT,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFmzT,GAAsD,SAAU9yT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D8yT,GAAiC,SAAUpkX,GAE3C,SAASokX,IACL,OAAOpkX,EAAOtjD,KAAKl1B,KAAM48b,EAAgBjS,WAAa3qb,KA2F1D,OA7FA08b,GAAYE,EAAiBpkX,GAI7BokX,EAAgBlqa,UAAU4yQ,KAAO,SAAUx7M,GACvC9pF,KAAK8pF,OAASA,EACd9pF,KAAK68b,aACL78b,KAAK88b,qBACL98b,KAAK+8b,oBAETH,EAAgBlqa,UAAUqqa,iBAAmB,WACzC,IAAIr7Y,EAAQ1hD,KACZA,KAAKy6b,UAAU,oBAAqB,YACpCz6b,KAAKy6b,UAAU,oBAAqB,YACpC,IAAIuC,EAAe,SAAU10a,GACzB,IAAI8pF,GAAE83R,2BAA2B5hX,GAAjC,CAGA,IAAI20a,GAAoBv7Y,EAAMooC,OAAO22U,YAAY/8P,aACjDhiH,EAAM6hY,iBAAiBva,qBAAqBtnX,EAAMooC,OAAO22U,YAAYrY,yBAA0B60C,EAAkB,sBAErHj9b,KAAKk9b,0BAA0Bl9b,KAAKm9b,WAAYH,GAChDh9b,KAAKk9b,0BAA0Bl9b,KAAKo9b,UAAWJ,GAC/C,IAAIK,EAAwB,SAAU/0a,GAClC8pF,GAAE63R,yBAAyB3hX,IAO/BtoB,KAAKymb,4BAA4Bzmb,KAAKm9b,WAAY,WAAYE,GAC9Dr9b,KAAKymb,4BAA4Bzmb,KAAKo9b,UAAW,WAAYC,GAC7Dr9b,KAAKymb,4BAA4Bzmb,KAAKsmY,SAAU,WAAY02D,GAC5Dh9b,KAAKs9b,uBACL,IAAIv1C,EAAsB/nZ,KAAK8pF,OAAO22U,YAAYrY,yBAClDpoZ,KAAKymb,4BAA4B1+B,EAAqBmC,GAAoBG,uBAAwBrqZ,KAAKs9b,qBAAqB/yZ,KAAKvqC,OACjIA,KAAKymb,4BAA4B1+B,EAAqBmC,GAAoBa,yBAA0B/qZ,KAAKs9b,qBAAqB/yZ,KAAKvqC,QAEvI48b,EAAgBlqa,UAAUwqa,0BAA4B,SAAU95D,EAAUrgU,GACtE,IAAIi4X,EAAgB,IAAIvC,GAAcr1D,GACtCpjY,KAAKymb,4BAA4BuU,EAAevC,GAAce,UAAWz2X,GACzE/iE,KAAK2mb,eAAe,WAAc,OAAOqU,EAAc95a,YACvDlhB,KAAKymb,4BAA4BrjD,EAAU,QAASrgU,IAExD65X,EAAgBlqa,UAAU4qa,qBAAuB,WAE7C,GADkBt9b,KAAK8pF,OAAO22U,YACdp4P,eAAgB,CAC5B,IAAIlH,EAAWnhK,KAAK8pF,OAAO22U,YAAY/8P,aACvCtxD,GAAEyuR,aAAa7gY,KAAKo9b,UAAWj8R,GAC/B/uD,GAAEyuR,aAAa7gY,KAAKm9b,YAAah8R,QAGjC/uD,GAAEyuR,aAAa7gY,KAAKo9b,WAAW,GAC/BhrV,GAAEyuR,aAAa7gY,KAAKm9b,YAAY,IAGxCP,EAAgBlqa,UAAU+na,UAAY,SAAU77K,EAAUgrK,GACtD,IAAImR,EAAQ3oV,GAAEw9R,iBAAiBhxH,EAAU5+Q,KAAKoqY,mBAAoB,MAClEpqY,KAAK2pb,cAAcC,GAAS9xa,YAAYijb,IAE5C6B,EAAgBlqa,UAAUoqa,mBAAqB,WAC3C,IAAK98b,KAAK8pF,OAAO22U,YAAYp4P,eAGzB,OAFAj2D,GAAEyuR,aAAa7gY,KAAKo9b,WAAW,QAC/BhrV,GAAEyuR,aAAa7gY,KAAKm9b,YAAY,IAIxCP,EAAgBlqa,UAAUmqa,WAAa,WAEnC,IAAIhuC,EAAc7uZ,KAAK8pF,OAAO+kU,YAC9B,GAAIz8S,GAAE8rR,OAAO2wB,GAAc,CACvB,IAAI0rC,EAAuBnoV,GAAE9iE,OAAOu/W,GACpC7uZ,KAAK2pb,cAAc,WAAWl7W,UAAY8rX,IAGlDqC,EAAgBjS,SAAW,oXAK3BgS,GAAa,CACThgD,GAAU,qBACXigD,EAAgBlqa,UAAW,wBAAoB,GAClDiqa,GAAa,CACThgD,GAAU,uBACXigD,EAAgBlqa,UAAW,0BAAsB,GACpDiqa,GAAa,CACTzS,GAAY,aACb0S,EAAgBlqa,UAAW,iBAAa,GAC3Ciqa,GAAa,CACTzS,GAAY,aACb0S,EAAgBlqa,UAAW,kBAAc,GACrCkqa,EA9F0B,CA+FnCxqa,IAQEmra,GAAsD,SAAU1zT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D0zT,GAAyB,WACzB,SAASA,IAELx9b,KAAKy9b,eAAiB,GAEtBz9b,KAAKmvD,YAAa,EAGlBnvD,KAAKg3Y,WAAawmD,EAAQE,qBAE1B19b,KAAK29b,iBAAkB,EACvB39b,KAAK49b,YAAc,KACnB59b,KAAKivB,UAAW,EAulBpB,OArlBAuua,EAAQ9qa,UAAUyzO,QAAU,SAAUr2P,GAClC,IAAI+iF,EAAU7yF,KAAK8P,KACnB9P,KAAK8P,KAAOA,EACZ9P,KAAK4hX,WAAWi8E,gBAChB79b,KAAK89b,yBACL99b,KAAK+9b,qBACL,IAAIz1a,EAAQtoB,KAAKg+b,uBAAuBlub,EAAM+iF,GAAS,GACvD7yF,KAAKi+b,mBAAmB31a,IAK5Bk1a,EAAQ9qa,UAAUora,uBAAyB,WACnC99b,KAAKk+b,aACLl+b,KAAKk+b,WAAWpub,KAAO9P,KAAK8P,OAGpC0tb,EAAQ9qa,UAAUsra,uBAAyB,SAAU93L,EAASrzK,EAASrY,GACnE,MAAO,CACH95E,KAAM88b,EAAQW,mBACdz6S,KAAM1jJ,KACN6yF,QAASA,EACTqzK,QAASA,EACT1rL,OAAQA,IAGhBgjX,EAAQ9qa,UAAU0ra,oBAAsB,SAAU19b,GAC9C,MAAO,CACHA,KAAMA,EACNgjJ,KAAM1jJ,OAQdw9b,EAAQ9qa,UAAUq9D,WAAa,SAAUjgF,GACrC,IAAI+iF,EAAU7yF,KAAK8P,KACnB9P,KAAK8P,KAAOA,EACZ9P,KAAK89b,yBACL99b,KAAK+9b,qBACL/9b,KAAK89b,yBACL,IAAIx1a,EAAQtoB,KAAKg+b,uBAAuBlub,EAAM+iF,GAAS,GACvD7yF,KAAKi+b,mBAAmB31a,IAE5Bk1a,EAAQ9qa,UAAU2ra,kBAAoB,WAClC,OAAIr+b,KAAKs+b,YAAchuD,GAAU4C,WACtB,KAAOlzY,KAAKqK,SAEdrK,KAAKs+b,YAAchuD,GAAU6C,cAC3B,KAAOnzY,KAAKqK,SAEhBrK,KAAKqK,SAAS4nB,YAEzBura,EAAQ9qa,UAAU6ra,iBAAmB,WACjC,IAAIC,EAAU,IAAIhB,EAUlB,OATAx9b,KAAKwR,QAAQ4oY,SAASokD,GAItBA,EAAQx4a,GAAKhmB,KAAKgmB,GAClBw4a,EAAQ1ub,KAAO9P,KAAK8P,KACpB0ub,EAAQC,QAAS,EACjBD,EAAQvva,SAAWjvB,KAAKivB,SACxBuva,EAAQxoW,MAAQh2F,KAAKg2F,MACdwoW,GAEXhB,EAAQ9qa,UAAUgsa,aAAe,SAAU5ub,EAAMkW,GAC7C,IAAIw4a,EAAUpsV,GAAE8rR,OAAOl+X,KAAKgmB,IAAMhmB,KAAKu+b,mBAAqB,KACxD1rW,EAAU7yF,KAAK8P,KACnB9P,KAAK8P,KAAOA,EACZ9P,KAAK89b,yBACL99b,KAAK2+b,MAAM34a,GACXhmB,KAAK4+b,oBAAoBC,cAAc7+b,KAAMw+b,GAC7Cx+b,KAAK+9b,qBACL,IAAIz1a,EAAQtoB,KAAKg+b,uBAAuBlub,EAAM+iF,GAAS,GACvD7yF,KAAKi+b,mBAAmB31a,IAE5Bk1a,EAAQ9qa,UAAUqra,mBAAqB,WACnC,IAAIe,EAAsB9+b,KAAKoqY,mBAAmBqzC,yBAC9CshB,EAA8BD,GAAuB1sV,GAAE8rR,OAAOl+X,MAClEA,KAAKg/b,kBAAiBD,GAA8BD,EAAoB9+b,QAE5Ew9b,EAAQ9qa,UAAUssa,iBAAmB,SAAUt/T,GACvC1/H,KAAKmvD,aAAeuwE,IACpB1/H,KAAKmvD,WAAauwE,EACd1/H,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQyB,6BAI7EzB,EAAQ9qa,UAAUisa,MAAQ,SAAU34a,GAEhC,IAAIuzV,EAAev5W,KAAKoqY,mBAAmB40C,mBAKnCh/a,KAAKgmB,GAJTuzV,EAGIv5W,KAAK8P,KACKypW,EAAav5W,KAAK8P,WAMlBrL,EAIJuhB,GAGlBw3a,EAAQ9qa,UAAUwsa,eAAiB,SAAUC,GACzC,OAAOA,GAASn/b,KAAKo/b,QAAUD,EAASn/b,KAAKo/b,OAASp/b,KAAKs2W,WAE/DknF,EAAQ9qa,UAAU2sa,YAAc,WAC5Br/b,KAAKs/b,UAAYt/b,KAAKo/b,OACtBp/b,KAAKu/b,UAAU,OAEnB/B,EAAQ9qa,UAAU8sa,cAAgB,SAAU9qX,GACpC10E,KAAK00E,aAAeA,IAGxB10E,KAAK00E,WAAaA,EACd10E,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQiC,8BAGzEjC,EAAQ9qa,UAAUgta,aAAe,SAAU/8D,GACnC3iY,KAAK2iY,YAAcA,IAGvB3iY,KAAK2iY,UAAYA,EACb3iY,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQmC,6BAGzEnC,EAAQ9qa,UAAUkta,cAAgB,SAAUC,GACpC7/b,KAAK6/b,aAAeA,IAGxB7/b,KAAK6/b,WAAaA,EACd7/b,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQsC,8BAGzEtC,EAAQ9qa,UAAU6sa,UAAY,SAAUH,GAChCp/b,KAAKo/b,SAAWA,IAGpBp/b,KAAKo/b,OAASA,EACVp/b,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQuC,sBAGzEvC,EAAQ9qa,UAAUsta,YAAc,SAAUC,GAClCjgc,KAAKigc,WAAaA,IAGtBjgc,KAAKigc,SAAWA,EACZjgc,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQ0C,2BAGzE1C,EAAQ9qa,UAAUyta,eAAiB,SAAUvC,GACrCA,IAAgB59b,KAAK49b,cAGzB59b,KAAK49b,YAAcA,EACf59b,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQ4C,4BAGzE5C,EAAQ9qa,UAAU2ta,oBAAsB,SAAUC,GAC1Ctgc,KAAKsgc,mBAAqBA,IAG9Btgc,KAAKsgc,iBAAmBA,EACpBtgc,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQ+C,qCAGzE/C,EAAQ9qa,UAAU8ta,aAAe,SAAUlqF,EAAW8sE,QAChC,IAAdA,IAAwBA,GAAY,GACxCpjb,KAAKs2W,UAAYA,EACjBt2W,KAAKygc,mBAAqBrd,EACtBpjb,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQkD,wBAGzElD,EAAQ9qa,UAAUiua,YAAc,SAAUt2b,GACtCrK,KAAKqK,SAAWA,EACZrK,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQoD,2BAGzEpD,EAAQ9qa,UAAUmua,WAAa,SAAUC,GACjC9gc,KAAK8gc,UAAYA,IAGrB9gc,KAAK8gc,QAAUA,EACX9gc,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQuD,2BAGzEvD,EAAQ9qa,UAAU+2X,YAAc,SAAUtoP,GACtC,GAAInhK,KAAKmhK,WAAaA,EAAtB,CAGAnhK,KAAKmhK,SAAWA,EACZnhK,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcz4V,KAAKo+b,oBAAoBZ,EAAQnzC,yBAErE,IAAI/hY,EAAQtoB,KAAKghc,qBAAqBjyC,GAAOgB,wBAC7C/vZ,KAAKihc,iBAAiBxoG,cAAcnwU,GAChCtoB,KAAKoqY,mBAAmB0sC,wBACxB92a,KAAKmjZ,QAAQ+9C,WAAW,CAAE1qD,SAAU,CAACx2Y,UAG7Cw9b,EAAQ9qa,UAAUsua,qBAAuB,SAAUtgc,GAC/C,MAAO,CACHA,KAAMA,EACNgjJ,KAAM1jJ,KACN8P,KAAM9P,KAAK8P,KACXzF,SAAUrK,KAAKqK,SACfi0b,UAAWt+b,KAAKs+b,UAChB9sb,QAASxR,KAAKoqY,mBAAmB/lP,aACjC4lO,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,iBAG3CwoD,EAAQ9qa,UAAUura,mBAAqB,SAAU31a,GACzCtoB,KAAK0/Y,cACL1/Y,KAAK0/Y,aAAajnD,cAAcnwU,IAQxCk1a,EAAQ9qa,UAAUyua,aAAe,SAAU5jC,EAAQrrR,GAC/C,IAAI1sI,EAASxF,KAAKujb,iBAAiBtrB,iBAAiBsF,GAChDjkG,EAAWt5T,KAAKohc,aAAatlU,SAASt2H,EAAQxF,MAClDA,KAAKohc,aAAa9sT,SAASt0I,KAAMwF,EAAQ0sI,GACzClyI,KAAKqhc,yBAAyB77b,EAAQ0sI,EAAUonL,IAEpDkkI,EAAQ9qa,UAAU4ua,cAAgB,SAAU/jC,EAAQrrR,GAChD,IAAI1sI,EAASxF,KAAKujb,iBAAiB5lB,cAAcJ,GAC7CnrT,GAAEgsR,QAAQp+X,KAAKuhc,aACfvhc,KAAKuhc,UAAY,IAErB,IAAIjqb,EAAW9R,EAAOqgZ,WAClBvsF,EAAWt5T,KAAKuhc,UAAUjqb,GAC1BgiT,IAAapnL,IAGjBlyI,KAAKuhc,UAAUjqb,GAAY46H,EAC3BlyI,KAAKqhc,yBAAyB77b,EAAQ0sI,EAAUonL,KAGpDkkI,EAAQ9qa,UAAU8ua,WAAa,SAAUC,GACrC,IAAI//Y,EAAQ1hD,KAER0hc,EAAStvV,GAAEgyR,oBAAoB,CAACpkY,KAAK2hc,QAASF,IAC9CG,EAAa5hc,KAAK2hc,QACtB3hc,KAAK2hc,QAAUF,EAEXzhc,KAAK0/Y,cACLgiD,EAAOrub,QAAQ,SAAU06V,GACrB,IAAIvoW,EAASk8C,EAAM6hY,iBAAiB5lB,cAAc5vD,GAGlDrsT,EAAM2/Y,yBAAyB77b,EAFnBk8C,EAAMigZ,QAAUjgZ,EAAMigZ,QAAQ5zF,QAAStpW,EACpCm9b,EAAaA,EAAW7zF,QAAStpW,MAK5D+4b,EAAQ9qa,UAAU4kX,YAAc,WAI5B,OAAOt3Y,KAAK66I,OAAU76I,KAAKu3Y,oBAAsBv3Y,KAAKu3Y,mBAAmBpzY,OAAS,GAEtFq5b,EAAQ9qa,UAAUmva,oBAAsB,WACpC,OAAO7hc,KAAK66I,OAASzoC,GAAEosR,eAAex+X,KAAKu3Y,qBAE/CimD,EAAQ9qa,UAAU2ua,yBAA2B,SAAU77b,EAAQ0sI,EAAUonL,GAQrEt5T,KAAKi+b,mBAPkB,CACnBv9b,KAAM88b,EAAQsE,mBACdp+S,KAAM1jJ,KACNwF,OAAQA,EACR0sI,SAAUA,EACVonL,SAAUA,KAIlBkkI,EAAQ9qa,UAAUqva,8BAAgC,WAC9C/hc,KAAKgic,yBAA2B,MAEpCxE,EAAQ9qa,UAAU21I,aAAe,WAC7B,OAAOroK,KAAKs3Y,eAAiBt3Y,KAAKgyF,QAEtCwrW,EAAQ9qa,UAAUsN,WAAa,WAE3B,OAAIhgC,KAAKykE,OACEzkE,KAAK8oC,QAAQ9I,aAEjBhgC,KAAKivB,UAEhBuua,EAAQ9qa,UAAUuva,iBAAmB,SAAUhva,GACvCjzB,KAAKu3Y,oBACLv3Y,KAAKu3Y,mBAAmBlkY,QAAQ,SAAU2mI,GAAS,OAAOA,EAAMioT,iBAAiBhva,KAErFA,EAASjzB,OAIbw9b,EAAQ9qa,UAAUwva,8BAAgC,WAC9C,IAAIC,GAAqB,EACrBC,GAAuB,EACvBC,GAAkB,EAEtB,GAAIric,KAAKu3Y,mBACL,IAAK,IAAI1vY,EAAI,EAAGA,EAAI7H,KAAKu3Y,mBAAmBpzY,OAAQ0D,IAAK,CACrD,IAAImyI,EAAQh6I,KAAKu3Y,mBAAmB1vY,GAEpC,GAAKmyI,EAAM7qF,WAIX,OADiB6qF,EAAMh6G,cAEnB,KAAK,EACDmia,GAAqB,EACrB,MACJ,KAAK,EACDC,GAAuB,EACvB,MACJ,QACIC,GAAkB,GAiBlCric,KAAKsic,eAZDD,OACmB59b,KAEd09b,GAAuBC,OAGtBD,GAAsBC,SAIT39b,IAI3B+4b,EAAQ9qa,UAAU6va,wBAA0B,SAAUtza,GAClDjvB,KAAKivB,SAAWA,GAEpBuua,EAAQ9qa,UAAU8va,YAAc,SAAUtwT,EAAUuwT,EAAgBC,QACzC,IAAnBD,IAA6BA,GAAiB,QACpB,IAA1BC,IAAoCA,GAAwB,GAChE1ic,KAAK2ic,kBAAkB,CACnBzwT,SAAUA,EACVuwT,eAAgBA,EAChBC,sBAAuBA,EACvBE,aAAa,KAGrBpF,EAAQ9qa,UAAUmwa,YAAc,WAC5B,OAAO7ic,KAAKs+b,YAAchuD,GAAU4C,YAAclzY,KAAKs+b,YAAchuD,GAAU6C,eAGnFqqD,EAAQ9qa,UAAUiwa,kBAAoB,SAAU74W,GAC5C,IAAIuzR,EAAuBr9W,KAAKoqY,mBAAmB2pC,yBAC/C7hS,GAA+B,IAApBpoD,EAAOooD,SAClBuwT,GAA2C,IAA1B34W,EAAO24W,eACxBC,GAAyD,IAAjC54W,EAAO44W,sBAC/BE,GAAqC,IAAvB94W,EAAO84W,YAErB3iF,EAAuB5C,IAAyD,IAAhCvzR,EAAOm2R,qBAC3D,QAAgBx7W,IAAZzE,KAAKgmB,GAEL,OADA+kB,QAAQ24B,KAAK,0DACN,EAEX,GAAI1jE,KAAKs+b,UAEL,OADAvzZ,QAAQ24B,KAAK,sCACN,EAIX,GAAI1jE,KAAKykE,OAEL,OADYzkE,KAAK8oC,QAAQ65Z,kBAAkB74W,GAG/C,GAAI84W,EAAa,CACb,IAAIE,EAAgB9ic,KAAK4+b,oBAAoBmE,wBAA0B/ic,KACnEgjc,EAAmBhjc,KAAKoqY,mBAAmB6pC,sBAC/C,GAAI6uB,GAAiBE,EACjB,OAAOhjc,KAAKijc,sBAGpB,IAAIC,EAAe,EAsCnB,OAjCmBjjF,GAAwBjgX,KAAK66I,OAElB76I,KAAKsic,eAAepwT,IAE1CgxT,IAGJ7lF,GAAwBr9W,KAAK66I,QAC7BqoT,GAAgBljc,KAAKmjc,iBAAiBjxT,EAAU+tO,IAG/CyiF,IACqBxwT,IAAauwT,IAAmBzic,KAAKoqY,mBAAmB6pC,yBAE1EivB,GAAgBljc,KAAK4+b,oBAAoBwE,gBAAgBpjc,OAGzDkjc,EAAe,IACfljc,KAAK4+b,oBAAoByE,qCAQzBrjc,KAAKihc,iBAAiBxoG,cALR,CACV/3V,KAAMquZ,GAAOuC,wBACbrnC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAKpBh4O,GACAlyI,KAAK4+b,oBAAoB0E,oBAAoBtjc,OAG9Ckjc,GAKX1F,EAAQ9qa,UAAUuwa,oBAAsB,WACpC,IAAIM,EAAuBvjc,KAAKoqY,mBAAmB2pC,yBAC/CyvB,EAAmBxjc,KAAK4+b,oBAAoBmE,sBAC5CU,EAAgBzjc,KAAKwub,SAASkV,4BAA4B1jc,KAAMwjc,GAChEN,EAAe,EAiBnB,OAhBAO,EAAcpwb,QAAQ,SAAUqhY,GACxBA,EAAQ75P,OAAS0oT,GAGC7uD,EAAQ4tD,gBAAe,IAEzCY,MAGRljc,KAAK4+b,oBAAoByE,qCAMzBrjc,KAAKihc,iBAAiBxoG,cALV,CACR/3V,KAAMquZ,GAAOuC,wBACbrnC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,YAGbg5E,GAEX1F,EAAQ9qa,UAAUixa,eAAiB,SAAUC,GAEzC,IADA,IAAIljb,EAAa1gB,KAAK4mC,OACflmB,GAAY,CACf,GAAIA,IAAekjb,EACf,OAAO,EAEXljb,EAAaA,EAAWkmB,OAE5B,OAAO,GAEX42Z,EAAQ9qa,UAAU4va,eAAiB,SAAUpwT,GACzC,IAAKlyI,KAAKmvD,YAAcnvD,KAAKivB,WAAaijH,EACtC,OAAO,EAEXlyI,KAAKivB,SAAWijH,EACZlyI,KAAK0/Y,cACL1/Y,KAAKi+b,mBAAmBj+b,KAAKo+b,oBAAoBZ,EAAQnsC,qBAE7D,IAAI/oY,EAAQtoB,KAAKghc,qBAAqBjyC,GAAOsC,oBAE7C,OADArxZ,KAAKihc,iBAAiBxoG,cAAcnwU,IAC7B,GAEXk1a,EAAQ9qa,UAAUywa,iBAAmB,SAAUjxT,EAAU+tO,GACrD,IAAIn4W,EAAWm4W,EAAuBjgX,KAAK6jc,oBAAsB7jc,KAAKu3Y,mBACtE,IAAInlS,GAAEgsR,QAAQt2X,GAAd,CAIA,IADA,IAAIo7b,EAAe,EACVr7b,EAAI,EAAGA,EAAIC,EAAS3D,OAAQ0D,IACjCq7b,GAAgBp7b,EAASD,GAAG86b,kBAAkB,CAC1CzwT,SAAUA,EACVuwT,gBAAgB,EAChBC,uBAAuB,EACvBziF,qBAAsBA,IAG9B,OAAOijF,IAEX1F,EAAQ9qa,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GACjD1gC,KAAK0/Y,eACN1/Y,KAAK0/Y,aAAe,IAAIvC,IAE5Bn9Y,KAAK0/Y,aAAap0X,iBAAiBiqB,EAAW7U,IAElD88Z,EAAQ9qa,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GACzD1gC,KAAK0/Y,aAAa/zX,oBAAoB4pB,EAAW7U,IAErD88Z,EAAQ9qa,UAAUwoE,aAAe,WAC7Bl7F,KAAKi+b,mBAAmBj+b,KAAKo+b,oBAAoBZ,EAAQsG,qBAE7DtG,EAAQ9qa,UAAUyoE,aAAe,WAC7Bn7F,KAAKi+b,mBAAmBj+b,KAAKo+b,oBAAoBZ,EAAQuG,qBAE7DvG,EAAQ9qa,UAAUsxa,0BAA4B,SAAUC,GAOpD,IANA,IAGIC,EAHAC,EAAiBnkc,KACjBokc,GAAc,EACdC,GAAsB,EAInBD,IAAgBC,GAAqB,CACxC,IAAIC,EAAgBH,EAAev9Z,OAClBwrE,GAAE8rR,OAAOomE,IAAkBH,EAAezvX,WAEnD4vX,EAAcL,iBAAmBA,IACjCI,GAAsB,EACtBH,EAAeI,GAInBF,GAAc,EAElBD,EAAiBG,EAErB,OAAOD,EAAsBH,EAAe,MAEhD1G,EAAQ9qa,UAAU8mV,gBAAkB,WAChC,IAAI+qF,EAAsBvkc,KAAKoqY,mBAAmBovC,yBAClD,QAAO+qB,GAAsBA,EAAoBvkc,OAErDw9b,EAAQE,mBAAqB,EAC7BF,EAAQnsC,mBAAqB,cAC7BmsC,EAAQW,mBAAqB,cAC7BX,EAAQsE,mBAAqB,cAC7BtE,EAAQ+C,iCAAmC,0BAC3C/C,EAAQsG,kBAAoB,aAC5BtG,EAAQuG,kBAAoB,aAC5BvG,EAAQkD,qBAAuB,gBAC/BlD,EAAQuC,kBAAoB,aAC5BvC,EAAQiC,0BAA4B,oBACpCjC,EAAQmC,yBAA2B,mBACnCnC,EAAQsC,0BAA4B,oBACpCtC,EAAQoD,wBAA0B,kBAClCpD,EAAQnzC,uBAAyB,kBACjCmzC,EAAQyB,yBAA2B,oBACnCzB,EAAQuD,uBAAyB,iBACjCvD,EAAQ4C,wBAA0B,sBAClC5C,EAAQ0C,uBAAyB,kBACjC3C,GAAa,CACT5gD,GAAU,iBACX6gD,EAAQ9qa,UAAW,wBAAoB,GAC1C6qa,GAAa,CACT5gD,GAAU,uBACX6gD,EAAQ9qa,UAAW,0BAAsB,GAC5C6qa,GAAa,CACT5gD,GAAU,wBACX6gD,EAAQ9qa,UAAW,2BAAuB,GAC7C6qa,GAAa,CACT5gD,GAAU,qBACX6gD,EAAQ9qa,UAAW,wBAAoB,GAC1C6qa,GAAa,CACT5gD,GAAU,iBACX6gD,EAAQ9qa,UAAW,oBAAgB,GACtC6qa,GAAa,CACT5gD,GAAU,aACX6gD,EAAQ9qa,UAAW,gBAAY,GAClC6qa,GAAa,CACT5gD,GAAU,YACX6gD,EAAQ9qa,UAAW,eAAW,GACjC6qa,GAAa,CACT5gD,GAAU,eACX6gD,EAAQ9qa,UAAW,kBAAc,GACpC6qa,GAAa,CACT5gD,GAAU,cACX6gD,EAAQ9qa,UAAW,iBAAa,GACnC6qa,GAAa,CACT5gD,GAAU,YACX6gD,EAAQ9qa,UAAW,eAAW,GAC1B8qa,EAnmBkB,GA4mBzBgH,IACIp7T,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFi7T,GAAiC,SAAUjsX,GAE3C,SAASisX,IACL,IAAI/iZ,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAKhE,OAJA0hD,EAAMgjZ,eAAiB,GACvBhjZ,EAAMijZ,eAAiB,OACvBjjZ,EAAMtpB,OAAS,GACfspB,EAAMrsB,MAAQ,GACPqsB,EAyDX,OAhEA8iZ,GAAYC,EAAiBjsX,GAS7BisX,EAAgB/xa,UAAUk7Z,cAAgB,WACtCx7U,GAAE+tR,YAAYngY,KAAKsmY,SAAU,cAC7Bl0R,GAAE+tR,YAAYngY,KAAK+7b,OAAQ,YAC3B,IAAIpxb,EAAK3K,KAAKo4B,OAAQssa,EAAiB/5b,EAAG+5b,eAAgBrva,EAAQ1qB,EAAG0qB,MAAOuva,EAAaj6b,EAAGi6b,WAAYD,EAAiBh6b,EAAGg6b,eACtG,MAAlBD,GACA1kc,KAAK6kc,kBAAkBH,GAEd,MAATrva,GACAr1B,KAAK+0b,SAAS1/Z,GAEA,MAAduva,GACA5kc,KAAK8kc,cAAcF,GAEvB5kc,KAAK+kc,kBAAkBJ,GAAkB3kc,KAAK2kc,gBAC9C3kc,KAAKglc,gBAETP,EAAgB/xa,UAAUsya,aAAe,WACrChlc,KAAK+7b,OAAO7/J,UAAYl8R,KAAKq1B,MAAQr1B,KAAK0kc,eAC1CtyV,GAAEmuR,oBAAoBvgY,KAAK+7b,OAAQ,YAA4B,KAAf/7b,KAAKq1B,QAEzDova,EAAgB/xa,UAAUmya,kBAAoB,SAAUH,GACpD,OAAI1kc,KAAK0kc,iBAAmBA,IAG5B1kc,KAAK0kc,eAAiBA,EACJ,MAAd1kc,KAAKq1B,OACLr1B,KAAKglc,gBAJEhlc,MAQfykc,EAAgB/xa,UAAUqia,SAAW,SAAU1/Z,GAC3C,OAAIr1B,KAAKq1B,QAAUA,IAGnBr1B,KAAKq1B,MAAQA,EACbr1B,KAAKglc,gBAHMhlc,MAMfykc,EAAgB/xa,UAAUqya,kBAAoB,SAAUE,GACpD,IAAI/c,EAAOlob,KAAKsmY,SAIhB,OAHAl0R,GAAEmuR,oBAAoB2nD,EAAM,sBAAqC,SAAd+c,GACnD7yV,GAAEmuR,oBAAoB2nD,EAAM,uBAAsC,UAAd+c,GACpD7yV,GAAEmuR,oBAAoB2nD,EAAM,qBAAoC,QAAd+c,GAC3Cjlc,MAEXykc,EAAgB/xa,UAAUoya,cAAgB,SAAUp7b,GAChD,OAAkB,MAAd1J,KAAKq1B,OAGT+8E,GAAEoxR,gBAAgBxjY,KAAK+7b,OAAQryb,GAFpB1J,MA/DuC,SAAU6pI,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAgExDo7T,CAAa,CACT5oD,IACDmoD,EAAgB/xa,UAAW,gBAAiB,MACxC+xa,EAjE0B,CAkEnCrya,IAQE+ya,IACI/7T,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF47T,GAAiC,SAAU5sX,GAE3C,SAAS4sX,IACL,IAAI1jZ,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAEhE,OADA0hD,EAAM10B,UAAW,EACV00B,EA+CX,OAnDAyjZ,GAAYC,EAAiB5sX,GAM7B4sX,EAAgB1ya,UAAUk7Z,cAAgB,WACtCp1W,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MACpCoyG,GAAE+tR,YAAYngY,KAAKsmY,SAAUtmY,KAAK6nB,YAEtCu9a,EAAgB1ya,UAAUwia,cAAgB,SAAUmQ,GAChD,IAAI3jZ,EAAQ1hD,KAIZ,OAHAA,KAAKymb,4BAA4Bzmb,KAAMolc,EAAgBE,cAAe,WAClED,EAAW3jZ,EAAMo6E,cAEd97H,MAEXolc,EAAgB1ya,UAAU0kD,SAAW,WACjC,OAAOp3E,KAAKsmY,SAASvzT,aAEzBqyX,EAAgB1ya,UAAUgyL,SAAW,SAAUh7M,GAE3C,OADA0oG,GAAEqvR,cAAczhY,KAAKsmY,SAAU58X,GACxB1J,MAEXolc,EAAgB1ya,UAAUopG,SAAW,WACjC,OAAO97H,KAAKuB,OAEhB6jc,EAAgB1ya,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GAClD,OAAIhta,KAAKuB,QAAUA,IAGnBvB,KAAKuB,MAAQA,EACRyra,GACDhta,KAAKy4V,cAAc,CAAE/3V,KAAM0kc,EAAgBE,iBAJpCtlc,MAQfolc,EAAgB1ya,UAAU6ha,YAAc,SAAUvna,GAC9CA,IAAaA,EACb,IAAIk7Z,EAAOlob,KAAKsmY,SAMhB,OALIt5W,GACAk7Z,EAAKr5a,aAAa,WAAY,QAElCujG,GAAEmuR,oBAAoB2nD,EAAM,cAAel7Z,GAC3ChtB,KAAKgtB,SAAWA,EACThtB,MAEXolc,EAAgB1ya,UAAU3F,WAAa,WACnC,QAAS/sB,KAAKgtB,UAElBo4a,EAAgBE,cAAgB,cACzBF,EApD0B,CAqDnCX,IAQEc,IACIn8T,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFg8T,GAAsD,SAAU37T,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D27T,GAAsC,SAAUjtX,GAEhD,SAASitX,IACL,IAAI/jZ,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAGhE,OAFA0hD,EAAMtpB,OAAS,GACfspB,EAAMipY,SAAW,wUACVjpY,EAgFX,OArFA6jZ,GAAYE,EAAsBjtX,GAOlCitX,EAAqB/ya,UAAUk7Z,cAAgB,WAC3Cp1W,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MACpCA,KAAK0lc,eACLtzV,GAAE+tR,YAAYngY,KAAK+7b,OAAQ/7b,KAAK6nB,UAAY,UAC5CuqF,GAAE+tR,YAAYngY,KAAK2lc,SAAU3lc,KAAK6nB,UAAY,kBAC9CuqF,GAAE+tR,YAAYngY,KAAK6qb,OAAQ7qb,KAAK6nB,UAAY,UAC5CuqF,GAAE+tR,YAAYngY,KAAKsmY,SAAU,kBAC7B,IAAI/yR,EAAUvzG,KAAK6qb,OAAO7ka,GAAKhmB,KAAK6qb,OAAO7ka,GAAK,eAAiBhmB,KAAKknb,YACtElnb,KAAK+7b,OAAO6J,QAAUryV,EACtBvzG,KAAK6qb,OAAO7ka,GAAKutF,EACjB,IAAI5oG,EAAK3K,KAAKo4B,OAAQ1uB,EAAQiB,EAAGjB,MAAOnI,EAAQoJ,EAAGpJ,MACtC,MAATmI,GACA1J,KAAK0kN,SAASh7M,GAEL,MAATnI,GACAvB,KAAKs0I,SAAS/yI,GAElBvB,KAAK6lc,qBAETJ,EAAqB/ya,UAAUmza,kBAAoB,WAC/C,IAAInkZ,EAAQ1hD,KACZA,KAAKymb,4BAA4Bzmb,KAAK6qb,OAAQ,QAAS,SAAU52Z,GAE7DytB,EAAM4yF,SADMrgH,EAAEzH,OAAOjrB,UAI7Bkkc,EAAqB/ya,UAAUgza,aAAe,WACtC1lc,KAAK62R,WACL72R,KAAK6qb,OAAOh8a,aAAa,OAAQ7O,KAAK62R,YAG9C4uK,EAAqB/ya,UAAU44Z,gBAAkB,WAC7C,OAAOtrb,KAAK6qb,QAEhB4a,EAAqB/ya,UAAUoza,cAAgB,SAAUp8b,GAErD,OADA0oG,GAAEoxR,gBAAgBxjY,KAAK2lc,SAAUj8b,GAC1B1J,MAEXylc,EAAqB/ya,UAAUqza,aAAe,SAAU5kc,GAEpD,OADAnB,KAAKsrb,kBAAkBz8a,aAAa,OAAQ1N,GACrCnB,MAEXylc,EAAqB/ya,UAAUo2Z,oBAAsB,WACjD,OAAO9ob,KAAK6qb,QAEhB4a,EAAqB/ya,UAAUsza,aAAe,SAAU7hc,GAGpD,OAFanE,KAAK6qb,OACX57S,UAAY9qI,EACZnE,MAEXylc,EAAqB/ya,UAAUsmQ,oBAAsB,SAAUruI,GAC3D,IAAIkgS,EAAS7qb,KAAK6qb,OAOlB,OANIlgS,EACAkgS,EAAOh8a,aAAa,cAAe87I,GAGnCkgS,EAAOpiZ,gBAAgB,eAEpBzoC,MAEXylc,EAAqB/ya,UAAU6ha,YAAc,SAAUvna,GAOnD,OANIA,EACAhtB,KAAK6qb,OAAOh8a,aAAa,WAAY,QAGrC7O,KAAK6qb,OAAOpiZ,gBAAgB,YAEzB+vC,EAAO9lD,UAAU6ha,YAAYr/Z,KAAKl1B,KAAMgtB,IAEnDw4a,GAAa,CACTtb,GAAY,WACbub,EAAqB/ya,UAAW,cAAU,GAC7C8ya,GAAa,CACTtb,GAAY,aACbub,EAAqB/ya,UAAW,gBAAY,GAC/C8ya,GAAa,CACTtb,GAAY,WACbub,EAAqB/ya,UAAW,cAAU,GACtC+ya,EAtF+B,CAuFxCL,IAQEa,IACI78T,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF08T,GAAsD,SAAUr8T,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dq8T,GAA4B,SAAU3tX,GAEtC,SAAS2tX,IACL,IAAIzkZ,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KASjC,OARA0hD,EAAM75B,UAAY,cAClB65B,EAAM0kZ,WAAa,QACnB1kZ,EAAMm1O,UAAY,WAClBn1O,EAAMijZ,eAAiB,QACvBjjZ,EAAMzyB,UAAW,EACjByyB,EAAMxwB,UAAW,EACjBwwB,EAAM8iG,SAAU,EAChB9iG,EAAMulY,YAAYvlY,EAAMipY,SAASnpb,QAAQ,kBAAmBkgD,EAAM0kZ,aAC3D1kZ,EAqFX,OAhGAukZ,GAAYE,EAAY3tX,GAaxB2tX,EAAWzza,UAAUmza,kBAAoB,WACrC7lc,KAAKymb,4BAA4Bzmb,KAAK6qb,OAAQ,QAAS7qb,KAAKqmc,gBAAgB97Z,KAAKvqC,QAErFmmc,EAAWzza,UAAU4za,aAAe,WAChC,YAAyB7hc,IAAlBzE,KAAKivB,WAAiCjvB,KAAKivB,UAEtDk3a,EAAWzza,UAAU6za,WAAa,SAAU/hT,GACxCxkJ,KAAKwkJ,QAAUA,GAEnB2hT,EAAWzza,UAAU8za,WAAa,WAC9B,OAAOxmc,KAAKkxB,UAEhBi1a,EAAWzza,UAAU+za,YAAc,SAAUv1a,GACzCkhF,GAAEmuR,oBAAoBvgY,KAAK2lc,SAAU,cAAez0a,GACpDlxB,KAAK6qb,OAAO79Z,SAAWkE,EACvBlxB,KAAKkxB,SAAWA,GAEpBi1a,EAAWzza,UAAU6ha,YAAc,SAAUvna,GAEzC,OADAolF,GAAEmuR,oBAAoBvgY,KAAK2lc,SAAU,cAAe34a,GAC7CwrD,EAAO9lD,UAAU6ha,YAAYr/Z,KAAKl1B,KAAMgtB,IAEnDm5a,EAAWzza,UAAU+wI,OAAS,WAC1B,IAAI7mC,EAAY58H,KAAKsmc,eACjBtmc,KAAKwkJ,QACLxkJ,KAAK0mc,eAAe9pU,GAGpB58H,KAAKs0I,SAAS1X,IAGtBupU,EAAWzza,UAAUopG,SAAW,WAC5B,OAAO97H,KAAKggC,cAEhBmma,EAAWzza,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GAG7C,OAFAhta,KAAK2mc,qBAAqBplc,GAC1BvB,KAAKwic,YAAYjhc,EAAOyra,GACjBhta,MAEXmmc,EAAWzza,UAAUoia,QAAU,SAAU3zb,GAGrC,OAFYnB,KAAKsrb,kBACXnqb,KAAOA,EACNnB,MAEXmmc,EAAWzza,UAAUsN,WAAa,WAC9B,OAAOhgC,KAAKivB,UAEhBk3a,EAAWzza,UAAU8va,YAAc,SAAUvza,EAAU+9Y,GAC/Chta,KAAKggC,eAAiB/Q,IAG1BjvB,KAAKivB,SAA+B,kBAAbA,EAAyBA,OAAWxqB,EAC3DzE,KAAK6qb,OAAO74U,QAAUhyG,KAAKivB,SAC3BjvB,KAAK6qb,OAAOxiF,mBAAkC5jW,IAAlBzE,KAAKivB,SAC5B+9Y,GACDhta,KAAK0mc,eAAe1mc,KAAKivB,YAGjCk3a,EAAWzza,UAAUg0a,eAAiB,SAAUz3a,EAAU3G,GACtDtoB,KAAKy4V,cAAc,CAAE/3V,KAAMylc,EAAWb,cAAer2a,SAAUA,EAAU3G,MAAOA,IAChF,IAAIk2B,EAAQx+C,KAAKsrb,kBAOjBtrb,KAAK0/Y,aAAajnD,cANS,CACvB/3V,KAAMquZ,GAAOuD,uBACbtsY,GAAIw4B,EAAMx4B,GACV7kB,KAAMq9C,EAAMr9C,KACZ8tB,SAAUA,KAIlBk3a,EAAWzza,UAAU2za,gBAAkB,SAAUpya,GAC7Cj0B,KAAKivB,SAAWgF,EAAEzH,OAAOwlF,QACzBhyG,KAAK2mc,qBAAqB3mc,KAAKivB,UAC/BjvB,KAAK0mc,eAAe1mc,KAAKivB,SAAUgF,IAEvCkya,EAAWzza,UAAUi0a,qBAAuB,SAAUplc,GAClD6wG,GAAEmuR,oBAAoBvgY,KAAK2lc,SAAU,cAAwB,IAAVpkc,GACnD6wG,GAAEmuR,oBAAoBvgY,KAAK2lc,SAAU,mBAA6B,MAATpkc,IAE7D2kc,GAAa,CACTvpD,GAAU,uBACXwpD,EAAWzza,UAAW,0BAAsB,GAC/Cwza,GAAa,CACTvpD,GAAU,iBACXwpD,EAAWzza,UAAW,oBAAgB,GAClCyza,EAjGqB,CAkG9BV,IAQEmB,IACIx9T,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFq9T,GAAsD,SAAUh9T,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dg9T,GAA4C,SAAUtuX,GAEtD,SAASsuX,IACL,OAAOtuX,EAAOtjD,KAAKl1B,KAAM,6GAAqHA,KA8ElJ,OAhFA4mc,GAAYE,EAA4BtuX,GAIxCsuX,EAA2Bp0a,UAAUmra,cAAgB,WAGjD79b,KAAK+mc,sBAETD,EAA2Bp0a,UAAUs0a,oBAAsB,WACvDhnc,KAAKinc,oBAETH,EAA2Bp0a,UAAUq0a,mBAAqB,WACtD,IAAI1+b,EAAQrI,KAAK00Y,QAAQ10W,aACzBhgC,KAAK6jY,UAAUvvP,SAASjsI,GAAO,IAEnCy+b,EAA2Bp0a,UAAUw0a,iBAAmB,WACpD,IAAIjnF,EAAuBjgX,KAAKoqY,mBAAmBusC,yBAEnD,OADmB32a,KAAK00Y,QAAQiuD,kBAAkB,CAAEzwT,UAAU,EAAO+tO,qBAAsBA,KAG/F6mF,EAA2Bp0a,UAAUy0a,mBAAqB,SAAU7+a,GAChE,IAAI23V,EAAuBjgX,KAAKoqY,mBAAmBusC,yBAEnD,OADmB32a,KAAK00Y,QAAQiuD,kBAAkB,CAAEzwT,UAAU,EAAM0wT,YAAat6a,EAAMm/F,SAAUw4P,qBAAsBA,KAG3H6mF,EAA2Bp0a,UAAU4yQ,KAAO,SAAUx7M,GAClD,IAAIpoC,EAAQ1hD,KACZA,KAAK00Y,QAAU5qT,EAAO4qT,QACtB10Y,KAAKwF,OAASskF,EAAOtkF,OACrBxF,KAAK+mc,qBAGL/mc,KAAK0pb,oBAAoB,QAAS,SAAUpha,GAAS,OAAO8pF,GAAE63R,yBAAyB3hX,KAEvFtoB,KAAK0pb,oBAAoB,WAAY,SAAUpha,GAAS,OAAO8pF,GAAE63R,yBAAyB3hX,KAC1FtoB,KAAKymb,4BAA4Bzmb,KAAK6jY,UAAWsiE,GAAWb,cAAe,SAAUx7W,GAC7EA,EAAO76D,SACPyyB,EAAMylZ,mBAAmBr9W,EAAOxhE,OAAS,IAGzCo5B,EAAMwlZ,qBAGdlnc,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQnsC,mBAAoBrxZ,KAAK+mc,mBAAmBx8Z,KAAKvqC,OACxGA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQW,mBAAoBn+b,KAAK69b,cAActzZ,KAAKvqC,OACnGA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQyB,yBAA0Bj/b,KAAKgnc,oBAAoBz8Z,KAAKvqC,OAC/GA,KAAK8+b,oBAAsB9+b,KAAKoqY,mBAAmBqzC,0BACpBz9a,KAAK8+b,qBAAuB9+b,KAAKonc,4BAE5Dpnc,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOc,gCAAiC7vZ,KAAKinc,iBAAiB18Z,KAAKvqC,OACvHA,KAAKinc,qBAGbH,EAA2Bp0a,UAAUu0a,iBAAmB,WAEpD,IAAI93Y,EAAanvD,KAAK00Y,QAAQvlV,WAI1BA,GAAcnvD,KAAKonc,2BACnBj4Y,EAAanvD,KAAKwF,OAAOq9Y,wBAAwB7iZ,KAAK00Y,UAG1D10Y,KAAK6gY,aAAa1xU,IAEtB23Y,EAA2Bp0a,UAAU00a,uBAAyB,WAE1D,IAAIv7F,EAAS7rW,KAAKwF,OAASxF,KAAKwF,OAAOuqY,YAAc,KACrD,OAAOlkC,GAA8C,mBAA7BA,EAAO6E,mBAEnCm2F,GAAa,CACTlqD,GAAU,uBACXmqD,EAA2Bp0a,UAAW,0BAAsB,GAC/Dm0a,GAAa,CACTlqD,GAAU,iBACXmqD,EAA2Bp0a,UAAW,oBAAgB,GACzDm0a,GAAa,CACT3c,GAAY,cACb4c,EAA2Bp0a,UAAW,iBAAa,GAC/Co0a,EAjFqC,CAkF9C10a,IAQEiqD,GAAgB,CAChB8xE,aAAc,gBACdk5S,eAAgB,WAAc,OAAO,IAErCC,GAAkB,CAClBn5S,aAAc,kBACdk5S,eAAgB,WAAc,OAAO,IAErCE,GAAuB,CACvBp5S,aAAc,uBACdk5S,eAAgB,WAAc,OAAO,IAErCG,GAAiC,CACjCr5S,aAAc,wBACdk5S,eAAgB,WAAc,OAAO,IAErCI,GAAwB,CACxBt5S,aAAc,eACdk5S,eAAgB,WAAc,OAAO,IAErCK,GAAiC,CACjCv5S,aAAc,wBACdk5S,eAAgB,WAAc,OAAO,IAErCM,GAAsB,CACtBx5S,aAAc,aACdk5S,eAAgB,WAAc,OAAO,IAErCO,GAAyB,CACzBz5S,aAAc,gBACdk5S,eAAgB,WAAc,OAAO,IAErCQ,GAA0B,CAC1B15S,aAAc,0BACdk5S,eAAgB,WAAc,OAAO,IAErCS,GAAyB,CACzB35S,aAAc,yBACdk5S,eAAgB,WAAc,OAAO,IAErChyJ,GAAmB,CACnBlnJ,aAAc,mBACdk5S,eAAgB,WAAc,OAAO,IAErCU,GAAkB,CAClB55S,aAAc,SACdk5S,eAAgB,WAAc,OAAO,IAErCW,GAA0B,CAC1B75S,aAAc,0BACdk5S,eAAgB,WAAc,OAAO,IAErCY,GAAqB,CACrB95S,aAAc,YACdk5S,eAAgB,WAAc,OAAO,IAErCa,GAAuB,CACvB/5S,aAAc,cACdk5S,eAAgB,WAAc,OAAO,IASrCc,GAAsD,SAAUt+T,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAW2mT,GACPA,EAAgBA,EAAe,QAAc,GAAK,UAClDA,EAAgBA,EAAe,mBAAyB,GAAK,qBAC7DA,EAAgBA,EAAe,UAAgB,GAAK,YAHxD,CAIGA,KAAoBA,GAAkB,KACzC,IA4XQrnT,GAkeAA,GAkHAA,GAuGAA,GAoDAA,GA6EAA,GA8BAA,GA8BAA,GAmEAA,GAyMAA,GA4CAA,GA4CAA,GAgCAA,GAuEAA,GA2GAA,GA+GAA,GA6LAA,GA6FAA,GAyCAA,GA6CJg/T,GAzwEAC,GAAsC,WACtC,SAASA,KAiXT,OA/WAA,EAAqB31a,UAAU05Z,iBAAmB,SAAUtiW,GACxD,OAAO9pF,KAAKsoc,2BAA2Btoc,KAAK0pX,YAAa5/R,EAAQzN,GAAe,gBAEpFgsX,EAAqB31a,UAAU61a,mBAAqB,SAAUz+W,GAC1D,OAAO9pF,KAAKsoc,2BAA2Bx+W,EAAOtkF,OAAOuqY,YAAajmT,EAAQw9W,GAAiB,mBAE/Fe,EAAqB31a,UAAU81a,wBAA0B,SAAU1+W,GAC/D,OAAO9pF,KAAKsoc,2BAA2Bx+W,EAAO22U,YAAYlX,iBAAkBz/T,EAAQy9W,GAAsB,wBAE9Gc,EAAqB31a,UAAU+1a,sCAAwC,SAAU3+W,GAC7E,OAAO9pF,KAAKsoc,2BAA2Btoc,KAAK0pX,YAAa5/R,EAAQ09W,GAAgC,MAAM,IAI3Ga,EAAqB31a,UAAUg2a,yBAA2B,SAAU5+W,EAAQ6+W,EAAkBC,GAC1F,OAAO5oc,KAAKsoc,2BAA2B,KAAMx+W,EAAQ,CACjDqkE,aAAcw6S,EACdtB,eAAgB,WAAc,OAAO,IACtCuB,IAEPP,EAAqB31a,UAAUm2a,gBAAkB,SAAUr8a,EAAQs9D,EAAQy7T,GAEvE,YADiB,IAAbA,IAAuBA,GAAW,GAC/BvlZ,KAAKsoc,2BAA2B97a,EAAQs9D,EAAQy7T,EAAWmiD,GAAiCD,GAAuB,MAAM,IAEpIY,EAAqB31a,UAAUo2a,cAAgB,SAAUj9F,EAAQ/hR,GAC7D,OAAO9pF,KAAKsoc,2BAA2Bz8F,EAAQ/hR,EAAQ69W,GAAqB,iBAEhFU,EAAqB31a,UAAUq2a,qBAAuB,SAAUv8a,EAAQs9D,GACpE,OAAO9pF,KAAKsoc,2BAA2B97a,EAAQs9D,EAAQ89W,GAAwB,OAEnFS,EAAqB31a,UAAUs2a,2BAA6B,SAAUl/W,GAClE,OAAO9pF,KAAKsoc,2BAA2Btoc,KAAK0pX,YAAa5/R,EAAQ+9W,GAAyB,qBAE9FQ,EAAqB31a,UAAUu2a,0BAA4B,SAAUn/W,GACjE,OAAO9pF,KAAKsoc,2BAA2Btoc,KAAK0pX,YAAa5/R,EAAQg+W,GAAwB,oBAE7FO,EAAqB31a,UAAUw2a,oBAAsB,SAAUp/W,GAC3D,OAAO9pF,KAAKsoc,2BAA2Bx+W,EAAO+hR,OAAQ/hR,EAAQurN,GAAkB,uBAEpFgzJ,EAAqB31a,UAAUy2a,mBAAqB,SAAUt9F,EAAQ/hR,EAAQs/W,EAAeC,GACzF,OAAOrpc,KAAKsoc,2BAA2Bz8F,EAAQ/hR,EAAQi+W,GAAiBqB,GAAe,EAAOC,IAElGhB,EAAqB31a,UAAU42a,yBAA2B,SAAU98a,EAAQs9D,GACxE,OAAO9pF,KAAKsoc,2BAA2B97a,EAAQs9D,EAAQ29W,GAAuB,MAAM,IAExFY,EAAqB31a,UAAU62a,2BAA6B,SAAU19F,EAAQ/hR,EAAQ0/W,GAClF,OAAOxpc,KAAKsoc,2BAA2Bz8F,EAAQ/hR,EAAQk+W,GAAyBwB,GAAuB,IAE3GnB,EAAqB31a,UAAU+2a,sBAAwB,SAAUC,EAAc5/W,GAC3E,OAAO9pF,KAAKsoc,2BAA2BoB,EAAc5/W,EAAQm+W,KAEjEI,EAAqB31a,UAAUi3a,wBAA0B,SAAU12b,EAAK62E,GACpE,OAAO9pF,KAAKsoc,2BAA2Br1b,EAAK62E,EAAQo+W,KAkBxDG,EAAqB31a,UAAU41a,2BAA6B,SAAUsB,EAAkBC,EAAgBn3F,EAAeo3F,EAEvH11a,EAEAi1a,QACqB,IAAbj1a,IAAuBA,GAAW,GACjCw1a,IACDA,EAAmB5pc,KAAK0pX,aAG5B,IAAIqgF,EAAqB/pc,KAAKgqc,wBAAwBJ,EAAkBl3F,EAAem3F,EAAgBC,EAAsB11a,GAC7H,IAAK21a,EACD,OAAO,KAEX,IAAIzla,EAAoByla,EAAmBzla,kBAEvCwlD,EAAS9pF,KAAKiqc,kBAAkBL,EAAkBl3F,EAAcvkN,aAAc07S,EAAgBE,EAAmBG,oBACrHlqc,KAAKmqc,cAAcrgX,GAGnB,IAAIsgX,EAAsBf,EAAuBA,EAAqBv/W,EAAQxlD,GAAqBwlD,EAC/FugX,EAAerqc,KAAKsqc,cAAchma,EAAmB8la,GACzD,OAAoB,MAAhBC,EAOO9lc,GAAQC,QAAQ8/B,GAGP+la,EACC5gc,IAAI,SAAU2oG,GAAK,OAAO9tE,KAGnD+ja,EAAqB31a,UAAUy3a,cAAgB,SAAUrgX,GAGrD,IAAIygX,EAAcvqc,KAAKwR,QAAQ0qY,QAAQ,eACnCquD,IACAzgX,EAAOygX,YAAcn4V,GAAE6xR,YAAYsmE,IAGvC,IAAIn3F,EAA4BpzW,KAAKwR,QAAQ0qY,QAAQ,6BACjD9oC,IACAtpR,EAAOspR,0BAA4BA,IAY3Ci1F,EAAqB31a,UAAU83a,qCAAuC,SAAUC,EAAOC,GACnF,IAAIC,EAAoB,IAAIF,EAE5B,OADAzqc,KAAKsqc,cAAcK,EAAmBD,GAC/BC,GAmBXtC,EAAqB31a,UAAUk4a,wBAA0B,SAAUhB,EAAkBz7S,EAAcrkE,EAAQggX,QACxF,IAAXhgX,IAAqBA,EAAS,MASlC,IAII+gX,EAJAC,EAAyB,KACzBC,EAAuB,KACvBC,EAAsB,KACtBC,EAAuB,KAE3B,GAAwB,MAApBrB,EAA0B,CAC1B,IAAIsB,EAAyBtB,EAAiBz7S,GAGhB,MAA1B+8S,IADmD,IAA3BA,IAEc,iBAA3BA,EACPJ,EAAyBI,EAEc,kBAA3BA,IACPlrc,KAAKmrc,iBAAiBC,wBAAwBF,GACnDH,EAAuBG,EAGvBF,EAAsBE,IAG9BD,EAAuBrB,EAAiBz7S,EAAe,aACvD08S,EAAwBjB,EAAiBz7S,EAAe,YAM5D,GAAK48S,GAAwBE,GACxBH,GAA0BG,GAC1BD,GAAuBC,EACxB,MAAM52a,MAAM,uCAAyC85H,EAAe,0BAExE,GAAI88S,IAAyBjrc,KAAKozW,0BAC9B,MAAM/+U,MAAM,gHAAkH85H,GAElI,GAAI08S,IAA0BC,GAA0BC,GAAwBC,GAAuBC,GACnG,MAAM52a,MAAM,oFAAsF85H,GAYtG,GAAI88S,EAGA,MAAO,CACHI,wBAAwB,EACxBpsb,UAAWgsb,EACX1kb,OAAQkqa,GAAgB6a,UACxBpB,mBAAoB,MAG5B,GAAIa,EAGA,MAAO,CACHM,wBAAwB,EACxBpsb,UAAW8rb,EACXxkb,OAAQkqa,GAAgB6a,UACxBpB,mBAAoB,MAG5B,GAAIc,EAGA,OAAOhrc,KAAKmrc,iBAAiBI,cAAcp9S,EAAc68S,GAAqB,EAAOva,GAAgB6a,WAEzG,IACIE,EADAC,EAAiBZ,EAAwBA,EAAsB/gX,GAAU,KAW7E,KARI0hX,EADAC,GAAkBA,EAAexsb,UACZwsb,EAAexsb,UAE/B6rb,GAIgBhB,GAGrB,OAAO,KAEX,IAAI4B,EAAyB1rc,KAAK2rc,+BAA+Bx9S,EAAcq9S,GAC/E,OAAKE,EAGE,CACHL,uBAAwBK,EAAuBL,uBAC/Cpsb,UAAWysb,EAAuBzsb,UAClCsH,OAAQmlb,EAAuBnlb,OAC/B2jb,mBAAoBuB,EAAiBA,EAAe3hX,OAAS,MANtD,MASfu+W,EAAqB31a,UAAUi5a,+BAAiC,SAAUx9S,EAAcy9S,GACpF,IACIC,EAAsB7rc,KAAK8rc,sBAAsBC,SADb,MAApBH,EAA2BA,EAAmBz9S,GAElE,OAA2B,MAAvB09S,EACO,KAGPA,EAAoBR,uBACb,CACHpsb,UAAW4sb,EAAoB5sb,UAC/Bosb,wBAAwB,EACxB9kb,OAAQkqa,GAAgBub,mBACxB9B,mBAAoB,MAIxBlqc,KAAKmrc,iBAAiBC,wBAAwBS,EAAoB5sb,WAC3D,CACHA,UAAW4sb,EAAoB5sb,UAC/Bosb,wBAAwB,EACxB9kb,OAASslb,EAAoBtlb,QAAU6hb,GAA0B6D,WAAcxb,GAAgBub,mBAAqBvb,GAAgByb,QACpIhC,mBAAoB,MAIrBlqc,KAAKmrc,iBAAiBI,cAAcp9S,EAAc09S,EAAoB5sb,UAAW4sb,EAAoBR,uBAAyBQ,EAAoBtlb,QAAU6hb,GAA0B6D,WAAcxb,GAAgBub,mBAAqBvb,GAAgByb,UAYpQ7D,EAAqB31a,UAAUu3a,kBAAoB,SAAUL,EAAkBz7S,EAAc07S,EAAgBK,QAC9E,IAAvBA,IAAiCA,EAAqB,MAC1D,IAAIpgX,EAAS,GACbsoB,GAAEkyR,UAAUx6S,EAAQ+/W,GACpB,IAAIn/J,EAAak/J,EAAmBA,EAAiBz7S,EAAe,UAAY,KAUhF,OATkB,MAAdu8I,IAC0B,mBAAfA,EACPt4L,GAAEkyR,UAAUx6S,EAAQ4gN,EAAWm/J,IAEJ,iBAAfn/J,GACZt4L,GAAEkyR,UAAUx6S,EAAQ4gN,IAG5Bt4L,GAAEkyR,UAAUx6S,EAAQogX,GACbpgX,GAEXu+W,EAAqB31a,UAAUs3a,wBAA0B,SAAUmC,EAAQz5F,EAAe05F,EAAmBtC,EAAsB11a,GAC/H,IAaIkQ,EAbA6pH,EAAeukN,EAAcvkN,aAC7Bk+S,EAAiBrsc,KAAK4qc,wBAAwBuB,EAAQh+S,EAAci+S,EAAmBtC,GAE3F,IADeuC,IAAmBA,EAAeptb,UAS7C,OAHKmV,GACD2W,QAAQ/V,MAAM,8BAHCm3a,EAASA,EAAOh+S,GAAgB27S,IACFA,GAEc,iDAExD,KAGX,GAAIuC,EAAehB,uBAAwB,CAEvC,IAAIiB,EAAwBD,EAAeptb,UACvCstb,EAAsBvsc,KAAKwsc,0BAA0BT,SAAS59S,GAClE7pH,EAAoBtkC,KAAKozW,0BAA0BngG,KAAKq5L,EAAuBC,EAAoBE,oBAAqBF,EAAoBG,mBAAoBh6F,EAAeo3F,QAI/Kxla,EAAoB,IAAI+na,EAAeptb,UAE3C,MAAO,CAAEqlB,kBAAmBA,EAAmB4la,mBAAoBmC,EAAenC,qBAEtF7B,EAAqB31a,UAAU43a,cAAgB,SAAUrrb,EAAW6qE,GAEhE,GADA9pF,KAAKwR,QAAQ4oY,SAASn7X,GACA,MAAlBA,EAAUqmR,KAGd,OAAOrmR,EAAUqmR,KAAKx7M,IAE1Bq+W,GAAa,CACTxrD,GAAU,gBACX0rD,EAAqB31a,UAAW,mBAAe,GAClDy1a,GAAa,CACTxrD,GAAU,YACX0rD,EAAqB31a,UAAW,eAAW,GAC9Cy1a,GAAa,CACTxrD,GAAU,qBACX0rD,EAAqB31a,UAAW,wBAAoB,GACvDy1a,GAAa,CACTxrD,GAAU,8BACX0rD,EAAqB31a,UAAW,iCAA6B,GAChEy1a,GAAa,CACTxrD,GAAU,0BACX0rD,EAAqB31a,UAAW,6BAAyB,GAC5Dy1a,GAAa,CACTrrD,GAAS,8BACVurD,EAAqB31a,UAAW,iCAA6B,GACzCy1a,GAAa,CAChCjtD,GAAK,yBACNmtD,GAjXmC,GA2XtCsE,IACIvjU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFojU,GAAsD,SAAU/iU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D+iU,GAAmC,SAAUr0X,GAE7C,SAASq0X,IACL,OAAOr0X,EAAOtjD,KAAKl1B,KAAM6sc,EAAkBliB,WAAa3qb,KAmc5D,OArcA2sc,GAAYE,EAAmBr0X,GAI/Bq0X,EAAkBn6a,UAAU4yQ,KAAO,SAAUx7M,GACzC9pF,KAAK8pF,OAASA,EACV9pF,KAAKoqY,mBAAmB2sC,6BACxB/2a,KAAK8sc,kCAAkChjX,GAE3C,IAAIijX,EAAsB/sc,KAAKgtc,wBAG3BC,EAA4B,MAAhBnjX,EAAOvoF,MACnB2rc,GAAW,EAGf,GAAIltc,KAAKoqY,mBAAmB0sC,wBAA0B92a,KAAKoqY,mBAAmBgqC,yBAA0B,CACpG,IAAI1wR,EAAO55D,EAAO45D,KACdA,EAAKj/E,SAGLyoY,GAFmBpjX,EAAO+hR,QAAU/hR,EAAO+hR,OAAOsC,iBAC3BzqN,EAAKugT,gBAAkBvgT,EAAKugT,eAAep+C,aAI1E7lZ,KAAKmtc,YAAcJ,GAAuBE,GAAaC,EACnDltc,KAAKmtc,cAGTntc,KAAKotc,uBACLptc,KAAKqtc,uBACLrtc,KAAKstc,sBACLttc,KAAKutc,kBACLvtc,KAAKwtc,gBAETX,EAAkBn6a,UAAUo6a,kCAAoC,SAAUhjX,GAEjEA,EAAOvoF,QAA+B,GAAtBuoF,EAAO45D,KAAK1tD,QAC7BlM,EAAOvoF,MAAQ,KAMvBsrc,EAAkBn6a,UAAUs6a,sBAAwB,WAChD,IAAKhtc,KAAK8pF,OAAOwtI,YAAct3N,KAAKoqY,mBAAmBsvC,uBACnD,OAAO,EAEX,IAAI+zB,EAAiBztc,KAAK8pF,OAAOykR,SAAW+hC,GAAUoD,YAClDg6D,EAAkB1tc,KAAK8pF,OAAOykR,SAAW+hC,GAAUmD,aACnDk6D,GAAYF,IAAmBC,EACnC,OAAI1tc,KAAKoqY,mBAAmBme,cACpBvoZ,KAAKujb,iBAAiB3gB,iBACd8qC,GAEJC,EAER3tc,KAAKujb,iBAAiB3gB,iBACd6qC,GAEJE,GAEZd,EAAkBn6a,UAAUk7a,UAAY,WACpC,IAAI5tc,KAAKoqY,mBAAmBgqC,yBAA5B,CAGA,IAAItqV,EAAS9pF,KAAK8pF,OAEd+jX,EADU/jX,EAAO45D,KACMo9S,QACqBh3W,EAAOtV,SAAW,EAE9Dx0E,KAAK8tc,wBAAwBD,EAAc/jX,EAAOtV,UAGlDx0E,KAAK+tc,aACL/tc,KAAKqgY,eAAergY,KAAK+tc,aAE7B/tc,KAAK+tc,YAAc,uBAAyBF,EAC5C7tc,KAAKmgY,YAAYngY,KAAK+tc,gBAE1BlB,EAAkBn6a,UAAUo7a,wBAA0B,SAAUD,EAAcr5X,GAC1E49B,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KAAK,4NAA+N,sCAC1Q,IAAIsqY,EAAYH,EAAer5X,EAC3B0zW,EAAOlob,KAAKsmY,SACZ2nE,EAAcjuc,KAAKoqY,mBAAmBme,cAAgB,eAAiB,cAC3E2/B,EAAK38a,MAAM0ic,GAAeD,EAAY,MAE1CnB,EAAkBn6a,UAAU86a,YAAc,WAKhBxtc,KAAK8pF,OAAOokX,kBAE9Bluc,KAAKymb,4BAHEzmb,KAAK8pF,OAAO45D,KAGoB85S,GAAQuD,uBAAwB/gc,KAAK4tc,UAAUrja,KAAKvqC,OAC3FA,KAAK4tc,cAGbf,EAAkBn6a,UAAU66a,gBAAkB,WAC1C,IAAIzjX,EAAS9pF,KAAK8pF,OACd4qT,EAAU10Y,KAAKmuc,eACfz5D,EAAQjwU,OACRzkE,KAAKouc,mBAEA15D,EAAQ4C,eACbllS,GAAElgG,IAAI43E,EAAO+hR,OAAQ,mCAAoC,OACzDz5P,GAAElgG,IAAI43E,EAAO+hR,OAAQ,4CAA6C,OAClE7rW,KAAKquc,kBACD35D,EAAQ4C,eACRt3Y,KAAKsuc,iBAITtuc,KAAKuuc,kBAGb1B,EAAkBn6a,UAAU07a,iBAAmB,WAC3C,IACII,EADAC,EAAoBzuc,KAAK8pF,OAAO2kX,kBAEpC,GAAIA,EAAmB,CAEnB,IAAIC,EAAct8V,GAAE6xR,YAAYjkY,KAAK8pF,QACrC4kX,EAAYntc,MAAQvB,KAAK8pF,OAAOvoF,MACC,mBAAtBktc,EACPD,EAAcC,EAAkBC,GAEE,iBAAtBD,EACZD,EAAcxuc,KAAKgna,kBAAkBlwJ,SAAS23L,EAAmBC,GAGjE3ja,QAAQ24B,KAAK,wFAIjB8qY,EAAc,SAAWxuc,KAAK8pF,OAAOvoF,MAEzCvB,KAAK2uc,OAAOlgY,UAAY+/X,GAE5B3B,EAAkBn6a,UAAU27a,gBAAkB,WAC1C,IASIO,EATAltZ,EAAQ1hD,KACR8pF,EAAS9pF,KAAK8pF,OAGd+kX,EAFiB7uc,KAAKmuc,eAAelK,gBAEWn6W,EAAOtkF,OAEvDshS,EAAiB+nK,EACjB7uc,KAAK8uc,sBAAsBjjB,YAAYgjB,EAAa/kX,EAAO45D,KAAM55D,EAAO0D,MAF5DxtF,KAAK8pF,OAAOvoF,OAEoE,KAChGuoF,EAAOg9M,eAAiBA,GAExB8nK,EAAkB9kX,EAAOwtI,UACnBt3N,KAAK+uc,aAAajlX,GAClB9pF,KAAKgvc,iBAAiBhvc,KAAK8pF,OAAO+hR,OAAOa,mBAAoBmiG,EAAY9+D,YAAajmT,KAGxF8kX,EAAgBvwb,KAAK,SAAU9c,GAC3BmgD,EAAMutZ,kBAAoB1tc,KAItCsrc,EAAkBn6a,UAAUs8a,iBAAmB,SAAUE,EAAyBC,EAClFrlX,GACI,IAAIpoC,EAAQ1hD,KAaRmmY,EAAsB,KAEtBipE,EAA0Bpvc,KAAKgsb,qBAC9B4e,wBAAwBsE,EAAyB,iBACtD,GAAIE,GAAgE,MAArCA,EAAwBnwb,WAChDmwb,EAAwB7ob,QAAUkqa,GAAgByb,QAErD/lE,EAAsBnmY,KAAKgsb,qBAAqB+c,qBAAqBmG,EAAyBplX,OAE7F,CAED,IAAIulX,EAA2Brvc,KAAKgsb,qBAC/B4e,wBAAwBuE,EAAkB,gBAI3ChpE,EAHAkpE,GACAA,EAAyB9ob,QAAUkqa,GAAgByb,QAE7Blsc,KAAKgsb,qBAAqB6c,gBAAgBsG,EAAkBrlX,GAE7EulX,GACLA,EAAyB9ob,QAAUkqa,GAAgByb,SAClD95V,GAAElgG,IAAIi9b,EAAkB,mCAAoC,MAGvCnvc,KAAKgsb,qBAAqB+c,qBAAqBoG,EAAiBziG,mBAAoB5iR,GAIpF9pF,KAAKgsb,qBAAqB6c,gBAAgB,GAAI/+W,GAe5E,OAZ2B,MAAvBq8S,EACAA,EAAoB9nX,KAAK,SAAUixb,GACV,MAAjBA,EAIJl9V,GAAE8zR,8BAA8BC,EAAqBzkV,EAAMitZ,QAHvDjtZ,EAAMitZ,OAAOzyK,UAAqC,MAAzBpyM,EAAOg9M,eAAyBh9M,EAAOg9M,eAAiBh9M,EAAOvoF,QAOhGvB,KAAK2uc,OAAOzyK,UAAqC,MAAzBpyM,EAAOg9M,eAAyBh9M,EAAOg9M,eAAiBh9M,EAAOvoF,MAEpF4kY,GAEX0mE,EAAkBn6a,UAAUq8a,aAAe,SAAUjlX,GACjD,IAAIq8S,EAAsBnmY,KAAKgsb,qBAAqByc,sCAAsC3+W,GAO1F,OAN2B,MAAvBq8S,EACA/zR,GAAE8zR,8BAA8BC,EAAqBnmY,KAAK2uc,QAG1D3uc,KAAK2uc,OAAOzyK,UAAqC,MAAzBpyM,EAAOg9M,eAAyBh9M,EAAOg9M,eAAiBh9M,EAAOvoF,MAEpF4kY,GAEX0mE,EAAkBn6a,UAAU47a,cAAgB,WAGpCtuc,KAAK8pF,OAAOylX,gBAGhBvvc,KAAKymb,4BAA4Bzmb,KAAKmuc,eAAgB3Q,GAAQ+C,iCAAkCvgc,KAAKwvc,iBAAiBjla,KAAKvqC,OAE3HA,KAAKwvc,qBAET3C,EAAkBn6a,UAAU88a,iBAAmB,WAC3C,IAAIlP,EAAmBtgc,KAAKmuc,eAAe7N,iBAC3Ctgc,KAAKyvc,YAAYhhY,UAAY6xX,GAAoB,EAAI,IAAMA,EAAmB,IAAM,IAExFuM,EAAkBn6a,UAAU67a,eAAiB,WACrCn8V,GAAE8rR,OAAOl+X,KAAK8pF,OAAOvoF,SACrBvB,KAAK2uc,OAAOzyK,UAAYl8R,KAAK8pF,OAAOg9M,eAAiB9mS,KAAK8pF,OAAOg9M,eAAiB9mS,KAAK8pF,OAAOvoF,QAGtGsrc,EAAkBn6a,UAAUg9a,oBAAsB,WAC9C,IAAIC,EAAiB3vc,KAAK8pF,OAAOitM,SACjC,MAA8B,mBAAnB44K,EACAA,EAAe3vc,KAAK8pF,SAEL,IAAnB6lX,GAEX9C,EAAkBn6a,UAAU46a,oBAAsB,WAC9C,IAAI54D,EAAU10Y,KAAKmuc,eACfyB,EAAiB5vc,KAAK0vc,wBAErBh7D,EAAQjwU,SAERiwU,EAAQ4pD,YAER5pD,EAAQc,OACb,GAAIo6D,EAAgB,CAChB,IAAIC,EAAyB,IAAI/I,GACjC9mc,KAAKqkJ,aAAa+1P,SAASy1D,GAC3BA,EAAuBvqK,KAAK,CAAEovG,QAASA,EAASlvY,OAAQxF,KAAK8pF,OAAOtkF,SACpExF,KAAK6jY,UAAU/rX,YAAY+3b,EAAuBvpE,UAClDtmY,KAAK2mb,eAAe,WAAc,OAAOkpB,EAAuB3ub,YAEpEkxF,GAAEmuR,oBAAoBvgY,KAAK6jY,UAAW,gBAAiB+rE,IAE3D/C,EAAkBn6a,UAAU26a,qBAAuB,WAC/C,IAAIvjX,EAAS9pF,KAAK8pF,OACdgmX,EAAahmX,EAAOimX,UACpBC,EAAgB59V,GAAEw9R,iBAAiB,gBAAiB5vY,KAAKoqY,mBAAoB,MAC7E6lE,EAAkB79V,GAAEw9R,iBAAiB,kBAAmB5vY,KAAKoqY,mBAAoB,MACrFpqY,KAAKkwc,UAAUp4b,YAAYk4b,GAC3Bhwc,KAAKmwc,YAAYr4b,YAAYm4b,GAC7Bjwc,KAAKymb,4BAA4Bzmb,KAAKkwc,UAAW,QAASlwc,KAAKowc,gBAAgB7la,KAAKvqC,OACpFA,KAAKymb,4BAA4Bzmb,KAAKmwc,YAAa,QAASnwc,KAAKowc,gBAAgB7la,KAAKvqC,OAEtFA,KAAKymb,4BAA4BqpB,EAAY,UAAW9vc,KAAKo2C,UAAU7L,KAAKvqC,OAC5EA,KAAKymb,4BAA4B38V,EAAO45D,KAAM85S,GAAQnzC,uBAAwBrqZ,KAAKqwc,2BAA2B9la,KAAKvqC,OACnHA,KAAKqwc,6BAGLrwc,KAAKymb,4BAA4Bzmb,KAAKmuc,eAAgB3Q,GAAQ+C,iCAAkCvgc,KAAKswc,0BAA0B/la,KAAKvqC,OAE/HA,KAAKoqY,mBAAmBqY,sBAAuBziZ,KAAKqoK,gBAAmBv+E,EAAOymX,2BAC/Evwc,KAAKymb,4BAA4BqpB,EAAY,WAAY9vc,KAAKwwc,iBAAiBjma,KAAKvqC,QAG5F6sc,EAAkBn6a,UAAU49a,0BAA4B,WAEpDtwc,KAAKqwc,6BAELrwc,KAAK4tc,aAETf,EAAkBn6a,UAAU0jB,UAAY,SAAU9tB,GACxB8pF,GAAEyhS,aAAavrX,EAAOgoX,GAAUiB,aAC9BvxY,KAAK8pF,OAAO2mX,sBAGjBzwc,KAAK8pF,OAAOtkF,QAAUxF,KAAK8pF,OAAOtkF,OAAOg9Y,eAAexiZ,KAAK8pF,OAAO45D,QAIvFp7H,EAAM4E,iBACNltB,KAAK0wc,wBAET7D,EAAkBn6a,UAAU06a,qBAAuB,WAC/C,IAAI5nc,EAASxF,KAAK8pF,OAAOtkF,OACrBkvY,EAAU10Y,KAAK8pF,OAAO45D,KAC1B,GAAK1jJ,KAAKoqY,mBAAmBgqC,yBAGxB,GAAK1/B,EAAQ4C,cAKb,CACD,IAAI2sD,EAAiBvvD,EAAQuvD,eAIzBjkc,KAAK2wc,6BAHL1M,IAGmCz+b,EAAOu7Y,oBAAoBkjD,EAAehjD,cAPjFjhZ,KAAK2wc,4BAA6B,OALlC3wc,KAAK2wc,4BAA6B,EAoBtC,GAAI3wc,KAAK2wc,2BAEL,IADA,IAAIhnE,EAAU+K,EAAQ9tW,QAEdwrE,GAAEgsR,QAAQuL,IADL,CAIT,GAAIA,EAAQs6D,gBAAkBz+b,EAAOu7Y,oBAAoBpX,EAAQs6D,eAAehjD,SAAU,CACtFjhZ,KAAKmuc,eAAiBxkE,EACtB,MAEJA,EAAUA,EAAQ/iW,OAItBwrE,GAAEgsR,QAAQp+X,KAAKmuc,kBACfnuc,KAAKmuc,eAAiBz5D,IAG9Bm4D,EAAkBn6a,UAAU09a,gBAAkB,SAAUr6D,GAChD3jS,GAAE83R,2BAA2B6L,KAIjC3jS,GAAE63R,yBAAyB8L,GAC3B/1Y,KAAK0wc,uBAET7D,EAAkBn6a,UAAU89a,iBAAmB,SAAUz6D,GACjD3jS,GAAE83R,2BAA2B6L,IAOR3jS,GAAEq4R,qBAAqBzqY,KAAKkwc,UAAWn6D,IACzD3jS,GAAEq4R,qBAAqBzqY,KAAKmwc,YAAap6D,IAE5C/1Y,KAAK0wc,sBAGb7D,EAAkBn6a,UAAUg+a,mBAAqB,WAE7C,IAAIh8D,EAAU10Y,KAAKmuc,eACnBz5D,EAAQ+U,aAAa/U,EAAQvzO,WAEjC0rS,EAAkBn6a,UAAU21I,aAAe,WACvC,IAAIqsO,EAAU10Y,KAAK8pF,OAAO45D,KACtBktT,EAAkB5wc,KAAKujb,iBAAiB5tB,eAAiBjhB,EAAQm8D,UACrE,OAAO7wc,KAAK2wc,4BACPj8D,EAAQrsO,iBAAmBqsO,EAAQjwU,SAAWmsY,GAEvD/D,EAAkBn6a,UAAU29a,2BAA6B,WACrD,IAAI37D,EAAU10Y,KAAK8pF,OAAO45D,KAC1B,GAAI1jJ,KAAKqoK,eAAgB,CAGrB,IAAIlH,IAAWnhK,KAAK2wc,4BAAoCj8D,EAAQvzO,SAChE/uD,GAAEyuR,aAAa7gY,KAAKmwc,aAAchvS,GAClC/uD,GAAEyuR,aAAa7gY,KAAKkwc,UAAW/uS,QAI/B/uD,GAAEyuR,aAAa7gY,KAAKkwc,WAAW,GAC/B99V,GAAEyuR,aAAa7gY,KAAKmwc,aAAa,GAErC,IAAIhC,EAAiBnuc,KAAKmuc,eAEtB2C,EAAwB9wc,KAAKujb,iBAAiB5tB,eAAiBw4C,EAAe0C,UAC9EE,GAAiB5C,EAAe9lS,eAChC2oS,EAAqB7C,EAAe1pY,QAAUssY,GAAiBD,EACnE9wc,KAAKugY,oBAAoB,gBAAiBywE,GAC1Chxc,KAAKugY,oBAAoB,2BAA4BywE,IAEzDnE,EAAkBn6a,UAAUxR,QAAU,WAC9BlhB,KAAKivc,mBAAqBjvc,KAAKivc,kBAAkB/tb,SACjDlhB,KAAKivc,kBAAkB/tb,UAE3Bs3D,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElC6sc,EAAkBn6a,UAAU2jU,QAAU,WAClC,OAAO,GAEXw2G,EAAkBliB,SAAW,2UAO7BiiB,GAAa,CACTjwD,GAAU,uBACXkwD,EAAkBn6a,UAAW,0BAAsB,GACtDk6a,GAAa,CACTjwD,GAAU,sBACXkwD,EAAkBn6a,UAAW,yBAAqB,GACrDk6a,GAAa,CACTjwD,GAAU,0BACXkwD,EAAkBn6a,UAAW,6BAAyB,GACzDk6a,GAAa,CACTjwD,GAAU,qBACXkwD,EAAkBn6a,UAAW,wBAAoB,GACpDk6a,GAAa,CACTjwD,GAAU,yBACXkwD,EAAkBn6a,UAAW,4BAAwB,GACxDk6a,GAAa,CACT1iB,GAAY,cACb2iB,EAAkBn6a,UAAW,iBAAa,GAC7Ck6a,GAAa,CACT1iB,GAAY,gBACb2iB,EAAkBn6a,UAAW,mBAAe,GAC/Ck6a,GAAa,CACT1iB,GAAY,cACb2iB,EAAkBn6a,UAAW,iBAAa,GAC7Ck6a,GAAa,CACT1iB,GAAY,WACb2iB,EAAkBn6a,UAAW,cAAU,GAC1Ck6a,GAAa,CACT1iB,GAAY,gBACb2iB,EAAkBn6a,UAAW,mBAAe,GACxCm6a,EAtc4B,CAucrCz6a,IAQE6+a,IACI7nU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAWnF0nU,GAA+C,SAAU14X,GAEzD,SAAS04X,IACL,IAAIxvZ,EAAQ82B,EAAOtjD,KAAKl1B,KAAMkxc,EAA8BvmB,WAAa3qb,KAEzE,OADA0hD,EAAMyvZ,aAAe,EACdzvZ,EA+EX,OAnFAuvZ,GAAYC,EAA+B14X,GAM3C04X,EAA8Bx+a,UAAU4yQ,KAAO,SAAUx7M,GAErD9pF,KAAK2uc,OAAS3uc,KAAKmpb,oBAAoB,0BACvCnpb,KAAKoxc,OAASpxc,KAAKmpb,oBAAoB,0BACvCnpb,KAAKq2V,QAAQvsQ,IAEjBonX,EAA8Bx+a,UAAU2+a,UAAY,SAAUvnX,EAAQxkB,GAClE,IAAIgsY,EAAW/yb,KAAKqiC,IAAI0kB,GACpBwhO,EAAiBh9M,EAAO+hW,YAAYylB,GACpCC,EAAan/V,GAAE8rR,OAAOp3F,GAAkBA,EAAiBwqK,EACzDE,EAAWlsY,GAAS,EAEpBtlE,KAAKoxc,OAAO3iY,UADZ+iY,EApBG,SAqBgCD,EApB9B,SAwBgCA,EAEzCn/V,GAAEmuR,oBAAoBvgY,KAAKoxc,OAAQ,2BAA4BI,GAC/Dp/V,GAAEmuR,oBAAoBvgY,KAAKoxc,OAAQ,8BAA+BI,IAEtEN,EAA8Bx+a,UAAU++a,sBAAwB,WAC5D,IAAI/vZ,EAAQ1hD,KAIZA,KAAKmxc,eACL,IAAIO,EAAmB1xc,KAAKmxc,aAC5Bhmb,OAAOyZ,WAAW,WACV8sa,IAAqBhwZ,EAAMyvZ,cAC3BzvZ,EAAMiwZ,kBAEX,MAEPT,EAA8Bx+a,UAAUi/a,eAAiB,WACrDv/V,GAAEiuR,eAAergY,KAAK2uc,OAAQ,mCAC9Bv8V,GAAE4uR,aAAahhY,KAAKoxc,SAExBF,EAA8Bx+a,UAAU2jU,QAAU,SAAUvsQ,GACxD,IAAIvoF,EAAQuoF,EAAOvoF,MACnB,GAAIA,IAAUvB,KAAK+hP,YAGf3vI,GAAE8rR,OAAOp0S,EAAOg9M,gBAChB9mS,KAAK2uc,OAAOlgY,UAAYqb,EAAOg9M,eAE1B10L,GAAE8rR,OAAOp0S,EAAOvoF,OACrBvB,KAAK2uc,OAAOlgY,UAAYltE,EAGxB6wG,GAAE4uR,aAAahhY,KAAK2uc,SAIpB3uc,KAAK4xc,cAAcC,2CAcvB,MAXqB,iBAAVtwc,GAAgD,iBAAnBvB,KAAK+hP,WAEzC/hP,KAAKqxc,UAAUvnX,EADHvoF,EAAQvB,KAAK+hP,WAKzB/hP,KAAK+hP,WACL3vI,GAAE+tR,YAAYngY,KAAK2uc,OAAQ,mCAE/B3uc,KAAKyxc,wBACLzxc,KAAK+hP,UAAYxgP,GACV,GAEX2vc,EAA8BvmB,SAAW,sGArFa,SAAU9gT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAqFxDgoU,CAAa,CACTn1D,GAAU,kBACXu0D,EAA8Bx+a,UAAW,qBAAiB,GACtDw+a,EApFwC,CAqFjD9+a,IAQE2/a,IACI3oU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFwoU,GAA0C,SAAUx5X,GAEpD,SAASw5X,IACL,IAAItwZ,EAAQ82B,EAAOtjD,KAAKl1B,KAAMgyc,EAAyBrnB,WAAa3qb,KAGpE,OAFA0hD,EAAMyvZ,aAAe,EACrBzvZ,EAAMuwZ,SAAWvwZ,EAAMynY,oBAAoB,2BACpCznY,EAqEX,OA1EAqwZ,GAAYC,EAA0Bx5X,GAOtCw5X,EAAyBt/a,UAAU4yQ,KAAO,SAAUx7M,GAChD9pF,KAAK8pF,OAASA,EACd9pF,KAAKq2V,QAAQvsQ,IAEjBkoX,EAAyBt/a,UAAUw/a,kBAAoB,WACnD,IAAIxwZ,EAAQ1hD,KACZA,KAAKmxc,eAIL,IAAIO,EAAmB1xc,KAAKmxc,aAExBnxc,KAAKmyc,WACLnyc,KAAKsmY,SAAS7kX,YAAYzhB,KAAKmyc,WAEnCnyc,KAAKmyc,UAAY//V,GAAE8uR,aAAa,oEAChClhY,KAAKmyc,UAAU1jY,UAAYzuE,KAAKiyc,SAASxjY,UACzCzuE,KAAKsmY,SAAS3lX,aAAa3gB,KAAKmyc,UAAWnyc,KAAKiyc,UAIhD9mb,OAAOyZ,WAAW,WACV8sa,IAAqBhwZ,EAAMyvZ,cAG/B/+V,GAAE+tR,YAAYz+U,EAAMywZ,UAAW,2BAChC,IACHhnb,OAAOyZ,WAAW,WACV8sa,IAAqBhwZ,EAAMyvZ,eAG/BzvZ,EAAM4kV,SAAS7kX,YAAYigC,EAAMywZ,WACjCzwZ,EAAMywZ,UAAY,OACnB,MAEPH,EAAyBt/a,UAAU2jU,QAAU,SAAUvsQ,GACnD,IAAIvoF,EAAQuoF,EAAOvoF,MAInB,GAHI6wG,GAAEgsR,QAAQ78X,KACVA,EAAQ,IAERA,IAAUvB,KAAK+hP,YAKf/hP,KAAK4xc,cAAcC,0CAcvB,OAXA7xc,KAAKkyc,oBACLlyc,KAAK+hP,UAAYxgP,EACb6wG,GAAE8rR,OAAOp0S,EAAOg9M,gBAChB9mS,KAAKiyc,SAASxjY,UAAYqb,EAAOg9M,eAE5B10L,GAAE8rR,OAAOp0S,EAAOvoF,OACrBvB,KAAKiyc,SAASxjY,UAAYltE,EAG1B6wG,GAAE4uR,aAAahhY,KAAKiyc,WAEjB,GAEXD,EAAyBrnB,SAAW,4DA3EkB,SAAU9gT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GA0ExDsoU,CAAa,CACTz1D,GAAU,kBACXq1D,EAAyBt/a,UAAW,qBAAiB,GACjDs/a,EA3EmC,CA4E5C5/a,IAQEigb,IACIjpU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF8oU,GAAsD,SAAUzoU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DyoU,GAAqC,SAAU/5X,GAE/C,SAAS+5X,IACL,OAAO/5X,EAAOtjD,KAAKl1B,KAAMuyc,EAAoB5nB,WAAa3qb,KAqB9D,OAvBAqyc,GAAYE,EAAqB/5X,GAIjC+5X,EAAoB7/a,UAAU4yQ,KAAO,SAAUx7M,GAC3C,IAAI0oX,EAAepgW,GAAEw9R,iBAAiB,eAAgB5vY,KAAKoqY,mBAAoB,MAC/EpqY,KAAKwyc,aAAa16b,YAAY06b,GAC9B,IAAIr6F,EAAiBn4W,KAAKoqY,mBAAmBk9B,oBAC7Ctna,KAAKyyc,aAAav2K,UAAYi8E,EAAe,aAAc,YAE/Do6F,EAAoB7/a,UAAU2jU,QAAU,SAAUvsQ,GAC9C,OAAO,GAEXyoX,EAAoB5nB,SAAW,uLAC/B2nB,GAAa,CACT31D,GAAU,uBACX41D,EAAoB7/a,UAAW,0BAAsB,GACxD4/a,GAAa,CACTpoB,GAAY,iBACbqoB,EAAoB7/a,UAAW,oBAAgB,GAClD4/a,GAAa,CACTpoB,GAAY,iBACbqoB,EAAoB7/a,UAAW,oBAAgB,GAC3C6/a,EAxB8B,CAyBvCngb,IAQEsgb,IACItpU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFmpU,GAAsD,SAAU9oU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D8oU,GAAkC,SAAUp6X,GAE5C,SAASo6X,IACL,OAAOp6X,EAAOtjD,KAAKl1B,KAAM,yGAA2GA,KA8CxI,OAhDA0yc,GAAYE,EAAkBp6X,GAI9Bo6X,EAAiBlgb,UAAU4yQ,KAAO,SAAUx7M,GACxC,IAAIpoC,EAAQ1hD,KACZA,KAAK+qb,mBAAqBjhW,EAAOghW,gBAC7B14U,GAAEgsR,QAAQt0S,EAAOh2E,QACjBi3B,QAAQ24B,KAAK,mDAGjBomB,EAAOh2E,OAAOT,QAAQ,SAAU9R,GAC5B,IAAIilB,EAAS,CAAEjlB,MAAOA,GAClBulS,EAAiBplP,EAAMotZ,sBAAsBjjB,YAAY/hW,EAAOtkF,OAAQ,KAAM,KAAMjE,GAExFilB,EAAOgjE,KADmBs9M,QACUA,EAAiBvlS,EACrDmgD,EAAMmxZ,QAAQve,UAAU9ta,KAE5BxmB,KAAK6yc,QAAQv+T,SAASxqD,EAAOvoF,OAAO,GAG/BvB,KAAKoqY,mBAAmB2rC,iBACzB/1a,KAAK6yc,QAAQ3d,cAAc,WAAc,OAAOprW,EAAOgpX,kBAG/DF,EAAiBlgb,UAAU04Z,iBAAmB,WACtCprb,KAAK+qb,oBACL/qb,KAAK6yc,QAAQ/pB,sBAAsBh6Z,SAG3C8jb,EAAiBlgb,UAAU84Z,QAAU,WACjCxrb,KAAK6yc,QAAQ/pB,sBAAsBh6Z,SAEvC8jb,EAAiBlgb,UAAUopG,SAAW,WAClC,OAAO97H,KAAK6yc,QAAQ/2U,YAExB82U,EAAiBlgb,UAAUs3Z,QAAU,WACjC,OAAO,GAEX2oB,GAAa,CACTh2D,GAAU,uBACXi2D,EAAiBlgb,UAAW,0BAAsB,GACrDigb,GAAa,CACTh2D,GAAU,0BACXi2D,EAAiBlgb,UAAW,6BAAyB,GACxDigb,GAAa,CACTzoB,GAAY,YACb0oB,EAAiBlgb,UAAW,eAAW,GACnCkgb,EAjD2B,CAkDpC7oB,IAQEgpB,IACI3pU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFwpU,GAAqC,SAAUx6X,GAE/C,SAASw6X,IACL,OAAkB,OAAXx6X,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAK/D,OAPA+yc,GAAYC,EAAqBx6X,GAIjCw6X,EAAoBtgb,UAAUs3Z,QAAU,WACpC,OAAO,GAEJgpB,EAR8B,CASvCtoB,IAQEuoB,IACI7pU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF0pU,GAAuC,SAAU16X,GAEjD,SAAS06X,IACL,OAAkB,OAAX16X,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAK/D,OAPAizc,GAAYC,EAAuB16X,GAInC06X,EAAsBxgb,UAAUs3Z,QAAU,WACtC,OAAO,GAEJkpB,EARgC,CASzCN,IAQEO,IACI/pU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnF4pU,GAAqC,SAAU56X,GAE/C,SAAS46X,IACL,OAAO56X,EAAOtjD,KAAKl1B,KAAMozc,EAAoBzoB,WAAa3qb,KAoC9D,OAtCAmzc,GAAYC,EAAqB56X,GAIjC46X,EAAoB1gb,UAAU4yQ,KAAO,SAAUx7M,GAC3C9pF,KAAK8pF,OAASA,EACd9pF,KAAK+qb,mBAAqBjhW,EAAOghW,gBACjC9qb,KAAKqzc,UACArN,aAAal8W,EAAOmlD,WAAa,KACjCqkU,QAAQxpX,EAAOme,MAAQ,IACvBsrW,QAAQzpX,EAAOviF,MAAQ,IACxB6qG,GAAE8rR,OAAOp0S,EAAOvoF,QAChBvB,KAAKqzc,UAAU/+T,SAASxqD,EAAOvoF,MAAM0wB,YAAY,GAErDjyB,KAAK0pb,oBAAoB,UAAW1pb,KAAKo2C,UAAU7L,KAAKvqC,QAE5Dozc,EAAoB1gb,UAAU0jB,UAAY,SAAU9tB,GAChD,IAAI3L,EAAM2L,EAAMi/F,OAASj/F,EAAM2E,SAC3BtQ,GAAO2zX,GAAUqB,UACjBh1X,GAAO2zX,GAAUsB,QACjBj1X,GAAO2zX,GAAUuB,WACjBl1X,GAAO2zX,GAAUwB,UAChBxpX,EAAMm/F,UAAY9qG,GAAO2zX,GAAUiB,YACpCjpX,EAAMsH,mBAGdwjb,EAAoB1gb,UAAU04Z,iBAAmB,WACzCprb,KAAK+qb,oBACL/qb,KAAKqzc,UAAUvqB,sBAAsBh6Z,SAG7Cskb,EAAoB1gb,UAAUopG,SAAW,WACrC,OAAO97H,KAAK8pF,OAAO6hW,WAAW3rb,KAAKqzc,UAAUv3U,aAEjDs3U,EAAoBzoB,SAAW,8JAzCuB,SAAU9gT,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAsCxD0pU,CAAa,CACTtpB,GAAY,cACbkpB,EAAoB1gb,UAAW,iBAAa,GACxC0gb,EAvC8B,CAwCvCrpB,IAQE0pB,IACIrqU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFkqU,GAAsD,SAAU7pU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D6pU,GAA8B,SAAUn7X,GAExC,SAASm7X,IACL,OAAkB,OAAXn7X,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA0K/D,OA5KAyzc,GAAYE,EAAcn7X,GAI1Bm7X,EAAajhb,UAAUgka,kBAAoB,SAAUF,GACjD,MAAO,CACHlyb,KAAMkyb,EAAYrhb,OAClBq8I,GAAIglS,EAAYod,WAGxBD,EAAajhb,UAAUy8Z,qBAAuB,WAC1C,OAAO,KAEXwkB,EAAajhb,UAAUu7Z,kBAAoB,SAAUjhB,GACjDx0V,EAAO9lD,UAAUu7Z,kBAAkB/4Z,KAAKl1B,KAAMgta,GACjC,CAAChta,KAAK6zc,YAAa7zc,KAAK8zc,YAAa9zc,KAAK+zc,UAAW/zc,KAAKg0c,WAChE3gc,QAAQ,SAAU6jC,GAAS,OAAOA,EAAMo9F,SAAS,KAAM04R,KAC9Dhta,KAAKs4b,oBAETqb,EAAajhb,UAAUgha,mBAAqB,SAAUz5V,EAAOjwF,GACzD,IAAIiqc,EAAcjqc,IAAawgb,GAAkB+H,IAE7C2hB,EAAWD,EAAcj0c,KAAK+zc,UAAY/zc,KAAKg0c,WADlCC,EAAcj0c,KAAK6zc,YAAc7zc,KAAK8zc,aAE5Cx/T,SAASr6C,EAAS,GAAKA,EAAM9kF,OAAU,MAClD++b,EAAS5/T,SAASr6C,EAAS,GAAKA,EAAM25W,SAAY,OAEtDD,EAAajhb,UAAUu/Z,2BAA6B,SAAU1wb,GAC1DvB,KAAK6zc,YAAYv/T,SAAS/yI,GAC1BvB,KAAK8zc,YAAYx/T,SAAS,MAC1Bt0I,KAAK+zc,UAAUz/T,SAAS,MACxBt0I,KAAKg0c,UAAU1/T,SAAS,OAE5Bq/T,EAAajhb,UAAUsqB,WAAa,WAChC,OAAO,SAAU/wC,EAAMC,GACnB,OAAID,IAASC,EACF,EAEPD,EAAOC,EACA,GAEH,IAGhBync,EAAajhb,UAAUs7Z,UAAY,SAAUlkW,GACzCtR,EAAO9lD,UAAUs7Z,UAAU94Z,KAAKl1B,KAAM8pF,GACtC9pF,KAAKm0c,4BAETR,EAAajhb,UAAUyhb,yBAA2B,WAC9C,IAAIzyZ,EAAQ1hD,KACR0gC,EAAW,WAAc,OAAOghB,EAAMiuY,eAC1C3vb,KAAK6zc,YAAY3e,cAAcx0Z,GAC/B1gC,KAAK8zc,YAAY5e,cAAcx0Z,GAC/B1gC,KAAK+zc,UAAU7e,cAAcx0Z,GAC7B1gC,KAAKg0c,UAAU9e,cAAcx0Z,IAEjCiza,EAAajhb,UAAU4la,iBAAmB,WACtC,IAAIl7Q,EAAYp9K,KAAKo9K,UAAU7yI,KAAKvqC,MAChCo0c,EAAWp0c,KAAKgzb,sBAAwBgD,GAAalE,SACrDuiB,EAAWr0c,KAAKizb,sBAAwB+C,GAAalE,SACzD9xb,KAAK6zc,YAAY76K,oBAAoB57G,EAAUg3R,EAAW,eAAiB,cAC3Ep0c,KAAK+zc,UAAU/6K,oBAAoB57G,EAAUg3R,EAAW,aAAe,cACvEp0c,KAAK8zc,YAAY96K,oBAAoB57G,EAAUi3R,EAAW,eAAiB,cAC3Er0c,KAAKg0c,UAAUh7K,oBAAoB57G,EAAUi3R,EAAW,aAAe,eAE3EV,EAAajhb,UAAU04Z,iBAAmB,SAAUthW,GAChDtR,EAAO9lD,UAAU04Z,iBAAiBl2Z,KAAKl1B,KAAM8pF,GAC7C9pF,KAAKs4b,mBACLt4b,KAAK6zc,YAAYvoB,kBAAkBx8Z,SAEvC6kb,EAAajhb,UAAUsha,wBAA0B,WAC7C,OAAO2f,EAAazb,wBAExByb,EAAajhb,UAAU8ha,oBAAsB,SAAUxqb,GACnD,IACIkzK,EADclzK,IAAawgb,GAAkB+H,IACzB,IAAM,IAC9B,MAAO,8CAAmDr1Q,EAAM,iIAAyIA,EAAM,6HAAmIA,EAAM,sDAE5Vy2R,EAAajhb,UAAU4/Z,sBAAwB,SAAUtob,GACrD,IAAIiqc,EAAcjqc,IAAawgb,GAAkB+H,IAC7C/ra,EAASytb,EAAcj0c,KAAKgzb,oBAAsBhzb,KAAKizb,oBAEvDihB,EAAWD,EAAcj0c,KAAK+zc,UAAY/zc,KAAKg0c,UAC/Czyc,EAAQvB,KAAKs0c,eAFJL,EAAcj0c,KAAK6zc,YAAc7zc,KAAK8zc,aAEbh4U,YAClCy4U,EAAUv0c,KAAKs0c,cAAcJ,EAASp4U,YAC1C,OAAIt1G,IAAWkra,GAAaxqa,UAGxBlnB,KAAK4xb,0BAA0Bpra,KAG/BA,IAAWkra,GAAaI,SACR,MAATvwb,GAA4B,MAAXgzc,EAEZ,MAAThzc,KAEXoyc,EAAajhb,UAAU2ga,qBAAuB,SAAU8E,EAASC,GAC7D,OAAOD,EAAQhjb,SAAWijb,EAAQjjb,QAC3Bgjb,EAAQyb,WAAaxb,EAAQwb,UAC7Bzb,EAAQz3b,OAAS03b,EAAQ13b,MAGpCizc,EAAajhb,UAAUiga,cAAgB,WACnC,OAAOghB,EAAatb,aAExBsb,EAAajhb,UAAU4hb,cAAgB,SAAU/yc,GAC7C,GAAqB,iBAAVA,EACP,OAAOA,EAEX,IAAIkqL,EAAar5E,GAAE6rR,SAAS18X,GAW5B,OAVIkqL,GAAoC,KAAtBA,EAAW3uK,SACzB2uK,EAAa,MAGbA,QACY59J,WAAW49J,GAGX,MAIpBkoR,EAAajhb,UAAUoga,gBAAkB,SAAU9ob,GAC/C,IAAIiqc,EAAcjqc,IAAawgb,GAAkB+H,IAC7C7xb,EAAOuzc,EAAcj0c,KAAKgzb,oBAAsBhzb,KAAKizb,oBAErD1xb,EAAQvB,KAAKs0c,eADJL,EAAcj0c,KAAK6zc,YAAc7zc,KAAK8zc,aACbh4U,YAElCy4U,EAAUv0c,KAAKs0c,eADJL,EAAcj0c,KAAK+zc,UAAY/zc,KAAKg0c,WACTl4U,YACtC7hC,EAAQ,CACRy4V,WAAYihB,EAAatb,YACzB33b,KAAMA,GAMV,OAJKV,KAAK4xb,0BAA0Blxb,KAChCu5F,EAAM9kF,OAAS5T,EACf04F,EAAM25W,SAAWW,GAEdt6W,GAEX05W,EAAajhb,UAAUw7Z,mBAAqB,WACxC11W,EAAO9lD,UAAUw7Z,mBAAmBh5Z,KAAKl1B,MACzCA,KAAKs4b,mBACL,IAAIkc,EAAYx0c,KAAK2xb,cAAc3xb,KAAKgzb,qBACxC5gV,GAAEyuR,aAAa7gY,KAAK6zc,YAAYvtE,SAAUkuE,GAC1C,IAAIC,EAAUz0c,KAAK6xb,YAAY7xb,KAAKgzb,qBACpC5gV,GAAEyuR,aAAa7gY,KAAK+zc,UAAUztE,SAAUmuE,GACxC,IAAIC,EAAY10c,KAAK2xb,cAAc3xb,KAAKizb,qBACxC7gV,GAAEyuR,aAAa7gY,KAAK8zc,YAAYxtE,SAAUouE,GAC1C,IAAIC,EAAU30c,KAAK6xb,YAAY7xb,KAAKizb,qBACpC7gV,GAAEyuR,aAAa7gY,KAAKg0c,UAAU1tE,SAAUquE,IAE5ChB,EAAatb,YAAc,SAC3Bsb,EAAazb,uBAAyB,CAClClC,GAAaX,OACbW,GAAaV,UACbU,GAAaT,UACbS,GAAaR,mBACbQ,GAAaP,aACbO,GAAaN,sBACbM,GAAalE,UAEjB4hB,GAAa,CACTxpB,GAAY,gBACbypB,EAAajhb,UAAW,mBAAe,GAC1Cghb,GAAa,CACTxpB,GAAY,gBACbypB,EAAajhb,UAAW,mBAAe,GAC1Cghb,GAAa,CACTxpB,GAAY,cACbypB,EAAajhb,UAAW,iBAAa,GACxCghb,GAAa,CACTxpB,GAAY,cACbypB,EAAajhb,UAAW,iBAAa,GACjCihb,EA7KuB,CA8KhC3d,IAQE4e,IACIxrU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFqrU,GAA2C,SAAUr8X,GAErD,SAASqvX,IACL,OAAOrvX,EAAOtjD,KAAKl1B,OAASA,KAahC,OAfA40c,GAAY/M,EAAyBrvX,GAIrCqvX,EAAwBn1a,UAAU4yQ,KAAO,SAAUx7M,GAC/C,IAAIxpF,EAAWN,KAAKoqY,mBAAmBuzC,4BACnC39a,KAAKoqY,mBAAmBuzC,4BAA8BkqB,EAAwBiN,iCAC9E38F,EAAiBn4W,KAAKoqY,mBAAmBk9B,oBACzCytC,EAAoBz0c,EAASkB,QAAQ,eAAgB22W,EAAe,aAAc,eACtFn4W,KAAKinb,YAAY8tB,IAErBlN,EAAwBiN,iCAAmC,8DAlBL,SAAUjrU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAexDkrU,CAAa,CACTr4D,GAAU,uBACXkrD,EAAwBn1a,UAAW,0BAAsB,GACrDm1a,EAhBoC,CAiB7Cz1a,IAQE6ib,IACI7rU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnF0rU,GAA0C,SAAU18X,GAEpD,SAASsvX,IACL,OAAOtvX,EAAOtjD,KAAKl1B,OAASA,KAahC,OAfAi1c,GAAYnN,EAAwBtvX,GAIpCsvX,EAAuBp1a,UAAU4yQ,KAAO,SAAUx7M,GAC9C,IAAIxpF,EAAWN,KAAKoqY,mBAAmBwzC,2BACnC59a,KAAKoqY,mBAAmBwzC,2BAA6BkqB,EAAuBqN,yBAC5Eh9F,EAAiBn4W,KAAKoqY,mBAAmBk9B,oBACzCytC,EAAoBz0c,EAASkB,QAAQ,oBAAqB22W,EAAe,eAAgB,oBAC7Fn4W,KAAKinb,YAAY8tB,IAErBjN,EAAuBqN,yBAA2B,mEAlBI,SAAUtrU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAexDsrU,CAAa,CACTz4D,GAAU,uBACXmrD,EAAuBp1a,UAAW,0BAAsB,GACpDo1a,EAhBmC,CAiB5C11a,IAQEijb,IACIjsU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF8rU,GAAoC,SAAU98X,GAE9C,SAAS68N,IACL,OAAO78N,EAAOtjD,KAAKl1B,KAAiB,mCAAuCA,KAO/E,OATAq1c,GAAYhgK,EAAkB78N,GAK9B68N,EAAiB3iR,UAAU4yQ,KAAO,SAAUx7M,GACxC,IAAIvoF,EAAQuoF,EAAOvoF,MACnBvB,KAAKsmY,SAAS73T,UAAYltE,GAEvB8zS,EAV6B,CAWtC00I,IAQEwrB,IACInsU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFgsU,GAAsC,SAAUh9X,GAEhD,SAASg9X,IACL,OAAOh9X,EAAOtjD,KAAKl1B,KAAiB,0KAAkLA,KAwC1N,OA1CAu1c,GAAYC,EAAsBh9X,GAIlCg9X,EAAqB9ib,UAAU4yQ,KAAO,SAAUx7M,GAC5C,IAAIpoC,EAAQ1hD,KACRA,KAAKy1c,2BAA2B3rX,KAC5BwyS,IACAvxV,QAAQ24B,KAAK,0HAGb1jE,KAAK01c,WAAWpqB,kBAAkB5qb,KAAO,QAGjDV,KAAK0gC,SAAWopD,EAAO+tW,cACvB73b,KAAKymb,4BAA4Bzmb,KAAK01c,WAAWpqB,kBAAmB,QAAS,SAAUr3Z,GAC/EA,EAAEzH,SAAWme,SAASlgB,eAG1Bi3B,EAAMhhB,cAGd80a,EAAqB9ib,UAAU0nB,QAAU,WACrC,OAAOuuV,GAAwB3oY,KAAK01c,WAAW55U,aAEnD05U,EAAqB9ib,UAAU+uF,QAAU,SAAUxnE,GAC/Cj6C,KAAK01c,WAAWphU,SAASk0P,GAAcvuV,GAAM,KAEjDu7Z,EAAqB9ib,UAAUsmQ,oBAAsB,SAAUruI,GAC3D3qJ,KAAK01c,WAAW18K,oBAAoBruI,IAExC6qT,EAAqB9ib,UAAU+ib,2BAA6B,SAAU3rX,GAClE,OAAIA,EAAOkjR,cAAyD,MAAzCljR,EAAOkjR,aAAa2oG,kBACpC7rX,EAAOkjR,aAAa2oG,kBAGpB94E,KAAqBK,KA3CkB,SAAUrzP,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GA0CxD8rU,CAAa,CACT1rB,GAAY,eACbsrB,EAAqB9ib,UAAW,kBAAc,GAC1C8ib,EA3C+B,CA4CxCpjb,IAQEyjb,IACIzsU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFssU,GAAsC,SAAUt9X,GAEhD,SAASs9X,IACL,OAAkB,OAAXt9X,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAkF/D,OApFA61c,GAAYC,EAAsBt9X,GAIlCs9X,EAAqBpjb,UAAUy8Z,qBAAuB,WAClD,OAAO,GAKX2mB,EAAqBpjb,UAAUqjb,iBAAmB,SAAU97W,GACxD,IAAKA,EACD,OAAO,KAGX,GADiBA,EAAM2xE,SACP,CACZ,IAAI4nR,EAAgBv5V,EAChB+7W,EAAUh2c,KAAKi2c,kBAAkBziB,EAAcX,YAC/CqjB,EAAUl2c,KAAKi2c,kBAAkBziB,EAAcT,YACnD,OAAOijB,EAAU,IAAMxiB,EAAc5nR,SAAW,IAAMsqS,EAItD,OAAOl2c,KAAKi2c,kBADIh8W,IAIxB67W,EAAqBpjb,UAAUyjb,0BAA4B,SAAU7tb,GACjE,OAAOA,GAASA,EAAMyna,qBAE1B+lB,EAAqBpjb,UAAU0jb,YAAc,WACzC,OAAOp2c,KAAKq2c,UAEhBP,EAAqBpjb,UAAU4jb,qBAAuB,SAAUr8W,GAe5Dj6F,KAAKq2c,SAbAp8W,GAIYA,EAAM2xE,SAGC3xE,EACM44V,WAGd54V,GAEUv5F,KAZNV,KAAKoyb,eAAenF,oBAc5C6oB,EAAqBpjb,UAAU6jb,oCAAsC,SAAUt8W,GAC3E,OAAKA,GAMYA,EAAM2xE,UAKhB5rK,KAAKw2c,eADMv8W,EACqBv5F,MAR5BV,KAAKw2c,eAAex2c,KAAKq2c,WAUxCP,EAAqBpjb,UAAU4yQ,KAAO,SAAUx7M,GAC5C9pF,KAAKoyb,eAAiB,IAAI7F,GAC1Bvsb,KAAKoyb,eAAe9sJ,KAAKx7M,EAAOkjR,aAAchtW,KAAKg0b,2BACnDh0b,KAAKq2c,SAAWr2c,KAAKoyb,eAAenF,mBAKpC,IAAIzjY,EAAWxpD,KAAKw2c,eAAex2c,KAAKq2c,UACxCr2c,KAAKy2c,YAAYjtZ,IAErBssZ,EAAqBpjb,UAAUk/Z,0BAA4B,SAAUc,GACjE,IAAIyC,EAAqBn1b,KAAKoyb,eAAelF,gBAAgBwF,GAC7D,OAAOyC,GAAsBA,EAAmBC,iBAEpD0gB,EAAqBpjb,UAAU8jb,eAAiB,SAAU91c,GACtD,OAAQV,KAAK4xb,0BAA0Blxb,IACnCA,GACGA,IAASgxb,GAAaI,UACtBpxb,IAASgxb,GAAaxqa,OAE1B4ub,EArF+B,CAsFxC1jb,IAQEskb,IACIttU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFmtU,GAAsD,SAAU9sU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D8sU,GAAoC,SAAUp+X,GAE9C,SAASo+X,IACL,OAAOp+X,EAAOtjD,KAAKl1B,KAAiB,2QAAuRA,KAgF/T,OAlFA02c,GAAYE,EAAoBp+X,GAIhCo+X,EAAmBlkb,UAAUsha,wBAA0B,WACnD,OAAOiD,GAAWiB,wBAEtB0e,EAAmBlkb,UAAUujb,kBAAoB,SAAU/8T,GACvD,OAAIA,EAAUx4I,OAASgxb,GAAaI,SACzB54S,EAAUg+S,SAAW,IAAMh+S,EAAUi+S,OAGtB,MAAtBj+S,EAAUg+S,SACH,GAAKh+S,EAAUg+S,SAEnB,GAAKh+S,EAAUx4I,MAE1Bk2c,EAAmBlkb,UAAU4yQ,KAAO,SAAUx7M,GAC1CtR,EAAO9lD,UAAU4yQ,KAAKpwQ,KAAKl1B,KAAM8pF,GACjC9pF,KAAK8pF,OAASA,EACd9pF,KAAK62c,sBACL72c,KAAK82c,cAAcviB,aAAY,IAEnCqiB,EAAmBlkb,UAAU+jb,YAAc,SAAUjtZ,GACjDq3U,EAAa7gY,KAAK+2c,aAAcvtZ,GAChCq3U,EAAa7gY,KAAK82c,cAAcxwE,UAAW98U,IAE/CotZ,EAAmBlkb,UAAUskb,qBAAuB,SAAU/8W,EAAO3xE,GAIjE,IAAItoB,KAAKm2c,0BAA0B7tb,GAAnC,CAGAkwD,EAAO9lD,UAAU4jb,qBAAqBphb,KAAKl1B,KAAMi6F,GACjD,IAAIg9W,EAAej3c,KAAKu2c,oCAAoCt8W,GAC5Dj6F,KAAKy2c,YAAYQ,GACbA,GAGIj3c,KAAKqsb,SAAS5qU,QAFdxnB,EAEsB0uS,GADN1uS,EACwCi9V,UAGlC,MAE1Bl3b,KAAK82c,cAAcxiU,SAAS,MAG5Bt0I,KAAK82c,cAAcxiU,SAASt0I,KAAK+1c,iBAAiB97W,IAClDj6F,KAAKqsb,SAAS5qU,QAAQ,SAG9Bm1V,EAAmBlkb,UAAUmla,cAAgB,WACzC,IAAIn2Y,EAAQ1hD,KAERk3c,EAAkB1uE,GADAxoY,KAAKqsb,SAASjyY,WAEpCp6C,KAAK8pF,OAAOqtX,qBAAqB,SAAUC,GACnCA,GACmBA,EACNrlB,wBAAwBrwY,EAAM00Z,cAAec,MAItEN,EAAmBlkb,UAAUmkb,oBAAsB,WAC/C,IAAIn1Z,EAAQ1hD,KACRovb,EAAa/B,GAAegC,cAAcrvb,KAAK8pF,OAAOkjR,aAAchtW,KAAKmvb,wBACzElD,EAAsB,CACtB4L,cAAetrP,GAASvsM,KAAK63b,cAActtZ,KAAKvqC,MAAOovb,GACvDpiF,aAAchtW,KAAK8pF,OAAOtkF,OAAOuqY,YAAY/iC,cAEjDhtW,KAAKqsb,SAAW,IAAIN,GAAgB/rb,KAAKgsb,qBAAsBC,EAAqBjsb,KAAK+2c,cACzF/2c,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAM2qY,SAASnra,aAE5Dy1b,GAAa,CACTh6D,GAAU,yBACXi6D,EAAmBlkb,UAAW,4BAAwB,GACzDikb,GAAa,CACTzsB,GAAY,kBACb0sB,EAAmBlkb,UAAW,qBAAiB,GAClDikb,GAAa,CACTzsB,GAAY,iBACb0sB,EAAmBlkb,UAAW,oBAAgB,GAC1Ckkb,EAnF6B,CAoFtCd,IAQEuB,IACIjuU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF8tU,GAAsD,SAAUztU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DytU,GAA4B,SAAU/+X,GAEtC,SAAS++X,IACL,OAAkB,OAAX/+X,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA8J/D,OAhKAq3c,GAAYE,EAAY/+X,GAIxB++X,EAAW7kb,UAAUy8Z,qBAAuB,WACxC,OAAO,KAEXooB,EAAW7kb,UAAUopG,SAAW,SAAU07U,GACtC,IAAIlpa,EAAMkpa,EAAW17U,WAKrB,OAJAxtF,EAAM2vV,EAAS3vV,KACW,KAAfA,EAAIxxB,SACXwxB,EAAM,MAEHA,GAEXipa,EAAW7kb,UAAUyhb,yBAA2B,WAC5C,IAAIzyZ,EAAQ1hD,KACR0gC,EAAW,WAAc,OAAOghB,EAAMiuY,eAC1C3vb,KAAKy3c,QAAQviB,cAAcx0Z,GAC3B1gC,KAAK03c,QAAQxiB,cAAcx0Z,IAE/B62a,EAAW7kb,UAAUs7Z,UAAY,SAAUlkW,GACvCtR,EAAO9lD,UAAUs7Z,UAAU94Z,KAAKl1B,KAAM8pF,GACtC9pF,KAAK23c,iBAAmB7tX,EACxB9pF,KAAKg9C,WAAah9C,KAAK23c,iBAAiBC,sBAAwBL,EAAWM,mBAC3E73c,KAAKy3C,UAAYz3C,KAAK23c,iBAAiBG,gBACK,GAAvC93c,KAAK23c,iBAAiBI,cACjBR,EAAWS,kBACXT,EAAWU,6BACrBj4c,KAAKm0c,4BAEToD,EAAW7kb,UAAUgha,mBAAqB,SAAUz5V,EAAOjwF,IACrCA,IAAawgb,GAAkB+H,IACtBvyb,KAAKy3c,QAAUz3c,KAAK03c,SACxCpjU,SAASr6C,EAAQA,EAAM9kF,OAAS,OAE3Coic,EAAW7kb,UAAUoga,gBAAkB,SAAU9ob,GAC7C,IAAIiqc,EAAcjqc,IAAawgb,GAAkB+H,IAC7C7xb,EAAOuzc,EAAcj0c,KAAKgzb,oBAAsBhzb,KAAKizb,oBAErD1xb,EAAQvB,KAAK87H,SADJm4U,EAAcj0c,KAAKy3c,QAAUz3c,KAAK03c,SAE3Cz9W,EAAQ,CACRy4V,WAAY6kB,EAAWlf,YACvB33b,KAAMA,GAKV,OAHKV,KAAK4xb,0BAA0Blxb,KAChCu5F,EAAM9kF,OAAS5T,GAEZ04F,GAEXs9W,EAAW7kb,UAAUiga,cAAgB,WACjC,OAAO4kB,EAAWlf,aAEtBkf,EAAW7kb,UAAU2ga,qBAAuB,SAAU8E,EAASC,GAC3D,OAAOD,EAAQhjb,SAAWijb,EAAQjjb,QAAUgjb,EAAQz3b,OAAS03b,EAAQ13b,MAEzE62c,EAAW7kb,UAAUu7Z,kBAAoB,SAAUjhB,GAC/Cx0V,EAAO9lD,UAAUu7Z,kBAAkB/4Z,KAAKl1B,KAAMgta,GACjC,CAAChta,KAAKy3c,QAASz3c,KAAK03c,SAC1Brkc,QAAQ,SAAU6jC,GAAS,OAAOA,EAAMo9F,SAAS,KAAM04R,KAC9Dhta,KAAKs4b,oBAETif,EAAW7kb,UAAU4la,iBAAmB,WACpC,IACI3tS,EADY3qJ,KAAKo9K,UAAU7yI,KAAKvqC,KAClBo9K,CAAU,YAAa,aAC5B,CAACp9K,KAAKy3c,QAASz3c,KAAK03c,SAC1Brkc,QAAQ,SAAU6jC,GAAS,OAAOA,EAAM8hP,oBAAoBruI,MAEvE4sT,EAAW7kb,UAAUu/Z,2BAA6B,SAAU1wb,GACxDvB,KAAKy3c,QAAQnjU,SAAS/yI,GACtBvB,KAAK03c,QAAQpjU,SAAS,OAE1BijU,EAAW7kb,UAAUsha,wBAA0B,WAC3C,OAAOujB,EAAWrf,wBAEtBqf,EAAW7kb,UAAU8ha,oBAAsB,SAAUxqb,GACjD,IAAIkzK,EAAMlzK,IAAawgb,GAAkB+H,IAAM,IAAM,IACrD,MAAkB,4DAAiEr1Q,EAAM,wGAAgHA,EAAM,gDAEnNq6R,EAAW7kb,UAAUw7Z,mBAAqB,WACtC11W,EAAO9lD,UAAUw7Z,mBAAmBh5Z,KAAKl1B,MACzC,IAAIk4c,EAAal4c,KAAK2xb,cAAc3xb,KAAKgzb,qBACzCnyD,EAAa7gY,KAAKy3c,QAAQnxE,SAAU4xE,GACpC,IAAIC,EAAan4c,KAAK2xb,cAAc3xb,KAAKizb,qBACzCpyD,EAAa7gY,KAAK03c,QAAQpxE,SAAU6xE,IAExCZ,EAAW7kb,UAAU04Z,iBAAmB,SAAUthW,GAC9CtR,EAAO9lD,UAAU04Z,iBAAiBl2Z,KAAKl1B,KAAM8pF,GAC7C9pF,KAAKs4b,mBACLt4b,KAAKy3c,QAAQnsB,kBAAkBx8Z,SAEnCyob,EAAW7kb,UAAU4/Z,sBAAwB,SAAUtob,GACnD,IAAIiqc,EAAcjqc,IAAawgb,GAAkB+H,IAC7C/ra,EAASytb,EAAcj0c,KAAKgzb,oBAAsBhzb,KAAKizb,oBAC3D,OAAIzsa,IAAWkra,GAAaxqa,UAGxBlnB,KAAK4xb,0BAA0Bpra,IAGgC,MAA5DxmB,KAAK87H,SAASm4U,EAAcj0c,KAAKy3c,QAAUz3c,KAAK03c,WAE3DH,EAAW7kb,UAAUoha,0BAA4B,SAAUhqW,EAAQ0sW,GAC/D,IAAI/qQ,EAAa+qQ,EAAYrhb,OACzB03a,EAAe2J,EAAY91b,KAC3B+1b,EAAYz2b,KAAK23c,iBAAiB7oG,YAAYhlR,EAAO45D,MACrD00T,EAAqBp4c,KAAKy3C,UAAUg/Y,GACpCtB,EAAqBn1b,KAAKoyb,eAAelF,gBAAgBL,GAC7D,GAAIsI,IAEkB,MAAd1pQ,GAAsB0pQ,EAAmBC,iBACzC,OAAOD,EAAmBnya,KAAKyoK,EAAY2sR,GAGnD,GAAiB,MAAb3hB,EACA,OAAO5J,IAAiB6E,GAAa4D,WAAazI,IAAiB6E,GAAakE,aAEpF,IAAIyiB,EAAsBr4c,KAAKy3C,UAAUg0I,GACzC,OAAOzrL,KAAKg9C,WAAW6vY,EAAcurB,EAAoBC,IAE7Dd,EAAWlf,YAAc,OACzBkf,EAAWrf,uBAAyB,CAChCxG,GAAaiE,SACbjE,GAAakE,aACblE,GAAa2D,OACb3D,GAAa4D,UACb5D,GAAamE,YACbnE,GAAaoE,WAEjByhB,EAAWS,kBAAoB,SAAU1zc,GAAQ,OAAOA,GACxDizc,EAAWU,4BAA8B,SAAU3zc,GAC/C,OAAe,MAARA,EAAe,KAAOA,EAAK2tB,WAAWrV,eAEjD26b,EAAWM,mBAAqB,SAAU1ic,EAAQ5T,EAAOkqL,GACrD,OAAQt2K,GACJ,KAAKoic,EAAW5hB,SACZ,OAAOp0b,EAAM0H,QAAQwiL,IAAe,EACxC,KAAK8rR,EAAW3hB,aACZ,OAAsC,IAA/Br0b,EAAM0H,QAAQwiL,GACzB,KAAK8rR,EAAWliB,OACZ,OAAO9zb,IAAUkqL,EACrB,KAAK8rR,EAAWjiB,UACZ,OAAO/zb,GAASkqL,EACpB,KAAK8rR,EAAW1hB,YACZ,OAAqC,IAA9Bt0b,EAAM0H,QAAQwiL,GACzB,KAAK8rR,EAAWzhB,UACZ,IAAInsb,EAAQpI,EAAMwH,YAAY0iL,GAC9B,OAAO9hL,GAAS,GAAKA,IAAWpI,EAAM4C,OAASsnL,EAAWtnL,OAC9D,QAGI,OADA4mC,QAAQ24B,KAAK,uBAAyBvuD,IAC/B,IAGnBmic,GAAa,CACTptB,GAAY,YACbqtB,EAAW7kb,UAAW,eAAW,GACpC4kb,GAAa,CACTptB,GAAY,YACbqtB,EAAW7kb,UAAW,eAAW,GAC7B6kb,EAjKqB,CAkK9B7lB,IAQE4mB,IACIlvU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF+uU,GAAsD,SAAU1uU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D0uU,GAAyC,SAAUhgY,GAEnD,SAASggY,IACL,OAAkB,OAAXhgY,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA8D/D,OAhEAs4c,GAAYE,EAAyBhgY,GAIrCggY,EAAwB9lb,UAAUk7Z,cAAgB,WAC9C5tb,KAAKinb,YAAuB,yLAEhCuxB,EAAwB9lb,UAAUy8Z,qBAAuB,WACrD,OAAO,KAEXqpB,EAAwB9lb,UAAUskb,qBAAuB,SAAU/8W,EAAO3xE,GAItE,IAAItoB,KAAKm2c,0BAA0B7tb,GAAnC,CAGAtoB,KAAKs2c,qBAAqBr8W,GAC1B,IAAIw+W,EAAcz4c,KAAK+1c,iBAAiB97W,GACxCj6F,KAAK04c,qBAAqBpkU,SAASmkU,GACnC,IAAIjvZ,EAAWxpD,KAAKu2c,oCAAoCt8W,GACxDj6F,KAAKy2c,YAAYjtZ,KAErBgvZ,EAAwB9lb,UAAU4yQ,KAAO,SAAUx7M,GAC/CtR,EAAO9lD,UAAU4yQ,KAAKpwQ,KAAKl1B,KAAM8pF,GACjC9pF,KAAK8pF,OAASA,EACd9pF,KAAKstb,YAAcD,GAAeoB,iBAAiBzub,KAAK8pF,OAAOkjR,cAC/D,IAAIoiF,EAAa/B,GAAegC,cAAcrvb,KAAK8pF,OAAOkjR,aAAchtW,KAAKmvb,wBACzEwpB,EAAapsQ,GAASvsM,KAAK44c,uBAAuBrua,KAAKvqC,MAAOovb,GAC9DypB,EAAY74c,KAAK04c,qBAAqBpyE,SAC1CtmY,KAAKymb,4BAA4BoyB,EAAW,QAASF,GACrD34c,KAAKymb,4BAA4BoyB,EAAW,WAAYF,GACxD34c,KAAKymb,4BAA4BoyB,EAAW,UAAWF,GACvD,IAAIl2c,EAAYqnF,EAAOtkF,OAAOsgZ,gBAC1BrjZ,EAAUuqW,cACVvqW,EAAUuqW,aAAay/E,eACyB,IAAhDhqb,EAAUuqW,aAAay/E,cAActob,QACO,YAA5C1B,EAAUuqW,aAAay/E,cAAc,IACrCzsb,KAAK04c,qBAAqBnkB,aAAY,IAG9CikB,EAAwB9lb,UAAUkmb,uBAAyB,SAAU3kb,GACjE,IAAIytB,EAAQ1hD,KACRuB,EAAQvB,KAAK04c,qBAAqB58U,WAClCg9U,EAAkBjlE,GAAa5/W,EAAGq8W,GAAUiB,WAC5CvxY,KAAKstb,cAAgBwrB,GAGzB94c,KAAK8pF,OAAOqtX,qBAAqB,SAAUC,GACnCA,GACmBA,EACNrlB,wBAAwBrwY,EAAM00Z,cAAe70c,MAItEi3c,EAAwB9lb,UAAU+jb,YAAc,SAAUjtZ,GACtDxpD,KAAK04c,qBAAqBnkB,aAAa/qY,IAE3C+uZ,GAAa,CACTruB,GAAY,yBACbsuB,EAAwB9lb,UAAW,4BAAwB,GAC9D6lb,GAAa,CACTj8D,IACDk8D,EAAwB9lb,UAAW,gBAAiB,MAChD8lb,EAjEkC,CAkE3C1C,IAQEiD,IACI3vU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFwvU,GAAsC,SAAUxgY,GAEhD,SAASwgY,IACL,OAAkB,OAAXxgY,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAgB/D,OAlBA+4c,GAAYC,EAAsBxgY,GAIlCwgY,EAAqBtmb,UAAUsha,wBAA0B,WACrD,OAAO2f,GAAazb,wBAExB8gB,EAAqBtmb,UAAUujb,kBAAoB,SAAU/8T,GAEzD,OADcA,EAAUx4I,MAAQgxb,GAAaI,SAElC54S,EAAU/jI,OAAS,IAAM+jI,EAAU06T,SAGtB,MAApB16T,EAAU/jI,OACH,GAAK+jI,EAAU/jI,OAEnB,GAAK+jI,EAAUx4I,MAEnBs4c,EAnB+B,CAoBxCR,IAQES,IACI7vU,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF0vU,GAAoC,SAAU1gY,GAE9C,SAAS0gY,IACL,OAAkB,OAAX1gY,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAe/D,OAjBAi5c,GAAYC,EAAoB1gY,GAIhC0gY,EAAmBxmb,UAAUujb,kBAAoB,SAAU/8T,GAGvD,OAAwB,MAApBA,EAAU/jI,OACH,GAAK+jI,EAAU/jI,OAGf,GAAK+jI,EAAUx4I,MAG9Bw4c,EAAmBxmb,UAAUsha,wBAA0B,WACnD,OAAOujB,GAAWrf,wBAEfghB,EAlB6B,CAmBtCV,IAQEW,GAAsD,SAAUtvU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAWs+T,GACPA,EAA0BA,EAAyB,QAAc,GAAK,UACtEA,EAA0BA,EAAyB,WAAiB,GAAK,aAF7E,CAGGA,KAA8BA,GAA4B,KAC7D,IAu2BWgR,GAv2BPC,GAAuC,WACvC,SAASA,IACLr5c,KAAKs5c,eAAiB,CAElBC,YAAa/D,GAEbgE,eAAgBzf,GAChB0f,oBAAqB7c,GAErB8c,2BAA4BR,GAC5BS,6BAA8BX,GAC9BY,2BAA4BhD,GAE5BiD,gCAAiC3I,GACjC4I,2BAA4B9H,GAC5B+H,oBAAqBlN,GACrBmN,mBAAoBnN,GACpBoN,sBAAuB1H,GAEvB2H,aAAcxvB,GACdyvB,iBAAkBzvB,GAClB0vB,mBAAoBxH,GACpByH,sBAAuBrH,GACvBsH,wBAAyBpH,GACzBqH,sBAAuBnH,GAEvBoH,mBAAoBjD,GACpBkD,qBAAsB9G,GACtB+G,mBAAoBzjB,GAEpB0jB,iBAAkB9F,GAClB+F,gBAAiB1F,GAEjB2F,mBAAoBvF,IAExBt1c,KAAK86c,kBAAoB,CACrBzmc,IAAK,CACD0mc,iBAAkB,oBAClBC,eAAgB,UAEpBxxX,KAAM,CACFuxX,iBAAkB,qBAClBC,eAAgB,UAEpBt1b,OAAQ,CACJq1b,iBAAkB,uBAClBC,eAAgB,UAEpB/ga,KAAM,CACF8ga,iBAAkB,qBAClBC,eAAgB,UAEpBngU,MAAO,CACHkgU,iBAAkB,sBAClBC,eAAgB,gBAEpBC,kBAAmB,CACfF,iBAAkB,kCAClBC,eAAgB,gBAEpBE,aAAc,CACVH,iBAAkB,6BAClBC,eAAgB,gBAEpB/6a,OAAQ,CACJ86a,iBAAkB,qBAClBC,eAAgB,cAEpBG,UAAW,CACPJ,iBAAkB,wBAClBC,eAAgB,cAEpBI,YAAa,CACTL,iBAAkB,0BAClBC,eAAgB,cAEpBK,UAAW,CACPN,iBAAkB,wBAClBC,eAAgB,cAEpBM,WAAY,CACRP,iBAAkB,yBAClBC,eAAgB,cAEpB/tG,gBAAiB,CACb8tG,iBAAkB,iBAClBC,eAAgB,oBAGxBh7c,KAAKu7c,aAAe,GACpBv7c,KAAK8zW,oBAAsB,GAmG/B,OAjGAulG,EAAsB3mb,UAAU4yQ,KAAO,WACnC,IAAI5jP,EAAQ1hD,KACuB,MAA/BA,KAAK0pX,YAAY7V,YACjBr3V,OAAOC,KAAKzc,KAAK0pX,YAAY7V,YAAYxgW,QAAQ,SAAUg3M,GACvD3oK,EAAM85Z,kBAAkBnxP,EAAI3oK,EAAMgoU,YAAY7V,WAAWxpJ,MAGrB,MAAxCrqN,KAAK0pX,YAAY5V,qBACjBt3V,OAAOC,KAAKzc,KAAK0pX,YAAY5V,qBAAqBzgW,QAAQ,SAAUg3M,GAChE3oK,EAAM+5Z,oBAAoBpxP,EAAI3oK,EAAMgoU,YAAY5V,oBAAoBzpJ,OAIhFgvP,EAAsB3mb,UAAUgpb,yBAA2B,SAAUt2L,EAASnmQ,GAC1E,IAAI9d,EAAOnB,KAAK27c,sBAAsBv2L,GAClCplR,KAAKs5c,eAAen4c,GACpB4pC,QAAQ/V,MAAM,8EAGlBh1B,KAAKs5c,eAAen4c,GAAQ8d,GAEhCo6b,EAAsB3mb,UAAU8ob,kBAAoB,SAAUp2L,EAASnmQ,GACnE,IAAI9d,EAAOnB,KAAK27c,sBAAsBv2L,GAClCplR,KAAK8zW,oBAAoB3yW,GACzB4pC,QAAQ/V,MAAM,mFAAqF7zB,GAGvGnB,KAAKu7c,aAAap6c,GAAQ8d,GAM9Bo6b,EAAsB3mb,UAAU+ob,oBAAsB,SAAUr2L,EAASnmQ,GACrE,IAAI9d,EAAOnB,KAAK27c,sBAAsBv2L,GAClCplR,KAAKu7c,aAAap6c,GAClB4pC,QAAQ/V,MAAM,yFAA2F7zB,GAG7GnB,KAAK8zW,oBAAoB3yW,GAAQ8d,GAMrCo6b,EAAsB3mb,UAAUq5a,SAAW,SAAU3mL,GACjD,IAAIjkR,EAAOnB,KAAK27c,sBAAsBv2L,GACtC,OAAIplR,KAAK8zW,oBAAoB3yW,GAClB,CACHkqc,wBAAwB,EACxBpsb,UAAWjf,KAAK8zW,oBAAoB3yW,GACpColB,OAAQ6hb,GAA0B6D,YAGtCjsc,KAAKu7c,aAAap6c,GACX,CACHkqc,wBAAwB,EACxBpsb,UAAWjf,KAAKu7c,aAAap6c,GAC7BolB,OAAQ6hb,GAA0B6D,YAGtCjsc,KAAKs5c,eAAen4c,GACbnB,KAAKs5c,eAAen4c,GACvB,CACIkqc,wBAAwB,EACxBpsb,UAAWjf,KAAKs5c,eAAen4c,GAC/BolB,OAAQ6hb,GAA0B8D,SAEtC,MAEJ1vb,OAAOC,KAAKzc,KAAKs5c,gBAAgBrwc,QAAQ9H,GAAQ,GACjD4pC,QAAQ24B,KAAK,mCAAqCviE,EAAO,0BAEtD,OAEXk4c,EAAsB3mb,UAAUipb,sBAAwB,SAAU5nZ,GAC9D,IAAI6nZ,EAAiB57c,KAAK86c,kBAAkB/mZ,GAC5C,OAAsB,MAAlB6nZ,GACAxpW,GAAEg5R,OAAO,WACLrgW,QAAQ24B,KAAK,8FAAgGk4Y,EAAeZ,eAAiB,IAAMjnZ,EAAM,OAAS6nZ,EAAeZ,eAAiB,IAAMY,EAAeb,mBACxN,uBAAyBhnZ,GACrB6nZ,EAAeb,kBAEnBhnZ,GAEXolZ,GAAa,CACTx8D,GAAU,gBACX08D,EAAsB3mb,UAAW,mBAAe,GACnDymb,GAAa,CACTx8D,GAAU,YACX08D,EAAsB3mb,UAAW,eAAW,GAC/Cymb,GAAa,CACT78D,IACD+8D,EAAsB3mb,UAAW,OAAQ,MACpBymb,GAAa,CACjCj+D,GAAK,0BACNm+D,GA5LoC,GA4MvCwC,GAA6B,WAC7B,SAASA,EAAYC,EAAgBv6b,GAOjCvhB,KAAK8b,QAAS,EAGd9b,KAAK+7c,iBAAmB,GAExB/7c,KAAKg8c,WAAa,GAClBh8c,KAAK87c,eAAiBA,EACtB97c,KAAKi8c,SAAW,CACZvnE,QAASnzX,EACTzZ,SAAU,MAEd9H,KAAKg8c,WAAWz6b,EAASyE,IAAMhmB,KAAKi8c,SAiIxC,OA5HAJ,EAAYnpb,UAAUwpb,YAAc,WAChCl8c,KAAK8b,QAAS,GAElB+/b,EAAYnpb,UAAU4vU,SAAW,WAC7B,OAAOtiW,KAAK8b,QAEhB+/b,EAAYnpb,UAAUypb,4BAA8B,SAAUC,EAAUnpb,GACpE,GAAImpb,EAASt0c,SACT,IAAK,IAAID,EAAI,EAAGA,EAAIu0c,EAASt0c,SAAS3D,OAAQ0D,IAC1C7H,KAAKm8c,4BAA4BC,EAASt0c,SAASD,GAAIorB,GAG/DA,EAASmpb,EAAS1nE,UAEtBmnE,EAAYnpb,UAAU2pb,2BAA6B,SAAU3nE,EAASzhX,EAAUqpb,GAC5E,GAAI5nE,EAAQ6C,mBACR,IAAK,IAAI1vY,EAAI,EAAGA,EAAI6sY,EAAQ6C,mBAAmBpzY,OAAQ0D,IAAK,CACxD,IAAIw/a,EAAY3yC,EAAQ6C,mBAAmB1vY,GACvCw/a,EAAU9vC,mBACVv3Y,KAAKq8c,2BAA2B3nE,EAAQ6C,mBAAmB1vY,GAAIorB,EAAUqpb,GAEpEA,GACLrpb,EAASo0Z,GAIrBp0Z,EAASyhX,IAIbmnE,EAAYnpb,UAAU6pb,6BAA+B,SAAUtpb,EAAUupb,QAC3C,IAAtBA,IAAgCA,GAAoB,GACpDx8c,KAAK8b,OAGL9b,KAAKm8c,4BAA4Bn8c,KAAKi8c,SAAUhpb,GAIhDjzB,KAAKq8c,2BAA2Br8c,KAAKi8c,SAASvnE,QAASzhX,EAAUupb,IAGzEX,EAAYnpb,UAAU+pb,oBAAsB,SAAUxpb,GAClDA,EAASjzB,KAAKi8c,SAASvnE,UAE3BmnE,EAAYnpb,UAAUgqb,gBAAkB,SAAUhoE,GAG9C,IAFA,IAAI/K,EAAU+K,EACVioE,EAAgB,GACZ38c,KAAKg8c,WAAWryE,EAAQ3jX,KAK5BhmB,KAAKg8c,WAAWryE,EAAQ3jX,IAJT,CACX0uX,QAAS/K,EACT7hY,SAAU,MAGd60c,IACAhzE,EAAUA,EAAQ/iW,OAEtB,OAAO+1a,GAEXd,EAAYnpb,UAAUkqb,mBAAqB,SAAUloE,EAASvvY,GAC1D,IAAIu8C,EAAQ1hD,KACZ,GAAKA,KAAK87c,gBAAmB32c,EAI7B,IADA,IAAIwkY,EAAU+K,EACP/K,GAGE3pY,KAAK+7c,iBAAiBpyE,EAAQ3jX,MAC/BhmB,KAAK+7c,iBAAiBpyE,EAAQ3jX,IAAM,IAExC7gB,EAAQkO,QAAQ,SAAU4tF,GAAO,OAAOv/C,EAAMq6Z,iBAAiBpyE,EAAQ3jX,IAAIi7E,EAAIggT,UAAW,IAC1FtX,EAAUA,EAAQ/iW,QAG1Bi1a,EAAYnpb,UAAUmqb,cAAgB,SAAUnoE,EAASioE,GAErD,IADA,IAAIhzE,EAAU+K,EACL7sY,EAAI,EAAGA,EAAI80c,EAAe90c,IAAK,CACpC,IAAIi1c,EAAW98c,KAAKg8c,WAAWryE,EAAQ3jX,IACnC+2b,EAAa/8c,KAAKg8c,WAAWryE,EAAQ/iW,OAAO5gB,IAC3C+2b,EAAWj1c,WACZi1c,EAAWj1c,SAAW,IAE1Bi1c,EAAWj1c,SAASlE,KAAKk5c,GACzBnzE,EAAUA,EAAQ/iW,SAM1Bi1a,EAAYnpb,UAAUsqb,cAAgB,SAAUtoE,EAASvvY,GACrD,GAAKuvY,IAAWA,EAAQmuD,cAAxB,CAQA,IAAI8Z,EAAgB38c,KAAK08c,gBAAgBhoE,GAEzC10Y,KAAK68c,cAAcnoE,EAASioE,GAE5B38c,KAAK48c,mBAAmBloE,EAASvvY,KAErC02c,EAAYnpb,UAAUuqb,QAAU,SAAUvoE,GACtC,OAAO10Y,KAAK8b,SAAW9b,KAAKg8c,WAAWtnE,EAAQ1uX,KAEnD61b,EAAYnpb,UAAUwqb,uBAAyB,SAAUxoE,EAASugB,GAC9D,IAAKj1Z,KAAK87c,eACN,OAAO7mD,EAEX,IAAIkoD,EAAkBn9c,KAAK+7c,iBAAiBrnE,EAAQ1uX,IAEpD,OADaivY,EAAa9/Y,OAAO,SAAU8rF,GAAO,OAAOk8W,EAAgBl8W,EAAIggT,YAGjF46D,EAAYnpb,UAAU0qb,0BAA4B,SAAU1oE,EAASugB,GACjE,IAAKj1Z,KAAK87c,eACN,OAAO,KAEX,IAAIqB,EAAkBn9c,KAAK+7c,iBAAiBrnE,EAAQ1uX,IAEpD,OADaivY,EAAa9/Y,OAAO,SAAU8rF,GAAO,OAAQk8W,EAAgBl8W,EAAIggT,YAG3E46D,EApJsB,GA6J7BwB,GAAsD,SAAUxzU,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5DwzU,GAAqC,WACrC,SAASA,IACLt9c,KAAK6yD,OAAS,GAoUlB,OAlUAyqZ,EAAoB5qb,UAAUirX,SAAW,SAAUC,GAC/C59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,uBACnCtF,KAAKg9H,QACDh9H,KAAKoqY,mBAAmB0rC,oBACxB91a,KAAK6yD,OAAOjvD,KAAK5D,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOiB,uBAAwBhwZ,KAAKg9H,MAAMzyF,KAAKvqC,QAGnGA,KAAK+4Y,OAAOt9T,IAAI,8BAGxB6hY,EAAoB5qb,UAAU4yQ,KAAO,WACjCtlS,KAAKq9W,qBAAuBr9W,KAAKoqY,mBAAmB2pC,yBACpD/za,KAAK6yD,OAAOjvD,KAAK5D,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOsC,mBAAoBrxZ,KAAKu9c,cAAchza,KAAKvqC,SAE3Gs9c,EAAoB5qb,UAAUxR,QAAU,WAChClhB,KAAK6yD,OAAO1uD,QACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,MAEjDj3C,KAAK6yD,OAAS,IAElByqZ,EAAoB5qb,UAAU4wa,oBAAsB,SAAU5uD,GAC1D10Y,KAAKwjc,iBAAmB9uD,GAE5B4oE,EAAoB5qb,UAAUqwa,oBAAsB,WAChD,OAAO/ic,KAAKwjc,kBAEhB8Z,EAAoB5qb,UAAU8qb,iBAAmB,WAC7C,IAAIC,EAAgB,GAMpB,OALArrW,GAAEi4Q,cAAcrqX,KAAKy9c,cAAe,SAAU9gc,EAAK+3X,GAC3CA,GACA+oE,EAAc75c,KAAK8wY,KAGpB+oE,GAEXH,EAAoB5qb,UAAUgrb,gBAAkB,WAC5C,IAAIC,EAAe,GAMnB,OALAvrW,GAAEi4Q,cAAcrqX,KAAKy9c,cAAe,SAAU9gc,EAAK+3X,GAC3CA,GAAWA,EAAQ5kY,MACnB6tc,EAAa/5c,KAAK8wY,EAAQ5kY,QAG3B6tc,GAEXL,EAAoB5qb,UAAUkrb,0BAA4B,WACtD,IAAIl8Z,EAAQ1hD,KACZoyG,GAAEi4Q,cAAcrqX,KAAKy9c,cAAe,SAAU9gc,EAAK+3X,GAC3CA,GAAWA,EAAQ75P,QACnBn5F,EAAM+7Z,cAAc/oE,EAAQ1uX,SAAMvhB,MAK9C64c,EAAoB5qb,UAAU2wa,mCAAqC,SAAUwa,GAEzE,GAAK79c,KAAKoqY,mBAAmB2pC,0BAIzB/za,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,2BAA1C,CAGA,IACItxX,EADqBvhB,KAAKwub,SACIr5Y,cAC7B0oa,IACDA,EAAc,IAAIhC,IAAY,EAAMt6b,IACxB26b,cAEhB2B,EAAYtB,6BAA6B,SAAU7nE,GAC3CA,IAAYnzX,GACZmzX,EAAQwtD,oCAUpBob,EAAoB5qb,UAAUorb,uBAAyB,SAAU93b,GAC7D,OAAOhmB,KAAKy9c,cAAcz3b,IAE9Bs3b,EAAoB5qb,UAAU0wa,gBAAkB,SAAU2a,GACtD,IAAIr8Z,EAAQ1hD,KACRg+c,EAAkB,GAClB9a,EAAe,EAiBnB,OAhBA9wV,GAAEi4Q,cAAcrqX,KAAKy9c,cAAe,SAAU9gc,EAAKshc,GAC3CA,GAAgBA,EAAaj4b,KAAO+3b,EAAsB/3b,KAE1Dk9a,GADcxhZ,EAAM+7Z,cAAcQ,EAAaj4b,IACvB28a,kBAAkB,CACtCzwT,UAAU,EACVuwT,gBAAgB,EAChBC,uBAAuB,IAEvBhhZ,EAAM27T,sBAAwB4gG,EAAar3a,SAC3Co3a,EAAgBC,EAAar3a,OAAO5gB,IAAMi4b,EAAar3a,WAInEwrE,GAAEi4Q,cAAc2zF,EAAiB,SAAUrhc,EAAKk+H,GAC5CA,EAAMqnT,kCAEHgB,GAEXoa,EAAoB5qb,UAAU6qb,cAAgB,SAAUj1b,GACpD,IAAIosX,EAAUpsX,EAAMo7H,KAEhB1jJ,KAAKq9W,sBAAwBq3B,EAAQ75P,QAIrC76I,KAAKy9c,cAAc/oE,EAAQ1uX,IAD3B0uX,EAAQ10W,aACyB00W,OAGAjwY,IAGzC64c,EAAoB5qb,UAAUmsa,cAAgB,SAAUnqD,EAAS8pD,GAC7Dx+b,KAAKk+c,iBAAiBxpE,EAAS8pD,GAC/Bx+b,KAAKm+c,iBAAiBzpE,IAa1B4oE,EAAoB5qb,UAAUwrb,iBAAmB,SAAUxpE,EAAS8pD,GACpCpsV,GAAE8rR,OAAOsgE,IAAa9pD,EAAQ1uX,KAAOw4a,EAAQx4a,IAE/CosF,GAAE8rR,OAAOl+X,KAAKy9c,cAAcjf,EAAQx4a,OAEtDhmB,KAAKy9c,cAAcjf,EAAQx4a,IAAMw4a,IAI7C8e,EAAoB5qb,UAAUyrb,iBAAmB,SAAUzpE,GACnDtiS,GAAE8rR,OAAOl+X,KAAKy9c,cAAc/oE,EAAQ1uX,MACpC0uX,EAAQ6tD,yBAAwB,GAChCvic,KAAKy9c,cAAc/oE,EAAQ1uX,IAAM0uX,GAGjCA,EAAQ6tD,yBAAwB,IAGxC+a,EAAoB5qb,UAAUsqG,MAAQ,WAClCh9H,KAAK+4Y,OAAOt9T,IAAI,SAChBz7E,KAAKy9c,cAAgB,GACrBz9c,KAAKwjc,iBAAmB,MAO5B8Z,EAAoB5qb,UAAU0rb,yBAA2B,WACrD,GAAIp+c,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,2BAA1C,CAIA,IACIwrE,EADqBr+c,KAAKwub,SACS8vB,mBACvC,GAAsB,OAAlBD,EAAJ,CAIA,IAAIzhb,EAAS,GAkBb,OAhBA,SAAS2hb,EAASpqV,GACd,IAAK,IAAItsH,EAAI,EAAG+jI,EAAIzX,EAAMhwH,OAAQ0D,EAAI+jI,EAAG/jI,IAAK,CAC1C,IAAI67I,EAAOvvB,EAAMtsH,GACb67I,EAAK1jH,aACLpD,EAAOh5B,KAAK8/I,GAKRA,EAAK7I,OAAS6I,EAAK57I,UACnBy2c,EAAS76T,EAAK57I,WAK9By2c,CAASF,GACFzhb,EArBHmO,QAAQ24B,KAAK,uDANb34B,QAAQ24B,KAAK,2EA6BrB45Y,EAAoB5qb,UAAU8rb,YAAc,SAAUhwB,GAClDxub,KAAKwub,SAAWA,GAEpB8uB,EAAoB5qb,UAAU0N,QAAU,WACpC,IAAIlpB,EAAQ,EAMZ,OALAk7F,GAAEi4Q,cAAcrqX,KAAKy9c,cAAe,SAAUgB,EAAQ/pE,GAC9CA,GACAx9X,MAGS,IAAVA,GAEXomc,EAAoB5qb,UAAUgsb,oBAAsB,SAAUC,QACrC,IAAjBA,IAA2BA,GAAe,GAC9C,IAAI1rb,EAAW,SAAUyhX,GAAW,OAAOA,EAAQ4tD,gBAAe,IAC9Dsc,EAAqB5+c,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,2BAC/D,GAAI8rE,EAAc,CACd,IAAKC,EAED,YADA7za,QAAQ/V,MAAM,wEAGOh1B,KAAKwub,SACXqwB,uBAAuB5rb,QAG1Cm/E,GAAEi4Q,cAAcrqX,KAAKy9c,cAAe,SAAUz3b,EAAI0uX,GAE1CA,GACAzhX,EAASyhX,KAIjB10Y,KAAKg9H,QAGL4hV,GAAsB5+c,KAAKq9W,sBAC3Br9W,KAAKqjc,qCAOTrjc,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOuC,wBACbrnC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBozF,EAAoB5qb,UAAUosb,kBAAoB,SAAUH,GAExD,QADqB,IAAjBA,IAA2BA,GAAe,GAC1C3+c,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,2BACtC,MAAM,IAAIx+W,MAAM,0DAA4Dr0B,KAAKwub,SAASv5P,WAE9F,IAAI8pR,EAAqB/+c,KAAKwub,SAC1Bv7Z,EAAW,SAAUyhX,GAAW,OAAOA,EAAQ4tD,gBAAe,IAC9Dqc,EACAI,EAAmBF,uBAAuB5rb,GAG1C8rb,EAAmBC,YAAY/rb,GAG/BjzB,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,4BAA8B7yY,KAAKq9W,sBACzEr9W,KAAKqjc,qCAOTrjc,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOuC,wBACbrnC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAQxBozF,EAAoB5qb,UAAUusb,WAAa,SAAUvqE,EAASwqE,GACtDxqE,GACAA,EAAQiuD,kBAAkB,CAAEzwT,UAAU,EAAMuwT,gBAAiByc,KAOrE5B,EAAoB5qb,UAAUysb,cAAgB,SAAU90c,GACpD,IAAIq5I,EAAO1jJ,KAAKwub,SAAS4wB,OAAO/0c,GAChCrK,KAAKq/c,aAAa37T,IAMtB45T,EAAoB5qb,UAAU2sb,aAAe,SAAU3qE,GAC/CA,GACAA,EAAQiuD,kBAAkB,CAAEzwT,UAAU,EAAOuwT,gBAAgB,KAOrE6a,EAAoB5qb,UAAU4sb,YAAc,SAAU31c,EAAOu1c,GACzD,IAAIx7T,EAAO1jJ,KAAKwub,SAAS4wB,OAAOz1c,GAChC3J,KAAKi/c,WAAWv7T,EAAMw7T,IAE1B7B,GAAa,CACT1gE,GAAU,iBACX2gE,EAAoB5qb,UAAW,oBAAgB,GAClD2qb,GAAa,CACT1gE,GAAU,aACX2gE,EAAoB5qb,UAAW,gBAAY,GAC9C2qb,GAAa,CACT1gE,GAAU,uBACX2gE,EAAoB5qb,UAAW,0BAAsB,GACxD2qb,GAAa,CACT1gE,GAAU,cACX2gE,EAAoB5qb,UAAW,iBAAa,GAC/C2qb,GAAa,CACT1gE,GAAU,YACX2gE,EAAoB5qb,UAAW,eAAW,GAC7C2qb,GAAa,EACC,EA9TwDlzU,EA8TrD8yQ,GAAU,iBA7TpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EA6TpC,MACX2gc,EAAoB5qb,UAAW,WAAY,MAC9C2qb,GAAa,CACT/gE,IACDghE,EAAoB5qb,UAAW,OAAQ,MAC1C2qb,GAAa,CACT7gE,IACD8gE,EAAoB5qb,UAAW,UAAW,MACvB2qb,GAAa,CAC/BniE,GAAK,wBACNoiE,GAxU6C,IAAsBnzU,EAGjC,GA+UrCo1U,GAAsD,SAAU11U,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D01U,GAA2B,WAC3B,SAASA,KAsJT,OApJAA,EAAU9sb,UAAUi7Y,iBAAmB,SAAUC,QAGpB,IAAdA,GACP7iY,QAAQ/V,MAAM,uEAElBh1B,KAAKujb,iBAAiB5V,iBAAiBC,EAAW,QAEtD4xC,EAAU9sb,UAAUs2Y,qBAAuB,SAAUnuR,EAAO3I,GAAYlyI,KAAKujb,iBAAiBva,qBAAqBnuR,EAAO3I,EAAU,QACpIstU,EAAU9sb,UAAU60Y,eAAiB,SAAUpma,EAAMo6C,GAAc,OAAOv7C,KAAKujb,iBAAiBhc,eAAepma,EAAMo6C,IACrHika,EAAU9sb,UAAU01X,uBAAyB,SAAUjnZ,GAAQ,OAAOnB,KAAKujb,iBAAiBn7B,uBAAuBjnZ,IACnHq+c,EAAU9sb,UAAUg0Y,wBAA0B,SAAUlha,EAAQ80B,GAAY,OAAOt6B,KAAKujb,iBAAiB7c,wBAAwBlha,EAAQ80B,IAAa,IACtJklb,EAAU9sb,UAAUq0Y,6BAA+B,SAAUtG,EAAanmY,GAAY,OAAOt6B,KAAKujb,iBAAiBxc,6BAA6BtG,EAAanmY,IAAa,IAC1Kklb,EAAU9sb,UAAUyzY,UAAY,SAAUxpZ,GAAO,OAAO3c,KAAKujb,iBAAiBtrB,iBAAiBt7Y,IAC/F6ic,EAAU9sb,UAAUmxY,eAAiB,SAAU47C,GAAe,OAAOz/c,KAAKujb,iBAAiB1f,eAAe47C,GAAa,EAAO,QAC9HD,EAAU9sb,UAAUuwY,eAAiB,WAAc,OAAOjja,KAAKujb,iBAAiBtgB,kBAChFu8C,EAAU9sb,UAAUmkY,iBAAmB,WAAc72Z,KAAKujb,iBAAiB1sB,kBAAiB,EAAO,QACnG2oD,EAAU9sb,UAAUk2Y,oBAAsB,WAAc,OAAO5oa,KAAKujb,iBAAiB3a,uBACrF42C,EAAU9sb,UAAUi2Y,oBAAsB,SAAUF,GAAczoa,KAAKujb,iBAAiB5a,oBAAoBF,EAAY,QACxH+2C,EAAU9sb,UAAU81Y,sBAAwB,WAAcxoa,KAAKujb,iBAAiB/a,sBAAsB,QACtGg3C,EAAU9sb,UAAUgtb,UAAY,WAAc,OAAO1/c,KAAKujb,iBAAiB3gB,iBAAmB5ia,KAAKujb,iBAAiB1gB,kBACpH28C,EAAU9sb,UAAUkwY,cAAgB,WAAc,OAAO5ia,KAAKujb,iBAAiB3gB,iBAC/E48C,EAAU9sb,UAAUmwY,eAAiB,WAAc,OAAO7ia,KAAKujb,iBAAiB1gB,kBAChF28C,EAAU9sb,UAAU6kY,qBAAuB,SAAUt2T,GAAO,OAAOjhG,KAAKujb,iBAAiBhsB,qBAAqBt2T,IAC9Gu+W,EAAU9sb,UAAU6vY,sBAAwB,SAAUthU,GAAO,OAAOjhG,KAAKujb,iBAAiBhhB,sBAAsBthU,IAChHu+W,EAAU9sb,UAAUqvY,iBAAmB,SAAUplZ,EAAKo3K,GAAW/zL,KAAKujb,iBAAiBxhB,iBAAiBplZ,EAAKo3K,EAAS,QACtHyrR,EAAU9sb,UAAUsvY,kBAAoB,SAAUvlZ,EAAMs3K,GAAW/zL,KAAKujb,iBAAiBvhB,kBAAkBvlZ,EAAMs3K,EAAS,QAC1HyrR,EAAU9sb,UAAUuvY,gBAAkB,SAAUtlZ,EAAK4xV,GAAUvuW,KAAKujb,iBAAiBthB,gBAAgBtlZ,EAAK4xV,EAAQ,QAClHixG,EAAU9sb,UAAUwvY,iBAAmB,SAAUzlZ,EAAM8xV,GAAUvuW,KAAKujb,iBAAiBrhB,iBAAiBzlZ,EAAM8xV,EAAQ,QACtHixG,EAAU9sb,UAAUitb,cAAgB,WAAc,OAAO3/c,KAAKujb,iBAAiB9hB,wBAC/E+9C,EAAU9sb,UAAUmvY,kBAAoB,WAAc,OAAO7ha,KAAKujb,iBAAiB1hB,qBACnF29C,EAAU9sb,UAAU4uY,wBAA0B,WAAc,OAAOtha,KAAKujb,iBAAiBjiB,2BACzFk+C,EAAU9sb,UAAUokY,0BAA4B,WAAc,OAAO92Z,KAAKujb,iBAAiBzsB,6BAC3F0oD,EAAU9sb,UAAU6uY,yBAA2B,WAAc,OAAOvha,KAAKujb,iBAAiBhiB,4BAC1Fi+C,EAAU9sb,UAAU8mY,uBAAyB,WAAc,OAAOx5Z,KAAKujb,iBAAiB/pB,0BACxFgmD,EAAU9sb,UAAU4nY,8BAAgC,WAAc,OAAOt6Z,KAAKujb,iBAAiBjpB,iCAC/FklD,EAAU9sb,UAAUkuY,WAAa,SAAUjkZ,EAAK20I,GACzB,iBAAR30I,GAEPouB,QAAQ24B,KAAK,+LACb1jE,KAAKujb,iBAAiB1iB,kBAAkBlkZ,EAAK20I,EAAS,QAGtDtxJ,KAAKujb,iBAAiB3iB,WAAWjkZ,EAAK20I,EAAS,QAGvDkuT,EAAU9sb,UAAUmuY,kBAAoB,SAAUxvQ,EAAWC,GAAWtxJ,KAAKujb,iBAAiB1iB,kBAAkBxvQ,EAAWC,EAAS,QACpIkuT,EAAU9sb,UAAUmtY,YAAc,SAAUC,EAAmBxuQ,GAAWtxJ,KAAKujb,iBAAiB1jB,YAAYC,EAAmBxuQ,EAAS,QACxIkuT,EAAU9sb,UAAUktY,mBAAqB,SAAUvuQ,EAAWC,GAAWtxJ,KAAKujb,iBAAiB3jB,mBAAmBvuQ,EAAWC,IAC7HkuT,EAAU9sb,UAAUitY,iBAAmB,SAAUn6Z,EAAQ4oW,GAAWpuW,KAAKujb,iBAAiB5jB,iBAAiBn6Z,EAAQ4oW,IACnHoxG,EAAU9sb,UAAUktb,eAAiB,SAAUjjc,EAAKy8Y,EAAU/7F,QACzC,IAAbA,IAAuBA,GAAW,GACtCr9T,KAAKujb,iBAAiB3lB,gBAAgB,CAAC,CAAEjhZ,IAAKA,EAAKy8Y,SAAUA,KAAa,EAAO/7F,IAErFmiJ,EAAU9sb,UAAUkrY,gBAAkB,SAAUroL,EAAc8nF,QACzC,IAAbA,IAAuBA,GAAW,GACtCr9T,KAAKujb,iBAAiB3lB,gBAAgBroL,GAAc,EAAO8nF,IAE/DmiJ,EAAU9sb,UAAUilY,aAAe,SAAUl4C,GAAaz/W,KAAKujb,iBAAiB5rB,aAAal4C,IAC7F+/F,EAAU9sb,UAAUijY,YAAc,WAAc,OAAO31Z,KAAKujb,iBAAiB5tB,eAC7E6pD,EAAU9sb,UAAUklY,wBAA0B,SAAUC,EAAWC,GAAe,OAAO93Z,KAAKujb,iBAAiB3rB,wBAAwBC,EAAWC,IAClJ0nD,EAAU9sb,UAAUuqY,gBAAkB,SAAUZ,GAAWr8Z,KAAKujb,iBAAiBtmB,gBAAgBZ,EAAS,QAC1GmjD,EAAU9sb,UAAUyuY,gBAAkB,WAAc,OAAOnha,KAAKujb,iBAAiBpiB,mBACjFq+C,EAAU9sb,UAAU8qY,kBAAoB,SAAUD,GAAUv9Z,KAAKujb,iBAAiB/lB,kBAAkBD,EAAQ,QAC5GiiD,EAAU9sb,UAAU+qY,mBAAqB,SAAUpB,GAAWr8Z,KAAKujb,iBAAiB9lB,mBAAmBpB,EAAS,QAChHmjD,EAAU9sb,UAAU4qY,eAAiB,SAAUC,GAAUv9Z,KAAKujb,iBAAiBjmB,eAAeC,EAAQ,QACtGiiD,EAAU9sb,UAAU2qY,gBAAkB,SAAUhB,GAAWr8Z,KAAKujb,iBAAiBlmB,gBAAgBhB,EAAS,QAC1GmjD,EAAU9sb,UAAU0pY,mBAAqB,SAAUC,GAAWr8Z,KAAKujb,iBAAiBnnB,mBAAmBC,EAAS,QAChHmjD,EAAU9sb,UAAUiqY,qBAAuB,SAAUY,GAAUv9Z,KAAKujb,iBAAiB5mB,qBAAqBY,EAAQ,QAClHiiD,EAAU9sb,UAAUgqY,sBAAwB,SAAUL,GAAWr8Z,KAAKujb,iBAAiB7mB,sBAAsBL,EAAS,QACtHmjD,EAAU9sb,UAAU8pY,kBAAoB,SAAUe,GAAUv9Z,KAAKujb,iBAAiB/mB,kBAAkBe,EAAQ,QAC5GiiD,EAAU9sb,UAAU+pY,mBAAqB,SAAUJ,GAAWr8Z,KAAKujb,iBAAiB9mB,mBAAmBJ,EAAS,QAChHmjD,EAAU9sb,UAAU2uY,mBAAqB,WAAc,OAAOrha,KAAKujb,iBAAiBliB,sBACpFm+C,EAAU9sb,UAAUmqY,gBAAkB,SAAUR,GAAWr8Z,KAAKujb,iBAAiB1mB,gBAAgBR,EAAS,QAC1GmjD,EAAU9sb,UAAUsqY,kBAAoB,SAAUO,GAAUv9Z,KAAKujb,iBAAiBvmB,kBAAkBO,EAAQ,QAC5GiiD,EAAU9sb,UAAUqqY,mBAAqB,SAAUV,GAAWr8Z,KAAKujb,iBAAiBxmB,mBAAmBV,EAAS,QAChHmjD,EAAU9sb,UAAUoqY,eAAiB,SAAUS,GAAUv9Z,KAAKujb,iBAAiBzmB,eAAeS,EAAQ,QACtGiiD,EAAU9sb,UAAUkqY,gBAAkB,SAAUP,GAAWr8Z,KAAKujb,iBAAiB3mB,gBAAgBP,EAAS,QAC1GmjD,EAAU9sb,UAAU0uY,gBAAkB,WAAc,OAAOpha,KAAKujb,iBAAiBniB,mBACjFo+C,EAAU9sb,UAAUunY,6BAA+B,WAAc,OAAOj6Z,KAAKujb,iBAAiBtpB,gCAC9FulD,EAAU9sb,UAAUynY,+BAAiC,WAAc,OAAOn6Z,KAAKujb,iBAAiBppB,kCAChGqlD,EAAU9sb,UAAUwnY,8BAAgC,WAAc,OAAOl6Z,KAAKujb,iBAAiBrpB,iCAC/FslD,EAAU9sb,UAAUinY,4BAA8B,WAAc,OAAO35Z,KAAKujb,iBAAiB5pB,+BAC7F6lD,EAAU9sb,UAAU4mY,eAAiB,SAAU38Y,EAAK+7Y,GAAc,OAAO14Z,KAAKujb,iBAAiBjqB,eAAe38Y,EAAK+7Y,EAAY,QAC/H8mD,EAAU9sb,UAAU+lY,gBAAkB,SAAUh8Y,EAAMi8Y,GAAc,OAAO14Z,KAAKujb,iBAAiB9qB,gBAAgBh8Y,EAAMi8Y,EAAY,QACnI8mD,EAAU9sb,UAAU6mY,mBAAqB,SAAUb,GAAc14Z,KAAKujb,iBAAiBhqB,mBAAmBb,EAAY,QACtH8mD,EAAU9sb,UAAUm3Y,oBAAsB,SAAUC,GAAW9pa,KAAKujb,iBAAiB1Z,oBAAoBC,EAAS,QAClH01C,EAAU9sb,UAAUgvY,oBAAsB,WAAc,OAAO1ha,KAAKujb,iBAAiB7hB,uBACrF89C,EAAU9sb,UAAUmtb,kBAAoB,WAAc,OAAO7/c,KAAKujb,iBAAiB9hB,wBAEnF+9C,EAAU9sb,UAAUqyV,kBAAoB,SAAUlqO,EAAO3I,GACrDnnG,QAAQ/V,MAAM,yEACdh1B,KAAKgpa,qBAAqBnuR,EAAO3I,IAErCstU,EAAU9sb,UAAUotb,YAAc,SAAUpe,EAAQ10Q,GAChDjiJ,QAAQ/V,MAAM,6DACdh1B,KAAKujb,iBAAiBvhB,kBAAkB0/B,GAAS10Q,EAAM,QAE3DwyR,EAAU9sb,UAAUqtb,WAAa,SAAUhyG,EAAO/gL,GAC9CjiJ,QAAQ/V,MAAM,2DACdh1B,KAAKujb,iBAAiBxhB,iBAAiBh0D,GAAQ/gL,EAAM,QAEzDwyR,EAAU9sb,UAAUopD,SAAW,SAAU2jY,GAErC,OADA10a,QAAQ/V,MAAM,uDACPh1B,KAAK6ja,eAAe47C,IAE/BD,EAAU9sb,UAAUstb,SAAW,WAE3B,OADAj1a,QAAQ/V,MAAM,uDACPh1B,KAAKija,kBAEhBu8C,EAAU9sb,UAAUutb,WAAa,WAC7Bl1a,QAAQ/V,MAAM,2DACdh1B,KAAK62Z,oBAET2oD,EAAU9sb,UAAUwtb,sBAAwB,WAExC,OADAn1a,QAAQ/V,MAAM,qEACPh1B,KAAKujb,iBAAiBpiB,mBAEjCq+C,EAAU9sb,UAAUytb,wBAA0B,SAAU5iD,GACpDxyX,QAAQ/V,MAAM,yEACdh1B,KAAKujb,iBAAiB/lB,kBAAkBD,EAAQ,QAEpDiiD,EAAU9sb,UAAU0tb,yBAA2B,SAAU/jD,GACrDtxX,QAAQ/V,MAAM,2EACdh1B,KAAKujb,iBAAiB9lB,mBAAmBpB,EAAS,QAEtDmjD,EAAU9sb,UAAU2tb,qBAAuB,SAAU9iD,GACjDxyX,QAAQ/V,MAAM,mEACdh1B,KAAKujb,iBAAiBjmB,eAAeC,EAAQ,QAEjDiiD,EAAU9sb,UAAU4tb,sBAAwB,SAAUjkD,GAClDtxX,QAAQ/V,MAAM,qEACdh1B,KAAKujb,iBAAiBlmB,gBAAgBhB,EAAS,QAEnDmjD,EAAU9sb,UAAU6tb,qBAAuB,SAAU/6c,EAAQ4oW,GACzDrjU,QAAQ/V,MAAM,qEACdh1B,KAAKujb,iBAAiB5jB,iBAAiBn6Z,EAAQ4oW,EAAS,QAE5DoxG,EAAU9sb,UAAU8tb,qBAAuB,SAAUh7c,GAEjD,OADAulC,QAAQ/V,MAAM,4EACPh1B,KAAK0ma,wBAAwBlha,EAAQ,OAEhD+5c,GAAa,CACT5iE,GAAU,qBACX6iE,EAAU9sb,UAAW,wBAAoB,GAChC6sb,GAAa,CACrBrkE,GAAK,cACNskE,GAtJwB,IAgKpBpG,GAGR/7a,EAAQ+7a,gBAAkB/7a,EAAQ+7a,cAAgB,KAFnCA,GAAa,MAAY,GAAK,QAC5CA,GAAcA,GAAa,UAAgB,GAAK,YASpD,IAMWqH,GAMAC,GAIAC,GAhBPC,GAAsD,SAAU/2U,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAErD22U,GAKRpjb,EAAQojb,iBAAmBpjb,EAAQojb,eAAiB,KAJpCA,GAAc,UAAgB,GAAK,YAClDA,GAAeA,GAAc,WAAiB,GAAK,aACnDA,GAAeA,GAAc,QAAc,GAAK,UAChDA,GAAeA,GAAc,WAAiB,GAAK,cAE5CC,GAGRrjb,EAAQqjb,oBAAsBrjb,EAAQqjb,kBAAoB,KAFvCA,GAAiB,GAAS,GAAK,KACjDA,GAAkBA,GAAiB,KAAW,GAAK,QAE5CC,GAGRtjb,EAAQsjb,sBAAwBtjb,EAAQsjb,oBAAsB,KAFzCA,GAAmB,KAAW,GAAK,OACvDA,GAAoBA,GAAmB,MAAY,GAAK,QAE5D,IAoUQv3U,GA2LAA,GAsGAA,GAqFAA,GAkBJy3U,GA5sBAC,GAAoC,WACpC,SAASA,IACL9gd,KAAK+gd,wBAA0B,GAC/B/gd,KAAKghd,YAAc,GAoRvB,IAAIC,EAmCJ,OArTAA,EAAuBH,EACvBA,EAAmBpub,UAAU4yQ,KAAO,WAChCtlS,KAAKkhd,YAAc9uW,GAAE+9R,WAAW,gBAAiBnwY,KAAKoqY,mBAAoB,MAC1EpqY,KAAKmhd,UAAY/uW,GAAE+9R,WAAW,iBAAkBnwY,KAAKoqY,mBAAoB,MACzEpqY,KAAKohd,UAAYhvW,GAAE+9R,WAAW,iBAAkBnwY,KAAKoqY,mBAAoB,MACzEpqY,KAAKqhd,UAAYjvW,GAAE+9R,WAAW,iBAAkBnwY,KAAKoqY,mBAAoB,MACzEpqY,KAAKshd,WAAalvW,GAAE+9R,WAAW,kBAAmBnwY,KAAKoqY,mBAAoB,MAC3EpqY,KAAKuhd,WAAanvW,GAAE+9R,WAAW,kBAAmBnwY,KAAKoqY,mBAAoB,MAC3EpqY,KAAKwhd,eAAiBpvW,GAAE+9R,WAAW,kBAAmBnwY,KAAKoqY,mBAAoB,MAC/EpqY,KAAKyhd,WAAarvW,GAAE+9R,WAAW,kBAAmBnwY,KAAKoqY,mBAAoB,MAC3EpqY,KAAK0hd,oBAAsBtvW,GAAE+9R,WAAW,iBAAkBnwY,KAAKoqY,mBAAoB,OAEvF02E,EAAmBpub,UAAUivb,cAAgB,SAAUC,EAAYC,QAC5C,IAAfA,IAAyBA,GAAa,GAC1C,IAAI/3X,EAAS,CACTs5S,SAAUw+E,EAAWx+E,SACrB0+E,gBAAiBF,EAAWE,gBAC5BC,YAAa/hd,KAAK+hd,YAAYx3a,KAAKvqC,KAAM4hd,GACzCI,WAAYhid,KAAKgid,WAAWz3a,KAAKvqC,MACjCiid,WAAYjid,KAAKiid,WAAW13a,KAAKvqC,OAErCA,KAAK+gd,wBAAwBn9c,KAAK,CAAEkmF,OAAQA,EAAQ83X,WAAYA,IAChE5hd,KAAKkid,YAAYP,cAAc73X,EAAQ+3X,IAE3Cf,EAAmBpub,UAAUyvb,iBAAmB,SAAUP,GACtD,IAAIQ,EAAkBhwW,GAAE/sG,KAAKrF,KAAK+gd,wBAAyB,SAAUzvc,GAAQ,OAAOA,EAAKswc,aAAeA,IACpGQ,IACApid,KAAKkid,YAAYC,iBAAiBC,EAAgBt4X,QAClDsoB,GAAEq0R,gBAAgBzmY,KAAK+gd,wBAAyBqB,KAGxDtB,EAAmBpub,UAAUxR,QAAU,WACnC,IAAIwgC,EAAQ1hD,KACZA,KAAK+gd,wBAAwB1tc,QAAQ,SAAU+uc,GAAmB,OAAO1ga,EAAMwga,YAAYC,iBAAiBC,EAAgBt4X,UAC5H9pF,KAAK+gd,wBAAwB58c,OAAS,GAE1C28c,EAAmBpub,UAAU2vb,MAAQ,WAC7Brid,KAAKigc,UACLjgc,KAAKiid,WAAWjid,KAAKsid,eAAe,IAG5CxB,EAAmBpub,UAAUqvb,YAAc,SAAUH,EAAY7rE,GAC7D/1Y,KAAKigc,UAAW,EAChBjgc,KAAK4hd,WAAaA,EAClB5hd,KAAKsid,cAAgBvsE,EACrB/1Y,KAAKuid,SAAWvid,KAAK4hd,WAAWY,cAChCxid,KAAKyid,eAAiBzid,KAAK4hd,WAAWc,qBAClC1id,KAAK4hd,WAAWe,eAChB3id,KAAK4hd,WAAWe,gBAEpB3id,KAAK4id,eAET9B,EAAmBpub,UAAUsvb,WAAa,SAAUjsE,GAMhD,GALA/1Y,KAAKsid,cAAgB,KACrBtid,KAAKigc,UAAW,EACZjgc,KAAK4hd,WAAWiB,eAChB7id,KAAK4hd,WAAWiB,gBAEhB7id,KAAKyid,gBAAkBzid,KAAKyid,eAAeT,WAAY,CACvD,IAAIc,EAAgB9id,KAAK+id,sBAAsB/id,KAAKyid,eAAgB1sE,EAAY,KAAM,MAAM,GAC5F/1Y,KAAKyid,eAAeT,WAAWc,GAEnC9id,KAAKyid,eAAiB,KACtBzid,KAAKuid,SAAW,KAChBvid,KAAKgjd,eAETlC,EAAmBpub,UAAUuvb,WAAa,SAAUlsE,EAAYktE,GAC5D,IAAIC,EAAaljd,KAAKmjd,uBAAuBptE,GACzCqtE,EAAapjd,KAAKqjd,qBAAqBttE,GAC3C/1Y,KAAKsid,cAAgBvsE,EACrB/1Y,KAAKsjd,cAAcvtE,GAEnB,IAAIwtE,EAAanxW,GAAE/sG,KAAKrF,KAAKghd,YAAahhd,KAAKwjd,oBAAoBj5a,KAAKvqC,KAAM+1Y,IAC9E,GAAIwtE,IAAevjd,KAAKyid,eACpBzid,KAAKyjd,wBAAwB1tE,EAAYmtE,EAAYE,EAAYH,GACjEjjd,KAAK0jd,wBAAwBH,EAAYxtE,EAAYmtE,EAAYE,EAAYH,GAC7Ejjd,KAAKyid,eAAiBc,OAErB,GAAIA,GAAcA,EAAWtB,WAAY,CAC1C,IAAIa,EAAgB9id,KAAK+id,sBAAsBQ,EAAYxtE,EAAYmtE,EAAYE,EAAYH,GAC/FM,EAAWtB,WAAWa,KAG9BhC,EAAmBpub,UAAUgxb,wBAA0B,SAAUH,EAAYxtE,EAAYmtE,EAAYE,EAAYH,GAC7G,GAAKM,EAAL,CAGA,GAAIA,EAAWI,YAAa,CACxB,IAAIC,EAAiB5jd,KAAK+id,sBAAsBQ,EAAYxtE,EAAYmtE,EAAYE,EAAYH,GAChGM,EAAWI,YAAYC,GAE3B5jd,KAAK6jd,aAAaN,EAAWO,YAAcP,EAAWO,cAAgB,QAE1EhD,EAAmBpub,UAAU+wb,wBAA0B,SAAU1tE,EAAYmtE,EAAYE,EAAYH,GACjG,GAAKjjd,KAAKyid,eAAV,CAGA,GAAIzid,KAAKyid,eAAesB,YAAa,CACjC,IAAIC,EAAiBhkd,KAAK+id,sBAAsB/id,KAAKyid,eAAgB1sE,EAAYmtE,EAAYE,EAAYH,GACzGjjd,KAAKyid,eAAesB,YAAYC,GAEpChkd,KAAK6jd,aAAa,QAEtB/C,EAAmBpub,UAAUuxb,+BAAiC,SAAUV,GACpE,IAAI13W,EAAa,CAAC03W,EAAW/uL,gBACzB0vL,EAAsBX,EAAWY,uBAAyBZ,EAAWY,yBAA2B,KAIpG,OAHID,IACAr4W,EAAaA,EAAW7yF,OAAOkrc,IAE5Br4W,GAGXi1W,EAAmBpub,UAAU8wb,oBAAsB,SAAUztE,EAAYwtE,GACrE,IAAIa,GAAkB,EAetB,OAdApkd,KAAKikd,+BAA+BV,GAC/Bpuc,OAAO,SAAUksX,GAAc,OAAOA,IACtChuX,QAAQ,SAAUguX,GACnB,IAAItzT,EAAOszT,EAAW52X,wBAEH,IAAfsjE,EAAKrkE,OAA+B,IAAhBqkE,EAAKvjE,QAGTurY,EAAWrzM,SAAW30H,EAAK9hE,MAAQ8pY,EAAWrzM,SAAW30H,EAAK7hE,OAChE6pY,EAAWpzM,SAAW50H,EAAKhiE,KAAOgqY,EAAWpzM,SAAW50H,EAAK/hE,SAE3Eo4c,GAAkB,KAGnBA,GAAmBb,EAAWc,eAAerkd,KAAK4hd,WAAWlhd,OAExEogd,EAAmBpub,UAAU4xb,cAAgB,SAAUf,GACnDvjd,KAAKghd,YAAYp9c,KAAK2/c,IAE1BzC,EAAmBpub,UAAU6xb,iBAAmB,SAAUhB,GACtDvjd,KAAKghd,YAAchhd,KAAKghd,YAAY7rc,OAAO,SAAUqX,GAAU,OAAOA,EAAOgoQ,iBAAmB+uL,EAAW/uL,kBAE/GssL,EAAmBpub,UAAU8xb,qBAAuB,WAChD,OAAOxkd,KAAKghd,YAAY54c,KAAK,SAAUq8c,GAAS,OAAOA,EAAMC,YAEjE5D,EAAmBpub,UAAUiyb,iBAAmB,SAAU76X,GACtD,IAAI86X,EAAkB5kd,KAAKghd,YAAY7rc,OAAO,SAAUqX,GAAU,OAAOA,EAAOk4b,WAChF,OAAOtyW,GAAE/sG,KAAKu/c,EAAiB,SAAUz6V,GAAQ,OAAOA,EAAKqqK,iBAAmB1qM,EAAO0qM,kBAE3FssL,EAAmBpub,UAAUywb,uBAAyB,SAAU76b,GAC5D,IAAIo6K,EAAU1iM,KAAKsid,cAAc5/Q,QAC7BmiR,EAAWv8b,EAAMo6K,QACrB,OAAIA,IAAYmiR,EACL,KAEJniR,EAAUmiR,EAAWxnb,EAAQsjb,oBAAoBmE,KAAOznb,EAAQsjb,oBAAoBoE,OAE/FjE,EAAmBpub,UAAU2wb,qBAAuB,SAAU/6b,GAC1D,IAAIq6K,EAAU3iM,KAAKsid,cAAc3/Q,QAC7BqiR,EAAW18b,EAAMq6K,QACrB,OAAIA,IAAYqiR,EACL,KAEJriR,EAAUqiR,EAAW3nb,EAAQqjb,kBAAkBuE,GAAK5nb,EAAQqjb,kBAAkBwE,MAEzFpE,EAAmBpub,UAAUqwb,sBAAwB,SAAUQ,EAAYj7b,EAAO46b,EAAYE,EAAYH,GAEtG,IAAIkC,EAAiB5B,EAAW/uL,eAC5BzmN,EAAOo3Y,EAAe16c,wBACtBE,EAAK3K,KAGT,MAAO,CAAEsoB,MAAOA,EAAOiT,EAFfjT,EAAMo6K,QAAU30H,EAAK9hE,KAEAqZ,EADrBgD,EAAMq6K,QAAU50H,EAAKhiE,IACMq3c,WAAYA,EAAYF,WAAYA,EAAYtB,WAHaj3c,EAAGi3c,WAGQqB,UAAWA,EAAWV,SAH3D53c,EAAG43c,SAG4Et4F,IAHhIt/W,EAAGw4Y,QAGuIj5B,UAHlHv/W,EAAGu/W,UAGqIi7F,eAAgBA,IAEzMrE,EAAmBpub,UAAU4wb,cAAgB,SAAUh7b,GACnD,IAAI88b,EAAQpld,KAAKqld,OAEbC,EADYF,EAAM36c,wBACMD,OAIxB+6c,EAAenzW,GAAE2rR,eAAiB,EAClCynF,EAAgBpzW,GAAE4rR,gBAAkB,EACpCjyX,EAAMuc,EAAMumI,MAASy2T,EAAc,EACnCr5c,EAAOqc,EAAMsmI,MAAQ,GACrB62T,EAAczld,KAAKoqY,mBAAmBhwB,cACtCsrG,EAAgBv6b,OAAO+pD,aAAeuwY,EAAYjxa,gBAAgBpsB,UAClEu9b,EAAgBx6b,OAAO8pD,aAAewwY,EAAYjxa,gBAAgBkkC,WAElE6sY,EAAe,GAAOt5c,EAAOm5c,EAAMryY,YAAgBwyY,EAAeI,IAClE15c,EAAOs5c,EAAeI,EAAgBP,EAAMryY,aAE5C9mE,EAAO,IACPA,EAAO,GAEPu5c,EAAgB,GAAOz5c,EAAMq5c,EAAMvyY,aAAiB2yY,EAAgBE,IACpE35c,EAAMy5c,EAAgBE,EAAgBN,EAAMvyY,cAE5C9mE,EAAM,IACNA,EAAM,GAEVq5c,EAAM75c,MAAMU,KAAOA,EAAO,KAC1Bm5c,EAAM75c,MAAMQ,IAAMA,EAAM,MAE5B+0c,EAAmBpub,UAAUswb,YAAc,WACnChjd,KAAKqld,QAAUrld,KAAK4ld,cACpB5ld,KAAK4ld,aAAankc,YAAYzhB,KAAKqld,QAEvCrld,KAAKqld,OAAS,MAElBvE,EAAmBpub,UAAUkwb,YAAc,WACvC5id,KAAKqld,OAASjzW,GAAE8uR,aAAa+/E,EAAqB4E,gBAClD,IAAI7zY,EAAQhyE,KAAKu7K,YAAYuoQ,WAAW9xW,MACpCA,GACAogC,GAAE+tR,YAAYngY,KAAKqld,OAAQrzY,GAE/BhyE,KAAK8ld,WAAa9ld,KAAKqld,OAAOj6c,cAAc,sBAC5CpL,KAAK6jd,aAAa,MAClB,IAAIrpB,EAAQx6b,KAAKqld,OAAOj6c,cAAc,uBAClC26c,EAAe/ld,KAAK4hd,WAAWmE,aAC/B3zW,GAAE65D,WAAW85S,KACbA,EAAeA,KAEnBvrB,EAAM/rX,UAAY2jC,GAAE9iE,OAAOy2a,GAC3B/ld,KAAKqld,OAAO95c,MAAMf,OAAS,OAC3BxK,KAAKqld,OAAO95c,MAAMQ,IAAM,OACxB/L,KAAKqld,OAAO95c,MAAMU,KAAO,OACzB,IAAIw5c,EAAczld,KAAKoqY,mBAAmBhwB,cAC1Cp6W,KAAK4ld,aAAeH,EAAYr6c,cAAc,QACzCpL,KAAK4ld,aAIN5ld,KAAK4ld,aAAa9tc,YAAY9X,KAAKqld,QAHnCt6a,QAAQ24B,KAAK,6EAMrBo9Y,EAAmBpub,UAAUmxb,aAAe,SAAUjlM,EAAUonM,GAG5D,IAAIjrB,EAIJ,YANc,IAAVirB,IAAoBA,GAAQ,GAChC5zW,GAAE4uR,aAAahhY,KAAK8ld,YAEflnM,IACDA,EAAW5+Q,KAAK4hd,WAAWqE,iBAAmBhF,EAAqBiF,kBAE/DtnM,GACJ,KAAKqiM,EAAqBkF,YACtBprB,EAAQ/6b,KAAKkhd,YACb,MACJ,KAAKD,EAAqBmF,UACtBrrB,EAAQ/6b,KAAKohd,UACb,MACJ,KAAKH,EAAqBoF,UACtBtrB,EAAQ/6b,KAAKqhd,UACb,MACJ,KAAKJ,EAAqBqF,WACtBvrB,EAAQ/6b,KAAKshd,WACb,MACJ,KAAKL,EAAqBsF,WACtBxrB,EAAQ/6b,KAAKuhd,WACb,MACJ,KAAKN,EAAqBuF,eACtBzrB,EAAQ/6b,KAAKwhd,eACb,MACJ,KAAKP,EAAqBwF,WACtB1rB,EAAQ/6b,KAAKyhd,WACb,MACJ,KAAKR,EAAqBiF,iBACtBnrB,EAAQ/6b,KAAK0hd,oBACb,MACJ,KAAKT,EAAqByF,UACtB3rB,EAAQ/6b,KAAKmhd,UAGrB/uW,GAAEmuR,oBAAoBvgY,KAAK8ld,WAAY,yBAA0BE,GAC7DjrB,IAAU/6b,KAAKmhd,WAAanhd,KAAKoqY,mBAAmBitC,mCAGpD0jB,GACA/6b,KAAK8ld,WAAWhuc,YAAYijb,IAIpC+lB,EAAmBqF,YAAc,SACjCrF,EAAmBsF,UAAY,OAC/BtF,EAAmBuF,UAAY,OAC/BvF,EAAmBwF,WAAa,QAChCxF,EAAmByF,WAAa,QAChCzF,EAAmB0F,eAAiB,YACpC1F,EAAmB2F,WAAa,QAChC3F,EAAmBoF,iBAAmB,aACtCpF,EAAmB4F,UAAY,OAC/B5F,EAAmB+E,eAAiB,6LACpCjF,GAAa,CACTjkE,GAAU,uBACXmkE,EAAmBpub,UAAW,0BAAsB,GACvDkub,GAAa,CACTjkE,GAAU,gBACXmkE,EAAmBpub,UAAW,mBAAe,GAChDkub,GAAa,CACTjkE,GAAU,gBACXmkE,EAAmBpub,UAAW,mBAAe,GAChDkub,GAAa,CACTjkE,GAAU,cACXmkE,EAAmBpub,UAAW,iBAAa,GAC9Ckub,GAAa,CACTjkE,GAAU,YACXmkE,EAAmBpub,UAAW,eAAW,GAC5Ckub,GAAa,CACTtkE,IACDwkE,EAAmBpub,UAAW,OAAQ,MACzCkub,GAAa,CACTpkE,IACDskE,EAAmBpub,UAAW,UAAW,MACvBuub,EAAuBL,GAAa,CACrD1lE,GAAK,uBACN4lE,GAzTiC,GAmUpC6F,IACIv9U,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFo9U,GAAsD,SAAU/8U,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D+8U,GAA6B,SAAUruY,GAEvC,SAASquY,EAAYnyE,EAASlvY,EAAQixb,EAAWqwB,GAC7C,IAAIpla,EAAQ82B,EAAOtjD,KAAKl1B,KAAM,uEAA6EA,KAK3G,OAJA0hD,EAAMgzV,QAAUA,EAChBhzV,EAAMl8C,OAASA,EACfk8C,EAAM+0Y,UAAYA,EAClB/0Y,EAAMola,MAAQA,EACPpla,EAyDX,OAhEAila,GAAYE,EAAaruY,GASzBquY,EAAYn0b,UAAUk7Z,cAAgB,WACvB5tb,KAAKsmY,SACXxuX,YAAYs6F,GAAEw9R,iBAAiB,UAAW5vY,KAAK8md,MAAM18E,mBAAoB,OAC9EpqY,KAAK2hd,gBACL3hd,KAAK+md,qBACL,IAAI72b,EAAWlwB,KAAK8md,MAAM18E,mBAAmBmtC,mBACzC,IAAIyvC,GAA0Bhnd,KAAMA,KAAK8md,MAAO9md,KAAK00Y,QAAS10Y,KAAKwF,QACnE,IAAIyhd,GAA6Bjnd,KAAMA,KAAK8md,MAAO9md,KAAK00Y,QAAS10Y,KAAKwF,QAC1ExF,KAAKspb,WAAWp5Z,EAAUlwB,KAAK8md,MAAMt1c,UAEzCq1c,EAAYn0b,UAAUw0b,iBAAmB,WAErC,IADsBlnd,KAAK8md,MAAM18E,mBAAmBstC,2BAEhD,OAAO,EAEX,IAAIh4W,EAAY1/D,KAAK8md,MAAMloB,oBAAoB4e,mBAC/C,OAA4C,IAArC99Y,EAAUz2D,QAAQjJ,KAAK00Y,SAAkBh1U,EAAUv7D,OAAS,GAGvE0id,EAAYn0b,UAAUq0b,mBAAqB,WACvC,IAAII,EAAUnnd,KAAK8md,MAAM18E,mBAAmBmtC,mBAC7Bv3a,KAAK8md,MAAM18E,mBAAmBuX,cAC7BwlE,GACZ/0W,GAAEg5R,OAAO,WACL,OAAOrgW,QAAQ24B,KAAK,mFACrB,mCAGXmjZ,EAAYn0b,UAAUivb,cAAgB,WAClC,IAAIjga,EAAQ1hD,KACRuid,EAAW,CACX7tE,QAAS10Y,KAAK00Y,QACdvvY,QAAS,CAACnF,KAAKwF,QACf4hd,iBAAkBpnd,KAAKy2b,WAEvBzmF,EAAchwW,KAAKwF,OAAOuqY,YAAY//B,YACtC4xG,EAAa,CACblhd,KAAM28B,EAAQojb,eAAe4G,QAC7BjkF,SAAUpjY,KAAKsmY,SACfy/E,aAAc,WACV,IAAIuB,EAAgB5la,EAAMwla,mBAC1B,OAAIl3G,EACOA,EAAYuyG,EAAU+E,GAER,IAAlBA,EAAsB5la,EAAM+0Y,UAAY6wB,EAAgB,SAEnE9E,YAAa,WAAc,OAAOD,GAClCT,gBAAiB,GAErB9hd,KAAK8md,MAAMS,mBAAmB5F,cAAcC,GAAY,GACxD5hd,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAMola,MAAMS,mBAAmBpF,iBAAiBP,MAE7FgF,GAAa,CACTtqE,IACDuqE,EAAYn0b,UAAW,gBAAiB,MACpCm0b,EAjEsB,CAkE/Bz0b,IACEo1b,GAAoC,SAAUhvY,GAE9C,SAASgvY,EAAmB5gb,EAAQ8tW,EAASlvY,GACzC,IAAIk8C,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAIjC,OAHA0hD,EAAM9a,OAASA,EACf8a,EAAMl8C,OAASA,EACfk8C,EAAMgzV,QAAUA,EACThzV,EAqBX,OA3BAila,GAAYa,EAAoBhvY,GAQhCgvY,EAAmB90b,UAAU+0b,sBAAwB,SAAUC,GAC3D,GAAIA,EACA1nd,KAAK4mC,OAAOi6V,cAAa,OAExB,CACD,IAAIvgQ,EAAQtgI,KAAKwF,OAAOm9Y,UAAU3iZ,KAAK00Y,SAChBtiS,GAAE65D,WAAWjsK,KAAKwF,OAAOuqY,YAAYj+B,UAKxD9xW,KAAK4mC,OAAOi6V,cAAa,GACzB7gY,KAAK4mC,OAAOq7V,WAAW3hQ,IAGvBtgI,KAAK4mC,OAAOi6V,aAAavgQ,KAI9BknV,EA5B6B,CA6BtCphC,IAEE6gC,GAA8C,SAAUzuY,GAExD,SAASyuY,EAA6Brgb,EAAQkgb,EAAOpyE,EAASlvY,GAC1D,IAAIk8C,EAAQ82B,EAAOtjD,KAAKl1B,KAAM4mC,EAAQ8tW,EAASlvY,IAAWxF,KAE1D,OADA0hD,EAAMola,MAAQA,EACPpla,EAoBX,OAxBAila,GAAYM,EAA8BzuY,GAM1CyuY,EAA6Bv0b,UAAUk7Z,cAAgB,WACnD5tb,KAAKymb,4BAA4Bzmb,KAAK8md,MAAM18E,mBAAoB,kBAAmBpqY,KAAK2nd,kBAAkBp9a,KAAKvqC,OAE/GA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQW,mBAAoBn+b,KAAK4nd,kBAAkBr9a,KAAKvqC,OACvGA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQsE,mBAAoB9hc,KAAK4nd,kBAAkBr9a,KAAKvqC,OACvGA,KAAK4nd,qBAETX,EAA6Bv0b,UAAUi1b,kBAAoB,WACvD3nd,KAAK4nd,qBAETX,EAA6Bv0b,UAAUk1b,kBAAoB,WAEvD,IAAIF,EAAiB1nd,KAAK8md,MAAM18E,mBAAmBotC,oBACnDx3a,KAAKynd,sBAAsBC,IAE/Bd,GAAa,CACTtqE,IACD2qE,EAA6Bv0b,UAAW,gBAAiB,MACrDu0b,EAzBuC,CA0BhDO,IAEER,GAA2C,SAAUxuY,GAErD,SAASwuY,EAA0Bpgb,EAAQkgb,EAAOpyE,EAASlvY,GACvD,IAAIk8C,EAAQ82B,EAAOtjD,KAAKl1B,KAAM4mC,EAAQ8tW,EAASlvY,IAAWxF,KAE1D,OADA0hD,EAAMola,MAAQA,EACPpla,EA4BX,OAhCAila,GAAYK,EAA2BxuY,GAMvCwuY,EAA0Bt0b,UAAUk7Z,cAAgB,WAEhD5tb,KAAKymb,4BAA4Bzmb,KAAK8md,MAAMpnE,aAAcqP,GAAOxL,mBAAoBvjZ,KAAK4nd,kBAAkBr9a,KAAKvqC,OACjHA,KAAKymb,4BAA4Bzmb,KAAK8md,MAAMpnE,aAAcqP,GAAOjK,qBAAsB9kZ,KAAK4nd,kBAAkBr9a,KAAKvqC,OACnHA,KAAKymb,4BAA4Bzmb,KAAK8md,MAAMpnE,aAAcqP,GAAOI,+BAAgCnvZ,KAAK4nd,kBAAkBr9a,KAAKvqC,OAE7HA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQW,mBAAoBn+b,KAAK4nd,kBAAkBr9a,KAAKvqC,OACvGA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQsE,mBAAoB9hc,KAAK4nd,kBAAkBr9a,KAAKvqC,OACvGA,KAAKymb,4BAA4Bzmb,KAAK8md,MAAM18E,mBAAoB,kBAAmBpqY,KAAK2nd,kBAAkBp9a,KAAKvqC,OAC/GA,KAAK4nd,qBAETZ,EAA0Bt0b,UAAUi1b,kBAAoB,WACpD3nd,KAAK4nd,qBAETZ,EAA0Bt0b,UAAUk1b,kBAAoB,WAEpD,IAAIC,EAAiB7nd,KAAK8md,MAAMgB,UAAUC,oBACtCC,EAAuBH,GAAkBA,EAAeG,uBACxDznG,EAAkBvgX,KAAK8md,MAAM18E,mBAAmBotC,oBAChDgtC,EAAuBxkd,KAAK8md,MAAMS,mBAAmB/C,uBAEzDxkd,KAAKynd,sBADiBO,IAAyBxD,GAAyBjkG,IAG5EqmG,GAAa,CACTtqE,IACD0qE,EAA0Bt0b,UAAW,gBAAiB,MAClDs0b,EAjCoC,CAkC7CQ,IAQES,IACI7+U,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnF0+U,GAAoC,SAAU1vY,GAE9C,SAAS0vY,EAAmB55G,GACxB,IAAI5sT,EAAQ82B,EAAOtjD,KAAKl1B,KAAM,iDAAuDA,KAGrF,OAFA0hD,EAAMyma,qBAAsB,EAC5Bzma,EAAM4sT,WAAaA,EACZ5sT,EAoEX,OAzEAuma,GAAYC,EAAoB1vY,GAOhC0vY,EAAmBx1b,UAAU0jB,UAAY,SAAU9tB,GAC1C8pF,GAAEoiS,+BAA+Bx0Y,KAAKoqY,mBAAoB9hX,EAAOtoB,KAAK8pF,OAAO45D,KAAM1jJ,KAAK8pF,OAAOtkF,QAAQ,IACxGxF,KAAK8pF,OAAO1zC,UAAU9tB,IAG9B4/b,EAAmBx1b,UAAU4zW,OAAS,WAOlC,OAJKtmY,KAAKmod,sBACNnod,KAAK8X,YAAY9X,KAAKsuW,WAAWg4B,UACjCtmY,KAAKmod,qBAAsB,GAExB3vY,EAAO9lD,UAAU4zW,OAAOpxW,KAAKl1B,OAExCkod,EAAmBx1b,UAAU4yQ,KAAO,SAAUx7M,GAC1C,IAAIpoC,EAAQ1hD,KACZA,KAAK8pF,OAASA,EACd9pF,KAAKoqY,mBAAmBirC,WAAWr1a,KAAKsmY,SAAU4hF,EAAmBE,8BAA8B,GACnGpod,KAAK2mb,eAAe,WACZjlY,EAAM4sT,WAAWptV,SACjBwgC,EAAM4sT,WAAWptV,YAGzBlhB,KAAKymb,4BAILjuW,EAAO9lD,UAAU4zW,OAAOpxW,KAAKl1B,MAAO,UAAWA,KAAKo2C,UAAU7L,KAAKvqC,QAEvEkod,EAAmBx1b,UAAU04Z,iBAAmB,WACxCprb,KAAKsuW,WAAW88E,kBAChBprb,KAAKsuW,WAAW88E,oBAGxB88B,EAAmBx1b,UAAUopG,SAAW,WACpC,OAAO97H,KAAKsuW,WAAWxyO,YAE3BosV,EAAmBx1b,UAAU21b,oBAAsB,WAC/C,GAAIrod,KAAKsuW,WAAW+5G,oBAChB,OAAOrod,KAAKsuW,WAAW+5G,uBAG/BH,EAAmBx1b,UAAU41b,iBAAmB,WAC5C,GAAItod,KAAKsuW,WAAWg6G,iBAChB,OAAOtod,KAAKsuW,WAAWg6G,oBAG/BJ,EAAmBx1b,UAAU61b,iBAAmB,WAC5C,GAAIvod,KAAKsuW,WAAWi6G,iBAChB,OAAOvod,KAAKsuW,WAAWi6G,oBAG/BL,EAAmBx1b,UAAU84Z,QAAU,WAC/Bxrb,KAAKsuW,WAAWk9E,SAChBxrb,KAAKsuW,WAAWk9E,WAGxB08B,EAAmBx1b,UAAUg5Z,SAAW,WAChC1rb,KAAKsuW,WAAWo9E,UAChB1rb,KAAKsuW,WAAWo9E,YAGxBw8B,EAAmBE,6BAA+B,qBA5EI,SAAUv+U,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAyExD0+U,CAAa,CACT7rE,GAAU,uBACXurE,EAAmBx1b,UAAW,0BAAsB,GAChDw1b,EA1E6B,CA2EtCn+B,IAQE0+B,IACIr/U,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFk/U,GAA+B,SAAUlwY,GAEzC,SAASkwY,EAAch0E,EAASlvY,EAAQixb,EAAWqwB,EAAO6B,GACtD,IAAIjna,EAAQ82B,EAAOtjD,KAAKl1B,KAAM,oEAA0EA,KAMxG,OALA0hD,EAAMgzV,QAAUA,EAChBhzV,EAAMl8C,OAASA,EACfk8C,EAAM+0Y,UAAYA,EAClB/0Y,EAAMola,MAAQA,EACdpla,EAAMina,MAAQA,EACPjna,EAgDX,OAxDA+ma,GAAYC,EAAelwY,GAU3BkwY,EAAch2b,UAAUk7Z,cAAgB,WACzB5tb,KAAKsmY,SACXxuX,YAAYs6F,GAAEw9R,iBAAiB,UAAW5vY,KAAK8md,MAAM18E,mBAAoB,OAC9EpqY,KAAK2hd,gBACL3hd,KAAK4od,mBAETF,EAAch2b,UAAUivb,cAAgB,WACpC3hd,KAAK0pb,oBAAoB,YAAa1pb,KAAK+hd,YAAYx3a,KAAKvqC,QAEhE0od,EAAch2b,UAAUqvb,YAAc,SAAU8G,GAC5C,IAAInna,EAAQ1hD,KACR8od,EAAoB9od,KAAKwF,OAAOuqY,YAAYlhC,mBAC5CotB,EAAO7pR,GAAEkqR,cACRL,GACD4sF,EAAUE,aAAaC,aAAahpd,KAAK2od,MAAO,EAAG,GAkBnDG,EACAA,EAAkB,CAAEp0E,QAAS10Y,KAAK00Y,QAASm0E,UAAWA,IAhBnC,WACnB,IACI,IAAII,EAAWzvb,KAAKC,UAAUioB,EAAMgzV,QAAQ5kY,MACxCmsX,EACA4sF,EAAUE,aAAa5iN,QAAQ,OAAQ8iN,IAGvCJ,EAAUE,aAAa5iN,QAAQ,mBAAoB8iN,GACnDJ,EAAUE,aAAa5iN,QAAQ,aAAc8iN,IAGrD,MAAOh1b,KAQPi1b,IAGRR,EAAch2b,UAAUk2b,gBAAkB,WACtC,IAAI70R,EAAU/zL,KAAKwF,OAAOo9Y,YAAY5iZ,KAAK00Y,SAC3C10Y,KAAK6gY,aAAa9sM,IA1DgC,SAAUlqD,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAwDxDq/U,CAAa,CACT7sE,IACDosE,EAAch2b,UAAW,gBAAiB,MACtCg2b,EAzDwB,CA0DjCt2b,IAQEg3b,IACIhgV,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF6/U,GAAsD,SAAUx/U,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAW+2U,GACPA,EAAcA,EAAa,QAAc,GAAK,UAC9CA,EAAcA,EAAa,gBAAsB,GAAK,kBACtDA,EAAcA,EAAa,QAAc,GAAK,UAHlD,CAIGA,KAAkBA,GAAgB,KACrC,IAqLQz3U,GAksDAA,GAgzCAA,GAozCAA,GAuDAA,GAkHAA,GAkMAA,GA8TAA,GAoWAA,GA0DAA,GAsPAA,GAkBJkgV,GA1yLAC,GAAgC,SAAU/wY,GAE1C,SAAS+wY,EAAet/B,EAAY3vZ,GAChC,IAAIonB,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAYjC,OAXA0hD,EAAM8na,6BAA+B,IACrC9na,EAAM+na,wBAA0B,IAChC/na,EAAMgoa,yBAA2B,IACjChoa,EAAMr5C,MAAQw4c,GAAc8I,QAI5Bjoa,EAAMkoa,qBAAuB,EAC7Bloa,EAAMiiU,mBAAoB,EAC1BjiU,EAAMuoY,WAAaA,EACnBvoY,EAAMpnB,SAAWA,EACVonB,EA4JX,OA1KA0na,GAAYG,EAAgB/wY,GAgB5B+wY,EAAe72b,UAAUk7Z,cAAgB,WACrC5tb,KAAKu3W,iBAAmBv3W,KAAKoqY,mBAAmB02C,uBAAyB,IACzE9gb,KAAK2jX,kBAAoB3jX,KAAKoqY,mBAAmB22C,sBACjD,IAAItuY,EAAKzyC,KAAKiqb,WAAW3jD,SACzBtmY,KAAKymb,4BAA4Bh0Y,EAAI,aAAczyC,KAAKk7F,aAAa3wD,KAAKvqC,OAC1EA,KAAKymb,4BAA4Bh0Y,EAAI,aAAczyC,KAAKm7F,aAAa5wD,KAAKvqC,OAC1EA,KAAKymb,4BAA4Bh0Y,EAAI,YAAazyC,KAAK6pd,YAAYt/a,KAAKvqC,OACxEA,KAAKymb,4BAA4Bh0Y,EAAI,YAAazyC,KAAK8pd,YAAYv/a,KAAKvqC,QAE5Eupd,EAAe72b,UAAUxR,QAAU,WAG/BlhB,KAAK+pd,iBACLvxY,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCupd,EAAe72b,UAAUwoE,aAAe,SAAUjnE,GAE9C,IAAIm5D,EAAQptF,KAAKgqd,8BAAgC,IAAMhqd,KAAKu3W,iBAC5Dv3W,KAAKiqd,qBAAuB9+b,OAAOyZ,WAAW5kC,KAAKkqd,YAAY3/a,KAAKvqC,MAAOotF,GAC3EptF,KAAKmqd,eAAiBl2b,EACtBj0B,KAAKqI,MAAQw4c,GAAcuJ,iBAE/Bb,EAAe72b,UAAUyoE,aAAe,WACpCn7F,KAAK+pd,kBAETR,EAAe72b,UAAUq3b,eAAiB,WAClC/pd,KAAKqI,QAAUw4c,GAAcwJ,SAC7Brqd,KAAKsqd,cAETtqd,KAAK2uL,gBACL3uL,KAAKqI,MAAQw4c,GAAc8I,SAE/BJ,EAAe72b,UAAUm3b,YAAc,SAAU51b,GAI7Cj0B,KAAKmqd,eAAiBl2b,EAClBj0B,KAAK2jX,mBACL3jX,KAAKqI,QAAUw4c,GAAcwJ,SAC7Brqd,KAAKuqd,aACLvqd,KAAKwqd,sCAGbjB,EAAe72b,UAAUo3b,YAAc,WACnC9pd,KAAK+pd,kBAETR,EAAe72b,UAAU43b,YAAc,WAG/Btqd,KAAKuqd,cACLvqd,KAAKyqd,qBACLlB,EAAemB,qBAAsB,IAAIhwa,MAAOwmE,WAEpDlhH,KAAKqI,MAAQw4c,GAAc8I,SAE/BJ,EAAe72b,UAAU+3b,mBAAqB,WAE1Cr4W,GAAE+tR,YAAYngY,KAAKuqd,YAAYjkF,SAAU,qBAGzC,IAAIqkF,EAA0B3qd,KAAK2qd,wBAC/BJ,EAAcvqd,KAAKuqd,YACvBp/b,OAAOyZ,WAAW,WACd+lb,IACIJ,EAAYrpc,SACZqpc,EAAYrpc,WAEjBlhB,KAAK0pd,0BACR1pd,KAAK2qd,6BAA0Blmd,EAC/BzE,KAAKuqd,iBAAc9ld,GAEvB8kd,EAAe72b,UAAUs3b,4BAA8B,WAInD,OAFU,IAAItva,MAAOwmE,UACVqoW,EAAemB,oBACJ1qd,KAAKypd,yBAE/BF,EAAe72b,UAAUw3b,YAAc,WACnC,IAAI38R,EAAcvtL,KAAKiqb,WAAW2gC,iBAClC,GAAKr9R,EAAL,CAIAvtL,KAAKqI,MAAQw4c,GAAcwJ,QAC3Brqd,KAAK4pd,uBACL,IAAI9/X,EAAS,CACTxvD,SAAUt6B,KAAKs6B,SACf2vV,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChBre,OAAQ7rW,KAAKiqb,WAAW4gC,qBACxBrld,OAAQxF,KAAKiqb,WAAW9jB,UACxB30Z,QAASxR,KAAKoqY,mBAAmB/lP,aACjCh6I,SAAUrK,KAAKiqb,WAAW6gC,iBAAmB9qd,KAAKiqb,WAAW6gC,kBAAkBzgd,SAC/E9I,MAAOgsL,GAKPt6J,EAAWjzB,KAAK+qd,4BAA4Bxgb,KAAKvqC,KAAMA,KAAK4pd,sBAChE5pd,KAAKgsb,qBAAqBkd,oBAAoBp/W,GAAQzrE,KAAK4U,QAnBvDjzB,KAAK+pd,kBAqBbR,EAAe72b,UAAUq4b,4BAA8B,SAAUC,EAAqBT,GAElF,GADyBvqd,KAAKqI,QAAUw4c,GAAcwJ,SAAWrqd,KAAK4pd,uBAAyBoB,EAEvFT,EAAYrpc,SACZqpc,EAAYrpc,cAFpB,CAMA,IAAIgna,EAAOqiC,EAAYjkF,SACvBtmY,KAAKuqd,YAAcA,EACdn4W,GAAEquR,cAAcynD,EAAM,eACvB91U,GAAE+tR,YAAY+nD,EAAM,qBAExBlob,KAAK2qd,wBAA0B3qd,KAAKird,aAAaC,UAAS,EAAOhjC,GAAM,GACvElob,KAAKwqd,qCACLxqd,KAAKmrd,qBAAuBhgc,OAAOyZ,WAAW5kC,KAAKsqd,YAAY//a,KAAKvqC,MAAOA,KAAKwpd,gCAEpFD,EAAe72b,UAAU83b,mCAAqC,WAC1Dxqd,KAAKird,aAAaG,6BAA6B,CAC3C1qd,KAAM,UACNq1Y,WAAY/1Y,KAAKmqd,eACjBkB,OAAQrrd,KAAKuqd,YAAYjkF,SACzBglF,OAAQ,MAGhB/B,EAAe72b,UAAUi8J,cAAgB,WACjC3uL,KAAKiqd,uBACL9+b,OAAO+Y,aAAalkC,KAAKiqd,sBACzBjqd,KAAKiqd,0BAAuBxld,GAE5BzE,KAAKmrd,uBACLhgc,OAAO+Y,aAAalkC,KAAKmrd,sBACzBnrd,KAAKmrd,0BAAuB1md,IAGpC4kd,GAAa,CACT1sE,GAAU,iBACX4sE,EAAe72b,UAAW,oBAAgB,GAC7C22b,GAAa,CACT1sE,GAAU,yBACX4sE,EAAe72b,UAAW,4BAAwB,GACrD22b,GAAa,CACT1sE,GAAU,cACX4sE,EAAe72b,UAAW,iBAAa,GAC1C22b,GAAa,CACT1sE,GAAU,YACX4sE,EAAe72b,UAAW,eAAW,GACxC22b,GAAa,CACT1sE,GAAU,uBACX4sE,EAAe72b,UAAW,0BAAsB,GACnD22b,GAAa,CACT/sE,IACDitE,EAAe72b,UAAW,gBAAiB,MACvC62b,EA3KyB,CA4KlCnjC,IAQEmlC,IACIniV,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFgiV,GAAkD,WASlD,OARAA,GAAahvc,OAAOuqB,QAAU,SAASvmC,GACnC,IAAK,IAAIokB,EAAG/c,EAAI,EAAGkwC,EAAIz+B,UAAUnV,OAAQ0D,EAAIkwC,EAAGlwC,IAE5C,IAAK,IAAI0hI,KADT3kH,EAAItL,UAAUzR,GACO2U,OAAOkW,UAAUgb,eAAexY,KAAKtQ,EAAG2kH,KACzD/oI,EAAE+oI,GAAK3kH,EAAE2kH,IAEjB,OAAO/oI,IAEOm3C,MAAM33C,KAAMsZ,YAE9Bmyc,GAA0B,SAAUjzY,GAEpC,SAASizY,EAASj+X,EAAOs5X,EAAOthd,EAAQkvY,EAASg3E,EAASC,EAAgBC,GACtE,IAAIlqa,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAmCjC,OAlCA0hD,EAAMmqa,eAAgB,EACtBnqa,EAAMoqa,aAAc,EACpBpqa,EAAMqqa,qBAAsB,EAC5Brqa,EAAM8rC,MAAQ,KAOd9rC,EAAMsqa,kBAAoB,EAC1Btqa,EAAMuqa,oBAAsB,EAC5Bvqa,EAAM8rC,MAAQA,EACd9rC,EAAMola,MAAQA,EACdpla,EAAMl8C,OAASA,EACfk8C,EAAMgzV,QAAUA,EAChBhzV,EAAMgqa,QAAUA,EAChBhqa,EAAMiqa,eAAiBA,EACvBjqa,EAAMkqa,YAAcA,EACpBlqa,EAAMwqa,mBACNxqa,EAAMyqa,sBAAwBzqa,EAAMola,MAAMsF,iBAAmBtF,EAAM18E,mBAAmBiqC,yBACtF3yX,EAAM8kU,YAAc9kU,EAAMola,MAAMuF,gBAAgBC,cAAc5qa,EAAM6qa,cACpE7qa,EAAMsjW,iBAAmBtjW,EAAMl8C,OAAO6/Y,qBACtC3jW,EAAMyjW,eAAiBzjW,EAAMl8C,OAAO8/Y,mBAChC5jW,EAAMyqa,uBAAyBzqa,EAAMola,MAAMsF,kBAE3C1qa,EAAM+nI,WADgB/nI,EAAMola,MAAMsF,gBACCI,kBAAkB9qa,EAAM6qa,cAC3D7qa,EAAMmqa,cAAgBnqa,EAAM+qa,oBAEhC/qa,EAAMgra,oBACNhra,EAAMira,kBACNjra,EAAMkra,qBACNlra,EAAMmra,eACNnra,EAAM+tT,QAAU/tT,EAAMl8C,OAAO0gZ,WAAWxkW,EAAMgzV,SACvChzV,EA2nDX,OAhqDA6pa,GAAYE,EAAUjzY,GAuCtBizY,EAAS/4b,UAAUo6b,kBAAoB,WACnC,IAAIC,EAAgB/sd,KAAK8md,MAAM18E,mBAAmB0zC,4BAAoD,GAAtB,oBAC5EkvC,EAAgB,GAChB/rX,EAAMjhG,KAAKwF,OACXkE,EAAQ1J,KAAKitd,eACbhhd,EAAOjM,KAAKktd,yBAAyBltd,KAAKmtd,eAC1CC,EAAgBptd,KAAKqtd,0BACrBC,EAAiBl7W,GAAElgG,IAAIlS,KAAKwF,OAAQ,kBAAmB,MAAQ4nd,EAAgBh7W,GAAE9iE,OAAO89a,GAC5Fptd,KAAKw0L,QAAUx0L,KAAKutd,aACpB,IAAIC,EAAmBp7W,GAAE9iE,OAAOtvC,KAAKw0L,SACjCi5R,EAAiBr7W,GAAE9iE,OAAO2xD,EAAIggT,SAC9BysE,EAAuB,GACvBC,EAAqB,GACrBC,EAAmB5td,KAAK6td,6BACxBztF,EAAapgY,KAAK8td,uBAClBC,EAAuB/td,KAAKgud,0BAC5BC,EAAkB77W,GAAE9iE,OAAOtvC,KAAKkud,sBAyBpC,OAxBIlud,KAAKmud,eACLT,EAAuB,+IAA4JO,EAAkB,2BAAgClB,EAAe,IACpPY,EAAqB,iBAEzBX,EAAcppd,KAAK,QACnBopd,EAAcppd,KAAK,kBACnBopd,EAAcppd,KAAK,IAAMmpd,GACzBC,EAAcppd,KAAK,WAAc5D,KAAKmud,aAAe,eAAiB,YAAc,KAC/Enud,KAAKmud,cACNnB,EAAcppd,KAAK,kBAAoBqqd,GAE3CjB,EAAcppd,KAAK,aAAgB5D,KAAKknb,YAAc,MACtD8lC,EAAcppd,KAAK,YAAe6pd,EAAiB,KACnDT,EAAcppd,KAAK,WAAcwuG,GAAE9iE,OAAO8wV,EAAWpwV,KAAK,MAAQ,KAC9DhwC,KAAK8md,MAAM18E,mBAAmBsxC,2BAA6BtpU,GAAE8rR,OAAOsvF,IACpER,EAAcppd,KAAK,UAAa4pd,EAAmB,KAEvDR,EAAcppd,KAAK,kBAAqB+K,OAAOjF,GAAS,aAAeiF,OAAO1C,GAAQ,OAASmmG,GAAE9iE,OAAOs+a,GAAoB,IAAMx7W,GAAE9iE,OAAOy+a,GAAwB,OACnKf,EAAcppd,KAAK8pd,GACft7W,GAAE8rR,OAAOovF,GAAgB,IACzBN,EAAcppd,KAAK0pd,GAEvBN,EAAcppd,KAAK+pd,GACnBX,EAAcppd,KAAK,UACZopd,EAAch9a,KAAK,KAE9By7a,EAAS/4b,UAAUs7b,wBAA0B,WACzC,OAAqB,IAAjBhud,KAAKyvW,QACE,GAIJ,WAFezvW,KAAK8md,MAAM18E,mBAAmBg3C,uBACbphb,KAAKyvW,QACP,mBAEzCg8G,EAAS/4b,UAAU07b,cAAgB,WAC/B,IAAIhjd,EAAgB,aAAgBpL,KAAKknb,YAAc,KACnDgB,EAAOlob,KAAKqud,WAAWjjd,cAAcA,GACzCpL,KAAKkpb,OAAOhB,GAEZlob,KAAKsud,aACLtud,KAAKuud,mBACLvud,KAAKwud,4BAA2B,GAChCxud,KAAKyud,kBACLzud,KAAK0ud,gBACDt8W,GAAE8rR,OAAOl+X,KAAKw0L,WAAax0L,KAAK8md,MAAM18E,mBAAmBsxC,2BACzD17a,KAAKspb,WAAW,IAAIigC,GAAevpd,KAAM,QAASA,KAAK8md,MAAMt1c,UAGrEi6c,EAAS/4b,UAAUi8b,cAAgB,WAC/B,IAAIC,EAAY5ud,KAAK8md,MAAM+H,mBAAmBD,UAAU5ud,KAAKwF,QAC7D4sG,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,kBAAmBsoF,IAE5DnD,EAAS/4b,UAAUo8b,cAAgB,SAAUxmc,GACdA,EAAM9iB,SAAWxF,KAAKwF,QAE7CxF,KAAK+ud,YAAY,KAGzBtD,EAAS/4b,UAAUy6b,YAAc,WAQ7B,OANIntd,KAAK8md,MAAM18E,mBAAmBme,eAAiBvoZ,KAAKgvd,aACtC58W,GAAEj7F,KAAKnX,KAAKgvd,cAGZhvd,KAAKwF,QAEJ2+Y,WAEvBsnE,EAAS/4b,UAAUu6b,aAAe,WAC9B,OAAKjtd,KAAKgvd,aAGHhvd,KAAKgvd,aAAav5c,OAAO,SAAU/L,EAAOu3F,GAAO,OAAOv3F,EAAQu3F,EAAI8kT,kBAAqB,GAFrF/lZ,KAAKwF,OAAOugZ,kBAI3B0lE,EAAS/4b,UAAUu8b,aAAe,SAAU3mc,GACxC,IAAI4mc,EAASlvd,KAAK8md,MAAMqI,kBAAkBC,SAASpvd,KAAKusd,cACtCjkc,EAAMu4E,MAAMquX,IAE1Blvd,KAAKqvd,YAAY,cAGzB5D,EAAS/4b,UAAUm6b,aAAe,WAE1Bz6W,GAAEgsR,QAAQp+X,KAAK6qd,qBAAqBzsX,WAIxCp+F,KAAKymb,4BAA4Bzmb,KAAK8md,MAAMpnE,aAAcqP,GAAOc,gCAAiC7vZ,KAAKsvd,wBAAwB/kb,KAAKvqC,OAKpIA,KAAKymb,4BAA4Bzmb,KAAK8md,MAAMpnE,aAAcqP,GAAOkE,sCAAuCjzZ,KAAKuvd,eAAehlb,KAAKvqC,OACjIA,KAAKgvd,aAAehvd,KAAKwvd,uBAE7B/D,EAAS/4b,UAAU88b,mBAAqB,WACpC,IAAIpxX,EAAUp+F,KAAKwF,OAAOygZ,WAAWjmZ,KAAK00Y,SACtCs6E,EAAe,GAEnB,GAAgB,IAAZ5wX,EACA4wX,EAAaprd,KAAK5D,KAAKwF,aAKvB,IAFA,IAAImkY,EAAU3pY,KAAKwF,OACf+oW,EAASvuW,KAAKwF,OAAOkgZ,YAChB79Y,EAAI,EAAG8hY,GAAW9hY,EAAIu2F,IAC3B4wX,EAAaprd,KAAK+lY,IAClBA,EAAU3pY,KAAK8md,MAAMvjC,iBAAiBhsB,qBAAqB5tB,MAC3Cv3R,GAAEgsR,QAAQuL,KAItBp7B,IAAWo7B,EAAQ+b,YAPa79Y,KAY5C,OAAOmnd,GAEXvD,EAAS/4b,UAAU48b,wBAA0B,WACzC,IAAIN,EAAehvd,KAAKwvd,qBACnBp9W,GAAEo0R,SAASxmY,KAAKgvd,aAAcA,KAC/Bhvd,KAAKgvd,aAAeA,EACpBhvd,KAAKuvd,iBACLvvd,KAAKyvd,kBAGbhE,EAAS/4b,UAAUw7b,mBAAqB,WAEpC,OADiBlud,KAAK8md,MAAMvjC,iBAAiB/pB,yBAC1BvwZ,QAAQjJ,KAAKwF,QAAU,GAAGysB,YAEjDw5b,EAAS/4b,UAAUg9b,iBAAmB,WAClC,IAAIC,EAAS3vd,KAAKkud,sBACTlud,KAAKmud,aAAenud,KAAK4vd,WAAa5vd,KAAKsmY,UACjDz3X,aAAa,gBAAiB8gd,IAErClE,EAAS/4b,UAAUo7b,qBAAuB,WACtC,IAAI1tF,EAAa,CAAC,UAAW,8BA2B7B,OAxBKpgY,KAAK2rd,gBACNvrF,EAAWx8X,KAAK,wBAEC5D,KAAK8md,MAAM18E,mBAAmB8sC,2BAC9Bl3a,KAAKwmX,aAEtB4Z,EAAWx8X,KAAK,iBAEhB5D,KAAKglZ,kBACL5kB,EAAWx8X,KAAK,8BAEhB5D,KAAKmlZ,gBACL/kB,EAAWx8X,KAAK,4BAEhB5D,KAAK8md,MAAM+H,mBAAmBD,UAAU5ud,KAAKwF,SAC7C46X,EAAWx8X,KAAK,mBAEpBwuG,GAAEu1R,QAAQvH,EAAYpgY,KAAK6vd,+BAC3Bz9W,GAAEu1R,QAAQvH,EAAYpgY,KAAK8vd,4BAC3B19W,GAAEu1R,QAAQvH,EAAYpgY,KAAK+vd,0BAEtB/vd,KAAKmud,cACN/tF,EAAWx8X,KAAK,iBAEbw8X,GAEXqrF,EAAS/4b,UAAU26b,wBAA0B,WAEzC,GAAIrtd,KAAKgwd,kBACL,MAAoC,iBAAzBhwd,KAAKiwd,gBACLjwd,KAAKiwd,gBAET,GAEX,IAAIpkH,EAAS7rW,KAAK6qd,qBAClB,OAAIh/G,EAAOvrW,SAGAurW,EAAOvrW,SAEdurW,EAAOqkH,YAIQlwd,KAAK8md,MAAMqJ,gBAAgBC,YAAYvkH,EAAOqkH,YAAalwd,KAAK+ud,YAAYxkb,KAAKvqC,MAAM,KACnF,GAEhBA,KAAKqwd,iBAEhB5E,EAAS/4b,UAAU49b,eAAiB,WAChC,OAAOtwd,KAAK0rd,SAEhBD,EAAS/4b,UAAU4vX,oBAAsB,WACrC,OAAOtiZ,KAAKwF,OAAO88Y,oBAAoBtiZ,KAAK00Y,UAEhD+2E,EAAS/4b,UAAU69b,gBAAkB,WACjC,OAAOvwd,KAAKquW,cAEhBo9G,EAAS/4b,UAAU89b,cAAgB,WAC/B,OAAOxwd,KAAKsuW,YAQhBm9G,EAAS/4b,UAAUq8b,YAAc,SAAUjlY,GAEvC,IAAI9pF,KAAK+rd,sBAAuB/rd,KAAK8rd,YAArC,CAGA,IAAIjgH,EAAS7rW,KAAK6qd,qBACd3kN,EAAUp8K,GAAUA,EAAOo8K,QAC3BuqN,EAAiB3mY,GAAUA,EAAO2mY,eAAkB5kH,EAAOuE,kBAC3DsgH,EAAe5mY,GAAUA,EAAO4mY,aAChCp3J,EAAWt5T,KAAKuB,MAEpBvB,KAAKuB,MAAQvB,KAAK87H,WAIlB,IAAI60V,GAAmB3wd,KAAK4wd,eAAet3J,EAAUt5T,KAAKuB,OAE1D,GADwBmvd,GAAgBC,EACjB,CAEnB3wd,KAAK8mS,eAAiB9mS,KAAK8md,MAAMhY,sBAAsBjjB,YAAY7rb,KAAKwF,OAAQxF,KAAK00Y,QAAS10Y,KAAKwtF,MAAOxtF,KAAKuB,QAInF2kQ,GAAkBlmQ,KAAK6wd,8BAK/C7wd,KAAK8wd,8BAIT,IAAIC,EAAyB/wd,KAAK8md,MAAMlV,cAAcC,2CACrC4e,IAAkBM,IAC9B/wd,KAAK8md,MAAM18E,mBAAmBqsC,2BAA6B5qE,EAAOgG,wBAEnE7xW,KAAKgxd,YAGThxd,KAAKixd,8BACLjxd,KAAKkxd,+BAITlxd,KAAKmxd,gCACLnxd,KAAKoxd,iBAGLpxd,KAAKqxd,8BAGT5F,EAAS/4b,UAAUs+b,UAAY,WAC3Bhxd,KAAKqvd,YAAY,iBAErB5D,EAAS/4b,UAAU28b,YAAc,SAAUiC,GACvC,IAAIC,EAAW,WAAaD,EACxBE,EAAoB,WAAaF,EAAU,aAC3Cjmd,EAAUrL,KAAKsmY,SAEnBl0R,GAAE+tR,YAAY90X,EAASkmd,GACvBn/W,GAAEiuR,eAAeh1X,EAASmmd,GAE1Brmc,OAAOyZ,WAAW,WACdwtE,GAAEiuR,eAAeh1X,EAASkmd,GAC1Bn/W,GAAE+tR,YAAY90X,EAASmmd,GACvBrmc,OAAOyZ,WAAW,WAEdwtE,GAAEiuR,eAAeh1X,EAASmmd,IAC3B,MACJ,MAEP/F,EAAS/4b,UAAUo+b,4BAA8B,WAE7C1+W,GAAE4uR,aAAahhY,KAAKyxd,gBAEhBzxd,KAAKquW,cAAgBruW,KAAKquW,aAAantV,SACvClhB,KAAKquW,aAAantV,UAEtBlhB,KAAKquW,aAAe,KACpBruW,KAAKiwd,gBAAkB,KAEvBjwd,KAAK0xd,8BACL1xd,KAAKmxd,iCAET1F,EAAS/4b,UAAUy+b,8BAAgC,WAC3Cnxd,KAAK8md,MAAM18E,mBAAmB6wC,wBAA0Bj7a,KAAKwtF,QAC7DxtF,KAAKwtF,MAAM19E,KAAO07c,GAAW,GAAIxrd,KAAK00Y,QAAQ5kY,MAC9C9P,KAAKyud,oBAGbhD,EAAS/4b,UAAU+7b,gBAAkB,WAEjC,GAAIzud,KAAK8md,MAAM18E,mBAAmB6wC,uBAAwB,CACtD,IAAIiN,EAAOlob,KAAKsmY,SAGhB,IAAK4hD,EAAKvlb,UAAUiqB,SAAS,aAA0C,IAA3Bs7Z,EAAKp2H,kBAAyB,CACtE,IAAI6/J,EAAoB3xd,KAAK8md,MAAM8K,SAAS1pC,EAApBlob,CAA0BA,KAAKwtF,OACvDxtF,KAAK2mb,eAAe,WAAc,OAAOgrC,EAAkBnmd,cAIvEigd,EAAS/4b,UAAUu+b,4BAA8B,WAC7C,IAAItrF,EAAc3lY,KAAK6xd,0BACnBlsF,GACAvzR,GAAE+wR,mBAAmBnjY,KAAKsmY,SAAUX,IAG5C8lF,EAAS/4b,UAAUm7b,2BAA6B,WAC5C,OAAOz7W,GAAEszR,uBAAuB1lY,KAAK6xd,4BAEzCpG,EAAS/4b,UAAUm/b,wBAA0B,WACzC,IAAIhmH,EAAS7rW,KAAK6qd,qBAClB,GAAIh/G,EAAOY,UAAW,CAClB,IAAIqlH,OAAW,EACf,GAAgC,mBAArBjmH,EAAOY,UAA0B,CACxC,IAAIslH,EAAkB,CAClBxwd,MAAOvB,KAAKuB,MACZuO,KAAM9P,KAAK00Y,QAAQ5kY,KACnB4zI,KAAM1jJ,KAAK00Y,QACX7oC,OAAQA,EACRrmW,OAAQxF,KAAKwF,OACbwsd,OAAQhyd,KAAKwtF,MACbh8E,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC4lO,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,UAGvC+8E,GAAWG,EADSpmH,EAAOY,WACFslH,QAGzBD,EAAWjmH,EAAOY,UAEtB,OAAOqlH,IAGfrG,EAAS/4b,UAAUw+b,6BAA+B,WAC9C,IAAIxva,EAAQ1hD,KACZA,KAAKkyd,yBAAyB,SAAUrqc,GAAa,OAAOuqF,GAAE+tR,YAAYz+U,EAAM4kV,SAAUz+W,MAE9F4jc,EAAS/4b,UAAUm9b,4BAA8B,WAC7C,IAAIv3b,EAAM,GAEV,OADAt4B,KAAKkyd,yBAAyB,SAAUrqc,GAAa,OAAOyQ,EAAI10B,KAAKikB,KAC9DyQ,GAEXmzb,EAAS/4b,UAAUw/b,yBAA2B,SAAUC,GACpD,IAAItmH,EAAS7rW,KAAK6qd,qBAClB7qd,KAAK8md,MAAMsL,eAAeC,yBAAyBxmH,EAAQ,CACvDtqW,MAAOvB,KAAKuB,MACZuO,KAAM9P,KAAK00Y,QAAQ5kY,KACnB4zI,KAAM1jJ,KAAK00Y,QACX7oC,OAAQA,EACRxhW,SAAUrK,KAAK00Y,QAAQrqY,SACvB2nd,OAAQhyd,KAAKwtF,MACby8R,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCxjY,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,cACxC8tU,IAEP1G,EAAS/4b,UAAUg/b,4BAA8B,WAE7C,IAAI7lH,EAAS7rW,KAAK6qd,qBAClB,GAAIh/G,EAAOvrW,SAGPN,KAAKyxd,eAAehjZ,UAAYo9R,EAAOvrW,cAEtC,GAAIurW,EAAOqkH,YAAa,CAIzB,IAAI5vd,EAAWN,KAAK8md,MAAMqJ,gBAAgBC,YAAYvkH,EAAOqkH,YAAalwd,KAAK+ud,YAAYxkb,KAAKvqC,MAAM,IAClGM,IACAN,KAAKyxd,eAAehjZ,UAAYnuE,QAOpC,GADAN,KAAK4sd,qBACD5sd,KAAKgwd,kBACLhwd,KAAKwud,iCAEJ,CACD,IAAIjd,EAAavxc,KAAKqwd,gBACJ,MAAd9e,IACAvxc,KAAKyxd,eAAehjZ,UAAY2jC,GAAE9iE,OAAOiia,MAKzDka,EAAS/4b,UAAUm+b,2BAA6B,WAC5C,GAAIz+W,GAAEgsR,QAAQp+X,KAAKquW,gBAAkBruW,KAAKquW,cAAgBj8P,GAAEgsR,QAAQp+X,KAAKquW,aAAahY,SAClF,OAAO,EAGX,IAAIvsQ,EAAS9pF,KAAKsyd,2BAEdC,EAAcvyd,KAAK8md,MAAM96B,qBAAqBie,kBAAkBjqc,KAAK6qd,qBAAsB7qd,KAAK2oc,iBAAkB7+W,GAClHltD,EAAS58B,KAAKquW,aAAahY,QAAQk8H,GAKvC,OAAkB,IAAX31b,QAA8Bn4B,IAAXm4B,GAE9B6ub,EAAS/4b,UAAU0+b,eAAiB,WAChC,IAAIoB,EAAaxyd,KAAKutd,aACtB,GAAIvtd,KAAKw0L,UAAYg+R,EAArB,CAGA,IAAIC,EAAgBrgX,GAAE8rR,OAAOs0F,GACzBC,GAAiBzyd,KAAKw0L,UAAYg+R,EAAWvgc,aAGhCmgF,GAAE8rR,OAAOl+X,KAAKw0L,SAC/Bx0L,KAAKw0L,QAAUg+R,EACXxyd,KAAK8md,MAAM18E,mBAAmBsxC,4BAC1B+2C,EACAzyd,KAAKyxd,eAAe5id,aAAa,QAAS7O,KAAKw0L,SAG/Cx0L,KAAKyxd,eAAehpb,gBAAgB,aAIhDgjb,EAAS/4b,UAAUk+b,eAAiB,SAAU7za,EAAM4hV,GAEhD,IAAI9yB,EAAS7rW,KAAK6qd,qBACd6H,EAAe7mH,EAASA,EAAO7pP,OAAS,KAC5C,OAAO0wW,EAAeA,EAAa31a,EAAM4hV,GAAQ5hV,IAAS4hV,GAE9D8sF,EAAS/4b,UAAU66b,WAAa,WAC5B,IAAI1hH,EAAS7rW,KAAK6qd,qBACd/6c,EAAO9P,KAAK00Y,QAAQ5kY,KACxB,GAAI+7V,EAAOmC,cAAgB57P,GAAE8rR,OAAOpuX,GAChC,OAAOsiG,GAAEyyR,mBAAmB/0X,EAAM+7V,EAAOmC,aAAchuW,KAAKwF,OAAO67Y,8BAEvE,IAAIvyC,EAAcjD,EAAOoE,oBAAsBpE,EAAOr3K,QACtD,OAAIs6K,EACOA,EAAY,CACfmb,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCnpC,OAAQA,EACRrmW,OAAQxF,KAAKmma,YACb30Z,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC9iJ,MAAOvB,KAAKuB,MACZulS,eAAgB9mS,KAAK8mS,eACrBz8R,SAAUrK,KAAKusd,aAAalid,SAC5Bq5I,KAAM1jJ,KAAK00Y,QACX5kY,KAAM9P,KAAK00Y,QAAQ5kY,OAGpB,MAEX27c,EAAS/4b,UAAUk4b,eAAiB,SAAUt7a,GAE1C,YADe,IAAXA,IAAqBA,GAAS,GAC3BA,EAAS8iE,GAAE9iE,OAAOtvC,KAAKw0L,SAAWx0L,KAAKw0L,SAElDi3R,EAAS/4b,UAAUigc,sBAAwB,SAAUR,EAAmBS,GACpE,IAAI/mH,EAAS7rW,KAAK6qd,qBAClB7qd,KAAK8md,MAAMsL,eAAeS,kBAAkBhnH,EAAOQ,eAAgB,CAC/D9qW,MAAOvB,KAAKuB,MACZuO,KAAM9P,KAAK00Y,QAAQ5kY,KACnB4zI,KAAM1jJ,KAAK00Y,QACX7oC,OAAQA,EACRxhW,SAAUrK,KAAKusd,aAAalid,SAC5B4/W,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCg9E,OAAQhyd,KAAKwtF,MACbh8E,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,cACxC8tU,EAAmBS,IAE1BnH,EAAS/4b,UAAU2+b,0BAA4B,WAC3C,IAAI3va,EAAQ1hD,KACZA,KAAK2yd,sBAAsB,SAAU9qc,GAAa,OAAOuqF,GAAE+tR,YAAYz+U,EAAM4kV,SAAUz+W,IAAe,SAAUA,GAAa,OAAOuqF,GAAEiuR,eAAe3+U,EAAM4kV,SAAUz+W,MAEzK4jc,EAAS/4b,UAAUo9b,yBAA2B,WAC1C,IAAIx3b,EAAM,GAKV,OAJAt4B,KAAK2yd,sBAAsB,SAAU9qc,GAAa,OAAOyQ,EAAI10B,KAAKikB,IAAe,SAAUuqF,MAIpF95E,GAGXmzb,EAAS/4b,UAAUi6b,gBAAkB,WACjC,IAAI9gH,EAAS7rW,KAAK6qd,qBAElB,GAAI7qd,KAAK00Y,QAAQ4pD,UAKb,OAJAt+b,KAAKmud,cAAe,EACpBnud,KAAK8yd,2BAA4B,EACjC9yd,KAAK+yd,6BAA8B,OACnC/yd,KAAKgzd,2BAA4B,GAGrC,IACIC,EAA+C,mBAAnBpnH,EAAOiG,QACnCohH,EAA8C,mBAArBrnH,EAAOkG,UACpC/xW,KAAK8yd,0BAHuD,mBAA7BjnH,EAAO6E,oBAG6C,IAA7B7E,EAAO6E,kBAC7D1wW,KAAK+yd,4BAA8BE,IAAyC,IAAnBpnH,EAAOiG,QAChE9xW,KAAKgzd,0BAA4BE,IAAwC,IAArBrnH,EAAOkG,UAC3D,IAAIohH,EAAsBnzd,KAAK8md,MAAM18E,mBAAmB0zC,4BACxD99a,KAAKmud,aAAegF,GAAuBnzd,KAAK+yd,6BAA+B/yd,KAAK8yd,2BAA6B9yd,KAAKgzd,2BAE1HvH,EAAS/4b,UAAUk6b,mBAAqB,WAEpC,IAAI/gH,EAAS7rW,KAAK6qd,qBAGlB,GAAIh/G,EAAOvrW,UAAYurW,EAAOqkH,YAC1Blwd,KAAKgwd,mBAAoB,MAD7B,CAIA,IAAIlmY,EAAS9pF,KAAKsyd,2BACdjkH,EAAeruW,KAAK8md,MAAM96B,qBAAqB4e,wBAAwB/+F,EAAQ,eAAgB/hR,GACvE9pF,KAAK8md,MAAM96B,qBAAqB4e,wBAAwB/+F,EAAQ,wBAAyB/hR,IACxF9pF,KAAK00Y,QAAQ4pD,WACtCt+b,KAAK2oc,iBAAmB8iB,EAAS2H,0BACjCpzd,KAAKgwd,mBAAoB,GAEpB3hH,GACLruW,KAAK2oc,iBAAmB8iB,EAAS4H,0BACjCrzd,KAAKgwd,mBAAoB,GAGzBhwd,KAAKgwd,mBAAoB,IAGjCvE,EAAS/4b,UAAU87b,2BAA6B,SAAU8E,GACtD,IAAI5xa,EAAQ1hD,KAEZ,QADuB,IAAnBszd,IAA6BA,GAAiB,GAC7Ctzd,KAAKgwd,kBAAV,CAQA,IAAI/yG,EAAqBj9W,KAAK8md,MAAM18E,mBAAmB6wC,uBACnDl5D,EAAyB/hX,KAAK8md,MAAM18E,mBAAmBkuC,4BACvDr7D,GAAsB8E,GAA0B/hX,KAAK2rd,kBACrD2H,GAAiB,GAErB,IAAIxpY,EAAS9pF,KAAKsyd,2BAClBtyd,KAAKisd,sBACL,IAAIh5b,EAAWjzB,KAAKuzd,yBAAyBhpb,KAAKvqC,KAAMA,KAAKisd,qBACzDuH,EAAyBxzd,KAAK2oc,mBAAqB8iB,EAAS4H,0BAChErzd,KAAKyzd,uBAAyB,WAC1B/xa,EAAM+xa,uBAAyB,KAG/B,IAAIC,EAAmBhya,EAAMola,MAAM96B,qBAAqB6c,gBAAgBnnZ,EAAMmpa,qBAAsB/gY,GAAS0pY,GACzGE,GACAA,EAAiBr1c,KAAK4U,IAG1Bqgc,EACAtzd,KAAK8md,MAAM6M,UAAUC,WAAW5zd,KAAKyzd,uBAAwBzzd,KAAK00Y,QAAQrqY,SAAU,iBAGpFrK,KAAKyzd,2BAGbhI,EAAS/4b,UAAU6gc,yBAA2B,SAAUtH,EAAqB59G,GAEpEruW,KAAKs3V,WAAc20H,IAAwBjsd,KAAKisd,qBAMrDjsd,KAAKquW,aAAeA,EACpBruW,KAAKiwd,gBAAkBjwd,KAAKquW,aAAai4B,SACrCl0R,GAAEgsR,QAAQp+X,KAAKiwd,kBAIdjwd,KAAK8rd,aACN9rd,KAAKyxd,eAAe35c,YAAY9X,KAAKiwd,kBAZjC5hH,EAAantV,SACbmtV,EAAantV,WAczBuqc,EAAS/4b,UAAU4/b,yBAA2B,WAC1C,IAAI5wa,EAAQ1hD,KACZ,MAAO,CACHuB,MAAOvB,KAAKuB,MACZulS,eAAgB9mS,KAAK8mS,eACrBhrK,SAAU97H,KAAK87H,SAASvxF,KAAKvqC,MAC7Bs0I,SAAU,SAAU/yI,GAAS,OAAOmgD,EAAMola,MAAM1lB,aAAa9sT,SAAS5yF,EAAMgzV,QAAShzV,EAAMl8C,OAAQjE,IACnGsqb,YAAa7rb,KAAK6rb,YAAYthZ,KAAKvqC,MACnC8P,KAAM9P,KAAK00Y,QAAQ5kY,KACnB4zI,KAAM1jJ,KAAK00Y,QACX7oC,OAAQ7rW,KAAK6qd,qBACbrld,OAAQxF,KAAKwF,OACbwsd,OAAQhyd,KAAKwtF,MACbnjF,SAAUrK,KAAKusd,aAAalid,SAC5B4/W,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCxjY,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC0qU,YAAa/ud,KAAK+ud,YAAYxkb,KAAKvqC,MACnC+vc,UAAW/vc,KAAKsmY,SAChBmrF,eAAgBzxd,KAAKyxd,eAMrBoC,mBAAoB7zd,KAAK0rd,QAAU1rd,KAAK0rd,QAAQpgc,iBAAiBif,KAAKvqC,KAAK0rd,SAAW,KACtFoI,uBAAwB,SAAUv+a,EAAW7U,GACzCqK,QAAQ24B,KAAK,mGACThiB,EAAMgqa,SACNhqa,EAAMgqa,QAAQpgc,iBAAiBiqB,EAAW7U,MAK1D+qb,EAAS/4b,UAAUm5Z,YAAc,SAAUtqb,GACvC,IAAIulS,EAAiB9mS,KAAK8md,MAAMhY,sBAAsBjjB,YAAY7rb,KAAKwF,OAAQxF,KAAK00Y,QAAS10Y,KAAKwtF,MAAOjsF,GACzG,OAAyB,MAAlBulS,EAAyBA,EAAiBvlS,GAErDkqd,EAAS/4b,UAAU29b,cAAgB,WAC/B,OAA8B,MAAvBrwd,KAAK8mS,eAAyB9mS,KAAK8mS,eAAiB9mS,KAAKuB,OAEpEkqd,EAAS/4b,UAAUg6b,kBAAoB,WACnC1sd,KAAKuB,MAAQvB,KAAK87H,WAClB97H,KAAK8mS,eAAiB9mS,KAAK8md,MAAMhY,sBAAsBjjB,YAAY7rb,KAAKwF,OAAQxF,KAAK00Y,QAAS10Y,KAAKwtF,MAAOxtF,KAAKuB,QAEnHkqd,EAAS/4b,UAAUopG,SAAW,WAK1B,IAAIi4V,EAAoB/zd,KAAK00Y,QAAQm8D,WAAa7wc,KAAK8md,MAAMvjC,iBAAiB5tB,cAC1Eq+D,EAAch0d,KAAK00Y,QAAQ75P,OAAS76I,KAAK00Y,QAAQvzO,WAAanhK,KAAK00Y,QAAQjwU,SAAWsvZ,EAEtFE,EAAsBj0d,KAAK8md,MAAM18E,mBAAmB0sC,uBAEpDo9C,EAAyBl0d,KAAK8md,MAAM18E,mBAAmB4sC,6BAI3D,OAAOh3a,KAAK8md,MAAM1lB,aAAatlU,SAAS97H,KAAKwF,OAAQxF,KAAK00Y,SAAS,EAD9Cs/E,GAAeC,IAAyBC,IAGjEzI,EAAS/4b,UAAUyhc,aAAe,SAAUr+a,EAAWigW,GACnD,IAAI3jS,GAAE83R,2BAA2B6L,GAGjC,OAAQjgW,GACJ,IAAK,QACD91C,KAAK6vW,cAAckmC,GACnB,MACJ,IAAK,YACD/1Y,KAAK8pd,YAAY/zE,GACjB,MACJ,IAAK,WACD/1Y,KAAK8vW,oBAAoBimC,GACzB,MACJ,IAAK,WACD/1Y,KAAKo0d,WAAWr+E,GAChB,MACJ,IAAK,YACD/1Y,KAAKq0d,YAAYt+E,KAI7B01E,EAAS/4b,UAAU4hc,6BAA+B,SAAUhsc,GACxD,IAAIujV,EAAS7rW,KAAK6qd,qBACd0J,EAAuBv0d,KAAK+3V,YAAYzvU,EAAOymY,GAAOkC,yBAC1DjxZ,KAAK8md,MAAMpnE,aAAajnD,cAAc87H,GAClC1oH,EAAOkE,mBAEP5kV,OAAOyZ,WAAW,WAAc,OAAOinU,EAAOkE,kBAAkBwkH,IAA0B,IAGlG9I,EAAS/4b,UAAUqlU,YAAc,SAAUy8H,EAAUj/a,GACjD,IAAIjtB,EAAQ,CACRo7H,KAAM1jJ,KAAK00Y,QACX5kY,KAAM9P,KAAK00Y,QAAQ5kY,KACnBvO,MAAOvB,KAAKuB,MACZiE,OAAQxF,KAAKwF,OACbqmW,OAAQ7rW,KAAK6qd,qBACbr5c,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC4lO,IAAKjqX,KAAK8md,MAAM3jE,QAChBj5B,UAAWlqX,KAAK8md,MAAM58F,UACtBo0E,UAAWt+b,KAAK00Y,QAAQ4pD,UACxBh2a,MAAOksc,EACP9zd,KAAM60C,EACNlrC,SAAUrK,KAAK00Y,QAAQrqY,UAM3B,OAHIrK,KAAKwtF,QACLllE,EAAM0pc,OAAShyd,KAAKwtF,OAEjBllE,GAEXmjc,EAAS/4b,UAAU0hc,WAAa,SAAUr+E,GACtC,IAAI0+E,EAAoBz0d,KAAK+3V,YAAYg+C,EAAYgZ,GAAO2C,sBAC5D1xZ,KAAK8md,MAAMpnE,aAAajnD,cAAcg8H,GACtCz0d,KAAK8md,MAAM+H,mBAAmB6F,kBAElCjJ,EAAS/4b,UAAU2hc,YAAc,SAAUt+E,GACvC,IAAI4+E,EAAqB30d,KAAK+3V,YAAYg+C,EAAYgZ,GAAO0C,uBAC7DzxZ,KAAK8md,MAAMpnE,aAAajnD,cAAck8H,GACtC30d,KAAK8md,MAAM+H,mBAAmB+F,aAAa,CAAC50d,KAAKwF,UAErDimd,EAAS/4b,UAAUo9U,oBAAsB,SAAUimC,GAC/C,IAAIlqC,EAAS7rW,KAAK6qd,qBAEdgK,EAAyB70d,KAAK+3V,YAAYg+C,EAAYgZ,GAAOgC,2BACjE/wZ,KAAK8md,MAAMpnE,aAAajnD,cAAco8H,GAEI,mBAA/BhpH,EAAOiE,qBAEd3kV,OAAOyZ,WAAW,WAAc,OAAOinU,EAAOiE,oBAAoB+kH,IAA4B,IAEzE70d,KAAK8md,MAAM18E,mBAAmB4vC,sBAC/Ch6a,KAAK8md,MAAM18E,mBAAmB6vC,uBAElCj6a,KAAK80d,sBAIbrJ,EAAS/4b,UAAUoic,mBAAqB,SAAU9pC,EAAUC,GACpDjrb,KAAK8md,MAAM18E,mBAAmB2rC,gBAC9B/1a,KAAK0rd,QAAQqJ,gBAAgB/pC,EAAUC,EAAWjrb,MAGlDA,KAAKg1d,sBAAsBhqC,EAAUC,GAAW,IAGxDwgC,EAAS/4b,UAAU8vX,eAAiB,WAChC,OAAOxiZ,KAAKwF,OAAOg9Y,eAAexiZ,KAAK00Y,UAG3C+2E,EAAS/4b,UAAUsic,sBAAwB,SAAUhqC,EAAUC,EAAWH,GAKtE,QAJiB,IAAbE,IAAuBA,EAAW,WACpB,IAAdC,IAAwBA,EAAY,WAChB,IAApBH,IAA8BA,GAAkB,GAE/C9qb,KAAKwiZ,mBAINxiZ,KAAK8rd,YAAT,CAGA9rd,KAAK8rd,aAAc,EACnB9rd,KAAKgsd,oBACL,IAAI/4b,EAAWjzB,KAAKi1d,uBAAuB1qb,KAAKvqC,KAAMA,KAAKgsd,mBACvDliY,EAAS9pF,KAAKk1d,uBAAuBlqC,EAAUC,EAAWH,GAC9D9qb,KAAKm1d,iBAAiBrrY,GAAQzrE,KAAK4U,GAIbm/E,GAAEgsR,QAAQp+X,KAAKsuW,aACdw8E,GACnB9qb,KAAKo1d,WAAU,KAGvB3J,EAAS/4b,UAAUyic,iBAAmB,SAAUrrY,GAC5C,IAAIpoC,EAAQ1hD,KAEZ,OADwBA,KAAK8md,MAAM96B,qBAAqB8c,cAAc9oc,KAAKwF,OAAOuqY,YAAajmT,GACtErgF,IAAI,SAAU6kW,GAEnC,IADcA,EAAW07E,UAAW17E,EAAW07E,UAE3C,OAAO17E,EAEP5sT,EAAMola,MAAM18E,mBAAmB2rC,iBAC/BhrY,QAAQ24B,KAAK,mJAIjB,IAAI2xZ,EAAqB,IAAInN,GAAmB55G,GAGhD,OAFA5sT,EAAMola,MAAMt1c,QAAQ4oY,SAASi7E,GAC7BA,EAAmB/vL,KAAKx7M,GACjBurY,KAGf5J,EAAS/4b,UAAUuic,uBAAyB,SAAUjJ,EAAmB19G,GAKrE,GADsB09G,IAAsBhsd,KAAKgsd,mBACzBhsd,KAAK8rd,YAA7B,CAMA,GAAIx9G,EAAW+5G,qBAAuB/5G,EAAW+5G,sBAK7C,OAJI/5G,EAAWptV,SACXotV,EAAWptV,eAEflhB,KAAK8rd,aAAc,GAGvB,IAAKx9G,EAAWg4B,OAUZ,OATAv7V,QAAQ24B,KAAK,kCAAoC1jE,KAAKwF,OAAOy7Y,QAAU,+BAEnE3yC,EAAWp7T,QACXnI,QAAQ24B,KAAK,0JAEb4qS,EAAWptV,SACXotV,EAAWptV,eAEflhB,KAAK8rd,aAAc,GAGvB9rd,KAAKsuW,WAAaA,EAClBtuW,KAAKs1d,uBAA2C7wd,IAAvB6pW,EAAW07E,SAAyB17E,EAAW07E,UACxEhqb,KAAKu1d,wBACDv1d,KAAKs1d,kBACLt1d,KAAKw1d,qBAGLx1d,KAAKy1d,kBAELnnH,EAAW88E,kBACX98E,EAAW88E,mBAEf,IAAI9ia,EAAQtoB,KAAK+3V,YAAY,KAAMg3D,GAAO0D,4BAC1CzyZ,KAAK8md,MAAMpnE,aAAajnD,cAAcnwU,QArC9BgmV,EAAWptV,SACXotV,EAAWptV,WAsCvBuqc,EAAS/4b,UAAU+ic,gBAAkB,WACjCrjX,GAAE4uR,aAAahhY,KAAKsmY,UAChBtmY,KAAKsuW,YACLtuW,KAAKsmY,SAASxuX,YAAY9X,KAAKsuW,WAAWg4B,UAE9CtmY,KAAKyud,mBAEThD,EAAS/4b,UAAU8ic,mBAAqB,WACpC,IAAI9za,EAAQ1hD,KACR01d,EAAY11d,KAAKsuW,WAAatuW,KAAKsuW,WAAWg4B,SAAW,KACzDqvF,EAAgB31d,KAAK8md,MAAM18E,mBAAmB8vC,kCAClDl6a,KAAK41d,gBAAkB51d,KAAK8md,MAAMmE,aAAaC,SAASyK,EAAeD,GAAW,EAElF,WACIh0a,EAAMm0a,wBAEV,IAAI/rY,EAAS,CACTtkF,OAAQxF,KAAKwF,OACbkvY,QAAS10Y,KAAK00Y,QACdh0Y,KAAM,kBACNwzD,YAAal0D,KAAKsmY,SAClB+kF,OAAQqK,EACRI,kBAAkB,GAGL,WADF91d,KAAKsuW,YAActuW,KAAKsuW,WAAWi6G,iBAAmBvod,KAAKsuW,WAAWi6G,mBAAqB,QAEtGvod,KAAK8md,MAAMmE,aAAa8K,4BAA4BjsY,GAGpD9pF,KAAK8md,MAAMmE,aAAa+K,2BAA2BlsY,GAEvD9pF,KAAKyud,mBAEThD,EAAS/4b,UAAUmjc,oBAAsB,WAKjC71d,KAAK8rd,cAGL9rd,KAAKi2d,oBAIDj2d,KAAK8md,MAAMuF,gBAAgBC,cAActsd,KAAKusd,eAC9Cvsd,KAAKo1d,WAAU,KAM3B3J,EAAS/4b,UAAU6ic,sBAAwB,WACvC,GAAKv1d,KAAKs3V,UAAV,CASA,IAAI4+H,EAAgBl2d,KAAK8rd,cAAgB9rd,KAAKs1d,kBAC1Ca,EAAqBn2d,KAAK8rd,aAAe9rd,KAAKs1d,kBAClDljX,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,yBAA0B4vF,GAC/D9jX,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,8BAA+B4vF,GACpE9jX,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,wBAAyB6vF,GAC9D/jX,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAS5lX,WAAY,wBAAyBw1c,GACzE9jX,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAS5lX,WAAY,6BAA8Bw1c,KAElFzK,EAAS/4b,UAAUwic,uBAAyB,SAAUlqC,EAAUC,EAAWH,GACvE,MAAO,CACHvpb,MAAOvB,KAAK87H,WACZkvT,SAAUA,EACVC,UAAWA,EACXzlb,OAAQxF,KAAKwF,OACbqmW,OAAQ7rW,KAAKwF,OAAOuqY,YACpB1lY,SAAUrK,KAAKusd,aAAalid,SAC5Bq5I,KAAM1jJ,KAAK00Y,QACX5kY,KAAM9P,KAAK00Y,QAAQ5kY,KACnBm6W,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC+1C,gBAAiBA,EACjB5gE,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCxjY,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC2tU,OAAQhyd,KAAKwtF,MACbp3C,UAAWp2C,KAAKo2C,UAAU7L,KAAKvqC,MAC/B8yc,YAAa9yc,KAAKo2d,oBAAoB7rb,KAAKvqC,MAC3C+vc,UAAW/vc,KAAKsmY,SAChBqlD,WAAY3rb,KAAK2rb,WAAWphZ,KAAKvqC,MACjC6rb,YAAa7rb,KAAK6rb,YAAYthZ,KAAKvqC,QAK3Cyrd,EAAS/4b,UAAU0jc,oBAAsB,SAAUC,QACb,IAA9BA,IAAwCA,GAA4B,GACxEr2d,KAAKi2d,oBACLj2d,KAAKo1d,WAAU,GACViB,GACDr2d,KAAKs2d,qBAGb7K,EAAS/4b,UAAUi5Z,WAAa,SAAUz5S,GACtC,IAAI25N,EAAS7rW,KAAK6qd,qBACd/gY,EAAS,CACT45D,KAAM1jJ,KAAK00Y,QACX5kY,KAAM9P,KAAK00Y,QAAQ5kY,KACnBwpT,SAAUt5T,KAAKuB,MACf2wI,SAAUA,EACV25N,OAAQA,EACRrmW,OAAQxF,KAAKwF,OACbykX,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCxjY,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,cAEvCirN,EAAczD,EAAOyD,YACzB,OAAOl9P,GAAE8rR,OAAO5uB,GAAetvW,KAAK8md,MAAM9/C,kBAAkBlwJ,SAASw4F,EAAaxlR,GAAUooD,GAEhGu5U,EAAS/4b,UAAU0ic,UAAY,SAAUmB,QACX,IAAtBA,IAAgCA,GAAoB,GACxDv2d,KAAK8md,MAAMuF,gBAAgBmK,eAAex2d,KAAKusd,aAAalid,SAAUrK,KAAKwF,OAAQxF,KAAK00Y,QAAQ4pD,UAAWi4B,IAE/G9K,EAAS/4b,UAAU+jc,mBAAqB,WAChCz2d,KAAK8rd,cACD9rd,KAAKsuW,YAActuW,KAAKsuW,WAAWk9E,QAEnCxrb,KAAKsuW,WAAWk9E,UAMhBxrb,KAAKo1d,WAAU,KAI3B3J,EAAS/4b,UAAUgkc,UAAY,WAC3B,OAAO12d,KAAK8rd,aAEhBL,EAAS/4b,UAAU0jB,UAAY,SAAU9tB,GACrC,IAAI3L,EAAM2L,EAAMi/F,OAASj/F,EAAM2E,QAC/B,OAAQtQ,GACJ,KAAK2zX,GAAUiB,UACXvxY,KAAK22d,iBACL,MACJ,KAAKrmF,GAAUgC,OACXtyY,KAAK42d,cACL,MACJ,KAAKtmF,GAAUmB,WACXzxY,KAAK62d,kBACL,MACJ,KAAKvmF,GAAUe,QACXrxY,KAAK82d,aAAaxuc,GAClB,MACJ,KAAKgoX,GAAUc,cACf,KAAKd,GAAUyB,WACX/xY,KAAK+2d,8BAA8Bp6c,GACnC,MACJ,KAAK2zX,GAAUwB,SACf,KAAKxB,GAAUsB,OACf,KAAKtB,GAAUuB,UACf,KAAKvB,GAAUqB,SACX3xY,KAAKg3d,uBAAuB1uc,EAAO3L,KAI/C8uc,EAAS/4b,UAAUukc,oBAAsB,WACjCj3d,KAAK8rd,aAAe9rd,KAAKsuW,YAActuW,KAAKsuW,WAAWo9E,UACvD1rb,KAAKsuW,WAAWo9E,YAGxB+/B,EAAS/4b,UAAUskc,uBAAyB,SAAU1uc,EAAO3L,GACrD3c,KAAK8rd,cAGLxjc,EAAMm/F,UAAYznH,KAAKmsd,sBACvBnsd,KAAKk3d,mBAAmBv6c,GAGxB3c,KAAK8md,MAAMqQ,YAAYn9G,mBAAmB1xV,EAAO3L,EAAK3c,KAAKusd,cAAc,GAG7Ejkc,EAAM4E,mBAEVu+b,EAAS/4b,UAAUwkc,mBAAqB,SAAUv6c,GAC9C,GAAK3c,KAAK8md,MAAMsF,gBAAhB,CAGA,IAAIgL,EAAUp3d,KAAK8md,MAAMsF,gBAAgBiL,6BAA6B16c,GAClEy6c,GACAp3d,KAAK8md,MAAMqQ,YAAYG,kBAAkBF,KAGjD3L,EAAS/4b,UAAUokc,aAAe,SAAUxuc,GACxCtoB,KAAK8md,MAAMqQ,YAAYL,aAAa92d,KAAMsoB,IAE9Cmjc,EAAS/4b,UAAUqkc,8BAAgC,SAAUp6c,GACpD3c,KAAK8rd,aACN9rd,KAAK80d,mBAAmBn4c,IAGhC8uc,EAAS/4b,UAAUikc,eAAiB,WAC5B32d,KAAK8rd,aAAe9rd,KAAK0rd,QAAQgL,YACjC12d,KAAKo2d,sBAGDp2d,KAAK8md,MAAM18E,mBAAmBuuC,mBAC9B34a,KAAK8md,MAAMqQ,YAAYn9G,mBAAmB,KAAMs2B,GAAUwB,SAAU9xY,KAAKusd,cAAc,GAGvFvsd,KAAK80d,mBAAmBxkF,GAAUiB,YAI9Ck6E,EAAS/4b,UAAU4jc,kBAAoB,WACjBt2d,KAAK8md,MAAM18E,mBAAmB2rC,iBAIlB/1a,KAAK8md,MAAM18E,mBAAmBsuC,6BAExD14a,KAAK8md,MAAMqQ,YAAYn9G,mBAAmB,KAAMs2B,GAAUwB,SAAU9xY,KAAKusd,cAAc,IAG/Fd,EAAS/4b,UAAUkkc,YAAc,WACxB52d,KAAK8rd,aACN9rd,KAAK80d,mBAAmBxkF,GAAUgC,SAG1Cm5E,EAAS/4b,UAAUmkc,gBAAkB,WAC7B72d,KAAK8rd,cACL9rd,KAAKi2d,mBAAkB,GACvBj2d,KAAKo1d,WAAU,KAGvB3J,EAAS/4b,UAAU6kc,WAAa,SAAUjvc,GAKtC,GAFkB8pF,GAAEq3R,UAAUnhX,KACctoB,KAAKsmY,WACpBtmY,KAAK8rd,YAAlC,CAGA,IAAI33E,EAAc9kW,OAAOo3O,aAAan+P,EAAM8rX,UACxB,MAAhBD,EACAn0Y,KAAKw3d,kBAAkBlvc,GAElB8pF,GAAE8hS,8BAA8B5rX,KACrCtoB,KAAK80d,mBAAmB,KAAM3gF,GAM9B7rX,EAAM4E,oBAGdu+b,EAAS/4b,UAAU8kc,kBAAoB,SAAUlvc,GAC7C,IAAI8hX,EAAqBpqY,KAAK8md,MAAM18E,mBACpC,IAAKpqY,KAAK8rd,aAAe1hF,EAAmBkrC,iBAAkB,CAC1D,IAAImiD,GAAgBz3d,KAAK00Y,QAAQ10W,cAC7By3b,GAAgBrtF,EAAmBmrC,qBACnCv1a,KAAK00Y,QAAQ8tD,YAAYi1B,GAIjCnvc,EAAM4E,kBAEVu+b,EAAS/4b,UAAUo3b,YAAc,SAAU/zE,GACvC,IAAI5uM,EAAU4uM,EAAW5uM,QAASC,EAAU2uM,EAAW3uM,QAAS3/E,EAAWsuR,EAAWtuR,SAClFj7F,EAASupX,EAAWvpX,OACpB7hB,EAAK3K,KAAK8md,MAAOpnE,EAAe/0Y,EAAG+0Y,aAAc0sE,EAAkBzhd,EAAGyhd,gBAE1E,IAAIpsd,KAAK03d,4BAA4B3hF,GAArC,CAGA,IAAKtuR,GAAa2kW,IAAoBA,EAAgBuL,gBAAgBxzd,OAAS,CAI3E,IAAIoyd,GAAqBnkX,GAAEkqR,eAAiBlqR,GAAEmqR,kBAAoB/vW,EAAO7pB,UAAUiqB,SAAS,WAC5F5sB,KAAKo1d,UAAUmB,QAIfxgF,EAAW7oX,iBAIf,IAAIltB,KAAK43d,eAAeprc,GAAxB,CAGA,GAAI4/b,EAAiB,CACjB,IAAIyL,EAAW73d,KAAKusd,aAChB9kW,EACA2kW,EAAgB0L,wBAAwBD,GAIxCzL,EAAgB2L,eAAeF,EADV1wR,GAAWC,GAIxCs4M,EAAajnD,cAAcz4V,KAAK+3V,YAAYg+C,EAAYgZ,GAAOiC,2BAEnEy6D,EAAS/4b,UAAUglc,4BAA8B,SAAU3hF,GACvD,IAAIq2E,EAAkBpsd,KAAK8md,MAAMsF,gBACjC,SAAIA,IACkBA,EAAgB4L,iBAAiBh4d,KAAK8qd,oBACf,IAAtB/0E,EAAWx2T,SAMtCksY,EAAS/4b,UAAUklc,eAAiB,SAAUprc,GAC1C,OAAO4lF,GAAE8vR,sBAAsB11W,EAAQ,wBAAyB,IAGpEi/b,EAAS/4b,UAAUulc,oBAAsB,WACrC,IAAK7lX,GAAEirR,kBAAoBjrR,GAAEi3R,iBAAiB,YAC1C,OAAO,EAEX,IAAI6uF,GAAY,IAAIx9a,MAAOwmE,UACvB5oF,EAAM4/b,EAAYl4d,KAAKm4d,wBAA0B,IAErD,OADAn4d,KAAKm4d,wBAA0BD,EACxB5/b,GAEXmzb,EAAS/4b,UAAUm9U,cAAgB,SAAUkmC,GAEzC,GAAI/1Y,KAAKi4d,sBAGL,OAFAj4d,KAAK8vW,oBAAoBimC,QACzBA,EAAW7oX,iBAGf,IAAIviB,EAAK3K,KAAK8md,MAAOpnE,EAAe/0Y,EAAG+0Y,aAActV,EAAqBz/X,EAAGy/X,mBACzEguF,EAAmBp4d,KAAK+3V,YAAYg+C,EAAYgZ,GAAO+B,oBAC3DpR,EAAajnD,cAAc2/H,GAC3B,IAAIvsH,EAAS7rW,KAAK6qd,qBACdh/G,EAAOgE,eAEP1kV,OAAOyZ,WAAW,WAAc,OAAOinU,EAAOgE,cAAcuoH,IAAsB,IAE7DhuF,EAAmB4vC,qBAAuBnuE,EAAOqG,mBAClEk4B,EAAmB6vC,uBAEvBj6a,KAAK80d,sBAGbrJ,EAAS/4b,UAAUw5b,iBAAmB,WAClClsd,KAAKusd,aAAe,CAChBlid,SAAUrK,KAAK00Y,QAAQrqY,SACvBi0b,UAAWt+b,KAAK00Y,QAAQ4pD,UACxB94b,OAAQxF,KAAKwF,SAGrBimd,EAAS/4b,UAAUo4b,gBAAkB,WACjC,OAAO9qd,KAAKusd,cAEhBd,EAAS/4b,UAAU2lc,aAAe,WAC9B,OAAOr4d,KAAKqud,YAEhB5C,EAAS/4b,UAAU4lc,aAAe,SAAUjK,GACxCrud,KAAKqud,WAAaA,GAEtB5C,EAAS/4b,UAAUyzY,UAAY,WAC3B,OAAOnma,KAAKwF,QAEhBimd,EAAS/4b,UAAUm4b,mBAAqB,WACpC,OAAO7qd,KAAKwF,OAAOuqY,aAEvB07E,EAAS/4b,UAAU3T,OAAS,WACxB/e,KAAKqud,WAAW5sc,YAAYzhB,KAAKsmY,WAMrCmlF,EAAS/4b,UAAUxR,QAAU,WACrBlhB,KAAKyzd,wBACLzzd,KAAK8md,MAAM6M,UAAU4E,WAAWv4d,KAAKyzd,wBAEzCzzd,KAAK8yc,cACD9yc,KAAKquW,cAAgBruW,KAAKquW,aAAantV,UACvClhB,KAAKquW,aAAantV,UAClBlhB,KAAKquW,aAAe,MAEpBruW,KAAKw4d,iBACLx4d,KAAKw4d,gBAAgBt3c,UAEzBs3D,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCyrd,EAAS/4b,UAAU+8b,cAAgB,WAC/B,IAAIxjd,EAAOjM,KAAKktd,yBAAyBltd,KAAKmtd,eAC9Cntd,KAAKsmY,SAAS/6X,MAAMU,KAAOA,EAAO,KAClCjM,KAAK0vd,oBAETjE,EAAS/4b,UAAUw6b,yBAA2B,SAAUj2Y,GACpD,OAAKj3E,KAAK4rd,aAAe5rd,KAAKwF,OAAOkgZ,cAAgBpV,GAAUoD,YAG3D1zY,KAAKwF,OAAOkgZ,cAAgBpV,GAAUmD,aACpBzzY,KAAK8md,MAAMvjC,iBAAiB5nB,8BAC9B37Z,KAAK8md,MAAMvjC,iBAAiBziB,wBACX7pV,EAGrBj3E,KAAK8md,MAAMvjC,iBAAiB5nB,8BACzB1kV,EATRA,GAWfw0Y,EAAS/4b,UAAU68b,eAAiB,WAChC,IAAI7ld,EAAQ1J,KAAKitd,eACjBjtd,KAAKsmY,SAAS/6X,MAAM7B,MAAQA,EAAQ,MAExC+hd,EAAS/4b,UAAU+lc,gBAAkB,WACjC,IAQIC,EACAC,EATAj3a,EAAQ1hD,KACRkJ,EAAQlJ,KAAK8md,MAAM18E,mBAAmBme,cACtCx8Y,GAAM,EACNG,GAAQ,EACRF,GAAS,EACTC,GAAO,EACP2sd,EAAU54d,KAAKusd,aAAa/md,OAC5BmF,EAAK3K,KAAK8md,MAAOsF,EAAkBzhd,EAAGyhd,gBAAiB7oC,EAAmB54a,EAAG44a,iBAG7Er6a,GACAwvd,EAAUn1C,EAAiBhsB,qBAAqBqhE,GAChDD,EAAWp1C,EAAiBhhB,sBAAsBq2D,KAGlDF,EAAUn1C,EAAiBhhB,sBAAsBq2D,GACjDD,EAAWp1C,EAAiBhsB,qBAAqBqhE,IAErD,IAAIr/Z,EAAS6yZ,EAAgBuL,gBAAgBxid,OAAO,SAAUimC,GAAS,OAAOgxa,EAAgByM,sBAAsBn3a,EAAM6qa,aAAcnxa,KAEnIs9a,IACDzsd,GAAO,GAGN0sd,IACDzsd,GAAQ,GAEZ,IAAK,IAAIrE,EAAI,EAAGA,EAAI0xD,EAAOp1D,UACnB4H,GAAOG,GAASF,GAAUC,GADCpE,IAAK,CAIpC,IAAIuzC,EAAQme,EAAO1xD,GACfixd,EAAW1M,EAAgB2M,iBAAiB39a,GAC5C49a,EAAS5M,EAAgB6M,eAAe79a,IACvCrvC,GAAO/L,KAAK8md,MAAMoS,iBAAiBC,QAAQL,EAAU94d,KAAKusd,gBAC3Dxgd,GAAM,IAELC,GAAUhM,KAAK8md,MAAMoS,iBAAiBC,QAAQH,EAAQh5d,KAAKusd,gBAC5Dvgd,GAAS,IAERC,GAAQmvC,EAAMj2C,QAAQ8D,QAAQyvd,GAAW,IAC1Czsd,GAAO,IAENC,GAASkvC,EAAMj2C,QAAQ8D,QAAQ0vd,GAAY,IAC5Czsd,GAAQ,GAGhB,MAAO,CAAEH,IAAKA,EAAKG,MAAOA,EAAOF,OAAQA,EAAQC,KAAMA,IAE3Dw/c,EAAS/4b,UAAUq9b,uBAAyB,WACxC,IAAI9qb,EAAU,GACd,IAAKjlC,KAAKmsd,wBAA0Bnsd,KAAKypL,WACrC,OAAOxkJ,EAEXA,EAAQrhC,KAAK,0BACT5D,KAAK6rd,eACL5mb,EAAQrhC,KAAK,uBAEjB,IAAIsT,EAAQqH,KAAKG,IAAI1e,KAAKypL,WAAY,GAKtC,GAJAxkJ,EAAQrhC,KAAK,0BAA4BsT,GACrClX,KAAKo5d,gBACLn0b,EAAQrhC,KAAK,6BAEb5D,KAAKypL,WAAa,EAAG,CACrB,IAAI4vS,EAAUr5d,KAAKy4d,kBACfY,EAAQttd,KACRk5B,EAAQrhC,KAAK,qBAEby1d,EAAQntd,OACR+4B,EAAQrhC,KAAK,uBAEby1d,EAAQrtd,QACRi5B,EAAQrhC,KAAK,wBAEby1d,EAAQptd,MACRg5B,EAAQrhC,KAAK,sBAMrB,OAHM5D,KAAKw4d,iBACPvzb,EAAQrhC,KAAK,wBAEVqhC,GAEXwmb,EAAS/4b,UAAU4mc,kBAAoB,WAGnCt5d,KAAKksd,mBAELlsd,KAAKu5d,gBAELv5d,KAAKw5d,2BAET/N,EAAS/4b,UAAU8mc,wBAA0B,WACzC,IAAIpN,EAAkBpsd,KAAK8md,MAAMsF,gBACjC,GAAKA,EAAL,CAGA,IAA+C3iS,EAAtCzpL,KAAsDypL,WAC3DgwS,EAAgBrN,EAAgBI,kBAD3Bxsd,KAAwBusd,cAE7Blhd,EAAUrL,KAAKsmY,SACf78M,IAAegwS,IACfrnX,GAAEmuR,oBAAoBl1X,EAAS,yBAA4C,IAAlBoud,GACzDrnX,GAAEmuR,oBAAoBl1X,EAAS,2BAA8C,IAAlBoud,GAC3DrnX,GAAEmuR,oBAAoBl1X,EAAS,2BAA8C,IAAlBoud,GAC3DrnX,GAAEmuR,oBAAoBl1X,EAAS,2BAA8C,IAAlBoud,GAC3DrnX,GAAEmuR,oBAAoBl1X,EAAS,2BAA4Boud,GAAiB,GAC5Ez5d,KAAKypL,WAAagwS,GAEtB,IAAI5N,EAAgB7rd,KAAKysd,mBACrBZ,IAAkB7rd,KAAK6rd,gBACvB7rd,KAAK6rd,cAAgBA,EACrBz5W,GAAEmuR,oBAAoBl1X,EAAS,sBAAuBrL,KAAK6rd,gBAE/D7rd,KAAK05d,qBACLtnX,GAAEmuR,oBAAoBl1X,EAAS,4BAA6BrL,KAAKo5d,gBACjEp5d,KAAK0ud,kBAETjD,EAAS/4b,UAAU+5b,iBAAmB,WAClC,IAAIL,EAAkBpsd,KAAK8md,MAAMsF,gBACjC,IAAKpsd,KAAKypL,aAAe2iS,EACrB,OAAO,EAEX,IAAIuN,EAAavN,EAAgBuL,gBACjC,OAAOgC,EAAWx1d,OAAS,GAAKw1d,EAAWvlU,MAAM,SAAUh5G,GAAS,OAAOg3D,GAAEmlJ,SAAS,CAACl6N,EAAQ+7a,cAAcwgB,UAAWv8b,EAAQ+7a,cAAcygB,OAAQz+a,EAAM16C,SAEhK+qd,EAAS/4b,UAAUonc,0BAA4B,WAC3C,IAAInvd,EAAK3K,KAAK8md,MAAO18E,EAAqBz/X,EAAGy/X,mBAAoBgiF,EAAkBzhd,EAAGyhd,gBAClFuN,EAAavN,EAAgBuL,gBAC7BoC,EAAYJ,EAAWx1d,OAC3B,GAAInE,KAAKypL,WAAa,GAAKswS,EAAY,EACnC,OAAO,EAEX,IAAIC,EAAY5nX,GAAEj7F,KAAKwid,GACnBpN,EAAevsd,KAAK8qd,kBACpBmP,EAAsC,IAAdF,IACvB3vF,EAAmBoqC,sBAAwBpqC,EAAmBmqC,yBAC9Dv0a,KAAK8rd,YACV,GAAI9rd,KAAK6rd,cAAe,CACpB,IACIqO,EADmBP,EAAW,GAAGj5d,OAAS28B,EAAQ+7a,cAAcwgB,WAC3BxN,EAAgByM,sBAAsBtM,EAAcoN,EAAW,IACxGvnX,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,+BAAgC4zF,GACrED,EAAwBD,EAAUt5d,OAAS28B,EAAQ+7a,cAAcygB,MAErE,OAAOI,GACiB,MAApBD,EAAUhB,QACV5M,EAAgB+N,kBAAkBH,IAClC5N,EAAgBgO,kBAAkBJ,EAAWzN,IAErDd,EAAS/4b,UAAU2nc,mBAAqB,WACpC,IAAI1vd,EAAK3K,KAAK8md,MAAO18E,EAAqBz/X,EAAGy/X,mBAAoB54X,EAAU7G,EAAG6G,QAC1E8od,EAAgBloX,GAAEj7F,KADmFxM,EAAGyhd,gBACjEuL,iBAAiBj3d,KACxDA,EAAQ0pY,EAAmBoqC,sBAAwBpiU,GAAEgsR,QAAQk8F,GAAkB,OAAS,QACxFt6d,KAAKw4d,iBAAmBx4d,KAAKw4d,gBAAgBvjS,YAAcv0L,IAC3DV,KAAKw4d,gBAAgBt3c,UACrBlhB,KAAKw4d,qBAAkB/zd,GAEtBzE,KAAKw4d,kBACNx4d,KAAKw4d,gBAAkBhnd,EAAQuoY,2BAA2BpvW,SAAS9yB,cAAc,MAAQnX,EAAO,aAEpGV,KAAKw4d,gBAAgBniI,QAAQr2V,OAEjCyrd,EAAS/4b,UAAU6nc,+BAAiC,WAE5Cv6d,KAAKypL,WAAa,IAClBzpL,KAAK05d,qBACL15d,KAAK0ud,kBAGbjD,EAAS/4b,UAAUg8b,cAAgB,WAC/B,GAAK1ud,KAAK8md,MAAMsF,gBAAhB,CAGA,IAAI0N,EAA4B95d,KAAK85d,4BACjC95d,KAAKw4d,kBAAoBsB,IACzB95d,KAAKw4d,gBAAgBt3c,UACrBlhB,KAAKw4d,gBAAkB,MAEvBsB,GACA95d,KAAKq6d,qBAETjoX,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,yBAA0BtmY,KAAKw4d,mBAExE/M,EAAS/4b,UAAUgnc,mBAAqB,WACpC,IAAIc,EAAex6d,KAAKy4d,kBACpBW,EAAep5d,KAAKo5d,eACpB57H,GAAS47H,GAAgBoB,EAAazud,IACtC6sQ,GAAWwgN,GAAgBoB,EAAatud,MACxCuxV,GAAY27H,GAAgBoB,EAAaxud,OACzC0xV,GAAU07H,GAAgBoB,EAAavud,KACvCZ,EAAUrL,KAAKsmY,SACnBl0R,GAAEmuR,oBAAoBl1X,EAAS,oBAAqBmyV,GACpDprP,GAAEmuR,oBAAoBl1X,EAAS,sBAAuButQ,GACtDxmK,GAAEmuR,oBAAoBl1X,EAAS,uBAAwBoyV,GACvDrrP,GAAEmuR,oBAAoBl1X,EAAS,qBAAsBqyV,IAEzD+tH,EAAS/4b,UAAU+nc,0BAA4B,WAC3C,IAAIz1E,EAAmBhlZ,KAAKwF,OAAO6/Y,qBAC/BrlZ,KAAKglZ,mBAAqBA,IAC1BhlZ,KAAKglZ,iBAAmBA,EACxB5yS,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,6BAA8B0e,KAG3EymE,EAAS/4b,UAAUgoc,wBAA0B,WACzC,IAAIv1E,EAAiBnlZ,KAAKwF,OAAO8/Y,mBAC7BtlZ,KAAKmlZ,iBAAmBA,IACxBnlZ,KAAKmlZ,eAAiBA,EACtB/yS,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,2BAA4B6e,KAGzEsmE,EAAS/4b,UAAU67b,iBAAmB,WAC9Bvud,KAAKmud,cACLnud,KAAKyxd,eAAiBzxd,KAAK2pb,cAAc,cACzC3pb,KAAK26d,aAAe36d,KAAK2pb,cAAc,gBACvC3pb,KAAK4vd,WAAa5vd,KAAK2pb,cAAc,cACjC3pb,KAAK+yd,6BACL/yd,KAAK46d,iBAEL56d,KAAKgzd,2BACLhzd,KAAK66d,eAEL76d,KAAK8yd,2BACL9yd,KAAK86d,wBAIT96d,KAAKyxd,eAAiBzxd,KAAKsmY,UAGnCmlF,EAAS/4b,UAAU4zZ,sBAAwB,WACvC,OAAOtmb,KAAK8md,MAAMh9F,oBAEtB2hG,EAAS/4b,UAAUkoc,eAAiB,WAChC,IAAI35G,EAAajhX,KAAK8md,MAAM18E,mBAAmBiyC,eAC3C/7D,EAAiBtgX,KAAK8md,MAAM18E,mBAAmBmtC,mBAC/CwjD,EAA2B/6d,KAAK8md,MAAM18E,mBAAmB0rC,oBAC7D,GAAIx1D,EAAgB,CAEhB,IAAKy6G,EAED,YADA3oX,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KAAK,+EAAkF,2BAGjI,GAAIu9S,EAEA,YADA7uQ,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KAAK,wEAA2E,2BAI9H,IAAIs3Z,EAAkB,IAAInU,GAAY7md,KAAK00Y,QAAS10Y,KAAKwF,OAAQxF,KAAKqwd,gBAAiBrwd,KAAK8md,OAC5F9md,KAAKspb,WAAW0xC,EAAiBh7d,KAAK8md,MAAMt1c,SAE5CxR,KAAK26d,aAAah6c,aAAaq6c,EAAgB10F,SAAUtmY,KAAKyxd,iBAElEhG,EAAS/4b,UAAUmoc,aAAe,WAC9B,IAAII,EAAgB,IAAIvS,GAAc1od,KAAK00Y,QAAS10Y,KAAKwF,OAAQxF,KAAKqwd,gBAAiBrwd,KAAK8md,MAAO9md,KAAKsmY,UACxGtmY,KAAKspb,WAAW2xC,EAAej7d,KAAK8md,MAAMt1c,SAE1CxR,KAAK26d,aAAah6c,aAAas6c,EAAc30F,SAAUtmY,KAAKyxd,iBAEhEhG,EAAS/4b,UAAUooc,qBAAuB,WACtC,IAAII,EAAuB,IAAIp0B,GAC/B9mc,KAAK8md,MAAMt1c,QAAQ4oY,SAAS8gF,GAC5B,IAAIC,EAAcn7d,KAAK6qd,qBAAqBn6G,kBAE5CwqH,EAAqB51L,KAAK,CAAEovG,QAAS10Y,KAAK00Y,QAASlvY,OAAQxF,KAAKwF,OAAQ21d,YADxEA,EAAqC,mBAAhBA,EAA6BA,EAAc,OAEhEn7d,KAAK2mb,eAAe,WAAc,OAAOu0C,EAAqBh6c,YAE9DlhB,KAAK26d,aAAah6c,aAAau6c,EAAqB50F,SAAUtmY,KAAKyxd,iBAEvEhG,EAAS/4b,UAAU47b,WAAa,WAC5B,IAAI5sa,EAAQ1hD,KACRqL,EAAUrL,KAAKsmY,SACnBtmY,KAAK8md,MAAM18E,mBAAmBirC,WAAWhqa,EAASogd,EAAS2P,uBAAwBp7d,MACnFA,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAMola,MAAM18E,mBAAmBirC,WAAWhqa,EAASogd,EAAS2P,uBAAwB,SAEjI3P,EAAS/4b,UAAU0mc,aAAe,WAC9B,IAAIhN,EAAkBpsd,KAAK8md,MAAMsF,gBACjC,OAA2B,IAApBpsd,KAAKypL,YAAoB2iS,IAAoBA,EAAgBiP,qBAExE5P,EAAS/4b,UAAU6mc,cAAgB,SAAUjxc,GACzC,IAAIk+V,EAAcxmX,KAAK8md,MAAMuF,gBAAgBC,cAActsd,KAAKusd,cAWhE,GATI/lG,IAAgBxmX,KAAKwmX,eAEAxmX,KAAK8md,MAAM18E,mBAAmB8sC,2BAE/C9kU,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,gBAAiB9f,GAE1DxmX,KAAKwmX,YAAcA,GAGnBA,GAAel+V,GAASA,EAAMiuc,kBAAmB,CACjD,IAAI9qC,EAAUzrb,KAAK8ob,sBACnB2C,EAAQ38Z,QAGH6b,SAASlgB,eAAiBkgB,SAASlgB,gBAAkBkgB,SAAS7H,MAC/D2oZ,EAAQ38Z,QAIhB,IAAIwsc,EAAct7d,KAAK8md,MAAM18E,mBAAmB2rC,gBAC3CvvD,GAAgB80G,IAAet7d,KAAK8rd,aACrC9rd,KAAKi2d,qBAIbxK,EAAS/4b,UAAUujc,kBAAoB,SAAUrqN,QAC9B,IAAXA,IAAqBA,GAAS,GAC9B5rQ,KAAK8md,MAAM18E,mBAAmB2rC,gBAC9B/1a,KAAK0rd,QAAQ6P,eAAe3vN,GAG5B5rQ,KAAK8yc,YAAYlnM,IAGzB6/M,EAAS/4b,UAAUogb,YAAc,SAAUlnM,GAEvC,QADe,IAAXA,IAAqBA,GAAS,GAC7B5rQ,KAAK8rd,YAKV,GAAK9rd,KAAKsuW,WAAV,CAIA,IACIp8N,EADAspV,GAAiB,EAEjBliK,EAAWt5T,KAAK87H,WAsBpB,GArBK8vI,GAIuB5rQ,KAAKsuW,WAAWg6G,kBAAoBtod,KAAKsuW,WAAWg6G,qBAExEp2U,EAAWlyI,KAAKsuW,WAAWxyO,WAC3B0/V,GAAiB,GAOzBx7d,KAAK8rd,aAAc,EACf9rd,KAAKsuW,WAAWptV,SAChBlhB,KAAKsuW,WAAWptV,UAIpBlhB,KAAKsuW,WAAa,KACdtuW,KAAKs1d,mBAAqBt1d,KAAK41d,gBAC/B51d,KAAK41d,kBACL51d,KAAK41d,gBAAkB,UAKvB,GAFAxjX,GAAE4uR,aAAahhY,KAAKsmY,UAEhBtmY,KAAKmud,aAELnud,KAAKsmY,SAASxuX,YAAY9X,KAAK26d,mBAM/B,GAAI36d,KAAKquW,aAAc,CAGnB,IAAIs6G,EAAQ3od,KAAKiwd,gBAGbtH,GACA3od,KAAKsmY,SAASxuX,YAAY6wc,GAK1C3od,KAAKu1d,wBACDiG,GAAkBtpV,IAAaonL,IAK/Bt5T,KAAK+rd,qBAAsB,EAC3B/rd,KAAK00Y,QAAQysD,aAAanhc,KAAKwF,OAAQ0sI,GACvClyI,KAAK+rd,qBAAsB,GAK/B/rd,KAAK+ud,YAAY,CAAE2B,cAAc,EAAMD,eAAe,IACtD,IAAInoc,EAAQtoB,KAAK+3V,YAAY,KAAMg3D,GAAO2D,4BAC1C1yZ,KAAK8md,MAAMpnE,aAAajnD,cAAcnwU,QArElCtoB,KAAK8rd,aAAc,GAuE3BL,EAAS2P,uBAAyB,WAClC3P,EAAS4H,0BAA4B,eACrC5H,EAAS2H,0BAA4B,wBAC9B3H,EAjqDmB,CAkqD5Br5b,IAQEqpc,IACIryV,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFkyV,GAAkD,WASlD,OARAA,GAAal/c,OAAOuqB,QAAU,SAASvmC,GACnC,IAAK,IAAIokB,EAAG/c,EAAI,EAAGkwC,EAAIz+B,UAAUnV,OAAQ0D,EAAIkwC,EAAGlwC,IAE5C,IAAK,IAAI0hI,KADT3kH,EAAItL,UAAUzR,GACO2U,OAAOkW,UAAUgb,eAAexY,KAAKtQ,EAAG2kH,KACzD/oI,EAAE+oI,GAAK3kH,EAAE2kH,IAEjB,OAAO/oI,IAEOm3C,MAAM33C,KAAMsZ,YAE9Bqid,GAAyB,SAAUnjZ,GAEnC,SAASmjZ,EAAQC,EAAaC,EAAmBC,EAAyBC,EAA0BC,EAAwBtnF,EAASoyE,EAAOmV,EAAWC,EAA4BtQ,EAAauQ,GAC5L,IAAIz6a,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAkCjC,OAjCA0hD,EAAM06a,kBAAoB,GAC1B16a,EAAM5lC,QAAS,EACf4lC,EAAM26a,uBAAyB,EAC/B36a,EAAM46a,eAAgB,EACtB56a,EAAM66a,sBAAuB,EAC7B76a,EAAM86a,UAAY,GAIlB96a,EAAM+6a,sBAAwB,GAI9B/6a,EAAMg7a,qBAAuB,GAG7Bh7a,EAAMi7a,sBAAwB,GAC9Bj7a,EAAMk7a,aAAc,EACpBl7a,EAAMm7a,qBAAsB,EAC5Bn7a,EAAMo7a,wBAAyB,EAC/Bp7a,EAAMk6a,YAAcA,EACpBl6a,EAAMola,MAAQA,EACdpla,EAAMm6a,kBAAoBA,EAC1Bn6a,EAAMo6a,wBAA0BA,EAChCp6a,EAAMq6a,yBAA2BA,EACjCr6a,EAAMs6a,uBAAyBA,EAC/Bt6a,EAAMgzV,QAAUA,EAChBhzV,EAAMq7a,UAAYr7a,EAAMgzV,QAAQrqY,SAAW,GAAM,EACjDq3C,EAAMs7a,eAAiBt7a,EAAMola,MAAMmW,gBAAgBC,iBACnDx7a,EAAMw6a,2BAA6BA,EACnCx6a,EAAMkqa,YAAcA,EACpBlqa,EAAMy6a,eAAiBA,EACvBz6a,EAAMy7a,gBAAgBlB,GACfv6a,EA0uCX,OA9wCA+5a,GAAYE,EAASnjZ,GAsCrBmjZ,EAAQjpc,UAAU4yQ,KAAO,WACrB,IAAI5jP,EAAQ1hD,KACZA,KAAKo9d,WAAap9d,KAAK8md,MAAMuF,gBAAgBgR,aAAar9d,KAAK00Y,QAAQrqY,SAAUrK,KAAK00Y,QAAQ4pD,WAC9Ft+b,KAAKwtF,MAAQxtF,KAAKs9d,uBAAuBt9d,KAAK00Y,QAAQ5kY,MACtD9P,KAAKu9d,qBACLv9d,KAAKw9d,eACDx9d,KAAKy9d,YACLz9d,KAAKy8d,sBAAsB74d,KAAK,WAC5B89C,EAAMg8a,iBAGV19d,KAAK29d,WACL39d,KAAKy8d,sBAAsB74d,KAAK,WAC5B89C,EAAM06a,kBAAkB/od,QAAQ,SAAUuqd,GAAQ,OAAOxrX,GAAEiuR,eAAeu9F,EAAM,wBAI5FjC,EAAQjpc,UAAUmrc,eAAiB,SAAUC,EAAUC,QAC7B,IAAlBA,IAA4BA,EAAgB,MAChD,IAAI/Q,EAAgB,GAChB12G,EAAYt2W,KAAK00Y,QAAQp+B,UACzB0nH,EAAah+d,KAAKi+d,qBAAqBF,GAAe/tb,KAAK,KAC3Dkub,EAAiB9rX,GAAE9iE,OAAOtvC,KAAK00Y,QAAQ1uX,IACvCm4c,EAAgBn+d,KAAKo+d,kCACrBC,EAAcr+d,KAAKs+d,oBACnBC,EAAuBnsX,GAAE9iE,OAAO+ub,GAChCG,EAAcx+d,KAAKy+d,wBACnBC,EAAS1+d,KAAK00Y,QAAQ2pD,oBACtBsgC,EAAiB3+d,KAAK8md,MAAMgB,UAAU8W,eAAe5kE,oBAYzD,OAXAgzD,EAAcppd,KAAK,QACnBopd,EAAcppd,KAAK,eACnBopd,EAAcppd,KAAK,eAAkB86d,EAAS,qBAAyBC,EAAiB3+d,KAAK00Y,QAAQrqY,SAAW,GAAK,KACrH2id,EAAcppd,KAAKs6d,EAAiB,YAAeA,EAAiB,IAAO,IAC3ElR,EAAcppd,KAAKy6d,EAAc,sBAAyBE,EAAuB,IAAO,IACxFvR,EAAcppd,KAAK,aAAgB5D,KAAKknb,YAAc,KACtD8lC,EAAcppd,KAAK,WAAco6d,EAAa,KAC9ChR,EAAcppd,KAAK,mBAAsB0yW,EAAY,OAASkoH,EAAc,IAAML,EAAgB,MAElGnR,EAAcppd,KAAKk6d,GACnB9Q,EAAcppd,KAAK,UACZopd,EAAch9a,KAAK,KAE9B2rb,EAAQjpc,UAAUmsc,cAAgB,SAAUr5d,GACxC,IAAIs5d,EAAW9+d,KAAKw8d,UAAUh3d,EAAOqgZ,YACrC,OAAOi5E,EAAWA,EAASx4F,SAAW,MAE1Cq1F,EAAQjpc,UAAUw9R,WAAa,WACvBlwT,KAAK48d,cAGT58d,KAAK48d,aAAc,EACnB58d,KAAK++d,oCAETpD,EAAQjpc,UAAUqsc,gCAAkC,WAChD,IAAI9nb,EAAOj3C,KAAK8md,MAAM18E,mBAAmBo1C,8BACpCvoY,GAcLA,EAXa,CACT2mb,KAAM59d,KAAKg/d,SACXC,eAAgBj/d,KAAKi/d,eACrBC,gBAAiBl/d,KAAKk/d,gBACtBx7U,KAAM1jJ,KAAK00Y,QACXzqB,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC1qY,SAAUrK,KAAK00Y,QAAQrqY,SACvBypd,uBAAwB9zd,KAAKsrB,iBAAiBif,KAAKvqC,MACnDkqX,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCxjY,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,gBAI/Cs3U,EAAQjpc,UAAU+rc,sBAAwB,WAEtC,GAAIz+d,KAAK4rd,YACL,MAAO,GAGX,IAAI17P,EAASlwN,KAAKy9d,WAAaz9d,KAAKm/d,oBAAoBn/d,KAAK00Y,QAAQ4qD,WAAat/b,KAAK00Y,QAAQ0qD,OAC3FggC,EAAwBp/d,KAAKq/d,sBAAsBnvQ,GACnDovQ,EAAqBt/d,KAAK8md,MAAMyY,mBAAmBC,qBAAqBJ,GAE5E,OAD6Bp/d,KAAK8md,MAAM18E,mBAAmBmsC,yBAC3B,QAAU+oD,EAAqB,OAAS,yBAA2BA,EAAqB,QAE5H3D,EAAQjpc,UAAU4rc,kBAAoB,WAClC,IAAImB,EAAyBz/d,KAAK8md,MAAM18E,mBAAmBuvC,4BAC3D,GAAsC,mBAA3B8lD,EAGX,OAAOA,EAAuBz/d,KAAK00Y,UAEvCinF,EAAQjpc,UAAUgtc,sBAAwB,WACtC,OAAuC,IAAhC1/d,KAAKq8d,wBAEhBV,EAAQjpc,UAAUitc,gBAAkB,SAAU13X,EAAM21X,GAChD,GAAK59d,KAAK8b,OAAV,CAGA,IAAI8jd,EAAwB5/d,KAAK6/d,YAAY53X,GAC7C21X,EAAKnvZ,UAAYmxZ,EAAsBt/d,SACvCN,KAAK8/d,4BAA4BF,EAAsBpD,UAAWoB,GAClE59d,KAAKq8d,yBACDr8d,KAAK0/d,yBAA2B1/d,KAAKs8d,eACrCt8d,KAAK+/d,iBAGbpE,EAAQjpc,UAAUstc,mBAAqB,SAAUC,EAAkBh4X,EAAMh1E,GACrE,IAAIyuB,EAAQ1hD,KACRkge,EAA8Blge,KAAKk8d,2BACnC0D,EAAwBM,EAA8B,CAAE1D,UAAW,GAAIl8d,SAAU,IAAON,KAAK6/d,YAAY53X,GACzGk4X,EAAcnge,KAAK69d,eAAe+B,EAAsBt/d,UAK5D2/d,EAAiBG,kBAAkBD,EAAa,WAC5C,IAAIvC,EAAOqC,EAAiBI,cAAc3+a,EAAMwlY,aAChDxlY,EAAM4+a,iBAAiBL,EAAkBrC,GACzC3qc,EAAS2qc,GACLsC,EACAx+a,EAAMola,MAAM6M,UAAUC,WAAWlya,EAAMi+a,gBAAgBp1b,KAAKmX,EAAOumD,EAAM21X,GAAOl8a,EAAMgzV,QAAQrqY,SAAU,kBAGxGq3C,EAAMo+a,4BAA4BF,EAAsBpD,UAAWoB,GACnEl8a,EAAM26a,uBAAyB,MAI3CV,EAAQjpc,UAAU4qc,uBAAyB,SAAUxtd,GAEjD,IAD2B9P,KAAK8md,MAAM18E,mBAAmB6wC,uBAErD,OAAO,KAEX,IAAIslD,EAAgBvge,KAAK47d,YAAY4E,OAUrC,OATAD,EAAczwd,KAAO4rd,GAAW,GAAI5rd,GACpCywd,EAAc7rF,QAAU10Y,KAAK00Y,QAC7B6rF,EAAc/ud,QAAUxR,KAAK8md,MAAM18E,mBAAmB/lP,aACtDrkJ,KAAK2mb,eAAe,WAChB45C,EAAcE,WACdF,EAAczwd,KAAO,KACrBywd,EAAc7rF,QAAU,KACxB6rF,EAAc/ud,QAAU,OAErB+ud,GAEX5E,EAAQjpc,UAAU6qc,mBAAqB,WACnC,IAAI/jH,EAAkBx5W,KAAK00Y,QAAQl7B,kBAC/BknH,EAAe1ge,KAAK8md,MAAM6Z,mBAAqB3ge,KAAK00Y,QAAQc,OAC5D/1B,EAAYz/W,KAAK8md,MAAMvjC,iBAAiB5tB,cAMxCirE,EADa5ge,KAAK00Y,QAAQ75P,QAAU76I,KAAK00Y,QAAQjwU,QAChBzkE,KAAK8md,MAAM18E,mBAAmBykC,oBAAoBpvD,GACnFz/W,KAAK00Y,QAAQmsF,KACb7ge,KAAK8ge,oBAAoBnF,EAAQoF,sBAAuBpF,EAAQqF,iCAE3DN,EACL1ge,KAAK8ge,oBAAoBnF,EAAQsF,qBAAsBtF,EAAQuF,gCAE1D1nH,EACLx5W,KAAK8ge,oBAAoBnF,EAAQwF,yBAA0B,MAEtDP,EACL5ge,KAAK8ge,oBAAoBnF,EAAQyF,mBAAoBzF,EAAQ0F,8BAG7Drhe,KAAKshe,4BAGb3F,EAAQjpc,UAAU4uc,yBAA2B,WACzC,IACIC,EADA7/a,EAAQ1hD,KAERwhe,EAAW,GACXC,EAAY,GACZzhe,KAAK4rd,YACL2V,EAAavhe,KAAK8md,MAAMvjC,iBAAiB/pB,0BAGzC+nE,EAAavhe,KAAK8md,MAAMvjC,iBAAiBloB,0CAA0Cr7Z,KAAK00Y,SACxF8sF,EAAWxhe,KAAK8md,MAAMvjC,iBAAiBhpB,8BAA8Bv6Z,KAAK00Y,SAC1E+sF,EAAYzhe,KAAK8md,MAAMvjC,iBAAiB7oB,+BAA+B16Z,KAAK00Y,UAEhF10Y,KAAKgge,mBAAmBhge,KAAK67d,kBAAmB0F,EAAY,SAAU3D,GAAQ,OAAOl8a,EAAMs9a,SAAWpB,IACtG59d,KAAKgge,mBAAmBhge,KAAK+7d,yBAA0B0F,EAAW,SAAU7D,GAAQ,OAAOl8a,EAAMw9a,gBAAkBtB,IACnH59d,KAAKgge,mBAAmBhge,KAAK87d,wBAAyB0F,EAAU,SAAU5D,GAAQ,OAAOl8a,EAAMu9a,eAAiBrB,KAEpHjC,EAAQjpc,UAAUouc,oBAAsB,SAAUpge,EAAMS,GACpD,IAAIugD,EAAQ1hD,KAEZ,GADAA,KAAK0he,cAAe,EAChB1he,KAAKm8d,eAAgB,CAOrB,GANAn8d,KAAK2he,4BAA4B3he,KAAK67d,kBAAmB,KAAM,KAAMn7d,EAAMS,EAAM,SAAUy8d,GACvFl8a,EAAMkgb,kBAAoBhE,GAC3B,SAAUvvH,GACT3sT,EAAMmgb,0BAA4BxzH,IAGlCruW,KAAK4rd,YACL,OAEJ5rd,KAAK2he,4BAA4B3he,KAAK87d,wBAAyBxrF,GAAUoD,YAAa,2BAA4BhzY,EAAMS,EAAM,SAAUy8d,GACpIl8a,EAAMogb,kBAAoBlE,GAC3B,SAAUvvH,GACT3sT,EAAMqgb,0BAA4B1zH,IAEtCruW,KAAK2he,4BAA4B3he,KAAK+7d,yBAA0BzrF,GAAUmD,aAAc,6BAA8B/yY,EAAMS,EAAM,SAAUy8d,GACxIl8a,EAAMsgb,mBAAqBpE,GAC5B,SAAUvvH,GACT3sT,EAAMugb,2BAA6B5zH,SAMvCruW,KAAK2he,4BAA4B3he,KAAKg8d,uBAAwB,KAAM,KAAMt7d,EAAMS,EAAM,SAAUy8d,GAC5Fl8a,EAAMwgb,cAAgBtE,GACvB,SAAUvvH,GACT3sT,EAAMygb,sBAAwB9zH,KAI1CstH,EAAQjpc,UAAUyqc,gBAAkB,SAAUlB,GAC1C,GAAIA,EAAW,CACX,IAAImG,EAAkBhwX,GAAE8rR,OAAOl+X,KAAK00Y,QAAQ4qD,WAE5Ct/b,KAAKy9d,WAAa2E,EAElBpie,KAAK29d,WAAayE,OAGlBpie,KAAKy9d,YAAa,EAClBz9d,KAAK29d,WAAY,GAGzBhC,EAAQjpc,UAAUgkc,UAAY,WAC1B,OAAO12d,KAAKqie,YAEhB1G,EAAQjpc,UAAU6oc,eAAiB,SAAU3vN,GACzC5rQ,KAAK8yc,YAAYlnM,IAErB+vN,EAAQjpc,UAAUq4M,YAAc,WAC5B,OAAO/qO,KAAK0he,cAEhB/F,EAAQjpc,UAAU4vc,iBAAmB,WACjC,IAAI5gb,EAAQ1hD,KAERuie,EAAa,SAAU3E,EAAM4E,EAAWj0H,GACxC,IAAKqvH,IAAS4E,EACV,OAAO,EAGX,IAAKA,EAAUnsI,QACX,OAAO,EAEX,IAAIvsQ,EAASpoC,EAAM+gb,sBAAsB7E,EAAMrvH,GAE/C,OADuBi0H,EAAUnsI,QAAQvsQ,IAGzC44Y,EAAgBH,EAAWvie,KAAKkie,cAAelie,KAAKmie,sBAAuB,MAC3EQ,EAAcJ,EAAWvie,KAAK4he,kBAAmB5he,KAAK6he,0BAA2B,MACjFe,EAAcL,EAAWvie,KAAK8he,kBAAmB9he,KAAK+he,0BAA2BzxF,GAAUoD,aAC3FmvF,EAAeN,EAAWvie,KAAKgie,mBAAoBhie,KAAKiie,2BAA4B3xF,GAAUmD,cAElG,OADgCivF,GAAiBC,GAAeC,GAAeC,GAGnFlH,EAAQjpc,UAAU8qc,aAAe,WAC7Bx9d,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQkD,qBAAsB1gc,KAAK8ie,mBAAmBv4b,KAAKvqC,OAC1GA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQnsC,mBAAoBrxZ,KAAKu9c,cAAchza,KAAKvqC,OACnGA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQoD,wBAAyB5gc,KAAKs5d,kBAAkB/ub,KAAKvqC,OAC5GA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQuC,kBAAmB//b,KAAK09d,aAAanzb,KAAKvqC,OACjGA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQnzC,uBAAwBrqZ,KAAK+ie,kBAAkBx4b,KAAKvqC,OAC3GA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQW,mBAAoBn+b,KAAKgje,qBAAqBz4b,KAAKvqC,OAC1GA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQsE,mBAAoB9hc,KAAKije,qBAAqB14b,KAAKvqC,OAC1GA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQ4C,wBAAyBpgc,KAAKkje,0BAA0B34b,KAAKvqC,OACpHA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQ0C,uBAAwBlgc,KAAKmje,yBAAyB54b,KAAKvqC,OAClH,IAAI0/Y,EAAe1/Y,KAAK8md,MAAMpnE,aAC9B1/Y,KAAKymb,4BAA4B/mC,EAAcqP,GAAO8D,2BAA4B7yZ,KAAK09d,aAAanzb,KAAKvqC,OACzGA,KAAKymb,4BAA4B/mC,EAAcqP,GAAOc,gCAAiC7vZ,KAAKoje,0BAA0B74b,KAAKvqC,OAC3HA,KAAKymb,4BAA4B/mC,EAAcqP,GAAOe,8BAA+B9vZ,KAAKqje,wBAAwB94b,KAAKvqC,OACvHA,KAAKymb,4BAA4B/mC,EAAcqP,GAAOa,qBAAsB5vZ,KAAKsje,gBAAgB/4b,KAAKvqC,OACtGA,KAAKymb,4BAA4B/mC,EAAcqP,GAAOqC,mBAAoBpxZ,KAAKuje,mBAAmBh5b,KAAKvqC,OACvGA,KAAKymb,4BAA4B/mC,EAAcqP,GAAO+D,yBAA0B9yZ,KAAKwje,oBAAoBj5b,KAAKvqC,OAC9GA,KAAKymb,4BAA4B/mC,EAAcqP,GAAOO,2BAA4BtvZ,KAAKyje,qBAAqBl5b,KAAKvqC,OACjHA,KAAKymb,4BAA4B/mC,EAAcqP,GAAO0B,oBAAqBzwZ,KAAK0je,eAAen5b,KAAKvqC,OACpGA,KAAKymb,4BAA4B/mC,EAAcqP,GAAOS,mBAAoBxvZ,KAAK2je,cAAcp5b,KAAKvqC,OAClGA,KAAK4je,4BAETjI,EAAQjpc,UAAUkxc,yBAA2B,WACzC,IAAIlib,EAAQ1hD,KACZA,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQoD,wBAAyB,WAC5El/Y,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAASxF,wBAEhEt5d,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQsE,mBAAoB,SAAUx5a,GACjFo5B,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAAShQ,cAAcxmc,QAKlFqzc,EAAQjpc,UAAU+wc,qBAAuB,WACrCzje,KAAK8je,oBAAoBtnd,OAAOC,KAAKzc,KAAKw8d,aAE9Cb,EAAQjpc,UAAUswc,qBAAuB,SAAU16c,GAI/CtoB,KAAK6je,gBAAgB,SAAU/E,GAC3B,OAAOA,EAAS/P,YAAY,CACxB0B,eAAgBnoc,EAAMkyD,OACtB0rL,SAAU59O,EAAMkyD,WAQxBx6E,KAAKu9c,gBAELv9c,KAAK+je,kBAETpI,EAAQjpc,UAAUuwc,qBAAuB,WAErCjje,KAAK+je,kBAETpI,EAAQjpc,UAAUqxc,eAAiB,WAC/B/je,KAAKgke,mCACLhke,KAAKike,oCACLjke,KAAKkke,2BACLlke,KAAKmke,0BAETxI,EAAQjpc,UAAUwwc,0BAA4B,WAC1C,IAAItlC,EAAc59b,KAAK00Y,QAAQkpD,YAC/B59b,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GACrC0qG,GAAEiuR,eAAe34X,EAAK,0BACtB0qG,GAAEiuR,eAAe34X,EAAK,0BAClBk2b,GACAxrV,GAAE+tR,YAAYz4X,EAAK,oBAAsBk2b,MAIrD+9B,EAAQjpc,UAAUywc,yBAA2B,WACzCnje,KAAKmke,0BAETxI,EAAQjpc,UAAUyxc,uBAAyB,WACvC,IAAIlkC,EAAWjgc,KAAK00Y,QAAQurD,SAC5Bjgc,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,kBAAmBu4b,MAEzG07B,EAAQjpc,UAAUqwc,kBAAoB,WAClC,IAAIruF,EAAU10Y,KAAK00Y,QACnB10Y,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,wBAAyBgtY,EAAQvzO,YACnHnhK,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,2BAA4BgtY,EAAQvzO,aAE1Hw6T,EAAQjpc,UAAU0wc,0BAA4B,WACtCpje,KAAK0he,cAGT1he,KAAK+/d,gBAETpE,EAAQjpc,UAAU0xc,2BAA6B,WACvCpke,KAAKmie,wBACLnie,KAAK8md,MAAMud,mBAAmBC,aAAatke,KAAK00Y,QAAS,KAAM10Y,KAAKmie,uBACpEnie,KAAKmie,sBAAwB,MAE7Bnie,KAAK6he,4BACL7he,KAAK8md,MAAMud,mBAAmBC,aAAatke,KAAK00Y,QAAS,KAAM10Y,KAAK6he,2BACpE7he,KAAKmie,sBAAwB,MAE7Bnie,KAAK+he,4BACL/he,KAAK8md,MAAMud,mBAAmBC,aAAatke,KAAK00Y,QAASpE,GAAUoD,YAAa1zY,KAAK+he,2BACrF/he,KAAK+he,0BAA4B,MAEjC/he,KAAKiie,6BACLjie,KAAK8md,MAAMud,mBAAmBC,aAAatke,KAAK00Y,QAASpE,GAAUmD,aAAczzY,KAAKiie,4BACtFjie,KAAKmie,sBAAwB,OAGrCxG,EAAQjpc,UAAU6xc,oBAAsB,SAAUC,GAC9C,OAAQA,GACJ,KAAKl0F,GAAUoD,YAAa,OAAO1zY,KAAKi/d,eACxC,KAAK3uF,GAAUmD,aAAc,OAAOzzY,KAAKk/d,gBACzC,QAAS,OAAOl/d,KAAKg/d,WAG7BrD,EAAQjpc,UAAU2wc,wBAA0B,WACpCrje,KAAK0he,cAGT1he,KAAK+/d,gBAETpE,EAAQjpc,UAAU4wc,gBAAkB,WAC5Btje,KAAK0he,cAGT1he,KAAK+/d,gBAETpE,EAAQjpc,UAAUqtc,aAAe,WAC7B,GAAK//d,KAAK0/d,wBAMV,GAF6B1/d,KAAK8md,MAAM18E,mBAAmBkuC,4BACRt4a,KAAK4rd,YAEpD5rd,KAAKyke,mCAEJ,CACD,GAAIzke,KAAKu8d,qBACL,OAEJv8d,KAAK8md,MAAM6M,UAAUC,WAAW5zd,KAAKyke,6BAA6Bl6b,KAAKvqC,MAAOA,KAAK00Y,QAAQrqY,SAAU,sBAZrGrK,KAAKs8d,eAAgB,GAe7BX,EAAQjpc,UAAU+xc,6BAA+B,WAC7C,GAAKzke,KAAK8b,OAAV,CAIA,IAAIyld,EACAC,EACAC,EAHJzhe,KAAKu8d,sBAAuB,EAIxBv8d,KAAK4rd,aACL2V,EAAavhe,KAAK8md,MAAMvjC,iBAAiB/pB,yBACzCgoE,EAAW,GACXC,EAAY,KAGZF,EAAavhe,KAAK8md,MAAMvjC,iBAAiBloB,0CAA0Cr7Z,KAAK00Y,SACxF8sF,EAAWxhe,KAAK8md,MAAMvjC,iBAAiBhpB,8BAA8Bv6Z,KAAK00Y,SAC1E+sF,EAAYzhe,KAAK8md,MAAMvjC,iBAAiB7oB,+BAA+B16Z,KAAK00Y,UAEhF10Y,KAAK0ke,yBAAyB1ke,KAAKg/d,SAAUuC,GAC7Cvhe,KAAK0ke,yBAAyB1ke,KAAKi/d,eAAgBuC,GACnDxhe,KAAK0ke,yBAAyB1ke,KAAKk/d,gBAAiBuC,GACpDzhe,KAAK68d,qBAAsB,EAC3B,IAAI8H,EAAiBnod,OAAOC,KAAKzc,KAAKw8d,WACtC+E,EAAWlud,QAAQ,SAAU4tF,GAAO,OAAOmR,GAAEq0R,gBAAgBk+F,EAAgB1jY,EAAIggT,WACjFugF,EAASnud,QAAQ,SAAU4tF,GAAO,OAAOmR,GAAEq0R,gBAAgBk+F,EAAgB1jY,EAAIggT,WAC/EwgF,EAAUpud,QAAQ,SAAU4tF,GAAO,OAAOmR,GAAEq0R,gBAAgBk+F,EAAgB1jY,EAAIggT,WAGhF,IAAI2jF,EAAsBD,EAAexvd,OAAOnV,KAAK6ke,0BAA0Bt6b,KAAKvqC,OAEpFA,KAAK8je,oBAAoBc,KAE7BjJ,EAAQjpc,UAAUixc,cAAgB,WAC9B3je,KAAK68d,qBAAsB,GAE/BlB,EAAQjpc,UAAUoxc,oBAAsB,SAAUpiC,GAC9C,IAAIhgZ,EAAQ1hD,KACZ0hc,EAAOrub,QAAQ,SAAUsJ,GACrB,IAAImid,EAAWp9a,EAAM86a,UAAU7/c,GAE3By1F,GAAEgsR,QAAQ0gG,KAGdA,EAAS//c,SACT+/c,EAAS59c,UACTwgC,EAAM86a,UAAU7/c,GAAO,SAG/Bg/c,EAAQjpc,UAAUmyc,0BAA4B,SAAUC,GACpD,IAAInqE,EAAmB36Z,KAAK8md,MAAMvjC,iBAAiB/pB,yBAC/CurE,GAAc,EAEdz6F,EAAetqY,KAAKw8d,UAAUsI,GAElC,IAAKx6F,GAAgBtqY,KAAKgle,iBAAiB16F,GACvC,OAAOy6F,EAGX,IAAIpwF,EAAUrK,EAAaosF,YACvB7hX,EAAU70G,KAAK8md,MAAMuF,gBAAgBC,cAAchiF,EAAawgF,mBAEpE,GAD0Bn2E,GAAW9/R,EACZ,CACrB,IAAIrvG,EAAS8kY,EAAa67B,YAE1B,QADyBxL,EAAiB1xZ,QAAQzD,IAAW,IACrBu/d,EAE5C,OAAOA,GAEXpJ,EAAQjpc,UAAUuyc,6BAA+B,SAAUnG,GAEvD,IAAI9+d,KAAK4rd,YAAT,CAGA,IAAIvgd,EAAUyzd,EAASx4F,SAEnBk+F,EADS1F,EAAS34D,YACEzgB,YACpBrkB,EAAarhY,KAAKuke,oBAAoBC,GAEtCU,EAAgBpG,EAASzG,eACZ6M,IAAkB7jG,IAG3B6jG,GACAA,EAAczjd,YAAYpW,GAE9Bg2X,EAAWvpX,YAAYzM,GACvByzd,EAASxG,aAAaj3F,GACtBrhY,KAAK68d,qBAAsB,KAGnClB,EAAQjpc,UAAUsyc,iBAAmB,SAAUlG,GAC3C,IAAIt5d,EAASs5d,EAAS34D,YAClBg/D,EAAYnle,KAAKuke,oBAAoB/+d,EAAOkgZ,aAEhD,OADao5E,EAASzG,iBACJ8M,GAEtBxJ,EAAQjpc,UAAUgyc,yBAA2B,SAAU9G,EAAM31X,GACzD,IAAIvmD,EAAQ1hD,KACZ,GAAK49d,EAAL,CAGA,IAAIwH,EAAgB,GAChBC,EAAe,GAenB,GAdAp9X,EAAK50F,QAAQ,SAAU4tF,GACnB,IAAI8sQ,EAAQ9sQ,EAAIggT,QACZqkF,EAAe5jb,EAAM86a,UAAUzuH,GAC/Bu3H,EACA5jb,EAAMujb,6BAA6BK,GAGnC5jb,EAAM6jb,cAActkY,EAAK28X,EAAMwH,EAAeC,KAGlDD,EAAcjhe,OAAS,IACvBiuG,GAAEqwR,WAAWm7F,EAAMwH,EAAcp1b,KAAK,KACtChwC,KAAK8/d,4BAA4BuF,EAAczH,IAE/C59d,KAAK68d,qBAAuB78d,KAAK8md,MAAM18E,mBAAmByvC,mBAAoB,CAC9E,IAAI2rD,EAAoBv9X,EAAKx+F,IAAI,SAAUw3F,GAAO,OAAOv/C,EAAMm9a,cAAc59X,KAC7EmR,GAAEgvR,iBAAiBw8F,EAAM4H,MAGjC7J,EAAQjpc,UAAU47b,WAAa,SAAUmX,GACrC,IAAIC,EAAM1le,KAAK8md,MAAM18E,mBACrBs7F,EAAIrwD,WAAWowD,EAAe9J,EAAQgK,0BAA2B3le,MACjEA,KAAK2mb,eAAe,WAChB++C,EAAIrwD,WAAWowD,EAAe9J,EAAQgK,0BAA2B,SAGzEhK,EAAQjpc,UAAU6yc,cAAgB,SAAUtkY,EAAKogS,EAAY+jG,EAAeC,GACxE,IAAIO,EAAc,IAAIna,GAASzrd,KAAKwtF,MAAOxtF,KAAK8md,MAAO7lX,EAAKjhG,KAAK00Y,QAAS10Y,MAAM,EAAOA,KAAK4rd,aACxFia,EAAeD,EAAY9Y,oBAC/BsY,EAAcxhe,KAAKiie,GACnBR,EAAazhe,KAAKgie,GAClB5le,KAAKw8d,UAAUv7X,EAAIggT,SAAW2kF,EAC9BA,EAAYtN,aAAaj3F,GACzBrhY,KAAK68d,qBAAsB,GAE/BlB,EAAQjpc,UAAUyhc,aAAe,SAAUr+a,EAAWigW,GAClD,OAAQjgW,GACJ,IAAK,WACD91C,KAAK8le,cAAc/vF,GACnB,MACJ,IAAK,QACD/1Y,KAAK+le,WAAWhwF,GAChB,MACJ,IAAK,YACD/1Y,KAAKgme,eAAejwF,KAIhC4lF,EAAQjpc,UAAUuzc,eAAiB,SAAUvle,EAAM8zd,GAC/C,MAAO,CACH9zd,KAAMA,EACNgjJ,KAAM1jJ,KAAK00Y,QACX5kY,KAAM9P,KAAK00Y,QAAQ5kY,KACnBzF,SAAUrK,KAAK00Y,QAAQrqY,SACvBi0b,UAAWt+b,KAAK00Y,QAAQ4pD,UACxB9sb,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC4lO,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzC1sX,MAAOksc,IAGfmH,EAAQjpc,UAAUwzc,yBAA2B,SAAUxle,EAAM8zd,GACzD,IAAIlsc,EAAQtoB,KAAKime,eAAevle,EAAM8zd,GAQtC,OADAlsc,EAAM/B,OAASvmB,KACRsoB,GAEXqzc,EAAQjpc,UAAUozc,cAAgB,SAAU/vF,GACxC,IAAI3jS,GAAE83R,2BAA2B6L,GAAjC,CAGA,IAAIowF,EAAUnme,KAAKkme,yBAAyBn3E,GAAOgD,yBAA0Bhc,GAC7E/1Y,KAAK8md,MAAMpnE,aAAajnD,cAAc0tI,KAE1CxK,EAAQjpc,UAAUszc,eAAiB,SAAUjwF,GACzC/1Y,KAAK88d,uBAAyB1qX,GAAE8vR,sBAAsB6T,EAAWvpX,OAAQ,cAAe,IAE5Fmvc,EAAQjpc,UAAUqzc,WAAa,SAAUhwF,GAErC,IADW3jS,GAAE83R,2BAA2B6L,KAAe/1Y,KAAK88d,uBAC5D,CAGA,IAAIqJ,EAAUnme,KAAKkme,yBAAyBn3E,GAAO+C,kBAAmB/b,GACtE/1Y,KAAK8md,MAAMpnE,aAAajnD,cAAc0tI,GAEtC,IAAIC,EAAwBrwF,EAAW5uM,SAAW4uM,EAAW3uM,QACzDi/R,EAAkBtwF,EAAWtuR,SACjC,IAGAznH,KAAK00Y,QAAQ75P,OAGR76I,KAAK00Y,QAAQvlV,aAEdnvD,KAAK00Y,QAAQ4pD,WAEZt+b,KAAK8md,MAAM18E,mBAAmBkrC,mBAE/Bt1a,KAAK8md,MAAM18E,mBAAmB6sC,8BAZlC,CAeA,IAAIqvD,EAAqBtme,KAAK8md,MAAM18E,mBAAmBorC,4BACnD+wD,EAAyBvme,KAAK8md,MAAM18E,mBAAmBmrC,mBACvDv1a,KAAK00Y,QAAQ10W,aACTsmc,EACAtme,KAAK00Y,QAAQiuD,kBAAkB,CAAEzwT,UAAU,IAEtCk0V,EACDG,GACAvme,KAAK00Y,QAAQiuD,kBAAkB,CAAEzwT,UAAU,IAK/ClyI,KAAK00Y,QAAQiuD,kBAAkB,CAAEzwT,UAAU,EAAMuwT,gBAAgB,IAKrEzic,KAAK00Y,QAAQiuD,kBAAkB,CAAEzwT,UAAU,EAAMuwT,gBAD5B6jC,IAA8BF,EAC8BxjC,YAAayjC,OAGtG1K,EAAQjpc,UAAUivc,4BAA8B,SAAU1B,EAAkB1xH,EAAQwvH,EAAep1B,EAAkBC,EAAkB49B,EAAcC,GACjJ,IAAI/kb,EAAQ1hD,KACRmge,EAAcnge,KAAK69d,eAAe,GAAIE,GAC1CkC,EAAiBG,kBAAkBD,EAAa,WAC5C,IAAIvC,EAAOqC,EAAiBI,cAAc3+a,EAAMwlY,aAC5Cp9V,EAASpoC,EAAM+gb,sBAAsB7E,EAAMrvH,GAC3Ct7U,EAAW,SAAUo7U,GACrB,GAAI3sT,EAAM41S,UAAW,CACjB,IAAI+uC,EAAMh4B,EAAai4B,SACvBs3F,EAAK9ld,YAAYuuX,GACjBogG,EAAqBp4H,QAEhBA,EAAantV,SAClBmtV,EAAantV,WAIjBwld,EAAgBhlb,EAAMola,MAAMud,mBAAmBnyd,IAAIwvC,EAAMgzV,QAASnmC,GACtE,GAAIm4H,EACAzzc,EAASyzc,OAER,CACD,IAAIpuc,EAAMopB,EAAMola,MAAM96B,qBAAqB0c,yBAAyB5+W,EAAQ6+W,EAAkBC,GAC9F,IAAKtwa,EAAK,CACN,IAAIquc,EAA2BjoF,GAAeM,aAAa3hX,EAAQ6/W,YAAYmgC,oBAO/E,YANyB,yBAArBurB,GAAgD+9B,EAIhD57b,QAAQ/V,MAAM,kCAAoC4za,EAAmB,cAHrE79Z,QAAQ24B,KAAK,mIAOrBprC,EAAIja,KAAK4U,GAEbyuB,EAAM4+a,iBAAiBL,EAAkBrC,GACzC4I,EAAa5I,GACbl8a,EAAM+sa,gBAAgBmP,MAG9BjC,EAAQjpc,UAAU+7b,gBAAkB,SAAUpjd,GACrCrL,KAAKwtF,OAGVxtF,KAAK8md,MAAM8K,SAASvmd,EAApBrL,CAA6BA,KAAKwtF,QAEtCmuY,EAAQjpc,UAAU+vc,sBAAwB,SAAU7E,EAAMrvH,GAkBtD,MAjBa,CACTj3I,WAAW,EACXxnN,KAAM9P,KAAK00Y,QAAQ5kY,KACnB4zI,KAAM1jJ,KAAK00Y,QACXnzY,MAAOvB,KAAK00Y,QAAQ/3X,IACpBq1c,OAAQhyd,KAAKwtF,MAAQxtF,KAAKwtF,MAAQxtF,KAAK47d,YACvChK,SAAU5xd,KAAK8md,MAAM8K,SACrBvnd,SAAUrK,KAAK00Y,QAAQrqY,SACvB4/W,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCxjY,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aAEvC0rT,UAAW6tB,EACXnM,eAAgBmM,EAChBrvH,OAAQA,EACRulH,uBAAwB9zd,KAAKsrB,iBAAiBif,KAAKvqC,QAI3D27d,EAAQjpc,UAAUurc,qBAAuB,SAAUF,GAC/C,IAAI94b,EAAU,GACV08W,EAAa3hZ,KAAK8md,MAAM18E,mBAAmBuX,aAC3CjN,EAAU10Y,KAAK00Y,QAyDnB,OAxDItiS,GAAE8rR,OAAO6/F,IACT94b,EAAQrhC,KAAKm6d,GAEjB94b,EAAQrhC,KAAK,UACbqhC,EAAQrhC,KAAK5D,KAAKo9d,WAAa,eAAiB,mBAC5Cp9d,KAAK29d,WACL14b,EAAQrhC,KAAK,mBAEjBqhC,EAAQrhC,KAAK5D,KAAK+8d,UAAY,cAAgB,cAC1CroF,EAAQmuD,eACR59Z,EAAQrhC,KAAK,iBAEb8wY,EAAQ10W,cACRiF,EAAQrhC,KAAK,mBAEb8wY,EAAQ75P,OACR51G,EAAQrhC,KAAK,gBAEbqhC,EAAQrhC,KAAK,gBAAkB8wY,EAAQ1+S,OACnC0+S,EAAQjwU,QACRx/B,EAAQrhC,KAAK,kBAKjBqhC,EAAQrhC,KAAK,iBAAmB8wY,EAAQ9tW,OAAU8tW,EAAQ9tW,OAAOovD,MAAQ,EAAK,MAE9E0+S,EAAQmsF,MACR57b,EAAQrhC,KAAK,kBAEb5D,KAAK0he,cACLz8b,EAAQrhC,KAAK,sBAEM+9Y,EAEnBjN,EAAQ4rD,iBAER5rD,EAAQ75P,QAAU65P,EAAQjwU,SAE1Bx/B,EAAQrhC,KAAK8wY,EAAQvzO,SAAW,wBAA0B,2BAE1DuzO,EAAQurD,UACRh7Z,EAAQrhC,KAAK,mBAEjBwuG,GAAEu1R,QAAQ1iW,EAASjlC,KAAK4me,iCACxBx0X,GAAEu1R,QAAQ1iW,EAASjlC,KAAK6me,2BAExB5hc,EAAQrhC,KAAK5D,KAAK4rd,YAAc,2BAA6B,4BAC7D5rd,KAAK8me,eAAiB9me,KAAK+me,mBAC3B/me,KAAKgne,cAAgBhne,KAAKine,kBACtBjne,KAAK8me,gBACL7hc,EAAQrhC,KAAK,gBAEb5D,KAAKgne,eACL/hc,EAAQrhC,KAAK,eAEVqhC,GAEX02b,EAAQjpc,UAAUq0c,iBAAmB,WACjC,OAAO/me,KAAK00Y,QAAQrqY,WAAarK,KAAK8md,MAAMmW,gBAAgBiK,mBAEhEvL,EAAQjpc,UAAUu0c,gBAAkB,WAChC,OAAOjne,KAAK00Y,QAAQrqY,WAAarK,KAAK8md,MAAMmW,gBAAgBkK,kBAEhExL,EAAQjpc,UAAUgxc,eAAiB,WAC/B,IAAI0D,EAAWpne,KAAK+me,mBAChBM,EAAUrne,KAAKine,kBACfjne,KAAK8me,iBAAmBM,IACxBpne,KAAK8me,eAAiBM,EACtBpne,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,eAAgB0/d,MAElGpne,KAAKgne,gBAAkBK,IACvBrne,KAAKgne,cAAgBK,EACrBrne,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,cAAe2/d,OAGzG1L,EAAQjpc,UAAUm0c,wBAA0B,WACxC,IAAIvuc,EAAM,GAOV,OANAt4B,KAAKsne,qBAAqB,SAAUz/c,GAChCyQ,EAAI10B,KAAKikB,IACV,SAAUA,MAINyQ,GAEXqjc,EAAQjpc,UAAU40c,qBAAuB,SAAUnV,EAAmBS,GAClE5yd,KAAK8md,MAAMsL,eAAeS,kBAAkB7yd,KAAK8md,MAAM18E,mBAAmBv1B,gBAAiB,CACvFtzW,WAAOkD,EACPonW,YAAQpnW,EACRqL,KAAM9P,KAAK00Y,QAAQ5kY,KACnB4zI,KAAM1jJ,KAAK00Y,QACXrqY,SAAUrK,KAAK00Y,QAAQrqY,SACvB4/W,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnC7qB,UAAWlqX,KAAK8md,MAAM18E,mBAAmB4K,eACzCg9E,OAAQhyd,KAAKwtF,MACbh8E,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,cACxC8tU,EAAmBS,IAE1B+I,EAAQjpc,UAAUogb,YAAc,SAAUlnM,GAKtC,QAJe,IAAXA,IAAqBA,GAAS,GAClC5rQ,KAAK6je,gBAAgB,SAAUv5F,GAC3BA,EAAawoE,YAAYlnM,KAExB5rQ,KAAKqie,WAAV,CAGA,IAAKz2N,EAAQ,CACT,IAAI27N,EAAUvne,KAAKime,eAAel3E,GAAOoC,yBACzCnxZ,KAAK8md,MAAMpnE,aAAajnD,cAAc8uI,GAE1Cvne,KAAKwne,eAAc,KAEvB7L,EAAQjpc,UAAU80c,cAAgB,SAAUjme,GACxCvB,KAAKqie,WAAa9ge,EAClBvB,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,iBAAkBnG,KACpG,IAAI+mB,EACAtoB,KAAKime,eADG1ke,EACYwtZ,GAAOwD,0BACLxD,GAAOyD,2BACjCxyZ,KAAK8md,MAAMpnE,aAAajnD,cAAcnwU,IAE1Cqzc,EAAQjpc,UAAUqic,gBAAkB,SAAU/pC,EAAUC,EAAWw8C,QAC9C,IAAbz8C,IAAuBA,EAAW,WACpB,IAAdC,IAAwBA,EAAY,WACb,IAAvBw8C,IAAiCA,EAAqB,MAEtDzne,KAAKqie,aAGTrie,KAAK6je,gBAAgB,SAAUv5F,GAC3B,IAAIwgD,EAAkBxgD,IAAiBm9F,EACnC38C,EACAxgD,EAAa0qF,sBAAsBhqC,EAAUC,EAAWH,GAGxDxgD,EAAa0qF,sBAAsB,KAAM,KAAMlqC,KAGvD9qb,KAAKwne,eAAc,KAEvB7L,EAAQjpc,UAAUmxc,gBAAkB,SAAU5wc,GAC1Cm/E,GAAEi4Q,cAAcrqX,KAAKw8d,UAAW,SAAU7/c,EAAKmid,GACtCA,GAGL7rc,EAAS6rc,MAGjBnD,EAAQjpc,UAAUuxc,kCAAoC,WAClD,IAAIvib,EAAQ1hD,KACRogY,EAAapgY,KAAK4me,gCACjBxmG,GAAeA,EAAWj8X,QAG/Bi8X,EAAW/sX,QAAQ,SAAUq0d,GACzBhmb,EAAM06a,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAE+tR,YAAYz4X,EAAKgge,QAGnF/L,EAAQjpc,UAAUwxc,yBAA2B,WACzC,IAAIxib,EAAQ1hD,KACZA,KAAKsne,qBAAqB,SAAUz/c,GAChC65B,EAAM06a,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAE+tR,YAAYz4X,EAAKmgB,MAC5E,SAAUA,GACT65B,EAAM06a,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEiuR,eAAe34X,EAAKmgB,QAGtF8zc,EAAQjpc,UAAUk0c,8BAAgC,WAC9C,IAAItuc,EAAM,GACNqyN,EAAU,SAAUg9O,GACE,iBAAXA,EACPrvc,EAAI10B,KAAK+je,GAEJp9d,MAAMyL,QAAQ2xd,IACnBA,EAAOt0d,QAAQ,SAAU4gB,GAAK,OAAOqE,EAAI10B,KAAKqwB,MAIlDuhV,EAAWx1W,KAAK8md,MAAM18E,mBAAmBvxB,cAC7C,GAAIrD,EAAU,CACV,GAAwB,mBAAbA,EAEP,YADAzqU,QAAQ24B,KAAK,8EAGjBinL,EAAQ6qH,GAGZ,IAAIoyH,EAAe5ne,KAAK8md,MAAM18E,mBAAmB2uC,kBAYjD,OAXI6uD,GASAj9O,EADyBi9O,EAPZ,CACTlkV,KAAM1jJ,KAAK00Y,QACX5kY,KAAM9P,KAAK00Y,QAAQ5kY,KACnBzF,SAAUrK,KAAK00Y,QAAQrqY,SACvBmH,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC4lO,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,YAKpCz8W,GAEXqjc,EAAQjpc,UAAU0rc,gCAAkC,WAChD,IAAIyJ,EAAY7ne,KAAK8ne,+BACrB,OAAO11X,GAAEszR,uBAAuBmiG,IAEpClM,EAAQjpc,UAAUsxc,iCAAmC,WACjD,IAAI6D,EAAY7ne,KAAK8ne,+BACrB9ne,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAE+wR,mBAAmBz7X,EAAKmge,MAErFlM,EAAQjpc,UAAUo1c,6BAA+B,WAE7C,IAAI/zH,EAAW/zW,KAAK8md,MAAM18E,mBAAmBtxB,cAC7C,IAAI/E,GAAgC,mBAAbA,EAAvB,CAKA,IACIg0H,EADAC,EAAehoe,KAAK8md,MAAM18E,mBAAmB0uC,kBAYjD,OAVIkvD,IAQAD,EAAqBC,EAPR,CACTl4d,KAAM9P,KAAK00Y,QAAQ5kY,KACnB4zI,KAAM1jJ,KAAK00Y,QACXzqB,IAAKjqX,KAAK8md,MAAM18E,mBAAmB2K,SACnCvjY,QAASxR,KAAK8md,MAAM18E,mBAAmB/lP,aACvC2tU,OAAQhyd,KAAKwtF,SAId4kB,GAAErrE,OAAO,GAAIgtU,EAAUg0H,GAhB1Bh9b,QAAQ24B,KAAK,4GAkBrBi4Z,EAAQjpc,UAAUmtc,YAAc,SAAU53X,GACtC,IAAIvmD,EAAQ1hD,KACRgtd,EAAgB,GAChBqY,EAAe,GAYnB,OAXAp9X,EAAK50F,QAAQ,SAAU4tF,GACnB,IAAI2kY,EAAc,IAAIna,GAAS/pa,EAAM8rC,MAAO9rC,EAAMola,MAAO7lX,EAAKv/C,EAAMgzV,QAAShzV,GAAO,EAAOA,EAAMkqa,aAC7Fia,EAAeD,EAAY9Y,oBAC/BE,EAAcppd,KAAKiie,GACnBR,EAAazhe,KAAKgie,GAClBlkb,EAAM86a,UAAUv7X,EAAIggT,SAAW2kF,IAEZ,CACnBtle,SAAU0sd,EAAch9a,KAAK,IAC7Bwsb,UAAW6I,IAInB1J,EAAQjpc,UAAU6qb,cAAgB,WAC9B,IAAItub,EAAWjvB,KAAK00Y,QAAQ10W,aAC5BhgC,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,kBAAmBunB,MAKzG0sc,EAAQjpc,UAAUotc,4BAA8B,SAAUuF,EAAczH,GACpE,IAAIl8a,EAAQ1hD,KACZqle,EAAahyd,QAAQ,SAAUyrd,GAC3BA,EAASxG,aAAasF,GACtBkB,EAAS1Q,gBAGL1sa,EAAM2gb,YACNvD,EAAS9J,2BAIrB2G,EAAQjpc,UAAU4tc,iBAAmB,SAAUL,EAAkBrC,GAC7D,IAAIl8a,EAAQ1hD,KACZA,KAAKsud,WAAWsP,GAChB59d,KAAK28d,sBAAsB/4d,KAAK,WAC5Bq8d,EAAiBgI,iBAAiBrK,KAEtC59d,KAAK08d,qBAAqB94d,KAAK,WAC3B,GAAIwuG,GAAE8rR,OAAOx8U,EAAMgzV,QAAQ0qD,QAAS,CAKhC,IAAIA,EAAS19Y,EAAMy9a,oBAAoBz9a,EAAMgzV,QAAQ0qD,QACrD19Y,EAAM69Y,UAAUH,QAGhBhtV,GAAE+tR,YAAYy9F,EAAM,qBAG5B59d,KAAKo8d,kBAAkBx4d,KAAKg6d,GAGxB59d,KAAKk8d,2BACLl8d,KAAK8md,MAAM6M,UAAUC,WAAW5zd,KAAKkoe,sBAAsB39b,KAAKvqC,KAAM49d,GAAO59d,KAAK00Y,QAAQrqY,SAAU,iBAGpGrK,KAAKkoe,sBAAsBtK,IAGnCjC,EAAQjpc,UAAUw1c,sBAAwB,SAAUtK,GAChD,IAAIl8a,EAAQ1hD,KAGPA,KAAK8b,SAUV9b,KAAKymb,4BAA4Bm3C,EAAM,aAAc,WAAc,OAAOl8a,EAAMgzV,QAAQx5S,iBACxFl7F,KAAKymb,4BAA4Bm3C,EAAM,aAAc,WAAc,OAAOl8a,EAAMgzV,QAAQv5S,iBAExFn7F,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQsG,kBAAmB,WAIjEpiZ,EAAMola,MAAM18E,mBAAmBssC,+BAChCtkU,GAAE+tR,YAAYy9F,EAAM,kBAG5B59d,KAAKymb,4BAA4Bzmb,KAAK00Y,QAAS8oD,GAAQuG,kBAAmB,WACtE3xV,GAAEiuR,eAAeu9F,EAAM,oBAO/BjC,EAAQjpc,UAAUysc,oBAAsB,SAAU//B,GAC9C,IAAIhkZ,EAAQp7C,KAAK8md,MAAMgB,UAAUqgB,qBAC7BC,EAAWpoe,KAAKq/d,sBAAsBjkb,EAAMrvC,KAAK,GAAQ,IACzDs8d,EAAWroe,KAAKq/d,sBAAsBjkb,EAAMpvC,QAAQ,GAAQ,IAChE,OAAOuS,KAAKG,IAAIH,KAAKukC,IAAIslb,EAAUhpC,GAASipC,IAEhD1M,EAAQjpc,UAAU4zZ,sBAAwB,WACtC,OAAOtmb,KAAK8md,MAAMh9F,oBAEtB6xG,EAAQjpc,UAAUowc,mBAAqB,WAInC,GAAI1wX,GAAE8rR,OAAOl+X,KAAK00Y,QAAQp+B,WAAY,CAClC,IAAIgyH,EAAatoe,KAAK00Y,QAAQp+B,UAAY,KAC1Ct2W,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAOA,EAAI6D,MAAMf,OAAS89d,MAGlF3M,EAAQjpc,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GACpC,uBAAd6U,GAAoD,eAAdA,IACtCA,EAAYw5W,GAAO8C,0BACnB9mX,QAAQ24B,KAAK,qEAAuEqrV,GAAO8C,4BAE/Fr5U,EAAO9lD,UAAUpH,iBAAiB4J,KAAKl1B,KAAMu1C,EAAW7U,IAE5Di7b,EAAQjpc,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GACvC,uBAAd6U,GAAoD,eAAdA,IACtCA,EAAYw5W,GAAO8C,0BACnB9mX,QAAQ24B,KAAK,oFAAsFqrV,GAAO8C,4BAE9Gr5U,EAAO9lD,UAAU/G,oBAAoBuJ,KAAKl1B,KAAMu1C,EAAW7U,IAE/Di7b,EAAQjpc,UAAUxR,QAAU,SAAUiuN,QAClB,IAAZA,IAAsBA,GAAU,GACpCnvO,KAAK8b,QAAS,EAGd9b,KAAKoke,6BACDj1P,GACAnvO,KAAK08d,qBAAqBrpd,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC3Dj3C,KAAK28d,sBAAsB/4d,KAAK5D,KAAKuoe,uBAAuBh+b,KAAKvqC,SAGjEA,KAAKuoe,yBAGyBvoe,KAAKwoe,qCACXn1d,QAAQ,SAAU4jC,GAAQ,OAAOA,OAE7D,IAAI3uB,EAAQtoB,KAAKime,eAAel3E,GAAO8C,2BACvC7xZ,KAAKy4V,cAAcnwU,GACnBtoB,KAAK8md,MAAMpnE,aAAajnD,cAAcnwU,GACtCkwD,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElC27d,EAAQjpc,UAAU61c,uBAAyB,WACvCvoe,KAAK6je,gBAAgB,SAAUv5F,GAAgB,OAAOA,EAAappX,YACnElhB,KAAKoke,8BAGTzI,EAAQjpc,UAAU81c,mCAAqC,WACnD,IAAI5rc,EAAS58B,KAAK28d,sBAElB,OADA38d,KAAK28d,sBAAwB,GACtB//b,GAEX++b,EAAQjpc,UAAU6wc,mBAAqB,WACnC,IAAInG,EAAap9d,KAAK8md,MAAMuF,gBAAgBgR,aAAar9d,KAAK00Y,QAAQrqY,SAAUrK,KAAK00Y,QAAQ4pD,WACzF8+B,IAAep9d,KAAKo9d,aACpBp9d,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,eAAgB01d,KAClGp9d,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAO0qG,GAAEmuR,oBAAoB74X,EAAK,mBAAoB01d,KACtGp9d,KAAKo9d,WAAaA,IAGjBA,GAAcp9d,KAAKqie,YACpBrie,KAAK8yc,aAAY,IAGzB6oB,EAAQjpc,UAAU8wc,oBAAsB,WACpC,IAAIiF,EAAczoe,KAAK8md,MAAMmW,gBAAgBC,iBAGzCl9d,KAAKg9d,iBAAmByL,IACxBzoe,KAAKg9d,eAAiByL,EACtBzoe,KAAK09d,iBAGb/B,EAAQjpc,UAAUgrc,aAAe,WAC7B19d,KAAKu/b,UAAUv/b,KAAK00Y,QAAQ0qD,SAKhCu8B,EAAQjpc,UAAU2sc,sBAAwB,SAAUqJ,EAAO7+d,GAEvD,YADgB,IAAZA,IAAsBA,GAAU,GAChC7J,KAAK00Y,QAAQmuD,cACN6lC,EAIJA,EAFW1oe,KAAK8md,MAAMmW,gBAAgB0L,kBAC5B9+d,EAAU,GAAK,IAGpC8xd,EAAQjpc,UAAU6sa,UAAY,SAAUrvO,GAEpC,IAAIlwN,KAAK4rd,aAKLx5W,GAAE8rR,OAAOhuK,GAAS,CAClB,IAAIkvQ,EAAwBp/d,KAAKq/d,sBAAsBnvQ,GAEnD04Q,EADqB5oe,KAAK8md,MAAMyY,mBAAmBC,qBAAqBJ,GACzC,KAC/Bp/d,KAAK8md,MAAM18E,mBAAmBmsC,yBAC9Bv2a,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAOA,EAAI6D,MAAMQ,IAAM68d,IAGvE5oe,KAAKo8d,kBAAkB/od,QAAQ,SAAU3L,GAAO,OAAOA,EAAI6D,MAAMo2B,UAAY,cAAgBinc,EAAU,QAKnHjN,EAAQjpc,UAAUm2c,+BAAiC,WAC/C,IAAIjsc,EAAS58B,KAAKy8d,sBAElB,OADAz8d,KAAKy8d,sBAAwB,GACtB7/b,GAEX++b,EAAQjpc,UAAUo2c,WAAa,WAC3B,OAAO9oe,KAAK00Y,SAEhBinF,EAAQjpc,UAAUq2c,yBAA2B,SAAUvje,GACnD,IAAIk8C,EAAQ1hD,KACR8+d,EAAW9+d,KAAKw8d,UAAUh3d,EAAOqgZ,YACrC,GAAIi5E,EACA,OAAOA,EAEX,IAAIkK,EAAWxsd,OAAOC,KAAKzc,KAAKw8d,WAC3B/yd,IAAI,SAAUtI,GAAQ,OAAOugD,EAAM86a,UAAUr7d,KAC7CgU,OAAO,SAAUinD,GAAO,OAAOA,IAAqD,IAA9CA,EAAIozZ,qBAAqBvmd,QAAQzD,KAC5E,OAAOwje,EAAS7ke,OAAS6ke,EAAS,QAAKvke,GAE3Ck3d,EAAQjpc,UAAU4mc,kBAAoB,WAIL,MAAzBt5d,KAAK00Y,QAAQrqY,WACbrK,KAAKuje,qBACLvje,KAAKipe,qBAGbtN,EAAQjpc,UAAUu2c,iBAAmB,WACjC,IAAIvnb,EAAQ1hD,KACRkpe,EAAclpe,KAAK00Y,QAAQ2pD,oBAC3B0+B,EAAY/8d,KAAK00Y,QAAQrqY,SAAW,GAAM,EAC1C8+d,EAAmBnpe,KAAK+8d,YAAcA,EACtC4B,EAAiB3+d,KAAK8md,MAAMgB,UAAU8W,eAAe5kE,oBACrDmvE,IACAnpe,KAAK+8d,UAAYA,GAErB/8d,KAAKo8d,kBAAkB/od,QAAQ,SAAUuqd,GACrCA,EAAK/ud,aAAa,YAAaq6d,GAC/BtL,EAAK/ud,aAAa,iBAAkB8vd,EAAiBj9a,EAAMgzV,QAAQrqY,SAAW,GAAG4nB,YAC5Ek3c,IAGL/2X,GAAEmuR,oBAAoBq9F,EAAM,cAAeb,GAC3C3qX,GAAEmuR,oBAAoBq9F,EAAM,cAAeb,OAGnDpB,EAAQjpc,UAAU8uV,eAAiB,WACnB,CACR,CACI/uU,GAAIzyC,KAAKope,oBACTx8Q,GAAI5sN,KAAK67d,mBAEb,CACIppb,GAAIzyC,KAAKqpe,0BACTz8Q,GAAI5sN,KAAK87d,yBACV,CACCrpb,GAAIzyC,KAAKspe,2BACT18Q,GAAI5sN,KAAK+7d,0BACV,CACCtpb,GAAIzyC,KAAKupe,yBACT38Q,GAAI5sN,KAAKg8d,yBAGX3od,QAAQ,SAAUm2d,GACfA,EAAK/2b,IAGV+2b,EAAK58Q,GAAG40J,eAAegoH,EAAK/2b,OAIpCkpb,EAAQjpc,UAAU22c,wBAA0B,WACxC,OAAOrpe,KAAKi/d,eAAiBj/d,KAAKi/d,eAAiBj/d,KAAK8he,mBAG5DnG,EAAQjpc,UAAU42c,yBAA2B,WACzC,OAAOtpe,KAAKk/d,gBAAkBl/d,KAAKk/d,gBAAkBl/d,KAAKgie,oBAG9DrG,EAAQjpc,UAAU02c,kBAAoB,WAClC,OAAOppe,KAAKg/d,SAAWh/d,KAAKg/d,SAAWh/d,KAAK4he,mBAGhDjG,EAAQjpc,UAAU62c,uBAAyB,WACvC,OAAOvpe,KAAKkie,eAEhBvG,EAAQgK,0BAA4B,cACpChK,EAAQwF,yBAA2B,wBACnCxF,EAAQyF,mBAAqB,mBAC7BzF,EAAQ0F,6BAA+B,qBACvC1F,EAAQoF,sBAAwB,sBAChCpF,EAAQqF,gCAAkC,wBAC1CrF,EAAQsF,qBAAuB,qBAC/BtF,EAAQuF,+BAAiC,uBAClCvF,EA/wCkB,CAgxC3Bvpc,IAQEq3c,IACIrgW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFkgW,GAAsD,SAAU7/V,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5D6/V,GAA6B,SAAUnxZ,GAEvC,SAASmxZ,IACL,IAAIjob,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAYhE,OAXA0hD,EAAMkob,+BAAiC,GAGvClob,EAAMmob,gBAAkB,GACxBnob,EAAMoob,oBAAsB,GAC5Bpob,EAAMqob,uBAAyB,GAK/Brob,EAAMsob,mBAAoB,EACnBtob,EA+sCX,OA7tCA+nb,GAAYE,EAAanxZ,GAgBzBmxZ,EAAYj3c,UAAUu3c,iBAAmB,SAAUC,GAC/Clqe,KAAKkqe,SAAWA,GAEpBP,EAAYj3c,UAAUy3c,YAAc,WAChC,OAAOnqe,KAAKkqe,UAEhBP,EAAYj3c,UAAU6gZ,OAAS,SAAU31B,GACrC59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,gBAEvCqke,EAAYj3c,UAAU03c,iBAAmB,SAAUtiB,GAC/C9nd,KAAK8nd,UAAYA,EACjB9nd,KAAKqqe,cAAgBrqe,KAAK8nd,UAAUwiB,mBACpCtqe,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAO+D,yBAA0B9yZ,KAAKuqe,aAAahgc,KAAKvqC,OAC5GA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOmB,8BAA+BlwZ,KAAKwqe,uBAAuBjgc,KAAKvqC,OAC3HA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOc,gCAAiC7vZ,KAAKoje,0BAA0B74b,KAAKvqC,OAChIA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAO4D,kBAAmB3yZ,KAAKyqe,kBAAkBlgc,KAAKvqC,OAC1GA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOiE,0BAA2BhzZ,KAAKyqe,kBAAkBlgc,KAAKvqC,OAClHA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBQ,gBAAiB1za,KAAK0qe,mBAAmBngc,KAAKvqC,OAC3HA,KAAK2qe,6BACL3qe,KAAK4rd,YAAc5rd,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBACxErzY,KAAK2gX,mBAAqB3gX,KAAK4rd,aAAe5rd,KAAKoqY,mBAAmBsvC,uBACtE15a,KAAK4qe,0BAKTjB,EAAYj3c,UAAUi4c,2BAA6B,WAC/C,IAAIjpb,EAAQ1hD,KACZA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOqC,mBAAoB,SAAU9oY,GACrFo5B,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAASvF,cAAcjxc,OAE9EtoB,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOqE,kBAAmB,SAAU9qY,GACpFo5B,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAAS7P,aAAa3mc,OAE7EtoB,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOoE,2BAA4B,WACnFzxW,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAASnQ,oBAOhE3ud,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOkE,sCAAuC,WAC1FvxW,EAAMkqa,aACNlqa,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAASrP,oBAGxCzvd,KAAKoqY,mBAAmBiqC,2BAEhDr0a,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOoB,8BAA+B,WACtFzuW,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAAStF,8BAEhEx5d,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOS,mBAAoB,WAC3E9tW,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAASvE,qCAEhEv6d,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOW,oBAAqB,WAC5EhuW,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAASvE,qCAEhEv6d,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOU,qBAAsB,WAC7E/tW,EAAMmib,gBAAgB,SAAU/E,GAAY,OAAOA,EAASvE,sCAIpEv6d,KAAK6qe,wCAEL7qe,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOO,2BAA4BtvZ,KAAK6qe,sCAAsCtgc,KAAKvqC,OACvIA,KAAK2mb,eAAe3mb,KAAK8qe,0BAA0Bvgc,KAAKvqC,QAG5D2pe,EAAYj3c,UAAUo4c,0BAA4B,WAC9C9qe,KAAK4pe,+BAA+Bv2d,QAAQ,SAAU4jC,GAAQ,OAAOA,MACrEj3C,KAAK4pe,+BAA+Bzle,OAAS,GAMjDwle,EAAYj3c,UAAUm4c,sCAAwC,WAC1D,IAAInpb,EAAQ1hD,KACZA,KAAK8qe,4BACL,IAAI7iY,EAAOjoG,KAAKujb,iBAAiB1hB,oBAC5B55T,GAGLA,EAAK50F,QAAQ,SAAU4tF,GACnB,IAAI8pY,EAAyB,SAAU93c,GACnCyuB,EAAMmib,gBAAgB,SAAU/E,GACxBA,EAAS34D,cAAgBllU,GACzBhuE,EAAS6rc,MAIjBkM,EAAsB,WACtBD,EAAuB,SAAUjM,GAAY,OAAOA,EAASrP,mBAE7Dwb,EAAuB,WACvBF,EAAuB,SAAUjM,GAAY,OAAOA,EAASvP,oBAE7D2b,EAAkC,WAClCH,EAAuB,SAAUjM,GAAY,OAAOA,EAASrE,+BAE7D0Q,EAAgC,WAChCJ,EAAuB,SAAUjM,GAAY,OAAOA,EAASpE,6BAEjEz5X,EAAI31E,iBAAiB+zX,GAAOmF,mBAAoBwmF,GAChD/pY,EAAI31E,iBAAiB+zX,GAAO+G,oBAAqB6kF,GACjDhqY,EAAI31E,iBAAiB+zX,GAAO4F,iCAAkCimF,GAC9DjqY,EAAI31E,iBAAiB+zX,GAAO+F,+BAAgC+lF,GAC5Dzpb,EAAMkob,+BAA+Bhme,KAAK,WACtCq9F,EAAIt1E,oBAAoB0zX,GAAOmF,mBAAoBwmF,GACnD/pY,EAAIt1E,oBAAoB0zX,GAAO+G,oBAAqB6kF,GACpDhqY,EAAIt1E,oBAAoB0zX,GAAO4F,iCAAkCimF,GACjEjqY,EAAIt1E,oBAAoB0zX,GAAO+F,+BAAgC+lF,QAI3ExB,EAAYj3c,UAAUg4c,mBAAqB,WACvC,IAAI9e,EAAc5rd,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBACnE1yB,EAAqBirG,GAAe5rd,KAAKoqY,mBAAmBsvC,uBAG5D0xD,EAAczqH,IAAuB3gX,KAAK2gX,oBAAsB3gX,KAAK4rd,cAAgBA,EACzF5rd,KAAK4rd,YAAcA,EACnB5rd,KAAK2gX,mBAAqBA,EACtByqH,GACApre,KAAK4qe,0BAKbjB,EAAYj3c,UAAU24c,kBAAoB,WACtCrre,KAAKsre,iBAAmB,EACxBtre,KAAKure,iBAAmB,EACxB,IAAIC,EAAqBhvd,OAAOC,KAAKzc,KAAK6pe,iBAC1C7pe,KAAKyre,eAAeD,IAExB7B,EAAYj3c,UAAU63c,aAAe,SAAUmB,GACvCt5X,GAAEgsR,QAAQstG,KACVA,EAAe,CACXhre,KAAMquZ,GAAO0B,oBACbxmC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB/6I,SAAS,EACTw8P,kBAAkB,EAClBzlO,SAAS,EACT0lO,SAAS,IAGjB5re,KAAK0je,eAAegI,IAExB/B,EAAYj3c,UAAUm5c,qBAAuB,SAAUrme,GACnD,IAAIsme,EAAS,GACb,SAAS74c,EAAStW,EAAK+uc,GACnB,IAAI/C,EAAQ+C,EAAQmT,cAAcr5d,GAC9Bmjd,GACAmjB,EAAOloe,KAAK+kd,GAMpB,OAHAv2W,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiB52c,GACtCm/E,GAAEi4Q,cAAcrqX,KAAK+pe,uBAAwB92c,GAC7Cm/E,GAAEi4Q,cAAcrqX,KAAK8pe,oBAAqB72c,GACnC64c,GAEXnC,EAAYj3c,UAAUq5c,wBAA0B,WAC5C/re,KAAKgse,oBAAoBhse,KAAK8pe,oBAAqB9pe,KAAKise,eAAeh0D,sBAAuBj4a,KAAKqqe,cAAc6B,sBAAuBlse,KAAKqqe,cAAc8B,uBAAwBnse,KAAKqqe,cAAc+B,YAAapse,KAAKqqe,cAAcgC,sBACtOrse,KAAKgse,oBAAoBhse,KAAK+pe,uBAAwB/pe,KAAKise,eAAe/zD,yBAA0Bl4a,KAAKqqe,cAAciC,yBAA0Btse,KAAKqqe,cAAckC,0BAA2Bvse,KAAKqqe,cAAcmC,eAAgBxse,KAAKqqe,cAAcoC,0BAEzP9C,EAAYj3c,UAAUs5c,oBAAsB,SAAUU,EAAUl2F,EAAUslF,EAAyBC,EAA0BF,EAAmBG,GAC5I,IAAIt6a,EAAQ1hD,KACZ0se,EAASr5d,QAAQ,SAAU3L,GACvBA,EAAIwZ,YAERwrd,EAASvoe,OAAS,EACdqyY,GACAA,EAASnjY,QAAQ,SAAUqwI,GACvB,IAAIgoU,EAAU,IAAIiQ,GAAQj6a,EAAMswa,OAAQ6J,EAAmBC,EAAyBC,EAA0BC,EAAwBt4U,EAAMhiG,EAAMola,OAAO,GAAO,EAAOpla,EAAMkqa,YAAalqa,EAAMi/T,oBAChM+qG,EAAQpmL,OACRonM,EAAS9oe,KAAK8nd,KAGtB1rd,KAAK2se,gBAAgBD,IAEzB/C,EAAYj3c,UAAU83c,uBAAyB,WAK3Cxqe,KAAK4qe,uBAHQ,CACTgC,aAAa,KAIrBjD,EAAYj3c,UAAUgxc,eAAiB,SAAUgI,GAY7C1re,KAAK4qe,uBAXQ,CACTgC,YAAalB,EAAaC,iBAC1Bx8P,QAASu8P,EAAav8P,QACtB+2B,QAASwlO,EAAaxlO,QACtB0lO,QAASF,EAAaE,QAKtBiB,UAAU,KAKlBlD,EAAYj3c,UAAUo6c,8BAAgC,SAAUt2F,GAC5D,IAAI55W,EAAS,GACb,OAAIw1E,GAAEgsR,QAAQoY,IAGdpkS,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiB,SAAUlge,EAAOoje,GACnD,IAAIr4F,EAAUq4F,EAAYjE,aACtBtyF,EAASvtY,QAAQyrY,IAAY,GAC7B93W,EAAOh5B,KAAK+F,KALTizB,GAUf+sc,EAAYj3c,UAAUwua,WAAa,SAAU1qD,GACzC,GAAKA,GAA+B,GAAnBA,EAASryY,OAA1B,CAKA,IAAI6oe,EAAkBhte,KAAK8se,8BAA8Bt2F,GAEzDx2Y,KAAKyre,eAAeuB,GAEpBhte,KAAK4qe,uBAAuB,CACxBgC,aAAa,MAGrBjD,EAAYj3c,UAAUu6c,oCAAsC,SAAUnjZ,GAClE,IAAIojZ,EAAcpjZ,EAAOqjZ,kBAAoB,KAAOnte,KAAKqsd,gBAAgB+gB,gCACzE,GAAIh7X,GAAEgsR,QAAQ8uG,GACV,OAAO,KAQX,IAAIzid,EAAgBkgB,SAASlgB,cACzB2qZ,EAAUp1a,KAAKoqY,mBAAmBG,WAAW9/W,EAAeghc,GAAS2P,wBAEzE,OAD2BhpX,GAAEgsR,QAAQg3C,GACP,KAAO83D,GAGzCvD,EAAYj3c,UAAUk4c,uBAAyB,SAAU9gZ,QACtC,IAAXA,IAAqBA,EAAS,IAClC9pF,KAAKqte,mBACL,IAAIH,EAAclte,KAAKite,oCAAoCnjZ,GAC3D9pF,KAAKste,4BACLtte,KAAKute,qBAAqBzjZ,GAG1B,IAAI8iZ,GAAe5se,KAAK4rd,aAAe9hY,EAAO8iZ,YAC1Cz9P,EAAUrlJ,EAAOqlJ,SAAWnvO,KAAKoqY,mBAAmBsyC,gBACpD8wD,EAAgBxte,KAAKyte,YAAYb,GACrC5se,KAAK0te,OAAOF,EAAer+P,GACtBrlJ,EAAO+iZ,UACR7se,KAAK+re,0BAET/re,KAAK2te,mBAAmBT,GACxBlte,KAAK4te,wBAETjE,EAAYj3c,UAAU66c,qBAAuB,SAAUzjZ,GACnD,IAAIm8Q,EAAcn8Q,EAAOo8K,SAAWp8K,EAAO8hZ,QACvCiC,EAAsB7te,KAAKoqY,mBAAmBktC,4BAC9CrxE,IAAgB4nI,GAChB7te,KAAK8nd,UAAU7hH,eAGvB0jI,EAAYj3c,UAAU46c,0BAA4B,WAC9C,IAAIzhY,EAAa,CACb7rG,KAAKqqe,cAAcvnc,KACnB9iC,KAAKqqe,cAAc/yQ,UACnBt3N,KAAKqqe,cAAcyD,WACnB9te,KAAKqqe,cAAc0D,aAEvB,GAAI/te,KAAK4rd,YACL//W,EAAWx4F,QAAQ,SAAUgF,GAAa,OAAOA,EAAU8qU,UAAU,YADzE,CAIA,IAAImV,EAAkBt4V,KAAKi9d,gBAAgB+Q,uBAMnB,IAApB11I,IACAA,EAAkB,GAEtBt4V,KAAKu/d,mBAAmB0O,eAAe31I,GACvC,IAAI41I,EAAalue,KAAKu/d,mBAAmB4O,uBACzCtiY,EAAWx4F,QAAQ,SAAUgF,GAAa,OAAOA,EAAU8qU,UAAU+qJ,OAEzEvE,EAAYj3c,UAAU26c,iBAAmB,WACrC,GAAIrte,KAAKgqe,kBACL,MAAM,IAAI31c,MAAM,0XAMpBr0B,KAAKgqe,mBAAoB,GAE7BL,EAAYj3c,UAAUk7c,qBAAuB,WACzC5te,KAAKgqe,mBAAoB,GAM7BL,EAAYj3c,UAAUi7c,mBAAqB,SAAUphB,GAC7CA,GACAvsd,KAAKqsd,gBAAgBmK,eAAejK,EAAalid,SAAUkid,EAAa/md,OAAQ+md,EAAajuB,WAAW,IAGhHqrC,EAAYj3c,UAAUogb,YAAc,SAAUlnM,QAC3B,IAAXA,IAAqBA,GAAS,GAClC5rQ,KAAKoue,eAAe,SAAUzxd,EAAK+uc,GAC/BA,EAAQ5Y,YAAYlnM,MAG5B+9N,EAAYj3c,UAAUmxc,gBAAkB,SAAU5wc,GAC9CjzB,KAAKoue,eAAe,SAAUzxd,EAAK+uc,GAAW,OAAOA,EAAQmY,gBAAgB5wc,MAEjF02c,EAAYj3c,UAAU07c,eAAiB,SAAUn7c,GAC7Cm/E,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiB52c,GACtCm/E,GAAEi4Q,cAAcrqX,KAAK8pe,oBAAqB72c,GAC1Cm/E,GAAEi4Q,cAAcrqX,KAAK+pe,uBAAwB92c,IAEjD02c,EAAYj3c,UAAUohc,uBAAyB,SAAUh+a,EAAWzrC,EAAU4oB,GAC1E,IAAIy4b,EAAU1rd,KAAK6pe,gBAAgBx/d,GAC/Bqhd,GACAA,EAAQpgc,iBAAiBwqB,EAAW7iB,IAG5C02c,EAAYj3c,UAAUg2V,WAAa,SAAU5+R,QAC1B,IAAXA,IAAqBA,EAAS,IAClC9pF,KAAKque,wBAAwBvkZ,EAAO0sT,SAAU1sT,EAAO3kF,QAAS,SAAU25d,GAAY,OAAOA,EAAS9N,eAExG2Y,EAAYj3c,UAAUqtc,aAAe,SAAUj2Y,QAC5B,IAAXA,IAAqBA,EAAS,IAClC,IAAIwkZ,EAAoB,CACpB5d,aAAc5mY,EAAO4D,MACrBw4K,SAAS,GAEblmQ,KAAKque,wBAAwBvkZ,EAAO0sT,SAAU1sT,EAAO3kF,QAAS,SAAU25d,GAAY,OAAOA,EAAS/P,YAAYuf,MAEpH3E,EAAYj3c,UAAU67c,yBAA2B,SAAUzkZ,GACvD,IAAIxxD,EAAM,GAOV,OANAt4B,KAAKque,wBAAwBvkZ,EAAO0sT,SAAU1sT,EAAO3kF,QAAS,SAAU25d,GACpE,IAAIzwH,EAAeywH,EAASvO,kBACxBliH,GACA/1U,EAAI10B,KAAKyqW,KAGV/1U,GAEXqxc,EAAYj3c,UAAU87c,uBAAyB,SAAU1kZ,GACrD,IAAIxxD,EAAM,GAOV,OANAt4B,KAAKque,wBAAwBvkZ,EAAO0sT,SAAU1sT,EAAO3kF,QAAS,SAAU25d,GACpE,IAAIxwH,EAAawwH,EAAStO,gBACtBliH,GACAh2U,EAAI10B,KAAK0qW,KAGVh2U,GAEXqxc,EAAYj3c,UAAU+7c,gBAAkB,WACpC,IAAIn2c,EAAM,GAOV,OANAt4B,KAAK6je,gBAAgB,SAAU/E,GAC3B,GAAIA,EAASpI,YAAa,CACtB,IAAInK,EAAeuS,EAAShU,kBAC5Bxyb,EAAI10B,KAAK2od,MAGVj0b,GAIXqxc,EAAYj3c,UAAU27c,wBAA0B,SAAU73F,EAAUrxY,EAAS8tB,GACzE,IACIy7c,EAmBAC,EApBAjtb,EAAQ1hD,KAERoyG,GAAE8rR,OAAOsY,KACTk4F,EAAY,CACR3ie,IAAK,GACLC,OAAQ,GACR4ie,OAAQ,IAEZp4F,EAASnjY,QAAQ,SAAUqhY,GACnBA,EAAQ4pD,YAAchuD,GAAU4C,WAChCw7F,EAAU3ie,IAAI2oY,EAAQ1uX,KAAM,EAEvB0uX,EAAQ4pD,YAAchuD,GAAU6C,cACrCu7F,EAAU1ie,OAAO0oY,EAAQ1uX,KAAM,EAG/B0od,EAAUE,OAAOl6F,EAAQ1uX,KAAM,KAKvCosF,GAAE8rR,OAAO/4X,KACTwpe,EAAY,GACZxpe,EAAQkO,QAAQ,SAAUkqZ,GACtB,IAAI/3Z,EAASk8C,EAAM6hY,iBAAiB5lB,cAAcJ,GAC9CnrT,GAAE8rR,OAAO14X,KACTmpe,EAAUnpe,EAAOy7Y,UAAW,MAIxC,IAAI4tF,EAAa,SAAUnjB,GACvB,IAAIh3E,EAAUg3E,EAAQod,aAClB9id,EAAK0uX,EAAQ1uX,GACb2vP,EAAW++H,EAAQ4pD,UAEvB,GAAIlsV,GAAE8rR,OAAOwwG,GACT,GAAI/4N,IAAa26H,GAAU6C,eACvB,IAAKu7F,EAAU1ie,OAAOga,GAClB,YAGH,GAAI2vP,IAAa26H,GAAU4C,YAC5B,IAAKw7F,EAAU3ie,IAAIia,GACf,YAIJ,IAAK0od,EAAUE,OAAO5od,GAClB,OAIZ0lc,EAAQmY,gBAAgB,SAAU/E,GAC9B,IAAI/wH,EAAQ+wH,EAAS34D,YAAYllB,QACL0tF,IAAcA,EAAU5gI,IAIpD96U,EAAS6rc,MAGjB1sX,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiB,SAAUlge,EAAO+hd,GACnDmjB,EAAWnjB,KAEX1rd,KAAK8pe,qBACL9pe,KAAK8pe,oBAAoBz2d,QAAQw7d,GAEjC7ue,KAAK+pe,wBACL/pe,KAAK+pe,uBAAuB12d,QAAQw7d,IAG5ClF,EAAYj3c,UAAUxR,QAAU,WAC5B,IAAIsqd,EAAqBhvd,OAAOC,KAAKzc,KAAK6pe,iBAC1C7pe,KAAKyre,eAAeD,GACpBhzZ,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElC2pe,EAAYj3c,UAAU+6c,YAAc,SAAUb,GAC1C,IAEII,EAFAtrb,EAAQ1hD,KACRwte,EAAgB,GAmBpB,OAjBIZ,GACAI,EAAkB,GAClB56X,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiB,SAAUlge,EAAO+hd,GACnD,IAAIh3E,EAAUg3E,EAAQod,aAClB12X,GAAE8rR,OAAOwW,EAAQ1uX,KACjBwnd,EAAc94F,EAAQ1uX,IAAM0lc,SACrBhqa,EAAMmob,gBAAgBlge,IAG7Bqje,EAAgBppe,KAAK+F,MAK7Bqje,EAAkBxwd,OAAOC,KAAKzc,KAAK6pe,iBAEvC7pe,KAAKyre,eAAeuB,GACbQ,GAGX7D,EAAYj3c,UAAU+4c,eAAiB,SAAUqD,GAC7C,IAAIptb,EAAQ1hD,KAGZ8ue,EAAaz7d,QAAQ,SAAU07d,GACTrtb,EAAMmob,gBAAgBkF,GAC5B7td,iBACLwgC,EAAMmob,gBAAgBkF,MAOrCpF,EAAYj3c,UAAU+3c,kBAAoB,WACtCzqe,KAAKqte,mBACLrte,KAAK0te,OAAO,MAAM,GAAO,GACzB1te,KAAK4te,wBAETjE,EAAYj3c,UAAUs8c,wBAA0B,SAAUC,GAEtD,IAAIC,EAAmB,GACvBD,EAAc57d,QAAQ,SAAU1J,GAAS,OAAQule,EAAiBvle,IAAS,IAC3E,IACIwle,EADkB3yd,OAAOC,KAAKzc,KAAK6pe,iBACA10d,OAAO,SAAUxL,GAAS,OAAQule,EAAiBvle,KAC1F3J,KAAKyre,eAAe0D,IAExBxF,EAAYj3c,UAAU08c,uBAAyB,SAAU5B,GACrD,IAAI9rb,EAAQ1hD,KAERive,EAAgB78X,GAAE81R,qBAAqBloY,KAAKsre,iBAAkBtre,KAAKure,iBACnE8D,EAAiB,SAAUvK,EAAUpZ,GACrC,IAAI/hd,EAAQgF,OAAOm2d,IACfn7d,EAAQ+3C,EAAM4pb,kBAAoB3he,EAAQ+3C,EAAM6pb,kBAC5C7pb,EAAM4tb,qBAAqB5jB,IAC3BujB,EAAcrre,KAAK+F,IAS/B,OAJAyoG,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiBwF,GAEtCj9X,GAAEi4Q,cAAcmjH,EAAe6B,GAC/BJ,EAAcpzd,KAAK,SAAUE,EAAGC,GAAK,OAAOD,EAAIC,IACzCizd,GAEXtF,EAAYj3c,UAAUg7c,OAAS,SAAUF,EAAer+P,EAASogQ,GAC7D,IAAI7tb,EAAQ1hD,UACI,IAAZmvO,IAAsBA,GAAU,QAChB,IAAhBogQ,IAA0BA,GAAc,GAC5Cvve,KAAKu/d,mBAAmBiQ,eACxBxve,KAAKyve,kCAOL,IAAIR,EAAgBjve,KAAKove,uBAAuB5B,GAChDxte,KAAKgve,wBAAwBC,GAGzBjve,KAAK4rd,cACLz8O,GAAU,GAGd,IAAIugQ,EAAsB,GACtBhD,EAAW,GACfuC,EAAc57d,QAAQ,SAAUhJ,GAC5B,IAAIqhd,EAAUhqa,EAAMiub,sBAAsBtle,EAAUmje,EAAer+P,EAASogQ,GACxEn9X,GAAE8rR,OAAOwtF,KACTghB,EAAS9oe,KAAK8nd,GACdt5W,GAAEu1R,QAAQ+nG,EAAqBhkB,EAAQmd,qCAG/C7oe,KAAK2se,gBAAgBD,GACrBt6X,GAAEo5R,kBAAkBkkG,IACIH,GAAgBvve,KAAKoqY,mBAAmBkuC,4BAA+Bt4a,KAAK4rd,YAKhG5rd,KAAK4ve,gBAAgBpC,EAAer+P,GAHpCnvO,KAAK8md,MAAM6M,UAAUkc,eAAe7ve,KAAK4ve,gBAAgBrlc,KAAKvqC,KAAMwte,EAAer+P,IAKvFnvO,KAAK8ve,sBACL9ve,KAAK8nd,UAAUioB,kBAEnBpG,EAAYj3c,UAAUi6c,gBAAkB,SAAUD,GAC9Ct6X,GAAEi4Q,cAAcrqX,KAAKqqe,cAAe,SAAU1td,EAAKsjd,GAC3CA,GACAA,EAAiB+P,sBAGzBtD,EAASr5d,QAAQ,SAAUq4c,GAAW,OAAOA,EAAQx7J,gBAEzDy5K,EAAYj3c,UAAU0wc,0BAA4B,WAC9C,IAAI6M,EAAcjwe,KAAKujb,iBAAiB3gB,gBACpCstE,EAAelwe,KAAKujb,iBAAiB1gB,kBACjB7ia,KAAKiwe,cAAgBA,GAAeC,IAAiBlwe,KAAKkwe,gBAE9Elwe,KAAKiwe,YAAcA,EACnBjwe,KAAKkwe,aAAeA,EAChBlwe,KAAK2gX,oBACL3gX,KAAKmwe,gCAMjBxG,EAAYj3c,UAAUy9c,4BAA8B,WAGhD,IAAIrB,EAAe,GACnB18X,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiB,SAAU7jd,EAAI0lc,GAChD,GAAIA,EAAQ3gP,cAAe,CACvB,IAAI1gO,EAAWqhd,EAAQod,aAAaz+d,SACpCyke,EAAalre,KAAKyG,EAAS4nB,eAGnCjyB,KAAK+re,0BACL/re,KAAKyre,eAAeqD,GACpB9ue,KAAKyqe,qBAETd,EAAYj3c,UAAU09c,qBAAuB,WACzC,IAAItB,EAAe,GACnB18X,GAAEi4Q,cAAcrqX,KAAK6pe,gBAAiB,SAAU7jd,EAAI0lc,GAChD,GAAIA,EAAQ3gP,gBACqB2gP,EAAQ4W,mBACR,CACzB,IAAIj4d,EAAWqhd,EAAQod,aAAaz+d,SACpCyke,EAAalre,KAAKyG,EAAS4nB,eAIvCjyB,KAAKyre,eAAeqD,GACpB9ue,KAAKyqe,qBAETd,EAAYj3c,UAAUi9c,sBAAwB,SAAUtle,EAAUmje,EAAer+P,EAASogQ,GACtF,IAAI76F,EACAg3E,EAAU1rd,KAAK6pe,gBAAgBx/d,GAUnC,GARKqhd,IACDh3E,EAAU10Y,KAAKi9d,gBAAgB7d,OAAO/0c,GAClC+nG,GAAE8rR,OAAOwW,IAAYtiS,GAAE8rR,OAAOsvG,IAAkBA,EAAc94F,EAAQ1uX,KAAO0uX,EAAQipD,kBACrF+tB,EAAU8hB,EAAc94F,EAAQ1uX,IAChCwnd,EAAc94F,EAAQ1uX,IAAM,OAGV0lc,EAiBtBA,EAAQlqG,qBAhBY,CAKpB,GAHKkzB,IACDA,EAAU10Y,KAAKi9d,gBAAgB7d,OAAO/0c,KAEtC+nG,GAAE8rR,OAAOwW,GAMT,OALAg3E,EAAU1rd,KAAKqwe,cAAc37F,EAASvlK,EAASogQ,GAkBvD,OANI76F,IAGAA,EAAQipD,iBAAkB,GAE9B39b,KAAK6pe,gBAAgBx/d,GAAYqhd,EAC1BA,GAEXie,EAAYj3c,UAAUk9c,gBAAkB,SAAUU,EAAanhQ,GAC3D,IAAIohQ,EAAe,GACnBn+X,GAAEi4Q,cAAcimH,EAAa,SAAU7xB,EAAQiN,GAEtCA,IAGLA,EAAQxqc,QAAQiuN,GAChB/8H,GAAEu1R,QAAQ4oG,EAAc7kB,EAAQ8c,yCAEpCp2X,GAAEm5R,gBAAgBglG,IAEtB5G,EAAYj3c,UAAUo9c,oBAAsB,WACxC,IAAIpub,EAAQ1hD,KAERA,KAAKoqY,mBAAmB6wC,wBAExB9vZ,OAAOyZ,WAAW,WACd8c,EAAMswa,OAAO7lL,UACd,IAGXw9L,EAAYj3c,UAAU+8c,gCAAkC,WACpD,IACIrI,EACAC,EAFA3lb,EAAQ1hD,KAGZ,GAAKA,KAAKi9d,gBAAgBuT,iBAIrB,GAAIxwe,KAAK4rd,YACVwb,EAAWpne,KAAKi9d,gBAAgBiK,kBAChCG,EAAUrne,KAAKi9d,gBAAgBkK,qBAE9B,CACD,IAAIsJ,EAAmBzwe,KAAKi9d,gBAAgB0L,iBACxCpJ,EAAqBv/d,KAAKu/d,mBAAmBmR,YAC7CC,EAAa3we,KAAK8nd,UAAUqgB,qBAC5ByI,EAAeD,EAAW5ke,IAC1B8ke,EAAkBF,EAAW3ke,OAC7B8ke,EAAe9we,KAAKoqY,mBAAmB+2C,uBACvC4vD,EAAaH,EAAeH,EAAmBlR,EAAqBuR,EACpEE,EAAYH,EAAkBJ,EAAmBlR,EAAqBuR,EAC1E9we,KAAKixe,0CAA0CF,EAAYC,GAC3D,IAAIE,EAAgBlxe,KAAKi9d,gBAAgBkU,mBAAmBJ,GACxDK,EAAepxe,KAAKi9d,gBAAgBkU,mBAAmBH,GACvDK,EAAerxe,KAAKi9d,gBAAgBiK,kBACpCoK,EAActxe,KAAKi9d,gBAAgBkK,iBAEnC+J,EAAgBG,IAChBH,EAAgBG,GAEhBD,EAAeE,IACfF,EAAeE,GAEnBlK,EAAW8J,EACX7J,EAAU+J,OA7BVhK,EAAW,EACXC,GAAW,EAkCf,IAAIkK,EAAkBvxe,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU8C,kBACvEo+F,EAA8Bxxe,KAAKoqY,mBAAmBwtC,sCACtD65D,EAAmBlzd,KAAKukC,IAAI9iD,KAAKoqY,mBAAmB82C,eAAgB,KAqBxE,GApBIqwD,IAAoBC,GAChBnK,EAAUD,EAAWqK,IACrBpK,EAAUD,EAAWqK,IAGVrK,IAAapne,KAAKsre,kBACnBjE,IAAYrne,KAAKure,mBAE/Bvre,KAAKsre,iBAAmBlE,EACxBpne,KAAKure,gBAAkBlE,EAQvBrne,KAAK0/Y,aAAajnD,cAPJ,CACV/3V,KAAMquZ,GAAOmD,uBACb5pZ,SAAU8+d,EACVsK,QAASrK,EACTp9G,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAKpBlqX,KAAKi9d,gBAAgBuT,iBAAkB,CACvC,IAAImB,EAAU,CACVjxe,KAAMquZ,GAAOoD,0BACb7pZ,SAAU8+d,EACVsK,QAASrK,EACTp9G,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,WAKpB/+V,OAAOyZ,WAAW,WAAc,OAAO8c,EAAMg+V,aAAarB,kBAAkBszF,IAAa,MAGjGhI,EAAYj3c,UAAUu+c,0CAA4C,SAAUW,EAAUC,GAG1D7xe,KAAKi9d,gBAAgB6U,sBAAsBF,EAAUC,GAAc,GAAI,KAG3F7xe,KAAKste,4BAELtte,KAAKu/d,mBAAmBiQ,iBAGhC7F,EAAYj3c,UAAUq/c,2BAA6B,WAC/C,OAAO/xe,KAAKsre,kBAEhB3B,EAAYj3c,UAAUs/c,0BAA4B,WAC9C,OAAOhye,KAAKure,iBAahB5B,EAAYj3c,UAAU48c,qBAAuB,SAAU5jB,GACnD,IAEIh3E,EAAUg3E,EAAQod,aAClBmJ,EAAcjye,KAAKqsd,gBAAgB6lB,iBAAiBx9F,GACpDy9F,EAAezmB,EAAQgL,YAI3B,SAFyBub,GAAeE,GADtBz9F,EAAQc,WASLx1Y,KAAKi9d,gBAAgBmV,aAAa19F,IAG3Di1F,EAAYj3c,UAAU29c,cAAgB,SAAU37F,EAASvlK,EAASogQ,GAC9D,IAAIxtH,EAAyB/hX,KAAKoqY,mBAAmBkuC,2BAOjDozC,EAAU,IAAIiQ,GAAQ37d,KAAKgyd,OAAQhyd,KAAKqqe,cAAcvnc,KAAM9iC,KAAKqqe,cAAcyD,WAAY9te,KAAKqqe,cAAc0D,YAAa/te,KAAKqqe,cAAc/yQ,UAAWo9K,EAAS10Y,KAAK8md,MAAO33O,EADjJogQ,IAAgBxtH,IAA2B/hX,KAAK4rd,YACsI5rd,KAAK4rd,YAAa5rd,KAAK2gX,oBAE9O,OADA+qG,EAAQpmL,OACDomL,GAEXie,EAAYj3c,UAAU2/c,iBAAmB,WACrC,IAAI77d,EAAexW,KAAK6pe,gBACxB,OAAOrtd,OAAOC,KAAKjG,GAAc/M,IAAI,SAAUkT,GAAO,OAAOnG,EAAamG,GAAKmsd,gBAInFa,EAAYj3c,UAAUsnV,mBAAqB,SAAU1xV,EAAO3L,EAAK21d,EAAaC,GAI1E,IAFA,IAAIC,EAAWF,EACXj1K,GAAW,GACPA,GAeJ,GAXIr9T,KAAKoqY,mBAAmBme,cACpB5rY,IAAQ2zX,GAAUqB,WAClB6gG,EAAWxye,KAAKyye,qBAAqBD,IAGpC71d,IAAQ2zX,GAAUuB,YACvB2gG,EAAWxye,KAAKyye,qBAAqBD,IAEzCA,EAAWxye,KAAK0ye,sBAAsBC,mBAAmBh2d,EAAK61d,GAE1CpgY,GAAEgsR,QAAQo0G,GAE1Bn1K,GAAW,MADf,CAIA,IAAIq3E,EAAU10Y,KAAKk5d,iBAAiB4P,WAAW0J,GAE/C,IAAI99F,EAAQc,SAAUd,EAAQl7B,kBAI9B,GAAKk7B,EAAQ75P,MAAb,CAMA,IAAI4kO,EAAYz/W,KAAKujb,iBAAiB5tB,cACb31Z,KAAKoqY,mBAAmBykC,oBAAoBpvD,KAEjEpiD,GAAW,QARXA,GAAW,EAanB,GAAIk1K,EAAmB,CACnB,IAAIhwF,EAAWviZ,KAAKoqY,mBAAmB60C,4BACvC,GAAI7sU,GAAE8rR,OAAOqkB,GAAW,CACpB,IAMIqwF,EAAWrwF,EANF,CACT5lY,IAAKA,EACLk2d,qBAAsBP,EACtBQ,iBAAkBN,GAAsB,KACxClqd,MAAOA,IAGP8pF,GAAE8rR,OAAO00G,IACLA,EAASj9N,WACTvjK,GAAEg5R,OAAO,WAAcrgW,QAAQ24B,KAAK,yJAA4J,2BAChMkva,EAASt0C,UAAYs0C,EAASj9N,UAElC68N,EAAW,CACPl0C,UAAWs0C,EAASt0C,UACpBj0b,SAAUuoe,EAASvoe,SACnB7E,OAAQote,EAASpte,SAIrBgte,EAAW,MAKvB,GAAKA,EAAL,CAMAxye,KAAKs3d,kBAAkBkb,GACvB,IAAI1T,EAAW9+d,KAAK+ye,oBAAoBP,GAEnC1T,IAGL0T,EAAW1T,EAAShU,kBAMpB9qd,KAAKs3d,kBAAkBkb,GACvBxye,KAAKqsd,gBAAgBmK,eAAegc,EAASnoe,SAAUmoe,EAAShte,OAAQgte,EAASl0C,WAAW,GACxFt+b,KAAKosd,iBACLpsd,KAAKosd,gBAAgB2L,eAAeya,MAG5C7I,EAAYj3c,UAAU+/c,qBAAuB,SAAU1we,GACnD,IAAI+8d,EAAW9+d,KAAK+ye,oBAAoBhxe,GACxC,IAAK+8d,EACD,OAAO/8d,EAEX,IAAIixe,EAAkBlU,EAAStP,qBAC/B,OAA+B,IAA3BwjB,EAAgB7ue,OACTpC,EAEJ,CACHsI,SAAUtI,EAAKsI,SACf7E,OAAQ4sG,GAAEj7F,KAAK67d,GACf10C,UAAWv8b,EAAKu8b,YAGxBqrC,EAAYj3c,UAAU4kc,kBAAoB,SAAU2b,GAE5C7gY,GAAEgsR,QAAQ60G,EAAS30C,YACnBt+b,KAAK8nd,UAAUorB,mBAAmBD,EAAS5oe,UAE1C4oe,EAASzte,OAAO+/Y,YACjBvlZ,KAAK8nd,UAAUqrB,oBAAoBF,EAASzte,QAIhDxF,KAAK8nd,UAAUsrB,kDAEfpze,KAAK24Z,sBAAsBC,kBAE/B+wE,EAAYj3c,UAAU2gd,iBAAmB,SAAUJ,EAAUjoD,EAAUC,GACnE,IAAIlpb,EAAO/B,KAAK+ye,oBAAoBE,GAChClxe,GACAA,EAAK+yd,mBAAmB9pC,EAAUC,IAG1C0+C,EAAYj3c,UAAUqgd,oBAAsB,SAAUxmB,GAClD,IAAI+mB,EACJ,OAAQ/mB,EAAajuB,WACjB,KAAKhuD,GAAU4C,WACXogG,EAAetze,KAAK8pe,oBAAoBvd,EAAalid,UACrD,MACJ,KAAKimY,GAAU6C,cACXmgG,EAAetze,KAAK+pe,uBAAuBxd,EAAalid,UACxD,MACJ,QACIipe,EAAetze,KAAK6pe,gBAAgBtd,EAAalid,UAGzD,OAAKipe,EAGeA,EAAavK,yBAAyBxc,EAAa/md,QAF5D,MAKfmke,EAAYj3c,UAAUo2c,WAAa,SAAUyK,GACzC,OAAQA,EAAQj1C,WACZ,KAAKhuD,GAAU4C,WACX,OAAOlzY,KAAKise,eAAeh0D,sBAAsBs7D,EAAQlpe,UAC7D,KAAKimY,GAAU6C,cACX,OAAOnzY,KAAKise,eAAe/zD,yBAAyBq7D,EAAQlpe,UAChE,QACI,OAAOrK,KAAKwub,SAAS4wB,OAAOm0B,EAAQlpe,YAGhDs/d,EAAYj3c,UAAUokc,aAAe,SAAU0c,EAAsB/+F,GAEnDz0Y,KAAKyze,gBAAgBD,EADnB/+F,EAAchtR,WAG1BgtR,EAAcvnX,kBAGtBy8c,EAAYj3c,UAAUunV,cAAgB,SAAUy5H,GAC5C,IAAIxG,EAAclte,KAAKqsd,gBAAgBsnB,iBAEvC,GAAIvhY,GAAEgsR,QAAQ8uG,GACV,OAAO,EAEX,IAAI5iG,EAAetqY,KAAK+ye,oBAAoB7F,GAE5C,OAAI96X,GAAEgsR,QAAQkM,IAGDtqY,KAAKyze,gBAAgBnpG,EAAcopG,IAGpD/J,EAAYj3c,UAAU+gd,gBAAkB,SAAUD,EAAsBE,GAcpE,OAbcF,EAAqB9c,YAG3B12d,KAAKoqY,mBAAmB2rC,gBAClB/1a,KAAK4ze,qBAAqBJ,EAAsBE,GAGhD1ze,KAAK6ze,sBAAsBL,EAAsBE,GAIrD1ze,KAAK8ze,yBAAyBN,EAAsBE,IAIlE/J,EAAYj3c,UAAUmhd,sBAAwB,SAAUL,EAAsBE,GAC1E,IAAIT,EAAWO,EAAqB1oB,kBAKpC0oB,EAAqB1gC,cAErB,IAAIihC,EAAmB/ze,KAAKg0e,sBAAsBf,EAAUS,GAAW,GACnEO,EAAY7hY,GAAE8rR,OAAO61G,GAOzB,OAJIE,IACAF,EAAiB/e,sBAAsB,KAAM,MAAM,GACnD+e,EAAiB3e,WAAU,IAExB6e,GAEXtK,EAAYj3c,UAAUkhd,qBAAuB,SAAUJ,EAAsBE,GACzE,IAAIT,EAAWO,EAAqB1oB,kBAEhCipB,EAAmB/ze,KAAKg0e,sBAAsBf,EAAUS,GAAW,GACnEO,EAAY7hY,GAAE8rR,OAAO61G,GAMzB,OAHIE,GACAj0e,KAAKk0e,wBAAwBV,EAAsBO,GAEhDE,GAEXtK,EAAYj3c,UAAUohd,yBAA2B,SAAUN,EAAsBE,GAC7E,IAAIT,EAAWO,EAAqB1oB,kBAEhCipB,EAAmB/ze,KAAKg0e,sBAAsBf,EAAUS,GAAW,GACnEO,EAAY7hY,GAAE8rR,OAAO61G,GAMzB,OAHIE,GACAF,EAAiB3e,WAAU,GAExB6e,GAEXtK,EAAYj3c,UAAUwhd,wBAA0B,SAAUV,EAAsBO,GAC5E,IAAII,EAAYX,EAAqB1oB,kBACjCspB,EAAYL,EAAiBjpB,kBAEjC,GADgBqpB,EAAU9pe,WAAa+pe,EAAU/pe,UAAY8pe,EAAU71C,YAAc81C,EAAU91C,UAG3Fk1C,EAAqBvc,sBACrB8c,EAAiBtd,yBAEhB,CACD,IAAI4d,EAAOb,EAAqBljB,iBAC5BgkB,EAAOP,EAAiBzjB,iBAC5BkjB,EAAqBvc,sBACrBod,EAAKvhC,cACLwhC,EAAKvf,kBACLgf,EAAiBtd,qBAErBsd,EAAiB3e,aAIrBuU,EAAYj3c,UAAUshd,sBAAwB,SAAUf,EAAUS,EAAWa,GAEzE,IADA,IAAI/B,EAAWS,IACF,CACJS,IACDlB,EAAWxye,KAAKyye,qBAAqBD,IAEzCA,EAAWxye,KAAK0ye,sBAAsB8B,kBAAkBhC,EAAUkB,GAElE,IAAInxF,EAAWviZ,KAAKoqY,mBAAmB80C,uBACvC,GAAI9sU,GAAE8rR,OAAOqkB,GAAW,CACpB,IAMIqwF,EAAWrwF,EANF,CACTmxF,UAAWA,EACX/+F,QAAS4/F,EACT1B,qBAAsBI,EACtBH,iBAAkBN,GAAsB,OAGxCpgY,GAAE8rR,OAAO00G,IACLA,EAASj9N,WACTvjK,GAAEg5R,OAAO,WAAcrgW,QAAQ24B,KAAK,yJAA4J,2BAChMkva,EAASt0C,UAAYs0C,EAASj9N,UAElC68N,EAAW,CACPnoe,SAAUuoe,EAASvoe,SACnB7E,OAAQote,EAASpte,OACjB84b,UAAWs0C,EAASt0C,YAIxBk0C,EAAW,KAKnB,IAAKA,EACD,OAAO,KAMX,GAAI+B,EAAc,CACd,IAAI7/F,EAAU10Y,KAAKy0e,qBAAqBjC,GAExC,IADqBA,EAAShte,OAAOg9Y,eAAe9N,GAEhD,SAIgBtiS,GAAEgsR,QAAQo0G,EAASl0C,YAEvCt+b,KAAK8nd,UAAUorB,mBAAmBV,EAASnoe,UAG1Cmoe,EAAShte,OAAO+/Y,YACjBvlZ,KAAK8nd,UAAUqrB,oBAAoBX,EAAShte,QAIhDxF,KAAK8nd,UAAUsrB,kDAGfpze,KAAK24Z,sBAAsBC,iBAG3B,IAAI87E,EAAe10e,KAAK+ye,oBAAoBP,GAG5C,IAAIpgY,GAAEgsR,QAAQs2G,KAGVA,EAAapyF,sBASjB,OAJItiZ,KAAKosd,iBACLpsd,KAAKosd,gBAAgB2L,eAAeya,GAGjCkC,IAGf/K,EAAYj3c,UAAU+hd,qBAAuB,SAAU1ye,GACnD,OAAIA,EAAKu8b,YAAchuD,GAAU4C,WACtBlzY,KAAKise,eAAe0I,gBAAgB5ye,EAAKsI,UAEhDtI,EAAKu8b,YAAchuD,GAAU6C,cACtBnzY,KAAKise,eAAe2I,mBAAmB7ye,EAAKsI,UAEhDrK,KAAKi9d,gBAAgB7d,OAAOr9c,EAAKsI,WAE5Cq/d,GAAa,CACT/sF,GAAU,oBACXgtF,EAAYj3c,UAAW,uBAAmB,GAC7Cg3c,GAAa,CACT/sF,GAAU,qBACXgtF,EAAYj3c,UAAW,wBAAoB,GAC9Cg3c,GAAa,CACT/sF,GAAU,uBACXgtF,EAAYj3c,UAAW,0BAAsB,GAChDg3c,GAAa,CACT/sF,GAAU,WACXgtF,EAAYj3c,UAAW,cAAU,GACpCg3c,GAAa,CACT/sF,GAAU,iBACXgtF,EAAYj3c,UAAW,oBAAgB,GAC1Cg3c,GAAa,CACT/sF,GAAU,mBACXgtF,EAAYj3c,UAAW,sBAAkB,GAC5Cg3c,GAAa,CACT/sF,GAAU,aACXgtF,EAAYj3c,UAAW,gBAAY,GACtCg3c,GAAa,CACT/sF,GAAU,kBACXgtF,EAAYj3c,UAAW,qBAAiB,GAC3Cg3c,GAAa,CACT/sF,GAAU,oBACXgtF,EAAYj3c,UAAW,uBAAmB,GAC7Cg3c,GAAa,CACT/sF,GAAU,0BACXgtF,EAAYj3c,UAAW,6BAAyB,GACnDg3c,GAAa,CACT/sF,GAAU,cACXgtF,EAAYj3c,UAAW,iBAAa,GACvCg3c,GAAa,CACT/sF,GAAU,YACXgtF,EAAYj3c,UAAW,eAAW,GACrCg3c,GAAa,CACT/sF,GAAU,UACXgtF,EAAYj3c,UAAW,aAAS,GACnCg3c,GAAa,CACT/sF,GAAU,uBACXgtF,EAAYj3c,UAAW,0BAAsB,GAChDg3c,GAAa,CACT/sF,GAAU,0BACXgtF,EAAYj3c,UAAW,6BAAyB,GACnDg3c,GAAa,CACT/sF,GAAU,qBACXgtF,EAAYj3c,UAAW,wBAAoB,GAC9Cg3c,GAAa,CACT5sF,GAAS,oBACV6sF,EAAYj3c,UAAW,uBAAmB,GAC7Cg3c,GAAa,EACC,EA5tCwDv/V,EA4tCrD8yQ,GAAU,iBA3tCpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EA2tCpC,MACXgtd,EAAYj3c,UAAW,SAAU,MACtBg3c,GAAa,CACvBxuF,GAAK,gBACNyuF,GAhuC6C,IAAsBx/V,EAGzC,CA+tC/Bi8S,IAQEyuD,GAAiC,WACjC,SAASA,KA6CT,OA3CAA,EAAgBC,2BAA6B,SAAUhmF,EAAgBimF,EAAa3qG,EAAoB5kY,EAAQi7Z,GACxGruT,GAAEgsR,QAAQ0wB,IAGd9uZ,KAAKg1e,4BAA4BlmF,EAAelhD,YAAakhD,EAAgBimF,EAAa3qG,EAAoB5kY,EAAQi7Z,IAE1Ho0E,EAAgBI,8BAAgC,SAAUnmF,EAAgBimF,EAAa3qG,EAAoB5kY,EAAQi7Z,GAC3GruT,GAAEgsR,QAAQ0wB,IAGd9uZ,KAAKg1e,4BAA4BlmF,EAAejhD,eAAgBihD,EAAgBimF,EAAa3qG,EAAoB5kY,EAAQi7Z,IAE7Ho0E,EAAgBG,4BAA8B,SAAUE,EAAepmF,EAAgBimF,EAAa3qG,EAAoB5kY,EAAQi7Z,GAI5H,IAAI00E,EAHA/iY,GAAEgsR,QAAQ82G,KAqBY,iBALtBC,EAZyB,mBAAlBD,EAWeA,EAVT,CAITrpI,OAAQijD,EACRtpZ,OAAQA,EACRi7Z,YAAaA,EACbjvZ,QAAS44X,EAAmB/lP,aAC5B4lO,IAAKmgB,EAAmB2K,WAMfmgG,GAGb9iY,GAAE+tR,YAAY40G,EAAaI,GAEtB5qe,MAAMyL,QAAQm/d,IACnBA,EAAW9he,QAAQ,SAAU+he,GACzBhjY,GAAE+tR,YAAY40G,EAAaK,OAIhCP,EA9C0B,GAuDjCQ,IACIjsW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF8rW,GAAsD,SAAUzrW,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DyrW,GAA8B,SAAU/8Z,GAExC,SAAS+8Z,EAAapwe,EAASkG,GAC3B,IAAIq2C,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAGjC,OAFA0hD,EAAMv8C,QAAUA,EAChBu8C,EAAMr2C,QAAUA,EACTq2C,EAqBX,OA1BA2zb,GAAYE,EAAc/8Z,GAO1B+8Z,EAAa7id,UAAUk7Z,cAAgB,WACnC5tb,KAAKw1e,0BAETD,EAAa7id,UAAU8id,uBAAyB,WAC5Cx1e,KAAKymb,4BAA4Bzmb,KAAKqL,QAAS,WAAYrL,KAAKo0d,WAAW7pb,KAAKvqC,OAChFA,KAAKymb,4BAA4Bzmb,KAAKqL,QAAS,YAAarL,KAAKq0d,YAAY9pb,KAAKvqC,QAEtFu1e,EAAa7id,UAAU0hc,WAAa,WAChCp0d,KAAK6ud,mBAAmB6F,kBAE5B6gB,EAAa7id,UAAU2hc,YAAc,WACjCr0d,KAAK6ud,mBAAmB+F,aAAa50d,KAAKmF,UAE9Cmwe,GAAa,CACT34F,GAAU,uBACX44F,EAAa7id,UAAW,0BAAsB,GACjD4id,GAAa,CACTh5F,IACDi5F,EAAa7id,UAAW,gBAAiB,MACrC6id,EA3BuB,CA4BhCnvD,IAQEqvD,IACIrsW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFksW,GAAgC,SAAUl9Z,GAE1C,SAASk9Z,EAAezkE,EAAe03C,EAAO7B,EAAOkI,GACjD,IAAItta,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAOjC,OANA0hD,EAAMuvX,cAAgBA,EACtBvvX,EAAMina,MAAQA,EACdjna,EAAMi0b,OAASj0b,EAAMina,MAAMv9c,cAAc,wBAA0Bs2C,EAAMina,MACzEjna,EAAMsta,aAAeA,EACrBtta,EAAMola,MAAQA,EACdpla,EAAMkqa,YAAc9E,EAAM18E,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBACnE3xV,EAkFX,OA3FA+zb,GAAYC,EAAgBl9Z,GAW5Bk9Z,EAAehjd,UAAUkjd,gBAAkB,SAAU5mB,GACjDhvd,KAAKgvd,aAAeA,EACpBhvd,KAAKyvd,iBAETimB,EAAehjd,UAAUmjd,iBAAmB,WACxC,OAAI71e,KAAK8md,MAAM18E,mBAAmBme,eAAiBvoZ,KAAKgvd,aAC7C58W,GAAEj7F,KAAKnX,KAAKgvd,cAEhBhvd,KAAKixa,eAEhBykE,EAAehjd,UAAU4yQ,KAAO,WAC5BtlS,KAAKymb,4BAA4Bzmb,KAAKixa,cAAe5xB,GAAOmF,mBAAoBxkZ,KAAKyvd,cAAcllb,KAAKvqC,OACxGA,KAAK81e,oBAETJ,EAAehjd,UAAUojd,iBAAmB,WACxC,IAAIC,EAAwB/1e,KAAK8md,MAAM18E,mBAAmBuyC,gCACtDq5D,EAAgB5jY,GAAE8rR,OAAOl+X,KAAKixa,cAAc7sB,cACxBpkZ,KAAK8md,MAAM/mD,uBAAuBz9D,YAAc0zI,IAAkBD,EAEtF/1e,KAAKi2e,gBAGLj2e,KAAKyvd,iBAGbimB,EAAehjd,UAAUujd,cAAgB,WACrC,IAAIv0b,EAAQ1hD,KACRiM,EAAOjM,KAAK61e,mBAAmB1xF,UAC/BE,EAAUrkZ,KAAK61e,mBAAmBzxF,aACtCpkZ,KAAKukZ,QAAQF,GAMbrkZ,KAAKk2e,WAAajqe,EAClBjM,KAAK8md,MAAM/mD,uBAAuBv0B,kBAAkB,WAE5C9pV,EAAMw0b,aAAejqe,GACrBy1C,EAAM6iW,QAAQt4Y,MAI1Bype,EAAehjd,UAAU+8b,cAAgB,WACrC,IAAI0mB,EAAan2e,KAAK61e,mBAClB5pe,EAAOkqe,EAAWhyF,UACtBnkZ,KAAKk2e,WAAal2e,KAAKktd,yBAAyBipB,EAAYlqe,GAC5DjM,KAAKukZ,QAAQvkZ,KAAKk2e,aAEtBR,EAAehjd,UAAUw6b,yBAA2B,SAAUipB,EAAYl/Z,GACtE,OAAKj3E,KAAK4rd,YAGNuqB,EAAWzwF,cAAgBpV,GAAUoD,YAC9Bz8T,EAEPk/Z,EAAWzwF,cAAgBpV,GAAUmD,aACnBzzY,KAAK8md,MAAMvjC,iBAAiB5nB,8BAC9B37Z,KAAK8md,MAAMvjC,iBAAiBziB,wBACX7pV,EAGrBj3E,KAAK8md,MAAMvjC,iBAAiB5nB,8BACzB1kV,EAZRA,GAcfy+Z,EAAehjd,UAAU6xX,QAAU,SAAUhjZ,GAOzC,GAHI6wG,GAAE8rR,OAAO38X,KACTvB,KAAK2od,MAAMp9c,MAAMU,KAAO1K,EAAQ,MAEhCvB,KAAKixa,yBAAyB5xB,GAAQ,CACtC,IAAI+2F,EAAWp2e,KAAK8md,MAAMvjC,iBAAiB/pB,yBAAyBvwZ,QAAQjJ,KAAKixa,eACjFjxa,KAAK21e,OAAO9me,aAAa,iBAAkBune,EAAW,GAAGnkd,iBAGzDjyB,KAAK21e,OAAOltc,gBAAgB,kBAG7Bitc,EA5FyB,CA6FlCtvD,IAQEiwD,IACIjtW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF8sW,GAAsD,SAAUzsW,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DysW,GAAkC,SAAU/9Z,GAE5C,SAAS+9Z,EAAiBC,EAAahxe,GACnC,IAAIk8C,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KACjC0hD,EAAM+0b,oBAAqB,EAC3B/0b,EAAMg1b,6BAA8B,EACpCh1b,EAAM80b,YAAcA,EACpB90b,EAAMl8C,OAASA,EACf,IAAIqmW,EAASrmW,EAAOuqY,YAEpB,OADAruV,EAAMi1b,eAAe9qI,KAAWA,EAAO+E,oCAChClvT,EA4JX,OArKA20b,GAAYE,EAAkB/9Z,GAW9B+9Z,EAAiB7jd,UAAUk7Z,cAAgB,WACvC5tb,KAAK42e,sBACL52e,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOc,gCAAiC7vZ,KAAK42e,oBAAoBrsc,KAAKvqC,OAC1HA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOuC,wBAAyBtxZ,KAAK+mc,mBAAmBx8Z,KAAKvqC,OACjHA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAO0B,oBAAqBzwZ,KAAK62e,eAAetsc,KAAKvqC,OACzGA,KAAKymb,4BAA4Bzmb,KAAKw2e,YAAarwC,GAAWb,cAAetlc,KAAK82e,cAAcvsc,KAAKvqC,QAEzGu2e,EAAiB7jd,UAAUkkd,oBAAsB,WAC7C52e,KAAKy2e,mBAAqBz2e,KAAK+2e,sBAC/B/2e,KAAKw2e,YAAY31G,aAAa7gY,KAAKy2e,oBAC/Bz2e,KAAKy2e,qBAELz2e,KAAKg3e,yBAELh3e,KAAKi3e,0BAGbV,EAAiB7jd,UAAUmkd,eAAiB,WACnC72e,KAAKy2e,oBAGVz2e,KAAKi3e,yBAETV,EAAiB7jd,UAAUq0a,mBAAqB,WACvC/mc,KAAKy2e,oBAGVz2e,KAAKi3e,yBAETV,EAAiB7jd,UAAUwkd,qBAAuB,SAAUC,GAExD,OAAgC,IAA5BA,EAAelod,UAAiD,IAA/Bkod,EAAeC,eAIhDD,EAAelod,SAAW,GAAKkod,EAAeC,YAAc,EACrD,KAGPD,EAAelod,SAAW,IAMlCsnd,EAAiB7jd,UAAUukd,sBAAwB,WAC/C,IAAIj3e,KAAK02e,4BAAT,CAGA12e,KAAK02e,6BAA8B,EACnC,IAAIS,EAAiBn3e,KAAKq3e,oBACtBC,EAAct3e,KAAKk3e,qBAAqBC,GAC5Cn3e,KAAKw2e,YAAYliW,SAASgjW,GAC1Bt3e,KAAK02e,6BAA8B,IAEvCH,EAAiB7jd,UAAU2kd,kBAAoB,WAC3C,IAAI31b,EAAQ1hD,KACRu3e,EAAgB,EAChBC,EAAmB,EACnBvkd,EAAW,SAAUywH,GACjBhiG,EAAM0oV,mBAAmB2pC,0BAA4BrwR,EAAK7I,QAG1D6I,EAAK1jH,aACLu3c,IAEM7zV,EAAKv0F,YAEXqob,MASR,OANIx3e,KAAK22e,aACL32e,KAAKmjZ,QAAQ07D,uBAAuB5rb,GAGpCjzB,KAAKmjZ,QAAQ67D,YAAY/rb,GAEtB,CACHmkd,YAAaI,EACbvod,SAAUsod,IAGlBhB,EAAiB7jd,UAAUskd,uBAAyB,WAChD,IAAInhI,EAAe71W,KAAKwub,SAASv5P,UACX4gL,IAAiBy6B,GAAUuC,4BAE7C9nW,QAAQ24B,KAAK,yFAA2FmyS,IAGhH0gI,EAAiB7jd,UAAUokd,cAAgB,WACnC92e,KAAK02e,6BAGJ12e,KAAKy2e,qBAGEz2e,KAAKw2e,YAAY16W,WAEzB97H,KAAK4+b,oBAAoBkgB,kBAAkB9+c,KAAK22e,cAGhD32e,KAAK4+b,oBAAoB8f,oBAAoB1+c,KAAK22e,gBAG1DJ,EAAiB7jd,UAAUqkd,oBAAsB,WAC7C,IAAIn6c,EAAS58B,KAAKwF,OAAOuqY,YAAYp/B,wBAUrC,MATsB,mBAAX/zU,IAEPA,EADWA,EACG,CACVp3B,OAAQxF,KAAKwF,OACbqmW,OAAQ7rW,KAAKwF,OAAOuqY,YACpB7lB,UAAWlqX,KAAKkqX,UAChBD,IAAKjqX,KAAKmjZ,cAGdvmX,IACI58B,KAAKoqY,mBAAmB8pC,wBACxBnpY,QAAQ24B,KAAK,sEACN,GAEP1jE,KAAKoqY,mBAAmBwrC,sBACxB7qY,QAAQ24B,KAAK,mEACN,GAEP1jE,KAAKoqY,mBAAmByrC,uBACxB9qY,QAAQ24B,KAAK,mEACN,MAOnB4ya,GAAa,CACT35F,GAAU,YACX45F,EAAiB7jd,UAAW,eAAW,GAC1C4jd,GAAa,CACT35F,GAAU,cACX45F,EAAiB7jd,UAAW,iBAAa,GAC5C4jd,GAAa,CACT35F,GAAU,iBACX45F,EAAiB7jd,UAAW,oBAAgB,GAC/C4jd,GAAa,CACT35F,GAAU,aACX45F,EAAiB7jd,UAAW,gBAAY,GAC3C4jd,GAAa,CACT35F,GAAU,wBACX45F,EAAiB7jd,UAAW,2BAAuB,GACtD4jd,GAAa,CACT35F,GAAU,uBACX45F,EAAiB7jd,UAAW,0BAAsB,GACrD4jd,GAAa,CACTh6F,IACDi6F,EAAiB7jd,UAAW,gBAAiB,MACzC6jd,EAtK2B,CAuKpCnwD,IAQEqxD,IACIruW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFkuW,GAAsD,SAAU7tW,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D6tW,GAAmC,SAAUn/Z,GAE7C,SAASm/Z,EAAkBnye,EAAQk9c,EAAsBn0G,GACrD,IAAI7sT,EAAQ82B,EAAOtjD,KAAKl1B,KAAM23e,EAAkBhtD,WAAa3qb,KAI7D,OAHA0hD,EAAMl8C,OAASA,EACfk8C,EAAMgha,qBAAuBA,EAC7Bhha,EAAM6sT,OAASA,EACR7sT,EA2RX,OAjSA+1b,GAAYE,EAAmBn/Z,GAQ/Bm/Z,EAAkBjld,UAAUyzY,UAAY,WACpC,OAAOnma,KAAKwF,QAEhBmye,EAAkBjld,UAAUm4b,mBAAqB,WAC7C,OAAO7qd,KAAKwF,OAAOuqY,aAEvB4nG,EAAkBjld,UAAU4yQ,KAAO,WAC/B,IAAIumE,EAAS7rW,KAAK6qd,qBACdh8D,EAAc7uZ,KAAKujb,iBAAiB7c,wBAAwB1ma,KAAKwF,OAAQ,UAAU,GACnFq3W,EAAgBhR,EAAO3nL,SACvBi3Q,EAAan7b,KAAK07b,YAAYk8C,cAAc53e,KAAKwF,UAAYqmW,EAAOgF,aACxE7wW,KAAK63e,iBAAiBhpF,EAAahyC,EAAes+E,GAClDn7b,KAAK83e,aACL93e,KAAK+3e,iBACL/3e,KAAKg4e,eACLh4e,KAAKi4e,cACLj4e,KAAKk4e,iBACLl4e,KAAKm4e,mBAAmBt7H,GACxB78W,KAAKo4e,yBACLp4e,KAAKq4e,oBACLr4e,KAAKspb,WAAW,IAAIisD,GAAa,CAACv1e,KAAKwF,QAASxF,KAAKsmY,WACrDtmY,KAAKymb,4BAA4Bzmb,KAAKwF,OAAQ65Y,GAAOuF,4BAA6B5kZ,KAAKytb,gBAAgBljZ,KAAKvqC,OAC5GA,KAAKytb,kBACLztb,KAAKspb,WAAW,IAAIitD,GAAiBv2e,KAAKw2e,YAAax2e,KAAKwF,SAC5D,IAAI8ye,EAAiB,IAAI5C,GAAe11e,KAAKwF,OAAQxF,KAAKsmY,SAAUtmY,KAAK8md,OACzEwxB,EAAehzM,OACftlS,KAAK2mb,eAAe2xD,EAAep3d,QAAQqpB,KAAK+tc,IAChDt4e,KAAKu4e,gBACL1D,GAAgBC,2BAA2BjpI,EAAQ7rW,KAAKsmY,SAAUtmY,KAAKoqY,mBAAoBpqY,KAAKwF,OAAQ,OAE5Gmye,EAAkBjld,UAAU0ld,uBAAyB,WACjDp4e,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOoE,2BAA4BnzZ,KAAK2ud,cAAcpkb,KAAKvqC,OAC/GA,KAAK2ud,iBAETgpB,EAAkBjld,UAAUi8b,cAAgB,WACxC,IAAIC,EAAY5ud,KAAK6ud,mBAAmBD,UAAU5ud,KAAKwF,QACvD4sG,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,kBAAmBsoF,IAE5D+oB,EAAkBjld,UAAU2ld,kBAAoB,WAC5C,IAAI33c,EAAW1gC,KAAKw4e,eAAejuc,KAAKvqC,MACxCA,KAAK0pb,oBAAoB,aAAchpZ,GACvC1gC,KAAK0pb,oBAAoB,aAAchpZ,IAE3Ci3c,EAAkBjld,UAAU8ld,eAAiB,SAAUvkd,GAC/Cj0B,KAAKy4e,YAAcz4e,KAAKy4e,WAAWj9C,oBACnCx7b,KAAKy4e,WAAWj9C,mBAA8B,eAAXvna,EAAEvzB,OAG7Ci3e,EAAkBjld,UAAUyld,mBAAqB,SAAUt7H,GACvD,GAAIA,EAAe,CACf,IAAIxxW,EAAUrL,KAAKsmY,SACnBl0R,GAAE+tR,YAAY90X,EAAS,6BAG/Bsse,EAAkBjld,UAAU+6Z,gBAAkB,WAC1C,IAAIgP,EAAgBz8b,KAAKwF,OAAOi/Y,iBAChCryS,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,0BAA2Bm2D,IAEpEk7C,EAAkBjld,UAAUmld,iBAAmB,SAAUhpF,EAAahyC,EAAes+E,GACjF,IAAIz5Y,EAAQ1hD,KACR8pF,EAAS,CACTtkF,OAAQxF,KAAKwF,OACbqpZ,YAAaA,EACbhyC,cAAeA,EACfs+E,WAAYA,EACZu9C,eAAgB,SAAUnyd,GACtBm7B,EAAMyhW,QAAQw1F,+BAA+Bj3b,EAAMl8C,OAAQ+gB,IAE/D+0a,aAAc,SAAUs9C,GACpBl3b,EAAM25Y,eAAeC,aAAa55Y,EAAMl8C,SAAUoze,EAAW,mBAEjEt1F,QAAS,SAAUznY,EAAM+8d,GACrBl3b,EAAM25Y,eAAew9C,iBAAiBn3b,EAAMl8C,OAAQqW,IAAQ+8d,EAAW,mBAE3E3uH,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB14W,QAASxR,KAAKoqY,mBAAmB/lP,cAEjCpxH,EAAWjzB,KAAK84e,uBAAuBvuc,KAAKvqC,KAAM6uZ,GACtD7uZ,KAAKgsb,qBAAqBuc,mBAAmBz+W,GAAQzrE,KAAK4U,IAE9D0kd,EAAkBjld,UAAUomd,uBAAyB,SAAUjqF,EAAa4pF,GACxEz4e,KAAK8X,YAAY2ge,GACjBz4e,KAAK+4e,UAAUN,EAAWnyG,SAAUuoB,GACpC7uZ,KAAKy4e,WAAaA,GAEtBd,EAAkBjld,UAAUsmd,sBAAwB,WAI5Ch5e,KAAKwF,OAAO49Y,WACZhxS,GAAE+tR,YAAYngY,KAAKsmY,SAAU,yBAG7Bl0R,GAAEiuR,eAAergY,KAAKsmY,SAAU,0BAGxCqxG,EAAkBjld,UAAUqmd,UAAY,SAAUE,EAAkBpqF,GAChE,IAAIntW,EAAQ1hD,KACR6rW,EAAS7rW,KAAKwF,OAAOuqY,YACrBmpG,EAAel5e,KAAKoqY,mBAAmBqyC,4BACpCz8a,KAAK6qd,qBAAqB95G,iBAC1BlF,EAAOoF,aACd,KAAIioI,GACCrtI,EAAO2F,gBACP3F,EAAO4F,cAGRwnI,EAAkB,CAClB,IAAIE,EAAe,CACfz4e,KAAM28B,EAAQojb,eAAe24B,WAC7Bh2G,SAAU61G,EACVhzB,gBAAiBnF,GAAmB4F,UACpClE,YAAa,WAAc,OAAO9ga,EAAM23b,kBACxCtzB,aAAcl3D,EACd6zD,qBAAsB1id,KAAK0id,qBAC3BC,cAAe,WAAc,OAAQu2B,GAAgBx3b,EAAMl8C,OAAOw9Y,WAAU,EAAM,kBAClF6/D,cAAe,WAAc,OAAQq2B,GAAgBx3b,EAAMl8C,OAAOw9Y,WAAU,EAAO,mBAEvFhjZ,KAAKund,mBAAmB5F,cAAcw3B,GAAc,GACpDn5e,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAM6la,mBAAmBpF,iBAAiBg3B,OAG3FxB,EAAkBjld,UAAU2md,eAAiB,WACzC,IAAIC,EAAe,GAEnB,OADAA,EAAat5e,KAAKwF,OAAOy7Y,SAAWjhZ,KAAKwF,OAAOolR,YACzC,CACHzlR,QAAS,CAACnF,KAAKwF,QACf8ze,aAAcA,IAGtB3B,EAAkBjld,UAAUuld,YAAc,WACtC,IAAIv2b,EAAQ1hD,KACR6rW,EAAS7rW,KAAK6qd,qBAElB,GAAK7qd,KAAKu5e,QAGV,GAAKv5e,KAAKwF,OAAOu9Y,cAAjB,CAIA,IAAIy2F,EAAyBx5e,KAAKy5e,wBAAwBC,aAAa,CACnEC,WAAY35e,KAAKu5e,QACjBK,cAAe55e,KAAK45e,cAAcrvc,KAAKvqC,MACvC65e,WAAY75e,KAAK65e,WAAWtvc,KAAKvqC,MAAM,GACvC85e,YAAa95e,KAAK65e,WAAWtvc,KAAKvqC,MAAM,KAE5CA,KAAK2mb,eAAe6yD,GACpB,IAAIO,GAAkB/5e,KAAKoqY,mBAAmByzC,uBAAyBhyE,EAAO0F,iBAC1EyM,EAAuBh+W,KAAKoqY,mBAAmB2uB,yBACnD,GAAIghF,EAAgB,CAChB/5e,KAAKymb,4BAA4Bzmb,KAAKu5e,QAAS,WAAY,WACvD73b,EAAM6hY,iBAAiBjqB,eAAe53W,EAAMl8C,OAAQw4W,EAAsB,qBAE9E,IAAIg9E,EAAgB,IAAIvC,GAAcz4b,KAAKu5e,SAC3Cv5e,KAAKymb,4BAA4BuU,EAAevC,GAAcmB,iBAAkB,WAC5El4Y,EAAM6hY,iBAAiBjqB,eAAe53W,EAAMl8C,OAAQw4W,EAAsB,qBAE9Eh+W,KAAK2mb,eAAeqU,EAAc95a,QAAQqpB,KAAKywZ,UApB/C5oV,GAAE6uR,iBAAiBjhY,KAAKu5e,UAuBhC5B,EAAkBjld,UAAUmnd,WAAa,SAAUx8K,EAAU28K,GACzD,IAAIC,EAAyBj6e,KAAKk6e,sBAAsBF,GAExDh6e,KAAKujb,iBAAiB3lB,gBADH,CAAC,CAAEjhZ,IAAK3c,KAAKwF,OAAQ4zZ,SAAUp5Z,KAAKm6e,iBAAmBF,IACtBj6e,KAAKo6e,mBAAoB/8K,EAAU,mBACnFA,GACAjrN,GAAEiuR,eAAergY,KAAKsmY,SAAU,uBAGxCqxG,EAAkBjld,UAAUknd,cAAgB,SAAUnyX,GAClDznH,KAAKm6e,iBAAmBn6e,KAAKwF,OAAOugZ,iBACpC/lZ,KAAKo6e,mBAAqB3yX,EAC1BrV,GAAE+tR,YAAYngY,KAAKsmY,SAAU,uBAEjCqxG,EAAkBjld,UAAUk4b,eAAiB,WAEzC,OADa5qd,KAAK6qd,qBACJ58G,eAElB0pI,EAAkBjld,UAAUsld,aAAe,WACvC,IAAIzqT,EAAcvtL,KAAK4qd,iBAEJ,MAAfr9R,IAGAvtL,KAAKoqY,mBAAmBsxC,0BACxB17a,KAAKsmY,SAASz3X,aAAa,QAAS0+K,GAGpCvtL,KAAKspb,WAAW,IAAIigC,GAAevpd,KAAM,aAGjD23e,EAAkBjld,UAAUqld,eAAiB,WACzC/3e,KAAKymb,4BAA4Bzmb,KAAKwF,OAAQ65Y,GAAO6D,qBAAsBljZ,KAAKg5e,sBAAsBzuc,KAAKvqC,OAC3GA,KAAKg5e,yBAETrB,EAAkBjld,UAAU6ld,cAAgB,WACxCv4e,KAAKsmY,SAASz3X,aAAa,SAAU7O,KAAKwF,OAAOqgZ,aAErD8xF,EAAkBjld,UAAUold,WAAa,WACrC93e,KAAKymb,4BAA4Bzmb,KAAKwF,OAAQ65Y,GAAO+G,oBAAqBpmZ,KAAKq6e,qBAAqB9vc,KAAKvqC,OACzGA,KAAKq6e,wBAET1C,EAAkBjld,UAAUwld,eAAiB,WACzCl4e,KAAKymb,4BAA4Bzmb,KAAKwF,OAAQ65Y,GAAOoE,2BAA4BzjZ,KAAKs6e,cAAc/vc,KAAKvqC,OACzGA,KAAKq6e,wBAET1C,EAAkBjld,UAAU4nd,cAAgB,WACxCt6e,KAAKugY,oBAAoB,yBAA0BvgY,KAAKwF,OAAOk+Y,kBAEnEi0F,EAAkBjld,UAAU2nd,qBAAuB,WAC/Cr6e,KAAKsmY,SAAS/6X,MAAM7B,MAAQ1J,KAAKwF,OAAOugZ,iBAAmB,MAI/D4xF,EAAkBjld,UAAUwnd,sBAAwB,SAAUK,GAC1D,IAAI39c,EAAS29c,EAab,OAZIv6e,KAAKoqY,mBAAmBme,cAEpBvoZ,KAAKuuW,SAAW+hC,GAAUoD,cAC1B92W,IAAW,GAKX58B,KAAKuuW,SAAW+hC,GAAUmD,eAC1B72W,IAAW,GAGZA,GAEX+6c,EAAkBhtD,SAAW,wPAK7B+sD,GAAa,CACT/6F,GAAU,uBACXg7F,EAAkBjld,UAAW,0BAAsB,GACtDgld,GAAa,CACT/6F,GAAU,uBACXg7F,EAAkBjld,UAAW,0BAAsB,GACtDgld,GAAa,CACT/6F,GAAU,qBACXg7F,EAAkBjld,UAAW,wBAAoB,GACpDgld,GAAa,CACT/6F,GAAU,4BACXg7F,EAAkBjld,UAAW,+BAA2B,GAC3Dgld,GAAa,CACT/6F,GAAU,gBACXg7F,EAAkBjld,UAAW,mBAAe,GAC/Cgld,GAAa,CACT/6F,GAAU,YACXg7F,EAAkBjld,UAAW,eAAW,GAC3Cgld,GAAa,CACT/6F,GAAU,cACXg7F,EAAkBjld,UAAW,iBAAa,GAC7Cgld,GAAa,CACT/6F,GAAU,mBACXg7F,EAAkBjld,UAAW,sBAAkB,GAClDgld,GAAa,CACT/6F,GAAU,iBACXg7F,EAAkBjld,UAAW,oBAAgB,GAChDgld,GAAa,CACT/6F,GAAU,yBACXg7F,EAAkBjld,UAAW,4BAAwB,GACxDgld,GAAa,CACT/6F,GAAU,uBACXg7F,EAAkBjld,UAAW,0BAAsB,GACtDgld,GAAa,CACT/6F,GAAU,UACXg7F,EAAkBjld,UAAW,aAAS,GACzCgld,GAAa,CACTxtD,GAAY,YACbytD,EAAkBjld,UAAW,eAAW,GAC3Cgld,GAAa,CACTxtD,GAAY,gBACbytD,EAAkBjld,UAAW,mBAAe,GAC/Cgld,GAAa,CACTp7F,IACDq7F,EAAkBjld,UAAW,OAAQ,MACjCild,EAlS4B,CAmSrCvld,IAQEood,IACIpxW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFixW,GAAsD,SAAU5wW,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D4wW,GAAwC,SAAUlia,GAElD,SAASkia,EAAuBj6E,EAAaiiD,EAAsBn0G,GAC/D,IAAI7sT,EAAQ82B,EAAOtjD,KAAKl1B,KAAM06e,EAAuB/vD,WAAa3qb,KAMlE,OAJA0hD,EAAMi5b,yBAA2B,GACjCj5b,EAAM++W,YAAcA,EACpB/+W,EAAMgha,qBAAuBA,EAC7Bhha,EAAM6sT,OAASA,EACR7sT,EA+TX,OAvUA84b,GAAYE,EAAwBlia,GAUpCkia,EAAuBhod,UAAUk7Z,cAAgB,WAC7CinD,GAAgBC,2BAA2B90e,KAAK6qd,qBAAsB7qd,KAAKsmY,SAAUtmY,KAAKoqY,mBAAoB,KAAMpqY,KAAKyga,aACzH,IAAI5R,EAAc7uZ,KAAKujb,iBAAiBxc,6BAA6B/ma,KAAKyga,YAAa,UACvFzga,KAAK46e,sBAAsB/rF,GAC3B7uZ,KAAKi4e,cACLj4e,KAAK28R,aACL38R,KAAK83e,aACL93e,KAAKu4e,gBACLv4e,KAAK+3e,iBACL/3e,KAAKg4e,eACLh4e,KAAKspb,WAAW,IAAIisD,GAAav1e,KAAKyga,YAAYrY,yBAAyBC,iBAAkBroZ,KAAKsmY,WAClG,IAAIgyG,EAAiB,IAAI5C,GAAe11e,KAAKyga,YAAazga,KAAKsmY,SAAUtmY,KAAK8md,OAC9EwxB,EAAehzM,OACftlS,KAAK2mb,eAAe2xD,EAAep3d,QAAQqpB,KAAK+tc,KAEpDoC,EAAuBhod,UAAUqld,eAAiB,WAC9C,IAAIr2b,EAAQ1hD,KACcA,KAAKyga,YAAYrY,yBACLC,iBAC1Bh1Y,QAAQ,SAAU4tF,GAC1Bv/C,EAAM+kY,4BAA4BxlV,EAAKo+S,GAAO6D,qBAAsBxhW,EAAMs3b,sBAAsBzuc,KAAKmX,MAEzG1hD,KAAKg5e,yBAET0B,EAAuBhod,UAAUyzY,UAAY,WACzC,OAAOnma,KAAKyga,aAEhBi6E,EAAuBhod,UAAUm4b,mBAAqB,WAClD,OAAO7qd,KAAKyga,YAAYlX,kBAE5BmxF,EAAuBhod,UAAUk4b,eAAiB,WAC9C,IAAIzgE,EAAcnqZ,KAAK6qd,qBACvB,OAAO1gE,GAAeA,EAAYl8C,eAEtCysI,EAAuBhod,UAAUsld,aAAe,WAC5C,IAAIzqT,EAAcvtL,KAAK4qd,iBACJ,MAAfr9R,IAGAvtL,KAAKoqY,mBAAmBsxC,0BACxB17a,KAAKsmY,SAASz3X,aAAa,QAAS0+K,GAGpCvtL,KAAKspb,WAAW,IAAIigC,GAAevpd,KAAM,kBAGjD06e,EAAuBhod,UAAUsmd,sBAAwB,WAIrD5mY,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,wBAAyBtmY,KAAKyga,YAAYrd,aAEnFs3F,EAAuBhod,UAAU6ld,cAAgB,WAC7Cv4e,KAAKsmY,SAASz3X,aAAa,SAAU7O,KAAKyga,YAAYzf,gBAE1D05F,EAAuBhod,UAAUkod,sBAAwB,SAAU/rF,GAC/D,IAAIntW,EAAQ1hD,KACR8pF,EAAS,CACT+kU,YAAaA,EACb4R,YAAazga,KAAKyga,YAClBhX,YAAa,SAAUtoP,GACnBz/G,EAAM6hY,iBAAiBva,qBAAqBtnX,EAAM++W,YAAYrY,yBAA0BjnP,EAAU,qBAEtG8oN,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB14W,QAASxR,KAAKoqY,mBAAmB/lP,cAErC,IAAKwqQ,EAAa,CAQd,IAPA,IAAI4R,EAAczga,KAAKyga,YACnBo6E,EAAWp6E,EAAYpY,iBAMpBoY,EAAYzgB,aAAeygB,EAAYzgB,YAAYqI,iBAAiBlkZ,SAAW02e,EAAS12e,QAC3Fs8Z,EAAcA,EAAYzgB,YAE9B,IAAImK,EAAcsW,EAAYlX,iBAC1BY,IACA0E,EAAc1E,EAAY/iI,YAEzBynI,IACDA,EAAcgsF,EAAW76e,KAAKujb,iBAAiB7c,wBAAwBm0E,EAAS,GAAI,UAAU,GAAQ,IAG9G,IAAI5nd,EAAWjzB,KAAK84e,uBAAuBvuc,KAAKvqC,KAAM6uZ,GACtD7uZ,KAAKgsb,qBAAqBwc,wBAAwB1+W,GAAQzrE,KAAK4U,IAEnEynd,EAAuBhod,UAAUomd,uBAAyB,SAAUjqF,EAAaisF,GAC7E96e,KAAK8X,YAAYgje,GACjB96e,KAAK+4e,UAAU+B,EAAgBx0G,SAAUuoB,IAE7C6rF,EAAuBhod,UAAUiqQ,WAAa,WAI1C,IAAIpxR,EAAQvL,KAAKyga,YAAYjX,YAAc,KAAO,OAClDxpZ,KAAKmgY,YAAY,wBAA0B50X,EAAQ,WAEvDmve,EAAuBhod,UAAUqmd,UAAY,SAAUgC,EAAclsF,GACjE,IAAIntW,EAAQ1hD,KACZ,GAAK+6e,IAGD/6e,KAAKg7e,mBAAT,CAGA,IAAI7yF,EAAiBnoZ,KAAKyga,YAAYrY,yBAAyBC,iBAC3Du5D,EAAa,CACblhd,KAAM28B,EAAQojb,eAAe24B,WAC7Bh2G,SAAU23G,EACV90B,gBAAiBnF,GAAmB4F,UACpCX,aAAcl3D,EAEd2zD,YAAaxid,KAAKi7e,oBAAoB1wc,KAAKvqC,MAC3C0id,qBAAsB1id,KAAK0id,qBAC3BC,cAAe,WAAc,OAAOx6D,EAAe90Y,QAAQ,SAAU4tF,GAAO,OAAOA,EAAI+hT,WAAU,EAAM,sBACvG6/D,cAAe,WAAc,OAAO16D,EAAe90Y,QAAQ,SAAU4tF,GAAO,OAAOA,EAAI+hT,WAAU,EAAO,uBAE5GhjZ,KAAKund,mBAAmB5F,cAAcC,GAAY,GAClD5hd,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAM6la,mBAAmBpF,iBAAiBP,OAIvF84B,EAAuBhod,UAAUuod,oBAAsB,WACnD,IAAIC,EAA0Bl7e,KAAKyga,YAAYrY,yBAAyBC,iBAEpEixF,EAAe,GACnB4B,EAAwB7ne,QAAQ,SAAU7N,GAAU,OAAO8ze,EAAa9ze,EAAOy7Y,SAAWz7Y,EAAOolR,cACjG,IAAIuwN,EAAyB,GAU7B,OATAn7e,KAAKujb,iBAAiB/pB,yBAAyBnmZ,QAAQ,SAAU7N,GACzD01e,EAAwBjye,QAAQzD,IAAW,IAC3C21e,EAAuBv3e,KAAK4B,GAC5B4sG,GAAEq0R,gBAAgBy0G,EAAyB11e,MAInD01e,EAAwB7ne,QAAQ,SAAU7N,GAAU,OAAO21e,EAAuBv3e,KAAK4B,KAEhF,CACHL,QAASg2e,EACT7B,aAAcA,IAGtBoB,EAAuBhod,UAAUsod,iBAAmB,WAEhD,IAAII,GAAwB,EAO5B,OANAp7e,KAAKyga,YAAYpY,iBAAiBh1Y,QAAQ,SAAU7N,IAC5CA,EAAOuqY,YAAYh/B,iBAAmBvrW,EAAOuqY,YAAY9+B,gBACzDmqI,GAAwB,KAGnBA,GAAyBp7e,KAAKoqY,mBAAmBqyC,4BAGlEi+D,EAAuBhod,UAAUold,WAAa,WAE1C93e,KAAKq7e,gCAELr7e,KAAKymb,4BAA4Bzmb,KAAKyga,YAAa3Y,GAAYkC,iCAAkChqZ,KAAKs7e,2BAA2B/wc,KAAKvqC,OACtIA,KAAKuvd,iBAILvvd,KAAK2mb,eAAe3mb,KAAKu7e,kCAAkChxc,KAAKvqC,QAEpE06e,EAAuBhod,UAAU4od,2BAA6B,WAC1Dt7e,KAAKq7e,gCACLr7e,KAAKuvd,kBAETmrB,EAAuBhod,UAAU2od,8BAAgC,WAC7D,IAAI35b,EAAQ1hD,KAEZA,KAAKu7e,oCAEL,IAAItQ,EAAuBjre,KAAKuvd,eAAehlb,KAAKvqC,MACpDA,KAAKyga,YAAYpY,iBAAiBh1Y,QAAQ,SAAU7N,GAChDA,EAAO8lB,iBAAiB+zX,GAAO+G,oBAAqB6kF,GACpDzle,EAAO8lB,iBAAiB+zX,GAAOsG,sBAAuBslF,GACtDvpb,EAAMi5b,yBAAyB/2e,KAAK,WAChC4B,EAAOmmB,oBAAoB0zX,GAAO+G,oBAAqB6kF,GACvDzle,EAAOmmB,oBAAoB0zX,GAAOsG,sBAAuBslF,QAIrEyP,EAAuBhod,UAAU6od,kCAAoC,WACjEv7e,KAAK26e,yBAAyBtne,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC/Dj3C,KAAK26e,yBAA2B,IAEpCD,EAAuBhod,UAAU68b,eAAiB,WAC9Cvvd,KAAKsmY,SAAS/6X,MAAM7B,MAAQ1J,KAAKyga,YAAY1a,iBAAmB,MAEpE20F,EAAuBhod,UAAUuld,YAAc,WAC3C,IAAIv2b,EAAQ1hD,KAEZ,GADAA,KAAKw7e,kBAAoBx7e,KAAK2pb,cAAc,YACvC3pb,KAAKyga,YAAY1d,cAAtB,CAIA,IAAIy2F,EAAyBx5e,KAAKy5e,wBAAwBC,aAAa,CACnEC,WAAY35e,KAAKw7e,kBACjB5B,cAAe55e,KAAK45e,cAAcrvc,KAAKvqC,MACvC65e,WAAY75e,KAAK65e,WAAWtvc,KAAKvqC,MAAM,GACvC85e,YAAa95e,KAAK65e,WAAWtvc,KAAKvqC,MAAM,KAG5C,GADAA,KAAK2mb,eAAe6yD,IACfx5e,KAAKoqY,mBAAmByzC,qBAAsB,CAC/C,IAAI49D,EAAyBz7e,KAAKoqY,mBAAmB2uB,yBACrD/4Z,KAAKw7e,kBAAkBlwd,iBAAiB,WAAY,SAAUhD,GAE1D,IAAI7L,EAAO,GACXilC,EAAM++W,YAAYpX,0BAA0Bh2Y,QAAQ,SAAU7N,GAErDA,EAAOuqY,YAAYx+B,kBACpB90V,EAAK7Y,KAAK4B,EAAOqgZ,cAGrBppY,EAAKtY,OAAS,GACdu9C,EAAM6hY,iBAAiB9qB,gBAAgBh8Y,EAAMg/d,EAAwB,2BAtB7ErpY,GAAE6uR,iBAAiBjhY,KAAKw7e,oBA2BhCd,EAAuBhod,UAAUknd,cAAgB,SAAUnyX,GACvD,IAAI/lE,EAAQ1hD,KACR66e,EAAW76e,KAAKyga,YAAYpX,0BAChCrpZ,KAAK07e,WAAab,EAAS1le,OAAO,SAAU8rF,GAAO,OAAOA,EAAI8hT,gBAC9D/iZ,KAAKm6e,iBAAmB,EACxBn6e,KAAK07e,WAAWroe,QAAQ,SAAU4tF,GAAO,OAAOv/C,EAAMy4b,kBAAoBl5Y,EAAI8kT,mBAC9E/lZ,KAAK27e,aAAe,GACpB37e,KAAK07e,WAAWroe,QAAQ,SAAU4tF,GAAO,OAAOv/C,EAAMi6b,aAAa/3e,KAAKq9F,EAAI8kT,iBAAmBrkW,EAAMy4b,oBACrG,IAAIyB,EAAgB,KAIpB,GAHIn0X,IACAm0X,EAAgB57e,KAAKujb,iBAAiB9gB,uBAAuBzia,KAAKyga,cAElEm7E,EAAe,CACf,IAAIC,EAAmBD,EAAcvyF,0BACrCrpZ,KAAK87e,mBAAqBD,EAAiB1me,OAAO,SAAU8rF,GAAO,OAAOA,EAAI8hT,gBAC9E/iZ,KAAK+7e,yBAA2B,EAChC/7e,KAAK87e,mBAAmBzoe,QAAQ,SAAU4tF,GAAO,OAAOv/C,EAAMq6b,0BAA4B96Y,EAAI8kT,mBAC9F/lZ,KAAKg8e,qBAAuB,GAC5Bh8e,KAAK87e,mBAAmBzoe,QAAQ,SAAU4tF,GAAO,OAAOv/C,EAAMs6b,qBAAqBp4e,KAAKq9F,EAAI8kT,iBAAmBrkW,EAAMq6b,iCAGrH/7e,KAAK87e,mBAAqB,KAC1B97e,KAAK+7e,yBAA2B,KAChC/7e,KAAKg8e,qBAAuB,KAEhC5pY,GAAE+tR,YAAYngY,KAAKsmY,SAAU,uBAEjCo0G,EAAuBhod,UAAUmnd,WAAa,SAAUx8K,EAAU28K,GAC9D,IAAIr7E,EAAa,GACbs7E,EAAyBj6e,KAAKi8e,oBAAoBjC,GACtDr7E,EAAW/6Z,KAAK,CACZuB,QAASnF,KAAK07e,WACd39E,OAAQ/9Z,KAAK27e,aACbjye,MAAO1J,KAAKm6e,iBAAmBF,IAE/Bj6e,KAAK87e,oBACLn9E,EAAW/6Z,KAAK,CACZuB,QAASnF,KAAK87e,mBACd/9E,OAAQ/9Z,KAAKg8e,qBACbtye,MAAO1J,KAAK+7e,yBAA2B9B,IAG/Cj6e,KAAKujb,iBAAiBnlB,iBAAiBO,EAAYthG,EAAU,mBACzDA,GACAjrN,GAAEiuR,eAAergY,KAAKsmY,SAAU,uBAKxCo0G,EAAuBhod,UAAUupd,oBAAsB,SAAU1B,GAC7D,IAAI39c,EAAS29c,EAWb,OAVIv6e,KAAKoqY,mBAAmBme,cAEpBvoZ,KAAKuuW,SAAW+hC,GAAUoD,cAC1B92W,IAAW,GAGV58B,KAAKuuW,SAAW+hC,GAAUmD,eAE/B72W,IAAW,GAERA,GAEX89c,EAAuB/vD,SAAW,6IAGlC8vD,GAAa,CACT99F,GAAU,uBACX+9F,EAAuBhod,UAAW,0BAAsB,GAC3D+nd,GAAa,CACT99F,GAAU,qBACX+9F,EAAuBhod,UAAW,wBAAoB,GACzD+nd,GAAa,CACT99F,GAAU,4BACX+9F,EAAuBhod,UAAW,+BAA2B,GAChE+nd,GAAa,CACT99F,GAAU,uBACX+9F,EAAuBhod,UAAW,0BAAsB,GAC3D+nd,GAAa,CACT99F,GAAU,yBACX+9F,EAAuBhod,UAAW,4BAAwB,GAC7D+nd,GAAa,CACT99F,GAAU,YACX+9F,EAAuBhod,UAAW,eAAW,GAChD+nd,GAAa,CACT99F,GAAU,cACX+9F,EAAuBhod,UAAW,iBAAa,GAClD+nd,GAAa,CACT99F,GAAU,UACX+9F,EAAuBhod,UAAW,aAAS,GAC9C+nd,GAAa,CACTn+F,IACDo+F,EAAuBhod,UAAW,gBAAiB,MAC/Cgod,EAxUiC,CAyU1Ctod,IAQE8pd,IACI9yW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAYnF2yW,GAAwC,SAAU3ja,GAElD,SAAS2ja,IACL,OAAO3ja,EAAOtjD,KAAKl1B,KAAiB,wLAAgMA,KAwBxO,OA1BAk8e,GAAYC,EAAwB3ja,GAIpC2ja,EAAuBzpd,UAAU4yQ,KAAO,SAAUx7M,GAC9C9pF,KAAK8pF,OAASA,EACd9pF,KAAKo8e,oBAAoB7nD,aAAY,IAEzC4nD,EAAuBzpd,UAAUskb,qBAAuB,SAAUqlC,GAC9D,IAAI36b,EAAQ1hD,KACPq8e,EAILr8e,KAAK8pF,OAAOqtX,qBAAqB,SAAUC,GAGvC,GAAIA,EAAeklC,iBAAkB,CACjC,IAAIC,EAAgBnlC,EAAeklC,iBAAiBD,GACpD36b,EAAM06b,oBAAoB9nW,SAASioW,MARvCv8e,KAAKo8e,oBAAoB9nW,SAAS,KArBY,SAAUzK,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GA6BxD0yW,CAAa,CACTtyD,GAAY,wBACbiyD,EAAuBzpd,UAAW,2BAAuB,GACrDypd,EA3BiC,CA4B1C/pd,IAQEqqd,IACIrzW,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFkzW,GAAsD,SAAU7yW,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D6yW,GAAuC,SAAUnka,GAEjD,SAASmka,EAAsBn3e,GAC3B,IAAIk8C,EAAQ82B,EAAOtjD,KAAKl1B,KAAM28e,EAAsBhyD,WAAa3qb,KAEjE,OADA0hD,EAAMl8C,OAASA,EACRk8C,EAqNX,OAzNA+6b,GAAYE,EAAuBnka,GAMnCmka,EAAsBjqd,UAAUk7Z,cAAgB,WAC5C5tb,KAAK48e,sBACL58e,KAAK83e,aACL93e,KAAK68e,uBACL78e,KAAK88e,mBACL98e,KAAKspb,WAAW,IAAIisD,GAAa,CAACv1e,KAAKwF,QAASxF,KAAKsmY,WACrDtmY,KAAKymb,4BAA4Bzmb,KAAK+8e,sBAAuB,QAAS/8e,KAAKg9e,iBAAiBzyc,KAAKvqC,QAErG28e,EAAsBjqd,UAAUkqd,oBAAsB,WAClD,IAAIl7b,EAAQ1hD,KACR6rW,EAAS7rW,KAAKwF,OAAOuqY,YACrBlkC,EAAO12V,QAAU02V,EAAOsG,gBACxBnyW,KAAKi9e,0BAA4Bj9e,KAAKk9e,4BAClCl9e,KAAKi9e,0BACLj9e,KAAKi9e,0BAA0B5+d,KAAK,SAAU8+d,GACtCA,GACAz7b,EAAM07b,wBAAwBD,GAC9Bz7b,EAAM27b,uBAGN37b,EAAM47b,eAKdt9e,KAAKs9e,cAITt9e,KAAKs9e,cAGbX,EAAsBjqd,UAAUmqd,qBAAuB,WACnD,IAAIvE,EAAiB,IAAI5C,GAAe11e,KAAKwF,OAAQxF,KAAKsmY,SAAUtmY,KAAK8md,OACzEwxB,EAAehzM,OACftlS,KAAK2mb,eAAe2xD,EAAep3d,QAAQqpB,KAAK+tc,KAEpDqE,EAAsBjqd,UAAU2qd,oBAAsB,WAClD,IAAI37b,EAAQ1hD,KACRu9e,EAAiB,SAAU14F,GAC3B,IAAIw3F,EAAc36b,EAAM87b,qBAAqBrzH,WAAW,KAAM,SAAUh1W,GAAU,OAAOA,EAAOo6a,aAChG7tY,EAAMs1Z,qBAAqBqlC,EAAax3F,IAE5C7kZ,KAAKymb,4BAA4Bzmb,KAAKwF,OAAQ65Y,GAAOyF,qBAAsBy4F,GACvEv9e,KAAK4xc,cAAcntD,eAAezkZ,KAAKwF,SACvC+3e,EAAe,OAIvBZ,EAAsBjqd,UAAUsqd,iBAAmB,WAC/Ch9e,KAAK07b,YAAYC,yBAAyB37b,KAAKwF,OAAQxF,KAAK+8e,sBAAuB,gBAAiB,CAAC,mBAEzGJ,EAAsBjqd,UAAUoqd,iBAAmB,WAC/C98e,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOoE,2BAA4BnzZ,KAAK2ud,cAAcpkb,KAAKvqC,OAC/GA,KAAK2ud,iBAETguB,EAAsBjqd,UAAUi8b,cAAgB,WAC5CpuF,EAAoBvgY,KAAKsmY,SAAU,kBAAmBtmY,KAAK6ud,mBAAmBD,UAAU5ud,KAAKwF,UAEjGm3e,EAAsBjqd,UAAUold,WAAa,WACzC93e,KAAKymb,4BAA4Bzmb,KAAKwF,OAAQ65Y,GAAO+G,oBAAqBpmZ,KAAKq6e,qBAAqB9vc,KAAKvqC,OACzGA,KAAKq6e,wBAETsC,EAAsBjqd,UAAU2nd,qBAAuB,WACnDr6e,KAAKsmY,SAAS/6X,MAAM7B,MAAQ1J,KAAKwF,OAAOugZ,iBAAmB,MAE/D42F,EAAsBjqd,UAAU0qd,wBAA0B,SAAUK,GAChE,IAAIC,EAAc,WACVD,EAAmBv8d,SACnBu8d,EAAmBv8d,WAG3B,GAAKlhB,KAAKs3V,UAAV,CAIAt3V,KAAK2mb,eAAe+2D,GACpB,IAAIC,EAAuBF,EAAmBn3G,SAC9C/F,EAAoBvgY,KAAK49e,oBAAqB,2BAA4B59e,KAAK69e,sBAC/Et9G,EAAoBvgY,KAAK49e,oBAAqB,+BAAgC59e,KAAK69e,sBACnFh9G,EAAa7gY,KAAK89e,gBAAiB99e,KAAK69e,sBACxC,IAAI9iD,EAAQnrD,GAAiB,SAAU5vY,KAAKoqY,mBAAoBpqY,KAAKwF,QACrExF,KAAK+8e,sBAAsBjle,YAAYijb,GACvC/6b,KAAK49e,oBAAoB9le,YAAY6le,GACjCF,EAAmBryD,kBACnBqyD,EAAmBryD,wBAZnBsyD,KAeRf,EAAsBjqd,UAAUykb,qBAAuB,SAAUlkb,GAC7DjzB,KAAKw9e,qBAAqBn/d,KAAK4U,IAEnC0pd,EAAsBjqd,UAAU8qd,mBAAqB,WACjD,OAAOx9e,KAAK4xc,cAAc4rC,mBAAmBx9e,KAAKwF,OAAQ,UAE9Dm3e,EAAsBjqd,UAAUwqd,0BAA4B,WACxD,IACIa,EADAlyI,EAAS7rW,KAAKwF,OAAOuqY,YAEI,iBAAlBlkC,EAAO12V,OAEd4oe,EAA4BpB,EAAsBqB,4BAA4BnyI,EAAO12V,QAEhF02V,EAAOkB,kBACW,IAAlBlB,EAAO12V,SAEZ4oe,EAD4Br/F,GAAeM,aAAa3hX,EAAQ6/W,YAAY+gG,iBACxB,4BAA8B,8BAEtF,IAAIjxI,EAAehtW,KAAK4xc,cAAcssC,mBAAmBl+e,KAAKwF,OAAQxF,KAAKwF,OAAOuqY,aAC9EouG,EAAoBn+e,KAAKgsb,qBAAqBie,kBAAkBp+F,EAAQ,SAAUmB,GAClFljR,EAAS,CACTmgS,IAAKjqX,KAAKmjZ,QACV39Y,OAAQxF,KAAKwF,OACbwnW,aAAcmxI,EACdC,mBAAoBp+e,KAAKo+e,mBAAmB7zc,KAAKvqC,MACjDm3c,qBAAsBn3c,KAAKm3c,qBAAqB5sa,KAAKvqC,MACrD+xb,wBAAyB/xb,KAAK+xb,wBAAwBxnZ,KAAKvqC,MAC3D69e,sBAAsB,GAI1B79e,KAAK69e,uBAAuBhyI,EAAOwB,iCAAkCxB,EAAOwB,8BAA8BwwI,qBAC1G,IAAI3pd,EAAUl0B,KAAKgsb,qBAAqBud,2BAA2B19F,EAAQ/hR,EAAQi0Z,GACnF,IAAK7pd,EAAS,CACV,IAAImqd,EAAkBr+e,KAAKs+e,4BAA4BzyI,GAEvD,GAD6BwyI,GAAmBA,EAAgB3rd,WAAa2rd,EAAgB3rd,UAAU4pd,iBAC3E,CACxB,IAAIa,EAAen9e,KAAKgsb,qBAAqBwe,qCAAqC2xC,GAAwBryZ,GAC1G51D,EAAU3vB,GAAQC,QAAQ24e,IAGlC,OAAOjpd,GAEXyod,EAAsBjqd,UAAU6rd,oBAAsB,WAClD,MAAO,CACH/4e,OAAQxF,KAAKwF,OACbqmW,OAAQ7rW,KAAKwF,OAAOuqY,YACpB9lB,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,YAGxByyH,EAAsBjqd,UAAU4rd,4BAA8B,SAAUzyI,GACpE,IAAI2yI,EAAoBx+e,KAAKgsb,qBAAqB4e,wBAAwB/+F,EAAQ,SAAU7rW,KAAKu+e,uBACjG,OAAOC,EAAoBA,EAAkBv/d,UAAY,MAE7D09d,EAAsBjqd,UAAU4qd,WAAa,WACzCz8G,EAAa7gY,KAAK89e,gBAAgB,IAEtCnB,EAAsBjqd,UAAU0rd,mBAAqB,WACjD,OAAOp+e,KAAKw9e,qBAAqBrzH,WAAW,KAAM,SAAUh1W,GAAU,OAAOA,EAAOo6a,cAExFotD,EAAsBjqd,UAAUskb,qBAAuB,SAAU/8W,EAAO4qT,GAC/D7kZ,KAAKi9e,2BAGVj9e,KAAKi9e,0BAA0B5+d,KAAK,SAAUoge,GAAQ,OAAOA,EAAKznC,qBAAqB/8W,EAAO4qT,MAElG83F,EAAsBjqd,UAAUq/Z,wBAA0B,WACtDhnZ,QAAQ24B,KAAK,iQAIjBi5a,EAAsBqB,4BAA8B,CAChD3pe,IAAK,4BACLqqe,kBAAmB,4BACnBh5d,OAAQ,+BACR+0b,qBAAsB,+BACtBxga,KAAM,6BACNyga,mBAAoB,6BACpBlxX,KAAM,6BACNgxX,mBAAoB,8BAExBmiC,EAAsBhyD,SACX,kXACX+xD,GAAa,CACT//F,GAAU,uBACXggG,EAAsBjqd,UAAW,0BAAsB,GAC1Dgqd,GAAa,CACT//F,GAAU,iBACXggG,EAAsBjqd,UAAW,oBAAgB,GACpDgqd,GAAa,CACT//F,GAAU,UACXggG,EAAsBjqd,UAAW,aAAS,GAC7Cgqd,GAAa,CACT//F,GAAU,uBACXggG,EAAsBjqd,UAAW,0BAAsB,GAC1Dgqd,GAAa,CACT//F,GAAU,yBACXggG,EAAsBjqd,UAAW,4BAAwB,GAC5Dgqd,GAAa,CACT//F,GAAU,YACXggG,EAAsBjqd,UAAW,eAAW,GAC/Cgqd,GAAa,CACT//F,GAAU,cACXggG,EAAsBjqd,UAAW,iBAAa,GACjDgqd,GAAa,CACT//F,GAAU,kBACXggG,EAAsBjqd,UAAW,qBAAiB,GACrDgqd,GAAa,CACT//F,GAAU,gBACXggG,EAAsBjqd,UAAW,mBAAe,GACnDgqd,GAAa,CACTxyD,GAAY,wBACbyyD,EAAsBjqd,UAAW,2BAAuB,GAC3Dgqd,GAAa,CACTxyD,GAAY,mBACbyyD,EAAsBjqd,UAAW,sBAAkB,GACtDgqd,GAAa,CACTxyD,GAAY,0BACbyyD,EAAsBjqd,UAAW,6BAAyB,GAC7Dgqd,GAAa,CACTpgG,IACDqgG,EAAsBjqd,UAAW,gBAAiB,MAC9Ciqd,EA1NgC,CA2NzCvqd,IAQEusd,IACIv1W,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFo1W,GAAsD,SAAU/0W,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAWw/U,GACPA,EAAcA,EAAa,aAAmB,GAAK,eACnDA,EAAcA,EAAa,OAAa,GAAK,SAC7CA,EAAcA,EAAa,gBAAsB,GAAK,kBAH1D,CAIGA,KAAkBA,GAAgB,KACrC,IAgsBIu1B,GAhsBAC,GAA+B,SAAUtma,GAEzC,SAASsma,EAAcnyF,EAAMjsZ,EAAM6tW,EAAQg1G,GACvC,IAAI7ha,EAAQ82B,EAAOtjD,KAAKl1B,KAAiB,6CAAmDA,KAC5F0hD,EAAMq9b,YAAc,GACpBr9b,EAAMirW,KAAOA,EACbjrW,EAAMhhD,KAAOA,EACbghD,EAAM6sT,OAASA,EACf7sT,EAAM6ha,WAAaA,EACnB,IAAIy7B,EAAgB11B,GAAc5od,GAAMkc,cAAcpb,QAAQ,KAAM,KAOpE,OANAkgD,EAAMy+U,YAAY,iBAAmB6+G,GACjCviH,MAGA/6U,EAAM4kV,SAAS/6X,MAAMo2B,UAAY,iBAE9B+f,EAwMX,OAvNAi9b,GAAYG,EAAetma,GAiB3Bsma,EAAcpsd,UAAUusd,qBAAuB,SAAUhsd,GACrD,IAAIyuB,EAAQ1hD,KACZwc,OAAOC,KAAKzc,KAAK++e,aAAa1re,QAAQ,SAAUsJ,GAC5CsW,EAASyuB,EAAMq9b,YAAYpie,OAGnCmie,EAAcpsd,UAAUxR,QAAU,WAC9B,IAAIg+d,EAAmB1ie,OAAOC,KAAKzc,KAAK++e,aACxC/+e,KAAKm/e,gCAAgCD,GACrC1ma,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElC8+e,EAAcpsd,UAAUysd,gCAAkC,SAAUC,GAChE,IAAI19b,EAAQ1hD,KACZo/e,EAAa/re,QAAQ,SAAU2S,GAC3B,IAAIq5d,EAAkB39b,EAAMq9b,YAAY/4d,GACxC07B,EAAM4kV,SAAS7kX,YAAY49d,EAAgB/4G,UAC3C+4G,EAAgBn+d,iBACTwgC,EAAMq9b,YAAY/4d,MAGjC84d,EAAcpsd,UAAUowc,mBAAqB,WACzC,IAGIwc,EACA5oI,EAJAioH,EAAiB3+d,KAAKujb,iBAAiBvpB,oBACvCzwZ,EAAQ,GACRg2e,EAAmB,EAGnBv/e,KAAKujb,iBAAiB5tB,eACtB2pF,EAAct/e,KAAKoqY,mBAAmBy2C,4BACtCnqE,EAAe12W,KAAKoqY,mBAAmBw2C,yBAGnC5gb,KAAKujb,iBAAiB9T,uBACtBkvD,IACA4gB,EAAmB,GAEvBD,EAAct/e,KAAKoqY,mBAAmBu2C,uBACtCjqE,EAAe12W,KAAKoqY,mBAAmBo2C,mBAI3C,IAFA,IACIg/D,EAAiB7gB,GADG,EAAI4gB,GAEnB13e,EAAI,EAAGA,EAAI23e,EAAgB33e,IAChC0B,EAAM3F,KAAK07e,GAGf,IADA/1e,EAAM3F,KAAK8yW,GACF7uW,EAAI,EAAGA,EAAI03e,EAAkB13e,IAClC0B,EAAM3F,KAAK5D,KAAKoqY,mBAAmBs2C,4BAEvC,IAAIpqE,EAAY,EAChB,IAASzuW,EAAI,EAAGA,EAAI7H,KAAK2sZ,KAAM9kZ,IAC3ByuW,GAAa/sW,EAAM1B,GAEvB7H,KAAKsmY,SAAS/6X,MAAMQ,IAAMuqW,EAAY,KACtCt2W,KAAKsmY,SAAS/6X,MAAMf,OAASjB,EAAMvJ,KAAK2sZ,MAAQ,MAGpDmyF,EAAcpsd,UAAU4yQ,KAAO,WAC3BtlS,KAAK8ie,qBACL9ie,KAAKqje,0BACLrje,KAAK0kN,WACL1kN,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmB8Q,mBAAoBhkb,KAAK8ie,mBAAmBv4b,KAAKvqC,OAC9HA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBiR,yBAA0Bnkb,KAAK8ie,mBAAmBv4b,KAAKvqC,OACpIA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBmR,yBAA0Brkb,KAAK8ie,mBAAmBv4b,KAAKvqC,OACpIA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBoR,+BAAgCtkb,KAAK8ie,mBAAmBv4b,KAAKvqC,OAC1IA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBqR,6BAA8Bvkb,KAAK8ie,mBAAmBv4b,KAAKvqC,OACxIA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOe,8BAA+B9vZ,KAAKqje,wBAAwB94b,KAAKvqC,OAC5HA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOc,gCAAiC7vZ,KAAKoje,0BAA0B74b,KAAKvqC,OAChIA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOa,qBAAsB5vZ,KAAKsje,gBAAgB/4b,KAAKvqC,OAC3GA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOO,2BAA4BtvZ,KAAKyje,qBAAqBl5b,KAAKvqC,QAE1H8+e,EAAcpsd,UAAU4wc,gBAAkB,WACtCtje,KAAK0kN,YAETo6R,EAAcpsd,UAAUgyL,SAAW,WAC/B,IAAIh7M,EAAQ1J,KAAKy/e,iBACjBz/e,KAAKsmY,SAAS/6X,MAAM7B,MAAQA,EAAQ,MAExCo1e,EAAcpsd,UAAU+sd,eAAiB,WAErC,OADkBz/e,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBAEnDjV,EAAQp+X,KAAKuuW,QAElBvuW,KAAKujb,iBAAiBxiB,kBAAkBzwB,GAAUmD,cACnDzzY,KAAKujb,iBAAiBxiB,kBAAkBzwB,GAAUoD,aAClD1zY,KAAKujb,iBAAiBxiB,kBAAkB,MAGvC,EAKJ/ga,KAAKujb,iBAAiBxiB,kBAAkB/ga,KAAKuuW,SAG5DuwI,EAAcpsd,UAAU+wc,qBAAuB,WAC3Czje,KAAK0/e,sCAETZ,EAAcpsd,UAAUgtd,mCAAqC,WACzD,IAAIR,EAAmB1ie,OAAOC,KAAKzc,KAAK++e,aACxC/+e,KAAKm/e,gCAAgCD,IAEzCJ,EAAcpsd,UAAU0wc,0BAA4B,WAChDpje,KAAKqje,0BACLrje,KAAK0kN,YAETo6R,EAAcpsd,UAAUitd,gBAAkB,WACtC,IAAIj+b,EAAQ1hD,KAEZ,GADkBA,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBACtD,CAGb,GADsBjV,EAAQp+X,KAAKuuW,QACd,CACjB,IAAIqxI,EAAW,GAOf,MANA,CAACtvG,GAAUoD,YAAa,KAAMpD,GAAUmD,cAAcpgY,QAAQ,SAAUk7V,GACpE,IAAIr2V,EAAQwpC,EAAM6hY,iBAAiB7W,yBAAyBn+D,EAAQ7sT,EAAMhhD,MAAQ4od,GAAcu2B,gBAC5Fn+b,EAAMirW,KAAO,EACbjrW,EAAMirW,MACVizF,EAAWA,EAAS5me,OAAOd,KAExB0ne,EAGP,MAAO,GAKX,OAAO5/e,KAAKujb,iBAAiB7W,yBAAyB1sa,KAAKuuW,OAAQvuW,KAAKU,MAAQ4od,GAAcu2B,gBAC1F7/e,KAAK2sZ,KAAO,EACZ3sZ,KAAK2sZ,OAGjBmyF,EAAcpsd,UAAU2wc,wBAA0B,WAC9C,IAAI3hb,EAAQ1hD,KACR8/e,EAAkBtje,OAAOC,KAAKzc,KAAK++e,aACnCgB,EAAkB,GA8BtB,GA7BmB//e,KAAK2/e,kBACXtse,QAAQ,SAAU2mI,GAK3B,IAAIA,EAAM8mQ,eAAV,CAGA,IAII23F,EACAuH,EALAC,EAAYjmW,EAAMgnQ,cAClBk/F,EAAmBx+b,EAAM4kV,SAEPw5G,EAAgB72e,QAAQg3e,IAAc,EAIxDx5G,GAAgBq5G,EAAiBG,IAGjCxH,EAAa/2b,EAAMy+b,iBAAiBnmW,GACpCt4F,EAAMq9b,YAAYkB,GAAaxH,EAC/BuH,EAAiBvH,EAAWnyG,SAC5B45G,EAAiBpoe,YAAYkoe,IAEjCD,EAAgBn8e,KAAKq8e,MAGzBjgf,KAAKm/e,gCAAgCW,GAChB9/e,KAAKoqY,mBAAmByvC,mBACzB,CAChB,IAAI2rD,EAAoBua,EAAgBt2e,IAAI,SAAUuc,GAAM,OAAO07B,EAAMq9b,YAAY/4d,GAAIsgX,WACzFlF,EAAiBphY,KAAKsmY,SAAUk/F,KAGxCsZ,EAAcpsd,UAAUytd,iBAAmB,SAAUC,GACjD,IAAIxjd,EACJ,OAAQ58B,KAAKU,MACT,KAAK4od,GAAc+2B,OACfzjd,EAAS,IAAI+6c,GAAkByI,EAAkBpgf,KAAKujd,WAAYvjd,KAAKuuW,QACvE,MACJ,KAAK+6G,GAAcg3B,aACf1jd,EAAS,IAAI89c,GAAuB0F,EAAkBpgf,KAAKujd,WAAYvjd,KAAKuuW,QAC5E,MACJ,KAAK+6G,GAAcu2B,gBACfjjd,EAAS,IAAI+/c,GAAsByD,GAI3C,OADApgf,KAAKqkJ,aAAa+1P,SAASx9W,GACpBA,GAEXgid,GAAa,CACTjiG,GAAU,uBACXmiG,EAAcpsd,UAAW,0BAAsB,GAClDksd,GAAa,CACTjiG,GAAU,qBACXmiG,EAAcpsd,UAAW,wBAAoB,GAChDksd,GAAa,CACTjiG,GAAU,iBACXmiG,EAAcpsd,UAAW,oBAAgB,GAC5Cksd,GAAa,CACTtiG,IACDwiG,EAAcpsd,UAAW,OAAQ,MAC7Bosd,EAxNwB,CAyNjC1sd,IAQEmud,GAAsD,SAAU12W,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D02W,GAAsC,WACtC,SAASA,EAAqBjyI,EAAQ8yB,GAClCrhY,KAAKygf,gBAAiB,EACtBzgf,KAAK0gf,iBAAkB,EACvB1gf,KAAKuuW,OAASA,EACdvuW,KAAKqhY,WAAaA,EAClBrhY,KAAK2gf,iBAAmBvuY,GAAE8rR,OAAO3vB,GA0WrC,OAxWAiyI,EAAqB9td,UAAU03c,iBAAmB,SAAUtiB,GACxD9nd,KAAK8nd,UAAYA,GAErB04B,EAAqB9td,UAAU4yQ,KAAO,WAClCtlS,KAAK+4Y,OAAS/4Y,KAAK49Y,cAAct4Y,OAAO,yBAE5Ck7e,EAAqB9td,UAAUoxb,YAAc,WACzC,OAAO9jd,KAAKuuW,OAASuyG,GAAmBqF,YAAcrF,GAAmBsF,WAE7Eo6B,EAAqB9td,UAAUixb,YAAc,SAAUb,GAEnD,IAAI39c,EAAU29c,EAAcP,SAASp9c,QAErC,GAD4B29c,EAAclB,WAAWlhd,OAAS28B,EAAQojb,eAAemgC,UAGjF5gf,KAAKgia,kBAAkB78Z,GAAS,EAAM,uBAErC,CAKD,IAAI07e,EAAiB/9B,EAAcP,SAAS+2B,aACxClrE,EAAiBjpa,EAAQgQ,OAAO,SAAU3P,GAAU,OAAOq7e,EAAer7e,EAAOy7Y,WACrFjhZ,KAAKgia,kBAAkBoM,GAAgB,EAAM,mBAEjDpua,KAAKkia,iBAAiB/8Z,EAASnF,KAAKuuW,OAAQ,mBAC5CvuW,KAAKiid,WAAWa,GAAe,IAEnC09B,EAAqB9td,UAAUqxb,YAAc,SAAUjB,GAEnD,IADwB9id,KAAKoqY,mBAAmBitC,oCAAsCyrC,EAAcG,UAC9E,CAClB,IAAIV,EAAWO,EAAclB,WAAWY,cAExCxid,KAAKgia,kBADSugD,EAASp9c,SACS,EAAO,mBAE3CnF,KAAK8gf,yBAETN,EAAqB9td,UAAUsvY,kBAAoB,SAAU78Z,EAAS4uL,EAASxtK,GAE3E,QADe,IAAXA,IAAqBA,EAAS,OAC9BphB,EAAS,CACT,IAAI47e,EAAc57e,EAAQgQ,OAAO,SAAUy6B,GAAK,OAAQA,EAAEmgW,YAAY7+B,cACtElxW,KAAKujb,iBAAiBvhB,kBAAkB++E,EAAahtT,EAASxtK,KAGtEi6d,EAAqB9td,UAAUwvY,iBAAmB,SAAU/8Z,EAASopW,EAAQhoV,GAEzE,QADe,IAAXA,IAAqBA,EAAS,OAC9BphB,EAAS,CACT,IAAI47e,EAAc57e,EAAQgQ,OAAO,SAAUy6B,GAAK,OAAQA,EAAEmgW,YAAY5+B,aACtEnxW,KAAKujb,iBAAiBrhB,iBAAiB6+E,EAAaxyI,EAAQhoV,KAGpEi6d,EAAqB9td,UAAUsvb,WAAa,WACxChid,KAAK8gf,yBAETN,EAAqB9td,UAAUsud,WAAa,SAAUzld,GAUlD,OARIv7B,KAAKoqY,mBAAmBme,gBAExBhtX,EADkBv7B,KAAKqhY,WAAWtuT,YAChBx3C,GAGlBv7B,KAAK2gf,kBACLpld,GAAKv7B,KAAK8nd,UAAUm5B,+BAEjB1ld,GAEXild,EAAqB9td,UAAUwud,wBAA0B,SAAUC,GAC/D,GAAInhf,KAAK2gf,gBAAiB,CAGtB,IAAIS,EAAoBphf,KAAK8nd,UAAUm5B,8BACnCI,EAAmBD,EAAoBphf,KAAK8nd,UAAUw5B,iBACtDthf,KAAKoqY,mBAAmBme,eACxBvoZ,KAAK0gf,gBAAkBS,EAAsBC,EAAoB,GACjEphf,KAAKygf,eAAiBU,EAAsBE,EAAmB,KAG/Drhf,KAAKygf,eAAiBU,EAAsBC,EAAoB,GAChEphf,KAAK0gf,gBAAkBS,EAAsBE,EAAmB,IAEhErhf,KAAKygf,gBAAkBzgf,KAAK0gf,gBAC5B1gf,KAAKuhf,wBAGLvhf,KAAK8gf,0BAIjBN,EAAqB9td,UAAUuvb,WAAa,SAAUa,EAAe0+B,GACjE,IAAI9/b,EAAQ1hD,KAIZ,QAHkB,IAAdwhf,IAAwBA,GAAY,GACxCxhf,KAAKyhf,kBAAoB3+B,GAErB1wW,GAAEgsR,QAAQ0kF,EAAcI,YAA5B,CAGA,IAAIw+B,EAAmB1hf,KAAKghf,WAAWl+B,EAAcvnb,GAIhDimd,GACDxhf,KAAKkhf,wBAAwBQ,GAEjC,IAAIC,EAAuB3hf,KAAK4hf,mBAAmB9+B,EAAcI,YAC7D2+B,EAAiB/+B,EAAclB,WAAWlhd,KAC1Cs/Z,EAAgB8iD,EAAclB,WAAWY,cAAcr9c,QAC3D66Z,EAAgBA,EAAc7qZ,OAAO,SAAU8rF,GAC3C,OAAIA,EAAI8uS,YAAY5+B,YAGTlwQ,EAAIykT,aAAehkW,EAAM6sT,SAOxCvuW,KAAK8hf,mBAAmBD,EAAgB7hF,EAAe2hF,EAAsBD,EAAkBF,KAEnGhB,EAAqB9td,UAAUkvd,mBAAqB,SAAU1+B,GAC1D,IAAIljd,KAAKoqY,mBAAmBme,cAQxB,OAAO26D,EAPP,OAAQA,GACJ,KAAK7lb,EAAQsjb,oBAAoBmE,KAAM,OAAOznb,EAAQsjb,oBAAoBoE,MAC1E,KAAK1nb,EAAQsjb,oBAAoBoE,MAAO,OAAO1nb,EAAQsjb,oBAAoBmE,KAC3E,QAAS/5a,QAAQ/V,MAAM,8BAAgCkub,KASnEs9B,EAAqB9td,UAAUqvd,kBAAoB,SAAUC,GACzD,IAAIC,EAAWjif,KAAKujb,iBAAiB1hB,oBACjCtjK,EAAUnsJ,GAAEi1R,gBAAgB26G,EAAWv4e,IAAI,SAAUw3F,GAAO,OAAOghZ,EAASh5e,QAAQg4F,MACpFf,EAAaq+J,EAAQ,GAIzB,OAHgBnsJ,GAAEj7F,KAAKonP,GACEr+J,GACEq+J,EAAQp6P,OAAS,EACzB,KAAO+7F,GAE9BsgZ,EAAqB9td,UAAUovd,mBAAqB,SAAUD,EAAgBK,EAAkBh/B,EAAYi/B,EAAQX,GAChH,IAAIY,EAAel/B,IAAe7lb,EAAQsjb,oBAAoBmE,KAC1Du9B,EAAgBn/B,IAAe7lb,EAAQsjb,oBAAoBoE,MAC3Du9B,EAAatif,KAAKuif,oBAAoBL,EAAkBG,EAAeF,GAGvE3/E,EAAWxia,KAAK+hf,kBAAkBG,GACtC,GAA0B,IAAtBI,EAAWn+e,OAAf,CAGA,IAAIq+e,EAAiBF,EAAW,GAS5BG,EAAkC,OAAbjgF,IAAsBg/E,EAK/C,GAHIK,GAAkBxkd,EAAQojb,eAAe24B,aACzCqJ,EAAkC,OAAbjgF,GAErBigF,EAAoB,CAEpB,GAAIL,GAAgBI,GAAkBhgF,EAClC,OAGJ,GAAI6/E,GAAiBG,GAAkBhgF,EACnC,OAGR,IAAK,IAAI36Z,EAAI,EAAGA,EAAIy6e,EAAWn+e,OAAQ0D,IAAK,CACxC,IAAIsK,EAAOmwe,EAAWz6e,GACtB,GAAK7H,KAAKujb,iBAAiBrjB,kBAAkBgiF,EAAkB/ve,GAK/D,YAFAnS,KAAKujb,iBAAiB1jB,YAAYqiF,EAAkB/ve,EAAM,sBAKlEque,EAAqB9td,UAAU6vd,oBAAsB,SAAUP,EAAYK,EAAeF,GAEtF,GADoBnif,KAAKoqY,mBAAmBqyC,4BAA8BulE,EAAW55e,KAAK,SAAU64F,GAAO,OAAOA,EAAI8uS,YAAYh/B,kBAE9H,MAAO,GAGX,IAoCIyxI,EApCAE,EAAmB1if,KAAKujb,iBAAiB/hB,oBAAoBxha,KAAKuuW,QAGlEo0I,EAAc3if,KAAKujb,iBAAiB1hB,oBACpC+gF,EAAsBF,EAAiBvte,OAAO,SAAU8rF,GAAO,OAAOmR,GAAEmlJ,SAASyqP,EAAY/gZ,KAC7F4hZ,EAAqBH,EAAiBvte,OAAO,SAAU8rF,GAAO,OAAQmR,GAAEmlJ,SAASyqP,EAAY/gZ,KAC7F6hZ,EAAgBH,EAAYxte,OAAO,SAAU8rF,GAAO,OAAQmR,GAAEmlJ,SAASyqP,EAAY/gZ,KAInF8hZ,EAAe,EACfzoZ,EAAiB6nZ,EAGrB,GAAIE,EAAe,CACf,IAAIW,EAA+B,EACnCJ,EAAoBvve,QAAQ,SAAU4tF,GAAO,OAAO+hZ,GAAgC/hZ,EAAI8kT,mBACxFzrT,GAAkB0oZ,EAEtB,GAAI1oZ,EAAiB,EAAG,CAEpB,IAAK,IAAIzyF,EAAI,EAAGA,EAAIg7e,EAAmB1+e,WAEnCm2F,GADUuoZ,EAAmBh7e,GACPk+Y,kBACD,GAHsBl+Y,IAM3Ck7e,IAGAV,GACAU,IAMJA,EAAe,EAEfP,EAAiBM,EAAc75e,QADd45e,EAAmBE,EAAe,IACE,GAI7B,KADxBP,EAAiBM,EAAc75e,QAAQ45e,EAAmB,OAEtDL,EAAiB,GAGzB,IAAIF,EAAa,CAACE,GAWlB,GAAIH,EAKA,IAFA,IAAI14G,EAAU64G,EAAiB,EAC3BpiZ,EAAYuiZ,EAAYx+e,OAAS,EAC9BwlY,GAAWvpS,GACdkiZ,EAAW1+e,KAAK+lY,GAChBA,QAGH,CAOGvpS,EAAYuiZ,EAAYx+e,OAAS,EAErC,IAHA,IAEI8+e,EAAeN,EAFfh5G,EAAU64G,GAGP74G,GAAWvpS,GAAapgG,KAAKkjf,eAAeR,EAAkBO,IACjEt5G,IACA24G,EAAW1+e,KAAK+lY,GAChBs5G,EAAeN,EAAYh5G,GAK/B,IAFAA,EAAU64G,EAAiB,EAEpB74G,GADiB,GAEpB24G,EAAW1+e,KAAK+lY,GAChBA,IAGR,OAAO24G,GAGX9B,EAAqB9td,UAAUwwd,eAAiB,SAAUvoF,EAAkB15T,GACxE,OAAO05T,EAAiB1xZ,QAAQg4F,GAAO,GAE3Cu/Y,EAAqB9td,UAAU6ud,sBAAwB,WAC9Cvhf,KAAKmjf,mBACNnjf,KAAKojf,cAAgB,EACrBpjf,KAAKqjf,mBAAqB,EAC1Brjf,KAAKmjf,iBAAmBh4d,OAAO+gH,YAAYlsI,KAAKsjf,aAAa/4c,KAAKvqC,MAAO,KAErEA,KAAKund,mBAAmB1D,aADxB7jd,KAAKygf,eACgC3/B,GAAmBuF,UAGnBvF,GAAmBwF,YAHW,KAO/Ek6B,EAAqB9td,UAAUoud,sBAAwB,WAC/C9gf,KAAKsjf,eACLn4d,OAAOihH,cAAcpsI,KAAKmjf,kBAC1Bnjf,KAAKmjf,iBAAmB,KACxBnjf,KAAKund,mBAAmB1D,aAAa/C,GAAmBsF,aAGhEo6B,EAAqB9td,UAAU4wd,aAAe,WAG1C,IAAIC,EAMAC,EAOJ,GAZAxjf,KAAKojf,iBACLG,EAAe,GAA2B,EAArBvjf,KAAKojf,eACP,MACfG,EAAe,KAGfvjf,KAAKygf,eACL+C,EAAcxjf,KAAK8nd,UAAU27B,oBAAoBF,GAE5Cvjf,KAAK0gf,kBACV8C,EAAcxjf,KAAK8nd,UAAU27B,mBAAmBF,IAEhC,IAAhBC,EACAxjf,KAAKiid,WAAWjid,KAAKyhf,mBACrBzhf,KAAKqjf,mBAAqB,MAEzB,CAGDrjf,KAAKqjf,qBACL,IACIK,EADU1jf,KAAKyhf,kBAAkBl/B,SAASp9c,QACdgQ,OAAO,SAAUy6B,GAAK,OAAQA,EAAEmgW,YAAY5+B,aACxEuyI,EAAkBv/e,OAAS,IAC3BnE,KAAKund,mBAAmB1D,aAAa/C,GAAmBqF,aACpDnmd,KAAKqjf,mBAAqB,IAE1Brjf,KAAKkia,iBAAiBwhF,EADR1jf,KAAKygf,eAAiBnwG,GAAUoD,YAAcpD,GAAUmD,aACpB,mBAClDzzY,KAAKund,mBAAmBlF,YAKxCk+B,GAAa,CACT5jG,GAAU,kBACX6jG,EAAqB9td,UAAW,qBAAiB,GACpD6td,GAAa,CACT5jG,GAAU,qBACX6jG,EAAqB9td,UAAW,wBAAoB,GACvD6td,GAAa,CACT5jG,GAAU,uBACX6jG,EAAqB9td,UAAW,0BAAsB,GACzD6td,GAAa,CACT5jG,GAAU,uBACX6jG,EAAqB9td,UAAW,0BAAsB,GACzD6td,GAAa,CACTjkG,IACDkkG,EAAqB9td,UAAW,OAAQ,MACpC8td,EAhX+B,GAyXtCmD,GAAsD,SAAU95W,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D85W,GAAqC,WACrC,SAASA,EAAoBr1I,GACzBvuW,KAAK6jf,mBAAqB,GAC1B7jf,KAAK8jf,eAAiB,GACtB9jf,KAAK+jf,eAAiB,GACtB/jf,KAAKuuW,OAASA,EAsElB,OAnEAq1I,EAAoBlxd,UAAUixb,YAAc,SAAUb,GAClD,IAAIpha,EAAQ1hD,KACZA,KAAKgkf,mBAEDhkf,KAAKoqY,mBAAmB2zC,uBAGV+kC,EAAcP,SAASp9c,QAC7BkO,QAAQ,SAAU7N,GAErBA,EAAO07Y,cAGR17Y,EAAOyhZ,wBAGPzhZ,EAAO8hZ,eACP5lW,EAAMmic,mBAAmBjgf,KAAK4B,GAEzBA,EAAO6hZ,kBACZ3lW,EAAMoic,eAAelgf,KAAK4B,GAErBA,EAAO6hZ,mBACZ3lW,EAAMqic,eAAengf,KAAK4B,QAItCo+e,EAAoBlxd,UAAUoxb,YAAc,WAExC,OADmB9jd,KAAK6jf,mBAAmB1/e,OAASnE,KAAK8jf,eAAe3/e,OAASnE,KAAK+jf,eAAe5/e,OAClF,EACRnE,KAAKuuW,OAASuyG,GAAmBqF,YAAcrF,GAAmBsF,UAGlE,MAIfw9B,EAAoBlxd,UAAUqxb,YAAc,SAAUjB,GAElD9id,KAAKgkf,oBAETJ,EAAoBlxd,UAAUsxd,iBAAmB,WAC7Chkf,KAAK6jf,mBAAmB1/e,OAAS,EACjCnE,KAAK8jf,eAAe3/e,OAAS,EAC7BnE,KAAK+jf,eAAe5/e,OAAS,GAGjCy/e,EAAoBlxd,UAAUuvb,WAAa,SAAUa,KAGrD8gC,EAAoBlxd,UAAUsvb,WAAa,SAAUc,GAC7C9id,KAAK6jf,mBAAmB1/e,OAAS,GACjCnE,KAAKujb,iBAAiBlmB,gBAAgBr9Z,KAAK6jf,mBAAoB,wBAE/D7jf,KAAK8jf,eAAe3/e,OAAS,GAC7BnE,KAAKujb,iBAAiB9mB,mBAAmBz8Z,KAAK8jf,eAAgB,wBAE9D9jf,KAAK+jf,eAAe5/e,OAAS,GAC7BnE,KAAKujb,iBAAiB3mB,gBAAgB58Z,KAAK+jf,eAAgB,yBAGnEJ,GAAa,CACThnG,GAAU,qBACXinG,EAAoBlxd,UAAW,wBAAoB,GACtDixd,GAAa,CACThnG,GAAU,uBACXinG,EAAoBlxd,UAAW,0BAAsB,GACjDkxd,EA3E8B,GAoFrCK,GAAsD,SAAUp6W,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAW+0W,GACPA,EAASA,EAAQ,WAAiB,GAAK,aACvCA,EAASA,EAAQ,MAAY,GAAK,QAFtC,CAGGA,KAAaA,GAAW,KAC3B,IAgQQz1W,GAq8CAA,GA2xGAA,GAo8CAA,GA+MAA,GAiSAA,GA0SAA,GA+HAA,GA+oCAA,GAkRAA,GAoSAA,GAkBJ86W,GAphSAC,GAAgC,WAChC,SAASA,EAAe51I,EAAQ8yB,GAC5BrhY,KAAKokf,cAAgB,GACrBpkf,KAAKuuW,OAASA,EACdvuW,KAAKqhY,WAAaA,EAwFtB,OAtFA8iH,EAAezxd,UAAU03c,iBAAmB,SAAUtiB,GAGlD,OAFA9nd,KAAK8nd,UAAYA,EACjB9nd,KAAKqkf,qBAAqBja,iBAAiBtiB,GACnC9nd,KAAKuuW,QACT,KAAK+hC,GAAUoD,YACX1zY,KAAKskf,qBAAuBtkf,KAAK8nd,UAAUy8B,8BAC3C,MACJ,KAAKj0G,GAAUmD,aACXzzY,KAAKskf,qBAAuBtkf,KAAK8nd,UAAU08B,+BAC3C,MACJ,QACIxkf,KAAKskf,qBAAuBtkf,KAAK8nd,UAAU28B,gCAIvDN,EAAezxd,UAAU2xb,eAAiB,SAAU3jd,GAChD,OAAOA,IAAS28B,EAAQojb,eAAe24B,YAClC14e,IAAS28B,EAAQojb,eAAemgC,WAAa5gf,KAAKoqY,mBAAmBosC,mCAE9E2tE,EAAezxd,UAAUyxb,uBAAyB,WAC9C,OAAOnkd,KAAKskf,sBAEhBH,EAAezxd,UAAU8hQ,aAAe,WACpC,OAAOx0R,KAAKqhY,YAEhB8iH,EAAezxd,UAAU4yQ,KAAO,WAC5BtlS,KAAKqkf,qBAAuB,IAAI7D,GAAqBxgf,KAAKuuW,OAAQvuW,KAAKqhY,YACvErhY,KAAKwR,QAAQ4oY,SAASp6Y,KAAKqkf,sBAC3B,IAAIK,EAAsB,IAAId,GAAoB5jf,KAAKuuW,QACvDvuW,KAAKwR,QAAQ4oY,SAASsqG,GACtB1kf,KAAKokf,cAAcvF,GAAS8F,YAAc3kf,KAAKqkf,qBAC/Crkf,KAAKokf,cAAcvF,GAAS+F,OAASF,EACrC1kf,KAAKund,mBAAmBjD,cAActkd,OAE1Cmkf,EAAezxd,UAAUoxb,YAAc,WACnC,OAAO9jd,KAAK6kf,oBAAoB/gC,eAKpCqgC,EAAezxd,UAAUoyd,YAAc,SAAUhiC,GAC7C,OAAI9id,KAAKujb,iBAAiB5tB,eAIlBmtD,EAAclB,WAAWlhd,OAAS28B,EAAQojb,eAAemgC,UAClD/B,GAAS+F,MAKjB/F,GAAS8F,YAEpBR,EAAezxd,UAAUixb,YAAc,SAAUb,GAK7C,IAAIiiC,EAAW/kf,KAAK8kf,YAAYhiC,GAChC9id,KAAK6kf,oBAAsB7kf,KAAKokf,cAAcW,GAC9C/kf,KAAK6kf,oBAAoBlhC,YAAYb,IAEzCqhC,EAAezxd,UAAUqxb,YAAc,SAAUj6X,GAC7C9pF,KAAK6kf,oBAAoB9gC,YAAYj6X,IAEzCq6Z,EAAezxd,UAAUuvb,WAAa,SAAUn4X,GAC5C9pF,KAAK6kf,oBAAoB5iC,WAAWn4X,IAExCq6Z,EAAezxd,UAAUsvb,WAAa,SAAUl4X,GAC5C9pF,KAAK6kf,oBAAoB7iC,WAAWl4X,IAExCm6Z,GAAa,CACTtnG,GAAU,YACXwnG,EAAezxd,UAAW,eAAW,GACxCuxd,GAAa,CACTtnG,GAAU,uBACXwnG,EAAezxd,UAAW,0BAAsB,GACnDuxd,GAAa,CACTtnG,GAAU,qBACXwnG,EAAezxd,UAAW,wBAAoB,GACjDuxd,GAAa,CACTtnG,GAAU,uBACXwnG,EAAezxd,UAAW,0BAAsB,GACnDuxd,GAAa,CACT3nG,IACD6nG,EAAezxd,UAAW,OAAQ,MAC9Byxd,EA5FyB,GAqGhCa,GAAsD,SAAUn7W,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dm7W,GAAiC,WACjC,SAASA,EAAgB5jH,EAAY6jH,EAAW32I,GAC5CvuW,KAAKmlf,eAAiB,GACtBnlf,KAAK6yD,OAAS,GACd7yD,KAAKqhY,WAAaA,EAClBrhY,KAAKuuW,OAASA,EACdvuW,KAAKklf,UAAYA,EAqIrB,OAnIAD,EAAgBvyd,UAAU03c,iBAAmB,SAAUtiB,GACnD9nd,KAAKolf,iBAAiBt9B,IAE1Bm9B,EAAgBvyd,UAAUusd,qBAAuB,SAAUhsd,GACvDjzB,KAAKmlf,eAAe9xe,QAAQ,SAAUgye,GAAiB,OAAOA,EAAcpG,qBAAqBhsd,MAErGgyd,EAAgBvyd,UAAU4yQ,KAAO,WAC7BtlS,KAAK64E,YAAc74E,KAAKoqY,mBAAmB3M,oBAG3Cz9X,KAAK6yD,OAAS,CACV7yD,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOQ,2BAA4BvvZ,KAAKslf,qBAAqB/6c,KAAKvqC,OACrGA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOI,+BAAgCnvZ,KAAKulf,wBAAwBh7c,KAAKvqC,OAC5GA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOO,2BAA4BtvZ,KAAKyje,qBAAqBl5b,KAAKvqC,OACrGA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOmE,gCAAiClzZ,KAAKwlf,0BAA0Bj7c,KAAKvqC,OAC/GA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOa,qBAAsB5vZ,KAAKsje,gBAAgB/4b,KAAKvqC,OAC1FA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOc,gCAAiC7vZ,KAAKoje,0BAA0B74b,KAAKvqC,SAKvHilf,EAAgBvyd,UAAU6yd,wBAA0B,WAChDvlf,KAAKyje,wBAGTwhB,EAAgBvyd,UAAU4yd,qBAAuB,WAC7Ctlf,KAAKyje,wBAETwhB,EAAgBvyd,UAAU4wc,gBAAkB,WACxCtje,KAAKylf,6BAETR,EAAgBvyd,UAAU0wc,0BAA4B,WAClDpje,KAAKylf,6BAETR,EAAgBvyd,UAAU8yd,0BAA4B,WAClDxlf,KAAKylf,6BAETR,EAAgBvyd,UAAU+yd,0BAA4B,WAClD,IAAIxV,EAAcjwe,KAAKuuW,SAAW+hC,GAAUoD,YACxCw8F,EAAelwe,KAAKuuW,SAAW+hC,GAAUmD,aACzC1hL,EAAa/xN,KAAKujb,iBAClBr6a,EAAQlJ,KAAKoqY,mBAAmBme,cACpC,GAAI0nF,GAAeC,EAAc,CAE7B,IAAIxme,EAAQqoN,EAAWk+Q,EAAc,8BAAgC,kCAIxCjwe,KAAK0lf,qBAAqBniH,4BAA+Br6X,GAAS+me,IAAkB/me,GAASgne,KAEtHxme,GAAS1J,KAAK64E,aAElB4oT,EAAczhY,KAAKqhY,WAAY33X,KAGvCu7e,EAAgBvyd,UAAUxR,QAAU,WAChClhB,KAAK2lf,uBACD3lf,KAAK6yD,OAAO1uD,SACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC7Cj3C,KAAK6yD,OAAS,KAGtBoyb,EAAgBvyd,UAAUkzd,YAAc,WACpC,OAAO5lf,KAAKmlf,gBAIhBF,EAAgBvyd,UAAU+wc,qBAAuB,WAC7Czje,KAAK6lf,8BAETZ,EAAgBvyd,UAAUmzd,2BAA6B,WACnD7lf,KAAK2lf,uBACL3lf,KAAK8lf,wBAGTb,EAAgBvyd,UAAU2jU,QAAU,WAChCr2V,KAAK6lf,8BAETZ,EAAgBvyd,UAAU0yd,iBAAmB,SAAUW,GACnD,IACIC,EAAiB,IAAI7B,GAAenkf,KAAKuuW,OADzBvuW,KAAKklf,UAAYllf,KAAKklf,UAAYllf,KAAKqhY,YAE3DrhY,KAAKwR,QAAQ4oY,SAAS4rG,GACtBA,EAAe5b,iBAAiB2b,IAEpCd,EAAgBvyd,UAAUizd,qBAAuB,WAC7C3lf,KAAKmlf,eAAe9xe,QAAQ,SAAUgye,GAAiB,OAAOA,EAAcnke,YAC5ElhB,KAAKmlf,eAAehhf,OAAS,EAC7B68X,EAAahhY,KAAKqhY,aAEtB4jH,EAAgBvyd,UAAUozd,qBAAuB,WAI7C,IADA,IAAIG,EAAWjmf,KAAKujb,iBAAiBvpB,oBAC5BrN,EAAO,EAAGA,EAAOs5F,EAAUt5F,IAAQ,CACxC,IAEI04F,EAAgB,IAAIvG,GAAcnyF,EAFvBA,IAAUs5F,EAAW,EACd38B,GAAcg3B,aAAeh3B,GAAc+2B,OACfrgf,KAAKuuW,OAAQvuW,KAAKujd,YACpEvjd,KAAKwR,QAAQ4oY,SAASirG,GACtBrlf,KAAKmlf,eAAevhf,KAAKyhf,GACzBA,EAAc/+G,SAASz3X,aAAa,gBAAiB7O,KAAKmlf,eAAehhf,OAAO8tB,YAChFjyB,KAAKqhY,WAAWvpX,YAAYute,EAAc/+G,WAEzCtmY,KAAKujb,iBAAiB5tB,eAAiB31Z,KAAKujb,iBAAiB9T,uBAC1D41E,EAAgB,IAAIvG,GAAcmH,EAAU38B,GAAcu2B,gBAAiB7/e,KAAKuuW,OAAQvuW,KAAKujd,YACjGvjd,KAAKwR,QAAQ4oY,SAASirG,GACtBrlf,KAAKmlf,eAAevhf,KAAKyhf,GACzBA,EAAc/+G,SAASz3X,aAAa,gBAAiB7O,KAAKmlf,eAAehhf,OAAO8tB,YAChFjyB,KAAKqhY,WAAWvpX,YAAYute,EAAc/+G,YAGlD0+G,GAAa,CACTroG,GAAU,uBACXsoG,EAAgBvyd,UAAW,0BAAsB,GACpDsyd,GAAa,CACTroG,GAAU,YACXsoG,EAAgBvyd,UAAW,eAAW,GACzCsyd,GAAa,CACTroG,GAAU,qBACXsoG,EAAgBvyd,UAAW,wBAAoB,GAClDsyd,GAAa,CACTroG,GAAU,iBACXsoG,EAAgBvyd,UAAW,oBAAgB,GAC9Csyd,GAAa,CACTroG,GAAU,yBACXsoG,EAAgBvyd,UAAW,4BAAwB,GACtDsyd,GAAa,CACT1oG,IACD2oG,EAAgBvyd,UAAW,OAAQ,MACtCsyd,GAAa,CACTxoG,IACDyoG,EAAgBvyd,UAAW,UAAW,MAClCuyd,EA3I0B,GAoJjCiB,IACI98W,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF28W,GAAsD,SAAUt8W,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Ds8W,GAAgC,SAAU5ta,GAE1C,SAAS4ta,IACL,OAAO5ta,EAAOtjD,KAAKl1B,KAAMomf,EAAez7D,WAAa3qb,KAsHzD,OAxHAkmf,GAAYE,EAAgB5ta,GAI5B4ta,EAAe1zd,UAAU03c,iBAAmB,SAAUtiB,GAClD9nd,KAAK8nd,UAAYA,EACjB9nd,KAAKqmf,gBAAgBhze,QAAQ,SAAUu8B,GAAK,OAAOA,EAAEw6b,iBAAiBtiB,MAE1Es+B,EAAe1zd,UAAUk7Z,cAAgB,WACrC,IAAIlsY,EAAQ1hD,KACZA,KAAK4rd,YAAc5rd,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBACxErzY,KAAKmjZ,QAAQmjG,uBAAuBtmf,MACpCA,KAAKk5Z,oBAAoBotF,uBAAuBtmf,MAChD,IAAI2gf,EAAkB,IAAIsE,GAAgBjlf,KAAKumf,iBAAkBvmf,KAAKwmf,gBAAiB,MACnFC,EAAsB,IAAIxB,GAAgBjlf,KAAK0mf,kBAAmB,KAAMp2G,GAAUoD,aAClFizG,EAAuB,IAAI1B,GAAgBjlf,KAAK4mf,mBAAoB,KAAMt2G,GAAUmD,cACxFzzY,KAAKqmf,gBAAkB,CAAC1F,EAAiB8F,EAAqBE,GAC9D3mf,KAAKqmf,gBAAgBhze,QAAQ,SAAUgF,GAAa,OAAOqpC,EAAM2iG,aAAa+1P,SAAS/hY,KAEvFrY,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOQ,2BAA4BvvZ,KAAK6mf,cAAct8c,KAAKvqC,OAC/GA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBQ,gBAAiB1za,KAAK0qe,mBAAmBngc,KAAKvqC,OAE3HA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOG,gCAAiClvZ,KAAK8mf,mBAAmBv8c,KAAKvqC,OACzHA,KAAK8mf,qBACL9mf,KAAK+mf,yBACD/mf,KAAKujb,iBAAiB5b,WACtB3na,KAAK6mf,iBAGbT,EAAe1zd,UAAUg4c,mBAAqB,WAC1C,IAAIx4V,EAAWlyI,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBAChErzY,KAAK4rd,cAAgB15U,IACrBlyI,KAAK4rd,YAAc15U,EACnBlyI,KAAK6mf,kBAGbT,EAAe1zd,UAAUs0d,oBAAsB,SAAUn8e,GACrD7K,KAAKumf,iBAAiBh7e,MAAMo2B,UAAY,cAAgB92B,EAAS,OAErEu7e,EAAe1zd,UAAUusd,qBAAuB,SAAUhsd,GACtDjzB,KAAKqmf,gBAAgBhze,QAAQ,SAAU4ze,GAAkB,OAAOA,EAAehI,qBAAqBhsd,MAExGmzd,EAAe1zd,UAAUxR,QAAU,WAC/BlhB,KAAKqmf,gBAAgBhze,QAAQ,SAAUgF,GAAa,OAAOA,EAAU6I,YACrEs3D,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElComf,EAAe1zd,UAAUm0d,cAAgB,WACrC7mf,KAAKqmf,gBAAgBhze,QAAQ,SAAUgF,GAAa,OAAOA,EAAUg+U,aAEzE+vJ,EAAe1zd,UAAUo0d,mBAAqB,WAC1C,IAAIrnI,EAAYz/W,KAAKujb,iBAAiB5tB,cACtCp1B,EAAoBvgY,KAAKsmY,SAAU,cAAe7mB,GAClD8gB,EAAoBvgY,KAAKsmY,SAAU,gBAAiB7mB,IAExD2mI,EAAe1zd,UAAUywT,UAAY,SAAU34U,GAG3C,IAAI08e,EAAK18e,EAAS,EAAI,KACtBxK,KAAKsmY,SAAS/6X,MAAMf,OAAS08e,EAC7Blnf,KAAKsmY,SAAS/6X,MAAMy8B,UAAYk/c,GAKpCd,EAAe1zd,UAAUq0d,uBAAyB,WAC9C,IAAIrlc,EAAQ1hD,KACZA,KAAKymb,4BAA4Bzmb,KAAKwmf,gBAAiB,SAAU,WAI7D,IAAI9ta,EAAah3B,EAAM8kc,gBAAgB9ta,WACpB,IAAfA,IACAh3B,EAAMoma,UAAU27B,mBAAmB/qa,GACnCh3B,EAAM8kc,gBAAgB9ta,WAAa,MAI/C0ta,EAAe1zd,UAAUy0d,wBAA0B,SAAUz9e,GACzD1J,KAAKumf,iBAAiBh7e,MAAM7B,MAAQA,EAAQ,MAEhD08e,EAAe1zd,UAAU00d,eAAiB,SAAUrzT,GAChD8sM,EAAa7gY,KAAK0mf,kBAAmB3yT,IAEzCqyT,EAAe1zd,UAAU20d,gBAAkB,SAAUtzT,GACjD8sM,EAAa7gY,KAAK4mf,mBAAoB7yT,IAE1CqyT,EAAe1zd,UAAUsnY,kBAAoB,WACzC,OAAuC,IAAhCh6Z,KAAKqmf,gBAAgBlif,OAAe,EAAInE,KAAKqmf,gBAAgB,GAAGT,cAAczhf,QAEzFiif,EAAez7D,SAAW,4dAC1Bw7D,GAAa,CACTj8D,GAAY,sBACbk8D,EAAe1zd,UAAW,yBAAqB,GAClDyzd,GAAa,CACTj8D,GAAY,uBACbk8D,EAAe1zd,UAAW,0BAAsB,GACnDyzd,GAAa,CACTj8D,GAAY,qBACbk8D,EAAe1zd,UAAW,wBAAoB,GACjDyzd,GAAa,CACTj8D,GAAY,oBACbk8D,EAAe1zd,UAAW,uBAAmB,GAChDyzd,GAAa,CACTxpG,GAAU,uBACXypG,EAAe1zd,UAAW,0BAAsB,GACnDyzd,GAAa,CACTxpG,GAAU,qBACXypG,EAAe1zd,UAAW,wBAAoB,GACjDyzd,GAAa,CACTxpG,GAAU,iBACXypG,EAAe1zd,UAAW,oBAAgB,GAC7Cyzd,GAAa,CACTxpG,GAAU,YACXypG,EAAe1zd,UAAW,eAAW,GACxCyzd,GAAa,CACTxpG,GAAU,wBACXypG,EAAe1zd,UAAW,2BAAuB,GACpDyzd,GAAa,CACT7pG,IACD8pG,EAAe1zd,UAAW,gBAAiB,MACvC0zd,EAzHyB,CA0HlCh0d,IAQEk1d,GAAsD,SAAUz9W,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dy9W,GAA+B,WAC/B,SAASA,IACLvnf,KAAKwnf,WAAa,IAAI/5e,IACtBzN,KAAKynf,YAAc,KACnBznf,KAAK0nf,iBAAmB,KAMxB1nf,KAAK+wd,wBAAyB,EAC9B/wd,KAAK2nf,wBAA0B,GAqbnC,IAAIC,EAyCJ,OA5dAA,EAAkBL,EAClBA,EAAc70d,UAAU4yQ,KAAO,WAC3BtlS,KAAK2nf,wBAA0B,CAC3B3nf,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOiB,uBAAwBhwZ,KAAKmwb,gBAAgB5lZ,KAAKvqC,OAC5FA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOE,yBAA0BjvZ,KAAK6nf,mBAAmBt9c,KAAKvqC,QAErGA,KAAKynf,YAAcznf,KAAK8nf,iBAAiB9nf,KAAKoqY,mBAAmB16B,sBACjE1vW,KAAK+nf,sBACL/nf,KAAKs+a,2BAA6Bt+a,KAAKoqY,mBAAmBi0C,+BAE1Dr+a,KAAKgof,uBAETT,EAAc70d,UAAUq1d,oBAAsB,WAC1C/nf,KAAK0nf,iBAAmB1nf,KAAKynf,YAAcznf,KAAKynf,YAAYlle,MAAM,KAAO,MAE7Egle,EAAc70d,UAAUu1d,eAAiB,SAAUhuZ,GAC/C,IAAIv4C,EAAQ1hD,KACRkof,EAAc,GAClB,GAAIjuZ,EAAO,CAEP,IAAIkuZ,EAAc/1Y,GAAEqlS,aAAaj7X,OAAOC,KAAKw9E,IAC7Cj6F,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,EAAer6I,GAE7CrsT,EAAM2mc,wBAAwBD,EAAcE,cAD7BruZ,EAAM8zQ,IAErBm6I,EAAYtkf,KAAKwkf,EAAcE,eAC/BH,EAAY51e,OAAOw7V,KAGvBo6I,EAAY90e,QAAQ,SAAU06V,GAC1B,IAAIvoW,EAASk8C,EAAM6hY,iBAAiBtrB,iBAAiBlqD,GACrD,GAAKvoW,EAAL,CAIA,IAAI4if,EAAgB1mc,EAAM6mc,yBAAyB/if,EAAQ,SAC3Dk8C,EAAM2mc,wBAAwBD,EAAcE,cAAeruZ,EAAM8zQ,IACjEm6I,EAAYtkf,KAAKwkf,EAAcE,oBAL3Bv9c,QAAQ24B,KAAK,8DAAgEqqS,UASrF/tW,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,GAC9B1mc,EAAM2mc,wBAAwBD,EAAcE,cAAe,MAC3DJ,EAAYtkf,KAAKwkf,EAAcE,iBAGvC/jf,GAAQ+wB,IAAI4yd,GAAa7pe,KAAK,SAAU+zF,GAAK,OAAO1wD,EAAM+rY,qBAE9D85D,EAAc70d,UAAU21d,wBAA0B,SAAUC,EAAeE,GACvEF,EAAcjqe,KAAK,SAAUlJ,GACM,mBAApBA,EAAOq6a,SAIlBr6a,EAAOq6a,SAASg5D,GAHZz9c,QAAQ24B,KAAK,2FAMzB6jb,EAAc70d,UAAU+1d,eAAiB,WACrC,IAAI7rd,EAAS,GAiBb,OAhBA58B,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,EAAezre,GAE7C,IACIxH,EADgBize,EAAcE,cACPn+H,WAAW,KAAM,SAAUh1W,GAAU,OAAOA,IACvE,GAAc,MAAVA,EACA,OAAO,KAEX,GAA+B,mBAApBA,EAAOo6a,SAAlB,CAIA,IAAIt1V,EAAQ9kF,EAAOo6a,WACfn9U,GAAE8rR,OAAOjkS,KACTr9D,EAAOjgB,GAAOs9E,QALdlvD,QAAQ24B,KAAK,8FAQd9mC,GAGX2qd,EAAc70d,UAAUg2d,wBAA0B,WAC9C,OAAO1of,KAAK2of,uBAKhBpB,EAAc70d,UAAUk2d,yBAA2B,WAC/C,IAAIC,GAAmB,EACvB7of,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,GAC1BS,GAGAT,EAAcE,cAAcn+H,YAAW,EAAO,SAAUh1W,GAAU,OAAOA,EAAOsvY,qBAChFokG,GAAmB,KAG3B7of,KAAK2of,sBAAwBE,GAEjCtB,EAAc70d,UAAUo2d,0BAA4B,SAAUvie,EAAQo+X,GAClE3kZ,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,GAC9B,IAAI3jG,EAAiB2jG,EAAcE,cAAcn+H,YAAW,EAAO,SAAUh1W,GAAU,OAAOA,EAAOsvY,mBACrG2jG,EAAc5if,OAAOk/Y,gBAAgBD,EAAgBl+X,EAAQo+X,MAIrE4iG,EAAc70d,UAAUq2d,mBAAqB,WACzC,OAAO/of,KAAKgpf,wBAA0Bhpf,KAAK2of,uBAAyB3of,KAAKipf,uBAE7E1B,EAAc70d,UAAUkha,eAAiB,SAAUlwS,EAAMwlW,GACrD,IAAIp5e,EAAO4zI,EAAK5zI,KACZkrZ,GAAe,EAmBnB,OAlBAh7Z,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,GAE9B,GAAKptF,GAIgB,MAAjBotF,EAAJ,CAGA,IAAIjze,EAASize,EAAcE,cAAcn+H,gBAAW1lX,EAAW,SAAU0Q,GAAU,OAAOA,IAC1F,GAAc,MAAVA,GAAkBA,IAAW+ze,GAAiB/ze,EAAOsvY,iBAAzD,CAGA,IAAKtvY,EAAOy+a,eACR,MAAM,IAAIv/Z,MAAM,2CAEpB2mY,EAAe7lZ,EAAOy+a,eAAe,CAAElwS,KAAMA,EAAM5zI,KAAMA,QAEtDkrZ,GAEXusF,EAAc70d,UAAUo1d,iBAAmB,SAAUqB,GACjD,OAAK/2Y,GAAE8rR,OAAOirH,GAGTnpf,KAAKoqY,mBAAmB0rC,oBAItBqzE,EAAUv7c,eAHb7C,QAAQ24B,KAAK,sEACN,MAJA,MAQf6jb,EAAc70d,UAAU2yZ,eAAiB,SAAU8jE,GAC/C,IAAIC,EAAeppf,KAAK8nf,iBAAiBqB,GACrCnpf,KAAKynf,cAAgB2B,IACrBppf,KAAKynf,YAAc2B,EACnBppf,KAAK+nf,sBACL/nf,KAAKytb,oBAGb85D,EAAc70d,UAAUs1d,oBAAsB,WAC1Chof,KAAKipf,sBAAwBjpf,KAAKoqY,mBAAmB1xB,2BAEzD6uI,EAAc70d,UAAU+6Z,gBAAkB,SAAU9oC,GAChD3kZ,KAAK4of,2BACL5of,KAAK8of,0BAA0B,gBAAiBnkG,GAChD3kZ,KAAKgof,sBACLhof,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,GAC9BA,EAAcE,cAAcjqe,KAAK,SAAUlJ,GACnCA,EAAOk0e,oBACPl0e,EAAOk0e,yBAInB,IAAIxkG,EAAqB,CACrBnkZ,KAAMquZ,GAAOjK,qBACb76B,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,WAEhBy6B,GACAvyS,GAAEkyR,UAAUugB,EAAoBF,GAIpC3kZ,KAAK+wd,wBAAyB,EAC9B/wd,KAAK0/Y,aAAajnD,cAAcosD,GAChC7kZ,KAAK+wd,wBAAyB,GAElCw2B,EAAc70d,UAAUm/a,wCAA0C,WAG9D,OAAQ7xc,KAAKs+a,4BAA8Bt+a,KAAK+wd,wBAEpDw2B,EAAc70d,UAAUs2d,qBAAuB,WAC3C,OAA4B,OAArBhpf,KAAKynf,aAEhBF,EAAc70d,UAAU42d,wBAA0B,SAAUJ,EAAcxlW,GACtE,OAAO1jJ,KAAKupf,kBAAkB7lW,EAAMwlW,IAExC3B,EAAc70d,UAAU82d,8BAAgC,SAAU9lW,EAAM+lW,GACpE,IAAI/nc,EAAQ1hD,KACRmF,EAAUnF,KAAKujb,iBAAiB5hB,8BACpC,OAAOvvT,GAAEhqG,KAAKjD,EAAS,SAAUK,GAC7B,IAAI88I,EAAO5gG,EAAMgoc,4BAA4Blkf,EAAQk+I,GACrD,OAAOtxC,GAAE8rR,OAAO57O,IAASA,EAAKr5I,QAAQwgf,IAAe,KAG7DlC,EAAc70d,UAAUi3d,4BAA8B,SAAUjmW,EAAM+lW,GAIlE,OAHK/lW,EAAKs+S,0BACNhic,KAAK4pf,2BAA2BlmW,GAE7BA,EAAKs+S,yBAAyB/4b,QAAQwgf,IAAe,GAEhElC,EAAc70d,UAAUm3d,uBAAyB,SAAUnmW,GACvD,IAAIhiG,EAAQ1hD,KACR8pf,EAAa9pf,KAAKoqY,mBAAmBmuC,qBAEzC,OAAOnmU,GAAEgiD,MAAMp0J,KAAK0nf,iBAAkB,SAAUplW,GAC5C,OAAOwnW,EAAapoc,EAAMioc,4BAA4BjmW,EAAMpB,GAAQ5gG,EAAM8nc,8BAA8B9lW,EAAMpB,MAGtHilW,EAAc70d,UAAU62d,kBAAoB,SAAU7lW,EAAMwlW,GAKxD,QAAIlpf,KAAKgpf,yBAA2Bhpf,KAAK6pf,uBAAuBnmW,IAI5D1jJ,KAAKipf,wBAA0Bjpf,KAAKoqY,mBAAmBxxB,uBAAuBl1N,IAI9E1jJ,KAAK2of,wBAA0B3of,KAAK4zb,eAAelwS,EAAMwlW,KAMjE3B,EAAc70d,UAAUg3d,4BAA8B,SAAUlkf,EAAQk+I,GACpE,IAAIniJ,EAAQvB,KAAKohc,aAAatlU,SAASt2H,EAAQk+I,GAAM,GACjDmoN,EAASrmW,EAAOuqY,YACpB,GAAIlkC,EAAO6D,mBAAoB,CAC3B,IAAI5lR,EAAS,CACTvoF,MAAOA,EACPmiJ,KAAMA,EACN5zI,KAAM4zI,EAAK5zI,KACXtK,OAAQA,EACRqmW,OAAQA,EACRr6V,QAASxR,KAAKoqY,mBAAmB/lP,cAErC9iJ,EAAQsqW,EAAO6D,mBAAmB5lR,GAEtC,OAAOsoB,GAAE8rR,OAAO38X,GAASA,EAAM0wB,WAAW2b,cAAgB,MAE9D25c,EAAc70d,UAAUk3d,2BAA6B,SAAUlmW,GAC3D,IAAIhiG,EAAQ1hD,KACR+pf,EAAc,GAElB12e,GADcrT,KAAKujb,iBAAiB5hB,8BACnB,SAAUn8Z,GACvB,IAAI88I,EAAO5gG,EAAMgoc,4BAA4Blkf,EAAQk+I,GACjDtxC,GAAE8rR,OAAO57O,IACTynW,EAAYnmf,KAAK0+I,KAGzBoB,EAAKs+S,yBAA2B+nD,EAAY/5c,KAAK43c,EAAgBoC,yBAErEzC,EAAc70d,UAAUy9Z,gBAAkB,SAAU5pa,GAChDvmB,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,GAC9BA,EAAcE,cAAcjqe,KAAK,SAAUlJ,GACnCA,EAAOg7a,iBACPh7a,EAAOg7a,sBAInBnwb,KAAK8of,0BAA0Bvie,GAC/BvmB,KAAK4of,4BAETrB,EAAc70d,UAAUu3d,kBAAoB,SAAUzkf,GAClD,IAAIk8C,EAAQ1hD,KACZ,OAAO,SAAU0jJ,GAAQ,OAAOhiG,EAAM0/Y,aAAatlU,SAASt2H,EAAQk+I,GAAM,KAE9E6jW,EAAc70d,UAAU8qd,mBAAqB,SAAUh4e,EAAQ+gB,GAC3D,OAAOvmB,KAAKuof,yBAAyB/if,EAAQ+gB,GAAQ+he,eAEzDf,EAAc70d,UAAU+xX,eAAiB,SAAUj/Y,GAC/C,IAAI4if,EAAgBpof,KAAKkqf,aAAa1kf,GACtC,OAAO4if,GAAiBA,EAAcE,cAAcn+H,YAAW,EAAO,SAAUh1W,GAAU,OAAOA,EAAOsvY,oBAE5G8iG,EAAc70d,UAAU61d,yBAA2B,SAAU/if,EAAQ+gB,GACjE,IAAI6he,EAAgBpof,KAAKkqf,aAAa1kf,GAQtC,OAPK4if,EAIe,UAAX7he,GACLvmB,KAAKmqf,WAAW/B,EAAe7he,IAJ/B6he,EAAgBpof,KAAKoqf,oBAAoB5kf,EAAQ+gB,GACjDvmB,KAAKwnf,WAAWnze,IAAI7O,EAAOqgZ,WAAYuiG,IAKpCA,GAEXb,EAAc70d,UAAUw3d,aAAe,SAAU1kf,GAC7C,OAAOxF,KAAKwnf,WAAWt1e,IAAI1M,EAAOqgZ,aAEtC0hG,EAAc70d,UAAU23d,qBAAuB,SAAU7kf,EAAQwsd,GAC7D,IAGI5a,EAHA11Z,EAAQ1hD,KACRopc,EAAgB1qD,GAAeM,aAAa3hX,EAAQ6/W,YAAY+gG,iBAAmB,oBAAsB,qBACzGqM,EAAkBl4Y,GAAE6xR,YAAYz+X,EAAOuqY,aAEvCjmT,EAAS9pF,KAAKk+e,mBAAmB14e,EAAQ8kf,EAAiBt4B,GAC9DloY,EAAO6jW,sBAAwB3tb,KAAKytb,gBAAgBljZ,KAAKvqC,MACzD8pF,EAAOumW,uBAAyB,WAQ5B3uY,EAAMg+V,aAAajnD,cAPP,CACR/3V,KAAMquZ,GAAO4C,sBACb1nC,IAAKvoU,EAAMyhW,QACXj5B,UAAWxoU,EAAMwoU,UACjB1kX,OAAQA,EACR4xc,eAAgBA,KAMxB,IAGI9+a,EAAMt4B,KAAKgsb,qBAAqBmd,mBAAmBmhD,EAAiBxga,EAAQs/W,EAHrD,SAAUt/W,EAAQstX,GAAkB,OAAOhlW,GAAErrE,OAAO+iD,EAAQ,CACnFyga,uBAAwB7oc,EAAM4nc,wBAAwB/+c,KAAKmX,EAAO01Z,OAMtE,OAHI9+a,GACAA,EAAIja,KAAK,SAAUyrH,GAAK,OAAOstU,EAAiBttU,IAE7CxxG,GAEXivd,EAAc70d,UAAUwrd,mBAAqB,SAAU14e,EAAQqmW,EAAQmmH,QACpD,IAAXA,IAAqBA,EAAS,MAClC,IAAIloY,EAAS,CACTmgS,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7BvvY,OAAQA,EACRqmW,OAAQA,EACR2iF,SAAUxub,KAAKwub,SACfb,sBAAuB,KACvB0C,uBAAwB,KACxBvhF,YAAa9uW,KAAKiqf,kBAAkBzkf,GACpCgM,QAASxR,KAAKoqY,mBAAmB/lP,aACjCkmW,uBAAwB,MAM5B,OAHIv4B,IACAloY,EAAOkoY,OAASA,GAEbloY,GAEXy9Z,EAAc70d,UAAU03d,oBAAsB,SAAU5kf,EAAQ+gB,GAC5D,IAAI6he,EAAgB,CAChB5if,OAAQA,EACR8if,cAAe,KACf96Z,MAAO,KACPg9Z,gBAAiB,KACjBC,WAAYlmf,GAAQC,QAAQ,OAOhC,OALA4jf,EAAc56Z,MAAQxtF,KAAKoqY,mBAAmB8wC,0BAA4Bl7a,KAAKgyd,OAAOwO,OAAS,KAC/F4nB,EAAcE,cAAgBtof,KAAKqqf,qBAAqB7kf,EAAQ4if,EAAc56Z,OAC1E46Z,EAAcE,eACdtof,KAAKmqf,WAAW/B,EAAe7he,GAE5B6he,GAEXb,EAAc70d,UAAUy3d,WAAa,SAAU/B,EAAe7he,GAC1D,IAAIm7B,EAAQ1hD,KACR0qf,EAAa//c,SAAS9yB,cAAc,OACxC6ye,EAAW7ie,UAAY,YACvBuge,EAAcqC,WAAa,IAAIlmf,GAAQ,SAAUC,GAC7C4jf,EAAcE,cAAcjqe,KAAK,SAAUlJ,GACvC,IAAIw1e,EAAgBx1e,EAAOmxX,SAY3B,GAXIl0R,GAAEgsR,QAAQusH,IACV5/c,QAAQ24B,KAAK,sCAAwCinb,EAAgB,4DAM5C,iBAAlBA,IACPA,EAAgBv4Y,GAAE8uR,aAAaypH,IAEnCD,EAAW5ye,YAAY6ye,GACnBvC,EAAc56Z,MAAO,CACrB,IAAIg9Z,EAAkB9oc,EAAMkwa,SAAS84B,EAAfhpc,CAA2B0mc,EAAc56Z,OAC/D46Z,EAAcoC,gBAAkBA,EAChCr/d,OAAOyZ,WAAW,WAAc,OAAOwjd,EAAc56Z,MAAM2+M,UAAa,GAE5E3nS,EAAQkmf,GACRhpc,EAAMg+V,aAAajnD,cAAc,CAC7B/3V,KAAMquZ,GAAO6C,oBACbpsZ,OAAQ4if,EAAc5if,OACtB+gB,OAAQA,EACR2ha,KAAMwiE,EACNzgI,IAAKvoU,EAAMyhW,QACXj5B,UAAWxoU,EAAMwoU,iBAKjCq9H,EAAc70d,UAAUm1d,mBAAqB,WACzC,IAAInmc,EAAQ1hD,KACR4qf,GAAuB,EAC3B5qf,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,IACb1mc,EAAM6hY,iBAAiBtrB,iBAAiBmwF,EAAc5if,UAEnEolf,GAAuB,EACvBlpc,EAAMmpc,qBAAqBzC,EAAe,sBAG9CwC,GACA5qf,KAAKytb,mBAIb85D,EAAc70d,UAAUo4d,cAAgB,SAAUtlf,EAAQ+gB,QACvC,IAAXA,IAAqBA,EAAS,OAClC,IAAI6he,EAAgBpof,KAAKwnf,WAAWt1e,IAAI1M,EAAOqgZ,YAC3CuiG,IACApof,KAAK6qf,qBAAqBzC,EAAe7he,GACzCvmB,KAAKytb,oBAGb85D,EAAc70d,UAAUm4d,qBAAuB,SAAUzC,EAAe7he,GACpE,IAAIm7B,EAAQ1hD,KACZoof,EAAcE,cAAcjqe,KAAK,SAAUlJ,GACvCA,EAAOq6a,SAAS,MACZr6a,EAAO+L,SACP/L,EAAO+L,UAEXkne,EAAc5if,OAAOk/Y,iBAAgB,EAAOn+X,GACxC6he,EAAc56Z,QACV46Z,EAAcoC,iBACdpC,EAAcoC,gBAAgBh/e,SAElC48e,EAAc56Z,MAAMizY,YAExB/+a,EAAM8lc,WAAWj1e,OAAO61e,EAAc5if,OAAOqgZ,eAGrD0hG,EAAc70d,UAAUxR,QAAU,WAC9B,IAAIwgC,EAAQ1hD,KACZA,KAAKwnf,WAAWn0e,QAAQ,SAAU+0e,GAAiB,OAAO1mc,EAAMmpc,qBAAqBzC,EAAe,qBAChGpof,KAAK2nf,wBAAwBxjf,SAC7BnE,KAAK2nf,wBAAwBt0e,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC9Dj3C,KAAK2nf,wBAAwBxjf,OAAS,IAI9Cojf,EAAcyC,uBAAyB,KACvC1C,GAAa,CACT3qG,GAAU,aACX4qG,EAAc70d,UAAW,gBAAY,GACxC40d,GAAa,CACT3qG,GAAU,WACX4qG,EAAc70d,UAAW,cAAU,GACtC40d,GAAa,CACT3qG,GAAU,uBACX4qG,EAAc70d,UAAW,0BAAsB,GAClD40d,GAAa,CACT3qG,GAAU,iBACX4qG,EAAc70d,UAAW,oBAAgB,GAC5C40d,GAAa,CACT3qG,GAAU,qBACX4qG,EAAc70d,UAAW,wBAAoB,GAChD40d,GAAa,CACT3qG,GAAU,aACX4qG,EAAc70d,UAAW,gBAAY,GACxC40d,GAAa,CACT3qG,GAAU,iBACX4qG,EAAc70d,UAAW,oBAAgB,GAC5C40d,GAAa,CACT3qG,GAAU,cACX4qG,EAAc70d,UAAW,iBAAa,GACzC40d,GAAa,CACT3qG,GAAU,YACX4qG,EAAc70d,UAAW,eAAW,GACvC40d,GAAa,CACT3qG,GAAU,yBACX4qG,EAAc70d,UAAW,4BAAwB,GACpD40d,GAAa,CACThrG,IACDirG,EAAc70d,UAAW,OAAQ,MACpC40d,GAAa,CACT9qG,IACD+qG,EAAc70d,UAAW,UAAW,MACvBk1d,EAAkBN,GAAa,CAC3CpsG,GAAK,kBACNqsG,GAxe4B,GAkf/BwD,GAAsD,SAAUlhX,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DkhX,GAA8B,WAC9B,SAASA,IACLhrf,KAAK48d,aAAc,EAkPvB,OAhPAouB,EAAat4d,UAAU4yQ,KAAO,WAC1BtlS,KAAKirf,gBAAkBjrf,KAAKoqY,mBAAmBuxC,0BAC/C37a,KAAK48d,aAAc,GAEvBouB,EAAat4d,UAAUopG,SAAW,SAAUt2H,EAAQkvY,EAASw2G,EAAWC,GAQpE,QAPkB,IAAdD,IAAwBA,GAAY,QAClB,IAAlBC,IAA4BA,GAAgB,GAG3Cnrf,KAAK48d,aACN58d,KAAKslS,OAEJovG,EAAL,CAIA,IAII93W,EAJAivU,EAASrmW,EAAOuqY,YAChB74V,EAAQ20T,EAAO30T,MACf62T,EAAQvoW,EAAOy7Y,QACfnxY,EAAO4kY,EAAQ5kY,KAGfs7e,EAAkB12G,EAAQ6sD,gBAA0C98b,IAA7BiwY,EAAQ6sD,UAAUxzF,GACzDs9I,GAAiBF,GAAiBz2G,EAAQitD,cAAsCl9b,IAA3BiwY,EAAQitD,QAAQ5zF,GA0BzE,GAzBIm9I,GAAar/I,EAAOmD,kBACpBpyU,EAAS58B,KAAKsrf,yBAAyBz/I,EAAOmD,kBAAmBl/V,EAAMtK,EAAQkvY,GAE1E10Y,KAAKoqY,mBAAmBuX,cAAgB0pG,EAC7Czud,EAAS83W,EAAQitD,QAAQ5zF,GAEpB/tW,KAAKoqY,mBAAmBuX,cAAgB91C,EAAOiD,YACpDlyU,EAAS58B,KAAKurf,mBAAmB1/I,EAAOiD,YAAah/V,EAAMtK,EAAQkvY,GAE9D10Y,KAAKoqY,mBAAmBuX,cAAiBzqW,GAASpnC,EACvD8sB,EAASw1E,GAAEyyR,mBAAmB/0X,EAAMonC,EAAO1xC,EAAO47Y,uBAE7CgqG,EACLxud,EAAS83W,EAAQ6sD,UAAUxzF,GAEtBs9I,EACLzud,EAAS83W,EAAQitD,QAAQ5zF,GAEpBlC,EAAOiD,YACZlyU,EAAS58B,KAAKurf,mBAAmB1/I,EAAOiD,YAAah/V,EAAMtK,EAAQkvY,GAE9Dx9V,GAASpnC,IACd8sB,EAASw1E,GAAEyyR,mBAAmB/0X,EAAMonC,EAAO1xC,EAAO47Y,wBAGlDphZ,KAAKirf,iBAAsC,iBAAXrud,GAAgD,IAAxBA,EAAO3zB,QAAQ,KAAY,CACnF,IAAIuif,EAAkB5ud,EAAOouB,UAAU,GACvCpuB,EAAS58B,KAAKurf,mBAAmBC,EAAiB17e,EAAMtK,EAAQkvY,GAEpE,OAAO93W,IAEXoud,EAAat4d,UAAU4hH,SAAW,SAAUogQ,EAAS6oB,EAAQrrR,EAAUh+E,GACnE,IAAI1uD,EAASxF,KAAKujb,iBAAiBtrB,iBAAiBsF,GACpD,GAAK7oB,GAAYlvY,EAAjB,CAKI4sG,GAAEgsR,QAAQsW,EAAQ5kY,QAClB4kY,EAAQ5kY,KAAO,IAGnB,IAAInF,EAAKnF,EAAOuqY,YAAa74V,EAAQvsC,EAAGusC,MAAOy4T,EAAkBhlW,EAAGglW,gBAAiBZ,EAAcpkW,EAAGokW,YAEtG,GAAI38P,GAAEgsR,QAAQlnV,IAAUk7D,GAAEgsR,QAAQzuB,IAAoBv9P,GAAEgsR,QAAQrvB,GAE5DhkU,QAAQ24B,KAAK,uFAFjB,CAKA,IAYI+nb,EAZA3ha,EAAS,CACT45D,KAAMgxP,EACN5kY,KAAM4kY,EAAQ5kY,KACdwpT,SAAUt5T,KAAK87H,SAASt2H,EAAQkvY,GAChCxiQ,SAAUA,EACV25N,OAAQrmW,EAAOuqY,YACfvqY,OAAQA,EACRykX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,cAsBrC,GApBAv6D,EAAOooD,SAAWA,OAcQztI,KAXtBgnf,EADA97I,GAAmBv9P,GAAE8rR,OAAOvuB,GACRA,EAAgB7lR,GAE/BsoB,GAAE8rR,OAAOnvB,GACM/uW,KAAKgna,kBAAkBlwJ,SAASi4F,EAAajlR,GAG7C9pF,KAAK0rf,mBAAmBh3G,EAAQ5kY,KAAMonC,EAAOg7F,EAAU1sI,EAAO47Y,0BAMlFqqG,GAAoB,GAKnBA,EAAL,CAIA/2G,EAAQqtD,gCACR/hc,KAAK4hX,WAAWi8E,gBAChB/zW,EAAOooD,SAAWlyI,KAAK87H,SAASt2H,EAAQkvY,GACxC,IAAI9kC,EAAqBpqW,EAAOuqY,YAAYngC,mBACV,mBAAvBA,GAEPhrU,WAAW,WAAc,OAAOgrU,EAAmB9lR,IAAY,GAmBnE9pF,KAAK0/Y,aAAajnD,cAjBN,CACR/3V,KAAMquZ,GAAOmC,yBACb5oY,MAAO,KACPje,SAAUqqY,EAAQrqY,SAClBi0b,UAAW5pD,EAAQ4pD,UACnB94b,OAAQskF,EAAOtkF,OACfykX,IAAKngS,EAAOmgS,IACZpe,OAAQ/hR,EAAO+hR,OACfqe,UAAWpgS,EAAOogS,UAClB14W,QAASs4E,EAAOt4E,QAChB1B,KAAM4kY,EAAQ5kY,KACd4zI,KAAMgxP,EACNp7E,SAAUxvO,EAAOwvO,SACjBpnL,SAAUpoD,EAAOooD,SACjB3wI,MAAOuoF,EAAOooD,SACd3rH,OAAQ2tC,QAIhB82b,EAAat4d,UAAUg5d,mBAAqB,SAAU57e,EAAMonC,EAAOg7F,EAAUkvQ,GACzE,IAAKlqW,EACD,OAAO,EAIX,GAAKkqW,EAOD,IAFA,IAAIuqG,EAAcz0c,EAAM30B,MAAM,KAC1BwiX,EAAgBj1X,EACb67e,EAAYxnf,OAAS,GAAK4gY,GAAe,CAC5C,IAAI6mH,EAAaD,EAAYh3e,QACF,IAAvBg3e,EAAYxnf,OACZ4gY,EAAc6mH,GAAc15W,EAG5B6yP,EAAgBA,EAAc6mH,QAZtC97e,EAAKonC,GAASg7F,EAgBlB,OAAO,GAEX84W,EAAat4d,UAAU44d,yBAA2B,SAAUx8I,EAAah/V,EAAMtK,EAAQkvY,GACnF,IAAI5qT,EAAS,CACTh6E,KAAMA,EACN4zI,KAAMgxP,EACNlvY,OAAQA,EACRqmW,OAAQrmW,EAAOuqY,YACf9lB,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,aACjCvoB,SAAU97H,KAAK6rf,iBAAiBthd,KAAKvqC,KAAM00Y,IAE/C,OAAO10Y,KAAKgna,kBAAkBlwJ,SAASg4F,EAAahlR,IAExDkha,EAAat4d,UAAU64d,mBAAqB,SAAUz8I,EAAah/V,EAAMtK,EAAQkvY,GAC7E,IAAI3mC,EAAQvoW,EAAOy7Y,QAEf6qG,EAAiB9rf,KAAK4hX,WAAW9lP,SAAS44Q,EAAS3mC,GACvD,QAAuBtpW,IAAnBqnf,EACA,OAAOA,EAEX,IAAIhia,EAAS,CACTh6E,KAAMA,EACN4zI,KAAMgxP,EACNlvY,OAAQA,EACRqmW,OAAQrmW,EAAOuqY,YACf9lB,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,aACjCvoB,SAAU97H,KAAK6rf,iBAAiBthd,KAAKvqC,KAAM00Y,IAE3C93W,EAAS58B,KAAKgna,kBAAkBlwJ,SAASg4F,EAAahlR,GAG1D,OADA9pF,KAAK4hX,WAAWttO,SAASogQ,EAAS3mC,EAAOnxU,GAClCA,GAEXoud,EAAat4d,UAAUm5d,iBAAmB,SAAUnoW,EAAMxsG,GACtD,IAAI60c,EAAc/rf,KAAKujb,iBAAiBtrB,iBAAiB/gX,GACzD,OAAI60c,EACO/rf,KAAK87H,SAASiwX,EAAaroW,GAE/B,MAGXsnW,EAAat4d,UAAUs5d,cAAgB,SAAU/qZ,EAAKyzS,GAClD,IAAInzY,EAAQvB,KAAK87H,SAAS76B,EAAKyzS,GAC3BzlC,EAAahuQ,EAAI8uS,YAAY9gC,WAC7BryU,EAASqyU,EAAaA,EAAW,CAAE1tW,MAAOA,IAAWA,EAEzD,MAAsB,iBAAXq7B,GAAiC,MAAVA,GAInB,qBADfA,EAASyS,OAAOzS,KAEZw1E,GAAEg5R,OAAO,WACLrgW,QAAQ24B,KAAK,gOACd,8CANI9mC,GAUfmud,GAAa,CACTpuG,GAAU,uBACXquG,EAAat4d,UAAW,0BAAsB,GACjDq4d,GAAa,CACTpuG,GAAU,sBACXquG,EAAat4d,UAAW,yBAAqB,GAChDq4d,GAAa,CACTpuG,GAAU,qBACXquG,EAAat4d,UAAW,wBAAoB,GAC/Cq4d,GAAa,CACTpuG,GAAU,iBACXquG,EAAat4d,UAAW,oBAAgB,GAC3Cq4d,GAAa,CACTpuG,GAAU,eACXquG,EAAat4d,UAAW,kBAAc,GACzCq4d,GAAa,CACTzuG,IACD0uG,EAAat4d,UAAW,OAAQ,MACpBq4d,GAAa,CACxB7vG,GAAK,iBACN8vG,GAnP2B,GA6P9BiB,GAAsD,SAAUpiX,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAO5DoiX,GAAuC,WACvC,SAASA,EAAsBpia,GAC3B9pF,KAAKwkR,WAAa,EAClBxkR,KAAKmsf,kBAAoB,GACzBnsf,KAAKosf,0BAA4B,GAGjCpsf,KAAKqsf,oBAAsB,EAC3Brsf,KAAKqhY,WAAav3S,EAAOu3S,WACzBrhY,KAAKklf,UAAYp7Z,EAAOo7Z,UACpBp7Z,EAAO67W,WACP3lc,KAAK2lc,SAAW77W,EAAO67W,UAE3B3lc,KAAKssf,mBAAqBxia,EAAOwia,mBAoGrC,OAlGAJ,EAAsBx5d,UAAU65d,0BAA4B,SAAUC,GAClExsf,KAAKooB,UAAYoke,GAErBN,EAAsBx5d,UAAUk7Z,cAAgB,WAC5C5tb,KAAKysf,gBACLzsf,KAAK4od,kBACL5od,KAAKoqY,mBAAmB9+W,iBAAiB4nZ,GAAmBQ,gBAAiB1za,KAAKysf,cAAclid,KAAKvqC,QAEzGksf,EAAsBx5d,UAAU+5d,cAAgB,WAC5Czsf,KAAK0sf,SAAW1sf,KAAKoqY,mBAAmByvC,oBAE5CqyE,EAAsBx5d,UAAU2tc,cAAgB,SAAUr5C,GACtD,OAAOhnb,KAAKqhY,WAAWj2X,cAAc,aAAgB47a,EAAS,OAElEklE,EAAsBx5d,UAAUywT,UAAY,SAAU34U,GACpC,MAAVA,GAIJxK,KAAKqhY,WAAW91X,MAAMf,OAASA,EAAS,KACpCxK,KAAK2lc,WACL3lc,KAAK2lc,SAASp6b,MAAMf,OAASA,EAAS,OALtCxK,KAAKqhY,WAAW91X,MAAMf,OAAS,IAQvC0hf,EAAsBx5d,UAAUs9c,kBAAoB,WAGhD,GAAsC,IAAlChwe,KAAKmsf,kBAAkBhof,OAAc,CACrC,IAAIwof,EAAY3sf,KAAKmsf,kBAAkBn8c,KAAK,IAC5CoiE,GAAEqwR,WAAWziY,KAAKqhY,WAAYsrH,GAC9B3sf,KAAKmsf,kBAAkBhof,OAAS,EAIpCnE,KAAKosf,0BAA0B/4e,QAAQ,SAAU4jC,GAAQ,OAAOA,MAChEj3C,KAAKosf,0BAA0Bjof,OAAS,EACxCnE,KAAK4sf,kBAAoB,MAE7BV,EAAsBx5d,UAAU0tc,kBAAoB,SAAUD,EAAaltc,GACnEjzB,KAAK0sf,SACL1sf,KAAK4sf,kBAAoBx6Y,GAAE6wR,2BAA2BjjY,KAAKqhY,WAAY8+F,EAAange,KAAK4sf,mBAGzF5sf,KAAKmsf,kBAAkBvof,KAAKu8d,GAEhCnge,KAAKosf,0BAA0Bxof,KAAKqvB,GAMpCjzB,KAAKwkR,aACLxkR,KAAK4od,mBAETsjC,EAAsBx5d,UAAU8uV,eAAiB,SAAUo8G,GACnD59d,KAAK0sf,WACLt6Y,GAAEovQ,eAAexhX,KAAKqhY,WAAYu8F,EAAM59d,KAAK4sf,mBAC7C5sf,KAAK4sf,kBAAoBhvB,IAGjCsuB,EAAsBx5d,UAAUu1c,iBAAmB,SAAUrK,GACzD59d,KAAKqhY,WAAW5/W,YAAYm8c,GAC5B59d,KAAKwkR,aACLxkR,KAAK4od,mBAETsjC,EAAsBx5d,UAAUk2b,gBAAkB,WAC9C,GAAK5od,KAAKssf,mBAAV,CAGA,IAAIpkE,EAAOlob,KAAKklf,UAAYllf,KAAKklf,UAAYllf,KAAKqhY,WAC9CttM,EAAU/zL,KAAKwkR,WAAa,EAC5BxkR,KAAK+zL,UAAYA,IACjB/zL,KAAK+zL,QAAUA,EACf/zL,KAAKqsf,qBAAsB,IAAI3xc,MAAOwmE,UACtC9O,GAAEyuR,aAAaqnD,EAAMn0P,GAQjBA,GAAW/zL,KAAKklf,YAChBllf,KAAKklf,UAAU98d,UAAYpoB,KAAKooB,cAI5C8je,EAAsBx5d,UAAUm6d,sBAAwB,WAGpD,OAFU,IAAInyc,MAAOwmE,UACUlhH,KAAKqsf,oBACR,KAEhCJ,GAAa,CACTtvG,GAAU,uBACXuvG,EAAsBx5d,UAAW,0BAAsB,GAC1Du5d,GAAa,CACT3vG,IACD4vG,EAAsBx5d,UAAW,gBAAiB,MAC9Cw5d,EAjHgC,GA0HvCY,GAAkD,WASlD,OARAA,GAAatwe,OAAOuqB,QAAU,SAASvmC,GACnC,IAAK,IAAIokB,EAAG/c,EAAI,EAAGkwC,EAAIz+B,UAAUnV,OAAQ0D,EAAIkwC,EAAGlwC,IAE5C,IAAK,IAAI0hI,KADT3kH,EAAItL,UAAUzR,GACO2U,OAAOkW,UAAUgb,eAAexY,KAAKtQ,EAAG2kH,KACzD/oI,EAAE+oI,GAAK3kH,EAAE2kH,IAEjB,OAAO/oI,IAEOm3C,MAAM33C,KAAMsZ,YAE9Byze,GAAsD,SAAUljX,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DkjX,GAA8D,WAC9D,IAAK,IAAIpoe,EAAI,EAAG/c,EAAI,EAAGwjI,EAAK/xH,UAAUnV,OAAQ0D,EAAIwjI,EAAIxjI,IAAK+c,GAAKtL,UAAUzR,GAAG1D,OACxE,IAAI2lI,EAAIv/H,MAAMqa,GAAI43G,EAAI,EAA3B,IAA8B30H,EAAI,EAAGA,EAAIwjI,EAAIxjI,IACzC,IAAK,IAAIkU,EAAIzC,UAAUzR,GAAI0M,EAAI,EAAG+2H,EAAKvvH,EAAE5X,OAAQoQ,EAAI+2H,EAAI/2H,IAAKioH,IAC1DsN,EAAEtN,GAAKzgH,EAAExH,GACjB,OAAOu1H,GAEPmjX,GAAgC,WAChC,SAASA,EAAe5rH,EAAYymF,GAChC9nd,KAAKktf,gBAAiB,EACtBltf,KAAK6yD,OAAS,GACd7yD,KAAKmtf,cAAe,EACpBntf,KAAKotf,gBAAiB,EACtBptf,KAAK6mZ,kBAAmB,EACxB7mZ,KAAKqhY,WAAaA,EAClBrhY,KAAK8nd,UAAYA,EAuYrB,OArYAmlC,EAAev6d,UAAUk7Z,cAAgB,WACjC5tb,KAAKoqY,mBAAmB0rC,sBACxB91a,KAAK++c,mBAAqB/+c,KAAKwub,UAEnCxub,KAAK6yD,OAAOjvD,KAAK5D,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOxL,mBAAoBvjZ,KAAKi8b,cAAc1xZ,KAAKvqC,OAAQA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOjK,qBAAsB9kZ,KAAKytb,gBAAgBljZ,KAAKvqC,OAAQA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOI,+BAAgCnvZ,KAAKqtf,kBAAkB9id,KAAKvqC,QACvTA,KAAKi8b,gBACLj8b,KAAKytb,kBACLztb,KAAKqtf,qBAETJ,EAAev6d,UAAUxR,QAAU,WAC3BlhB,KAAK6yD,OAAO1uD,QACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,OAGrDg2c,EAAev6d,UAAUupa,cAAgB,WACrC,IAAIqxD,EAAYttf,KAAKq7b,eAAekyD,eACpCvtf,KAAKmtf,cAAgB/6Y,GAAEosR,eAAe8uH,IAE1CL,EAAev6d,UAAU+6Z,gBAAkB,WACvCztb,KAAKotf,eAAiBptf,KAAK4xc,cAAcm3C,sBAE7CkE,EAAev6d,UAAU26d,kBAAoB,WACzC,IAAIG,EAAYxtf,KAAKujb,iBAAiBliB,qBACtCrha,KAAK6mZ,kBAAoBz0S,GAAEosR,eAAegvH,IAE9CP,EAAev6d,UAAU8hQ,aAAe,WACpC,OAAOx0R,KAAKqhY,YAEhB4rH,EAAev6d,UAAU2xb,eAAiB,SAAU3jd,GAChD,OAAOA,IAAS28B,EAAQojb,eAAe4G,SAE3C4lC,EAAev6d,UAAUoxb,YAAc,WAEnC,OADkB9jd,KAAKoqY,mBAAmBmtC,oBACvBv3a,KAAKgod,uBACblH,GAAmBoF,iBAEvBpF,GAAmBsF,WAE9B6mC,EAAev6d,UAAUs1b,qBAAuB,WAC5C,OAAOhod,KAAKmtf,cAAgBntf,KAAKotf,gBAAkBptf,KAAK6mZ,kBAE5DomG,EAAev6d,UAAU+6d,YAAc,SAAU3qC,GAC7C,IAAK9id,KAAK0tf,eAAe5qC,GACrB,OAAOA,EAAcP,SAAS/rE,SAElC,IAAI/1B,EAAyBzgX,KAAKoqY,mBAAmBstC,2BACjD+lC,EAAgBz9c,KAAK4+b,oBAAoB4e,mBACzCmwC,EAAc7qC,EAAcP,SAAS7tE,QACzC,OAAIj0B,IAAkE,IAAxCg9F,EAAcx0c,QAAQ0kf,IAChD3tf,KAAKktf,gBAAiB,EACfF,GAAiBvvC,KAE5Bz9c,KAAKktf,gBAAiB,EACf,CAACS,KAEZV,EAAev6d,UAAUixb,YAAc,SAAUb,GAG7C9id,KAAKy4V,cAAcs2D,GAAOsE,qBAAsByvD,GAChD9id,KAAKytf,YAAY3qC,GAAezvc,QAAQ,SAAUqhY,GAC9CA,EAAQsrD,aAAY,KAExBhgc,KAAK4tf,kBAAkB9qC,IAE3BmqC,EAAev6d,UAAUuvb,WAAa,SAAUa,GAC5C9id,KAAK4tf,kBAAkB9qC,IAE3BmqC,EAAev6d,UAAUg7d,eAAiB,SAAU5qC,GAChD,OAAO9id,KAAK8nd,UAAUxhF,SAAS15W,SAASk2b,EAAclB,WAAWx+E,WAErE6pH,EAAev6d,UAAUm7d,yBAA2B,SAAU/qC,GAG1D,OAFc9id,KAAK8nd,UAAUxhF,SAEb15W,SADKk2b,EAAcqC,iBAGvC8nC,EAAev6d,UAAUk7d,kBAAoB,SAAU9qC,GAEnD9id,KAAKy4V,cAAcs2D,GAAOuE,oBAAqBwvD,GAC/C9id,KAAKyhf,kBAAoB3+B,EACzB,IAAI3jB,EAAQn/b,KAAK8tf,kBAAkBC,sBAAsBjrC,GAAex9b,EACtDtlB,KAAKoqY,mBAAmBmtC,oBAEtCv3a,KAAKguf,cAAclrC,EAAe3jB,GAEtCn/b,KAAKkhf,wBAAwB/hD,IAEjC8tD,EAAev6d,UAAUs7d,cAAgB,SAAUlrC,EAAe3jB,GAC9D,IACI3oD,EADA90V,EAAQ1hD,KAER0tf,EAAiB1tf,KAAK0tf,eAAe5qC,GACrC4qC,GACAl3G,EAAW,CAACssE,EAAcP,SAAS7tE,SAC/B10Y,KAAKktf,iBACL12G,EAAWw2G,GAAiBhtf,KAAK4+b,oBAAoB4e,oBAAoB3hc,KAAK,SAAUE,EAAGC,GAAK,OAAO0lC,EAAMusc,kBAAkBlye,GAAK2lC,EAAMusc,kBAAkBjye,MAEhK8mc,EAAcP,SAAS/rE,SAAWA,GAGlCA,EAAWssE,EAAcP,SAAS/rE,SAEpBx2Y,KAAKoqY,mBAAmBmtC,oBACvBv3a,KAAKgod,yBAGpBhod,KAAKoqY,mBAAmBqtC,kCAAoCi2E,EACvD1tf,KAAK6tf,yBAAyB/qC,IAC/B9id,KAAK++c,mBAAmBmvC,oBAAoB13G,EAAS,GAAI2oD,GAI7Dn/b,KAAKmuf,SAAS33G,EAAU2oD,KAGhC8tD,EAAev6d,UAAUu7d,kBAAoB,SAAUv5G,GACnD,OAAOllW,SAASr4B,EAAKu9X,EAAQ2pD,oBAAoB97a,MAAM,MAAO,KAElE0qe,EAAev6d,UAAU07d,yBAA2B,SAAUtrC,GAC1D,IAAIpha,EAAQ1hD,KACRquf,EAAyBruf,KAAK++c,mBAAmBuvC,4BACjDC,EAAUF,GAAiE,UAAvCA,EAAuBzwD,YAC3DuB,EAAQn/b,KAAK8tf,kBAAkBC,sBAAsBjrC,GAAex9b,EACpEkxX,EAAWssE,EAAcP,SAAS/rE,SAClCrvG,EAAYonN,EAAU,EAAI,EAC9B,GAAIvuf,KAAK0tf,eAAe5qC,GACpBtsE,EAASnjY,QAAQ,SAAUqhY,GACnBA,EAAQ0qD,OAASD,IACjBh4J,GAAa,KAGrBnnS,KAAKmuf,SAAS33G,EAAU2oD,EAAOh4J,OAE9B,CACD,IAAIqnN,EAAiBxuf,KAAKoqY,mBAAmB40C,mBACzCyvE,EAAWzuf,KAAK++c,mBAAmBoyB,mBAAmBhyC,GAAS,EACP,UAAxDn/b,KAAK++c,mBAAmB2vC,qBAAqBvvD,IAC7CsvD,IAEJzuf,KAAK++c,mBAAmB4vC,cAAc,CAClC9rf,IAAK2zY,EACA/sY,IAAI,SAAUi6I,GAAQ,OAAOA,EAAK5zI,OAClCqF,OAAO,SAAUrF,GAAQ,OAAQ4xC,EAAMq9Z,mBAAmB+pB,WAAW0lB,EAAiBA,EAAe1+e,GAAQA,EAAKkW,MACvHyoe,SAAUA,IAGlBzuf,KAAK4uf,qBAET3B,EAAev6d,UAAUk8d,kBAAoB,WACzC5uf,KAAK++c,mBAAmBmvC,oBAAoB,OAEhDjB,EAAev6d,UAAUy7d,SAAW,SAAU33G,EAAU2oD,EAAOh4J,QACzC,IAAdA,IAAwBA,EAAY,GACtBnnS,KAAK++c,mBAAmB8vC,kBAAkBr4G,EAAU2oD,EAAOh4J,KAEzEnnS,KAAKqsd,gBAAgByiC,mBACjB9uf,KAAKosd,iBACLpsd,KAAKosd,gBAAgB2iC,wBAIjC9B,EAAev6d,UAAUwud,wBAA0B,SAAU/hD,GAEzD,IAAI6vD,EAAahvf,KAAK8nd,UAAUqgB,qBAEhCnoe,KAAKivf,aAAe9vD,EAAS6vD,EAAWjjf,IAAM,GAC9C/L,KAAKkvf,eAAiB/vD,EAAS6vD,EAAWhjf,OAAS,GAG/ChM,KAAKivf,cAAgBjvf,KAAKkvf,eAC1Blvf,KAAKuhf,wBAGLvhf,KAAK8gf,yBAGbmM,EAAev6d,UAAU6ud,sBAAwB,WACzCvhf,KAAKmjf,mBAGTnjf,KAAKojf,cAAgB,EACrBpjf,KAAKmjf,iBAAmBh4d,OAAO+gH,YAAYlsI,KAAKsjf,aAAa/4c,KAAKvqC,MAAO,OAE7Eitf,EAAev6d,UAAUoud,sBAAwB,WACxC9gf,KAAKsjf,eAGVn4d,OAAOihH,cAAcpsI,KAAKmjf,kBAC1Bnjf,KAAKmjf,iBAAmB,OAE5B8J,EAAev6d,UAAU4wd,aAAe,WAGpC,IAAIC,EAMAC,EALJxjf,KAAKojf,iBACLG,EAAe,GAA2B,EAArBvjf,KAAKojf,eACP,MACfG,EAAe,KAGfvjf,KAAKkvf,eACL1L,EAAcxjf,KAAK8nd,UAAUqnC,iBAAiB5L,GAEzCvjf,KAAKivf,eACVzL,EAAcxjf,KAAK8nd,UAAUqnC,kBAAkB5L,IAE/B,IAAhBC,GACAxjf,KAAKiid,WAAWjid,KAAKyhf,oBAG7BwL,EAAev6d,UAAU08d,eAAiB,SAAUtla,GAChD,IAAIpoC,EAAQ1hD,KACZ,GAAK8pF,EAAO0qM,eAIZ,GAAIx0R,KAAKund,mBAAmB5C,iBAAiB76X,GACzC/+C,QAAQ24B,KAAK,iIADjB,CAIA,IAAI2rb,EAAkB,CAClB76N,aAAc1qM,EAAO0qM,cAErB1qM,EAAOwla,UACPxla,EAAOwla,cAAW7qf,EAClB4qf,EAAkBvla,IAGdA,EAAO65X,cACP0rC,EAAgB1rC,YAAc,SAAU1vb,GACpC61D,EAAO65X,YAAYjia,EAAM6tc,uBAAuBxgG,GAAOsE,qBAAsBp/X,MAGjF61D,EAAOi6X,cACPsrC,EAAgBtrC,YAAc,SAAU9vb,GACpC61D,EAAOi6X,YAAYria,EAAM6tc,uBAAuBxgG,GAAOwE,qBAAsBt/X,MAGjF61D,EAAOm4X,aACPotC,EAAgBptC,WAAa,SAAUhub,GACnC61D,EAAOm4X,WAAWvga,EAAM6tc,uBAAuBxgG,GAAOuE,oBAAqBr/X,MAG/E61D,EAAOk4X,aACPqtC,EAAgBrtC,WAAa,SAAU/tb,GACnC61D,EAAOk4X,WAAWtga,EAAM6tc,uBAAuBxgG,GAAOyE,mBAAoBv/X,OAItFj0B,KAAKund,mBAAmBjD,cAAcwoC,GAAW,CAAEzoC,eAAgB,SAAU3jd,GAAQ,OAAOA,IAAS28B,EAAQojb,eAAe4G,SAAYvD,YAAa,WAAc,OAAOhD,GAAmBsF,WAAc1B,UAAU,GAAQ2qC,SApCzNj9Y,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KAAK,sEAAyE,+BAsC5Hupb,EAAev6d,UAAU88d,eAAiB,SAAU38b,GAChD,IAAInR,EAAQ1hD,KACRw0R,EAAex0R,KAAKw0R,aAAajqP,KAAKvqC,MACtC2jd,EAAc3jd,KAAK2jd,YAAYp5a,KAAKvqC,MACpC+jd,EAAc/jd,KAAK+jd,YAAYx5a,KAAKvqC,MACpCiid,EAAajid,KAAKiid,WAAW13a,KAAKvqC,MAClCgid,EAAahid,KAAKgid,WAAWz3a,KAAKvqC,MACtC,OAAK6yD,EAGE,CACH2hO,aAAcA,EACdmvL,YAAa9wZ,EAAO8wZ,YACb,SAAU1vb,GACT0vb,EAAY1vb,GACZ4+B,EAAO8wZ,YAAYjia,EAAM6tc,uBAAuBxgG,GAAOsE,qBAAsBp/X,KAE/E0vb,EACNI,YAAalxZ,EAAOkxZ,YACb,SAAU9vb,GACT8vb,EAAY9vb,GACZ4+B,EAAOkxZ,YAAYria,EAAM6tc,uBAAuBxgG,GAAOwE,qBAAsBt/X,KAE/E8vb,EACN9B,WAAYpvZ,EAAOovZ,WACZ,SAAUhub,GACTgub,EAAWhub,GACX4+B,EAAOovZ,WAAWvga,EAAM6tc,uBAAuBxgG,GAAOuE,oBAAqBr/X,KAE7Egub,EACND,WAAYnvZ,EAAOmvZ,WACZ,SAAU/tb,GACT+tb,EAAW/tb,GACX4+B,EAAOmvZ,WAAWtga,EAAM6tc,uBAAuBxgG,GAAOyE,mBAAoBv/X,KAE5E+tb,EACNstC,UAAU,GA5BH,CAAE96N,aAAcA,EAAcmvL,YAAaA,EAAaI,YAAaA,EAAa9B,WAAYA,EAAYD,WAAYA,EAAYstC,UAAU,IA+B3JrC,EAAev6d,UAAU68d,uBAAyB,SAAU7uf,EAAMoid,GAC9D,IAQI2sC,EARAC,EAAc1vf,KAAK8tf,kBAAkBC,sBAAsBjrC,GAAex9b,EAE1Eqqe,GAAa,EACbC,EAAW,KAMf,OARyBF,EAAc1vf,KAAKwub,SAASw/C,yBAIjD2hB,EAAY3vf,KAAKwub,SAAS2iD,mBAAmBue,GAC7CE,EAAW5vf,KAAKwub,SAAS4wB,OAAOuwC,IAG5B7sC,EAAcM,YAClB,KAAK/lb,EAAQqjb,kBAAkBwE,KAC3BuqC,EAAmB,OACnB,MACJ,KAAKpyd,EAAQqjb,kBAAkBuE,GAC3BwqC,EAAmB,KACnB,MACJ,QACIA,EAAmB,KAe3B,MAZY,CACR/uf,KAAMA,EACNupX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnC1sX,MAAOw6b,EAAcx6b,MACrBo7H,KAAMo/T,EAAcP,SAAS7tE,QAC7BvgR,MAAO2uV,EAAcP,SAAS/rE,SAC9Bm5G,UAAWA,EACXC,SAAUA,EACVtqe,EAAGoqe,EACHtsC,WAAYqsC,IAIpBxC,EAAev6d,UAAU+lU,cAAgB,SAAU/3V,EAAMoid,GACrD,IAAIx6b,EAAQtoB,KAAKuvf,uBAAuB7uf,EAAMoid,GAC9C9id,KAAK0/Y,aAAajnD,cAAcnwU,IAEpC2ke,EAAev6d,UAAUqxb,YAAc,SAAUjB,GAC7C9id,KAAKy4V,cAAcs2D,GAAOwE,qBAAsBuvD,GAChD9id,KAAKgqJ,aAAa84T,GAClB9id,KAAK4uf,oBACD5uf,KAAK0tf,eAAe5qC,KACpB9id,KAAKktf,gBAAiB,IAG9BD,EAAev6d,UAAUsvb,WAAa,SAAUc,GAC5C9id,KAAKy4V,cAAcs2D,GAAOyE,mBAAoBsvD,GAC9C9id,KAAKgqJ,aAAa84T,IACd9id,KAAKoqY,mBAAmBmtC,qBACvBv3a,KAAKoqY,mBAAmBqtC,iCAAoCz3a,KAAK0tf,eAAe5qC,IAChF9id,KAAK6tf,yBAAyB/qC,IAC/B9id,KAAKouf,yBAAyBtrC,IAGtCmqC,EAAev6d,UAAUs3H,aAAe,SAAU84T,GAC9C9id,KAAK8gf,wBACL9gf,KAAKytf,YAAY3qC,GAAezvc,QAAQ,SAAUqhY,GAC9CA,EAAQsrD,aAAY,MAG5B+sD,GAAa,CACTpwG,GAAU,uBACXswG,EAAev6d,UAAW,0BAAsB,GACnDq6d,GAAa,CACTpwG,GAAU,aACXswG,EAAev6d,UAAW,gBAAY,GACzCq6d,GAAa,CACTpwG,GAAU,qBACXswG,EAAev6d,UAAW,wBAAoB,GACjDq6d,GAAa,CACTpwG,GAAU,oBACXswG,EAAev6d,UAAW,uBAAmB,GAChDq6d,GAAa,CACTpwG,GAAU,mBACXswG,EAAev6d,UAAW,sBAAkB,GAC/Cq6d,GAAa,CACTpwG,GAAU,kBACXswG,EAAev6d,UAAW,qBAAiB,GAC9Cq6d,GAAa,CACTpwG,GAAU,uBACXswG,EAAev6d,UAAW,0BAAsB,GACnDq6d,GAAa,CACTpwG,GAAU,wBACXswG,EAAev6d,UAAW,2BAAuB,GACpDq6d,GAAa,CACTjwG,GAAS,oBACVmwG,EAAev6d,UAAW,uBAAmB,GAChDq6d,GAAa,CACTpwG,GAAU,sBACXswG,EAAev6d,UAAW,yBAAqB,GAClDq6d,GAAa,CACTpwG,GAAU,iBACXswG,EAAev6d,UAAW,oBAAgB,GAC7Cq6d,GAAa,CACTzwG,IACD2wG,EAAev6d,UAAW,gBAAiB,MAC9Cq6d,GAAa,CACTvwG,IACDywG,EAAev6d,UAAW,UAAW,MACjCu6d,EA/YyB,GAwZhC4C,IACIzmX,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFsmX,GAAsD,SAAUjmX,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5DimX,GAA2B,SAAUv3a,GAErC,SAASu3a,IACL,IAAIruc,EAAQ82B,EAAOtjD,KAAKl1B,KAJY,giGAIyBA,KAI7D,OAHA0hD,EAAMg3B,YAAc,EACpBh3B,EAAMt5B,WAAa,EACnBs5B,EAAMsuc,0CAA4C59Y,GAAEm6F,SAAS7qJ,EAAMuuc,iCAAiC1ld,KAAKmX,GAAQ,KAC1GA,EA0uCX,OAhvCAmuc,GAAYE,EAAWv3a,GAQvBu3a,EAAUr9d,UAAUy1c,mBAAqB,WAKrC,MAJa,CACTp8d,IAAK/L,KAAKkwf,cAAc9ne,UACxBpc,OAAQhM,KAAKkwf,cAAc9ne,UAAYpoB,KAAKkwf,cAAcz+d,eAIlEs+d,EAAUr9d,UAAUy9d,mBAAqB,WAKrC,MAJa,CACTlkf,KAAMjM,KAAKowf,gBAAgB13a,WAC3BxsE,MAAOlM,KAAKowf,gBAAgB13a,WAAa14E,KAAKowf,gBAAgBt9a,cAItEi9a,EAAUr9d,UAAU29d,iBAAmB,WACnCrwf,KAAKswf,qBAETP,EAAUr9d,UAAU49d,kBAAoB,WACpC,IAAIlwd,EAAUpgC,KAAKi9d,gBAAgB78b,UAC/B43Y,EAA0Bh4a,KAAKoqY,mBAAmB4tC,0BAEtDh4a,KADaogC,IAAY43Y,EAA0B,oBAAsB,kBAG7E+3E,EAAUr9d,UAAUm1d,mBAAqB,WAKjC7nf,KAAKujb,iBAAiB5b,YAAc3na,KAAKi9d,gBAAgB78b,WACzDpgC,KAAKuwf,eAGbR,EAAUr9d,UAAU4yQ,KAAO,WACvB,IAAI5jP,EAAQ1hD,KACZA,KAAK64E,YAAc74E,KAAKoqY,mBAAmB3M,oBAC3Cz9X,KAAKogX,UAAYpgX,KAAKoqY,mBAAmBme,cACzCvoZ,KAAK4rd,YAAc5rd,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBAExErzY,KAAKoqY,mBAAmB+1C,iBAAiBngb,KAAKsmY,UAC9CtmY,KAAKoqY,mBAAmB+1C,iBAAiBngb,KAAKkwf,eAC9Clwf,KAAKwwf,8BACLxwf,KAAKywf,4BACLzwf,KAAK0wf,8BACL1wf,KAAK2wf,oBACL3wf,KAAK4wf,mBACL5wf,KAAK6wf,oBACD7wf,KAAKoqY,mBAAmB0rC,sBAAwB91a,KAAKoqY,mBAAmBywC,cACxE76a,KAAK8wf,qBAET9wf,KAAK+wf,qBAAqB/wf,KAAKoqY,mBAAmB6zC,0BAClDj+a,KAAKgxf,yBACLhxf,KAAKixf,8BACLjxf,KAAKkxf,yBACLlxf,KAAKq4e,oBACLr4e,KAAKmxf,oBACLnxf,KAAKoxf,0BACLpxf,KAAKqxf,mCACLrxf,KAAKsxf,yBACLtxf,KAAKuxf,qBACDvxf,KAAKgyd,QACLhyd,KAAKwxf,uBAETxxf,KAAKyxf,iCACLzxf,KAAKmjZ,QAAQinF,iBAAiBpqe,MAC9BA,KAAK0xf,oBAAoBtnB,iBAAiBpqe,MAC1CA,KAAK4+d,eAAewL,iBAAiBpqe,MACrCA,KAAK2xf,kBAAkBvnB,iBAAiBpqe,MACxCA,KAAK4xf,aAAaxnB,iBAAiBpqe,MACnCA,KAAKwjb,qBAAqB4mD,iBAAiBpqe,MAC3CA,KAAK+/Z,uBAAuBqqE,iBAAiBpqe,MAC7CA,KAAKk5Z,oBAAoBkxE,iBAAiBpqe,MAC1CA,KAAK6xf,8BAA8BznB,iBAAiBpqe,MACpDA,KAAK8tf,kBAAkB1jB,iBAAiBpqe,MACxCA,KAAK8md,MAAMsjB,iBAAiBpqe,MAC5BA,KAAKm3d,YAAYiT,iBAAiBpqe,MAC9BA,KAAKosd,iBACLpsd,KAAKosd,gBAAgBge,iBAAiBpqe,MAE1C,CAACA,KAAKowf,gBAAiBpwf,KAAKkwf,eAAe78e,QAAQ,SAAUk0K,GACzD,IAAIuqU,EAAwBpwc,EAAMqwc,sBAAsBC,cAAczqU,EAAU7lI,EAAMuwc,wBAAwB1nd,KAAKmX,IACnHA,EAAMilY,eAAe,WAAc,OAAOmrE,QAE9C,CAAC9xf,KAAKkyf,KAAMlyf,KAAKkwf,cAAelwf,KAAKmyf,SAAS9+e,QAAQ,SAAUhI,GAC5Dq2C,EAAM+kY,4BAA4Bp7a,EAAS,UAAW,WAClD+mG,GAAE+tR,YAAY90X,EAAS,kBAE3Bq2C,EAAM+kY,4BAA4Bp7a,EAAS,WAAY,SAAU4oB,GACxD5oB,EAAQuhB,SAASqH,EAAEq1F,gBACpBlX,GAAEiuR,eAAeh1X,EAAS,qBAK1C0kf,EAAUr9d,UAAUg4c,mBAAqB,WACrC,IAAI0nB,EAAiBpyf,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU+C,iBACtErzY,KAAK4rd,cAAgBwmC,IACrBpyf,KAAK4rd,YAAcwmC,EACnBpyf,KAAKqyf,wBAELryf,KAAKgxf,2BAGbjB,EAAUr9d,UAAUu/d,wBAA0B,WACtC7/Y,GAAEw4K,UAAU5qR,KAAKowf,kBACjBpwf,KAAKsyf,0BACLtyf,KAAKujb,iBAAiBllB,qBAAqBr+Z,KAAKshf,mBAGhDthf,KAAKuyf,WAAa,GAI1BxC,EAAUr9d,UAAU8/d,mBAAqB,SAAUjzG,GAC/Cv/Y,KAAKugY,oBAAoB,mBAAoBgf,IAEjDwwG,EAAUr9d,UAAUq+d,qBAAuB,SAAU5hc,QAC9B,IAAfA,IAAyBA,GAAa,GAC1C,CAACnvD,KAAKkyf,KAAMlyf,KAAKkwf,cAAelwf,KAAKmyf,SAChC9+e,QAAQ,SAAUu5M,GAAM,OAAOx6G,GAAEmuR,oBAAoB3zK,EAAI,gBAAiBz9J,MAEnF4gc,EAAUr9d,UAAU6+d,mBAAqB,WACrC,IAAI1pC,EAAiB,IAAIolC,GAAejtf,KAAKkwf,cAAelwf,MAC5DA,KAAKqkJ,aAAa+1P,SAASytE,GAC3B7nd,KAAKund,mBAAmBjD,cAAcuD,GACtC7nd,KAAK6nd,eAAiBA,GAE1BkoC,EAAUr9d,UAAUq1b,kBAAoB,WACpC,OAAO/nd,KAAK6nd,gBAEhBkoC,EAAUr9d,UAAU2+d,iCAAmC,WACnD,IAAI3vc,EAAQ1hD,KACZ,GAAKA,KAAKoqY,mBAAmB8vC,kCAA7B,CAGA,IAAIu4E,EAAmB,SAAUnqe,GAM7B,IAJA,IAEIoqe,GAAkB,EAClB/oH,EAHmBrhX,EAAMghG,cAItBlX,GAAE8rR,OAAOyL,KAAa+oH,GAGzBA,IAFgBhxc,EAAM0oV,mBAAmBG,WAAWZ,EAASu+E,GAAmBE,+BACnE1ma,EAAMwuc,gBAAkBvmH,GAAWjoV,EAAMywc,UAAYxoH,GAAWjoV,EAAMwwc,OAASvoH,EAE5FA,EAAUA,EAAQjpX,WAEjBgye,GACDhxc,EAAMy1a,YAAYrkB,eAG1B9yc,KAAKymb,4BAA4Bzmb,KAAKkwf,cAAe,WAAYuC,GACjEzyf,KAAKymb,4BAA4Bzmb,KAAKkyf,KAAM,WAAYO,GACxDzyf,KAAKymb,4BAA4Bzmb,KAAKmyf,QAAS,WAAYM,KAE/D1C,EAAUr9d,UAAU8+d,qBAAuB,WACvC,IAAI9vc,EAAQ1hD,KAER2yf,GAAiB,EACjBjyd,EAAW,WAEPiyd,IAGJA,GAAiB,EACjBxne,OAAOyZ,WAAW,WACd+td,GAAiB,EACjBjxc,EAAMswa,OAAO7lL,UACd,KAIPnsS,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOc,gCAAiCnvX,GAC5F1gC,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOe,8BAA+BpvX,IAI9Fqvd,EAAUr9d,UAAUw+d,uBAAyB,WACzClxf,KAAK0pb,oBAAoB,YAAa,SAAUpha,GAC5C,GAAIA,EAAMkE,kBAAkBome,iBAExB,OADAtqe,EAAM4E,kBACC,KAInB6ie,EAAUr9d,UAAUi+d,kBAAoB,WACpC3wf,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOc,gCAAiC7vZ,KAAKoje,0BAA0B74b,KAAKvqC,OAChIA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOkE,sCAAuCjzZ,KAAKyxf,+BAA+Blnd,KAAKvqC,OAC3IA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOmB,8BAA+BlwZ,KAAKixf,4BAA4B1md,KAAKvqC,OAChIA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOiB,uBAAwBhwZ,KAAKqwf,iBAAiB9ld,KAAKvqC,OAC9GA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOkB,uBAAwBjwZ,KAAKqwf,iBAAiB9ld,KAAKvqC,OAC9GA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOE,yBAA0BjvZ,KAAK6nf,mBAAmBt9c,KAAKvqC,OAClHA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmB8Q,mBAAoBhkb,KAAKixf,4BAA4B1md,KAAKvqC,OACvIA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBiR,yBAA0Bnkb,KAAKixf,4BAA4B1md,KAAKvqC,OAC7IA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBmR,yBAA0Brkb,KAAKixf,4BAA4B1md,KAAKvqC,OAC7IA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBoR,+BAAgCtkb,KAAKixf,4BAA4B1md,KAAKvqC,OACnJA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBqR,6BAA8Bvkb,KAAKixf,4BAA4B1md,KAAKvqC,OACjJA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB8oC,GAAmBQ,gBAAiB1za,KAAK0qe,mBAAmBngc,KAAKvqC,QAE/H+vf,EAAUr9d,UAAUk+d,iBAAmB,WACnC,IAAIlvc,EAAQ1hD,KACPA,KAAKoqY,mBAAmBiqC,2BACzBjiU,GAAEgsR,QAAQp+X,KAAKosd,kBAIF,CACbpsd,KAAK6yf,eACL7yf,KAAK8yf,gBACL9yf,KAAK+yf,iBACL/yf,KAAKkyf,KACLlyf,KAAKmyf,SAEE9+e,QAAQ,SAAUgF,GACzB,IAAIyxE,EAAS,CACTs5S,SAAU/qX,EACV0pc,YAAarga,EAAM0qa,gBAAgBrK,YAAYx3a,KAAKmX,EAAM0qa,iBAC1DpK,WAAYtga,EAAM0qa,gBAAgBpK,WAAWz3a,KAAKmX,EAAM0qa,iBACxDnK,WAAYvga,EAAM0qa,gBAAgBnK,WAAW13a,KAAKmX,EAAM0qa,kBAE5D1qa,EAAMwga,YAAYP,cAAc73X,GAChCpoC,EAAMilY,eAAe,WAAc,OAAOjlY,EAAMwga,YAAYC,iBAAiBr4X,QAGrFima,EAAUr9d,UAAU2ld,kBAAoB,WACpC,IAAI32b,EAAQ1hD,KACK,CAAC,QAAS,YAAa,WAAY,cAAe,YAAa,YACrEqT,QAAQ,SAAUyiC,GACzB,IAAIpV,EAAWghB,EAAMsxc,kBAAkBzod,KAAKmX,EAAO5L,GACnD4L,EAAMuxc,mBAAmB5/e,QAAQ,SAAUgF,GACvC,OAAOqpC,EAAM+kY,4BAA4Bpua,EAAWy9B,EAAWpV,QAI3Eqvd,EAAUr9d,UAAUy+d,kBAAoB,WACpC,IAAIzvc,EAAQ1hD,KACK,CAAC,UAAW,YAClBqT,QAAQ,SAAUyiC,GACzB,IAAIpV,EAAWghB,EAAMwxc,qBAAqB3od,KAAKmX,EAAO5L,GACtD4L,EAAMuxc,mBAAmB5/e,QAAQ,SAAUgF,GACvCqpC,EAAM+kY,4BAA4Bpua,EAAWy9B,EAAWpV,QAIpEqvd,EAAUr9d,UAAU0+d,wBAA0B,WAC1C,IAAI1vc,EAAQ1hD,KAWZA,KAAKymb,4BAA4Bzmb,KAAKkwf,cAAe,cARtC,SAAUn6G,GACrB,IAAIvpX,EAAS4lF,GAAEq3R,UAAUsM,GACrBvpX,IAAWk1B,EAAMwuc,eAAiB1je,IAAWk1B,EAAM0uc,kBAEnD1uc,EAAMyxc,cAAcp9G,EAAY,KAAM,KAAM,KAAM,MAClDr0V,EAAMoiU,4BAA4BiyB,OAO9Cg6G,EAAUr9d,UAAU0ge,kBAAoB,WACpC,GAAKpzf,KAAKkwf,cAGV,OAAOlwf,KAAKkwf,cAAczlf,yBAE9Bslf,EAAUr9d,UAAU2ge,eAAiB,SAAU/qe,GAE3C,IADA,IAAI+hX,EAAgBj4R,GAAEq3R,UAAUnhX,GACzB+hX,GAAe,CAClB,IAAI0iG,EAAc/se,KAAKoqY,mBAAmBG,WAAWF,EAAesxF,GAAQgK,2BAC5E,GAAIoH,EACA,OAAOA,EAEX1iG,EAAgBA,EAAczhW,cAElC,OAAO,MAEXmnd,EAAUr9d,UAAUwge,qBAAuB,SAAUp9c,EAAW2+V,GAC5D,IAAIqqF,EAAW1sX,GAAE+3R,oBAAoBnqY,KAAKoqY,mBAAoBqK,GAC9D,GAAKqqF,EAAL,CAGA,IAAIpqF,EAAUoqF,EAASxO,iBAAiBwY,aACpCtje,EAASs5d,EAAS34D,YAClBxxB,EAAUmqF,EAASpI,YAEvB,IAD6BtkX,GAAEoiS,+BAA+Bx0Y,KAAKoqY,mBAAoBqK,EAAeC,EAASlvY,EAAQmvY,GAEnH,OAAQ7+V,GACJ,IAAK,WAEmB6+V,GAAW30Y,KAAK2xf,kBAAkB2B,uBAAuB7+G,IAGzEqqF,EAAS1ob,UAAUq+V,GAGvBz0Y,KAAKuzf,iBAAiB9+G,EAAeqqF,GACrC,MACJ,IAAK,WACDA,EAASvH,WAAW9iF,GAIhC,GAAkB,YAAd3+V,EAAyB,CACzB,IAAI09c,EAAmB10B,EAAS/mI,YAAY08C,EAAesa,GAAOwC,qBAClEvxZ,KAAK8md,MAAMpnE,aAAajnD,cAAc+6J,GAE1C,GAAkB,aAAd19c,EAA0B,CAC1B,IAAI29c,EAAoB30B,EAAS/mI,YAAY08C,EAAesa,GAAOyC,sBACnExxZ,KAAK8md,MAAMpnE,aAAajnD,cAAcg7J,MAG9C1D,EAAUr9d,UAAU6ge,iBAAmB,SAAU9+G,EAAeqqF,GAE5D,IAAKrqF,EAActtM,SAAYstM,EAAcrtM,WAMzC03R,EAASpI,aAKR12d,KAAK8tf,kBAAkB4F,oBAAoBj/G,GAGhD,OAAQA,EAAcltR,OAClB,KAAK+oR,GAAU0B,MACX,OAAOhyY,KAAK2zf,WAAWl/G,GAC3B,KAAKnE,GAAU2B,MACX,OAAOjyY,KAAK4zf,WAAWn/G,GAC3B,KAAKnE,GAAU4B,MACX,OAAOlyY,KAAK6zf,aAChB,KAAKvjH,GAAU6B,MACX,OAAOnyY,KAAK8zf,WAAWr/G,GAC3B,KAAKnE,GAAU8B,MACX,OAAOqC,EAAchtR,SAAWznH,KAAK+zf,gBAAgBC,OAASh0f,KAAK+zf,gBAAgBE,OACvF,KAAK3jH,GAAU+B,MACX,OAAOryY,KAAK+zf,gBAAgBC,SAIxCjE,EAAUr9d,UAAUuzU,YAAc,WAC9BjmW,KAAKkwf,cAAc9ne,UAAY,GAEnC2ne,EAAUr9d,UAAUsge,kBAAoB,SAAUl9c,EAAWigW,GACzD,GAAK/1Y,KAAK8tf,kBAAkB4F,oBAAoB39G,KAC5C3jS,GAAE83R,2BAA2B6L,GADjC,CAIA,IAAI21E,EAAU1rd,KAAKqzf,eAAet9G,GAC9B+oF,EAAW9+d,KAAK8tf,kBAAkBoG,wBAAwBn+G,GAC5C,gBAAdjgW,GACA91C,KAAK8jX,4BAA4BiyB,GACjC/1Y,KAAKm0f,4BAA4Bp+G,EAAY,KAAM21E,EAASoT,KAGxDA,GACAA,EAAS3K,aAAar+a,EAAWigW,GAEjC21E,GACAA,EAAQyI,aAAar+a,EAAWigW,MAI5Cg6G,EAAUr9d,UAAU4+d,uBAAyB,WACzC,IAAI5vc,EAAQ1hD,KAEPoyG,GAAEirR,kBAGPr9X,KAAKizf,mBAAmB5/e,QAAQ,SAAUgF,GACtC,IAAI2ib,EAAgB,IAAIvC,GAAcpgb,GAMtCqpC,EAAM+kY,4BAA4BuU,EAAevC,GAAcc,eALzC,SAAUjxa,GAC5B,IAAIojc,EAAUhqa,EAAM2xc,eAAe/qe,EAAM+wa,YACrCylC,EAAWp9a,EAAMosc,kBAAkBoG,wBAAwB5re,EAAM+wa,YACrE33Y,EAAMyyc,4BAA4B,KAAM7re,EAAM+wa,WAAYqyB,EAASoT,KAGvEp9a,EAAMilY,eAAe,WAAc,OAAOqU,EAAc95a,eAGhE6ue,EAAUr9d,UAAUyhe,4BAA8B,SAAUp+G,EAAYsjD,EAAYqyB,EAASoT,GACzF,IAAIpqF,EAAUg3E,EAAUA,EAAQod,aAAe,KAC3Ctje,EAASs5d,EAAWA,EAAS34D,YAAc,KAC3C5ka,EAAQ,KACRiE,IAEAs5d,EAASxK,6BADKv+E,GAA0BsjD,GAExC93b,EAAQvB,KAAKohc,aAAatlU,SAASt2H,EAAQkvY,IAE/C10Y,KAAKmzf,cAAcp9G,EAAYsjD,EAAY3kD,EAASlvY,EAAQjE,IAEhEwuf,EAAUr9d,UAAUyge,cAAgB,SAAUp9G,EAAYsjD,EAAY3kD,EAASlvY,EAAQjE,IAG9EvB,KAAKoqY,mBAAmB4xC,oCAErBjmC,IAAeA,EAAW5uM,SAAW4uM,EAAW3uM,UAIpDpnM,KAAKo0f,qBAAuBp0f,KAAKoqY,mBAAmB2xC,0BAEpD/7a,KAAKo0f,mBAAmB74D,SAAS7mD,EAASlvY,EAAQjE,EAD/Bw0Y,GAA0BsjD,EAAWvqS,QAAQ,KAElDinP,GAA0BsjD,GAChCnsa,mBAGhB6ie,EAAUr9d,UAAUoxV,4BAA8B,SAAUiyB,GAKxD,IAAI3L,EAAqBpqY,KAAKoqY,mBAC1B7iR,EAAQwuR,EAAWxuR,OACnB6iR,EAAmByxC,iCAClBzxC,EAAmBwxC,gCAA4C,IAAVr0T,IACtDwuR,EAAW7oX,kBAGnB6ie,EAAUr9d,UAAUihe,WAAa,SAAUrre,GACvC,IAAI3d,EAAK3K,KAAMujb,EAAmB54a,EAAG44a,iBAAkB0oD,EAAiBthe,EAAGshe,eAAsD7f,EAAkBzhd,EAAGyhd,gBAClJj5E,EAAgB7C,GAAU6C,cAAeD,EAAa5C,GAAU4C,WACpE,GAAIk5E,GAFyGzhd,EAAGsyd,gBAEzEuT,iBAAkB,CACrD,IAAI5le,EAAK,CACLqhe,EAAe7rc,QAAQ8yW,GACvB+4F,EAAe7rc,QAAQ+yW,IAEvBkhH,EADkBzpf,EAAG,GACc,KAAOsoY,EAC1CohH,OAAc,EACdC,OAAS,EAHsC3pf,EAAG,IAKlD0pf,EAAc,KACdC,EAASv0f,KAAKi9d,gBAAgBu3B,cAAgB,IAG9CF,EAAcnhH,EACdohH,EAAStoB,EAAe/zD,yBAAyB/za,OAAS,GAE9D,IAAI0wZ,EAAsB0uB,EAAiB/pB,yBAC3C,GAAIpnT,GAAEosR,eAAeq2B,GACjB,OAEJu3D,EAAgBqoC,aAAa,CACzBC,cAAe,EACfC,eAAgBN,EAChBO,YAAaL,EACbM,aAAcP,EACdQ,YAAajgG,EAAoB,GACjCkgG,UAAW3iZ,GAAEj7F,KAAK09Y,KAG1BvsY,EAAM4E,kBAEV6ie,EAAUr9d,UAAUkhe,WAAa,SAAUtre,GAClCtoB,KAAKg1f,mBAAoBh1f,KAAKoqY,mBAAmB0zC,8BAGtD99a,KAAKg1f,iBAAiBC,kBACtB3se,EAAM4E,mBAEV6ie,EAAUr9d,UAAUmhe,WAAa,WACzBn1G,GAAeM,aAAa3hX,EAAQ6/W,YAAYg4G,mBAAqBl1f,KAAKoqY,mBAAmB+xC,4BAC7Fn8a,KAAKg1f,iBAAiBG,sBAG9BpF,EAAUr9d,UAAUohe,WAAa,SAAUxre,GACnCo2X,GAAeM,aAAa3hX,EAAQ6/W,YAAYg4G,mBAAqBl1f,KAAKoqY,mBAAmB+xC,4BAC7Fn8a,KAAKg1f,iBAAiBI,gBAE1B9se,EAAM4E,kBAQV6ie,EAAUr9d,UAAUwgd,mBAAqB,SAAUvpe,EAAOK,GAEtD,IAAIhK,KAAK4rd,YAAT,CAGA,IAAIq6B,EAAWjmf,KAAKi9d,gBAAgBu3B,cACpC,GAAqB,iBAAV7qf,GAAsBA,EAAQ,GAAKA,GAASs8e,EACnDl7c,QAAQ24B,KAAK,6CAA+C/5D,OADhE,CAIA3J,KAAKi9d,gBAAgBo4B,kBAAkB1rf,GACvC,IACI2rf,EADA5gH,EAAU10Y,KAAKi9d,gBAAgB7d,OAAOz1c,GAE1C,EAAG,CACC,IAAI4rf,EAAiB7gH,EAAQ0qD,OACzBo2D,EAAoB9gH,EAAQp+B,UAC5Bm6H,EAAmBzwe,KAAKi9d,gBAAgB0L,iBACxC8sB,EAAc/gH,EAAQ0qD,OAASqxC,EAC/BilB,EAAiBD,EAAc/gH,EAAQp+B,UACvCrzN,EAAiBjjJ,KAAKmoe,qBACtBwtB,EAAe31f,KAAK4xf,aAAalhB,YACjCklB,EAAa3yW,EAAel3I,IAAM4pf,EAClCE,EAAgB5yW,EAAej3I,OAAS2pf,EACxCG,EAAiBD,EAAgBD,EAGjCG,EAAQ/1f,KAAK4xf,aAAaoE,0BAA0BP,GACpDQ,EAAWj2f,KAAK4xf,aAAaoE,0BAA0BN,EAAiBI,GAExEI,EAAW33e,KAAKG,KAAKq3e,EAAQE,GAAY,EAAGR,GAG5Clke,EAAoB,KACP,QAAbvnB,EACAunB,EAAoBwke,EAEF,WAAb/rf,EACLunB,EAAoB0ke,EAEF,WAAbjsf,EACLunB,EAAoB2ke,EAVDN,EAAaH,EAchClke,EAAoBwke,EAbDF,EAAgBH,IAiBnCnke,EAAoB0ke,GAEE,OAAtB1ke,IACAvxB,KAAKkwf,cAAc9ne,UAAYmJ,EAC/BvxB,KAAKm3d,YAAYsT,qBAMrB6qB,EAAgCC,IAAmB7gH,EAAQ0qD,QACnDo2D,IAAsB9gH,EAAQp+B,gBACjCg/I,GAETt1f,KAAK24Z,sBAAsBC,oBAG/Bm3F,EAAUr9d,UAAU4ud,eAAiB,WACjC,OAAOthf,KAAKowf,gBAAgBr9a,aAEhCg9a,EAAUr9d,UAAU6wW,wBAA0B,WAC1C,IAAIu0C,EAA6B93a,KAAKoqY,mBAAmB0tC,6BAEzD,OADA1lU,GAAEmuR,oBAAoBvgY,KAAKkwf,cAAe,2BAA4Bp4E,GAC/DA,GAA8B1lU,GAAEmxR,wBAAwBvjY,KAAKkwf,gBAExEH,EAAUr9d,UAAU4wW,0BAA4B,WAC5C,OAAOlxR,GAAEkxR,0BAA0BtjY,KAAKowf,kBAI5CL,EAAUr9d,UAAU4/d,wBAA0B,WAE1Ctyf,KAAKm2f,6BAELn2f,KAAKo2f,kBAELp2f,KAAKq2f,8BACLr2f,KAAKgxf,yBAODhxf,KAAK04E,aAAe14E,KAAKihf,+BACzBjhf,KAAKs2f,uBAAuBt2f,KAAKowf,kBAGzCL,EAAUr9d,UAAUyje,2BAA6B,WAO7Cn2f,KAAKu2f,iCACL3xd,WAAW5kC,KAAKu2f,+BAA+Bhsd,KAAKvqC,MAAO,MAE/D+vf,EAAUr9d,UAAU6je,+BAAiC,WACjD,IAAIzsa,EAAS,CACT0sa,yBAAyB,EACzBC,uBAAuB,GAE3B3sa,EAAO2sa,sBAAwBz2f,KAAKujY,0BACpCz5S,EAAO0sa,wBAA0Bx2f,KAAKsjY,4BACtCtjY,KAAK0lf,qBAAqBgR,kBAAkB5sa,GAC5C9pF,KAAK22f,2BAA2B7sa,EAAO0sa,yBACvCx2f,KAAK42f,gCAAgC9sa,EAAO2sa,wBAEhD1G,EAAUr9d,UAAUike,2BAA6B,SAAU5iU,GACvD,IAAI4jP,EAA6B33a,KAAKoqY,mBAAmButC,6BACrDk/E,EAAa9iU,GAAW/zL,KAAKoqY,mBAAmB3M,qBAA4B,EAC5Eq5H,EAAuBn/E,EAA0C,EAAbk/E,EACpDE,EAAe3kZ,GAAEkqR,eAAiBvoM,EACtC/zL,KAAKowf,gBAAgB7kf,MAAMf,OAAS,eAAiBqsf,EAAa,MAClEzkZ,GAAEuvR,eAAe3hY,KAAKg3f,sBAAuBF,GAG7C1kZ,GAAEuvR,eAAe3hY,KAAKi3f,8BAA+BH,GAAuBC,EAAe,EAAI,IAC/F3kZ,GAAEuvR,eAAe3hY,KAAKk3f,+BAAgCJ,IAE1D/G,EAAUr9d,UAAUkke,gCAAkC,SAAUryV,GAE5DvkK,KAAKkyf,KAAK3mf,MAAM+pE,UAAYt1E,KAAKmyf,QAAQ5mf,MAAM+pE,UADhCivF,EAAO,SAAW,SAEjCvkK,KAAKm3f,8BAETpH,EAAUr9d,UAAUq9c,eAAiB,WACjC,IAEInzT,GAFc58K,KAAK4+d,eAAe5kE,oBACvBh6Z,KAAKi9d,gBAAgBu3B,eACCvie,WACrCjyB,KAAKsmY,SAASz3X,aAAa,gBAAiB+tK,IAEhDmzU,EAAUr9d,UAAU0ke,kBAAoB,WACpC,IAAIjyf,EAAUnF,KAAK8md,MAAMvjC,iBAAiB/pB,yBAC1Cx5Z,KAAKsmY,SAASz3X,aAAa,gBAAiB1J,EAAQhB,OAAO8tB,aAE/D89d,EAAUr9d,UAAUygd,oBAAsB,SAAUx2d,GAChD,IAAInX,EAASxF,KAAKujb,iBAAiB5lB,cAAchhZ,GACjD,GAAKnX,EAGL,GAAIA,EAAO+/Y,WACPx6W,QAAQ24B,KAAK,mCAAqCl+D,EAAOkgZ,YAAc,gDAAmDlgZ,EAAOqgZ,iBAGrI,GAAK7lZ,KAAKujb,iBAAiBlpB,kBAAkB70Z,GAA7C,CAIA,IAKI6xf,EACAC,EANAC,EAAe/xf,EAAO2+Y,UACtBqzG,EAAgBD,EAAe/xf,EAAOugZ,iBACtC0xG,EAAgBz3f,KAAKowf,gBAAgBr9a,YACrCkwE,EAAiBjjJ,KAAKihf,8BACtB5rF,EAAYr1Z,KAAKujb,iBAAiBziB,wBAKlC9ga,KAAKogX,WACLi3I,EAAoBhiG,EAAYpyQ,EAAiBw0W,EACjDH,EAAqBjiG,EAAYpyQ,IAGjCo0W,EAAoBp0W,EACpBq0W,EAAqBG,EAAgBx0W,GAEzC,IAAIy0W,EAA0BL,EAAoBE,EAC9CI,EAA4BL,EAAqBE,EACjDI,EAAwBH,EAAgBjyf,EAAOugZ,iBAC/C8xG,EAAiBH,GAA2BE,EAC5CE,EAAkBH,EACE33f,KAAKihf,+BACzB4W,GAAkBC,IAOlB93f,KAAK+3f,4BAND/3f,KAAKogX,UACey3I,EAAkBxiG,EAAYoiG,EAAgBF,EAAiBliG,EAAYmiG,EAG3EK,EAAiBN,EAAgBC,EAAgBC,GAQ7Ez3f,KAAKq2f,8BAELr2f,KAAK24Z,sBAAsBC,sBAzCvB7tX,QAAQ24B,KAAK,oCA2CrBqsb,EAAUr9d,UAAUo+d,mBAAqB,WAChC9wf,KAAKoqY,mBAAmB2tC,4BACzB/3a,KAAKg4f,eAAelH,sBAG5Bf,EAAUr9d,UAAUule,kBAAoB,WAC/Bj4f,KAAKoqY,mBAAmB4tC,2BACzBh4a,KAAKg4f,eAAeC,qBAG5BlI,EAAUr9d,UAAU69d,YAAc,WAC9Bvwf,KAAKg4f,eAAezH,eAIxBR,EAAUr9d,UAAUi7Y,iBAAmB,SAAUuqF,GAC7C,IAAIx2c,EAAQ1hD,KACRs6F,EAAiBt6F,KAAKkwf,cAAcn9a,YACpCunB,EAAiB,EACjBt6F,KAAKujb,iBAAiB5V,iBAAiBrzU,EAAgB,yBAGvC71F,IAAhByzf,EACA/se,OAAOyZ,WAAW,WACd8c,EAAMisX,iBAAiB,MACxB,GAEkB,MAAhBuqF,EACL/se,OAAOyZ,WAAW,WACd8c,EAAMisX,iBAAiB,MACxB,KAEkB,MAAhBuqF,EACL/se,OAAOyZ,WAAW,WACd8c,EAAMisX,kBAAkB,IACzB,KAGH5iY,QAAQ24B,KAAK,4IAKrBqsb,EAAUr9d,UAAUyle,mBAAqB,WACrC,OAAOn4f,KAAK+yf,kBAEhBhD,EAAUr9d,UAAU+xd,4BAA8B,WAC9C,MAAO,CAACzkf,KAAKowf,gBAAiBpwf,KAAKo4f,aAAcp4f,KAAKq4f,kBAE1DtI,EAAUr9d,UAAU6xd,4BAA8B,WAC9C,MAAO,CAACvkf,KAAK6yf,eAAgB7yf,KAAKs4f,YAAat4f,KAAKu4f,WAExDxI,EAAUr9d,UAAU8xd,6BAA+B,WAC/C,MAAO,CAACxkf,KAAK8yf,gBAAiB9yf,KAAKw4f,aAAcx4f,KAAKy4f,YAE1D1I,EAAUr9d,UAAUg+d,4BAA8B,WAC9C,IAAIhvc,EAAQ1hD,KACZA,KAAKizf,mBAAqB,CACtBjzf,KAAK6yf,eAAgB7yf,KAAK8yf,gBAAiB9yf,KAAK+yf,iBAChD/yf,KAAKkyf,KAAMlyf,KAAKmyf,QAASnyf,KAAK04f,qBAElC14f,KAAK24f,uBAAyB,CAC1B71d,KAAM,IAAIopd,GAAsB,CAC5B7qH,WAAYrhY,KAAK+yf,iBACjBptD,SAAU3lc,KAAK44f,mBACf1T,UAAWllf,KAAKkwf,gBAEpB54R,UAAW,IAAI40R,GAAsB,CACjC7qH,WAAYrhY,KAAK04f,sBAErB5qB,WAAY,IAAIoe,GAAsB,CAAE7qH,WAAYrhY,KAAK6yf,iBACzD9kB,YAAa,IAAIme,GAAsB,CAAE7qH,WAAYrhY,KAAK8yf,kBAC1D1mB,YAAa,IAAI8f,GAAsB,CAAE7qH,WAAYrhY,KAAK64f,gBAC1D3sB,sBAAuB,IAAIggB,GAAsB,CAAE7qH,WAAYrhY,KAAKu4f,WACpEpsB,uBAAwB,IAAI+f,GAAsB,CAAE7qH,WAAYrhY,KAAKy4f,YACrEpsB,qBAAsB,IAAI6f,GAAsB,CAC5C7qH,WAAYrhY,KAAK84f,uBACjBxM,oBAAoB,IAExB9f,eAAgB,IAAI0f,GAAsB,CAAE7qH,WAAYrhY,KAAK+4f,mBAC7DzsB,yBAA0B,IAAI4f,GAAsB,CAAE7qH,WAAYrhY,KAAKs4f,cACvE/rB,0BAA2B,IAAI2f,GAAsB,CAAE7qH,WAAYrhY,KAAKw4f,eACxE/rB,wBAAyB,IAAIyf,GAAsB,CAC/C7qH,WAAYrhY,KAAKg5f,0BACjB1M,oBAAoB,KAG5Bl6Y,GAAEi4Q,cAAcrqX,KAAK24f,uBAAwB,SAAUh8e,EAAKtE,GACpDA,GACAqpC,EAAM2iG,aAAa+1P,SAAS/hY,MAIxC03e,EAAUr9d,UAAU+9d,0BAA4B,WAC5C,IAAI/uc,EAAQ1hD,KACR0gC,EAAW,WAGX,IAAIs/U,EAAct+T,EAAM0oV,mBAAmBsyC,kBAAoBh7X,EAAMkwc,aAAaqH,YAClF7mZ,GAAEmuR,oBAAoB7+U,EAAMwuc,cAAe,mBAAoBlwI,GAC/D5tQ,GAAEmuR,oBAAoB7+U,EAAMwuc,cAAe,uBAAwBlwI,IAEvEt/U,IACA1gC,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAO8D,2BAA4BnyX,IAK3Fqvd,EAAUr9d,UAAU89d,4BAA8B,WAC9C,IAAI9uc,EAAQ1hD,KAGZA,KAAKymb,4BAA4Bzmb,KAAKo4f,aAAc,SAF/B,WAAc,OAAO12c,EAAM02c,aAAa1/a,WAAa,IAG1E14E,KAAKymb,4BAA4Bzmb,KAAKq4f,gBAAiB,SAF/B,WAAc,OAAO32c,EAAM02c,aAAa1/a,WAAa,KAIjFq3a,EAAUr9d,UAAU43c,iBAAmB,WACnC,OAAOtqe,KAAK24f,wBAEhB5I,EAAUr9d,UAAUwme,qBAAuB,WACvC,MAAO,CAACl5f,KAAKkyf,KAAMlyf,KAAKmyf,UAE5BpC,EAAUr9d,UAAU0wc,0BAA4B,WAC5Cpje,KAAKgxf,yBACLhxf,KAAKixf,8BACLjxf,KAAKq2f,8BACLr2f,KAAKm2f,6BACLn2f,KAAKo3f,qBAETrH,EAAUr9d,UAAU++d,+BAAiC,WACjDzxf,KAAKqyf,wBACLryf,KAAKq2f,8BACLr2f,KAAKm2f,6BACDn2f,KAAKogX,WAMLpgX,KAAKoze,mDAGb2c,EAAUr9d,UAAU2/d,sBAAwB,WACxCryf,KAAKm5f,iBACLn5f,KAAKgxf,0BAETjB,EAAUr9d,UAAUyme,eAAiB,WACjC,IAAIzvf,EAAQ1J,KAAKujb,iBAAiBziB,wBAC9B9ga,KAAK4rd,cAGLlid,GAF4B1J,KAAKujb,iBAAiB5nB,8BAC5C37Z,KAAKujb,iBAAiB1nB,gCAGhC77Z,KAAK4+d,eAAeuoB,wBAAwBz9e,GAC5C,IAAI0vf,EAAU1vf,EAAQ,KACtB1J,KAAK+yf,iBAAiBxnf,MAAM7B,MAAQ0vf,EACpCp5f,KAAK+4f,iBAAiBxtf,MAAM7B,MAAQ0vf,EACpCp5f,KAAK64f,cAActtf,MAAM7B,MAAQ0vf,EAC5Bp5f,KAAK4rd,cACN5rd,KAAKk3f,+BAA+B3rf,MAAM7B,MAAQ0vf,IAG1DrJ,EAAUr9d,UAAU2me,mBAAqB,WACrC,IAAI33c,EAAQ1hD,KACRs5f,EAAat5f,KAAKiwe,YAClBspB,EAAcv5f,KAAKujb,iBAAiB5nB,8BACpC69F,EAAax5f,KAAKiwe,aAAejwe,KAAK4rd,aAAe2tC,EAAc,EACnE1tZ,EAAa,CAAC7rG,KAAK6yf,eAAgB7yf,KAAKu4f,SAAUv4f,KAAKs4f,aACvDgB,IAAeE,GACfx5f,KAAK4+d,eAAewoB,eAAeoS,GAEvC3tZ,EAAWx4F,QAAQ,SAAU4gB,GAAK,OAAOm+E,GAAEyuR,aAAa5sW,EAAGytB,EAAMuub,eAC7DupB,GACA3tZ,EAAWx4F,QAAQ,SAAUu5M,GAAM,OAAOx6G,GAAEqvR,cAAc70K,EAAI2sS,MAGtExJ,EAAUr9d,UAAU+me,oBAAsB,WACtC,IAAIH,EAAat5f,KAAKkwe,aAClBqpB,EAAcv5f,KAAKujb,iBAAiB1nB,+BACpC29F,EAAax5f,KAAKkwe,cAAgBlwe,KAAK4rd,aAAe2tC,EAAc,EACpE1tZ,EAAa,CAAC7rG,KAAK8yf,gBAAiB9yf,KAAKy4f,UAAWz4f,KAAKw4f,cACzDc,IAAeE,GACfx5f,KAAK4+d,eAAeyoB,gBAAgBmS,GAExC3tZ,EAAWx4F,QAAQ,SAAUu5M,GAAM,OAAOx6G,GAAEyuR,aAAaj0K,EAAI4sS,KACzDA,GACA3tZ,EAAWx4F,QAAQ,SAAUu5M,GAAM,OAAOx6G,GAAEqvR,cAAc70K,EAAI2sS,MAGtExJ,EAAUr9d,UAAUs+d,uBAAyB,WACzChxf,KAAKq5f,qBACLr5f,KAAKy5f,sBACLz5f,KAAKm3f,8BAETpH,EAAUr9d,UAAUyke,2BAA6B,WAG7C,IAAIuC,EAAe15f,KAAKujb,iBAAiB1nB,gCACpB77Z,KAAKogX,WAAapgX,KAAKujY,4BAExCm2H,GAAgB15f,KAAK64E,aAEzBu5B,GAAEqvR,cAAczhY,KAAK25f,uBAAwBD,GAC7CtnZ,GAAEmuR,oBAAoBvgY,KAAK25f,uBAAwB,qBAAsBD,GAAgB15f,KAAK64E,aAG9F,IAAI+gb,EAAc55f,KAAKujb,iBAAiB5nB,8BACrB37Z,KAAKogX,WAAapgX,KAAKujY,4BAEtCq2H,GAAe55f,KAAK64E,aAExBu5B,GAAEqvR,cAAczhY,KAAK65f,sBAAuBD,GAC5CxnZ,GAAEmuR,oBAAoBvgY,KAAK65f,sBAAuB,qBAAsBD,GAAe55f,KAAK64E,cAEhGk3a,EAAUr9d,UAAU0je,gBAAkB,WAClC,IAAI7D,EAAavyf,KAAKkwf,cAAcr9a,aAChC7yE,KAAKuyf,aAAeA,IACpBvyf,KAAKuyf,WAAaA,EAMlBvyf,KAAK0/Y,aAAajnD,cALJ,CACV/3V,KAAMquZ,GAAOiE,0BACb/oC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,cAK5B6lI,EAAUr9d,UAAUu+d,4BAA8B,WAC9C,IAGI6I,EACAxa,EACA5oI,EALA/rW,EAAK3K,KAAMujb,EAAmB54a,EAAG44a,iBAAkBn5C,EAAqBz/X,EAAGy/X,mBAAoB6hG,EAAiBthe,EAAGshe,eAAgBimB,EAAOvnf,EAAGunf,KAAMC,EAAUxnf,EAAGwnf,QAChK5S,EAAmB,EACnB5gB,EAAiBp7C,EAAiBvpB,oBAIlCupB,EAAiB5tB,eACjB2pF,EAAcl1G,EAAmBy2C,4BACjCnqE,EAAe0zB,EAAmBw2C,yBAGT2C,EAAiB9T,uBAEtCkvD,IACA4gB,EAAmB,GAEvBD,EAAcl1G,EAAmBu2C,uBACjCjqE,EAAe0zB,EAAmBo2C,mBAEtC,IACIg/D,EAAiB7gB,GADG,EAAI4gB,GAE5Bua,EAAoBva,EAAmBn1G,EAAmBs2C,2BAC1Do5E,GAAqBta,EAAiBF,EAEtCt/e,KAAK4+d,eAAez7I,UADpB22K,GAAqBpjJ,GAErB,IAAIqjJ,EAAoB9tB,EAAe+tB,0BACnCD,IAEAA,GAAqB,GAEzB,IAAIE,EAAuBhuB,EAAeiuB,6BACtCD,IAEAA,GAAwB,GAE5B,IAAIE,EAA0BJ,EAAoB,KAC9CK,EAA6BH,EAAuB,KACxD/H,EAAK3mf,MAAMy8B,UAAYmyd,EACvBjI,EAAK3mf,MAAMf,OAAS2vf,EACpBjI,EAAK3mf,MAAMwH,QAAUgnf,EAAoB,UAAY,OACrD5H,EAAQ5mf,MAAMy8B,UAAYoyd,EAC1BjI,EAAQ5mf,MAAMf,OAAS4vf,EACvBjI,EAAQ5mf,MAAMwH,QAAUknf,EAAuB,UAAY,OAC3Dj6f,KAAKo2f,mBAETrG,EAAUr9d,UAAUsrW,cAAgB,WAChC,OAAOh+X,KAAKuyf,YAGhBxC,EAAUr9d,UAAU2ne,4BAA8B,SAAUC,GACxDt6f,KAAKowf,gBAAgB13a,WAAa4hb,EAKlCt6f,KAAKu6f,mBAAmBD,IAE5BvK,EAAUr9d,UAAU65d,0BAA4B,SAAUiO,GACtDx6f,KAAKkwf,cAAc9ne,UAAYoye,GAGnCzK,EAAUr9d,UAAU+wd,mBAAqB,SAAUvzR,GAC/C,IAAIuqS,EAAoBz6f,KAAKowf,gBAAgB13a,WAE7C,OADA14E,KAAKq6f,4BAA4BI,EAAoBvqS,GAC9ClwN,KAAKowf,gBAAgB13a,WAAa+hb,GAG7C1K,EAAUr9d,UAAUy8d,iBAAmB,SAAUj/R,GAC7C,IAAIuqS,EAAoBz6f,KAAKkwf,cAAc9ne,UAE3C,OADApoB,KAAKusf,0BAA0BkO,EAAoBvqS,GAC5ClwN,KAAKkwf,cAAc9ne,UAAYqye,GAE1C1K,EAAUr9d,UAAUm+d,kBAAoB,WACpC7wf,KAAKymb,4BAA4Bzmb,KAAKowf,gBAAiB,SAAUpwf,KAAK06f,uBAAuBnwd,KAAKvqC,OAClGA,KAAKymb,4BAA4Bzmb,KAAKi3f,8BAA+B,SAAUj3f,KAAK26f,uBAAuBpwd,KAAKvqC,OAChHA,KAAKymb,4BAA4Bzmb,KAAKkwf,cAAe,SAAUlwf,KAAK46f,iBAAiBrwd,KAAKvqC,QAE9F+vf,EAAUr9d,UAAUkoe,iBAAmB,WACnC,IAAIxye,EAAYpoB,KAAKkwf,cAAc9ne,UACnCpoB,KAAK24Z,sBAAsBhgV,aAAavwD,GACxCpoB,KAAKooB,UAAYA,EACjBpoB,KAAK66f,yBAET9K,EAAUr9d,UAAUooe,oBAAsB,SAAUC,GAChD,OAAK/6f,KAAKg7f,4BAIHD,IAAS/6f,KAAKg7f,6BAHjBh7f,KAAKg7f,4BAA8BD,GAC5B,IAIfhL,EAAUr9d,UAAUioe,uBAAyB,WACpC36f,KAAK86f,oBAAoB96f,KAAKi3f,gCAGnCj3f,KAAKs2f,uBAAuBt2f,KAAKi3f,gCAErClH,EAAUr9d,UAAUgoe,uBAAyB,WACpC16f,KAAK86f,oBAAoB96f,KAAKowf,kBAGnCpwf,KAAKs2f,uBAAuBt2f,KAAKowf,kBAErCL,EAAUr9d,UAAU4je,uBAAyB,SAAU2E,GACnD,IAAItwf,EAAK3K,KAAKowf,gBAAiBv3a,EAAcluE,EAAGkuE,YAAa9F,EAAcpoE,EAAGooE,YAG1E2F,EAAan6D,KAAKs7B,MAAMu4D,GAAE/5B,cAAc4ib,EAASj7f,KAAKogX,YAK/B1nS,EAAa,GAAMA,EAAa3F,EAAc8F,IAIzE74E,KAAKu6f,mBAAmB7hb,GACxB14E,KAAKgwf,8CAETD,EAAUr9d,UAAUu9d,iCAAmC,WACnDjwf,KAAKg7f,4BAA8B,MAEvCjL,EAAUr9d,UAAU6ne,mBAAqB,SAAU7hb,GAC/C14E,KAAK04E,WAAaA,EASlB14E,KAAK0/Y,aAAajnD,cARN,CACR/3V,KAAMquZ,GAAO4D,kBACb1oC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChBljX,UAAW,aACXiF,KAAMjM,KAAK04E,WACX3sE,IAAK/L,KAAKooB,YAGdpoB,KAAKoze,gDAAgD16Z,GACrD14E,KAAKq2f,+BAETtG,EAAUr9d,UAAUmoe,sBAAwB,WASxC76f,KAAK0/Y,aAAajnD,cARN,CACR/3V,KAAMquZ,GAAO4D,kBACb3rZ,UAAW,WACXijX,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChBj+W,KAAMjM,KAAK04E,WACX3sE,IAAK/L,KAAKooB,aAOlB2ne,EAAUr9d,UAAU2je,4BAA8B,WAC9C,IAAIx9a,EAAc74E,KAAKowf,gBAAgBr9a,YACnCkwE,EAAiBjjJ,KAAKihf,8BAC1Bjhf,KAAKujb,iBAAiB7rB,2BAA2B7+U,EAAaoqE,IAElE8sW,EAAUr9d,UAAUuud,4BAA8B,WAE9C,OAAO7uY,GAAE/5B,cAAcr4E,KAAKowf,gBAAiBpwf,KAAKogX,YAEtD2vI,EAAUr9d,UAAUqle,4BAA8B,SAAUx2f,GAExD6wG,GAAEx5B,cAAc54E,KAAKowf,gBAAiB7uf,EAAOvB,KAAKogX,YAEtD2vI,EAAUr9d,UAAU0gd,gDAAkD,SAAU16Z,QACzDj0E,IAAfi0E,IACAA,EAAa14E,KAAKihf,+BAEtB,IAAIp2e,EAAS7K,KAAKogX,UAAY1nS,GAAcA,EACxC/tE,EAAK3K,KAAKowf,gBAAiBr9a,EAAcpoE,EAAGooE,YAAa8F,EAAcluE,EAAGkuE,YACnDt6D,KAAKqiC,IAAI/1C,GAAUkoE,EAAc8F,GAEvD74E,KAAKogX,WAAav1W,EAAS,IAC1B7K,KAAKogX,WAAav1W,EAAS,IAGjC7K,KAAK4+d,eAAeooB,oBAAoBn8e,GACxC7K,KAAK+4f,iBAAiBxtf,MAAMo2B,UAAY,cAAgB92B,EAAS,MACjE7K,KAAK64f,cAActtf,MAAMo2B,UAAY,cAAgB92B,EAAS,MAE9DunG,GAAEx5B,cADY54E,KAAKg7f,8BAAgCh7f,KAAKowf,gBAAkBpwf,KAAKi3f,8BAAgCj3f,KAAKowf,gBAC3F13a,EAAY14E,KAAKogX,aAG9C2vI,EAAUr9d,UAAUwoe,uBAAyB,SAAUx6d,GACnD1gC,KAAKkwf,cAAc5ke,iBAAiB,SAAUoV,IAGlDqvd,EAAUr9d,UAAUyoe,0BAA4B,SAAUz6d,GACtD1gC,KAAKkwf,cAAcvke,oBAAoB,SAAU+U,IAErDovd,GAAa,CACTnzG,GAAU,wBACXozG,EAAUr9d,UAAW,2BAAuB,GAC/Co9d,GAAa,CACTnzG,GAAU,uBACXozG,EAAUr9d,UAAW,0BAAsB,GAC9Co9d,GAAa,CACTnzG,GAAU,qBACXozG,EAAUr9d,UAAW,wBAAoB,GAC5Co9d,GAAa,CACTnzG,GAAU,gBACXozG,EAAUr9d,UAAW,mBAAe,GACvCo9d,GAAa,CACTnzG,GAAU,mBACXozG,EAAUr9d,UAAW,sBAAkB,GAC1Co9d,GAAa,CACTnzG,GAAU,iBACXozG,EAAUr9d,UAAW,oBAAgB,GACxCo9d,GAAa,CACTnzG,GAAU,0BACXozG,EAAUr9d,UAAW,6BAAyB,GACjDo9d,GAAa,CACTnzG,GAAU,sBACXozG,EAAUr9d,UAAW,yBAAqB,GAC7Co9d,GAAa,CACTnzG,GAAU,yBACXozG,EAAUr9d,UAAW,4BAAwB,GAChDo9d,GAAa,CACTnzG,GAAU,2BACXozG,EAAUr9d,UAAW,8BAA0B,GAClDo9d,GAAa,CACTnzG,GAAU,wBACXozG,EAAUr9d,UAAW,2BAAuB,GAC/Co9d,GAAa,CACTnzG,GAAU,kCACXozG,EAAUr9d,UAAW,qCAAiC,GACzDo9d,GAAa,CACTnzG,GAAU,UACXozG,EAAUr9d,UAAW,aAAS,GACjCo9d,GAAa,CACTnzG,GAAU,oBACXozG,EAAUr9d,UAAW,uBAAmB,GAC3Co9d,GAAa,CACTnzG,GAAU,cACXozG,EAAUr9d,UAAW,iBAAa,GACrCo9d,GAAa,CACTnzG,GAAU,YACXozG,EAAUr9d,UAAW,eAAW,GACnCo9d,GAAa,CACTnzG,GAAU,gBACXozG,EAAUr9d,UAAW,mBAAe,GACvCo9d,GAAa,CACTnzG,GAAU,sBACXozG,EAAUr9d,UAAW,yBAAqB,GAC7Co9d,GAAa,CACTnzG,GAAU,WACXozG,EAAUr9d,UAAW,cAAU,GAClCo9d,GAAa,CACTnzG,GAAU,yBACXozG,EAAUr9d,UAAW,4BAAwB,GAChDo9d,GAAa,CACTnzG,GAAU,iBACXozG,EAAUr9d,UAAW,oBAAgB,GACxCo9d,GAAa,CACTnzG,GAAU,uBACXozG,EAAUr9d,UAAW,0BAAsB,GAC9Co9d,GAAa,CACTnzG,GAAU,uBACXozG,EAAUr9d,UAAW,oBAAgB,GACxCo9d,GAAa,CACTnzG,GAAU,0BACXozG,EAAUr9d,UAAW,6BAAyB,GACjDo9d,GAAa,CACTnzG,GAAU,oBACXozG,EAAUr9d,UAAW,uBAAmB,GAC3Co9d,GAAa,CACThzG,GAAS,oBACVizG,EAAUr9d,UAAW,uBAAmB,GAC3Co9d,GAAa,CACThzG,GAAS,uBACVizG,EAAUr9d,UAAW,0BAAsB,GAC9Co9d,GAAa,CACThzG,GAAS,qBACVizG,EAAUr9d,UAAW,wBAAoB,GAC5Co9d,GAAa,CACT5lE,GAAY,kBACb6lE,EAAUr9d,UAAW,qBAAiB,GACzCo9d,GAAa,CACT5lE,GAAY,qBACb6lE,EAAUr9d,UAAW,wBAAoB,GAC5Co9d,GAAa,CACT5lE,GAAY,oBACb6lE,EAAUr9d,UAAW,uBAAmB,GAC3Co9d,GAAa,CACT5lE,GAAY,mBACb6lE,EAAUr9d,UAAW,sBAAkB,GAC1Co9d,GAAa,CACT5lE,GAAY,oBACb6lE,EAAUr9d,UAAW,uBAAmB,GAC3Co9d,GAAa,CACT5lE,GAAY,uBACb6lE,EAAUr9d,UAAW,0BAAsB,GAC9Co9d,GAAa,CACT5lE,GAAY,0BACb6lE,EAAUr9d,UAAW,6BAAyB,GACjDo9d,GAAa,CACT5lE,GAAY,0BACb6lE,EAAUr9d,UAAW,6BAAyB,GACjDo9d,GAAa,CACT5lE,GAAY,2BACb6lE,EAAUr9d,UAAW,8BAA0B,GAClDo9d,GAAa,CACT5lE,GAAY,kCACb6lE,EAAUr9d,UAAW,qCAAiC,GACzDo9d,GAAa,CACT5lE,GAAY,mCACb6lE,EAAUr9d,UAAW,sCAAkC,GAC1Do9d,GAAa,CACT5lE,GAAY,wBACb6lE,EAAUr9d,UAAW,2BAAuB,GAC/Co9d,GAAa,CACT5lE,GAAY,SACb6lE,EAAUr9d,UAAW,YAAQ,GAChCo9d,GAAa,CACT5lE,GAAY,aACb6lE,EAAUr9d,UAAW,gBAAY,GACpCo9d,GAAa,CACT5lE,GAAY,cACb6lE,EAAUr9d,UAAW,iBAAa,GACrCo9d,GAAa,CACT5lE,GAAY,kBACb6lE,EAAUr9d,UAAW,qBAAiB,GACzCo9d,GAAa,CACT5lE,GAAY,iBACb6lE,EAAUr9d,UAAW,oBAAgB,GACxCo9d,GAAa,CACT5lE,GAAY,2BACb6lE,EAAUr9d,UAAW,8BAA0B,GAClDo9d,GAAa,CACT5lE,GAAY,YACb6lE,EAAUr9d,UAAW,eAAW,GACnCo9d,GAAa,CACT5lE,GAAY,gBACb6lE,EAAUr9d,UAAW,mBAAe,GACvCo9d,GAAa,CACT5lE,GAAY,iBACb6lE,EAAUr9d,UAAW,oBAAgB,GACxCo9d,GAAa,CACT5lE,GAAY,qBACb6lE,EAAUr9d,UAAW,wBAAoB,GAC5Co9d,GAAa,CACT5lE,GAAY,oBACb6lE,EAAUr9d,UAAW,uBAAmB,GAC3Co9d,GAAa,CACT5lE,GAAY,8BACb6lE,EAAUr9d,UAAW,iCAA6B,GACrDo9d,GAAa,CACT5lE,GAAY,eACb6lE,EAAUr9d,UAAW,sBAAkB,GAC1Co9d,GAAa,CACT5lE,GAAY,mBACb6lE,EAAUr9d,UAAW,sBAAkB,GAC1Co9d,GAAa,CACTxzG,IACDyzG,EAAUr9d,UAAW,OAAQ,MACzBq9d,EAjvCoB,CAkvC7B39d,IAQEgpe,GAAsD,SAAUvxX,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DuxX,GAAyB,WACzB,SAASA,IACLr7f,KAAKs7f,kBAAoB,GAgpC7B,OA9oCAD,EAAQ3oe,UAAU03c,iBAAmB,SAAUtiB,GAC3C9nd,KAAK8nd,UAAYA,GAErBuzC,EAAQ3oe,UAAUu3c,iBAAmB,SAAUC,GAC3Clqe,KAAKkqe,SAAWA,GAEpBmxB,EAAQ3oe,UAAU4zd,uBAAyB,SAAU1nB,GACjD5+d,KAAK4+d,eAAiBA,GAE1By8B,EAAQ3oe,UAAU4yQ,KAAO,WACrB,OAAQtlS,KAAKwub,SAASv5P,WAClB,KAAKq7M,GAAUuC,2BACX7yY,KAAK++c,mBAAqB/+c,KAAKwub,SAC/B,MACJ,KAAKl+C,GAAUqC,wBACX3yY,KAAKu7f,iBAAmBv7f,KAAKwub,SAC7B,MACJ,KAAKl+C,GAAUwC,2BACX9yY,KAAKw7f,mBAAqBx7f,KAAKwub,WAK3C6sE,EAAQ3oe,UAAU+oe,wBAA0B,WACxC,OAAOz7f,KAAK0xf,qBAEhB2J,EAAQ3oe,UAAUgpe,kBAAoB,SAAU11e,EAAI21e,GAChD37f,KAAKs7f,kBAAkBt1e,GAAM21e,GAEjCN,EAAQ3oe,UAAUkpe,qBAAuB,SAAU51e,GAC/ChmB,KAAKs7f,kBAAkBt1e,QAAMvhB,GAEjC42f,EAAQ3oe,UAAUmpe,kBAAoB,SAAU71e,GAC5C,OAAOhmB,KAAKs7f,kBAAkBt1e,IAElCq1e,EAAQ3oe,UAAUope,sBAAwB,SAAU7oe,GAChD,IAAItpB,EAAQ,EACZyoG,GAAEi4Q,cAAcrqX,KAAKs7f,kBAAmB,SAAUt1e,EAAI21e,GAE9CvpZ,GAAE8rR,OAAOy9H,KACT1oe,EAAS0oe,EAAUhyf,GACnBA,QAIZ0xf,EAAQ3oe,UAAUqpe,aAAe,SAAUjya,GACvC,GAAI40T,GAAeK,iBAAiB1hX,EAAQ6/W,YAAY8+G,gBAAiB,oBACrE,OAAOh8f,KAAKi8f,WAAWF,aAAajya,IAG5Cuxa,EAAQ3oe,UAAUwpe,gBAAkB,SAAUpya,GACtC40T,GAAeK,iBAAiB1hX,EAAQ6/W,YAAY8+G,gBAAiB,wBACrEh8f,KAAKi8f,WAAWC,gBAAgBpya,IAGxCuxa,EAAQ3oe,UAAUype,eAAiB,SAAUrya,GACzC,GAAI40T,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYk/G,kBAAmB,sBACvE,OAAOp8f,KAAKq8f,aAAaC,kBAAkBxya,IAGnDuxa,EAAQ3oe,UAAU6pe,kBAAoB,SAAUzya,GACxC40T,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYk/G,kBAAmB,0BACvEp8f,KAAKq8f,aAAaE,kBAAkBzya,IAI5Cuxa,EAAQ3oe,UAAU8pe,wBAA0B,SAAUroJ,GAClDppU,QAAQ24B,KAAK,oHACb1jE,KAAKy8f,wBAAwBtoJ,IAEjCknJ,EAAQ3oe,UAAU+pe,wBAA0B,SAAUtoJ,GAC9Cn0W,KAAKoqY,mBAAmB8pC,uBAExBl0a,KAAKwub,SAAS/I,cAActxE,GAG5BppU,QAAQ24B,KAAK,wFAA0F4sU,GAAUwC,2BAA6B,MAGtJuoH,EAAQ3oe,UAAU+yZ,cAAgB,SAAUtxE,GACpCn0W,KAAKoqY,mBAAmBwrC,qBACxB51a,KAAKwub,SAAS/I,cAActxE,GAG5BppU,QAAQ24B,KAAK,4EAA8E4sU,GAAUqC,wBAA0B,MAGvI0oH,EAAQ3oe,UAAUgqe,sBAAwB,SAAUroJ,GAC5Cr0W,KAAKoqY,mBAAmByrC,qBAIxB71a,KAAKwub,SAASkuE,sBAAsBroJ,GAGpCtpU,QAAQ24B,KAAK,qFAAuF4sU,GAAUsC,wBAA0B,MAGhJyoH,EAAQ3oe,UAAU4yZ,WAAa,SAAU7xE,GACrC,GAAIzzW,KAAKoqY,mBAAmB0rC,oBACxB,GAAI91a,KAAKoqY,mBAAmBwvC,kBAAmB,CAC3C,IAAIjva,EAAK3K,KAAK28f,iBAAiBC,4BAA4BnpJ,GAC3DzzW,KAAK++c,mBAAmB4vC,cAD2Dhkf,EAAG,GAAiBA,EAAG,IAI1G3K,KAAKm3d,YAAYiZ,4BAGjBpwe,KAAK4+b,oBAAoB5hU,QACzBh9H,KAAK++c,mBAAmBz5B,WAAW7xE,QAIvC1oU,QAAQ24B,KAAK,yDAIrB23b,EAAQ3oe,UAAUmqe,sBAAwB,SAAUt1f,GAChDwjC,QAAQ24B,KAAK,oFACb1jE,KAAKulb,oBAAoBh+a,IAG7B8zf,EAAQ3oe,UAAUoqe,yBAA2B,SAAUv1f,GACnDwjC,QAAQ24B,KAAK,0FACb1jE,KAAKwlb,uBAAuBj+a,IAGhC8zf,EAAQ3oe,UAAUqqe,uBAAyB,WAEvC,OADAhyd,QAAQ24B,KAAK,sFACN1jE,KAAKg9f,wBAGhB3B,EAAQ3oe,UAAUuqe,0BAA4B,WAE1C,OADAlyd,QAAQ24B,KAAK,4FACN1jE,KAAKk9f,2BAGhB7B,EAAQ3oe,UAAUyqe,kBAAoB,SAAUxzf,GAE5C,OADAohC,QAAQ24B,KAAK,4EACN1jE,KAAK20e,gBAAgBhre,IAGhC0xf,EAAQ3oe,UAAU0qe,qBAAuB,SAAUzzf,GAE/C,OADAohC,QAAQ24B,KAAK,kFACN1jE,KAAK40e,mBAAmBjre,IAEnC0xf,EAAQ3oe,UAAU6yZ,oBAAsB,SAAUh+a,GAC9CvH,KAAKise,eAAe1mD,oBAAoBh+a,IAE5C8zf,EAAQ3oe,UAAU8yZ,uBAAyB,SAAUj+a,GACjDvH,KAAKise,eAAezmD,uBAAuBj+a,IAE/C8zf,EAAQ3oe,UAAUsqe,qBAAuB,WACrC,OAAOh9f,KAAKise,eAAe+wB,wBAE/B3B,EAAQ3oe,UAAUwqe,wBAA0B,WACxC,OAAOl9f,KAAKise,eAAeixB,2BAE/B7B,EAAQ3oe,UAAUiid,gBAAkB,SAAUhre,GAC1C,OAAO3J,KAAKise,eAAe0I,gBAAgBhre,IAE/C0xf,EAAQ3oe,UAAUkid,mBAAqB,SAAUjre,GAC7C,OAAO3J,KAAKise,eAAe2I,mBAAmBjre,IAElD0xf,EAAQ3oe,UAAUojY,cAAgB,SAAUgU,EAASvjZ,QAClC,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKujb,iBAAiBztB,cAAcgU,EAASvjZ,IAEjD80e,EAAQ3oe,UAAU2qe,iBAAmB,WACjCr9f,KAAK4hX,WAAWo0C,UAEpBqlG,EAAQ3oe,UAAU4qe,sBAAwB,WACtC,OAAOt9f,KAAK8nd,UAAUqgB,sBAE1BkzB,EAAQ3oe,UAAU6qe,wBAA0B,WACxC,OAAOv9f,KAAK8nd,UAAUqoC,sBAE1BkL,EAAQ3oe,UAAU8qe,4BAA8B,SAAUj5V,GACtDvkK,KAAKoqY,mBAAmBz5Q,YAAY,2BAA4B4zC,IAEpE82V,EAAQ3oe,UAAU+qe,iBAAmB,WACjCz9f,KAAKkqe,SAASwzB,kBAElBrC,EAAQ3oe,UAAUqtc,aAAe,SAAUj2Y,QACxB,IAAXA,IAAqBA,EAAS,IAC9Bv/E,MAAMyL,QAAQ8zE,GAEd/+C,QAAQ24B,KAAK,2FAGjB1jE,KAAKm3d,YAAY4I,aAAaj2Y,IAElCuxa,EAAQ3oe,UAAUg2V,WAAa,SAAU5+R,QACtB,IAAXA,IAAqBA,EAAS,IAClC9pF,KAAKm3d,YAAYzuG,WAAW5+R,IAEhCuxa,EAAQ3oe,UAAUwua,WAAa,SAAUp3W,QACtB,IAAXA,IAAqBA,EAAS,IAC9BA,GAAUA,EAAO0sT,SACjBx2Y,KAAKm3d,YAAYj2B,WAAWp3W,EAAO0sT,UAGnCx2Y,KAAKm3d,YAAYyT,0BAGzBywB,EAAQ3oe,UAAUire,eAAiB,SAAUzmf,QAC3B,IAAVA,IAAoBA,EAAQ,GAChC,IAAI0mf,EAAiB,EACjBC,EAAkB,EAClBC,EAAc,EACdvxK,EAAOvsV,MAEX,SAAS+9f,IACL,IAAI50f,GAAS,IAAIuxC,MAAQwmE,UACzBqrO,EAAK4qI,YAAYyT,yBACjB,IAAIozB,GAAiB,IAAItjd,MAAQwmE,UACjC/1F,OAAOyZ,WAAW,WACd,IAAIq5d,GAAa,IAAIvjd,MAAQwmE,UACzBg9Y,EAAqBF,EAAgB70f,EACrCg1f,EAAiBF,EAAYD,EAEjCjzd,QAAQ0wC,IAAI,2BAA6Byib,EAAqB,gBAAkBC,EAAiB,MACjGP,IACAC,GAAmBK,EACnBJ,GAAeK,EACXP,EAAiB1mf,EAEjBiU,OAAOyZ,WAAWm5d,EAAgB,MAS1Chzd,QAAQ0wC,IAAI,qCAAuCmib,GAEnD7yd,QAAQ0wC,IAAI,wBAA2Boib,EAAkBD,EAAkB,MAE3E7yd,QAAQ0wC,IAAI,oBAAuBqib,EAAcF,EAAkB,QARhE,GArBPG,IAiCJ1C,EAAQ3oe,UAAU0re,YAAc,WAC5Brzd,QAAQ24B,KAAK,yGACb1jE,KAAKkhc,cAGTm6D,EAAQ3oe,UAAU2re,YAAc,SAAU7nH,GACtCzrW,QAAQ24B,KAAK,uIACb1jE,KAAK+/d,aAAa,CAAEvpF,SAAUA,KAGlC6kH,EAAQ3oe,UAAU0yV,eAAiB,SAAU79W,GACzCwjC,QAAQ24B,KAAK,iKACb1jE,KAAKkhc,cAGTm6D,EAAQ3oe,UAAU4re,gBAAkB,WAChCvzd,QAAQ/V,MAAM,oHAGlBqme,EAAQ3oe,UAAU6re,iBAAmB,WACjCxzd,QAAQ24B,KAAK,6PAGb1jE,KAAK+/d,gBAETs7B,EAAQ3oe,UAAU8re,qBAAuB,SAAUtte,GAC/ClxB,KAAKoqY,mBAAmBz5Q,YAAY,oBAAqBz/F,IAE7Dmqe,EAAQ3oe,UAAUm0d,cAAgB,WAC9B7mf,KAAK4+d,eAAeioB,gBACpB7mf,KAAK8nd,UAAUmpC,+BAEnBoK,EAAQ3oe,UAAUq2d,mBAAqB,WACnC,OAAO/of,KAAK4xc,cAAcm3C,sBAG9BsS,EAAQ3oe,UAAUg2d,wBAA0B,WAExC,OADA39c,QAAQ24B,KAAK,wFACN1jE,KAAKy+f,yBAEhBpD,EAAQ3oe,UAAU+re,sBAAwB,WACtC,OAAOz+f,KAAK4xc,cAAc82C,2BAE9B2S,EAAQ3oe,UAAUs2d,qBAAuB,WACrC,OAAOhpf,KAAK4xc,cAAco3C,wBAE9BqS,EAAQ3oe,UAAU68Z,SAAW,WACzB,OAAOvvb,KAAKwub,UAEhB6sE,EAAQ3oe,UAAUgse,mBAAqB,SAAUhqH,EAASvzO,GAClDuzO,GACAA,EAAQ+U,YAAYtoP,IAG5Bk6V,EAAQ3oe,UAAUise,2BAA6B,SAAUC,GACjDxsZ,GAAEgsR,QAAQp+X,KAAK++c,qBACfh0a,QAAQ24B,KAAK,iFAEb0uC,GAAE8rR,OAAO0gI,IACT7zd,QAAQ24B,KAAK,0HAMjB1jE,KAAK++c,mBAAmB8/C,aAAa,CAAEr3Z,KAAM8oS,GAAUI,YAE3D2qH,EAAQ3oe,UAAUose,wBAA0B,SAAUt3Z,GAClDz8D,QAAQ24B,KAAK,sHACb1jE,KAAK++f,0BAA0Bv3Z,IAEnC6zZ,EAAQ3oe,UAAUqse,0BAA4B,SAAUv3Z,GAChD4K,GAAEgsR,QAAQp+X,KAAK++c,qBACfh0a,QAAQ24B,KAAK,uEAEjB,IAAIs7b,EAAa1uH,GAAUC,gBACvB0uH,EAAc,CACdpkX,MAAOy1P,GAAUC,gBACjBp7X,OAAQm7X,GAAUE,YAClB/mY,IAAK6mY,GAAUI,SACfwuH,UAAW5uH,GAAUK,eACrB90X,KAAMy0X,GAAUG,UAChBtrL,MAAOmrL,GAAUM,YAEjBx+R,GAAE8rR,OAAO12R,KACTw3Z,EAAaC,EAAYz3Z,IAEzB4K,GAAEgsR,QAAQ4gI,GACVj0d,QAAQ/V,MAAM,yBAA2BwyE,EAAO,yBAA2BhrF,OAAOC,KAAKwif,GAAajvd,KAAK,OAS7GhwC,KAAK++c,mBAAmB8/C,aANN,CACdr3Z,KAAMw3Z,EACNrzB,kBAAkB,EAClBx8P,SAAS,EACTgwR,iBAAiB,KAIzB9D,EAAQ3oe,UAAU0se,2BAA6B,WAC3C,OAAOp/f,KAAK24Z,sBAAsB0mG,gBAEtChE,EAAQ3oe,UAAUo2c,WAAa,SAAU9id,GACrC,OAAOhmB,KAAKwub,SAASs6C,WAAW9id,IAEpCq1e,EAAQ3oe,UAAU4se,wBAA0B,WACxC,MAAO,CACHhpJ,UAAWt2W,KAAKoqY,mBAAmBg3C,uBACnC1qE,aAAc12W,KAAKoqY,mBAAmBo2C,oBAG9C66E,EAAQ3oe,UAAU6se,UAAY,WACtBntZ,GAAEgsR,QAAQp+X,KAAK++c,oBACfh0a,QAAQ24B,KAAK,gEAGjB1jE,KAAK++c,mBAAmBv6F,qBAAoB,IAEhD62I,EAAQ3oe,UAAU8se,YAAc,WACxBptZ,GAAEgsR,QAAQp+X,KAAK++c,oBACfh0a,QAAQ24B,KAAK,kEAGjB1jE,KAAK++c,mBAAmBv6F,qBAAoB,IAEhD62I,EAAQ3oe,UAAU+se,qBAAuB,SAAUz5e,GAC/C,OAAOhmB,KAAKkqe,SAASu1B,qBAAqBz5e,IAE9Cq1e,EAAQ3oe,UAAUgte,sBAAwB,SAAU5pd,EAAWzrC,EAAU4oB,GAC5C,iBAAd6iB,GACP/K,QAAQ24B,KAAK,oFAEjB1jE,KAAK8zd,uBAAuBh+a,EAAWzrC,EAAU4oB,IAErDooe,EAAQ3oe,UAAUohc,uBAAyB,SAAUh+a,EAAWzrC,EAAU4oB,GACpD,uBAAd6iB,GACA/K,QAAQ24B,KAAK,+JAEjB1jE,KAAKm3d,YAAYrD,uBAAuBh+a,EAAWzrC,EAAU4oB,IAEjEooe,EAAQ3oe,UAAU2yZ,eAAiB,SAAU8jE,GACzCnpf,KAAK4xc,cAAcvsB,eAAe8jE,IAEtCkS,EAAQ3oe,UAAU4sb,YAAc,SAAU31c,EAAOu1c,EAAUygD,GACvD50d,QAAQ24B,KAAK,+EACTi8b,GACA50d,QAAQ24B,KAAK,yGAEjB1jE,KAAK4+b,oBAAoB0gB,YAAY31c,EAAOu1c,IAEhDm8C,EAAQ3oe,UAAUysb,cAAgB,SAAUx1c,EAAOg2f,QACxB,IAAnBA,IAA6BA,GAAiB,GAClD50d,QAAQ24B,KAAK,+EACTi8b,GACA50d,QAAQ24B,KAAK,yGAEjB1jE,KAAK4+b,oBAAoBugB,cAAcx1c,IAE3C0xf,EAAQ3oe,UAAUusb,WAAa,SAAUv7T,EAAMw7T,EAAUygD,QACpC,IAAbzgD,IAAuBA,GAAW,QACf,IAAnBygD,IAA6BA,GAAiB,GAClD50d,QAAQ24B,KAAK,kFACTi8b,GACA50d,QAAQ24B,KAAK,yGAEjBggF,EAAKi/S,kBAAkB,CAAEzwT,UAAU,EAAMuwT,gBAAiByc,KAE9Dm8C,EAAQ3oe,UAAU2sb,aAAe,SAAU37T,EAAMi8W,QACtB,IAAnBA,IAA6BA,GAAiB,GAClD50d,QAAQ24B,KAAK,kFACTi8b,GACA50d,QAAQ24B,KAAK,yGAEjBggF,EAAKi/S,kBAAkB,CAAEzwT,UAAU,KAEvCmpX,EAAQ3oe,UAAU4vS,UAAY,WAC1BtiU,KAAK4+b,oBAAoBkgB,qBAE7Bu8C,EAAQ3oe,UAAUkte,YAAc,WAC5B5/f,KAAK4+b,oBAAoB8f,uBAE7B28C,EAAQ3oe,UAAUmte,kBAAoB,WAClC7/f,KAAK4+b,oBAAoBkgB,mBAAkB,IAE/Cu8C,EAAQ3oe,UAAUote,oBAAsB,WACpC9/f,KAAK4+b,oBAAoB8f,qBAAoB,IAEjD28C,EAAQ3oe,UAAUqte,oBAAsB,WAChC3tZ,GAAEgsR,QAAQp+X,KAAK++c,qBACfh0a,QAAQ24B,KAAK,iEAEjB34B,QAAQ24B,KAAK,qGACb1jE,KAAK++c,mBAAmB8/C,aAAa,CAAEr3Z,KAAM8oS,GAAUK,kBAE3D0qH,EAAQ3oe,UAAUi7Y,iBAAmB,WACjC3ta,KAAK8nd,UAAUn6C,oBAEnB0tF,EAAQ3oe,UAAUo+d,mBAAqB,WACnC9wf,KAAK8nd,UAAUgpC,sBAEnBuK,EAAQ3oe,UAAUule,kBAAoB,WAClCj4f,KAAK8nd,UAAUmwC,qBAEnBoD,EAAQ3oe,UAAU69d,YAAc,WAC5Bvwf,KAAK8nd,UAAUyoC,eAEnB8K,EAAQ3oe,UAAUste,eAAiB,SAAUt8W,GAEzC,OADA34G,QAAQ24B,KAAK,sFACNggF,EAAK1jH,cAEhBq7d,EAAQ3oe,UAAUute,qBAAuB,WAErC,OADAl1d,QAAQ/V,MAAM,qGACP,MAEXqme,EAAQ3oe,UAAU8qb,iBAAmB,WACjC,OAAOx9c,KAAK4+b,oBAAoB4e,oBAEpC69C,EAAQ3oe,UAAUgrb,gBAAkB,WAChC,OAAO19c,KAAK4+b,oBAAoB8e,mBAEpC29C,EAAQ3oe,UAAU0rb,yBAA2B,WACzC,OAAOp+c,KAAK4+b,oBAAoBwf,4BAEpCi9C,EAAQ3oe,UAAU2/c,iBAAmB,WACjC,OAAOrye,KAAKm3d,YAAYkb,oBAE5BgpB,EAAQ3oe,UAAUwte,sBAAwB,SAAUv2f,GAChDohC,QAAQ24B,KAAK,wGAEjB23b,EAAQ3oe,UAAUygd,oBAAsB,SAAUx2d,GAC9C3c,KAAK8nd,UAAUqrB,oBAAoBx2d,IAGvC0+e,EAAQ3oe,UAAUwgd,mBAAqB,SAAUvpe,EAAOK,GACpDhK,KAAK8nd,UAAUorB,mBAAmBvpe,EAAOK,IAG7Cqxf,EAAQ3oe,UAAUyte,kBAAoB,SAAUnjd,EAAYhzC,GACxDhK,KAAKkqe,SAASi2B,kBAAkBnjd,EAAYhzC,IAEhDqxf,EAAQ3oe,UAAU0te,gBAAkB,SAAUnte,GACtCm/E,GAAEgsR,QAAQp+X,KAAK++c,qBACfh0a,QAAQ24B,KAAK,yDAEjB1jE,KAAK++c,mBAAmBqhD,gBAAgBnte,IAE5Cooe,EAAQ3oe,UAAUssb,YAAc,SAAU/rb,GACtCjzB,KAAKwub,SAASwwB,YAAY/rb,IAE9Booe,EAAQ3oe,UAAUmsb,uBAAyB,SAAU5rb,GAC7Cm/E,GAAEgsR,QAAQp+X,KAAK++c,qBACfh0a,QAAQ24B,KAAK,oEAEjB1jE,KAAK++c,mBAAmBF,uBAAuB5rb,IAEnDooe,EAAQ3oe,UAAU2te,8BAAgC,SAAUpte,GACpDm/E,GAAEgsR,QAAQp+X,KAAK++c,qBACfh0a,QAAQ24B,KAAK,2EAEjB1jE,KAAK++c,mBAAmBshD,8BAA8Bpte,IAE1Dooe,EAAQ3oe,UAAU4te,sBAAwB,SAAUz0J,GAEhD,OADA9gU,QAAQ24B,KAAK,sFACN1jE,KAAKuggB,kBAAkB10J,IAElCwvJ,EAAQ3oe,UAAU6te,kBAAoB,SAAU5jf,EAAKsW,GACjD,IAAIztB,EAASxF,KAAKujb,iBAAiBtrB,iBAAiBt7Y,GACpD,GAAInX,EAAQ,CACR,IAAI8if,EAAgBtof,KAAK4xc,cAAc4rC,mBAAmBh4e,EAAQ,SAC9DJ,EAAekjf,EAAcn+H,WAAW,KAAM,SAAUq2I,GAAc,OAAOA,IASjF,OARIvte,IACI7tB,EACAw/B,WAAW3R,EAAU,EAAG7tB,GAGxBkjf,EAAcjqe,KAAK4U,IAGpB7tB,IAGfi2f,EAAQ3oe,UAAU+te,aAAe,SAAU9jf,GAEvC,OADAouB,QAAQ24B,KAAK,sEACN1jE,KAAKuggB,kBAAkB5jf,IAElC0+e,EAAQ3oe,UAAUo4d,cAAgB,SAAUnue,GACxC,IAAInX,EAASxF,KAAKujb,iBAAiBtrB,iBAAiBt7Y,GACpD,GAAInX,EACA,OAAOxF,KAAK4xc,cAAck5C,cAActlf,EAAQ,oBAGxD61f,EAAQ3oe,UAAUgue,eAAiB,SAAU/jf,GACzC,GAAI3c,KAAK2ggB,iBACL,OAAO3ggB,KAAK2ggB,iBAAiBD,eAAe/jf,IAGpD0+e,EAAQ3oe,UAAUkue,aAAe,SAAUjkf,GACvC,IAAInX,EAASxF,KAAKujb,iBAAiBtrB,iBAAiBt7Y,GACpD,OAAInX,EACOA,EAAOuqY,YAEX,MAEXsrH,EAAQ3oe,UAAU+6Z,gBAAkB,WAChCztb,KAAK4xc,cAAcnkB,mBAEvB4tE,EAAQ3oe,UAAUupa,cAAgB,WAC9Bj8b,KAAKq7b,eAAeY,iBAExBo/D,EAAQ3oe,UAAUmue,aAAe,SAAUvT,EAAW/me,QACnC,IAAXA,IAAqBA,EAAS,OAClCvmB,KAAKq7b,eAAewlE,aAAavT,EAAW/me,IAEhD80e,EAAQ3oe,UAAU66d,aAAe,WAC7B,OAAOvtf,KAAKq7b,eAAekyD,gBAE/B8N,EAAQ3oe,UAAUu1d,eAAiB,SAAUhuZ,GACzCj6F,KAAK4xc,cAAcq2C,eAAehuZ,IAEtCoha,EAAQ3oe,UAAU+1d,eAAiB,WAC/B,OAAOzof,KAAK4xc,cAAc62C,kBAE9B4S,EAAQ3oe,UAAUihd,eAAiB,WAC/B,OAAO3ze,KAAKqsd,gBAAgBsnB,kBAEhC0nB,EAAQ3oe,UAAUo8d,iBAAmB,WACjC,OAAO9uf,KAAKqsd,gBAAgByiC,oBAEhCuM,EAAQ3oe,UAAU8jc,eAAiB,SAAUnsd,EAAUkzZ,EAAQ5nJ,GAC3D31Q,KAAKqsd,gBAAgBmK,eAAensd,EAAUkzZ,EAAQ5nJ,GAAU,IAEpE0lP,EAAQ3oe,UAAUmzZ,mBAAqB,SAAUtkb,GAC7CvB,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBuR,uBAAwBljb,IAEnF85f,EAAQ3oe,UAAUozZ,+BAAiC,SAAUvkb,GACzDvB,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBwR,iCAAkCnjb,IAE7F85f,EAAQ3oe,UAAUqzZ,6BAA+B,SAAUxkb,GACvDvB,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBsR,kCAAmCjjb,IAE9F85f,EAAQ3oe,UAAU08d,eAAiB,SAAUtla,GACzC9pF,KAAK8nd,UAAUC,oBAAoBqnC,eAAetla,IAEtDuxa,EAAQ3oe,UAAUoue,kBAAoB,SAAUh3a,GAC5C,IAAIi3a,EAAmB/ggB,KAAKund,mBAAmB5C,iBAAiB76X,GAC5Di3a,GACA/ggB,KAAKund,mBAAmBhD,iBAAiBw8C,IAGjD1F,EAAQ3oe,UAAUsue,qBAAuB,SAAUnuc,GAC/C,OAAO7yD,KAAK8nd,UAAUC,oBAAoBynC,eAAe38b,IAE7Dwoc,EAAQ3oe,UAAUgzZ,gBAAkB,SAAUhvE,GAC1C12W,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmB8Q,mBAAoBttE,GAC3E12W,KAAKihgB,YAET5F,EAAQ3oe,UAAUszZ,kBAAoB,SAAUnjE,GAC5C93U,QAAQ24B,KAAK,uFACb1jE,KAAKkhgB,aAAar+I,EAAiB,aAAe,WAEtDw4I,EAAQ3oe,UAAUwue,aAAe,SAAUnrJ,GACvC/1W,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBQ,gBAAiB39D,IAE5EslJ,EAAQ3oe,UAAU0yZ,2BAA6B,SAAUj2X,GACrDnvD,KAAK8nd,UAAUipC,qBAAqB5hc,IAExCksc,EAAQ3oe,UAAUyue,qBAAuB,SAAUzqJ,GAC/C12W,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBmR,yBAA0B3tE,GACjF12W,KAAKihgB,YAET5F,EAAQ3oe,UAAU0ue,yBAA2B,SAAU1qJ,GACnD12W,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBqR,6BAA8B7tE,GACrF12W,KAAKihgB,YAET5F,EAAQ3oe,UAAU2ue,0BAA4B,SAAU3qJ,GACpD12W,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBoR,+BAAgC5tE,GACvF12W,KAAKihgB,YAET5F,EAAQ3oe,UAAU4ue,qBAAuB,SAAU5qJ,GAC/C12W,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBiR,yBAA0BztE,GACjF12W,KAAKihgB,YAET5F,EAAQ3oe,UAAU6ue,iBAAmB,WACjC,OAAOvhgB,KAAKkqe,SAASq3B,oBAEzBlG,EAAQ3oe,UAAU8ue,kBAAoB,SAAUj9V,GAC5CvkK,KAAKkqe,SAASs3B,kBAAkBj9V,IAEpC82V,EAAQ3oe,UAAU+ue,mBAAqB,SAAUz3f,GAC7ChK,KAAKkqe,SAASu3B,mBAAmBz3f,IAErCqxf,EAAQ3oe,UAAUwrV,cAAgB,SAAU35M,GACxCx5H,QAAQ24B,KAAK,8FACb1jE,KAAKwhgB,kBAAkBj9V,IAE3B82V,EAAQ3oe,UAAUgve,cAAgB,SAAU/kf,GACxC3c,KAAKkqe,SAASw3B,cAAc/kf,IAEhC0+e,EAAQ3oe,UAAUive,eAAiB,WAC/B3hgB,KAAKkqe,SAASy3B,kBAElBtG,EAAQ3oe,UAAUkve,mBAAqB,WACnC,OAAO5hgB,KAAKkqe,SAAS03B,sBAEzBvG,EAAQ3oe,UAAU2jZ,WAAa,WAC3B,OAAOr2a,KAAKkqe,SAAS7zD,cAEzBglF,EAAQ3oe,UAAUwzZ,WAAa,SAAUjza,GACrC,OAAOjT,KAAKkqe,SAAShkD,WAAWjza,IAEpCoof,EAAQ3oe,UAAUuzZ,0BAA4B,SAAU1kb,GACpDvB,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBkR,8BAA+B7ib,IAE1F85f,EAAQ3oe,UAAUmve,mBAAqB,WACnC,OAAO7hgB,KAAKkqe,SAAS23B,sBAEzBxG,EAAQ3oe,UAAUuue,SAAW,WACzBjhgB,KAAK8nd,UAAUwqC,2BAEnB+I,EAAQ3oe,UAAUove,gBAAkB,WAC5B1vZ,GAAE8rR,OAAOl+X,KAAK++c,qBACd/+c,KAAK++c,mBAAmB+iD,mBAGhCzG,EAAQ3oe,UAAUkzZ,6BAA+B,SAAUrkb,GACvDvB,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmB+Q,kCAAmC1ib,IAE9F85f,EAAQ3oe,UAAUqve,mCAAqC,SAAUxggB,GAC7DvB,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmBgR,yCAA0C3ib,IAErG85f,EAAQ3oe,UAAUowc,mBAAqB,WAC/B1wX,GAAE8rR,OAAOl+X,KAAK++c,qBACd/+c,KAAK++c,mBAAmB+jB,sBAGhCu4B,EAAQ3oe,UAAUopG,SAAW,SAAUyhS,EAAQ7oB,GAC3C,IAAIlvY,EAASxF,KAAKujb,iBAAiBtrB,iBAAiBsF,GAIpD,OAHInrT,GAAEgsR,QAAQ54X,KACVA,EAASxF,KAAKujb,iBAAiB5lB,cAAcJ,IAE7CnrT,GAAEgsR,QAAQ54X,GACH,KAEJxF,KAAKohc,aAAatlU,SAASt2H,EAAQkvY,IAE9C2mH,EAAQ3oe,UAAUpH,iBAAmB,SAAUiqB,EAAW7U,GACtD,IAAIwiJ,EAAQljL,KAAKoqY,mBAAmByT,iBACpC79Y,KAAK0/Y,aAAap0X,iBAAiBiqB,EAAW7U,EAAUwiJ,IAE5Dm4U,EAAQ3oe,UAAUorX,kBAAoB,SAAUp9W,GAC5C,IAAIwiJ,EAAQljL,KAAKoqY,mBAAmByT,iBACpC79Y,KAAK0/Y,aAAa5B,kBAAkBp9W,EAAUwiJ,IAElDm4U,EAAQ3oe,UAAU/G,oBAAsB,SAAU4pB,EAAW7U,GACzD,IAAIwiJ,EAAQljL,KAAKoqY,mBAAmByT,iBACpC79Y,KAAK0/Y,aAAa/zX,oBAAoB4pB,EAAW7U,EAAUwiJ,IAE/Dm4U,EAAQ3oe,UAAUyrX,qBAAuB,SAAUz9W,GAC/C,IAAIwiJ,EAAQljL,KAAKoqY,mBAAmByT,iBACpC79Y,KAAK0/Y,aAAavB,qBAAqBz9W,EAAUwiJ,IAErDm4U,EAAQ3oe,UAAU+lU,cAAgB,SAAUnwU,GACxCtoB,KAAK0/Y,aAAajnD,cAAcnwU,IAEpC+ye,EAAQ3oe,UAAUxR,QAAU,WAExBlhB,KAAKkqe,SAAShpd,UAEdlhB,KAAKwR,QAAQ0P,WAEjBm6e,EAAQ3oe,UAAUsve,iBAAmB,WACjChigB,KAAKwub,SAASwwB,YAAY,SAAUt7T,GAAQ,OAAOA,EAAKs+S,yBAA2B,QAEvFq5D,EAAQ3oe,UAAUuve,mBAAqB,WAEnC,OADAl3d,QAAQ24B,KAAK,sSACN,MAEX23b,EAAQ3oe,UAAUilc,cAAgB,WAC9B,OAAI33d,KAAKosd,gBACEpsd,KAAKosd,gBAAgBuL,iBAG5B5sb,QAAQ24B,KAAK,yEACN,OAGf23b,EAAQ3oe,UAAUwve,yBAA2B,SAAUl0P,GACnD,OAAO57J,GAAE8tR,qBAAqBlyH,IAElCqtP,EAAQ3oe,UAAUyve,kBAAoB,SAAUC,GAC5Cr3d,QAAQ24B,KAAK,mKAEjB23b,EAAQ3oe,UAAU2ve,aAAe,SAAUv4a,GAClC9pF,KAAKosd,iBACNrhb,QAAQ24B,KAAK,yEAEjB1jE,KAAKosd,gBAAgBi2C,aAAav4a,IAEtCuxa,EAAQ3oe,UAAU4ve,oBAAsB,WAC/BtigB,KAAKosd,iBACNrhb,QAAQ24B,KAAK,yEAEjB1jE,KAAKosd,gBAAgB2iC,uBAEzBsM,EAAQ3oe,UAAU6ve,gBAAkB,WAChCvigB,KAAK+zf,gBAAgBE,QAEzBoH,EAAQ3oe,UAAU8ve,gBAAkB,WAChCxigB,KAAK+zf,gBAAgBC,QAEzBqH,EAAQ3oe,UAAU+ve,eAAiB,WAC/B,GAAI/jH,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYo3B,qBAAsB,uBAC1E51B,GAAeK,iBAAiB1hX,EAAQ6/W,YAAY68B,iBAAkB,sBACtE,OAAO/5a,KAAK0igB,aAAaD,kBAGjCpH,EAAQ3oe,UAAUiwe,iBAAmB,SAAU74a,GAC3C,GAAI40T,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYo3B,qBAAsB,yBAC1E51B,GAAeK,iBAAiB1hX,EAAQ6/W,YAAY68B,iBAAkB,wBACtE,OAAO/5a,KAAK0igB,aAAaC,iBAAiB74a,IAGlDuxa,EAAQ3oe,UAAUkwe,iBAAmB,SAAU94a,GAC3C,GAAI40T,GAAeK,iBAAiB1hX,EAAQ6/W,YAAYo3B,qBAAsB,yBAC1E51B,GAAeK,iBAAiB1hX,EAAQ6/W,YAAY68B,iBAAkB,wBACtE,OAAO/5a,KAAK0igB,aAAaE,iBAAiB94a,IAGlDuxa,EAAQ3oe,UAAUmwe,4BAA8B,SAAUC,EAAeC,GAChE/igB,KAAKg1f,kBACNjqd,QAAQ24B,KAAK,8DAEjB1jE,KAAKg1f,iBAAiB6N,4BAA4BC,EAAeC,IAErE1H,EAAQ3oe,UAAUswe,6BAA+B,SAAUF,GAClD9igB,KAAKg1f,kBACNjqd,QAAQ24B,KAAK,8DAEjB1jE,KAAKg1f,iBAAiBgO,6BAA6BF,IAEvDzH,EAAQ3oe,UAAUuwe,sBAAwB,WACjCjjgB,KAAKg1f,kBACNjqd,QAAQ24B,KAAK,8DAEjB1jE,KAAKg1f,iBAAiBI,iBAE1BiG,EAAQ3oe,UAAUimd,+BAAiC,SAAUp7E,EAAQ2lG,GAEjE,IAAI19f,EAASxF,KAAKujb,iBAAiB5lB,cAAcJ,GACjDv9Z,KAAK07b,YAAYC,yBAAyBn2b,EAAQ09f,IAEtD7H,EAAQ3oe,UAAU0oa,8BAAgC,SAAU79B,EAAQxnB,GAEhE,IAAIvwY,EAASxF,KAAKujb,iBAAiB5lB,cAAcJ,GACjDv9Z,KAAK07b,YAAYynE,wBAAwB39f,EAAQuwY,IAErDslH,EAAQ3oe,UAAU0we,cAAgB,WAE1BpjgB,KAAKo0f,oBACLp0f,KAAKo0f,mBAAmBiP,iBAG5BrjgB,KAAK07b,YAAY2nE,kBAErBhI,EAAQ3oe,UAAU4we,eAAiB,SAAUC,GACzCvjgB,KAAKoqY,mBAAmBz5Q,YAAYuiT,GAAmByR,kBAAmB4+E,IAE9ElI,EAAQ3oe,UAAUunV,cAAgB,WAC9B,OAAOj6W,KAAKm3d,YAAYl9G,eAAc,IAE1CohJ,EAAQ3oe,UAAU8we,kBAAoB,WAClC,OAAOxjgB,KAAKm3d,YAAYl9G,eAAc,IAE1CohJ,EAAQ3oe,UAAU67c,yBAA2B,SAAUzkZ,GAEnD,YADe,IAAXA,IAAqBA,EAAS,IAC3B9pF,KAAKm3d,YAAYoX,yBAAyBzkZ,IAErDuxa,EAAQ3oe,UAAU87c,uBAAyB,SAAU1kZ,GAEjD,YADe,IAAXA,IAAqBA,EAAS,IAC3B9pF,KAAKm3d,YAAYqX,uBAAuB1kZ,IAEnDuxa,EAAQ3oe,UAAU+7c,gBAAkB,WAChC,OAAOzue,KAAKm3d,YAAYsX,mBAE5B4sB,EAAQ3oe,UAAUogb,YAAc,SAAUlnM,QACvB,IAAXA,IAAqBA,GAAS,GAClC5rQ,KAAKm3d,YAAYrkB,YAAYlnM,IAEjCyvP,EAAQ3oe,UAAU2gd,iBAAmB,SAAUvpZ,GAC3C,IAAItkF,EAASxF,KAAKujb,iBAAiB5lB,cAAc7zU,EAAOyzU,QACxD,GAAK/3Z,EAAL,CAIA,IAAI+md,EAAe,CACflid,SAAUy/E,EAAOz/E,SACjBi0b,UAAWx0W,EAAOw0W,UAClB94b,OAAQA,GAEI4sG,GAAEgsR,QAAQt0S,EAAOw0W,YAE7Bt+b,KAAK8nd,UAAUorB,mBAAmBppZ,EAAOz/E,UAE7CrK,KAAKm3d,YAAYkc,iBAAiB9mB,EAAcziY,EAAOkhW,SAAUlhW,EAAOmhW,gBAZpElgZ,QAAQ24B,KAAK,gCAAkComB,EAAOyzU,SAc9D89F,EAAQ3oe,UAAU+we,WAAa,SAAU9mf,EAAKyxV,GACtCpuW,KAAKm9Z,gBACLn9Z,KAAKm9Z,eAAesmG,WAAW9mf,EAAKyxV,IAG5CitJ,EAAQ3oe,UAAUgxe,YAAc,SAAUnvJ,GAClCv0W,KAAKm9Z,gBACLn9Z,KAAKm9Z,eAAeumG,YAAYnvJ,IAGxC8mJ,EAAQ3oe,UAAUixe,cAAgB,WAC1B3jgB,KAAKm9Z,gBACLn9Z,KAAKm9Z,eAAezsZ,SAG5B2qf,EAAQ3oe,UAAUkxe,iBAAmB,SAAUC,GAC3C,IAAIvre,EAAM,KAsBV,OArBIt4B,KAAK++c,oBACD8kD,GAAqD,MAA/BA,EAAmBpV,UAEzCr8Y,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KADtB,sIAC0C,mCAE9DprC,EAAMt4B,KAAK++c,mBAAmB4vC,cAAckV,IAEvC7jgB,KAAKu7f,kBAEVnpZ,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KADtB,iKAC0C,gDAC1D1jE,KAAKu7f,iBAAiB5M,cAAckV,IAGpC94d,QAAQ/V,MAAM,qFAGlBh1B,KAAKm3d,YAAYiZ,uBAEZpwe,KAAKoqY,mBAAmBiuC,6BACzBr4a,KAAKm3d,YAAY4I,eAEdznc,GAGX+ie,EAAQ3oe,UAAUi8d,cAAgB,SAAUkV,GAGxC,OADAzxZ,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KADxB,sLAC0C,4BACjD1jE,KAAK4jgB,iBAAiBC,IAEjCxI,EAAQ3oe,UAAUoxe,sBAAwB,SAAUD,EAAoB5we,GAC/DjzB,KAAK++c,mBAIV/+c,KAAK++c,mBAAmBglD,mBAAmBF,EAAoB5we,GAH3D8X,QAAQ/V,MAAM,6EAMtBqme,EAAQ3oe,UAAUqxe,mBAAqB,SAAUF,EAAoB5we,GAEjEm/E,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KADxB,yNAC0C,iCACxD1jE,KAAK8jgB,sBAAsBD,EAAoB5we,IAEnDooe,EAAQ3oe,UAAUsxe,mBAAqB,SAAUr6f,EAAOuO,EAAO+rf,GAC3Dl5d,QAAQ24B,KAAK,wFACb1jE,KAAK2uf,cAAc,CAAE9rf,IAAKqV,EAAOu2e,SAAU9kf,EAAO6wE,OAAQ,KAAMhvE,OAAQ,QAE5E6vf,EAAQ3oe,UAAUwxe,YAAc,SAAU1tH,EAAUytH,GAChDl5d,QAAQ24B,KAAK,iFACb,IAAIygc,EAAe3tH,EAAS/sY,IAAI,SAAUirY,GAAW,OAAOA,EAAQ5kY,OACpE9P,KAAK2uf,cAAc,CAAE9rf,IAAK,KAAM4rf,SAAU,KAAMj0a,OAAQ,KAAMhvE,OAAQ24f,KAE1E9I,EAAQ3oe,UAAU80Z,SAAW,SAAUtva,EAAO+rf,GAC1Cl5d,QAAQ24B,KAAK,8EACb1jE,KAAK2uf,cAAc,CAAE9rf,IAAKqV,EAAOu2e,SAAU,KAAMj0a,OAAQ,KAAMhvE,OAAQ,QAE3E6vf,EAAQ3oe,UAAU0xe,wBAA0B,WACxCr5d,QAAQ24B,KAAK,uHACb1jE,KAAKqkgB,wBAEThJ,EAAQ3oe,UAAU4xe,yBAA2B,WACzCv5d,QAAQ24B,KAAK,wHACb1jE,KAAKqkgB,wBAEThJ,EAAQ3oe,UAAU2xe,qBAAuB,WACjCrkgB,KAAKu7f,iBACLv7f,KAAKu7f,iBAAiBgJ,eAGtBx5d,QAAQ24B,KAAK,sFAGrB23b,EAAQ3oe,UAAU8xe,sBAAwB,WACtCz5d,QAAQ24B,KAAK,iHACb1jE,KAAKykgB,0BAETpJ,EAAQ3oe,UAAU+xe,uBAAyB,WACvC15d,QAAQ24B,KAAK,kHACb1jE,KAAK0kgB,sBAETrJ,EAAQ3oe,UAAUgye,mBAAqB,WAC/B1kgB,KAAKu7f,iBACLv7f,KAAKu7f,iBAAiBoJ,aAGtB55d,QAAQ24B,KAAK,oFAIrB23b,EAAQ3oe,UAAUkye,qBAAuB,SAAU/8O,GAC/C98O,QAAQ24B,KAAK,8GACb1jE,KAAK6kgB,qBAAqBh9O,IAE9BwzO,EAAQ3oe,UAAUmye,qBAAuB,SAAUh9O,GAC3C7nR,KAAKw7f,mBACLx7f,KAAKw7f,mBAAmBmJ,WAAW98O,GAGnC98O,QAAQ24B,KAAK,wFAGrB23b,EAAQ3oe,UAAUoye,mBAAqB,WAEnC,OADA/5d,QAAQ24B,KAAK,gHACN1jE,KAAK+kgB,uBAEhB1J,EAAQ3oe,UAAUqye,oBAAsB,WACpC,GAAI/kgB,KAAKu7f,iBACL,OAAOv7f,KAAKu7f,iBAAiBuJ,qBAG7B/5d,QAAQ24B,KAAK,mFAGrB23b,EAAQ3oe,UAAUsye,cAAgB,WAC9B,GAAIhlgB,KAAKu7f,iBACL,OAAOv7f,KAAKu7f,iBAAiByJ,gBAG7Bj6d,QAAQ24B,KAAK,8EAGrB23b,EAAQ3oe,UAAUuye,mBAAqB,SAAUhf,EAAUif,GACvDn6d,QAAQ24B,KAAK,gHACb1jE,KAAKmlgB,oBAAoBlf,EAAUif,IAEvC7J,EAAQ3oe,UAAUyye,oBAAsB,SAAUlf,EAAUif,GACpDllgB,KAAKu7f,iBACLv7f,KAAKu7f,iBAAiB0J,mBAAmBhf,EAAUif,GAGnDn6d,QAAQ24B,KAAK,mFAGrB23b,EAAQ3oe,UAAU0ye,oBAAsB,WAEpC,OADAr6d,QAAQ24B,KAAK,+GACN1jE,KAAKqlgB,sBAEhBhK,EAAQ3oe,UAAU4ye,qBAAuB,WAErC,OADAv6d,QAAQ24B,KAAK,gHACN1jE,KAAKqlgB,sBAEhBhK,EAAQ3oe,UAAU2ye,mBAAqB,WACnC,OAAIrlgB,KAAKu7f,iBACEv7f,KAAKu7f,iBAAiBgK,gBAExBvlgB,KAAKw7f,mBACHx7f,KAAKw7f,mBAAmB+J,qBAG/Bx6d,QAAQ24B,KAAK,mHAGrB23b,EAAQ3oe,UAAU8ye,cAAgB,WAC9BxlgB,KAAK8nd,UAAUmpC,+BAEnBoK,EAAQ3oe,UAAU+ye,oBAAsB,WAEpC,OADA16d,QAAQ24B,KAAK,+EACN1jE,KAAK0lgB,wBAEhBrK,EAAQ3oe,UAAUgze,qBAAuB,WACrC,OAAO1lgB,KAAKm3d,YAAY4a,8BAE5BspB,EAAQ3oe,UAAUize,mBAAqB,WAEnC,OADA56d,QAAQ24B,KAAK,6EACN1jE,KAAK4lgB,uBAEhBvK,EAAQ3oe,UAAUkze,oBAAsB,WACpC,OAAO5lgB,KAAKm3d,YAAY6a,6BAE5BqpB,EAAQ3oe,UAAUmze,uBAAyB,SAAUl8f,GACjD,OAAO3J,KAAKwub,SAAS4wB,OAAOz1c,IAEhC0xf,EAAQ3oe,UAAUoze,qBAAuB,WACrC,OAAO9lgB,KAAKwub,SAASgmE,eAEzB6G,EAAQ3oe,UAAUqze,0BAA4B,WAC1C,OAAO/lgB,KAAKi9d,gBAAgB+oC,mBAEhC3K,EAAQ3oe,UAAUuze,sBAAwB,WACtC,OAAOjmgB,KAAKi9d,gBAAgBipC,eAEhC7K,EAAQ3oe,UAAUizZ,sBAAwB,SAAUxlZ,GAChDngC,KAAKoqY,mBAAmBz5Q,YAAY,qBAAsBxwF,IAE9Dk7d,EAAQ3oe,UAAUyze,yBAA2B,WACzC,OAAOnmgB,KAAKi9d,gBAAgBC,kBAEhCm+B,EAAQ3oe,UAAU0ze,wBAA0B,WACxC,OAAOpmgB,KAAKi9d,gBAAgBopC,iBAEhChL,EAAQ3oe,UAAU4ze,sBAAwB,WACtC,OAAOtmgB,KAAKi9d,gBAAgBspC,qBAEhClL,EAAQ3oe,UAAU8ze,uBAAyB,WACvCxmgB,KAAKi9d,gBAAgBwpC,gBAEzBpL,EAAQ3oe,UAAUg0e,2BAA6B,WAC3C1mgB,KAAKi9d,gBAAgB0pC,oBAEzBtL,EAAQ3oe,UAAUk0e,wBAA0B,WACxC5mgB,KAAKi9d,gBAAgB4pC,iBAEzBxL,EAAQ3oe,UAAUo0e,uBAAyB,WACvC9mgB,KAAKi9d,gBAAgB8pC,gBAEzB1L,EAAQ3oe,UAAUs0e,mBAAqB,SAAUxpf,GAC7Cxd,KAAKi9d,gBAAgBgqC,SAASzpf,IAElC49e,GAAa,CACTt+G,GAAS,qBACVu+G,EAAQ3oe,UAAW,wBAAoB,GAC1C0oe,GAAa,CACTt+G,GAAS,eACVu+G,EAAQ3oe,UAAW,kBAAc,GACpC0oe,GAAa,CACTt+G,GAAS,iBACVu+G,EAAQ3oe,UAAW,oBAAgB,GACtC0oe,GAAa,CACTz+G,GAAU,gBACX0+G,EAAQ3oe,UAAW,mBAAe,GACrC0oe,GAAa,CACTz+G,GAAU,kBACX0+G,EAAQ3oe,UAAW,qBAAiB,GACvC0oe,GAAa,CACTz+G,GAAU,qBACX0+G,EAAQ3oe,UAAW,wBAAoB,GAC1C0oe,GAAa,CACTz+G,GAAU,wBACX0+G,EAAQ3oe,UAAW,2BAAuB,GAC7C0oe,GAAa,CACTz+G,GAAU,uBACX0+G,EAAQ3oe,UAAW,0BAAsB,GAC5C0oe,GAAa,CACTz+G,GAAU,iBACX0+G,EAAQ3oe,UAAW,oBAAgB,GACtC0oe,GAAa,CACTz+G,GAAU,wBACX0+G,EAAQ3oe,UAAW,2BAAuB,GAC7C0oe,GAAa,CACTz+G,GAAU,iBACX0+G,EAAQ3oe,UAAW,oBAAgB,GACtC0oe,GAAa,CACTz+G,GAAU,mBACX0+G,EAAQ3oe,UAAW,sBAAkB,GACxC0oe,GAAa,CACTz+G,GAAU,YACX0+G,EAAQ3oe,UAAW,eAAW,GACjC0oe,GAAa,CACTz+G,GAAU,aACX0+G,EAAQ3oe,UAAW,gBAAY,GAClC0oe,GAAa,CACTz+G,GAAU,mBACX0+G,EAAQ3oe,UAAW,sBAAkB,GACxC0oe,GAAa,CACTz+G,GAAU,oBACX0+G,EAAQ3oe,UAAW,uBAAmB,GACzC0oe,GAAa,CACTz+G,GAAU,oBACX0+G,EAAQ3oe,UAAW,uBAAmB,GACzC0oe,GAAa,CACTz+G,GAAU,uBACX0+G,EAAQ3oe,UAAW,0BAAsB,GAC5C0oe,GAAa,CACTt+G,GAAS,oBACVu+G,EAAQ3oe,UAAW,uBAAmB,GACzC0oe,GAAa,CACTt+G,GAAS,qBACVu+G,EAAQ3oe,UAAW,wBAAoB,GAC1C0oe,GAAa,CACTt+G,GAAS,mBACVu+G,EAAQ3oe,UAAW,sBAAkB,GACxC0oe,GAAa,CACTz+G,GAAU,gBACX0+G,EAAQ3oe,UAAW,mBAAe,GACrC0oe,GAAa,CACTt+G,GAAS,uBACVu+G,EAAQ3oe,UAAW,0BAAsB,GAC5C0oe,GAAa,CACTz+G,GAAU,wBACX0+G,EAAQ3oe,UAAW,2BAAuB,GAC7C0oe,GAAa,CACTz+G,GAAU,eACX0+G,EAAQ3oe,UAAW,kBAAc,GACpC0oe,GAAa,CACTz+G,GAAU,0BACX0+G,EAAQ3oe,UAAW,6BAAyB,GAC/C0oe,GAAa,CACTt+G,GAAS,qBACVu+G,EAAQ3oe,UAAW,wBAAoB,GAC1C0oe,GAAa,CACTt+G,GAAS,iBACVu+G,EAAQ3oe,UAAW,oBAAgB,GACtC0oe,GAAa,CACTt+G,GAAS,oBACVu+G,EAAQ3oe,UAAW,uBAAmB,GACzC0oe,GAAa,CACT9+G,IACD++G,EAAQ3oe,UAAW,OAAQ,MACpB0oe,GAAa,CACnBlgH,GAAK,YACNmgH,GAjpCsB,GA2pCzB6L,GAAsD,SAAUr9X,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5Dq9X,GAAmC,WACnC,SAASA,IACLnngB,KAAKongB,0BAA4B,GAsErC,OApEAD,EAAkBz0e,UAAUirX,SAAW,SAAUC,GAC7C59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,sBAEvC6hgB,EAAkBz0e,UAAUokP,SAAW,SAAUuwP,EAAkBv9a,GAC/D,MAAgC,mBAArBu9a,EAEIA,EACCv9a,GAEqB,iBAArBu9a,EAGLrngB,KAAKsngB,mBADKD,EAC0Bv9a,QAG3C/+C,QAAQ/V,MAAM,yDAA0Dqye,IAGhFF,EAAkBz0e,UAAU40e,mBAAqB,SAAU7iI,EAAY36S,GACnE,IAKI,OAJyB9pF,KAAKungB,yBAAyB9iI,EAG1C+iI,CAAmB19a,EAAOvoF,MAAOuoF,EAAOt4E,QAASs4E,EAAOwvO,SAAUxvO,EAAOooD,SAAUpoD,EAAOvoF,MAAOuoF,EAAO45D,KAAM55D,EAAOh6E,KAAMg6E,EAAO+hR,OAAQ/hR,EAAOz/E,SAAUy/E,EAAOmgS,IAAKngS,EAAOogS,UAAWpgS,EAAOgyC,SAAUhyC,EAAOtkF,OAAQskF,EAAO22U,aAGjP,MAAOxsY,GAWH,OAPA8W,QAAQ0wC,IAAI,uCAEZ1wC,QAAQ0wC,IAAI,gBAAkBgpT,GAE9B15V,QAAQ0wC,IAAI,WAAYqO,GAExB/+C,QAAQ0wC,IAAI,eAAiBxnD,GACtB,OAGfkze,EAAkBz0e,UAAU60e,yBAA2B,SAAU9iI,GAE7D,GAAIzkY,KAAKongB,0BAA0B3iI,GAC/B,OAAOzkY,KAAKongB,0BAA0B3iI,GAG1C,IAAIgjI,EAAezngB,KAAK0ngB,mBAAmBjjI,GACvCkjI,EAAc,IAAIhwV,SAAS,iHAAkH8vV,GAGjJ,OADAzngB,KAAKongB,0BAA0B3iI,GAAckjI,EACtCA,GAEXR,EAAkBz0e,UAAUg1e,mBAAqB,SAAUjjI,GAGvD,OAAIA,EAAWx7X,QAAQ,WAAa,EACzBw7X,EAGA,UAAYA,EAAa,KAGxCyiI,GAAa,EACC,EAtEwD/8X,EAsErD8yQ,GAAU,iBArEpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAqEpC,MACXwqf,EAAkBz0e,UAAW,WAAY,MACxBw0e,GAAa,CAC7BhsH,GAAK,sBACNisH,GA1E6C,IAAsBh9X,EAGnC,GAiFnCy9X,GAAsD,SAAU/9X,EAAYr9G,EAAQ7P,EAAK8gB,GACzF,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D+9X,GAAiC,WACjC,SAASA,IACL7ngB,KAAK8ngB,cAAgB,GACrB9ngB,KAAK+ngB,iBAAmB,GA4D5B,OAxDAF,EAAgBn1e,UAAU09b,YAAc,SAAUj8a,EAAKlhB,GACnD,IAAI+0e,EAAoBhogB,KAAK8ngB,cAAc3zd,GAC3C,GAAI6zd,EACA,OAAOA,EAEX,IAAIC,EAAejogB,KAAK+ngB,iBAAiB5zd,GACrCo4S,EAAOvsV,KACX,IAAKiogB,EAAc,CAGfjogB,KAAK+ngB,iBAAiB5zd,GADtB8zd,EAAe,GAGf,IAAIC,EAAS,IAAI98a,eACjB88a,EAAO38a,OAAS,WACZghQ,EAAK47K,iBAAiBnogB,KAAMm0C,IAEhC+zd,EAAO78a,KAAK,MAAOl3C,GACnB+zd,EAAOv8a,OAOX,OAJI14D,GACAg1e,EAAarkgB,KAAKqvB,GAGf,MAEX40e,EAAgBn1e,UAAUy1e,iBAAmB,SAAUC,EAAYj0d,GAC/D,GAA0B,MAAtBi0d,EAAW58a,QAA0C,OAAxB48a,EAAWn8d,SAA5C,CAMAjsC,KAAK8ngB,cAAc3zd,GAAOi0d,EAAWn8d,UAAYm8d,EAAW38a,aAG5D,IADA,IAAIl1D,EAAYv2B,KAAK+ngB,iBAAiB5zd,GAC7BtsC,EAAI,EAAGA,EAAI0uB,EAAUpyB,OAAQ0D,KAKlCorB,EAJesD,EAAU1uB,MAM7B,GAAI7H,KAAKgyd,OAAQ,CACb,IAAIq2C,EAASrogB,KACbmrB,OAAOyZ,WAAW,WACdyje,EAAOr2C,OAAO7lL,UACf,SAnBHphQ,QAAQ24B,KAAK,gCAAkC0kc,EAAW58a,OAAS,MAAQr3C,IAsBnFyzd,GAAa,CACTjrH,GAAU,WACXkrH,EAAgBn1e,UAAW,cAAU,GACtBk1e,GAAa,CAC3B1sH,GAAK,oBACN2sH,GA9D8B,GAwEjCS,GAAuD,SAAUz+X,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dy+X,GAA8B,WAC9B,SAASA,IACLvogB,KAAKwogB,UAAY,GACjBxogB,KAAK6yD,OAAS,GA+blB,OA7bA01c,EAAa71e,UAAU4yQ,KAAO,WAC1B,IAAI5jP,EAAQ1hD,KACZA,KAAK6yD,OAAS,CACV7yD,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO+E,qBAAsB,WAC5DpyW,EAAM8md,UAAUn1f,QAAQ,SAAUwhR,GAC9BziL,GAAE+tR,YAAYtrG,EAAMxpR,QAAS,yBAGrCrL,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOgF,kBAAmB,WACzDryW,EAAM8md,UAAUn1f,QAAQ,SAAUwhR,GAC9BziL,GAAEiuR,eAAexrG,EAAMxpR,QAAS,2BAKhDk9f,EAAa71e,UAAUxR,QAAU,WACzBlhB,KAAK6yD,OAAO1uD,SACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC7Cj3C,KAAK6yD,OAAS,KAGtB01c,EAAa71e,UAAUu3c,iBAAmB,SAAUC,GAChDlqe,KAAKkqe,SAAWA,GAEpBq+B,EAAa71e,UAAUumZ,eAAiB,WAEpC,OADmBj5a,KAAKoqY,mBAAmB6uC,kBAIpCj5a,KAAKkqe,SAASu+B,cAEzBF,EAAa71e,UAAUg2e,qBAAuB,SAAU5+a,GACpD,IAAIqnE,EAAarnE,EAAO51B,YAAYzpD,wBAChCk+f,EAAa3ogB,KAAK4ogB,gBAClBtjf,EAAItlB,KAAK6ogB,kBAAkB/+a,EAAQqnE,EAAWplJ,IAAM48f,EAAW58f,KAC/Dg8B,EAAY+hD,EAAOuhY,OAAOt4Y,YAAc,EAAK+W,EAAOuhY,OAAOt4Y,YAAc,IAC7E+W,EAAOuhY,OAAO9/c,MAAMw8B,SAAWA,EAAW,KAC1C,IAKIxM,EAJAute,EADgBH,EAAWz8f,MAAQy8f,EAAW18f,KACvB87B,EA2B3B,SAASghe,IACL,OAAO53W,EAAWjlJ,MAAQy8f,EAAW18f,KAAO,EAEhD,SAAS+8f,IACL,OAAO73W,EAAWllJ,KAAO08f,EAAW18f,KAAO87B,EA1B3C/nC,KAAKoqY,mBAAmBme,gBAExBhtX,EAAIyte,KACI,IACJzte,EAAIwte,KAEJxte,EAAIute,IACJvte,EAAI,MAKRA,EAAIwte,KACID,IACJvte,EAAIyte,KAEJzte,EAAI,IACJA,EAAI,IAGZuuD,EAAOuhY,OAAO9/c,MAAMU,KAAOsvB,EAAI,KAC/BuuD,EAAOuhY,OAAO9/c,MAAMQ,IAAMuZ,EAAI,MAQlCijf,EAAa71e,UAAU04b,6BAA+B,SAAUthY,GAC5D,IAAIn/E,EAAK3K,KAAKipgB,sBAAsBn/a,EAAOisT,YAE3C/1Y,KAAKkpgB,cAAc,CACf79C,OAFSvhY,EAAOuhY,OAGhB9vb,EAJwD5wB,EAAG4wB,EAK3DjW,EALkE3a,EAAG2a,EAMrE6jf,OALiCr/a,EAAOq/a,OAMxC79C,OANyDxhY,EAAOwhY,OAOhEwK,kBAAkB,IAEtB91d,KAAKopgB,qBAAqBt/a,EAAOuhY,OAAQ,KAAMvhY,EAAOisT,WAAYjsT,EAAOppF,KAAMopF,EAAOtkF,OAAQskF,EAAO4qT,UAEzG6zH,EAAa71e,UAAUu2e,sBAAwB,SAAUh1e,GACrD,IAAI00e,EAAa3ogB,KAAK4ogB,gBACtB,MAAO,CACHrte,EAAGtH,EAAEyuK,QAAUimU,EAAW18f,KAC1BqZ,EAAG2O,EAAE0uK,QAAUgmU,EAAW58f,MAGlCw8f,EAAa71e,UAAUqjc,4BAA8B,SAAUjsY,GAC3D,IAAIqnE,EAAarnE,EAAO51B,YAAYzpD,wBAChC4+f,EAAYv/a,EAAOu/a,WAAa,OAChCV,EAAa3ogB,KAAK4ogB,gBAClBrte,EAAI41H,EAAWllJ,KAAO08f,EAAW18f,KACnB,UAAdo9f,IACA9te,GAAMuuD,EAAOuhY,OAAOv4Y,YAAcq+E,EAAWznJ,OAEjD1J,KAAKkpgB,cAAc,CACf79C,OAAQvhY,EAAOuhY,OACftjb,SAAU+hD,EAAO/hD,SACjBC,UAAW8hD,EAAO9hD,UAClBmhe,OAAQr/a,EAAOq/a,OACf79C,OAAQxhY,EAAOwhY,OACf/vb,EAAGA,EACHjW,EAAG6rI,EAAWplJ,IAAM48f,EAAW58f,IAAMolJ,EAAW3mJ,OAChDsrd,iBAAkBhsY,EAAOgsY,mBAE7B91d,KAAKopgB,qBAAqBt/a,EAAOuhY,OAAQvhY,EAAO51B,YAAa,KAAM41B,EAAOppF,KAAMopF,EAAOtkF,OAAQskF,EAAO4qT,UAE1G6zH,EAAa71e,UAAUsjc,2BAA6B,SAAUlsY,GAC1D,IAAIqnE,EAAarnE,EAAO51B,YAAYzpD,wBAChCk+f,EAAa3ogB,KAAK4ogB,gBACtB5ogB,KAAKkpgB,cAAc,CACf79C,OAAQvhY,EAAOuhY,OACftjb,SAAU+hD,EAAO/hD,SACjBohe,OAAQr/a,EAAOq/a,OACf79C,OAAQxhY,EAAOwhY,OACf/vb,EAAG41H,EAAWllJ,KAAO08f,EAAW18f,KAChCqZ,EAAG6rI,EAAWplJ,IAAM48f,EAAW58f,IAC/B+pd,iBAAkBhsY,EAAOgsY,mBAE7B91d,KAAKopgB,qBAAqBt/a,EAAOuhY,OAAQvhY,EAAO51B,YAAa,KAAM41B,EAAOppF,KAAMopF,EAAOtkF,OAAQskF,EAAO4qT,UAE1G6zH,EAAa71e,UAAU02e,qBAAuB,SAAU/9C,EAAQn3Z,EAAa6hV,EAAYr1Y,EAAM8E,EAAQkvY,GACnG,IAAIzhX,EAAWjzB,KAAKoqY,mBAAmB+uC,0BACnClmZ,GASAA,EARa,CACTztB,OAAQA,EACRkvY,QAASA,EACT22E,OAAQA,EACR3qd,KAAMA,EACNwzD,YAAaA,EACb6hV,WAAYA,KAKxBwyH,EAAa71e,UAAUw2e,cAAgB,SAAUp/a,GAC7C,IAAIvuD,EAAIuuD,EAAOvuD,EACXjW,EAAIwkE,EAAOxkE,EACXwkE,EAAOq/a,SACP5te,GAAKuuD,EAAOq/a,QAEZr/a,EAAOwhY,SACPhmc,GAAKwkE,EAAOwhY,QAGZxhY,EAAOgsY,mBACPv6b,EAAIv7B,KAAKspgB,kBAAkBx/a,EAAQvuD,GACnCjW,EAAItlB,KAAK6ogB,kBAAkB/+a,EAAQxkE,IAEvCwkE,EAAOuhY,OAAO9/c,MAAMU,KAAOsvB,EAAI,KAC/BuuD,EAAOuhY,OAAO9/c,MAAMQ,IAAMuZ,EAAI,MAElCijf,EAAa71e,UAAUk2e,cAAgB,WAKnC,IAAIzzJ,EAAcn1W,KAAKi5a,iBACnBswF,EAAYvpgB,KAAKoqY,mBAAmBhwB,cACpCjF,IAAgBo0J,EAAUzme,OAC1BqyU,EAAco0J,EAAU/0d,iBAE5B,IAAIjpC,EAAQioE,iBAAiB2hS,GACzB/iI,EAAS+iI,EAAY1qW,wBACzB,MAAO,CACHsB,IAAKqmO,EAAOrmO,IAAM8hB,WAAWtiB,EAAMuoE,iBAAmB,EACtD7nE,KAAMmmO,EAAOnmO,KAAO4hB,WAAWtiB,EAAMmoE,kBAAoB,EACzDxnE,MAAOkmO,EAAOlmO,MAAQ2hB,WAAWtiB,EAAMqoE,mBAAqB,EAC5D5nE,OAAQomO,EAAOpmO,OAAS6hB,WAAWtiB,EAAMyoE,oBAAsB,IAGvEu0b,EAAa71e,UAAUm2e,kBAAoB,SAAU/+a,EAAQxkE,GACzD,IAAIikf,EAAYvpgB,KAAKoqY,mBAAmBhwB,cACpCovJ,EAAaD,EAAU/0d,gBACvB2gU,EAAcn1W,KAAKi5a,iBACnB0vF,EAAaxzJ,EAAY1qW,wBACzBg/f,EAAeF,EAAU/0d,gBAAgB/pC,wBACzCi/f,EAASv0J,IAAgBo0J,EAAUzme,KACnCkF,EAAYzpB,KAAKG,IAAI,IAAKiqf,EAAWn+f,QACrCjF,EAAO,EACPukF,EAAO9hD,WAAa8hD,EAAO9hD,UAAYA,EACvCA,EAAY8hD,EAAO9hD,UAEd8hD,EAAOuhY,OAAO55b,aAAe,IAClCuW,EAAY8hD,EAAOuhY,OAAOx4Y,aAC1BttE,EAAO6sG,GAAEkwR,kBAAkBx4S,EAAOuhY,QAAUrjb,GAEhD,IAAI2he,EAAiBD,EAAUt3Z,GAAEkwR,kBAAkBknI,GAAcA,EAAWphf,UAAaugf,EAAWn+f,OAChGk/f,IACAC,GAAkBprf,KAAKqiC,IAAI6od,EAAa19f,IAAM48f,EAAW58f,MAE7D,IAAI+jJ,EAAO65W,EAAiB3he,EAAYziC,EACxC,OAAOgZ,KAAKG,IAAIH,KAAKukC,IAAIx9B,EAAG,GAAI/G,KAAKqiC,IAAIkvG,KAE7Cy4W,EAAa71e,UAAU42e,kBAAoB,SAAUx/a,EAAQvuD,GACzD,IAAIgue,EAAYvpgB,KAAKoqY,mBAAmBhwB,cACpCovJ,EAAaD,EAAU/0d,gBACvB2gU,EAAcn1W,KAAKi5a,iBACnB0vF,EAAaxzJ,EAAY1qW,wBACzBg/f,EAAeF,EAAU/0d,gBAAgB/pC,wBACzCi/f,EAASv0J,IAAgBo0J,EAAUzme,KACnCuob,EAASvhY,EAAOuhY,OAChBtjb,EAAWxpB,KAAKG,IAAI,IAAKiqf,EAAWj/f,OACpCnE,EAAO,EACPukF,EAAO/hD,UAAY+hD,EAAO/hD,SAAWA,EACrCA,EAAW+hD,EAAO/hD,SAEbsjb,EAAOv4Y,YAAc,IAE1Bu4Y,EAAO9/c,MAAMw8B,UADbA,EAAWsjb,EAAOv4Y,aACiB,KACnCvtE,EAAO6sG,GAAEmwR,iBAAiB8oF,GAAUtjb,GAExC,IAAI6he,EAAgBF,EAAUt3Z,GAAEmwR,iBAAiBinI,GAAcA,EAAW9wb,WAAciwb,EAAWj/f,MAC/FgggB,IACAE,GAAiBrrf,KAAKqiC,IAAI6od,EAAax9f,KAAO08f,EAAW18f,OAE7D,IAAI68f,EAAOc,EAAgB7he,EAAWxiC,EACtC,OAAOgZ,KAAKG,IAAIH,KAAKukC,IAAIvnB,EAAG,GAAIhd,KAAKqiC,IAAIkod,KAK7CP,EAAa71e,UAAUm3e,gBAAkB,SAAU/mI,EAAQgnI,EAAYC,EAAgBxgb,GACnF,OAAOvpF,KAAKkrd,UAAS,EAAMpoF,EAAQgnI,EAAYC,EAAgBxgb,IAEnEg/a,EAAa71e,UAAUw4b,SAAW,SAAUxuL,EAAOomG,EAAQgnI,EAAYC,EAAgBxgb,EAAOygb,GAC1F,IAAItod,EAAQ1hD,KACRupgB,EAAYvpgB,KAAKoqY,mBAAmBhwB,cAExC,IADkB,IAAI1/T,MAAOwmE,WACxBqoZ,EAED,OADAx+d,QAAQ24B,KAAK,2DACN,aAEX,IAAIw5G,EAAM9qE,GAAE+S,UAAUnlH,KAAKwogB,UAAW,SAAU3zO,GAAS,OAAOA,EAAMxpR,UAAYy3X,IAClF,IAAa,IAAT5lN,EAEA,OADYl9K,KAAKwogB,UAAUtrV,GACd+sV,SAEjB,IAAI1G,EAAevjgB,KAAKi5a,iBAGxBsqF,EAAazrf,YAAYgrX,GACzBA,EAAOv3X,MAAMQ,IAAM,MACnB+2X,EAAOv3X,MAAMU,KAAO,MAGpB,IAAI05b,EAAWh7Z,SAAS9yB,cAAc,OAClCm6D,EAAQhyE,KAAKu7K,YAAYuoQ,WAAW9xW,MACpCA,GACAogC,GAAE+tR,YAAYwlE,EAAU3zX,GAE5BogC,GAAE+tR,YAAYwlE,EAAU,YACxBvzV,GAAE+tR,YAAY2C,EAAQ9iY,KAAKoqY,mBAAmBme,cAAgB,SAAW,UACzEn2S,GAAE+tR,YAAY2C,EAAQ,kBACtB6iE,EAAS7tb,YAAYgrX,GACrBygI,EAAazrf,YAAY6tb,GACrBqkE,EACAhqgB,KAAKkqgB,eAAevkE,GAAU,GAG9B3lc,KAAKmqgB,kBAAkBxkE,GAE3B,IAAIykE,GAAc,EACdC,EAA2B,SAAU/hf,IAC3BA,EAAMi/F,OAASj/F,EAAM2E,WACnBqjX,GAAUmB,YAAck0D,EAAS/4a,SAAS+d,SAASlgB,gBAC3D8ia,EAAU,OAGd+8E,EAAwB,SAAUhif,GAClCila,EAAUjla,IAEViif,EAAwB,SAAUjif,GAClCila,EAAU,KAAMjla,IAEhBila,EAAY,SAAUx3C,EAAYsjD,GAIlC33Y,EAAM8od,wBAAwBz0H,EAAYsjD,EAAYv2D,IAElDphV,EAAM+od,gCAAgClhb,EAAOwsT,EAAYsjD,IAGzD+wE,IAGJA,GAAc,EACd7G,EAAa9hf,YAAYkkb,GACzB4jE,EAAU59e,oBAAoB,UAAW0+e,GACzCd,EAAU59e,oBAAoB,YAAa2+e,GAC3Cf,EAAU59e,oBAAoB,aAAc4+e,GAC5ChB,EAAU59e,oBAAoB,cAAe2+e,GAC7C5od,EAAMg+V,aAAa/zX,oBAAoBojY,GAAOqD,mBAAoBk4G,GAC9DP,GACAA,IAEJrod,EAAM8md,UAAY9md,EAAM8md,UAAUrzf,OAAO,SAAU0/Q,GAAS,OAAOA,EAAMxpR,UAAYy3X,MAmBzF,OAfA33W,OAAOyZ,WAAW,WACVkle,GACAP,EAAUj+e,iBAAiB,UAAW++e,GAEtC3tO,IACA6sO,EAAUj+e,iBAAiB,YAAag/e,GACxC5od,EAAMg+V,aAAap0X,iBAAiByjY,GAAOqD,mBAAoBk4G,GAC/Df,EAAUj+e,iBAAiB,aAAci/e,GACzChB,EAAUj+e,iBAAiB,cAAeg/e,KAE/C,GACHtqgB,KAAKwogB,UAAU5kgB,KAAK,CAChByH,QAASy3X,EACTmnI,SAAU18E,IAEPA,GAEXg7E,EAAa71e,UAAU83e,wBAA0B,SAAUz0H,EAAYsjD,EAAYv2D,GAC/E,IAAIx6W,EAAQytX,GAA0BsjD,EACtC,IAAK/wa,EACD,OAAO,EAEX,IAAIoif,EAAmBt4Z,GAAE+S,UAAUnlH,KAAKwogB,UAAW,SAAU3zO,GAAS,OAAOA,EAAMxpR,UAAYy3X,IAC/F,IAA0B,IAAtB4nI,EACA,OAAO,EAEX,IAAK,IAAI7igB,EAAI6igB,EAAkB7igB,EAAI7H,KAAKwogB,UAAUrkgB,OAAQ0D,IAEtD,GAAIuqG,GAAEq4R,qBADMzqY,KAAKwogB,UAAU3ggB,GACMwD,QAASid,GACtC,OAAO,EAOf,IADA,IAAImqB,EAAKnqB,EAAMkE,OACRimB,GAAMA,GAAM9H,SAAS7H,MAAM,CAC9B,GAAI2P,EAAG9vC,UAAUiqB,SAAS,8BAAqD,OAArB6lB,EAAG7J,cACzD,OAAO,EAEX6J,EAAKA,EAAG7J,gBAKhB2/d,EAAa71e,UAAU+3e,gCAAkC,SAAUE,EAAe50H,EAAYsjD,GAK1F,IAAIuxE,EAAoB,KASxB,GARI70H,EAEA60H,EAAoB70H,EAEfsjD,IAELuxE,EAAoBvxE,EAAWvqS,QAAQ,IAEvC87W,GAAqBD,EAAe,CAGpC,IACIE,EAAY90H,EAAaA,EAAWrsW,QAAU,EAC9Cohe,EAASvsf,KAAKqiC,IAAI+pd,EAAclhe,SAFpBssW,EAAaA,EAAWtsW,QAAU,IAES,EACvDshe,EAASxsf,KAAKqiC,IAAI+pd,EAAcjhe,QAAUmhe,GAAa,EAC3D,GAAIC,GAAUC,EACV,OAAO,EAGf,OAAO,GAEXxC,EAAa71e,UAAUs4e,WAAa,SAAU3/C,GAC1C,MAAQj5W,GAAEquR,cAAc4qF,EAAQ,aAAeA,EAAOzib,eAClDyib,EAASA,EAAOzib,cAEpB,OAAOwpE,GAAEquR,cAAc4qF,EAAQ,YAAcA,EAAS,MAE1Dk9C,EAAa71e,UAAUw3e,eAAiB,SAAU7+C,EAAQ2+C,GACtD,IAAIrkE,EAAW3lc,KAAKgrgB,WAAW3/C,GAC1B1lB,IAGLvzV,GAAEmuR,oBAAoBolE,EAAU,qBAAsBqkE,GAClDA,GACAhqgB,KAAKmqgB,kBAAkBxkE,KAG/B4iE,EAAa71e,UAAUy3e,kBAAoB,SAAU9+C,GACjD,IAAIzkb,EAAS5mC,KAAKi5a,iBACduvF,EAAYj+f,MAAMmoB,UAAUlpB,MAAM0rB,KAAK0R,EAAOmlE,iBAAiB,cAC/Dk/Z,EAAWzC,EAAUrkgB,OACrB+mgB,EAAkB3ggB,MAAMmoB,UAAUlpB,MAAM0rB,KAAK0R,EAAOmlE,iBAAiB,+BACrEo/Z,EAAcD,EAAgB/mgB,OAC9Bwhc,EAAW3lc,KAAKgrgB,WAAW3/C,GAC/B,GAAK1lB,KAAYslE,GAAY,IAAMrke,EAAOha,SAASy+b,GAAnD,CAGA,IAAInuS,EAAMsrV,EAAUv/f,QAAQ08b,GACxBwlE,EACyB/4Z,GAAEquR,cAAcklE,EAAU,oBAE3CzoR,IAAQ+tV,EAAW,GACnB74Z,GAAEj7F,KAAK+zf,GAAiBloI,sBAAsB,WAAY2iE,GAGzDzoR,IAAQ+tV,EAAWE,EAAc,GACtCD,EAAgB,GAAGloI,sBAAsB,cAAe2iE,GAGvDzoR,IAAQ+tV,EAAW,GACxB74Z,GAAEj7F,KAAKqxf,GAAWxlI,sBAAsB,WAAY2iE,GAExD,IAAI77W,EAAS,CACTppF,KAAM,eACNupX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnC2wD,SAAUA,GAEd3lc,KAAK0/Y,aAAajnD,cAAc3uQ,KAEpCw+a,GAAc,CACV3rH,GAAU,uBACX4rH,EAAa71e,UAAW,0BAAsB,GACjD41e,GAAc,CACV3rH,GAAU,gBACX4rH,EAAa71e,UAAW,mBAAe,GAC1C41e,GAAc,CACV3rH,GAAU,iBACX4rH,EAAa71e,UAAW,oBAAgB,GAC3C41e,GAAc,CACVhsH,IACDisH,EAAa71e,UAAW,OAAQ,MACnC41e,GAAc,CACV9rH,IACD+rH,EAAa71e,UAAW,UAAW,MACvB41e,GAAc,CACzBptH,GAAK,iBACNqtH,GAjc2B,GA2c9B6C,GAAuD,SAAUvhY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5DuhY,GAA+B,WAC/B,SAASA,KAiBT,OAfAA,EAAc34e,UAAUirX,SAAW,SAAUvT,GACzCpqY,KAAKsrgB,QAAUlhI,EAAmBgxC,WAEtCiwF,EAAc34e,UAAUptB,OAAS,SAAUnE,GACvC,OAAO,IAAIoqgB,GAAOpqgB,EAAMnB,KAAKwrgB,UAAUjhe,KAAKvqC,QAEhDqrgB,EAAc34e,UAAU84e,UAAY,WAChC,OAAOxrgB,KAAKsrgB,SAEhBF,GAAc,EACA,EAhBwDjhY,EAgBrD8yQ,GAAU,sBAfpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAepC,MACX0uf,EAAc34e,UAAW,WAAY,MACxB04e,GAAc,CAC1BlwH,GAAK,kBACNmwH,GApB6C,IAAsBlhY,EAGvC,GAoB/BohY,GAAwB,WACxB,SAASA,EAAOpqgB,EAAMsqgB,GAClBzrgB,KAAKmB,KAAOA,EACZnB,KAAKyrgB,cAAgBA,EAWzB,OATAF,EAAO74e,UAAU84e,UAAY,WACzB,OAAOxrgB,KAAKyrgB,iBAEhBF,EAAO74e,UAAU+oD,IAAM,SAAUzhD,GACzBh6B,KAAKyrgB,iBAEL1ge,QAAQ0wC,IAAI,WAAaz7E,KAAKmB,KAAO,KAAO64B,IAG7Cuxe,EAdiB,GAuBxBG,GAAuD,SAAU7hY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D6hY,GAAqC,WACrC,SAASA,KAiGT,OA/FAA,EAAoBj5e,UAAU03c,iBAAmB,SAAUtiB,GACvD9nd,KAAK8nd,UAAYA,GAErB6jD,EAAoBj5e,UAAU4zd,uBAAyB,SAAU1nB,GAC7D5+d,KAAK4+d,eAAiBA,GAM1B+sC,EAAoBj5e,UAAUymY,2BAA6B,SAAU3zZ,EAAQkzZ,GACzE,IAAIq8E,EAAc/0e,KAAK4rgB,uBAAuBpmgB,GAE9C,IAAKuve,EACD,OAAQ,EAEZ,IAAI82B,EAAkBlhe,SAAS9yB,cAAc,QAE7Cg0f,EAAgBtggB,MAAMvB,SAAW,QAGjC,IAAI8hgB,EAAiB9rgB,KAAK8nd,UAAUqwC,qBACpC2T,EAAeh0f,YAAY+zf,GAG3B7rgB,KAAK+rgB,8BAA8BvmgB,EAAQqmgB,GACtCnzG,GAID14Z,KAAKgsgB,mBAAmBj3B,EAAa82B,GAIzC,IAAII,EAAsBJ,EAAgB/4b,YAM1C,OAJAg5b,EAAerqf,YAAYoqf,GAIpBI,EADejsgB,KAAKoqY,mBAAmBm2C,sBAGlDorF,EAAoBj5e,UAAUk5e,uBAAyB,SAAUpmgB,GAC7D,IAAIi5e,EAAO,KAUX,OARAz+e,KAAK4+d,eAAeqgB,qBAAqB,SAAUitB,GAC/C,GAAIA,aAAyBv0B,GAAmB,CAC5C,IAAIw0B,EAAoBD,EACpBC,EAAkBhmG,cAAgB3ga,IAClCi5e,EAAO0tB,MAIZ1tB,EAAOA,EAAKn4G,SAAW,MAElCqlI,EAAoBj5e,UAAUq5e,8BAAgC,SAAUvmgB,EAAQqmgB,GAC5E,IAAInqd,EAAQ1hD,KACCA,KAAKm3d,YAAY0U,qBAAqBrme,GAC5C6N,QAAQ,SAAUs1c,GAAS,OAAOjna,EAAMsqd,mBAAmBrjD,EAAOkjD,MAE7EF,EAAoBj5e,UAAUs5e,mBAAqB,SAAUrjD,EAAOkjD,GAEhE,IAAIO,EAAazjD,EAAM9kU,WAAU,GAEjCuoX,EAAW7ggB,MAAM7B,MAAQ,GAEzB0igB,EAAW7ggB,MAAMvB,SAAW,SAC5BoigB,EAAW7ggB,MAAMU,KAAO,GAIxB,IAAIoggB,EAAe1he,SAAS9yB,cAAc,OACtCu6F,GAAEquR,cAAc2rI,EAAY,oBAC5Bh6Z,GAAE+tR,YAAYksI,EAAc,aAC5Bj6Z,GAAE+tR,YAAYksI,EAAc,iBAC5BA,EAAa9ggB,MAAMvB,SAAW,UAIlCqigB,EAAa9ggB,MAAMwH,QAAU,YAI7Bs5f,EAAav0f,YAAYs0f,GACzBP,EAAgB/zf,YAAYu0f,IAEhCX,GAAc,CACV/uH,GAAU,gBACXgvH,EAAoBj5e,UAAW,mBAAe,GACjDg5e,GAAc,CACV/uH,GAAU,uBACXgvH,EAAoBj5e,UAAW,0BAAsB,GAClCg5e,GAAc,CAChCxwH,GAAK,wBACNywH,GAjGkC,GA2GrCW,GAAuD,SAAUziY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DyiY,GAAyC,WACzC,SAASA,KA4DT,OA1DAA,EAAwB75e,UAAUgnd,aAAe,SAAU5vZ,GACvD,IAAIpoC,EAAQ1hD,KACR4hd,EAAa,CACbE,gBAAiBh4X,EAAOg4X,iBAAmB,EAC3C1+E,SAAUt5S,EAAO6vZ,WACjB53B,YAAa/hd,KAAK+hd,YAAYx3a,KAAKvqC,KAAM8pF,GACzCk4X,WAAYhid,KAAKgid,WAAWz3a,KAAKvqC,KAAM8pF,GACvCm4X,WAAYjid,KAAKiid,WAAW13a,KAAKvqC,KAAM8pF,IAM3C,OAJA9pF,KAAKkid,YAAYP,cAAcC,GAAY,GAGd,WAAc,OAAOlga,EAAMwga,YAAYC,iBAAiBP,KAGzF2qD,EAAwB75e,UAAUqvb,YAAc,SAAUj4X,EAAQisT,GAC9D/1Y,KAAKwsgB,iBAAkB,EACvBxsgB,KAAKysgB,WAAa12H,EAAWrzM,QAC7B1iM,KAAK0sgB,iBACL,IAAIjlZ,EAAWsuR,aAAsBrrR,aAAqC,IAAxBqrR,EAAWtuR,SAC7D39B,EAAO8vZ,cAAcnyX,IAEzB8kZ,EAAwB75e,UAAUg6e,eAAiB,WAC/C1sgB,KAAK2sgB,cAAgB3sgB,KAAK4sgB,SAASrhgB,MAAM0xV,OACzCj9V,KAAK6sgB,gBAAkB7sgB,KAAK4sgB,SAASrhgB,MAAMu2I,aAC3C9hJ,KAAK8sgB,oBAAsB9sgB,KAAK4sgB,SAASrhgB,MAAMw2I,iBAE/C/hJ,KAAK4sgB,SAASrhgB,MAAM0xV,OAAS,YAE7Bj9V,KAAK4sgB,SAASrhgB,MAAMu2I,aAAe,OACnC9hJ,KAAK4sgB,SAASrhgB,MAAMw2I,iBAAmB,QAE3CwqX,EAAwB75e,UAAUsvb,WAAa,SAAUl4X,EAAQisT,GAC7DjsT,EAAOgwZ,YAAY95e,KAAKg6e,cACxBh6e,KAAK+sgB,cAETR,EAAwB75e,UAAUq6e,WAAa,WAE3C/sgB,KAAK4sgB,SAASrhgB,MAAM0xV,OAASj9V,KAAK2sgB,cAClC3sgB,KAAK4sgB,SAASrhgB,MAAMu2I,aAAe9hJ,KAAK6sgB,gBACxC7sgB,KAAK4sgB,SAASrhgB,MAAMw2I,iBAAmB/hJ,KAAK8sgB,qBAEhDP,EAAwB75e,UAAUuvb,WAAa,SAAUn4X,EAAQisT,GAC7D/1Y,KAAKg6e,aAAejkG,EAAWrzM,QAAU1iM,KAAKysgB,WAC9C3ib,EAAO+vZ,WAAW75e,KAAKg6e,eAE3BsyB,GAAc,CACV3vH,GAAU,uBACX4vH,EAAwB75e,UAAW,0BAAsB,GAC5D45e,GAAc,CACV3vH,GAAU,gBACX4vH,EAAwB75e,UAAW,mBAAe,GACrD45e,GAAc,CACV3vH,GAAU,aACX4vH,EAAwB75e,UAAW,gBAAY,GACxB45e,GAAc,CACpCpxH,GAAK,4BACNqxH,GA5DsC,GAsEzCS,IACI5jY,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFyjY,GAAuD,SAAUpjY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DojY,GAA0B,SAAU10b,GAEpC,SAAS00b,IACL,OAAkB,OAAX10b,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAgP/D,OAlPAgtgB,GAAYE,EAAU10b,GAItB00b,EAASx6e,UAAU4yQ,KAAO,WACtB,IAAI5jP,EAAQ1hD,KACZA,KAAK+4Y,OAAS/4Y,KAAK49Y,cAAct4Y,OAAO,YACxC,IAAIhF,EAAWN,KAAK69d,iBAiBpB,GAhBA79d,KAAKinb,YAAY3mb,GAEjB,CACIN,KAAKmjZ,QACLnjZ,KAAKm3d,YACLn3d,KAAKird,cACP53c,QAAQ,SAAUkiB,GAAW,OAAOA,EAAQ00c,iBAAiBvob,KAC3Dg9V,GAAeM,aAAa3hX,EAAQ6/W,YAAYg4G,kBAChDl1f,KAAKg1f,iBAAiB/qB,iBAAiBjqe,MAE3CA,KAAKoqY,mBAAmB+1C,iBAAiBngb,KAAKsmY,UAC9CtmY,KAAK4sgB,SAAS90f,YAAY9X,KAAKsmY,UAC/BtmY,KAAK2mb,eAAe,WAChBjlY,EAAMkrd,SAASnrf,YAAYigC,EAAM4kV,YAGjCtmY,KAAKgyd,OAAQ,CACb,IAAIm7C,EAA0BntgB,KAAKgyd,OAAOo7C,OAAOptgB,KAAKqtgB,mBAAoB,SAAUlkB,GAAa,OAAOznc,EAAMkwZ,cAAcvsB,eAAe8jE,KAC3Inpf,KAAK2mb,eAAewmF,GAIxBntgB,KAAKstgB,gBACLttgB,KAAK+4Y,OAAOt9T,IAAI,SAChBz7E,KAAKoqY,mBAAmB+1C,iBAAiBngb,KAAKutgB,kBAC9C,IAAIzb,EAAwB9xf,KAAK+xf,sBAAsBC,cAAchyf,KAAK4sgB,SAAU5sgB,KAAKwtgB,kBAAkBjje,KAAKvqC,OAChHA,KAAK2mb,eAAe,WAAc,OAAOmrE,MACzC,IAAI5pE,EAAOlob,KAAKsmY,SAChBtmY,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAO+E,qBAAsB,WAC7E1hT,GAAE+tR,YAAY+nD,EAAM,uBAExBlob,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOgF,kBAAmB,WAC1E3hT,GAAEiuR,eAAe6nD,EAAM,wBAG/BglF,EAASx6e,UAAUmrc,eAAiB,WAChC,IAAI4vC,EAAsB/uH,GAAeM,aAAa3hX,EAAQ6/W,YAAYwwH,eACtEC,EAAwBjvH,GAAeM,aAAa3hX,EAAQ6/W,YAAY0wH,iBAQ5E,MADe,mDANSlvH,GAAeM,aAAa3hX,EAAQ6/W,YAAYsE,mBAEpC,0DAA4D,IAIf,uKAHnEisH,EAAsB,4CAA8C,IAGuL,8CAFzPE,EAAwB,kDAAoD,IAEwO,uEALzSjvH,GAAeM,aAAa3hX,EAAQ6/W,YAAY2wH,sBAIpC,gCAAkC,IAC+U,wBAG5ZX,EAASx6e,UAAU86e,kBAAoB,WAQnCxtgB,KAAK0/Y,aAAajnD,cAPN,CACR/3V,KAAMquZ,GAAOkD,wBACbhoC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChBn3S,YAAa/yE,KAAK4sgB,SAAS75b,YAC3BF,aAAc7yE,KAAK4sgB,SAAS/5b,gBAIpCq6b,EAASx6e,UAAU46e,cAAgB,WAC/B,IAAI35I,EAAW3zX,KAAKoqY,mBAAmBme,cAAgB,SAAW,SAClEn2S,GAAE+tR,YAAYngY,KAAKsmY,SAAU3S,IAEjCu5I,EAASx6e,UAAU+1e,WAAa,WAC5B,OAAOzogB,KAAKsmY,UAEhB4mI,EAASx6e,UAAU6ue,iBAAmB,WAClC,QAAKvhgB,KAAK8tgB,aAGH9tgB,KAAK8tgB,YAAYtkF,eAE5B0jF,EAASx6e,UAAU8ue,kBAAoB,SAAUj9V,GACxCvkK,KAAK8tgB,YAMV9tgB,KAAK8tgB,YAAYjtI,aAAat8N,GALtBA,GACAx5H,QAAQ24B,KAAK,mCAMzBwpc,EAASx6e,UAAU+ue,mBAAqB,SAAUz3f,GACzChK,KAAK8tgB,YAIV9tgB,KAAK8tgB,YAAYrM,mBAAmBz3f,GAHhC+gC,QAAQ24B,KAAK,mCAKrBwpc,EAASx6e,UAAUive,eAAiB,WAC3B3hgB,KAAK8tgB,YAIV9tgB,KAAK8tgB,YAAYxoe,QAHbyF,QAAQ24B,KAAK,+DAKrBwpc,EAASx6e,UAAU2jZ,WAAa,WAC5B,OAAOr2a,KAAK0pX,YAAYnU,SAE5B23J,EAASx6e,UAAU+se,qBAAuB,SAAU9if,GAChD,GAAK3c,KAAK8tgB,YAIV,OAAO9tgB,KAAK8tgB,YAAYrO,qBAAqB9if,GAHzCouB,QAAQ24B,KAAK,+DAKrBwpc,EAASx6e,UAAUgre,eAAiB,WAC5B19f,KAAK8tgB,aACL9tgB,KAAK8tgB,YAAYz3K,WAGzB62K,EAASx6e,UAAUwzZ,WAAa,SAAUjza,GACjCjT,KAAK8tgB,cAGV9tgB,KAAKutgB,iBAAiB9rf,YAAYzhB,KAAK8tgB,YAAYxnI,UACnDtmY,KAAK0pX,YAAYnU,QAAUu8D,GAAiB33Y,MAAMlnB,GAClDjT,KAAK8tgB,YAAY9wY,QACjBh9H,KAAKutgB,iBAAiBz1f,YAAY9X,KAAK8tgB,YAAYxnI,YAEvD4mI,EAASx6e,UAAUkve,mBAAqB,WACpC,OAAK5hgB,KAAK8tgB,YAGH9tgB,KAAK8tgB,YAAYC,aAFb,MAIfb,EAASx6e,UAAUgve,cAAgB,SAAU/kf,GACpC3c,KAAK8tgB,YAIV9tgB,KAAK8tgB,YAAYpM,cAAc/kf,GAH3BouB,QAAQ24B,KAAK,+DAKrBwpc,EAASx6e,UAAUmve,mBAAqB,WACpC,OAAO7hgB,KAAK8tgB,YAAYjM,sBAE5BqL,EAASx6e,UAAUxR,QAAU,WACzBlhB,KAAK+4Y,OAAOt9T,IAAI,oBAChBjD,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAGlCktgB,EAASx6e,UAAUyte,kBAAoB,SAAUnjd,EAAYhzC,GAEzD,QADiB,IAAbA,IAAuBA,EAAW,MAClChK,KAAKgugB,mBACL,MAAM,IAAI35e,MAAM,0GAOpB,IAJA,IAAI4xd,EAAWjmf,KAAKwub,SAASgmE,cACzByZ,EAA8C,mBAAfjxd,EAC/Bkxd,GAAiB,EAEZrmgB,EAAI,EAAGA,EAAIo+e,EAAUp+e,IAAK,CAC/B,IAAI67I,EAAO1jJ,KAAKwub,SAAS4wB,OAAOv3c,GAChC,GAAIomgB,GACA,GAAIjxd,EAAW0mG,GAAO,CAClBwqX,EAAgBrmgB,EAChB,YAKJ,GAAIm1C,IAAe0mG,GAAQ1mG,IAAe0mG,EAAK5zI,KAAM,CACjDo+f,EAAgBrmgB,EAChB,OAIRqmgB,GAAiB,GACjBlugB,KAAK8nd,UAAUorB,mBAAmBg7B,EAAelkgB,IAGzDijgB,GAAc,CACVtwH,GAAU,gBACXuwH,EAASx6e,UAAW,mBAAe,GACtCu6e,GAAc,CACVtwH,GAAU,uBACXuwH,EAASx6e,UAAW,0BAAsB,GAC7Cu6e,GAAc,CACVtwH,GAAU,aACXuwH,EAASx6e,UAAW,gBAAY,GACnCu6e,GAAc,CACVtwH,GAAU,0BACXuwH,EAASx6e,UAAW,6BAAyB,GAChDu6e,GAAc,CACVtwH,GAAU,qBACXuwH,EAASx6e,UAAW,wBAAoB,GAC3Cu6e,GAAc,CACVtwH,GAAU,gBACXuwH,EAASx6e,UAAW,mBAAe,GACtCu6e,GAAc,CACVtwH,GAAU,kBACXuwH,EAASx6e,UAAW,qBAAiB,GACxCu6e,GAAc,CACVtwH,GAAU,iBACXuwH,EAASx6e,UAAW,oBAAgB,GACvCu6e,GAAc,CACVtwH,GAAU,aACXuwH,EAASx6e,UAAW,gBAAY,GACnCu6e,GAAc,CACVtwH,GAAU,WACXuwH,EAASx6e,UAAW,cAAU,GACjCu6e,GAAc,CACVtwH,GAAU,uBACXuwH,EAASx6e,UAAW,0BAAsB,GAC7Cu6e,GAAc,CACVtwH,GAAU,iBACXuwH,EAASx6e,UAAW,oBAAgB,GACvCu6e,GAAc,CACVtwH,GAAU,oBACXuwH,EAASx6e,UAAW,uBAAmB,GAC1Cu6e,GAAc,CACVtwH,GAAU,kBACXuwH,EAASx6e,UAAW,qBAAiB,GACxCu6e,GAAc,CACVtwH,GAAU,cACXuwH,EAASx6e,UAAW,iBAAa,GACpCu6e,GAAc,CACVtwH,GAAU,YACXuwH,EAASx6e,UAAW,eAAW,GAClCu6e,GAAc,CACVtwH,GAAU,gBACXuwH,EAASx6e,UAAW,mBAAe,GACtCu6e,GAAc,CACVnwH,GAAS,qBACVowH,EAASx6e,UAAW,wBAAoB,GAC3Cu6e,GAAc,CACV/iF,GAAY,cACbgjF,EAASx6e,UAAW,iBAAa,GACpCu6e,GAAc,CACV/iF,GAAY,YACbgjF,EAASx6e,UAAW,mBAAe,GACtCu6e,GAAc,CACV/iF,GAAY,oBACbgjF,EAASx6e,UAAW,wBAAoB,GAC3Cu6e,GAAc,CACV3wH,IACD4wH,EAASx6e,UAAW,OAAQ,MACxBw6e,EAnPmB,CAoP5B96e,IAQE+7e,GAAuD,SAAUtkY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DskY,GAAqC,WACrC,SAASA,KA+ET,OA7EAA,EAAoB17e,UAAU2we,eAAiB,WACvCrjgB,KAAKutb,WACLvtb,KAAKutb,aAGb6gF,EAAoB17e,UAAUywe,wBAA0B,SAAU39f,EAAQuwY,GACtE,IAAIr0V,EAAQ1hD,KACZA,KAAKqugB,UAAU7ogB,EAAQ,SAAUq1b,GAC7Bn5Y,EAAMupa,aAAaG,6BAA6B,CAC5C5ld,OAAQA,EACR9E,KAAM,aACNq1Y,WAAYA,EACZs1E,OAAQxwB,OAIpBuzE,EAAoB17e,UAAUipa,yBAA2B,SAAUn2b,EAAQ0uD,GACvE,IAAIxS,EAAQ1hD,KACZA,KAAKqugB,UAAU7ogB,EAAQ,SAAUq1b,GAC7Bn5Y,EAAMupa,aAAa8K,4BAA4B,CAC3Cr1d,KAAM,aACNwzD,YAAaA,EACbm3Z,OAAQxwB,EACRi7B,kBAAkB,EAClBtwd,OAAQA,OAIpB4ogB,EAAoB17e,UAAU27e,UAAY,SAAU7ogB,EAAQ8ogB,GACxD,IAKI/gF,EALA7rY,EAAQ1hD,KACRoof,EAAgBpof,KAAK4xc,cAAc22C,yBAAyB/if,EAAQ,eACpEq1b,EAAQlwZ,SAAS9yB,cAAc,OACnCu6F,GAAE+tR,YAAY06D,EAAO,WACrButD,EAAcqC,WAAWpse,KAAK,SAAUgoX,GAAO,OAAOw0D,EAAM/ib,YAAYuuX,KAExE,IAAIkoI,EAAqB,SAAUjmf,GAEP,eAApBA,EAAMthB,WACNumb,KAGRvtb,KAAK0/Y,aAAap0X,iBAAiB,aAAcijf,GAOjDhhF,EAAYvtb,KAAKird,aAAa4+C,gBAAgBhvE,GAAO,EANhC,WACjBn5Y,EAAMg+V,aAAa/zX,oBAAoB,aAAc4if,GACrD/ogB,EAAOg+Y,gBAAe,EAAO,iBAKjC8qH,EAAiBzzE,GACjButD,EAAcE,cAAcjqe,KAAK,SAAUlJ,GACnCA,EAAOi2a,kBAIPj2a,EAAOi2a,iBAHM,CACTmC,UAAWA,MAKvBvtb,KAAKutb,UAAYA,EACjB/nb,EAAOg+Y,gBAAe,EAAM,gBAEhC4qH,EAAoB17e,UAAUkld,cAAgB,SAAUpye,GAEpD,OAAOA,EAAO27Y,mBAElBgtH,GAAc,CACVxxH,GAAU,iBACXyxH,EAAoB17e,UAAW,oBAAgB,GAClDy7e,GAAc,CACVxxH,GAAU,kBACXyxH,EAAoB17e,UAAW,qBAAiB,GACnDy7e,GAAc,CACVxxH,GAAU,iBACXyxH,EAAoB17e,UAAW,oBAAgB,GAC5By7e,GAAc,CAChCjzH,GAAK,gBACNkzH,GA/EkC,GAyFrCI,GAAuD,SAAU3kY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAI5D2kY,GAA6B,WAC7B,SAASA,IACLzugB,KAAK0ugB,iBAAmB,GACxB1ugB,KAAK2ugB,YAAc,GAyPvB,OAvPAF,EAAY/7e,UAAU4yQ,KAAO,WACzBtlS,KAAK+4Y,OAAS/4Y,KAAK49Y,cAAct4Y,OAAO,gBAE5CmpgB,EAAY/7e,UAAUxR,QAAU,WAC5BlhB,KAAK2ugB,YAAYt7f,QAAQrT,KAAKorC,eAAeb,KAAKvqC,OAClDA,KAAK2ugB,YAAYxqgB,OAAS,GAE9BsqgB,EAAY/7e,UAAU0Y,eAAiB,SAAUwje,GAC7C,IAAIvjgB,EAAUujgB,EAAsBhtD,WAAWx+E,SAE/C/3X,EAAQsgB,oBAAoB,YADJijf,EAAsBC,mBAG1CD,EAAsBE,cAEtBzjgB,EAAQsgB,oBAAoB,aADHijf,EAAsBG,mBACe,CAAEvqX,SAAS,KAGjFiqX,EAAY/7e,UAAUyvb,iBAAmB,SAAUr4X,GAC/C,IAAI8kb,EAAwBx8Z,GAAE/sG,KAAKrF,KAAK2ugB,YAAa,SAAUr9f,GAAQ,OAAOA,EAAKswc,aAAe93X,IAC7F8kb,IAGL5ugB,KAAKorC,eAAewje,GACpBx8Z,GAAEq0R,gBAAgBzmY,KAAK2ugB,YAAaC,KAExCH,EAAY/7e,UAAUs8e,kBAAoB,SAAUC,GAChD,IACIC,EADYlvgB,KAAKoqY,mBAAmBhwB,cAClBhvW,cAAc,QAChCgnG,GAAE8rR,OAAOgxI,IAGT98Z,GAAEmuR,oBAAoB2uI,EAAO,kBAAmBD,IAGxDR,EAAY/7e,UAAUivb,cAAgB,SAAU73X,EAAQqlb,QAC/B,IAAjBA,IAA2BA,GAAe,GAC9C,IAAIC,EAAgBpvgB,KAAK8pd,YAAYv/a,KAAKvqC,KAAM8pF,GAChDA,EAAOs5S,SAAS93W,iBAAiB,YAAa8jf,GAC9C,IAAIp0E,EAAgB,KAChBr8E,EAAgB3+W,KAAKoqY,mBAAmBksC,kBACxC64F,IAAiBxwJ,IACjBq8E,EAAgBh7b,KAAK84b,aAAavuZ,KAAKvqC,KAAM8pF,GAC7CA,EAAOs5S,SAAS93W,iBAAiB,aAAc0va,EAAe,CAAEx2S,SAAS,KAE7ExkJ,KAAK2ugB,YAAY/qgB,KAAK,CAClBg+c,WAAY93X,EACZ+kb,kBAAmBO,EACnBL,mBAAoB/zE,EACpB8zE,aAAcK,KAItBV,EAAY/7e,UAAUoma,aAAe,SAAUhvW,EAAQuvW,GACnD,IAAI33Y,EAAQ1hD,KACZA,KAAKqvgB,kBAAoBvlb,EACzB9pF,KAAKigc,UAAW,EAChB,IAAIpvS,EAAQwoS,EAAWvqS,QAAQ,GAC/B9uJ,KAAKsvgB,cAAgBz+W,EACrB7wJ,KAAKg+V,WAAantM,EACdwoS,EAAWk2E,YACXl2E,EAAWnsa,iBAEf,IACIsif,EAAgB,SAAUv7e,GAAK,OAAOytB,EAAM+td,UAAUx7e,EAAG61D,EAAOs5S,WAChE52W,EAASs9D,EAAOs5S,SAOpBpjY,KAAK0vgB,mBANQ,CACT,CAAEljf,OAAQA,EAAQ9rB,KAAM,YAAaggC,SAJpB,SAAUzM,GAAK,OAAOytB,EAAMs3Y,YAAY/ka,EAAG61D,EAAOs5S,WAIJp7W,QAAS,CAAEw8H,SAAS,IACnF,CAAEh4H,OAAQA,EAAQ9rB,KAAM,WAAYggC,SAAU8ue,EAAexnf,QAAS,CAAEw8H,SAAS,IACjF,CAAEh4H,OAAQA,EAAQ9rB,KAAM,cAAeggC,SAAU8ue,EAAexnf,QAAS,CAAEw8H,SAAS,MAKzD,IAA3B16D,EAAOg4X,iBACP9hd,KAAK2vgB,aAAa9+W,EAAO7wJ,KAAKg+V,WAAYl0Q,EAAOs5S,WAIzDqrI,EAAY/7e,UAAUo3b,YAAc,SAAUhgY,EAAQisT,GAClD,IAAIr0V,EAAQ1hD,KACRi0B,EAAI8hX,EACR,KAAIjsT,EAAO8lb,gBAAkB9lb,EAAO8lb,eAAe75H,IAM/C9hX,EAAE47e,iCAGN57e,EAAE47e,gCAAiC,EAET,IAAtB95H,EAAWx2T,SAAf,CAGAv/E,KAAKqvgB,kBAAoBvlb,EACzB9pF,KAAKigc,UAAW,EAChBjgc,KAAK8vgB,gBAAkB/5H,EACvB,IAAIwzH,EAAYvpgB,KAAKoqY,mBAAmBhwB,cACxCp6W,KAAKgvgB,mBAAkB,GAWvBhvgB,KAAK0vgB,mBANQ,CACT,CAAEljf,OAFO+8e,EAES7ogB,KAAM,YAAaggC,SALpB,SAAUzM,EAAGwe,GAAM,OAAOiP,EAAMmoa,YAAY51b,EAAG61D,EAAOs5S,YAMvE,CAAE52W,OAHO+8e,EAGS7ogB,KAAM,UAAWggC,SALpB,SAAUzM,EAAGwe,GAAM,OAAOiP,EAAMqud,UAAU97e,EAAG61D,EAAOs5S,YAMnE,CAAE52W,OAJO+8e,EAIS7ogB,KAAM,cAAeggC,SALxB,SAAUzM,GAAK,OAAOA,EAAE/G,qBAUZ,IAA3B48D,EAAOg4X,iBACP9hd,KAAK6pd,YAAY9zE,EAAYjsT,EAAOs5S,YAG5CqrI,EAAY/7e,UAAUg9e,mBAAqB,SAAU78c,GACjDA,EAAOx/C,QAAQ,SAAU28f,GACRA,EAAaxjf,OACnBlB,iBADkC0kf,EAAatvgB,KAAiBsvgB,EAAatve,SAAoBsve,EAAahof,WAGzHhoB,KAAK0ugB,iBAAiB9qgB,KAAK,WACvBivD,EAAOx/C,QAAQ,SAAU28f,GACRA,EAAaxjf,OACnBb,oBADkCqkf,EAAatvgB,KAAiBsvgB,EAAatve,SAAoBsve,EAAahof,cAOjIymf,EAAY/7e,UAAUu9e,sBAAwB,SAAUD,EAAcE,GAElE,IAAIpuD,EAAkB9hd,KAAKqvgB,kBAAkBvtD,gBACzCquD,EAAoB/9Z,GAAE8rR,OAAO4jF,GAAmBA,EAAkB,EACtE,OAAO1vW,GAAE4jS,cAAcg6H,EAAcE,EAAYC,IAErD1B,EAAY/7e,UAAU09e,oBAAsB,SAAUh3E,GAClD,IAAK,IAAIvxb,EAAI,EAAGA,EAAIuxb,EAAUj1b,OAAQ0D,IAClC,GAAIuxb,EAAUvxb,GAAG2rB,aAAexzB,KAAKg+V,WAAWxqU,WAC5C,OAAO4la,EAAUvxb,GAGzB,OAAO,MAEX4mgB,EAAY/7e,UAAUi9e,aAAe,SAAUK,EAAcE,EAAYz9d,GACrE,IAAKzyC,KAAKigc,SAAU,CAEhB,IAAKjgc,KAAKigc,UAAYjgc,KAAKiwgB,sBAAsBD,EAAcE,GAC3D,OAEJlwgB,KAAKigc,UAAW,EAOhBjgc,KAAK0/Y,aAAajnD,cANJ,CACV/3V,KAAMquZ,GAAOqD,mBACbnoC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB19V,OAAQimB,IAGZzyC,KAAKqvgB,kBAAkBttD,YAAYmuD,GAEvClwgB,KAAKqvgB,kBAAkBptD,WAAW+tD,IAEtCvB,EAAY/7e,UAAUsma,YAAc,SAAUK,EAAY5mZ,GACtD,IAAIo+G,EAAQ7wJ,KAAKowgB,oBAAoB/2E,EAAWvqS,SAC3C+B,GAQL7wJ,KAAK2vgB,aAAa9+W,EAAO7wJ,KAAKg+V,WAAYvrT,IAI9Cg8d,EAAY/7e,UAAUm3b,YAAc,SAAU9zE,EAAYtjW,GACtDzyC,KAAK2vgB,aAAa55H,EAAY/1Y,KAAK8vgB,gBAAiBr9d,IAExDg8d,EAAY/7e,UAAU+8e,UAAY,SAAUp2E,EAAY5mZ,GACpD,IAAIo+G,EAAQ7wJ,KAAKowgB,oBAAoB/2E,EAAWtqS,gBAM3C8B,IACDA,EAAQ7wJ,KAAKsvgB,eAMjBtvgB,KAAKqwgB,WAAWx/W,EAAOp+G,IAO3Bg8d,EAAY/7e,UAAUq9e,UAAY,SAAUh6H,EAAYtjW,GACpDzyC,KAAKqwgB,WAAWt6H,EAAYtjW,IAEhCg8d,EAAY/7e,UAAU29e,WAAa,SAAUC,EAAc79d,GACnDzyC,KAAKigc,WACLjgc,KAAKigc,UAAW,EAChBjgc,KAAKqvgB,kBAAkBrtD,WAAWsuD,GAOlCtwgB,KAAK0/Y,aAAajnD,cANJ,CACV/3V,KAAMquZ,GAAOsD,mBACbpoC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB19V,OAAQimB,KAIhBzyC,KAAKgvgB,mBAAkB,GACvBhvgB,KAAK8vgB,gBAAkB,KACvB9vgB,KAAKg+V,WAAa,KAClBh+V,KAAKsvgB,cAAgB,KACrBtvgB,KAAKqvgB,kBAAoB,KACzBrvgB,KAAK0ugB,iBAAiBr7f,QAAQ,SAAU4jC,GAAQ,OAAOA,MACvDj3C,KAAK0ugB,iBAAiBvqgB,OAAS,GAEnCqqgB,GAAc,CACV7xH,GAAU,kBACX8xH,EAAY/7e,UAAW,qBAAiB,GAC3C87e,GAAc,CACV7xH,GAAU,iBACX8xH,EAAY/7e,UAAW,oBAAgB,GAC1C87e,GAAc,CACV7xH,GAAU,uBACX8xH,EAAY/7e,UAAW,0BAAsB,GAChD87e,GAAc,CACV7xH,GAAU,cACX8xH,EAAY/7e,UAAW,iBAAa,GACvC87e,GAAc,CACV7xH,GAAU,YACX8xH,EAAY/7e,UAAW,eAAW,GACrC87e,GAAc,CACVlyH,IACDmyH,EAAY/7e,UAAW,OAAQ,MAClC87e,GAAc,CACVhyH,IACDiyH,EAAY/7e,UAAW,UAAW,MACvB87e,GAAc,CACxBtzH,GAAK,gBACNuzH,GA3P0B,GAqQ7B8B,GAAuD,SAAU1mY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D0mY,GAAgC,WAChC,SAASA,IACL,IAAI9ud,EAAQ1hD,KAEZA,KAAKutf,aAAe,WAChB,OAAO7rc,EAAM26Y,+BAA+B5yb,IAAI,SAAUjE,GAAU,MAAQ,CACxEuoW,MAAOvoW,EAAOqgZ,WACdhqY,KAAMrW,EAAO69Y,cA4IzB,IAAIotH,EAoBJ,OA5JAA,EAAmBD,EACnBA,EAAe99e,UAAU4oa,aAAe,SAAU91b,EAAQoze,EAAWryd,QAClD,IAAXA,IAAqBA,EAAS,OAClC,IAAImqf,EAAgB1wgB,KAAKmkL,qBAAqB3+K,GAC9CxF,KAAK64e,iBAAiBrze,EAAQkrgB,EAAe93B,EAAWryd,IAE5Diqf,EAAe99e,UAAUmmd,iBAAmB,SAAUrze,EAAQqW,EAAM+8d,EAAWryd,GAS3E,QARe,IAAXA,IAAqBA,EAAS,OAE9B1K,IAASy0X,GAAUqD,UAAY93X,IAASy0X,GAAUsD,YAClD/3X,EAAO,MAGXrW,EAAO89Y,QAAQznY,EAAM0K,GAEjB/gB,EAAO69Y,UAAW,CAClB,IAAI50C,EAAW9/V,QAAO,IAAI+rC,MAAO5B,WACjCtzC,EAAOw+Y,YAAYv1C,QAGnBjpW,EAAOw+Y,YAAY,MAEF40F,IAAc54e,KAAKoqY,mBAAmB+sC,uBAGvDn3a,KAAK2wgB,uBAAuBnrgB,EAAQ+gB,GAExCvmB,KAAK4wgB,6BAITJ,EAAe99e,UAAUupa,cAAgB,WACrCj8b,KAAK4wgB,6BAETJ,EAAe99e,UAAUk+e,0BAA4B,WAMjD5wgB,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOxL,mBACbt5B,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBsmJ,EAAe99e,UAAUi+e,uBAAyB,SAAUE,EAActqf,GACtEvmB,KAAKujb,iBAAiBzgB,uCAAuCzvZ,QAAQ,SAAUy9f,GAErEA,IAAkBD,GAGpBC,EAAcxtH,aAAQ7+Y,EAAW8hB,MAI7Ciqf,EAAe99e,UAAUyxJ,qBAAuB,SAAU3+K,GACtD,IAAI0mW,EAUJ,GARIA,EADA1mW,EAAOuqY,YAAY7jC,aACJ1mW,EAAOuqY,YAAY7jC,aAE7BlsW,KAAKoqY,mBAAmB8yC,kBACdl9a,KAAKoqY,mBAAmB8yC,kBAGxBuzF,EAAiBM,uBAE/BxmgB,MAAMyL,QAAQk2V,IAAiBA,EAAa/nW,QAAU,EAEvD,OADA4mC,QAAQ24B,KAAK,oFAAsFwoS,GAC5F,KAEX,IAGItvU,EAHAxrB,EAAe86V,EAAajjW,QAAQzD,EAAO69Y,WAW/C,OAAIotH,EAAiBM,sBAAsB9ngB,QANvC2zB,EAJaxrB,EAAe,GACVA,GAAgB86V,EAAa/nW,OAAS,EAG/C+nW,EAAa,GAGbA,EAAa96V,EAAe,IAGoB,GACzD25B,QAAQ24B,KAAK,8BAAgC9mC,GACtC,MAEJA,GAEX4ze,EAAe99e,UAAUmue,aAAe,SAAUvT,EAAW/me,GACzD,IAAIm7B,EAAQ1hD,UACG,IAAXumB,IAAqBA,EAAS,OAElC,IAAIyqf,EAAoB1jB,GAAaA,EAAUnpf,OAAS,EAC1BnE,KAAKujb,iBAAiBzgB,uCAC5BzvZ,QAAQ,SAAU7N,GACtC,IAAIyrgB,EAAa,KACbxiK,GAAY,EAChB,GAAIuiK,GAAqBxrgB,EAAOuqY,YAAY7rN,SACxC,IAAK,IAAI3vK,EAAI,EAAGA,EAAI+4e,EAAUnpf,OAAQoQ,IAAK,CACvC,IAAI28f,EAAiB5jB,EAAU/4e,GACK,iBAAzB28f,EAAenjK,OACU,iBAAtBvoW,EAAOqgZ,YACdnkW,EAAMyvd,cAAcD,EAAgB1rgB,KACvCyrgB,EAAaC,EAAer1f,KAC5B4yV,EAAWl6V,GAInB08f,GACAzrgB,EAAO89Y,QAAQ2tH,EAAY1qf,GAC3B/gB,EAAOw+Y,YAAYv1C,KAGnBjpW,EAAO89Y,QAAQ,KAAM/8X,GACrB/gB,EAAOw+Y,YAAY,SAG3BhkZ,KAAK4wgB,6BAETJ,EAAe99e,UAAUy+e,cAAgB,SAAUD,EAAgB1rgB,GAC/D,OAAO0rgB,EAAenjK,QAAUvoW,EAAOqgZ,YAE3C2qH,EAAe99e,UAAU2pa,6BAA+B,WAEpD,IACI+0E,EAD0BpxgB,KAAKujb,iBAAiBzgB,uCACH3tZ,OAAO,SAAU3P,GAAU,QAASA,EAAO69Y,YAG5F,OADA+tH,EAAmBv1f,KAAK,SAAUE,EAAGC,GAAK,OAAOD,EAAE0yV,SAAWzyV,EAAEyyV,WACzD2iK,GAGXZ,EAAe99e,UAAU2+e,wBAA0B,WAC/C,OAAOrxgB,KAAKq8b,+BAA+B5yb,IAAI,SAAUjE,GAErD,MAAO,CACH8rgB,SAFc9rgB,EAAO69Y,YAAc/S,GAAUqD,SAErB,GAAK,EAC7BnuY,OAAQA,MAKpBgrgB,EAAeO,sBAAwB,CAACzgI,GAAUqD,SAAUrD,GAAUsD,UAAW,MACjF28H,GAAc,CACV5zH,GAAU,uBACX6zH,EAAe99e,UAAW,0BAAsB,GACnD69e,GAAc,CACV5zH,GAAU,qBACX6zH,EAAe99e,UAAW,wBAAoB,GACjD69e,GAAc,CACV5zH,GAAU,iBACX6zH,EAAe99e,UAAW,oBAAgB,GAC7C69e,GAAc,CACV5zH,GAAU,cACX6zH,EAAe99e,UAAW,iBAAa,GAC1C69e,GAAc,CACV5zH,GAAU,YACX6zH,EAAe99e,UAAW,eAAW,GACvB+9e,EAAmBF,GAAc,CAC9Cr1H,GAAK,mBACNs1H,GAtK6B,GAgLhCe,GAAuD,SAAU1nY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D0nY,GAAiC,WACjC,SAASA,IACLxxgB,KAAKyxgB,qBAAsB,EAC3BzxgB,KAAK6yD,OAAS,GA4JlB,OA1JA2+c,EAAgB9+e,UAAU4yQ,KAAO,WAC7B,IAAIikO,EAAYvpgB,KAAKoqY,mBAAmBhwB,cACpCs3J,EAA2B1xgB,KAAK8uf,iBAAiBvkd,KAAKvqC,MAC1DA,KAAK6yD,OAAS,CACV7yD,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOG,gCAAiCwiH,GAC3E1xgB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOC,gCAAiC0iH,GAC3E1xgB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOY,0BAA2B+hH,GACrE1xgB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOI,+BAAgCuiH,IAE9E,IAAIC,EAA+B3xgB,KAAK4xgB,qBAAqBrne,KAAKvqC,MAClEupgB,EAAUj+e,iBAAiB,UAAWqmf,GACtC3xgB,KAAK6yD,OAAOjvD,KAAK,WAAc,OAAO2lgB,EAAU59e,oBAAoB,UAAWgmf,KAC/E,IAAIE,EAA4B7xgB,KAAK8xgB,kBAAkBvne,KAAKvqC,MAC5DupgB,EAAUj+e,iBAAiB,YAAaumf,GACxC7xgB,KAAK6yD,OAAOjvD,KAAK,WAAc,OAAO2lgB,EAAU59e,oBAAoB,YAAakmf,MAErFL,EAAgB9+e,UAAUxR,QAAU,WAC5BlhB,KAAK6yD,OAAO1uD,SACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC7Cj3C,KAAK6yD,OAAS,KAGtB2+c,EAAgB9+e,UAAUq/e,gBAAkB,WACxC,OAAO/xgB,KAAKyxgB,qBAEhBD,EAAgB9+e,UAAUo8d,iBAAmB,WACzC9uf,KAAKgygB,oBAAsB,KAC3BhygB,KAAKu5d,eAAc,IAEvBi4C,EAAgB9+e,UAAUihd,eAAiB,WACvC,OAAO3ze,KAAKgygB,qBAEhBR,EAAgB9+e,UAAUo/e,kBAAoB,WAC1C9xgB,KAAKyxgB,qBAAsB,EAC3BzxgB,KAAK0/Y,aAAajnD,cAAc,CAAE/3V,KAAMquZ,GAAOgF,qBAEnDy9G,EAAgB9+e,UAAUk/e,qBAAuB,WAC7C5xgB,KAAKyxgB,qBAAsB,EAC3BzxgB,KAAK0/Y,aAAajnD,cAAc,CAAE/3V,KAAMquZ,GAAO+E,wBASnD09G,EAAgB9+e,UAAU06c,8BAAgC,WACtD,OAAIpte,KAAKoqY,mBAAmB4rC,8BACjB,KAENh2a,KAAKgygB,qBAKehygB,KAAKiygB,yBAAyBtne,SAASlgB,eAIzDzqB,KAAKgygB,oBARD,MAUfR,EAAgB9+e,UAAUu/e,yBAA2B,SAAUC,GAE3D,IADA,IAAIC,EAAWD,EACRC,GAAU,CACb,IAAIrzC,EAAW9+d,KAAKoqY,mBAAmBG,WAAW4nI,EAAU1mD,GAAS2P,wBACrE,GAAI0D,EACA,OAAOA,EAAShU,kBAEpBqnD,EAAWA,EAASzxf,WAExB,OAAO,MAEX8wf,EAAgB9+e,UAAU8jc,eAAiB,SAAUnsd,EAAUkzZ,EAAQ5nJ,EAAU4gN,QACnD,IAAtBA,IAAgCA,GAAoB,GACxD,IAAI/wd,EAAS4sG,GAAE6rR,SAASj+X,KAAKujb,iBAAiB5lB,cAAcJ,IAC5Dv9Z,KAAKgygB,oBAAsB,CAAE3ngB,SAAUA,EAAUi0b,UAAWlsV,GAAE6rR,SAAStoH,GAAWnwQ,OAAQA,GAC1FxF,KAAKu5d,cAAchD,IAEvBi7C,EAAgB9+e,UAAU45b,cAAgB,SAAUC,GAChD,OAAIn6W,GAAEgsR,QAAQp+X,KAAKgygB,sBAGZhygB,KAAKgygB,oBAAoBxsgB,SAAW+md,EAAa/md,QAAUxF,KAAKq9d,aAAa9Q,EAAalid,SAAUkid,EAAajuB,YAE5HkzE,EAAgB9+e,UAAUw/c,iBAAmB,SAAUx9F,GACnD,OAAO10Y,KAAKq9d,aAAa3oF,EAAQrqY,SAAUqqY,EAAQ4pD,YAEvDkzE,EAAgB9+e,UAAU0/e,iBAAmB,WACzC,QAASpygB,KAAKgygB,qBAElBR,EAAgB9+e,UAAU2qc,aAAe,SAAUhzd,EAAUsrQ,GACzD,GAAIvjK,GAAEgsR,QAAQp+X,KAAKgygB,qBACf,OAAO,EAEX,IAAIK,EAAiBjga,GAAE6rR,SAAStoH,GAChC,OAAO31Q,KAAKgygB,oBAAoB3ngB,WAAaA,GAAYrK,KAAKgygB,oBAAoB1zE,YAAc+zE,GAEpGb,EAAgB9+e,UAAU4/e,sBAAwB,SAAU/wf,EAAUgxf,GAClE,IACIC,EAAgB,yDAChBD,IACAC,GAAiB,KAAOD,GAE5B,IAKwBv2f,EALpBm4G,EAAQ5pH,MAAMjG,KAAKid,EAASwqF,iBALV,gDAMlB0ma,EAAelogB,MAAMjG,KAAKid,EAASwqF,iBAAiByma,IACxD,OAAKC,EAAatugB,QAGM6X,EACLy2f,EAAPt+Y,EAD0Bh/G,OAAO,SAAU9J,GAAW,OAA+B,IAAxB2Q,EAAE/S,QAAQoC,MAFxE8oH,GAKfq9Y,EAAgB9+e,UAAU6mc,cAAgB,SAAUhD,GAChD,IAAIjuc,EAAQ,CACR5nB,KAAMquZ,GAAOqC,mBACbmlE,kBAAmBA,EACnBlsd,SAAU,KACV7E,OAAQ,KACRmwQ,SAAU,KACVs0G,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChBo0E,UAAW,MAEXt+b,KAAKgygB,sBACL1pf,EAAMje,SAAWrK,KAAKgygB,oBAAoB3ngB,SAC1Cie,EAAM9iB,OAASxF,KAAKgygB,oBAAoBxsgB,OACxC8iB,EAAMg2a,UAAYt+b,KAAKgygB,oBAAoB1zE,WAE/Ct+b,KAAK0/Y,aAAajnD,cAAcnwU,IAEpCipf,GAAc,CACV50H,GAAU,iBACX60H,EAAgB9+e,UAAW,oBAAgB,GAC9C6+e,GAAc,CACV50H,GAAU,uBACX60H,EAAgB9+e,UAAW,0BAAsB,GACpD6+e,GAAc,CACV50H,GAAU,qBACX60H,EAAgB9+e,UAAW,wBAAoB,GAClD6+e,GAAc,CACV50H,GAAU,cACX60H,EAAgB9+e,UAAW,iBAAa,GAC3C6+e,GAAc,CACV50H,GAAU,YACX60H,EAAgB9+e,UAAW,eAAW,GACzC6+e,GAAc,CACVj1H,IACDk1H,EAAgB9+e,UAAW,OAAQ,MACtC6+e,GAAc,CACV/0H,IACDg1H,EAAgB9+e,UAAW,UAAW,MACvB6+e,GAAc,CAC5Br2H,GAAK,oBACNs2H,GA9J8B,GAwKjCkB,GAAuD,SAAU7oY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D6oY,GAAmC,WACnC,SAASA,IACL3ygB,KAAK4ygB,eAAiBC,EAAoBC,qBAAqBjvgB,OA+CnE,IAAIgvgB,EAeJ,OA5DAA,EAAsBF,EACtBA,EAAkBjgf,UAAU4yQ,KAAO,WAC/BtlS,KAAK+ygB,mCAETJ,EAAkBjgf,UAAU03c,iBAAmB,SAAUtiB,GACrD9nd,KAAK8nd,UAAYA,GAKrB6qD,EAAkBjgf,UAAUqgf,gCAAkC,WAC1D/ygB,KAAK4sgB,SAASiG,EAAoBG,cAAgBhzgB,KAAK4ygB,gBAE3DD,EAAkBjgf,UAAUwhe,wBAA0B,SAAU5re,GAC5D,OAAO8pF,GAAE+3R,oBAAoBnqY,KAAKoqY,mBAAoB9hX,IAK1Dqqf,EAAkBjgf,UAAUghe,oBAAsB,SAAUpre,GAExD,IADA,IAAI6oH,EAAO/+B,GAAEw3R,aAAathX,GACjBzgB,EAAI,EAAGA,EAAIspI,EAAKhtI,OAAQ0D,IAAK,CAClC,IACI0zC,EADU41F,EAAKtpI,GACMgrgB,EAAoBG,cAC7C,GAAI5ga,GAAE8rR,OAAO3iV,GAET,OADwBA,IAAev7C,KAAK4ygB,eAIpD,OAAO,GAEXD,EAAkBjgf,UAAUugf,wBAA0B,SAAU3qf,GAC5D,IAAIw2c,EAAW9+d,KAAKk0f,wBAAwB5re,GAC5C,OAAOw2c,EAAWA,EAAShU,kBAAoB,MAEnD6nD,EAAkBjgf,UAAUq7d,sBAAwB,SAAUzle,GAC1D,IAAI4qf,EAAsBlzgB,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU8C,kBAC3E73W,EAAIjT,EAAMiT,EAAGjW,EAAIgD,EAAMhD,EAC3B,GAAI4tf,EAAqB,CACrB,IAAIC,EAASnzgB,KAAK8nd,UAAUqgB,qBAE5B,MAAO,CAAE5sc,EAAGA,EADCv7B,KAAK8nd,UAAUqoC,qBACLlkf,KAAMqZ,EAAGA,EAAI6tf,EAAOpngB,KAE/C,MAAO,CAAEwvB,EAAGA,EAAGjW,EAAGA,IAGtBqtf,EAAkBG,qBAAuB,IAAIp7H,GAC7Ci7H,EAAkBK,aAAe,qBACjCN,GAAc,CACV/1H,GAAU,uBACXg2H,EAAkBjgf,UAAW,0BAAsB,GACtDggf,GAAc,CACV/1H,GAAU,aACXg2H,EAAkBjgf,UAAW,gBAAY,GAC5Cggf,GAAc,CACVp2H,IACDq2H,EAAkBjgf,UAAW,OAAQ,MACpBmgf,EAAsBH,GAAc,CACpDx3H,GAAK,sBACNy3H,GA/DgC,GAyEnCS,GAAuD,SAAUvpY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DupY,GAAuC,WACvC,SAASA,KAmQT,OAhQAA,EAAsB3gf,UAAUigd,mBAAqB,SAAUh2d,EAAK22f,GAQhE,IALA,IAAI3pI,EAAU2pI,EACVj2M,GAAW,GAIPA,GAAU,CACd,OAAQ1gT,GACJ,KAAK2zX,GAAUsB,OACXjI,EAAU3pY,KAAKuzgB,aAAa5pI,GAC5B,MACJ,KAAK2G,GAAUwB,SACXnI,EAAU3pY,KAAKwzgB,aAAa7pI,GAC5B,MACJ,KAAK2G,GAAUuB,UAEPlI,EADA3pY,KAAKoqY,mBAAmBme,cACdvoZ,KAAKyzgB,cAAc9pI,GAGnB3pY,KAAK0zgB,eAAe/pI,GAElC,MACJ,KAAK2G,GAAUqB,SAEPhI,EADA3pY,KAAKoqY,mBAAmBme,cACdvoZ,KAAK0zgB,eAAe/pI,GAGpB3pY,KAAKyzgB,cAAc9pI,GAEjC,MACJ,QACIA,EAAU,KACV5+V,QAAQ24B,KAAK,uCAAyC/mD,GAI1D0gT,GADAssE,GACW3pY,KAAK2zgB,oBAAoBhqI,GAM5C,OAAOA,GAEX0pI,EAAsB3gf,UAAUihf,oBAAsB,SAAU1gC,GAC5D,IACIv+F,EADAlvY,EAASyte,EAASzte,OAEtB,OAAQyte,EAAS30C,WACb,KAAKhuD,GAAU4C,WACXwB,EAAU10Y,KAAKise,eAAe0I,gBAAgB1B,EAAS5oe,UACvD,MACJ,KAAKimY,GAAU6C,cACXuB,EAAU10Y,KAAKise,eAAe2I,mBAAmB3B,EAAS5oe,UAC1D,MACJ,QACIqqY,EAAU10Y,KAAKwub,SAAS4wB,OAAO6zB,EAAS5oe,UAIhD,OADwB7E,EAAO88Y,oBAAoB5N,IAGvD2+H,EAAsB3gf,UAAU+gf,cAAgB,SAAUG,GACtD,IAAKA,EACD,OAAO,KAEX,IAAIC,EAAY7zgB,KAAKujb,iBAAiBhhB,sBAAsBqxG,EAASpugB,QACrE,OAAKqugB,EAGE,CACHxpgB,SAAUupgB,EAASvpgB,SACnB7E,OAAQqugB,EACRv1E,UAAWs1E,EAASt1E,WALb,MAQf+0E,EAAsB3gf,UAAUghf,eAAiB,SAAUE,GACvD,IAAKA,EACD,OAAO,KAEX,IAAIE,EAAa9zgB,KAAKujb,iBAAiBhsB,qBAAqBq8G,EAASpugB,QAErE,OAAKsugB,EAGE,CACHzpgB,SAAUupgB,EAASvpgB,SACnB7E,OAAQsugB,EACRx1E,UAAWs1E,EAASt1E,WALb,MAQf+0E,EAAsB3gf,UAAUqhf,YAAc,SAAUC,GAEpD,IAAIrqgB,EAAQqqgB,EAAY3pgB,SACpBkkW,EAASylK,EAAY11E,UACzB,GAAIt+b,KAAKi0gB,qBAAqBD,GAC1B,OAAQzlK,GACJ,KAAK+hC,GAAU6C,cAEX,OAAO,KACX,KAAK7C,GAAU4C,WAGX,OAAIlzY,KAAKwub,SAASgiD,iBACP,CAAEnme,SAAU,EAAGi0b,UAAW,MAE5Bt+b,KAAKise,eAAeuE,eAAelgG,GAAU6C,eAC3C,CAAE9oY,SAAU,EAAGi0b,UAAWhuD,GAAU6C,eAExC,KACX,QAEI,OAAInzY,KAAKise,eAAeuE,eAAelgG,GAAU6C,eACtC,CAAE9oY,SAAU,EAAGi0b,UAAWhuD,GAAU6C,eAExC,KAGnB,MAAO,CAAE9oY,SAAUV,EAAQ,EAAG20b,UAAW/vF,IAE7C8kK,EAAsB3gf,UAAU8gf,aAAe,SAAUI,GACrD,IAAKA,EACD,OAAO,KAEX,IAAIM,EAAWl0gB,KAAK+zgB,YAAYH,GAChC,OAAIM,EACO,CACH7pgB,SAAU6pgB,EAAS7pgB,SACnB7E,OAAQougB,EAASpugB,OACjB84b,UAAW41E,EAAS51E,WAGrB,MAEX+0E,EAAsB3gf,UAAUuhf,qBAAuB,SAAUD,GAC7D,IAAIzlK,EAASylK,EAAY11E,UACrB30b,EAAQqqgB,EAAY3pgB,SACxB,OAAIkkW,IAAW+hC,GAAU4C,WACFlzY,KAAKise,eAAeh0D,sBAAsB9za,OAAS,GAC/CwF,EAElB4kW,IAAW+hC,GAAU6C,cACJnzY,KAAKise,eAAe/zD,yBAAyB/za,OAAS,GAClDwF,EAEV3J,KAAKwub,SAASgmE,cAAgB,GAC1B7qf,GAE5B0pgB,EAAsB3gf,UAAUyhf,YAAc,SAAUH,GAEpD,IAAIrqgB,EAAQqqgB,EAAY3pgB,SACpBkkW,EAASylK,EAAY11E,UAEzB,OAAc,IAAV30b,EACI4kW,IAAW+hC,GAAU4C,WACd,KAED3kC,GAQFvuW,KAAKwub,SAASgiD,iBACPxwe,KAAKo0gB,kBARZp0gB,KAAKise,eAAeuE,eAAelgG,GAAU4C,YACtClzY,KAAKq0gB,wBAET,KAaR,CAAEhqgB,SAAUV,EAAQ,EAAG20b,UAAW/vF,IAE7C8kK,EAAsB3gf,UAAU6gf,aAAe,SAAUK,GACrD,IAAKA,EACD,OAAO,KAEX,IAAIU,EAAWt0gB,KAAKm0gB,YAAY,CAAE9pgB,SAAUupgB,EAASvpgB,SAAUi0b,UAAWs1E,EAASt1E,YACnF,OAAIg2E,EACO,CACHjqgB,SAAUiqgB,EAASjqgB,SACnB7E,OAAQougB,EAASpugB,OACjB84b,UAAWg2E,EAASh2E,WAGrB,MAEX+0E,EAAsB3gf,UAAU0hf,gBAAkB,WAE9C,MAAO,CAAE/pgB,SADSrK,KAAKwub,SAASgmE,cAAgB,EAChBl2D,UAAW,OAE/C+0E,EAAsB3gf,UAAU2hf,sBAAwB,WAEpD,MAAO,CAAEhqgB,SADarK,KAAKise,eAAeh0D,sBAAsB9za,OAAS,EACrCm6b,UAAWhuD,GAAU4C,aAE7DmgI,EAAsB3gf,UAAU8hd,kBAAoB,SAAUvB,EAAUS,GACpE,OAAIA,EACO1ze,KAAKu0gB,2BAA2BthC,GAEpCjze,KAAKw0gB,0BAA0BvhC,IAE1CogC,EAAsB3gf,UAAU8hf,0BAA4B,SAAUvhC,GAClE,IAAIt4E,EAAmB36Z,KAAKujb,iBAAiB/pB,yBACzCi7G,EAAcxhC,EAAS5oe,SACvBqqgB,EAAczhC,EAAS30C,UAEvBq2E,EAAY30gB,KAAKujb,iBAAiBhsB,qBAAqB07E,EAASzte,QAEpE,IAAKmvgB,EAAW,CACZA,EAAYh6G,EAAiB,GAC7B,IAAIu5G,EAAWl0gB,KAAK+zgB,YAAY9gC,GAChC,GAAI7gY,GAAEgsR,QAAQ81I,GACV,OAAO,KAEXO,EAAcP,EAAWA,EAAS7pgB,SAAW,KAC7CqqgB,EAAcR,EAAWA,EAAS51E,UAAY,KAElD,MAAO,CAAEj0b,SAAUoqgB,EAAajvgB,OAAQmvgB,EAAWr2E,UAAWo2E,IAElErB,EAAsB3gf,UAAU6hf,2BAA6B,SAAUthC,GACnE,IAAIt4E,EAAmB36Z,KAAKujb,iBAAiB/pB,yBACzCi7G,EAAcxhC,EAAS5oe,SACvBqqgB,EAAczhC,EAAS30C,UAEvBq2E,EAAY30gB,KAAKujb,iBAAiBhhB,sBAAsB0wE,EAASzte,QAErE,IAAKmvgB,EAAW,CACZA,EAAYvia,GAAEj7F,KAAKwjZ,GACnB,IAAI25G,EAAWt0gB,KAAKm0gB,YAAY,CAAE9pgB,SAAU4oe,EAAS5oe,SAAUi0b,UAAW20C,EAAS30C,YACnF,GAAIlsV,GAAEgsR,QAAQk2I,GACV,OAAO,KAEXG,EAAcH,EAAWA,EAASjqgB,SAAW,KAC7CqqgB,EAAcJ,EAAWA,EAASh2E,UAAY,KAElD,MAAO,CAAEj0b,SAAUoqgB,EAAajvgB,OAAQmvgB,EAAWr2E,UAAWo2E,IAElEtB,GAAc,CACVz2H,GAAU,qBACX02H,EAAsB3gf,UAAW,wBAAoB,GACxD0gf,GAAc,CACVz2H,GAAU,aACX02H,EAAsB3gf,UAAW,gBAAY,GAChD0gf,GAAc,CACVz2H,GAAU,mBACX02H,EAAsB3gf,UAAW,sBAAkB,GACtD0gf,GAAc,CACVz2H,GAAU,uBACX02H,EAAsB3gf,UAAW,0BAAsB,GAClC0gf,GAAc,CAClCl4H,GAAK,0BACNm4H,GAnQoC,GA6QvCuB,GAAuD,SAAU/qY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D+qY,GAAqC,WACrC,SAASA,IACL70gB,KAAK80gB,gBAAkB,GA0B3B,IAAIC,EAmBJ,OA3CAA,EAAwBF,EACxBA,EAAoBnif,UAAU4yQ,KAAO,WACjCtlS,KAAK80gB,gBAAgBC,EAAsBC,eAAiBhjE,GAC5Dhyc,KAAK80gB,gBAAgBC,EAAsBE,qBAAuB/jE,GAClElxc,KAAK80gB,gBAAgBC,EAAsBG,OAASroE,IASxDgoE,EAAoBnif,UAAUyif,gBAAkB,SAAUx4f,EAAK0xV,GAC3DruW,KAAK80gB,gBAAgBn4f,GAAO0xV,GAEhCwmK,EAAoBnif,UAAU69b,gBAAkB,SAAU5zc,GACtD,IAAIigB,EAAS58B,KAAK80gB,gBAAgBn4f,GAClC,OAAIy1F,GAAEgsR,QAAQxhW,IACVmO,QAAQ24B,KAAK,gDAAkD/mD,GACxD,MAEJigB,GAGXi4e,EAAoBG,cAAgB,eACpCH,EAAoBI,oBAAsB,oBAC1CJ,EAAoBK,MAAQ,QAC5BN,GAAc,CACVj4H,GAAU,uBACXk4H,EAAoBnif,UAAW,0BAAsB,GACxDkif,GAAc,CACVj4H,GAAU,sBACXk4H,EAAoBnif,UAAW,yBAAqB,GACvDkif,GAAc,CACVj4H,GAAU,iBACXk4H,EAAoBnif,UAAW,oBAAgB,GAClDkif,GAAc,CACVt4H,IACDu4H,EAAoBnif,UAAW,OAAQ,MACpBqif,EAAwBH,GAAc,CACxD15H,GAAK,wBACN25H,GA9CkC,GAwDrCO,GAAuD,SAAUvrY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DurY,GAAuC,WACvC,SAASA,KAqDT,OAnDAA,EAAsB3if,UAAUm5Z,YAAc,SAAUrmb,EAAQk+I,EAAMsuU,EAAQzwd,EAAO+zgB,EAAmBC,QACrE,IAA3BA,IAAqCA,GAAyB,GAClE,IACI99d,EADA7a,EAAS,KAETivU,EAASrmW,EAAOuqY,YAUpB,GATIulI,EAEA79d,EAAY69d,EAEPC,IAEL99d,EAAYisG,GAAQA,EAAK46S,WAAazyF,EAAOwD,wBACzCxD,EAAOwD,wBAA0BxD,EAAOuD,gBAE5C33T,EAAW,CACX,IAAIqyC,EAAS,CACTvoF,MAAOA,EACPmiJ,KAAMA,EACN5zI,KAAM4zI,EAAOA,EAAK5zI,KAAO,KACzB+7V,OAAQA,EACRrmW,OAAQA,EACRykX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,cAOrCv6D,EAAOkoY,OAASA,EAChBp1b,EAAS58B,KAAKgna,kBAAkBlwJ,SAASr/N,EAAWqyC,QAEnD,GAAI+hR,EAAO6B,QACZ,OAAO7B,EAAO6B,QAAQnsW,IAAU,GAMpC,OAHc,MAAVq7B,GAAkBryB,MAAMyL,QAAQzU,KAChCq7B,EAASr7B,EAAMyuC,KAAK,OAEjBpT,GAEXw4e,GAAc,CACVz4H,GAAU,uBACX04H,EAAsB3if,UAAW,0BAAsB,GAC1D0if,GAAc,CACVz4H,GAAU,sBACX04H,EAAsB3if,UAAW,yBAAqB,GACjC0if,GAAc,CAClCl6H,GAAK,0BACNm6H,GArDoC,GA+DvCG,IACIpsY,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFisY,GAA+B,SAAUj9b,GAEzC,SAASi9b,IACL,IAAI/zd,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAGhE,OAFA0hD,EAAM75B,UAAY,kBAClB65B,EAAMm1O,UAAY,QACXn1O,EA6BX,OAlCA8zd,GAAYC,EAAej9b,GAO3Bi9b,EAAc/if,UAAUsN,WAAa,WACjC,OAAOhgC,KAAK6qb,OAAO74U,SAEvByja,EAAc/if,UAAU+wI,OAAS,WAC7B,IAAI7mC,EAAY58H,KAAKsmc,eACrBtmc,KAAKs0I,SAAS1X,IAElB64Y,EAAc/if,UAAUmza,kBAAoB,WACxCrtX,EAAO9lD,UAAUmza,kBAAkB3wa,KAAKl1B,MACxCA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOuD,uBAAwBtyZ,KAAKw/G,SAASj1E,KAAKvqC,QAQ1Gy1gB,EAAc/if,UAAU8sF,SAAW,SAAUl3F,GACrCA,EAAM2G,UACN3G,EAAMnnB,MACNnB,KAAK6qb,OAAO1pb,MACZnB,KAAK6qb,OAAO1pb,OAASmnB,EAAMnnB,MAC3BmnB,EAAMtC,IACNhmB,KAAK6qb,OAAO7ka,KAAOsC,EAAMtC,IACzBhmB,KAAKs0I,UAAS,GAAO,IAGtBmhY,EAnCwB,CAoCjCtvE,IASEuvE,GAA2C,WAC3C,SAASA,KAUT,OAPAA,EAA0Bhjf,UAAUkS,WAAa,SAAUm+B,EAAQqrF,GAC/DjjI,OAAOyZ,WAAWm+B,EAAQqrF,IAG9BsnX,EAA0Bhjf,UAAUk4W,+BAAiC,SAAUv/X,EAAS3K,EAAMggC,EAAU2xU,GACpGhnW,EAAQigB,iBAAiB5qB,EAAMggC,EAAU2xU,IAEtCqjK,EAXoC,GAoB3CC,GAAuD,SAAU9rY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D8rY,GAAsC,WACtC,SAASA,KA0CT,OAxCAA,EAAqBljf,UAAUgke,kBAAoB,SAAU5sa,GAC/B9pF,KAAKw2f,0BAA4B1sa,EAAO0sa,yBAC9Dx2f,KAAKy2f,wBAA0B3sa,EAAO2sa,wBAEtCz2f,KAAKw2f,wBAA0B1sa,EAAO0sa,wBACtCx2f,KAAKy2f,sBAAwB3sa,EAAO2sa,sBAMpCz2f,KAAK0/Y,aAAajnD,cALJ,CACV/3V,KAAMquZ,GAAOmE,gCACbjpC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,cAM5B0rJ,EAAqBljf,UAAU4wW,0BAA4B,WACvD,OAAOtjY,KAAKw2f,yBAGhBof,EAAqBljf,UAAU6wW,wBAA0B,WACrD,OAAOvjY,KAAKy2f,uBAEhBkf,GAAc,CACVh5H,GAAU,iBACXi5H,EAAqBljf,UAAW,oBAAgB,GACnDijf,GAAc,CACVh5H,GAAU,qBACXi5H,EAAqBljf,UAAW,wBAAoB,GACvDijf,GAAc,CACVh5H,GAAU,cACXi5H,EAAqBljf,UAAW,iBAAa,GAChDijf,GAAc,CACVh5H,GAAU,YACXi5H,EAAqBljf,UAAW,eAAW,GAC9Cijf,GAAc,CACVh5H,GAAU,uBACXi5H,EAAqBljf,UAAW,0BAAsB,GAClCijf,GAAc,CACjCz6H,GAAK,yBACN06H,GA1CmC,GAoDtCC,GAAuD,SAAUhsY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DgsY,GAAgC,WAChC,SAASA,KAuDT,OArDAA,EAAepjf,UAAUqjf,sBAAwB,SAAUlqK,EAAQ/hR,EAAQqoY,EAAmBS,GAC1F5yd,KAAK6yd,kBAAkBhnH,EAAOQ,eAAgBviR,EAAQqoY,EAAmBS,GACzE5yd,KAAKqyd,yBAAyBxmH,EAAQ/hR,EAAQqoY,IAElD2jD,EAAepjf,UAAUmgc,kBAAoB,SAAUmjD,EAAYlsb,EAAQqoY,EAAmBS,GAC1F,GAA0B,iBAAfojD,GAA0C,OAAfA,EAElC,IADA,IAAI3id,EAAa72C,OAAOC,KAAKu5f,GACpBnugB,EAAI,EAAGA,EAAIwrD,EAAWlvD,OAAQ0D,IAAK,CACxC,IAAIggB,EAAYwrC,EAAWxrD,GACvBougB,EAAOD,EAAWnuf,GAClBquf,OAAe,EACC,iBAATD,EACPC,EAAel2gB,KAAKgna,kBAAkBlwJ,SAASm/P,EAAMnsb,GAEhC,mBAATmsb,IACZC,EAAeD,EAAKnsb,IAEpBosb,EACA/jD,EAAkBtqc,GAEb+qc,GACLA,EAAqB/qc,KAKrCiuf,EAAepjf,UAAU2/b,yBAA2B,SAAUxmH,EAAQ/hR,EAAQqoY,GAE1E,GADgBtmH,EAAOqC,UACR,CACX,IAAIioK,OAAiB,EAQS,iBAL1BA,EAF4B,mBAArBtqK,EAAOqC,WAEGkoK,EADGvqK,EAAOqC,WACIpkR,GAGd+hR,EAAOqC,WAGxBikH,EAAkBgkD,GAEb5rgB,MAAMyL,QAAQmggB,IACnBA,EAAe9igB,QAAQ,SAAU+he,GAC7BjjB,EAAkBijB,OAKlCygC,GAAc,CACVl5H,GAAU,sBACXm5H,EAAepjf,UAAW,yBAAqB,GACjCmjf,GAAc,CAC3B36H,GAAK,mBACN46H,GAvD6B,GAiEhCO,IACIjtY,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF8sY,GAAuD,SAAUzsY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DysY,GAAoC,SAAU/9b,GAE9C,SAAS+9b,IACL,OAAkB,OAAX/9b,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAmC/D,OArCAq2gB,GAAYE,EAAoB/9b,GAIhC+9b,EAAmB7jf,UAAUkic,aAAe,SAAUzvd,GAClDnF,KAAKw2gB,gBAAkBrxgB,EAMvBnF,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOoE,2BACblpC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBqsJ,EAAmB7jf,UAAUgic,eAAiB,WAC1C10d,KAAKw2gB,gBAAkB,KAMvBx2gB,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOoE,2BACblpC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBqsJ,EAAmB7jf,UAAUk8b,UAAY,SAAUppd,GAC/C,OAAOxF,KAAKw2gB,iBAAmBx2gB,KAAKw2gB,gBAAgBvtgB,QAAQzD,IAAW,GAE3E8wgB,GAAc,CACV35H,GAAU,iBACX45H,EAAmB7jf,UAAW,oBAAgB,GACjD4jf,GAAc,CACV35H,GAAU,cACX45H,EAAmB7jf,UAAW,iBAAa,GAC9C4jf,GAAc,CACV35H,GAAU,YACX45H,EAAmB7jf,UAAW,eAAW,GACvB4jf,GAAc,CAC/Bp7H,GAAK,uBACNq7H,GArCiC,CAuCtCnwF,IAQEqwF,GAAuD,SAAU5sY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D4sY,GAAwC,WACxC,SAASA,IACL12gB,KAAK22gB,iBAAmB,GACxB32gB,KAAK42gB,kBAAoB,GACzB52gB,KAAK8b,QAAS,EACd9b,KAAK62gB,qBAAuB,EA8EhC,OA5EAH,EAAuBhkf,UAAU03c,iBAAmB,SAAUtiB,GAC1D9nd,KAAK8nd,UAAYA,GAErB4uD,EAAuBhkf,UAAU4vU,SAAW,WACxC,OAAOtiW,KAAK8b,QAEhB46f,EAAuBhkf,UAAUvpB,MAAQ,WACjCnJ,KAAK8b,QAGL9b,KAAKoqY,mBAAmBuyC,iCAMxB38a,KAAKoqY,mBAAmBme,gBAG5BvoZ,KAAK82gB,iCACL92gB,KAAK8b,QAAS,IAElB46f,EAAuBhkf,UAAUumR,OAAS,WACjCj5S,KAAK8b,SAGV9b,KAAKmsI,QACLnsI,KAAK8b,QAAS,IAElB46f,EAAuBhkf,UAAU84W,kBAAoB,SAAUv0V,GACvDj3C,KAAK8b,OACL9b,KAAK22gB,iBAAiB/ygB,KAAKqzC,GAG3BA,KAGRy/d,EAAuBhkf,UAAUqkf,mBAAqB,SAAU9/d,GACxDj3C,KAAK8b,OACL9b,KAAK42gB,kBAAkBhzgB,KAAKqzC,GAG5BA,KAGRy/d,EAAuBhkf,UAAUokf,+BAAiC,WAC9D,IAAIp1d,EAAQ1hD,KAGZA,KAAK62gB,uBACL,IAAIG,EAA2Bh3gB,KAAK62gB,qBACpC72gB,KAAK8nd,UAAU0qC,oBAAmB,GAClCxyf,KAAK42gB,kBAAkBhzgB,KAAK,WAEpB89C,EAAMm1d,uBAAyBG,GAC/Bt1d,EAAMoma,UAAU0qC,oBAAmB,MAI/CkkB,EAAuBhkf,UAAUy5G,MAAQ,WACrC,IAAI8qY,EAAWj3gB,KAAK22gB,iBACpB32gB,KAAK22gB,iBAAmB,GACxB,IAAIO,EAAYl3gB,KAAK42gB,kBACrB52gB,KAAK42gB,kBAAoB,GACD,IAApBK,EAAS9ygB,QAAqC,IAArB+ygB,EAAU/ygB,SAGvCgnB,OAAOyZ,WAAW,WAAc,OAAOqye,EAAS5jgB,QAAQ,SAAU4jC,GAAQ,OAAOA,OAAe,GAChG9rB,OAAOyZ,WAAW,WAAc,OAAOsye,EAAU7jgB,QAAQ,SAAU4jC,GAAQ,OAAOA,OAAe,OAErGw/d,GAAc,CACV95H,GAAU,uBACX+5H,EAAuBhkf,UAAW,0BAAsB,GAClC+jf,GAAc,CACnCv7H,GAAK,2BACNw7H,GAlFqC,GA4FxCS,GAAuD,SAAUttY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DstY,GAAqC,WACrC,SAASA,KA4FT,IAAIC,EAiBJ,OA3GAA,EAAwBD,EACxBA,EAAoB1kf,UAAU08Y,uBAAyB,SAAUpa,GAC7D,IAAItzW,EAAQ1hD,KACR+ia,EAAmB,GACnBu0G,EAAgBt3gB,KAAKoqY,mBAAmBuX,aACxC41H,EAAuBv3gB,KAAKoqY,mBAAmBwsC,yBAenD,OAdI0gG,GAAiBC,IACjBxse,QAAQ24B,KAAK,kIACb6zc,GAAuB,GAIvBA,EACAviH,EAAgB3hZ,QAAQ,SAAUmkgB,EAAa7tgB,GAC3Co5Z,EAAiBn/Z,KAAK89C,EAAM+1d,yBAAyBD,EAAa7tgB,MAItEo5Z,EAAiBn/Z,KAAK5D,KAAKy3gB,4BAExB10G,GAGXq0G,EAAoB1kf,UAAU+kf,yBAA2B,SAAUD,EAAa7tgB,GAE5E,IAEIokW,EAFA2pK,EAAoB13gB,KAAK23gB,sBAAsBH,GAI/CzpK,EADAypK,EACQlnI,GAAUiD,qBAAuB,IAAMikI,EAAYv2H,QAGnDo2H,EAAsBO,4BAElC,IAAIC,EAAiB73gB,KAAKoqY,mBAAmB0wC,wBAC7C1oU,GAAEkyR,UAAUozI,EAAmBG,IAC/BH,EAAoB13gB,KAAKm2Z,cAAcnI,aAAa0pH,IAClC3pK,MAAQA,EAErB/tW,KAAKoqY,mBAAmBuX,cAGEvvS,GAAEgsR,QAAQs5I,EAAkBxge,QAAUk7D,GAAEgsR,QAAQs5I,EAAkB5oK,cAAgB18P,GAAEgsR,QAAQs5I,EAAkB1oK,qBAErI0oK,EAAkBvigB,QAAS,GAI/BxL,GAASA,EAAQ,IACjB+tgB,EAAkB/mK,yBAA0B,GAEhD,IAAIs6D,EAAS,IAAI5rB,GAAOq4H,EAAmB,KAAM3pK,GAAO,GAExD,OADA/tW,KAAKwR,QAAQ4oY,SAAS6wB,GACfA,GAEXmsG,EAAoB1kf,UAAUilf,sBAAwB,SAAUH,GAC5D,IAAIK,EAAiB73gB,KAAKoqY,mBAAmB0wC,wBAEzC48F,EAAoB,CACpBtwP,WAFiBpnR,KAAKoqY,mBAAmBk9B,mBAE7BnvD,CAAe,QAAS,UASxC,GAPuC0/J,IAAmBA,EAAexpK,cAAgBwpK,EAAe3oK,yBAGpGwoK,EAAkBrpK,aAAe,uBAIjCmpK,EAAa,CACb,IAAIM,EAAiBN,EAAYznI,YACjC39R,GAAErrE,OAAO2we,EAAmB,CAExBtwP,WAAYpnR,KAAKujb,iBAAiB7c,wBAAwB8wG,EAAa,UACvE1pK,kBAAmBgqK,EAAehqK,oBAElCgqK,EAAezpK,cACfj8P,GAAErrE,OAAO2we,EAAmB,CACxBhrK,mBAAoB,CAChBqrK,cAAeD,EAAezpK,aAC9B2pK,oBAAqBF,EAAeprK,sBAIhDgrK,EAAkBvpK,aAAeqpK,EAAY3xH,gBAG7C6xH,EAAkBvpK,cAAe,EAErC,OAAOupK,GAGXN,EAAoBQ,4BAA8BtnI,GAAUiD,qBAC5D4jI,GAAc,CACVx6H,GAAU,uBACXy6H,EAAoB1kf,UAAW,0BAAsB,GACxDykf,GAAc,CACVx6H,GAAU,YACXy6H,EAAoB1kf,UAAW,eAAW,GAC7Cykf,GAAc,CACVx6H,GAAU,qBACXy6H,EAAoB1kf,UAAW,wBAAoB,GACtDykf,GAAc,CACVx6H,GAAU,kBACXy6H,EAAoB1kf,UAAW,qBAAiB,GAC7B2kf,EAAwBF,GAAc,CACxDj8H,GAAK,wBACNk8H,GA7GkC,GAuHrCa,IACI7uY,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF0uY,GAAuD,SAAUruY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DquY,GAAiC,SAAU3/b,GAE3C,SAAS2/b,IACL,IAAIz2d,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAMhE,OALA0hD,EAAM+mb,YAAc,EACpB/mb,EAAM02d,qBAAuB,EAC7B12d,EAAM22d,wBAA0B,EAChC32d,EAAM42d,YAAc,EACpB52d,EAAM62d,eAAiB,EAChB72d,EAqQX,OA7QAu2d,GAAYE,EAAiB3/b,GAU7B2/b,EAAgBzlf,UAAUk7Z,cAAgB,WACtC5tb,KAAK8b,OAAS9b,KAAKoqY,mBAAmBiyC,eACtCr8a,KAAK6jX,kBAAoB7jX,KAAKoqY,mBAAmBowC,sBACjDx6a,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAO0B,oBAAqBzwZ,KAAK0je,eAAen5b,KAAKvqC,OACzGA,KAAKymb,4BAA4Bzmb,KAAKoqY,mBAAoB,qBAAsBpqY,KAAK0je,eAAen5b,KAAKvqC,OACzGA,KAAK0je,kBAETy0C,EAAgBzlf,UAAUo/c,sBAAwB,SAAU0mC,EAAYC,EAAUC,EAAiBC,GAC/F,IAAIrgf,EAAMt4B,KAAKwub,SAASsjD,sBAAsB0mC,EAAYC,EAAUz4gB,KAAKkne,kBAAmBlne,KAAKmne,kBAIjG,OAHI7uc,GACAt4B,KAAK44gB,iBAEFtgf,GAEX6/e,EAAgBzlf,UAAUgxc,eAAiB,SAAUm1C,GACjD74gB,KAAK44gB,iBAUL54gB,KAAK0/Y,aAAajnD,cATW,CACzB/3V,KAAMquZ,GAAO+D,yBACb3jL,UAAS0pS,GAAoBA,EAAkB1pS,QAC/C+2B,UAAS2yQ,GAAoBA,EAAkB3yQ,QAC/C0lO,UAASitC,GAAoBA,EAAkBjtC,QAC/CD,mBAAkBktC,GAAoBA,EAAkBltC,iBACxD1hH,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBiuJ,EAAgBzlf,UAAUu0e,SAAW,SAAUzpf,GACtCxd,KAAK8b,QAGN9b,KAAKyoe,cAAgBjrd,IAGzBxd,KAAKyoe,YAAcjrd,EAUnBxd,KAAK0je,eATO,CACRhje,KAAMquZ,GAAO0B,oBACbthL,SAAS,EACTw8P,kBAAkB,EAClBzlO,SAAS,EACT0lO,SAAS,EACT3hH,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,cAIxBiuJ,EAAgBzlf,UAAUi2c,eAAiB,WACvC,OAAO3oe,KAAKs4gB,aAEhBH,EAAgBzlf,UAAU0sb,OAAS,SAAUz1c,GACzC,OAAO3J,KAAKwub,SAAS4wB,OAAOz1c,IAEhCwugB,EAAgBzlf,UAAUo2c,WAAa,SAAU9id,GAC7C,OAAOhmB,KAAKwub,SAASs6C,WAAW9id,IAEpCmyf,EAAgBzlf,UAAUy+c,mBAAqB,SAAUhyC,GACrD,OAAOn/b,KAAKwub,SAAS2iD,mBAAmBhyC,IAE5Cg5E,EAAgBzlf,UAAUs7c,qBAAuB,WAC7C,OAAI57X,GAAEgsR,QAAQp+X,KAAK84gB,eAAiB1ma,GAAEgsR,QAAQp+X,KAAK+4gB,iBACxC,EAEJx6f,KAAKukC,IAAI9iD,KAAK+4gB,gBAAgB35E,OAASp/b,KAAK+4gB,gBAAgBziK,UAAYt2W,KAAK84gB,aAAa15E,OAAQ,IAE7G+4E,EAAgBzlf,UAAU0/c,aAAe,SAAU19F,GAC/C,QAAK10Y,KAAKwub,SAAS4jD,aAAa19F,IAGbA,EAAQrqY,UAAYrK,KAAKo4gB,sBAAwB1jI,EAAQrqY,UAAYrK,KAAKq4gB,yBAGjGF,EAAgBzlf,UAAU0N,QAAU,WAChC,OAAOpgC,KAAKwub,SAASpuZ,WAEzB+3e,EAAgBzlf,UAAU89c,eAAiB,WACvC,OAAOxwe,KAAKwub,SAASgiD,kBAEzB2nC,EAAgBzlf,UAAUgxa,4BAA8B,SAAUs1E,EAAcC,GAC5E,OAAOj5gB,KAAKwub,SAASkV,4BAA4Bs1E,EAAcC,IAEnEd,EAAgBzlf,UAAUssb,YAAc,SAAU/rb,GAC9C,OAAOjzB,KAAKwub,SAASwwB,YAAY/rb,IAErCklf,EAAgBzlf,UAAUuiK,QAAU,WAChC,OAAOj1L,KAAKwub,SAASv5P,WAEzBkjV,EAAgBzlf,UAAUwmf,aAAe,SAAUvvgB,GAC/C,IAAI2uB,EAAMt4B,KAAKwub,SAAS0qF,aAAavvgB,GAErC,OADA2uB,EAAIjuB,SAAWV,EACR2uB,GAEX6/e,EAAgBzlf,UAAUw0c,gBAAkB,WACxC,OAAOlne,KAAK84gB,aAAe94gB,KAAK84gB,aAAazugB,UAAY,GAE7D8tgB,EAAgBzlf,UAAUy0c,eAAiB,WACvC,OAAOnne,KAAK+4gB,gBAAkB/4gB,KAAK+4gB,gBAAgB1ugB,UAAY,GAEnE8tgB,EAAgBzlf,UAAU8he,YAAc,WACpC,OAAOx0f,KAAKwub,SAASgmE,eAEzB2jB,EAAgBzlf,UAAU2ie,kBAAoB,SAAU1rf,GACpD,GAAK3J,KAAK8b,OAAV,CAGA,IAAIg9T,EAAav6T,KAAKs7B,MAAMlwC,EAAQ3J,KAAKme,UACzCne,KAAKingB,SAASnuL,KAElBq/L,EAAgBzlf,UAAUsze,gBAAkB,WACxC,OAAOhmgB,KAAKwub,SAAS2qF,kBAEzBhB,EAAgBzlf,UAAUwqc,eAAiB,WACvC,OAAOl9d,KAAKyoe,aAEhB0vC,EAAgBzlf,UAAU+ze,aAAe,WACrCzmgB,KAAKingB,SAASjngB,KAAKyoe,YAAc,IAErC0vC,EAAgBzlf,UAAUi0e,iBAAmB,WACzC3mgB,KAAKingB,SAASjngB,KAAKyoe,YAAc,IAErC0vC,EAAgBzlf,UAAUm0e,cAAgB,WACtC7mgB,KAAKingB,SAAS,IAElBkR,EAAgBzlf,UAAUq0e,aAAe,WACrC,IAAI9gB,EAAWjmf,KAAKwub,SAASgmE,cACzBr6O,EAAW57P,KAAKs7B,MAAMosc,EAAWjmf,KAAKme,UAC1Cne,KAAKingB,SAAS9sP,IAElBg+P,EAAgBzlf,UAAUwze,YAAc,WACpC,OAAOlmgB,KAAKme,UAEhBg6f,EAAgBzlf,UAAU2ze,cAAgB,WACtC,OAAOrmgB,KAAKo5gB,YAEhBjB,EAAgBzlf,UAAU2mf,YAAc,WAEpCr5gB,KAAKme,SAAWne,KAAKoqY,mBAAmBmwC,wBAClCv6a,KAAKme,UAAY,IACnBne,KAAKme,SAAW,MAGxBg6f,EAAgBzlf,UAAUkmf,eAAiB,WACnC54gB,KAAK8b,QACL9b,KAAKq5gB,cACDr5gB,KAAK6jX,kBACL7jX,KAAKs5gB,wBAGLt5gB,KAAKu5gB,gCAITv5gB,KAAKw5gB,2BAETx5gB,KAAK84gB,aAAe94gB,KAAKwub,SAAS0qF,aAAal5gB,KAAKo4gB,sBAChDp4gB,KAAK84gB,eACL94gB,KAAK84gB,aAAazugB,SAAWrK,KAAKo4gB,sBAEtCp4gB,KAAK+4gB,gBAAkB/4gB,KAAKwub,SAAS0qF,aAAal5gB,KAAKq4gB,yBACnDr4gB,KAAK+4gB,kBACL/4gB,KAAK+4gB,gBAAgB1ugB,SAAWrK,KAAKq4gB,yBAEzCr4gB,KAAKs4gB,YAAclma,GAAE8rR,OAAOl+X,KAAK84gB,cAAgB94gB,KAAK84gB,aAAa15E,OAAS,GAEhF+4E,EAAgBzlf,UAAU+mf,YAAc,WACpCz5gB,KAAKo4gB,qBAAuB,EAC5Bp4gB,KAAKq4gB,yBAA2B,EAChCr4gB,KAAKyoe,YAAc,EACnBzoe,KAAKo5gB,WAAa,GAEtBjB,EAAgBzlf,UAAU6mf,6BAA+B,WAKrD,GADAv5gB,KAAKu4gB,eAAiBv4gB,KAAKwub,SAASkrF,sBACR,IAAxB15gB,KAAKu4gB,eAAT,CAIA,IAAIoB,EAAqB35gB,KAAKu4gB,eAAiB,EAC/Cv4gB,KAAKo5gB,WAAa76f,KAAKs7B,MAAO8/d,EAAsB35gB,KAAKme,UAAY,EACjEne,KAAKyoe,aAAezoe,KAAKo5gB,aACzBp5gB,KAAKyoe,YAAczoe,KAAKo5gB,WAAa,KAEpChna,GAAEwgD,UAAU5yJ,KAAKyoe,cAAgBzoe,KAAKyoe,YAAc,KACrDzoe,KAAKyoe,YAAc,GAEvB,IACImxC,EAAsB55gB,KAAKme,UAAYne,KAAKyoe,YAAc,GAAM,EAMpE,GALImxC,EAAqBD,IACrBC,EAAqBD,GAEzB35gB,KAAKo4gB,qBAAuBp4gB,KAAKwub,SAASqrF,6BALf75gB,KAAKme,SAAWne,KAAKyoe,aAO5CmxC,IAAuBD,EAEvB35gB,KAAKq4gB,wBAA0Br4gB,KAAKwub,SAASgmE,cAAgB,MAE5D,CACD,IAAIslB,EAAsB95gB,KAAKwub,SAASqrF,6BAA6BD,EAAqB,GAI1F55gB,KAAKq4gB,wBAA0ByB,EAAsB,QA3BrD95gB,KAAKy5gB,eA8BbtB,EAAgBzlf,UAAU6ze,kBAAoB,WAC1C,OAAOvmgB,KAAKu4gB,gBAEhBJ,EAAgBzlf,UAAU4mf,sBAAwB,WAE9C,GADAt5gB,KAAKu4gB,eAAiBv4gB,KAAKwub,SAASgmE,cACR,IAAxBx0f,KAAKu4gB,eAAT,CAIA,IAAIwB,EAAc/5gB,KAAKu4gB,eAAiB,EACxCv4gB,KAAKo5gB,WAAa76f,KAAKs7B,MAAOkge,EAAe/5gB,KAAKme,UAAY,EAC1Dne,KAAKyoe,aAAezoe,KAAKo5gB,aACzBp5gB,KAAKyoe,YAAczoe,KAAKo5gB,WAAa,KAEpChna,GAAEwgD,UAAU5yJ,KAAKyoe,cAAgBzoe,KAAKyoe,YAAc,KACrDzoe,KAAKyoe,YAAc,GAEvBzoe,KAAKo4gB,qBAAuBp4gB,KAAKme,SAAWne,KAAKyoe,YACjDzoe,KAAKq4gB,wBAA2Br4gB,KAAKme,UAAYne,KAAKyoe,YAAc,GAAM,EACtEzoe,KAAKq4gB,wBAA0B0B,IAC/B/5gB,KAAKq4gB,wBAA0B0B,QAd/B/5gB,KAAKy5gB,eAiBbtB,EAAgBzlf,UAAU8mf,yBAA2B,WACjDx5gB,KAAKme,SAAWne,KAAKwub,SAASgmE,cAC9Bx0f,KAAKo5gB,WAAa,EAClBp5gB,KAAKyoe,YAAc,EACnBzoe,KAAKo4gB,qBAAuB,EAC5Bp4gB,KAAKq4gB,wBAA0Br4gB,KAAKwub,SAASgmE,cAAgB,GAEjE0jB,GAAc,CACVv7H,GAAU,aACXw7H,EAAgBzlf,UAAW,gBAAY,GAC1Cwlf,GAAc,CACVv7H,GAAU,iBACXw7H,EAAgBzlf,UAAW,oBAAgB,GAC9Cwlf,GAAc,CACVv7H,GAAU,uBACXw7H,EAAgBzlf,UAAW,0BAAsB,GACpDwlf,GAAc,CACVv7H,GAAU,wBACXw7H,EAAgBzlf,UAAW,2BAAuB,GACrDwlf,GAAc,CACVv7H,GAAU,cACXw7H,EAAgBzlf,UAAW,iBAAa,GAC3Cwlf,GAAc,CACVv7H,GAAU,YACXw7H,EAAgBzlf,UAAW,eAAW,GACzCwlf,GAAc,CACV57H,IACD67H,EAAgBzlf,UAAW,gBAAiB,MAC7Bwlf,GAAc,CAC5Bh9H,GAAK,oBACNi9H,GA7Q8B,CA+QnC/xF,IAQE4zF,IACI5wY,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFywY,GAAuD,SAAUpwY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DowY,GAA+C,SAAU1hc,GAEzD,SAAS0hc,IACL,OAAkB,OAAX1hc,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAwC/D,OA1CAg6gB,GAAYE,EAA+B1hc,GAI3C0hc,EAA8Bxnf,UAAU03c,iBAAmB,SAAUtiB,GACjE9nd,KAAK8nd,UAAYA,EACjB9nd,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOiE,0BAA2BhzZ,KAAKm6gB,oBAAoB5ve,KAAKvqC,OACpHA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOmE,gCAAiClzZ,KAAKwlf,0BAA0Bj7c,KAAKvqC,OAChIA,KAAKo6gB,iBAETF,EAA8Bxnf,UAAU2nf,UAAY,WAChD,OAAQr6gB,KAAKoqY,mBAAmB2yC,4BAEpCm9F,EAA8Bxnf,UAAU8yd,0BAA4B,WAChExlf,KAAKo6gB,iBAETF,EAA8Bxnf,UAAUynf,oBAAsB,WAC1Dn6gB,KAAKo6gB,iBAETF,EAA8Bxnf,UAAU0nf,cAAgB,WACpD,IAAIp6gB,KAAKq6gB,YAAT,CAGA,IAAI/jK,EAAYt2W,KAAKoqY,mBAAmBg3C,uBACpCmxE,EAAavyf,KAAK8nd,UAAU9pF,gBAChC,GAAIu0H,EAAa,EAAG,CAChB,IAAI+nB,EAAc/7f,KAAKs7B,MAAM04c,EAAaj8I,GAC1Ct2W,KAAKoqY,mBAAmBz5Q,YAAY,qBAAsB2pZ,MAGlEL,GAAc,CACVt9H,GAAU,iBACXu9H,EAA8Bxnf,UAAW,oBAAgB,GAC5Dunf,GAAc,CACVt9H,GAAU,uBACXu9H,EAA8Bxnf,UAAW,0BAAsB,GAClEunf,GAAc,CACVt9H,GAAU,yBACXu9H,EAA8Bxnf,UAAW,4BAAwB,GACpCunf,GAAc,CAC1C/+H,GAAK,kCACNg/H,GA1C4C,CA4CjD9zF,IAQEm0F,GAAuD,SAAU1wY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D0wY,GAA4B,WAC5B,SAASA,IACLx6gB,KAAKy6gB,aAAe,EAuCxB,OArCAD,EAAW9nf,UAAU4yQ,KAAO,WACxBtlS,KAAK8b,OAAS9b,KAAKoqY,mBAAmB+0C,eACtCn/a,KAAK06gB,aAAe16gB,KAAKoqY,mBAAmBg1C,4BAEhDo7F,EAAW9nf,UAAUmra,cAAgB,WAC7B79b,KAAK06gB,cAGT16gB,KAAKg2Z,UAETwkH,EAAW9nf,UAAUsjY,OAAS,WAC1Bh2Z,KAAKy6gB,gBAETD,EAAW9nf,UAAU4hH,SAAW,SAAUogQ,EAAS3mC,EAAOxsW,GAClDvB,KAAK8b,SACD44X,EAAQimI,iBAAmB36gB,KAAKy6gB,eAChC/lI,EAAQimI,eAAiB36gB,KAAKy6gB,aAC9B/lI,EAAQkmI,YAAc,IAE1BlmI,EAAQkmI,YAAY7sK,GAASxsW,IAGrCi5gB,EAAW9nf,UAAUopG,SAAW,SAAU44Q,EAAS3mC,GAC/C,GAAK/tW,KAAK8b,QAAU44X,EAAQimI,iBAAmB36gB,KAAKy6gB,aAGpD,OAAO/lI,EAAQkmI,YAAY7sK,IAE/BwsK,GAAc,CACV59H,GAAU,uBACX69H,EAAW9nf,UAAW,0BAAsB,GAC/C6nf,GAAc,CACVj+H,IACDk+H,EAAW9nf,UAAW,OAAQ,MACpB6nf,GAAc,CACvBr/H,GAAK,eACNs/H,GAxCyB,GAkD5BK,IACIzxY,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFsxY,GAAuD,SAAUjxY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DixY,GAAwC,SAAUvic,GAElD,SAASuic,IACL,OAAkB,OAAXvic,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAoD/D,OAtDA66gB,GAAYE,EAAwBvic,GAIpCuic,EAAuBrof,UAAU4yQ,KAAO,WAChCtlS,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,6BACtC7yY,KAAK++c,mBAAqB/+c,KAAKwub,UAEnCxub,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOmC,yBAA0BlxZ,KAAK4vW,mBAAmBrlU,KAAKvqC,QAEtH+6gB,EAAuBrof,UAAUk9U,mBAAqB,SAAUtnV,GAOxDA,EAAM/B,SAAW+pX,GAAUkD,cAG/BxzY,KAAKg7gB,kBAAkB1yf,EAAMo7H,KAAMp7H,EAAM9iB,SAE7Cu1gB,EAAuBrof,UAAUsof,kBAAoB,SAAUtmI,EAASlvY,GACpE,IAAIxF,KAAKoqY,mBAAmBiuC,4BAA5B,CAIA,GAAIr4a,KAAK++c,qBAAuBrqE,EAAQmuD,cAAe,CACnD,IAAIo4E,EAAqBj7gB,KAAKoqY,mBAAmBk1C,gCAC7Cu+B,EAAc,IAAIhC,GAAYo/D,EAAoBj7gB,KAAK++c,mBAAmB5pa,eAC9E0oa,EAAYb,cAActoE,EAAQ9tW,OAAQ,CAACphC,IAC3CxF,KAAK++c,mBAAmBm8D,YAAYr9D,GAGxC79c,KAAKm3d,YAAY4I,iBAErB+6C,GAAc,CACVn+H,GAAU,uBACXo+H,EAAuBrof,UAAW,0BAAsB,GAC3Doof,GAAc,CACVn+H,GAAU,aACXo+H,EAAuBrof,UAAW,gBAAY,GACjDoof,GAAc,CACVn+H,GAAU,gBACXo+H,EAAuBrof,UAAW,mBAAe,GACpDoof,GAAc,CACVn+H,GAAU,iBACXo+H,EAAuBrof,UAAW,oBAAgB,GACrDoof,GAAc,CACVx+H,IACDy+H,EAAuBrof,UAAW,OAAQ,MACpBoof,GAAc,CACnC5/H,GAAK,2BACN6/H,GAtDqC,CAwD1C30F,IAQE+0F,GAAuD,SAAUtxY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5DsxY,GAAqC,WACrC,SAASA,IAILp7gB,KAAKq7gB,WAAY,EACjBr7gB,KAAK6yD,OAAS,GAwMlB,OAtMAuod,EAAoB1of,UAAUirX,SAAW,SAAUC,GAC/C59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,wBAEvC81gB,EAAoB1of,UAAU03c,iBAAmB,SAAUtiB,GACvD9nd,KAAK8nd,UAAYA,GAErBszD,EAAoB1of,UAAU4yQ,KAAO,WACjCtlS,KAAK6yD,OAAS,CACV7yD,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOS,mBAAoBxvZ,KAAKs7gB,gBAAgB/we,KAAKvqC,OACxFA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOU,qBAAsBzvZ,KAAKs7gB,gBAAgB/we,KAAKvqC,OAC1FA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOW,oBAAqB1vZ,KAAKs7gB,gBAAgB/we,KAAKvqC,OACzFA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOY,0BAA2B3vZ,KAAKs7gB,gBAAgB/we,KAAKvqC,OAC/FA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOa,qBAAsB5vZ,KAAKs7gB,gBAAgB/we,KAAKvqC,OAC1FA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO4D,kBAAmB3yZ,KAAKu7gB,gBAAgBhxe,KAAKvqC,SAG/Fo7gB,EAAoB1of,UAAUxR,QAAU,WAChClhB,KAAK6yD,OAAO1uD,QACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,MAEjDj3C,KAAK6yD,OAAS,IAGlBuod,EAAoB1of,UAAU8of,UAAY,SAAUvof,GAGhD,IAAIjzB,KAAKq7gB,UAAT,CAIA,IAAII,EAAaz7gB,KAAKoqY,mBAAmB+yC,kBACrCs+F,GACAA,EAAWpogB,QAAQ,SAAUqogB,GACzB,GAAIA,EAAiBzxJ,IAAK,CACtB,IAAI0xJ,EAAqBD,EAAiBzxJ,IAAIwxI,0BAC9Cxoe,EAAS0of,QAOzBP,EAAoB1of,UAAUkpf,QAAU,SAAU3of,GAC9CjzB,KAAKq7gB,WAAY,EACjBpof,IACAjzB,KAAKq7gB,WAAY,GAErBD,EAAoB1of,UAAU4of,gBAAkB,SAAUhzf,GACtDtoB,KAAKw7gB,UAAU,SAAU9pB,GACrBA,EAAoBmqB,cAAcvzf,MAG1C8yf,EAAoB1of,UAAU6of,gBAAkB,SAAUjzf,GAC9B,eAApBA,EAAMthB,WAGVhH,KAAKw7gB,UAAU,SAAU9pB,GACrBA,EAAoBoqB,cAAcxzf,MAG1C8yf,EAAoB1of,UAAUopf,cAAgB,SAAUxzf,GACpD,IAAIo5B,EAAQ1hD,KACZA,KAAK47gB,QAAQ,WACTl6d,EAAMoma,UAAUuyC,4BAA4B/xe,EAAMrc,SAG1DmvgB,EAAoB1of,UAAUqpf,iBAAmB,SAAUzzf,GACvD,IAAIsU,EAAS,GASb,OARItU,EAAMnjB,QACNmjB,EAAMnjB,QAAQkO,QAAQ,SAAU7N,GAC5Bo3B,EAAOh5B,KAAK4B,KAGX8iB,EAAM9iB,QACXo3B,EAAOh5B,KAAK0kB,EAAM9iB,QAEfo3B,GAEXw+e,EAAoB1of,UAAUspf,aAAe,SAAU1zf,GACnD,IAAIsU,EAAS,GASb,OARItU,EAAMnjB,QACNmjB,EAAMnjB,QAAQkO,QAAQ,SAAU7N,GAC5Bo3B,EAAOh5B,KAAK4B,EAAOqgZ,cAGlBv9X,EAAM9iB,QACXo3B,EAAOh5B,KAAK0kB,EAAM9iB,OAAOqgZ,YAEtBjpX,GAEXw+e,EAAoB1of,UAAUmpf,cAAgB,SAAUvzf,GACpD,IAAIo5B,EAAQ1hD,KACZA,KAAK47gB,QAAQ,WACT,OAAQtzf,EAAM5nB,MACV,KAAKquZ,GAAOS,mBACZ,KAAKT,GAAOU,qBACZ,KAAKV,GAAOW,oBACZ,KAAKX,GAAOa,qBAERluW,EAAMu6d,mBADS3zf,GAEf,MACJ,KAAKymY,GAAOY,0BAERjuW,EAAMw6d,wBADiB5zf,GAEvB,MACJ,KAAKymY,GAAOM,2BAGRtkX,QAAQ24B,KAAK,0HAM7B03c,EAAoB1of,UAAUwpf,wBAA0B,SAAUC,GAE9D,IACIC,EADAC,EAAoBF,EAAiB17G,YAEzC,GAAI47G,EAAmB,CACnB,IAAIrnd,EAAUqnd,EAAkB1zH,aAChCyzH,EAAmBp8gB,KAAKujb,iBAAiBn7B,uBAAuBpzV,GAEhEqnd,IAAsBD,IAG1Bp8gB,KAAK+4Y,OAAOt9T,IAAI,8BAAgC0gc,EAAmB,eAAiBE,EAAkB34W,cACtG1jK,KAAKujb,iBAAiBva,qBAAqBozG,EAAkBC,EAAkB34W,aAAc,wBAEjG03W,EAAoB1of,UAAUupf,mBAAqB,SAAUK,GACzD,IAIIvwB,EAJArqc,EAAQ1hD,KAGRu8gB,EAAeD,EAAS92gB,OAO5B,GALI+2gB,IACAxwB,EAAc/rf,KAAKujb,iBAAiBtrB,iBAAiBskH,EAAa12H,cAIlE02H,GAAiBxwB,EAArB,CAKA,IAAIywB,EAAYx8gB,KAAKg8gB,aAAaM,GAC9BG,EAAgBz8gB,KAAK+7gB,iBAAiBO,GAC1C,OAAQA,EAAS57gB,MACb,KAAKquZ,GAAOS,mBACR,IAAIl1P,EAAagiX,EACjBt8gB,KAAK+4Y,OAAOt9T,IAAI,8BAAgC6gc,EAAS57gB,KAAO,cAAgB45J,EAAWhJ,SAC3FtxJ,KAAKujb,iBAAiB1jB,YAAY28G,EAAWliX,EAAWhJ,QAAS,sBACjE,MACJ,KAAKy9P,GAAOU,qBACR,IAAIitH,EAAeJ,EACnBt8gB,KAAK+4Y,OAAOt9T,IAAI,8BAAgC6gc,EAAS57gB,KAAO,cAAgBg8gB,EAAa3oV,SAC7F/zL,KAAKujb,iBAAiBvhB,kBAAkBw6G,EAAWE,EAAa3oV,QAAS,sBACzE,MACJ,KAAKg7N,GAAOW,oBACR,IAAIitH,EAAcL,EAClBt8gB,KAAK+4Y,OAAOt9T,IAAI,8BAAgC6gc,EAAS57gB,KAAO,aAAei8gB,EAAYpuK,QAC3FvuW,KAAKujb,iBAAiBrhB,iBAAiBs6G,EAAWG,EAAYpuK,OAAQ,sBACtE,MACJ,KAAKwgD,GAAOa,qBACR,IAAIgtH,EAAiBN,EACrBG,EAAcppgB,QAAQ,SAAU7N,GAC5Bk8C,EAAMq3V,OAAOt9T,IAAI,8BAAgC6gc,EAAS57gB,KAAO,kBAAoB8E,EAAOugZ,kBAC5F,IAAIxwK,EAAe,CAAC,CAAE54N,IAAKnX,EAAOqgZ,WAAYuT,SAAU5zZ,EAAOugZ,mBAC/DrkW,EAAM6hY,iBAAiB3lB,gBAAgBroL,GAAc,EAAOqnS,EAAev/M,SAAU,wBAIjG,IAAIkmE,EAA0BvjY,KAAK8nd,UAAUvkF,0BAC1BvjY,KAAKoqY,mBAAmB+yC,kBAC9B9pa,QAAQ,SAAUwpgB,GAC3BA,EAAK5yJ,IAAIuzI,4BAA4Bj6H,OAG7C43I,GAAc,CACVx+H,GAAU,uBACXy+H,EAAoB1of,UAAW,0BAAsB,GACxDyof,GAAc,CACVx+H,GAAU,qBACXy+H,EAAoB1of,UAAW,wBAAoB,GACtDyof,GAAc,CACVx+H,GAAU,iBACXy+H,EAAoB1of,UAAW,oBAAgB,GAClDyof,GAAc,EACA,EAtMwDhxY,EAsMrD8yQ,GAAU,iBArMpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAqMpC,MACXy+f,EAAoB1of,UAAW,WAAY,MAC9Cyof,GAAc,CACV7+H,IACD8+H,EAAoB1of,UAAW,OAAQ,MAC1Cyof,GAAc,CACV3+H,IACD4+H,EAAoB1of,UAAW,UAAW,MACvByof,GAAc,CAChCjgI,GAAK,wBACNkgI,GAhN6C,IAAsBjxY,EAGjC,GAuNrC2yY,GAAuD,SAAUjzY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DizY,GAAkC,WAClC,SAASA,KA0DT,OAxDAA,EAAiBrqf,UAAU64a,cAAgB,SAAUp9S,EAAc68S,EAAqBK,EAAwB9kb,GAC5G,GAA2B,MAAvBykb,EACA,MAAO,CACH/rb,UAAW,KACXosb,uBAAwBA,EACxB9kb,OAAQA,EACR2jb,mBAAoB,MAG5B,IAAI3/T,EAAWvqI,KAAKwsc,0BAA0BT,SAAS59S,GACvD,OAAI5jB,GAAYA,EAASyyY,gBACd,CACH3xE,uBAAwBA,EACxBpsb,UAAWsrH,EAASyyY,gBAAgBhyE,GACpCzkb,OAAQA,EACR2jb,mBAAoB,MAGrB,MAEX6yE,EAAiBrqf,UAAUuqf,0BAA4B,SAAUhqf,GAsB7D,OArB6B,WACzB,SAASiqf,KAkBT,OAhBAA,EAAQxqf,UAAU2jU,QAAU,SAAUvsQ,GAClC,OAAO,GAEXozb,EAAQxqf,UAAU4zW,OAAS,WACvB,IAAI62I,EAAiBlqf,EAASjzB,KAAK8pF,QAC/BppF,SAAcy8gB,EAClB,MAAa,WAATz8gB,GAA8B,WAATA,GAA8B,YAATA,EACnC0xG,GAAE8uR,aAAa,SAAWi8I,EAAiB,WAG3CA,GAGfD,EAAQxqf,UAAU4yQ,KAAO,SAAUx7M,GAC/B9pF,KAAK8pF,OAASA,GAEXozb,EAnBkB,IAuBjCH,EAAiBrqf,UAAU04a,wBAA0B,SAAUgyE,GAC3D,QAAKA,GAGEA,EAAU1qf,WAAa,WAAY0qf,EAAU1qf,WAExDoqf,GAAc,CACVngI,GAAU,8BACXogI,EAAiBrqf,UAAW,iCAA6B,GACzCoqf,GAAc,CAC7B5hI,GAAK,qBACN6hI,GA1D+B,GAoElCM,GAAuD,SAAUxzY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DwzY,GAA2C,WAC3C,SAASA,KA4GT,OA1GAA,EAA0B5qf,UAAUk7Z,cAAgB,WAChD5tb,KAAKu9gB,kBAAoB,CACrBjlK,cAAe,CACXm0F,oBAAqB,CAAC,UAAW,WACjCC,mBAAoB,CAAC,mBAAoB,wBAE7C5xF,mBAAoB,CAChB2xF,oBAAqB,GACrBC,mBAAoB,CAAC,YAEzBz/F,gBAAiB,CACbw/F,oBAAqB,GACrBC,mBAAoB,IAExBpgG,qBAAsB,CAClBmgG,oBAAqB,GACrBC,mBAAoB,IAExBlyF,oBAAqB,CACjBiyF,oBAAqB,GACrBC,mBAAoB,IAExBhyF,wBAAyB,CACrB+xF,oBAAqB,GACrBC,mBAAoB,IAExB9xF,uBAAwB,CACpB6xF,oBAAqB,GACrBC,mBAAoB,IAExBt/F,wBAAyB,CACrBq/F,oBAAqB,CAAC,wBACtBC,mBAAoB,CAAC,qBAEzB8wE,+BAAgC,CAC5B/wE,oBAAqB,GACrBC,mBAAoB,IAExBr+F,aAAc,CACVo+F,oBAAqB,GACrBC,mBAAoB,CAAC,UAAW,oBAChCswE,gBAAiBh9gB,KAAKmrc,iBAAiB8xE,0BAA0B1ye,KAAKvqC,KAAKmrc,mBAE/E78F,WAAY,CACRm+F,oBAAqB,CAAC,YACtBC,mBAAoB,CAAC,UAAW,sBAAuB,mBAAoB,mBAAoB,UAAW,WAAY,qBAE1HqrE,cAAe,CACXtrE,oBAAqB,GACrBC,mBAAoB,CAAC,oBACrBswE,gBAAiBh9gB,KAAKmrc,iBAAiB8xE,0BAA0B1ye,KAAKvqC,KAAKmrc,mBAE/E1xF,sBAAuB,CACnBgzF,oBAAqB,GACrBC,mBAAoB,CAAC,UAAW,oBAChCswE,gBAAiBh9gB,KAAKmrc,iBAAiB8xE,0BAA0B1ye,KAAKvqC,KAAKmrc,mBAE/Eh8F,sBAAuB,CACnBs9F,oBAAqB,GACrBC,mBAAoB,CAAC,UAAW,oBAChCswE,gBAAiBh9gB,KAAKmrc,iBAAiB8xE,0BAA0B1ye,KAAKvqC,KAAKmrc,mBAE/E/yF,sBAAuB,CACnBq0F,oBAAqB,GACrBC,mBAAoB,CAAC,oBACrBswE,gBAAiBh9gB,KAAKmrc,iBAAiB8xE,0BAA0B1ye,KAAKvqC,KAAKmrc,mBAE/E3yF,iBAAkB,CACdi0F,oBAAqB,GACrBC,mBAAoB,CAAC,oBACrBswE,gBAAiBh9gB,KAAKmrc,iBAAiB8xE,0BAA0B1ye,KAAKvqC,KAAKmrc,mBAE/Eh2b,OAAQ,CACJs3b,oBAAqB,CAAC,iBAAkB,iBAAkB,WAAY,YACtEC,mBAAoB,CAAC,mBAAoB,kBAAmB,mBAAoB,4BAEpF2xC,gBAAiB,CACb5xC,oBAAqB,CAAC,iBAAkB,iBAAkB,WAAY,YACtEC,mBAAoB,CAAC,mBAAoB,kBAAmB,mBAAoB,4BAEpF+wE,YAAa,CACThxE,oBAAqB,GACrBC,mBAAoB,CAAC,qBAEzB95B,UAAW,CACP65B,oBAAqB,GACrBC,mBAAoB,CAAC,UAAW,qBAEpCn/F,iBAAkB,CACdk/F,oBAAqB,GACrBC,mBAAoB,MAIhC4wE,EAA0B5qf,UAAUq5a,SAAW,SAAU5qc,GACrD,OAAOnB,KAAKu9gB,kBAAkBp8gB,IAElCk8gB,GAAc,CACV1gI,GAAU,qBACX2gI,EAA0B5qf,UAAW,wBAAoB,GAC5D2qf,GAAc,CACV/gI,IACDghI,EAA0B5qf,UAAW,gBAAiB,MAC7B2qf,GAAc,CACtCniI,GAAK,8BACNoiI,GA5GwC,GAsH3CI,GAAuD,SAAU7zY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAO5D6zY,GAAuB,WACvB,SAASA,KA8GT,OA5GAA,EAAMjrf,UAAU03c,iBAAmB,SAAUtiB,GACzC9nd,KAAK8nd,UAAYA,GAErB61D,EAAMjrf,UAAUk7Z,cAAgB,WAC5B5tb,KAAK2ge,kBAAoB3ge,KAAKoqY,mBAAmBgzC,kBAErDsgG,GAAc,CACV/gI,GAAU,oBACXghI,EAAMjrf,UAAW,uBAAmB,GACvCgrf,GAAc,CACV/gI,GAAU,YACXghI,EAAMjrf,UAAW,eAAW,GAC/Bgrf,GAAc,CACV/gI,GAAU,cACXghI,EAAMjrf,UAAW,iBAAa,GACjCgrf,GAAc,CACV/gI,GAAU,YACXghI,EAAMjrf,UAAW,eAAW,GAC/Bgrf,GAAc,CACV/gI,GAAU,uBACXghI,EAAMjrf,UAAW,0BAAsB,GAC1Cgrf,GAAc,CACV/gI,GAAU,sBACXghI,EAAMjrf,UAAW,yBAAqB,GACzCgrf,GAAc,CACV/gI,GAAU,gBACXghI,EAAMjrf,UAAW,mBAAe,GACnCgrf,GAAc,CACV/gI,GAAU,aACXghI,EAAMjrf,UAAW,gBAAY,GAChCgrf,GAAc,CACV/gI,GAAU,oBACXghI,EAAMjrf,UAAW,uBAAmB,GACvCgrf,GAAc,CACV/gI,GAAU,iBACXghI,EAAMjrf,UAAW,oBAAgB,GACpCgrf,GAAc,CACV/gI,GAAU,iBACXghI,EAAMjrf,UAAW,oBAAgB,GACpCgrf,GAAc,CACV/gI,GAAU,qBACXghI,EAAMjrf,UAAW,wBAAoB,GACxCgrf,GAAc,CACV/gI,GAAU,2BACXghI,EAAMjrf,UAAW,8BAA0B,GAC9Cgrf,GAAc,CACV5gI,GAAS,oBACV6gI,EAAMjrf,UAAW,uBAAmB,GACvCgrf,GAAc,CACV/gI,GAAU,oBACXghI,EAAMjrf,UAAW,uBAAmB,GACvCgrf,GAAc,CACV5gI,GAAS,uBACV6gI,EAAMjrf,UAAW,0BAAsB,GAC1Cgrf,GAAc,CACV/gI,GAAU,wBACXghI,EAAMjrf,UAAW,2BAAuB,GAC3Cgrf,GAAc,CACV/gI,GAAU,iBACXghI,EAAMjrf,UAAW,oBAAgB,GACpCgrf,GAAc,CACV/gI,GAAU,0BACXghI,EAAMjrf,UAAW,6BAAyB,GAC7Cgrf,GAAc,CACV/gI,GAAU,mBACXghI,EAAMjrf,UAAW,sBAAkB,GACtCgrf,GAAc,CACV/gI,GAAU,uBACXghI,EAAMjrf,UAAW,0BAAsB,GAC1Cgrf,GAAc,CACV/gI,GAAU,yBACXghI,EAAMjrf,UAAW,4BAAwB,GAC5Cgrf,GAAc,CACV/gI,GAAU,0BACXghI,EAAMjrf,UAAW,iBAAa,GACjCgrf,GAAc,CACV/gI,GAAU,uBACXghI,EAAMjrf,UAAW,0BAAsB,GAC1Cgrf,GAAc,CACV/gI,GAAU,mBACXghI,EAAMjrf,UAAW,sBAAkB,GACtCgrf,GAAc,CACV/gI,GAAU,kBACXghI,EAAMjrf,UAAW,qBAAiB,GACrCgrf,GAAc,CACV/gI,GAAU,uBACXghI,EAAMjrf,UAAW,0BAAsB,GAC1Cgrf,GAAc,CACV/gI,GAAU,uBACXghI,EAAMjrf,UAAW,0BAAsB,GAC1Cgrf,GAAc,CACV/gI,GAAU,uBACXghI,EAAMjrf,UAAW,0BAAsB,GAC1Cgrf,GAAc,CACV/gI,GAAU,sBACXghI,EAAMjrf,UAAW,yBAAqB,GACzCgrf,GAAc,CACV/gI,GAAU,qBACXghI,EAAMjrf,UAAW,wBAAoB,GACxCgrf,GAAc,CACV/gI,GAAU,wBACXghI,EAAMjrf,UAAW,2BAAuB,GAC3Cgrf,GAAc,CACVphI,IACDqhI,EAAMjrf,UAAW,gBAAiB,MAC7Bgrf,GAAc,CAClBxiI,GAAK,UACNyiI,GA9GoB,GAwHvBC,GAAuD,SAAU/zY,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAM5D+zY,GAAmB,CAEnB,kBAAmB,CACfnnK,aAAc,GACdonK,mBAAoB,GACpBC,eAAgBC,GAChB1nK,UAAW,GACXstE,oBAAqB,KAEzB,oBAAqB,CACjBltE,aAAcunK,GACdH,mBAAoB,GACpBC,eAAgBE,GAChB3nK,UAAW2nK,GACXr6F,oBAAqB,KAEzB,kBAAmB,CACfltE,aAAcwnK,GACdJ,mBAAoB,GACpBC,eAAgBG,GAChB5nK,UAAW4nK,GACXt6F,oBAAqB,KAEzB,kBAAmB,CACfltE,aAAcynK,GACdL,mBAAoB,GACpBC,eAAgBI,GAChB7nK,UAAW6nK,GACXv6F,oBAAqB,MAazBw6F,GAAwB,CACxB1nK,aAAc,CAAC,iBACfonK,mBAAoB,CAAC,kBACrBC,eAAgB,CAAC,wBACjBznK,UAAW,CAAC,UACZstE,oBAAqB,CAAC,8BAEtBy6F,GAAmB,GACnBC,GAA6B,WAC7B,SAASA,KA0ET,OAxEAA,EAAY5rf,UAAUqxZ,gBAAkB,SAAU/xW,EAAOr1D,GACrD,IAAI4hgB,EAAW,aAAevsc,EAAM1gC,MAAM,YAAc,WAAa0gC,EAAM1gC,MAAM,UAAY,SAAW0gC,EAAM1gC,MAAM,UAAY,SAAW,UACvIozE,EAAem5Z,GAAiBU,GAAU5hgB,GAC1C6hgB,EAAkB,EAItB,GAHKH,GAAiBrsc,KAClBqsc,GAAiBrsc,GAAS,IAE1Bqsc,GAAiBrsc,GAAOr1D,GACxB,OAAO0hgB,GAAiBrsc,GAAOr1D,GAEnC,GAAIyhgB,GAAsBzhgB,GAAM,CAC5B,IAAIha,EAAYy7gB,GAAsBzhgB,GAClCslQ,EAAMt3O,SAAS9yB,cAAc,OACjCoqQ,EAAI12Q,MAAMvB,SAAW,WACrB,IAAIyoC,EAAK9vC,EAAU8S,OAAO,SAAUg9B,EAAIgse,EAAc1hW,GACtC,IAARA,GACA3qE,GAAE+tR,YAAY1tV,EAAIu/B,GAEtB,IAAIiwM,EAAMt3O,SAAS9yB,cAAc,OAIjC,OAHAoqQ,EAAI12Q,MAAMvB,SAAW,SACrBooG,GAAE+tR,YAAYl+G,EAAKw8P,GACnBhse,EAAG36B,YAAYmqQ,GACRA,GACRA,GACH,GAAIt3O,SAAS7H,KAAM,CACf6H,SAAS7H,KAAKhrB,YAAYmqQ,GAC1B,IAAIy8P,GAAoD,IAAzC/hgB,EAAIC,cAAc3T,QAAQ,UAAmB,SAAW,QACvEu1gB,EAAkBhve,SAASrkB,OAAOqoD,iBAAiB/gC,GAAIise,GAAW,IAClE/ze,SAAS7H,KAAKrhB,YAAYwgQ,IAIlC,OADAo8P,GAAiBrsc,GAAOr1D,GAAO6hgB,GAAmB95Z,EAC3C25Z,GAAiBrsc,GAAOr1D,IAEnC2hgB,EAAY5rf,UAAUisf,YAAc,WAChC,IAAI3sc,EAAQhyE,KAAK8jb,WAAW9xW,MAC5B,QAASA,GAASA,EAAM/oE,QAAQ,SAAW,GAE/Cq1gB,EAAY5rf,UAAUkxZ,oBAAsB,WACxC,IAAI5xW,EAAQhyE,KAAK8jb,WAAW86F,YAC5B,OAAO5+gB,KAAK+jb,gBAAgB/xW,EAAO,wBAEvCssc,EAAY5rf,UAAUoxZ,SAAW,WAI7B,IAHA,IAEI+6F,EAFAC,EAAM,wCACNrse,EAAKzyC,KAAK4sgB,SAEPn6d,KACHose,EAAaC,EAAIpge,KAAKjM,EAAG5qB,aAErB4qB,EAAKA,EAAG7J,cAMhB,IAAKi2e,EACD,MAAO,GAEX,IAAI7sc,EAAQ6sc,EAAW,GAEvB,QADsCp6gB,IAAlBo6gB,EAAW,GACZ,CACf,IAAIE,EAAa/sc,EAAMxwE,QAAQ,MAAO,aACtC4wG,GAAEg5R,OAAO,WAAc,OAAOrgW,QAAQ24B,KAAK,uEAAyEsO,EAAQ,SAAW+sc,EAAa,MAAS,mBAEjK,MAAO,CAAE/sc,MAAOA,EAAOv/B,GAAIA,EAAImse,YAAa5sc,EAAMxwE,QAAQ,SAAU,MAExEo8gB,GAAc,CACVjhI,GAAU,aACX2hI,EAAY5rf,UAAW,gBAAY,GACxBkrf,GAAc,CACxB1iI,GAAK,gBACNojI,GA1E0B,GAoF7BU,GAAuD,SAAUn1Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dm1Y,GAAuC,WACvC,SAASA,IAILj/gB,KAAKk/gB,cAAgB,CAAE/yc,KAAM,GAAI0lF,QAAQ,GACzC7xJ,KAAKm/gB,cAAgB,CAAEhzc,KAAM,GAAI0lF,QAAQ,GAIzC7xJ,KAAKo/gB,aAAe,GACpBp/gB,KAAKq/gB,SAAU,EAGfr/gB,KAAKs/gB,iBAAkB,EACvBt/gB,KAAKu/V,cAAgB,EACrBv/V,KAAKu/gB,UAAY,EACjBv/gB,KAAKw/gB,eAAiB,IAAI7xgB,IA2I9B,OAzIAsxgB,EAAsBvsf,UAAUimD,aAAe,SAAUvwD,GACrDpoB,KAAKs/gB,gBAAkBl3f,EAAYpoB,KAAKu/V,cACxCv/V,KAAKu/V,cAAgBn3U,GAEzB62f,EAAsBvsf,UAAU4yQ,KAAO,WACnCtlS,KAAKy/gB,mBAAqBz/gB,KAAKoqY,mBAAmBkuC,4BAMtD2mG,EAAsBvsf,UAAUgtf,uBAAyB,SAAUp2V,IAChC,IAA3BtpL,KAAKy/gB,mBACL10e,QAAQ24B,KAAK,kCAAoC4lH,EAAa,yCAGtE21V,EAAsBvsf,UAAUkhc,WAAa,SAAUlwd,EAAMiG,EAAOwiE,GAChEnsE,KAAK0/gB,uBAAuBvzc,GAC5B,IAAIwzc,EAAW,CAAEj8gB,KAAMA,EAAMiG,MAAOA,EAAOi2gB,cAAe5/gB,KAAKu/gB,WAC/Dv/gB,KAAK6/gB,cAAc7/gB,KAAKmsE,GAAOwzc,GAC/B3/gB,KAAKoE,YAET66gB,EAAsBvsf,UAAU6lc,WAAa,SAAU70d,GACnD1D,KAAKw/gB,eAAe38gB,IAAIa,IAE5Bu7gB,EAAsBvsf,UAAUmtf,cAAgB,SAAUC,EAAUp8gB,GAChEo8gB,EAAS3zc,KAAKvoE,KAAKF,GACnBo8gB,EAASjuX,QAAS,GAEtBotX,EAAsBvsf,UAAUqtf,aAAe,SAAUD,GACrD,IAAIA,EAASjuX,OAAb,CAGA,IAAImuX,EAAgBhghB,KAAKs/gB,gBAAkB,GAAK,EAGhDQ,EAAS3zc,KAAKtwD,KAAK,SAAUE,EAAGC,GAAK,OAAOD,EAAEpS,QAAUqS,EAAErS,MAAQq2gB,GAAiBhkgB,EAAErS,MAAQoS,EAAEpS,OAASqS,EAAE4jgB,YAAc7jgB,EAAE6jgB,cAC1HE,EAASjuX,QAAS,IAEtBotX,EAAsBvsf,UAAUm9c,eAAiB,SAAUnse,GACvD1D,KAAK0/gB,uBAAuB,iBAC5B1/gB,KAAKo/gB,aAAax7gB,KAAKF,GACvB1D,KAAKoE,YAET66gB,EAAsBvsf,UAAUutf,aAAe,SAAUC,GACrDlghB,KAAK0/gB,uBAAuB,gBAU5B,IATA,IAAIS,EAAanghB,KAAKk/gB,cAClBkB,EAAUD,EAAWh0c,KACrBk0c,EAAarghB,KAAKm/gB,cAClBmB,EAAUD,EAAWl0c,KACrBizc,EAAep/gB,KAAKo/gB,aACpBmB,GAAa,IAAI7le,MAAOwmE,UACxB1jE,GAAY,IAAI9C,MAAOwmE,UAAaq/Z,EAEpCC,EAAcN,GAAU,EACrBM,GAAehje,EAAW0ie,GAAQ,CACrC,IAAIx8gB,OAAO,EACX,GAAI08gB,EAAQj8gB,OACRnE,KAAK+/gB,aAAaI,GAClBz8gB,EAAO08gB,EAAQnhf,MAAMv7B,UAEpB,GAAI48gB,EAAQn8gB,OACbnE,KAAK+/gB,aAAaM,GAClB38gB,EAAO48gB,EAAQrhf,MAAMv7B,SAEpB,KAAI07gB,EAAaj7gB,OAGjB,CACDnE,KAAKw/gB,eAAe9ugB,QACpB,MAJAhN,EAAO07gB,EAAangf,MAMnBj/B,KAAKw/gB,eAAeprgB,IAAI1Q,IACzBA,IAEJ85C,GAAY,IAAI9C,MAAOwmE,UAAaq/Z,EAEpCH,EAAQj8gB,QAAUm8gB,EAAQn8gB,QAAUi7gB,EAAaj7gB,OACjDnE,KAAKyghB,eAGLzghB,KAAK0ghB,eAGbzB,EAAsBvsf,UAAUguf,YAAc,WAC1C1ghB,KAAKq/gB,SAAU,EACf,IAAI/2f,EAAQ,CACR5nB,KAAMquZ,GAAO6D,4BACb1oC,UAAWlqX,KAAKoqY,mBAAmB4K,eACnC/qB,IAAKjqX,KAAKoqY,mBAAmB2K,UAEjC/0Y,KAAK0/Y,aAAajnD,cAAcnwU,IAEpC22f,EAAsBvsf,UAAUkmY,eAAiB,WACxC54Z,KAAKy/gB,mBAGVz/gB,KAAKighB,cAAc,IAEvBhB,EAAsBvsf,UAAUtuB,SAAW,WAClCpE,KAAKy/gB,oBAGLz/gB,KAAKq/gB,UACNr/gB,KAAKq/gB,SAAU,EACfr/gB,KAAKyghB,kBAGbxB,EAAsBvsf,UAAU+tf,aAAe,WAG3C,IAAIxtf,EAAWjzB,KAAKighB,aAAa11e,KAAKvqC,KAAM,IACxCmrB,OAAOs9J,sBACPt9J,OAAOs9J,sBAAsBx1J,GAExB9H,OAAO8rN,4BACZ9rN,OAAO8rN,4BAA4BhkN,GAGnC9H,OAAOyZ,WAAW3R,EAAU,IAGpCgsf,EAAsBvsf,UAAU2se,aAAe,WAC3C,OAAQr/f,KAAKq/gB,SAEjBL,GAAc,CACVriI,GAAU,uBACXsiI,EAAsBvsf,UAAW,0BAAsB,GAC1Dssf,GAAc,CACVriI,GAAU,iBACXsiI,EAAsBvsf,UAAW,oBAAgB,GACpDssf,GAAc,CACV1iI,IACD2iI,EAAsBvsf,UAAW,OAAQ,MACpBssf,GAAc,CAClC9jI,GAAK,0BACN+jI,GA3JoC,GAqKvC0B,GAAuD,SAAU92Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D82Y,GAAmC,WACnC,SAASA,IACL5ghB,KAAK6ghB,2BAA6B,EAwMtC,OAtMAD,EAAkBluf,UAAU4yQ,KAAO,WAC/BtlS,KAAK64E,YAAc74E,KAAKoqY,mBAAmB3M,qBAE/CmjJ,EAAkBluf,UAAU03c,iBAAmB,SAAUtiB,GACrD9nd,KAAK8nd,UAAYA,GAErB84D,EAAkBluf,UAAU4ge,uBAAyB,SAAUhre,GAC3D,IAAI3L,EAAM2L,EAAMi/F,OAASj/F,EAAM2E,QAC3B6zf,EAAMx4f,EAAMsvK,OACZjgD,EAAOrvH,EAAM6+K,QACbmrS,EAActye,KAAK8tf,kBAAkBmlB,wBAAwB3qf,GACjE,IAAKgqd,EACD,OAAO,EAEX,IAAIyuC,GAAY,EAChB,OAAQpkgB,GACJ,KAAK2zX,GAAUmC,cACf,KAAKnC,GAAUoC,aAEN/6P,GAASmpY,IACV9ghB,KAAKghhB,eAAerkgB,GACpBokgB,GAAY,GAEhB,MACJ,KAAKzwI,GAAUqB,SACf,KAAKrB,GAAUuB,UAEPl6P,IAASmpY,IACT9ghB,KAAKihhB,kBAAkBtkgB,EAAK21d,GAC5ByuC,GAAY,GAEhB,MACJ,KAAKzwI,GAAUsB,OACf,KAAKtB,GAAUwB,SAEPn6P,IAASmpY,IACT9ghB,KAAKkhhB,eAAevkgB,EAAK21d,GACzByuC,GAAY,GAEhB,MACJ,KAAKzwI,GAAUkC,cAEN76P,GAASmpY,IACV9ghB,KAAKmhhB,WAAW7uC,GAChByuC,GAAY,GAEhB,MACJ,KAAKzwI,GAAUiC,YAEN56P,GAASmpY,IACV9ghB,KAAKohhB,SAAS9uC,GACdyuC,GAAY,GAOxB,OAHIA,GACAz4f,EAAM4E,iBAEH6zf,GASXH,EAAkBluf,UAAU2uf,iCAAmC,WAG3D,OAFU,IAAI3me,MAAOwmE,UACJlhH,KAAK6ghB,2BACP,KAEnBD,EAAkBluf,UAAU4uf,8BAAgC,WACxDthhB,KAAK6ghB,4BAA6B,IAAInme,MAAOwmE,WAEjD0/Z,EAAkBluf,UAAUyuf,WAAa,SAAUluC,GAC/C,IAAIjze,KAAKqhhB,mCAAT,CAGA,IAAIp+X,EAAiBjjJ,KAAK8nd,UAAUqgB,qBAChCo5C,EAAkBt+X,EAAej3I,OAASi3I,EAAel3I,IACzD/L,KAAK8nd,UAAUxkF,8BACfi+I,GAAmBvhhB,KAAK64E,aAE5B,IAAI2oc,EAAoBxhhB,KAAKi9d,gBAAgB0L,iBAGzC84C,EADuBzhhB,KAAKi9d,gBAAgBkU,mBADnBluV,EAAel3I,IAAMw1gB,EAC0CC,GAExFE,EAAmB1hhB,KAAKi9d,gBAAgB7d,OAAO6zB,EAAS5oe,UAAU+0b,OAElEuiF,EAAa3hhB,KAAKi9d,gBAAgBkU,mBADlBuwC,EAAmBH,EAAkBC,EACgBA,GACrElwC,EAActxe,KAAKi9d,gBAAgBkK,iBACnCw6C,EAAarwC,IACbqwC,EAAarwC,GAEbmwC,EAAcnwC,IACdmwC,EAAcnwC,GAElBtxe,KAAKupH,WAAWk4Z,EAAa,MAAO,KAAME,EAAY1uC,EAASzte,QAC/DxF,KAAKshhB,kCAETV,EAAkBluf,UAAU0uf,SAAW,SAAUnuC,GAC7C,IAAIjze,KAAKqhhB,mCAAT,CAGA,IAAIp+X,EAAiBjjJ,KAAK8nd,UAAUqgB,qBAChCo5C,EAAkBt+X,EAAej3I,OAASi3I,EAAel3I,IACzD/L,KAAK8nd,UAAUxkF,8BACfi+I,GAAmBvhhB,KAAK64E,aAE5B,IAAI2oc,EAAoBxhhB,KAAKi9d,gBAAgB0L,iBAGzC84C,EADoBzhhB,KAAKi9d,gBAAgBkU,mBADnBluV,EAAel3I,IAC6Cy1gB,GAElFr9E,EAAiBnkc,KAAKi9d,gBAAgB7d,OAAO6zB,EAAS5oe,UAEtDs3gB,EAAa3hhB,KAAKi9d,gBAAgBkU,mBADlBhtC,EAAe/E,OAAS+E,EAAe7tF,UAAYirK,EAAkBC,EAChBA,GACrEl5gB,EAAWtI,KAAKi9d,gBAAgBiK,kBAChCy6C,EAAar5gB,IACbq5gB,EAAar5gB,GAEbm5gB,EAAcn5gB,IACdm5gB,EAAcn5gB,GAElBtI,KAAKupH,WAAWk4Z,EAAa,SAAU,KAAME,EAAY1uC,EAASzte,QAClExF,KAAKshhB,kCAOTV,EAAkBluf,UAAU62F,WAAa,SAAUk4Z,EAAaG,EAAYC,EAAcF,EAAYG,GAC9F1va,GAAE8rR,OAAO2jJ,IACT7hhB,KAAK8nd,UAAUqrB,oBAAoB0uC,GAEnCzva,GAAE8rR,OAAOujJ,IACTzhhB,KAAK8nd,UAAUorB,mBAAmBuuC,EAAaG,GAGnD5hhB,KAAK24Z,sBAAsBC,iBAG3B54Z,KAAKqsd,gBAAgBmK,eAAemrD,EAAYG,EAAa,MAAM,GAC/D9hhB,KAAKosd,iBAELpsd,KAAKosd,gBAAgB2L,eADF,CAAE1td,SAAUs3gB,EAAYrjF,UAAW,KAAM94b,OAAQs8gB,KAK5ElB,EAAkBluf,UAAUwuf,eAAiB,SAAUvkgB,EAAKs2d,GACxD,IACI8uC,EADQplgB,IAAQ2zX,GAAUsB,OACG,EAAI5xY,KAAKi9d,gBAAgBkK,iBAC1Dnne,KAAKupH,WAAWw4Z,EAAoB,KAAM9uC,EAASzte,OAAQu8gB,EAAoB9uC,EAASzte,SAG5Fo7gB,EAAkBluf,UAAUuuf,kBAAoB,SAAUtkgB,EAAKs2d,GAC3D,IAAI+uC,EAAUrlgB,IAAQ2zX,GAAUqB,SAC5Bu6B,EAAalsa,KAAKujb,iBAAiB/pB,yBACnCyoH,EAAiBD,EAAU91G,EAAW,GAAK95T,GAAEj7F,KAAK+0Z,GACtDlsa,KAAKupH,WAAW0pX,EAAS5oe,SAAU,KAAM43gB,EAAgBhvC,EAAS5oe,SAAU43gB,IAIhFrB,EAAkBluf,UAAUsuf,eAAiB,SAAUrkgB,GACnD,IAAIulgB,EAAUvlgB,IAAQ2zX,GAAUmC,cAC5By5B,EAAalsa,KAAKujb,iBAAiB/pB,yBACnCyoH,EAAiBC,EAAUh2G,EAAW,GAAK95T,GAAEj7F,KAAK+0Z,GAClD61G,EAAqBG,EAAU,EAAIlihB,KAAKi9d,gBAAgBkK,iBAC5Dnne,KAAKupH,WAAWw4Z,EAAoB,KAAME,EAAgBF,EAAoBE,IAElFtB,GAAc,CACVhkI,GAAU,sBACXikI,EAAkBluf,UAAW,yBAAqB,GACrDiuf,GAAc,CACVhkI,GAAU,oBACXikI,EAAkBluf,UAAW,uBAAmB,GACnDiuf,GAAc,CACVhkI,GAAU,oBACXikI,EAAkBluf,UAAW,uBAAmB,GACnDiuf,GAAc,CACVhkI,GAAU,0BACXikI,EAAkBluf,UAAW,6BAAyB,GACzDiuf,GAAc,CACV7jI,GAAS,oBACV8jI,EAAkBluf,UAAW,uBAAmB,GACnDiuf,GAAc,CACVhkI,GAAU,qBACXikI,EAAkBluf,UAAW,wBAAoB,GACpDiuf,GAAc,CACVhkI,GAAU,uBACXikI,EAAkBluf,UAAW,0BAAsB,GACtDiuf,GAAc,CACVrkI,IACDskI,EAAkBluf,UAAW,OAAQ,MACpBiuf,GAAc,CAC9BzlI,GAAK,sBACN0lI,GAzMgC,GAmNnCuB,IACI/4Y,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF44Y,GAAuD,SAAUv4Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAM5Du4Y,GAAoC,SAAU7pc,GAE9C,SAAS6pc,IACL,IAAI3ge,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAKhE,OAHA0hD,EAAM4hP,QAAU,EAEhB5hP,EAAM4ge,aAAe,EACd5ge,EA2FX,OAlGAyge,GAAYE,EAAoB7pc,GAShC6pc,EAAmB3vf,UAAUk7Z,cAAgB,WACzC5tb,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOiE,0BAA2BhzZ,KAAKwve,aAAajlc,KAAKvqC,OAC7GA,KAAKuihB,eAAiBvihB,KAAKoqY,mBAAmB3M,oBAC9Cz9X,KAAKwihB,aAAepwa,GAAEkrR,mBAE1B+kJ,EAAmB3vf,UAAU03c,iBAAmB,SAAUtiB,GACtD9nd,KAAK8nd,UAAYA,GAErBu6D,EAAmB3vf,UAAUume,UAAY,WACrC,OAAOj5f,KAAKyihB,SAEhBJ,EAAmB3vf,UAAUg+c,UAAY,WACrC,OAAO1we,KAAK6K,QAEhBw3gB,EAAmB3vf,UAAU88c,aAAe,WACxC,GAAKxve,KAAKyihB,QAAV,CAGA,IAAIC,EAAa1ihB,KAAK8nd,UAAUqgB,qBAAqBp8d,IACjD42gB,EAAgB3ihB,KAAK4ihB,mBACDF,IAAe1ihB,KAAKsjS,SAAWq/O,IAAkB3ihB,KAAKsihB,gBAE1EtihB,KAAKsjS,QAAUo/O,EACf1ihB,KAAKsihB,aAAeK,EACpB3ihB,KAAK6ihB,qBAGbR,EAAmB3vf,UAAUmwf,gBAAkB,WAC3C7ihB,KAAK8ihB,kBAAoB9ihB,KAAKwihB,aAC9BxihB,KAAK+ihB,cAAgB/ihB,KAAKgjhB,YAAchjhB,KAAK8ihB,kBAC7C9ihB,KAAKijhB,WAAajjhB,KAAK8ihB,kBAAoB9ihB,KAAKsihB,aAEhDtihB,KAAKkjhB,UADeljhB,KAAKsjS,QAAUtjS,KAAKijhB,WACTjjhB,KAAK+ihB,gBAExCV,EAAmB3vf,UAAUywf,YAAc,WACvCnjhB,KAAK8ihB,kBAAoB9ihB,KAAKgjhB,YAC9BhjhB,KAAK+ihB,cAAgB,EACrB/ihB,KAAKkjhB,UAAU,IAEnBb,EAAmB3vf,UAAUwwf,UAAY,SAAUE,GAE/C,IAAIC,EAAsC,iBAAdD,EAAyB7kgB,KAAKs7B,MAAMupe,GAAa,KACzEpjhB,KAAK6K,SAAWw4gB,IAGpBrjhB,KAAK6K,OAASw4gB,EACdrjhB,KAAK0/Y,aAAajnD,cAAc,CAAE/3V,KAAMquZ,GAAO8D,+BAEnDwvH,EAAmB3vf,UAAUu7c,eAAiB,SAAU+0C,GACpDhjhB,KAAKgjhB,YAAcA,EACnBhjhB,KAAKyihB,QAAUzihB,KAAKwihB,aAAe,GAAKQ,EAAchjhB,KAAKwihB,aACvDxihB,KAAKyihB,QACLzihB,KAAK6ihB,kBAGL7ihB,KAAKmjhB,eAGbd,EAAmB3vf,UAAUy7c,qBAAuB,WAChD,OAAOnue,KAAK8ihB,mBAEhBT,EAAmB3vf,UAAU8sc,qBAAuB,SAAU8jD,GAC1D,OAAOA,EAAatjhB,KAAK6K,QAE7Bw3gB,EAAmB3vf,UAAUkwf,gBAAkB,WAC3C,IAAI1lW,EAAMl9K,KAAK8nd,UAAUqgB,qBACzB,OAAOjrT,EAAIlxK,OAASkxK,EAAInxK,KAE5Bs2gB,EAAmB3vf,UAAUsje,0BAA4B,SAAU52D,GAC/D,GAAIp/b,KAAK+ihB,eAAiB,EACtB,OAAO3jF,EAEX,IAAImkF,EAAiBvjhB,KAAKgjhB,YAAchjhB,KAAK4ihB,kBAG7C,OADkB5ihB,KAAKijhB,YADH7jF,EAASmkF,IAIjCnB,GAAc,CACVzlI,GAAU,iBACX0lI,EAAmB3vf,UAAW,oBAAgB,GACjD0vf,GAAc,CACVzlI,GAAU,uBACX0lI,EAAmB3vf,UAAW,0BAAsB,GACvD0vf,GAAc,CACV9lI,IACD+lI,EAAmB3vf,UAAW,gBAAiB,MAC7B0vf,GAAc,CAC/BlnI,GAAK,uBACNmnI,GAlGiC,CAoGtCj8F,IAQEo9F,GAAuD,SAAU35Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D25Y,GAAmC,WACnC,SAASA,KAiDT,OA/CAA,EAAkB/wf,UAAU4yQ,KAAO,WAC/BtlS,KAAKq9W,qBAAuBr9W,KAAKoqY,mBAAmB2pC,yBACpD/za,KAAK8+b,oBAAsB9+b,KAAKoqY,mBAAmBqzC,0BAEvDgmG,EAAkB/wf,UAAUgxf,8BAAgC,SAAUhvI,GAC9D10Y,KAAK8+b,qBAEL9+b,KAAK2jhB,YAAYjvI,EAAQ6C,mBADF,SAAU7C,GAAW,OAAOA,EAAQ6C,sBAInEksI,EAAkB/wf,UAAUkxf,+BAAiC,SAAUlvI,GAC/D10Y,KAAK8+b,qBAEL9+b,KAAK2jhB,YAAYjvI,EAAQ6C,mBADF,SAAU7C,GAAW,OAAOA,EAAQmvD,uBAInE4/E,EAAkB/wf,UAAUixf,YAAc,SAAU77gB,EAAU+7gB,GAC1D,IAAInie,EAAQ1hD,KACZ8H,EAASuL,QAAQ,SAAU2mI,GACvB,GAAKA,EAAMa,MAAX,CAMA,IAAIipY,EACJ,GAJI9pY,EAAMs9P,eACN51V,EAAMiie,YAAYE,EAAiB7pY,GAAQ6pY,GAG3Cnie,EAAM27T,qBAAsB,CAE5B,IAAI0mK,EAAkB3xa,GAAE/sG,KAAKw+gB,EAAiB7pY,GAAQ,cAAc,GACpE8pY,EAAgB1xa,GAAE8rR,OAAO6lJ,QAIzBD,IAAgBpie,EAAMo9Y,qBAAsBp9Y,EAAMo9Y,oBAAoB9kT,GAE1EA,EAAMglT,iBAAiB8kF,OAG/BN,GAAc,CACV7mI,GAAU,uBACX8mI,EAAkB/wf,UAAW,0BAAsB,GACtD8wf,GAAc,CACVlnI,IACDmnI,EAAkB/wf,UAAW,OAAQ,MACpB8wf,GAAc,CAC9BtoI,GAAK,sBACNuoI,GAjDgC,GA2DnCO,GAAuD,SAAUn6Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dm6Y,GAAsC,WACtC,SAASA,KA8DT,OA5DAA,EAAqBvxf,UAAU03c,iBAAmB,SAAUtiB,GACxD9nd,KAAK8nd,UAAYA,GAErBm8D,EAAqBvxf,UAAU+wZ,yBAA2B,SAAU/uC,GAChE,IAAIhzV,EAAQ1hD,KACPA,KAAK6rgB,kBACN7rgB,KAAK6rgB,gBAAkBlhe,SAAS9yB,cAAc,OAG9Cu6F,GAAE+tR,YAAYngY,KAAK6rgB,gBAAiB,2BAIxC,IAAIC,EAAiB9rgB,KAAK8nd,UAAUqwC,qBACpC2T,EAAeh0f,YAAY9X,KAAK6rgB,iBAChC,IAAIrvC,EAAY,GACQx8d,KAAKujb,iBAAiBtsB,0BACG9hZ,OAAO,SAAU8rF,GAAO,OAAOA,EAAI2pL,cAC3Dv3Q,QAAQ,SAAU4tF,GACvC,IAAI69X,EAAW,IAAIrT,GAAS/pa,EAAMswa,OAAQtwa,EAAMola,MAAO7lX,EAAKyzS,EAAS,MAAM,GAAM,GACjFoqF,EAASxG,aAAa52a,EAAMmqd,iBAC5BrvC,EAAU54d,KAAKk7d,KAEnB,IAAIx+d,EAAWk8d,EAAU/yd,IAAI,SAAUq1d,GAAY,OAAOA,EAAShS,sBAAwB98a,KAAK,KAChGhwC,KAAK6rgB,gBAAgBp9b,UAAYnuE,EAEjCk8d,EAAUnpd,QAAQ,SAAUyrd,GAAY,OAAOA,EAAS1Q,kBAKxD,IADA,IAAI81D,EAAgB,EACXr8gB,EAAI,EAAGA,EAAI7H,KAAK6rgB,gBAAgB/jgB,SAAS3D,OAAQ0D,IAAK,CAC3D,IAAImyI,EAAQh6I,KAAK6rgB,gBAAgB/jgB,SAASD,GACtCmyI,EAAMvoH,aAAeyyf,IACrBA,EAAgBlqY,EAAMvoH,cAY9B,OARAq6e,EAAerqf,YAAYzhB,KAAK6rgB,iBAChCrvC,EAAUnpd,QAAQ,SAAUyrd,GAExBA,EAAS//c,SACT+/c,EAAS59c,YAGbkxF,GAAE4uR,aAAahhY,KAAK6rgB,iBACbqY,GAEXF,GAAc,CACVrnI,GAAU,UACXsnI,EAAqBvxf,UAAW,aAAS,GAC5Csxf,GAAc,CACVrnI,GAAU,WACXsnI,EAAqBvxf,UAAW,cAAU,GAC7Csxf,GAAc,CACVrnI,GAAU,qBACXsnI,EAAqBvxf,UAAW,wBAAoB,GAChCsxf,GAAc,CACjC9oI,GAAK,yBACN+oI,GA9DmC,GAwEtCE,IACI/6Y,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF46Y,GAAuD,SAAUv6Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Du6Y,GAAgC,SAAU7rc,GAE1C,SAAS6rc,IACL,IAAI3ie,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAIjC,OAHA0hD,EAAM4ie,iCAAkC,EACxC5ie,EAAM6ie,oBAAqB,EAC3B7ie,EAAM8ie,oBAAqB,EACpB9ie,EA0LX,OAhMAyie,GAAYE,EAAgB7rc,GAQ5B6rc,EAAe3xf,UAAUk7Z,cAAgB,WACrC,IAAI1kb,EAAQlJ,KAAKoqY,mBAAmBme,cACpCvoZ,KAAKinb,YAAYjnb,KAAKowd,eACtBpwd,KAAKykhB,QAAQzhJ,sBAAsB,aAAc5wR,GAAEw9R,iBAAiB1mY,EAAQ,OAAS,QAASlJ,KAAKoqY,qBACnGpqY,KAAK0khB,WAAW1hJ,sBAAsB,aAAc5wR,GAAEw9R,iBAAiB1mY,EAAQ,OAAS,WAAYlJ,KAAKoqY,qBACzGpqY,KAAK2khB,OAAO3hJ,sBAAsB,aAAc5wR,GAAEw9R,iBAAiB1mY,EAAQ,WAAa,OAAQlJ,KAAKoqY,qBACrGpqY,KAAK4khB,OAAO5hJ,sBAAsB,aAAc5wR,GAAEw9R,iBAAiB1mY,EAAQ,QAAU,OAAQlJ,KAAKoqY,qBAC9FpqY,KAAKwub,SAASv5P,YAAcq7M,GAAUwC,6BACtC9yY,KAAKw7f,mBAAqBx7f,KAAKwub,UAEpBxub,KAAKoqY,mBAAmBiyC,iBACGr8a,KAAKoqY,mBAAmBwwC,6BAKlE56a,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAO+D,yBAA0B9yZ,KAAKwje,oBAAoBj5b,KAAKvqC,OACnHA,KAAKymb,4BAA4Bzmb,KAAKykhB,QAAS,QAASzkhB,KAAK6khB,UAAUt6e,KAAKvqC,OAC5EA,KAAKymb,4BAA4Bzmb,KAAK4khB,OAAQ,QAAS5khB,KAAK8khB,SAASv6e,KAAKvqC,OAC1EA,KAAKymb,4BAA4Bzmb,KAAK2khB,OAAQ,QAAS3khB,KAAK+khB,SAASx6e,KAAKvqC,OAC1EA,KAAKymb,4BAA4Bzmb,KAAK0khB,WAAY,QAAS1khB,KAAKglhB,aAAaz6e,KAAKvqC,OAClFA,KAAKwje,uBARDxje,KAAK6gY,cAAa,IAU1BwjJ,EAAe3xf,UAAU8wc,oBAAsB,WAC3Cxje,KAAKilhB,yBACLjlhB,KAAKklhB,kBACLllhB,KAAKmlhB,sBACLnlhB,KAAKolhB,kBAETf,EAAe3xf,UAAUyyf,oBAAsB,WAC3C,IAAIE,EAAarlhB,KAAKi9d,gBAAgBopC,gBAAkB,EACpD59B,EAAczoe,KAAKi9d,gBAAgBC,iBAEvCl9d,KAAKslhB,UAAU72c,UAAYzuE,KAAKulhB,aADhBF,EAAa58C,EAAc,EAAI,IAGnD47C,EAAe3xf,UAAU6yf,aAAe,SAAUhkhB,GAC9C,IAAIghZ,EAAWviZ,KAAKoqY,mBAAmBivC,mCACvC,OAAI92B,EACOA,EAAS,CAAEhhZ,MAAOA,IAGlB6wG,GAAE41R,mBAAmBzmY,IAGpC8ihB,EAAe3xf,UAAU09b,YAAc,WACnC,IAAIj4G,EAAiBn4W,KAAKoqY,mBAAmBk9B,oBACzCk+G,EAAUrtK,EAAe,OAAQ,QACjCstK,EAAQttK,EAAe,KAAM,MAC7ButK,EAAQvtK,EAAe,KAAM,MAKjC,MAAO,2PAAuQstK,EAAQ,6HAAmIC,EAAQ,8UAJlZvtK,EAAe,QAAS,SAImuB,8LAHxvBA,EAAe,WAAY,YAGm7B,4HAAgIqtK,EAAU,6GAAmHE,EAAQ,0UAFvtCvtK,EAAe,OAAQ,QAEsiD,0LAD7jDA,EAAe,OAAQ,QACovD,sFAE7xDksK,EAAe3xf,UAAUqyf,SAAW,WAC3B/khB,KAAKukhB,oBACNvkhB,KAAKi9d,gBAAgBwpC,gBAG7B4d,EAAe3xf,UAAUsyf,aAAe,WAC/BhlhB,KAAKskhB,iCACNtkhB,KAAKi9d,gBAAgB0pC,oBAG7B0d,EAAe3xf,UAAUmyf,UAAY,WAC5B7khB,KAAKskhB,iCACNtkhB,KAAKi9d,gBAAgB4pC,iBAG7Bwd,EAAe3xf,UAAUoyf,SAAW,WAC3B9khB,KAAKwkhB,oBACNxkhB,KAAKi9d,gBAAgB8pC,gBAG7Bsd,EAAe3xf,UAAUuyf,uBAAyB,WAC9C,IAAIx8C,EAAczoe,KAAKi9d,gBAAgBC,iBACnCgoC,EAAcllgB,KAAKi9d,gBAAgB+oC,kBACnCoT,EAAap5gB,KAAKi9d,gBAAgBopC,gBACtCrmgB,KAAKskhB,gCAAkD,IAAhB77C,EACvCr2X,GAAEmuR,oBAAoBvgY,KAAK0khB,WAAY,cAAe1khB,KAAKskhB,iCAC3Dlya,GAAEmuR,oBAAoBvgY,KAAKykhB,QAAS,cAAezkhB,KAAKskhB,iCACxD,IAAIqB,EAAqB3lhB,KAAK4lhB,uBAE9B5lhB,KAAKukhB,mBADYrf,GAAez8B,IAAiB2wC,EAAa,GACtBuM,EACxCvza,GAAEmuR,oBAAoBvgY,KAAK2khB,OAAQ,cAAe3khB,KAAKukhB,oBACvDvkhB,KAAKwkhB,oBAAsBtf,GAAeygB,GAAsBl9C,IAAiB2wC,EAAa,EAC9Fhna,GAAEmuR,oBAAoBvgY,KAAK4khB,OAAQ,cAAe5khB,KAAKwkhB,qBAE3DH,EAAe3xf,UAAUwyf,gBAAkB,WACvC,IAKIpsD,EACAE,EANAyP,EAAczoe,KAAKi9d,gBAAgBC,iBACnC/+c,EAAWne,KAAKi9d,gBAAgBipC,cAChChB,EAAcllgB,KAAKi9d,gBAAgB+oC,kBACnC/f,EAAWjmf,KAAKi9d,gBAAgB+oC,kBAChChmgB,KAAKi9d,gBAAgBspC,oBAAsB,KAG3CvmgB,KAAK4lhB,wBACL9sD,EAAW,EACXE,EAAS,IAITA,GADAF,EAAY36c,EAAWsqd,EAAe,GAClBtqd,EAAW,EAC3B+mf,GAAelsC,EAASitB,IACxBjtB,EAASitB,IAGjBjmf,KAAK6lhB,iBAAiBp3c,UAAYzuE,KAAKulhB,aAAazsD,GAEhD94d,KAAK8lhB,gBAAgBr3c,UADrBzuE,KAAKw7f,oBAAsBx7f,KAAKw7f,mBAAmB/oa,YAClB,IAGAzyF,KAAKulhB,aAAavsD,IAG3DqrD,EAAe3xf,UAAUkzf,qBAAuB,WAC5C,IAAI1gB,EAAcllgB,KAAKi9d,gBAAgB+oC,kBACnCoT,EAAap5gB,KAAKi9d,gBAAgBopC,gBACtC,OAAOnB,GAA8B,IAAfkU,GAE1BiL,EAAe3xf,UAAU0yf,eAAiB,WACtC,IAAIW,EAAgB/lhB,KAAKi9d,gBAAgB+oC,kBACrCoT,EAAap5gB,KAAKi9d,gBAAgBopC,gBAClCpgB,EAAWjmf,KAAKi9d,gBAAgB+oC,kBAChChmgB,KAAKi9d,gBAAgBspC,oBAAsB,KAC/C,GAAIwf,EACA/lhB,KAAKgmhB,QAAQv3c,UAAYzuE,KAAKulhB,aAAanM,GAC3Cp5gB,KAAKimhB,cAAcx3c,UAAYzuE,KAAKulhB,aAAat/B,OAEhD,CACD,IAAIigC,EAAWlmhB,KAAKoqY,mBAAmBk9B,mBAAxBtna,CAA4C,OAAQ,QACnEA,KAAKgmhB,QAAQv3c,UAAYy3c,EACzBlmhB,KAAKimhB,cAAcx3c,UAAYy3c,IAGvC9B,GAAc,CACVznI,GAAU,uBACX0nI,EAAe3xf,UAAW,0BAAsB,GACnD0xf,GAAc,CACVznI,GAAU,iBACX0nI,EAAe3xf,UAAW,oBAAgB,GAC7C0xf,GAAc,CACVznI,GAAU,oBACX0nI,EAAe3xf,UAAW,uBAAmB,GAChD0xf,GAAc,CACVznI,GAAU,gBACX0nI,EAAe3xf,UAAW,mBAAe,GAC5C0xf,GAAc,CACVznI,GAAU,aACX0nI,EAAe3xf,UAAW,gBAAY,GACzC0xf,GAAc,CACVl6F,GAAY,YACbm6F,EAAe3xf,UAAW,eAAW,GACxC0xf,GAAc,CACVl6F,GAAY,eACbm6F,EAAe3xf,UAAW,kBAAc,GAC3C0xf,GAAc,CACVl6F,GAAY,WACbm6F,EAAe3xf,UAAW,cAAU,GACvC0xf,GAAc,CACVl6F,GAAY,WACbm6F,EAAe3xf,UAAW,cAAU,GACvC0xf,GAAc,CACVl6F,GAAY,kBACbm6F,EAAe3xf,UAAW,qBAAiB,GAC9C0xf,GAAc,CACVl6F,GAAY,qBACbm6F,EAAe3xf,UAAW,wBAAoB,GACjD0xf,GAAc,CACVl6F,GAAY,oBACbm6F,EAAe3xf,UAAW,uBAAmB,GAChD0xf,GAAc,CACVl6F,GAAY,kBACbm6F,EAAe3xf,UAAW,qBAAiB,GAC9C0xf,GAAc,CACVl6F,GAAY,cACbm6F,EAAe3xf,UAAW,iBAAa,GAC1C0xf,GAAc,CACVl6F,GAAY,YACbm6F,EAAe3xf,UAAW,eAAW,GACxC0xf,GAAc,CACV9nI,IACD+nI,EAAe3xf,UAAW,gBAAiB,MACvC2xf,EAjMyB,CAkMlCjyf,IAQE+zf,GAAuD,SAAUt8Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Ds8Y,GAAuC,WACvC,SAASA,KAuDT,OArDAA,EAAsB1zf,UAAUs/d,cAAgB,SAAU3mf,EAAS4nB,EAAUozf,QACnD,IAAlBA,IAA4BA,EAAgB,IAEhD,IAWQC,EACAC,EAEAlkP,EACAmkP,EAVAC,EALJC,EAAmB1mhB,KAAK8pX,mBAGxB68J,EAAoBv0a,GAAEm6F,SAASt5K,EAAUozf,GA6BzC/0K,EAAiBtxW,KAAKoqY,mBAAmB6rC,kCAE7C,OAD6B9qZ,OAAOi5U,iBACPkN,IA7BrBm1K,EAAiB,IAAIt7f,OAAOi5U,eAAeuiL,IAChCr5Y,QAAQjiI,GAChB,WAAc,OAAOo7gB,EAAe31gB,gBAIvCw1gB,EAAgBl0a,GAAEt/B,YAAYznE,GAC9Bk7gB,EAAiBn0a,GAAE3gF,aAAapmB,GAEhCg3R,GAAU,GACVmkP,EAAkC,WAClC,GAAInkP,EAAS,CACT,IAAI+2H,EAAWhnT,GAAEt/B,YAAYznE,GACzBu7gB,EAAYx0a,GAAE3gF,aAAapmB,IACjB+tZ,IAAaktH,GAAiBM,IAAcL,KAEtDD,EAAgBltH,EAChBmtH,EAAiBK,EACjB3zf,KAEJyzf,EAAiB9hf,WAAW4hf,EAAiCH,QAK9D,WAAc,OAAOhkP,GAAU,KAW9C8jP,GAAc,CACVxpI,GAAU,uBACXypI,EAAsB1zf,UAAW,0BAAsB,GAC1Dyzf,GAAc,CACVxpI,GAAU,uBACXypI,EAAsB1zf,UAAW,0BAAsB,GAClCyzf,GAAc,CAClCjrI,GAAK,0BACNkrI,GAvDoC,GAiEvCS,IACIz9Y,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFs9Y,GAAuD,SAAUj9Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAWo6W,GACPA,EAAYA,EAAW,QAAc,GAAK,UAC1CA,EAAYA,EAAW,OAAa,GAAK,SAF7C,CAGGA,KAAgBA,GAAc,KACjC,IA8FQ96W,GAuNAA,GA2WAA,GAoUAA,GA0CAA,GAgDAA,GAqGAA,GA4PAA,GAoGAA,GAmGAA,GAmHAA,GAiFAA,GA8KAA,GA2HAA,GAoNAA,GAwbAA,GA/tFJ29Y,GAAyC,SAAUvuc,GAEnD,SAASuuc,IACL,IAAIrle,EAAQ82B,EAAOtjD,KAAKl1B,KAAM+mhB,EAAwBp8F,WAAa3qb,KAGnE,OAFA0hD,EAAMsle,YAAa,EACnBtle,EAAMule,kBAAmB,EAClBvle,EA8EX,OAnFAmle,GAAYE,EAAyBvuc,GAOrCuuc,EAAwBr0f,UAAUk7Z,cAAgB,WAC9C5tb,KAAKoqY,mBAAmB+1C,iBAAiBngb,KAAKknhB,iBAC9ClnhB,KAAK6gY,cAAa,IAEtBkmJ,EAAwBr0f,UAAUy0f,oBAAsB,SAAUC,GAC9Dh1a,GAAEmuR,oBAAoBvgY,KAAKknhB,gBAAiB,6BAA8BE,IAAgBljC,GAAYmjC,SACtGj1a,GAAEmuR,oBAAoBvgY,KAAKknhB,gBAAiB,6BAA8BE,IAAgBljC,GAAYojC,SAE1GP,EAAwBr0f,UAAUo+d,mBAAqB,WACnD,IAAIy2B,EAAWvnhB,KAAKgsb,qBAAqBgd,2BAA2B,CAChE/+E,IAAKjqX,KAAKoqY,mBAAmB2K,WAEjC/0Y,KAAKwnhB,YAAYD,EAAUrjC,GAAYmjC,UAE3CN,EAAwBr0f,UAAUule,kBAAoB,WAClD,IAAIsvB,EAAWvnhB,KAAKgsb,qBAAqBid,0BAA0B,CAC/Dh/E,IAAKjqX,KAAKoqY,mBAAmB2K,WAEjC/0Y,KAAKwnhB,YAAYD,EAAUrjC,GAAYojC,SAE3CP,EAAwBr0f,UAAU80f,YAAc,SAAUD,EAAU7mhB,GAChE,IAAIghD,EAAQ1hD,KACRA,KAAKgnhB,aAGThnhB,KAAKmnhB,oBAAoBzmhB,GACzBV,KAAKynhB,uBACLznhB,KAAKgnhB,YAAa,EAClBO,EAASlpgB,KAAK,SAAUoge,GACpB/8b,EAAMsle,YAAa,EACnBtle,EAAMwle,gBAAgBpvgB,YAAY2me,EAAKn4G,UACvC5kV,EAAMgme,cAAgBjpC,EAClB/8b,EAAMule,mBACNvle,EAAMule,kBAAmB,EACzBvle,EAAM+le,0BAGdznhB,KAAK6gY,cAAa,KAEtBkmJ,EAAwBr0f,UAAU+0f,qBAAuB,WACjDznhB,KAAKgnhB,WACLhnhB,KAAKinhB,kBAAmB,EAGvBjnhB,KAAK0nhB,gBAGN1nhB,KAAK0nhB,cAAcxmgB,SACnBlhB,KAAK0nhB,cAAcxmgB,UAEvBlhB,KAAK0nhB,mBAAgBjjhB,EACrB2tG,GAAE4uR,aAAahhY,KAAKknhB,mBAExBH,EAAwBr0f,UAAU69d,YAAc,WAC5Cvwf,KAAKynhB,uBACLznhB,KAAK6gY,cAAa,IAEtBkmJ,EAAwBr0f,UAAUxR,QAAU,WACxClhB,KAAKynhB,uBACLjvc,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAIlC+mhB,EAAwBp8F,SAAW,sNACnCm8F,GAAc,CACVnqI,GAAU,uBACXoqI,EAAwBr0f,UAAW,0BAAsB,GAC5Do0f,GAAc,CACVnqI,GAAU,yBACXoqI,EAAwBr0f,UAAW,4BAAwB,GAC9Do0f,GAAc,CACV58F,GAAY,oBACb68F,EAAwBr0f,UAAW,uBAAmB,GACzDo0f,GAAc,CACVxqI,IACDyqI,EAAwBr0f,UAAW,gBAAiB,MAChDq0f,EApFkC,CAqF3C30f,IAQEu1f,IACIv+Y,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFo+Y,GAAuD,SAAU/9Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D+9Y,GAAkC,SAAUrvc,GAE5C,SAASqvc,EAAiB/9b,QACP,IAAXA,IAAqBA,EAAS,IAClC,IAAIpoC,EAAQ82B,EAAOtjD,KAAKl1B,KAAM6nhB,EAAiBz3D,YAAYtmY,KAAY9pF,KACvE0hD,EAAMome,yBAA0B,EAChCpme,EAAMqme,wBAAyB,EAC/B,IAA0Br3Y,EAAU5mD,EAAO4mD,QAASx4H,EAAQ4xE,EAAO5xE,MAAO4vgB,EAA0Bh+b,EAAOg+b,wBAAyBC,EAAyBj+b,EAAOi+b,uBAYpK,OAXArme,EAAMkV,MADMkzB,EAAOlzB,MAEnBlV,EAAMsme,cAAgBl+b,EAAOk+b,eAAiB,UAC9Ctme,EAAMgvF,QAAqB,MAAXA,GAAkBA,EAClChvF,EAAMxpC,MAAQA,GAAS,GACvBwpC,EAAMqhP,WAAaj5M,EAAOi5M,YAAc,SACT,MAA3B+kP,IACApme,EAAMome,wBAA0BA,GAEN,MAA1BC,IACArme,EAAMqme,uBAAyBA,GAE5Brme,EAwKX,OA1LAime,GAAYE,EAAkBrvc,GAoB9Bqvc,EAAiBz3D,YAAc,SAAUtmY,GACrC,IAAIk+b,EAAgBl+b,EAAOk+b,eAAiB,UAE5C,MAAO,2BAA8BA,EAAgB,2DAA+DA,EAAgB,+GAAqHA,EAAgB,kHAAwHA,EAAgB,sHAA8HA,EAAgB,yGAA+GA,EAAgB,2LAD9oBl+b,EAAO9iF,WAAa,YACw0B,OAASghhB,EAAgB,4CAEz4BH,EAAiBn1f,UAAUk7Z,cAAgB,WACvC,GAAI5tb,KAAKkY,MAAM/T,OAAQ,CACnB,IAAI8jhB,EAAejohB,KAAKkY,MACxBlY,KAAKkY,MAAQ,GACblY,KAAKwnb,SAASygG,GAElB,IAAI9vK,EAAiBn4W,KAAKoqY,mBAAmBk9B,oBAC7Ctna,KAAKkohB,eAAenzF,SAAS58E,EAAe,UAAW,YACnDn4W,KAAK42D,OACL52D,KAAKmohB,SAASnohB,KAAK42D,OAEnB52D,KAAK0wI,SACL1wI,KAAKoohB,WAAWpohB,KAAK0wI,SAEzB1wI,KAAKqohB,cAAcrohB,KAAK+iS,YACxB/iS,KAAKsohB,oBAAoBtohB,KAAK8nhB,yBAC9B9nhB,KAAKuohB,mBAAmBvohB,KAAK+nhB,wBAC7B/nhB,KAAKwohB,sBACLxohB,KAAKyohB,uBAETZ,EAAiBn1f,UAAU81f,oBAAsB,WAC7C,IAAI9me,EAAQ1hD,KACZA,KAAK0ohB,iBAAiB5wgB,YAAYs6F,GAAE+9R,WAAW,qBAAsBnwY,KAAKoqY,mBAAoB,OAC9FpqY,KAAK2ohB,iBAAiB7wgB,YAAYs6F,GAAE+9R,WAAW,mBAAoBnwY,KAAKoqY,mBAAoB,OAC5FpqY,KAAKymb,4BAA4Bzmb,KAAK4ohB,UAAW,QAAS,WAAc,OAAOlne,EAAMmne,uBAEzFhB,EAAiBn1f,UAAU+1f,oBAAsB,WAC7C,IAAIK,GAAY9ohB,KAAK+nhB,uBACrB31a,GAAEyuR,aAAa7gY,KAAK0ohB,iBAAkBI,IAAa9ohB,KAAKmhK,UACxD/uD,GAAEyuR,aAAa7gY,KAAK2ohB,iBAAkBG,GAAY9ohB,KAAKmhK,UACvD/uD,GAAEyuR,aAAa7gY,KAAK+ohB,SAAU/ohB,KAAKmhK,WAAanhK,KAAK8nhB,0BAEzDD,EAAiBn1f,UAAUgxI,WAAa,WACpC,OAAO1jK,KAAKmhK,UAEhB0mX,EAAiBn1f,UAAU21f,cAAgB,SAAUpjF,GACjD,IAAI/c,EAAOlob,KAAKsmY,SAOhB,OANItmY,KAAK+iS,aAAekiK,GACpB7yV,GAAEiuR,eAAe6nD,EAAM,2BAA6Blob,KAAK+iS,YAE7D/iS,KAAK+iS,WAAakiK,EAElB7yV,GAAE+tR,YAAY+nD,EADD,2BAA6Blob,KAAK+iS,YAExC/iS,MAEX6nhB,EAAiBn1f,UAAUm2f,kBAAoB,SAAU1nX,GACrD,OAAInhK,KAAK+nhB,wBACL/nhB,KAAKmhK,UAAW,EAChBnhK,KAAKyohB,sBACLr2a,GAAEyuR,aAAa7gY,KAAKqhY,YAAY,GACzBrhY,OAGPA,KAAKmhK,YADTA,EAAuB,MAAZA,EAAmBA,GAAYnhK,KAAKmhK,YAI/CnhK,KAAKmhK,SAAWA,EAChBnhK,KAAKyohB,sBACLr2a,GAAEyuR,aAAa7gY,KAAKqhY,WAAYlgO,GAK5BnhK,KAAKy4V,cAJLz4V,KAAKmhK,SACS,CACVzgK,KAAM,YAKI,CACVA,KAAM,eAbHV,OAmBf6nhB,EAAiBn1f,UAAU80Z,SAAW,SAAUtva,GAC5C,IAAIwpC,EAAQ1hD,KACZkY,EAAM7E,QAAQ,SAAU/B,GAAQ,OAAOowC,EAAM84G,QAAQlpJ,MAEzDu2gB,EAAiBn1f,UAAU8nI,QAAU,SAAUlpJ,GAC3C,IAAI+G,EAAYrY,KAAKqhY,WACjB5uV,EAAKnhC,aAAgB8gB,GAAY9gB,EAAKg1X,SAAWh1X,EACrD8gG,GAAE+tR,YAAY1tV,EAAI,iBAClB2/D,GAAE+tR,YAAY1tV,EAAI,MAAQzyC,KAAKgohB,cAAgB,eAC/C3vgB,EAAUP,YAAY26B,GACtBzyC,KAAKkY,MAAMtU,KAAK6uC,IAEpBo1e,EAAiBn1f,UAAUs2f,SAAW,SAAUh8V,EAAMrjL,GAElDyoG,GAAEmuR,oBADevgY,KAAKkY,MAAMvO,GACM,YAAaqjL,IAEnD66V,EAAiBn1f,UAAUy1f,SAAW,SAAUvxd,GAE5C,OADA52D,KAAKiphB,OAAO/sP,UAAYtlO,EACjB52D,MAEX6nhB,EAAiBn1f,UAAUw2f,sBAAwB,SAAUv1J,GACzDvhR,GAAE+tR,YAAYngY,KAAK4ohB,UAAWj1J,IAElCk0J,EAAiBn1f,UAAU01f,WAAa,SAAU13Y,EAASy4Y,GAOvD,OANAnphB,KAAK0wI,QAAUA,EACf1wI,KAAKophB,wBACLpphB,KAAK6ohB,kBAAkBn4Y,GAClBy4Y,GACDnphB,KAAKkohB,eAAe5zY,SAAS5D,GAE1B1wI,MAEX6nhB,EAAiBn1f,UAAU22f,UAAY,WACnC,OAAOrphB,KAAK0wI,SAEhBm3Y,EAAiBn1f,UAAU42f,eAAiB,SAAUjkF,GAClD,IAAI3jZ,EAAQ1hD,KAKZ,OAJAA,KAAKkohB,eAAehzF,cAAc,SAAUuiC,GACxC/1a,EAAM0me,WAAW3wD,GAAc,GAC/BpyB,EAAWoyB,KAERz3d,MAEX6nhB,EAAiBn1f,UAAU41f,oBAAsB,SAAUt7V,GAIvD,OAHAhtL,KAAK8nhB,wBAA0B96V,EAC/BhtL,KAAKyohB,sBACLzohB,KAAKophB,wBACEpphB,MAEX6nhB,EAAiBn1f,UAAU61f,mBAAqB,SAAUv7V,GAKtD,OAJAhtL,KAAK+nhB,uBAAyB/6V,EAC1BA,GACAhtL,KAAK6ohB,mBAAkB,GAEpB7ohB,MAEX6nhB,EAAiBn1f,UAAU02f,sBAAwB,WAC/Ch3a,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,eAAgBtmY,KAAK0wI,SAC1Dt+B,GAAEmuR,oBAAoBvgY,KAAK4ohB,UAAW,8BAA+B5ohB,KAAK8nhB,0BAA4B9nhB,KAAK0wI,SAC3Gt+B,GAAEmuR,oBAAoBvgY,KAAKqhY,WAAY,+BAAgCrhY,KAAK0wI,UAEhFk3Y,GAAc,CACVjrI,GAAU,uBACXkrI,EAAiBn1f,UAAW,0BAAsB,GACrDk1f,GAAc,CACV19F,GAAY,cACb29F,EAAiBn1f,UAAW,iBAAa,GAC5Ck1f,GAAc,CACV19F,GAAY,qBACb29F,EAAiBn1f,UAAW,wBAAoB,GACnDk1f,GAAc,CACV19F,GAAY,qBACb29F,EAAiBn1f,UAAW,wBAAoB,GACnDk1f,GAAc,CACV19F,GAAY,aACb29F,EAAiBn1f,UAAW,gBAAY,GAC3Ck1f,GAAc,CACV19F,GAAY,mBACb29F,EAAiBn1f,UAAW,sBAAkB,GACjDk1f,GAAc,CACV19F,GAAY,WACb29F,EAAiBn1f,UAAW,cAAU,GACzCk1f,GAAc,CACV19F,GAAY,eACb29F,EAAiBn1f,UAAW,kBAAc,GAC7Ck1f,GAAc,CACVtrI,IACDurI,EAAiBn1f,UAAW,gBAAiB,MACzCm1f,EA3L2B,CA4LpCz1f,IAQEm3f,IACIngZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFggZ,GAAuD,SAAU3/Y,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D2/Y,GAAyB,SAAUjxc,GAEnC,SAASixc,EAAQrxf,GACb,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,KAAMyphB,EAAQr5D,YAAYh4b,KAAYp4B,KAgB9D,OAfA0hD,EAAMgoe,UAAW,EACjBhoe,EAAMioe,YAAa,EACnBjoe,EAAMkoe,kBAAoB,CACtBruf,EAAG,EACHjW,EAAG,GAEPo8B,EAAM13C,SAAW,CACbuxB,EAAG,EACHjW,EAAG,GAEPo8B,EAAMvhB,KAAO,CACTz2B,WAAOjF,EACP+F,YAAQ/F,GAEZi9C,EAAMtpB,OAASA,EACRspB,EA4TX,OA9UA6ne,GAAYE,EAASjxc,GAoBrBixc,EAAQr5D,YAAc,SAAUh4b,GAC5B,IAAI4vf,EAAiB5vf,GAAUA,EAAO4vf,eAAkB,UACxD,MAAO,2BAA8BA,EAAgB,yFAAiGA,EAAgB,6GAAmHA,EAAgB,qHAA2HA,EAAgB,mIAAyIA,EAAgB,kDAEjlByB,EAAQ/2f,UAAUk7Z,cAAgB,WAC9B,IAAIlsY,EAAQ1hD,KACR2K,EAAK3K,KAAKo4B,OAAQnZ,EAAYtU,EAAGsU,UAAWyqgB,EAAW/+gB,EAAG++gB,SAAUG,EAAel/gB,EAAGk/gB,aAAcjzd,EAAQjsD,EAAGisD,MAAO7uB,EAAWp9B,EAAGo9B,SAAUr+B,EAAQiB,EAAGjB,MAAOs+B,EAAYr9B,EAAGq9B,UAAWx9B,EAASG,EAAGH,OAAQksH,EAAW/rH,EAAG+rH,SAAUn7F,EAAI5wB,EAAG4wB,EAAGjW,EAAI3a,EAAG2a,EACvP4ia,EAAOlob,KAAKsmY,SACZrnX,GACAjf,KAAK8phB,iBAAiB7qgB,GAErB4qgB,EAODz3a,GAAE+tR,YAAYngY,KAAK4ohB,UAAW,cAN1Bhyd,GACA52D,KAAKmohB,SAASvxd,GAElB52D,KAAK+phB,YAAwB,MAAZL,EAAmBA,EAAW1phB,KAAK0phB,WAKxD1phB,KAAKymb,4BAA4Bzmb,KAAK4ohB,UAAW,YAAa,SAAU30f,GACpE,GAAIi0Z,EAAKt7Z,SAASqH,EAAEq1F,gBAChB4+T,EAAKt7Z,SAAS+d,SAASlgB,gBACvBi3B,EAAMsoe,iBAAiBp9f,SAASqH,EAAEzH,QAClCyH,EAAE/G,qBAHN,CAMA,IAAIu+Z,EAAU/pY,EAAMuoe,gBAAgB7+gB,cAAc,uDAC9Cqgb,GACAA,EAAQ38Z,WAGZ9uB,KAAK2phB,aAGT3phB,KAAKgoC,UAAyB,MAAbA,EAAoBA,EAAY,IACjDhoC,KAAK+nC,SAAuB,MAAZA,EAAmBA,EAAW,IAC9C/nC,KAAKm1W,YAAcn1W,KAAKird,aAAahyC,iBACjCvva,GACA1J,KAAK0kN,SAASh7M,GAEdc,GACAxK,KAAKmjV,UAAU34U,GAEfxK,KAAKkqhB,iBACLlqhB,KAAKkqhB,kBAEJxghB,GAAUc,GACXxK,KAAKmqhB,cAELzzZ,EACA12H,KAAKoxD,UAEA71B,GAAKjW,IACVtlB,KAAKoqhB,cAAc7uf,EAAGjW,GAE1BtlB,KAAK2phB,YAAa,EAClB3phB,KAAKiqhB,gBAAgB1+gB,MAAMf,OAAS,MAExCi/gB,EAAQ/2f,UAAUw3f,gBAAkB,WAChC,IAAIxoe,EAAQ1hD,KACRkob,EAAOlob,KAAKsmY,SAChB4hD,EAAKp5Z,QACL9uB,KAAKslC,MAAQ,WACT4iZ,EAAKt/Y,cAAcnnB,YAAYyma,GAC/BxmY,EAAMxgC,YAGduogB,EAAQ/2f,UAAU23f,wBAA0B,SAAU9uf,EAAGjW,GACrDtlB,KAAK4phB,kBAAoB,CAAEruf,EAAGA,EAAGjW,EAAGA,IAExCmkgB,EAAQ/2f,UAAU43f,uBAAyB,SAAUxgc,GACjD,IAAI6+a,EAAa3ogB,KAAKm1W,YAAY1qW,wBAC9BwpB,EAAI61D,EAAO71D,EAAGypU,EAAS5zQ,EAAO4zQ,OAAQF,EAAQ1zQ,EAAO0zQ,MAAO+sL,EAAiBzgc,EAAOygc,eAAgBC,EAAY1gc,EAAO0gc,UACvHC,EAAYx2f,EAAEyuK,QAAU1iM,KAAK4phB,kBAAkBruf,EAC/Cmvf,EAAYz2f,EAAE0uK,QAAU3iM,KAAK4phB,kBAAkBtkgB,EAC/C5b,EAAQ1J,KAAKo3E,WACb5sE,EAASxK,KAAKs3E,YAEdqzc,EAAShiB,EAAW18f,MAAQgoB,EAAEyuK,SAAW1iM,KAAKgK,SAASuxB,GAAK,GAC5Dote,EAAWz8f,OAAS+nB,EAAEyuK,SAAWimU,EAAWz8f,OAASlM,KAAKgK,SAASuxB,EAAIote,EAAW18f,KAAOvC,EAoD7F,OAnDKihhB,IAEGA,EADAjtL,EAIC+sL,EAAY,GAAKx2f,EAAEyuK,QAAU1iM,KAAKgK,SAASuxB,EAAIote,EAAW18f,MAGtDw+gB,EAAY,GAAKx2f,EAAEyuK,QAAU1iM,KAAKgK,SAASuxB,EAAIote,EAAW18f,KAG3Ds+gB,EAGUE,EAAY,GAAKx2f,EAAEyuK,QAAU1iM,KAAKgK,SAASuxB,EAAIote,EAAW18f,KAAOvC,GACtE+ghB,EAAY,GAAKx2f,EAAEyuK,QAAU1iM,KAAKgK,SAASuxB,EAAIote,EAAW18f,KAO9Dw+gB,EAAY,GAAKx2f,EAAEyuK,QAAU1iM,KAAKgK,SAASuxB,EAAIote,EAAW18f,KAAOvC,GAG7D+ghB,EAAY,GAAKx2f,EAAEyuK,QAAU1iM,KAAKgK,SAASuxB,EAAIote,EAAW18f,KAAOvC,GA0B3E,CAAE+ghB,UAtBTA,EAAYE,EAAQ,EAAIF,EAsBOC,UAD/BA,EAlBA/hB,EAAW58f,KAAOkoB,EAAE0uK,SAAW3iM,KAAKgK,SAASsb,GAAK,GAC9Cqjf,EAAW38f,QAAUioB,EAAE0uK,SAAWgmU,EAAW38f,QAAUhM,KAAKgK,SAASsb,EAAIqjf,EAAW58f,IAAMvB,GAC1FgzV,IAICktL,EAAY,GAAKz2f,EAAE0uK,QAAU3iM,KAAKgK,SAASsb,EAAIqjf,EAAW58f,KAAOy+gB,GAAa,IAG1EE,EAAY,GAAKz2f,EAAE0uK,QAAU3iM,KAAKgK,SAASsb,EAAIqjf,EAAW58f,OAE9DyxV,IAGAktL,EAAY,GAAKz2f,EAAE0uK,QAAU3iM,KAAKgK,SAASsb,EAAIqjf,EAAW58f,IAAMvB,GAG5DkghB,EAAY,GAAKz2f,EAAE0uK,QAAU3iM,KAAKgK,SAASsb,EAAIqjf,EAAW58f,IAAMvB,GACrD,EAAIkghB,IAG5BjB,EAAQ/2f,UAAUy3f,YAAc,WAC5B,IAAIx/gB,EAAK3K,KAAKmgC,KAAwB31B,EAASG,EAAGH,OAAtBG,EAAGjB,OAE3B1J,KAAK0kN,SAAS1kN,KAAKsmY,SAASxzT,aAE3BtoE,GACDxK,KAAKmjV,UAAUnjV,KAAKsmY,SAAS70W,eAGrCg4f,EAAQ/2f,UAAU03f,cAAgB,SAAU7uf,EAAGjW,QACjC,IAANiW,IAAgBA,EAAI,QACd,IAANjW,IAAgBA,EAAI,GACxB,IAAI+lc,EAASrrd,KAAKsmY,SAClBtmY,KAAKird,aAAai+C,cAAc,CAC5B79C,OAAQA,EACR9vb,EAAGA,EACHjW,EAAGA,EACHyiB,SAAU/nC,KAAK+nC,SACfC,UAAWhoC,KAAKgoC,UAChB8tb,kBAAkB,IAEtB91d,KAAKgK,SAASuxB,EAAIiU,SAAS67a,EAAO9/c,MAAMU,KAAM,IAC9CjM,KAAKgK,SAASsb,EAAIkqB,SAAS67a,EAAO9/c,MAAMQ,IAAK,KAEjD09gB,EAAQ/2f,UAAU4kD,UAAY,WAC1B,OAAOt3E,KAAKmgC,KAAK31B,QAErBi/gB,EAAQ/2f,UAAUywT,UAAY,SAAU34U,GACpC,IAAI09a,EAAOlob,KAAKsmY,SACZskJ,GAAY,EAChB,GAAsB,iBAAXpghB,IAAgD,IAAzBA,EAAOvB,QAAQ,KAC7CmpG,GAAEuvR,eAAeumD,EAAM19a,GACvBA,EAAS4nG,GAAEkwR,kBAAkB4lD,GAC7B0iG,GAAY,MAEX,CACDpghB,EAAS+T,KAAKukC,IAAI9iD,KAAKgoC,UAAWx9B,GAClC,IAAIilG,EAAey4U,EAAKz4U,aACpBA,GAAgBA,EAAa58B,cAAiBroE,EAASxK,KAAKgK,SAASsb,EAAImqF,EAAa58B,eACtFroE,EAASilG,EAAa58B,aAAe7yE,KAAKgK,SAASsb,GAGvDtlB,KAAKmgC,KAAK31B,SAAWA,IAGzBxK,KAAKmgC,KAAK31B,OAASA,EACdoghB,GAID1iG,EAAK38a,MAAM08B,UAAY,QACvBigZ,EAAK38a,MAAMy8B,UAAY,SAJvBoqE,GAAEuvR,eAAeumD,EAAM19a,KAO/Bi/gB,EAAQ/2f,UAAU0kD,SAAW,WACzB,OAAOp3E,KAAKmgC,KAAKz2B,OAErB+/gB,EAAQ/2f,UAAUgyL,SAAW,SAAUh7M,GACnC,IAAIw+a,EAAOlob,KAAKsmY,SACZskJ,GAAY,EAChB,GAAqB,iBAAVlhhB,IAA8C,IAAxBA,EAAMT,QAAQ,KAC3CmpG,GAAEqvR,cAAcymD,EAAMx+a,GACtBA,EAAQ0oG,GAAEmwR,iBAAiB2lD,GAC3B0iG,GAAY,MAEX,CACDlhhB,EAAQ6U,KAAKukC,IAAI9iD,KAAK+nC,SAAUr+B,GAChC,IAAI+lG,EAAey4U,EAAKz4U,aACpBA,GAAgBA,EAAa18B,aAAgBrpE,EAAQ1J,KAAKgK,SAASuxB,EAAIk0E,EAAa18B,cACpFrpE,EAAQ+lG,EAAa18B,YAAc/yE,KAAKgK,SAASuxB,GAGrDv7B,KAAKmgC,KAAKz2B,QAAUA,IAGxB1J,KAAKmgC,KAAKz2B,MAAQA,EACbkhhB,GAID1iG,EAAK38a,MAAM21B,SAAW,QACtBgnZ,EAAK38a,MAAMw8B,SAAW,SAJtBqqE,GAAEqvR,cAAcymD,EAAMx+a,KAO9B+/gB,EAAQ/2f,UAAU0+B,OAAS,WACvB,IAAI82X,EAAOlob,KAAKsmY,SACZ/qW,EAAK2sZ,EAAKz4U,aAAa18B,YAAc,EAAM/yE,KAAKo3E,WAAa,EAC7D9xD,EAAK4ia,EAAKz4U,aAAa58B,aAAe,EAAM7yE,KAAKs3E,YAAc,EACnEt3E,KAAKoqhB,cAAc7uf,EAAGjW,IAE1BmkgB,EAAQ/2f,UAAUq3f,YAAc,SAAUL,GAItC,GAHIA,IAAa1phB,KAAK0phB,WAClB1phB,KAAK0phB,SAAWA,GAEhBA,EAAU,CACV,IAAImB,EAAkB7qhB,KAAK6qhB,gBAAkB,IAAIz4f,GAAUq3f,EAAQqB,oBACnE9qhB,KAAKqkJ,aAAa+1P,SAASywI,IACvB3iG,EAAO2iG,EAAgBvkJ,UACtBxuX,YAAYs6F,GAAE+tR,YAAY/tR,GAAEw9R,iBAAiB,QAAS5vY,KAAKoqY,oBAAqB,mCACrFpqY,KAAK+qhB,kBAAkBF,GACvBA,EAAgBpkG,4BAA4ByB,EAAM,QAASlob,KAAKgrhB,UAAUzgf,KAAKvqC,YAE9E,GAAIA,KAAK6qhB,gBAAiB,CAC3B,IAAI3iG,KAAOlob,KAAK6qhB,gBAAgBvkJ,UAC3B19V,cAAcnnB,YAAYyma,GAC/Blob,KAAK6qhB,gBAAgB3pgB,UACrBlhB,KAAK6qhB,qBAAkBpmhB,IAG/BglhB,EAAQ/2f,UAAUo3f,iBAAmB,SAAUmB,GAC3CA,EAAcliG,mBAAmB/ob,MACjCA,KAAKiqhB,gBAAgBnygB,YAAYmzgB,EAAc3kJ,WAEnDmjJ,EAAQ/2f,UAAUq4f,kBAAoB,SAAUxrc,EAAQv1E,GACpD,IAAIgghB,EAAmBhqhB,KAAKgqhB,iBACxBxlP,EAAUwlP,EAAiBlihB,SAC3BwvC,EAAMktP,EAAQrgS,OACF,MAAZ6F,IACAA,EAAWstC,GAEfttC,EAAWuU,KAAKukC,IAAI,EAAGvkC,KAAKG,IAAI1U,EAAUstC,IAC1C,IAAI4wY,EAAO3oW,EAAO+mT,SAClBl0R,GAAE+tR,YAAY+nD,EAAM,6BACH,IAAbl+a,EACAgghB,EAAiBhnJ,sBAAsB,aAAcklD,GAEhDl+a,IAAastC,EAClB0ye,EAAiBhnJ,sBAAsB,YAAaklD,GAGpD1jJ,EAAQx6R,EAAW,GAAGg5X,sBAAsB,WAAYklD,GAE5D3oW,EAAOwpW,mBAAmB/ob,OAE9ByphB,EAAQ/2f,UAAUsrW,cAAgB,WAC9B,OAAO5rR,GAAEgwR,eAAepiY,KAAKiqhB,kBAEjCR,EAAQ/2f,UAAUqrW,aAAe,WAC7B,OAAO3rR,GAAEiwR,cAAcriY,KAAKiqhB,kBAEhCR,EAAQ/2f,UAAUy1f,SAAW,SAAUvxd,GACnC52D,KAAKiphB,OAAO/sP,UAAYtlO,GAG5B6yd,EAAQ/2f,UAAUs4f,UAAY,WAC1BhrhB,KAAKslC,SAETmkf,EAAQ/2f,UAAUxR,QAAU,WACpBlhB,KAAK6qhB,kBACL7qhB,KAAK6qhB,gBAAgB3pgB,UACrBlhB,KAAK6qhB,qBAAkBpmhB,GAE3B,IAAIyjb,EAAOlob,KAAKsmY,SACZ4hD,GAAQA,EAAKz4U,cACbzvG,KAAKslC,QAETkzC,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCyphB,EAAQqB,mBAAqB,gCAC7BtB,GAAc,CACV7sI,GAAU,iBACX8sI,EAAQ/2f,UAAW,oBAAgB,GACtC82f,GAAc,CACV7sI,GAAU,uBACX8sI,EAAQ/2f,UAAW,0BAAsB,GAC5C82f,GAAc,CACVt/F,GAAY,oBACbu/F,EAAQ/2f,UAAW,uBAAmB,GACzC82f,GAAc,CACVt/F,GAAY,cACbu/F,EAAQ/2f,UAAW,iBAAa,GACnC82f,GAAc,CACVt/F,GAAY,qBACbu/F,EAAQ/2f,UAAW,wBAAoB,GAC1C82f,GAAc,CACVt/F,GAAY,WACbu/F,EAAQ/2f,UAAW,cAAU,GAChC82f,GAAc,CACVltI,IACDmtI,EAAQ/2f,UAAW,gBAAiB,MAChC+2f,EA/UkB,CAgV3Br3f,IAQE84f,IACI9hZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnF2hZ,GAA0B,SAAU3yc,GAEpC,SAAS2yc,EAAS/yf,GACd,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,KAAMo4B,IAAWp4B,KAiBzC,OAhBA0hD,EAAM0pe,gBAAkB,uuBACxB1pe,EAAM2pe,sBAAwB,wCAC9B3pe,EAAMuwT,UAAY,GAClBvwT,EAAM4pe,SAAU,EAChB5pe,EAAM0hW,UAAW,EACjB1hW,EAAM6pe,eAAgB,EACtB7pe,EAAM8pe,aAAc,EACpB9pe,EAAM+pe,kBAAoB,GAC1B/pe,EAAMgqe,sBAAwB,KAC9Bhqe,EAAMorD,YAAa,EACnBprD,EAAMiqe,aAAe,CACjBpwf,EAAG,EACHjW,EAAG,EACH5b,MAAO,EACPc,OAAQ,GAELk3C,EAoRX,OAvSAwpe,GAAYC,EAAU3yc,GAqBtB2yc,EAASz4f,UAAUk7Z,cAAgB,WAC/B,IAAIlsY,EAAQ1hD,KACRkob,EAAOlob,KAAKsmY,SACZ37X,EAAK3K,KAAKo4B,OAAQkzf,EAAU3ghB,EAAG2ghB,QAASr5K,EAAYtnW,EAAGsnW,UAAW25K,EAAcjhhB,EAAGihhB,YACvFx5a,GAAE+tR,YAAY+nD,EAAM,aACpBlob,KAAK6rhB,YAAc7rhB,KAAK4ohB,UACxBpwc,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MACpCA,KAAKymb,4BAA4ByB,EAAM,UAAW,SAAUj0Z,GACpDi0Z,EAAKt7Z,SAASqH,EAAEq1F,gBAGpB5nE,EAAMupa,aAAak/C,kBAAkBjiF,KAErCojG,GACAtrhB,KAAK8rhB,WAAWR,GAEhBM,GACA5rhB,KAAK+rhB,eAAeH,GAExB5rhB,KAAKgshB,cACD/5K,GACAjyW,KAAKishB,aAAah6K,IAG1Bk5K,EAASz4f,UAAUw3f,gBAAkB,WACjC,IAAIhiG,EAAOlob,KAAKsmY,SACZ37X,EAAK3K,KAAKo4B,OAAQ4xe,EAAcr/f,EAAGq/f,YACvChqgB,KAAKslC,MAAQtlC,KAAKird,aAAaC,SAD6Bvgd,EAAG+xR,MAChBwrJ,GAAM,EAAMlob,KAAKkhB,QAAQqpB,KAAKvqC,WAAOyE,EAAWulgB,GAC/F9hF,EAAKp5Z,SAETq8f,EAASz4f,UAAUs5f,YAAc,WAC7B,IAAI9jG,EAAOlob,KAAKsmY,SAChB,GAAK4hD,EAAL,CAGA,IACIgkG,GADS,IAAI51P,WACKC,gBAAgBv2R,KAAKorhB,gBAAiB,aAAatof,KACzEolZ,EAAKpwa,YAAYo0gB,EAASx3c,YAC1B10E,KAAKmshB,cAEThB,EAASz4f,UAAUy5f,UAAY,WAC3B,IAAIjkG,EAAOlob,KAAKsmY,SAChBtmY,KAAKoshB,WAAa,CACdC,QAAS,CAAEhhhB,QAAS68a,EAAK98a,cAAc,0BACvCW,IAAK,CAAEV,QAAS68a,EAAK98a,cAAc,sBACnCkhhB,SAAU,CAAEjhhB,QAAS68a,EAAK98a,cAAc,2BACxCc,MAAO,CAAEb,QAAS68a,EAAK98a,cAAc,wBACrCmhhB,YAAa,CAAElhhB,QAAS68a,EAAK98a,cAAc,8BAC3CY,OAAQ,CAAEX,QAAS68a,EAAK98a,cAAc,yBACtCohhB,WAAY,CAAEnhhB,QAAS68a,EAAK98a,cAAc,6BAC1Ca,KAAM,CAAEZ,QAAS68a,EAAK98a,cAAc,yBAG5C+/gB,EAASz4f,UAAU+5f,kBAAoB,SAAUjjD,GAC7C,OAAOxpe,KAAKoshB,WAAW5iD,GAAMn+d,SAEjC8/gB,EAASz4f,UAAUknd,cAAgB,SAAU3ld,GACzCj0B,KAAK8sG,YAAa,EAClB9sG,KAAKqqhB,wBAAwBp2f,EAAEyuK,QAASzuK,EAAE0uK,UAE9CwoV,EAASz4f,UAAU2wM,SAAW,SAAUpvM,EAAGu1c,GACvC,GAAKxpe,KAAK8sG,WAAV,CAGA,IAAI4wP,IAAW8rI,EAAKl4b,MAAM,SACtBsnO,IAAY4wN,EAAKl4b,MAAM,UACvBksT,IAAUgsI,EAAKl4b,MAAM,QACrBmsT,IAAa+rI,EAAKl4b,MAAM,WACxB+kC,EAAeqnR,GAAU9kF,EACzBtiM,EAAaknR,GAASC,EACtB9yV,EAAK3K,KAAKsqhB,uBAAuB,CAAEr2f,EAAGA,EAAGypU,OAAQA,EAAQF,MAAOA,IAAUitL,EAAY9/gB,EAAG8/gB,UAAWC,EAAY//gB,EAAG+/gB,UACnHgC,EAAa,EACbl7f,EAAY,EAChB,GAAI6kD,GAAgBo0c,EAAW,CAC3B,IAAIzjhB,EAAY02V,GAAU,EAAI,EAC1BivL,EAAW3shB,KAAKo3E,WAChBgiV,EAAWuzH,EAAYlC,EAAYzjhB,EACnC4lhB,GAAY,EACZlvL,IAEI19V,KAAKgK,SAASuxB,GADlBmxf,EAAaC,EAAWvzH,IACY,GAAKA,GAAYp5Z,KAAK+nC,YACtD6kf,GAAY,EACZF,EAAa,GAGhBE,GACD5shB,KAAK0kN,SAAS00M,GAGtB,GAAI9iV,GAAco0c,EAAW,CACrB1jhB,EAAYw2V,GAAS,EAAI,EAA7B,IACIqvL,EAAY7shB,KAAKs3E,YACjBsvc,EAAYiG,EAAanC,EAAY1jhB,EACrC8lhB,GAAa,EACbtvL,IAEIx9V,KAAKgK,SAASsb,GADlBkM,EAAYq7f,EAAYjG,IACW,GAAKA,GAAa5mhB,KAAKgoC,aACtD8kf,GAAa,EACbt7f,EAAY,GAGfs7f,GACD9shB,KAAKmjV,UAAUyjM,GAGvB5mhB,KAAKqqhB,wBAAwBp2f,EAAEyuK,QAASzuK,EAAE0uK,UACtC+pV,GAAcl7f,IACdxxB,KAAKoqhB,cAAcpqhB,KAAKgK,SAASuxB,EAAImxf,EAAY1shB,KAAKgK,SAASsb,EAAIkM,KAG3E25f,EAASz4f,UAAUond,YAAc,WAC7B95e,KAAK8sG,YAAa,EAClB,IAAIhjB,EAAS,CACTppF,KAAM,SACNupX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,gBAEvCh1Y,KAAKy4V,cAAc3uQ,IAEvBqhc,EAASz4f,UAAUq6f,YAAc,SAAU94f,GACvCj0B,KAAKojZ,UAAW,EAChBpjZ,KAAKqqhB,wBAAwBp2f,EAAEyuK,QAASzuK,EAAE0uK,UAE9CwoV,EAASz4f,UAAUs6f,OAAS,SAAU/4f,GAClC,GAAKj0B,KAAKojZ,SAAV,CAGA,IAAIz4Y,EAAK3K,KAAKgK,SAAUuxB,EAAI5wB,EAAG4wB,EAAGjW,EAAI3a,EAAG2a,EACrC1a,EAAK5K,KAAKsqhB,uBAAuB,CACjCr2f,EAAGA,EACHupU,OAAO,EACP+sL,gBAAgB,EAChBC,UAAWxqhB,KAAKs3E,YAAct3E,KAAKg+X,kBAEvCh+X,KAAKoqhB,cAAc7uf,EADH3wB,EAAG6/gB,UACenlgB,EADQ1a,EAAG8/gB,WAE7C1qhB,KAAKqqhB,wBAAwBp2f,EAAEyuK,QAASzuK,EAAE0uK,WAE9CwoV,EAASz4f,UAAUu6f,UAAY,WAC3BjthB,KAAKojZ,UAAW,GAEpB+nI,EAASz4f,UAAUw6f,eAAiB,WAChC,GAAIlthB,KAAKwrhB,YAAa,CAClB,IAAI7ghB,EAAK3K,KAAK2rhB,aAAcpwf,EAAI5wB,EAAG4wB,EAAGjW,EAAI3a,EAAG2a,EAAqB9a,EAASG,EAAGH,OAC9ExK,KAAK0kN,SADmD/5M,EAAGjB,OAE3D1J,KAAKmjV,UAAU34U,GACfxK,KAAKoqhB,cAAc7uf,EAAGjW,QAGtBtlB,KAAK2rhB,aAAajihB,MAAQ1J,KAAKo3E,WAC/Bp3E,KAAK2rhB,aAAanhhB,OAASxK,KAAKs3E,YAChCt3E,KAAK2rhB,aAAapwf,EAAIv7B,KAAKgK,SAASuxB,EACpCv7B,KAAK2rhB,aAAarmgB,EAAItlB,KAAKgK,SAASsb,EACpCtlB,KAAKoqhB,cAAc,EAAG,GACtBpqhB,KAAKmjV,UAAU,QACfnjV,KAAK0kN,SAAS,QAElB1kN,KAAKwrhB,aAAexrhB,KAAKwrhB,YACzBxrhB,KAAKmthB,uBAEThC,EAASz4f,UAAUy6f,oBAAsB,WACrC/6a,GAAEmuR,oBAAoBvgY,KAAKothB,aAAc,YAAapthB,KAAKwrhB,aAC3Dp5a,GAAEmuR,oBAAoBvgY,KAAKqthB,aAAc,aAAcrthB,KAAKwrhB,cAEhEL,EAASz4f,UAAU46f,0BAA4B,WACvCtthB,KAAKyrhB,kBAAkBtnhB,SACvBnE,KAAKyrhB,kBAAkBp4gB,QAAQ,SAAUk6gB,GAAmB,OAAOA,MACnEvthB,KAAKyrhB,kBAAkBtnhB,OAAS,GAEhCnE,KAAK0rhB,wBACL1rhB,KAAK0rhB,wBACL1rhB,KAAK0rhB,sBAAwB,OAGrCP,EAASz4f,UAAUxR,QAAU,WACzBlhB,KAAKishB,cAAa,GAClBjshB,KAAK8rhB,YAAW,GACZ9rhB,KAAKwthB,qBACLxthB,KAAKwthB,mBAAmBtsgB,UACxBlhB,KAAKwthB,wBAAqB/ohB,GAE9BzE,KAAKsthB,4BACL90c,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCmrhB,EAASz4f,UAAUu5f,aAAe,SAAUh6K,GACxC,IAAIvwT,EAAQ1hD,KACa,kBAAdiyW,IACPA,EAAY,CACRo6K,QAASp6K,EACTlmW,IAAKkmW,EACLq6K,SAAUr6K,EACV/lW,MAAO+lW,EACPs6K,YAAat6K,EACbjmW,OAAQimW,EACRu6K,WAAYv6K,EACZhmW,KAAMgmW,IAGdz1V,OAAOC,KAAKw1V,GAAW5+V,QAAQ,SAAUm2d,GACrC,IACI5kd,EAAI4kd,EACJl7b,IAFI2jU,EAEMrtV,GACV6tB,EAAKiP,EAAM+qe,kBAAkB7ngB,GAC7BklE,EAASpoC,EAAM0qe,WAAWxngB,GAAGg9b,YAAc,CAC3Cx+E,SAAU3wV,EACVsva,YAAarga,EAAMk4b,cAAcrvc,KAAKmX,GACtCuga,WAAY,SAAUhub,GAAK,OAAOytB,EAAM2hL,SAASpvM,EAAGrP,IACpDo9b,WAAYtga,EAAMo4b,YAAYvvc,KAAKmX,MAEjCA,EAAMuwT,UAAUrtV,KAAO0pB,IAASoT,EAAM41S,WAAchpT,KAClDA,GACAoT,EAAMwga,YAAYP,cAAc73X,GAChCr3C,EAAGlnC,MAAMmiJ,cAAgB,QAGzBhsG,EAAMwga,YAAYC,iBAAiBr4X,GACnCr3C,EAAGlnC,MAAMmiJ,cAAgB,QAE7BhsG,EAAM0qe,WAAWxngB,GAAGg9b,WAAatza,EAAMw7C,OAASrlF,MAI5D0mhB,EAASz4f,UAAUo5f,WAAa,SAAUR,GACtC,GAAIA,IAAYtrhB,KAAKsrhB,QAArB,CAGAtrhB,KAAKsrhB,QAAUA,EACf,IAAIxhc,EAAS9pF,KAAKythB,yBAA2B,CACzCrqJ,SAAUpjY,KAAK6rhB,YACf9pE,YAAa/hd,KAAK+shB,YAAYxif,KAAKvqC,MACnCiid,WAAYjid,KAAKgthB,OAAOzif,KAAKvqC,MAC7Bgid,WAAYhid,KAAKithB,UAAU1if,KAAKvqC,OAEhCsrhB,GACAtrhB,KAAKkid,YAAYP,cAAc73X,GAC/B9pF,KAAKythB,wBAA0B3jc,IAG/B9pF,KAAKkid,YAAYC,iBAAiBr4X,GAClC9pF,KAAKythB,6BAA0BhphB,KAGvC0mhB,EAASz4f,UAAUq5f,eAAiB,SAAUH,GAC1C,IAAIlqe,EAAQ1hD,KACZ,IAAoB,IAAhB4rhB,EAMA,OALA5rhB,KAAKsthB,iCACDtthB,KAAKwthB,qBACLxthB,KAAKwthB,mBAAmBtsgB,UACxBlhB,KAAKwthB,mBAAqBxthB,KAAKothB,aAAepthB,KAAKqthB,kBAAe5ohB,IAI1E,IAAImkhB,EAAY5ohB,KAAK4ohB,UACrB,GAAKA,GAAagD,IAAgB5rhB,KAAKurhB,cAAvC,CAGA,IAAIiC,EAAqBxthB,KAAKwthB,mBAAqB,IAAIp7f,GAAUpyB,KAAKqrhB,uBACtErrhB,KAAKqkJ,aAAa+1P,SAASozI,GAC3B,IAAItlG,EAAOslG,EAAmBlnJ,SAC9B4hD,EAAKpwa,YAAY9X,KAAKothB,aAAeh7a,GAAEw9R,iBAAiB,WAAY5vY,KAAKoqY,qBACzEh4R,GAAE+tR,YAAYngY,KAAKothB,aAAc,kCACjCllG,EAAKpwa,YAAY9X,KAAKqthB,aAAej7a,GAAEw9R,iBAAiB,WAAY5vY,KAAKoqY,qBACzEh4R,GAAE+tR,YAAYngY,KAAKqthB,aAAc,kCACjCj7a,GAAE+tR,YAAYngY,KAAKqthB,aAAc,aACjCG,EAAmB/mG,4BAA4ByB,EAAM,QAASlob,KAAKkthB,eAAe3if,KAAKvqC,OACvFA,KAAK+qhB,kBAAkByC,EAAoB,GAC3CxthB,KAAKyrhB,kBAAkB7nhB,KAAK5D,KAAKymb,4BAA4BmiG,EAAW,WAAY5ohB,KAAKkthB,eAAe3if,KAAKvqC,QAC7GA,KAAK0rhB,sBAAwB1rhB,KAAKymb,4BAA4Bzmb,KAAM,SAAU,WAC1E0hD,EAAM8pe,aAAc,EACpB9pe,EAAMyre,0BAxSyC,SAAUtjZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAuSxD4jZ,CAAc,CACV/wI,GAAU,gBACXwuI,EAASz4f,UAAW,mBAAe,GAC/By4f,EAxSmB,CAyS5B1B,IAQEkE,IACIvkZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFokZ,GAAkC,SAAUp1c,GAE5C,SAASo1c,EAAiBx1f,GACtB,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAQjC,OAPA0hD,EAAM75B,UAAY,gBAClB65B,EAAM0kZ,WAAa,QACnB1kZ,EAAMm1O,UAAY,OAClBn1O,EAAMulY,YAAYvlY,EAAMipY,SAASnpb,QAAQ,kBAAmBkgD,EAAM0kZ,aAC9Dhua,IACAspB,EAAMtpB,OAASA,GAEZspB,EASX,OAnBAise,GAAYC,EAAkBp1c,GAY9Bo1c,EAAiBl7f,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GACnD,IAAI6gH,EAAMr1c,EAAO9lD,UAAU4hH,SAASp/G,KAAKl1B,KAAMuB,EAAOyra,GAItD,OAHIhta,KAAK6qb,OAAOtpb,QAAUA,IACtBvB,KAAK6qb,OAAOtpb,MAAQA,GAEjBsshB,GAEJD,EApB2B,CAqBpCnoF,IAQEqoF,IACI1kZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFukZ,GAAiC,SAAUv1c,GAE3C,SAASu1c,EAAgB31f,GACrB,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAQjC,OAPA0hD,EAAM75B,UAAY,eAClB65B,EAAM0kZ,WAAa,WACnB1kZ,EAAMm1O,UAAY,GAClBn1O,EAAMulY,YAAYvlY,EAAMipY,SAASnpb,QAAQ,kBAAmBkgD,EAAM0kZ,aAC9Dhua,IACAspB,EAAMtpB,OAASA,GAEZspB,EAeX,OAzBAose,GAAYC,EAAiBv1c,GAY7Bu1c,EAAgBr7f,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GAClD,IAAI6gH,EAAMr1c,EAAO9lD,UAAU4hH,SAASp/G,KAAKl1B,KAAMuB,EAAOyra,GAEtD,OADAhta,KAAK6qb,OAAOtpb,MAAQA,EACbsshB,GAEXE,EAAgBr7f,UAAU4gb,QAAU,SAAUrrW,GAE1C,OADAjoG,KAAK6qb,OAAO5iV,KAAOA,EACZjoG,MAEX+thB,EAAgBr7f,UAAU6gb,QAAU,SAAUhsc,GAE1C,OADAvH,KAAK6qb,OAAOtjb,KAAOA,EACZvH,MAEJ+thB,EA1B0B,CA2BnCtoF,IAQEuoF,IACI5kZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFykZ,GAAuD,SAAUpkZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DokZ,GAA0B,SAAU11c,GAEpC,SAAS01c,IACL,IAAIxse,EAAQ82B,EAAOtjD,KAAKl1B,KAAMkuhB,EAASvjG,WAAa3qb,KAEpD,OADA0hD,EAAMijZ,eAAiB,MAChBjjZ,EAoEX,OAxEAsse,GAAaE,EAAU11c,GAMvB01c,EAASx7f,UAAU4yQ,KAAO,WACtBlzL,GAAE+tR,YAAYngY,KAAKmuhB,QAAQ7nJ,SAAU,oBAEzC4nJ,EAASx7f,UAAUwia,cAAgB,SAAUmQ,GACzC,IAAI3jZ,EAAQ1hD,KACRouhB,EAAehpF,GAAgBE,cAWnC,OAVAtlc,KAAKymb,4BAA4Bzmb,KAAKw6b,MAAO4zF,EAAc,WACvD,IAAIC,EAAYxggB,WAAW6zB,EAAM84Y,MAAM1+T,YACvCp6E,EAAMyse,QAAQ75Y,SAAS+5Y,EAAUp8f,YAAY,GAC7Coza,EAAWgpF,GAAa,KAE5BruhB,KAAKymb,4BAA4Bzmb,KAAKmuhB,QAASC,EAAc,WACzD,IAAIE,EAAc5se,EAAMyse,QAAQryZ,WAChCp6E,EAAM84Y,MAAMlmT,SAASg6Y,GAAa,GAClCjpF,EAAWx3a,WAAWyggB,MAEnBtuhB,MAEXkuhB,EAASx7f,UAAU67f,eAAiB,SAAU7khB,GAE1C,OADA1J,KAAKmuhB,QAAQzpU,SAASh7M,GACf1J,MAEXkuhB,EAASx7f,UAAU87f,kBAAoB,SAAU9khB,GAE7C,OADA1J,KAAKw6b,MAAM91O,SAASh7M,GACb1J,MAEXkuhB,EAASx7f,UAAU+7f,YAAc,SAAUC,GAGvC,OAFA1uhB,KAAKmuhB,QAAQM,YAAYC,GACzB1uhB,KAAKw6b,MAAMm0F,OAAOD,GACX1uhB,MAEXkuhB,EAASx7f,UAAUk8f,YAAc,SAAUC,GAGvC,OAFA7uhB,KAAKmuhB,QAAQS,YAAYC,GACzB7uhB,KAAKw6b,MAAMs0F,OAAOD,GACX7uhB,MAEXkuhB,EAASx7f,UAAUopG,SAAW,WAC1B,OAAO97H,KAAKw6b,MAAM1+T,YAEtBoyZ,EAASx7f,UAAU4hH,SAAW,SAAU/yI,GACpC,OAAIvB,KAAK87H,aAAev6H,IAGxBvB,KAAKw6b,MAAMlmT,SAAS/yI,GAAO,GAC3BvB,KAAKmuhB,QAAQ75Y,SAAS/yI,GAAO,GAC7BvB,KAAKy4V,cAAc,CAAE/3V,KAAM0kc,GAAgBE,iBAJhCtlc,MAOfkuhB,EAASx7f,UAAUq8f,QAAU,SAAUvnb,GAGnC,OAFAxnG,KAAKmuhB,QAAQY,QAAQvnb,GACrBxnG,KAAKw6b,MAAMu0F,QAAQvnb,GACZxnG,MAEXkuhB,EAASvjG,SAAW,8SACpBsjG,GAAc,CACV/jG,GAAY,WACbgkG,EAASx7f,UAAW,cAAU,GACjCu7f,GAAc,CACV/jG,GAAY,YACbgkG,EAASx7f,UAAW,eAAW,GAClCu7f,GAAc,CACV/jG,GAAY,UACbgkG,EAASx7f,UAAW,aAAS,GAChCu7f,GAAc,CACV3xI,IACD4xI,EAASx7f,UAAW,OAAQ,MACxBw7f,EAzEmB,CA0E5BzpF,IAQEuqF,IACI5lZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFylZ,GAAuD,SAAUplZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DolZ,GAA8B,SAAU12c,GAExC,SAAS02c,EAAa92f,GAClB,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,KAAMkvhB,EAAavkG,WAAa3qb,KAUxD,OATA0hD,EAAMuiK,EAAI,EACVviK,EAAMy8J,EAAI,EACVz8J,EAAMshK,EAAI,EACVthK,EAAMmlJ,EAAI,EACVnlJ,EAAMyte,oBAAqB,EAC3Bzte,EAAM0te,uBAAwB,EAC9B1te,EAAM2te,yBAA0B,EAChC3te,EAAM4te,cAAe,EACrB5te,EAAM6te,OAASn3f,EAAOm3f,OACf7te,EAmNX,OA/NAste,GAAaE,EAAc12c,GAc3B02c,EAAax8f,UAAUk7Z,cAAgB,WACnC,IAAI1F,EAAOlob,KAAKsmY,SAChBtmY,KAAKwvhB,mBACLxvhB,KAAKymb,4BAA4Bzmb,KAAKyvhB,YAAa,YAAazvhB,KAAK0vhB,sBAAsBnlf,KAAKvqC,OAChGA,KAAKymb,4BAA4ByB,EAAM,YAAalob,KAAK2vhB,sBAAsBplf,KAAKvqC,OACpFA,KAAKymb,4BAA4Bzmb,KAAK4vhB,YAAa,YAAa5vhB,KAAK6vhB,kBAAkBtlf,KAAKvqC,OAC5FA,KAAKymb,4BAA4ByB,EAAM,YAAalob,KAAK8vhB,kBAAkBvlf,KAAKvqC,OAChFA,KAAKymb,4BAA4Bzmb,KAAK+vhB,cAAe,YAAa/vhB,KAAKgwhB,oBAAoBzlf,KAAKvqC,OAChGA,KAAKymb,4BAA4ByB,EAAM,YAAalob,KAAKiwhB,oBAAoB1lf,KAAKvqC,OAIlFA,KAAKymb,4BAA4B97Y,SAAU,UAAW3qC,KAAK+vgB,UAAUxle,KAAKvqC,OAC1EA,KAAKymb,4BAA4Bzmb,KAAKkwhB,aAAc,QAASlwhB,KAAKmwhB,mBAAmB5lf,KAAKvqC,QAE9FkvhB,EAAax8f,UAAU09f,oBAAsB,WACzC,OAAOpwhB,KAAKqwhB,gBAAkBrwhB,KAAKyvhB,YAAYhlhB,yBAEnDykhB,EAAax8f,UAAU49f,eAAiB,WACpC,OAAOtwhB,KAAKuwhB,gBAAkBvwhB,KAAK4vhB,YAAYnlhB,yBAEnDykhB,EAAax8f,UAAU89f,iBAAmB,WACtC,OAAOxwhB,KAAKywhB,kBAAoBzwhB,KAAK+vhB,cAActlhB,yBAEvDykhB,EAAax8f,UAAUg9f,sBAAwB,SAAUz7f,GACrDj0B,KAAKowhB,sBACLpwhB,KAAKmvhB,oBAAqB,EAC1BnvhB,KAAK0whB,YAAYz8f,IAErBi7f,EAAax8f,UAAUi9f,sBAAwB,SAAU17f,GACjDj0B,KAAKmvhB,oBACLnvhB,KAAK0whB,YAAYz8f,IAGzBi7f,EAAax8f,UAAUm9f,kBAAoB,SAAU57f,GACjDj0B,KAAKswhB,iBACLtwhB,KAAKovhB,uBAAwB,EAC7BpvhB,KAAK2whB,cAAc18f,IAEvBi7f,EAAax8f,UAAUo9f,kBAAoB,SAAU77f,GAC7Cj0B,KAAKovhB,uBACLpvhB,KAAK2whB,cAAc18f,IAG3Bi7f,EAAax8f,UAAUs9f,oBAAsB,SAAU/7f,GACnDj0B,KAAKwwhB,mBACLxwhB,KAAKqvhB,yBAA0B,EAC/BrvhB,KAAK4whB,gBAAgB38f,IAEzBi7f,EAAax8f,UAAUu9f,oBAAsB,SAAUh8f,GAC/Cj0B,KAAKqvhB,yBACLrvhB,KAAK4whB,gBAAgB38f,IAG7Bi7f,EAAax8f,UAAUq9e,UAAY,WAC/B/vgB,KAAKmvhB,oBAAqB,EAC1BnvhB,KAAKovhB,uBAAwB,EAC7BpvhB,KAAKqvhB,yBAA0B,GAEnCH,EAAax8f,UAAUg+f,YAAc,SAAUz8f,GAC3C,IAAI48f,EAAU7whB,KAAKqwhB,gBACnB,GAAIQ,EAAS,CACT,IAAIt1f,EAAItH,EAAEyuK,QAAUmuV,EAAQ5khB,KACxBqZ,EAAI2O,EAAE0uK,QAAUkuV,EAAQ9khB,IAC5BwvB,EAAIhd,KAAKukC,IAAIvnB,EAAG,GAChBA,EAAIhd,KAAKG,IAAI6c,EAAGs1f,EAAQnnhB,OACxB4b,EAAI/G,KAAKukC,IAAIx9B,EAAG,GAChBA,EAAI/G,KAAKG,IAAI4G,EAAGurgB,EAAQrmhB,QACxBxK,KAAK8whB,iBAAiBv1f,EAAIs1f,EAAQnnhB,MAAO,EAAI4b,EAAIurgB,EAAQrmhB,UAGjE0khB,EAAax8f,UAAUi+f,cAAgB,SAAU18f,GAC7C,IAAI88f,EAAU/whB,KAAKuwhB,gBACnB,GAAIQ,EAAS,CACT,IAAIC,EAAShxhB,KAAKixhB,kBACdC,EAAaF,EAAOvmhB,wBACpB8wB,EAAItH,EAAEyuK,QAAUquV,EAAQ9khB,KAC5BsvB,EAAIhd,KAAKukC,IAAIvnB,EAAG,GAChBA,EAAIhd,KAAKG,IAAI6c,EAAGw1f,EAAQrnhB,OACxB1J,KAAKikN,EAAI,EAAI1oL,EAAIw1f,EAAQrnhB,MACzBsnhB,EAAOzlhB,MAAMU,KAAQsvB,EAAI21f,EAAWxnhB,MAAQ,EAAK,KACjD1J,KAAKw6E,WAGb00c,EAAax8f,UAAUk+f,gBAAkB,SAAU38f,GAC/C,IAAIk9f,EAAYnxhB,KAAKywhB,kBACrB,GAAIU,EAAW,CACX,IAAIH,EAAShxhB,KAAKoxhB,oBACdF,EAAaF,EAAOvmhB,wBACpB8wB,EAAItH,EAAEyuK,QAAUyuV,EAAUllhB,KAC9BsvB,EAAIhd,KAAKukC,IAAIvnB,EAAG,GAChBA,EAAIhd,KAAKG,IAAI6c,EAAG41f,EAAUznhB,OAC1B1J,KAAK6mM,EAAItrK,EAAI41f,EAAUznhB,MACvBsnhB,EAAOzlhB,MAAMU,KAAQsvB,EAAI21f,EAAWxnhB,MAAQ,EAAK,KACjD1J,KAAKw6E,WAGb00c,EAAax8f,UAAU8nD,OAAS,WAC5B,IAAI3kB,EAAQwnJ,EAAM88K,QAAiB,IAATn6X,KAAKikN,EAASjkN,KAAKm+M,EAAGn+M,KAAKgjN,EAAGhjN,KAAK6mM,GACzDwqV,EAAgBh0U,EAAM88K,QAAiB,IAATn6X,KAAKikN,EAAS,EAAG,GAC/CqtU,EAAYz7d,EAAM0kU,eAElBgU,EAAcvuY,KAAKuvhB,OACHlyU,EAAMs8K,WAAW4U,EAAYzyQ,YAC/By+P,iBAAmB+2J,IACjCtxhB,KAAKsvhB,cAAe,GAExB/gJ,EAAYj6P,SAASg9Y,GACrBtxhB,KAAKqxhB,cAAc9lhB,MAAMuqD,gBAAkBu7d,EAAc92J,eACzDv6X,KAAKuxhB,gBAAgBhmhB,MAAMuqD,gBAAkBw7d,GAMjDpC,EAAax8f,UAAUo+f,iBAAmB,SAAUh1U,EAAY01U,GAC5D,IAAIX,EAAU7whB,KAAKqwhB,iBAAmBrwhB,KAAKowhB,sBAC3C,GAAIS,EAAS,CACT,IAAIY,EAAUzxhB,KAAKuxhB,gBACfG,EAAcD,EAAQhnhB,wBAC1BqxM,EAAav9L,KAAKukC,IAAI,EAAGg5J,GACzBA,EAAav9L,KAAKG,IAAI,EAAGo9L,GACzB01U,EAAajzgB,KAAKukC,IAAI,EAAG0ue,GACzBA,EAAajzgB,KAAKG,IAAI,EAAG8ygB,GACzBxxhB,KAAKm+M,EAAIrC,EACT97M,KAAKgjN,EAAIwuU,EACTC,EAAQlmhB,MAAMU,KAAQ6vM,EAAa+0U,EAAQnnhB,MAAQgohB,EAAYhohB,MAAQ,EAAK,KAC5E+nhB,EAAQlmhB,MAAMQ,KAAQ,EAAIylhB,GAAcX,EAAQrmhB,OAASknhB,EAAYlnhB,OAAS,EAAK,KACnFxK,KAAKw6E,WAGb00c,EAAax8f,UAAU88f,iBAAmB,WACtC,IACImC,EADezC,EAAagB,aACHzmhB,IAAI,SAAUosD,EAAOlsD,GAC9C,MAAO,mCAAuCA,EAAQ,6BAAgCksD,EAAQ,+CAAmDA,EAAQ,aAE7J71D,KAAKkwhB,aAAazhd,UAAYkjd,EAAU3hf,KAAK,KAEjDk/e,EAAax8f,UAAU4hH,SAAW,SAAUhmG,GACxC,IAAIunB,EAAQwnJ,EAAMs8K,WAAWrrV,GACzB3jC,EAAKkrD,EAAM4kU,QAAS11W,EAAIpa,EAAG,GAAIia,EAAIja,EAAG,GAAIqR,EAAIrR,EAAG,GACrD3K,KAAKikN,GAAKhpK,MAAMl2B,GAAK,EAAIA,GAAK,IAC9B/kB,KAAK6mM,EAAIhxI,EAAM95C,EACf,IAAIw0gB,EAAkBvwhB,KAAKuwhB,iBAAmBvwhB,KAAKswhB,iBAC/CG,EAAoBzwhB,KAAKywhB,mBAAqBzwhB,KAAKwwhB,mBACvDxwhB,KAAKixhB,kBAAkB1lhB,MAAMU,MAASjM,KAAKikN,EAAI,IAAMssU,EAAgB7mhB,MAAS,KAC9E1J,KAAKoxhB,oBAAoB7lhB,MAAMU,KAAQjM,KAAK6mM,EAAI4pV,EAAkB/mhB,MAAS,KAC3E1J,KAAK8whB,iBAAiBlsgB,EAAG5I,IAE7BkzgB,EAAax8f,UAAUy9f,mBAAqB,SAAUl8f,GAClD,IAAIzH,EAASyH,EAAEzH,OACf,GAAK4lF,GAAE8rR,OAAO1xW,EAAOxG,IAArB,CAGA,IAAIA,EAAKwpB,SAAShjB,EAAOxG,GAAI,IAC7BhmB,KAAKs0I,SAAS46Y,EAAagB,aAAalqgB,IACxChmB,KAAKkhB,YAETgugB,EAAax8f,UAAUk/f,eAAiB,WACpC,IACIN,EADQj0U,EAAM88K,QAAiB,IAATn6X,KAAKikN,EAASjkN,KAAKm+M,EAAGn+M,KAAKgjN,EAAGhjN,KAAK6mM,GACvC0zL,eAClB21J,EAAehB,EAAagB,aAC3BlwhB,KAAKsvhB,cAAgBY,EAAa,KAAOoB,IAI9CpB,EAAeA,EAAa/6gB,OAAO,SAAU0gD,GAAS,OAAOA,GAASy7d,KAEtEpB,EAAe,CAACoB,GAAWt4gB,OAAOk3gB,IAEjB/rhB,OAAS+qhB,EAAa2C,kBACnC3B,EAAeA,EAAa1mhB,MAAM,EAAG0lhB,EAAa2C,kBAEtD3C,EAAagB,aAAeA,IAEhChB,EAAax8f,UAAUxR,QAAU,WAC7BlhB,KAAK4xhB,iBACLp5c,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCkvhB,EAAa2C,gBAAkB,EAC/B3C,EAAagB,aAAe,GAC5BhB,EAAavkG,SAAW,2jCACxBskG,GAAc,CACV/kG,GAAY,kBACbglG,EAAax8f,UAAW,qBAAiB,GAC5Cu8f,GAAc,CACV/kG,GAAY,gBACbglG,EAAax8f,UAAW,mBAAe,GAC1Cu8f,GAAc,CACV/kG,GAAY,oBACbglG,EAAax8f,UAAW,uBAAmB,GAC9Cu8f,GAAc,CACV/kG,GAAY,gBACbglG,EAAax8f,UAAW,mBAAe,GAC1Cu8f,GAAc,CACV/kG,GAAY,sBACbglG,EAAax8f,UAAW,yBAAqB,GAChDu8f,GAAc,CACV/kG,GAAY,kBACbglG,EAAax8f,UAAW,qBAAiB,GAC5Cu8f,GAAc,CACV/kG,GAAY,wBACbglG,EAAax8f,UAAW,2BAAuB,GAClDu8f,GAAc,CACV/kG,GAAY,iBACbglG,EAAax8f,UAAW,oBAAgB,GAC3Cu8f,GAAc,CACV3yI,IACD4yI,EAAax8f,UAAW,gBAAiB,MACrCw8f,EAhOuB,CAiOhC98f,IAQE0/f,IACI1oZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFuoZ,GAAuD,SAAUloZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DkoZ,GAA+B,SAAUx5c,GAEzC,SAASw5c,IACL,IAAItwe,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAIhE,OAHA0hD,EAAMipY,SAAW,0YACjBjpY,EAAMuwe,oBAAqB,EAC3Bvwe,EAAMwwe,WAAY,EACXxwe,EAiEX,OAvEAowe,GAAaE,EAAex5c,GAQ5Bw5c,EAAct/f,UAAUk7Z,cAAgB,WACpC,IAAIlsY,EAAQ1hD,KACZw4E,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MACpC,IAAImyhB,EAAe,WACXzwe,EAAMwwe,UACNxwe,EAAMwwe,WAAY,EAGlBxwe,EAAM30B,eAGV20B,EAAM0we,gBAAkB1we,EAAM2we,eAE9BnqG,EAAOlob,KAAKsmY,SAChBtmY,KAAKymb,4BAA4ByB,EAAM,YAAa,SAAUj0Z,IACrDytB,EAAMwwe,WACPxwe,EAAM0we,iBACN1we,EAAM0we,gBAAgB96L,WACtBllP,GAAEw4K,UAAUlpO,EAAM0we,gBAAgB9rJ,WAClC4hD,EAAKt7Z,SAASqH,EAAEzH,UAChBk1B,EAAMwwe,WAAY,KAG1BlyhB,KAAKymb,4BAA4ByB,EAAM,UAAW,SAAUj0Z,GACxD,OAAQA,EAAEhH,SACN,KAAKqjX,GAAUsB,OACf,KAAKtB,GAAUwB,SACf,KAAKxB,GAAUiB,UACf,KAAKjB,GAAUoB,UACXygJ,IACJ,KAAK7hJ,GAAUmB,WACXx9W,EAAE/G,oBAIdltB,KAAKymb,4BAA4Bzmb,KAAK2lc,SAAU,QAASwsF,GACzDnyhB,KAAKymb,4BAA4Bzmb,KAAK+7b,OAAQ,QAASo2F,GACnDnyhB,KAAKsyhB,YACLtyhB,KAAK+6b,MAAMjjb,YAAYs6F,GAAEw9R,iBAAiB5vY,KAAKsyhB,WAAYtyhB,KAAKoqY,mBAAoB,QAG5F4nJ,EAAct/f,UAAUoza,cAAgB,SAAUp8b,GAE9C,OADA0oG,GAAEoxR,gBAAgBxjY,KAAK2lc,SAAUj8b,GAC1B1J,MAEXgyhB,EAAct/f,UAAUo2Z,oBAAsB,WAC1C,OAAO9ob,KAAK2lc,UAEhBosF,GAAc,CACVp1I,GAAU,uBACXq1I,EAAct/f,UAAW,0BAAsB,GAClDq/f,GAAc,CACV7nG,GAAY,WACb8nG,EAAct/f,UAAW,cAAU,GACtCq/f,GAAc,CACV7nG,GAAY,aACb8nG,EAAct/f,UAAW,gBAAY,GACxCq/f,GAAc,CACV7nG,GAAY,kBACb8nG,EAAct/f,UAAW,qBAAiB,GAC7Cq/f,GAAc,CACV7nG,GAAY,UACb8nG,EAAct/f,UAAW,aAAS,GAC9Bs/f,EAxEwB,CAyEjC5sF,IAQEmtF,IACInpZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFgpZ,GAA+B,SAAUh6c,GAEzC,SAASg6c,EAAcp6f,GACnB,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAQjC,OAPA0hD,EAAM0kZ,WAAa,MACnB1kZ,EAAM75B,UAAY,kBAClB65B,EAAM4we,WAAa,cACnB5we,EAAMulY,YAAYvlY,EAAMipY,SAASnpb,QAAQ,kBAAmBkgD,EAAM0kZ,aAC9Dhua,GAAUA,EAAOy9B,QACjBnU,EAAMngD,MAAQ62B,EAAOy9B,OAElBnU,EAkEX,OA5EA6we,GAAaC,EAAeh6c,GAY5Bg6c,EAAc9/f,UAAUk7Z,cAAgB,WACpCp1W,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MAChCA,KAAKuB,OACLvB,KAAKs0I,SAASt0I,KAAKuB,QAG3BixhB,EAAc9/f,UAAU2/f,WAAa,WACjC,IAAI3we,EAAQ1hD,KACRyyhB,EAAWzyhB,KAAKsmY,SAAS77X,wBACzBiohB,EAAc,IAAIvH,GAAS,CAC3BzB,UAAU,EACVhtP,OAAO,EACPmtP,cAAc,EACd9hf,SAAU,IACVr+B,MAAO,IACPc,OAAQ,IACR+wB,EAAGk3f,EAASvmhB,MAAQ,IACpBoZ,EAAGmtgB,EAAS1mhB,IAAM,MAEtB/L,KAAKqkJ,aAAa+1P,SAASs4I,GAC3Btgb,GAAE+tR,YAAYuyJ,EAAYpsJ,SAAU,mBACpC,IAAIqsJ,EAAa,IAAIzD,GAAa,CAC9BK,OAAQvvhB,OA4BZ,OA1BAA,KAAKqkJ,aAAa+1P,SAASu4I,GAC3BA,EAAWhsG,eAAe,WAClB+rG,EAAYp7L,WACZo7L,EAAYxxgB,YAGpBwxgB,EAAY3pG,mBAAmB/ob,MAC/B0yhB,EAAY5I,iBAAiB6I,GAC7BA,EAAWr+Y,SAASt0I,KAAK87H,YACzB42Z,EAAY/rG,eAAe,WACHjlY,EAAMuwe,mBAUtBvwe,EAAMuwe,oBAAqB,GAN3Bvwe,EAAMuwe,oBAAqB,EACvBU,EAAWr7L,WACXq7L,EAAWzxgB,WAMfwgC,EAAM41S,WACN51S,EAAMonY,sBAAsBh6Z,UAG7B4jgB,GAEXF,EAAc9/f,UAAU4hH,SAAW,SAAUz+E,GACzC,OAAI71D,KAAKuB,QAAUs0D,IAGnB71D,KAAKuB,MAAQs0D,EACb71D,KAAK4yhB,cAAcrnhB,MAAMuqD,gBAAkBD,EAC3C71D,KAAKy4V,cAAc,CAAE/3V,KAAM0kc,GAAgBE,iBAJhCtlc,MAOfwyhB,EAAc9/f,UAAUopG,SAAW,WAC/B,OAAO97H,KAAKuB,OAETixhB,EA7EwB,CA8EjCR,IAQEa,IACIzpZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFspZ,GAAoC,SAAUt6c,GAE9C,SAASs6c,IACL,IAAIpxe,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAGhE,OAFA0hD,EAAM75B,UAAY,kBAClB65B,EAAMm1O,UAAY,SACXn1O,EAuFX,OA5FAmxe,GAAaC,EAAoBt6c,GAOjCs6c,EAAmBpggB,UAAUk7Z,cAAgB,WACzC,IAAIlsY,EAAQ1hD,KACZw4E,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MACpCA,KAAKymb,4BAA4Bzmb,KAAK6qb,OAAQ,OAAQ,WAClD,IAAIkoG,EAAellgB,WAAW6zB,EAAMmpY,OAAOtpb,OACvCA,EAAQ05C,MAAM83e,GAAgB,GAAKrxe,EAAMsxe,eAAeD,EAAa9ggB,YACrEyvB,EAAMngD,QAAUA,GAChBmgD,EAAM4yF,SAAS/yI,MAI3BuxhB,EAAmBpggB,UAAUsggB,eAAiB,SAAUzxhB,GACpD,GAAc,KAAVA,EACA,MAAO,GAEPvB,KAAKutO,YACLhsO,EAAQvB,KAAKizhB,gBAAgB1xhB,IAEjC,IAAI+sC,EAAMzgB,WAAWtsB,GAOrB,OANgB,MAAZvB,KAAK0e,KAAe4vB,EAAMtuC,KAAK0e,IAC/Bnd,EAAQvB,KAAK0e,IAAIuT,WAEA,MAAZjyB,KAAK8iD,KAAexU,EAAMtuC,KAAK8iD,MACpCvhD,EAAQvB,KAAK8iD,IAAI7wB,YAEd1wB,GAEXuxhB,EAAmBpggB,UAAUuggB,gBAAkB,SAAU1xhB,GACrD,GAAIvB,KAAKutO,UAAW,CAChB,IAAI2lT,EAAcrlgB,WAAWtsB,GAAOo7H,QAAQ38H,KAAKutO,WACjDhsO,EAAQssB,WAAWqlgB,GAAajhgB,WAEpC,OAAO1wB,GAEXuxhB,EAAmBpggB,UAAUi8f,OAAS,SAAUjwgB,GAC5C,OAAI1e,KAAK0e,MAAQA,IAGjB1e,KAAK0e,IAAMA,EACK,MAAZ1e,KAAK0e,IACL1e,KAAK6qb,OAAOh8a,aAAa,MAAO6P,EAAIuT,YAGpCjyB,KAAK6qb,OAAOpiZ,gBAAgB,QAPrBzoC,MAWf8yhB,EAAmBpggB,UAAUo8f,OAAS,SAAUhse,GAC5C,OAAI9iD,KAAK8iD,MAAQA,IAGjB9iD,KAAK8iD,IAAMA,EACK,MAAZ9iD,KAAK8iD,IACL9iD,KAAK6qb,OAAOh8a,aAAa,MAAOi0C,EAAI7wB,YAGpCjyB,KAAK6qb,OAAOpiZ,gBAAgB,QAPrBzoC,MAWf8yhB,EAAmBpggB,UAAUyggB,aAAe,SAAU5lT,GAElD,OADAvtO,KAAKutO,UAAYA,EACVvtO,MAEX8yhB,EAAmBpggB,UAAUq8f,QAAU,SAAUvnb,GAC7C,OAAIxnG,KAAKwnG,OAASA,IAGlBxnG,KAAKwnG,KAAOA,EACA,MAARA,EACAxnG,KAAK6qb,OAAOh8a,aAAa,OAAQ24F,EAAKv1E,YAGtCjyB,KAAK6qb,OAAOpiZ,gBAAgB,SAPrBzoC,MAWf8yhB,EAAmBpggB,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GAGrD,OAFAzra,EAAQvB,KAAKizhB,gBAAgB1xhB,KACPvB,KAAKgzhB,eAAezxhB,GAE/BvB,KAEJw4E,EAAO9lD,UAAU4hH,SAASp/G,KAAKl1B,KAAMuB,EAAOyra,IAEhD8lH,EA7F6B,CA8FtClF,IAQEwF,IACIhqZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF6pZ,GAA8B,SAAU76c,GAExC,SAAS66c,EAAaj7f,GAClB,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAQjC,OAPA0hD,EAAM75B,UAAY,iBAClB65B,EAAM0kZ,WAAa,QACnB1kZ,EAAMm1O,UAAY,QAClBn1O,EAAMulY,YAAYvlY,EAAMipY,SAASnpb,QAAQ,kBAAmBkgD,EAAM0kZ,aAC9Dhua,IACAspB,EAAMtpB,OAASA,GAEZspB,EAgDX,OA1DA0xe,GAAaC,EAAc76c,GAY3B66c,EAAa3ggB,UAAUk7Z,cAAgB,WACnCp1W,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MACpC,IAAI2K,EAAK3K,KAAKo4B,OAAQ1Z,EAAM/T,EAAG+T,IAAKokC,EAAMn4C,EAAGm4C,IAAK0kD,EAAO78F,EAAG68F,KACjD,MAAP9oF,GACA1e,KAAKyuhB,YAAY/vgB,GAEV,MAAPokC,GACA9iD,KAAK4uhB,YAAY9re,GAErB9iD,KAAK+uhB,QAAQvnb,GAAQ,IAEzB6rb,EAAa3ggB,UAAUmza,kBAAoB,WACvC,IAAInkZ,EAAQ1hD,KACRi8X,EAAO7pR,GAAEkqR,cAEbt8X,KAAKymb,4BAA4Bzmb,KAAK6qb,OADtB5uD,EAAO,SAAW,QACuB,SAAUhoW,GAE/DytB,EAAM4yF,SADMrgH,EAAEzH,OAAOjrB,UAI7B8xhB,EAAa3ggB,UAAU+7f,YAAc,SAAUlthB,GAG3C,OAFAvB,KAAK0e,IAAMnd,EACXvB,KAAK6qb,OAAOh8a,aAAa,MAAOtN,EAAM0wB,YAC/BjyB,MAEXqzhB,EAAa3ggB,UAAUk8f,YAAc,SAAUrthB,GAG3C,OAFAvB,KAAK8iD,IAAMvhD,EACXvB,KAAK6qb,OAAOh8a,aAAa,MAAOtN,EAAM0wB,YAC/BjyB,MAEXqzhB,EAAa3ggB,UAAUq8f,QAAU,SAAUxthB,GAGvC,OAFAvB,KAAKwnG,KAAOjmG,EACZvB,KAAK6qb,OAAOh8a,aAAa,OAAQtN,EAAM0wB,YAChCjyB,MAEXqzhB,EAAa3ggB,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GAC/B,MAAZhta,KAAK0e,MACLnd,EAAQgd,KAAKukC,IAAIj1B,WAAWtsB,GAAQvB,KAAK0e,KAAKuT,YAElC,MAAZjyB,KAAK8iD,MACLvhD,EAAQgd,KAAKG,IAAImP,WAAWtsB,GAAQvB,KAAK8iD,KAAK7wB,YAElD,IAAI47f,EAAMr1c,EAAO9lD,UAAU4hH,SAASp/G,KAAKl1B,KAAMuB,EAAOyra,GAEtD,OADAhta,KAAK6qb,OAAOtpb,MAAQA,EACbsshB,GAEJwF,EA3DuB,CA4DhC5tF,IAQE6tF,IACIlqZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnF+pZ,GAAwB,SAAU/6c,GAElC,SAAS+6c,EAAOvL,QACU,IAAlBA,IAA4BA,EAAgB,WAChD,IAAItme,EAAQ82B,EAAOtjD,KAAKl1B,KAAMuzhB,EAAOnjE,YAAY43D,KAAmBhohB,KAIpE,OAHA0hD,EAAMsme,cAAgBA,EACtBtme,EAAM15B,QAAU,GAChB05B,EAAM8xe,QAAU,GACT9xe,EA0IX,OAjJA4xe,GAAaC,EAAQ/6c,GASrB+6c,EAAO7ggB,UAAU4yQ,KAAO,WACpBtlS,KAAKymb,4BAA4Bzmb,KAAKsmY,SAAU,UAAWtmY,KAAK+8H,cAAcxyF,KAAKvqC,QAEvFuzhB,EAAOnjE,YAAc,SAAU43D,GAC3B,MAAO,0BAA6BA,EAAgB,iBAExDuL,EAAO7ggB,UAAUqqG,cAAgB,SAAU9oG,GACvC,IAAItX,EAAMsX,EAAEhH,QACZ,OAAQtQ,GACJ,KAAK2zX,GAAUiB,UACX,GAAKvxY,KAAKyzhB,cAGL,CACD,IAAIv2W,EAAMl9K,KAAKwzhB,QAAQvqhB,QAAQjJ,KAAKyzhB,eACpCzzhB,KAAK0zhB,gBAAgBx2W,QAJrBl9K,KAAKs0I,SAASt0I,KAAK87H,YAMvB,MACJ,KAAKw0Q,GAAUwB,SACf,KAAKxB,GAAUsB,OACX,IAAI+hJ,EAASh3gB,IAAQ2zX,GAAUwB,SAC3B8hJ,OAAkB,EAEtB,GADA3/f,EAAE/G,iBACGltB,KAAKyzhB,cAGL,CACD,IACII,EADa7zhB,KAAKwzhB,QAAQvqhB,QAAQjJ,KAAKyzhB,gBACfE,EAAS,GAAK,GAC1CE,EAAUt1gB,KAAKG,IAAIH,KAAKukC,IAAI+we,EAAS,GAAI7zhB,KAAKwzhB,QAAQrvhB,OAAS,GAC/DyvhB,EAAkB5zhB,KAAKwzhB,QAAQK,QAN/BD,EAAkB5zhB,KAAKwzhB,QAAQG,EAAS,EAAI3zhB,KAAKwzhB,QAAQrvhB,OAAS,GAQtEnE,KAAK8zhB,cAAcF,KAI/BL,EAAO7ggB,UAAUqhgB,WAAa,SAAUC,GACpC,IAAItye,EAAQ1hD,KAEZ,OADAg0hB,EAAY3ghB,QAAQ,SAAU4ghB,GAAc,OAAOvye,EAAM4yY,UAAU2/F,KAC5Dj0hB,MAEXuzhB,EAAO7ggB,UAAU4ha,UAAY,SAAU2/F,GACnC,IAAI1yhB,EAAQ0yhB,EAAW1yhB,MAAOioF,EAAOyqc,EAAWzqc,KAC5C0qc,EAAgB9hb,GAAE9iE,YAAgB7qC,IAAT+kF,EAAqBjoF,EAAQioF,GAG1D,OAFAxpF,KAAKgoB,QAAQpkB,KAAK,CAAErC,MAAOA,EAAOioF,KAAM0qc,IACxCl0hB,KAAKsmS,aAAa4tP,GACXl0hB,MAEXuzhB,EAAO7ggB,UAAU4zQ,aAAe,SAAUpK,GACtC,IAAIx6O,EAAQ1hD,KACRm0hB,EAASxpf,SAAS9yB,cAAc,OAChCu8gB,EAAgBzpf,SAAS9yB,cAAc,QAC3Cu6F,GAAE+tR,YAAYg0J,EAAQ,gBACtB/hb,GAAE+tR,YAAYg0J,EAAQ,MAAQn0hB,KAAKgohB,cAAgB,cACnDmM,EAAOh+e,UAAY,EACnBi+e,EAAc3ld,UAAYytN,EAC1Bl8R,KAAKwzhB,QAAQ5vhB,KAAKuwhB,GAClBn0hB,KAAKymb,4BAA4B0tG,EAAQ,YAAa,SAAUlggB,GAAK,OAAOytB,EAAMoye,cAAcK,KAChGn0hB,KAAKymb,4BAA4B0tG,EAAQ,aAAc,WAAc,OAAOzye,EAAM2ye,qBAClFr0hB,KAAKymb,4BAA4B0tG,EAAQ,QAAS,WAC9C,IAAIp3W,EAAMr7H,EAAM8xe,QAAQvqhB,QAAQkrhB,GAChCzye,EAAMgye,gBAAgB32W,KAE1Bo3W,EAAOr8gB,YAAYs8gB,GACnBp0hB,KAAKsmY,SAASxuX,YAAYq8gB,IAE9BZ,EAAO7ggB,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GACzC,GAAIhta,KAAKuB,QAAUA,EAEf,OADAvB,KAAKs0hB,mBACEt0hB,KAEX,GAAa,MAATuB,EAEA,OADAvB,KAAKg9H,QACEh9H,KAEX,IAAI+8K,EAAM3qE,GAAE+S,UAAUnlH,KAAKgoB,QAAS,SAAUxB,GAAU,OAAOA,EAAOjlB,QAAUA,IAChF,IAAa,IAATw7K,EAAY,CACZ,IAAIv2J,EAASxmB,KAAKgoB,QAAQ+0J,GAC1B/8K,KAAKuB,MAAQilB,EAAOjlB,MACpBvB,KAAKu0hB,aAA8B,MAAf/tgB,EAAOgjE,KAAehjE,EAAOgjE,KAAOhjE,EAAOjlB,MAC/DvB,KAAK8zhB,cAAc9zhB,KAAKwzhB,QAAQz2W,IAC3BiwP,GACDhta,KAAKw0hB,kBAGb,OAAOx0hB,MAEXuzhB,EAAO7ggB,UAAUghgB,gBAAkB,SAAU32W,GACzC,OAAO/8K,KAAKs0I,SAASt0I,KAAKgoB,QAAQ+0J,GAAKx7K,QAE3CgyhB,EAAO7ggB,UAAUopG,SAAW,WACxB,OAAO97H,KAAKuB,OAEhBgyhB,EAAO7ggB,UAAU+hgB,gBAAkB,WAC/B,OAAOz0hB,KAAKu0hB,cAEhBhB,EAAO7ggB,UAAUgigB,mBAAqB,WAClC,IAAIhze,EAAQ1hD,KACZA,KAAKq0hB,mBACL,IAAIt3W,EAAM3qE,GAAE+S,UAAUnlH,KAAKgoB,QAAS,SAAUxB,GAAU,OAAOA,EAAOjlB,QAAUmgD,EAAMngD,SACzE,IAATw7K,GACA/8K,KAAK8zhB,cAAc9zhB,KAAKwzhB,QAAQz2W,KAGxCw2W,EAAO7ggB,UAAUsqG,MAAQ,WACrBh9H,KAAKuB,MAAQ,KACbvB,KAAKu0hB,aAAe,KACpBv0hB,KAAKq0hB,mBACLr0hB,KAAKw0hB,mBAETjB,EAAO7ggB,UAAUohgB,cAAgB,SAAUrhf,GAClCA,EAAGg9D,eAGR2C,GAAE0vR,cAAcrvV,EAAI,kBACpBzyC,KAAKyzhB,cAAgBhhf,EACrBzyC,KAAKyzhB,cAAc3kgB,UAEvBykgB,EAAO7ggB,UAAU2hgB,iBAAmB,WAC3Br0hB,KAAKyzhB,eAAkBzzhB,KAAKyzhB,cAAchkb,eAG/C2C,GAAEiuR,eAAergY,KAAKyzhB,cAAe,kBACrCzzhB,KAAKyzhB,cAAgB,OAEzBF,EAAO7ggB,UAAU8hgB,gBAAkB,WAC/Bx0hB,KAAKy4V,cAAc,CAAE/3V,KAAM0kc,GAAgBE,gBAC3Ctlc,KAAKs0hB,oBAETf,EAAO7ggB,UAAU4hgB,iBAAmB,WAChCt0hB,KAAKy4V,cAAc,CAAE/3V,KAAM6yhB,EAAOoB,uBAEtCpB,EAAOoB,oBAAsB,eApJ0B,SAAU9qZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAiJxD8qZ,CAAc,CACVt4I,IACDi3I,EAAO7ggB,UAAW,OAAQ,MACtB6ggB,EAlJiB,CAmJ1BnhgB,IAQEyigB,IACIzrZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFsrZ,GAAuD,SAAUjrZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DirZ,GAA0B,SAAUv8c,GAEpC,SAASu8c,EAAS38f,GACd,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAKjC,OAJA0hD,EAAM0kZ,WAAa,MACnB1kZ,EAAM75B,UAAY,YAClB65B,EAAM4we,WAAa,YACnB5we,EAAMulY,YAAYvlY,EAAMipY,SAASnpb,QAAQ,kBAAmBkgD,EAAM0kZ,aAC3D1kZ,EAuFX,OA9FAmze,GAAaE,EAAUv8c,GASvBu8c,EAASrigB,UAAU4yQ,KAAO,WACtB,IAAI5jP,EAAQ1hD,KACZA,KAAKg1hB,cAAgB,IAAIzB,GAAO,UAChCvzhB,KAAKqkJ,aAAa+1P,SAASp6Y,KAAKg1hB,eAChCh1hB,KAAKg1hB,cAAcjsG,mBAAmB/ob,MACtCA,KAAK2lc,SAASxvZ,SAAW,EACzBn2C,KAAKg1hB,cAAcvuG,4BAA4Bzmb,KAAKg1hB,cAAezB,GAAOoB,oBAAqB,WAAkBjze,EAAMuze,UACnHvze,EAAMuze,aAEVj1hB,KAAKg1hB,cAAcvuG,4BAA4Bzmb,KAAKg1hB,cAAe5vF,GAAgBE,cAAe,WAC9F5jZ,EAAM4yF,SAAS5yF,EAAMsze,cAAcl5Z,YAAY,GAAO,GAClDp6E,EAAMuze,UACNvze,EAAMuze,cAIlBF,EAASrigB,UAAU2/f,WAAa,WAC5B,IAAI3we,EAAQ1hD,KACRk1hB,EAAUl1hB,KAAKg1hB,cAAc1uJ,SAC7B6uJ,EAAiBn1hB,KAAKymb,4BAA4B97Y,SAAS7H,KAAM,QAAS,SAAU7O,IAC/EihgB,EAAQtogB,SAASqH,EAAEzH,SAAWk1B,EAAMuze,UACrCvze,EAAMuze,aAGVG,EAAep1hB,KAAKymb,4BAA4ByuG,EAAS,WAAY,SAAUjhgB,IAC1EihgB,EAAQtogB,SAASqH,EAAEq1F,gBAAkB5nE,EAAMuze,UAC5Cvze,EAAMuze,aAqBd,OAlBAj1hB,KAAKi1hB,SAAWj1hB,KAAKird,aAAaC,UAAS,EAAMgqE,GAAS,EAAM,WAC5Dxze,EAAMuze,SAAW,KACjBG,IACAD,IACIzze,EAAM41S,WACN51S,EAAMonY,sBAAsBh6Z,UAGpCsjF,GAAEoxR,gBAAgB0xJ,EAAS9ib,GAAEmwR,iBAAiBviY,KAAK2lc,WACnDuvF,EAAQ3phB,MAAM08B,UAAYmqE,GAAEgwR,eAAepiY,KAAKird,aAAahyC,kBAAoB,KACjFi8G,EAAQ3phB,MAAMvB,SAAW,WACzBhK,KAAKird,aAAa8K,4BAA4B,CAC1Cr1d,KAAM,UACNwzD,YAAal0D,KAAK2lc,SAClB0lB,OAAQ6pE,EACRp/D,kBAAkB,IAEtB91d,KAAKg1hB,cAAcN,qBACZ10hB,KAAKg1hB,eAEhBD,EAASrigB,UAAUqhgB,WAAa,SAAU/rgB,GACtC,IAAI05B,EAAQ1hD,KAEZ,OADAgoB,EAAQ3U,QAAQ,SAAUmT,GAAU,OAAOk7B,EAAM4yY,UAAU9ta,KACpDxmB,MAEX+0hB,EAASrigB,UAAU4ha,UAAY,SAAU9ta,GAErC,OADAxmB,KAAKg1hB,cAAc1gG,UAAU9ta,GACtBxmB,MAEX+0hB,EAASrigB,UAAU4hH,SAAW,SAAU/yI,EAAOyra,EAAQqoH,GACnD,GAAIr1hB,KAAKuB,QAAUA,IAGd8zhB,GACDr1hB,KAAKg1hB,cAAc1gZ,SAAS/yI,GAAO,GAExBvB,KAAKg1hB,cAAcl5Z,aACjB97H,KAAK87H,YAItB,OADA97H,KAAK4yhB,cAAcnkd,UAAYzuE,KAAKg1hB,cAAcP,kBAC3Cj8c,EAAO9lD,UAAU4hH,SAASp/G,KAAKl1B,KAAMuB,EAAOyra,IAEvD+nH,EAASrigB,UAAUxR,QAAU,WACrBlhB,KAAKi1hB,UACLj1hB,KAAKi1hB,WAETj1hB,KAAKg1hB,cAAc9zgB,UACnBs3D,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElC80hB,GAAc,CACVn4I,GAAU,iBACXo4I,EAASrigB,UAAW,oBAAgB,GACvCoigB,GAAc,CACVx4I,IACDy4I,EAASrigB,UAAW,OAAQ,MACxBqigB,EA/FmB,CAgG5B/C,IAQEsD,IACIlsZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF+rZ,GAAuD,SAAU1rZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D0rZ,GAA+B,SAAUh9c,GAEzC,SAASg9c,IACL,IAAI9ze,EAAQ82B,EAAOtjD,KAAKl1B,KAAMw1hB,EAAc7qG,WAAa3qb,KAIzD,OAHA0hD,EAAMw/I,OAAS,EACfx/I,EAAM0/I,QAAU,EAChB1/I,EAAM2/I,QAAU,EACT3/I,EAiLX,OAvLA4ze,GAAaE,EAAeh9c,GAQ5Bg9c,EAAc9igB,UAAUk7Z,cAAgB,WACpC,IAAIlsY,EAAQ1hD,KACZw4E,EAAO9lD,UAAUk7Z,cAAc14Z,KAAKl1B,MACpCA,KAAKy1hB,aAAe,CAChBryJ,SAAUpjY,KAAK01hB,cACf5zE,gBAAiB,EACjBC,YAAa,SAAU9tb,GACnBytB,EAAMi0e,iBAAmBj0e,EAAMg0e,cAAcjrhB,yBAEjDw3c,WAAY,SAAUhub,GAAK,OAAOytB,EAAMk0e,mBAAmB3hgB,IAC3D+tb,WAAY,cAEhBhid,KAAKkid,YAAYP,cAAc3hd,KAAKy1hB,cACpCz1hB,KAAK61hB,YACA9gG,SAAS,IACT+P,cAAc,GACdgB,cAAc,IACd6oF,OAAO,GACPG,OAAO,KACPx6Y,SAAS,GAAKt0I,KAAK81hB,SACnB5gG,cAAc,SAAU3zb,GACZ,MAATA,GAA2B,KAAVA,IACjBA,EAAQ,KAEZA,EAAQmgD,EAAMm0e,YAAY7C,eAAezxhB,GACzC,IAAIw0hB,EAAalogB,WAAWtsB,GACxBw0hB,EAAa,MACbA,GAA0B,KAE9Br0e,EAAM4yF,SAASyhZ,KAEnB/1hB,KAAKg2hB,oBACD5jb,GAAE8rR,OAAOl+X,KAAK87H,aACd97H,KAAK61hB,YAAYvhZ,SAASt0I,KAAKi2hB,uBAAuBj2hB,KAAK87H,YAAY7pG,YAE3EjyB,KAAKymb,4BAA4Bzmb,KAAMolc,GAAgBE,cAAe,WAC9D5jZ,EAAMm0e,YAAYvqG,kBAAkB1+Z,SAAS+d,SAASlgB,gBAG1Di3B,EAAMs0e,uBAGdR,EAAc9igB,UAAUsjgB,kBAAoB,WACxC,IAAI96O,EAAkBl7S,KAAKi2hB,uBAAuBj2hB,KAAK87H,YACvD97H,KAAK61hB,YAAYvhZ,SAAS4mK,EAAgBjpR,aAE9CujgB,EAAc9igB,UAAUwjgB,oBAAsB,SAAUC,GACpD,IAAIpod,EAAO/tE,KAAK21hB,kBAAoB,CAAEjshB,MAAO,GAAIc,OAAQ,IACrD4rhB,EAAep2hB,KAAKo2hB,aAEpBC,EAAUtod,EAAKvjE,OAAS,EAC5B4rhB,EAAa7qhB,MAAMU,KAFL8hE,EAAKrkE,MAAQ,EAE6B,EAApB6U,KAAKw7L,IAAIo8U,GAAe,KAC5DC,EAAa7qhB,MAAMQ,IAAMsqhB,EAA8B,EAApB93gB,KAAKy7L,IAAIm8U,GAAe,MAE/DX,EAAc9igB,UAAU4jgB,eAAiB,WACrC,IAAI/6f,EAAIv7B,KAAKohM,QACT97K,EAAItlB,KAAKqhM,QACT80V,EAAU53gB,KAAKs7L,MAAMv0L,EAAGiW,GAC5Bv7B,KAAK81hB,QAAU91hB,KAAK4qO,UAAUurT,GAC9Bn2hB,KAAKkhM,OAAS3iL,KAAKykL,KAAMznK,EAAIA,EAAMjW,EAAIA,GACvCtlB,KAAKk2hB,oBAAoBC,IAE7BX,EAAc9igB,UAAU6jgB,mBAAqB,WACzC,IAAIJ,EAAUn2hB,KAAK6qO,UAAU7qO,KAAK87H,YAC9BolE,EAASlhM,KAAKw2hB,YAClBx2hB,KACKy2hB,WAAWl4gB,KAAKw7L,IAAIo8U,GAAWj1V,GAC/Bw1V,WAAWn4gB,KAAKy7L,IAAIm8U,GAAWj1V,IAExCs0V,EAAc9igB,UAAU+jgB,WAAa,SAAU5rhB,GAK3C,OAJI7K,KAAKohM,UAAYv2L,IACjB7K,KAAKohM,QAAUv2L,EACf7K,KAAKs2hB,kBAEFt2hB,MAEXw1hB,EAAc9igB,UAAUgkgB,WAAa,SAAU7rhB,GAK3C,OAJI7K,KAAKqhM,UAAYx2L,IACjB7K,KAAKqhM,QAAUx2L,EACf7K,KAAKs2hB,kBAEFt2hB,MAEXw1hB,EAAc9igB,UAAUkjgB,mBAAqB,SAAU3hgB,GACnD,IAAI85C,EAAO/tE,KAAK21hB,iBAOZQ,EAAU53gB,KAAKs7L,MAHX5lL,EAAE0uK,QAAU50H,EAAKhiE,IAFXgiE,EAAKvjE,OAAS,EACpBypB,EAAEyuK,QAAU30H,EAAK9hE,KAFX8hE,EAAKrkE,MAAQ,GAO3B1J,KAAKs0I,SAAS6hZ,GAAS,IAE3BX,EAAc9igB,UAAUk4M,UAAY,SAAUurT,GAC1C,OAAOA,EAAU53gB,KAAKu7L,GAAK,KAE/B07U,EAAc9igB,UAAUm4M,UAAY,SAAUirT,GAC1C,OAAOA,EAAU,IAAMv3gB,KAAKu7L,IAEhC07U,EAAc9igB,UAAUujgB,uBAAyB,SAAUH,GACvD,OAAOA,EAAU,EAAI,IAAMA,EAAUA,GAEzCN,EAAc9igB,UAAUikgB,kBAAoB,SAAUR,GAQlD,OAPAA,GAAqB,EAAV53gB,KAAKu7L,KACDv7L,KAAKu7L,GAChBq8U,GAAqB,EAAV53gB,KAAKu7L,GAEXq8U,GAAW53gB,KAAKu7L,KACrBq8U,GAAqB,EAAV53gB,KAAKu7L,IAEbq8U,GAEXX,EAAc9igB,UAAU8jgB,UAAY,WAChC,OAAOx2hB,KAAKkhM,QAEhBs0V,EAAc9igB,UAAUkkgB,UAAY,SAAU9sZ,GAC1C,OAAI9pI,KAAKkhM,SAAWp3D,IAGpB9pI,KAAKkhM,OAASp3D,EACd9pI,KAAKu2hB,sBAHMv2hB,MAMfw1hB,EAAc9igB,UAAUwia,cAAgB,SAAUmQ,GAC9C,IAAI3jZ,EAAQ1hD,KAIZ,OAHAA,KAAKymb,4BAA4Bzmb,KAAMolc,GAAgBE,cAAe,WAClED,EAAW3jZ,EAAMo0e,WAEd91hB,MAEXw1hB,EAAc9igB,UAAUopG,SAAW,SAAUq6Z,GACzC,OAAOA,EAAUn2hB,KAAK6qO,UAAU7qO,KAAK81hB,SAAW91hB,KAAK81hB,SAEzDN,EAAc9igB,UAAU4hH,SAAW,SAAUwhZ,EAASK,GAClD,IAAIU,EAcJ,OATIA,EAJCV,EAIcL,EAHA91hB,KAAK22hB,kBAAkB32hB,KAAK6qO,UAAUirT,IAKzDA,EAAU91hB,KAAK4qO,UAAUisT,GACrB72hB,KAAK81hB,UAAYA,IACjB91hB,KAAK81hB,QAAUv3gB,KAAKs7B,MAAMi8e,GAC1B91hB,KAAKu2hB,qBACLv2hB,KAAKk2hB,oBAAoBW,GACzB72hB,KAAKy4V,cAAc,CAAE/3V,KAAM0kc,GAAgBE,iBAExCtlc,MAEXw1hB,EAAc9igB,UAAUgyL,SAAW,SAAUh7M,GAEzC,OADA0oG,GAAEqvR,cAAczhY,KAAKsmY,SAAU58X,GACxB1J,MAEXw1hB,EAAc9igB,UAAUxR,QAAU,WAC9BlhB,KAAKkid,YAAYC,iBAAiBnid,KAAKy1hB,cACvCj9c,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCw1hB,EAAc7qG,SAAW,kjBACzB4qG,GAAc,CACVrrG,GAAY,WACbsrG,EAAc9igB,UAAW,cAAU,GACtC6igB,GAAc,CACVrrG,GAAY,kBACbsrG,EAAc9igB,UAAW,qBAAiB,GAC7C6igB,GAAc,CACVrrG,GAAY,iBACbsrG,EAAc9igB,UAAW,oBAAgB,GAC5C6igB,GAAc,CACVrrG,GAAY,gBACbsrG,EAAc9igB,UAAW,mBAAe,GAC3C6igB,GAAc,CACV54I,GAAU,gBACX64I,EAAc9igB,UAAW,mBAAe,GACpC8igB,EAxLwB,CAyLjC/wF,IAQEqyF,IACI1tZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFutZ,GAAgC,SAAUv+c,GAE1C,SAASu+c,IACL,IAAIr1e,EAAmB,OAAX82B,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAGhE,OAFA0hD,EAAM75B,UAAY,mBAClB65B,EAAMm1O,UAAY,WACXn1O,EAOX,OAZAo1e,GAAaC,EAAgBv+c,GAO7Bu+c,EAAerkgB,UAAU4hH,SAAW,SAAU/yI,EAAOyra,GAGjD,OAFAx0V,EAAO9lD,UAAU4hH,SAASp/G,KAAKl1B,KAAMuB,EAAOyra,GAC5C56T,GAAEmuR,oBAAoBvgY,KAAKsmY,SAAU,cAAetmY,KAAK87H,YAClD97H,MAEJ+2hB,EAbyB,CAclCthB,IAQEuhB,GAAuD,SAAUntZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAS5DmtZ,GAAoC,WACpC,SAASA,IACLj3hB,KAAKk3hB,WAAa,GA6HtB,OA3HAD,EAAmBvkgB,UAAUk7Z,cAAgB,WACzC5tb,KAAK8b,OAAS9b,KAAKoqY,mBAAmBkzC,mBACtCt9a,KAAKm3hB,aAAen3hB,KAAKoqY,mBAAmBmzC,0BAEhD05G,EAAmBvkgB,UAAU4xc,aAAe,SAAU5vF,EAASnmC,EAAQkwI,GAGnE,GADqBz+e,KAAK8b,QAAW44X,EAAQc,OAC7C,CAIA,IAAIlkY,EAAOtR,KAAKo3hB,aAAa1iJ,GAAS,GAMtC,OAAQnmC,GACJ,KAAK+hC,GAAUoD,YACX1zY,KAAKq3hB,oBAAoB/lhB,EAAKrF,MAC9BqF,EAAKrF,KAAOwye,EACZ,MACJ,KAAKnuG,GAAUmD,aACXzzY,KAAKq3hB,oBAAoB/lhB,EAAKpF,OAC9BoF,EAAKpF,MAAQuye,EACb,MACJ,QACIz+e,KAAKq3hB,oBAAoB/lhB,EAAK8/C,QAC9B9/C,EAAK8/C,OAASqtb,EAGtBz+e,KAAKk3hB,WAAWr7gB,KAAK,SAAUE,EAAGC,GAC9B,OAAOA,EAAEs7gB,iBAAmBv7gB,EAAEu7gB,mBAElCt3hB,KAAK2kgB,WAAW3kgB,KAAKm3hB,mBA1BjBn3hB,KAAKq3hB,oBAAoB54C,IA4BjCw4C,EAAmBvkgB,UAAU0kgB,aAAe,SAAU1iJ,EAAS6iJ,GAE3D,IAAIj/f,OADe,IAAfi/f,IAAyBA,GAAa,GAE1C,IAAK,IAAI1vhB,EAAI,EAAGA,EAAI7H,KAAKk3hB,WAAW/yhB,OAAQ0D,IAAK,CAC7C,IAAIyJ,EAAOtR,KAAKk3hB,WAAWrvhB,GAC3B,GAAIyJ,EAAKojY,UAAYA,EAAS,CAC1Bp8W,EAAMhnB,EACN,OAYR,OATKgnB,GAAOi/f,GAIRv3hB,KAAKk3hB,WAAWtzhB,KAHhB00B,EAAM,CACFo8W,QAASA,IAIbp8W,GACAt4B,KAAKw3hB,eAAel/f,GAEjBA,GAEX2+f,EAAmBvkgB,UAAU8kgB,eAAiB,SAAUlmhB,GACpDA,EAAKgmhB,kBAAmB,IAAI58e,MAAOwmE,WAEvC+1a,EAAmBvkgB,UAAU2kgB,oBAAsB,SAAU54C,GACrDA,GAAQA,EAAKv9d,SACbu9d,EAAKv9d,WAGb+1gB,EAAmBvkgB,UAAUiye,WAAa,SAAU1mf,GAEhD,IAAK,IAAIpW,EAAIoW,EAAYpW,EAAI7H,KAAKk3hB,WAAW/yhB,OAAQ0D,IAAK,CACtD,IAAIyJ,EAAOtR,KAAKk3hB,WAAWrvhB,GAC3B7H,KAAKq3hB,oBAAoB/lhB,EAAK8/C,QAC9BpxD,KAAKq3hB,oBAAoB/lhB,EAAKrF,MAC9BjM,KAAKq3hB,oBAAoB/lhB,EAAKpF,OAG9BlM,KAAKk3hB,WAAW/yhB,OAAS8Z,IACzBje,KAAKk3hB,WAAW/yhB,OAAS8Z,IAGjCg5gB,EAAmBvkgB,UAAUxgB,IAAM,SAAUwiY,EAASnmC,GAClD,GAAKmmC,EAAQc,OAAb,CAGA,IACIl9W,EADAhnB,EAAOtR,KAAKo3hB,aAAa1iJ,GAE7B,GAAIpjY,EACA,OAAQi9V,GACJ,KAAK+hC,GAAUoD,YACPpiY,EAAKrF,OACLqsB,EAAMhnB,EAAKrF,KACXqF,EAAKrF,UAAOxH,GAEhB,MACJ,KAAK6rY,GAAUmD,aACPniY,EAAKpF,QACLosB,EAAMhnB,EAAKpF,MACXoF,EAAKpF,WAAQzH,GAEjB,MACJ,QACQ6M,EAAK8/C,SACL94B,EAAMhnB,EAAK8/C,OACX9/C,EAAK8/C,YAAS3sD,GAK9B,OAAO6zB,IAEX2+f,EAAmBvkgB,UAAUxR,QAAU,WACnClhB,KAAK2kgB,WAAW,IAEpBqyB,GAAc,CACVr6I,GAAU,uBACXs6I,EAAmBvkgB,UAAW,0BAAsB,GACvDskgB,GAAc,CACV16I,IACD26I,EAAmBvkgB,UAAW,gBAAiB,MAClDskgB,GAAc,CACVx6I,IACDy6I,EAAmBvkgB,UAAW,UAAW,MACvBskgB,GAAc,CAC/B97I,GAAK,uBACN+7I,GA9HiC,GAwIpCQ,GAAuD,SAAU5tZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D4tZ,GAAkC,WAClC,SAASA,KAyDT,OAvDAA,EAAiBhlgB,UAAUo2c,WAAa,SAAUyK,GAC9C,OAAQA,EAAQj1C,WACZ,KAAKhuD,GAAU4C,WACX,OAAOlzY,KAAKise,eAAeh0D,sBAAsBs7D,EAAQlpe,UAC7D,KAAKimY,GAAU6C,cACX,OAAOnzY,KAAKise,eAAe/zD,yBAAyBq7D,EAAQlpe,UAChE,QACI,OAAOrK,KAAKwub,SAAS4wB,OAAOm0B,EAAQlpe,YAGhDqthB,EAAiBhlgB,UAAUymc,QAAU,SAAUw+D,EAAMC,GAEjD,OAAKD,IAASC,KAITD,IAASC,IAAWD,GAAQC,IAI1BD,EAAKtthB,WAAauthB,EAAKvthB,UAAYsthB,EAAKr5F,WAAas5F,EAAKt5F,WAGrEo5F,EAAiBhlgB,UAAUgyB,OAAS,SAAUize,EAAMC,GAChD,OAAQD,EAAKr5F,WACT,KAAKhuD,GAAU4C,WAEX,GAAI0kJ,EAAKt5F,YAAchuD,GAAU4C,WAC7B,OAAO,EAEX,MACJ,KAAK5C,GAAU6C,cAEX,GAAIykJ,EAAKt5F,YAAchuD,GAAU6C,cAC7B,OAAO,EAEX,MACJ,QAEI,GAAI/gS,GAAE8rR,OAAO05J,EAAKt5F,WACd,OAAOs5F,EAAKt5F,YAAchuD,GAAU4C,WAIhD,OAAOykJ,EAAKtthB,SAAWuthB,EAAKvthB,UAEhCothB,GAAc,CACV96I,GAAU,aACX+6I,EAAiBhlgB,UAAW,gBAAY,GAC3C+kgB,GAAc,CACV96I,GAAU,mBACX+6I,EAAiBhlgB,UAAW,sBAAkB,GAC9B+kgB,GAAc,CAC7Bv8I,GAAK,qBACNw8I,GAzD+B,GAyElCG,GAAmC,WACnC,SAASA,KAkBT,OAhBAA,EAAkBnlgB,UAAU08b,SAAW,SAAU7C,GAE7C,OAAOvsd,KAAK83hB,mBADGvrE,EAAalid,SAAuDkid,EAAa/md,OAA9C+md,EAAajuB,YAGnEu5F,EAAkBnlgB,UAAUolgB,mBAAqB,SAAUzthB,EAAU7E,EAAQ84b,GACzE,OAAOj0b,EAAW,KAAoB,MAAbi0b,EAAoB,OAASA,GAAa,IAAM94b,EAAOy7Y,SAEpF42I,EAAkBnlgB,UAAUsvF,OAAS,SAAU+1a,EAAOC,GAIlD,OAHgBD,EAAMvyhB,SAAWwyhB,EAAMxyhB,QACnBuyhB,EAAMz5F,YAAc05F,EAAM15F,WAC7By5F,EAAM1thB,WAAa2thB,EAAM3thB,UAnBS,SAAUw/H,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EAkBxCmuZ,CAAc,CAC9B/8I,GAAK,sBACN28I,GAlBgC,GA4BnCK,GAAuD,SAAUruZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5DquZ,GAAgC,WAChC,SAASA,KAqIT,OAnIAA,EAAezlgB,UAAU4yQ,KAAO,WAC5BtlS,KAAKulb,oBAAoBvlb,KAAKoqY,mBAAmB6tC,uBACjDj4a,KAAKwlb,uBAAuBxlb,KAAKoqY,mBAAmB8tC,2BAExDigH,EAAezlgB,UAAU0N,QAAU,SAAUu1O,GAEzC,OAAOvjK,GAAEosR,eADE7oH,IAAa26H,GAAU4C,WAAalzY,KAAKo4hB,cAAgBp4hB,KAAKq4hB,mBAG7EF,EAAezlgB,UAAU89c,eAAiB,SAAU76N,GAChD,OAAQ31Q,KAAKogC,QAAQu1O,IAEzBwiR,EAAezlgB,UAAU4lgB,cAAgB,SAAUn5F,EAAOxpL,GACtD,IAAIpuQ,EAAOouQ,IAAa26H,GAAU4C,WAAalzY,KAAKo4hB,cAAgBp4hB,KAAKq4hB,iBACzE,GAAIjmb,GAAEosR,eAAej3X,GACjB,OAAO,EAEX,IAAK,IAAIM,EAAI,EAAGA,EAAIN,EAAKpD,OAAQ0D,IAAK,CAClC,IAAI6sY,EAAUntY,EAAKM,GAInB,GAHkB6sY,EAAQ0qD,OAAS1qD,EAAQp+B,UAAY,GAGpC6oF,EACf,OAAOt3b,EAGf,OAAON,EAAKpD,OAAS,GAEzBg0hB,EAAezlgB,UAAU6yZ,oBAAsB,SAAU9xE,GACrDzzW,KAAKo4hB,cAAgBp4hB,KAAKu4hB,oBAAoB9kL,GAAS,GAMvDzzW,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOmB,8BACbjmC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBiuK,EAAezlgB,UAAU8yZ,uBAAyB,SAAU/xE,GACxDzzW,KAAKq4hB,iBAAmBr4hB,KAAKu4hB,oBAAoB9kL,GAAS,GAM1DzzW,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOmB,8BACbjmC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBiuK,EAAezlgB,UAAU6lgB,oBAAsB,SAAUC,EAASh7L,GAC9D,IAAI97S,EAAQ1hD,KACRw2Y,EAAW,GACf,GAAIgiJ,EAAS,CACT,IAAIC,EAAe,EACnBD,EAAQnlhB,QAAQ,SAAUqlhB,EAAU/uhB,GAChC,IAAI+qY,EAAU,IAAI8oD,GAClB97Y,EAAMlwC,QAAQ4oY,SAAS1F,GACvBA,EAAQ5kY,KAAO4ohB,EACfhkJ,EAAQ1uX,IAAMw3U,EAAQ,IAAM,KAAO,IAAM7zV,EACzC+qY,EAAQ4pD,UAAY9gG,EAAQ8yC,GAAU4C,WAAa5C,GAAU6C,cAC7DuB,EAAQ6qD,UAAUk5F,GAClB/jJ,EAAQ8rD,aAAa9+Y,EAAM0oV,mBAAmB84C,oBAAoBxuC,GAASlqY,QAC3EkqY,EAAQisD,YAAYh3b,GACpB8uhB,GAAgB/jJ,EAAQp+B,UACxBkgC,EAAS5yY,KAAK8wY,KAGtB,OAAO8B,GAEX2hJ,EAAezlgB,UAAUulZ,oBAAsB,WAC3C,OAAOj4a,KAAKo4hB,eAEhBD,EAAezlgB,UAAUwlZ,uBAAyB,WAC9C,OAAOl4a,KAAKq4hB,kBAEhBF,EAAezlgB,UAAUsne,wBAA0B,WAC/C,OAAOh6f,KAAK24hB,eAAe34hB,KAAKo4hB,gBAEpCD,EAAezlgB,UAAUsqe,qBAAuB,WAC5C,OAAOh9f,KAAKo4hB,cAAgBp4hB,KAAKo4hB,cAAcj0hB,OAAS,GAE5Dg0hB,EAAezlgB,UAAUwqe,wBAA0B,WAC/C,OAAOl9f,KAAKq4hB,iBAAmBr4hB,KAAKq4hB,iBAAiBl0hB,OAAS,GAElEg0hB,EAAezlgB,UAAUiid,gBAAkB,SAAUhre,GACjD,OAAO3J,KAAKo4hB,cAAczuhB,IAE9BwuhB,EAAezlgB,UAAUkid,mBAAqB,SAAUjre,GACpD,OAAO3J,KAAKq4hB,iBAAiB1uhB,IAEjCwuhB,EAAezlgB,UAAUkmgB,oBAAsB,SAAU3lgB,GACjDm/E,GAAEosR,eAAex+X,KAAKo4hB,gBAG1Bp4hB,KAAKo4hB,cAAc/khB,QAAQ4f,IAE/BklgB,EAAezlgB,UAAUmmgB,uBAAyB,SAAU5lgB,GACpDm/E,GAAEosR,eAAex+X,KAAKq4hB,mBAG1Br4hB,KAAKq4hB,iBAAiBhlhB,QAAQ4f,IAElCklgB,EAAezlgB,UAAUwne,2BAA6B,WAClD,OAAOl6f,KAAK24hB,eAAe34hB,KAAKq4hB,mBAEpCF,EAAezlgB,UAAUimgB,eAAiB,SAAUniJ,GAChD,GAAKA,GAAgC,IAApBA,EAASryY,OAGrB,CACD,IAAI20hB,EAAW1mb,GAAEj7F,KAAKq/X,GACtB,OAAOsiJ,EAAS15F,OAAS05F,EAASxiL,UAJlC,OAAO,GAOf4hL,GAAc,CACVv7I,GAAU,uBACXw7I,EAAezlgB,UAAW,0BAAsB,GACnDwlgB,GAAc,CACVv7I,GAAU,iBACXw7I,EAAezlgB,UAAW,oBAAgB,GAC7CwlgB,GAAc,CACVv7I,GAAU,YACXw7I,EAAezlgB,UAAW,eAAW,GACxCwlgB,GAAc,CACVv7I,GAAU,cACXw7I,EAAezlgB,UAAW,iBAAa,GAC1CwlgB,GAAc,CACVv7I,GAAU,YACXw7I,EAAezlgB,UAAW,eAAW,GACxCwlgB,GAAc,CACV57I,IACD67I,EAAezlgB,UAAW,OAAQ,MACpBwlgB,GAAc,CAC3Bh9I,GAAK,mBACNi9I,GArI6B,GA+IhCY,IACI3vZ,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFwvZ,GACA,SAAwBC,GACpBj5hB,KAAKi5hB,iBAAmBA,GAI5BC,GAAoC,SAAU1gd,GAE9C,SAAS0gd,EAAmBD,EAAkBE,EAAcC,GACxD,IAAI13e,EAAQ82B,EAAOtjD,KAAKl1B,KAAMi5hB,IAAqBj5hB,KAGnD,OAFA0hD,EAAMy3e,aAAeA,EACrBz3e,EAAM03e,WAAaA,EACZ13e,EAEX,OAPAq3e,GAAaG,EAAoB1gd,GAO1B0gd,EAR6B,CAStCF,IACEK,GAA+B,WAC/B,SAASA,EAAcC,GACnBt5hB,KAAKu5hB,YAAc,GACnBv5hB,KAAKs5hB,aAAeA,GAA8BD,EAAcG,mBAChEx5hB,KAAKu5hB,YAAc,IAAIhvhB,MAAMvK,KAAKs5hB,cAmBtC,OAjBAD,EAAc3mgB,UAAUuM,IAAM,WAC1B,OAAOj/B,KAAKu5hB,YAAYt6f,OAE5Bo6f,EAAc3mgB,UAAU9uB,KAAO,SAAU0N,GACdA,EAAK2nhB,kBAAoB3nhB,EAAK2nhB,iBAAiB90hB,OAAS,IAI3EnE,KAAKu5hB,YAAYp1hB,SAAWnE,KAAKs5hB,cACjCt5hB,KAAKu5hB,YAAY5khB,QAErB3U,KAAKu5hB,YAAY31hB,KAAK0N,KAE1B+nhB,EAAc3mgB,UAAUhiB,MAAQ,WAC5B1Q,KAAKu5hB,YAAc,IAEvBF,EAAcG,mBAAqB,GAC5BH,EAvBwB,GAgC/BI,GAAuD,SAAU5vZ,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D4vZ,GAAiC,WACjC,SAASA,IACL,IAAIh4e,EAAQ1hD,KACZA,KAAKi5hB,iBAAmB,GACxBj5hB,KAAK25hB,eAAgB,EACrB35hB,KAAK45hB,cAAe,EACpB55hB,KAAK65hB,WAAY,EACjB75hB,KAAK85hB,WAAY,EACjB95hB,KAAK6yD,OAAS,GACd7yD,KAAK4vW,mBAAqB,SAAUtnV,GAEhC,GAD0Bo5B,EAAMi4e,eAAiBj4e,EAAMk4e,cAAgBl4e,EAAMm4e,WAAan4e,EAAMo4e,UAChG,CAGA,IAAmFxgO,EAAWhxS,EAAMgxS,SAAU/3T,EAAQ+mB,EAAM/mB,MACxHw4hB,EAAkB,CAClBz7F,UAFYh2a,EAAMg2a,UAGlBj0b,SAHwCie,EAAMje,SAI9CiN,SAJiEgR,EAAM9iB,OAItDqgZ,WACjBvsF,SAAUA,EACVpnL,SAAU3wI,GAEdmgD,EAAMu3e,iBAAiBr1hB,KAAKm2hB,KAEhC/5hB,KAAKg6hB,YAAc,WACft4e,EAAMu4e,UAAUvphB,QAChBgxC,EAAMw4e,UAAUxphB,SA2NxB,OAxNAgphB,EAAgBhngB,UAAU4yQ,KAAO,WAC7B,GAAKtlS,KAAKoqY,mBAAmBwuC,wBAA7B,CAGA,IAAIuhH,EAAgBn6hB,KAAKoqY,mBAAmByuC,8BACxCshH,GAAiB,IAGrBn6hB,KAAKi6hB,UAAY,IAAIZ,GAAcc,GACnCn6hB,KAAKk6hB,UAAY,IAAIb,GAAcc,GACnCn6hB,KAAK6yD,OAAS,GAAG75C,OAAOhZ,KAAKo6hB,yBAA0Bp6hB,KAAKq6hB,0BAA2Br6hB,KAAKs6hB,oBAAqBt6hB,KAAKu6hB,mBAAoB,CACtIv6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOmC,yBAA0BlxZ,KAAK4vW,oBAGzE5vW,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO0B,oBAAqBzwZ,KAAKg6hB,aACpEh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOG,gCAAiClvZ,KAAKg6hB,aAChFh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOC,gCAAiChvZ,KAAKg6hB,aAChFh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOY,0BAA2B3vZ,KAAKg6hB,aAC1Eh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOI,+BAAgCnvZ,KAAKg6hB,aAC/Eh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOS,mBAAoBxvZ,KAAKg6hB,aACnEh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOW,oBAAqB1vZ,KAAKg6hB,aACpEh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOU,qBAAsBzvZ,KAAKg6hB,aACrEh6hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOyE,mBAAoBxzZ,KAAKg6hB,kBAG3EN,EAAgBhngB,UAAUxR,QAAU,WAC5BlhB,KAAK6yD,OAAO1uD,SACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC7Cj3C,KAAK6yD,OAAS,KAGtB6me,EAAgBhngB,UAAUuhe,KAAO,WAC7B,GAAKj0f,KAAKi6hB,UAAV,CAGA,IAAIO,EAAax6hB,KAAKi6hB,UAAUh7f,MAC3Bu7f,GAAeA,EAAWvB,mBAG/Bj5hB,KAAKy6hB,cAAcD,EAAY,SAAUT,GAAmB,OAAOA,EAAgBzgO,WAC/EkhO,aAAsBtB,GACtBl5hB,KAAK06hB,yBAAyBF,EAAWvB,iBAAkBuB,EAAWrB,cAGtEn5hB,KAAK06hB,yBAAyBF,EAAWvB,kBAE7Cj5hB,KAAKk6hB,UAAUt2hB,KAAK42hB,MAExBd,EAAgBhngB,UAAUshe,KAAO,WAC7B,GAAKh0f,KAAKk6hB,UAAV,CAGA,IAAIS,EAAa36hB,KAAKk6hB,UAAUj7f,MAC3B07f,GAAeA,EAAW1B,mBAG/Bj5hB,KAAKy6hB,cAAcE,EAAY,SAAUZ,GAAmB,OAAOA,EAAgB7nZ,WAC/EyoZ,aAAsBzB,GACtBl5hB,KAAK06hB,yBAAyBC,EAAW1B,iBAAkB0B,EAAWvB,YAGtEp5hB,KAAK06hB,yBAAyBC,EAAW1B,kBAE7Cj5hB,KAAKi6hB,UAAUr2hB,KAAK+2hB,MAExBjB,EAAgBhngB,UAAU+ngB,cAAgB,SAAU13d,EAAQ63d,GACxD,IAAIl5e,EAAQ1hD,KACZ+iE,EAAOk2d,iBAAiB5lhB,QAAQ,SAAU0mhB,GACtC,IAAgFzihB,EAAWyihB,EAAgBzihB,SAEvGujhB,EAAan5e,EAAMonb,WADL,CAAEz+d,SADL0vhB,EAAgB1vhB,SACSi0b,UADay7F,EAAgBz7F,YAI5C,MAArBu8F,EAAWz7F,QAGfy7F,EAAW15F,aAAa7pb,EAAUsjhB,EAAeb,OAGzDL,EAAgBhngB,UAAUgogB,yBAA2B,SAAUzB,EAAkB79e,GAC7E,GAAIA,EAAO,CACP,IAAI09a,EAAW19a,EAAM09a,SACjBE,EAAS59a,EAAM49a,OACf8hE,EAAoB,CACpBx8F,UAAWw6B,EAASx6B,UACpBj0b,SAAUyud,EAASzud,SACnBiN,SAAU8jC,EAAM2/e,YAAYl1I,YAYhC,OAVA7lZ,KAAKg7hB,mBAAmBF,QASxB96hB,KAAKmjZ,QAAQk/G,aARS,CAClB3N,cAAe57B,EAASzud,SACxBsqf,eAAgB77B,EAASx6B,UACzBs2D,YAAa57B,EAAO3ud,SACpBwqf,aAAc77B,EAAO16B,UACrBw2D,YAAa15c,EAAM2/e,YACnB51hB,QAASi2C,EAAMj2C,UAKvB,IAAI40hB,EAAkBd,EAAiB,GAGnCvxhB,EAAM1H,KAAK8oe,WADG,CAAEz+d,SADL0vhB,EAAgB1vhB,SACSi0b,UADay7F,EAAgBz7F,YAQrEt+b,KAAKg7hB,mBALiB,CAClB18F,UAAWy7F,EAAgBz7F,UAC3Bj0b,SAAU3C,EAAI2C,SACdiN,SAAUyihB,EAAgBzihB,YAIlCoihB,EAAgBhngB,UAAUsogB,mBAAqB,SAAUC,GACrD,IAAI5whB,EAAW4whB,EAAgB5whB,SAAUiN,EAAW2jhB,EAAgB3jhB,SAAUgnb,EAAY28F,EAAgB38F,UAC1Gt+b,KAAKmjZ,QAAQ+vF,mBAAmB7oe,GAChCrK,KAAKmjZ,QAAQgwF,oBAAoB77d,GAC7BonY,GAAeM,aAAa3hX,EAAQ6/W,YAAYo3B,uBAChDt0a,KAAKmjZ,QAAQm/G,sBAEjBtigB,KAAKqsd,gBAAgBmK,eAAensd,EAAUiN,EAAUgnb,GAAW,IAEvEo7F,EAAgBhngB,UAAU0ngB,uBAAyB,WAC/C,IAAI14e,EAAQ1hD,KACZ,MAAO,CACHA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOwD,0BAA2B,WACjE7wW,EAAMk4e,cAAe,IAEzB55hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAOyD,0BAA2B,WACjE,IAAIzvV,EAAS,IAAIi2d,GAAet3e,EAAMu3e,kBACtCv3e,EAAMw5e,uBAAuBn4d,GAC7BrhB,EAAMk4e,cAAe,MAIjCF,EAAgBhngB,UAAU2ngB,wBAA0B,WAChD,IAAI34e,EAAQ1hD,KACZ,MAAO,CACHA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO0D,2BAA4B,WAClE/wW,EAAMi4e,eAAgB,IAE1B35hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO2D,2BAA4B,WAGlE,GAFAhxW,EAAMi4e,eAAgB,GACEj4e,EAAMk4e,eAAiBl4e,EAAMm4e,YAAcn4e,EAAMo4e,UACnD,CAClB,IAAI/2d,EAAS,IAAIi2d,GAAet3e,EAAMu3e,kBACtCv3e,EAAMw5e,uBAAuBn4d,QAK7C22d,EAAgBhngB,UAAU4ngB,kBAAoB,WAC1C,IAAI54e,EAAQ1hD,KACZ,MAAO,CACHA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO2B,kBAAmB,WACzDhvW,EAAMm4e,WAAY,IAEtB75hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO4B,gBAAiB,WACvD,IAAI5tV,EAAS,IAAIi2d,GAAet3e,EAAMu3e,kBACtCv3e,EAAMw5e,uBAAuBn4d,GAC7BrhB,EAAMm4e,WAAY,MAI9BH,EAAgBhngB,UAAU6ngB,iBAAmB,WACzC,IAAI74e,EAAQ1hD,KACZ,MAAO,CACHA,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO6B,iBAAkB,WACxDlvW,EAAMo4e,WAAY,IAEtB95hB,KAAK0/Y,aAAap0X,iBAAiByjY,GAAO8B,eAAgB,SAAUvoY,GAChE,IAAIy6C,EAAS,IAAIm2d,GAAmBx3e,EAAMu3e,iBAAkB3wgB,EAAM6wgB,aAAc7wgB,EAAM8wgB,YACtF13e,EAAMw5e,uBAAuBn4d,GAC7BrhB,EAAMo4e,WAAY,MAI9BJ,EAAgBhngB,UAAUwogB,uBAAyB,SAAUn4d,GACzD/iE,KAAKi6hB,UAAUr2hB,KAAKm/D,GACpB/iE,KAAKi5hB,iBAAmB,GACxBj5hB,KAAKk6hB,UAAUxphB,SAEnBgphB,EAAgBhngB,UAAUo2c,WAAa,SAAUyK,GAC7C,OAAQA,EAAQj1C,WACZ,KAAKhuD,GAAU4C,WACX,OAAOlzY,KAAKise,eAAeh0D,sBAAsBs7D,EAAQlpe,UAC7D,KAAKimY,GAAU6C,cACX,OAAOnzY,KAAKise,eAAe/zD,yBAAyBq7D,EAAQlpe,UAChE,QACI,OAAOrK,KAAKwub,SAAS4wB,OAAOm0B,EAAQlpe,YAGhDovhB,GAAc,CACV98I,GAAU,uBACX+8I,EAAgBhngB,UAAW,0BAAsB,GACpD+mgB,GAAc,CACV98I,GAAU,oBACX+8I,EAAgBhngB,UAAW,uBAAmB,GACjD+mgB,GAAc,CACV98I,GAAU,iBACX+8I,EAAgBhngB,UAAW,oBAAgB,GAC9C+mgB,GAAc,CACV98I,GAAU,YACX+8I,EAAgBhngB,UAAW,eAAW,GACzC+mgB,GAAc,CACV98I,GAAU,aACX+8I,EAAgBhngB,UAAW,gBAAY,GAC1C+mgB,GAAc,CACV98I,GAAU,mBACX+8I,EAAgBhngB,UAAW,sBAAkB,GAChD+mgB,GAAc,CACVn9I,IACDo9I,EAAgBhngB,UAAW,OAAQ,MACtC+mgB,GAAc,CACVj9I,IACDk9I,EAAgBhngB,UAAW,UAAW,MACvB+mgB,GAAc,CAC5Bv+I,GAAK,oBACNw+I,GApP8B,GA8PjCyB,GAAsB,WACtB,SAASA,EAAKvuB,EAAUljJ,EAAa5/R,GACjC,GAAK8ib,EAIL,GAAKljJ,EAAL,CAIA,IAAIluS,IAAUkuS,EAAYluS,MAC1Bx7E,KAAK0pX,YAAcA,EACnB,IAAI0xK,EAAoBp7hB,KAAKk/Y,qBAAqBp1T,GAC9CovT,EAAcl5Y,KAAKq7hB,gBAAgBD,GACnCE,EAAoBt7hB,KAAKu7hB,4BAA4BH,GACrDrxK,EAAwB/pX,KAAKw7hB,oBAAoB5uB,EAAU9ib,GAC/D,GAAKovT,EAAL,CAGA,IAAIC,EAAgB,CAChBpvB,sBAAuBA,EACvBmvB,YAAaA,EACbrlC,WAAYynL,EACZ9/c,MAAOA,GAEXx7E,KAAK+4Y,OAAS,IAAIwyH,GAAO,UAAW,WAAc,OAAO7hJ,EAAYluS,QACrE,IAAIigd,EAAgB,IAAIlwB,GAAO,UAAW,WAAc,OAAOpyH,EAAc39T,QAC7Ex7E,KAAKwR,QAAU,IAAIsnY,GAAQK,EAAesiJ,GAC1Cz7hB,KAAK07hB,6BAA6BN,GAClC,IACIlxD,EAAW,IADMpgZ,GAAUA,EAAO6xc,eAAkBzuB,IAExDltgB,KAAKwR,QAAQ4oY,SAAS8vF,GACtBlqe,KAAK47hB,oBACL57hB,KAAK67hB,uBAAuBnyK,GAC5B,IAAIoyK,EAAep9I,GAAeM,aAAa3hX,EAAQ6/W,YAAY2wH,sBACnE7tgB,KAAK+4Y,OAAOt9T,IAAI,0CAA4Cqgd,SA5BxD/wf,QAAQ/V,MAAM,qDAJd+V,QAAQ/V,MAAM,gDAmNtB,OAjLAmmgB,EAAKzogB,UAAUwsX,qBAAuB,SAAUp1T,GAC5C,IAAIiyc,EAAuBjyc,EAASA,EAAOkgS,QAAU,KACjDrpV,EAAa+9W,GAAeQ,uBAC5B88I,EAAa,GACbC,EAAW,GAEf,SAASC,EAAUv9I,EAAavhX,IAC5B,SAA6BA,GACpB6+f,EAAS7+f,EAAOyhX,cACjBo9I,EAAS7+f,EAAOyhX,aAAc,EAC9Bm9I,EAAWp4hB,KAAKw5B,GAChBshX,GAAe3jL,SAAS39L,EAAQuhX,IAGxCw9I,CAAoB/+f,GAChBA,EAAOg/f,kBACPh/f,EAAOg/f,iBAAiB/ohB,QAAQ6ohB,EAAU3xf,KAAK,KAAMo0W,IAS7D,OANIo9I,GACAA,EAAqB1ohB,QAAQ6ohB,EAAU3xf,KAAK,MAAM,IAElD5J,GACAA,EAAWttB,QAAQ6ohB,EAAU3xf,KAAK,MAAOm0W,GAAeS,mBAErD68I,GAEXb,EAAKzogB,UAAUgpgB,6BAA+B,SAAUN,GACpD,IAAItvF,EAAwB9rc,KAAKwR,QAAQ0qY,QAAQ,yBAC3Bl8Y,KAAKq8hB,oBAAoBjB,EAAmB,SAAUh+f,GAAU,OAAOA,EAAOk/f,eAAiBl/f,EAAOk/f,eAAiB,KAC7HjphB,QAAQ,SAAUkphB,GAC9BzwF,EAAsB4P,yBAAyB6gF,EAAS1iJ,cAAe0iJ,EAASziJ,mBAGxFqhJ,EAAKzogB,UAAU8ogB,oBAAsB,SAAU5uB,EAAU9ib,GACrD,IAAIggS,EAAqBhgS,EAASA,EAAOggS,mBAAqB,KAC1D13Q,GAAEgsR,QAAQtU,KACVA,EAAqB,IAAI4rJ,IAE7B,IAAIrzR,EAAO,CACPqnI,YAAa1pX,KAAK0pX,YAClBkjJ,SAAUA,EACV56C,OAAQloY,EAASA,EAAOkoY,OAAS,KACjCJ,SAAU9nY,EAASA,EAAO8nY,SAAW,KACrCy7C,mBAAoBvjb,EAASA,EAAOujb,mBAAqB,KACzDxjJ,oBAAqB//R,EAASA,EAAO+/R,oBAAsB,KAC3DC,mBAAoBA,GAKxB,OAHIhgS,GAAUA,EAAOigS,uBACjB33Q,GAAErrE,OAAOs7M,EAAMv4J,EAAOigS,uBAEnB1nI,GAEX84S,EAAKzogB,UAAU6ogB,4BAA8B,SAAUH,GACnD,IAAIvnL,EAAa,CACb,CAAEgmC,cAAe,aAAcC,eAAgBqsD,IAC/C,CAAEtsD,cAAe,gBAAiBC,eAAgB27H,IAClD,CAAE57H,cAAe,iBAAkBC,eAAgBi9I,IACnD,CAAEl9I,cAAe,mBAAoBC,eAAgB8zI,IACrD,CAAE/zI,cAAe,kBAAmBC,eAAgBi0I,IACpD,CAAEl0I,cAAe,qBAAsBC,eAAgBg5I,IACvD,CAAEj5I,cAAe,eAAgBC,eAAgBu5I,IACjD,CAAEx5I,cAAe,WAAYC,eAAgBi7I,IAC7C,CAAEl7I,cAAe,WAAYC,eAAgBo0I,IAC7C,CAAEr0I,cAAe,gBAAiBC,eAAgB07I,IAClD,CAAE37I,cAAe,gBAAiBC,eAAgB04I,IAClD,CAAE34I,cAAe,aAAcC,eAAgBi2G,IAC/C,CAAEl2G,cAAe,eAAgBC,eAAgBssG,IACjD,CAAEvsG,cAAe,eAAgBC,eAAgBuqI,IACjD,CAAExqI,cAAe,mBAAoBC,eAAgBitI,IACrD,CAAEltI,cAAe,mBAAoBC,eAAgB+tI,IACrD,CAAEhuI,cAAe,UAAWC,eAAgB2vI,IAC5C,CAAE5vI,cAAe,WAAYC,eAAgBqxI,KAE7CqR,EAAqBx8hB,KAAKq8hB,oBAAoBjB,EAAmB,SAAUh+f,GAAU,OAAOA,EAAOk+f,kBAAoBl+f,EAAOk+f,kBAAoB,KAEtJ,OADaznL,EAAW76V,OAAOwjhB,IAGnCrB,EAAKzogB,UAAU2ogB,gBAAkB,SAAUD,GACvC,IAAIqB,EAAgBz8hB,KAAK08hB,iBAAiBtB,GAC1C,GAAKqB,EAAL,CAIA,IAAI31E,EAAQ,CACR21E,EAAe9e,GAAO+Z,GAAkBG,GACxC3d,GAA+B7e,GAAShiD,GAAuB0jE,GAC/DO,GAA2B8I,GAAuB/9E,GAClDg6E,GAAoB4B,GAAsBpP,GAAqBtI,GAC/D4rB,GAAgB1pB,GAAat+F,GAAuBhzB,GAAc+1B,GAAoBq1F,GACtFjrD,GAAqBiqC,GAAelzF,GAAkB8jH,GAAiBxuC,GAAaw9B,GACpF/7G,GAAey8G,GAAiBuT,GAChCwF,GAAmBpG,GAAYxvB,GAAcqgB,GAAe17F,GAAag8F,GACzEyC,GAAqBttD,GAAoBtB,GAAWgyD,GAAiBmB,GAAmB2L,GACxFjL,GAAuBgC,GAAuBS,GAAgBF,GAAsBpF,GACpF+F,GAAoBG,GAAwB+M,GAAmBrM,GAC/D2D,GAAwBkE,GAAuBgY,GAAoByC,IAEnEiD,EAAc38hB,KAAKq8hB,oBAAoBjB,EAAmB,SAAUh+f,GAAU,OAAOA,EAAO0pb,MAAQ1pb,EAAO0pb,MAAQ,KACvHA,EAAMljd,KAAK+zC,MAAMmva,EAAO61E,GAGxB,IAAIC,EAAoB,GAMxB,OALA91E,EAAMzzc,QAAQ,SAAUgnY,GAChBuiJ,EAAkB3zhB,QAAQoxY,GAAQ,GAClCuiJ,EAAkBh5hB,KAAKy2Y,KAGxBuiJ,IAEXzB,EAAKzogB,UAAU2pgB,oBAAsB,SAAUQ,EAAgBC,GAC3D,MAAO,GAAG9jhB,OAAO2+B,MAAM,GAAIklf,EAAepzhB,IAAIqzhB,KAElD3B,EAAKzogB,UAAUkpgB,kBAAoB,WAC/B,IAAIxxJ,EAAqBpqY,KAAKwR,QAAQ0qY,QAAQ,sBAC1CqnC,EAAmBvjb,KAAKwR,QAAQ0qY,QAAQ,oBACxC9lY,EAAag0X,EAAmBixC,gBAChCjpU,GAAE8rR,OAAO9nX,IACTmta,EAAiBztB,cAAc1/Y,EAAY,oBAEhCpW,KAAKwR,QAAQ0qY,QAAQ,YAC3B/yY,SAEbgyhB,EAAKzogB,UAAUmpgB,uBAAyB,SAAUnyK,GAC3B1pX,KAAKwR,QAAQ0qY,QAAQ,gBAM3BzjD,cALI,CACb/3V,KAAMquZ,GAAOiD,iBACb/nC,IAAKP,EAAYO,IACjBC,UAAWR,EAAYQ,aAI/BixK,EAAKzogB,UAAUgqgB,iBAAmB,SAAUtB,GACxC,IAAIvlL,EAAe71W,KAAK0pX,YAAY7T,aAEf,eAAjBA,IACA9qU,QAAQ24B,KAAK,gGACbmyS,EAAey6B,GAAUwC,4BAER,WAAjBj9B,IACA9qU,QAAQ24B,KAAK,4FACbmyS,EAAey6B,GAAUuC,4BAGxBh9B,IACDA,EAAey6B,GAAUuC,4BAE7B,IAAIkqJ,EAAkB,GACtB3B,EAAkB/nhB,QAAQ,SAAU+pB,GAChCg1E,GAAEi4Q,cAAcjtV,EAAO4/f,UAAW,SAAUrghB,EAAKpb,GAC7Cw7hB,EAAgBpghB,GAAOpb,MAG/B,IAAIk7hB,EAAgBM,EAAgBlnL,GACpC,OAAIzjQ,GAAE8rR,OAAOu+J,GACFA,GAGH5mL,IAAiBy6B,GAAUqC,yBAC3B5nW,QAAQ/V,MAAM,8DAAkEqI,EAAQ6/W,YAAY+/I,uBAAyB,qBAEjIlyf,QAAQ/V,MAAM,+DAAiE6gV,GAC3EA,IAAiBy6B,GAAUsC,yBAC3B7nW,QAAQ/V,MAAM,wFAA4FqI,EAAQ6/W,YAAYggJ,uBAAyB,qBAEvJrnL,IAAiBy6B,GAAUwC,4BAC3B/nW,QAAQ/V,MAAM,2FAA+FqI,EAAQ6/W,YAAYigJ,yBAA2B,0BAE5JtnL,IAAiBy6B,GAAUuC,4BAC3B9nW,QAAQ/V,MAAM,iEAAqEqI,EAAQ6/W,YAAYkgJ,yBAA2B,wBAK9IjC,EAAKzogB,UAAUxR,QAAU,WACrBlhB,KAAK0pX,YAAYO,IAAI/oW,WAElBi6gB,EAtNe,GAyO1B,SAASkC,GAA2BC,EAAUtrE,EAAQJ,EAAU2rE,GAC5D,IAAI7zK,EACA2jJ,EACAmwB,EAAmBD,EAAOE,OAG9B,GAFApwB,EAAqBmwB,EAAmB,mBACxC9zK,EAAcsoG,EAAO0rE,MAAMF,GAC3B,CAIA,IAMI3gB,EAAO,IAAIse,GANAmC,EAAS,GAMM5zK,EALb,CACbsoG,OAAQA,EACRJ,SAAUA,EACVy7C,mBAAoBA,IAGxBr7C,EAAO2rE,IAAI,WAAY,WACnB9gB,EAAK37f,UACL27f,EAAO,YAZP9xe,QAAQ24B,KAAK,2HAsBrB,IAiHQ0lE,GAsDAA,GAyMAA,GAyTAA,GAqUAA,GAmOGw0Z,GAiBAC,GAluCPl9f,IAAa,EAgHbm9f,IACI10Z,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KASnFu0Z,GAAqC,SAAUvld,GAE/C,SAASuld,IACL,OAAkB,OAAXvld,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAuB/D,OAzBA89hB,GAAaC,EAAqBvld,GAIlCuld,EAAoBrrgB,UAAUokc,aAAe,SAAU7ic,GACnDA,EAAE/G,kBAEN6wgB,EAAoBrrgB,UAAUsrgB,qBAAuB,WACjD,IAAIt8e,EAAQ1hD,KACRkob,EAAOlob,KAAKsmY,SACX4hD,IAGDlob,KAAKi+hB,cACLj+hB,KAAKi+hB,YAAcj+hB,KAAKi+hB,eAE5Bj+hB,KAAKi+hB,YAAcj+hB,KAAKymb,4BAA4ByB,EAAM,UAAW,SAAUj0Z,GACvEA,EAAEhH,UAAYqjX,GAAUe,SACxB3vV,EAAMo1a,aAAa7ic,OAzBwB,SAAU41G,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAyBxDo0Z,CAAc,CACV5hJ,IACDyhJ,EAAoBrrgB,UAAW,uBAAwB,MACnDqrgB,EA1B8B,CA2BvC3rgB,IAQE+rgB,IACI/0Z,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF40Z,GAAuD,SAAUv0Z,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Du0Z,GAA8B,SAAU7ld,GAExC,SAAS6ld,EAAav0c,GAClB,IAAIpoC,EAAQ82B,EAAOtjD,KAAKl1B,KAAMq+hB,EAAajuE,YAAYtmY,EAAO6pS,YAAc3zX,KAM5E,OALA0hD,EAAMxpC,MAAQ,GACdwpC,EAAMooC,OAASA,EACXA,EAAO5xE,OACP4xE,EAAO5xE,MAAM7E,QAAQ,SAAU/B,GAAQ,OAAOowC,EAAM84G,QAAQlpJ,KAEzDowC,EAgJX,OAxJAy8e,GAAaE,EAAc7ld,GAU3B6ld,EAAa3rgB,UAAU4yQ,KAAO,WAC1BtlS,KAAKymb,4BAA4Bzmb,KAAKsmY,SAAU,UAAWtmY,KAAK+8H,cAAcxyF,KAAKvqC,QAEvFq+hB,EAAa3rgB,UAAUqqG,cAAgB,SAAU9oG,GAC7C,OAAQA,EAAEhH,SACN,KAAKqjX,GAAUuB,UACf,KAAKvB,GAAUqB,SACX,IAAK3xY,KAAKs+hB,QAAQ1xgB,SAAS+d,SAASlgB,eAChC,OAEJ,IAAI6lI,EAAkBtwJ,KAAKkY,MAAMjP,QAAQjJ,KAAKosB,YAC1C9f,EAAe2nB,EAAEhH,UAAYqjX,GAAUuB,UAAYtzX,KAAKG,IAAI4xI,EAAkB,EAAGtwJ,KAAKkY,MAAM/T,OAAS,GAAKoa,KAAKukC,IAAIwtG,EAAkB,EAAG,GAC5I,GAAIA,IAAoBhkJ,EACpB,OAEJ2nB,EAAE/G,iBACF,IAAIgnM,EAAWl0N,KAAKkY,MAAM5L,GAC1BtM,KAAKu+hB,gBAAgBrqU,GACrBA,EAASsqU,cAAc1vgB,QACvB,MACJ,KAAKwhX,GAAUsB,OACf,KAAKtB,GAAUwB,SACX79W,EAAErE,oBAIdyugB,EAAa3rgB,UAAUokc,aAAe,SAAU7ic,GAC5CukD,EAAO9lD,UAAUokc,aAAa5hc,KAAKl1B,KAAMi0B,GACzC,IAAIwqgB,EAAiBz+hB,KAAKqsd,gBAAgBimD,sBAAsBtygB,KAAKkvgB,MAAO,0CACxEzkf,EAAgBkgB,SAASlgB,cAC7B,GAAIzqB,KAAKs+hB,QAAQ1xgB,SAASnC,GAClBg0gB,EAAet6hB,QACfs6hB,EAAexqgB,EAAEwzF,SAAWg3a,EAAet6hB,OAAS,EAAI,GAAG2qB,YAG9D,CACD,IAAI4vgB,EAAkBD,EAAex1hB,QAAQwhB,GACzCne,EAAe2nB,EAAEwzF,SAAWi3a,EAAkB,EAAIA,EAAkB,EACxE,GAAIpyhB,EAAe,GAAKA,GAAgBmyhB,EAAet6hB,OAEnD,YADAnE,KAAKosB,WAAWoygB,cAAc1vgB,QAGlC,IAAIolM,EAAWuqU,EAAenyhB,GAC1B4nN,GACAA,EAASplM,UAIrBuvgB,EAAajuE,YAAc,SAAUz8F,GACjC,MAAO,uBAA0BA,EAAW,6DAAmEA,EAAWA,EAAW,UAAY,IAAM,+DAAqEA,EAAWA,EAAW,QAAU,IAAM,4BAEtQ0qK,EAAa3rgB,UAAUisgB,uBAAyB,SAAU70c,GACtD9pF,KAAK4+hB,oBAAsB90c,GAE/Bu0c,EAAa3rgB,UAAUmsgB,iBAAmB,WACtC,IAAIhzB,EAAkB7rgB,KAAKsmY,SAASziP,WAAU,GAC1Ci7Y,EAAajzB,EAAgBzggB,cAAc,iBAE/CyggB,EAAgBtggB,MAAMvB,SAAW,QAGjChK,KAAKsmY,SAASxuX,YAAY+zf,GAC1B,IAAI9je,EAAW,EACXC,EAAY,EAgBhB,OAfAhoC,KAAKkY,MAAM7E,QAAQ,SAAU0rhB,GACzB3sb,GAAE4uR,aAAa89J,GACf,IAAIE,EAASD,EAAYE,WAAWC,YAAY/0K,WAAW,KAAM,SAAUrnV,GAAQ,OAAOA,EAAK+gH,WAAU,KAC3F,MAAVm7Y,IAGJF,EAAWhnhB,YAAYknhB,GACnBj3f,EAAW8je,EAAgB/4b,cAC3B/qC,EAAW8je,EAAgB/4b,aAE3B9qC,EAAY6je,EAAgBp6e,eAC5BuW,EAAY6je,EAAgBp6e,iBAGpCzxB,KAAKsmY,SAAS7kX,YAAYoqf,GACnB,CAAErhgB,OAAQw9B,EAAWt+B,MAAOq+B,IAEvCs2f,EAAa3rgB,UAAUysgB,cAAgB,WAC/Bn/hB,KAAKkY,MAAM/T,OAAS,GACpBnE,KAAKu+hB,gBAAgBv+hB,KAAKkY,MAAM,KAGxCmmhB,EAAa3rgB,UAAU8nI,QAAU,SAAUlpJ,GACvC,IAAIkthB,EAAgB7zf,SAAS9yB,cAAc,QAC3C2mhB,EAAcrof,UAAY,EAC1Bqof,EAAc1mhB,YAAYxG,EAAKslD,OAC/Bw7C,GAAE+tR,YAAYq+J,EAAe,UAC7Bx+hB,KAAKs+hB,QAAQxmhB,YAAY0mhB,GACzB,IAAIttY,EAAU,CACV+tY,WAAY3thB,EACZkthB,cAAeA,GAEnBx+hB,KAAKkY,MAAMtU,KAAKstJ,GAChBstY,EAAclzgB,iBAAiB,QAAStrB,KAAKu+hB,gBAAgBh0f,KAAKvqC,KAAMkxJ,KAE5EmtY,EAAa3rgB,UAAU0sgB,SAAW,SAAUH,GACxC,IAAIF,EAAc3sb,GAAE/sG,KAAKrF,KAAKkY,MAAO,SAAUg5I,GAC3C,OAAOA,EAAQ+tY,aAAeA,IAE9BF,GACA/+hB,KAAKu+hB,gBAAgBQ,IAG7BV,EAAa3rgB,UAAU6rgB,gBAAkB,SAAUrtY,GAC/C,IAAIxvG,EAAQ1hD,KACRA,KAAK8pF,OAAOu1c,eACZr/hB,KAAK8pF,OAAOu1c,cAAc,CAAE/thB,KAAM4/I,EAAQ+tY,aAE1Cj/hB,KAAKosB,aAAe8kI,GAIxB9+C,GAAE4uR,aAAahhY,KAAKkvgB,OACpBh+W,EAAQ+tY,WAAWC,YAAY7ghB,KAAK,SAAUykB,GAC1C4e,EAAMwtd,MAAMp3f,YAAYgrB,GACxBA,EAAKhU,UAEL9uB,KAAKosB,YACLgmF,GAAEiuR,eAAergY,KAAKosB,WAAWoygB,cAAe,mBAEpDpsb,GAAE+tR,YAAYjvO,EAAQstY,cAAe,mBACrCx+hB,KAAKosB,WAAa8kI,EACdA,EAAQ+tY,WAAWK,uBACnBpuY,EAAQ+tY,WAAWK,sBAAsBt/hB,KAAK4+hB,sBAd9Cxsb,GAAEu5R,cAAc3rY,KAAK8pF,OAAOy1c,sBAiBpCnB,GAAc,CACVzhJ,GAAU,oBACX0hJ,EAAa3rgB,UAAW,uBAAmB,GAC9C0rgB,GAAc,CACVl0G,GAAY,YACbm0G,EAAa3rgB,UAAW,eAAW,GACtC0rgB,GAAc,CACVl0G,GAAY,UACbm0G,EAAa3rgB,UAAW,aAAS,GACpC0rgB,GAAc,CACV9hJ,IACD+hJ,EAAa3rgB,UAAW,OAAQ,MAC5B2rgB,EAzJuB,CA0JhCN,IA4BEyB,IACIp2Z,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFi2Z,GAA8B,SAAUjnd,GAExC,SAASind,EAAaC,EAAaC,GAC/B,IAAIj+e,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KASjC,OARA0hD,EAAMqoI,QAAU,EAChBroI,EAAMr5C,MAAQo3hB,EAAaG,YAC3Bl+e,EAAMi+e,mBAAqBA,EAC3Bj+e,EAAMg+e,YAAcA,EAGpBh+e,EAAMo3a,SAAW4mE,EAAcC,EAAmBE,UAClDn+e,EAAMs3a,OAASt3a,EAAMo3a,SAAW6mE,EAAmBE,UAC5Cn+e,EA4KX,OAvLA89e,GAAaC,EAAcjnd,GAa3Bind,EAAa/sgB,UAAUotgB,cAAgB,SAAU75C,GAC7C,IAAIrpd,GAAS,EAMb,OALA58B,KAAK+/hB,oBAAoB,SAAUrrJ,GAC3BA,EAAQvzO,WACRvkI,GAAS,IAEdqpd,GACIrpd,GAEX6igB,EAAa/sgB,UAAUqtgB,oBAAsB,SAAU9sgB,EAAUgzd,GAC7D,IAAK,IAAI57e,EAAWrK,KAAK84d,SAAUzud,EAAWrK,KAAKg5d,OAAQ3ud,IAGnDA,EAAW47e,GAEXhzd,EADcjzB,KAAKggiB,sBAAsB31hB,GACvBA,IAI9Bo1hB,EAAa/sgB,UAAUssb,YAAc,SAAU/rb,EAAU8kR,EAAUkuM,EAAUg6C,GACzEjgiB,KAAK+/hB,oBAAoB,SAAUrrJ,GAC/BzhX,EAASyhX,EAAS38F,EAASl0S,QAGvBo8hB,GAAQvrJ,EAAQwrJ,eAChBxrJ,EAAQwrJ,cAAcC,gBAAgBltgB,EAAU8kR,IAErDkuM,IAEPw5C,EAAa/sgB,UAAUytgB,gBAAkB,SAAUltgB,EAAU8kR,EAAUkuM,GACnEjmf,KAAKg/c,YAAY/rb,EAAU8kR,EAAUkuM,GAAU,IAEnDw5C,EAAa/sgB,UAAU0tgB,mBAAqB,SAAUntgB,EAAU8kR,EAAUkuM,GACtEjmf,KAAKg/c,YAAY/rb,EAAU8kR,EAAUkuM,GAAU,IAEnDw5C,EAAa/sgB,UAAU2tgB,WAAa,WAChC,OAAOrgiB,KAAK+pL,SAEhB01W,EAAa/sgB,UAAU4tgB,gBAAkB,WACrC,OAAOtgiB,KAAKugiB,cAEhBd,EAAa/sgB,UAAUstgB,sBAAwB,SAAU31hB,EAAUm2hB,GAM/D,YAL8B,IAA1BA,IAAoCA,GAAwB,GAC3DA,IACDxgiB,KAAKugiB,aAAevgiB,KAAK2/hB,mBAAmBc,qBAAqB58hB,QAG9D7D,KAAKw2Y,SADKnsY,EAAWrK,KAAK84d,WAGrC2mE,EAAa/sgB,UAAU4yQ,KAAO,SAAUwhL,GACpC9md,KAAK8md,MAAQA,EACb9md,KAAK0giB,kBAETjB,EAAa/sgB,UAAUiugB,YAAc,WACjC,OAAO3giB,KAAK84d,UAEhB2mE,EAAa/sgB,UAAUkugB,UAAY,WAC/B,OAAO5giB,KAAKg5d,QAEhBymE,EAAa/sgB,UAAUmugB,eAAiB,WACpC,OAAO7giB,KAAK0/hB,aAEhBD,EAAa/sgB,UAAUougB,SAAW,WAE9B9giB,KAAK+pL,UACL/pL,KAAKqI,MAAQo3hB,EAAaG,aAE9BH,EAAa/sgB,UAAUqugB,iBAAmB,WACtC/giB,KAAK8giB,WACL9giB,KAAKw2Y,SAASnjY,QAAQ,SAAUqhY,GAC5BA,EAAQvuI,QAAQ,SAGxBs5R,EAAa/sgB,UAAUstb,SAAW,WAC9B,OAAOhgd,KAAKqI,OAEhBo3hB,EAAa/sgB,UAAUsugB,WAAa,SAAU32hB,EAAUqqY,GAEpD10Y,KAAKw2Y,SADYnsY,EAAWrK,KAAK84d,UACLpkF,GAEhC+qJ,EAAa/sgB,UAAUuugB,gBAAkB,SAAU52hB,GAC/C,IAAI62hB,EAAa72hB,EAAWrK,KAAK84d,SAC7BqoE,EAAanhiB,KAAKohiB,mBAAmB/2hB,GAEzC,OADArK,KAAKw2Y,SAAS0qJ,GAAcC,EACrBA,GAEX1B,EAAa/sgB,UAAU2ugB,WAAa,SAAUh3hB,EAAUquhB,GACpD,IAAIyI,EAAanhiB,KAAKihiB,gBAAgB52hB,GAEtC,OADArK,KAAK0+b,aAAayiG,EAAYzI,EAAU14hB,KAAK84d,SAAWzud,GACjD82hB,GAEX1B,EAAa/sgB,UAAU0ugB,mBAAqB,SAAU/2hB,GAClD,IAAIqqY,EAAU,IAAI8oD,GAGlB,OAFAx9b,KAAK8md,MAAMt1c,QAAQ4oY,SAAS1F,GAC5BA,EAAQ8rD,aAAaxgc,KAAK2/hB,mBAAmBrpL,WACtCo+B,GAGX+qJ,EAAa/sgB,UAAUgugB,eAAiB,WACpC1giB,KAAKw2Y,SAAW,GAChB,IAAK,IAAI3uY,EAAI,EAAGA,EAAI7H,KAAK2/hB,mBAAmBE,UAAWh4hB,IAAK,CACxD,IACI6sY,EAAU10Y,KAAKohiB,mBADJphiB,KAAK84d,SAAWjxd,GAE/B7H,KAAKw2Y,SAAS5yY,KAAK8wY,KAG3B+qJ,EAAa/sgB,UAAU62W,KAAO,WAC1BvpY,KAAKqI,MAAQo3hB,EAAa6B,cAC1BthiB,KAAKuhiB,sBAET9B,EAAa/sgB,UAAU8ugB,eAAiB,WACpCxhiB,KAAKqI,MAAQo3hB,EAAagC,aAO1BzhiB,KAAKy4V,cANO,CACR/3V,KAAM++hB,EAAaiC,oBACnBhge,SAAS,EACTlkD,KAAMxd,KACN0xe,QAAS,QAIjB+tD,EAAa/sgB,UAAUivgB,oBAAsB,SAAUp6hB,GACnD,IAAIm6C,EAAQ1hD,KACR4hiB,EAAoB,GACxB5hiB,KAAKw2Y,SAASnjY,QAAQ,SAAUqhY,EAAS/qY,GACrC,IAAImG,EAAOvI,EAAKoC,GACZ+qY,EAAQmsF,MACR+gE,EAAkBh+hB,KAAK8wY,GAE3BhzV,EAAMg9Y,aAAahqD,EAAS5kY,EAAM4xC,EAAMo3a,SAAWnvd,KAEnDi4hB,EAAkBz9hB,OAAS,GAC3BnE,KAAK8md,MAAMqQ,YAAYj2B,WAAW0gG,IAG1CnC,EAAa/sgB,UAAUxR,QAAU,WAC7BlhB,KAAKw2Y,SAASnjY,QAAQ,SAAUqhY,GACxBA,EAAQwrJ,gBACRxrJ,EAAQwrJ,cAAch/gB,UACtBwzX,EAAQwrJ,cAAgB,MAK5BxrJ,EAAQ2qD,gBAEZ7mX,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCy/hB,EAAa/sgB,UAAUmvgB,WAAa,SAAU93W,EAASxiL,EAAMmqe,GAIrD3nT,IAAY/pL,KAAK+pL,UACjB/pL,KAAKqI,MAAQo3hB,EAAaqC,aAC1B9hiB,KAAK2hiB,oBAAoBp6hB,IAE7Bmqe,EAAUt/X,GAAEg2R,YAAYspG,GAQxB1xe,KAAKy4V,cANO,CACR/3V,KAAM++hB,EAAaiC,oBACnBhge,SAAS,EACTlkD,KAAMxd,KACN0xe,QAASA,KAIjB+tD,EAAaiC,oBAAsB,eACnCjC,EAAaG,YAAc,QAC3BH,EAAa6B,cAAgB,UAC7B7B,EAAaqC,aAAe,SAC5BrC,EAAagC,aAAe,SACrBhC,EAxLuB,CAyLhCr5G,IAiBE27G,GAAoC,WACpC,SAASA,EAAmBC,EAAuBhqL,GAC/Ch4W,KAAKiiiB,sBAAwB,EAC7BjiiB,KAAKkiiB,OAAS,GACdliiB,KAAK8b,QAAS,EACd9b,KAAKgiiB,sBAAwBA,EACzBhqL,GAA2BA,EAA0B,IACrDh4W,KAAKmiiB,yBAA2B/vb,GAAEm6F,SAASvsM,KAAKoiiB,yBAAyB73f,KAAKvqC,MAAOg4W,IAkF7F,OA/EA+pL,EAAmBrvgB,UAAUirX,SAAW,SAAUC,GAC9C59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,uBAEvCy8hB,EAAmBrvgB,UAAU2vgB,SAAW,SAAU18f,GAC9C3lC,KAAKkiiB,OAAOt+hB,KAAK+hC,IAErBo8f,EAAmBrvgB,UAAU4vgB,YAAc,SAAU38f,GACjDysE,GAAEq0R,gBAAgBzmY,KAAKkiiB,OAAQv8f,IAEnCo8f,EAAmBrvgB,UAAUxR,QAAU,WACnClhB,KAAK8b,QAAS,GAElBimhB,EAAmBrvgB,UAAU6vgB,aAAe,WACxCviiB,KAAKiiiB,yBAETF,EAAmBrvgB,UAAU8vgB,iBAAmB,WACxCxiiB,KAAKmiiB,yBACLniiB,KAAKmiiB,2BAGLniiB,KAAKoiiB,4BAGbL,EAAmBrvgB,UAAU0vgB,yBAA2B,WACpD,GAAKpiiB,KAAK8b,OAIV,GADA9b,KAAKyiiB,mBACDziiB,KAAKiiiB,uBAAyBjiiB,KAAKgiiB,sBACnChiiB,KAAK+4Y,OAAOt9T,IAAI,4CADpB,CAIA,IAAIind,EAAc,KAClB1iiB,KAAKkiiB,OAAO7uhB,QAAQ,SAAUsyB,GACtBA,EAAMq6a,aAAey/E,GAAaG,cAClC8C,EAAc/8f,KAGlB+8f,GACAA,EAAYn5J,OACZvpY,KAAKiiiB,wBACLjiiB,KAAK+4Y,OAAOt9T,IAAI,kCAAoCind,EAAY7B,kBAChE7giB,KAAKyiiB,oBAGLziiB,KAAK+4Y,OAAOt9T,IAAI,wCAGxBsmd,EAAmBrvgB,UAAU6ye,cAAgB,WACzC,IAAI3oe,EAAS,GAgBb,OAfA58B,KAAKkiiB,OAAO7uhB,QAAQ,SAAUsyB,GAC1B,IAAIg9f,EAAeh9f,EAAMi9f,kBACrBh/H,EAAY,CACZ87H,YAAa/5f,EAAMk7f,iBACnB/nE,SAAUnzb,EAAMg7f,cAChB3nE,OAAQrzb,EAAMi7f,YACdiC,WAAYl9f,EAAMq6a,YAElB5tW,GAAE8rR,OAAOykK,GACT/lgB,EAAO+lgB,EAAeh9f,EAAMk7f,kBAAoBj9H,EAGhDhnY,EAAO+I,EAAMk7f,kBAAoBj9H,IAGlChnY,GAEXmlgB,EAAmBrvgB,UAAU+vgB,iBAAmB,WACxCziiB,KAAK+4Y,OAAOyyH,aACZxrgB,KAAK+4Y,OAAOt9T,IAAI,4CAA8Cz7E,KAAKiiiB,sBAAnD,cACMzogB,KAAKC,UAAUz5B,KAAKulgB,mBAGlDw8B,EAAmBrvgB,UAAU+/D,UAAY,WACrC,OAAOzyF,KAAKiiiB,sBAAwB,GA7Fe,SAAUp4Z,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GACzIl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GA2FxDg5Z,CAAc,EACA,EA1FwD34Z,EA0FrD8yQ,GAAU,iBAzFpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAyFpC,MACXolhB,EAAmBrvgB,UAAW,WAAY,MACtCqvgB,EA5FyC,IAAsB53Z,EAGlC,GAkGpC44Z,IACI35Z,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFw5Z,GAAuD,SAAUn5Z,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dm5Z,GAA8B,SAAUzqd,GAExC,SAASyqd,EAAaC,GAClB,IAAIxhf,EAAQ82B,EAAOtjD,KAAKl1B,OAASA,KAMjC,OALA0hD,EAAMwjd,aAAc,EACpBxjd,EAAMwgf,OAAS,GACfxgf,EAAMyhf,WAAa,EACnBzhf,EAAM0hf,gBAAkBF,EAAYG,gBACpC3hf,EAAMwhf,YAAcA,EACbxhf,EAgSX,OAxSAqhf,GAAaE,EAAczqd,GAU3Byqd,EAAavwgB,UAAUxR,QAAU,WAC7B,IAAIwgC,EAAQ1hD,KACZA,KAAKsjiB,oBAAoB,SAAU39f,GAAS,OAAO+b,EAAM6hf,aAAa59f,KACtE6yC,EAAO9lD,UAAUxR,QAAQgU,KAAKl1B,OAElCijiB,EAAavwgB,UAAU4yQ,KAAO,WAC1B,IAAI5jP,EAAQ1hD,KACZA,KAAK8b,QAAS,EACd9b,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAM5lC,QAAS,KAE5DmnhB,EAAavwgB,UAAU4vU,SAAW,WAC9B,OAAOtiW,KAAK8b,QAEhBmnhB,EAAavwgB,UAAUoye,mBAAqB,WACxC,OAAO9kgB,KAAKojiB,iBAEhBH,EAAavwgB,UAAU8wgB,wBAA0B,SAAUJ,GACvDpjiB,KAAKojiB,gBAAkBA,GAE3BH,EAAavwgB,UAAUsye,cAAgB,WACnC,OAAOhlgB,KAAKklgB,aAGhB+9B,EAAavwgB,UAAU63c,aAAe,SAAUjid,GAC5CtoB,KAAKkjiB,YAAYO,mBAAmBlB,eACpCviiB,KAAKwiiB,mBAGAxiiB,KAAKsiW,aAGVtiW,KAAK+4Y,OAAOt9T,IAAI,wBAA0BnzD,EAAM9K,KAAKqjhB,iBAAmB,eAAiBv4gB,EAAMopd,SAC3Fppd,EAAMo5C,SACN1hE,KAAK0jiB,qBAAqBp7gB,EAAM9K,KAAM8K,EAAMopd,WAGpDuxD,EAAavwgB,UAAUixgB,oBAAsB,SAAUC,GACnD,IAAIlif,EAAQ1hD,KAER6jiB,EAAmB,GACvB7jiB,KAAKsjiB,oBAAoB,SAAU39f,GAG3BA,IAAUi+f,GAGdC,EAAiBjgiB,KAAK+hC,KAG1Bk+f,EAAiBhohB,KAAK,SAAUE,EAAGC,GAAK,OAAOA,EAAEskhB,kBAAoBvkhB,EAAEukhB,oBAIvE,IAAIwD,EAAoB9jiB,KAAKkjiB,YAAY7rL,iBAAmB,EACxD0sL,EAAeD,EAAoB9jiB,KAAKkjiB,YAAY7rL,iBAAmB,EAAI,KAC3E2sL,EAAoBf,EAAagB,yBAA2B,EAChEJ,EAAiBxwhB,QAAQ,SAAUsyB,EAAOh8B,GAGtC,GAF6Bg8B,EAAMq6a,aAAey/E,GAAaG,aAAej2hB,GAASq6hB,GAC3DF,GAAoBn6hB,GAASo6hB,EACJ,CAMjD,GAAIp+f,EAAMm6f,cAAcp+e,EAAM0hf,iBAC1B,OAKJ,GAAI1hf,EAAMwif,0BAA0Bv+f,GAChC,OAGJ+b,EAAMyif,qBAAqBx+f,OAIvCs9f,EAAavwgB,UAAUwxgB,0BAA4B,SAAUv+f,GACzD,IAAIy+f,EAAmBpkiB,KAAKm3d,YAAY4a,6BACpCsyD,EAAkBrkiB,KAAKm3d,YAAY6a,4BACnCd,EAAgBvrc,EAAM2+f,uBACtBlzD,EAAezrc,EAAM4+f,qBAAuB,EAGhD,QADoC,MAAjBrzD,GAAyC,MAAhBE,GAIlBF,EAAgBmzD,GACjBjzD,EAAegzD,IAI5CnB,EAAavwgB,UAAU8xgB,gBAAkB,SAAUC,GAC/CA,EAASn5gB,iBAAiBm0gB,GAAaiC,oBAAqB1hiB,KAAKuqe,aAAahgc,KAAKvqC,OACnFA,KAAK0kiB,SAASD,EAAS5D,iBAAkB4D,GACzCzkiB,KAAK2jiB,oBAAoBc,GACzBzkiB,KAAKwiiB,oBAETS,EAAavwgB,UAAUyxgB,qBAAuB,SAAUQ,GAC/CA,GAGL3kiB,KAAKujiB,aAAaoB,IAMtB1B,EAAavwgB,UAAU8vgB,iBAAmB,WACtCxiiB,KAAKkjiB,YAAYO,mBAAmBjB,oBAExCS,EAAavwgB,UAAUgxgB,qBAAuB,SAAU/9f,EAAO+rc,GAG3D,GAAuB,iBAAZA,GAAwBA,GAAW,EAC1C1xe,KAAKojiB,gBAAkB1xD,EACvB1xe,KAAKklgB,aAAc,EACnBllgB,KAAK4kiB,sBAEJ,IAAK5kiB,KAAKklgB,YAAa,CAExB,IACI2/B,GADgBl/f,EAAMk7f,iBAAmB,GAAK7giB,KAAKkjiB,YAAYrD,UACrB7/hB,KAAKkjiB,YAAY4B,aAC3D9kiB,KAAKojiB,gBAAkByB,GACvB7kiB,KAAKojiB,gBAAkByB,EACvB7kiB,KAAK4kiB,kBAEA5kiB,KAAKkjiB,YAAY6B,kBAItB/kiB,KAAK4kiB,mBAIjB3B,EAAavwgB,UAAUuye,mBAAqB,SAAUhf,EAAUif,GAC5DllgB,KAAKojiB,gBAAkBn9C,EAGnB7zY,GAAE8rR,OAAOgnI,KACTllgB,KAAKklgB,YAAcA,GAKlBllgB,KAAKklgB,aACFllgB,KAAKojiB,gBAAkBpjiB,KAAKkjiB,YAAYrD,WAAc,GACtD7/hB,KAAKojiB,kBAGbpjiB,KAAK4kiB,kBAET3B,EAAavwgB,UAAUytgB,gBAAkB,SAAUltgB,EAAU8kR,GACzD,IAAIr2P,EAAQ1hD,UACK,IAAb+3S,IAAuBA,EAAW,IAAI2/F,IAC1C13Y,KAAKsjiB,oBAAoB,SAAU39f,GAC/BA,EAAMw6f,gBAAgBltgB,EAAU8kR,EAAUr2P,EAAM0hf,oBAGxDH,EAAavwgB,UAAU4wgB,oBAAsB,SAAUrwgB,GACnD,IAAIisH,EAAMl/I,KAAKgliB,oBACfhliB,KAAKiliB,eAAe/lZ,EAAKjsH,IAE7BgwgB,EAAavwgB,UAAUwygB,2BAA6B,SAAUjygB,GAC1D,IAAIisH,EAAMl/I,KAAKgliB,oBAAoBn7hB,UACnC7J,KAAKiliB,eAAe/lZ,EAAKjsH,IAE7BgwgB,EAAavwgB,UAAUuygB,eAAiB,SAAU/lZ,EAAKjsH,GACnD,IAAIyuB,EAAQ1hD,KACZk/I,EAAI7rI,QAAQ,SAAU2S,GAElBiN,EADYyuB,EAAMwgf,OAAOl8gB,GACTA,MAGxBi9gB,EAAavwgB,UAAUsygB,kBAAoB,WAIvC,OADexohB,OAAOC,KAAKzc,KAAKkiiB,QAAQz4hB,IAAI,SAAU07hB,GAAS,OAAO31f,SAAS21f,EAAO,MAAQtphB,KADvE,SAAUE,EAAGC,GAAK,OAAOD,EAAIC,KAIxDinhB,EAAavwgB,UAAU0ygB,SAAW,SAAUC,GACxC,OAAOrliB,KAAKkiiB,OAAOmD,IAEvBpC,EAAavwgB,UAAUgygB,SAAW,SAAU1+gB,EAAI2f,GAC5C3lC,KAAKkiiB,OAAOl8gB,GAAM2f,EAClB3lC,KAAKmjiB,aACLnjiB,KAAKkjiB,YAAYO,mBAAmBpB,SAAS18f,IAEjDs9f,EAAavwgB,UAAU6wgB,aAAe,SAAU59f,UACrC3lC,KAAKkiiB,OAAOv8f,EAAMk7f,kBACzBl7f,EAAMzkB,UACNlhB,KAAKmjiB,aACLnjiB,KAAKkjiB,YAAYO,mBAAmBnB,YAAY38f,IAGpDs9f,EAAavwgB,UAAUkygB,eAAiB,WAChC5kiB,KAAKsiW,aAKLtiW,KAAKsliB,sCAMLtliB,KAAKy4V,cAHS,CACV/3V,KAAMuiiB,EAAasC,wBAK/BtC,EAAavwgB,UAAU4ygB,oCAAsC,WACzD,IAAI5jf,EAAQ1hD,KACRwliB,EAAkB,GACtBxliB,KAAKsjiB,oBAAoB,SAAU39f,EAAO3f,GACvBA,EAAK07B,EAAMwhf,YAAYrD,WACtBn+e,EAAM0hf,iBAClBoC,EAAgB5hiB,KAAK+hC,KAGzB6/f,EAAgBrhiB,OAAS,GACzBqhiB,EAAgBnyhB,QAAQ,SAAUsyB,GAAS,OAAO+b,EAAM6hf,aAAa59f,MAG7Es9f,EAAavwgB,UAAUiye,WAAa,WAChC,IAAIjjd,EAAQ1hD,KACZA,KAAKsjiB,oBAAoB,SAAU39f,GAAS,OAAO+b,EAAMyif,qBAAqBx+f,KAC9E3lC,KAAKklgB,aAAc,EAKU,IAAzBllgB,KAAKojiB,kBACLpjiB,KAAKojiB,gBAAkBpjiB,KAAKkjiB,YAAYG,iBAE5CrjiB,KAAK4kiB,kBAET3B,EAAavwgB,UAAU+ygB,mBAAqB,SAAUzsB,EAAcC,GAChE,IAAIv3d,EAAQ1hD,KACR48B,EAAS,GACT8ogB,GAAe,EACfC,GAAgB,EAChBC,EAAiB,IAAIluJ,GAErBtlS,GAAEgsR,QAAQ46I,KACV2sB,GAAgB,GAEpB,IAAIE,GAAsB,EAsB1B,OArBA7liB,KAAKsjiB,oBAAoB,SAAU39f,EAAO3f,GAClC6/gB,IAGAF,GAAkBD,EAAc,IAAM1/gB,EACtC6/gB,GAAsB,GAG1BH,EAAc1/gB,EACd2f,EAAMy6f,mBAAmB,SAAU1rJ,GAC/B,IAAIoxJ,EAAiBpxJ,IAAYskI,GAAgBtkI,IAAYukI,GACzD0sB,GAAiBG,IACjBlpgB,EAAOh5B,KAAK8wY,GAEZoxJ,IACAH,GAAiBA,IAEtBC,EAAgBlkf,EAAM0hf,qBAGVyC,GAAuBF,EACpB,GAAK/ogB,GAE/BqmgB,EAAasC,oBAAsB,eAInCtC,EAAagB,yBAA2B,EACxCjB,GAAc,CACVrmJ,GAAU,iBACXsmJ,EAAavwgB,UAAW,oBAAgB,GAC3CswgB,GAAc,CACVrmJ,GAAU,gBACXsmJ,EAAavwgB,UAAW,mBAAe,GAC1CswgB,GAAc,CACV1mJ,IACD2mJ,EAAavwgB,UAAW,OAAQ,MAC5BuwgB,EAzSuB,CA0ShC78G,IAQE2/G,IACI38Z,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFw8Z,GAAuD,SAAUn8Z,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dm8Z,GAA6B,SAAUztd,GAEvC,SAASytd,EAAYje,QACK,IAAlBA,IAA4BA,EAAgB,WAChD,IAAItme,EAAQ82B,EAAOtjD,KAAKl1B,KAAMimiB,EAAY71E,YAAY43D,KAAmBhohB,KAIzE,OAHA0hD,EAAMsme,cAAgBA,EACtBtme,EAAMwkf,oBAAsB,GAC5Bxkf,EAAM40T,UAAY,GACX50T,EA+HX,OAtIAqkf,GAAaE,EAAaztd,GAS1Bytd,EAAYvzgB,UAAU4yQ,KAAO,WACzBtlS,KAAKmmiB,eAAiBnmiB,KAAKmpb,oBAAoB,8BAC/Cnpb,KAAK6wf,oBACL7wf,KAAKs2W,UAAYt2W,KAAKomiB,iBAE1BH,EAAY71E,YAAc,SAAU43D,GAChC,MAAkB,yDAA4DA,EAAgB,sFAA0FA,EAAgB,uDAE5Mie,EAAYvzgB,UAAU0zgB,cAAgB,WAClC,OAAOpmiB,KAAKoqY,mBAAmBu5C,qBAEnCsiH,EAAYvzgB,UAAUwgd,mBAAqB,SAAUvpe,GACjD,IAAI+ne,EAAU1xe,KAAKi6F,MAAMu6Z,cACzB,GAAqB,iBAAV7qf,GAAsBA,EAAQ,GAAKA,GAAS+ne,EACnD3mc,QAAQ24B,KAAK,6CAA+C/5D,OADhE,CAIA,IAAI8rf,EAAc9rf,EAAQ3J,KAAKs2W,UAC3Bo/I,EAAiBD,EAAcz1f,KAAKs2W,UACpC4xE,EAAOlob,KAAKsmY,SACZ+/J,EAAmBn+G,EAAK9/Z,UACxB0te,EAAiB5tE,EAAKz2Z,aAGtB60gB,EAFsBD,EAAmBvwC,EAESJ,EADxB2wC,EAAmB5wC,EAI7CvtE,EAAK9/Z,UAAYqte,EAEZ6wC,IAGLp+G,EAAK9/Z,UADmBste,EAAiBI,KAIjDmwC,EAAYvzgB,UAAU6zgB,oBAAsB,SAAUC,GAClDxmiB,KAAKwmiB,iBAAmBA,GAE5BP,EAAYvzgB,UAAUimV,aAAe,WACjC,OAAO34W,KAAKs2W,WAEhB2vL,EAAYvzgB,UAAUwlD,aAAe,WACjC,OAAOl4E,KAAKsmY,SAASl+W,WAEzB69gB,EAAYvzgB,UAAU8ta,aAAe,SAAUlqF,GAC3Ct2W,KAAKs2W,UAAYA,EACjBt2W,KAAKq2V,WAET4vM,EAAYvzgB,UAAU2jU,QAAU,WACxBjkP,GAAEgsR,QAAQp+X,KAAKi6F,SAGnBj6F,KAAKmmiB,eAAe56hB,MAAMf,OAASxK,KAAKi6F,MAAMu6Z,cAAgBx0f,KAAKs2W,UAAY,KAC/Et2W,KAAKymiB,mBACLzmiB,KAAK0miB,oBAETT,EAAYvzgB,UAAU+zgB,iBAAmB,WACrC,IAAI33D,EAAetyd,OAAOC,KAAKzc,KAAKkmiB,qBACpClmiB,KAAK2miB,kBAAkB73D,IAE3Bm3D,EAAYvzgB,UAAUg0gB,gBAAkB,WACpC,IAAI90D,EAAW5xe,KAAKsmY,SAASl+W,UACzBypd,EAAcD,EAAW5xe,KAAKsmY,SAAS70W,aACvCnpB,EAAWiW,KAAKs7B,MAAM+3b,EAAW5xe,KAAKs2W,WACtCo7H,EAAUnzd,KAAKs7B,MAAMg4b,EAAc7xe,KAAKs2W,WAC5Ct2W,KAAK4miB,mBAAmBt+hB,EAAUope,IAEtCu0D,EAAYvzgB,UAAUk0gB,mBAAqB,SAAUz9hB,EAAO8vS,GAIxD,IAFA,IAAI61L,EAAetyd,OAAOC,KAAKzc,KAAKkmiB,qBAE3B77hB,EAAWlB,EAAOkB,GAAY4uS,EAAQ5uS,IAE3C,GAAIyke,EAAa7le,QAAQoB,EAAS4nB,aAAe,EAC7C68c,EAAavmc,OAAOumc,EAAa7le,QAAQoB,EAAS4nB,YAAa,QAInE,GAAIjyB,KAAKi6F,MAAMu6Z,cAAgBnqf,EAAU,CACrC,IAAI9I,EAAQvB,KAAKi6F,MAAMmlX,OAAO/0c,GAC9BrK,KAAK6miB,UAAUtliB,EAAO8I,GAI9BrK,KAAK2miB,kBAAkB73D,IAG3Bm3D,EAAYvzgB,UAAUi0gB,kBAAoB,SAAU73D,GAChD,IAAIptb,EAAQ1hD,KACZ8ue,EAAaz7d,QAAQ,SAAU1J,GAC3B,IAAIsV,EAAYyiC,EAAMwkf,oBAAoBv8hB,GAC1C+3C,EAAMykf,eAAe1khB,YAAYxC,EAAU87e,MACvC97e,EAAUq0d,aAAapyd,SACvBjC,EAAUq0d,aAAapyd,iBAEpBwgC,EAAMwkf,oBAAoBv8hB,MAGzCs8hB,EAAYvzgB,UAAUm0gB,UAAY,SAAUtliB,EAAO8I,GAC/C,IAAI0wf,EAAOpwd,SAAS9yB,cAAc,OAClCu6F,GAAE+tR,YAAY46H,EAAM,wBACpB3oZ,GAAE+tR,YAAY46H,EAAM,MAAQ/6f,KAAKgohB,cAAgB,sBACjDjtB,EAAKxvf,MAAMf,OAASxK,KAAKs2W,UAAY,KACrCykJ,EAAKxvf,MAAMQ,IAAM/L,KAAKs2W,UAAYjsW,EAAW,KAC7C,IAAIipe,EAAetze,KAAKwmiB,iBAAiBjliB,GACzCw5f,EAAKjjf,YAAYw7d,EAAahtG,UAC9BtmY,KAAKmmiB,eAAeruhB,YAAYijf,GAChC/6f,KAAKkmiB,oBAAoB77hB,GAAY,CACjCipe,aAAcA,EACdynB,KAAMA,IAGdkrC,EAAYvzgB,UAAUm+d,kBAAoB,WACtC,IAAInvc,EAAQ1hD,KACZA,KAAK0pb,oBAAoB,SAAU,WAAc,OAAOhoY,EAAMglf,qBAElET,EAAYvzgB,UAAU88Z,SAAW,SAAUv1V,GACvCj6F,KAAKi6F,MAAQA,GAEjB+rc,GAAc,CACVrpJ,GAAU,uBACXspJ,EAAYvzgB,UAAW,0BAAsB,GAChDszgB,GAAc,CACV1pJ,IACD2pJ,EAAYvzgB,UAAW,OAAQ,MAC3BuzgB,EAvIsB,CAwI/B7zgB,IAmCE00gB,GAAsC,WACtC,SAASA,KA4BT,OA1BAA,EAAqBp0gB,UAAUugP,KAAO,SAAUs/F,EAAqBk6F,EAAqBC,EAAoBh6F,EAAemnC,GACzH,IAAIn4V,EAAQ1hD,UACe,IAAvB0sc,IAAiCA,EAAqB,IAC1D,IAAIx7S,EAAUlxJ,KAAK+miB,cAAcx0L,EAAqBG,EAAemnC,GAOrE,OANA4yD,EAAoBp5b,QAAS,SAAUi2K,GACnC5nI,EAAMslf,aAAa91Y,EAASo4B,GAAY,KAE5CojR,EAAmBr5b,QAAS,SAAUi2K,GAClC5nI,EAAMslf,aAAa91Y,EAASo4B,GAAY,KAErCp4B,GAEX41Y,EAAqBp0gB,UAAUs0gB,aAAe,SAAU91Y,EAASo4B,EAAY29W,GACzE/1Y,EAAQg2Y,UAAU59W,EAAYtpL,KAAKmniB,kBAAkBj2Y,EAASo4B,EAAY29W,KAE9EH,EAAqBp0gB,UAAUy0gB,kBAAoB,SAAUj2Y,EAASo4B,EAAY29W,GAC9E,OAAO,WACH,OAAI/1Y,EAAQk2Y,UAAU99W,GACXp4B,EAAQm2Y,WAAW/9W,EAAYhwK,YAEtC2thB,GACAl8f,QAAQ24B,KAAK,sDAAwD4lH,EAAa,MAE/E,QAGRw9W,EA7B+B,IAsC/BlJ,GAgBRvggB,EAAQuggB,YAAcvggB,EAAQuggB,UAAY,KAfhC,cAAoB,gBAC7BA,GAAS,cAAoB,gBAC7BA,GAAS,iBAAuB,mBAChCA,GAAS,WAAiB,aAC1BA,GAAS,WAAiB,aAC1BA,GAAS,cAAoB,gBAC7BA,GAAS,KAAW,OACpBA,GAAS,QAAc,UACvBA,GAAS,OAAa,SACtBA,GAAS,IAAU,MACnBA,GAAS,SAAe,WACxBA,GAAS,KAAW,OACpBA,GAAS,YAAkB,cAC3BA,GAAS,eAAqB,iBAC9BA,GAAS,UAAgB,aAElBC,GAKRxggB,EAAQwggB,iBAAmBxggB,EAAQwggB,eAAiB,KAJrC,IAAU,MACxBA,GAAc,MAAY,QAC1BA,GAAc,OAAa,SAC3BA,GAAc,KAAW,OAS7B,IAAI/7M,GAA8B,oBAAXh6S,OAAyB,GAAKA,OACrDg6S,GAAUzsQ,YAAqC,oBAAhBA,YAA8B,GAAKA,YAClEysQ,GAAUwlN,kBAAiD,oBAAtBA,kBAAoC,GAAKA,kBAC9ExlN,GAAUylN,kBAAiD,oBAAtBA,kBAAoC,GAAKA,kBAC9EzlN,GAAU0lN,iBAA+C,oBAArBA,iBAAmC,GAAKA,iBAC5E1lN,GAAU7oL,KAAuB,oBAATA,KAAuB,GAAKA,KACpD6oL,GAAUp3N,WAAmC,oBAAfA,WAA6B,GAAKA,WAEhE,IA2TI+8a,GA3TAC,GAAuC,WACvC,SAASA,EAAsBnmhB,EAAU6oX,EAAoB54X,EAASkuY,EAAc6jC,EAAkBpgC,EAASj5B,EAAW00E,GACtH5+b,KAAKk+H,OAAS,EAEdl+H,KAAK2niB,YAAc,GACnB3niB,KAAKuhB,SAAWA,EAChBvhB,KAAKoqY,mBAAqBA,EAC1BpqY,KAAKwR,QAAUA,EACfxR,KAAK0/Y,aAAeA,EACpB1/Y,KAAKujb,iBAAmBA,EACxBvjb,KAAKmjZ,QAAUA,EACfnjZ,KAAKkqX,UAAYA,EACjBlqX,KAAK4+b,oBAAsBA,EAC3B5+b,KAAKuhB,SAASs5H,OAAQ,EACtB76I,KAAKuhB,SAASy0E,OAAS,EACvBh2F,KAAKuhB,SAASyE,GAAK0hhB,EAAsBE,aACzC5niB,KAAKuhB,SAASsmhB,gBAAkB,GAChC7niB,KAAKuhB,SAASg2X,mBAAqB,GACnCv3Y,KAAKuhB,SAASumhB,kBAAoB,GAClC9niB,KAAKuhB,SAASsib,oBAAsB,GAEpC7jc,KAAK4tb,gBA6RT,OA1RA85G,EAAsBh1gB,UAAUk7Z,cAAgB,WAE5C5tb,KAAKq5W,oBAAsBr5W,KAAKoqY,mBAAmBo0C,0BACnDx+a,KAAKi+W,0BAA4Bj+W,KAAKoqY,mBAAmB4pC,8BACzDh0a,KAAK25W,eAAiB35W,KAAKoqY,mBAAmBgvC,wBAC9Cp5a,KAAK+niB,gBAAkB/niB,KAAKoqY,mBAAmBozC,qBAC/Cx9a,KAAKgoiB,oBAAsB51b,GAAE8rR,OAAOl+X,KAAKq5W,qBACzCr5W,KAAK2ge,kBAAoB3ge,KAAKoqY,mBAAmBgzC,iBAC7Cp9a,KAAKq5W,qBACLtuU,QAAQ24B,KAAK,ohBAGrBgke,EAAsBh1gB,UAAUu1gB,kBAAoB,WAEhD,OADa71b,GAAE6xR,YAAYjkY,KAAK2niB,cAGpCD,EAAsBh1gB,UAAUo2c,WAAa,SAAU9id,GACnD,OAAOhmB,KAAK2niB,YAAY3hhB,IAE5B0hhB,EAAsBh1gB,UAAU4yZ,WAAa,SAAU7xE,GAOnD,GANAzzW,KAAKuhB,SAASsib,oBAAsB,KACpC7jc,KAAKuhB,SAASg2X,mBAAqB,KACnCv3Y,KAAKuhB,SAASumhB,kBAAoB,KAClC9niB,KAAKuhB,SAASk8a,eAAiB,KAC/Bz9b,KAAKk+H,OAAS,EACdl+H,KAAK2niB,YAAc,IACdl0L,EAGD,OAFAzzW,KAAKuhB,SAASsmhB,gBAAkB,QAChC7niB,KAAKuhB,SAASg2X,mBAAqB,IAOvC,IAAI36W,EAAS58B,KAAKkoiB,kBAAkBz0L,EAASzzW,KAAKuhB,SAAUmmhB,EAAsBS,WAC9EnoiB,KAAKgoiB,qBACLhoiB,KAAKuhB,SAASg2X,mBAAqB36W,EACnC58B,KAAKooiB,gBAAgBpoiB,KAAKuhB,WAG1BvhB,KAAKuhB,SAASsmhB,gBAAkBjrgB,GAGxC8qgB,EAAsBh1gB,UAAUi8d,cAAgB,SAAU05C,EAAa5xJ,GACnE,GAAIz2Y,KAAKsoiB,mBACL,OAAO,KAEX,IAAIC,EAAqB,CACrB/8hB,OAAQ,GACRgvE,OAAQ,GACR33E,IAAK,IAQT,OANA7C,KAAKwoiB,WAAWH,EAAaE,GAC7BvoiB,KAAKyoiB,cAAcJ,EAAaE,GAChCvoiB,KAAK0oiB,cAAcL,EAAaE,GAC5B9xJ,GACArkS,GAAEmkS,oBAAoBv2Y,KAAKuhB,SAASsmhB,gBAAiBpxJ,GAElD8xJ,GAEXb,EAAsBh1gB,UAAU81gB,WAAa,SAAUH,EAAaE,GAChE,IAAI7mf,EAAQ1hD,KACR6C,EAAMwliB,EAAYxliB,IAAK4rf,EAAW45C,EAAY55C,SAC7C5rf,IAG8B,iBAAb4rf,GAAyBA,GAAY,EAGvD5rf,EAAIgH,UAAUwJ,QAAQ,SAAU/B,GAC5B,IAAI6vhB,EAAaz/e,EAAMinf,WAAWr3hB,EAAMm9e,GACxC85C,EAAmB1liB,IAAIe,KAAKu9hB,KAIhCt+hB,EAAIwQ,QAAQ,SAAU/B,GAClB,IAAI6vhB,EAAaz/e,EAAMinf,WAAWr3hB,GAClCi3hB,EAAmB1liB,IAAIe,KAAKu9hB,OAIxCuG,EAAsBh1gB,UAAU+1gB,cAAgB,SAAUJ,EAAaE,GACnE,IAAI7mf,EAAQ1hD,KACRwL,EAAS68hB,EAAY78hB,OACzB,GAAKA,EAAL,CAGA,IAAIo9hB,EAAgB,GAChBC,GAAmB,EACvBr9hB,EAAO6H,QAAQ,SAAU/B,GACrB,IAAIojY,EAAUhzV,EAAMonf,cAAcx3hB,GAC7BojY,IAGDA,EAAQ10W,eACR6ogB,GAAmB,GAIvBn0J,EAAQ8tD,aAAY,GAAO,GAAO,GAElC9tD,EAAQ2qD,cAGRupG,EAAcl0J,EAAQ1uX,KAAM,SAErB07B,EAAMimf,YAAYjzJ,EAAQ1uX,IACjCuihB,EAAmB/8hB,OAAO5H,KAAK8wY,MAEnC10Y,KAAKuhB,SAASsmhB,gBAAkB7niB,KAAKuhB,SAASsmhB,gBAAgB1yhB,OAAO,SAAUu/X,GAAW,OAAQk0J,EAAcl0J,EAAQ1uX,MACpH6ihB,IACA7oiB,KAAK4+b,oBAAoByE,qCAMzBrjc,KAAK0/Y,aAAajnD,cALJ,CACV/3V,KAAMquZ,GAAOuC,wBACbrnC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,eAK5Bw9K,EAAsBh1gB,UAAUg2gB,cAAgB,SAAUL,EAAaE,GACnE,IAAI7mf,EAAQ1hD,KACRw6E,EAAS6td,EAAY7td,OACpBA,GAGLA,EAAOnnE,QAAQ,SAAU/B,GACrB,IAAIojY,EAAUhzV,EAAMonf,cAAcx3hB,GAC7BojY,IAGLA,EAAQ3kT,WAAWz+E,GACnBi3hB,EAAmB/td,OAAO52E,KAAK8wY,OAGvCgzJ,EAAsBh1gB,UAAUi2gB,WAAa,SAAU74hB,EAAMnG,GACzD,IAAIo/hB,EAAU/oiB,KAAKgpiB,WAAWl5hB,EAAM9P,KAAKuhB,SAAUmmhB,EAAsBS,WAOzE,OANI/1b,GAAE8rR,OAAOv0X,GACTyoG,GAAEw0R,gBAAgB5mY,KAAKuhB,SAASsmhB,gBAAiBkB,EAASp/hB,GAG1D3J,KAAKuhB,SAASsmhB,gBAAgBjkiB,KAAKmliB,GAEhCA,GAEXrB,EAAsBh1gB,UAAUo2gB,cAAgB,SAAUh5hB,GACtD,IACI4kY,EADAu0J,EAAgBjpiB,KAAKoqY,mBAAmB40C,mBAE5C,GAAI5sU,GAAE8rR,OAAO+qK,GAAgB,CAEzB,IAAIjjhB,EAAKijhB,EAAcn5hB,GAEvB,KADA4kY,EAAU10Y,KAAK2niB,YAAY3hhB,IAGvB,OADA+kB,QAAQ/V,MAAM,kCAAoChP,EAAK,yCAChD,UAMX,KADA0uX,EAAUtiS,GAAE/sG,KAAKrF,KAAKuhB,SAASsmhB,gBAAiB,SAAUnzJ,GAAW,OAAOA,EAAQ5kY,OAASA,KAGzF,OADAi7B,QAAQ/V,MAAM,4DAA6DllB,GACpE,KAGf,OAAO4kY,GAEXgzJ,EAAsBh1gB,UAAUw1gB,kBAAoB,SAAUz0L,EAAS7sU,EAAQovD,GAC3E,IAAIt0C,EAAQ1hD,KAEZ,GAAuB,iBAAZyzW,EAAX,CAIA,IAAI+iC,EAAW,GAKf,OAJA/iC,EAAQpgW,QAAQ,SAAUqlhB,GACtB,IAAIh1Y,EAAOhiG,EAAMsnf,WAAWtQ,EAAU9xf,EAAQovD,GAC9CwgT,EAAS5yY,KAAK8/I,KAEX8yP,EARHzrW,QAAQ24B,KAAK,kKAUrBgke,EAAsBh1gB,UAAUs2gB,WAAa,SAAUtQ,EAAU9xf,EAAQovD,GACrE,IAAI0tD,EAAO,IAAI85S,GACfx9b,KAAKwR,QAAQ4oY,SAAS12P,GACtB,IAAI4zX,EAAgBt3gB,KAAKoqY,mBAAmBuX,aAExCunJ,GADuB5xB,GAAiBlla,GAAE8rR,OAAOl+X,KAAKq5W,qBACbr5W,KAAKq5W,oBAAoBq/K,GAAY,KAClF,GAAIwQ,GAAoBA,EAAiBruZ,MACrC6I,EAAK7I,OAAQ,EACb6I,EAAK6zP,mBAAqBv3Y,KAAKkoiB,kBAAkBgB,EAAiBphiB,SAAU47I,EAAM1tD,EAAQ,GAC1F0tD,EAAKyd,UAAyC,IAA9B+nY,EAAiB/nY,SACjCzd,EAAKxsG,MAAQgyf,EAAiBhyf,MAC9BwsG,EAAK/mI,IAAMushB,EAAiBvshB,IAE5B+mI,EAAKylZ,UAAYzlZ,EAAK1xD,OAEtBhyF,KAAKooiB,gBAAgB1kZ,QAIrB,GADAA,EAAK7I,OAAQ,EACTy8X,EACA5zX,EAAK1xD,QAAS,EACd0xD,EAAKyd,UAAW,MAEf,CAGGzd,EAAK1xD,OADLhyF,KAAK25W,eACS35W,KAAK25W,eAAe++K,KAE7B14hB,KAAK2ge,qBAGN3ge,KAAK+niB,iBACS/niB,KAAK+niB,gBAAgBrP,IAS3C,IAAI1jI,EAAkBh1Z,KAAKujb,iBAAiBliB,qBAI5C39Q,EAAKyd,WAAWzd,EAAK1xD,QAAShyF,KAAK0jK,WADd1tE,GAFIg/T,EAAkBA,EAAgB7wZ,OAAS,IAkB5E,OAXAu/I,EAAKylZ,UAAYzlZ,EAAK1xD,OAClBprD,IAAW5mC,KAAKi+W,4BAChBv6N,EAAK98G,OAASA,GAElB88G,EAAK1tD,MAAQA,EACb0tD,EAAKg7S,aAAag6F,EAAU14hB,KAAKk+H,OAAOjsG,YACpCjyB,KAAK2niB,YAAYjkZ,EAAK19H,KACtB+kB,QAAQ24B,KAAK,+BAAiCggF,EAAK19H,GAAK,gFAE5DhmB,KAAK2niB,YAAYjkZ,EAAK19H,IAAM09H,EAC5B1jJ,KAAKk+H,SACEwlB,GAEXgkZ,EAAsBh1gB,UAAUgxI,WAAa,SAAU1tE,GACnD,IAAIozc,EAAkBppiB,KAAKoqY,mBAAmB+vC,0BAC9C,OAAyB,IAArBivH,GAIOpzc,EAAQozc,GAIvB1B,EAAsBh1gB,UAAU01gB,gBAAkB,SAAU1kZ,GACxDA,EAAKmkZ,gBAAkB,GACnBnkZ,EAAK6zP,oBACL7zP,EAAK6zP,mBAAmBlkY,QAAQ,SAAUg2hB,GAClCA,EAAgBxuZ,MACZwuZ,EAAgBxB,iBAChBwB,EAAgBxB,gBAAgBx0hB,QAAQ,SAAUi2hB,GAAa,OAAO5lZ,EAAKmkZ,gBAAgBjkiB,KAAK0liB,KAIpG5lZ,EAAKmkZ,gBAAgBjkiB,KAAKyliB,MAK1C3B,EAAsBh1gB,UAAU41gB,iBAAmB,WAE/C,QADyBl2b,GAAE8rR,OAAOl+X,KAAKoqY,mBAAmBo0C,6BAEtDzzY,QAAQ24B,KAAK,wOAEN,IAMfgke,EAAsBS,UAAY,EAClCT,EAAsBE,aAAe,eAC9BF,EAlTgC,GAqTvC6B,GAAuD,SAAU1/Z,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,IAGhE,SAAW29Z,GACPA,EAAcA,EAAa,OAAa,GAAK,SAC7CA,EAAcA,EAAa,YAAkB,GAAK,cAClDA,EAAcA,EAAa,mBAAyB,GAAK,qBACzDA,EAAcA,EAAa,WAAiB,GAAK,aAJrD,CAKGA,KAAkBA,GAAgB,KACrC,IAq6CQr+Z,GA6GAA,GAuIAA,GAynBJoga,GAlxEAC,GAAoC,WACpC,SAASA,IACLzpiB,KAAK6yD,OAAS,GAwuBlB,OAtuBA42e,EAAmB/2gB,UAAU4yQ,KAAO,WAChC,IAAIokQ,EAAwB1piB,KAAK6+f,aAAat0d,KAAKvqC,KAAM,CAAEwnG,KAAM8oS,GAAUC,kBACvEo5J,EAAwC3piB,KAAK6+f,aAAat0d,KAAKvqC,KAAM,CAAEwnG,KAAM8oS,GAAUC,gBAAiBq5J,qBAAqB,IACjI5piB,KAAK6yD,OAAS,CACV7yD,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOC,gCAAiC26I,GACxF3piB,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOI,+BAAgCu6I,GACvF1piB,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOQ,2BAA4BvvZ,KAAK6piB,eAAet/f,KAAKvqC,OAC5GA,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOM,2BAA4BrvZ,KAAK6+f,aAAat0d,KAAKvqC,KAAM,CAAEwnG,KAAM8oS,GAAUM,cAClI5wY,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOgB,uBAAwB/vZ,KAAK8piB,iBAAiBv/f,KAAKvqC,OAC1GA,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOjK,qBAAsB9kZ,KAAKytb,gBAAgBljZ,KAAKvqC,OACvGA,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOxL,mBAAoBvjZ,KAAKi8b,cAAc1xZ,KAAKvqC,OACnGA,KAAK0/Y,aAAazB,8BAA8B8Q,GAAOG,gCAAiCw6I,IAE5F1piB,KAAK+piB,eAAiB/piB,KAAK6+f,aAAat0d,KAAKvqC,KAAM,CAC/CwnG,KAAM8oS,GAAUI,SAChBi7F,kBAAkB,EAClBx8P,SAAS,IAEbnvO,KAAKoqY,mBAAmB9+W,iBAAiB4nZ,GAAmB+Q,kCAAmCjkb,KAAK+piB,gBACpG/piB,KAAKoqY,mBAAmB9+W,iBAAiB4nZ,GAAmBgR,yCAA0Clkb,KAAK+piB,gBAC3G/piB,KAAKuhB,SAAW,IAAIi8a,GACpBx9b,KAAKgqiB,YAAc,IAAItC,GAAsB1niB,KAAKuhB,SAAUvhB,KAAKoqY,mBAAoBpqY,KAAKwR,QAASxR,KAAK0/Y,aAAc1/Y,KAAKujb,iBAAkBvjb,KAAKmjZ,QAASnjZ,KAAKkqX,UAAWlqX,KAAK4+b,qBAChL5+b,KAAKwR,QAAQ4oY,SAASp6Y,KAAKuhB,WAE/BkohB,EAAmB/2gB,UAAUxR,QAAU,WAC/BlhB,KAAK6yD,OAAO1uD,SACZnE,KAAK6yD,OAAOx/C,QAAQ,SAAU4jC,GAAQ,OAAOA,MAC7Cj3C,KAAK6yD,OAAS,IAElB7yD,KAAKoqY,mBAAmBz+W,oBAAoBunZ,GAAmB+Q,kCAAmCjkb,KAAK+piB,gBACvG/piB,KAAKoqY,mBAAmBz+W,oBAAoBunZ,GAAmBgR,yCAA0Clkb,KAAK+piB,iBAElHN,EAAmB/2gB,UAAUvpB,MAAQ,WACjC,IAAIsqW,EAAUzzW,KAAKoqY,mBAAmBywC,aAClCpnE,GACAzzW,KAAKslb,WAAW7xE,IAGxBg2L,EAAmB/2gB,UAAUo/c,sBAAwB,SAAU0mC,EAAYC,EAAUC,EAAiBC,GAClG,IAAIsxB,EACA3xgB,GAAM,EAIV,EAAG,CACC2xgB,GAAmB,EAMnB,IALA,IAAIC,EAAkBlqiB,KAAKmxe,mBAAmBqnC,GAC1C2xB,EAAgBnqiB,KAAKmxe,mBAAmBsnC,GAExCnwgB,EAAWiW,KAAKukC,IAAIonf,EAAiBxxB,GACrChnC,EAAUnzd,KAAKG,IAAIyrhB,EAAexxB,GAC7BtugB,EAAW/B,EAAU+B,GAAYqne,EAASrne,IAAY,CAC3D,IAAIqqY,EAAU10Y,KAAKo/c,OAAO/0c,GAC1B,GAAIqqY,EAAQ+rD,mBAAoB,CAC5B,IAAInqF,EAAYt2W,KAAKoqY,mBAAmB84C,oBAAoBxuC,GAC5DA,EAAQ8rD,aAAalqF,EAAU9rW,QAC/By/hB,GAAmB,EACnB3xgB,GAAM,GAGV2xgB,GACAjqiB,KAAKoqiB,mBAEJH,GACT,OAAO3xgB,GAEXmxgB,EAAmB/2gB,UAAU03gB,WAAa,WAEtC,IADA,IAAIC,EAAa,EACRxiiB,EAAI,EAAGA,EAAI7H,KAAKsqiB,cAAcnmiB,OAAQ0D,IAAK,CAGhD,IAAIs7a,EAAgBnjb,KAAKoqY,mBAAmBg4B,iBAAmB9xB,GAAU8C,kBACrEsB,EAAU10Y,KAAKsqiB,cAAcziiB,GACjC,GAAIuqG,GAAEgsR,QAAQsW,EAAQp+B,WAAY,CAC9B,IAAIA,EAAYt2W,KAAKoqY,mBAAmB84C,oBAAoBxuC,EAASyuC,GACrEzuC,EAAQ8rD,aAAalqF,EAAU9rW,OAAQ8rW,EAAU8sE,WAErD1uC,EAAQ6qD,UAAU8qG,GAClB31J,EAAQisD,YAAY94b,GACpBwiiB,GAAc31J,EAAQp+B,YAG9BmzL,EAAmB/2gB,UAAU63gB,aAAe,SAAU71J,EAASmpE,GAE3D,GADAnpE,EAAQ2qD,cACJ3qD,EAAQ4C,cAAe,CACvB,GAAI5C,EAAQ6C,sBAMWsmE,EAAYv7G,YAAeoyC,EAAQvzO,UAElD,IAAK,IAAIt5J,EAAI,EAAGA,EAAI6sY,EAAQ6C,mBAAmBpzY,OAAQ0D,IACnD7H,KAAKuqiB,aAAa71J,EAAQ6C,mBAAmB1vY,GAAIg2c,GAIzDnpE,EAAQ5rW,SACR4rW,EAAQ5rW,QAAQu2Z,cAGpB3qD,EAAQwpD,YACRxpD,EAAQwpD,WAAWmB,eAI3BoqG,EAAmB/2gB,UAAUm8d,kBAAoB,SAAUr4G,EAAU2oD,EAAOh4J,GACxE,IAAIzlP,EAAQ1hD,UACM,IAAdmnS,IAAwBA,EAAY,GACxC,IAAIqjQ,EAAkBxqiB,KAAKmxe,mBAAmBhyC,GAE9C,OADwBn/b,KAAKo/c,OAAOorF,KACVh0J,EAAS,KAGnCA,EAASnjY,QAAQ,SAAUqhY,GACvBtiS,GAAEq0R,gBAAgB/kV,EAAMngC,SAASsmhB,gBAAiBnzJ,KAEtD8B,EAASnjY,QAAQ,SAAUqhY,EAAS33N,GAChC3qE,GAAEw0R,gBAAgBllV,EAAMngC,SAASsmhB,gBAAiBnzJ,EAAS81J,EAAkBrjQ,EAAYpqH,KAE7F/8K,KAAK6+f,aAAa,CACdr3Z,KAAM8oS,GAAUC,gBAChBo7F,kBAAkB,EAClBx8P,SAAS,EACTgwR,iBAAiB,KAEd,IAEXsqC,EAAmB/2gB,UAAUw7d,oBAAsB,SAAUx5G,EAASyqD,GAClE,IAAIqrG,EAA2B,MAATrrG,EAAgBn/b,KAAKmxe,mBAAmBhyC,GAAS,KACnEsrG,EAAuC,MAAnBD,EAA0BxqiB,KAAKo/c,OAAOorF,GAAmB,KACjF,GAAKC,GAAsB/1J,GAAW+1J,IAAsB/1J,GAAoB,MAATyqD,EAAvE,CAOA,IAAIurG,EAAY1qiB,KAAK0uf,qBAAqBvvD,EAAOsrG,GAC7CzqiB,KAAK2qiB,oBAAsB3qiB,KAAK2qiB,qBAAuBF,IACvDzqiB,KAAK2qiB,mBAAmBxqG,eAAe,MACvCngc,KAAK2qiB,mBAAqB,MAE9BF,EAAkBtqG,eAAeuqG,GACjC1qiB,KAAK2qiB,mBAAqBF,OAZlBzqiB,KAAK2qiB,qBACL3qiB,KAAK2qiB,mBAAmBxqG,eAAe,MACvCngc,KAAK2qiB,mBAAqB,OAYtClB,EAAmB/2gB,UAAUg8d,qBAAuB,SAAUvvD,EAAOzqD,GACjE,IAAKA,EAAS,CACV,IAAI/qY,EAAQ3J,KAAKmxe,mBAAmBhyC,GAEpC,KADAzqD,EAAU10Y,KAAKo/c,OAAOz1c,GAAS,IAE3B,MAAO,QAIf,OAAOw1b,EADMzqD,EAAQ0qD,OAAoB1qD,EAAQp+B,UACb,EAAI,QAAU,SAEtDmzL,EAAmB/2gB,UAAU47d,0BAA4B,WACrD,OAAOtuf,KAAK2qiB,oBAEhBlB,EAAmB/2gB,UAAUymf,eAAiB,WAC1C,OAAO,GAEXswB,EAAmB/2gB,UAAU8he,YAAc,WACvC,OAAIx0f,KAAKsqiB,cACEtqiB,KAAKsqiB,cAAcnmiB,OAEvB,GAEXsliB,EAAmB/2gB,UAAUgnf,oBAAsB,WAE/C,OADsB15gB,KAAKsqiB,eAAiBtqiB,KAAKsqiB,cAAc,KAAOtqiB,KAAKuhB,SAEhE,EAEJvhB,KAAKuhB,SAASsib,oBAAsB7jc,KAAKuhB,SAASsib,oBAAoB1/b,OAAS,GAE1FsliB,EAAmB/2gB,UAAUmnf,6BAA+B,SAAU+wB,GAElE,GADsB5qiB,KAAKsqiB,eAAiBtqiB,KAAKsqiB,cAAc,KAAOtqiB,KAAKuhB,SAEvE,OAAOqphB,EAEX,IAAIl2J,EAAU10Y,KAAKuhB,SAASumhB,kBAAkB8C,GAC9C,GAAI5qiB,KAAKoqY,mBAAmBgqC,yBAExB,KAAO1/B,EAAQvzO,UAAYuzO,EAAQozJ,mBAAqBpzJ,EAAQozJ,kBAAkB3jiB,OAAS,GACvFuwY,EAAUA,EAAQozJ,kBAAkB,GAG5C,OAAOpzJ,EAAQrqY,UAEnBo/hB,EAAmB/2gB,UAAUwmf,aAAe,SAAUvvgB,GAClD,GAAIyoG,GAAEgsR,QAAQp+X,KAAKsqiB,eACf,OAAO,KAEX,IAAI51J,EAAU10Y,KAAKsqiB,cAAc3giB,GACjC,OAAI+qY,EACO,CACH0qD,OAAQ1qD,EAAQ0qD,OAChB9oF,UAAWo+B,EAAQp+B,WAGpB,MAEXmzL,EAAmB/2gB,UAAUo3gB,iBAAmB,WAC5C,IAAI36T,EAAUnvO,KAAKoqY,mBAAmBsyC,gBACtC18a,KAAK6+f,aAAa,CAAEr3Z,KAAM8oS,GAAUI,SAAUi7F,kBAAkB,EAAMx8P,QAASA,KAEnFs6T,EAAmB/2gB,UAAU+6Z,gBAAkB,SAAUnla,GACrD,IAAIA,EAAM0na,gBAAV,CAGA,IAAI7gN,EAAUnvO,KAAKoqY,mBAAmBsyC,gBACtC18a,KAAK6+f,aAAa,CAAEr3Z,KAAM8oS,GAAUE,YAAam7F,kBAAkB,EAAMx8P,QAASA,MAEtFs6T,EAAmB/2gB,UAAUupa,cAAgB,WACzC,IAAI9sN,EAAUnvO,KAAKoqY,mBAAmBsyC,gBACtC18a,KAAK6+f,aAAa,CAAEr3Z,KAAM8oS,GAAUG,UAAWk7F,kBAAkB,EAAMx8P,QAASA,EAASgwR,iBAAiB,KAE9GsqC,EAAmB/2gB,UAAUuiK,QAAU,WACnC,OAAOq7M,GAAUuC,4BAErB42J,EAAmB/2gB,UAAUm3gB,eAAiB,WACtC7piB,KAAKujb,iBAAiBv8B,gBACtBhnZ,KAAK6+f,aAAa,CAAEr3Z,KAAM8oS,GAAUM,aAGpC5wY,KAAK6+f,aAAa,CAAEr3Z,KAAM8oS,GAAUK,kBAG5C84J,EAAmB/2gB,UAAUm4gB,iBAAmB,SAAUC,GAQtD,IAAIC,EAAiB34b,GAAEosR,eAAessK,GAClCjtF,EAAc,IAAIhC,IAAY,EAAO77c,KAAKuhB,UAI9C,OAHIwphB,GAAkB/qiB,KAAKoqY,mBAAmBuX,eAC1Ck8D,EAAY3B,cAET2B,GAEX4rF,EAAmB/2gB,UAAUmse,aAAe,SAAU/0a,GAMlD,IAAIpoC,EAAQ1hD,KAMR69c,EAAc79c,KAAK6qiB,iBAAiB/gd,EAAOghd,qBAC/C,OAAQhhd,EAAO0d,MACX,KAAK8oS,GAAUC,gBAEXvwY,KAAKgriB,cAAclhd,EAAO4+U,WAAY5+U,EAAOghd,oBAAqBhhd,EAAO2sT,aAAconE,EAAa/zX,EAAO8/c,qBAE/G,KAAKt5J,GAAUE,YAEXxwY,KAAKiriB,SAASptF,GAElB,KAAKvtE,GAAUM,WACX5wY,KAAKkriB,QAAQrtF,GACjB,KAAKvtE,GAAUK,eAEX3wY,KAAKk7gB,YAAYr9D,GAErB,KAAKvtE,GAAUG,UAEXzwY,KAAKmriB,OAAOrhd,EAAOghd,oBAAqBjtF,GAE5C,KAAKvtE,GAAUI,SAEX1wY,KAAKoriB,kBAMbpriB,KAAKuqiB,aAAavqiB,KAAKuhB,SAAUs8b,GACjC79c,KAAKoqiB,aAULpqiB,KAAK0/Y,aAAajnD,cATN,CACR/3V,KAAMquZ,GAAO0B,oBACbxmC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChB/6I,QAASrlJ,EAAOqlJ,QAChBw8P,iBAAkB7hZ,EAAO6hZ,iBACzBzlO,QAASp8K,EAAOo8K,QAChB0lO,SAAS,IAGT5re,KAAKgyd,QACL7mc,OAAOyZ,WAAW,WACd8c,EAAMswa,OAAO7lL,UACd,IAGXs9P,EAAmB/2gB,UAAU0N,QAAU,WACnC,IAAIirgB,EASJ,OANIA,EAFsBj5b,GAAE8rR,OAAOl+X,KAAKoqY,mBAAmBo0C,2BAEzCpsU,GAAEgsR,QAAQp+X,KAAKuhB,SAASg2X,qBAAmE,IAA5Cv3Y,KAAKuhB,SAASg2X,mBAAmBpzY,OAGhFiuG,GAAEgsR,QAAQp+X,KAAKuhB,SAASsmhB,kBAA6D,IAAzC7niB,KAAKuhB,SAASsmhB,gBAAgB1jiB,OAEhFiuG,GAAEgsR,QAAQp+X,KAAKuhB,WAAa8phB,IAAgBrriB,KAAKujb,iBAAiB5b,WAGlF8hI,EAAmB/2gB,UAAU89c,eAAiB,WAC1C,OAAOp+X,GAAE8rR,OAAOl+X,KAAKsqiB,gBAAkBtqiB,KAAKsqiB,cAAcnmiB,OAAS,GAEvEsliB,EAAmB/2gB,UAAUgxa,4BAA8B,SAAUs1E,EAAcC,GAE/E,IAEIvnC,EAFA45D,GAAeryB,EACfsyB,GAAa,EAEb3ugB,EAAS,GACT2ma,EAAuBvjc,KAAKoqY,mBAAmB2pC,yBA6BnD,OA5BA/za,KAAKqggB,8BAA8B,SAAU3rH,GACzC,IAAI82J,EAAoBF,IAAgBC,EAQxC,GANKD,GACG52J,IAAYukI,GAAevkI,IAAYskI,IACvCsyB,GAAc,IAGE52J,EAAQ75P,QAAS0oT,EACjB,CACpB,IAAIv4O,EAAUsgV,IAAgBC,EAC1BE,EAAiB/2J,EAAQivD,eAAe+tC,IACxC1mR,GAAWygV,IACX7ugB,EAAOh5B,KAAK8wY,GAGhB82J,IACI92J,IAAYukI,GAAevkI,IAAYskI,IACvCuyB,GAAa,EAET75D,EADAh9F,IAAYukI,EACFA,EAGAD,MAKnBp8e,GAEX6sgB,EAAmB/2gB,UAAU+yZ,cAAgB,SAAUtxE,GACnDppU,QAAQ/V,MAAM,wEAElBy0gB,EAAmB/2gB,UAAU4rb,iBAAmB,WAC5C,OAAOt+c,KAAKuhB,SAAWvhB,KAAKuhB,SAASg2X,mBAAqB,MAE9DkyJ,EAAmB/2gB,UAAUyiB,YAAc,WACvC,OAAOn1C,KAAKuhB,UAEhBkohB,EAAmB/2gB,UAAU0sb,OAAS,SAAUz1c,GAC5C,OAAO3J,KAAKsqiB,cAAc3giB,IAE9B8/hB,EAAmB/2gB,UAAU0/c,aAAe,SAAU19F,GAClD,OAAO10Y,KAAKsqiB,cAAcrhiB,QAAQyrY,IAAY,GAElD+0J,EAAmB/2gB,UAAUy+c,mBAAqB,SAAUu6D,GACxD,GAAI1riB,KAAKogC,UACL,OAAQ,EAIZ,IAAIurgB,EAAgB,EAChBC,EAAa5riB,KAAKsqiB,cAAcnmiB,OAAS,EAE7C,GAAIuniB,GAAgB,EAEhB,OAAO,EAGX,GADet5b,GAAEj7F,KAAKnX,KAAKsqiB,eACdlrG,QAAUssG,EACnB,OAAO1riB,KAAKsqiB,cAAcnmiB,OAAS,EAEvC,OAAa,CACT,IAAI0niB,EAAatthB,KAAKs7B,OAAO8xf,EAAgBC,GAAc,GACvDznG,EAAiBnkc,KAAKsqiB,cAAcuB,GACxC,GAAI7riB,KAAK8riB,aAAa3nG,EAAgBunG,GAClC,OAAOG,EAEP1nG,EAAe/E,OAASssG,EACxBC,EAAgBE,EAAa,EAExB1nG,EAAe/E,OAASssG,IAC7BE,EAAaC,EAAa,KAItCpC,EAAmB/2gB,UAAUo5gB,aAAe,SAAUp3J,EAASg3J,GAI3D,OAHeh3J,EAAQ0qD,QAEMssG,GADXh3J,EAAQ0qD,OAAS1qD,EAAQp+B,UACgBo1L,GAG/DjC,EAAmB/2gB,UAAUs7c,qBAAuB,WAChD,GAAIhue,KAAKsqiB,eAAiBtqiB,KAAKsqiB,cAAcnmiB,OAAS,EAAG,CACrD,IAAIute,EAAUt/X,GAAEj7F,KAAKnX,KAAKsqiB,eAE1B,OADgB54D,EAAQtyC,OAASsyC,EAAQp7H,UAG7C,OAAO,GAEXmzL,EAAmB/2gB,UAAU0te,gBAAkB,SAAUnte,GACjDjzB,KAAKuhB,SAASsmhB,iBACd7niB,KAAKuhB,SAASsmhB,gBAAgBx0hB,QAAQ,SAAUqhY,EAAS/qY,GAAS,OAAOspB,EAASyhX,EAAS/qY,MAGnG8/hB,EAAmB/2gB,UAAUssb,YAAc,SAAU/rb,GACjDjzB,KAAK+riB,gCAAgC/riB,KAAKuhB,SAASg2X,mBAAoBtkX,EAAUw0gB,GAAcuE,OAAQ,IAE3GvC,EAAmB/2gB,UAAUmsb,uBAAyB,SAAU5rb,GAC5DjzB,KAAK+riB,gCAAgC/riB,KAAKuhB,SAASsib,oBAAqB5wa,EAAUw0gB,GAAcwE,YAAa,IAEjHxC,EAAmB/2gB,UAAU2te,8BAAgC,SAAUpte,GACnEjzB,KAAK+riB,gCAAgC/riB,KAAKuhB,SAASumhB,kBAAmB70gB,EAAUw0gB,GAAcyE,mBAAoB,IAEtHzC,EAAmB/2gB,UAAUy5gB,iBAAmB,SAAUl5gB,GACtDjzB,KAAK+riB,gCAAgC,CAAC/riB,KAAKuhB,UAAW0R,EAAUw0gB,GAAc2E,WAAY,IAO9F3C,EAAmB/2gB,UAAUq5gB,gCAAkC,SAAU53a,EAAOlhG,EAAUo5gB,EAAe1iiB,GACrG,IAAKwqH,EACD,OAAOxqH,EAEX,IAAK,IAAI9B,EAAI,EAAGA,EAAIssH,EAAMhwH,OAAQ0D,IAAK,CACnC,IAAI67I,EAAOvvB,EAAMtsH,GAGjB,GAFAorB,EAASywH,EAAM/5I,KAEX+5I,EAAK4zP,cAAe,CAEpB,IAAIg1J,EAAe,KACnB,OAAQD,GACJ,KAAK5E,GAAcuE,OACfM,EAAe5oZ,EAAK6zP,mBACpB,MACJ,KAAKkwJ,GAAcwE,YACfK,EAAe5oZ,EAAKmgT,oBACpB,MACJ,KAAK4jG,GAAcyE,mBACfI,EAAe5oZ,EAAKokZ,kBACpB,MACJ,KAAKL,GAAc2E,WAEfE,EAAgB5oZ,EAAKmtT,UAAqC,KAAzBntT,EAAKokZ,kBAG1CwE,IACA3iiB,EAAQ3J,KAAK+riB,gCAAgCO,EAAcr5gB,EAAUo5gB,EAAe1iiB,KAIhG,OAAOA,GAIX8/hB,EAAmB/2gB,UAAUwof,YAAc,SAAUr9D,GAC7C79c,KAAKusiB,kBACLvsiB,KAAKusiB,iBAAiBlga,QAAQ,CAAEqoQ,QAAS10Y,KAAKuhB,SAAUs8b,YAAaA,KAK7E4rF,EAAmB/2gB,UAAU8xV,oBAAsB,SAAUtmU,GACzD,IAAI23W,EAAgB71Z,KAAKoqY,mBAAmBuX,aACxC3hZ,KAAKuhB,UAGT,SAASirhB,EAA0Bh2J,GAC1BA,GAGLA,EAASnjY,QAAQ,SAAUqhY,IACMmhB,EAAgBzjT,GAAE8rR,OAAOwW,EAAQ6C,oBAAsB7C,EAAQ75P,SAExF65P,EAAQvzO,SAAWjjH,EACnBsuf,EAA0B93J,EAAQ6C,uBAV1Ci1J,CAA0BxsiB,KAAKuhB,SAASg2X,oBAc5Cv3Y,KAAK6+f,aAAa,CAAEr3Z,KAAM8oS,GAAUI,WAQpC1wY,KAAK0/Y,aAAajnD,cANN,CACRwxB,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAChBxpX,KAAMquZ,GAAOK,0BACb7oY,OALc23B,EAAS,YAAc,iBAS7Curf,EAAmB/2gB,UAAUy4gB,OAAS,SAAUL,EAAqBjtF,GACjE79c,KAAKysiB,UAAUpga,QAAQ,CACnBqoQ,QAAS10Y,KAAKuhB,SACduphB,oBAAqBA,EACrBjtF,YAAaA,KAGrB4rF,EAAmB/2gB,UAAUs4gB,cAAgB,SAAUtiI,EAAYoiI,EAAqBr0J,EAAconE,EAAa+rF,GAG/G,IAD0Bx3b,GAAE8rR,OAAOl+X,KAAKoqY,mBAAmBo0C,2BAI3D,GAAIx+a,KAAK0siB,WAAY,CACjB,GAAI5B,EAAqB,CACrB,IAAI6B,EAAW,CACX9piB,IAAK,GACL2I,OAAQ,GACRgvE,OAAQ,IAEZswd,EAAoBz3hB,QAAQ,SAAUu5hB,GAClCx6b,GAAEu1R,QAAQglK,EAAS9piB,IAAK+piB,EAAK/piB,KAC7BuvG,GAAEu1R,QAAQglK,EAASnhiB,OAAQohiB,EAAKphiB,QAChC4mG,GAAEu1R,QAAQglK,EAASnyd,OAAQoyd,EAAKpyd,UAEpCx6E,KAAK0siB,WAAWrga,QAAQ,CACpBqoQ,QAAS10Y,KAAKuhB,SACdgnhB,mBAAoBoE,EACpBl2J,aAAcA,EACdonE,YAAaA,SAKjB79c,KAAK4+b,oBAAoBgf,4BACzB59c,KAAK0siB,WAAWrga,QAAQ,CACpBqoQ,QAAS10Y,KAAKuhB,SACds8b,YAAaA,EACb+rF,oBAAqBA,IAGzB5piB,KAAK6siB,kBAAkBnkI,GAEvB1oa,KAAKoqY,mBAAmB2pC,0BACxB/za,KAAK4+b,oBAAoByE,mCAAmCwa,QAIhE79c,KAAKuhB,SAASg2X,mBAAqBv3Y,KAAKuhB,SAASsmhB,iBAGzD4B,EAAmB/2gB,UAAUm6gB,kBAAoB,SAAUnkI,GAClDA,GAGLt2T,GAAE8kS,qBAAqBl3Y,KAAKuhB,SAASg2X,mBAAoB,SAAU7zP,EAAM/mI,GAItC,kBAApB+rZ,EAAW/rZ,KAClB+mI,EAAKyd,SAAWunQ,EAAW/rZ,OAIvC8shB,EAAmB/2gB,UAAUu4gB,SAAW,SAAUptF,GAC9C79c,KAAK8siB,YAAYzga,QAAQ,CAAEqoQ,QAAS10Y,KAAKuhB,SAAUs8b,YAAaA,KAEpE4rF,EAAmB/2gB,UAAUw4gB,QAAU,SAAUrtF,GACzC79c,KAAK+siB,YACL/siB,KAAK+siB,WAAW1ga,QAAQ,CAAEqoQ,QAAS10Y,KAAKuhB,SAAUs8b,YAAaA,KAGvE4rF,EAAmB/2gB,UAAUs6gB,cAAgB,WACzC,IAAKhtiB,KAAKuhB,SAASg2X,qBAAuBv3Y,KAAKoqY,mBAAmB4yC,kCAC9D,OAAO,KAEX,IAAIpgZ,EAAS,GAEb,OADAw1E,GAAE8kS,qBAAqBl3Y,KAAKuhB,SAASg2X,mBAAoB,SAAU7zP,EAAM/mI,GAAO,OAAOigB,EAAOjgB,GAAO+mI,EAAKyd,WACnGvkI,GAEX6sgB,EAAmB/2gB,UAAUu1gB,kBAAoB,WAC7C,OAAOjoiB,KAAKgqiB,YAAY/B,qBAE5BwB,EAAmB/2gB,UAAUo2c,WAAa,SAAU9id,GAChD,OAAOhmB,KAAKgqiB,YAAYlhE,WAAW9id,IAGvCyjhB,EAAmB/2gB,UAAU4yZ,WAAa,SAAU7xE,GAIhD,IAAIi1D,EAAa1oa,KAAKgtiB,gBACtBhtiB,KAAKgqiB,YAAY1kH,WAAW7xE,GAU5BzzW,KAAK0/Y,aAAajnD,cALQ,CACtB/3V,KAAMquZ,GAAOiB,uBACb/lC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,YAGpBlqX,KAAK6+f,aAAa,CACdr3Z,KAAM8oS,GAAUC,gBAChBm4B,WAAYA,EACZxiK,SAAS,KAGjBujS,EAAmB/2gB,UAAUqxe,mBAAqB,SAAUF,EAAoB5we,GAC5E,IAAIyuB,EAAQ1hD,KACZ,IAAKA,KAAKitiB,wBAAyB,CAC/BjtiB,KAAKitiB,wBAA0B,GAC/B,IAAIC,EAAaltiB,KAAKoqY,mBAAmBoyC,gCACzCrxZ,OAAOyZ,WAAW,WACd8c,EAAMyrf,4BACNzrf,EAAMurf,wBAA0B,MACjCC,GAEPltiB,KAAKitiB,wBAAwBrpiB,KAAK,CAAEiggB,mBAAoBA,EAAoB5we,SAAUA,KAE1Fw2gB,EAAmB/2gB,UAAUy6gB,0BAA4B,WACrD,IAAIzrf,EAAQ1hD,KACZA,KAAK4hX,WAAWi8E,gBAChB,IAAIuvG,EAAqB,GACrBC,EAAe,GACfrtiB,KAAKitiB,yBACLjtiB,KAAKitiB,wBAAwB55hB,QAAQ,SAAUi6hB,GAC3C,IAAIC,EAAc7rf,EAAMsof,YAAYr7C,cAAc2+C,EAASzpC,mBAAoB,MAC/EwpC,EAAazpiB,KAAK2piB,GACdD,EAASr6gB,UACTm6gB,EAAmBxpiB,KAAK0piB,EAASr6gB,SAASsX,KAAK,KAAMgjgB,MAIjEvtiB,KAAKwtiB,oBAAoBH,GAErBD,EAAmBjpiB,OAAS,GAC5BgnB,OAAOyZ,WAAW,WACdwogB,EAAmB/5hB,QAAQ,SAAU4jC,GAAQ,OAAOA,OACrD,IAGXwyf,EAAmB/2gB,UAAUi8d,cAAgB,SAAU05C,EAAa5xJ,GAChEz2Y,KAAK4hX,WAAWi8E,gBAChB,IAAI0vG,EAAcvtiB,KAAKgqiB,YAAYr7C,cAAc05C,EAAa5xJ,GAE9D,OADAz2Y,KAAKwtiB,oBAAoB,CAACD,GAAc92J,GACjC82J,GAGX9D,EAAmB/2gB,UAAU86gB,oBAAsB,SAAUH,EAAc52J,GACvEz2Y,KAAK6+f,aAAa,CACdr3Z,KAAM8oS,GAAUC,gBAChBu6J,oBAAqBuC,EACrB52J,aAAcA,EACdk1F,kBAAkB,EAClBx8P,SAAS,EACTgwR,iBAAiB,IAOrBn/f,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOkB,uBACbhmC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAIxBu/K,EAAmB/2gB,UAAU04gB,gBAAkB,WAC3CpriB,KAAKsqiB,cAAgBtqiB,KAAKytiB,aAAapha,QAAQ,CAAEqoQ,QAAS10Y,KAAKuhB,YAEnEkohB,EAAmB/2gB,UAAUowc,mBAAqB,WAC9C9ie,KAAK6+f,aAAa,CAAEr3Z,KAAM8oS,GAAUI,SAAUi7F,kBAAkB,EAAMwzB,iBAAiB,KAE3FsqC,EAAmB/2gB,UAAUove,gBAAkB,WAC3C9hgB,KAAKg/c,YAAY,SAAUtqE,GAAW,OAAOA,EAAQ8rD,aAAa,QAClExgc,KAAK8ie,sBAETymE,GAAc,CACV5sJ,GAAU,uBACX8sJ,EAAmB/2gB,UAAW,0BAAsB,GACvD62gB,GAAc,CACV5sJ,GAAU,qBACX8sJ,EAAmB/2gB,UAAW,wBAAoB,GACrD62gB,GAAc,CACV5sJ,GAAU,kBACX8sJ,EAAmB/2gB,UAAW,qBAAiB,GAClD62gB,GAAc,CACV5sJ,GAAU,WACX8sJ,EAAmB/2gB,UAAW,cAAU,GAC3C62gB,GAAc,CACV5sJ,GAAU,wBACX8sJ,EAAmB/2gB,UAAW,2BAAuB,GACxD62gB,GAAc,CACV5sJ,GAAU,iBACX8sJ,EAAmB/2gB,UAAW,oBAAgB,GACjD62gB,GAAc,CACV5sJ,GAAU,YACX8sJ,EAAmB/2gB,UAAW,eAAW,GAC5C62gB,GAAc,CACV5sJ,GAAU,iBACX8sJ,EAAmB/2gB,UAAW,oBAAgB,GACjD62gB,GAAc,CACV5sJ,GAAU,eACX8sJ,EAAmB/2gB,UAAW,kBAAc,GAC/C62gB,GAAc,CACV5sJ,GAAU,cACX8sJ,EAAmB/2gB,UAAW,iBAAa,GAC9C62gB,GAAc,CACV5sJ,GAAU,YACX8sJ,EAAmB/2gB,UAAW,eAAW,GAC5C62gB,GAAc,CACV5sJ,GAAU,gBACX8sJ,EAAmB/2gB,UAAW,mBAAe,GAChD62gB,GAAc,CACV5sJ,GAAU,cACX8sJ,EAAmB/2gB,UAAW,iBAAa,GAC9C62gB,GAAc,CACV5sJ,GAAU,iBACX8sJ,EAAmB/2gB,UAAW,oBAAgB,GACjD62gB,GAAc,CACVzsJ,GAAS,eACV2sJ,EAAmB/2gB,UAAW,kBAAc,GAC/C62gB,GAAc,CACVzsJ,GAAS,qBACV2sJ,EAAmB/2gB,UAAW,wBAAoB,GACrD62gB,GAAc,CACVzsJ,GAAS,eACV2sJ,EAAmB/2gB,UAAW,kBAAc,GAC/C62gB,GAAc,CACVjtJ,IACDmtJ,EAAmB/2gB,UAAW,OAAQ,MACzC62gB,GAAc,CACV/sJ,IACDitJ,EAAmB/2gB,UAAW,UAAW,MACvB62gB,GAAc,CAC/BruJ,GAAK,aACNuuJ,GAzuBiC,GA6uBpCiE,GAAuD,SAAU7ja,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D6ja,GAA6B,WAC7B,SAASA,KAmBT,OAjBAA,EAAYj7gB,UAAU25G,QAAU,SAAUviD,GACtC,IAAI4qT,EAAU5qT,EAAO4qT,QACrB10Y,KAAK4tiB,cAAcz4hB,OADyB20E,EAAO+zX,aAEnD79c,KAAK6tiB,kBAAkBjqB,+BAA+BlvI,IAE1Dg5J,GAAc,CACV/wJ,GAAU,uBACXgxJ,EAAYj7gB,UAAW,0BAAsB,GAChDg7gB,GAAc,CACV/wJ,GAAU,sBACXgxJ,EAAYj7gB,UAAW,yBAAqB,GAC/Cg7gB,GAAc,CACV/wJ,GAAU,kBACXgxJ,EAAYj7gB,UAAW,qBAAiB,GAC7Bg7gB,GAAc,CACxBxyJ,GAAK,gBACNyyJ,GAnB0B,GAuB7BG,GAAuD,SAAUjka,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dika,GAA2B,WAC3B,SAASA,KAgDT,OA9CAA,EAAUr7gB,UAAU25G,QAAU,SAAUviD,GACpC,IAAIkkd,EAAchuiB,KAAKq7b,eAAeg2E,0BAClC48B,EAAa77b,GAAE8rR,OAAO8vK,IAAgBA,EAAY7piB,OAAS,EAC3Du6W,EAAYuvL,GACT77b,GAAE8rR,OAAOp0S,EAAOghd,sBAKhB9qiB,KAAKoqY,mBAAmBi1C,cAE3B6uH,EAAiBxvL,EAAY1+W,KAAKmuiB,oBAAoBrkd,EAAOghd,qBAAuB,KACpF71I,EAAej1Z,KAAKujb,iBAAiBpiB,kBACrCitI,EAAiBh8b,GAAEosR,eAAey2B,GACtCj1Z,KAAKquiB,YAAYxyhB,KAAKmyhB,EAAaC,EAAYvvL,EAAWwvL,EAAgBpkd,EAAO+zX,YAAauwF,IAElGL,EAAUr7gB,UAAUy7gB,oBAAsB,SAAUrD,GAChD,IAAIwD,EAAa,GACbC,EAAe,SAAU/3J,GACrBA,GACAA,EAASnjY,QAAQ,SAAUqhY,GAAW,OAAO45J,EAAW55J,EAAQ1uX,KAAM,KAS9E,OALA8khB,EAAoBz3hB,QAAQ,SAAUu5hB,GAClC2B,EAAa3B,EAAK/piB,KAClB0riB,EAAa3B,EAAKpyd,QAClB+zd,EAAa3B,EAAKphiB,UAEf8iiB,GAEXR,GAAc,CACVnxJ,GAAU,uBACXoxJ,EAAUr7gB,UAAW,0BAAsB,GAC9Co7gB,GAAc,CACVnxJ,GAAU,gBACXoxJ,EAAUr7gB,UAAW,mBAAe,GACvCo7gB,GAAc,CACVnxJ,GAAU,mBACXoxJ,EAAUr7gB,UAAW,sBAAkB,GAC1Co7gB,GAAc,CACVnxJ,GAAU,qBACXoxJ,EAAUr7gB,UAAW,wBAAoB,GAChCo7gB,GAAc,CACtB5yJ,GAAK,cACN6yJ,GAhDwB,GAoD3BS,GAAuD,SAAU3ka,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D2ka,GAA8B,WAC9B,SAASA,KA0JT,OAxJAA,EAAa/7gB,UAAU25G,QAAU,SAAUviD,GACvC,IAAIvoE,EAAWuoE,EAAO4qT,QAGlB93W,EAAS,GAETytgB,EAAa,CAAE9oiB,MAAO,GACtBmtiB,EAAgB1uiB,KAAKujb,iBAAiB5tB,cAGtCg5I,EAAeD,GAAiBnthB,EAASsvb,UAa7C,OAXA7wc,KAAK4uiB,8BADSD,EAAe,CAACpthB,GAAYA,EAASumhB,kBACPlrgB,EAAQytgB,EAAYqE,EAAe,IAGhDC,GADJ/xgB,EAAOz4B,OAAS,GAIpCnE,KAAKoqY,mBAAmB2sC,8BAE3B/2a,KAAK6uiB,uBAAuBtthB,GAC5BvhB,KAAK8uiB,0BAA0BvthB,EAASunB,QAASlM,EAAQytgB,EAAY,IAElEztgB,GAEX6xgB,EAAa/7gB,UAAUk8gB,8BAAgC,SAAUG,EAAenygB,EAAQytgB,EAAYqE,EAAe5tG,GAC/G,IAAI1uV,GAAEosR,eAAeuwK,GAQrB,IALA,IAAItxL,EAAmBz9W,KAAKoqY,mBAAmB6kC,qBAC3C+/H,EAAkBhviB,KAAKoqY,mBAAmBgqC,yBAE1Cl0D,EAA4BlgX,KAAKoqY,mBAAmB+pC,8BACpDh0D,GAAmCD,GAA6BlgX,KAAKoqY,mBAAmBysC,oCACnFhva,EAAI,EAAGA,EAAIkniB,EAAc5qiB,OAAQ0D,IAAK,CAC3C,IAAI6sY,EAAUq6J,EAAclniB,GAExBoniB,EAAWv6J,EAAQ4C,cAGnB43J,EAA+BhvL,GAC/B+uL,GACsC,IAAtCv6J,EAAQ6C,mBAAmBpzY,OAC3BgriB,EAAqChvL,GACrC8uL,GACAv6J,EAAQm8D,WAC8B,IAAtCn8D,EAAQ6C,mBAAmBpzY,OAe/B,KAtBwBuqiB,IAAkBO,GADdxxL,GAAoBwxL,GAavBD,GAAmBt6J,EAAQvzO,YAD3ButY,IAAiBh6J,EAAQm8D,YAK7Cq+F,GACAC,IAEDnviB,KAAK8uiB,0BAA0Bp6J,EAAS93W,EAAQytgB,EAAYvpG,IAG5D4tG,IAAiBh6J,EAAQm8D,UAG7B,GAAIo+F,EAAU,CACV,IAAIG,EAAiBF,GAAgCC,GAGjDz6J,EAAQvzO,UAAYiuY,KAGpBpviB,KAAK4uiB,8BAA8Bl6J,EAAQozJ,kBAAmBlrgB,EAAQytgB,EAAYqE,EADzDU,EAAiBtuG,EAAUA,EAAU,GAG1D9gc,KAAKoqY,mBAAmB0sC,yBACxB92a,KAAK6uiB,uBAAuBn6J,GAC5B10Y,KAAK8uiB,0BAA0Bp6J,EAAQ5rW,QAASlM,EAAQytgB,EAAYvpG,UAI3E,GAAIpsD,EAAQ1iT,QAAU0iT,EAAQvzO,SAAU,CACzC,IAAI+8R,EAAal+b,KAAKqviB,iBAAiB36J,GACvC10Y,KAAK8uiB,0BAA0B5wG,EAAYtha,EAAQytgB,EAAYvpG,MAK3E2tG,EAAa/7gB,UAAUo8gB,0BAA4B,SAAUp6J,EAAS93W,EAAQytgB,EAAYvpG,GACtF,IAAIlqB,EAAyB52a,KAAKoqY,mBAAmBwsC,yBACrDh6Y,EAAOh5B,KAAK8wY,GACZA,EAAQmsD,WAAWjqB,EAAyB,EAAIkqB,IAEpD2tG,EAAa/7gB,UAAUm8gB,uBAAyB,SAAUS,GAGtD,IAAIl9b,GAAE8rR,OAAOoxK,EAAUxmgB,SAAvB,CAGA,IAAIymgB,EAAa,IAAI/xG,GACrBx9b,KAAKwR,QAAQ4oY,SAASm1J,GACtB/yhB,OAAOC,KAAK6yhB,GAAWj8hB,QAAQ,SAAUsJ,GACrC4yhB,EAAW5yhB,GAAO2yhB,EAAU3yhB,KAEhC4yhB,EAAW9qe,QAAS,EACpB8qe,EAAWnwG,OAAS,KACpBmwG,EAAWjwG,UAAY,KACnBltV,GAAE8rR,OAAOqxK,EAAWvphB,MACpBuphB,EAAWvphB,GAAK,kBAAoBuphB,EAAWvphB,IAKnDuphB,EAAWzmgB,QAAUwmgB,EACrBA,EAAUxmgB,QAAUymgB,IAExBd,EAAa/7gB,UAAU28gB,iBAAmB,SAAUG,GAChD,GAAIp9b,GAAE8rR,OAAOsxK,EAAWtxG,YACpB,OAAOsxG,EAAWtxG,WAEtB,IAAIA,EAAa,IAAIV,GAcrB,OAbAx9b,KAAKwR,QAAQ4oY,SAAS8jD,GACtBA,EAAW1oD,QAAS,EACpB0oD,EAAW/uY,YAAa,EAExB+uY,EAAWuxG,OAASvxG,EAAW1oD,OAC/B0oD,EAAWt3Z,OAAS4ogB,EAChBp9b,GAAE8rR,OAAOsxK,EAAWxphB,MACpBk4a,EAAWl4a,GAAK,UAAYwphB,EAAWxphB,IAE3Ck4a,EAAWpub,KAAO0/hB,EAAW1/hB,KAC7Boub,EAAWloW,MAAQw5c,EAAWx5c,MAAQ,EACtCw5c,EAAWtxG,WAAaA,EACxBsxG,EAAWE,YAAcF,EAAWtxG,WAC7BA,GAEXswG,GAAc,CACV7xJ,GAAU,uBACX8xJ,EAAa/7gB,UAAW,0BAAsB,GACjD87gB,GAAc,CACV7xJ,GAAU,wBACX8xJ,EAAa/7gB,UAAW,2BAAuB,GAClD87gB,GAAc,CACV7xJ,GAAU,iBACX8xJ,EAAa/7gB,UAAW,oBAAgB,GAC3C87gB,GAAc,CACV7xJ,GAAU,YACX8xJ,EAAa/7gB,UAAW,eAAW,GACtC87gB,GAAc,CACV7xJ,GAAU,qBACX8xJ,EAAa/7gB,UAAW,wBAAoB,GAChC87gB,GAAc,CACzBtzJ,GAAK,iBACNuzJ,GA1J2B,GA8J9BkB,GAAuD,SAAU9la,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D8la,GAA6B,WAC7B,SAASA,KAgOT,OA9NAA,EAAYl9gB,UAAU4yQ,KAAO,WACzBtlS,KAAK6viB,aAAe7viB,KAAKoqY,mBAAmB21C,mBAEhD6vH,EAAYl9gB,UAAU7W,KAAO,SAAUmyhB,EAAaC,EAAYvvL,EAAWwvL,EAAgBrwF,EAAauwF,GACpG,IAAI1sf,EAAQ1hD,KAqBZ69c,EAAYtB,6BApBG,SAAU7nE,GAMrB,GAJAhzV,EAAMouf,oCAAoCp7J,EAAQmvD,qBAAqB,GAInEoqG,EAAY,CACZ,IAAI8B,EAAiBrxL,EACjBh9T,EAAMsuf,YAAYt7J,EAASs5J,EAAaE,EAAgBrwF,EAAauwF,GACnE1sf,EAAMuuf,WAAWv7J,EAASs5J,GAChCt5J,EAAQozJ,kBAAoBiI,EAAetmiB,IAAI,SAAUooJ,GAAU,OAAOA,EAAO6iP,eAGjFA,EAAQozJ,kBAAoBpzJ,EAAQmvD,oBAAoBr6b,MAAM,GAElEk4C,EAAMwuf,mBAAmBx7J,GACrBhzV,EAAMmuf,cACNnuf,EAAMmuf,aAAan7J,EAAQozJ,qBAInC9niB,KAAKmwiB,oCAAoCtyF,IAE7C+xF,EAAYl9gB,UAAUu9gB,WAAa,SAAUv7J,EAASs5J,GAClD,IAAI+B,EAAiBr7J,EAAQmvD,oBACxBp6b,IAAIzJ,KAAKowiB,oBAAoB7lgB,KAAKvqC,OAEvC,OADA+viB,EAAel0hB,KAAK7b,KAAKqwiB,gBAAgB9lgB,KAAKvqC,KAAMguiB,IAC7C+B,GAEXH,EAAYl9gB,UAAU09gB,oBAAsB,SAAU17J,EAASx3N,GAC3D,MAAO,CAAEozX,WAAYpzX,EAAKw3N,QAASA,IAEvCk7J,EAAYl9gB,UAAUs9gB,YAAc,SAAUt7J,EAASs5J,EAAaE,EAAgBrwF,EAAauwF,GAK7F,IAAImC,EAAa77J,EAAQozJ,kBACpB3yhB,OAAO,SAAUu/X,GAKlB,IAAI87J,GAAyBtC,EAAex5J,EAAQ1uX,IAMhDyqhB,EAAyBrC,GAAkBvwF,EAAYZ,QAAQvoE,GACnE,OAAO87J,GAAyBC,IAE/BhniB,IAAIzJ,KAAKowiB,oBAAoB7lgB,KAAKvqC,OAEnC0wiB,EAAmB,GACvBH,EAAWl9hB,QAAQ,SAAUs9hB,GAAiB,OAAOD,EAAiBC,EAAcj8J,QAAQ1uX,IAAM2qhB,EAAcj8J,UAEhH,IAAIk8J,EAAel8J,EAAQmvD,oBAEtB1ub,OAAO,SAAUu/X,GAAW,OAAQg8J,EAAiBh8J,EAAQ1uX,MAC7Dvc,IAAIzJ,KAAKowiB,oBAAoB7lgB,KAAKvqC,OAIvC,OADA4wiB,EAAa/0hB,KAAK7b,KAAKqwiB,gBAAgB9lgB,KAAKvqC,KAAMguiB,IACtB,IAAxB4C,EAAazsiB,OACNosiB,EAEoB,IAAtBA,EAAWpsiB,OACTysiB,EAGA5wiB,KAAK6wiB,kBAAkB7C,EAAauC,EAAYK,IAI/DhB,EAAYl9gB,UAAUm+gB,kBAAoB,SAAU7C,EAAa5mK,EAAMr7C,GAKnE,IAJA,IAAIzzT,EAAM,GACNzwB,EAAI,EACJ0M,EAAI,EAED1M,EAAIu/X,EAAKjjY,QAAUoQ,EAAIw3U,EAAK5nV,QAAQ,CAMvC,IAAIyyb,EAAgB52b,KAAKqwiB,gBAAgBrC,EAAa5mK,EAAKv/X,GAAIkkV,EAAKx3U,IAEhE+jB,EAAI10B,KADJgzb,EAAgB,EACPxvD,EAAKv/X,KAGLkkV,EAAKx3U,MAItB,KAAO1M,EAAIu/X,EAAKjjY,QACZm0B,EAAI10B,KAAKwjY,EAAKv/X,MAGlB,KAAO0M,EAAIw3U,EAAK5nV,QACZm0B,EAAI10B,KAAKmoV,EAAKx3U,MAElB,OAAO+jB,GAEXs3gB,EAAYl9gB,UAAU29gB,gBAAkB,SAAUrC,EAAa8C,EAAaC,GAIxE,IAHA,IAAIr6J,EAAQo6J,EAAYp8J,QACpBiC,EAAQo6J,EAAYr8J,QAEf7sY,EAAI,EAAGyvC,EAAM02f,EAAY7piB,OAAQ0D,EAAIyvC,EAAKzvC,IAAK,CACpD,IAKIwU,EALA20hB,EAAahD,EAAYnmiB,GAEzBopiB,GAAsC,IAAzBD,EAAW1/B,SACxBr1f,EAASjc,KAAK87H,SAAS46Q,EAAOs6J,EAAWxriB,QACzC0W,EAASlc,KAAK87H,SAAS66Q,EAAOq6J,EAAWxriB,QAU7C,GAAyB,KANrB6W,EAFA20hB,EAAWxriB,OAAOuqY,YAAY/yV,WAEXg0f,EAAWxriB,OAAOuqY,YAAY/yV,WAAW/gC,EAAQC,EAAQw6X,EAAOC,EAAOs6J,GAIvE7+b,GAAEwsR,kBAAkB3iX,EAAQC,EAAQlc,KAAKoqY,mBAAmBqxC,mBAG/E,OAAOp/Z,EAAmB20hB,EAAW1/B,SAI7C,OAAOw/B,EAAYR,WAAaS,EAAYT,YAEhDV,EAAYl9gB,UAAUopG,SAAW,SAAU46Q,EAAOlxY,GAC9C,OAAOxF,KAAKohc,aAAatlU,SAASt2H,EAAQkxY,IAE9Ck5J,EAAYl9gB,UAAUw9gB,mBAAqB,SAAUx7J,GACjD,IAAItiS,GAAEgsR,QAAQsW,EAAQozJ,mBAItB,IADA,IAAIoJ,EAAax8J,EAAQozJ,kBAChBjgiB,EAAI,EAAGA,EAAIqpiB,EAAW/siB,OAAQ0D,IAAK,CACxC,IAAImyI,EAAQk3Z,EAAWrpiB,GAEnB86X,EAAY96X,IAAM6sY,EAAQozJ,kBAAkB3jiB,OAAS,EACzD61I,EAAMwlT,cAFiB,IAAN33b,GAGjBmyI,EAAM0lT,aAAa/8D,GACnB3oP,EAAM4lT,cAAc/3b,KAG5B+niB,EAAYl9gB,UAAUy9gB,oCAAsC,SAAUtyF,GAClE,IAAIn8Z,EAAQ1hD,KACZ,GAAKA,KAAKoqY,mBAAmBgqC,yBAA7B,CAIA,IAAInhZ,EAAW,SAAUyhX,GACrBhzV,EAAMouf,oCAAoCp7J,EAAQozJ,mBAAmB,GACrEpzJ,EAAQozJ,kBAAkBz0hB,QAAQ,SAAU2mI,GACpCA,EAAMs9P,eACNrkX,EAAS+mH,MAIrB6jU,EAAYpB,oBAAoB,SAAU/nE,GAAW,OAAOzhX,EAASyhX,OAEzEk7J,EAAYl9gB,UAAUo9gB,oCAAsC,SAAUt5J,EAAU26J,GAC5E,IAAIzvf,EAAQ1hD,KACRoyG,GAAEgsR,QAAQoY,IAGTx2Y,KAAKoqY,mBAAmBgqC,0BAG7B59B,EAASnjY,QAAQ,SAAU+9hB,GACA1vf,EAAM6hY,iBAAiB9Z,yBAC7Bp2Z,QAAQ,SAAUg+hB,GAC/B,IAAIljM,EAAekjM,EAAgBthK,YAAY5hC,aAC/C,GAA4B,iBAAjBA,EAAX,CAIA,IACI81F,EAAiBviZ,EAAM6hY,iBAAiBtrB,iBADnB9pD,GAGzB,GADyB81F,IAAmBmtG,EAAantG,eAIzD,GAAIktG,EAEAC,EAAa9vG,cAAc+vG,EAAgBpwJ,QAAS,UAEnD,CAED,IAAIqwJ,EAAoBF,EAAaptG,0BAA0BC,GAC3DqtG,GACAF,EAAa9vG,cAAc+vG,EAAgBpwJ,QAASqwJ,EAAkB30hB,WAjB1EouB,QAAQ/V,MAAM,0GAuB9B26gB,GAAc,CACVhzJ,GAAU,mBACXizJ,EAAYl9gB,UAAW,sBAAkB,GAC5Ci9gB,GAAc,CACVhzJ,GAAU,qBACXizJ,EAAYl9gB,UAAW,wBAAoB,GAC9Ci9gB,GAAc,CACVhzJ,GAAU,iBACXizJ,EAAYl9gB,UAAW,oBAAgB,GAC1Ci9gB,GAAc,CACVhzJ,GAAU,uBACXizJ,EAAYl9gB,UAAW,0BAAsB,GAChDi9gB,GAAc,CACVrzJ,IACDszJ,EAAYl9gB,UAAW,OAAQ,MACpBi9gB,GAAc,CACxBz0J,GAAK,gBACN00J,GAhO0B,GAoO7B2B,GAAuD,SAAU1na,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D0na,GAA+B,WAC/B,SAASA,KAgHT,OA9GAA,EAAc9+gB,UAAUk7Z,cAAgB,WACpC5tb,KAAKs3gB,cAAgBt3gB,KAAKoqY,mBAAmBuX,cAEjD6vJ,EAAc9+gB,UAAUvd,OAAS,SAAU0oc,GACvC,IAAIp+D,EAAez/Y,KAAK4xc,cAAcm3C,qBACtC/of,KAAKyxiB,YAAYhyJ,EAAco+D,IAEnC2zF,EAAc9+gB,UAAU++gB,YAAc,SAAUhyJ,EAAco+D,GAC1D,IAAIn8Z,EAAQ1hD,KACR46Z,EAAiB,SAAUlmB,EAASg9J,GAEhCh9J,EAAQ4C,eAGJ5C,EAAQmvD,oBADRpkD,IAAiBiyJ,EACah9J,EAAQ6C,mBAAmBpiY,OAAO,SAAUkya,GAGtE,IAAIsqH,EAAsBtqH,EAAUwc,qBAAuBxc,EAAUwc,oBAAoB1/b,OAAS,EAG9FytiB,EAAwBvqH,EAAUv3a,MAAQ4xC,EAAMkwZ,cAAc23C,kBAAkBliE,GAEpF,OAAOsqH,GAAuBC,IAKJl9J,EAAQ6C,mBAE1C71V,EAAM2+Y,oBAAoB3rD,KAG1BA,EAAQmvD,oBAAsBnvD,EAAQ6C,mBACtC7C,EAAQ2rD,oBAAoB,QAGpC,GAAIrgc,KAAK6xiB,yBAA0B,CAC/B,IAAIC,EAA6B,SAAUp9J,EAASq9J,GAGhD,GAAIr9J,EAAQ6C,mBACR,IAAK,IAAI1vY,EAAI,EAAGA,EAAI6sY,EAAQ6C,mBAAmBpzY,OAAQ0D,IAAK,CACxD,IAAIw/a,EAAY3yC,EAAQ6C,mBAAmB1vY,GAEvCmqiB,EAAgBD,GAAwBrwf,EAAMkwZ,cAAc23C,kBAAkBliE,GAC9EA,EAAU9vC,mBACVu6J,EAA2Bp9J,EAAQ6C,mBAAmB1vY,GAAImqiB,GAG1Dp3I,EAAeysB,EAAW2qH,GAItCp3I,EAAelmB,EAASq9J,IAG5Bl0F,EAAYpB,oBADiB,SAAU/nE,GAAW,OAAOo9J,EAA2Bp9J,GAAS,UAK7FmpE,EAAYtB,6BADgB,SAAU7nE,GAAW,OAAOkmB,EAAelmB,GAAS,KAChB,IAGxE88J,EAAc9+gB,UAAUu/gB,4BAA8B,SAAUv9J,GAE5D,IAAI4rD,EAAmB,EACvB5rD,EAAQmvD,oBAAoBxwb,QAAQ,SAAU2mI,GAE1CsmT,IAEAA,GAAoBtmT,EAAMsmT,mBAE9B5rD,EAAQ2rD,oBAAoBC,IAEhCkxG,EAAc9+gB,UAAUw/gB,gCAAkC,SAAUx9J,GAEhE,IAAI4rD,EAAmB,EACvB5rD,EAAQmvD,oBAAoBxwb,QAAQ,SAAU2mI,GACtCA,EAAMa,MACNylT,GAAoBtmT,EAAMsmT,iBAG1BA,MAGR5rD,EAAQ2rD,oBAAoBC,IAEhCkxG,EAAc9+gB,UAAU2ta,oBAAsB,SAAU3rD,GAChD10Y,KAAKs3gB,cACLt3gB,KAAKiyiB,4BAA4Bv9J,GAGjC10Y,KAAKkyiB,gCAAgCx9J,IAG7C88J,EAAc9+gB,UAAUm/gB,uBAAyB,WAC7C,OAAO7xiB,KAAKoqY,mBAAmBuX,eAAiB3hZ,KAAKoqY,mBAAmBytC,0CAE5E05H,GAAc,CACV50J,GAAU,kBACX60J,EAAc9+gB,UAAW,qBAAiB,GAC7C6+gB,GAAc,CACV50J,GAAU,uBACX60J,EAAc9+gB,UAAW,0BAAsB,GAClD6+gB,GAAc,CACVj1J,IACDk1J,EAAc9+gB,UAAW,gBAAiB,MAC7B6+gB,GAAc,CAC1Br2J,GAAK,kBACNs2J,GAhH4B,GAoH/BW,GAAuD,SAAUtoa,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dsoa,GAAkC,WAClC,SAASA,KAwET,OAtEAA,EAAiB1/gB,UAAUk7Z,cAAgB,WACnC5tb,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,6BACtC7yY,KAAK++c,mBAAqB/+c,KAAKwub,WAIvC4jH,EAAiB1/gB,UAAUkqe,4BAA8B,SAAU9sf,GAC/D,GAAIsiG,GAAEgsR,QAAQp+X,KAAK++c,oBACfh0a,QAAQ/V,MAAM,oEADlB,CAIA,IAAIgqZ,EAAmBh/a,KAAKoqY,mBAAmB40C,mBAC/C,GAAKA,IAAoB5sU,GAAEgsR,QAAQ4gD,GAAnC,CAKA,IAAIqzH,EAAc,CACd7miB,OAAQ,GACRgvE,OAAQ,GACR33E,IAAK,IAELyviB,EAAmBtyiB,KAAK++c,mBAAmBkpF,oBAE3CsK,EADoBvyiB,KAAKoqY,mBAAmB8rC,kCACb,KAAO,GAgC1C,OA/BI9jU,GAAE8rR,OAAOpuX,IAKTA,EAAKuD,QAAQ,SAAUqlhB,EAAU/uhB,GAC7B,IAAIqc,EAAKg5Z,EAAiB05G,GACtB8Z,EAAeF,EAAiBtshB,GAChCushB,IACAA,EAASvshB,GAAMrc,GAEf6oiB,GACqBA,EAAa1iiB,OAAS4ohB,GAEvC2Z,EAAY73d,OAAO52E,KAAK80hB,GAI5B4Z,EAAiBtshB,QAAMvhB,GAGvB4tiB,EAAYxviB,IAAIe,KAAK80hB,KAKjCtmb,GAAEi4Q,cAAcioL,EAAkB,SAAUtshB,EAAI0uX,GACxCA,GACA29J,EAAY7miB,OAAO5H,KAAK8wY,EAAQ5kY,QAGjC,CAACuiiB,EAAaE,GA3CjBxngB,QAAQ/V,MAAM,2GA6CtBm9gB,GAAc,CACVx1J,GAAU,aACXy1J,EAAiB1/gB,UAAW,gBAAY,GAC3Cy/gB,GAAc,CACVx1J,GAAU,uBACXy1J,EAAiB1/gB,UAAW,0BAAsB,GACrDy/gB,GAAc,CACV71J,IACD81J,EAAiB1/gB,UAAW,gBAAiB,MAC7By/gB,GAAc,CAC7Bj3J,GAAK,qBACNk3J,GAxE+B,GA4ElChV,GAA2B,CAC3Bv+I,WAAYxhX,EAAQ6/W,YAAYkgJ,yBAChCt2E,MAAO,CAAC6mF,GAAaI,GAAWU,GAAcmB,GAAa4B,GAAeY,IAC1EpV,UAAW,CAAEyV,WAAYhJ,KAGzBiJ,IACItpa,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFmpa,GAAuD,SAAU9oa,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5D8oa,GAA+B,SAAUp6d,GAEzC,SAASo6d,EAAc95N,EAAYhvP,GAC/B,IAAIpoC,EAAQ82B,EAAOtjD,KAAKl1B,KAAM84U,EAAYhvP,IAAW9pF,KAErD,OADA0hD,EAAMwhf,YAAcp5c,EACbpoC,EAkFX,OAtFAgxf,GAAaE,EAAep6d,GAM5Bo6d,EAAclghB,UAAU4xgB,qBAAuB,WAC3C,OAAOtkiB,KAAK6giB,iBAAmB7giB,KAAKkjiB,YAAYrD,WAKpD+S,EAAclghB,UAAU6xgB,mBAAqB,WACzC,OAAOvkiB,KAAKskiB,uBAAyBtkiB,KAAKkjiB,YAAYrD,WAE1D+S,EAAclghB,UAAU0ugB,mBAAqB,SAAU/2hB,GACnD,IAAIqqY,EAAUl8T,EAAO9lD,UAAU0ugB,mBAAmBlsgB,KAAKl1B,KAAMqK,GAG7D,OAFAqqY,EAAQosD,QAAU,EAClB9gc,KAAK6yiB,wBAAwBn+J,EAASrqY,GAC/BqqY,GAEXk+J,EAAclghB,UAAUgsa,aAAe,SAAUhqD,EAAS5kY,EAAMnG,GACxDyoG,GAAE8rR,OAAOpuX,GAKT4kY,EAAQgqD,aAAa5ub,EAAMnG,EAAMsoB,YAGjCyiX,EAAQgqD,kBAAaj6b,OAAWA,IAGxCmuiB,EAAclghB,UAAUsugB,WAAa,SAAU32hB,EAAUqqY,GACrDl8T,EAAO9lD,UAAUsugB,WAAW9rgB,KAAKl1B,KAAMqK,EAAUqqY,GACjD10Y,KAAK6yiB,wBAAwBn+J,EAASrqY,IAE1CuoiB,EAAclghB,UAAU4yQ,KAAO,WAC3B9sN,EAAO9lD,UAAU4yQ,KAAKpwQ,KAAKl1B,KAAM,CAC7BwR,QAASxR,KAAKqkJ,aACd8yU,YAAan3d,KAAKm3d,eAG1By7E,EAAclghB,UAAUkwgB,gBAAkB,WACtC,OAAO,MAEXgQ,EAAclghB,UAAU0sb,OAAS,SAAU2jC,GACvC,OAAO/if,KAAKggiB,sBAAsBj9C,IAEtC6vD,EAAclghB,UAAUmghB,wBAA0B,SAAUn+J,EAASrqY,GACjEqqY,EAAQisD,YAAYt2b,GACpBqqY,EAAQ0qD,OAASp/b,KAAKkjiB,YAAY5sL,UAAYjsW,GAElDuoiB,EAAclghB,UAAU6ugB,mBAAqB,WACzC,IAAI7/e,EAAQ1hD,KAKR8pF,EAAS,CACTgvY,SAAU94d,KAAK2giB,cACf3nE,OAAQh5d,KAAK4giB,YACb31c,gBAAiBjrF,KAAK6hiB,WAAWt3f,KAAKvqC,KAAMA,KAAKqgiB,cACjDyS,aAAc9yiB,KAAKwhiB,eAAej3f,KAAKvqC,MACvCstf,UAAWttf,KAAKkjiB,YAAY51C,UAC5B92D,YAAax2b,KAAKkjiB,YAAY1sG,YAC9Bhlb,QAASxR,KAAKoqY,mBAAmB/lP,cAEjCjyC,GAAEgsR,QAAQp+X,KAAKkjiB,YAAY/uL,WAAW4+L,SACtChogB,QAAQ24B,KAAK,iDAIjBv4C,OAAOyZ,WAAW,WACd8c,EAAMwhf,YAAY/uL,WAAW4+L,QAAQjpd,IACtC,IAEP6od,GAAc,CACVh2J,GAAU,uBACXi2J,EAAclghB,UAAW,0BAAsB,GAClDighB,GAAc,CACVh2J,GAAU,gBACXi2J,EAAclghB,UAAW,mBAAe,GAC3CighB,GAAc,CACVr2J,IACDs2J,EAAclghB,UAAW,OAAQ,MAC7BkghB,EAvFwB,CAwFjCnT,IAEEuT,IACI5pa,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFypa,GAAuD,SAAUppa,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAK5Dopa,GAA+B,SAAU16d,GAEzC,SAAS06d,EAAcppd,GACnB,OAAOtR,EAAOtjD,KAAKl1B,KAAM8pF,IAAW9pF,KA2GxC,OA7GAgziB,GAAaE,EAAe16d,GAI5B06d,EAAcxghB,UAAUirX,SAAW,SAAUC,GACzC59Y,KAAK+4Y,OAAS6E,EAAct4Y,OAAO,kBAEvC4tiB,EAAcxghB,UAAUyghB,cAAgB,SAAUxtgB,EAAOytgB,EAAeC,GAKpE,IAJA,IAAIv6E,EAAWnzb,EAAMg7f,cAEjB2S,EAAuBF,EAAgBC,EAElCE,EAHI5tgB,EAAMi7f,YAGiB,EAAG2S,GAAmBz6E,EAAUy6E,IAEhE,KAAIA,EAAkBD,GAAtB,CAGA,IACIE,EAAmBxziB,KAAKo/c,OADJm0F,EAAkBF,GACY,GAClDG,EACA7tgB,EAAMq7f,WAAWuS,EAAiBC,IAGlC7tgB,EAAMs7f,gBAAgBsS,GACtB5tgB,EAAMm7f,cAIlBoS,EAAcxghB,UAAU+ghB,YAAc,SAAU9tgB,EAAO+tgB,EAAex7hB,GAKlE,IAJA,IAAIy7hB,EAAehugB,EAAMg7f,cACrBiT,EAAajugB,EAAMi7f,YACnBiT,EAAc,GAETlqiB,EAAQ,EAAGA,EAAQuO,EAAM/T,OAAQwF,IAAS,CAC/C,IAAIU,EAAWqpiB,EAAgB/piB,EAE/B,GAD2BU,GAAYspiB,GAAgBtpiB,EAAWupiB,EACxC,CACtB,IACIzS,EAAax7f,EAAM07f,WAAWh3hB,EADnB6N,EAAMvO,IAErBkqiB,EAAYjwiB,KAAKu9hB,IAGzB,OAAO0S,GAEXX,EAAcxghB,UAAUsxe,mBAAqB,SAAU0vC,EAAex7hB,GAElE,IAAIwpC,EAAQ1hD,KACR8ziB,EAAW,GACf9ziB,KAAKkliB,2BAA2B,SAAUv/f,GACrBA,EAAMi7f,aAEL8S,IAGlBhyf,EAAMyxf,cAAcxtgB,EAAO+tgB,EAAex7hB,EAAM/T,QACzBu9C,EAAM+xf,YAAY9tgB,EAAO+tgB,EAAex7hB,GAC9C7E,QAAQ,SAAUqhY,GAAW,OAAOo/J,EAASlwiB,KAAK8wY,QAEnE10Y,KAAKglgB,iBACLhlgB,KAAKwjiB,wBAAwBxjiB,KAAK8kgB,qBAAuB5sf,EAAM/T,QAEnEnE,KAAK4kiB,iBAML5kiB,KAAK0/Y,aAAajnD,cALN,CACR/3V,KAAMquZ,GAAOkB,uBACbhmC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,aAOxBgpL,EAAcxghB,UAAU0sb,OAAS,SAAU/0c,EAAU0piB,QAC1B,IAAnBA,IAA6BA,GAAiB,GAClD,IAAI1O,EAAU9mhB,KAAKs7B,MAAMxvC,EAAWrK,KAAKkjiB,YAAYrD,WACjDl6f,EAAQ3lC,KAAKoliB,SAASC,GAC1B,IAAK1/f,EAAO,CACR,GAAIougB,EACA,OAAO,KAGPpugB,EAAQ3lC,KAAKg0iB,YAAY3O,GAGjC,OAAO1/f,EAAMy5a,OAAO/0c,IAExB6oiB,EAAcxghB,UAAUshhB,YAAc,SAAUtU,GAC5C,IAAI+E,EAAW,IAAImO,GAAclT,EAAa1/hB,KAAKkjiB,aAGnD,OAFAljiB,KAAKqkJ,aAAa+1P,SAASqqJ,GAC3BzkiB,KAAKwkiB,gBAAgBC,GACdA,GAMXyO,EAAcxghB,UAAU6xe,aAAe,WACnCvkgB,KAAKsjiB,oBAAoB,SAAU39f,GAAS,OAAOA,EAAMm7f,aACzD9giB,KAAKwiiB,oBAETyQ,GAAc,CACVt2J,GAAU,cACXu2J,EAAcxghB,UAAW,iBAAa,GACzCughB,GAAc,CACVt2J,GAAU,YACXu2J,EAAcxghB,UAAW,eAAW,GACvCughB,GAAc,EACA,EA/GwD9oa,EA+GrD8yQ,GAAU,iBA9GpB,SAAUzwX,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EA8GpC,MACXu2hB,EAAcxghB,UAAW,WAAY,MACjCwghB,EAjHyC,IAAsB/oa,EAGvC,CA+GjC84Z,IAEEgR,IACI7qa,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnF0qa,GAAuD,SAAUrqa,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dqqa,GAAkC,SAAU37d,GAE5C,SAAS27d,IACL,OAAkB,OAAX37d,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KAuU/D,OAzUAi0iB,GAAaE,EAAkB37d,GAI/B27d,EAAiBzhhB,UAAUwmf,aAAe,SAAUvvgB,GAChD,MAAO,CACH2sW,UAAWt2W,KAAKs2W,UAChB8oF,OAAQp/b,KAAKs2W,UAAY3sW,IAIjCwqiB,EAAiBzhhB,UAAUo/c,sBAAwB,SAAU0mC,EAAYC,EAAUC,EAAiBC,GAChG,OAAO,GAEXw7B,EAAiBzhhB,UAAU4yQ,KAAO,WAC9B,IAAI5jP,EAAQ1hD,KACPA,KAAKoqY,mBAAmBwrC,uBAG7B51a,KAAKs2W,UAAYt2W,KAAKoqY,mBAAmBg3C,uBACzCphb,KAAK2wf,oBACL3wf,KAAK2mb,eAAe,WAAc,OAAOjlY,EAAM0yf,mBAEnDD,EAAiBzhhB,UAAUvpB,MAAQ,WAC/BnJ,KAAKylb,cAAczlb,KAAKoqY,mBAAmBkxC,kBAE/C64H,EAAiBzhhB,UAAU2hhB,kBAAoB,WACvCr0iB,KAAKm0W,aACDn0W,KAAKm0W,WAAWjzV,SAChBlhB,KAAKm0W,WAAWjzV,UAEpBlhB,KAAKm3d,YAAYkU,oBACjBrre,KAAKm0W,WAAa,OAG1BggM,EAAiBzhhB,UAAUymf,eAAiB,WACxC,QAAOn5gB,KAAKs0iB,eAAgBt0iB,KAAKs0iB,cAActvC,iBAEnDmvC,EAAiBzhhB,UAAUi+d,kBAAoB,WAC3C3wf,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOjK,qBAAsB9kZ,KAAKytb,gBAAgBljZ,KAAKvqC,OAC3GA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOxL,mBAAoBvjZ,KAAKi8b,cAAc1xZ,KAAKvqC,OACvGA,KAAKymb,4BAA4Bzmb,KAAK0/Y,aAAcqP,GAAOC,gCAAiChvZ,KAAKu0iB,mBAAmBhqgB,KAAKvqC,QAE7Hm0iB,EAAiBzhhB,UAAU+6Z,gBAAkB,WACzCztb,KAAKg9H,SAETm3a,EAAiBzhhB,UAAUupa,cAAgB,WACvCj8b,KAAKg9H,SAETm3a,EAAiBzhhB,UAAU6hhB,mBAAqB,aAKxCv0iB,KAAKkjiB,aACWljiB,KAAKw0iB,yBAOrBx0iB,KAAKg9H,SAGbm3a,EAAiBzhhB,UAAU8hhB,qBAAuB,WAC9C,OAAQpic,GAAEssR,WAAW1+X,KAAKkjiB,YAAY51C,UAAWttf,KAAKq7b,eAAekyD,iBAEzE4mD,EAAiBzhhB,UAAUuiK,QAAU,WACjC,OAAOq7M,GAAUqC,yBAErBwhK,EAAiBzhhB,UAAU+yZ,cAAgB,SAAUtxE,GACjDn0W,KAAKq0iB,oBACLr0iB,KAAKm0W,WAAaA,EAEdA,IACAn0W,KAAKwza,qBACLxza,KAAKg9H,UAGbm3a,EAAiBzhhB,UAAU8gZ,mBAAqB,WAC5C,IAAIihI,EAAKz0iB,KAAKm0W,WAEV/hQ,GAAE8rR,OAAOu2K,EAAGzS,wBACZj3f,QAAQ/V,MAAM,sHAEdo9E,GAAE8rR,OAAOu2K,EAAGzyH,kBACZj3Y,QAAQ/V,MAAM,0GAEdo9E,GAAE8rR,OAAOu2K,EAAG3P,eACZ/5f,QAAQ/V,MAAM,oGAEdo9E,GAAE8rR,OAAOu2K,EAAG5U,YACZ90f,QAAQ/V,MAAM,qGAGtBm/gB,EAAiBzhhB,UAAU0N,QAAU,WACjC,OAAOgyE,GAAEgsR,QAAQp+X,KAAKs0iB,gBAE1BH,EAAiBzhhB,UAAU89c,eAAiB,WACxC,OAAOp+X,GAAE8rR,OAAOl+X,KAAKs0iB,gBAEzBH,EAAiBzhhB,UAAUgxa,4BAA8B,SAAUs1E,EAAcC,GAC7E,OAAOj5gB,KAAKs0iB,cAAgBt0iB,KAAKs0iB,cAAc7O,mBAAmBzsB,EAAcC,GAAe,IAEnGk7B,EAAiBzhhB,UAAUsqG,MAAQ,WAG/B,IAAI5qB,GAAEgsR,QAAQp+X,KAAKm0W,YAAnB,CAMwB/hQ,GAAE8rR,OAAOl+X,KAAKoqY,mBAAmB40C,qBAErDh/a,KAAK4+b,oBAAoB5hU,QAE7Bh9H,KAAK00iB,aACL,IAAIpshB,EAAQtoB,KAAK20iB,0BACjB30iB,KAAK0/Y,aAAajnD,cAAcnwU,KAEpC6rhB,EAAiBzhhB,UAAUiihB,wBAA0B,WACjD,MAAO,CACHj0iB,KAAMquZ,GAAO0B,oBACbxmC,IAAKjqX,KAAKmjZ,QACVj5B,UAAWlqX,KAAKkqX,UAGhB0hH,SAAS,EACT1lO,SAAS,EACTylO,kBAAkB,EAClBx8P,SAAS,IAGjBglU,EAAiBzhhB,UAAUgihB,WAAa,WAEpC10iB,KAAKo0iB,eACL,IAAIpS,EAAwBhiiB,KAAKoqY,mBAAmBgwC,qCAChDpiE,EAA0Bh4W,KAAKoqY,mBAAmB8uC,6BAGtDl5a,KAAKyjiB,mBAAqB,IAAI1B,GAAmBC,EAAuBhqL,GACxEh4W,KAAKqkJ,aAAa+1P,SAASp6Y,KAAKyjiB,oBAChCzjiB,KAAKkjiB,YAAc,CAEf/uL,WAAYn0W,KAAKm0W,WAEjBqiF,YAAax2b,KAAK4xc,cAAc62C,iBAChC6E,UAAWttf,KAAKq7b,eAAekyD,eAC/Bk2C,mBAAoBzjiB,KAAKyjiB,mBAIzBzB,sBAAuBA,EACvB8C,aAAc9kiB,KAAKoqY,mBAAmBkwC,uBACtC+oH,gBAAiBrjiB,KAAKoqY,mBAAmBswC,6BACzCrjE,iBAAkBr3W,KAAKoqY,mBAAmBiwC,sBAC1CwlH,UAAW7/hB,KAAKoqY,mBAAmBqwC,oBACnCnkE,UAAWt2W,KAAKoqY,mBAAmBg3C,uBAGnCq/G,qBAAsB,IAAI/oJ,IAGzB13Y,KAAKkjiB,YAAYlB,uBAA2BhiiB,KAAKkjiB,YAAYlB,uBAAyB,IACvFhiiB,KAAKkjiB,YAAYlB,sBAAwB,GAIxChiiB,KAAKkjiB,YAAYrD,WAAe7/hB,KAAKkjiB,YAAYrD,WAAa,IAC/D7/hB,KAAKkjiB,YAAYrD,UAAY,KAG3B7/hB,KAAKkjiB,YAAYG,iBAAmB,IACtCrjiB,KAAKkjiB,YAAYG,gBAAkB,GAIjCrjiB,KAAKkjiB,YAAY4B,cAAgB,IACnC9kiB,KAAKkjiB,YAAY4B,aAAe,GAEpC9kiB,KAAKs0iB,cAAgB,IAAIpB,GAAclziB,KAAKkjiB,aAC5CljiB,KAAKqkJ,aAAa+1P,SAASp6Y,KAAKs0iB,eAChCt0iB,KAAKs0iB,cAAchphB,iBAAiB23gB,GAAasC,oBAAqBvliB,KAAK4kiB,eAAer6f,KAAKvqC,QAEnGm0iB,EAAiBzhhB,UAAU0hhB,aAAe,WAClCp0iB,KAAKs0iB,gBACLt0iB,KAAKs0iB,cAAcpzhB,UACnBlhB,KAAKs0iB,cAAgB,MAErBt0iB,KAAKyjiB,qBACLzjiB,KAAKyjiB,mBAAmBvihB,UACxBlhB,KAAKyjiB,mBAAqB,OAGlC0Q,EAAiBzhhB,UAAUkygB,eAAiB,WACxC,IAAIt8gB,EAAQtoB,KAAK20iB,0BACjB30iB,KAAK0/Y,aAAajnD,cAAcnwU,IAEpC6rhB,EAAiBzhhB,UAAU0sb,OAAS,SAAU/0c,GAC1C,OAAOrK,KAAKs0iB,cAAgBt0iB,KAAKs0iB,cAAcl1F,OAAO/0c,GAAY,MAEtE8piB,EAAiBzhhB,UAAUo2c,WAAa,SAAU9id,GAC9C,IAAI4W,EAAS,KAMb,OALA58B,KAAKg/c,YAAY,SAAUtqE,GACnBA,EAAQ1uX,KAAOA,IACf4W,EAAS83W,KAGV93W,GAEXu3gB,EAAiBzhhB,UAAUssb,YAAc,SAAU/rb,GAC3CjzB,KAAKs0iB,eACLt0iB,KAAKs0iB,cAAcnU,gBAAgBltgB,EAAU,IAAIykX,KAGzDy8J,EAAiBzhhB,UAAUs7c,qBAAuB,WAC9C,OAAOhue,KAAKw0f,cAAgBx0f,KAAKs2W,WAErC69L,EAAiBzhhB,UAAUgnf,oBAAsB,WAC7C,OAAO15gB,KAAKw0f,eAEhB2/C,EAAiBzhhB,UAAUmnf,6BAA+B,SAAU+wB,GAChE,OAAOA,GAEXuJ,EAAiBzhhB,UAAUy+c,mBAAqB,SAAUhyC,GACtD,GAAuB,IAAnBn/b,KAAKs2W,UAAiB,CACtB,IAAIs+L,EAAmBr2hB,KAAKs7B,MAAMslZ,EAAQn/b,KAAKs2W,WAC3C86H,EAAepxe,KAAKw0f,cAAgB,EACxC,OAAIogD,EAAmBxjE,EACZA,EAGAwjE,EAIX,OAAO,GAGfT,EAAiBzhhB,UAAU8he,YAAc,WACrC,OAAOx0f,KAAKs0iB,cAAgBt0iB,KAAKs0iB,cAAcxvC,qBAAuB,GAE1EqvC,EAAiBzhhB,UAAUi8d,cAAgB,SAAU0jD,GAC7Cjgc,GAAE8rR,OAAOm0K,EAAY7miB,SAAW4mG,GAAE8rR,OAAOm0K,EAAY73d,QACrDzvC,QAAQ24B,KAAK,2FAGb0uC,GAAEgsR,QAAQi0K,EAAY5jD,UACtB1jd,QAAQ24B,KAAK,mFAGb1jE,KAAKs0iB,eACLt0iB,KAAKs0iB,cAActwC,mBAAmBquC,EAAY5jD,SAAU4jD,EAAYxviB,MAGhFsxiB,EAAiBzhhB,UAAU0/c,aAAe,SAAU19F,GAChD,OAAO,GAEXy/J,EAAiBzhhB,UAAU6xe,aAAe,WAClCvkgB,KAAKs0iB,eACLt0iB,KAAKs0iB,cAAc/vC,gBAG3B4vC,EAAiBzhhB,UAAUiye,WAAa,WAChC3kgB,KAAKs0iB,eACLt0iB,KAAKs0iB,cAAc3vC,cAG3BwvC,EAAiBzhhB,UAAUoye,mBAAqB,WAC5C,OAAI9kgB,KAAKs0iB,cACEt0iB,KAAKs0iB,cAAcxvC,qBAGnB,MAGfqvC,EAAiBzhhB,UAAUsye,cAAgB,WACvC,GAAIhlgB,KAAKs0iB,cACL,OAAOt0iB,KAAKs0iB,cAActvC,iBAGlCmvC,EAAiBzhhB,UAAUuye,mBAAqB,SAAUhf,EAAUif,GAC5DllgB,KAAKs0iB,eACLt0iB,KAAKs0iB,cAAcrvC,mBAAmBhf,EAAUif,IAGxDivC,EAAiBzhhB,UAAU6ye,cAAgB,WACvC,OAAIvlgB,KAAKyjiB,mBACEzjiB,KAAKyjiB,mBAAmBl+B,gBAGxB,MAGf2uC,GAAc,CACVv3J,GAAU,uBACXw3J,EAAiBzhhB,UAAW,0BAAsB,GACrDwhhB,GAAc,CACVv3J,GAAU,kBACXw3J,EAAiBzhhB,UAAW,qBAAiB,GAChDwhhB,GAAc,CACVv3J,GAAU,mBACXw3J,EAAiBzhhB,UAAW,sBAAkB,GACjDwhhB,GAAc,CACVv3J,GAAU,wBACXw3J,EAAiBzhhB,UAAW,2BAAuB,GACtDwhhB,GAAc,CACVv3J,GAAU,iBACXw3J,EAAiBzhhB,UAAW,oBAAgB,GAC/CwhhB,GAAc,CACVv3J,GAAU,YACXw3J,EAAiBzhhB,UAAW,eAAW,GAC1CwhhB,GAAc,CACVv3J,GAAU,cACXw3J,EAAiBzhhB,UAAW,iBAAa,GAC5CwhhB,GAAc,CACVv3J,GAAU,gBACXw3J,EAAiBzhhB,UAAW,mBAAe,GAC9CwhhB,GAAc,CACV53J,IACD63J,EAAiBzhhB,UAAW,OAAQ,MACvCwhhB,GAAc,CACV13J,IACD23J,EAAiBzhhB,UAAW,oBAAqB,MACjCwhhB,GAAc,CAC7Bh5J,GAAK,aACNi5J,GAzU+B,CA2UpC/tH,IAEE62G,GAAyB,CACzBp+I,WAAYxhX,EAAQ6/W,YAAY+/I,uBAChCD,UAAW,CAAE,SAAYmX,KAGzBU,GAAuD,SAAUhra,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAE5Dgra,GAA4C,WAC5C,SAASA,EAA2B18gB,GAChC,IAAgDgpa,EAAehpa,EAAOgpa,aAAch3D,EAAqBhyW,EAAOgyW,mBAAoB2qK,EAAsB38gB,EAAO28gB,oBAAqBC,EAAwB58gB,EAAO48gB,sBAAuBC,EAA6B78gB,EAAO68gB,2BAA4BC,EAA0B98gB,EAAO88gB,wBAC7Ul1iB,KAAKujb,iBADkBnrZ,EAAOmrZ,iBAE9Bvjb,KAAKohc,aAAeA,EACpBphc,KAAKoqY,mBAAqBA,EAC1BpqY,KAAK+0iB,oBAAsBA,EAC3B/0iB,KAAKg1iB,sBAAwBA,EAC7Bh1iB,KAAKi1iB,2BAA6BA,EAClCj1iB,KAAKk1iB,wBAA0BA,EA0EnC,OAxEAJ,EAA2BpihB,UAAUyihB,QAAU,SAAUC,GACrDp1iB,KAAKq1iB,iBAAmBjjc,GAAE/sG,KAAK+viB,EAAiB,SAAUn0c,GAAO,QAASA,EAAI8uS,YAAY5hC,gBAE9F2mM,EAA2BpihB,UAAU4ihB,mBAAqB,SAAU9viB,GAChE,IAAIjE,EAAQvB,KAAK4ma,cAAc5ma,KAAKg1iB,sBAAuBxviB,GAC3D,OAAgB,MAATjE,EAAgBA,EAAQ,IAEnCuziB,EAA2BpihB,UAAU6ihB,oBAAsB,SAAU/viB,EAAQmE,EAAOjJ,EAAMgjJ,GAEtF,IAQI8xZ,EAEAA,EARJ9xZ,GAAQA,EAAK7I,QAGTr1I,IAAWxF,KAAKq1iB,kBAEE,IAAV1riB,GAAe3J,KAAKoqY,mBAAmBykC,oBAAoB7ua,KAAKujb,iBAAiB5tB,gBAG1E31Z,KAAKy1iB,wBAAwB/xZ,GAG7B1jJ,KAAKohc,aAAatlU,SAASt2H,EAAQk+I,GAEtD,IAAIniJ,EAAQvB,KAAK01iB,YAAYhyZ,EAAMl+I,EAAQgwiB,EAAcx1iB,KAAK+0iB,oBAAqBr0iB,GACnF,OAAgB,MAATa,EAAgBA,EAAQ,IAEnCuziB,EAA2BpihB,UAAUk0Y,cAAgB,SAAU3zY,EAAUztB,GACrE,OAAIytB,EACOA,EAAS,CACZztB,OAAQA,EACRykX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,eAI9BrkJ,KAAKujb,iBAAiB7c,wBAAwBlha,EAAQ,OAAO,IAG5EsviB,EAA2BpihB,UAAU+ihB,wBAA0B,SAAU/xZ,GACrE,GAAI1jJ,KAAKk1iB,wBACL,OAAOl1iB,KAAKk1iB,wBAAwB,CAChCxxZ,KAAMA,EACNumO,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,eAIzC,IADA,IAAI5nI,EAAO,CAACinI,EAAK/mI,KACV+mI,EAAK98G,QAERnqB,EAAK7Y,MADL8/I,EAAOA,EAAK98G,QACGjqB,KAEnB,OAAOF,EAAK5S,UAAUmmC,KAAK,SAE/B8kgB,EAA2BpihB,UAAUgjhB,YAAc,SAAUhhK,EAASlvY,EAAQjE,EAAOwziB,EAAqBr0iB,GACtG,OAAIq0iB,EACOA,EAAoB,CACvBvviB,OAAQA,EACRk+I,KAAMgxP,EACNnzY,MAAOA,EACP0oX,IAAKjqX,KAAKoqY,mBAAmB2K,SAC7B7qB,UAAWlqX,KAAKoqY,mBAAmB4K,eACnCxjY,QAASxR,KAAKoqY,mBAAmB/lP,aACjC3jJ,KAAMA,IAIHa,GAGRuziB,EAnFqC,GAqF5Ca,GAAgC,WAChC,SAASA,KAuLT,OArLAA,EAAejjhB,UAAUu7T,UAAY,SAAU2nN,EAAwB9rd,QACpD,IAAXA,IAAqBA,EAAS,IAClC,IAAI+rd,EAAa/rd,EAAOgsd,oBAAuB,WAAc,OAAO,GAChE7rL,EAAMjqX,KAAKoqY,mBAAmB2K,SAC9B7qB,EAAYlqX,KAAKoqY,mBAAmB4K,eACpC+gK,EAA0B/1iB,KAAKoqY,mBAAmB+pC,8BAClD6hI,EAAgCh2iB,KAAKoqY,mBAAmBysC,oCACxDrla,EAAUxR,KAAKoqY,mBAAmB/lP,aAElCsxQ,EAAc31Z,KAAKujb,iBAAiB5tB,cACpCsgJ,EAAiBj2iB,KAAKwub,SAASv5P,YAAcq7M,GAAUuC,2BACvDqjK,GAAgCD,GAAkBnsd,EAAOqsd,aACzDf,EAAkB,GAkBtB,GAhBIA,EADAhjc,GAAE20R,kBAAkBj9S,EAAOi5a,YACT/igB,KAAKujb,iBAAiBtjB,eAAen2U,EAAOi5a,YAEzDj5a,EAAOoiV,aAAevW,GAE3By/I,EAAkBp1iB,KAAKoqY,mBAAmBuX,aACtC3hZ,KAAKujb,iBAAiBtjB,eAAe,CAAC3vB,GAAUiD,uBAAyB,IAC3Cv6X,OAAOhZ,KAAKujb,iBAAiB9hB,wBAA0B,IAGvEzha,KAAKujb,iBAAiB/pB,yBAExC1vU,EAAOssd,cACPR,EAAuBS,iBAAiBvsd,EAAOssd,cAEnDR,EAAuBT,QAAQC,GAE3Btrd,EAAOwsd,aAAc,CACrB,IAAI9nI,EAAyB,IAAIxa,GAC7B+c,EAAkB/wa,KAAKyua,sBAAsBC,sBAAsB0mI,EAAiBp1iB,KAAKujb,iBAAiB/T,sBAAuBhB,EAAwB,MAC7Jxua,KAAKu2iB,2BAA2BxlI,EAAiB6kI,EAAwB9rd,EAAOmrd,4BAEpF,IAAKnrd,EAAO4uU,WAAY,CACpB,IAAI89I,EAAoBZ,EAAuBa,iBAC/CrB,EAAgB/hiB,QAAQ,SAAU7N,EAAQmE,GACtC6siB,EAAkBE,SAASlxiB,EAAQmE,OAAOlF,KAyClD,SAASoqe,EAAWnrV,GAGhB,KAAIA,EAAK7I,QAAU/wD,EAAO6sd,aAD6B,IAA1BjzZ,EAAK48S,oBAA2By1G,GADjCC,GAAiCtyZ,EAAKmtT,gBAK9D/mX,EAAO8sd,cAAelzZ,EAAKj/E,WAG3BqlB,EAAOqsd,cAAiBzyZ,EAAK1jH,iBAG7B8pD,EAAO+sd,eAAoC,QAAnBnzZ,EAAK46S,cAG7Bx0W,EAAOgtd,kBAAuC,WAAnBpzZ,EAAK46S,cAKC,IAAhB56S,EAAK1tD,OACH0tD,EAAKmtT,aAGHglG,EAAW,CAAEnyZ,KAAMA,EAAMumO,IAAKA,EAAKz4W,QAASA,IACrE,CAGA,IAAIuliB,EAAiBnB,EAAuBoB,eAI5C,GAHA5B,EAAgB/hiB,QAAQ,SAAU7N,EAAQmE,GACtCotiB,EAAeL,SAASlxiB,EAAQmE,EAAO+5I,KAEvC55D,EAAOmtd,yBAA0B,CACjC,IAAI3jf,EAAUw2B,EAAOmtd,yBAAyB,CAAEvzZ,KAAMA,EAAMumO,IAAKA,EAAKC,UAAWA,EAAW14W,QAASA,IACjG8hD,GACAsif,EAAuBS,iBAAiB/if,KAIpD,OA7EAtzD,KAAKise,eAAe2sD,oBAAoB/pD,GACpCl5E,EACI31Z,KAAKwub,SAAS29G,iBACdnsiB,KAAKwub,SAAS29G,iBAAiBt9D,GAI/B7ue,KAAKwub,SAASwwB,YAAY6vB,GAS1B/kZ,EAAOotd,sBAAwBhB,EACXl2iB,KAAK4+b,oBAAoB4e,mBAC/Bnqc,QAAQ,SAAUqwI,GAC5BmrV,EAAWnrV,KAOXuyZ,EACAj2iB,KAAKwub,SAAS6xE,8BAA8BxxB,GAG5C7ue,KAAKwub,SAASwwB,YAAY6vB,GAItC7ue,KAAKise,eAAe4sD,uBAAuBhqD,GACvC/kZ,EAAOqtd,cACPvB,EAAuBS,iBAAiBvsd,EAAOqtd,cAyC5CvB,EAAuBz7gB,SAElCw7gB,EAAejjhB,UAAU6jhB,2BAA6B,SAAUxlI,EAAiB6kI,EAAwBX,GACrG,IAAImC,EAA6B,GACjCrmI,EAAgB19Z,QAAQ,SAAU+se,GACZA,EACD93U,aADC83U,EAIN93U,cAAcj1J,QAAQ,SAAUg3M,GAAM,OAAO+sV,EAA2BxziB,KAAKymN,OAEzF0mN,EAAgB5sa,OAAS,GAAK4sa,EAAgB,aAAcjpB,IAC5D9nZ,KAAKq3iB,kBAAkBzB,EAAwB7kI,EAAiBkkI,GAEhEmC,GAA8BA,EAA2BjziB,OAAS,GAClEnE,KAAKu2iB,2BAA2Ba,EAA4BxB,EAAwBX,IAG5FU,EAAejjhB,UAAU2khB,kBAAoB,SAAUzB,EAAwB7kI,EAAiBkkI,GAC5F,IAAIvzf,EAAQ1hD,KACRs3iB,EAAkB1B,EAAuB2B,yBACzCC,EAAc,EAClBzmI,EAAgB19Z,QAAQ,SAAU+se,GAC9B,IACIj/e,EADAs/Z,EAAc2/E,EAGdj/e,EADA8ziB,EACOA,EAA2B,CAC9Bx0I,YAAaA,EACbx2C,IAAKvoU,EAAM0oV,mBAAmB2K,SAC9B7qB,UAAWxoU,EAAM0oV,mBAAmB4K,eACpCxjY,QAASkwC,EAAM0oV,mBAAmB/lP,eAI/B3iG,EAAM6hY,iBAAiBxc,6BAA6BtG,EAAa,UAE5E62I,EAAgBZ,SAASv1iB,GAAQ,GAAIq2iB,IAAe/2I,EAAYpY,iBAAiBlkZ,OAAS,MAGlG0wiB,GAAc,CACVl4J,GAAU,0BACXg5J,EAAejjhB,UAAW,6BAAyB,GACtDmihB,GAAc,CACVl4J,GAAU,qBACXg5J,EAAejjhB,UAAW,wBAAoB,GACjDmihB,GAAc,CACVl4J,GAAU,aACXg5J,EAAejjhB,UAAW,gBAAY,GACzCmihB,GAAc,CACVl4J,GAAU,mBACXg5J,EAAejjhB,UAAW,sBAAkB,GAC/CmihB,GAAc,CACVl4J,GAAU,wBACXg5J,EAAejjhB,UAAW,2BAAuB,GACpDmihB,GAAc,CACVl4J,GAAU,kBACXg5J,EAAejjhB,UAAW,qBAAiB,GAC9CmihB,GAAc,CACVl4J,GAAU,uBACXg5J,EAAejjhB,UAAW,0BAAsB,GAClCmihB,GAAc,CAC3B35J,GAAK,mBACNy6J,GAvL6B,IA2LpC,SAAWnM,GACPA,EAAQA,EAAO,gBAAsB,GAAK,kBAC1CA,EAAQA,EAAO,OAAa,GAAK,SACjCA,EAAQA,EAAO,KAAW,GAAK,OAHnC,CAIGA,KAAYA,GAAU,KAEzB,IACQpga,GADJqua,IACIrua,GAAgB,SAAUpxH,EAAGgE,GAI7B,OAHAotH,GAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOA,EAAE0xB,eAAe67F,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MACpDvxH,EAAGgE,IAErB,SAAUhE,EAAGgE,GAEhB,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,GAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,KAGnFkua,GAAuD,SAAU7ta,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,GAG5D6ta,GAAuC,SAAUn/d,GAEjD,SAASm/d,EAAsBv/gB,GAC3B,IAAIspB,EAAQ82B,EAAOtjD,KAAKl1B,KAAMo4B,IAAWp4B,KACzC0hD,EAAMk2f,aAAc,EACpBl2f,EAAM9kB,OAAS,GACf,IAA4Ci7gB,EAAkBz/gB,EAAOy/gB,gBAGrE,OAFAn2f,EAAMo2f,eADe1/gB,EAAO0/gB,eAE5Bp2f,EAAMm2f,gBAAkBA,EACjBn2f,EAyGX,OAjHA+1f,GAAaE,EAAuBn/d,GAUpCm/d,EAAsBjlhB,UAAU2jhB,iBAAmB,SAAU/if,GACzD,IAAI5R,EAAQ1hD,KACPszD,IAGkB,iBAAZA,GAGF,SAAStwC,KAAKswC,IACftzD,KAAK+3iB,eAGTzkf,EAAUA,EAAQ9xD,QAAQ,SAxBjB,QAyBTxB,KAAK48B,QAAU02B,GAGfA,EAAQjgD,QAAQ,SAAU3L,GACtBg6C,EAAMq2f,eACNrwiB,EAAI2L,QAAQ,SAAUtR,EAAM4H,GACV,IAAVA,IACA+3C,EAAM9kB,QAAU8kB,EAAMm2f,iBAE1Bn2f,EAAM9kB,QAAU8kB,EAAMs2f,YAAYj2iB,EAAK+N,KAAKvO,OAAS,IACjDQ,EAAKk2iB,aACLv2f,EAAMw2f,iBAAiBn2iB,EAAKk2iB,mBAMhDN,EAAsBjlhB,UAAU6khB,uBAAyB,WAErD,OADAv3iB,KAAK+3iB,eACE,CACHrB,SAAU12iB,KAAKm4iB,6BAA6B5tgB,KAAKvqC,QAGzD23iB,EAAsBjlhB,UAAUylhB,6BAA+B,SAAU5ze,EAAQ56D,EAAOo2D,GACvE,GAATp2D,IACA3J,KAAK48B,QAAU58B,KAAK63iB,iBAExB73iB,KAAK48B,QAAU58B,KAAKg4iB,YAAYzze,GAChCvkE,KAAKk4iB,iBAAiBn4e,IAE1B43e,EAAsBjlhB,UAAUwlhB,iBAAmB,SAAUhhiB,GACzD,IAAK,IAAIrP,EAAI,EAAGA,GAAKqP,EAAOrP,IACxB7H,KAAK48B,QAAU58B,KAAK63iB,gBAAkB73iB,KAAKg4iB,YAAY,KAG/DL,EAAsBjlhB,UAAU+jhB,eAAiB,WAE7C,OADAz2iB,KAAK+3iB,eACE,CACHrB,SAAU12iB,KAAKo4iB,qBAAqB7tgB,KAAKvqC,QAGjD23iB,EAAsBjlhB,UAAU0lhB,qBAAuB,SAAU5yiB,EAAQmE,EAAO+5I,GAC/D,GAAT/5I,IACA3J,KAAK48B,QAAU58B,KAAK63iB,iBAExB73iB,KAAK48B,QAAU58B,KAAKg4iB,YAAYh4iB,KAAKs1iB,mBAAmB9viB,KAE5DmyiB,EAAsBjlhB,UAAUskhB,aAAe,WAE3C,OADAh3iB,KAAK+3iB,eACE,CACHrB,SAAU12iB,KAAKq4iB,mBAAmB9tgB,KAAKvqC,QAG/C23iB,EAAsBjlhB,UAAU2lhB,mBAAqB,SAAU7yiB,EAAQmE,EAAO+5I,GAC7D,GAAT/5I,IACA3J,KAAK48B,QAAU58B,KAAK63iB,iBAExB73iB,KAAK48B,QAAU58B,KAAKg4iB,YAAYh4iB,KAAKu1iB,oBAAoB/viB,EAAQmE,EAAO2mY,GAAUa,gBAAiBztP,KAEvGi0Z,EAAsBjlhB,UAAUslhB,YAAc,SAAUz2iB,GACpD,OAAIvB,KAAK83iB,eACEv2iB,EAEPA,QACO,MAGU,iBAAVA,EACPsqL,EAActqL,EAEiB,mBAAnBA,EAAM0wB,SAClB45J,EAActqL,EAAM0wB,YAGpB8Y,QAAQ24B,KAAK,4CACbmoH,EAAc,IAIX,IADYA,EAAYrqL,QAAQ,KAAM,MACjB,KAb5B,IAAIqqL,GAeR8rX,EAAsBjlhB,UAAUyH,MAAQ,WACpC,OAAOn6B,KAAK48B,QAEhB+6gB,EAAsBjlhB,UAAUqlhB,aAAe,WACtC/3iB,KAAK43iB,cACN53iB,KAAK48B,QA/GI,QAiHb58B,KAAK43iB,aAAc,GAEhBD,EAlHgC,CAmHzC7C,IA2CEwD,GAA4B,SAAU9/d,GAEtC,SAAS8/d,IACL,OAAkB,OAAX9/d,GAAmBA,EAAO7gC,MAAM33C,KAAMsZ,YAActZ,KA+D/D,OAjEAy3iB,GAAaa,EAAY9/d,GAIzB8/d,EAAW5lhB,UAAUk7Z,cAAgB,WACjC5tb,KAAK29Y,SAAS,CACV46J,WAAYv4iB,KAAKu4iB,WACjBC,eAAgBx4iB,KAAKw4iB,eACrBpuK,mBAAoBpqY,KAAKoqY,sBAGjCkuK,EAAW5lhB,UAAUwpe,gBAAkB,SAAUpya,GAC7C,OAAO9pF,KAAKouV,OAAOtkQ,IAEvBwud,EAAW5lhB,UAAUqpe,aAAe,SAAUjya,GAC1C,OAAO9pF,KAAKgkQ,QAAQl6K,IAExBwud,EAAW5lhB,UAAU+lhB,YAAc,WAC/B,MAAO,2BAEXH,EAAW5lhB,UAAUgmhB,mBAAqB,WACtC,MAAO,cAEXJ,EAAW5lhB,UAAUimhB,wBAA0B,WAC3C,MAAO,OAEXL,EAAW5lhB,UAAUkmhB,yBAA2B,SAAU9ud,GACtD,IAAIn/E,EAAK3K,KAET,OAAO,IAAI23iB,GAAsB,CAC7Bp0H,iBAH8B54a,EAAG44a,iBAIjC6d,aAJkEz2b,EAAGy2b,aAKrEh3D,mBALwGz/X,EAAGy/X,mBAM3G2qK,oBALsBjrd,EAAOird,0BAKetwiB,EAC5CuwiB,sBAN0Elrd,EAAOkrd,4BAMjCvwiB,EAChDwwiB,2BAPqInrd,EAAOmrd,iCAOlFxwiB,EAC1DywiB,wBARkMprd,EAAOord,8BAQrJzwiB,EACpDqziB,eATmPhud,EAAOgud,iBASxN,EAClCD,gBAV4R/td,EAAO+td,iBAU/P,OAG5CS,EAAW5lhB,UAAUmmhB,mBAAqB,WACtC,OAAO74iB,KAAKoqY,mBAAmBg0C,uBAEnCs5H,GAAc,CACV/6J,GAAU,qBACX27J,EAAW5lhB,UAAW,wBAAoB,GAC7CglhB,GAAc,CACV/6J,GAAU,iBACX27J,EAAW5lhB,UAAW,oBAAgB,GACzCglhB,GAAc,CACV/6J,GAAU,eACX27J,EAAW5lhB,UAAW,kBAAc,GACvCglhB,GAAc,CACV/6J,GAAU,mBACX27J,EAAW5lhB,UAAW,sBAAkB,GAC3CglhB,GAAc,CACV/6J,GAAU,uBACX27J,EAAW5lhB,UAAW,0BAAsB,GAC/CglhB,GAAc,CACVp7J,IACDg8J,EAAW5lhB,UAAW,gBAAiB,MAC7BglhB,GAAc,CACvBx8J,GAAK,eACNo9J,GAjEyB,CA1CC,WAC7B,SAASQ,KAuCT,OArCAA,EAAYpmhB,UAAUirX,SAAW,SAAUmpE,GACvC9md,KAAK8md,MAAQA,GAEjBgyF,EAAYpmhB,UAAU07T,OAAS,SAAU1jD,GACrC,GAAI1qS,KAAK64iB,qBAEL,OADA9tgB,QAAQ24B,KAAK,+EACN,GAEX,IAAI/4D,EAAK3K,KAAK+4iB,uBAAuBruQ,GAAasuQ,EAAeruiB,EAAGquiB,aAAclpiB,EAAOnF,EAAGmF,KAExFmpiB,EADkBD,GAAgBA,EAAaC,UAA6C,IAAjCD,EAAaC,SAAS90iB,OACpD60iB,EAAaC,SAAWj5iB,KAAK04iB,qBAK9D,OAJ+B,IAA3BO,EAAShwiB,QAAQ,OACjBgwiB,EAAWA,EAAW,IAAMj5iB,KAAK24iB,2BAErC34iB,KAAK8md,MAAMyxF,WAAWW,SAASD,EAAUj5iB,KAAKm5iB,YAAYrpiB,IACnDA,GAEXgpiB,EAAYpmhB,UAAUsxO,QAAU,SAAUl6K,GACtC,OAAO9pF,KAAK+4iB,uBAAuBjvd,GAAQh6E,MAE/CgpiB,EAAYpmhB,UAAUqmhB,uBAAyB,SAAUruQ,GACrD,IAAIsuQ,EAAeh5iB,KAAKo5iB,mBAAmB1uQ,GAE3C,MAAO,CAAEsuQ,aAAcA,EAAclpiB,KAD1B9P,KAAK8md,MAAM0xF,eAAevqN,UAAUjuV,KAAK44iB,yBAAyBI,GAAeA,KAGhGF,EAAYpmhB,UAAU0mhB,mBAAqB,SAAU1uQ,GACjD,IAAI2uQ,EAAar5iB,KAAK8md,MAAM18E,mBAAmB+zC,yBAC3Cr0V,EAAS,GAGb,OAFAsoB,GAAErrE,OAAO+iD,EAAQuvd,GACjBjnc,GAAErrE,OAAO+iD,EAAQ4gN,GACV5gN,GAEXgvd,EAAYpmhB,UAAUymhB,YAAc,SAAUrpiB,GAC1C,OAAO,IAAIwpiB,KAAK,CAAC,SAAUxpiB,GAAO,CAC9BpP,KAAMyqB,OAAO2/F,UAAUyub,iBAAmBv5iB,KAAKy4iB,cAAgB,kBAGhEK,EAxCsB,IAqH7BU,GAA4B,WAC5B,SAASA,KA6BT,OA3BAA,EAAW9mhB,UAAUwmhB,SAAW,SAAUD,EAAU3lf,GAEhD,GAAInoC,OAAO2/F,UAAUyub,iBACjBpuhB,OAAO2/F,UAAUyub,iBAAiBjmf,EAAS2lf,OAE1C,CAED,IAAI5tiB,EAAUs/B,SAAS9yB,cAAc,KACjC4hiB,EAAQtuhB,OAAOuuhB,IAAIC,gBAAgBrmf,GACvCjoD,EAAQwD,aAAa,OAAQ4qiB,GAC7BpuiB,EAAQwD,aAAa,WAAYoqiB,GACjC5tiB,EAAQE,MAAMwH,QAAU,OACxB43B,SAAS7H,KAAKhrB,YAAYzM,GAC1BA,EAAQotV,cAAc,IAAI/tO,WAAW,QAAS,CAC1Ckvb,SAAS,EACTrqC,YAAY,EACZt9f,KAAMkZ,UAEVwf,SAAS7H,KAAKrhB,YAAYpW,GAC1B8f,OAAOyZ,WAAW,WACdzZ,OAAOuuhB,IAAIG,gBAAgBJ,IAC5B,KA9B4C,SAAU5va,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EA6B/Cgwa,CAAc,CACvB5+J,GAAK,eACNs+J,GA7ByB,GAuC5BO,GAAmB,OACnBC,GAA4B,WAC5B,SAASA,KAkET,OAhEAA,EAAWtnhB,UAAUunhB,aAAe,SAAU/tC,QACpB,IAAlBA,IAA4BA,EAAgB,IAChD,IAEIzvf,EAAO,CAAC,WAWZ,OAVKyvf,EAAcniV,UACfmiV,EAAcniV,QAAU,OAExBmiV,EAAcguC,UACdz9hB,EAAK7Y,KAAK,YAEVsogB,EAAcznY,YACdhoH,EAAK7Y,KAAK,cAGPu2iB,SADG19hB,EAAKhT,IAAI,SAAUkT,GAAO,OAAOA,EAAM,KAAQuvf,EAAcvvf,GAAO,MAASqzB,KAAK,KACrFmqgB,OAEXH,EAAWtnhB,UAAU0nhB,UAAY,SAAUC,EAAYC,GACnD,IAAI54f,EAAQ1hD,KACR+yB,EAAQ,GACRsnhB,EAAWhqS,aACPgqS,EAAWhqS,WAAWkqS,oBACtBF,EAAWhqS,WAAWkqS,mBAAmBlniB,QAAQ,SAAUmniB,GACvDh+hB,OAAOC,KAAK+9hB,EAAY/wiB,KAAK4J,QAAQ,SAAUsJ,GAC3CoW,GAAS2uB,EAAM+4f,2BAA2BD,EAAY/ge,OAAS98D,EAAK69hB,EAAY/wiB,IAAIkT,GAAM29hB,OAIlGD,EAAWhqS,WAAWqqS,QACtBl+hB,OAAOC,KAAK49hB,EAAWhqS,WAAWqqS,QAAQrniB,QAAQ,SAAUsJ,GACxDoW,GAAS2uB,EAAM+4f,2BAA2B99hB,EAAK09hB,EAAWhqS,WAAWqqS,OAAO/9hB,GAAM29hB,MAI9F,IAAI19gB,EAAS,IAAMy9gB,EAAWl5iB,KAAO4xB,EACrC,OAAKsnhB,EAAWvyiB,UAAmC,MAAvBuyiB,EAAWM,SAGZ,MAAvBN,EAAWM,SACJ/9gB,EAAS,IAAMy9gB,EAAWM,SAAW,KAAON,EAAWl5iB,KAAO,IAAM44iB,IAE/En9gB,GAAU,QACNy9gB,EAAWvyiB,UACXuyiB,EAAWvyiB,SAASuL,QAAQ,SAAUg3M,GAClCztL,GAAU8kB,EAAM04f,UAAU/vV,EAAIiwV,KAG/B19gB,EAAS,KAAOy9gB,EAAWl5iB,KAAO,IAAM44iB,IAXpCn9gB,EAAS,KAAOm9gB,IAa/BC,EAAWtnhB,UAAU+nhB,2BAA6B,SAAU99hB,EAAKpb,EAAO+4iB,GACpE,IAAK/4iB,GAAmB,KAAVA,GAA0B,IAAVA,EAC1B,MAAO,GAEX,IAAIq5iB,EAAWr5iB,EAMf,MALwB,kBAAXA,GACL+4iB,IACAM,EAAWN,EAAmB/4iB,IAG/B,IAAMob,EAAM,KAAQi+hB,EAAW,KArEa,SAAU/wa,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EAmE/C+wa,CAAc,CACvB3/J,GAAK,eACN8+J,GAlEyB,GA8E5Bc,GAAW,CACX,EAAG,YAAa,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,UACxF,YAAa,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,UACrF,YAAa,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,UACrF,YAAa,UAAW,WAAY,UAAW,YAAa,UAAW,WAAY,UACnF,YAAa,WAAY,WAAY,WAAY,YAAa,WAAY,WAAY,UACtF,YAAa,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,UACrF,YAAa,WAAY,WAAY,UAAW,YAAa,WAAY,WAAY,UACrF,YAAa,WAAY,WAAY,UAAW,YAAa,YAAa,WAAY,WACtF,UAAW,YAAa,UAAW,WAAY,WAAY,YAAa,UAAW,WACnF,WAAY,YAAa,UAAW,WAAY,WAAY,YAAa,UAAW,WACpF,WAAY,YAAa,UAAW,WAAY,WAAY,YAAa,UAAW,WACpF,WAAY,YAAa,SAAU,WAAY,WAAY,YAAa,SAAU,WAClF,WAAY,YAAa,UAAW,WAAY,YAAa,YAAa,UAAW,WACrF,WAAY,YAAa,UAAW,WAAY,WAAY,YAAa,UAAW,WACpF,WAAY,YAAa,UAAW,WAAY,WAAY,YAAa,UAAW,WACpF,WAAY,YAAa,UAAW,WAAY,WAAY,YAAa,YAAa,WACrF,WAAY,SAAU,YAAa,WAAY,WAAY,SAAU,YAAa,WAClF,WAAY,UAAW,YAAa,WAAY,WAAY,UAAW,YAAa,WACpF,WAAY,UAAW,YAAa,WAAY,WAAY,UAAW,YAAa,UACpF,WAAY,UAAW,YAAa,WAAY,WAAY,UAAW,YAAa,WACpF,WAAY,UAAW,YAAa,WAAY,WAAY,WAAY,YAAa,WACrF,WAAY,UAAW,YAAa,WAAY,WAAY,UAAW,YAAa,WACpF,WAAY,UAAW,YAAa,WAAY,WAAY,UAAW,YAAa,WACpF,WAAY,UAAW,YAAa,YAAa,WAAY,UAAW,YAAa,YACrF,UAAW,WAAY,UAAW,YAAa,UAAW,WAAY,UAAW,YACjF,UAAW,WAAY,WAAY,YAAa,UAAW,WAAY,WAAY,YACnF,UAAW,WAAY,WAAY,YAAa,UAAW,WAAY,WAAY,YACnF,SAAU,WAAY,WAAY,YAAa,UAAW,WAAY,WAAY,YAClF,UAAW,WAAY,WAAY,YAAa,UAAW,WAAY,YAAa,YACpF,UAAW,WAAY,UAAY,YAAa,UAAW,WAAY,WAAY,YACnF,UAAW,WAAY,WAAY,YAAa,UAAW,WAAY,WAAY,YACnF,WAAY,WAAY,WAAY,YAAa,WAAY,WAAY,WAE1EC,GAA8B,WAC9B,SAASA,IACL,IAAIr5f,EAAQ1hD,KACZA,KAAKg7iB,QAAU,GACfh7iB,KAAKmoS,MAAQ,GACbnoS,KAAKi7iB,UAAY,SAAU9pa,GACvBzvF,EAAMs5f,QAAQp3iB,KAAK,CACfutI,KAAMA,EACN+pa,QAAS,IAAIxggB,QAoIzB,OAhIAqggB,EAAarohB,UAAUyohB,WAAa,SAAUxva,GAC1CA,EAAMt4H,QAAQrT,KAAKi7iB,YAEvBF,EAAarohB,UAAU0ohB,QAAU,SAAUjqa,EAAM79E,GAC7CtzD,KAAKmoS,MAAMvkS,KAAK,CACZutI,KAAMA,EACN+pa,QAAS,IAAIxggB,KACb4Y,QAASA,KAGjBynf,EAAarohB,UAAU2ohB,YAAc,WACjCr7iB,KAAKg7iB,QAAU,GACfh7iB,KAAKmoS,MAAQ,IAEjB4yQ,EAAarohB,UAAUwiQ,WAAa,SAAUomR,QACzB,IAAbA,IAAuBA,EAAW,mBACtC,IAAIC,EAAav7iB,KAAKw7iB,kBAClBC,EAAcz7iB,KAAK07iB,gBAAgBH,GAEvC,OADAv7iB,KAAKq7iB,cACE,IAAI/B,KAAK,CAACmC,GAAc,CAAE/6iB,KAAM46iB,KAE3CP,EAAarohB,UAAU8ohB,gBAAkB,SAAUG,QACjC,IAAVA,IAAoBA,EAAQ,IAMhC,IALA,IAAIC,EAAa57iB,KAAKg7iB,QAAQhiiB,OAAOhZ,KAAKmoS,OACtC7wP,EAAMskgB,EAAWz3iB,OACjB03iB,EAAS,GACTC,EAAK,EACLC,EAAK,EACArsiB,EAAK,EAAGssiB,EAAeJ,EAAYlsiB,EAAKssiB,EAAa73iB,OAAQuL,IAAM,CACxE,IACI/E,EAAK3K,KAAK21R,UADIqmR,EAAatsiB,GACMosiB,GAAKG,EAAatxiB,EAAGsxiB,WAAYC,EAAevxiB,EAAGuxiB,aAAc5of,EAAU3oD,EAAG2oD,QACnHwof,GAAMG,EAAW93iB,OAASmvD,EAAQnvD,OAClC43iB,GAAMG,EAAa/3iB,OACnBw3iB,GAASM,EAAa3of,EACtBuof,GAAUK,EAGd,OAAOP,EAAQE,EADH77iB,KAAKm8iB,eAAe7kgB,EAAKykgB,EAAID,IAG7Cf,EAAarohB,UAAUijQ,UAAY,SAAUymR,EAAavxiB,GACtD,IAAIyoD,EAAU8of,EAAY9of,QAAS69E,EAAOira,EAAYjra,KAAM+pa,EAAUkB,EAAYlB,QACjD7yK,EAAWj2R,GAAEi2R,SAC1Cg0K,GAAU98K,EADIntR,GAAEmtR,aACMpuP,GACtBmra,EAASD,IAAYlra,EACrBtpE,EAAO7nE,KAAKu8iB,YAAYrB,GACxB9uV,EAAKpsN,KAAKw8iB,YAAYtB,GACtBuB,EAAc,GAClB,GAAIH,EAAQ,CACR,IAAII,EAAkBr0K,EAAS,EAAG,GAAKA,EAASroY,KAAK28iB,kBAAkBN,GAAU,GAAKA,EACtFI,EAAc,KAAap0K,EAASq0K,EAAgBv4iB,OAAQ,GAAKu4iB,EAErE,IAAIn4e,EAAS,QACR+3e,EAAS,OAAa,QACvB,OACAj0K,EAASxgU,EAAM,GACfwgU,EAASj8K,EAAI,GACbi8K,EAAS/0U,EAAUtzD,KAAK28iB,kBAAkBrpf,GAAW,EAAG,GACxD+0U,EAAS/0U,EAAUA,EAAQnvD,OAAS,EAAG,GACvCkkY,EAAS/0U,EAAUA,EAAQnvD,OAAS,EAAG,GACvCkkY,EAASg0K,EAAQl4iB,OAAQ,GACzBkkY,EAASo0K,EAAYt4iB,OAAQ,GAYjC,MAAO,CAAE83iB,WAXQ,aAAe13e,EAAS83e,EAAUI,EAWlBP,aAVd,mBAEf33e,EAFe,gBAMdjR,EAAU,WAAqB,cAChC+0U,EAASx9X,EAAQ,GACjBwxiB,EACAI,EACyDnpf,QAASA,GAAW,KAErFynf,EAAarohB,UAAUyphB,eAAiB,SAAUS,EAAMC,EAAMC,GAC1D,IAAIz0K,EAAWj2R,GAAEi2R,SACjB,MAAO,qBAGHA,EAASu0K,EAAM,GACfv0K,EAASu0K,EAAM,GACfv0K,EAASw0K,EAAM,GACfx0K,EAASy0K,EAAM,GACf,QAER/B,EAAarohB,UAAUgphB,gBAAkB,SAAUpof,GAE/C,IADA,IAAIypf,EAAQ,IAAIvkY,WAAWllH,EAAQnvD,QAC1B0D,EAAI,EAAGA,EAAIk1iB,EAAM54iB,OAAQ0D,IAC9Bk1iB,EAAMl1iB,GAAKyrD,EAAQzjB,WAAWhoC,GAElC,OAAOk1iB,GAEXhC,EAAarohB,UAAUiqhB,kBAAoB,SAAUrpf,EAAS0pf,GAE1D,QADY,IAARA,IAAkBA,EAAM,IACvB1pf,EAAQnvD,OACT,OAAO,EAEX64iB,IAAS,EAIT,IAHA,IAAIzoiB,EAAI,EAGC1M,EAAI,EAAGA,EAAIyrD,EAAQnvD,OAAQ0D,IAChC0M,EAAI++C,EAAQzjB,WAAWhoC,GAGvBm1iB,EAAOA,IAAQ,EADXlC,GADY,KAAXkC,EAAMzoiB,IAIf,OAAe,EAARyoiB,GAEXjC,EAAarohB,UAAU6phB,YAAc,SAAUtigB,GAC3C,IAAI4tB,EAAO5tB,EAAKI,WAKhB,OAJAwtB,IAAS,EACTA,GAAc5tB,EAAKK,cACnButB,IAAS,GACK5tB,EAAKM,aAAe,GAGtCwggB,EAAarohB,UAAU8phB,YAAc,SAAUvigB,GAC3C,IAAImyK,EAAKnyK,EAAKC,cAAgB,KAK9B,OAJAkyK,IAAO,EACPA,GAAWnyK,EAAKE,WAAa,GAC7BiyK,IAAO,GACGnyK,EAAKG,WAhLoC,SAAUyvF,EAAYr9G,EAAQ7P,EAAK8gB,GAC1F,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EA+K7Cmza,CAAc,CACzB/hK,GAAK,iBACN6/J,GA3I2B,GA+I9B/+C,GAAkB,CAClBn9G,WAAYxhX,EAAQ6/W,YAAY8+G,gBAChCl1C,MAAO,CAACwxF,GAAYkB,GAAYQ,GAAYrE,GAAgBoF,KAGhEr8J,GAAe3jL,SAASqiU,IAA0B,GAClD1+I,GAAe3jL,SAASkiU,IAAwB,GAChDv+I,GAAe3jL,SAASihS,IAAiB,GAEzC3+d,EAAQ+na,gBAAkBA,GAC1B/na,EAAQm4f,cAAgBA,GACxBn4f,EAAQ8oa,WAAaA,GACrB9oa,EAAQm1f,cAAgBA,GACxBn1f,EAAQ8tf,SAAWA,GACnB9tf,EAAQwqf,iBAAmBA,GAC3Bxqf,EAAQy1f,mBAAqBA,GAC7Bz1f,EAAQg2f,aAAeA,GACvBh2f,EAAQ0wf,gBAAkBA,GAC1B1wf,EAAQuwf,iBAAmBA,GAC3Bvwf,EAAQosf,QAAUA,GAClBpsf,EAAQo4e,cAAgBA,GACxBp4e,EAAQ03f,SAAWA,GACnB13f,EAAQ6wf,SAAWA,GACnB7wf,EAAQ05f,eAAiBA,GACzB15f,EAAQ+9e,oBAAsBA,GAC9B/9e,EAAQ6za,8BAAgCA,GACxC7za,EAAQ20a,yBAA2BA,GACnC30a,EAAQsue,oBAAsBA,GAC9Btue,EAAQs/W,UAAYA,GACpBt/W,EAAQypgB,qBAAuBA,GAC/BzpgB,EAAQ69W,KAAOA,GACf79W,EAAQ+oZ,SAAWA,GACnB/oZ,EAAQumd,oBAAsBA,GAC9Bvmd,EAAQ8md,eAAiBA,GACzB9md,EAAQoub,SAAWA,GACnBpub,EAAQg2e,sBAAwBA,GAChCh2e,EAAQw6f,kBAAoBA,GAC5Bx6f,EAAQw3e,oBAAsBA,GAC9Bx3e,EAAQw+a,YAAcA,GACtBx+a,EAAQypa,2BAA6BA,GACrCzpa,EAAQu0Y,WAAaA,GACrBv0Y,EAAQggL,MAAQA,EAChBhgL,EAAQgiX,OAASA,GACjBhiX,EAAQmib,UAAYA,GACpBnib,EAAQg3X,iBAAmBA,GAC3Bh3X,EAAQ+tX,cAAgBA,GACxB/tX,EAAQyqX,YAAcA,GACtBzqX,EAAQm7W,iBAAmBA,GAC3Bn7W,EAAQsyY,YAAcA,GACtBtyY,EAAQjL,UAAYA,GACpBiL,EAAQy3Y,cAAgBA,GACxBz3Y,EAAQizW,UAAYA,GACpBjzW,EAAQy7W,QAAUA,GAClBz7W,EAAQw3c,gBAAkBA,GAC1Bx3c,EAAQ45Z,WAAaA,GACrB55Z,EAAQ8yY,sBAAwBA,GAChC9yY,EAAQyjb,mBAAqBA,GAC7Bzjb,EAAQoxe,YAAcA,GACtBpxe,EAAQihf,YAAcA,GACtBjhf,EAAQ8/W,aAAeA,GACvB9/W,EAAQ0xX,OAASA,GACjB1xX,EAAQ8pe,kBAAoBA,GAC5B9pe,EAAQkqd,cAAgBA,GACxBlqd,EAAQm0e,gBAAkBA,GAC1Bn0e,EAAQ89f,KAAOA,GACf99f,EAAQg+d,QAAUA,GAClBh+d,EAAQ6ve,SAAWA,GACnB7ve,EAAQ61Y,mBAAqBA,GAC7B71Y,EAAQ0yd,UAAYA,GACpB1yd,EAAQwva,kBAAoBA,GAC5Bxva,EAAQ22X,uBAAyBA,GACjC32X,EAAQ4nd,gBAAkBA,GAC1B5nd,EAAQ+od,eAAiBA,GACzB/od,EAAQyhd,cAAgBA,GACxBzhd,EAAQkve,wBAA0BA,GAClClve,EAAQ+1a,oBAAsBA,GAC9B/1a,EAAQ6/gB,SAh37BR,SAAkBpngB,GACd,OAAOu0Y,GAAa9/Y,KAAKvqC,KAAM81C,IAg37BnCzY,EAAQkue,OAASA,GACjBlue,EAAQgue,cAAgBA,GACxBhue,EAAQ0ggB,oBAAsBA,GAC9B1ggB,EAAQqhX,eAAiBA,GACzBrhX,EAAQs1e,kBAAoBA,GAC5Bt1e,EAAQmjd,qBAAuBA,GAC/Bnjd,EAAQs2a,aAAeA,GACvBt2a,EAAQq6W,eAAiBA,GACzBr6W,EAAQy/W,SAAWA,GACnBz/W,EAAQ6sX,oBAAsBA,GAC9B7sX,EAAQ86e,gBAAkBA,GAC1B96e,EAAQ86f,eAAiBA,GACzB96f,EAAQ0sZ,eAAiBA,GACzB1sZ,EAAQ6qb,mBAAqBA,GAC7B7qb,EAAQ61a,sBAAwBA,GAChC71a,EAAQkre,aAAeA,GACvBlre,EAAQ21a,oBAAsBA,GAC9B31a,EAAQi/W,cAAgBA,GACxBj/W,EAAQ8+W,aAAeA,GACvB9+W,EAAQm/W,WAAaA,GACrBn/W,EAAQ94B,QAAUA,GAClB84B,EAAQ8zY,aAAeA,GACvB9zY,EAAQgwZ,eAAiBA,GACzBhwZ,EAAQ4/W,UAAYA,GACpB5/W,EAAQ8/gB,cA957BR,SAAuB7ogB,GACnB,OAAO61Y,GAAkB5/Y,KAAKvqC,KAAMs0C,IA857BxCjX,EAAQ6sZ,YAAcA,GACtB7sZ,EAAQ+of,sBAAwBA,GAChC/of,EAAQs+b,QAAUA,GAClBt+b,EAAQmga,QAAUA,GAClBnga,EAAQoigB,aAAeA,GACvBpigB,EAAQ0kgB,mBAAqBA,GAC7B1kgB,EAAQ4lgB,aAAeA,GACvB5lgB,EAAQq6f,iBAAmBA,GAC3Br6f,EAAQssc,YAAcA,GACtBtsc,EAAQ24Z,aAAeA,GACvB34Z,EAAQu4e,qBAAuBA,GAC/Bv4e,EAAQu1a,iBAAmBA,GAC3Bv1a,EAAQomf,kBAAoBA,GAC5Bpmf,EAAQigb,oBAAsBA,GAC9Bjgb,EAAQq4c,eAAiBA,GACzBr4c,EAAQq0Z,aAAeA,GACvBr0Z,EAAQmze,eAAiBA,GACzBnze,EAAQ+we,oBAAsBA,GAC9B/we,EAAQy4e,eAAiBA,GACzBz4e,EAAQghgB,aAAeA,GACvBhhgB,EAAQwqe,gBAAkBA,GAC1Bxqe,EAAQqtZ,eAAiBA,GACzBrtZ,EAAQk6a,WAAaA,GACrBl6a,EAAQsnQ,MAAQA,GAChBtnQ,EAAQksb,eAAiBA,GACzBlsb,EAAQo7Z,cAAgBA,GACxBp7Z,EAAQgra,qBAAuBA,GAC/Bhra,EAAQg8a,sBAAwBA,GAChCh8a,EAAQm9e,WAAaA,GACrBn9e,EAAQg4e,sBAAwBA,GAChCh4e,EAAQ2td,aAAeA,GACvB3td,EAAQq4e,0BAA4BA,GACpCr4e,EAAQ4ogB,YAAcA,GACtB5ogB,EAAQ+0E,EAAIA,GACZ/0E,EAAQ+/gB,uBA92GR,SAAgCnhiB,EAAQC,EAAQw6X,EAAOC,EAAO9X,QAClC,IAApBA,IAA8BA,GAAkB,GACpD9zV,QAAQ24B,KAAK,+GACb,IAAI25e,EAAejrc,GAAE8rR,OAAOwY,IAAUA,EAAM77P,MACxCyia,EAAelrc,GAAE8rR,OAAOyY,IAAUA,EAAM97P,MAExC0ia,GAAiBF,IAAiBC,EACtC,OAFoBD,GAAgBC,EAGzBlrc,GAAEwsR,kBAAkB8X,EAAM/5X,IAAKg6X,EAAMh6X,IAAKkiX,GAE5C0+K,EACEnrc,GAAEwsR,kBAAkB3iX,EAAQC,EAAQ2iX,GAEtCw+K,EACE,GAGC,GA81GhBhghB,EAAQmghB,6BAtiJR,SAAsCC,GACdA,EAAQrghB,OAAO,SAAU,IAC/BsghB,UAAU,SAAU,WAC9B,MAAO,CACHC,SAAU,IACV5rV,WAAY,CAAC,WAAY,SAAU,WAAY,SAAUsrU,IACzD7vc,OAAO,MAiiJnBnwD,EAAQughB,kCA//IR,WAGI,GAFA7ygB,QAAQ24B,KAAK,uHAET/iC,GAAJ,CAGAA,IAAa,EACW,oBAAbgK,UAA6BA,SAASkzgB,iBAC7C9ygB,QAAQ/V,MAAM,gHAIlB,IAAI8ohB,EAAiBthiB,OAAOlX,OAAO+vE,YAAY3iD,WAE/CoiZ,GAAcrD,eAAep+Z,QAAQ,SAAUsJ,GAC3CH,OAAOu3B,eAAe+pgB,EAAgBnhiB,EAAK,CACvCtI,IAAK,SAAUpU,GACXD,KAAK+9iB,oBAAoBphiB,EAAK1c,IAElCiS,IAAK,WACD,OAAOlS,KAAKg+iB,oBAAoBrhiB,IAEpCs3B,YAAY,EACZvW,cAAc,MAGtB,IAAIughB,EAAoBH,EACxBG,EAAkBF,oBAAsB,SAAUphiB,EAAKpb,GAC9CvB,KAAKk+iB,eACNl+iB,KAAKk+iB,aAAe,IAExBl+iB,KAAKk+iB,aAAavhiB,GAAOpb,EAEzB,IAAI48iB,EAAe,GACnBA,EAAaxhiB,GAAO,CAAEvX,aAAc7D,GACpCvB,KAAKw/G,SAAS2+b,IAElBF,EAAkBz+b,SAAW,SAAUv6G,GAC/BjF,KAAKqzW,cACLyhE,GAAc1qD,gBAAgBnlX,EAASjF,KAAKo+iB,aAAcp+iB,KAAKiqX,IAAKjqX,KAAKkqX,YAGjF+zL,EAAkBD,oBAAsB,SAAUrhiB,GAI9C,OAHK3c,KAAKk+iB,eACNl+iB,KAAKk+iB,aAAe,IAEjBl+iB,KAAKk+iB,aAAavhiB,IAE7BshiB,EAAkBI,eAAiB,SAAUr2hB,GACzC,IAAI6hW,EAAsB7pX,KAAK6pX,oBAAoBt/U,KAAKvqC,MACxDA,KAAKo+iB,aAAetpI,GAAcnrD,4BAA4B3hW,EAAShoB,MAIvEA,KAAKs+iB,QAAU,IAAInjB,GAAKn7hB,KAAMA,KAAKo+iB,aAHlB,CACbv0L,oBAAqBA,IAGzB7pX,KAAKiqX,IAAMjiW,EAAQiiW,IACnBjqX,KAAKkqX,UAAYliW,EAAQkiW,UACzBlqX,KAAKqzW,cAAe,GAGxB4qM,EAAkBM,gBAAkB,WAChC,IAAK,IAAI12iB,EAAI,EAAGA,EAAI7H,KAAKknL,WAAW/iL,OAAQ0D,IAExC7H,KAAKw+iB,yBADWx+iB,KAAKknL,WAAWr/K,KAIxCo2iB,EAAkBO,yBAA2B,SAAUp1M,GACnD,IA0Baq1M,EA1BTt9iB,EA2BgB,iBADPs9iB,EA1BUr1M,EAAUt6V,UA4BpB2viB,EAASj9iB,QAAQ,YAAa,SAAUupI,GACjD,OAAOA,EAAE,GAAGn9F,gBAKT6wgB,EAjCHl9iB,EAAQ6nW,EAAUs1M,UAClB5pI,GAAcrD,eAAexoa,QAAQ9H,IAAS,IAC9CnB,KAAKmB,GAAQI,IAGrB08iB,EAAkBU,iBAAmB,SAAU70d,KAC/Cm0d,EAAkBW,iBAAmB,SAAU90d,KAC/Cm0d,EAAkBY,yBAA2B,SAAU53X,GAEnDjnL,KAAKw+iB,yBADWx+iB,KAAKknL,WAAWD,KAGpCg3X,EAAkBp0L,oBAAsB,SAAUt0U,EAAWjtB,GACzD,IAAIw2hB,EAAiBvpgB,EAAU34B,cAC3BmiiB,EAAe,IAAIC,MAAMF,GACJC,EACNE,cAAgB32hB,EACnCtoB,KAAKy4V,cAAcsmN,GACnB,IAAIG,EAAiB,KAAOJ,EACQ,mBAAzB9+iB,KAAKk/iB,IACZl/iB,KAAKk/iB,GAAgBH,IAI7Bp0gB,SAASkzgB,gBAAgB,UAAW,CAAEnrhB,UAAWorhB,MAq6IrDzghB,EAAQ8hhB,kBAtqIR,SAA2Br1d,GACvB,OAAO,IAAIvlF,GAAQ,SAAUC,GACzB,IAAI0+O,EAAc,IAAI93J,eACtB83J,EAAY73J,KAAK,MAAOvB,EAAO31C,KAC/B+uM,EAAYv3J,OACZu3J,EAAYk8T,mBAAqB,WAC7B,GAA8B,GAA1Bl8T,EAAYm8T,YAAyC,KAAtBn8T,EAAY13J,OAAe,CAC1D,IAAI8zd,EAAe9lhB,KAAKW,MAAM+oN,EAAYz3J,cAC1CjnF,EAAQ86iB,QA+pIxBjihB,EAAQ8jN,cAAgBA,G,m3KCtkxCT,SAAS,EAAWmyC,EAAQzzR,EAAM0zR,GAc/C,OAZE,EADE,OAAAgsR,EAAA,KACWv2a,QAAQC,UAER,SAAoBqqJ,EAAQzzR,EAAM0zR,GAC7C,IAAIx3Q,EAAI,CAAC,MACTA,EAAEnY,KAAK+zC,MAAM57B,EAAGlc,GAChB,IACIi0B,EAAW,IADG6jJ,SAASptI,KAAKoN,MAAM27O,EAAQv3Q,IAG9C,OADIw3Q,GAAO,OAAAlqJ,EAAA,GAAev1G,EAAUy/P,EAAM7gQ,WACnCoB,IAIO6jB,MAAM,KAAMr+B,W,gECZjB,SAAS,EAAiBi6Q,GACvC,IAAI+hG,EAAwB,mBAAR7nX,IAAqB,IAAIA,SAAQhJ,EA8BrD,OA5BA,EAAmB,SAA0B8uR,GAC3C,GAAc,OAAVA,ICP0D,IAAzD57G,SAAS1lJ,SAASiD,KDOiBq+P,GCPRtqR,QAAQ,iBDOQ,OAAOsqR,EAEvD,GAAqB,mBAAVA,EACT,MAAM,IAAI/gP,UAAU,sDAGtB,QAAsB,IAAX8iV,EAAwB,CACjC,GAAIA,EAAOlhX,IAAIm/Q,GAAQ,OAAO+hG,EAAOpjX,IAAIqhR,GAEzC+hG,EAAOjhX,IAAIk/Q,EAAOisR,GAGpB,SAASA,IACP,OAAO,EAAUjsR,EAAOj6Q,UAAW,OAAA67H,EAAA,GAAen1I,MAAMkwC,aAW1D,OARAsvgB,EAAQ9shB,UAAYlW,OAAOlX,OAAOiuR,EAAM7gQ,UAAW,CACjDwd,YAAa,CACX3uC,MAAOi+iB,EACPvrgB,YAAY,EACZtW,UAAU,EACVD,cAAc,KAGX,OAAA2rG,EAAA,GAAem2a,EAASjsR,KAGTA,G,wVEnB1B,SAASksR,EAAuBC,GAC5B,IAAK,IAAI/iiB,KAAO+iiB,EACZ,GAAIA,EAAyB/iiB,KAAS8iiB,EAClC,OAAO9iiB,EAGf,MAAM0X,MAAM,qDAQhB,SAASsrhB,EAAenzhB,EAAQjG,GAC5B,IAAK,IAAM5J,KAAO4J,EACVA,EAAOmnB,eAAe/wB,KAAS6P,EAAOkhB,eAAe/wB,KACrD6P,EAAO7P,GAAO4J,EAAO5J,IAYjC,SAAS8c,EAAU50B,GACf,GAAqB,iBAAVA,EACP,OAAOA,EAEX,GAAI0F,MAAMyL,QAAQnR,GACd,MAAO,IAAMA,EAAM4E,IAAIgwB,GAAWuW,KAAK,MAAQ,IAEnD,GAAa,MAATnrC,EACA,MAAO,GAAKA,EAEhB,GAAIA,EAAM+6iB,eACN,gBAAU/6iB,EAAM+6iB,gBAEpB,GAAI/6iB,EAAM1D,KACN,gBAAU0D,EAAM1D,MAEpB,IAAMm3B,EAAMzzB,EAAMotB,WAClB,GAAW,MAAPqG,EACA,MAAO,GAAKA,EAEhB,IAAMunhB,EAAevnhB,EAAIrvB,QAAQ,MACjC,OAAyB,IAAlB42iB,EAAsBvnhB,EAAMA,EAAI0yB,UAAU,EAAG60f,GAUxD,SAASC,EAAuBp7f,EAAQC,GACpC,OAAkB,MAAVD,GAA6B,KAAXA,EACX,OAAVC,EAAiB,GAAKA,EACZ,MAATA,GAA2B,KAAVA,EAAgBD,EAASA,EAAS,IAAMC,EAUnE,IAAMo7f,EAAkBN,EAAuB,CAAEM,gBAAiBN,IAalE,SAASO,EAAWC,GAKhB,OAJAA,EAAaF,gBAAkBC,EAC/BC,EAAahuhB,SAAW,WACpB,OAAOwH,EAAUz5B,SAEdigjB,EAeX,SAASC,EAAkBx/iB,GACvB,OAAOy/iB,EAAaz/iB,GAAQA,IAASA,EAGzC,SAASy/iB,EAAanxiB,GAClB,MAAqB,mBAAPA,GAAqBA,EAAG0+B,eAAeqygB,IACjD/wiB,EAAG+wiB,kBAAoBC,EAa/B,IACM,E,YACF,WAAY9ze,EAAMlyC,GAAO,kCACrB,YAAMomhB,EAAmBl0e,EAAMlyC,MAC1BkyC,KAAOA,EAFS,E,0CADF73C,QAmB3B,SAAS+rhB,EAAmBl0e,EAAMlyC,GAC9B,IAAMqmhB,EAAWn0e,EAAO,MAAH,OAASA,EAAT,MAAoB,GAWzC,MAVmB,GAAH,OAAMm0e,GAAN,OAAiBrmhB,GA0BrC,SAASsmhB,EAAgB/+iB,GACrB,MAAqB,iBAAVA,EACAA,EACE,MAATA,EACO,GAGJ8tC,OAAO9tC,GAOlB,SAASg/iB,EAAkBh/iB,GACvB,MAAqB,mBAAVA,EACAA,EAAMJ,MAAQI,EAAM0wB,WACV,iBAAV1wB,GAA+B,MAATA,GAAuC,mBAAfA,EAAMb,KACpDa,EAAMb,KAAKS,MAAQI,EAAMb,KAAKuxB,WAElCquhB,EAAgB/+iB,GAqB3B,SAASi/iB,EAA2B37iB,EAAO47iB,GACvC,IAAMC,EAAkBD,EAAe,OAAH,OAAUA,GAAiB,GAC/D,MAAM,IAAI,EAAa,MAAjB,0BAAoEF,EAAkB17iB,GAAtF,iBAAqG67iB,IAgF/G,SAAS/5a,EAAWsxM,EAAK0oO,EAAQC,EAAUC,GACvC,MAAM,IAAIxshB,MAAM,2BAAoB4jT,IACjB,MAAd4oO,EAAqB,GAArB,uBAA0CD,EAA1C,YAAsDC,EAAtD,YAAoEF,EAApE,gBA+CT,SAASG,EAAmBhrhB,GACxB,MAAO,CACHjxB,MAAOixB,EAAKjxB,MACZ+hB,WAAYkP,EAAKlP,YAAc,KAC/B9hB,QAASgxB,EAAKhxB,QACdvD,WAAOkD,GAQf,IAAMs8iB,EAAmBD,EAkBzB,SAASE,EAAiBh5hB,GACtB,MAAO,CAAEmK,UAAWnK,EAAQmK,WAAa,GAAI/Y,QAAS4O,EAAQ5O,SAAW,IAQ7E,SAAS6niB,EAAiBvgjB,GACtB,OAAOwgjB,EAAiBxgjB,EAAMygjB,IAAgBD,EAAiBxgjB,EAAM0gjB,GAMzE,SAASF,EAAiBxgjB,EAAMw2C,GAC5B,OAAOx2C,EAAKgtC,eAAewJ,GAASx2C,EAAKw2C,GAAS,KA2CtD,SAASmqgB,EAAe3gjB,GACpB,OAAOA,IAASA,EAAKgtC,eAAe4zgB,IAAe5gjB,EAAKgtC,eAAe6zgB,IACnE7gjB,EAAK4gjB,GACL,KAER,IAqDIE,EArDEL,EAAc1B,EAAuB,CAAE76iB,aAAO66iB,IAC9C6B,EAAa7B,EAAuB,CAAEtmiB,YAAMsmiB,IAE5C2B,EAAoB3B,EAAuB,CAAEn+b,gBAAiBm+b,IAC9D8B,EAAkB9B,EAAuB,CAAEgC,cAAehC,IAc5DiC,EACH,SAAUA,G,OAIPA,EAAYA,EAAW,QAAc,GAAK,UAK1CA,EAAYA,EAAW,KAAW,GAAK,OAEvCA,EAAYA,EAAW,KAAW,GAAK,OAEvCA,EAAYA,EAAW,SAAe,GAAK,WAE3CA,EAAYA,EAAW,SAAe,GAAK,WAfpCA,EAAV,CADc,IAoCf,SAASC,IACL,OAAOH,EAKX,SAASI,EAAwBC,GAC7B,IAAM1tV,EAAWqtV,EAEjB,OADAA,EAAwBK,EACjB1tV,EASX,SAAS2tV,EAAmBj9iB,EAAOk9iB,EAAephP,GAC9C,IAAMqhP,EAAgBf,EAAiBp8iB,GACvC,OAAIm9iB,GAA6C,QAA5BA,EAAcp7hB,gBACAniB,IAAxBu9iB,EAAczgjB,MAAsBygjB,EAAczgjB,MAAQygjB,EAAcl9iB,UAC3Ek9iB,EAAczgjB,MAElBo/T,EAAQ+gP,EAAY5kK,SACb,UACWr4Y,IAAlBs9iB,EACOA,OACXvB,EAA2B/mhB,EAAU50B,GAAQ,YA8BjD,SAASo9iB,EAAcjziB,GACnB,MAAO,CAAEijB,SAAUjjB,GAAKijB,WAkB5B,IAAIiwhB,EACH,SAAUA,G,OAOPA,EAAwBA,EAAuB,OAAa,GAAK,SAKjEA,EAAwBA,EAAuB,QAAc,GAAK,UAZ3DA,EAAV,CAD0B,IAmFvBC,GACH,SAAUA,G,OASPA,EAAkBA,EAAiB,SAAe,GAAK,WAKvDA,EAAkBA,EAAiB,KAAW,GAAK,OAQnDA,EAAkBA,EAAiB,UAAgB,GAAK,YAtBjDA,EAAV,CADoB,IAiCfC,GAAqC,oBAAf7jU,YAA8BA,WACpD8jU,GAA6B,oBAAXl3hB,QAA0BA,OAC5Cm3hB,GAAyB,oBAATrpU,MAAqD,oBAAtBspU,mBACjDtpU,gBAAgBspU,mBAAqBtpU,KACnCupU,GAA6B,oBAAX16gB,QAA0BA,OAI5C26gB,GAAUL,IAAgBI,IAAYH,IAAYC,GAyFlDI,GAAY,GACZC,GAAc,GAwBdC,GAAgB,GAgBhBC,GAAcpD,EAAuB,CAAEt5iB,YAAMs5iB,IAC7CqD,GAAarD,EAAuB,CAAEh/iB,YAAMg/iB,IAC5CsD,GAActD,EAAuB,CAAEuD,aAAOvD,IAC9CwD,GAAaxD,EAAuB,CAAEvmiB,YAAMumiB,IAC5CyD,GAAgBzD,EAAuB,CAAE0D,YAAM1D,IAC/C2D,GAAiB3D,EAAuB,CAAEl/iB,YAAMk/iB,IAOhD4D,GAAgB5D,EAAuB,CAAE6D,kBAAmB7D,IAS9D8D,GAAmB,EAiBvB,SAASC,GAAkBC,GACvB,OAAOxB,EAAc,WAIjB,IACMyB,EAAiB,GACjBzwiB,EAAM,CACRvS,KAHS+ijB,EAAoB/ijB,KAI7BijjB,kBAAmB,KACnBv9iB,MAAOq9iB,EAAoBr9iB,MAC3BC,KAAMo9iB,EAAoBp9iB,KAC1BvB,QAAS,KACTxE,SAAUmjjB,EAAoBnjjB,UAAY,KAC1CgG,OAAQm9iB,EAAoBn9iB,QAAU,KACtCuS,mBAAoB4qiB,EAAoB5qiB,mBACxCL,aAAciriB,EAAoBjriB,cAAgB,KAClDD,SAAUkriB,EAAoBlriB,UAAY,EAC1CxV,UAAW0gjB,EAAoB1gjB,WAAa,KAC5CrB,eAAgB+hjB,EAAoB/hjB,gBAAkB,KACtDgijB,eAAgBA,EAChBvhjB,OAAQ,KACRggB,QAAS,KACTzJ,SAAU+qiB,EAAoB/qiB,UAAY,KAC1CkriB,OAAQH,EAAoBz6hB,kBAAoBk5hB,EAAwB2B,OACxEC,cAAe,KACfC,SAAU,KACVpjjB,UAAW8ijB,EAAoB9ijB,WAAaiijB,GAC5CtqiB,UAAWmriB,EAAoBnriB,WAAa,KAC5ChW,SAAUmhjB,EAAoBnhjB,UAAY,KAC1CwN,KAAM2ziB,EAAoB3ziB,MAAQ,GAGlCtJ,cAAei9iB,EAAoBj9iB,eAAiB27iB,GAAkB6B,SACtEh+hB,GAAI,IACJlN,OAAQ2qiB,EAAoB3qiB,QAAU8piB,GACtCxwc,EAAG,KACH6xc,SAAU,KACVC,QAAST,EAAoBS,SAAW,KACxCC,MAAO,MAELC,EAAiBX,EAAoBl9iB,WACrCgjb,EAAUk6H,EAAoBnhjB,SAC9B+hjB,EAAYZ,EAAoBjsQ,MAYtC,OAXAvkS,EAAI+S,IAAMu9hB,KACVtwiB,EAAI9Q,OAASmijB,GAAab,EAAoBthjB,OAAQuhjB,GAClDzwiB,EAAIkP,QAAUmiiB,GAAab,EAAoBthiB,SAC/Cona,GAAWA,EAAQl2a,QAAQ,SAACrE,GAAD,OAAQA,EAAGiE,KAC1CA,EAAI6wiB,cAAgBM,EAChB,kBAAiC,mBAAnBA,EAAgCA,IAAmBA,GAC5D36iB,IAAI86iB,KACT,KACJtxiB,EAAI8wiB,SAAWM,EACX,kBAA4B,mBAAdA,EAA2BA,IAAcA,GAAW56iB,IAAI+6iB,KACtE,KACGvxiB,IAiBf,SAASsxiB,GAAoB7jjB,GAKzB,OAJY+jjB,GAAgB/jjB,IAkLhC,SAAyBA,GACrB,OAAOA,EAAKoijB,KAAe,KAnLU4B,CAAgBhkjB,GAMzD,SAAS8jjB,GAAe9jjB,GAKpB,OA0KJ,SAAoBA,GAChB,OAAOA,EAAKqijB,KAAgB,KA/KhB4B,CAAWjkjB,GAM3B,IAAMkkjB,GAAyB,GAI/B,SAASC,GAAiB5xiB,GACtB,IAAMqlB,EAAM,CACR53B,KAAMuS,EAAIvS,KACVokjB,UAAW7xiB,EAAI6xiB,WAAalC,GAC5BmC,aAAc9xiB,EAAI8xiB,cAAgBnC,GAClCxpiB,QAASnG,EAAImG,SAAWwpiB,GACxBvlhB,QAASpqB,EAAIoqB,SAAWulhB,GACxBoC,wBAAyB,KACzBd,QAASjxiB,EAAIixiB,SAAW,KACxBl+hB,GAAI/S,EAAI+S,IAAM,MAOlB,OALc,MAAV/S,EAAI+S,IACJi8hB,EAAc,WACV2C,GAAuB3xiB,EAAI+S,IAAM/S,EAAIvS,OAGtC43B,EAYX,SAAS2shB,GAAmBvkjB,EAAM8sF,GAC9B,OAAOy0d,EAAc,WACjB,IAAMiD,EAAcC,GAAezkjB,GAAM,GACzCwkjB,EAAYH,aAAev3d,EAAMu3d,cAAgBnC,GACjDsC,EAAY9riB,QAAUo0E,EAAMp0E,SAAWwpiB,GACvCsC,EAAY7nhB,QAAUmwD,EAAMnwD,SAAWulhB,KA0D/C,SAAS0B,GAAavmiB,EAAK0vG,GACvB,GAAW,MAAP1vG,EACA,OAAO2kiB,GACX,IAAM0C,EAAY,GAClB,IAAK,IAAMC,KAAetniB,EACtB,GAAIA,EAAI2vB,eAAe23gB,GAAc,CACjC,IAAIC,EAAavniB,EAAIsniB,GACjBE,EAAeD,EACf/6iB,MAAMyL,QAAQsviB,KACdC,EAAeD,EAAW,GAC1BA,EAAaA,EAAW,IAE5BF,EAAUE,GAAcD,EACpB53b,IACCA,EAAU63b,GAAcC,GAIrC,OAAOH,EAkBX,IAAMI,GAAoBhC,GAiB1B,SAASiC,GAAaC,GAClB,MAAO,CACHhljB,KAAMgljB,EAAQhljB,KACdS,KAAMukjB,EAAQvkjB,KACd2D,QAAS,KACT6gjB,MAAuB,IAAjBD,EAAQC,KACdxsb,UAAWusb,EAAQhljB,KAAKgyB,UAAU8wJ,aAAe,MAQzD,SAASihY,GAAgB/jjB,GACrB,OAAOA,EAAKmijB,KAAgB,KAQhC,SAASsC,GAAezkjB,EAAMkljB,GAC1B,IAAMV,EAAcxkjB,EAAKuijB,KAAe,KACxC,IAAKiC,IAAiC,IAAlBU,EAChB,MAAM,IAAIvxhB,MAAJ,eAAkBoF,EAAU/4B,GAA5B,yCAEV,OAAOwkjB,EAgBX,IA4BMW,GAAgB,GAsDhBC,GAA0B,GAgBhC,SAASC,GAAQxkjB,GACb,OAAOgJ,MAAMyL,QAAQzU,IAAiC,iBAAhBA,EA7C7B,GAmDb,SAASykjB,GAAazkjB,GAClB,OAAOgJ,MAAMyL,QAAQzU,KAA0B,IAAhBA,EApDtB,GAsDb,SAAS0kjB,GAAmBC,GACxB,OAAmD,IAA7B,EAAdA,EAAMvlP,OAElB,SAASwlP,GAAgBD,GACrB,OAAmD,IAA7B,EAAdA,EAAMvlP,OAElB,SAASylP,GAAgBF,GACrB,OAAmD,IAA7B,EAAdA,EAAMvlP,OAElB,SAAS0lP,GAAepziB,GACpB,OAAwB,OAAjBA,EAAI3S,SAwIf,SAASgmjB,GAAc5ljB,EAAMkljB,GAKzB,OAJsBlljB,EAAKgtC,eAAe01gB,IAInB1ijB,EAAK0ijB,IAAkB,K,IAmB5C,G,8BACF,WAAY56gB,EAAepjC,EAAcm2J,GAAW,oBAChDv7J,KAAKwoC,cAAgBA,EACrBxoC,KAAKoF,aAAeA,EACpBpF,KAAKu7J,YAAcA,G,4BAKvB,WACI,OAAOv7J,KAAKu7J,gB,GAiCpB,SAASgrZ,KACL,OAAOC,GAEX,SAASA,GAAuBC,GAI5B,OAHIA,EAAW/ljB,KAAKgyB,UAAUizU,cAC1B8gN,EAAWxC,SAAWyC,IAEnBC,GAiBX,SAASA,KACL,IAAMC,EAAqBC,GAAsB7mjB,MAC3Co8E,EAAUwqe,aAA+D,EAASA,EAAmBxqe,QAC3G,GAAIA,EAAS,CACT,IAAM+3I,EAAWyyV,EAAmBzyV,SACpC,GAAIA,IAAauuV,GACbkE,EAAmBzyV,SAAW/3I,OAK9B,IAAK,IAAIz/D,KAAOy/D,EACZ+3I,EAASx3M,GAAOy/D,EAAQz/D,GAGhCiqiB,EAAmBxqe,QAAU,KAC7Bp8E,KAAK2lW,YAAYvpR,IAGzB,SAASsqe,GAAoB5yhB,EAAUvyB,EAAO+jjB,EAAYwB,GACtD,IAAMF,EAAqBC,GAAsB/yhB,IAarD,SAA+BA,EAAUwD,GACrC,OAAOxD,EAAQ,oBAAyBwD,EAbpCyvhB,CAAsBjzhB,EAAU,CAAEqgM,SAAUuuV,GAAWtme,QAAS,OAC9DA,EAAUwqe,EAAmBxqe,UAAYwqe,EAAmBxqe,QAAU,IACtE+3I,EAAWyyV,EAAmBzyV,SAC9BoxV,EAAevljB,KAAK0jjB,eAAe4B,GACnC0B,EAAiB7yV,EAASoxV,GAChCnpe,EAAQmpe,GAAgB,IAAI,GAAayB,GAAkBA,EAAe5hjB,aAAc7D,EAAO4yN,IAAauuV,IAC5G5uhB,EAASgzhB,GAAevljB,EAG5B,SAASsljB,GAAsB/yhB,GAC3B,OAAOA,EAAQ,qBAA0B,KA1C7CyyhB,GAAqBU,WAAY,EAuDjC,IAoCMC,GAAgB,6BAsClBC,QAAW1ijB,EAQf,SAAS2ijB,GAAYz8gB,GACjBw8gB,GAAWx8gB,EAQf,SAASyvU,KACL,YAAiB31W,IAAb0ijB,GACOA,GAEkB,oBAAbx8gB,SACLA,cADN,EAyBT,SAAS08gB,GAAqB9zb,GAC1B,QAAUA,EAASqH,OAEvB,IAGM0sb,GAAsB,CACxB5vb,eAJO,SAACrL,EAAak7b,GACrB,OAAOntM,OAoCX,SAASotM,GAAYjmjB,GACjB,KAAOgJ,MAAMyL,QAAQzU,IACjBA,EAAQA,EAviBH,GAyiBT,OAAOA,EAkCX,SAASkmjB,GAAiB99iB,EAAO+9iB,GAG7B,OAAOF,GAAYE,EAAM/9iB,IAU7B,SAASg+iB,GAAiBzB,EAAOwB,GAK7B,OAFaF,GAAYE,EAAMxB,EAAMv8iB,QAuBzC,SAASi+iB,GAASzD,EAAOx6iB,GAKrB,OAFcw6iB,EAAMr0iB,KAAKnG,GAK7B,SAAS4/X,GAAKt3X,EAAMtI,GAEhB,OAAOsI,EAAKtI,GAEhB,SAASk+iB,GAAyBC,EAAW1miB,GAGzC,IAAM2miB,EAAY3miB,EAAS0miB,GAE3B,OADc/B,GAAQgC,GAAaA,EAAYA,EAloBtC,GA6oBb,SAASC,GAAiBx7hB,GACtB,IAAMjrB,EALV,SAAyBirB,GAErB,OAAOA,EAAM,eAA2B,KAG1By7hB,CAAgBz7hB,GAC9B,OAAIjrB,EACOgJ,MAAMyL,QAAQzU,GAASA,EAAQA,EAAMmmjB,MAEzC,KAGX,SAASQ,GAAej2iB,GACpB,OAAgD,IAA1B,EAAdA,EAppBE,IA4pBd,SAASk2iB,GAA6Bl2iB,GAClC,OAA8C,MAAxB,IAAdA,EA7pBE,IAmqBd,SAASm2iB,GAAY9hjB,EAAQqD,GACzB,OAAIA,QACO,KAEJrD,EAAOqD,GAMlB,SAAS0+iB,GAAuBX,GAC5BA,EAAMY,IAAuB,EASjC,SAASC,GAA4BC,EAAY3xZ,GAC7C2xZ,EArrBkC,IAqrBW3xZ,EAG7C,IAFA,IAAI4xZ,EAAkBD,EAClB5hhB,EAAS4hhB,EAzrBF,GA0rBO,OAAX5hhB,IACU,IAAXiwH,GAAmE,IAAnD4xZ,EAzrBY,KA0rBb,IAAZ5xZ,GAAoE,IAAnD4xZ,EA1rBQ,KA2rB9B7hhB,EA3rB8B,IA2rBWiwH,EACzC4xZ,EAAkB7hhB,EAClBA,EAASA,EA/rBF,GA0sBf,IAAM8hhB,GAAmB,CACrBC,OAAQC,GAAa,MACrBC,iBAAiB,EACjBC,wBAAwB,GAmB5B,SAASC,KACL,OAAOL,GAAiBG,gBAiD5B,SAASG,KACL,OAAON,GAAiBC,OAAOjB,MAKnC,SAASuB,KACL,OAAOP,GAAiBC,OAAOxE,MAanC,SAAS+E,GAAcC,GACnBT,GAAiBC,OAAOS,aAAeD,EAE3C,SAASE,KAEL,IADA,IAAIC,EAAeC,KACK,OAAjBD,GAA+C,KAAtBA,EAAa5ojB,MACzC4ojB,EAAeA,EAAa1ihB,OAEhC,OAAO0ihB,EAEX,SAASC,KACL,OAAOb,GAAiBC,OAAOW,aAEnC,SAASE,KACL,IAAMb,EAASD,GAAiBC,OAC1BW,EAAeX,EAAOW,aAC5B,OAAOX,EAAO1Z,SAAWqa,EAAeA,EAAa1ihB,OAEzD,SAAS6ihB,GAAgBvD,EAAOjX,GAE5B,IAAM0Z,EAASD,GAAiBC,OAChCA,EAAOW,aAAepD,EACtByC,EAAO1Z,SAAWA,EAEtB,SAASya,KACL,OAAOhB,GAAiBC,OAAO1Z,SAEnC,SAAS0a,KACLjB,GAAiBC,OAAO1Z,UAAW,EAQvC,SAAS6Z,KAEL,OAAOJ,GAAiBI,uBAE5B,SAASc,GAA0Bh3hB,GAC/B81hB,GAAiBI,uBAAyBl2hB,EAG9C,SAASi3hB,KACL,IAAMlB,EAASD,GAAiBC,OAC5Bh/iB,EAAQg/iB,EAAOmB,iBAInB,OAHe,IAAXngjB,IACAA,EAAQg/iB,EAAOmB,iBAAmBnB,EAAOxE,MAAM4F,mBAE5CpgjB,EAEX,SAASqgjB,KACL,OAAOtB,GAAiBC,OAAOsB,aAKnC,SAASC,KACL,OAAOxB,GAAiBC,OAAOsB,eAEnC,SAASE,GAAsBjziB,GAC3B,IAAMyxiB,EAASD,GAAiBC,OAC1Bh/iB,EAAQg/iB,EAAOsB,aAErB,OADAtB,EAAOsB,aAAetB,EAAOsB,aAAe/yiB,EACrCvN,EAKX,SAASygjB,GAAeC,GACpB3B,GAAiBC,OAAO2B,OAASD,EA+BrC,SAASE,GAAyBC,GAC9B9B,GAAiBC,OAAO6B,sBAAwBA,EAQpD,SAASC,GAAuBC,GAC5B,IAAMF,EAAwB9B,GAAiBC,OAAO6B,sBACtD,OAAkC,IAA3BA,EAA+B,KAAOE,EAAMF,GAEvD,SAASG,KACL,OAAOjC,GAAiBC,OAAOxgQ,kBAEnC,SAASyiQ,GAAqBrpjB,GAC1BmnjB,GAAiBC,OAAOxgQ,kBAAoB5mT,EAOhD,SAASspjB,GAAoBnD,GACzB,IAAMvD,EAAQuD,EAv6BJ,GAy6BV,OAAmB,IAAfvD,EAAMzjjB,KAECyjjB,EAAM2G,UAKE,IAAf3G,EAAMzjjB,KACCgnjB,EA56BA,GA+6BJ,KAeX,SAASqD,GAAQrD,EAAOxB,EAAOvlP,GAE3B,GAAIA,EAAQ+gP,EAAYsJ,SAAU,CAI9B,IAFA,IAAIC,EAAc/E,EACdgF,EAAcxD,IAIM,QADpBuD,EAAcA,EAAYrkhB,SACI+5R,EAAQ+gP,EAAYyJ,MAE1B,QADpBF,EAAcJ,GAAoBK,MAMlCA,EAAcA,EAAYE,IAItB,GAAAH,EAAYvqjB,SAQxB,GAAoB,OAAhBuqjB,EAEA,OAAO,EAGP/E,EAAQ+E,EACRvD,EAAQwD,EAIhB,IAAMvC,EAASD,GAAiBC,OAAS0C,KAGzC,OAFA1C,EAAOW,aAAepD,EACtByC,EAAOjB,MAAQA,GACR,EAaX,SAAS4D,GAAUC,GAGf,IAAMC,EAAYH,KAYZlH,EAAQoH,EAxgCJ,GAygCV7C,GAAiBC,OAAS6C,EAE1BA,EAAUlC,aAAenF,EAAMzve,WAC/B82e,EAAU9D,MAAQ6D,EAClBC,EAAUrH,MAAQA,EAClBqH,EAAUpC,aAAemC,EACzBC,EAAUvB,aAAe9F,EAAM4F,kBAC/ByB,EAAUlB,QAAS,EAKvB,SAASe,KACL,IAAMI,EAAgB/C,GAAiBC,OACjC+C,EAAgC,OAAlBD,EAAyB,KAAOA,EAAczxa,MAElE,OADkC,OAAhB0xa,EAAuB9C,GAAa6C,GAAiBC,EAG3E,SAAS9C,GAAahihB,GAClB,IAAM+hhB,EAAS,CACXW,aAAc,KACdra,UAAU,EACVyY,MAAO,KACPvD,MAAO,KACPp1L,eAAgB,EAChBq6L,aAAc,KACduC,kBAAmB,EACnBC,iBAAkB,KAClBpB,uBAAwB,EACxBV,kBAAmB,EACnBG,cAAe,EACf9hQ,kBAAmB,EACnBvhR,OAAQA,EACRozG,MAAO,KACPswa,QAAQ,GAGZ,OADW,OAAX1jhB,IAAoBA,EAAOozG,MAAQ2ua,GAC5BA,EAWX,SAASkD,KACL,IAAMC,EAAYpD,GAAiBC,OAInC,OAHAD,GAAiBC,OAASmD,EAAUllhB,OACpCklhB,EAAUxC,aAAe,KACzBwC,EAAUpE,MAAQ,KACXoE,EAQX,IAAMC,GAAUF,GAShB,SAASG,KACL,IAAMF,EAAYD,KAClBC,EAAU7c,UAAW,EACrB6c,EAAU3H,MAAQ,KAClB2H,EAAU/8L,eAAiB,EAC3B+8L,EAAU1C,aAAe,KACzB0C,EAAUH,kBAAoB,EAC9BG,EAAUtB,uBAAyB,EACnCsB,EAAUF,iBAAmB,KAC7BE,EAAUhC,kBAAoB,EAC9BgC,EAAU7B,cAAgB,EAC1B6B,EAAU3jQ,kBAAoB,EAElC,SAAS8jQ,GAAgBj2d,GAGrB,OAFqB0yd,GAAiBC,OAAOS,aAIjD,SAAqB8C,EAAcC,GAC/B,KAAOD,EAAe,GAGlBC,EAAcA,EAAYf,IAC1Bc,IAEJ,OAAOC,EAVHC,CAAYp2d,EAAO0yd,GAAiBC,OAAOS,eAvlCnC,GAymChB,SAASiD,KACL,OAAO3D,GAAiBC,OAAO55L,cAWnC,SAASu9L,GAAiB3ijB,GAKtB++iB,GAAiBC,OAAO55L,cAAgBplX,EAK5C,SAAS4ijB,KACL,IAAM5D,EAASD,GAAiBC,OAChC,OAAOf,GAASe,EAAOxE,MAAOwE,EAAO55L,eAOzC,SAASy9L,KACL9D,GAAiBC,OAAOiD,iBAAmB1E,GAgB/C,SAASuF,KAQL/D,GAAiBC,OAAOiD,iBAAmB,KA4D/C,SAASc,GAAuBvI,EAAO+B,GAKnC,IAAK,IAAIr+iB,EAAIq+iB,EAAMyG,eAAgBvjjB,EAAM88iB,EAAM0G,aAAc/kjB,EAAIuB,EAAKvB,IAAK,CACvE,IAEMgljB,EAFe1I,EAAMr0iB,KAAKjI,GAEInH,KAAKgyB,UACjCo6hB,EAAgGD,EAAhGC,mBAAoBC,EAA4EF,EAA5EE,sBAAuBr6gB,EAAqDm6gB,EAArDn6gB,gBAAiBs6gB,EAAoCH,EAApCG,mBAAoBxpY,EAAgBqpY,EAAhBrpY,YACpFspY,IACC3I,EAAM8I,eAAiB9I,EAAM8I,aAAe,KAAKrpjB,MAAMiE,EAAGiljB,GAE3DC,KACC5I,EAAM8I,eAAiB9I,EAAM8I,aAAe,KAAKrpjB,KAAKiE,EAAGkljB,IACzD5I,EAAM+I,oBAAsB/I,EAAM+I,kBAAoB,KAAKtpjB,KAAKiE,EAAGkljB,IAEpEr6gB,IACCyxgB,EAAMgJ,YAAchJ,EAAMgJ,UAAY,KAAKvpjB,MAAMiE,EAAG6qC,GAErDs6gB,KACC7I,EAAMgJ,YAAchJ,EAAMgJ,UAAY,KAAKvpjB,KAAKiE,EAAGmljB,IACnD7I,EAAMiJ,iBAAmBjJ,EAAMiJ,eAAiB,KAAKxpjB,KAAKiE,EAAGmljB,IAE/C,MAAfxpY,IACC2gY,EAAMkJ,eAAiBlJ,EAAMkJ,aAAe,KAAKzpjB,KAAKiE,EAAG27K,IAoCtE,SAAS8pY,GAAkB5F,EAAO14d,EAAO84d,GACrCyF,GAAU7F,EAAO14d,EAAO,EAA4B84d,GAexD,SAAS0F,GAAyB9F,EAAO14d,EAAOy+d,EAAW3F,IAGnC,EAAfJ,EAnzCK,MAmzC0C+F,GAChDF,GAAU7F,EAAO14d,EAAOy+d,EAAW3F,GAG3C,SAAS4F,GAAwBhG,EAAO+F,GAGpC,IAAI9sP,EAAQ+mP,EA1zCF,IA2zCG,EAAR/mP,KAAwC8sP,IACzC9sP,GAAS,KAET+mP,EA9zCM,GA6zCN/mP,GAAS,GAkBjB,SAAS4sP,GAAUpB,EAAax8gB,EAAK89gB,EAAWE,GAS5C,IANA,IAGMC,EAAqC,MAApBD,EAA2BA,GAAoB,EAChE7qgB,EAAMnT,EAAIxrC,OAAS,EACrB0pjB,EAAqB,EAChBhmjB,OAN+BpD,IAArBkpjB,EACqB,MAAnCxB,EAAY7D,IACb,EAIqBzgjB,EAAIi7C,EAAKj7C,IAE9B,GAAoB,iBADP8nC,EAAI9nC,EAAI,IAGjB,GADAgmjB,EAAqBl+gB,EAAI9nC,GACD,MAApB8ljB,GAA4BE,GAAsBF,EAClD,WAIeh+gB,EAAI9nC,GAAK,IAExBskjB,EAAY7D,KAAwB,QACpCuF,EAAqBD,IAAqC,GAAnBA,KACvCE,GAAS3B,EAAasB,EAAW99gB,EAAK9nC,GACtCskjB,EAAY7D,KAC4B,WAAnC6D,EAAY7D,KAAuEzgjB,EAChF,GAEZA,IAYZ,SAASimjB,GAAS3B,EAAasB,EAAW99gB,EAAK9nC,GAC3C,IAAMkmjB,EAAap+gB,EAAI9nC,GAAK,EACtBmmjB,EAAOr+gB,EAAI9nC,EAAI,GAEf61iB,EAAYyO,EADK4B,GAAcp+gB,EAAI9nC,GAAK8nC,EAAI9nC,IAElD,GAAIkmjB,GAGA,GAF8B5B,EA53CxB,IA43C8C,GAG/CA,EAAY7D,KAAwB,KACf,EAArB6D,EAh4CC,MAg4CoDsB,EAAW,CACjEtB,EAj4CE,IAi4CoB,KAEtB,IACI6B,EAAK94hB,KAAKwohB,GADd,gBAUJ,IACIsQ,EAAK94hB,KAAKwohB,GADd,UAgBR,IAAMuQ,IAAsB,EA+FtB,G,YACF,WAIAnpjB,EAIAopjB,EAAgBC,GAAoB,oBAChCnujB,KAAK8E,QAAUA,EAKf9E,KAAKoujB,WAAY,EAGjBpujB,KAAKqujB,oBAAsBH,EAC3BlujB,KAAKsujB,WAAaH,IAkI1B,SAASI,GAAgBh7b,EAAUwiG,EAAQ9kG,GAGvC,IAFA,IAAMu9b,EAASnH,GAAqB9zb,GAChC1rH,EAAI,EACDA,EAAIopH,EAAM9sH,QAAQ,CACrB,IAAM5C,EAAQ0vH,EAAMppH,GACpB,GAAqB,iBAAVtG,EAAoB,CAG3B,GAAc,IAAVA,EACA,MAIJsG,IACA,IAAM4mjB,EAAex9b,EAAMppH,KACrBoyR,EAAWhpK,EAAMppH,KACjB6mjB,EAAUz9b,EAAMppH,KAEtB2mjB,EACIj7b,EAAS1kH,aAAaknN,EAAQkkE,EAAUy0R,EAASD,GACjD14V,EAAO44V,eAAeF,EAAcx0R,EAAUy0R,OAEjD,CAED,IAAM,EAAWntjB,EACX,EAAU0vH,IAAQppH,GAGpB+mjB,GAAgB,GACZJ,GACAj7b,EAAS5C,YAAYolG,EAAQ,EAAU,GAI3Cy4V,EACIj7b,EAAS1kH,aAAaknN,EAAQ,EAAU,GACxCA,EAAOlnN,aAAa,EAAU,GAEtChH,KAOR,OAAOA,EASX,SAASgnjB,GAA0Bt1gB,GAC/B,OAAkB,IAAXA,GAA0C,IAAXA,GACvB,IAAXA,EAER,SAASq1gB,GAAgBztjB,GAIrB,OAA8B,KAAvBA,EAAK0uC,WAAW,GAU3B,SAASi/gB,GAAeC,EAAKvjR,GACzB,GAAY,OAARA,GAA+B,IAAfA,EAAIrnS,aAGnB,GAAY,OAAR4qjB,GAA+B,IAAfA,EAAI5qjB,OAEzB4qjB,EAAMvjR,EAAIhiS,aAIV,IADA,IAAIwljB,GAAa,EACRnnjB,EAAI,EAAGA,EAAI2jS,EAAIrnS,OAAQ0D,IAAK,CACjC,IAAMyJ,EAAOk6R,EAAI3jS,GACG,iBAATyJ,EACP09iB,EAAY19iB,EAGM,IAAd09iB,GAMAC,GAAmBF,EAAKC,EAAW19iB,EAAM,MAHrB,IAAf09iB,GACS,IAAdA,EAE+CxjR,IAAM3jS,GAIN,MAK/D,OAAOknjB,EAWX,SAASE,GAAmBF,EAAKx1gB,EAAQu0Q,EAAMC,EAAMxsT,GACjD,IAAIsG,EAAI,EAEJqnjB,EAAuBH,EAAI5qjB,OAE/B,IAAgB,IAAZo1C,EACA21gB,GAAwB,OAGxB,KAAOrnjB,EAAIknjB,EAAI5qjB,QAAQ,CACnB,IAAMgrjB,EAAWJ,EAAIlnjB,KACrB,GAAwB,iBAAbsnjB,EAAuB,CAC9B,GAAIA,IAAa51gB,EAAQ,CACrB21gB,GAAwB,EACxB,MAEC,GAAIC,EAAW51gB,EAAQ,CAExB21gB,EAAuBrnjB,EAAI,EAC3B,QAMhB,KAAOA,EAAIknjB,EAAI5qjB,QAAQ,CACnB,IAAMmN,EAAOy9iB,EAAIlnjB,GACjB,GAAoB,iBAATyJ,EAGP,MAEC,GAAIA,IAASw8S,EAAM,CAEpB,GAAa,OAATC,EAIA,YAHc,OAAVxsT,IACAwtjB,EAAIlnjB,EAAI,GAAKtG,IAIhB,GAAIwsT,IAASghQ,EAAIlnjB,EAAI,GAEtB,YADAknjB,EAAIlnjB,EAAI,GAAKtG,GAKrBsG,IACa,OAATkmT,GACAlmT,IACU,OAAVtG,GACAsG,KAGsB,IAA1BqnjB,IACAH,EAAIxmhB,OAAO2mhB,EAAsB,EAAG31gB,GACpC1xC,EAAIqnjB,EAAuB,GAE/BH,EAAIxmhB,OAAO1gC,IAAK,EAAGimT,GACN,OAATC,GACAghQ,EAAIxmhB,OAAO1gC,IAAK,EAAGkmT,GAET,OAAVxsT,GACAwtjB,EAAIxmhB,OAAO1gC,IAAK,EAAGtG,GAY3B,SAAS6tjB,GAAkBC,GACvB,OAAOA,IAAmBpB,GAE9B,SAASqB,GAAuBD,GAM5B,OAAwB,MAAjBA,EAcX,SAASE,GAAsBj1hB,EAAUk1hB,GAOrC,IANA,IAAIC,EAAyCn1hB,GAZpB,GAarBo1hB,EAAaF,EAKVC,EAAa,GAChBC,EAAaA,EAAWtE,IACxBqE,IAEJ,OAAOC,EA8CX,IAAIC,IAAuB,EAC3B,SAASC,GAAwB3vjB,GAC7B,IAAMq5T,EAAWq2P,GAEjB,OADAA,GAAuB1vjB,EAChBq5T,EAOX,IASIu2P,GAAkB,EA0CtB,SAASC,GAA+B5J,EAAOwB,GAC3C,IAAMqI,EAAwBC,GAAiB9J,EAAOwB,GACtD,IAA+B,IAA3BqI,EACA,OAAOA,EAEX,IAAM5L,EAAQuD,EAj+DJ,GAk+DNvD,EAAM8L,kBACN/J,EAAMgK,cAAgBxI,EAAMvjjB,OAC5BgsjB,GAAYhM,EAAMr0iB,KAAMo2iB,GACxBiK,GAAYzI,EAAO,MACnByI,GAAYhM,EAAMiM,UAAW,OAEjC,IAAMC,EAAYC,GAA0BpK,EAAOwB,GAC7CwI,EAAgBhK,EAAMgK,cAG5B,GAAId,GAAkBiB,GAMlB,IALA,IAAME,EAAcjB,GAAuBe,GACrCnF,EAAcqE,GAAsBc,EAAW3I,GAC/Ch/W,EAAawiX,EA/+Db,GA++DgCp7iB,KAG7BjI,EAAI,EAAGA,EAAI,EAAoBA,IACpC6/iB,EAAMwI,EAAgBrojB,GAAKqjjB,EAAYqF,EAAc1ojB,GAAK6gM,EAAW6nX,EAAc1ojB,GAI3F,OADA6/iB,EAAMwI,EAAgB,GAAkBG,EACjCH,EAEX,SAASC,GAAYxghB,EAAK80B,GACtB90B,EAAI/rC,KAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG6gE,GAErC,SAASurf,GAAiB9J,EAAOwB,GAC7B,OAA6B,IAAzBxB,EAAMgK,eAGLhK,EAAMt/gB,QAAUs/gB,EAAMt/gB,OAAOsphB,gBAAkBhK,EAAMgK,eAGN,OAAhDxI,EAAMxB,EAAMgK,cAAgB,IACpB,EAIDhK,EAAMgK,cAUrB,SAASI,GAA0BpK,EAAOwB,GACtC,GAAIxB,EAAMt/gB,SAA0C,IAAhCs/gB,EAAMt/gB,OAAOsphB,cAG7B,OAAOhK,EAAMt/gB,OAAOsphB,cAWxB,IANA,IAAIM,EAAwB,EACxBvF,EAAc,KACdwF,EAAc/I,EAIK,OAAhB+I,GAAsB,CAEzB,IAAMtM,EAAQsM,EAniER,GAoiEAC,EAAYvM,EAAMzjjB,KAexB,GAAoB,QAXhBuqjB,EAHc,IAAdyF,EAGcvM,EAAM2G,UAED,IAAd4F,EAGSD,EAxiEX,GA4iEW,MAId,OAAOxC,GAMX,GAFAuC,IACAC,EAAcA,EAAYrF,KACS,IAA/BH,EAAYiF,cAEZ,OAAQjF,EAAYiF,cACfM,GAAyB,GAGtC,OAAOvC,GASX,SAAS0C,GAAmBT,EAAe/L,EAAOt/iB,IA/IlD,SAAkBqrjB,EAAe/L,EAAOzjjB,GAEpC,IAAIslB,EACgB,iBAATtlB,EACPslB,EAAKtlB,EAAKmvC,WAAW,IAAM,EAEtBnvC,EAAKgtC,eAAe21gB,MACzBr9hB,EAAKtlB,EAAK2ijB,KAIJ,MAANr9hB,IACAA,EAAKtlB,EAAK2ijB,IAAiBwM,MAI/B,IAAMe,EAjCSC,IAiCG7qiB,EAQlBm+hB,EAAMr0iB,KAAKogjB,GAAiBU,GAnCN,KA+BT,GAAKA,EA4HlBE,CAASZ,EAAe/L,EAAOt/iB,GA4EnC,SAASksjB,GAAqBhP,EAAel9iB,EAAO87T,GAChD,GAAIA,EAAQ+gP,EAAY5kK,SACpB,OAAOilK,EAGPvB,EAA2B37iB,EAAO,gBAY1C,SAASmsjB,GAA+BtJ,EAAO7ijB,EAAO87T,EAAOohP,GAKzD,GAJIphP,EAAQ+gP,EAAY5kK,eAA8Br4Y,IAAlBs9iB,IAEhCA,EAAgB,MAEoC,IAAnDphP,GAAS+gP,EAAYuP,KAAOvP,EAAYyJ,OAAc,CACvD,IAAM+F,EAAiBxJ,EAtqEd,GA0qEHyJ,EAA+BvP,OAAwBn9iB,GAC7D,IACI,OAAIysjB,EACOA,EAAeh/iB,IAAIrN,EAAOk9iB,EAAephP,EAAQ+gP,EAAY5kK,UAG7DglK,EAAmBj9iB,EAAOk9iB,EAAephP,EAAQ+gP,EAAY5kK,UAL5E,QASI8kK,EAAwBuP,IAGhC,OAAOJ,GAAqBhP,EAAel9iB,EAAO87T,GAkBtD,SAASywP,GAAsBlL,EAAOwB,EAAO7ijB,GAAiD,IAA1C87T,EAA0C,uDAAlC+gP,EAAY2P,QAAStP,EAAa,uCAC1F,GAAc,OAAVmE,EAAgB,CAChB,IAAM0K,EAAYU,GAAsBzsjB,GAGxC,GAAyB,mBAAd+rjB,EAA0B,CACjC,IAAK7F,GAAQrD,EAAOxB,EAAOvlP,GAGvB,OAAQA,EAAQ+gP,EAAYyJ,KACxB4F,GAAqBhP,EAAel9iB,EAAO87T,GAC3CqwP,GAA+BtJ,EAAO7ijB,EAAO87T,EAAOohP,GAE5D,IACI,IAAMxgjB,EAAQqvjB,IACd,GAAa,MAATrvjB,GAAmBo/T,EAAQ+gP,EAAY5kK,SAIvC,OAAOv7Y,EAHPi/iB,EAA2B37iB,GAHnC,QAUIknjB,WAGH,GAAyB,iBAAd6E,EAAwB,CAIpC,IAAIW,EAAgB,KAChBrB,EAAgBF,GAAiB9J,EAAOwB,GACxC2H,EAAiBpB,GACjBuD,EAAmB7wP,EAAQ+gP,EAAYyJ,KAAOzD,EAAM+J,IA7uErD,GA6uE2F,KAiB9F,MAduB,IAAnBvB,GAAwBvvP,EAAQ+gP,EAAYsJ,aAC5CqE,GAAoC,IAAnBa,EAAuBI,GAA0BpK,EAAOwB,GACrEA,EAAMwI,EAAgB,MACHjC,IAAuByD,GAAmB/wP,GAAO,IAIpE4wP,EAAgB7J,EA5vEtB,GA6vEMwI,EAAgBZ,GAAuBD,GACvC3H,EAAQ6H,GAAsBF,EAAgB3H,IAL9CwI,GAAiB,IAUC,IAAnBA,GAAsB,CAGzB,IAAM/L,EAAQuD,EAtwEhB,GAywEE,GAAIiK,GAAcf,EAAWV,EAAe/L,EAAMr0iB,MAAO,CAIrD,IAAMgkB,EAAW89hB,GAAuB1B,EAAexI,EAAO7ijB,EAAO0sjB,EAAe5wP,EAAO6wP,GAC3F,GAAI19hB,IAAa+9hB,GACb,OAAO/9hB,GAGfu7hB,EAAiB3H,EAAMwI,EAAgB,MAChBjC,IACnByD,GAAmB/wP,EAAO+mP,EApxEhC,GAoxE6C53iB,KAAKogjB,EAAgB,KAAmBsB,IAC/EG,GAAcf,EAAWV,EAAexI,IAGxC6J,EAAgBpN,EAChB+L,EAAgBZ,GAAuBD,GACvC3H,EAAQ6H,GAAsBF,EAAgB3H,IAM9CwI,GAAiB,IAKjC,OAAOc,GAA+BtJ,EAAO7ijB,EAAO87T,EAAOohP,GAE/D,IAAM8P,GAAY,GAClB,SAASC,KACL,OAAO,IAAI,GAAazI,KAAmBL,MAE/C,SAAS4I,GAAuB1B,EAAexI,EAAO7ijB,EAAO0sjB,EAAe5wP,EAAO6wP,GAC/E,IAAMO,EAAerK,EA5yEX,GA6yEJxB,EAAQ6L,EAAajijB,KAAKogjB,EAAgB,GAsB1C8B,EAAgBC,GAA0B/L,EAAO6L,EAAcltjB,EAnBrB,MAAjB0sjB,EAQ1BpL,GAAgBD,IAAUyJ,GAO1B4B,GAAiBQ,GAAqD,IAAtB,EAAb7L,EAAMxljB,MAGnBigU,EAAQ+gP,EAAYyJ,MAASqG,IAAqBtL,GAE7E,OAAsB,OAAlB8L,EACOE,GAAkBxK,EAAOqK,EAAcC,EAAe9L,GAGtD2L,GAaf,SAASI,GAA0B/L,EAAO/B,EAAOt/iB,EAAOstjB,EAAwBC,GAU5E,IATA,IAAMC,EAAsBnM,EAAMoM,gBAC5BC,EAAepO,EAAMr0iB,KACrB0ijB,EAAyC,QAAtBH,EACnBI,EAAkBvM,EAAMyG,eAExB+F,EAAwBL,GAAuB,GAG/Cx6d,EAAWu6d,EAAoBI,EAAmBE,EAJnCxM,EAAM0G,aAKlB/kjB,EAHasqjB,EAAyBK,EAAmBA,EAAmBE,EAGzD7qjB,EAAIgwF,EAAUhwF,IAAK,CAC3C,IAAM8qjB,EAAqBJ,EAAa1qjB,GACxC,GAAIA,EAAI4qjB,GAAmB5tjB,IAAU8tjB,GACjC9qjB,GAAK4qjB,GAAmBE,EAAmBjyjB,OAASmE,EACpD,OAAOgD,EAGf,GAAIuqjB,EAAmB,CACnB,IAAMQ,EAASL,EAAaE,GAC5B,GAAIG,GAAUvM,GAAeuM,IAAWA,EAAOlyjB,OAASmE,EACpD,OAAO4tjB,EAGf,OAAO,KASX,SAASP,GAAkBxK,EAAOvD,EAAOx6iB,EAAOu8iB,GAC5C,IAAI3kjB,EAAQmmjB,EAAM/9iB,GACZ+gjB,EAAQvG,EAAMr0iB,KACpB,GAAcvO,aAp2BQ,GAo2BA,CAClB,IAAMuD,EAAUvD,EACZuD,EAAQspjB,WA5yGpB,SAAoCvpjB,EAAOssI,GAEvC,MAAM,IAAI,EAAa,MAAjB,iDAA6FtsI,GAA7F,OADuE,KA4yGrEgujB,CAA2BtS,EAAkBmK,EAAM/gjB,KAEvD,IAAMmpjB,EAA+BlD,GAAwB9qjB,EAAQupjB,qBACrEvpjB,EAAQspjB,WAAY,EACpB,IAAM+C,EAA+BrsjB,EAAQwpjB,WAAa1M,EAAwB98iB,EAAQwpjB,YAAc,KACxFvD,GAAQrD,EAAOxB,EAAOxE,EAAY2P,SAGlD,IACI9vjB,EAAQmmjB,EAAM/9iB,GAAS7E,EAAQA,aAAQL,EAAWimjB,EAAOhD,EAAOxB,GAO5D/B,EAAM8L,iBAAmBtmjB,GAASu8iB,EAAMyG,gBA1sCxD,SAA+BoG,EAAgBC,EAAc7O,GAEzD,MAA6C6O,EAAatyjB,KAAKgyB,UAA1C29F,EAArB,EAAqBA,SAAUq1O,EAA/B,EAA+BA,UAC/B,GADA,EAAQC,YACS,CACb,IAAMstN,EAAmBzM,GAAuBwM,IAC/C7O,EAAM+O,gBAAkB/O,EAAM+O,cAAgB,KAAKtvjB,KAAKmvjB,EAAgBE,IACxE9O,EAAMgP,qBAAuBhP,EAAMgP,mBAAqB,KACpDvvjB,KAAKmvjB,EAAgBE,GAE1B5ic,IACC8zb,EAAM+O,gBAAkB/O,EAAM+O,cAAgB,KAAKtvjB,KAAK,EAAImvjB,EAAgB1ic,GAE7Eq1O,KACCy+M,EAAM+O,gBAAkB/O,EAAM+O,cAAgB,KAAKtvjB,KAAKmvjB,EAAgBrtN,IACxEy+M,EAAMgP,qBAAuBhP,EAAMgP,mBAAqB,KAAKvvjB,KAAKmvjB,EAAgBrtN,IA8rC3E0tN,CAAsBzpjB,EAAO+gjB,EAAM/gjB,GAAQw6iB,GAVnD,QAcqC,OAAjCgN,GACIvP,EAAwBuP,GAC5BvB,GAAwBkD,GACxBhujB,EAAQspjB,WAAY,EACpBrC,MAGR,OAAOxqjB,EAcX,SAAS+vjB,GAAsBzsjB,GAE3B,GAAqB,iBAAVA,EACP,OAAOA,EAAMgrC,WAAW,IAAM,EAElC,IAAMwjhB,EAENxujB,EAAM6oC,eAAe21gB,IAAiBx+iB,EAAMw+iB,SAAiB5+iB,EAE7D,MAAuB,iBAAZ4ujB,EACHA,GAAW,EAtgBJxC,IAugBAwC,EAKAvB,GAIJuB,EAGf,SAAS1B,GAAcf,EAAWV,EAAeoD,GAW7C,SAHcA,EAAapD,GAAiBU,GArhBtB,IAihBT,GAAKA,GAUtB,SAASc,GAAmB/wP,EAAO4yP,GAC/B,QAAS5yP,EAAQ+gP,EAAYuP,MAAWtwP,EAAQ+gP,EAAYyJ,MAAQoI,G,IAElE,G,8BACF,WAAYC,EAAQC,GAAM,oBACtBzzjB,KAAKwzjB,OAASA,EACdxzjB,KAAKyzjB,OAASA,G,kBAElB,SAAI5ujB,EAAOk9iB,GACP,OAAOqP,GAAsBpxjB,KAAKwzjB,OAAQxzjB,KAAKyzjB,OAAQ5ujB,OAAOJ,EAAWs9iB,O,GAMjF,SAAS2R,GAAsBhzjB,GAC3B,OAAOuhjB,EAAc,WAMjB,IALA,IAAM0R,EAAiBjzjB,EAAKgyB,UAAUwd,YAChC0jhB,EAAaD,EAAevQ,KAAmByQ,GAAaF,GAC5DG,EAAkBt3iB,OAAOkW,UAC3BkU,EAASpqB,OAAO24H,eAAez0I,EAAKgyB,WAAWwd,YAE5CtJ,GAAUA,IAAWkthB,GAAiB,CACzC,IAAMhvjB,EAAU8hC,EAAOw8gB,KAAmByQ,GAAajthB,GAMvD,GAAI9hC,GAAWA,IAAY8ujB,EACvB,OAAO9ujB,EAEX8hC,EAASpqB,OAAO24H,eAAevuG,GAMnC,OAAO,SAAApmC,GAAC,OAAI,IAAIA,KAGxB,SAASqzjB,GAAanzjB,GAClB,OAAIy/iB,EAAaz/iB,GACN,WACH,IAAMoE,EAAU+ujB,GAAa3T,EAAkBx/iB,IAC/C,OAAOoE,GAAWA,KAGnBwhjB,GAAc5ljB,GAezB,SAASqzjB,GAAkBC,GACvB,OA/ZJ,SAA6B9N,EAAO8N,GAGhC,GAAyB,UAArBA,EACA,OAAO9N,EAAMjhhB,QAEjB,GAAyB,UAArB+uhB,EACA,OAAO9N,EAAMptiB,OAEjB,IAAMm4G,EAAQi1b,EAAMj1b,MACpB,GAAIA,EAGA,IAFA,IAAMgjc,EAAchjc,EAAM9sH,OACtB0D,EAAI,EACDA,EAAIosjB,GAAa,CACpB,IAAM1yjB,EAAQ0vH,EAAMppH,GAEpB,GAAIgnjB,GAA0BttjB,GAC1B,MAEJ,GAAc,IAAVA,EAKAsG,GAAQ,OAEP,GAAqB,iBAAVtG,EAGZ,IADAsG,IACOA,EAAIosjB,GAAmC,iBAAbhjc,EAAMppH,IACnCA,QAGH,IAAItG,IAAUyyjB,EACf,OAAO/ic,EAAMppH,EAAI,GAGjBA,GAAQ,GAIpB,OAAO,KAsXAqsjB,CAAoB7K,KAAmB2K,GAUlD,IACMG,GAAa,iBACbC,GAAgB,qBAmCtB,SAASC,GAAiBthiB,GACtB,OAAO,WACH,GAAIA,EAAO,CACP,IAAMjf,EAASif,EAAK,WAAL,aACf,IAAK,IAAM+hB,KAAYhhC,EACnB9T,KAAK80C,GAAYhhC,EAAOghC,KAKxC,SAASw/gB,GAAmBnzjB,EAAM4xB,EAAOwhiB,GACrC,OAAOtS,EAAc,WACjB,IAAMuS,EAAWH,GAAiBthiB,GAClC,SAAS0hiB,IAA6B,2BAAJ50jB,EAAI,yBAAJA,EAAI,gBAClC,GAAIG,gBAAgBy0jB,EAEhB,OADAD,EAAS78gB,MAAM33C,KAAMH,GACdG,KAEX,IAAM00jB,EAAqB,EAAID,EAAyB50jB,GAExD,OADA80jB,EAAeC,WAAaF,EACrBC,EACP,SAASA,EAAez9N,EAAK29N,EAAWlrjB,GAQpC,IALA,IAAMkyY,EAAa3kD,EAAIxpT,eAAeymhB,IAClCj9N,EAAIi9N,IACJ33iB,OAAOu3B,eAAemjT,EAAKi9N,GAAY,CAAE5yjB,MAAO,KAAM4yjB,IAGnDt4K,EAAW13Y,QAAUwF,GACxBkyY,EAAWj4Y,KAAK,MAGpB,OADCi4Y,EAAWlyY,GAASkyY,EAAWlyY,IAAU,IAAI/F,KAAK8wjB,GAC5Cx9N,GAQf,OALIq9N,IACAE,EAAsB/hiB,UAAYlW,OAAOlX,OAAOivjB,EAAY7hiB,YAEhE+hiB,EAAsB/hiB,UAAUoiiB,eAAiB3zjB,EACjDszjB,EAAsBM,cAAgBN,EAC/BA,IAGf,SAASO,GAAkB7zjB,EAAM4xB,EAAOwhiB,EAAaU,GACjD,OAAOhT,EAAc,WACjB,IAAMuS,EAAWH,GAAiBthiB,GAClC,SAASmiiB,IAA4B,2BAAJr1jB,EAAI,yBAAJA,EAAI,gBACjC,GAAIG,gBAAgBk1jB,EAEhB,OADAV,EAAS78gB,MAAM33C,KAAMH,GACdG,KAEX,IAAMm1jB,EAAoB,EAAID,EAAwBr1jB,GACtD,SAASu1jB,EAAc5oiB,EAAQrrB,GAC3B,IAAM+uC,EAAc1jB,EAAO0jB,YAGrBgE,EAAOhE,EAAYxC,eAAe0mhB,IACpClkhB,EAAYkkhB,IACZ53iB,OAAOu3B,eAAe7D,EAAakkhB,GAAe,CAAE7yjB,MAAO,KAAM6yjB,IACrElghB,EAAK/yC,GAAQ+yC,EAAKxG,eAAevsC,IAAS+yC,EAAK/yC,IAAS,GACxD+yC,EAAK/yC,GAAM26C,QAAQq5gB,GACfF,GACAA,EAAoB,WAApB,GAAqBzoiB,EAAQrrB,GAA7B,OAAsCtB,IAE9C,OAAOu1jB,EAOX,OALIb,IACAW,EAAqBxiiB,UAAYlW,OAAOlX,OAAOivjB,EAAY7hiB,YAE/DwiiB,EAAqBxiiB,UAAUoiiB,eAAiB3zjB,EAChD+zjB,EAAqBH,cAAgBG,EAC9BA,IAiBf,IAwDM,G,8BACF,WAAYG,EAAOrtiB,GAAO,oBACtBhoB,KAAKq1jB,MAAQA,EAEbr1jB,KAAK80jB,eAAiB,iBACtB90jB,KAAK4E,gBAAQH,EACS,iBAAXujB,EAKPhoB,KAAKsjjB,kBAAoBt7hB,OAERvjB,IAAZujB,IACLhoB,KAAK4E,WAAQk8iB,EAAmB,CAC5Bj8iB,MAAO7E,KACP4mB,WAAYoB,EAAQpB,YAAc,OAClC9hB,QAASkjB,EAAQljB,Y,uBAI7B,WACI,+BAAyB9E,KAAKq1jB,W,GAgDhCC,GAA+B,IAAI,GAAe,6BAsHlDC,GAAO59Y,SAkDb,SAAS2vF,GAAQn7L,EAAM4if,QACPtqjB,IAARsqjB,IACAA,EAAM5if,GACV,IAAK,IAAItkE,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAAK,CAClC,IAAIyJ,EAAO66D,EAAKtkE,GACZ0C,MAAMyL,QAAQ1E,IAEVy9iB,IAAQ5if,IAGR4if,EAAM5if,EAAK3iE,MAAM,EAAG3B,IAExBy/P,GAAQh2P,EAAMy9iB,IAETA,IAAQ5if,GACb4if,EAAInrjB,KAAK0N,GAGjB,OAAOy9iB,EAEX,SAASyG,GAAYh3gB,EAAOxvC,GACxBwvC,EAAMnrC,QAAQ,SAAA9R,GAAK,OAAIgJ,MAAMyL,QAAQzU,GAASi0jB,GAAYj0jB,EAAOyN,GAAMA,EAAGzN,KAE9E,SAASk0jB,GAAW9lhB,EAAKhmC,EAAOpI,GAExBoI,GAASgmC,EAAIxrC,OACbwrC,EAAI/rC,KAAKrC,GAGTouC,EAAIpH,OAAO5+B,EAAO,EAAGpI,GAG7B,SAASklY,GAAgB92V,EAAKhmC,GAE1B,OAAIA,GAASgmC,EAAIxrC,OAAS,EACfwrC,EAAI1Q,MAGJ0Q,EAAIpH,OAAO5+B,EAAO,GAAG,GAGpC,SAAS+rjB,GAASv1hB,EAAM5+B,GAEpB,IADA,IAAM4qE,EAAO,GACJtkE,EAAI,EAAGA,EAAIs4B,EAAMt4B,IACtBskE,EAAKvoE,KAAKrC,GAEd,OAAO4qE,EAkJX,SAASwpf,GAAiBC,EAAej5iB,EAAKpb,GAC1C,IAAIoI,EAAQksjB,GAAqBD,EAAej5iB,GAShD,OARIhT,GAAS,EAETisjB,EAAsB,EAARjsjB,GAAapI,EA5FnC,SAAsBwX,EAAOpP,EAAOmsjB,EAAQC,GAExC,IAAI3sjB,EAAM2P,EAAM5U,OAChB,GAAIiF,GAAOO,EAEPoP,EAAMnV,KAAKkyjB,EAAQC,QAElB,GAAY,IAAR3sjB,EAEL2P,EAAMnV,KAAKmyjB,EAAQh9iB,EAAM,IACzBA,EAAM,GAAK+8iB,MAEV,CAGD,IAFA1sjB,IACA2P,EAAMnV,KAAKmV,EAAM3P,EAAM,GAAI2P,EAAM3P,IAC1BA,EAAMO,GAEToP,EAAM3P,GAAO2P,EADO3P,EAAM,GAE1BA,IAEJ2P,EAAMpP,GAASmsjB,EACf/8iB,EAAMpP,EAAQ,GAAKosjB,GA2EnBC,CAAaJ,EADbjsjB,GAASA,EAC0BgT,EAAKpb,GAErCoI,EASX,SAASssjB,GAAiBL,EAAej5iB,GACrC,IAAMhT,EAAQksjB,GAAqBD,EAAej5iB,GAClD,GAAIhT,GAAS,EAET,OAAOisjB,EAAsB,EAARjsjB,GAc7B,SAASksjB,GAAqBD,EAAej5iB,GACzC,OAqCJ,SAA6B5D,EAAOxX,EAAOoT,GAIvC,IAFA,IAAIxL,EAAQ,EACRC,EAAM2P,EAAM5U,QAxC+B,EAyCxCiF,IAAQD,GAAO,CAClB,IAAM+sjB,EAAS/sjB,GAAUC,EAAMD,GAAU,GACnCizE,EAAUrjE,EAAMm9iB,GA3CqB,GA4C3C,GAAI30jB,IAAU66E,EACV,OAAQ85e,GA7C+B,EA+ClC95e,EAAU76E,EACf6H,EAAM8sjB,EAGN/sjB,EAAQ+sjB,EAAS,EAGzB,QAAS9sjB,GAtDsC,GAAxC+sjB,CAAoBP,EAAej5iB,GA8V9C,IACMy5iB,GADsB,GAUtBC,GAAW,OAEXC,GAAS,WAETC,GAAY9W,EAAuB,CAAEl9iB,QAAS8sC,OAAQz2B,SAD/C6miB,IAQT+W,QAAmB/xjB,EACvB,SAASgyjB,GAAmBt3iB,GACxB,IAAMu3iB,EAASF,GAEf,OADAA,GAAmBr3iB,EACZu3iB,EAEX,SAASC,GAAmB9xjB,GAAkC,IAA3B87T,EAA2B,uDAAnB+gP,EAAY2P,QACnD,QAAyB5sjB,IAArB+xjB,GACA,MAAM,IAAIniiB,MAAJ,qDAEL,OAAyB,OAArBmiiB,GACE1U,EAAmBj9iB,OAAOJ,EAAWk8T,GAGrC61P,GAAiBtkjB,IAAIrN,EAAO87T,EAAQ+gP,EAAY5kK,SAAW,UAAOr4Y,EAAWk8T,GAG5F,SAASi2P,GAAS/xjB,GAAkC,IAA3B87T,EAA2B,uDAAnB+gP,EAAY2P,QACzC,OAAQ1P,KAA6BgV,IAAoBzW,EAAkBr7iB,GAAQ87T,GA+CvF,IAAMk2P,GAASD,GACf,SAASE,GAAWvxV,GAEhB,IADA,IAAM1lO,EAAO,GACJgI,EAAI,EAAGA,EAAI09N,EAAMphO,OAAQ0D,IAAK,CACnC,IAAM+vC,EAAMsogB,EAAkB36U,EAAM19N,IACpC,GAAI0C,MAAMyL,QAAQ4hC,GAAM,CACpB,GAAmB,IAAfA,EAAIzzC,OACJ,MAAM,IAAIkwB,MAAM,wCAIpB,IAFA,IAAI3zB,OAAO+D,EACPk8T,EAAQ+gP,EAAY2P,QACf98iB,EAAI,EAAGA,EAAIqjC,EAAIzzC,OAAQoQ,IAAK,CACjC,IAAM2/B,EAAO0D,EAAIrjC,GACXszZ,EAAqB3zX,EA2C3B,eA1CoB,iBAAT2zX,GAEO,IAAVA,EACAnna,EAAOwzC,EAAKrvC,MAGZ87T,GAASknG,EAIbnna,EAAOwzC,EAGfr0C,EAAK+D,KAAKgzjB,GAASl2jB,EAAMigU,SAGzB9gU,EAAK+D,KAAKgzjB,GAASh/gB,IAG3B,OAAO/3C,EAYX,SAASk3jB,GAAiB5sb,EAAW09R,GAGjC,OAFA19R,EAAS,eAAsB09R,EAC/B19R,EAAUz3G,UAAV,eAAyCm1Y,EAClC19R,EAUX,SAAS6sb,GAAmB/iiB,EAAGpvB,EAAOoyjB,EAAmB1wiB,GACrD,IAAM2wiB,EAAYjjiB,EAAC,gBAOnB,MANIpvB,EAAMyxjB,KACNY,EAAUp7gB,QAAQj3C,EAAMyxjB,KAE5BriiB,EAAE+F,QAKN,SAAqBwvD,EAAMzrE,EAAKk5iB,GAAgC,IAAb1wiB,EAAa,uDAAJ,KACxDijE,EAAOA,GAA2B,OAAnBA,EAAKz5C,OAAO,IAhJX,UAgJ0By5C,EAAKz5C,OAAO,GAAoBy5C,EAAKjyC,OAAO,GAAKiyC,EAC3F,IAAIh4E,EAAUioB,EAAU1b,GACxB,GAAIxT,MAAMyL,QAAQ+H,GACdvM,EAAUuM,EAAItU,IAAIgwB,GAAWuW,KAAK,aAEjC,GAAmB,iBAARjyB,EAAkB,CAC9B,IAAIqnC,EAAQ,GACZ,IAAK,IAAIzoC,KAAOoB,EACZ,GAAIA,EAAI2vB,eAAe/wB,GAAM,CACzB,IAAIpb,EAAQwc,EAAIpB,GAChByoC,EAAMxhD,KAAK+Y,EAAM,KAAwB,iBAAVpb,EAAqBi4B,KAAKC,UAAUl4B,GAASk4B,EAAUl4B,KAG9FiQ,EAAU,IAAH,OAAO4zC,EAAMpV,KAAK,MAAlB,KAEX,gBAAUinhB,GAAV,OAA8B1wiB,EAAS,IAAMA,EAAS,IAAM,GAA5D,YAAkE/U,EAAlE,cAA+Eg4E,EAAKhoF,QAAQ60jB,GAAU,SArB1Fc,CAAY,KAAOljiB,EAAE+F,QAASk9hB,EAAWD,EAAmB1wiB,GACxE0N,EAAC,YAAkBijiB,EACnBjjiB,EAAC,gBAAuB,KAClBA,EA4BV,IAiQImjiB,GA2HAC,GArXEC,GAASP,GAGfzC,GAAmB,SAVN,SAACzvjB,GAAD,MAAY,CAAEA,YAUU,GAO/Bi4Y,GAGNi6K,GAAiBzC,GAAmB,YAAa,GAO3CrD,GAGN8F,GAAiBzC,GAAmB,QAAS,GAOvCtJ,GAGN+L,GAAiBzC,GAAmB,YAAa,GAO3CnJ,GAGN4L,GAAiBzC,GAAmB,QAAS,GAkP7C,SAASiD,GAAsBhre,GAC3B,IAAI5hF,EACJ,OAA+B,QAAtBA,EAhCb,WACI,QAAelG,IAAX2yjB,KACAA,GAAS,KACL3U,GAAQ+U,cACR,IACIJ,GAAS3U,GAAQ+U,aAAaC,aAAa,UAAW,CAClDC,WAAY,SAAC9yiB,GAAD,OAAOA,GACnB+yiB,aAAc,SAAC/yiB,GAAD,OAAOA,GACrBgziB,gBAAiB,SAAChziB,GAAD,OAAOA,KAGhC,MAAOja,IAQf,OAAOysjB,GAaOS,UAAgC,IAAPltjB,OAAgB,EAASA,EAAG+sjB,WAAWnre,KAAUA,EA2F5F,SAASure,KACL,QAAiBrzjB,IAAb4yjB,KACAA,GAAW,KACP5U,GAAQ+U,cACR,IACIH,GAAW5U,GAAQ+U,aACdC,aAAa,wBAAyB,CACvCC,WAAY,SAAC9yiB,GAAD,OAAOA,GACnB+yiB,aAAc,SAAC/yiB,GAAD,OAAOA,GACrBgziB,gBAAiB,SAAChziB,GAAD,OAAOA,KAGhC,MAAOja,IAQf,OAAO0sjB,GAUX,SAASU,GAA4Bxre,GACjC,IAAI5hF,EACJ,OAAiC,QAAxBA,EAAKmtjB,YAAkC,IAAPntjB,OAAgB,EAASA,EAAG+sjB,WAAWnre,KAAUA,EAsB9F,SAASyre,GAAiC7jhB,GACtC,IAAIxpC,EACJ,OAAiC,QAAxBA,EAAKmtjB,YAAkC,IAAPntjB,OAAgB,EAASA,EAAGitjB,gBAAgBzjhB,KAASA,E,IAU5F,G,8BACF,WAAY8jhB,GAAqC,oBAC7Cj4jB,KAAKi4jB,sCAAwCA,G,uBAEjD,WACI,MAAO,iDAA0Cj4jB,KAAKi4jB,uCAA/C,0C,GAIT,G,wIACF,WACI,MAAO,W,CAFY,IAKrB,G,wIACF,WACI,MAAO,Y,CAFa,IAKtB,G,wIACF,WACI,MAAO,a,CAFc,IAKvB,G,wIACF,WACI,MAAO,U,CAFW,IAKpB,G,wIACF,WACI,MAAO,kB,CAFmB,IAKlC,SAASC,GAAgB32jB,GACrB,OAAOA,aAAiB,GAAgBA,EAAM02jB,sCAC1C12jB,EAER,SAAS42jB,GAAgC52jB,EAAOb,GAC5C,IAAM03jB,EAAaC,GAA0B92jB,GAC7C,GAAkB,MAAd62jB,GAAsBA,IAAe13jB,EAAM,CAE3C,GAAmB,gBAAf03jB,GAA2D,QAAT13jB,EAClD,OAAO,EACX,MAAM,IAAI2zB,MAAJ,0BAA6B3zB,EAA7B,mBAA4C03jB,EAA5C,wCAEV,OAAOA,IAAe13jB,EAE1B,SAAS23jB,GAA0B92jB,GAC/B,OAAOA,aAAiB,IAAiBA,EAAM+2jB,eAAiB,KAWpE,SAASC,GAA4BC,GACjC,OAAO,IAAI,GAAaA,GAW5B,SAASC,GAA6BC,GAClC,OAAO,IAAI,GAAcA,GAW7B,SAASC,GAA8BC,GACnC,OAAO,IAAI,GAAeA,GAW9B,SAASC,GAA2BC,GAChC,OAAO,IAAI,GAAYA,GAW3B,SAASC,GAAmCC,GACxC,OAAO,IAAI,GAAoBA,GAiBnC,SAASC,GAAmBC,GACxB,IAAMC,EAAsB,IAAI,GAAoBD,GACpD,OA4GJ,WACI,IACI,SAAS,IAAI/tiB,OAAOmrQ,WAAYC,gBAAgBghS,GAAsB,IAAK,aAE/E,MAAO5sjB,GACH,OAAO,GAjHJyujB,GAAyB,IAAI,GAAgBD,GAAuBA,E,IAMzE,G,8BACF,WAAYA,GAAmB,oBAC3Bn5jB,KAAKm5jB,oBAAsBA,G,kCAE/B,SAAoB5se,GAKhBA,EAAO,0BAA4BA,EACnC,IACI,IAAMzpD,GAAO,IAAI3X,OAAOmrQ,WACnBC,gBAAgBghS,GAAsBhre,GAAO,aAC7CzpD,KACL,OAAa,OAATA,EAIO9iC,KAAKm5jB,oBAAoBE,oBAAoB9se,IAExDzpD,EAAKrhB,YAAYqhB,EAAK4xC,YACf5xC,GAEX,MAAOn4B,GACH,OAAO,U,GASb,G,8BACF,WAAYuujB,GAGR,GAHkB,oBAClBl5jB,KAAKk5jB,WAAaA,EAClBl5jB,KAAKs5jB,cAAgBt5jB,KAAKk5jB,WAAW/1Y,eAAeo2Y,mBAAmB,sBACxC,MAA3Bv5jB,KAAKs5jB,cAAcx2hB,KAAc,CAGjC,IAAM02hB,EAAYx5jB,KAAKs5jB,cAAczhjB,cAAc,QACnD7X,KAAKs5jB,cAAcxhjB,YAAY0hjB,GAC/B,IAAMC,EAAmBz5jB,KAAKs5jB,cAAczhjB,cAAc,QAC1D2hjB,EAAU1hjB,YAAY2hjB,K,kCAG9B,SAAoBlte,GAEhB,IAAMmte,EAAa15jB,KAAKs5jB,cAAczhjB,cAAc,YACpD,GAAI,YAAa6hjB,EAEb,OADAA,EAAWjrf,UAAY8of,GAAsBhre,GACtCmte,EASX,IAAMC,EAAY35jB,KAAKs5jB,cAAczhjB,cAAc,QAOnD,OANA8hjB,EAAUlrf,UAAY8of,GAAsBhre,GAGxCvsF,KAAKk5jB,WAAWr2R,cAChB7iS,KAAK45jB,mBAAmBD,GAErBA,I,gCAUX,SAAmBlnhB,GAGf,IAFA,IAAMonhB,EAAUpnhB,EAAGy0I,WAEVr/K,EAAIgyjB,EAAQ11jB,OAAS,EAAG,EAAI0D,EAAGA,IAAK,CACzC,IACMoyR,EADS4/R,EAAQvojB,KAAKzJ,GACJ1G,KACP,cAAb84R,GAAyD,IAA7BA,EAAShxR,QAAQ,SAC7CwpC,EAAGhK,gBAAgBwxP,GAI3B,IADA,IAAIotJ,EAAY50Y,EAAGiiC,WACZ2yW,GACCA,EAAU1/a,WAAasxJ,KAAKrxJ,cAC5B5H,KAAK45jB,mBAAmBvyI,GAC5BA,EAAYA,EAAUhiJ,gB,GAqD5By0R,GAAmB,kEAInBC,GAAmB,uIACzB,SAASC,GAAa7lhB,GAElB,OADAA,EAAM9E,OAAO8E,IACL7C,MAAMwohB,KAAqB3lhB,EAAI7C,MAAMyohB,IAClC5lhB,EAIJ,UAAYA,EAEvB,SAAS8lhB,GAAeC,GAEpB,OADAA,EAAS7qhB,OAAO6qhB,IACF33iB,MAAM,KAAK9Y,IAAI,SAACywjB,GAAD,OAAYF,GAAaE,EAAOp9iB,UAASkzB,KAAK,MAU/E,SAASmqhB,GAAOpxL,GACZ,IADgB,EACVzwW,EAAM,GADI,cAEAywW,EAAKxmX,MAAM,MAFX,IAEhB,2BACI+V,EAAA,UAAS,EAHG,8BAIhB,OAAOA,EAEX,SAAS,KAAa,IAClB,IAAMA,EAAM,GADM,mBAAJulY,EAAI,yBAAJA,EAAI,gBAElB,cAAgBA,EAAhB,eAAsB,CAAjB,IAAMj5Y,EAAC,KACR,IAAK,IAAM3kB,KAAK2kB,EACRA,EAAE8oB,eAAeztC,KACjBq4B,EAAIr4B,IAAK,GAGrB,OAAOq4B,EAOX,IA2KI8hiB,GA3KEC,GAAgBF,GAAO,0BAGvBG,GAAkCH,GAAO,kDACzCI,GAAmCJ,GAAO,SAC1CK,GAA4B,GAAMD,GAAkCD,IASpEG,GAAiB,GAAMJ,GAPN,GAAMC,GAAiCH,GAAO,oMAI7C,GAAMI,GAAkCJ,GAAO,+LAGMK,IAEvEE,GAAYP,GAAO,gEAEnBQ,GAAeR,GAAO,UAoBtBS,GAAc,GAAMF,GAAWC,GAnBlBR,GAAO,idAMPA,GAAO,6qBAmBpBU,GAA8CV,GAAO,yBAKrD,G,8BACF,iCAGIn6jB,KAAK86jB,oBAAqB,EAC1B96jB,KAAK+6jB,IAAM,I,+BAEf,SAAiBtohB,GAMb,IAFA,IAAI2pC,EAAU3pC,EAAGiiC,WACbsmf,GAAkB,EACf5+e,GAWH,GAVIA,EAAQz0E,WAAasxJ,KAAKrxJ,aAC1BozjB,EAAkBh7jB,KAAKi7jB,aAAa7+e,GAE/BA,EAAQz0E,WAAasxJ,KAAKiia,UAC/Bl7jB,KAAKylQ,MAAMrpL,EAAQsie,WAInB1+iB,KAAK86jB,oBAAqB,EAE1BE,GAAmB5+e,EAAQ1H,WAC3B0H,EAAUA,EAAQ1H,gBAGtB,KAAO0H,GAAS,CAERA,EAAQz0E,WAAasxJ,KAAKrxJ,cAC1B5H,KAAKm7jB,WAAW/+e,GAEpB,IAAIv4E,EAAO7D,KAAKo7jB,sBAAsBh/e,EAASA,EAAQipN,aACvD,GAAIxhS,EAAM,CACNu4E,EAAUv4E,EACV,MAEJu4E,EAAUp8E,KAAKo7jB,sBAAsBh/e,EAASA,EAAQ17D,YAG9D,OAAO1gB,KAAK+6jB,IAAI/qhB,KAAK,M,0BAUzB,SAAa3kC,GACT,IAAMgmK,EAAUhmK,EAAQyD,SAAS8N,cACjC,IAAK69iB,GAAe/shB,eAAe2jI,GAE/B,OADArxK,KAAK86jB,oBAAqB,GAClBD,GAA4CnthB,eAAe2jI,GAEvErxK,KAAK+6jB,IAAIn3jB,KAAK,KACd5D,KAAK+6jB,IAAIn3jB,KAAKytK,GAEd,IADA,IAAMwoZ,EAAUxujB,EAAQ67K,WACfr/K,EAAI,EAAGA,EAAIgyjB,EAAQ11jB,OAAQ0D,IAAK,CACrC,IAAMwzjB,EAASxB,EAAQvojB,KAAKzJ,GACtBoyR,EAAWohS,EAAOl6jB,KAClBg0P,EAAQ8kC,EAASr9Q,cACvB,GAAKg+iB,GAAYlthB,eAAeynN,GAAhC,CAIA,IAAI5zP,EAAQ85jB,EAAO95jB,MAEfm5jB,GAAUvlU,KACV5zP,EAAQy4jB,GAAaz4jB,IACrBo5jB,GAAaxlU,KACb5zP,EAAQ04jB,GAAe14jB,IAC3BvB,KAAK+6jB,IAAIn3jB,KAAK,IAAKq2R,EAAU,KAAMqhS,GAAe/5jB,GAAQ,UATtDvB,KAAK86jB,oBAAqB,EAYlC,OADA96jB,KAAK+6jB,IAAIn3jB,KAAK,MACP,I,wBAEX,SAAWw4E,GACP,IAAMi1F,EAAUj1F,EAAQttE,SAAS8N,cAC7B69iB,GAAe/shB,eAAe2jI,KAAagpZ,GAAc3shB,eAAe2jI,KACxErxK,KAAK+6jB,IAAIn3jB,KAAK,MACd5D,KAAK+6jB,IAAIn3jB,KAAKytK,GACdrxK,KAAK+6jB,IAAIn3jB,KAAK,Q,mBAGtB,SAAM,GACF5D,KAAK+6jB,IAAIn3jB,KAAK03jB,GAAe,M,mCAEjC,SAAsB53a,EAAM63a,GACxB,GAAIA,IACC73a,EAAKsV,wBAAwBuia,GAC1Btia,KAAKuia,kCAAoCvia,KAAKuia,+BAClD,MAAM,IAAInniB,MAAJ,oEAAuEqvH,EAAKkuE,YAEtF,OAAO2pW,M,GAITE,GAAwB,kCAExBC,GAA0B,gBAOhC,SAASJ,GAAe/5jB,GACpB,OAAOA,EAAMC,QAAQ,KAAM,SACtBA,QAAQi6jB,GAAuB,SAAUnqhB,GAG1C,MAAO,MAAyB,MAFrBA,EAAMzB,WAAW,GAEN,QADVyB,EAAMzB,WAAW,GACmB,OAAU,OAAW,MAEpEruC,QAAQk6jB,GAAyB,SAAUpqhB,GAC5C,MAAO,KAAOA,EAAMzB,WAAW,GAAK,MAEnCruC,QAAQ,KAAM,QACdA,QAAQ,KAAM,QAOvB,SAASm6jB,GAAczC,EAAY0C,GAC/B,IAAInC,EAAmB,KACvB,IACIW,GAAkBA,IAAmBnB,GAAmBC,GAExD,IAAI2C,EAAaD,EAAkBvshB,OAAOushB,GAAmB,GAC7DnC,EAAmBW,GAAgBf,oBAAoBwC,GAGvD,IAAIC,EAAe,EACfC,EAAaF,EACjB,EAAG,CACC,GAAqB,IAAjBC,EACA,MAAM,IAAIzniB,MAAM,yDAEpByniB,IACAD,EAAaE,EACbA,EAAatC,EAAiBhrf,UAC9Bgrf,EAAmBW,GAAgBf,oBAAoBwC,SAClDA,IAAeE,GAMxB,OAAOxE,IALW,IAAI,IACKyE,iBAAiBC,GAAmBxC,IAAqBA,IAnBxF,QA2BI,GAAIA,EAEA,IADA,IAAM7yhB,EAASq1hB,GAAmBxC,IAAqBA,EAChD7yhB,EAAO8tC,YACV9tC,EAAOnlB,YAAYmlB,EAAO8tC,aAK1C,SAASunf,GAAmBxphB,GACxB,MAAO,YAAaA,GAIxB,SAA2BA,GACvB,OAAOA,EAAG9qC,WAAasxJ,KAAKrxJ,cAAgC,aAAhB6qC,EAAG3jC,SALaotjB,CAAkBzphB,GAC1EA,EAAG6gB,QACH,KAsBR,IAAI6ogB,GACH,SAAUA,G,OACPA,EAAgBA,EAAe,KAAW,GAAK,OAC/CA,EAAgBA,EAAe,KAAW,GAAK,OAC/CA,EAAgBA,EAAe,MAAY,GAAK,QAChDA,EAAgBA,EAAe,OAAa,GAAK,SACjDA,EAAgBA,EAAe,IAAU,GAAK,MAC9CA,EAAgBA,EAAe,aAAmB,GAAK,eANhDA,EAAV,CADkB,IAgCnB,SAASC,GAAeP,GACpB,IAAMQ,EAAYC,KAClB,OAAID,EACOtE,GAA4BsE,EAAUn8S,SAASi8S,GAAgBh8S,KAAM07S,IAAe,IAE3F1D,GAAgC0D,EAAY,QACrC9D,GAA4BG,GAAgB2D,IAEhDF,GAAcvhN,KAAekmM,EAAgBub,IAuCxD,SAASU,GAAcC,GACnB,IAAMH,EAAYC,KAClB,OAAID,EACOA,EAAUn8S,SAASi8S,GAAgBziB,IAAK8iB,IAAc,GAE7DrE,GAAgCqE,EAAW,OACpCtE,GAAgBsE,GAEpBxC,GAAa1Z,EAAgBkc,IAaxC,SAASC,GAAsBC,GAC3B,IAAML,EAAYC,KAClB,GAAID,EACA,OAAOrE,GAAiCqE,EAAUn8S,SAASi8S,GAAgB37S,aAAck8S,IAAsB,IAEnH,GAAIvE,GAAgCuE,EAAmB,eACnD,OAAO1E,GAAiCE,GAAgBwE,IAE5D,MAAM,IAAIroiB,MAAM,kFA4HpB,SAASioiB,KACL,IAAM5U,EAAQsB,KACd,OAAOtB,GAASA,EAt4JF,IAq6JlB,SAASiV,GAAgB3niB,GACrB,OAAOA,EAAK,eAEhB,SAAS4niB,GAAiB5niB,GACtB,OAAOA,EAAK,gBAKhB,SAAS6niB,GAAmB9xhB,GAAkB,2BAANj3B,EAAM,iCAANA,EAAM,kBAC1Ci3B,EAAQ/V,MAAR,MAAA+V,EAAiBj3B,G,IAmCf,G,8BACF,iCAII9T,KAAK88jB,SAAW/xhB,S,0BAEpB,SAAY/V,GACR,IAAM+niB,EAAgB/8jB,KAAKg9jB,mBAAmBhoiB,GACxCxjB,EAAUxR,KAAKi9jB,aAAajoiB,GAG5BkoiB,EAnDd,SAAwBloiB,GACpB,OAAOA,EAAK,eAAkB6niB,GAkDNM,CAAenoiB,GACnCkoiB,EAAYl9jB,KAAK88jB,SAAN,QAAyB9niB,GAChC+niB,GACAG,EAAYl9jB,KAAK88jB,SAAN,iBAAkCC,GAE7CvrjB,GACA0rjB,EAAYl9jB,KAAK88jB,SAAU,gBAAiBtrjB,K,0BAIpD,SAAawjB,GACT,OAAIA,EACO2niB,GAAgB3niB,GAAS2niB,GAAgB3niB,GAC5Ch1B,KAAKi9jB,aAAaL,GAAiB5niB,IAEpC,O,gCAGX,SAAmBA,GAEf,IADA,IAAIf,EAAI2oiB,GAAiB5niB,GAClBf,GAAK2oiB,GAAiB3oiB,IACzBA,EAAI2oiB,GAAiB3oiB,GAEzB,OAAOA,M,GA2CTmpiB,GAAqB,6BAIrBC,GAAoB,QA6P1B,SAASC,GAAgB9wiB,EAAQ1c,GAC7B0c,EAAM,cAA0B1c,EAuIpC,IAKMytjB,GALO,kBAAwC,oBAA1B90Y,uBACvBA,uBACA7jJ,YAEC2F,KAAKk4gB,IACgB+a,GAK1B,SAASC,GAAgBpyjB,GACrB,MAAO,CAAElK,KAAM,SAAUqrB,OAAQnhB,EAAQ6wV,cAAc/qU,aAM3D,SAASusiB,GAAkBryjB,GACvB,MAAO,CAAElK,KAAM,WAAYqrB,OAAQnhB,EAAQ6wV,eAM/C,SAASyhO,GAActyjB,GACnB,MAAO,CAAElK,KAAM,OAAQqrB,OAAQnhB,EAAQ6wV,cAAcp5T,MAoBzD,SAAS86hB,GAAcr8jB,GACnB,OAAIA,aAAiBo2K,SACVp2K,IAGAA,EA0Ff,IAsBIs8jB,GAtBAC,GACH,SAAUA,G,OAOPA,EAAoBA,EAAmB,UAAgB,GAAK,YAI5DA,EAAoBA,EAAmB,SAAe,GAAK,WAXpDA,EAAV,CADsB,IA0BvB,SAASC,GAAoBC,EAAmBtW,GAC5C,OAAOmW,GAAqBG,EAAmBtW,GAuCnD,SAASuW,GAAevW,GAEpB,IAAM9ghB,EAAS8ghB,EAloLJ,GAmoLX,OAAO1B,GAAap/gB,GAAUA,EAnoLnB,GAmoLoCA,EAiCnD,SAASs3hB,GAAmBxW,GACxB,OAAOyW,GAAqBzW,EAAM0W,KAKtC,SAASC,GAAkBhmjB,GACvB,OAAO8ljB,GAAqB9ljB,EA1qLnB,IA4qLb,SAAS8ljB,GAAqB1V,GAC1B,KAA2B,OAApBA,IAA6BzC,GAAayC,IAC7CA,EAAkBA,EA9qLb,GAgrLT,OAAOA,EAeX,SAAS6V,GAA0Bv7f,EAAQwwD,EAAU3sF,EAAQ23hB,EAAeC,GAKxE,GAAqB,MAAjBD,EAAuB,CACvB,IAAI/V,EACAiW,GAAc,EAIdzY,GAAauY,GACb/V,EAAa+V,EAERxY,GAAQwY,KACbE,GAAc,EAEdF,EAAgBA,EAptLf,IAstLL,IAAMG,EAAQlX,GAAY+W,GAEX,IAAXx7f,GAAwC,OAAXn8B,EACX,MAAd43hB,EACAG,GAAkBprc,EAAU3sF,EAAQ83hB,GAGpCE,GAAmBrrc,EAAU3sF,EAAQ83hB,EAAOF,GAAc,MAAM,GAGpD,IAAXz7f,GAAwC,OAAXn8B,EAClCg4hB,GAAmBrrc,EAAU3sF,EAAQ83hB,EAAOF,GAAc,MAAM,GAEhD,IAAXz7f,EACL87f,GAAiBtrc,EAAUmrc,EAAOD,GAElB,IAAX17f,GAELwwD,EAAS0sM,YAAYy+P,GAEP,MAAdlW,GA4xBZ,SAAwBj1b,EAAUxwD,EAAQylf,EAAYsW,EAAgBN,GAElE,IAAM3za,EAAS29Z,EA/7MJ,GAu8MP39Z,IAPW28Z,GAAYgB,IAYvB8V,GAA0Bv7f,EAAQwwD,EAAUurc,EAAgBj0a,EAAQ2za,GAExE,IAAK,IAAI32jB,EAAIi+iB,GAAyBj+iB,EAAI2gjB,EAAWrkjB,OAAQ0D,IAAK,CAC9D,IAAM6/iB,EAAQc,EAAW3gjB,GACzBk3jB,GAAUrX,EAxhNJ,GAwhNkBA,EAAOn0b,EAAUxwD,EAAQ+7f,EAAgBj0a,IA9yB7Dm0a,CAAezrc,EAAUxwD,EAAQylf,EAAY5hhB,EAAQ43hB,IAIjE,SAAS1lc,GAAevF,EAAUhyH,GAG9B,OAAO8ljB,GAAqB9zb,GAAYA,EAASkB,WAAWlzH,GACxDgyH,EAASuF,eAAev3H,GAEhC,SAAS09jB,GAAe1rc,EAAUmrc,EAAOn9jB,GAErC8ljB,GAAqB9zb,GAAYA,EAAS+gB,SAASoqb,EAAOn9jB,GAASm9jB,EAAMlrd,YAAcjyG,EAE3F,SAAS29jB,GAAkB3rc,EAAUhyH,GAIjC,OAAOgyH,EAAS9yG,cAhrBpB,SAA2Blf,GACvB,OAAOA,EAAMC,QAAQ47jB,GAAoB,SAAC5ze,GAAD,OAAUA,EAAKhoF,QAAQ67jB,GA7BlC,oBA4sBA8B,CAAkB59jB,IASpD,SAAS69jB,GAAkB7rc,EAAUpyH,EAAM4+Q,GAEvC,OAAIsnS,GAAqB9zb,GACdA,EAAS17G,cAAc1W,EAAM4+Q,GAGf,OAAdA,EAAqBxsJ,EAAS17G,cAAc1W,GAC/CoyH,EAAS4sN,gBAAgBpgE,EAAW5+Q,GAyKhD,SAASk+jB,GAAgBC,EAAsB5X,GAI3C,IAAM6X,EAAaD,EA/2LH,GAg3LVE,EAAuBD,EAAWt2jB,QAAQy+iB,GAC1C+X,EAAsB/X,EAz7LjB,GA87LQ,KAAfA,EA/7LM,KAg8LNA,EAh8LM,KAg8LU,KAChBa,GAA4BkX,GAAsB,IAEtDF,EAAWh3hB,OAAOi3hB,EAAsB,GAY5C,SAASn+iB,GAAWmniB,EAAYkX,GAC5B,KAAIlX,EAAWrkjB,QAAU2hjB,IAAzB,CAEA,IA1LoC4B,EA0L9BiY,EAAmB7Z,GAA0B4Z,EAC7CE,EAAepX,EAAWmX,GAChC,GAAIC,EAAc,CACd,IAAMC,EAAwBD,EAr8LP,IAs8LO,OAA1BC,GAAkCA,IAA0BrX,GAC5D6W,GAAgBQ,EAAuBD,GAEvCF,EAAc,IACdlX,EAAWmX,EAAmB,GAx9L7B,GAw9LwCC,EAx9LxC,IA09LL,IAAME,EAAer5L,GAAgB+hL,EAAY1C,GAA0B4Z,GAlM/EX,GAmM4Ba,EA99LlB,GAyxL0BlY,EAqMakY,EApMhClY,EAAMqY,IACW,EAAgB,KAAM,MACxDrY,EA7xLS,GA6xLK,KACdA,EAxxLW,GAwxLK,KAmMZ,IAAMsY,EAAWF,EAAaG,IACb,OAAbD,GACAA,EAAS3+iB,WAAWy+iB,EAl+LlB,IAo+LNF,EAl+LO,GAk+LgB,KACvBA,EAl+LK,GAk+LgB,KAErBA,EAt+LM,KAs+LiB,IAE3B,OAAOA,GASX,SAASM,GAAa/b,EAAOuD,GACzB,KAAqB,IAAfA,EAl/LI,IAk/LiC,CACvC,IAAMn0b,EAAWm0b,EAAMqY,IACnB1Y,GAAqB9zb,IAAaA,EAAS0sM,aAC3C8+P,GAAU5a,EAAOuD,EAAOn0b,EAAU,EAAiB,KAAM,MA9KrE,SAAyB4sc,GAErB,IAAIC,EAAoBD,EAAS/B,IACjC,IAAKgC,EACD,OAAOC,GAAYF,EA50Lb,GA40L8BA,GAExC,KAAOC,GAAmB,CACtB,IAAIv8jB,EAAO,KACX,GAAIkijB,GAAQqa,GAERv8jB,EAAOu8jB,EAAkBhC,QAExB,CAGD,IAAMkC,EAAYF,EAAkBta,IAChCwa,IACAz8jB,EAAOy8jB,GAEf,IAAKz8jB,EAAM,CAGP,KAAOu8jB,IAAsBA,EA31L5B,IA21LuDA,IAAsBD,GACtEpa,GAAQqa,IACRC,GAAYD,EAh2LlB,GAg2L4CA,GAE1CA,EAAoBA,EAh2LrB,GAk2LuB,OAAtBA,IACAA,EAAoBD,GACpBpa,GAAQqa,IACRC,GAAYD,EAv2Ld,GAu2LwCA,GAE1Cv8jB,EAAOu8jB,GAAqBA,EAt2L3B,GAw2LLA,EAAoBv8jB,GA6IpB08jB,CAAgB7Y,IAWxB,SAAS2Y,GAAYlc,EAAOuD,GACxB,KAAqB,IAAfA,EAngMI,IAmgMiC,CAGvCA,EAtgMM,KAsgMU,IAMhBA,EA5gMM,IA4gMU,IA0ExB,SAA2BvD,EAAOuD,GAC9B,IAAI2F,EACJ,GAAa,MAATlJ,GAAwD,OAAtCkJ,EAAelJ,EAAMkJ,cACvC,IAAK,IAAIxljB,EAAI,EAAGA,EAAIwljB,EAAalpjB,OAAQ0D,GAAK,EAAG,CAC7C,IAAM2J,EAAUk2iB,EAAM2F,EAAaxljB,IAEnC,KAAM2J,aAAmB,IAAsB,CAC3C,IAAMgvjB,EAASnT,EAAaxljB,EAAI,GAChC,GAAI0C,MAAMyL,QAAQwqjB,GACd,IAAK,IAAIjsjB,EAAI,EAAGA,EAAIisjB,EAAOr8jB,OAAQoQ,GAAK,EAAG,CACvC,IAAMksjB,EAAcjvjB,EAAQgvjB,EAAOjsjB,IAC7By5iB,EAAOwS,EAAOjsjB,EAAI,GAExB,IACIy5iB,EAAK94hB,KAAKuriB,GADd,eAUJ,IACID,EAAOtriB,KAAK1jB,GADhB,YAhGZkvjB,CAAkBvc,EAAOuD,GAuBjC,SAAyBvD,EAAOuD,GAC5B,IAAMiZ,EAAWxc,EAAMyc,QACjBC,EAAWnZ,EAjiML,GAqiMRoZ,GAAqB,EACzB,GAAiB,OAAbH,EACA,IAAK,IAAI94jB,EAAI,EAAGA,EAAI84jB,EAASx8jB,OAAS,EAAG0D,GAAK,EAC1C,GAA2B,iBAAhB84jB,EAAS94jB,GAAiB,CAEjC,IAAMk5jB,EAAoBJ,EAAS94jB,EAAI,GACjC2kB,EAAsC,mBAAtBu0iB,EAClBA,EAAkBrZ,GAClBF,GAAYE,EAAMqZ,IAChBrgiB,EAAWmgiB,EAASC,EAAoBH,EAAS94jB,EAAI,IACrDm5jB,EAAqBL,EAAS94jB,EAAI,GACN,kBAAvBm5jB,EAEPx0iB,EAAOb,oBAAoBg1iB,EAAS94jB,GAAI64B,EAAUsgiB,GAG9CA,GAAsB,EAEtBH,EAASC,EAAoBE,KAI7BH,EAASC,GAAqBE,GAAoBprjB,cAG1D/N,GAAK,MAEJ,CAED,IAAM2J,EAAUqvjB,EAASC,EAAoBH,EAAS94jB,EAAI,IAC1D84jB,EAAS94jB,GAAGqtB,KAAK1jB,GAI7B,GAAiB,OAAbqvjB,EAAmB,CACnB,IAAK,IAAI,EAAIC,EAAoB,EAAG,EAAID,EAAS18jB,OAAQ,KAGrD88jB,EAF0BJ,EAAS,MAIvCnZ,EA7kMQ,GA6kMS,MApEjBwZ,CAAgB/c,EAAOuD,GAEG,IAAtBA,EAjhME,GAihMWhnjB,MAA8B2mjB,GAAqBK,EAAMqY,MAEtErY,EAAMqY,IAAU7+iB,UAEpB,IAAMo+iB,EAAuB5X,EApgMN,IAsgMvB,GAA6B,OAAzB4X,GAAiCtZ,GAAa0B,EArhM3C,IAqhM2D,CAE1D4X,IAAyB5X,EAvhM1B,IAwhMC2X,GAAgBC,EAAsB5X,GAG1C,IAAMsY,EAAWtY,EAAMuY,IACN,OAAbD,GACAA,EAAS3+iB,WAAW8iiB,KA0GpC,SAASgd,GAAkBhd,EAAO+B,EAAOwB,GACrC,OAAO0Z,GAAmBjd,EAAO+B,EAAMt/gB,OAAQ8ghB,GAiBnD,SAAS0Z,GAAmBjd,EAAO+B,EAAOwB,GAItC,IAHA,IAAIuD,EAAc/E,EAGK,OAAhB+E,GACF,GAAAA,EAAYvqjB,MAEbuqjB,GADA/E,EAAQ+E,GACYrkhB,OAIxB,GAAoB,OAAhBqkhB,EAGA,OAAOvD,EA1qMF,GA8qML,GAAwB,EAApBuD,EAAYtqP,MAAiC,CAE7C,IAAMn6T,EAAgB29iB,EAAMr0iB,KAAKm7iB,EAAY0B,gBAAgBnmjB,cAO7D,GAAIA,IAAkB27iB,GAAkBhjP,MACpC34T,IAAkB27iB,GAAkB6B,SACpC,OAAO,KAGf,OAAO2D,GAAiBsD,EAAavD,GAQ7C,SAASkX,GAAmBrrc,EAAU3sF,EAAQozG,EAAOwkb,EAAYn+P,GAEzDgnP,GAAqB9zb,GACrBA,EAAS5yG,aAAaimB,EAAQozG,EAAOwkb,EAAYn+P,GAGjDz5R,EAAOjmB,aAAaq5H,EAAOwkb,EAAYn+P,GAG/C,SAASs+P,GAAkBprc,EAAU3sF,EAAQozG,GAGrCqta,GAAqB9zb,GACrBA,EAASz7G,YAAY8uB,EAAQozG,GAG7BpzG,EAAO9uB,YAAYkiI,GAG3B,SAASqnb,GAA2B9tc,EAAU3sF,EAAQozG,EAAOwkb,EAAYn+P,GAClD,OAAfm+P,EACAI,GAAmBrrc,EAAU3sF,EAAQozG,EAAOwkb,EAAYn+P,GAGxDs+P,GAAkBprc,EAAU3sF,EAAQozG,GAe5C,SAASsnb,GAAiB/tc,EAAUmwB,GAChC,OAAQ2ja,GAAqB9zb,GAAYA,EAAS7yG,WAAWgjI,GAAQA,EAAKhjI,WAkB9E,SAAS6gjB,GAAwBtW,EAAa3B,EAAc5B,GACxD,OAAO8Z,GAAiCvW,EAAa3B,EAAc5B,GAavE,SAAS+Z,GAAkCxW,EAAa3B,EAAc5B,GAClE,OAAI,GAAAuD,EAAYvqjB,KACLinjB,GAAiBsD,EAAavD,GAElC,KAOX,IAMIga,GANAF,GAAmCC,GAOvC,SAASE,GAAgBC,EAAiCC,GACtDL,GAAmCI,EACnCF,GAA2BG,EAU/B,SAAS/pjB,GAAYqsiB,EAAOuD,EAAOoa,EAAYC,GAC3C,IAAMC,EAAcb,GAAkBhd,EAAO4d,EAAYra,GACnDn0b,EAAWm0b,EAAMqY,IAEjBv/iB,EAAa+gjB,GADCQ,EAAWn7hB,QAAU8ghB,EAvyM9B,GAwyM6Cqa,EAAYra,GACpE,GAAmB,MAAfsa,EACA,GAAIz3jB,MAAMyL,QAAQ8rjB,GACd,IAAK,IAAIj6jB,EAAI,EAAGA,EAAIi6jB,EAAW39jB,OAAQ0D,IACnCw5jB,GAA2B9tc,EAAUyuc,EAAaF,EAAWj6jB,GAAI2Y,GAAY,QAIjF6gjB,GAA2B9tc,EAAUyuc,EAAaF,EAAYthjB,GAAY,QAGrD/b,IAA7Bi9jB,IACIA,GAAyBnuc,EAAUwuc,EAAYra,EAAOoa,EAAYE,GAO1E,SAASC,GAAmBva,EAAOxB,GAC/B,GAAc,OAAVA,EAAgB,CAGhB,IAAMgc,EAAYhc,EAAMxljB,KACxB,GAAgB,EAAZwhkB,EACA,OAAOva,GAAiBzB,EAAOwB,GAE9B,GAAgB,EAAZwa,EACL,OAAOC,IAAsB,EAAGza,EAAMxB,EAAMv8iB,QAE3C,GAAgB,EAAZu4jB,EAAsC,CAC3C,IAAME,EAAsBlc,EAAMlsa,MAClC,GAA4B,OAAxBoob,EACA,OAAOH,GAAmBva,EAAO0a,GAGjC,IAAMC,EAAoB3a,EAAMxB,EAAMv8iB,OACtC,OAAIq8iB,GAAaqc,GACNF,IAAsB,EAAGE,GAGzB7a,GAAY6a,GAI1B,GAAgB,GAAZH,EAIL,OAHgBnE,GAAoB7X,EAAOwB,EAC/B4a,IAEI9a,GAAYE,EAAMxB,EAAMv8iB,QAGxC,IAAM44jB,EAAkBC,GAAmB9a,EAAOxB,GAClD,OAAwB,OAApBqc,EACIh4jB,MAAMyL,QAAQusjB,GACPA,EAAgB,GAIpBN,GAFYhE,GAAevW,EAAM+J,KAEF8Q,GAG/BN,GAAmBva,EAAOxB,EAAMrijB,MAInD,OAAO,KAEX,SAAS2+jB,GAAmB9a,EAAOxB,GAC/B,OAAc,OAAVA,EACsBwB,EAAM+J,IA92MrB,GAk3McgR,WAFLvc,EAAMuc,YAInB,KAEX,SAASN,GAAqBO,EAAsBla,GAChD,IAAMma,EAAgB7c,GAA0B4c,EAAuB,EACvE,GAAIC,EAAgBna,EAAWrkjB,OAAQ,CACnC,IAAMujjB,EAAQc,EAAWma,GACnBC,EAAmBlb,EA/3MnB,GA+3MgChze,WACtC,GAAyB,OAArBkuf,EACA,OAAOX,GAAmBva,EAAOkb,GAGzC,OAAOpa,EA5zMI,GAu0Mf,SAASqW,GAAiBtrc,EAAUmrc,EAAO7qQ,GAEvC,IAAMgvQ,EAAevB,GAAiB/tc,EAAUmrc,GAC5CmE,GAnLR,SAA2Btvc,EAAU3sF,EAAQozG,EAAO65K,GAC5CwzP,GAAqB9zb,GACrBA,EAAS9xG,YAAYmlB,EAAQozG,EAAO65K,GAGpCjtR,EAAOnlB,YAAYu4H,GA+KnB8ob,CAAkBvvc,EAAUsvc,EAAcnE,EAAO7qQ,GAOzD,SAASkvQ,GAAWxvc,EAAUxwD,EAAQmjf,EAAOwB,EAAOoX,EAAgBN,EAAYwE,GAC5E,KAAgB,MAAT9c,GAAe,CAIlB,IAAM+c,EAAevb,EAAMxB,EAAMv8iB,OAC3Bu4jB,EAAYhc,EAAMxljB,KAOxB,GANIsikB,GACe,IAAXjggB,IACAkggB,GAAgB3F,GAAgB9V,GAAYyb,GAAevb,GAC3DxB,EAAMvlP,OAAS,GAGqB,KAAzB,GAAdulP,EAAMvlP,OACP,GAAgB,EAAZuhQ,EACAa,GAAWxvc,EAAUxwD,EAAQmjf,EAAMlsa,MAAO0ta,EAAOoX,EAAgBN,GAAY,GAC7EF,GAA0Bv7f,EAAQwwD,EAAUurc,EAAgBmE,EAAczE,QAEzE,GAAgB,GAAZ0D,EAA0B,CAG/B,IAFA,IAAMI,EAAYvE,GAAoB7X,EAAOwB,GACzCgX,OAAK,EACFA,EAAQ4D,KACXhE,GAA0Bv7f,EAAQwwD,EAAUurc,EAAgBJ,EAAOF,GAEvEF,GAA0Bv7f,EAAQwwD,EAAUurc,EAAgBmE,EAAczE,QAEzD,GAAZ0D,EACLgB,GAAyB3vc,EAAUxwD,EAAQ2kf,EAAOxB,EAAO4Y,EAAgBN,GAIzEF,GAA0Bv7f,EAAQwwD,EAAUurc,EAAgBmE,EAAczE,GAGlFtY,EAAQ8c,EAAe9c,EAAMid,eAAiBjd,EAAMrijB,MAG5D,SAASk7jB,GAAU5a,EAAOuD,EAAOn0b,EAAUxwD,EAAQ+7f,EAAgBN,GAC/DuE,GAAWxvc,EAAUxwD,EAAQohf,EAAMzve,WAAYgze,EAAOoX,EAAgBN,GAAY,GAYtF,SAAS4E,GAAgBjf,EAAOuD,EAAO2b,GAKnCH,GAJiBxb,EAAMqY,IAIY,EAAgBrY,EAAO2b,EAHtClC,GAAkBhd,EAAOkf,EAAiB3b,GAE7C6Z,GADG8B,EAAgBz8hB,QAAU8ghB,EA18MnC,GA28M2C2b,EAAiB3b,IAiB3E,SAASwb,GAAyB3vc,EAAUxwD,EAAQ2kf,EAAO2b,EAAiBvE,EAAgBN,GACxF,IAAM8E,EAAiB5b,EAAM+J,IAIvB8R,EAHgBD,EA99MX,GAi+MiCb,WAAWY,EAAgBZ,YACvE,GAAIl4jB,MAAMyL,QAAQutjB,GAMd,IAAK,IAAI17jB,EAAI,EAAGA,EAAI07jB,EAAsBp/jB,OAAQ0D,IAE9Cy2jB,GAA0Bv7f,EAAQwwD,EAAUurc,EAD9ByE,EAAsB17jB,GAC+B22jB,QAMvEuE,GAAWxvc,EAAUxwD,EAFDwggB,EACYD,EAl/MzB,GAm/M8DxE,EAAgBN,GAAY,GAiHzG,SAASgF,GAAiBjwc,EAAUloH,EAAS6mI,GAErCm1a,GAAqB9zb,GACrBA,EAAS1kH,aAAaxD,EAAS,QAAS6mI,GAGxC7mI,EAAQE,MAAMM,QAAUqmI,EAchC,SAASuxb,GAAiBlwc,EAAUloH,EAAS6mI,GAErCm1a,GAAqB9zb,GACJ,KAAb2e,EAEA3e,EAAS9qF,gBAAgBp9B,EAAS,SAGlCkoH,EAAS1kH,aAAaxD,EAAS,QAAS6mI,GAI5C7mI,EAAQwc,UAAYqqH,EAsB5B,SAASwxb,GAAa77iB,EAAW87iB,EAAeC,GAG5C,IADA,IAAIx6jB,EAAMye,EAAU1jB,SACP,CACT,IAAM0/jB,EAAah8iB,EAAU5e,QAAQ06jB,EAAeC,GACpD,IAAoB,IAAhBC,EACA,OAAOA,EACX,GAAmB,IAAfA,GAAoBh8iB,EAAUgoB,WAAWg0hB,EAAa,IAAM,GAAgB,CAE5E,IAAM1/jB,EAASw/jB,EAAcx/jB,OAC7B,GAAI0/jB,EAAa1/jB,IAAWiF,GACxBye,EAAUgoB,WAAWg0hB,EAAa1/jB,IAAW,GAE7C,OAAO0/jB,EAIfD,EAAgBC,EAAa,GAWrC,IACMC,GAAuB,cAS7B,SAASC,GAAmB9yc,EAAO+yc,EAAiBC,GAQhD,IADA,IAAIp8jB,EAAI,EACDA,EAAIopH,EAAM9sH,QAAQ,CACrB,IAAImN,EAAO2/G,EAAMppH,KACjB,GAAIo8jB,GAA6B,UAAT3yjB,GAEpB,IAA8D,IAA1DoyjB,IADJpyjB,EAAO2/G,EAAMppH,IACS+U,cAAeonjB,EAAiB,GAClD,OAAO,OAGV,GAAa,IAAT1yjB,EAA0B,CAE/B,KAAOzJ,EAAIopH,EAAM9sH,QAAwC,iBAAtBmN,EAAO2/G,EAAMppH,OAE5C,GAAIyJ,EAAKsL,gBAAkBonjB,EACvB,OAAO,EAEf,OAAO,GAGf,OAAO,EAOX,SAASE,GAAiBhe,GACtB,OAAsB,IAAfA,EAAMxljB,MAA8BwljB,EAAM3kjB,QAAUuikB,GAa/D,SAASK,GAAmBje,EAAOke,EAAiBH,GAEhD,OAAOG,KADiC,IAAfle,EAAMxljB,MAA+BujkB,EAA0C/d,EAAM3kjB,MAA7BuikB,IAYrF,SAASO,GAAuBne,EAAO5xgB,EAAU2vhB,GAS7C,IAPA,IAAIrxiB,EAAO,EACL0xiB,EAAYpe,EAAMj1b,OAAS,GAE3Bszc,EA0KV,SAAgCD,GAC5B,IAAK,IAAIz8jB,EAAI,EAAGA,EAAIy8jB,EAAUngkB,OAAQ0D,IAElC,GAAIgnjB,GADayV,EAAUz8jB,IAEvB,OAAOA,EAGf,OAAOy8jB,EAAUngkB,OAjLSqgkB,CAAuBF,GAG7CG,GAAqB,EAChB58jB,EAAI,EAAGA,EAAIysC,EAASnwC,OAAQ0D,IAAK,CACtC,IAAMu0E,EAAU9nC,EAASzsC,GACzB,GAAuB,iBAAZu0E,GAaX,IAAIqof,EAEJ,GAAW,EAAP7xiB,GAEA,GADAA,EAAO,EAA2B,EAAPA,EACX,KAAZwpD,IAAmB+nf,GAAmBje,EAAO9pe,EAAS6nf,IAC1C,KAAZ7nf,GAAsC,IAApB9nC,EAASnwC,OAAc,CACzC,GAAIugkB,GAAW9xiB,GACX,OAAO,EACX6xiB,GAAqB,OAGxB,CACD,IAAME,EAA2B,EAAP/xiB,EAAuBwpD,EAAU9nC,IAAWzsC,GAGtE,GAAY,EAAP+qB,GAAyC,OAAhBszhB,EAAMj1b,MAAgB,CAChD,IAAK8yc,GAAmB7d,EAAMj1b,MAAO0zc,EAAmBV,GAAmB,CACvE,GAAIS,GAAW9xiB,GACX,OAAO,EACX6xiB,GAAqB,EAEzB,SAEJ,IACMG,EAAkBC,GADC,EAAPjyiB,EAAwB,QAAUwpD,EACEkof,EAAWJ,GAAiBhe,GAAQ+d,GAC1F,IAAyB,IAArBW,EAAwB,CACxB,GAAIF,GAAW9xiB,GACX,OAAO,EACX6xiB,GAAqB,EACrB,SAEJ,GAA0B,KAAtBE,EAA0B,CAC1B,IAAIG,EAEAA,EADAF,EAAkBL,EACF,GAQAD,EAAUM,EAAkB,GAAGhojB,cAEnD,IAAMmojB,EAAiC,EAAPnyiB,EAAuBkyiB,EAAgB,KACvE,GAAIC,IACiE,IAAjErB,GAAaqB,EAAyBJ,EAAmB,IAClD,EAAP/xiB,GAA4B+xiB,IAAsBG,EAAe,CACjE,GAAIJ,GAAW9xiB,GACX,OAAO,EACX6xiB,GAAqB,SA/DjC,CAEI,IAAKA,IAAuBC,GAAW9xiB,KAAU8xiB,GAAWtof,GACxD,OAAO,EAIX,GAAIqof,GAAsBC,GAAWtof,GACjC,SACJqof,GAAqB,EACrB7xiB,EAAOwpD,EAAkB,EAAPxpD,GA0D1B,OAAO8xiB,GAAW9xiB,IAAS6xiB,EAE/B,SAASC,GAAW9xiB,GAChB,OAAgC,IAAjB,EAAPA,GA+BZ,SAASiyiB,GAAoB1jkB,EAAM8vH,EAAOizc,EAAkBD,GACxD,GAAc,OAAVhzc,EACA,OAAQ,EACZ,IAAIppH,EAAI,EACR,GAAIo8jB,IAAqBC,EAAkB,CAEvC,IADA,IAAIc,GAAe,EACZn9jB,EAAIopH,EAAM9sH,QAAQ,CACrB,IAAM8gkB,EAAgBh0c,EAAMppH,GAC5B,GAAIo9jB,IAAkB9jkB,EAClB,OAAO0G,EAEN,GAAsB,IAAlBo9jB,GAAwD,IAAlBA,EAC3CD,GAAe,MAEd,IAAsB,IAAlBC,GAAuD,IAAlBA,EAAkC,CAI5E,IAHA,IAAI1jkB,EAAQ0vH,IAAQppH,GAGI,iBAAVtG,GACVA,EAAQ0vH,IAAQppH,GAEpB,SAEC,GAAsB,IAAlBo9jB,EAEL,MAEC,GAAsB,IAAlBA,EAAwC,CAE7Cp9jB,GAAK,EACL,UAGJA,GAAKm9jB,EAAe,EAAI,EAG5B,OAAQ,EAGR,OAgCR,SAAgC/zc,EAAO9vH,GACnC,IAAI0G,EAAIopH,EAAMhoH,QAAQ,GACtB,GAAIpB,GAAK,EAEL,IADAA,IACOA,EAAIopH,EAAM9sH,QAAQ,CACrB,IAAM6+Q,EAAO/xJ,EAAMppH,GAGnB,GAAoB,iBAATm7Q,EACP,OAAQ,EACZ,GAAIA,IAAS7hR,EACT,OAAO0G,EACXA,IAGR,OAAQ,EA/CGq9jB,CAAuBj0c,EAAO9vH,GAG7C,SAASgkkB,GAA2Bjf,EAAO5xgB,GACvC,IADyE,IAAxB2vhB,EAAwB,wDAChEp8jB,EAAI,EAAGA,EAAIysC,EAASnwC,OAAQ0D,IACjC,GAAIw8jB,GAAuBne,EAAO5xgB,EAASzsC,GAAIo8jB,GAC3C,OAAO,EAGf,OAAO,EA6CX,SAASmB,GAAyB9whB,EAAU63B,GACxCk5f,EAAkB,IAAK,IAAIx9jB,EAAI,EAAGA,EAAIskE,EAAKhoE,OAAQ0D,IAAK,CACpD,IAAMy9jB,EAAwBn5f,EAAKtkE,GACnC,GAAIysC,EAASnwC,SAAWmhkB,EAAsBnhkB,OAA9C,CAGA,IAAK,IAAIoQ,EAAI,EAAGA,EAAI+/B,EAASnwC,OAAQoQ,IACjC,GAAI+/B,EAAS//B,KAAO+wjB,EAAsB/wjB,GACtC,SAAS8wjB,EAGjB,OAAO,GAEX,OAAO,EAEX,SAASE,GAAuBC,EAAgBh7d,GAC5C,OAAOg7d,EAAiB,QAAUh7d,EAAM1tF,OAAS,IAAM0tF,EAE3D,SAASi7d,GAAqBnxhB,GAM1B,IALA,IAAI1X,EAAS0X,EAAS,GAClBzsC,EAAI,EACJ+qB,EAAO,EACP8yiB,EAAe,GACfF,GAAiB,EACd39jB,EAAIysC,EAASnwC,QAAQ,CACxB,IAAIwhkB,EAAgBrxhB,EAASzsC,GAC7B,GAA6B,iBAAlB89jB,EACP,GAAW,EAAP/yiB,EAA0B,CAC1B,IAAMgziB,EAAYtxhB,IAAWzsC,GAC7B69jB,GACI,IAAMC,GAAiBC,EAAUzhkB,OAAS,EAAI,KAAOyhkB,EAAY,IAAM,IAAM,SAErE,EAAPhziB,EACL8yiB,GAAgB,IAAMC,EAEV,EAAP/yiB,IACL8yiB,GAAgB,IAAMC,OAqBL,KAAjBD,GAAwBhB,GAAWiB,KACnC/oiB,GAAU2oiB,GAAuBC,EAAgBE,GACjDA,EAAe,IAEnB9yiB,EAAO+yiB,EAGPH,EAAiBA,IAAmBd,GAAW9xiB,GAEnD/qB,IAKJ,MAHqB,KAAjB69jB,IACA9oiB,GAAU2oiB,GAAuBC,EAAgBE,IAE9C9oiB,EAiEX,IAAMipiB,GAA2F,GAgCjG,SAASC,GAAUxggB,GAEfyggB,GAAoB9c,KAAYD,KAAYqD,KAAqB/mf,EAAOwjf,MAE5E,SAASid,GAAoB5hB,EAAOuD,EAAO/9iB,EAAOq8jB,GAI9C,IAAKA,EAED,GADgF,IAAhC,EAAfte,EA5nO3B,IA6nOuB,CACzB,IAAMyL,EAAqBhP,EAAMgP,mBACN,OAAvBA,GACA7F,GAAkB5F,EAAOyL,EAAoBxpjB,OAGhD,CACD,IAAMupjB,EAAgB/O,EAAM+O,cACN,OAAlBA,GACA1F,GAAyB9F,EAAOwL,EAAe,EAA4BvpjB,GAQvF2ijB,GAAiB3ijB,GAUrB,SAASs8jB,GAAgBthgB,EAAM9gE,GAG3B,OAAQ8gE,GAAQ,GAAsB9gE,GAAQ,EAElD,SAASqikB,GAAqBC,GAE1B,OAAQA,GAAiB,GAAuB,MAapD,SAASC,GAA8BD,GAEnC,OAAwB,EAAhBA,EAEZ,SAASE,GAAqBF,GAE1B,OAAwB,OAAhBA,IAA2C,EAEvD,SAASG,GAAqBH,EAAetikB,GAGzC,OAAyB,OAAhBsikB,EACLtikB,GAAQ,EAOhB,SAAS0ikB,GAA8BJ,GAEnC,OAAwB,EAAhBA,EA+tBZ,SAASK,GAAsBriB,EAAOuD,GAClC,IAAMhmjB,EAAiByijB,EAAMzijB,eAC7B,GAAuB,OAAnBA,EACA,IAAK,IAAImG,EAAI,EAAGA,EAAInG,EAAeyC,OAAQ0D,GAAK,EAAG,CAC/C,IACM4+jB,EAAkB/kkB,EAAemG,EAAI,GAC3C,IAAyB,IAArB4+jB,EAAwB,CACxB,IAAM,EAAetiB,EAAMr0iB,KAAK22jB,GAIhC7b,GAPkBlpjB,EAAemG,IAQjC,EAAanG,eAAe,EAAgBgmjB,EAAM+e,GAAkBA,KAiBpF,SAASC,GAAYxb,EAAa/G,EAAO3yiB,EAASmvT,EAAO/hT,EAAM+njB,EAAWpna,EAAiBhsC,EAAU8oc,EAAWl9iB,GAC5G,IAAMuoiB,EAA4DvD,EAAMiM,UAAU5mjB,QAmBlF,OAlBAk+iB,EAj8PS,GAi8PK9oiB,EACd8oiB,EAh8PU,GAg8Pa,IAAR/mP,EACf0nP,GAAuBX,GAEvBA,EAl8PW,GAk8PKA,EAAM0D,IAAoBF,EAC1CxD,EA97PY,GA87PKl2iB,EACjBk2iB,EAAMkf,IAAqBrna,GAAmB2rZ,GAAeA,EAAY0b,IAEzElf,EAAMqY,IAAaxsc,GAAY23b,GAAeA,EAAY6U,IAE1DrY,EA/7Pc,IA+7PK2U,GAAanR,GAAeA,EA/7PjC,KA+7P2D,KACzExD,EAn8Pa,GAm8PKvoiB,GAAY+riB,GAAeA,EAn8PhC,IAm8PyD,KACtExD,EAv8PW,GAu8PKif,EAGhBjf,EAAM+J,IACY,GAAdtN,EAAMzjjB,KAA2BwqjB,EAAYuG,IAA8B/J,EAExEA,EAEX,SAASmf,GAAiB1iB,EAAOx6iB,EAAOjJ,EAAMS,EAAM8vH,GAMhD,IAAIi1b,EAAQ/B,EAAMr0iB,KAAKnG,GACvB,GAAc,OAAVu8iB,EACAA,EAAQ4gB,GAAmB3iB,EAAOx6iB,EAAOjJ,EAAMS,EAAM8vH,GAhnOlDy3b,GAAiBC,OAAO2B,SAsnOvBpE,EAAMvlP,OAAS,SAGlB,GAAiB,GAAbulP,EAAMxljB,KAA6B,CACxCwljB,EAAMxljB,KAAOA,EACbwljB,EAAM3kjB,MAAQJ,EACd+kjB,EAAMj1b,MAAQA,EACd,IAAMrqF,EAAS4ihB,KACftD,EAAMgK,cAA2B,OAAXtphB,GAAmB,EAAIA,EAAOsphB,cAKxD,OADAzG,GAAgBvD,GAAO,GAChBA,EAEX,SAAS4gB,GAAmB3iB,EAAOx6iB,EAAOjJ,EAAMS,EAAM8vH,GAClD,IAAMq4b,EAAeC,KACfta,EAAWya,KAGXxD,EAAQ/B,EAAMr0iB,KAAKnG,GA8f7B,SAAqBw6iB,EAAO4iB,EAASrmkB,EAAMiJ,EAAOpI,EAAO0vH,GAgFrD,MAvCI,CACIvwH,OACAiJ,QACAq9jB,kBAAmB,KACnB9W,cAtCY6W,EAAUA,EAAQ7W,eAAiB,EAuC/CvD,gBAAiB,EACjBC,cAAe,EACfqa,sBAAuB,EACvBC,iBAAkB,KAClBvmQ,MAAO,EACP2xP,gBAAiB,EACjB/wjB,MAAOA,EACP0vH,MAAOA,EACPk2c,YAAa,KACbC,WAAY,KACZC,mBAAe5ikB,EACftC,OAAQ,KACRggB,QAAS,KACTmljB,OAAQ,KACRzjkB,KAAM,KACNs/jB,eAAgB,KAChBnpb,MAAO,KACPpzG,OAAQmgiB,EACRtE,WAAY,KACZ3pjB,OAAQ,KACRyujB,kBAAmB,KACnBC,oBAAgB/ikB,EAChBwgC,QAAS,KACTwiiB,mBAAoB,KACpBC,qBAAiBjjkB,EACjBkjkB,cAAe,EACfC,cAAe,GArkBnBC,CAAY1jB,EAHDlV,EAAWqa,EAAeA,GAAgBA,EAAa1ihB,OAGvClmC,EAAMiJ,EAAOxI,EAAM8vH,GAuBlD,OAnByB,OAArBkzb,EAAMzve,aACNyve,EAAMzve,WAAawxe,GAEF,OAAjBoD,IACIra,EAE0B,MAAtBqa,EAAatva,OAAkC,OAAjBksa,EAAMt/gB,SAEpC0ihB,EAAatva,MAAQksa,GAIC,OAAtBoD,EAAazljB,OAGbyljB,EAAazljB,KAAOqijB,IAIzBA,EAYX,SAAS4hB,GAAa3jB,EAAOuD,EAAOqgB,EAAiBC,GACjD,GAAwB,IAApBD,EACA,OAAQ,EASZ,IADA,IAAME,EAAWvgB,EAAMvjjB,OACd0D,EAAI,EAAGA,EAAIkgkB,EAAiBlgkB,IACjC6/iB,EAAM9jjB,KAAKokkB,GACX7jB,EAAMiM,UAAUxsjB,KAAKokkB,GACrB7jB,EAAMr0iB,KAAKlM,KAAK,MAEpB,OAAOqkkB,EAYX,SAAS/qe,GAAWind,EAAOuD,EAAOl2iB,GAE9B85iB,GAAU5D,GACV,IACI,IAAMpviB,EAAY6riB,EAAM7riB,UACN,OAAdA,GACA4vjB,GAAmB,EAAgB5vjB,EAAW9G,GAIlD,IAAM22jB,EAAahkB,EAAM7jjB,SACN,OAAf6nkB,GACAC,GAAgBjkB,EAAOuD,EAAOygB,EAAY,EAAgB32jB,GAO1D2yiB,EAAM8L,kBACN9L,EAAM8L,iBAAkB,GAKxB9L,EAAMkkB,sBACN7B,GAAsBriB,EAAOuD,GAK7BvD,EAAMmkB,mBACNJ,GAAmB,EAAgB/jB,EAAM7riB,UAAW9G,GAGxD,IAAMqiW,EAAaswM,EAAMtwM,WACN,OAAfA,GAjKZ,SAA+B00N,EAAW10N,GACtC,IAAK,IAAIhsW,EAAI,EAAGA,EAAIgsW,EAAW1vW,OAAQ0D,IACnCqihB,GAAgBq+C,EAAW10N,EAAWhsW,IAgKlC2gkB,CAAsB9gB,EAAO7zM,GAGrC,MAAO7+U,GAMH,MAHImvhB,EAAM8L,kBACN9L,EAAMskB,qBAAsB,GAE1BzziB,EA3CV,QA8CI0yhB,EAtmQM,KAsmQU,EAChBsE,MAWR,SAAS5tD,GAAY+lD,EAAOuD,EAAOygB,EAAY32jB,GAE3C,IAAMmvT,EAAQ+mP,EApnQJ,GAqnQV,GAAsC,MAAzB,IAAR/mP,GAAL,CAEA2qP,GAAU5D,GAGV,IAAMghB,EAAyB5f,KAC/B,IACIT,GAAuBX,GA7xOpBgB,GAAiBC,OAAOsB,aA8xOX9F,EAAM4F,kBACH,OAAfoe,GACAC,GAAgBjkB,EAAOuD,EAAOygB,EAAY,EAAgB32jB,GAE9D,IAAMm3jB,EAAmE,IAAhC,EAARhoQ,GAGjC,IAAK+nQ,EACD,GAAIC,EAAyB,CACzB,IAAMxV,EAAqBhP,EAAMgP,mBACN,OAAvBA,GACA7F,GAAkB5F,EAAOyL,EAAoB,UAGhD,CACD,IAAMD,EAAgB/O,EAAM+O,cACN,OAAlBA,GACA1F,GAAyB9F,EAAOwL,EAAe,EAA4B,MAE/ExF,GAAwBhG,EAAO,GAcvC,GAglCR,SAAyCA,GACrC,IAAK,IAAIc,EAAa0V,GAAmBxW,GAAuB,OAAfc,EAAqBA,EAAa6V,GAAkB7V,GACjG,GAAKA,EA9qSkB,GAkrSvB,IAFA,IAAM+W,EAAa/W,EAzqSP,GA2qSH3gjB,EAAI,EAAGA,EAAI03jB,EAAWp7jB,OAAQ0D,IAAK,CACxC,IAAM+gkB,EAAarJ,EAAW13jB,GAKmC,IAAxC,KAApB+gkB,EA1vSH,KA2vSErgB,GALwBqgB,EArvSzB,GA0vSkD,GAMrDA,EAjwSE,IAiwSmB,MA3mCzBC,CAAgCnhB,GAukCxC,SAA8BA,GAC1B,IAAK,IAAIc,EAAa0V,GAAmBxW,GAAuB,OAAfc,EAAqBA,EAAa6V,GAAkB7V,GACjG,IAAK,IAAI3gjB,EAAIi+iB,GAAyBj+iB,EAAI2gjB,EAAWrkjB,OAAQ0D,IAAK,CAC9D,IAAMihkB,EAAgBtgB,EAAW3gjB,GAC3BkhkB,EAAgBD,EAluSpB,GAouSE3gB,GAA6B2gB,IAC7B1qE,GAAY2qE,EAAeD,EAAeC,EAAczokB,SAAUwokB,EA9tSlE,KAipQRE,CAAqBthB,GAEQ,OAAzBvD,EAAMzijB,gBACN8kkB,GAAsBriB,EAAOuD,IAI5BghB,EACD,GAAIC,EAAyB,CACzB,IAAMzb,EAAoB/I,EAAM+I,kBACN,OAAtBA,GACAI,GAAkB5F,EAAOwF,OAG5B,CACD,IAAMD,EAAe9I,EAAM8I,aACN,OAAjBA,GACAO,GAAyB9F,EAAOuF,EAAc,GAElDS,GAAwBhG,EAAO,IArS/C,SAAmCvD,EAAOuD,GACtC,IA3gOqD8C,EAC/C7B,EA0gOAsgB,EAAqB9kB,EAAM8kB,mBACjC,GAA2B,OAAvBA,EAEJ,IACI,IAAK,IAAIphkB,EAAI,EAAGA,EAAIohkB,EAAmB9kkB,OAAQ0D,IAAK,CAChD,IAAMqhkB,EAASD,EAAmBphkB,GAClC,GAAIqhkB,EAAS,EAET5c,IAAkB4c,OAEjB,CAED,IAAMC,EAAeD,EACfE,EAAkBH,IAAqBphkB,GACvCwhkB,EAAgBJ,IAAqBphkB,GAzhOF2ijB,EA0hOM2e,EAzhOrDxgB,YAASD,GAAiBC,QACzBsB,aAAetB,EAAOmB,iBAwhOasf,EAvhO1C7e,GAAyBC,GAyhOb6e,EAAc,EADE3hB,EAAMyhB,MAblC,QAmBI7c,IAAkB,IAiRlBgd,CAA0BnlB,EAAOuD,GAEjC,IAAM7zM,EAAaswM,EAAMtwM,WACN,OAAfA,GA9PZ,SAAgC00N,EAAW10N,GACvC,IAAK,IAAIhsW,EAAI,EAAGA,EAAIgsW,EAAW1vW,OAAQ0D,IACnC0hkB,GAAiBhB,EAAW10N,EAAWhsW,IA6PnC2hkB,CAAuB9hB,EAAO7zM,GAKlC,IAAMv7V,EAAY6riB,EAAM7riB,UAMxB,GALkB,OAAdA,GACA4vjB,GAAmB,EAAgB5vjB,EAAW9G,IAI7Ck3jB,EACD,GAAIC,EAAyB,CACzB,IAAMvb,EAAiBjJ,EAAMiJ,eACN,OAAnBA,GACAE,GAAkB5F,EAAO0F,OAG5B,CACD,IAAMD,EAAYhJ,EAAMgJ,UACN,OAAdA,GACAK,GAAyB9F,EAAOyF,EAAW,GAE/CO,GAAwBhG,EAAO,IAGT,IAA1BvD,EAAMslB,kBAONtlB,EAAMslB,iBAAkB,GAQvBf,IACDhhB,EA3tQE,KA2tQc,IAED,KAAfA,EA7tQE,KA8tQFA,EA9tQE,KA8tQc,KAChBa,GAA4Bb,EA9tQzB,IA8tQyC,IApGpD,QAwGIsE,OAGR,SAAS0d,GAA0BvlB,EAAOuD,EAAOygB,EAAY32jB,GACzD,IAAM+tJ,EAAkBmoZ,EAAMkf,IACxB+C,GAAuB7gB,KACvB8gB,EAAuB1hB,GAAeR,GAC5C,IACQiiB,IAAwBC,GAAwBrqa,EAAgBwgK,OAChExgK,EAAgBwgK,QAEhB6pQ,GACA1se,GAAWind,EAAOuD,EAAOl2iB,GAE7B4sf,GAAY+lD,EAAOuD,EAAOygB,EAAY32jB,GAP1C,QAUQm4jB,IAAwBC,GAAwBrqa,EAAgBn2J,KAChEm2J,EAAgBn2J,OAI5B,SAASg/jB,GAAgBjkB,EAAOuD,EAAOygB,EAAYxmkB,EAAI6P,GACnD,IAAMq4jB,EAAoBxd,KACpByd,EAAqB,EAALnokB,EACtB,IACI2qjB,IAAkB,GACdwd,GAAiBpiB,EAAMvjjB,OAAS0hjB,IAGhCkgB,GAAoB5hB,EAAOuD,EAAO7B,GAAeiD,MAIrDqf,EAAWxmkB,EAAI6P,GATnB,QAYI86iB,GAAiBud,IAQzB,SAASE,GAAsB5lB,EAAO+B,EAAOwB,GACzC,GAAIzB,GAAmBC,GAGnB,IAFA,IACM98iB,EAAM88iB,EAAM0G,aACTmG,EAFK7M,EAAMyG,eAEaoG,EAAiB3pjB,EAAK2pjB,IAAkB,CACrE,IAAM9/iB,EAAMkxiB,EAAMr0iB,KAAKijjB,GACnB9/iB,EAAIvR,gBACJuR,EAAIvR,eAAe,EAAgBgmjB,EAAMqL,GAAiBA,IAQ1E,SAASiX,GAA0B7lB,EAAOuD,EAAOxB,GACxC6C,OA8nBT,SAAkC5E,EAAOuD,EAAOxB,EAAOnwV,GACnD,IAAM5sN,EAAQ+8iB,EAAMyG,eACdvjjB,EAAM88iB,EAAM0G,aACbzI,EAAM8L,iBACPH,GAA+B5J,EAAOwB,GAE1C4V,GAAgBvnW,EAAQ2xV,GAExB,IADA,IAAM2f,EAAgBnhB,EAAMmhB,cACnBx/jB,EAAIsB,EAAOtB,EAAIuB,EAAKvB,IAAK,CAC9B,IAAMoL,EAAMkxiB,EAAMr0iB,KAAKjI,GACjB42jB,EAAcpY,GAAepziB,GAC/BwrjB,GAEAwL,GAAkBviB,EAAOxB,EAAOjziB,GAEpC,IAAMyqiB,EAAYwU,GAAkBxK,EAAOvD,EAAOt8iB,EAAGq+iB,GACrDoX,GAAgB5f,EAAWgK,GACL,OAAlB2f,GACA6C,GAAmBxiB,EAAO7/iB,EAAIsB,EAAOu0iB,EAAWzqiB,EAAKiziB,EAAOmhB,GAE5D5I,IACsB5W,GAAyB3B,EAAMv8iB,MAAO+9iB,GA76RxD,GA86RqBhK,IAlpBjCysB,CAAyBhmB,EAAOuD,EAAOxB,EAAOyB,GAAiBzB,EAAOwB,IACpB,MAA/B,IAAdxB,EAAMvlP,QAqpBf,SAAsCwjP,EAAOuD,EAAOxB,GAChD,IAAM/8iB,EAAQ+8iB,EAAMyG,eACdvjjB,EAAM88iB,EAAM0G,aAEZwd,EAAelkB,EAAMv8iB,MACrB6gjB,EAvjQC9B,GAAiBC,OAAO6B,sBAwjQ/B,IACI8B,GAAiB8d,GACjB,IAAK,IAAIvokB,EAAWsH,EAAOtH,EAAWuH,EAAKvH,IAAY,CACnD,IAAMoR,EAAMkxiB,EAAMr0iB,KAAKjO,GACjB67iB,EAAYgK,EAAM7ljB,GACxB0ojB,GAAyB1ojB,GACA,OAArBoR,EAAIuF,cAA0C,IAAjBvF,EAAIsF,UAAoC,OAAlBtF,EAAIlQ,WACvDsnkB,GAAiCp3jB,EAAKyqiB,IAPlD,QAYI4O,IAAkB,GAClB/B,GAAyBC,IAvqBzB8f,CAA6BnmB,EAAOuD,EAAOxB,IAOnD,SAASqkB,GAAyBC,EAAUtkB,GAA2C,IAApCukB,EAAoC,uDAAhB9iB,GAC7Dyf,EAAalhB,EAAMkhB,WACzB,GAAmB,OAAfA,EAEA,IADA,IAAIlmC,EAAaglB,EAAMv8iB,MAAQ,EACtB9B,EAAI,EAAGA,EAAIu/jB,EAAWjjkB,OAAQ0D,GAAK,EAAG,CAC3C,IAAM8B,EAAQy9jB,EAAWv/jB,EAAI,GACvBtG,GAAmB,IAAXoI,EACV8gkB,EAAkBvkB,EAAOskB,GACzBA,EAAS7gkB,GACb6gkB,EAAStpC,KAAgB3/hB,GAWrC,SAASmpkB,GAA0Bz3jB,GAC/B,IAAMkxiB,EAAQlxiB,EAAIkxiB,MAGlB,OAAc,OAAVA,GAAkBA,EAAMskB,oBAIjBx1jB,EAAIkxiB,MAAQwmB,GAAY,EADb,KAC2C13jB,EAAI3S,SAAU2S,EAAI7M,MAAO6M,EAAI5M,KAAM4M,EAAI6wiB,cAAe7wiB,EAAI8wiB,SAAU9wiB,EAAIqF,UAAWrF,EAAIixiB,QAASjxiB,EAAI3M,QAE9J69iB,EAeX,SAASwmB,GAAYjqkB,EAAMoqjB,EAAWqd,EAAY/hkB,EAAOC,EAAME,EAAYixS,EAAOl/R,EAAW4riB,EAAS0mB,GAElG,IAAM7gB,EAAoBlE,GAAgBz/iB,EAIpCykkB,EAAoB9gB,EAAoB1jjB,EACxC+pjB,EA6EV,SAA6BrG,EAAmB8gB,GAE5C,IADA,IAAMza,EAA+C,GAC5CvojB,EAAI,EAAGA,EAAIgjkB,EAAmBhjkB,IACnCuojB,EAAUxsjB,KAAKiE,EAAIkijB,EAAoB,KAAO8b,IAElD,OAAOzV,EAlFW0a,CAAoB/gB,EAAmB8gB,GACnDvkkB,EAAoC,mBAApBskkB,EAAiCA,IAAoBA,EA0E3E,OAzEcxa,EAl2QJ,GAq4QN,CACI1vjB,KAAMA,EACN0vjB,UAAWA,EACX9vjB,SAAU6nkB,EACV57hB,QAAS,KACTj0B,UAAWA,EACXwyiB,UAAWA,EACXh7iB,KAAMsgjB,EAAU5mjB,QAAQwvG,KAAK,KAAM+wc,GACnCA,kBAAmBA,EACnBghB,kBAAmBF,EACnB5B,mBAAoB,KACpBhZ,iBAAiB,EACjBwZ,iBAAiB,EACjBnB,mBAAmB,EACnBD,sBAAsB,EACtBnV,cAAe,KACfC,mBAAoB,KACpBlG,aAAc,KACdC,kBAAmB,KACnBC,UAAW,KACXC,eAAgB,KAChBC,aAAc,KACduT,QAAS,KACTl/jB,eAAgB,KAChBmyW,WAAY,KACZm3N,kBAAyC,mBAAfzkkB,EAA4BA,IAAeA,EACrE0kkB,aAA+B,mBAAVzzR,EAAuBA,IAAUA,EACtD9iO,WAAY,KACZwve,QAASA,EACT59iB,OAAQA,EACRmikB,qBAAqB,GAgEjC,SAASyC,GAAwB/mB,EAAOuD,EAAOl2iB,EAAS25jB,GACpD,IAAMtK,EAAWuK,GAAwB1jB,GACzB,OAAZl2iB,EAMAqvjB,EAASj9jB,KAAKunkB,IAGdtK,EAASj9jB,KAAK4N,GACV2yiB,EAAM8L,iBACNob,GAAwBlnB,GAAOvgjB,KAAKunkB,EAAWtK,EAAS18jB,OAAS,IAsF7E,SAASmnkB,GAAwBC,EAAe9E,EAAiB+E,GAC7D,IAAK,IAAIlmB,KAAcimB,EACnB,GAAIA,EAAc79hB,eAAe43gB,GAAa,CAE1C,IAAMmmB,EAAeF,EAAcjmB,IADnCkmB,EAA0B,OAAdA,EAAqB,GAAKA,GAExB99hB,eAAe43gB,GACzBkmB,EAAUlmB,GAAY1hjB,KAAK6ikB,EAAiBgF,GAG3CD,EAAUlmB,GAAc,CAACmhB,EAAiBgF,GAIvD,OAAOD,EAkEX,SAASE,GAAwBvnB,EAAO+B,EAAOwB,EAAO5ygB,EAAUvzC,EAAOgyH,EAAU8oc,EAAWsP,GAExF,IAEIC,EAnBazqkB,EAiBXkK,EAAUs8iB,GAAiBzB,EAAOwB,GACpCmkB,EAAY3lB,EAAM/jjB,QAEjBwpkB,GAA2B,MAAbE,IAAsBD,EAAYC,EAAU/2hB,KAC3Dg3hB,GAAqB3nB,EAAOuD,EAAOkkB,EAAW92hB,EAAUvzC,GACpD4kjB,GAAgBD,IAqC5B,SAA2BwB,EAAOqkB,GAE9B,IAAMC,EAAsBnkB,GAAyBkkB,EAAWrkB,GAC7B,GAA7BskB,EAnsRI,KAosRNA,EApsRM,IAosRwB,IAxC1BC,CAAkBvkB,EAAOxB,EAAMv8iB,QAKjB,EAAbu8iB,EAAMxljB,OACXo0C,EA5BS,WADI3zC,EA6BU2zC,GA3BhB,YACE,QAAT3zC,EACO,UACE,eAATA,EACO,aACE,cAATA,EACO,YACE,aAATA,EACO,WACE,aAATA,EACO,WACJA,EA4BHI,EAAqB,MAAb86jB,EAAoBA,EAAU96jB,EAAO2kjB,EAAM3kjB,OAAS,GAAIuzC,GAAYvzC,EACxE8ljB,GAAqB9zb,GACrBA,EAAS5C,YAAYtlH,EAASypC,EAAUvzC,GAElCqtjB,GAAgB95gB,KACtBzpC,EAAQslH,YAActlH,EAAQslH,YAAY77E,EAAUvzC,GAChD8J,EAAQypC,GAAYvzC,IAyHpC,SAAS2qkB,GAAkB/nB,EAAOuD,EAAOxB,EAAOimB,GAI5C,IAAIC,GAAgB,EACpB,GAAIrjB,KAAsB,CACtB,IAAMjF,EA0Kd,SAAiCK,EAAOqmB,EAAUtkB,GAG9C,IAAMmmB,EAAWloB,EAAM6mB,kBACnB//hB,EAAU,KACd,GAAIohiB,EACA,IAAK,IAAIxkkB,EAAI,EAAGA,EAAIwkkB,EAASlokB,OAAQ0D,IAAK,CACtC,IAAMoL,EAAMo5jB,EAASxkkB,GACjBs9jB,GAA2Bjf,EAAOjziB,EAAItS,WAAkC,KACxEsqC,IAAYA,EAA2C,IACvD0lhB,GAAmBb,GAA+B5J,EAAOskB,GAAWrmB,EAAOlxiB,EAAIvS,MAC3E2ljB,GAAepziB,IAOfq5jB,GAAoBnoB,EAAO+B,GAE3Bj7gB,EAAQ6Q,QAAQ7oC,IAGhBg4B,EAAQrnC,KAAKqP,IAK7B,OAAOg4B,EAtMmBshiB,CAAwBpoB,EAAOuD,EAAOxB,GACtDsmB,EAA2B,OAAdL,EAAqB,KAAO,CAAE,IAAK,GACtD,GAAsB,OAAlBroB,EAAwB,CACxBsoB,GAAgB,EAChBK,GAAevmB,EAAO/B,EAAMr0iB,KAAK3L,OAAQ2/iB,EAAc3/iB,QAOvD,IAAK,IAAI0D,EAAI,EAAGA,EAAIi8iB,EAAc3/iB,OAAQ0D,IAAK,CAC3C,IAAMoL,EAAM6wiB,EAAcj8iB,GACtBoL,EAAI0wiB,mBACJ1wiB,EAAI0wiB,kBAAkB1wiB,GAO9B,IALA,IAAIy5jB,GAAqB,EACrBC,GAA0B,EAC1BxD,EAAerB,GAAa3jB,EAAOuD,EAAO5D,EAAc3/iB,OAAQ,MAG3D,EAAI,EAAG,EAAI2/iB,EAAc3/iB,OAAQ,IAAK,CAC3C,IAAM,EAAM2/iB,EAAc,GAG1BoC,EAAMihB,YAAcrY,GAAe5I,EAAMihB,YAAa,EAAIpkkB,WAC1D6pkB,GAA2BzoB,EAAO+B,EAAOwB,EAAOyhB,EAAc,GAC9D0D,GAAoB1D,EAAc,EAAKqD,GACZ,OAAvB,EAAI9qkB,iBACJwkjB,EAAMvlP,OAAS,GACM,OAArB,EAAInoT,cAA2C,OAAlB,EAAIzV,WAAuC,IAAjB,EAAIwV,WAC3D2tiB,EAAMvlP,OAAS,KACnB,IAAMmsQ,EAAiB,EAAIpskB,KAAKgyB,WAG3Bg6iB,IACAI,EAAennO,aAAemnO,EAAez8c,UAAYy8c,EAAepnO,cAIxEy+M,EAAM+O,gBAAkB/O,EAAM+O,cAAgB,KAAKtvjB,KAAKsijB,EAAMv8iB,OAC/D+ikB,GAAqB,GAEpBC,IAA4BG,EAAennO,cAAemnO,EAAepnO,aACzEy+M,EAAMgP,qBAAuBhP,EAAMgP,mBAAqB,KAAKvvjB,KAAKsijB,EAAMv8iB,OACzEgjkB,GAA0B,GAE9BxD,KA1QhB,SAAyChlB,EAAO+B,GAS5C,IAPA,IACM98iB,EAAM88iB,EAAM0G,aACZmgB,EAAY5oB,EAAMr0iB,KAClBk9jB,EAAa9mB,EAAMj1b,MACnBg8c,EAAyD,GAC3DC,EAAc,KACdC,EAAe,KACVtlkB,EAPKq+iB,EAAMyG,eAOA9kjB,EAAIuB,EAAKvB,IAAK,CAC9B,IAAM,EAAeklkB,EAAUllkB,GACzBulkB,EAAkB,EAAajrkB,OAK/BklkB,EAAgC,OAAf2F,GAAwB9I,GAAiBhe,GAE5D,KADAmnB,GAAsBD,EAAiBJ,GAE3CC,EAAgBrpkB,KAAKyjkB,GACrB6F,EAAc5B,GAAwB8B,EAAiBvlkB,EAAGqlkB,GAC1DC,EAAe7B,GAAwB,EAAanpjB,QAASta,EAAGslkB,GAEhD,OAAhBD,IACIA,EAAYx/hB,eAAe,WAC3Bw4gB,EAAMvlP,OAAS,IAEfusQ,EAAYx/hB,eAAe,WAC3Bw4gB,EAAMvlP,OAAS,KAGvBulP,EAAMmhB,cAAgB4F,EACtB/mB,EAAM/jjB,OAAS+qkB,EACfhnB,EAAM/jiB,QAAUgrjB,EA2ORG,CAAgCnpB,EAAO+B,GAEvCsmB,GAiKZ,SAAiCtmB,EAAOimB,EAAWK,GAC/C,GAAIL,EAKA,IAJA,IAAM/E,EAAalhB,EAAMkhB,WAAiD,GAIjEv/jB,EAAI,EAAGA,EAAIskkB,EAAUhokB,OAAQ0D,GAAK,EAAG,CAC1C,IAAM8B,EAAQ6ikB,EAAWL,EAAUtkkB,EAAI,IACvC,GAAa,MAAT8B,EACA,MAAM,IAAI,EAAa,MAAjB,0BAAkEwikB,EAAUtkkB,EAAI,GAAhF,iBACVu/jB,EAAWxjkB,KAAKuokB,EAAUtkkB,GAAI8B,IA1K9B4jkB,CAAwBrnB,EAAOimB,EAAWK,GAIlD,OADAtmB,EAAMihB,YAAcrY,GAAe5I,EAAMihB,YAAajhB,EAAMj1b,OACrDm7c,EAYX,SAASoB,GAA2BrpB,EAAO+B,EAAOwB,EAAOyhB,EAAcsE,EAAkBx6jB,GAErF,IAAMuF,EAAevF,EAAIuF,aACzB,GAAIA,EAAc,CACd,IAAIywjB,EAAqB9kB,EAAM8kB,mBACJ,OAAvBA,IACAA,EAAqB9kB,EAAM8kB,mBAAqB,IAEpD,IAAMyE,GAAexnB,EAAMv8iB,OAkBnC,SAAgCs/jB,GAE5B,IADA,IAAIphkB,EAAIohkB,EAAmB9kkB,OACpB0D,EAAI,GAAG,CACV,IAAMtG,EAAQ0nkB,IAAqBphkB,GACnC,GAAqB,iBAAVtG,GAAsBA,EAAQ,EACrC,OAAOA,EAGf,OAAO,GAzBCoskB,CAAuB1E,IAAuByE,GAI9CzE,EAAmBrlkB,KAAK8pkB,GAE5BzE,EAAmBrlkB,KAAKulkB,EAAcsE,EAAkBj1jB,IA8EhE,SAAS6xjB,GAAiCp3jB,EAAKyqiB,GAClB,OAArBzqiB,EAAIuF,cACJvF,EAAIuF,aAAa,EAAgBkliB,GA0CzC,SAAS4uB,GAAoBnoB,EAAOypB,GAEhCA,EAAUjtQ,OAAS,GAClBwjP,EAAMtwM,aAAeswM,EAAMtwM,WAAiD,KACxEjwW,KAAKgqkB,EAAUjkkB,OAqBxB,SAASkjkB,GAAoB1D,EAAcl2jB,EAAKu5jB,GAC5C,GAAIA,EAAY,CACZ,GAAIv5jB,EAAIyF,SACJ,IAAK,IAAI7Q,EAAI,EAAGA,EAAIoL,EAAIyF,SAASvU,OAAQ0D,IACrC2kkB,EAAWv5jB,EAAIyF,SAAS7Q,IAAMshkB,EAGlC9iB,GAAepziB,KACfu5jB,EAAW,IAAMrD,IAQ7B,SAASsD,GAAevmB,EAAOv8iB,EAAOkkkB,GAGlC3nB,EAAMvlP,OAAS,EAEfulP,EAAMyG,eAAiBhjjB,EACvBu8iB,EAAM0G,aAAejjjB,EAAQkkkB,EAC7B3nB,EAAMoM,gBAAkB3ojB,EAc5B,SAASijkB,GAA2BzoB,EAAO+B,EAAOwB,EAAOqL,EAAgB9/iB,GAGrEkxiB,EAAMr0iB,KAAKijjB,GAAkB9/iB,EAC7B,IAAM66jB,EAAmB76jB,EAAInO,UAAYmO,EAAInO,QAAUwhjB,GAAcrziB,EAAIvS,OACnEqtkB,EAAsB,IAAI,GAAoBD,EAAkBznB,GAAepziB,GAAM,MAC3FkxiB,EAAMiM,UAAU2C,GAAkBgb,EAClCrmB,EAAMqL,GAAkBgb,EACxBP,GAA2BrpB,EAAO+B,EAAOwB,EAAOqL,EAAgB+U,GAAa3jB,EAAOuD,EAAOz0iB,EAAIsF,SAAUstjB,IAAY5yjB,GAEzH,SAASg3jB,GAAkBviB,EAAOkmB,EAAW36jB,GACzC,IAAM8iN,EAAS4xV,GAAiBimB,EAAWlmB,GACrCvD,EAAQumB,GAA0Bz3jB,GAGlCssJ,EAAkBmoZ,EAAMkf,IACxBoH,EAAgBC,GAAcvmB,EAAOgf,GAAYhf,EAAOvD,EAAO,KAAMlxiB,EAAI2wiB,OAAS,GAAiB,GAAsB7tV,EAAQ63W,EAAWrua,EAAiBA,EAAgB7nC,eAAeq+F,EAAQ9iN,GAAM,KAAM,OAGtNy0iB,EAAMkmB,EAAUjkkB,OAASqkkB,EAY7B,SAASE,GAAoB36c,EAAUloH,EAAS00Q,EAAW1uG,EAASlwK,EAAMI,EAAO86jB,GAC7E,GAAa,MAAT96jB,EAEA8ljB,GAAqB9zb,GAAYA,EAAS9qF,gBAAgBp9B,EAASlK,EAAM4+Q,GACrE10Q,EAAQo9B,gBAAgBtnC,OAE3B,CAED,IAAM2hT,EAAwB,MAAbu5Q,EAAoB/b,EAAgB/+iB,GAAS86jB,EAAU96jB,EAAO8vK,GAAW,GAAIlwK,GAC1FkmjB,GAAqB9zb,GACrBA,EAAS1kH,aAAaxD,EAASlK,EAAM2hT,EAAU/iC,GAG/CA,EAAY10Q,EAAQsjjB,eAAe5uS,EAAW5+Q,EAAM2hT,GAChDz3S,EAAQwD,aAAa1N,EAAM2hT,IAa3C,SAASonR,GAAmBxiB,EAAOqL,EAAgBj/hB,EAAU7gB,EAAKiziB,EAAOioB,GACrE,IAAM9G,EAAgB8G,EAAiBpb,GACvC,GAAsB,OAAlBsU,EAEA,IADA,IAAMpjB,EAAWhxiB,EAAIgxiB,SACZp8iB,EAAI,EAAGA,EAAIw/jB,EAAcljkB,QAAS,CACvC,IAAMmhjB,EAAa+hB,EAAcx/jB,KAC3Bi/iB,EAAcugB,EAAcx/jB,KAC5BtG,EAAQ8lkB,EAAcx/jB,KACX,OAAbo8iB,EACAhxiB,EAAIgxiB,SAASnwhB,EAAUvyB,EAAO+jjB,EAAYwB,GAG1ChzhB,EAASgzhB,GAAevljB,GAuBxC,SAAS8rkB,GAAsBlrkB,EAAQ8uH,GAGnC,IAFA,IAAIm9c,EAAgB,KAChBvmkB,EAAI,EACDA,EAAIopH,EAAM9sH,QAAQ,CACrB,IAAM81R,EAAWhpK,EAAMppH,GACvB,GAAiB,IAAboyR,EAKC,GAAiB,IAAbA,EAAJ,CAML,GAAwB,iBAAbA,EACP,MACA93R,EAAOurC,eAAeusP,KACA,OAAlBm0S,IACAA,EAAgB,IACpBA,EAAcxqkB,KAAKq2R,EAAU93R,EAAO83R,GAAWhpK,EAAMppH,EAAI,KAE7DA,GAAK,OAXDA,GAAK,OALLA,GAAK,EAkBb,OAAOumkB,EAkBX,SAASC,GAAiBC,EAAYniB,EAAap2V,EAAQmwV,GAiBvD,OAbmB,IAAmC37iB,MAAO+jkB,GAC7D,GACA,EACAniB,EACA,KACA,EACAjG,EACAnwV,EACA,KACA,MAwDJ,SAASwzW,GAAiBhB,EAAWgG,GAEjC,IAAMP,EAAgBnmB,GAAyB0mB,EAAkBhG,GAEjE,GAAIpgB,GAA6B6lB,GAAgB,CAC7C,IAAM7pB,EAAQ6pB,EAjxSR,GAkxSF,GAAAA,EAjxSE,GAkxSF5vE,GAAY+lD,EAAO6pB,EAAe7pB,EAAM7jjB,SAAU0tkB,EA5wS9C,IA8wSCA,EAjxSqB,GAixS0B,GAEpDQ,GAAyBR,IAUrC,SAASQ,GAAyB9mB,GAC9B,IAAK,IAAIc,EAAa0V,GAAmBxW,GAAuB,OAAfc,EAAqBA,EAAa6V,GAAkB7V,GACjG,IAAK,IAAI3gjB,EAAIi+iB,GAAyBj+iB,EAAI2gjB,EAAWrkjB,OAAQ0D,IAAK,CAC9D,IAAMihkB,EAAgBtgB,EAAW3gjB,GACjC,GAA2B,KAAvBihkB,EApySF,GAoyS6D,CAC3D,IAAMC,EAAgBD,EAtySxB,GAwySE1qE,GAAY2qE,EAAeD,EAAeC,EAAczokB,SAAUwokB,EAjySlE,SAmySKA,EAtySiB,GAsyS8B,GACpD0F,GAAyB1F,GAIrC,IAEMj1N,EAFQ6zM,EA/ySJ,GAizSe7zM,WACzB,GAAmB,OAAfA,EACA,IAAK,IAAI,EAAI,EAAG,EAAIA,EAAW1vW,OAAQ,IAAK,CACxC,IAAM6pkB,EAAgBnmB,GAAyBh0M,EAAW,GAAI6zM,GAE1DS,GAA6B6lB,IAC7BA,EAnzSsB,GAmzSyB,GAC/CQ,GAAyBR,IAKzC,SAAS9jD,GAAgBq+C,EAAWgG,GAEhC,IAAMP,EAAgBnmB,GAAyB0mB,EAAkBhG,GAC3DkG,EAAiBT,EAh0Sb,IA+1Sd,SAA+B7pB,EAAOuD,GAClC,IAAK,IAAI7/iB,EAAI6/iB,EAAMvjjB,OAAQ0D,EAAIs8iB,EAAMiM,UAAUjsjB,OAAQ0D,IACnD6/iB,EAAM9jjB,KAAKugjB,EAAMiM,UAAUvojB,IAhC/B6mkB,CAAsBD,EAAgBT,GACtC9we,GAAWuxe,EAAgBT,EAAeA,EA3zS9B,IAw2ShB,SAASC,GAAcvmB,EAAO0Y,GAY1B,OAPI1Y,EAAM0W,IACN1W,EAx2SW,IAVN,GAk3SqB0Y,EAG1B1Y,EAAM0W,IAAcgC,EAExB1Y,EA72Se,IA62SK0Y,EACbA,EAgBX,SAASuO,GAAcjnB,GACnB,KAAOA,GAAO,CACVA,EA54SM,IA44SU,GAChB,IAAM9ghB,EAASq3hB,GAAevW,GAE9B,GAxxS0C,IAAtB,IAwxSLA,EA/4ST,MA+4SoB9ghB,EACtB,OAAO8ghB,EAGXA,EAAQ9ghB,EAEZ,OAAO,KA8CX,SAASgoiB,GAAsBzqB,EAAOuD,EAAOl2iB,GACzC,IAAM+tJ,EAAkBmoZ,EAAMkf,IAC1Brna,EAAgBwgK,OAChBxgK,EAAgBwgK,QACpB,IACIq+L,GAAY+lD,EAAOuD,EAAOvD,EAAM7jjB,SAAUkR,GAE9C,MAAOwjB,GAEH,MADA02I,GAAYg8Y,EAAO1yhB,GACbA,EALV,QAQQuqI,EAAgBn2J,KAChBm2J,EAAgBn2J,OAQ5B,SAASylkB,GAAwBnnB,IA7BjC,SAAyBonB,GACrB,IAAK,IAAIjnkB,EAAI,EAAGA,EAAIinkB,EAAYj7N,WAAW1vW,OAAQ0D,IAAK,CACpD,IAAM8zhB,EAAgBmzC,EAAYj7N,WAAWhsW,GACvC6/iB,EAAQM,GAAiBrsB,GACzBwoB,EAAQuD,EAh8SR,GAi8SNgiB,GAA0BvlB,EAAOuD,EAAOvD,EAAM7jjB,SAAUq7hB,IAyB5DozC,CAAgBrnB,EAn9SJ,IAg/ShB,SAASwgB,GAAmBvnQ,EAAOquQ,EAAa/vjB,GAE5C2riB,GAAqB,GACrBokB,EAAYruQ,EAAO1hT,GA2CvB,IAAMgwjB,GA9qDO,kBAAM1qkB,QAAQC,QAAQ,MAKX0qkB,GA0qDxB,SAAS9D,GAAwBn5jB,GAE7B,OAAOA,EAliTK,KAkiTaA,EAliTb,GAkiT0D,IAE1E,SAASo5jB,GAAwBlnB,GAC7B,OAAOA,EAAMyc,UAAYzc,EAAMyc,QAAuC,IAM1E,SAASuO,GAAsBC,EAAYlpB,EAAOwB,GAU9C,OAHmB,OAAf0nB,GAAuB/oB,GAAe+oB,MACtC1nB,EA3gSR,SAAqBnmjB,GACjB,KAAOgJ,MAAMyL,QAAQzU,IAAQ,CAGzB,GAA2B,iBAAhBA,EA7fN,GA8fD,OAAOA,EACXA,EAAQA,EArjBH,GAujBT,OAAO,KAmgSK8tkB,CAAY3nB,EAAMxB,EAAMv8iB,SAE7B+9iB,EAAMqY,IAGjB,SAASr0Z,GAAYg8Y,EAAO1yhB,GACxB,IAAM7V,EAAWuoiB,EAvjTJ,GAwjTPl8Y,EAAersJ,EAAWA,EAASjN,IAAI,GAAc,MAAQ,KACnEs5J,GAAgBA,EAAaE,YAAY12I,GAW7C,SAAS82iB,GAAqB3nB,EAAOuD,EAAOvljB,EAAQmjjB,EAAY/jjB,GAC5D,IAAK,IAAIsG,EAAI,EAAGA,EAAI1F,EAAOgC,QAAS,CAChC,IAAMwF,EAAQxH,EAAO0F,KACfi/iB,EAAc3kjB,EAAO0F,KACrBisB,EAAW4zhB,EAAM/9iB,GAEjBsJ,EAAMkxiB,EAAMr0iB,KAAKnG,GACF,OAAjBsJ,EAAIgxiB,SACJhxiB,EAAIgxiB,SAASnwhB,EAAUvyB,EAAO+jjB,EAAYwB,GAG1ChzhB,EAASgzhB,GAAevljB,GAOpC,SAAS+tkB,GAAoB5nB,EAAO/9iB,EAAOpI,GAIvC,IAAM8J,EAAUo8iB,GAAiB99iB,EAAO+9iB,GAExCuX,GAAevX,EAAMqY,IAAW10jB,EAAS9J,GAqB7C,SAASgukB,GAAqBrpB,EAAOj1b,EAAOu+c,GAGxC,IAAI12jB,EAAS02jB,EAActpB,EAAMptiB,OAAS,KACtCmsB,EAAUuqiB,EAActpB,EAAMjhhB,QAAU,KACxCrS,EAAO,EACX,GAAc,OAAVq+F,EACA,IAAK,IAAIppH,EAAI,EAAGA,EAAIopH,EAAM9sH,OAAQ0D,IAAK,CACnC,IAAMtG,EAAQ0vH,EAAMppH,GACC,iBAAVtG,EACPqxB,EAAOrxB,EAEM,GAARqxB,EACLqS,EAAU66gB,EAAuB76gB,EAAS1jC,GAE7B,GAARqxB,IAGL9Z,EAASgniB,EAAuBhniB,EAFlBvX,EAEkC,KAD7B0vH,IAAQppH,GACyC,MAIhF2nkB,EAActpB,EAAMptiB,OAASA,EAASotiB,EAAMqhB,kBAAoBzujB,EAChE02jB,EAActpB,EAAMjhhB,QAAUA,EAAUihhB,EAAMuhB,mBAAqBxiiB,EAqEvE,IAAMwqiB,GAAa,IAAI,GAAe,YAGrC,GASK,G,kFACF,SAAI5qkB,GAAyC,IAAlCk9iB,EAAkC,uDAAlBqU,GACvB,GAAIrU,IAAkBqU,GAAoB,CACtC,IAAMphiB,EAAQ,IAAIX,MAAJ,6CAAgDoF,EAAU50B,GAA1D,MAEd,MADAmwB,EAAM7zB,KAAO,oBACP6zB,EAEV,OAAO+shB,M,GAgBT2tB,GAAiB,IAAI,GAAe,uBAYpCC,GAAU,GAQVC,GAAW,GACXC,GAAgB,GAIlBC,QAAgBrrkB,EACpB,SAASsrkB,KAIL,YAHsBtrkB,IAAlBqrkB,KACAA,GAAgB,IAAI,IAEjBA,GAiBX,SAASE,GAAuCC,GAAwD,IAA/CrpiB,EAA+C,uDAAtC,KAAMspiB,EAAgC,uDAAV,KAAM/ukB,EAAI,uCACpG,OAAO,IAAI,GAAW8ukB,EAASC,EAAqBtpiB,GAAUmpiB,KAAmB5ukB,G,IAE/E,G,8BACF,WAAY8R,EAAKi9jB,EAAqBtpiB,GAAqB,WAAbrgB,EAAa,uDAAJ,KAAI,oBACvDvmB,KAAK4mC,OAASA,EAMd5mC,KAAKmwkB,QAAU,IAAI1ikB,IAInBzN,KAAKowkB,iBAAmB,IAAIzikB,IAI5B3N,KAAKm5H,UAAY,IAAIxrH,IACrB3N,KAAKwD,YAAa,EAClB,IAAM6skB,EAAa,GAInBH,GACI1a,GAAY0a,EAAqB,SAAAr5iB,GAAQ,OAAI,EAAKy5iB,gBAAgBz5iB,EAAU5jB,EAAKi9jB,KACrF1a,GAAY,CAACvijB,GAAM,SAAAs9jB,GAAW,OAAI,EAAKC,oBAAoBD,EAAa,GAAIF,KAE5ErwkB,KAAKmwkB,QAAQ97jB,IAAIo7jB,GAAYgB,QAAWhskB,EAAWzE,OAGnD,IAAMkR,EAASlR,KAAKmwkB,QAAQj+jB,IAAIw9jB,IAChC1vkB,KAAKwtF,MAAkB,MAAVt8E,EAAiBA,EAAO3P,MAAQ,KAE7CvB,KAAKumB,OAASA,IAA0B,iBAARtT,EAAmB,KAAOwmB,EAAUxmB,K,sBAKxE,WACI,OAAOjT,KAAKwD,a,qBAQhB,WACIxD,KAAK0wkB,qBAEL1wkB,KAAKwD,YAAa,EAClB,IAEIxD,KAAKm5H,UAAU9lH,QAAQ,SAAAkiB,GAAO,OAAIA,EAAQiuJ,gBAF9C,QAMIxjL,KAAKmwkB,QAAQz/jB,QACb1Q,KAAKm5H,UAAUzoH,QACf1Q,KAAKowkB,iBAAiB1/jB,W,iBAG9B,SAAI7L,GAAsE,IAA/Dk9iB,EAA+D,uDAA/CqU,GAAoBz1P,EAA2B,uDAAnB+gP,EAAY2P,QAC/DrxjB,KAAK0wkB,qBAEL,IAAMC,EAAmBla,GAAmBz2jB,MAC5C,IAEI,KAAM2gU,EAAQ+gP,EAAYsJ,UAAW,CAEjC,IAAI95iB,EAASlR,KAAKmwkB,QAAQj+jB,IAAIrN,GAC9B,QAAeJ,IAAXyM,EAAsB,CAGtB,IAAM+B,EAAM29jB,GAAsB/rkB,IAAUo8iB,EAAiBp8iB,GAIzDqM,EAHA+B,GAAOjT,KAAK6wkB,qBAAqB59jB,GAGxBw9jB,GAAWK,GAAkCjskB,GAAQ8qkB,IAGrD,KAEb3vkB,KAAKmwkB,QAAQ97jB,IAAIxP,EAAOqM,GAG5B,GAAc,MAAVA,EACA,OAAOlR,KAAK+wkB,QAAQlskB,EAAOqM,GAKnC,IAAM8/jB,EAAiBrwQ,EAAQ+gP,EAAYuP,KAAsB8e,KAAd/vkB,KAAK4mC,OAMxD,OAAOoqiB,EAAa9+jB,IAAIrN,EAHxBk9iB,EAAiBphP,EAAQ+gP,EAAY5kK,UAAailK,IAAkBqU,GAChE,KACArU,GAGR,MAAO9thB,GACH,GAAe,sBAAXA,EAAE9yB,KAA8B,CAChC,IAAMgwI,EAAOl9G,EAAC,gBAAuBA,EAAC,iBAAwB,GAE9D,GADAk9G,EAAKr1F,QAAQriB,EAAU50B,IACnB8rkB,EAEA,MAAM18iB,EAIN,OAAO+iiB,GAAmB/iiB,EAAGpvB,EAAO,kBAAmB7E,KAAKumB,QAIhE,MAAM0N,EAhDd,QAqDIwiiB,GAAmBka,M,sCAI3B,WAAwB,WACpB3wkB,KAAKowkB,iBAAiB/8jB,QAAQ,SAAA48jB,GAAO,OAAI,EAAK/9jB,IAAI+9jB,O,sBAEtD,WACI,IAAMllhB,EAAS,GAEf,OAF6B/qD,KAAKmwkB,QAC1B98jB,QAAQ,SAACpT,EAAG4E,GAAJ,OAAckmD,EAAOnnD,KAAK61B,EAAU50B,MACpD,qBAAqBkmD,EAAO/a,KAAK,MAAjC,O,gCAEJ,WACI,GAAIhwC,KAAKwD,WACL,MAAM,IAAI6wB,MAAM,0C,iCAYxB,SAAoB48iB,EAAiB77f,EAASi7f,GAAU,WAEpD,KADAY,EAAkB/wB,EAAkB+wB,IAEhC,OAAO,EAKX,IAAIh+jB,EAAMouiB,EAAe4vB,GAEnBlyd,EAAmB,MAAP9rG,GAAgBg+jB,EAAgBlyd,eAAYt6G,EAIxDwrkB,OAAwBxrkB,IAAbs6G,EAA0Bkyd,EAAkBlyd,EAQvDmyd,GAA+C,IAAjCb,EAAWpnkB,QAAQgnkB,GAOvC,QAJiBxrkB,IAAbs6G,IACA9rG,EAAMouiB,EAAetic,IAGd,MAAP9rG,EACA,OAAO,EAIX,GAAmB,MAAfA,EAAImG,UAAoB83jB,EAAa,CAMrC,IAAIC,EADJd,EAAWzskB,KAAKqskB,GAEhB,IACIza,GAAYvijB,EAAImG,QAAS,SAAAg4jB,GACjB,EAAKZ,oBAAoBY,EAAUh8f,EAASi7f,UACX5rkB,IAA7B0skB,IACAA,EAA2B,IAG/BA,EAAyBvtkB,KAAKwtkB,MAP1C,SAkBA,QAAiC3skB,IAA7B0skB,EACA,IADwC,iBAEpC,MAAgCA,EAAyBtpkB,GAAjDk3G,EAAR,EAAQA,SAAU5sF,EAAlB,EAAkBA,UAClBqjiB,GAAYrjiB,EAAW,SAAA0E,GAAQ,OAAI,EAAKy5iB,gBAAgBz5iB,EAAUkoF,EAAU5sF,GAAa09iB,OAFpFhokB,EAAI,EAAGA,EAAIspkB,EAAyBhtkB,OAAQ0D,IAArD,IAQR7H,KAAKowkB,iBAAiBvtkB,IAAIotkB,GAC1B,IAAMnrkB,EAAUwhjB,GAAc2pB,IAAa,kBAAM,IAAIA,GACrDjwkB,KAAKmwkB,QAAQ97jB,IAAI47jB,EAASQ,GAAW3rkB,EAAS6qkB,KAE9C,IAAM0B,EAAep+jB,EAAIkf,UACzB,GAAoB,MAAhBk/iB,IAAyBH,EAAa,CACtC,IAAMI,EAAeL,EACrBzb,GAAY6b,EAAc,SAAAx6iB,GAAQ,OAAI,EAAKy5iB,gBAAgBz5iB,EAAUy6iB,EAAcD,KAEvF,YAAqB5skB,IAAbs6G,QAC0Bt6G,IAA9BwskB,EAAgB9+iB,Y,6BAKxB,SAAgB0E,EAAU06iB,EAAcp/iB,GAIpC,IAAIttB,EAAQ2skB,GADZ36iB,EAAWqphB,EAAkBrphB,IACUA,EAAWqphB,EAAkBrphB,GAAYA,EAASt0B,SAEnF2O,EA2Fd,SAA0B2lB,EAAU06iB,EAAcp/iB,GAC9C,OAAIs/iB,GAAgB56iB,GACT45iB,QAAWhskB,EAAWoyB,EAASje,UAI/B63jB,GADSiB,GAAkB76iB,GACP84iB,IAjGZgC,CAAiB96iB,GAChC,GAAK26iB,GAAe36iB,KAAgC,IAAnBA,EAASnN,MAmBrB1pB,KAAKmwkB,QAAQj+jB,IAAIrN,OAnBoB,CAGtD,IAAI+skB,EAAc5xkB,KAAKmwkB,QAAQj+jB,IAAIrN,GAC/B+skB,KAOAA,EAAcnB,QAAWhskB,EAAWkrkB,IAAS,IACjC7qkB,QAAU,kBAAMgyjB,GAAW8a,EAAYlojB,QACnD1pB,KAAKmwkB,QAAQ97jB,IAAIxP,EAAO+skB,IAE5B/skB,EAAQgyB,EACR+6iB,EAAYlojB,MAAM9lB,KAAKizB,GAQ3B72B,KAAKmwkB,QAAQ97jB,IAAIxP,EAAOqM,K,qBAE5B,SAAQrM,EAAOqM,GAuInB,IAAsB3P,EA5Hd,OAPS2P,EAAO3P,QAAUoukB,KACtBz+jB,EAAO3P,MAAQqukB,GACf1+jB,EAAO3P,MAAQ2P,EAAOpM,WAEE,iBAAjBoM,EAAO3P,OAAsB2P,EAAO3P,OAgIlC,QADCA,EA/HuD2P,EAAO3P,QAgItC,iBAAVA,GACC,mBAAtBA,EAAMiiL,aAhITxjL,KAAKm5H,UAAUt2H,IAAIqO,EAAO3P,OAEvB2P,EAAO3P,Q,kCAElB,SAAqB0R,GACjB,QAAKA,EAAI2T,aAG0B,iBAAnB3T,EAAI2T,WACU,QAAnB3T,EAAI2T,YAAyB3T,EAAI2T,aAAe5mB,KAAKwtF,MAGrDxtF,KAAKowkB,iBAAiBh8jB,IAAInB,EAAI2T,iB,GAIjD,SAASkqjB,GAAkCjskB,GAEvC,IAAMm9iB,EAAgBf,EAAiBp8iB,GACjCC,EAA4B,OAAlBk9iB,EAAyBA,EAAcl9iB,QAAUwhjB,GAAczhjB,GAC/E,GAAgB,OAAZC,EACA,OAAOA,EAIX,GAAID,aAAiB,GACjB,MAAM,IAAIwvB,MAAJ,gBAAmBoF,EAAU50B,GAA7B,yCAGV,GAAIA,aAAiB8yK,SACjB,OAKR,SAAyC9yK,GAErC,IAAMgtkB,EAAchtkB,EAAMV,OAC1B,GAAI0tkB,EAAc,EAAG,CACjB,IAAMhykB,EAAO61jB,GAASmc,EAAa,KACnC,MAAM,IAAIx9iB,MAAJ,2CAA8CoF,EAAU50B,GAAxD,cAAoEhF,EAAKmwC,KAAK,MAA9E,OAOV,IAAM8hiB,EA10VV,SAAmCpxkB,GAC/B,IAAMuS,EAAMvS,IAASA,EAAKygjB,IAAgBzgjB,EAAK0gjB,IAC/C,GAAInuiB,EAAK,CACL,IAAM8+jB,EAYd,SAAqBrxkB,GAOjB,GAAIA,EAAKgtC,eAAe,QACpB,OAAOhtC,EAAKS,KAEhB,IAAMmwC,GAAS,GAAK5wC,GAAM4wC,MAAM,yBAChC,OAAiB,OAAVA,EAAiB,GAAKA,EAAM,GAvBdgnhB,CAAY53jB,GAK7B,OAFAqqC,QAAQ24B,KAAK,mDAA4CqugB,EAA5C,qLACqFA,EADrF,aAEN9+jB,EAGP,OAAO,KA+zVoB++jB,CAA0BntkB,GACzD,OAA+B,OAA3BitkB,EACO,kBAAMA,EAAuBhtkB,QAAQD,IAGrC,kBAAM,IAAIA,GAtBVotkB,CAAgCptkB,GAG3C,MAAM,IAAIwvB,MAAM,eAoCpB,SAASq9iB,GAAkB76iB,EAAU06iB,EAAcp/iB,GAC/C,IA4CuB5wB,EA5CnBuD,OAAUL,EACd,GAAI+skB,GAAe36iB,GAAW,CAC1B,IAAMq7iB,EAAoBhyB,EAAkBrphB,GAC5C,OAAOyvhB,GAAc4rB,IAAsBpB,GAAkCoB,GAG7E,GAAIT,GAAgB56iB,GAChB/xB,EAAU,kBAAMo7iB,EAAkBrphB,EAASje,gBAE1C,IAmCcrX,EAnCQs1B,IAoCZt1B,EAAM6nB,WAnCjBtkB,EAAU,kBAAM+xB,EAASzN,WAAT,MAAAyN,EAAQ,YAAeigiB,GAAWjgiB,EAAS1N,MAAQ,YAElE,GA6Bb,SAA4B5nB,GACxB,SAAUA,IAASA,EAAMiB,aA9BZ2vkB,CAAmBt7iB,GACxB/xB,EAAU,kBAAM8xjB,GAAS1W,EAAkBrphB,EAASr0B,mBAEnD,CACD,IAAM4vkB,EAAWlyB,EAAkBrphB,IAC9BA,EAASle,UAAYke,EAASt0B,UAInC,IAgCZ,SAAiBhB,GACb,QAASA,EAAM4nB,KAjCHkpjB,CAAQx7iB,GAIR,OAAOyvhB,GAAc8rB,IAAatB,GAAkCsB,GAHpEttkB,EAAU,oBAAWstkB,EAAX,YAAwBtb,GAAWjgiB,EAAS1N,SAOlE,OAAOrkB,EAEX,SAAS2rkB,GAAW3rkB,EAASvD,GAAoB,IAAbmoB,EAAa,wDAC7C,MAAO,CACH5kB,QAASA,EACTvD,MAAOA,EACPmoB,MAAOA,EAAQ,QAAKjlB,GAG5B,SAASgtkB,GAAgBlwkB,GACrB,OAAiB,OAAVA,GAAkC,iBAATA,GAAqBg1jB,MAAah1jB,EAQtE,SAASiwkB,GAAejwkB,GACpB,MAAwB,mBAAVA,EAYlB,SAASqvkB,GAAsBrvkB,GAC3B,MAAyB,mBAAVA,GACO,iBAAVA,GAAsBA,aAAiB,GAgBvD,IAAM+wkB,GAHN,SAAkCngjB,EAAWyU,EAAQzlC,GACjD,OA5aJ,SAAwB8ukB,GAAwD,IACtE9wjB,EAAW6wjB,GAAuCC,EADoB,uDAAtC,KAAsC,uDAAV,KAAU,wCAG5E,OADA9wjB,EAASozjB,2BACFpzjB,EAyaAqzjB,CAAe,CAAErxkB,KAAMA,GAAQylC,EAAQzU,EAAWhxB,I,kBA2BvDsxkB,E,0FACF,SAAczqjB,EAAS4e,GACnB,OAAIr8B,MAAMyL,QAAQgS,GACPsqjB,GAActqjB,EAAS4e,EAAQ,IAG/B0riB,GAActqjB,EAAQmK,UAAWnK,EAAQ4e,OAAQ5e,EAAQ7mB,MAAQ,Q,UAIpFsxkB,EAASrc,mBAAqBA,GAC9Bqc,EAASC,KAAO,IAAI,GAEpBD,EAAS7tkB,WAAQk8iB,EAAmB,CAChCj8iB,MAAO4tkB,EACP7rjB,WAAY,MACZ9hB,QAAS,kBAAM8xjB,GAAS6Y,OAM5BgD,EAASnvB,mBAAqB,E,KA81B9B,SAASqvB,GAAsB1zjB,EAAWhM,GAMtCy5iB,GALc1E,GAAiB/oiB,GAzlWrB,GA4lWIoqiB,MAwClB,SAASupB,GAA2BnsB,GAIhC,IAHA,IAAI1ne,EATGviE,OAAO24H,eASesxa,EAAW/ljB,KATNgyB,WAAWwd,YAUzC2iiB,GAAsB,EACpBC,EAAmB,CAACrsB,GACnB1ne,GAAW,CACd,IAAIC,OAAWv6E,EACf,GAAI4hjB,GAAeI,GAEfzne,EAAWD,EAAU54E,WAAQ44E,EAAUt+E,cAEtC,CACD,GAAIs+E,EAAU54E,UACV,MAAM,IAAIkuB,MAAM,wCAGpB2qD,EAAWD,EAAUt+E,UAEzB,GAAIu+E,EAAU,CACV,GAAI6zf,EAAqB,CACrBC,EAAiBlvkB,KAAKo7E,GAGtB,IAAM+zf,EAAetsB,EACrBssB,EAAa5wkB,OAAS6wkB,GAAiBvsB,EAAWtkjB,QAClD4wkB,EAAarvB,eAAiBsvB,GAAiBvsB,EAAW/C,gBAC1DqvB,EAAa5wjB,QAAU6wjB,GAAiBvsB,EAAWtkiB,SAEnD,IAAM8wjB,EAAoBj0f,EAASxmE,aACnCy6jB,GAAqBC,GAAoBzsB,EAAYwsB,GAErD,IAAME,EAAiBn0f,EAAS1mE,UAC1B86jB,EAAsBp0f,EAASt9E,eASrC,GARAyxkB,GAAkBE,GAAiB5sB,EAAY0sB,GAC/CC,GAAuBE,GAAsB7sB,EAAY2sB,GAEzDzzB,EAAe8G,EAAWtkjB,OAAQ68E,EAAS78E,QAC3Cw9iB,EAAe8G,EAAW/C,eAAgB1ke,EAAS0ke,gBACnD/D,EAAe8G,EAAWtkiB,QAAS68D,EAAS78D,SAGxCkkiB,GAAerne,IAAaA,EAASlvE,KAAK6zB,UAAW,CAGrD,IAAM4viB,EAAU9sB,EAAW32iB,KAC3ByjkB,EAAQ5viB,WAAa4viB,EAAQ5viB,WAAa,IAAI3qB,OAAOgmE,EAASlvE,KAAK6zB,YAI3E,IAAMrhC,EAAW08E,EAAS18E,SAC1B,GAAIA,EACA,IAAK,IAAIuF,EAAI,EAAGA,EAAIvF,EAAS6B,OAAQ0D,IAAK,CACtC,IAAM0hb,EAAUjnb,EAASuF,GACrB0hb,GAAWA,EAAQ09H,WACnB19H,EAAQk9H,GASRl9H,IAAYqpJ,KACZC,GAAsB,IAKtC9zf,EAAYviE,OAAO24H,eAAep2D,IAW1C,SAAyC+zf,GAIrC,IAHA,IAAIv6jB,EAAW,EACXxV,EAAY,KAEP8E,EAAIirkB,EAAiB3ukB,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CACnD,IAAMoL,EAAM6/jB,EAAiBjrkB,GAE7BoL,EAAIsF,SAAYA,GAAYtF,EAAIsF,SAEhCtF,EAAIlQ,UACA+rjB,GAAe77iB,EAAIlQ,UAAWA,EAAY+rjB,GAAe/rjB,EAAWkQ,EAAIlQ,aAnBhFywkB,CAAgCV,GAsBpC,SAASE,GAAiBzxkB,GACtB,OAAIA,IAAUmhjB,GACH,GAEFnhjB,IAAUqhjB,GACR,GAGArhjB,EAGf,SAAS8xkB,GAAiB5sB,EAAY0sB,GAClC,IAAMM,EAAgBhtB,EAAWnuiB,UAE7BmuiB,EAAWnuiB,UADXm7jB,EACuB,SAAC9xkB,EAAIC,GACxBuxkB,EAAexxkB,EAAIC,GACnB6xkB,EAAc9xkB,EAAIC,IAICuxkB,EAG/B,SAASG,GAAsB7sB,EAAY2sB,GACvC,IAAMM,EAAqBjtB,EAAW/kjB,eAElC+kjB,EAAW/kjB,eADXgykB,EAC4B,SAAC/xkB,EAAIC,EAAKmxjB,GAClCqgB,EAAoBzxkB,EAAIC,EAAKmxjB,GAC7B2gB,EAAmB/xkB,EAAIC,EAAKmxjB,IAIJqgB,EAGpC,SAASF,GAAoBzsB,EAAYwsB,GACrC,IAAMU,EAAmBltB,EAAWjuiB,aAEhCiuiB,EAAWjuiB,aADXm7jB,EAC0B,SAAChykB,EAAIC,GAC3BqxkB,EAAkBtxkB,EAAIC,GACtB+xkB,EAAiBhykB,EAAIC,IAICqxkB,EAyFlC,IAAIW,GAAkB,KACtB,SAAShxV,KACL,IAAKgxV,GAAiB,CAClB,IAAM,EAASnxB,GAAO,OACtB,GAAI,GAAU,EAAOz9a,SACjB4uc,GAAkB,EAAO5uc,cAKzB,IADA,IAAMvoH,EAAOD,OAAOquJ,oBAAoBp9J,IAAIilB,WACnC7qB,EAAI,EAAGA,EAAI4U,EAAKtY,SAAU0D,EAAG,CAClC,IAAM8U,EAAMF,EAAK5U,GACL,YAAR8U,GAA6B,SAARA,GACrBlP,IAAIilB,UAAU/V,KAASlP,IAAIilB,UAAJ,UACvBkhjB,GAAkBj3jB,IAKlC,OAAOi3jB,G,IAgDL,G,WACF,WAAYrykB,GAAK,oBACbvB,KAAKk5Q,QAAU33Q,E,6CAGnB,SAAYA,GACR,OAAO,IAAIsykB,EAAatykB,K,oBAM5B,SAAcA,GACV,OAAOsykB,EAAaC,UAAUvykB,GAASA,EAAM23Q,QAAU33Q,I,uBAG3D,SAAiBA,GACb,OAAOA,aAAiBsykB,M,GAGhC,SAASE,GAAmBh2jB,GACxB,QAAKi2jB,GAAWj2jB,KAETxT,MAAMyL,QAAQ+H,MACdA,aAAetQ,MACdm1O,OAAuB7kO,GA8BnC,SAASi2jB,GAAW7liB,GAChB,OAAa,OAANA,IAA4B,mBAANA,GAAiC,iBAANA,GAY5D,SAAS8liB,GAAcvsB,EAAOuC,EAAc1ojB,GACxC,OAAOmmjB,EAAMuC,GAAgB1ojB,EAGjC,SAAS2ykB,GAAWxsB,EAAOuC,GAIvB,OAAOvC,EAAMuC,GAejB,SAASkqB,GAAezsB,EAAOuC,EAAc1ojB,GAKzC,OAAIib,OAAOq1H,GADM61a,EAAMuC,GACC1ojB,KAkBpBmmjB,EAAMuC,GAAgB1ojB,GACf,GAIf,SAAS6ykB,GAAgB1sB,EAAOuC,EAAcoqB,EAAMC,GAChD,IAAMC,EAAYJ,GAAezsB,EAAOuC,EAAcoqB,GACtD,OAAOF,GAAezsB,EAAOuC,EAAe,EAAGqqB,IAASC,EAG5D,SAASC,GAAgB9sB,EAAOuC,EAAcoqB,EAAMC,EAAMG,GACtD,IAAMF,EAAYH,GAAgB1sB,EAAOuC,EAAcoqB,EAAMC,GAC7D,OAAOH,GAAezsB,EAAOuC,EAAe,EAAGwqB,IAASF,EAG5D,SAASG,GAAgBhtB,EAAOuC,EAAcoqB,EAAMC,EAAMG,EAAME,GAC5D,IAAMJ,EAAYH,GAAgB1sB,EAAOuC,EAAcoqB,EAAMC,GAC7D,OAAOF,GAAgB1sB,EAAOuC,EAAe,EAAGwqB,EAAME,IAASJ,EAuBnE,SAASK,GAAYzzkB,EAAMI,EAAO86jB,EAAWt8S,GACzC,IAAM2nS,EAAQsB,KAQd,OANImrB,GAAezsB,EADEwC,KACmB3ojB,KACtB0njB,KAl/EtB,SAAkC/C,EAAOwB,EAAOvmjB,EAAMI,EAAO86jB,EAAWt8S,GAOpE,IAAM10Q,EAAUs8iB,GAAiBzB,EAAOwB,GACxCwmB,GAAoBxmB,EAAMqY,IAAW10jB,EAAS00Q,EAAWmmS,EAAM3kjB,MAAOJ,EAAMI,EAAO86jB,GA4+E/EwY,CADctoB,KACkB7E,EAAOvmjB,EAAMI,EAAO86jB,EAAWt8S,IAG5D60T,GAiDX,SAASE,GAAeptB,EAAOjue,EAAQs7f,EAAIC,GAEvC,OADkBb,GAAezsB,EAAOwC,KAAoB6qB,GACzCt7f,EAAS6me,EAAgBy0B,GAAMC,EAASnP,GAK/D,SAASoP,GAAevtB,EAAOjue,EAAQs7f,EAAI7whB,EAAIgxhB,EAAIF,GAC/C,IACMT,EAAYH,GAAgB1sB,EADbsC,KACkC+qB,EAAIG,GAE3D,OADA/qB,GAAsB,GACfoqB,EAAY96f,EAAS6me,EAAgBy0B,GAAM7whB,EAAKo8f,EAAgB40B,GAAMF,EAASnP,GAK1F,SAASsP,GAAeztB,EAAOjue,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAIJ,GACvD,IACMT,EAAYC,GAAgB9sB,EADbsC,KACkC+qB,EAAIG,EAAIE,GAE/D,OADAjrB,GAAsB,GACfoqB,EACH96f,EAAS6me,EAAgBy0B,GAAM7whB,EAAKo8f,EAAgB40B,GAAM5whB,EAAKg8f,EAAgB80B,GAAMJ,EACrFnP,GA2eR,SAASwP,GAAW1rkB,EAAOw+jB,EAAY/hkB,EAAOC,EAAMgrK,EAASika,EAAYC,EAAgB9K,GACrF,IAAM/iB,EAAQsB,KACR7E,EAAQ8E,KACRusB,EAAgB7rkB,EAAQk8iB,GACxBK,EAAQ/B,EAAM8L,gBAtCxB,SAAiCtmjB,EAAOw6iB,EAAOuD,EAAOygB,EAAY/hkB,EAAOC,EAAMgrK,EAASika,EAAYC,GAGhG,IAAME,EAActxB,EAAM79iB,OAEpB4/iB,EAAQ2gB,GAAiB1iB,EAAOx6iB,EAAO,EAAmB0nK,GAAW,KAAM+2Y,GAAYqtB,EAAaH,IAC1GpJ,GAAkB/nB,EAAOuD,EAAOxB,EAAOkC,GAAYqtB,EAAaF,IAChE7oB,GAAuBvI,EAAO+B,GAC9B,IAAM6iB,EAAgB7iB,EAAMohB,OAASqD,GAAY,EAAkBzkB,EAAOiiB,EAAY/hkB,EAAOC,EAAM89iB,EAAM6mB,kBAAmB7mB,EAAM8mB,aAAc,KAAM9mB,EAAMD,QAASuxB,GAKrK,OAJsB,OAAlBtxB,EAAM53gB,UACN43gB,EAAM53gB,QAAQjsC,SAAS6jjB,EAAO+B,GAC9B6iB,EAAcx8hB,QAAU43gB,EAAM53gB,QAAQw8hB,cAAc7iB,IAEjDA,EAyB+BwvB,CAAwBF,EAAerxB,EAAOuD,EAAOygB,EAAY/hkB,EAAOC,EAAMgrK,EAASika,EAAYC,GACrIpxB,EAAMr0iB,KAAK0lkB,GACf/rB,GAAgBvD,GAAO,GACvB,IAAMyvB,EAAUjuB,EAAMqY,IAAUt/iB,cAAwC,IACxE3I,GAAYqsiB,EAAOuD,EAAOiuB,EAASzvB,GACnCoX,GAAgBqY,EAASjuB,GACzBumB,GAAcvmB,EAAOA,EAAM8tB,GAAiBnH,GAAiBsH,EAASjuB,EAAOiuB,EAASzvB,IAClFE,GAAgBF,IAChB8jB,GAA0B7lB,EAAOuD,EAAOxB,GAEtB,MAAlBqvB,GACAhL,GAAyB7iB,EAAOxB,EAAOukB,GA+B/C,SAASmL,GAAYjskB,GAEjB,OAAO4/X,GAn2WAm/K,GAAiBC,OAAOS,aAm2WLvD,GAAgBl8iB,GAojC9C,SAASkskB,GAAkBhxkB,GAAkC,IAA3B87T,EAA2B,uDAAnB+gP,EAAY2P,QAC5C3J,EAAQsB,KAGd,GAAc,OAAVtB,EAGA,OAAOkP,GAAS/xjB,EAAO87T,GAE3B,IAAMulP,EAAQmD,KACd,OAAO+H,GAAsBlL,EAAOwB,EAAOxH,EAAkBr7iB,GAAQ87T,GA4CzE,SAASm1Q,GAAWhhiB,EAAUvzC,EAAO86jB,GACjC,IAAM3U,EAAQsB,KAQd,OANImrB,GAAezsB,EADEwC,KACmB3ojB,IAGpCmqkB,GAFcziB,KACAsD,KACwB7E,EAAO5ygB,EAAUvzC,EAAOmmjB,EAAMqY,IAAW1D,GAAW,GAGvFyZ,GAMX,SAASC,GAAsC5xB,EAAO+B,EAAOwB,EAAOnmjB,EAAOy0kB,GACvE,IACMlob,EAAWkob,EAAe,QAAU,QAE1ClK,GAAqB3nB,EAAOuD,EAHbxB,EAAM/jjB,OAGqB2rJ,GAAWA,EAAUvsJ,GA2CnE,SAAS00kB,GAAetskB,EAAOxI,EAAMm0kB,EAAYC,GAC7C,IAAM7tB,EAAQsB,KACR7E,EAAQ8E,KACRusB,EAAgB3vB,GAAgBl8iB,EAIhC4pH,EAAWm0b,EAAMqY,IACjBhqW,EAAS2xV,EAAM8tB,GAAiBpW,GAAkB7rc,EAAUpyH,EAlrY3DunjB,GAAiBC,OAAOiD,kBAmrYzB1F,EAAQ/B,EAAM8L,gBA1CxB,SAAqCtmjB,EAAOw6iB,EAAOuD,EAAO3xV,EAAQ50N,EAAMm0kB,EAAYC,GAGhF,IAAME,EAActxB,EAAM79iB,OAEpB4/iB,EAAQ2gB,GAAiB1iB,EAAOx6iB,EAAO,EAAiBxI,EADhDinjB,GAAYqtB,EAAaH,IAavC,OAXsBpJ,GAAkB/nB,EAAOuD,EAAOxB,EAAOkC,GAAYqtB,EAAaF,IAElE,OAAhBrvB,EAAMj1b,OACNs+c,GAAqBrpB,EAAOA,EAAMj1b,OAAO,GAEnB,OAAtBi1b,EAAMihB,aACNoI,GAAqBrpB,EAAOA,EAAMihB,aAAa,GAE7B,OAAlBhjB,EAAM53gB,SACN43gB,EAAM53gB,QAAQ2piB,aAAa/xB,EAAO+B,GAE/BA,EA0BHiwB,CAA4BX,EAAerxB,EAAOuD,EAAO3xV,EAAQ50N,EAAMm0kB,EAAYC,GACnFpxB,EAAMr0iB,KAAK0lkB,GACf/rB,GAAgBvD,GAAO,GACvB,IAAMihB,EAAcjhB,EAAMihB,YACN,OAAhBA,GACA5Y,GAAgBh7b,EAAUwiG,EAAQoxW,GAEtC,IAAMliiB,EAAUihhB,EAAMjhhB,QACN,OAAZA,GACAw+hB,GAAiBlwc,EAAUwiG,EAAQ9wL,GAEvC,IAAMnsB,EAASotiB,EAAMptiB,OACN,OAAXA,GACA0qjB,GAAiBjwc,EAAUwiG,EAAQj9M,GAEK,KAAzB,GAAdotiB,EAAMvlP,QAGP7oT,GAAYqsiB,EAAOuD,EAAO3xV,EAAQmwV,GAKP,IA5pZxBwC,GAAiBC,OAAOgD,mBA6pZ3B2R,GAAgBvnW,EAAQ2xV,GA1pZ5BgB,GAAiBC,OAAOgD,oBA6pZpBvF,GAAgBF,KAChB8jB,GAA0B7lB,EAAOuD,EAAOxB,GACxC6jB,GAAsB5lB,EAAO+B,EAAOwB,IAEjB,OAAnB6tB,GACAhL,GAAyB7iB,EAAOxB,GAQxC,SAASkwB,KACL,IAAI9sB,EAAeD,KAEfK,KACAC,KAKAF,GADAH,EAAeA,EAAa1ihB,QACE,GAElC,IAAMs/gB,EAAQoD,EAlrZdZ,GAAiBC,OAAOgD,oBAqrZxB,IAAMxH,EAAQ8E,KACV9E,EAAM8L,kBACNvD,GAAuBvI,EAAOmF,GAC1BrD,GAAmBqD,IACnBnF,EAAM53gB,QAAQ8piB,WAAW/sB,IAGD,MAA5BpD,EAAMuhB,oBA31Xd,SAAuBvhB,GACnB,OAAkD,IAA5B,GAAdA,EAAMvlP,OA01X0B21Q,CAAcpwB,IAClD6vB,GAAsC5xB,EAAO+B,EAAO8C,KAAY9C,EAAMuhB,oBAAoB,GAE/D,MAA3BvhB,EAAMqhB,mBAt0Xd,SAAuBrhB,GACnB,OAAkD,IAA5B,GAAdA,EAAMvlP,OAq0XyB41Q,CAAcrwB,IACjD6vB,GAAsC5xB,EAAO+B,EAAO8C,KAAY9C,EAAMqhB,mBAAmB,GAajG,SAASiP,GAAU7skB,EAAOxI,EAAMm0kB,EAAYC,GACxCU,GAAetskB,EAAOxI,EAAMm0kB,EAAYC,GACxCa,KA4EJ,SAASK,GAAwB9skB,EAAO2rkB,EAAYC,GAChD,IAAM7tB,EAAQsB,KACR7E,EAAQ8E,KACRusB,EAAgB7rkB,EAAQk8iB,GAIxBK,EAAQ/B,EAAM8L,gBAtCxB,SAA8CtmjB,EAAOw6iB,EAAOuD,EAAO4tB,EAAYC,GAE3E,IAAME,EAActxB,EAAM79iB,OACpB2qH,EAAQm3b,GAAYqtB,EAAaH,GACjCpvB,EAAQ2gB,GAAiB1iB,EAAOx6iB,EAAO,EAA0B,eAAgBsnH,GAWvF,OARc,OAAVA,GACAs+c,GAAqBrpB,EAAOj1b,GAAO,GAGvCi7c,GAAkB/nB,EAAOuD,EAAOxB,EADdkC,GAAYqtB,EAAaF,IAErB,OAAlBpxB,EAAM53gB,SACN43gB,EAAM53gB,QAAQ2piB,aAAa/xB,EAAO+B,GAE/BA,EAwBHwwB,CAAqClB,EAAerxB,EAAOuD,EAAO4tB,EAAYC,GAC9EpxB,EAAMr0iB,KAAK0lkB,GACf/rB,GAAgBvD,GAAO,GAEvB,IAAMnwV,EAAS2xV,EAAM8tB,GACjB9tB,EAAMqY,IAAUt/iB,cAA2C,IAC/D3I,GAAYqsiB,EAAOuD,EAAO3xV,EAAQmwV,GAClCoX,GAAgBvnW,EAAQ2xV,GACpBtB,GAAgBF,KAChB8jB,GAA0B7lB,EAAOuD,EAAOxB,GACxC6jB,GAAsB5lB,EAAO+B,EAAOwB,IAElB,MAAlB6tB,GACAhL,GAAyB7iB,EAAOxB,GAQxC,SAASywB,KACL,IAAIrtB,EAAeD,KACblF,EAAQ8E,KACVS,KACAC,KAKAF,GADAH,EAAeA,EAAa1ihB,QACE,GAG9Bu9gB,EAAM8L,kBACNvD,GAAuBvI,EAAOmF,GAC1BrD,GAAmBqD,IACnBnF,EAAM53gB,QAAQ8piB,WAAW/sB,IAcrC,SAASstB,GAAmBjtkB,EAAO2rkB,EAAYC,GAC3CkB,GAAwB9skB,EAAO2rkB,EAAYC,GAC3CoB,KAYJ,SAASE,KACL,OAAO7tB,KAaX,SAASnrY,GAAU9/J,GAGf,QAASA,GAA2B,mBAAbA,EAAIM,KAK/B,SAASy4jB,GAAe/4jB,GACpB,QAASA,GAAgC,mBAAlBA,EAAI7Z,UAW/B,IAAM6R,GAAe+gkB,GAuBrB,SAASC,GAAWjhiB,EAAWkhiB,GAAmD,IAAvC3kO,EAAuC,wDAAnB4kO,EAAmB,uCACxEvvB,EAAQsB,KACR7E,EAAQ8E,KACR/C,EAAQmD,KAEd,OADA6tB,GAAiB/yB,EAAOuD,EAAOA,EAAMqY,IAAW7Z,EAAOpwgB,EAAWkhiB,EAAY3kO,EAAY4kO,GACnFF,GAuBX,SAASI,GAAwBrhiB,EAAWkhiB,GAAmD,IAAvC3kO,EAAuC,wDAAnB4kO,EAAmB,uCACrF/wB,EAAQmD,KACR3B,EAAQsB,KACR7E,EAAQ8E,KACRmmB,EAAa3kB,GAAuBtG,EAAMr0iB,MAC1CyjH,EAAW47c,GAAsBC,EAAYlpB,EAAOwB,GAE1D,OADAwvB,GAAiB/yB,EAAOuD,EAAOn0b,EAAU2yb,EAAOpwgB,EAAWkhiB,EAAY3kO,EAAY4kO,GAC5EE,GAOX,SAASC,GAAqBjzB,EAAOuD,EAAO5xgB,EAAWuhiB,GACnD,IAAM1W,EAAWxc,EAAMyc,QACvB,GAAgB,MAAZD,EACA,IAAK,IAAI94jB,EAAI,EAAGA,EAAI84jB,EAASx8jB,OAAS,EAAG0D,GAAK,EAAG,CAC7C,IAAMyvkB,EAAmB3W,EAAS94jB,GAClC,GAAIyvkB,IAAqBxhiB,GAAa6qhB,EAAS94jB,EAAI,KAAOwvkB,EAAU,CAIhE,IAAMxW,EAAWnZ,EAzqbjB,GA0qbM6vB,EAAwB5W,EAAS94jB,EAAI,GAC3C,OAAOg5jB,EAAS18jB,OAASozkB,EAAwB1W,EAAS0W,GAAyB,KAOvD,iBAArBD,IACPzvkB,GAAK,GAIjB,OAAO,KAEX,SAASqvkB,GAAiB/yB,EAAOuD,EAAOn0b,EAAU2yb,EAAOpwgB,EAAWkhiB,GAAmD,IAAvC3kO,EAAuC,wDAAnB4kO,EAAmB,uCAC7GO,EAAuBpxB,GAAgBF,GACvC+J,EAAkB9L,EAAM8L,gBACxB0Q,EAAW1Q,GAAmBob,GAAwBlnB,GAKtD0c,EAAWuK,GAAwB1jB,GAErC+vB,GAAiB,EAErB,GAAiB,EAAbvxB,EAAMxljB,KAAyB,CAC/B,IAAMq1N,EAAS4xV,GAAiBzB,EAAOwB,GACjCgwB,EAAWT,EAAsBA,EAAoBlhX,GAAU2sV,GAC/Dl2hB,EAASkrjB,EAASlrjB,QAAUupM,EAC5B4hX,EAAgB9W,EAAS18jB,OACzB48jB,EAAoBkW,EACtB,SAACxjB,GAAD,OAAYwjB,EAAoBzvB,GAAYiM,EAAOvN,EAAMv8iB,SAAS6iB,QAClE05hB,EAAMv8iB,MAGV,GAAI09iB,GAAqB9zb,GAAW,CAWhC,IAAIqkd,EAAmB,KAUvB,IAHKX,GAAuBO,IACxBI,EAAmBR,GAAqBjzB,EAAOuD,EAAO5xgB,EAAWowgB,EAAMv8iB,QAElD,OAArBiukB,EAA2B,CAK3B,IAAMC,EAAiBD,EAAiBE,sBAAwBF,EAChEC,EAAeE,qBAAuBf,EACtCY,EAAiBE,qBAAuBd,EACxCS,GAAiB,MAEhB,CAIDT,EAAagB,GAAa9xB,EAAOwB,EAAOl2iB,EAASwlkB,GAAY,GAC7D,IAAM7L,EAAY53c,EAASqH,OAAO88c,EAASv2kB,MAAQqrB,EAAQspB,EAAWkhiB,GAEtEnW,EAASj9jB,KAAKozkB,EAAY7L,GAC1BxK,GAAYA,EAAS/8jB,KAAKkyC,EAAWirhB,EAAmB4W,EAAeA,EAAgB,SAI3FX,EAAagB,GAAa9xB,EAAOwB,EAAOl2iB,EAASwlkB,GAAY,GAC7DxqjB,EAAOlB,iBAAiBwqB,EAAWkhiB,EAAY3kO,GAE/CwuN,EAASj9jB,KAAKozkB,GACdrW,GAAYA,EAAS/8jB,KAAKkyC,EAAWirhB,EAAmB4W,EAAetlO,QAM3E2kO,EAAagB,GAAa9xB,EAAOwB,EAAOl2iB,EAASwlkB,GAAY,GAGjE,IACIjkjB,EADE5Q,EAAU+jiB,EAAM/jiB,QAEtB,GAAIs1jB,GAA8B,OAAZt1jB,IAAqB4Q,EAAQ5Q,EAAQ2zB,IAAa,CACpE,IAAMm3N,EAAcl6O,EAAM5uB,OAC1B,GAAI8oQ,EACA,IAAK,IAAIplQ,EAAI,EAAGA,EAAIolQ,EAAaplQ,GAAK,EAAG,CACrC,IAAM8B,EAAQopB,EAAMlrB,GAEdowkB,EAAelljB,EAAMlrB,EAAI,GACzBqwkB,EAAoBxwB,EAAM/9iB,GAC1BwiC,EAAS+riB,EAAkBD,GAI3Bjke,EAAe7nE,EAAOjoC,UAAU8ykB,GAChCj6Z,EAAM8jZ,EAAS18jB,OACrB08jB,EAASj9jB,KAAKozkB,EAAYhje,GAC1B2sd,GAAYA,EAAS/8jB,KAAKkyC,EAAWowgB,EAAMv8iB,MAAOozK,IAAOA,EAAM,MAK/E,SAASo7Z,GAAiCzwB,EAAOl2iB,EAASwlkB,EAAY/ijB,GAClE,IAGI,OAAyB,IAAlB+ijB,EAAW/ijB,GAEtB,MAAOe,GAEH,OADA02I,GAAYg8Y,EAAO1yhB,IACZ,GAgBf,SAASgjjB,GAAa9xB,EAAOwB,EAAOl2iB,EAASwlkB,EAAYoB,GAGrD,OAAO,SAASC,EAA0CpkjB,GAGtD,GAAIA,IAAM0jJ,SACN,OAAOq/Z,EAIX,IAAMxnB,EAA0B,EAAdtJ,EAAMvlP,MACpBknP,GAAyB3B,EAAMv8iB,MAAO+9iB,GACtCA,EAE2C,IAA3B,GAAfA,EAz0bC,KA00bFinB,GAAcnf,GAMlB,IAJA,IAAI5yhB,EAASu7iB,GAAiCzwB,EAAOl2iB,EAASwlkB,EAAY/ijB,GAGtEqkjB,EAAiBD,EAA0CN,qBACxDO,GAEH17iB,EAASu7iB,GAAiCzwB,EAAOl2iB,EAAS8mkB,EAAgBrkjB,IAAM2I,EAChF07iB,EAAiBA,EAAeP,qBAOpC,OALIK,IAAqC,IAAXx7iB,IAC1B3I,EAAE/G,iBAEF+G,EAAE64Y,aAAc,GAEblwY,GA+Bf,SAAS27iB,KAAuB,IAATvif,EAAS,uDAAD,EAC3B,OAAOi2d,GAAgBj2d,GAkB3B,SAASwif,GAA4BtyB,EAAOuyB,GAGxC,IAFA,IAAIC,EAAyB,KACvBC,EA9+NV,SAA+BzyB,GAC3B,IAAMoe,EAAYpe,EAAMj1b,MACxB,GAAiB,MAAbqzc,EAAmB,CACnB,IAAMsU,EAAqBtU,EAAUr7jB,QAAQ,GAG7C,GAAiC,IAAP,EAArB2vkB,GACD,OAAOtU,EAAUsU,EAAqB,GAG9C,OAAO,KAo+NoBC,CAAsB3yB,GACxCr+iB,EAAI,EAAGA,EAAI4wkB,EAAgBt0kB,OAAQ0D,IAAK,CAC7C,IAAMkgjB,EAAY0wB,EAAgB5wkB,GAGlC,GAAkB,MAAdkgjB,GAMJ,GAA2B,OAAvB4wB,EACAxT,GAA2Bjf,EAAO6B,GAAkC,GACpEqd,GAAyBuT,EAAoB5wB,GAC7C,OAAOlgjB,OARP6wkB,EAAyB7wkB,EAWjC,OAAO6wkB,EA2BX,SAASI,GAAgBL,GACrB,IAAMM,EAAgB/vB,KAAWyI,IAv7btB,GAw7bX,IAAKsnB,EAActW,WAQf,IALA,IACMuW,EAAkBD,EAActW,WAClC/M,GAFuB+iB,EAAkBA,EAAgBt0kB,OAAS,EAErC,MAC3B80kB,EAAQD,EAAgBxvkB,QAC1B0vkB,EAAiBH,EAAc/+b,MACT,OAAnBk/b,GAAyB,CAC5B,IAAMC,EAAYV,EAAkBD,GAA4BU,EAAgBT,GAAmB,EACjF,OAAdU,IACIF,EAAME,GACNF,EAAME,GAAWhW,eAAiB+V,EAGlCF,EAAgBG,GAAaD,EAEjCD,EAAME,GAAaD,GAEvBA,EAAiBA,EAAer1kB,MAe5C,SAASu1kB,GAAatxB,GAAmC,IAAxBuxB,EAAwB,uDAAR,EAAGpod,EAAK,uCAC/Cy2b,EAAQsB,KACR7E,EAAQ8E,KACRoa,EAAkBwD,GAAiB1iB,EAAO0B,GAAgBiC,EAAW,GAAqB,KAAM72b,GAAS,MAE5E,OAA/Boyc,EAAgBZ,aAChBY,EAAgBZ,WAAa4W,GAEjC1vB,KACsD,KAAzB,GAAxB0Z,EAAgB1iQ,QAEjByiQ,GAAgBjf,EAAOuD,EAAO2b,GAiCtC,SAASiW,GAAsBxkiB,EAAUigiB,EAAI1Y,GAEzC,OADAkd,GAAuBzkiB,EAAU,GAAIigiB,EAAI,GAAI1Y,GACtCid,GA8BX,SAASC,GAAuBzkiB,EAAU2kC,EAAQs7f,EAAIC,EAAQ3Y,GAC1D,IAAM3U,EAAQsB,KACRwwB,EAAoB1E,GAAeptB,EAAOjue,EAAQs7f,EAAIC,GAQ5D,OAPIwE,IAAsB3T,IAGtB6F,GAFcziB,KACAsD,KACwB7E,EAAO5ygB,EAAU0kiB,EAAmB9xB,EAAMqY,IAAW1D,GAAW,GAInGkd,GAgCX,SAASE,GAAuB3kiB,EAAU2kC,EAAQs7f,EAAI7whB,EAAIgxhB,EAAIF,EAAQ3Y,GAClE,IAAM3U,EAAQsB,KACRwwB,EAAoBvE,GAAevtB,EAAOjue,EAAQs7f,EAAI7whB,EAAIgxhB,EAAIF,GAQpE,OAPIwE,IAAsB3T,IAGtB6F,GAFcziB,KACAsD,KACwB7E,EAAO5ygB,EAAU0kiB,EAAmB9xB,EAAMqY,IAAW1D,GAAW,GAInGod,GAkrBX,SAASC,GAAehvB,EAAOivB,EAAahwkB,EAAOiwkB,EAAWC,GAU1D,IATA,IAAMC,EAAkBpvB,EAAM/gjB,EAAQ,GAChCg0O,EAAwB,OAAhBg8V,EACV18O,EAAS28O,EAAY1T,GAAqB4T,GAAmBzT,GAAqByT,GAClFC,GAAiB,EAMH,IAAX98O,KAAoC,IAAnB88O,GAA4Bp8V,IAAQ,CAExD,IACMq8V,EAAsBtvB,EAAMztN,EAAS,GACvCg9O,GAF0BvvB,EAAMztN,GAEM08O,KACtCI,GAAiB,EACjBrvB,EAAMztN,EAAS,GAAK28O,EAAYrT,GAA8ByT,GAC1D5T,GAA8B4T,IAEtC/8O,EAAS28O,EAAY1T,GAAqB8T,GACtC3T,GAAqB2T,GAEzBD,IAEArvB,EAAM/gjB,EAAQ,GAAKiwkB,EAAYxT,GAA8B0T,GACzDvT,GAA8BuT,IAqB1C,SAASG,GAAeC,EAAmBP,GAGvC,OAA0B,OAAtBO,GAEe,MAAfP,IAECpvkB,MAAMyL,QAAQkkkB,GAAqBA,EAAkB,GAAKA,KACvDP,MAICpvkB,MAAMyL,QAAQkkkB,IAA6C,iBAAhBP,IAGzC9jB,GAAqBqkB,EAAmBP,IAC3C,EAaZ,IAAMQ,GAAc,CAChBC,QAAS,EACTz9jB,IAAK,EACL09jB,OAAQ,EACR94kB,MAAO,EACP+4kB,SAAU,GAMd,SAASC,GAAiB/wf,GACtB,OAAOA,EAAKx+B,UAAUmvhB,GAAYx9jB,IAAKw9jB,GAAYE,QAyCvD,SAASG,GAAmBhxf,EAAM7/E,GAC9B,IAAMP,EAAM+wkB,GAAYC,QACxB,OAAIhxkB,IAAQO,GACA,GAEZA,EAAQwwkB,GAAYE,OAmFxB,SAA2B7wf,EAAMvrE,EAAY45E,GACzC,KAAO55E,EAAa45E,GAAYrO,EAAK35C,WAAW5xB,GAAc,IAC1DA,IAEJ,OAAOA,EAvFsBw8jB,CAAkBjxf,EAAM2wf,GAAYx9jB,IAAMhT,EAAOP,GACvEsxkB,GAAkBlxf,EAAM7/E,EAAOP,IAoE1C,SAASsxkB,GAAkBlxf,EAAMvrE,EAAY45E,GACzC,KAAO55E,EAAa45E,GAAYrO,EAAK35C,WAAW5xB,IAAe,IAC3DA,IAEJ,OAAOA,EAwJX,SAAS08jB,GAAYvsiB,EAAM7sC,EAAOyzkB,GAE9B,OADA4F,GAAqBxsiB,EAAM7sC,EAAOyzkB,GAAQ,GACnC2F,GAiBX,SAASE,GAAYhzjB,EAAWtmB,GAE5B,OADAq5kB,GAAqB/yjB,EAAWtmB,EAAO,MAAM,GACtCs5kB,GAwDX,SAASC,GAAW71iB,GAChB81iB,GAAgBplB,GAAkBqlB,GAAmB/1iB,GAAS,GAWlE,SAAS+1iB,GAAkBplB,EAAepse,GACtC,IAAK,IAAI3hF,EAnVb,SAAwB2hF,GAEpB,OA2EJ,SAA0BA,GACtB2wf,GAAYx9jB,IAAM,EAClBw9jB,GAAYE,OAAS,EACrBF,GAAY54kB,MAAQ,EACpB44kB,GAAYG,SAAW,EACvBH,GAAYC,QAAU5wf,EAAKrlF,OAjF3B82kB,CAAiBzxf,GACVgxf,GAAmBhxf,EAAMkxf,GAAkBlxf,EAAM,EAAG2wf,GAAYC,UAiV1Dc,CAAe1xf,GAAO3hF,GAAK,EAAGA,EAAI2ykB,GAAmBhxf,EAAM3hF,GACpE8tjB,GAAiBC,EAAe2kB,GAAiB/wf,IAAO,GAWhE,SAASoxf,GAAqBxsiB,EAAM7sC,EAAOyzkB,EAAQgB,GAC/C,IAAMtuB,EAAQsB,KACR7E,EAAQ8E,KAIRgB,EAAeE,GAAsB,GACvChG,EAAMslB,iBACN0R,GAAuBh3B,EAAO/1gB,EAAM67gB,EAAc+rB,GAElDz0kB,IAAUskkB,IAAasO,GAAezsB,EAAOuC,EAAc1ojB,IAE3D65kB,GAAcj3B,EADAA,EAAMr0iB,KAAKu8iB,MACG3E,EAAOA,EAAMqY,IAAW3xhB,EAAMs5gB,EAAMuC,EAAe,GAmmBvF,SAAyB1ojB,EAAOyzkB,GAU5B,OATa,MAATzzkB,IAGuB,iBAAXyzkB,EACZzzkB,GAAgByzkB,EAEM,iBAAVzzkB,IACZA,EAAQk4B,EAAUy+hB,GAAgB32jB,MAE/BA,EA7mBiF85kB,CAAgB95kB,EAAOyzkB,GAASgB,EAAc/rB,GAa1I,SAAS8wB,GAAgBplB,EAAkB2lB,EAAc/5kB,EAAOy0kB,GAC5D,IAAM7xB,EAAQ8E,KACRgB,EAAeE,GAAsB,GACvChG,EAAMslB,iBACN0R,GAAuBh3B,EAAO,KAAM8F,EAAc+rB,GAEtD,IAAMtuB,EAAQsB,KACd,GAAIznjB,IAAUskkB,IAAasO,GAAezsB,EAAOuC,EAAc1ojB,GAAQ,CAGnE,IAAM2kjB,EAAQ/B,EAAMr0iB,KAAKu8iB,MACzB,GAAIkvB,GAAsBr1B,EAAO8vB,KAAkBwF,GAAiBr3B,EAAO8F,GAAe,CAIlF,IAUAwxB,EAAezF,EAAe9vB,EAAMuhB,mBAAqBvhB,EAAMqhB,kBAG9C,OAAjBkU,IAEAl6kB,EAAQu+iB,EAAuB27B,EAAcl6kB,GAAgB,KAIjEw0kB,GAAsC5xB,EAAO+B,EAAOwB,EAAOnmjB,EAAOy0kB,QAyX9E,SAA0B7xB,EAAO+B,EAAOwB,EAAOn0b,EAAUmod,EAAkBC,EAAkB3F,EAAc/rB,GACnGyxB,IAAqB7V,KAErB6V,EAAmB/4B,IAMvB,IAJA,IAAIngJ,EAAW,EACXhvQ,EAAW,EACXoob,EAAS,EAAIF,EAAiBv3kB,OAASu3kB,EAAiB,GAAK,KAC7Dh4Q,EAAS,EAAIi4Q,EAAiBx3kB,OAASw3kB,EAAiB,GAAK,KAC/C,OAAXC,GAA8B,OAAXl4Q,GAAiB,CAGvC,IAAMpK,EAAWkpG,EAAWk5K,EAAiBv3kB,OAASu3kB,EAAiBl5K,EAAW,QAAK/9Z,EACjFytI,EAAWshB,EAAWmob,EAAiBx3kB,OAASw3kB,EAAiBnob,EAAW,QAAK/uJ,EACnFo3kB,EAAS,KACTvnc,OAAW7vI,EACXm3kB,IAAWl4Q,GAEX8+F,GAAY,EACZhvQ,GAAY,EACR8lK,IAAapnL,IACb2pc,EAASn4Q,EACTpvL,EAAWpC,IAGC,OAAXwxL,GAA8B,OAAXk4Q,GAAmBA,EAASl4Q,GAKpD8+F,GAAY,EACZq5K,EAASD,IAOTpob,GAAY,EACZqob,EAASn4Q,EACTpvL,EAAWpC,GAEA,OAAX2pc,GACAT,GAAcj3B,EAAO+B,EAAOwB,EAAOn0b,EAAUsod,EAAQvnc,EAAU0hc,EAAc/rB,GAEjF2xB,EAASp5K,EAAWk5K,EAAiBv3kB,OAASu3kB,EAAiBl5K,GAAY,KAC3E9+F,EAASlwK,EAAWmob,EAAiBx3kB,OAASw3kB,EAAiBnob,GAAY,MApavEsob,CAAiB33B,EAAO+B,EAAOwB,EAAOA,EAAMqY,IAAWrY,EAAMuC,EAAe,GAAIvC,EAAMuC,EAAe,GA8TjH,SAAgC0L,EAAkB2lB,EAAc/5kB,GAC5D,GAAa,MAATA,GAAuD,KAAVA,EAC7C,OAAOohjB,GACX,IAAMo5B,EAAqB,GACrBC,EAAiB9jB,GAAgB32jB,GACvC,GAAIgJ,MAAMyL,QAAQgmkB,GACd,IAAK,IAAIn0kB,EAAI,EAAGA,EAAIm0kB,EAAe73kB,OAAQ0D,IACvC8tjB,EAAiBomB,EAAoBC,EAAen0kB,IAAI,QAG3D,GAA8B,iBAAnBm0kB,EACZ,IAAK,IAAMr/jB,KAAOq/jB,EACVA,EAAetuiB,eAAe/wB,IAC9Bg5iB,EAAiBomB,EAAoBp/jB,EAAKq/jB,EAAer/jB,QAIlC,iBAAnBq/jB,GACZV,EAAaS,EAAoBC,GAMrC,OAAOD,EAtV2GE,CAAuBtmB,EAAkB2lB,EAAc/5kB,GAAQy0kB,EAAc/rB,IAUnM,SAASuxB,GAAiBr3B,EAAO8F,GAE7B,OAAOA,GAAgB9F,EAAM4mB,kBAWjC,SAASoQ,GAAuBh3B,EAAOw1B,EAAa1vB,EAAc+rB,GAE9D,IAAMtrB,EAAQvG,EAAMr0iB,KACpB,GAAgC,OAA5B46iB,EAAMT,EAAe,GAAa,CAMlC,IAAM/D,EAAQwE,EAAM2B,MAEd6vB,EAAiBV,GAAiBr3B,EAAO8F,GAC3CsxB,GAAsBr1B,EAAO8vB,IAAiC,OAAhB2D,IAAyBuC,IAKvEvC,GAAc,GAElBA,EAkBR,SAAgCjvB,EAAOxE,EAAOi2B,EAAYnG,GACtD,IAAMoG,EAAmB3xB,GAAuBC,GAC5C2xB,EAAWrG,EAAe9vB,EAAMwhB,gBAAkBxhB,EAAMshB,eAC5D,GAAyB,OAArB4U,EAK2G,KAA9DpG,EAAe9vB,EAAMyhB,cAAgBzhB,EAAM0hB,iBAMpFuU,EAAaG,GADbH,EAAaI,GAA6B,KAAM7xB,EAAOxE,EAAOi2B,EAAYnG,GACxB9vB,EAAMj1b,MAAO+kd,GAE/DqG,EAAW,UAGd,CAGD,IAAMpV,EAAuB/gB,EAAM+gB,qBAEnC,IADyE,IAA1BA,GAA+Bvc,EAAMuc,KAA0BmV,EAI1G,GAFAD,EACII,GAA6BH,EAAkB1xB,EAAOxE,EAAOi2B,EAAYnG,GAC5D,OAAbqG,EAAmB,CAOnB,IAAIG,EAuCpB,SAAoC9xB,EAAOxE,EAAO8vB,GAC9C,IAAMyG,EAAWzG,EAAe9vB,EAAMyhB,cAAgBzhB,EAAM0hB,cAC5D,GAAuC,IAAnCvB,GAAqBoW,GAIzB,OAAO/xB,EAAMwb,GAAqBuW,IA7CGC,CAA2BhyB,EAAOxE,EAAO8vB,QACvCvxkB,IAAvB+3kB,GAAoCjykB,MAAMyL,QAAQwmkB,IAkGtE,SAAoC9xB,EAAOxE,EAAO8vB,EAAc2D,GAI5DjvB,EAAMwb,GAHW8P,EAAe9vB,EAAMyhB,cAAgBzhB,EAAM0hB,gBAGpB+R,EA/FxBgD,CAA2BjyB,EAAOxE,EAAO8vB,EAFzCwG,EACIF,GAFJE,EAAqBD,GAA6B,KAAM7xB,EAAOxE,EAAOs2B,EAAmB,GAAkCxG,GAE1E9vB,EAAMj1b,MAAO+kd,SAUlEqG,EAkGhB,SAAyB3xB,EAAOxE,EAAO8vB,GAOnC,IANA,IAAIqG,OAAW53kB,EACTmojB,EAAe1G,EAAM0G,aAKlB/kjB,EAAI,EAAIq+iB,EAAM+gB,qBAAsBp/jB,EAAI+kjB,EAAc/kjB,IAE3Dw0kB,EAAWC,GAAyBD,EADtB3xB,EAAM7ijB,GAAG9E,UAC8BizkB,GAEzD,OAAOsG,GAAyBD,EAAUn2B,EAAMj1b,MAAO+kd,GA7GhC4G,CAAgBlyB,EAAOxE,EAAO8vB,GAOrD,YAHiBvxkB,IAAb43kB,IACArG,EAAgB9vB,EAAMwhB,gBAAkB2U,EAAan2B,EAAMshB,eAAiB6U,GAEzEF,EA5EWU,CAAuBnyB,EAAOxE,EAAOyzB,EAAa3D,GAntBxE,SAA+BtrB,EAAOxE,EAAO42B,EAAuBnzkB,EAAOozkB,EAAelD,GAEtF,IAAImD,EAAYnD,EAAiB3zB,EAAMyhB,cAAgBzhB,EAAM0hB,cACzDqV,EAAW/W,GAAqB8W,GAChCE,EAAW7W,GAAqB2W,GACpCtyB,EAAM/gjB,GAASmzkB,EACf,IACInD,EADAwD,GAAyB,EAgB7B,GAdI5ykB,MAAMyL,QAAQ8mkB,IAKM,QAFpBnD,EAD4BmD,EACM,KAG9BjnB,GAJwBinB,EAIkBnD,GAAe,KAEzDwD,GAAyB,GAI7BxD,EAAcmD,EAEdC,EAMA,GAHyC,IAAbG,EAGH,CAErB,IAAMt2R,EAAes/Q,GAAqBxb,EAAMuyB,EAAW,IAC3DvyB,EAAM/gjB,EAAQ,GAAKs8jB,GAAgBr/Q,EAAcq2R,GAG5B,IAAjBr2R,IAEA8jQ,EAAM9jQ,EAAe,GACjB0/Q,GAAqB5b,EAAM9jQ,EAAe,GAAIj9S,IAGtD+gjB,EAAMuyB,EAAW,GAh/OA,OAg/O0BvyB,EAAMuyB,EAAW,GAAItzkB,GA/+OvD,QAk/OT+gjB,EAAM/gjB,EAAQ,GAAKs8jB,GAAgBgX,EAAU,GAG5B,IAAbA,IAEAvyB,EAAMuyB,EAAW,GAAK3W,GAAqB5b,EAAMuyB,EAAW,GAAItzkB,IAGpEszkB,EAAWtzkB,OAMf+gjB,EAAM/gjB,EAAQ,GAAKs8jB,GAAgBiX,EAAU,GAG5B,IAAbD,EACAA,EAAWtzkB,EAIX+gjB,EAAMwyB,EAAW,GAAK5W,GAAqB5b,EAAMwyB,EAAW,GAAIvzkB,GAEpEuzkB,EAAWvzkB,EAIXwzkB,IACAzyB,EAAM/gjB,EAAQ,GAAKy8jB,GAA8B1b,EAAM/gjB,EAAQ,KAEnE+vkB,GAAehvB,EAAOivB,EAAahwkB,GAAO,GAC1C+vkB,GAAehvB,EAAOivB,EAAahwkB,GAAO,GAoB9C,SAAwCu8iB,EAAOyzB,EAAajvB,EAAO/gjB,EAAOkwkB,GACtE,IAAMwC,EAAWxC,EAAiB3zB,EAAMwhB,gBAAkBxhB,EAAMshB,eAChD,MAAZ6U,GAA6D,iBAAf1C,GAC9C9jB,GAAqBwmB,EAAU1C,IAAgB,IAE/CjvB,EAAM/gjB,EAAQ,GAAK48jB,GAA8B7b,EAAM/gjB,EAAQ,KAxBnEyzkB,CAA+Bl3B,EAAOyzB,EAAajvB,EAAO/gjB,EAAOkwkB,GACjEmD,EAAY/W,GAAgBgX,EAAUC,GAClCrD,EACA3zB,EAAMyhB,cAAgBqV,EAGtB92B,EAAM0hB,cAAgBoV,EAkoBtBK,CAAsB3yB,EAAOxE,EAAOyzB,EAAa1vB,EAAciyB,EAAgBlG,IA+LvF,SAASuG,GAA6BH,EAAkB1xB,EAAOxE,EAAOi2B,EAAYnG,GAG9E,IAAIsH,EAAmB,KACjB1wB,EAAe1G,EAAM0G,aACvBqa,EAAuB/gB,EAAM+gB,qBAOjC,KAN8B,IAA1BA,EACAA,EAAuB/gB,EAAMyG,eAG7Bsa,IAEGA,EAAuBra,IAG1BuvB,EAAaG,GAAyBH,GAFtCmB,EAAmB5yB,EAAMuc,IAE0ClkkB,UAAWizkB,GAC1EsH,IAAqBlB,IAEzBnV,IAQJ,OANyB,OAArBmV,IAIAl2B,EAAM+gB,qBAAuBA,GAE1BkV,EASX,SAASG,GAAyBH,EAAYlrd,EAAO+kd,GACjD,IAAMuH,EAAgBvH,EAAe,EAAkB,EACnDwH,GAAiB,EACrB,GAAc,OAAVvsd,EACA,IAAK,IAAIppH,EAAI,EAAGA,EAAIopH,EAAM9sH,OAAQ0D,IAAK,CACnC,IAAMyJ,EAAO2/G,EAAMppH,GACC,iBAATyJ,EACPkskB,EAAgBlskB,EAGZkskB,IAAkBD,IACbhzkB,MAAMyL,QAAQmmkB,KACfA,OAA4B13kB,IAAf03kB,EAA2B,GAAK,CAAC,GAAIA,IAEtDxmB,GAAiBwmB,EAAY7qkB,IAAM0kkB,GAAsB/kd,IAAQppH,KAKjF,YAAsBpD,IAAf03kB,EAA2B,KAAOA,EAwJ7C,SAASf,GAAcj3B,EAAO+B,EAAOwB,EAAOn0b,EAAUnlF,EAAM7sC,EAAOy0kB,EAAc/rB,GAC7E,GAAmB,EAAb/D,EAAMxljB,KAAZ,CAKA,IAAMgqjB,EAAQvG,EAAMr0iB,KACd2tkB,EAAS/yB,EAAMT,EAAe,GAI/ByzB,GAhiRD,IADoB,EA8hRkCD,GACtDE,GAAiBjzB,EAAOxE,EAAOwB,EAAOt5gB,EAAMi4hB,GAAqBoX,GAASzH,QAC1EvxkB,KAGKi5kB,GAAsBn8kB,IA3jR3B,IADoB,EA8jRkBk8kB,KAE9Bl8kB,EAAQo8kB,GAAiBjzB,EAAO,KAAMhD,EAAOt5gB,EAAM67gB,EAAc+rB,IA/rSjF,SAAsBzid,EAAUyid,EAActX,EAAOtwhB,EAAM7sC,GACvD,IAAMq8kB,EAAev2B,GAAqB9zb,GAC1C,GAAIyid,EAEKz0kB,EAWGq8kB,EACArqd,EAAS9C,SAASiuc,EAAOtwhB,GAIzBswhB,EAAM/7jB,UAAUE,IAAIurC,GAdpBwviB,EACArqd,EAASM,YAAY6qc,EAAOtwhB,GAG5BswhB,EAAM/7jB,UAAU6I,OAAO4iC,OAc9B,CACD,IAAIuyR,GAA+B,IAAvBvyR,EAAKnlC,QAAQ,UAAcxE,EAAYq5jB,GAAoB+f,SACvE,GAAa,MAATt8kB,EAEIq8kB,EACArqd,EAASE,YAAYirc,EAAOtwhB,EAAMuyR,GAGlC+9P,EAAMnzjB,MAAM6rR,eAAehpP,OAG9B,CAGD,IAAM0viB,EAA+B,iBAAVv8kB,GAAqBA,EAAMoyQ,SAAS,cAC3DmqU,IAEAv8kB,EAAQA,EAAMiI,MAAM,GAAI,IACxBm3T,GAASm9P,GAAoBigB,WAG7BH,EACArqd,EAASI,SAAS+qc,EAAOtwhB,EAAM7sC,EAAOo/T,GAItC+9P,EAAMnzjB,MAAMolH,YAAYviF,EAAM7sC,EAAOu8kB,EAAc,YAAc,MAipSzEE,CAAazqd,EAAUyid,EADTvuB,GAAiB4E,KAAoB3E,GACPt5gB,EAAM7sC,KA+B1D,SAASo8kB,GAAiBjzB,EAAOxE,EAAOwB,EAAOt5gB,EAAMzkC,EAAOqskB,GAQxD,IAFA,IAAMiI,EAA4B,OAAV/3B,EACpB3kjB,OAAQkD,EACLkF,EAAQ,GAAG,CACd,IAAMu0kB,EAASxzB,EAAM/gjB,GACfw0kB,EAAkB5zkB,MAAMyL,QAAQkokB,GAEhCvhkB,EAAMwhkB,EAAkBD,EAAO,GAAKA,EACpCE,EAAuB,OAARzhkB,EACjB0hkB,EAAoB32B,EAAM/9iB,EAAQ,GAClC00kB,IAAsBxY,KAQtBwY,EAAoBD,EAAez7B,QAAcl+iB,GAErD,IAAIW,EAAeg5kB,EAAenoB,GAAiBooB,EAAmBjwiB,GAClEzxB,IAAQyxB,EAAOiwiB,OAAoB55kB,EAIvC,GAHI05kB,IAAoBT,GAAsBt4kB,KAC1CA,EAAe6wjB,GAAiBioB,EAAQ9viB,IAExCsviB,GAAsBt4kB,KACtB7D,EAAQ6D,EACJ64kB,GACA,OAAO18kB,EAGf,IAAMk8kB,EAAS/yB,EAAM/gjB,EAAQ,GAC7BA,EAAQs0kB,EAAkB/X,GAAqBuX,GAAUpX,GAAqBoX,GAElF,GAAc,OAAVv3B,EAAgB,CAGhB,IAAIm2B,EAAWrG,EAAe9vB,EAAMwhB,gBAAkBxhB,EAAMshB,eAC5C,MAAZ6U,IACA96kB,EAAQ00jB,GAAiBomB,EAAUjuiB,IAG3C,OAAO7sC,EAQX,SAASm8kB,GAAsBn8kB,GAK3B,YAAiBkD,IAAVlD,EA8BX,SAASg6kB,GAAsBr1B,EAAO8vB,GAClC,OAA4F,IAApF9vB,EAAMvlP,OAASq1Q,EAAe,GAAyB,KAkBnE,SAASsI,GAAO30kB,GAAiB,IAAVpI,EAAU,uDAAF,GACrBmmjB,EAAQsB,KACR7E,EAAQ8E,KACRusB,EAAgB7rkB,EAAQk8iB,GAIxBK,EAAQ/B,EAAM8L,gBAChB4W,GAAiB1iB,EAAOqxB,EAAe,EAAcj0kB,EAAO,MAC5D4ijB,EAAMr0iB,KAAK0lkB,GACT+I,EAAa72B,EAAM8tB,GAAiB18c,GAAe4ub,EAAMqY,IAAWx+jB,GAC1EuW,GAAYqsiB,EAAOuD,EAAO62B,EAAYr4B,GAEtCuD,GAAgBvD,GAAO,GA8B3B,SAASs4B,GAAkBzJ,GAEvB,OADA0J,GAAmB,GAAI1J,EAAI,IACpByJ,GAqBX,SAASC,GAAmBhlgB,EAAQs7f,EAAIC,GACpC,IAAMttB,EAAQsB,KACR01B,EAAe5J,GAAeptB,EAAOjue,EAAQs7f,EAAIC,GAIvD,OAHI0J,IAAiB7Y,IACjByJ,GAAoB5nB,EAAO2E,KAAoBqyB,GAE5CD,GAqBX,SAASE,GAAmBllgB,EAAQs7f,EAAI7whB,EAAIgxhB,EAAIF,GAC5C,IAAMttB,EAAQsB,KACR01B,EAAezJ,GAAevtB,EAAOjue,EAAQs7f,EAAI7whB,EAAIgxhB,EAAIF,GAI/D,OAHI0J,IAAiB7Y,IACjByJ,GAAoB5nB,EAAO2E,KAAoBqyB,GAE5CC,GAsBX,SAASC,GAAmBnlgB,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAIJ,GACpD,IAAMttB,EAAQsB,KACR01B,EAAevJ,GAAeztB,EAAOjue,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAIJ,GAIvE,OAHI0J,IAAiB7Y,IACjByJ,GAAoB5nB,EAAO2E,KAAoBqyB,GAE5CE,GAwIX,SAASC,GAAmBplgB,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAI0J,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIvK,GAC5F,IAAMttB,EAAQsB,KACR01B,EAr7IV,SAAwBh3B,EAAOjue,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAI0J,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIvK,GAC/F,IAAM/qB,EAAeD,KACjBuqB,EAAYG,GAAgBhtB,EAAOuC,EAAc8qB,EAAIG,EAAIE,EAAI2J,GAGjE,OAFAxK,EAAYG,GAAgBhtB,EAAOuC,EAAe,EAAGg1B,EAAIE,EAAIE,EAAIE,IAAOhL,EACxEpqB,GAAsB,GACfoqB,EAAY96f,EAAS6me,EAAgBy0B,GAAM7whB,EAAKo8f,EAAgB40B,GAAM5whB,EACzEg8f,EAAgB80B,GAAM0J,EAAKx+B,EAAgBy+B,GAAMC,EAAK1+B,EAAgB2+B,GAAMC,EAC5E5+B,EAAgB6+B,GAAMC,EAAK9+B,EAAgB++B,GAAMC,EAAKh/B,EAAgBi/B,GAAMvK,EAC5EnP,GA66IiB2Z,CAAe93B,EAAOjue,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAI0J,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIvK,GAI/G,OAHI0J,IAAiB7Y,IACjByJ,GAAoB5nB,EAAO2E,KAAoBqyB,GAE5CG,GA+DX,SAASY,GAAuBhmgB,EAAQs7f,EAAIC,GAGxC+F,GAAgBplB,GAAkBqlB,GADRlG,GADZ9rB,KACkCvve,EAAQs7f,EAAIC,IACY,GAyB5E,SAAS0K,GAAuBjmgB,EAAQs7f,EAAI7whB,EAAIgxhB,EAAIF,GAGhD+F,GAAgBplB,GAAkBqlB,GADR/F,GADZjsB,KACkCvve,EAAQs7f,EAAI7whB,EAAIgxhB,EAAIF,IACI,GA4B5E,SAAS2K,GAAuBlmgB,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAIJ,GAGxD+F,GAAgBplB,GAAkBqlB,GADR7F,GADZnsB,KACkCvve,EAAQs7f,EAAI7whB,EAAIgxhB,EAAI5whB,EAAI8whB,EAAIJ,IACJ,GA44B5E,SAAS4K,GAAe9qiB,EAAUvzC,EAAO86jB,GACrC,IAAM3U,EAAQsB,KAQd,OANImrB,GAAezsB,EADEwC,KACmB3ojB,IAGpCmqkB,GAFcziB,KACAsD,KACwB7E,EAAO5ygB,EAAUvzC,EAAOmmjB,EAAMqY,IAAW1D,GAAW,GAGvFujB,GAuBX,SAASC,GAAwB/qiB,EAAUvzC,EAAO86jB,GAC9C,IAAM3U,EAAQsB,KAEd,GAAImrB,GAAezsB,EADEwC,KACmB3ojB,GAAQ,CAC5C,IAAM4ijB,EAAQ8E,KACR/C,EAAQqG,KAGdmf,GAAwBvnB,EAAO+B,EAAOwB,EAAO5ygB,EAAUvzC,EADtC4tkB,GADE1kB,GAAuBtG,EAAMr0iB,MACGo2iB,EAAOwB,GACc2U,GAAW,GAGvF,OAAOwjB,GAoCX,IAAMv/Z,QAAI77K,EAONq7kB,GAAW,CACX,KACA,CAAC,CAAC,IAAK,KAAM,CAAC,KAAM,MAAOx/Z,IAC3B,CAAC,CAAC,KAAM,MAAOA,GAAGA,IAClB,CACI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAChF,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACnE,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEzCA,GACA,CACI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxD,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC9E,CACI,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAC1E,UAAW,WAAY,aAG/BA,GACA,CAAC,CAAC,IAAK,KAAM,CAAC,KAAM,MAAO,CAAC,gBAAiB,gBAC7C,EACA,CAAC,EAAG,GACJ,CAAC,SAAU,WAAY,YAAa,mBACpC,CAAC,SAAU,YAAa,cAAe,kBACvC,CAAC,WAAYA,GAAG,eAAkBA,IAClC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAAK,SAAK,SAAK,MAAO,KAC1D,CAAC,YAAa,SAAU,eAAa,OACrC,MACA,IACA,YACA,GACA,MArCJ,SAAgBvoI,GACZ,IAAIlwC,EAAI0W,KAAKs7B,MAAMt7B,KAAKqiC,IAAI7I,IAAK93C,EAAI83C,EAAE9lB,WAAWzwB,QAAQ,YAAa,IAAI2C,OAC3E,OAAU,IAAN0D,GAAiB,IAAN5H,EACJ,EACJ,IA+CP8/kB,GAAc,GAOlB,SAASC,GAAmBlwkB,EAAMmwkB,EAAUC,GAChB,iBAAbD,IACPC,EAAYD,EACZA,EAAWnwkB,EAAKqwkB,GAAgBC,WAEpCH,EAAWA,EAASrjkB,cAAcpb,QAAQ,KAAM,KAChDu+kB,GAAYE,GAAYnwkB,EACpBowkB,IACAH,GAAYE,GAAUE,GAAgBE,WAAaH,GAU3D,SAASI,GAAen7hB,GACpB,IAAMo7hB,EAyFV,SAAyBp7hB,GACrB,OAAOA,EAAOvoC,cAAcpb,QAAQ,KAAM,KA1FjBg/kB,CAAgBr7hB,GACrC7T,EAAQmviB,GAAcF,GAC1B,GAAIjviB,EACA,OAAOA,EAGX,IAAMoviB,EAAeH,EAAiBh+jB,MAAM,KAAK,GAEjD,GADA+uB,EAAQmviB,GAAcC,GAElB,OAAOpviB,EAEX,GAAqB,OAAjBoviB,EACA,OAAOZ,GAEX,MAAM,IAAIzrjB,MAAJ,8CAAiD8wB,EAAjD,OAWV,SAASw7hB,GAAsBx7hB,GAE3B,OADam7hB,GAAen7hB,GAChBg7hB,GAAgBS,eAAiB,KAUjD,SAASC,GAAoB17hB,GAEzB,OADam7hB,GAAen7hB,GAChBg7hB,GAAgBW,YAMhC,SAASL,GAAcF,GAKnB,OAJMA,KAAoBR,KACtBA,GAAYQ,GAAoB99B,GAAQs+B,IAAMt+B,GAAQs+B,GAAGjwW,QAAU2xU,GAAQs+B,GAAGjwW,OAAOxmL,SACjFm4f,GAAQs+B,GAAGjwW,OAAOxmL,QAAQi2hB,IAE3BR,GAAYQ,GAWvB,IAAIJ,GACH,SAAUA,G,OACPA,EAAgBA,EAAe,SAAe,GAAK,WACnDA,EAAgBA,EAAe,iBAAuB,GAAK,mBAC3DA,EAAgBA,EAAe,qBAA2B,GAAK,uBAC/DA,EAAgBA,EAAe,WAAiB,GAAK,aACrDA,EAAgBA,EAAe,eAAqB,GAAK,iBACzDA,EAAgBA,EAAe,aAAmB,GAAK,eACvDA,EAAgBA,EAAe,iBAAuB,GAAK,mBAC3DA,EAAgBA,EAAe,KAAW,GAAK,OAC/CA,EAAgBA,EAAe,eAAqB,GAAK,iBACzDA,EAAgBA,EAAe,aAAmB,GAAK,eACvDA,EAAgBA,EAAe,WAAiB,IAAM,aACtDA,EAAgBA,EAAe,WAAiB,IAAM,aACtDA,EAAgBA,EAAe,eAAqB,IAAM,iBAC1DA,EAAgBA,EAAe,cAAoB,IAAM,gBACzDA,EAAgBA,EAAe,cAAoB,IAAM,gBACzDA,EAAgBA,EAAe,aAAmB,IAAM,eACxDA,EAAgBA,EAAe,eAAqB,IAAM,iBAC1DA,EAAgBA,EAAe,aAAmB,IAAM,eACxDA,EAAgBA,EAAe,WAAiB,IAAM,aACtDA,EAAgBA,EAAe,eAAqB,IAAM,iBAC1DA,EAAgBA,EAAe,WAAiB,IAAM,aACtDA,EAAgBA,EAAe,UAAgB,IAAM,YAtB9CA,EAAV,CADkB,IAuCba,GAAgB,CAAC,OAAQ,MAAO,MAAO,MAAO,QAY9CC,GAAoB,QAmBpBC,GAAiB,CACnB3niB,OAAQ,WAON4niB,GAAa,CACf5niB,OAAQ,OAKR6niB,GACH,SAAUA,G,OAKPA,EAAiBA,EAAgB,MAAY,GAAK,QAIlDA,EAAiBA,EAAgB,eAAqB,GAAK,iBAI3DA,EAAiBA,EAAgB,QAAc,GAAK,UAb7CA,EAAV,CADmB,IAgChBC,GAAYJ,GAQhB,SAASK,GAAYrB,GApzkBrB,IAAuBt/B,EACL,OADKA,EAqzkBLs/B,IAnzkBVt5c,EAmzkBS,kCAnzkBOg6a,EAAQ,KAAM,MAozkBV,iBAAbs/B,IACPoB,GAAYpB,EAASrjkB,cAAcpb,QAAQ,KAAM,MA6BzD,SAASogkB,GAAgC3W,EAAa3B,EAAc5B,GAChE,IAAM65B,EAAyBj4B,EAAa0d,kBACtCA,EAAoBz8jB,MAAMyL,QAAQurkB,GAA0BA,EAAuB,GAAKA,EAC9F,OAA0B,OAAtBva,EACOvF,GAAkCxW,EAAa3B,EAAc5B,GAI7DF,GAAYE,EAAMsf,IAQjC,SAASnF,GAAwBtuc,EAAUwuc,EAAYra,EAAOoa,EAAYhD,GACtE,IAAMyiB,EAAyBxf,EAAWiF,kBAC1C,GAAIz8jB,MAAMyL,QAAQurkB,GAAyB,CAOvC,IAAIC,EAAa1f,EACb2f,EAAc,KAKlB,GAJwB,EAAlB1f,EAAWrhkB,OACb+glB,EAAcD,EACdA,EAAa1iB,GAEE,OAAf0iB,GAAwE,IAA7B,EAAnBzf,EAAWphQ,OACnC,IAAK,IAAI94T,EAAI,EAAGA,EAAI05kB,EAAuBp9kB,OAAQ0D,IAI/C+2jB,GAAmBrrc,EAAUiud,EADX95B,EAAM65B,EAAuB15kB,IACK45kB,GAAa,IA2CjF,SAASC,GAAmCC,EAAgBC,GAKxD,GADAD,EAAe/9kB,KAAKg+kB,GAChBD,EAAex9kB,OAAS,EACxB,IAAK,IAAI0D,EAAI85kB,EAAex9kB,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CACjD,IAAMg6kB,EAAgBF,EAAe95kB,GAGhCi6kB,GAAWD,IACRE,GAAwBF,EAAeD,IACC,QAgBlDj4kB,EAhB+Bk4kB,EAgBjB7a,kBACbz8jB,MAAMyL,QAAQrM,GAASA,EAAM,GAAKA,IAdzBq4kB,GAAqBH,EAAeD,EAASj4kB,OAYjE,IACUA,EAPV,SAASm4kB,GAAW57B,GAChB,QAAsB,GAAbA,EAAMxljB,MAEnB,SAASqhlB,GAAwBF,EAAeD,GAC5C,OAAOE,GAAWF,IAAaC,EAAcl4kB,MAAQi4kB,EAASj4kB,MAMlE,SAASq4kB,GAAqB97B,EAAO3kjB,GACjC,IAAMoI,EAAQu8iB,EAAM8gB,kBAChBz8jB,MAAMyL,QAAQrM,GAEdA,EAAM,GAAKpI,GAGXogkB,GAAgBC,GAAiCC,IACjD3b,EAAM8gB,kBAAoBzlkB,GAwBlC,SAAS0glB,GAAQ99B,EAAOx6iB,GACpB,IAAMpI,EAAQ4ijB,EAAMr0iB,KAAKnG,GACzB,OAAc,OAAVpI,GAAmC,iBAAVA,EAClB,KASEA,EAAMmsC,eAAe,yBAA2BnsC,EACzDA,EAAMA,MAqDd,SAAS2glB,GAAuB/9B,EAAOw9B,EAAgBh4kB,GACnD,IAAMu8iB,EAAQ4gB,GAAmB3iB,EAAOx6iB,EAAO,GAAsB,KAAM,MAE3E,OADA+3kB,GAAmCC,EAAgBz7B,GAC5CA,EAUX,SAASi8B,GAAuBC,EAAM16B,GAClC,IAAM26B,EAAc36B,EAAM06B,EAAKE,uBAC/B,OAAuB,OAAhBD,EAAuBA,EAAeA,EAAc,GAAKA,EAAcA,EAqClF,IAAIE,GAAa,EAMbC,GAAoB,EAsCxB,SAASC,GAAmB/6B,EAAOg7B,EAAe1gB,EAAa2gB,GAE3D,IADA,IAAMpvd,EAAWm0b,EAAMqY,IACdl4jB,EAAI,EAAGA,EAAI66kB,EAAcv+kB,OAAQ0D,IAAK,CAC3C,IAAMqhkB,EAASwZ,EAAc76kB,KACvB2hF,EAAOk5f,EAAc76kB,GAErB+6kB,GAAa1Z,EAASkY,GAAiByB,kBAAoBzB,GAAiByB,eAC5El5kB,EAAQu/jB,IAAWkY,GAAiB0B,MACtCpkB,EAAQhX,EAAM/9iB,GACJ,OAAV+0jB,IAGAA,EAAQhX,EAAM/9iB,IAPCu/jB,EAASkY,GAAiB2B,WAAa3B,GAAiB2B,QAQvDxvd,EAAS9yG,cAAc+oE,GAAQsvC,GAAevF,EAAU/pC,IAExEo5f,GAA6B,OAAhB5gB,GACbpD,GAAmBrrc,EAAUyuc,EAAatD,EAAOikB,GAAiB,IAY9E,SAASK,GAAoB7+B,EAAO8+B,EAAgBv7B,EAAO+5B,GAWvD,IATA,IAQIyB,EARE3vd,EAAWm0b,EAAMqY,IAEnBojB,EAAU,KAOLt7kB,EAAI,EAAGA,EAAIo7kB,EAAe9+kB,OAAQ0D,IAAK,CAC5C,IAAMqhkB,EAAS+Z,EAAep7kB,GAC9B,GAAqB,iBAAVqhkB,EAAoB,CAC3B,IAAMka,EAAgBH,IAAiBp7kB,GACV,OAAzB6/iB,EAAM07B,KAGN17B,EAAM07B,GAAiBtqd,GAAevF,EAAU21c,SAGnD,GAAqB,iBAAVA,EACZ,OAAiB,EAATA,GACJ,KAAK,EACD,IAAMma,EAAyCna,IAlIzC,GAmIU,OAAZia,IAIAA,EAAUE,EACVH,EAAY5hB,GAAiB/tc,EAAUkud,IAE3C,IAAIkB,OAAe,EACf3gB,OAAW,EAUf,GATIqhB,IAAcF,GACdR,EAAkBlB,EAClBzf,EAAckhB,IAGdP,EAAkB,KAClB3gB,EAAcxa,GAAYE,EAAM27B,KAGhB,OAAhBrhB,EAAsB,CAMtB,IAAMshB,GAxJL,OAwJwCpa,KAxJb,EA8J5BtK,GAAmBrrc,EAAUyuc,EAFfta,EAAM47B,GAE6BX,GAAiB,GAClE,IAAMP,EAAOH,GAAQ99B,EAAOm/B,GAC5B,GAAa,OAATlB,GAAiC,iBAATA,EAAmB,CAI3C,IAAMmB,EAAYpB,GAAuBC,EAAM16B,GAC7B,OAAd67B,GACAP,GAAoB7+B,EAAOi+B,EAAK98kB,OAAOi+kB,GAAY77B,EAAOA,EAAM06B,EAAKoB,aAIjF,MACJ,KAAK,EACD,IACMvpT,EAAWgpT,IAAiBp7kB,GAC5B+9jB,EAAYqd,IAAiBp7kB,GAGnCqmkB,GAAoB36c,EAAUk0b,GALLyhB,IAAW,EAK6BxhB,GAAQ,KAAM,KAAMztR,EAAU2rS,EAAW,MAC1G,MACJ,QACI,MAAM,IAAIvxiB,MAAJ,gEAAmE60iB,EAAnE,WAId,OAAQA,GACJ,KAAKiY,GACD,IAAMsC,EAAeR,IAAiBp7kB,GAChC67kB,EAAmBT,IAAiBp7kB,GACV,OAA5B6/iB,EAAMg8B,IAQNpmB,GAHqB5V,EAAMg8B,GACvBxkB,GAAkB3rc,EAAUkwd,GAEF/7B,GAElC,MACJ,KAAKw5B,GACD,IAAM7va,EAAU4xa,IAAiBp7kB,GAC3B,EAAmBo7kB,IAAiBp7kB,GACV,OAA5B6/iB,EAAM,IAQN4V,GAHqB5V,EAAM,GACvB0X,GAAkB7rc,EAAU89C,EAAS,MAEXq2Y,KAoBtD,SAASi8B,GAAmBx/B,EAAOuD,EAAOk8B,EAAeC,EAAoBtB,GACzE,IAAK,IAAI16kB,EAAI,EAAGA,EAAI+7kB,EAAcz/kB,OAAQ0D,IAAK,CAE3C,IAAMi8kB,EAAWF,EAAc/7kB,GAEzBk8kB,EAAYH,IAAgB/7kB,GAClC,GAAIi8kB,EAAWvB,EAGX,IADA,IAAIhhlB,EAAQ,GACHgT,EAAI1M,EAAI,EAAG0M,GAAM1M,EAAIk8kB,EAAYxvkB,IAAK,CAC3C,IAAM20jB,EAAS0a,EAAcrvkB,GAC7B,GAAqB,iBAAV20jB,EACP3nkB,GAAS2nkB,OAER,GAAqB,iBAAVA,EACZ,GAAIA,EAAS,EAET3nkB,GAAS++iB,EAAgBoH,EAAMm8B,EAAqB3a,QAEnD,CACD,IAAMphB,EAAaohB,IAAW,EAC9B,OAAiB,EAATA,GACJ,KAAK,EACD,IAAMp0hB,EAAW8uiB,IAAgBrvkB,GAC3ByvkB,EAAaJ,IAAgBrvkB,GAC7B0vkB,EAAiB9/B,EAAMr0iB,KAAKg4iB,GAEJ,iBAAnBm8B,EAIP/V,GAAoBxmB,EAAMqY,IAAWrY,EAAMI,GAAY,KAAMm8B,EAAgBnviB,EAAUvzC,EAAOyilB,GAG9FtY,GAAwBvnB,EAAO8/B,EAAgBv8B,EAAO5ygB,EAAUvzC,EAAOmmjB,EAAMqY,IAAWikB,GAAY,GAExG,MACJ,KAAK,EACD,IAAME,EAAQx8B,EAAMI,GACV,OAAVo8B,GAAkBjlB,GAAevX,EAAMqY,IAAWmkB,EAAO3ilB,GACzD,MACJ,KAAK,EACD4ilB,GAAmBhgC,EAAO89B,GAAQ99B,EAAO2D,GAAYJ,EAAOnmjB,GAC5D,MACJ,KAAK,EACD6ilB,GAAmBjgC,EAAO89B,GAAQ99B,EAAO2D,GAAY+7B,EAAoBn8B,SAO5F,CACD,IAAM,EAASk8B,EAAc/7kB,EAAI,GACjC,GAAI,EAAS,GAAwC,IAAzB,EAAT,GAAqD,CAKpE,IACMu6kB,EAAOH,GAAQ99B,EADF,IAAW,GAETuD,EAAM06B,EAAKE,uBACb,GACf8B,GAAmBjgC,EAAOi+B,EAAMyB,EAAoBn8B,IAIhE7/iB,GAAKk8kB,GAWb,SAASK,GAAmBjgC,EAAOi+B,EAAMyB,EAAoBn8B,GAEzD,IAAI28B,EAAkB38B,EAAM06B,EAAKE,uBACjC,GAAwB,OAApB+B,EAA0B,CAC1B,IAAIC,EAAO/B,GACP8B,EAAkB,IAGlBA,EAAkB38B,EAAM06B,EAAKE,wBAA0B+B,EAEvDC,GAAQ,GAEZX,GAAmBx/B,EAAOuD,EAAO06B,EAAK5ngB,OAAO6pgB,GAAkBR,EAAoBS,IAa3F,SAASH,GAAmBhgC,EAAOi+B,EAAM16B,EAAOnmjB,GAE5C,IAAMgilB,EAgDV,SAAsBgB,EAAeC,GACjC,IAAI76kB,EAAQ46kB,EAAcE,MAAMx7kB,QAAQu7kB,GACxC,IAAe,IAAX76kB,EACA,OAAQ46kB,EAAc7jlB,MAClB,KAAK,EACD,IAAMgklB,EA1tBtB,SAAuBnjlB,EAAO4jD,GAC1B,IAAMg4H,EAAS0ja,GAAoB17hB,EAApB07hB,CAA4BrxiB,SAASjuC,EAAO,KACrDq7B,EAASokjB,GAAc7ja,GAC7B,YAAmB14K,IAAXm4B,EAAwBA,EAAS,QAutBR+njB,CAAcH,EA7nBxCnD,KA+nBoB,KADf13kB,EAAQ46kB,EAAcE,MAAMx7kB,QAAQy7kB,KACC,UAAjBA,IAChB/6kB,EAAQ46kB,EAAcE,MAAMx7kB,QAAQ,UAExC,MAEJ,KAAK,EACDU,EAAQ46kB,EAAcE,MAAMx7kB,QAAQ,SAKhD,OAAkB,IAAXU,EAAe,KAAOA,EAlEXi7kB,CAAaxC,EAAM7glB,GAErC,GADsB4glB,GAAuBC,EAAM16B,KAC3B67B,IACpBsB,GAAyB1gC,EAAOi+B,EAAM16B,GACtCA,EAAM06B,EAAKE,uBAAuC,OAAdiB,EAAqB,MAAQA,EAC/C,OAAdA,GAAoB,CAEpB,IAAM9B,EAAc/5B,EAAM06B,EAAKoB,WAC3B/B,GAEAuB,GAAoB7+B,EAAOi+B,EAAK98kB,OAAOi+kB,GAAY77B,EAAO+5B,IAc1E,SAASoD,GAAyB1gC,EAAOi+B,EAAM16B,GAC3C,IAAI28B,EAAkBlC,GAAuBC,EAAM16B,GACnD,GAAwB,OAApB28B,EAEA,IADA,IAAMS,EAAc1C,EAAK52kB,OAAO64kB,GACvBx8kB,EAAI,EAAGA,EAAIi9kB,EAAY3glB,OAAQ0D,IAAK,CACzC,IAAMk9kB,EAAiBD,EAAYj9kB,GACnC,GAAIk9kB,EAAiB,EAAG,CAEpB,IAAMrmB,EAAQjX,GAAiBs9B,EAAgBr9B,GACrC,OAAVgX,GAAkBG,GAAiBnX,EAAMqY,IAAWrB,QAIpDmmB,GAAyB1gC,EAAO89B,GAAQ99B,GAAQ4gC,GAAiBr9B,I,IA4U3Es9B,GAAiB,2BAEjBC,GAAa,oBACbC,GAAmB,uDACnBC,GAAS,SACTC,GAAqB,+BACrBC,GAAY,kCAQZC,GAAsB,UAkB5B,SAASC,GAAyBphC,EAAOqhC,EAAkB99B,EAAO/9iB,EAAOqwB,EAASyrjB,GAW9E,IAVA,IAAMC,EAAYl8B,KACZk5B,EAAgB,GAChBkB,EAAgB,GAChB+B,EAAqB,CAAC,IAMtBC,EA3BV,SAAqBrklB,GACjB,OAAOA,EAAMC,QAAQ8jlB,GAAqB,KA0BzBO,CADjB7rjB,EAiSJ,SAAmCA,EAASyrjB,GACxC,GA9CJ,SAA+BA,GAC3B,OAA6B,IAAtBA,EA6CHK,CAAsBL,GAEtB,OAAOM,GAA+B/rjB,GAItC,IAAM7wB,EAAQ6wB,EAAQ/wB,QAAR,WAAoBw8kB,GAApB,OAAuCN,KAAY,EAAIM,EAAiBxzjB,WAAW9tB,OAC3FiF,EAAM4wB,EAAQ6zF,OAAO,IAAIqT,OAAJ,UAAcikd,GAAd,sBAAkCM,GAAlC,OAAqDN,MAChF,OAAOY,GAA+B/rjB,EAAQgxB,UAAU7hD,EAAOC,IA1SzD48kB,CAA0BhsjB,EAASyrjB,IACPljkB,MAAM8ikB,IACnCx9kB,EAAI,EAAGA,EAAI+9kB,EAASzhlB,OAAQ0D,IAAK,CACtC,IAAItG,EAAQqklB,EAAS/9kB,GACrB,GAAgB,IAAP,EAAJA,GAGD,IADA,IAAMu9C,EAAQ6giB,GAA6B1klB,GAClCgT,EAAI,EAAGA,EAAI6wC,EAAMjhD,OAAQoQ,IAAK,CACnC,IAAI+tI,EAAOl9F,EAAM7wC,GACjB,GAAgB,IAAP,EAAJA,GAIY,KAFA+tI,GAGT4jc,GAAwC/hC,EAAOuhC,EAAWC,EAAmB,GAAIjD,EAAekB,EAAel8B,EAHtGpla,OAMZ,CAED,IAAMiic,EAAgBjic,EAOtB,GAA6B,iBAAlBiic,EACP,MAAM,IAAIlwjB,MAAJ,6CAAgD2F,EAAhD,eAMVmsjB,GAAShiC,EAAOuD,EAAOk8B,EAAe4B,EAAkBjB,EAJ9B6B,GAAwBjiC,EAAOuhC,EAAWC,EAAmB,GAAIj+B,EAAOg7B,EAAyE,IAAI,GACxI/4kB,YAO9C,CAGD,IAAM08kB,EAAoC,KAAxB9klB,EAAMsuC,WAAW,GAG7B,GAFOtuC,EAAMsuC,WAAWw2iB,EAAY,EAAI,GAEhCxgC,GAAgBl3iB,OAAO6gC,SAASjuC,EAAMypD,UAAWq7hB,EAAY,EAAI,KAC/E,GAAIA,EACAV,EAAmBhxkB,QACnB80iB,GAAgBD,MAAyB,OAExC,CACD,IAAMtD,EAAQg8B,GAAuB/9B,EAAOwhC,EAAmB,GAAI,GACnEA,EAAmB7piB,QAAQ,IAC3B2tgB,GAAgBvD,GAAO,KAInC/B,EAAMr0iB,KAAKnG,GAAS,CAChBrE,OAAQo9kB,EACRlogB,OAAQopgB,GAehB,SAASwC,GAAwBjiC,EAAOuhC,EAAWY,EAAgB5+B,EAAOg7B,EAAel5f,EAAM+8f,GAC3F,IAAMC,EAAc1e,GAAa3jB,EAAOuD,EAAO,EAAG,MAC9CwhB,EAASsd,GAAepF,GAAiB0B,MACzC73B,EAAczB,KACdk8B,IAAcz6B,IAIdA,EAAc,MAEE,OAAhBA,IAKAie,GAAUkY,GAAiByB,gBAE3B0D,IACArd,GAAUkY,GAAiB2B,aAp8ZFt+kB,IAAzBo5jB,KAGAA,GAyhZR,WACI,IAEIpK,EACAgzB,EAHEC,EAAS,GACXn+X,GAAU,EA2Bd,SAASo+X,EAASvE,EAAM16B,GACpBn/V,EAAS,EACT,IAAM85X,EAAcF,GAAuBC,EAAM16B,GAG7C++B,EAFgB,OAAhBpE,EAEWD,EAAK52kB,OAAO62kB,GAGZz/B,GAGnB,SAASgkC,IACL,GAAIr+X,EAASk+X,EAAStilB,OAAQ,CAC1B,IAAM0ilB,EAAeJ,EAASl+X,KAE9B,OAAIs+X,EAAe,EACDpzB,EAAOozB,IAKrBH,EAAO9ilB,KAAK2kN,EAAQk+X,GAKpBE,EAFalzB,EArrkBf,GAqrkB6B3jjB,MADR+2kB,GAGJpzB,GACRmzB,KAIX,OAAsB,IAAlBF,EAAOvilB,OACA,MAGPsilB,EAAWC,EAAOznjB,MAClBspL,EAASm+X,EAAOznjB,MACT2njB,KAInB,OAjDA,SAAmC5oB,EAAmBtW,GAElD,IADA+L,EAAS/L,EACFg/B,EAAOvilB,QACVuilB,EAAOznjB,MAGX,OADA0njB,EAAS3oB,EAAkBz8jB,MAAOmmjB,GAC3Bk/B,GApjZgBE,KAo8Z3BpE,EAAc9+kB,KAAKslkB,EAAiB,OAAT1/e,EAAgB,GAAKA,GAGhD,IAAM08d,EAAQ4gB,GAAmB3iB,EAAOqiC,EAAaD,EAAQ,GAAe,EAAuB,OAAT/8f,EAAuC,GAAMA,EAAM,MAC7Ik4f,GAAmC4E,EAAgBpgC,GACnD,IAAMmxB,EAAWnxB,EAAMv8iB,MAOvB,OANA8/iB,GAAgBvD,GAAO,GACH,OAAhB+E,GAAwBy6B,IAAcz6B,GAp3B9C,SAAmC/E,EAAOv8iB,GAEtC,IAjklBiBg3iB,EAiklBbqmB,EAAoB9gB,EAAM8gB,kBACJ,OAAtBA,GACArF,GAAgBC,GAAiCC,IACjDmF,EAAoB9gB,EAAM8gB,kBACtB,CAAC,KAA2Cr9jB,KAGI,wBAxklBvCg3iB,EAwklBDp2iB,MAAMyL,QAAQgxjB,MAAoB,GAtklB9Crgc,EAsklBoD,uBAtklBpCg6a,EAsklB8B,KAtklBZ,MAuklBlCqmB,EAAkBpjkB,KAAK+F,IA62BvBo9kB,CAA0B97B,EAAaosB,GAEpCnxB,EAqBX,SAASggC,GAAwC/hC,EAAOuhC,EAAWY,EAAgB5D,EAAekB,EAAel8B,EAAOl+d,GACpH,IAAMw9f,EAAax9f,EAAKl4C,MAAM0ziB,IACxB9+B,EAAQkgC,GAAwBjiC,EAAOuhC,EAAWY,EAAgB5+B,EAAOg7B,EAAesE,EAAa,KAAOx9f,GAAM,GACpHw9f,GACAC,GAA6BrD,EAAep6f,EAAM08d,EAAMv8iB,MAAO,KAAM,EAAG,MA+ChF,SAASs9kB,GAA6BrD,EAAel1iB,EAAKw4iB,EAAiBjtT,EAAUktT,EAAcnD,GAG/F,IAAMoD,EAAYxD,EAAcz/kB,OAC1BkjlB,EAAYD,EAAY,EAC9BxD,EAAchglB,KAAK,KAAM,MAOzB,IANA,IAAMqa,EAAampkB,EAAY,EAIzBE,EAAY54iB,EAAInsB,MAAMyikB,IACxBV,EAAO,EACF/vkB,EAAI,EAAGA,EAAI+ykB,EAAUnjlB,OAAQoQ,IAAK,CACvC,IAAM85gB,EAAYi5D,EAAU/ykB,GAC5B,GAAQ,EAAJA,EAAO,CAEP,IAAM01iB,EAAek9B,EAAe33iB,SAAS6+e,EAAW,IACxDu1D,EAAchglB,MAAM,EAAIqmjB,GACxBq6B,GAAciD,GAAUt9B,OAEL,KAAd57B,GAELu1D,EAAchglB,KAAKyqhB,GAU3B,OAPAu1D,EAAchglB,KAAKsjlB,GAAmB,GACjCjtT,EAAW,EAAe,IAC3BA,GACA2pT,EAAchglB,KAAKq2R,EAAU+pT,GAEjCJ,EAAcwD,GAAa9C,EAC3BV,EAAcyD,GAAazD,EAAcz/kB,OAAS8Z,EAC3CqmkB,EAgCX,SAASiD,GAAUt9B,GACf,OAAO,GAAK1riB,KAAKG,IAAIuriB,EAAc,IAQvC,SAAS87B,GAA+B/rjB,GAMpC,IALA,IAAIsX,EAIAk2iB,EAHAlvjB,EAAM,GACN3uB,EAAQ,EACR89kB,GAAa,EAEqC,QAA9Cn2iB,EAAQ8ziB,GAAmB1miB,KAAK1kB,KAC/BytjB,EAMGn2iB,EAAM,KAAN,UAAgB6ziB,GAAhB,aAA2BqC,GAA3B,OAAwCrC,MACxCx7kB,EAAQ2nC,EAAM3nC,MACd89kB,GAAa,IAPjBnvjB,GAAO0B,EAAQgxB,UAAUrhD,EAAO2nC,EAAM3nC,MAAQ2nC,EAAM,GAAGntC,QACvDqjlB,EAAal2iB,EAAM,GACnBm2iB,GAAa,GAYrB,OADAnvjB,EAAO0B,EAAQud,OAAO5tC,GAsC1B,SAASw8kB,GAAShiC,EAAOuD,EAAOk8B,EAAeP,EAAWkB,EAAef,GAErE,IAAIkE,EAAc,EACZtF,EAAO,CACT1hlB,KAAM6jlB,EAAc7jlB,KACpB4hlB,sBAAuBxa,GAAa3jB,EAAOuD,EAAO,EAAG,MACrD87B,YACAiB,MAAO,GACPn/kB,OAAQ,GACRkG,OAAQ,GACRgvE,OAAQ,KAqOhB,SAA4BA,EAAQ+pgB,EAAe56kB,GAC/C6wE,EAAO52E,KAAK2jlB,GAAUhD,EAAcoD,aAAc,GAAI,EAAIpD,EAAcoD,YAAah+kB,GAAS,EAAoB,GApOlHi+kB,CAAmBhE,EAAeW,EAAef,GAlmCrD,SAAiBr/B,EAAOx6iB,EAAOy4kB,GAC3B,IAAMl8B,EAAQ/B,EAAMr0iB,KAAKnG,GAGX,OAAVu8iB,EACA/B,EAAMr0iB,KAAKnG,GAASy4kB,EAIpBl8B,EAAM3kjB,MAAQ6glB,EA0lClByF,CAAQ1jC,EAAOq/B,EAAWpB,GAE1B,IADA,IAAMtukB,EAASywkB,EAAczwkB,OACpBjM,EAAI,EAAGA,EAAIiM,EAAO3P,OAAQ0D,IAAK,CAIpC,IAFA,IAAMiglB,EAAWh0kB,EAAOjM,GAClBkglB,EAAa,GACVxzkB,EAAI,EAAGA,EAAIuzkB,EAAS3jlB,OAAQoQ,IAAK,CACtC,IAAMhT,EAAQumlB,EAASvzkB,GACvB,GAAqB,iBAAVhT,EAAoB,CAE3B,IAAMymlB,EAAWD,EAAWnklB,KAAKrC,GAAS,EAE1CumlB,EAASvzkB,GAAT,uBAAsByzkB,EAAtB,iBAGRN,EAAcO,GAAa9jC,EAAOi+B,EAAM16B,EAAOk8B,EAAeP,EAAWkB,EAAcE,MAAM58kB,GAAIiglB,EAAS93iB,KAAK,IAAK+3iB,GAChHL,EAEJA,GAmNR,SAA4BltgB,EAAQktgB,EAAa/9kB,GAC7C6wE,EAAO52E,KAAK8jlB,EAAa,EAAG/9kB,GAAS,EAAoB,GAnNrDu+kB,CAAmBtE,EAAe8D,EAAalE,GAUvD,SAAS2E,GAAcr5c,GAiBnB,IAhBA,IAAM21c,EAAQ,GACR3wkB,EAAS,GACXs0kB,EAAU,EACVT,EAAc,EAWZviiB,EAAQ6giB,GAVdn3c,EAAUA,EAAQttI,QAAQ0jlB,GAAkB,SAAUx2iB,EAAKm8M,EAASnqP,GAQhE,OANI0nlB,EADS,WAAT1nlB,EACU,EAGA,EAEdinlB,EAAcn4iB,SAASq7M,EAAQtzM,OAAO,GAAI,IACnC,MAIF2lI,EAAM,EAAGA,EAAM93H,EAAMjhD,QAAS,CACnC,IAAIwY,EAAMyoC,EAAM83H,KAAOpgK,OACP,IAAZsrkB,IAEAzrkB,EAAMA,EAAInb,QAAQ,oBAAqB,OAEvCmb,EAAIxY,QACJsglB,EAAM7glB,KAAK+Y,GAEf,IAAMulhB,EAAS+jD,GAA6B7giB,EAAM83H,MAC9Cuna,EAAMtglB,OAAS2P,EAAO3P,QACtB2P,EAAOlQ,KAAKs+hB,GAIpB,MAAO,CAAExhiB,KAAM0nlB,EAAST,YAAaA,EAAalD,QAAO3wkB,UAY7D,SAASmykB,GAA6Bn3c,GAClC,IAAKA,EACD,MAAO,GAEX,IAMIx9F,EANA+2iB,EAAU,EACRC,EAAa,GACb/md,EAAU,GACVgnd,EAAS,QAIf,IAFAA,EAAOnof,UAAY,EAEZ9uD,EAAQi3iB,EAAO7piB,KAAKowF,IAAU,CACjC,IAAMouC,EAAM5rI,EAAM3nC,MAClB,GAAgB,KAAZ2nC,EAAM,IAEN,GADAg3iB,EAAWrpjB,MACc,GAArBqpjB,EAAWnklB,OAAa,CAExB,IAAMwhC,EAAQmpG,EAAQ9jF,UAAUq9hB,EAASnra,GACrCgoa,GAAiBlikB,KAAK2iB,GACtB47F,EAAQ39H,KAAKuklB,GAAcxijB,IAG3B47F,EAAQ39H,KAAK+hC,GAEjB0ijB,EAAUnra,EAAM,OAGnB,CACD,GAAyB,GAArBora,EAAWnklB,OAAa,CACxB,IAAM,EAAY2qI,EAAQ9jF,UAAUq9hB,EAASnra,GAC7C37C,EAAQ39H,KAAK,GACbyklB,EAAUnra,EAAM,EAEpBora,EAAW1klB,KAAK,MAGxB,IAAMonD,EAAY8jF,EAAQ9jF,UAAUq9hB,GAEpC,OADA9md,EAAQ39H,KAAKonD,GACNu2E,EAMX,SAAS0md,GAAa9jC,EAAOi+B,EAAM16B,EAAOk8B,EAAeP,EAAWmF,EAAUC,EAAgBV,GAC1F,IAAMzilB,EAAS,GACTkG,EAAS,GACTgvE,EAAS,GAMf4ngB,EAAKqC,MAAM7glB,KAAK4klB,GAChBpG,EAAK98kB,OAAO1B,KAAK0B,GACjB88kB,EAAK52kB,OAAO5H,KAAK4H,GACjB42kB,EAAK5ngB,OAAO52E,KAAK42E,GACjB,IACMi/e,EADkBR,GAAmB7+M,MACFi/M,oBAAoBovB,GAEvDC,EAAgBzsB,GAAmBxC,IAAqBA,EAC9D,OAAIivB,EACOC,GAAYxkC,EAAOi+B,EAAM16B,EAAOk8B,EAAet+kB,EAAQkG,EAAQgvE,EAAQkugB,EAAerF,EAAW0E,EAAY,GAG7G,EAGf,SAASY,GAAYxkC,EAAOi+B,EAAM16B,EAAOkhC,EAAqBtjlB,EAAQkG,EAAQgvE,EAAQ95D,EAAY2ikB,EAAW0E,EAAY1rW,GAGrH,IAFA,IAAIqrW,EAAc,EACd/5F,EAAcjte,EAAWg0D,WACtBi5a,GAAa,CAChB,IAAMn6V,EAAWs0a,GAAa3jB,EAAOuD,EAAO,EAAG,MAC/C,OAAQ/5D,EAAYhmf,UAChB,KAAKsxJ,KAAKrxJ,aACN,IAAMyD,EAAUsif,EACVt8U,EAAUhmK,EAAQgmK,QAAQz0J,cAChC,GAAI69iB,GAAe/shB,eAAe2jI,GAAU,CACxCw3a,GAAuBvjlB,EAAQ47kB,GAAgB7va,EAASgya,EAAW7vb,GACnE2wZ,EAAMr0iB,KAAK0jJ,GAAY6d,EAEvB,IADA,IAAMwoZ,EAAUxujB,EAAQ67K,WACfr/K,EAAI,EAAGA,EAAIgyjB,EAAQ11jB,OAAQ0D,IAAK,CACrC,IAAMm7Q,EAAO62S,EAAQvojB,KAAKzJ,GACpBihlB,EAAgB9lU,EAAK7hR,KAAKyb,cACXomQ,EAAKzhR,MAAM+vC,MAAM0ziB,IAG9BpqB,GAAYlthB,eAAeo7iB,IAEvB7B,GAA6BzsgB,EAAQwoM,EAAKzhR,MAAOiyJ,EAAUwvH,EAAK7hR,KAAM,EADtEu5jB,GAAUouB,GAC+D9uB,GAEpEW,GAAamuB,GACuD7uB,GAGA,MAWjF8uB,GAAmBzjlB,EAAQkuJ,EAAUwvH,GAI7C0kU,EAAciB,GAAYxkC,EAAOi+B,EAAM16B,EAAOkhC,EAAqBtjlB,EAAQkG,EAAQgvE,EAAQmza,EAAan6V,EAAUu0b,EAAY1rW,EAAQ,GAClIqrW,EACJsB,GAAcx9kB,EAAQgoJ,EAAU6oF,GAEpC,MACJ,KAAKpjF,KAAKiia,UACN,IAAM35jB,EAAQosf,EAAYn6Y,aAAe,GACnCwze,EAAazllB,EAAM+vC,MAAM0ziB,IAC/B6D,GAAuBvjlB,EAAQ,KAAM0hlB,EAAa,GAAKzllB,EAAO8hlB,EAAW7vb,GACzEw1b,GAAcx9kB,EAAQgoJ,EAAU6oF,GAC5B2qW,IACAU,EACIT,GAA6BzsgB,EAAQj5E,EAAOiyJ,EAAU,KAAM,EAAG,MAAQk0b,GAE/E,MACJ,KAAKzub,KAAKgwb,aAEN,IAAMC,EAAcjE,GAAWvmiB,KAAKivc,EAAYn6Y,aAAe,IAC/D,GAAI01e,EAAa,CACb,IACM3E,EAAgBwD,EADCv4iB,SAAS05iB,EAAY,GAAI,KAGhDL,GAAuBvjlB,EAAQ67kB,GAAyD,GAAIkC,EAAW7vb,GACvG2yb,GAAShiC,EAAOuD,EAAOkhC,EAAqBvF,EAAWkB,EAAe/wb,GACtE21b,GAAmB39kB,EAAQgoJ,EAAU6oF,IAIjDsxQ,EAAcA,EAAYtoN,YAE9B,OAAOqiT,EAEX,SAASsB,GAAcx9kB,EAAQ7B,EAAO0yO,GACpB,IAAVA,GACA7wO,EAAO5H,KAAK+F,GAGpB,SAASw/kB,GAAmB39kB,EAAQ7B,EAAO0yO,GACzB,IAAVA,IACA7wO,EAAO5H,MAAM+F,GACb6B,EAAO5H,KAAK+F,IASpB,SAASk/kB,GAAuBvjlB,EAAQi0C,EAAQiwC,EAAM4/f,EAAmBC,GACtD,OAAX9viB,GACAj0C,EAAO1B,KAAK21C,GAEhBj0C,EAAO1B,KAAK4lF,EAAM6/f,EAA6B,EAAqBD,GA/wCvC,GA+wC0DC,GA/wCxB,GAixCnE,SAASN,GAAmBzjlB,EAAQkuJ,EAAUwvH,GAC1C19Q,EAAO1B,KAAK4vJ,GAAY,EAAoB,EAAcwvH,EAAK7hR,KAAM6hR,EAAKzhR,OAoN9E,SAAS+nlB,GAAO3/kB,EAAO4/kB,EAAc9D,IAxDrC,SAAqB97kB,EAAO4/kB,GAAmC,IAArB9D,EAAqB,wDAAD,EACpDthC,EAAQ8E,KACRvB,EAAQsB,KACRwsB,EAAgB3vB,GAAgBl8iB,EAEhCqwB,EAAUouhB,GAAYjE,EAAM79iB,OAAQijlB,GACpCt+B,EAAczB,KAChBrF,EAAM8L,iBACNs1B,GAAyBphC,EAAuB,OAAhB8G,EAAuB,EAAIA,EAAYthjB,MAAO+9iB,EAAO8tB,EAAex7iB,EAASyrjB,GAEjH,IAAM+D,EAAQrlC,EAAMr0iB,KAAK0lkB,GAEnBxT,EAAcZ,GAAmBjd,EADX8G,IAAgBvD,EAjqmBjC,GAiqmBiD,KAAOuD,EACAvD,GAMnE+6B,GAAmB/6B,EAAO8hC,EAAMlklB,OAAQ08jB,EAHhB/W,GAAmC,EAAnBA,EAAYvqjB,KAChDgnjB,EAAMuD,EAAYthjB,OAClB,MAEJygjB,IAAe,IAsCfq/B,CAAY9/kB,EAAO4/kB,EAAc9D,GA7BjCr7B,IAAe,GAwDnB,SAASs/B,GAAUnolB,GAGf,OADW4ykB,GADGnrB,KACmBkB,KAAoB3ojB,KA79CjDghlB,IAA2B,GAAKhkkB,KAAKG,IAAI8jkB,GAAmB,KAEhEA,KA49COkH,GAUX,SAASC,GAAYhglB,IAp+CrB,SAAmBw6iB,EAAOuD,EAAO/9iB,GAC7B,GAAI64kB,GAAoB,EAAG,CAEvB,IAAMgH,EAAQrlC,EAAMr0iB,KAAKnG,GAIzBg6kB,GAAmBx/B,EAAOuD,EAFJn9iB,MAAMyL,QAAQwzkB,GAASA,EAAQA,EAAMhvgB,OAChCwve,KAAoBw4B,GAAoB,EACCD,IAGxEA,GAAa,EACbC,GAAoB,EA09CpBoH,CAAU3gC,KAAYD,KAAYr/iB,EAAQk8iB,IA2D9C,SAASlC,GAAkB1wiB,EAAKkf,EAAW03jB,GACvC,IAAM1lC,EAAQ8E,KACd,GAAI9E,EAAM8L,gBAAiB,CACvB,IAAMwO,EAAcpY,GAAepziB,GAEnC62kB,GAAkBD,EAAe1lC,EAAMr0iB,KAAMq0iB,EAAMiM,UAAWqO,GAAa,GAE3EqrB,GAAkB33jB,EAAWgyhB,EAAMr0iB,KAAMq0iB,EAAMiM,UAAWqO,GAAa,IAM/E,SAASqrB,GAAkBjzjB,EAAU07hB,EAAcw3B,EAAuBtrB,EAAavQ,GAEnF,GADAr3hB,EAAWqphB,EAAkBrphB,GACzBtsB,MAAMyL,QAAQ6gB,GAId,IAAK,IAAIhvB,EAAI,EAAGA,EAAIgvB,EAAS1yB,OAAQ0D,IACjCiilB,GAAkBjzjB,EAAShvB,GAAI0qjB,EAAcw3B,EAAuBtrB,EAAavQ,OAGpF,CACD,IAAM/J,EAAQ8E,KACRvB,EAAQsB,KACVnkjB,EAAQ2skB,GAAe36iB,GAAYA,EAAWqphB,EAAkBrphB,EAASt0B,SACzEynlB,EAAkBtY,GAAkB76iB,GAClCqvhB,EAAQmD,KACR4gC,EAAqC,QAAxB/jC,EAAMoM,gBACnBz6d,EAAWqud,EAAMyG,eACjB+F,EAAwBxM,EAAMoM,iBAAmB,GACvD,GAAIkf,GAAe36iB,KAAcA,EAASnN,MAAO,CAE7C,IAAM5kB,EAAU,IAAI,GAAoBkllB,EAAiB97B,EAAgB2nB,IACnEqU,EAAuBjhlB,GAAQpE,EAAO0tjB,EAAcrE,EAAiB+7B,EAAaA,EAAav3B,EAAuB76d,IAC9F,IAA1Bqyf,GACAv5B,GAAmBb,GAA+B5J,EAAOwB,GAAQvD,EAAOt/iB,GACxEsllB,GAAgChmC,EAAOtthB,EAAU07hB,EAAapujB,QAC9DoujB,EAAa3ujB,KAAKiB,GAClBqhjB,EAAMyG,iBACNzG,EAAM0G,eACFsB,IACAhI,EAAMoM,iBAAmB,SAE7By3B,EAAsBnmlB,KAAKkB,GAC3B4ijB,EAAM9jjB,KAAKkB,KAGXillB,EAAsBG,GAAwBpllB,EAC9C4ijB,EAAMwiC,GAAwBpllB,OAGjC,CAqBD,IAAMsllB,EAAgCnhlB,GAAQpE,EAAO0tjB,EAAc03B,EAAav3B,EAAuB76d,GACjGwyf,EAAoCphlB,GAAQpE,EAAO0tjB,EAAc03B,EAAYA,EAAav3B,GAG1F43B,EAAgCD,GAAqC,GACvEN,EAAsBM,GAC1B,GAAIn8B,IAAmBo8B,IAClBp8B,KAL6Bk8B,GAAiC,GAC/DL,EAAsBK,IAIyB,CAE/Cz5B,GAAmBb,GAA+B5J,EAAOwB,GAAQvD,EAAOt/iB,GACxE,IAAM,EA6HtB,SAAsB0llB,EAAW5glB,EAAOukjB,EAAgBuQ,EAAaxliB,GACjE,IAAMn0B,EAAU,IAAI,GAAoByllB,EAAWr8B,EAAgB2nB,IAKnE,OAJA/wkB,EAAQ4kB,MAAQ,GAChB5kB,EAAQ6E,MAAQA,EAChB7E,EAAQ0llB,mBAAqB,EAC7BC,GAAgB3llB,EAASm0B,EAAGwliB,IAAgBvQ,GACrCppjB,EAnIqB4llB,CAAax8B,EAAiBy8B,GAAoCC,GAA+Bb,EAAsB5llB,OAAQ+pjB,EAAgBuQ,EAAaurB,IACvK97B,GAAkBo8B,IACnBP,EAAsBM,GAAmCL,gBAAkB,GAE/EG,GAAgChmC,EAAOtthB,EAAU07hB,EAAapujB,OAAQ,GACtEoujB,EAAa3ujB,KAAKiB,GAClBqhjB,EAAMyG,iBACNzG,EAAM0G,eACFsB,IACAhI,EAAMoM,iBAAmB,SAE7By3B,EAAsBnmlB,KAAK,GAC3B8jjB,EAAM9jjB,KAAK,QAMXumlB,GAAgChmC,EAAOtthB,EAAUuzjB,GAAiC,EAAIA,EAClFC,EAHmBI,GAAgBV,EAAsB77B,EAAiBm8B,EAC1ED,GAAgCJ,GAAkB97B,GAAkBuQ,KAIvEvQ,GAAkBuQ,GAAe6rB,GAClCP,EAAsBM,GAAmCG,uBAazE,SAASL,GAAgChmC,EAAOtthB,EAAUg0jB,EAAcC,GACpE,IAAMC,EAAyBvZ,GAAe36iB,GAC9C,GAAIk0jB,GAA0Cl0jB,EAjwS/Ble,SAiwS0C,CACrD,IACM6qK,GADa3sJ,EAASle,UAAYke,GAAUnE,UACpB8wJ,YAC9B,GAAIA,EAAa,CACb,IAAMx0F,EAAQm1d,EAAMkJ,eAAiBlJ,EAAMkJ,aAAe,IAC1D,IAAK09B,GAA0Bl0jB,EAASnN,MAAO,CAG3C,IAAMshkB,EAAyBh8f,EAAM/lF,QAAQ4hlB,IACb,IAA5BG,EACAh8f,EAAMprF,KAAKinlB,EAAc,CAACC,EAAgBtna,IAG1Cx0F,EAAMg8f,EAAyB,GAAGpnlB,KAAKknlB,EAAgBtna,QAI3Dx0F,EAAMprF,KAAKinlB,EAAcrna,KASzC,SAASina,GAAgBC,EAAc5llB,EAASmmlB,GAI5C,OAHIA,GACAP,EAAaF,qBAEVE,EAAahhkB,MAAM9lB,KAAKkB,GAAW,EAK9C,SAASmE,GAAQqI,EAAMq+B,EAAKowR,EAAO32T,GAC/B,IAAK,IAAIvB,EAAIk4T,EAAOl4T,EAAIuB,EAAKvB,IACzB,GAAI8nC,EAAI9nC,KAAOyJ,EACX,OAAOzJ,EAEf,OAAQ,EAKZ,SAAS+ilB,GAA8Bx4e,EAAGs4c,EAAOwgC,EAAOhlC,GACpD,OAAOilC,GAAanrlB,KAAK0pB,MAAO,IAOpC,SAASihkB,GAAkCv4e,EAAGs4c,EAAOhD,EAAOxB,GACxD,IACItphB,EADEwujB,EAAYprlB,KAAK0pB,MAEvB,GAAI1pB,KAAKgqlB,gBAAiB,CACtB,IAAMqB,EAAiBrrlB,KAAKgqlB,gBAAgBQ,mBACtCc,EAAiBp5B,GAAkBxK,EAAOA,EA3+mB1C,GA2+mBwD1njB,KAAKgqlB,gBAAgBrglB,MAAOu8iB,GAI1FilC,GAAaC,EAFbxujB,EAAS0ujB,EAAe9hlB,MAAM,EAAG6hlB,IAIjC,IAAK,IAAIxjlB,EAAIwjlB,EAAgBxjlB,EAAIyjlB,EAAennlB,OAAQ0D,IACpD+0B,EAAOh5B,KAAK0nlB,EAAezjlB,SAM/BsjlB,GAAaC,EAFbxujB,EAAS,IAIb,OAAOA,EAKX,SAASuujB,GAAaC,EAAWxujB,GAC7B,IAAK,IAAI/0B,EAAI,EAAGA,EAAIujlB,EAAUjnlB,OAAQ0D,IAElC+0B,EAAOh5B,MAAKkB,EADIsmlB,EAAUvjlB,OAG9B,OAAO+0B,EA8CX,SAAS2ujB,GAAmBp5jB,GAA6B,IAAlB03jB,EAAkB,uDAAF,GACnD,OAAO,SAACpjC,GACJA,EAAW9C,kBACP,SAAC1wiB,EAAKu4kB,GACF,OAAO7nC,GAAkB1wiB,EACzBu4kB,EAAqBA,EAAmBr5jB,GAAaA,EACrD03jB,K,IAmBV,G,+CAWA,G,+CAmBA,G,sGACF,SAAwB5qkB,GACpB,MAXR,SAAiCA,GAC7B,IAAM+V,EAAQX,MAAM,kCAAD,OAAmCoF,EAAUxa,GAA7C,mDAEnB,OADA+V,EAAK,YAAoB/V,EAClB+V,EAQGy2jB,CAAwBxskB,O,qBAYhCyskB,E,sDAENA,EAAyBhZ,KAAO,IAAI,G,KA6CpC,SAASh+c,MA0BT,SAASi3d,GAAiBzlC,EAAOwB,GAC7B,OAAO,IAAI,GAAWC,GAAiBzB,EAAOwB,IAElD,IAEMkkC,GAfN,WACI,OAAOD,GAAiBtiC,KAAmBL,O,kBA8BzC6iC,E,YACF,WAAYjplB,GAAa,oBACrB5C,KAAK4C,cAAgBA,I,OAO7BiplB,EAAWvoC,kBAAoBsoC,G,KAO/B,SAASE,GAAiBvqlB,GACtB,OAAOA,aAAiB,GAAaA,EAAMqB,cAAgBrB,EAU/D,IAMM,G,iEAiBAwqlB,E,sDAMNA,EAAUzoC,kBAAoB,kBAAM0oC,M,KAG9BA,GAUN,WAGI,IAAMtkC,EAAQsB,KAERijC,EAAcpkC,GADNwB,KACqC1/iB,MAAO+9iB,GAC1D,OAdJ,SAA8BA,GAK1B,OAJiBA,EAAMqY,IAahBmsB,CAAqBnmC,GAAQkmC,GAAeA,EAAcvkC,I,kBAe/DykC,E,sDAGNA,EAAUvnlB,WAAQk8iB,EAAmB,CACjCj8iB,MAAOsnlB,EACPvlkB,WAAY,OACZ9hB,QAAS,kBAAM,Q,KAeb,G,YACF,WAAYy3L,GAAI,oBACZv8L,KAAKu8L,KAAOA,EACZv8L,KAAK8mO,MAAQvqC,EAAKh6K,MAAM,KAAK,GAC7BviB,KAAK6mO,MAAQtqC,EAAKh6K,MAAM,KAAK,GAC7BviB,KAAK4kH,MAAQ23E,EAAKh6K,MAAM,KAAK/Y,MAAM,GAAGwmC,KAAK,OAM7C0qJ,GAAU,IAAI,GAAQ,WAStB,G,8BACF,kC,uBACA,SAAS38K,GACL,OAAOg2jB,GAAmBh2jB,K,oBAE9B,SAAOqukB,GACH,OAAO,IAAI,GAAsBA,O,GAGnCC,GAAkB,SAAC1ilB,EAAO2H,GAAR,OAAiBA,GAMnC,G,8BACF,WAAY86kB,GAAS,oBACjBpslB,KAAKmE,OAAS,EAEdnE,KAAKsslB,eAAiB,KAEtBtslB,KAAKuslB,iBAAmB,KACxBvslB,KAAKwslB,gBAAkB,KACvBxslB,KAAKyslB,QAAU,KACfzslB,KAAK0slB,QAAU,KACf1slB,KAAK2slB,eAAiB,KACtB3slB,KAAK4slB,eAAiB,KACtB5slB,KAAK6slB,WAAa,KAClB7slB,KAAK8slB,WAAa,KAClB9slB,KAAK+slB,cAAgB,KACrB/slB,KAAKgtlB,cAAgB,KAErBhtlB,KAAKitlB,qBAAuB,KAC5BjtlB,KAAKktlB,qBAAuB,KAC5BltlB,KAAK+O,WAAaq9kB,GAAaC,I,0BAEnC,SAAYr9kB,GACR,IAAIkC,EACJ,IAAKA,EAASlR,KAAKyslB,QAAoB,OAAXv7kB,EAAiBA,EAASA,EAAO2rJ,MACzD7tJ,EAAGkC,K,8BAGX,SAAiBlC,GAKb,IAJA,IAAIm+kB,EAASntlB,KAAKyslB,QACdW,EAAaptlB,KAAK+slB,cAClBM,EAAkB,EAClBC,EAAc,KACXH,GAAUC,GAAY,CAGzB,IAAMl8kB,GAAUk8kB,GACZD,GACIA,EAAO/7kB,aACHm8kB,GAAiBH,EAAYC,EAAiBC,GACtDH,EACAC,EACEI,EAAmBD,GAAiBr8kB,EAAQm8kB,EAAiBC,GAC7Dl8kB,EAAeF,EAAOE,aAE5B,GAAIF,IAAWk8kB,EACXC,IACAD,EAAaA,EAAWK,kBAIxB,GADAN,EAASA,EAAOtwb,MACY,MAAxB3rJ,EAAOW,cACPw7kB,QAEC,CAEIC,IACDA,EAAc,IAClB,IAAMI,EAAyBF,EAAmBH,EAC5CM,EAAoBv8kB,EAAei8kB,EACzC,GAAIK,GAA0BC,EAAmB,CAC7C,IAAK,IAAI9llB,EAAI,EAAGA,EAAI6llB,EAAwB7llB,IAAK,CAC7C,IAAMgD,EAAShD,EAAIyllB,EAAYnplB,OAASmplB,EAAYzllB,GAAMyllB,EAAYzllB,GAAK,EACrE8B,EAAQkB,EAAShD,EACnB8llB,GAAqBhklB,GAASA,EAAQ+jlB,IACtCJ,EAAYzllB,GAAKgD,EAAS,GAIlCyilB,EADsBp8kB,EAAOW,eACA87kB,EAAoBD,GAIzDF,IAAqBp8kB,GACrBpC,EAAGkC,EAAQs8kB,EAAkBp8kB,M,iCAIzC,SAAoBpC,GAChB,IAAIkC,EACJ,IAAKA,EAASlR,KAAKwslB,gBAA4B,OAAXt7kB,EAAiBA,EAASA,EAAO08kB,cACjE5+kB,EAAGkC,K,8BAGX,SAAiBlC,GACb,IAAIkC,EACJ,IAAKA,EAASlR,KAAK2slB,eAA2B,OAAXz7kB,EAAiBA,EAASA,EAAO28kB,WAChE7+kB,EAAGkC,K,8BAGX,SAAiBlC,GACb,IAAIkC,EACJ,IAAKA,EAASlR,KAAK6slB,WAAuB,OAAX37kB,EAAiBA,EAASA,EAAO48kB,WAC5D9+kB,EAAGkC,K,gCAGX,SAAmBlC,GACf,IAAIkC,EACJ,IAAKA,EAASlR,KAAK+slB,cAA0B,OAAX77kB,EAAiBA,EAASA,EAAOu8kB,aAC/Dz+kB,EAAGkC,K,mCAGX,SAAsBlC,GAClB,IAAIkC,EACJ,IAAKA,EAASlR,KAAKitlB,qBAAiC,OAAX/7kB,EAAiBA,EAASA,EAAO68kB,oBACtE/+kB,EAAGkC,K,kBAGX,SAAK+tJ,GAGD,GAFkB,MAAdA,IACAA,EAAa,KACZ80a,GAAmB90a,GACpB,MAAM,IAAI5qI,MAAJ,gCAAmCoF,EAAUwlI,GAA7C,6CAEV,OAAIj/J,KAAKouY,MAAMnvO,GACJj/J,KAGA,O,uBAGf,c,mBACA,SAAMi/J,GAAU,WACZj/J,KAAKi0J,SACL,IAEItqJ,EACA2H,EACA08kB,EAJA98kB,EAASlR,KAAKyslB,QACdwB,GAAa,EAIjB,GAAI1jlB,MAAMyL,QAAQipJ,GAAa,CAC3Bj/J,KAAKmE,OAAS86J,EAAW96J,OACzB,IAAK,IAAI,EAAQ,EAAG,EAAQnE,KAAKmE,OAAQ,IAErC6plB,EAAchulB,KAAK+O,WAAW,EAD9BuC,EAAO2tJ,EAAW,IAEH,OAAX/tJ,GAAoBsL,OAAOq1H,GAAG3gI,EAAOg9kB,UAAWF,IAK5CC,IAEA/8kB,EAASlR,KAAKmulB,mBAAmBj9kB,EAAQI,EAAM08kB,EAAa,IAE3DxxkB,OAAOq1H,GAAG3gI,EAAOI,KAAMA,IACxBtR,KAAKoulB,mBAAmBl9kB,EAAQI,KATpCJ,EAASlR,KAAKqulB,UAAUn9kB,EAAQI,EAAM08kB,EAAa,GACnDC,GAAa,GAUjB/8kB,EAASA,EAAO2rJ,WAIpBlzJ,EAAQ,EA3iRpB,SAAyBoU,EAAK/O,GAC1B,GAAIzE,MAAMyL,QAAQ+H,GACd,IAAK,IAAIlW,EAAI,EAAGA,EAAIkW,EAAI5Z,OAAQ0D,IAC5BmH,EAAG+O,EAAIlW,SAMX,IAFA,IACIyJ,EADE0zH,EAAWjnH,EAAI6kO,UAEXtxO,EAAO0zH,EAASnhI,QAAQ+wB,MAC9B5lB,EAAGsC,EAAK/P,OAkiRR+slB,CAAgBrvb,EAAY,SAAC3tJ,GACzB08kB,EAAc,EAAKj/kB,WAAWpF,EAAO2H,GACtB,OAAXJ,GAAoBsL,OAAOq1H,GAAG3gI,EAAOg9kB,UAAWF,IAK5CC,IAEA/8kB,EAAS,EAAKi9kB,mBAAmBj9kB,EAAQI,EAAM08kB,EAAarklB,IAE3D6S,OAAOq1H,GAAG3gI,EAAOI,KAAMA,IACxB,EAAK88kB,mBAAmBl9kB,EAAQI,KATpCJ,EAAS,EAAKm9kB,UAAUn9kB,EAAQI,EAAM08kB,EAAarklB,GACnDsklB,GAAa,GAUjB/8kB,EAASA,EAAO2rJ,MAChBlzJ,MAEJ3J,KAAKmE,OAASwF,EAIlB,OAFA3J,KAAKuulB,UAAUr9kB,GACflR,KAAKi/J,WAAaA,EACXj/J,KAAKitF,U,mBAKhB,WACI,OAA+B,OAAxBjtF,KAAK2slB,gBAA+C,OAApB3slB,KAAK6slB,YACjB,OAAvB7slB,KAAK+slB,eAAwD,OAA9B/slB,KAAKitlB,uB,oBAU5C,WACI,GAAIjtlB,KAAKitF,QAAS,CACd,IAAI/7E,EACJ,IAAKA,EAASlR,KAAKwslB,gBAAkBxslB,KAAKyslB,QAAoB,OAAXv7kB,EAAiBA,EAASA,EAAO2rJ,MAChF3rJ,EAAO08kB,cAAgB18kB,EAAO2rJ,MAElC,IAAK3rJ,EAASlR,KAAK2slB,eAA2B,OAAXz7kB,EAAiBA,EAASA,EAAO28kB,WAChE38kB,EAAOW,cAAgBX,EAAOE,aAGlC,IADApR,KAAK2slB,eAAiB3slB,KAAK4slB,eAAiB,KACvC17kB,EAASlR,KAAK6slB,WAAuB,OAAX37kB,EAAiBA,EAASA,EAAO48kB,WAC5D58kB,EAAOW,cAAgBX,EAAOE,aAElCpR,KAAK6slB,WAAa7slB,KAAK8slB,WAAa,KACpC9slB,KAAK+slB,cAAgB/slB,KAAKgtlB,cAAgB,KAC1ChtlB,KAAKitlB,qBAAuBjtlB,KAAKktlB,qBAAuB,Q,uBAehE,SAAUh8kB,EAAQI,EAAM08kB,EAAarklB,GAEjC,IAAI6klB,EAmCJ,OAlCe,OAAXt9kB,EACAs9kB,EAAiBxulB,KAAK0slB,SAGtB8B,EAAiBt9kB,EAAOu9kB,MAExBzulB,KAAK0ulB,QAAQx9kB,IAIF,QADfA,EAAmC,OAA1BlR,KAAKuslB,iBAA4B,KAAOvslB,KAAKuslB,iBAAiBr6kB,IAAI87kB,EAAa,QAI/ExxkB,OAAOq1H,GAAG3gI,EAAOI,KAAMA,IACxBtR,KAAKoulB,mBAAmBl9kB,EAAQI,GACpCtR,KAAK2ulB,eAAez9kB,EAAQs9kB,EAAgB7klB,IAK7B,QADfuH,EAAiC,OAAxBlR,KAAKsslB,eAA0B,KAAOtslB,KAAKsslB,eAAep6kB,IAAI87kB,EAAarklB,KAK3E6S,OAAOq1H,GAAG3gI,EAAOI,KAAMA,IACxBtR,KAAKoulB,mBAAmBl9kB,EAAQI,GACpCtR,KAAK4ulB,WAAW19kB,EAAQs9kB,EAAgB7klB,IAIxCuH,EACIlR,KAAK6ulB,UAAU,IAAI,GAAsBv9kB,EAAM08kB,GAAcQ,EAAgB7klB,GAGlFuH,I,gCA6BX,SAAmBA,EAAQI,EAAM08kB,EAAarklB,GAC1C,IAAImllB,EAA2C,OAA1B9ulB,KAAKuslB,iBAA4B,KAAOvslB,KAAKuslB,iBAAiBr6kB,IAAI87kB,EAAa,MAQpG,OAPuB,OAAnBc,EACA59kB,EAASlR,KAAK2ulB,eAAeG,EAAgB59kB,EAAOu9kB,MAAO9klB,GAEtDuH,EAAOE,cAAgBzH,IAC5BuH,EAAOE,aAAezH,EACtB3J,KAAK+ulB,YAAY79kB,EAAQvH,IAEtBuH,I,uBASX,SAAUA,GAEN,KAAkB,OAAXA,GAAiB,CACpB,IAAM89kB,EAAa99kB,EAAO2rJ,MAC1B78J,KAAKivlB,eAAejvlB,KAAKkvlB,QAAQh+kB,IACjCA,EAAS89kB,EAEiB,OAA1BhvlB,KAAKuslB,kBACLvslB,KAAKuslB,iBAAiB77kB,QAEE,OAAxB1Q,KAAK4slB,iBACL5slB,KAAK4slB,eAAeiB,WAAa,MAEb,OAApB7tlB,KAAK8slB,aACL9slB,KAAK8slB,WAAWgB,WAAa,MAEZ,OAAjB9tlB,KAAK0slB,UACL1slB,KAAK0slB,QAAQ7vb,MAAQ,MAEE,OAAvB78J,KAAKgtlB,gBACLhtlB,KAAKgtlB,cAAcS,aAAe,MAEJ,OAA9BztlB,KAAKktlB,uBACLltlB,KAAKktlB,qBAAqBa,oBAAsB,Q,4BAIxD,SAAe78kB,EAAQi+kB,EAAYxllB,GACD,OAA1B3J,KAAKuslB,kBACLvslB,KAAKuslB,iBAAiB/glB,OAAO0F,GAEjC,IAAMyzD,EAAOzzD,EAAOk+kB,aACdvrlB,EAAOqN,EAAOu8kB,aAepB,OAda,OAAT9ohB,EACA3kE,KAAK+slB,cAAgBlplB,EAGrB8gE,EAAK8ohB,aAAe5plB,EAEX,OAATA,EACA7D,KAAKgtlB,cAAgBrohB,EAGrB9gE,EAAKurlB,aAAezqhB,EAExB3kE,KAAKqvlB,aAAan+kB,EAAQi+kB,EAAYxllB,GACtC3J,KAAK+ulB,YAAY79kB,EAAQvH,GAClBuH,I,wBAGX,SAAWA,EAAQi+kB,EAAYxllB,GAI3B,OAHA3J,KAAKkvlB,QAAQh+kB,GACblR,KAAKqvlB,aAAan+kB,EAAQi+kB,EAAYxllB,GACtC3J,KAAK+ulB,YAAY79kB,EAAQvH,GAClBuH,I,uBAGX,SAAUA,EAAQi+kB,EAAYxllB,GAa1B,OAZA3J,KAAKqvlB,aAAan+kB,EAAQi+kB,EAAYxllB,GAIlC3J,KAAK4slB,eAHmB,OAAxB5slB,KAAK4slB,eAGiB5slB,KAAK2slB,eAAiBz7kB,EAMtBlR,KAAK4slB,eAAeiB,WAAa38kB,EAEpDA,I,0BAGX,SAAaA,EAAQi+kB,EAAYxllB,GAK7B,IAAM9F,EAAsB,OAAfsrlB,EAAsBnvlB,KAAKyslB,QAAU0C,EAAWtyb,MAuB7D,OAnBA3rJ,EAAO2rJ,MAAQh5J,EACfqN,EAAOu9kB,MAAQU,EACF,OAATtrlB,EACA7D,KAAK0slB,QAAUx7kB,EAGfrN,EAAK4qlB,MAAQv9kB,EAEE,OAAfi+kB,EACAnvlB,KAAKyslB,QAAUv7kB,EAGfi+kB,EAAWtyb,MAAQ3rJ,EAEK,OAAxBlR,KAAKsslB,iBACLtslB,KAAKsslB,eAAiB,IAAI,IAE9BtslB,KAAKsslB,eAAegD,IAAIp+kB,GACxBA,EAAOE,aAAezH,EACfuH,I,qBAGX,SAAQA,GACJ,OAAOlR,KAAKivlB,eAAejvlB,KAAKkvlB,QAAQh+kB,M,qBAG5C,SAAQA,GACwB,OAAxBlR,KAAKsslB,gBACLtslB,KAAKsslB,eAAe9glB,OAAO0F,GAE/B,IAAMyzD,EAAOzzD,EAAOu9kB,MACd5qlB,EAAOqN,EAAO2rJ,MAgBpB,OAZa,OAATl4F,EACA3kE,KAAKyslB,QAAU5olB,EAGf8gE,EAAKk4F,MAAQh5J,EAEJ,OAATA,EACA7D,KAAK0slB,QAAU/nhB,EAGf9gE,EAAK4qlB,MAAQ9phB,EAEVzzD,I,yBAGX,SAAYA,EAAQogJ,GAGhB,OAAIpgJ,EAAOW,gBAAkBy/I,IAMzBtxJ,KAAK8slB,WAHe,OAApB9slB,KAAK8slB,WAGa9slB,KAAK6slB,WAAa37kB,EAKlBlR,KAAK8slB,WAAWgB,WAAa58kB,GAVxCA,I,4BAcf,SAAeA,GAoBX,OAnB8B,OAA1BlR,KAAKuslB,mBACLvslB,KAAKuslB,iBAAmB,IAAI,IAEhCvslB,KAAKuslB,iBAAiB+C,IAAIp+kB,GAC1BA,EAAOE,aAAe,KACtBF,EAAOu8kB,aAAe,KACK,OAAvBztlB,KAAKgtlB,eAGLhtlB,KAAKgtlB,cAAgBhtlB,KAAK+slB,cAAgB77kB,EAC1CA,EAAOk+kB,aAAe,OAMtBl+kB,EAAOk+kB,aAAepvlB,KAAKgtlB,cAC3BhtlB,KAAKgtlB,cAAgBhtlB,KAAKgtlB,cAAcS,aAAev8kB,GAEpDA,I,gCAGX,SAAmBA,EAAQI,GAQvB,OAPAJ,EAAOI,KAAOA,EAEVtR,KAAKktlB,qBADyB,OAA9BltlB,KAAKktlB,qBACuBltlB,KAAKitlB,qBAAuB/7kB,EAG5BlR,KAAKktlB,qBAAqBa,oBAAsB78kB,EAEzEA,M,GAGT,G,YACF,WAAYI,EAAM48kB,GAAS,oBACvBlulB,KAAKsR,KAAOA,EACZtR,KAAKkulB,UAAYA,EACjBlulB,KAAKoR,aAAe,KACpBpR,KAAK6R,cAAgB,KAErB7R,KAAK4tlB,cAAgB,KAErB5tlB,KAAKyulB,MAAQ,KAEbzulB,KAAK68J,MAAQ,KAEb78J,KAAKuvlB,SAAW,KAEhBvvlB,KAAKwvlB,SAAW,KAEhBxvlB,KAAKovlB,aAAe,KAEpBpvlB,KAAKytlB,aAAe,KAEpBztlB,KAAK6tlB,WAAa,KAElB7tlB,KAAK8tlB,WAAa,KAElB9tlB,KAAK+tlB,oBAAsB,OAI7B,G,8BACF,iCAEI/tlB,KAAK29T,MAAQ,KAEb39T,KAAKyvlB,MAAQ,M,kBAOjB,SAAIv+kB,GACmB,OAAflR,KAAK29T,OACL39T,KAAK29T,MAAQ39T,KAAKyvlB,MAAQv+kB,EAC1BA,EAAOs+kB,SAAW,KAClBt+kB,EAAOq+kB,SAAW,OAMlBvvlB,KAAKyvlB,MAAMD,SAAWt+kB,EACtBA,EAAOq+kB,SAAWvvlB,KAAKyvlB,MACvBv+kB,EAAOs+kB,SAAW,KAClBxvlB,KAAKyvlB,MAAQv+kB,K,iBAKrB,SAAIg9kB,EAAWwB,GACX,IAAIx+kB,EACJ,IAAKA,EAASlR,KAAK29T,MAAkB,OAAXzsT,EAAiBA,EAASA,EAAOs+kB,SACvD,IAAwB,OAAnBE,GAA2BA,GAAkBx+kB,EAAOE,eACrDoL,OAAOq1H,GAAG3gI,EAAOg9kB,UAAWA,GAC5B,OAAOh9kB,EAGf,OAAO,O,oBAOX,SAAOA,GASH,IAAMyzD,EAAOzzD,EAAOq+kB,SACd1rlB,EAAOqN,EAAOs+kB,SAapB,OAZa,OAAT7qhB,EACA3kE,KAAK29T,MAAQ95T,EAGb8gE,EAAK6qhB,SAAW3rlB,EAEP,OAATA,EACA7D,KAAKyvlB,MAAQ9qhB,EAGb9gE,EAAK0rlB,SAAW5qhB,EAEE,OAAf3kE,KAAK29T,U,GAGd,G,8BACF,iCACI39T,KAAKyJ,IAAM,IAAIgE,K,kBAEnB,SAAIyD,GACA,IAAMyL,EAAMzL,EAAOg9kB,UACfyB,EAAa3vlB,KAAKyJ,IAAIyI,IAAIyK,GACzBgzkB,IACDA,EAAa,IAAI,GACjB3vlB,KAAKyJ,IAAI4K,IAAIsI,EAAKgzkB,IAEtBA,EAAW9slB,IAAIqO,K,iBASnB,SAAIg9kB,EAAWwB,GACX,IACME,EAAa5vlB,KAAKyJ,IAAIyI,IADhBg8kB,GAEZ,OAAO0B,EAAaA,EAAW19kB,IAAIg8kB,EAAWwB,GAAkB,O,oBAOpE,SAAOx+kB,GACH,IAAMyL,EAAMzL,EAAOg9kB,UAMnB,OALmBlulB,KAAKyJ,IAAIyI,IAAIyK,GAEjBnR,OAAO0F,IAClBlR,KAAKyJ,IAAI8I,OAAOoK,GAEbzL,I,mBAEX,WACI,OAAyB,IAAlBlR,KAAKyJ,IAAI02B,O,mBAEpB,WACIngC,KAAKyJ,IAAIiH,Y,GAGjB,SAAS68kB,GAAiBj8kB,EAAM+7kB,EAAiBC,GAC7C,IAAMz7kB,EAAgBP,EAAKO,cAC3B,GAAsB,OAAlBA,EACA,OAAOA,EACX,IAAIg+kB,EAAa,EAIjB,OAHIvC,GAAez7kB,EAAgBy7kB,EAAYnplB,SAC3C0rlB,EAAavC,EAAYz7kB,IAEtBA,EAAgBw7kB,EAAkBwC,E,IAUvC,G,8BACF,kC,uBACA,SAAS9xkB,GACL,OAAOA,aAAetQ,KAAOumkB,GAAWj2jB,K,oBAE5C,WACI,OAAO,IAAI,O,GAGb,G,8BACF,iCACI/d,KAAK8vlB,SAAW,IAAIrilB,IACpBzN,KAAK+vlB,SAAW,KAEhB/vlB,KAAKgwlB,aAAe,KACpBhwlB,KAAKiwlB,iBAAmB,KACxBjwlB,KAAKkwlB,aAAe,KACpBlwlB,KAAKmwlB,aAAe,KACpBnwlB,KAAK2slB,eAAiB,KACtB3slB,KAAK4slB,eAAiB,KACtB5slB,KAAK+slB,cAAgB,KACrB/slB,KAAKgtlB,cAAgB,M,oBAEzB,WACI,OAA+B,OAAxBhtlB,KAAK2slB,gBAAiD,OAAtB3slB,KAAKkwlB,cACjB,OAAvBlwlB,KAAK+slB,gB,yBAEb,SAAY/9kB,GACR,IAAIkC,EACJ,IAAKA,EAASlR,KAAK+vlB,SAAqB,OAAX7+kB,EAAiBA,EAASA,EAAO2rJ,MAC1D7tJ,EAAGkC,K,iCAGX,SAAoBlC,GAChB,IAAIkC,EACJ,IAAKA,EAASlR,KAAKiwlB,iBAA6B,OAAX/+kB,EAAiBA,EAASA,EAAO08kB,cAClE5+kB,EAAGkC,K,gCAGX,SAAmBlC,GACf,IAAIkC,EACJ,IAAKA,EAASlR,KAAKkwlB,aAAyB,OAAXh/kB,EAAiBA,EAASA,EAAOk/kB,aAC9DphlB,EAAGkC,K,8BAGX,SAAiBlC,GACb,IAAIkC,EACJ,IAAKA,EAASlR,KAAK2slB,eAA2B,OAAXz7kB,EAAiBA,EAASA,EAAO28kB,WAChE7+kB,EAAGkC,K,gCAGX,SAAmBlC,GACf,IAAIkC,EACJ,IAAKA,EAASlR,KAAK+slB,cAA0B,OAAX77kB,EAAiBA,EAASA,EAAOu8kB,aAC/Dz+kB,EAAGkC,K,kBAGX,SAAKzH,GACD,GAAKA,GAGA,KAAMA,aAAegE,KAAOumkB,GAAWvqkB,IACxC,MAAM,IAAI4qB,MAAJ,gCAAmCoF,EAAUhwB,GAA7C,8CAHNA,EAAM,IAAIgE,IAKd,OAAOzN,KAAKouY,MAAM3kY,GAAOzJ,KAAO,O,uBAEpC,c,mBAKA,SAAMyJ,GAAG,WACLzJ,KAAKi0J,SACL,IAAItzI,EAAe3gB,KAAK+vlB,SAcxB,GAbA/vlB,KAAKgwlB,aAAe,KACpBhwlB,KAAKqwlB,SAAS5mlB,EAAK,SAAClI,EAAOob,GACvB,GAAIgE,GAAgBA,EAAahE,MAAQA,EACrC,EAAK2zkB,mBAAmB3vkB,EAAcpf,GACtC,EAAKyulB,aAAervkB,EACpBA,EAAeA,EAAak8I,UAE3B,CACD,IAAM3rJ,EAAS,EAAKq/kB,yBAAyB5zkB,EAAKpb,GAClDof,EAAe,EAAK6vkB,sBAAsB7vkB,EAAczP,MAI5DyP,EAAc,CACVA,EAAa8tkB,QACb9tkB,EAAa8tkB,MAAM5xb,MAAQ,MAE/B78J,KAAK+slB,cAAgBpskB,EACrB,IAAK,IAAIzP,EAASyP,EAAyB,OAAXzP,EAAiBA,EAASA,EAAOu8kB,aACzDv8kB,IAAWlR,KAAK+vlB,WAChB/vlB,KAAK+vlB,SAAW,MAEpB/vlB,KAAK8vlB,SAASv9kB,OAAOrB,EAAOyL,KAC5BzL,EAAOu8kB,aAAev8kB,EAAO2rJ,MAC7B3rJ,EAAOs3B,cAAgBt3B,EAAO9L,aAC9B8L,EAAO9L,aAAe,KACtB8L,EAAOu9kB,MAAQ,KACfv9kB,EAAO2rJ,MAAQ,KAQvB,OAJI78J,KAAKmwlB,eACLnwlB,KAAKmwlB,aAAaC,aAAe,MACjCpwlB,KAAK4slB,iBACL5slB,KAAK4slB,eAAeiB,WAAa,MAC9B7tlB,KAAKitF,U,mCAUhB,SAAsBvoC,EAAQxzC,GAC1B,GAAIwzC,EAAQ,CACR,IAAMigB,EAAOjgB,EAAO+piB,MAWpB,OAVAv9kB,EAAO2rJ,MAAQn4G,EACfxzC,EAAOu9kB,MAAQ9phB,EACfjgB,EAAO+piB,MAAQv9kB,EACXyzD,IACAA,EAAKk4F,MAAQ3rJ,GAEbwzC,IAAW1kD,KAAK+vlB,WAChB/vlB,KAAK+vlB,SAAW7+kB,GAEpBlR,KAAKgwlB,aAAetriB,EACbA,EAUX,OARI1kD,KAAKgwlB,cACLhwlB,KAAKgwlB,aAAanzb,MAAQ3rJ,EAC1BA,EAAOu9kB,MAAQzulB,KAAKgwlB,cAGpBhwlB,KAAK+vlB,SAAW7+kB,EAEpBlR,KAAKgwlB,aAAe9+kB,EACb,O,sCAEX,SAAyByL,EAAKpb,GAC1B,GAAIvB,KAAK8vlB,SAAS17kB,IAAIuI,GAAM,CACxB,IAAM,EAAS3c,KAAK8vlB,SAAS59kB,IAAIyK,GACjC3c,KAAKswlB,mBAAmB,EAAQ/ulB,GAChC,IAAMojE,EAAO,EAAO8phB,MACd5qlB,EAAO,EAAOg5J,MASpB,OARIl4F,IACAA,EAAKk4F,MAAQh5J,GAEbA,IACAA,EAAK4qlB,MAAQ9phB,GAEjB,EAAOk4F,MAAQ,KACf,EAAO4xb,MAAQ,KACR,EAEX,IAAMv9kB,EAAS,IAAI,GAAsByL,GAIzC,OAHA3c,KAAK8vlB,SAASz7kB,IAAIsI,EAAKzL,GACvBA,EAAO9L,aAAe7D,EACtBvB,KAAKywlB,gBAAgBv/kB,GACdA,I,oBAGX,WACI,GAAIlR,KAAKitF,QAAS,CACd,IAAI/7E,EAGJ,IADAlR,KAAKiwlB,iBAAmBjwlB,KAAK+vlB,SACxB7+kB,EAASlR,KAAKiwlB,iBAA6B,OAAX/+kB,EAAiBA,EAASA,EAAO2rJ,MAClE3rJ,EAAO08kB,cAAgB18kB,EAAO2rJ,MAIlC,IAAK3rJ,EAASlR,KAAKkwlB,aAAyB,OAAXh/kB,EAAiBA,EAASA,EAAOk/kB,aAC9Dl/kB,EAAOs3B,cAAgBt3B,EAAO9L,aAElC,IAAK8L,EAASlR,KAAK2slB,eAA0B,MAAVz7kB,EAAgBA,EAASA,EAAO28kB,WAC/D38kB,EAAOs3B,cAAgBt3B,EAAO9L,aAElCpF,KAAKkwlB,aAAelwlB,KAAKmwlB,aAAe,KACxCnwlB,KAAK2slB,eAAiB3slB,KAAK4slB,eAAiB,KAC5C5slB,KAAK+slB,cAAgB,Q,gCAI7B,SAAmB77kB,EAAQghI,GAClB11H,OAAOq1H,GAAGK,EAAUhhI,EAAO9L,gBAC5B8L,EAAOs3B,cAAgBt3B,EAAO9L,aAC9B8L,EAAO9L,aAAe8sI,EACtBlyI,KAAK0wlB,cAAcx/kB,M,6BAG3B,SAAgBA,GACgB,OAAxBlR,KAAK2slB,eACL3slB,KAAK2slB,eAAiB3slB,KAAK4slB,eAAiB17kB,GAG5ClR,KAAK4slB,eAAeiB,WAAa38kB,EACjClR,KAAK4slB,eAAiB17kB,K,2BAG9B,SAAcA,GACgB,OAAtBlR,KAAKkwlB,aACLlwlB,KAAKkwlB,aAAelwlB,KAAKmwlB,aAAej/kB,GAGxClR,KAAKmwlB,aAAaC,aAAel/kB,EACjClR,KAAKmwlB,aAAej/kB,K,sBAI5B,SAAS6M,EAAK/O,GACN+O,aAAetQ,IACfsQ,EAAI1K,QAAQrE,GAGZwN,OAAOC,KAAKsB,GAAK1K,QAAQ,SAAAmpH,GAAC,OAAIxtH,EAAG+O,EAAIy+G,GAAIA,S,GAI/C,G,YACF,WAAY7/G,GAAG,oBACX3c,KAAK2c,IAAMA,EACX3c,KAAKwoC,cAAgB,KACrBxoC,KAAKoF,aAAe,KAEpBpF,KAAK4tlB,cAAgB,KAErB5tlB,KAAK68J,MAAQ,KAEb78J,KAAKyulB,MAAQ,KAEbzulB,KAAK6tlB,WAAa,KAElB7tlB,KAAKytlB,aAAe,KAEpBztlB,KAAKowlB,aAAe,OAW5B,SAASO,KACL,OAAO,IAAI,GAAgB,CAAC,IAAI,K,sBAO9BC,E,WACF,WAAYxF,GAAS,oBACjBprlB,KAAKorlB,UAAYA,E,wCA0CrB,SAAKpoV,GACD,IAWyBtiQ,EAXnBoE,EAAU9E,KAAKorlB,UAAU/llB,KAAK,SAAA4zB,GAAC,OAAIA,EAAEmwW,SAASpmI,KACpD,GAAe,MAAXl+P,EACA,OAAOA,EAGP,MAAM,IAAIuvB,MAAJ,kDAAqD2uO,EAArD,uBAMetiQ,EANoFsiQ,GAOtG,aAAmBtiQ,EAPhB,S,qBA9Cd,SAAc0qlB,EAAWxkjB,GACrB,GAAc,MAAVA,EAAgB,CAChB,IAAMiqjB,EAASjqjB,EAAOwkjB,UAAU5hlB,QAChC4hlB,EAAYA,EAAUpykB,OAAO63kB,GAEjC,OAAO,IAAID,EAAgBxF,K,oBAsB/B,SAAcA,GACV,MAAO,CACH7olB,QAASqulB,EACTxnkB,WAAY,SAACwd,GAIT,OAAOgqjB,EAAgBtrlB,OAAO8llB,EAAWxkjB,GAAU+pjB,OAGvDxnkB,KAAM,CAAC,CAACynkB,EAAiB,IAAI5lC,GAAY,IAAIluK,U,UAczD8zM,EAAgBhslB,WAAQk8iB,EAAmB,CAAEj8iB,MAAO+rlB,EAAiBhqkB,WAAY,OAAQ9hB,QAAS6rlB,K,KAYlG,SAASG,KACL,OAAO,IAAI,GAAgB,CAAC,IAAI,K,sBAO9BC,E,WACF,WAAY3F,GAAS,oBACjBprlB,KAAKorlB,UAAYA,E,wCA0CrB,SAAK4F,GACD,IAAMlslB,EAAU9E,KAAKorlB,UAAU/llB,KAAK,SAAA4zB,GAAC,OAAIA,EAAEmwW,SAAS4nN,KACpD,GAAIlslB,EACA,OAAOA,EAEX,MAAM,IAAIuvB,MAAJ,kDAAqD28jB,EAArD,S,qBA7CV,SAAc5F,EAAWxkjB,GACrB,GAAIA,EAAQ,CACR,IAAMiqjB,EAASjqjB,EAAOwkjB,UAAU5hlB,QAChC4hlB,EAAYA,EAAUpykB,OAAO63kB,GAEjC,OAAO,IAAIE,EAAgB3F,K,oBAsB/B,SAAcA,GACV,MAAO,CACH7olB,QAASwulB,EACT3nkB,WAAY,SAACwd,GAIT,OAAOmqjB,EAAgBzrlB,OAAO8llB,EAAWxkjB,GAAUkqjB,OAGvD3nkB,KAAM,CAAC,CAAC4nkB,EAAiB,IAAI/lC,GAAY,IAAIluK,U,UAYzDi0M,EAAgBnslB,WAAQk8iB,EAAmB,CAAEj8iB,MAAOkslB,EAAiBnqkB,WAAY,OAAQ9hB,QAASgslB,K,KASlG,SAASG,GAAmB9sC,EAAOuD,EAAOxB,EAAOtphB,GAC7C,IADyE,IAApBomiB,EAAoB,wDACxD,OAAV9c,GAAgB,CAGnB,IAAMgrC,EAAQxpC,EAAMxB,EAAMv8iB,OAO1B,GANc,OAAVunlB,GACAt0jB,EAAOh5B,KAAK4jjB,GAAY0pC,IAKxBlrC,GAAakrC,GACb,IAAK,IAAIrplB,EAAIi+iB,GAAyBj+iB,EAAIqplB,EAAM/slB,OAAQ0D,IAAK,CACzD,IAAMsplB,EAAoBD,EAAMrplB,GAC1BuplB,EAAuBD,EA34pB/B,GA24pBwDz8gB,WACzB,OAAzB08gB,GACAH,GAAmBE,EA74pBzB,GA64pBmDA,EAAmBC,EAAsBx0jB,GAIlG,IAAMsliB,EAAYhc,EAAMxljB,KACxB,GAAgB,EAAZwhkB,EACA+uB,GAAmB9sC,EAAOuD,EAAOxB,EAAMlsa,MAAOp9G,QAE7C,GAAgB,GAAZsliB,EAGL,IAFA,IAAMI,EAAYvE,GAAoB7X,EAAOwB,GACzCgX,OAAK,EACFA,EAAQ4D,KACX1liB,EAAOh5B,KAAK86jB,QAGf,GAAgB,GAAZwD,EAAiC,CACtC,IAAMmvB,EAAc7uB,GAAmB9a,EAAOxB,GAC9C,GAAI37iB,MAAMyL,QAAQq7kB,GACdz0jB,EAAOh5B,KAAP,MAAAg5B,EAAM,YAASy0jB,QAEd,CACD,IAAM3hC,EAAauO,GAAevW,EAAM+J,KAExCw/B,GAAmBvhC,EAp6pBrB,GAo6pBwCA,EAAY2hC,EAAaz0jB,GAAQ,IAG/EsphB,EAAQ8c,EAAe9c,EAAMid,eAAiBjd,EAAMrijB,KAExD,OAAO+4B,E,IAUL,G,8BACF,WAYA62hB,EAOA69B,GAAmB,oBACftxlB,KAAKyzjB,OAASA,EACdzzjB,KAAKsxlB,oBAAsBA,EAC3BtxlB,KAAKsgB,QAAU,KACftgB,KAAKuxlB,0BAA2B,G,sBAEpC,WACI,IAAM7pC,EAAQ1njB,KAAKyzjB,OACbtP,EAAQuD,EA/8pBR,GAg9pBN,OAAOupC,GAAmB9sC,EAAOuD,EAAOvD,EAAMzve,WAAY,M,mBAE9D,WACI,OAAO10E,KAAKyzjB,OA58pBJ,K,qBA88pBZ,WACI,OAAsD,MAAzB,IAArBzzjB,KAAKyzjB,OAr9pBP,M,qBAu9pBV,WACI,GAAIzzjB,KAAKsgB,QACLtgB,KAAKsgB,QAAQe,WAAWrhB,WAEvB,GAAIA,KAAKuxlB,yBAA0B,CACpC,IAAM3qjB,EAAS5mC,KAAKyzjB,OA39pBjB,GA49pBH,GAAIzN,GAAap/gB,GAAS,CACtB,IAAM4qjB,EAAW5qjB,EAt5pBf,GAu5pBIj9B,EAAQ6nlB,EAAWA,EAASvolB,QAAQjJ,OAAS,EAC/C2J,GAAS,IAGT0X,GAAWulB,EAAQj9B,GACnB88X,GAAgB+qN,EAAU7nlB,IAGlC3J,KAAKuxlB,0BAA2B,EAEpCrxB,GAAalgkB,KAAKyzjB,OA1+pBZ,GA0+pB2BzzjB,KAAKyzjB,U,uBAE1C,SAAUxgiB,GACNi4iB,GAAwBlrkB,KAAKyzjB,OA7+pBvB,GA6+pBsCzzjB,KAAKyzjB,OAAQ,KAAMxgiB,K,0BAiCnE,WACI07iB,GAAc3ukB,KAAKsxlB,qBAAuBtxlB,KAAKyzjB,U,oBAuDnD,WACIzzjB,KAAKyzjB,OAtkqBC,KAskqBgB,M,sBA0D1B,WACIzzjB,KAAKyzjB,OAjoqBC,IAioqBgB,M,2BAuB1B,WACImb,GAAsB5ukB,KAAKyzjB,OA1pqBrB,GA0pqBoCzzjB,KAAKyzjB,OAAQzzjB,KAAKwR,W,4BAQhE,YAtsXJ,SAAgC2yiB,EAAOlyiB,EAAMT,GACzCo4iB,IAA0B,GAC1B,IACIglB,GAAsBzqB,EAAOlyiB,EAAMT,GADvC,QAIIo4iB,IAA0B,IAisX1B6nC,CAAuBzxlB,KAAKyzjB,OAnqqBtB,GAmqqBqCzzjB,KAAKyzjB,OAAQzzjB,KAAKwR,W,sCAEjE,WACI,GAAIxR,KAAKsgB,QACL,MAAM,IAAI+T,MAAM,iEAEpBr0B,KAAKuxlB,0BAA2B,I,8BAEpC,WAn3eJ,IAAiC7pC,EAo3ezB1njB,KAAKsgB,QAAU,KAn3enBy+iB,GAo3eqB/+jB,KAAKyzjB,OA7qqBhB,GAwzLmB/L,EAq3eY1njB,KAAKyzjB,OAp3etB/L,EAAMqY,IAAW,EAAgB,KAAM,Q,4BAs3e/D,SAAe2xB,GACX,GAAI1xlB,KAAKuxlB,yBACL,MAAM,IAAIl9jB,MAAM,qDAEpBr0B,KAAKsgB,QAAUoxkB,M,GAIjB,G,YACF,WAAYtsY,GAAK,kCACb,YAAMA,KACDA,MAAQA,EAFA,E,kEAIjB,WACIypX,GAAwB7ukB,KAAKolN,S,4BAEjC,YAjtXJ,SAAkCsiW,GAC9BkC,IAA0B,GAC1B,IACIilB,GAAwBnnB,GAD5B,QAIIkC,IAA0B,IA4sX1B+nC,CAAyB3xlB,KAAKolN,S,mBAElC,WACI,OAAO,S,CAZW,IAyBpBwsY,GAFgDC,G,kBAgDhDC,E,sDAMNA,EAAkBxuC,kBAAoBsuC,GAOtCE,EAAkBC,uBAAwB,E,KAE1C,SAASF,KAAsC,IAAdG,EAAc,wDAC3C,OAAOC,GAAc5oC,KAAmBL,KAAYgpC,GAUxD,SAASC,GAAc/rC,EAAOwB,EAAOsqC,GAIjC,IADyBA,GAAU7rC,GAAgBD,GAC9B,CAGjB,IAAM8nB,EAAgBnmB,GAAyB3B,EAAMv8iB,MAAO+9iB,GAC5D,OAAO,IAAI,GAAQsmB,EAAeA,GAEjC,OAAI,GAAA9nB,EAAMxljB,KAIJ,IAAI,GADegnjB,EAAM+J,IACM/J,GAEnC,KAaX,IAAMwqC,GAAa,CAAC,IAAI,IAKlBC,GAAyB,IAAI,GADd,CAAC,IAAI,KAEpBC,GAAyB,IAAI,GAAgBF,IAW7CG,GAqDN,WACI,OAAOC,GAAkBjpC,KAAmBL,O,kBAnC1CupC,E,sDAMNA,EAAYjvC,kBAAoB+uC,G,KAE1BG,GAAa,YACf,WAAYC,EAAmBC,EAAwBhwlB,GAAU,kCAC7D,aACK+vlB,kBAAoBA,EACzB,EAAKC,uBAAyBA,EAC9B,EAAKhwlB,WAAaA,EAJ2C,EADlD,uEAOf,SAAmB8O,GACf,IAAMu3jB,EAAgB/okB,KAAK0ylB,uBAAuBprB,OAC5CwB,EAAgBpC,GAAY1mkB,KAAKyylB,kBAAmB1pB,EAAev3jB,EAAS,GAAsB,KAAMu3jB,EAAcje,UAAW,KAAM,KAAM,KAAM,MAGzJge,EA51qBuB,IA01qBO9okB,KAAKyylB,kBAAkBzylB,KAAK0ylB,uBAAuB/olB,OAGjF,IAAMgplB,EAA0B3ylB,KAAKyylB,kBAAkBxyB,IAKvD,OAJgC,OAA5B0yB,IACA7pB,EAAc7I,IAAW0yB,EAAwB77kB,mBAAmBiyjB,IAExE7re,GAAW6re,EAAeD,EAAet3jB,GAClC,IAAI,GAAQs3jB,OAlBR,CADW,IAqC9B,SAASwpB,GAAkB1kB,EAAWrF,GAClC,OAAqB,EAAjBqF,EAAUltkB,KAEH,IAAI8xlB,GAAcjqB,EAAWqF,EAAW+d,GAAiB/d,EAAWrF,IAExE,K,IAgBL,G,+CAKA,G,+CAYAqqB,GA6BN,WAEI,OAAOC,GADexpC,KACmBL,O,kBAfvC8pC,E,sDAMNA,EAAiBxvC,kBAAoBsvC,G,KAY/BG,GAAkB,YACpB,WAAYC,EAAaC,EAAYC,GAAU,kCAC3C,aACKF,YAAcA,EACnB,EAAKC,WAAaA,EAClB,EAAKC,WAAaA,EAJyB,EAD3B,0DAOpB,WACI,OAAOvH,GAAiB3rlB,KAAKizlB,WAAYjzlB,KAAKkzlB,cAR9B,oBAUpB,WACI,OAAO,IAAI,GAAalzlB,KAAKizlB,WAAYjzlB,KAAKkzlB,cAX9B,0BAcpB,WACI,IAAM7jC,EAAiBiB,GAA0BtwjB,KAAKizlB,WAAYjzlB,KAAKkzlB,YACvE,GAAI9jC,GAAkBC,GAAiB,CACnC,IAAMK,EAAaH,GAAsBF,EAAgBrvjB,KAAKkzlB,YACxDhjC,EAAgBZ,GAAuBD,GAG7C,OAAO,IAAI,GADSK,EAj+qBlB,GAi+qBoC5/iB,KAAKogjB,EAAgB,GACtBR,GAGrC,OAAO,IAAI,GAAa,KAAM1vjB,KAAKkzlB,cAxBvB,mBA2BpB,WACI,KAAOlzlB,KAAKmE,OAAS,GACjBnE,KAAKwL,OAAOxL,KAAKmE,OAAS,KA7Bd,iBAgCpB,SAAIwF,GACA,IAAM6nlB,EAAW2B,GAAYnzlB,KAAKgzlB,aAClC,OAAoB,OAAbxB,GAAqBA,EAAS7nlB,IAAU,OAlC/B,kBAoCpB,WACI,OAAO3J,KAAKgzlB,YAAY7ulB,OAAS2hjB,KArCjB,gCAuCpB,SAAmBl/iB,EAAa4K,EAAS7H,GACrC,IAAM8M,EAAU7P,EAAYkQ,mBAAmBtF,GAAW,IAE1D,OADAxR,KAAKk/B,OAAOzoB,EAAS9M,GACd8M,IA1CS,6BA4CpB,SAAgBqK,EAAkBnX,EAAOwV,EAAUi0kB,EAAkBC,GACjE,IAAMC,EAAkBn0kB,GAAYnf,KAAKuzlB,eACzC,IAAKF,GAA4C,MAA7BvykB,EAAiBi+F,UAAoBu0e,EAAiB,CAItE,IAAM12jB,EAAS02jB,EAAgBphlB,IAAI,GAAa,MAC5C0qB,IACAy2jB,EAAcz2jB,GAGtB,IAAM/b,EAAeC,EAAiBxb,OAAOgulB,EAAiBF,OAAkB3ulB,EAAW4ulB,GAE3F,OADArzlB,KAAKk/B,OAAOre,EAAaO,SAAUzX,GAC5BkX,IAzDS,oBA2DpB,SAAOpK,EAAS9M,GACZ,IAAM+9iB,EAAQjxiB,EAAQg9iB,OAChBtP,EAAQuD,EA1grBR,GA8grBN,GA52pBG1B,GA42pByB0B,EA5grBrB,IA4grB6B,CAEhC,IAAM8rC,EAAUxzlB,KAAKiJ,QAAQwN,GAK7B,IAAiB,IAAb+8kB,EACAxzlB,KAAK+e,OAAOy0kB,OAEX,CACD,IAAMC,EAAiB/rC,EAvhrBxB,GA4hrBOgsC,EAAY,IAAIX,GAAmBU,EAAgBA,EAzhrB1D,GAyhrBkFA,EA5hrBlF,IA6hrBCC,EAAU30kB,OAAO20kB,EAAUzqlB,QAAQwN,KAI3C,IAAMk9kB,EAAc3zlB,KAAK4zlB,aAAajqlB,GAChC6+iB,EAAaxojB,KAAKgzlB,aAzqfhC,SAAoB7uC,EAAOuD,EAAOc,EAAY7+iB,GAG1C,IAAMg2jB,EAAmB7Z,GAA0Bn8iB,EAC7CkqlB,EAAkBrrC,EAAWrkjB,OAC/BwF,EAAQ,IAER6+iB,EAAWmX,EAAmB,GA/3LzB,GA+3LoCjY,GAEzC/9iB,EAAQkqlB,EAAkB/tC,IAC1B4B,EAl4LK,GAk4LSc,EAAWmX,GACzBlK,GAAWjN,EAAY1C,GAA0Bn8iB,EAAO+9iB,KAGxDc,EAAW5kjB,KAAK8jjB,GAChBA,EAv4LK,GAu4LS,MAElBA,EA14LW,GA04LKc,EAEhB,IAAMqX,EAAwBnY,EA73LH,IA83LG,OAA1BmY,GAAkCrX,IAAeqX,GAezD,SAAwBP,EAAsB5X,GAG1C,IAAM6X,EAAaD,EAv1LH,GA41Le5X,EAAM+J,MAJV/J,EAh6LhB,MAk6L+C+J,MAQtD6N,EAz2LuB,IAy2LwB,GAEhC,OAAfC,EACAD,EAr2LY,GAq2LwB,CAAC5X,GAGrC6X,EAAW37jB,KAAK8jjB,GAlChBosC,CAAej0B,EAAuBnY,GAG1C,IAAMsY,EAAWtY,EAAMuY,IACN,OAAbD,GACAA,EAAS+zB,WAAW5vC,GAGxBuD,EAv5LU,IAu5LM,IA6ofZqsC,CAAW5vC,EAAOuD,EAAOc,EAAYmrC,GAErC,IAAMn1B,EAAa2D,GAAqBwxB,EAAanrC,GAC/Cj1b,EAAWm0b,EAAMqY,IACjBiC,EAAcV,GAAiB/tc,EAAUi1b,EAj+qBxC,IAu+qBP,OALoB,OAAhBwZ,GA7vfZ,SAA4B7d,EAAO8G,EAAa13b,EAAUm0b,EAAOssC,EAAkBx1B,GAC/E9W,EA/yLS,GA+yLKssC,EACdtsC,EA1yLW,GA0yLKuD,EAChB8T,GAAU5a,EAAOuD,EAAOn0b,EAAU,EAAgByge,EAAkBx1B,GA2vf5Dy1B,CAAmB9vC,EAAOqE,EAtirBvB,GAsirB2Cj1b,EAAUm0b,EAAOsa,EAAaxD,GAEhF/njB,EAAQy9kB,2BACRz+B,GAAW0+B,GAAoB3rC,GAAamrC,EAAal9kB,GAClDA,IAlGS,kBAoGpB,SAAKA,EAAS+8I,GAIV,OAAOxzJ,KAAKk/B,OAAOzoB,EAAS+8I,KAxGZ,qBA0GpB,SAAQ/8I,GACJ,IAAM29kB,EAAcjB,GAAYnzlB,KAAKgzlB,aACrC,OAAuB,OAAhBoB,EAAuBA,EAAYnrlB,QAAQwN,IAAY,IA5G9C,oBA8GpB,SAAO9M,GACH,IAAMgqlB,EAAc3zlB,KAAK4zlB,aAAajqlB,GAAQ,GACxCo1B,EAAe1d,GAAWrhB,KAAKgzlB,YAAaW,GAC9C50jB,IAOA0nW,GAAgB0tN,GAAoBn0lB,KAAKgzlB,aAAcW,GACvDzzB,GAAanhiB,EAtkrBX,GAskrBgCA,MAzHtB,oBA4HpB,SAAOp1B,GACH,IAAMgqlB,EAAc3zlB,KAAK4zlB,aAAajqlB,GAAQ,GACxCsI,EAAOoP,GAAWrhB,KAAKgzlB,YAAaW,GAE1C,OADoB1hlB,GAA+E,MAAvEw0X,GAAgB0tN,GAAoBn0lB,KAAKgzlB,aAAcW,GAC9D,IAAI,GAAQ1hlB,GAAQ,OAhIzB,0BAkIpB,SAAatI,GAAgB,IAATgL,EAAS,uDAAD,EACxB,OAAa,MAAThL,EACO3J,KAAKmE,OAASwQ,EAOlBhL,MA3IS,CADI,IA+I5B,SAASwplB,GAAY3qC,GACjB,OAAOA,EAnhrBO,GAqhrBlB,SAAS2rC,GAAoB3rC,GACzB,OAAQA,EAthrBM,KAshrBoBA,EAthrBpB,GAshrB4C,IAW9D,SAASqqC,GAAmBjlB,EAAWrF,GAEnC,IAAI/f,EACET,EAAYwgB,EAAUqF,EAAUjkkB,OACtC,GAAIq8iB,GAAa+B,GAEbS,EAAaT,MAEZ,CACD,IAAIssC,EAKJ,GAAqB,EAAjBzmB,EAAUltkB,KACV2zlB,EAAc7sC,GAAYO,OAEzB,CAID,IAAMx0b,EAAWg1c,EAAUxI,IAE3Bs0B,EAAc9ge,EAAS9yG,cAAwC,IAC/D,IAAM6tjB,EAAa3mB,GAAiBimB,EAAWrF,GAE/C3J,GAAmBrrc,EADQ+tc,GAAiB/tc,EAAU+6c,GACL+lB,EAp5e7D,SAA2B9ge,EAAUmwB,GACjC,OAAO2ja,GAAqB9zb,GAAYA,EAAS8xK,YAAY3hJ,GAAQA,EAAK2hJ,YAm5eJivT,CAAkB/ge,EAAU+6c,IAAa,GAE3G/F,EAAUqF,EAAUjkkB,OAAS6+iB,EACzB6lB,GAAiBtmB,EAAWwgB,EAAW8rB,EAAazmB,GACxDK,GAAc1F,EAAW/f,GAE7B,OAAO,IAAIuqC,GAAmBvqC,EAAYolB,EAAWrF,GAm7CzD,IAAMgsB,GAAwC,GAqOxC,G,YAIF,WAAYx1e,GAAQ,kCAChB,aACKA,SAAWA,EAFA,E,4EAIpB,SAAwB9/F,GAEpB,IAAMu1kB,EAAe/vC,GAAgBxliB,GACrC,OAAO,IAAI,GAAmBu1kB,EAAcx0lB,KAAK++G,c,CAXhB,IAczC,SAAS01e,GAAWhrlB,GAChB,IAAMsP,EAAQ,GACd,IAAK,IAAI27kB,KAAejrlB,EAChBA,EAAIikC,eAAegnjB,IAEnB37kB,EAAMnV,KAAK,CAAEkxC,SADIrrC,EAAIirlB,GACYC,aAAcD,IAGvD,OAAO37kB,EAUX,IAAM67kB,GAAY,IAAI,GAAe,kBAAmB,CACpDhukB,WAAY,OACZ9hB,QAAS,kBAAMy4jB,MAsBb,G,YAKF,WAAYi3B,EAAcz1e,GAAQ,kCAC9B,aACKy1e,aAAeA,EACpB,EAAKz1e,SAAWA,EAChB,EAAK2zP,cAAgB8hP,EAAa9zlB,KAClC,EAAK4zC,SAAoCkgjB,EAAa7zlB,UAl0gBtC8I,IAAIg8jB,IAAsBz1hB,KAAK,KAm0gB/C,EAAKn3B,mBACD27kB,EAAa37kB,mBAAqB27kB,EAAa37kB,mBAAqB,GACxE,EAAKg8kB,kBAAoB91e,EARK,E,yDAUlC,WACI,OAAO01e,GAAWz0lB,KAAKw0lB,aAAarylB,U,mBAExC,WACI,OAAOsylB,GAAWz0lB,KAAKw0lB,aAAarykB,W,oBAExC,SAAOhD,EAAUi0kB,EAAkB0B,EAAoB/1e,GAEnD,IAsBI9/F,EACA81kB,EAvBEC,GADNj2e,EAAWA,GAAY/+G,KAAK++G,UA1CpC,SAA+Bi2e,EAAkB9jC,GAC7C,MAAO,CACHh/iB,IAAK,SAACrN,EAAOk9iB,EAAephP,GACxB,IAAMp/T,EAAQyzlB,EAAiB9ilB,IAAIrN,EAAO0vlB,GAAuC5zR,GACjF,OAAIp/T,IAAUgzlB,IACVxyC,IAAkBwyC,GAMXhzlB,EAEJ2vjB,EAAeh/iB,IAAIrN,EAAOk9iB,EAAephP,KA8BhBs0R,CAAsB91kB,EAAU4/F,EAAS5/F,UAAYA,EACnFogJ,EAAkBy1b,EAAiB9ilB,IAAI,GAAkBo1iB,IACzD+U,EAAY24B,EAAiB9ilB,IAAI,GAAW,MAC5CgjlB,EAAe31b,EAAgB7nC,eAAe,KAAM13H,KAAKw0lB,cAGzDW,EAAcn1lB,KAAKw0lB,aAAa7zlB,UAAU,GAAG,IAAM,MACnDy0lB,EAAYN,EAh7d1B,SAA2Bvhe,EAAU8he,EAAmB7ulB,GACpD,GAAI6gjB,GAAqB9zb,GAGrB,OAAOA,EAASmtM,kBAAkB20R,EADV7ulB,IAAkB27iB,GAAkBmzC,WAGhE,IAAIC,EAAwC,iBAAtBF,EAClB9he,EAASnoH,cAAciqlB,GACvBA,EAOJ,OADAE,EAAS/hf,YAAc,GAChB+hf,EAk6dCC,CAAkBN,EAAcJ,EAAoB90lB,KAAKw0lB,aAAahulB,eACtE44jB,GAAkB7/Z,EAAgB7nC,eAAe,KAAM13H,KAAKw0lB,cAAeW,EAhEvF,SAAwBA,GACpB,IAAMh0lB,EAAOg0lB,EAAYv4kB,cACzB,MAAgB,QAATzb,EAAiB+ljB,GAA0B,SAAT/ljB,EAn5tBnB,iCAm5tByD,KA8DiBs0lB,CAAeN,IACrGO,EAAY11lB,KAAKw0lB,aAAa5wC,OAAS,IACzC,IACEkrB,EA1zYH,CACHj7N,WAAY,GACZ/nO,UAAwByxb,GACxBo4B,MAAO1mB,GACP2mB,cAAgC,KAChCj1R,MAAO,GAuzYDk1R,EAAYlrB,GAAY,EAAc,KAAM,KAAM,EAAG,EAAG,KAAM,KAAM,KAAM,KAAM,MAChFmrB,EAAYpvB,GAAY,KAAMmvB,EAAW/mB,EAAa4mB,EAAW,KAAM,KAAMn2b,EAAiB21b,EAAc74B,EAAW24B,GAM7H1pC,GAAUwqC,GAGV,IACI,IAAM9nB,EAt4YlB,SAAiCtP,EAAOzrjB,EAAKktjB,EAAU5ga,EAAiB21b,EAAc74B,GAClF,IAAMlY,EAAQgc,EArgWJ,GAwgWVA,EAFcta,IAEI6Y,EAIlB,IAAMxY,EAAQ2gB,GAAiB1iB,EANjB0B,GAM+B,EAAiB,QAAS,MACjEshB,EAAcjhB,EAAMihB,YAAcl0jB,EAAIlQ,UACxB,OAAhBokkB,IACAoI,GAAqBrpB,EAAOihB,GAAa,GAC3B,OAAVzI,IACAnQ,GAAgB2mC,EAAcx2B,EAAOyI,GACf,OAAlBjhB,EAAMjhhB,SACNw+hB,GAAiByxB,EAAcx2B,EAAOxY,EAAMjhhB,SAE3B,OAAjBihhB,EAAMptiB,QACN0qjB,GAAiB0xB,EAAcx2B,EAAOxY,EAAMptiB,UAIxD,IAAMi9kB,EAAex2b,EAAgB7nC,eAAegnc,EAAOzrjB,GACrD+6jB,EAAgBtH,GAAYvG,EAAUuK,GAA0Bz3jB,GAAM,KAAMA,EAAI2wiB,OAAS,GAAiB,GAAsBuc,EArBxHta,IAqByIK,EAAO3mZ,EAAiBw2b,EAA2B,KAAM,MAQhN,OAPI5xC,EAAM8L,kBACNU,GAAmBb,GAA+B5J,EAAOia,GAAWhc,EAAOlxiB,EAAIvS,MAC/E4rkB,GAAoBnoB,EAAO+B,GAC3BumB,GAAevmB,EAAOia,EAASh8jB,OAAQ,IAE3C8pkB,GAAc9N,EAAU6N,GAEjB7N,EA7BOta,IA6BWmoB,EAu2YKgoB,CAAwBZ,EAAWp1lB,KAAKw0lB,aAAcsB,EAAWv2b,EAAiB21b,GACxG,GAAIE,EACA,GAAIN,EACAvmC,GAAgB2mC,EAAcE,EAAW,CAAC,aAAc16Z,GAAQ6B,WAE/D,CAID,MAr2gBpB,SAA4CjoJ,GAKxC,IAJA,IAAM28E,EAAQ,GACRhsF,EAAU,GACZp9B,EAAI,EACJ+qB,EAAO,EACJ/qB,EAAIysC,EAASnwC,QAAQ,CACxB,IAAIwhkB,EAAgBrxhB,EAASzsC,GAC7B,GAA6B,iBAAlB89jB,EACM,IAAT/yiB,EACsB,KAAlB+yiB,GACA10c,EAAMrtH,KAAK+hkB,EAAerxhB,IAAWzsC,IAG3B,IAAT+qB,GACLqS,EAAQrhC,KAAK+hkB,OAGhB,CAID,IAAKjB,GAAW9xiB,GACZ,MACJA,EAAO+yiB,EAEX99jB,IAEJ,MAAO,CAAEopH,QAAOhsF,WA00gB2BgxjB,CAAmCj2lB,KAAKw0lB,aAAa7zlB,UAAU,IAAlFswH,EAAR,EAAQA,MAAOhsF,EAAf,EAAeA,QACXgsF,GACAs9b,GAAgB2mC,EAAcE,EAAWnke,GAEzChsF,GAAWA,EAAQ9gC,OAAS,GAC5Bs/jB,GAAiByxB,EAAcE,EAAWnwjB,EAAQ+K,KAAK,MAKnE,GADA+kjB,EAAentC,GAASiuC,EAAWhwC,SACVphjB,IAArB2ulB,EAEA,IADA,IAAM3wB,EAAasyB,EAAatyB,WAAa,GACpC56jB,EAAI,EAAGA,EAAI7H,KAAK6Y,mBAAmB1U,OAAQ0D,IAAK,CACrD,IAAMqulB,EAAe9C,EAAiBvrlB,GAMtC46jB,EAAW7+jB,KAAqB,MAAhBsylB,EAAuB3rlB,MAAMjG,KAAK4xlB,GAAgB,MAM1Ej3kB,EAn4YZ,SAA6B+ujB,EAAewmB,EAAcsB,EAAWhnB,EAAaqnB,GAC9E,IAAMhyC,EAAQ2xC,EA1iWJ,GA4iWJ72kB,EAnxEV,SAAkCkliB,EAAOuD,EAAOz0iB,GAC5C,IAAMyykB,EAAYr8B,KACdlF,EAAM8L,kBACFh9iB,EAAI0wiB,mBACJ1wiB,EAAI0wiB,kBAAkB1wiB,GAI1B25jB,GAA2BzoB,EAAOuhC,EAAWh+B,EAHtBogB,GAAa3jB,EAAOuD,EAAO,EAAG,MAGez0iB,IAExE,IAAMyqiB,EAAYwU,GAAkBxK,EAAOvD,EAAOuhC,EAAU/4B,eAAgB+4B,GAC5EpoB,GAAgB5f,EAAWgK,GAC3B,IAAM3xV,EAAS4xV,GAAiB+9B,EAAWh+B,GAI3C,OAHI3xV,GACAunW,GAAgBvnW,EAAQ2xV,GAErBhK,EAmwEW04C,CAAyBjyC,EAAO2xC,EAAWtB,GAM7D,GALA1lB,EAAYj7N,WAAWjwW,KAAKqb,GAC5B+ujB,EAviWY,GAuiWa/ujB,EACzBk3kB,GAAgBA,EAAa9ilB,QAAQ,SAACk2a,GAAD,OAAaA,EAAQtqa,EAAWu1kB,KAGjEA,EAAa9ylB,eAAgB,CAC7B,IAAMwkjB,EAAQmD,KAEdmrC,EAAa9ylB,eAAe,EAAgBud,EAAWiniB,EAAMyG,gBAEjE,IAAM+4B,EAAYr8B,KASlB,OAPIlF,EAAM8L,iBACyB,OAA9BukC,EAAah8kB,cAAoD,OAA3Bg8kB,EAAazxlB,YACpDupjB,GAAiBo5B,EAAU/7kB,OAE3B6jkB,GADkBsoB,EA5jWZ,GA6jWgCpQ,EAAWoQ,EAAWpQ,EAAU/4B,eAAgB+4B,EAAU94B,aAAc4nC,GAC9GnqB,GAAiCmqB,EAAcv1kB,IAE5CA,EA42Yao3kB,CAAoBroB,EAAehukB,KAAKw0lB,aAAcsB,EAAWhnB,EAAa,CAAC6D,KAC3Fz1e,GAAW24f,EAAWC,EAAW,MApCrC,QAuCI9pC,KAEJ,OAAO,IAAI,GAAehsjB,KAAK0yW,cAAezzV,EAAW0skB,GAAiBoJ,EAAce,GAAYA,EAAWf,O,CAxFtF,IA8G3B,G,YACF,WAAYriP,EAAe5+U,EAAUwG,EAAUg8jB,EAAY9iC,GAAM,kCAC7D,aACKl5hB,SAAWA,EAChB,EAAKg8jB,WAAaA,EAClB,EAAK9iC,OAASA,EACd,EAAK1/hB,SAAWA,EAChB,EAAK1S,SAAW,EAAKmvG,kBAAoB,IAAI,GAAY+le,GACzD,EAAK5jP,cAAgBA,EAPwC,E,2DASjE,WACI,OAAO,IAAI,GAAa1yW,KAAKwzjB,OAAQxzjB,KAAKs2lB,c,qBAE9C,WACIt2lB,KAAKohB,SAASF,Y,uBAElB,SAAU+R,GACNjzB,KAAKohB,SAAS+3G,UAAUlmG,O,CAjBH,IAiFvB+2V,GAAU,IAAIv8W,IAmDd,G,YACF,WAAY8jkB,EAAc//b,GAAO,2BAC7B,aACKA,QAAUA,EAEf,EAAK+kd,qBAAuB,GAC5B,EAAKp3kB,SAAL,EACA,EAAKq3kB,WAAa,GAOlB,EAAKp3kB,yBAA2B,IAAI,GAAJ,GAChC,IAAM8liB,EAAcC,GAAeosB,GAG7BklB,EAAiCllB,EA5mvB/BruB,KAAkB,KA2lvBG,OAkB7BuzC,GAAiBnV,GAAYmV,GAC7B,EAAKF,qBAAuB34B,GAAc1Y,EAAYJ,WACtD,EAAK4xC,YAAc1mB,GAAuCuB,EAAc//b,EAAS,CAC7E,CAAEjvI,QAAS,GAAaqW,SAAU,GAAQ,CACtCrW,QAAS,GACTqW,SAAU,EAAKwG,2BAEpBqa,EAAU83iB,IAIb,EAAKmlB,YAAYnkB,2BACjB,EAAKz+iB,SAAW,EAAK5hB,IAAIq/jB,GA9BI,E,wDAgCjC,SAAI1skB,GAAqF,IAA9Ek9iB,EAA8E,uDAA9D,GAASqU,mBAAoBugC,EAAiC,uDAAnBj1C,EAAY2P,QAC9E,OAAIxsjB,IAAU,IAAYA,IAAU,IAAeA,IAAU4qkB,GAClDzvkB,KAEJA,KAAK02lB,YAAYxklB,IAAIrN,EAAOk9iB,EAAe40C,K,qBAEtD,WAEI,IAAMx3kB,EAAWnf,KAAK02lB,aACrBv3kB,EAAS2hJ,WAAa3hJ,EAAS+B,UAChClhB,KAAKw2lB,WAAWnjlB,QAAQ,SAAArE,GAAE,OAAIA,MAC9BhP,KAAKw2lB,WAAa,O,uBAEtB,SAAUvjkB,GAENjzB,KAAKw2lB,WAAW5ylB,KAAKqvB,O,CAhDD,IAmDtB,G,YACF,WAAY2jkB,GAAU,MAxFIrlB,EACpBslB,EAuFgB,4BAClB,aACKD,WAAaA,EAEE,OADAzxC,GAAeyxC,KA3FbrlB,EAoHGqlB,EAnHvBC,EAAU,IAAIlplB,IAEpB,SAASmplB,EAAQvlB,GAGb,IAAMt+jB,EAAMkyiB,GAAeosB,GAAkC,GACvDvrjB,EAAK/S,EAAI+S,GACJ,OAAPA,IAbZ,SAAiCA,EAAItlB,EAAMq2lB,GACvC,GAAIr2lB,GAAQA,IAASq2lB,EACjB,MAAM,IAAI1ikB,MAAJ,0CAA6CrO,EAA7C,cAAqDyT,EAAU/4B,GAA/D,eAA2E+4B,EAAU/4B,EAAKS,QAa5F61lB,CAAwBhxkB,EADPgkW,GAAQ93W,IAAI8T,GACSurjB,GACtCvnN,GAAQ31W,IAAI2R,EAAIurjB,IAEpB,IAVyB,EAUnBn4jB,EAAUwkjB,GAAc3qjB,EAAImG,SAVT,cAWTA,GAXS,IAWzB,2BAAyB,KAAdvR,EAAc,QAChBgvlB,EAAQzilB,IAAIvM,KACbgvlB,EAAQh0lB,IAAIgF,GACZivlB,EAAQjvlB,KAdS,+BAD7BivlB,CAAQvlB,IAsFc,E,2DA+BtB,SAAOgiB,GACH,OAAO,IAAI,GAAcvzlB,KAAK42lB,WAAYrD,O,CAjClB,IAwEhC,SAAS0D,GAAgBC,EAAYC,EAAQ1sd,GACzC,IAAMw/a,EAAeJ,KAAmBqtC,EAClCxvC,EAAQsB,KACd,OAAOtB,EAAMuC,KAAkB4b,GAC3BoO,GAAcvsB,EAAOuC,EAAcx/a,EAAU0sd,EAAOjikB,KAAKu1G,GAAW0sd,KACpEjjB,GAAWxsB,EAAOuC,GAc1B,SAASmtC,GAAgBF,EAAYC,EAAQrwU,EAAKr8I,GAC9C,OAAO4sd,GAAsBruC,KAAYa,KAAkBqtC,EAAYC,EAAQrwU,EAAKr8I,GAexF,SAAS6sd,GAAgBJ,EAAYC,EAAQ9iB,EAAMC,EAAM7pc,GACrD,OAAO8sd,GAAsBvuC,KAAYa,KAAkBqtC,EAAYC,EAAQ9iB,EAAMC,EAAM7pc,GAgB/F,SAAS+sd,GAAgBN,EAAYC,EAAQ9iB,EAAMC,EAAMG,EAAMhqc,GAC3D,OAAOgtd,GAAsBzuC,KAAYa,KAAkBqtC,EAAYC,EAAQ9iB,EAAMC,EAAMG,EAAMhqc,GAiBrG,SAASitd,GAAgBR,EAAYC,EAAQ9iB,EAAMC,EAAMG,EAAME,EAAMlqc,GACjE,OAmNJ,SAA+Bi9a,EAAOiwC,EAAaT,EAAYC,EAAQ9iB,EAAMC,EAAMG,EAAME,EAAMlqc,GAC3F,IAAMw/a,EAAe0tC,EAAcT,EACnC,OAAOxiB,GAAgBhtB,EAAOuC,EAAcoqB,EAAMC,EAAMG,EAAME,GAC1DV,GAAcvsB,EAAOuC,EAAe,EAAGx/a,EAAU0sd,EAAOjikB,KAAKu1G,EAAS4pc,EAAMC,EAAMG,EAAME,GAAQwiB,EAAO9iB,EAAMC,EAAMG,EAAME,IACzHijB,GAA2BlwC,EAAOuC,EAAe,GAvN9C4tC,CAAsB7uC,KAAYa,KAAkBqtC,EAAYC,EAAQ9iB,EAAMC,EAAMG,EAAME,EAAMlqc,GAkB3G,SAASqtd,GAAgBZ,EAAYC,EAAQ9iB,EAAMC,EAAMG,EAAME,EAAMojB,EAAMttd,GACvE,IAAMw/a,EAAeJ,KAAmBqtC,EAClCxvC,EAAQsB,KACRurB,EAAYG,GAAgBhtB,EAAOuC,EAAcoqB,EAAMC,EAAMG,EAAME,GACzE,OAAOR,GAAezsB,EAAOuC,EAAe,EAAG8tC,IAASxjB,EACpDN,GAAcvsB,EAAOuC,EAAe,EAAGx/a,EAAU0sd,EAAOjikB,KAAKu1G,EAAS4pc,EAAMC,EAAMG,EAAME,EAAMojB,GAC1FZ,EAAO9iB,EAAMC,EAAMG,EAAME,EAAMojB,IACnC7jB,GAAWxsB,EAAOuC,EAAe,GA4GzC,SAAS2tC,GAA2BlwC,EAAOswC,GAEvC,IAAMC,EAAkBvwC,EAAMswC,GAC9B,OAAOC,IAAoBpyB,QAAYphkB,EAAYwzlB,EAcvD,SAASZ,GAAsB3vC,EAAOiwC,EAAaT,EAAYC,EAAQrwU,EAAKr8I,GACxE,IAAMw/a,EAAe0tC,EAAcT,EACnC,OAAO/iB,GAAezsB,EAAOuC,EAAcnjS,GACvCmtT,GAAcvsB,EAAOuC,EAAe,EAAGx/a,EAAU0sd,EAAOjikB,KAAKu1G,EAASq8I,GAAOqwU,EAAOrwU,IACpF8wU,GAA2BlwC,EAAOuC,EAAe,GAezD,SAASstC,GAAsB7vC,EAAOiwC,EAAaT,EAAYC,EAAQ9iB,EAAMC,EAAM7pc,GAC/E,IAAMw/a,EAAe0tC,EAAcT,EACnC,OAAO9iB,GAAgB1sB,EAAOuC,EAAcoqB,EAAMC,GAC9CL,GAAcvsB,EAAOuC,EAAe,EAAGx/a,EAAU0sd,EAAOjikB,KAAKu1G,EAAS4pc,EAAMC,GAAQ6iB,EAAO9iB,EAAMC,IACjGsjB,GAA2BlwC,EAAOuC,EAAe,GAgBzD,SAASwtC,GAAsB/vC,EAAOiwC,EAAaT,EAAYC,EAAQ9iB,EAAMC,EAAMG,EAAMhqc,GACrF,IAAMw/a,EAAe0tC,EAAcT,EACnC,OAAO1iB,GAAgB9sB,EAAOuC,EAAcoqB,EAAMC,EAAMG,GACpDR,GAAcvsB,EAAOuC,EAAe,EAAGx/a,EAAU0sd,EAAOjikB,KAAKu1G,EAAS4pc,EAAMC,EAAMG,GAAQ0iB,EAAO9iB,EAAMC,EAAMG,IAC7GmjB,GAA2BlwC,EAAOuC,EAAe,GAiEzD,SAASiuC,GAAOvulB,EAAOwulB,GACnB,IACIzyC,EADEvB,EAAQ8E,KAERusB,EAAgB7rkB,EAAQk8iB,GAC1B1B,EAAM8L,iBACNvK,EAkCR,SAAsBvkjB,EAAMkrkB,GACxB,GAAIA,EACA,IAAK,IAAIxkkB,EAAIwkkB,EAASlokB,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CAC3C,IAAM,EAAUwkkB,EAASxkkB,GACzB,GAAI1G,IAAS,EAAQA,KACjB,OAAO,EAInB,MAAM,IAAI,EAAa,MAAjB,oBAA0DA,EAA1D,0BA3CQi3lB,CAAaD,EAAUh0C,EAAM8mB,cACvC9mB,EAAMr0iB,KAAK0lkB,GAAiB9vB,EACxBA,EAAQvsb,YACPgrb,EAAMkJ,eAAiBlJ,EAAMkJ,aAAe,KAAKzpjB,KAAK4xkB,EAAe9vB,EAAQvsb,YAIlFusb,EAAUvB,EAAMr0iB,KAAK0lkB,GAEzB,IAAM6iB,EAAc3yC,EAAQ5gjB,UAAY4gjB,EAAQ5gjB,QAAUwhjB,GAAcZ,EAAQhljB,OAC1EywjB,EAA+BvP,EAAwBi0B,IAC7D,IAGI,IAAM/iB,EAA+BlD,IAAwB,GACvD0oC,EAAeD,IAGrB,OAFAzoC,GAAwBkD,GA74XhC,SAAe3O,EAAOuD,EAAO/9iB,EAAOpI,GAG5BoI,GAASw6iB,EAAMr0iB,KAAK3L,SACpBggjB,EAAMr0iB,KAAKnG,GAAS,KACpBw6iB,EAAMiM,UAAUzmjB,GAAS,MAE7B+9iB,EAAM/9iB,GAASpI,EAu4XX+1B,CAAM6shB,EAAO6E,KAAYwsB,EAAe8iB,GACjCA,EAPX,QAYI12C,EAAwBuP,IAkChC,SAASonC,GAAY5ulB,EAAOutlB,EAAYhiB,GACpC,IAAMM,EAAgB7rkB,EAAQk8iB,GACxB6B,EAAQsB,KACRsvC,EAAe/uN,GAAKm+K,EAAO8tB,GACjC,OAAOgjB,GAAc9wC,EAAO+wC,GAAO/wC,EAAO8tB,GACtC6hB,GAAsB3vC,EAAOmC,KAAkBqtC,EAAYoB,EAAa32jB,UAAWuziB,EAAIojB,GACvFA,EAAa32jB,UAAUuziB,IAe/B,SAASwjB,GAAY/ulB,EAAOutlB,EAAYhiB,EAAIE,GACxC,IAAMI,EAAgB7rkB,EAAQk8iB,GACxB6B,EAAQsB,KACRsvC,EAAe/uN,GAAKm+K,EAAO8tB,GACjC,OAAOgjB,GAAc9wC,EAAO+wC,GAAO/wC,EAAO8tB,GACtC+hB,GAAsB7vC,EAAOmC,KAAkBqtC,EAAYoB,EAAa32jB,UAAWuziB,EAAIE,EAAIkjB,GAC3FA,EAAa32jB,UAAUuziB,EAAIE,IAgBnC,SAASujB,GAAYhvlB,EAAOutlB,EAAYhiB,EAAIE,EAAI2J,GAC5C,IAAMvJ,EAAgB7rkB,EAAQk8iB,GACxB6B,EAAQsB,KACRsvC,EAAe/uN,GAAKm+K,EAAO8tB,GACjC,OAAOgjB,GAAc9wC,EAAO+wC,GAAO/wC,EAAO8tB,GAAiBiiB,GAAsB/vC,EAAOmC,KAAkBqtC,EAAYoB,EAAa32jB,UAAWuziB,EAAIE,EAAI2J,EAAIuZ,GACtJA,EAAa32jB,UAAUuziB,EAAIE,EAAI2J,IA4CvC,SAAS0Z,GAAO/wC,EAAO/9iB,GACnB,OAAO+9iB,EA3qwBG,GA2qwBU53iB,KAAKnG,GAAOg8iB,KASpC,SAAS6yC,GAAc9wC,EAAOx1a,GAQ1B,OAPI,GAAa4hc,UAAU5hc,KACvBA,EAAW,GAAa0md,OAAO1md,GAI/Bw1a,EAD+BsC,MACC6b,IAE7B3zb,EA6CX,SAAS2md,GAAe7plB,GACpB,OAAO,SAACzN,GACJqjC,WAAW51B,OAAIvK,EAAWlD,IAMlC,IAAMu3lB,G,YA1CF,aAA2B,MAAfC,EAAe,oFACvB,aACKC,UAAYD,EAFM,E,yDAI3B,SAAKx3lB,GACD,oBAAWA,M,uBAEf,SAAUolK,EAAgB3xI,EAAOlxB,GAC7B,IAAI6G,EAAIC,EAAI+pB,EACRskkB,EAAStyb,EACTuyb,EAAUlkkB,GAAU,kBAAM,MAC1BmkkB,EAAar1lB,EACjB,GAAI6iK,GAA4C,iBAAnBA,EAA6B,CACtD,IAAMv6H,EAAWu6H,EACjBsyb,EAAkC,QAAxBtulB,EAAKyhC,EAASvoC,YAAyB,IAAP8G,OAAgB,EAASA,EAAG4/B,KAAK6B,GAC3E8sjB,EAAoC,QAAzBtulB,EAAKwhC,EAASpX,aAA0B,IAAPpqB,OAAgB,EAASA,EAAG2/B,KAAK6B,GAC7E+sjB,EAA0C,QAA5BxkkB,EAAKyX,EAAStoC,gBAA6B,IAAP6wB,OAAgB,EAASA,EAAG4V,KAAK6B,GAEnFpsC,KAAKg5lB,YACLE,EAAUL,GAAeK,GACrBD,IACAA,EAASJ,GAAeI,IAExBE,IACAA,EAAaN,GAAeM,KAGpC,IAAMjsZ,EAAO,EAAH,qBAAG,CAAH,CAAmB,CAAErpM,KAAMo1lB,EAAQjkkB,MAAOkkkB,EAASp1lB,SAAUq1lB,KAIvE,OAHIxyb,aAA0B5hB,EAAA,GAC1B4hB,EAAe9jK,IAAIqqM,GAEhBA,M,CAhCazpM,EAAA,GAoD5B,SAAS21lB,KACL,OAAOp5lB,KAAKq5lB,SAASz2W,Q,IA4BnB,G,8BAOF,aAA4C,IAAhC02W,EAAgC,4EACxCt5lB,KAAKs5lB,yBAA2BA,EAChCt5lB,KAAK4wI,OAAQ,EACb5wI,KAAKq5lB,SAAW,GAChBr5lB,KAAKu5lB,kBAAmB,EACxBv5lB,KAAKw5lB,SAAW,KAChBx5lB,KAAKmE,OAAS,EACdnE,KAAKgC,WAAQyC,EACbzE,KAAKmX,UAAO1S,EAKZ,IAAM+iQ,EAAS5kB,KACThiE,EAAQ64a,EAAU/mkB,UACnBkuJ,EAAM4mF,KACP5mF,EAAM4mF,GAAU4xV,K,oBAKxB,WACI,OAAOp5lB,KAAKw5lB,WAAax5lB,KAAKw5lB,SAAW,IAAIV,M,iBAKjD,SAAInvlB,GACA,OAAO3J,KAAKq5lB,SAAS1vlB,K,iBAMzB,SAAIqF,GACA,OAAOhP,KAAKq5lB,SAAS5vlB,IAAIuF,K,oBAM7B,SAAOA,GACH,OAAOhP,KAAKq5lB,SAASlklB,OAAOnG,K,kBAMhC,SAAKA,GACD,OAAOhP,KAAKq5lB,SAASh0lB,KAAK2J,K,oBAM9B,SAAOA,EAAIs2R,GACP,OAAOtlS,KAAKq5lB,SAAS5jlB,OAAOzG,EAAIs2R,K,qBAMpC,SAAQt2R,GACJhP,KAAKq5lB,SAAShmlB,QAAQrE,K,kBAM1B,SAAKA,GACD,OAAOhP,KAAKq5lB,SAASjxlB,KAAK4G,K,qBAK9B,WACI,OAAOhP,KAAKq5lB,SAAS7vlB,U,sBAEzB,WACI,OAAOxJ,KAAKq5lB,SAASpnkB,a,mBAczB,SAAMynkB,EAAaC,GAGf,IAAM1gX,EAAOj5O,KACbi5O,EAAKroG,OAAQ,EACb,IAAMgpd,EAAgBtyV,GAAQoyV,IAC1B15lB,KAAKu5lB,kBA39qBjB,SAAqBx9kB,EAAGC,EAAG29kB,GACvB,GAAI59kB,EAAE5X,SAAW6X,EAAE7X,OACf,OAAO,EACX,IAAK,IAAI0D,EAAI,EAAGA,EAAIkU,EAAE5X,OAAQ0D,IAAK,CAC/B,IAAIoU,EAASF,EAAElU,GACXqU,EAASF,EAAEnU,GAKf,GAJI8xlB,IACA19kB,EAAS09kB,EAAiB19kB,GAC1BC,EAASy9kB,EAAiBz9kB,IAE1BA,IAAWD,EACX,OAAO,EAGf,OAAO,EA68qB0ByhM,CAAYu7B,EAAKogX,SAAUO,EAAeD,MACnE1gX,EAAKogX,SAAWO,EAChB3gX,EAAK90O,OAASy1lB,EAAcz1lB,OAC5B80O,EAAK9hO,KAAOyilB,EAAc55lB,KAAKmE,OAAS,GACxC80O,EAAKj3O,MAAQ43lB,EAAc,M,6BAMnC,YACQ55lB,KAAKw5lB,WAAax5lB,KAAKu5lB,kBAAqBv5lB,KAAKs5lB,0BACjDt5lB,KAAKw5lB,SAASt3kB,KAAKliB,Q,sBAG3B,WACIA,KAAK4wI,OAAQ,I,qBAGjB,WACI5wI,KAAKiF,QAAQnB,WACb9D,KAAKiF,QAAQ2Q,kB,GAkCf,G,WACF,WAAYiklB,GAAS,oBACjB75lB,KAAK65lB,UAAYA,EACjB75lB,KAAKirC,QAAU,K,yCAEnB,WACI,OAAO,IAAI6ujB,EAAQ95lB,KAAK65lB,a,sBAE5B,WACI75lB,KAAK65lB,UAAU/4D,e,GAGjB,G,WACF,aAAwB,IAAZv0f,EAAY,uDAAF,GAAE,oBACpBvsC,KAAKusC,QAAUA,E,sDAEnB,SAAmB43gB,GACf,IAAM41C,EAAW51C,EAAM53gB,QACvB,GAAiB,OAAbwtjB,EAAmB,CAOnB,IANA,IAAMC,EAAgD,OAAzB71C,EAAMzijB,eAA0ByijB,EAAMzijB,eAAe,GAAKq4lB,EAAS51lB,OAC1F81lB,EAAe,GAKZpylB,EAAI,EAAGA,EAAImylB,EAAsBnylB,IAAK,CAC3C,IAAMqylB,EAASH,EAASI,WAAWtylB,GAEnCoylB,EAAar2lB,KADQ5D,KAAKusC,QAAQ2tjB,EAAOE,wBACVx2c,SAEnC,OAAO,IAAIy2c,EAAUJ,GAEzB,OAAO,O,wBAEX,SAAW91C,GACPnkjB,KAAKs6lB,wBAAwBn2C,K,wBAEjC,SAAWA,GACPnkjB,KAAKs6lB,wBAAwBn2C,K,qCAEjC,SAAwBA,GACpB,IAAK,IAAIt8iB,EAAI,EAAGA,EAAI7H,KAAKusC,QAAQpoC,OAAQ0D,IACD,OAAhC0ylB,GAAUp2C,EAAOt8iB,GAAGojC,SACpBjrC,KAAKusC,QAAQ1kC,GAAGi5hB,e,GAK1B,G,YACF,WAAYzggB,EAAWsgS,GAAkB,IAAX65R,EAAW,uDAAJ,KAAI,oBACrCx6lB,KAAKqgC,UAAYA,EACjBrgC,KAAK2gU,MAAQA,EACb3gU,KAAKw6lB,KAAOA,IAGd,G,WACF,aAAwB,IAAZjujB,EAAY,uDAAF,GAAE,oBACpBvsC,KAAKusC,QAAUA,E,gDAEnB,SAAa43gB,EAAO+B,GAGhB,IAAK,IAAIr+iB,EAAI,EAAGA,EAAI7H,KAAKusC,QAAQpoC,OAAQ0D,IACrC7H,KAAKusC,QAAQ1kC,GAAGqukB,aAAa/xB,EAAO+B,K,wBAG5C,SAAWA,GACP,IAAK,IAAIr+iB,EAAI,EAAGA,EAAI7H,KAAKusC,QAAQpoC,OAAQ0D,IACrC7H,KAAKusC,QAAQ1kC,GAAGwukB,WAAWnwB,K,2BAGnC,SAAcA,GAEV,IADA,IAAIu0C,EAAwB,KACnB5ylB,EAAI,EAAGA,EAAI7H,KAAKmE,OAAQ0D,IAAK,CAClC,IAAM6ylB,EAA4C,OAA1BD,EAAiCA,EAAsBt2lB,OAAS,EAClFw2lB,EAAc36lB,KAAKm6lB,WAAWtylB,GAAGkhkB,cAAc7iB,EAAOw0C,GACxDC,IACAA,EAAYP,uBAAyBvylB,EACP,OAA1B4ylB,EACAA,EAAsB72lB,KAAK+2lB,GAG3BF,EAAwB,CAACE,IAIrC,OAAiC,OAA1BF,EAAiC,IAAIG,EAAUH,GAAyB,O,sBAEnF,SAASt2C,EAAO+B,GAGZ,IAAK,IAAIr+iB,EAAI,EAAGA,EAAI7H,KAAKusC,QAAQpoC,OAAQ0D,IACrC7H,KAAKusC,QAAQ1kC,GAAGvH,SAAS6jjB,EAAO+B,K,wBAGxC,SAAWv8iB,GAEP,OAAO3J,KAAKusC,QAAQ5iC,K,kBAExB,WACI,OAAO3J,KAAKusC,QAAQpoC,S,mBAExB,SAAM02lB,GACF76lB,KAAKusC,QAAQ3oC,KAAKi3lB,O,GAGpB,G,WACF,WAAYtwd,GAAwB,IAAdu9a,EAAc,wDAAD,EAAC,oBAChC9njB,KAAKuqI,SAAWA,EAChBvqI,KAAKirC,QAAU,KACfjrC,KAAKo6lB,wBAA0B,EAC/Bp6lB,KAAK86lB,mBAAoB,EAMzB96lB,KAAK+6lB,oBAAqB,EAC1B/6lB,KAAKg7lB,sBAAwBlzC,E,gDAEjC,SAAa3D,EAAO+B,GACZlmjB,KAAKi7lB,iBAAiB/0C,IACtBlmjB,KAAKk7lB,WAAW/2C,EAAO+B,K,wBAG/B,SAAWA,GACHlmjB,KAAKg7lB,wBAA0B90C,EAAMv8iB,QACrC3J,KAAK+6lB,oBAAqB,K,sBAGlC,SAAS52C,EAAO+B,GACZlmjB,KAAKk2kB,aAAa/xB,EAAO+B,K,2BAE7B,SAAcA,EAAOw0C,GACjB,OAAI16lB,KAAKi7lB,iBAAiB/0C,IACtBlmjB,KAAK86lB,mBAAoB,EAGzB96lB,KAAKm7lB,UAAUj1C,EAAMv8iB,MAAO+wlB,GACrB,IAAIU,EAAQp7lB,KAAKuqI,WAErB,O,8BAEX,SAAiB27a,GACb,GAAIlmjB,KAAK+6lB,oBAC2C,IAAzB,EAAtB/6lB,KAAKuqI,SAASo2L,OAAsD,CAarE,IAZA,IAAM06R,EAAqBr7lB,KAAKg7lB,sBAC5Bp0jB,EAASs/gB,EAAMt/gB,OAWD,OAAXA,GAAkC,EAAdA,EAAOlmC,MAC9BkmC,EAAOj9B,QAAU0xlB,GACjBz0jB,EAASA,EAAOA,OAEpB,OAAOy0jB,KAAmC,OAAXz0jB,EAAkBA,EAAOj9B,OAAS,GAErE,OAAO3J,KAAK+6lB,qB,wBAEhB,SAAW52C,EAAO+B,GACd,IAAM7lhB,EAAYrgC,KAAKuqI,SAASlqG,UAChC,GAAI91B,MAAMyL,QAAQqqB,GACd,IAAK,IAAIx4B,EAAI,EAAGA,EAAIw4B,EAAUl8B,OAAQ0D,IAAK,CACvC,IAAM1G,EAAOk/B,EAAUx4B,GACvB7H,KAAKs7lB,yBAAyBn3C,EAAO+B,EAAOq1C,GAAyBr1C,EAAO/kjB,IAE5EnB,KAAKs7lB,yBAAyBn3C,EAAO+B,EAAO+L,GAA0B/L,EAAO/B,EAAOhjjB,GAAM,GAAO,SAIjGk/B,IAAc,GACG,EAAb6lhB,EAAMxljB,MACNV,KAAKs7lB,yBAAyBn3C,EAAO+B,GAAQ,GAIjDlmjB,KAAKs7lB,yBAAyBn3C,EAAO+B,EAAO+L,GAA0B/L,EAAO/B,EAAO9jhB,GAAW,GAAO,M,sCAIlH,SAAyB8jhB,EAAO+B,EAAOs1C,GACnC,GAAqB,OAAjBA,EAAuB,CACvB,IAAMhB,EAAOx6lB,KAAKuqI,SAASiwd,KAC3B,GAAa,OAATA,EACA,GAAIA,IAAS,IAAcA,IAAS,IAChCA,IAAS,IAA6B,EAAbt0C,EAAMxljB,KAC/BV,KAAKm7lB,SAASj1C,EAAMv8iB,OAAQ,OAE3B,CACD,IAAM8xlB,EAAyBxpC,GAA0B/L,EAAO/B,EAAOq2C,GAAM,GAAO,GACrD,OAA3BiB,GACAz7lB,KAAKm7lB,SAASj1C,EAAMv8iB,MAAO8xlB,QAKnCz7lB,KAAKm7lB,SAASj1C,EAAMv8iB,MAAO6xlB,M,sBAIvC,SAASnkB,EAAUqkB,GACM,OAAjB17lB,KAAKirC,QACLjrC,KAAKirC,QAAU,CAACosiB,EAAUqkB,GAG1B17lB,KAAKirC,QAAQrnC,KAAKyzkB,EAAUqkB,O,GAYxC,SAASH,GAAyBr1C,EAAO5xgB,GACrC,IAAM8yhB,EAAalhB,EAAMkhB,WACzB,GAAmB,OAAfA,EACA,IAAK,IAAIv/jB,EAAI,EAAGA,EAAIu/jB,EAAWjjkB,OAAQ0D,GAAK,EACxC,GAAIu/jB,EAAWv/jB,KAAOysC,EAClB,OAAO8yhB,EAAWv/jB,EAAI,GAIlC,OAAO,KAWX,SAAS8zlB,GAAoBj0C,EAAOxB,EAAO01C,EAAapB,GACpD,OAAqB,IAAjBoB,EAVR,SAAiC11C,EAAOiG,GACpC,OAAI,GAAAjG,EAAMxljB,KACCirlB,GAAiBzlC,EAAOiG,GAEb,EAAbjG,EAAMxljB,KACJ4xlB,GAAkBpsC,EAAOiG,GAE7B,KAKI0vC,CAAwB31C,EAAOwB,IAEhB,IAAjBk0C,EASb,SAA4Bl0C,EAAOxB,EAAOs0C,GACtC,OAAIA,IAAS,GACF7O,GAAiBzlC,EAAOwB,GAE1B8yC,IAAS,GACPlI,GAAkBpsC,EAAOwB,GAE3B8yC,IAAS,GAEP3H,GAAmB3sC,EAAOwB,QAFhC,EAdMo0C,CAAmBp0C,EAAOxB,EAAOs0C,GAIjCtoC,GAAkBxK,EAAOA,EAvrxB1B,GAurxBwCk0C,EAAa11C,GAwBnE,SAAS61C,GAAuB53C,EAAOuD,EAAOwyC,EAAQ35a,GAClD,IAAMy7a,EAASt0C,EAAMuY,IAAS1zhB,QAAQg0I,GACtC,GAAuB,OAAnBy7a,EAAO/wjB,QAAkB,CAIzB,IAHA,IAAM8hiB,EAAY5oB,EAAMr0iB,KAClBmslB,EAAgB/B,EAAOjvjB,QACvBrO,EAAS,GACN/0B,EAAI,EAAGA,EAAIo0lB,EAAc93lB,OAAQ0D,GAAK,EAAG,CAC9C,IAAMq0lB,EAAiBD,EAAcp0lB,GAKjC+0B,EAAOh5B,KAJPs4lB,EAAiB,EAIL,KAKAP,GAAoBj0C,EADlBqlB,EAAUmvB,GACsBD,EAAcp0lB,EAAI,GAAIqylB,EAAO3vd,SAASiwd,OAG5FwB,EAAO/wjB,QAAUrO,EAErB,OAAOo/jB,EAAO/wjB,QAMlB,SAASkxjB,GAAoBh4C,EAAOuD,EAAOnnY,EAAY3jJ,GACnD,IAAMs9jB,EAAS/1C,EAAM53gB,QAAQ4tjB,WAAW55a,GAClC07a,EAAgB/B,EAAOjvjB,QAC7B,GAAsB,OAAlBgxjB,EAEA,IADA,IAAMG,EAAeL,GAAuB53C,EAAOuD,EAAOwyC,EAAQ35a,GACzD14K,EAAI,EAAGA,EAAIo0lB,EAAc93lB,OAAQ0D,GAAK,EAAG,CAC9C,IAAMwvkB,EAAW4kB,EAAcp0lB,GAC/B,GAAIwvkB,EAAW,EACXz6iB,EAAOh5B,KAAKw4lB,EAAav0lB,EAAI,QAE5B,CAKD,IAJA,IAAM6ylB,EAAkBuB,EAAcp0lB,EAAI,GACpCg4jB,EAAwBnY,GAAO2vB,GAG5B,EAAIvxB,GAAyB,EAAI+Z,EAAsB17jB,OAAQ,IAAK,CACzE,IAAM2kkB,EAAgBjJ,EAAsB,GACxCiJ,EA3uxBO,MA2uxBmCA,EA1vxBnD,IA2vxBSqzB,GAAoBrzB,EA7vxB9B,GA6vxBoDA,EAAe4xB,EAAiB99jB,GAKlF,GAA2C,OAAvCijiB,EAxrxBA,GA0rxBA,IADA,IAAMw8B,EAAiBx8B,EAzrxBvB,GA0rxBS,EAAI,EAAG,EAAIw8B,EAAel4lB,OAAQ,IAAK,CAC5C,IAAM,EAAgBk4lB,EAAe,GACrCF,GAAoB,EAtwxB9B,GAswxBoD,EAAezB,EAAiB99jB,KAM9F,OAAOA,EAWX,SAAS0/jB,GAAezC,GACpB,IAAMnyC,EAAQsB,KACR7E,EAAQ8E,KACR1oY,EAAaoqY,KACnBC,GAAqBrqY,EAAa,GAClC,IAAM25a,EAASK,GAAUp2C,EAAO5jY,GAChC,GAAIs5a,EAAUjpd,OACTs3a,GAAeR,MACoC,IAAtB,EAAxBwyC,EAAO3vd,SAASo2L,QAAkD,CACxE,GAAuB,OAAnBu5R,EAAOjvjB,QACP4ujB,EAAU78d,MAAM,QAEf,CACD,IAAMpgG,EAASs9jB,EAAOY,kBAClBqB,GAAoBh4C,EAAOuD,EAAOnnY,EAAY,IAC9Cw7a,GAAuB53C,EAAOuD,EAAOwyC,EAAQ35a,GACjDs5a,EAAU78d,MAAMpgG,EAAQkvjB,IACxB+N,EAAUp1b,kBAEd,OAAO,EAEX,OAAO,EAWX,SAAS83b,GAAYl8jB,EAAWsgS,EAAO65R,GAEnC,IAAMr2C,EAAQ8E,KACV9E,EAAM8L,kBACNusC,GAAar4C,EAAO,IAAI,GAAgB9jhB,EAAWsgS,EAAO65R,IAAQ,GAC/B,IAAtB,EAAR75R,KACDwjP,EAAMmkB,mBAAoB,IAGlCm0B,GAAat4C,EAAO6E,KAAYroP,GAcpC,SAAS+7R,GAAe3pC,EAAgB1yhB,EAAWsgS,EAAO65R,GAEtD,IAAMr2C,EAAQ8E,KACd,GAAI9E,EAAM8L,gBAAiB,CACvB,IAAM/J,EAAQmD,KACdmzC,GAAar4C,EAAO,IAAI,GAAgB9jhB,EAAWsgS,EAAO65R,GAAOt0C,EAAMv8iB,OAkC/E,SAA2Cw6iB,EAAO4O,GAC9C,IAAM4pC,EAAsBx4C,EAAMzijB,iBAAmByijB,EAAMzijB,eAAiB,IAExEqxjB,KAD4B4pC,EAAoBx4lB,OAASw4lB,EAAoBA,EAAoBx4lB,OAAS,IAAM,IAEhHw4lB,EAAoB/4lB,KAAKugjB,EAAM53gB,QAAQpoC,OAAS,EAAG4ujB,GArCnD6pC,CAAkCz4C,EAAO4O,GACN,IAAtB,EAARpyP,KACDwjP,EAAMkkB,sBAAuB,GAGrCo0B,GAAat4C,EAAO6E,KAAYroP,GAOpC,SAASk8R,KACL,OAEuBn1C,EAFEsB,KAEKzoY,EAFOoqY,KAM9BjD,EAAMuY,IAAS1zhB,QAAQg0I,GAAYs5a,UAJ9C,IAA2BnyC,EAAOnnY,EAMlC,SAASk8a,GAAat4C,EAAOuD,EAAO/mP,GAChC,IAAMk5R,EAAY,IAAI,GAAwD,IAArC,EAARl5R,IACjCuqQ,GAAwB/mB,EAAOuD,EAAOmyC,EAAWA,EAAU34kB,SACpC,OAAnBwmiB,EAAMuY,MACNvY,EAAMuY,IAAW,IAAI,IACzBvY,EAAMuY,IAAS1zhB,QAAQ3oC,KAAK,IAAI,GAAQi2lB,IAE5C,SAAS2C,GAAar4C,EAAO55a,EAAUu9a,GACb,OAAlB3D,EAAM53gB,UACN43gB,EAAM53gB,QAAU,IAAI,IACxB43gB,EAAM53gB,QAAQuwjB,MAAM,IAAI,GAAQvyd,EAAUu9a,IAS9C,SAASyyC,GAAUp2C,EAAOx6iB,GAEtB,OAAOw6iB,EAAM53gB,QAAQ4tjB,WAAWxwlB,GAgBpC,SAASozlB,GAAuB72C,EAAOwB,GACnC,OAAO4qC,GAAkBpsC,EAAOwB,GAOpC,SAASs1C,KAAyD,IAA3Br8R,EAA2B,uDAAnB+gP,EAAY2P,QACjD9vjB,EAAQswlB,IAAwB,GACtC,GAAa,MAATtwlB,GAAmBo/T,EAAQ+gP,EAAY5kK,SAIvC,OAAOv7Y,EAHPi/iB,EAA2B,qBAsBnC,IAs/BMy8C,GAAQjoC,GAAkB,QALrB,SAACkoC,GAAD,MAA0B,CAAEA,yBAqKjCC,GAAkB,IAAI,GAAe,2B,kBAMrCC,E,8BACF,WAAYC,GAAQ,+BAChBr9lB,KAAKq9lB,SAAWA,EAChBr9lB,KAAKwE,QAAUkwH,GACf10H,KAAKy1H,OAASf,GACd10H,KAAKsd,aAAc,EACnBtd,KAAK40B,MAAO,EACZ50B,KAAKs9lB,YAAc,IAAI/4lB,QAAQ,SAAC+zB,EAAKilkB,GACjC,EAAK/4lB,QAAU8zB,EACf,EAAKm9F,OAAS8ne,K,8BAItB,WAAe,WACX,IAAIv9lB,KAAKsd,YAAT,CAGA,IAAMkglB,EAAoB,GACpB15lB,EAAW,WACb,EAAK8wB,MAAO,EACZ,EAAKpwB,WAET,GAAIxE,KAAKq9lB,SACL,IAAK,IAAIx1lB,EAAI,EAAGA,EAAI7H,KAAKq9lB,SAASl5lB,OAAQ0D,IAAK,CAC3C,IAAM41lB,EAAaz9lB,KAAKq9lB,SAASx1lB,KAC7Bg2K,GAAU4/a,IACVD,EAAkB55lB,KAAK65lB,GAInCl5lB,QAAQ+wB,IAAIkokB,GACPn/kB,KAAK,WACNva,MAEC45lB,MAAM,SAAAzpkB,GACP,EAAKwhG,OAAOxhG,KAEiB,IAA7BupkB,EAAkBr5lB,QAClBL,IAEJ9D,KAAKsd,aAAc,O,UAG3B8/kB,EAAsB78lB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK48lB,GAAuBxmC,GAASumC,GAAiB,KAC3IC,EAAsBx4lB,WAAQk8iB,EAAmB,CAAEj8iB,MAAOu4lB,EAAuBt4lB,QAASs4lB,EAAsB78lB,Y,KA+B1Go9lB,GAAS,IAAI,GAAe,SAQ5BC,GAAyB,CAC3Br7lB,QAASo7lB,GACTv0kB,WATJ,WACI,gBAAUy0kB,MAAV,OAA0BA,MAA1B,OAA0CA,OAS1C10kB,KAAM,IAEV,SAAS00kB,KACL,OAAOxujB,OAAOo3O,aAAa,GAAKloQ,KAAKs7B,MAAsB,GAAhBt7B,KAAKqqH,WAMpD,IAAMk1d,GAAuB,IAAI,GAAe,wBAK1CC,GAAc,IAAI,GAAe,eAWjCC,GAAyB,IAAI,GAAe,wB,kBAe5CC,E,kFACF,SAAIjkkB,GAEA+Q,QAAQ0wC,IAAIzhD,K,kBAGhB,SAAKA,GAED+Q,QAAQ24B,KAAK1pC,O,UAGrBikkB,EAAQ19lB,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKy9lB,IAC9DA,EAAQr5lB,WAAQk8iB,EAAmB,CAAEj8iB,MAAOo5lB,EAASn5lB,QAASm5lB,EAAQ19lB,Y,KAkChE29lB,GAAc,IAAI,GAAe,YAuCjCC,GAAwB,IAAI,GAAe,uBAqG3C,G,YACF,WAAYC,EAAiBC,GAAkB,oBAC3Cr+lB,KAAKo+lB,gBAAkBA,EACvBp+lB,KAAKq+lB,mBAAqBA,IAO5BC,GAAwC,SAAU1H,GACpD,OAAO,IAAI,GAAkBA,IAE3B2H,GAA6BD,GAK7BE,GAHyC,SAAU5H,GACrD,OAAOrylB,QAAQC,QAAQ85lB,GAAsC1H,KAI3D6H,GAAwD,SAAU7H,GACpE,IAAMwH,EAAkBE,GAAsC1H,GAExDyH,EAAqBzgC,GADTzY,GAAeyxC,GACkB7xC,cAC9CtviB,OAAO,SAAC21kB,EAAWsT,GACpB,IAAMlK,EAAe/vC,GAAgBi6C,GAErC,OADAlK,GAAgBpJ,EAAUxnlB,KAAK,IAAI,GAAmB4wlB,IAC/CpJ,GACR,IACH,OAAO,IAAI,GAA6BgT,EAAiBC,IAEvDM,GAA6CF,GAK7CG,GAHyD,SAAUhI,GACrE,OAAOrylB,QAAQC,QAAQi6lB,GAAsD7H,K,kBAc3EiI,E,8BACF,iCAKI7+lB,KAAK8+lB,kBAAoBP,GAIzBv+lB,KAAK++lB,mBAAqBP,GAI1Bx+lB,KAAKg/lB,kCAAoCL,GAIzC3+lB,KAAKi/lB,mCAAqCL,I,yBAK9C,c,2BAIA,SAAcl+lB,M,yBAId,SAAYk2lB,Q,UAIhBiI,EAASt+lB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKq+lB,IAChEA,EAASj6lB,WAAQk8iB,EAAmB,CAAEj8iB,MAAOg6lB,EAAU/5lB,QAAS+5lB,EAASt+lB,Y,KAyBnE2zB,GAAW,kBAAM3vB,QAAQC,QAAQ,GAAtB,GACjB,SAAS6zS,GAAkBrpS,GACH,oBAATkwlB,KAEPhrkB,GAAQ7V,KAAK,WACTrP,GAAMA,EAAG2oC,MAAM,KAAM,QAIzBunjB,KAAK9ihB,QAAQi8N,kBAAkB,oBAAqBrpS,G,IA8GtD,G,WACF,cAAkI,QAApHmwlB,4BAAoH,aAAtFC,0CAAsF,aAA1CC,wCAA0C,SA2B9H,GA3B8H,oBAC9Hr/lB,KAAKs/lB,sBAAuB,EAC5Bt/lB,KAAKu/lB,sBAAuB,EAI5Bv/lB,KAAKqE,UAAW,EAIhBrE,KAAKw/lB,WAAa,IAAI1G,IAAa,GAMnC94lB,KAAKm2S,iBAAmB,IAAI2iT,IAAa,GAMzC94lB,KAAK0E,SAAW,IAAIo0lB,IAAa,GAIjC94lB,KAAKy/lB,QAAU,IAAI3G,IAAa,GACb,oBAARoG,KACP,MAAM,IAAI7qkB,MAAJ,kDAEV6qkB,KAAKQ,oBACL,IAyIkCv1e,EAChCw1e,EA1II1mX,EAAOj5O,KACbi5O,EAAK2mX,SAAW,EAChB3mX,EAAK4mX,OAAS5mX,EAAK6mX,OAASZ,KAAK9ihB,QAC7B8ihB,KAAI,uBACJjmX,EAAK6mX,OAAS7mX,EAAK6mX,OAAO52S,KAAK,IAAIg2S,KAAI,uBAEvCC,GAAwBD,KAAI,yBAC5BjmX,EAAK6mX,OAAS7mX,EAAK6mX,OAAO52S,KAAKg2S,KAAI,yBAIvCjmX,EAAKmmX,oCACAC,GAAoCD,EACzCnmX,EAAKomX,iCAAmCA,EACxCpmX,EAAK8mX,6BAA+B,EACpC9mX,EAAK+mX,4BAlJb,WACI,IAAIA,EAA8Bv9C,GAAO,sBACrCw9C,EAA6Bx9C,GAAO,qBACxC,GAAoB,oBAATy8C,MAAwBc,GAA+BC,EAA4B,CAG1F,IAAMC,EAAiCF,EAA4Bd,KAAKiB,WAAW,qBAC/ED,IACAF,EAA8BE,GAElC,IAAME,EAAgCH,EAA2Bf,KAAKiB,WAAW,qBAC7EC,IACAH,EAA6BG,GAGrC,MAAO,CAAEJ,8BAA6BC,8BAmICI,GAAiCL,4BA2HlEL,EAAwC,YA1BlD,SAAuCx1e,IACO,IAAtCA,EAAK41e,8BAGT51e,EAAK41e,4BAA8B51e,EAAK61e,4BAA4B9qkB,KAAKuthB,GAAS,WAUzEt4b,EAAKm2e,mBACNn2e,EAAKm2e,iBAAmBpB,KAAK9/gB,KAAKmhhB,kBAAkB,mBAAoB,WACpEp2e,EAAK41e,6BAA+B,EACpCS,GAAsBr2e,GACtBs2e,GAAYt2e,SACb1lH,EAAW,aAAW,eAE7B0lH,EAAKm2e,iBAAiBhzV,WAE1BkzV,GAAsBr2e,IAIlBu2e,CAA8Bv2e,KAFIA,EAzHD8uH,GA6HhC6mX,OAAS31e,EAAK21e,OAAO52S,KAAK,CAC3B/nT,KAAM,UACNkvQ,WAAY,CAAE,eAAiB,GAC/BswV,aAAc,SAACzyZ,EAAU9xH,EAAS5vD,EAAQ9oB,EAAMk9lB,EAAWC,GACvD,IAEI,OADAttO,GAAQppQ,GACD+jF,EAAS4yZ,WAAWt0kB,EAAQ9oB,EAAMk9lB,EAAWC,GAFxD,SAKS12e,EAAKi1e,oCAAoD,cAAd17lB,EAAKhD,MACjDypH,EAAKk1e,mCACLM,IAEJ/qX,GAAQzqH,KAGhB42e,SAAU,SAAC7yZ,EAAU9xH,EAAS5vD,EAAQyG,EAAU2tkB,EAAWC,EAAWt6kB,GAClE,IAEI,OADAgtW,GAAQppQ,GACD+jF,EAASo/D,OAAO9gP,EAAQyG,EAAU2tkB,EAAWC,EAAWt6kB,GAFnE,QAKQ4jG,EAAKk1e,kCACLM,IAEJ/qX,GAAQzqH,KAGhB62e,UAAW,SAAC9yZ,EAAU9xH,EAAS5vD,EAAQy0kB,GACnC/yZ,EAASgzZ,QAAQ10kB,EAAQy0kB,GACrB7khB,IAAY5vD,IAGe,aAAvBy0kB,EAAalxlB,QACbo6G,EAAKg3e,sBAAwBF,EAAaG,UAC1CZ,GAAsBr2e,GACtBs2e,GAAYt2e,IAEgB,aAAvB82e,EAAalxlB,SAClBo6G,EAAKm1e,qBAAuB2B,EAAaI,aAIrDC,cAAe,SAACpzZ,EAAU9xH,EAAS5vD,EAAQwI,GAGvC,OAFAk5K,EAASxiC,YAAYl/I,EAAQwI,GAC7Bm1F,EAAK9+F,kBAAkB,kBAAM8+F,EAAKs1e,QAAQv9kB,KAAK8S,MACxC,K,uCAhJf,SAAIhmB,EAAI4xlB,EAAWC,GACf,OAAO7gmB,KAAK8/lB,OAAOxzjB,IAAIt9B,EAAI4xlB,EAAWC,K,qBAc1C,SAAQ7xlB,EAAI4xlB,EAAWC,EAAW1/lB,GAC9B,IAAMgpH,EAAOnqH,KAAK8/lB,OACZp8lB,EAAOymH,EAAKo2e,kBAAkB,gBAAkBp/lB,EAAM6N,EAAIuylB,GAAe7se,GAAMA,IACrF,IACI,OAAOvK,EAAKn8B,QAAQtqF,EAAMk9lB,EAAWC,GADzC,QAII12e,EAAKouW,WAAW70d,M,wBAOxB,SAAWsL,EAAI4xlB,EAAWC,GACtB,OAAO7gmB,KAAK8/lB,OAAO0B,WAAWxylB,EAAI4xlB,EAAWC,K,+BAejD,SAAkB7xlB,GACd,OAAOhP,KAAK6/lB,OAAOvzjB,IAAIt9B,M,8BAvE3B,WACI,OAA6C,IAAtCkwlB,KAAK9ihB,QAAQlqE,IAAI,mB,iCAE5B,WACI,IAAKuvlB,EAAOC,kBACR,MAAM,IAAIrtkB,MAAM,oD,oCAGxB,WACI,GAAIotkB,EAAOC,kBACP,MAAM,IAAIrtkB,MAAM,sD,GAgEtBktkB,GAAgB,GACtB,SAASd,GAAYt2e,GACjB,GAAqB,GAAjBA,EAAKy1e,WAAkBz1e,EAAKo1e,uBAAyBp1e,EAAK9lH,SAC1D,IACI8lH,EAAKy1e,WACLz1e,EAAKgsL,iBAAiBj0R,KAAK,MAF/B,QAMI,GADAioG,EAAKy1e,YACAz1e,EAAKo1e,qBACN,IACIp1e,EAAK9+F,kBAAkB,kBAAM8+F,EAAKzlH,SAASwd,KAAK,QADpD,QAIIioG,EAAK9lH,UAAW,IAqFpC,SAASm8lB,GAAsBr2e,GAIvBA,EAAKo1e,wBAHLp1e,EAAKg3e,wBACHh3e,EAAKi1e,oCAAsCj1e,EAAKk1e,oCACR,IAAtCl1e,EAAK41e,6BAOjB,SAASxsO,GAAQppQ,GACbA,EAAKy1e,WACDz1e,EAAK9lH,WACL8lH,EAAK9lH,UAAW,EAChB8lH,EAAKq1e,WAAWt9kB,KAAK,OAG7B,SAAS0yN,GAAQzqH,GACbA,EAAKy1e,WACLa,GAAYt2e,G,IAMV,G,8BACF,iCACInqH,KAAKu/lB,sBAAuB,EAC5Bv/lB,KAAKs/lB,sBAAuB,EAC5Bt/lB,KAAKqE,UAAW,EAChBrE,KAAKw/lB,WAAa,IAAI1G,GACtB94lB,KAAKm2S,iBAAmB,IAAI2iT,GAC5B94lB,KAAK0E,SAAW,IAAIo0lB,GACpB94lB,KAAKy/lB,QAAU,IAAI3G,I,kBAEvB,SAAI9plB,EAAI4xlB,EAAWC,GACf,OAAO7xlB,EAAG2oC,MAAMipjB,EAAWC,K,wBAE/B,SAAW7xlB,EAAI4xlB,EAAWC,GACtB,OAAO7xlB,EAAG2oC,MAAMipjB,EAAWC,K,+BAE/B,SAAkB7xlB,GACd,OAAOA,M,qBAEX,SAAQA,EAAI4xlB,EAAWC,EAAW1/lB,GAC9B,OAAO6N,EAAG2oC,MAAMipjB,EAAWC,O,qBAiB7Bc,E,8BACF,WAAYr+lB,GAAO,+BACftD,KAAKsD,QAAUA,EACftD,KAAK4hmB,cAAgB,EACrB5hmB,KAAK6hmB,eAAgB,EAOrB7hmB,KAAK8hmB,UAAW,EAChB9hmB,KAAK+hmB,WAAa,GAClB/hmB,KAAKgimB,iBAAmB,KACxBhimB,KAAKiimB,sBACL3+lB,EAAQgpC,IAAI,WACR,EAAK01jB,iBACc,oBAAR9C,KAAsB,KAAOA,KAAK9ihB,QAAQlqE,IAAI,uB,kCAGjE,WAAmB,WACflS,KAAKsD,QAAQk8lB,WAAWt7lB,UAAU,CAC9BL,KAAM,WACF,EAAKi+lB,UAAW,EAChB,EAAKD,eAAgB,KAG7B7hmB,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,EAAK/nB,QAAQoB,SAASR,UAAU,CAC5BL,KAAM,WACF,GAAOq+lB,yBACP7pT,GAAkB,WACd,EAAKwpT,eAAgB,EACrB,EAAKM,gC,yCAUzB,WAGI,OAFAnimB,KAAK4hmB,eAAiB,EACtB5hmB,KAAK8hmB,UAAW,EACT9hmB,KAAK4hmB,gB,yCAMhB,WAEI,GADA5hmB,KAAK4hmB,eAAiB,EAClB5hmB,KAAK4hmB,cAAgB,EACrB,MAAM,IAAIvtkB,MAAM,qCAGpB,OADAr0B,KAAKmimB,uBACEnimB,KAAK4hmB,gB,sBAKhB,WACI,OAAO5hmB,KAAK6hmB,eAAwC,IAAvB7hmB,KAAK4hmB,gBAAwB5hmB,KAAKsD,QAAQg8lB,uB,kCAE3E,WAAoB,WAChB,GAAIt/lB,KAAKqE,WAELg0S,GAAkB,WACd,KAAkC,IAA3B,EAAK0pT,WAAW59lB,QAAc,CACjC,IAAIg1I,EAAK,EAAK4od,WAAW9ikB,MACzBiF,aAAai1G,EAAGhsD,WAChBgsD,EAAGipd,OAAO,EAAKN,UAEnB,EAAKA,UAAW,QAGnB,CAED,IAAI5me,EAAUl7H,KAAKqimB,kBACnBrimB,KAAK+hmB,WAAa/hmB,KAAK+hmB,WAAW5slB,OAAO,SAACgkI,GACtC,OAAIA,EAAGmpd,WAAYnpd,EAAGmpd,SAASpne,KAC3Bh3F,aAAai1G,EAAGhsD,YACT,KAIfntF,KAAK8hmB,UAAW,K,6BAGxB,WACI,OAAK9hmB,KAAKgimB,iBAIHhimB,KAAKgimB,iBAAiBO,WAAW94lB,IAAI,SAACjJ,GACzC,MAAO,CACH+lB,OAAQ/lB,EAAE+lB,OAGVi8kB,iBAAkBhimB,EAAEgimB,iBACpB1ylB,KAAMtP,EAAEsP,QATL,K,yBAaf,SAAYqpI,EAAIiV,EAASk0c,GAAQ,WACzBn1gB,GAAa,EACbihE,GAAWA,EAAU,IACrBjhE,EAAYvoD,WAAW,WACnB,EAAKm9jB,WAAa,EAAKA,WAAW5slB,OAAO,SAACgkI,GAAD,OAAQA,EAAGhsD,YAAcA,IAClEgsD,EAAG,EAAK2od,SAAU,EAAKO,oBACxBj0c,IAEPpuJ,KAAK+hmB,WAAWn+lB,KAAK,CAAEw+lB,OAAQjpd,EAAIhsD,UAAWA,EAAWm1gB,SAAUA,M,wBAcvE,SAAWF,EAAQh0c,EAASk0c,GACxB,GAAIA,IAAatimB,KAAKgimB,iBAClB,MAAM,IAAI3tkB,MAAM,8HAIpBr0B,KAAKyimB,YAAYL,EAAQh0c,EAASk0c,GAClCtimB,KAAKmimB,yB,oCAMT,WACI,OAAOnimB,KAAK4hmB,gB,2BAQhB,SAAcc,EAAO7rkB,EAAU8rkB,GAE3B,MAAO,O,UAGfhB,EAAYphmB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKmhmB,GAAa/qC,GAAS,MAC5F+qC,EAAY/8lB,WAAQk8iB,EAAmB,CAAEj8iB,MAAO88lB,EAAa78lB,QAAS68lB,EAAYphmB,Y,uBAW5EqimB,E,8BACF,iCAEI5imB,KAAK6imB,cAAgB,IAAIp1lB,IACzBq1lB,GAAmBC,YAAY/imB,O,kCAOnC,SAAoB6E,EAAOm+lB,GACvBhjmB,KAAK6imB,cAAcxulB,IAAIxP,EAAOm+lB,K,mCAMlC,SAAsBn+lB,GAClB7E,KAAK6imB,cAActwlB,OAAO1N,K,uCAK9B,WACI7E,KAAK6imB,cAAcnylB,U,4BAMvB,SAAeg0Q,GACX,OAAO1kR,KAAK6imB,cAAc3wlB,IAAIwyQ,IAAS,O,iCAK3C,WACI,OAAOn6Q,MAAMjG,KAAKtE,KAAK6imB,cAAc/ulB,Y,gCAKzC,WACI,OAAOvJ,MAAMjG,KAAKtE,KAAK6imB,cAAcpmlB,U,mCAQzC,SAAsBioQ,GAA4B,IAAtBu+U,IAAsB,yDAC9C,OAAOH,GAAmBI,sBAAsBljmB,KAAM0kR,EAAMu+U,O,UAGpEL,EAAoBrimB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKoimB,IACtFA,EAAoBh+lB,WAAQk8iB,EAAmB,CAAEj8iB,MAAO+9lB,EAAqB99lB,QAAS89lB,EAAoBrimB,Y,KAe1G,SAAS4imB,GAAqBC,GAC1BN,GAAqBM,EAEzB,IA0DIj2lB,GA1DA21lB,GAAqB,I,0FAZrB,SAAYz2B,M,mCACZ,SAAsBA,EAAU3nT,EAAMu+U,GAClC,OAAO,S,IAyBXI,IAAW,EACXC,IAAiB,EASrB,SAASC,KAEL,OADAD,IAAiB,EACVD,GAYX,SAASG,KACL,GAAIF,GACA,MAAM,IAAIjvkB,MAAM,iDAOpBgvkB,IAAW,EAWf,IAAII,GAMJ,SAA2CtklB,EAAU6I,EAAS4ukB,GAE1D,IAAM8M,EAAgB,IAAI,GAAkB9M,GAGxC,OAAOrylB,QAAQC,QAAQk/lB,IA4CzBC,GAA2B,IAAI,GAAe,sBAM9C,G,YACF,WAAYximB,EAAM0D,GAAK,oBACnB7E,KAAKmB,KAAOA,EACZnB,KAAK6E,MAAQA,IASrB,SAAS++lB,GAAezklB,GACpB,GAAIhS,KAAcA,GAAU2zJ,YACvB3zJ,GAAUgS,SAASjN,IAAIyxlB,IAA0B,GAClD,MAAM,IAAItvkB,MAAM,iFAGpBlnB,GAAYgS,EAASjN,IAAI,IACzB,IAAM2xlB,EAAQ1klB,EAASjN,IAAI4rlB,GAAsB,MAGjD,OAFI+F,GACAA,EAAMxwlB,QAAQ,SAACiyR,GAAD,OAAUA,MACrBn4R,GAaX,SAAS22lB,GAAsBC,EAAuB5imB,GAAoB,IAAdgxB,EAAc,uDAAF,GAC9DsL,EAAO,aAAH,OAAgBt8B,GACpBo4C,EAAS,IAAI,GAAe9b,GAClC,OAAO,WAAwB,IAAvBumkB,EAAuB,uDAAN,GACjBh9kB,EAAWi9kB,KACf,IAAKj9kB,GAAYA,EAAS7H,SAASjN,IAAIyxlB,IAA0B,GAC7D,GAAII,EACAA,EAAsB5xkB,EAAUnZ,OAAOgrlB,GAAgBhrlB,OAAO,CAAEzW,QAASg3C,EAAQ3gC,UAAU,SAE1F,CACD,IAAMsrlB,EAAoB/xkB,EAAUnZ,OAAOgrlB,GAAgBhrlB,OAAO,CAAEzW,QAASg3C,EAAQ3gC,UAAU,GAAQ,CACnGrW,QAASmtkB,GACT92jB,SAAU,aAEdgrlB,GAAe,GAASt+lB,OAAO,CAAE6sB,UAAW+xkB,EAAmB/imB,KAAMs8B,KAG7E,OAAO0mkB,GAAe5qjB,IAQ9B,SAAS4qjB,GAAeC,GACpB,IAAMp9kB,EAAWi9kB,KACjB,IAAKj9kB,EACD,MAAM,IAAIqN,MAAM,uBAEpB,IAAKrN,EAAS7H,SAASjN,IAAIkylB,EAAe,MACtC,MAAM,IAAI/vkB,MAAM,wFAEpB,OAAOrN,EAkBX,SAASi9kB,KACL,OAAO92lB,KAAcA,GAAU2zJ,UAAY3zJ,GAAY,K,sBAWrDk3lB,E,8BAEF,WAAYx+jB,GAAS,oBACjB7lC,KAAK6lC,UAAYA,EACjB7lC,KAAKskmB,SAAW,GAChBtkmB,KAAKukmB,kBAAoB,GACzBvkmB,KAAKwD,YAAa,G,qCAwBtB,SAAuBkgmB,EAAe17kB,GAAO,IAwH9Bw8kB,EAAc1wiB,EAxHgB,OAQnCwuE,GAgHmBxuE,EAhHc,CAAE2wiB,sBAFVz8kB,GAAWA,EAAQy8kB,wBAA0B,EAEZC,oBADnC18kB,GAAWA,EAAQ08kB,sBAAwB,GAmHvD,UAFNF,EAnHUx8kB,EAAUA,EAAQs6G,YAAS79H,GAsHvC,IAAI,IAGc,YAAjB+/lB,OAA6B//lB,EAAY+/lB,IAAiB,IAAI,GAAO,CAC3ErF,qBAAsBoE,KACtBnE,sCAAuCtriB,aAAqC,EAASA,EAAM2wiB,uBAC3FpF,oCAAqCvriB,aAAqC,EAASA,EAAM4wiB,wBAxHvFvykB,EAAY,CAAC,CAAE5vB,QAAS,GAAQqW,SAAU0pH,IAKhD,OAAOA,EAAOh2F,IAAI,WACd,IAAMq4jB,EAAiB,GAASr/lB,OAAO,CAAE6sB,UAAWA,EAAWyU,OAAQ,EAAKznB,SAAUhe,KAAMuimB,EAAc9M,WAAWz1lB,OAC/GyjmB,EAAYlB,EAAcp+lB,OAAOq/lB,GACjCE,EAAmBD,EAAUzllB,SAASjN,IAAI,GAAc,MAC9D,IAAK2ylB,EACD,MAAM,IAAIxwkB,MAAM,iEAapB,OAXAiuG,EAAOj3G,kBAAkB,WACrB,IAAM2oF,EAAesuB,EAAOm9d,QAAQv7lB,UAAU,CAC1CL,KAAM,SAACmxB,GACH6vkB,EAAiBn5b,YAAY12I,MAGrC4vkB,EAAUzre,UAAU,WAChB3tH,GAAO,EAAK84lB,SAAUM,GACtB5wf,EAAap+F,kBAyGjC,SAAsC41J,EAAclpC,EAAQrvG,GACxD,IACI,IAAM2J,IAvGQkokB,EAAaF,EAAUzllB,SAASjN,IAAI,KAC/B6ylB,kBACJD,EAAWxH,YAAYj/kB,KAAK,WAO/B,OAHIijkB,GADiBsjB,EAAUzllB,SAASjN,IAAIgslB,GAAajd,KAC7BA,IAE5B,EAAK+jB,mBAAmBJ,GACjBA,KA+FnB,OAAI/mb,GAAUjhJ,GACHA,EAAO8gkB,MAAM,SAACzpkB,GAGjB,MAFAquG,EAAOj3G,kBAAkB,kBAAMmgJ,EAAaE,YAAYz3I,KAElDA,IAGP2I,EAEX,MAAO3I,GAGH,MAFAquG,EAAOj3G,kBAAkB,kBAAMmgJ,EAAaE,YAAYz3I,KAElDA,EArH4D,IACpD6wkB,EADHG,CAA6BJ,EAAkBvie,O,6BA+B9D,SAAgBs0d,GAAgC,WAApBsO,EAAoB,uDAAF,GACpCl9kB,EAAUm9kB,GAAe,GAAID,GACnC,OAAOzB,GAAuBzjmB,EAAegoB,EAAS4ukB,GACjDv4kB,KAAK,SAAAqllB,GAAa,OAAI,EAAK0B,uBAAuB1B,EAAe17kB,O,gCAE1E,SAAmB48kB,GACf,IAAMlT,EAASkT,EAAUzllB,SAASjN,IAAI,IACtC,GAAI0ylB,EAAUrO,qBAAqBpylB,OAAS,EACxCygmB,EAAUrO,qBAAqBljlB,QAAQ,SAAA4lB,GAAC,OAAIy4jB,EAAO5sC,UAAU7rhB,SAE5D,KAAI2rkB,EAAU9wkB,SAASuxkB,cAIxB,MAAM,IAAIhxkB,MAAM,qBAAcoF,EAAUmrkB,EAAU9wkB,SAC7Coc,aADW,6IAHhB00jB,EAAU9wkB,SAASuxkB,cAAc3T,GAOrC1xlB,KAAKskmB,SAAS1gmB,KAAKghmB,K,uBAKvB,SAAU3xkB,GACNjzB,KAAKukmB,kBAAkB3gmB,KAAKqvB,K,oBAMhC,WACI,OAAOjzB,KAAK6lC,Y,qBAMhB,WACI,GAAI7lC,KAAKwD,WACL,MAAM,IAAI6wB,MAAM,4CAEpBr0B,KAAKskmB,SAAS96lB,QAAQ6J,QAAQ,SAAA+pB,GAAM,OAAIA,EAAOlc,YAC/ClhB,KAAKukmB,kBAAkBlxlB,QAAQ,SAAAqtB,GAAQ,OAAIA,MAC3C1gC,KAAKwD,YAAa,I,qBAEtB,WACI,OAAOxD,KAAKwD,e,UAGpB6gmB,EAAY9jmB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAK6jmB,GAAaztC,GAAS,MAC5FytC,EAAYz/lB,WAAQk8iB,EAAmB,CAAEj8iB,MAAOw/lB,EAAav/lB,QAASu/lB,EAAY9jmB,Y,KAuClF,SAAS4kmB,GAAep2C,EAAK9yf,GAOzB,OANI1xD,MAAMyL,QAAQimD,GACRA,EAAKxmD,OAAO0vlB,GAAgBp2C,GAG5BvyiB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIgohB,GAAM9yf,G,sBAiG9CqpiB,E,8BAEF,WAAYx7kB,EAAO+b,EAAW0/jB,EAAmBlllB,EAA2BmllB,GAAW,+BACnFxlmB,KAAK8pB,MAAQA,EACb9pB,KAAK6lC,UAAYA,EACjB7lC,KAAKulmB,kBAAoBA,EACzBvlmB,KAAKqgB,0BAA4BA,EACjCrgB,KAAKwlmB,YAAcA,EAEnBxlmB,KAAKylmB,oBAAsB,GAC3BzlmB,KAAK0lmB,OAAS,GACd1lmB,KAAK2lmB,cAAe,EACpB3lmB,KAAK4lmB,SAAU,EAKf5lmB,KAAK6lmB,eAAiB,GAItB7lmB,KAAK6zW,WAAa,GAClB7zW,KAAK8lmB,8BAAgC9lmB,KAAK8pB,MAAMqsR,iBAAiBjyS,UAAU,CACvEL,KAAM,WACF,EAAKimB,MAAMwiB,IAAI,WACX,EAAKy5jB,YAIjB,IAAMC,EAAoB,IAAIxre,EAAA,EAAW,SAACpuF,GACtC,EAAKw5jB,QAAU,EAAK97kB,MAAMzlB,WAAa,EAAKylB,MAAMw1kB,uBAC7C,EAAKx1kB,MAAMy1kB,qBAChB,EAAKz1kB,MAAMuB,kBAAkB,WACzB+gB,EAASvoC,KAAK,EAAK+hmB,SACnBx5jB,EAAStoC,eAGXO,EAAW,IAAIm2H,EAAA,EAAW,SAACpuF,GAG7B,IAAI65jB,EACJ,EAAKn8kB,MAAMuB,kBAAkB,WACzB46kB,EAAY,EAAKn8kB,MAAMplB,SAASR,UAAU,WACtC,GAAOg+lB,yBAGP7pT,GAAkB,WACT,EAAKutT,SAAY,EAAK97kB,MAAMw1kB,sBAC5B,EAAKx1kB,MAAMy1kB,uBACZ,EAAKqG,SAAU,EACfx5jB,EAASvoC,MAAK,UAK9B,IAAMqimB,EAAc,EAAKp8kB,MAAM01kB,WAAWt7lB,UAAU,WAChD,GAAOiimB,sBACH,EAAKP,UACL,EAAKA,SAAU,EACf,EAAK97kB,MAAMuB,kBAAkB,WACzB+gB,EAASvoC,MAAK,QAI1B,OAAO,WACHoimB,EAAUrwlB,cACVswlB,EAAYtwlB,iBAGpB5V,KAAKqE,SACD,OAAAgZ,EAAA,GAAQ2olB,EAAmB3hmB,EAASL,KAAK,OAAAq3H,EAAA,Q,wBAkBjD,SAAU+qe,EAAoBtR,GAAkB,IAIxCh0kB,EAJwC,OAC5C,IAAK9gB,KAAKwlmB,YAAY5wkB,KAClB,MAAM,IAAIP,MAAM,iJAIhBvT,EADAsllB,aAA8B,GACXA,EAIfpmmB,KAAKqgB,0BAA0BU,wBAAwBqllB,GAE/DpmmB,KAAK6lmB,eAAejimB,KAAKkd,EAAiB4xV,eAE1C,IAAM3zP,EAA2Bj+F,EA5e3B+zkB,qBA4e+CpwlB,EAAYzE,KAAK6lC,UAAU3zB,IAAI,IAE9Em0lB,EAAUvllB,EAAiBxb,OAAO,GAASotkB,KAAM,GADhCoiB,GAAsBh0kB,EAAiBwzB,SACayqE,GACrEn8G,EAAgByjmB,EAAQ/rkB,SAAS13B,cACjCogmB,EAAcqD,EAAQlnlB,SAASjN,IAAI,GAAa,MAChDo0lB,EAAsBtD,GAAeqD,EAAQlnlB,SAASjN,IAAI,IAkBhE,OAjBI8wlB,GAAesD,GACfA,EAAoBC,oBAAoB3jmB,EAAeogmB,GAE3DqD,EAAQlte,UAAU,WACd,EAAK93G,WAAWgllB,EAAQjllB,UACxB5V,GAAO,EAAKqoW,WAAYwyP,GACpBC,GACAA,EAAoBE,sBAAsB5jmB,KAGlD5C,KAAKymmB,eAAeJ,GAObA,I,kBAYX,WAAI,WACA,GAAIrmmB,KAAK2lmB,aACL,MAAM,IAAItxkB,MAAM,6CAEpB,IACIr0B,KAAK2lmB,cAAe,EADpB,oBAEiB3lmB,KAAK0lmB,QAFtB,IAEA,2BAA8B,QACrBlklB,gBAHT,+BAaJ,MAAOyS,GAEHj0B,KAAK8pB,MAAMuB,kBAAkB,kBAAM,EAAKk6kB,kBAAkB75b,YAAYz3I,KAf1E,QAkBIj0B,KAAK2lmB,cAAe,K,wBAQ5B,SAAWlvlB,GACP,IAAMxE,EAAOwE,EACbzW,KAAK0lmB,OAAO9hmB,KAAKqO,GACjBA,EAAKy0lB,eAAe1mmB,Q,wBAKxB,SAAWyW,GACP,IAAMxE,EAAOwE,EACbjL,GAAOxL,KAAK0lmB,OAAQzzlB,GACpBA,EAAK00lB,qB,4BAET,SAAe9llB,GACX7gB,KAAKmhB,WAAWN,EAAaO,UAC7BphB,KAAK+lmB,OACL/lmB,KAAK6zW,WAAWjwW,KAAKid,GAEH7gB,KAAK6lC,UAAU3zB,IAAI8rlB,GAAwB,IAAIhllB,OAAOhZ,KAAKylmB,qBACnEpylB,QAAQ,SAACqtB,GAAD,OAAcA,EAAS7f,O,yBAG7C,WACI7gB,KAAK0lmB,OAAOl8lB,QAAQ6J,QAAQ,SAACpB,GAAD,OAAUA,EAAKiP,YAC3ClhB,KAAK8lmB,8BAA8BlwlB,gB,qBAKvC,WACI,OAAO5V,KAAK0lmB,OAAOvhmB,W,UAG3BmhmB,EAAe/kmB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK8kmB,GAAgB1uC,GAAS,IAASA,GAAS,IAAWA,GAAS,IAAeA,GAAS,IAA2BA,GAAS,MACvM0uC,EAAe1gmB,WAAQk8iB,EAAmB,CAAEj8iB,MAAOygmB,EAAgBxgmB,QAASwgmB,EAAe/kmB,Y,KAW3F,SAASiL,GAAO2gE,EAAM15B,GAClB,IAAM9oC,EAAQwiE,EAAKljE,QAAQwpC,GACvB9oC,GAAS,GACTwiE,EAAK5jC,OAAO5+B,EAAO,G,IA+CrB,G,+CA0CA,G,+CAEAguJ,GAAiB,CACnBivc,kBAAmB,GACnBC,kBAAmB,c,kBAQjBC,E,8BACF,WAAYC,EAAW3ukB,GAAM,oBACzBp4B,KAAK+mmB,UAAYA,EACjB/mmB,KAAK8hC,QAAU1J,GAAUu/H,I,mBAE7B,SAAKxmB,GAED,OAAoDnxI,KAAKgnmB,eAAe71d,K,4BAE5E,SAAeA,GAAI,WACf,EAA2BA,EAAK5uH,MAhCrB,KAgCX,mBAAK6a,EAAL,KAAa6pkB,EAAb,KAIA,YAHmBximB,IAAfwimB,IACAA,EAAa,WAEV,UAAc7pkB,GAChB/e,KAAK,SAAC+e,GAAD,OAAYA,EAAO6pkB,KACxB5olB,KAAK,SAAC3d,GAAD,OAAUwmmB,GAAcxmmB,EAAM08B,EAAQ6pkB,KAC3C5olB,KAAK,SAAC3d,GAAD,OAAU,EAAKqmmB,UAAUhI,mBAAmBr+lB,O,yBAE1D,SAAYywI,GACR,MAA2BA,EAAK5uH,MA1CrB,KA0CX,mBAAK6a,EAAL,KAAa6pkB,EAAb,KACIE,EA1CiB,YA+CrB,YAJmB1imB,IAAfwimB,IACAA,EAAa,UACbE,EAAqB,IAElB,UAAcnnmB,KAAK8hC,QAAQ8kkB,kBAAoBxpkB,EAASp9B,KAAK8hC,QAAQ+kkB,mBACvExolB,KAAK,SAAC+e,GAAD,OAAYA,EAAO6pkB,EAAaE,KACrC9olB,KAAK,SAACvZ,GAAD,OAAaoimB,GAAcpimB,EAASs4B,EAAQ6pkB,S,UAG9DH,EAAuBvmmB,UAAO,SAAwCC,GAAK,OAAO,IAAKA,GAAKsmmB,GAAwBlwC,GAAS,IAAWA,GAAS,GAA8B,KAC/KkwC,EAAuBlimB,WAAQk8iB,EAAmB,CAAEj8iB,MAAOiimB,EAAwBhimB,QAASgimB,EAAuBvmmB,Y,KAUnH,SAAS2mmB,GAAc3lmB,EAAO6lmB,EAAYH,GACtC,IAAK1lmB,EACD,MAAM,IAAI8yB,MAAJ,uBAA0B4ykB,EAA1B,iBAA6CG,EAA7C,MAEV,OAAO7lmB,E,IAwEL,G,gOAvDkB,KA6pBlB8lmB,GAHN,SAAmCC,GAC/B,OAAO,MAgDLC,GAAezD,GAAsB,KAAM,OAZhB,CAE7B,CAAEvhmB,QAASw7lB,GAAanllB,SAAU,WAClC,CAAErW,QAAS,GAAa4mB,KAAM,CAAC,KAC/B,CAAE5mB,QAAS,GAAqB4mB,KAAM,IACtC,CAAE5mB,QAAS,GAAS4mB,KAAM,MA8DxBq+kB,GAA+B,CACjC,CACIjlmB,QAAS,GACToW,SAAU,GACVwQ,KAAM,CAAC,GAAQ,GAAU,GAAc,GAA0B,KAErE,CAAE5mB,QAASqylB,GAAWzrkB,KAAM,CAAC,IAASC,WA0B1C,SAA8Bk5G,GAC1B,IAAIp0F,EAAQ,GAMZ,OALAo0F,EAAO59H,SAASR,UAAU,WACtB,KAAOgqC,EAAM/pC,QACT+pC,EAAMjP,KAANiP,KAGD,SAAUl/B,GACbk/B,EAAMtqC,KAAKoL,MAjCf,CACIzM,QAAS,GACToW,SAAU,GACVwQ,KAAM,CAAC,CAAC,IAAI2zX,GAAYqgN,MAE5B,CAAE56lB,QAAS,GAAUoW,SAAU,GAAUwQ,KAAM,IAC/Cy0kB,GACA,CAAEr7lB,QAAS,GAAiB6mB,WA5DhC,WACI,OAAO+okB,IA2D0DhpkB,KAAM,IACvE,CAAE5mB,QAAS,GAAiB6mB,WA1DhC,WACI,OAAOgpkB,IAyD0DjpkB,KAAM,IACvE,CACI5mB,QAAS27lB,GACT90kB,WA1DR,SAAwB+7B,GAKpB,OAFIm8hB,GAFJn8hB,EAASA,GA8BsC,oBAAd2kE,WAA6BA,UAAU3kE,QAChE87hB,IA3BD97hB,GAsDHh8B,KAAM,CAAC,CAAC,IAAImuiB,GAAO4mC,IAAc,IAAIphN,GAAY,IAAIkuK,MAEzD,CAAEzojB,QAAS47lB,GAAuBvllB,SAl2WZ,Q,kBAk4WpB6ulB,E,YAEF,WAAY/V,GAAM,sB,OAEtB+V,EAAkBlnmB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKinmB,GAAmB7wC,GAAS,MAC9G6wC,EAAkBvulB,UAAO2riB,GAAiB,CAAEnkjB,KAAM+mmB,IAClDA,EAAkBtulB,UAAO6niB,EAAiB,CAAE7uhB,UAAWq1kB,K,wCC557BvDnqkB,EAAQ0wK,UAbS,WACb,SAASA,EAAUC,EAAiBjiJ,QACpB,IAARA,IAAkBA,EAAMgiJ,EAAUhiJ,KACtC/rD,KAAKguM,gBAAkBA,EACvBhuM,KAAK+rD,IAAMA,EAOf,OALAgiJ,EAAUr7K,UAAUtuB,SAAW,SAAU2nI,EAAM3+C,EAAO/kF,GAElD,YADc,IAAV+kF,IAAoBA,EAAQ,GACzB,IAAIptF,KAAKguM,gBAAgBhuM,KAAM+rI,GAAM3nI,SAASiE,EAAO+kF,IAEhE2gH,EAAUhiJ,IAAM,WAAc,OAAOrR,KAAKqR,OACnCgiJ,EAXM,I,kCCFF,SAASolF,EAAgBhlP,GAItC,OAHAglP,EAAkB32Q,OAAO6sH,eAAiB7sH,OAAO24H,eAAiB,SAAyBhnG,GACzF,OAAOA,EAAEm7F,WAAa9sH,OAAO24H,eAAehnG,KAEvBA,GAJzB,iC,sBCSS,SAAU9rB,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gPAA0FL,MAC9F,KAEJM,YAAa,oKAAgEN,MAAM,KACnFgB,SAAU,gKAAuDhB,MAAM,KACvEiB,cAAe,kGAAsCjB,MAAM,KAC3DkB,YAAa,8DAA2BlB,MAAM,KAC9CoB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,0BACTC,QAAS,yBACTC,SAAU,uDACVC,QAAS,oBACTC,SAAU,2DACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,qBACNC,EAAG,wCACHC,GAAI,gBACJ/B,EAAG,6BACHgC,GAAI,4BACJC,EAAG,mBACHC,GAAI,kBACJhN,EAAG,0BACHiN,GAAI,yBACJG,EAAG,gBACHC,GAAI,eACJC,EAAG,sBACHC,GAAI,sBAERC,uBAAwB,+BACxBC,QAAS,yBACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB/gB,CAAQ,EAAQ,U,kCCN1D,4DAEa0uK,EAAQ,CACjBhsJ,QAAQ,EACR3jB,KAFiB,SAEZtC,KACLyzB,MAHiB,SAGX2H,GACF,GAAI,IAAOiqI,sCACP,MAAMjqI,EAGN,YAAgBA,IAGxB74B,SAXiB,e,sBCOZ,SAAUue,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIphC,EAASlX,EAAS,IACtB,OAAQ/I,GACJ,IAAK,IACD,OAAOqgJ,GAAiBh/F,EAClB,eACA,kBACV,IAAK,KAUD,OARIphC,GADW,IAAXlX,EACUs3I,EAAgB,UAAY,UACpB,IAAXt3I,EACGs3I,GAAiBh/F,EAAW,UAAY,WAC3Ct4C,EAAS,EACNs3I,GAAiBh/F,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOg/F,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARIpgI,GADW,IAAXlX,EACUs3I,EAAgB,SAAW,SACnB,IAAXt3I,EACGs3I,GAAiBh/F,EAAW,SAAW,WAC1Ct4C,EAAS,EACNs3I,GAAiBh/F,EAAW,SAAW,WAEvCg/F,GAAiBh/F,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOg/F,EAAgB,UAAY,UACvC,IAAK,KAUD,OARIpgI,GADW,IAAXlX,EACUs3I,EAAgB,MAAQ,MAChB,IAAXt3I,EACGs3I,GAAiBh/F,EAAW,MAAQ,QACvCt4C,EAAS,EACNs3I,GAAiBh/F,EAAW,MAAQ,QAEpCg/F,GAAiBh/F,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOg/F,GAAiBh/F,EAAW,SAAW,YAClD,IAAK,KAQD,OANIphC,GADW,IAAXlX,EACUs3I,GAAiBh/F,EAAW,MAAQ,OAC5B,IAAXt4C,EACGs3I,GAAiBh/F,EAAW,MAAQ,UAEpCg/F,GAAiBh/F,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOg/F,GAAiBh/F,EAAW,WAAa,eACpD,IAAK,KAUD,OARIphC,GADW,IAAXlX,EACUs3I,GAAiBh/F,EAAW,QAAU,UAC9B,IAAXt4C,EACGs3I,GAAiBh/F,EAAW,SAAW,WAC1Ct4C,EAAS,EACNs3I,GAAiBh/F,EAAW,SAAW,SAEvCg/F,GAAiBh/F,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOg/F,GAAiBh/F,EAAW,WAAa,aACpD,IAAK,KAUD,OARIphC,GADW,IAAXlX,EACUs3I,GAAiBh/F,EAAW,OAAS,QAC7B,IAAXt4C,EACGs3I,GAAiBh/F,EAAW,OAAS,SACxCt4C,EAAS,EACNs3I,GAAiBh/F,EAAW,OAAS,OAErCg/F,GAAiBh/F,EAAW,MAAQ,SAMrD37C,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFL,MAC5F,KAEJM,YACI,8DAA8DN,MAC1D,KAER0U,kBAAkB,EAClB1T,SAAU,2DAAsDhB,MAAM,KACtEiB,cAAe,0CAAqCjB,MAAM,KAC1DkB,YAAa,4BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBxtB,QAAS,sBACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MAAO,oCACX,KAAK,EACD,MAAO,kCACX,KAAK,EACD,MAAO,mCACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,iCAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,UACNC,EAAGm4I,EACHl4I,GAAIk4I,EACJj6I,EAAGi6I,EACHj4I,GAAIi4I,EACJh4I,EAAGg4I,EACH/3I,GAAI+3I,EACJ/kJ,EAAG+kJ,EACH93I,GAAI83I,EACJ33I,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzKyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAIqllB,EACI,iFAAwEnllB,MACpE,KAERollB,EAAgB,CACZ,QACA,QACA,SACA,SACA,YACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAAStqb,EAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC3C,IAAIphC,EAAS,GACb,OAAQjgB,GACJ,IAAK,IACD,OAAOqhD,EAAW,oBAAsB,kBAC5C,IAAK,KACDphC,EAASohC,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACDphC,EAASohC,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDphC,EAASohC,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,eAAW,cACjC,IAAK,KACDphC,EAASohC,EAAW,eAAW,kBAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACDphC,EAASohC,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDphC,EAASohC,EAAW,SAAW,SAIvC,OAEJ,SAAsBt4C,EAAQs4C,GAC1B,OAAOt4C,EAAS,GACVs4C,EACI2piB,EAAcjilB,GACdgilB,EAAYhilB,GAChBA,EARGkilB,CAAalilB,EAAQs4C,GAAY,IAAMphC,EAW3Cva,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,iHAA2GL,MAC/G,KAEJM,YACI,6EAAuEN,MACnE,KAERgB,SACI,qEAAqEhB,MACjE,KAERiB,cAAe,uBAAuBjB,MAAM,KAC5CkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN2nH,EAAG,WACHjH,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEV3gH,SAAU,CACNC,QAAS,6BACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,qBACRC,KAAM,YACNC,EAAGw4J,EACHv4J,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAGolK,EACHn4J,GAAIm4J,EACJh4J,EAAGg4J,EACH/3J,GAAI+3J,EACJ93J,EAAG83J,EACH73J,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1HyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGF/uB,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wYAA6EL,MACjF,KAEJM,YACI,wYAA6EN,MACzE,KAERgB,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVutB,cAAe,gBACfmuF,KAAM,SAAUnhF,GACZ,MAAO,WAAQA,GAEnB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,SAEA,UAGfxtB,SAAU,CACNC,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNC,EAAG,2BACHC,GAAI,oCACJ/B,EAAG,iCACHgC,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJhN,EAAG,qBACHiN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EACF3tC,QAAQ,kEAAiB,SAAU8vC,GAChC,OAAOF,EAAUE,KAEpB9vC,QAAQ,UAAM,MAEvB+vC,WAAY,SAAUpC,GAClB,OAAOA,EACF3tC,QAAQ,MAAO,SAAU8vC,GACtB,OAAOb,EAAUa,KAEpB9vC,QAAQ,KAAM,WAEvBmkB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,kbAAoFL,MACxF,KAEJM,YAAa,sOAAkDN,MAAM,KACrEgB,SAAU,ySAAyDhB,MAC/D,KAEJiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,sEACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kEAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,8BACRC,KAAM,oCACNC,EAAG,wFACHC,GAAI,gDACJ/B,EAAG,uCACHgC,GAAI,0CACJC,EAAG,qBACHC,GAAI,8BACJhN,EAAG,qBACHiN,GAAI,8BACJC,EAAG,6CACHC,GAAI,gDACJC,EAAG,iCACHC,GAAI,0CACJC,EAAG,uCACHC,GAAI,2CAERC,uBAAwB,0FACxBC,QAAS,SAAUC,GACf,IAAI47S,EAAY57S,EAAS,GACrB2nU,EAAc3nU,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,gBACO,IAAhB2nU,EACA3nU,EAAS,gBACT2nU,EAAc,IAAMA,EAAc,GAClC3nU,EAAS,gBACK,IAAd47S,EACA57S,EAAS,gBACK,IAAd47S,EACA57S,EAAS,gBACK,IAAd47S,GAAiC,IAAdA,EACnB57S,EAAS,gBAETA,EAAS,iBAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KArFyB/gB,CAAQ,EAAQ,U,sBCKjD,SAAUud,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,4dAA2FL,MAC/F,KAEJM,YAAa,4OAAmDN,MAAM,KACtEgB,SAAU,mSAAwDhB,MAC9D,KAEJiB,cAAe,qHAA2BjB,MAAM,KAChDkB,YAAa,qHAA2BlB,MAAM,KAE9CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gDACTC,QAAS,6EACTC,SAAU,+BACVC,QAAS,sDACTC,SAAU,8FACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,6DACRC,KAAM,yEACNC,EAAG,wFACHC,GAAI,gDACJ/B,EAAG,mDACHgC,GAAI,oCACJC,EAAG,6CACHC,GAAI,8BACJhN,EAAG,uCACHiN,GAAI,wBACJG,EAAG,2BACHC,GAAI,YACJC,EAAG,6CACHC,GAAI,+BAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAGzB3rB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvFyB/gB,CAAQ,EAAQ,U,sBCCjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,4FAAyFL,MAC7F,KAEJM,YACI,iEAA8DN,MAC1D,KAER0U,kBAAkB,EAClB1T,SAAU,yDAAmDhB,MAAM,KACnEiB,cAAe,2CAAqCjB,MAAM,KAC1DkB,YAAa,6BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBnkB,KAAKg/C,QAAgB,QAAO,QAAO,QAE1D56B,QAAS,WACL,MAAO,gBAA6B,IAAjBpkB,KAAKg/C,QAAgB,QAAO,QAAO,QAE1D36B,SAAU,WACN,MAAO,UAA6B,IAAjBrkB,KAAKg/C,QAAgB,QAAO,KAAO,QAE1D16B,QAAS,WACL,MAAO,UAA6B,IAAjBtkB,KAAKg/C,QAAgB,OAAM,KAAO,QAEzDz6B,SAAU,WACN,MACI,qBAAwC,IAAjBvkB,KAAKg/C,QAAgB,QAAO,KAAO,QAGlEx6B,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUgqB,GACd,OAA0B,IAAtBA,EAAIzlC,QAAQ,MACL,IAAMylC,EAEV,MAAQA,GAEnB/pB,KAAM,SACNC,EAAG,eACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,aACJC,EAAG,YACHC,GAAI,WACJhN,EAAG,YACHiN,GAAI,aACJG,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAIi8J,EACI,8DAA8D/7J,MAC1D,KAER,EAAc,kDAAkDA,MAAM,KACtEE,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAECL,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FL,MAC/F,KAEJM,YAAa,SAAUC,EAAGC,GACtB,OAAKD,EAEM,QAAQE,KAAKD,GACb,EAAYD,EAAEG,SAEdq7J,EAAex7J,EAAEG,SAJjBq7J,GAOf57J,YAAaA,EACbQ,iBAAkBR,EAClBS,kBACI,+FACJC,uBACI,0FACJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAClBc,SAAU,6DAAuDhB,MAAM,KACvEiB,cAAe,2CAAqCjB,MAAM,KAC1DkB,YAAa,0BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE3D56B,QAAS,WACL,MAAO,mBAAmC,IAAjBpkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE9D36B,SAAU,WACN,MAAO,cAAiC,IAAjBrkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5D16B,QAAS,WACL,MAAO,cAAiC,IAAjBtkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5Dz6B,SAAU,WACN,MACI,0BACkB,IAAjBvkB,KAAKg/C,QAAgB,IAAM,IAC5B,QAGRx6B,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,gBACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,YACHiN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAETksB,YAAa,sBA7GqBjtC,CAAQ,EAAQ,U,s8BCiC1D,IAAMrF,EAAM,CAAC,oBAAqB,IAClC,SAASoomB,EAA8BlmmB,EAAIC,GAMzC,GANyD,EAALD,IAClD,KAAsB,EAAG,KAAM,GAC/B,KAAsB,EAAG,KAAM,GAC/B,KAAc,GACd,OACA,QACO,EAALA,EAAQ,CACV,IAAMskB,EAAS,OACf,KAAiB,GACjB,KAAmB,cAAeA,EAAO6hlB,aAAzC,CAAuD,iBAAkB7hlB,EAAO6hlB,cAChF,KAAmB,UAAW7hlB,EAAO8hlB,SACrC,KAAiB,GACjB,KAA0B,IAAK9hlB,EAAOoP,MAAO,MAEjD,SAAS2ykB,EAAmCrmmB,EAAIC,GAI9C,GAJ8D,EAALD,IACvD,KAAsB,EAAG,KAAM,GAC/B,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMs0G,EAAS,KAAqB,GACpC,KAAmB,cAAeA,EAAO6xf,aAAzC,CAAuD,iBAAkB7xf,EAAO6xf,cAChF,KAAmB,UAAW7xf,EAAOgyf,iBACrC,KAAiB,GACjB,KAA0B,IAAKhyf,EAAOgyf,iBAAmBhyf,EAAOiyf,sBAAwBjyf,EAAO5gF,MAAQ,GAAI,MAE/G,SAAS8ykB,EAAmCxmmB,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC/D,IAAM64G,EAAM,OACZ,KAAsB,EAAG,KAAM,GAC/B,KAAkB,QAAS,SAAgE1oF,GAAU,KAAqB0oF,GAAM,IAAM4tf,EAAUxmmB,EAAIoQ,UAAmD,OAAzB,KAAqB,GAAkBq2lB,aAAaD,EAASt2kB,KAC3O,KAAsB,EAAG,MAAO,GAChC,KAAc,GACd,OACA,KAAiB,EAAG,MAAO,IAC3B,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMymmB,EAAUxmmB,EAAIoQ,UACds2lB,EAAc1mmB,EAAI+H,MAClB4+lB,EAAc,OAAuB5+lB,MACrC2yG,EAAS,OACf,KAAmB,QAASA,EAAOksf,WAAnC,CAA+C,cAAelsf,EAAOwrf,aAArE,CAAmF,iBAAkBxrf,EAAOwrf,cAC5G,KAAmB,8BAA+BM,EAAQ13d,QAA1D,CAAmE,2BAA4Bp0B,EAAOmsf,cAAcF,EAAaD,GAAjI,CAA+I,gCAAiChsf,EAAOosf,cAAcN,EAAQO,cAA7M,CAA4N,8BAA+Brsf,EAAOssf,YAAYR,EAAQO,cAAtR,CAAqS,6BAA8Brsf,EAAOusf,WAAWT,EAAQO,cAA7V,CAA4W,4CAA6Crsf,EAAOwsf,yBAAyBV,EAAQO,aAAcJ,EAAaD,GAA5d,CAA0e,0CAA2Chsf,EAAOysf,uBAAuBX,EAAQO,aAAcJ,EAAaD,GAAtlB,CAAomB,qCAAsChsf,EAAO0sf,mBAAmBZ,EAAQO,cAA5qB,CAA2rB,mCAAoCrsf,EAAO2sf,iBAAiBb,EAAQO,cAA/vB,CAA8wB,wCAAyCrsf,EAAO4sf,qBAAqBd,EAAQO,cAA31B,CAA02B,kCAAmCrsf,EAAO6sf,gBAAgBf,EAAQO,cAA56B,CAA27B,gCAAiCrsf,EAAO8sf,cAAchB,EAAQO,cAAz/B,CAAwgC,+BAAgCrsf,EAAO+sf,aAAajB,EAAQO,eACpkC,KAAkB,UAAWP,EAAQhoO,WAArC,CAAiD,WAAY9jR,EAAOmsf,cAAcF,EAAaD,GAAe,GAAK,GACnH,KAAmB,eAAgBC,EAAnC,CAAgD,eAAgBD,EAAhE,CAA6E,aAAcF,EAAQjilB,UAAnG,CAA8G,iBAAkBiilB,EAAQ13d,SAAW,KAAnJ,CAAyJ,gBAAiBp0B,EAAOgtf,YAAYlB,EAAQO,eACrM,KAAiB,GACjB,KAAmB,6BAA8Brsf,EAAOgtf,YAAYlB,EAAQO,cAA5E,CAA2F,yCAA0Crsf,EAAOitf,uBAAuBnB,EAAQO,cAA3K,CAA0L,0BAA2Brsf,EAAOktf,aAAepB,EAAQO,cACnP,KAAiB,GACjB,KAA0B,IAAKP,EAAQ7zE,aAAc,MAEzD,SAASk1E,EAA8B9nmB,EAAIC,GAKzC,GALyD,EAALD,IAClD,KAAsB,EAAG,KAAM,GAC/B,KAAkB,EAAGqmmB,EAAoC,EAAG,EAAG,KAAM,GACrE,KAAkB,EAAGG,EAAoC,EAAG,GAAI,KAAM,GACtE,QACO,EAALxmmB,EAAQ,CACV,IAAM+nmB,EAAS9nmB,EAAIoQ,UACbu2lB,EAAc3mmB,EAAI+H,MAClB2uG,EAAS,OACf,KAAiB,GACjB,KAAkB,OAAwB,IAAhBiwf,GAAqBjwf,EAAO2vf,iBACtD,KAAiB,GACjB,KAAkB,UAAWyB,IAEjC,SAASC,EAA2BhomB,EAAIC,GAItC,GAJsD,EAALD,IAC/C,KAAsB,EAAG,KAAM,GAC/B,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAMiomB,EAAShomB,EAAIoQ,UACnB,KAAmB,aAAc43lB,EAAOC,MACxC,KAAiB,GACjB,KAAyBD,EAAOvtb,SAEpC,IAAM38K,EAAM,CAAC,KACb,SAASoqmB,EAAmCnomB,EAAIC,IAChD,SAASmomB,EAAsCpomB,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAClE,IAAMk4G,EAAM,OACZ,KAAsB,EAAG,iBAAkB,GAC3C,KAAkB,mBAAoB,SAA0F/nF,GAA4E,OAAlE,KAAqB+nF,GAAqB,OAAsCmwf,WAAal4kB,GAAvO,CAAkP,iBAAkB,SAAwFA,GAA4E,OAAlE,KAAqB+nF,GAAqB,OAAsCowf,cAAcn4kB,KACpc,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAM22G,EAAS,OACf,KAAkB,aAAcA,EAAO0xf,WAAvC,CAAmD,WAAY1xf,EAAOrpF,SAAtE,CAAgF,aAAcqpF,EAAO4xf,WAArG,CAAiH,UAAW5xf,EAAO+J,QAAnI,CAA4I,UAAW/J,EAAO8J,QAA9J,CAAuK,YAAa9J,EAAO6xf,UAA3L,CAAsM,kBAAmB7xf,EAAO8xf,gBAAhO,CAAiP,gBAAiB9xf,EAAO+xf,gBAE7Q,SAASC,EAAqC3omB,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACjE,IAAM23Q,EAAM,OACZ,KAAsB,EAAG,gBAAiB,GAC1C,KAAkB,mBAAoB,SAAwFxnP,GAA4E,OAAlE,KAAqBwnP,GAAqB,OAAsC0wV,WAAal4kB,GAArO,CAAgP,gBAAiB,SAAqFA,GAA4E,OAAlE,KAAqBwnP,GAAqB,OAAsCixV,yBAAyBz4kB,IAAzc,CAAqd,iBAAkB,SAAsFA,GAA6E,OAAnE,KAAqBwnP,GAAsB,OAAuCkxV,gBAAgB14kB,EAAQ,WACjrB,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMuzG,EAAS,OACf,KAAkB,aAAcA,EAAO80f,WAAvC,CAAmD,WAAY90f,EAAOjmF,SAAtE,CAAgF,aAAcimF,EAAOg1f,WAArG,CAAiH,UAAWh1f,EAAOmN,QAAnI,CAA4I,UAAWnN,EAAOkN,QAA9J,CAAuK,YAAalN,EAAOi1f,YAE/L,SAASM,EAA2C9omB,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACvE,IAAMozG,EAAO,OACb,KAAsB,EAAG,sBAAuB,GAChD,KAAkB,mBAAoB,SAAoGjjF,GAA8E,OAApE,KAAqBijF,GAAuB,OAAuCi1f,WAAal4kB,GAApP,CAA+P,eAAgB,SAAgGA,GAA8E,OAApE,KAAqBijF,GAAuB,OAAuC21f,6BAA6B54kB,IAAze,CAAqf,iBAAkB,SAAkGA,GAA8E,OAApE,KAAqBijF,GAAuB,OAAuCy1f,gBAAgB14kB,EAAQ,UAC9tB,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAM+0G,EAAS,OACf,KAAkB,aAAcA,EAAOszf,WAAvC,CAAmD,WAAYtzf,EAAOznF,SAAtE,CAAgF,aAAcynF,EAAOwzf,WAArG,CAAiH,UAAWxzf,EAAO2L,QAAnI,CAA4I,UAAW3L,EAAO0L,QAA9J,CAAuK,YAAa1L,EAAOyzf,YAE/L,SAASQ,EAA4ChpmB,EAAIC,IACzD,IAAM0vG,EAAM,CAAC,UACb,SAASs5f,EAAwCjpmB,EAAIC,GAAgB,EAALD,IAC5D,OACA,KAAsB,EAAG,MAAO,GAChC,KAAiB,EAAG,OAAQ,GAC5B,QAEJ,IAAM4vG,EAAM,CAAC,CAAC,CAAC,GAAI,0BAA2B,MACxCE,EAAM,CAAC,6BACPw9E,EAAM,CAAC,CAAC,CAAC,QAAS,eAAgB,KAAM,CAAC,CAAC,QAAS,aAAc,MACjEC,EAAM,CAAC,sBAAuB,qB,kBAoB9B27a,E,8BACF,iCAKI7qmB,KAAKiF,QAAU,IAAI,IAEnBjF,KAAK8qmB,cAAgB,WAErB9qmB,KAAK+qmB,kBAAoB,gBAEzB/qmB,KAAKgrmB,mBAAqB,iBAE1BhrmB,KAAKirmB,eAAiB,iBAEtBjrmB,KAAKkrmB,eAAiB,aAEtBlrmB,KAAKmrmB,cAAgB,gBAErBnrmB,KAAKormB,cAAgB,YAErBprmB,KAAKqrmB,mBAAqB,oBAE1BrrmB,KAAKsrmB,mBAAqB,gBAE1BtrmB,KAAKurmB,uBAAyB,cAE9BvrmB,KAAKwrmB,2BAA6B,yB,8BAGtC,SAAgBrimB,EAAOC,GACnB,gBAAUD,EAAV,mBAA0BC,O,UAGlCyhmB,EAAkBtqmB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKqqmB,IAClFA,EAAkBjmmB,WAAQ,aAAmB,CAAEE,QAAS,WAAuC,OAAO,IAAI+lmB,GAAwBhmmB,MAAOgmmB,EAAmBjklB,WAAY,S,KAiBlK6klB,G,YACF,WAAYlqmB,EAAOgzhB,EAAcpugB,EAAWuqH,GAAwD,IAA/C0vP,EAA+C,uDAAlC,GAAIuoO,EAA8B,uDAAfpnmB,EAAOmqmB,EAAQ,2DAChG1rmB,KAAKuB,MAAQA,EACbvB,KAAKu0hB,aAAeA,EACpBv0hB,KAAKmmB,UAAYA,EACjBnmB,KAAK0wI,QAAUA,EACf1wI,KAAKogY,WAAaA,EAClBpgY,KAAK2omB,aAAeA,EACpB3omB,KAAK0rmB,SAAWA,I,kBAOlBC,E,8BACF,WAAY5+lB,EAAazJ,GAAO,+BAC5BtD,KAAK+M,YAAcA,EACnB/M,KAAKsD,QAAUA,EAEftD,KAAK+nmB,QAAU,EAEf/nmB,KAAK4rmB,WAAa,EAElB5rmB,KAAK6rmB,SAAU,EAKf7rmB,KAAK8rmB,gBAAkB,EAEvB9rmB,KAAK+rmB,aAAe,KAEpB/rmB,KAAKgsmB,WAAa,KAElBhsmB,KAAKismB,oBAAsB,IAAI,IAE/BjsmB,KAAKksmB,cAAgB,IAAI,IAKzBlsmB,KAAKmsmB,cAAgB,SAAC7jlB,GAClB,GAAI,EAAK8jlB,gBAAiC,UAAf9jlB,EAAM5nB,KAC7B,EAAK0rmB,gBAAiB,OAI1B,GAAI9jlB,EAAMkE,QAAU,EAAKq/kB,QAAS,CAC9B,IAAM9pmB,EAAO,EAAKsqmB,oBAAoB/jlB,EAAMkE,QACxCzqB,GACA,EAAKuB,QAAQgpC,IAAI,kBAAM,EAAK4/jB,cAAchqlB,KAAK,CAAE3gB,MAAOQ,EAAK2uI,QAAU3uI,EAAO,KAAMumB,cAQhGtoB,KAAKssmB,cAAgB,SAAChklB,GAEM,OAApB,EAAK0jlB,YAAuB,EAAKH,SAI7BvjlB,EAAMkE,QAAU+/kB,GAAYjklB,EAAMkE,SAClC,EAAKlpB,QAAQgpC,IAAI,kBAAM,EAAK4/jB,cAAchqlB,KAAK,CAAE3gB,MAAO,KAAM+mB,aAI1EhlB,EAAQ+nB,kBAAkB,WACtB,IAAMhgB,EAAU0B,EAAYnK,cAC5ByI,EAAQigB,iBAAiB,aAAc,EAAK6glB,eAAe,GAC3D9gmB,EAAQigB,iBAAiB,QAAS,EAAK6glB,eAAe,GACtD9gmB,EAAQigB,iBAAiB,aAAc,EAAKghlB,eAAe,GAC3DjhmB,EAAQigB,iBAAiB,OAAQ,EAAKghlB,eAAe,M,2BAI7D,SAAavqmB,EAAMumB,GACXvmB,EAAK2uI,SACL1wI,KAAKismB,oBAAoB/plB,KAAK,CAAE3gB,MAAOQ,EAAKR,MAAO+mB,Y,yBAI3D,SAAY/mB,GACR,OAAOvB,KAAK4qb,aAAerpb,GAASvB,KAAKwsmB,WAAajrmB,I,yBAE1D,SAAY0D,GACR,IAAMwnmB,EAAgBxnmB,EAAO,QACrBsC,EAAkBvH,KAAlBuH,KAAMwgmB,EAAY/nmB,KAAZ+nmB,SACV9imB,EAAO,MAAYwnmB,KACnBzsmB,KAAKiomB,gBAAkB1gmB,GAAQA,EAAKpD,QAAUoD,EAAK,GAAGpD,OAAS4jmB,EAAUxgmB,EAAK,GAAGpD,OAAS,IAE1Fc,EAAO,iBAAuBwnmB,IAAkBzsmB,KAAK8nmB,gBACrD9nmB,KAAK8nmB,aAAL,UAAuB,GAAK9nmB,KAAK8rmB,gBAAkB/D,EAAnD,OAEA0E,GAAkBzsmB,KAAKwomB,aACvBxomB,KAAKwomB,WAAL,UAAqB,IAAMT,EAA3B,Q,yBAGR,WACI,IAAM18lB,EAAUrL,KAAK+M,YAAYnK,cACjCyI,EAAQsgB,oBAAoB,aAAc3rB,KAAKmsmB,eAAe,GAC9D9gmB,EAAQsgB,oBAAoB,QAAS3rB,KAAKmsmB,eAAe,GACzD9gmB,EAAQsgB,oBAAoB,aAAc3rB,KAAKssmB,eAAe,GAC9DjhmB,EAAQsgB,oBAAoB,OAAQ3rB,KAAKssmB,eAAe,K,2BAG5D,SAAcjimB,EAAU+re,GACpB,IAAIs2H,EAAarimB,EAAWrK,KAAK+nmB,QAAU3xH,EAK3C,OAHI/re,IACAqimB,GAAc1smB,KAAKiomB,iBAEhByE,GAAc1smB,KAAK4rmB,a,8BAG9B,WAAmC,WAAlBe,IAAkB,yDAC/B3smB,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,EAAK/nB,QAAQoB,SAASV,KAAK,YAAK,IAAIE,UAAU,WAC1C,IAAM0nmB,EAAa,EAAK7+lB,YAAYnK,cAAcwI,cAAc,6BAC5DwgmB,IACKe,IACD,EAAKP,gBAAiB,GAE1BR,EAAW98kB,e,2BAM3B,SAAcvtB,GACV,OAAO05D,GAAQ15D,EAAOvB,KAAK4qb,WAAY5qb,KAAKwsmB,Y,yBAGhD,SAAYjrmB,GACR,OAAO25D,GAAM35D,EAAOvB,KAAK4qb,WAAY5qb,KAAKwsmB,Y,wBAG9C,SAAWjrmB,GACP,OAAOqrmB,GAAUrrmB,EAAOvB,KAAK4qb,WAAY5qb,KAAKwsmB,SAAUxsmB,KAAK6rmB,W,gCAGjE,SAAmBtqmB,GACf,OAAO05D,GAAQ15D,EAAOvB,KAAKoqmB,gBAAiBpqmB,KAAKqqmB,iB,sCAGrD,SAAyB9omB,EAAO8I,EAAU+re,GACtC,IAAKp2e,KAAKgpmB,mBAAmBznmB,IAAUvB,KAAK0omB,cAAcnnmB,KAAWvB,KAAK6omB,WAAWtnmB,GACjF,OAAO,EAEX,IAAIsrmB,EAAe7smB,KAAKuH,KAAK8C,GAAU+re,EAAW,GAClD,IAAKy2H,EAAc,CACf,IAAMC,EAAc9smB,KAAKuH,KAAK8C,EAAW,GACzCwimB,EAAeC,GAAeA,EAAYA,EAAY3omB,OAAS,GAEnE,OAAO0omB,IAAiB7smB,KAAK4omB,YAAYiE,EAAalE,gB,oCAG1D,SAAuBpnmB,EAAO8I,EAAU+re,GACpC,IAAKp2e,KAAKipmB,iBAAiB1nmB,IAAUvB,KAAK4omB,YAAYrnmB,KAAWvB,KAAK6omB,WAAWtnmB,GAC7E,OAAO,EAEX,IAAIixe,EAAWxye,KAAKuH,KAAK8C,GAAU+re,EAAW,GAC9C,IAAK5D,EAAU,CACX,IAAMu6H,EAAU/smB,KAAKuH,KAAK8C,EAAW,GACrCmoe,EAAWu6H,GAAWA,EAAQ,GAElC,OAAOv6H,IAAaxye,KAAK0omB,cAAcl2H,EAASm2H,gB,8BAGpD,SAAiBpnmB,GACb,OAAO25D,GAAM35D,EAAOvB,KAAKoqmB,gBAAiBpqmB,KAAKqqmB,iB,kCAGnD,SAAqB9omB,GACjB,OAAOqrmB,GAAUrrmB,EAAOvB,KAAKoqmB,gBAAiBpqmB,KAAKqqmB,cAAerqmB,KAAK6rmB,W,oCAY3E,SAAuBtqmB,GAGnB,OAAOvB,KAAKoqmB,kBAAoBpqmB,KAAKqqmB,eAAiB9omB,IAAUvB,KAAKoqmB,kB,6BAGzE,SAAgB7omB,GACZ,OAAO05D,GAAQ15D,EAAOvB,KAAK+rmB,aAAc/rmB,KAAKgsmB,c,2BAGlD,SAAczqmB,GACV,OAAO25D,GAAM35D,EAAOvB,KAAK+rmB,aAAc/rmB,KAAKgsmB,c,0BAGhD,SAAazqmB,GACT,OAAOqrmB,GAAUrrmB,EAAOvB,KAAK+rmB,aAAc/rmB,KAAKgsmB,WAAYhsmB,KAAK6rmB,W,iCAGrE,SAAoBxgmB,GAChB,IAAItJ,EAOJ,GANIwqmB,GAAYlhmB,GACZtJ,EAAOsJ,EAEFkhmB,GAAYlhmB,EAAQqV,cACzB3e,EAAOsJ,EAAQqV,YAEf3e,EAAM,CACN,IAAM2F,EAAM3F,EAAKinC,aAAa,gBACxBi4D,EAAMl/F,EAAKinC,aAAa,gBAC9B,GAAIthC,GAAOu5F,EACP,OAAOjhG,KAAKuH,KAAKioC,SAAS9nC,IAAM8nC,SAASyxD,IAGjD,OAAO,S,UAGf0qgB,EAAgBprmB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKmrmB,GAAiB,KAAyB,KAAoB,KAAyB,OACrKA,EAAgBxlmB,UAAO,KAAyB,CAAEzF,KAAMirmB,EAAiBhrmB,UAAW,CAAC,CAAC,GAAI,oBAAqB,KAAMoC,UAAW,CAAC,OAAQ,OAAQ,gBAAiB,OAAQ,EAAG,qBAAsBZ,OAAQ,CAAE4lmB,QAAS,UAAW6D,WAAY,aAAcC,QAAS,UAAWC,gBAAiB,kBAAmBC,aAAc,eAAgBC,WAAY,aAAc32kB,MAAO,QAAS9tB,KAAM,OAAQiimB,WAAY,aAAc5+K,WAAY,aAAc4hL,SAAU,WAAYtE,sBAAuB,wBAAyBkC,gBAAiB,kBAAmBC,cAAe,iBAAmBlolB,QAAS,CAAE8plB,oBAAqB,sBAAuBC,cAAe,iBAAmBxzlB,SAAU,CAAC,mBAAoBpW,SAAU,CAAC,MAA8B2uH,MAAOxxH,EAAK2G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,cAAe,OAAQ,EAAG,QAAS,CAAC,OAAQ,MAAO,EAAG,QAAS,WAAY,CAAC,cAAe,QAAS,CAAC,EAAG,2BAA4B,CAAC,OAAQ,OAAQ,CAAC,cAAe,OAAQ,QAAS,0BAA2B,EAAG,aAAc,gBAAiB,EAAG,QAAS,CAAC,OAAQ,WAAY,QAAS,yBAA0B,EAAG,UAAW,WAAY,6BAA8B,2BAA4B,gCAAiC,8BAA+B,6BAA8B,4CAA6C,0CAA2C,qCAAsC,mCAAoC,wCAAyC,kCAAmC,gCAAiC,+BAAgC,QAAS,aAAc,gBAAiB,QAAS,EAAG,QAAS,WAAY,CAAC,cAAe,OAAQ,EAAG,2BAA4B,CAAC,OAAQ,WAAY,EAAG,yBAA0B,EAAG,UAAW,WAAY,SAAU,CAAC,EAAG,iCAAkC,uBAAwB,CAAC,EAAG,mCAAoChG,SAAU,SAAkCqB,EAAIC,GAAgB,EAALD,IAC15D,KAAkB,EAAGkmmB,EAA+B,EAAG,EAAG,KAAM,GAChE,KAAkB,EAAG4B,EAA+B,EAAG,EAAG,KAAM,IACzD,EAAL9nmB,IACF,KAAkB,OAAQC,EAAIqmmB,gBAAkBrmmB,EAAIsmmB,uBACpD,KAAiB,GACjB,KAAkB,UAAWtmmB,EAAI2F,QAChChB,WAAY,CAAC,IAAa,IAAgB,KAAiBuS,OAAQ,CAAC,k5IAAq5ItS,cAAe,EAAGwiB,gBAAiB,I,KAwErgJ,SAASujlB,GAAY7od,GACjB,MAAyB,OAAlBA,EAAK50I,SAGhB,SAASmsD,GAAQ15D,EAAO4H,EAAOC,GAC3B,OAAe,OAARA,GAAgBD,IAAUC,GAAO7H,EAAQ6H,GAAO7H,IAAU4H,EAGrE,SAAS+xD,GAAM35D,EAAO4H,EAAOC,GACzB,OAAiB,OAAVD,GAAkBA,IAAUC,GAAO7H,GAAS4H,GAAS5H,IAAU6H,EAG1E,SAASwjmB,GAAUrrmB,EAAO4H,EAAOC,EAAK4jmB,GAClC,OAAOA,GAA0B,OAAV7jmB,GAA0B,OAARC,GAAgBD,IAAUC,GAC/D7H,GAAS4H,GAAS5H,GAAS6H,E,IAW7B6jmB,G,YACF,WAEA9jmB,EAEAC,GAAG,oBACCpJ,KAAKmJ,MAAQA,EACbnJ,KAAKoJ,IAAMA,I,kBAOb8jmB,E,8BACF,WAEAxtiB,EAAW8xK,GAAQ,oBACfxxO,KAAK0/D,UAAYA,EACjB1/D,KAAKwxO,SAAWA,EAChBxxO,KAAKmtmB,kBAAoB,IAAI,IAE7BntmB,KAAK0mX,iBAAmB1mX,KAAKmtmB,kBAC7BntmB,KAAK0/D,UAAYA,G,8BAOrB,SAAgBn+D,EAAOglB,GACnB,IAAM+yS,EAAWt5T,KAAK0/D,UACtB1/D,KAAK0/D,UAAYn+D,EACjBvB,KAAKmtmB,kBAAkBtpmB,KAAK,CAAE67D,UAAWn+D,EAAOglB,SAAQ+yS,e,yBAE5D,WACIt5T,KAAKmtmB,kBAAkBrpmB,a,kCAE3B,SAAqBm2C,GACjB,OAAOj6C,KAAKwxO,SAAS5zC,eAAe3jJ,IAASj6C,KAAKwxO,SAAShtJ,QAAQvqC,K,mBAOvE,WAII,OAAO,S,UAGfizjB,EAAsB3smB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK0smB,GAAuB,UAAgBzomB,GAAY,KAAgB,OAC7JyomB,EAAsBtomB,WAAQ,KAA0B,CAAEC,MAAOqomB,EAAuBpomB,QAASoomB,EAAsB3smB,Y,uBAYjH6smB,E,YACF,WAAYrnS,GAAO,qCACT,KAAMA,I,wDAMhB,SAAI9rR,GACA,+BAAsBA,EAAMj6C,S,qBAGhC,WACI,OAAyB,MAAlBA,KAAK0/D,WAAqB1/D,KAAKqtmB,qBAAqBrtmB,KAAK0/D,a,wBAMpE,WACI,OAAyB,MAAlB1/D,KAAK0/D,Y,mBAGhB,WACI,IAAMkkF,EAAQ,IAAIwpd,EAA4BptmB,KAAKwxO,UAEnD,OADA5tF,EAAM0pd,gBAAgBttmB,KAAK0/D,UAAW1/D,MAC/B4jJ,M,CA1B2Bspd,I,OA6B1CE,EAA4B7smB,UAAO,SAA6CC,GAAK,OAAO,IAAKA,GAAK4smB,GAA6B,KAAgB,OACnJA,EAA4BxomB,WAAQ,KAA0B,CAAEC,MAAOuomB,EAA6BtomB,QAASsomB,EAA4B7smB,Y,uBAWnIgtmB,E,YACF,WAAYxnS,GAAO,qCACT,IAAIknS,GAAU,KAAM,MAAOlnS,I,wDAOrC,SAAI9rR,GACA,MAAqBj6C,KAAK0/D,UAApBv2D,EAAN,EAAMA,MAAOC,EAAb,EAAaA,IACA,MAATD,EACAA,EAAQ8wC,EAEI,MAAP7wC,EACLA,EAAM6wC,GAGN9wC,EAAQ8wC,EACR7wC,EAAM,MAEV,+BAAsB,IAAI6jmB,GAAU9jmB,EAAOC,GAAMpJ,S,qBAGrD,WACI,MAAuBA,KAAK0/D,UAApBv2D,EAAR,EAAQA,MAAOC,EAAf,EAAeA,IAEf,OAAa,MAATD,GAAwB,MAAPC,IAIR,MAATD,GAAwB,MAAPC,EACVpJ,KAAKqtmB,qBAAqBlkmB,IAAUnJ,KAAKqtmB,qBAAqBjkmB,IACjEpJ,KAAKwxO,SAASzzC,YAAY50L,EAAOC,IAAQ,GAGhC,MAATD,GAAiBnJ,KAAKqtmB,qBAAqBlkmB,MACvC,MAAPC,GAAepJ,KAAKqtmB,qBAAqBjkmB,O,wBAMlD,WACI,OAA+B,MAAxBpJ,KAAK0/D,UAAUv2D,OAAuC,MAAtBnJ,KAAK0/D,UAAUt2D,M,mBAG1D,WACI,IAAMw6I,EAAQ,IAAI2pd,EAA2BvtmB,KAAKwxO,UAElD,OADA5tF,EAAM0pd,gBAAgBttmB,KAAK0/D,UAAW1/D,MAC/B4jJ,M,CAlD0Bspd,I,OAqDzCK,EAA2BhtmB,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAK+smB,GAA4B,KAAgB,OAChJA,EAA2B3omB,WAAQ,KAA0B,CAAEC,MAAO0omB,EAA4BzomB,QAASyomB,EAA2BhtmB,Y,KAehIitmB,GAA2C,CAC7CjrmB,QAAS2qmB,GACT/jlB,KAAM,CAAC,CAAC,IAAI,IAAY,IAAI,IAAY+jlB,IAAwB,KAChE9jlB,WAVJ,SAAiDwd,EAAQm/R,GACrD,OAAOn/R,GAAU,IAAIwmkB,GAA4BrnS,KAmB/C0nS,GAA0C,CAC5ClrmB,QAAS2qmB,GACT/jlB,KAAM,CAAC,CAAC,IAAI,IAAY,IAAI,IAAY+jlB,IAAwB,KAChE9jlB,WAVJ,SAAgDwd,EAAQm/R,GACpD,OAAOn/R,GAAU,IAAI2mkB,GAA2BxnS,KAoB9C2nS,GAAoC,IAAI,IAAe,qC,kBAEvDC,E,8BACF,WAAY5+e,GAAY,oBACpB/uH,KAAK+uH,aAAeA,G,gCAExB,SAAkB90E,EAAMsnB,GACpB,IAAMp4D,EAAeo4D,EAAfp4D,MAAOC,EAAQm4D,EAARn4D,IAWb,OAVa,MAATD,EACAA,EAAQ8wC,EAEI,MAAP7wC,GAAe6wC,GAAQj6C,KAAK+uH,aAAagvE,YAAY9jJ,EAAM9wC,IAAU,EAC1EC,EAAM6wC,GAGN9wC,EAAQ8wC,EACR7wC,EAAM,MAEH,IAAI6jmB,GAAU9jmB,EAAOC,K,2BAEhC,SAAc4gmB,EAAYzoiB,GACtB,IAAIp4D,EAAQ,KACRC,EAAM,KAKV,OAJIm4D,EAAap4D,QAAUo4D,EAAan4D,KAAO4gmB,IAC3C7gmB,EAAQo4D,EAAap4D,MACrBC,EAAM4gmB,GAEH,IAAIiD,GAAU9jmB,EAAOC,O,UAGpCukmB,EAAgCptmB,UAAO,SAAiDC,GAAK,OAAO,IAAKA,GAAKmtmB,GAAiC,KAAgB,OAC/JA,EAAgC/omB,WAAQ,KAA0B,CAAEC,MAAO8omB,EAAiC7omB,QAAS6omB,EAAgCptmB,Y,KAY/IqtmB,GAAuC,CACzCrrmB,QAASmrmB,GACTvklB,KAAM,CAAC,CAAC,IAAI,IAAY,IAAI,IAAYuklB,IAAoC,KAC5EtklB,WAPJ,SAAsDwd,EAAQm/R,GAC1D,OAAOn/R,GAAU,IAAI+mkB,GAAgC5nS,K,kBAqBnD8nS,E,8BACF,WAAY/gmB,EAAoBghmB,EAAc/+e,EAAc9hH,EAAM8gmB,GAAc,oBAC5E/tmB,KAAK8M,mBAAqBA,EAC1B9M,KAAK8tmB,aAAeA,EACpB9tmB,KAAK+uH,aAAeA,EACpB/uH,KAAKiN,KAAOA,EACZjN,KAAK+tmB,eAAiBA,EACtB/tmB,KAAKgumB,sBAAwB,IAAa9mlB,MAE1ClnB,KAAKiumB,eAAiB,IAAI,IAE1BjumB,KAAKkumB,eAAiB,IAAI,IAE1BlumB,KAAKmumB,iBAAmB,IAAI,IAS5BnumB,KAAKoumB,YAAcpumB,KAAK+uH,aAAa/pD,S,uBAKzC,WAAmB,OAAOhlE,KAAKoumB,a,IAC/B,SAAe7smB,GACX,IAAM8smB,EAAgBrumB,KAAKoumB,YACrBE,EAAYtumB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,KAAWvB,KAAK+uH,aAAa/pD,QAClHhlE,KAAKoumB,YAAcpumB,KAAK+uH,aAAa0/e,UAAUH,EAAWtumB,KAAKoiH,QAASpiH,KAAKqiH,SACxEriH,KAAK0umB,qBAAqBL,EAAerumB,KAAKoumB,cAC/CpumB,KAAK2umB,U,oBAIb,WAAiB,OAAO3umB,KAAK4/B,W,IAC7B,SAAar+B,GAELvB,KAAK4/B,UADLr+B,aAAiB0rmB,GACA1rmB,EAGAvB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,IAExFvB,KAAK4umB,WAAW5umB,KAAK4/B,a,mBAGzB,WAAgB,OAAO5/B,KAAKmnH,U,IAC5B,SAAY5lH,GACRvB,KAAKmnH,SAAWnnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,mBAGvF,WAAgB,OAAOvB,KAAKonH,U,IAC5B,SAAY7lH,GACRvB,KAAKonH,SAAWpnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,gCAEvF,WAAkB,WACdvB,KAAKgumB,sBAAwBhumB,KAAK+uH,aAAa4uE,cAC1C35L,KAAK,YAAU,OACfE,UAAU,kBAAM,EAAKyqmB,Y,yBAE9B,SAAY1pmB,GACR,IAAM4pmB,EAAmB5pmB,EAAO,iBAAuBA,EAAO,cAC1D4pmB,IAAqBA,EAAiBtzc,aACtCv7J,KAAK4umB,WAAW5umB,KAAKivB,Y,yBAG7B,WACIjvB,KAAKgumB,sBAAsBp4lB,gB,2BAG/B,SAAc0S,GACV,IAIIwmlB,EACAC,EALE90jB,EAAO3xB,EAAM/mB,MACbytmB,EAAehvmB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAC9CiF,EAAgBjvmB,KAAK+uH,aAAa50E,SAASn6C,KAAKgqmB,YAChD7lf,EAAenkH,KAAK+uH,aAAamgf,WAAWF,EAAcC,EAAeh1jB,GAG3Ej6C,KAAK4/B,qBAAqBqtkB,IAC1B6B,EAAiB9umB,KAAKmvmB,uBAAuBnvmB,KAAK4/B,UAAUz2B,OAC5D4lmB,EAAe/umB,KAAKmvmB,uBAAuBnvmB,KAAK4/B,UAAUx2B,MAG1D0lmB,EAAiBC,EAAe/umB,KAAKmvmB,uBAAuBnvmB,KAAK4/B,WAEjEkvkB,IAAmB70jB,GAAQ80jB,IAAiB90jB,GAC5Cj6C,KAAKiumB,eAAe/rlB,KAAKiiG,GAE7BnkH,KAAKkumB,eAAehslB,KAAK,CAAE3gB,MAAO4iH,EAAc77F,MAAOA,EAAMA,QAC7DtoB,KAAKovmB,cAAgBpvmB,KAAKqvmB,YAAc,KACxCrvmB,KAAK8M,mBAAmBkK,iB,wCAG5B,SAA2BsR,GAIvB,IAAM+llB,EAAgBrumB,KAAKoumB,YACrBllmB,EAAQlJ,KAAKwtX,SACnB,OAAQllW,EAAM2E,SACV,KAAK,IACDjtB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaugf,gBAAgBtvmB,KAAKoumB,YAAallmB,EAAQ,GAAK,GACnF,MACJ,KAAK,IACDlJ,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaugf,gBAAgBtvmB,KAAKoumB,YAAallmB,GAAS,EAAI,GACnF,MACJ,KAAK,IACDlJ,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaugf,gBAAgBtvmB,KAAKoumB,aAAc,GACvE,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaugf,gBAAgBtvmB,KAAKoumB,YAAa,GACtE,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaugf,gBAAgBtvmB,KAAKoumB,YAAa,EAAIpumB,KAAK+uH,aAAa30E,QAAQp6C,KAAKoumB,cACzG,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaugf,gBAAgBtvmB,KAAKoumB,YAAcpumB,KAAK+uH,aAAawgf,kBAAkBvvmB,KAAKoumB,aAC5GpumB,KAAK+uH,aAAa30E,QAAQp6C,KAAKoumB,cACnC,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAa1hlB,EAAMsvK,OACpB53L,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,aAAc,GACtDpumB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,aAAc,GAC3D,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAa1hlB,EAAMsvK,OACpB53L,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAa,GACrDpumB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,YAAa,GAC1D,MACJ,KAAK,IACL,KAAK,IAMD,YALKpumB,KAAKkqmB,aAAclqmB,KAAKkqmB,WAAWlqmB,KAAKoumB,eACzCpumB,KAAKiqmB,cAAc,CAAE1omB,MAAOvB,KAAK+uH,aAAa30E,QAAQp6C,KAAKoumB,aAAc9llB,UAEzEA,EAAM4E,mBAGd,KAAK,IASD,YAPwB,MAApBltB,KAAKqvmB,aAAwB,YAAe/mlB,KAC5CtoB,KAAKovmB,cAAgBpvmB,KAAKqvmB,YAAc,KACxCrvmB,KAAKiumB,eAAe/rlB,KAAK,MACzBliB,KAAKkumB,eAAehslB,KAAK,CAAE3gB,MAAO,KAAM+mB,UACxCA,EAAM4E,iBACN5E,EAAMsH,oBAGd,QAEI,OAEJ5vB,KAAK+uH,aAAagvE,YAAYswa,EAAerumB,KAAKgqmB,aAClDhqmB,KAAKmumB,iBAAiBjslB,KAAKliB,KAAKgqmB,YAEpChqmB,KAAKyvmB,mBAELnnlB,EAAM4E,mB,mBAGV,WACIltB,KAAK4umB,WAAW5umB,KAAKivB,UACrBjvB,KAAK0vmB,WAAa1vmB,KAAK2vmB,qBAAqB3vmB,KAAK+uH,aAAa/pD,SAC9DhlE,KAAK4vmB,YAAc5vmB,KAAK8tmB,aAAa/6lB,QAAQ88lB,WACvC7vmB,KAAK+uH,aAAahsG,OAAO/iB,KAAKgqmB,WAAYhqmB,KAAK8tmB,aAAa/6lB,QAAQ88lB,YACpE7vmB,KAAK+uH,aAAa+gf,cAAc,SAAS9vmB,KAAK+uH,aAAa50E,SAASn6C,KAAKgqmB,aACtE+F,oBACT,IAAIC,EAAehwmB,KAAK+uH,aAAamgf,WAAWlvmB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAAahqmB,KAAK+uH,aAAa50E,SAASn6C,KAAKgqmB,YAAa,GACzIhqmB,KAAKiwmB,kBA7KS,EA8KOjwmB,KAAK+uH,aAAamhf,aAAaF,GAC5ChwmB,KAAK+uH,aAAaohf,qBA/KZ,EAgLdnwmB,KAAKowmB,gBACLpwmB,KAAKqwmB,mBACLrwmB,KAAK8M,mBAAmBkK,iB,8BAG5B,SAAiB21lB,GACb3smB,KAAKswmB,iBAAiBb,iBAAiB9C,K,6BAG3C,SAAgB,GAAsB,IAAN5qmB,EAAM,EAAbR,MACrB,GAAIvB,KAAK+tmB,eAAgB,CAGrB,IACMwC,EAAevwmB,KAAK+tmB,eAAeyC,cAD3BzumB,EAAOA,EAAK2pmB,SAAW,KACyB1rmB,KAAKivB,SALrC,EAApB3G,OAMVtoB,KAAKovmB,cAAgBpvmB,KAAK2vmB,qBAAqBY,EAAapnmB,OAC5DnJ,KAAKqvmB,YAAcrvmB,KAAK2vmB,qBAAqBY,EAAannmB,KAK1DpJ,KAAK8M,mBAAmB0U,mB,2BAIhC,WACI,IAAMogG,EAAiB5hH,KAAK+uH,aAAaohf,oBACnCM,EAAiBzwmB,KAAK+uH,aAAa2hf,kBAAkB,UAGvDntlB,EAFiBvjB,KAAK+uH,aAAa2hf,kBAAkB,QAE7BjnmB,IAAI,SAACogmB,EAAMhimB,GACnC,MAAO,CAAEgimB,OAAMxtb,OAAQo0b,EAAe5omB,MAE1C7H,KAAK2wmB,UAAYptlB,EAAS/Z,MAAMo4G,GAAgB5oG,OAAOuK,EAAS/Z,MAAM,EAAGo4G,M,8BAG7E,WACI,IAAMgvf,EAAc5wmB,KAAK+uH,aAAawgf,kBAAkBvvmB,KAAKgqmB,YACvD6G,EAAY7wmB,KAAK+uH,aAAa+hf,eACpC9wmB,KAAK+wmB,OAAS,CAAC,IACf,IAAK,IAAIlpmB,EAAI,EAAG9F,EAAO/B,KAAKiwmB,iBAAkBpomB,EAAI+omB,EAAa/omB,IAAK9F,IAAQ,CAxN9D,GAyNNA,IACA/B,KAAK+wmB,OAAOntmB,KAAK,IACjB7B,EAAO,GAEX,IAAMk4C,EAAOj6C,KAAK+uH,aAAamgf,WAAWlvmB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAAahqmB,KAAK+uH,aAAa50E,SAASn6C,KAAKgqmB,YAAanimB,EAAI,GACjI6oI,EAAU1wI,KAAKgxmB,kBAAkB/2jB,GACjC9zB,EAAYnmB,KAAK+uH,aAAahsG,OAAOk3B,EAAMj6C,KAAK8tmB,aAAa/6lB,QAAQ4sL,eACrEsxa,EAAcjxmB,KAAKmqmB,UAAYnqmB,KAAKmqmB,UAAUlwjB,EAAM,cAAWx1C,EACrEzE,KAAK+wmB,OAAO/wmB,KAAK+wmB,OAAO5smB,OAAS,GAAGP,KAAK,IAAI6nmB,GAAgB5jmB,EAAI,EAAGgpmB,EAAUhpmB,GAAIse,EAAWuqH,EAASuge,EAAajxmB,KAAK2vmB,qBAAqB11jB,GAAOA,O,+BAI5J,SAAkBA,GACd,QAASA,KACHj6C,KAAKoiH,SAAWpiH,KAAK+uH,aAAagvE,YAAY9jJ,EAAMj6C,KAAKoiH,UAAY,MACrEpiH,KAAKqiH,SAAWriH,KAAK+uH,aAAagvE,YAAY9jJ,EAAMj6C,KAAKqiH,UAAY,MACrEriH,KAAKkqmB,YAAclqmB,KAAKkqmB,WAAWjwjB,M,oCAM7C,SAAuBA,GACnB,OAAOA,GAAQj6C,KAAK0umB,qBAAqBz0jB,EAAMj6C,KAAKgqmB,YAChDhqmB,KAAK+uH,aAAa30E,QAAQH,GAAQ,O,kCAG1C,SAAqByF,EAAIwxjB,GACrB,SAAUxxjB,IAAMwxjB,GAAMlxmB,KAAK+uH,aAAa50E,SAASuF,IAAO1/C,KAAK+uH,aAAa50E,SAAS+2jB,IAC/ElxmB,KAAK+uH,aAAaxkD,QAAQ7qB,IAAO1/C,KAAK+uH,aAAaxkD,QAAQ2miB,M,kCAGnE,SAAqBj3jB,GACjB,GAAIA,EAAM,CAGN,IAAMT,EAAOx5C,KAAK+uH,aAAaxkD,QAAQtwB,GACjCh3B,EAAQjjB,KAAK+uH,aAAa50E,SAASF,GACnCnI,EAAM9xC,KAAK+uH,aAAa30E,QAAQH,GACtC,OAAO,IAAIS,KAAKlB,EAAMv2B,EAAO6uB,GAAKovE,UAEtC,OAAO,O,oBAGX,WACI,OAAOlhH,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,Q,wBAGlC,SAAW4vmB,GACHA,aAAyBlE,IACzBjtmB,KAAKoxmB,YAAcpxmB,KAAK2vmB,qBAAqBwB,EAAchomB,OAC3DnJ,KAAKqxmB,UAAYrxmB,KAAK2vmB,qBAAqBwB,EAAc/nmB,KACzDpJ,KAAKsxmB,UAAW,IAGhBtxmB,KAAKoxmB,YAAcpxmB,KAAKqxmB,UAAYrxmB,KAAK2vmB,qBAAqBwB,GAC9DnxmB,KAAKsxmB,UAAW,GAEpBtxmB,KAAKuxmB,sBAAwBvxmB,KAAK2vmB,qBAAqB3vmB,KAAKoqmB,iBAC5DpqmB,KAAKwxmB,oBAAsBxxmB,KAAK2vmB,qBAAqB3vmB,KAAKqqmB,mB,UAGlEwD,EAAattmB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKqtmB,GAAc,KAAyB,KAA2B,KAAyB,IAAkB,GAAI,KAAyB,IAAoB,GAAI,KAAyB,IAAuB,GAAI,KAAyBH,GAAmC,KAC1VG,EAAa1nmB,UAAO,KAAyB,CAAEzF,KAAMmtmB,EAAcltmB,UAAW,CAAC,CAAC,mBAAoB2X,UAAW,SAA4B3W,EAAIC,GAGvI,IAAIE,EAHmJ,EAALH,GAClJ,KAAmBgqmB,GAAiB,GAC7B,EAALhqmB,GAEF,KAAsBG,EAAK,UAA0BF,EAAI0umB,iBAAmBxumB,EAAGE,QAC9EG,OAAQ,CAAE6nmB,WAAY,aAAc/6kB,SAAU,WAAYmzF,QAAS,UAAWC,QAAS,UAAW6nf,WAAY,aAAcC,UAAW,YAAaC,gBAAiB,kBAAmBC,cAAe,iBAAmBlolB,QAAS,CAAE8rlB,eAAgB,iBAAkBC,eAAgB,iBAAkBC,iBAAkB,oBAAsBz1lB,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,MAA8B8D,MAAO,EAAGC,KAAM,GAAIC,OAAQ,CAAC,CAAC,OAAQ,eAAgB,EAAG,sBAAuB,CAAC,EAAG,6BAA8B,CAAC,QAAS,MAAO,EAAG,QAAS,WAAY,CAAC,UAAW,IAAK,cAAe,OAAQ,EAAG,qCAAsC,CAAC,oBAAqB,GAAI,EAAG,QAAS,OAAQ,aAAc,aAAc,WAAY,kBAAmB,gBAAiB,eAAgB,aAAc,UAAW,wBAAyB,aAAc,sBAAuB,gBAAiB,WAAY,CAAC,QAAS,QAAShG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,IAC58B,KAAsB,EAAG,QAAS,GAClC,KAAsB,EAAG,QAAS,GAClC,KAAsB,EAAG,MACzB,KAAkB,EAAGgomB,EAA4B,EAAG,EAAG,KAAM,GAC7D,OACA,KAAsB,EAAG,MACzB,KAAiB,EAAG,KAAM,GAC1B,OACA,OACA,KAAsB,EAAG,QAAS,GAClC,KAAkB,sBAAuB,SAAoE73kB,GAAU,OAAOlwB,EAAIqomB,cAAcn4kB,IAAhJ,CAA4J,gBAAiB,SAA8DA,GAAU,OAAOlwB,EAAI6vmB,gBAAgB3/kB,IAAhR,CAA4R,UAAW,SAAwDA,GAAU,OAAOlwB,EAAI8vmB,2BAA2B5/kB,KAC/Y,OACA,QACO,EAALnwB,IACF,KAAiB,GACjB,KAAkB,UAAWC,EAAI+umB,WACjC,KAAiB,GACjB,KAAkB,QAAS/umB,EAAIgumB,YAA/B,CAA4C,OAAQhumB,EAAImvmB,OAAxD,CAAgE,aAAcnvmB,EAAI8tmB,WAAlF,CAA8F,aAAc9tmB,EAAIwvmB,YAAhH,CAA6H,WAAYxvmB,EAAIyvmB,UAA7I,CAAwJ,kBAAmBzvmB,EAAI2vmB,sBAA/K,CAAsM,gBAAiB3vmB,EAAI4vmB,oBAA3N,CAAgP,eAAgB5vmB,EAAIwtmB,cAApQ,CAAmR,aAAcxtmB,EAAIytmB,YAArS,CAAkT,UAAWztmB,EAAI0vmB,SAAjU,CAA2U,wBAAyB,EAApW,CAAuW,aAAc1vmB,EAAImtH,aAAa30E,QAAQx4C,EAAIoomB,YAAc,KAC/ZzjmB,WAAY,CAAC,IAAgBolmB,IAAkBnlmB,cAAe,EAAGwiB,gBAAiB,I,KA+ErF2olB,GAAe,G,kBAMfC,E,8BACF,WAAY9kmB,EAAoBiiH,EAAc9hH,GAAI,oBAC9CjN,KAAK8M,mBAAqBA,EAC1B9M,KAAK+uH,aAAeA,EACpB/uH,KAAKiN,KAAOA,EACZjN,KAAKgumB,sBAAwB,IAAa9mlB,MAE1ClnB,KAAKiumB,eAAiB,IAAI,IAE1BjumB,KAAK6xmB,aAAe,IAAI,IAExB7xmB,KAAKmumB,iBAAmB,IAAI,IAI5BnumB,KAAKoumB,YAAcpumB,KAAK+uH,aAAa/pD,S,uBAGzC,WAAmB,OAAOhlE,KAAKoumB,a,IAC/B,SAAe7smB,GACX,IAAI8smB,EAAgBrumB,KAAKoumB,YACnBE,EAAYtumB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,KAAWvB,KAAK+uH,aAAa/pD,QAClHhlE,KAAKoumB,YAAcpumB,KAAK+uH,aAAa0/e,UAAUH,EAAWtumB,KAAKoiH,QAASpiH,KAAKqiH,SACxEyvf,GAAoB9xmB,KAAK+uH,aAAcs/e,EAAerumB,KAAKoumB,YAAapumB,KAAKoiH,QAASpiH,KAAKqiH,UAC5FriH,KAAK2umB,U,oBAIb,WAAiB,OAAO3umB,KAAK4/B,W,IAC7B,SAAar+B,GAELvB,KAAK4/B,UADLr+B,aAAiB0rmB,GACA1rmB,EAGAvB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,IAExFvB,KAAK+xmB,iBAAiBxwmB,K,mBAG1B,WAAgB,OAAOvB,KAAKmnH,U,IAC5B,SAAY5lH,GACRvB,KAAKmnH,SAAWnnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,mBAGvF,WAAgB,OAAOvB,KAAKonH,U,IAC5B,SAAY7lH,GACRvB,KAAKonH,SAAWpnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,gCAEvF,WAAkB,WACdvB,KAAKgumB,sBAAwBhumB,KAAK+uH,aAAa4uE,cAC1C35L,KAAK,YAAU,OACfE,UAAU,kBAAM,EAAKyqmB,Y,yBAE9B,WACI3umB,KAAKgumB,sBAAsBp4lB,gB,mBAG/B,WAAK,WACD5V,KAAKgymB,WAAahymB,KAAK+uH,aAAaxkD,QAAQvqE,KAAK+uH,aAAa/pD,SAM9D,IACMitiB,EADajymB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKoumB,aACf8D,GAAgBlymB,KAAK+uH,aAAc/uH,KAAKgqmB,WAAYhqmB,KAAKoiH,QAASpiH,KAAKqiH,SAC1GriH,KAAKmymB,OAAS,GACd,IAAK,IAAItqmB,EAAI,EAAGH,EAAM,GAAIG,EAAI8pmB,GAAc9pmB,IACxCH,EAAI9D,KAAKqumB,EAAgBpqmB,GAzEjB,GA0EJH,EAAIvD,SACJnE,KAAKmymB,OAAOvumB,KAAK8D,EAAI+B,IAAI,SAAA+vC,GAAI,OAAI,EAAK44jB,mBAAmB54jB,MACzD9xC,EAAM,IAGd1H,KAAK8M,mBAAmBkK,iB,2BAG5B,SAAcsR,GACV,IAAMkxB,EAAOlxB,EAAM/mB,MACnBvB,KAAK6xmB,aAAa3vlB,KAAKliB,KAAK+uH,aAAamgf,WAAW11jB,EAAM,EAAG,IAC7D,IAAIv2B,EAAQjjB,KAAK+uH,aAAa50E,SAASn6C,KAAKgqmB,YACxC4G,EAAc5wmB,KAAK+uH,aAAawgf,kBAAkBvvmB,KAAK+uH,aAAamgf,WAAW11jB,EAAMv2B,EAAO,IAChGjjB,KAAKiumB,eAAe/rlB,KAAKliB,KAAK+uH,aAAamgf,WAAW11jB,EAAMv2B,EAAO1E,KAAKG,IAAI1e,KAAK+uH,aAAa30E,QAAQp6C,KAAKgqmB,YAAa4G,O,wCAG5H,SAA2BtolB,GACvB,IAAM+llB,EAAgBrumB,KAAKoumB,YACrBllmB,EAAQlJ,KAAKwtX,SACnB,OAAQllW,EAAM2E,SACV,KAAK,IACDjtB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAallmB,EAAQ,GAAK,GACpF,MACJ,KAAK,IACDlJ,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAallmB,GAAS,EAAI,GACpF,MACJ,KAAK,IACDlJ,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,aArGtD,GAsGJ,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAxGtD,GAyGJ,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,aAAc8D,GAAgBlymB,KAAK+uH,aAAc/uH,KAAKgqmB,WAAYhqmB,KAAKoiH,QAASpiH,KAAKqiH,UAC/I,MACJ,KAAK,IACDriH,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAauD,GAAeO,GAAgBlymB,KAAK+uH,aAAc/uH,KAAKgqmB,WAAYhqmB,KAAKoiH,QAASpiH,KAAKqiH,SAAW,GACxK,MACJ,KAAK,IACDriH,KAAKgqmB,WACDhqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAa9llB,EAAMsvK,QAAS,KAAqB,IAC7F,MACJ,KAAK,IACD53L,KAAKgqmB,WACDhqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAa9llB,EAAMsvK,OAAS+5a,IAAoBA,IAC5F,MACJ,KAAK,IACL,KAAK,IACD3xmB,KAAKqymB,cAAc,CAAE9wmB,MAAOvB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKoumB,aAAc9llB,UACzE,MACJ,QAEI,OAEJtoB,KAAK+uH,aAAagvE,YAAYswa,EAAerumB,KAAKgqmB,aAClDhqmB,KAAKmumB,iBAAiBjslB,KAAKliB,KAAKgqmB,YAEpChqmB,KAAKyvmB,mBAELnnlB,EAAM4E,mB,4BAEV,WACI,OAAOgllB,GAAgBlymB,KAAK+uH,aAAc/uH,KAAKgqmB,WAAYhqmB,KAAKoiH,QAASpiH,KAAKqiH,W,8BAGlF,WACIriH,KAAKswmB,iBAAiBb,qB,gCAG1B,SAAmBj2jB,GACf,IAAMS,EAAOj6C,KAAK+uH,aAAamgf,WAAW11jB,EAAM,EAAG,GAC7C84jB,EAAWtymB,KAAK+uH,aAAawjf,YAAYt4jB,GACzCg3jB,EAAcjxmB,KAAKmqmB,UAAYnqmB,KAAKmqmB,UAAUlwjB,EAAM,mBAAgBx1C,EAC1E,OAAO,IAAIgnmB,GAAgBjyjB,EAAM84jB,EAAUA,EAAUtymB,KAAKwymB,kBAAkBh5jB,GAAOy3jB,K,+BAGvF,SAAkBz3jB,GAEd,GAAIA,SACCx5C,KAAKqiH,SAAW7oE,EAAOx5C,KAAK+uH,aAAaxkD,QAAQvqE,KAAKqiH,UACtDriH,KAAKoiH,SAAW5oE,EAAOx5C,KAAK+uH,aAAaxkD,QAAQvqE,KAAKoiH,SACvD,OAAO,EAGX,IAAKpiH,KAAKkqmB,WACN,OAAO,EAIX,IAFA,IAESjwjB,EAFWj6C,KAAK+uH,aAAamgf,WAAW11jB,EAAM,EAAG,GAE7Bx5C,KAAK+uH,aAAaxkD,QAAQtwB,IAAST,EAAMS,EAAOj6C,KAAK+uH,aAAaugf,gBAAgBr1jB,EAAM,GACjH,GAAIj6C,KAAKkqmB,WAAWjwjB,GAChB,OAAO,EAGf,OAAO,I,oBAGX,WACI,OAAOj6C,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,Q,8BAGlC,SAAiBA,GAEb,GADAvB,KAAKyymB,cAAgB,KACjBlxmB,aAAiB0rmB,GAAW,CAC5B,IAAM14E,EAAehzhB,EAAM4H,OAAS5H,EAAM6H,IACtCmrhB,IACAv0hB,KAAKyymB,cAAgBzymB,KAAK+uH,aAAaxkD,QAAQgqd,SAG9ChzhB,IACLvB,KAAKyymB,cAAgBzymB,KAAK+uH,aAAaxkD,QAAQhpE,Q,UAI3DqwmB,EAAiBrxmB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKoxmB,GAAkB,KAAyB,KAA2B,KAAyB,IAAoB,GAAI,KAAyB,IAAuB,KACvPA,EAAiBzrmB,UAAO,KAAyB,CAAEzF,KAAMkxmB,EAAkBjxmB,UAAW,CAAC,CAAC,wBAAyB2X,UAAW,SAAgC3W,EAAIC,GAGxJ,IAAIE,EAHoK,EAALH,GACnK,KAAmBgqmB,GAAiB,GAC7B,EAALhqmB,GAEF,KAAsBG,EAAK,UAA0BF,EAAI0umB,iBAAmBxumB,EAAGE,QAC9EG,OAAQ,CAAE6nmB,WAAY,aAAc/6kB,SAAU,WAAYmzF,QAAS,UAAWC,QAAS,UAAW6nf,WAAY,aAAcC,UAAW,aAAeholB,QAAS,CAAE8rlB,eAAgB,iBAAkB4D,aAAc,eAAgB1D,iBAAkB,oBAAsBz1lB,SAAU,CAAC,oBAAqBtS,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,eAAgB,EAAG,sBAAuB,CAAC,EAAG,6BAA8B,CAAC,UAAW,IAAK,EAAG,qCAAsC,CAAC,oBAAqB,GAAI,EAAG,OAAQ,aAAc,aAAc,WAAY,UAAW,kBAAmB,aAAc,sBAAuB,YAAahG,SAAU,SAAmCqB,EAAIC,GAAgB,EAALD,IAC9qB,KAAsB,EAAG,QAAS,GAClC,KAAsB,EAAG,QAAS,GAClC,KAAsB,EAAG,MACzB,KAAiB,EAAG,KAAM,GAC1B,OACA,OACA,KAAsB,EAAG,QAAS,GAClC,KAAkB,sBAAuB,SAAwEmwB,GAAU,OAAOlwB,EAAIywmB,cAAcvglB,IAApJ,CAAgK,UAAW,SAA4DA,GAAU,OAAOlwB,EAAI8vmB,2BAA2B5/kB,KACvR,OACA,QACO,EAALnwB,IACF,KAAiB,GACjB,KAAkB,OAAQC,EAAIuwmB,OAA9B,CAAsC,aAAcvwmB,EAAIowmB,WAAxD,CAAoE,aAAcpwmB,EAAI6wmB,cAAtF,CAAqG,WAAY7wmB,EAAI6wmB,cAArH,CAAoI,UAAW,EAA/I,CAAkJ,kBAAmB,EAAI,EAAzK,CAA4K,aAAc7wmB,EAAI8wmB,oBAC7LnsmB,WAAY,CAAColmB,IAAkBnlmB,cAAe,EAAGwiB,gBAAiB,I,KAqD3E,SAAS8olB,GAAoBa,EAAa35iB,EAAO45iB,EAAOxwf,EAASC,GAC7D,IAAMwwf,EAAQF,EAAYpoiB,QAAQvR,GAC5B85iB,EAAQH,EAAYpoiB,QAAQqoiB,GAC5BG,EAAeC,GAAgBL,EAAavwf,EAASC,GAC3D,OAAO9jG,KAAKs7B,OAAOg5jB,EAAQE,GAAgBpB,MACvCpzlB,KAAKs7B,OAAOi5jB,EAAQC,GAAgBpB,IAO5C,SAASO,GAAgBS,EAAa3I,EAAY5nf,EAASC,GAEvD,QADmBswf,EAAYpoiB,QAAQy/hB,GACFgJ,GAAgBL,EAAavwf,EAASC,IAAWsvf,UAM1F,SAASqB,GAAgBL,EAAavwf,EAASC,GAC3C,IAAI0wf,EAAe,EAQnB,OAPI1wf,EAEA0wf,EADgBJ,EAAYpoiB,QAAQ83C,GACXsvf,GAAe,EAEnCvvf,IACL2wf,EAAeJ,EAAYpoiB,QAAQ63C,IAEhC2wf,E,sBAkBLE,E,8BACF,WAAYnmmB,EAAoBghmB,EAAc/+e,EAAc9hH,GAAI,oBAC5DjN,KAAK8M,mBAAqBA,EAC1B9M,KAAK8tmB,aAAeA,EACpB9tmB,KAAK+uH,aAAeA,EACpB/uH,KAAKiN,KAAOA,EACZjN,KAAKgumB,sBAAwB,IAAa9mlB,MAE1ClnB,KAAKiumB,eAAiB,IAAI,IAE1BjumB,KAAKkzmB,cAAgB,IAAI,IAEzBlzmB,KAAKmumB,iBAAmB,IAAI,IAS5BnumB,KAAKoumB,YAAcpumB,KAAK+uH,aAAa/pD,S,uBAGzC,WAAmB,OAAOhlE,KAAKoumB,a,IAC/B,SAAe7smB,GACX,IAAI8smB,EAAgBrumB,KAAKoumB,YACnBE,EAAYtumB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,KAAWvB,KAAK+uH,aAAa/pD,QAClHhlE,KAAKoumB,YAAcpumB,KAAK+uH,aAAa0/e,UAAUH,EAAWtumB,KAAKoiH,QAASpiH,KAAKqiH,SACzEriH,KAAK+uH,aAAaxkD,QAAQ8jiB,KAAmBrumB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKoumB,cAC5EpumB,KAAK2umB,U,oBAIb,WAAiB,OAAO3umB,KAAK4/B,W,IAC7B,SAAar+B,GAELvB,KAAK4/B,UADLr+B,aAAiB0rmB,GACA1rmB,EAGAvB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,IAExFvB,KAAKmzmB,kBAAkB5xmB,K,mBAG3B,WAAgB,OAAOvB,KAAKmnH,U,IAC5B,SAAY5lH,GACRvB,KAAKmnH,SAAWnnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,mBAGvF,WAAgB,OAAOvB,KAAKonH,U,IAC5B,SAAY7lH,GACRvB,KAAKonH,SAAWpnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,gCAEvF,WAAkB,WACdvB,KAAKgumB,sBAAwBhumB,KAAK+uH,aAAa4uE,cAC1C35L,KAAK,YAAU,OACfE,UAAU,kBAAM,EAAKyqmB,Y,yBAE9B,WACI3umB,KAAKgumB,sBAAsBp4lB,gB,4BAG/B,SAAe0S,GACX,IAAMrF,EAAQqF,EAAM/mB,MACd6xmB,EAAiBpzmB,KAAK+uH,aAAamgf,WAAWlvmB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAAa/mlB,EAAO,GACvGjjB,KAAKkzmB,cAAchxlB,KAAKkxlB,GACxB,IAAMxC,EAAc5wmB,KAAK+uH,aAAawgf,kBAAkB6D,GACxDpzmB,KAAKiumB,eAAe/rlB,KAAKliB,KAAK+uH,aAAamgf,WAAWlvmB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAAa/mlB,EAAO1E,KAAKG,IAAI1e,KAAK+uH,aAAa30E,QAAQp6C,KAAKgqmB,YAAa4G,O,wCAGlK,SAA2BtolB,GAIvB,IAAM+llB,EAAgBrumB,KAAKoumB,YACrBllmB,EAAQlJ,KAAKwtX,SACnB,OAAQllW,EAAM2E,SACV,KAAK,IACDjtB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,YAAallmB,EAAQ,GAAK,GACrF,MACJ,KAAK,IACDlJ,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,YAAallmB,GAAS,EAAI,GACrF,MACJ,KAAK,IACDlJ,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,aAAc,GACzE,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,YAAa,GACxE,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,aAAcpumB,KAAK+uH,aAAa50E,SAASn6C,KAAKoumB,cACzG,MACJ,KAAK,IACDpumB,KAAKgqmB,WAAahqmB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKoumB,YAAa,GAAKpumB,KAAK+uH,aAAa50E,SAASn6C,KAAKoumB,cAC7G,MACJ,KAAK,IACDpumB,KAAKgqmB,WACDhqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAa9llB,EAAMsvK,QAAU,IAAM,GAC/E,MACJ,KAAK,IACD53L,KAAKgqmB,WACDhqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKoumB,YAAa9llB,EAAMsvK,OAAS,GAAK,GAC7E,MACJ,KAAK,IACL,KAAK,IACD53L,KAAKqzmB,eAAe,CAAE9xmB,MAAOvB,KAAK+uH,aAAa50E,SAASn6C,KAAKoumB,aAAc9llB,UAC3E,MACJ,QAEI,OAEJtoB,KAAK+uH,aAAagvE,YAAYswa,EAAerumB,KAAKgqmB,aAClDhqmB,KAAKmumB,iBAAiBjslB,KAAKliB,KAAKgqmB,YAEpChqmB,KAAKyvmB,mBAELnnlB,EAAM4E,mB,mBAGV,WAAK,WACDltB,KAAKmzmB,kBAAkBnzmB,KAAKivB,UAC5BjvB,KAAKszmB,YAActzmB,KAAKuzmB,uBAAuBvzmB,KAAK+uH,aAAa/pD,SACjEhlE,KAAKwzmB,WAAaxzmB,KAAK+uH,aAAawjf,YAAYvymB,KAAKgqmB,YACrD,IAAIyJ,EAAazzmB,KAAK+uH,aAAa+gf,cAAc,SAEjD9vmB,KAAK0zmB,QAAU,CAAC,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,KAAKjqmB,IAAI,SAAA/B,GAAG,OAAIA,EAAI+B,IAAI,SAAAwZ,GAAK,OAAI,EAAK0wlB,oBAAoB1wlB,EAAOwwlB,EAAWxwlB,QACnIjjB,KAAK8M,mBAAmBkK,iB,8BAG5B,WACIhX,KAAKswmB,iBAAiBb,qB,oCAM1B,SAAuBx1jB,GACnB,OAAOA,GAAQj6C,KAAK+uH,aAAaxkD,QAAQtwB,IAASj6C,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAC7EhqmB,KAAK+uH,aAAa50E,SAASF,GAAQ,O,iCAG3C,SAAoBh3B,EAAO2wlB,GACvB,IAAM35jB,EAAOj6C,KAAK+uH,aAAamgf,WAAWlvmB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAAa/mlB,EAAO,GACvFkD,EAAYnmB,KAAK+uH,aAAahsG,OAAOk3B,EAAMj6C,KAAK8tmB,aAAa/6lB,QAAQ6sL,oBACrEqxa,EAAcjxmB,KAAKmqmB,UAAYnqmB,KAAKmqmB,UAAUlwjB,EAAM,aAAUx1C,EACpE,OAAO,IAAIgnmB,GAAgBxolB,EAAO2wlB,EAAU7D,oBAAqB5plB,EAAWnmB,KAAK6zmB,mBAAmB5wlB,GAAQgulB,K,gCAGhH,SAAmBhulB,GACf,IAAM6wlB,EAAa9zmB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKgqmB,YAClD,GAAI/mlB,SACAjjB,KAAK+zmB,4BAA4BD,EAAY7wlB,IAC7CjjB,KAAKg0mB,6BAA6BF,EAAY7wlB,GAC9C,OAAO,EAEX,IAAKjjB,KAAKkqmB,WACN,OAAO,EAIX,IAFA,IAESjwjB,EAFYj6C,KAAK+uH,aAAamgf,WAAW4E,EAAY7wlB,EAAO,GAEvCjjB,KAAK+uH,aAAa50E,SAASF,IAASh3B,EAAOg3B,EAAOj6C,KAAK+uH,aAAaugf,gBAAgBr1jB,EAAM,GACpH,GAAIj6C,KAAKkqmB,WAAWjwjB,GAChB,OAAO,EAGf,OAAO,I,yCAMX,SAA4BT,EAAMv2B,GAC9B,GAAIjjB,KAAKqiH,QAAS,CACd,IAAM4xf,EAAUj0mB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKqiH,SACzC6xf,EAAWl0mB,KAAK+uH,aAAa50E,SAASn6C,KAAKqiH,SACjD,OAAO7oE,EAAOy6jB,GAAYz6jB,IAASy6jB,GAAWhxlB,EAAQixlB,EAE1D,OAAO,I,0CAMX,SAA6B16jB,EAAMv2B,GAC/B,GAAIjjB,KAAKoiH,QAAS,CACd,IAAM+xf,EAAUn0mB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKoiH,SACzCgyf,EAAWp0mB,KAAK+uH,aAAa50E,SAASn6C,KAAKoiH,SACjD,OAAO5oE,EAAO26jB,GAAY36jB,IAAS26jB,GAAWlxlB,EAAQmxlB,EAE1D,OAAO,I,oBAGX,WACI,OAAOp0mB,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,Q,+BAGlC,SAAkBA,GAEVvB,KAAKq0mB,eADL9ymB,aAAiB0rmB,GACKjtmB,KAAKuzmB,uBAAuBhymB,EAAM4H,QACpDnJ,KAAKuzmB,uBAAuBhymB,EAAM6H,KAGhBpJ,KAAKuzmB,uBAAuBhymB,O,UAI9D0xmB,EAAY1ymB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKyymB,GAAa,KAAyB,KAA2B,KAAyB,IAAkB,GAAI,KAAyB,IAAoB,GAAI,KAAyB,IAAuB,KACvRA,EAAY9smB,UAAO,KAAyB,CAAEzF,KAAMuymB,EAAatymB,UAAW,CAAC,CAAC,kBAAmB2X,UAAW,SAA2B3W,EAAIC,GAGnI,IAAIE,EAH+I,EAALH,GAC9I,KAAmBgqmB,GAAiB,GAC7B,EAALhqmB,GAEF,KAAsBG,EAAK,UAA0BF,EAAI0umB,iBAAmBxumB,EAAGE,QAC9EG,OAAQ,CAAE6nmB,WAAY,aAAc/6kB,SAAU,WAAYmzF,QAAS,UAAWC,QAAS,UAAW6nf,WAAY,aAAcC,UAAW,aAAeholB,QAAS,CAAE8rlB,eAAgB,iBAAkBiF,cAAe,gBAAiB/E,iBAAkB,oBAAsBz1lB,SAAU,CAAC,eAAgBtS,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,OAAQ,eAAgB,EAAG,sBAAuB,CAAC,EAAG,6BAA8B,CAAC,UAAW,IAAK,EAAG,qCAAsC,CAAC,oBAAqB,GAAI,EAAG,QAAS,OAAQ,aAAc,aAAc,WAAY,wBAAyB,UAAW,kBAAmB,aAAc,sBAAuB,YAAahG,SAAU,SAA8BqB,EAAIC,GAAgB,EAALD,IACxsB,KAAsB,EAAG,QAAS,GAClC,KAAsB,EAAG,QAAS,GAClC,KAAsB,EAAG,MACzB,KAAiB,EAAG,KAAM,GAC1B,OACA,OACA,KAAsB,EAAG,QAAS,GAClC,KAAkB,sBAAuB,SAAmEmwB,GAAU,OAAOlwB,EAAIyxmB,eAAevhlB,IAAhJ,CAA4J,UAAW,SAAuDA,GAAU,OAAOlwB,EAAI8vmB,2BAA2B5/kB,KAC9Q,OACA,QACO,EAALnwB,IACF,KAAiB,GACjB,KAAkB,QAASC,EAAI4xmB,WAA/B,CAA2C,OAAQ5xmB,EAAI8xmB,QAAvD,CAAgE,aAAc9xmB,EAAI0xmB,YAAlF,CAA+F,aAAc1xmB,EAAIyymB,eAAjH,CAAiI,WAAYzymB,EAAIyymB,eAAjJ,CAAiK,wBAAyB,EAA1L,CAA6L,UAAW,EAAxM,CAA2M,kBAAmB,EAAI,EAAlO,CAAqO,aAAczymB,EAAImtH,aAAa50E,SAASv4C,EAAIoomB,eAChRzjmB,WAAY,CAAColmB,IAAkBnlmB,cAAe,EAAGwiB,gBAAiB,I,KAoEvE4a,GAAW,E,kBAET0wkB,E,8BACF,WAAY76V,EAAOv1P,EAAU6qG,EAAc++e,EAAcv9e,GAAiB,oBACtEvwH,KAAKy5Q,MAAQA,EACbz5Q,KAAKkkB,SAAWA,EAChBlkB,KAAK+uH,aAAeA,EACpB/uH,KAAK8tmB,aAAeA,EACpB9tmB,KAAKu0mB,qBAAL,8BAAmD3wkB,MACnD5jC,KAAKkkB,SAAS0vJ,aAAa1vK,UAAU,kBAAMqsH,EAAkBv5G,kB,6BAGjE,WACI,GAAiC,SAA7BhX,KAAKkkB,SAASioiB,YACd,OAAOnsjB,KAAK+uH,aACPhsG,OAAO/iB,KAAKkkB,SAAS8llB,WAAYhqmB,KAAK8tmB,aAAa/6lB,QAAQ2sL,gBAC3Dqwa,oBAET,GAAiC,QAA7B/vmB,KAAKkkB,SAASioiB,YACd,OAAOnsjB,KAAK+uH,aAAawjf,YAAYvymB,KAAKkkB,SAAS8llB,YAKvD,IACMiI,EADajymB,KAAK+uH,aAAaxkD,QAAQvqE,KAAKkkB,SAAS8llB,YACxBkI,GAAgBlymB,KAAK+uH,aAAc/uH,KAAKkkB,SAAS8llB,WAAYhqmB,KAAKkkB,SAASk+F,QAASpiH,KAAKkkB,SAASm+F,SAC/Hmyf,EAAgBvC,EAAgBN,GAAe,EAC/C8C,EAAcz0mB,KAAK+uH,aAAawjf,YAAYvymB,KAAK+uH,aAAamgf,WAAW+C,EAAe,EAAG,IAC3FyC,EAAc10mB,KAAK+uH,aAAawjf,YAAYvymB,KAAK+uH,aAAamgf,WAAWsF,EAAe,EAAG,IACjG,OAAOx0mB,KAAKy5Q,MAAMk7V,gBAAgBF,EAAaC,K,6BAEnD,WACI,MAAoC,SAA7B10mB,KAAKkkB,SAASioiB,YACjBnsjB,KAAKy5Q,MAAM+xV,2BAA6BxrmB,KAAKy5Q,MAAM8xV,yB,2BAG3D,WACI,MAAO,CACH,MAASvrmB,KAAKy5Q,MAAMwxV,eACpB,KAAQjrmB,KAAKy5Q,MAAM0xV,cACnB,aAAcnrmB,KAAKy5Q,MAAM4xV,oBAC3BrrmB,KAAKkkB,SAASioiB,e,2BAGpB,WACI,MAAO,CACH,MAASnsjB,KAAKy5Q,MAAMyxV,eACpB,KAAQlrmB,KAAKy5Q,MAAM2xV,cACnB,aAAcprmB,KAAKy5Q,MAAM6xV,oBAC3BtrmB,KAAKkkB,SAASioiB,e,kCAGpB,WACInsjB,KAAKkkB,SAASioiB,YAA2C,SAA7BnsjB,KAAKkkB,SAASioiB,YAAyB,aAAe,U,6BAGtF,WACInsjB,KAAKkkB,SAAS8llB,WAA0C,SAA7BhqmB,KAAKkkB,SAASioiB,YACrCnsjB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKkkB,SAAS8llB,YAAa,GAC/DhqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKkkB,SAAS8llB,WAAyC,QAA7BhqmB,KAAKkkB,SAASioiB,aAAyB,GAAI,M,yBAGhH,WACInsjB,KAAKkkB,SAAS8llB,WAA0C,SAA7BhqmB,KAAKkkB,SAASioiB,YACrCnsjB,KAAK+uH,aAAaowE,kBAAkBn/L,KAAKkkB,SAAS8llB,WAAY,GAC9DhqmB,KAAK+uH,aAAaygf,iBAAiBxvmB,KAAKkkB,SAAS8llB,WAAyC,QAA7BhqmB,KAAKkkB,SAASioiB,YAAwB,EAAIwlD,M,6BAG/G,WACI,OAAK3xmB,KAAKkkB,SAASk+F,UAGXpiH,KAAKkkB,SAASk+F,UACjBpiH,KAAK40mB,YAAY50mB,KAAKkkB,SAAS8llB,WAAYhqmB,KAAKkkB,SAASk+F,W,yBAGlE,WACI,OAAQpiH,KAAKkkB,SAASm+F,UACjBriH,KAAK40mB,YAAY50mB,KAAKkkB,SAAS8llB,WAAYhqmB,KAAKkkB,SAASm+F,W,yBAGlE,SAAYrpD,EAAO45iB,GACf,MAAiC,SAA7B5ymB,KAAKkkB,SAASioiB,YACPnsjB,KAAK+uH,aAAaxkD,QAAQvR,IAAUh5D,KAAK+uH,aAAaxkD,QAAQqoiB,IACjE5ymB,KAAK+uH,aAAa50E,SAAS6e,IAAUh5D,KAAK+uH,aAAa50E,SAASy4jB,GAEvC,QAA7B5ymB,KAAKkkB,SAASioiB,YACPnsjB,KAAK+uH,aAAaxkD,QAAQvR,IAAUh5D,KAAK+uH,aAAaxkD,QAAQqoiB,GAGlEd,GAAoB9xmB,KAAK+uH,aAAc/1D,EAAO45iB,EAAO5ymB,KAAKkkB,SAASk+F,QAASpiH,KAAKkkB,SAASm+F,a,UAGzGiyf,EAAkB/zmB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAK8zmB,GAAmB,KAAyBzJ,IAAoB,KAAyB,aAAW,kBAAMgK,MAAe,KAAyB,IAAoB,GAAI,KAAyB,IAAkB,GAAI,KAAyB,OACpUP,EAAkBnumB,UAAO,KAAyB,CAAEzF,KAAM4zmB,EAAmB3zmB,UAAW,CAAC,CAAC,wBAAyB+X,SAAU,CAAC,qBAAsBG,mBAAoBnZ,EAAK0G,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,uBAAwB,CAAC,EAAG,yBAA0B,CAAC,aAAc,GAAI,OAAQ,SAAU,cAAe,SAAU,EAAG,6BAA8B,EAAG,SAAU,CAAC,EAAG,sBAAuB,CAAC,EAAG,uBAAwB,CAAC,kBAAmB,GAAI,OAAQ,SAAU,EAAG,+BAAgC,EAAG,WAAY,SAAU,CAAC,kBAAmB,GAAI,OAAQ,SAAU,EAAG,2BAA4B,EAAG,WAAY,UAAWhG,SAAU,SAAoCqB,EAAIC,GAAgB,EAALD,IACtqB,OACA,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAAgE,OAAOC,EAAIkzmB,yBACtG,KAAsB,EAAG,QACzB,KAAc,GACd,OACA,KAAiB,EAAG,MAAO,GAC3B,OACA,KAAiB,EAAG,MAAO,GAC3B,KAAoB,GACpB,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAAgE,OAAOlzmB,EAAImzmB,oBACtG,OACA,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAAgE,OAAOnzmB,EAAIozmB,gBACtG,OACA,OACA,QACO,EAALrzmB,IACF,KAAiB,GACjB,KAAmB,aAAcC,EAAIqzmB,kBAArC,CAAwD,mBAAoBrzmB,EAAI2ymB,sBAChF,KAAiB,GACjB,KAAmB,KAAM3ymB,EAAI2ymB,sBAC7B,KAAiB,GACjB,KAAyB3ymB,EAAIszmB,kBAC7B,KAAiB,GACjB,KAAmB,sBAAoD,UAA7BtzmB,EAAIsiB,SAASioiB,aACvD,KAAiB,GACjB,KAAkB,YAAavqjB,EAAIuzmB,mBACnC,KAAmB,aAAcvzmB,EAAIwzmB,iBACrC,KAAiB,GACjB,KAAkB,YAAaxzmB,EAAIyzmB,eACnC,KAAmB,aAAczzmB,EAAI0zmB,mBACpC/umB,WAAY,CAAC,IAAkB,KAAqBC,cAAe,EAAGwiB,gBAAiB,I,uBAgC1F6rlB,E,8BACF,WAAYp7V,EAAO1qJ,EAAc++e,EAAchhmB,GAAkB,+BAC7D9M,KAAK+uH,aAAeA,EACpB/uH,KAAK8tmB,aAAeA,EACpB9tmB,KAAK8M,mBAAqBA,EAM1B9M,KAAKu1mB,sBAAuB,EAE5Bv1mB,KAAKwvjB,UAAY,QAEjBxvjB,KAAKiumB,eAAiB,IAAI,IAK1BjumB,KAAK6xmB,aAAe,IAAI,IAKxB7xmB,KAAKkzmB,cAAgB,IAAI,IAIzBlzmB,KAAKw1mB,YAAc,IAAI,KAAa,GAEpCx1mB,KAAKkumB,eAAiB,IAAI,IAI1BlumB,KAAK4zK,aAAe,IAAI,IASxB5zK,KAAKm7Q,aAAe1B,EAAMx0Q,QAAQf,UAAU,WACxC4I,EAAmBkK,eACnB,EAAK48J,aAAa/vK,U,oBAI1B,WAAgB,OAAO7D,KAAKy1mB,U,IAC5B,SAAYl0mB,GACRvB,KAAKy1mB,SAAWz1mB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,oBAGvF,WAAiB,OAAOvB,KAAK4/B,W,IAC7B,SAAar+B,GAELvB,KAAK4/B,UADLr+B,aAAiB0rmB,GACA1rmB,EAGAvB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,mBAI5F,WAAgB,OAAOvB,KAAKmnH,U,IAC5B,SAAY5lH,GACRvB,KAAKmnH,SAAWnnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,mBAGvF,WAAgB,OAAOvB,KAAKonH,U,IAC5B,SAAY7lH,GACRvB,KAAKonH,SAAWpnH,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,sBAMvF,WAAmB,OAAOvB,KAAK01mB,oB,IAC/B,SAAen0mB,GACXvB,KAAK01mB,mBAAqB11mB,KAAK+uH,aAAa0/e,UAAUltmB,EAAOvB,KAAKoiH,QAASpiH,KAAKqiH,SAChFriH,KAAK4zK,aAAa/vK,OAClB7D,KAAK8M,mBAAmBkK,iB,uBAG5B,WAAoB,OAAOhX,KAAK21mB,c,IAChC,SAAgBp0mB,GACZ,IAAMq0mB,EAAoB51mB,KAAK21mB,eAAiBp0mB,EAAQA,EAAQ,KAChEvB,KAAK21mB,aAAep0mB,EACpBvB,KAAKu1mB,sBAAuB,EAC5Bv1mB,KAAK8M,mBAAmBkK,eACpB4+lB,GACA51mB,KAAKw1mB,YAAYtzlB,KAAK0zlB,K,gCAG9B,WACI51mB,KAAK61mB,sBAAwB,IAAI,IAAgB71mB,KAAKitW,iBAAmBqnQ,IACzEt0mB,KAAKgqmB,WAAahqmB,KAAK81mB,SAAW91mB,KAAK+uH,aAAa/pD,QAEpDhlE,KAAK21mB,aAAe31mB,KAAKwvjB,Y,gCAE7B,WACQxvjB,KAAKu1mB,uBACLv1mB,KAAKu1mB,sBAAuB,EAC5Bv1mB,KAAK+1mB,qB,yBAGb,WACI/1mB,KAAKm7Q,aAAavlQ,cAClB5V,KAAK4zK,aAAa9vK,a,yBAEtB,SAAYmB,GACR,IAAM8K,EAAS9K,EAAO,SAAeA,EAAO,SAAeA,EAAO,WAClE,GAAI8K,IAAWA,EAAOwrJ,YAAa,CAC/B,IAAMtpJ,EAAOjS,KAAKg2mB,2BACd/jmB,IAGAjS,KAAK8M,mBAAmB0U,gBACxBvP,EAAK08lB,SAGb3umB,KAAK4zK,aAAa/vK,S,6BAEtB,WACI7D,KAAKg2mB,2BAA2BvG,kBAAiB,K,8BAGrD,WACI,IAAMtjD,EAAcnsjB,KAAKmsjB,aAEL,UAAhBA,EACOnsjB,KAAKi2mB,UAES,SAAhB9pD,EACEnsjB,KAAKk2mB,SAGLl2mB,KAAKm2mB,eAEXxH,U,2BAGT,SAAcrmlB,GACV,IAAM2xB,EAAO3xB,EAAM/mB,OACfvB,KAAKivB,oBAAoBg+kB,IACxBhzjB,IAASj6C,KAAK+uH,aAAaqnf,SAASn8jB,EAAMj6C,KAAKivB,YAChDjvB,KAAKiumB,eAAe/rlB,KAAK+3B,GAE7Bj6C,KAAKkumB,eAAehslB,KAAKoG,K,0CAG7B,SAA6B+tlB,GACzBr2mB,KAAK6xmB,aAAa3vlB,KAAKm0lB,K,sCAG3B,SAAyBC,GACrBt2mB,KAAKkzmB,cAAchxlB,KAAKo0lB,K,6BAG5B,SAAgBr8jB,EAAMhoC,GAClBjS,KAAKgqmB,WAAa/vjB,EAClBj6C,KAAKmsjB,YAAcl6iB,I,sCAGvB,WACI,OAAOjS,KAAKi2mB,WAAaj2mB,KAAKk2mB,UAAYl2mB,KAAKm2mB,kB,UAGvDtB,EAAYt0mB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKq0mB,GAAa,KAAyBhK,IAAoB,KAAyB,IAAoB,GAAI,KAAyB,IAAkB,GAAI,KAAyB,OACzPgK,EAAY1umB,UAAO,KAAyB,CAAEzF,KAAMm0mB,EAAal0mB,UAAW,CAAC,CAAC,iBAAkB2X,UAAW,SAA2B3W,EAAIC,GAKlI,IAAIE,EAL8I,EAALH,IAC7I,KAAmBksmB,GAAc,GACjC,KAAmBoF,GAAa,GAChC,KAAmBrB,GAAkB,IAC9B,EAALjwmB,IAEF,KAAsBG,EAAK,UAA0BF,EAAIq0mB,UAAYn0mB,EAAGE,OACxE,KAAsBF,EAAK,UAA0BF,EAAIs0mB,SAAWp0mB,EAAGE,OACvE,KAAsBF,EAAK,UAA0BF,EAAIu0mB,cAAgBr0mB,EAAGE,SAC3Ee,UAAW,CAAC,EAAG,gBAAiBZ,OAAQ,CAAEqtjB,UAAW,YAAasmD,QAAS,UAAW7mlB,SAAU,WAAYmzF,QAAS,UAAWC,QAAS,UAAW4qP,gBAAiB,kBAAmBi9P,WAAY,aAAcC,UAAW,YAAaC,gBAAiB,kBAAmBC,cAAe,iBAAmBlolB,QAAS,CAAE8rlB,eAAgB,iBAAkB4D,aAAc,eAAgBqB,cAAe,gBAAiBsC,YAAa,cAAetH,eAAgB,kBAAoBx1lB,SAAU,CAAC,eAAgBpW,SAAU,CAAC,KAA0B,CAACkrmB,KAA4C,MAA8BpnmB,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,mBAAoB,CAAC,yBAA0B,GAAI,WAAY,KAAM,EAAG,uBAAwB,EAAG,YAAa,CAAC,EAAG,aAAc,WAAY,aAAc,UAAW,UAAW,YAAa,kBAAmB,gBAAiB,mBAAoB,iBAAkB,EAAG,gBAAiB,CAAC,EAAG,aAAc,WAAY,aAAc,UAAW,UAAW,YAAa,mBAAoB,gBAAiB,iBAAkB,EAAG,gBAAiB,CAAC,EAAG,aAAc,WAAY,aAAc,UAAW,UAAW,YAAa,mBAAoB,eAAgB,iBAAkB,EAAG,gBAAiB,CAAC,EAAG,aAAc,WAAY,aAAc,UAAW,UAAW,YAAa,kBAAmB,gBAAiB,mBAAoB,kBAAmB,CAAC,EAAG,aAAc,WAAY,aAAc,UAAW,UAAW,YAAa,mBAAoB,gBAAiB,kBAAmB,CAAC,EAAG,aAAc,WAAY,aAAc,UAAW,UAAW,YAAa,mBAAoB,eAAgB,mBAAoBhG,SAAU,SAA8BqB,EAAIC,GAAgB,EAALD,IACtrD,KAAkB,EAAGmomB,EAAoC,EAAG,EAAG,cAAe,GAC9E,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGC,EAAuC,EAAG,EAAG,iBAAkB,GACpF,KAAkB,EAAGO,EAAsC,EAAG,EAAG,gBAAiB,GAClF,KAAkB,EAAGG,EAA4C,EAAG,EAAG,sBAAuB,GAC9F,QACO,EAAL9omB,IACF,KAAkB,kBAAmBC,EAAIi0mB,uBACzC,KAAiB,GACjB,KAAkB,WAAYj0mB,EAAIuqjB,aAClC,KAAiB,GACjB,KAAkB,eAAgB,SAClC,KAAiB,GACjB,KAAkB,eAAgB,QAClC,KAAiB,GACjB,KAAkB,eAAgB,gBACjC5ljB,WAAY,CAAC,IAAwB,IAAwB,IAAiB,IAAqBsnmB,GAAcoF,GAAarB,IAAmB94lB,OAAQ,CAAC,shDAA2hDtS,cAAe,EAAGwiB,gBAAiB,I,KAoG3tDutlB,GAA0B,CAE5B9qP,eAAgB,YAAQ,iBAAkB,CACtC,YAAM,OAAQ,YAAM,CAChB/pV,QAAS,EACTC,UAAW,mBAEf,YAAW,gBAAiB,YAAQ,mCAAoC,YAAM,CAC1ED,QAAS,EACTC,UAAW,kBAEf,YAAW,YAAa,YAAQ,eAAgB,YAAM,CAAED,QAAS,QAGrE80kB,eAAgB,YAAQ,iBAAkB,CACtC,YAAM,OAAQ,YAAM,CAAE90kB,QAAS,KAC/B,YAAM,QAAS,YAAM,CAAEA,QAAS,KAGhC,YAAW,YAAa,YAAQ,oDAYpC+0kB,GAAgB,EAEdC,GAAiC,IAAI,IAAe,kCAMpDC,GAAkD,CACpDp0mB,QAASm0mB,GACTvtlB,KAAM,CAAC,KACPC,WAPJ,SAAgDC,GAC5C,OAAO,kBAAMA,EAAQC,iBAAiBC,gBAUpCqtlB,G,YACF,WAAY7pmB,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrB8pmB,GAAiC,YAAWD,I,kBAQ5CE,E,YACF,WAAYp0mB,EAAYoK,EAAoBiqmB,EAAchof,EAAciof,EAKxE/6V,GAAI,kCACA,YAAMv5Q,KACDoK,mBAAqBA,EAC1B,EAAKiqmB,aAAeA,EACpB,EAAKhof,aAAeA,EACpB,EAAKiof,wBAA0BA,EAC/B,EAAKC,eAAiB,IAAI,IAE1B,EAAK/jP,gBAAkB,QAEvB,EAAK37E,eAAiB,IAAI,IAE1B,EAAK2/T,eAAiB,KAEtB,EAAKC,kBAAoBl7V,aAAmC,EAASA,EAAK+uV,qBAAuB,iBAdjG,E,6DAgBJ,WAIIhrmB,KAAK4vH,OAAS5vH,KAAKk3mB,eAAiBl3mB,KAAK+2mB,aAAanzd,QAAU5jJ,KAAK+2mB,e,6BAEzE,WAAe,WACX/2mB,KAAKi3mB,eAAep0mB,IAAI7C,KAAKo3mB,WAAWxjc,aAAa1vK,UAAU,WAC3D,EAAK4I,mBAAmBkK,kBAE5BhX,KAAK6jH,UAAUkyf,oB,yBAEnB,WACI/1mB,KAAKi3mB,eAAerhmB,cACpB5V,KAAKu3S,eAAezzS,a,kCAExB,SAAqBwkB,GACjB,IAAMo3C,EAAY1/D,KAAK4vH,OAAOlwD,UACxBn+D,EAAQ+mB,EAAM/mB,MACdsqmB,EAAUnsiB,aAAqButiB,GAMrC,GAAIpB,GAAW7rmB,KAAKg3mB,wBAAyB,CACzC,IAAMv/I,EAAez3d,KAAKg3mB,wBAAwBK,kBAAkB91mB,EAAOm+D,EAAWp3C,EAAMA,OAC5FtoB,KAAK4vH,OAAO09e,gBAAgB71I,EAAcz3d,WAErCuB,IAAUsqmB,GACd7rmB,KAAK+uH,aAAaqnf,SAAS70mB,EAAOm+D,IACnC1/D,KAAK4vH,OAAO/sH,IAAItB,GAGdvB,KAAK4vH,SAAU5vH,KAAK4vH,OAAOstN,cAAkBl9U,KAAKk3mB,gBACpDl3mB,KAAKo3mB,WAAW9xkB,U,iCAGxB,WACItlC,KAAKkzX,gBAAkB,OACvBlzX,KAAK8M,mBAAmBkK,iB,0BAE5B,WACI,OAAOhX,KAAK4vH,OAAOlwD,Y,oCAGvB,WACQ1/D,KAAK4vH,SAAW5vH,KAAK+2mB,cACrB/2mB,KAAK+2mB,aAAazJ,gBAAgBttmB,KAAK4vH,OAAOlwD,UAAW1/D,U,CAtElC62mB,I,OA0EnCC,EAAqBv2mB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKs2mB,GAAsB,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB5J,IAAwB,KAAyB,KAAqB,KAAyBQ,GAAmC,GAAI,KAAyB7C,MACvYiM,EAAqB3wmB,UAAO,KAAyB,CAAEzF,KAAMo2mB,EAAsBn2mB,UAAW,CAAC,CAAC,2BAA4B2X,UAAW,SAAoC3W,EAAIC,GAGvK,IAAIE,EAHmL,EAALH,GAClL,KAAmBkzmB,GAAa,GACzB,EAALlzmB,GAEF,KAAsBG,EAAK,UAA0BF,EAAIiiH,UAAY/hH,EAAGE,QACvEe,UAAW,CAAC,EAAG,0BAA2BwV,SAAU,EAAGC,aAAc,SAA2C7W,EAAIC,GAAgB,EAALD,GAChI,KAA+B,uBAAwB,WAAmF,OAAOC,EAAI21S,eAAe1zS,SAC7J,EAALlC,IACF,KAA+B,kBAAmBC,EAAIsxX,iBACtD,KAAmB,+BAAgCtxX,EAAIw1mB,WAAWE,WACjEn1mB,OAAQ,CAAE0zD,MAAO,SAAWn9C,SAAU,CAAC,wBAAyBpW,SAAU,CAAC,MAAoC8D,MAAO,EAAGC,KAAM,GAAIC,OAAQ,CAAC,CAAC,eAAgB,GAAI,EAAG,oCAAqC,CAAC,EAAG,KAAM,UAAW,UAAW,YAAa,UAAW,UAAW,aAAc,kBAAmB,WAAY,YAAa,kBAAmB,gBAAiB,eAAgB,gBAAiB,cAAe,kBAAmB,CAAC,EAAG,mBAAoB,CAAC,OAAQ,SAAU,oBAAqB,GAAI,EAAG,8BAA+B,EAAG,QAAS,QAAS,OAAQ,UAAWhG,SAAU,SAAuCqB,EAAIC,GAAgB,EAALD,IAC5nB,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,eAAgB,GACzC,KAAkB,eAAgB,SAA4EmwB,GAAU,OAAOlwB,EAAIw1mB,WAAWG,YAAYzllB,IAA1J,CAAsK,gBAAiB,SAA6EA,GAAU,OAAOlwB,EAAIw1mB,WAAWI,aAAa1llB,IAAjT,CAA6T,cAAe,SAA2EA,GAAU,OAAOlwB,EAAIw1mB,WAAWK,aAAa3llB,IAApc,CAAgd,iBAAkB,SAA8EA,GAAU,OAAOlwB,EAAI81mB,qBAAqB5llB,KAC1lB,OACA,KAAkB,EAAG64kB,EAA6C,EAAG,EAAG,cAAe,GACvF,KAAsB,EAAG,SAAU,GACnC,KAAkB,QAAS,WAAmE,OAAO/omB,EAAI+1mB,qBAAsB,GAA/H,CAAwI,OAAQ,WAAkE,OAAO/1mB,EAAI+1mB,qBAAsB,GAAnP,CAA6P,QAAS,WAAmE,OAAO/1mB,EAAIw1mB,WAAW9xkB,UAC/V,KAAc,GACd,OACA,QACO,EAAL3jC,IACF,KAAmB,gDAAiDC,EAAIs1mB,gBACxE,KAAiB,GACjB,KAAkB,KAAMt1mB,EAAIw1mB,WAAWpxlB,GAAvC,CAA2C,UAAWpkB,EAAIw1mB,WAAWpnlB,WAArE,CAAiF,UAAWpuB,EAAIw1mB,WAAWtB,QAA3G,CAAoH,YAAal0mB,EAAIw1mB,WAAW5nD,UAAhJ,CAA2J,UAAW5tjB,EAAIw1mB,WAAWQ,cAArL,CAAoM,UAAWh2mB,EAAIw1mB,WAAWS,cAA9N,CAA6O,aAAcj2mB,EAAIw1mB,WAAWU,iBAA1Q,CAA4R,kBAAmBl2mB,EAAIw1mB,WAAWW,wBAA9T,CAAuV,WAAYn2mB,EAAIo2mB,eAAvW,CAAuX,YAAap2mB,EAAIw1mB,WAAWjN,UAAnZ,CAA8Z,kBAAmBvomB,EAAIwomB,gBAArb,CAAsc,gBAAiBxomB,EAAIyomB,cAA3d,CAA0e,kBAAmB,SAC7f,KAAiB,GACjB,KAAkB,kBAAmBzomB,EAAIs1mB,gBACzC,KAAiB,GACjB,KAAmB,uBAAwBt1mB,EAAI+1mB,qBAC/C,KAAkB,QAAS/1mB,EAAIi0D,OAAS,WACxC,KAAiB,GACjB,KAAyBj0D,EAAIu1mB,oBAC5B5wmB,WAAY,CAAC,IAAqBsumB,GAAa,IAAgB,IAAwB,KAAmB/7lB,OAAQ,CAAC,4gCAA6gCtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAClqC4ykB,GAAwB9qP,eACxB8qP,GAAwBC,iBACvBxtlB,gBAAiB,I,uBA2CxBivlB,E,8BACF,WAAY3ukB,EAASzf,EAAUvmB,EAASse,EAAmBmI,EAAgBglG,EAAc9hH,EAAMC,EAAW0iH,GAAM,oBAC5G5vH,KAAKspC,QAAUA,EACftpC,KAAK6pB,SAAWA,EAChB7pB,KAAKsD,QAAUA,EACftD,KAAK4hB,kBAAoBA,EACzB5hB,KAAK+uH,aAAeA,EACpB/uH,KAAKiN,KAAOA,EACZjN,KAAKkN,UAAYA,EACjBlN,KAAK4vH,OAASA,EACd5vH,KAAKk4mB,mBAAqB,IAAahxlB,MAEvClnB,KAAKwvjB,UAAY,QACjBxvjB,KAAKm4mB,UAAW,EAEhBn4mB,KAAKkzU,UAAY,QAEjBlzU,KAAKmzU,UAAY,QACjBnzU,KAAKsjC,eAAgB,EAKrBtjC,KAAK6xmB,aAAe,IAAI,IAKxB7xmB,KAAKkzmB,cAAgB,IAAI,IAIzBlzmB,KAAKw1mB,YAAc,IAAI,KAAa,GAEpCx1mB,KAAKo4mB,aAAe,IAAI,IAExBp4mB,KAAKq4mB,aAAe,IAAI,IACxBr4mB,KAAKs4mB,SAAU,EAEft4mB,KAAKgmB,GAAL,yBAA4BywlB,MAE5Bz2mB,KAAKu4mB,0BAA4B,KAEjCv4mB,KAAKw4mB,sBAAL,UAAgCx4mB,KAAKgmB,GAArC,aAEAhmB,KAAK4zK,aAAe,IAAI,IAIxB5zK,KAAKkrB,gBAAkBnB,G,oBAG3B,WAGI,OAAO/pB,KAAKy1mB,WAAaz1mB,KAAKy4mB,gBAAkBz4mB,KAAKy4mB,gBAAgBvtL,gBAAkB,O,IAE3F,SAAY3pb,GACRvB,KAAKy1mB,SAAWz1mB,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,M,iBAGvF,WACI,OAAOvB,KAAK28L,SACP38L,KAAKy4mB,gBAAkBz4mB,KAAKy4mB,gBAAgBC,uBAAoBj0mB,I,IAEzE,SAAUlD,GACNvB,KAAK28L,OAASp7L,I,mBAMlB,WAAgB,OAAOvB,KAAKm4mB,U,IAC5B,SAAY52mB,GACRvB,KAAKm4mB,SAAW,YAAsB52mB,K,oBAG1C,WACI,YAA0BkD,IAAnBzE,KAAKmgH,WAA2BngH,KAAKy4mB,gBACxCz4mB,KAAKy4mB,gBAAgBzrlB,WAAahtB,KAAKmgH,W,IAE/C,SAAa5+G,GACT,IAAM2wI,EAAW,YAAsB3wI,GACnC2wI,IAAalyI,KAAKmgH,YAClBngH,KAAKmgH,UAAY+xB,EACjBlyI,KAAK4zK,aAAa/vK,UAAKY,M,wBAQ/B,WAAqB,OAAOzE,KAAKsjC,e,IACjC,SAAiB/hC,GACbvB,KAAKsjC,cAAgB,YAAsB/hC,K,sBAM/C,WAAmB,OAAOvB,KAAK24mB,a,IAC/B,SAAep3mB,GACXvB,KAAK24mB,YAAc,YAAkBp3mB,K,kBAGzC,WAAe,OAAOvB,KAAKs4mB,S,IAC3B,SAAW/2mB,GACP,YAAsBA,GAASvB,KAAKqrF,OAASrrF,KAAKslC,U,yBAGtD,WACI,OAAOtlC,KAAKy4mB,iBAAmBz4mB,KAAKy4mB,gBAAgB/5lB,M,yBAGxD,WACI,OAAO1e,KAAKy4mB,iBAAmBz4mB,KAAKy4mB,gBAAgB31jB,M,4BAExD,WACI,OAAO9iD,KAAKy4mB,iBAAmBz4mB,KAAKy4mB,gBAAgBvO,a,yBAExD,SAAYjlmB,GACR,IAAMq2J,EAAiBr2J,EAAO,WAAiBA,EAAO,UAClDq2J,IAAmBA,EAAeC,aAAev7J,KAAK44mB,YACtD54mB,KAAK64mB,uBAAuB74mB,KAAK44mB,UAAUxzkB,YAAYtV,kBACnD9vB,KAAKunB,QACLvnB,KAAK44mB,UAAUltlB,kBAGvB1rB,KAAK4zK,aAAa/vK,UAAKY,K,yBAE3B,WACIzE,KAAK84mB,gBACL94mB,KAAKslC,QACLtlC,KAAKk4mB,mBAAmBtimB,cACxB5V,KAAK4zK,aAAa9vK,a,oBAGtB,SAAOm2C,GACHj6C,KAAK4vH,OAAO/sH,IAAIo3C,K,yBAGpB,SAAYo8jB,GACRr2mB,KAAK6xmB,aAAa3vlB,KAAKm0lB,K,0BAG3B,SAAaC,GACTt2mB,KAAKkzmB,cAAchxlB,KAAKo0lB,K,0BAG5B,SAAarkmB,GACTjS,KAAKw1mB,YAAYtzlB,KAAKjQ,K,2BAO1B,SAAcusC,GAAK,WAQf,OAJAx+C,KAAKk4mB,mBAAmBtimB,cACxB5V,KAAKy4mB,gBAAkBj6jB,EACvBx+C,KAAKk4mB,mBACD15jB,EAAMo1H,aAAa1vK,UAAU,kBAAM,EAAK0vK,aAAa/vK,UAAKY,KACvDzE,KAAK4vH,S,6BAMhB,SAAgBjwG,GAIZ3f,KAAKk3mB,eAAiBv3lB,I,2BAM1B,SAAcA,GACNA,IAAW3f,KAAKk3mB,iBAChBl3mB,KAAKk3mB,eAAiB,Q,kBAI9B,WACQl3mB,KAAKs4mB,SAAWt4mB,KAAKgtB,WAMrBhtB,KAAKkN,YACLlN,KAAKu4mB,0BAA4Bv4mB,KAAKkN,UAAUud,eAEpDzqB,KAAKs3mB,QAAUt3mB,KAAK+4mB,gBAAkB/4mB,KAAKg5mB,eAC3Ch5mB,KAAKs4mB,SAAU,EACft4mB,KAAKo4mB,aAAal2lB,U,mBAGtB,WAAK,WACD,GAAKliB,KAAKs4mB,QAAV,CAGA,GAAIt4mB,KAAKi5mB,oBAAsBj5mB,KAAK44mB,UAAW,CAC3C,IAAM9klB,EAAW9zB,KAAKi5mB,mBAAmBnllB,SACzCA,EAAS+Q,sBACT/Q,EAASyjR,eAAevzS,KAAK,YAAK,IAAIE,UAAU,kBAAM,EAAK40mB,kBAE3D94mB,KAAK8pC,aACL9pC,KAAK8pC,WAAWxE,QAChBtlC,KAAK8pC,WAAa,MAEtB,IAAMovkB,EAAgB,WAGd,EAAKZ,UACL,EAAKA,SAAU,EACf,EAAKD,aAAan2lB,OAClB,EAAKq2lB,0BAA4B,OAGrCv4mB,KAAKsjC,eAAiBtjC,KAAKu4mB,2BACqB,mBAAzCv4mB,KAAKu4mB,0BAA0BzplB,OAMtC9uB,KAAKu4mB,0BAA0BzplB,QAC/B8V,WAAWs0kB,IAGXA,O,oCAIR,WACI,IAAIvumB,EAAIC,EACFkpB,GAA+C,QAAlCnpB,EAAK3K,KAAKi5mB,0BAAuC,IAAPtumB,OAAgB,EAASA,EAAGmpB,YAAyC,QAA1BlpB,EAAK5K,KAAK8pC,kBAA+B,IAAPl/B,OAAgB,EAASA,EAAG05B,mBACtKxQ,SAAoDA,EAASqllB,2B,2BAGjE,WAAa,WAKLn5mB,KAAK8pC,YACL9pC,KAAK8pC,WAAWxE,QAEpBtlC,KAAK8pC,WAAa9pC,KAAKspC,QAAQ+hD,KAAKyrhB,GAAsB,CACtD9vmB,UAAWhH,KAAKiN,KAAOjN,KAAKiN,KAAK1L,MAAQ,MACzC2d,iBAAkBlf,KAAK4hB,kBACvBoO,WAAY,wBAGZ+Q,aAAa,EACbE,cAAc,EACdD,cAAe,CAAC,4BAA6BhhC,KAAKw4mB,uBAClD9umB,MAAO,GACPc,OAAQ,GACRu9B,SAAU,GACVC,UAAW,GACX9G,SAAU,OACV+G,UAAW,GACXj+B,SAAU,GAGVq3B,WAAW,EAOXC,cAAc,IAElBthC,KAAK8pC,WAAWvC,cAAcrjC,UAAU,kBAAM,EAAKohC,UACnDtlC,KAAKo5mB,sBAAsBp5mB,KAAK8pC,WAAWxF,qB,0BAG/C,WAAY,WACF3kB,EAAS,IAAI,IAAgBm3lB,GAAsB92mB,KAAK4hB,mBAC9D5hB,KAAK84mB,gBACL94mB,KAAKq5mB,eACLr5mB,KAAKi5mB,mBAAqBj5mB,KAAK44mB,UAAU95lB,OAAOa,GAChD3f,KAAKo5mB,sBAAsBp5mB,KAAKi5mB,mBAAmBnllB,UAEnD9zB,KAAKsD,QAAQoB,SAASV,KAAK,YAAK,IAAIE,UAAU,WAC1C,EAAK00mB,UAAUltlB,qB,mCAIvB,SAAsBoI,GAClBA,EAASsjlB,WAAap3mB,KACtB8zB,EAAS+hC,MAAQ71D,KAAK61D,MACtB/hC,EAASojlB,eAAiBl3mB,KAAKk3mB,iB,0BAGnC,WAAY,WACFpnlB,EAAmB9vB,KAAK6pB,SAAS7f,WAClCmmB,oBAAoBnwB,KAAKy4mB,gBAAgB3nlB,6BACzC0kR,sBAAsB,2BACtBplR,wBAAuB,GACvBqlR,mBAAmB,GACnB0hC,qBACCvvS,EAAgB,IAAI,IAAc,CACpC9X,iBAAkB9vB,KAAK64mB,uBAAuB/olB,GAC9CiR,aAAa,EACbC,cAAe,CAAC,mCAAoChhC,KAAKw4mB,uBACzDxxmB,UAAWhH,KAAKiN,KAChB8c,eAAgB/pB,KAAKkrB,kBACrB8E,WAAY,yBAEhBhwB,KAAK44mB,UAAY54mB,KAAK6pB,SAASvkB,OAAOsiC,GACtC5nC,KAAK44mB,UAAU/rlB,eAAehe,aAAa,OAAQ,UACnD,YAAM7O,KAAK44mB,UAAUp0kB,gBAAiBxkC,KAAK44mB,UAAUzslB,cAAensB,KAAK44mB,UAAUjplB,gBAAgB3rB,KAAK,YAAO,SAAAskB,GAE3G,OAAQA,EAAM2E,UAAY,MAAW,YAAe3E,IAAY,EAAKmwlB,iBACjE,YAAenwlB,EAAO,WAAaA,EAAM2E,UAAY,QACxD/oB,UAAU,SAAAokB,GACPA,GACAA,EAAM4E,iBAEV,EAAKoY,Y,2BAIb,WACQtlC,KAAK44mB,YACL54mB,KAAK44mB,UAAUnqlB,UACfzuB,KAAK44mB,UAAY54mB,KAAKi5mB,mBAAqB,Q,oCAInD,SAAuB/olB,GACnB,IAAMoplB,EAA8B,QAAnBt5mB,KAAKkzU,UAAsB,MAAQ,QAC9CqmS,EAA0B,UAAbD,EAAuB,MAAQ,QAC5CE,EAA8B,UAAnBx5mB,KAAKmzU,UAAwB,SAAW,MACnDsmS,EAA0B,QAAbD,EAAqB,SAAW,MACnD,OAAOtplB,EAASW,cAAc,CAC1B,CACIN,QAAS+olB,EACT9olB,QAASiplB,EACThplB,SAAU6olB,EACV5olB,SAAU8olB,GAEd,CACIjplB,QAAS+olB,EACT9olB,QAASgplB,EACT/olB,SAAU6olB,EACV5olB,SAAU+olB,GAEd,CACIlplB,QAASgplB,EACT/olB,QAASiplB,EACThplB,SAAU8olB,EACV7olB,SAAU8olB,GAEd,CACIjplB,QAASgplB,EACT/olB,QAASgplB,EACT/olB,SAAU8olB,EACV7olB,SAAU+olB,S,UAK1BxB,EAAkB13mB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKy3mB,GAAmB,KAAyB,KAAmB,KAAyB,KAAiB,KAAyB,KAAgB,KAAyB,KAA0B,KAAyBvB,IAAiC,KAAyB,IAAoB,GAAI,KAAyB,IAAuB,GAAI,KAAyB,IAAU,GAAI,KAAyBxJ,MACtf+K,EAAkBx3mB,UAAO,KAAyB,CAAEC,KAAMu3mB,EAAmB91mB,OAAQ,CAAEqtjB,UAAW,YAAat8O,UAAW,YAAaC,UAAW,YAAa2iS,QAAS,UAAWjgjB,MAAO,QAASyhjB,QAAS,UAAWtqlB,SAAU,WAAYsU,aAAc,eAAgBtR,WAAY,aAAczI,OAAQ,SAAUwwlB,wBAAyB,0BAA2B5N,UAAW,aAAeholB,QAAS,CAAE0vlB,aAAc,eAAgBqB,cAAe,gBAAiBsC,YAAa,cAAe4C,aAAc,SAAUC,aAAc,UAAY/1mB,SAAU,CAAC,Q,uBA8FjiBo3mB,E,gHAAsBzB,I,OAE5ByB,EAAcn5mB,UAAO,SAA+BC,GAAK,OAAOm5mB,GAA2Bn5mB,GAAKk5mB,IAChGA,EAAcvzmB,UAAO,KAAyB,CAAEzF,KAAMg5mB,EAAe/4mB,UAAW,CAAC,CAAC,mBAAoB+X,SAAU,CAAC,iBAAkBpW,SAAU,CAAC,KAA0B,CAC5JkrmB,GACA,CAAEjrmB,QAAS01mB,GAAmBz1mB,YAAak3mB,KAC3C,MAAoCtzmB,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAgCqB,EAAIC,KAAU4E,cAAe,EAAGwiB,gBAAiB,I,KACxJ2wlB,GAA2C,KAA6BD,IA4BxEE,G,YACF,WAEAptlB,EAEA8/F,GAAa,oBACTtsH,KAAKwsB,OAASA,EACdxsB,KAAKssH,cAAgBA,EACrBtsH,KAAKuB,MAAQvB,KAAKwsB,OAAOjrB,Q,kBAI3Bs4mB,E,8BACF,WAAY9smB,EAAagiH,EAAc++e,GAAY,+BAC/C9tmB,KAAK+M,YAAcA,EACnB/M,KAAK+uH,aAAeA,EACpB/uH,KAAK8tmB,aAAeA,EAEpB9tmB,KAAK85mB,WAAa,IAAI,IAEtB95mB,KAAKy/L,UAAY,IAAI,IAErBz/L,KAAK4zK,aAAe,IAAI,IACxB5zK,KAAK4qB,WAAa,aAClB5qB,KAAK+5mB,mBAAqB,aAC1B/5mB,KAAKg6mB,aAAe,aACpBh6mB,KAAKi6mB,0BAA4B,IAAa/ylB,MAC9ClnB,KAAKk6mB,oBAAsB,IAAahzlB,MAExClnB,KAAKm6mB,gBAAkB,WACnB,OAAO,EAAKC,gBACR,KAAO,CAAE,mBAAsB,CAAE,KAAQ,EAAKrtmB,YAAYnK,cAAcrB,SAGhFvB,KAAKq6mB,iBAAmB,SAAC7re,GACrB,IAAM8re,EAAe,EAAKvrf,aAAaw/e,mBAAmB,EAAKx/e,aAAay/e,YAAYhge,EAAQjtI,QAChG,OAAQ+4mB,GAAgB,EAAKC,eAAeD,GACxC,KAAO,CAAE,qBAAuB,IAGxCt6mB,KAAKw6mB,cAAgB,SAAChse,GAClB,IAAM8re,EAAe,EAAKvrf,aAAaw/e,mBAAmB,EAAKx/e,aAAay/e,YAAYhge,EAAQjtI,QAC1Fmd,EAAM,EAAKk5lB,cACjB,OAASl5lB,IAAQ47lB,GACb,EAAKvrf,aAAagvE,YAAYr/K,EAAK47lB,IAAiB,EACpD,KAAO,CAAE,iBAAoB,CAAE,IAAO57lB,EAAK,OAAU47lB,KAG7Dt6mB,KAAKy6mB,cAAgB,SAACjse,GAClB,IAAM8re,EAAe,EAAKvrf,aAAaw/e,mBAAmB,EAAKx/e,aAAay/e,YAAYhge,EAAQjtI,QAC1FuhD,EAAM,EAAK+0jB,cACjB,OAAS/0jB,IAAQw3jB,GACb,EAAKvrf,aAAagvE,YAAYj7I,EAAKw3jB,IAAiB,EACpD,KAAO,CAAE,iBAAoB,CAAE,IAAOx3jB,EAAK,OAAUw3jB,KAG7Dt6mB,KAAKo6mB,iBAAkB,EAUvBp6mB,KAAKk6mB,oBAAsBnrf,EAAa4uE,cAAcz5L,UAAU,WAC5D,EAAKw2mB,6BAA6B,EAAKn5mB,U,kBAI/C,WACI,OAAOvB,KAAK4vH,OAAS5vH,KAAK26mB,mBAAmB36mB,KAAK4vH,OAAOlwD,WAAa1/D,KAAKmyI,e,IAE/E,SAAU5wI,GACNvB,KAAK06mB,6BAA6Bn5mB,K,oBAGtC,WAAiB,QAASvB,KAAKmgH,WAAangH,KAAK46mB,mB,IACjD,SAAar5mB,GACT,IAAM2wI,EAAW,YAAsB3wI,GACjC8J,EAAUrL,KAAK+M,YAAYnK,cAC7B5C,KAAKmgH,YAAc+xB,IACnBlyI,KAAKmgH,UAAY+xB,EACjBlyI,KAAK4zK,aAAa/vK,UAAKY,IAMvBytI,GAAYlyI,KAAK6hB,gBAAkBxW,EAAQ4+R,MAI3C5+R,EAAQ4+R,S,4BAIhB,WACI,MAAO,CAACjqS,KAAKm6mB,gBAAiBn6mB,KAAKw6mB,cAAex6mB,KAAKy6mB,cAAez6mB,KAAKq6mB,oB,4BAG/E,SAAepghB,GAAK,WAChBj6F,KAAK4vH,OAAS31B,EACdj6F,KAAKi6mB,0BAA0BrkmB,cAC3B5V,KAAKmyI,eACLnyI,KAAK66mB,aAAa76mB,KAAKmyI,eAE3BnyI,KAAKi6mB,0BAA4Bj6mB,KAAK4vH,OAAO82P,iBAAiBxiX,UAAU,SAAAokB,GACpE,GAAI,EAAKwylB,yBAAyBxylB,GAAQ,CACtC,IAAM,EAAQ,EAAKqylB,mBAAmBrylB,EAAMo3C,WAC5C,EAAK06iB,gBAAkB,EAAKW,cAAc,GAC1C,EAAKf,aAAa,GAClB,EAAKpvlB,aACL,EAAKowlB,aAAa,GAClB,EAAKv7a,UAAUv9K,KAAK,IAAI03lB,GAAwB,EAAM,EAAK7smB,YAAYnK,gBACvE,EAAKk3mB,WAAW53lB,KAAK,IAAI03lB,GAAwB,EAAM,EAAK7smB,YAAYnK,qB,6BAIpF,WACI5C,KAAK6hB,gBAAiB,I,yBAE1B,SAAY5c,GACJg2mB,GAAsBh2mB,EAASjF,KAAK+uH,eACpC/uH,KAAK4zK,aAAa/vK,UAAKY,K,yBAG/B,WACIzE,KAAKi6mB,0BAA0BrkmB,cAC/B5V,KAAKk6mB,oBAAoBtkmB,cACzB5V,KAAK4zK,aAAa9vK,a,uCAGtB,SAA0BkL,GACtBhP,KAAK+5mB,mBAAqB/qmB,I,sBAG9B,SAAS4gC,GACL,OAAO5vC,KAAK+/I,WAAa//I,KAAK+/I,WAAWnwG,GAAK,O,wBAGlD,SAAWruC,GACPvB,KAAK06mB,6BAA6Bn5mB,K,8BAGtC,SAAiByN,GACbhP,KAAKg6mB,aAAehrmB,I,+BAGxB,SAAkBA,GACdhP,KAAK4qB,WAAa5b,I,8BAGtB,SAAiB+d,GACb/sB,KAAKgtB,SAAWD,I,wBAEpB,SAAWzE,GACgBA,EAAMsvK,QAAUtvK,EAAM2E,UAAY,MAClCjtB,KAAK+M,YAAYnK,cAAcsuB,WAClDlxB,KAAKmkI,aACL77G,EAAM4E,oB,sBAGd,SAAS3rB,GACL,IAAM25mB,EAAoBl7mB,KAAKo6mB,gBAC3BngkB,EAAOj6C,KAAK+uH,aAAa50F,MAAM54B,EAAOvB,KAAK8tmB,aAAa3zkB,MAAMslK,WAClEz/L,KAAKo6mB,gBAAkBp6mB,KAAK+6mB,cAAc9gkB,GAC1CA,EAAOj6C,KAAK+uH,aAAaw/e,mBAAmBt0jB,GACvCj6C,KAAK+uH,aAAaqnf,SAASn8jB,EAAMj6C,KAAKuB,QAQnCA,IAAUvB,KAAKuB,OACfvB,KAAKg6mB,aAAa//jB,GAElBihkB,IAAsBl7mB,KAAKo6mB,iBAC3Bp6mB,KAAK+5mB,uBAXT/5mB,KAAK66mB,aAAa5gkB,GAClBj6C,KAAKg6mB,aAAa//jB,GAClBj6C,KAAKy/L,UAAUv9K,KAAK,IAAI03lB,GAAwB55mB,KAAMA,KAAK+M,YAAYnK,mB,uBAa/E,WACI5C,KAAK85mB,WAAW53lB,KAAK,IAAI03lB,GAAwB55mB,KAAMA,KAAK+M,YAAYnK,kB,qBAG5E,WAEQ5C,KAAKuB,OACLvB,KAAKg7mB,aAAah7mB,KAAKuB,OAE3BvB,KAAK4qB,e,0BAGT,SAAarpB,GACTvB,KAAK+M,YAAYnK,cAAcrB,MAC3BA,EAAQvB,KAAK+uH,aAAahsG,OAAOxhB,EAAOvB,KAAK8tmB,aAAa/6lB,QAAQ0sL,WAAa,K,0BAGvF,SAAal+L,GAGLvB,KAAK4vH,QACL5vH,KAAKm7mB,oBAAoB55mB,GACzBvB,KAAKmyI,cAAgB,MAGrBnyI,KAAKmyI,cAAgB5wI,I,2BAI7B,SAAcA,GACV,OAAQA,GAASvB,KAAK+uH,aAAavqC,QAAQjjF,K,6BAM/C,WACI,OAAO,I,0CAGX,SAA6BA,GACzBA,EAAQvB,KAAK+uH,aAAay/e,YAAYjtmB,GACtCvB,KAAKo6mB,gBAAkBp6mB,KAAK+6mB,cAAcx5mB,GAC1CA,EAAQvB,KAAK+uH,aAAaw/e,mBAAmBhtmB,GAC7CvB,KAAK66mB,aAAat5mB,GAClBvB,KAAKg7mB,aAAaz5mB,K,4BAGtB,SAAeA,GACX,IAAM4T,EAASnV,KAAK83mB,iBACpB,OAAQ3imB,GAAUA,EAAO5T,O,UAGjCs4mB,EAAuBt5mB,UAAO,SAAwCC,GAAK,OAAO,IAAKA,GAAKq5mB,GAAwB,KAAyB,KAAoB,KAAyB,IAAoB,GAAI,KAAyB,IAAkB,KAC7PA,EAAuBp5mB,UAAO,KAAyB,CAAEC,KAAMm5mB,EAAwB13mB,OAAQ,CAAEZ,MAAO,QAASyrB,SAAU,YAAc7K,QAAS,CAAE23lB,WAAY,aAAcr6a,UAAW,aAAen9L,SAAU,CAAC,Q,KAkCnN,SAAS24mB,GAAsBh2mB,EAAS8gU,GAEpC,IADA,IACA,MADavpT,OAAOC,KAAKxX,GACzB,eAAsB,CAAjB,IACD,EAAwCA,EADhC,MACAujC,EAAR,EAAQA,cAAepjC,EAAvB,EAAuBA,aACvB,IAAI2gU,EAAQnoI,eAAep1J,KAAkBu9R,EAAQnoI,eAAex4L,GAMhE,OAAO,EALP,IAAK2gU,EAAQqwS,SAAS5tkB,EAAepjC,GACjC,OAAO,EAOnB,OAAO,EAWX,IAAMg2mB,GAAgC,CAClC74mB,QAAS,IACTC,YAAa,aAAW,kBAAM64mB,KAC9B3xlB,OAAO,GAGL4xlB,GAA4B,CAC9B/4mB,QAAS,IACTC,YAAa,aAAW,kBAAM64mB,KAC9B3xlB,OAAO,G,kBAGL2xlB,E,YACF,WAAY34mB,EAAYiwmB,EAAa4I,EAAavxlB,GAAU,kCACxD,YAAMtnB,EAAYiwmB,EAAa4I,KAC1BvxlB,WAAaA,EAClB,EAAKwxlB,oBAAsB,IAAat0lB,MACxC,EAAK64H,WAAa,IAAWmuL,QAAX,+BAJsC,E,gEAO5D,SAAkBkpS,GAAU,WACpBA,IACAp3mB,KAAKy7mB,YAAcrE,EACnBp3mB,KAAKw7mB,oBAAsBpE,EAAWiB,aAAan0mB,UAAU,kBAAM,EAAK0mB,eACxE5qB,KAAK07mB,eAAetE,EAAWxgc,cAAc52K,U,eAIrD,WAAY,OAAOA,KAAK27mB,M,IACxB,SAAQp6mB,GACJ,IAAM2rY,EAAaltY,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,IACjFvB,KAAK+uH,aAAaqnf,SAASlpO,EAAYltY,KAAK27mB,QAC7C37mB,KAAK27mB,KAAOzuO,EACZltY,KAAK+5mB,wB,eAIb,WAAY,OAAO/5mB,KAAK47mB,M,IACxB,SAAQr6mB,GACJ,IAAM2rY,EAAaltY,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,IACjFvB,KAAK+uH,aAAaqnf,SAASlpO,EAAYltY,KAAK47mB,QAC7C57mB,KAAK47mB,KAAO1uO,EACZltY,KAAK+5mB,wB,sBAIb,WAAmB,OAAO/5mB,KAAK67mB,a,IAC/B,SAAet6mB,GACX,IAAMu6mB,EAAmB97mB,KAAKu6mB,eAAev6mB,KAAKuB,OAClDvB,KAAK67mB,YAAct6mB,EACfvB,KAAKu6mB,eAAev6mB,KAAKuB,SAAWu6mB,GACpC97mB,KAAK+5mB,uB,uCAOb,WACI,OAAO/5mB,KAAKgqB,WAAahqB,KAAKgqB,WAAW8G,4BAA8B9wB,KAAK+M,c,6BAGhF,WACI,OAAO/M,KAAKgqB,WAAahqB,KAAKgqB,WAAW6rC,WAAQpxD,I,2BAGrD,WACI,OAAOzE,KAAKuB,Q,yBAEhB,WACI,8BACAvB,KAAKw7mB,oBAAoB5lmB,gB,wBAG7B,WACQ5V,KAAKy7mB,aACLz7mB,KAAKy7mB,YAAYpwhB,S,gCAGzB,SAAmB0whB,GACf,OAAOA,I,iCAEX,SAAoBx6mB,GACZvB,KAAK4vH,QACL5vH,KAAK4vH,OAAO09e,gBAAgB/rmB,EAAOvB,Q,yBAI3C,WACI,OAAOA,KAAK27mB,O,yBAGhB,WACI,OAAO37mB,KAAK47mB,O,4BAGhB,WACI,OAAO57mB,KAAK67mB,c,sCAEhB,SAAyBvzlB,GACrB,OAAOA,EAAM/B,SAAWvmB,S,CAxFC65mB,I,OA2FjCwB,EAAmB96mB,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK66mB,GAAoB,KAAyB,KAAoB,KAAyB,IAAoB,GAAI,KAAyB,IAAkB,GAAI,KAAyB,IAAgB,KAC9RA,EAAmB56mB,UAAO,KAAyB,CAAEC,KAAM26mB,EAAoB16mB,UAAW,CAAC,CAAC,QAAS,gBAAiB,KAAMoC,UAAW,CAAC,EAAG,wBAAyBwV,SAAU,EAAGC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,GAC/O,KAAkB,QAAS,SAAqDmwB,GAAU,OAAOlwB,EAAIq1K,SAASnlJ,EAAOtF,OAAOjrB,QAA5H,CAAuI,SAAU,WAA0D,OAAOK,EAAI+oB,aAAtN,CAAsO,OAAQ,WAAwD,OAAO/oB,EAAI8uK,WAAjT,CAA+T,UAAW,SAAuD5+I,GAAU,OAAOlwB,EAAIo6mB,WAAWlqlB,KAC1Z,EAALnwB,IACF,KAAsB,WAAYC,EAAIorB,UACtC,KAAmB,gBAAiBprB,EAAI65mB,YAAc,SAAW,KAAjE,CAAuE,aAAiC,MAAnB75mB,EAAI65mB,YAAsB,KAAO75mB,EAAI65mB,YAAYl0lB,SAAW3lB,EAAI65mB,YAAYz1lB,IAAM,KAAvK,CAA6K,MAAOpkB,EAAI8c,IAAM9c,EAAImtH,aAAaktf,UAAUr6mB,EAAI8c,KAAO,KAApO,CAA0O,MAAO9c,EAAIkhD,IAAMlhD,EAAImtH,aAAaktf,UAAUr6mB,EAAIkhD,KAAO,KAAjS,CAAuS,oBAAqBlhD,EAAI65mB,YAAc75mB,EAAI65mB,YAAYz1lB,GAAK,QAClW7jB,OAAQ,CAAE+5mB,cAAe,gBAAiBx9lB,IAAK,MAAOokC,IAAK,MAAOonjB,WAAY,CAAC,sBAAuB,eAAiBxxlB,SAAU,CAAC,sBAAuBpW,SAAU,CAAC,KAA0B,CAC3L84mB,GACAE,GACA,CAAE/4mB,QAAS,IAA0BC,YAAa64mB,KAClD,Q,uBAsENc,E,sDAENA,EAAwB57mB,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAK27mB,IAC9FA,EAAwB17mB,UAAO,KAAyB,CAAEC,KAAMy7mB,EAAyBx7mB,UAAW,CAAC,CAAC,GAAI,0BAA2B,O,uBAO/Hy7mB,E,8BACF,WAAY3iW,EAAO3sQ,EAAoBkwL,GAAe,oBAClDh9L,KAAKy5Q,MAAQA,EACbz5Q,KAAK8M,mBAAqBA,EAC1B9M,KAAK+6J,cAAgB,IAAa7zI,MAClC,IAAMm1lB,EAAiB1tmB,OAAOquL,GAC9Bh9L,KAAKm2C,SAAYkmkB,GAAqC,IAAnBA,EAAwBA,EAAiB,M,qBAGhF,WACI,YAAuB53mB,IAAnBzE,KAAKmgH,WAA2BngH,KAAKo3mB,WAC9Bp3mB,KAAKo3mB,WAAWpqlB,WAElBhtB,KAAKmgH,W,IAElB,SAAa5+G,GACTvB,KAAKmgH,UAAY,YAAsB5+G,K,yBAE3C,SAAY0D,GACJA,EAAO,YACPjF,KAAKs8mB,uB,yBAGb,WACIt8mB,KAAK+6J,cAAcnlJ,gB,gCAEvB,WACI5V,KAAKs8mB,uB,mBAET,SAAMh0lB,GACEtoB,KAAKo3mB,aAAep3mB,KAAKgtB,WACzBhtB,KAAKo3mB,WAAW/rhB,OAChB/iE,EAAMsH,qB,gCAGd,WAAkB,WACR2slB,EAAyBv8mB,KAAKo3mB,WAAap3mB,KAAKo3mB,WAAWxjc,aAAe,cAC1E4oc,EAAoBx8mB,KAAKo3mB,YAAcp3mB,KAAKo3mB,WAAWqB,gBACzDz4mB,KAAKo3mB,WAAWqB,gBAAgB7kc,aAAe,cAC7C6oc,EAAoBz8mB,KAAKo3mB,WAC3B,YAAMp3mB,KAAKo3mB,WAAWgB,aAAcp4mB,KAAKo3mB,WAAWiB,cACpD,cACJr4mB,KAAK+6J,cAAcnlJ,cACnB5V,KAAK+6J,cAAgB,YAAM/6J,KAAKy5Q,MAAMx0Q,QAASs3mB,EAAwBC,EAAmBC,GAAmBv4mB,UAAU,kBAAM,EAAK4I,mBAAmBkK,qB,UAG7JolmB,EAAoB77mB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK47mB,GAAqB,KAAyBvR,IAAoB,KAAyB,KAA2B,KAAyB,cACrOuR,EAAoBj2mB,UAAO,KAAyB,CAAEzF,KAAM07mB,EAAqBz7mB,UAAW,CAAC,CAAC,0BAA2Be,eAAgB,SAA4CC,EAAIC,EAAKC,GAGtL,IAAIC,EAHuM,EAALH,GACtM,KAAsBE,EAAUs6mB,GAAyB,GAClD,EAALx6mB,GAEF,KAAsBG,EAAK,UAA0BF,EAAI86mB,YAAc56mB,EAAGE,QACzEsW,UAAW,SAAmC3W,EAAIC,GAGnD,IAAIE,EAH+D,EAALH,GAC9D,KAAmB2vG,EAAK,GACjB,EAAL3vG,GAEF,KAAsBG,EAAK,UAA0BF,EAAI+6mB,QAAU76mB,EAAGE,QACrEe,UAAW,CAAC,EAAG,yBAA0BwV,SAAU,EAAGC,aAAc,SAA0C7W,EAAIC,GAAgB,EAALD,GAC9H,KAAkB,QAAS,SAAsDmwB,GAAU,OAAOlwB,EAAIswH,MAAMpgG,KACrG,EAALnwB,IACF,KAAmB,WAAY,KAA/B,CAAqC,oBAAqBC,EAAIw1mB,WAAax1mB,EAAIw1mB,WAAWpxlB,GAAK,MAC/F,KAAmB,+BAAgCpkB,EAAIw1mB,YAAcx1mB,EAAIw1mB,WAAW7vlB,OAApF,CAA4F,aAAc3lB,EAAIw1mB,YAAuC,WAAzBx1mB,EAAIw1mB,WAAWvhjB,MAA3I,CAA+J,WAAYj0D,EAAIw1mB,YAAuC,SAAzBx1mB,EAAIw1mB,WAAWvhjB,SAC3M1zD,OAAQ,CAAEg0C,SAAU,WAAYnpB,SAAU,WAAYoqlB,WAAY,CAAC,MAAO,cAAejxlB,UAAW,CAAC,aAAc,aAAc4C,cAAe,iBAAmBrQ,SAAU,CAAC,uBAAwBpW,SAAU,CAAC,MAA8BuW,mBAAoB44F,EAAKrrG,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,kBAAmB,GAAI,OAAQ,SAAU,EAAG,WAAY,iBAAkB,CAAC,SAAU,IAAK,CAAC,QAAS,qCAAsC,UAAW,YAAa,QAAS,OAAQ,SAAU,OAAQ,OAAQ,eAAgB,YAAa,QAAS,EAAG,QAAS,CAAC,UAAW,YAAa,QAAS,OAAQ,SAAU,OAAQ,OAAQ,eAAgB,YAAa,QAAS,EAAG,sCAAuC,CAAC,IAAK,wIAAyIhG,SAAU,SAAsCqB,EAAIC,GAAgB,EAALD,IACv4B,KAAuB4vG,GACvB,KAAsB,EAAG,SAAU,EAAG,GACtC,KAAkB,EAAGq5f,EAAyC,EAAG,EAAG,MAAO,GAC3E,KAAoB,GACpB,QACO,EAALjpmB,IACF,KAAkB,WAAYC,EAAIorB,SAAlC,CAA4C,gBAAiBprB,EAAImnB,eACjE,KAAmB,gBAAiBnnB,EAAIw1mB,WAAa,SAAW,KAAhE,CAAsE,aAAcx1mB,EAAIukB,WAAavkB,EAAI63Q,MAAMsxV,kBAA/G,CAAkI,WAAYnpmB,EAAIorB,UAAY,EAAIprB,EAAIu0C,UACtK,KAAiB,GACjB,KAAkB,QAASv0C,EAAI86mB,eAC9Bn2mB,WAAY,CAAC,IAAkB,KAAcuS,OAAQ,CAAC,szBAAuzBtS,cAAe,EAAGwiB,gBAAiB,I,KAwEn5B4zlB,GAA8B,IAAI,IAAe,+B,kBAIjDC,E,YACF,WAAYC,EAAap6mB,EAAY4vK,EAA2BzsI,EAAW0sI,EAAaC,EAAkBmgc,EAAa4I,GAAW,kCAC9H,YAAM74mB,EAAYiwmB,EAAa4I,KAC1BuB,YAAcA,EACnB,EAAKxqc,0BAA4BA,EACjC,EAAKzsI,UAAYA,EACjB,EAAK0sI,YAAcA,EACnB,EAAKC,iBAAmBA,EANsG,E,6DAQlI,WAOI,IAAMC,EAAYzyK,KAAK6lC,UAAU3zB,IAAI,IAAW,KAAM,IAAY++iB,MAC9Dx+Y,IACAzyK,KAAKyyK,UAAYA,K,uBAGzB,WACQzyK,KAAKyyK,WAILzyK,KAAKq0K,qB,qBAIb,WACI,OAAuD,IAAhDr0K,KAAK+M,YAAYnK,cAAcrB,MAAM4C,S,6BAGhD,WACI,OAAOnE,KAAK+M,YAAYnK,cAAc+nJ,c,mBAG1C,WACI3qJ,KAAK+M,YAAYnK,cAAcksB,U,sBAGnC,SAASvtB,GACL,wBAAeA,IACfvB,KAAK88mB,YAAYC,4B,wBAGrB,WACI/8mB,KAAK88mB,YAAYE,oB,yBAGrB,WACI,OAAOh9mB,KAAK88mB,YAAYp+lB,M,yBAG5B,WACI,OAAO1e,KAAK88mB,YAAYh6jB,M,4BAG5B,WACI,OAAO9iD,KAAK88mB,YAAY5S,a,6BAE5B,WACI,OAAOlqmB,KAAK88mB,YAAYG,iB,sCAE5B,SAAyB,GAAU,IAAR12lB,EAAQ,EAARA,OACvB,OAAOA,IAAWvmB,KAAK88mB,YAAYI,aAAe32lB,IAAWvmB,KAAK88mB,YAAYK,Y,0CAElF,SAA6B57mB,GACzB,4CAAmCA,IACnC,IAAM67mB,EAAYp9mB,OAASA,KAAK88mB,YAAYI,YAAcl9mB,KAAK88mB,YAAYK,UACvEn9mB,KAAK88mB,YAAYI,YACrBE,SAAoDA,EAASrD,yB,CAxE7BF,I,OA2ExCgD,EAA0Bt8mB,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAKq8mB,GAA2B,KAAyBD,IAA8B,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAkB,KAAyB,IAAgB,GAAI,KAAyB,IAA4B,GAAI,KAAyB,IAAoB,GAAI,KAAyB,IAAkB,KAClgBC,EAA0Bp8mB,UAAO,KAAyB,CAAEC,KAAMm8mB,EAA2Bv6mB,SAAU,CAAC,Q,KA4BlG+6mB,GAEN,YAAgBR,I,kBAEVS,E,YACF,WAAYz3hB,EAAYnjF,EAAY66mB,EAA0Bp+lB,EAAUq+lB,EAAYC,EAAiB9K,EAAa4I,GAAW,kCAIzH,YAAM11hB,EAAYnjF,EAAY66mB,EAA0Bp+lB,EAAUq+lB,EAAYC,EAAiB9K,EAAa4I,KAEvGmC,gBAAkB,SAAClve,GACpB,IAAMrlI,EAAQ,EAAK4lH,aAAaw/e,mBAAmB,EAAKx/e,aAAay/e,YAAYhge,EAAQjtI,QACnF6H,EAAM,EAAKwmH,OAAS,EAAKA,OAAOlwD,UAAUt2D,IAAM,KACtD,OAASD,IAAUC,GACf,EAAK2lH,aAAagvE,YAAY50L,EAAOC,IAAQ,EAC7C,KAAO,CAAE,oBAAuB,CAAE,IAAOA,EAAK,OAAUD,KAEhE,EAAK42I,WAAa,IAAWmuL,QAAX,sDAA+C,EAAKwvS,mBAbmD,E,6DAe7H,WAOI,6B,uBAEJ,WAOI,8B,gCAEJ,SAAmB3B,GACf,OAAOA,EAAW5ymB,Q,sCAEtB,SAAyB4G,GACrB,IAAIpF,EACJ,SAAK,EAAD,oCAAC,CAAD,CAAgCoF,OAII,QAA1BpF,EAAKoF,EAAOupT,gBAA6B,IAAP3uT,OAAgB,EAASA,EAAGxB,OACnE4G,EAAO2vD,UAAUv2D,QACZnJ,KAAK+uH,aAAagvE,YAAYhuL,EAAOupT,SAASnwT,MAAO4G,EAAO2vD,UAAUv2D,QAFG4G,EAAO2vD,UAAUv2D,U,iCAK5G,SAAoB5H,GAChB,GAAIvB,KAAK4vH,OAAQ,CACb,IAAMx0E,EAAQ,IAAI6xjB,GAAU1rmB,EAAOvB,KAAK4vH,OAAOlwD,UAAUt2D,KACzDpJ,KAAK4vH,OAAO09e,gBAAgBlyjB,EAAOp7C,S,0BAG3C,SAAauB,GACT,4BAAmBA,IAEnBvB,KAAK88mB,YAAYC,4B,4BAGrB,WACI,IAAM1xmB,EAAUrL,KAAK+M,YAAYnK,cAC3BrB,EAAQ8J,EAAQ9J,MACtB,OAAOA,EAAM4C,OAAS,EAAI5C,EAAQ8J,EAAQs/I,gB,CA/DvB0yd,I,OAkE3BC,EAAa/8mB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK88mB,GAAc,KAAyBV,IAA8B,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAkB,KAAyB,IAAgB,GAAI,KAAyB,IAA4B,GAAI,KAAyB,IAAoB,GAAI,KAAyB,IAAkB,KAC3dU,EAAa78mB,UAAO,KAAyB,CAAEC,KAAM48mB,EAAc38mB,UAAW,CAAC,CAAC,QAAS,eAAgB,KAAMoC,UAAW,CAAC,OAAQ,OAAQ,EAAG,iBAAkB,8BAA+BwV,SAAU,EAAGC,aAAc,SAAmC7W,EAAIC,GAAgB,EAALD,GACpQ,KAAkB,QAAS,SAA+CmwB,GAAU,OAAOlwB,EAAIq1K,SAASnlJ,EAAOtF,OAAOjrB,QAAtH,CAAiI,SAAU,WAAoD,OAAOK,EAAI+oB,aAA1M,CAA0N,UAAW,SAAiDmH,GAAU,OAAOlwB,EAAIo6mB,WAAWlqlB,IAAtT,CAAkU,OAAQ,WAAkD,OAAOlwB,EAAI8uK,YAChY,EAAL/uK,IACF,KAAsB,WAAYC,EAAIorB,UACtC,KAAmB,KAAMprB,EAAIk7mB,YAAY92lB,GAAzC,CAA6C,gBAAiBpkB,EAAIk7mB,YAAYa,YAAc,SAAW,KAAvG,CAA6G,aAA6C,MAA/B/7mB,EAAIk7mB,YAAYa,YAAsB,KAAO/7mB,EAAIk7mB,YAAYa,YAAYp2lB,SAAW3lB,EAAIk7mB,YAAYa,YAAY33lB,IAAM,KAAjP,CAAuP,MAAOpkB,EAAIg2mB,cAAgBh2mB,EAAImtH,aAAaktf,UAAUr6mB,EAAIg2mB,eAAiB,KAAlU,CAAwU,MAAOh2mB,EAAIi2mB,cAAgBj2mB,EAAImtH,aAAaktf,UAAUr6mB,EAAIi2mB,eAAiB,QAClZ11mB,OAAQ,CAAEk0K,kBAAmB,qBAAuBl0J,QAAS,CAAE23lB,WAAY,aAAcr6a,UAAW,aAAen9L,SAAU,CAAC,KAA0B,CACrJ,CAAEC,QAAS,IAAmBC,YAAa86mB,EAAc5zlB,OAAO,GAChE,CAAEnnB,QAAS,IAAeC,YAAa86mB,EAAc5zlB,OAAO,KAC5D,Q,uBAsDNk0lB,E,YACF,WAAY/3hB,EAAYnjF,EAAY66mB,EAA0Bp+lB,EAAUq+lB,EAAYC,EAAiB9K,EAAa4I,GAAW,kCAIzH,YAAM11hB,EAAYnjF,EAAY66mB,EAA0Bp+lB,EAAUq+lB,EAAYC,EAAiB9K,EAAa4I,KAEvGsC,cAAgB,SAACrve,GAClB,IAAMplI,EAAM,EAAK2lH,aAAaw/e,mBAAmB,EAAKx/e,aAAay/e,YAAYhge,EAAQjtI,QACjF4H,EAAQ,EAAKymH,OAAS,EAAKA,OAAOlwD,UAAUv2D,MAAQ,KAC1D,OAASC,IAAQD,GACb,EAAK4lH,aAAagvE,YAAY30L,EAAKD,IAAU,EAC7C,KAAO,CAAE,kBAAqB,CAAE,MAASA,EAAO,OAAUC,KAElE,EAAK22I,WAAa,IAAWmuL,QAAX,sDAA+C,EAAK2vS,iBAbmD,E,6DAe7H,WAOI,6B,uBAEJ,WAOI,8B,gCAEJ,SAAmB9B,GACf,OAAOA,EAAW3ymB,M,sCAEtB,SAAyB2G,GACrB,IAAIpF,EACJ,SAAK,EAAD,oCAAC,CAAD,CAAgCoF,OAII,QAA1BpF,EAAKoF,EAAOupT,gBAA6B,IAAP3uT,OAAgB,EAASA,EAAGvB,KACnE2G,EAAO2vD,UAAUt2D,MACZpJ,KAAK+uH,aAAagvE,YAAYhuL,EAAOupT,SAASlwT,IAAK2G,EAAO2vD,UAAUt2D,MAFG2G,EAAO2vD,UAAUt2D,Q,iCAK1G,SAAoB7H,GAChB,GAAIvB,KAAK4vH,OAAQ,CACb,IAAMx0E,EAAQ,IAAI6xjB,GAAUjtmB,KAAK4vH,OAAOlwD,UAAUv2D,MAAO5H,GACzDvB,KAAK4vH,OAAO09e,gBAAgBlyjB,EAAOp7C,S,wBAG3C,SAAWsoB,GAEHA,EAAM2E,UAAY,KAAcjtB,KAAK+M,YAAYnK,cAAcrB,OAC/DvB,KAAK88mB,YAAYI,YAAYpulB,QAEjC,0BAAiBxG,Q,CA3DA+0lB,I,OA8DzBO,EAAWr9mB,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKo9mB,GAAY,KAAyBhB,IAA8B,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAkB,KAAyB,IAAgB,GAAI,KAAyB,IAA4B,GAAI,KAAyB,IAAoB,GAAI,KAAyB,IAAkB,KACrdgB,EAAWn9mB,UAAO,KAAyB,CAAEC,KAAMk9mB,EAAYj9mB,UAAW,CAAC,CAAC,QAAS,aAAc,KAAMoC,UAAW,CAAC,OAAQ,OAAQ,EAAG,eAAgB,8BAA+BwV,SAAU,EAAGC,aAAc,SAAiC7W,EAAIC,GAAgB,EAALD,GAC1P,KAAkB,QAAS,SAA6CmwB,GAAU,OAAOlwB,EAAIq1K,SAASnlJ,EAAOtF,OAAOjrB,QAApH,CAA+H,SAAU,WAAkD,OAAOK,EAAI+oB,aAAtM,CAAsN,UAAW,SAA+CmH,GAAU,OAAOlwB,EAAIo6mB,WAAWlqlB,IAAhT,CAA4T,OAAQ,WAAgD,OAAOlwB,EAAI8uK,YACxX,EAAL/uK,IACF,KAAsB,WAAYC,EAAIorB,UACtC,KAAmB,gBAAiBprB,EAAIk7mB,YAAYa,YAAc,SAAW,KAA7E,CAAmF,aAA6C,MAA/B/7mB,EAAIk7mB,YAAYa,YAAsB,KAAO/7mB,EAAIk7mB,YAAYa,YAAYp2lB,SAAW3lB,EAAIk7mB,YAAYa,YAAY33lB,IAAM,KAAvN,CAA6N,MAAOpkB,EAAIg2mB,cAAgBh2mB,EAAImtH,aAAaktf,UAAUr6mB,EAAIg2mB,eAAiB,KAAxS,CAA8S,MAAOh2mB,EAAIi2mB,cAAgBj2mB,EAAImtH,aAAaktf,UAAUr6mB,EAAIi2mB,eAAiB,QACxX11mB,OAAQ,CAAEk0K,kBAAmB,qBAAuBl0J,QAAS,CAAE23lB,WAAY,aAAcr6a,UAAW,aAAen9L,SAAU,CAAC,KAA0B,CACrJ,CAAEC,QAAS,IAAmBC,YAAao7mB,EAAYl0lB,OAAO,GAC9D,CAAEnnB,QAAS,IAAeC,YAAao7mB,EAAYl0lB,OAAO,KAC1D,Q,KA4DRkoF,GAAe,E,kBACbksgB,E,8BACF,WAAYhxmB,EAAoBC,EAAayhI,EAASzf,EAAc/kG,GAAU,oBAC1EhqB,KAAK8M,mBAAqBA,EAC1B9M,KAAK+M,YAAcA,EACnB/M,KAAK+uH,aAAeA,EACpB/uH,KAAKgqB,WAAaA,EAClBhqB,KAAKw7mB,oBAAsB,IAAat0lB,MAExClnB,KAAKgmB,GAAL,+BAAkC4rF,MAElC5xG,KAAK60G,SAAU,EAEf70G,KAAK6yK,YAAc,uBACnB7yK,KAAKi9mB,gBAAiB,EAEtBj9mB,KAAK+9mB,iBAAmB,KAExB/9mB,KAAK6hD,UAAY,SAEjB7hD,KAAKoqmB,gBAAkB,KAEvBpqmB,KAAKqqmB,cAAgB,KAErBrqmB,KAAK4zK,aAAe,IAAI,KAMpB5pJ,aAA+C,EAASA,EAAWjd,YAAYnK,cAAcD,UAAUiqB,SAAS,wBAChH7f,EAAYnK,cAAcD,UAAUE,IAAI,yBAG5C7C,KAAKyyK,UAAYjkC,G,kBAGrB,WACI,OAAOxuI,KAAK4vH,OAAS5vH,KAAK4vH,OAAOlwD,UAAY,O,4BAGjD,WACI,OAAO1/D,KAAK60G,UAAY70G,KAAKwzK,Q,uBAOjC,WACI,IAAI7oK,EAAIC,EACFzB,GAAqC,QAA3BwB,EAAK3K,KAAKk9mB,mBAAgC,IAAPvymB,OAAgB,EAASA,EAAGqzmB,oBAAsB,GAC/F50mB,GAAiC,QAAzBwB,EAAK5K,KAAKm9mB,iBAA8B,IAAPvymB,OAAgB,EAASA,EAAGozmB,oBAAsB,GACjG,OAAQ70mB,GAASC,EAAV,UAAoBD,EAApB,YAA6BnJ,KAAK6hD,UAAlC,YAA+Cz4C,GAAQ,K,uBAGlE,WAAoB,OAAOpJ,KAAKi+mB,c,IAChC,SAAgBN,GAAW,WACnBA,IACA39mB,KAAK4vH,OAAS+tf,EAAY/mc,cAAc52K,MACxCA,KAAKi+mB,aAAeN,EACpB39mB,KAAKw7mB,oBAAoB5lmB,cACzB5V,KAAKw7mB,oBAAsBmC,EAAYtF,aAAan0mB,UAAU,WAC1D,IAAIyG,EAAIC,EACoB,QAA3BD,EAAK,EAAKuymB,mBAAgC,IAAPvymB,GAAyBA,EAAGigB,aACtC,QAAzBhgB,EAAK,EAAKuymB,iBAA8B,IAAPvymB,GAAyBA,EAAGggB,eAElE5qB,KAAK07mB,eAAe17mB,KAAK4vH,W,oBAIjC,WAAiB,QAAS5vH,KAAKsyG,W,IAC/B,SAAa/wG,GACTvB,KAAKsyG,UAAY,YAAsB/wG,K,sBAG3C,WAAmB,OAAOvB,KAAK67mB,a,IAC/B,SAAet6mB,GACX,IAAM4H,EAAQnJ,KAAKk9mB,YACb9zmB,EAAMpJ,KAAKm9mB,UACXe,EAAmB/0mB,GAASA,EAAMoxmB,eAAepxmB,EAAM5H,OACvD48mB,EAAiB/0mB,GAAOA,EAAImxmB,eAAepxmB,EAAM5H,OACvDvB,KAAK67mB,YAAct6mB,EACf4H,GAASA,EAAMoxmB,eAAepxmB,EAAM5H,SAAW28mB,GAC/C/0mB,EAAM4wmB,qBAEN3wmB,GAAOA,EAAImxmB,eAAenxmB,EAAI7H,SAAW48mB,GACzC/0mB,EAAI2wmB,uB,eAIZ,WAAY,OAAO/5mB,KAAK27mB,M,IACxB,SAAQp6mB,GACJ,IAAM2rY,EAAaltY,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,IACjFvB,KAAK+uH,aAAaqnf,SAASlpO,EAAYltY,KAAK27mB,QAC7C37mB,KAAK27mB,KAAOzuO,EACZltY,KAAKo+mB,iB,eAIb,WAAY,OAAOp+mB,KAAK47mB,M,IACxB,SAAQr6mB,GACJ,IAAM2rY,EAAaltY,KAAK+uH,aAAaw/e,mBAAmBvumB,KAAK+uH,aAAay/e,YAAYjtmB,IACjFvB,KAAK+uH,aAAaqnf,SAASlpO,EAAYltY,KAAK47mB,QAC7C57mB,KAAK47mB,KAAO1uO,EACZltY,KAAKo+mB,iB,oBAIb,WACI,OAAQp+mB,KAAKk9mB,aAAel9mB,KAAKm9mB,UAC5Bn9mB,KAAKk9mB,YAAYlwlB,UAAYhtB,KAAKm9mB,UAAUnwlB,SAC7ChtB,KAAKi9mB,gB,IAEb,SAAa17mB,GACT,IAAM2wI,EAAW,YAAsB3wI,GACnC2wI,IAAalyI,KAAKi9mB,iBAClBj9mB,KAAKi9mB,eAAiB/qe,EACtBlyI,KAAK4zK,aAAa/vK,UAAKY,M,sBAI/B,WACI,SAAIzE,KAAKk9mB,cAAel9mB,KAAKm9mB,aAClBn9mB,KAAKk9mB,YAAY9mc,YAAcp2K,KAAKm9mB,UAAU/mc,c,iBAK7D,WACI,IAAMioc,IAAar+mB,KAAKk9mB,aAAcl9mB,KAAKk9mB,YAAY98kB,UACjDk+kB,IAAWt+mB,KAAKm9mB,WAAYn9mB,KAAKm9mB,UAAU/8kB,UACjD,OAAOi+kB,GAAcC,I,+BAMzB,SAAkBp/d,GACdl/I,KAAK+9mB,iBAAmB7+d,EAAI/6I,OAAS+6I,EAAIlvG,KAAK,KAAO,O,8BAMzD,WACShwC,KAAK60G,SAAY70G,KAAKgtB,WAClBhtB,KAAK4vH,QAAW5vH,KAAK4vH,OAAOlwD,UAAUv2D,MAIvCnJ,KAAKm9mB,UAAUrulB,QAHf9uB,KAAKk9mB,YAAYpulB,W,gCAO7B,WAAkB,WASV9uB,KAAK4vH,QACL5vH,KAAK07mB,eAAe17mB,KAAK4vH,QAI7B,YAAM5vH,KAAKk9mB,YAAYtpc,aAAc5zK,KAAKm9mB,UAAUvpc,cAAc1vK,UAAU,WACxE,EAAK0vK,aAAa/vK,UAAKY,O,yBAG/B,SAAYQ,GACJg2mB,GAAsBh2mB,EAASjF,KAAK+uH,eACpC/uH,KAAK4zK,aAAa/vK,UAAKY,K,yBAG/B,WACIzE,KAAKw7mB,oBAAoB5lmB,cACzB5V,KAAK4zK,aAAa9vK,a,2BAGtB,WACI,OAAO9D,KAAKuB,MAAQvB,KAAKuB,MAAM4H,MAAQ,O,6BAG3C,WACI,OAAOnJ,KAAKgqB,WAAahqB,KAAKgqB,WAAW6rC,WAAQpxD,I,uCAGrD,WACI,OAAOzE,KAAKgqB,WAAahqB,KAAKgqB,WAAW8G,4BAA8B9wB,KAAK+M,c,kCAGhF,WACI,OAAO/M,KAAKk9mB,YAAcl9mB,KAAKk9mB,YAAYqB,iBAAmB,K,qCAGlE,WACI,QAAOv+mB,KAAKk9mB,cAAel9mB,KAAKk9mB,YAAY98kB,Y,qCAGhD,WACIpgC,KAAK4zK,aAAa/vK,UAAKY,GACvBzE,KAAK8M,mBAAmBkK,iB,6BAG5B,WACQhX,KAAKi+mB,cACLj+mB,KAAKi+mB,aAAa5yhB,S,kCAI1B,WACI,QAASrrF,KAAKgqB,YAAehqB,KAAKgqB,WAAWyF,eACxCzvB,KAAKgqB,WAAWw0lB,sBAAyBx+mB,KAAKwzK,Q,gCAGvD,WACI,IAAM/mJ,EAAYzsB,KAAKgqB,WACvB,OAAOyC,GAAaA,EAAUgylB,oBAAsBhylB,EAAU03K,SAAW,O,0BAG7E,SAAarxF,GACT9yG,KAAK60G,QAAqB,OAAX/B,EACf9yG,KAAK4zK,aAAa/vK,S,yBAGtB,WACQ7D,KAAKk9mB,aACLl9mB,KAAKk9mB,YAAYnD,qBAEjB/5mB,KAAKm9mB,WACLn9mB,KAAKm9mB,UAAUpD,uB,4BAIvB,SAAe9/gB,GACPj6F,KAAKk9mB,aACLl9mB,KAAKk9mB,YAAYxB,eAAezhhB,GAEhCj6F,KAAKm9mB,WACLn9mB,KAAKm9mB,UAAUzB,eAAezhhB,O,UAI1C6jhB,EAAkBv9mB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKs9mB,GAAmB,KAAyB,KAA2B,KAAyB,KAAoB,KAAyB,IAA0B,IAAK,KAAyB,IAAoB,GAAI,KAAyB,IAAgB,KACxVA,EAAkB33mB,UAAO,KAAyB,CAAEzF,KAAMo9mB,EAAmBn9mB,UAAW,CAAC,CAAC,yBAA0Be,eAAgB,SAA0CC,EAAIC,EAAKC,GAI/K,IAAIC,EAJgM,EAALH,IAC/L,KAAsBE,EAAUy7mB,GAAc,GAC9C,KAAsBz7mB,EAAU+7mB,GAAY,IACrC,EAALj8mB,IAEF,KAAsBG,EAAK,UAA0BF,EAAIs7mB,YAAcp7mB,EAAGE,OAC1E,KAAsBF,EAAK,UAA0BF,EAAIu7mB,UAAYr7mB,EAAGE,SACvEe,UAAW,CAAC,OAAQ,QAAS,EAAG,wBAAyBwV,SAAU,EAAGC,aAAc,SAAwC7W,EAAIC,GAAgB,EAALD,IAC5I,KAAmB,KAAM,KAAzB,CAA+B,kBAAmBC,EAAI88mB,qBAAtD,CAA4E,mBAAoB98mB,EAAIm8mB,iBAApG,CAAsH,oBAAqBn8mB,EAAI+7mB,YAAc/7mB,EAAI+7mB,YAAY33lB,GAAK,MAClL,KAAmB,yCAA0CpkB,EAAI+8mB,0BAAjE,CAA4F,gCAAiC/8mB,EAAIqxG,YAChI9wG,OAAQ,CAAE0/C,UAAW,YAAauojB,gBAAiB,kBAAmBC,cAAe,gBAAiBsT,YAAa,cAAe1qgB,SAAU,WAAYi3f,WAAY,aAAcxrlB,IAAK,MAAOokC,IAAK,MAAO91B,SAAU,YAActU,SAAU,CAAC,qBAAsBpW,SAAU,CAAC,KAA0B,CACrS,CAAEC,QAAS,IAAqBC,YAAas7mB,GAC7C,CAAEv7mB,QAASq6mB,GAA6Bp6mB,YAAas7mB,KACrD,MAA8BjlmB,mBAAoBq2K,EAAK9oL,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,yBAA0B,GAAI,EAAG,iCAAkC,EAAG,kBAAmB,CAAC,EAAG,sCAAuC,CAAC,cAAe,OAAQ,EAAG,+BAAgC,CAAC,EAAG,kCAAmC,CAAC,EAAG,qCAAsChG,SAAU,SAAoCqB,EAAIC,GAAgB,EAALD,IACra,KAAuBstL,GACvB,KAAsB,EAAG,MAAO,GAChC,KAAkB,iBAAkB,SAAkEn9J,GAAU,OAAOlwB,EAAIg9mB,aAAa9slB,KACxI,KAAsB,EAAG,MAAO,GAChC,KAAoB,GACpB,KAAsB,EAAG,OAAQ,GACjC,KAAc,GACd,OACA,OACA,KAAsB,EAAG,OAAQ,GACjC,KAAc,GACd,OACA,KAAsB,EAAG,MAAO,GAChC,KAAoB,EAAG,GACvB,OACA,QACO,EAALnwB,IACF,KAAiB,GACjB,KAAyBC,EAAIi9mB,wBAC7B,KAAiB,GACjB,KAAmB,wCAAyCj9mB,EAAIk9mB,wBAChE,KAAiB,GACjB,KAAyBl9mB,EAAIigD,aAC5Bt7C,WAAY,CAAC,KAAyBuS,OAAQ,CAAC,mhGAAohGtS,cAAe,EAAGwiB,gBAAiB,I,uBA+FzmG+1lB,E,kJACF,SAAsBjrlB,GAClB,qCAA4BA,IAC5B,IAAM0qB,EAAQx+C,KAAKy4mB,gBACfj6jB,IACA1qB,EAASs2kB,gBAAkB5rjB,EAAM4rjB,gBACjCt2kB,EAASu2kB,cAAgB7rjB,EAAM6rjB,mB,CANV4N,I,OAUjC8G,EAAmBx+mB,UAAO,SAAoCC,GAAK,OAAOw+mB,GAAgCx+mB,GAAKu+mB,IAC/GA,EAAmB54mB,UAAO,KAAyB,CAAEzF,KAAMq+mB,EAAoBp+mB,UAAW,CAAC,CAAC,0BAA2B+X,SAAU,CAAC,sBAAuBpW,SAAU,CAAC,KAA0B,CAClLmrmB,GACAG,GACA,CAAErrmB,QAAS01mB,GAAmBz1mB,YAAau8mB,KAC3C,MAAoC34mB,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAqCqB,EAAIC,KAAU4E,cAAe,EAAGwiB,gBAAiB,I,KAC7Jg2lB,GAAgD,KAA6BD,I,kBAsI7EE,E,sDAENA,EAAoB1+mB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKy+mB,IACtFA,EAAoB/lmB,UAAO,KAAwB,CAAExY,KAAMu+mB,IAC3DA,EAAoB9lmB,UAAO,KAAwB,CAAEgZ,UAAW,CACxD04kB,GACA8L,IACDv9lB,QAAS,CAAC,CACL,IACA,IACA,IACA,IACA,IACA,IACA,KACD,O,gNCv6IL8lmB,EAAO,GACP,SAAUxhmB,IAA4B,2BAAXmuB,EAAW,yBAAXA,EAAW,gBACxC,IAAIs5F,OAAiB1gI,EACjBqnI,OAAYrnI,EAUhB,OATI,YAAYonC,EAAYA,EAAY1nC,OAAS,MAC7C2nI,EAAYjgG,EAAY5M,OAEuB,mBAAxC4M,EAAYA,EAAY1nC,OAAS,KACxCghI,EAAiBt5F,EAAY5M,OAEN,IAAvB4M,EAAY1nC,QAAgB,YAAQ0nC,EAAY,MAChDA,EAAcA,EAAY,IAEvB,YAAUA,EAAaigG,GAAWzvG,KAAK,IAAI8ilB,EAAsBh6e,IAErE,IAAMg6e,EAAb,8BACI,WAAYh6e,GAAc,oBACtBnlI,KAAKmlI,eAAiBA,GAF9B,mBAII,SAAK5oG,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIk7mB,EAAwB7ilB,EAAYv8B,KAAKmlI,qBAL7E,GAQai6e,EAAb,YACI,WAAY3ilB,EAAa0oG,GAAc,M,MAAA,2B,EACnC,K,EAAA,E,EAAA,CAAM1oG,G,kBAAN,E,iGACK0oG,eAAiBA,EACtB,EAAKrpH,OAAS,EACd,EAAKhI,OAAS,GACd,EAAK+3B,YAAc,GALgB,EAD3C,0DAQI,SAAMC,GACF9rC,KAAK8T,OAAOlQ,KAAKs7mB,GACjBl/mB,KAAK6rC,YAAYjoC,KAAKkoC,KAV9B,uBAYI,WACI,IAAMD,EAAc7rC,KAAK6rC,YACnByL,EAAMzL,EAAY1nC,OACxB,GAAY,IAARmzC,EACAt3C,KAAKy8B,YAAY34B,eAEhB,CACD9D,KAAK8b,OAASw7B,EACdt3C,KAAKq/mB,UAAY/nkB,EACjB,IAAK,IAAIzvC,EAAI,EAAGA,EAAIyvC,EAAKzvC,IAAK,CAC1B,IAAMikC,EAAaD,EAAYhkC,GAC/B7H,KAAK6C,IAAI,YAAkB7C,KAAM8rC,OAAYrnC,EAAWoD,QAvBxE,4BA2BI,SAAe8hK,GACgB,IAAtB3pK,KAAK8b,QAAU,IAChB9b,KAAKy8B,YAAY34B,aA7B7B,wBAgCI,SAAWowG,EAAaC,EAAYC,GAChC,IAAMtgG,EAAS9T,KAAK8T,OAEdurmB,EAAar/mB,KAAKq/mB,UADTvrmB,EAAOsgG,KAGL8qgB,IAASl/mB,KAAKq/mB,UAAYr/mB,KAAKq/mB,UAD1C,EAENvrmB,EAAOsgG,GAAcD,EACH,IAAdkrgB,IACIr/mB,KAAKmlI,eACLnlI,KAAKs/mB,mBAAmBxrmB,GAGxB9T,KAAKy8B,YAAY54B,KAAKiQ,EAAOtK,YA5C7C,gCAgDI,SAAmBsK,GACf,IAAI8oB,EACJ,IACIA,EAAS58B,KAAKmlI,eAAextF,MAAM33C,KAAM8T,GAE7C,MAAO6oB,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAG3B38B,KAAKy8B,YAAY54B,KAAK+4B,OAzD9B,CAA6C,M,sBCnBpC,SAAUva,GAAU,aAWhBA,EAAOM,aAAa,KAAM,CAC/B48lB,mBACI,wnBAAqHh9lB,MACjH,KAERi9lB,iBACI,wnBAAqHj9lB,MACjH,KAERK,OAAQ,SAAU68lB,EAAgB18lB,GAC9B,OAAK08lB,EAGiB,iBAAX18lB,GACP,IAAIC,KAAKD,EAAOioC,UAAU,EAAGjoC,EAAO9Z,QAAQ,UAGrCjJ,KAAK0/mB,kBAAkBD,EAAex8lB,SAEtCjjB,KAAK2/mB,oBAAoBF,EAAex8lB,SARxCjjB,KAAK2/mB,qBAWpB98lB,YAAa,kPAAoDN,MAAM,KACvEgB,SAAU,ySAAyDhB,MAC/D,KAEJiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CovB,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,eAAO,eAEjBA,EAAU,eAAO,gBAGhC8tF,KAAM,SAAUnhF,GACZ,MAAyC,YAAjCA,EAAQ,IAAI5hC,cAAc,IAEtC40B,cAAe,+BACf7tB,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV27lB,WAAY,CACRz7lB,QAAS,+CACTC,QAAS,yCACTC,SAAU,eACVC,QAAS,mCACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MAAO,iGACX,QACI,MAAO,yGAGnBttB,SAAU,KAEdN,SAAU,SAAUvH,EAAKkjmB,GACrB,IAtEYrhkB,EAsERrS,EAASnsC,KAAK8/mB,YAAYnjmB,GAC1BqiC,EAAQ6gkB,GAAOA,EAAI7gkB,QAIvB,OA3EYR,EAwEGrS,GAtEM,oBAAbwrI,UAA4Bn5H,aAAiBm5H,UACX,sBAA1Cn7J,OAAOkW,UAAUT,SAASiD,KAAKspB,MAsE3BrS,EAASA,EAAOwL,MAAMkokB,IAEnB1zkB,EAAO3qC,QAAQ,KAAMw9C,EAAQ,IAAO,EAAI,qBAAQ,6BAE3Dv6B,aAAc,CACVC,OAAQ,kBACRC,KAAM,8BACNC,EAAG,oGACHC,GAAI,8EACJ/B,EAAG,oDACHgC,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJhN,EAAG,8CACHiN,GAAI,oCACJG,EAAG,0DACHC,GAAI,oCACJC,EAAG,gEACHC,GAAI,2CAERC,uBAAwB,gBACxBC,QAAS,WACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxGyB/gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAI09lB,EACI,iIAAmGx9lB,MAC/F,KAERy9lB,EACI,+GAAqGz9lB,MACjG,KAERE,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,aACA,QACA,SAER,SAAS06J,EAAOplI,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAASqlI,EAAU13J,EAAQs3I,EAAergJ,GACtC,IAAIigB,EAASlX,EAAS,IACtB,OAAQ/I,GACJ,IAAK,KACD,OAAOigB,GAAUugJ,EAAOz3J,GAAU,UAAY,UAClD,IAAK,IACD,OAAOs3I,EAAgB,SAAW,cACtC,IAAK,KACD,OAAOpgI,GAAUugJ,EAAOz3J,GAAU,SAAW,SACjD,IAAK,IACD,OAAOs3I,EAAgB,UAAY,eACvC,IAAK,KACD,OAAOpgI,GAAUugJ,EAAOz3J,GAAU,UAAY,UAClD,IAAK,KACD,OAAOkX,GAAUugJ,EAAOz3J,GAAU,WAAa,WACnD,IAAK,KACD,OAAOkX,GAAUugJ,EAAOz3J,GAAU,gBAAa,iBACnD,IAAK,KACD,OAAOkX,GAAUugJ,EAAOz3J,GAAU,OAAS,QAI9CrD,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,SAAU68lB,EAAgB18lB,GAC9B,OAAK08lB,EAEM,SAASz8lB,KAAKD,GACdi9lB,EAAiBP,EAAex8lB,SAEhC88lB,EAAiBN,EAAex8lB,SAJhC88lB,GAOfl9lB,YAAa,uDAAkDN,MAAM,KACrEE,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAClBc,SACI,4EAA6DhB,MAAM,KACvEiB,cAAe,gCAA2BjB,MAAM,KAChDkB,YAAa,4BAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,eACTC,SAAU,WACN,OAAQrkB,KAAK8xC,OACT,KAAK,EACD,MAAO,0BAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,2BAEX,KAAK,EACD,MAAO,uBAEX,QACI,MAAO,oBAGnBxtB,QAAS,iBACTC,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACD,MAAO,2CACX,KAAK,EACD,MAAO,4CACX,KAAK,EACD,MAAO,wCACX,QACI,MAAO,gCAGnBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,eACHC,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAG,eACHiN,GAAI,SACJC,EAAG,eACHC,GAAIi4J,EACJh4J,EAAG,eACHC,GAAI+3J,EACJ93J,EAAG,MACHC,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1IyB/gB,CAAQ,EAAQ,U,kCCN1D,4DAEM,SAAUk5K,EAAcx/H,EAAOstF,GACjC,OAAO,IAAI,IAAW,SAAAvvG,GAClB,IAAM01D,EAAM,IAAI,IACZpqF,EAAI,EAWR,OAVAoqF,EAAIpvF,IAAIipI,EAAU1nI,SAAS,WACnByD,IAAM22C,EAAMr6C,QAIhBo4B,EAAW14B,KAAK26C,EAAM32C,MACjB00B,EAAW/U,QACZyqE,EAAIpvF,IAAI7C,KAAKoE,aALbm4B,EAAWz4B,cAQZmuF,M,oNCMf,I,iBA+hBMguhB,E,sDAENA,EAAsB1/mB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAKy/mB,IAC1FA,EAAsB/mmB,UAAO,KAAwB,CAAExY,KAAMu/mB,IAC7DA,EAAsB9mmB,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAiB,KAAkB,O,4BChjB5F,SAAUiJ,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,0WAAwEL,MAC5E,KAEJM,YACI,0WAAwEN,MACpE,KAERgB,SACI,iRAAoEhB,MAChE,KAERiB,cACI,iRAAoEjB,MAChE,KAERkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVutB,cAAe,wGACfmuF,KAAM,SAAUnhF,GACZ,MAAO,qDAAax7B,KAAKw7B,IAE7B7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,qDAEA,sDAGfxtB,SAAU,CACNC,QAAS,+DACTC,QAAS,yDACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,0DACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,wBACNC,EAAG,oDACHC,GAAI,oCACJ/B,EAAG,8CACHgC,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJhN,EAAG,kCACHiN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EACF3tC,QAAQ,mBAAU,SAAU8vC,GACzB,OAAOF,EAAUE,KAEpB9vC,QAAQ,UAAM,MAEvB+vC,WAAY,SAAUpC,GAClB,OAAOA,EACF3tC,QAAQ,MAAO,SAAU8vC,GACtB,OAAOb,EAAUa,KAEpB9vC,QAAQ,KAAM,WAEvBgkB,uBAAwB,gBACxBC,QAAS,WACTE,KAAM,CACFC,IAAK,EACLC,IAAK,MA/GyB/gB,CAAQ,EAAQ,U,8oBCgKtDo7mB,EA9GEC,E,wIAIF,SAAY1tkB,EAAItxC,GACZ,OAAOsxC,EAAGtxC,K,iBAEd,SAAI6zB,GACI7J,OAAO4f,SACP5f,OAAO4f,QAAQ0wC,KAAOtwD,OAAO4f,QAAQ0wC,IAAIzmD,K,sBAGjD,SAASA,GACD7J,OAAO4f,SACP5f,OAAO4f,QAAQ8vG,OAAS1vH,OAAO4f,QAAQ8vG,MAAM7lH,K,yBAGrD,WACQ7J,OAAO4f,SACP5f,OAAO4f,QAAQq1kB,UAAYj1lB,OAAO4f,QAAQq1kB,a,yBAGlD,SAAY3tkB,EAAIwlT,EAAKv3T,GAIjB,OAHA+R,EAAGnnB,iBAAiB2sU,EAAKv3T,GAAU,GAG5B,WACH+R,EAAG9mB,oBAAoBssU,EAAKv3T,GAAU,M,2BAG9C,SAAc+R,EAAIwlT,GACdxlT,EAAGgmT,cAAcR,K,oBAErB,SAAOv0M,GAIH,OAHIA,EAAKhjI,YACLgjI,EAAKhjI,WAAWe,YAAYiiI,GAEzBA,I,sBAEX,SAASjxG,GACL,OAAOA,EAAGlxC,Q,2BAEd,SAAc8vK,EAASuX,GAEnB,OADAA,EAAMA,GAAO5oL,KAAKqgnB,sBACPxomB,cAAcw5J,K,gCAE7B,WACI,OAAO1mI,SAASw4I,eAAeo2Y,mBAAmB,e,gCAEtD,WACI,OAAO5uhB,W,2BAEX,SAAc+4G,GACV,OAAOA,EAAK/7I,WAAasxJ,KAAKrxJ,e,0BAElC,SAAa87I,GACT,OAAOA,aAAgB48d,mB,kCAE3B,SAAqB13b,EAAKp8J,GACtB,MAAe,WAAXA,EACOrB,OAEI,aAAXqB,EACOo8J,EAEI,SAAXp8J,EACOo8J,EAAI9lJ,KAER,O,wBAEX,WACI,OAAO3X,OAAOo1lB,U,yBAElB,WACI,OAAOp1lB,OAAOmP,W,yBAElB,SAAYsuJ,GACR,IAkCcz0I,EAlCRiqB,EAwBLoijB,IACDA,EAAc71kB,SAASv/B,cAAc,SAKlCo1mB,EAAYx3kB,aAAa,QAHjB,KA1BX,OAAe,MAARo1B,EAAe,MAiCRjqB,EAjC4BiqB,EAkCzC8hjB,IACDA,EAAiBv1kB,SAAS9yB,cAAc,MAE5CqomB,EAAerxmB,aAAa,OAAQslC,GACU,MAAtC+rkB,EAAelhc,SAASjvI,OAAO,GAAcmwkB,EAAelhc,SAChE,IAAMkhc,EAAelhc,Y,8BArCzB,WACIwhc,EAAc,O,0BAElB,WACI,OAAOr1lB,OAAO2/F,UAAUC,Y,4BAE5B,WAGI,OAAO5/F,OAAOy7U,aAAez7U,OAAOy7U,YAAY76S,IAAM5gC,OAAOy7U,YAAY76S,OACrE,IAAIrR,MAAOwmE,Y,6BAEnB,WACI,OAAO,I,uBAEX,SAAU//G,GACN,OAAO,YAAkBwpC,SAAS81kB,OAAQt/mB,M,0BA/F9C,WACI,YAAmB,IAAIg/mB,O,aAjC3B,kD,sEAGA,WACI,OAAO,M,CALwB,MAmInCK,EAAc,KAgCZE,EAAgB,IAAI,IAAe,iBAanCC,EAA8B,CAChC,CACIp+mB,QAAS,IACT6mB,WAfR,SAA+Bw3lB,EAAcj2kB,EAAUxrB,GACnD,OAAO,WAGHA,EAASjN,IAAI,KAAuBorlB,YAAYj/kB,KAAK,WACjD,IAAMwimB,EAAM,cACGt2mB,MAAMmoB,UAAUlpB,MAAMmuC,MAAMhN,EAASohE,iBAAT,yBACpC52F,OAAO,SAAAs9B,GAAE,OAAIA,EAAGzJ,aAAa,mBAAqB43kB,IACpDvtmB,QAAQ,SAAAo/B,GAAE,OAAIoukB,EAAIr1mB,OAAOinC,SAQlCtpB,KAAM,CAACu3lB,EAAe,IAAU,KAChCh3lB,OAAO,IAWTo3lB,E,2FAIF,SAAYz0C,GACR,KAAO,sBAA4B,SAAC3nT,GAAgC,IAA1Bu+U,IAA0B,yDAC1DD,EAAc32B,EAAS62B,sBAAsBx+U,EAAMu+U,GACzD,GAAmB,MAAfD,EACA,MAAM,IAAI3ukB,MAAM,2CAEpB,OAAO2ukB,GAEX,KAAO,2BAAiC,kBAAM32B,EAAS00C,uBACvD,KAAO,0BAAgC,kBAAM10C,EAAS20C,sBAgBjD,KAAO,uBACR,KAAO,qBAA2B,IAEtC,KAAO,qBAAyBp9mB,KAlBV,SAACqvB,GACnB,IAAMgulB,EAAgB,KAAO,6BACzB/pmB,EAAQ+pmB,EAAc98mB,OACtB+8mB,GAAU,EACRC,EAAY,SAAUC,GACxBF,EAAUA,GAAWE,EAER,KADblqmB,GAEI+b,EAASiulB,IAGjBD,EAAc5tmB,QAAQ,SAAU2vlB,GAC5BA,EAAYqe,WAAWF,S,mCAQnC,SAAsB90C,EAAU3nT,EAAMu+U,GAClC,GAAY,MAARv+U,EACA,OAAO,KAEX,IAAMlkR,EAAI6rkB,EAASi1C,eAAe58V,GAClC,OAAS,MAALlkR,EACOA,EAEDyimB,EAGN,cAAUse,aAAa78V,GAChB1kR,KAAKkjmB,sBAAsB72B,EAAU3nT,EAAK9lQ,MAAM,GAEpD5e,KAAKkjmB,sBAAsB72B,EAAU3nT,EAAK97O,eAAe,GALrD,Q,mBA1Cf,WACI,aAAqB,IAAIk4kB,O,GAoJ3BU,EAAwB,IAAI,IAAe,uB,iBAO3C3pR,E,8BAIF,WAAYjoS,EAAS9lC,GAAK,+BACtB9pB,KAAK8pB,MAAQA,EACb9pB,KAAKyhnB,mBAAqB,IAAIh0mB,IAC9BmiD,EAAQv8C,QAAQ,SAAAk2H,GAAC,OAAIA,EAAE4qM,QAAU,IACjCn0U,KAAK66N,SAAWjrK,EAAQpmD,QAAQK,W,+BAWpC,SAAiBwB,EAASyqC,EAAWzJ,GAEjC,OADersC,KAAK0hnB,eAAe5rkB,GACrBxqB,iBAAiBjgB,EAASyqC,EAAWzJ,K,oCAWvD,SAAuB7f,EAAQspB,EAAWzJ,GAEtC,OADersC,KAAK0hnB,eAAe5rkB,GACrB6rkB,uBAAuBn1lB,EAAQspB,EAAWzJ,K,qBAK5D,WACI,OAAOrsC,KAAK8pB,Q,4BAGhB,SAAegsB,GACX,IAAMolL,EAASl7N,KAAKyhnB,mBAAmBvvmB,IAAI4jC,GAC3C,GAAIolL,EACA,OAAOA,EAGX,IADA,IAAMtrK,EAAU5vD,KAAK66N,SACZhzN,EAAI,EAAGA,EAAI+nD,EAAQzrD,OAAQ0D,IAAK,CACrC,IAAM,EAAS+nD,EAAQ/nD,GACvB,GAAI,EAAOuhY,SAAStzV,GAEhB,OADA91C,KAAKyhnB,mBAAmBptmB,IAAIyhC,EAAW,GAChC,EAGf,MAAM,IAAIzhB,MAAJ,kDAAqDyhB,Q,UAGnE+hT,EAAat3V,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKq3V,GAAc,KAAgB2pR,GAAwB,KAAgB,OAC9I3pR,EAAajzV,WAAQ,KAA0B,CAAEC,MAAOgzV,EAAc/yV,QAAS+yV,EAAat3V,Y,KAWtFqhnB,E,8BACF,WAAYC,GAAI,oBACZ7hnB,KAAK6hnB,KAAOA,G,qCAEhB,SAAuBx2mB,EAASyqC,EAAWzJ,GACvC,IAAM7f,EAAS,cAAUs1lB,qBAAqB9hnB,KAAK6hnB,KAAMx2mB,GACzD,IAAKmhB,EACD,MAAM,IAAI6H,MAAJ,mCAAsC7H,EAAtC,sBAA0DspB,IAEpE,OAAO91C,KAAKsrB,iBAAiBkB,EAAQspB,EAAWzJ,O,oBAWlD01kB,E,8BACF,iCAEI/hnB,KAAKginB,WAAa,IAAIr0mB,K,wBAE1B,SAAUmL,GAAM,WACNmpmB,EAAY,IAAIt0mB,IACtBmL,EAAOzF,QAAQ,SAAA9H,GACN,EAAKy2mB,WAAW5tmB,IAAI7I,KACrB,EAAKy2mB,WAAWn/mB,IAAI0I,GACpB02mB,EAAUp/mB,IAAI0I,MAGtBvL,KAAKkinB,cAAcD,K,2BAEvB,SAAcA,M,0BACd,WACI,OAAO13mB,MAAMjG,KAAKtE,KAAKginB,gB,UAG/BD,EAAiBxhnB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKuhnB,IAChFA,EAAiBn9mB,WAAQ,KAA0B,CAAEC,MAAOk9mB,EAAkBj9mB,QAASi9mB,EAAiBxhnB,Y,sBAIlG4hnB,E,YACF,WAAYN,GAAI,kCACZ,aACKA,KAAOA,EAEZ,EAAKO,WAAa,IAAI30mB,IACtB,EAAK20mB,WAAW/tmB,IAAIwtmB,EAAKj3kB,KAAM,IALnB,E,qEAOhB,SAAiB9xB,EAAQ8F,EAAMyjmB,GAAU,WACrCvpmB,EAAOzF,QAAQ,SAAC9H,GACZ,IAAM+2mB,EAAU,EAAKT,KAAKhqmB,cAAc,SACxCyqmB,EAAQ9ugB,YAAcjoG,EACtB82mB,EAAWz+mB,KAAKgb,EAAK9G,YAAYwqmB,Q,qBAGzC,SAAQC,GACJ,IAAMF,EAAa,GACnBrinB,KAAKwinB,iBAAiBxinB,KAAKginB,WAAYO,EAAUF,GACjDrinB,KAAKoinB,WAAW/tmB,IAAIkumB,EAAUF,K,wBAElC,SAAWE,GACP,IAAMF,EAAarinB,KAAKoinB,WAAWlwmB,IAAIqwmB,GACnCF,GACAA,EAAWhvmB,QAAQogH,GAEvBzzH,KAAKoinB,WAAW7vmB,OAAOgwmB,K,2BAE3B,SAAcN,GAAS,WACnBjinB,KAAKoinB,WAAW/umB,QAAQ,SAACgvmB,EAAYE,GACjC,EAAKC,iBAAiBP,EAAWM,EAAUF,O,yBAGnD,WACIrinB,KAAKoinB,WAAW/umB,QAAQ,SAAAgvmB,GAAU,OAAIA,EAAWhvmB,QAAQogH,S,CAjC/Bsuf,G,OAoClCI,EAAoB5hnB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK2hnB,GAAqB,KAAgB,OAC3HA,EAAoBv9mB,WAAQ,KAA0B,CAAEC,MAAOs9mB,EAAqBr9mB,QAASq9mB,EAAoB5hnB,Y,KAUjH,SAASkzH,EAAYgvf,GACjB,cAAUj3mB,OAAOi3mB,GAUrB,IAAMC,EAAiB,CACnB,IAAO,6BACP,MAAS,+BACT,MAAS,+BACT,IAAO,uCACP,MAAS,iCAEPC,EAAkB,UAElBC,EAAqB,SACrBC,EAAY,WAAH,OAAcD,GACvBE,EAAe,cAAH,OAAiBF,GAOnC,SAASt4T,EAAc08H,EAAQlua,EAAQ0T,GACnC,IAAK,IAAI3kB,EAAI,EAAGA,EAAIiR,EAAO3U,OAAQ0D,IAAK,CACpC,IAAI0D,EAAQuN,EAAOjR,GACf0C,MAAMyL,QAAQzK,GACd++S,EAAc08H,EAAQz7a,EAAOihB,IAG7BjhB,EAAQA,EAAM/J,QAAQmhnB,EAAiB37L,GACvCx6Z,EAAO5oB,KAAK2H,IAGpB,OAAOihB,EAEX,SAASu2lB,EAAuB79Y,GAK5B,OAAO,SAAC58M,GAKJ,GAAc,iBAAVA,EACA,OAAO48M,GAGkB,IADAA,EAAa58M,KAGtCA,EAAM4E,iBACN5E,EAAMwkZ,aAAc,IAKhC,I,iBACMk2M,E,8BACF,WAAYC,EAAcC,EAAkBxnc,GAAK,oBAC7C17K,KAAKijnB,aAAeA,EACpBjjnB,KAAKkjnB,iBAAmBA,EACxBljnB,KAAK07K,MAAQA,EACb17K,KAAKmjnB,iBAAmB,IAAI11mB,IAC5BzN,KAAKojnB,gBAAkB,IAAIC,EAAoBJ,I,6BAEnD,SAAe53mB,EAAS3K,GACpB,IAAK2K,IAAY3K,EACb,OAAOV,KAAKojnB,gBAEhB,OAAQ1inB,EAAK8F,eACT,KAAK,IAAkBw9iB,SACnB,IAAIzwb,EAAWvzH,KAAKmjnB,iBAAiBjxmB,IAAIxR,EAAKslB,IAM9C,OALKutG,IACDA,EAAW,IAAI+vf,EAAkCtjnB,KAAKijnB,aAAcjjnB,KAAKkjnB,iBAAkBxinB,EAAMV,KAAK07K,OACtG17K,KAAKmjnB,iBAAiB9umB,IAAI3T,EAAKslB,GAAIutG,IAEvCA,EAASgwf,YAAYl4mB,GACdkoH,EAEX,KAAK,EACL,KAAK,IAAkB+he,UAOnB,OAAO,IAAIkuB,EAAkBxjnB,KAAKijnB,aAAcjjnB,KAAKkjnB,iBAAkB73mB,EAAS3K,GACpF,QACI,IAAKV,KAAKmjnB,iBAAiB/umB,IAAI1T,EAAKslB,IAAK,CACrC,IAAMlN,EAASwxS,EAAc5pT,EAAKslB,GAAItlB,EAAKoY,OAAQ,IACnD9Y,KAAKkjnB,iBAAiBO,UAAU3qmB,GAChC9Y,KAAKmjnB,iBAAiB9umB,IAAI3T,EAAKslB,GAAIhmB,KAAKojnB,iBAE5C,OAAOpjnB,KAAKojnB,mB,mBAIxB,c,iBACA,gB,UAEJJ,EAAoBzinB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKwinB,GAAqB,KAAgBnrR,GAAe,KAAgBsqR,GAAsB,KAAgB,OAChMa,EAAoBp+mB,WAAQ,KAA0B,CAAEC,MAAOm+mB,EAAqBl+mB,QAASk+mB,EAAoBzinB,Y,KAY3G8inB,E,8BACF,WAAYJ,GAAY,oBACpBjjnB,KAAKijnB,aAAeA,EACpBjjnB,KAAK8P,KAAO0M,OAAOlX,OAAO,O,sBAE9B,c,2BACA,SAAcnE,EAAM4+Q,GAChB,OAAIA,EAGOp1O,SAASw1S,gBAAgBuiS,EAAe3iW,IAAcA,EAAW5+Q,GAErEwpC,SAAS9yB,cAAc1W,K,2BAElC,SAAcI,GACV,OAAOopC,SAASlqB,cAAclf,K,wBAElC,SAAWA,GACP,OAAOopC,SAASmuF,eAAev3H,K,yBAEnC,SAAYqlC,EAAQs5R,GAChBt5R,EAAO9uB,YAAYooT,K,0BAEvB,SAAat5R,EAAQs5R,EAAUE,GACvBx5R,GACAA,EAAOjmB,aAAau/S,EAAUE,K,yBAGtC,SAAYx5R,EAAQ05R,GACZ15R,GACAA,EAAOnlB,YAAY6+S,K,+BAG3B,SAAkBE,EAAgBC,GAC9B,IAAIhuR,EAA+B,iBAAnB+tR,EAA8B71R,SAASv/B,cAAco1T,GACjEA,EACJ,IAAK/tR,EACD,MAAM,IAAIpe,MAAJ,wBAA2BmsS,EAA3B,iCAKV,OAHKC,IACDhuR,EAAG+gE,YAAc,IAEd/gE,I,wBAEX,SAAWixG,GACP,OAAOA,EAAKhjI,a,yBAEhB,SAAYgjI,GACR,OAAOA,EAAK2hJ,c,0BAEhB,SAAa5yP,EAAItxC,EAAMI,EAAOw+Q,GAC1B,GAAIA,EAAW,CACX5+Q,EAAO4+Q,EAAY,IAAM5+Q,EAGzB,IAAMuinB,EAAehB,EAAe3iW,GAChC2jW,EACAjxkB,EAAGk8gB,eAAe+0D,EAAcvinB,EAAMI,GAGtCkxC,EAAG5jC,aAAa1N,EAAMI,QAI1BkxC,EAAG5jC,aAAa1N,EAAMI,K,6BAG9B,SAAgBkxC,EAAItxC,EAAM4+Q,GACtB,GAAIA,EAAW,CAGX,IAAM2jW,EAAehB,EAAe3iW,GAChC2jW,EACAjxkB,EAAGkxkB,kBAAkBD,EAAcvinB,GAMnCsxC,EAAGhK,gBAAH,UAAsBs3O,EAAtB,YAAmC5+Q,SAIvCsxC,EAAGhK,gBAAgBtnC,K,sBAG3B,SAASsxC,EAAItxC,GACTsxC,EAAG9vC,UAAUE,IAAI1B,K,yBAErB,SAAYsxC,EAAItxC,GACZsxC,EAAG9vC,UAAU6I,OAAOrK,K,sBAExB,SAASsxC,EAAIlnC,EAAOhK,EAAOo/T,GACnBA,GAAS,IAAoBk9Q,SAAW,IAAoBE,WAC5DtriB,EAAGlnC,MAAMolH,YAAYplH,EAAOhK,EAAOo/T,EAAQ,IAAoBo9Q,UAAY,YAAc,IAGzFtriB,EAAGlnC,MAAMA,GAAShK,I,yBAG1B,SAAYkxC,EAAIlnC,EAAOo1T,GACfA,EAAQ,IAAoBk9Q,SAC5BpriB,EAAGlnC,MAAM6rR,eAAe7rR,GAKxBknC,EAAGlnC,MAAMA,GAAS,K,yBAG1B,SAAYknC,EAAItxC,EAAMI,GAElBkxC,EAAGtxC,GAAQI,I,sBAEf,SAASmiJ,EAAMniJ,GACXmiJ,EAAKg7Z,UAAYn9iB,I,oBAErB,SAAOirB,EAAQlE,EAAO2K,GAElB,MAAsB,iBAAXzG,EACAxsB,KAAKijnB,aAAatB,uBAAuBn1lB,EAAQlE,EAAOy6lB,EAAuB9vlB,IAEnFjzB,KAAKijnB,aAAa33lB,iBAAiBkB,EAAQlE,EAAOy6lB,EAAuB9vlB,Q,GAUlFqwlB,E,YACF,WAAYL,EAAcC,EAAkBjkmB,EAAWy8J,GAAK,2BACxD,YAAMunc,KACDhkmB,UAAYA,EACjB,IAAMnG,EAASwxS,EAAc5uI,EAAQ,IAAMz8J,EAAU+G,GAAI/G,EAAUnG,OAAQ,IAHnB,OAIxDoqmB,EAAiBO,UAAU3qmB,GAC3B,EAAK8qmB,YA5OFd,EAAathnB,QAAQmhnB,EA4OgBjnc,EAAQ,IAAMz8J,EAAU+G,IAChE,EAAK69lB,SA1OFhB,EAAUrhnB,QAAQmhnB,EA0Oajnc,EAAQ,IAAMz8J,EAAU+G,IANF,E,gEAQ5D,SAAY3a,GACR,4BAAmBA,EAASrL,KAAK6jnB,SAAU,O,2BAE/C,SAAcj9kB,EAAQzlC,GAClB,IAAMsxC,EAAK,EAAH,yBAAG,CAAH,CAAuB7L,EAAQzlC,IAEvC,OADA,4BAAmBsxC,EAAIzyC,KAAK4jnB,YAAa,KAClCnxkB,M,CAfiC4wkB,GAkB1CG,E,YACF,WAAYP,EAAcC,EAAkBY,EAAQ7kmB,GAAS,2BACzD,YAAMgkmB,KACDC,iBAAmBA,EACxB,EAAKY,OAASA,EACd,EAAK9glB,WAAa8glB,EAAOC,aAAa,CAAEnxlB,KAAM,SAC9C,EAAKswlB,iBAAiBc,QAAQ,EAAKhhlB,YAEnC,IADA,IAAMlqB,EAASwxS,EAAcrrS,EAAU+G,GAAI/G,EAAUnG,OAAQ,IACpDjR,EAAI,EAAGA,EAAIiR,EAAO3U,OAAQ0D,IAAK,CACpC,IAAMy6mB,EAAU33kB,SAAS9yB,cAAc,SACvCyqmB,EAAQ9ugB,YAAc16F,EAAOjR,GAC7B,EAAKm7B,WAAWlrB,YAAYwqmB,GAVyB,S,qEAa7D,SAAiB5+d,GACb,OAAOA,IAAS1jJ,KAAK8jnB,OAAS9jnB,KAAKgjC,WAAa0gH,I,qBAEpD,WACI1jJ,KAAKkjnB,iBAAiBe,WAAWjknB,KAAKgjC,c,yBAE1C,SAAY4D,EAAQs5R,GAChB,kCAAyBlgU,KAAKkknB,iBAAiBt9kB,GAASs5R,M,0BAE5D,SAAat5R,EAAQs5R,EAAUE,GAC3B,mCAA0BpgU,KAAKkknB,iBAAiBt9kB,GAASs5R,EAAUE,M,yBAEvE,SAAYx5R,EAAQ05R,GAChB,kCAAyBtgU,KAAKkknB,iBAAiBt9kB,GAAS05R,M,wBAE5D,SAAW58K,GACP,OAAO1jJ,KAAKkknB,iBAAL,iBAAAlknB,KAAA,IAAuCA,KAAKkknB,iBAAiBxge,U,CA9B5C2/d,G,iBAyC1Bc,E,YACF,WAAYv7b,GAAG,qCACLA,I,6DAIV,SAAS9yI,GACL,OAAO,I,8BAEX,SAAiBzqC,EAASyqC,EAAWzJ,GAAO,WAExC,OADAhhC,EAAQigB,iBAAiBwqB,EAAWzJ,GAAS,GACtC,kBAAM,EAAK1gB,oBAAoBtgB,EAASyqC,EAAWzJ,M,iCAE9D,SAAoB7f,EAAQspB,EAAW7iB,GACnC,OAAOzG,EAAOb,oBAAoBmqB,EAAW7iB,O,CAdvB2ulB,G,OAiB9BuC,EAAgB5jnB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK2jnB,GAAiB,KAAgB,OAC/GA,EAAgBv/mB,WAAQ,KAA0B,CAAEC,MAAOs/mB,EAAiBr/mB,QAASq/mB,EAAgB5jnB,Y,KAiS/F6jnB,EAAgB,CAAC,MAAO,UAAW,OAAQ,SAG3CC,EAAU,CAGZ,KAAM,YACN,KAAM,MACN,OAAQ,SACR,OAAQ,SACR,IAAO,SACP,IAAO,SACP,KAAQ,YACR,MAAS,aACT,GAAM,UACN,KAAQ,YACR,KAAQ,cACR,OAAU,aACV,IAAO,MAKLC,EAAsB,CACxB,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,IAAQ,IACR,OAAQ,WAMNC,EAAuB,CACzB,IALS,SAACj8lB,GAAD,OAAWA,EAAMsvK,QAM1B,QANuC,SAACtvK,GAAD,OAAWA,EAAM6+K,SAOxD,KAPsE,SAAC7+K,GAAD,OAAWA,EAAM8+K,SAQvF,MARqG,SAAC9+K,GAAD,OAAWA,EAAMm/F,W,iBAcpH+8f,E,YAKF,WAAY57b,GAAG,qCACLA,I,6DAOV,SAAS9yI,GACL,OAAoD,MAA7C0ukB,EAAgBC,eAAe3ukB,K,8BAU1C,SAAiBzqC,EAASyqC,EAAWzJ,GACjC,IAAMq4kB,EAAcF,EAAgBC,eAAe3ukB,GAC7C6ukB,EAAiBH,EAAgBI,cAAcF,EAAW,QAAar4kB,EAASrsC,KAAKm0U,QAAQ0wS,WACnG,OAAO7knB,KAAKm0U,QAAQ0wS,UAAUx5lB,kBAAkB,WAC5C,OAAO,cAAUy5lB,YAAYz5mB,EAASq5mB,EAAW,aAAkBC,Q,6BAG3E,SAAsB7ukB,GAClB,IAAMsP,EAAQtP,EAAUl5B,cAAc2F,MAAM,KACtCwimB,EAAe3/jB,EAAMzwC,QAC3B,GAAsB,IAAjBywC,EAAMjhD,QAAoC,YAAjB4gnB,GAA+C,UAAjBA,EACxD,OAAO,KAEX,IAAMpomB,EAAM6nmB,EAAgBQ,cAAc5/jB,EAAMnmB,OAC5CgmlB,EAAU,GASd,GARAb,EAAc/wmB,QAAQ,SAAA6xmB,GAClB,IAAMv7mB,EAAQy7C,EAAMn8C,QAAQi8mB,GACxBv7mB,GAAS,IACTy7C,EAAM7c,OAAO5+B,EAAO,GACpBs7mB,GAAWC,EAAe,OAGlCD,GAAWtomB,EACS,GAAhByoC,EAAMjhD,QAA8B,IAAfwY,EAAIxY,OAEzB,OAAO,KAKX,IAAMy4B,EAAS,GAGf,OAFAA,EAAM,aAAmBmolB,EACzBnolB,EAAM,QAAcqolB,EACbrolB,I,6BAEX,SAAuBtU,GACnB,IAAI28lB,EAAU,GACVtomB,EAuDZ,SAAqB2L,GACjB,IAAI3L,EAAM2L,EAAM3L,IAChB,GAAW,MAAPA,EAAa,CAKb,GAAW,OAJXA,EAAM2L,EAAM68lB,eAKR,MAAO,eAEPxomB,EAAI86I,WAAW,QACf96I,EAAM0yB,OAAOo3O,aAAaj3O,SAAS7yB,EAAIquC,UAAU,GAAI,KArLjC,IAsLhB1iC,EAAMgS,UAAwCgqlB,EAAoB52kB,eAAe/wB,KAIjFA,EAAM2nmB,EAAoB3nmB,KAItC,OAAO0nmB,EAAQ1nmB,IAAQA,EA3ETyomB,CAAY98lB,GAiBtB,MAfY,OADZ3L,EAAMA,EAAIC,eAEND,EAAM,QAEO,MAARA,IACLA,EAAM,OAEVynmB,EAAc/wmB,QAAQ,SAAA6xmB,GACdA,GAAgBvomB,IAEZ0omB,EADmBd,EAAqBW,IACzB58lB,KACf28lB,GAAWC,EAAe,OAItCD,GAAWtomB,I,2BAUf,SAAqBsomB,EAAS54kB,EAAS89E,GACnC,OAAO,SAAC7hG,GACAk8lB,EAAgBc,gBAAgBh9lB,KAAW28lB,GAC3C96f,EAAKq3e,WAAW,kBAAMn1jB,EAAQ/jB,Q,2BAK1C,SAAqBi9lB,GAEjB,OAAQA,GACJ,IAAK,MACD,MAAO,SACX,QACI,OAAOA,O,CArGO3D,G,OAyG9B4C,EAAgBjknB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKgknB,GAAiB,KAAgB,OAC/GA,EAAgB5/mB,WAAQ,KAA0B,CAAEC,MAAO2/mB,EAAiB1/mB,QAAS0/mB,EAAgBjknB,Y,sBAuE/FilnB,E,sDAENA,EAAajlnB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKglnB,IACxEA,EAAa5gnB,WAAQ,aAAmB,CAAEE,QAAS,WAAkC,OAAO,aAAS2gnB,IAAsB5gnB,MAAO2gnB,EAAc5+lB,WAAY,S,KAK5J,SAAS8+lB,EAAwBvmmB,GAC7B,OAAO,IAAIsmmB,EAAiBtmmB,EAASjN,IAAI,M,qBAEvCuzmB,E,YACF,WAAY5D,GAAI,kCACZ,aACKA,KAAOA,EAFA,E,6DAIhB,SAASjgnB,EAAKL,GACV,GAAa,MAATA,EACA,OAAO,KACX,OAAQK,GACJ,KAAK,IAAgBs9mB,KACjB,OAAO39mB,EACX,KAAK,IAAgB4+Q,KACjB,OAAI,aAAiC5+Q,EAAO,QACjC,aAAiBA,GAErB,aAAevB,KAAK6hnB,KAAMxykB,OAAO9tC,IAAQ0wB,WACpD,KAAK,IAAgB0zlB,MACjB,OAAI,aAAiCpknB,EAAO,SACjC,aAAiBA,GAErBA,EACX,KAAK,IAAgBqknB,OACjB,GAAI,aAAiCrknB,EAAO,UACxC,OAAO,aAAiBA,GAE5B,MAAM,IAAI8yB,MAAM,yCACpB,KAAK,IAAgBqlhB,IAEjB,OADa,aAA2Bn4iB,GACpC,aAAiCA,EAAO,OACjC,aAAiBA,GAErB,aAAc8tC,OAAO9tC,IAChC,KAAK,IAAgBi/Q,aACjB,GAAI,aAAiCj/Q,EAAO,eACxC,OAAO,aAAiBA,GAE5B,MAAM,IAAI8yB,MAAM,kFACpB,QACI,MAAM,IAAIA,MAAJ,qCAAwCzyB,EAAxC,2C,qCAGlB,SAAwBL,GACpB,OAAO,aAA6BA,K,sCAExC,SAAyBA,GACrB,OAAO,aAA8BA,K,uCAEzC,SAA0BA,GACtB,OAAO,aAA+BA,K,oCAE1C,SAAuBA,GACnB,OAAO,aAA4BA,K,4CAEvC,SAA+BA,GAC3B,OAAO,aAAoCA,O,CAtDpBiknB,G,OAyD/BC,EAAiBllnB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKilnB,GAAkB,KAAgB,OAClHA,EAAiB7gnB,WAAQ,aAAmB,CAAEE,QAAS,WAAsC,OAAO4gnB,EAAwB,aAAS,OAAe7gnB,MAAO4gnB,EAAkB7+lB,WAAY,S,KAgCnLi/lB,EAAsC,CACxC,CAAEtjnB,QAAS,IAAaqW,SAFf,KAGT,CAAErW,QAAS,IAAsBqW,SAfrC,WACIunmB,EAAkB2F,cAClBhF,EAAsBx7U,QAaqC57Q,OAAO,GAClE,CAAEnnB,QAAS,IAAU6mB,WATzB,WAGI,OADA,aAAauhB,UACNA,UAMqCxhB,KAAM,KAoBhD48lB,EAAkB,YAAsB,KAAc,UAAWF,GACjEG,EAA2B,CAfiB,GAiB9C,CAAEzjnB,QAAS,KAAiBqW,SAAU,QACtC,CAAErW,QAAS,IAAc6mB,WApC7B,WACI,OAAO,IAAI,KAmCwCD,KAAM,IACzD,CACI5mB,QAASi/mB,EACT7omB,SAAUwrmB,EACVz6lB,OAAO,EACPP,KAAM,CAAC,IAAU,IAAQ,MAE7B,CAAE5mB,QAASi/mB,EAAuB7omB,SAAU6rmB,EAAiB96lB,OAAO,EAAMP,KAAM,CAAC,MA5ZjD,GA8ZhC,CACI5mB,QAASygnB,EACTrqmB,SAAUqqmB,EACV75lB,KAAM,CAAC0uU,EAAcsqR,EAAqB,MAE9C,CAAE5/mB,QAAS,IAAkBC,YAAawgnB,GAC1C,CAAEzgnB,QAASw/mB,EAAkBv/mB,YAAa2/mB,GAC1C,CAAE5/mB,QAAS4/mB,EAAqBxpmB,SAAUwpmB,EAAqBh5lB,KAAM,CAAC,MACtE,CAAE5mB,QAAS,IAAaoW,SAAU,IAAawQ,KAAM,CAAC,MACtD,CAAE5mB,QAASs1V,EAAcl/U,SAAUk/U,EAAc1uU,KAAM,CAACq4lB,EAAuB,MA5qCxC,I,iBAwrCrCyE,E,WACF,WAAY5ld,GACR,GADoB,oBAChBA,EACA,MAAM,IAAIhsI,MAAJ,iK,6DAWd,SAA4By1D,GACxB,MAAO,CACHi1B,SAAUkngB,EACV9zlB,UAAW,CACP,CAAE5vB,QAAS,IAAQqW,SAAUkxE,EAAO4xF,OACpC,CAAEn5K,QAASm+mB,EAAel+mB,YAAa,KACvCm+mB,Q,UAKhBsF,EAAc1lnB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKylnB,GAAe,KAAgBA,EAAe,MACxHA,EAAc/smB,UAAO,KAAwB,CAAExY,KAAMulnB,IACrDA,EAAc9smB,UAAO,KAAwB,CAAEgZ,UAAW6zlB,EAA0B5smB,QAAS,CAAC,IAAc,O,KAgZ5G,SAAS8smB,EAAavpmB,GAClB,OAAOA,EA7ImB,oBAAXwO,QAA0BA,O,qBA4JvCg7lB,E,WACF,iCACInmnB,KAAKs3B,MAAQ,GACbt3B,KAAKomnB,qBAAuB,G,uCAWhC,SAAIzpmB,EAAK+nG,GACL,YAA2BjgH,IAApBzE,KAAKs3B,MAAM3a,GAAqB3c,KAAKs3B,MAAM3a,GAAO+nG,I,iBAK7D,SAAI/nG,EAAKpb,GACLvB,KAAKs3B,MAAM3a,GAAOpb,I,oBAKtB,SAAOob,UACI3c,KAAKs3B,MAAM3a,K,oBAKtB,SAAOA,GACH,OAAO3c,KAAKs3B,MAAMoW,eAAe/wB,K,yBAKrC,SAAYA,EAAKsW,GACbjzB,KAAKomnB,qBAAqBzpmB,GAAOsW,I,oBAKrC,WAEI,IAAK,IAAMtW,KAAO3c,KAAKomnB,qBACnB,GAAIpmnB,KAAKomnB,qBAAqB14kB,eAAe/wB,GACzC,IACI3c,KAAKs3B,MAAM3a,GAAO3c,KAAKomnB,qBAAqBzpmB,KAEhD,MAAOsX,GACH8W,QAAQ24B,KAAK,sCAAuCzvC,GAIhE,OAAOuF,KAAKC,UAAUz5B,KAAKs3B,U,mBAlD/B,SAAY+ulB,GACR,IAAMC,EAAgB,IAAIH,EAE1B,OADAG,EAAchvlB,MAAQ+ulB,EACfC,M,UAkDfH,EAAc5lnB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK2lnB,IAC1EA,EAAcvhnB,WAAQ,KAA0B,CAAEC,MAAOshnB,EAAerhnB,QAASqhnB,EAAc5lnB,Y,KAI/F,SAASgmnB,EAAkB39b,EAAKlN,GAG5B,IA1GM8qc,EA0GAC,EAAS79b,EAAImxC,eAAer+C,EAAQ,UACtC9qF,EAAe,GACnB,GAAI61hB,GAAUA,EAAOjzgB,YACjB,IAEI5iB,EAAep3D,KAAKW,OA/GtBqslB,EAAgB,CAClB,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,KA0GoCC,EAAOjzgB,YAxG1ChyG,QAAQ,WAAY,SAAAojB,GAAC,OAAI4hmB,EAAc5hmB,OA0G/C,MAAOqP,GACH8W,QAAQ24B,KAAK,mDAAqDg4G,EAAOznJ,GAGjF,OAAOkylB,EAAc7gV,KAAK10M,G,qBAQxB81hB,E,sDAENA,EAA2BnmnB,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAKkmnB,IACpGA,EAA2BxtmB,UAAO,KAAwB,CAAExY,KAAMgmnB,IAClEA,EAA2BvtmB,UAAO,KAAwB,CAAEgZ,UAAW,CAAC,CAAE5vB,QAAS4jnB,EAAe/8lB,WAAYm9lB,EAAmBp9lB,KAAM,CAAC,IAAU,S,4BCphEzI,SAAU9G,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAETq8J,EAAa,SAAU11J,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GACzB,EACAA,EAAI,KAAO,GACT,EACA,GAElB21J,EAAU,CACN9oL,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,8BACA,oCACA,qCAEJ9B,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,oCACA,oCACA,qCAEJiC,EAAG,CACC,2DACA,0DACA,CAAC,uCAAU,wCACX,oCACA,8BACA,+BAEJ/M,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,oCACA,yBAEJoN,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,8BACA,yBAEJE,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,oCACA,oCACA,0BAGRqoL,EAAY,SAAUrtB,GAClB,OAAO,SAAU56J,EAAQs3I,EAAe7tH,EAAQ6uB,GAC5C,IAAI/kC,EAAIw0K,EAAW/nL,GACfgpB,EAAMg/J,EAAQptB,GAAGmtB,EAAW/nL,IAIhC,OAHU,IAANuT,IACAyV,EAAMA,EAAIsuH,EAAgB,EAAI,IAE3BtuH,EAAIltC,QAAQ,MAAOkkB,KAGlC9C,EAAS,CACL,iCACA,uCACA,2BACA,iCACA,2BACA,iCACA,iCACA,iCACA,uCACA,uCACA,uCACA,wCAGCP,EAAOM,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbW,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVutB,cAAe,gBACfmuF,KAAM,SAAUnhF,GACZ,MAAO,WAAQA,GAEnB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,SAEA,UAGfxtB,SAAU,CACNC,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNC,EAAG+oL,EAAU,KACb9oL,GAAI8oL,EAAU,KACd7qL,EAAG6qL,EAAU,KACb7oL,GAAI6oL,EAAU,KACd5oL,EAAG4oL,EAAU,KACb3oL,GAAI2oL,EAAU,KACd31L,EAAG21L,EAAU,KACb1oL,GAAI0oL,EAAU,KACdvoL,EAAGuoL,EAAU,KACbtoL,GAAIsoL,EAAU,KACdroL,EAAGqoL,EAAU,KACbpoL,GAAIooL,EAAU,MAElBt8J,SAAU,SAAUlC,GAChB,OAAOA,EACF3tC,QAAQ,kEAAiB,SAAU8vC,GAChC,OAAOF,EAAUE,KAEpB9vC,QAAQ,UAAM,MAEvB+vC,WAAY,SAAUpC,GAClB,OAAOA,EACF3tC,QAAQ,MAAO,SAAU8vC,GACtB,OAAOb,EAAUa,KAEpB9vC,QAAQ,KAAM,WAEvBmkB,KAAM,CACFC,IAAK,EACLC,IAAK,MAzLyB/gB,CAAQ,EAAQ,U,0fCFnD,IAAM6hnB,EAAb,YACI,aAAmG,MAAvFngf,EAAuF,uDAA1E73H,OAAOwtJ,kBAAmB6gL,EAAgD,uDAAnCruU,OAAOwtJ,kBAAmBrwB,EAAS,mEAC/F,aACKA,UAAYA,EACjB,EAAK86e,QAAU,GACf,EAAKC,qBAAsB,EAC3B,EAAKC,YAActgf,EAAa,EAAI,EAAIA,EACxC,EAAKugf,YAAc/pS,EAAa,EAAI,EAAIA,EACpCA,IAAeruU,OAAOwtJ,mBACtB,EAAK0qd,qBAAsB,EAC3B,EAAKhjnB,KAAO,EAAKmjnB,wBAGjB,EAAKnjnB,KAAO,EAAKojnB,eAZ0E,EADvG,2EAgBI,SAAuB1lnB,GACnB,IAAKvB,KAAKqmK,UAAW,CACjB,IAAMugd,EAAU5mnB,KAAK4mnB,QACrBA,EAAQhjnB,KAAKrC,GACTqlnB,EAAQzinB,OAASnE,KAAK8mnB,aACtBF,EAAQjymB,QAGhB,oBAAWpT,MAxBnB,4BA0BI,SAAeA,GACNvB,KAAKqmK,YACNrmK,KAAK4mnB,QAAQhjnB,KAAK,IAAIsjnB,EAAYlnnB,KAAKmnnB,UAAW5lnB,IAClDvB,KAAKonnB,4BAET,oBAAW7lnB,MA/BnB,wBAiCI,SAAWg7B,GACP,IAIIy3E,EAJE6ygB,EAAsB7mnB,KAAK6mnB,oBAC3BD,EAAUC,EAAsB7mnB,KAAK4mnB,QAAU5mnB,KAAKonnB,2BACpDt7e,EAAY9rI,KAAK8rI,UACjBx0F,EAAMsvkB,EAAQzinB,OAEpB,GAAInE,KAAKwnB,OACL,MAAM,IAAI,IAYd,GAVSxnB,KAAKqmK,WAAarmK,KAAK6oI,SAC5B70B,EAAe,IAAa9sF,OAG5BlnB,KAAKwnJ,UAAU5jJ,KAAK24B,GACpBy3E,EAAe,IAAI,IAAoBh0G,KAAMu8B,IAE7CuvG,GACAvvG,EAAW15B,IAAI05B,EAAa,IAAI,IAAoBA,EAAYuvG,IAEhE+6e,EACA,IAAK,IAAIh/mB,EAAI,EAAGA,EAAIyvC,IAAQ/a,EAAW/U,OAAQ3f,IAC3C00B,EAAW14B,KAAK+inB,EAAQ/+mB,SAI5B,IAAK,IAAI,EAAI,EAAG,EAAIyvC,IAAQ/a,EAAW/U,OAAQ,IAC3C+U,EAAW14B,KAAK+inB,EAAQ,GAAGrlnB,OASnC,OANIvB,KAAK6oI,SACLtsG,EAAWvH,MAAMh1B,KAAK8oI,aAEjB9oI,KAAKqmK,WACV9pI,EAAWz4B,WAERkwG,IApEf,qBAsEI,WACI,OAAQh0G,KAAK8rI,WAAa,KAAO//E,QAvEzC,sCAyEI,WAOI,IANA,IAAMA,EAAM/rD,KAAKmnnB,UACXL,EAAc9mnB,KAAK8mnB,YACnBC,EAAc/mnB,KAAK+mnB,YACnBH,EAAU5mnB,KAAK4mnB,QACfS,EAAcT,EAAQzinB,OACxBmjnB,EAAc,EACXA,EAAcD,KACZt7jB,EAAM66jB,EAAQU,GAAaz/iB,KAAQk/iB,IAGxCO,IAQJ,OANID,EAAcP,IACdQ,EAAc/omB,KAAKukC,IAAIwkkB,EAAaD,EAAcP,IAElDQ,EAAc,GACdV,EAAQr+kB,OAAO,EAAG++kB,GAEfV,MA5Ff,CAAmC,KA+F7BM,E,YACF,WAAYr/iB,EAAMtmE,GAAK,oBACnBvB,KAAK6nE,KAAOA,EACZ7nE,KAAKuB,MAAQA,K,kFCrGrB,2B,OAIC,YAAAogC,UAAA,SAAUpgC,EAA8BkqL,GAEvC,OADAA,EAAaA,EAAaA,EAAWvlI,oBAAsB,MAExD3kD,EAAM4T,OAAO,SAAC6C,GAA2B,OAA0D,IAA1DA,EAAEuvmB,WAAWrhkB,oBAAoBj9C,QAAQwiL,KAClFlqL,G,sCALQimnB,I,0CAAAA,EAAc,U,EAH3B,I,sBCMS,SAAUnlmB,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGJ/uB,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,sdAA0FL,MAC9F,KAEJM,YACI,4UAAmEN,MAC/D,KAERgB,SAAU,2TAA4DhB,MAClE,KAEJiB,cAAe,6LAAuCjB,MAAM,KAC5DkB,YAAa,+JAAkClB,MAAM,KACrDoB,eAAgB,CACZC,GAAI,4BACJC,IAAK,+BACLC,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNC,EAAG,sEACHC,GAAI,gDACJ/B,EAAG,8CACHgC,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJhN,EAAG,kCACHiN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAGzBE,cAAe,+HACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAGO,uBAAbC,GAAsBD,GAAQ,GACjB,mCAAbC,GAAwBD,EAAO,GACnB,mCAAbC,EAEOD,EAAO,GAEPA,GAGfC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,iCAEA,sBAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KArHyB/gB,CAAQ,EAAQ,U,mBCN1Ds4B,EAAOC,QAAU,SAASoqlB,GACzB,IAAKA,EAAeh8e,gBAAiB,CACpC,IAAIruG,EAAS5gB,OAAOlX,OAAOminB,GAEtBrqlB,EAAOt1B,WAAUs1B,EAAOt1B,SAAW,IACxC0U,OAAOu3B,eAAe3W,EAAQ,SAAU,CACvC6W,YAAY,EACZ/hC,IAAK,WACJ,OAAOkrB,EAAOwuG,KAGhBpvH,OAAOu3B,eAAe3W,EAAQ,KAAM,CACnC6W,YAAY,EACZ/hC,IAAK,WACJ,OAAOkrB,EAAOv1B,KAGhB2U,OAAOu3B,eAAe3W,EAAQ,UAAW,CACxC6W,YAAY,IAEb7W,EAAOquG,gBAAkB,EAE1B,OAAOruG,I,kCCtBR,gCAAO,IAAM0O,EAAc,iBAAwB,mBAAXsD,QAAyBA,OAAOtD,YAAc,eAA3D,I,sBCUlB,SAAUzpB,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,0KAAwCL,MAC5C,KAEJM,YAAa,qGAAyCN,MAClD,KAEJgB,SAAU,uIAA8BhB,MAAM,KAC9CiB,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,mDAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN2nH,EAAG,WACHjH,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAEVrzF,cAAe,gFACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,iBAAbC,GAAkC,iBAAbA,GAAkC,iBAAbA,EACnCD,EACa,iBAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,iBAAbC,GAAkC,iBAAbA,EACrBD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,IAAIi3O,EAAY,IAAPp3O,EAAaE,EACtB,OAAIk3O,EAAK,IACE,eACAA,EAAK,IACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eACAA,EAAK,KACL,eAEA,gBAGf5kQ,SAAU,CACNC,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEdgB,uBAAwB,gCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,SACpB,IAAK,IACD,OAAOA,EAAS,SACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBjB,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJ/B,EAAG,iBACHgC,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJhN,EAAG,WACHiN,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,eAhG0BzgB,CAAQ,EAAQ,U,kjBCkBpDrF,EAAM,CAAC,aACPC,EAAM,CAAC,uBACP4xG,EAAM,CAAC,kBACPC,EAAM,CAAC,SACb,SAASm2gB,EAAqC/lnB,EAAIC,GAAgB,EAALD,IACzD,KAA+B,GAC/B,KAAsB,EAAG,MAAO,IAChC,KAAiB,EAAG,MAAO,IAC3B,KAAiB,EAAG,MAAO,IAC3B,KAAiB,EAAG,MAAO,IAC3B,OACA,KAAsB,EAAG,MAAO,IAChC,KAAiB,EAAG,MAAO,IAC3B,KAAiB,EAAG,MAAO,IAC3B,KAAiB,EAAG,MAAO,IAC3B,OACA,QAEJ,SAASgmnB,EAA4BhmnB,EAAIC,GAAgB,EAALD,IAChD,KAAsB,EAAG,MAAO,IAChC,KAAoB,EAAG,GACvB,QAEJ,SAASimnB,EAA6CjmnB,EAAIC,GAOxD,GAPwE,EAALD,IACjE,KAA+B,GAC/B,KAAoB,EAAG,GACvB,KAAsB,EAAG,QACzB,KAAc,GACd,OACA,QACO,EAALA,EAAQ,CACV,IAAMq5G,EAAU,KAAqB,GACrC,KAAiB,GACjB,KAAyBA,EAAQpsF,SAAS+7H,cAE9C,SAASk9d,EAA2ClmnB,EAAIC,GAAgB,EAALD,GAC/D,KAAoB,EAAG,EAAG,CAAC,gBAAiB,SAEhD,SAASmmnB,EAAqCnmnB,EAAIC,GAAgB,EAALD,IACzD,KAAsB,EAAG,OAAQ,IACjC,KAAc,EAAG,MACjB,QAEJ,SAASomnB,EAA8BpmnB,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAC1D,IAAMqmnB,EAAO,OACb,KAAsB,EAAG,QAAS,GAAI,IACtC,KAAkB,oBAAqB,WAAkJ,OAApE,KAAqBA,GAAuB,OAAuCC,qBACxM,KAAkB,EAAGL,EAA8C,EAAG,EAAG,eAAgB,IACzF,KAAkB,EAAGC,EAA4C,EAAG,EAAG,aAAc,IACrF,KAAkB,EAAGC,EAAsC,EAAG,EAAG,OAAQ,IACzE,OACF,GAAS,EAALnmnB,EAAQ,CACV,IAAMs0G,EAAS,OACf,KAAmB,YAAaA,EAAOrnF,SAAS4kJ,QAAUv9D,EAAOiygB,qBAAjE,CAAuF,uBAAwBjygB,EAAOrnF,SAAS4kJ,QAAUv9D,EAAOiygB,qBAAhJ,CAAsK,aAA8B,UAAhBjygB,EAAOpgD,MAA3L,CAA8M,WAA4B,QAAhBogD,EAAOpgD,OACjO,KAAkB,4BAAkD,WAArBogD,EAAOkygB,WAAtD,CAA+E,KAAMlygB,EAAOkuF,SAA5F,CAAsG,WAAYluF,EAAOmygB,aACzH,KAAmB,MAAOnygB,EAAOrnF,SAAS5I,GAA1C,CAA8C,YAAaiwF,EAAOrnF,SAAS5I,IAC3E,KAAiB,GACjB,KAAkB,gBAAgB,GAClC,KAAiB,GACjB,KAAkB,gBAAgB,GAClC,KAAiB,GACjB,KAAkB,QAASiwF,EAAOoygB,oBAAsBpygB,EAAOrnF,SAASqkF,WAAagD,EAAOrnF,SAAS5B,WAEzG,SAASs7lB,EAA6B3mnB,EAAIC,GAAgB,EAALD,IACjD,KAAsB,EAAG,MAAO,IAChC,KAAoB,EAAG,GACvB,QAEJ,SAAS4mnB,EAA6B5mnB,EAAIC,GAIxC,GAJwD,EAALD,IACjD,KAAsB,EAAG,MAAO,GAAI,IACpC,KAAiB,EAAG,OAAQ,IAC5B,QACO,EAALA,EAAQ,CACV,IAAMg2G,EAAS,OACf,KAAiB,GACjB,KAAmB,aAA8B,UAAhBA,EAAO9hD,MAAxC,CAA2D,WAA4B,QAAhB8hD,EAAO9hD,QAElF,SAAS2yjB,EAA6B7mnB,EAAIC,GAIxC,GAJwD,EAALD,IACjD,KAAsB,EAAG,OACzB,KAAoB,EAAG,GACvB,QACO,EAALA,EAAQ,CACV,IAAMo1G,EAAS,OACf,KAAkB,sBAAuBA,EAAO0xgB,2BAEpD,SAASC,EAAmC/mnB,EAAIC,GAI9C,GAJ8D,EAALD,IACvD,KAAsB,EAAG,MAAO,IAChC,KAAc,GACd,QACO,EAALA,EAAQ,CACV,IAAM+zG,EAAU,KAAqB,GACrC,KAAkB,KAAMA,EAAQizgB,cAChC,KAAiB,GACjB,KAAyBjzgB,EAAQkzgB,YAErC,SAASC,EAA6BlnnB,EAAIC,GAOxC,GAPwD,EAALD,IACjD,KAAsB,EAAG,MAAO,IAChC,KAAkB,EAAG+mnB,EAAoC,EAAG,EAAG,MAAO,IACtE,KAAoB,EAAG,GACvB,KAAiB,EAAG,MAAO,IAC3B,KAAoB,EAAG,GACvB,QACO,EAAL/mnB,EAAQ,CACV,IAAM84G,EAAS,OACf,KAAkB,sBAAuBA,EAAOgugB,0BAChD,KAAiB,GACjB,KAAkB,OAAQhugB,EAAOmugB,YAErC,IAAMn3gB,EAAM,CAAC,IAAK,CAAC,CAAC,GAAI,YAAa,KAAM,CAAC,CAAC,oBAAqB,CAAC,CAAC,cAAe,CAAC,CAAC,GAAI,YAAa,KAAM,CAAC,CAAC,cAAe,CAAC,CAAC,WAAY,EAAG,QAAS,QAAS,CAAC,CAAC,WAAY,QAAS,SACjLw9E,EAAM,CAAC,IAAK,cAAe,kBAAmB,YAAa,cAAe,YAAa,8BAA+B,yBACxHr9E,EAAe,EAMbk3gB,EAAY,IAAI,IAAe,Y,iBAE/BC,E,YACF,iCACI/onB,KAAKgmB,GAAL,oBAAuB4rF,O,OAG/Bm3gB,EAASxonB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKuonB,IAChEA,EAAStonB,UAAO,KAAyB,CAAEC,KAAMqonB,EAAUponB,UAAW,CAAC,CAAC,cAAeoC,UAAW,CAAC,OAAQ,QAAS,EAAG,aAAcwV,SAAU,EAAGC,aAAc,SAA+B7W,EAAIC,GAAgB,EAALD,GACtM,KAAmB,KAAMC,EAAIokB,KAC5B7jB,OAAQ,CAAE6jB,GAAI,MAAQ1jB,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAASumnB,EAAWtmnB,YAAaumnB,Q,KA8BlGC,EAAyB,CAE3BC,mBAAoB,YAAQ,qBAAsB,CAE9C,YAAM,QAAS,YAAM,CAAEvnlB,QAAS,EAAGC,UAAW,oBAC9C,YAAW,gBAAiB,CACxB,YAAM,CAAED,QAAS,EAAGC,UAAW,qBAC/B,YAAQ,+C,iBAadunlB,E,sDAENA,EAAoB3onB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK0onB,IACtFA,EAAoBzonB,UAAO,KAAyB,CAAEC,KAAMwonB,I,KAgCxD5yc,EAAiB,EASf6yc,EAAY,IAAI,IAAe,W,iBAE/BC,E,YACF,iCAEIppnB,KAAKqtL,MAAQ,QAEbrtL,KAAKgmB,GAAL,mBAAsBswJ,O,OAG9B8yc,EAAQ7onB,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAK4onB,IAC9DA,EAAQ3onB,UAAO,KAAyB,CAAEC,KAAM0onB,EAASzonB,UAAW,CAAC,CAAC,aAAcoC,UAAW,CAAC,EAAG,YAAawV,SAAU,EAAGC,aAAc,SAA8B7W,EAAIC,GAAgB,EAALD,IAChL,KAAmB,KAAMC,EAAIokB,GAA7B,CAAiC,QAAS,MAC1C,KAAmB,0BAAyC,QAAdpkB,EAAIyrL,SACjDlrL,OAAQ,CAAEkrL,MAAO,QAASrnK,GAAI,MAAQ1jB,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS4mnB,EAAW3mnB,YAAa4mnB,Q,sBAgClHC,E,sDAENA,EAAS9onB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAK6onB,IAChEA,EAAS5onB,UAAO,KAAyB,CAAEC,KAAM2onB,EAAU1onB,UAAW,CAAC,CAAC,gB,sBAqBlE2onB,E,sDAENA,EAAe/onB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK8onB,IAC5EA,EAAe7onB,UAAO,KAAyB,CAAEC,KAAM4onB,EAAgB3onB,UAAW,CAAC,CAAC,sB,KAoB9E4onB,EAAa,IAAI,IAAe,aA0BhCC,EAAa,IAAI,IAAe,a,kBAEhCC,E,sDAENA,EAAUlpnB,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKipnB,IAClEA,EAAUhpnB,UAAO,KAAyB,CAAEC,KAAM+onB,EAAW9onB,UAAW,CAAC,CAAC,GAAI,YAAa,KAAM2B,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAASinnB,EAAYhnnB,YAAainnB,Q,KAgBvKC,GAAiB,EAOfC,G,YACF,WAAY58mB,GAAW,oBACnB/M,KAAK+M,YAAcA,IAOrB68mB,GAAyB,YAAWD,GAAkB,WAKtDE,GAAiC,IAAI,IAAe,kCAMpDC,GAAiB,IAAI,IAAe,gB,kBAEpCC,E,YACF,WAAYh9mB,EAAaD,EAMzBk9mB,EAAe/8mB,EAAMgd,EAAW9c,EAAW7J,EAAS6uG,GAAc,M,MAAA,2B,EAC9D,K,EAAA,E,EAAA,CAAMplG,G,kBAAN,E,iGACKA,YAAcA,EACnB,EAAKD,mBAAqBA,EAC1B,EAAKG,KAAOA,EACZ,EAAKgd,UAAYA,EACjB,EAAK9c,UAAYA,EACjB,EAAK7J,QAAUA,EAKf,EAAK2mnB,yCAA0C,EAE/C,EAAKC,sCAAuC,EAC5C,EAAK1mnB,WAAa,IAAI,IAEtB,EAAK2mnB,oBAAqB,EAE1B,EAAK1B,yBAA2B,GAChC,EAAK2B,WAAa,GAElB,EAAKzB,aAAL,mBAAgCe,MAEhC,EAAKvlb,SAAL,+BAAwCulb,MACxC,EAAK17lB,WAAa,EAAKq8lB,6BACvB,EAAKC,mBAAwC,mBAAnBn4gB,EAE1B,EAAKg2gB,WAAcl+lB,GAAaA,EAAUk+lB,WAAcl+lB,EAAUk+lB,WAAa,SAC/E,EAAKoC,uBAAuBtgmB,GAA6C,MAAhCA,EAAUo+lB,qBAC/Cp+lB,EAAUo+lB,mBA9BgD,E,6DAiClE,WAAmB,OAAOronB,KAAKwqnB,a,IAC/B,SAAejpnB,GACX,IAAM+3T,EAAWt5T,KAAKwqnB,YACtBxqnB,KAAKwqnB,YAAcjpnB,GAAUvB,KAAKiqB,WAAajqB,KAAKiqB,UAAUk+lB,YAAe,SACpD,YAArBnonB,KAAKwqnB,aAA6BlxT,IAAa/3T,IAC/CvB,KAAKkqnB,sCAAuC,K,8BAIpD,WAA2B,OAAOlqnB,KAAKuqnB,qB,IACvC,SAAuBhpnB,GACnBvB,KAAKuqnB,oBAAsB,YAAsBhpnB,K,gCAGrD,WACI,MAA2B,WAApBvB,KAAKguB,aAA4BhuB,KAAKmqnB,qB,4BAGjD,WAAmB,MAA2B,UAApBnqnB,KAAKguB,a,qBAE/B,WAAkB,OAAOhuB,KAAKoqnB,Y,IAC9B,SAAc7onB,GACVvB,KAAKoqnB,WAAa7onB,EAClBvB,KAAKyqnB,kB,sBAUT,WACI,MAA2B,WAApBzqnB,KAAKmonB,YAAgD,UAArBnonB,KAAK8rB,YAA0B,OAAS9rB,KAAK8rB,a,IAExF,SAAevqB,GACPA,IAAUvB,KAAK8rB,cACf9rB,KAAK8rB,YAAcvqB,GAASvB,KAAKqqnB,6BACjCrqnB,KAAK8M,mBAAmBkK,kB,oBAGhC,WAGI,OAAOhX,KAAK0qnB,2BAA6B1qnB,KAAK2qnB,mBAAqB3qnB,KAAK4qnB,gB,IAE5E,SAAarpnB,GACTvB,KAAK0qnB,0BAA4BnpnB,I,wBAKrC,WACI,OAAOvB,KAAKy+mB,oBAAsBz+mB,KAAKmkM,SAAW,O,uCAMtD,WACI,OAAOnkM,KAAK6qnB,yBAA2B7qnB,KAAK+M,c,gCAEhD,WAAkB,WACd/M,KAAK8qnB,wBACL,IAAMt8e,EAAUxuI,KAAK4uB,SACjB4/G,EAAQqkC,aACR7yK,KAAK+M,YAAYnK,cAAcD,UAAUE,IAAzC,8BAAoE2rI,EAAQqkC,cAGhFrkC,EAAQolC,aAAa5vK,KAAK,YAAU,OAAOE,UAAU,WACjD,EAAK6mnB,wBACL,EAAKC,sBACL,EAAKl+mB,mBAAmBkK,iBAGxBw3H,EAAQikC,WAAajkC,EAAQikC,UAAU1hC,cACvCvC,EAAQikC,UAAU1hC,aACb/sI,KAAK,YAAUhE,KAAKwD,aACpBU,UAAU,kBAAM,EAAK4I,mBAAmBkK,iBAKjDhX,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,EAAK/nB,QAAQoB,SAASV,KAAK,YAAU,EAAKR,aAAaU,UAAU,WACzD,EAAKgmnB,sCACL,EAAKjC,uBAKjB,YAAMjonB,KAAKirnB,gBAAgBhmnB,QAASjF,KAAKkrnB,gBAAgBjmnB,SAASf,UAAU,WACxE,EAAKgmnB,sCAAuC,EAC5C,EAAKp9mB,mBAAmBkK,iBAG5BhX,KAAKmrnB,cAAclmnB,QAAQjB,KAAK,YAAU,OAAOE,UAAU,WACvD,EAAKumnB,gBACL,EAAK39mB,mBAAmBkK,iBAG5BhX,KAAKornB,eAAenmnB,QAAQjB,KAAK,YAAU,OAAOE,UAAU,WACxD,EAAK8mnB,sBACL,EAAKl+mB,mBAAmBkK,iBAExBhX,KAAKiN,MACLjN,KAAKiN,KAAK8C,OAAO/L,KAAK,YAAUhE,KAAKwD,aAAaU,UAAU,WACnB,mBAA1BukL,sBACP,EAAKnlL,QAAQ+nB,kBAAkB,WAC3Bo9J,sBAAsB,kBAAM,EAAKw/b,uBAIrC,EAAKA,uB,mCAKrB,WACIjonB,KAAK8qnB,wBACD9qnB,KAAKiqnB,yCACLjqnB,KAAKionB,qB,6BAGb,WAEIjonB,KAAKyonB,yBAA2B,QAChCzonB,KAAK8M,mBAAmB0U,kB,yBAE5B,WACIxhB,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,a,4BAGpB,SAAesqC,GACX,IAAMqkI,EAAYzyK,KAAK4uB,SAAW5uB,KAAK4uB,SAAS6jJ,UAAY,KAC5D,OAAOA,GAAaA,EAAUrkI,K,6BAElC,WACI,SAAUpuC,KAAK4uB,UAAY5uB,KAAK4uB,SAAS+7H,aAAe3qJ,KAAKqrnB,qB,uBAEjE,WACI,SAAUrrnB,KAAKsrnB,uBAAwBtrnB,KAAKurnB,qB,+BAEhD,WACI,OAAOvrnB,KAAKwrnB,mBACNxrnB,KAAK4uB,UAAY5uB,KAAK4uB,SAAS68lB,kBAAqBzrnB,KAAKkonB,wB,qCAEnE,WAEI,MAA2B,WAApBlonB,KAAKmonB,aAA4BnonB,KAAKoonB,aACzCponB,KAAKoonB,cAAgBponB,KAAKw+mB,sB,+BAElC,WAEI,OAAOx+mB,KAAKoonB,aAAmC,WAApBponB,KAAKmonB,YAA2BnonB,KAAK0rnB,oB,mCAGpE,WACI,OAAQ1rnB,KAAKornB,gBAAkBprnB,KAAKornB,eAAejnnB,OAAS,GACxDnE,KAAK4uB,SAASwnJ,WAAc,QAAU,S,kCAG9C,WAAoB,WACZp2K,KAAKy+mB,qBAAuBz+mB,KAAKwrnB,mBAG7BxrnB,KAAKsqnB,oBAAsBtqnB,KAAKo/G,SAChCp/G,KAAKmqnB,oBAAqB,EAC1B,YAAUnqnB,KAAKo/G,OAAOx8G,cAAe,iBAAiBoB,KAAK,YAAK,IAAIE,UAAU,WAC1E,EAAKimnB,oBAAqB,KAGlCnqnB,KAAKguB,WAAa,SAClBhuB,KAAK8M,mBAAmBkK,kB,mCAOhC,c,2BAOA,WACIhX,KAAK2rnB,iBACL3rnB,KAAKgrnB,wB,4BAMT,c,wCAqBA,WACI,OAAQhrnB,KAAKiqB,WAAajqB,KAAKiqB,UAAU+D,YAAe,S,iCAM5D,WACI,GAAIhuB,KAAK4uB,SAAU,CACf,IAAIswH,EAAM,GAMV,GAJIl/I,KAAK4uB,SAASg9lB,qBAC+B,iBAAtC5rnB,KAAK4uB,SAASg9lB,qBACrB1se,EAAIt7I,KAAJ,MAAAs7I,EAAG,YAASl/I,KAAK4uB,SAASg9lB,oBAAoBrpmB,MAAM,OAEnB,SAAjCviB,KAAK6rnB,wBAAoC,CACzC,IAAMC,EAAY9rnB,KAAKmrnB,cACnBnrnB,KAAKmrnB,cAAc9lnB,KAAK,SAAAokF,GAAI,MAAmB,UAAfA,EAAK4jG,QAAqB,KACxD0+b,EAAU/rnB,KAAKmrnB,cACjBnrnB,KAAKmrnB,cAAc9lnB,KAAK,SAAAokF,GAAI,MAAmB,QAAfA,EAAK4jG,QAAmB,KACxDy+b,EACA5se,EAAIt7I,KAAKkonB,EAAU9lmB,IAEdhmB,KAAKoqnB,YACVlre,EAAIt7I,KAAK5D,KAAK2onB,cAEdoD,GACA7se,EAAIt7I,KAAKmonB,EAAQ/lmB,SAGhBhmB,KAAKornB,gBACVlse,EAAIt7I,KAAJ,MAAAs7I,EAAG,YAASl/I,KAAKornB,eAAe3hnB,IAAI,SAAAurB,GAAK,OAAIA,EAAMhP,OAEvDhmB,KAAK4uB,SAASo9lB,kBAAkB9se,M,mCAIxC,c,8BASA,WACI,IAAM+se,EAAUjsnB,KAAKo/G,OAASp/G,KAAKo/G,OAAOx8G,cAAgB,KAC1D,GAAwB,YAApB5C,KAAKmonB,YAA6B8D,GAAYA,EAAQnknB,SAAS3D,QAC9D8nnB,EAAQz4gB,YAAY12F,QAGpB9c,KAAKmN,UAAU8K,UAMpB,GAAKjY,KAAKksnB,mBAAV,CAIA,IAAIC,EAAa,EACbC,EAAW,EACT/zmB,EAAYrY,KAAK6qnB,wBAAwBjonB,cACzCypnB,EAAWh0mB,EAAU0zF,iBAAiB,iCACtCughB,EAASj0mB,EAAU0zF,iBAAiB,+BAC1C,GAAI/rG,KAAKo/G,QAAUp/G,KAAKo/G,OAAOx8G,cAAckF,SAAS3D,OAAQ,CAC1D,IAAMmkL,EAAgBjwK,EAAU5N,wBAOhC,GAA4B,IAAxB69K,EAAc5+K,OAAwC,IAAzB4+K,EAAc99K,OAG3C,OAFAxK,KAAKkqnB,sCAAuC,OAC5ClqnB,KAAKiqnB,yCAA0C,GAOnD,IAJA,IAAMsC,EAAiBvsnB,KAAKwsnB,aAAalkc,GACnCmkc,EAAgBR,EAAQnknB,SACxB4knB,EAAa1snB,KAAKwsnB,aAAaC,EAAc,GAAGhinB,yBAClDm6b,EAAa,EACR/8b,EAAI,EAAGA,EAAI4knB,EAActonB,OAAQ0D,IACtC+8b,GAAc6nL,EAAc5knB,GAAGirE,YAEnCq5iB,EAAa5tmB,KAAKqiC,IAAI8rkB,EAAaH,GApXrB,EAqXdH,EAAWxnL,EAAa,EAtXT,IAsXaA,EAAkC+nL,GAAwB,EAE1F,IAAK,IAAI,EAAI,EAAG,EAAIN,EAASlonB,OAAQ,IACjCkonB,EAAS,GAAG9gnB,MAAM7B,MAAlB,UAA6ByinB,EAA7B,MAEJ,IAAK,IAAI,EAAI,EAAG,EAAIG,EAAOnonB,OAAQ,IAC/BmonB,EAAO,GAAG/gnB,MAAM7B,MAAhB,UAA2B0inB,EAA3B,MAEJpsnB,KAAKkqnB,qCACDlqnB,KAAKiqnB,yCAA0C,OAtC/CjqnB,KAAKiqnB,yCAA0C,I,0BAyCvD,SAAal8iB,GACT,OAAQ/tE,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,MAAmBwsE,EAAK7hE,MAAQ6hE,EAAK9hE,O,8BAGxE,WACI,IAAMZ,EAAUrL,KAAK+M,YAAYnK,cACjC,GAAIyI,EAAQ8pC,YAAa,CACrB,IAAM5zB,EAAWlW,EAAQ8pC,cAGzB,OAAO5zB,GAAYA,IAAalW,EAIpC,OAAOs/B,SAAS6J,gBAAgB5nB,SAASvhB,O,CApXtBu+mB,I,OAuX3BG,EAAaxpnB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKupnB,GAAc,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAa,KAAyB,IAAuB,GAAI,KAAyBF,GAAgC,GAAI,KAAyB,KAAkB,KAAyB,KAAgB,KAAyB,IAAuB,KACldE,EAAa5jnB,UAAO,KAAyB,CAAEzF,KAAMqpnB,EAAcppnB,UAAW,CAAC,CAAC,mBAAoBe,eAAgB,SAAqCC,EAAIC,EAAKC,GAW1J,IAAIC,EAX2K,EAALH,IAC1K,KAAsBE,EAAUqnnB,EAAqB,GACrD,KAAsBrnnB,EAAUqnnB,EAAqB,GACrD,KAAsBrnnB,EAAUwnnB,EAAU,GAC1C,KAAsBxnnB,EAAUwnnB,EAAU,GAC1C,KAAsBxnnB,EAAUynnB,EAAgB,GAChD,KAAsBznnB,EAAUinnB,EAAW,GAC3C,KAAsBjnnB,EAAUsnnB,EAAW,GAC3C,KAAsBtnnB,EAAU0nnB,EAAY,GAC5C,KAAsB1nnB,EAAU2nnB,EAAY,IACrC,EAAL7nnB,IAEF,KAAsBG,EAAK,UAA0BF,EAAI+onB,kBAAoB7onB,EAAGE,OAChF,KAAsBF,EAAK,UAA0BF,EAAIgpnB,eAAiB9onB,EAAGE,OAC7E,KAAsBF,EAAK,UAA0BF,EAAI0pnB,qBAAuBxpnB,EAAGE,OACnF,KAAsBF,EAAK,UAA0BF,EAAI2pnB,kBAAoBzpnB,EAAGE,OAChF,KAAsBF,EAAK,UAA0BF,EAAIypnB,kBAAoBvpnB,EAAGE,OAChF,KAAsBF,EAAK,UAA0BF,EAAIwpnB,eAAiBtpnB,GAC1E,KAAsBA,EAAK,UAA0BF,EAAIupnB,cAAgBrpnB,GACzE,KAAsBA,EAAK,UAA0BF,EAAIqpnB,gBAAkBnpnB,GAC3E,KAAsBA,EAAK,UAA0BF,EAAIspnB,gBAAkBppnB,KAC1EwW,UAAW,SAA4B3W,EAAIC,GAM5C,IAAIE,EANwD,EAALH,IACvD,KAAmBlC,EAAK,GACxB,KAAmBC,EAAK,GACxB,KAAmB4xG,EAAK,GACxB,KAAmBC,EAAK,IACjB,EAAL5vG,IAEF,KAAsBG,EAAK,UAA0BF,EAAIgrnB,aAAe9qnB,EAAGE,OAC3E,KAAsBF,EAAK,UAA0BF,EAAIipnB,wBAA0B/onB,EAAGE,OACtF,KAAsBF,EAAK,UAA0BF,EAAIirnB,mBAAqB/qnB,EAAGE,OACjF,KAAsBF,EAAK,UAA0BF,EAAIw9G,OAASt9G,EAAGE,SACpEe,UAAW,CAAC,EAAG,kBAAmBwV,SAAU,GAAIC,aAAc,SAAmC7W,EAAIC,GAAgB,EAALD,GACjH,KAAmB,qCAAwD,YAAlBC,EAAIumnB,WAA7D,CAAuF,iCAAoD,QAAlBvmnB,EAAIumnB,WAA7H,CAAmJ,oCAAuD,WAAlBvmnB,EAAIumnB,WAA5L,CAAqN,mCAAsD,UAAlBvmnB,EAAIumnB,WAA7P,CAAqR,yBAA0BvmnB,EAAIgtB,SAASwnJ,WAA5T,CAAwU,2BAA4Bx0K,EAAI4pnB,iBAAxW,CAA0X,8BAA+B5pnB,EAAI48mB,oBAA7Z,CAAkb,2BAA4B58mB,EAAI68mB,oBAAld,CAAue,kCAAmC78mB,EAAIkrnB,0BAA9gB,CAAyiB,0BAA2BlrnB,EAAIgtB,SAAS5B,SAAjlB,CAA2lB,4BAA6BprB,EAAIgtB,SAASm+lB,WAAroB,CAAipB,cAAenrnB,EAAIgtB,SAASimF,QAA7qB,CAAsrB,eAAgBjzG,EAAIornB,eAAe,aAAztB,CAAuuB,aAAcprnB,EAAIornB,eAAe,WAAxwB,CAAoxB,cAAeprnB,EAAIornB,eAAe,YAAtzB,CAAm0B,WAAYprnB,EAAIornB,eAAe,SAAl2B,CAA42B,WAAYprnB,EAAIornB,eAAe,SAA34B,CAAq5B,aAAcprnB,EAAIornB,eAAe,WAAt7B,CAAk8B,aAAcprnB,EAAIornB,eAAe,WAAn+B,CAA++B,2BAA4BprnB,EAAI0onB,qBAC9gCnonB,OAAQ,CAAE0zD,MAAO,QAAS7nC,WAAY,aAAcm6lB,WAAY,aAAcE,mBAAoB,qBAAsBO,UAAW,aAAelwmB,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,KAA0B,CAChN,CAAEC,QAASunnB,GAAgBtnnB,YAAaunnB,KACxC,MAAoClxmB,mBAAoBo2K,EAAK7oL,MAAO,GAAIC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,0BAA2B,CAAC,EAAG,sBAAuB,EAAG,SAAU,CAAC,sBAAuB,IAAK,CAAC,EAAG,QAAS,CAAC,QAAS,wBAAyB,EAAG,QAAS,CAAC,EAAG,wBAAyB,CAAC,iBAAkB,IAAK,CAAC,EAAG,gCAAiC,CAAC,QAAS,uBAAwB,EAAG,4BAA6B,KAAM,YAAa,uBAAwB,aAAc,WAAY,WAAY,oBAAqB,EAAG,QAAS,CAAC,QAAS,wBAAyB,EAAG,QAAS,CAAC,QAAS,2BAA4B,EAAG,QAAS,CAAC,EAAG,mCAAoC,EAAG,YAAa,CAAC,EAAG,gBAAiB,CAAC,QAAS,8BAA+B,EAAG,gBAAiB,CAAC,EAAG,0BAA2B,CAAC,EAAG,gCAAiC,CAAC,EAAG,8BAA+B,CAAC,EAAG,8BAA+B,CAAC,EAAG,yBAA0B,gCAAiC,CAAC,EAAG,yBAA0B,CAAC,EAAG,uBAAwB,EAAG,4BAA6B,KAAM,WAAY,qBAAsB,CAAC,QAAS,IAAK,CAAC,QAAS,0DAA2D,cAAe,OAAQ,EAAG,QAAS,CAAC,cAAe,OAAQ,EAAG,2BAA4B,kCAAmC,CAAC,EAAG,yBAA0B,CAAC,EAAG,4BAA6B,CAAC,YAAa,IAAK,CAAC,EAAG,yBAA0B,CAAC,EAAG,+BAAgC,CAAC,QAAS,WAAY,EAAG,KAAM,EAAG,QAAS,CAAC,EAAG,8BAA+B,CAAC,EAAG,WAAY,EAAG,OAAQhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,IACxkD,KAAuB8vG,GACvB,KAAsB,EAAG,MAAO,GAChC,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,QAAS,SAAoD3/E,GAAU,OAAOlwB,EAAIgtB,SAASq+lB,kBAAoBrrnB,EAAIgtB,SAASq+lB,iBAAiBn7lB,KAC/J,KAAkB,EAAG41lB,EAAsC,EAAG,EAAG,eAAgB,GACjF,KAAkB,EAAGC,EAA6B,EAAG,EAAG,MAAO,GAC/D,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAoB,GACpB,KAAsB,EAAG,OAAQ,GACjC,KAAkB,EAAGI,EAA+B,EAAG,GAAI,QAAS,GACpE,OACA,OACA,KAAkB,GAAIO,EAA8B,EAAG,EAAG,MAAO,GACjE,OACA,KAAkB,GAAIC,EAA8B,EAAG,EAAG,MAAO,IACjE,KAAsB,GAAI,MAAO,IACjC,KAAkB,GAAIC,EAA8B,EAAG,EAAG,MAAO,IACjE,KAAkB,GAAIK,EAA8B,EAAG,EAAG,MAAO,IACjE,OACA,QACO,EAALlnnB,IACF,KAAiB,GACjB,KAAkB,OAA0B,WAAlBC,EAAIumnB,YAC9B,KAAiB,GACjB,KAAkB,OAAQvmnB,EAAIqpnB,gBAAgB9mnB,QAC9C,KAAiB,GACjB,KAAkB,OAAQvC,EAAI68mB,qBAC9B,KAAiB,GACjB,KAAkB,OAAQ78mB,EAAIspnB,gBAAgB/mnB,QAC9C,KAAiB,GACjB,KAAkB,OAA0B,WAAlBvC,EAAIumnB,YAC9B,KAAiB,GACjB,KAAkB,WAAYvmnB,EAAIiqnB,yBAClC,KAAiB,GACjB,KAAkB,eAAgB,SAClC,KAAiB,GACjB,KAAkB,eAAgB,UACjCtlnB,WAAY,CAAC,IAAa,IAAiB,IAAqB,KAA2BuS,OAAQ,CAAC,ypGAA0pG,s/BAAy/B,skJAA2kJ,q4CAAs4C,glGAAilG,+oCAAgpCtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAACqllB,EAAuBC,qBAAuBjgmB,gBAAiB,I,uBA2IjhdkkmB,E,sDAENA,EAAmB3snB,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK0snB,IACpFA,EAAmBh0mB,UAAO,KAAwB,CAAExY,KAAMwsnB,IAC1DA,EAAmB/zmB,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAClD,IACA,IACA,KACD,O,wFCt+BX,aAcC,WAAoBq5B,GAAA,KAAAA,K,OASpB,YAAAC,gBAAA,sBACC9N,WAAW,WACV,EAAKuolB,UAAY,IAAIC,YAAY,EAAK36kB,GAAG7vC,cAAe,EAAKolB,YAO/D,YAAAqlmB,aAAA,WACC,OAAOrtnB,KAAKmtnB,W,sCA7BDG,GAAkB,Y,uBAAlBA,EAAkB,wF,EAJ/B,I,sBCHS,SAAUjrmB,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFL,MAC7F,KAEJM,YAAa,qDAAqDN,MAC9D,KAEJgB,SACI,+EAA+EhB,MAC3E,KAERiB,cAAe,+BAA+BjB,MAAM,KACpDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EAEpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,cACNC,EAAG,mBACHC,GAAI,YACJ/B,EAAG,QACHgC,GAAI,WACJC,EAAG,MACHC,GAAI,SACJhN,EAAG,UACHiN,GAAI,aACJG,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,mCAExBC,QAAS,SAAUC,GACf,IACIymB,EAAS,GAiCb,OAlCQzmB,EAyBA,GAEAymB,EADM,KA1BNzmB,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXymB,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBAzmB,IAkCDA,EAASymB,GAEpBxmB,KAAM,CACFC,IAAK,EACLC,IAAK,KA/FyB/gB,CAAQ,EAAQ,U,wRCNnD,IAAMuvG,EAAb,uIACI,SAAWo3O,EAAYt3O,EAAYC,EAAYm5gB,EAAYpwS,GACvDn9U,KAAKy8B,YAAY54B,KAAKswG,KAF9B,yBAII,SAAYn/E,EAAOmoT,GACfn9U,KAAKy8B,YAAYzH,MAAMA,KAL/B,4BAOI,SAAemoT,GACXn9U,KAAKy8B,YAAY34B,eARzB,C,UAAqC,I,+6BCA/B,SAAU0pnB,IAAmB,2BAAVn9W,EAAU,yBAAVA,EAAU,gBAC/B,IAAMlsQ,EAASksQ,EAAWlsQ,OAC1B,GAAe,IAAXA,EACA,MAAM,IAAIkwB,MAAM,uCAEpB,OAAO,SAAC9N,GAAD,OAAY,YAAIknmB,EAAQp9W,EAAYlsQ,GAAxB,CAAiCoiB,IAExD,SAASknmB,EAAQ16lB,EAAO5uB,GAcpB,OAbe,SAACo3B,GAEZ,IADA,IAAImylB,EAAcnylB,EACT1zB,EAAI,EAAGA,EAAI1D,EAAQ0D,IAAK,CAC7B,IAAM0hI,EAAmB,MAAfmkf,EAAsBA,EAAY36lB,EAAMlrB,SAAMpD,EACxD,QAAU,IAAN8kI,EAIA,OAHAmkf,EAAcnkf,EAMtB,OAAOmkf,G,wSCff,IAAMC,EAA0B,GA+EhC,SAASC,EAAaltnB,EAAM03B,GAExB,GADAu1lB,EAAwBjtnB,IAASitnB,EAAwBjtnB,IAAS,GAAK,EACjD,mBAAX03B,EACP,OAAOy1lB,EAAWntnB,EAAM,kBAAc8b,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI3O,EAAM,WAAN,cAAkB,CAAE13B,WAG9F,OADW03B,EAASA,EAAO01lB,IAAM,SAE7B,IAAK,QACD,OAAOD,EAAWntnB,EAAM,iBAAO,CAAEA,UACrC,IAAK,QACD,OAAOmtnB,EAAWntnB,EAAM,SAACqyB,GAAD,OAAYvW,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIhU,GAAQ,CAAEryB,WAClF,QACI,MAAM,IAAI2zB,MAAM,uBAG5B,SAAS,IACL,MAAO,CAAEy5lB,IAAK,QAASC,QAAItpnB,GAK/B,SAASopnB,EAAWntnB,EAAMstnB,GACtB,OAAOxxmB,OAAOu3B,eAAei6kB,EAAS,OAAQ,CAC1CzsnB,MAAOb,EACPi9B,UAAU,IAIlB,IAAMswlB,EAAO,mB,iBACPC,E,YACF,kDACU,CAAExtnB,KAAMutnB,K,yDAElB,SAAKlrjB,GACD,GAAsB,mBAAXA,EACP,MAAM,IAAIvwB,UAAJ,uPAKL,QAAsB,IAAXuwB,EACZ,MAAM,IAAIvwB,UAAJ,2BAEL,QAA2B,IAAhBuwB,EAAOriE,KACnB,MAAM,IAAI8xC,UAAJ,qCAEV,oBAAWuwB,M,sBAEf,c,yBAGA,WACI,+B,CAvBqBr0D,EAAA,G,OA0B7Bw/mB,EAAe3tnB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK0tnB,IAC5EA,EAAetpnB,WAAQ,KAA0B,CAAEC,MAAOqpnB,EAAgBppnB,QAASopnB,EAAe3tnB,Y,KAM5F4tnB,EAA4B,CAAC,GAE7BC,EAAoB,IAAI,IAAe,mCACvCC,EAAiB,IAAI,IAAe,sCACpCC,EAAgB,IAAI,IAAe,6BACnCC,EAAkB,IAAI,IAAe,+BACrCC,EAAmB,IAAI,IAAe,iDACtCC,EAAmB,IAAI,IAAe,gCACtCC,EAAoB,IAAI,IAAe,yCACvCC,EAAiB,IAAI,IAAe,8BACpCC,EAAkB,IAAI,IAAe,uCACrCC,EAAoB,IAAI,IAAe,yCACvCC,EAAmB,IAAI,IAAe,wCACtCC,EAAkB,IAAI,IAAe,uCACrCC,EAA0B,IAAI,IAAe,+CAC7CC,EAAmB,IAAI,IAAe,gCAItCC,EAA8B,IAAI,IAAe,2CAIjDC,EAAgB,IAAI,IAAe,6BAKnCC,EAA0B,IAAI,IAAe,+CAK7CC,EAAsB,IAAI,IAAe,0CAIzCC,EAAuB,IAAI,IAAe,mDAI1CC,GAAwB,IAAI,IAAe,uCAC3CC,GAAgC,IAAI,IAAe,gDAmCzD,SAASC,GAAgBzyiB,GAGrB,IAHgD,IAAjB4T,EAAiB,uDAAF,GACxC8+hB,EAAclzmB,OAAOC,KAAKugE,GAC1B2yiB,EAAgB,GACb9nnB,EAAI,EAAGA,EAAI6nnB,EAAYvrnB,OAAQ0D,IAAK,CACzC,IAAM8U,EAAM+ymB,EAAY7nnB,GACK,mBAAlBm1E,EAASrgE,KAChBgzmB,EAAchzmB,GAAOqgE,EAASrgE,IAGtC,IAAMizmB,EAAmBpzmB,OAAOC,KAAKkzmB,GACrC,OAAO,SAAqBtnnB,EAAO06D,GAC/B16D,OAAkB5D,IAAV4D,EAAsBuoF,EAAevoF,EAG7C,IAFA,IAAIwnnB,GAAa,EACXt0iB,EAAY,GACT,EAAI,EAAG,EAAIq0iB,EAAiBzrnB,OAAQ,IAAK,CAC9C,IAAM,EAAMyrnB,EAAiB,GAEvBE,EAAsBznnB,EAAM,GAC5B0nnB,GAAkB/+hB,EAFR2+hB,EAAc,IAEEG,EAAqB/sjB,GACrDwY,EAAU,GAAOw0iB,EACjBF,EAAaA,GAAcE,IAAoBD,EAEnD,OAAOD,EAAat0iB,EAAYlzE,GAQxC,SAAS6lU,KAAoB,2BAATh9D,EAAS,yBAATA,EAAS,gBACzB,OAAO,SAAUt5N,GACb,GAAyB,IAArBs5N,EAAU/sQ,OACV,OAAOyzC,EAEX,IAAMzgC,EAAO+5P,EAAUA,EAAU/sQ,OAAS,GAE1C,OADa+sQ,EAAU1nQ,MAAM,GAAI,GACrBqsQ,YAAY,SAAC61H,EAAU18X,GAAX,OAAkBA,EAAG08X,IAAWv0X,EAAKygC,KAGrE,SAASo4kB,GAAqBC,EAAgBC,GAO1C,OANI3lnB,MAAMyL,QAAQk6mB,IAAiBA,EAAa/rnB,OAAS,IACrD8rnB,EAAiB/hT,GAAQv2R,MAAM,KAAd,sBACVu4kB,GADU,CAEbD,MAGD,SAACjziB,EAAU4T,GACd,IAAMI,EAAUi/hB,EAAejziB,GAC/B,OAAO,SAAC30E,EAAO06D,GAEX,OAAOiuB,EADP3oF,OAAkB5D,IAAV4D,EAAsBuoF,EAAevoF,EACvB06D,K,IAiB5B,G,gHAA0By3D,EAAA,GAE1B,G,gHAAiC,GAEjC21f,GAAS,8B,kBACTC,E,YACF,WAAYv9R,EAAYjiQ,EAAc5T,EAAUiziB,GAAc,kCAC1D,YAAMA,EAAejziB,EAAU4T,MAC1BiiQ,WAAaA,EAClB,EAAKjiQ,aAAeA,EACpB,EAAK5T,SAAWA,EAChB,EAAKiziB,eAAiBA,EALoC,E,+DAO9D,SAAW1mM,GACPvpb,KAAKqwnB,YAAY,CAAC9mM,M,yBAEtB,SAAYjnb,GACR,IAAM06E,EAAW16E,EAASmT,OAAO,SAAC66mB,EAAD,GAA+E,IAA/DtziB,EAA+D,EAA/DA,SAAUiziB,EAAqD,EAArDA,eAAgBC,EAAqC,EAArCA,aAAct/hB,EAAuB,EAAvBA,aAAcj0E,EAAS,EAATA,IAC7Fq0E,EAA8B,mBAAbhU,EA/BnC,SAAqCkziB,GACjC,IAAMD,EAAiB1lnB,MAAMyL,QAAQk6mB,IAAiBA,EAAa/rnB,OAAS,EACtE+pU,GAAO,WAAP,cAAWgiT,IACX,SAACpmf,GAAD,OAAOA,GACb,OAAO,SAAC94C,EAASJ,GAEb,OADAI,EAAUi/hB,EAAej/hB,GAClB,SAAC3oF,EAAO06D,GAEX,OAAOiuB,EADP3oF,OAAkB5D,IAAV4D,EAAsBuoF,EAAevoF,EACvB06D,KAwBhBwtjB,CAA4BL,EAA5BK,CAA0CvziB,EAAU4T,GACpDo/hB,GAAqBC,EAAgBC,EAArCF,CAAmDhziB,EAAU4T,GAEnE,OADA0/hB,EAAY3zmB,GAAOq0E,EACZs/hB,GACR,IACHtwnB,KAAKwwnB,YAAYxziB,K,2BAErB,SAAcusW,GACVvpb,KAAKywnB,eAAe,CAAClnM,M,4BAEzB,SAAejnb,GACXtC,KAAK0wnB,eAAepunB,EAASmH,IAAI,SAAC8/H,GAAD,OAAOA,EAAE5sH,S,wBAE9C,SAAWA,EAAKq0E,GACZhxF,KAAKwwnB,YAAL,eAAoB7zmB,EAAMq0E,M,yBAE9B,SAAYhU,GACRh9E,KAAKg9E,SAAWxgE,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAKg9E,UAAWA,GAChEh9E,KAAK2wnB,eAAen0mB,OAAOC,KAAKugE,M,2BAEpC,SAAc4ziB,GACV5wnB,KAAK0wnB,eAAe,CAACE,M,4BAEzB,SAAeC,GAAW,WACtBA,EAAYx9mB,QAAQ,SAACsJ,GAtF7B,IAAcuwO,EAAQ4jY,EAuFV,EAAK9ziB,UAvFHkwK,EAuFmB,EAAKlwK,SAvFhB8ziB,EAuF0Bn0mB,EAtFrCH,OAAOC,KAAKywO,GACd/3O,OAAO,SAACwH,GAAD,OAASA,IAAQm0mB,IACxBr7mB,OAAO,SAACmnB,EAAQjgB,GAAT,OAAiBH,OAAOuqB,OAAOnK,EAAdpgB,OAAA,IAAAA,CAAA,GAAyBG,EAAMuwO,EAAOvwO,MAAS,OAsFxE3c,KAAK2wnB,eAAeE,K,4BAExB,SAAeA,GACX7wnB,KAAK6D,KAAK7D,KAAKiwnB,eAAejwnB,KAAKg9E,SAAUh9E,KAAK4wF,eAClD5wF,KAAK6yV,WAAWhvV,KAAK,CACjBnD,KAAMyvnB,GACN7tnB,SAAUuunB,M,yBAGlB,WACI7wnB,KAAK8D,e,CAnDgB4K,EAAA,G,OAsD7B0hnB,EAAe7vnB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAK4vnB,GAAgB,KAAgB,IAA2B,KAAgB9B,GAAgB,KAAgBG,GAAmB,KAAgBF,KAC1N6B,EAAexrnB,WAAQ,KAA0B,CAAEC,MAAOurnB,EAAgBtrnB,QAASsrnB,EAAe7vnB,Y,KAoB5FwwnB,GAA4B,CAC9B,GACA,CAAExunB,QAAS,GAAmBC,YAAa,IAC3C,CAAED,QAAS,GAA0BC,YAAa,I,kBAGhDwunB,E,wIACF,WACIhxnB,KAAK8D,e,CAFuBL,EAAA,G,OAKpCutnB,EAAsBzwnB,UAAO,SAAuCC,GAAK,OAAOywnB,GAAmCzwnB,GAAKwwnB,IACxHA,EAAsBpsnB,WAAQ,KAA0B,CAAEC,MAAOmsnB,EAAuBlsnB,QAASksnB,EAAsBzwnB,Y,KACjH0wnB,GAAmD,KAA6B,IAIhFC,GAAoC,CACtC,IAGE,G,gHAAwB12f,EAAA,G,kBAExB22f,E,YACF,WAAYlpT,EAAUmpT,EAAUx7R,EAAgBhlQ,GAAY,0BACxD,YAAMA,IACN,IAEMyxJ,EAAO,CAAEh6O,MAAOuoF,GAChBygiB,EAHkBppT,EAASjkU,KAAK,OAAAkiI,EAAA,GAAUh4F,EAAA,IACLlqC,KAAK,OAAA6mH,EAAA,GAAeumgB,IAEpBptnB,KAAK,OAAAm+O,EAAA,GAAKmvY,GAAajvY,IALV,OAMxD,EAAKm0G,kBAAoB66R,EAAgBntnB,UAAU,YAAsB,IAAZ6+D,EAAY,EAAZA,OACzD,EAAKl/D,KADgE,EAAnBwE,OAElDutV,EAAe/xV,KAAKk/D,KARgC,E,gEAW5D,WACI/iE,KAAKw2V,kBAAkB5gV,cACvB5V,KAAK8D,e,CAdO4K,EAAA,G,OAiBpByinB,EAAM5wnB,UAAO,SAAuBC,GAAK,OAAO,IAAKA,GAAK2wnB,GAAO,KAAgB,GAAiB,KAAgB,IAAoB,KAAgB,IAAwB,KAAgB7C,KAC9L6C,EAAMvsnB,WAAQ,KAA0B,CAAEC,MAAOssnB,EAAOrsnB,QAASqsnB,EAAM5wnB,YACvE4wnB,EAAMlD,KAAOA,E,KAcb,SAASqD,KAAqE,IAAzDC,EAAyD,uDAAvC,CAAElpnB,WAAO5D,GAA8B,4DAAhBs+D,EAAgB,KAARiuB,EAAQ,KAClE3oF,EAAUkpnB,EAAVlpnB,MACR,MAAO,CAAEA,MAAO2oF,EAAQ3oF,EAAO06D,GAASA,UAE5C,IAAMyujB,GAAkB,CACpB,GACA,CAAEjvnB,QAAS,GAAiBC,YAAa,K,kBAGvCivnB,E,YACF,WAAYl7R,EAAQm7R,EAAiBC,GAAc,kCAC/C,aACKD,gBAAkBA,EACvB,EAAKC,eAAiBA,EACtB,EAAKprmB,OAASgwU,EAJiC,E,2DAMnD,SAAOq7R,GAAqB,2BAALjmf,EAAK,iCAALA,EAAK,kBACxB,OAAO,GAAOz2G,KAAP,SAAM,CAAM,KAAM08lB,GAAZ,OAA4Bjmf,GAAlC,CAAyC3rI,Q,kBAEpD,SAAK4rK,GACD,IAAMt0I,EAAQ,IAAIm6lB,EAAMzxnB,KAAMA,KAAK0xnB,gBAAiB1xnB,KAAK2xnB,gBAEzD,OADAr6lB,EAAMs0I,SAAWA,EACVt0I,I,sBAEX,SAASyrC,GACL/iE,KAAK0xnB,gBAAgB7tnB,KAAKk/D,K,kBAE9B,SAAKA,GACD/iE,KAAK0xnB,gBAAgB7tnB,KAAKk/D,K,mBAE9B,SAAMpmC,GACF38B,KAAK0xnB,gBAAgB18lB,MAAM2H,K,sBAE/B,WACI38B,KAAK0xnB,gBAAgB5tnB,a,wBAEzB,SAAW6Y,EAAKq0E,GACZhxF,KAAK2xnB,eAAeE,WAAWl1mB,EAAKq0E,K,2BAExC,SAAcr0E,GACV3c,KAAK2xnB,eAAeG,cAAcn1mB,O,CA/BtB69G,EAAA,G,OAkCpBi3f,EAAMlxnB,UAAO,SAAuBC,GAAK,OAAO,IAAKA,GAAKixnB,GAAO,KAAgB,IAAkB,KAAgB,GAAiB,KAAgB,MACpJA,EAAM7snB,WAAQ,KAA0B,CAAEC,MAAO4snB,EAAO3snB,QAAS2snB,EAAMlxnB,Y,KAUjEwxnB,GAAkB,CAAC,IACzB,SAAS,GAAOH,EAAaI,GAAqB,2BAALrmf,EAAK,iCAALA,EAAK,kBAC9C,OAAO,SAAwBkhC,GAC3B,IAAIold,EACJ,GAA2B,iBAAhBL,EAA0B,CACjC,IAAMM,EAAa,CAACF,GAAD,OAAiBrmf,GAAOx2H,OAAOuyC,SAClDuqkB,EAAUpld,EAAQ7oK,KAAKwpnB,EAAK,WAAL,GAAMoE,GAAN,mBAAsBM,UAE5C,IAA2B,mBAAhBN,EAIZ,MAAM,IAAIp/kB,UAAU,kCAA2Bo/kB,EAA3B,6DAHpBK,EAAUpld,EAAQ7oK,KAAK,YAAI,SAACuiB,GAAD,OAAYqrmB,EAAYrrmB,EAAQyrmB,MAM/D,OAAOC,EAAQjunB,KAAK,OAAAk4B,EAAA,OAQ5B,SAASi2lB,KACL,OALuB,EAQ3B,SAASC,GAAar2mB,EAAGC,GACrB,OAAOD,IAAMC,EAEjB,SAASq2mB,GAAmBxynB,EAAMyynB,EAAet1kB,GAC7C,IAAK,IAAIn1C,EAAI,EAAGA,EAAIhI,EAAKsE,OAAQ0D,IAC7B,IAAKm1C,EAAWn9C,EAAKgI,GAAIyqnB,EAAczqnB,IACnC,OAAO,EAGf,OAAO,EAKX,SAAS0qnB,GAAeC,GAA2E,IAI3FC,EAJ8BC,EAA6D,uDAA1CN,GAAcO,EAA4B,uDAAZP,GAC/EE,EAAgB,KAEhBn+N,EAAa,KAEjB,SAASn3R,IACLs1f,EAAgB,KAChBn+N,EAAa,KAEjB,SAASy+N,IAA4B,IAAlBh2lB,EAAkB,4DAATn4B,EACxBgunB,EAAiB,CAAE71lB,UAEvB,SAASi2lB,IACLJ,OAAiBhunB,EAGrB,SAASsnQ,IACL,QAAuBtnQ,IAAnBgunB,EACA,OAAOA,EAAe71lB,OAE1B,IAAK01lB,EAGD,OAFAn+N,EAAaq+N,EAAa76kB,MAAM,KAAMr+B,WACtCg5mB,EAAgBh5mB,UACT66Y,EAEX,IAAKk+N,GAAmB/4mB,UAAWg5mB,EAAeI,GAC9C,OAAOv+N,EAEX,IAAM2+N,EAAYN,EAAa76kB,MAAM,KAAMr+B,WAE3C,OADAg5mB,EAAgBh5mB,UACZq5mB,EAAcx+N,EAAY2+N,GACnB3+N,GAEXA,EAAa2+N,EACNA,GAEX,MAAO,CAAE/mX,WAAU/uI,QAAO41f,YAAWC,eAEzC,SAASE,KACL,OAAOC,GAAsBT,IAAtB,wBAEX,SAASU,GAAe5qnB,EAAO1H,EAAWoyB,EAAOmgmB,GAC7C,QAAczunB,IAAVsuB,EAAqB,CACrB,IAAM,EAAOpyB,EAAU8I,IAAI,SAACuF,GAAD,OAAQA,EAAG3G,KACtC,OAAO6qnB,EAAkBnnX,SAASp0N,MAAM,KAAM,GAElD,IAAM93C,EAAOc,EAAU8I,IAAI,SAACuF,GAAD,OAAQA,EAAG3G,EAAO0qB,KAC7C,OAAOmgmB,EAAkBnnX,SAASp0N,MAAM,KAAjC,sBAA2C93C,GAA3C,CAAiDkzB,KAgF5D,SAASigmB,GAAsB/xkB,GAE9B,IAFuCj5B,EAEvC,uDAFiD,CAC9CmrmB,QAASF,IAET,OAAO,WAAkB,2BAALz0kB,EAAK,yBAALA,EAAK,gBACrB,IAAI3+C,EAAO2+C,EACX,GAAIj0C,MAAMyL,QAAQnW,EAAK,IAAK,CACxB,MAAwBA,EAAxB,iBAAO+qC,EAAP,KAAgBunO,EAAhB,WACAtyQ,EAAO,GAAH,mBAAO+qC,GAAP,YAAgBunO,IAExB,IAAMxxQ,EAAYd,EAAK2J,MAAM,EAAG3J,EAAKsE,OAAS,GACxCivnB,EAAYvznB,EAAKA,EAAKsE,OAAS,GAC/BkvnB,EAAoB1ynB,EAAUwU,OAAO,SAACm/B,GAAD,OAAcA,EAASg/kB,SAAuC,mBAArBh/kB,EAASg/kB,UACvFJ,EAAoBjykB,EAAQ,WAAsB,2BAATtgD,EAAS,yBAATA,EAAS,gBACpD,OAAOyynB,EAAUz7kB,MAAM,KAAMh3C,KAE3B4ynB,EAAgBhB,GAAe,SAAUlqnB,EAAO0qB,GAClD,OAAO/K,EAAQmrmB,QAAQx7kB,MAAM,KAAM,CAC/BtvC,EACA1H,EACAoyB,EACAmgmB,MAGR,SAASI,IACLC,EAAcv2f,QACdk2f,EAAkBl2f,QAClBq2f,EAAkBhgnB,QAAQ,SAACihC,GAAD,OAAcA,EAASg/kB,YAErD,OAAO92mB,OAAOuqB,OAAOwslB,EAAcxnX,SAAU,CACzCunX,UACAF,UAAWF,EAAkBnnX,SAC7B6mX,UAAWW,EAAcX,UACzBC,YAAaU,EAAcV,eAIvC,SAASW,GAAsBC,GAC3B,OAAOV,GAAe,SAAC1qnB,GACnB,IAAMqrnB,EAAerrnB,EAAMornB,GAU3B,OATgC,gBAAiBA,KAAeprnB,GAC5D0iC,QAAQ24B,KAAK,yCAAmC+vjB,EAAnC,wKAGqBA,EAHrB,iDAIkBA,EAJlB,2JAQVC,GACR,SAACA,GAAD,OAAkBA,IAGzB,IAAMC,GAAoB,2DAC1B,SAAS/+W,GAAYpoP,GACjB,YAAkB/nB,IAAX+nB,EAEX,SAASkoP,GAAOloP,GACZ,OAAkB,OAAXA,EAEX,SAASxW,GAAQwW,GACb,OAAOjiB,MAAMyL,QAAQwW,GAEzB,SAAS8xN,GAAS9xN,GACd,MAAyB,iBAAXA,EAElB,SAAS6xN,GAAU7xN,GACf,MAAyB,kBAAXA,EAElB,SAAS8xF,GAAS9xF,GACd,MAAyB,iBAAXA,EAElB,SAAS0lO,GAAa1lO,GAClB,MAAyB,iBAAXA,GAAkC,OAAXA,EAKzC,SAASkyN,GAAclyN,GACnB,IAJJ,SAAkBA,GACd,OAAO0lO,GAAa1lO,KAAYxW,GAAQwW,GAGnC6+K,CAAS7+K,GACV,OAAO,EAEX,IAAMonmB,EAAkBp3mB,OAAO24H,eAAe3oH,GAC9C,OAAOonmB,IAAoBp3mB,OAAOkW,WAAiC,OAApBkhmB,EAEnD,SAAS3nd,GAAWz/I,GAChB,MAAyB,mBAAXA,EAElB,SAASiyiB,GAAYjyiB,GACjB,OAAOy/I,GAAWz/I,IAAWA,EAAOkhB,eAAe,aAavD,SAAS2qB,GAAO7rC,GACZhQ,OAAO67C,OAAO7rC,GACd,IAAMqnmB,EAAmB5nd,GAAWz/I,GAiBpC,OAhBAhQ,OAAOquJ,oBAAoBr+I,GAAQnZ,QAAQ,SAAC+6B,GAExC,IAAIA,EAAKqpH,WAAW,WAhB5B,SAAwBjrI,EAAQ2hI,GAC5B,OAAO3xI,OAAOkW,UAAUgb,eAAexY,KAAK1I,EAAQ2hI,GAkB5C,CAAe3hI,EAAQ4hB,MACtByllB,GACc,WAATzllB,GAA8B,WAATA,GAA8B,cAATA,GACnC,CACb,IAAM0llB,EAAYtnmB,EAAO4hB,IACpB8jN,GAAa4hY,KAAc7nd,GAAW6nd,IACtCt3mB,OAAOu3mB,SAASD,IACjBz7jB,GAAOy7jB,MAIZtnmB,EAiBX,SAASwnmB,GAAkBxnmB,GAAiB,IAAT2kH,EAAS,uDAAF,GAEtC,IAAKyjI,GAAYpoP,IAAWkoP,GAAOloP,KAA4B,IAAhB2kH,EAAKhtI,OAChD,MAAO,CACHgtI,KAAM,CAAC,QACP5vI,MAAOirB,GAGf,IAAM/P,EAAOD,OAAOC,KAAK+P,GACzB,OAAO/P,EAAKhH,OAAO,SAACmnB,EAAQjgB,GACxB,GAAIigB,EACA,OAAOA,EAEX,IAAMr7B,EAAQirB,EAAO7P,GAErB,OAAI8hjB,GAAYl9jB,GACLq7B,IAEPg4O,GAAYrzQ,IACZmzQ,GAAOnzQ,IACP+8G,GAAS/8G,IACT88O,GAAU98O,IACV+8O,GAAS/8O,IACTyU,GAAQzU,MAGRm9O,GAAcn9O,GACPyynB,GAAkBzynB,EAAD,sBAAY4vI,GAAZ,CAAkBx0H,KAEvC,CACHw0H,KAAM,GAAF,mBAAMA,GAAN,CAAYx0H,IAChBpb,YAEL,GAEP,SAAS0ynB,GAAsBC,EAAgB1inB,GAC3C,IAAuB,IAAnB0inB,EAAJ,CAGA,IAAMC,EAAqBD,EAAe/if,KAAKnhG,KAAK,KAC9Chb,EAAQ,IAAIX,MAAJ,kCAAqC7iB,EAArC,gBAAoD2inB,EAApD,cAA4ER,GAA5E,kBAAuGninB,EAAvG,oBAGd,MAFAwjB,EAAMzzB,MAAQ2ynB,EAAe3ynB,MAC7ByzB,EAAMm/lB,mBAAqBA,EACrBn/lB,GAYV,SAASo/lB,GAA0BC,GAC/B,OAAI,eACO73mB,OAAOuqB,OAAO,CAAEutlB,4BAA4B,EAAOC,6BAA6B,EAAOC,yBAAyB,EAAMC,0BAA0B,EAAMC,0BAA0B,EAAOC,4BAA4B,GAASN,GAEhO,CACHC,4BAA4B,EAC5BC,6BAA6B,EAC7BC,yBAAyB,EACzBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,4BAA4B,GAGpC,SAASC,GAAT,GAAyG,IAA1DL,EAA0D,EAA1DA,4BAA6BD,EAA6B,EAA7BA,2BACxE,OAAO,SAACtjiB,GAAD,OAAaujiB,GAA+BD,EAnFvD,SAAuCtjiB,EAAS6jiB,GAC5C,OAAO,SAAUxsnB,EAAO06D,GAChB8xjB,EAAO9xjB,OAAOA,IAEdkxjB,GAD6BD,GAAkBjxjB,GACH,UAEhD,IAAMwY,EAAYyV,EAAQ3oF,EAAO06D,GAKjC,OAJI8xjB,EAAOxsnB,SAEP4rnB,GAD4BD,GAAkBz4iB,GACH,SAExCA,GAyELu5iB,CAA8B9jiB,EAAS,CACrCjuB,OAAQ,SAAC,GAAD,OAAYwxjB,IAAgCQ,GAAiB,IACrE1snB,MAAO,kBAAMisnB,KAEftjiB,GAEV,SAASgkiB,GAAT,GAAkG,IAApDP,EAAoD,EAApDA,yBAA0BD,EAA0B,EAA1BA,wBACpE,OAAO,SAACxjiB,GAAD,OAAayjiB,GAA4BD,EAxHpD,SAAsCxjiB,EAAS6jiB,GAC3C,OAAO,SAAUxsnB,EAAO06D,GACpB,IAAMkyjB,EAAMJ,EAAO9xjB,OAAOA,GAAU1K,GAAO0K,GAAUA,EAC/CwY,EAAYyV,EAAQ3oF,EAAO4snB,GACjC,OAAOJ,EAAOxsnB,QAAUgwD,GAAOkjB,GAAaA,GAqH1C25iB,CAA6BlkiB,EAAS,CACpCjuB,OAAQ,SAAC,GAAD,OAAY0xjB,IAA6BM,GAAiB,IAClE1snB,MAAO,kBAAMmsnB,KAEfxjiB,GAEV,SAAS+jiB,GAAiBhyjB,GACtB,OAAOA,EAAOriE,KAAK+2J,WAAW,SAElC,SAAS09d,GAAT,GAAqE,IAA3BT,EAA2B,EAA3BA,yBACtC,OAAO,SAAC1jiB,GAAD,OAAa0jiB,EA1CxB,SAAmC1jiB,EAAS6jiB,GACxC,OAAO,SAAUxsnB,EAAO06D,GACpB,GAAI8xjB,EAAO9xjB,OAAOA,KAAY,IAAO2+hB,kBACjC,MAAM,IAAIrtkB,MAAJ,kBAAqB0uC,EAAOriE,KAA5B,qCAA6DiznB,GAA7D,8BAEV,OAAO3iiB,EAAQ3oF,EAAO06D,IAsCpBqyjB,CAA0BpkiB,EAAS,CACjCjuB,OAAQ,SAAC,GAAD,OAAY2xjB,IAA6BK,GAAiB,MAEpE/jiB,GAEV,SAASqkiB,GAAqBhB,GAC1B,MAAO,CACH,CACI9xnB,QAAS+snB,EACT12mB,SAAUy7mB,GAEd,CACI9xnB,QAAS8snB,EACTjmmB,WAAYksmB,GACZnsmB,KAAM,CAACmmmB,IAEX,CACI/snB,QAASgtnB,GACTpmmB,KAAM,CAACkmmB,GACPjmmB,WAAYgrmB,IAEhB,CACI7xnB,QAAS4snB,EACTzlmB,OAAO,EACPP,KAAM,CAACommB,IACPnmmB,WAAY4rmB,IAEhB,CACIzynB,QAAS4snB,EACTzlmB,OAAO,EACPP,KAAM,CAACommB,IACPnmmB,WAAYwrmB,IAEhB,CACIrynB,QAAS4snB,EACTzlmB,OAAO,EACPP,KAAM,CAACommB,IACPnmmB,WAAY+rmB,KAIxB,SAASI,KACL,MAAO,CACH,CACIhznB,QAASitnB,GACT9lmB,OAAO,EACPP,KAAM,CAACommB,IACPnmmB,WAAYosmB,KAIxB,SAASF,GAAsBjB,GAC3B,OAAOA,EAEX,SAASmB,GAA2Bp9lB,GAChC,GAAKA,EAAOu8lB,2BAAZ,CAGA,IAAMhlC,EAAanzkB,OAAOkY,QAAQi5lB,GAC7Bx4mB,OAAO,uCAAuC,IAC9C1L,IAAI,yCACT,GAAIkmlB,EAAWxrlB,OACX,MAAM,IAAIkwB,MAAJ,sDAAyDs7jB,EAC1DlmlB,IAAI,SAAC/I,GAAD,iBAAcA,EAAd,OACJsvC,KAAK,MAFJ,aAEc2jlB,GAFd,iC,sBAMR8B,E,YACF,WAAYxtT,EAAUmpT,EAAUsE,EAAiBp+lB,EAAOo3I,EAAOind,GAAW,sB,OAE9EF,EAAgBl1nB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKi1nB,GAAiB,KAAgB,GAAiB,KAAgB,IAAoB,KAAgB,IAAwB,KAAgB,IAAQ,KAAgBrH,EAAmB,GAAI,KAAgBoB,GAA+B,KAC1TiG,EAAgBv8mB,UAAO,KAAwB,CAAExY,KAAM+0nB,IACvDA,EAAgBt8mB,UAAO,KAAwB,I,uBAwBzCy8mB,E,8BACF,WAAYtznB,EAAUuznB,EAAiBlE,EAAgBvyiB,EAAMu2iB,GAAW,oBACpE31nB,KAAKsC,SAAWA,EAChBtC,KAAK61nB,gBAAkBA,EACvB71nB,KAAK2xnB,eAAiBA,EACtB,IAAMmE,EAAQxznB,EAASmH,IAAI,SAAC8/a,EAAS5/a,GACjC,IACMqzE,EAD2B64iB,EAAgBlhnB,QACQhL,GACzD,OAAO6S,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIwiZ,GAAU,CAAEvsW,WAAU4T,aAAcmliB,GAAqBxsM,EAAQ34V,kBAE5G+giB,EAAetB,YAAYyF,I,0BAE/B,WACI91nB,KAAK2xnB,eAAelB,eAAezwnB,KAAKsC,c,UAGhDsznB,EAAmBr1nB,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKo1nB,GAAoB,KAAgB7G,GAAkB,KAAgBE,GAAmB,KAAgB,IAAiB,KAAgB,IAAkB,KAAgBO,GAA+B,KAC/RoG,EAAmB18mB,UAAO,KAAwB,CAAExY,KAAMk1nB,IAC1DA,EAAmBz8mB,UAAO,KAAwB,I,uBAwB5C68mB,E,2FACF,SAAeh5iB,GAAqB,IAAX5kD,EAAW,uDAAF,GAC9B,MAAO,CACH2mF,SAAU,GACV5sF,UAAW,CACP,CACI5vB,QAAS6rnB,EACThlmB,WAAY6lJ,GACZ9lJ,KAAM,CAAC,CAAC,GAAO,IAAI,IAAY,IAAI,OAEvC,CAAE5mB,QAAS8rnB,EAAgBz1mB,SAAUwf,EAAOw4D,cAC5C,CACIruF,QAAS+rnB,EACTllmB,WAAY2smB,GACZ5smB,KAAM,CAACklmB,IAEX,CAAE9rnB,QAASmsnB,EAAmB91mB,SAAUokE,GACxC,CACIz6E,QAASqsnB,EACTpsnB,YAAaw6E,aAAoB,IAAiBA,EAAW0xiB,GAEjE,CACInsnB,QAASksnB,EACTtlmB,KAAM,CAAC,IAAUulmB,EAAmB,CAAC,IAAI,IAAOE,KAChDxlmB,WAAY6smB,IAEhB,CACI1znB,QAAS2snB,EACTt2mB,SAAUwf,EAAO83lB,aAAe93lB,EAAO83lB,aAAe,IAE1D,CACI3tnB,QAAS6snB,EACTjmmB,KAAM,CAACgmmB,EAAeD,GACtB9lmB,WAAY8smB,IAEhB,CACI3znB,QAASisnB,EACT51mB,SAAUwf,EAAO63lB,eACX73lB,EAAO63lB,eACPR,IAEV,CACIltnB,QAASgsnB,EACTplmB,KAAM,CAACqlmB,EAAkBY,GACzBhmmB,WAAY4mmB,IAEhB7B,EACA4C,GACAG,GACAM,GACAO,GACAsD,GAAqBj9lB,EAAOi8lB,eAC5BkB,S,wBAIZ,SAAkBY,EAAoBC,GAA6B,IAAXh+lB,EAAW,uDAAF,GAC7D,MAAO,CACH2mF,SAAU,GACV5sF,UAAW,CACP,CACI5vB,QAASusnB,EACTplmB,OAAO,EACP9Q,SAAUu9mB,aAA8B35mB,OAAS,GAAK4b,GAE1D,CACI71B,QAASosnB,EACTjlmB,OAAO,EACP9Q,SAAU,CACN+D,IAAKw5mB,aAA8B35mB,OAC7B25mB,EAAmBh1nB,KACnBg1nB,EACNlG,eAAkB73lB,aAAkB,MAAmBA,EAAO63lB,eAExDR,GADAr3lB,EAAO63lB,eAEbC,aAAgB93lB,aAAkB,MAAmBA,EAAO83lB,aAEtD,GADA93lB,EAAO83lB,aAEbt/hB,aAAgBx4D,aAAkB,MAAmBA,EAAOw4D,kBAEtDnsF,EADA2zB,EAAOw4D,eAIrB,CACIruF,QAASwsnB,EACT5lmB,KAAM,CAAC,IAAU2lmB,EAAkBH,GACnCvlmB,WAAYitmB,IAEhB,CACI9znB,QAASssnB,EACTnlmB,OAAO,EACP9Q,SAAUu9mB,aAA8B35mB,OAClC25mB,EAAmBnliB,QACnBoliB,GAEV,CACI7znB,QAASysnB,EACTtlmB,OAAO,EACPlnB,YAAa4znB,aAA4B,IACnCA,EACAvH,GAEV,CACItsnB,QAAS0snB,EACTvlmB,OAAO,EACPP,KAAM,CACF,IACA0lmB,EACA,CAAC,IAAI,IAAOG,KAEhB5lmB,WAAYktmB,IAEhBf,W,UAKhBS,EAAYz1nB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKw1nB,IACtEA,EAAY98mB,UAAO,KAAwB,CAAExY,KAAMs1nB,IACnDA,EAAY78mB,UAAO,KAAwB,I,KAK3C,SAAS88mB,GAAqB92mB,EAAU69D,GACpC,OAAOA,aAAoB,IAAiB79D,EAASjN,IAAI8qE,GAAYA,EAEzE,SAASq5iB,GAAoBl3mB,EAAUo3mB,EAASC,GAC5C,OAAOA,EAAc/snB,IAAI,SAACgtnB,EAAM9snB,GAC5B,GAAI4snB,EAAQ5snB,aAAkB,IAAgB,CAC1C,IAAM+snB,EAAOv3mB,EAASjN,IAAIqknB,EAAQ5snB,IAClC,MAAO,CACHgT,IAAK85mB,EAAK95mB,IACVszmB,eAAgByG,EAAKzG,eACfyG,EAAKzG,eACLR,GACNS,aAAcwG,EAAKxG,aAAewG,EAAKxG,aAAe,GACtDt/hB,aAAc8liB,EAAK9liB,cAG3B,OAAO6liB,IAGf,SAASH,GAAuBn3mB,EAAUw3mB,GAItC,OAHiBA,EAAkBltnB,IAAI,SAACunF,GACpC,OAAOA,aAAmB,IAAiB7xE,EAASjN,IAAI8+E,GAAWA,IAI3E,SAAS+kiB,GAAqBnliB,GAC1B,MAA4B,mBAAjBA,EACAA,IAEJA,EAEX,SAASsliB,GAAoBhG,EAAc0G,GACvC,OAAO1G,EAAal3mB,OAAO49mB,GAE/B,SAAS3nd,GAAqB33I,GAC1B,GAAIA,EACA,MAAM,IAAIkb,UAAJ,oGAEV,MAAO,Y,kFCnpCX,aASC,WAAoBC,EAAwBS,GAAxB,KAAAT,KAAwB,KAAAS,S,OAO5C,YAAA+C,QADA,SACQzpB,GAEP,IACMqqmB,EADSrqmB,EAAO+nB,QAAQ,oBACJnpC,cAAc,uBACpCyrnB,GACH72nB,KAAKkzC,OAAO2gF,YAAYgjgB,EAAY,UAGrC,IAAMC,EAAOtqmB,EAAO+nB,QAAQ,gBACxBuilB,GACH92nB,KAAKkzC,OAAOu9E,SAASqmgB,EAAM,W,sCAvBjBC,GAAsB,sB,uBAAtBA,EAAsB,sE,gCAAtB,yB,EAHb,I,0JCJM,SAAUttnB,EAAIwyJ,EAASxxB,GACzB,OAAO,SAAsBlkH,GACzB,GAAuB,mBAAZ01I,EACP,MAAM,IAAIzpH,UAAU,8DAExB,OAAOjsB,EAAO8V,KAAK,IAAI26lB,EAAY/6d,EAASxxB,KAG7C,IAAMusf,EAAb,8BACI,WAAY/6d,EAASxxB,GAAO,oBACxBzqI,KAAKi8J,QAAUA,EACfj8J,KAAKyqI,QAAUA,GAHvB,mBAKI,SAAKluG,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI+ynB,EAAc16lB,EAAYv8B,KAAKi8J,QAASj8J,KAAKyqI,cANjF,GASMwsf,E,YACF,WAAYx6lB,EAAaw/H,EAASxxB,GAAO,M,MAAA,2B,EACrC,K,EAAA,E,EAAA,CAAMhuG,G,kBAAN,E,iGACKw/H,QAAUA,EACf,EAAK/kJ,MAAQ,EACb,EAAKuzH,QAAUA,GAAW,EAJW,E,0DAMzC,SAAMlpI,GACF,IAAIq7B,EACJ,IACIA,EAAS58B,KAAKi8J,QAAQ/mI,KAAKl1B,KAAKyqI,QAASlpI,EAAOvB,KAAKkX,SAEzD,MAAOylB,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAG3B38B,KAAKy8B,YAAY54B,KAAK+4B,O,CAhBF,M,sBCPnB,SAAUva,GAAU,aAYzB,SAAS0qL,EAAuBrnL,EAAQs3I,EAAergJ,GAUnD,MAAY,MAARA,EACOqgJ,EAAgB,uCAAW,uCAE3Bt3I,EAAS,KArBFs/B,GAqB6Bt/B,EApB3CsnL,EAQS,CACTnoL,GAAIm4I,EAAgB,6HAA2B,6HAC/Cl4I,GAAIk4I,EAAgB,2GAAwB,2GAC5Ch4I,GAAI,6EACJC,GAAI,uEACJE,GAAI,iHACJE,GAAI,iHACJE,GAAI,kEAKgC5I,GApBvB4F,MAAM,KAChByiC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCgoJ,EAAM,GACNhoJ,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAChEgoJ,EAAM,GACNA,EAAM,IANlB,IAAsBhoJ,EACdgoJ,EAuBR,IAAIvqL,EAAc,CACd,uBACA,uBACA,uBACA,uBACA,+BACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,wBAMKJ,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJG,OAAQ,kbAAoFR,MACxF,KAEJkiH,WACI,saAAkFliH,MAC9E,MAGZM,YAAa,CAETE,OAAQ,6QAAgER,MACpE,KAEJkiH,WACI,kRAAgEliH,MAC5D,MAGZgB,SAAU,CACNkhH,WACI,mVAAgEliH,MAC5D,KAERQ,OAAQ,mVAAgER,MACpE,KAEJmiH,SAAU,0JAEdlhH,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,6FAAuBlB,MAAM,KAC1CE,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAGlBC,YACI,+wBAGJQ,iBACI,+wBAGJC,kBACI,wgBAGJC,uBACI,8TACJO,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,0DACTC,QAAS,oDACTE,QAAS,8CACTD,SAAU,SAAU0nC,GAChB,GAAIA,EAAIpmC,SAAW3lB,KAAK2lB,OAcpB,OAAmB,IAAf3lB,KAAK8xC,MACE,mCAEA,6BAhBX,OAAQ9xC,KAAK8xC,OACT,KAAK,EACD,MAAO,oFACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oFACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,sFAUvBvtB,SAAU,SAAUwnC,GAChB,GAAIA,EAAIpmC,SAAW3lB,KAAK2lB,OAcpB,OAAmB,IAAf3lB,KAAK8xC,MACE,mCAEA,6BAhBX,OAAQ9xC,KAAK8xC,OACT,KAAK,EACD,MAAO,wEACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,wEACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0EAUvBttB,SAAU,KAEdC,aAAc,CACVC,OAAQ,oCACRC,KAAM,oCACNC,EAAG,8FACHC,GAAIkoL,EACJjqL,EAAGiqL,EACHjoL,GAAIioL,EACJhoL,EAAG,qBACHC,GAAI+nL,EACJ/0L,EAAG,2BACHiN,GAAI8nL,EACJ7nL,EAAG,uCACHC,GAAI4nL,EACJ3nL,EAAG,iCACHC,GAAI0nL,EACJznL,EAAG,qBACHC,GAAIwnL,GAERv7J,cAAe,6GACfmuF,KAAM,SAAUnhF,GACZ,MAAO,8DAAiBx7B,KAAKw7B,IAEjC7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,2BACAA,EAAO,GACP,2BACAA,EAAO,GACP,qBAEA,wCAGflsB,uBAAwB,uCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,UACpB,IAAK,IACD,OAAOA,EAAS,gBACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,UACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAjNyB/gB,CAAQ,EAAQ,U,sBCCjD,SAAUud,GAAU,aAIzB,SAAS+6J,EAAU13J,EAAQs3I,EAAergJ,EAAKqhD,GAC3C,OAAQrhD,GACJ,IAAK,IACD,OAAOqgJ,EAAgB,4EAAkB,wFAC7C,IAAK,KACD,OAAOt3I,GAAUs3I,EAAgB,wCAAY,qDACjD,IAAK,IACL,IAAK,KACD,OAAOt3I,GAAUs3I,EAAgB,kCAAW,+CAChD,IAAK,IACL,IAAK,KACD,OAAOt3I,GAAUs3I,EAAgB,sBAAS,yCAC9C,IAAK,IACL,IAAK,KACD,OAAOt3I,GAAUs3I,EAAgB,4BAAU,yCAC/C,IAAK,IACL,IAAK,KACD,OAAOt3I,GAAUs3I,EAAgB,sBAAS,mCAC9C,IAAK,IACL,IAAK,KACD,OAAOt3I,GAAUs3I,EAAgB,sBAAS,yCAC9C,QACI,OAAOt3I,GAIVrD,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,8+BAA+LL,MACnM,KAEJM,YACI,iQAA6EN,MACzE,KAER0U,kBAAkB,EAClB1T,SAAU,iOAA6ChB,MAAM,KAC7DiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,6CACJC,IAAK,mDACLC,KAAM,0DAEVutB,cAAe,6BACfmuF,KAAM,SAAUnhF,GACZ,MAAiB,iBAAVA,GAEX7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,eAEA,gBAGfxtB,SAAU,CACNC,QAAS,kDACTC,QAAS,kDACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,6DACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,oCACRC,KAAM,8BACNC,EAAGw4J,EACHv4J,GAAIu4J,EACJt6J,EAAGs6J,EACHt4J,GAAIs4J,EACJr4J,EAAGq4J,EACHp4J,GAAIo4J,EACJplK,EAAGolK,EACHn4J,GAAIm4J,EACJh4J,EAAGg4J,EACH/3J,GAAI+3J,EACJ93J,EAAG83J,EACH73J,GAAI63J,GAER53J,uBAAwB,mCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO97F,EAAS,4BACpB,QACI,OAAOA,MAjGe5gB,CAAQ,EAAQ,U,sBCGjD,SAAUud,GAAU,aAIzB,IAAI0iK,EAAW,CACX5zI,EAAG,gBACHT,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHC,EAAG,gBACHm0I,GAAI,gBACJH,GAAI,gBACJI,GAAI,gBACJyjG,GAAI,gBACJ5jG,GAAI,gBACJI,GAAI,gBACJP,GAAI,gBACJC,GAAI,gBACJO,GAAI,gBACJJ,IAAK,iBAGA/iK,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,saAAkFL,MACtF,KAEJM,YAAa,wPAAqDN,MAC9D,KAEJgB,SAAU,qTAA2DhB,MACjE,KAEJiB,cAAe,uIAA8BjB,MAAM,KACnDkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,+DACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,4IACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,0CACRC,KAAM,oCACNC,EAAG,kFACHC,GAAI,0CACJ/B,EAAG,oDACHgC,GAAI,oCACJC,EAAG,8CACHC,GAAI,8BACJhN,EAAG,wCACHiN,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAERC,uBAAwB,gEACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUq/J,EAASr/J,IAAWq/J,EAF7Br/J,EAAS,KAEmCq/J,EAD5Cr/J,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyB/gB,CAAQ,EAAQ,U,kCCJ1D,IAAIowB,EAAOyiJ,SAASjlJ,UAAUwC,KAC1BgimB,EAAU16mB,OAAOkW,UAAUgb,eAC3BnD,EAAOzN,EAAQ,QAGnBM,EAAOC,QAAUkN,EAAKrV,KAAKA,EAAMgimB,I,sBCExB,SAAU70mB,GAAU,aAIzB,IAAIouB,EAAY,CACRC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,SACHC,EAAG,UAEPC,EAAY,CACR,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGF/uB,EAAOM,aAAa,QAAS,CACpCC,OAAQ,sdAA0FL,MAC9F,KAEJM,YACI,4UAAmEN,MAC/D,KAERgB,SAAU,2TAA4DhB,MAClE,KAEJiB,cAAe,6LAAuCjB,MAAM,KAC5DkB,YAAa,+JAAkClB,MAAM,KACrDoB,eAAgB,CACZC,GAAI,4BACJC,IAAK,+BACLC,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNC,EAAG,sEACHC,GAAI,gDACJ/B,EAAG,8CACHgC,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJhN,EAAG,kCACHiN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAER8rB,SAAU,SAAUlC,GAChB,OAAOA,EAAO3tC,QAAQ,kEAAiB,SAAU8vC,GAC7C,OAAOF,EAAUE,MAGzBC,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,MAAO,SAAU8vC,GACnC,OAAOb,EAAUa,MAIzBE,cAAe,6LACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,uBAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,uBAAbC,GAEa,6BAAbA,EADAD,EAGa,mCAAbC,EACAD,GAAQ,EAAIA,EAAOA,EAAO,GACb,mCAAbC,GAEa,+CAAbA,EADAD,EAAO,QACX,GAKXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,qBACAA,EAAO,EACP,qBACAA,EAAO,GACP,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,iCACAA,EAAO,GACP,6CAEA,sBAGf/rB,KAAM,CACFC,IAAK,EACLC,IAAK,KA/HyB/gB,CAAQ,EAAQ,U,sBCKjD,SAAUud,GAAU,aAIzB,SAAS0qL,EAAuBrnL,EAAQs3I,EAAergJ,GACnD,IASIklC,EAAY,IAIhB,OAHIn8B,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDm8B,EAAY,QAETn8B,EAASm8B,EAbH,CACLh9B,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJE,GAAI,yBACJE,GAAI,OACJE,GAAI,OAMuB5I,GAG9B0F,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGL,MACxG,KAEJM,YACI,+DAA+DN,MAC3D,KAER0U,kBAAkB,EAClB1T,SAAU,yEAAkDhB,MAAM,KAClEiB,cAAe,iCAA8BjB,MAAM,KACnDkB,YAAa,0BAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,qBACNC,EAAG,oBACHC,GAAIkoL,EACJjqL,EAAG,WACHgC,GAAIioL,EACJhoL,EAAG,aACHC,GAAI+nL,EACJ/0L,EAAG,OACHiN,GAAI8nL,EACJ7nL,EAAG,gCACHC,GAAI4nL,EACJ3nL,EAAG,cACHC,GAAI0nL,EACJznL,EAAG,QACHC,GAAIwnL,GAERpnL,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyB/gB,CAAQ,EAAQ,U,mBCD1D,SAASqynB,EAAsBn9lB,GAC7Bh6B,KAAKg6B,QAAUA,GAGjBm9lB,EAAsBzkmB,UAAY,IAAI2B,OACNlzB,KAAO,wBAyBvCi8B,EAAOC,QAA4B,oBAAXlS,QAA0BA,OAAOkuW,MAAQluW,OAAOkuW,KAAK9uV,KAAKpf,SAvBlF,SAAmBqzB,GACjB,IAAI9P,EAAMW,OAAOmP,GAAOh9C,QAAQ,MAAO,IACvC,GAAIktC,EAAIvqC,OAAS,GAAK,EACpB,MAAM,IAAIgznB,EAAsB,qEAElC,IAEE,IAAY3wW,EAAIhqH,EAAZuC,EAAK,EAAege,EAAM,EAAG5wI,EAAS,GAE1CqwH,EAAS9tH,EAAIqB,OAAOgtI,MAEnBvgB,IAAWgqH,EAAKznH,EAAK,EAAS,GAALynH,EAAUhqH,EAASA,EAG3CuC,IAAO,GAAK5yH,GAAUkD,OAAOo3O,aAAa,IAAMD,KAAQ,EAAIznH,EAAK,IAAM,EAGzEvC,EA1BQ,oEA0BOvzJ,QAAQuzJ,GAEzB,OAAOrwH,I,kCCjCT,gFACM,SAAUnoC,IAAW,2BAAHynY,EAAG,yBAAHA,EAAG,gBACvB,OAAO2rP,EAAc3rP,GAEnB,SAAU2rP,EAAc3rP,GAC1B,OAAmB,IAAfA,EAAItnY,OACG,IAEQ,IAAfsnY,EAAItnY,OACGsnY,EAAI,GAER,SAAejtV,GAClB,OAAOitV,EAAIh2X,OAAO,SAACkvD,EAAM31D,GAAP,OAAcA,EAAG21D,IAAOnmB,M,kCCVlDnhB,EAAQrnB,QAAW,WAAc,OAAOzL,MAAMyL,SAAY,SAAUulB,GAAK,OAAOA,GAAyB,iBAAbA,EAAEp3B,QAA3E,I,kCCFJ,SAAS0uR,EAAQ90Q,GAa9B,OATE80Q,EADoB,mBAAXzjP,QAAoD,iBAApBA,OAAO41F,SACtC,SAAiBjnH,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAXqxB,QAAyBrxB,EAAImyB,cAAgBd,QAAUrxB,IAAQqxB,OAAO1c,UAAY,gBAAkB3U,IAI9GA,G,gDCXF,SAASy1Q,EAA2Bv6C,EAAM/jN,GACvD,OAAIA,GAA2B,WAAlB29P,EAAQ39P,IAAsC,mBAATA,EAI3C,OAAAmimB,EAAA,GAAsBp+Y,GAHpB/jN,I,kCCJL,SAAUspN,EAAOj9O,GACnB,OAAOA,aAAiBm5C,OAASO,OAAO15C,GAD5C,iC,kCCAA,gWAgBA,IAAI6nI,EAAgB,SAASpxH,EAAGgE,GAI5B,OAHAotH,EAAgB5sH,OAAO6sH,gBAClB,CAAEC,UAAW,cAAgB/+H,OAAS,SAAUyN,EAAGgE,GAAKhE,EAAEsxH,UAAYttH,IACvE,SAAUhE,EAAGgE,GAAK,IAAK,IAAIutH,KAAKvtH,EAAOQ,OAAOkW,UAAUgb,eAAexY,KAAKlZ,EAAGutH,KAAIvxH,EAAEuxH,GAAKvtH,EAAEutH,MAC3EvxH,EAAGgE,IAGrB,SAASy8D,EAAUzgE,EAAGgE,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIw2B,UAAU,uBAAyBnD,OAAOrzB,GAAK,iCAE7D,SAASwtH,IAAOxpI,KAAKkwC,YAAcl4B,EADnCoxH,EAAcpxH,EAAGgE,GAEjBhE,EAAE0a,UAAkB,OAAN1W,EAAaQ,OAAOlX,OAAO0W,IAAMwtH,EAAG92G,UAAY1W,EAAE0W,UAAW,IAAI82G,GAG5E,IAAIxzF,EAAW,WAQlB,OAPAA,EAAWx5B,OAAOuqB,QAAU,SAAkBvmC,GAC1C,IAAK,IAAIokB,EAAG/c,EAAI,EAAGkwC,EAAIz+B,UAAUnV,OAAQ0D,EAAIkwC,EAAGlwC,IAE5C,IAAK,IAAI0hI,KADT3kH,EAAItL,UAAUzR,GACO2U,OAAOkW,UAAUgb,eAAexY,KAAKtQ,EAAG2kH,KAAI/oI,EAAE+oI,GAAK3kH,EAAE2kH,IAE9E,OAAO/oI,IAEKm3C,MAAM33C,KAAMsZ,YAezB,SAASswH,EAAWC,EAAYr9G,EAAQ7P,EAAK8gB,GAChD,IAA2HzlB,EAAvH43B,EAAIt2B,UAAUnV,OAAQ2lI,EAAIl6F,EAAI,EAAIpjB,EAAkB,OAATiR,EAAgBA,EAAOjhB,OAAOutH,yBAAyBv9G,EAAQ7P,GAAO8gB,EACrH,GAAuB,iBAAZurG,SAAoD,mBAArBA,QAAQgB,SAAyBF,EAAId,QAAQgB,SAASH,EAAYr9G,EAAQ7P,EAAK8gB,QACpH,IAAK,IAAI51B,EAAIgiI,EAAW1lI,OAAS,EAAG0D,GAAK,EAAGA,KAASmQ,EAAI6xH,EAAWhiI,MAAIiiI,GAAKl6F,EAAI,EAAI53B,EAAE8xH,GAAKl6F,EAAI,EAAI53B,EAAEwU,EAAQ7P,EAAKmtH,GAAK9xH,EAAEwU,EAAQ7P,KAASmtH,GAChJ,OAAOl6F,EAAI,GAAKk6F,GAAKttH,OAAOu3B,eAAevnB,EAAQ7P,EAAKmtH,GAAIA,EAGzD,SAASG,EAAQC,EAAYC,GAChC,OAAO,SAAU39G,EAAQ7P,GAAOwtH,EAAU39G,EAAQ7P,EAAKutH,IAgDpD,SAASE,EAAWC,EAAaC,GACpC,GAAuB,iBAAZtB,SAAoD,mBAArBA,QAAQuB,SAAyB,OAAOvB,QAAQuB,SAASF,EAAaC,GAG7G,SAASE,EAAUC,EAASC,EAAYC,EAAGhpD,GAE9C,OAAO,IAAKgpD,IAAMA,EAAIpmI,UAAU,SAAUC,EAASixH,GAC/C,SAASmV,EAAUrpI,GAAS,IAAMimG,EAAK7lB,EAAU99E,KAAKtC,IAAW,MAAO0yB,GAAKwhG,EAAOxhG,IACpF,SAAS42G,EAAStpI,GAAS,IAAMimG,EAAK7lB,EAAiB,MAAEpgF,IAAW,MAAO0yB,GAAKwhG,EAAOxhG,IACvF,SAASuzE,EAAK5qE,GAJlB,IAAer7B,EAIaq7B,EAAOhI,KAAOpwB,EAAQo4B,EAAOr7B,QAJ1CA,EAIyDq7B,EAAOr7B,MAJhDA,aAAiBopI,EAAIppI,EAAQ,IAAIopI,EAAE,SAAUnmI,GAAWA,EAAQjD,MAIT8c,KAAKusH,EAAWC,GAClGrjC,GAAM7lB,EAAYA,EAAUhqC,MAAM8yF,EAASC,GAAc,KAAK7mI,UAI/D,SAASinI,EAAYL,EAAS3nG,GACjC,IAAsG7J,EAAG3T,EAAG9kB,EAAxG4xG,EAAI,CAAE/8E,MAAO,EAAGK,KAAM,WAAa,GAAW,EAAPl1B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOwqI,KAAM,GAAIC,IAAK,IAAeF,EAAIvuH,OAAOlX,QAA4B,mBAAbgynB,SAA0BA,SAAW96mB,QAAQkW,WACtL,OAAOq4G,EAAElnI,KAAOqnI,EAAK,GAAIH,EAAS,MAAIG,EAAK,GAAIH,EAAU,OAAIG,EAAK,GAAsB,mBAAX97F,SAA0B27F,EAAE37F,OAAO41F,UAAY,WAAa,OAAOhlI,OAAU+qI,EAC1J,SAASG,EAAKnzF,GAAK,OAAO,SAAU93C,GAAK,OACzC,SAAckrI,GACV,GAAIlyG,EAAG,MAAM,IAAIuZ,UAAU,mCAC3B,KAAOu4F,IAAMA,EAAI,EAAGI,EAAG,KAAO/4B,EAAI,IAAKA,OACnC,GAAIn5E,EAAI,EAAG3T,IAAM9kB,EAAY,EAAR2qI,EAAG,GAAS7lH,EAAU,OAAI6lH,EAAG,GAAK7lH,EAAS,SAAO9kB,EAAI8kB,EAAU,SAAM9kB,EAAE00B,KAAK5P,GAAI,GAAKA,EAAEzhB,SAAWrD,EAAIA,EAAE00B,KAAK5P,EAAG6lH,EAAG,KAAKv2G,KAAM,OAAOp0B,EAE3J,OADI8kB,EAAI,EAAG9kB,IAAG2qI,EAAK,CAAS,EAARA,EAAG,GAAQ3qI,EAAEe,QACzB4pI,EAAG,IACP,KAAK,EAAG,KAAK,EAAG3qI,EAAI2qI,EAAI,MACxB,KAAK,EAAc,OAAX/4B,EAAE/8E,QAAgB,CAAE9zB,MAAO4pI,EAAG,GAAIv2G,MAAM,GAChD,KAAK,EAAGw9E,EAAE/8E,QAAS/P,EAAI6lH,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK/4B,EAAE64B,IAAIhsG,MAAOmzE,EAAE44B,KAAK/rG,MAAO,SACxC,QACI,MAAkBz+B,GAAZA,EAAI4xG,EAAE44B,MAAY7mI,OAAS,GAAK3D,EAAEA,EAAE2D,OAAS,KAAkB,IAAVgnI,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE/4B,EAAI,EAAG,SACjG,GAAc,IAAV+4B,EAAG,MAAc3qI,GAAM2qI,EAAG,GAAK3qI,EAAE,IAAM2qI,EAAG,GAAK3qI,EAAE,IAAM,CAAE4xG,EAAE/8E,MAAQ81G,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAY/4B,EAAE/8E,MAAQ70B,EAAE,GAAI,CAAE4xG,EAAE/8E,MAAQ70B,EAAE,GAAIA,EAAI2qI,EAAI,MAC7D,GAAI3qI,GAAK4xG,EAAE/8E,MAAQ70B,EAAE,GAAI,CAAE4xG,EAAE/8E,MAAQ70B,EAAE,GAAI4xG,EAAE64B,IAAIrnI,KAAKunI,GAAK,MACvD3qI,EAAE,IAAI4xG,EAAE64B,IAAIhsG,MAChBmzE,EAAE44B,KAAK/rG,MAAO,SAEtBksG,EAAKroG,EAAK5N,KAAKu1G,EAASr4B,GAC1B,MAAOn+E,GAAKk3G,EAAK,CAAC,EAAGl3G,GAAI3O,EAAI,EAAK,QAAU2T,EAAIz4B,EAAI,EACtD,GAAY,EAAR2qI,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5pI,MAAO4pI,EAAG,GAAKA,EAAG,QAAK,EAAQv2G,MAAM,GArB9B4yE,CAAK,CAACzvD,EAAG93C,MAyCtD,SAASs3nB,EAASpplB,GACrB,IAAIvpB,EAAsB,mBAAXwqB,QAAyBA,OAAO41F,SAAUliH,EAAI8B,GAAKupB,EAAEvpB,GAAI/c,EAAI,EAC5E,GAAIib,EAAG,OAAOA,EAAEoS,KAAKiZ,GACrB,GAAIA,GAAyB,iBAAbA,EAAEhqC,OAAqB,MAAO,CAC1CN,KAAM,WAEF,OADIsqC,GAAKtmC,GAAKsmC,EAAEhqC,SAAQgqC,OAAI,GACrB,CAAE5sC,MAAO4sC,GAAKA,EAAEtmC,KAAM+sB,MAAOuZ,KAG5C,MAAM,IAAIqE,UAAU5tB,EAAI,0BAA4B,mCAGjD,SAAS4ymB,EAAOrplB,EAAG4J,GACtB,IAAIj1B,EAAsB,mBAAXssB,QAAyBjB,EAAEiB,OAAO41F,UACjD,IAAKliH,EAAG,OAAOqrB,EACf,IAAmB27F,EAAY71G,EAA3BpsB,EAAIib,EAAEoS,KAAKiZ,GAAOsplB,EAAK,GAC3B,IACI,WAAc,IAAN1/kB,GAAgBA,KAAM,MAAQ+xF,EAAIjiI,EAAEhE,QAAQ+wB,MAAM6imB,EAAG7znB,KAAKkmI,EAAEvoI,OAExE,MAAOyzB,GAASf,EAAI,CAAEe,MAAOA,GAC7B,QACI,IACQ80G,IAAMA,EAAEl1G,OAAS9R,EAAIjb,EAAU,SAAIib,EAAEoS,KAAKrtB,GAElD,QAAU,GAAIosB,EAAG,MAAMA,EAAEe,OAE7B,OAAOyimB,EAIJ,SAASC,IACZ,IAAK,IAAID,EAAK,GAAI5vnB,EAAI,EAAGA,EAAIyR,UAAUnV,OAAQ0D,IAC3C4vnB,EAAKA,EAAGz+mB,OAAOw+mB,EAAOl+mB,UAAUzR,KACpC,OAAO4vnB,EAYJ,SAAS7zjB,EAAc4tF,EAAIltJ,EAAMqznB,GACpC,GAAIA,GAA6B,IAArBr+mB,UAAUnV,OAAc,IAAK,IAA4BsznB,EAAxB5vnB,EAAI,EAAG+jI,EAAItnI,EAAKH,OAAY0D,EAAI+jI,EAAG/jI,KACxE4vnB,GAAQ5vnB,KAAKvD,IACRmznB,IAAIA,EAAKltnB,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5wB,EAAM,EAAGuD,IAClD4vnB,EAAG5vnB,GAAKvD,EAAKuD,IAGrB,OAAO2pJ,EAAGx4I,OAAOy+mB,GAAMltnB,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5wB,IAmGJ,mBAApBsznB,iBAAiCA,iB,kCC/TzD,SAAU3rd,EAAW1wI,GACvB,MAAoB,mBAANA,EADlB,iC,kFCWA,aAaC,WAAoBkX,GAAA,KAAAA,K,OASpB,YAAAC,gBAAA,WACC1yC,KAAKooB,UAAY,IAAIyvmB,YAAY73nB,KAAKyyC,GAAG7vC,cAAe5C,KAAKgoB,UAM9D,YAAAkwD,aAAA,WACC,OAAOl4E,KAAKooB,W,sCA3BD0vmB,GAAkB,Y,uBAAlBA,EAAkB,+D,EAH/B,I,sQCEIC,E,gDAMJ,IACIA,EAAsC,oBAATpykB,MAAwBA,KAAKqykB,gBAE9D,MAAOrtnB,GACHotnB,GAAqB,E,IAqFrBE,EA2DAC,EAoCAC,EAEAC,EAkFAC,E,iBAlQEC,E,YACF,WAAYC,GAAW,oBACnBv4nB,KAAKu4nB,YAAcA,EAKnBv4nB,KAAKiY,UAAYjY,KAAKu4nB,YAClB,YAAkBv4nB,KAAKu4nB,aAAmC,iBAAb5tlB,YAA2BA,SAE5E3qC,KAAK4+L,KAAO5+L,KAAKiY,WAAa,UAAU+K,KAAK8nG,UAAUC,WAEvD/qH,KAAK0+L,QAAU1+L,KAAKiY,WAAa,kBAAkB+K,KAAK8nG,UAAUC,WAGlE/qH,KAAKw4nB,MAAQx4nB,KAAKiY,cAAiBkT,OAAO2xW,SAAUi7P,IACjC,oBAARU,MAAwBz4nB,KAAK4+L,OAAS5+L,KAAK0+L,QAItD1+L,KAAK0qC,OAAS1qC,KAAKiY,WACf,eAAe+K,KAAK8nG,UAAUC,aAAe/qH,KAAKw4nB,QAAUx4nB,KAAK4+L,OAAS5+L,KAAK0+L,QAEnF1+L,KAAK22S,IAAM32S,KAAKiY,WAAa,mBAAmB+K,KAAK8nG,UAAUC,cACzD,aAAc5/F,QAMpBnrB,KAAKqzX,QAAUrzX,KAAKiY,WAAa,uBAAuB+K,KAAK8nG,UAAUC,WAGvE/qH,KAAK42S,QAAU52S,KAAKiY,WAAa,WAAW+K,KAAK8nG,UAAUC,aAAe/qH,KAAK0+L,QAK/E1+L,KAAK2nB,OAAS3nB,KAAKiY,WAAa,UAAU+K,KAAK8nG,UAAUC,YAAc/qH,KAAK0qC,S,OAGpF4tlB,EAAS/3nB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAK83nB,GAAU,KAAgB,OAC1FA,EAAS1znB,WAAQ,aAAmB,CAAEE,QAAS,WAA8B,OAAO,IAAIwznB,EAAS,aAAS,OAAkBzznB,MAAOyznB,EAAU1xmB,WAAY,S,sBAmBnJ8xmB,E,sDAENA,EAAen4nB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKk4nB,IAC5EA,EAAex/mB,UAAO,KAAwB,CAAExY,KAAMg4nB,IACtDA,EAAev/mB,UAAO,KAAwB,I,KAgBxCw/mB,EAAsB,CAKxB,QACA,SACA,WACA,OACA,iBACA,QACA,OACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,QACA,SACA,SACA,MACA,OACA,OACA,MACA,QAGJ,SAASC,IAEL,GAAIX,EACA,OAAOA,EAKX,GAAwB,iBAAbttlB,WAA0BA,SAEjC,OADAstlB,EAAsB,IAAItqnB,IAAIgrnB,GAGlC,IAAIE,EAAmBlulB,SAAS9yB,cAAc,SAK9C,OAJAognB,EAAsB,IAAItqnB,IAAIgrnB,EAAoBxjnB,OAAO,SAAA5T,GAErD,OADAs3nB,EAAiBhqnB,aAAa,OAAQtN,GAC/Bs3nB,EAAiBn4nB,OAASa,KAqCzC,SAASu3nB,EAAgC9wmB,GACrC,OApBJ,WACI,GAA6B,MAAzBkwmB,GAAmD,oBAAX/smB,OACxC,IACIA,OAAOG,iBAAiB,OAAQ,KAAM9O,OAAOu3B,eAAe,GAAI,UAAW,CACvE7hC,IAAK,kBAAMgmnB,GAAwB,MAF3C,QAMIA,EAAwBA,IAAyB,EAGzD,OAAOA,EASAa,GAAkC/wmB,IAAYA,EAAQgvI,QAejE,SAASgie,IACL,GAA+B,MAA3BZ,EAAiC,CAGjC,GAAwB,iBAAbztlB,WAA0BA,UAA+B,mBAAZi0E,UAA2BA,QAE/E,OADAw5gB,GAA0B,EAI9B,GAAI,mBAAoBztlB,SAAS6J,gBAAgBjpC,MAC7C6snB,GAA0B,MAEzB,CAGD,IAAMa,EAAmBr6gB,QAAQlsF,UAAU+wQ,SAMvC20V,IALAa,IAK2B,4BAA4Bj2mB,KAAKi2mB,EAAiBhnmB,aAOzF,OAAOmmmB,EAMX,SAASc,IAEL,GAAwB,iBAAbvulB,WAA0BA,SACjC,OAAO,EAEX,GAAyB,MAArBwtlB,EAA2B,CAE3B,IAAMgB,EAAkBxulB,SAAS9yB,cAAc,OACzCuhnB,EAAiBD,EAAgB5tnB,MACvC4tnB,EAAgB7tnB,IAAM,MACtB8tnB,EAAe1vnB,MAAQ,MACvB0vnB,EAAe3kjB,SAAW,OAC1B2kjB,EAAer3d,WAAa,SAC5Bq3d,EAAe1re,cAAgB,OAC/B0re,EAAepvnB,SAAW,WAC1B,IAAMspD,EAAU3oB,SAAS9yB,cAAc,OACjCwhnB,EAAe/lkB,EAAQ/nD,MAC7B8tnB,EAAa3vnB,MAAQ,MACrB2vnB,EAAa7unB,OAAS,MACtB2unB,EAAgBrhnB,YAAYw7C,GAC5B3oB,SAAS7H,KAAKhrB,YAAYqhnB,GAC1BhB,EAAoB,EAIe,IAA/BgB,EAAgBzgjB,aAKhBygjB,EAAgBzgjB,WAAa,EAC7By/iB,EACmC,IAA/BgB,EAAgBzgjB,WAAmB,EAAkB,GAE7DygjB,EAAgBz4mB,WAAWe,YAAY03mB,GAE3C,OAAOhB,EAoBX,SAASrte,EAAez/I,GACpB,GATJ,WACI,GAA4B,MAAxBgtnB,EAA8B,CAC9B,IAAMztlB,EAA2B,oBAAbD,SAA2BA,SAASC,KAAO,KAC/DytlB,KAA0BztlB,IAASA,EAAK0ulB,mBAAoB1ulB,EAAKm5kB,cAErE,OAAOsU,EAIHkB,GAAsB,CACtB,IAAMh4mB,EAAWlW,EAAQ8pC,YAAc9pC,EAAQ8pC,cAAgB,KAG/D,GAA0B,oBAAfqklB,YAA8BA,YAAcj4mB,aAAoBi4mB,WACvE,OAAOj4mB,EAGf,OAAO,O,sKChTL,SAAUq0W,EAAS3iW,GACrB,OAAO,SAAC1M,GAAD,OAAYA,EAAO8V,KAAK,IAAIo9lB,EAAgBxmmB,K,IAEjDwmmB,E,8BACF,WAAYxmmB,GAAQ,oBAChBjzB,KAAKizB,SAAWA,G,mBAEpB,SAAKsJ,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIw1nB,EAAkBn9lB,EAAYv8B,KAAKizB,e,GAGjEymmB,E,YACF,WAAYj9lB,EAAaxJ,GAAQ,M,MAAA,2B,EAC7B,K,EAAA,E,EAAA,CAAMwJ,G,kBAAN,E,iGACK55B,IAAI,IAAI,IAAaowB,IAFG,E,wCADL,M,sBCbhC,mBACE,SAASmsD,GAOwB,iBAAVt3C,QAAsBA,OAJ9C,IAkBI42I,EAGJi7c,EAAS,WAGT/5nB,EAAO,GAUPg6nB,EAAgB,QAChBC,EAAgB,eAChBC,EAAkB,4BAGlBvqf,EAAS,CACR,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKlB11F,EAAQt7B,KAAKs7B,MACb2lV,EAAqBnwV,OAAOo3O,aAa5B,SAASzxP,EAAMt0B,GACd,MAAM,IAAI6sI,WAAWgC,EAAO7uI,IAW7B,SAAS+I,EAAIsP,EAAO/J,GAGnB,IAFA,IAAI7K,EAAS4U,EAAM5U,OACfy4B,EAAS,GACNz4B,KACNy4B,EAAOz4B,GAAU6K,EAAG+J,EAAM5U,IAE3B,OAAOy4B,EAaR,SAASm9lB,EAAU5qlB,EAAQngC,GAC1B,IAAIo2C,EAAQjW,EAAO5sB,MAAM,KACrBqa,EAAS,GAWb,OAVIwoB,EAAMjhD,OAAS,IAGlBy4B,EAASwoB,EAAM,GAAK,IACpBjW,EAASiW,EAAM,IAMTxoB,EADOnzB,GAFd0lC,EAASA,EAAO3tC,QAAQs4nB,EAAiB,MACrBv3mB,MAAM,KACAvT,GAAIghC,KAAK,KAiBpC,SAAS8vV,EAAW3wV,GAMnB,IALA,IAGI5tC,EACAuyD,EAJA3nB,EAAS,GACTo1G,EAAU,EACVp9I,EAASgrC,EAAOhrC,OAGbo9I,EAAUp9I,IAChB5C,EAAQ4tC,EAAOU,WAAW0xG,OACb,OAAUhgJ,GAAS,OAAUggJ,EAAUp9I,EAG3B,QAAX,OADb2vD,EAAQ3kB,EAAOU,WAAW0xG,OAEzBp1G,EAAOvoC,OAAe,KAARrC,IAAkB,KAAe,KAARuyD,GAAiB,QAIxD3nB,EAAOvoC,KAAKrC,GACZggJ,KAGDp1G,EAAOvoC,KAAKrC,GAGd,OAAO4qC,EAWR,SAAS6tlB,EAAWjhnB,GACnB,OAAOtP,EAAIsP,EAAO,SAASxX,GAC1B,IAAI4qC,EAAS,GAOb,OANI5qC,EAAQ,QAEX4qC,GAAUqzV,GADVj+X,GAAS,SAC8B,GAAK,KAAQ,OACpDA,EAAQ,MAAiB,KAARA,GAElB4qC,EAAUqzV,EAAmBj+X,KAE3ByuC,KAAK,IAoCT,SAASiqlB,EAAaC,EAAOryN,GAG5B,OAAOqyN,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARryN,IAAc,GAQzD,SAASsyN,EAAM70jB,EAAO80jB,EAAWC,GAChC,IAAI79f,EAAI,EAGR,IAFAl3D,EAAQ+0jB,EAAYxglB,EAAMyrB,EA1LpB,KA0LoCA,GAAS,EACnDA,GAASzrB,EAAMyrB,EAAQ80jB,GACO90jB,EAAQg1jB,IAA2B99f,GAAK58H,EACrE0lE,EAAQzrB,EAAMyrB,EA3KA1lE,IA6Kf,OAAOi6C,EAAM2iF,EAAI,GAAsBl3D,GAASA,EAhM1C,KA0MP,SAAS72B,EAAO+P,GAEf,IAEI/O,EAIA8qlB,EACAhmnB,EACA5K,EACA6wnB,EACAt1mB,EACAs3G,EACA09f,EACA15nB,EAEAi6nB,EArEiB/6P,EAsDjBvzV,EAAS,GACTuulB,EAAcl8kB,EAAMr6C,OAEpB0D,EAAI,EACJkwC,EA7MM,IA8MN4ilB,EA/MS,GAoOb,KALAJ,EAAQ/7kB,EAAMz1C,YA7NH,MA8NC,IACXwxnB,EAAQ,GAGJhmnB,EAAI,EAAGA,EAAIgmnB,IAAShmnB,EAEpBiqC,EAAM3O,WAAWt7B,IAAM,KAC1BygB,EAAM,aAEPmX,EAAOvoC,KAAK46C,EAAM3O,WAAWt7B,IAM9B,IAAK5K,EAAQ4wnB,EAAQ,EAAIA,EAAQ,EAAI,EAAG5wnB,EAAQ+wnB,GAAwC,CAOvF,IAAKF,EAAO3ynB,EAAGqd,EAAI,EAAGs3G,EAAI58H,EAErB+J,GAAS+wnB,GACZ1lmB,EAAM,mBAGPklmB,GAxGmBx6P,EAwGElhV,EAAM3O,WAAWlmC,MAvGxB,GAAK,GACb+1X,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEb9/X,IAgGQA,GAAQs6nB,EAAQrglB,GAAO8/kB,EAAS9xnB,GAAKqd,KACjD8P,EAAM,YAGPntB,GAAKqynB,EAAQh1mB,IAGTg1mB,GAFJ15nB,EAAIg8H,GAAKm+f,EAvQL,EAuQoBn+f,GAAKm+f,EAtQzB,MAsQ8Cn+f,EAAIm+f,IAbHn+f,GAAK58H,EAoBpDslB,EAAI20B,EAAM8/kB,GADdc,EAAa76nB,EAAOY,KAEnBw0B,EAAM,YAGP9P,GAAKu1mB,EAKNE,EAAOR,EAAMtynB,EAAI2ynB,EADjB/qlB,EAAMtD,EAAOhoC,OAAS,EACc,GAARq2nB,GAIxB3glB,EAAMhyC,EAAI4nC,GAAOkqlB,EAAS5hlB,GAC7B/iB,EAAM,YAGP+iB,GAAK8B,EAAMhyC,EAAI4nC,GACf5nC,GAAK4nC,EAGLtD,EAAO5D,OAAO1gC,IAAK,EAAGkwC,GAIvB,OAAOiilB,EAAW7tlB,GAUnB,SAAS6C,EAAOwP,GACf,IAAIzG,EACAutB,EACAs1jB,EACAC,EACAF,EACApmnB,EACAuO,EACAohM,EACA1nF,EACAh8H,EACA4E,EAGAs1nB,EAEAI,EACAL,EACAM,EANA5ulB,EAAS,GAoBb,IARAuulB,GAHAl8kB,EAAQshV,EAAWthV,IAGCr6C,OAGpB4zC,EAvUU,IAwUVutB,EAAQ,EACRq1jB,EA1Ua,GA6URpmnB,EAAI,EAAGA,EAAImmnB,IAAenmnB,GAC9BnP,EAAeo5C,EAAMjqC,IACF,KAClB43B,EAAOvoC,KAAK47X,EAAmBp6X,IAejC,IAXAw1nB,EAAiBC,EAAc1ulB,EAAOhoC,OAMlC02nB,GACH1ulB,EAAOvoC,KAzVG,KA6VJg3nB,EAAiBF,GAAa,CAIpC,IAAK53mB,EAAI62mB,EAAQplnB,EAAI,EAAGA,EAAImmnB,IAAenmnB,GAC1CnP,EAAeo5C,EAAMjqC,KACDwjC,GAAK3yC,EAAe0d,IACvCA,EAAI1d,GAcN,IAPI0d,EAAIi1B,EAAI8B,GAAO8/kB,EAASr0jB,IAD5Bw1jB,EAAwBF,EAAiB,KAExC5lmB,EAAM,YAGPswC,IAAUxiD,EAAIi1B,GAAK+ilB,EACnB/ilB,EAAIj1B,EAECvO,EAAI,EAAGA,EAAImmnB,IAAenmnB,EAO9B,IANAnP,EAAeo5C,EAAMjqC,IAEFwjC,KAAOutB,EAAQq0jB,GACjC3kmB,EAAM,YAGH5vB,GAAgB2yC,EAAG,CAEtB,IAAKmsK,EAAI5+I,EAAOk3D,EAAI58H,IAEfskN,GADJ1jN,EAAIg8H,GAAKm+f,EAlYP,EAkYsBn+f,GAAKm+f,EAjY3B,MAiYgDn+f,EAAIm+f,IADTn+f,GAAK58H,EAOlDusC,EAAOvoC,KACN47X,EAAmBy6P,EAAaz5nB,GAHjCu6nB,EAAU72a,EAAI1jN,IACdi6nB,EAAa76nB,EAAOY,GAEuC,KAE3D0jN,EAAIrqK,EAAMkhlB,EAAUN,GAGrBtulB,EAAOvoC,KAAK47X,EAAmBy6P,EAAa/1a,EAAG,KAC/Cy2a,EAAOR,EAAM70jB,EAAOw1jB,EAAuBF,GAAkBC,GAC7Dv1jB,EAAQ,IACNs1jB,IAIFt1jB,IACAvtB,EAGH,OAAO5L,EAAO6D,KAAK,IA4CpB0uI,EAAW,CAMV,QAAW,QAQX,KAAQ,CACP,OAAUohN,EACV,OAAUk6P,GAEX,OAAUvrlB,EACV,OAAUO,EACV,QA/BD,SAAiBwP,GAChB,OAAOu7kB,EAAUv7kB,EAAO,SAASrP,GAChC,OAAO0qlB,EAAc72mB,KAAKmsB,GACvB,OAASH,EAAOG,GAChBA,KA4BJ,UAnDD,SAAmBqP,GAClB,OAAOu7kB,EAAUv7kB,EAAO,SAASrP,GAChC,OAAOyqlB,EAAc52mB,KAAKmsB,GACvBV,EAAOU,EAAO3lC,MAAM,GAAGoT,eACvBuyB,WA0DE,KAANpS,cACC,OAAO2hJ,IADF,8BAjgBN,K,2DCDF,gCAAO,IAAMs5J,EAAmB,SAACj/T,GAAD,OAAW,SAACwjB,GACxC,IAAK,IAAI10B,EAAI,EAAGyvC,EAAMv+B,EAAM5U,OAAQ0D,EAAIyvC,IAAQ/a,EAAW/U,OAAQ3f,IAC/D00B,EAAW14B,KAAKkV,EAAMlR,IAE1B00B,EAAWz4B,c,kCCFf,IAAI4rS,EAAQ5yQ,EAAQ,QAEhB1oB,EAAMoI,OAAOkW,UAAUgb,eACvB13B,EAAUzL,MAAMyL,QAEhB+Q,EAAW,CACXkpR,WAAW,EACXC,kBAAkB,EAClB5/P,iBAAiB,EACjB0qlB,aAAa,EACbC,WAAY,GACZrslB,QAAS,QACTuhQ,iBAAiB,EACjBN,OAAO,EACPqrV,iBAAiB,EACjBvslB,QAAS+gQ,EAAMjhQ,OACfwpG,UAAW,IACXokG,MAAO,EACPszW,WAAY,UACZwrC,mBAAmB,EACnBC,0BAA0B,EAC1BC,eAAgB,IAChBC,aAAa,EACbxtlB,cAAc,EACdytlB,aAAa,EACb9qV,oBAAoB,GAGpB2qV,EAA2B,SAAU1slB,GACrC,OAAOA,EAAIltC,QAAQ,YAAa,SAAU+tC,EAAIislB,GAC1C,OAAOnslB,OAAOo3O,aAAaj3O,SAASgslB,EAAW,QAInDC,EAAkB,SAAUntlB,EAAKtmB,GACjC,OAAIsmB,GAAsB,iBAARA,GAAoBtmB,EAAQ6nR,OAASvhQ,EAAIrlC,QAAQ,MAAQ,EAChEqlC,EAAI/rB,MAAM,KAGd+rB,GAsHPotlB,EAAY,SAA8BC,EAAUrtlB,EAAKtmB,EAAS4zmB,GAClE,GAAKD,EAAL,CAKA,IAAIh/mB,EAAMqL,EAAQioR,UAAY0rV,EAASn6nB,QAAQ,cAAe,QAAUm6nB,EAKpE3hf,EAAQ,gBAIRtqG,EAAU1nB,EAAQq0N,MAAQ,GALf,eAK6B39L,KAAK/hC,GAC7CiqB,EAAS8I,EAAU/yB,EAAInT,MAAM,EAAGkmC,EAAQ/lC,OAASgT,EAIjDF,EAAO,GACX,GAAImqB,EAAQ,CAER,IAAK5e,EAAQ8lB,cAAgB15B,EAAI8gB,KAAK1Y,OAAOkW,UAAWkU,KAC/C5e,EAAQsoB,gBACT,OAIR7zB,EAAK7Y,KAAKgjC,GAMd,IADA,IAAI/+B,EAAI,EACDmgB,EAAQq0N,MAAQ,GAAqC,QAA/B3sM,EAAUsqG,EAAMt7F,KAAK/hC,KAAkB9U,EAAImgB,EAAQq0N,OAAO,CAEnF,GADAx0O,GAAK,GACAmgB,EAAQ8lB,cAAgB15B,EAAI8gB,KAAK1Y,OAAOkW,UAAWgd,EAAQ,GAAGlmC,MAAM,GAAI,MACpEwe,EAAQsoB,gBACT,OAGR7zB,EAAK7Y,KAAK8rC,EAAQ,IAKtB,GAAIA,EAAS,CACT,IAA4B,IAAxB1nB,EAAQuzmB,YACR,MAAM,IAAIhuf,WAAW,wCAA0CvlH,EAAQq0N,MAAQ,4BAEnF5/N,EAAK7Y,KAAK,IAAM+Y,EAAInT,MAAMkmC,EAAQ/lC,OAAS,KAG/C,OA5Fc,SAAUmgQ,EAAOx7N,EAAKtmB,EAAS4zmB,GAG7C,IAFA,IAAIC,EAAOD,EAAettlB,EAAMmtlB,EAAgBntlB,EAAKtmB,GAE5CngB,EAAIiiQ,EAAM3lQ,OAAS,EAAG0D,GAAK,IAAKA,EAAG,CACxC,IAAIkW,EACAqhE,EAAO0qL,EAAMjiQ,GAEjB,GAAa,OAATu3E,GAAiBp3D,EAAQszmB,YACzBv9mB,EAAMiK,EAAQkoR,mBAA8B,KAAT2rV,GAAgB7zmB,EAAQyoR,oBAA+B,OAATorV,GAC3E,GACA,GAAG7inB,OAAO6inB,OACb,CACH99mB,EAAMiK,EAAQ8lB,aAAetxB,OAAOlX,OAAO,MAAQ,GACnD,IAAIw2nB,EAA+B,MAAnB18iB,EAAKrvC,OAAO,IAA+C,MAAjCqvC,EAAKrvC,OAAOqvC,EAAKj7E,OAAS,GAAai7E,EAAK51E,MAAM,GAAI,GAAK41E,EACjG28iB,EAAc/zmB,EAAQkzmB,gBAAkBY,EAAUt6nB,QAAQ,OAAQ,KAAOs6nB,EACzEnynB,EAAQ6lC,SAASuslB,EAAa,IAC7B/zmB,EAAQszmB,aAA+B,KAAhBS,GAGvB9glB,MAAMtxC,IACJy1E,IAAS28iB,GACT1slB,OAAO1lC,KAAWoynB,GAClBpynB,GAAS,GACRqe,EAAQszmB,aAAe3xnB,GAASqe,EAAQizmB,YAE5Cl9mB,EAAM,IACFpU,GAASkynB,EACU,cAAhBE,IACPh+mB,EAAIg+mB,GAAeF,GAXnB99mB,EAAM,CAAEozB,EAAG0qlB,GAenBA,EAAO99mB,EAGX,OAAO89mB,EAyDA98kB,CAAYtiC,EAAM6xB,EAAKtmB,EAAS4zmB,KA0D3Cx+lB,EAAOC,QAAU,SAAUqR,EAAK5Y,GAC5B,IAAI9N,EAxDoB,SAA+B8N,GACvD,IAAKA,EACD,OAAO/O,EAGX,QAAqC,IAA1B+O,EAAKo6Q,kBAAqE,kBAA1Bp6Q,EAAKo6Q,iBAC5D,MAAM,IAAI19P,UAAU,0EAGxB,QAAoC,IAAzB1c,EAAKolmB,iBAAmE,kBAAzBplmB,EAAKolmB,gBAC3D,MAAM,IAAI1olB,UAAU,yEAGxB,GAAI1c,QAAK6Y,SAAmF,mBAAjB7Y,EAAK6Y,QAC5E,MAAM,IAAI6D,UAAU,iCAGxB,QAA4B,IAAjB1c,EAAK8Y,SAA4C,UAAjB9Y,EAAK8Y,SAAwC,eAAjB9Y,EAAK8Y,QACxE,MAAM,IAAI4D,UAAU,qEAExB,IAAI5D,OAAkC,IAAjB9Y,EAAK8Y,QAA0B7nB,EAAS6nB,QAAU9Y,EAAK8Y,QAExE+gjB,OAAwC,IAApB75jB,EAAK65jB,WAA6B5okB,EAAS4okB,WAAa75jB,EAAK65jB,WAErF,GAAmB,YAAfA,GAA2C,UAAfA,GAAyC,SAAfA,EACtD,MAAM,IAAIn9iB,UAAU,gEAKxB,MAAO,CACHy9P,eAHsC,IAAnBn6Q,EAAKm6Q,WAAqD,IAAzBn6Q,EAAKolmB,iBAAkCn0mB,EAASkpR,YAAcn6Q,EAAKm6Q,UAIvHC,iBAAmD,kBAA1Bp6Q,EAAKo6Q,mBAAmCp6Q,EAAKo6Q,iBAAmBnpR,EAASmpR,iBAClG5/P,gBAAiD,kBAAzBxa,EAAKwa,gBAAgCxa,EAAKwa,gBAAkBvpB,EAASupB,gBAC7F0qlB,YAAyC,kBAArBllmB,EAAKklmB,YAA4BllmB,EAAKklmB,YAAcj0mB,EAASi0mB,YACjFC,WAAuC,iBAApBnlmB,EAAKmlmB,WAA0BnlmB,EAAKmlmB,WAAal0mB,EAASk0mB,WAC7ErslB,QAASA,EACTuhQ,gBAAiD,kBAAzBr6Q,EAAKq6Q,gBAAgCr6Q,EAAKq6Q,gBAAkBppR,EAASopR,gBAC7FN,MAA6B,kBAAf/5Q,EAAK+5Q,MAAsB/5Q,EAAK+5Q,MAAQ9oR,EAAS8oR,MAC/DqrV,gBAAiD,kBAAzBplmB,EAAKolmB,gBAAgCplmB,EAAKolmB,gBAAkBn0mB,EAASm0mB,gBAC7FvslB,QAAiC,mBAAjB7Y,EAAK6Y,QAAyB7Y,EAAK6Y,QAAU5nB,EAAS4nB,QACtEspG,UAAqC,iBAAnBniH,EAAKmiH,WAA0By3J,EAAMv/P,SAASra,EAAKmiH,WAAaniH,EAAKmiH,UAAYlxH,EAASkxH,UAE5GokG,MAA8B,iBAAfvmN,EAAKumN,QAAqC,IAAfvmN,EAAKumN,OAAoBvmN,EAAKumN,MAAQt1N,EAASs1N,MACzFszW,WAAYA,EACZwrC,mBAA8C,IAA3BrlmB,EAAKqlmB,kBACxBC,yBAAmE,kBAAlCtlmB,EAAKslmB,yBAAyCtlmB,EAAKslmB,yBAA2Br0mB,EAASq0mB,yBACxHC,eAA+C,iBAAxBvlmB,EAAKulmB,eAA8BvlmB,EAAKulmB,eAAiBt0mB,EAASs0mB,eACzFC,aAAkC,IAArBxlmB,EAAKwlmB,YAClBxtlB,aAA2C,kBAAtBhY,EAAKgY,aAA6BhY,EAAKgY,aAAe/mB,EAAS+mB,aACpFytlB,YAAyC,kBAArBzlmB,EAAKylmB,cAA8BzlmB,EAAKylmB,YAAcx0mB,EAASw0mB,YACnF9qV,mBAAuD,kBAA5B36Q,EAAK26Q,mBAAmC36Q,EAAK26Q,mBAAqB1pR,EAAS0pR,oBAK5FurV,CAAsBlmmB,GAEpC,GAAY,KAAR4Y,SAAcA,EACd,OAAO1mB,EAAQ8lB,aAAetxB,OAAOlX,OAAO,MAAQ,GASxD,IANA,IAAI22nB,EAAyB,iBAARvtlB,EAhOP,SAAgCA,EAAK1mB,GACnD,IAOIngB,EAPAkW,EAAM,CAAEurH,UAAW,MAEnB4yf,EAAWl0mB,EAAQmzmB,kBAAoBzslB,EAAIltC,QAAQ,MAAO,IAAMktC,EAGhE0W,GAFJ82kB,EAAWA,EAAS16nB,QAAQ,QAAS,KAAKA,QAAQ,QAAS,MAEtC+gB,MAAMyF,EAAQiwH,UADvBjwH,EAAQqzmB,iBAAmB//Y,SAAW72O,EAAYujB,EAAQqzmB,gBAElEc,GAAa,EAGbvtlB,EAAU5mB,EAAQ4mB,QACtB,GAAI5mB,EAAQmoR,gBACR,IAAKtoS,EAAI,EAAGA,EAAIu9C,EAAMjhD,SAAU0D,EACM,IAA9Bu9C,EAAMv9C,GAAGoB,QAAQ,WAfX,mBAgBFm8C,EAAMv9C,GACN+mC,EAAU,QApBZ,wBAqBSwW,EAAMv9C,KACb+mC,EAAU,cAEdutlB,EAAYt0nB,EACZA,EAAIu9C,EAAMjhD,QAKtB,IAAK0D,EAAI,EAAGA,EAAIu9C,EAAMjhD,SAAU0D,EAC5B,GAAIA,IAAMs0nB,EAAV,CAGA,IAKIx/mB,EAAK2xB,EALLg0G,EAAOl9F,EAAMv9C,GAEbu0nB,EAAmB95e,EAAKr5I,QAAQ,MAChCi0K,GAA4B,IAAtBk/c,EAA0B95e,EAAKr5I,QAAQ,KAAOmznB,EAAmB,GAG9D,IAATl/c,GACAvgK,EAAMqL,EAAQ2mB,QAAQ2zG,EAAMv7H,EAAS4nB,QAASC,EAAS,OACvDN,EAAMtmB,EAAQyoR,mBAAqB,KAAO,KAE1C9zR,EAAMqL,EAAQ2mB,QAAQ2zG,EAAK94I,MAAM,EAAG0zK,GAAMn2J,EAAS4nB,QAASC,EAAS,OACrEN,EAAMohQ,EAAMt/P,SACRqrlB,EAAgBn5e,EAAK94I,MAAM0zK,EAAM,GAAIl1J,GACrC,SAAUq0mB,GACN,OAAOr0mB,EAAQ2mB,QAAQ0tlB,EAAYt1mB,EAAS4nB,QAASC,EAAS,YAKtEN,GAAOtmB,EAAQozmB,0BAAwC,eAAZxslB,IAC3CN,EAAM8slB,EAAyB9slB,IAG/Bg0G,EAAKr5I,QAAQ,QAAU,IACvBqlC,EAAMt4B,EAAQs4B,GAAO,CAACA,GAAOA,GAGjC,IAAIgulB,EAAWlonB,EAAI8gB,KAAKnX,EAAKpB,GACzB2/mB,GAAmC,YAAvBt0mB,EAAQ2nkB,WACpB5xkB,EAAIpB,GAAO+yR,EAAM1hQ,QAAQjwB,EAAIpB,GAAM2xB,GAC3BgulB,GAAmC,SAAvBt0mB,EAAQ2nkB,aAC5B5xkB,EAAIpB,GAAO2xB,GAInB,OAAOvwB,EAgKiCw+mB,CAAY7tlB,EAAK1mB,GAAW0mB,EAChE3wB,EAAMiK,EAAQ8lB,aAAetxB,OAAOlX,OAAO,MAAQ,GAInDmX,EAAOD,OAAOC,KAAKw/mB,GACdp0nB,EAAI,EAAGA,EAAI4U,EAAKtY,SAAU0D,EAAG,CAClC,IAAI8U,EAAMF,EAAK5U,GACX+0S,EAAS8+U,EAAU/+mB,EAAKs/mB,EAAQt/mB,GAAMqL,EAAwB,iBAAR0mB,GAC1D3wB,EAAM2xR,EAAMryR,MAAMU,EAAK6+R,EAAQ50R,GAGnC,OAA4B,IAAxBA,EAAQgzmB,YACDj9mB,EAGJ2xR,EAAMzhQ,QAAQlwB,K,sBC7RhB,SAAUsE,GAAU,aAIzB,IAIIK,EACI,2LACJD,EAAc,CACV,SACA,YACA,SACA,QACA,QACA,SACA,SACA,YACA,SACA,QACA,QACA,YAGCJ,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gGAAuFL,MAC3F,KAEJM,YACI,0EAAiEN,MAC7D,KAERG,YAAaA,EACbQ,iBAAkBR,EAClBS,kBA9BI,oGA+BJC,uBA7BI,6FA8BJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAClBc,SAAU,sDAAsDhB,MAAM,KACtEiB,cAAe,qCAAqCjB,MAAM,KAC1DkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAG,aACHgC,GAAI,aACJC,EAAG,YACHC,GAAI,YACJhN,EAAG,UACHiN,GAAI,WACJC,EAAG,cACHC,GAAI,cACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAO97F,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1GyB/gB,CAAQ,EAAQ,U,sBCOjD,SAAUud,GAAU,aAIzB,IAAIorL,EAAa,SAAU11J,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACE,EACM,IAANA,EACE,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GACzB,EACAA,EAAI,KAAO,GACT,EACA,GAElB21J,EAAU,CACN9oL,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,8BACA,oCACA,qCAEJ9B,EAAG,CACC,iEACA,gEACA,CAAC,6CAAW,8CACZ,oCACA,oCACA,qCAEJiC,EAAG,CACC,2DACA,0DACA,CAAC,uCAAU,wCACX,oCACA,8BACA,+BAEJ/M,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,oCACA,yBAEJoN,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,8BACA,8BACA,yBAEJE,EAAG,CACC,qDACA,8CACA,CAAC,iCAAS,kCACV,oCACA,oCACA,0BAGRqoL,EAAY,SAAUrtB,GAClB,OAAO,SAAU56J,EAAQs3I,EAAe7tH,EAAQ6uB,GAC5C,IAAI/kC,EAAIw0K,EAAW/nL,GACfgpB,EAAMg/J,EAAQptB,GAAGmtB,EAAW/nL,IAIhC,OAHU,IAANuT,IACAyV,EAAMA,EAAIsuH,EAAgB,EAAI,IAE3BtuH,EAAIltC,QAAQ,MAAOkkB,KAGlC9C,EAAS,CACL,iCACA,iCACA,2BACA,iCACA,qBACA,2BACA,uCACA,qBACA,uCACA,uCACA,uCACA,wCAGGP,EAAOM,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbW,SAAU,uRAAsDhB,MAAM,KACtEiB,cAAe,mMAAwCjB,MAAM,KAC7DkB,YAAa,mDAAgBlB,MAAM,KACnCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVutB,cAAe,gBACfmuF,KAAM,SAAUnhF,GACZ,MAAO,WAAQA,GAEnB7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,SAEA,UAGfxtB,SAAU,CACNC,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,wBACNC,EAAG+oL,EAAU,KACb9oL,GAAI8oL,EAAU,KACd7qL,EAAG6qL,EAAU,KACb7oL,GAAI6oL,EAAU,KACd5oL,EAAG4oL,EAAU,KACb3oL,GAAI2oL,EAAU,KACd31L,EAAG21L,EAAU,KACb1oL,GAAI0oL,EAAU,KACdvoL,EAAGuoL,EAAU,KACbtoL,GAAIsoL,EAAU,KACdroL,EAAGqoL,EAAU,KACbpoL,GAAIooL,EAAU,MAElBp8J,WAAY,SAAUpC,GAClB,OAAOA,EAAO3tC,QAAQ,KAAM,WAEhCmkB,KAAM,CACFC,IAAK,EACLC,IAAK,KAtJyB/gB,CAAQ,EAAQ,U,0GCTpD,SAAU03nB,EAAUC,EAAyBnolB,GAC/C,OAAO,SAAmC/tB,GACtC,IAAI2/J,EASJ,GAPIA,EADmC,mBAA5Bu2c,EACUA,EAGA,WACb,OAAOA,GAGS,mBAAbnolB,EACP,OAAO/tB,EAAO8V,KAAK,IAAIqgmB,EAAkBx2c,EAAgB5xI,IAE7D,IAAMwyI,EAActqK,OAAOlX,OAAOihB,EAAQ,KAG1C,OAFAugK,EAAYvgK,OAASA,EACrBugK,EAAYZ,eAAiBA,EACtBY,GAGR,IAAM41c,EAAb,8BACI,WAAYx2c,EAAgB5xI,GAAQ,oBAChCt0C,KAAKkmL,eAAiBA,EACtBlmL,KAAKs0C,SAAWA,GAHxB,mBAKI,SAAK/X,EAAYhW,GACb,IAAQ+tB,EAAat0C,KAAbs0C,SACFgyI,EAAUtmL,KAAKkmL,iBACflyE,EAAe1/D,EAASgyI,GAASpiL,UAAUq4B,GAEjD,OADAy3E,EAAanxG,IAAI0jB,EAAOriB,UAAUoiL,IAC3BtyE,MAVf,I,g5CCLA,IAAI2ohB,EAAO,KACX,SAASC,IACL,OAAOD,EAKX,SAASE,EAAkB92T,GAClB42T,IACDA,EAAO52T,G,IAUT+2T,E,+CAkBA31E,EAAW,IAAI,IAAe,iB,iBA+B9B41E,E,sDAENA,EAAiBx8nB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKu8nB,IAChFA,EAAiBn4nB,WAAQ,aAAmB,CAAEE,QAASk4nB,EAA4Bn4nB,MAAOk4nB,EAAkBn2mB,WAAY,a,KASxH,SAASo2mB,IACL,OAAO,aAASC,GAQpB,IAAMC,EAAuB,IAAI,IAAe,wB,iBAM1CD,E,YACF,WAAYpb,GAAI,kCACZ,aACKA,KAAOA,EACZ,EAAKlT,QAHO,E,0DAOhB,WACI3umB,KAAKs6B,SAAWsimB,IAASO,cACzBn9nB,KAAKo9nB,SAAWR,IAASS,e,gCAE7B,WACI,OAAOT,IAASU,YAAYt9nB,KAAK6hnB,Q,wBAErC,SAAW7ymB,GACP4tnB,IAAS9a,qBAAqB9hnB,KAAK6hnB,KAAM,UAAUv2lB,iBAAiB,WAAYtc,GAAI,K,0BAExF,SAAaA,GACT4tnB,IAAS9a,qBAAqB9hnB,KAAK6hnB,KAAM,UAAUv2lB,iBAAiB,aAActc,GAAI,K,gBAE1F,WACI,OAAOhP,KAAKs6B,SAAS8jC,O,oBAEzB,WACI,OAAOp+D,KAAKs6B,SAASskJ,W,oBAEzB,WACI,OAAO5+K,KAAKs6B,SAASC,W,gBAEzB,WACI,OAAOv6B,KAAKs6B,SAASykJ,O,oBAEzB,WACI,OAAO/+K,KAAKs6B,SAAS0kJ,U,IAQzB,SAAailG,GACTjkR,KAAKs6B,SAAS0kJ,SAAWilG,I,kBAP7B,WACI,OAAOjkR,KAAKs6B,SAASuzF,S,gBAEzB,WACI,OAAO7tH,KAAKs6B,SAAS2hB,O,uBAKzB,SAAU5zC,EAAOuuD,EAAOziB,GAChBoplB,IACAv9nB,KAAKo9nB,SAASI,UAAUn1nB,EAAOuuD,EAAOziB,GAGtCn0C,KAAKs6B,SAAS2hB,KAAO9H,I,0BAG7B,SAAa9rC,EAAOuuD,EAAOziB,GACnBoplB,IACAv9nB,KAAKo9nB,SAASK,aAAap1nB,EAAOuuD,EAAOziB,GAGzCn0C,KAAKs6B,SAAS2hB,KAAO9H,I,qBAG7B,WACIn0C,KAAKo9nB,SAASM,Y,kBAElB,WACI19nB,KAAKo9nB,SAASO,S,sBAElB,WACI,OAAO39nB,KAAKo9nB,SAAS/0nB,U,CApES00nB,G,OAuEtCE,EAAwB18nB,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKy8nB,GAAyB,KAAgB91E,KACvI81E,EAAwBr4nB,WAAQ,aAAmB,CAAEE,QAAS84nB,EAA+B/4nB,MAAOo4nB,EAAyBr2mB,WAAY,a,KAezI,SAAS22mB,IACL,QAASpymB,OAAOo1lB,QAAQid,UAE5B,SAASI,IACL,OAAO,IAAIX,EAAwB,aAAS91E,IA2BhD,SAAS02E,EAAc10nB,EAAOC,GAC1B,GAAoB,GAAhBD,EAAMhF,OACN,OAAOiF,EAEX,GAAkB,GAAdA,EAAIjF,OACJ,OAAOgF,EAEX,IAAI01K,EAAU,EAOd,OANI11K,EAAMwqQ,SAAS,MACf90F,IAEAz1K,EAAIquJ,WAAW,MACfonB,IAEW,GAAXA,EACO11K,EAAQC,EAAI4hD,UAAU,GAElB,GAAX6zH,EACO11K,EAAQC,EAEZD,EAAQ,IAAMC,EAWzB,SAAS00nB,EAAmB3plB,GACxB,IAAM7C,EAAQ6C,EAAI7C,MAAM,UAClByslB,EAAazslB,GAASA,EAAM3nC,OAASwqC,EAAIhwC,OAE/C,OAAOgwC,EAAI3qC,MAAM,EADOu0nB,GAAsC,MAAxB5plB,EAAI4plB,EAAa,GAAa,EAAI,IACjC5plB,EAAI3qC,MAAMu0nB,GASrD,SAASC,EAAqBl0iB,GAC1B,OAAOA,GAAwB,MAAdA,EAAO,GAAa,IAAMA,EAASA,E,qBA2BlDm0iB,E,sDAENA,EAAiB19nB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKy9nB,IAChFA,EAAiBr5nB,WAAQ,aAAmB,CAAEE,QAASo5nB,EAAyBr5nB,MAAOo5nB,EAAkBr3mB,WAAY,S,KAKrH,SAASs3mB,EAAwBC,GAE7B,IAAM7jmB,EAAW,aAAS6shB,GAAU7shB,SACpC,OAAO,IAAI8jmB,EAAqB,aAASrB,GAAmBzimB,GAAYA,EAASw4E,QAAU,IAyB/F,IAAMurhB,EAAgB,IAAI,IAAe,e,iBAgCnCD,E,YACF,WAAYE,EAAmBlgkB,GAAI,MAM/B,GAN+B,qBAC/B,aACKkgkB,kBAAoBA,EACb,MAARlgkB,IACAA,EAAO,EAAKkgkB,kBAAkBtoQ,sBAEtB,MAAR53T,EACA,MAAM,IAAI/pC,MAAJ,+GAPqB,OAS/B,EAAKkqmB,UAAYngkB,EATc,E,+DAWnC,SAAWpvD,GACPhP,KAAKs+nB,kBAAkBE,WAAWxvnB,GAClChP,KAAKs+nB,kBAAkBG,aAAazvnB,K,yBAExC,WACI,OAAOhP,KAAKu+nB,Y,gCAEhB,SAAmBG,GACf,OAAOb,EAAc79nB,KAAKu+nB,UAAWG,K,kBAEzC,WAAwB,IAAnBC,EAAmB,wDACd3/c,EAAWh/K,KAAKs+nB,kBAAkBt/c,SAAWg/c,EAAqBh+nB,KAAKs+nB,kBAAkBzwgB,QACzF5xE,EAAOj8C,KAAKs+nB,kBAAkBrilB,KACpC,OAAOA,GAAQ0ilB,EAAR,UAAyB3/c,GAAzB,OAAoC/iI,GAAS+iI,I,uBAExD,SAAU32K,EAAOuuD,EAAOziB,EAAKi0R,GACzB,IAAMw2T,EAAc5+nB,KAAK6+nB,mBAAmB1qlB,EAAM6plB,EAAqB51T,IACvEpoU,KAAKs+nB,kBAAkBd,UAAUn1nB,EAAOuuD,EAAOgokB,K,0BAEnD,SAAav2nB,EAAOuuD,EAAOziB,EAAKi0R,GAC5B,IAAMw2T,EAAc5+nB,KAAK6+nB,mBAAmB1qlB,EAAM6plB,EAAqB51T,IACvEpoU,KAAKs+nB,kBAAkBb,aAAap1nB,EAAOuuD,EAAOgokB,K,qBAEtD,WACI5+nB,KAAKs+nB,kBAAkBZ,Y,kBAE3B,WACI19nB,KAAKs+nB,kBAAkBX,W,CAvCIM,G,OA0CnCG,EAAqB79nB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAK49nB,GAAsB,KAAgBrB,GAAmB,KAAgBsB,EAAe,KAChLD,EAAqBx5nB,WAAQ,KAA0B,CAAEC,MAAOu5nB,EAAsBt5nB,QAASs5nB,EAAqB79nB,Y,sBAuC9Gu+nB,E,YACF,WAAYR,EAAmBC,GAAS,kCACpC,aACKD,kBAAoBA,EACzB,EAAKC,UAAY,GACA,MAAbA,IACA,EAAKA,UAAYA,GALe,E,+DAQxC,SAAWvvnB,GACPhP,KAAKs+nB,kBAAkBE,WAAWxvnB,GAClChP,KAAKs+nB,kBAAkBG,aAAazvnB,K,yBAExC,WACI,OAAOhP,KAAKu+nB,Y,kBAEhB,WAAwB,IAGhBptf,EAAOnxI,KAAKs+nB,kBAAkBrilB,KAGlC,OAFY,MAARk1F,IACAA,EAAO,KACJA,EAAKhtI,OAAS,EAAIgtI,EAAKnmF,UAAU,GAAKmmF,I,gCAEjD,SAAmButf,GACf,IAAMvqlB,EAAM0plB,EAAc79nB,KAAKu+nB,UAAWG,GAC1C,OAAOvqlB,EAAIhwC,OAAS,EAAK,IAAMgwC,EAAOA,I,uBAE1C,SAAU9rC,EAAOuuD,EAAOu6E,EAAMi3L,GAC1B,IAAIj0R,EAAMn0C,KAAK6+nB,mBAAmB1tf,EAAO6sf,EAAqB51T,IAC5C,GAAdj0R,EAAIhwC,SACJgwC,EAAMn0C,KAAKs+nB,kBAAkBt/c,UAEjCh/K,KAAKs+nB,kBAAkBd,UAAUn1nB,EAAOuuD,EAAOziB,K,0BAEnD,SAAa9rC,EAAOuuD,EAAOu6E,EAAMi3L,GAC7B,IAAIj0R,EAAMn0C,KAAK6+nB,mBAAmB1tf,EAAO6sf,EAAqB51T,IAC5C,GAAdj0R,EAAIhwC,SACJgwC,EAAMn0C,KAAKs+nB,kBAAkBt/c,UAEjCh/K,KAAKs+nB,kBAAkBb,aAAap1nB,EAAOuuD,EAAOziB,K,qBAEtD,WACIn0C,KAAKs+nB,kBAAkBZ,Y,kBAE3B,WACI19nB,KAAKs+nB,kBAAkBX,W,CA9CIM,G,OAiDnCa,EAAqBv+nB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKs+nB,GAAsB,KAAgB/B,GAAmB,KAAgBsB,EAAe,KAChLS,EAAqBl6nB,WAAQ,KAA0B,CAAEC,MAAOi6nB,EAAsBh6nB,QAASg6nB,EAAqBv+nB,Y,sBAiD9Gw+nB,E,WACF,WAAYC,EAAkBb,GAAgB,+BAE1Cn+nB,KAAKumL,SAAW,IAAI,IAEpBvmL,KAAKi/nB,oBAAsB,GAC3Bj/nB,KAAKk/nB,kBAAoBF,EACzB,IAAMG,EAAkBn/nB,KAAKk/nB,kBAAkB5B,cAC/Ct9nB,KAAKs+nB,kBAAoBH,EACzBn+nB,KAAKu+nB,UAAYT,EAAmBsB,EAAgBD,IACpDn/nB,KAAKk/nB,kBAAkBV,WAAW,SAACvplB,GAC/B,EAAKsxI,SAASrkK,KAAK,CACf,IAAO,EAAKivH,MAAK,GACjB,KAAO,EACP,MAASl8F,EAAG5sC,MACZ,KAAQ4sC,EAAGv0C,S,wCAavB,WAAwB,IAAnBi+nB,EAAmB,wDACpB,OAAO3+nB,KAAKq/nB,UAAUr/nB,KAAKk/nB,kBAAkB/tf,KAAKwtf,M,sBAMtD,WACI,OAAO3+nB,KAAKs+nB,kBAAkBt+K,a,kCAWlC,SAAqB7uU,GAAgB,IAAV1mG,EAAU,uDAAF,GAC/B,OAAOzqC,KAAKmxI,QAAUnxI,KAAKq/nB,UAAUluf,EAAO6sf,EAAqBvzlB,M,uBASrE,SAAU0J,GACN,OAAO4qlB,EAASjB,mBAmIxB,SAAwBwB,EAAUnrlB,GAC9B,OAAOmrlB,GAAYnrlB,EAAIsjH,WAAW6ne,GAAYnrlB,EAAI6W,UAAUs0kB,EAASn7nB,QAAUgwC,EApIxCorlB,CAAev/nB,KAAKu+nB,UAAWa,EAAgBjrlB,O,gCAYtF,SAAmBA,GAIf,OAHIA,GAAkB,MAAXA,EAAI,KACXA,EAAM,IAAMA,GAETn0C,KAAKk/nB,kBAAkBL,mBAAmB1qlB,K,gBAYrD,SAAGg9F,GAA8B,IAAxB1mG,EAAwB,uDAAhB,GAAIpiC,EAAY,uDAAJ,KACzBrI,KAAKk/nB,kBAAkB1B,UAAUn1nB,EAAO,GAAI8oI,EAAM1mG,GAClDzqC,KAAKw/nB,0BAA0Bx/nB,KAAK6+nB,mBAAmB1tf,EAAO6sf,EAAqBvzlB,IAASpiC,K,0BAUhG,SAAa8oI,GAA8B,IAAxB1mG,EAAwB,uDAAhB,GAAIpiC,EAAY,uDAAJ,KACnCrI,KAAKk/nB,kBAAkBzB,aAAap1nB,EAAO,GAAI8oI,EAAM1mG,GACrDzqC,KAAKw/nB,0BAA0Bx/nB,KAAK6+nB,mBAAmB1tf,EAAO6sf,EAAqBvzlB,IAASpiC,K,qBAKhG,WACIrI,KAAKk/nB,kBAAkBxB,Y,kBAK3B,WACI19nB,KAAKk/nB,kBAAkBvB,S,yBAQ3B,SAAY3unB,GAAE,WACVhP,KAAKi/nB,oBAAoBr7nB,KAAKoL,GACzBhP,KAAKy/nB,yBACNz/nB,KAAKy/nB,uBAAyBz/nB,KAAKkE,UAAU,SAAAjE,GACzC,EAAKu/nB,0BAA0Bv/nB,EAAEk0C,IAAKl0C,EAAEoI,Y,uCAKpD,WAAyC,IAAf8rC,EAAe,uDAAT,GAAI9rC,EAAK,uCACrCrI,KAAKi/nB,oBAAoB5rnB,QAAQ,SAAArE,GAAE,OAAIA,EAAGmlC,EAAK9rC,O,uBAUnD,SAAUq3nB,EAAQC,EAASC,GACvB,OAAO5/nB,KAAKumL,SAASriL,UAAU,CAAEL,KAAM67nB,EAAQ1qmB,MAAO2qmB,EAAS77nB,SAAU87nB,Q,UAGjFb,EAASx+nB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKu+nB,GAAU,KAAgBd,GAAmB,KAAgBlB,KAQ7HgC,EAASf,qBAAuBA,EAUhCe,EAASlB,cAAgBA,EAUzBkB,EAASjB,mBAAqBA,EAC9BiB,EAASn6nB,WAAQ,aAAmB,CAAEE,QAAS+6nB,EAAgBh7nB,MAAOk6nB,EAAUn4mB,WAAY,S,KAa5F,SAASi5mB,IACL,OAAO,IAAId,EAAS,aAASd,GAAmB,aAASlB,IAK7D,SAASqC,EAAgBjrlB,GACrB,OAAOA,EAAI3yC,QAAQ,gBAAiB,IAmBxC,IA2JIs+nB,EACH,SAAUA,G,OACPA,EAAkBA,EAAiB,QAAc,GAAK,UACtDA,EAAkBA,EAAiB,QAAc,GAAK,UACtDA,EAAkBA,EAAiB,SAAe,GAAK,WACvDA,EAAkBA,EAAiB,WAAiB,GAAK,aAJlDA,EAAV,CADoB,IAgBjBC,EACH,SAAUA,G,OACPA,EAAOA,EAAM,KAAW,GAAK,OAC7BA,EAAOA,EAAM,IAAU,GAAK,MAC5BA,EAAOA,EAAM,IAAU,GAAK,MAC5BA,EAAOA,EAAM,IAAU,GAAK,MAC5BA,EAAOA,EAAM,KAAW,GAAK,OAC7BA,EAAOA,EAAM,MAAY,GAAK,QANvBA,EAAV,CADS,IAkBNC,EACH,SAAUA,G,OACPA,EAAUA,EAAS,OAAa,GAAK,SACrCA,EAAUA,EAAS,WAAiB,GAAK,aAFlCA,EAAV,CADY,IAYTC,EACH,SAAUA,G,OAEPA,EAAiBA,EAAgB,OAAa,GAAK,SAEnDA,EAAiBA,EAAgB,YAAkB,GAAK,cAExDA,EAAiBA,EAAgB,KAAW,GAAK,OAEjDA,EAAiBA,EAAgB,MAAY,GAAK,QAR3CA,EAAV,CADmB,IAsBhBC,EACH,SAAUA,G,OAKPA,EAAYA,EAAW,MAAY,GAAK,QAKxCA,EAAYA,EAAW,OAAa,GAAK,SAKzCA,EAAYA,EAAW,KAAW,GAAK,OAKvCA,EAAYA,EAAW,KAAW,GAAK,OApBhCA,EAAV,CADc,IAgCXC,EACH,SAAUA,G,OAMPA,EAAaA,EAAY,QAAc,GAAK,UAM5CA,EAAaA,EAAY,MAAY,GAAK,QAK1CA,EAAaA,EAAY,KAAW,GAAK,OAKzCA,EAAaA,EAAY,YAAkB,GAAK,cAKhDA,EAAaA,EAAY,SAAe,GAAK,WAK7CA,EAAaA,EAAY,UAAgB,GAAK,YAK9CA,EAAaA,EAAY,YAAkB,GAAK,cAKhDA,EAAaA,EAAY,uBAA6B,GAAK,yBAK3DA,EAAaA,EAAY,SAAe,GAAK,WAK7CA,EAAaA,EAAa,KAAc,GAAK,WAK7CA,EAAaA,EAAY,IAAU,IAAM,MAKzCA,EAAaA,EAAY,cAAoB,IAAM,gBAKnDA,EAAaA,EAAY,gBAAsB,IAAM,kBAKrDA,EAAaA,EAAY,cAAoB,IAAM,gBAxE5CA,EAAV,CADe,IAqIhB,SAASC,EAAkBj7kB,EAAQk7kB,EAAW32nB,GAC1C,IAAMoG,EAAO,aAAgBq1C,GAEvBvL,EAAO0mlB,EADI,CAACxwnB,EAAK,KAAiBywnB,YAAazwnB,EAAK,KAAiB0wnB,iBAChCH,GAC3C,OAAOC,EAAoB1mlB,EAAMlwC,GAcrC,SAAS+2nB,EAAoBt7kB,EAAQk7kB,EAAW32nB,GAC5C,IAAMoG,EAAO,aAAgBq1C,GAEvBviC,EAAS09mB,EADI,CAACxwnB,EAAK,KAAiB4wnB,cAAe5wnB,EAAK,KAAiB6wnB,mBAChCN,GAC/C,OAAOC,EAAoB19mB,EAAQlZ,GAyDvC,SAASk3nB,EAAoBz7kB,EAAQz7C,GAEjC,OAAO42nB,EADM,aAAgBn7kB,GACG,KAAiB07kB,YAAan3nB,GAalE,SAASo3nB,EAAoB37kB,EAAQz7C,GAEjC,OAAO42nB,EADM,aAAgBn7kB,GACG,KAAiB47kB,YAAar3nB,GAalE,SAASs3nB,EAAwB77kB,EAAQz7C,GAGrC,OAAO42nB,EAFM,aAAgBn7kB,GACG,KAAiBS,gBACFl8C,GAYnD,SAASu3nB,EAAsB97kB,EAAQqiN,GACnC,IAAM13P,EAAO,aAAgBq1C,GACvB7sB,EAAMxoB,EAAK,KAAiBoxnB,eAAe15X,GACjD,QAAmB,IAARlvO,EAAqB,CAC5B,GAAIkvO,IAAW24X,EAAagB,gBACxB,OAAOrxnB,EAAK,KAAiBoxnB,eAAef,EAAaiB,SAExD,GAAI55X,IAAW24X,EAAakB,cAC7B,OAAOvxnB,EAAK,KAAiBoxnB,eAAef,EAAamB,OAGjE,OAAOhpmB,EAiGX,IAAMuojB,EAAsB,KAC5B,SAAS0gD,EAAczxnB,GACnB,IAAKA,EAAK,KAAiBuwkB,WACvB,MAAM,IAAIhsjB,MAAJ,oDAAuDvkB,EAAK,KAC7DswkB,UADC,mGAwFd,SAASkgD,EAAoBxwnB,EAAMnG,GAC/B,IAAK,IAAI9B,EAAI8B,EAAO9B,GAAK,EAAGA,IACxB,QAAuB,IAAZiI,EAAKjI,GACZ,OAAOiI,EAAKjI,GAGpB,MAAM,IAAIwsB,MAAM,0CAKpB,SAASmtmB,EAAY35jB,GACjB,MAAeA,EAAKtlD,MAAM,KAA1B,mBACA,MAAO,CAAEy8B,OADT,KACoBC,SADpB,MAsDJ,IAAMwilB,EAAqB,uGAErBC,EAAgB,GAChBC,EAAqB,4MACvBC,GACH,SAAUA,G,OACPA,EAAUA,EAAS,MAAY,GAAK,QACpCA,EAAUA,EAAS,SAAe,GAAK,WACvCA,EAAUA,EAAS,KAAW,GAAK,OACnCA,EAAUA,EAAS,SAAe,GAAK,WAJhCA,EAAV,CADY,IAOTC,GACH,SAAUA,G,OACPA,EAASA,EAAQ,SAAe,GAAK,WACrCA,EAASA,EAAQ,MAAY,GAAK,QAClCA,EAASA,EAAQ,KAAW,GAAK,OACjCA,EAASA,EAAQ,MAAY,GAAK,QAClCA,EAASA,EAAQ,QAAc,GAAK,UACpCA,EAASA,EAAQ,QAAc,GAAK,UACpCA,EAASA,EAAQ,kBAAwB,GAAK,oBAC9CA,EAASA,EAAQ,IAAU,GAAK,MARzBA,EAAV,CADW,IAWRC,GACH,SAAUA,G,OACPA,EAAgBA,EAAe,WAAiB,GAAK,aACrDA,EAAgBA,EAAe,KAAW,GAAK,OAC/CA,EAAgBA,EAAe,OAAa,GAAK,SACjDA,EAAgBA,EAAe,KAAW,GAAK,OAJxCA,EAAV,CADkB,IA4BnB,SAASv8jB,GAAWhkE,EAAOwhB,EAAQoiC,EAAQ48kB,GACvC,IAAI9nlB,EAylBR,SAAgB14C,GACZ,GAAIi9O,GAAOj9O,GACP,OAAOA,EAEX,GAAqB,iBAAVA,IAAuB05C,MAAM15C,GACpC,OAAO,IAAIm5C,KAAKn5C,GAEpB,GAAqB,iBAAVA,EAAoB,CAE3B,GADAA,EAAQA,EAAMub,OACV,kCAAkCkG,KAAKzhB,GAAQ,CAQ/C,MAA0BA,EAAMghB,MAAM,KAAK9Y,IAAI,SAAC6kC,GAAD,OAAUA,IAAzD,iCACA,OAAO4gkB,GADP,iBAAc,EAAd,GACyB,OADzB,MAAqB,EAArB,GAGJ,IAKI59jB,EALE0wlB,EAAWn0mB,WAAWtsB,GAE5B,IAAK05C,MAAM15C,EAAQygoB,GACf,OAAO,IAAItnlB,KAAKsnlB,GAGpB,GAAI1wlB,EAAQ/vC,EAAM+vC,MAAMmwlB,GACpB,OAaZ,SAAyBnwlB,GACrB,IAAM2I,EAAO,IAAIS,KAAK,GAClBunlB,EAAS,EACTC,EAAQ,EAENC,EAAa7wlB,EAAM,GAAK2I,EAAKqlJ,eAAiBrlJ,EAAKknE,YACnDihhB,EAAa9wlB,EAAM,GAAK2I,EAAKslJ,YAActlJ,EAAKolJ,SAElD/tJ,EAAM,KACN2wlB,EAAStznB,OAAO2iC,EAAM,GAAKA,EAAM,KACjC4wlB,EAAQvznB,OAAO2iC,EAAM,GAAKA,EAAM,MAEpC6wlB,EAAWjtmB,KAAK+kB,EAAMtrC,OAAO2iC,EAAM,IAAK3iC,OAAO2iC,EAAM,IAAM,EAAG3iC,OAAO2iC,EAAM,KAC3E,IAAMvsB,EAAIpW,OAAO2iC,EAAM,IAAM,GAAK2wlB,EAC5Bn/mB,EAAInU,OAAO2iC,EAAM,IAAM,GAAK4wlB,EAC5Bt9mB,EAAIjW,OAAO2iC,EAAM,IAAM,GAIvB+N,EAAK9gC,KAAKs7B,MAA2C,IAArChsB,WAAW,MAAQyjB,EAAM,IAAM,KAErD,OADA8wlB,EAAWltmB,KAAK+kB,EAAMl1B,EAAGjC,EAAG8B,EAAGy6B,GACxBpF,EAlCQoolB,CAAgB/wlB,GAG/B,IAAM2I,EAAO,IAAIS,KAAKn5C,GACtB,IAAKi9O,GAAOvkM,GACR,MAAM,IAAI5lB,MAAJ,6BAAgC9yB,EAAhC,kBAEV,OAAO04C,EA3nBIklB,CAAO59D,GAElBwhB,EADoBu/mB,GAAen9kB,EAAQpiC,IACnBA,EAGxB,IAFA,IACIuuB,EADA8T,EAAQ,GAELriC,GAAQ,CAEX,KADAuuB,EAAQqwlB,EAAmBjjlB,KAAK37B,IAS3B,CACDqiC,EAAMxhD,KAAKmf,GACX,MARA,IAAMu/H,GADNl9F,EAAQA,EAAMpsC,OAAOs4B,EAAM9nC,MAAM,KACdy1B,MACnB,IAAKqjH,EACD,MAEJv/H,EAASu/H,EAOjB,IAAIigf,EAAqBtolB,EAAK6xB,oBAC1Bi2jB,IACAQ,EAAqBC,GAAiBT,EAAUQ,GAChDtolB,EAgjBR,SAAgCA,EAAM8nlB,EAAUl4nB,GAC5C,IACM04nB,EAAqBtolB,EAAK6xB,oBAEhC,OATJ,SAAwB7xB,EAAMgF,GAG1B,OAFAhF,EAAO,IAAIS,KAAKT,EAAKinE,YAChB2nR,WAAW5uV,EAAKK,aAAe2E,GAC7BhF,EAMAwolB,CAAexolB,GAHS,GAERuolB,GAAiBT,EAAUQ,GACWA,IApjBlDG,CAAuBzolB,EAAM8nlB,IAExC,IAAIv4iB,EAAO,GAOX,OANApkC,EAAM/xC,QAAQ,SAAA9R,GACV,IAAMohoB,EA8Td,SAA0B5/mB,GACtB,GAAI6/mB,GAAa7/mB,GACb,OAAO6/mB,GAAa7/mB,GAExB,IAAI00B,EACJ,OAAQ10B,GAEJ,IAAK,IACL,IAAK,KACL,IAAK,MACD00B,EAAYorlB,GAAcf,GAAgBgB,KAAM7C,EAAiBx8gB,aACjE,MACJ,IAAK,OACDhsE,EAAYorlB,GAAcf,GAAgBgB,KAAM7C,EAAiBt8gB,MACjE,MACJ,IAAK,QACDlsE,EAAYorlB,GAAcf,GAAgBgB,KAAM7C,EAAiB8C,QACjE,MAEJ,IAAK,IACDtrlB,EAAYurlB,GAAWnB,GAASoB,SAAU,EAAG,GAAG,GAAO,GACvD,MAEJ,IAAK,KACDxrlB,EAAYurlB,GAAWnB,GAASoB,SAAU,EAAG,GAAG,GAAM,GACtD,MAEJ,IAAK,MACDxrlB,EAAYurlB,GAAWnB,GAASoB,SAAU,EAAG,GAAG,GAAO,GACvD,MAEJ,IAAK,OACDxrlB,EAAYurlB,GAAWnB,GAASoB,SAAU,EAAG,GAAG,GAAO,GACvD,MAEJ,IAAK,IACDxrlB,EAAYyrlB,GAAwB,GACpC,MAGJ,IAAK,KACDzrlB,EAAYyrlB,GAAwB,GAAG,GACvC,MAGJ,IAAK,MACDzrlB,EAAYyrlB,GAAwB,GACpC,MAEJ,IAAK,OACDzrlB,EAAYyrlB,GAAwB,GACpC,MAEJ,IAAK,IACL,IAAK,IACDzrlB,EAAYurlB,GAAWnB,GAASsB,MAAO,EAAG,GAC1C,MACJ,IAAK,KACL,IAAK,KACD1rlB,EAAYurlB,GAAWnB,GAASsB,MAAO,EAAG,GAC1C,MAEJ,IAAK,MACD1rlB,EAAYorlB,GAAcf,GAAgBsB,OAAQnD,EAAiBx8gB,aACnE,MACJ,IAAK,OACDhsE,EAAYorlB,GAAcf,GAAgBsB,OAAQnD,EAAiBt8gB,MACnE,MACJ,IAAK,QACDlsE,EAAYorlB,GAAcf,GAAgBsB,OAAQnD,EAAiB8C,QACnE,MAEJ,IAAK,MACDtrlB,EACIorlB,GAAcf,GAAgBsB,OAAQnD,EAAiBx8gB,YAAau8gB,EAAU38gB,YAClF,MACJ,IAAK,OACD5rE,EACIorlB,GAAcf,GAAgBsB,OAAQnD,EAAiBt8gB,KAAMq8gB,EAAU38gB,YAC3E,MACJ,IAAK,QACD5rE,EACIorlB,GAAcf,GAAgBsB,OAAQnD,EAAiB8C,OAAQ/C,EAAU38gB,YAC7E,MAEJ,IAAK,IACD5rE,EAAY4rlB,GAAW,GACvB,MACJ,IAAK,KACD5rlB,EAAY4rlB,GAAW,GACvB,MAEJ,IAAK,IACD5rlB,EAAY4rlB,GAAW,GAAG,GAC1B,MAEJ,IAAK,IACD5rlB,EAAYurlB,GAAWnB,GAASnnlB,KAAM,GACtC,MACJ,IAAK,KACDjD,EAAYurlB,GAAWnB,GAASnnlB,KAAM,GACtC,MAEJ,IAAK,IACL,IAAK,KACL,IAAK,MACDjD,EAAYorlB,GAAcf,GAAgBwB,KAAMrD,EAAiBx8gB,aACjE,MACJ,IAAK,OACDhsE,EAAYorlB,GAAcf,GAAgBwB,KAAMrD,EAAiBt8gB,MACjE,MACJ,IAAK,QACDlsE,EAAYorlB,GAAcf,GAAgBwB,KAAMrD,EAAiB8C,QACjE,MACJ,IAAK,SACDtrlB,EAAYorlB,GAAcf,GAAgBwB,KAAMrD,EAAiB38gB,OACjE,MAEJ,IAAK,IACL,IAAK,KACL,IAAK,MACD7rE,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiBx8gB,aACvE,MACJ,IAAK,OACDhsE,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiBt8gB,MACvE,MACJ,IAAK,QACDlsE,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiB8C,QACvE,MAEJ,IAAK,IACL,IAAK,KACL,IAAK,MACDtrlB,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiBx8gB,YAAau8gB,EAAU38gB,YAAY,GAC1G,MACJ,IAAK,OACD5rE,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiBt8gB,KAAMq8gB,EAAU38gB,YAAY,GACnG,MACJ,IAAK,QACD5rE,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiB8C,OAAQ/C,EAAU38gB,YAAY,GACrG,MAEJ,IAAK,IACL,IAAK,KACL,IAAK,MACD5rE,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiBx8gB,YAAau8gB,EAAUwD,QAAQ,GACtG,MACJ,IAAK,OACD/rlB,EACIorlB,GAAcf,GAAgByB,WAAYtD,EAAiBt8gB,KAAMq8gB,EAAUwD,QAAQ,GACvF,MACJ,IAAK,QACD/rlB,EAAYorlB,GAAcf,GAAgByB,WAAYtD,EAAiB8C,OAAQ/C,EAAUwD,QAAQ,GACjG,MAEJ,IAAK,IACD/rlB,EAAYurlB,GAAWnB,GAAS4B,MAAO,GAAI,IAC3C,MACJ,IAAK,KACDhslB,EAAYurlB,GAAWnB,GAAS4B,MAAO,GAAI,IAC3C,MAEJ,IAAK,IACDhslB,EAAYurlB,GAAWnB,GAAS4B,MAAO,GACvC,MAEJ,IAAK,KACDhslB,EAAYurlB,GAAWnB,GAAS4B,MAAO,GACvC,MAEJ,IAAK,IACDhslB,EAAYurlB,GAAWnB,GAAS6B,QAAS,GACzC,MACJ,IAAK,KACDjslB,EAAYurlB,GAAWnB,GAAS6B,QAAS,GACzC,MAEJ,IAAK,IACDjslB,EAAYurlB,GAAWnB,GAAS8B,QAAS,GACzC,MACJ,IAAK,KACDlslB,EAAYurlB,GAAWnB,GAAS8B,QAAS,GACzC,MAEJ,IAAK,IACDlslB,EAAYurlB,GAAWnB,GAAS+B,kBAAmB,GACnD,MACJ,IAAK,KACDnslB,EAAYurlB,GAAWnB,GAAS+B,kBAAmB,GACnD,MACJ,IAAK,MACDnslB,EAAYurlB,GAAWnB,GAAS+B,kBAAmB,GACnD,MAEJ,IAAK,IACL,IAAK,KACL,IAAK,MACDnslB,EAAYoslB,GAAejC,GAAUt+gB,OACrC,MAEJ,IAAK,QACD7rE,EAAYoslB,GAAejC,GAAUkC,UACrC,MAEJ,IAAK,IACL,IAAK,KACL,IAAK,MAEL,IAAK,IACL,IAAK,KACL,IAAK,MACDrslB,EAAYoslB,GAAejC,GAAUmC,UACrC,MAEJ,IAAK,OACL,IAAK,OAEL,IAAK,OACDtslB,EAAYoslB,GAAejC,GAAUoC,MACrC,MACJ,QACI,OAAO,KAGf,OADApB,GAAa7/mB,GAAU00B,EAChBA,EA9hBmBwslB,CAAiB1ioB,GACvCioF,GAAQm5iB,EACJA,EAAc1olB,EAAMkL,EAAQo9kB,GAClB,OAAVhhoB,EAAmB,IAAOA,EAAMC,QAAQ,WAAY,IAAIA,QAAQ,MAAO,OAExEgoF,EAYX,SAAS0lhB,GAAW11jB,EAAMv2B,EAAOg3B,GAK7B,IAAMsrE,EAAU,IAAI7qE,KAAK,GAWzB,OALA6qE,EAAQpE,YAAY3nE,EAAMv2B,EAAOg3B,GAIjCsrE,EAAQ85E,SAAS,EAAG,EAAG,GAChB95E,EAEX,SAAS+8gB,GAAen9kB,EAAQpiC,GAC5B,IAAMk9jB,EAzhBV,SAAqB96hB,GACjB,OAAO,aAAgBA,GAAQ,KAAiBi7hB,UAwhB/B8jD,CAAY/+kB,GAE7B,GADAu8kB,EAAczhD,GAAYyhD,EAAczhD,IAAa,GACjDyhD,EAAczhD,GAAUl9jB,GACxB,OAAO2+mB,EAAczhD,GAAUl9jB,GAEnC,IAAI8oa,EAAc,GAClB,OAAQ9oa,GACJ,IAAK,YACD8oa,EAAc+0M,EAAoBz7kB,EAAQ+6kB,EAAY58gB,OACtD,MACJ,IAAK,aACDuoU,EAAc+0M,EAAoBz7kB,EAAQ+6kB,EAAYrzlB,QACtD,MACJ,IAAK,WACDg/Y,EAAc+0M,EAAoBz7kB,EAAQ+6kB,EAAY8D,MACtD,MACJ,IAAK,WACDn4M,EAAc+0M,EAAoBz7kB,EAAQ+6kB,EAAYiE,MACtD,MACJ,IAAK,YACDt4M,EAAci1M,EAAoB37kB,EAAQ+6kB,EAAY58gB,OACtD,MACJ,IAAK,aACDuoU,EAAci1M,EAAoB37kB,EAAQ+6kB,EAAYrzlB,QACtD,MACJ,IAAK,WACDg/Y,EAAci1M,EAAoB37kB,EAAQ+6kB,EAAY8D,MACtD,MACJ,IAAK,WACDn4M,EAAci1M,EAAoB37kB,EAAQ+6kB,EAAYiE,MACtD,MACJ,IAAK,QACD,IAAMC,EAAY9B,GAAen9kB,EAAQ,aACnCk/kB,EAAY/B,GAAen9kB,EAAQ,aACzC0mY,EAAcy4M,GAAetD,EAAwB77kB,EAAQ+6kB,EAAY58gB,OAAQ,CAAC8ghB,EAAWC,IAC7F,MACJ,IAAK,SACD,IAAME,EAAajC,GAAen9kB,EAAQ,cACpCq/kB,EAAalC,GAAen9kB,EAAQ,cAC1C0mY,EAAcy4M,GAAetD,EAAwB77kB,EAAQ+6kB,EAAYrzlB,QAAS,CAAC03lB,EAAYC,IAC/F,MACJ,IAAK,OACD,IAAMC,EAAWnC,GAAen9kB,EAAQ,YAClCu/kB,EAAWpC,GAAen9kB,EAAQ,YACxC0mY,EACIy4M,GAAetD,EAAwB77kB,EAAQ+6kB,EAAY8D,MAAO,CAACS,EAAUC,IACjF,MACJ,IAAK,OACD,IAAMC,EAAWrC,GAAen9kB,EAAQ,YAClCy/kB,EAAWtC,GAAen9kB,EAAQ,YACxC0mY,EACIy4M,GAAetD,EAAwB77kB,EAAQ+6kB,EAAYiE,MAAO,CAACQ,EAAUC,IAMzF,OAHI/4M,IACA61M,EAAczhD,GAAUl9jB,GAAU8oa,GAE/BA,EAEX,SAASy4M,GAAe51lB,EAAKm2lB,GAMzB,OALIA,IACAn2lB,EAAMA,EAAIltC,QAAQ,cAAe,SAAU8vC,EAAO30B,GAC9C,OAAsB,MAAdkonB,GAAsBlonB,KAAOkonB,EAAcA,EAAWlonB,GAAO20B,KAGtE5C,EAEX,SAASgwE,GAAU15D,EAAK8/kB,GAAsC,IAA9BC,EAA8B,uDAAlB,IAAKjonB,EAAa,uCAAPkonB,EAAO,uCACtD/2Z,EAAM,IACNjpL,EAAM,GAAMgglB,GAAWhglB,GAAO,KAC1BgglB,EACAhglB,EAAa,EAANA,GAGPA,GAAOA,EACPipL,EAAM82Z,IAId,IADA,IAAIE,EAAS51lB,OAAO2V,GACbiglB,EAAO9goB,OAAS2goB,GACnBG,EAAS,IAAMA,EAKnB,OAHInonB,IACAmonB,EAASA,EAAO1tlB,OAAO0tlB,EAAO9goB,OAAS2goB,IAEpC72Z,EAAMg3Z,EAEjB,SAASC,GAAwBrmlB,EAAcimlB,GAE3C,OADcpmhB,GAAU7/D,EAAc,GACzBtH,OAAO,EAAGutlB,GAK3B,SAAS9B,GAAW7hoB,EAAMg/B,GAA+C,IAAzCt1B,EAAyC,uDAAhC,EAAGiS,EAA6B,wDAAfkonB,EAAe,wDACrE,OAAO,SAAU/qlB,EAAMkL,GACnB,IAAIm9F,EAAO6if,GAAYhkoB,EAAM84C,GAI7B,IAHIpvC,EAAS,GAAKy3I,GAAQz3I,KACtBy3I,GAAQz3I,GAER1J,IAAS0goB,GAAS4B,MACL,IAATnhf,IAA0B,KAAZz3I,IACdy3I,EAAO,SAGV,GAAInhJ,IAAS0goB,GAAS+B,kBACvB,OAAOsB,GAAwB5if,EAAMniH,GAEzC,IAAMilmB,EAAcnE,EAAsB97kB,EAAQg7kB,EAAakF,WAC/D,OAAO3mhB,GAAU4jC,EAAMniH,EAAMilmB,EAAatonB,EAAMkonB,IAGxD,SAASG,GAAY7if,EAAMroG,GACvB,OAAQqoG,GACJ,KAAKu/e,GAASoB,SACV,OAAOhplB,EAAKC,cAChB,KAAK2nlB,GAASsB,MACV,OAAOlplB,EAAKE,WAChB,KAAK0nlB,GAASnnlB,KACV,OAAOT,EAAKG,UAChB,KAAKynlB,GAAS4B,MACV,OAAOxplB,EAAKI,WAChB,KAAKwnlB,GAAS6B,QACV,OAAOzplB,EAAKK,aAChB,KAAKunlB,GAAS8B,QACV,OAAO1plB,EAAKM,aAChB,KAAKsnlB,GAAS+B,kBACV,OAAO3plB,EAAKO,kBAChB,KAAKqnlB,GAASyD,IACV,OAAOrrlB,EAAK0nE,SAChB,QACI,MAAM,IAAIttF,MAAJ,kCAAqCiuH,EAArC,QAMlB,SAASugf,GAAc1hoB,EAAMuI,GAAgD,IAAzCkrI,EAAyC,uDAAlCorf,EAAUwD,OAAQ+B,EAAgB,wDACzE,OAAO,SAAUtrlB,EAAMkL,GACnB,OAAOqglB,GAAmBvrlB,EAAMkL,EAAQhkD,EAAMuI,EAAOkrI,EAAM2wf,IAMnE,SAASC,GAAmBvrlB,EAAMkL,EAAQhkD,EAAMuI,EAAOkrI,EAAM2wf,GACzD,OAAQpkoB,GACJ,KAAK2goB,GAAgBsB,OACjB,OAAO3C,EAAoBt7kB,EAAQyvF,EAAMlrI,GAAOuwC,EAAKE,YACzD,KAAK2nlB,GAAgBwB,KACjB,OAAOlD,EAAkBj7kB,EAAQyvF,EAAMlrI,GAAOuwC,EAAK0nE,UACvD,KAAKmghB,GAAgByB,WACjB,IAAMkC,EAAexrlB,EAAKI,WACpBqrlB,EAAiBzrlB,EAAKK,aAC5B,GAAIirlB,EAAU,CACV,IAAMI,EA7YtB,SAAsCxglB,GAClC,IAAMr1C,EAAO,aAAgBq1C,GAG7B,OAFAo8kB,EAAczxnB,IACAA,EAAK,KAAiBuwkB,WAAW,IAAiC,IACnE52kB,IAAI,SAACwsgB,GACd,MAAoB,iBAATA,EACAurH,EAAYvrH,GAEhB,CAACurH,EAAYvrH,EAAK,IAAKurH,EAAYvrH,EAAK,OAqYzB2vH,CAA6BzglB,GACrC0glB,EAlXtB,SAAkC1glB,EAAQk7kB,EAAW32nB,GACjD,IAAMoG,EAAO,aAAgBq1C,GAC7Bo8kB,EAAczxnB,GACd,IAIM+1nB,EAAavF,EAJI,CACnBxwnB,EAAK,KAAiBuwkB,WAAW,GACjCvwkB,EAAK,KAAiBuwkB,WAAW,IAEkBggD,IAAc,GACrE,OAAOC,EAAoBuF,EAAYn8nB,IAAU,GA0WlBo8nB,CAAyB3glB,EAAQyvF,EAAMlrI,GACpDC,EAAQg8nB,EAAMxghB,UAAU,SAAA8wZ,GAC1B,GAAI1rgB,MAAMyL,QAAQiggB,GAAO,CAErB,kBAAmBA,EAAnB,GAAO3xgB,EAAP,KAAaktJ,EAAb,KACMu0e,EAAYN,GAAgBnhoB,EAAK06C,OAAS0mlB,GAAkBphoB,EAAK26C,QACjE+mlB,EAAYP,EAAej0e,EAAGxyG,OAC/BymlB,IAAiBj0e,EAAGxyG,OAAS0mlB,EAAiBl0e,EAAGvyG,QAWtD,GAAI36C,EAAK06C,MAAQwyG,EAAGxyG,OAChB,GAAI+mlB,GAAaC,EACb,OAAO,OAGV,GAAID,GAAaC,EAClB,OAAO,OAIX,GAAI/vH,EAAKj3d,QAAUymlB,GAAgBxvH,EAAKh3d,UAAYymlB,EAChD,OAAO,EAGf,OAAO,IAEX,IAAe,IAAX/7nB,EACA,OAAOk8nB,EAAWl8nB,GAI1B,OA9sBZ,SAA6Bw7C,EAAQk7kB,EAAW32nB,GAC5C,IAAMoG,EAAO,aAAgBq1C,GAIvB8glB,EAAO3F,EAHI,CACbxwnB,EAAK,KAAiBo2nB,kBAAmBp2nB,EAAK,KAAiBq2nB,uBAExB9F,GAC3C,OAAOC,EAAoB2F,EAAMv8nB,GAwsBlB08nB,CAAoBjhlB,EAAQyvF,EAAMlrI,GAAO+7nB,EAAe,GAAK,EAAI,GAC5E,KAAK3D,GAAgBgB,KACjB,OAzpBZ,SAA2B39kB,EAAQz7C,GAG/B,OAAO42nB,EAFM,aAAgBn7kB,GACP,KAAiB29kB,MACFp5nB,GAspBtB28nB,CAAkBlhlB,EAAQz7C,GAAOuwC,EAAKC,eAAiB,EAAI,EAAI,GAC1E,QAMI,MAAM,IAAI7lB,MAAJ,sCADalzB,KAS/B,SAAS0ioB,GAAen6nB,GACpB,OAAO,SAAUuwC,EAAMkL,EAAQt6C,GAC3B,IAAMs/G,GAAQ,EAAIt/G,EACZk6nB,EAAY9D,EAAsB97kB,EAAQg7kB,EAAakF,WACvDrmlB,EAAQmrE,EAAO,EAAI5rG,KAAKs7B,MAAMswE,EAAO,IAAM5rG,KAAKC,KAAK2rG,EAAO,IAClE,OAAQzgH,GACJ,KAAKk4nB,GAAUt+gB,MACX,OAAS6G,GAAQ,EAAK,IAAM,IAAMzL,GAAU1/D,EAAO,EAAG+llB,GAClDrmhB,GAAUngG,KAAKqiC,IAAIupE,EAAO,IAAK,EAAG46gB,GAC1C,KAAKnD,GAAUmC,SACX,MAAO,OAAU55gB,GAAQ,EAAK,IAAM,IAAMzL,GAAU1/D,EAAO,EAAG+llB,GAClE,KAAKnD,GAAUoC,KACX,MAAO,OAAU75gB,GAAQ,EAAK,IAAM,IAAMzL,GAAU1/D,EAAO,EAAG+llB,GAAa,IACvErmhB,GAAUngG,KAAKqiC,IAAIupE,EAAO,IAAK,EAAG46gB,GAC1C,KAAKnD,GAAUkC,SACX,OAAe,IAAXj5nB,EACO,KAGEs/G,GAAQ,EAAK,IAAM,IAAMzL,GAAU1/D,EAAO,EAAG+llB,GAAa,IAC/DrmhB,GAAUngG,KAAKqiC,IAAIupE,EAAO,IAAK,EAAG46gB,GAE9C,QACI,MAAM,IAAI1wmB,MAAJ,8BAAiC3qB,EAAjC,QAMtB,SAAS48nB,GAAuB9slB,GAC5B,IAAM+slB,EAAiBr3B,GAAW11jB,EAHtB,EAGqC,GAAGmoE,SACpD,OAAOutf,GAAW11jB,EAAM,EAAG,GAAM+slB,GAHpB,IAG6DC,IAAgBD,GAE9F,SAASE,GAAoB/zZ,GACzB,OAAOw8X,GAAWx8X,EAASx4L,cAAew4L,EAASv4L,WAAYu4L,EAASt4L,WAN3D,EAMmFs4L,EAAS/wH,WAE7G,SAAS0hhB,GAAWljmB,GAAwB,IAAlBummB,EAAkB,wDACxC,OAAO,SAAUzslB,EAAMkL,GACnB,IAAIvoB,EACJ,GAAI8pmB,EAAY,CACZ,IAAMC,EAA4B,IAAIjslB,KAAKT,EAAKC,cAAeD,EAAKE,WAAY,GAAGwnE,SAAW,EACxF38C,EAAQ/qB,EAAKG,UACnBxd,EAAS,EAAIre,KAAKs7B,OAAOmrB,EAAQ2hkB,GAA6B,OAE7D,CACD,IAAMC,EAAYH,GAAoBxslB,GAGhC4slB,EAAaP,GAAuBM,EAAU1slB,eAC9C30C,EAAOqhoB,EAAU1lhB,UAAY2lhB,EAAW3lhB,UAC9CtkF,EAAS,EAAIre,KAAK06B,MAAM1zC,EAAO,QAEnC,OAAOm5G,GAAU9hF,EAAQuD,EAAM8gmB,EAAsB97kB,EAAQg7kB,EAAakF,aAMlF,SAASnC,GAAwB/imB,GAAkB,IAAZrjB,EAAY,wDAC/C,OAAO,SAAUm9B,EAAMkL,GAGnB,OAAOu5D,GAFW+nhB,GAAoBxslB,GACFC,cACA/Z,EAAM8gmB,EAAsB97kB,EAAQg7kB,EAAakF,WAAYvonB,IAGzG,IAAM8lnB,GAAe,GAuOrB,SAASJ,GAAiBT,EAAUp8iB,GAGhCo8iB,EAAWA,EAASvgoB,QAAQ,KAAM,IAClC,IAAMsloB,EAA0BpslB,KAAKvgB,MAAM,yBAA2B4nmB,GAAY,IAClF,OAAO9mlB,MAAM6rlB,GAA2BnhjB,EAAWmhjB,EAwFvD,SAAStoZ,GAAOj9O,GACZ,OAAOA,aAAiBm5C,OAASO,MAAM15C,EAAMu3C,WAUjD,IAAMiulB,GAAuB,8BAEvBC,GAAc,IACdC,GAAY,IAGZC,GAAa,IAoOnB,SAASC,GAAUC,GAEf,GAA+B,IAA3BA,EAAatC,OAAO,GACpB,OAAOsC,EAGX,IAAMC,EAAcD,EAAatC,OAAO3goB,OAASijoB,EAAaE,WAa9D,OAZIF,EAAaG,SACbH,EAAaG,UAAY,GAGL,IAAhBF,EACAD,EAAatC,OAAOlhoB,KAAK,EAAG,GAEP,IAAhByjoB,GACLD,EAAatC,OAAOlhoB,KAAK,GAE7BwjoB,EAAaE,YAAc,GAExBF,EAMX,SAASI,GAAYxilB,GACjB,IACkB8/kB,EAAQwC,EACtBz/nB,EAAG0M,EAAGkznB,EAFNC,EAASnpnB,KAAKqiC,IAAIoE,GAAO,GACzBuilB,EAAW,EAmBf,KAhBKD,EAAaI,EAAOz+nB,QAAQ+9nB,MAAiB,IAC9CU,EAASA,EAAOlmoB,QAAQwloB,GAAa,MAGpCn/nB,EAAI6/nB,EAAO75gB,OAAO,OAAS,GAExBy5gB,EAAa,IACbA,EAAaz/nB,GACjBy/nB,IAAeI,EAAOl+nB,MAAM3B,EAAI,GAChC6/nB,EAASA,EAAO18kB,UAAU,EAAGnjD,IAExBy/nB,EAAa,IAElBA,EAAaI,EAAOvjoB,QAGnB0D,EAAI,EAAG6/nB,EAAO33lB,OAAOloC,KAAOo/nB,GAAWp/nB,KAE5C,GAAIA,KAAO4/nB,EAAQC,EAAOvjoB,QAEtB2goB,EAAS,CAAC,GACVwC,EAAa,MAEZ,CAGD,IADAG,IACOC,EAAO33lB,OAAO03lB,KAAWR,IAC5BQ,IAKJ,IAHAH,GAAcz/nB,EACdi9nB,EAAS,GAEJvwnB,EAAI,EAAG1M,GAAK4/nB,EAAO5/nB,IAAK0M,IACzBuwnB,EAAOvwnB,GAAK5F,OAAO+4nB,EAAO33lB,OAAOloC,IASzC,OALIy/nB,EA5SW,KA6SXxC,EAASA,EAAOv8lB,OAAO,EAAGo/lB,IAC1BJ,EAAWD,EAAa,EACxBA,EAAa,GAEV,CAAExC,SAAQyC,WAAUD,cAM/B,SAASM,GAAYR,EAAcS,EAASC,GACxC,GAAID,EAAUC,EACV,MAAM,IAAIzzmB,MAAJ,uDAA0DwzmB,EAA1D,yCAAkGC,EAAlG,OAEV,IAAIhD,EAASsC,EAAatC,OACtBuC,EAAcvC,EAAO3goB,OAASijoB,EAAaE,WACzCS,EAAexpnB,KAAKG,IAAIH,KAAKukC,IAAI+klB,EAASR,GAAcS,GAE1DE,EAAUD,EAAeX,EAAaE,WACtCpN,EAAQ4K,EAAOkD,GACnB,GAAIA,EAAU,EAAG,CAEblD,EAAOv8lB,OAAOhqB,KAAKukC,IAAIsklB,EAAaE,WAAYU,IAEhD,IAAK,IAAIzznB,EAAIyznB,EAASzznB,EAAIuwnB,EAAO3goB,OAAQoQ,IACrCuwnB,EAAOvwnB,GAAK,MAGf,CAED8ynB,EAAc9onB,KAAKukC,IAAI,EAAGuklB,GAC1BD,EAAaE,WAAa,EAC1BxC,EAAO3goB,OAASoa,KAAKukC,IAAI,EAAGkllB,EAAUD,EAAe,GACrDjD,EAAO,GAAK,EACZ,IAAK,IAAIj9nB,EAAI,EAAGA,EAAImgoB,EAASngoB,IACzBi9nB,EAAOj9nB,GAAK,EAEpB,GAAIqynB,GAAS,EACT,GAAI8N,EAAU,EAAI,EAAG,CACjB,IAAK,IAAIxrgB,EAAI,EAAGA,EAAIwrgB,EAASxrgB,IACzBsogB,EAAOhplB,QAAQ,GACfsrlB,EAAaE,aAEjBxC,EAAOhplB,QAAQ,GACfsrlB,EAAaE,kBAGbxC,EAAOkD,EAAU,KAIzB,KAAOX,EAAc9onB,KAAKukC,IAAI,EAAGillB,GAAeV,IAC5CvC,EAAOlhoB,KAAK,GAChB,IAAIqkoB,EAAqC,IAAjBF,EAGlBzqd,EAASuqd,EAAUT,EAAaE,WAEhCY,EAAQpD,EAAOjvX,YAAY,SAAUqyX,EAAOlwnB,EAAGnQ,EAAGi9nB,GAYpD,OAVAA,EAAOj9nB,IADPmQ,GAAQkwnB,GACQ,GAAKlwnB,EAAIA,EAAI,GACzBiwnB,IAEkB,IAAdnD,EAAOj9nB,IAAYA,GAAKy1K,EACxBwnd,EAAO7lmB,MAGPgpmB,GAAoB,GAGrBjwnB,GAAK,GAAK,EAAI,GACtB,GACCkwnB,IACApD,EAAOhplB,QAAQoslB,GACfd,EAAaE,cAGrB,SAASa,GAAkB3+iB,GACvB,IAAM5sD,EAAS4S,SAASg6C,GACxB,GAAIvuC,MAAMre,GACN,MAAM,IAAIvI,MAAM,wCAA0Cm1D,GAE9D,OAAO5sD,E,IAaLwrmB,G,iEA0BAC,E,YACF,WAAYljlB,GAAM,kCACd,aACKA,OAASA,EAFA,E,sEAIlB,SAAkB5jD,EAAO4jD,GAErB,OADe07hB,EAAoB17hB,GAAUnlD,KAAKmlD,OAAnC07hB,CAA2Ct/kB,IAEtD,KAAKw+nB,EAAOuI,KACR,MAAO,OACX,KAAKvI,EAAOxtM,IACR,MAAO,MACX,KAAKwtM,EAAOttM,IACR,MAAO,MACX,KAAKstM,EAAOwI,IACR,MAAO,MACX,KAAKxI,EAAOyI,KACR,MAAO,OACX,QACI,MAAO,a,CAnBYJ,I,OAuBnCC,EAAqB9noB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAK6noB,GAAsB,KAAgB,OAC9HA,EAAqBzjoB,WAAQ,KAA0B,CAAEC,MAAOwjoB,EAAsBvjoB,QAASujoB,EAAqB9noB,Y,KAqCpH,SAASkooB,GAAiBC,EAAWvnoB,GACjCA,EAAO4oF,mBAAmB5oF,GADW,oBAEhBunoB,EAAUnmnB,MAAM,MAFA,IAErC,2BAA2C,KAAhCk+lB,EAAgC,QACjCkoB,EAAUloB,EAAOx3mB,QAAQ,KAC/B,GAA8C,GAAZ0/nB,EAAgB,CAACloB,EAAQ,IAAM,CAACA,EAAOj3mB,MAAM,EAAGm/nB,GAAUloB,EAAOj3mB,MAAMm/nB,EAAU,IAAnH,mBAAmBC,EAAnB,KACA,GADA,KACe9rnB,SAAW3b,EACtB,OAAO4tC,mBAAmB65lB,IANG,8BASrC,OAAO,K,sBAsCLC,E,8BACF,WAAYC,EAAkBC,EAAkBC,EAAOn6gB,GAAS,oBAC5D7uH,KAAK8ooB,iBAAmBA,EACxB9ooB,KAAK+ooB,iBAAmBA,EACxB/ooB,KAAKgpoB,MAAQA,EACbhpoB,KAAK6uH,UAAYA,EACjB7uH,KAAKipoB,gBAAkB,KACvBjpoB,KAAKkpoB,gBAAkB,KACvBlpoB,KAAKmpoB,gBAAkB,GACvBnpoB,KAAKopoB,UAAY,M,kBAErB,SAAU7noB,GACNvB,KAAKqpoB,eAAerpoB,KAAKmpoB,iBACzBnpoB,KAAKmpoB,gBAAmC,iBAAV5noB,EAAqBA,EAAMghB,MAAM,OAAS,GACxEviB,KAAKspoB,cAActpoB,KAAKmpoB,iBACxBnpoB,KAAKspoB,cAActpoB,KAAKopoB,a,mBAE5B,SAAY7noB,GACRvB,KAAKqpoB,eAAerpoB,KAAKopoB,WACzBppoB,KAAKspoB,cAActpoB,KAAKmpoB,iBACxBnpoB,KAAKipoB,gBAAkB,KACvBjpoB,KAAKkpoB,gBAAkB,KACvBlpoB,KAAKopoB,UAA6B,iBAAV7noB,EAAqBA,EAAMghB,MAAM,OAAShhB,EAC9DvB,KAAKopoB,YACD,aAAoBppoB,KAAKopoB,WACzBppoB,KAAKipoB,gBAAkBjpoB,KAAK8ooB,iBAAiBzjoB,KAAKrF,KAAKopoB,WAAW9joB,SAGlEtF,KAAKkpoB,gBAAkBlpoB,KAAK+ooB,iBAAiB1joB,KAAKrF,KAAKopoB,WAAW9joB,Y,uBAI9E,WACI,GAAItF,KAAKipoB,gBAAiB,CACtB,IAAMM,EAAkBvpoB,KAAKipoB,gBAAgB1joB,KAAKvF,KAAKopoB,WACnDG,GACAvpoB,KAAKwpoB,sBAAsBD,QAG9B,GAAIvpoB,KAAKkpoB,gBAAiB,CAC3B,IAAMO,EAAkBzpoB,KAAKkpoB,gBAAgB3joB,KAAKvF,KAAKopoB,WACnDK,GACAzpoB,KAAK0poB,sBAAsBD,M,mCAIvC,SAAsBxkoB,GAAO,WACzBA,EAAQ0koB,iBAAiB,SAACz4nB,GAAD,OAAY,EAAK04nB,aAAa14nB,EAAOyL,IAAKzL,EAAO9L,gBAC1EH,EAAQ4koB,mBAAmB,SAAC34nB,GAAD,OAAY,EAAK04nB,aAAa14nB,EAAOyL,IAAKzL,EAAO9L,gBAC5EH,EAAQ6koB,mBAAmB,SAAC54nB,GACpBA,EAAOs3B,eACP,EAAKohmB,aAAa14nB,EAAOyL,KAAK,O,mCAI1C,SAAsB1X,GAAO,WACzBA,EAAQ0koB,iBAAiB,SAACz4nB,GACtB,GAA2B,iBAAhBA,EAAOI,KAId,MAAM,IAAI+iB,MAAJ,wEAA2E,aAAWnjB,EAAOI,QAHnG,EAAKs4nB,aAAa14nB,EAAOI,MAAM,KAMvCrM,EAAQ6koB,mBAAmB,SAAC54nB,GAAD,OAAY,EAAK04nB,aAAa14nB,EAAOI,MAAM,O,2BAU1E,SAAcy4nB,GAAW,WACjBA,IACIx/nB,MAAMyL,QAAQ+znB,IAAgBA,aAAuBp8nB,IACrDo8nB,EAAY12nB,QAAQ,SAAC22nB,GAAD,OAAW,EAAKJ,aAAaI,GAAO,KAGxDxtnB,OAAOC,KAAKstnB,GAAa12nB,QAAQ,SAAA22nB,GAAK,OAAI,EAAKJ,aAAaI,IAASD,EAAYC,S,4BAQ7F,SAAeD,GAAW,WAClBA,IACIx/nB,MAAMyL,QAAQ+znB,IAAgBA,aAAuBp8nB,IACrDo8nB,EAAY12nB,QAAQ,SAAC22nB,GAAD,OAAW,EAAKJ,aAAaI,GAAO,KAGxDxtnB,OAAOC,KAAKstnB,GAAa12nB,QAAQ,SAAA22nB,GAAK,OAAI,EAAKJ,aAAaI,GAAO,Q,0BAI/E,SAAaA,EAAOt5f,GAAO,YACvBs5f,EAAQA,EAAMltnB,SAEVktnB,EAAMznnB,MAAM,QAAQlP,QAAQ,SAAA22nB,GACpBt5f,EACA,EAAK7hB,UAAU4B,SAAS,EAAKu4gB,MAAMpmoB,cAAeonoB,GAGlD,EAAKn7gB,UAAUgF,YAAY,EAAKm1gB,MAAMpmoB,cAAeonoB,S,UAMzEnB,EAAQtooB,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKqooB,GAAS,KAAyB,KAAyB,KAAyB,KAAyB,KAAyB,KAAoB,KAAyB,OACjPA,EAAQpooB,UAAO,KAAyB,CAAEC,KAAMmooB,EAASlooB,UAAW,CAAC,CAAC,GAAI,UAAW,KAAMwB,OAAQ,CAAE6noB,MAAO,CAAC,QAAS,SAAUC,QAAS,a,KAuJnIC,G,8BACF,WAAYl4nB,EAAWm4nB,EAASxgoB,EAAOuN,GAAK,oBACxClX,KAAKgS,UAAYA,EACjBhS,KAAKmqoB,QAAUA,EACfnqoB,KAAK2J,MAAQA,EACb3J,KAAKkX,MAAQA,G,kBAEjB,WACI,OAAsB,IAAflX,KAAK2J,Q,gBAEhB,WACI,OAAO3J,KAAK2J,QAAU3J,KAAKkX,MAAQ,I,gBAEvC,WACI,OAAOlX,KAAK2J,MAAQ,GAAM,I,eAE9B,WACI,OAAQ3J,KAAKoX,S,qBAqGfgznB,E,8BACF,WAAYpkoB,EAAgBi8J,EAAWj9J,GAAQ,oBAC3ChF,KAAKgG,eAAiBA,EACtBhG,KAAKiiK,UAAYA,EACjBjiK,KAAKgF,SAAWA,EAChBhF,KAAKqqoB,SAAW,KAChBrqoB,KAAKsqoB,eAAgB,EACrBtqoB,KAAKuqoB,QAAU,M,oBAMnB,SAAYJ,GACRnqoB,KAAKqqoB,SAAWF,EAChBnqoB,KAAKsqoB,eAAgB,I,wBA6BzB,WACI,OAAOtqoB,KAAK+O,Y,IAXhB,SAAiBC,GAQbhP,KAAK+O,WAAaC,I,yBAStB,SAAkBzN,GAIVA,IACAvB,KAAKiiK,UAAY1gK,K,uBAMzB,WACI,GAAIvB,KAAKsqoB,cAAe,CACpBtqoB,KAAKsqoB,eAAgB,EAErB,IAAM/ooB,EAAQvB,KAAKqqoB,SACnB,IAAKrqoB,KAAKuqoB,SAAWhpoB,EACjB,IACIvB,KAAKuqoB,QAAUvqoB,KAAKgF,SAASK,KAAK9D,GAAO+D,OAAOtF,KAAKwqoB,cAEzD,MAAO7/nB,GACH,MAAM,IAAI0pB,MAAJ,kDAAqD9yB,EAArD,uBAsFLb,EAtFyFa,GAuF/F,aAAmBb,EAvFR,iEAsF1B,IAAqBA,EAlFb,GAAIV,KAAKuqoB,QAAS,CACd,IAAMtloB,EAAUjF,KAAKuqoB,QAAQhloB,KAAKvF,KAAKqqoB,UACnCploB,GACAjF,KAAKyqoB,cAAcxloB,M,2BAG/B,SAAcA,GAAO,WACXyloB,EAAe,GACrBzloB,EAAQ0M,iBAAiB,SAACL,EAAM6sB,EAAuB/sB,GACnD,GAA0B,MAAtBE,EAAKO,cAAuB,CAI5B,IAAMI,EAAO,EAAKjM,eAAe8Q,mBAAmB,EAAKmrJ,UAAW,IAAIioe,GAAe,KAAM,EAAKG,UAAW,GAAI,GAAqB,OAAjBj5nB,OAAwB3M,EAAY2M,GACnJmjD,EAAQ,IAAIo2kB,GAAgBr5nB,EAAMW,GACxCy4nB,EAAa9moB,KAAK2wD,QAEjB,GAAoB,MAAhBnjD,EACL,EAAKpL,eAAewF,OAAiC,OAA1B2yB,OAAiC15B,EAAY05B,QAEvE,GAA8B,OAA1BA,EAAgC,CACrC,IAAM,EAAO,EAAKn4B,eAAekM,IAAIisB,GACrC,EAAKn4B,eAAemM,KAAK,EAAMf,GAC/B,IAAM,EAAQ,IAAIu5nB,GAAgBr5nB,EAAM,GACxCo5nB,EAAa9moB,KAAK,MAG1B,IAAK,IAAIiE,EAAI,EAAGA,EAAI6ioB,EAAavmoB,OAAQ0D,IACrC7H,KAAK4qoB,eAAeF,EAAa7ioB,GAAGoK,KAAMy4nB,EAAa7ioB,GAAGqJ,QAE9D,IAAK,IAAI,EAAI,EAAG25nB,EAAO7qoB,KAAKgG,eAAe7B,OAAQ,EAAI0moB,EAAM,IAAK,CAC9D,IAAMp0nB,EAAUzW,KAAKgG,eAAekM,IAAI,GACxCuE,EAAQjF,QAAQ7H,MAAQ,EACxB8M,EAAQjF,QAAQ0F,MAAQ2znB,EACxBp0nB,EAAQjF,QAAQ24nB,QAAUnqoB,KAAKqqoB,SAEnCploB,EAAQoN,sBAAsB,SAACnB,GACX,EAAKlL,eAAekM,IAAIhB,EAAOE,cACvCI,QAAQQ,UAAYd,EAAOI,S,4BAG3C,SAAeW,EAAMf,GACjBe,EAAKT,QAAQQ,UAAYd,EAAOI,Q,qCAQpC,SAA8BhG,EAAK1J,GAC/B,OAAO,M,UAGfwooB,EAAQ7poB,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAK4poB,GAAS,KAAyB,KAA0B,KAAyB,KAAqB,KAAyB,OACjMA,EAAQ3poB,UAAO,KAAyB,CAAEC,KAAM0poB,EAASzpoB,UAAW,CAAC,CAAC,GAAI,QAAS,GAAI,UAAW,KAAMwB,OAAQ,CAAEgooB,QAAS,UAAWK,aAAc,eAAgBM,cAAe,mB,KAqB7KH,G,YACF,WAAYz5nB,EAAQe,GAAI,oBACpBjS,KAAKkR,OAASA,EACdlR,KAAKiS,KAAOA,I,kBAyJd84nB,E,8BACF,WAAY/koB,EAAgBY,GAAW,oBACnC5G,KAAKgG,eAAiBA,EACtBhG,KAAK8nE,SAAW,IAAIkjkB,GACpBhroB,KAAKiroB,iBAAmB,KACxBjroB,KAAKkroB,iBAAmB,KACxBlroB,KAAKmroB,aAAe,KACpBnroB,KAAKoroB,aAAe,KACpBproB,KAAKiroB,iBAAmBrkoB,G,iBAK5B,SAASsyI,GACLl5I,KAAK8nE,SAAS91D,UAAYhS,KAAK8nE,SAASujkB,KAAOnyf,EAC/Cl5I,KAAKsroB,gB,oBAKT,SAAa1koB,GACT2koB,GAAe,WAAY3koB,GAC3B5G,KAAKiroB,iBAAmBrkoB,EACxB5G,KAAKmroB,aAAe,KACpBnroB,KAAKsroB,gB,oBAKT,SAAa1koB,GACT2koB,GAAe,WAAY3koB,GAC3B5G,KAAKkroB,iBAAmBtkoB,EACxB5G,KAAKoroB,aAAe,KACpBproB,KAAKsroB,gB,yBAET,WACQtroB,KAAK8nE,SAAS91D,UACThS,KAAKmroB,eACNnroB,KAAKgG,eAAe0K,QACpB1Q,KAAKoroB,aAAe,KAChBproB,KAAKiroB,mBACLjroB,KAAKmroB,aACDnroB,KAAKgG,eAAe8Q,mBAAmB9W,KAAKiroB,iBAAkBjroB,KAAK8nE,YAK1E9nE,KAAKoroB,eACNproB,KAAKgG,eAAe0K,QACpB1Q,KAAKmroB,aAAe,KAChBnroB,KAAKkroB,mBACLlroB,KAAKoroB,aACDproB,KAAKgG,eAAe8Q,mBAAmB9W,KAAKkroB,iBAAkBlroB,KAAK8nE,e,qCAWvF,SAA8Bx8D,EAAK1J,GAC/B,OAAO,M,UAGfmpoB,EAAKxqoB,UAAO,SAAsBC,GAAK,OAAO,IAAKA,GAAKuqoB,GAAM,KAAyB,KAA0B,KAAyB,OAC1IA,EAAKtqoB,UAAO,KAAyB,CAAEC,KAAMqqoB,EAAMpqoB,UAAW,CAAC,CAAC,GAAI,OAAQ,KAAMwB,OAAQ,CAAEkpoB,KAAM,OAAQG,SAAU,WAAYC,SAAU,c,KAuBpIT,G,YACF,iCACIhroB,KAAKgS,UAAY,KACjBhS,KAAKqroB,KAAO,OAGpB,SAASE,GAAez9e,EAAUlnJ,GAE9B,GADgCA,IAAeA,EAAYkQ,mBAEvD,MAAM,IAAIud,MAAJ,UAAay5H,EAAb,iDAA8D,aAAWlnJ,GAAzE,O,IAWR8koB,G,8BACF,WAAY9pnB,EAAmB+pnB,GAAY,oBACvC3roB,KAAK4hB,kBAAoBA,EACzB5hB,KAAK2roB,aAAeA,EACpB3roB,KAAK4roB,UAAW,G,qBAEpB,WACI5roB,KAAK4roB,UAAW,EAChB5roB,KAAK4hB,kBAAkB9K,mBAAmB9W,KAAK2roB,gB,qBAEnD,WACI3roB,KAAK4roB,UAAW,EAChB5roB,KAAK4hB,kBAAkBlR,U,0BAE3B,SAAawqiB,GACLA,IAAYl7iB,KAAK4roB,SACjB5roB,KAAKsF,UAEC41iB,GAAWl7iB,KAAK4roB,UACtB5roB,KAAKkhB,c,qBAsEX2qnB,E,8BACF,iCACI7roB,KAAK8roB,cAAe,EACpB9roB,KAAK+roB,WAAa,EAClB/roB,KAAKgsoB,oBAAsB,EAC3BhsoB,KAAKisoB,mBAAoB,G,qBAE7B,SAAa/5f,GACTlyI,KAAKksoB,UAAYh6f,EACO,IAApBlyI,KAAK+roB,YACL/roB,KAAKmsoB,qBAAoB,K,sBAIjC,WACI,OAAOnsoB,KAAK+roB,e,yBAGhB,SAAY95nB,GACHjS,KAAKosoB,gBACNpsoB,KAAKosoB,cAAgB,IAEzBpsoB,KAAKosoB,cAAcxooB,KAAKqO,K,wBAG5B,SAAW1Q,GACP,IAAMsoL,EAAUtoL,GAASvB,KAAKksoB,UAQ9B,OAPAlsoB,KAAKisoB,kBAAoBjsoB,KAAKisoB,mBAAqBpid,EACnD7pL,KAAKgsoB,sBACDhsoB,KAAKgsoB,sBAAwBhsoB,KAAK+roB,aAClC/roB,KAAKmsoB,qBAAqBnsoB,KAAKisoB,mBAC/BjsoB,KAAKgsoB,oBAAsB,EAC3BhsoB,KAAKisoB,mBAAoB,GAEtBpid,I,iCAEX,SAAoBwid,GAChB,GAAIrsoB,KAAKosoB,eAAiBC,IAAersoB,KAAK8roB,aAAc,CACxD9roB,KAAK8roB,aAAeO,EACpB,IAAK,IAAIxkoB,EAAI,EAAGA,EAAI7H,KAAKosoB,cAAcjooB,OAAQ0D,IACvB7H,KAAKosoB,cAAcvkoB,GAC3BykoB,aAAaD,Q,UAKzCR,EAAStroB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKqroB,IAChEA,EAASproB,UAAO,KAAyB,CAAEC,KAAMmroB,EAAUlroB,UAAW,CAAC,CAAC,GAAI,WAAY,KAAMwB,OAAQ,CAAEoqoB,SAAU,c,uBA2C5GC,E,8BACF,WAAY//nB,EAAe7F,EAAa2loB,GAAQ,oBAC5CvsoB,KAAKusoB,SAAWA,EAIhBA,EAASE,WACTzsoB,KAAKolN,MAAQ,IAAIsmb,GAAWj/nB,EAAe7F,I,wBAK/C,WACI5G,KAAKolN,MAAMknb,aAAatsoB,KAAKusoB,SAASG,WAAW1soB,KAAK2soB,mB,UAG9DH,EAAajsoB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKgsoB,GAAc,KAAyB,KAA0B,KAAyB,KAAqB,KAAyBX,GAAU,KAC1NW,EAAa/roB,UAAO,KAAyB,CAAEC,KAAM8roB,EAAc7roB,UAAW,CAAC,CAAC,GAAI,eAAgB,KAAMwB,OAAQ,CAAEwqoB,aAAc,kB,uBAiC5HC,E,YACF,WAAYngoB,EAAe7F,EAAa2loB,GAAQ,oBAI5CA,EAASM,YAAY,IAAInB,GAAWj/nB,EAAe7F,M,OAG3DgmoB,EAAgBrsoB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKosoB,GAAiB,KAAyB,KAA0B,KAAyB,KAAqB,KAAyBf,GAAU,KACnOe,EAAgBnsoB,UAAO,KAAyB,CAAEC,KAAMksoB,EAAiBjsoB,UAAW,CAAC,CAAC,GAAI,kBAAmB,O,uBA6LvGmsoB,E,8BACF,WAAY9D,EAAOhkoB,EAAU6pH,GAAS,oBAClC7uH,KAAKgpoB,MAAQA,EACbhpoB,KAAKgF,SAAWA,EAChBhF,KAAK6uH,UAAYA,EACjB7uH,KAAK+soB,SAAW,KAChB/soB,KAAKuqoB,QAAU,M,oBAEnB,SAAYz2nB,GACR9T,KAAK+soB,SAAWj5nB,GACX9T,KAAKuqoB,SAAWz2nB,IACjB9T,KAAKuqoB,QAAUvqoB,KAAKgF,SAASK,KAAKyO,GAAQxO,Y,uBAGlD,WACI,GAAItF,KAAKuqoB,QAAS,CACd,IAAMtloB,EAAUjF,KAAKuqoB,QAAQhloB,KAAKvF,KAAK+soB,UACnC9noB,GACAjF,KAAKyqoB,cAAcxloB,M,uBAI/B,SAAU+noB,EAAazroB,GACnB,MAAqByroB,EAAYzqnB,MAAM,KAAvC,mBAAOphB,EAAP,KAAas9C,EAAb,KAEa,OADbl9C,EAAiB,MAATA,GAAiBk9C,EAAjB,UAA2Bl9C,GAA3B,OAAmCk9C,GAASl9C,GAEhDvB,KAAK6uH,UAAU8E,SAAS3zH,KAAKgpoB,MAAMpmoB,cAAezB,EAAMI,GAGxDvB,KAAK6uH,UAAU4E,YAAYzzH,KAAKgpoB,MAAMpmoB,cAAezB,K,2BAG7D,SAAc8D,GAAO,WACjBA,EAAQ6koB,mBAAmB,SAAC54nB,GAAD,OAAY,EAAK+7nB,UAAU/7nB,EAAOyL,IAAK,QAClE1X,EAAQ0koB,iBAAiB,SAACz4nB,GAAD,OAAY,EAAK+7nB,UAAU/7nB,EAAOyL,IAAKzL,EAAO9L,gBACvEH,EAAQ4koB,mBAAmB,SAAC34nB,GAAD,OAAY,EAAK+7nB,UAAU/7nB,EAAOyL,IAAKzL,EAAO9L,oB,UAGjF0noB,EAAQvsoB,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAKssoB,GAAS,KAAyB,KAAoB,KAAyB,KAAyB,KAAyB,OAC/LA,EAAQrsoB,UAAO,KAAyB,CAAEC,KAAMosoB,EAASnsoB,UAAW,CAAC,CAAC,GAAI,UAAW,KAAMwB,OAAQ,CAAE+qoB,QAAS,a,uBAgDxGC,E,8BACF,WAAYvrnB,GAAiB,oBACzB5hB,KAAK4hB,kBAAoBA,EACzB5hB,KAAKotoB,SAAW,KAOhBptoB,KAAKqtoB,wBAA0B,KAI/BrtoB,KAAKstoB,iBAAmB,M,0BAE5B,SAAYrooB,GAER,GADqBjF,KAAKutoB,oBAAoBtooB,GAC5B,CACd,IAAMia,EAAmBlf,KAAK4hB,kBAC1B5hB,KAAKotoB,UACLlunB,EAAiB1T,OAAO0T,EAAiBjW,QAAQjJ,KAAKotoB,WAE1DptoB,KAAKotoB,SAAWptoB,KAAKstoB,iBACjBpunB,EAAiBpI,mBAAmB9W,KAAKstoB,iBAAkBttoB,KAAKqtoB,yBAChE,UAECrtoB,KAAKotoB,UAAYptoB,KAAKqtoB,yBAC3BrtoB,KAAKwtoB,uBAAuBxtoB,KAAKqtoB,2B,iCAazC,SAAoBpooB,GAChB,IAAMwooB,EAAYxooB,EAAO,wBACzB,QAASA,EAAO,kBAAyBwooB,GAAaztoB,KAAK0toB,wBAAwBD,K,qCAEvF,SAAwBA,GACpB,IAAME,EAAcnxnB,OAAOC,KAAKgxnB,EAAUjlmB,eAAiB,IACrDolmB,EAAcpxnB,OAAOC,KAAKgxnB,EAAUrooB,cAAgB,IAC1D,GAAIuooB,EAAYxpoB,SAAWypoB,EAAYzpoB,OAAQ,qBACtBypoB,GADsB,IAC3C,2BACI,IAAuC,IAAnCD,EAAY1koB,QADc,SAE1B,OAAO,EAH4B,8BAM3C,OAAO,EAEX,OAAO,I,oCAEX,SAAuBrH,GACnB,cAAqB4a,OAAOC,KAAK7a,GAAjC,eAAuC,CAAlC,IAAIkzC,EAAQ,KACb90C,KAAKotoB,SAAS57nB,QAAQsjC,GAAY90C,KAAKqtoB,wBAAwBv4lB,Q,UAI3Eq4lB,EAAiB5soB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK2soB,GAAkB,KAAyB,OAC3HA,EAAiB1soB,UAAO,KAAyB,CAAEC,KAAMysoB,EAAkBxsoB,UAAW,CAAC,CAAC,GAAI,mBAAoB,KAAMwB,OAAQ,CAAEkroB,wBAAyB,0BAA2BC,iBAAkB,oBAAsBhroB,SAAU,CAAC,Q,KAiDvO,SAASuroB,GAAyBntoB,EAAMa,GACpC,OAAO8yB,MAAM,yBAAD,OAA0B9yB,EAA1B,uBAA8C,aAAWb,GAAzD,M,IAUVotoB,G,iGACF,SAAmB5qd,EAAO6qd,GACtB,OAAO7qd,EAAMh/K,UAAU,CACnBL,KAAMkqoB,EACN/4mB,MAAO,SAACf,GACJ,MAAMA,O,qBAIlB,SAAQ+/E,GACJA,EAAap+F,gB,uBAEjB,SAAUo+F,GACNA,EAAap+F,kB,GAYfo4nB,GAAmB,I,iGARrB,SAAmB9qd,EAAO6qd,GACtB,OAAO7qd,EAAM7kK,KAAK0vnB,EAAmB,SAAA95mB,GACjC,MAAMA,M,qBAGd,SAAQ+/E,M,uBACR,SAAUA,Q,IAGRi6hB,GAAwB,IAAIH,G,kBA4B5BI,E,WACF,WAAYC,GAAI,oBACZnuoB,KAAKmuoB,KAAOA,EACZnuoB,KAAKouoB,aAAe,KACpBpuoB,KAAKmjI,cAAgB,KACrBnjI,KAAKquoB,KAAO,KACZruoB,KAAKsuoB,UAAY,K,+CAErB,WACQtuoB,KAAKmjI,eACLnjI,KAAKuuoB,a,uBAGb,SAAUxwnB,GACN,OAAK/d,KAAKquoB,KAMNtwnB,IAAQ/d,KAAKquoB,MACbruoB,KAAKuuoB,WACEvuoB,KAAK2hC,UAAU5jB,IAEnB/d,KAAKouoB,cATJrwnB,GACA/d,KAAK6mL,WAAW9oK,GAEb/d,KAAKouoB,gB,wBAQpB,SAAWrwnB,GAAG,WACV/d,KAAKquoB,KAAOtwnB,EACZ/d,KAAKsuoB,UAAYtuoB,KAAKwuoB,gBAAgBzwnB,GACtC/d,KAAKmjI,cAAgBnjI,KAAKsuoB,UAAUG,mBAAmB1wnB,EAAK,SAACxc,GAAD,OAAW,EAAKmtoB,mBAAmB3wnB,EAAKxc,O,6BAExG,SAAgBwc,GACZ,GAAI,aAAWA,GACX,OAAOiwnB,GAEX,GAAI,aAAgBjwnB,GAChB,OAAOkwnB,GAEX,MAAMJ,GAAyBK,EAAWnwnB,K,sBAE9C,WACI/d,KAAKsuoB,UAAU7/mB,QAAQzuB,KAAKmjI,eAC5BnjI,KAAKouoB,aAAe,KACpBpuoB,KAAKmjI,cAAgB,KACrBnjI,KAAKquoB,KAAO,O,gCAEhB,SAAmBnrd,EAAO3hL,GAClB2hL,IAAUljL,KAAKquoB,OACfruoB,KAAKouoB,aAAe7soB,EACpBvB,KAAKmuoB,KAAKn3nB,oB,UAItBk3nB,EAAU3toB,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAK0toB,GAAW,SAC7EA,EAAUlrF,WAAQ,KAAoB,CAAE7hjB,KAAM,QAAST,KAAMwtoB,EAAWvoF,MAAM,I,uBAiGxEgpF,E,yFACF,SAAUptoB,GACN,GAAa,MAATA,EACA,OAAO,KACX,GAAqB,iBAAVA,EACP,MAAMssoB,GAAyBc,EAAeptoB,GAElD,OAAOA,EAAMqsC,kB,UAGrB+gmB,EAAcpuoB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKmuoB,IAC1EA,EAAc3rF,WAAQ,KAAoB,CAAE7hjB,KAAM,YAAaT,KAAMiuoB,EAAehpF,MAAM,I,uBA0JpFipF,E,WACF,WAAYzplB,GAAM,oBACdnlD,KAAKmlD,OAASA,E,6CAElB,SAAU5jD,GAA8C,IAAvCwhB,EAAuC,uDAA9B,aAAcg/mB,EAAgB,uCAAN58kB,EAAM,uCACpD,GAAa,MAAT5jD,GAA2B,KAAVA,GAAgBA,GAAUA,EAC3C,OAAO,KACX,IACI,OAAOgkE,GAAWhkE,EAAOwhB,EAAQoiC,GAAUnlD,KAAKmlD,OAAQ48kB,GAE5D,MAAO/smB,GACH,MAAM64mB,GAAyBe,EAAU55mB,EAAMgF,c,UAI3D40mB,EAASruoB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKouoB,GAAU,KAAyB,OACnGA,EAAS5rF,WAAQ,KAAoB,CAAE7hjB,KAAM,OAAQT,KAAMkuoB,EAAUjpF,MAAM,I,uBA8TrEkpF,E,WACF,WAAY1rhB,GAAO,oBACfnjH,KAAKmjH,QAAUA,E,6CASnB,SAAU5hH,EAAOutoB,EAAY3plB,GACzB,IAkKR,SAAiB5jD,GACb,QAAkB,MAATA,GAA2B,KAAVA,GAAgBA,GAAUA,GAnK3CwtoB,CAAQxtoB,GACT,OAAO,KACX4jD,EAASA,GAAUnlD,KAAKmjH,QACxB,IAEI,OAh9EZ,SAAsB5hH,EAAO4jD,EAAQ2plB,GAGjC,OA3KJ,SAAoCvtoB,EAAOutI,EAAS3pF,EAAQ6plB,EAAaC,EAAeH,GAA6B,IAAjBlkH,EAAiB,wDAC7GskH,EAAgB,GAChBC,GAAS,EACb,GAAK3whB,SAASj9G,GAGT,CACD,IAAI6loB,EAAeI,GAAYjmoB,GAC3BqphB,IACAw8G,EAAeD,GAAUC,IAE7B,IAAIgI,EAAStggB,EAAQsggB,OACjBC,EAAcvggB,EAAQ+4f,QACtByH,EAAcxggB,EAAQg5f,QAC1B,GAAIgH,EAAY,CACZ,IAAM1plB,EAAQ0plB,EAAWx9lB,MAAMy1lB,IAC/B,GAAc,OAAV3hlB,EACA,MAAM,IAAI/wB,MAAJ,UAAay6mB,EAAb,+BAEV,IAAMS,EAAanqlB,EAAM,GACnBoqlB,EAAkBpqlB,EAAM,GACxBqqlB,EAAkBrqlB,EAAM,GACZ,MAAdmqlB,IACAH,EAASjH,GAAkBoH,IAER,MAAnBC,IACAH,EAAclH,GAAkBqH,IAEb,MAAnBC,EACAH,EAAcnH,GAAkBsH,GAER,MAAnBD,GAA2BH,EAAcC,IAC9CA,EAAcD,GAGtBzH,GAAYR,EAAciI,EAAaC,GACvC,IAAIxK,EAASsC,EAAatC,OACtBwC,EAAaF,EAAaE,WACxBC,EAAWH,EAAaG,SAC1BmI,EAAW,GAGf,IAFAP,EAASrK,EAAO1we,MAAM,SAAAp8I,GAAC,OAAKA,IAErBsvnB,EAAa8H,EAAQ9H,IACxBxC,EAAOhplB,QAAQ,GAGnB,KAAOwrlB,EAAa,EAAGA,IACnBxC,EAAOhplB,QAAQ,GAGfwrlB,EAAa,EACboI,EAAW5K,EAAOv8lB,OAAO++lB,EAAYxC,EAAO3goB,SAG5CuroB,EAAW5K,EACXA,EAAS,CAAC,IAGd,IAAM96d,EAAS,GAIf,IAHI86d,EAAO3goB,QAAU2qI,EAAQ6ggB,QACzB3le,EAAOluH,QAAQgplB,EAAOv8lB,QAAQumG,EAAQ6ggB,OAAQ7K,EAAO3goB,QAAQ6rC,KAAK,KAE/D80lB,EAAO3goB,OAAS2qI,EAAQ8ggB,OAC3B5le,EAAOluH,QAAQgplB,EAAOv8lB,QAAQumG,EAAQ8ggB,MAAO9K,EAAO3goB,QAAQ6rC,KAAK,KAEjE80lB,EAAO3goB,QACP6lK,EAAOluH,QAAQgplB,EAAO90lB,KAAK,KAE/Bk/lB,EAAgBlle,EAAOh6H,KAAKixlB,EAAsB97kB,EAAQ6plB,IAEtDU,EAASvroB,SACT+qoB,GAAiBjO,EAAsB97kB,EAAQ8plB,GAAiBS,EAAS1/lB,KAAK,KAE9Eu3lB,IACA2H,GAAiBjO,EAAsB97kB,EAAQg7kB,EAAa0P,aAAe,IAAMtI,QAtErF2H,EAAgBjO,EAAsB97kB,EAAQg7kB,EAAa7kZ,UA+E/D,OANI/5O,EAAQ,IAAM4toB,EACErggB,EAAQghgB,OAASZ,EAAgBpggB,EAAQihgB,OAGzCjhgB,EAAQkhgB,OAASd,EAAgBpggB,EAAQmhgB,OA0FtDC,CAA2B3uoB,EAEtC,SAA2BwhB,GAAuB,IAAfginB,EAAe,uDAAH,IACrCx7f,EAAI,CACN6lgB,OAAQ,EACRvH,QAAS,EACTC,QAAS,EACTkI,OAAQ,GACRC,OAAQ,GACRH,OAAQ,GACRC,OAAQ,GACRH,MAAO,EACPD,OAAQ,GAENQ,EAAeptnB,EAAOR,MAjMZ,KAkMV6tnB,EAAWD,EAAa,GACxBE,EAAWF,EAAa,GACxBG,GAAmD,IAAnCF,EAASnnoB,QAAQ+9nB,IACnCoJ,EAAS7tnB,MAAMyknB,IACf,CACIoJ,EAASpllB,UAAU,EAAGollB,EAASrnoB,YAAYk+nB,IAAa,GACxDmJ,EAASpllB,UAAUollB,EAASrnoB,YAAYk+nB,IAAa,IACtDsJ,EAAUD,EAAc,GAAIE,EAAWF,EAAc,IAAM,GAClE/mgB,EAAEymgB,OAASO,EAAQh5lB,OAAO,EAAGg5lB,EAAQtnoB,QAAQi+nB,KAC7C,IAAK,IAAIr/nB,EAAI,EAAGA,EAAI2ooB,EAASrsoB,OAAQ0D,IAAK,CACtC,IAAM4ooB,EAAKD,EAASzgmB,OAAOloC,GACvB4ooB,IAAOxJ,GACP19f,EAAEs+f,QAAUt+f,EAAEu+f,QAAUjgoB,EAAI,EAEvB4ooB,IAAOvJ,GACZ39f,EAAEu+f,QAAUjgoB,EAAI,EAGhB0hI,EAAE0mgB,QAAUQ,EAGpB,IAAMzme,EAASume,EAAQhunB,MAtNT,KAyNd,GAFAgnH,EAAEqmgB,MAAQ5le,EAAO,GAAKA,EAAO,GAAG7lK,OAAS,EACzColI,EAAEomgB,OAAU3le,EAAO,IAAMA,EAAO,IAAOA,EAAO,IAAMA,EAAO,IAAI7lK,OAAS,EACpEksoB,EAAU,CACV,IAAMK,EAAWN,EAASjsoB,OAASolI,EAAEymgB,OAAO7roB,OAASolI,EAAE0mgB,OAAO9roB,OAAQ+4K,EAAMmzd,EAASpnoB,QAAQi+nB,IAC7F39f,EAAEumgB,OAASO,EAAS94lB,OAAO,EAAG2lI,GAAK17K,QAAQ,KAAM,IACjD+nI,EAAEwmgB,OAASM,EAAS94lB,OAAO2lI,EAAMwzd,GAAUlvoB,QAAQ,KAAM,SAGzD+nI,EAAEumgB,OAAS/K,EAAYx7f,EAAEymgB,OACzBzmgB,EAAEwmgB,OAASxmgB,EAAE0mgB,OAEjB,OAAO1mgB,EAjDSongB,CArmCpB,SAA+BxrlB,EAAQzkD,GAEnC,OADa,aAAgBykD,GACjB,KAAiByrlB,eAAelwoB,GAkmC7BmwoB,CAAsB1rlB,EAAQ26kB,EAAkBsB,SACrBH,EAAsB97kB,EAAQg7kB,EAAakF,YACnClglB,EAAQg7kB,EAAamB,MAAOnB,EAAaiB,QAAS0N,GA68ErFvpH,CAmKnB,SAAqBhkhB,GAEjB,GAAqB,iBAAVA,IAAuB05C,MAAMtsC,OAAOpN,GAASssB,WAAWtsB,IAC/D,OAAOoN,OAAOpN,GAElB,GAAqB,iBAAVA,EACP,MAAM,IAAI8yB,MAAJ,UAAa9yB,EAAb,qBAEV,OAAOA,EA5KauvoB,CAAYvvoB,GACC4jD,EAAQ2plB,GAErC,MAAO95mB,GACH,MAAM64mB,GAAyBgB,EAAa75mB,EAAMgF,c,UAI9D60mB,EAAYtuoB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKquoB,GAAa,KAAyB,OAC5GA,EAAY7rF,WAAQ,KAAoB,CAAE7hjB,KAAM,SAAUT,KAAMmuoB,EAAalpF,MAAM,I,uBAgN7EorF,E,yFACF,SAAUxvoB,EAAO4H,EAAOC,GACpB,GAAa,MAAT7H,EACA,OAAO,KACX,IAAKvB,KAAKopY,SAAS7nY,GACf,MAAMssoB,GAAyBkD,EAAWxvoB,GAE9C,OAAOA,EAAMiI,MAAML,EAAOC,K,sBAE9B,SAAS2U,GACL,MAAsB,iBAARA,GAAoBxT,MAAMyL,QAAQ+H,O,UAGxDgznB,EAAUxwoB,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAKuwoB,IAClEA,EAAU/tF,WAAQ,KAAoB,CAAE7hjB,KAAM,QAAST,KAAMqwoB,EAAWprF,MAAM,I,uBAsDxEqrF,E,sDAENA,EAAazwoB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKwwoB,IACxEA,EAAa93nB,UAAO,KAAwB,CAAExY,KAAMswoB,IACpDA,EAAa73nB,UAAO,KAAwB,CAAEgZ,UAAW,CACjD,CAAE5vB,QAAS6loB,GAAgBzvnB,SAAU0vnB,O,KAqBvC4I,GAAsB,UAQ5B,SAASC,GAAkBxrgB,GACvB,OAAOA,IAAeurgB,GAM1B,SAASE,GAAiBzrgB,GACtB,MAfuB,WAehBA,EA2BX,I,kBAcM0rgB,E,sDAKNA,EAAiBxsoB,WAAQ,aAAmB,CACxCC,MAAOusoB,EACPxqnB,WAAY,OACZ9hB,QAAS,kBAAM,IAAIusoB,GAAwB,aAASlqF,GAAWh8hB,W,KAK7DkmnB,G,8BACF,WAAY1mmB,EAAUxf,GAAM,oBACxBnrB,KAAK2qC,SAAWA,EAChB3qC,KAAKmrB,OAASA,EACdnrB,KAAK6K,OAAS,iBAAM,CAAC,EAAG,K,wBAQ5B,SAAUA,GAEF7K,KAAK6K,OADLN,MAAMyL,QAAQnL,GACA,kBAAMA,GAGNA,I,+BAOtB,WACI,OAAI7K,KAAKsxoB,oBACE,CAACtxoB,KAAKmrB,OAAO8pD,YAAaj1E,KAAKmrB,OAAO+pD,aAGtC,CAAC,EAAG,K,8BAOnB,SAAiBlrE,GACThK,KAAKsxoB,qBACLtxoB,KAAKmrB,OAAOs4Q,SAASz5R,EAAS,GAAIA,EAAS,M,4BAcnD,SAAewiB,GACX,GAAKxsB,KAAKsxoB,oBAAV,CAMA,IAAMC,EAmFd,SAAgC5mmB,EAAUne,GACtC,IAAMglnB,EAAiB7mmB,EAASovL,eAAevtM,IAAWme,EAAS8mmB,kBAAkBjlnB,GAAQ,GAC7F,GAAIglnB,EACA,OAAOA,EAIX,GAAyC,mBAA9B7mmB,EAAS+mmB,kBAAmC/mmB,EAAS7H,OAC3D6H,EAAS7H,KAAKw2lB,kBAAoB3ulB,EAAS7H,KAAKihlB,cAGjD,IAFA,IAAM4tB,EAAahnmB,EAAS+mmB,iBAAiB/mmB,EAAS7H,KAAM8umB,WAAWC,cACnElkJ,EAAcgkJ,EAAWhkJ,YACtBA,GAAa,CAChB,IAAM3qd,EAAa2qd,EAAY3qd,WAC/B,GAAIA,EAAY,CAGZ,IAAMpG,EAASoG,EAAW+2L,eAAevtM,IAAWwW,EAAW53B,cAAX,iBAAmCohB,EAAnC,OACpD,GAAIoQ,EACA,OAAOA,EAGf+wd,EAAcgkJ,EAAWp2E,WAGjC,OAAO,KA3GgBu2E,CAAuB9xoB,KAAK2qC,SAAUne,GACrD+knB,IACAvxoB,KAAKqmW,gBAAgBkrS,GAGrBvxoB,KAAK+xoB,aAAaR,O,yCAM1B,SAA4BS,GACxB,GAAIhyoB,KAAKiyoB,2BAA4B,CACjC,IAAM1xB,EAAUvgnB,KAAKmrB,OAAOo1lB,QACxBA,GAAWA,EAAQyxB,oBACnBzxB,EAAQyxB,kBAAoBA,M,6BAUxC,SAAgBv/lB,GACZ,IAAMs7B,EAAOt7B,EAAGhoC,wBACVwB,EAAO8hE,EAAK9hE,KAAOjM,KAAKmrB,OAAO8pD,YAC/BlpE,EAAMgiE,EAAKhiE,IAAM/L,KAAKmrB,OAAO+pD,YAC7BrqE,EAAS7K,KAAK6K,SACpB7K,KAAKmrB,OAAOs4Q,SAASx3R,EAAOpB,EAAO,GAAIkB,EAAMlB,EAAO,M,0BAYxD,SAAaqnoB,GAET,OADAA,EAAYpjnB,QACL9uB,KAAK2qC,SAASlgB,gBAAkBynnB,I,sCAU3C,WACI,IACI,IAAKlyoB,KAAKsxoB,oBACN,OAAO,EAGX,IAAMa,EAA8BC,GAA6BpyoB,KAAKmrB,OAAOo1lB,UACzE6xB,GAA6B51nB,OAAO24H,eAAen1I,KAAKmrB,OAAOo1lB,UAGnE,SAAS4xB,IACFA,EAA4Bx0mB,WAAYw0mB,EAA4B99nB,KAE/E,MAAO1J,GACH,OAAO,K,+BAGf,WACI,IACI,QAAS3K,KAAKmrB,UAAYnrB,KAAKmrB,OAAOs4Q,UAAY,gBAAiBzjS,KAAKmrB,OAE5E,MAAOxgB,GACH,OAAO,O,GAInB,SAASynoB,GAA6Br0nB,GAClC,OAAOvB,OAAOutH,yBAAyBhsH,EAAK,uB,wBC51KvC,SAAUsE,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,uKAA8IL,MAClJ,KAEJM,YAAa,gEAAiDN,MAAM,KACpEgB,SAAU,yDAA+ChB,MAAM,KAC/DiB,cAAe,mCAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,kDACLC,KAAM,wDAEVC,SAAU,CACNC,QAAS,yBACTC,QAAS,2BACTC,SAAU,+BACVC,QAAS,2BACTC,SAAU,6CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,oBACRC,KAAM,uBACNC,EAAG,kBACHC,GAAI,aACJ/B,EAAG,eACHgC,GAAI,YACJC,EAAG,uBACHC,GAAI,oBACJhN,EAAG,aACHiN,GAAI,UACJG,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB/gB,CAAQ,EAAQ,U,sfCuC1D,2B,6CAkDautoB,I,uBAAAA,I,4BAHD,GAAE,SA9CJ,CACR,IACA,IACA,IACA,IAIA,IAAaC,eAAe,IAC5B,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAAkB7gU,UAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,Q,EA5CF,GChBA,2B,6CAgDa8gU,I,uBAAAA,I,4BATD,CACV,CACChwoB,QAAS,IACT6mB,WAAY,IACZD,KAAM,CAAC,KACPO,OAAO,IAER,SA7CQ,CAAC,IAAc,M,EADzB,I,0JC5BM,SAAUvU,EAAOkrB,EAAWoqG,GAC9B,OAAO,SAAgClkH,GACnC,OAAOA,EAAO8V,KAAK,IAAIm2mB,EAAenymB,EAAWoqG,K,IAGnD+ngB,E,8BACF,WAAYnymB,EAAWoqG,GAAO,oBAC1BzqI,KAAKqgC,UAAYA,EACjBrgC,KAAKyqI,QAAUA,G,mBAEnB,SAAKluG,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIuuoB,EAAiBl2mB,EAAYv8B,KAAKqgC,UAAWrgC,KAAKyqI,c,GAGhFgogB,E,YACF,WAAYh2mB,EAAa4D,EAAWoqG,GAAO,M,MAAA,2B,EACvC,K,EAAA,E,EAAA,CAAMhuG,G,kBAAN,E,iGACK4D,UAAYA,EACjB,EAAKoqG,QAAUA,EACf,EAAKvzH,MAAQ,EAJ0B,E,0DAM3C,SAAM3V,GACF,IAAIq7B,EACJ,IACIA,EAAS58B,KAAKqgC,UAAUnL,KAAKl1B,KAAKyqI,QAASlpI,EAAOvB,KAAKkX,SAE3D,MAAOylB,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAGvBC,GACA58B,KAAKy8B,YAAY54B,KAAKtC,O,CAjBH,M,kCCZ/B67B,EAAOC,QAAUhJ,O,kCCEjBgJ,EAAQ4uI,WAHR,SAAoB1wI,GAChB,MAAoB,mBAANA,I,gVCDZ,SAAU2qG,EAAU4F,GAAoB,IAAT1+C,EAAS,uDAAD,EACzC,OAAO,SAAmC7mE,GACtC,OAAOA,EAAO8V,KAAK,IAAIq2mB,EAAkB5mgB,EAAW1+C,KAGrD,IAAMsljB,EAAb,8BACI,WAAY5mgB,GAAoB,IAAT1+C,EAAS,uDAAD,EAAC,oBAC5BptF,KAAK8rI,UAAYA,EACjB9rI,KAAKotF,MAAQA,GAHrB,mBAKI,SAAK7wD,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIyuoB,EAAoBp2mB,EAAYv8B,KAAK8rI,UAAW9rI,KAAKotF,YANzF,GASauljB,EAAb,YACI,WAAYl2mB,EAAaqvG,GAAoB,MAAT1+C,EAAS,uDAAD,EAAC,4BACzC,YAAM3wD,KACDqvG,UAAYA,EACjB,EAAK1+C,MAAQA,EAH4B,EADjD,oEAWI,SAAgB4/C,GACQhtI,KAAKy8B,YACb55B,IAAI7C,KAAK8rI,UAAU1nI,SAASuuoB,EAAoBj6mB,SAAU14B,KAAKotF,MAAO,IAAIwljB,EAAiB5lgB,EAAchtI,KAAKy8B,iBAblI,mBAeI,SAAMl7B,GACFvB,KAAK6yoB,gBAAgB,IAAazlgB,WAAW7rI,MAhBrD,oBAkBI,SAAOo7B,GACH38B,KAAK6yoB,gBAAgB,IAAajpe,YAAYjtI,IAC9C38B,KAAK4V,gBApBb,uBAsBI,WACI5V,KAAK6yoB,gBAAgB,IAAaxlgB,kBAClCrtI,KAAK4V,iBAxBb,uBAMI,SAAgBgiC,GAC0BA,EAA9Bo1F,aACKM,QADyB11F,EAAhBnb,aAEtBz8B,KAAK4V,kBATb,CAAyC,KA2B5Bg9nB,EAAb,YACI,WAAY5lgB,EAAcvwG,GAAW,oBACjCz8B,KAAKgtI,aAAeA,EACpBhtI,KAAKy8B,YAAcA,K,0QC7BrBq2mB,G,wCAAkB,YAAgC,CAAEtuf,SAAS,K,iBAM7Duuf,E,8BACF,WAAY5loB,EAAW7J,GAAO,oBAC1BtD,KAAKmN,UAAYA,EACjBnN,KAAKsD,QAAUA,EACftD,KAAKgzoB,mBAAqB,IAAIvloB,K,sBAElC,SAAQ85J,GAAY,WAChB,IAAKvnK,KAAKmN,UAAU8K,UAChB,OAAO,IAEX,IAAM5M,EAAU,YAAck8J,GACxBl3F,EAAOrwE,KAAKgzoB,mBAAmB9goB,IAAI7G,GACzC,GAAIglE,EACA,OAAOA,EAAKi2G,QAEhB,IAAM1pJ,EAAS,IAAIn5B,EAAA,EACbkwX,EAAW,4BACXjzV,EAAY,SAACpY,GAIa,kCAAxBA,EAAMgyM,eACLjvN,EAAQ1I,UAAUiqB,SAAS+mW,GAIC,gCAAxBrrW,EAAMgyM,eACXjvN,EAAQ1I,UAAUiqB,SAAS+mW,KAC3BtoX,EAAQ1I,UAAU6I,OAAOmoX,GACzB,EAAKrwX,QAAQgpC,IAAI,kBAAM1P,EAAO/4B,KAAK,CAAE2oB,OAAQlE,EAAMkE,OAAQymnB,cAAc,QANzE5noB,EAAQ1I,UAAUE,IAAI8wX,GACtB,EAAKrwX,QAAQgpC,IAAI,kBAAM1P,EAAO/4B,KAAK,CAAE2oB,OAAQlE,EAAMkE,OAAQymnB,cAAc,QAkBjF,OAVAjzoB,KAAKsD,QAAQ+nB,kBAAkB,WAC3BhgB,EAAQigB,iBAAiB,iBAAkBoV,EAAUoymB,GACrDznoB,EAAQ1I,UAAUE,IAAI,uCAE1B7C,KAAKgzoB,mBAAmB3+nB,IAAIhJ,EAAS,CACjCi7K,QAAS1pJ,EACTs2mB,SAAU,WACN7noB,EAAQsgB,oBAAoB,iBAAkB+U,EAAUoymB,MAGzDl2mB,I,4BAEX,SAAe2qI,GACX,IAAMl8J,EAAU,YAAck8J,GACxBl3F,EAAOrwE,KAAKgzoB,mBAAmB9goB,IAAI7G,GACrCglE,IACAA,EAAK6ikB,WACL7ikB,EAAKi2G,QAAQxiL,WACbuH,EAAQ1I,UAAU6I,OAAO,qCACzBH,EAAQ1I,UAAU6I,OAAO,6BACzBxL,KAAKgzoB,mBAAmBzgoB,OAAOlH,M,yBAGvC,WAAW,WACPrL,KAAKgzoB,mBAAmB3/nB,QAAQ,SAAC8/nB,EAAO9noB,GAAR,OAAoB,EAAKwnG,eAAexnG,S,UAGhF0noB,EAAgBxyoB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKuyoB,GAAiB,KAAgB,KAAkB,KAAgB,OACjJA,EAAgBnuoB,WAAQ,aAAmB,CAAEE,QAAS,WAAqC,OAAO,IAAIiuoB,EAAgB,aAAS,KAAW,aAAS,OAAaluoB,MAAOkuoB,EAAiBnsnB,WAAY,S,sBAkU9LwsnB,E,sDAENA,EAAgB7yoB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK4yoB,IAC9EA,EAAgBl6nB,UAAO,KAAwB,CAAExY,KAAM0yoB,IACvDA,EAAgBj6nB,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,Q,yCC1TtDi6nB,EAA2B,IAAI,IAAe,4BAU9CC,EAA0B,CAC5B,SACA,WACA,OACA,SACA,QACA,QACA,QACA,QACA,UAEA1hiB,EAAe,EAGb,E,YACF,WAAY0gE,EAA2BC,EAAaC,EAEpDC,GAAS,oBACLzyK,KAAKsyK,0BAA4BA,EACjCtyK,KAAKuyK,YAAcA,EACnBvyK,KAAKwyK,iBAAmBA,EACxBxyK,KAAKyyK,UAAYA,IAGnB8ge,EAAqB,YAAgB,G,iBAErCC,E,YACF,WAAYzmoB,EAAaI,EAEzBslK,EAAWF,EAAaC,EAAkBF,EAA2Bmhe,EAAoBC,EAAkBpxgB,EAG3Gt4G,GAAU,M,MAAA,qB,EACN,K,EAAA,E,EAAA,CAAMsoJ,EAA2BC,EAAaC,EAAkBC,G,iBAAhE,E,iGACK1lK,YAAcA,EACnB,EAAKI,UAAYA,EACjB,EAAKslK,UAAYA,EACjB,EAAKihe,iBAAmBA,EACxB,EAAK1pnB,WAAaA,EAClB,EAAK+oJ,KAAL,oBAAyBnhE,KAKzB,EAAKiD,SAAU,EAKf,EAAK++D,aAAe,IAAInwK,EAAA,EAKxB,EAAKovK,YAAc,YAKnB,EAAKk6c,YAAa,EAClB,EAAK5sgB,WAAY,EACjB,EAAK7N,WAAY,EACjB,EAAK8hB,MAAQ,OACb,EAAKu/gB,WAAY,EACjB,EAAKC,sBAAwB,CACzB,OACA,WACA,iBACA,QACA,OACA,QACFz+nB,OAAO,SAAA3U,GAAC,OAAI,cAAyB4T,IAAI5T,KAC3C,IAAM6K,EAAU,EAAK0B,YAAYnK,cAC3BkM,EAAWzD,EAAQyD,SAAS8N,cAzC5B,OA4CN,EAAKi3nB,oBAAsBJ,GAAsBpooB,EACjD,EAAKyooB,qBAAuB,EAAKvyoB,MAEjC,EAAKykB,GAAK,EAAKA,GAIX7Y,EAAUwpS,KACVr0K,EAAOj3G,kBAAkB,WACrBte,EAAYnK,cAAc0oB,iBAAiB,QAAS,SAAChD,GACjD,IAAImqB,EAAKnqB,EAAMkE,OACVimB,EAAGlxC,OAAUkxC,EAAGshmB,gBAAmBthmB,EAAGuhmB,eAKvCvhmB,EAAG84Y,kBAAkB,EAAG,GACxB94Y,EAAG84Y,kBAAkB,EAAG,QAKxC,EAAK0oN,WAAa,EAAK9moB,UAAU8K,UACjC,EAAKi8nB,gBAA+B,WAAbploB,EACvB,EAAKqloB,YAA2B,aAAbrloB,EACf,EAAKoloB,kBACL,EAAKrhe,YAAcxnK,EAAQioK,SAAW,6BAClC,qBAvEF,E,2DA8EV,WACI,OAAItzK,KAAKyyK,WAAyC,OAA5BzyK,KAAKyyK,UAAUzlJ,SAC1BhtB,KAAKyyK,UAAUzlJ,SAEnBhtB,KAAKmgH,W,IAEhB,SAAa5+G,GACTvB,KAAKmgH,UAAY,YAAsB5+G,GAGnCvB,KAAK60G,UACL70G,KAAK60G,SAAU,EACf70G,KAAK4zK,aAAa/vK,U,cAO1B,WAAW,OAAO7D,KAAK0jC,K,IACvB,SAAOniC,GAASvB,KAAK0jC,IAAMniC,GAASvB,KAAK+yK,O,oBAKzC,WAAiB,OAAO/yK,KAAKsyG,W,IAC7B,SAAa/wG,GAASvB,KAAKsyG,UAAY,YAAsB/wG,K,gBAE7D,WAAa,OAAOvB,KAAKo0H,O,IACzB,SAAS7yH,GACLvB,KAAKo0H,MAAQ7yH,GAAS,OACtBvB,KAAKo0oB,iBAIAp0oB,KAAKm0oB,aAAe,cAAyB//nB,IAAIpU,KAAKo0H,SACvDp0H,KAAK+M,YAAYnK,cAAclC,KAAOV,KAAKo0H,S,iBAOnD,WAAc,OAAOp0H,KAAK6zoB,oBAAoBtyoB,O,IAC9C,SAAUA,GACFA,IAAUvB,KAAKuB,QACfvB,KAAK6zoB,oBAAoBtyoB,MAAQA,EACjCvB,KAAK4zK,aAAa/vK,U,oBAI1B,WAAiB,OAAO7D,KAAK2zoB,W,IAC7B,SAAapyoB,GAASvB,KAAK2zoB,UAAY,YAAsBpyoB,K,6BAC7D,WAAe,WACPvB,KAAKmN,UAAU8K,WACfjY,KAAK0zoB,iBAAiBhhiB,QAAQ1yG,KAAK+M,YAAYnK,eAAesB,UAAU,SAAAokB,GACpE,EAAKykmB,WAAazkmB,EAAM2qnB,aACxB,EAAKr/d,aAAa/vK,W,yBAI9B,WACI7D,KAAK4zK,aAAa/vK,S,yBAEtB,WACI7D,KAAK4zK,aAAa9vK,WACd9D,KAAKmN,UAAU8K,WACfjY,KAAK0zoB,iBAAiB7giB,eAAe7yG,KAAK+M,YAAYnK,iB,uBAG9D,WACQ5C,KAAKyyK,WAILzyK,KAAKq0K,mBAKTr0K,KAAKq0oB,yBAGLr0oB,KAAKs0oB,2B,mBAGT,SAAMtsnB,GACFhoB,KAAK+M,YAAYnK,cAAcksB,MAAM9G,K,2BASzC,SAAc03F,GACNA,IAAc1/G,KAAK60G,SAAa70G,KAAKu5G,UAAamG,IAClD1/G,KAAK60G,QAAU6K,EACf1/G,KAAK4zK,aAAa/vK,U,sBAQ1B,c,oCAUA,WACI,IAAI8G,EAAIC,EAKF+/I,GAAiH,QAAjG//I,EAAgC,QAA1BD,EAAK3K,KAAKgqB,kBAA+B,IAAPrf,OAAgB,EAASA,EAAGminB,+BAA4C,IAAPlinB,OAAgB,EAASA,EAAGsqB,KAAKvqB,IAAO,KAAO3K,KAAK2qJ,YACnL,GAAIA,IAAgB3qJ,KAAKu0oB,qBAAsB,CAC3C,IAAMlpoB,EAAUrL,KAAK+M,YAAYnK,cACjC5C,KAAKu0oB,qBAAuB5pf,EAC5BA,EACIt/I,EAAQwD,aAAa,cAAe87I,GAAet/I,EAAQo9B,gBAAgB,kB,oCAIvF,WACI,IAAMypG,EAAWlyI,KAAK+M,YAAYnK,cAAcrB,MAC5CvB,KAAK8zoB,uBAAyB5hgB,IAC9BlyI,KAAK8zoB,qBAAuB5hgB,EAC5BlyI,KAAK4zK,aAAa/vK,U,2BAI1B,WACQyvoB,EAAwBrqoB,QAAQjJ,KAAKo0H,S,2BAM7C,WACI,OAAOp0H,KAAK4zoB,sBAAsB3qoB,QAAQjJ,KAAKo0H,QAAU,I,yBAG7D,WAEI,IAAIoghB,EAAWx0oB,KAAK+M,YAAYnK,cAAc4xoB,SAC9C,OAAOA,GAAYA,EAASC,W,iBAMhC,WACI,QAAQz0oB,KAAK00oB,iBAAoB10oB,KAAK+M,YAAYnK,cAAcrB,OAAUvB,KAAK20oB,eAC1E30oB,KAAK+snB,c,4BAMd,WACI,GAAI/snB,KAAKk0oB,gBAAiB,CAItB,IAAMU,EAAgB50oB,KAAK+M,YAAYnK,cACjCiyoB,EAAcD,EAAc5snB,QAAQ,GAG1C,OAAOhoB,KAAK60G,SAAW+/hB,EAActhe,WAAatzK,KAAKwzK,UAChDohe,EAAc7lR,eAAiB,GAAK8lR,GAAeA,EAAYx/mB,OAGtE,OAAOr1B,KAAK60G,UAAY70G,KAAKwzK,Q,+BAOrC,SAAkBt0B,GACVA,EAAI/6I,OACJnE,KAAK+M,YAAYnK,cAAciM,aAAa,mBAAoBqwI,EAAIlvG,KAAK,MAGzEhwC,KAAK+M,YAAYnK,cAAc6lC,gBAAgB,sB,8BAOvD,WAISzoC,KAAK60G,SACN70G,KAAK8uB,Y,CAjSMyknB,G,OAqSvBC,EAASjzoB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKgzoB,GAAU,KAAyB,KAAoB,KAAyB,KAAkB,KAAyB,IAAkB,IAAK,KAAyB,IAAe,GAAI,KAAyB,IAA2B,GAAI,KAAyB,KAA2B,KAAyBH,EAA0B,IAAK,KAAyB,GAAyB,KAAyB,KAAgB,KAAyB,IAAgB,KACtiBG,EAAS/yoB,UAAO,KAAyB,CAAEC,KAAM8yoB,EAAU7yoB,UAAW,CAAC,CAAC,QAAS,WAAY,IAAK,CAAC,WAAY,WAAY,IAAK,CAAC,SAAU,mBAAoB,IAAK,CAAC,QAAS,mBAAoB,IAAK,CAAC,WAAY,mBAAoB,KAAMoC,UAAW,CAAC,EAAG,oBAAqB,mCAAoCwV,SAAU,EAAGC,aAAc,SAA+B7W,EAAIC,GAAgB,EAALD,GACvX,KAAkB,QAAS,WAA+C,OAAOC,EAAIkzoB,eAAc,IAAnG,CAA6G,OAAQ,WAA8C,OAAOlzoB,EAAIkzoB,eAAc,IAA5L,CAAuM,QAAS,WAA+C,OAAOlzoB,EAAIq1K,aACnQ,EAALt1K,IACF,KAAsB,WAAYC,EAAIorB,SAAtC,CAAgD,WAAYprB,EAAIqxG,UAChE,KAAmB,KAAMrxG,EAAIokB,GAA7B,CAAiC,mBAAoBpkB,EAAI+oJ,YAAzD,CAAsE,WAAY/oJ,EAAI23G,WAAa33G,EAAIsyoB,iBAAmB,KAA1H,CAAgI,eAAgBtyoB,EAAIw0K,aAAex0K,EAAI4xK,MAAvK,CAA8K,gBAAiB5xK,EAAIqxG,UACnM,KAAmB,mBAAoBrxG,EAAIqyoB,aAC1C9xoB,OAAQ,CAAE6jB,GAAI,KAAMgH,SAAU,WAAYimF,SAAU,WAAYvyG,KAAM,OAAQa,MAAO,QAASg4G,SAAU,WAAYoxC,YAAa,cAAe0rB,kBAAmB,oBAAqBu1c,oBAAqB,CAAC,mBAAoB,wBAA0BlzmB,SAAU,CAAC,YAAapW,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAAS,IAAqBC,YAAagxoB,KAAc,KAAmC,Q,sBA8H3ZuB,E,sDAENA,EAAex0oB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKu0oB,IAC5EA,EAAe77nB,UAAO,KAAwB,CAAExY,KAAMq0oB,IACtDA,EAAe57nB,UAAO,KAAwB,CAAEgZ,UAAW,CAAC,KAAoB/Y,QAAS,CAAC,CAC9E,EACA,IACA,KACD,EAGH,O,wCCxjBR,gTA8YA,SAAS+0L,EAAS5sM,GACd,OAAOyzoB,OAAWvwoB,EAAWlD,GAgBjC,SAASyzoB,EAAWxonB,EAAQjG,GACxB,KAAMA,aAAkB/J,QACpB,OAAO+J,EAEX,OAAQA,EAAO2pB,aACX,KAAKwK,KAID,OAAO,IAAIA,KADKn0B,EACU26F,WAC9B,KAAK1kG,YACc/X,IAAX+nB,IACAA,EAAS,IAEb,MACJ,KAAKjiB,MAEDiiB,EAAS,GACT,MACJ,QAEI,OAAOjG,EAEf,IAAK,IAAI6nB,KAAQ7nB,EAERA,EAAOmnB,eAAeU,IAQhB,cARqCA,IAGhD5hB,EAAO4hB,GAAQ4mmB,EAAWxonB,EAAO4hB,GAAO7nB,EAAO6nB,KAEnD,OAAO5hB,EAsBX,IAAIyonB,EAA0B,WAC1B,SAASA,IACL,IAAIvzlB,EAAQ1hD,KACZA,KAAKy1H,OAAS,aACdz1H,KAAKwE,QAAU,aACfxE,KAAKk0B,QAAU,IAAI3vB,QAAQ,SAAUC,EAASixH,GAC1C/zE,EAAMl9C,QAAUA,EAChBk9C,EAAM+zE,OAASA,IAgCvB,OAxBAw/gB,EAASvinB,UAAUwinB,aAAe,SAAUjinB,GACxC,IAAIyuB,EAAQ1hD,KACZ,OAAO,SAAUg1B,EAAOzzB,GAChByzB,EACA0sB,EAAM+zE,OAAOzgG,GAGb0sB,EAAMl9C,QAAQjD,GAEM,mBAAb0xB,IAGPyuB,EAAMxtB,QAAQwpkB,MAAM,cAGI,IAApBzqkB,EAAS9uB,OACT8uB,EAAS+B,GAGT/B,EAAS+B,EAAOzzB,MAKzB0zoB,EAvCmB,GAyI9B,SAAS76V,IACL,IACI,MAA2D,qBAAnD59R,OAAOkW,UAAUT,SAASiD,KAAK4S,OAAO6iN,SAElD,MAAO12N,GACH,OAAO,GAMf,SAAShc,IACL,MAAuB,iBAATghO,MAAqBA,KAAKA,OAASA,KAkIrD,IAGIk8Z,EAA+B,SAAU38jB,GAEzC,SAAS28jB,EAAcjpkB,EAAMlyC,EAASo7mB,GAClC,IAAI1zlB,EAAQ82B,EAAOtjD,KAAKl1B,KAAMg6B,IAAYh6B,KAY1C,OAXA0hD,EAAMwqB,KAAOA,EACbxqB,EAAM0zlB,WAAaA,EACnB1zlB,EAAMvgD,KATG,gBAYTqb,OAAO6sH,eAAe3nF,EAAOyzlB,EAAczinB,WAGvC2B,MAAMghnB,mBACNhhnB,MAAMghnB,kBAAkB3zlB,EAAO4zlB,EAAa5inB,UAAUptB,QAEnDo8C,EAEX,OAhBA,YAAUyzlB,EAAe38jB,GAgBlB28jB,EAjBwB,CAkBjC9gnB,OACEihnB,EAA8B,WAC9B,SAASA,EAAa//mB,EAASggnB,EAAahmgB,GACxCvvI,KAAKu1B,QAAUA,EACfv1B,KAAKu1oB,YAAcA,EACnBv1oB,KAAKuvI,OAASA,EAgBlB,OAdA+lgB,EAAa5inB,UAAUptB,OAAS,SAAU4mE,GAEtC,IADA,IAAIp8D,EAAO,GACFJ,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpCI,EAAKJ,EAAK,GAAK4J,UAAU5J,GAE7B,IAAI0loB,EAAatloB,EAAK,IAAM,GACxBuwiB,EAAWrgjB,KAAKu1B,QAAU,IAAM22C,EAChC5rE,EAAWN,KAAKuvI,OAAOrjE,GACvBlyC,EAAU15B,EAAWk1oB,EAAgBl1oB,EAAU80oB,GAAc,QAE7DK,EAAcz1oB,KAAKu1oB,YAAc,KAAOv7mB,EAAU,KAAOqmhB,EAAW,KACpErrhB,EAAQ,IAAImgnB,EAAc90F,EAAUo1F,EAAaL,GACrD,OAAOpgnB,GAEJsgnB,EApBuB,GAsBlC,SAASE,EAAgBl1oB,EAAUwP,GAC/B,OAAOxP,EAASkB,QAAQk0oB,EAAS,SAAUtjiB,EAAGz1F,GAC1C,IAAIpb,EAAQuO,EAAK6M,GACjB,OAAgB,MAATpb,EAAgB8tC,OAAO9tC,GAAS,IAAMob,EAAM,OAG3D,IAAI+4nB,EAAU,gBAmKd,SAAS9onB,EAAS7O,EAAKpB,GACnB,OAAOH,OAAOkW,UAAUgb,eAAexY,KAAKnX,EAAKpB,GA2YrD,SAASg5nB,EAAgBC,EAAUC,GAC/B,IAAIj1S,EAAQ,IAAIk1S,EAAcF,EAAUC,GACxC,OAAOj1S,EAAM18V,UAAUqmC,KAAKq2T,GAMhC,IAAIk1S,EAA+B,WAM/B,SAASA,EAAcF,EAAUC,GAC7B,IAAIn0lB,EAAQ1hD,KACZA,KAAKwnJ,UAAY,GACjBxnJ,KAAK+1oB,aAAe,GACpB/1oB,KAAKg2oB,cAAgB,EAErBh2oB,KAAK0D,KAAOa,QAAQC,UACpBxE,KAAKi2oB,WAAY,EACjBj2oB,KAAK61oB,cAAgBA,EAIrB71oB,KAAK0D,KACA2a,KAAK,WACNu3nB,EAASl0lB,KAERg8iB,MAAM,SAAUzpkB,GACjBytB,EAAM1sB,MAAMf,KAgJpB,OA7IA6hnB,EAAcpjnB,UAAU7uB,KAAO,SAAUtC,GACrCvB,KAAKk2oB,gBAAgB,SAAU9pmB,GAC3BA,EAASvoC,KAAKtC,MAGtBu0oB,EAAcpjnB,UAAUsC,MAAQ,SAAUA,GACtCh1B,KAAKk2oB,gBAAgB,SAAU9pmB,GAC3BA,EAASpX,MAAMA,KAEnBh1B,KAAKslC,MAAMtQ,IAEf8gnB,EAAcpjnB,UAAU5uB,SAAW,WAC/B9D,KAAKk2oB,gBAAgB,SAAU9pmB,GAC3BA,EAAStoC,aAEb9D,KAAKslC,SAQTwwmB,EAAcpjnB,UAAUxuB,UAAY,SAAUipM,EAAgBn4K,EAAOlxB,GACjE,IACIsoC,EADAsV,EAAQ1hD,KAEZ,QAAuByE,IAAnB0oM,QACU1oM,IAAVuwB,QACavwB,IAAbX,EACA,MAAM,IAAIuwB,MAAM,0BAiBE5vB,KANlB2nC,EA6HZ,SAA8BruB,EAAKo7R,GAC/B,GAAmB,iBAARp7R,GAA4B,OAARA,EAC3B,OAAO,EAEX,IAAK,IAAIrO,EAAK,EAAGymoB,EAzI4B,CACrC,OACA,QACA,YAsI8BzmoB,EAAKymoB,EAAUhyoB,OAAQuL,IAAM,CAC/D,IAAIk7E,EAASurjB,EAAUzmoB,GACvB,GAAIk7E,KAAU7sE,GAA8B,mBAAhBA,EAAI6sE,GAC5B,OAAO,EAGf,OAAO,EA/ICwrjB,CAAqBjpc,GAKVA,EAGA,CACPtpM,KAAMspM,EACNn4K,MAAOA,EACPlxB,SAAUA,IAGLD,OACTuoC,EAASvoC,KAAO6wH,QAEGjwH,IAAnB2nC,EAASpX,QACToX,EAASpX,MAAQ0/F,QAEKjwH,IAAtB2nC,EAAStoC,WACTsoC,EAAStoC,SAAW4wH,GAExB,IAAI2hhB,EAAQr2oB,KAAKs2oB,eAAe/rmB,KAAKvqC,KAAMA,KAAKwnJ,UAAUrjJ,QAsB1D,OAlBInE,KAAKi2oB,WAELj2oB,KAAK0D,KAAK2a,KAAK,WACX,IACQqjC,EAAM60lB,WACNnqmB,EAASpX,MAAM0sB,EAAM60lB,YAGrBnqmB,EAAStoC,WAGjB,MAAOmwB,OAMfj0B,KAAKwnJ,UAAU5jJ,KAAKwoC,GACbiqmB,GAIXP,EAAcpjnB,UAAU4jnB,eAAiB,SAAUzuoB,QACxBpD,IAAnBzE,KAAKwnJ,gBAAiD/iJ,IAAtBzE,KAAKwnJ,UAAU3/I,YAG5C7H,KAAKwnJ,UAAU3/I,GACtB7H,KAAKg2oB,eAAiB,EACK,IAAvBh2oB,KAAKg2oB,oBAA8CvxoB,IAAvBzE,KAAK61oB,eACjC71oB,KAAK61oB,cAAc71oB,QAG3B81oB,EAAcpjnB,UAAUwjnB,gBAAkB,SAAUlnoB,GAChD,IAAIhP,KAAKi2oB,UAMT,IAAK,IAAIpuoB,EAAI,EAAGA,EAAI7H,KAAKwnJ,UAAUrjJ,OAAQ0D,IACvC7H,KAAKw2oB,QAAQ3uoB,EAAGmH,IAMxB8moB,EAAcpjnB,UAAU8jnB,QAAU,SAAU3uoB,EAAGmH,GAC3C,IAAI0yC,EAAQ1hD,KAGZA,KAAK0D,KAAK2a,KAAK,WACX,QAAwB5Z,IAApBi9C,EAAM8lG,gBAAkD/iJ,IAAvBi9C,EAAM8lG,UAAU3/I,GACjD,IACImH,EAAG0yC,EAAM8lG,UAAU3/I,IAEvB,MAAOosB,GAIoB,oBAAZ8W,SAA2BA,QAAQ/V,OAC1C+V,QAAQ/V,MAAMf,OAMlC6hnB,EAAcpjnB,UAAU4S,MAAQ,SAAU3I,GACtC,IAAI+kB,EAAQ1hD,KACRA,KAAKi2oB,YAGTj2oB,KAAKi2oB,WAAY,OACLxxoB,IAARk4B,IACA38B,KAAKu2oB,WAAa55mB,GAItB38B,KAAK0D,KAAK2a,KAAK,WACXqjC,EAAM8lG,eAAY/iJ,EAClBi9C,EAAMm0lB,mBAAgBpxoB,MAGvBqxoB,EAvKwB,GA2MnC,SAASphhB,O,wUC7hDF,IAAM,EAAb,YACI,WAAYoX,EAAWC,GAAI,M,MAAA,2B,EACvB,K,EAAA,E,EAAA,CAAMD,EAAWC,G,kBAAjB,E,iGACKD,UAAYA,EACjB,EAAKC,KAAOA,EAHW,EAD/B,6DAMI,SAAS1jI,GAAgB,IAAT+kF,EAAS,uDAAD,EACpB,OAAIA,EAAQ,EACR,wBAAsB/kF,EAAO+kF,KAEjCptF,KAAKotF,MAAQA,EACbptF,KAAKqI,MAAQA,EACbrI,KAAK8rI,UAAUK,MAAMnsI,MACdA,QAbf,qBAeI,SAAQqI,EAAO+kF,GACX,OAAQA,EAAQ,GAAKptF,KAAKwnB,OAAnB,uBACWnf,EAAO+kF,IACrBptF,KAAKssI,SAASjkI,EAAO+kF,KAlBjC,4BAoBI,SAAe0+C,EAAW9lH,GAAa,IAATonE,EAAS,uDAAD,EAClC,OAAe,OAAVA,GAAkBA,EAAQ,GAAiB,OAAVA,GAAkBptF,KAAKotF,MAAQ,EACjE,8BAA4B0+C,EAAW9lH,EAAIonE,IAExC0+C,EAAUK,MAAMnsI,UAxB/B,C,UAAiC,G,0ICA1B,ICCMy2oB,EAAiB,IDD9B,gH,UAAoC,GCCN,CAAmB,GACpCvomB,EAAQuomB,G,kICUR/zZ,EAboB,WAC7B,SAASC,EAAwBpzG,GAO7B,OANAl7G,MAAMa,KAAKl1B,MACXA,KAAKg6B,QAAUu1G,EAAM,UACdA,EAAOprI,OADO,oDAE3BorI,EAAO9lI,IAAI,SAACkzB,EAAK90B,GAAN,gBAAeA,EAAI,EAAnB,aAAyB80B,EAAI1K,cAAc+d,KAAK,SAAY,GACjEhwC,KAAKmB,KAAO,sBACZnB,KAAKuvI,OAASA,EACPvvI,KAGX,OADA2iP,EAAwBjwN,UAAYlW,OAAOlX,OAAO+uB,MAAM3B,WACjDiwN,EAXsB,GCI3B,iBA6H0BnvE,EA7HnBzuB,EAAP,WACF,WAAYnvI,GAAW,oBACnB5V,KAAKwnB,QAAS,EACdxnB,KAAKymK,iBAAmB,KACxBzmK,KAAKi3mB,eAAiB,KAClBrhmB,IACA5V,KAAK02oB,kBAAmB,EACxB12oB,KAAKysI,aAAe72H,GAP1B,+CAUF,WACI,IAAI25H,EACJ,IAAIvvI,KAAKwnB,OAAT,CAGA,IAAMi/I,EAAqEzmK,KAArEymK,iBAAkBiwe,EAAmD12oB,KAAnD02oB,iBAAkBjqgB,EAAiCzsI,KAAjCysI,aAAcwqe,EAAmBj3mB,KAAnBi3mB,eAIxD,GAHAj3mB,KAAKwnB,QAAS,EACdxnB,KAAKymK,iBAAmB,KACxBzmK,KAAKi3mB,eAAiB,KAClBxwc,aAA4B1hB,EAC5B0hB,EAAiBj7J,OAAOxL,WAEvB,GAAyB,OAArBymK,EACL,IAAK,IAAI98J,EAAQ,EAAGA,EAAQ88J,EAAiBtiK,SAAUwF,EACpC88J,EAAiB98J,GACzB6B,OAAOxL,MAGtB,GAAI,OAAAisK,EAAA,GAAWx/B,GAAe,CACtBiqgB,IACA12oB,KAAKysI,kBAAehoI,GAExB,IACIgoI,EAAav3G,KAAKl1B,MAEtB,MAAOi0B,GACHs7G,EAASt7G,aAAayuN,EAAsBi0Z,EAA4B1inB,EAAEs7G,QAAU,CAACt7G,IAG7F,GAAI,OAAAje,EAAA,GAAQihmB,GAGR,IAFA,IAAI,GAAS,EACT3/jB,EAAM2/jB,EAAe9ymB,SAChB,EAAQmzC,GAAK,CAClB,IAAM26C,EAAMglhB,EAAe,GAC3B,GAAI,OAAA5ra,EAAA,GAASp5G,GACT,IACIA,EAAIr8E,cAER,MAAOqe,GACHs7G,EAASA,GAAU,GACft7G,aAAayuN,EACbnzG,EAASA,EAAOv2H,OAAO29nB,EAA4B1inB,EAAEs7G,SAGrDA,EAAO3rI,KAAKqwB,IAMhC,GAAIs7G,EACA,MAAM,IAAImzG,EAAoBnzG,MA7DpC,iBAgEF,SAAIqngB,GACA,IAAI5iiB,EAAe4iiB,EACnB,IAAKA,EACD,OAAO7xf,EAAa79H,MAExB,cAAe0vnB,GACX,IAAK,WACD5iiB,EAAe,IAAI+wC,EAAa6xf,GACpC,IAAK,SACD,GAAI5iiB,IAAiBh0G,MAAQg0G,EAAaxsF,QAA8C,mBAA7BwsF,EAAap+F,YACpE,OAAOo+F,EAEN,GAAIh0G,KAAKwnB,OAEV,OADAwsF,EAAap+F,cACNo+F,EAEN,KAAMA,aAAwB+wC,GAAe,CAC9C,IAAM8xf,EAAM7iiB,GACZA,EAAe,IAAI+wC,GACNkyd,eAAiB,CAAC4/B,GAEnC,MACJ,QACI,MAAM,IAAIxinB,MAAM,yBAA2BuinB,EAAW,2BAG9D,IAAMnwe,EAAqBzyD,EAArByyD,iBACN,GAAyB,OAArBA,EACAzyD,EAAayyD,iBAAmBzmK,UAE/B,GAAIymK,aAA4B1hB,EAAc,CAC/C,GAAI0hB,IAAqBzmK,KACrB,OAAOg0G,EAEXA,EAAayyD,iBAAmB,CAACA,EAAkBzmK,UAElD,KAAwC,IAApCymK,EAAiBx9J,QAAQjJ,MAI9B,OAAOg0G,EAHPyyD,EAAiB7iK,KAAK5D,MAK1B,IAAM+zG,EAAgB/zG,KAAKi3mB,eAO3B,OANsB,OAAlBljgB,EACA/zG,KAAKi3mB,eAAiB,CAACjjgB,GAGvBD,EAAcnwG,KAAKowG,GAEhBA,IAjHT,oBAmHF,SAAOA,GACH,IAAMD,EAAgB/zG,KAAKi3mB,eAC3B,GAAIljgB,EAAe,CACf,IAAM+iiB,EAAoB/iiB,EAAc9qG,QAAQ+qG,IACrB,IAAvB8iiB,GACA/iiB,EAAcxrE,OAAOuumB,EAAmB,QAxHlD,G,OA6HN/xf,EAAa79H,QAAmBssJ,EAG9B,IAAIzuB,GAFIv9H,QAAS,EACRgsJ,G,EA/HL,GAiIN,SAASmje,EAA4BpngB,GACjC,OAAOA,EAAO95H,OAAO,SAACshoB,EAAMp6mB,GAAP,OAAeo6mB,EAAK/9nB,OAAQ2jB,aAAe+lN,EAAuB/lN,EAAI4yG,OAAS5yG,IAAM,M,sBC7HrG,SAAUta,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACT6B,EAAG,CAAC,wFAAmB,2DACvBC,GAAI,CAACa,EAAS,0DAAcA,EAAS,mCACrC5C,EAAG,CAAC,0DAAc,+CAClBgC,GAAI,CAACY,EAAS,oDAAaA,EAAS,yCACpCX,EAAG,CAAC,8CAAY,6BAChBC,GAAI,CAACU,EAAS,wCAAWA,EAAS,6BAClC1N,EAAG,CAAC,oDAAa,mCACjBiN,GAAI,CAACS,EAAS,8CAAYA,EAAS,uBACnCN,EAAG,CAAC,4EAAiB,qDACrBC,GAAI,CAACK,EAAS,gEAAeA,EAAS,yCACtCJ,EAAG,CAAC,0DAAc,yCAClBC,GAAI,CAACG,EAAS,oDAAaA,EAAS,0CAExC,OAAOs4C,EAAWj7C,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAGrC0F,EAAOM,aAAa,WAAY,CAC1CC,OAAQ,CACJ6hH,WACI,0cAAwFliH,MACpF,KAERQ,OAAQ,4yBAAmJR,MACvJ,KAEJmiH,SAAU,mBAEd7hH,YACI,qVAA4EN,MACxE,KAER0U,kBAAkB,EAClB1T,SAAU,iRAAqDhB,MAAM,KACrEiB,cAAe,wLAA4CjB,MAAM,KACjEkB,YAAa,mGAAwBlB,MAAM,KAC3CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,gDACJC,IAAK,mDACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4DACLC,KAAM,qEACN4gH,KAAM,kEAEV3gH,SAAU,CACNC,QAAS,0BACTC,QAAS,kDACTC,SAAU,8CACVC,QAAS,0BACTC,SAAU,8CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,8BACNC,EAAGm4I,EACHl4I,GAAIk4I,EACJj6I,EAAGi6I,EACHj4I,GAAIi4I,EACJh4I,EAAGg4I,EACH/3I,GAAI+3I,EACJ/kJ,EAAG+kJ,EACH93I,GAAI83I,EACJ33I,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,8BACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAO97F,EAAS,qBACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAET2rB,cAAe,0IACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,6BAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,yCAAbC,EACAD,EACa,+CAAbC,EACAD,EAAO,GAAKA,EAAOA,EAAO,GACb,mCAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,2BACAA,EAAO,GACP,uCACAA,EAAO,GACP,6CACAA,EAAO,GACP,iCAEA,8BA3HmB5sC,CAAQ,EAAQ,U,kfCFpD,E,8BACF,WAAYu7B,EAAW22mB,GAAS,oBAC5Bh3oB,KAAKqgC,UAAYA,EACjBrgC,KAAKg3oB,UAAYA,G,mBAErB,SAAKz6mB,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAoBq4B,EAAYv8B,KAAKqgC,UAAWrgC,KAAKg3oB,gB,GAGnF,E,YACF,WAAYv6mB,EAAa4D,EAAW22mB,GAAS,M,MAAA,2B,EACzC,K,EAAA,E,EAAA,CAAMv6mB,G,kBAAN,E,iGACK4D,UAAYA,EACjB,EAAK22mB,UAAYA,EACjB,EAAKrtoB,MAAQ,EAJ4B,E,0DAM7C,SAAMpI,GACF,IACIq7B,EADEH,EAAcz8B,KAAKy8B,YAEzB,IACIG,EAAS58B,KAAKqgC,UAAU9+B,EAAOvB,KAAK2J,SAExC,MAAOgzB,GAEH,YADAF,EAAYzH,MAAM2H,GAGtB38B,KAAKi3oB,eAAe11oB,EAAOq7B,K,4BAE/B,SAAer7B,EAAO21oB,GAClB,IAAMz6mB,EAAcz8B,KAAKy8B,YACrBirB,QAAQwvlB,GACRz6mB,EAAY54B,KAAKtC,IAGbvB,KAAKg3oB,WACLv6mB,EAAY54B,KAAKtC,GAErBk7B,EAAY34B,gB,CA5BUkiK,EAAA,G,oSCWlC,IAAMoyd,EAA0B,cAI1B,E,8BACF,WAAY9qnB,EAAgBq9B,GAAQ,oBAChC3qC,KAAKsN,eAAiBA,EACtBtN,KAAKm3oB,oBAAsB,CAAEproB,IAAK,GAAIE,KAAM,IAC5CjM,KAAKo3oB,YAAa,EAClBp3oB,KAAKkN,UAAYy9B,G,qBAGrB,c,oBAEA,WACI,GAAI3qC,KAAKq3oB,gBAAiB,CACtB,IAAMj4jB,EAAOp/E,KAAKkN,UAAUsnC,gBAC5Bx0C,KAAKs3oB,wBAA0Bt3oB,KAAKsN,eAAe41I,4BAEnDljJ,KAAKm3oB,oBAAoBlroB,KAAOmzE,EAAK7zE,MAAMU,MAAQ,GACnDjM,KAAKm3oB,oBAAoBproB,IAAMqzE,EAAK7zE,MAAMQ,KAAO,GAGjDqzE,EAAK7zE,MAAMU,KAAO,aAAqBjM,KAAKs3oB,wBAAwBrroB,MACpEmzE,EAAK7zE,MAAMQ,IAAM,aAAqB/L,KAAKs3oB,wBAAwBvroB,KACnEqzE,EAAKz8E,UAAUE,IAAI,0BACnB7C,KAAKo3oB,YAAa,K,qBAI1B,WACI,GAAIp3oB,KAAKo3oB,WAAY,CACjB,IAAM7qjB,EAAOvsF,KAAKkN,UAAUsnC,gBAEtB+imB,EAAYhrjB,EAAKhhF,MACjBisoB,EAFOx3oB,KAAKkN,UAAU41B,KAELv3B,MACjBksoB,EAA6BF,EAAUG,gBAAkB,GACzDC,EAA6BH,EAAUE,gBAAkB,GAC/D13oB,KAAKo3oB,YAAa,EAClBG,EAAUtroB,KAAOjM,KAAKm3oB,oBAAoBlroB,KAC1CsroB,EAAUxroB,IAAM/L,KAAKm3oB,oBAAoBproB,IACzCwgF,EAAK5pF,UAAU6I,OAAO,0BAMlB4snB,IACAmf,EAAUG,eAAiBF,EAAUE,eAAiB,QAE1DvsnB,OAAO6tD,OAAOh5E,KAAKs3oB,wBAAwBrroB,KAAMjM,KAAKs3oB,wBAAwBvroB,KAC1EqsnB,IACAmf,EAAUG,eAAiBD,EAC3BD,EAAUE,eAAiBC,M,2BAIvC,WAKI,GADa33oB,KAAKkN,UAAUsnC,gBACnB7xC,UAAUiqB,SAAS,2BAA6B5sB,KAAKo3oB,WAC1D,OAAO,EAEX,IAAMt0mB,EAAO9iC,KAAKkN,UAAU41B,KACtBykJ,EAAWvnL,KAAKsN,eAAeqoJ,kBACrC,OAAO7yH,EAAKg2C,aAAeyuG,EAAS/8K,QAAUs4B,EAAK+1C,YAAc0uG,EAAS79K,U,GAqB5E,E,8BACF,WAAY0uJ,EAAmB90J,EAASgK,EAAgBw0B,GAAO,+BAC3D9hC,KAAKo4J,kBAAoBA,EACzBp4J,KAAKsD,QAAUA,EACftD,KAAKsN,eAAiBA,EACtBtN,KAAK8hC,QAAUA,EACf9hC,KAAKilJ,oBAAsB,KAE3BjlJ,KAAK4/J,QAAU,WACX,EAAK3oB,UACD,EAAKxrH,YAAYxL,eACjB,EAAK3c,QAAQgpC,IAAI,kBAAM,EAAK7gB,YAAY1M,a,qBAKpD,SAAOoQ,GAIHnvB,KAAKyrB,YAAc0D,I,oBAGvB,WAAM,WACF,IAAInvB,KAAKilJ,oBAAT,CAGA,IAAM6mD,EAAS9rM,KAAKo4J,kBAAkBw/e,SAAS,GAC3C53oB,KAAK8hC,SAAW9hC,KAAK8hC,QAAQ8gH,WAAa5iJ,KAAK8hC,QAAQ8gH,UAAY,GACnE5iJ,KAAK63oB,uBAAyB73oB,KAAKsN,eAAe41I,4BAA4Bn3I,IAC9E/L,KAAKilJ,oBAAsB6mD,EAAO5nM,UAAU,WACxC,IAAM++I,EAAiB,EAAK31I,eAAe41I,4BAA4Bn3I,IACnEwS,KAAKqiC,IAAIqiG,EAAiB,EAAK40f,wBAA0B,EAAK/1mB,QAAQ8gH,UACtE,EAAKgd,UAGL,EAAKn0I,YAAYC,oBAKzB1rB,KAAKilJ,oBAAsB6mD,EAAO5nM,UAAUlE,KAAK4/J,Y,qBAIzD,WACQ5/J,KAAKilJ,sBACLjlJ,KAAKilJ,oBAAoBrvI,cACzB5V,KAAKilJ,oBAAsB,Q,oBAGnC,WACIjlJ,KAAKi3I,UACLj3I,KAAKyrB,YAAc,S,GAYrB,E,qFAEF,c,qBAEA,c,oBAEA,gB,GAmBJ,SAASqsnB,EAA6BzsoB,EAAS0soB,GAC3C,OAAOA,EAAiB3voB,KAAK,SAAA4voB,GAKzB,OAJqB3soB,EAAQW,OAASgsoB,EAAgBjsoB,KACjCV,EAAQU,IAAMisoB,EAAgBhsoB,QAC/BX,EAAQa,MAAQ8roB,EAAgB/roB,MAC/BZ,EAAQY,KAAO+roB,EAAgB9roB,QAW5D,SAAS+roB,EAA4B5soB,EAAS0soB,GAC1C,OAAOA,EAAiB3voB,KAAK,SAAA8voB,GAKzB,OAJqB7soB,EAAQU,IAAMmsoB,EAAoBnsoB,KAClCV,EAAQW,OAASksoB,EAAoBlsoB,QACtCX,EAAQY,KAAOisoB,EAAoBjsoB,MAClCZ,EAAQa,MAAQgsoB,EAAoBhsoB,Q,IAe3D,E,8BACF,WAAYksJ,EAAmB9qJ,EAAgBhK,EAASw+B,GAAO,oBAC3D9hC,KAAKo4J,kBAAoBA,EACzBp4J,KAAKsN,eAAiBA,EACtBtN,KAAKsD,QAAUA,EACftD,KAAK8hC,QAAUA,EACf9hC,KAAKilJ,oBAAsB,M,qBAG/B,SAAO91H,GAIHnvB,KAAKyrB,YAAc0D,I,oBAGvB,WAAM,WACGnvB,KAAKilJ,sBAENjlJ,KAAKilJ,oBAAsBjlJ,KAAKo4J,kBAAkBw/e,SADjC53oB,KAAK8hC,QAAU9hC,KAAK8hC,QAAQgyQ,eAAiB,GACO5vS,UAAU,WAG3E,GAFA,EAAKunB,YAAYC,iBAEb,EAAKoW,SAAW,EAAKA,QAAQotF,UAAW,CACxC,IAAMogQ,EAAc,EAAK7jW,YAAYoB,eAAepiB,wBACpD,EAA0B,EAAK6C,eAAeqoJ,kBAAtCjsJ,EAAR,EAAQA,MAAOc,EAAf,EAAeA,OAIXstoB,EAA6BxoR,EADb,CAAC,CAAE5lX,QAAOc,SAAQwB,OAAQxB,EAAQ0B,MAAOxC,EAAOqC,IAAK,EAAGE,KAAM,OAE9E,EAAKgrI,UACL,EAAK3zI,QAAQgpC,IAAI,kBAAM,EAAK7gB,YAAY1M,kB,qBAO5D,WACQ/e,KAAKilJ,sBACLjlJ,KAAKilJ,oBAAoBrvI,cACzB5V,KAAKilJ,oBAAsB,Q,oBAGnC,WACIjlJ,KAAKi3I,UACLj3I,KAAKyrB,YAAc,S,oBAiBrB0snB,E,YACF,WAAY//e,EAAmB9qJ,EAAgBhK,EAASqnC,GAAQ,+BAC5D3qC,KAAKo4J,kBAAoBA,EACzBp4J,KAAKsN,eAAiBA,EACtBtN,KAAKsD,QAAUA,EAEftD,KAAK00H,KAAO,kBAAM,IAAI,GAKtB10H,KAAKslC,MAAQ,SAAClN,GAAD,OAAY,IAAI,EAAoB,EAAKggI,kBAAmB,EAAK90J,QAAS,EAAKgK,eAAgB8qB,IAE5Gp4B,KAAK2lC,MAAQ,kBAAM,IAAI,EAAoB,EAAKr4B,eAAgB,EAAKJ,YAMrElN,KAAKupB,WAAa,SAAC6O,GAAD,OAAY,IAAI,EAAyB,EAAKggI,kBAAmB,EAAK9qJ,eAAgB,EAAKhK,QAAS80B,IACtHp4B,KAAKkN,UAAYy9B,I,OAGzBwtmB,EAAsB53oB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK23oB,GAAuB,KAAgB,KAA0B,KAAgB,KAAuB,KAAgB,KAAgB,KAAgB,OAClPA,EAAsBvzoB,WAAQ,aAAmB,CAAEE,QAAS,WAA2C,OAAO,IAAIqzoB,EAAsB,aAAS,KAAmB,aAAS,KAAgB,aAAS,KAAS,aAAS,OAAetzoB,MAAOszoB,EAAuBvxnB,WAAY,S,KA+B3Q,E,YACF,WAAYwR,GAeR,GAfc,oBAEdp4B,KAAK+pB,eAAiB,IAAI,EAE1B/pB,KAAKgwB,WAAa,GAElBhwB,KAAK+gC,aAAc,EAEnB/gC,KAAKghC,cAAgB,4BAMrBhhC,KAAKkoC,qBAAsB,EACvB9P,EAKA,IADA,IACA,MADmB5b,OAAOC,KAAK2b,GAC/B,eAA8B,CAAzB,IAAMzb,EAAG,UACUlY,IAAhB2zB,EAAOzb,KAOP3c,KAAK2c,GAAOyb,EAAOzb,OAejC,E,YACF,WAAYm2F,EAAQzpF,EAEpB+3K,EAEAC,EAEArxK,GAAU,oBACNhwB,KAAKohM,QAAUA,EACfphM,KAAKqhM,QAAUA,EACfrhM,KAAKgwB,WAAaA,EAClBhwB,KAAKuwB,QAAUuiF,EAAOviF,QACtBvwB,KAAKwwB,QAAUsiF,EAAOtiF,QACtBxwB,KAAKywB,SAAWpH,EAAQoH,SACxBzwB,KAAK0wB,SAAWrH,EAAQqH,WA+B1B,E,YACF,WAEA2mT,EAEAzhC,GAAwB,oBACpB51S,KAAKq3U,eAAiBA,EACtBr3U,KAAK41S,yBAA2BA,I,iBA4ClCwiW,E,8BACF,WAAYztmB,GAAQ,oBAEhB3qC,KAAKq4oB,kBAAoB,GACzBr4oB,KAAKkN,UAAYy9B,G,0BAErB,WACI3qC,KAAK+e,W,iBAGT,SAAIoQ,GAEAnvB,KAAKwL,OAAO2jB,GACZnvB,KAAKq4oB,kBAAkBz0oB,KAAKurB,K,oBAGhC,SAAOA,GACH,IAAMxlB,EAAQ3J,KAAKq4oB,kBAAkBpvoB,QAAQkmB,GACzCxlB,GAAS,GACT3J,KAAKq4oB,kBAAkB9vmB,OAAO5+B,EAAO,GAGH,IAAlC3J,KAAKq4oB,kBAAkBl0oB,QACvBnE,KAAK+e,a,UAIjBq5nB,EAAsB73oB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK43oB,GAAuB,KAAgB,OACjIA,EAAsBxzoB,WAAQ,aAAmB,CAAEE,QAAS,WAA2C,OAAO,IAAIszoB,EAAsB,aAAS,OAAevzoB,MAAOuzoB,EAAuBxxnB,WAAY,S,sBAwBpM0xnB,E,YACF,WAAY3tmB,GAAQ,kCAChB,YAAMA,KAED4tmB,iBAAmB,SAACjwnB,GAErB,IADA,IAAMkwnB,EAAW,EAAKH,kBACbxwoB,EAAI2woB,EAASr0oB,OAAS,EAAG0D,GAAK,EAAGA,IAOtC,GAAI2woB,EAAS3woB,GAAG4woB,eAAejxf,UAAUrjJ,OAAS,EAAG,CACjDq0oB,EAAS3woB,GAAG4woB,eAAe50oB,KAAKykB,GAChC,QAdI,E,wDAoBpB,SAAI6G,GACA,mBAAUA,IAELnvB,KAAK04oB,cACN14oB,KAAKkN,UAAU41B,KAAKxX,iBAAiB,UAAWtrB,KAAKu4oB,kBACrDv4oB,KAAK04oB,aAAc,K,oBAI3B,WACQ14oB,KAAK04oB,cACL14oB,KAAKkN,UAAU41B,KAAKnX,oBAAoB,UAAW3rB,KAAKu4oB,kBACxDv4oB,KAAK04oB,aAAc,O,CAjCS,G,OAqCxCJ,EAA0B/3oB,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAK83oB,GAA2B,KAAgB,OAC7IA,EAA0B1zoB,WAAQ,aAAmB,CAAEE,QAAS,WAA+C,OAAO,IAAIwzoB,EAA0B,aAAS,OAAezzoB,MAAOyzoB,EAA2B1xnB,WAAY,S,sBAwBpN+xnB,E,YACF,WAAYhumB,EAAUx9B,GAAS,kCAC3B,YAAMw9B,KACDx9B,UAAYA,EACjB,EAAKyroB,mBAAoB,EAEzB,EAAKC,eAAiB,SAACvwnB,GAWnB,IATA,IAAMkE,EAASlE,EAAMiE,aAAejE,EAAMiE,eAAe,GAAKjE,EAAMkE,OAI9DgsnB,EAAW,EAAKH,kBAAkB7uoB,QAK/B3B,EAAI2woB,EAASr0oB,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CAC3C,IAAMsnB,EAAaqpnB,EAAS3woB,GAC5B,KAAIsnB,EAAW2pnB,sBAAsBtxf,UAAUrjJ,OAAS,IAAMgrB,EAAWlP,cAAzE,CAKA,GAAIkP,EAAWtC,eAAeD,SAASJ,GACnC,MAEJ2C,EAAW2pnB,sBAAsBj1oB,KAAKykB,MA1BnB,E,wDA+B/B,SAAI6G,GAQA,GAPA,mBAAUA,KAOLnvB,KAAK04oB,YAAa,CACnB,IAAM51mB,EAAO9iC,KAAKkN,UAAU41B,KAC5BA,EAAKxX,iBAAiB,QAAStrB,KAAK64oB,gBAAgB,GACpD/1mB,EAAKxX,iBAAiB,WAAYtrB,KAAK64oB,gBAAgB,GACvD/1mB,EAAKxX,iBAAiB,cAAetrB,KAAK64oB,gBAAgB,GAGtD74oB,KAAKmN,UAAUwpS,MAAQ32S,KAAK44oB,oBAC5B54oB,KAAK+4oB,qBAAuBj2mB,EAAKv3B,MAAM0xV,OACvCn6T,EAAKv3B,MAAM0xV,OAAS,UACpBj9V,KAAK44oB,mBAAoB,GAE7B54oB,KAAK04oB,aAAc,K,oBAI3B,WACI,GAAI14oB,KAAK04oB,YAAa,CAClB,IAAM51mB,EAAO9iC,KAAKkN,UAAU41B,KAC5BA,EAAKnX,oBAAoB,QAAS3rB,KAAK64oB,gBAAgB,GACvD/1mB,EAAKnX,oBAAoB,WAAY3rB,KAAK64oB,gBAAgB,GAC1D/1mB,EAAKnX,oBAAoB,cAAe3rB,KAAK64oB,gBAAgB,GACzD74oB,KAAKmN,UAAUwpS,KAAO32S,KAAK44oB,oBAC3B91mB,EAAKv3B,MAAM0xV,OAASj9V,KAAK+4oB,qBACzB/4oB,KAAK44oB,mBAAoB,GAE7B54oB,KAAK04oB,aAAc,O,CAlEa,G,OAsE5CC,EAA8Bp4oB,UAAO,SAA+CC,GAAK,OAAO,IAAKA,GAAKm4oB,GAA+B,KAAgB,KAAW,KAAgB,OACpLA,EAA8B/zoB,WAAQ,aAAmB,CAAEE,QAAS,WAAmD,OAAO,IAAI6zoB,EAA8B,aAAS,KAAW,aAAS,OAAe9zoB,MAAO8zoB,EAA+B/xnB,WAAY,S,KAwBxPoynB,IAAsC,oBAAX7tnB,SAA4BA,SACtDA,OAAO+wK,YAAa/wK,OAAOgxK,S,iBAE5B88c,E,8BACF,WAAYtumB,EAAUx9B,GAAS,oBAC3BnN,KAAKmN,UAAYA,EACjBnN,KAAKkN,UAAYy9B,G,0BAErB,WACI,IAAMtyB,EAAYrY,KAAK2/J,kBACnBtnJ,GAAaA,EAAUqI,YACvBrI,EAAUqI,WAAWe,YAAYpJ,K,iCASzC,WAII,OAHKrY,KAAK2/J,mBACN3/J,KAAKk5oB,mBAEFl5oB,KAAK2/J,oB,8BAMhB,WACI,IAAMw5e,EAAiB,wBACvB,GAAIn5oB,KAAKmN,UAAU8K,WAAa+goB,EAK5B,IAJA,IAAMI,EAA6Bp5oB,KAAKkN,UAAU6+F,iBAAiB,WAAIotiB,EAAJ,oCAC3DA,EAD2D,sBAI1DtxoB,EAAI,EAAGA,EAAIuxoB,EAA2Bj1oB,OAAQ0D,IACnDuxoB,EAA2BvxoB,GAAG6Y,WAAWe,YAAY23nB,EAA2BvxoB,IAGxF,IAAMwQ,EAAYrY,KAAKkN,UAAU2K,cAAc,OAC/CQ,EAAU1V,UAAUE,IAAIs2oB,GAUpBH,EACA3goB,EAAUxJ,aAAa,WAAY,QAE7B7O,KAAKmN,UAAU8K,WACrBI,EAAUxJ,aAAa,WAAY,UAEvC7O,KAAKkN,UAAU41B,KAAKhrB,YAAYO,GAChCrY,KAAK2/J,kBAAoBtnJ,M,UAGjC4goB,EAAiB14oB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKy4oB,GAAkB,KAAgB,KAAW,KAAgB,OAC7IA,EAAiBr0oB,WAAQ,aAAmB,CAAEE,QAAS,WAAsC,OAAO,IAAIm0oB,EAAiB,aAAS,KAAW,aAAS,OAAep0oB,MAAOo0oB,EAAkBrynB,WAAY,S,KAwBpM,E,8BACF,WAAYub,EAAek3mB,EAAOC,EAAOx3mB,EAASx+B,EAASi2oB,EAAqBrsoB,EAAW01Q,EAAW42X,GAAuB,+BACzHx5oB,KAAKmiC,cAAgBA,EACrBniC,KAAKq5oB,MAAQA,EACbr5oB,KAAKs5oB,MAAQA,EACbt5oB,KAAK8hC,QAAUA,EACf9hC,KAAKsD,QAAUA,EACftD,KAAKu5oB,oBAAsBA,EAC3Bv5oB,KAAKkN,UAAYA,EACjBlN,KAAK4iR,UAAYA,EACjB5iR,KAAKw5oB,wBAA0BA,EAC/Bx5oB,KAAKy5oB,iBAAmB,KACxBz5oB,KAAK05oB,eAAiB,IAAIj2oB,EAAA,EAC1BzD,KAAK25oB,aAAe,IAAIl2oB,EAAA,EACxBzD,KAAK45oB,aAAe,IAAIn2oB,EAAA,EACxBzD,KAAK65oB,iBAAmB90f,EAAA,EAAa79H,MACrClnB,KAAK85oB,sBAAwB,SAACxxnB,GAAD,OAAW,EAAKoxnB,eAAe71oB,KAAKykB,IAEjEtoB,KAAKy4oB,eAAiB,IAAIh1oB,EAAA,EAE1BzD,KAAK84oB,sBAAwB,IAAIr1oB,EAAA,EAC7Bq+B,EAAQ/X,iBACR/pB,KAAKkrB,gBAAkB4W,EAAQ/X,eAC/B/pB,KAAKkrB,gBAAgBpM,OAAO9e,OAEhCA,KAAKurB,kBAAoBuW,EAAQhS,kB,2BAGrC,WACI,OAAO9vB,KAAKs5oB,Q,2BAGhB,WACI,OAAOt5oB,KAAKy5oB,mB,uBAOhB,WACI,OAAOz5oB,KAAKq5oB,Q,oBAShB,SAAO15nB,GAAM,WACLo6nB,EAAe/5oB,KAAKmiC,cAAcrjB,OAAOa,GAyC7C,OAvCK3f,KAAKq5oB,MAAMzwmB,eAAiB5oC,KAAKg6oB,qBAClCh6oB,KAAKg6oB,oBAAoBlioB,YAAY9X,KAAKq5oB,OAE1Cr5oB,KAAKurB,mBACLvrB,KAAKurB,kBAAkBzM,OAAO9e,MAElCA,KAAKi6oB,uBACLj6oB,KAAKk6oB,qBACLl6oB,KAAKm6oB,0BACDn6oB,KAAKkrB,iBACLlrB,KAAKkrB,gBAAgBmsH,SAKzBr3I,KAAKsD,QAAQoB,SACRV,KAAK,OAAAW,EAAA,GAAK,IACVT,UAAU,WAEP,EAAK+b,eACL,EAAKyL,mBAIb1rB,KAAKo6oB,sBAAqB,GACtBp6oB,KAAK8hC,QAAQf,aACb/gC,KAAKg4H,kBAELh4H,KAAK8hC,QAAQ9R,YACbhwB,KAAKq6oB,eAAer6oB,KAAKs5oB,MAAOt5oB,KAAK8hC,QAAQ9R,YAAY,GAG7DhwB,KAAK25oB,aAAa91oB,OAElB7D,KAAKu5oB,oBAAoB12oB,IAAI7C,MACzBA,KAAK8hC,QAAQoG,sBACbloC,KAAK65oB,iBAAmB75oB,KAAK4iR,UAAU1+Q,UAAU,kBAAM,EAAKuqB,aAEhEzuB,KAAKw5oB,wBAAwB32oB,IAAI7C,MAC1B+5oB,I,oBAMX,WACI,GAAK/5oB,KAAKigB,cAAV,CAGAjgB,KAAK2kC,iBAIL3kC,KAAKo6oB,sBAAqB,GACtBp6oB,KAAKurB,mBAAqBvrB,KAAKurB,kBAAkBxM,QACjD/e,KAAKurB,kBAAkBxM,SAEvB/e,KAAKkrB,iBACLlrB,KAAKkrB,gBAAgB+rH,UAEzB,IAAMqjgB,EAAmBt6oB,KAAKmiC,cAAcpjB,SAU5C,OARA/e,KAAK45oB,aAAa/1oB,OAElB7D,KAAKu5oB,oBAAoB/toB,OAAOxL,MAGhCA,KAAKu6oB,2BACLv6oB,KAAK65oB,iBAAiBjkoB,cACtB5V,KAAKw5oB,wBAAwBhuoB,OAAOxL,MAC7Bs6oB,K,qBAGX,WACI,IAAME,EAAax6oB,KAAKigB,cACpBjgB,KAAKurB,mBACLvrB,KAAKurB,kBAAkBkD,UAE3BzuB,KAAKy6oB,yBACLz6oB,KAAK2kC,iBACL3kC,KAAK65oB,iBAAiBjkoB,cACtB5V,KAAKu5oB,oBAAoB/toB,OAAOxL,MAChCA,KAAKmiC,cAAc1T,UACnBzuB,KAAK25oB,aAAa71oB,WAClB9D,KAAK05oB,eAAe51oB,WACpB9D,KAAKy4oB,eAAe30oB,WACpB9D,KAAK84oB,sBAAsBh1oB,WAC3B9D,KAAKw5oB,wBAAwBhuoB,OAAOxL,MAChCA,KAAKq5oB,OAASr5oB,KAAKq5oB,MAAM34nB,aACzB1gB,KAAKq5oB,MAAM34nB,WAAWe,YAAYzhB,KAAKq5oB,OACvCr5oB,KAAKq5oB,MAAQ,MAEjBr5oB,KAAKg6oB,oBAAsBh6oB,KAAKs5oB,MAAQ,KACpCkB,GACAx6oB,KAAK45oB,aAAa/1oB,OAEtB7D,KAAK45oB,aAAa91oB,a,yBAGtB,WACI,OAAO9D,KAAKmiC,cAAcliB,gB,2BAG9B,WACI,OAAOjgB,KAAK05oB,iB,yBAGhB,WACI,OAAO15oB,KAAK25oB,e,yBAGhB,WACI,OAAO35oB,KAAK45oB,e,2BAGhB,WACI,OAAO55oB,KAAKy4oB,iB,kCAGhB,WACI,OAAOz4oB,KAAK84oB,wB,uBAGhB,WACI,OAAO94oB,KAAK8hC,U,4BAGhB,WACQ9hC,KAAKurB,mBACLvrB,KAAKurB,kBAAkBosB,U,oCAI/B,SAAuBznB,GACfA,IAAalwB,KAAKurB,oBAGlBvrB,KAAKurB,mBACLvrB,KAAKurB,kBAAkBkD,UAE3BzuB,KAAKurB,kBAAoB2E,EACrBlwB,KAAKigB,gBACLiQ,EAASpR,OAAO9e,MAChBA,KAAK0rB,qB,wBAIb,SAAWgvnB,GACP16oB,KAAK8hC,QAAUtlB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAK8hC,SAAU44mB,GAC9D16oB,KAAKk6oB,uB,0BAGT,SAAa5uoB,GACTtL,KAAK8hC,QAAUtlB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAK8hC,SAAU,CAAE96B,UAAWsE,IAC3EtL,KAAKm6oB,4B,2BAGT,SAAcl1mB,GACNjlC,KAAKs5oB,OACLt5oB,KAAKq6oB,eAAer6oB,KAAKs5oB,MAAOr0mB,GAAS,K,8BAIjD,SAAiBA,GACTjlC,KAAKs5oB,OACLt5oB,KAAKq6oB,eAAer6oB,KAAKs5oB,MAAOr0mB,GAAS,K,0BAMjD,WACI,IAAMj+B,EAAYhH,KAAK8hC,QAAQ96B,UAC/B,OAAKA,EAGuB,iBAAdA,EAAyBA,EAAYA,EAAUzF,MAFlD,Q,kCAKf,SAAqB2uB,GACbA,IAAalwB,KAAKkrB,kBAGtBlrB,KAAKy6oB,yBACLz6oB,KAAKkrB,gBAAkBgF,EACnBlwB,KAAKigB,gBACLiQ,EAASpR,OAAO9e,MAChBkwB,EAASmnH,a,qCAIjB,WACIr3I,KAAKq5oB,MAAMxqoB,aAAa,MAAO7O,KAAK26oB,kB,gCAGxC,WACI,GAAK36oB,KAAKs5oB,MAAV,CAGA,IAAM/toB,EAAQvL,KAAKs5oB,MAAM/toB,MACzBA,EAAM7B,MAAQ,YAAoB1J,KAAK8hC,QAAQp4B,OAC/C6B,EAAMf,OAAS,YAAoBxK,KAAK8hC,QAAQt3B,QAChDe,EAAMw8B,SAAW,YAAoB/nC,KAAK8hC,QAAQiG,UAClDx8B,EAAMy8B,UAAY,YAAoBhoC,KAAK8hC,QAAQkG,WACnDz8B,EAAM21B,SAAW,YAAoBlhC,KAAK8hC,QAAQZ,UAClD31B,EAAM08B,UAAY,YAAoBjoC,KAAK8hC,QAAQmG,c,kCAGvD,SAAqB2ymB,GACjB56oB,KAAKs5oB,MAAM/toB,MAAMmiJ,cAAgBktf,EAAgB,GAAK,S,6BAG1D,WAAe,WACLC,EAAe,+BACrB76oB,KAAKy5oB,iBAAmBz5oB,KAAKkN,UAAU2K,cAAc,OACrD7X,KAAKy5oB,iBAAiB92oB,UAAUE,IAAI,wBAChC7C,KAAK8hC,QAAQd,eACbhhC,KAAKq6oB,eAAer6oB,KAAKy5oB,iBAAkBz5oB,KAAK8hC,QAAQd,eAAe,GAI3EhhC,KAAKq5oB,MAAMzwmB,cAAcjoB,aAAa3gB,KAAKy5oB,iBAAkBz5oB,KAAKq5oB,OAGlEr5oB,KAAKy5oB,iBAAiBnunB,iBAAiB,QAAStrB,KAAK85oB,uBAEhB,oBAA1Brxd,sBACPzoL,KAAKsD,QAAQ+nB,kBAAkB,WAC3Bo9J,sBAAsB,WACd,EAAKgxd,kBACL,EAAKA,iBAAiB92oB,UAAUE,IAAIg4oB,OAMhD76oB,KAAKy5oB,iBAAiB92oB,UAAUE,IAAIg4oB,K,kCAU5C,WACQ76oB,KAAKq5oB,MAAMh0W,aACXrlS,KAAKq5oB,MAAM34nB,WAAW5I,YAAY9X,KAAKq5oB,S,4BAI/C,WAAc,WACNyB,EAAmB96oB,KAAKy5oB,iBAC5B,GAAKqB,EAAL,CAGA,IAAI3tjB,EACA,EAAe,WAEX2tjB,IACAA,EAAiBnvnB,oBAAoB,QAAS,EAAKmunB,uBACnDgB,EAAiBnvnB,oBAAoB,gBAAiB,GAClDmvnB,EAAiBp6nB,YACjBo6nB,EAAiBp6nB,WAAWe,YAAYq5nB,IAM5C,EAAKrB,kBAAoBqB,IACzB,EAAKrB,iBAAmB,MAExB,EAAK33mB,QAAQd,eACb,EAAKq5mB,eAAeS,EAAkB,EAAKh5mB,QAAQd,eAAe,GAEtEkD,aAAaipD,IAEjB2tjB,EAAiBn4oB,UAAU6I,OAAO,gCAClCxL,KAAKsD,QAAQ+nB,kBAAkB,WAC3ByvnB,EAAiBxvnB,iBAAiB,gBAAiB,KAIvDwvnB,EAAiBvvoB,MAAMmiJ,cAAgB,OAIvCvgE,EAAYntF,KAAKsD,QAAQ+nB,kBAAkB,kBAAMuZ,WAAW,EAAc,U,4BAG9E,SAAev5B,EAAS+0X,EAAYjgM,GAChC,IAAMx9L,EAAY0I,EAAQ1I,UAC1B,YAAYy9X,GAAY/sX,QAAQ,SAAAsgX,GAGxBA,IACAxzL,EAAQx9L,EAAUE,IAAI8wX,GAAYhxX,EAAU6I,OAAOmoX,Q,sCAK/D,WAAwB,WAIpB3zX,KAAKsD,QAAQ+nB,kBAAkB,WAI3B,IAAM2oF,EAAe,EAAK1wG,QAAQoB,SAC7BV,KAAK,OAAAC,EAAA,GAAU,OAAAoZ,EAAA,GAAM,EAAKs8nB,aAAc,EAAKC,gBAC7C11oB,UAAU,WAGN,EAAKo1oB,OAAU,EAAKD,OAAwC,IAA/B,EAAKC,MAAMxxoB,SAAS3D,SAC9C,EAAKm1oB,OAAS,EAAKx3mB,QAAQ9R,YAC3B,EAAKqqnB,eAAe,EAAKf,MAAO,EAAKx3mB,QAAQ9R,YAAY,GAEzD,EAAKqpnB,OAAS,EAAKA,MAAMzwmB,gBACzB,EAAKoxmB,oBAAsB,EAAKX,MAAMzwmB,cACtC,EAAKoxmB,oBAAoBv4nB,YAAY,EAAK43nB,QAE9CrliB,EAAap+F,qB,oCAM7B,WACI,IAAMmU,EAAiB/pB,KAAKkrB,gBACxBnB,IACAA,EAAektH,UACXltH,EAAehL,QACfgL,EAAehL,c,GAgBzBg8nB,EAAmB,8CAEnBhxc,EAAiB,gBAQjB,E,8BACF,WAAYp9K,EAAarf,EAAgBJ,EAAWC,EAAW64B,GAAiB,oBAC5EhmC,KAAKsN,eAAiBA,EACtBtN,KAAKkN,UAAYA,EACjBlN,KAAKmN,UAAYA,EACjBnN,KAAKgmC,kBAAoBA,EAEzBhmC,KAAKg7oB,qBAAuB,CAAEtxoB,MAAO,EAAGc,OAAQ,GAEhDxK,KAAKi7oB,WAAY,EAEjBj7oB,KAAKk7oB,UAAW,EAEhBl7oB,KAAKm7oB,gBAAiB,EAEtBn7oB,KAAKo7oB,wBAAyB,EAE9Bp7oB,KAAKq7oB,iBAAkB,EAEvBr7oB,KAAKs7oB,gBAAkB,EAEvBt7oB,KAAKu7oB,aAAe,GAEpBv7oB,KAAKw7oB,oBAAsB,GAE3Bx7oB,KAAKy7oB,iBAAmB,IAAIh4oB,EAAA,EAE5BzD,KAAKklJ,oBAAsBH,EAAA,EAAa79H,MAExClnB,KAAK07oB,SAAW,EAEhB17oB,KAAK6uX,SAAW,EAEhB7uX,KAAK27oB,qBAAuB,GAE5B37oB,KAAK21S,gBAAkB31S,KAAKy7oB,iBAC5Bz7oB,KAAKovB,UAAUzC,I,sBAGnB,WACI,OAAO3sB,KAAKw7oB,sB,oBAGhB,SAAOrsnB,GAAU,WAKbnvB,KAAK47oB,qBACLzsnB,EAAWk9F,YAAY1pH,UAAUE,IAAIk4oB,GACrC/6oB,KAAKyrB,YAAc0D,EACnBnvB,KAAK67oB,aAAe1snB,EAAWk9F,YAC/BrsH,KAAKs5oB,MAAQnqnB,EAAWtC,eACxB7sB,KAAKwf,aAAc,EACnBxf,KAAK87oB,kBAAmB,EACxB97oB,KAAK+7oB,cAAgB,KACrB/7oB,KAAKklJ,oBAAoBtvI,cACzB5V,KAAKklJ,oBAAsBllJ,KAAKsN,eAAeyC,SAAS7L,UAAU,WAI9D,EAAK43oB,kBAAmB,EACxB,EAAKnkmB,Y,mBAiBb,WAEI,IAAI33C,KAAKwf,aAAgBxf,KAAKmN,UAAU8K,UAMxC,IAAKjY,KAAK87oB,kBAAoB97oB,KAAKq7oB,iBAAmBr7oB,KAAK+7oB,cACvD/7oB,KAAKouB,0BADT,CAIApuB,KAAKg8oB,qBACLh8oB,KAAKi8oB,6BACLj8oB,KAAKk8oB,0BAILl8oB,KAAKm8oB,cAAgBn8oB,KAAKo8oB,2BAC1Bp8oB,KAAKq8oB,YAAcr8oB,KAAKs8oB,iBACxBt8oB,KAAKu8oB,aAAev8oB,KAAKs5oB,MAAM7uoB,wBAC/B,IAMIk7E,EA3BH,EAqBK62jB,EAAax8oB,KAAKq8oB,YAClB/sR,EAActvX,KAAKu8oB,aACnBE,EAAez8oB,KAAKm8oB,cAEpBO,EAAe,GAzBpB,cA8Be18oB,KAAKw7oB,qBA9BpB,IA8BD,2BAA0C,KAAjCt+d,EAAiC,QAElCy/d,EAAc38oB,KAAK48oB,gBAAgBJ,EAAYt/d,GAI/C2/d,EAAe78oB,KAAK88oB,iBAAiBH,EAAartR,EAAapyM,GAE/D6/d,EAAa/8oB,KAAKg9oB,eAAeH,EAAcvtR,EAAamtR,EAAcv/d,GAE9E,GAAI6/d,EAAWE,2BAGX,OAFAj9oB,KAAKi7oB,WAAY,OACjBj7oB,KAAKk9oB,eAAehge,EAAKy/d,GAKzB38oB,KAAKm9oB,8BAA8BJ,EAAYF,EAAcJ,GAG7DC,EAAa94oB,KAAK,CACdoG,SAAUkzK,EACVpqE,OAAQ6piB,EACRrtR,cACA8tR,gBAAiBp9oB,KAAKq9oB,0BAA0BV,EAAaz/d,OAOhEv3F,GAAYA,EAASo3jB,WAAWO,YAAcP,EAAWO,eAC1D33jB,EAAW,CAAEo3jB,aAAYF,eAAcF,cAAa3yoB,SAAUkzK,EAAKoyM,iBA9D1E,8BAmED,GAAIotR,EAAav4oB,OAAQ,CACrB,IADqB,EACjBo5oB,EAAU,KACVC,GAAa,EAFI,cAGHd,GAHG,IAGrB,2BAAgC,KAArB9ya,EAAqB,QACtB6za,EAAQ7za,EAAIwza,gBAAgB1zoB,MAAQkgO,EAAIwza,gBAAgB5yoB,QAAUo/N,EAAI5/N,SAAS05M,QAAU,GAC3F+5b,EAAQD,IACRA,EAAYC,EACZF,EAAU3za,IAPG,8BAYrB,OAFA5pO,KAAKi7oB,WAAY,OACjBj7oB,KAAKk9oB,eAAeK,EAAQvzoB,SAAUuzoB,EAAQzqiB,QAKlD,GAAI9yG,KAAKk7oB,SAIL,OAFAl7oB,KAAKi7oB,WAAY,OACjBj7oB,KAAKk9oB,eAAev3jB,EAAS37E,SAAU27E,EAASg3jB,aAKpD38oB,KAAKk9oB,eAAev3jB,EAAS37E,SAAU27E,EAASg3jB,gB,oBAEpD,WACI38oB,KAAKg8oB,qBACLh8oB,KAAK+7oB,cAAgB,KACrB/7oB,KAAK09oB,oBAAsB,KAC3B19oB,KAAKklJ,oBAAoBtvI,gB,qBAG7B,WACQ5V,KAAKwf,cAKLxf,KAAK67oB,cACLr6f,EAAaxhJ,KAAK67oB,aAAatwoB,MAAO,CAClCQ,IAAK,GACLE,KAAM,GACNC,MAAO,GACPF,OAAQ,GACRxB,OAAQ,GACRd,MAAO,GACPq5R,WAAY,GACZ46W,eAAgB,KAGpB39oB,KAAKs5oB,OACLt5oB,KAAKi8oB,6BAELj8oB,KAAKyrB,aACLzrB,KAAKyrB,YAAY4gG,YAAY1pH,UAAU6I,OAAOuvoB,GAElD/6oB,KAAK+e,SACL/e,KAAKy7oB,iBAAiB33oB,WACtB9D,KAAKyrB,YAAczrB,KAAK67oB,aAAe,KACvC77oB,KAAKwf,aAAc,K,iCAOvB,WACI,IAAKxf,KAAKwf,eAAiBxf,KAAKmN,WAAanN,KAAKmN,UAAU8K,WAAY,CACpEjY,KAAKq8oB,YAAcr8oB,KAAKs8oB,iBACxBt8oB,KAAKu8oB,aAAev8oB,KAAKs5oB,MAAM7uoB,wBAC/BzK,KAAKm8oB,cAAgBn8oB,KAAKo8oB,2BAC1B,IAAMzwH,EAAe3rhB,KAAK+7oB,eAAiB/7oB,KAAKw7oB,oBAAoB,GAC9DmB,EAAc38oB,KAAK48oB,gBAAgB58oB,KAAKq8oB,YAAa1wH,GAC3D3rhB,KAAKk9oB,eAAevxH,EAAcgxH,M,sCAQ1C,SAAyBiB,GAErB,OADA59oB,KAAKu7oB,aAAeqC,EACb59oB,O,2BAMX,SAAcqM,GAQV,OAPArM,KAAKw7oB,oBAAsBnvoB,GAGoB,IAA3CA,EAAUpD,QAAQjJ,KAAK+7oB,iBACvB/7oB,KAAK+7oB,cAAgB,MAEzB/7oB,KAAK47oB,qBACE57oB,O,gCAMX,SAAmB2tJ,GAEf,OADA3tJ,KAAKs7oB,gBAAkB3tf,EAChB3tJ,O,oCAGX,WAAgD,IAAzB69oB,IAAyB,yDAE5C,OADA79oB,KAAKo7oB,uBAAyByC,EACvB79oB,O,+BAGX,WAAsC,IAApB89oB,IAAoB,yDAElC,OADA99oB,KAAKm7oB,eAAiB2C,EACf99oB,O,sBAGX,WAAuB,IAAd+9oB,IAAc,yDAEnB,OADA/9oB,KAAKk7oB,SAAW6C,EACT/9oB,O,gCAQX,WAAkC,IAAf+yV,IAAe,yDAE9B,OADA/yV,KAAKq7oB,gBAAkBtoT,EAChB/yV,O,uBASX,SAAU8yG,GAEN,OADA9yG,KAAK0kM,QAAU5xF,EACR9yG,O,gCAMX,SAAmB6K,GAEf,OADA7K,KAAK07oB,SAAW7woB,EACT7K,O,gCAMX,SAAmB6K,GAEf,OADA7K,KAAK6uX,SAAWhkX,EACT7K,O,mCAUX,SAAsBs0C,GAElB,OADAt0C,KAAKg+oB,yBAA2B1pmB,EACzBt0C,O,6BAKX,SAAgBw8oB,EAAYt/d,GACxB,IAAI3hJ,EACJ,GAAmB,UAAf2hJ,EAAI3sJ,QAGJgL,EAAIihnB,EAAWvwoB,KAAQuwoB,EAAW9yoB,MAAQ,MAEzC,CACD,IAAMu0oB,EAASj+oB,KAAKwtX,SAAWgvR,EAAWtwoB,MAAQswoB,EAAWvwoB,KACvDiyoB,EAAOl+oB,KAAKwtX,SAAWgvR,EAAWvwoB,KAAOuwoB,EAAWtwoB,MAC1DqvB,EAAmB,SAAf2hJ,EAAI3sJ,QAAqB0tnB,EAASC,EAS1C,MAAO,CAAE3inB,IAAGjW,EANO,UAAf43J,EAAI1sJ,QACAgsnB,EAAWzwoB,IAAOywoB,EAAWhyoB,OAAS,EAGvB,OAAf0yK,EAAI1sJ,QAAmBgsnB,EAAWzwoB,IAAMywoB,EAAWxwoB,U,8BAQ/D,SAAiB2woB,EAAartR,EAAapyM,GAGvC,IAAIihe,EAkBJ,OAhBIA,EADgB,UAAhBjhe,EAAIzsJ,UACa6+V,EAAY5lX,MAAQ,EAEf,UAAjBwzK,EAAIzsJ,SACOzwB,KAAKwtX,UAAY8B,EAAY5lX,MAAQ,EAGrC1J,KAAKwtX,SAAW,GAAK8B,EAAY5lX,MAU9C,CACH6xB,EAAGohnB,EAAYphnB,EAAI4inB,EACnB74nB,EAAGq3nB,EAAYr3nB,GATC,UAAhB43J,EAAIxsJ,UACa4+V,EAAY9kX,OAAS,EAGN,OAAhB0yK,EAAIxsJ,SAAoB,GAAK4+V,EAAY9kX,W,4BASjE,SAAesjE,EAAOswkB,EAAgB72d,EAAUv9K,GAG5C,IAAMqf,EAAUg1nB,EAA6BD,GACvC7inB,EAASuyC,EAATvyC,EAAGjW,EAAMwoD,EAANxoD,EACL87K,EAAUphM,KAAKs+oB,WAAWt0oB,EAAU,KACpCq3L,EAAUrhM,KAAKs+oB,WAAWt0oB,EAAU,KAEpCo3L,IACA7lK,GAAK6lK,GAELC,IACA/7K,GAAK+7K,GAGT,IAEI3wC,EAAc,EAAIprI,EAClBqrI,EAAkBrrI,EAAI+D,EAAQ7e,OAAU+8K,EAAS/8K,OAEjD+zoB,EAAev+oB,KAAKw+oB,mBAAmBn1nB,EAAQ3f,MALhC,EAAI6xB,EACFA,EAAIlS,EAAQ3f,MAAS69K,EAAS79K,OAK/C+0oB,EAAgBz+oB,KAAKw+oB,mBAAmBn1nB,EAAQ7e,OAAQkmJ,EAAaC,GACrE2sf,EAAciB,EAAeE,EACjC,MAAO,CACHnB,cACAL,2BAA6B5znB,EAAQ3f,MAAQ2f,EAAQ7e,SAAY8yoB,EACjEoB,yBAA0BD,IAAkBp1nB,EAAQ7e,OACpDm0oB,2BAA4BJ,GAAgBl1nB,EAAQ3f,S,2CAS5D,SAA8BkgO,EAAK97J,EAAOy5G,GACtC,GAAIvnL,KAAKo7oB,uBAAwB,CAC7B,IAAMwD,EAAkBr3d,EAASv7K,OAAS8hE,EAAMxoD,EAC1Cg1E,EAAiBitF,EAASr7K,MAAQ4hE,EAAMvyC,EACxCyM,EAAY62mB,EAAc7+oB,KAAKyrB,YAAY2Z,YAAY4C,WACvDD,EAAW82mB,EAAc7+oB,KAAKyrB,YAAY2Z,YAAY2C,UAK5D,OAJoB6hM,EAAI80a,0BACN,MAAb12mB,GAAqBA,GAAa42mB,KACjBh1a,EAAI+0a,4BACT,MAAZ52mB,GAAoBA,GAAYuyD,GAGzC,OAAO,I,kCAaX,SAAqBnxF,EAAOi1oB,EAAgBn7f,GAIxC,GAAIjjJ,KAAK09oB,qBAAuB19oB,KAAKq7oB,gBACjC,MAAO,CACH9/mB,EAAGpyB,EAAMoyB,EAAIv7B,KAAK09oB,oBAAoBninB,EACtCjW,EAAGnc,EAAMmc,EAAItlB,KAAK09oB,oBAAoBp4nB,GAK9C,IASIw5nB,EACAC,EAVE11nB,EAAUg1nB,EAA6BD,GACvC72d,EAAWvnL,KAAKm8oB,cAGhB6C,EAAgBzgoB,KAAKukC,IAAI35C,EAAMoyB,EAAIlS,EAAQ3f,MAAQ69K,EAAS79K,MAAO,GACnEu1oB,EAAiB1goB,KAAKukC,IAAI35C,EAAMmc,EAAI+D,EAAQ7e,OAAS+8K,EAAS/8K,OAAQ,GACtE00oB,EAAc3goB,KAAKukC,IAAIykI,EAASx7K,IAAMk3I,EAAel3I,IAAM5C,EAAMmc,EAAG,GACpE65nB,EAAe5goB,KAAKukC,IAAIykI,EAASt7K,KAAOg3I,EAAeh3I,KAAO9C,EAAMoyB,EAAG,GAoB7E,OADAv7B,KAAK09oB,oBAAsB,CAAEninB,EAXzBujnB,EADAz1nB,EAAQ3f,OAAS69K,EAAS79K,MAClBy1oB,IAAiBH,EAGjB71oB,EAAMoyB,EAAIv7B,KAAKs7oB,gBAAmB/zd,EAASt7K,KAAOg3I,EAAeh3I,KAAQ9C,EAAMoyB,EAAI,EAQxDjW,EALnCy5nB,EADA11nB,EAAQ7e,QAAU+8K,EAAS/8K,OACnB00oB,IAAgBD,EAGhB91oB,EAAMmc,EAAItlB,KAAKs7oB,gBAAmB/zd,EAASx7K,IAAMk3I,EAAel3I,IAAO5C,EAAMmc,EAAI,GAGtF,CACHiW,EAAGpyB,EAAMoyB,EAAIujnB,EACbx5nB,EAAGnc,EAAMmc,EAAIy5nB,K,4BAQrB,SAAe/0oB,EAAU2yoB,GAYrB,GAXA38oB,KAAKo/oB,oBAAoBp1oB,GACzBhK,KAAKq/oB,yBAAyB1C,EAAa3yoB,GAC3ChK,KAAKs/oB,sBAAsB3C,EAAa3yoB,GACpCA,EAASgmB,YACThwB,KAAKu/oB,iBAAiBv1oB,EAASgmB,YAGnChwB,KAAK+7oB,cAAgB/xoB,EAIjBhK,KAAKy7oB,iBAAiBj0f,UAAUrjJ,OAAQ,CACxC,IAAMyxS,EAA2B51S,KAAKw/oB,uBAChCC,EAAc,IAAI,EAA+Bz1oB,EAAU4rS,GACjE51S,KAAKy7oB,iBAAiB53oB,KAAK47oB,GAE/Bz/oB,KAAK87oB,kBAAmB,I,iCAG5B,SAAoB9xoB,GAChB,GAAKhK,KAAKg+oB,yBAAV,CAGA,IACI0B,EADE10oB,EAAWhL,KAAK67oB,aAAa9viB,iBAAiB/rG,KAAKg+oB,0BAErD2B,EAAU31oB,EAAS0mB,SAEnBgvnB,EADsB,WAAtB11oB,EAASymB,SACC,SAELzwB,KAAKwtX,SACsB,UAAtBxjX,EAASymB,SAAuB,QAAU,OAGpB,UAAtBzmB,EAASymB,SAAuB,OAAS,QAEvD,IAAK,IAAI5oB,EAAI,EAAGA,EAAImD,EAAS7G,OAAQ0D,IACjCmD,EAASnD,GAAG0D,MAAMq0oB,gBAAlB,UAAuCF,EAAvC,YAAkDC,M,uCAS1D,SAA0B7siB,EAAQ9oG,GAC9B,IAEIQ,EAAQuB,EAAKC,EAgCbtC,EAAOuC,EAAMC,EAlCXq7K,EAAWvnL,KAAKm8oB,cAChBjzoB,EAAQlJ,KAAKwtX,SAEnB,GAA0B,QAAtBxjX,EAAS0mB,SAGTlmB,EAAS+8K,EAAS/8K,QADlBuB,EAAM+mG,EAAOxtF,GACoBtlB,KAAKs7oB,qBAErC,GAA0B,WAAtBtxoB,EAAS0mB,SAKdlmB,EAAS+8K,EAAS/8K,QADlBwB,EAASu7K,EAAS/8K,OAASsoG,EAAOxtF,EAA2B,EAAvBtlB,KAAKs7oB,iBACPt7oB,KAAKs7oB,oBAExC,CAKD,IAAMuE,EAAiCthoB,KAAKG,IAAI6oK,EAASv7K,OAAS8mG,EAAOxtF,EAAIiiK,EAASx7K,IAAK+mG,EAAOxtF,GAC5Fw6nB,EAAiB9/oB,KAAKg7oB,qBAAqBxwoB,OAEjDuB,EAAM+mG,EAAOxtF,EAAIu6nB,GADjBr1oB,EAA0C,EAAjCq1oB,GAEIC,IAAmB9/oB,KAAK87oB,mBAAqB97oB,KAAKm7oB,iBAC3DpvoB,EAAM+mG,EAAOxtF,EAAKw6nB,EAAiB,GAU3C,GAH2D,QAAtB91oB,EAASymB,WAAuBvnB,GAC1C,UAAtBc,EAASymB,UAAwBvnB,EAGlCgD,EAAQq7K,EAAS79K,MAAQopG,EAAOv3E,EAAIv7B,KAAKs7oB,gBACzC5xoB,EAAQopG,EAAOv3E,EAAIv7B,KAAKs7oB,qBAEvB,GAVuD,UAAtBtxoB,EAASymB,WAAyBvnB,GAC7C,QAAtBc,EAASymB,UAAsBvnB,EAUhC+C,EAAO6mG,EAAOv3E,EACd7xB,EAAQ69K,EAASr7K,MAAQ4mG,EAAOv3E,MAE/B,CAKD,IAAM,EAAiChd,KAAKG,IAAI6oK,EAASr7K,MAAQ4mG,EAAOv3E,EAAIgsJ,EAASt7K,KAAM6mG,EAAOv3E,GAC5FwknB,EAAgB//oB,KAAKg7oB,qBAAqBtxoB,MAEhDuC,EAAO6mG,EAAOv3E,EAAI,GADlB7xB,EAAyC,EAAjC,GAEIq2oB,IAAkB//oB,KAAK87oB,mBAAqB97oB,KAAKm7oB,iBACzDlvoB,EAAO6mG,EAAOv3E,EAAKwknB,EAAgB,GAG3C,MAAO,CAAEh0oB,IAAKA,EAAKE,KAAMA,EAAMD,OAAQA,EAAQE,MAAOA,EAAOxC,QAAOc,Y,mCASxE,SAAsBsoG,EAAQ9oG,GAC1B,IAAMozoB,EAAkBp9oB,KAAKq9oB,0BAA0BvqiB,EAAQ9oG,GAG1DhK,KAAK87oB,kBAAqB97oB,KAAKm7oB,iBAChCiC,EAAgB5yoB,OAAS+T,KAAKG,IAAI0+nB,EAAgB5yoB,OAAQxK,KAAKg7oB,qBAAqBxwoB,QACpF4yoB,EAAgB1zoB,MAAQ6U,KAAKG,IAAI0+nB,EAAgB1zoB,MAAO1J,KAAKg7oB,qBAAqBtxoB,QAEtF,IAAMoP,EAAS,GACf,GAAI9Y,KAAKggpB,oBACLlnoB,EAAO/M,IAAM+M,EAAO7M,KAAO,IAC3B6M,EAAO9M,OAAS8M,EAAO5M,MAAQ4M,EAAOmvB,UAAYnvB,EAAOooB,SAAW,GACpEpoB,EAAOpP,MAAQoP,EAAOtO,OAAS,WAE9B,CACD,IAAMy9B,EAAYjoC,KAAKyrB,YAAY2Z,YAAY6C,UACzC/G,EAAWlhC,KAAKyrB,YAAY2Z,YAAYlE,SAC9CpoB,EAAOtO,OAAS,YAAoB4yoB,EAAgB5yoB,QACpDsO,EAAO/M,IAAM,YAAoBqxoB,EAAgBrxoB,KACjD+M,EAAO9M,OAAS,YAAoBoxoB,EAAgBpxoB,QACpD8M,EAAOpP,MAAQ,YAAoB0zoB,EAAgB1zoB,OACnDoP,EAAO7M,KAAO,YAAoBmxoB,EAAgBnxoB,MAClD6M,EAAO5M,MAAQ,YAAoBkxoB,EAAgBlxoB,OAG/C4M,EAAOiqR,WADe,WAAtB/4R,EAASymB,SACW,SAGsB,QAAtBzmB,EAASymB,SAAqB,WAAa,aAG/D3X,EAAO6koB,eADe,WAAtB3zoB,EAAS0mB,SACe,SAGsB,WAAtB1mB,EAAS0mB,SAAwB,WAAa,aAEtEuX,IACAnvB,EAAOmvB,UAAY,YAAoBA,IAEvC/G,IACApoB,EAAOooB,SAAW,YAAoBA,IAG9ClhC,KAAKg7oB,qBAAuBoC,EAC5B57f,EAAaxhJ,KAAK67oB,aAAatwoB,MAAOuN,K,qCAG1C,WACI0oI,EAAaxhJ,KAAK67oB,aAAatwoB,MAAO,CAClCQ,IAAK,IACLE,KAAM,IACNC,MAAO,IACPF,OAAQ,IACRxB,OAAQ,GACRd,MAAO,GACPq5R,WAAY,GACZ46W,eAAgB,O,wCAIxB,WACIn8f,EAAaxhJ,KAAKs5oB,MAAM/toB,MAAO,CAC3BQ,IAAK,GACLE,KAAM,GACND,OAAQ,GACRE,MAAO,GACPlC,SAAU,GACV23B,UAAW,O,sCAInB,SAAyBg7mB,EAAa3yoB,GAClC,IAAM8O,EAAS,GACTmnoB,EAAmBjgpB,KAAKggpB,oBACxBE,EAAwBlgpB,KAAKo7oB,uBAC7BhjnB,EAASp4B,KAAKyrB,YAAY2Z,YAChC,GAAI66mB,EAAkB,CAClB,IAAMh9f,EAAiBjjJ,KAAKsN,eAAe41I,4BAC3C1B,EAAa1oI,EAAQ9Y,KAAKmgpB,kBAAkBn2oB,EAAU2yoB,EAAa15f,IACnEzB,EAAa1oI,EAAQ9Y,KAAKogpB,kBAAkBp2oB,EAAU2yoB,EAAa15f,SAGnEnqI,EAAO9O,SAAW,SAOtB,IAAIq2oB,EAAkB,GAClBj/c,EAAUphM,KAAKs+oB,WAAWt0oB,EAAU,KACpCq3L,EAAUrhM,KAAKs+oB,WAAWt0oB,EAAU,KACpCo3L,IACAi/c,GAAmB,cAAJ,OAAkBj/c,EAAlB,SAEfC,IACAg/c,GAAmB,cAAJ,OAAkBh/c,EAAlB,QAEnBvoL,EAAO6oB,UAAY0+mB,EAAgBvjoB,OAM/Bsb,EAAO6P,YACHg4mB,EACAnnoB,EAAOmvB,UAAY,YAAoB7P,EAAO6P,WAEzCi4mB,IACLpnoB,EAAOmvB,UAAY,KAGvB7P,EAAO8I,WACH++mB,EACAnnoB,EAAOooB,SAAW,YAAoB9I,EAAO8I,UAExCg/mB,IACLpnoB,EAAOooB,SAAW,KAG1BsgH,EAAaxhJ,KAAKs5oB,MAAM/toB,MAAOuN,K,+BAGnC,SAAkB9O,EAAU2yoB,EAAa15f,GAGrC,IAAInqI,EAAS,CAAE/M,IAAK,GAAIC,OAAQ,IAC5B6woB,EAAe78oB,KAAK88oB,iBAAiBH,EAAa38oB,KAAKu8oB,aAAcvyoB,GACrEhK,KAAKi7oB,YACL4B,EAAe78oB,KAAKsgpB,qBAAqBzD,EAAc78oB,KAAKu8oB,aAAct5f,IAE9E,IAAIs9f,EAAwBvgpB,KAAKgmC,kBAAkB2C,sBAAsBl+B,wBAAwBsB,IAiBjG,OAZA8woB,EAAav3nB,GAAKi7nB,EAGQ,WAAtBv2oB,EAAS0mB,SAIT5X,EAAO9M,OAAP,UADuBhM,KAAKkN,UAAUsnC,gBAAgBq+B,cACjBgqkB,EAAav3nB,EAAItlB,KAAKu8oB,aAAa/xoB,QAAxE,MAGAsO,EAAO/M,IAAM,YAAoB8woB,EAAav3nB,GAE3CxM,I,+BAGX,SAAkB9O,EAAU2yoB,EAAa15f,GAGrC,IAAInqI,EAAS,CAAE7M,KAAM,GAAIC,MAAO,IAC5B2woB,EAAe78oB,KAAK88oB,iBAAiBH,EAAa38oB,KAAKu8oB,aAAcvyoB,GAwBzE,OAvBIhK,KAAKi7oB,YACL4B,EAAe78oB,KAAKsgpB,qBAAqBzD,EAAc78oB,KAAKu8oB,aAAct5f,IAe9C,UAR5BjjJ,KAAKwtX,SAC2C,QAAtBxjX,EAASymB,SAAqB,OAAS,QAGjB,QAAtBzmB,EAASymB,SAAqB,QAAU,QAMlE3X,EAAO5M,MAAP,UADsBlM,KAAKkN,UAAUsnC,gBAAgBu+B,aAClB8pkB,EAAathnB,EAAIv7B,KAAKu8oB,aAAa7yoB,OAAtE,MAGAoP,EAAO7M,KAAO,YAAoB4woB,EAAathnB,GAE5CziB,I,kCAMX,WAEI,IAAM0noB,EAAexgpB,KAAKs8oB,iBACpBmE,EAAgBzgpB,KAAKs5oB,MAAM7uoB,wBAI3Bi2oB,EAAwB1gpB,KAAKu7oB,aAAa9xoB,IAAI,SAAA+vJ,GAChD,OAAOA,EAAWC,gBAAgB72J,cAAc6H,0BAEpD,MAAO,CACHk2oB,gBAAiB1I,EAA4BuI,EAAcE,GAC3DE,oBAAqB9I,EAA6B0I,EAAcE,GAChE7qW,iBAAkBoiW,EAA4BwI,EAAeC,GAC7DG,qBAAsB/I,EAA6B2I,EAAeC,M,gCAI1E,SAAmBv8oB,GAAoB,2BAAT28oB,EAAS,iCAATA,EAAS,kBACnC,OAAOA,EAAUrroB,OAAO,SAACrQ,EAAc27oB,GACnC,OAAO37oB,EAAemZ,KAAKukC,IAAIi+lB,EAAiB,IACjD58oB,K,sCAGP,WAMI,IAAMuF,EAAQ1J,KAAKkN,UAAUsnC,gBAAgBu+B,YACvCvoE,EAASxK,KAAKkN,UAAUsnC,gBAAgBq+B,aACxCowE,EAAiBjjJ,KAAKsN,eAAe41I,4BAC3C,MAAO,CACHn3I,IAAKk3I,EAAel3I,IAAM/L,KAAKs7oB,gBAC/BrvoB,KAAMg3I,EAAeh3I,KAAOjM,KAAKs7oB,gBACjCpvoB,MAAO+2I,EAAeh3I,KAAOvC,EAAQ1J,KAAKs7oB,gBAC1CtvoB,OAAQi3I,EAAel3I,IAAMvB,EAASxK,KAAKs7oB,gBAC3C5xoB,MAAOA,EAAS,EAAI1J,KAAKs7oB,gBACzB9woB,OAAQA,EAAU,EAAIxK,KAAKs7oB,mB,oBAInC,WACI,MAA2C,QAApCt7oB,KAAKyrB,YAAYkvnB,iB,+BAG5B,WACI,OAAQ36oB,KAAKo7oB,wBAA0Bp7oB,KAAKi7oB,Y,wBAGhD,SAAWjxoB,EAAU2oN,GACjB,MAAa,MAATA,EAG2B,MAApB3oN,EAASo3L,QAAkBphM,KAAK07oB,SAAW1xoB,EAASo3L,QAEpC,MAApBp3L,EAASq3L,QAAkBrhM,KAAK6uX,SAAW7kX,EAASq3L,U,gCAG/D,c,8BAgBA,SAAiB++L,GAAU,WACnBpgY,KAAKs5oB,OACL,YAAYl5Q,GAAY/sX,QAAQ,SAAAsgX,GACX,KAAbA,IAAoE,IAAjD,EAAKgoR,qBAAqB1yoB,QAAQ0qX,KACrD,EAAKgoR,qBAAqB/3oB,KAAK+vX,GAC/B,EAAK2lR,MAAM32oB,UAAUE,IAAI8wX,Q,gCAMzC,WAAkB,WACV3zX,KAAKs5oB,QACLt5oB,KAAK27oB,qBAAqBtooB,QAAQ,SAAAsgX,GAC9B,EAAK2lR,MAAM32oB,UAAU6I,OAAOmoX,KAEhC3zX,KAAK27oB,qBAAuB,M,4BAIpC,WACI,IAAM7oiB,EAAS9yG,KAAK0kM,QACpB,GAAI5xF,aAAkB,IAClB,OAAOA,EAAOlwG,cAAc6H,wBAGhC,GAAIqoG,aAAkB8L,QAClB,OAAO9L,EAAOroG,wBAElB,IAAMf,EAAQopG,EAAOppG,OAAS,EACxBc,EAASsoG,EAAOtoG,QAAU,EAEhC,MAAO,CACHuB,IAAK+mG,EAAOxtF,EACZtZ,OAAQ8mG,EAAOxtF,EAAI9a,EACnByB,KAAM6mG,EAAOv3E,EACbrvB,MAAO4mG,EAAOv3E,EAAI7xB,EAClBc,SACAd,a,GAKZ,SAAS83I,EAAa/kH,EAAalW,GAC/B,IAAK,IAAI5J,KAAO4J,EACRA,EAAOmnB,eAAe/wB,KACtB8f,EAAY9f,GAAO4J,EAAO5J,IAGlC,OAAO8f,EAMX,SAASoinB,EAAcrgmB,GACnB,GAAqB,iBAAVA,GAA+B,MAATA,EAAe,CAC5C,MAAuBA,EAAMj8B,MAAMwnL,GAAnC,mBAAcgB,EAAd,KACA,OAASA,GAAmB,OAAVA,EAAsC,KAApBl9K,WADpC,MAGJ,OAAO2wB,GAAS,KAQpB,SAAS6/lB,EAA6B77f,GAClC,MAAO,CACHz2I,IAAKwS,KAAKs7B,MAAM2oG,EAAWz2I,KAC3BG,MAAOqS,KAAKs7B,MAAM2oG,EAAWt2I,OAC7BF,OAAQuS,KAAKs7B,MAAM2oG,EAAWx2I,QAC9BC,KAAMsS,KAAKs7B,MAAM2oG,EAAWv2I,MAC5BvC,MAAO6U,KAAKs7B,MAAM2oG,EAAW94I,OAC7Bc,OAAQ+T,KAAKs7B,MAAM2oG,EAAWh4I,S,IAoBhC,E,8BACF,WAAYw2oB,EAAWC,EAAYt0nB,EAAau0nB,EAAev2mB,EAAU3jB,EAAU0hB,GAAgB,oBAE/F1oC,KAAKw7oB,oBAAsB,GAK3Bx7oB,KAAKurB,kBAAoB,IAAI,EAAkCoB,EAAau0nB,EAAev2mB,EAAU3jB,EAAU0hB,GAC1GtY,wBAAuB,GACvBC,UAAS,GACTolR,mBAAmB,GACxBz1S,KAAKmhpB,qBAAqBH,EAAWC,GACrCjhpB,KAAKohpB,iBAAmBphpB,KAAKurB,kBAAkBoqR,iB,sBAGnD,WACI,OAAO31S,KAAKw7oB,sB,oBAGhB,SAAOrsnB,GACHnvB,KAAKyrB,YAAc0D,EACnBnvB,KAAKurB,kBAAkBzM,OAAOqQ,GAC1BnvB,KAAKulJ,aACLp2H,EAAWkynB,aAAarhpB,KAAKulJ,YAC7BvlJ,KAAKulJ,WAAa,Q,qBAI1B,WACIvlJ,KAAKurB,kBAAkBkD,Y,oBAG3B,WACIzuB,KAAKurB,kBAAkBxM,W,mBAO3B,WACI/e,KAAKurB,kBAAkBosB,U,qCAO3B,WACI33C,KAAKurB,kBAAkB6C,wB,sCAO3B,SAAyBwvnB,GACrB59oB,KAAKurB,kBAAkBmqR,yBAAyBkoW,K,kCAOpD,SAAqBoD,EAAWC,EAAY7/c,EAASC,GACjD,IAAMr3L,EAAW,IAAI,EAAuBg3oB,EAAWC,EAAY7/c,EAASC,GAG5E,OAFArhM,KAAKw7oB,oBAAoB53oB,KAAKoG,GAC9BhK,KAAKurB,kBAAkBsF,cAAc7wB,KAAKw7oB,qBACnCx7oB,O,2BAMX,SAAcsL,GAUV,OANItL,KAAKyrB,YACLzrB,KAAKyrB,YAAY41nB,aAAa/1oB,GAG9BtL,KAAKulJ,WAAaj6I,EAEftL,O,yBAMX,SAAY6K,GAER,OADA7K,KAAKurB,kBAAkB+1nB,mBAAmBz2oB,GACnC7K,O,yBAMX,SAAY6K,GAER,OADA7K,KAAKurB,kBAAkBg2nB,mBAAmB12oB,GACnC7K,O,gCAQX,SAAmB+yV,GAEf,OADA/yV,KAAKurB,kBAAkB4rT,mBAAmB4b,GACnC/yV,O,2BAMX,SAAcqM,GAGV,OAFArM,KAAKw7oB,oBAAsBnvoB,EAAU7C,QACrCxJ,KAAKurB,kBAAkBsF,cAAc7wB,KAAKw7oB,qBACnCx7oB,O,uBAMX,SAAU8yG,GAEN,OADA9yG,KAAKurB,kBAAkB6D,UAAU0jF,GAC1B9yG,S,GAYTwhpB,GAAe,6BAOf,G,8BACF,iCACIxhpB,KAAKyhpB,aAAe,SACpBzhpB,KAAK0hpB,WAAa,GAClB1hpB,KAAK2hpB,cAAgB,GACrB3hpB,KAAK4hpB,YAAc,GACnB5hpB,KAAK6hpB,aAAe,GACpB7hpB,KAAK8hpB,YAAc,GACnB9hpB,KAAK+hpB,gBAAkB,GACvB/hpB,KAAKgipB,OAAS,GACdhipB,KAAKiipB,QAAU,I,qBAEnB,SAAO9ynB,GACH,IAAMiJ,EAASjJ,EAAWiW,YAC1BplC,KAAKyrB,YAAc0D,EACfnvB,KAAKgipB,SAAW5pnB,EAAO1uB,OACvBylB,EAAWG,WAAW,CAAE5lB,MAAO1J,KAAKgipB,SAEpChipB,KAAKiipB,UAAY7pnB,EAAO5tB,QACxB2kB,EAAWG,WAAW,CAAE9kB,OAAQxK,KAAKiipB,UAEzC9ynB,EAAWk9F,YAAY1pH,UAAUE,IAAI2+oB,IACrCxhpB,KAAKwf,aAAc,I,iBAMvB,WAAc,IAAVje,EAAU,uDAAF,GAIR,OAHAvB,KAAK2hpB,cAAgB,GACrB3hpB,KAAK0hpB,WAAangpB,EAClBvB,KAAK8hpB,YAAc,aACZ9hpB,O,kBAMX,WAAe,IAAVuB,EAAU,uDAAF,GAIT,OAHAvB,KAAK6hpB,aAAe,GACpB7hpB,KAAK4hpB,YAAcrgpB,EACnBvB,KAAK+hpB,gBAAkB,aAChB/hpB,O,oBAMX,WAAiB,IAAVuB,EAAU,uDAAF,GAIX,OAHAvB,KAAK0hpB,WAAa,GAClB1hpB,KAAK2hpB,cAAgBpgpB,EACrBvB,KAAK8hpB,YAAc,WACZ9hpB,O,mBAMX,WAAgB,IAAVuB,EAAU,uDAAF,GAIV,OAHAvB,KAAK4hpB,YAAc,GACnB5hpB,KAAK6hpB,aAAetgpB,EACpBvB,KAAK+hpB,gBAAkB,WAChB/hpB,O,mBAQX,WAAgB,IAAVuB,EAAU,uDAAF,GAOV,OANIvB,KAAKyrB,YACLzrB,KAAKyrB,YAAY6D,WAAW,CAAE5lB,MAAOnI,IAGrCvB,KAAKgipB,OAASzgpB,EAEXvB,O,oBAQX,WAAiB,IAAVuB,EAAU,uDAAF,GAOX,OANIvB,KAAKyrB,YACLzrB,KAAKyrB,YAAY6D,WAAW,CAAE9kB,OAAQjJ,IAGtCvB,KAAKiipB,QAAU1gpB,EAEZvB,O,gCAQX,WAA8B,IAAX6K,EAAW,uDAAF,GAGxB,OAFA7K,KAAKiM,KAAKpB,GACV7K,KAAK+hpB,gBAAkB,SAChB/hpB,O,8BAQX,WAA4B,IAAX6K,EAAW,uDAAF,GAGtB,OAFA7K,KAAK+L,IAAIlB,GACT7K,KAAK8hpB,YAAc,SACZ9hpB,O,mBAMX,WAII,GAAKA,KAAKyrB,aAAgBzrB,KAAKyrB,YAAYxL,cAA3C,CAGA,IAAMnH,EAAS9Y,KAAKyrB,YAAYoB,eAAethB,MACzC22oB,EAAelipB,KAAKyrB,YAAY4gG,YAAY9gH,MAC5C6sB,EAASp4B,KAAKyrB,YAAY2Z,YACxB17B,EAAuC0uB,EAAvC1uB,MAAOc,EAAgC4tB,EAAhC5tB,OAAQ02B,EAAwB9I,EAAxB8I,SAAU+G,EAAc7P,EAAd6P,UAC3Bk6mB,IAAuC,SAAVz4oB,GAA8B,UAAVA,GACjDw3B,GAAyB,SAAbA,GAAoC,UAAbA,GACnCkhnB,IAAsC,SAAX53oB,GAAgC,UAAXA,GAChDy9B,GAA2B,SAAdA,GAAsC,UAAdA,GAC3CnvB,EAAO9O,SAAWhK,KAAKyhpB,aACvB3ooB,EAAOytF,WAAa47iB,EAA4B,IAAMnipB,KAAK4hpB,YAC3D9ooB,EAAO+zG,UAAYu1hB,EAA0B,IAAMpipB,KAAK0hpB,WACxD5ooB,EAAO2tF,aAAezmG,KAAK2hpB,cAC3B7ooB,EAAO0tF,YAAcxmG,KAAK6hpB,aACtBM,EACAD,EAAavE,eAAiB,aAEA,WAAzB39oB,KAAK+hpB,gBACVG,EAAavE,eAAiB,SAEkB,QAA3C39oB,KAAKyrB,YAAY2Z,YAAYp+B,UAKL,eAAzBhH,KAAK+hpB,gBACLG,EAAavE,eAAiB,WAEA,aAAzB39oB,KAAK+hpB,kBACVG,EAAavE,eAAiB,cAIlCuE,EAAavE,eAAiB39oB,KAAK+hpB,gBAEvCG,EAAan/W,WAAaq/W,EAA0B,aAAepipB,KAAK8hpB,e,qBAM5E,WACI,IAAI9hpB,KAAKwf,aAAgBxf,KAAKyrB,YAA9B,CAGA,IAAM3S,EAAS9Y,KAAKyrB,YAAYoB,eAAethB,MACzCq7B,EAAS5mC,KAAKyrB,YAAY4gG,YAC1B61hB,EAAet7mB,EAAOr7B,MAC5Bq7B,EAAOjkC,UAAU6I,OAAOg2oB,IACxBU,EAAavE,eAAiBuE,EAAan/W,WAAajqR,EAAO+zG,UAC3D/zG,EAAO2tF,aAAe3tF,EAAOytF,WAAaztF,EAAO0tF,YAAc1tF,EAAO9O,SAAW,GACrFhK,KAAKyrB,YAAc,KACnBzrB,KAAKwf,aAAc,O,qBAYrB6ioB,E,8BACF,WAAY/0oB,EAAgBJ,EAAWC,EAAW64B,GAAiB,oBAC/DhmC,KAAKsN,eAAiBA,EACtBtN,KAAKkN,UAAYA,EACjBlN,KAAKmN,UAAYA,EACjBnN,KAAKgmC,kBAAoBA,G,qBAK7B,WACI,OAAO,IAAI,K,yBAUf,SAAYtjC,EAAYs+oB,EAAWC,GAC/B,OAAO,IAAI,EAA0BD,EAAWC,EAAYv+oB,EAAY1C,KAAKsN,eAAgBtN,KAAKkN,UAAWlN,KAAKmN,UAAWnN,KAAKgmC,qB,iCAMtI,SAAoB8sE,GAChB,OAAO,IAAI,EAAkCA,EAAQ9yG,KAAKsN,eAAgBtN,KAAKkN,UAAWlN,KAAKmN,UAAWnN,KAAKgmC,uB,UAGvHq8mB,EAAuB9hpB,UAAO,SAAwCC,GAAK,OAAO,IAAKA,GAAK6hpB,GAAwB,KAAgB,KAAuB,KAAgB,KAAW,KAAgB,KAAkB,KAAgB,KACxOA,EAAuBz9oB,WAAQ,aAAmB,CAAEE,QAAS,WAA4C,OAAO,IAAIu9oB,EAAuB,aAAS,KAAgB,aAAS,KAAW,aAAS,KAAW,aAAS,KAAuBx9oB,MAAOw9oB,EAAwBz7nB,WAAY,S,KAuBnRgrF,GAAe,E,kBAWb0wiB,E,8BACF,WAEAh5nB,EAAkB0c,EAAmB3lB,EAA2BkioB,EAAkBhJ,EAAqB1zmB,EAAWviC,EAAS4J,EAAWs1oB,EAAiB5/X,EAAW42X,GAAuB,oBACrLx5oB,KAAKspB,iBAAmBA,EACxBtpB,KAAKgmC,kBAAoBA,EACzBhmC,KAAKqgB,0BAA4BA,EACjCrgB,KAAKuipB,iBAAmBA,EACxBvipB,KAAKu5oB,oBAAsBA,EAC3Bv5oB,KAAK6lC,UAAYA,EACjB7lC,KAAKsD,QAAUA,EACftD,KAAKkN,UAAYA,EACjBlN,KAAKwipB,gBAAkBA,EACvBxipB,KAAK4iR,UAAYA,EACjB5iR,KAAKw5oB,wBAA0BA,G,qBAOnC,SAAOphnB,GACH,IAAMxZ,EAAO5e,KAAKyipB,qBACZC,EAAO1ipB,KAAK2ipB,mBAAmB/joB,GAC/BgkoB,EAAe5ipB,KAAK6ipB,oBAAoBH,GACxC96mB,EAAgB,IAAI,EAAcxP,GAExC,OADAwP,EAAc5gC,UAAY4gC,EAAc5gC,WAAahH,KAAKwipB,gBAAgBjhpB,MACnE,IAAI,EAAWqhpB,EAAchkoB,EAAM8joB,EAAM96mB,EAAe5nC,KAAKsD,QAAStD,KAAKu5oB,oBAAqBv5oB,KAAKkN,UAAWlN,KAAK4iR,UAAW5iR,KAAKw5oB,2B,sBAOhJ,WACI,OAAOx5oB,KAAKuipB,mB,gCAMhB,SAAmB3joB,GACf,IAAM8joB,EAAO1ipB,KAAKkN,UAAU2K,cAAc,OAI1C,OAHA6qoB,EAAK18nB,GAAL,sBAAyB4rF,MACzB8wiB,EAAK//oB,UAAUE,IAAI,oBACnB+b,EAAK9G,YAAY4qoB,GACVA,I,gCAOX,WACI,IAAM9joB,EAAO5e,KAAKkN,UAAU2K,cAAc,OAE1C,OADA7X,KAAKgmC,kBAAkB2C,sBAAsB7wB,YAAY8G,GAClDA,I,iCAOX,SAAoB8joB,GAMhB,OAHK1ipB,KAAKsgB,UACNtgB,KAAKsgB,QAAUtgB,KAAK6lC,UAAU3zB,IAAI,MAE/B,IAAI,IAAgBwwoB,EAAM1ipB,KAAKqgB,0BAA2BrgB,KAAKsgB,QAAStgB,KAAK6lC,UAAW7lC,KAAKkN,e,UAG5Go1oB,EAAQ/hpB,UAAO,SAAyBC,GAAK,OAAO,IAAKA,GAAK8hpB,GAAS,KAAgB,GAAwB,KAAgB,GAAmB,KAAgB,KAAkC,KAAgB,IAAyB,KAAgB,GAA4B,KAAgB,KAAkB,KAAgB,KAAgB,KAAgB,KAAW,KAAgB,KAAwB,KAAgB,KAAkB,KAAgB,KAChdA,EAAQ19oB,WAAQ,KAA0B,CAAEC,MAAOy9oB,EAASx9oB,QAASw9oB,EAAQ/hpB,Y,KA6BvEuipB,GAAsB,CACxB,CACIvynB,QAAS,QACTC,QAAS,SACTC,SAAU,QACVC,SAAU,OAEd,CACIH,QAAS,QACTC,QAAS,MACTC,SAAU,QACVC,SAAU,UAEd,CACIH,QAAS,MACTC,QAAS,MACTC,SAAU,MACVC,SAAU,UAEd,CACIH,QAAS,MACTC,QAAS,SACTC,SAAU,MACVC,SAAU,QAIZqynB,GAAwC,IAAI,IAAe,yC,kBAK3DC,E,YACF,WAEAtgpB,GAAU,oBACN1C,KAAK0C,WAAaA,I,OAG1BsgpB,EAAiBzipB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKwipB,GAAkB,KAAyB,OAC3HA,EAAiBvipB,UAAO,KAAyB,CAAEC,KAAMsipB,EAAkBripB,UAAW,CAAC,CAAC,GAAI,qBAAsB,IAAK,CAAC,GAAI,iBAAkB,IAAK,CAAC,GAAI,mBAAoB,KAAM+X,SAAU,CAAC,sB,uBAevLuqoB,E,8BAEF,WAAYp5nB,EAAUjjB,EAAasY,EAAkBktW,EAAuBn/W,GAAI,oBAC5EjN,KAAK6pB,SAAWA,EAChB7pB,KAAKiN,KAAOA,EACZjN,KAAK2zU,cAAe,EACpB3zU,KAAKkjpB,eAAgB,EACrBljpB,KAAKm7oB,gBAAiB,EACtBn7oB,KAAKmjpB,qBAAsB,EAC3BnjpB,KAAKojpB,OAAQ,EACbpjpB,KAAKqjpB,sBAAwBt+f,EAAA,EAAa79H,MAC1ClnB,KAAKsjpB,oBAAsBv+f,EAAA,EAAa79H,MACxClnB,KAAKujpB,oBAAsBx+f,EAAA,EAAa79H,MACxClnB,KAAKwjpB,sBAAwBz+f,EAAA,EAAa79H,MAE1ClnB,KAAKyjpB,eAAiB,EAEtBzjpB,KAAKqrF,MAAO,EAEZrrF,KAAKihC,cAAe,EAEpBjhC,KAAKwkC,cAAgB,IAAI,IAEzBxkC,KAAKs7J,eAAiB,IAAI,IAE1Bt7J,KAAK8e,OAAS,IAAI,IAElB9e,KAAK+e,OAAS,IAAI,IAElB/e,KAAK0jpB,eAAiB,IAAI,IAE1B1jpB,KAAK2jpB,oBAAsB,IAAI,IAC/B3jpB,KAAK4jpB,gBAAkB,IAAI,IAAeh9oB,EAAasY,GACvDlf,KAAKitX,uBAAyBb,EAC9BpsX,KAAK+pB,eAAiB/pB,KAAKitX,0B,oBAG/B,WAAgB,OAAOjtX,KAAK07oB,U,IAC5B,SAAYt6c,GACRphM,KAAK07oB,SAAWt6c,EACZphM,KAAKm0S,WACLn0S,KAAK6jpB,wBAAwB7jpB,KAAKm0S,a,mBAI1C,WAAgB,OAAOn0S,KAAK6uX,U,IAC5B,SAAYxtL,GACRrhM,KAAK6uX,SAAWxtL,EACZrhM,KAAKm0S,WACLn0S,KAAK6jpB,wBAAwB7jpB,KAAKm0S,a,uBAI1C,WAAoB,OAAOn0S,KAAK2zU,c,IAChC,SAAgBpyU,GAASvB,KAAK2zU,aAAe,YAAsBpyU,K,wBAEnE,WAAqB,OAAOvB,KAAKkjpB,e,IACjC,SAAiB3hpB,GAASvB,KAAKkjpB,cAAgB,YAAsB3hpB,K,8BAErE,WAA2B,OAAOvB,KAAKmjpB,qB,IACvC,SAAuB5hpB,GACnBvB,KAAKmjpB,oBAAsB,YAAsB5hpB,K,yBAGrD,WAAsB,OAAOvB,KAAKm7oB,gB,IAClC,SAAkB55oB,GAASvB,KAAKm7oB,eAAiB,YAAsB55oB,K,gBAEvE,WAAa,OAAOvB,KAAKojpB,O,IACzB,SAAS7hpB,GAASvB,KAAKojpB,MAAQ,YAAsB7hpB,K,sBAErD,WACI,OAAOvB,KAAKyrB,c,eAGhB,WACI,OAAOzrB,KAAKiN,KAAOjN,KAAKiN,KAAK1L,MAAQ,Q,yBAEzC,WACIvB,KAAKsjpB,oBAAoB1toB,cACzB5V,KAAKujpB,oBAAoB3toB,cACzB5V,KAAKqjpB,sBAAsBztoB,cAC3B5V,KAAKwjpB,sBAAsB5toB,cACvB5V,KAAKyrB,aACLzrB,KAAKyrB,YAAYgD,Y,yBAGzB,SAAYxpB,GACJjF,KAAKm0S,YACLn0S,KAAK6jpB,wBAAwB7jpB,KAAKm0S,WAClCn0S,KAAKyrB,YAAY6D,WAAW,CACxB5lB,MAAO1J,KAAK0J,MACZq+B,SAAU/nC,KAAK+nC,SACfv9B,OAAQxK,KAAKwK,OACbw9B,UAAWhoC,KAAKgoC,YAEhB/iC,EAAO,QAAcjF,KAAKqrF,MAC1BrrF,KAAKm0S,UAAUx8P,SAGnB1yC,EAAO,OACPjF,KAAKqrF,KAAOrrF,KAAK6rB,iBAAmB7rB,KAAK8jpB,oB,4BAIjD,WAAc,WACL9jpB,KAAKqM,WAAcrM,KAAKqM,UAAUlI,SACnCnE,KAAKqM,UAAYy2oB,IAErB,IAAM3znB,EAAanvB,KAAKyrB,YAAczrB,KAAK6pB,SAASvkB,OAAOtF,KAAK+jpB,gBAChE/jpB,KAAKsjpB,oBAAsBn0nB,EAAW60nB,cAAc9/oB,UAAU,kBAAM,EAAK4a,OAAOoD,SAChFliB,KAAKujpB,oBAAsBp0nB,EAAWhD,cAAcjoB,UAAU,kBAAM,EAAK6a,OAAOmD,SAChFiN,EAAWQ,gBAAgBzrB,UAAU,SAACokB,GAClC,EAAKo7nB,eAAe7/oB,KAAKykB,GACrBA,EAAM2E,UAAY,KAAW,EAAKgU,cAAiB,YAAe3Y,KAClEA,EAAM4E,iBACN,EAAK42nB,oBAGb9jpB,KAAKyrB,YAAYw4nB,uBAAuB//oB,UAAU,SAACokB,GAC/C,EAAKq7nB,oBAAoB9/oB,KAAKykB,O,0BAItC,WACI,IAAMwH,EAAmB9vB,KAAKm0S,UAC1Bn0S,KAAK8vB,kBAAoB9vB,KAAKkkpB,0BAC5Bt8mB,EAAgB,IAAI,EAAc,CACpC5gC,UAAWhH,KAAKiN,KAChB6iB,mBACA/F,eAAgB/pB,KAAK+pB,eACrBgX,YAAa/gC,KAAK+gC,cAoBtB,OAlBI/gC,KAAK0J,OAAwB,IAAf1J,KAAK0J,SACnBk+B,EAAcl+B,MAAQ1J,KAAK0J,QAE3B1J,KAAKwK,QAA0B,IAAhBxK,KAAKwK,UACpBo9B,EAAcp9B,OAASxK,KAAKwK,SAE5BxK,KAAK+nC,UAA8B,IAAlB/nC,KAAK+nC,YACtBH,EAAcG,SAAW/nC,KAAK+nC,WAE9B/nC,KAAKgoC,WAAgC,IAAnBhoC,KAAKgoC,aACvBJ,EAAcI,UAAYhoC,KAAKgoC,WAE/BhoC,KAAKghC,gBACL4G,EAAc5G,cAAgBhhC,KAAKghC,eAEnChhC,KAAKgwB,aACL4X,EAAc5X,WAAahwB,KAAKgwB,YAE7B4X,I,qCAGX,SAAwB9X,GAAgB,WAC9BzjB,EAAYrM,KAAKqM,UAAU5C,IAAI,SAAA6mJ,GAAe,MAAK,CACrD//H,QAAS+/H,EAAgB//H,QACzBC,QAAS8/H,EAAgB9/H,QACzBC,SAAU6/H,EAAgB7/H,SAC1BC,SAAU4/H,EAAgB5/H,SAC1B0wK,QAAS9wC,EAAgB8wC,SAAW,EAAKA,QACzCC,QAAS/wC,EAAgB+wC,SAAW,EAAKA,QACzCrxK,WAAYsgI,EAAgBtgI,iBAAcvrB,KAE9C,OAAOqrB,EACFV,UAAUpvB,KAAK8yG,OAAOpwG,YACtBmuB,cAAcxkB,GACd+jB,uBAAuBpwB,KAAK69oB,oBAC5BxtnB,SAASrwB,KAAK4D,MACdwzU,kBAAkBp3U,KAAK89oB,eACvBroW,mBAAmBz1S,KAAKyjpB,gBACxBtsU,mBAAmBn3U,KAAKixW,cACxBz7D,sBAAsBx1S,KAAKmkpB,2B,qCAGpC,WACI,IAAMj0nB,EAAWlwB,KAAK6pB,SAAS7f,WAAWmmB,oBAAoBnwB,KAAK8yG,OAAOpwG,YAE1E,OADA1C,KAAK6jpB,wBAAwB3znB,GACtBA,I,4BAGX,WAAc,WACLlwB,KAAKyrB,YAKNzrB,KAAKyrB,YAAY2Z,YAAYrE,YAAc/gC,KAAK+gC,YAJhD/gC,KAAKknC,iBAMJlnC,KAAKyrB,YAAYxL,eAClBjgB,KAAKyrB,YAAY3M,OAAO9e,KAAK4jpB,iBAE7B5jpB,KAAK+gC,YACL/gC,KAAKqjpB,sBAAwBrjpB,KAAKyrB,YAAY+Y,gBAAgBtgC,UAAU,SAAAokB,GACpE,EAAKkc,cAActiB,KAAKoG,KAI5BtoB,KAAKqjpB,sBAAsBztoB,cAE/B5V,KAAKwjpB,sBAAsB5toB,cAGvB5V,KAAKs7J,eAAe9T,UAAUrjJ,OAAS,IACvCnE,KAAKwjpB,sBAAwBxjpB,KAAKm0S,UAAUwB,gBACvC3xS,KDv2FX,SAAoBq8B,GAA4B,IAAjB22mB,EAAiB,wDAClD,OAAO,SAACzwnB,GAAD,OAAYA,EAAO8V,KAAK,IAAI,EAAkBgE,EAAW22mB,KCs2F9C1kY,CAAU,kBAAM,EAAKh3G,eAAe9T,UAAUrjJ,OAAS,KAC5DD,UAAU,SAAA8F,GACX,EAAKsxJ,eAAep5I,KAAKlY,GACoB,IAAzC,EAAKsxJ,eAAe9T,UAAUrjJ,QAC9B,EAAKq/oB,sBAAsB5toB,mB,4BAM3C,WACQ5V,KAAKyrB,aACLzrB,KAAKyrB,YAAY1M,SAErB/e,KAAKqjpB,sBAAsBztoB,cAC3B5V,KAAKwjpB,sBAAsB5toB,kB,UAGnCqtoB,EAAoB1ipB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKyipB,GAAqB,KAAyB,IAAU,KAAyB,KAAqB,KAAyB,KAA0B,KAAyBF,IAAwC,KAAyB,IAAuB,KAChWE,EAAoBxipB,UAAO,KAAyB,CAAEC,KAAMuipB,EAAqBtipB,UAAW,CAAC,CAAC,GAAI,wBAAyB,IAAK,CAAC,GAAI,oBAAqB,IAAK,CAAC,GAAI,sBAAuB,KAAMwB,OAAQ,CAAEshpB,eAAgB,CAAC,oCAAqC,kBAAmBp4jB,KAAM,CAAC,0BAA2B,QAASpqD,aAAc,CAAC,kCAAmC,gBAAiBlX,eAAgB,CAAC,oCAAqC,kBAAmBq3K,QAAS,CAAC,6BAA8B,WAAYC,QAAS,CAAC,6BAA8B,WAAYtgK,YAAa,CAAC,iCAAkC,eAAgBkwU,aAAc,CAAC,kCAAmC,gBAAiB4sS,mBAAoB,CAAC,wCAAyC,sBAAuBC,cAAe,CAAC,mCAAoC,iBAAkBl6oB,KAAM,CAAC,0BAA2B,QAASyI,UAAW,CAAC,+BAAgC,aAAcymG,OAAQ,CAAC,4BAA6B,UAAWhjF,iBAAkB,CAAC,sCAAuC,oBAAqBpmB,MAAO,CAAC,2BAA4B,SAAUc,OAAQ,CAAC,4BAA6B,UAAWu9B,SAAU,CAAC,8BAA+B,YAAaC,UAAW,CAAC,+BAAgC,aAAchH,cAAe,CAAC,mCAAoC,iBAAkBhR,WAAY,CAAC,gCAAiC,cAAem0nB,wBAAyB,CAAC,uCAAwC,4BAA8BhioB,QAAS,CAAEqiB,cAAe,gBAAiB82H,eAAgB,iBAAkBx8I,OAAQ,SAAUC,OAAQ,SAAU2koB,eAAgB,iBAAkBC,oBAAqB,uBAAyBjroB,SAAU,CAAC,uBAAwBpW,SAAU,CAAC,Q,KAiIltD8hpB,GAAiD,CACnD7hpB,QAASwgpB,GACT55nB,KAAM,CAAC,IACPC,WAPJ,SAAgEC,GAC5D,OAAO,kBAAMA,EAAQC,iBAAiBC,gB,kBAgBpC86nB,E,sDAENA,EAAc9jpB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK6jpB,IAC1EA,EAAcnroB,UAAO,KAAwB,CAAExY,KAAM2jpB,IACrDA,EAAclroB,UAAO,KAAwB,CAAEgZ,UAAW,CAClD,GACAiynB,IACDhroB,QAAS,CAAC,CAAC,IAAY,IAAc,KAAkB,O,4BCtgGrD,SAAUiJ,GAAU,aAYzB,SAAS0qL,EAAuBrnL,EAAQs3I,EAAergJ,GASnD,MAAY,MAARA,EACOqgJ,EAAgB,6CAAY,6CACpB,MAARrgJ,EACAqgJ,EAAgB,uCAAW,uCAE3Bt3I,EAAS,KAtBFs/B,GAsB6Bt/B,EArB3CsnL,EAQS,CACTnoL,GAAIm4I,EAAgB,6HAA2B,6HAC/Cl4I,GAAIk4I,EAAgB,6HAA2B,6HAC/Ch4I,GAAIg4I,EAAgB,2GAAwB,2GAC5C/3I,GAAI,uEACJI,GAAI,uHACJE,GAAI,8EAOgC5I,GArBvB4F,MAAM,KAChByiC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCgoJ,EAAM,GACNhoJ,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAChEgoJ,EAAM,GACNA,EAAM,IANlB,IAAsBhoJ,EACdgoJ,EAyDR,SAASs3c,EAAqB51mB,GAC1B,OAAO,WACH,OAAOA,EAAM,UAAwB,KAAjB1uC,KAAKg/C,QAAiB,SAAM,IAAM,QAIrD38B,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,CACJG,OAAQ,gdAAyFR,MAC7F,KAEJkiH,WACI,ggBAAiGliH,MAC7F,MAGZM,YAAa,gRAAyDN,MAClE,KAEJgB,SApDJ,SAA6BT,EAAGC,GAC5B,IAAIQ,EAAW,CACPghoB,WACI,+SAA0DhioB,MACtD,KAERiioB,WACI,+SAA0DjioB,MACtD,KAERkioB,SACI,2TAA4DlioB,MACxD,MAKhB,OAAU,IAANO,EACOS,EAAQ,WACV/Z,MAAM,EAAG,GACTwP,OAAOuK,EAAQ,WAAe/Z,MAAM,EAAG,IAE3CsZ,EASES,EALI,yCAAqBP,KAAKD,GAC/B,aACA,sHAAsCC,KAAKD,GACzC,WACA,cACkBD,EAAEgvB,OARjBvuB,EAAQ,YA8BnBC,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,6FAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAASmgoB,EAAqB,sDAC9BlgoB,QAASkgoB,EAAqB,0CAC9BhgoB,QAASggoB,EAAqB,oCAC9BjgoB,SAAUigoB,EAAqB,mBAC/B//nB,SAAU,WACN,OAAQvkB,KAAK8xC,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOwymB,EAAqB,uDAAoBpvnB,KAAKl1B,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOskpB,EAAqB,6DAAqBpvnB,KAAKl1B,QAGlEwkB,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,8BACNC,EAAG,wFACHC,GAAIkoL,EACJjqL,EAAGiqL,EACHjoL,GAAIioL,EACJhoL,EAAG,uCACHC,GAAI+nL,EACJ/0L,EAAG,2BACHiN,GAAI8nL,EACJ3nL,EAAG,uCACHC,GAAI0nL,EACJznL,EAAG,qBACHC,GAAIwnL,GAGRv7J,cAAe,kHACfmuF,KAAM,SAAUnhF,GACZ,MAAO,8DAAiBx7B,KAAKw7B,IAEjC7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,2BACAA,EAAO,GACP,iCACAA,EAAO,GACP,qBAEA,wCAGflsB,uBAAwB,gCACxBC,QAAS,SAAUC,EAAQ87F,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAO97F,EAAS,UACpB,IAAK,IACD,OAAOA,EAAS,gBACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KApKyB/gB,CAAQ,EAAQ,U,kCCP3C,SAAS4/oB,EAAgB3moB,EAAKpB,EAAKpb,GAYhD,OAXIob,KAAOoB,EACTvB,OAAOu3B,eAAeh2B,EAAKpB,EAAK,CAC9Bpb,MAAOA,EACP0yC,YAAY,EACZvW,cAAc,EACdC,UAAU,IAGZ5f,EAAIpB,GAAOpb,EAGNwc,EAZT,iC,wBCYS,SAAUsE,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACTD,EAAG,CAAC,cAAe,gBACnBiC,EAAG,CAAC,cAAe,gBACnB/M,EAAG,CAAC,UAAW,aACfiN,GAAI,CAACS,EAAS,QAASA,EAAS,UAChCR,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOs3I,EAAgBj6I,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAG7C0F,EAAOM,aAAa,QAAS,CACpCC,OAAQ,2FAAqFL,MACzF,KAEJM,YACI,mEAA6DN,MAAM,KACvE0U,kBAAkB,EAClB1T,SACI,8DAA8DhB,MAC1D,KAERiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAGi6I,EACHj4I,GAAI,aACJC,EAAGg4I,EACH/3I,GAAI,aACJhN,EAAG+kJ,EACH93I,GAAI83I,EACJ73I,EAAG63I,EACH53I,GAAI,YACJC,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB/gB,CAAQ,EAAQ,U,kCCT3C,SAASsuR,EAAgBjlP,EAAGo7F,GAMzC,OALA6pJ,EAAkB52Q,OAAO6sH,gBAAkB,SAAyBl7F,EAAGo7F,GAErE,OADAp7F,EAAEm7F,UAAYC,EACPp7F,IAGcA,EAAGo7F,GAN5B,iC,kCCAA,oCAUao7gB,EAVW,WACpB,SAASC,IAIL,OAHAvwnB,MAAMa,KAAKl1B,MACXA,KAAKg6B,QAAU,0BACfh6B,KAAKmB,KAAO,aACLnB,KAGX,OADA4kpB,EAAelynB,UAAYlW,OAAOlX,OAAO+uB,MAAM3B,WACxCkynB,EARa,I,sZCCxB,SAASC,EAAel1mB,EAAKr+B,EAAM3H,GAC/B,OAAc,IAAVA,EACO,CAAC2H,IAEZq+B,EAAI/rC,KAAK0N,GACFq+B,G,8JCML,E,gEAKAm1mB,E,2IAKF,SAAeC,GACX,OAAO,OAAA9uoB,EAAA,GAAG,Q,CANgB,G,OASlC6uoB,EAAoBvkpB,UAAO,SAAqCC,GAAK,OAAOwkpB,EAAiCxkpB,GAAKskpB,IAClHA,EAAoBlgpB,WAAQ,KAA0B,CAAEC,MAAOigpB,EAAqBhgpB,QAASggpB,EAAoBvkpB,Y,KAC3GykpB,EAAiD,KAA6B,GAY9E,E,gEAKAC,E,qFAKF,SAAOn7jB,GACH,OAAOA,EAAOntE,Q,UAGtBsooB,EAA8B1kpB,UAAO,SAA+CC,GAAK,OAAO,IAAKA,GAAKykpB,IAC1GA,EAA8BrgpB,WAAQ,KAA0B,CAAEC,MAAOogpB,EAA+BngpB,QAASmgpB,EAA8B1kpB,Y,KAYzI,E,gEAKA2kpB,E,oIAMF,SAAQ3jpB,EAAOwjpB,GACX,OAAOxjpB,I,iCAOX,SAAoB4jpB,EAAcJ,GAC9B,OAAOI,M,CAfqB,G,OAkBpCD,EAAsB3kpB,UAAO,SAAuCC,GAAK,OAAO4kpB,EAAmC5kpB,GAAK0kpB,IACxHA,EAAsBtgpB,WAAQ,KAA0B,CAAEC,MAAOqgpB,EAAuBpgpB,QAASogpB,EAAsB3kpB,Y,KACjH6kpB,EAAmD,KAA6B,GAuBtF,SAASpjiB,EAAOkxD,EAAIC,GAChB,GAAID,IAAOC,EACP,OAAO,EACX,GAAW,OAAPD,GAAsB,OAAPC,EACf,OAAO,EACX,GAAID,GAAOA,GAAMC,GAAOA,EACpB,OAAO,EAGX,IAIIhvK,EAEAwY,EAEA0ooB,EARAC,SAAYpye,EAShB,GAAIoye,UAPYnye,GAOM,UAANmye,EAAgB,CAC5B,IAAI/6oB,MAAMyL,QAAQk9J,GAWb,CACD,GAAI3oK,MAAMyL,QAAQm9J,GACd,OAAO,EAGX,IAAKx2J,KADL0ooB,EAAS7ooB,OAAOlX,OAAO,MACX4tK,EAAI,CACZ,IAAKlxD,EAAOkxD,EAAGv2J,GAAMw2J,EAAGx2J,IACpB,OAAO,EAEX0ooB,EAAO1ooB,IAAO,EAElB,IAAKA,KAAOw2J,EACR,KAAMx2J,KAAO0ooB,SAA8B,IAAZlye,EAAGx2J,GAC9B,OAAO,EAGf,OAAO,EA1BP,IAAKpS,MAAMyL,QAAQm9J,GACf,OAAO,EACX,IAAKhvK,EAAS+uK,EAAG/uK,SAAWgvK,EAAGhvK,OAAQ,CACnC,IAAKwY,EAAM,EAAGA,EAAMxY,EAAQwY,IACxB,IAAKqlG,EAAOkxD,EAAGv2J,GAAMw2J,EAAGx2J,IACpB,OAAO,EAEf,OAAO,GAsBnB,OAAO,EAOX,SAAS8hG,EAAUl9G,GACf,OAAO,MAAOA,EAMlB,SAAS8pM,EAAS/5L,GACd,OAAQA,GAAwB,iBAATA,IAAsB/G,MAAMyL,QAAQ1E,GAO/D,SAASgzX,EAAU93W,EAAQjG,GAEvB,IAAI4lB,EAAS3vB,OAAOuqB,OAAO,GAAIva,GAgB/B,OAfI6+K,EAAS7+K,IAAW6+K,EAAS9kL,IAC7B/J,OAAOC,KAAK8J,GAAQlT,QAAQ,SAACsJ,GACrB0uL,EAAS9kL,EAAO5J,KACVA,KAAO6P,EAIT2f,EAAOxvB,GAAO2nX,EAAU93W,EAAO7P,GAAM4J,EAAO5J,IAIhDH,OAAOuqB,OAAOoF,EAAd3vB,OAAA,IAAAA,CAAA,GAAyBG,EAAM4J,EAAO5J,OAI3CwvB,E,IAUL,E,gEAEAo5mB,E,YACF,+CACI,WAASjsoB,YACJksoB,gBAAkB,wBAF3B,E,gEASA,SAAYttW,EAAMpuN,GAad,MAVoB,iBAATouN,EACEl4S,KAAKylpB,kBAAkBvtW,EAAMpuN,GAEjB,mBAATouN,EACHl4S,KAAK0lpB,oBAAoBxtW,EAAMpuN,GAIZouN,I,sBASpC,SAAS1rR,EAAQ7P,GAEb,IAAIF,EAAOE,EAAI4F,MAAM,KACrB5F,EAAM,GACN,GACIA,GAAOF,EAAK9H,SACR8pG,EAAUjyF,KAAWiyF,EAAUjyF,EAAO7P,KAAiC,iBAAhB6P,EAAO7P,IAAsBF,EAAKtY,OAInFsY,EAAKtY,OAIXwY,GAAO,IAHP6P,OAAS/nB,GAJT+nB,EAASA,EAAO7P,GAChBA,EAAM,UAQLF,EAAKtY,QACd,OAAOqoB,I,iCAOX,SAAoBxd,EAAI86E,GACpB,OAAO96E,EAAG86E,K,+BAOd,SAAkBouN,EAAMpuN,GAAM,WAC1B,OAAKA,EAGEouN,EAAK12S,QAAQxB,KAAKwlpB,gBAAiB,SAACx6lB,EAAWhvC,GAElD,IAAI8tH,EAAI,EAAKhO,SAAShyC,EAAQ9tE,GAC9B,OAAOyiG,EAAUqrB,GAAKA,EAAI9+E,IALnBktP,M,CAhEkB,G,OAyErCqtW,EAAuBhlpB,UAAO,SAAwCC,GAAK,OAAOmlpB,EAAoCnlpB,GAAK+kpB,IAC3HA,EAAuB3gpB,WAAQ,KAA0B,CAAEC,MAAO0gpB,EAAwBzgpB,QAASygpB,EAAuBhlpB,Y,KACpHolpB,EAAoD,KAA6B,GASjF,E,YACF,iCAII3lpB,KAAK4lpB,YAAc5lpB,KAAK6lpB,YAIxB7lpB,KAAKmlpB,aAAe,GAIpBnlpB,KAAK8lpB,MAAQ,GAOb9lpB,KAAK+lpB,oBAAsB,IAAI,IAO/B/lpB,KAAKgmpB,aAAe,IAAI,IAOxBhmpB,KAAKimpB,oBAAsB,IAAI,MASjCC,EAAY,IAAI,IAAe,aAE/BC,EAAmB,IAAI,IAAe,oB,iBACtCC,E,8BAWF,WAAY9unB,EAAO+unB,EAAeC,EAAU70a,EAAQ80a,GAAiE,IAAtCC,IAAsC,yDAAfC,EAAe,4EACjHzmpB,KAAKs3B,MAAQA,EACbt3B,KAAKqmpB,cAAgBA,EACrBrmpB,KAAKsmpB,SAAWA,EAChBtmpB,KAAKyxO,OAASA,EACdzxO,KAAKumpB,0BAA4BA,EACjCvmpB,KAAKwmpB,eAAiBA,EACtBxmpB,KAAKympB,QAAUA,EACfzmpB,KAAKk7H,SAAU,EACfl7H,KAAK0mpB,qBAAuB,IAAI,IAChC1mpB,KAAK2mpB,cAAgB,IAAI,IACzB3mpB,KAAK4mpB,qBAAuB,IAAI,IAChC5mpB,KAAK6mpB,OAAS,GACd7mpB,KAAK8mpB,cAAgB,GACrB9mpB,KAAK+mpB,qBAAuB,I,gCAShC,WACI,OAAO/mpB,KAAKympB,QAAUzmpB,KAAK0mpB,qBAAuB1mpB,KAAKs3B,MAAMyunB,sB,wBASjE,WACI,OAAO/lpB,KAAKympB,QAAUzmpB,KAAK2mpB,cAAgB3mpB,KAAKs3B,MAAM0unB,e,+BAS1D,WACI,OAAOhmpB,KAAKympB,QAAUzmpB,KAAK4mpB,qBAAuB5mpB,KAAKs3B,MAAM2unB,sB,uBAMjE,WACI,OAAOjmpB,KAAKympB,QAAUzmpB,KAAKgnpB,aAAehnpB,KAAKs3B,MAAMuunB,a,IAMzD,SAAgBA,GACR7lpB,KAAKympB,QACLzmpB,KAAKgnpB,aAAenB,EAGpB7lpB,KAAKs3B,MAAMuunB,YAAcA,I,uBAOjC,WACI,OAAO7lpB,KAAKympB,QAAUzmpB,KAAKinpB,aAAejnpB,KAAKs3B,MAAMsunB,a,IAMzD,SAAgBA,GACR5lpB,KAAKympB,QACLzmpB,KAAKinpB,aAAerB,EAGpB5lpB,KAAKs3B,MAAMsunB,YAAcA,I,iBAOjC,WACI,OAAO5lpB,KAAKympB,QAAUzmpB,KAAK6mpB,OAAS7mpB,KAAKs3B,MAAMwunB,O,IAMnD,SAAUA,GACF9lpB,KAAKympB,QACLzmpB,KAAK6mpB,OAASf,EAGd9lpB,KAAKs3B,MAAMwunB,MAAQA,I,wBAO3B,WACI,OAAO9lpB,KAAKympB,QAAUzmpB,KAAK8mpB,cAAgB9mpB,KAAKs3B,MAAM6tnB,c,IAM1D,SAAiBA,GACTnlpB,KAAKympB,QACLzmpB,KAAK8mpB,cAAgB3B,EAGrBnlpB,KAAKs3B,MAAM6tnB,aAAeA,I,4BAQlC,SAAeJ,GAAI,WACf,GAAIA,IAAS/kpB,KAAK6lpB,YAAlB,CAIA,IAAI3qhB,EAAUl7H,KAAKknpB,qBAAqBnC,QACjB,IAAZ7phB,GAEFl7H,KAAK6lpB,cACN7lpB,KAAK6lpB,YAAcd,GAEvB7phB,EAAQl3H,KAAK,OAAAW,EAAA,GAAK,IACbT,UAAU,SAACo0B,GACZ,EAAK6unB,kBAAkBpC,MAI3B/kpB,KAAKmnpB,kBAAkBpC,M,4BAO/B,WACI,OAAO/kpB,KAAK6lpB,c,iBAOhB,SAAId,GAAI,WAEJ,GAAIA,IAAS/kpB,KAAK4lpB,YACd,OAAO,OAAA3voB,EAAA,GAAGjW,KAAKmlpB,aAAaJ,IAGhC,IAAI7phB,EAAUl7H,KAAKknpB,qBAAqBnC,GACxC,YAAuB,IAAZ7phB,GAEFl7H,KAAK4lpB,cACN5lpB,KAAK4lpB,YAAcb,GAEvB7phB,EAAQl3H,KAAK,OAAAW,EAAA,GAAK,IACbT,UAAU,SAACo0B,GACZ,EAAK8unB,WAAWrC,KAEb7phB,IAGPl7H,KAAKonpB,WAAWrC,GACT,OAAA9uoB,EAAA,GAAGjW,KAAKmlpB,aAAaJ,O,kCAQpC,SAAqBA,GAEjB,IAAI7phB,EAMJ,YAJuC,IAA5Bl7H,KAAKmlpB,aAAaJ,KACzB/kpB,KAAK+mpB,qBAAqBhC,GAAQ/kpB,KAAK+mpB,qBAAqBhC,IAAS/kpB,KAAKqnpB,eAAetC,GACzF7phB,EAAUl7H,KAAK+mpB,qBAAqBhC,IAEjC7phB,I,4BAQX,SAAe6phB,GAAI,WACf/kpB,KAAKk7H,SAAU,EAEf,IAAMoshB,EAAsBtnpB,KAAKqmpB,cAAcgB,eAAetC,GAAM/gpB,KAAK,OAAAq3H,EAAA,MAUzE,OATAr7H,KAAKsnpB,oBAAsBA,EAAoBtjpB,KAAK,OAAAW,EAAA,GAAK,GAAI,OAAA8E,EAAA,GAAI,SAAC6uB,GAAD,OAAS,EAAKgunB,SAASiB,oBAAoBjvnB,EAAKysnB,KAAQ,OAAA1phB,EAAA,MACzHr7H,KAAKsnpB,oBACApjpB,UAAU,SAACo0B,GACZ,EAAK6snB,aAAaJ,GAAQzsnB,EAC1B,EAAKkvnB,cACL,EAAKtshB,SAAU,GAChB,SAACv+F,GACA,EAAKu+F,SAAU,IAEZoshB,I,4BAUX,SAAevC,EAAMI,GAAiC,IAAnBsC,EAAmB,wDAClDtC,EAAenlpB,KAAKsmpB,SAASiB,oBAAoBpC,EAAcJ,GAE3D/kpB,KAAKmlpB,aAAaJ,GADlB0C,GAAeznpB,KAAKmlpB,aAAaJ,GACPzgR,EAAUtkY,KAAKmlpB,aAAaJ,GAAOI,GAGnCA,EAE9BnlpB,KAAKwnpB,cACLxnpB,KAAK+lpB,oBAAoB7joB,KAAK,CAAE6ioB,KAAMA,EAAMI,aAAcnlpB,KAAKmlpB,aAAaJ,O,sBAMhF,WACI,OAAO/kpB,KAAK8lpB,Q,sBAOhB,SAASA,GAAK,WACVA,EAAMzyoB,QAAQ,SAAC0xoB,IACuB,IAA9B,EAAKe,MAAM78oB,QAAQ87oB,IACnB,EAAKe,MAAMlipB,KAAKmhpB,O,yBAQ5B,WACI/kpB,KAAK0npB,SAASlroB,OAAOC,KAAKzc,KAAKmlpB,iB,6BASnC,SAAgBA,EAAcxooB,EAAKiiS,GAE/B,IAAItmR,EACJ,GAAI3b,aAAepS,MAAO,CAEtB,IAFsB,EAElBqyB,EAAS,GAETiP,GAAc,EAJI,cAKRlvB,GALQ,IAKtB,2BAAmB,KAAV,EAAU,QACfigB,EAAO,GAAK58B,KAAK2npB,gBAAgBxC,EAAc,EAAGvmW,GACf,mBAAxBhiR,EAAO,GAAG14B,YACjB2nC,GAAc,IARA,8BAWtB,GAAIA,EAAa,CAEb,IAAI+7mB,EAFS,gBAGCjroB,GAHD,IAGb,2BAAmB,KAAV6/G,EAAU,QAEX4S,EAAqC,mBAAxBxyG,EAAO4/F,GAAGt4H,UAA2B04B,EAAO4/F,GAAK,OAAAvmH,EAAA,GAAsB2mB,EAAO4/F,IAE3ForhB,OADqB,IAAdA,EACKx4gB,EAGA,OAAA/xH,EAAA,GAAMuqoB,EAAWx4gB,IAVxB,8BAab,OAAOw4gB,EAAU5jpB,KC1oB3B,SAAiBo+O,EAAaC,GAChC,OAAI/oO,UAAUnV,QAAU,EACb,SAAwCoiB,GAC3C,OAAO,OAAAviB,EAAA,GAAK,OAAAm+O,EAAA,GAAKC,EAAaC,GAAO,OAAA3lE,EAAA,GAAS,GAAI,OAAA90C,EAAA,GAAey6G,GAA1D,CAAiE97N,IAGzE,SAAgCA,GACnC,OAAO,OAAAviB,EAAA,GAAK,OAAAm+O,EAAA,GAAK,SAAC7sO,EAAK/T,EAAOoI,GAAb,OAAuBy4O,EAAY9sO,EAAK/T,EAAOoI,EAAQ,KAAK,OAAA+yK,EAAA,GAAS,GAA/E,CAAmFn2J,IFFvF9Q,CAAOovoB,EAAgB,ICqoBe,OAAAp7oB,EAAA,GAAI,SAACkmC,GAElC,IAAI5xB,EAAM,GAIV,OAHA4xB,EAAIt8B,QAAQ,SAAC9R,EAAOoI,GAChBoU,EAAIpB,EAAIhT,IAAUpI,IAEfwc,KAGf,OAAO6e,EAQX,GANIuonB,IACA7snB,EAAMt4B,KAAKyxO,OAAOmlC,YAAY52Q,KAAKyxO,OAAO31G,SAASqphB,EAAcxooB,GAAMiiS,SAExD,IAARtmR,GAAuBt4B,KAAK6lpB,aAAe7lpB,KAAK6lpB,cAAgB7lpB,KAAK4lpB,aAAe5lpB,KAAKwmpB,iBAChGlunB,EAAMt4B,KAAKyxO,OAAOmlC,YAAY52Q,KAAKyxO,OAAO31G,SAAS97H,KAAKmlpB,aAAanlpB,KAAK6lpB,aAAclpoB,GAAMiiS,SAE/E,IAARtmR,EAAqB,CAE5B,IAAIwxD,EAAS,CAAEntE,MAAKkroB,iBAAkB7npB,WACL,IAAtB4+S,IACP90N,EAAO80N,kBAAoBA,GAE/BtmR,EAAMt4B,KAAKumpB,0BAA0BpggB,OAAOr8D,GAEhD,YAAsB,IAARxxD,EAAsBA,EAAM3b,I,iBAQ9C,SAAIA,EAAKiiS,GAAiB,WACtB,IAAKngM,EAAU9hG,KAASA,EAAIxY,OACxB,MAAM,IAAIkwB,MAAJ,4BAGV,GAAIr0B,KAAKk7H,QACL,OAAOV,EAAA,EAAWl1H,OAAO,SAAC8mC,GAEtB,IAAI25K,EAAa,SAACztL,GACd8T,EAASvoC,KAAKy0B,GACd8T,EAAStoC,YAGT27lB,EAAU,SAAC9ikB,GACXyP,EAASpX,MAAM2H,IAEnB,EAAK2qnB,oBAAoBpjpB,UAAU,SAACo0B,GAEH,mBAD7BA,EAAM,EAAKqvnB,gBAAgBrvnB,EAAK3b,EAAKiiS,IACtB16S,UACXo0B,EAAIp0B,UAAU6hN,EAAY05Y,GAG1B15Y,EAAWztL,IAEhBmnkB,KAKP,IAAInnkB,EAAMt4B,KAAK2npB,gBAAgB3npB,KAAKmlpB,aAAanlpB,KAAK4lpB,aAAcjpoB,EAAKiiS,GACzE,MAA6B,mBAAlBtmR,EAAIp0B,UACJo0B,EAGA,OAAAriB,EAAA,GAAGqiB,K,oBAWtB,SAAO3b,EAAKiiS,GAAiB,WACzB,IAAKngM,EAAU9hG,KAASA,EAAIxY,OACxB,MAAM,IAAIkwB,MAAJ,4BAEV,OAAO,OAAArb,EAAA,GAAOhZ,KAAKkS,IAAIyK,EAAKiiS,GAAoB5+S,KAAKgmpB,aAAahipB,KAAK,OAAAk/H,EAAA,GAAU,SAAC56G,GAE9E,IAAMgQ,EAAM,EAAKqvnB,gBAAgBr/nB,EAAM68nB,aAAcxooB,EAAKiiS,GAC1D,MAA6B,mBAAlBtmR,EAAIp0B,UACJo0B,EAGA,OAAAriB,EAAA,GAAGqiB,S,qBAWtB,SAAQ3b,EAAKiiS,GACT,IAAKngM,EAAU9hG,KAASA,EAAIxY,OACxB,MAAM,IAAIkwB,MAAJ,4BAGV,IAAIiE,EAAMt4B,KAAK2npB,gBAAgB3npB,KAAKmlpB,aAAanlpB,KAAK4lpB,aAAcjpoB,EAAKiiS,GACzE,QAA6B,IAAlBtmR,EAAIp0B,UAA2B,CACtC,GAAIyY,aAAepS,MAAO,CAEtB,IAAIwT,EAAM,GAIV,OAHApB,EAAItJ,QAAQ,SAAC9R,EAAOoI,GAChBoU,EAAIpB,EAAIhT,IAAUgT,EAAIhT,KAEnBoU,EAEX,OAAOpB,EAGP,OAAO2b,I,iBAUf,SAAI3b,EAAKpb,GAA8B,IAAvBwjpB,EAAuB,uDAAhB/kpB,KAAK4lpB,YACxB5lpB,KAAKmlpB,aAAaJ,GAAMpooB,GAAO3c,KAAKsmpB,SAASwB,QAAQvmpB,EAAOwjpB,GAC5D/kpB,KAAKwnpB,cACLxnpB,KAAK+lpB,oBAAoB7joB,KAAK,CAAE6ioB,KAAMA,EAAMI,aAAcnlpB,KAAKmlpB,aAAaJ,O,wBAOhF,SAAWA,GACP/kpB,KAAK4lpB,YAAcb,EACnB/kpB,KAAKgmpB,aAAa9joB,KAAK,CAAE6ioB,KAAMA,EAAMI,aAAcnlpB,KAAKmlpB,aAAaJ,KAEhE/kpB,KAAK6lpB,aACN7lpB,KAAKmnpB,kBAAkBpC,K,+BAQ/B,SAAkBA,GACd/kpB,KAAK6lpB,YAAcd,EACnB/kpB,KAAKimpB,oBAAoB/joB,KAAK,CAAE6ioB,KAAMA,EAAMI,aAAcnlpB,KAAKmlpB,aAAaJ,O,wBAOhF,SAAWA,GAEP,OADA/kpB,KAAK+npB,UAAUhD,GACR/kpB,KAAKqnpB,eAAetC,K,uBAO/B,SAAUA,GACN/kpB,KAAK+mpB,qBAAqBhC,QAAQtgpB,EAClCzE,KAAKmlpB,aAAaJ,QAAQtgpB,I,4BAM9B,WACI,GAAsB,oBAAX0mB,aAAsD,IAArBA,OAAO2/F,UAAnD,CAIA,IAAIk9hB,EAAc78nB,OAAO2/F,UAAUm9hB,UAAY98nB,OAAO2/F,UAAUm9hB,UAAU,GAAK,KAQ/E,OANkC,KADlCD,EAAcA,GAAe78nB,OAAO2/F,UAAUugL,UAAYlgR,OAAO2/F,UAAUo9hB,iBAAmB/8nB,OAAO2/F,UAAUq9hB,cAC/Fl/oB,QAAQ,OACpB++oB,EAAcA,EAAYzloB,MAAM,KAAK,KAEP,IAA9ByloB,EAAY/+oB,QAAQ,OACpB++oB,EAAcA,EAAYzloB,MAAM,KAAK,IAElCyloB,K,mCAMX,WACI,GAAsB,oBAAX78nB,aAAsD,IAArBA,OAAO2/F,UAMnD,OAFyB3/F,OAAO2/F,UAAUm9hB,UAAY98nB,OAAO2/F,UAAUm9hB,UAAU,GAAK,OAC3C98nB,OAAO2/F,UAAUugL,UAAYlgR,OAAO2/F,UAAUo9hB,iBAAmB/8nB,OAAO2/F,UAAUq9hB,iB,UAIrI/B,EAAiB7lpB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAK4lpB,GAAkB,KAAgB,GAAiB,KAAgB,GAAkB,KAAgB,GAAoB,KAAgB,GAAkB,KAAgB,GAA4B,KAAgBD,GAAmB,KAAgBD,KAC1UE,EAAiBxhpB,WAAQ,KAA0B,CAAEC,MAAOuhpB,EAAkBthpB,QAASshpB,EAAiB7lpB,Y,sBAyBlG6npB,E,8BAMF,WAAYP,EAAkBx8oB,EAAS8ioB,GAAI,+BACvCnuoB,KAAK6npB,iBAAmBA,EACxB7npB,KAAKqL,QAAUA,EACfrL,KAAKmuoB,KAAOA,EAEPnuoB,KAAKqopB,yBACNropB,KAAKqopB,uBAAyBropB,KAAK6npB,iBAAiB9B,oBAAoB7hpB,UAAU,SAACokB,GAC3EA,EAAMy8nB,OAAS,EAAK8C,iBAAiBjC,aACrC,EAAK0C,YAAW,EAAMhgoB,EAAM68nB,iBAKnCnlpB,KAAKuopB,kBACNvopB,KAAKuopB,gBAAkBvopB,KAAK6npB,iBAAiB7B,aAAa9hpB,UAAU,SAACokB,GACjE,EAAKggoB,YAAW,EAAMhgoB,EAAM68nB,iBAI/BnlpB,KAAKwopB,yBACNxopB,KAAKwopB,uBAAyBxopB,KAAK6npB,iBAAiB5B,oBAAoB/hpB,UAAU,SAACokB,GAC/E,EAAKggoB,YAAW,O,sBAQ5B,SAAc3roB,GACNA,IACA3c,KAAK2c,IAAMA,EACX3c,KAAKsopB,gB,2BAOb,SAAoBx+jB,GACXk4B,EAAOhiH,KAAKyopB,cAAe3+jB,KAC5B9pF,KAAKyopB,cAAgB3+jB,EACrB9pF,KAAKsopB,YAAW,M,gCAMxB,WACItopB,KAAKsopB,e,wBAOT,WAA4C,IAAjC7nU,EAAiC,wDAAZ0kU,EAAY,uCAEpChxhB,EAAQn0H,KAAKqL,QAAQzI,cAAcokL,WAElC7yD,EAAMhwH,SAEPnE,KAAKu7R,WAAWv7R,KAAKqL,QAAQzI,cAAe5C,KAAK2c,KACjDw3G,EAAQn0H,KAAKqL,QAAQzI,cAAcokL,YAEvC,IAAK,IAAIn/K,EAAI,EAAGA,EAAIssH,EAAMhwH,SAAU0D,EAAG,CAEnC,IAAI67I,EAAOvvB,EAAMtsH,GACjB,GAAsB,IAAlB67I,EAAK/7I,SAAgB,CAGrB,IAAIgV,OAAG,EACP,GAAI3c,KAAK2c,IACLA,EAAM3c,KAAK2c,IACP8jU,IACA/8L,EAAKglgB,QAAU,UAGlB,CAED,IAAIp1lB,EAAUtzD,KAAKk1R,WAAWxxI,GAE1BilgB,EAAiBr1lB,EAAQx2C,OACzB6roB,EAAexkpB,SAEXmvD,IAAYowF,EAAKt+I,cACjBuX,EAAMgsoB,EAENjlgB,EAAKklgB,gBAAkB5opB,KAAKk1R,WAAWxxI,IAElCA,EAAKklgB,iBAAmBnoU,IAC7B/8L,EAAKglgB,QAAU,KAEf/roB,EAAM+mI,EAAKklgB,gBAAgB9roB,SAIvC9c,KAAKwgH,YAAY7jG,EAAK+mI,EAAMyhgB,O,yBAUxC,SAAYxooB,EAAK+mI,EAAMyhgB,GAAY,WAC/B,GAAIxooB,EAAK,CACL,GAAI+mI,EAAKglgB,UAAY/roB,GAAO3c,KAAK6opB,aAAe7opB,KAAKyopB,cACjD,OAEJzopB,KAAK6opB,WAAa7opB,KAAKyopB,cAEvB,IAAIK,EAAgB,SAACxwnB,GACbA,IAAQ3b,IACR+mI,EAAKglgB,QAAU/roB,GAEd+mI,EAAKklgB,kBACNllgB,EAAKklgB,gBAAkB,EAAK1zX,WAAWxxI,IAE3CA,EAAKt+I,aAAeq5G,EAAUnmF,GAAOA,EAAOorH,EAAKklgB,iBAAmBjsoB,EAEpE,EAAK4+Q,WAAW73I,EAAM,EAAK/mI,IAAM+mI,EAAKt+I,aAAes+I,EAAKklgB,gBAAgBpnpB,QAAQmb,EAAK+mI,EAAKt+I,eAC5F,EAAK+ooB,KAAKn3nB,gBAEd,GAAIynG,EAAU0miB,GAAe,CAEzB,IAAI7snB,EAAMt4B,KAAK6npB,iBAAiBF,gBAAgBxC,EAAcxooB,EAAK3c,KAAKyopB,eAC3C,mBAAlBnwnB,EAAIp0B,UACXo0B,EAAIp0B,UAAU4kpB,GAGdA,EAAcxwnB,QAIlBt4B,KAAK6npB,iBAAiB31oB,IAAIyK,EAAK3c,KAAKyopB,eAAevkpB,UAAU4kpB,M,wBAQzE,SAAWplgB,GACP,OAAOjlC,EAAUilC,EAAKlwC,aAAekwC,EAAKlwC,YAAckwC,EAAK5zI,O,wBAOjE,SAAW4zI,EAAMpwF,GACTmrD,EAAUilC,EAAKlwC,aACfkwC,EAAKlwC,YAAclgD,EAGnBowF,EAAK5zI,KAAOwjD,I,yBAMpB,WACQtzD,KAAKuopB,iBACLvopB,KAAKuopB,gBAAgB3yoB,cAErB5V,KAAKwopB,wBACLxopB,KAAKwopB,uBAAuB5yoB,cAE5B5V,KAAKqopB,wBACLropB,KAAKqopB,uBAAuBzyoB,kB,UAIxCwyoB,EAAmB7npB,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAK4npB,GAAoB,KAAyB,GAAmB,KAAyB,KAAoB,KAAyB,OAC1NA,EAAmB3npB,UAAO,KAAyB,CAAEC,KAAM0npB,EAAoBznpB,UAAW,CAAC,CAAC,GAAI,YAAa,IAAK,CAAC,GAAI,gBAAiB,KAAMwB,OAAQ,CAAEi7K,UAAW,YAAa2re,gBAAiB,qB,sBA0B3LC,E,8BAKF,WAAY5re,EAAW+wd,GAAI,oBACvBnuoB,KAAKo9K,UAAYA,EACjBp9K,KAAKmuoB,KAAOA,EACZnuoB,KAAKuB,MAAQ,I,0BAQjB,SAAYob,EAAKiiS,EAAmBumW,GAAY,WAExC2D,EAAgB,SAACxwnB,GACjB,EAAK/2B,WAAgBkD,IAAR6zB,EAAoBA,EAAM3b,EACvC,EAAK+roB,QAAU/roB,EACf,EAAKwxnB,KAAKn3nB,gBAEd,GAAImuoB,EAAc,CAEd,IAAI7snB,EAAMt4B,KAAKo9K,UAAUuqe,gBAAgBxC,EAAcxooB,EAAKiiS,GAC/B,mBAAlBtmR,EAAIp0B,UACXo0B,EAAIp0B,UAAU4kpB,GAGdA,EAAcxwnB,GAGtBt4B,KAAKo9K,UAAUlrK,IAAIyK,EAAKiiS,GAAmB16S,UAAU4kpB,K,uBAOzD,SAAUr+mB,GAAc,IAShBm0Q,EATgB,OACpB,IAAKn0Q,GAA0B,IAAjBA,EAAMtmC,OAChB,OAAOsmC,EAFS,2BAAJ5qC,EAAI,iCAAJA,EAAI,kBAKpB,GAAImiH,EAAOv3E,EAAOzqC,KAAK0opB,UAAY1miB,EAAOniH,EAAMG,KAAK6opB,YACjD,OAAO7opB,KAAKuB,MAIhB,GAAIk9G,EAAU5+G,EAAK,KAAOA,EAAKsE,OAC3B,GAAuB,iBAAZtE,EAAK,IAAmBA,EAAK,GAAGsE,OAAQ,CAI/C,IAAI8kpB,EAAYpppB,EAAK,GAChB2B,QAAQ,mCAAoC,SAC5CA,QAAQ,uBAAwB,SACrC,IACIo9S,EAAoBplR,KAAKW,MAAM8unB,GAEnC,MAAOh1nB,GACH,MAAM,IAAIo3T,YAAJ,+EAAwFxrV,EAAK,UAG/E,iBAAZA,EAAK,IAAoB0K,MAAMyL,QAAQnW,EAAK,MACxD++S,EAAoB/+S,EAAK,IAsCjC,OAlCAG,KAAK0opB,QAAUj+mB,EAEfzqC,KAAK6opB,WAAahppB,EAElBG,KAAKwgH,YAAY/1E,EAAOm0Q,GAExB5+S,KAAKuuoB,WAEAvuoB,KAAK+lpB,sBACN/lpB,KAAK+lpB,oBAAsB/lpB,KAAKo9K,UAAU2oe,oBAAoB7hpB,UAAU,SAACokB,GACjE,EAAKogoB,SAAWpgoB,EAAMy8nB,OAAS,EAAK3ne,UAAUwoe,cAC9C,EAAK8C,QAAU,KACf,EAAKloiB,YAAY/1E,EAAOm0Q,EAAmBt2R,EAAM68nB,kBAKxDnlpB,KAAKgmpB,eACNhmpB,KAAKgmpB,aAAehmpB,KAAKo9K,UAAU4oe,aAAa9hpB,UAAU,SAACokB,GACnD,EAAKogoB,UACL,EAAKA,QAAU,KACf,EAAKloiB,YAAY/1E,EAAOm0Q,EAAmBt2R,EAAM68nB,kBAKxDnlpB,KAAKimpB,sBACNjmpB,KAAKimpB,oBAAsBjmpB,KAAKo9K,UAAU6oe,oBAAoB/hpB,UAAU,WAChE,EAAKwkpB,UACL,EAAKA,QAAU,KACf,EAAKloiB,YAAY/1E,EAAOm0Q,OAI7B5+S,KAAKuB,Q,sBAMhB,gBAC4C,IAA7BvB,KAAK+lpB,sBACZ/lpB,KAAK+lpB,oBAAoBnwoB,cACzB5V,KAAK+lpB,yBAAsBthpB,QAEE,IAAtBzE,KAAKgmpB,eACZhmpB,KAAKgmpB,aAAapwoB,cAClB5V,KAAKgmpB,kBAAevhpB,QAEgB,IAA7BzE,KAAKimpB,sBACZjmpB,KAAKimpB,oBAAoBrwoB,cACzB5V,KAAKimpB,yBAAsBxhpB,K,yBAMnC,WACIzE,KAAKuuoB,e,UAGbya,EAAczopB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKwopB,GAAe,KAAyB,GAAmB,SACrIA,EAAchmG,WAAQ,KAAoB,CAAE7hjB,KAAM,YAAaT,KAAMsopB,EAAerjG,MAAM,IAC1FqjG,EAAcpkpB,WAAQ,KAA0B,CAAEC,MAAOmkpB,EAAelkpB,QAASkkpB,EAAczopB,Y,sBAoBzF2opB,E,4FAMF,WAA0B,IAAX9wnB,EAAW,uDAAF,GACpB,MAAO,CACH2mF,SAAUmqiB,EACV/2nB,UAAW,CACPiG,EAAO0ujB,QAAU,CAAEvklB,QAAS,EAAiBoW,SAAU,GACvDyf,EAAOkunB,UAAY,CAAE/jpB,QAAS,EAAmBoW,SAAU,GAC3Dyf,EAAOq5M,QAAU,CAAElvO,QAAS,EAAiBoW,SAAU,GACvDyf,EAAOmunB,2BAA6B,CAAEhkpB,QAAS,EAA2BoW,SAAU,GACpF,EACA,CAAEpW,QAAS2jpB,EAAWttoB,SAAUwf,EAAOqunB,SACvC,CAAElkpB,QAAS4jpB,EAAkBvtoB,SAAUwf,EAAOounB,gBAC9C,M,sBASZ,WAA2B,IAAXpunB,EAAW,uDAAF,GACrB,MAAO,CACH2mF,SAAUmqiB,EACV/2nB,UAAW,CACPiG,EAAO0ujB,QAAU,CAAEvklB,QAAS,EAAiBoW,SAAU,GACvDyf,EAAOkunB,UAAY,CAAE/jpB,QAAS,EAAmBoW,SAAU,GAC3Dyf,EAAOq5M,QAAU,CAAElvO,QAAS,EAAiBoW,SAAU,GACvDyf,EAAOmunB,2BAA6B,CAAEhkpB,QAAS,EAA2BoW,SAAU,GACpF,CAAEpW,QAAS2jpB,EAAWttoB,SAAUwf,EAAOqunB,SACvC,CAAElkpB,QAAS4jpB,EAAkBvtoB,SAAUwf,EAAOounB,gBAC9C,Q,UAKhB0C,EAAgB3opB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK0opB,IAC9EA,EAAgBhwoB,UAAO,KAAwB,CAAExY,KAAMwopB,IACvDA,EAAgB/voB,UAAO,KAAwB,I,mDElwCtC,SAAUkJ,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wYAA6EL,MACjF,KAEJM,YACI,wYAA6EN,MACzE,KAERgB,SAAU,uLAAsChB,MAAM,KACtDiB,cAAe,2KAAoCjB,MAAM,KACzDkB,YAAa,qEAAmBlB,MAAM,KACtCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4CAEVutB,cAAe,wFACfmuF,KAAM,SAAUnhF,GACZ,MAAiB,yCAAVA,GAEX7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,mDAEA,wCAGfxtB,SAAU,CACNC,QAAS,oEACTC,QAAS,0EACTC,SAAU,0EACVC,QAAS,sFACTC,SAAU,kGACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wBACRC,KAAM,yCACNC,EAAG,mGACHC,GAAI,0CACJ/B,EAAG,6BACHgC,GAAI,8BACJC,EAAG,+CACHC,GAAI,gDACJhN,EAAG,uBACHiN,GAAI,wBACJG,EAAG,mCACHC,GAAI,oCACJC,EAAG,iBACHC,GAAI,mBAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,MAAO,qBAAQA,KAhEe5gB,CAAQ,EAAQ,U,mbCMpDqkpB,E,8BACF,WAAYh/hB,GAA+B,IAAzB+jF,EAAyB,uDAAd,IAAc,oBACvCluM,KAAKmqH,KAAOA,EACZnqH,KAAKkuM,SAAWA,G,kBAEpB,WACI,OAAOluM,KAAKkuM,SAASniJ,Q,sBAEzB,SAASggF,EAAM3+C,EAAO/kF,GAClB,IAAM+gpB,EAAapppB,KAAKmqH,KAWxB,OAAOnqH,KAAKkuM,SAAS9pM,SARF,SAAUiE,GAAK,WAC9B+gpB,EAAW5nD,WAAW,WAClBz1d,EAAKp0F,MAAM,EAAM,CAACtvC,OAMgB+kF,EAAO/kF,O,GA0BnDghpB,E,YACF,WAAY/mhB,GAAM,oBACdtiI,KAAKsiI,OAASA,EACdtiI,KAAKimI,eAAiB3D,EAAOj3G,kBAAkB,kBAAM,IAAI89nB,EAAejqD,KAAK9ihB,WAC7Ep8E,KAAKmmI,cAAgB7D,EAAOh2F,IAAI,kBAAM,IAAI68mB,EAAejqD,KAAK9ihB,QAAS,SA6BzEktkB,EAAgB,CAAC,eAGjBC,EAAgB,SAACvf,EAAOl+lB,EAAYq+E,GAAsB,IAAhBniG,EAAgB,uDAAN,GACtD,OAAO,IAAImhH,MAAM6ggB,EAAO,CACpB93nB,IAAK,SAACkgG,EAAGjxG,GAAJ,OAAagpH,EAAK9+F,kBAAkB,WACrC,IAAI1gB,EACJ,GAAIq/nB,EAAM7ooB,GAIN,OAH6E,QAAxEwJ,EAAKqd,aAAyC,EAASA,EAAQwhoB,WAAwB,IAAP7+oB,OAAgB,EAASA,EAAGuH,MAC7G8V,EAAQwhoB,IAAIt3oB,IAAI/Q,EAAM6ooB,EAAM7ooB,IAEzB6ooB,EAAM7ooB,GAEjB,GAAImopB,EAAcrgpB,QAAQ9H,IAAS,EAC/B,OAAO,aAGX,IAAM+yB,EAAU4X,EAAWg8H,YAAYzpJ,KAAK,SAAAgsV,GACxC,IAAMwjL,EAAMxjL,GAAOA,EAAIlpW,GAEvB,MAAmB,mBAAR0shB,EACAA,EAAItjf,KAAK8/T,GAEXwjL,GAAOA,EAAIxvgB,KACTwvgB,EAAIxvgB,KAAK,SAACia,GAAD,OAAS6xF,EAAK79E,IAAI,kBAAMhU,MAGjC6xF,EAAK79E,IAAI,kBAAMuhf,MAI9B,OAAO,IAAI1kZ,MAAM,aAAW,CACxBj3H,IAAK,SAACkgG,EAAGjxG,GAAJ,OAAa+yB,EAAQ/yB,IAE1Bw2C,MAAO,SAACshM,EAAM7mI,EAAGvyG,GAAV,OAAmBq0B,EAAQ7V,KAAK,SAAAgsM,GACnC,IAAI1/M,EACE2tB,EAAM+xL,GAAMA,EAAE,WAAF,cAAMxqN,IAIxB,OAH6E,QAAxE8K,EAAKqd,aAAyC,EAASA,EAAQwhoB,WAAwB,IAAP7+oB,OAAgB,EAASA,EAAGgtC,QAC7G3vB,EAAQwhoB,IAAI7xmB,MAAMx2C,EAAMtB,EAAMy4B,GAE3BA,aAMrBmxnB,EAAe,SAACC,EAAapub,GAC/BA,EAAajoN,QAAQ,SAACs2oB,GAClBntoB,OAAOquJ,oBAAoB8+e,EAASj3nB,WAAai3nB,GAAUt2oB,QAAQ,SAAClS,GAChEqb,OAAOu3B,eAAe21mB,EAAYh3nB,UAAWvxB,EAAMqb,OAAOutH,yBAAyB4/gB,EAASj3nB,WAAai3nB,EAAUxopB,SAKzHyopB,EAAmB,IAAI,IAAe,4BACtCC,EAAoB,IAAI,IAAe,iCAGvCC,E,+CAEApvd,EAAU,IAAI,IAAQ,SAC5B,SAASqvd,EAAoB/hoB,EAASmiG,EAAMsb,GACxC,IACMrtG,EAAiC,iBAAjBqtG,GAA6BA,GAAgB,GACnErtG,EAAOj3B,KAAOi3B,EAAOj3B,MAFgB,iBAAjBskI,GAA6BA,GAAgB,YAIjE,IAGMW,EAHc,IAAS4jhB,KAAK70oB,OAAO,SAAAixH,GAAG,OAAIA,GAAOA,EAAIjlI,OAASi3B,EAAOj3B,OAAM,IAGrDgpH,EAAK9+F,kBAAkB,kBAAM,IAAS4+nB,cAAcjioB,EAASoQ,KACzF,IACI,GAAIoB,KAAKC,UAAUzR,KAAawR,KAAKC,UAAU2sG,EAAIp+G,SAAU,CACzD,IAAMkioB,IAAQ9snB,EAAO+snB,IACrB1ukB,EAAI,QAAD,UAAa2qD,EAAIjlI,KAAjB,mEAAgF+opB,EAAM,yDAA2D,OAG5J,MAAOj2nB,IACP,OAAOmyG,EAEX,IAIM3qD,EAAM,SAACua,GACT,GAAI,gBAAkC,oBAAZjrD,QAAyB,8BADhClrC,EACgC,iCADhCA,EACgC,mBAC/C,EAAAkrC,SAAQirD,GAAR,QAAkBn2F,KAK1B,SAASuqpB,EAAe5vV,EAAUqkF,EAAYz4Q,EAAKp3H,EAAInP,GACnD,MAAkC0+O,WAAW8ra,+BAA0Bn4oB,IAAIsoT,IAAa,GAAxF,iBAAO1mS,EAAP,KAAoBw2nB,EAApB,WACA,GAAIx2nB,EAAU,CACV,IACI,GAAIj0B,EAAKuI,KAAK,SAACwvC,EAAK/vC,GAChB,IAAM0ipB,EAAYD,EAAWzipB,GAC7B,OAAI+vC,GAAsB,iBAARA,EACPpe,KAAKC,UAAUme,KAASpe,KAAKC,UAAU8wnB,GAGvC3ymB,IAAQ2ymB,IAEnB,CACA,IAAML,IAAQ9snB,EAAO+snB,IACrB1ukB,EAAI,QAAD,UAAaojU,EAAb,2CAA0Dz4Q,EAAIjlI,KAA9D,0DAAoH+opB,EAAM,wDAA0D,MAG/L,MAAOj2nB,IACP,OAAOH,EAGP,IAAMknX,EAAchsY,IAEpB,OADAuvO,WAAW8ra,+BAA0Bh2oB,IAAImmT,EAAzC,CAAoDwgF,GAApD,mBAAoEn7Y,KAC7Dm7Y,EAxBfz8J,WAAW8ra,iCAA8B9ra,WAAW8ra,+BAA4B,IAAI58oB,KA2BpF,IAAM+8oB,EAAwB,CAC1BjopB,QAASunpB,EACT1goB,WAAY2goB,EACZ5goB,KAAM,CACFygoB,EACA,IACA,CAAC,IAAI,IAAYC,K,iBAGnBY,E,WAEF,WAAY/khB,GAAU,oBAClB,IAASwzG,gBAAgB,cAAex+C,EAAQ6B,KAAM72D,EAAWzzG,YACjE,IAASinN,gBAAgB,UAAW,IAAU38C,M,sDAElD,SAAqBv0K,EAASy9G,GAC1B,MAAO,CACH1mB,SAAU0riB,EACVt4nB,UAAW,CACP,CAAE5vB,QAASqnpB,EAAkBhxoB,SAAUoP,GACvC,CAAEzlB,QAASsnpB,EAAmBjxoB,SAAU6sH,S,UAKxDglhB,EAAkBlqpB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKiqpB,GAAmB,KAAgB,OACrHA,EAAkBvxoB,UAAO,KAAwB,CAAExY,KAAM+ppB,IACzDA,EAAkBtxoB,UAAO,KAAwB,CAAEgZ,UAAW,CAACq4nB,K,kECxO/D,IAAIhppB,EAAU6tC,OAAO3c,UAAUlxB,QAC3BkppB,EAAkB,OAElBlnB,EAES,UAGbpmmB,EAAOC,QAAU,CACb,QAAWmmmB,EACXz9Z,WAAY,CACRj2L,QAAS,SAAUvuC,GACf,OAAOC,EAAQ0zB,KAAK3zB,EAAOmppB,EAAiB,MAEhDC,QAAS,SAAUpppB,GACf,OAAO8tC,OAAO9tC,KAGtBuuC,QAdS,UAeT66mB,QAASnnB,I,wBCZJ,SAAUnhnB,GAAU,aAIdA,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAwFL,MAC5F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,2DAA2DhB,MACjE,KAEJiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,OAGxB2J,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB/gB,CAAQ,EAAQ,U,sBCKjD,SAAUud,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACTD,EAAG,CAAC,cAAe,gBACnBiC,EAAG,CAAC,cAAe,gBACnB/M,EAAG,CAAC,UAAW,aACfiN,GAAI,CAACS,EAAS,QAASA,EAAS,UAChCR,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOs3I,EAAgBj6I,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAG/C0F,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,wFAAqFL,MACzF,KAEJM,YACI,gEAA6DN,MAAM,KACvE0U,kBAAkB,EAClB1T,SACI,8DAA8DhB,MAC1D,KAERiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAGi6I,EACHj4I,GAAI,aACJC,EAAGg4I,EACH/3I,GAAI,aACJhN,EAAG+kJ,EACH93I,GAAI83I,EACJ73I,EAAG63I,EACH53I,GAAI,YACJC,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB/gB,CAAQ,EAAQ,U,kFCE7C8lpB,EAVa,WACtB,SAASC,IAIL,OAHAx2nB,MAAMa,KAAKl1B,MACXA,KAAKg6B,QAAU,uBACfh6B,KAAKmB,KAAO,eACLnB,KAGX,OADA6qpB,EAAiBn4nB,UAAYlW,OAAOlX,OAAO+uB,MAAM3B,WAC1Cm4nB,EARe,G,4GCGpB,SAAUC,EAAY7+W,EAAK8+W,GAAiC,IAAjBj/gB,EAAiB,uDAAL,IACzD,OAAO,SAACvlH,GACJ,IAAIykoB,EAAkB,OAAAxsa,EAAA,GAAOytD,GACzBg/W,EAAUD,GAAoB/+W,EAAMngK,EAAU//E,MAASxtC,KAAKqiC,IAAIqrP,GACpE,OAAO1lR,EAAO8V,KAAK,IAAI,EAAoB4unB,EAASD,EAAiBD,EAAgBj/gB,K,IAGvF,E,8BACF,WAAYm/gB,EAASD,EAAiBD,EAAgBj/gB,GAAS,oBAC3D9rI,KAAKirpB,QAAUA,EACfjrpB,KAAKgrpB,gBAAkBA,EACvBhrpB,KAAK+qpB,eAAiBA,EACtB/qpB,KAAK8rI,UAAYA,G,mBAErB,SAAKvvG,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAsBq4B,EAAYv8B,KAAKgrpB,gBAAiBhrpB,KAAKirpB,QAASjrpB,KAAK+qpB,eAAgB/qpB,KAAK8rI,gB,GAG9H,E,YACF,WAAYrvG,EAAauunB,EAAiBC,EAASF,EAAgBj/gB,GAAS,M,MAAA,2B,EACxE,K,EAAA,E,EAAA,CAAMrvG,G,kBAAN,E,iGACKuunB,gBAAkBA,EACvB,EAAKC,QAAUA,EACf,EAAKF,eAAiBA,EACtB,EAAKj/gB,UAAYA,EACjB,EAAKo/gB,kBANmE,E,oEAa5E,WACI,IAAQnolB,EAAW/iE,KAAX+iE,OACJA,EACA/iE,KAAK+iE,OAASA,EAAO3+D,SAASpE,KAAMA,KAAKirpB,SAGzCjrpB,KAAK6C,IAAI7C,KAAK+iE,OAAS/iE,KAAK8rI,UAAU1nI,SAAS+mpB,EAAsBC,gBAAiBprpB,KAAKirpB,QAASjrpB,S,mBAG5G,SAAMuB,G,UACGvB,KAAKgrpB,iBACNhrpB,KAAKkrpB,mB,EAET,E,EAAA,K,0DAAA,Q,wCAAA,CAAY3ppB,M,0BAEhB,WACIvB,KAAK+iE,YAASt+D,EACdzE,KAAK8rI,UAAY,KACjB9rI,KAAK+qpB,eAAiB,Q,8BAvB1B,SAAuBxunB,GACnB,IAAQwunB,EAAmBxunB,EAAnBwunB,eACRxunB,EAAW+yK,yBACX/yK,EAAW15B,IAAI,OAAAo+I,EAAA,GAAe8pgB,EAAgB,IAAI,IAAsBxunB,S,CAZ5C,K,YCjB9B,SAAU6xH,EAAQ69I,GAAsB,IAAjBngK,EAAiB,uDAAL,IACrC,OAAOg/gB,EAAY7+W,EAAK,OAAAtlK,EAAA,GAAW,IAAIikhB,GAAiB9+gB,K,sBCInD,SAAUzpH,GAAU,aAIXA,EAAOM,aAAa,WAAY,CAC1CC,OAAQ,qIAAwFL,MAC5F,KAEJM,YACI,qIAAwFN,MACpF,KAERgB,SAAU,uDAAkDhB,MAAM,KAClEiB,cAAe,uDAAkDjB,MAAM,KACvEkB,YAAa,uDAAkDlB,MAAM,KACrEoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACNC,EAAG,OACHC,GAAI,UACJ/B,EAAG,aACHgC,GAAI,gBACJC,EAAG,YACHC,GAAI,mBACJhN,EAAG,MACHiN,GAAI,WACJG,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyB/gB,CAAQ,EAAQ,U,sBCIjD,SAAUud,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFL,MAC7F,KAEJM,YAAa,kDAAkDN,MAAM,KACrEgB,SAAU,+CAA+ChB,MAAM,KAC/DiB,cAAe,8BAA8BjB,MAAM,KACnDkB,YAAa,uBAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVutB,cAAe,6BACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,WAAbC,EACOD,EACa,WAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbC,GAAsC,UAAbA,EACzBD,EAAO,QADX,GAIXC,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGf96B,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACNC,EAAG,kBACHC,GAAI,WACJ/B,EAAG,kBACHgC,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJhN,EAAG,WACHiN,GAAI,YACJG,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB/gB,CAAQ,EAAQ,U,sBCEjD,SAAUud,GAAU,aAIzB,IAAIi8J,EACI,8DAA8D/7J,MAC1D,KAER,EAAc,kDAAkDA,MAAM,KACtEE,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEGL,EAAOM,aAAa,QAAS,CACpCC,OAAQ,2FAA2FL,MAC/F,KAEJM,YAAa,SAAUC,EAAGC,GACtB,OAAKD,EAEM,QAAQE,KAAKD,GACb,EAAYD,EAAEG,SAEdq7J,EAAex7J,EAAEG,SAJjBq7J,GAOf57J,YAAaA,EACbQ,iBAAkBR,EAClBS,kBACI,+FACJC,uBACI,0FACJX,YAAaA,EACbY,gBAAiBZ,EACjBa,iBAAkBb,EAClBc,SAAU,6DAAuDhB,MAAM,KACvEiB,cAAe,2CAAqCjB,MAAM,KAC1DkB,YAAa,0BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE3D56B,QAAS,WACL,MAAO,mBAAmC,IAAjBpkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE9D36B,SAAU,WACN,MAAO,cAAiC,IAAjBrkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5D16B,QAAS,WACL,MAAO,cAAiC,IAAjBtkB,KAAKg/C,QAAgB,IAAM,IAAM,QAE5Dz6B,SAAU,WACN,MACI,0BACkB,IAAjBvkB,KAAKg/C,QAAgB,IAAM,IAC5B,QAGRx6B,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,gBACHC,GAAI,cACJ/B,EAAG,YACHgC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,YACHiN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAETksB,YAAa,sBA7GqBjtC,CAAQ,EAAQ,U,8TCHnD,IAAM,EAAb,YACI,WAAYyhB,GAAuC,MAA/B8koB,EAA+B,uDAAnB,EAAGv/gB,EAAgB,uDAAJu5B,EAAA,EAAI,4BAC/C,aACK9+I,OAASA,EACd,EAAK8koB,UAAYA,EACjB,EAAKv/gB,UAAYA,IACZ,OAAA8mB,EAAA,GAAUy4f,IAAcA,EAAY,KACrC,EAAKA,UAAY,GAEhBv/gB,GAA2C,mBAAvBA,EAAU1nI,WAC/B,EAAK0nI,UAAYu5B,EAAA,GAT0B,EADvD,+DAoBI,SAAW9oI,GAIP,OADkBv8B,KAAK8rI,UACN1nI,SAASknpB,EAAsB5ynB,SAHlC14B,KAAKqrpB,UAG8C,CAC7D9koB,OAHWvmB,KAAKumB,OAGRgW,kBAzBpB,qBAaI,SAAchW,GAAmC,IAA3B6mE,EAA2B,uDAAnB,EAAG0+C,EAAgB,uDAAJu5B,EAAA,EACzC,OAAO,IAAIimf,EAAsB/koB,EAAQ6mE,EAAO0+C,KAdxD,sBAgBI,SAAgBl0F,GAEZ,OAAO53C,KAAK6C,IADmB+0C,EAAvBrxB,OACeriB,UADQ0zC,EAAfrb,iBAjBxB,CAA2Ci+F,EAAA,GCFrC,SAAUwL,EAAY8F,GAAoB,IAAT1+C,EAAS,uDAAD,EAC3C,OAAO,SAAqC7mE,GACxC,OAAOA,EAAO8V,KAAK,IAAI,EAAoByvG,EAAW1+C,K,IAGxD,E,8BACF,WAAY0+C,EAAW1+C,GAAK,oBACxBptF,KAAK8rI,UAAYA,EACjB9rI,KAAKotF,MAAQA,G,mBAEjB,SAAK7wD,EAAYhW,GACb,OAAO,IAAI,EAAsBA,EAAQvmB,KAAKotF,MAAOptF,KAAK8rI,WAAW5nI,UAAUq4B,O,0lBCmBjFgvnB,E,+CAYAC,E,+CAiBAC,E,WAEF,WAAYh0nB,GAAO,+BAKfz3B,KAAK0rpB,gBAAkB,IAAIj+oB,IAI3BzN,KAAK2rpB,WAAa,KACbl0nB,EAIDz3B,KAAK4rpB,SADmB,iBAAZn0nB,EACI,WACZ,EAAKA,QAAU,IAAIhqB,IACnBgqB,EAAQlV,MAAM,MAAMlP,QAAQ,SAAAy4M,GACxB,IAAMniN,EAAQmiN,EAAK7iN,QAAQ,KAC3B,GAAIU,EAAQ,EAAG,CACX,IAAMxI,EAAO2qN,EAAKtiN,MAAM,EAAGG,GACrBgT,EAAMxb,EAAKyb,cACXrb,EAAQuqN,EAAKtiN,MAAMG,EAAQ,GAAGmT,OACpC,EAAK+uoB,uBAAuB1qpB,EAAMwb,GAC9B,EAAK8a,QAAQrjB,IAAIuI,GACjB,EAAK8a,QAAQvlB,IAAIyK,GAAK/Y,KAAKrC,GAG3B,EAAKk2B,QAAQpjB,IAAIsI,EAAK,CAACpb,QAOvB,WACZ,EAAKk2B,QAAU,IAAIhqB,IACnB+O,OAAOC,KAAKgb,GAASpkB,QAAQ,SAAAlS,GACzB,IAAI2S,EAAS2jB,EAAQt2B,GACfwb,EAAMxb,EAAKyb,cACK,iBAAX9I,IACPA,EAAS,CAACA,IAEVA,EAAO3P,OAAS,IAChB,EAAKszB,QAAQpjB,IAAIsI,EAAK7I,GACtB,EAAK+3oB,uBAAuB1qpB,EAAMwb,OAjC9C3c,KAAKy3B,QAAU,IAAIhqB,I,uCA8C3B,SAAItM,GAEA,OADAnB,KAAKslS,OACEtlS,KAAKy3B,QAAQrjB,IAAIjT,EAAKyb,iB,iBASjC,SAAIzb,GACAnB,KAAKslS,OACL,IAAMxxR,EAAS9T,KAAKy3B,QAAQvlB,IAAI/Q,EAAKyb,eACrC,OAAO9I,GAAUA,EAAO3P,OAAS,EAAI2P,EAAO,GAAK,O,kBAOrD,WAEI,OADA9T,KAAKslS,OACE/6R,MAAMjG,KAAKtE,KAAK0rpB,gBAAgB53oB,Y,oBAS3C,SAAO3S,GAEH,OADAnB,KAAKslS,OACEtlS,KAAKy3B,QAAQvlB,IAAI/Q,EAAKyb,gBAAkB,O,oBAWnD,SAAOzb,EAAMI,GACT,OAAOvB,KAAK4jJ,MAAM,CAAEziJ,OAAMI,QAAO4pI,GAAI,Q,iBAYzC,SAAIhqI,EAAMI,GACN,OAAOvB,KAAK4jJ,MAAM,CAAEziJ,OAAMI,QAAO4pI,GAAI,Q,oBAUzC,SAAOhqI,EAAMI,GACT,OAAOvB,KAAK4jJ,MAAM,CAAEziJ,OAAMI,QAAO4pI,GAAI,Q,oCAEzC,SAAuBhqI,EAAM2qpB,GACpB9rpB,KAAK0rpB,gBAAgBt3oB,IAAI03oB,IAC1B9rpB,KAAK0rpB,gBAAgBr3oB,IAAIy3oB,EAAQ3qpB,K,kBAGzC,WAAI,WACMnB,KAAK4rpB,WACH5rpB,KAAK4rpB,oBAAoBH,EACzBzrpB,KAAK+rpB,SAAS/rpB,KAAK4rpB,UAGnB5rpB,KAAK4rpB,WAET5rpB,KAAK4rpB,SAAW,KACV5rpB,KAAK2rpB,aACP3rpB,KAAK2rpB,WAAWt4oB,QAAQ,SAAAmnE,GAAM,OAAI,EAAKwxkB,YAAYxxkB,KACnDx6E,KAAK2rpB,WAAa,S,sBAI9B,SAAS9qiB,GAAK,WACVA,EAAMykL,OACN/6R,MAAMjG,KAAKu8G,EAAMppF,QAAQhb,QAAQpJ,QAAQ,SAAAsJ,GACrC,EAAK8a,QAAQpjB,IAAIsI,EAAKkkG,EAAMppF,QAAQvlB,IAAIyK,IACxC,EAAK+uoB,gBAAgBr3oB,IAAIsI,EAAKkkG,EAAM6qiB,gBAAgBx5oB,IAAIyK,Q,mBAGhE,SAAM69D,GACF,IAAMopE,EAAQ,IAAI6ngB,EAIlB,OAHA7ngB,EAAMgogB,SACC5rpB,KAAK4rpB,UAAY5rpB,KAAK4rpB,oBAAoBH,EAAezrpB,KAAK4rpB,SAAW5rpB,KAChF4jJ,EAAM+ngB,YAAc3rpB,KAAK2rpB,YAAc,IAAI3yoB,OAAO,CAACwhE,IAC5CopE,I,yBAEX,SAAYppE,GACR,IAAM79D,EAAM69D,EAAOr5E,KAAKyb,cACxB,OAAQ49D,EAAO2wD,IACX,IAAK,IACL,IAAK,IACD,IAAI5pI,EAAQi5E,EAAOj5E,MAInB,GAHqB,iBAAVA,IACPA,EAAQ,CAACA,IAEQ,IAAjBA,EAAM4C,OACN,OAEJnE,KAAK6rpB,uBAAuBrxkB,EAAOr5E,KAAMwb,GACzC,IAAM/c,GAAsB,MAAd46E,EAAO2wD,GAAanrI,KAAKy3B,QAAQvlB,IAAIyK,QAAOlY,IAAc,GACxE7E,EAAKgE,KAAL,MAAAhE,EAAI,YAAS2B,IACbvB,KAAKy3B,QAAQpjB,IAAIsI,EAAK/c,GACtB,MACJ,IAAK,IACD,IAAMqspB,EAAWzxkB,EAAOj5E,MACxB,GAAK0qpB,EAIA,CACD,IAAI3vB,EAAWt8nB,KAAKy3B,QAAQvlB,IAAIyK,GAChC,IAAK2/mB,EACD,OAGoB,KADxBA,EAAWA,EAASnnnB,OAAO,SAAA5T,GAAK,OAAiC,IAA7B0qpB,EAAShjpB,QAAQ1H,MACxC4C,QACTnE,KAAKy3B,QAAQllB,OAAOoK,GACpB3c,KAAK0rpB,gBAAgBn5oB,OAAOoK,IAG5B3c,KAAKy3B,QAAQpjB,IAAIsI,EAAK2/mB,QAd1Bt8nB,KAAKy3B,QAAQllB,OAAOoK,GACpB3c,KAAK0rpB,gBAAgBn5oB,OAAOoK,M,qBAsB5C,SAAQ3N,GAAE,WACNhP,KAAKslS,OACL/6R,MAAMjG,KAAKtE,KAAK0rpB,gBAAgBjvoB,QAC3BpJ,QAAQ,SAAAsJ,GAAG,OAAI3N,EAAG,EAAK08oB,gBAAgBx5oB,IAAIyK,GAAM,EAAK8a,QAAQvlB,IAAIyK,U,GAqBzEuvoB,E,wFAMF,SAAUvvoB,GACN,OAAOwvoB,EAAiBxvoB,K,yBAO5B,SAAYpb,GACR,OAAO4qpB,EAAiB5qpB,K,uBAO5B,SAAUob,GACN,OAAOoyB,mBAAmBpyB,K,yBAO9B,SAAYpb,GACR,OAAOwtC,mBAAmBxtC,O,GAGlC,SAAS6qpB,EAAYC,EAAWC,GAC5B,IAAM7ipB,EAAM,IAAIgE,IAgBhB,OAfI4+oB,EAAUlopB,OAAS,GAIJkopB,EAAU7qpB,QAAQ,MAAO,IAAI+gB,MAAM,KAC3ClP,QAAQ,SAAC0kB,GACZ,IAAMw0nB,EAAQx0nB,EAAM9uB,QAAQ,KAC5B,GAA6B,GAAVsjpB,EACf,CAACD,EAAME,UAAUz0nB,GAAQ,IACzB,CAACu0nB,EAAME,UAAUz0nB,EAAMvuB,MAAM,EAAG+ipB,IAASD,EAAMG,YAAY10nB,EAAMvuB,MAAM+ipB,EAAQ,KAFnF,mBAAO5voB,EAAP,KAAY2xB,EAAZ,KAGM69B,EAAO1iE,EAAIyI,IAAIyK,IAAQ,GAC7BwvD,EAAKvoE,KAAK0qC,GACV7kC,EAAI4K,IAAIsI,EAAKwvD,KAGd1iE,EAEX,SAAS0ipB,EAAiBlspB,GACtB,OAAO8pF,mBAAmB9pF,GACrBuB,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,K,IAUpBkrpB,E,WACF,aAAwB,WAAZ1koB,EAAY,uDAAF,GAIlB,GAJoB,oBACpBhoB,KAAKwjU,QAAU,KACfxjU,KAAK2spB,UAAY,KACjB3spB,KAAKqwS,QAAUroR,EAAQqoR,SAAW,IAAI67W,EAChClkoB,EAAQ2xW,WAAY,CACtB,GAAM3xW,EAAQ4koB,WACV,MAAM,IAAIv4nB,MAAJ,kDAEVr0B,KAAKyJ,IAAM2ipB,EAAYpkoB,EAAQ2xW,WAAY35X,KAAKqwS,cAEzCroR,EAAQ4koB,YACf5spB,KAAKyJ,IAAM,IAAIgE,IACf+O,OAAOC,KAAKuL,EAAQ4koB,YAAYv5oB,QAAQ,SAAAsJ,GACpC,IAAMpb,EAAQymB,EAAQ4koB,WAAWjwoB,GACjC,EAAKlT,IAAI4K,IAAIsI,EAAKpS,MAAMyL,QAAQzU,GAASA,EAAQ,CAACA,OAItDvB,KAAKyJ,IAAM,K,uCASnB,SAAIsuB,GAEA,OADA/3B,KAAKslS,OACEtlS,KAAKyJ,IAAI2K,IAAI2jB,K,iBAQxB,SAAIA,GACA/3B,KAAKslS,OACL,IAAMhtQ,EAAMt4B,KAAKyJ,IAAIyI,IAAI6lB,GACzB,OAASO,EAAMA,EAAI,GAAK,O,oBAQ5B,SAAOP,GAEH,OADA/3B,KAAKslS,OACEtlS,KAAKyJ,IAAIyI,IAAI6lB,IAAU,O,kBAMlC,WAEI,OADA/3B,KAAKslS,OACE/6R,MAAMjG,KAAKtE,KAAKyJ,IAAIgT,U,oBAQ/B,SAAOsb,EAAOx2B,GACV,OAAOvB,KAAK4jJ,MAAM,CAAE7rH,QAAOx2B,QAAO4pI,GAAI,Q,uBAO1C,SAAUrhD,GACN,IAAM05O,EAAU,GAYhB,OAXAhnT,OAAOC,KAAKqtE,GAAQz2E,QAAQ,SAAA0kB,GACxB,IAAMx2B,EAAQuoF,EAAO/xD,GACjBxtB,MAAMyL,QAAQzU,GACdA,EAAM8R,QAAQ,SAAA6sG,GACVsjN,EAAQ5/T,KAAK,CAAEm0B,QAAOx2B,MAAO2+G,EAAQirB,GAAI,QAI7Cq4L,EAAQ5/T,KAAK,CAAEm0B,QAAOx2B,QAAO4pI,GAAI,QAGlCnrI,KAAK4jJ,MAAM4/K,K,iBAQtB,SAAIzrS,EAAOx2B,GACP,OAAOvB,KAAK4jJ,MAAM,CAAE7rH,QAAOx2B,QAAO4pI,GAAI,Q,oBAS1C,SAAOpzG,EAAOx2B,GACV,OAAOvB,KAAK4jJ,MAAM,CAAE7rH,QAAOx2B,QAAO4pI,GAAI,Q,sBAM1C,WAAQ,WAEJ,OADAnrI,KAAKslS,OACEtlS,KAAKyc,OACPhT,IAAI,SAAAkT,GACL,IAAMkwoB,EAAO,EAAKx8W,QAAQy8W,UAAUnwoB,GAIpC,OAAO,EAAKlT,IAAIyI,IAAIyK,GAAKlT,IAAI,SAAAlI,GAAK,OAAIsrpB,EAAO,IAAM,EAAKx8W,QAAQ08W,YAAYxrpB,KACvEyuC,KAAK,OAIT76B,OAAO,SAAA4iB,GAAK,MAAc,KAAVA,IAChBiY,KAAK,O,mBAEd,SAAMwqC,GACF,IAAMopE,EAAQ,IAAI8ogB,EAAW,CAAEr8W,QAASrwS,KAAKqwS,UAG7C,OAFAzsJ,EAAM+ogB,UAAY3spB,KAAK2spB,WAAa3spB,KACpC4jJ,EAAM4/K,SAAWxjU,KAAKwjU,SAAW,IAAIxqT,OAAOwhE,GACrCopE,I,kBAEX,WAAI,WACiB,OAAb5jJ,KAAKyJ,MACLzJ,KAAKyJ,IAAM,IAAIgE,KAEI,OAAnBzN,KAAK2spB,YACL3spB,KAAK2spB,UAAUrnX,OACftlS,KAAK2spB,UAAUlwoB,OAAOpJ,QAAQ,SAAAsJ,GAAG,OAAI,EAAKlT,IAAI4K,IAAIsI,EAAK,EAAKgwoB,UAAUljpB,IAAIyI,IAAIyK,MAC9E3c,KAAKwjU,QAAQnwT,QAAQ,SAAAmnE,GACjB,OAAQA,EAAO2wD,IACX,IAAK,IACL,IAAK,IACD,IAAMvrI,GAAsB,MAAd46E,EAAO2wD,GAAa,EAAK1hI,IAAIyI,IAAIsoE,EAAOziD,YAAStzB,IAAc,GAC7E7E,EAAKgE,KAAK42E,EAAOj5E,OACjB,EAAKkI,IAAI4K,IAAImmE,EAAOziD,MAAOn4B,GAC3B,MACJ,IAAK,IACD,QAAqB6E,IAAjB+1E,EAAOj5E,MAaN,CACD,EAAKkI,IAAI8I,OAAOioE,EAAOziD,OACvB,MAdA,IAAI,EAAO,EAAKtuB,IAAIyI,IAAIsoE,EAAOziD,QAAU,GACnCglJ,EAAM,EAAK9zK,QAAQuxE,EAAOj5E,QACnB,IAATw7K,GACA,EAAKx0I,OAAOw0I,EAAK,GAEjB,EAAK54K,OAAS,EACd,EAAKsF,IAAI4K,IAAImmE,EAAOziD,MAAO,GAG3B,EAAKtuB,IAAI8I,OAAOioE,EAAOziD,UAS3C/3B,KAAK2spB,UAAY3spB,KAAKwjU,QAAU,U,GAgC5C,SAASz4E,EAAcxpP,GACnB,MAA8B,oBAAhBo3K,aAA+Bp3K,aAAiBo3K,YAOlE,SAASq0e,EAAOzrpB,GACZ,MAAuB,oBAAT+3iB,MAAwB/3iB,aAAiB+3iB,KAO3D,SAAS2zG,EAAW1rpB,GAChB,MAA2B,oBAAb25B,UAA4B35B,aAAiB25B,S,IAYzDgynB,E,WACF,WAAYtikB,EAAQz2C,EAAKg5mB,EAAOC,GA+B5B,IAAIploB,EAkCJ,GAjEkC,oBAClChoB,KAAKm0C,IAAMA,EAQXn0C,KAAK8iC,KAAO,KAOZ9iC,KAAKqtpB,gBAAiB,EAItBrtpB,KAAKoiR,iBAAkB,EAOvBpiR,KAAKsiR,aAAe,OACpBtiR,KAAK4qF,OAASA,EAAOh9C,cA3E7B,SAAuBg9C,GACnB,OAAQA,GACJ,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,QACD,OAAO,EACX,QACI,OAAO,GAwEP0ikB,CAActtpB,KAAK4qF,SAAawikB,GAEhCptpB,KAAK8iC,UAAkBr+B,IAAV0opB,EAAuBA,EAAQ,KAC5CnloB,EAAUoloB,GAIVploB,EAAUmloB,EAGVnloB,IAEAhoB,KAAKqtpB,iBAAmBrloB,EAAQqloB,eAChCrtpB,KAAKoiR,kBAAoBp6P,EAAQo6P,gBAE3Bp6P,EAAQs6P,eACVtiR,KAAKsiR,aAAet6P,EAAQs6P,cAG1Bt6P,EAAQyP,UACVz3B,KAAKy3B,QAAUzP,EAAQyP,SAErBzP,EAAQ8hE,SACV9pF,KAAK8pF,OAAS9hE,EAAQ8hE,SAIzB9pF,KAAKy3B,UACNz3B,KAAKy3B,QAAU,IAAIg0nB,GAGlBzrpB,KAAK8pF,OAIL,CAED,IAAMA,EAAS9pF,KAAK8pF,OAAO73D,WAC3B,GAAsB,IAAlB63D,EAAO3lF,OAEPnE,KAAKijP,cAAgB9uM,MAEpB,CAED,IAAMo5mB,EAAOp5mB,EAAIlrC,QAAQ,KASzBjJ,KAAKijP,cAAgB9uM,IADC,IAAVo5mB,EAAc,IAAOA,EAAOp5mB,EAAIhwC,OAAS,EAAI,IAAM,IAC9B2lF,QArBrC9pF,KAAK8pF,OAAS,IAAI4ikB,EAClB1spB,KAAKijP,cAAgB9uM,E,iDA4B7B,WAEI,OAAkB,OAAdn0C,KAAK8iC,KACE,KAIPioN,EAAc/qP,KAAK8iC,OAASkqnB,EAAOhtpB,KAAK8iC,OAASmqnB,EAAWjtpB,KAAK8iC,OAC5C,iBAAd9iC,KAAK8iC,KACL9iC,KAAK8iC,KAGZ9iC,KAAK8iC,gBAAgB4pnB,EACd1spB,KAAK8iC,KAAK7Q,WAGI,iBAAdjyB,KAAK8iC,MAA0C,kBAAd9iC,KAAK8iC,MAC7Cv4B,MAAMyL,QAAQhW,KAAK8iC,MACZtJ,KAAKC,UAAUz5B,KAAK8iC,MAGxB9iC,KAAK8iC,KAAK7Q,a,qCAQrB,WAEI,OAAkB,OAAdjyB,KAAK8iC,MAILmqnB,EAAWjtpB,KAAK8iC,MAHT,KAQPkqnB,EAAOhtpB,KAAK8iC,MACL9iC,KAAK8iC,KAAKpiC,MAAQ,KAGzBqqP,EAAc/qP,KAAK8iC,MACZ,KAIc,iBAAd9iC,KAAK8iC,KACL,aAGP9iC,KAAK8iC,gBAAgB4pnB,EACd,kDAGc,iBAAd1spB,KAAK8iC,MAA0C,iBAAd9iC,KAAK8iC,MACxB,kBAAd9iC,KAAK8iC,KACL,mBAGJ,O,mBAEX,WAAiB,IAAX03C,EAAW,uDAAF,GAGLoQ,EAASpQ,EAAOoQ,QAAU5qF,KAAK4qF,OAC/Bz2C,EAAMqmC,EAAOrmC,KAAOn0C,KAAKm0C,IACzBmuO,EAAe9nM,EAAO8nM,cAAgBtiR,KAAKsiR,aAK3Cx/O,OAAwBr+B,IAAhB+1E,EAAO13C,KAAsB03C,EAAO13C,KAAO9iC,KAAK8iC,KAGxDs/O,OAA8C39Q,IAA3B+1E,EAAO4nM,gBAAiC5nM,EAAO4nM,gBAAkBpiR,KAAKoiR,gBACzFirY,OAA4C5opB,IAA1B+1E,EAAO6ykB,eAAgC7ykB,EAAO6ykB,eAAiBrtpB,KAAKqtpB,eAGxF51nB,EAAU+iD,EAAO/iD,SAAWz3B,KAAKy3B,QACjCqyD,EAAStP,EAAOsP,QAAU9pF,KAAK8pF,OAenC,YAb0BrlF,IAAtB+1E,EAAO6oK,aAEP5rN,EACIjb,OAAOC,KAAK+9D,EAAO6oK,YACd5tO,OAAO,SAACgiB,EAASt2B,GAAV,OAAmBs2B,EAAQpjB,IAAIlT,EAAMq5E,EAAO6oK,WAAWliP,KAAQs2B,IAG/E+iD,EAAOwzW,YAEPlkW,EAASttE,OAAOC,KAAK+9D,EAAOwzW,WACvBv4a,OAAO,SAACq0E,EAAQ/xD,GAAT,OAAmB+xD,EAAOz1E,IAAI0jB,EAAOyiD,EAAOwzW,UAAUj2Z,KAAS+xD,IAGxE,IAAIojkB,EAAYtikB,EAAQz2C,EAAKrR,EAAM,CACtCgnD,SACAryD,UACA41nB,iBACA/qY,eACAF,wB,GAiBRorY,EACH,SAAUA,G,OAIPA,EAAcA,EAAa,KAAW,GAAK,OAI3CA,EAAcA,EAAa,eAAqB,GAAK,iBAIrDA,EAAcA,EAAa,eAAqB,GAAK,iBAIrDA,EAAcA,EAAa,iBAAuB,GAAK,mBAIvDA,EAAcA,EAAa,SAAe,GAAK,WAI/CA,EAAcA,EAAa,KAAW,GAAK,OAxBpCA,EAAV,CADgB,IAgCXC,E,YAOF,WAAYnoX,GAAmD,IAA7CooX,EAA6C,uDAA7B,IAAKC,EAAwB,uDAAJ,KAAI,oBAG3D3tpB,KAAKy3B,QAAU6tQ,EAAK7tQ,SAAW,IAAIg0nB,EACnCzrpB,KAAKwrF,YAAyB/mF,IAAhB6gS,EAAK95M,OAAuB85M,EAAK95M,OAASkikB,EACxD1tpB,KAAK4tpB,WAAatoX,EAAKsoX,YAAcD,EACrC3tpB,KAAKm0C,IAAMmxP,EAAKnxP,KAAO,KAEvBn0C,KAAK6tpB,GAAK7tpB,KAAKwrF,QAAU,KAAOxrF,KAAKwrF,OAAS,MAYhDsikB,E,YAIF,aAAqB,MAATxoX,EAAS,uDAAF,GAAE,4BACjB,YAAMA,KACD5kS,KAAO8spB,EAAcO,eAFT,E,0DAQrB,WAAiB,IAAXvzkB,EAAW,uDAAF,GAGX,OAAO,IAAIszkB,EAAmB,CAC1Br2nB,QAAS+iD,EAAO/iD,SAAWz3B,KAAKy3B,QAChC+zD,YAA0B/mF,IAAlB+1E,EAAOgR,OAAuBhR,EAAOgR,OAASxrF,KAAKwrF,OAC3DoikB,WAAYpzkB,EAAOozkB,YAAc5tpB,KAAK4tpB,WACtCz5mB,IAAKqmC,EAAOrmC,KAAOn0C,KAAKm0C,UAAO1vC,Q,CAnBVgppB,GAgC3BO,E,YAIF,aAAqB,MAAT1oX,EAAS,uDAAF,GAAE,4BACjB,YAAMA,KACD5kS,KAAO8spB,EAAcS,SAC1B,EAAKnrnB,UAAqBr+B,IAAd6gS,EAAKxiQ,KAAqBwiQ,EAAKxiQ,KAAO,KAHjC,E,0DAKrB,WAAiB,IAAX03C,EAAW,uDAAF,GACX,OAAO,IAAIwzkB,EAAa,CACpBlrnB,UAAuBr+B,IAAhB+1E,EAAO13C,KAAsB03C,EAAO13C,KAAO9iC,KAAK8iC,KACvDrL,QAAS+iD,EAAO/iD,SAAWz3B,KAAKy3B,QAChC+zD,YAA2B/mF,IAAlB+1E,EAAOgR,OAAwBhR,EAAOgR,OAASxrF,KAAKwrF,OAC7DoikB,WAAYpzkB,EAAOozkB,YAAc5tpB,KAAK4tpB,WACtCz5mB,IAAKqmC,EAAOrmC,KAAOn0C,KAAKm0C,UAAO1vC,Q,CAfhBgppB,GAgCrBS,E,YACF,WAAY5oX,GAAI,kCAEZ,YAAMA,EAAM,EAAG,mBACVnkS,KAAO,oBAIZ,EAAK0spB,IAAK,EAKN,EAAK7znB,QADL,EAAKwxD,QAAU,KAAO,EAAKA,OAAS,IACpC,0CAAkD85M,EAAKnxP,KAAO,iBAG9D,oCAA4CmxP,EAAKnxP,KAAO,gBAAxD,aAA4EmxP,EAAK95M,OAAjF,YAA2F85M,EAAKsoX,YAEpG,EAAK54nB,MAAQswQ,EAAKtwQ,OAAS,KAjBf,E,wCADYy4nB,GAuChC,SAASU,EAAQnmoB,EAAS8a,GACtB,MAAO,CACHA,OACArL,QAASzP,EAAQyP,QACjB61G,QAAStlH,EAAQslH,QACjBxjD,OAAQ9hE,EAAQ8hE,OAChBujkB,eAAgBrloB,EAAQqloB,eACxB/qY,aAAct6P,EAAQs6P,aACtBF,gBAAiBp6P,EAAQo6P,iB,qBA0D3BgsY,E,8BACF,WAAY/hnB,GAAO,oBACfrsC,KAAKqsC,QAAUA,G,sBA4BnB,SAAQrqC,EAAOmyC,GAAiB,IACxBvY,EADwB,OAAZ5T,EAAY,uDAAF,GAG1B,GAAIhmB,aAAiBkrpB,EAGjBtxnB,EAAM55B,MAEL,CAKD,IAAIy1B,OAAUhzB,EAEVgzB,EADAzP,EAAQyP,mBAAmBg0nB,EACjBzjoB,EAAQyP,QAGR,IAAIg0nB,EAAYzjoB,EAAQyP,SAGtC,IAAIqyD,OAASrlF,EACPujB,EAAQ8hE,SAENA,EADA9hE,EAAQ8hE,kBAAkB4ikB,EACjB1koB,EAAQ8hE,OAGR,IAAI4ikB,EAAW,CAAEE,WAAY5koB,EAAQ8hE,UAItDluD,EAAM,IAAIsxnB,EAAYlrpB,EAAOmyC,OAAuB1vC,IAAjBujB,EAAQ8a,KAAqB9a,EAAQ8a,KAAO,KAAO,CAClFrL,UACAqyD,SACAujkB,eAAgBrloB,EAAQqloB,eAExB/qY,aAAct6P,EAAQs6P,cAAgB,OACtCF,gBAAiBp6P,EAAQo6P,kBAOjC,IAAMisY,EAAU,YAAGzynB,GAAK53B,KAAK,YAAU,SAAC43B,GAAD,OAAS,EAAKyQ,QAAQ85G,OAAOvqH,MAIpE,GAAI55B,aAAiBkrpB,GAAmC,WAApBlloB,EAAQslH,QACxC,OAAO+ghB,EAKX,IAAMC,EAAOD,EAAQrqpB,KAAK,YAAO,SAACskB,GAAD,OAAWA,aAAiB0loB,KAE7D,OAAQhmoB,EAAQslH,SAAW,QACvB,IAAK,OAMD,OAAQ1xG,EAAI0mP,cACR,IAAK,cACD,OAAOgsY,EAAKtqpB,KAAK,YAAI,SAACs0B,GAElB,GAAiB,OAAbA,EAAIwK,QAAmBxK,EAAIwK,gBAAgB61I,aAC3C,MAAM,IAAItkJ,MAAM,mCAEpB,OAAOiE,EAAIwK,QAEnB,IAAK,OACD,OAAOwrnB,EAAKtqpB,KAAK,YAAI,SAACs0B,GAElB,GAAiB,OAAbA,EAAIwK,QAAmBxK,EAAIwK,gBAAgBw2gB,MAC3C,MAAM,IAAIjlhB,MAAM,2BAEpB,OAAOiE,EAAIwK,QAEnB,IAAK,OACD,OAAOwrnB,EAAKtqpB,KAAK,YAAI,SAACs0B,GAElB,GAAiB,OAAbA,EAAIwK,MAAqC,iBAAbxK,EAAIwK,KAChC,MAAM,IAAIzO,MAAM,6BAEpB,OAAOiE,EAAIwK,QAEnB,IAAK,OACL,QAEI,OAAOwrnB,EAAKtqpB,KAAK,YAAI,SAACs0B,GAAD,OAASA,EAAIwK,QAE9C,IAAK,WAED,OAAOwrnB,EACX,QAEI,MAAM,IAAIj6nB,MAAJ,8CAAiDrM,EAAQslH,QAAzD,S,oBAYlB,SAAOn5F,GAAiB,IAAZnsB,EAAY,uDAAF,GAClB,OAAOhoB,KAAKo6E,QAAQ,SAAUjmC,EAAKnsB,K,iBAOvC,SAAImsB,GAAiB,IAAZnsB,EAAY,uDAAF,GACf,OAAOhoB,KAAKo6E,QAAQ,MAAOjmC,EAAKnsB,K,kBASpC,SAAKmsB,GAAiB,IAAZnsB,EAAY,uDAAF,GAChB,OAAOhoB,KAAKo6E,QAAQ,OAAQjmC,EAAKnsB,K,mBAoBrC,SAAMmsB,EAAKo6mB,GACP,OAAOvupB,KAAKo6E,QAAQ,QAASjmC,EAAK,CAC9B21C,QAAQ,IAAI4ikB,GAAavxnB,OAAOoznB,EAAe,kBAC/CjhhB,QAAS,OACTg1I,aAAc,W,qBAUtB,SAAQnuO,GAAiB,IAAZ,EAAY,uDAAF,GACnB,OAAOn0C,KAAKo6E,QAAQ,UAAWjmC,EAAK,K,mBAOxC,SAAMA,EAAKrR,GAAkB,IAAZ9a,EAAY,uDAAF,GACvB,OAAOhoB,KAAKo6E,QAAQ,QAASjmC,EAAKg6mB,EAAQnmoB,EAAS8a,M,kBAQvD,SAAKqR,EAAKrR,GAAkB,IAAZ9a,EAAY,uDAAF,GACtB,OAAOhoB,KAAKo6E,QAAQ,OAAQjmC,EAAKg6mB,EAAQnmoB,EAAS8a,M,iBAQtD,SAAIqR,EAAKrR,GAAkB,IAAZ9a,EAAY,uDAAF,GACrB,OAAOhoB,KAAKo6E,QAAQ,MAAOjmC,EAAKg6mB,EAAQnmoB,EAAS8a,Q,UAGzDsrnB,EAAW7tpB,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAK4tpB,GAAY,KAAgB7C,KAChG6C,EAAWxppB,WAAQ,KAA0B,CAAEC,MAAOuppB,EAAYtppB,QAASsppB,EAAW7tpB,Y,KAoBhFiupB,E,8BACF,WAAY3qpB,EAAMkmQ,GAAW,oBACzB/pQ,KAAK6D,KAAOA,EACZ7D,KAAK+pQ,YAAcA,G,qBAEvB,SAAOnuO,GACH,OAAO57B,KAAK+pQ,YAAYhnB,UAAUnnN,EAAK57B,KAAK6D,U,GAS9C4qpB,EAAoB,IAAI,IAAe,qB,iBACvCC,E,wFACF,SAAU9ynB,EAAK/3B,GACX,OAAOA,EAAKsiJ,OAAOvqH,O,UAG3B8ynB,EAAgBnupB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKkupB,IAC9EA,EAAgB9ppB,WAAQ,KAA0B,CAAEC,MAAO6ppB,EAAiB5ppB,QAAS4ppB,EAAgBnupB,Y,KAuP/FoupB,EAAc,eAmBdC,E,gEAMAC,E,8BACF,kC,oBACA,WACI,OAAQ,IAAIzjkB,mB,UAGpByjkB,EAAWtupB,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKqupB,IACpEA,EAAWjqpB,WAAQ,KAA0B,CAAEC,MAAOgqpB,EAAY/ppB,QAAS+ppB,EAAWtupB,Y,sBAYhFuupB,E,8BACF,WAAYC,GAAU,oBAClB/upB,KAAK+upB,WAAaA,G,qBAOtB,SAAOnznB,GAAG,WAGN,GAAmB,UAAfA,EAAIgvD,OACJ,MAAM,IAAIv2D,MAAJ,iFAGV,OAAO,IAAI,IAAW,SAAC+X,GAEnB,IAAM46C,EAAM,EAAK+nkB,WAAW7qkB,QAY5B,GAXA8C,EAAIqE,KAAKzvD,EAAIgvD,OAAQhvD,EAAIqnN,eACnBrnN,EAAIwmP,kBACNp7L,EAAIo7L,iBAAkB,GAG1BxmP,EAAInE,QAAQpkB,QAAQ,SAAClS,EAAM2S,GAAP,OAAkBkzE,EAAIsE,iBAAiBnqF,EAAM2S,EAAOk8B,KAAK,QAExEpU,EAAInE,QAAQrjB,IAAI,WACjB4yE,EAAIsE,iBAAiB,SAAU,sCAG9B1vD,EAAInE,QAAQrjB,IAAI,gBAAiB,CAClC,IAAM46oB,EAAepznB,EAAIqznB,0BAEJ,OAAjBD,GACAhokB,EAAIsE,iBAAiB,eAAgB0jkB,GAI7C,GAAIpznB,EAAI0mP,aAAc,CAClB,IAAMA,EAAe1mP,EAAI0mP,aAAa1lQ,cAMtCoqE,EAAIs7L,aAAkC,SAAjBA,EAA2BA,EAAe,OAGnE,IAAM4sY,EAAUtznB,EAAIuznB,gBAOhBC,EAAiB,KAGfC,EAAiB,WACnB,GAAuB,OAAnBD,EACA,OAAOA,EAGX,IAAM5jkB,EAAwB,OAAfxE,EAAIwE,OAAkB,IAAMxE,EAAIwE,OACzCoikB,EAAa5mkB,EAAI4mkB,YAAc,KAE/Bn2nB,EAAU,IAAIg0nB,EAAYzkkB,EAAIsokB,yBAG9Bn7mB,EA5GtB,SAAwB6yC,GACpB,MAAI,gBAAiBA,GAAOA,EAAIuokB,YACrBvokB,EAAIuokB,YAEX,mBAAmBvsoB,KAAKgkE,EAAIsokB,yBACrBtokB,EAAIwokB,kBAAkB,iBAE1B,KAqGiBC,CAAezokB,IAAQprD,EAAIuY,IAGvC,OADAi7mB,EAAiB,IAAItB,EAAmB,CAAEr2nB,UAAS+zD,SAAQoikB,aAAYz5mB,SAMrEu7mB,EAAS,WAEX,MAA2CL,IAArC53nB,EAAN,EAAMA,QAAS+zD,EAAf,EAAeA,OAAQoikB,EAAvB,EAAuBA,WAAYz5mB,EAAnC,EAAmCA,IAE/BrR,EAAO,KACI,MAAX0oD,IAEA1oD,OAAgC,IAAjBkkD,EAAI/6C,SAA4B+6C,EAAIyE,aAAezE,EAAI/6C,UAG3D,IAAXu/C,IACAA,EAAW1oD,EAAO,IAAM,GAM5B,IAAI+qnB,EAAKrikB,GAAU,KAAOA,EAAS,IAGnC,GAAyB,SAArB5vD,EAAI0mP,cAA2C,iBAATx/O,EAAmB,CAEzD,IAAM6snB,EAAe7snB,EACrBA,EAAOA,EAAKthC,QAAQmtpB,EAAa,IACjC,IAEI7rnB,EAAgB,KAATA,EAActJ,KAAKW,MAAM2I,GAAQ,KAE5C,MAAO9N,GAIH8N,EAAO6snB,EAGH9B,IAEAA,GAAK,EAEL/qnB,EAAO,CAAE9N,QAAOw0D,KAAM1mD,KAI9B+qnB,GAEAzhnB,EAASvoC,KAAK,IAAImqpB,EAAa,CAC3BlrnB,OACArL,UACA+zD,SACAoikB,aACAz5mB,IAAKA,QAAO1vC,KAIhB2nC,EAAStoC,YAITsoC,EAASpX,MAAM,IAAIk5nB,EAAkB,CAEjCl5nB,MAAO8N,EACPrL,UACA+zD,SACAoikB,aACAz5mB,IAAKA,QAAO1vC,MAOlBg7lB,EAAU,SAACzqkB,GACb,MAAgBq6nB,IACV/2nB,EAAM,IAAI41nB,EAAkB,CAC9Bl5nB,QACAw2D,OAAQxE,EAAIwE,QAAU,EACtBoikB,WAAY5mkB,EAAI4mkB,YAAc,gBAC9Bz5mB,IALJ,EAAQA,UAKQ1vC,IAEhB2nC,EAASpX,MAAMsD,IAMfs3nB,GAAc,EAGZC,EAAiB,SAACvnoB,GAEfsnoB,IACDxjnB,EAASvoC,KAAKwrpB,KACdO,GAAc,GAIlB,IAAIE,EAAgB,CAChBpvpB,KAAM8spB,EAAcuC,iBACpBC,OAAQ1noB,EAAM0noB,QAGd1noB,EAAM2noB,mBACNH,EAAclze,MAAQt0J,EAAMs0J,OAKP,SAArBhhJ,EAAI0mP,cAA6Bt7L,EAAIyE,eACrCqkkB,EAAcI,YAAclpkB,EAAIyE,cAGpCr/C,EAASvoC,KAAKispB,IAIZK,EAAe,SAAC7noB,GAGlB,IAAI8noB,EAAW,CACX1vpB,KAAM8spB,EAAc6C,eACpBL,OAAQ1noB,EAAM0noB,QAId1noB,EAAM2noB,mBACNG,EAASxze,MAAQt0J,EAAMs0J,OAG3BxwI,EAASvoC,KAAKuspB,IAqBlB,OAlBAppkB,EAAI17D,iBAAiB,OAAQokoB,GAC7B1okB,EAAI17D,iBAAiB,QAASm0kB,GAC9Bz4gB,EAAI17D,iBAAiB,UAAWm0kB,GAChCz4gB,EAAI17D,iBAAiB,QAASm0kB,GAE1B7jkB,EAAIyxnB,iBAEJrmkB,EAAI17D,iBAAiB,WAAYukoB,GAEjB,OAAZX,GAAoBlokB,EAAIspkB,QACxBtpkB,EAAIspkB,OAAOhloB,iBAAiB,WAAY6koB,IAIhDnpkB,EAAI2E,KAAKujkB,GACT9inB,EAASvoC,KAAK,CAAEnD,KAAM8spB,EAAc+C,OAG7B,WAEHvpkB,EAAIr7D,oBAAoB,QAAS8zkB,GACjCz4gB,EAAIr7D,oBAAoB,QAAS8zkB,GACjCz4gB,EAAIr7D,oBAAoB,OAAQ+joB,GAChC1okB,EAAIr7D,oBAAoB,UAAW8zkB,GAC/B7jkB,EAAIyxnB,iBACJrmkB,EAAIr7D,oBAAoB,WAAYkkoB,GACpB,OAAZX,GAAoBlokB,EAAIspkB,QACxBtpkB,EAAIspkB,OAAO3koB,oBAAoB,WAAYwkoB,IAI/CnpkB,EAAIq4d,aAAer4d,EAAIwpkB,MACvBxpkB,EAAIwiT,e,UAMxBslR,EAAevupB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKsupB,GAAgB,KAAgBF,KAC5GE,EAAelqpB,WAAQ,KAA0B,CAAEC,MAAOiqpB,EAAgBhqpB,QAASgqpB,EAAevupB,Y,KAe5FkwpB,EAAmB,IAAI,IAAe,oBACtCC,EAAmB,IAAI,IAAe,oBAMtCC,E,gEAKAC,E,8BACF,WAAYhoe,EAAK5hK,EAAU6poB,GAAU,oBACjC7wpB,KAAK4oL,IAAMA,EACX5oL,KAAKgnB,SAAWA,EAChBhnB,KAAK6wpB,WAAaA,EAClB7wpB,KAAK8wpB,iBAAmB,GACxB9wpB,KAAK+wpB,UAAY,KAIjB/wpB,KAAKgxpB,WAAa,G,uBAEtB,WACI,GAAsB,WAAlBhxpB,KAAKgnB,SACL,OAAO,KAEX,IAAMiqoB,EAAejxpB,KAAK4oL,IAAI63b,QAAU,GAMxC,OALIwwC,IAAiBjxpB,KAAK8wpB,mBACtB9wpB,KAAKgxpB,aACLhxpB,KAAK+wpB,UAAY,YAAkBE,EAAcjxpB,KAAK6wpB,YACtD7wpB,KAAK8wpB,iBAAmBG,GAErBjxpB,KAAK+wpB,c,UAGpBH,EAAwBrwpB,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKowpB,GAAyB,KAAgB,KAAW,KAAgB,KAAc,KAAgBH,KAChMG,EAAwBhspB,WAAQ,KAA0B,CAAEC,MAAO+rpB,EAAyB9rpB,QAAS8rpB,EAAwBrwpB,Y,sBAqBvH2wpB,E,8BACF,WAAYC,EAAc/pY,GAAU,oBAChCpnR,KAAKmxpB,aAAeA,EACpBnxpB,KAAKonR,WAAaA,G,wBAEtB,SAAUxrP,EAAK/3B,GACX,IAAMutpB,EAAQx1nB,EAAIuY,IAAIv3B,cAKtB,GAAmB,QAAfgf,EAAIgvD,QAAmC,SAAfhvD,EAAIgvD,QAAqBwmkB,EAAM35f,WAAW,YAClE25f,EAAM35f,WAAW,YACjB,OAAO5zJ,EAAKsiJ,OAAOvqH,GAEvB,IAAM/2B,EAAQ7E,KAAKmxpB,aAAavqhB,WAKhC,OAHc,OAAV/hI,GAAmB+2B,EAAInE,QAAQrjB,IAAIpU,KAAKonR,cACxCxrP,EAAMA,EAAIgoH,MAAM,CAAEnsH,QAASmE,EAAInE,QAAQpjB,IAAIrU,KAAKonR,WAAYviR,MAEzDhB,EAAKsiJ,OAAOvqH,O,UAG3Bs1nB,EAAoB3wpB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK0wpB,GAAqB,KAAgBP,GAAyB,KAAgBD,KACpKQ,EAAoBtspB,WAAQ,KAA0B,CAAEC,MAAOqspB,EAAqBpspB,QAASospB,EAAoB3wpB,Y,sBA4B3G8wpB,E,8BACF,WAAYC,EAASnyoB,GAAQ,oBACzBnf,KAAKsxpB,QAAUA,EACftxpB,KAAKmf,SAAWA,EAChBnf,KAAK8pQ,MAAQ,M,qBAEjB,SAAOluO,GACH,GAAmB,OAAf57B,KAAK8pQ,MAAgB,CACrB,IAAMynZ,EAAevxpB,KAAKmf,SAASjN,IAAIu8oB,EAAmB,IAC1DzupB,KAAK8pQ,MAAQynZ,EAAa17Y,YAAY,SAAChyQ,EAAMkmQ,GAAP,OAAuB,IAAIykZ,EAAuB3qpB,EAAMkmQ,IAAc/pQ,KAAKsxpB,SAErH,OAAOtxpB,KAAK8pQ,MAAM3jH,OAAOvqH,O,UAGjCy1nB,EAAwB9wpB,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAK6wpB,GAAyB,KAAgB7F,GAAc,KAAgB,OACrK6F,EAAwBzspB,WAAQ,KAA0B,CAAEC,MAAOwspB,EAAyBvspB,QAASuspB,EAAwB9wpB,Y,sBAgDvHixpB,E,4FAIF,WACI,MAAO,CACHzyiB,SAAUyyiB,EACVr/nB,UAAW,CACP,CAAE5vB,QAAS2upB,EAAqBv4oB,SAAU+1oB,O,yBAYtD,WAA+B,IAAZ1moB,EAAY,uDAAF,GACzB,MAAO,CACH+2F,SAAUyyiB,EACVr/nB,UAAW,CACPnK,EAAQ6ooB,WAAa,CAAEtupB,QAASkupB,EAAkB73oB,SAAUoP,EAAQ6ooB,YAAe,GACnF7ooB,EAAQo/P,WAAa,CAAE7kR,QAASmupB,EAAkB93oB,SAAUoP,EAAQo/P,YAAe,S,UAKnGoqY,EAAqBjxpB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAKgxpB,IACxFA,EAAqBt4oB,UAAO,KAAwB,CAAExY,KAAM8wpB,IAC5DA,EAAqBr4oB,UAAO,KAAwB,CAAEgZ,UAAW,CACzD++nB,EACA,CAAE3upB,QAASkspB,EAAmBjspB,YAAa0upB,EAAqBxnoB,OAAO,GACvE,CAAEnnB,QAASoupB,EAAwBh4oB,SAAUi4oB,GAC7C,CAAErupB,QAASkupB,EAAkB73oB,SAAU,cACvC,CAAErW,QAASmupB,EAAkB93oB,SAAU,mB,sBAuBzC64oB,E,sDAENA,EAAiBlxpB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKixpB,IAChFA,EAAiBv4oB,UAAO,KAAwB,CAAExY,KAAM+wpB,IACxDA,EAAiBt4oB,UAAO,KAAwB,CAAEgZ,UAAW,CACrDi8nB,EACA,CAAE7rpB,QAASgppB,EAAa5yoB,SAAU04oB,GAClCvC,EACA,CAAEvspB,QAASippB,EAAahppB,YAAasspB,GACrCD,EACA,CAAEtspB,QAASqspB,EAAYpspB,YAAaqspB,IACrCz1oB,QAAS,CAAC,CACLo4oB,EAAqBE,YAAY,CAC7Bb,WAAY,aACZzpY,WAAY,qB,kkCChhEtB,E,YACF,WAEAphQ,EAEAmuB,GAAG,oBACCn0C,KAAKgmB,GAAKA,EACVhmB,KAAKm0C,IAAMA,IAQb,E,YACF,WAEAnuB,EAEAmuB,GAIoB,MAFpBw9mB,EAEoB,uDAFA,aAEpBC,EAAoB,uDAAJ,KAAI,4BAChB,YAAM5roB,EAAImuB,KACLw9mB,kBAAoBA,EACzB,EAAKC,cAAgBA,EAHL,E,6DAMpB,WACI,oCAA8B5xpB,KAAKgmB,GAAnC,mBAAgDhmB,KAAKm0C,IAArD,U,CAhBsB,GA4BxB,E,YACF,WAEAnuB,EAEAmuB,EAEA09mB,GAAiB,kCACb,YAAM7roB,EAAImuB,KACL09mB,kBAAoBA,EAFZ,E,6DAKjB,WACI,kCAA4B7xpB,KAAKgmB,GAAjC,mBAA8ChmB,KAAKm0C,IAAnD,kCAAgFn0C,KAAK6xpB,kBAArF,U,CAboB,GA2BtB,E,YACF,WAEA7roB,EAEAmuB,EAEAghF,GAAM,kCACF,YAAMnvG,EAAImuB,KACLghF,OAASA,EAFZ,E,6DAKN,WACI,qCAA+Bn1H,KAAKgmB,GAApC,mBAAiDhmB,KAAKm0C,IAAtD,U,CAbuB,GAyBzB,E,YACF,WAEAnuB,EAEAmuB,EAEAnf,GAAK,kCACD,YAAMhP,EAAImuB,KACLnf,MAAQA,EAFZ,E,6DAKL,WACI,oCAA8Bh1B,KAAKgmB,GAAnC,mBAAgDhmB,KAAKm0C,IAArD,qBAAqEn0C,KAAKg1B,MAA1E,S,CAbsB,GAqBxB,E,YACF,WAEAhP,EAEAmuB,EAEA09mB,EAEAxppB,GAAK,kCACD,YAAM2d,EAAImuB,KACL09mB,kBAAoBA,EACzB,EAAKxppB,MAAQA,EAHZ,E,6DAML,WACI,qCAA+BrI,KAAKgmB,GAApC,mBAAiDhmB,KAAKm0C,IAAtD,kCAAmFn0C,KAAK6xpB,kBAAxF,qBAAsH7xpB,KAAKqI,MAA3H,S,CAhBuB,GA0BzB,E,YACF,WAEA2d,EAEAmuB,EAEA09mB,EAEAxppB,GAAK,kCACD,YAAM2d,EAAImuB,KACL09mB,kBAAoBA,EACzB,EAAKxppB,MAAQA,EAHZ,E,6DAKL,WACI,qCAA+BrI,KAAKgmB,GAApC,mBAAiDhmB,KAAKm0C,IAAtD,kCAAmFn0C,KAAK6xpB,kBAAxF,qBAAsH7xpB,KAAKqI,MAA3H,S,CAfuB,GAyBzB,E,YACF,WAEA2d,EAEAmuB,EAEA09mB,EAEAxppB,EAEAyppB,GAAc,kCACV,YAAM9roB,EAAImuB,KACL09mB,kBAAoBA,EACzB,EAAKxppB,MAAQA,EACb,EAAKyppB,eAAiBA,EAJZ,E,6DAMd,WACI,mCAA6B9xpB,KAAKgmB,GAAlC,mBAA+ChmB,KAAKm0C,IAApD,kCAAiFn0C,KAAK6xpB,kBAAtF,qBAAoH7xpB,KAAKqI,MAAzH,6BAAmJrI,KAAK8xpB,eAAxJ,S,CAlBqB,GA+BvB,E,YACF,WAEA9roB,EAEAmuB,EAEA09mB,EAEAxppB,GAAK,kCACD,YAAM2d,EAAImuB,KACL09mB,kBAAoBA,EACzB,EAAKxppB,MAAQA,EAHZ,E,6DAKL,WACI,iCAA2BrI,KAAKgmB,GAAhC,mBAA6ChmB,KAAKm0C,IAAlD,kCAA+En0C,KAAK6xpB,kBAApF,qBAAkH7xpB,KAAKqI,MAAvH,S,CAfmB,GAwBrB,E,YACF,WAEA2d,EAEAmuB,EAEA09mB,EAEAxppB,GAAK,kCACD,YAAM2d,EAAImuB,KACL09mB,kBAAoBA,EACzB,EAAKxppB,MAAQA,EAHZ,E,6DAKL,WACI,+BAAyBrI,KAAKgmB,GAA9B,mBAA2ChmB,KAAKm0C,IAAhD,kCAA6En0C,KAAK6xpB,kBAAlF,qBAAgH7xpB,KAAKqI,MAArH,S,CAfiB,GAyBnB,G,8BACF,WAEAw/Q,GAAK,oBACD7nR,KAAK6nR,MAAQA,G,uBAEjB,WACI,2CAAqC7nR,KAAK6nR,MAAM12I,KAAhD,S,GAUF,G,8BACF,WAEA02I,GAAK,oBACD7nR,KAAK6nR,MAAQA,G,uBAEjB,WACI,yCAAmC7nR,KAAK6nR,MAAM12I,KAA9C,S,GAWF,G,8BACF,WAEA4ghB,GAAQ,oBACJ/xpB,KAAK+xpB,SAAWA,G,uBAEpB,WAEI,4CADa/xpB,KAAK+xpB,SAASC,aAAehypB,KAAK+xpB,SAASC,YAAY7ghB,MAAQ,GAC5E,U,GAUF,G,8BACF,WAEA4ghB,GAAQ,oBACJ/xpB,KAAK+xpB,SAAWA,G,uBAEpB,WAEI,0CADa/xpB,KAAK+xpB,SAASC,aAAehypB,KAAK+xpB,SAASC,YAAY7ghB,MAAQ,GAC5E,U,GAWF,G,8BACF,WAEA4ghB,GAAQ,oBACJ/xpB,KAAK+xpB,SAAWA,G,uBAEpB,WAEI,uCADa/xpB,KAAK+xpB,SAASC,aAAehypB,KAAK+xpB,SAASC,YAAY7ghB,MAAQ,GAC5E,U,GAWF,G,8BACF,WAEA4ghB,GAAQ,oBACJ/xpB,KAAK+xpB,SAAWA,G,uBAEpB,WAEI,qCADa/xpB,KAAK+xpB,SAASC,aAAehypB,KAAK+xpB,SAASC,YAAY7ghB,MAAQ,GAC5E,U,GAQF,G,8BACF,WAEA8ghB,EAEAjopB,EAEA6gJ,GAAM,oBACF7qJ,KAAKiypB,YAAcA,EACnBjypB,KAAKgK,SAAWA,EAChBhK,KAAK6qJ,OAASA,G,uBAElB,WACI,IAAMqyB,EAAMl9K,KAAKgK,SAAL,UAAmBhK,KAAKgK,SAAS,GAAjC,aAAwChK,KAAKgK,SAAS,IAAO,KACzE,gCAA0BhK,KAAK6qJ,OAA/B,yBAAsDqyB,EAAtD,U,GAgBFg1e,GAAiB,UACjB,G,8BACF,WAAYpokB,GAAM,oBACd9pF,KAAK8pF,OAASA,GAAU,I,kBAE5B,SAAI3oF,GACA,OAAOqb,OAAOkW,UAAUgb,eAAexY,KAAKl1B,KAAK8pF,OAAQ3oF,K,iBAE7D,SAAIA,GACA,GAAInB,KAAKoU,IAAIjT,GAAO,CAChB,IAAMlB,EAAID,KAAK8pF,OAAO3oF,GACtB,OAAOoJ,MAAMyL,QAAQ/V,GAAKA,EAAE,GAAKA,EAErC,OAAO,O,oBAEX,SAAOkB,GACH,GAAInB,KAAKoU,IAAIjT,GAAO,CAChB,IAAMlB,EAAID,KAAK8pF,OAAO3oF,GACtB,OAAOoJ,MAAMyL,QAAQ/V,GAAKA,EAAI,CAACA,GAEnC,MAAO,K,gBAEX,WACI,OAAOuc,OAAOC,KAAKzc,KAAK8pF,Y,GAUhC,SAASqokB,GAAkBrokB,GACvB,OAAO,IAAI,GAAYA,GAG3B,SAASsokB,GAAyBp4nB,GAC9B,IAAMhF,EAAQX,MAAM,6BAA+B2F,GAEnD,OADAhF,EAAK,4BAA+B,EAC7BA,EAMX,SAASq9nB,GAAkBC,EAAUC,EAAc1qY,GAC/C,IAAMziO,EAAQyiO,EAAM12I,KAAK5uH,MAAM,KAC/B,GAAI6iC,EAAMjhD,OAASmupB,EAASnupB,OAExB,OAAO,KAEX,GAAwB,SAApB0jR,EAAM2qY,YACLD,EAAaj7Q,eAAiBlyV,EAAMjhD,OAASmupB,EAASnupB,QAEvD,OAAO,KAIX,IAFA,IAAMsupB,EAAY,GAET9opB,EAAQ,EAAGA,EAAQy7C,EAAMjhD,OAAQwF,IAAS,CAC/C,IAAM24I,EAAOl9F,EAAMz7C,GACb+lC,EAAU4inB,EAAS3opB,GAEzB,GADoB24I,EAAKmV,WAAW,KAEhCg7f,EAAUnwgB,EAAKt3F,UAAU,IAAMtb,OAE9B,GAAI4yG,IAAS5yG,EAAQyhG,KAEtB,OAAO,KAGf,MAAO,CAAEuhhB,SAAUJ,EAAS9opB,MAAM,EAAG47C,EAAMjhD,QAASsupB,aAmBxD,SAASE,GAAa52oB,EAAGC,GAGrB,IAKIW,EALEq9S,EAAKj+S,EAAIS,OAAOC,KAAKV,QAAKtX,EAC1Bw1T,EAAKj+S,EAAIQ,OAAOC,KAAKT,QAAKvX,EAChC,IAAKu1T,IAAOC,GAAMD,EAAG71T,QAAU81T,EAAG91T,OAC9B,OAAO,EAGX,IAAK,IAAI0D,EAAI,EAAGA,EAAImyT,EAAG71T,OAAQ0D,IAE3B,IAAK+qpB,GAAoB72oB,EADzBY,EAAMq9S,EAAGnyT,IACwBmU,EAAEW,IAC/B,OAAO,EAGf,OAAO,EAKX,SAASi2oB,GAAoB72oB,EAAGC,GAC5B,GAAIzR,MAAMyL,QAAQ+F,IAAMxR,MAAMyL,QAAQgG,GAAI,CACtC,GAAID,EAAE5X,SAAW6X,EAAE7X,OACf,OAAO,EACX,IAAM0upB,EAAU,YAAI92oB,GAAGF,OACjBi3oB,EAAU,YAAI92oB,GAAGH,OACvB,OAAOg3oB,EAAQz+f,MAAM,SAAC9lH,EAAK3kC,GAAN,OAAgBmppB,EAAQnppB,KAAW2kC,IAGxD,OAAOvyB,IAAMC,EAMrB,SAASsrP,GAAQ33N,GACb,OAAOplC,MAAMmoB,UAAU1Z,OAAO2+B,MAAM,GAAIhI,GAK5C,SAAS,GAAK5zB,GACV,OAAOA,EAAE5X,OAAS,EAAI4X,EAAEA,EAAE5X,OAAS,GAAK,KAQ5C,SAASkP,GAAQ5J,EAAKwpB,GAClB,IAAK,IAAMmb,KAAQ3kC,EACXA,EAAIikC,eAAeU,IACnBnb,EAASxpB,EAAI2kC,GAAOA,GAIhC,SAAS2knB,GAAmBxxpB,GACxB,OAAI,aAAcA,GACPA,EAEP,aAAWA,GAIJ,OAAA+C,EAAA,GAAKC,QAAQC,QAAQjD,IAEzB,OAAA0U,EAAA,GAAG1U,GAad,SAASyxpB,GAAa36oB,EAAW46oB,EAAWC,GACxC,OAAIA,EAOR,SAA0B76oB,EAAW46oB,GAEjC,OAAON,GAAat6oB,EAAW46oB,GARpBE,CAAiB96oB,EAAU+vT,YAAa6qV,EAAU7qV,cACrDgrV,GAAmB/6oB,EAAU+mE,KAAM6zkB,EAAU7zkB,MAsBzD,SAA6B/mE,EAAW46oB,GACpC,OAAOz2oB,OAAOC,KAAKw2oB,GAAW9upB,QAAUqY,OAAOC,KAAKpE,GAAWlU,QAC3DqY,OAAOC,KAAKw2oB,GAAW7+f,MAAM,SAAAz3I,GAAG,OAAIi2oB,GAAoBv6oB,EAAUsE,GAAMs2oB,EAAUt2oB,MAtB/E02oB,CAAoBh7oB,EAAU+vT,YAAa6qV,EAAU7qV,cACxDkrV,GAAqBj7oB,EAAU+mE,KAAM6zkB,EAAU7zkB,MAMvD,SAASg0kB,GAAmB/6oB,EAAW46oB,GACnC,IAAKM,GAAUl7oB,EAAUi6oB,SAAUW,EAAUX,UACzC,OAAO,EACX,GAAIj6oB,EAAUm7oB,mBAAqBP,EAAUO,iBACzC,OAAO,EACX,IAAK,IAAM5jnB,KAAKqjnB,EAAUnrpB,SAAU,CAChC,IAAKuQ,EAAUvQ,SAAS8nC,GACpB,OAAO,EACX,IAAKwjnB,GAAmB/6oB,EAAUvQ,SAAS8nC,GAAIqjnB,EAAUnrpB,SAAS8nC,IAC9D,OAAO,EAEf,OAAO,EAMX,SAAS0jnB,GAAqBj7oB,EAAW46oB,GACrC,OAAOQ,GAA2Bp7oB,EAAW46oB,EAAWA,EAAUX,UAEtE,SAASmB,GAA2Bp7oB,EAAW46oB,EAAWS,GACtD,GAAIr7oB,EAAUi6oB,SAASnupB,OAASuvpB,EAAevvpB,OAE3C,QAAKovpB,GADWl7oB,EAAUi6oB,SAAS9opB,MAAM,EAAGkqpB,EAAevvpB,QACnCuvpB,KAEpBT,EAAU37Q,cAIb,GAAIj/X,EAAUi6oB,SAASnupB,SAAWuvpB,EAAevvpB,OAAQ,CAC1D,IAAKovpB,GAAUl7oB,EAAUi6oB,SAAUoB,GAC/B,OAAO,EACX,IAAK,IAAM9jnB,KAAKqjnB,EAAUnrpB,SAAU,CAChC,IAAKuQ,EAAUvQ,SAAS8nC,GACpB,OAAO,EACX,IAAK0jnB,GAAqBj7oB,EAAUvQ,SAAS8nC,GAAIqjnB,EAAUnrpB,SAAS8nC,IAChE,OAAO,EAEf,OAAO,EAGP,IAAM,EAAU8jnB,EAAelqpB,MAAM,EAAG6O,EAAUi6oB,SAASnupB,QACrDN,EAAO6vpB,EAAelqpB,MAAM6O,EAAUi6oB,SAASnupB,QACrD,QAAKovpB,GAAUl7oB,EAAUi6oB,SAAU,MAE9Bj6oB,EAAUvQ,SAAV,SAEE2rpB,GAA2Bp7oB,EAAUvQ,SAAV,QAAoCmrpB,EAAWpvpB,G,IAiCnF,G,8BAEF,WAEAu7E,EAEAgpP,EAEAurV,GAAQ,oBACJ3zpB,KAAKo/E,KAAOA,EACZp/E,KAAKooU,YAAcA,EACnBpoU,KAAK2zpB,SAAWA,G,0BAEpB,WAII,OAHK3zpB,KAAK4zpB,iBACN5zpB,KAAK4zpB,eAAiBzB,GAAkBnypB,KAAKooU,cAE1CpoU,KAAK4zpB,iB,sBAGhB,WACI,OAAOC,GAAmB5lU,UAAUjuV,U,GAYtC,G,8BACF,WAEAsypB,EAEAxqpB,GAAQ,+BACJ9H,KAAKsypB,SAAWA,EAChBtypB,KAAK8H,SAAWA,EAEhB9H,KAAK4mC,OAAS,KACdvzB,GAAQvL,EAAU,SAAC7H,EAAGu8H,GAAJ,OAAUv8H,EAAE2mC,OAAS,K,0BAG3C,WACI,OAAO5mC,KAAKwzpB,iBAAmB,I,4BAGnC,WACI,OAAOh3oB,OAAOC,KAAKzc,KAAK8H,UAAU3D,S,sBAGtC,WACI,OAAO2vpB,GAAe9zpB,U,GA6BxB,G,8BACF,WAEAmxI,EAEA0qQ,GAAU,oBACN77Y,KAAKmxI,KAAOA,EACZnxI,KAAK67Y,WAAaA,G,yBAEtB,WAII,OAHK77Y,KAAK+zpB,gBACN/zpB,KAAK+zpB,cAAgB5B,GAAkBnypB,KAAK67Y,aAEzC77Y,KAAK+zpB,gB,sBAGhB,WACI,OAAOC,GAAch0pB,U,GAM7B,SAASuzpB,GAAUU,EAAIztY,GACnB,OAAIytY,EAAG9vpB,SAAWqiR,EAAGriR,QAEd8vpB,EAAG7/f,MAAM,SAACr4I,EAAGlU,GAAJ,OAAUkU,EAAEo1H,OAASq1I,EAAG3+Q,GAAGspI,O,IA4BzC,G,+CAoBA,G,oFAEF,SAAMh9F,GACF,IAAMo1F,EAAI,IAAI,GAAUp1F,GACxB,OAAO,IAAI,GAAQo1F,EAAE2qhB,mBAAoB3qhB,EAAE4qhB,mBAAoB5qhB,EAAE6qhB,mB,uBAGrE,SAAUnkP,GACN,IAiGsBnmV,EACpBuqkB,EAlGI3knB,EAAU,IAAH,OAAO4knB,GAAiBrkP,EAAK7wV,MAAM,IAC1C30C,GAgGgBq/C,EAhGammV,EAAK7nG,aAiGtCisV,EAAY73oB,OAAOC,KAAKqtE,GAAQrgF,IAAI,SAACtI,GACvC,IAAMI,EAAQuoF,EAAO3oF,GACrB,OAAOoJ,MAAMyL,QAAQzU,GACjBA,EAAMkI,IAAI,SAAAxJ,GAAC,gBAAOs0pB,GAAepzpB,GAAtB,YAA+BozpB,GAAet0pB,MAAM+vC,KAAK,KADjE,UAEAuknB,GAAepzpB,GAFf,YAEwBozpB,GAAehzpB,OAEjC4C,OAAV,WAAuBkwpB,EAAUrknB,KAAK,MAAS,IAtG5C2jnB,EAAW,iBAAO1jP,EAAK0jP,SAAZ,WAmEdz6e,UAnEwE+2P,EAAK0jP,WAAc,GAC9F,gBAAUjknB,GAAV,OAAoBjF,GAApB,OAA4BkpnB,O,GAG9BE,GAAqB,IAAI,GAC/B,SAASC,GAAepknB,GACpB,OAAOA,EAAQ4inB,SAAS7opB,IAAI,SAAA8/H,GAAC,OAAIyqhB,GAAczqhB,KAAIv5F,KAAK,KAE5D,SAASsknB,GAAiB5knB,EAAS0vC,GAC/B,IAAK1vC,EAAQ4nW,cACT,OAAOw8Q,GAAepknB,GAE1B,GAAI0vC,EAAM,CACN,IAAMouC,EAAU99E,EAAQ5nC,SAAR,QACZwspB,GAAiB5knB,EAAQ5nC,SAAR,SAAkC,GACnD,GACEA,EAAW,GAMjB,OALAuL,GAAQq8B,EAAQ5nC,SAAU,SAAC7H,EAAGu8H,GACtBA,IAAM01hB,IACNpqpB,EAASlE,KAAT,UAAiB44H,EAAjB,YAAsB83hB,GAAiBr0pB,GAAG,OAG3C6H,EAAS3D,OAAS,EAAlB,UAAyBqpH,EAAzB,YAAoC1lH,EAASkoC,KAAK,MAAlD,KAA6Dw9E,EAGpE,IAAM,EAjFd,SAA8B99E,EAAS1gC,GACnC,IAAIspB,EAAM,GAWV,OAVAjlB,GAAQq8B,EAAQ5nC,SAAU,SAACkyI,EAAOw6gB,GAC1BA,IAAgBtC,KAChB55nB,EAAMA,EAAItf,OAAOhK,EAAGgrI,EAAOw6gB,OAGnCnhpB,GAAQq8B,EAAQ5nC,SAAU,SAACkyI,EAAOw6gB,GAC1BA,IAAgBtC,KAChB55nB,EAAMA,EAAItf,OAAOhK,EAAGgrI,EAAOw6gB,OAG5Bl8nB,EAqEcm8nB,CAAqB/knB,EAAS,SAACzvC,EAAGu8H,GAC/C,OAAIA,IAAM01hB,GACC,CAACoC,GAAiB5knB,EAAQ5nC,SAAR,SAAkC,IAExD,CAAC,GAAD,OAAI00H,EAAJ,YAAS83hB,GAAiBr0pB,GAAG,OAGxC,OAA6C,IAAzCuc,OAAOC,KAAKizB,EAAQ5nC,UAAU3D,QAAoD,MAApCurC,EAAQ5nC,SAAR,QAC9C,UAAUgspB,GAAepknB,GAAzB,YAAqC,EAAS,IAElD,UAAUoknB,GAAepknB,GAAzB,aAAsC,EAASM,KAAK,MAApD,KASR,SAAS0knB,GAAgB9voB,GACrB,OAAOmlE,mBAAmBnlE,GACrBpjB,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KAQ1B,SAAS+ypB,GAAe3voB,GACpB,OAAO8voB,GAAgB9voB,GAAGpjB,QAAQ,QAAS,KAkB/C,SAASmzpB,GAAiB/voB,GACtB,OAAO8voB,GAAgB9voB,GAAGpjB,QAAQ,MAAO,OAAOA,QAAQ,MAAO,OAAOA,QAAQ,QAAS,KAE3F,SAASitC,GAAO7pB,GACZ,OAAOmqB,mBAAmBnqB,GAI9B,SAASgwoB,GAAYhwoB,GACjB,OAAO6pB,GAAO7pB,EAAEpjB,QAAQ,MAAO,QAEnC,SAASwypB,GAAc7ihB,GACnB,gBAAUwjhB,GAAiBxjhB,EAAKA,OAAhC,QAE2BrnD,EAFmCqnD,EAAK0qQ,WAG5Dr/X,OAAOC,KAAKqtE,GACdrgF,IAAI,SAAAkT,GAAG,iBAAQg4oB,GAAiBh4oB,GAAzB,YAAiCg4oB,GAAiB7qkB,EAAOntE,OAChEqzB,KAAK,MAHd,IAA+B85C,EAc/B,IAAM+qkB,GAAa,gBACnB,SAASC,GAAcpmnB,GACnB,IAAM4C,EAAQ5C,EAAI4C,MAAMujnB,IACxB,OAAOvjnB,EAAQA,EAAM,GAAK,GAE9B,IAAMyjnB,GAAiB,YAMjBC,GAAuB,WAMvB,G,8BACF,WAAY7gnB,GAAG,oBACXn0C,KAAKm0C,IAAMA,EACXn0C,KAAK6+O,UAAY1qM,G,+BAErB,WAEI,OADAn0C,KAAKi1pB,gBAAgB,KACE,KAAnBj1pB,KAAK6+O,WAAoB7+O,KAAKk1pB,eAAe,MAAQl1pB,KAAKk1pB,eAAe,KAClE,IAAI,GAAgB,GAAI,IAG5B,IAAI,GAAgB,GAAIl1pB,KAAKm1pB,mB,8BAExC,WACI,IAAMrrkB,EAAS,GACf,GAAI9pF,KAAKi1pB,gBAAgB,KACrB,GACIj1pB,KAAKo1pB,gBAAgBtrkB,SAChB9pF,KAAKi1pB,gBAAgB,MAElC,OAAOnrkB,I,2BAEX,WACI,OAAO9pF,KAAKi1pB,gBAAgB,KAAOlmnB,mBAAmB/uC,KAAK6+O,WAAa,O,2BAE5E,WACI,GAAuB,KAAnB7+O,KAAK6+O,UACL,MAAO,GAEX7+O,KAAKi1pB,gBAAgB,KACrB,IAAM3C,EAAW,GAIjB,IAHKtypB,KAAKk1pB,eAAe,MACrB5C,EAAS1upB,KAAK5D,KAAKq1pB,gBAEhBr1pB,KAAKk1pB,eAAe,OAASl1pB,KAAKk1pB,eAAe,QAAUl1pB,KAAKk1pB,eAAe,OAClFl1pB,KAAKg3J,QAAQ,KACbs7f,EAAS1upB,KAAK5D,KAAKq1pB,gBAEvB,IAAIvtpB,EAAW,GACX9H,KAAKk1pB,eAAe,QACpBl1pB,KAAKg3J,QAAQ,KACblvJ,EAAW9H,KAAKs1pB,aAAY,IAEhC,IAAIh9nB,EAAM,GAOV,OANIt4B,KAAKk1pB,eAAe,OACpB58nB,EAAMt4B,KAAKs1pB,aAAY,KAEvBhD,EAASnupB,OAAS,GAAKqY,OAAOC,KAAK3U,GAAU3D,OAAS,KACtDm0B,EAAG,QAAmB,IAAI,GAAgBg6nB,EAAUxqpB,IAEjDwwB,I,0BAIX,WACI,IAAM64G,EAAO2jhB,GAAc90pB,KAAK6+O,WAChC,GAAa,KAAT1tG,GAAenxI,KAAKk1pB,eAAe,KACnC,MAAM,IAAI7goB,MAAJ,0DAA6Dr0B,KAAK6+O,UAAlE,OAGV,OADA7+O,KAAKg3J,QAAQ7lB,GACN,IAAI,GAAW1iG,GAAO0iG,GAAOnxI,KAAKu1pB,uB,+BAE7C,WAEI,IADA,IAAMzrkB,EAAS,GACR9pF,KAAKi1pB,gBAAgB,MACxBj1pB,KAAKw1pB,WAAW1rkB,GAEpB,OAAOA,I,wBAEX,SAAWA,GACP,IAAMntE,EAAMm4oB,GAAc90pB,KAAK6+O,WAC/B,GAAKliO,EAAL,CAGA3c,KAAKg3J,QAAQr6I,GACb,IAAIpb,EAAQ,GACZ,GAAIvB,KAAKi1pB,gBAAgB,KAAM,CAC3B,IAAMQ,EAAaX,GAAc90pB,KAAK6+O,WAClC42a,GAEAz1pB,KAAKg3J,QADLz1J,EAAQk0pB,GAIhB3rkB,EAAOr7C,GAAO9xB,IAAQ8xB,GAAOltC,M,6BAGjC,SAAgBuoF,GACZ,IAhGEx4C,EAgGI30B,GAhGJ20B,EAgG2BtxC,KAAK6+O,UAhGpBvtM,MAAMyjnB,KACTzjnB,EAAM,GAAK,GAgGtB,GAAK30B,EAAL,CAGA3c,KAAKg3J,QAAQr6I,GACb,IAAIpb,EAAQ,GACZ,GAAIvB,KAAKi1pB,gBAAgB,KAAM,CAC3B,IAAMQ,EAlGlB,SAAiC/mnB,GAC7B,IAAM4C,EAAQ5C,EAAI4C,MAAM0jnB,IACxB,OAAO1jnB,EAAQA,EAAM,GAAK,GAgGCoknB,CAAwB11pB,KAAK6+O,WAC5C42a,GAEAz1pB,KAAKg3J,QADLz1J,EAAQk0pB,GAIhB,IAAME,EAAaf,GAAYj4oB,GACzBi5oB,EAAahB,GAAYrzpB,GAC/B,GAAIuoF,EAAOp8C,eAAeionB,GAAa,CAEnC,IAAIE,EAAa/rkB,EAAO6rkB,GACnBprpB,MAAMyL,QAAQ6/oB,KAEf/rkB,EAAO6rkB,GADPE,EAAa,CAACA,IAGlBA,EAAWjypB,KAAKgypB,QAIhB9rkB,EAAO6rkB,GAAcC,K,yBAI7B,SAAYE,GACR,IAAMxD,EAAW,GAEjB,IADAtypB,KAAKg3J,QAAQ,MACLh3J,KAAKi1pB,gBAAgB,MAAQj1pB,KAAK6+O,UAAU16O,OAAS,GAAG,CAC5D,IAAMgtI,EAAO2jhB,GAAc90pB,KAAK6+O,WAC1Bh7O,EAAO7D,KAAK6+O,UAAU1tG,EAAKhtI,QAGjC,GAAa,MAATN,GAAyB,MAATA,GAAyB,MAATA,EAChC,MAAM,IAAIwwB,MAAJ,4BAA+Br0B,KAAKm0C,IAApC,MAEV,IAAI4hnB,OAAatxpB,EACb0sI,EAAKloI,QAAQ,MAAQ,GACrB8spB,EAAa5khB,EAAK55F,OAAO,EAAG45F,EAAKloI,QAAQ,MACzCjJ,KAAKg3J,QAAQ++f,GACb/1pB,KAAKg3J,QAAQ,MAER8+f,IACLC,EAAa7D,IAEjB,IAAMpqpB,EAAW9H,KAAKm1pB,gBACtB7C,EAASyD,GAA+C,IAAjCv5oB,OAAOC,KAAK3U,GAAU3D,OAAe2D,EAAQ,QAChE,IAAI,GAAgB,GAAIA,GAC5B9H,KAAKi1pB,gBAAgB,MAEzB,OAAO3C,I,4BAEX,SAAe5jnB,GACX,OAAO1uC,KAAK6+O,UAAUpnF,WAAW/oH,K,6BAGrC,SAAgBA,GACZ,QAAI1uC,KAAKk1pB,eAAexmnB,KACpB1uC,KAAK6+O,UAAY7+O,KAAK6+O,UAAU7zL,UAAUtc,EAAIvqC,SACvC,K,qBAIf,SAAQuqC,GACJ,IAAK1uC,KAAKi1pB,gBAAgBvmnB,GACtB,MAAM,IAAIra,MAAJ,oBAAuBqa,EAAvB,W,GAYZ,G,8BACF,WAAY0wC,GAAI,oBACZp/E,KAAKg2pB,MAAQ52kB,G,iBAEjB,WACI,OAAOp/E,KAAKg2pB,MAAMz0pB,Q,oBAKtB,SAAOf,GACH,IAAM+oI,EAAIvpI,KAAKi2pB,aAAaz1pB,GAC5B,OAAO+oI,EAAEplI,OAAS,EAAIolI,EAAEA,EAAEplI,OAAS,GAAK,O,sBAK5C,SAAS3D,GACL,IAAMu3C,EAAIm+mB,GAAS11pB,EAAGR,KAAKg2pB,OAC3B,OAAOj+mB,EAAIA,EAAEjwC,SAAS2B,IAAI,SAAAjJ,GAAC,OAAIA,EAAEe,QAAS,K,wBAK9C,SAAWf,GACP,IAAMu3C,EAAIm+mB,GAAS11pB,EAAGR,KAAKg2pB,OAC3B,OAAOj+mB,GAAKA,EAAEjwC,SAAS3D,OAAS,EAAI4zC,EAAEjwC,SAAS,GAAGvG,MAAQ,O,sBAK9D,SAASf,GACL,IAAM+oI,EAAI4shB,GAAS31pB,EAAGR,KAAKg2pB,OAC3B,OAAIzshB,EAAEplI,OAAS,EACJ,GACDolI,EAAEA,EAAEplI,OAAS,GAAG2D,SAAS2B,IAAI,SAAAmmC,GAAC,OAAIA,EAAEruC,QACrC4T,OAAO,SAAAihpB,GAAE,OAAIA,IAAO51pB,M,0BAKjC,SAAaA,GACT,OAAO21pB,GAAS31pB,EAAGR,KAAKg2pB,OAAOvspB,IAAI,SAAAmb,GAAC,OAAIA,EAAErjB,Y,GAIlD,SAAS20pB,GAAS30pB,EAAOmiJ,GACrB,GAAIniJ,IAAUmiJ,EAAKniJ,MACf,OAAOmiJ,EAFc,oBAGLA,EAAK57I,UAHA,IAGzB,2BAAmC,KACzB,EAAOoupB,GAAS30pB,EADS,SAE/B,GAAI,EACA,OAAO,GANU,8BAQzB,OAAO,KAGX,SAAS40pB,GAAS50pB,EAAOmiJ,GACrB,GAAIniJ,IAAUmiJ,EAAKniJ,MACf,MAAO,CAACmiJ,GAFa,oBAGLA,EAAK57I,UAHA,IAGzB,2BAAmC,KACzBqpI,EAAOglhB,GAAS50pB,EADS,SAE/B,GAAI4vI,EAAKhtI,OAEL,OADAgtI,EAAKr1F,QAAQ4nG,GACNvS,GAPU,8BAUzB,MAAO,G,IAEL,G,8BACF,WAAY5vI,EAAOuG,GAAQ,oBACvB9H,KAAKuB,MAAQA,EACbvB,KAAK8H,SAAWA,G,uBAEpB,WACI,yBAAmB9H,KAAKuB,MAAxB,S,GAIR,SAAS80pB,GAAkB3ygB,GACvB,IAAMj6I,EAAM,GAIZ,OAHIi6I,GACAA,EAAK57I,SAASuL,QAAQ,SAAA2mI,GAAK,OAAIvwI,EAAIuwI,EAAMz4I,MAAMsV,QAAUmjI,IAEtDvwI,E,IAyCL,G,YAEF,WAAY21E,EAEZ2ykB,GAAQ,kCACJ,YAAM3ykB,KACD2ykB,SAAWA,EAChBuE,GAAe,EAAMl3kB,GAHjB,E,6DAKR,WACI,OAAOp/E,KAAK+xpB,SAAS9/nB,e,CAVH,IAa1B,SAASskoB,GAAiBC,EAAS76H,GAC/B,IAAMo2H,EAUV,SAAkCyE,EAAS76H,GACvC,IAIM86H,EAAY,IAAI,GAAuB,GAJzB,GAEK,GACR,GAFC,GAGmFvE,GAAgBv2H,EAAe,KAAM66H,EAAQp3kB,MAAO,EAAG,IAC5J,OAAO,IAAI,GAAoB,GAAI,IAAI,GAASq3kB,EAAW,KAhB1CC,CAAyBF,EAAS76H,GAC7Cg7H,EAAW,IAAIjopB,EAAA,EAAgB,CAAC,IAAI,GAAW,GAAI,MACnDkopB,EAAc,IAAIlopB,EAAA,EAAgB,IAClCmopB,EAAY,IAAInopB,EAAA,EAAgB,IAChCoopB,EAAmB,IAAIpopB,EAAA,EAAgB,IACvCilpB,EAAW,IAAIjlpB,EAAA,EAAgB,IAC/B+npB,EAAY,IAAI,GAAeE,EAAUC,EAAaE,EAAkBnD,EAAUkD,EAAW3E,GAAgBv2H,EAAeo2H,EAAS3ykB,MAE3I,OADAq3kB,EAAU1E,SAAWA,EAAS3ykB,KACvB,IAAI,GAAY,IAAI,GAASq3kB,EAAW,IAAK1E,G,IAyBlD,G,8BAEF,WAEA59mB,EAEA21C,EAEAs+O,EAEAurV,EAEA7jpB,EAEA+G,EAGAoI,EAAW83oB,GAAc,oBACrB/2pB,KAAKm0C,IAAMA,EACXn0C,KAAK8pF,OAASA,EACd9pF,KAAKooU,YAAcA,EACnBpoU,KAAK2zpB,SAAWA,EAChB3zpB,KAAK8P,KAAOA,EACZ9P,KAAK6W,OAASA,EACd7W,KAAKif,UAAYA,EACjBjf,KAAKg3pB,gBAAkBD,G,wBAG3B,WACI,OAAO/2pB,KAAKg3pB,gBAAgBhF,c,gBAGhC,WACI,OAAOhypB,KAAKi3pB,aAAa73kB,O,kBAG7B,WACI,OAAOp/E,KAAKi3pB,aAAarwnB,OAAO5mC,Q,sBAGpC,WACI,OAAOA,KAAKi3pB,aAAavilB,WAAW10E,Q,oBAGxC,WACI,OAAOA,KAAKi3pB,aAAanvpB,SAAS9H,Q,wBAGtC,WACI,OAAOA,KAAKi3pB,aAAahB,aAAaj2pB,Q,oBAO1C,WAII,OAHKA,KAAKk3pB,YACNl3pB,KAAKk3pB,UAAYl3pB,KAAK8pF,OAAO9lF,KAAK,OAAAyF,EAAA,GAAI,SAAC8/H,GAAD,OAAO4ohB,GAAkB5ohB,OAE5DvpI,KAAKk3pB,Y,yBAMhB,WAKI,OAJKl3pB,KAAK4zpB,iBACN5zpB,KAAK4zpB,eACD5zpB,KAAKooU,YAAYpkU,KAAK,OAAAyF,EAAA,GAAI,SAAC8/H,GAAD,OAAO4ohB,GAAkB5ohB,OAEpDvpI,KAAK4zpB,iB,sBAEhB,WACI,OAAO5zpB,KAAK+xpB,SAAW/xpB,KAAK+xpB,SAAS9/nB,WAA9B,iBAAqDjyB,KAAKg3pB,gBAA1D,S,GAQf,SAASG,GAA2BtvY,GAA8C,IAAvCuvY,EAAuC,uDAAX,YAC7DnB,EAAepuY,EAAMouY,aACvBoB,EAAyB,EAC7B,GAAkC,WAA9BD,EAEA,IADAC,EAAyBpB,EAAa9xpB,OAAS,EACxCkzpB,GAA0B,GAAG,CAChC,IAAMj7kB,EAAU65kB,EAAaoB,GACvBzwnB,EAASqvnB,EAAaoB,EAAyB,GAErD,GAAIj7kB,EAAQ41kB,aAA4C,KAA7B51kB,EAAQ41kB,YAAY7ghB,KAC3CkmhB,QAGC,IAAKzwnB,EAAO3nB,UAIb,MAHAo4oB,KAOZ,OAAOC,GAAiBrB,EAAazspB,MAAM6tpB,IAG/C,SAASC,GAAiBrB,GACtB,OAAOA,EAAaxgpB,OAAO,SAAC6iB,EAAKylT,GAI7B,MAAO,CAAEj0P,OAHMttE,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIzO,EAAIwxD,QAASi0P,EAAKj0P,QAGhDh6E,KAFJ0M,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIzO,EAAIxoB,MAAOiuU,EAAKjuU,MAEtCtL,QADPgY,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIzO,EAAI9zB,SAAUu5U,EAAKw5U,iBAEpE,CAAEztkB,OAAQ,GAAIh6E,KAAM,GAAItL,QAAS,K,IAyBlC,G,8BAEF,WAEA2vC,EAoBA21C,EAEAs+O,EAEAurV,EAEA7jpB,EAEA+G,EAEAoI,EAAW+yoB,EAAawF,EAAYC,EAAejzpB,GAAO,oBACtDxE,KAAKm0C,IAAMA,EACXn0C,KAAK8pF,OAASA,EACd9pF,KAAKooU,YAAcA,EACnBpoU,KAAK2zpB,SAAWA,EAChB3zpB,KAAK8P,KAAOA,EACZ9P,KAAK6W,OAASA,EACd7W,KAAKif,UAAYA,EACjBjf,KAAKgypB,YAAcA,EACnBhypB,KAAK03pB,YAAcF,EACnBx3pB,KAAK23pB,eAAiBF,EACtBz3pB,KAAK01H,SAAWlxH,G,iBAGpB,WACI,OAAOxE,KAAKi3pB,aAAa73kB,O,kBAG7B,WACI,OAAOp/E,KAAKi3pB,aAAarwnB,OAAO5mC,Q,sBAGpC,WACI,OAAOA,KAAKi3pB,aAAavilB,WAAW10E,Q,oBAGxC,WACI,OAAOA,KAAKi3pB,aAAanvpB,SAAS9H,Q,wBAGtC,WACI,OAAOA,KAAKi3pB,aAAahB,aAAaj2pB,Q,oBAE1C,WAII,OAHKA,KAAKk3pB,YACNl3pB,KAAKk3pB,UAAY/E,GAAkBnypB,KAAK8pF,SAErC9pF,KAAKk3pB,Y,yBAEhB,WAII,OAHKl3pB,KAAK4zpB,iBACN5zpB,KAAK4zpB,eAAiBzB,GAAkBnypB,KAAKooU,cAE1CpoU,KAAK4zpB,iB,sBAEhB,WACI,IAAMz/mB,EAAMn0C,KAAKm0C,IAAI1qC,IAAI,SAAAimC,GAAO,OAAIA,EAAQzd,aAAY+d,KAAK,KACvD65I,EAAU7pL,KAAKgypB,YAAchypB,KAAKgypB,YAAY7ghB,KAAO,GAC3D,2BAAqBh9F,EAArB,oBAAoC01I,EAApC,U,GA8BF,G,YAEF,WAEA11I,EAAKirC,GAAI,kCACL,YAAMA,KACDjrC,IAAMA,EACXminB,GAAe,EAAMl3kB,GAHhB,E,6DAKT,WACI,OAAOw4kB,GAAc53pB,KAAKg2pB,W,CAVA,IAalC,SAASM,GAAejupB,EAAOq7I,GAC3BA,EAAKniJ,MAAM01pB,aAAe5upB,EAC1Bq7I,EAAK57I,SAASuL,QAAQ,SAAAu8B,GAAC,OAAI0mnB,GAAejupB,EAAOunC,KAErD,SAASgonB,GAAcl0gB,GACnB,IAAM9zG,EAAI8zG,EAAK57I,SAAS3D,OAAS,EAAvB,aAAiCu/I,EAAK57I,SAAS2B,IAAImupB,IAAe5nnB,KAAK,MAAvE,OAAoF,GAC9F,gBAAU0zG,EAAKniJ,OAAf,OAAuBquC,GAO3B,SAASionB,GAAsBhwY,GAC3B,GAAIA,EAAMkqY,SAAU,CAChB,IAAM/0V,EAAkBn1C,EAAMkqY,SACxB+F,EAAejwY,EAAMmvY,gBAC3BnvY,EAAMkqY,SAAW+F,EACZnF,GAAa31V,EAAgBoL,YAAa0vV,EAAa1vV,cACxDvgD,EAAMugD,YAAYvkU,KAAKi0pB,EAAa1vV,aAEpCpL,EAAgB22V,WAAamE,EAAanE,UAC1C9rY,EAAM8rY,SAAS9vpB,KAAKi0pB,EAAanE,UAEhChB,GAAa31V,EAAgBlzO,OAAQgukB,EAAahukB,SACnD+9L,EAAM/9L,OAAOjmF,KAAKi0pB,EAAahukB,QA1kC3C,SAA4B/tE,EAAGC,GAC3B,GAAID,EAAE5X,SAAW6X,EAAE7X,OACf,OAAO,EACX,IAAK,IAAI0D,EAAI,EAAGA,EAAIkU,EAAE5X,SAAU0D,EAC5B,IAAK8qpB,GAAa52oB,EAAElU,GAAImU,EAAEnU,IACtB,OAAO,EAEf,OAAO,EAqkCEkwpB,CAAmB/6V,EAAgB7oR,IAAK2jnB,EAAa3jnB,MACtD0zO,EAAM1zO,IAAItwC,KAAKi0pB,EAAa3jnB,KAE3Bw+mB,GAAa31V,EAAgBltT,KAAMgopB,EAAahopB,OACjD+3Q,EAAM/3Q,KAAKjM,KAAKi0pB,EAAahopB,WAIjC+3Q,EAAMkqY,SAAWlqY,EAAMmvY,gBAEvBnvY,EAAM/3Q,KAAKjM,KAAKgkR,EAAMmvY,gBAAgBlnpB,MAG9C,SAASkopB,GAA0Bj8oB,EAAGC,GAClC,IA7zBmBi4oB,EAAIztY,EA+zBvB,OAFuBmsY,GAAa52oB,EAAE+tE,OAAQ9tE,EAAE8tE,SA5zBzCypkB,GADYU,EA6zBsDl4oB,EAAEo4B,IA7zBpDqyO,EA6zByDxqQ,EAAEm4B,MA5zBtD8/mB,EAAG7/f,MAAM,SAACr4I,EAAGlU,GAAJ,OAAU8qpB,GAAa52oB,EAAE8/X,WAAYr1H,EAAG3+Q,GAAGg0Y,kBA6zBvD9/X,EAAE6qB,SAAY5qB,EAAE4qB,WAEnC7qB,EAAE6qB,QAAUoxnB,GAA0Bj8oB,EAAE6qB,OAAQ5qB,EAAE4qB,SAc5D,SAASoigB,GAAWivH,EAAoBl6U,EAAMzuD,GAE1C,GAAIA,GAAa2oY,EAAmBC,iBAAiBn6U,EAAKx8U,MAAO+tR,EAAU/tR,MAAMwwpB,UAAW,CACxF,IAAMxwpB,EAAQ+tR,EAAU/tR,MACxBA,EAAMy1pB,gBAAkBj5U,EAAKx8U,MAC7B,IAAMuG,EA8Bd,SAA+BmwpB,EAAoBl6U,EAAMzuD,GACrD,OAAOyuD,EAAKj2U,SAAS2B,IAAI,SAAAuwI,GAAQ,oBACbs1I,EAAUxnR,UADG,IAC7B,2BAAoC,KAAzByhI,EAAyB,QAChC,GAAI0uhB,EAAmBC,iBAAiBl+gB,EAAMz4I,MAAOgoI,EAAEhoI,MAAMwwpB,UACzD,OAAO/oH,GAAWivH,EAAoBj+gB,EAAOzQ,IAHxB,8BAM7B,OAAOy/Z,GAAWivH,EAAoBj+gB,KArCrBm+gB,CAAsBF,EAAoBl6U,EAAMzuD,GACjE,OAAO,IAAI,GAAS/tR,EAAOuG,GAG3B,GAAImwpB,EAAmBG,aAAar6U,EAAKx8U,OAAQ,CAE7C,IAAM82pB,EAAsBJ,EAAmBlsN,SAAShuH,EAAKx8U,OAC7D,GAA4B,OAAxB82pB,EAA8B,CAC9B,IAAM,EAAOA,EAAoBxwY,MAEjC,OADAywY,GAAoCv6U,EAAM,GACnC,GAGf,IA2BsBnuS,EA3BhB,EA4BH,IAAI,GAAe,IAAIlhC,EAAA,GADJkhC,EA3BamuS,EAAKx8U,OA4BI4yC,KAAM,IAAIzlC,EAAA,EAAgBkhC,EAAEk6C,QAAS,IAAIp7E,EAAA,EAAgBkhC,EAAEw4R,aAAc,IAAI15T,EAAA,EAAgBkhC,EAAE+jnB,UAAW,IAAIjlpB,EAAA,EAAgBkhC,EAAE9/B,MAAO8/B,EAAE/4B,OAAQ+4B,EAAE3wB,UAAW2wB,GA3BpM,EAAWmuS,EAAKj2U,SAAS2B,IAAI,SAAAmmC,GAAC,OAAIo5f,GAAWivH,EAAoBronB,KACvE,OAAO,IAAI,GAAS,EAAO,GAGnC,SAAS0onB,GAAoCv6U,EAAMnhT,GAC/C,GAAImhT,EAAKx8U,MAAMywpB,cAAgBp1nB,EAAOr7B,MAAMywpB,YACxC,MAAM,IAAI39nB,MAAM,yEAEpB,GAAI0pT,EAAKj2U,SAAS3D,SAAWy4B,EAAO90B,SAAS3D,OACzC,MAAM,IAAIkwB,MAAM,8EAEpBuI,EAAOr7B,MAAMy1pB,gBAAkBj5U,EAAKx8U,MACpC,IAAK,IAAIsG,EAAI,EAAGA,EAAIk2U,EAAKj2U,SAAS3D,SAAU0D,EACxCywpB,GAAoCv6U,EAAKj2U,SAASD,GAAI+0B,EAAO90B,SAASD,IAwB9E,SAAS,GAAcggR,EAAO2uY,EAAS+B,EAAUnwV,EAAaurV,GAC1D,GAAwB,IAApB4E,EAASp0pB,OACT,OAAO,GAAKqypB,EAAQp3kB,KAAMo3kB,EAAQp3kB,KAAMo3kB,EAASpuV,EAAaurV,GAElE,IAAM6E,EA8DV,SAA2BD,GACvB,GAA4B,iBAAhBA,EAAS,IAAwC,IAApBA,EAASp0pB,QAAgC,MAAhBo0pB,EAAS,GACvE,OAAO,IAAI,IAAW,EAAM,EAAGA,GAEnC,IAAIE,EAAqB,EACrBtyjB,GAAa,EACX7tE,EAAMigoB,EAAS9ipB,OAAO,SAAC6iB,EAAKogoB,EAAKC,GACnC,GAAmB,iBAARD,GAA2B,MAAPA,EAAa,CACxC,GAAIA,EAAI/gpB,QAAS,CACb,IAAMA,EAAU,GAIhB,OAHAtE,GAAQqlpB,EAAI/gpB,QAAS,SAAC4gpB,EAAUp3pB,GAC5BwW,EAAQxW,GAA4B,iBAAbo3pB,EAAwBA,EAASh2oB,MAAM,KAAOg2oB,IAEzE,sBAAWjgoB,GAAX,CAAgB,CAAE3gB,aAEtB,GAAI+gpB,EAAIE,YACJ,4BAAWtgoB,GAAX,CAAgBogoB,EAAIE,cAG5B,MAAqB,iBAARF,EACT,sBAAWpgoB,GAAX,CAAgBogoB,IAEL,IAAXC,GACAD,EAAIn2oB,MAAM,KAAKlP,QAAQ,SAACwlpB,EAASC,GACZ,GAAbA,GAA8B,MAAZD,IAGA,GAAbC,GAA8B,KAAZD,EACvB1yjB,GAAa,EAEI,OAAZ0yjB,EACLJ,IAEgB,IAAXI,GACLvgoB,EAAI10B,KAAKi1pB,MAGVvgoB,GAEX,sBAAWA,GAAX,CAAgBogoB,KACjB,IACH,OAAO,IAAI,GAAWvyjB,EAAYsyjB,EAAoBngoB,GAvG1CygoB,CAAkBR,GAC9B,GAAIC,EAAIQ,SACJ,OAAO,GAAKxC,EAAQp3kB,KAAM,IAAI,GAAgB,GAAI,IAAKo3kB,EAASpuV,EAAaurV,GAEjF,IAAMsF,EA4GV,SAA8BT,EAAKvoP,EAAMpoJ,GACrC,GAAI2wY,EAAIryjB,WACJ,OAAO,IAAI,GAAS8pU,EAAK7wV,MAAM,EAAM,GAEzC,IAAuC,IAAnCyoM,EAAMkqY,SAAS4F,eAAuB,CACtC,IAAMpF,EAAe1qY,EAAMkqY,SAAS2F,YAKpC,OAAO,IAAI,GAASnF,EADIA,IAAiBtiP,EAAK7wV,KACK,GAEvD,IAAM8nH,EAAWgyd,GAAeV,EAAID,SAAS,IAAM,EAAI,EAEvD,OAEJ,SAA0C19gB,EAAOlxI,EAAO8upB,GAIpD,IAHA,IAAI1thB,EAAI8P,EACJs+gB,EAAKxvpB,EACLsb,EAAKwzoB,EACFxzoB,EAAKk0oB,GAAI,CAGZ,GAFAl0oB,GAAMk0oB,IACNpuhB,EAAIA,EAAEnkG,QAEF,MAAM,IAAIvS,MAAM,2BAEpB8koB,EAAKpuhB,EAAEunhB,SAASnupB,OAEpB,OAAO,IAAI,GAAS4mI,GAAG,EAAOouhB,EAAKl0oB,GAd5Bm0oB,CAAiCvxY,EAAMkqY,SAAS2F,YADzC7vY,EAAMkqY,SAAS4F,eAAiBzwd,EAC6Bsxd,EAAIC,oBA1HtDY,CAAqBb,EAAKhC,EAAS3uY,GACtD0qY,EAAe0G,EAAiBK,gBAClCC,GAA2BN,EAAiB1G,aAAc0G,EAAiBtvpB,MAAO6upB,EAAID,UACtFiB,GAAmBP,EAAiB1G,aAAc0G,EAAiBtvpB,MAAO6upB,EAAID,UAClF,OAAO,GAAKU,EAAiB1G,aAAcA,EAAciE,EAASpuV,EAAaurV,GAEnF,SAASuF,GAAet9W,GACpB,MAA0B,iBAAZA,GAAmC,MAAXA,IAAoBA,EAAQjkS,UAAYikS,EAAQg9W,YAM1F,SAASa,GAAqB79W,GAC1B,MAA0B,iBAAZA,GAAmC,MAAXA,GAAmBA,EAAQjkS,QAErE,SAAS,GAAK+hpB,EAAiBC,EAAiBnD,EAASpuV,EAAaurV,GAClE,IAAIiG,EAAK,GAMT,OALIxxV,GACA/0T,GAAQ+0T,EAAa,SAAC7mU,EAAOJ,GACzBy4pB,EAAGz4pB,GAAQoJ,MAAMyL,QAAQzU,GAASA,EAAMkI,IAAI,SAACxJ,GAAD,gBAAUA,KAA3C,UAAqDsB,KAI7D,IAAI,GADXi1pB,EAAQp3kB,OAASs6kB,EACEC,EAEJE,GAAerD,EAAQp3kB,KAAMs6kB,EAAiBC,GAFzBC,EAAIjG,GAIhD,SAASkG,GAAez9kB,EAAS09kB,EAAYC,GACzC,IAAMjypB,EAAW,GASjB,OARAuL,GAAQ+oE,EAAQt0E,SAAU,SAAC8nC,EAAGmmnB,GAEtBjupB,EAASiupB,GADTnmnB,IAAMkqnB,EACiBC,EAGAF,GAAejqnB,EAAGkqnB,EAAYC,KAGtD,IAAI,GAAgB39kB,EAAQk2kB,SAAUxqpB,G,IAE3C,G,8BACF,WAAYq+F,EAAYsyjB,EAAoBF,GAIxC,GAJgD,oBAChDv4pB,KAAKmmG,WAAaA,EAClBnmG,KAAKy4pB,mBAAqBA,EAC1Bz4pB,KAAKu4pB,SAAWA,EACZpyjB,GAAcoyjB,EAASp0pB,OAAS,GAAK+0pB,GAAeX,EAAS,IAC7D,MAAM,IAAIlkoB,MAAM,8CAEpB,IAAM2loB,EAAgBzB,EAASlzpB,KAAKo0pB,IACpC,GAAIO,GAAiBA,IAAkB,GAAKzB,GACxC,MAAM,IAAIlkoB,MAAM,4C,qBAGxB,WACI,OAAOr0B,KAAKmmG,YAAuC,IAAzBnmG,KAAKu4pB,SAASp0pB,QAAoC,KAApBnE,KAAKu4pB,SAAS,O,GA+CxE,G,YACF,WAAYhG,EAAc+G,EAAiB3vpB,GAAK,oBAC5C3J,KAAKuypB,aAAeA,EACpBvypB,KAAKs5pB,gBAAkBA,EACvBt5pB,KAAK2J,MAAQA,IAuCrB,SAAS6vpB,GAAmBjH,EAAct0oB,EAAYs6oB,GAIlD,GAHKhG,IACDA,EAAe,IAAI,GAAgB,GAAI,KAEN,IAAjCA,EAAaD,SAASnupB,QAAgBoupB,EAAaj7Q,cACnD,OAAOiiR,GAA2BhH,EAAct0oB,EAAYs6oB,GAEhE,IAAMz1oB,EA4CV,SAAsByvoB,EAAct0oB,EAAYs6oB,GAI5C,IAHA,IAAI0B,EAAsB,EACtBC,EAAmBj8oB,EACjBk8oB,EAAU,CAAE7onB,OAAO,EAAO8onB,UAAW,EAAGC,aAAc,GACrDH,EAAmB3H,EAAaD,SAASnupB,QAAQ,CACpD,GAAI81pB,GAAuB1B,EAASp0pB,OAChC,OAAOg2pB,EACX,IAAMhphB,EAAOohhB,EAAaD,SAAS4H,GAC7Bt+W,EAAU28W,EAAS0B,GAIzB,GAAIR,GAAqB79W,GACrB,MAEJ,IAAMmiC,EAAO,GAAH,OAAMniC,GACV/3S,EAAOo2pB,EAAsB1B,EAASp0pB,OAAS,EAAIo0pB,EAAS0B,EAAsB,GAAK,KAC7F,GAAIC,EAAmB,QAAcz1pB,IAATs5U,EACxB,MACJ,GAAIA,GAAQl6U,GAAyB,iBAATA,QAAuCY,IAAjBZ,EAAK8T,QAAuB,CAC1E,IAAKwkB,GAAQ4hT,EAAMl6U,EAAMstI,GACrB,OAAOgphB,EACXF,GAAuB,MAEtB,CACD,IAAK99nB,GAAQ4hT,EAAM,GAAI5sM,GACnB,OAAOgphB,EACXF,IAEJC,IAEJ,MAAO,CAAE5onB,OAAO,EAAM8onB,UAAWF,EAAkBG,aAAcJ,GA3EvDK,CAAa/H,EAAct0oB,EAAYs6oB,GAC3CgC,EAAiBhC,EAAS/upB,MAAMsZ,EAAEu3oB,cACxC,GAAIv3oB,EAAEwuB,OAASxuB,EAAEs3oB,UAAY7H,EAAaD,SAASnupB,OAAQ,CACvD,IAAM4mI,EAAI,IAAI,GAAgBwnhB,EAAaD,SAAS9opB,MAAM,EAAGsZ,EAAEs3oB,WAAY,IAG3E,OAFArvhB,EAAEjjI,SAAF,QACI,IAAI,GAAgByqpB,EAAaD,SAAS9opB,MAAMsZ,EAAEs3oB,WAAY7H,EAAazqpB,UACxEyxpB,GAA2BxuhB,EAAG,EAAGwvhB,GAEvC,OAAIz3oB,EAAEwuB,OAAmC,IAA1BipnB,EAAep2pB,OACxB,IAAI,GAAgBoupB,EAAaD,SAAU,IAE7CxvoB,EAAEwuB,QAAUihnB,EAAaj7Q,cACvBkjR,GAAsBjI,EAAct0oB,EAAYs6oB,GAElDz1oB,EAAEwuB,MACAionB,GAA2BhH,EAAc,EAAGgI,GAG5CC,GAAsBjI,EAAct0oB,EAAYs6oB,GAG/D,SAASgB,GAA2BhH,EAAct0oB,EAAYs6oB,GAC1D,GAAwB,IAApBA,EAASp0pB,OACT,OAAO,IAAI,GAAgBoupB,EAAaD,SAAU,IAGlD,IAAM36oB,EAvCd,SAAoB4gpB,GAChB,OAAIkB,GAAqBlB,EAAS,IACvBA,EAAS,GAAG5gpB,QAEvB,eAAUu6oB,GAAiBqG,GAmCPkC,CAAWlC,GACrBzwpB,EAAW,GAcjB,OAbAuL,GAAQsE,EAAS,SAAC4gpB,EAAU1hpB,GACA,iBAAb0hpB,IACPA,EAAW,CAACA,IAEC,OAAbA,IACAzwpB,EAAS+O,GAAU2ipB,GAAmBjH,EAAazqpB,SAAS+O,GAASoH,EAAYs6oB,MAGzFllpB,GAAQk/oB,EAAazqpB,SAAU,SAACkyI,EAAOw6gB,QACN/vpB,IAAzBkT,EAAQ68oB,KACR1spB,EAAS0spB,GAAex6gB,KAGzB,IAAI,GAAgBu4gB,EAAaD,SAAUxqpB,GAoC1D,SAAS0ypB,GAAsBjI,EAAct0oB,EAAYs6oB,GAGrD,IAFA,IAAM5shB,EAAQ4mhB,EAAaD,SAAS9opB,MAAM,EAAGyU,GACzCpW,EAAI,EACDA,EAAI0wpB,EAASp0pB,QAAQ,CACxB,IAAMy3S,EAAU28W,EAAS1wpB,GACzB,GAAI4xpB,GAAqB79W,GAAU,CAC/B,IAAM9zS,EAAW4ypB,GAAyB9+W,EAAQjkS,SAClD,OAAO,IAAI,GAAgBg0H,EAAO7jI,GAGtC,GAAU,IAAND,GAAWqxpB,GAAeX,EAAS,IAEnC5shB,EAAM/nI,KAAK,IAAI,GADL2upB,EAAaD,SAASr0oB,GACJkzH,KAAM13G,GAAU8+nB,EAAS,MACrD1wpB,QAHJ,CAMA,IAAMk2U,EAAO07U,GAAqB79W,GAAWA,EAAQjkS,QAAR,QAAhC,UAAqEikS,GAC5E/3S,EAAQgE,EAAI0wpB,EAASp0pB,OAAS,EAAKo0pB,EAAS1wpB,EAAI,GAAK,KACvDk2U,GAAQl6U,GAAQq1pB,GAAer1pB,IAC/B8nI,EAAM/nI,KAAK,IAAI,GAAWm6U,EAAMtkT,GAAU51B,KAC1CgE,GAAK,IAGL8jI,EAAM/nI,KAAK,IAAI,GAAWm6U,EAAM,KAChCl2U,MAGR,OAAO,IAAI,GAAgB8jI,EAAO,IAEtC,SAAS+uhB,GAAyB/ipB,GAC9B,IAAM7P,EAAW,GASjB,OARAuL,GAAQsE,EAAS,SAAC4gpB,EAAU1hpB,GACA,iBAAb0hpB,IACPA,EAAW,CAACA,IAEC,OAAbA,IACAzwpB,EAAS+O,GAAU2jpB,GAAsB,IAAI,GAAgB,GAAI,IAAK,EAAGjC,MAG1EzwpB,EAEX,SAAS2xB,GAAUqwD,GACf,IAAMxxD,EAAM,GAEZ,OADAjlB,GAAQy2E,EAAQ,SAAC7pF,EAAGu8H,GAAJ,OAAUlkG,EAAIkkG,GAAJ,UAAYv8H,KAC/Bq4B,EAEX,SAAS6D,GAAQg1G,EAAMrnD,EAAQp6C,GAC3B,OAAOyhG,GAAQzhG,EAAQyhG,MAAQwhhB,GAAa7okB,EAAQp6C,EAAQmsW,YAUhE,IAKM,G,8BACF,WAAYo8Q,EAAoB0C,EAAaC,EAAWC,GAAY,oBAChE76pB,KAAKi4pB,mBAAqBA,EAC1Bj4pB,KAAK26pB,YAAcA,EACnB36pB,KAAK46pB,UAAYA,EACjB56pB,KAAK66pB,aAAeA,G,uBAExB,SAASC,GACL,IAAMC,EAAa/6pB,KAAK26pB,YAAY3E,MAC9BgF,EAAWh7pB,KAAK46pB,UAAY56pB,KAAK46pB,UAAU5E,MAAQ,KACzDh2pB,KAAKi7pB,sBAAsBF,EAAYC,EAAUF,GACjDjD,GAAsB73pB,KAAK26pB,YAAYv7kB,MACvCp/E,KAAKk7pB,oBAAoBH,EAAYC,EAAUF,K,mCAGnD,SAAsBK,EAAYC,EAAU1hjB,GAAQ,WAC1C5xG,EAAWuupB,GAAkB+E,GAEnCD,EAAWrzpB,SAASuL,QAAQ,SAAAgopB,GACxB,IAAMC,EAAkBD,EAAY95pB,MAAMsV,OAC1C,EAAK0kpB,iBAAiBF,EAAavzpB,EAASwzpB,GAAkB5hjB,UACvD5xG,EAASwzpB,KAGpBjopB,GAAQvL,EAAU,SAAC7H,EAAGu7pB,GAClB,EAAKC,8BAA8Bx7pB,EAAGy5G,O,8BAG9C,SAAiByhjB,EAAYC,EAAUhzW,GACnC,IAAM1jS,EAASy2oB,EAAW55pB,MACpBw8U,EAAOq9U,EAAWA,EAAS75pB,MAAQ,KACzC,GAAImjB,IAAWq5T,EAEX,GAAIr5T,EAAOzF,UAAW,CAElB,IAAMzN,EAAU42S,EAAc/jK,WAAW3/H,EAAO7N,QAC5CrF,GACAxR,KAAKi7pB,sBAAsBE,EAAYC,EAAU5ppB,EAAQ1J,eAK7D9H,KAAKi7pB,sBAAsBE,EAAYC,EAAUhzW,QAIjD21B,GAEA/9U,KAAKy7pB,8BAA8BL,EAAUhzW,K,2CAIzD,SAA8BvgC,EAAOizY,GAC7B96pB,KAAKi4pB,mBAAmByD,aAAa7zY,EAAMtmR,MAAMwwpB,UACjD/xpB,KAAK27pB,2BAA2B9zY,EAAOizY,GAGvC96pB,KAAK47pB,yBAAyB/zY,EAAOizY,K,wCAG7C,SAA2BjzY,EAAOizY,GAC9B,IAAMtppB,EAAUsppB,EAAez2gB,WAAWwjI,EAAMtmR,MAAMsV,QACtD,GAAIrF,GAAWA,EAAQqF,OAAQ,CAC3B,IAAMgK,EAAerP,EAAQqF,OAAOkI,SAC9B26F,EAAWloG,EAAQ1J,SAAS+zpB,sBAClC77pB,KAAKi4pB,mBAAmB3goB,MAAMuwP,EAAMtmR,MAAMwwpB,SAAU,CAAElxoB,eAAcgnQ,QAAOnuK,gB,sCAGnF,SAAyBmuK,EAAOizY,GAM5B,IALA,IAAMtppB,EAAUsppB,EAAez2gB,WAAWwjI,EAAMtmR,MAAMsV,QAGhD6iG,EAAWloG,GAAWq2Q,EAAMtmR,MAAM0d,UAAYzN,EAAQ1J,SAAWgzpB,EACjEhzpB,EAAWuupB,GAAkBxuY,GACnC,MAA0BrrQ,OAAOC,KAAK3U,GAAtC,eACI9H,KAAKy7pB,8BAA8B3zpB,EADjB,MACwC4xG,GAE1DloG,GAAWA,EAAQqF,SAEnBrF,EAAQqF,OAAOs1K,aAEf36K,EAAQ1J,SAAS+zpB,sBAGjBrqpB,EAAQsqpB,UAAY,KACpBtqpB,EAAQs6P,SAAW,KACnBt6P,EAAQq2Q,MAAQ,Q,iCAGxB,SAAoBszY,EAAYC,EAAU1hjB,GAAQ,WACxC5xG,EAAWuupB,GAAkB+E,GACnCD,EAAWrzpB,SAASuL,QAAQ,SAAAu8B,GACxB,EAAKmsnB,eAAensnB,EAAG9nC,EAAS8nC,EAAEruC,MAAMsV,QAAS6iG,GACjD,EAAKmhjB,aAAa,IAAI,GAAcjrnB,EAAEruC,MAAMwwpB,aAE5CoJ,EAAWrzpB,SAAS3D,QACpBnE,KAAK66pB,aAAa,IAAI,GAAmBM,EAAW55pB,MAAMwwpB,a,4BAGlE,SAAeoJ,EAAYC,EAAUN,GACjC,IAAMp2oB,EAASy2oB,EAAW55pB,MACpBw8U,EAAOq9U,EAAWA,EAAS75pB,MAAQ,KAGzC,GAFAs2pB,GAAsBnzoB,GAElBA,IAAWq5T,EACX,GAAIr5T,EAAOzF,UAAW,CAElB,IAAMzN,EAAUsppB,EAAekB,mBAAmBt3oB,EAAO7N,QACzD7W,KAAKk7pB,oBAAoBC,EAAYC,EAAU5ppB,EAAQ1J,eAIvD9H,KAAKk7pB,oBAAoBC,EAAYC,EAAUN,QAInD,GAAIp2oB,EAAOzF,UAAW,CAElB,IAAM,EAAU67oB,EAAekB,mBAAmBt3oB,EAAO7N,QACzD,GAAI7W,KAAKi4pB,mBAAmBG,aAAa1zoB,EAAOqtoB,UAAW,CACvD,IAAMkK,EAASj8pB,KAAKi4pB,mBAAmBlsN,SAASrnb,EAAOqtoB,UACvD/xpB,KAAKi4pB,mBAAmB3goB,MAAM5S,EAAOqtoB,SAAU,MAC/C,EAAQjqpB,SAASo0pB,mBAAmBD,EAAOvijB,UAC3C,EAAQoijB,UAAYG,EAAOp7oB,aAC3B,EAAQgnQ,MAAQo0Y,EAAOp0Y,MAAMtmR,MACzB,EAAQsV,QAGR,EAAQA,OAAOiI,OAAOm9oB,EAAOp7oB,aAAco7oB,EAAOp0Y,MAAMtmR,OAE5D46pB,GAAwCF,EAAOp0Y,WAE9C,CACD,IAAMzvP,EAwB1B,SAA4B25nB,GACxB,IAAK,IAAIntoB,EAAImtoB,EAASnrnB,OAAQhiB,EAAGA,EAAIA,EAAEgiB,OAAQ,CAC3C,IAAMihP,EAAQjjQ,EAAEotoB,YAChB,GAAInqY,GAASA,EAAMu0Y,cACf,OAAOv0Y,EAAMu0Y,cACjB,GAAIv0Y,GAASA,EAAM5oQ,UACf,OAAO,KAEf,OAAO,KAhCwBo9oB,CAAmB33oB,EAAOqtoB,UACnCuK,EAAqBlkoB,EAASA,EAAOgF,OAAOhe,yBAA2B,KAC7E,EAAQ08oB,UAAY,KACpB,EAAQj0Y,MAAQnjQ,EAChB,EAAQonP,SAAWwwZ,EACf,EAAQzlpB,QAGR,EAAQA,OAAO0lpB,aAAa73oB,EAAQ43oB,GAExCt8pB,KAAKk7pB,oBAAoBC,EAAY,KAAM,EAAQrzpB,gBAKvD9H,KAAKk7pB,oBAAoBC,EAAY,KAAML,O,GAK3D,SAASqB,GAAwCz4gB,GAC7Cm0gB,GAAsBn0gB,EAAKniJ,OAC3BmiJ,EAAK57I,SAASuL,QAAQ8opB,I,IAoBpB,G,YACF,WAAY3qV,EAAQp0S,GAAM,oBACtBp9B,KAAKwxU,OAASA,EACdxxU,KAAKo9B,OAASA,IAwBtB,SAAS6uI,GAAWhsK,GAChB,MAAoB,mBAANA,EAKlB,SAASu8pB,GAAUv8pB,GACf,OAAOA,aAAa,GAsBxB,IAAMw8pB,GAAgBrtnB,OAAO,iBAC7B,SAASstnB,KACL,OAAO,OAAAx5hB,EAAA,GAAU,SAAAkM,GACb,OAAO,OAAA1xH,EAAA,GAAc0xH,EAAI3lI,IAAI,SAAA0kC,GAAC,OAAIA,EAAEnqC,KAAK,OAAAW,EAAA,GAAK,GAAI,OAAAw0J,EAAA,GAAUsjgB,QACvDz4pB,KAAK,OAAAm+O,EAAA,GAAK,SAAC7sO,EAAK62D,GACjB,IAAIwwlB,GAAY,EAChB,OAAOxwlB,EAAK12D,OAAO,SAACmnpB,EAAUtunB,EAAKzmC,GAC/B,GAAI+0pB,IAAaH,GACb,OAAOG,EAQX,GANItunB,IAAQmunB,KACRE,GAAY,IAKXA,EAAW,CAGZ,IAAY,IAARrunB,EACA,OAAOA,EACX,GAAIzmC,IAAMskE,EAAKhoE,OAAS,GAAKq4pB,GAAUlunB,GACnC,OAAOA,EAGf,OAAOsunB,GACRtnpB,IACJmnpB,IAAgB,OAAAtnpB,EAAA,GAAO,SAAA7D,GAAI,OAAIA,IAASmrpB,KAAgB,OAAAhzpB,EAAA,GAAI,SAAA6H,GAAI,OAAIkrpB,GAAUlrpB,GAAQA,GAAgB,IAATA,IAChG,OAAA3M,EAAA,GAAK,M,sBAoBPk4pB,E,sDAENA,EAAsBt8pB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAKq8pB,IAC1FA,EAAsB12pB,UAAO,KAAyB,CAAEzF,KAAMm8pB,EAAuBl8pB,UAAW,CAAC,CAAC,iBAAkByF,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAwCqB,EAAIC,GAAgB,EAALD,GAChM,KAAiB,EAAG,kBACnB4E,WAAY,WAAc,MAAO,CAAC,KAAkBC,cAAe,I,KAa5E,SAASs2pB,GAAe1koB,GAEpB,IAF2C,IAAf2koB,EAAe,uDAAF,GAEhCl1pB,EAAI,EAAGA,EAAIuwB,EAAOj0B,OAAQ0D,IAAK,CACpC,IAAMggR,EAAQzvP,EAAOvwB,GACfm1pB,EAAWC,GAAYF,EAAYl1Y,GACzCq1Y,GAAar1Y,EAAOm1Y,IAG5B,SAASE,GAAar1Y,EAAOm1Y,GA0DrBn1Y,EAAM//Q,UACNg1pB,GAAej1Y,EAAM//Q,SAAUk1pB,GAGvC,SAASC,GAAYF,EAAYI,GAC7B,OAAKA,EAGAJ,GAAeI,EAAahshB,KAGxB4rhB,IAAeI,EAAahshB,KACjC,UAAU4rhB,EAAV,MAEMA,GAAcI,EAAahshB,KAC1BgshB,EAAahshB,KAGpB,UAAU4rhB,EAAV,YAAwBI,EAAahshB,MAT9B,GAHA4rhB,EAkBf,SAASK,GAAkBtzhB,GACvB,IAAMhiI,EAAWgiI,EAAEhiI,UAAYgiI,EAAEhiI,SAAS2B,IAAI2zpB,IACxCxtnB,EAAI9nC,EAAW0U,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI+iG,GAAI,CAAEhiI,aAAc0U,OAAOuqB,OAAO,GAAI+iG,GAI3F,OAHKl6F,EAAE3wB,YAAcnX,GAAY8nC,EAAEytnB,eAAkBztnB,EAAE/4B,QAAU+4B,EAAE/4B,SAAWq7oB,KAC1EtinB,EAAE3wB,UAAY,IAEX2wB,EAGX,SAAS0tnB,GAAUz1Y,GACf,OAAOA,EAAMhxQ,QAAUq7oB,GAM3B,SAASqL,GAAsB/rV,EAAQukV,GACnC,IAAMyH,EAAehsV,EAAOr8T,OAAO,SAAA20H,GAAC,OAAIwzhB,GAAUxzhB,KAAOishB,IAEzD,OADAyH,EAAa55pB,KAAb,MAAA45pB,EAAY,YAAShsV,EAAOr8T,OAAO,SAAA20H,GAAC,OAAIwzhB,GAAUxzhB,KAAOishB,MAClDyH,EAUX,IAAMrD,GAAU,CACZtwe,SAAS,EACT4ze,iBAAkB,GAClB96R,UAAW,EACXkZ,WAAY,GACZ6hR,wBAAyB,IAE7B,SAAS,GAAMnL,EAAc1qY,EAAOyqY,GAChC,IAAI3npB,EACJ,GAAmB,KAAfk9Q,EAAM12I,KACN,MAAwB,SAApB02I,EAAM2qY,YAAyBD,EAAaj7Q,eAAiBg7Q,EAASnupB,OAAS,GACxEqY,OAAOuqB,OAAO,GAAIoznB,IAEtB,CACHtwe,SAAS,EACT4ze,iBAAkB,GAClB96R,UAAW,EACXkZ,WAAY,GACZ6hR,wBAAyB,IAGjC,IACMploB,GADUuvP,EAAM81Y,SAAWtL,IACbC,EAAUC,EAAc1qY,GAC5C,IAAKvvP,EACD,OAAO9b,OAAOuqB,OAAO,GAAIoznB,IAC7B,IAAM1H,EAAY,GAClBp/oB,GAAQilB,EAAIm6nB,UAAW,SAACxypB,EAAGu8H,GACvBi2hB,EAAUj2hB,GAAKv8H,EAAEkxI,OAErB,IAAM0qQ,EAAavjX,EAAIo6nB,SAASvupB,OAAS,EAAIqY,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI0rnB,GAAYn6nB,EAAIo6nB,SAASp6nB,EAAIo6nB,SAASvupB,OAAS,GAAG03Y,YAC3H42Q,EACJ,MAAO,CACH5oe,SAAS,EACT4ze,iBAAkBnloB,EAAIo6nB,SACtB/vR,UAAWrqW,EAAIo6nB,SAASvupB,OAExB03Y,aACA6hR,wBAAkD,QAAxB/ypB,EAAK2tB,EAAIm6nB,iBAA8B,IAAP9npB,EAAgBA,EAAK,IAGvF,SAAS4X,GAAMgwoB,EAAckL,EAAkBG,EAAgBxloB,GAA4C,IAApCyloB,EAAoC,uDAAX,YAC5F,GAAID,EAAez5pB,OAAS,GACxB25pB,GAAyCvL,EAAcqL,EAAgBxloB,GAAS,CAChF,IAAM,EAAI,IAAI,GAAgBqloB,EAAkBM,GAA4BxL,EAAckL,EAAkBrloB,EAAQ,IAAI,GAAgBwloB,EAAgBrL,EAAazqpB,YAGrK,OAFA,EAAEk2pB,eAAiBzL,EACnB,EAAE0L,mBAAqBR,EAAiBt5pB,OACjC,CAAEoupB,aAAc,EAAGqL,eAAgB,IAE9C,GAA8B,IAA1BA,EAAez5pB,QACf+5pB,GAAyB3L,EAAcqL,EAAgBxloB,GAAS,CAChE,IAAM,EAAI,IAAI,GAAgBm6nB,EAAaD,SAAU6L,GAAgC5L,EAAckL,EAAkBG,EAAgBxloB,EAAQm6nB,EAAazqpB,SAAU+1pB,IAGpK,OAFA,EAAEG,eAAiBzL,EACnB,EAAE0L,mBAAqBR,EAAiBt5pB,OACjC,CAAEoupB,aAAc,EAAGqL,kBAE9B,IAAMh5oB,EAAI,IAAI,GAAgB2toB,EAAaD,SAAUC,EAAazqpB,UAGlE,OAFA8c,EAAEo5oB,eAAiBzL,EACnB3toB,EAAEq5oB,mBAAqBR,EAAiBt5pB,OACjC,CAAEoupB,aAAc3toB,EAAGg5oB,kBAE9B,SAASO,GAAgC5L,EAAckL,EAAkBG,EAAgBpsV,EAAQ1pU,EAAU+1pB,GACvG,IAD6H,EACvHvloB,EAAM,GADiH,cAE7Gk5S,GAF6G,IAE7H,2BAAwB,KAAb1nM,EAAa,QACpB,GAAIs0hB,GAAe7L,EAAcqL,EAAgB9zhB,KAAOhiI,EAASw1pB,GAAUxzhB,IAAK,CAC5E,IAAMllH,EAAI,IAAI,GAAgB,GAAI,IAClCA,EAAEo5oB,eAAiBzL,EAEf3toB,EAAEq5oB,mBADyB,WAA3BJ,EACuBtL,EAAaD,SAASnupB,OAGtBs5pB,EAAiBt5pB,OAE5Cm0B,EAAIgloB,GAAUxzhB,IAAMllH,IAZiG,8BAe7H,OAAOpI,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIj/B,GAAWwwB,GAEtD,SAASyloB,GAA4BxL,EAAckL,EAAkBjsV,EAAQ6sV,GACzE,IAAM/loB,EAAM,GACZA,EAAG,QAAmB+loB,EACtBA,EAAeL,eAAiBzL,EAChC8L,EAAeJ,mBAAqBR,EAAiBt5pB,OAJkC,oBAKvEqtU,GALuE,IAKvF,2BAAwB,KAAb1nM,EAAa,QACpB,GAAe,KAAXA,EAAEqH,MAAemshB,GAAUxzhB,KAAOoohB,GAAgB,CAClD,IAAMttoB,EAAI,IAAI,GAAgB,GAAI,IAClCA,EAAEo5oB,eAAiBzL,EACnB3toB,EAAEq5oB,mBAAqBR,EAAiBt5pB,OACxCm0B,EAAIgloB,GAAUxzhB,IAAMllH,IAV2D,8BAavF,OAAO0T,EAEX,SAASwloB,GAAyCvL,EAAcqL,EAAgBpsV,GAC5E,OAAOA,EAAOppU,KAAK,SAAA0hI,GAAC,OAAIs0hB,GAAe7L,EAAcqL,EAAgB9zhB,IAAMwzhB,GAAUxzhB,KAAOoohB,KAEhG,SAASgM,GAAyB3L,EAAcqL,EAAgBpsV,GAC5D,OAAOA,EAAOppU,KAAK,SAAA0hI,GAAC,OAAIs0hB,GAAe7L,EAAcqL,EAAgB9zhB,KAEzE,SAASs0hB,GAAe7L,EAAcqL,EAAgB9zhB,GAClD,SAAKyohB,EAAaj7Q,eAAiBsmR,EAAez5pB,OAAS,IAAsB,SAAhB2lI,EAAE0ohB,YAGjD,KAAX1ohB,EAAEqH,KAOb,SAASmthB,GAAiBz2Y,EAAO02Y,EAAYjM,EAAUz7oB,GAYnD,SAAIympB,GAAUz1Y,KAAWhxQ,GACpBA,IAAWq7oB,IAAmBkM,GAAeG,EAAYjM,EAAUzqY,MAGrD,OAAfA,EAAM12I,MAGH,GAAMothB,EAAY12Y,EAAOyqY,GAAUzoe,SAE9C,SAAS20e,GAAiBjM,EAAcD,EAAUz7oB,GAC9C,OAA2B,IAApBy7oB,EAASnupB,SAAiBoupB,EAAazqpB,SAAS+O,G,IAUrD,G,YACF,WAAY07oB,GAAY,oBACpBvypB,KAAKuypB,aAAeA,GAAgB,OAGtC,G,YACF,WAAYiE,GAAO,oBACfx2pB,KAAKw2pB,QAAUA,IAGvB,SAASiI,GAAUlM,GACf,OAAO,IAAI/3hB,EAAA,EAAW,SAAC4U,GAAD,OAASA,EAAIp6G,MAAM,IAAI,GAAQu9nB,MAEzD,SAASmM,GAAiBC,GACtB,OAAO,IAAInkiB,EAAA,EAAW,SAAC4U,GAAD,OAASA,EAAIp6G,MAAM,IAAI,GAAiB2poB,MAElE,SAASC,GAAqBC,GAC1B,OAAO,IAAIrkiB,EAAA,EAAW,SAAC4U,GAAD,OAASA,EAAIp6G,MAAM,IAAIX,MAAJ,uEAA0EwqoB,EAA1E,S,IAavC,G,8BACF,WAAY3tG,EAAgB4tG,EAAcC,EAAevI,EAASp+nB,GAAM,oBACpEp4B,KAAK8+pB,aAAeA,EACpB9+pB,KAAK++pB,cAAgBA,EACrB/+pB,KAAKw2pB,QAAUA,EACfx2pB,KAAKo4B,OAASA,EACdp4B,KAAKg/pB,gBAAiB,EACtBh/pB,KAAK++G,SAAWmyc,EAAeh/iB,IAAI,M,oBAEvC,WAAK,WACK+spB,EAAa18oB,GAAMviB,KAAKw2pB,QAAQp3kB,KAAM,GAAI,GAAIp/E,KAAKo4B,QAAQm6nB,aAO3D2M,EAAmB,IAAI,GAAgBD,EAAW3M,SAAU2M,EAAWn3pB,UAK7E,OAJkB9H,KAAKm/pB,mBAAmBn/pB,KAAK++G,SAAU/+G,KAAKo4B,OAAQ8moB,EAAkBhN,IAC5DlupB,KAAK,OAAAyF,EAAA,GAAI,SAACy1pB,GAClC,OAAO,EAAKE,cAAcC,GAAmBH,GAAmB,EAAK1I,QAAQpuV,YAAa,EAAKouV,QAAQ7C,aAE1F3vpB,KAAK,OAAAyjI,EAAA,GAAW,SAACxzG,GAC9B,GAAIA,aAAa,GAIb,OAFA,EAAK+qoB,gBAAiB,EAEf,EAAK1tnB,MAAMrd,EAAEuioB,SAExB,GAAIvioB,aAAa,GACb,MAAM,EAAKqroB,aAAarroB,GAE5B,MAAMA,O,mBAGd,SAAMg8Y,GAAI,WAKN,OAJkBjwa,KAAKm/pB,mBAAmBn/pB,KAAK++G,SAAU/+G,KAAKo4B,OAAQ63Y,EAAK7wV,KAAM8ykB,IACvDlupB,KAAK,OAAAyF,EAAA,GAAI,SAACy1pB,GAChC,OAAO,EAAKE,cAAcC,GAAmBH,GAAmBjvP,EAAK7nG,YAAa6nG,EAAK0jP,aAE5E3vpB,KAAK,OAAAyjI,EAAA,GAAW,SAACxzG,GAC5B,GAAIA,aAAa,GACb,MAAM,EAAKqroB,aAAarroB,GAE5B,MAAMA,O,0BAGd,SAAaA,GACT,OAAO,IAAII,MAAJ,iDAAoDJ,EAAEs+nB,aAAtD,Q,2BAEX,SAAcgN,EAAen3V,EAAaurV,GACtC,IAAMv0kB,EAAOmglB,EAAcjN,SAASnupB,OAAS,EACzC,IAAI,GAAgB,GAApB,eAA2B+tpB,GAAiBqN,IAC5CA,EACJ,OAAO,IAAI,GAAQnglB,EAAMgpP,EAAaurV,K,gCAE1C,SAAmB50iB,EAAUyyN,EAAQ+gV,EAAc17oB,GAC/C,OAAqC,IAAjC07oB,EAAaD,SAASnupB,QAAgBoupB,EAAaj7Q,cAC5Ct3Y,KAAKw/pB,eAAezgjB,EAAUyyN,EAAQ+gV,GACxCvupB,KAAK,OAAAyF,EAAA,GAAI,SAAC3B,GAAD,OAAc,IAAI,GAAgB,GAAIA,MAEjD9H,KAAKy/pB,cAAc1gjB,EAAUwziB,EAAc/gV,EAAQ+gV,EAAaD,SAAUz7oB,GAAQ,K,4BAG7F,SAAekoG,EAAUyyN,EAAQ+gV,GAI7B,IAJyC,WAGnCmN,EAAe,GACrB,MAAoBljpB,OAAOC,KAAK81oB,EAAazqpB,UAA7C,eAAwD,CAAnD,IAAMkyI,EAAK,KACE,YAAVA,EACA0lhB,EAAa5jnB,QAAQk+F,GAGrB0lhB,EAAa97pB,KAAKo2I,GAG1B,OAAO,OAAA11I,EAAA,GAAKo7pB,GACP17pB,KAAK,OAAAsjW,EAAA,GAAU,SAAAktT,GAChB,IAAMx6gB,EAAQu4gB,EAAazqpB,SAAS0spB,GAI9BmL,EAAepC,GAAsB/rV,EAAQgjV,GACnD,OAAO,EAAK2K,mBAAmBpgjB,EAAU4gjB,EAAc3lhB,EAAOw6gB,GACzDxwpB,KAAK,OAAAyF,EAAA,GAAI,SAAAmb,GAAC,MAAK,CAAE8qB,QAAS9qB,EAAG/N,OAAQ29oB,QAC1C,OAAArya,EAAA,GAAK,SAACr6O,EAAU83pB,GAEhB,OADA93pB,EAAS83pB,EAAc/opB,QAAU+opB,EAAclwnB,QACxC5nC,GACR,ICrmFL,SAAeu4B,EAAWqkF,GAC5B,IAAMwzN,EAAkB5+T,UAAUnV,QAAU,EAC5C,OAAO,SAACoiB,GAAD,OAAYA,EAAOviB,KAAKq8B,EAAY,OAAAlrB,EAAA,GAAO,SAAClV,EAAG4H,GAAJ,OAAUw4B,EAAUpgC,EAAG4H,EAAG0e,KAAW2gC,EAAA,EAAU,OAAAw1H,EAAA,GAAS,GAAIw7J,EAAkB,OAAAtwM,EAAA,GAAeljB,GAAgB,OAAA8jO,EAAA,GAAa,kBAAM,IAAIm8T,EAAA,MDmmF1KxtoB,M,2BAEZ,SAAc4nG,EAAUwziB,EAAc/gV,EAAQ8gV,EAAUz7oB,EAAQmopB,GAAc,WAC1E,OAAO,OAAA16pB,EAAA,GAAKktU,GAAQxtU,KAAK,OAAAsjW,EAAA,GAAU,SAACx9N,GAEhC,OADkB,EAAK+1hB,0BAA0B9gjB,EAAUwziB,EAAc/gV,EAAQ1nM,EAAGwohB,EAAUz7oB,EAAQmopB,GACrFh7pB,KAAK,OAAAyjI,EAAA,GAAW,SAACxzG,GAC9B,GAAIA,aAAa,GACb,OAAO,OAAAhe,EAAA,GAAG,MAEd,MAAMge,OAEV,OAAAjyB,EAAA,GAAM,SAAC4iB,GAAD,QAASA,IAAI,OAAA6iH,EAAA,GAAW,SAACxzG,EAAGm+E,GAClC,GAAIn+E,aAAa0wnB,EAAA,GAAyB,eAAX1wnB,EAAE9yB,KAAuB,CACpD,GAAIq9pB,GAAiBjM,EAAcD,EAAUz7oB,GACzC,OAAO,OAAAZ,EAAA,GAAG,IAAI,GAAgB,GAAI,KAEtC,MAAM,IAAI,GAAQs8oB,GAEtB,MAAMt+nB,O,uCAGd,SAA0B8qF,EAAUwziB,EAAc/gV,EAAQ3pD,EAAOl8I,EAAO90H,EAAQmopB,GAC5E,OAAKV,GAAiBz2Y,EAAO0qY,EAAc5mhB,EAAO90H,QAGzBpS,IAArBojR,EAAMg3Y,WACC7+pB,KAAK8/pB,yBAAyB/gjB,EAAUwziB,EAAc1qY,EAAOl8I,EAAO90H,GAE3EmopB,GAAkBh/pB,KAAKg/pB,eAChBh/pB,KAAK+/pB,uCAAuChhjB,EAAUwziB,EAAc/gV,EAAQ3pD,EAAOl8I,EAAO90H,GAE9F4npB,GAAUlM,GARNkM,GAAUlM,K,oDAUzB,SAAuCxziB,EAAUwziB,EAAc/gV,EAAQ3pD,EAAOyqY,EAAUz7oB,GACpF,MAAmB,OAAfgxQ,EAAM12I,KACCnxI,KAAKggqB,kDAAkDjhjB,EAAUyyN,EAAQ3pD,EAAOhxQ,GAEpF7W,KAAKigqB,8CAA8ClhjB,EAAUwziB,EAAc/gV,EAAQ3pD,EAAOyqY,EAAUz7oB,K,+DAE/G,SAAkDkoG,EAAUyyN,EAAQ3pD,EAAOhxQ,GAAM,WACvE8npB,EAAU3+pB,KAAKkgqB,sBAAsB,GAAIr4Y,EAAMg3Y,WAAY,IACjE,OAAIh3Y,EAAMg3Y,WAAWpngB,WAAW,KACrBingB,GAAiBC,GAErB3+pB,KAAKmgqB,mBAAmBt4Y,EAAO82Y,GAAS36pB,KAAK,OAAA0jI,EAAA,GAAS,SAAC04hB,GAC1D,IAAMvlhB,EAAQ,IAAI,GAAgBulhB,EAAa,IAC/C,OAAO,EAAKX,cAAc1gjB,EAAU87B,EAAO22L,EAAQ4uV,EAAavppB,GAAQ,Q,2DAGhF,SAA8CkoG,EAAUwziB,EAAc/gV,EAAQ3pD,EAAOyqY,EAAUz7oB,GAAM,WACjG,EAA0E,GAAM07oB,EAAc1qY,EAAOyqY,GAApFmL,EAAjB,EAAiBA,iBAAkB96R,EAAnC,EAAmCA,UAAW+6R,EAA9C,EAA8CA,wBAC9C,IADA,EAAQ7ze,QAEJ,OAAO40e,GAAUlM,GACrB,IAAMoM,EAAU3+pB,KAAKkgqB,sBAAsBzC,EAAkB51Y,EAAMg3Y,WAAYnB,GAC/E,OAAI71Y,EAAMg3Y,WAAWpngB,WAAW,KACrBingB,GAAiBC,GAErB3+pB,KAAKmgqB,mBAAmBt4Y,EAAO82Y,GAAS36pB,KAAK,OAAA0jI,EAAA,GAAS,SAAC04hB,GAC1D,OAAO,EAAKX,cAAc1gjB,EAAUwziB,EAAc/gV,EAAQ4uV,EAAYpnpB,OAAOs5oB,EAAS9opB,MAAMm5X,IAAa9rX,GAAQ,Q,sCAGzH,SAAyBkoG,EAAUshjB,EAAiBx4Y,EAAOyqY,EAAUz7oB,GAAM,WACvE,GAAmB,OAAfgxQ,EAAM12I,KACN,OAAI02I,EAAMw1Y,cACUx1Y,EAAMu0Y,cAAgB,OAAAnmpB,EAAA,GAAG4xQ,EAAMu0Y,eAC3Cp8pB,KAAK8+pB,aAAav1R,KAAKxqR,EAAS5/F,SAAU0oQ,IAC/B7jR,KAAK,OAAAyF,EAAA,GAAI,SAAC62pB,GAErB,OADAz4Y,EAAMu0Y,cAAgBkE,EACf,IAAI,GAAgBhO,EAAU,OAGtC,OAAAr8oB,EAAA,GAAG,IAAI,GAAgBq8oB,EAAU,KAE5C,MAAiD,GAAM+N,EAAiBx4Y,EAAOyqY,GAA9DmL,EAAjB,EAAiBA,iBAAkB96R,EAAnC,EAAmCA,UACnC,IADA,EAAQ94M,QAEJ,OAAO40e,GAAU4B,GACrB,IAAME,EAAoBjO,EAAS9opB,MAAMm5X,GAEzC,OADqB3iY,KAAKwgqB,eAAezhjB,EAAU8oK,EAAOyqY,GACtCtupB,KAAK,OAAA0jI,EAAA,GAAS,SAAC+4hB,GAC/B,IAAMC,EAAcD,EAAarjoB,OAC3BujoB,EAAcF,EAAajvV,OACjC,EAA4DjvT,GAAM89oB,EAAiB5C,EAAkB8C,EAAmBI,GAAlGC,EAAtB,EAAQrO,aAAiCqL,EAAzC,EAAyCA,eAEnCrL,EAAe,IAAI,GAAgBqO,EAAkBtO,SAAUsO,EAAkB94pB,UACvF,GAA8B,IAA1B81pB,EAAez5pB,QAAgBoupB,EAAaj7Q,cAE5C,OADkB,EAAKkoR,eAAekB,EAAaC,EAAapO,GAC/CvupB,KAAK,OAAAyF,EAAA,GAAI,SAAC3B,GAAD,OAAc,IAAI,GAAgB21pB,EAAkB31pB,MAElF,GAA2B,IAAvB64pB,EAAYx8pB,QAA0C,IAA1By5pB,EAAez5pB,OAC3C,OAAO,OAAA8R,EAAA,GAAG,IAAI,GAAgBwnpB,EAAkB,KAEpD,IAAMoD,EAAkBvD,GAAUz1Y,KAAWhxQ,EAE7C,OADkB,EAAK4opB,cAAciB,EAAanO,EAAcoO,EAAa/C,EAAgBiD,EAAkB3O,GAAiBr7oB,GAAQ,GACvH7S,KAAK,OAAAyF,EAAA,GAAI,SAAC67Z,GAAD,OAAQ,IAAI,GAAgBm4P,EAAiBzkpB,OAAOssZ,EAAGgtP,UAAWhtP,EAAGx9Z,kB,4BAGvG,SAAei3G,EAAU8oK,EAAOyqY,GAAQ,WACpC,OAAIzqY,EAAM//Q,SAEC,OAAAmO,EAAA,GAAG,IAAI,GAAmB4xQ,EAAM//Q,SAAUi3G,IAEjD8oK,EAAMw1Y,kBAEsB54pB,IAAxBojR,EAAMu0Y,cACC,OAAAnmpB,EAAA,GAAG4xQ,EAAMu0Y,eAEbp8pB,KAAK8gqB,iBAAiB/hjB,EAAS5/F,SAAU0oQ,EAAOyqY,GAClDtupB,KAAK,OAAA0jI,EAAA,GAAS,SAACq5hB,GAChB,OAAIA,EACO,EAAKjC,aAAav1R,KAAKxqR,EAAS5/F,SAAU0oQ,GAC5C7jR,KAAK,OAAAyF,EAAA,GAAI,SAAC62pB,GAEX,OADAz4Y,EAAMu0Y,cAAgBkE,EACfA,KAnN/B,SAAsBz4Y,GAClB,OAAO,IAAIrtJ,EAAA,EAAW,SAAC4U,GAAD,OAASA,EAAIp6G,MAAMo9nB,GAAyB,gEAAD,OAAgEvqY,EAAM12I,KAAtE,0BAqN9C6vhB,CAAan5Y,MAGrB,OAAA5xQ,EAAA,GAAG,IAAI,GAAmB,GAAI8oG,M,8BAEzC,SAAiBmyc,EAAgBrpS,EAAOyqY,GAAQ,WACtC2O,EAAUp5Y,EAAMo5Y,QACtB,IAAKA,GAA8B,IAAnBA,EAAQ98pB,OACpB,OAAO,OAAA8R,EAAA,IAAG,GACd,IAAMirpB,EAAqBD,EAAQx3pB,IAAI,SAAC03pB,GACpC,IACIC,EADE1yf,EAAQwiZ,EAAeh/iB,IAAIivpB,GAEjC,GA/kBZ,SAAmBzyf,GACf,OAAOA,GAASzC,GAAWyC,EAAMuyf,SA8kBrBI,CAAU3yf,GACV0yf,EAAW1yf,EAAMuyf,QAAQp5Y,EAAOyqY,OAE/B,KAAIrmf,GAAWyC,GAIhB,MAAM,IAAIr6I,MAAM,yBAHhB+soB,EAAW1yf,EAAMm5G,EAAOyqY,GAK5B,OAAOS,GAAmBqO,KAE9B,OAAO,OAAAnrpB,EAAA,GAAGirpB,GACLl9pB,KAAK04pB,KAAyB,OAAA55hB,EAAA,GAAI,SAAClmG,GACpC,GAAK4/nB,GAAU5/nB,GAAf,CAEA,IAAM5H,EAAQo9nB,GAAyB,mBAAD,OAAoB,EAAK2M,cAAc9wU,UAAUrxT,GAAjD,MAEtC,MADA5H,EAAMmf,IAAMvX,EACN5H,KACN,OAAAvrB,EAAA,GAAI,SAAAmzB,GAAM,OAAe,IAAXA,O,gCAEtB,SAAmBirP,EAAO2uY,GAGtB,IAFA,IAAIl+nB,EAAM,GACNsX,EAAI4mnB,EAAQp3kB,OACH,CAET,GADA9mD,EAAMA,EAAItf,OAAO42B,EAAE0inB,UACQ,IAAvB1inB,EAAE4jnB,iBACF,OAAO,OAAAv9oB,EAAA,GAAGqiB,GAEd,GAAIsX,EAAE4jnB,iBAAmB,IAAM5jnB,EAAE9nC,SAAF,QAC3B,OAAO82pB,GAAqB/2Y,EAAMg3Y,YAEtCjvnB,EAAIA,EAAE9nC,SAAF,W,mCAGZ,SAAsBwqpB,EAAUuM,EAAYpM,GACxC,OAAOzypB,KAAKshqB,4BAA4BzC,EAAY7+pB,KAAK++pB,cAAc5koB,MAAM0koB,GAAavM,EAAUG,K,yCAExG,SAA4BoM,EAAYrI,EAASlE,EAAUG,GACvD,IAAM8O,EAAUvhqB,KAAKwhqB,mBAAmB3C,EAAYrI,EAAQp3kB,KAAMkzkB,EAAUG,GAC5E,OAAO,IAAI,GAAQ8O,EAASvhqB,KAAKyhqB,kBAAkBjL,EAAQpuV,YAAapoU,KAAKw2pB,QAAQpuV,aAAcouV,EAAQ7C,Y,+BAE/G,SAAkB+N,EAAkBC,GAChC,IAAMrpoB,EAAM,GAWZ,OAVAjlB,GAAQqupB,EAAkB,SAACzhqB,EAAGu8H,GAE1B,GADqC,iBAANv8H,GAAkBA,EAAEw3J,WAAW,KACzC,CACjB,IAAM0V,EAAaltK,EAAE+qD,UAAU,GAC/B1yB,EAAIkkG,GAAKmliB,EAAax0f,QAGtB70I,EAAIkkG,GAAKv8H,IAGVq4B,I,gCAEX,SAAmBumoB,EAAYhkhB,EAAOy3gB,EAAUG,GAAS,WAC/CmP,EAAkB5hqB,KAAK6hqB,eAAehD,EAAYhkhB,EAAMy3gB,SAAUA,EAAUG,GAC9E3qpB,EAAW,GAIf,OAHAuL,GAAQwnI,EAAM/yI,SAAU,SAACkyI,EAAO74I,GAC5B2G,EAAS3G,GAAQ,EAAKqgqB,mBAAmB3C,EAAY7khB,EAAOs4gB,EAAUG,KAEnE,IAAI,GAAgBmP,EAAiB95pB,K,4BAEhD,SAAe+2pB,EAAYiD,EAAoBC,EAAgBtP,GAAS,WACpE,OAAOqP,EAAmBr4pB,IAAI,SAAAmb,GAAC,OAAIA,EAAEusH,KAAKsmB,WAAW,KAAO,EAAKuqgB,aAAanD,EAAYj6oB,EAAG6toB,GACzF,EAAKwP,aAAar9oB,EAAGm9oB,O,0BAE7B,SAAalD,EAAYqD,EAAsBzP,GAC3C,IAAMv1e,EAAMu1e,EAAUyP,EAAqB/whB,KAAKnmF,UAAU,IAC1D,IAAKkyH,EACD,MAAM,IAAI7oJ,MAAJ,8BAAiCwqoB,EAAjC,2BAA8DqD,EAAqB/whB,KAAnF,OACV,OAAO+rC,I,0BAEX,SAAaglf,EAAsBH,GAC/B,IAD6C,EACzChlf,EAAM,EADmC,cAE7Bglf,GAF6B,IAE7C,2BAAgC,KAArBn9oB,EAAqB,QAC5B,GAAIA,EAAEusH,OAAS+whB,EAAqB/whB,KAEhC,OADA4whB,EAAex5nB,OAAOw0I,GACfn4J,EAEXm4J,KAPyC,8BAS7C,OAAOmlf,M,GAuBf,SAAS7C,GAAmB9M,GAExB,IADA,IAAMxlQ,EAAc,GACpB,MAA0BvwY,OAAOC,KAAK81oB,EAAazqpB,UAAnD,eAA8D,CAAzD,IAAM0spB,EAAW,KAEZ2N,EAAiB9C,GADT9M,EAAazqpB,SAAS0spB,KAGhC2N,EAAe7P,SAASnupB,OAAS,GAAKg+pB,EAAe7qR,iBACrDyV,EAAYynQ,GAAe2N,GAInC,OAvBJ,SAA8Bv9oB,GAC1B,GAA2B,IAAvBA,EAAE4uoB,kBAA0B5uoB,EAAE9c,SAAF,QAA4B,CACxD,IAAM8nC,EAAIhrB,EAAE9c,SAAF,QACV,OAAO,IAAI,GAAgB8c,EAAE0toB,SAASt5oB,OAAO42B,EAAE0inB,UAAW1inB,EAAE9nC,UAEhE,OAAO8c,EAkBAw9oB,CADG,IAAI,GAAgB7P,EAAaD,SAAUvlQ,I,IAuBnD,G,YACF,WAAY57Q,GAAI,oBACZnxI,KAAKmxI,KAAOA,EACZnxI,KAAK6nR,MAAQ7nR,KAAKmxI,KAAKnxI,KAAKmxI,KAAKhtI,OAAS,KAG5C,G,YACF,WAAY8a,EAAW4oQ,GAAK,oBACxB7nR,KAAKif,UAAYA,EACjBjf,KAAK6nR,MAAQA,IAcrB,SAASjhJ,GAAS/hI,EAAOktpB,EAAU7gG,GAC/B,IAAM94hB,EAIV,SAAgC25nB,GAC5B,IAAKA,EACD,OAAO,KACX,IAAK,IAAIntoB,EAAImtoB,EAASnrnB,OAAQhiB,EAAGA,EAAIA,EAAEgiB,OAAQ,CAC3C,IAAMihP,EAAQjjQ,EAAEotoB,YAChB,GAAInqY,GAASA,EAAMu0Y,cACf,OAAOv0Y,EAAMu0Y,cAErB,OAAO,KAZQiG,CAAuBtQ,GAEtC,OADiB35nB,EAASA,EAAOgF,OAAOje,SAAW+xiB,GACnCh/iB,IAAIrN,GAYxB,SAASy9pB,GAAoBnH,EAAYC,EAAU1hjB,EAAU6ojB,GAG5D,IAHwE1tC,EAGxE,uDAHiF,CAC9E2tC,oBAAqB,GACrBC,kBAAmB,IAEbC,EAAerM,GAAkB+E,GAQvC,OANAD,EAAWrzpB,SAASuL,QAAQ,SAAAu8B,GACxB+ynB,GAAe/ynB,EAAG8ynB,EAAa9ynB,EAAEruC,MAAMsV,QAAS6iG,EAAU6ojB,EAAWvppB,OAAO,CAAC42B,EAAEruC,QAASsznB,UACjF6tC,EAAa9ynB,EAAEruC,MAAMsV,UAGhCxD,GAAQqvpB,EAAc,SAACziqB,EAAGu8H,GAAJ,OAAUi/hB,GAA8Bx7pB,EAAGy5G,EAAS2qC,WAAW7nB,GAAIq4f,KAClFA,EAEX,SAAS8tC,GAAexH,EAAYC,EAAUN,EAAgByH,GAG7D,IAHyE1tC,EAGzE,uDAHkF,CAC/E2tC,oBAAqB,GACrBC,kBAAmB,IAEb/9oB,EAASy2oB,EAAW55pB,MACpBw8U,EAAOq9U,EAAWA,EAAS75pB,MAAQ,KACnCiQ,EAAUsppB,EAAiBA,EAAez2gB,WAAW82gB,EAAW55pB,MAAMsV,QAAU,KAEtF,GAAIknU,GAAQr5T,EAAOstoB,cAAgBj0U,EAAKi0U,YAAa,CACjD,IAAM4Q,EAAYC,GAA4B9kV,EAAMr5T,EAAQA,EAAOstoB,YAAY8Q,uBAC3EF,EACA/tC,EAAO4tC,kBAAkB7+pB,KAAK,IAAI,GAAY2+pB,KAI9C79oB,EAAO5U,KAAOiuU,EAAKjuU,KACnB4U,EAAO6yoB,cAAgBx5U,EAAKw5U,eAI5B+K,GAAoBnH,EAAYC,EADhC12oB,EAAOzF,UACmCzN,EAAUA,EAAQ1J,SAAW,KAI7BgzpB,EAJmCyH,EAAY1tC,GAMzF+tC,GAAapxpB,GAAWA,EAAQqF,QAAUrF,EAAQqF,OAAOkspB,aACzDluC,EAAO2tC,oBAAoB5+pB,KAAK,IAAI,GAAc4N,EAAQqF,OAAOoI,UAAW8+T,SAI5EA,GACA09U,GAA8BL,EAAU5ppB,EAASqjnB,GAErDA,EAAO4tC,kBAAkB7+pB,KAAK,IAAI,GAAY2+pB,IAG1CD,GAAoBnH,EAAY,KADhCz2oB,EAAOzF,UAC+BzN,EAAUA,EAAQ1J,SAAW,KAI7BgzpB,EAJmCyH,EAAY1tC,GAO7F,OAAOA,EAEX,SAASguC,GAA4B9kV,EAAMr5T,EAAQkO,GAC/C,GAAoB,mBAATA,EACP,OAAOA,EAAKmrT,EAAMr5T,GAEtB,OAAQkO,GACJ,IAAK,mBACD,OAAQ2goB,GAAUx1U,EAAK5pS,IAAKzvB,EAAOyvB,KACvC,IAAK,gCACD,OAAQo/mB,GAAUx1U,EAAK5pS,IAAKzvB,EAAOyvB,OAC9Bw+mB,GAAa50U,EAAK3V,YAAa1jT,EAAO0jT,aAC/C,IAAK,SACD,OAAO,EACX,IAAK,4BACD,OAAQ4vV,GAA0Bj6U,EAAMr5T,KACnCiuoB,GAAa50U,EAAK3V,YAAa1jT,EAAO0jT,aAC/C,IAAK,eACL,QACI,OAAQ4vV,GAA0Bj6U,EAAMr5T,IAGpD,SAAS+2oB,GAA8B5zY,EAAOr2Q,EAASqjnB,GACnD,IAAM/snB,EAAWuupB,GAAkBxuY,GAC7B/9I,EAAI+9I,EAAMtmR,MAChB8R,GAAQvL,EAAU,SAAC47I,EAAM83gB,GAKjBC,GAA8B/3gB,EAJ7B5Z,EAAE7qH,UAGEzN,EAC+BA,EAAQ1J,SAASu8I,WAAWm3gB,GAG5B,KANAhqpB,EAGwCqjnB,KAUhFA,EAAO2tC,oBAAoB5+pB,KAAK,IAAI,GAJnCkmI,EAAE7qH,WAGEzN,GAAWA,EAAQqF,QAAUrF,EAAQqF,OAAOkspB,YACCvxpB,EAAQqF,OAAOoI,UAHf,KAG0B6qH,I,IAiJ9E,G,+CAEN,SAASk5hB,GAAmB/uoB,GAExB,OAAO,IAAIumG,EAAA,EAAW,SAAC4U,GAAD,OAASA,EAAIp6G,MAAMf,K,IAmBvC,G,8BACF,WAAYgvoB,EAAmB7qoB,EAAQo+nB,EAASrinB,EAAKijnB,EAA2ByG,GAAsB,oBAClG79pB,KAAKijqB,kBAAoBA,EACzBjjqB,KAAKo4B,OAASA,EACdp4B,KAAKw2pB,QAAUA,EACfx2pB,KAAKm0C,IAAMA,EACXn0C,KAAKo3pB,0BAA4BA,EACjCp3pB,KAAK69pB,uBAAyBA,G,wBAElC,WACI,IAAMqB,EAAmB38oB,GAAMviB,KAAKw2pB,QAAQp3kB,KAAM,GAAI,GAAIp/E,KAAKo4B,OAAOjjB,OAAO,SAAAy6B,GAAC,YAAqBnrC,IAAjBmrC,EAAEivnB,aAA2B7+pB,KAAK69pB,wBAC/GtL,aACCzqpB,EAAW9H,KAAKkjqB,oBAAoBljqB,KAAKo4B,OAAQ8moB,EAAkBhN,IACzE,GAAiB,OAAbpqpB,EACA,OAAO,KAIX,IAAMs3E,EAAO,IAAI,GAAuB,GAAI5iE,OAAO67C,OAAO,IAAK77C,OAAO67C,OAAO77C,OAAOuqB,OAAO,GAAI/mC,KAAKw2pB,QAAQpuV,cAAepoU,KAAKw2pB,QAAQ7C,SAAU,GAAIzB,GAAgBlypB,KAAKijqB,kBAAmB,KAAMjjqB,KAAKw2pB,QAAQp3kB,MAAO,EAAG,IACrN79D,EAAW,IAAI,GAAS69D,EAAMt3E,GAC9Bq7pB,EAAa,IAAI,GAAoBnjqB,KAAKm0C,IAAK5yB,GAErD,OADAvhB,KAAKojqB,qBAAqBD,EAAWnN,OAC9BmN,I,kCAEX,SAAqBE,GAAS,WACpBx7Y,EAAQw7Y,EAAU9hqB,MAClBsG,EAAIsvpB,GAA2BtvY,EAAO7nR,KAAKo3pB,2BACjDvvY,EAAM/9L,OAASttE,OAAO67C,OAAOxwD,EAAEiiF,QAC/B+9L,EAAM/3Q,KAAO0M,OAAO67C,OAAOxwD,EAAEiI,MAC7BuzpB,EAAUv7pB,SAASuL,QAAQ,SAAA0kC,GAAC,OAAI,EAAKqrnB,qBAAqBrrnB,O,iCAE9D,SAAoB3f,EAAQm6nB,EAAc17oB,GACtC,OAAqC,IAAjC07oB,EAAaD,SAASnupB,QAAgBoupB,EAAaj7Q,cAC5Ct3Y,KAAKs5pB,gBAAgBlhoB,EAAQm6nB,GAEjCvypB,KAAKsjqB,eAAelroB,EAAQm6nB,EAAcA,EAAaD,SAAUz7oB,K,6BAU5E,SAAgBuhB,EAAQm6nB,GAEpB,IADA,IAAMzqpB,EAAW,GACjB,MAA0B0U,OAAOC,KAAK81oB,EAAazqpB,UAAnD,eAA8D,CAAzD,IAAM0spB,EAAW,KACZx6gB,EAAQu4gB,EAAazqpB,SAAS0spB,GAG9BgJ,EAAeD,GAAsBnloB,EAAQo8nB,GAC7C+O,EAAiBvjqB,KAAKkjqB,oBAAoB1F,EAAcxjhB,EAAOw6gB,GACrE,GAAuB,OAAnB+O,EAGA,OAAO,KAEXz7pB,EAASlE,KAAT,MAAAkE,EAAQ,YAASy7pB,IAKrB,IAAMC,EAAiBC,GAAsB37pB,GAO7C,OAD4B07pB,EAmE1B3npB,KAAK,SAACE,EAAGC,GACX,OAAID,EAAExa,MAAMsV,SAAWq7oB,IACX,EACRl2oB,EAAEza,MAAMsV,SAAWq7oB,GACZ,EACJn2oB,EAAExa,MAAMsV,OAAOsgC,cAAcn7B,EAAEza,MAAMsV,UAvErC2spB,I,4BAEX,SAAeproB,EAAQm6nB,EAAcD,EAAUz7oB,GAAM,oBACjCuhB,GADiC,IACjD,2BAAwB,KACdtwB,EAAW9H,KAAK0jqB,2BADF,QACgCnR,EAAcD,EAAUz7oB,GAC5E,GAAiB,OAAb/O,EACA,OAAOA,GAJkC,8BAOjD,OAAI02pB,GAAiBjM,EAAcD,EAAUz7oB,GAClC,GAEJ,O,wCAEX,SAA2BgxQ,EAAO02Y,EAAYjM,EAAUz7oB,GACpD,GAAIgxQ,EAAMg3Y,aAAeP,GAAiBz2Y,EAAO02Y,EAAYjM,EAAUz7oB,GACnE,OAAO,KACX,IAAIk7oB,EACA0L,EAAmB,GACnB8C,EAAoB,GACxB,GAAmB,OAAf14Y,EAAM12I,KAAe,CACrB,IAAMrnD,EAASwokB,EAASnupB,OAAS,EAAI,GAAKmupB,GAAUz2Q,WAAa,GACjEk2Q,EAAW,IAAI,GAAuBO,EAAUxokB,EAAQttE,OAAO67C,OAAO77C,OAAOuqB,OAAO,GAAI/mC,KAAKw2pB,QAAQpuV,cAAepoU,KAAKw2pB,QAAQ7C,SAAU3vZ,GAAQ6jB,GAAQy1Y,GAAUz1Y,GAAQA,EAAM5oQ,UAAW4oQ,EAAO87Y,GAAsBpF,GAAaqF,GAAkBrF,GAAcjM,EAASnupB,OAAQ0/pB,GAAWh8Y,QAEnS,CACD,IAAMjrP,EAAS,GAAM2hoB,EAAY12Y,EAAOyqY,GACxC,IAAK11nB,EAAOitJ,QACR,OAAO,KAEX4ze,EAAmB7goB,EAAO6goB,iBAC1B8C,EAAoBjO,EAAS9opB,MAAMozB,EAAO+lW,WAC1CovR,EAAW,IAAI,GAAuB0L,EAAkB7goB,EAAOi/W,WAAYr/X,OAAO67C,OAAO77C,OAAOuqB,OAAO,GAAI/mC,KAAKw2pB,QAAQpuV,cAAepoU,KAAKw2pB,QAAQ7C,SAAU3vZ,GAAQ6jB,GAAQy1Y,GAAUz1Y,GAAQA,EAAM5oQ,UAAW4oQ,EAAO87Y,GAAsBpF,GAAaqF,GAAkBrF,GAAcd,EAAiBt5pB,OAAQ0/pB,GAAWh8Y,IAEnU,IAAM84Y,EAyCd,SAAwB94Y,GACpB,OAAIA,EAAM//Q,SACC+/Q,EAAM//Q,SAEb+/Q,EAAMw1Y,aACCx1Y,EAAMu0Y,cAAc5qV,OAExB,GAhDiB,CAAe3pD,GACnC,EAAyCtlQ,GAAMg8oB,EAAYd,EAAkB8C,EAI7EI,EAAYxrpB,OAAO,SAAAy6B,GAAC,YAAqBnrC,IAAjBmrC,EAAEivnB,aAA2B7+pB,KAAK69pB,wBAJlDtL,EAAR,EAAQA,aAAcqL,EAAtB,EAAsBA,eAKtB,GAA8B,IAA1BA,EAAez5pB,QAAgBoupB,EAAaj7Q,cAAe,CAC3D,IAAM,EAAWt3Y,KAAKs5pB,gBAAgBqH,EAAapO,GACnD,OAAiB,OAAb,EACO,KAEJ,CAAC,IAAI,GAASR,EAAU,IAEnC,GAA2B,IAAvB4O,EAAYx8pB,QAA0C,IAA1By5pB,EAAez5pB,OAC3C,MAAO,CAAC,IAAI,GAAS4tpB,EAAU,KAEnC,IAAM8O,EAAkBvD,GAAUz1Y,KAAWhxQ,EASvC/O,EAAW9H,KAAKsjqB,eAAe3C,EAAapO,EAAcqL,EAAgBiD,EAAkB3O,GAAiBr7oB,GACnH,OAAiB,OAAb/O,EACO,KAEJ,CAAC,IAAI,GAASiqpB,EAAUjqpB,Q,GA8BvC,SAAS27pB,GAAsBtviB,GAC3B,IADgC,EAC1Bv3F,EAAS,GAETknoB,EAAc,IAAIn2pB,IAHQ,cAIbwmH,GAJa,qBAIN,IAAfuvB,EAAe,QACtB,IAdR,SAA4BA,GACxB,IAAMtrH,EAASsrH,EAAKniJ,MAAMywpB,YAC1B,OAAO55nB,GAA0B,KAAhBA,EAAO+4G,WAAqC1sI,IAAtB2zB,EAAOymoB,WAYrCkF,CAAmBrghB,GAAO,OAC3B9mH,EAAOh5B,KAAK8/I,GADe,EAI/B,IAC0C,EADpCsghB,EAAyBpnoB,EAAOv3B,KAAK,SAAA4+pB,GAAU,OAAIvghB,EAAKniJ,MAAMywpB,cAAgBiS,EAAW1iqB,MAAMywpB,mBACtEvtpB,IAA3Bu/pB,IACA,EAAAA,EAAuBl8pB,UAASlE,KAAhC,oBAAwC8/I,EAAK57I,WAC7Cg8pB,EAAYjhqB,IAAImhqB,IAGhBpnoB,EAAOh5B,KAAK8/I,IAXpB,+BAJgC,kDAsBPoghB,GAtBO,IAsBhC,2BAAsC,KAA3BI,EAA2B,QAC5BV,EAAiBC,GAAsBS,EAAWp8pB,UACxD80B,EAAOh5B,KAAK,IAAI,GAASsgqB,EAAW3iqB,MAAOiiqB,KAxBf,8BA0BhC,OAAO5moB,EAAOznB,OAAO,SAAA4iC,GAAC,OAAK+rnB,EAAY1vpB,IAAI2jC,KAc/C,SAAS4rnB,GAAsBpR,GAE3B,IADA,IAAI3toB,EAAI2toB,EACD3toB,EAAEo5oB,gBACLp5oB,EAAIA,EAAEo5oB,eAEV,OAAOp5oB,EAEX,SAASg/oB,GAAkBrR,GAGvB,IAFA,IAAI3toB,EAAI2toB,EACJj6nB,EAAO1T,EAAEq5oB,mBAAqBr5oB,EAAEq5oB,mBAAqB,EAClDr5oB,EAAEo5oB,gBAEL1loB,IADA1T,EAAIA,EAAEo5oB,gBACIC,mBAAqBr5oB,EAAEq5oB,mBAAqB,EAE1D,OAAO3loB,EAAM,EAEjB,SAAS0rO,GAAQ6jB,GACb,OAAOA,EAAM/3Q,MAAQ,GAEzB,SAAS+zpB,GAAWh8Y,GAChB,OAAOA,EAAMrjR,SAAW,GA+E5B,SAAS2/pB,GAAUtgqB,GACf,OAAO,OAAAq/H,EAAA,GAAU,SAAAjjI,GACb,IAAMmkqB,EAAavgqB,EAAK5D,GACxB,OAAImkqB,EACO,OAAA9/pB,EAAA,GAAK8/pB,GAAYpgqB,KAAK,OAAAyF,EAAA,GAAI,kBAAMxJ,KAEpC,OAAAgW,EAAA,GAAGhW,K,IAkBZ,G,+CAgDA,G,2MAxBF,SAAa4nR,GACT,OAAO,I,mBAKX,SAAMA,EAAOw8Y,M,0BAEb,SAAax8Y,GACT,OAAO,I,sBAGX,SAASA,GACL,OAAO,O,8BAOX,SAAiBnjQ,EAAQq5T,GACrB,OAAOr5T,EAAOstoB,cAAgBj0U,EAAKi0U,gB,IAkBrCsS,GAAS,IAAI,IAAe,UAC5B,G,8BACF,WAAYx9E,EAAQw/D,EAAUie,EAAqBC,GAAiB,oBAChExkqB,KAAK8mlB,OAASA,EACd9mlB,KAAKsmpB,SAAWA,EAChBtmpB,KAAKukqB,oBAAsBA,EAC3BvkqB,KAAKwkqB,kBAAoBA,G,mBAE7B,SAAKjxE,EAAgB1rU,GAAK,WACtB,GAAIA,EAAM48Y,SACN,OAAO58Y,EAAM48Y,SAEbzkqB,KAAKukqB,qBACLvkqB,KAAKukqB,oBAAoB18Y,GAE7B,IACM68Y,EADiB1kqB,KAAK2kqB,kBAAkB98Y,EAAMw1Y,cAClBr5pB,KAAK,OAAAyF,EAAA,GAAI,SAAC3E,GACpC,EAAK0/pB,mBACL,EAAKA,kBAAkB38Y,GAE3B,IAAMzqP,EAASt4B,EAAQQ,OAAOiulB,GAK9B,OAAO,IAAI,GAAmBjsV,GAAQlqO,EAAOje,SAASjN,IAAIoypB,QAAQ7/pB,EAAW,IAAYwsjB,KAAO,IAAYn0K,WACvGrzY,IAAI2zpB,IAAoBhgoB,KAC7B,OAAAqqG,EAAA,GAAW,SAAC9qG,GAEZ,MADAkrP,EAAM48Y,cAAWhgqB,EACXk4B,KAKV,OAFAkrP,EAAM48Y,SAAW,IAAIx+e,EAAA,EAAsBy+e,EAAY,kBAAM,IAAIjhqB,EAAA,IAC5DO,KAAK,OAAAyiI,EAAA,MACHohJ,EAAM48Y,W,+BAEjB,SAAkBpH,GAAY,WAC1B,MAA4B,iBAAjBA,EACA,OAAA/4pB,EAAA,GAAKtE,KAAK8mlB,OAAOv9M,KAAK8zR,IAGtBtK,GAAmBsK,KAAgBr5pB,KAAK,OAAA0jI,EAAA,GAAS,SAAClnI,GACrD,OAAIA,aAAa,IACN,OAAAyV,EAAA,GAAGzV,GAGH,OAAA8D,EAAA,GAAK,EAAKgipB,SAASvnD,mBAAmBv+lB,W,GAmB3D,G,YACF,iCACIR,KAAK6W,OAAS,KACd7W,KAAK6nR,MAAQ,KACb7nR,KAAK8rQ,SAAW,KAChB9rQ,KAAK8H,SAAW,IAAI,GACpB9H,KAAK87pB,UAAY,OAQnB,G,8BACF,iCAEI97pB,KAAK05G,SAAW,IAAIjsG,K,mCAGxB,SAAqB+tpB,EAAW3kpB,GAC5B,IAAMrF,EAAUxR,KAAKg8pB,mBAAmBR,GACxChqpB,EAAQqF,OAASA,EACjB7W,KAAK05G,SAASrlG,IAAImnpB,EAAWhqpB,K,oCAOjC,SAAuBgqpB,GACnB,IAAMhqpB,EAAUxR,KAAKqkJ,WAAWm3gB,GAC5BhqpB,IACAA,EAAQqF,OAAS,Q,iCAOzB,WACI,IAAM6iG,EAAW15G,KAAK05G,SAEtB,OADA15G,KAAK05G,SAAW,IAAIjsG,IACbisG,I,gCAEX,SAAmBA,GACf15G,KAAK05G,SAAWA,I,gCAEpB,SAAmB8hjB,GACf,IAAIhqpB,EAAUxR,KAAKqkJ,WAAWm3gB,GAK9B,OAJKhqpB,IACDA,EAAU,IAAI,GACdxR,KAAK05G,SAASrlG,IAAImnpB,EAAWhqpB,IAE1BA,I,wBAEX,SAAWgqpB,GACP,OAAOx7pB,KAAK05G,SAASxnG,IAAIsppB,IAAc,S,GAkBzC,G,+CAKA,G,+FACF,SAAiBrnnB,GACb,OAAO,I,qBAEX,SAAQA,GACJ,OAAOA,I,mBAEX,SAAMywnB,EAAYC,GACd,OAAOD,M,GAWf,SAASE,GAAoB9voB,GACzB,MAAMA,EAEV,SAAS+voB,GAAgC/voB,EAAO+poB,EAAe5qnB,GAC3D,OAAO4qnB,EAAc5koB,MAAM,KAK/B,SAAS6qoB,GAAkBjT,EAAUkT,GACjC,OAAO,OAAAhvpB,EAAA,GAAG,M,sBAcRivpB,E,8BAKF,WAAYjC,EAAmBlE,EAAeoG,EAAc7qoB,EAAUnb,EAAU2nkB,EAAQw/D,EAAUlunB,GAAM,+BACpGp4B,KAAKijqB,kBAAoBA,EACzBjjqB,KAAK++pB,cAAgBA,EACrB/+pB,KAAKmlqB,aAAeA,EACpBnlqB,KAAKs6B,SAAWA,EAChBt6B,KAAKo4B,OAASA,EACdp4B,KAAKolqB,yBAA2B,KAChCplqB,KAAKqlqB,kBAAoB,KACzBrlqB,KAAKslqB,UAAW,EAKhBtlqB,KAAKulqB,uBAAyB,KAC9BvlqB,KAAKwlqB,aAAe,EACpBxlqB,KAAKylqB,iBAAkB,EAIvBzlqB,KAAK6yD,OAAS,IAAIpvD,EAAA,EAIlBzD,KAAKwrK,aAAes5f,GAOpB9kqB,KAAK0lqB,yBAA2BX,GAKhC/kqB,KAAK2lqB,WAAY,EACjB3lqB,KAAK4lqB,kBAAoB,EAQzB5lqB,KAAKgvF,MAAQ,CAAE62kB,oBAAqBb,GAAmBc,mBAAoBd,IAK3EhlqB,KAAK+lqB,oBAAsB,IAAI,GAI/B/lqB,KAAKi4pB,mBAAqB,IAAI,GAM9Bj4pB,KAAKgmqB,oBAAsB,SAU3BhmqB,KAAKo3pB,0BAA4B,YAQjCp3pB,KAAKimqB,kBAAoB,WAKzBjmqB,KAAK69pB,uBAAyB,YAG9B79pB,KAAK++G,SAAW5/F,EAASjN,IAAI,KAC7BlS,KAAK+qC,QAAU5rB,EAASjN,IAAI,MAC5B,IAAMowH,EAASnjH,EAASjN,IAAI,KAC5BlS,KAAKylqB,gBAAkBnjiB,aAAkB,KAAU,IAAOo/d,kBAC1D1hmB,KAAKkmqB,YAAY9toB,GACjBp4B,KAAKmmqB,eAjvGF,IAAI,GAAQ,IAAI,GAAgB,GAAI,IAAK,GAAI,MAkvGhDnmqB,KAAKomqB,WAAapmqB,KAAKmmqB,eACvBnmqB,KAAKqmqB,eAAiBrmqB,KAAKmmqB,eAC3BnmqB,KAAK8+pB,aAAe,IAAI,GAAmBh4E,EAAQw/D,EAV/B,SAACx8gB,GAAD,OAAO,EAAKruC,aAAa,IAAI,GAAqBquC,KACpD,SAACA,GAAD,OAAO,EAAKruC,aAAa,IAAI,GAAmBquC,MAUlE9pI,KAAKsmqB,YAAc/P,GAAiBv2pB,KAAKmmqB,eAAgBnmqB,KAAKijqB,mBAC9DjjqB,KAAK2hT,YAAc,IAAIjzS,EAAA,EAAgB,CACnCsX,GAAI,EACJmgpB,eAAgBnmqB,KAAKmmqB,eACrBI,cAAevmqB,KAAKmmqB,eACpBK,aAAcxmqB,KAAK+lqB,oBAAoBU,QAAQzmqB,KAAKmmqB,gBACpDtU,kBAAmB7xpB,KAAK+lqB,oBAAoBU,QAAQzmqB,KAAKmmqB,gBACzDO,OAAQ1mqB,KAAKmmqB,eACbQ,OAAQ,GACRniqB,QAAS,KACTixH,OAAQ,KACRvhG,QAAS3vB,QAAQC,SAAQ,GACzB+hB,OAAQ,aACRqroB,cAAe,KACf50V,gBAAiBh9T,KAAKsmqB,YAAYvU,SAClC6U,eAAgB,KAChBC,mBAAoB7mqB,KAAKsmqB,YACzBQ,kBAAmB,KACnBC,OAAQ,CAAEtE,kBAAmB,GAAID,oBAAqB,IACtDwE,aAAc,OAElBhnqB,KAAKinqB,YAAcjnqB,KAAKknqB,iBAAiBlnqB,KAAK2hT,aAC9C3hT,KAAKmnqB,sB,+BAET,SAAiBxlX,GAAW,WAClBylX,EAAgBpnqB,KAAK6yD,OAC3B,OAAO8uP,EAAY39S,KAAK,OAAAmR,EAAA,GAAO,SAAA3U,GAAC,OAAa,IAATA,EAAEwlB,KAEtC,OAAAvc,EAAA,GAAI,SAAAjJ,GAAC,OAAKgc,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEgmqB,aAAc,EAAKT,oBAAoBU,QAAQjmqB,EAAEkmqB,YAEjG,OAAAxjiB,EAAA,GAAU,SAAA1iI,GACN,IAn6DY2kqB,EAAclN,EAAoB4C,EAm6D1CnwS,GAAY,EACZn+O,GAAU,EACd,OAAO,OAAAt2H,EAAA,GAAGzV,GAAGwD,KAEb,OAAA8+H,EAAA,GAAI,SAAAtiI,GACA,EAAK6kqB,kBAAoB,CACrBr/oB,GAAIxlB,EAAEwlB,GACNqhpB,WAAY7mqB,EAAE+lqB,cACdC,aAAchmqB,EAAEgmqB,aAChBjomB,QAAS/9D,EAAE+lB,OACXogpB,OAAQnmqB,EAAEmmqB,OACVW,mBAAoB,EAAKlC,yBAA2B5opB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI,EAAKq+nB,0BAA2B,CAAEkC,mBAAoB,OACtI,QAER,OAAApkiB,EAAA,GAAU,SAAA1iI,GACV,IA7gCU0wjB,EAAgB4tG,EAAcC,EAAe3moB,EA6gCjDmvoB,GAAiB,EAAK5B,WACxBnlqB,EAAEgmqB,aAAav0oB,aAAe,EAAKo0oB,eAAep0oB,WAGtD,IAFwD,WAA7B,EAAK+zoB,qBAA0CuB,IACtE,EAAKxB,oBAAoByB,iBAAiBhnqB,EAAEkmqB,QAE5C,OAAO,OAAAzwpB,EAAA,GAAGzV,GAAGwD,KAEb,OAAAk/H,EAAA,GAAU,SAAA1iI,GACN,IAAM8kN,EAAa,EAAKq8F,YAAY7lL,WAEpC,OADAsriB,EAAcvjqB,KAAK,IAAI,EAAgBrD,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAehmqB,EAAE+lB,OAAQ/lB,EAAEoxpB,gBACxFtsc,IAAe,EAAKq8F,YAAY7lL,WACzB,IAIJv3H,QAAQC,QAAQhE,MA5hCrB0wjB,EA+hCW,EAAKnyc,SAAS5/F,SA/hCT2/oB,EA+hCmB,EAAKA,aA/hCVC,EA+hCwB,EAAKA,cA/hCd3moB,EA+hC6B,EAAKA,OA9hC9F,OAAA8qG,EAAA,GAAU,SAAA1iI,GAAC,OAzVtB,SAAwB0wjB,EAAgB4tG,EAAcC,EAAevI,EAASp+nB,GAC1E,OAAO,IAAI,GAAe84hB,EAAgB4tG,EAAcC,EAAevI,EAASp+nB,GAAQuf,QAwVlE+vnB,CAAex2G,EAAgB4tG,EAAcC,EAAev+pB,EAAEgmqB,aAAcpuoB,GAC7Fp0B,KAAK,OAAAyF,EAAA,GAAI,SAAAoopB,GAAiB,OAAKr1oB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEqxpB,4BA+hC1D,OAAA/uhB,EAAA,GAAI,SAAAtiI,GACA,EAAK6kqB,kBAAoB7opB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI,EAAKs+nB,mBAAoB,CAAEsC,SAAUnnqB,EAAEqxpB,sBA9fxH,SAAqBoR,EAAmB7qoB,EAAQwvoB,EAAYxQ,EAA2ByG,GACnF,OAAO,OAAAn2hB,EAAA,GAAS,SAAAlnI,GAAC,OA1PrB,SAAmByiqB,EAAmB7qoB,EAAQo+nB,EAASrinB,GAA+E,IAA1EijnB,EAA0E,uDAA9C,YAAayG,EAAiC,uDAAR,SAC1H,IACI,IAAMjhoB,EAAS,IAAI,GAAWqmoB,EAAmB7qoB,EAAQo+nB,EAASrinB,EAAKijnB,EAA2ByG,GAC7FgK,YACL,OAAe,OAAXjroB,EACOomoB,GAAmB,IAAI,IAGvB,OAAA/spB,EAAA,GAAG2mB,GAGlB,MAAO3I,GAGH,OAAO+uoB,GAAmB/uoB,IA4OT4zoB,CAAU5E,EAAmB7qoB,EAAQ53B,EAAEqxpB,mBAggBM19mB,EAhgBwB3zC,EAAEqxpB,kBAggBlB,EAAK4V,aAAatznB,IAhgBoBijnB,EAA2ByG,GACtI75pB,KAAK,OAAAyF,EAAA,GAAI,SAAAm9pB,GAAc,OAAKpqpB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEomqB,sBA+fN,IAACzynB,IAAlD2znB,CAAY,EAAK7E,kBAAmB,EAAK7qoB,OAAQ,EAAiC,EAAKg/nB,0BAA2B,EAAKyG,wBAEvH,OAAA/6hB,EAAA,GAAI,SAAAtiI,GAC+B,UAA3B,EAAKylqB,oBACAzlqB,EAAEmmqB,OAAOoB,oBACV,EAAKC,cAAcxnqB,EAAEqxpB,oBAAqBrxpB,EAAEmmqB,OAAOsB,WAAYznqB,EAAEwlB,GAAIxlB,EAAEmmqB,OAAOt+pB,OAElF,EAAKg+pB,eAAiB7lqB,EAAEqxpB,mBAG5B,IAAMqW,EAAmB,IAAI,EAAiB1nqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAe,EAAKiB,aAAajnqB,EAAEqxpB,mBAAoBrxpB,EAAEomqB,gBACjIQ,EAAcvjqB,KAAKqkqB,MASvB,GAL2BX,GAAiB,EAAKnB,YAC7C,EAAKL,oBAAoByB,iBAAiB,EAAKpB,YAI3B,CACpB,IAAYI,EAAgDhmqB,EAAhDgmqB,aAAcjgpB,EAAkC/lB,EAAlC+lB,OAAQqroB,EAA0BpxpB,EAA1BoxpB,cAAe+U,EAAWnmqB,EAAXmmqB,OAC3CwB,EAAW,IAAI,EADuC3nqB,EAApDwlB,GACiC,EAAKyhpB,aAAajB,GAAejgpB,EAAQqroB,GAClFwV,EAAcvjqB,KAAKskqB,GACnB,IAAMvB,EAAiBrQ,GAAiBiQ,EAAc,EAAKvD,mBAAmBlR,SAC9E,OAAO,OAAA97oB,EAAA,GAAGuG,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEomqB,iBAAgB/U,kBAAmB2U,EAAcG,OAAQnqpB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI4/nB,GAAS,CAAEoB,oBAAoB,EAAOE,YAAY,OAW3L,OAHA,EAAK7B,WAAa5lqB,EAAEkmqB,OACpB,EAAKL,eAAiB7lqB,EAAEqxpB,kBACxBrxpB,EAAEgE,QAAQ,MACH,MAKnB2/pB,GAAU,SAAA3jqB,GACN,MAA2IA,EAA/CmmqB,OAC5F,OAAO,EAAK33kB,MAAM62kB,oBADyHrlqB,EAAnIomqB,eAC8C,CAClDpB,aAFuIhlqB,EAAnHwlB,GAGpBoipB,eAHuI5nqB,EAAjGgmqB,aAItCJ,WAJuI5lqB,EAAnEkmqB,OAKpEqB,qBALJ,EAAsGA,mBAMlGE,aANJ,EAA0HA,eAU9H,OAAAnliB,EAAA,GAAI,SAAAtiI,GACA,IAAM6nqB,EAAc,IAAI,EAAiB7nqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAe,EAAKiB,aAAajnqB,EAAEqxpB,mBAAoBrxpB,EAAEomqB,gBAC5H,EAAKnrkB,aAAa4skB,KAClB,OAAA5+pB,EAAA,GAAI,SAAAjJ,GAAC,OAAKgc,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEumqB,QApkCrCripB,EAokC+DlkB,EAAEomqB,eApkCzD7oV,EAokCyEv9U,EAAEw8T,gBApkCrE89V,EAokCsF,EAAKqK,aAnkC1HpK,EAAar2oB,EAAOsxoB,MAEnBsM,GAAoBvH,EADVh9U,EAAOA,EAAKi4U,MAAQ,KACY8E,EAAgB,CAACC,EAAWx5pB,WAHjF,IAA2BmjB,EAAQq5T,EAAM+8U,EAC/BC,IAyIV,SAAqB7pG,EAAgB2pG,GACjC,OAAO,OAAAnzhB,EAAA,GAAS,SAAAlnI,GACZ,IAAQomqB,EAAwFpmqB,EAAxFomqB,eAAgB5pW,EAAwEx8T,EAAxEw8T,gBAAxB,EAAgGx8T,EAAvDumqB,OAAUtE,EAAnD,EAAmDA,kBAAmBD,EAAtE,EAAsEA,oBACtE,OAAmC,IAA/BA,EAAoBr+pB,QAA6C,IAA7Bs+pB,EAAkBt+pB,OAC/C,OAAA8R,EAAA,GAAGuG,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEwmqB,cAAc,KAU1E,SAAgCnyC,EAAQyzC,EAAWC,EAASr3G,GACxD,OAAO,OAAA5sjB,EAAA,GAAKuwnB,GAAQ7wnB,KAAK,OAAA0jI,EAAA,GAAS,SAAA0mQ,GAAK,OAwF3C,SAA0BnvX,EAAWuppB,EAASD,EAASD,EAAWp3G,GAC9D,IAAMu3G,EAAgBD,GAAWA,EAAQxW,YAAcwW,EAAQxW,YAAYyW,cAAgB,KAC3F,IAAKA,GAA0C,IAAzBA,EAActkqB,OAChC,OAAO,OAAA8R,EAAA,IAAG,GACd,IAAMyypB,EAA2BD,EAAch/pB,IAAI,SAACmmC,GAChD,IACI9D,EADE4iI,EAAQ9nC,GAASh3F,EAAG44nB,EAASt3G,GAEnC,GAp9BR,SAAyBxiZ,GACrB,OAAOA,GAASzC,GAAWyC,EAAM+5f,eAm9BzBE,CAAgBj6f,GAChB5iI,EAAainnB,GAAmBrkf,EAAM+5f,cAAcxppB,EAAWuppB,EAASD,EAASD,QAEhF,KAAIr8f,GAAWyC,GAIhB,MAAM,IAAIr6I,MAAM,+BAHhByX,EAAainnB,GAAmBrkf,EAAMzvJ,EAAWuppB,EAASD,EAASD,IAKvE,OAAOx8nB,EAAW9nC,KAAK,OAAAhC,EAAA,QAE3B,OAAO,OAAAiU,EAAA,GAAGyypB,GAA0B1kqB,KAAK04pB,MA1GEkM,CAAiBx6R,EAAMnvX,UAAWmvX,EAAMvmH,MAAO0gZ,EAASD,EAAWp3G,KAAkB,OAAAlvjB,EAAA,GAAM,SAAA46B,GAClI,OAAkB,IAAXA,IACR,IAXQisoB,CAAuBrG,EAAqBoE,EAAgB5pW,EAAiBk0P,GAC/EltjB,KAAK,OAAA0jI,EAAA,GAAS,SAAA+giB,GACf,OAAOA,GA53BK,kBA43BsBA,EAW9C,SAA8B1R,EAAgBliC,EAAQ3jE,EAAgB2pG,GAClE,OAAO,OAAAv2pB,EAAA,GAAKuwnB,GAAQ7wnB,KAAK,OAAAsjW,EAAA,GAAU,SAAC8mC,GAChC,OAAO,OAAAp1X,EAAA,GA2Bf,SAAkC+4oB,EAAU8I,GAIxC,OAHiB,OAAb9I,GAAqB8I,GACrBA,EAAa,IAAI,GAAqB9I,IAEnC,OAAA97oB,EAAA,IAAG,GA/BQ6ypB,CAAyB16R,EAAMvmH,MAAMjhP,OAAQi0nB,GAanE,SAA6B9I,EAAU8I,GAInC,OAHiB,OAAb9I,GAAqB8I,GACrBA,EAAa,IAAI,GAAgB9I,IAE9B,OAAA97oB,EAAA,IAAG,GAjBoE8ypB,CAAoB36R,EAAMvmH,MAAOgzY,GAuDnH,SAA6ByN,EAAWn3hB,EAAM+/a,GAC1C,IAAM83G,EAAY73hB,EAAKA,EAAKhtI,OAAS,GAK/B8kqB,EAJyB93hB,EAAK3nI,MAAM,EAAG2nI,EAAKhtI,OAAS,GACtD0F,UACAJ,IAAI,SAAA8/H,GAAC,OArNd,SAA6BA,GACzB,IAAM2/hB,EAAmB3/hB,EAAEyohB,YAAczohB,EAAEyohB,YAAYkX,iBAAmB,KAC1E,OAAKA,GAAgD,IAA5BA,EAAiB/kqB,OAEnC,CAAEu/I,KAAMna,EAAGw9hB,OAAQmC,GADf,KAkNGC,CAAoB5/hB,KAC7Bp0H,OAAO,SAAAi9F,GAAC,OAAU,OAANA,IAC2C3oG,IAAI,SAACuO,GAC7D,OAAO,OAAA6zP,EAAA,GAAM,WACT,IAAMu9Z,EAAepxpB,EAAE+upB,OAAOt9pB,IAAI,SAACmmC,GAC/B,IACI9D,EADE4iI,EAAQ9nC,GAASh3F,EAAG53B,EAAE0rI,KAAMwta,GAElC,GAh8BhB,SAA4BxiZ,GACxB,OAAOA,GAASzC,GAAWyC,EAAMw6f,kBA+7BjBG,CAAmB36f,GACnB5iI,EAAainnB,GAAmBrkf,EAAMw6f,iBAAiBF,EAAWV,QAEjE,KAAIr8f,GAAWyC,GAIhB,MAAM,IAAIr6I,MAAM,kCAHhByX,EAAainnB,GAAmBrkf,EAAMs6f,EAAWV,IAKrD,OAAOx8nB,EAAW9nC,KAAK,OAAAhC,EAAA,QAE3B,OAAO,OAAAiU,EAAA,GAAGmzpB,GAAcplqB,KAAK04pB,UAGrC,OAAO,OAAAzmpB,EAAA,GAAGgzpB,GAA8BjlqB,KAAK04pB,MAhFiF4M,CAAoBvS,EAAgB3oR,EAAMj9P,KAAM+/a,GAiClL,SAAwBo3G,EAAWU,EAAW93G,GAC1C,IAAM9lP,EAAc49V,EAAUhX,YAAcgX,EAAUhX,YAAY5mV,YAAc,KAChF,IAAKA,GAAsC,IAAvBA,EAAYjnU,OAC5B,OAAO,OAAA8R,EAAA,IAAG,GACd,IAAMszpB,EAAyBn+V,EAAY3hU,IAAI,SAACmmC,GAC5C,OAAO,OAAAi8N,EAAA,GAAM,WACT,IACI//N,EADE4iI,EAAQ9nC,GAASh3F,EAAGo5nB,EAAW93G,GAErC,GA16BZ,SAAuBxiZ,GACnB,OAAOA,GAASzC,GAAWyC,EAAM08J,aAy6BrBo+V,CAAc96f,GACd5iI,EAAainnB,GAAmBrkf,EAAM08J,YAAY49V,EAAWV,QAE5D,KAAIr8f,GAAWyC,GAIhB,MAAM,IAAIr6I,MAAM,6BAHhByX,EAAainnB,GAAmBrkf,EAAMs6f,EAAWV,IAKrD,OAAOx8nB,EAAW9nC,KAAK,OAAAhC,EAAA,UAG/B,OAAO,OAAAiU,EAAA,GAAGszpB,GAAwBvlqB,KAAK04pB,MArDwJ+M,CAAe1S,EAAgB3oR,EAAMvmH,MAAOqpS,MACvO,OAAAlvjB,EAAA,GAAM,SAAA46B,GACN,OAAkB,IAAXA,IACR,IAfS8soB,CAAqB9C,EAAgBnE,EAAmBvxG,EAAgB2pG,GACxE,OAAA5kpB,EAAA,GAAGwypB,KACP,OAAAh/pB,EAAA,GAAI,SAAAu9pB,GAAY,OAAKxqpB,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEwmqB,sBA+6BiF2C,CAAY,EAAK5qjB,SAAS5/F,SAAU,SAAC84U,GAAD,OAAS,EAAKx8P,aAAaw8P,KAAO,OAAAn1N,EAAA,GAAI,SAAAtiI,GAClN,GAAIg8pB,GAAUh8pB,EAAEwmqB,cAAe,CAC3B,IAAMhyoB,EAAQo9nB,GAAyB,mBAAD,OAAoB,EAAKqV,aAAajnqB,EAAEwmqB,cAAxC,MAEtC,MADAhyoB,EAAMmf,IAAM3zC,EAAEwmqB,aACRhyoB,EAEV,IAAM40oB,EAAY,IAAI,EAAeppqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAe,EAAKiB,aAAajnqB,EAAEqxpB,mBAAoBrxpB,EAAEomqB,iBAAkBpmqB,EAAEwmqB,cAC5I,EAAKvrkB,aAAamukB,KAClB,OAAAz0pB,EAAA,GAAO,SAAA3U,GACP,IAAKA,EAAEwmqB,aAAc,CACjB,EAAK6C,2BACL,IAAMC,EAAY,IAAI,EAAiBtpqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAe,IAGhF,OAFAY,EAAcvjqB,KAAKimqB,GACnBtpqB,EAAEgE,SAAQ,IACH,EAEX,OAAO,IAGX2/pB,GAAU,SAAA3jqB,GACN,GAAIA,EAAEumqB,OAAOtE,kBAAkBt+pB,OAC3B,OAAO,OAAA8R,EAAA,GAAGzV,GAAGwD,KAAK,OAAA8+H,EAAA,GAAI,SAAAtiI,GAClB,IAAMupqB,EAAe,IAAI,EAAavpqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAe,EAAKiB,aAAajnqB,EAAEqxpB,mBAAoBrxpB,EAAEomqB,gBACzH,EAAKnrkB,aAAasukB,KAClB,OAAA7miB,EAAA,GAAU,SAAA1iI,GACV,IArkBH42pB,EAA2BlmG,EAqkBpB84G,GAAe,EACnB,OAAO,OAAA/zpB,EAAA,GAAGzV,GAAGwD,MAtkBhBozpB,EAskBiC,EAAKA,0BAtkBXlmG,EAskBsC,EAAKnyc,SAAS5/F,SArkBzF,OAAAuoH,EAAA,GAAS,SAAAlnI,GACZ,IAAQomqB,EAAkDpmqB,EAAlDomqB,eAA0BnE,EAAwBjiqB,EAAlCumqB,OAAUtE,kBAClC,IAAKA,EAAkBt+pB,OACnB,OAAO,OAAA8R,EAAA,GAAGzV,GAEd,IAAIypqB,EAA4B,EAChC,OAAO,OAAA3lqB,EAAA,GAAKm+pB,GACPz+pB,KAAK,OAAAsjW,EAAA,GAAU,SAAA8mC,GAAK,OAGjC,SAAoB46R,EAAWV,EAAWlR,EAA2BlmG,GAEjE,OAOJ,SAAqB1sjB,EAASwkqB,EAAWV,EAAWp3G,GAChD,IAAMz0iB,EAAOD,OAAOC,KAAKjY,GACzB,GAAoB,IAAhBiY,EAAKtY,OACL,OAAO,OAAA8R,EAAA,GAAG,IAEd,IAAMnG,EAAO,GACb,OAAO,OAAAxL,EAAA,GAAKmY,GAAMzY,KAAK,OAAA0jI,EAAA,GAAS,SAAC/qH,GAAD,OAYpC,SAAqBwkpB,EAAgB6H,EAAWV,EAAWp3G,GACvD,IAAMplT,EAAWllI,GAASu6hB,EAAgB6H,EAAW93G,GACrD,OAA0B6hG,GAAnBjnZ,EAAStnQ,QAA6BsnQ,EAAStnQ,QAAQwkqB,EAAWV,GAClDx8Z,EAASk9Z,EAAWV,IAfF4B,CAAY1lqB,EAAQmY,GAAMqspB,EAAWV,EAAWp3G,GACpFltjB,KAAK,OAAA8+H,EAAA,GAAI,SAACvhI,GACXuO,EAAK6M,GAAOpb,OACV,OAAAm7K,EAAA,GAAS,GAAI,OAAAh1C,EAAA,GAAS,WAGxB,OAAIlrH,OAAOC,KAAK3M,GAAM3L,SAAWsY,EAAKtY,OAC3B,OAAA8R,EAAA,GAAGnG,GAEP,OAtBJq6pB,CADSnB,EAAUtziB,SACEsziB,EAAWV,EAAWp3G,GAC7CltjB,KAAK,OAAAyF,EAAA,GAAI,SAAC2gqB,GAGX,OAFApB,EAAUzR,cAAgB6S,EAC1BpB,EAAUl5pB,KAAO0M,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIiioB,EAAUl5pB,MAAOqnpB,GAA2B6R,EAAW5R,GAA2B5ypB,SAC5H,QATsB6lqB,CAAWj8R,EAAMvmH,MAAO++Y,EAAgBxP,EAA2BlmG,KAAkB,OAAApub,EAAA,GAAI,kBAAMmniB,MAA8B,OAAAvtf,EAAA,GAAS,GAAI,OAAAh1C,EAAA,GAAS,SAAAt1B,GAAC,OAAI63jB,IAA8BxH,EAAkBt+pB,OAAS,OAAA8R,EAAA,GAAGzV,GAAK,UA8jB/I,OAAAsiI,EAAA,GAAI,CACvFj/H,KAAM,kBAAMmmqB,GAAe,GAC3BlmqB,SAAU,WACN,IAAKkmqB,EAAc,CACf,IAAMF,EAAY,IAAI,EAAiBtpqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAA/C,sDAClBY,EAAcvjqB,KAAKimqB,GACnBtpqB,EAAEgE,SAAQ,UAItB,OAAAs+H,EAAA,GAAI,SAAAtiI,GACJ,IAAM8pqB,EAAa,IAAI,EAAW9pqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAe,EAAKiB,aAAajnqB,EAAEqxpB,mBAAoBrxpB,EAAEomqB,gBACrH,EAAKnrkB,aAAa6ukB,QAM9BnG,GAAU,SAAC3jqB,GACP,MAA2IA,EAA/CmmqB,OAC5F,OAAO,EAAK33kB,MAAM82kB,mBADyHtlqB,EAAnIomqB,eAC6C,CACjDpB,aAFuIhlqB,EAAnHwlB,GAGpBoipB,eAHuI5nqB,EAAjGgmqB,aAItCJ,WAJuI5lqB,EAAnEkmqB,OAKpEqB,qBALJ,EAAsGA,mBAMlGE,aANJ,EAA0HA,eAQ1H,OAAAx+pB,EAAA,GAAI,SAACjJ,GACL,IAx5E+Bu9U,EAAMzuD,EAC3ClwM,EAu5EY0nlB,GAv5EZ1nlB,EAAO4pd,GAu5E2C,EAAKivH,oBAx5ElBl6U,EAw5EsCv9U,EAAEomqB,gBAv5ElC5Q,OADA1mY,EAw5EkD9uR,EAAEqmqB,oBAv5EjCv3Y,EAAU0mY,WAAQvxpB,GAC/E,IAAI,GAAY26E,EAAM2+P,IAu5EjB,OAAQvhU,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAIvmC,GAAI,CAAEsmqB,wBAOlD,OAAAhkiB,EAAA,GAAI,SAACtiI,GACD,EAAK2lqB,eAAiB3lqB,EAAEqxpB,kBACxB,EAAKuU,WACD,EAAKL,oBAAoB1opB,MAAM,EAAK8opB,eAAgB3lqB,EAAEkmqB,QAC1D,EAAKJ,YAAc9lqB,EAAEsmqB,kBACU,aAA3B,EAAKb,oBACAzlqB,EAAEmmqB,OAAOoB,oBACV,EAAKC,cAAc,EAAK5B,aAAc5lqB,EAAEmmqB,OAAOsB,WAAYznqB,EAAEwlB,GAAIxlB,EAAEmmqB,OAAOt+pB,OAE9E,EAAKg+pB,eAAiB7lqB,EAAEqxpB,sBAxkEpBsT,EA0kEO,EAAKA,aA1kEElN,EA0kEY,EAAKA,mBA1kEG4C,EA0kEiB,SAAC5iU,GAAD,OAAS,EAAKx8P,aAAaw8P,IA1kE3B,OAAAxuV,EAAA,GAAI,SAAAjJ,GAG3E,OAFA,IAAI,GAAey3pB,EAAoBz3pB,EAAEsmqB,kBAAmBtmqB,EAAEqmqB,mBAAoBhM,GAC7Elue,SAASw4e,GACP3kqB,KAukEkG,OAAAsiI,EAAA,GAAI,CACjGj/H,KADiG,WAE7F6mX,GAAY,GAEhB5mX,SAJiG,WAK7F4mX,GAAY,KAEhB,OAAAkL,EAAA,GAAS,WAQT,IAAKlL,IAAcn+O,EAAS,CAQxB,EAAKs9hB,2BACL,IAAMC,EAAY,IAAI,EAAiBtpqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAA/C,wBAA+EhmqB,EAAEwlB,GAAjF,sDAAiI,EAAKw/oB,eACxJ4B,EAAcvjqB,KAAKimqB,GACnBtpqB,EAAEgE,SAAQ,GAKd,EAAK6gqB,kBAAoB,OACzB,OAAA59hB,EAAA,GAAW,SAACxzG,GAIZ,GAHAs4G,GAAU,GA1lHUv3G,EA6lHWf,IA5lH3Be,EAAK,2BA4lH0B,CAC/B,IAAMu1oB,EAAc/N,GAAUvooB,EAAEkgB,KAC3Bo2nB,IAMD,EAAK5E,WAAY,EACjB,EAAK6E,iBAAiBhqqB,EAAEqmqB,mBAAoBrmqB,EAAE2lqB,eAAgB3lqB,EAAEkmqB,SAEpE,IAAMoD,EAAY,IAAI,EAAiBtpqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAevyoB,EAAE+F,SAClFotoB,EAAcvjqB,KAAKimqB,GAGdS,EAQD3loB,WAAW,WACP,IAAM6loB,EAAa,EAAK1E,oBAAoB1opB,MAAM4W,EAAEkgB,IAAK,EAAKiynB,YAK9D,EAAKsE,mBAAmBD,EAAY,aAAc,KAJnC,CACX1C,mBAAoBvnqB,EAAEmmqB,OAAOoB,mBAC7BE,WAAuC,UAA3B,EAAKhC,mBAE2C,CAAEzhqB,QAAShE,EAAEgE,QAASixH,OAAQj1H,EAAEi1H,OAAQvhG,QAAS1zB,EAAE0zB,WACpH,GAdH1zB,EAAEgE,SAAQ,OAmBb,CACD,EAAKgmqB,iBAAiBhqqB,EAAEqmqB,mBAAoBrmqB,EAAE2lqB,eAAgB3lqB,EAAEkmqB,QAChE,IAAMiE,EAAW,IAAI,EAAgBnqqB,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAevyoB,GAC9EmzoB,EAAcvjqB,KAAK8mqB,GACnB,IACInqqB,EAAEgE,QAAQ,EAAKgnK,aAAav3I,IAEhC,MAAOiiM,GACH11N,EAAEi1H,OAAOygG,IAxoHjC,IAAoClhM,EA2oHpB,OAAO,Y,oCASnB,SAAuBiuoB,GACnBjjqB,KAAKijqB,kBAAoBA,EAGzBjjqB,KAAKsmqB,YAAYlnlB,KAAKngE,UAAYjf,KAAKijqB,oB,2BAE3C,WACI,IAAM39c,EAAatlN,KAAK2hT,YAAYpgT,MAKpC,OADA+jN,EAAWusc,kBAAoB7xpB,KAAKqmqB,eAC7B/gd,I,2BAEX,SAAc9kN,GACVR,KAAK2hT,YAAY99S,KAAK2Y,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAK4qqB,iBAAkBpqqB,M,+BAKjF,WACIR,KAAK6qqB,8BACqB,IAAtB7qqB,KAAKwlqB,cACLxlqB,KAAKw6B,cAAcx6B,KAAKs6B,SAAS62G,MAAK,GAAO,CAAE82hB,YAAY,M,yCAQnE,WAA2B,WAIlBjoqB,KAAK8qqB,uBACN9qqB,KAAK8qqB,qBAAuB9qqB,KAAKs6B,SAASp2B,UAAU,SAAAokB,GAChD,IAAMyipB,EAAgB,EAAKC,mCAAmC1ipB,GAC1D,EAAK2ipB,yBAAyB,EAAK1F,uBAAwBwF,IAG3DnmoB,WAAW,WACP,IAAQre,EAA2BwkpB,EAA3BxkpB,OAAQle,EAAmB0iqB,EAAnB1iqB,MAAOmupB,EAAYuU,EAAZvU,QACjBmQ,EAAS,CAAEsB,YAAY,GAC7B,GAAI5/pB,EAAO,CACP,IAAM6iqB,EAAY1upB,OAAOuqB,OAAO,GAAI1+B,UAC7B6iqB,EAAU1F,aACqB,IAAlChppB,OAAOC,KAAKyupB,GAAW/mqB,SACvBwiqB,EAAOt+pB,MAAQ6iqB,GAGvB,EAAKR,mBAAmBlU,EAASjwoB,EAAQle,EAAOs+pB,IACjD,GAEP,EAAKpB,uBAAyBwF,O,gDAK1C,SAAmCh7pB,GAC/B,IAAIpF,EACJ,MAAO,CACH4b,OAA2B,aAAnBxW,EAAM,KAA0B,WAAa,aACrDympB,QAASx2pB,KAAKmrqB,SAASp7pB,EAAM,KAG7B1H,OAAgC,QAAvBsC,EAAKoF,EAAO1H,aAA0B,IAAPsC,OAAgB,EAASA,EAAG66pB,cAAgBz1pB,EAAO1H,MAAQ,KACnGu4mB,aAAc5gnB,KAAK4qqB,gBAAgB5kpB,M,sCAS3C,SAAyBmuM,EAAU/3I,GAC/B,IAAK+3I,EACD,OAAO,EACX,IAAMi3c,EAAkBhvlB,EAAQo6kB,QAAQvkoB,aAAekiM,EAASqic,QAAQvkoB,WAExE,QADiCmqD,EAAQwkiB,eAAiBzsZ,EAASysZ,cACjCwqD,IAGV,eAAnBhvlB,EAAQ71D,QAA+C,aAApB4tM,EAAS5tM,QACzB,aAAnB61D,EAAQ71D,QAA6C,eAApB4tM,EAAS5tM,W,eAMnD,WACI,OAAOvmB,KAAKynqB,aAAaznqB,KAAKmmqB,kB,kCAMlC,WACI,OAAOnmqB,KAAKqlqB,oB,0BAGhB,SAAa/8oB,GACTtoB,KAAK6yD,OAAOhvD,KAAKykB,K,yBAkBrB,SAAY8P,GACR0koB,GAAe1koB,GACfp4B,KAAKo4B,OAASA,EAAO3uB,IAAI2zpB,IACzBp9pB,KAAK2lqB,WAAY,EACjB3lqB,KAAK4lqB,kBAAoB,I,yBAG7B,WACI5lqB,KAAKyuB,Y,qBAGT,WACIzuB,KAAK2hT,YAAY79S,WACb9D,KAAK8qqB,uBACL9qqB,KAAK8qqB,qBAAqBl1pB,cAC1B5V,KAAK8qqB,0BAAuBrmqB,GAEhCzE,KAAKslqB,UAAW,I,2BAkDpB,SAAc/M,GAA+B,IAArB8S,EAAqB,uDAAF,GAC/BC,EAA6ED,EAA7EC,WAAYljW,EAAiEijW,EAAjEjjW,YAAaurV,EAAoD0X,EAApD1X,SAAU4X,EAA0CF,EAA1CE,oBAAqBC,EAAqBH,EAArBG,iBAC1DzvpB,EAAIuvpB,GAActrqB,KAAKsmqB,YAAYlnlB,KACnCnmD,EAAIuyoB,EAAmBxrqB,KAAKmmqB,eAAexS,SAAWA,EACxDzvc,EAAI,KACR,OAAQqnd,GACJ,IAAK,QACDrnd,EAAI1nM,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI/mC,KAAKmmqB,eAAe/9V,aAAcA,GACtE,MACJ,IAAK,WACDlkH,EAAIlkN,KAAKmmqB,eAAe/9V,YACxB,MACJ,QACIlkH,EAAIkkH,GAAe,KAK3B,OAHU,OAANlkH,IACAA,EAAIlkN,KAAKyrqB,iBAAiBvnd,IAEvB,GAAcnoM,EAAG/b,KAAKmmqB,eAAgB5N,EAAUr0c,EAAGjrL,K,2BA0B9D,SAAckb,GAEb,IAFkBwynB,EAElB,uDAF2B,CACxBoB,oBAAoB,GAMdvR,EAAUgG,GAAUronB,GAAOA,EAAMn0C,KAAKmrqB,SAASh3nB,GAC/Cs2nB,EAAazqqB,KAAK+lqB,oBAAoB1opB,MAAMm5oB,EAASx2pB,KAAKomqB,YAChE,OAAOpmqB,KAAK0qqB,mBAAmBD,EAAY,aAAc,KAAM9D,K,sBAgCnE,SAASpO,GAAgD,IAAtCoO,EAAsC,uDAA7B,CAAEoB,oBAAoB,GAE9C,OADA2D,GAAiBnT,GACVv4pB,KAAKw6B,cAAcx6B,KAAKo/pB,cAAc7G,EAAUoO,GAASA,K,0BAGpE,SAAaxynB,GACT,OAAOn0C,KAAK++pB,cAAc9wU,UAAU95S,K,sBAGxC,SAASA,GACL,IAAIqinB,EACJ,IACIA,EAAUx2pB,KAAK++pB,cAAc5koB,MAAMga,GAEvC,MAAOlgB,GACHuioB,EAAUx2pB,KAAK0lqB,yBAAyBzxoB,EAAGj0B,KAAK++pB,cAAe5qnB,GAEnE,OAAOqinB,I,sBAGX,SAASrinB,EAAK++mB,GACV,GAAIsJ,GAAUronB,GACV,OAAO6+mB,GAAahzpB,KAAKmmqB,eAAgBhynB,EAAK++mB,GAElD,IAAMsD,EAAUx2pB,KAAKmrqB,SAASh3nB,GAC9B,OAAO6+mB,GAAahzpB,KAAKmmqB,eAAgB3P,EAAStD,K,8BAEtD,SAAiBppkB,GACb,OAAOttE,OAAOC,KAAKqtE,GAAQr0E,OAAO,SAACmnB,EAAQjgB,GACvC,IAAMpb,EAAQuoF,EAAOntE,GAIrB,OAHIpb,UACAq7B,EAAOjgB,GAAOpb,GAEXq7B,GACR,M,gCAEP,WAAkB,WACd58B,KAAKinqB,YAAY/iqB,UAAU,SAAA1D,GACvB,EAAKmlqB,WAAY,EACjB,EAAKC,iBAAmBplqB,EAAEwlB,GAC1B,EAAK6sC,OACAhvD,KAAK,IAAI,EAAcrD,EAAEwlB,GAAI,EAAKyhpB,aAAajnqB,EAAEgmqB,cAAe,EAAKiB,aAAa,EAAKtB,kBAC5F,EAAKf,yBAA2B,EAAKC,kBACrC7kqB,EAAEgE,SAAQ,IACX,SAAAyvB,GACC,EAAK8W,QAAQ24B,KAAb,oC,gCAGR,SAAmBgjmB,EAAQngpB,EAAQqroB,EAAe+U,EAAQgF,GACtD,GAAI3rqB,KAAKslqB,SACL,OAAO/gqB,QAAQC,SAAQ,GAW3B,IAcIA,EACAixH,EACAvhG,EAhBE03oB,EAAiB5rqB,KAAK4qqB,gBAGtBiB,EAA2C,eAAXtlpB,GAAuH,gBAA3FqlpB,aAAuD,EAASA,EAAerlpB,QAO3IulpB,GAN0B9rqB,KAAK4lqB,mBAAqBgG,EAAe5lpB,IAGnBhmB,KAAKqlqB,kBACvDuG,EAAelF,OACfkF,EAAe/Z,mBACoB5/nB,aAAey0oB,EAAOz0oB,WAC7D,GAAI45oB,GAAiCC,EACjC,OAAOvnqB,QAAQC,SAAQ,GAKvBmnqB,GACAnnqB,EAAUmnqB,EAAannqB,QACvBixH,EAASk2iB,EAAal2iB,OACtBvhG,EAAUy3oB,EAAaz3oB,SAGvBA,EAAU,IAAI3vB,QAAQ,SAAC+zB,EAAKilkB,GACxB/4lB,EAAU8zB,EACVm9F,EAAS8ne,IAGjB,IAAMv3kB,IAAOhmB,KAAKwlqB,aAiBlB,OAhBAxlqB,KAAK+rqB,cAAc,CACf/lpB,KACAO,SACAqroB,gBACAuU,eAAgBnmqB,KAAKmmqB,eACrBI,cAAevmqB,KAAKomqB,WACpBM,SACAC,SACAniqB,UACAixH,SACAvhG,UACA8oS,gBAAiBh9T,KAAKsmqB,YAAYvU,SAClC8U,mBAAoB7mqB,KAAKsmqB,cAItBpyoB,EAAQwpkB,MAAM,SAACzpkB,GAClB,OAAO1vB,QAAQkxH,OAAOxhG,O,2BAG9B,SAAckgB,EAAK8znB,EAAYjipB,EAAI3d,GAC/B,IAAM8oI,EAAOnxI,KAAK++pB,cAAc9wU,UAAU95S,GAC1C9rC,EAAQA,GAAS,GACbrI,KAAKs6B,SAAS0xoB,qBAAqB76hB,IAAS82hB,EAE5CjoqB,KAAKs6B,SAASmjmB,aAAatsf,EAAM,GAAI30H,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI1+B,GAAQ,CAAEm9pB,aAAcx/oB,KAG7FhmB,KAAKs6B,SAAS2xoB,GAAG96hB,EAAM,GAAI30H,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,GAAI1+B,GAAQ,CAAEm9pB,aAAcx/oB,O,8BAG3F,SAAiBkmpB,EAAaC,EAAWzF,GACrC1mqB,KAAKsmqB,YAAc4F,EACnBlsqB,KAAKmmqB,eAAiBgG,EACtBnsqB,KAAKomqB,WAAapmqB,KAAK+lqB,oBAAoB1opB,MAAMrd,KAAKmmqB,eAAgBO,GACtE1mqB,KAAK6pqB,6B,sCAET,WACI7pqB,KAAKs6B,SAASmjmB,aAAaz9nB,KAAK++pB,cAAc9wU,UAAUjuV,KAAKomqB,YAAa,GAAI,CAAEZ,aAAcxlqB,KAAK4lqB,uB,UAG3GV,EAAO3kqB,UAAO,SAAwBC,GAAK,OAAO,IAAKA,GAAK0kqB,GAAQ,KAAgB,KAAc,KAAgB,IAAgB,KAAgB,IAAyB,KAAgB,KAAkB,KAAgB,KAAkB,KAAgB,KAA+B,KAAgB,KAAkB,UAAgBzgqB,KAChVygqB,EAAOtgqB,WAAQ,KAA0B,CAAEC,MAAOqgqB,EAAQpgqB,QAASogqB,EAAO3kqB,Y,KAc1E,SAASmrqB,GAAiBnT,GACtB,IAAK,IAAI1wpB,EAAI,EAAGA,EAAI0wpB,EAASp0pB,OAAQ0D,IAAK,CACtC,IAAM6wpB,EAAMH,EAAS1wpB,GACrB,GAAW,MAAP6wpB,EACA,MAAM,IAAIrkoB,MAAJ,sCAAyCqkoB,EAAzC,6BAAiE7wpB,K,sBA6G7EukqB,E,8BACF,WAAY70oB,EAAQswP,EAAO1xO,EAAUo9E,EAAU9gF,GAAE,oBAC7CzyC,KAAKu3B,OAASA,EACdv3B,KAAK6nR,MAAQA,EACb7nR,KAAKu4pB,SAAW,GAEhBv4pB,KAAKqsqB,UAAY,IAAI5oqB,EAAA,EACL,MAAZ0yC,GACAo9E,EAAS1kH,aAAa4jC,EAAG7vC,cAAe,WAAY,M,0BAI5D,SAAYqC,GAGRjF,KAAKqsqB,UAAUxoqB,KAAK7D,Q,sBASxB,SAAeu4pB,GAEPv4pB,KAAKu4pB,SADO,MAAZA,EACgBhupB,MAAMyL,QAAQuipB,GAAYA,EAAW,CAACA,GAGtC,K,qBAIxB,WACI,IAAMoO,EAAS,CACXoB,mBAAoBuE,GAActsqB,KAAK+nqB,oBACvCE,WAAYqE,GAActsqB,KAAKioqB,YAC/B5/pB,MAAOrI,KAAKqI,OAGhB,OADArI,KAAKu3B,OAAOiD,cAAcx6B,KAAKw2pB,QAASmQ,IACjC,I,mBAEX,WACI,OAAO3mqB,KAAKu3B,OAAO6noB,cAAcp/pB,KAAKu4pB,SAAU,CAG5C+S,gBAAgC7mqB,IAApBzE,KAAKsrqB,WAA2BtrqB,KAAKsrqB,WAAatrqB,KAAK6nR,MACnEugD,YAAapoU,KAAKooU,YAClBurV,SAAU3zpB,KAAK2zpB,SACf4X,oBAAqBvrqB,KAAKurqB,oBAC1BC,iBAAkBc,GAActsqB,KAAKwrqB,wB,UAIjDY,EAAW7rqB,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAK4rqB,GAAY,KAAyB,IAAS,KAAyB,IAAiB,KAAyB,YAAa,KAAyB,KAAmB,KAAyB,OACvQA,EAAW3rqB,UAAO,KAAyB,CAAEC,KAAM0rqB,EAAYzrqB,UAAW,CAAC,CAAC,GAAI,aAAc,GAAI,EAAG,IAAK,EAAG,SAAU6X,aAAc,SAAiC7W,EAAIC,GAAgB,EAALD,GAC7K,KAAkB,QAAS,WAAiD,OAAOC,EAAIq0C,aACtF9zC,OAAQ,CAAEoqqB,WAAY,aAAcnkW,YAAa,cAAeurV,SAAU,WAAY4X,oBAAqB,sBAAuBC,iBAAkB,mBAAoBzD,mBAAoB,qBAAsBE,WAAY,aAAc5/pB,MAAO,QAASijqB,WAAY,cAAgBhpqB,SAAU,CAAC,Q,uBA6DtSkqqB,E,8BACF,WAAYj1oB,EAAQswP,EAAO4kZ,GAAgB,+BACvCzsqB,KAAKu3B,OAASA,EACdv3B,KAAK6nR,MAAQA,EACb7nR,KAAKysqB,iBAAmBA,EACxBzsqB,KAAKu4pB,SAAW,GAEhBv4pB,KAAKqsqB,UAAY,IAAI5oqB,EAAA,EACrBzD,KAAKg0G,aAAez8E,EAAOs7B,OAAO3uD,UAAU,SAAC0gB,GACrCA,aAAa,GACb,EAAK8npB,4B,uBAWjB,SAAenU,GAEPv4pB,KAAKu4pB,SADO,MAAZA,EACgBhupB,MAAMyL,QAAQuipB,GAAYA,EAAW,CAACA,GAGtC,K,yBAIxB,SAAYtzpB,GACRjF,KAAK0sqB,yBACL1sqB,KAAKqsqB,UAAUxoqB,KAAK7D,Q,yBAGxB,WACIA,KAAKg0G,aAAap+F,gB,qBAGtB,SAAQ2pE,EAAQ4nH,EAAS1/E,EAAUmwE,EAAQwP,GACvC,GAAe,IAAX7nH,GAAgB4nH,GAAW1/E,GAAYmwE,GAAUwP,EACjD,OAAO,EAEX,GAA2B,iBAAhBpnM,KAAKwsB,QAAsC,SAAfxsB,KAAKwsB,OACxC,OAAO,EAEX,IAAMm6oB,EAAS,CACXoB,mBAAoBuE,GAActsqB,KAAK+nqB,oBACvCE,WAAYqE,GAActsqB,KAAKioqB,YAC/B5/pB,MAAOrI,KAAKqI,OAGhB,OADArI,KAAKu3B,OAAOiD,cAAcx6B,KAAKw2pB,QAASmQ,IACjC,I,oCAEX,WACI3mqB,KAAKo+D,KAAOp+D,KAAKysqB,iBAAiB5tC,mBAAmB7+nB,KAAKu3B,OAAOkwoB,aAAaznqB,KAAKw2pB,Y,mBAEvF,WACI,OAAOx2pB,KAAKu3B,OAAO6noB,cAAcp/pB,KAAKu4pB,SAAU,CAG5C+S,gBAAgC7mqB,IAApBzE,KAAKsrqB,WAA2BtrqB,KAAKsrqB,WAAatrqB,KAAK6nR,MACnEugD,YAAapoU,KAAKooU,YAClBurV,SAAU3zpB,KAAK2zpB,SACf4X,oBAAqBvrqB,KAAKurqB,oBAC1BC,iBAAkBc,GAActsqB,KAAKwrqB,wB,UAIjDgB,EAAmBjsqB,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKgsqB,GAAoB,KAAyB,IAAS,KAAyB,IAAiB,KAAyB,OAC7MA,EAAmB/rqB,UAAO,KAAyB,CAAEC,KAAM8rqB,EAAoB7rqB,UAAW,CAAC,CAAC,IAAK,aAAc,IAAK,CAAC,OAAQ,aAAc,KAAM4X,SAAU,EAAGC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,GAC5N,KAAkB,QAAS,SAAqDmwB,GAAU,OAAOlwB,EAAIq0C,QAAQnkB,EAAOytD,OAAQztD,EAAOq1K,QAASr1K,EAAO21F,SAAU31F,EAAO8lK,OAAQ9lK,EAAOs1K,WAC5K,EAALzlM,IACF,KAAsB,OAAQC,EAAIw8D,KAAM,MACxC,KAAmB,SAAUx8D,EAAI4qB,UAChCrqB,OAAQ,CAAEoqqB,WAAY,aAAc//oB,OAAQ,SAAU47S,YAAa,cAAeurV,SAAU,WAAY4X,oBAAqB,sBAAuBC,iBAAkB,mBAAoBzD,mBAAoB,qBAAsBE,WAAY,aAAc5/pB,MAAO,QAASijqB,WAAY,cAAgBhpqB,SAAU,CAAC,Q,KAwD9T,SAASgqqB,GAAc1npB,GACnB,MAAa,KAANA,KAAcA,E,sBAuPnB+npB,E,8BACF,WAAY7R,EAAgBxgoB,EAAUwxO,EAAU3qQ,EAAMgyS,GAAc,oBAChEnzS,KAAK86pB,eAAiBA,EACtB96pB,KAAKs6B,SAAWA,EAChBt6B,KAAK8rQ,SAAWA,EAChB9rQ,KAAKmzS,eAAiBA,EACtBnzS,KAAKy2pB,UAAY,KACjBz2pB,KAAK4sqB,gBAAkB,KACvB5sqB,KAAK6sqB,eAAiB,IAAI,IAC1B7sqB,KAAK8sqB,iBAAmB,IAAI,IAC5B9sqB,KAAKmB,KAAOA,GAAQ+wpB,GACpB4I,EAAeiS,qBAAqB/sqB,KAAKmB,KAAMnB,O,0BAGnD,WACIA,KAAK86pB,eAAekS,uBAAuBhtqB,KAAKmB,Q,sBAGpD,WACI,IAAKnB,KAAKy2pB,UAAW,CAGjB,IAAMjlpB,EAAUxR,KAAK86pB,eAAez2gB,WAAWrkJ,KAAKmB,MAChDqQ,GAAWA,EAAQq2Q,QACfr2Q,EAAQsqpB,UAER97pB,KAAK8e,OAAOtN,EAAQsqpB,UAAWtqpB,EAAQq2Q,OAIvC7nR,KAAKu8pB,aAAa/qpB,EAAQq2Q,MAAOr2Q,EAAQs6P,UAAY,U,uBAKrE,WACI,QAAS9rQ,KAAKy2pB,Y,qBAElB,WACI,IAAKz2pB,KAAKy2pB,UACN,MAAM,IAAIpioB,MAAM,2BACpB,OAAOr0B,KAAKy2pB,UAAU3ioB,W,0BAE1B,WACI,IAAK9zB,KAAKy2pB,UACN,MAAM,IAAIpioB,MAAM,2BACpB,OAAOr0B,KAAK4sqB,kB,8BAEhB,WACI,OAAI5sqB,KAAK4sqB,gBACE5sqB,KAAK4sqB,gBAAgB7a,SAASjipB,KAElC,K,oBAKX,WACI,IAAK9P,KAAKy2pB,UACN,MAAM,IAAIpioB,MAAM,2BACpBr0B,KAAKs6B,SAASvb,SACd,IAAMq9C,EAAMp8D,KAAKy2pB,UAGjB,OAFAz2pB,KAAKy2pB,UAAY,KACjBz2pB,KAAK4sqB,gBAAkB,KAChBxwmB,I,oBAKX,SAAOn6C,EAAKgrpB,GACRjtqB,KAAKy2pB,UAAYx0oB,EACjBjiB,KAAK4sqB,gBAAkBK,EACvBjtqB,KAAKs6B,SAAS4E,OAAOjd,EAAIb,Y,wBAE7B,WACI,GAAIphB,KAAKy2pB,UAAW,CAChB,IAAM7mnB,EAAI5vC,KAAKif,UACfjf,KAAKy2pB,UAAUv1oB,UACflhB,KAAKy2pB,UAAY,KACjBz2pB,KAAK4sqB,gBAAkB,KACvB5sqB,KAAK8sqB,iBAAiB5qpB,KAAK0tB,M,0BAGnC,SAAaq9nB,EAAgBnha,GACzB,GAAI9rQ,KAAK+iqB,YACL,MAAM,IAAI1uoB,MAAM,+CAEpBr0B,KAAK4sqB,gBAAkBK,EAIvB,IAAMnoqB,GADNgnQ,EAAWA,GAAY9rQ,KAAK8rQ,UACH/qP,wBAHRkspB,EAAejW,gBACLhF,YAAY/yoB,WAGjCiupB,EAAgBltqB,KAAK86pB,eAAekB,mBAAmBh8pB,KAAKmB,MAAM2G,SAClEqX,EAAW,IAAI,GAAe8tpB,EAAgBC,EAAeltqB,KAAKs6B,SAASnb,UACjFnf,KAAKy2pB,UAAYz2pB,KAAKs6B,SAAStZ,gBAAgBlc,EAAS9E,KAAKs6B,SAASn2B,OAAQgb,GAG9Enf,KAAKmzS,eAAen8R,eACpBhX,KAAK6sqB,eAAe3qpB,KAAKliB,KAAKy2pB,UAAU3ioB,c,UAGhD64oB,EAAapsqB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKmsqB,GAAc,KAAyB,IAAyB,KAAyB,KAA0B,KAAyB,KAAkC,KAAyB,QAAS,KAAyB,OACjTA,EAAalsqB,UAAO,KAAyB,CAAEC,KAAMisqB,EAAchsqB,UAAW,CAAC,CAAC,kBAAmBwhB,QAAS,CAAE0qpB,eAAgB,WAAYC,iBAAkB,cAAgBp0pB,SAAU,CAAC,Y,KAyBjL,G,8BACF,WAAYmvQ,EAAOqlZ,EAAetmoB,GAAM,oBACpC5mC,KAAK6nR,MAAQA,EACb7nR,KAAKktqB,cAAgBA,EACrBltqB,KAAK4mC,OAASA,G,kBAElB,SAAI/hC,EAAOk9iB,GACP,OAAIl9iB,IAAU,GACH7E,KAAK6nR,MAEZhjR,IAAU,GACH7E,KAAKktqB,cAETltqB,KAAK4mC,OAAO10B,IAAIrN,EAAOk9iB,O,GAkBhC,G,+CAaA,G,sFACF,SAAQl6R,EAAO74Q,GACX,OAAOA,IAAKhL,KAAK,OAAAyjI,EAAA,GAAW,kBAAM,OAAAxxH,EAAA,GAAG,a,GAYvC,G,sFACF,SAAQ4xQ,EAAO74Q,GACX,OAAO,OAAAiH,EAAA,GAAG,U,qBAeZk3pB,E,8BACF,WAAY51oB,EAAQ61oB,EAAc9mB,EAAUnnoB,EAAUkupB,GAAkB,oBACpErtqB,KAAKu3B,OAASA,EACdv3B,KAAKmf,SAAWA,EAChBnf,KAAKqtqB,mBAAqBA,EAG1BrtqB,KAAK8mlB,OAAS,IAAI,GAAmBsmF,EAAc9mB,EAF/B,SAACx8gB,GAAD,OAAOvyG,EAAOkkE,aAAa,IAAI,GAAqBquC,KACtD,SAACA,GAAD,OAAOvyG,EAAOkkE,aAAa,IAAI,GAAmBquC,O,8BAGxE,WAAe,WACX9pI,KAAKg0G,aACDh0G,KAAKu3B,OAAOs7B,OACP7uD,KAAK,OAAAmR,EAAA,GAAO,SAAC8e,GAAD,OAAOA,aAAa,IAAgB,OAAAqzU,EAAA,GAAU,kBAAM,EAAKgmU,aACrEppqB,UAAU,gB,qBAEvB,WACI,IAAM66G,EAAW/+G,KAAKmf,SAASjN,IAAI,KACnC,OAAOlS,KAAKutqB,cAAcxujB,EAAU/+G,KAAKu3B,OAAOa,U,yBAGpD,WACQp4B,KAAKg0G,cACLh0G,KAAKg0G,aAAap+F,gB,2BAG1B,SAAcmpG,EAAUyyN,GACpB,IAD0B,EACpBl5S,EAAM,GADc,cAENk5S,GAFM,IAE1B,2BAA4B,KAAjB3pD,EAAiB,QAExB,GAAIA,EAAMw1Y,eAAiBx1Y,EAAMo5Y,SAAWp5Y,EAAMu0Y,cAAe,CAC7D,IAAMuE,EAAc94Y,EAAMu0Y,cAC1B9joB,EAAI10B,KAAK5D,KAAKutqB,cAAc5M,EAAYvjoB,OAAQujoB,EAAYnvV,cAGvD3pD,EAAMw1Y,eAAiBx1Y,EAAMo5Y,QAClC3ooB,EAAI10B,KAAK5D,KAAKwtqB,cAAczujB,EAAU8oK,IAGjCA,EAAM//Q,UACXwwB,EAAI10B,KAAK5D,KAAKutqB,cAAcxujB,EAAU8oK,EAAM//Q,YAd1B,8BAiB1B,OAAO,OAAAxD,EAAA,GAAKg0B,GAAKt0B,KAAK,OAAA0oM,EAAA,KAAY,OAAAjjM,EAAA,GAAI,SAAC2oG,S,2BAE3C,SAAc2M,EAAU8oK,GAAK,WACzB,OAAO7nR,KAAKqtqB,mBAAmBC,QAAQzlZ,EAAO,WAG1C,OAFgBA,EAAMu0Y,cAAgB,OAAAnmpB,EAAA,GAAG4xQ,EAAMu0Y,eAC3C,EAAKt1E,OAAOv9M,KAAKxqR,EAAS5/F,SAAU0oQ,IACzB7jR,KAAK,OAAA0jI,EAAA,GAAS,SAACtvG,GAE1B,OADAyvP,EAAMu0Y,cAAgBhkoB,EACf,EAAKm1oB,cAAcn1oB,EAAOgF,OAAQhF,EAAOo5S,iB,UAKhE27V,EAAgB5sqB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK2sqB,GAAiB,KAAgB,IAAS,KAAgB,KAA+B,KAAgB,KAAkB,KAAgB,KAAkB,KAAgB,MAC3PA,EAAgBvoqB,WAAQ,KAA0B,CAAEC,MAAOsoqB,EAAiBroqB,QAASqoqB,EAAgB5sqB,Y,uBAmB/FktqB,E,8BACF,WAAYl2oB,EACYm2oB,GAA8B,IAAZ1lpB,EAAY,uDAAF,GAAE,oBAClDhoB,KAAKu3B,OAASA,EACdv3B,KAAK0tqB,iBAAmBA,EACxB1tqB,KAAKgoB,QAAUA,EACfhoB,KAAK2tqB,OAAS,EACd3tqB,KAAK4tqB,WAAa,aAClB5tqB,KAAK6tqB,WAAa,EAClB7tqB,KAAKs3B,MAAQ,GAEbtP,EAAQ8lpB,0BAA4B9lpB,EAAQ8lpB,2BAA6B,WACzE9lpB,EAAQ+lpB,gBAAkB/lpB,EAAQ+lpB,iBAAmB,Y,mBAEzD,WAImD,aAA3C/tqB,KAAKgoB,QAAQ8lpB,2BACb9tqB,KAAK0tqB,iBAAiBM,4BAA4B,UAEtDhuqB,KAAKiuqB,yBAA2BjuqB,KAAKkuqB,qBACrCluqB,KAAKmuqB,yBAA2BnuqB,KAAKouqB,wB,gCAEzC,WAAkB,WACd,OAAOpuqB,KAAKu3B,OAAOs7B,OAAO3uD,UAAU,SAAA+vB,GAC5BA,aAAa,GAEb,EAAKqD,MAAM,EAAKq2oB,QAAU,EAAKD,iBAAiBW,oBAChD,EAAKT,WAAa35oB,EAAE09nB,kBACpB,EAAKkc,WAAa55oB,EAAE29nB,cAAgB39nB,EAAE29nB,cAAc4T,aAAe,GAE9DvxoB,aAAa,IAClB,EAAK05oB,OAAS15oB,EAAEjO,GAChB,EAAKsopB,oBAAoBr6oB,EAAG,EAAKsD,OAAO4zoB,SAASl3oB,EAAE49nB,mBAAmB8B,e,iCAIlF,WAAmB,WACf,OAAO3zpB,KAAKu3B,OAAOs7B,OAAO3uD,UAAU,SAAA+vB,GAC1BA,aAAa,KAGfA,EAAEjqB,SAC6C,QAA3C,EAAKge,QAAQ8lpB,0BACb,EAAKJ,iBAAiBa,iBAAiB,CAAC,EAAG,IAEK,YAA3C,EAAKvmpB,QAAQ8lpB,2BAClB,EAAKJ,iBAAiBa,iBAAiBt6oB,EAAEjqB,UAKzCiqB,EAAE42H,QAA2C,YAAjC,EAAK7iI,QAAQ+lpB,gBACzB,EAAKL,iBAAiBc,eAAev6oB,EAAE42H,QAES,aAA3C,EAAK7iI,QAAQ8lpB,2BAClB,EAAKJ,iBAAiBa,iBAAiB,CAAC,EAAG,S,iCAK3D,SAAoBtc,EAAapngB,GAC7B7qJ,KAAKu3B,OAAOkkE,aAAa,IAAI,GAAOw2jB,EAAiC,aAApBjypB,KAAK4tqB,WAA4B5tqB,KAAKs3B,MAAMt3B,KAAK6tqB,YAAc,KAAMhjhB,M,yBAG1H,WACQ7qJ,KAAKiuqB,0BACLjuqB,KAAKiuqB,yBAAyBr4pB,cAE9B5V,KAAKmuqB,0BACLnuqB,KAAKmuqB,yBAAyBv4pB,kB,UAI1C63pB,EAAeltqB,UAAO,SAAgCC,GAAK,OAAO,IAAKA,GAAKitqB,GAAgB,KAAgB,IAAS,KAAgB,KAA0B,UAAgBhpqB,KAC/KgpqB,EAAe7oqB,WAAQ,KAA0B,CAAEC,MAAO4oqB,EAAgB3oqB,QAAS2oqB,EAAeltqB,Y,KA0B5FkuqB,GAAuB,IAAI,IAAe,wBAI1CC,GAAuB,IAAI,IAAe,wBAE1CC,GAAmB,CACrB,IACA,CAAEpsqB,QAAS,GAAeoW,SAAU,IACpC,CACIpW,QAAS,GACT6mB,WA6KR,SAAqB21oB,EAAerljB,EAAUp/E,EAAUnb,EAAU2nkB,EAAQw/D,EAAUlunB,GAA0D,IAAlDtC,EAAkD,uDAA3C,GAAIiwoB,EAAuC,uCAAlB9N,EAAkB,uCACpI1goB,EAAS,IAAI,GAAO,KAAMwnoB,EAAerljB,EAAUp/E,EAAUnb,EAAU2nkB,EAAQw/D,EAAUh/Y,GAAQlvO,IAQvG,GAPI2toB,IACAxuoB,EAAOwuoB,oBAAsBA,GAE7B9N,IACA1goB,EAAO0goB,mBAAqBA,GAEhC2W,GAA2B94oB,EAAMyB,GAC7BzB,EAAK+4oB,cAAe,CACpB,IAAMhuD,EAAM,cACZtplB,EAAOs7B,OAAO3uD,UAAU,SAAC+vB,GACrB4slB,EAAIiuD,SAAJ,wBAA8B76oB,EAAEic,YAAY/uC,OAC5C0/mB,EAAIpliB,IAAIxnD,EAAEhC,YACV4ulB,EAAIpliB,IAAIxnD,GACR4slB,EAAIkuD,gBAGZ,OAAOx3oB,GA9LHpO,KAAM,CACF,GAAe,GAAwB,IAAU,IAAU,IAAuB,IAClFm7oB,GAAQmK,GAAsB,CAAC,GAAqB,IAAI,KACxD,CAAC,GAAoB,IAAI,OAGjC,GACA,CAAElsqB,QAAS,GAAgB6mB,WA6M/B,SAAmBmO,GACf,OAAOA,EAAO+uoB,YAAYlnlB,MA9MwBj2D,KAAM,CAAC,KACzD,CAAE5mB,QAAS,IAAuBoW,SAAU,KAC5C,GACA,GACA,GACA,CAAEpW,QAASksqB,GAAsB71pB,SAnB1B,CAAEi2pB,eAAe,KAqB5B,SAASG,KACL,OAAO,IAAI,IAAa,SAAU,I,sBAuBhCC,E,WAEF,WAAYvggB,EAAOn3I,GAAM,oB,gDAmBzB,SAAei6S,EAAQp5S,GACnB,MAAO,CACH2mF,SAAUkwjB,EACV98oB,UAAW,CACPw8oB,GACAO,GAAc19V,GACd,CACIjvU,QAASmsqB,GACTtlpB,WAAY+lpB,GACZhmpB,KAAM,CAAC,CAAC,GAAQ,IAAI,IAAY,IAAI,OAExC,CAAE5mB,QAASksqB,GAAsB71pB,SAAUwf,GAAkB,IAC7D,CACI71B,QAAS,IACT6mB,WAAY80mB,GACZ/0mB,KAAM,CAAC,IAAkB,CAAC,IAAI,IAAO,KAAgB,IAAI,KAAaslpB,KAE1E,CACIlsqB,QAAS,GACT6mB,WAAYgmpB,GACZjmpB,KAAM,CAAC,GAAQ,IAAkBslpB,KAErC,CACIlsqB,QAAS,GACTC,YAAa41B,GAAUA,EAAOi1oB,mBAAqBj1oB,EAAOi1oB,mBACtD,IAER,CAAE9qqB,QAAS,IAAcmnB,OAAO,EAAMN,WAAY4lpB,IA8NvD,CACH,GACA,CACIzsqB,QAAS,IACTmnB,OAAO,EACPN,WAAYimpB,GACZlmpB,KAAM,CAAC,KAEX,CAAE5mB,QAAS+sqB,GAAoBlmpB,WAAYmmpB,GAAsBpmpB,KAAM,CAAC,KACxE,CAAE5mB,QAAS,IAAwBmnB,OAAO,EAAMlnB,YAAa8sqB,S,sBAlNjE,SAAgB99V,GACZ,MAAO,CAAEzyN,SAAUkwjB,EAAc98oB,UAAW,CAAC+8oB,GAAc19V,S,UAGnEy9V,EAAa1uqB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKyuqB,GAAc,KAAgBP,GAAsB,GAAI,KAAgB,GAAQ,KACxJO,EAAa/1pB,UAAO,KAAwB,CAAExY,KAAMuuqB,IACpDA,EAAa91pB,UAAO,KAAwB,I,KAqB5C,SAASi2pB,GAAqB73oB,EAAQm2oB,EAAkBt1oB,GAIpD,OAHIA,EAAOo3oB,cACP9B,EAAiBxqJ,UAAU9qf,EAAOo3oB,cAE/B,IAAI,GAAej4oB,EAAQm2oB,EAAkBt1oB,GAExD,SAAS8lmB,GAAwBuxC,EAA0BnwC,GAAsB,IAAZt3mB,EAAY,uDAAF,GAC3E,OAAOA,EAAQ0npB,QAAU,IAAI,IAAqBD,EAA0BnwC,GACxE,IAAI,IAAqBmwC,EAA0BnwC,GAE3D,SAAS6vC,GAAoB53oB,GAIzB,MAAO,UAkBX,SAAS23oB,GAAc19V,GACnB,MAAO,CACH,CAAEjvU,QAAS,IAA8BmnB,OAAO,EAAM9Q,SAAU44T,GAChE,CAAEjvU,QAAS+hqB,GAAQ56oB,OAAO,EAAM9Q,SAAU44T,IAuBlD,SAASo9V,GAA2B94oB,EAAMyB,GAClCzB,EAAK01I,eACLj0I,EAAOi0I,aAAe11I,EAAK01I,cAE3B11I,EAAK4voB,2BACLnuoB,EAAOmuoB,yBAA2B5voB,EAAK4voB,0BAEvC5voB,EAAKkwoB,sBACLzuoB,EAAOyuoB,oBAAsBlwoB,EAAKkwoB,qBAElClwoB,EAAKshoB,4BACL7/nB,EAAO6/nB,0BAA4BthoB,EAAKshoB,2BAExCthoB,EAAK+noB,yBACLtmoB,EAAOsmoB,uBAAyB/noB,EAAK+noB,wBAErC/noB,EAAKmwoB,oBACL1uoB,EAAO0uoB,kBAAoBnwoB,EAAKmwoB,mB,sBAiBlC0J,E,8BACF,WAAYxwpB,GAAQ,oBAChBnf,KAAKmf,SAAWA,EAChBnf,KAAK4vqB,gBAAiB,EACtB5vqB,KAAK6vqB,0BAA4B,IAAIpsqB,EAAA,G,6BAEzC,WAAc,WAEV,OADUzD,KAAKmf,SAASjN,IAAI,IAAsB3N,QAAQC,QAAQ,OACzD6Z,KAAK,WACV,IAAI7Z,EAAU,KACR8zB,EAAM,IAAI/zB,QAAQ,SAAAulI,GAAC,OAAItlI,EAAUslI,IACjCvyG,EAAS,EAAKpY,SAASjN,IAAI,IAC3B4jB,EAAO,EAAK3W,SAASjN,IAAIu8pB,IAyB/B,MAxB+B,aAA3B34oB,EAAKg6oB,mBACLv4oB,EAAOszoB,8BACPrmqB,GAAQ,IAIe,YAA3BsxB,EAAKg6oB,mBAA8D,oBAA3Bh6oB,EAAKg6oB,mBACzCv4oB,EAAOy3D,MAAM82kB,mBAAqB,WAE9B,OAAK,EAAK8J,eAOC,OAAA35pB,EAAA,GAAG,OANV,EAAK25pB,gBAAiB,EACtBprqB,GAAQ,GACD,EAAKqrqB,4BAOpBt4oB,EAAOu4oB,qBAGPtrqB,GAAQ,GAEL8zB,M,+BAGf,SAAkBy3oB,GACd,IAAMj6oB,EAAO91B,KAAKmf,SAASjN,IAAIu8pB,IACzBuB,EAAYhwqB,KAAKmf,SAASjN,IAAI,IAC9B+9pB,EAAiBjwqB,KAAKmf,SAASjN,IAAI,IACnCqlB,EAASv3B,KAAKmf,SAASjN,IAAI,IAC3B+P,EAAMjiB,KAAKmf,SAASjN,IAAI,KAC1B69pB,IAA6B9tpB,EAAI4xV,WAAW,KAIjB,uBAA3B/9U,EAAKg6oB,wBAAyErrqB,IAA3BqxB,EAAKg6oB,mBACxDv4oB,EAAOu4oB,oBAEXE,EAAUE,kBACVD,EAAe3qY,OACf/tQ,EAAO44oB,uBAAuBlupB,EAAI4jlB,eAAe,IACjD7lmB,KAAK6vqB,0BAA0BhsqB,KAAK,MACpC7D,KAAK6vqB,0BAA0B/rqB,gB,UAGvC6rqB,EAAkBpvqB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKmvqB,GAAmB,KAAgB,OACrHA,EAAkB/qqB,WAAQ,KAA0B,CAAEC,MAAO8qqB,EAAmB7qqB,QAAS6qqB,EAAkBpvqB,Y,KAO3G,SAAS8uqB,GAAkBvliB,GACvB,OAAOA,EAAEsmiB,eAAe7loB,KAAKu/F,GAEjC,SAASyliB,GAAqBzliB,GAC1B,OAAOA,EAAEumiB,kBAAkB9loB,KAAKu/F,GAQpC,IAAMwliB,GAAqB,IAAI,IAAe,uB,sBE7xLrC,SAAUjtpB,GAAU,aAIzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACTD,EAAG,CAAC,cAAe,gBACnBiC,EAAG,CAAC,cAAe,gBACnB/M,EAAG,CAAC,UAAW,aACfiN,GAAI,CAACS,EAAS,QAASA,EAAS,UAChCR,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOs3I,EAAgBj6I,EAAOpG,GAAK,GAAKoG,EAAOpG,GAAK,GAG7C0F,EAAOM,aAAa,QAAS,CACpCC,OAAQ,wFAAqFL,MACzF,KAEJM,YACI,gEAA6DN,MAAM,KACvE0U,kBAAkB,EAClB1T,SACI,8DAA8DhB,MAC1D,KAERiB,cAAe,uBAAuBjB,MAAM,KAC5CkB,YAAa,uBAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJ/B,EAAGi6I,EACHj4I,GAAI,aACJC,EAAGg4I,EACH/3I,GAAI,aACJhN,EAAG+kJ,EACH93I,GAAI83I,EACJ73I,EAAG63I,EACH53I,GAAI,YACJC,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB/gB,CAAQ,EAAQ,U,0+BC6C1D,SAASwrqB,EAAoB79nB,EAAIuwO,GAE7B,OAAQvwO,EAAGzJ,aAAag6O,IAAS,IAAI1xO,MAAM,SAAW,GAW1D,IAAMi/nB,EAAwB,oCAExBC,EAA4B,0BAE5BC,EAAiC,uBAEnCvyiB,EAAS,EAEPwyiB,EAAkB,IAAIjjqB,IAExBkjqB,EAAoB,K,iBAMlBC,E,8BACF,WAAY1jqB,GAAS,oBACjBlN,KAAKkN,UAAYA,G,uBAErB,SAASm/G,EAAaryF,EAAShtB,GAC3B,GAAKhN,KAAK6wqB,gBAAgBxkjB,EAAaryF,GAAvC,CAGA,IAAMrd,EAAM6sV,EAAOxvU,EAAShtB,GACL,iBAAZgtB,GAEP82oB,EAAa92oB,GACb02oB,EAAgBr8pB,IAAIsI,EAAK,CAAEo0pB,eAAgB/2oB,EAASg3oB,eAAgB,KAE9DN,EAAgBt8pB,IAAIuI,IAC1B3c,KAAKixqB,sBAAsBj3oB,EAAShtB,GAEnChN,KAAKkxqB,6BAA6B7kjB,EAAa1vG,IAChD3c,KAAKmxqB,qBAAqB9kjB,EAAa1vG,M,+BAG/C,SAAkB0vG,EAAaryF,EAAShtB,GACpC,GAAKgtB,GAAYh6B,KAAKoxqB,eAAe/kjB,GAArC,CAGA,IAAM1vG,EAAM6sV,EAAOxvU,EAAShtB,GAM5B,GALIhN,KAAKkxqB,6BAA6B7kjB,EAAa1vG,IAC/C3c,KAAKqxqB,wBAAwBhljB,EAAa1vG,GAIvB,iBAAZqd,EAAsB,CAC7B,IAAMs3oB,EAAoBZ,EAAgBx+pB,IAAIyK,GAC1C20pB,GAA0D,IAArCA,EAAkBN,gBACvChxqB,KAAKuxqB,sBAAsB50pB,GAG/Bg0pB,GAA6D,IAAxCA,EAAkB3pf,WAAW7iL,QAClDnE,KAAKwxqB,8B,yBAIb,WAEI,IADA,IAAMC,EAAoBzxqB,KAAKkN,UAAU6+F,iBAAf,WAAoC0kkB,EAApC,MACjB5oqB,EAAI,EAAGA,EAAI4pqB,EAAkBttqB,OAAQ0D,IAC1C7H,KAAK0xqB,kCAAkCD,EAAkB5pqB,IACzD4pqB,EAAkB5pqB,GAAG4gC,gBAAgBgooB,GAErCE,GACA3wqB,KAAKwxqB,2BAETd,EAAgBhgqB,U,mCAMpB,SAAsBspB,EAAShtB,GAC3B,IAAM+jqB,EAAiB/wqB,KAAKkN,UAAU2K,cAAc,OACpDi5pB,EAAaC,GACbA,EAAev9jB,YAAcx5E,EACzBhtB,GACA+jqB,EAAeliqB,aAAa,OAAQ7B,GAExChN,KAAK2xqB,2BACLhB,EAAkB74pB,YAAYi5pB,GAC9BL,EAAgBr8pB,IAAIm1V,EAAOxvU,EAAShtB,GAAO,CAAE+jqB,iBAAgBC,eAAgB,M,mCAGjF,SAAsBr0pB,GAClB,IAAM20pB,EAAoBZ,EAAgBx+pB,IAAIyK,GACxCo0pB,EAAiBO,GAAqBA,EAAkBP,eAC1DJ,GAAqBI,GACrBJ,EAAkBlvpB,YAAYsvpB,GAElCL,EAAgBn+pB,OAAOoK,K,sCAG3B,WACI,IAAKg0pB,EAAmB,CACpB,IAAMiB,EAAuB5xqB,KAAKkN,UAAU6sN,eAAew2c,GAKvDqB,GAAwBA,EAAqBlxpB,YAC7CkxpB,EAAqBlxpB,WAAWe,YAAYmwpB,IAEhDjB,EAAoB3wqB,KAAKkN,UAAU2K,cAAc,QAC/BmO,GAAKuqpB,EAKvBI,EAAkBplqB,MAAMw2J,WAAa,SAGrC4ugB,EAAkBhuqB,UAAUE,IAAI,uBAChC7C,KAAKkN,UAAU41B,KAAKhrB,YAAY64pB,M,sCAIxC,WACQA,GAAqBA,EAAkBjwpB,aACvCiwpB,EAAkBjwpB,WAAWe,YAAYkvpB,GACzCA,EAAoB,Q,+CAI5B,SAAkCtlqB,GAE9B,IAAMwmqB,EAAuBvB,EAAoBjlqB,EAAS,oBACrD8J,OAAO,SAAA6Q,GAAE,OAA6C,GAAzCA,EAAG/c,QAAQunqB,KAC7BnlqB,EAAQwD,aAAa,mBAAoBgjqB,EAAqB7hoB,KAAK,Q,kCAMvE,SAAqB3kC,EAASsR,GAC1B,IA/KqB81B,EAAUzsB,EAC7Bk5H,EA8KIoyhB,EAAoBZ,EAAgBx+pB,IAAIyK,GA/KfqJ,EAkLkBsrpB,EAAkBP,eAAe/qpB,IAjLhFk5H,EAAMoxhB,EADa79nB,EAkLDpnC,EAAS,qBAhLzBjD,KAAK,SAAA0pqB,GAAU,OAAIA,EAAWh1pB,QAAUkJ,EAAGlJ,WAGnDoiI,EAAIt7I,KAAKoiB,EAAGlJ,QACZ21B,EAAG5jC,aA4K8B,mBA5KXqwI,EAAIlvG,KAXT,OAwLb3kC,EAAQwD,aAAa4hqB,EAAgC,IACrDa,EAAkBN,mB,qCAMtB,SAAwB3lqB,EAASsR,GAC7B,IA/KwB81B,EAAIuwO,EAAMh9P,EAEhC+rpB,EA6KIT,EAAoBZ,EAAgBx+pB,IAAIyK,GAC9C20pB,EAAkBN,iBAhLgBhrpB,EAiLkBsrpB,EAAkBP,eAAe/qpB,IA/KnF+rpB,EADMzB,EADgB79nB,EAiLDpnC,EAjLK23Q,EAiLI,oBA/KZ7tQ,OAAO,SAAAm5B,GAAG,OAAIA,GAAOtoB,EAAGlJ,UAChC3Y,OACZsuC,EAAG5jC,aAAam0Q,EAAM+uZ,EAAY/hoB,KArBrB,MAwBbyC,EAAGhK,gBAAgBu6O,GA2KnB33Q,EAAQo9B,gBAAgBgooB,K,0CAG5B,SAA6BplqB,EAASsR,GAClC,IAAMq1pB,EAAe1B,EAAoBjlqB,EAAS,oBAC5CimqB,EAAoBZ,EAAgBx+pB,IAAIyK,GACxCs1pB,EAAYX,GAAqBA,EAAkBP,eAAe/qpB,GACxE,QAASispB,IAAiD,GAApCD,EAAa/oqB,QAAQgpqB,K,6BAG/C,SAAgB5mqB,EAAS2uB,GACrB,IAAKh6B,KAAKoxqB,eAAe/lqB,GACrB,OAAO,EAEX,GAAI2uB,GAA8B,iBAAZA,EAIlB,OAAO,EAEX,IAAMk4oB,EAA4B,MAAXl4oB,EAAkB,GAAK,UAAGA,GAAUld,OACrDqJ,EAAY9a,EAAQ29B,aAAa,cAGvC,SAAOkpoB,GAAmB/rpB,GAAaA,EAAUrJ,SAAWo1pB,K,4BAGhE,SAAe7mqB,GACX,OAAOA,EAAQ1D,WAAa3H,KAAKkN,UAAUtF,iB,UAGnDgpqB,EAAcrwqB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKowqB,GAAe,KAAgB,OACzGA,EAAchsqB,WAAQ,aAAmB,CAAEE,QAAS,WAAmC,OAAO,IAAI8rqB,EAAc,aAAS,OAAe/rqB,MAAO+rqB,EAAehqpB,WAAY,S,KAY1K,SAAS4iV,EAAOxvU,EAAShtB,GACrB,MAA0B,iBAAZgtB,EAAP,UAAiChtB,GAAQ,GAAzC,YAA+CgtB,GAAYA,EAGtE,SAAS82oB,EAAazlqB,GACbA,EAAQ2a,KACT3a,EAAQ2a,GAAR,UAAgBwqpB,EAAhB,YAA6CtyiB,M,IAe/Ci0iB,E,8BACF,WAAYt5gB,GAAM,+BACd74J,KAAK64J,OAASA,EACd74J,KAAKoyqB,kBAAoB,EACzBpyqB,KAAKqyqB,YAAc,KACnBryqB,KAAKsyqB,OAAQ,EACbtyqB,KAAKuyqB,iBAAmB,IAAI,IAC5BvyqB,KAAKwyqB,uBAAyB,IAAatrpB,MAC3ClnB,KAAKu5X,WAAY,EACjBv5X,KAAKyyqB,qBAAuB,GAC5BzyqB,KAAK0yqB,aAAc,EAKnB1yqB,KAAK2yqB,iBAAmB,SAACrhqB,GAAD,OAAUA,EAAK0b,UAEvChtB,KAAK4yqB,gBAAkB,GAKvB5yqB,KAAKisB,OAAS,IAAI,IAElBjsB,KAAK+P,OAAS,IAAI,IAId8oJ,aAAkB,KAClBA,EAAO5zJ,QAAQf,UAAU,SAAC2uqB,GACtB,GAAI,EAAKR,YAAa,CAClB,IACM7+gB,EADYq/gB,EAAS3qpB,UACAjf,QAAQ,EAAKopqB,aACpC7+gB,GAAY,GAAKA,IAAa,EAAK4+gB,mBACnC,EAAKA,iBAAmB5+gB,O,4BAW5C,SAAcnzH,GAEV,OADArgC,KAAK2yqB,iBAAmBtyoB,EACjBrgC,O,sBAOX,WAA0B,IAAjB8yqB,IAAiB,yDAEtB,OADA9yqB,KAAKsyqB,MAAQQ,EACN9yqB,O,qCAMX,WAAsC,IAAd0wI,IAAc,yDAElC,OADA1wI,KAAKu5X,UAAY7oP,EACV1wI,O,uCAOX,SAA0BgH,GAEtB,OADAhH,KAAK+yqB,YAAc/rqB,EACZhH,O,qCAMX,SAAwByc,GAEpB,OADAzc,KAAKyyqB,qBAAuBh2pB,EACrBzc,O,2BAMX,WAAoC,WAAtBgzqB,EAAsB,uDAAH,IAwB7B,OAnBAhzqB,KAAKwyqB,uBAAuB58pB,cAI5B5V,KAAKwyqB,uBAAyBxyqB,KAAKuyqB,iBAAiBvuqB,KAAK,YAAI,SAAAivqB,GAAM,OAAI,EAAKL,gBAAgBhvqB,KAAKqvqB,KAAU,YAAaD,GAAmB,YAAO,kBAAM,EAAKJ,gBAAgBzuqB,OAAS,IAAI,YAAI,kBAAM,EAAKyuqB,gBAAgB5ioB,KAAK,OAAM9rC,UAAU,SAAAgvqB,GAI1O,IAHA,IAAMh7pB,EAAQ,EAAKi7pB,iBAGVtrqB,EAAI,EAAGA,EAAIqQ,EAAM/T,OAAS,EAAG0D,IAAK,CACvC,IAAM8B,GAAS,EAAKyoqB,iBAAmBvqqB,GAAKqQ,EAAM/T,OAC5CmN,EAAO4G,EAAMvO,GACnB,IAAK,EAAKgpqB,iBAAiBrhqB,IACuC,IAA9DA,EAAK8hqB,WAAWxloB,cAAc9wB,OAAO7T,QAAQiqqB,GAAoB,CACjE,EAAKjipB,cAActnB,GACnB,OAGR,EAAKipqB,gBAAkB,KAEpB5yqB,O,4BAOX,WAA6B,IAAd0wI,IAAc,yDAEzB,OADA1wI,KAAK0yqB,YAAchiiB,EACZ1wI,O,2BAEX,SAAcsR,GACV,IAAM+hqB,EAAqBrzqB,KAAKqyqB,YAChCryqB,KAAK2kK,iBAAiBrzJ,GAClBtR,KAAKqyqB,cAAgBgB,GACrBrzqB,KAAK+P,OAAOlM,KAAK7D,KAAKoyqB,oB,uBAO9B,SAAU9ppB,GAAK,WACL2E,EAAU3E,EAAM2E,QAEhBqmpB,EADY,CAAC,SAAU,UAAW,UAAW,YACfl/gB,MAAM,SAAA8yC,GACtC,OAAQ5+K,EAAM4+K,IAAa,EAAKure,qBAAqBxpqB,QAAQi+L,IAAa,IAE9E,OAAQj6K,GACJ,KAAK,IAED,YADAjtB,KAAKisB,OAAOpoB,OAEhB,KAAK,IACD,GAAI7D,KAAKu5X,WAAa+5S,EAAmB,CACrCtzqB,KAAKuzqB,oBACL,MAGA,OAER,KAAK,IACD,GAAIvzqB,KAAKu5X,WAAa+5S,EAAmB,CACrCtzqB,KAAKwzqB,wBACL,MAGA,OAER,KAAK,IACD,GAAIxzqB,KAAK+yqB,aAAeO,EAAmB,CAClB,QAArBtzqB,KAAK+yqB,YAAwB/yqB,KAAKwzqB,wBAA0BxzqB,KAAKuzqB,oBACjE,MAGA,OAER,KAAK,IACD,GAAIvzqB,KAAK+yqB,aAAeO,EAAmB,CAClB,QAArBtzqB,KAAK+yqB,YAAwB/yqB,KAAKuzqB,oBAAsBvzqB,KAAKwzqB,wBAC7D,MAGA,OAER,KAAK,IACD,GAAIxzqB,KAAK0yqB,aAAeY,EAAmB,CACvCtzqB,KAAKgxB,qBACL,MAGA,OAER,KAAK,IACD,GAAIhxB,KAAK0yqB,aAAeY,EAAmB,CACvCtzqB,KAAK60K,oBACL,MAGA,OAER,QAaI,aAZIy+f,GAAqB,YAAehrpB,EAAO,eAGvCA,EAAM3L,KAA4B,IAArB2L,EAAM3L,IAAIxY,OACvBnE,KAAKuyqB,iBAAiB1uqB,KAAKykB,EAAM3L,IAAIozlB,sBAE/B9ilB,GAAW,KAAKA,GAAW,KAAOA,GAAW,KAAQA,GAAW,MACtEjtB,KAAKuyqB,iBAAiB1uqB,KAAKwrC,OAAOo3O,aAAax5P,MAO/DjtB,KAAK4yqB,gBAAkB,GACvBtqpB,EAAM4E,mB,2BAGV,WACI,OAAOltB,KAAKoyqB,mB,sBAGhB,WACI,OAAOpyqB,KAAKqyqB,c,sBAGhB,WACI,OAAOryqB,KAAK4yqB,gBAAgBzuqB,OAAS,I,gCAGzC,WACInE,KAAKyzqB,sBAAsB,EAAG,K,+BAGlC,WACIzzqB,KAAKyzqB,sBAAsBzzqB,KAAK64J,OAAO10J,OAAS,GAAI,K,+BAGxD,WACInE,KAAKoyqB,iBAAmB,EAAIpyqB,KAAKgxB,qBAAuBhxB,KAAK0zqB,sBAAsB,K,mCAGvF,WACI1zqB,KAAKoyqB,iBAAmB,GAAKpyqB,KAAKsyqB,MAAQtyqB,KAAK60K,oBACzC70K,KAAK0zqB,uBAAuB,K,8BAEtC,SAAiBpiqB,GACb,IAAMqiqB,EAAY3zqB,KAAKmzqB,iBACjBxpqB,EAAwB,iBAAT2H,EAAoBA,EAAOqiqB,EAAU1qqB,QAAQqI,GAC5D8a,EAAaunpB,EAAUhqqB,GAE7B3J,KAAKqyqB,YAA4B,MAAdjmpB,EAAqB,KAAOA,EAC/CpsB,KAAKoyqB,iBAAmBzoqB,I,mCAO5B,SAAsB27D,GAClBtlE,KAAKsyqB,MAAQtyqB,KAAK4zqB,qBAAqBtumB,GAAStlE,KAAK6zqB,wBAAwBvumB,K,kCAOjF,SAAqBA,GAEjB,IADA,IAAMptD,EAAQlY,KAAKmzqB,iBACVtrqB,EAAI,EAAGA,GAAKqQ,EAAM/T,OAAQ0D,IAAK,CACpC,IAAM8B,GAAS3J,KAAKoyqB,iBAAoB9smB,EAAQz9D,EAAKqQ,EAAM/T,QAAU+T,EAAM/T,OAE3E,IAAKnE,KAAK2yqB,iBADGz6pB,EAAMvO,IAGf,YADA3J,KAAKixB,cAActnB,M,qCAU/B,SAAwB27D,GACpBtlE,KAAKyzqB,sBAAsBzzqB,KAAKoyqB,iBAAmB9smB,EAAOA,K,mCAO9D,SAAsB37D,EAAOmqqB,GACzB,IAAM57pB,EAAQlY,KAAKmzqB,iBACnB,GAAKj7pB,EAAMvO,GAAX,CAGA,KAAO3J,KAAK2yqB,iBAAiBz6pB,EAAMvO,KAE/B,IAAKuO,EADLvO,GAASmqqB,GAEL,OAGR9zqB,KAAKixB,cAActnB,M,4BAGvB,WACI,OAAO3J,KAAK64J,kBAAkB,IAAY74J,KAAK64J,OAAO3wI,UAAYloB,KAAK64J,W,GAWzEk7gB,E,0IACF,SAAcpqqB,GACN3J,KAAKosB,YACLpsB,KAAKosB,WAAW8hW,oBAEpB,6BAAoBvkX,IAChB3J,KAAKosB,YACLpsB,KAAKosB,WAAW4npB,sB,CAPa7B,GAmBnC8B,E,YACF,+CACI,WAAS36pB,YACJorL,QAAU,UAFnB,E,mEAQA,SAAe5xF,GAEX,OADA9yG,KAAK0kM,QAAU5xF,EACR9yG,O,2BAEX,SAAcsR,GACV,6BAAoBA,IAChBtR,KAAKosB,YACLpsB,KAAKosB,WAAW0C,MAAM9uB,KAAK0kM,a,CAhBTyte,G,iBA8CxB+B,E,8BACF,WAAY/mqB,GAAS,oBACjBnN,KAAKmN,UAAYA,G,yBAQrB,SAAW9B,GAGP,OAAOA,EAAQ09B,aAAa,c,uBAUhC,SAAU19B,GACN,OA2GR,SAAqBA,GAGjB,SAAUA,EAAQynE,aAAeznE,EAAQomB,cACF,mBAA3BpmB,EAAQs+K,gBAAiCt+K,EAAQs+K,iBAAiBxlL,QA/GnEgwqB,CAAY9oqB,IAAqD,YAAzCmoE,iBAAiBnoE,GAAS02J,a,wBAS7D,SAAW12J,GAEP,IAAKrL,KAAKmN,UAAU8K,UAChB,OAAO,EAEX,IA2KWyrI,EA3KL0whB,EAoFd,SAAyBjppB,GACrB,IACI,OAAOA,EAAOippB,aAElB,MAAOzpqB,GACH,OAAO,MAzFc0pqB,EA2KV3whB,EA3KoCr4I,GA6KvC6wV,eAAiBx4M,EAAKw4M,cAAc/qU,aAAehG,QA5K3D,GAAIippB,EAAc,CAEd,IAAwC,IAApCE,EAAiBF,GACjB,OAAO,EAGX,IAAKp0qB,KAAK4qR,UAAUwpZ,GAChB,OAAO,EAGf,IAAItlqB,EAAWzD,EAAQyD,SAAS8N,cAC5B23pB,EAAgBD,EAAiBjpqB,GACrC,OAAIA,EAAQ09B,aAAa,oBACK,IAAnBwroB,EAEM,WAAbzlqB,GAAsC,WAAbA,KAOzB9O,KAAKmN,UAAUu9B,QAAU1qC,KAAKmN,UAAUwpS,MA6HpD,SAAkCtrS,GAC9B,IAAIyD,EAAWzD,EAAQyD,SAAS8N,cAC5Bi6Q,EAAyB,UAAb/nR,GAAwBzD,EAAQ3K,KAChD,MAAqB,SAAdm2R,GACc,aAAdA,GACa,WAAb/nR,GACa,aAAbA,EAnIiD0lqB,CAAyBnpqB,MAG5D,UAAbyD,IAGKzD,EAAQ09B,aAAa,cAKA,IAAnBwroB,EAEM,UAAbzlqB,GAKuB,IAAnBylqB,IAKkB,OAAlBA,GAMGv0qB,KAAKmN,UAAUkmX,SAAWhoX,EAAQ09B,aAAa,aAEnD19B,EAAQ8qC,UAAY,K,yBAS/B,SAAY9qC,EAAS+sB,GAGjB,OA8FR,SAAgC/sB,GAE5B,OAtDJ,SAAuBA,GACnB,OAOJ,SAAwBA,GACpB,MAAyC,SAAlCA,EAAQyD,SAAS8N,cARjB63pB,CAAeppqB,IAA4B,UAAhBA,EAAQ3K,KAqDtCg0qB,CAAcrpqB,KA9DtB,SAA6BA,GACzB,IAAIyD,EAAWzD,EAAQyD,SAAS8N,cAChC,MAAoB,UAAb9N,GACU,WAAbA,GACa,WAAbA,GACa,aAAbA,EA4DG6lqB,CAAoBtpqB,IArD/B,SAA0BA,GACtB,OAOJ,SAAyBA,GACrB,MAAyC,KAAlCA,EAAQyD,SAAS8N,cARjBg4pB,CAAgBvpqB,IAAYA,EAAQ09B,aAAa,QAqDpD8roB,CAAiBxpqB,IACjBA,EAAQ09B,aAAa,oBACrB+roB,EAAiBzpqB,IAtGV0pqB,CAAuB1pqB,KAAarL,KAAK+sB,WAAW1hB,MACrD+sB,aAAuC,EAASA,EAAO48oB,mBAAqBh1qB,KAAK4qR,UAAUv/Q,Q,UAGzG6oqB,EAAqB3zqB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAK0zqB,GAAsB,KAAgB,OAC9HA,EAAqBtvqB,WAAQ,aAAmB,CAAEE,QAAS,WAA0C,OAAO,IAAIovqB,EAAqB,aAAS,OAAervqB,MAAOqvqB,EAAsBttpB,WAAY,S,KAqDtM,SAASkupB,EAAiBzpqB,GACtB,IAAKA,EAAQ09B,aAAa,kBAAoCtkC,IAArB4G,EAAQ8qC,SAC7C,OAAO,EAEX,IAAIA,EAAW9qC,EAAQ29B,aAAa,YAEpC,MAAgB,UAAZmN,MAGMA,GAAa8E,MAAMzL,SAAS2G,EAAU,MAMpD,SAASm+nB,EAAiBjpqB,GACtB,IAAKypqB,EAAiBzpqB,GAClB,OAAO,KAGX,IAAM8qC,EAAW3G,SAASnkC,EAAQ29B,aAAa,aAAe,GAAI,IAClE,OAAOiS,MAAM9E,IAAa,EAAIA,E,IAgD5B8+nB,E,8BACF,WAAYrrpB,EAAUsrpB,EAAU5xqB,EAAS4J,GAA+B,WAApBioqB,EAAoB,4EACpEn1qB,KAAK4pB,SAAWA,EAChB5pB,KAAKk1qB,SAAWA,EAChBl1qB,KAAKsD,QAAUA,EACftD,KAAKkN,UAAYA,EACjBlN,KAAKo1qB,cAAe,EAEpBp1qB,KAAKq1qB,oBAAsB,kBAAM,EAAKC,4BACtCt1qB,KAAKu1qB,kBAAoB,kBAAM,EAAKC,6BACpCx1qB,KAAK25N,UAAW,EACXw7c,GACDn1qB,KAAKy1qB,iB,oBAIb,WAAgB,OAAOz1qB,KAAK25N,U,IAC5B,SAAYp4N,GACRvB,KAAK25N,SAAWp4N,EACZvB,KAAK01qB,cAAgB11qB,KAAK21qB,aAC1B31qB,KAAK41qB,sBAAsBr0qB,EAAOvB,KAAK01qB,cACvC11qB,KAAK41qB,sBAAsBr0qB,EAAOvB,KAAK21qB,e,qBAI/C,WACI,IAAME,EAAc71qB,KAAK01qB,aACnBI,EAAY91qB,KAAK21qB,WACnBE,IACAA,EAAYlqpB,oBAAoB,QAAS3rB,KAAKq1qB,qBAC1CQ,EAAYn1pB,YACZm1pB,EAAYn1pB,WAAWe,YAAYo0pB,IAGvCC,IACAA,EAAUnqpB,oBAAoB,QAAS3rB,KAAKu1qB,mBACxCO,EAAUp1pB,YACVo1pB,EAAUp1pB,WAAWe,YAAYq0pB,IAGzC91qB,KAAK01qB,aAAe11qB,KAAK21qB,WAAa,KACtC31qB,KAAKo1qB,cAAe,I,2BAQxB,WAAa,WAET,QAAIp1qB,KAAKo1qB,eAGTp1qB,KAAKsD,QAAQ+nB,kBAAkB,WACtB,EAAKqqpB,eACN,EAAKA,aAAe,EAAKK,gBACzB,EAAKL,aAAapqpB,iBAAiB,QAAS,EAAK+ppB,sBAEhD,EAAKM,aACN,EAAKA,WAAa,EAAKI,gBACvB,EAAKJ,WAAWrqpB,iBAAiB,QAAS,EAAKiqpB,sBAGnDv1qB,KAAK4pB,SAASlJ,aACd1gB,KAAK4pB,SAASlJ,WAAWC,aAAa3gB,KAAK01qB,aAAc11qB,KAAK4pB,UAC9D5pB,KAAK4pB,SAASlJ,WAAWC,aAAa3gB,KAAK21qB,WAAY31qB,KAAK4pB,SAASy7Q,aACrErlS,KAAKo1qB,cAAe,GAEjBp1qB,KAAKo1qB,gB,0CAQhB,WAA4B,WACxB,OAAO,IAAI7wqB,QAAQ,SAAAC,GACf,EAAKwxqB,iBAAiB,kBAAMxxqB,EAAQ,EAAKk+B,6B,gDASjD,WAAkC,WAC9B,OAAO,IAAIn+B,QAAQ,SAAAC,GACf,EAAKwxqB,iBAAiB,kBAAMxxqB,EAAQ,EAAKgxqB,mC,+CASjD,WAAiC,WAC7B,OAAO,IAAIjxqB,QAAQ,SAAAC,GACf,EAAKwxqB,iBAAiB,kBAAMxxqB,EAAQ,EAAK8wqB,kC,gCAQjD,SAAmB9oV,GAKf,IAHA,IAAIxuS,EAAUh+C,KAAK4pB,SAASmiF,iBAAiB,4BAAqBygP,EAArB,gCACvBA,EADuB,4BAE3BA,EAF2B,MAGpC3kV,EAAI,EAAGA,EAAIm2C,EAAQ75C,OAAQ0D,IAE5Bm2C,EAAQn2C,GAAGkhC,aAAX,oBAAqCyjT,IACrCzhT,QAAQ24B,KAAK,uDAAgD8oR,EAAhD,oCACaA,EADb,oEAE8BxuS,EAAQn2C,IAE9Cm2C,EAAQn2C,GAAGkhC,aAAX,2BAA4CyjT,KACjDzhT,QAAQ24B,KAAK,8DAAuD8oR,EAAvD,oCACaA,EADb,oEAEoBxuS,EAAQn2C,IAGjD,MAAa,SAAT2kV,EACOxuS,EAAQ75C,OAAS65C,EAAQ,GAAKh+C,KAAKi2qB,yBAAyBj2qB,KAAK4pB,UAErEo0B,EAAQ75C,OACX65C,EAAQA,EAAQ75C,OAAS,GAAKnE,KAAKk2qB,wBAAwBl2qB,KAAK4pB,Y,iCAMxE,WAEI,IAAMuspB,EAAoBn2qB,KAAK4pB,SAASxe,cAAc,0CAEtD,GAAI+qqB,EAAmB,CAanB,GAXIA,EAAkBptoB,aAAlB,sBACAgC,QAAQ24B,KAAK,0IAEmByymB,IAQ/Bn2qB,KAAKk1qB,SAASkB,YAAYD,GAAoB,CAC/C,IAAME,EAAiBr2qB,KAAKi2qB,yBAAyBE,GAErD,OADAE,SAAgEA,EAAevnpB,UACtEunpB,EAGb,OADAF,EAAkBrnpB,SACX,EAEX,OAAO9uB,KAAKw1qB,8B,uCAMhB,WACI,IAAMW,EAAoBn2qB,KAAKs2qB,mBAAmB,SAIlD,OAHIH,GACAA,EAAkBrnpB,UAEbqnpB,I,sCAMb,WACI,IAAMA,EAAoBn2qB,KAAKs2qB,mBAAmB,OAIlD,OAHIH,GACAA,EAAkBrnpB,UAEbqnpB,I,yBAKb,WACI,OAAOn2qB,KAAKo1qB,e,sCAGhB,SAAyBh2lB,GACrB,GAAIp/E,KAAKk1qB,SAASkB,YAAYh3lB,IAASp/E,KAAKk1qB,SAAS7imB,WAAW+M,GAC5D,OAAOA,EAKX,IADA,IAAIt3E,EAAWs3E,EAAKt3E,UAAYs3E,EAAK4nG,WAC5Bn/K,EAAI,EAAGA,EAAIC,EAAS3D,OAAQ0D,IAAK,CACtC,IAAI0uqB,EAAgBzuqB,EAASD,GAAGF,WAAa3H,KAAKkN,UAAUtF,aACxD5H,KAAKi2qB,yBAAyBnuqB,EAASD,IACvC,KACJ,GAAI0uqB,EACA,OAAOA,EAGf,OAAO,O,qCAGX,SAAwBn3lB,GACpB,GAAIp/E,KAAKk1qB,SAASkB,YAAYh3lB,IAASp/E,KAAKk1qB,SAAS7imB,WAAW+M,GAC5D,OAAOA,EAIX,IADA,IAAIt3E,EAAWs3E,EAAKt3E,UAAYs3E,EAAK4nG,WAC5Bn/K,EAAIC,EAAS3D,OAAS,EAAG0D,GAAK,EAAGA,IAAK,CAC3C,IAAI0uqB,EAAgBzuqB,EAASD,GAAGF,WAAa3H,KAAKkN,UAAUtF,aACxD5H,KAAKk2qB,wBAAwBpuqB,EAASD,IACtC,KACJ,GAAI0uqB,EACA,OAAOA,EAGf,OAAO,O,2BAGX,WACI,IAAM1rhB,EAAS7qJ,KAAKkN,UAAU2K,cAAc,OAK5C,OAJA7X,KAAK41qB,sBAAsB51qB,KAAK25N,SAAU9uE,GAC1CA,EAAOloJ,UAAUE,IAAI,uBACrBgoJ,EAAOloJ,UAAUE,IAAI,yBACrBgoJ,EAAOh8I,aAAa,cAAe,QAC5Bg8I,I,mCAOX,SAAsBw+X,EAAWx+X,GAG7Bw+X,EAAYx+X,EAAOh8I,aAAa,WAAY,KAAOg8I,EAAOpiH,gBAAgB,c,2BAM9E,SAAcioG,GACN1wI,KAAK01qB,cAAgB11qB,KAAK21qB,aAC1B31qB,KAAK41qB,sBAAsBlliB,EAAS1wI,KAAK01qB,cACzC11qB,KAAK41qB,sBAAsBlliB,EAAS1wI,KAAK21qB,e,8BAIjD,SAAiB3mqB,GACThP,KAAKsD,QAAQe,SACb2K,IAGAhP,KAAKsD,QAAQoB,SAASV,KAAK,YAAK,IAAIE,UAAU8K,O,oBASpDwnqB,E,8BACF,WAAYtB,EAAU5xqB,EAAS4J,GAAS,oBACpClN,KAAKk1qB,SAAWA,EAChBl1qB,KAAKsD,QAAUA,EACftD,KAAKkN,UAAYA,G,qBASrB,SAAO7B,GAAqC,IAA5BorqB,EAA4B,wDACxC,OAAO,IAAIxB,EAAU5pqB,EAASrL,KAAKk1qB,SAAUl1qB,KAAKsD,QAAStD,KAAKkN,UAAWupqB,O,UAGnFD,EAAiBj2qB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKg2qB,GAAkB,KAAgBtC,GAAuB,KAAgB,KAAgB,KAAgB,OACzLsC,EAAiB5xqB,WAAQ,aAAmB,CAAEE,QAAS,WAAsC,OAAO,IAAI0xqB,EAAiB,aAAStC,GAAuB,aAAS,KAAS,aAAS,OAAervqB,MAAO2xqB,EAAkB5vpB,WAAY,S,sBAclO8vpB,E,8BACF,WAAY3pqB,EAAa80B,EAAmB30B,GAAS,oBACjDlN,KAAK+M,YAAcA,EACnB/M,KAAK6hC,kBAAoBA,EAEzB7hC,KAAK22qB,0BAA4B,KACjC32qB,KAAKkN,UAAYA,EACjBlN,KAAK42qB,UAAY52qB,KAAK6hC,kBAAkBv8B,OAAOtF,KAAK+M,YAAYnK,eAAe,I,oBAGnF,WAAgB,OAAO5C,KAAK42qB,UAAUlmiB,S,IACtC,SAAYnvI,GAASvB,KAAK42qB,UAAUlmiB,QAAU,YAAsBnvI,K,uBAKpE,WAAoB,OAAOvB,KAAK62qB,c,IAChC,SAAgBt1qB,GAASvB,KAAK62qB,aAAe,YAAsBt1qB,K,yBACnE,WACIvB,KAAK42qB,UAAU11pB,UAGXlhB,KAAK22qB,4BACL32qB,KAAK22qB,0BAA0B7npB,QAC/B9uB,KAAK22qB,0BAA4B,Q,gCAGzC,WACI32qB,KAAK42qB,UAAUnB,gBACXz1qB,KAAK82qB,aACL92qB,KAAK+2qB,kB,uBAGb,WACS/2qB,KAAK42qB,UAAU32pB,eAChBjgB,KAAK42qB,UAAUnB,kB,yBAGvB,SAAYxwqB,GACR,IAAM+xqB,EAAoB/xqB,EAAO,YAC7B+xqB,IAAsBA,EAAkBz7gB,aAAev7J,KAAK82qB,aAC5D92qB,KAAK42qB,UAAU32pB,eACfjgB,KAAK+2qB,kB,2BAGb,WACI,IAAIpsqB,EAAIC,EAGF6f,EAA0C,QAAzB9f,EAAK3K,KAAKkN,iBAA8B,IAAPvC,OAAgB,EAASA,EAAG8f,cACpFzqB,KAAK22qB,2BACkG,QAAjG/rqB,EAAK6f,aAAqD,EAASA,EAAcuY,kBAA+B,IAAPp4B,OAAgB,EAASA,EAAG6f,gBAAkBA,EAC7JzqB,KAAK42qB,UAAUj0oB,mC,UAGvB+zoB,EAAan2qB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKk2qB,GAAc,KAAyB,KAAoB,KAAyBF,GAAmB,KAAyB,OACxME,EAAaj2qB,UAAO,KAAyB,CAAEC,KAAMg2qB,EAAc/1qB,UAAW,CAAC,CAAC,GAAI,eAAgB,KAAMwB,OAAQ,CAAEuuI,QAAS,CAAC,eAAgB,WAAYomiB,YAAa,CAAC,0BAA2B,gBAAkBp+pB,SAAU,CAAC,gBAAiBpW,SAAU,CAAC,Q,KAsGjN,oBAAXs8G,SAA4BA,Q,IAiNtDq4jB,EAA+B,IAAI,IAAe,uBAAwB,CAC5ErwpB,WAAY,OACZ9hB,QAGJ,WACI,OAAO,QAGLoyqB,EAAiC,IAAI,IAAe,kC,iBASpDC,E,8BACF,WAAYC,EAAc9zqB,EAAS4J,EAAW44B,GAAe,oBACzD9lC,KAAKsD,QAAUA,EACftD,KAAK8lC,gBAAkBA,EAIvB9lC,KAAKkN,UAAYA,EACjBlN,KAAKq3qB,aAAeD,GAAgBp3qB,KAAKs3qB,sB,uBAE7C,SAASt9oB,GAAgB,QAEjB23V,EACAn0U,EAHiB,OACf1W,EAAiB9mC,KAAK8lC,gBADP,mBAAJjmC,EAAI,iCAAJA,EAAI,kBA0BrB,OAtBoB,IAAhBA,EAAKsE,QAAmC,iBAAZtE,EAAK,GACjC29C,EAAW39C,EAAK,IAGf8xX,EAAwB9xX,EADxB,GACY29C,EAAY39C,EADxB,IAGLG,KAAK0Q,QACLwzB,aAAalkC,KAAKu3qB,kBACb5lT,IACDA,EACK7qV,GAAkBA,EAAe6qV,WAAc7qV,EAAe6qV,WAAa,UAEpE,MAAZn0U,GAAoB1W,IACpB0W,EAAW1W,EAAe0W,UAG9Bx9C,KAAKq3qB,aAAaxoqB,aAAa,YAAa8iX,GAMrC3xX,KAAKsD,QAAQ+nB,kBAAkB,WAClC,OAAO,IAAI9mB,QAAQ,SAAAC,GACf0/B,aAAa,EAAKqzoB,kBAClB,EAAKA,iBAAmB3yoB,WAAW,WAC/B,EAAKyyoB,aAAa7jkB,YAAcx5E,EAChCx1B,IACwB,iBAAbg5C,IACP,EAAK+5nB,iBAAmB3yoB,WAAW,kBAAM,EAAKl0B,SAAS8sC,KAE5D,W,mBASf,WACQx9C,KAAKq3qB,eACLr3qB,KAAKq3qB,aAAa7jkB,YAAc,M,yBAGxC,WACItvE,aAAalkC,KAAKu3qB,kBACdv3qB,KAAKq3qB,cAAgBr3qB,KAAKq3qB,aAAa32pB,aACvC1gB,KAAKq3qB,aAAa32pB,WAAWe,YAAYzhB,KAAKq3qB,cAC9Cr3qB,KAAKq3qB,aAAe,Q,gCAG5B,WAKI,IAJA,IAAMt1S,EAAe,6BACfy1S,EAAmBx3qB,KAAKkN,UAAUuqqB,uBAAuB11S,GACzD21S,EAAS13qB,KAAKkN,UAAU2K,cAAc,OAEnChQ,EAAI,EAAGA,EAAI2vqB,EAAiBrzqB,OAAQ0D,IACzC2vqB,EAAiB3vqB,GAAG6Y,WAAWe,YAAY+1pB,EAAiB3vqB,IAOhE,OALA6vqB,EAAO/0qB,UAAUE,IAAIk/X,GACrB21S,EAAO/0qB,UAAUE,IAAI,uBACrB60qB,EAAO7oqB,aAAa,cAAe,QACnC6oqB,EAAO7oqB,aAAa,YAAa,UACjC7O,KAAKkN,UAAU41B,KAAKhrB,YAAY4/pB,GACzBA,M,UAGfP,EAAc52qB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAK22qB,GAAe,KAAgBF,EAA8B,GAAI,KAAgB,KAAgB,KAAgB,KAAW,KAAgBC,EAAgC,KACtPC,EAAcvyqB,WAAQ,aAAmB,CAAEE,QAAS,WAAmC,OAAO,IAAIqyqB,EAAc,aAASF,EAA8B,GAAI,aAAS,KAAS,aAAS,KAAW,aAASC,EAAgC,KAAQryqB,MAAOsyqB,EAAevwpB,WAAY,S,sBA4B9Q+wpB,E,8BACF,WAAY5qqB,EAAas/W,EAAgBjgL,EAAkB9oM,GAAO,oBAC9DtD,KAAK+M,YAAcA,EACnB/M,KAAKqsX,eAAiBA,EACtBrsX,KAAKosM,iBAAmBA,EACxBpsM,KAAKsD,QAAUA,EACftD,KAAK43qB,YAAc,U,uBAGvB,WAAmB,OAAO53qB,KAAK43qB,a,IAC/B,SAAer2qB,GAAK,WAChBvB,KAAK43qB,YAAwB,QAAVr2qB,GAA6B,cAAVA,EAAwBA,EAAQ,SAC7C,QAArBvB,KAAK43qB,YACD53qB,KAAKmjI,gBACLnjI,KAAKmjI,cAAcvtH,cACnB5V,KAAKmjI,cAAgB,MAGnBnjI,KAAKmjI,gBACXnjI,KAAKmjI,cAAgBnjI,KAAKsD,QAAQ+nB,kBAAkB,WAChD,OAAO,EAAK+gL,iBACP9+D,QAAQ,EAAKvgI,aACb7I,UAAU,WAEX,IAAM2zqB,EAAc,EAAK9qqB,YAAYnK,cAAc4wG,YAG/CqkkB,IAAgB,EAAKC,yBACrB,EAAKzrT,eAAe/lC,SAASuxV,EAAa,EAAKD,aAC/C,EAAKE,uBAAyBD,U,yBAMlD,WACQ73qB,KAAKmjI,eACLnjI,KAAKmjI,cAAcvtH,kB,UAI/B+hqB,EAAYp3qB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKm3qB,GAAa,KAAyB,KAAoB,KAAyBR,GAAgB,KAAyB,KAAyB,KAAyB,OACpPQ,EAAYl3qB,UAAO,KAAyB,CAAEC,KAAMi3qB,EAAah3qB,UAAW,CAAC,CAAC,GAAI,cAAe,KAAMwB,OAAQ,CAAEwvX,WAAY,CAAC,cAAe,eAAiBj5W,SAAU,CAAC,iB,KA6BzK,SAASq/pB,EAAgCzvpB,GAKrC,OAAyB,IAAlBA,EAAMk8Q,QAGjB,SAASwzY,EAAiC1vpB,GACtC,IAAMuoI,EAASvoI,EAAMwmI,SAAWxmI,EAAMwmI,QAAQ,IACzCxmI,EAAMymI,gBAAkBzmI,EAAMymI,eAAe,GAKlD,SAAS8B,IAA+B,IAAtBA,EAAMr9H,YAAuC,MAAjBq9H,EAAMonhB,SAAqC,IAAlBpnhB,EAAMonhB,SACvD,MAAjBpnhB,EAAMqnhB,SAAqC,IAAlBrnhB,EAAMqnhB,SAYxC,IAEMC,EAAgC,IAAI,IAAe,qCAKnDC,EAA8B,YAAgC,CAChE5zhB,SAAS,EACTwS,SAAS,I,kBAGPqhhB,E,8BACF,WAAY/0qB,EAAS6J,EAErBw9B,EAAU3iB,GAAO,+BACbhoB,KAAKsD,QAAUA,EACftD,KAAKmN,UAAYA,EAEjBnN,KAAK0kM,QAAU,KAEf1kM,KAAKs4qB,gBAAiB,EAEtBt4qB,KAAKu4qB,aAAe,IAAI9qqB,IAExBzN,KAAKw4qB,uBAAyB,EAO9Bx4qB,KAAKy4qB,4BAA8B,IAAIhrqB,IAKvCzN,KAAK04qB,yBAA2B,WAE5B,EAAKC,iBAAmB,KACxB,EAAKC,+BAA+B,aAMxC54qB,KAAK64qB,2BAA6B,SAACvwpB,GAG/B,IAAK,EAAKqwpB,iBAAkB,CAGxB,IAAMpypB,EAASwxpB,EAAgCzvpB,GAAS,WAAa,QACrE,EAAKswpB,+BAA+BrypB,KAO5CvmB,KAAK84qB,4BAA8B,SAACxwpB,GAG3B0vpB,EAAiC1vpB,GAU5B,EAAKqwpB,kBACX,EAAKC,+BAA+B,aAPR,MAAxB,EAAKG,iBACL70oB,aAAa,EAAK60oB,iBAEtB,EAAKJ,iBAAmBlvS,GAAUnhX,GAClC,EAAKywpB,gBAAkBn0oB,WAAW,kBAAM,EAAK+zoB,iBAAmB,MAvExD,OAiFhB34qB,KAAKg5qB,qBAAuB,WAGxB,EAAKV,gBAAiB,EACtB,EAAKW,sBAAwBr0oB,WAAW,kBAAM,EAAK0zoB,gBAAiB,KAMxEt4qB,KAAKk5qB,8BAAgC,SAAC5wpB,GAIlC,IAHA,IAAMkE,EAASi9W,GAAUnhX,GACnB+jB,EAAyB,UAAf/jB,EAAM5nB,KAAmB,EAAK+vK,SAAW,EAAKC,QAErDrlK,EAAUmhB,EAAQnhB,EAASA,EAAUA,EAAQu9B,cAClDyD,EAAQnX,KAAK,EAAM5M,EAAOjd,IAGlCrL,KAAKkN,UAAYy9B,EACjB3qC,KAAKm5qB,gBAAkBnxpB,aAAyC,EAASA,EAAQoxpB,gBAAkB,G,sBAEvG,SAAQ/tqB,GAA8B,IAArBguqB,EAAqB,wDAC5Bz2qB,EAAgB,YAAcyI,GAEpC,IAAKrL,KAAKmN,UAAU8K,WAAwC,IAA3BrV,EAAc+E,SAC3C,OAAO,YAAG,MAKd,IAAM4Z,EAAW,YAAe3e,IAAkB5C,KAAKs5qB,eACjDC,EAAav5qB,KAAKu4qB,aAAarmqB,IAAItP,GAEzC,GAAI22qB,EAOA,OANIF,IAIAE,EAAWF,eAAgB,GAExBE,EAAWjzf,QAGtB,IAAMj2G,EAAO,CACTgpmB,cAAeA,EACf/yf,QAAS,IAAI,IACb/kK,YAIJ,OAFAvhB,KAAKu4qB,aAAalkqB,IAAIzR,EAAeytE,GACrCrwE,KAAKw5qB,yBAAyBnpmB,GACvBA,EAAKi2G,U,4BAEhB,SAAej7K,GACX,IAAMzI,EAAgB,YAAcyI,GAC9BouqB,EAAcz5qB,KAAKu4qB,aAAarmqB,IAAItP,GACtC62qB,IACAA,EAAYnzf,QAAQxiL,WACpB9D,KAAK05qB,YAAY92qB,GACjB5C,KAAKu4qB,aAAahmqB,OAAO3P,GACzB5C,KAAK25qB,uBAAuBF,M,sBAGpC,SAASpuqB,EAASynG,EAAQ9qF,GAAO,WACvBplB,EAAgB,YAAcyI,GAKhCzI,IAJmB5C,KAAKs5qB,eAAe7upB,cAKvCzqB,KAAK45qB,wBAAwBh3qB,GACxByQ,QAAQ,0CAA4B,EAAKwmqB,eAAjC,KAAgE/mkB,EAAhE,SAGb9yG,KAAK44qB,+BAA+B9lkB,GAED,mBAAxBlwG,EAAcksB,OACrBlsB,EAAcksB,MAAM9G,M,yBAIhC,WAAW,WACPhoB,KAAKu4qB,aAAallqB,QAAQ,SAAC8/nB,EAAO9noB,GAAR,OAAoB,EAAKwnG,eAAexnG,O,0BAGtE,WACI,OAAOrL,KAAKkN,WAAay9B,W,wBAG7B,WAEI,OADY3qC,KAAKs5qB,eACNnopB,aAAehG,S,0BAE9B,SAAa9f,EAASwc,EAAWiypB,GACzBA,EACAzuqB,EAAQ1I,UAAUE,IAAIglB,GAGtBxc,EAAQ1I,UAAU6I,OAAOqc,K,6BAGjC,SAAgBS,GAOZ,OAAItoB,KAAK0kM,QACE1kM,KAAK0kM,QAEZ1kM,KAAKs4qB,gBAAkBt4qB,KAAK+5qB,iBACrB/5qB,KAAK+5qB,iBAEP/5qB,KAAKg6qB,kBAAkB1xpB,GACrB,QAGA,Y,yBAQf,SAAYjd,EAASynG,GACjB9yG,KAAK4poB,aAAav+nB,EAAS,gBAAiBynG,GAC5C9yG,KAAK4poB,aAAav+nB,EAAS,oBAAgC,UAAXynG,GAChD9yG,KAAK4poB,aAAav+nB,EAAS,uBAAmC,aAAXynG,GACnD9yG,KAAK4poB,aAAav+nB,EAAS,oBAAgC,UAAXynG,GAChD9yG,KAAK4poB,aAAav+nB,EAAS,sBAAkC,YAAXynG,K,4CAOtD,SAA+BA,GAAM,WACjC9yG,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,EAAKq5K,QAAU5xF,EACa,IAAxB,EAAKqmkB,iBAIL,EAAKc,iBAAmBr1oB,WAAW,kBAAM,EAAK8/J,QAAU,MAAM,Q,+BAS1E,SAAkBp8K,GAkBd,IAAM4pnB,EAAczoQ,GAAUnhX,GAC9B,OAAOtoB,KAAK24qB,4BAA4B1/gB,MAAQi5e,aAAuBj5e,OAClEi5e,IAAgBlyoB,KAAK24qB,kBAAoBzmC,EAAYtlnB,SAAS5sB,KAAK24qB,qB,sBAO5E,SAASrwpB,EAAOjd,GAOZ,IAAMouqB,EAAcz5qB,KAAKu4qB,aAAarmqB,IAAI7G,GACrCouqB,IAAiBA,EAAYJ,eAAiBhuqB,IAAYo+X,GAAUnhX,KAGzEtoB,KAAK65qB,eAAexuqB,EAASrL,KAAKk6qB,gBAAgB5xpB,GAAQmxpB,K,qBAO9D,SAAQnxpB,EAAOjd,GAGX,IAAMouqB,EAAcz5qB,KAAKu4qB,aAAarmqB,IAAI7G,IACrCouqB,GAAgBA,EAAYJ,eAAiB/wpB,EAAMghG,yBAAyB2vC,MAC7E5tJ,EAAQuhB,SAAStE,EAAMghG,iBAG3BtpH,KAAK05qB,YAAYruqB,GACjBrL,KAAKm6qB,YAAYV,EAAYnzf,QAAS,S,yBAE1C,SAAYA,EAASxzE,GACjB9yG,KAAKsD,QAAQgpC,IAAI,kBAAMg6I,EAAQziL,KAAKivG,O,sCAExC,SAAyB2mkB,GAAW,WAChC,GAAKz5qB,KAAKmN,UAAU8K,UAApB,CAGA,IAAMsJ,EAAWk4pB,EAAYl4pB,SACvB64pB,EAAyBp6qB,KAAKy4qB,4BAA4BvmqB,IAAIqP,IAAa,EAC5E64pB,GACDp6qB,KAAKsD,QAAQ+nB,kBAAkB,WAC3B9J,EAAS+J,iBAAiB,QAAS,EAAK4tpB,8BAA+Bd,GACvE72pB,EAAS+J,iBAAiB,OAAQ,EAAK4tpB,8BAA+Bd,KAG9Ep4qB,KAAKy4qB,4BAA4BpkqB,IAAIkN,EAAU64pB,EAAyB,GAElC,KAAhCp6qB,KAAKw4qB,wBAGPx4qB,KAAKsD,QAAQ+nB,kBAAkB,WAC3B,IAAMsf,EAAW,EAAK2uoB,eAChBnupB,EAAS,EAAKC,aACpBuf,EAASrf,iBAAiB,UAAW,EAAKotpB,yBAA0BN,GACpEztoB,EAASrf,iBAAiB,YAAa,EAAKutpB,2BAA4BT,GACxEztoB,EAASrf,iBAAiB,aAAc,EAAKwtpB,4BAA6BV,GAC1EjtpB,EAAOG,iBAAiB,QAAS,EAAK0tpB,2B,oCAIlD,SAAuBS,GACnB,IAAMl4pB,EAAWk4pB,EAAYl4pB,SAC7B,GAAIvhB,KAAKy4qB,4BAA4BrkqB,IAAImN,GAAW,CAChD,IAAM64pB,EAAyBp6qB,KAAKy4qB,4BAA4BvmqB,IAAIqP,GAChE64pB,EAAyB,EACzBp6qB,KAAKy4qB,4BAA4BpkqB,IAAIkN,EAAU64pB,EAAyB,IAGxE74pB,EAASoK,oBAAoB,QAAS3rB,KAAKk5qB,8BAA+Bd,GAC1E72pB,EAASoK,oBAAoB,OAAQ3rB,KAAKk5qB,8BAA+Bd,GACzEp4qB,KAAKy4qB,4BAA4BlmqB,OAAOgP,IAIhD,MAAOvhB,KAAKw4qB,uBAAwB,CAChC,IAAM,EAAWx4qB,KAAKs5qB,eAChB,EAASt5qB,KAAKorB,aACpB,EAASO,oBAAoB,UAAW3rB,KAAK04qB,yBAA0BN,GACvE,EAASzspB,oBAAoB,YAAa3rB,KAAK64qB,2BAA4BT,GAC3E,EAASzspB,oBAAoB,aAAc3rB,KAAK84qB,4BAA6BV,GAC7E,EAAOzspB,oBAAoB,QAAS3rB,KAAKg5qB,sBAEzC90oB,aAAalkC,KAAKi5qB,uBAClB/0oB,aAAalkC,KAAK+4qB,iBAClB70oB,aAAalkC,KAAKi6qB,qB,4BAI1B,SAAe5uqB,EAASynG,EAAQ2mkB,GAC5Bz5qB,KAAK05qB,YAAYruqB,EAASynG,GAC1B9yG,KAAKm6qB,YAAYV,EAAYnzf,QAASxzE,GACtC9yG,KAAK+5qB,iBAAmBjnkB,I,qCAO5B,SAAwBznG,GACpB,IAAMk2H,EAAU,GAMhB,OALAvhI,KAAKu4qB,aAAallqB,QAAQ,SAACg9D,EAAM0rF,IACzBA,IAAmB1wJ,GAAYglE,EAAKgpmB,eAAiBt9gB,EAAenvI,SAASvhB,KAC7Ek2H,EAAQ39H,KAAK,CAACm4J,EAAgB1rF,MAG/BkxD,M,UAGf82iB,EAAa93qB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAK63qB,GAAc,KAAgB,KAAgB,KAAgB,KAAkB,KAAgB,IAAU,GAAI,KAAgBF,EAA+B,KACrOE,EAAazzqB,WAAQ,aAAmB,CAAEE,QAAS,WAAkC,OAAO,IAAIuzqB,EAAa,aAAS,KAAS,aAAS,KAAW,aAAS,IAAU,GAAI,aAASF,EAA+B,KAAQtzqB,MAAOwzqB,EAAczxpB,WAAY,S,KAsB3P,SAAS6iX,GAAUnhX,GAGf,OAAQA,EAAMiE,aAAejE,EAAMiE,eAAe,GAAKjE,EAAMkE,O,sBAW3D6tpB,E,8BACF,WAAYttqB,EAAag1B,GAAa,oBAClC/hC,KAAK+M,YAAcA,EACnB/M,KAAK+hC,cAAgBA,EACrB/hC,KAAKs6qB,eAAiB,IAAI,K,8BAE9B,WAAe,WACLjvqB,EAAUrL,KAAK+M,YAAYnK,cACjC5C,KAAKu6qB,qBAAuBv6qB,KAAK+hC,cAAc2wE,QAAQrnG,EAA8B,IAArBA,EAAQ1D,UAAkB0D,EAAQ09B,aAAa,2BAC1G7kC,UAAU,SAAA4uG,GAAM,OAAI,EAAKwnkB,eAAep4pB,KAAK4wF,O,yBAEtD,WACI9yG,KAAK+hC,cAAc8wE,eAAe7yG,KAAK+M,aACnC/M,KAAKu6qB,sBACLv6qB,KAAKu6qB,qBAAqB3kqB,kB,UAItCykqB,EAAgB95qB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK65qB,GAAiB,KAAyB,KAAoB,KAAyBhC,MACrKgC,EAAgB55qB,UAAO,KAAyB,CAAEC,KAAM25qB,EAAiB15qB,UAAW,CAAC,CAAC,GAAI,yBAA0B,IAAK,CAAC,GAAI,yBAA0B,KAAMwhB,QAAS,CAAEm4pB,eAAgB,oB,KAyBnLE,GAA2B,mCAE3BC,GAA2B,mCAE3BC,GAAsC,2B,kBAYtCC,E,8BACF,WAAYxtqB,EAAWw9B,GAAQ,oBAC3B3qC,KAAKmN,UAAYA,EACjBnN,KAAKkN,UAAYy9B,G,kCAGrB,WACI,IAAK3qC,KAAKmN,UAAU8K,UAChB,OAAO,EAKX,IAAMqkL,EAAct8L,KAAKkN,UAAU2K,cAAc,OACjDykL,EAAY/wL,MAAMuqD,gBAAkB,aACpCwmI,EAAY/wL,MAAMvB,SAAW,WAC7BhK,KAAKkN,UAAU41B,KAAKhrB,YAAYwkL,GAKhC,IAAMs+e,EAAiB56qB,KAAKkN,UAAUikB,aAAehG,OAC/CooD,EAAiBqnmB,GAAkBA,EAAepnmB,iBACpDonmB,EAAepnmB,iBAAiB8oH,GAAe,KAC7Cu+e,GAAiBtnmB,GAAiBA,EAAczd,iBAAmB,IAAIt0D,QAAQ,KAAM,IAE3F,OADAxB,KAAKkN,UAAU41B,KAAKrhB,YAAY66K,GACxBu+e,GACJ,IAAK,aAAc,OAAO,EAC1B,IAAK,mBAAoB,OAAO,EAEpC,OAAO,I,kDAGX,WACI,GAAI76qB,KAAKmN,UAAU8K,WAAajY,KAAKkN,UAAU41B,KAAM,CACjD,IAAMg4oB,EAAc96qB,KAAKkN,UAAU41B,KAAKngC,UAExCm4qB,EAAYtvqB,OAAOkvqB,IACnBI,EAAYtvqB,OAAOgvqB,IACnBM,EAAYtvqB,OAAOivqB,IACnB,IAAM7npB,EAAO5yB,KAAK+6qB,sBACL,IAATnopB,GACAkopB,EAAYj4qB,IAAI63qB,IAChBI,EAAYj4qB,IAAI23qB,KAEF,IAAT5npB,IACLkopB,EAAYj4qB,IAAI63qB,IAChBI,EAAYj4qB,IAAI43qB,U,UAKhCE,EAAyBp6qB,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAKm6qB,GAA0B,KAAgB,KAAkB,KAAgB,OAC5KA,EAAyB/1qB,WAAQ,aAAmB,CAAEE,QAAS,WAA8C,OAAO,IAAI61qB,EAAyB,aAAS,KAAW,aAAS,OAAe91qB,MAAO81qB,EAA0B/zpB,WAAY,S,uBAoBpOo0pB,E,YACF,WAAYv/e,GAAwB,oBAChCA,EAAyBG,yC,OAGjCo/e,EAAWz6qB,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKw6qB,GAAY,KAAgBL,MAChGK,EAAW9hqB,UAAO,KAAwB,CAAExY,KAAMs6qB,IAClDA,EAAW7hqB,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAAC,IAAgB,Q,4BC9wE9D,SAAUiJ,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFL,MACzF,KAEJM,YACI,6DAA6DN,MAAM,KACvE0U,kBAAkB,EAClB1T,SAAU,wDAAqDhB,MAAM,KACrEiB,cAAe,kCAA+BjB,MAAM,KACpDkB,YAAa,0BAAuBlB,MAAM,KAC1CmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,uBACTC,SAAU,sCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJ/B,EAAG,aACHgC,GAAI,YACJC,EAAG,WACHC,GAAI,WACJhN,EAAG,UACHiN,GAAI,WACJC,EAAG,UACHC,GAAI,WACJC,EAAG,eACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxDyB/gB,CAAQ,EAAQ,U,kCCP1D,gDACe,SAASm2qB,EAA2B9soB,EAAG+soB,GACpD,IAAI7wd,EAEJ,GAAsB,oBAAXj7K,QAAgD,MAAtBjB,EAAEiB,OAAO41F,UAAmB,CAC/D,GAAIz6H,MAAMyL,QAAQm4B,KAAOk8K,EAAK,YAA2Bl8K,KAAO+soB,GAAkB/soB,GAAyB,iBAAbA,EAAEhqC,OAAqB,CAC/GkmN,IAAIl8K,EAAIk8K,GACZ,IAAIxiN,EAAI,EAEJ+4M,EAAI,aAER,MAAO,CACLh8L,EAAGg8L,EACH7oK,EAAG,WACD,OAAIlwC,GAAKsmC,EAAEhqC,OAAe,CACxBywB,MAAM,GAED,CACLA,MAAM,EACNrzB,MAAO4sC,EAAEtmC,OAGbosB,EAAG,SAAW+B,GACZ,MAAMA,GAERiD,EAAG2nL,GAIP,MAAM,IAAIpuK,UAAU,yIAGtB,IAEI7V,EAFAw+oB,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLx2pB,EAAG,WACDylM,EAAKl8K,EAAEiB,OAAO41F,aAEhBjtF,EAAG,WACD,IAAIyvD,EAAO6iH,EAAGxmN,OAEd,OADAs3qB,EAAmB3zkB,EAAK5yE,KACjB4yE,GAETvzE,EAAG,SAAWonpB,GACZD,GAAS,EACTz+oB,EAAM0+oB,GAERpipB,EAAG,WACD,IACOkipB,GAAoC,MAAhB9wd,EAAW,QAAWA,EAAW,SAC1D,QACA,GAAI+wd,EAAQ,MAAMz+oB,O,sBC1CjB,SAAUta,GAAU,aAIzB,IAAI0oL,EAAQ,CACRlmL,GAAI,0CAAqCtC,MAAM,KAC/CO,EAAG,0DAAiCP,MAAM,KAC1CuC,GAAI,0DAAiCvC,MAAM,KAC3CwC,EAAG,sCAAiCxC,MAAM,KAC1CyC,GAAI,sCAAiCzC,MAAM,KAC3CvK,EAAG,kCAA6BuK,MAAM,KACtC0C,GAAI,kCAA6B1C,MAAM,KACvC6C,EAAG,oEAAiC7C,MAAM,KAC1C8C,GAAI,oEAAiC9C,MAAM,KAC3C+C,EAAG,wBAAwB/C,MAAM,KACjCgD,GAAI,wBAAwBhD,MAAM,MAKtC,SAASQ,EAAOiqL,EAAOtnL,EAAQs3I,GAC3B,OAAIA,EAEOt3I,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKsnL,EAAM,GAAKA,EAAM,GAI5DtnL,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKsnL,EAAM,GAAKA,EAAM,GAG3E,SAASD,EAAuBrnL,EAAQs3I,EAAergJ,GACnD,OAAO+I,EAAS,IAAM3C,EAAOgoL,EAAMpuL,GAAM+I,EAAQs3I,GAErD,SAASs+gB,EAAyB51pB,EAAQs3I,EAAergJ,GACrD,OAAOoG,EAAOgoL,EAAMpuL,GAAM+I,EAAQs3I,GAM7B36I,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,gIAAuGL,MAC3G,KAEJM,YAAa,4DAAkDN,MAAM,KACrEgB,SACI,oFAA0EhB,MACtE,KAERiB,cAAe,kBAAkBjB,MAAM,KACvCkB,YAAa,kBAAkBlB,MAAM,KACrCmB,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,4BACTC,QAAS,yBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,+CACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNC,EAnCR,SAAyBc,EAAQs3I,GAC7B,OAAOA,EAAgB,sBAAmB,iCAmCtCn4I,GAAIkoL,EACJjqL,EAAGw4pB,EACHx2pB,GAAIioL,EACJhoL,EAAGu2pB,EACHt2pB,GAAI+nL,EACJ/0L,EAAGsjqB,EACHr2pB,GAAI8nL,EACJ3nL,EAAGk2pB,EACHj2pB,GAAI0nL,EACJznL,EAAGg2pB,EACH/1pB,GAAIwnL,GAERvnL,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3FyB/gB,CAAQ,EAAQ,U,kcCI1D,aASC,aAEC9E,KAAKinW,iBAAmB,IAAIxjW,EAAA,E,OAO7B,YAAA83qB,WAAA,SAAWC,GACNA,GACH5jpB,aAAaW,QAAQ,eAAgBiB,KAAKC,UAAU+hpB,KAOtD,YAAAC,eAAA,WACC,IAAMrjpB,EAASR,aAAaC,QAAQ,gBACpC,OAAO2B,KAAKW,MAAM/B,IAMnB,YAAA8toB,YAAA,WACCtuoB,aAAa4jI,WAAW,iBAOzB,YAAAp2H,UAAA,SAAU+rG,GAKT,OAFAnxI,KAAKw7qB,aAAex7qB,KAAKy7qB,iBAErBtqiB,EAEI,MAAenxI,KAAKw7qB,aAAcrqiB,GAGnCnxI,KAAKw7qB,cAQb,YAAAE,UAAA,SAAUn6qB,EAAY6/M,GACrBphN,KAAKw7qB,aAAe,gBAAMx7qB,KAAKw7qB,aAAcj6qB,GAEzC6/M,GACHphN,KAAKu7qB,WAAWv7qB,KAAKw7qB,cAItBx7qB,KAAKinW,iBAAiBpjW,KAAK7D,KAAKw7qB,eAMjC,YAAAxvW,QAAA,WACC,IAII2vW,EAJEC,EAAoB,MAAe57qB,KAAKw7qB,aAAc,mBAEtDK,EAAa,MAAe77qB,KAAKw7qB,aAAc,aAarD,MAV0B,iBAAfK,IACVF,EAAOE,GAEkB,iBAAfA,IACVF,EAAO,MAAeE,EAAYD,EAAoB,KAMhDD,GAMR,YAAAG,cAAA,WACC,IAAIH,EAAO,MAAe37qB,KAAKw7qB,aAAc,oBAI7C,YAHoB,IAATG,IACVA,EAAO37qB,KAAKgsU,WAEN2vW,EAAO,IAOf,YAAAv0U,YAAA,SAAYhvU,GACXp4B,KAAKw7qB,aAAex7qB,KAAKy7qB,iBAEpBz7qB,KAAKw7qB,cAAgB,MAAex7qB,KAAKw7qB,aAAc,UAAYpjpB,EAAO2jpB,OAC9E/7qB,KAAKw7qB,aAAepjpB,GAErBp4B,KAAKu7qB,WAAWv7qB,KAAKw7qB,eAMtB,YAAAQ,cAAA,WAGC,OAFAh8qB,KAAKw7qB,aAAex7qB,KAAKy7qB,iBACzBz7qB,KAAKinW,iBAAiBpjW,KAAK7D,KAAKw7qB,cACzBx7qB,KAAKw7qB,c,yBA3HDS,EAAmB,Q,sCAAnBA,M,EADb,G,8RCXA,I,YCUA,aAOC,WAAoB9kpB,GAAA,KAAAA,O,OAKpB,YAAA+kpB,YAAA,WACC,OAAOl8qB,KAAKm3B,KAAKjlB,IAfO,a,sCAGbiqqB,GAAgB,Y,yBAAhBA,EAAgB,QAAhBA,EAAgB,Y,EAD7B,G,YCCA,aAYC,WAAoB/+f,GAAA,KAAAA,YAPZ,KAAAg/f,QAAe,GAStBp8qB,KAAKo9K,UAAUsqe,SAAS,CAAC,OAGzB1npB,KAAKo9K,UAAUi/f,eAAe,M,OAQ/B,YAAAC,iBAAA,W,IAAA,WAAiB,kDAChB,IAAMhynB,EAAU,YAAIzqD,GAEpByqD,EAAQj3C,QAAQ,SAAA8xC,GAGf,EAAKi4H,UAAUm/f,eAAep3nB,EAAO4/lB,KAAM5/lB,EAAOr1C,MAAM,GAExD,EAAKssqB,QAAQx4qB,KAAKuhD,EAAO4/lB,QAI1B/kpB,KAAKo9K,UAAUsqe,SAAS1npB,KAAKo8qB,UAQ9B,YAAAvwW,YAAA,SAAYk5U,GACPA,IACH/kpB,KAAKo9K,UAAUo/f,IAAIx8qB,KAAKo9K,UAAUq/f,kBAClCz8qB,KAAKo9K,UAAUo/f,IAAIz3B,GACnBntnB,aAAaW,QAAQ,WAAYwsnB,KAOnC,YAAAj5U,oBAAA,WACC,OAAOl0S,aAAaC,QAAQ,aAAe73B,KAAKo9K,UAAUq/f,kB,sCAtD/CC,GAAkB,Y,yBAAlBA,EAAkB,QAAlBA,EAAkB,qBAFlB,S,EADb,GCNA,0BAGC,KAAAC,YAAoC,IAAIjuqB,EAAA,EAAqB,IAC7D,KAAAkuqB,WAAkB,G,OASlB,YAAAC,WAAA,SAAW17qB,EAAMkK,GAChB,IAAM0S,EAAM,GACZA,EAAI5c,GAAQkK,EAEZrL,KAAK48qB,WAAapgqB,OAAOuqB,OAAO,GAAI/mC,KAAK48qB,WAAY7+pB,GACrD/d,KAAK28qB,YAAY94qB,KAAK7D,KAAK48qB,a,yBAjBhBE,EAAgB,Q,sCAAhBA,M,EADb,GCLA,aAoBA,OATC,SAAYxrqB,GACXtR,KAAK25B,OAASroB,EAAKyrqB,IACnB/8qB,KAAKg9qB,UAAY1rqB,EAAK2rqB,OACtBj9qB,KAAKk9qB,QAAU5rqB,EAAK6rqB,KACpBn9qB,KAAKuvU,YAAcj+T,EAAK8rqB,SACxBp9qB,KAAKsrU,aAAeh6T,EAAK45T,UACzBlrU,KAAKq9qB,aAAe/rqB,EAAKgsqB,UACzBt9qB,KAAKu9qB,UAAYjsqB,EAAKisqB,WAlBxB,G,oCCYA,aAoBA,OAVC,SAAYjsqB,GACXtR,KAAK42D,MAAQtlD,EAAKi+T,YAClBvvU,KAAKo/E,MAAO,EACZp/E,KAAK+0R,KAAOzjR,EAAK+rqB,aACjBr9qB,KAAKw3G,OAA4B,IAAnBlmG,EAAKisqB,UACnBv9qB,KAAKwd,KAAOlM,EAAKg6T,aAAe,IAAMh6T,EAAKg6T,aAAe,KAC1DtrU,KAAKw9qB,QAAU,GACfx9qB,KAAKy9qB,SAAWnsqB,EAAK0rqB,UACrBh9qB,KAAKgmB,GAAK1U,EAAKqoB,QAlBjB,GAsBA,aAWC,WACSxC,EACAC,EACAyrN,EACAtrN,GAHA,KAAAJ,OACA,KAAAC,gBACA,KAAAyrN,UACA,KAAAtrN,SAZT,KAAAmmpB,UAAoC,IAAIhvqB,EAAA,EAAuB,IACvD,KAAAivqB,cAA2C,GAsBnD,KAAAC,SAAW,IAAIlvqB,EAAA,EAAgB1O,KAAKqrU,e,OAR5B,YAAAN,UAAR,SAAkBvhP,EAAMs0E,EAASp9J,GAChCV,KAAK6iP,QAAQx3J,KAAK,CACjB7B,KAAI,EACJs0E,QAAO,EACPp9J,KAAI,KAKN,sBAAI,4BAAa,C,IAMjB,WACC,OAAOV,KAAK29qB,e,IAPb,SAAkBp8qB,GACjBvB,KAAK29qB,cAAgBp8qB,EACrBvB,KAAK69qB,WACL79qB,KAAK49qB,SAAS/5qB,KAAKtC,I,gCAWZ,YAAAs8qB,SAAR,WACC,IAAM92pB,EAAW,CAChBw9C,OAAQ,CACP00K,KAAM,GACN/gO,MAAO,IAER4lqB,MAAO,CACN7kc,KAAM,GACN/gO,MAAO,KAITlY,KAAK29qB,cAAgB39qB,KAAK29qB,cAAc9hqB,KAAK,SAAAsyB,GAAK,OAAAA,EAAE+uoB,UAEpD,IAAMa,EAAkC,GAExC/9qB,KAAK29qB,cAActqqB,QAAQ,SAAA/B,GAC1BysqB,EAAen6qB,KAAK,IAAIo6qB,EAAc1sqB,MAGvC,IAAM2sqB,EAAYF,EAAetoqB,OAAO,SAACH,EAAKm9B,EAAI5qC,GAEjD,OADAyN,EAAIm9B,EAAGzsB,IAAMne,EACNyN,GACL,IAEG4oqB,EAAY,GAClBH,EAAe1qqB,QAAQ,SAAAo/B,GACtB,IAAMo8D,EAAWkvkB,EAAeE,EAAUxroB,EAAGgroB,WAE7C,GAAoB,OAAhBhroB,EAAGgroB,WAAsB5ukB,EAM5B,OALAqvkB,EAAUt6qB,KAAK6uC,QACW,IAAtBA,EAAG+qoB,QAAQr5qB,SACdsuC,EAAG+qoB,QAAU,OAMf3ukB,EAAS2ukB,QAAU,YAAK3ukB,EAAS2ukB,SAAW,GAAK,CAAA/qoB,IACvB,IAAtBA,EAAG+qoB,QAAQr5qB,SACdsuC,EAAG+qoB,QAAU,QAIfx9qB,KAAKm+qB,WAAWD,GAChBn3pB,EAAS+2pB,MAAM5lqB,MAAQgmqB,EACvBl+qB,KAAK09qB,UAAU75qB,KAAKkjB,EAAS+2pB,MAAM5lqB,QAG5B,YAAAimqB,WAAR,SAAmBvsjB,GAAnB,WACCA,EAAUv+G,QAAQ,SAAA/B,GACb,EAAK8sqB,kBAGL9sqB,EAAKkM,KACR,EAAK4gqB,gBAAkB9sqB,EAAKkM,KAE5B,EAAK2gqB,WAAW7sqB,EAAKksqB,aAKxB,YAAA1qoB,QAAA,sBAEC,OAAO9yC,KAAKm3B,KAAKjlB,IAAiC,2BAA2BlO,KAC5E,OAAAyF,EAAA,GAAI,SAAA6kC,GACH,GAAmB,IAAfA,EAAInqC,OACP,MAAIgnB,OAAOmP,SAASuzF,OAAO0pI,SAAS,OAC7B,IAAIljO,MAAM,IAEV,EAAK02S,UAAU,GAAI,yCAAkC,UAI7D,IAAMszW,EAAoC,GAS1C,OARA/voB,EAAIj7B,QAAQ,SAAAhI,GACXgzqB,EAAOz6qB,KAAK,IAAI06qB,EAAwBjzqB,MAGrCgzqB,GAAUA,EAAOj2qB,KAAK,SAAA6wB,GAAK,OAAAA,EAAEqyS,iBAChC,EAAKD,cAAgBgzW,GAGfA,MAgBV,YAAA71jB,SAAA,SAASr0E,GAAT,WACKA,GACCn0C,KAAK29qB,cAAcv1qB,KAAK,SAAA6wB,GAAK,OAAAA,EAAEqyS,eAAiBn3R,IACnDn0C,KAAKu3B,OAAOixF,SAAS,CAACr0E,IAMvBhpB,OAAOmP,SAASC,UACa,4BAA7BpP,OAAOmP,SAASC,UAChBv6B,KAAK29qB,cAAcv1qB,KAAK,SAAA6wB,GAAK,MAAmB,4BAAnBA,EAAEqyS,eAE/BtrU,KAAKu3B,OAAOixF,SAAS,CAAC,6BAInBxoH,KAAK29qB,cAAcv1qB,KAAK,SAAA6wB,GAAK,UAAMA,EAAEqyS,eAAiB,EAAK8yW,kBAC9Dp+qB,KAAKu3B,OAAOixF,SAAS,CAACxoH,KAAKo+qB,kBAI5Bp+qB,KAAKu3B,OAAOixF,SAAS,CAAC,0B,sCAjKX+1jB,GAAgB,0C,yBAAhBA,EAAgB,QAAhBA,EAAgB,Y,EAD7B,G,YCzBA,aAUC,WAAoBtuW,GAAA,KAAAA,oBAPpB,KAAAytW,UAAoC,IAAIhvqB,EAAA,EAAuB,IAQ9D1O,KAAK69qB,W,OAMN,YAAAA,SAAA,WAEC,IAAMjsjB,EAAmB,MAAe5xH,KAAKiwU,kBAAkBi3B,WAAY,gBAC3ElnW,KAAK09qB,UAAU75qB,KAAK+tH,I,sCAnBT4sjB,GAAqB,Y,yBAArBA,EAAqB,QAArBA,EAAqB,Y,EADlC,GCCA,aAWC,WAAoBjnpB,GAAA,KAAAA,SAEnBv3B,KAAKinW,iBAAmB,IAAIxjW,EAAA,E,OAM7B,YAAAg7qB,qBAAA,SAAqBttiB,GACpB,IAAIutiB,EAAa1+qB,KAAK2+qB,SAAS3+qB,KAAKu3B,OAAO4c,KAO3C,OALIg9F,IACHutiB,GAAc,IAAMvtiB,GAId,MAAenxI,KAAK4+qB,WAAYF,IAQxC,YAAAhD,UAAA,SAAUn6qB,EAAY6/M,GACrBphN,KAAK4+qB,WAAa,gBAAM5+qB,KAAK4+qB,WAAYr9qB,GAOzCvB,KAAKinW,iBAAiBpjW,KAAK7D,KAAK4+qB,aAQjC,YAAAx3U,YAAA,SAAYhvU,GACXp4B,KAAK4+qB,WAAaxmpB,EAClBp4B,KAAKinW,iBAAiBpjW,KAAK7D,KAAK4+qB,aAOjC,YAAAD,SAAA,SAASxqoB,GAER,GAAI,IAAI+sF,OAAO,WAAWl+G,KAAKmxB,GAAM,CACpC,IAAM0qoB,EAAO1qoB,EAAI5xB,MAAM,KACvBs8pB,EAAKt2oB,OAAO,EAAG,GACf4L,EAAM0qoB,EAAK7uoB,KAAK,KAGI,KAAjBmE,EAAIpE,OAAO,KACdoE,EAAMA,EAAIoD,OAAO,IAKlB,IAAIownB,EAAWxznB,EAAI3yC,QAAQ,MAAO,KAKlC,OAJ+B,IAA3BmmqB,EAAS1+pB,QAAQ,OACpB0+pB,EAAWA,EAAS38mB,UAAU,EAAG28mB,EAAS1+pB,QAAQ,OAG5C0+pB,G,sCA9EImX,GAAiB,Y,yBAAjBA,EAAiB,QAAjBA,EAAiB,Y,EAD9B,G,YCNA,aAWC,WAAoB17f,GAAA,KAAAA,mB,OAOpB,YAAAkiH,KAAA,SAAKj6R,GACJrL,KAAKyyC,GAAKpnC,GAMX,YAAA2hL,KAAA,sBACC,IAAIhtL,KAAK++qB,QAAT,CAIA,IAAMz7f,EAAStjL,KAAKojL,iBAClBl/F,MAAM,CAAC,YAAM,CAAExiD,QAAS,MAAQ,YAAQ,IAAK,YAAM,CAAEA,QAAS,SAC9Dp8B,OAAOtF,KAAKyyC,GAAG7vC,eAEjB0gL,EAAOo2H,OAAO,WAC+B,mBAAjC,EAAKjnQ,GAAG7vC,cAAc4I,OAChC,EAAKinC,GAAG7vC,cAAc4I,SAEtB,EAAKinC,GAAG7vC,cAAc2I,MAAMwH,QAAU,OAEvC,EAAKgsqB,SAAU,IAGhBn6oB,WAAW,WAAM,OAAA0+I,EAAOC,QAAQ,O,sCA1CrBy7f,GAAmB,Y,yBAAnBA,EAAmB,QAAnBA,EAAmB,Y,EADhC,GCkBA,aAuBC,WACSznpB,EACA0npB,EACAhvW,GAHT,WACS,KAAA14S,SACA,KAAA0npB,oBACA,KAAAhvW,oBAvBT,KAAAivW,OAA2C,IAAIxwqB,EAAA,EAAiC,CAAEkoD,MAAO,GAAIn5B,KAAM,KACnG,KAAA0hpB,aAA8C,IAAIzwqB,EAAA,EAA8B,IAChF,KAAA0wqB,UAA8B,IAAI37qB,EAAA,EAG1B,KAAA47qB,kBAAyB,GACzB,KAAAC,qBAA4B,GAC5B,KAAAC,YAAmB,GAkB1B,IAAMC,EAAiB,WAUtB,GARA,EAAKZ,WAAa,EAAKK,kBAAkBR,uBAEzC,EAAKgB,YAAc,MAAe,EAAKxvW,kBAAkBi3B,WAAY,UACrE,EAAKw4U,WAAa,MAAe,EAAKzvW,kBAAkBi3B,WAAY,SAGpE,EAAKy4U,oBAED,MAAe,EAAKJ,YAAa,EAAKhopB,OAAO4c,KAChD,EAAKg0e,SAAS,EAAKo3J,YAAY,EAAKhopB,OAAO4c,UACrC,CAEN,EAAK+qoB,OAAOr7qB,KAAK,MAAe,EAAK+6qB,WAAY,SAGjD,IAAMgB,EAAgB,MAAe,EAAKhB,WAAY,kBACtD,EAAKQ,UAAUv7qB,UAA8B,IAAlB+7qB,IAAkCA,GAEzD,MAAe,EAAKP,kBAAmB,EAAK9npB,OAAO4c,KAEtD,EAAK0roB,eAAe,EAAKR,kBAAkB,EAAK9npB,OAAO4c,OAGvD,EAAKwroB,oBAED,MAAe,EAAKL,qBAAsB,EAAK/npB,OAAO4c,MACzD,EAAK2roB,kBAAkB,EAAKR,qBAAqB,EAAK/npB,OAAO4c,SAMjEqroB,IAGAx/qB,KAAKu3B,OAAOs7B,OAAO7uD,KAAK,OAAAmR,EAAA,GAAO,SAAAmT,GAAS,OAAAA,aAAiB,OAAgBpkB,UAAUs7qB,G,OAMpF,YAAAG,kBAAA,WAEC,IAAII,EAAc//qB,KAAKggrB,eAAehgrB,KAAKy/qB,aAEhB,IAAvBM,EAAY57qB,SAEf47qB,EAAc//qB,KAAKggrB,eAAehgrB,KAAK0/qB,aAKhB,IAAvBK,EAAY57qB,SAEqE,IAAjF47qB,EAAY,GAAGnpnB,MAAM3tD,QAAQ,MAAejJ,KAAK4+qB,WAAY,iBAG7DmB,EAAc,IAGf//qB,KAAKm/qB,aAAat7qB,KAAKk8qB,IAMxB,YAAAF,eAAA,SAAeE,GACd//qB,KAAKq/qB,kBAAkBr/qB,KAAKu3B,OAAO4c,KAAO4roB,EAC1C//qB,KAAKm/qB,aAAat7qB,KAAKk8qB,IAOxB,YAAAD,kBAAA,SAAkBC,GACjB//qB,KAAKs/qB,qBAAqBt/qB,KAAKu3B,OAAO4c,KAAO4roB,EAC7C,IAAMp7mB,EAAO3kE,KAAKm/qB,aAAarjjB,WAC/B97H,KAAKm/qB,aAAat7qB,KAAK8gE,EAAK3rD,OAAO+mqB,KAOpC,YAAAC,eAAA,SAAeC,GACd,IAAI9roB,EAAMn0C,KAAKi/qB,kBAAkBN,SAAS3+qB,KAAKu3B,OAAO4c,KACtDA,EAAMA,EAAI3yC,QAAQ,IAAI0/H,OAAO,KAAM,KAAM,KAEzC,IAAM6+iB,EAAc,GASpB,OARiB//qB,KAAKkgrB,QAAQD,EAAO9roB,IAAQ,IACpC9gC,QAAQ,SAAAsJ,QAEK,KADrBsjqB,EAAQA,EAAMtjqB,KACsBsjqB,EAAMrpnB,OACzCmpnB,EAAYn8qB,KAAKq8qB,KAIZF,GAQR,YAAA53J,SAAA,SAASvxd,GACR52D,KAAKu/qB,YAAYv/qB,KAAKu3B,OAAO4c,KAAOyiB,EACpC52D,KAAKk/qB,OAAOr7qB,KAAK,CAAE+yD,MAAOA,KAQ3B,YAAAspnB,QAAA,SAAQniqB,EAAKxc,GACZ,GAAmB,iBAARwc,EAAX,CAGA,IAAMozH,EAAO,GACTqiL,GAAQ,EAEN3lM,EAAS,SAAA67K,GAEd,IAAK,IAAM/sR,KAAO+sR,EAAU,CAE3B,GADAv4J,EAAKvtI,KAAK+Y,GACN+sR,EAAS/sR,KAASpb,EAAO,CAC5BiyT,GAAQ,EACR,MAED,GAA6B,iBAAlB9pB,EAAS/sR,KACnBkxG,EAAO67K,EAAS/sR,IACZ62S,GACH,MAGFriL,EAAKlyG,QAKP,OADA4uF,EAAO9vG,GACAozH,I,sCA3KIgviB,GAAgB,8B,yBAAhBA,EAAgB,QAAhBA,EAAgB,Y,EAD7B,GCjBA,aAMC,aAHQ,KAAAphlB,aAAyC,IAAIrwF,EAAA,GAAgB,GAIpE1O,KAAKogrB,SAAW,IAAIC,SAAS,CAAE3/qB,KAAM,SAAU6rH,UAAW,aAAcvyF,QAAS,gB,OAGlF,YAAAuqI,KAAA,WACCvkK,KAAK++F,aAAal7F,MAAK,GACvB7D,KAAKogrB,SAAS77gB,QAGf,YAAAyoB,KAAA,WACChtL,KAAK++F,aAAal7F,MAAK,GACvB7D,KAAKogrB,SAASpzf,QAGf,YAAAszf,aAAA,WACC,OAAOtgrB,KAAK++F,aAAax9F,O,yBApBdg/qB,EAAe,Q,sCAAfA,M,EADb,I,kLCFM,SAAUz9iB,EAAIqqE,EAAgBn4K,EAAOlxB,GACvC,OAAO,SAA6ByiB,GAChC,OAAOA,EAAO8V,KAAK,IAAImkpB,EAAWrze,EAAgBn4K,EAAOlxB,K,IAG3D08qB,E,8BACF,WAAYrze,EAAgBn4K,EAAOlxB,GAAQ,oBACvC9D,KAAKmtM,eAAiBA,EACtBntM,KAAKg1B,MAAQA,EACbh1B,KAAK8D,SAAWA,G,mBAEpB,SAAKy4B,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAIu8qB,EAAclkpB,EAAYv8B,KAAKmtM,eAAgBntM,KAAKg1B,MAAOh1B,KAAK8D,e,GAG9F28qB,E,YACF,WAAYhkpB,EAAakqI,EAAgB3xI,EAAOlxB,GAAQ,M,MAAA,2B,EACpD,K,EAAA,E,EAAA,CAAM24B,G,kBAAN,E,iGACKikpB,SAAW,IAChB,EAAKC,UAAY,IACjB,EAAKC,aAAe,IACpB,EAAKD,UAAY3rpB,GAAS,IAC1B,EAAK4rpB,aAAe98qB,GAAY,IAC5B,YAAW6iK,IACX,EAAK7+F,SAAL,EACA,EAAK44mB,SAAW/5gB,GAEXA,IACL,EAAK7+F,SAAW6+F,EAChB,EAAK+5gB,SAAW/5gB,EAAe9iK,MAAQ,IACvC,EAAK88qB,UAAYh6gB,EAAe3xI,OAAS,IACzC,EAAK4rpB,aAAej6gB,EAAe7iK,UAAY,KAfC,E,0DAkBxD,SAAMvC,GACF,IACIvB,KAAK0grB,SAASxrpB,KAAKl1B,KAAK8nE,SAAUvmE,GAEtC,MAAOo7B,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAG3B38B,KAAKy8B,YAAY54B,KAAKtC,K,oBAE1B,SAAOo7B,GACH,IACI38B,KAAK2grB,UAAUzrpB,KAAKl1B,KAAK8nE,SAAUnrC,GAEvC,MAAOA,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAG3B38B,KAAKy8B,YAAYzH,MAAM2H,K,uBAE3B,WACI,IACI38B,KAAK4grB,aAAa1rpB,KAAKl1B,KAAK8nE,UAEhC,MAAOnrC,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAG3B,OAAO38B,KAAKy8B,YAAY34B,e,CA/CJ,M,kCClB5B,SAASgvR,EAAkBtmQ,EAAQuG,GACjC,IAAK,IAAIlrB,EAAI,EAAGA,EAAIkrB,EAAM5uB,OAAQ0D,IAAK,CACrC,IAAI+9L,EAAa7yK,EAAMlrB,GACvB+9L,EAAW3xJ,WAAa2xJ,EAAW3xJ,aAAc,EACjD2xJ,EAAWloK,cAAe,EACtB,UAAWkoK,IAAYA,EAAWjoK,UAAW,GACjDnhB,OAAOu3B,eAAevnB,EAAQo5K,EAAWjpL,IAAKipL,IAInC,SAASmtF,EAAaxgP,EAAaygP,EAAYC,GAG5D,OAFID,GAAYF,EAAkBvgP,EAAY7f,UAAWsgQ,GACrDC,GAAaH,EAAkBvgP,EAAa0gP,GACzC1gP,EAbT,iC,klBCIM,E,mFACF,SAAKhW,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI,EAAmBq4B,Q,GAGjD,E,YACF,WAAYE,GAAW,M,MAAA,2B,EACnB,K,EAAA,E,EAAA,CAAMA,G,kBAAN,E,iGACKokpB,SAAU,EAFI,E,0DAIvB,SAAMt/qB,GACF,IAAI+kQ,EACAtmQ,KAAK6grB,QACLv6a,EAAO,CAACtmQ,KAAK2kE,KAAMpjE,GAGnBvB,KAAK6grB,SAAU,EAEnB7grB,KAAK2kE,KAAOpjE,EACR+kQ,GACAtmQ,KAAKy8B,YAAY54B,KAAKyiQ,O,CAfDtgG,EAAA,G,sNCajC,IAAMvmK,EAAM,CAAC,kBACPC,EAAM,CAAC,KACPohrB,EAA0B,IAAI,IAAe,2BAU7C,E,8BAMF,WAAYzuf,EAAU0uf,EAAaC,GAAW,oBAC1ChhrB,KAAKihrB,qBAAuB,IAAIx9qB,EAAA,EAEhCzD,KAAKkhrB,oBAAsBlhrB,KAAKihrB,qBAAqBj9qB,KAAK,OAAAk4B,EAAA,MAE1Dl8B,KAAKmhrB,UAAY,KACjBnhrB,KAAKohrB,UAAY/uf,EACjBryL,KAAKqhrB,aAAeN,EACpB/grB,KAAKshrB,aAAeN,G,qBAMxB,SAAOz5f,GACHvnL,KAAKmhrB,UAAY55f,EACjBvnL,KAAKuhrB,0BACLvhrB,KAAKwhrB,yB,oBAGT,WACIxhrB,KAAKihrB,qBAAqBn9qB,WAC1B9D,KAAKmhrB,UAAY,O,qCAQrB,SAAwB9uf,EAAU0uf,EAAaC,GAI3ChhrB,KAAKohrB,UAAY/uf,EACjBryL,KAAKqhrB,aAAeN,EACpB/grB,KAAKshrB,aAAeN,EACpBhhrB,KAAKuhrB,0BACLvhrB,KAAKwhrB,yB,+BAGT,WACIxhrB,KAAKwhrB,yB,iCAGT,WACIxhrB,KAAKuhrB,0BACLvhrB,KAAKwhrB,yB,+BAGT,c,qCAEA,c,2BAMA,SAAc73qB,EAAO83qB,GACbzhrB,KAAKmhrB,WACLnhrB,KAAKmhrB,UAAU/pf,eAAeztL,EAAQ3J,KAAKohrB,UAAWK,K,qCAI9D,WACSzhrB,KAAKmhrB,WAGVnhrB,KAAKmhrB,UAAUO,oBAAoB1hrB,KAAKmhrB,UAAUQ,gBAAkB3hrB,KAAKohrB,a,kCAG7E,WACI,GAAKphrB,KAAKmhrB,UAAV,CAGA,IAAMS,EAAgB5hrB,KAAKmhrB,UAAUhrf,mBAC/Bp8H,EAAW,CAAE5wD,MAAOy4qB,EAAcz4qB,MAAOC,IAAKw4qB,EAAcx4qB,KAC5DmmX,EAAevvX,KAAKmhrB,UAAUxrhB,kBAC9BkshB,EAAa7hrB,KAAKmhrB,UAAUQ,gBAC9BnS,EAAexvqB,KAAKmhrB,UAAUrrf,sBAE9Bgsf,EAAqB9hrB,KAAKohrB,UAAY,EAAK5R,EAAexvqB,KAAKohrB,UAAY,EAE/E,GAAIrnnB,EAAS3wD,IAAMy4qB,EAAY,CAE3B,IAAME,EAAkBxjqB,KAAKC,KAAK+wW,EAAevvX,KAAKohrB,WAChDY,EAAkBzjqB,KAAKukC,IAAI,EAAGvkC,KAAKG,IAAIojqB,EAAmBD,EAAaE,IAGzED,GAAqBE,IACrBF,EAAoBE,EACpBxS,EAAewS,EAAkBhirB,KAAKohrB,UACtCrnnB,EAAS5wD,MAAQoV,KAAKs7B,MAAMiooB,IAEhC/nnB,EAAS3wD,IAAMmV,KAAKukC,IAAI,EAAGvkC,KAAKG,IAAImjqB,EAAY9nnB,EAAS5wD,MAAQ44qB,IAErE,IAAME,EAAczS,EAAez1mB,EAAS5wD,MAAQnJ,KAAKohrB,UACzD,GAAIa,EAAcjirB,KAAKqhrB,cAAkC,GAAlBtnnB,EAAS5wD,MAAY,CACxD,IAAM+4qB,EAAc3jqB,KAAKC,MAAMxe,KAAKshrB,aAAeW,GAAejirB,KAAKohrB,WACvErnnB,EAAS5wD,MAAQoV,KAAKukC,IAAI,EAAGiX,EAAS5wD,MAAQ+4qB,GAC9CnonB,EAAS3wD,IAAMmV,KAAKG,IAAImjqB,EAAYtjqB,KAAKC,KAAKsjqB,GAAqBvyT,EAAevvX,KAAKqhrB,cAAgBrhrB,KAAKohrB,gBAE3G,CACD,IAAMe,EAAYponB,EAAS3wD,IAAMpJ,KAAKohrB,WAAa5R,EAAejgT,GAClE,GAAI4yT,EAAYnirB,KAAKqhrB,cAAgBtnnB,EAAS3wD,KAAOy4qB,EAAY,CAC7D,IAAMO,EAAY7jqB,KAAKC,MAAMxe,KAAKshrB,aAAea,GAAanirB,KAAKohrB,WAC/DgB,EAAY,IACZronB,EAAS3wD,IAAMmV,KAAKG,IAAImjqB,EAAY9nnB,EAAS3wD,IAAMg5qB,GACnDronB,EAAS5wD,MAAQoV,KAAKukC,IAAI,EAAGvkC,KAAKs7B,MAAMiooB,EAAoB9hrB,KAAKqhrB,aAAerhrB,KAAKohrB,cAIjGphrB,KAAKmhrB,UAAUkB,iBAAiBtonB,GAChC/5D,KAAKmhrB,UAAUmB,yBAAyBtirB,KAAKohrB,UAAYrnnB,EAAS5wD,OAClEnJ,KAAKihrB,qBAAqBp9qB,KAAK0a,KAAKs7B,MAAMiooB,S,GASlD,SAASS,EAAuCC,GAC5C,OAAOA,EAAat3pB,gB,qBAGlBu3pB,E,8BACF,iCACIzirB,KAAKohrB,UAAY,GACjBphrB,KAAKqhrB,aAAe,IACpBrhrB,KAAKshrB,aAAe,IAEpBthrB,KAAKkrB,gBAAkB,IAAI,EAA+BlrB,KAAKqyL,SAAUryL,KAAK+grB,YAAa/grB,KAAKghrB,c,qBAGpG,WAAiB,OAAOhhrB,KAAKohrB,W,IAC7B,SAAa7/qB,GAASvB,KAAKohrB,UAAY,YAAqB7/qB,K,uBAK5D,WAAoB,OAAOvB,KAAKqhrB,c,IAChC,SAAgB9/qB,GAASvB,KAAKqhrB,aAAe,YAAqB9/qB,K,uBAIlE,WAAoB,OAAOvB,KAAKshrB,c,IAChC,SAAgB//qB,GAASvB,KAAKshrB,aAAe,YAAqB//qB,K,yBAClE,WACIvB,KAAKkrB,gBAAgBw3pB,wBAAwB1irB,KAAKqyL,SAAUryL,KAAK+grB,YAAa/grB,KAAKghrB,iB,UAG3FyB,EAA0BlirB,UAAO,SAA2CC,GAAK,OAAO,IAAKA,GAAKiirB,IAClGA,EAA0BhirB,UAAO,KAAyB,CAAEC,KAAM+hrB,EAA2B9hrB,UAAW,CAAC,CAAC,8BAA+B,WAAY,KAAMwB,OAAQ,CAAEkwL,SAAU,WAAY0uf,YAAa,cAAeC,YAAa,eAAiB1+qB,SAAU,CAAC,KAA0B,CAAC,CAC3QC,QAASu+qB,EACT13pB,WAAYm5pB,EACZp5pB,KAAM,CAAC,aAAW,kBAAMs5pB,QACvB,Q,sBAqCXE,E,8BACF,WAAYr/qB,EAAS6J,EAAWw9B,GAAQ,oBACpC3qC,KAAKsD,QAAUA,EACftD,KAAKmN,UAAYA,EAEjBnN,KAAK4irB,UAAY,IAAIn/qB,EAAA,EAErBzD,KAAK6irB,oBAAsB,KAE3B7irB,KAAK8irB,eAAiB,EAKtB9irB,KAAK+3oB,iBAAmB,IAAItqoB,IAC5BzN,KAAKkN,UAAYy9B,G,uBAOrB,SAAS6uH,GAAU,WACVx5J,KAAK+3oB,iBAAiB3joB,IAAIolJ,IAC3Bx5J,KAAK+3oB,iBAAiB1joB,IAAImlJ,EAAYA,EAAWuphB,kBAC5C7+qB,UAAU,kBAAM,EAAK0+qB,UAAU/+qB,KAAK21J,Q,wBAOjD,SAAWA,GACP,IAAMwphB,EAAsBhjrB,KAAK+3oB,iBAAiB7loB,IAAIsnJ,GAClDwphB,IACAA,EAAoBptqB,cACpB5V,KAAK+3oB,iBAAiBxloB,OAAOinJ,M,sBAarC,WAA4C,WAAnCyphB,EAAmC,uDAtDpB,GAuDpB,OAAKjjrB,KAAKmN,UAAU8K,UAGb,IAAIuiH,EAAA,EAAW,SAACpuF,GACd,EAAKy2oB,qBACN,EAAKK,qBAIT,IAAMlvkB,EAAeivkB,EAAgB,EACjC,EAAKL,UAAU5+qB,KAAK,OAAAm9I,EAAA,GAAU8hiB,IAAgB/+qB,UAAUkoC,GACxD,EAAKw2oB,UAAU1+qB,UAAUkoC,GAE7B,OADA,EAAK02oB,iBACE,WACH9ukB,EAAap+F,cACb,EAAKktqB,iBACA,EAAKA,gBACN,EAAKK,2BAhBN,OAAAltqB,EAAA,O,yBAqBf,WAAW,WACPjW,KAAKmjrB,wBACLnjrB,KAAK+3oB,iBAAiB1koB,QAAQ,SAAC++F,EAAG/5F,GAAJ,OAAkB,EAAK+qqB,WAAW/qqB,KAChErY,KAAK4irB,UAAU9+qB,a,8BAQnB,SAAiB88L,EAAqBqif,GAClC,IAAMI,EAAYrjrB,KAAKu5J,4BAA4BqnC,GACnD,OAAO5gM,KAAK43oB,SAASqrC,GAAej/qB,KAAK,OAAAmR,EAAA,GAAO,SAAAqX,GAC5C,OAAQA,GAAU62pB,EAAUp6qB,QAAQujB,IAAW,O,yCAIvD,SAA4Bo0K,GAAmB,WACrC0if,EAAsB,GAM5B,OALAtjrB,KAAK+3oB,iBAAiB1koB,QAAQ,SAAC8vH,EAAeq2B,GACtC,EAAK+phB,2BAA2B/phB,EAAYonC,IAC5C0if,EAAoB1/qB,KAAK41J,KAG1B8phB,I,wBAGX,WACI,OAAOtjrB,KAAKkN,UAAUikB,aAAehG,S,wCAGzC,SAA2BquI,EAAYonC,GACnC,IAAIv1L,EAAU,YAAcu1L,GACxB4if,EAAoBhqhB,EAAWC,gBAAgB72J,cAGnD,GACI,GAAIyI,GAAWm4qB,EACX,OAAO,QAENn4qB,EAAUA,EAAQu9B,eAC3B,OAAO,I,gCAGX,WAAkB,WACd5oC,KAAK6irB,oBAAsB7irB,KAAKsD,QAAQ+nB,kBAAkB,WACtD,IAAMF,EAAS,EAAKC,aACpB,OAAO,OAAA+9F,EAAA,GAAUh+F,EAAOwf,SAAU,UAAUzmC,UAAU,kBAAM,EAAK0+qB,UAAU/+qB,a,mCAInF,WACQ7D,KAAK6irB,sBACL7irB,KAAK6irB,oBAAoBjtqB,cACzB5V,KAAK6irB,oBAAsB,U,UAIvCF,EAAiBpirB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKmirB,GAAkB,KAAgB,KAAgB,KAAgB,KAAkB,KAAgB,IAAU,KAC9LA,EAAiB/9qB,WAAQ,aAAmB,CAAEE,QAAS,WAAsC,OAAO,IAAI69qB,EAAiB,aAAS,KAAS,aAAS,KAAW,aAAS,IAAU,KAAQ99qB,MAAO89qB,EAAkB/7pB,WAAY,S,sBA4BzN68pB,E,8BACF,WAAY/grB,EAAYghrB,EAAkBphjB,EAAQh3H,GAAG,+BACjDtL,KAAK0C,WAAaA,EAClB1C,KAAK0jrB,iBAAmBA,EACxB1jrB,KAAKsiI,OAASA,EACdtiI,KAAKsL,IAAMA,EACXtL,KAAKwD,WAAa,IAAIC,EAAA,EACtBzD,KAAK2jrB,iBAAmB,IAAInpjB,EAAA,EAAW,SAACpuF,GAAD,OAAc,EAAKk2F,OAAOj3G,kBAAkB,kBAAM,OAAA89F,EAAA,GAAU,EAAKzmH,WAAWE,cAAe,UAAUoB,KAAK,OAAAC,EAAA,GAAU,EAAKT,aAC3JU,UAAUkoC,Q,uBAEnB,WACIpsC,KAAK0jrB,iBAAiB3od,SAAS/6N,Q,yBAEnC,WACIA,KAAK0jrB,iBAAiBN,WAAWpjrB,MACjCA,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,a,6BAGpB,WACI,OAAO9D,KAAK2jrB,mB,2BAGhB,WACI,OAAO3jrB,KAAK0C,a,sBAUhB,SAASslB,GACL,IAAMyqB,EAAKzyC,KAAK0C,WAAWE,cACrBsG,EAAQlJ,KAAKsL,KAAyB,OAAlBtL,KAAKsL,IAAI/J,MAEf,MAAhBymB,EAAQ/b,OACR+b,EAAQ/b,KAAO/C,EAAQ8e,EAAQ5e,IAAM4e,EAAQ7e,OAE5B,MAAjB6e,EAAQ9b,QACR8b,EAAQ9b,MAAQhD,EAAQ8e,EAAQ7e,MAAQ6e,EAAQ5e,KAG9B,MAAlB4e,EAAQhc,SACRgc,EAAQjc,IACJ0mC,EAAGqmC,aAAermC,EAAGogC,aAAe7qD,EAAQhc,QAGhD9C,GAAmC,GAA1B,eACW,MAAhB8e,EAAQ/b,OACR+b,EAAQ9b,MACJumC,EAAGomC,YAAcpmC,EAAGsgC,YAAc/qD,EAAQ/b,MAEpB,GAA1B,cACA+b,EAAQ/b,KAAO+b,EAAQ9b,MAEQ,GAA1B,gBACL8b,EAAQ/b,KAAO+b,EAAQ9b,OAAS8b,EAAQ9b,MAAQ8b,EAAQ9b,QAIvC,MAAjB8b,EAAQ9b,QACR8b,EAAQ/b,KACJwmC,EAAGomC,YAAcpmC,EAAGsgC,YAAc/qD,EAAQ9b,OAGtDlM,KAAK4jrB,sBAAsB57pB,K,mCAE/B,SAAsBA,GAClB,IAAMyqB,EAAKzyC,KAAK0C,WAAWE,cACvB,cACA6vC,EAAGgxP,SAASz7Q,IAGO,MAAfA,EAAQjc,MACR0mC,EAAGrqB,UAAYJ,EAAQjc,KAEP,MAAhBic,EAAQ/b,OACRwmC,EAAGimC,WAAa1wD,EAAQ/b,S,iCAapC,SAAoB3H,GAChB,IAAMu/qB,EAAO,OACPC,EAAQ,QACRrxoB,EAAKzyC,KAAK0C,WAAWE,cAC3B,GAAY,OAAR0B,EACA,OAAOmuC,EAAGrqB,UAEd,GAAY,UAAR9jB,EACA,OAAOmuC,EAAGqmC,aAAermC,EAAGogC,aAAepgC,EAAGrqB,UAGlD,IAAMlf,EAAQlJ,KAAKsL,KAAyB,OAAlBtL,KAAKsL,IAAI/J,MAOnC,MANY,SAAR+C,EACAA,EAAO4E,EAAQ46qB,EAAQD,EAEV,OAARv/qB,IACLA,EAAO4E,EAAQ26qB,EAAOC,GAEtB56qB,GAAmC,GAA1B,cAGL5E,GAAQu/qB,EACDpxoB,EAAGomC,YAAcpmC,EAAGsgC,YAActgC,EAAGimC,WAGrCjmC,EAAGimC,WAGTxvE,GAAmC,GAA1B,cAGV5E,GAAQu/qB,EACDpxoB,EAAGimC,WAAajmC,EAAGomC,YAAcpmC,EAAGsgC,aAGnCtgC,EAAGimC,WAMXp0E,GAAQu/qB,EACDpxoB,EAAGimC,WAGHjmC,EAAGomC,YAAcpmC,EAAGsgC,YAActgC,EAAGimC,e,UAK5D+qmB,EAAcljrB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKijrB,GAAe,KAAyB,KAAoB,KAAyB,GAAmB,KAAyB,KAAgB,KAAyB,IAAuB,KAC3QA,EAAchjrB,UAAO,KAAyB,CAAEC,KAAM+irB,EAAe9irB,UAAW,CAAC,CAAC,GAAI,iBAAkB,IAAK,CAAC,GAAI,gBAAiB,O,sBA6B7HojrB,E,8BACF,WAAY52qB,EAAWm1H,EAAQ33F,GAAQ,+BACnC3qC,KAAKmN,UAAYA,EAEjBnN,KAAKgkrB,QAAU,IAAIvgrB,EAAA,EAEnBzD,KAAKikrB,gBAAkB,SAAC37pB,GACpB,EAAK07pB,QAAQngrB,KAAKykB,IAEtBtoB,KAAKkN,UAAYy9B,EACjB23F,EAAOj3G,kBAAkB,WACrB,GAAIle,EAAU8K,UAAW,CACrB,IAAM,EAAS,EAAKmT,aAGpB,EAAOE,iBAAiB,SAAU,EAAK24pB,iBACvC,EAAO34pB,iBAAiB,oBAAqB,EAAK24pB,iBAItD,EAAKl0qB,SAAS7L,UAAU,kBAAM,EAAKggrB,2B,0BAG3C,WACI,GAAIlkrB,KAAKmN,UAAU8K,UAAW,CAC1B,IAAM,EAASjY,KAAKorB,aACpB,EAAOO,oBAAoB,SAAU3rB,KAAKikrB,iBAC1C,EAAOt4pB,oBAAoB,oBAAqB3rB,KAAKikrB,iBAEzDjkrB,KAAKgkrB,QAAQlgrB,a,6BAGjB,WACS9D,KAAKmkrB,eACNnkrB,KAAKkkrB,sBAET,IAAM/3oB,EAAS,CAAEziC,MAAO1J,KAAKmkrB,cAAcz6qB,MAAOc,OAAQxK,KAAKmkrB,cAAc35qB,QAK7E,OAHKxK,KAAKmN,UAAU8K,YAChBjY,KAAKmkrB,cAAgB,MAElBh4oB,I,6BAGX,WAUI,IAAM82G,EAAiBjjJ,KAAKkjJ,4BAC5B,EAA0BljJ,KAAK21J,kBAAvBjsJ,EAAR,EAAQA,MAAOc,EAAf,EAAeA,OACf,MAAO,CACHuB,IAAKk3I,EAAel3I,IACpBE,KAAMg3I,EAAeh3I,KACrBD,OAAQi3I,EAAel3I,IAAMvB,EAC7B0B,MAAO+2I,EAAeh3I,KAAOvC,EAC7Bc,SACAd,W,uCAIR,WAGI,IAAK1J,KAAKmN,UAAU8K,UAChB,MAAO,CAAElM,IAAK,EAAGE,KAAM,GAQ3B,IAAM0+B,EAAW3qC,KAAKkN,UAChBie,EAASnrB,KAAKorB,aACdopB,EAAkB7J,EAAS6J,gBAC3Bi1d,EAAej1d,EAAgB/pC,wBAKrC,MAAO,CAAEsB,KAJI09f,EAAa19f,KAAO4+B,EAAS7H,KAAK1a,WAAa+C,EAAOm4Q,SAC/D9uP,EAAgBpsB,WAAa,EAGnBnc,MAFAw9f,EAAax9f,MAAQ0+B,EAAS7H,KAAK41C,YAAcvtD,EAAOk4Q,SAClE7uP,EAAgBkkC,YAAc,K,oBAOtC,WAAyC,IAAlC0rmB,EAAkC,uDAjGjB,GAkGpB,OAAOA,EAAe,EAAIpkrB,KAAKgkrB,QAAQhgrB,KAAK,OAAAm9I,EAAA,GAAUijiB,IAAiBpkrB,KAAKgkrB,U,wBAGhF,WACI,OAAOhkrB,KAAKkN,UAAUikB,aAAehG,S,iCAGzC,WACI,IAAMA,EAASnrB,KAAKorB,aACpBprB,KAAKmkrB,cAAgBnkrB,KAAKmN,UAAU8K,UAChC,CAAEvO,MAAOyhB,EAAO+hG,WAAY1iH,OAAQ2gB,EAAO6hG,aAC3C,CAAEtjH,MAAO,EAAGc,OAAQ,O,UAGhCu5qB,EAAcxjrB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKujrB,GAAe,KAAgB,KAAkB,KAAgB,KAAgB,KAAgB,IAAU,KACrLA,EAAcn/qB,WAAQ,aAAmB,CAAEE,QAAS,WAAmC,OAAO,IAAIi/qB,EAAc,aAAS,KAAW,aAAS,KAAS,aAAS,IAAU,KAAQl/qB,MAAOk/qB,EAAen9pB,WAAY,S,KAgC7My9pB,EAAoD,oBAA1B57f,sBAAwC31B,EAAA,EAA0BuS,EAAA,E,iBAE5Fi/gB,E,YACF,WAAY5hrB,EAAYoK,EAAoBw1H,EAAQp3G,EAAiB5f,EAAKo4qB,EAAkBxiC,GAAa,M,MAAA,2B,EACrG,K,EAAA,E,EAAA,CAAMx+oB,EAAYghrB,EAAkBphjB,EAAQh3H,G,kBAA5C,E,iGACK5I,WAAaA,EAClB,EAAKoK,mBAAqBA,EAC1B,EAAKoe,gBAAkBA,EAEvB,EAAKq5pB,iBAAmB,IAAI9grB,EAAA,EAE5B,EAAK+grB,sBAAwB,IAAI/grB,EAAA,EACjC,EAAK4uJ,aAAe,WAMpB,EAAK6uhB,oBAAsB,IAAI1mjB,EAAA,EAAW,SAACpuF,GAAD,OAAc,EAAKlhB,gBAAgBg2pB,oBAAoBh9qB,UAAU,SAAAyF,GAAK,OAAIpF,QAAQC,UAAU6Z,KAAK,kBAAM,EAAKikH,OAAOh2F,IAAI,kBAAMF,EAASvoC,KAAK8F,WAErL,EAAK86qB,oBAAsB,EAAKD,sBAIhC,EAAKE,kBAAoB,EAEzB,EAAKC,mBAAqB,GAE1B,EAAKC,oBAAsB,GAE3B,EAAKC,eAAiB,CAAE17qB,MAAO,EAAGC,IAAK,GAEvC,EAAK07qB,YAAc,EAEnB,EAAKX,cAAgB,EAErB,EAAKY,uBAAyB,EAK9B,EAAKC,oCAAqC,EAE1C,EAAKC,2BAA4B,EAEjC,EAAKC,yBAA2B,GAEhC,EAAKC,iBAAmBpgiB,EAAA,EAAa79H,MAIrC,EAAKi+pB,iBAAmBjkC,EAAcnxoB,SAAS7L,UAAU,WACrD,EAAKkhrB,sBAjD4F,E,8DAqDzG,WACI,OAAOplrB,KAAKqyJ,c,IAEhB,SAAgBh1B,GACRr9H,KAAKqyJ,eAAiBh1B,IACtBr9H,KAAKqyJ,aAAeh1B,EACpBr9H,KAAKqlrB,0B,sBAGb,WAAQ,WACJ,2BAKArlrB,KAAKsiI,OAAOj3G,kBAAkB,kBAAM9mB,QAAQC,UAAU6Z,KAAK,WACvD,EAAKinqB,uBACL,EAAKp6pB,gBAAgBpM,OAAO,GAC5B,EAAKikqB,kBACA/+qB,KAEL,OAAAm1J,EAAA,GAAU,MAIV,OAAAhY,EAAA,GAAU,EAAGkjiB,IACRngrB,UAAU,kBAAM,EAAKgnB,gBAAgBq6pB,sBAC1C,EAAKC,mC,yBAGb,WACIxlrB,KAAK+e,SACL/e,KAAKkrB,gBAAgBnM,SAErB/e,KAAKwkrB,sBAAsB1grB,WAC3B9D,KAAKukrB,iBAAiBzgrB,WACtB9D,KAAKmlrB,iBAAiBvvqB,cACtB,gC,oBAGJ,SAAO6vqB,GAAK,WAORzlrB,KAAKsiI,OAAOj3G,kBAAkB,WAC1B,EAAKq6pB,OAASD,EACd,EAAKC,OAAO7vqB,WAAW7R,KAAK,OAAAC,EAAA,GAAU,EAAKsgrB,mBAAmBrgrB,UAAU,SAAA4L,GACpE,IAAM61qB,EAAY71qB,EAAK3L,OACnBwhrB,IAAc,EAAKb,cACnB,EAAKA,YAAca,EACnB,EAAKz6pB,gBAAgB06pB,uBAEzB,EAAKC,2B,oBAKjB,WACI7lrB,KAAK0lrB,OAAS,KACd1lrB,KAAKukrB,iBAAiB1grB,S,2BAG1B,WACI,OAAO7D,KAAK8krB,c,6BAGhB,WACI,OAAO9krB,KAAKmkrB,gB,8BAOhB,WACI,OAAOnkrB,KAAK6krB,iB,iCAMhB,SAAoB1kpB,GACZngC,KAAK0krB,oBAAsBvkpB,IAC3BngC,KAAK0krB,kBAAoBvkpB,EACzBngC,KAAKqlrB,uBACLrlrB,KAAKwlrB,gC,8BAIb,SAAiBpqoB,GAAK,IA5JL0qoB,EAAIC,EA4JC,SA5JLD,EA6JI9lrB,KAAK6krB,gBA5JhB17qB,QADW48qB,EA6JqB3qoB,GA5JpBjyC,OAAS28qB,EAAG18qB,KAAO28qB,EAAG38qB,OA6JpCpJ,KAAKwkrB,sBAAsB3grB,KAAK7D,KAAK6krB,eAAiBzpoB,GACtDp7C,KAAKwlrB,2BAA2B,kBAAM,EAAKt6pB,gBAAgB86pB,yB,6CAMnE,WACI,OAAOhmrB,KAAKglrB,mCAAqC,KAAOhlrB,KAAK+krB,yB,sCAMjE,SAAyBl6qB,GAAuB,WAAf2mJ,EAAe,uDAAV,WAG5BtoJ,EAAQlJ,KAAKsL,KAAyB,OAAlBtL,KAAKsL,IAAI/J,MAC7B80E,EAAmC,cAApBr2E,KAAKq9H,YACpBs1F,EAAOt8I,EAAe,IAAM,IAC5B4vmB,EAAgB5vmB,GAAgBntE,GAAS,EAAI,EAC/Cy4B,EAAY,YAAH,OAAegxL,EAAf,YAAuBhkN,OAAOs3qB,EAAgBp7qB,GAA9C,OACb7K,KAAK+krB,uBAAyBl6qB,EACnB,WAAP2mJ,IACA7vH,GAAa,aAAJ,OAAiBgxL,EAAjB,WAIT3yN,KAAKglrB,oCAAqC,GAE1ChlrB,KAAKkmrB,2BAA6BvkpB,IAGlC3hC,KAAKkmrB,0BAA4BvkpB,EACjC3hC,KAAKwlrB,2BAA2B,WACxB,EAAKR,oCACL,EAAKD,wBAA0B,EAAKoB,6BACpC,EAAKnB,oCAAqC,EAC1C,EAAK1C,yBAAyB,EAAKyC,yBAGnC,EAAK75pB,gBAAgBk7pB,+B,4BAYrC,SAAev7qB,GAAyB,IAAjB42qB,EAAiB,uDAAN,OACxBz5pB,EAAU,CAAEy5pB,YACO,eAArBzhrB,KAAKq9H,YACLr1G,EAAQ7e,MAAQ0B,EAGhBmd,EAAQjc,IAAMlB,EAElB7K,KAAKyjS,SAASz7Q,K,2BAOlB,SAAcre,GAAwB,IAAjB83qB,EAAiB,uDAAN,OAC5BzhrB,KAAKkrB,gBAAgBmrK,cAAc1sL,EAAO83qB,K,iCAO9C,SAAoBn9qB,GAChB,OAAOA,EAAI,mCACmBA,IADnB,mCAEwC,eAArBtE,KAAKq9H,YAA+B,QAAU,U,wCAGhF,WACI,IAAMgpjB,EAAYrmrB,KAAKsmrB,gBAAgB1jrB,cACvC,MAA4B,eAArB5C,KAAKq9H,YAA+BgpjB,EAAUvzmB,YAAcuzmB,EAAU50pB,e,8BAMjF,SAAiB2pB,GACb,OAAKp7C,KAAK0lrB,OAGH1lrB,KAAK0lrB,OAAOa,iBAAiBnroB,EAAOp7C,KAAKq9H,aAFrC,I,+BAKf,WAEIr9H,KAAKslrB,uBACLtlrB,KAAKkrB,gBAAgB06pB,wB,kCAGzB,WACI,IAAMY,EAAaxmrB,KAAK0C,WAAWE,cACnC5C,KAAKmkrB,cAAqC,eAArBnkrB,KAAKq9H,YACtBmpjB,EAAWzzmB,YAAcyzmB,EAAW3zmB,e,wCAG5C,SAA2B4zmB,GAAQ,WAC3BA,GACAzmrB,KAAKklrB,yBAAyBthrB,KAAK6irB,GAIlCzmrB,KAAKilrB,4BACNjlrB,KAAKilrB,2BAA4B,EACjCjlrB,KAAKsiI,OAAOj3G,kBAAkB,kBAAM9mB,QAAQC,UAAU6Z,KAAK,WACvD,EAAKwnqB,4B,gCAKjB,WAAkB,WACd7lrB,KAAKilrB,2BAA4B,EAKjCjlrB,KAAKsmrB,gBAAgB1jrB,cAAc2I,MAAMo2B,UAAY3hC,KAAKkmrB,0BAI1DlmrB,KAAKsiI,OAAOh2F,IAAI,kBAAM,EAAKx/B,mBAAmBkK,iBAC9C,IAAM0vqB,EAA0B1mrB,KAAKklrB,yBACrCllrB,KAAKklrB,yBAA2B,GAZlB,oBAaGwB,GAbH,IAad,4BACI13qB,EADsC,WAb5B,iC,kCAkBlB,WACIhP,KAAK4krB,oBACoB,eAArB5krB,KAAKq9H,YAA+B,GAApC,UAA4Cr9H,KAAK0krB,kBAAjD,MACJ1krB,KAAK2krB,mBACoB,eAArB3krB,KAAKq9H,YAAL,UAAuCr9H,KAAK0krB,kBAA5C,MAAoE,O,CArSzC,G,OAwSvCJ,EAAyB/jrB,UAAO,SAA0CC,GAAK,OAAO,IAAKA,GAAK8jrB,GAA0B,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAgB,KAAyBxD,EAAyB,GAAI,KAAyB,IAAuB,GAAI,KAAyB,GAAmB,KAAyB,KACnbwD,EAAyBn+qB,UAAO,KAAyB,CAAEzF,KAAM4jrB,EAA0B3jrB,UAAW,CAAC,CAAC,gCAAiC2X,UAAW,SAAwC3W,EAAIC,GAGxL,IAAIE,EAHoM,EAALH,GACnM,KAAmBlC,EAAK,GACjB,EAALkC,GAEF,KAAsBG,EAAK,UAA0BF,EAAI0krB,gBAAkBxkrB,EAAGE,QAC7Ee,UAAW,CAAC,EAAG,+BAAgCwV,SAAU,EAAGC,aAAc,SAA+C7W,EAAIC,GAAgB,EAALD,GACzI,KAAmB,4CAAiE,eAApBC,EAAIy7H,YAApE,CAAkG,0CAA+D,eAApBz7H,EAAIy7H,cAChJl7H,OAAQ,CAAEk7H,YAAa,eAAiBl7G,QAAS,CAAE++pB,oBAAqB,uBAAyB5+qB,SAAU,CAAC,KAA0B,CAAC,CAChIC,QAAS,EACTC,YAAa8hrB,KACZ,MAAoCzrqB,mBAAoBnZ,EAAK0G,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,sCAAuC,CAAC,iBAAkB,IAAK,CAAC,EAAG,8BAA+BhG,SAAU,SAA2CqB,EAAIC,GAAgB,EAALD,IAC5Q,OACA,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAoB,GACpB,OACA,KAAiB,EAAG,MAAO,IACpB,EAALA,IACF,KAAiB,GACjB,KAAmB,QAASC,EAAI+irB,mBAAhC,CAAoD,SAAU/irB,EAAIgjrB,uBACjE9rqB,OAAQ,CAAC,+sDAAgtDtS,cAAe,EAAGwiB,gBAAiB,I,KAyDrwD,SAAS0nd,EAAUrzW,EAAar2H,EAAW08I,GAEvC,IADWA,EACHj5I,sBACJ,OAAO,EAEX,IAAMsjE,EAJK21E,EAIKj5I,wBAChB,MAAoB,eAAhB4yH,EACqB,UAAdr2H,EAAwB+mE,EAAK9hE,KAAO8hE,EAAK7hE,MAE/B,UAAdlF,EAAwB+mE,EAAKhiE,IAAMgiE,EAAK/hE,O,qBAM7C26qB,E,8BACF,WAEA/kqB,EAEAqgJ,EAEAj9J,EAEAoI,EAEA+zqB,EAAW7+iB,GAAM,+BACbtiI,KAAK4hB,kBAAoBA,EACzB5hB,KAAKiiK,UAAYA,EACjBjiK,KAAKgF,SAAWA,EAChBhF,KAAKoN,cAAgBA,EACrBpN,KAAKmhrB,UAAYA,EAEjBnhrB,KAAKyO,WAAa,IAAIhL,EAAA,EAEtBzD,KAAK4mrB,mBAAqB,IAAInjrB,EAAA,EAE9BzD,KAAK6V,WAAa7V,KAAK4mrB,mBAClB5irB,KAEL,OAAAm1J,EAAA,GAAU,MDjmCP,SAAC5yI,GAAD,OAAYA,EAAO8V,KAAK,IAAI,ICumC/B,OAAA6mG,EAAA,GAAU,0CAAiB,EAAK2jjB,kBAAtB,aAEV,OAAAtgjB,EAAA,GAAY,IAEZvmI,KAAKuqoB,QAAU,KAEfvqoB,KAAK8mrB,cAAe,EACpB9mrB,KAAKwD,WAAa,IAAIC,EAAA,EACtBzD,KAAK6V,WAAW3R,UAAU,SAAA4L,GACtB,EAAKmE,MAAQnE,EACb,EAAKi3qB,0BAET/mrB,KAAKmhrB,UAAUsD,oBAAoBzgrB,KAAK,OAAAC,EAAA,GAAUjE,KAAKwD,aAAaU,UAAU,SAAAk3C,GAC1E,EAAKypoB,eAAiBzpoB,EACtBknF,EAAOh2F,IAAI,kBAAM,EAAK79B,WAAW5K,KAAK,EAAKghrB,kBAC3C,EAAKkC,0BAET/mrB,KAAKmhrB,UAAUriqB,OAAO9e,O,4BAG1B,WACI,OAAOA,KAAKgnrB,kB,IAEhB,SAAoBzlrB,GAChBvB,KAAKgnrB,iBAAmBzlrB,EACpB,YAAaA,GACbvB,KAAK4mrB,mBAAmB/irB,KAAKtC,GAI7BvB,KAAK4mrB,mBAAmB/irB,KAAK,IAAI,IAAgB,OAAAkS,EAAA,GAAaxU,GAASA,EAAQgJ,MAAMjG,KAAK/C,GAAS,Q,gCAO3G,WACI,OAAOvB,KAAKinrB,uB,IAEhB,SAAyBj4qB,GAAE,WACvBhP,KAAK8mrB,cAAe,EACpB9mrB,KAAKinrB,sBAAwBj4qB,EACzB,SAACrF,EAAO2H,GAAR,OAAiBtC,EAAGrF,GAAS,EAAKk7qB,eAAiB,EAAKA,eAAe17qB,MAAQ,GAAImI,SACnF7M,I,iCAGR,SAA0BlD,GAClBA,IACAvB,KAAK8mrB,cAAe,EACpB9mrB,KAAKiiK,UAAY1gK,K,0CAOzB,WACI,OAAOvB,KAAKoN,cAAckxB,e,IAE9B,SAAmC6B,GAC/BngC,KAAKoN,cAAckxB,cAAgB,YAAqB6B,K,8BAO5D,SAAiBib,EAAOiiF,GACpB,GAAIjiF,EAAMjyC,OAASiyC,EAAMhyC,IACrB,OAAO,EAeX,IARA,IAKI89qB,EACApuJ,EANEquJ,EAAqB/roB,EAAMjyC,MAAQnJ,KAAK6krB,eAAe17qB,MAEvDi+qB,EAAWhsoB,EAAMhyC,IAAMgyC,EAAMjyC,MAM1BtB,EAAI,EAAGA,EAAIu/qB,EAAUv/qB,IAAK,CAC/B,IAAMoK,EAAOjS,KAAK4hB,kBAAkB1P,IAAIrK,EAAIs/qB,GAC5C,GAAIl1qB,GAAQA,EAAKyE,UAAUvS,OAAQ,CAC/B+irB,EAAYpuJ,EAAW7mhB,EAAKyE,UAAU,GACtC,OAIR,IAAK,IAAI,EAAI0wqB,EAAW,EAAG,GAAK,EAAG,IAAK,CACpC,IAAM,EAAOpnrB,KAAK4hB,kBAAkB1P,IAAI,EAAIi1qB,GAC5C,GAAI,GAAQ,EAAKzwqB,UAAUvS,OAAQ,CAC/B20hB,EAAW,EAAKpihB,UAAU,EAAKA,UAAUvS,OAAS,GAClD,OAGR,OAAO+irB,GAAapuJ,EAChBpoD,EAAUrzW,EAAa,MAAOy7Z,GAAYpoD,EAAUrzW,EAAa,QAAS6pjB,GAAa,I,uBAE/F,WACI,GAAIlnrB,KAAKuqoB,SAAWvqoB,KAAK8mrB,aAAc,CAInC,IAAM7hrB,EAAUjF,KAAKuqoB,QAAQhloB,KAAKvF,KAAKqnrB,gBAClCpirB,EAIDjF,KAAKyqoB,cAAcxloB,GAHnBjF,KAAKsnrB,iBAKTtnrB,KAAK8mrB,cAAe,K,yBAG5B,WACI9mrB,KAAKmhrB,UAAUpiqB,SACf/e,KAAK4mrB,mBAAmB/irB,UAAKY,GAC7BzE,KAAK4mrB,mBAAmB9irB,WACxB9D,KAAKyO,WAAW3K,WAChB9D,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,WAChB9D,KAAKoN,cAAc2R,W,mCAGvB,WAAqB,WACZ/e,KAAK6krB,iBAGV7krB,KAAKqnrB,eAAiBrnrB,KAAKiU,MAAMzK,MAAMxJ,KAAK6krB,eAAe17qB,MAAOnJ,KAAK6krB,eAAez7qB,KACjFpJ,KAAKuqoB,UAGNvqoB,KAAKuqoB,QAAUvqoB,KAAKgF,SAASK,KAAKrF,KAAKqnrB,gBAAgB/hrB,OAAO,SAACqE,EAAO2H,GAClE,OAAO,EAAKi2qB,qBAAuB,EAAKA,qBAAqB59qB,EAAO2H,GAAQA,KAGpFtR,KAAK8mrB,cAAe,K,+BAGxB,SAAkBU,EAAOC,GAKrB,OAJID,GACAA,EAAM12qB,WAAW9Q,MAErBA,KAAK8mrB,cAAe,EACbW,EAAQA,EAAM3xqB,QAAQ9V,MAAQ,OAAAiW,EAAA,O,4BAGzC,WAGI,IAFA,IAAMiB,EAAQlX,KAAKiU,MAAM9P,OACrB0D,EAAI7H,KAAK4hB,kBAAkBzd,OACxB0D,KAAK,CACR,IAAMoK,EAAOjS,KAAK4hB,kBAAkB1P,IAAIrK,GACxCoK,EAAKT,QAAQ7H,MAAQ3J,KAAK6krB,eAAe17qB,MAAQtB,EACjDoK,EAAKT,QAAQ0F,MAAQA,EACrBlX,KAAK0nrB,iCAAiCz1qB,EAAKT,SAC3CS,EAAKuP,mB,2BAIb,SAAcvc,GAAO,WACjBjF,KAAKoN,cAAc6D,aAAahM,EAASjF,KAAK4hB,kBAAmB,SAAC1Q,EAAQC,EAAwBC,GAAjC,OAAkD,EAAKC,qBAAqBH,EAAQE,IAAe,SAACF,GAAD,OAAYA,EAAOI,OAEvLrM,EAAQoN,sBAAsB,SAACnB,GACd,EAAK0Q,kBAAkB1P,IAAIhB,EAAOE,cAC1CI,QAAQQ,UAAYd,EAAOI,OAKpC,IAFA,IAAM4F,EAAQlX,KAAKiU,MAAM9P,OACrB0D,EAAI7H,KAAK4hB,kBAAkBzd,OACxB0D,KAAK,CACR,IAAMoK,EAAOjS,KAAK4hB,kBAAkB1P,IAAIrK,GACxCoK,EAAKT,QAAQ7H,MAAQ3J,KAAK6krB,eAAe17qB,MAAQtB,EACjDoK,EAAKT,QAAQ0F,MAAQA,EACrBlX,KAAK0nrB,iCAAiCz1qB,EAAKT,Y,8CAInD,SAAiCA,GAC7BA,EAAQxP,MAA0B,IAAlBwP,EAAQ7H,MACxB6H,EAAQ2F,KAAO3F,EAAQ7H,QAAU6H,EAAQ0F,MAAQ,EACjD1F,EAAQ4F,KAAO5F,EAAQ7H,MAAQ,GAAM,EACrC6H,EAAQ6F,KAAO7F,EAAQ4F,O,kCAE3B,SAAqBlG,EAAQvH,GAKzB,MAAO,CACH/C,YAAa5G,KAAKiiK,UAClBzwJ,QAAS,CACLQ,UAAWd,EAAOI,KAGlBq2qB,gBAAiB3nrB,KAAKgnrB,iBACtBr9qB,OAAQ,EACRuN,OAAQ,EACRlV,OAAO,EACPmV,MAAM,EACNE,KAAK,EACLD,MAAM,GAEVzN,a,UAIZg9qB,EAAgBpmrB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKmmrB,GAAiB,KAAyB,KAA0B,KAAyB,KAAqB,KAAyB,KAAyB,KAAyB,KAA0B,KAAyB,EAA0B,GAAI,KAAyB,OACrXA,EAAgBlmrB,UAAO,KAAyB,CAAEC,KAAMimrB,EAAiBhmrB,UAAW,CAAC,CAAC,GAAI,gBAAiB,GAAI,kBAAmB,KAAMwB,OAAQ,CAAEwlrB,gBAAiB,kBAAmBJ,qBAAsB,uBAAwBK,sBAAuB,wBAAyBC,+BAAgC,kCAAoCvlrB,SAAU,CAAC,KAA0B,CACjX,CAAEC,QAAS,IAAyBoW,SAAU,U,sBA8CpDmvqB,E,sDAENA,EAAoBvnrB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKsnrB,IACtFA,EAAoB5uqB,UAAO,KAAwB,CAAExY,KAAMonrB,IAC3DA,EAAoB3uqB,UAAO,KAAwB,I,sBAY7C4uqB,E,sDAENA,EAAgBxnrB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKunrB,IAC9EA,EAAgB7uqB,UAAO,KAAwB,CAAExY,KAAMqnrB,IACvDA,EAAgB5uqB,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAC/C,IACA,IACA,GACD,IAAY,K,wCCn4CvB,wEAGA,SAAS4uqB,IACL,OAAO,IAAI,IAET,SAAU3sjB,IACZ,OAAO,SAAC90G,GAAD,OAAY,cAAW,YAAUyhqB,EAAV,CAA+BzhqB,O,sBCExD,SAAUlE,GAAU,aAIfA,EAAOM,aAAa,MAAO,CACjCC,OAAQ,saAAkFL,MACtF,KAEJM,YACI,saAAkFN,MAC9E,KAERgB,SAAU,+PAAkDhB,MAAM,KAClEiB,cAAe,+PAAkDjB,MAAM,KACvEkB,YAAa,+PAAkDlB,MAAM,KACrEoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,wDACRC,KAAM,wBACNC,EAAG,2BACHC,GAAI,8BACJ/B,EAAG,iCACHgC,GAAI,oCACJC,EAAG,2BACHC,GAAI,sDACJhN,EAAG,qBACHiN,GAAI,+BACJG,EAAG,4BACHC,GAAI,0CACJC,EAAG,iCACHC,GAAI,2CAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyB/gB,CAAQ,EAAQ,U,0yBC4B1D,SAASmjrB,EAA8BtmrB,EAAIC,GAAgB,EAALD,GAClD,KAAoB,GAExB,IAAMlC,EAAM,CAAC,KACb,SAASyorB,EAAkCvmrB,EAAIC,IAC/C,IAAMlC,EAAM,SAAUqhD,GAAM,MAAO,CAAEyhL,kBAAmBzhL,IAClDuwD,EAAM,SAAUvwD,EAAIvU,GAAM,MAAO,CAAEjrC,MAAOw/C,EAAI+oC,OAAQt9C,IACtD+kE,EAAM,CAAC,kBACPE,EAAM,CAAC,aACb,SAAS02kB,EAAuDxmrB,EAAIC,IACpE,SAASwmrB,EAAyCzmrB,EAAIC,GAEpD,GAFoE,EAALD,GAC7D,KAAkB,EAAGwmrB,EAAwD,EAAG,EAAG,cAAe,GAC3F,EAALxmrB,EAAQ,CACV,IAAM0mrB,EAAS,OAAuBr2qB,UACtC,KAAkB,kBAAmBq2qB,EAAOC,gBAEhD,SAASC,EAAyC5mrB,EAAIC,GAEpD,GAFoE,EAALD,GAC7D,KAAc,GACP,EAALA,EAAQ,CACV,IAAM0mrB,EAAS,OAAuBr2qB,UACtC,KAAyBq2qB,EAAOG,YAEpC,SAASC,EAA2B9mrB,EAAIC,GAAO,GAAS,EAALD,EAAQ,CACvD,IAAMozG,EAAO,OACb,KAAsB,EAAG,MAAO,GAChC,KAAkB,QAAS,WAA6D,KAAqBA,GAAO,IAAMszkB,EAASzmrB,EAAIoQ,UAAiB02qB,EAAO9mrB,EAAI+H,MAAaytG,EAAU,OAA8B/D,EAAM,KAAmB,GAAI,OAAO+D,EAAQ06D,aAAau2gB,EAAQh1kB,EAAKq1kB,IAA9R,CAAwS,iBAAkB,SAAkE52pB,GAAU,KAAqBijF,GAAO,IAAM2zkB,EAAO9mrB,EAAI+H,MAA+C,OAAxB,OAAuCg/qB,iBAAiB72pB,EAAQ42pB,KAC1gB,KAAsB,EAAG,MAAO,GAChC,KAAkB,EAAGN,EAA0C,EAAG,EAAG,cAAe,GACpF,KAAkB,EAAGG,EAA0C,EAAG,EAAG,cAAe,GACpF,OACA,OACF,GAAS,EAAL5mrB,EAAQ,CACV,IAAM0mrB,EAASzmrB,EAAIoQ,UACb02qB,EAAO9mrB,EAAI+H,MACX2uG,EAAS,OACf,KAAmB,uBAAwBA,EAAOy2Q,eAAiB25T,GACnE,KAAkB,KAAMpwkB,EAAOswkB,eAAeF,GAA9C,CAAqD,WAAYL,EAAOr7pB,SAAxE,CAAkF,oBAAqBq7pB,EAAOr7pB,UAAYsrF,EAAOvvF,eACjI,KAAmB,WAAYuvF,EAAOusF,aAAawjf,EAAQK,GAA3D,CAAkE,gBAAiBA,EAAO,EAA1F,CAA6F,eAAgBpwkB,EAAOuwkB,MAAM1krB,OAA1H,CAAkI,gBAAiBm0G,EAAOwwkB,iBAAiBJ,GAA3K,CAAkL,gBAAiBpwkB,EAAOy2Q,eAAiB25T,EAA3N,CAAiO,aAAcL,EAAOliqB,WAAa,KAAnQ,CAAyQ,mBAAoBkiqB,EAAOliqB,WAAakiqB,EAAO7/pB,eAAiB6/pB,EAAO7/pB,eAAiB,MACjW,KAAiB,GACjB,KAAkB,OAAQ6/pB,EAAOC,eACjC,KAAiB,GACjB,KAAkB,QAASD,EAAOC,gBAEtC,SAASS,EAAoCpnrB,EAAIC,GAAO,GAAS,EAALD,EAAQ,CAChE,IAAMqnrB,EAAO,OACb,KAAsB,EAAG,eAAgB,IACzC,KAAkB,cAAe,WAAyJ,OAApE,KAAqBA,GAAuB,OAAuCC,+BAAzM,CAA2O,eAAgB,SAAkFn3pB,GAA8E,OAApE,KAAqBk3pB,GAAuB,OAAuCE,yBAAyBp3pB,KACnc,OACF,GAAS,EAALnwB,EAAQ,CACV,IAAMwnrB,EAAUvnrB,EAAIoQ,UACdo3qB,EAAQxnrB,EAAI+H,MACZ+sG,EAAS,OACf,KAAmB,sBAAuBA,EAAOq4Q,eAAiBq6T,GAClE,KAAkB,KAAM1ykB,EAAOoykB,iBAAiBM,GAAhD,CAAwD,UAAWD,EAAQ71nB,QAA3E,CAAoF,WAAY61nB,EAAQn/qB,SAAxG,CAAkH,SAAUm/qB,EAAQr2kB,OAApI,CAA4I,oBAAqB4D,EAAO8rH,mBACxK,KAAmB,kBAAmB9rH,EAAOkykB,eAAeQ,KAEhE,IAAMn6f,EAAM,CAAC,oBACPC,EAAM,CAAC,WACPG,EAAM,CAAC,iBACP/6E,EAAM,CAAC,qBAEP+0kB,EAA0B,IAAI,IAAe,sBAAuB,CACtEziqB,WAAY,OACZ9hB,QAMJ,WAKI,OAJe,SAACuG,GAAD,MAAc,CACzBY,KAAMZ,GAAWA,EAAQqhhB,YAAc,GAAK,KAAO,IACnDhjhB,MAAO2B,GAAWA,EAAQynE,aAAe,GAAK,KAAO,S,iBAQvDw2mB,E,8BACF,WAAYv8qB,EAAazJ,EAASimrB,EAAmBp3kB,GAAc,oBAC/DnyG,KAAK+M,YAAcA,EACnB/M,KAAKsD,QAAUA,EACftD,KAAKuprB,kBAAoBA,EACzBvprB,KAAKmyG,eAAiBA,G,6BAO1B,SAAe9mG,GAAO,WAClBrL,KAAKukK,OACgC,oBAA1BkkB,sBACPzoL,KAAKsD,QAAQ+nB,kBAAkB,WAC3Bo9J,sBAAsB,kBAAM,EAAK+ggB,WAAWn+qB,OAIhDrL,KAAKwprB,WAAWn+qB,K,kBAIxB,WACIrL,KAAK+M,YAAYnK,cAAc2I,MAAMw2J,WAAa,Y,kBAGtD,WACI/hK,KAAK+M,YAAYnK,cAAc2I,MAAMw2J,WAAa,W,wBAMtD,SAAW12J,GACP,IAAMgB,EAAYrM,KAAKuprB,kBAAkBl+qB,GACnCo+qB,EAASzprB,KAAK+M,YAAYnK,cAChC6mrB,EAAOl+qB,MAAMU,KAAOI,EAAUJ,KAC9Bw9qB,EAAOl+qB,MAAM7B,MAAQ2C,EAAU3C,U,UAGvC4/qB,EAAU/orB,UAAO,SAA2BC,GAAK,OAAO,IAAKA,GAAK8orB,GAAW,KAAyB,KAAoB,KAAyB,KAAgB,KAAyBD,GAA0B,KAAyB,IAAuB,KACtQC,EAAU7orB,UAAO,KAAyB,CAAEC,KAAM4orB,EAAW3orB,UAAW,CAAC,CAAC,gBAAiBoC,UAAW,CAAC,EAAG,eAAgBwV,SAAU,EAAGC,aAAc,SAAgC7W,EAAIC,GAAgB,EAALD,GAC5L,KAAmB,0BAAkD,mBAAvBC,EAAIuwG,mB,KAuCpDu3kB,EAAkB,IAAI,IAAe,iB,kBAErCC,E,YACF,WAC4BrprB,GAAQ,oBAChCN,KAAKM,SAAWA,I,OAGxBqprB,EAAcpprB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKmprB,GAAe,KAAyB,OAClHA,EAAclprB,UAAO,KAAyB,CAAEC,KAAMiprB,EAAehprB,UAAW,CAAC,CAAC,GAAI,gBAAiB,KAAM2B,SAAU,CAAC,KAA0B,CAAC,CAAEC,QAASmnrB,EAAiBlnrB,YAAamnrB,Q,KAwBtLC,GAAgB,IAAI,IAAe,eAwBnCC,G,+CAEAC,GAAmB,YAAcD,IAKjCE,GAAgB,IAAI,IAAe,iB,kBACnCC,E,YACF,WAAYpoqB,EAAmBqoqB,GAAgB,kCAC3C,aACKroqB,kBAAoBA,EACzB,EAAKqoqB,iBAAmBA,EAExB,EAAKzB,UAAY,GAEjB,EAAK0B,eAAiB,KAEtB,EAAKnvhB,cAAgB,IAAI,IAKzB,EAAK/wJ,SAAW,KAKhB,EAAK8oG,OAAS,KAId,EAAKwvP,UAAW,EAvB2B,E,gEA0B/C,WAAsB,OAAOtiW,KAAKmqrB,gB,IAClC,SAAkB5orB,GAASvB,KAAKoqrB,uBAAuB7orB,K,mBAEvD,WACI,OAAOvB,KAAKkqrB,iB,yBAEhB,SAAYjlrB,IACJA,EAAQyoC,eAAe,cAAgBzoC,EAAQyoC,eAAe,cAC9D1tC,KAAK+6J,cAAcl3J,S,yBAG3B,WACI7D,KAAK+6J,cAAcj3J,a,sBAEvB,WACI9D,KAAKkqrB,eAAiB,IAAI,IAAelqrB,KAAKqqrB,kBAAoBrqrB,KAAKsqrB,iBAAkBtqrB,KAAK4hB,qB,oCAQlG,SAAuBrgB,GAKfA,IACAvB,KAAKmqrB,eAAiB5orB,O,CAxDbuorB,I,OA4DrBE,EAAOzprB,UAAO,SAAwBC,GAAK,OAAO,IAAKA,GAAKwprB,GAAQ,KAAyB,KAA0B,KAAyBD,MAChJC,EAAO7jrB,UAAO,KAAyB,CAAEzF,KAAMsprB,EAAQrprB,UAAW,CAAC,CAAC,YAAae,eAAgB,SAA+BC,EAAIC,EAAKC,GAIjI,IAAIC,EAJkJ,EAALH,IACjJ,KAAsBE,EAAU+nrB,GAAe,GAC/C,KAAsB/nrB,EAAU6nrB,EAAiB,EAAG,MAC7C,EAAL/nrB,IAEF,KAAsBG,EAAK,UAA0BF,EAAI0mrB,cAAgBxmrB,EAAGE,OAC5E,KAAsBF,EAAK,UAA0BF,EAAIyorB,iBAAmBvorB,EAAGE,SAC9EsW,UAAW,SAAsB3W,EAAIC,GAGtC,IAAIE,EAHkD,EAALH,GACjD,KAAmB,IAAa,GACzB,EAALA,GAEF,KAAsBG,EAAK,UAA0BF,EAAI0orB,iBAAmBxorB,EAAGE,QAC9EG,OAAQ,CAAE6qB,SAAU,WAAYw7pB,UAAW,CAAC,QAAS,aAAcriqB,UAAW,CAAC,aAAc,aAAcqC,eAAgB,CAAC,kBAAmB,mBAAqB9P,SAAU,CAAC,UAAWpW,SAAU,CAAC,KAAmC,MAA8BuW,mBAAoBpZ,EAAK2G,MAAO,EAAGC,KAAM,EAAG/F,SAAU,SAAyBqB,EAAIC,GAAgB,EAALD,IACrW,OACA,KAAkB,EAAGsmrB,EAA+B,EAAG,EAAG,iBACzDzhrB,cAAe,I,KA0DlB+jrB,GAAoB,CAEtBC,aAAc,YAAQ,eAAgB,CAElC,YAAM,wDAAyD,YAAM,CAAE7opB,UAAW,UAKlF,YAAM,OAAQ,YAAM,CAAEA,UAAW,2BAA4BqG,UAAW,SACxE,YAAM,QAAS,YAAM,CAAErG,UAAW,0BAA2BqG,UAAW,SACxE,YAAW,yDAA0D,YAAQ,yDAC7E,YAAW,6BAA8B,CACrC,YAAM,CAAErG,UAAW,6BACnB,YAAQ,0DAEZ,YAAW,8BAA+B,CACtC,YAAM,CAAEA,UAAW,4BACnB,YAAQ,6D,kBAgBd8opB,E,YACF,WAAYrrqB,EAA0BF,EAAkBm6nB,EAAOnsoB,GAAS,kCACpE,YAAMkS,EAA0BF,EAAkBhS,KAC7CmsoB,MAAQA,EAEb,EAAKqxC,cAAgB,IAAaxjqB,MAElC,EAAKyjqB,YAAc,IAAazjqB,MANoC,E,6DASxE,WAAQ,WACJ,2BACAlnB,KAAK0qrB,cAAgB1qrB,KAAKq5oB,MAAMuxC,iBAC3B5mrB,KAAK,YAAUhE,KAAKq5oB,MAAMwxC,kBAAkB7qrB,KAAKq5oB,MAAMllW,aACvDjwS,UAAU,SAAC4mrB,GACRA,IAAgB,EAAK7qqB,eACrB,EAAKnB,OAAO,EAAKu6nB,MAAM0xC,YAG/B/qrB,KAAK2qrB,YAAc3qrB,KAAKq5oB,MAAM2xC,oBAAoB9mrB,UAAU,WACxD,EAAK6a,a,yBAIb,WACI,8BACA/e,KAAK0qrB,cAAc90qB,cACnB5V,KAAK2qrB,YAAY/0qB,kB,CA3BM,K,OA8B/B60qB,EAAiBlqrB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKiqrB,GAAkB,KAAyB,KAAkC,KAAyB,KAA0B,KAAyB,aAAW,kBAAMQ,MAAc,KAAyB,OACjSR,EAAiBhqrB,UAAO,KAAyB,CAAEC,KAAM+prB,EAAkB9prB,UAAW,CAAC,CAAC,GAAI,iBAAkB,KAAM2B,SAAU,CAAC,Q,uBAuBzH4orB,E,8BACF,WAAYn+qB,EAAaE,EAAMsjH,GAAiB,+BAC5CvwH,KAAK+M,YAAcA,EACnB/M,KAAKiN,KAAOA,EAEZjN,KAAKmrrB,uBAAyB,IAAajkqB,MAE3ClnB,KAAKorrB,sBAAwB,IAAI,IAEjCprrB,KAAKqrrB,aAAe,IAAI,IAExBrrrB,KAAK4qrB,iBAAmB,IAAI,IAE5B5qrB,KAAKgrrB,oBAAsB,IAAI,IAE/BhrrB,KAAKsrrB,YAAc,IAAI,KAAa,GAIpCtrrB,KAAKwiO,kBAAoB,QACrBv1N,IACAjN,KAAKmrrB,uBAAyBl+qB,EAAK8C,OAAO7L,UAAU,SAACoH,GACjD,EAAKigrB,+BAA+BjgrB,GACpCilH,EAAkBv5G,kBAK1BhX,KAAKorrB,sBAAsBpnrB,KAAK,YAAqB,SAACu3B,EAAGjW,GACrD,OAAOiW,EAAEonI,YAAcr9I,EAAEq9I,WAAapnI,EAAE4H,UAAY7d,EAAE6d,WACtDj/B,UAAU,SAAAokB,GAEN,EAAKuiqB,kBAAkBviqB,EAAM6a,UAAY,EAAK0npB,kBAAkB,EAAK12Y,YACrE,EAAKm3Y,YAAYppqB,OAEjB,EAAK2oqB,kBAAkBviqB,EAAMq6I,aAAe,EAAKkohB,kBAAkB,EAAK12Y,YACxE,EAAK62Y,oBAAoB9oqB,U,qBAKrC,SAAalY,GACThK,KAAKwrrB,eAAiBxhrB,EACtBhK,KAAKurrB,mC,sBAMT,WAC0B,UAAlBvrrB,KAAKm0S,WAAwC,MAAfn0S,KAAK8yG,SACnC9yG,KAAKm0S,UAAYn0S,KAAKyrrB,2BAA2BzrrB,KAAK8yG,W,yBAG9D,WACI9yG,KAAKmrrB,uBAAuBv1qB,cAC5B5V,KAAKorrB,sBAAsBtnrB,a,oCAE/B,SAAuBwkB,GACnB,IAAMwiqB,EAAc9qrB,KAAK6qrB,kBAAkBviqB,EAAM6a,SACjDnjC,KAAK4qrB,iBAAiB1oqB,KAAK4oqB,GACvBA,GACA9qrB,KAAKqrrB,aAAanpqB,KAAKliB,KAAK+M,YAAYnK,cAAciwE,gB,iCAI9D,WACI,OAAO7yE,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,MAAkB,MAAQ,Q,+BAG5D,SAAkByI,GACd,MAAmB,UAAZA,GACS,sBAAZA,GACY,uBAAZA,I,4CAGR,WAA+D,IAAhCsB,EAAgC,uDAA1BtL,KAAK0rrB,sBAElC1rrB,KAAKm0S,UADLn0S,KAAKwrrB,eAAiB,EACE,OAAPlgrB,EAAe,OAAS,QAEpCtL,KAAKwrrB,eAAiB,EACH,OAAPlgrB,EAAe,QAAU,OAGzB,W,wCAOzB,SAA2BwnG,GACvB,IAAMxnG,EAAMtL,KAAK0rrB,sBACjB,MAAY,OAAPpgrB,GAAgBwnG,GAAU,GAAc,OAAPxnG,GAAgBwnG,EAAS,EACpD,qBAEJ,0B,UAGfo4kB,EAAgB3qrB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAK0qrB,GAAiB,KAAyB,KAAoB,KAAyB,IAAuB,GAAI,KAAyB,OACzNA,EAAgBzqrB,UAAO,KAAyB,CAAEC,KAAMwqrB,EAAiB/orB,OAAQ,CAAEqgO,kBAAmB,oBAAqBx4N,SAAU,WAAY+grB,SAAU,CAAC,UAAW,YAAaj4kB,OAAQ,UAAY3wF,QAAS,CAAEkpqB,aAAc,eAAgBT,iBAAkB,mBAAoBI,oBAAqB,sBAAuBM,YAAa,iB,uBA0C1UL,E,YACF,WAAYvorB,EAAY4I,EAAKilH,GAAiB,qCACpC7tH,EAAY4I,EAAKilH,I,wCAFN26jB,I,OAKzBD,EAAW1qrB,UAAO,SAA4BC,GAAK,OAAO,IAAKA,GAAKyqrB,GAAY,KAAyB,KAAoB,KAAyB,IAAuB,GAAI,KAAyB,OAC1MA,EAAW9krB,UAAO,KAAyB,CAAEzF,KAAMuqrB,EAAYtqrB,UAAW,CAAC,CAAC,iBAAkB2X,UAAW,SAA0B3W,EAAIC,GAG/H,IAAIE,EAH2I,EAALH,GAC1I,KAAmB,IAAiB,GAC7B,EAALA,GAEF,KAAsBG,EAAK,UAA0BF,EAAI+prB,YAAc7prB,EAAGE,QACzEe,UAAW,CAAC,EAAG,gBAAiBT,SAAU,CAAC,MAAoC8D,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,gBAAiB,GAAI,EAAG,wBAAyB,CAAC,UAAW,IAAK,CAAC,iBAAkB,KAAMhG,SAAU,SAA6BqB,EAAIC,GAAgB,EAALD,IAC9P,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,sBAAuB,SAAyEmwB,GAAU,OAAOlwB,EAAIgqrB,uBAAuB95pB,IAA9J,CAA0K,qBAAsB,SAAwEA,GAAU,OAAOlwB,EAAIwprB,sBAAsBvnrB,KAAKiuB,KACxT,KAAkB,EAAGo2pB,EAAmC,EAAG,EAAG,cAAe,GAC7E,QACO,EAALvmrB,GACF,KAAkB,gBAAiB,KAAuB,EAAG2vG,EAAK1vG,EAAIuyS,UAAW,KAAuB,EAAGz0S,EAAKkC,EAAI4gO,sBACnHj8N,WAAY,CAACkkrB,IAAmB3xqB,OAAQ,CAAC,0HAA2HtS,cAAe,EAAGsJ,KAAM,CAAE6zB,UAAW,CAAC4mpB,GAAkBC,iB,KAsC/NqB,GAAkB,IAAI,IAAe,mBAUvC3tjB,GAAS,EAEP4tjB,G,+CAIAC,G,YACF,WAAYh/qB,GAAW,oBACnB/M,KAAK+M,YAAcA,IAGrBi/qB,GAAwB,YAAW,YAAmBD,IAAuB,W,kBAK7EE,E,YACF,WAAYvprB,EAAYoK,EAAoB6xE,EAAewzB,GAAc,kCACrE,YAAMzvG,KACDoK,mBAAqBA,EAC1B,EAAKqlG,eAAiBA,EAEtB,EAAK02kB,MAAQ,IAAI,IAEjB,EAAKqD,eAAiB,EAEtB,EAAKC,sBAAwB,EAE7B,EAAKC,kBAAoB,IAAallqB,MAEtC,EAAKmlqB,sBAAwB,IAAanlqB,MAC1C,EAAKolqB,eAAiB,KAEtB,EAAKC,eAAiB,QAEtB,EAAKC,oBAAsB,IAAI,IAE/B,EAAKC,YAAc,IAAI,IAEvB,EAAKC,cAAgB,IAAI,IAEzB,EAAKC,kBAAoB,IAAI,KAAa,GAC1C,EAAKC,SAAW1ujB,KAChB,EAAKskG,kBAAoB7jJ,GAAiBA,EAAc6jJ,kBACpD7jJ,EAAc6jJ,kBAAoB,QACtC,EAAKqqd,qBAAoBlumB,GAAoD,MAAnCA,EAAckumB,oBACpDlumB,EAAckumB,kBAClB,EAAKC,iBAAgBnumB,GAAgD,MAA/BA,EAAcmumB,gBAChDnumB,EAAcmumB,cA/BmD,E,gEAkCzE,WAAsB,OAAO9srB,KAAK+srB,gB,IAClC,SAAkBxrrB,GAASvB,KAAK+srB,eAAiB,YAAsBxrrB,K,yBAEvE,WAAsB,OAAOvB,KAAKssrB,gB,IAClC,SAAkB/qrB,GACdvB,KAAKksrB,eAAiB,YAAqB3qrB,EAAO,Q,6BAGtD,WAA0B,OAAOvB,KAAKgtrB,oB,IACtC,SAAsBzrrB,GAClBvB,KAAKgtrB,mBAAqB,QAAQhqqB,KAAKzhB,GAASA,EAAQ,KAAOA,I,2BAGnE,WAAwB,OAAOvB,KAAKitrB,kB,IACpC,SAAoB1rrB,GAChB,IAAMqB,EAAgB5C,KAAK+M,YAAYnK,cACvCA,EAAcD,UAAU6I,OAAxB,yBAAiDxL,KAAK81D,kBAClDv0D,GACAqB,EAAcD,UAAUE,IAAxB,yBAA8CtB,IAElDvB,KAAKitrB,iBAAmB1rrB,I,mCAQ5B,WAAqB,WAGX2sgB,EAAgBlugB,KAAKksrB,eAAiBlsrB,KAAKktrB,eAAeltrB,KAAKksrB,gBAGrE,GAAIlsrB,KAAKssrB,gBAAkBp+K,EAAe,CACtC,IAAMi/K,EAAoC,MAAvBntrB,KAAKssrB,eACxB,IAAKa,EAAY,CACbntrB,KAAK2srB,kBAAkBzqqB,KAAKliB,KAAKotrB,mBAAmBl/K,IAGpD,IAAMh9W,EAAUlxJ,KAAKqtrB,gBAAgBzqrB,cACrCsuJ,EAAQ3lJ,MAAMy8B,UAAYkpH,EAAQr+E,aAAe,KAIrDtuE,QAAQC,UAAU6Z,KAAK,WACnB,EAAKwqqB,MAAMx1qB,QAAQ,SAACirH,EAAK30H,GAAN,OAAgB20H,EAAIgkO,SAAW34V,IAAUukgB,IACvDi/K,IACD,EAAKX,oBAAoBtqqB,KAAKgsf,GAG9B,EAAKm/K,gBAAgBzqrB,cAAc2I,MAAMy8B,UAAY,MAKjEhoC,KAAK6orB,MAAMx1qB,QAAQ,SAACirH,EAAK30H,GACrB20H,EAAIt0H,SAAWL,EAAQukgB,EAGI,MAAvB,EAAKo+K,gBAA0C,GAAhBhujB,EAAIt0H,UAAkBs0H,EAAIxrB,SACzDwrB,EAAIxrB,OAASo7Z,EAAgB,EAAKo+K,kBAGtCtsrB,KAAKssrB,iBAAmBp+K,IACxBlugB,KAAKssrB,eAAiBp+K,EACtBlugB,KAAK8M,mBAAmBkK,kB,gCAGhC,WAAkB,WACdhX,KAAKstrB,4BACLttrB,KAAKutrB,wBAGLvtrB,KAAKosrB,kBAAoBpsrB,KAAK6orB,MAAM5jrB,QAAQf,UAAU,WAIlD,GAHsB,EAAKgprB,eAAe,EAAKhB,kBAGzB,EAAKI,eAEvB,IADA,IAAMlujB,EAAO,EAAKyqjB,MAAM3gqB,UACfrgB,EAAI,EAAGA,EAAIu2H,EAAKj6H,OAAQ0D,IAC7B,GAAIu2H,EAAKv2H,GAAGy6V,SAAU,CAIlB,EAAK4pV,eAAiB,EAAKI,eAAiBzkrB,EAC5C,MAIZ,EAAKiF,mBAAmBkK,mB,uCAIhC,WAAyB,WAIrBhX,KAAKwtrB,SAASvorB,QACTjB,KAAK,YAAUhE,KAAKwtrB,WACpBtprB,UAAU,SAACk6H,GACZ,EAAKyqjB,MAAM7rjB,MAAMoB,EAAKjpH,OAAO,SAAAmpH,GAAG,OAAIA,EAAI2rjB,mBAAqB,KAC7D,EAAKpB,MAAMpkhB,sB,yBAGnB,WACIzkK,KAAK6orB,MAAM3nqB,UACXlhB,KAAKosrB,kBAAkBx2qB,cACvB5V,KAAKqsrB,sBAAsBz2qB,gB,2BAG/B,WACQ5V,KAAKytrB,YACLztrB,KAAKytrB,WAAWC,8B,2BAGxB,SAAc/jrB,GACV3J,KAAKysrB,YAAYvqqB,KAAKliB,KAAKotrB,mBAAmBzjrB,M,gCAElD,SAAmBA,GACf,IAAM2e,EAAQ,IAAIwjqB,GAKlB,OAJAxjqB,EAAM3e,MAAQA,EACV3J,KAAK6orB,OAAS7orB,KAAK6orB,MAAM1krB,SACzBmkB,EAAMg2G,IAAMt+H,KAAK6orB,MAAM3gqB,UAAUve,IAE9B2e,I,mCAQX,WAAqB,WACbtoB,KAAKqsrB,uBACLrsrB,KAAKqsrB,sBAAsBz2qB,cAE/B5V,KAAKqsrB,sBAAwB,IAAK,WAAL,cAASrsrB,KAAK6orB,MAAMp/qB,IAAI,SAAA60H,GAAG,OAAIA,EAAIy8B,kBAC3D72J,UAAU,kBAAM,EAAK4I,mBAAmBkK,mB,4BAGjD,SAAerN,GAIX,OAAO4U,KAAKG,IAAI1e,KAAK6orB,MAAM1krB,OAAS,EAAGoa,KAAKukC,IAAIn5C,GAAS,EAAG,M,4BAGhE,SAAe9B,GACX,8BAAwB7H,KAAK4srB,SAA7B,YAAyC/krB,K,8BAG7C,SAAiBA,GACb,gCAA0B7H,KAAK4srB,SAA/B,YAA2C/krB,K,sCAM/C,SAAyB8lrB,GACrB,GAAK3trB,KAAK+srB,gBAAmB/srB,KAAKmsrB,sBAAlC,CAGA,IAAMj7hB,EAAUlxJ,KAAKqtrB,gBAAgBzqrB,cACrCsuJ,EAAQ3lJ,MAAMf,OAASxK,KAAKmsrB,sBAAwB,KAGhDnsrB,KAAKqtrB,gBAAgBzqrB,cAAc6uB,eACnCy/H,EAAQ3lJ,MAAMf,OAASmjrB,EAAY,S,yCAI3C,WACI,IAAMz8hB,EAAUlxJ,KAAKqtrB,gBAAgBzqrB,cACrC5C,KAAKmsrB,sBAAwBj7hB,EAAQr+E,aACrCq+E,EAAQ3lJ,MAAMf,OAAS,GACvBxK,KAAK0srB,cAAcxqqB,S,0BAGvB,SAAao8G,EAAKsvjB,EAAWjkrB,GACpB20H,EAAItxG,WACLhtB,KAAK+uX,cAAgB6+T,EAAUjsK,WAAah4gB,K,0BAIpD,SAAa20H,EAAKy+C,GACd,OAAIz+C,EAAItxG,SACG,KAEJhtB,KAAK+uX,gBAAkBhyM,EAAM,GAAK,I,8BAG7C,SAAiBpqE,EAAahpG,GACtBgpG,IACA3yG,KAAKytrB,WAAW9rK,WAAah4gB,O,CArOVqirB,I,OAyO/BC,EAAiB1rrB,UAAO,SAAkCC,GAAK,OAAO,IAAKA,GAAKyrrB,GAAkB,KAAyB,KAAoB,KAAyB,KAA2B,KAAyBJ,GAAiB,GAAI,KAAyB,IAAuB,KACjSI,EAAiBxrrB,UAAO,KAAyB,CAAEC,KAAMurrB,EAAkB9prB,OAAQ,CAAEoqrB,eAAgB,iBAAkB/pd,kBAAmB,oBAAqBqqd,kBAAmB,oBAAqBC,cAAe,gBAAiB/9T,cAAe,gBAAiBj5T,gBAAiB,mBAAqB3zC,QAAS,CAAEqqqB,oBAAqB,sBAAuBC,YAAa,cAAeC,cAAe,gBAAiBC,kBAAmB,qBAAuBrqrB,SAAU,CAAC,Q,uBAyD/currB,E,YACF,WAAYnrrB,EAAY6tH,EAAmB5xC,EAAeuxF,GAAa,qCAC7DxtK,EAAY6tH,EAAmB5xC,EAAeuxF,I,wCAFlC+7gB,I,OAK1B4B,EAAYttrB,UAAO,SAA6BC,GAAK,OAAO,IAAKA,GAAKqtrB,GAAa,KAAyB,KAAoB,KAAyB,KAA2B,KAAyBhC,GAAiB,GAAI,KAAyB,IAAuB,KAClRgC,EAAY1nrB,UAAO,KAAyB,CAAEzF,KAAMmtrB,EAAaltrB,UAAW,CAAC,CAAC,kBAAmBe,eAAgB,SAAoCC,EAAIC,EAAKC,GAGtJ,IAAIC,EAHuK,EAALH,GACtK,KAAsBE,EAAUmorB,GAAQ,GACjC,EAALrorB,GAEF,KAAsBG,EAAK,UAA0BF,EAAI4rrB,SAAW1rrB,IACnEwW,UAAW,SAA2B3W,EAAIC,GAI3C,IAAIE,EAJuD,EAALH,IACtD,KAAmB4vG,EAAK,GACxB,KAAmBE,EAAK,IACjB,EAAL9vG,IAEF,KAAsBG,EAAK,UAA0BF,EAAIyrrB,gBAAkBvrrB,EAAGE,OAC9E,KAAsBF,EAAK,UAA0BF,EAAI6rrB,WAAa3rrB,EAAGE,SACxEe,UAAW,CAAC,EAAG,iBAAkBwV,SAAU,EAAGC,aAAc,SAAkC7W,EAAIC,GAAgB,EAALD,GAC9G,KAAmB,+BAAgCC,EAAIkrrB,cAAvD,CAAsE,gCAAwD,UAAvBlrrB,EAAI2qrB,iBAC1GpqrB,OAAQ,CAAE0zD,MAAO,QAAS9sC,cAAe,iBAAmBrQ,SAAU,CAAC,eAAgBpW,SAAU,CAAC,KAA0B,CAAC,CACtHC,QAASwnrB,GACTvnrB,YAAaqrrB,KACZ,MAAoCznrB,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,gBAAiB,gBAAiB,oBAAqB,eAAgB,sBAAuB,CAAC,YAAa,IAAK,CAAC,QAAS,oCAAqC,OAAQ,MAAO,qBAAsB,GAAI,aAAc,GAAI,yBAA0B,GAAI,EAAG,KAAM,uBAAwB,WAAY,oBAAqB,QAAS,iBAAkB,EAAG,QAAS,WAAY,CAAC,EAAG,wBAAyB,CAAC,iBAAkB,IAAK,CAAC,OAAQ,WAAY,EAAG,KAAM,sBAAuB,UAAW,WAAY,SAAU,oBAAqB,cAAe,eAAgB,EAAG,QAAS,WAAY,CAAC,OAAQ,MAAO,qBAAsB,GAAI,aAAc,GAAI,yBAA0B,GAAI,EAAG,gBAAiB,sBAAuB,EAAG,KAAM,WAAY,oBAAqB,QAAS,kBAAmB,CAAC,EAAG,yBAA0B,CAAC,EAAG,QAAS,CAAC,EAAG,mBAAoB,CAAC,OAAQ,WAAY,EAAG,KAAM,UAAW,WAAY,SAAU,oBAAqB,cAAe,iBAAkBhG,SAAU,SAA8BqB,EAAIC,GAAgB,EAALD,IAC5kC,KAAsB,EAAG,iBAAkB,EAAG,GAC9C,KAAkB,eAAgB,SAAqEmwB,GAAU,OAAOlwB,EAAIkzoB,cAAchjnB,IAA1I,CAAsJ,qBAAsB,SAA2EA,GAAU,OAAOlwB,EAAImtX,cAAgBj9V,IAC5R,KAAkB,EAAG22pB,EAA4B,EAAG,GAAI,MAAO,GAC/D,OACA,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,EAAGM,EAAqC,EAAG,EAAG,eAAgB,GAChF,QACO,EAALpnrB,IACF,KAAkB,gBAAiBC,EAAImtX,eAAiB,EAAxD,CAA2D,gBAAiBntX,EAAImnB,cAAhF,CAA+F,oBAAqBnnB,EAAIirrB,mBACxH,KAAiB,GACjB,KAAkB,UAAWjrrB,EAAIinrB,OACjC,KAAiB,GACjB,KAAmB,0BAAkD,mBAAvBjnrB,EAAIuwG,gBAClD,KAAiB,GACjB,KAAkB,UAAWvwG,EAAIinrB,SAChCtirB,WAAY,WAAc,MAAO,CAACunrB,GAAc,IAAgBC,GAAoB,IAAkB,IAAwB,IAAa,IAAwB9C,KAAgBnyqB,OAAQ,CAAC,w/CAAy/CtS,cAAe,I,KA+DvsDwnrB,G,+CAEAC,GAA+B,YAAcD,I,kBAK7CD,E,YACF,WAAYrrrB,GAAU,kCAClB,aACKA,WAAaA,EAFA,E,0DAKtB,WACI1C,KAAK0C,WAAWE,cAAcksB,U,2BAElC,WACI,OAAO9uB,KAAK0C,WAAWE,cAAc8phB,a,4BAEzC,WACI,OAAO1shB,KAAK0C,WAAWE,cAAckwE,gB,CAbZm7mB,I,OAgBjCF,EAAmBxtrB,UAAO,SAAoCC,GAAK,OAAO,IAAKA,GAAKutrB,GAAoB,KAAyB,OACjIA,EAAmBttrB,UAAO,KAAyB,CAAEC,KAAMqtrB,EAAoBptrB,UAAW,CAAC,CAAC,GAAI,qBAAsB,KAAM4X,SAAU,EAAGC,aAAc,SAAyC7W,EAAIC,GAAgB,EAALD,IACvM,KAAmB,kBAAmBC,EAAIorB,UAC1C,KAAmB,mBAAoBprB,EAAIorB,YAC1C7qB,OAAQ,CAAE6qB,SAAU,YAAc1qB,SAAU,CAAC,Q,KAwBhDiiJ,GAA8B,YAAgC,CAAEC,SAAS,I,kBAoBzE0piB,E,8BACF,WAAYnhrB,EAAaD,EAAoBQ,EAAgBL,EAAM3J,EAAS6J,EAAWglG,GAAc,+BACjGnyG,KAAK+M,YAAcA,EACnB/M,KAAK8M,mBAAqBA,EAC1B9M,KAAKsN,eAAiBA,EACtBtN,KAAKiN,KAAOA,EACZjN,KAAKsD,QAAUA,EACftD,KAAKmN,UAAYA,EACjBnN,KAAKmyG,eAAiBA,EAEtBnyG,KAAKmurB,gBAAkB,EAEvBnurB,KAAKourB,uBAAwB,EAE7BpurB,KAAKwD,WAAa,IAAI,IAEtBxD,KAAKqurB,yBAA0B,EAE/BrurB,KAAKsurB,qBAAsB,EAE3BturB,KAAKuurB,sBAAuB,EAE5BvurB,KAAKkqJ,eAAiB,IAAI,IAK1BlqJ,KAAK6srB,mBAAoB,EACzB7srB,KAAKssrB,eAAiB,EAEtBtsrB,KAAKwurB,mBAAqB,IAAI,IAE9BxurB,KAAKyurB,aAAe,IAAI,IAExBnrrB,EAAQ+nB,kBAAkB,WACtB,YAAUte,EAAYnK,cAAe,cAChCoB,KAAK,YAAU,EAAKR,aACpBU,UAAU,WACX,EAAKwqrB,qB,0BAKjB,WAAsB,OAAO1urB,KAAKssrB,gB,IAClC,SAAkB/qrB,GACdA,EAAQ,YAAqBA,GACzBvB,KAAKssrB,gBAAkB/qrB,IACvBvB,KAAKourB,uBAAwB,EAC7BpurB,KAAKssrB,eAAiB/qrB,EAClBvB,KAAK+nB,aACL/nB,KAAK+nB,YAAY48I,iBAAiBpjK,M,6BAI9C,WAAe,WAEX,YAAUvB,KAAK2urB,mBAAmB/rrB,cAAe,aAAc2hJ,IAC1DvgJ,KAAK,YAAUhE,KAAKwD,aACpBU,UAAU,WACX,EAAK0qrB,sBAAsB,YAE/B,YAAU5urB,KAAK6urB,eAAejsrB,cAAe,aAAc2hJ,IACtDvgJ,KAAK,YAAUhE,KAAKwD,aACpBU,UAAU,WACX,EAAK0qrB,sBAAsB,a,gCAGnC,WAAkB,WACRE,EAAY9urB,KAAKiN,KAAOjN,KAAKiN,KAAK8C,OAAS,YAAG,MAC9CizN,EAAShjO,KAAKsN,eAAeyC,OAAO,KACpCg/qB,EAAU,WACZ,EAAKC,mBACL,EAAKtB,6BAET1trB,KAAK+nB,YAAc,IAAI,IAAgB/nB,KAAK64J,QACvCmb,0BAA0Bh0K,KAAK0rrB,uBAC/BhnhB,iBACAz8I,WACLjoB,KAAK+nB,YAAY48I,iBAAiB3kK,KAAKssrB,gBAGN,oBAA1B7jgB,sBAAwCA,sBAAsBsmgB,GAAWA,IAGhF,YAAMD,EAAW9rd,EAAQhjO,KAAK64J,OAAO5zJ,SAASjB,KAAK,YAAUhE,KAAKwD,aAAaU,UAAU,WAIrF,EAAKZ,QAAQgpC,IAAI,kBAAM/nC,QAAQC,UAAU6Z,KAAK0wqB,KAC9C,EAAKhnqB,YAAYisJ,0BAA0B,EAAK03gB,yBAKpD1rrB,KAAK+nB,YAAYhY,OAAO/L,KAAK,YAAUhE,KAAKwD,aAAaU,UAAU,SAAA+qrB,GAC/D,EAAKR,aAAavsqB,KAAK+sqB,GACvB,EAAKC,aAAaD,O,mCAG1B,WAEQjvrB,KAAKmvrB,gBAAkBnvrB,KAAK64J,OAAO10J,SACnCnE,KAAKgvrB,mBACLhvrB,KAAKmvrB,eAAiBnvrB,KAAK64J,OAAO10J,OAClCnE,KAAK8M,mBAAmBkK,gBAIxBhX,KAAKourB,wBACLpurB,KAAKovrB,eAAepvrB,KAAKssrB,gBACzBtsrB,KAAKqvrB,0BACLrvrB,KAAK0trB,4BACL1trB,KAAKourB,uBAAwB,EAC7BpurB,KAAK8M,mBAAmBkK,gBAIxBhX,KAAKsvrB,yBACLtvrB,KAAKuvrB,2BACLvvrB,KAAKsvrB,wBAAyB,EAC9BtvrB,KAAK8M,mBAAmBkK,kB,yBAGhC,WACIhX,KAAKwD,WAAWK,OAChB7D,KAAKwD,WAAWM,WAChB9D,KAAKkqJ,eAAepmJ,a,4BAGxB,SAAewkB,GAEX,IAAI,YAAeA,GAGnB,OAAQA,EAAM2E,SACV,KAAK,IACL,KAAK,IACGjtB,KAAK2hhB,aAAe3hhB,KAAK+uX,gBACzB/uX,KAAKwurB,mBAAmBtsqB,KAAKliB,KAAK2hhB,YAClC3hhB,KAAKwvrB,cAAclnqB,IAEvB,MACJ,QACItoB,KAAK+nB,YAAYyF,UAAUlF,M,+BAMvC,WAAiB,WACPkrF,EAAcxzG,KAAK+M,YAAYnK,cAAc4wG,YAI/CA,IAAgBxzG,KAAKyvrB,sBACrBzvrB,KAAKyvrB,oBAAsBj8kB,GAAe,GAG1CxzG,KAAKsD,QAAQgpC,IAAI,WACb,EAAK0ipB,mBACL,EAAKtB,4BACL,EAAK5grB,mBAAmBkK,oB,8BAWpC,WACIhX,KAAK0vrB,0BACL1vrB,KAAKqvrB,0BACLrvrB,KAAKuvrB,6B,sBAGT,WACI,OAAOvvrB,KAAK+nB,YAAc/nB,KAAK+nB,YAAY6F,gBAAkB,G,IAGjE,SAAersB,GACNvB,KAAKi2K,cAAc10K,IAAUvB,KAAK2hhB,aAAepghB,GAAUvB,KAAK+nB,aAGrE/nB,KAAK+nB,YAAYkJ,cAAc1vB,K,2BAMnC,SAAcoI,GACV,IAAK3J,KAAK64J,OACN,OAAO,EAEX,IAAMv6B,EAAMt+H,KAAK64J,OAAS74J,KAAK64J,OAAO3wI,UAAUve,GAAS,KACzD,QAAS20H,IAAQA,EAAItxG,W,0BAMzB,SAAampB,GAIT,GAHIn2C,KAAKqurB,yBACLrurB,KAAKovrB,eAAej5oB,GAEpBn2C,KAAK64J,QAAU74J,KAAK64J,OAAO10J,OAAQ,CACnCnE,KAAK64J,OAAO3wI,UAAUiuB,GAAUrnB,QAIhC,IAAM2oG,EAAcz3H,KAAK2vrB,kBAAkB/srB,cACrC0I,EAAMtL,KAAK0rrB,sBAEbj0jB,EAAY/+C,WADL,OAAPptE,EACyB,EAGAmsH,EAAY5+C,YAAc4+C,EAAY3kD,e,iCAK3E,WACI,OAAO9yE,KAAKiN,MAA4B,QAApBjN,KAAKiN,KAAK1L,MAAkB,MAAQ,Q,sCAG5D,WACI,IAAIvB,KAAK6srB,kBAAT,CAGA,IAAM+C,EAAiB5vrB,KAAK4vrB,eACtBC,EAA4C,QAA/B7vrB,KAAK0rrB,uBAAmCkE,EAAiBA,EAO5E5vrB,KAAK8vrB,SAASltrB,cAAc2I,MAAMo2B,UAAlC,qBAA4DpjB,KAAK06B,MAAM42oB,GAAvE,QAKI7vrB,KAAKmN,UAAUuxL,SAAW1+L,KAAKmN,UAAUyxL,QACzC5+L,KAAK2vrB,kBAAkB/srB,cAAc81E,WAAa,M,0BAI1D,WAAuB,OAAO14E,KAAKmurB,iB,IACnC,SAAmB5srB,GACfvB,KAAK+vrB,UAAUxurB,K,2BAUnB,SAAcyF,GAIV,OAAOhH,KAAK+vrB,UAAU/vrB,KAAKmurB,iBADQ,UAAbnnrB,GAAyB,EAAI,GAFhChH,KAAK2vrB,kBAAkB/srB,cAAckwE,YAEa,K,mCAIzE,SAAsB9rE,GAClBhH,KAAK0urB,gBACL1urB,KAAKgwrB,cAAchprB,K,4BAQvB,SAAeiprB,GACX,IAAIjwrB,KAAK6srB,kBAAT,CAGA,IAAMqD,EAAgBlwrB,KAAK64J,OAAS74J,KAAK64J,OAAO3wI,UAAU+nqB,GAAc,KACxE,GAAKC,EAAL,CAIA,IAEIC,EAAgBC,EAFdC,EAAarwrB,KAAK2vrB,kBAAkB/srB,cAAckwE,YACxD,EAAoCo9mB,EAAcxtrB,WAAWE,cAArD8phB,EAAR,EAAQA,WAAY55c,EAApB,EAAoBA,YAEc,OAA9B9yE,KAAK0rrB,sBAEL0E,GADAD,EAAiBzjK,GACgB55c,EAIjCq9mB,GADAC,EAAgBpwrB,KAAK8vrB,SAASltrB,cAAckwE,YAAc45c,GACzB55c,EAErC,IAAMw9mB,EAAmBtwrB,KAAK4vrB,eACxBW,EAAkBvwrB,KAAK4vrB,eAAiBS,EAC1CF,EAAiBG,EAEjBtwrB,KAAK4vrB,gBAAkBU,EAAmBH,EA7TvB,GA+TdC,EAAgBG,IAErBvwrB,KAAK4vrB,gBAAkBQ,EAAgBG,EAjUpB,Q,qCA4U3B,WACI,GAAIvwrB,KAAK6srB,kBACL7srB,KAAKqurB,yBAA0B,MAE9B,CACD,IAAMhlK,EAAYrphB,KAAK8vrB,SAASltrB,cAAci2E,YAAc74E,KAAK+M,YAAYnK,cAAckwE,YACtFu2c,IACDrphB,KAAK4vrB,eAAiB,GAEtBvmK,IAAcrphB,KAAKqurB,yBACnBrurB,KAAK8M,mBAAmBkK,eAE5BhX,KAAKqurB,wBAA0BhlK,K,qCAYvC,WACQrphB,KAAK6srB,kBACL7srB,KAAKsurB,oBAAsBturB,KAAKuurB,sBAAuB,GAIvDvurB,KAAKuurB,qBAA8C,GAAvBvurB,KAAK4vrB,eACjC5vrB,KAAKsurB,oBAAsBturB,KAAK4vrB,gBAAkB5vrB,KAAKwwrB,wBACvDxwrB,KAAK8M,mBAAmBkK,kB,mCAUhC,WAGI,OAFwBhX,KAAK8vrB,SAASltrB,cAAci2E,YACjC74E,KAAK2vrB,kBAAkB/srB,cAAckwE,aACf,I,uCAG7C,WACI,IAAM29mB,EAAezwrB,KAAK64J,QAAU74J,KAAK64J,OAAO10J,OAC5CnE,KAAK64J,OAAO3wI,UAAUloB,KAAK+uX,eAAiB,KAC1C2hU,EAAuBD,EAAeA,EAAa/trB,WAAWE,cAAgB,KAChF8trB,EACA1wrB,KAAK2wrB,QAAQC,eAAeF,GAG5B1wrB,KAAK2wrB,QAAQ3jgB,S,2BAIrB,WACIhtL,KAAKkqJ,eAAermJ,S,mCAOxB,SAAsBmD,EAAW+uY,GAAU,WAGnCA,GAAmC,MAArBA,EAAWx2T,QAAwC,IAAtBw2T,EAAWx2T,SAI1Dv/E,KAAK0urB,gBAEL,YApZoB,IAKG,KAiZlB1qrB,KAAK,YAAU,YAAMhE,KAAKkqJ,eAAgBlqJ,KAAKwD,cAC/CU,UAAU,WACX,MAAwC,EAAK8rrB,cAAchprB,GAAhCygJ,EAA3B,EAA2BA,UAEV,IAAbA,GAAkBA,GAFtB,EAAQopiB,oBAGJ,EAAKnC,qB,uBASjB,SAAU1krB,GACN,GAAIhK,KAAK6srB,kBACL,MAAO,CAAEgE,kBAAmB,EAAGppiB,SAAU,GAE7C,IAAMopiB,EAAoB7wrB,KAAKwwrB,wBAM/B,OALAxwrB,KAAKmurB,gBAAkB5vqB,KAAKukC,IAAI,EAAGvkC,KAAKG,IAAImyqB,EAAmB7mrB,IAG/DhK,KAAKsvrB,wBAAyB,EAC9BtvrB,KAAKqvrB,0BACE,CAAEwB,oBAAmBppiB,SAAUznJ,KAAKmurB,qB,UAGnDD,EAAsB3trB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAK0trB,GAAuB,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAuB,KAAyB,IAAuB,GAAI,KAAyB,KAAgB,KAAyB,KAAkB,KAAyB,IAAuB,KAC1bA,EAAsBztrB,UAAO,KAAyB,CAAEC,KAAMwtrB,EAAuB/rrB,OAAQ,CAAE0qrB,kBAAmB,uB,uBAqC5GiE,E,YACF,WAAYpurB,EAAY6tH,EAAmB2whB,EAAe51oB,EAAKg3H,EAAQt7G,EAAUkpJ,GAAa,kCAC1F,YAAMxtK,EAAY6tH,EAAmB2whB,EAAe51oB,EAAKg3H,EAAQt7G,EAAUkpJ,KACtE4sB,gBAAiB,EAFoE,E,gEAK9F,WAAsB,OAAO98L,KAAK88L,gB,IAClC,SAAkBv7L,GAASvB,KAAK88L,eAAiB,YAAsBv7L,K,2BACvE,SAAc+mB,GACVA,EAAM4E,qB,CATkBghqB,I,OAYhC4C,EAAkBvwrB,UAAO,SAAmCC,GAAK,OAAO,IAAKA,GAAKswrB,GAAmB,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAuB,KAAyB,IAAuB,GAAI,KAAyB,KAAgB,KAAyB,KAAkB,KAAyB,IAAuB,KAC9aA,EAAkBrwrB,UAAO,KAAyB,CAAEC,KAAMowrB,EAAmB3urB,OAAQ,CAAE4mB,cAAe,iBAAmBzmB,SAAU,CAAC,Q,uBAgC9HwrrB,E,YACF,WAAYprrB,EAAY6tH,EAAmB2whB,EAAe51oB,EAAKg3H,EAAQt7G,EAAUkpJ,GAAa,qCACpFxtK,EAAY6tH,EAAmB2whB,EAAe51oB,EAAKg3H,EAAQt7G,EAAUkpJ,I,wCAFxD4ghB,I,OAK3BhD,EAAavtrB,UAAO,SAA8BC,GAAK,OAAO,IAAKA,GAAKstrB,GAAc,KAAyB,KAAoB,KAAyB,KAA2B,KAAyB,KAAuB,KAAyB,IAAuB,GAAI,KAAyB,KAAgB,KAAyB,KAAkB,KAAyB,IAAuB,KAC/ZA,EAAa3nrB,UAAO,KAAyB,CAAEzF,KAAMotrB,EAAcntrB,UAAW,CAAC,CAAC,mBAAoBe,eAAgB,SAAqCC,EAAIC,EAAKC,GAG1J,IAAIC,EAH2K,EAALH,GAC1K,KAAsBE,EAAUksrB,GAAoB,GAC7C,EAALpsrB,GAEF,KAAsBG,EAAK,UAA0BF,EAAIi3J,OAAS/2J,IACjEwW,UAAW,SAA4B3W,EAAIC,GAO5C,IAAIE,EAPwD,EAALH,IACvD,KAAmB2nrB,EAAW,GAC9B,KAAmBr6f,EAAK,GACxB,KAAmBC,EAAK,GACxB,KAAmBG,EAAK,GACxB,KAAmB/6E,EAAK,IACjB,EAAL3yG,IAEF,KAAsBG,EAAK,UAA0BF,EAAI+urB,QAAU7urB,EAAGE,OACtE,KAAsBF,EAAK,UAA0BF,EAAI+trB,kBAAoB7trB,EAAGE,OAChF,KAAsBF,EAAK,UAA0BF,EAAIkurB,SAAWhurB,EAAGE,OACvE,KAAsBF,EAAK,UAA0BF,EAAIitrB,eAAiB/srB,EAAGE,OAC7E,KAAsBF,EAAK,UAA0BF,EAAI+srB,mBAAqB7srB,EAAGE,SAChFe,UAAW,CAAC,EAAG,kBAAmBwV,SAAU,EAAGC,aAAc,SAAmC7W,EAAIC,GAAgB,EAALD,GAChH,KAAmB,6CAA8CC,EAAIysrB,wBAArE,CAA8F,qBAAmD,OAA7BzsrB,EAAI8prB,wBACvHvprB,OAAQ,CAAE4sX,cAAe,iBAAmB5sW,QAAS,CAAEqsqB,mBAAoB,qBAAsBC,aAAc,gBAAkBnsrB,SAAU,CAAC,MAAoCuW,mBAAoBpZ,EAAK2G,MAAO,GAAIC,KAAM,EAAGC,OAAQ,CAAC,CAAC,cAAe,OAAQ,aAAc,GAAI,EAAG,4BAA6B,mCAAoC,mBAAoB,EAAG,oBAAqB,QAAS,YAAa,YAAa,CAAC,oBAAqB,IAAK,CAAC,EAAG,qCAAsC,CAAC,EAAG,0BAA2B,EAAG,WAAY,CAAC,mBAAoB,IAAK,CAAC,OAAQ,UAAW,EAAG,eAAgB,EAAG,qBAAsB,CAAC,UAAW,IAAK,CAAC,EAAG,kBAAmB,CAAC,cAAe,OAAQ,aAAc,GAAI,EAAG,4BAA6B,kCAAmC,mBAAoB,EAAG,oBAAqB,YAAa,QAAS,YAAa,CAAC,gBAAiB,KAAMhG,SAAU,SAA+BqB,EAAIC,GAAgB,EAALD,IACr6B,OACA,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,QAAS,WAAwD,OAAOC,EAAImvrB,sBAAsB,WAApH,CAAkI,YAAa,SAAwDj/pB,GAAU,OAAOlwB,EAAIgtrB,sBAAsB,SAAU98pB,IAA5P,CAAwQ,WAAY,WAA2D,OAAOlwB,EAAI8srB,kBAC1V,KAAiB,EAAG,MAAO,GAC3B,OACA,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,UAAW,SAAsD58pB,GAAU,OAAOlwB,EAAIowB,eAAeF,KACvH,KAAsB,EAAG,MAAO,EAAG,GACnC,KAAkB,oBAAqB,WAAoE,OAAOlwB,EAAIovrB,sBACtH,KAAsB,EAAG,MAAO,GAChC,KAAoB,GACpB,OACA,KAAiB,EAAG,eACpB,OACA,OACA,KAAsB,GAAI,MAAO,EAAG,GACpC,KAAkB,YAAa,SAAyDl/pB,GAAU,OAAOlwB,EAAIgtrB,sBAAsB,QAAS98pB,IAA5I,CAAwJ,QAAS,WAAyD,OAAOlwB,EAAImvrB,sBAAsB,UAA3P,CAAwQ,WAAY,WAA4D,OAAOnvrB,EAAI8srB,kBAC3V,KAAiB,GAAI,MAAO,GAC5B,QACO,EAAL/srB,IACF,KAAmB,qCAAsCC,EAAI2srB,sBAC7D,KAAkB,oBAAqB3srB,EAAI2srB,sBAAwB3srB,EAAImnB,eACvE,KAAiB,GACjB,KAAmB,0BAAkD,mBAAvBnnB,EAAIuwG,gBAClD,KAAiB,GACjB,KAAmB,qCAAsCvwG,EAAI0srB,qBAC7D,KAAkB,oBAAqB1srB,EAAI0srB,qBAAuB1srB,EAAImnB,iBACrExiB,WAAY,CAAC,IAAkB,IAA0B+irB,GAAYxwqB,OAAQ,CAAC,4mFAA+mFtS,cAAe,I,uBAqa/sFyqrB,E,sDAENA,EAAc1wrB,UAAO,SAA+BC,GAAK,OAAO,IAAKA,GAAKywrB,IAC1EA,EAAc/3qB,UAAO,KAAwB,CAAExY,KAAMuwrB,IACrDA,EAAc93qB,UAAO,KAAwB,CAAEC,QAAS,CAAC,CAC7C,IACA,IACA,IACA,IACA,IACA,KACD,O,8BCpnEX,YAOmEgkB,EAAOC,QAGjE,WAAc,aAEnB,IAAI6zpB,EA6HA9orB,EA3HJ,SAAS4mF,IACL,OAAOkimB,EAAav5oB,MAAM,KAAMr+B,WASpC,SAAStD,EAAQwoC,GACb,OACIA,aAAiBj0C,OACyB,mBAA1CiS,OAAOkW,UAAUT,SAASiD,KAAKspB,GAIvC,SAAS6sJ,EAAS7sJ,GAGd,OACa,MAATA,GAC0C,oBAA1ChiC,OAAOkW,UAAUT,SAASiD,KAAKspB,GAIvC,SAAS2yoB,EAAWp1qB,EAAGC,GACnB,OAAOQ,OAAOkW,UAAUgb,eAAexY,KAAKnZ,EAAGC,GAGnD,SAASo1qB,EAAcrzqB,GACnB,GAAIvB,OAAOquJ,oBACP,OAAkD,IAA3CruJ,OAAOquJ,oBAAoB9sJ,GAAK5Z,OAEvC,IAAIq4H,EACJ,IAAKA,KAAKz+G,EACN,GAAIozqB,EAAWpzqB,EAAKy+G,GAChB,OAAO,EAGf,OAAO,EAIf,SAASo4I,EAAYp2N,GACjB,YAAiB,IAAVA,EAGX,SAAS8/D,EAAS9/D,GACd,MACqB,iBAAVA,GACmC,oBAA1ChiC,OAAOkW,UAAUT,SAASiD,KAAKspB,GAIvC,SAASggM,EAAOhgM,GACZ,OACIA,aAAiB9D,MACyB,kBAA1Cl+B,OAAOkW,UAAUT,SAASiD,KAAKspB,GAIvC,SAAS/0C,EAAIkmC,EAAK3gC,GACd,IACInH,EADAywB,EAAM,GAEN+4pB,EAAS1hpB,EAAIxrC,OACjB,IAAK0D,EAAI,EAAGA,EAAIwprB,IAAUxprB,EACtBywB,EAAI10B,KAAKoL,EAAG2gC,EAAI9nC,GAAIA,IAExB,OAAOywB,EAGX,SAASylL,EAAOhiM,EAAGC,GACf,IAAK,IAAInU,KAAKmU,EACNm1qB,EAAWn1qB,EAAGnU,KACdkU,EAAElU,GAAKmU,EAAEnU,IAYjB,OARIsprB,EAAWn1qB,EAAG,cACdD,EAAEkW,SAAWjW,EAAEiW,UAGfk/pB,EAAWn1qB,EAAG,aACdD,EAAE+8B,QAAU98B,EAAE88B,SAGX/8B,EAGX,SAASu1qB,EAAU9yoB,EAAOz7B,EAAQoiC,EAAQosoB,GACtC,OAAOC,GAAiBhzoB,EAAOz7B,EAAQoiC,EAAQosoB,GAAQ,GAAME,MAyBjE,SAASC,EAAgB5uqB,GAIrB,OAHa,MAATA,EAAE6uqB,MACF7uqB,EAAE6uqB,IAtBC,CACHn+gB,OAAO,EACPo+gB,aAAc,GACdC,YAAa,GACbp9mB,UAAW,EACXq9mB,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBnwoB,IAAK,KACLvQ,SAAU,KACV2gpB,SAAS,EACTC,iBAAiB,IAQdzvqB,EAAE6uqB,IAsBb,SAASntmB,EAAQ1hE,GACb,IAAI69S,EAAQ,KACR6xX,GAAc,EACdC,EAAa3vqB,EAAE+R,KAAOomB,MAAMn4B,EAAE+R,GAAGqsF,WAyBrC,OAxBIuxkB,IACA9xX,EAAQ+wX,EAAgB5uqB,GACxB0vqB,EAAcpqrB,EAAK8sB,KAAKyrS,EAAM0xX,gBAAiB,SAAUxqrB,GACrD,OAAY,MAALA,IAEX4qrB,EACI9xX,EAAMlsP,SAAW,IAChBksP,EAAMntJ,QACNmtJ,EAAMqxX,aACNrxX,EAAMsxX,eACNtxX,EAAM+xX,iBACN/xX,EAAM4xX,kBACN5xX,EAAMoxX,YACNpxX,EAAMuxX,gBACNvxX,EAAMwxX,mBACLxxX,EAAMhvR,UAAagvR,EAAMhvR,UAAY6gpB,GACvC1vqB,EAAE6vqB,UACFF,EACIA,GACwB,IAAxB9xX,EAAMmxX,eACwB,IAA9BnxX,EAAMixX,aAAaztrB,aACDM,IAAlBk8T,EAAMiyX,UAGK,MAAnBp2qB,OAAOu3mB,UAAqBv3mB,OAAOu3mB,SAASjxmB,GAGrC2vqB,GAFP3vqB,EAAE+vqB,SAAWJ,EAIV3vqB,EAAE+vqB,UAGb,SAASC,EAAcnyX,GACnB,IAAI79S,EAAIwuqB,EAAU7yjB,KAOlB,OANa,MAATkiM,EACA5iH,EAAO2ze,EAAgB5uqB,GAAI69S,GAE3B+wX,EAAgB5uqB,GAAGqvqB,iBAAkB,EAGlCrvqB,EA7DP1a,EADAmC,MAAMmoB,UAAUtqB,KACTmC,MAAMmoB,UAAUtqB,KAEhB,SAAU2qrB,GACb,IAEIlrrB,EAFArH,EAAIgc,OAAOxc,MACXs3C,EAAM92C,EAAE2D,SAAW,EAGvB,IAAK0D,EAAI,EAAGA,EAAIyvC,EAAKzvC,IACjB,GAAIA,KAAKrH,GAAKuyrB,EAAI79pB,KAAKl1B,KAAMQ,EAAEqH,GAAIA,EAAGrH,GAClC,OAAO,EAIf,OAAO,GAqDf,IAAIwyrB,EAAoBhkmB,EAAMgkmB,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAW1hiB,EAAIltJ,GACpB,IAAIuD,EACAumC,EACAE,EACA6kpB,EAAsBH,EAAiB7urB,OAiC3C,GA/BKywQ,EAAYtwQ,EAAK8urB,oBAClB5hiB,EAAG4hiB,iBAAmB9urB,EAAK8urB,kBAE1Bx+a,EAAYtwQ,EAAKoL,MAClB8hJ,EAAG9hJ,GAAKpL,EAAKoL,IAEZklQ,EAAYtwQ,EAAK+urB,MAClB7hiB,EAAG6hiB,GAAK/urB,EAAK+urB,IAEZz+a,EAAYtwQ,EAAKgvrB,MAClB9hiB,EAAG8hiB,GAAKhvrB,EAAKgvrB,IAEZ1+a,EAAYtwQ,EAAKqurB,WAClBnhiB,EAAGmhiB,QAAUrurB,EAAKqurB,SAEjB/9a,EAAYtwQ,EAAKivrB,QAClB/hiB,EAAG+hiB,KAAOjvrB,EAAKivrB,MAEd3+a,EAAYtwQ,EAAKkvrB,UAClBhiiB,EAAGgiiB,OAASlvrB,EAAKkvrB,QAEhB5+a,EAAYtwQ,EAAKmvrB,WAClBjiiB,EAAGiiiB,QAAUnvrB,EAAKmvrB,SAEjB7+a,EAAYtwQ,EAAKqtrB,OAClBngiB,EAAGmgiB,IAAMD,EAAgBptrB,IAExBswQ,EAAYtwQ,EAAK6+G,WAClBquC,EAAGruC,QAAU7+G,EAAK6+G,SAGlBgwkB,EAAsB,EACtB,IAAKtrrB,EAAI,EAAGA,EAAIsrrB,EAAqBtrrB,IAG5B+sQ,EADLtmO,EAAMhqC,EADN8pC,EAAO4kpB,EAAiBnrrB,OAGpB2pJ,EAAGpjH,GAAQE,GAKvB,OAAOkjH,EAIX,SAASkiiB,EAAOt7pB,GACZ86pB,EAAWlzrB,KAAMo4B,GACjBp4B,KAAK60B,GAAK,IAAI6lB,KAAkB,MAAbtiB,EAAOvD,GAAauD,EAAOvD,GAAGqsF,UAAYud,KACxDz+H,KAAKwkF,YACNxkF,KAAK60B,GAAK,IAAI6lB,KAAK+jF,OAIE,IAArBw0jB,IACAA,GAAmB,EACnBjkmB,EAAMwgZ,aAAaxve,MACnBizrB,GAAmB,GAI3B,SAASU,EAAS51qB,GACd,OACIA,aAAe21qB,GAAkB,MAAP31qB,GAAuC,MAAxBA,EAAIq1qB,iBAIrD,SAAS1vnB,EAAKu0Q,IAEgC,IAAtCjpP,EAAM4kmB,6BACa,oBAAZ7opB,SACPA,QAAQ24B,MAER34B,QAAQ24B,KAAK,wBAA0Bu0Q,GAI/C,SAASvsM,EAAUusM,EAAKjpU,GACpB,IAAIqrnB,GAAY,EAEhB,OAAOt8a,EAAO,WAIV,GAHgC,MAA5B/uH,EAAM6kmB,oBACN7kmB,EAAM6kmB,mBAAmB,KAAM57W,GAE/BoiT,EAAW,CACX,IACIzilB,EACA/vC,EACA8U,EAHA9c,EAAO,GAIPi0rB,EAASx6qB,UAAUnV,OACvB,IAAK0D,EAAI,EAAGA,EAAIisrB,EAAQjsrB,IAAK,CAEzB,GADA+vC,EAAM,GACsB,iBAAjBt+B,UAAUzR,GAAiB,CAElC,IAAK8U,KADLi7B,GAAO,MAAQ/vC,EAAI,KACPyR,UAAU,GACd63qB,EAAW73qB,UAAU,GAAIqD,KACzBi7B,GAAOj7B,EAAM,KAAOrD,UAAU,GAAGqD,GAAO,MAGhDi7B,EAAMA,EAAIpuC,MAAM,GAAI,QAEpBouC,EAAMt+B,UAAUzR,GAEpBhI,EAAK+D,KAAKg0C,GAEd8rB,EACIu0Q,EACI,gBACA1tU,MAAMmoB,UAAUlpB,MAAM0rB,KAAKr1B,GAAMmwC,KAAK,IACtC,MACA,IAAI3b,OAAQm3G,OAEpB6uf,GAAY,EAEhB,OAAOrrnB,EAAG2oC,MAAM33C,KAAMsZ,YACvBtK,GAGP,IAgFIyN,EAhFAs3qB,EAAe,GAEnB,SAASC,EAAgB7yrB,EAAM82U,GACK,MAA5BjpP,EAAM6kmB,oBACN7kmB,EAAM6kmB,mBAAmB1yrB,EAAM82U,GAE9B87W,EAAa5yrB,KACduiE,EAAKu0Q,GACL87W,EAAa5yrB,IAAQ,GAO7B,SAAS8qK,EAAWztH,GAChB,MACyB,oBAAbm5H,UAA4Bn5H,aAAiBm5H,UACX,sBAA1Cn7J,OAAOkW,UAAUT,SAASiD,KAAKspB,GA2BvC,SAASy1oB,EAAaC,EAAcvzB,GAChC,IACIvynB,EADA9V,EAAMylL,EAAO,GAAIm2e,GAErB,IAAK9lpB,KAAQuynB,EACLwwB,EAAWxwB,EAAavynB,KACpBi9J,EAAS6of,EAAa9lpB,KAAUi9J,EAASs1d,EAAYvynB,KACrD9V,EAAI8V,GAAQ,GACZ2vK,EAAOzlL,EAAI8V,GAAO8lpB,EAAa9lpB,IAC/B2vK,EAAOzlL,EAAI8V,GAAOuynB,EAAYvynB,KACF,MAArBuynB,EAAYvynB,GACnB9V,EAAI8V,GAAQuynB,EAAYvynB,UAEjB9V,EAAI8V,IAIvB,IAAKA,KAAQ8lpB,EAEL/C,EAAW+C,EAAc9lpB,KACxB+ipB,EAAWxwB,EAAavynB,IACzBi9J,EAAS6of,EAAa9lpB,MAGtB9V,EAAI8V,GAAQ2vK,EAAO,GAAIzlL,EAAI8V,KAGnC,OAAO9V,EAGX,SAAS67pB,EAAO/7pB,GACE,MAAVA,GACAp4B,KAAKqU,IAAI+jB,GAmCjB,SAASg8pB,EAAS1uqB,EAAQ2uqB,EAAcC,GACpC,IAAIC,EAAY,GAAKh2qB,KAAKqiC,IAAIl7B,GAG9B,OADWA,GAAU,EAER4uqB,EAAY,IAAM,GAAM,KACjC/1qB,KAAKq7L,IAAI,GAAIr7L,KAAKukC,IAAI,EAJRuxoB,EAAeE,EAAUpwrB,SAIA8tB,WAAWslB,OAAO,GACzDg9oB,EA1GRvlmB,EAAM4kmB,6BAA8B,EACpC5kmB,EAAM6kmB,mBAAqB,KAsEvBp3qB,EADAD,OAAOC,KACAD,OAAOC,KAEP,SAAUsB,GACb,IAAIlW,EACAywB,EAAM,GACV,IAAKzwB,KAAKkW,EACFozqB,EAAWpzqB,EAAKlW,IAChBywB,EAAI10B,KAAKiE,GAGjB,OAAOywB,GA6Bf,IAAIk8pB,EACI,yMACJC,EAAwB,6CACxBC,EAAkB,GAClBC,EAAuB,GAM3B,SAASC,EAAe/vrB,EAAOgwrB,EAAQpvqB,EAASwN,GAC5C,IAAIgkB,EAAOhkB,EACa,iBAAbA,IACPgkB,EAAO,WACH,OAAOj3C,KAAKizB,OAGhBpuB,IACA8vrB,EAAqB9vrB,GAASoyC,GAE9B49oB,IACAF,EAAqBE,EAAO,IAAM,WAC9B,OAAOT,EAASn9oB,EAAKU,MAAM33C,KAAMsZ,WAAYu7qB,EAAO,GAAIA,EAAO,MAGnEpvqB,IACAkvqB,EAAqBlvqB,GAAW,WAC5B,OAAOzlB,KAAK80rB,aAAarvqB,QACrBwxB,EAAKU,MAAM33C,KAAMsZ,WACjBzU,KAuChB,SAASkwrB,EAAajyqB,EAAGC,GACrB,OAAKD,EAAE0hE,WAIPzhE,EAASiyqB,EAAajyqB,EAAQD,EAAEgyqB,cAChCJ,EAAgB3xqB,GACZ2xqB,EAAgB3xqB,IAjCxB,SAA4BA,GACxB,IACIlb,EACA1D,EAVwBq6C,EAQxBzlC,EAAQgK,EAAOuuB,MAAMkjpB,GAIzB,IAAK3srB,EAAI,EAAG1D,EAAS4U,EAAM5U,OAAQ0D,EAAI1D,EAAQ0D,IAEvCkR,EAAMlR,GADN8srB,EAAqB57qB,EAAMlR,IAChB8srB,EAAqB57qB,EAAMlR,KAdlB22C,EAgBczlC,EAAMlR,IAftCypC,MAAM,YACLkN,EAAMh9C,QAAQ,WAAY,IAE9Bg9C,EAAMh9C,QAAQ,MAAO,IAgB5B,OAAO,SAAUq+mB,GACb,IACIh4mB,EADAskC,EAAS,GAEb,IAAKtkC,EAAI,EAAGA,EAAI1D,EAAQ0D,IACpBskC,GAAU8/H,EAAWlzJ,EAAMlR,IACrBkR,EAAMlR,GAAGqtB,KAAK2qlB,EAAK98lB,GACnBhK,EAAMlR,GAEhB,OAAOskC,GAYoB8opB,CAAmBlyqB,GAE3C2xqB,EAAgB3xqB,GAAQD,IAPpBA,EAAEgyqB,aAAa/ipB,cAU9B,SAASijpB,EAAajyqB,EAAQoiC,GAC1B,IAAIt9C,EAAI,EAER,SAASqtrB,EAA4B12oB,GACjC,OAAO2G,EAAOxhC,eAAe66B,IAAUA,EAI3C,IADAi2oB,EAAsBr0lB,UAAY,EAC3Bv4F,GAAK,GAAK4srB,EAAsBzxqB,KAAKD,IACxCA,EAASA,EAAOvhB,QACZizrB,EACAS,GAEJT,EAAsBr0lB,UAAY,EAClCv4F,GAAK,EAGT,OAAOkb,EAkFX,IAAIg3G,EAAU,CACV0mF,EAAG,OACHlhH,MAAO,OACPtlD,KAAM,OACNjiC,EAAG,MACH4hC,KAAM,MACN9H,IAAK,MACL7d,EAAG,UACH1Q,SAAU,UACV4+B,QAAS,UACT8gK,EAAG,aACHkye,YAAa,aACbC,WAAY,aACZC,IAAK,YACLC,WAAY,YACZC,UAAW,YACXxwqB,EAAG,OACHi6B,MAAO,OACPtN,KAAM,OACN2N,GAAI,cACJR,aAAc,cACdO,YAAa,cACbt8B,EAAG,SACHm8B,QAAS,SACTrN,OAAQ,SACRxsB,EAAG,QACHxC,OAAQ,QACRK,MAAO,QACPujM,EAAG,UACHgve,SAAU,UACVxkd,QAAS,UACTpsN,EAAG,SACHs6B,QAAS,SACTC,OAAQ,SACRs2oB,GAAI,WACJC,UAAW,WACXC,SAAU,WACVC,GAAI,cACJC,aAAc,cACdC,YAAa,cACb5wqB,EAAG,OACHo6B,MAAO,OACP35B,KAAM,OACNi+L,EAAG,UACHmye,SAAU,UACVC,QAAS,UACT1wqB,EAAG,OACHs5B,MAAO,OACPpF,KAAM,QAGV,SAASy8oB,EAAelrf,GACpB,MAAwB,iBAAVA,EACRhxE,EAAQgxE,IAAUhxE,EAAQgxE,EAAMnuL,oBAChCnY,EAGV,SAASyxrB,EAAqBC,GAC1B,IACIl7Y,EACA7sQ,EAFAgopB,EAAkB,GAItB,IAAKhopB,KAAQ+npB,EACLhF,EAAWgF,EAAa/npB,KACxB6sQ,EAAiBg7Y,EAAe7npB,MAE5BgopB,EAAgBn7Y,GAAkBk7Y,EAAY/npB,IAK1D,OAAOgopB,EAGX,IAuDIC,EAvDAC,EAAa,CACbr8oB,KAAM,EACNnI,IAAK,GACLqQ,QAAS,GACTgwL,WAAY,GACZokd,UAAW,EACX7kpB,KAAM,GACN0N,YAAa,GACbxN,OAAQ,GACR3uB,MAAO,EACP+tN,QAAS,EACT7xL,OAAQ,GACRq3oB,SAAU,EACVC,YAAa,EACb9wqB,KAAM,EACN+wqB,QAAS,EACTl9oB,KAAM,GAiBNm9oB,EAAS,KACTC,EAAS,OACTC,EAAS,QACTC,EAAS,QACTC,EAAS,aACTC,EAAY,QACZC,EAAY,YACZC,EAAY,gBACZC,EAAY,UACZC,EAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BAInBC,GACI,wJACJC,GAAyB,YACzBC,GAAmB,gBAKvB,SAASC,GAAchzrB,EAAOkqI,EAAO+ojB,GACjCzB,EAAQxxrB,GAASonK,EAAWl9B,GACtBA,EACA,SAAUypH,EAAUs8b,GAChB,OAAOt8b,GAAYs/b,EAAcA,EAAc/ojB,GAI7D,SAASgpjB,GAAsBlzrB,EAAOuzB,GAClC,OAAK+4pB,EAAWkF,EAASxxrB,GAIlBwxrB,EAAQxxrB,GAAOuzB,EAAOu6pB,QAASv6pB,EAAO+qF,SAHlC,IAAI+d,OAQR82jB,GAR8BnzrB,EAU5BrD,QAAQ,KAAM,IACdA,QACG,sCACA,SAAUqoL,EAASougB,EAAIC,EAAIC,EAAIC,GAC3B,OAAOH,GAAMC,GAAMC,GAAMC,MAM7C,SAASJ,GAAYpzqB,GACjB,OAAOA,EAAEpjB,QAAQ,yBAA0B,QAG/C,SAAS62rB,GAAS3yqB,GACd,OAAIA,EAAS,EAEFnH,KAAKC,KAAKkH,IAAW,EAErBnH,KAAKs7B,MAAMn0B,GAI1B,SAASkzU,GAAM0/V,GACX,IAAIC,GAAiBD,EACjB/2rB,EAAQ,EAMZ,OAJsB,IAAlBg3rB,GAAuB/5kB,SAAS+5kB,KAChCh3rB,EAAQ82rB,GAASE,IAGdh3rB,EArDX80rB,EAAU,GAwDV,IAAItroB,GAAS,GAEb,SAASytoB,GAAc3zrB,EAAOouB,GAC1B,IAAIprB,EAEA4wrB,EADAxhpB,EAAOhkB,EAWX,IATqB,iBAAVpuB,IACPA,EAAQ,CAACA,IAETy5G,EAASrrF,KACTgkB,EAAO,SAAUuH,EAAOzlC,GACpBA,EAAMka,GAAY2lU,GAAMp6S,KAGhCi6oB,EAAW5zrB,EAAMV,OACZ0D,EAAI,EAAGA,EAAI4wrB,EAAU5wrB,IACtBkjD,GAAOlmD,EAAMgD,IAAMovC,EAI3B,SAASyhpB,GAAkB7zrB,EAAOouB,GAC9BulqB,GAAc3zrB,EAAO,SAAU25C,EAAOzlC,EAAOqf,EAAQvzB,GACjDuzB,EAAOugqB,GAAKvgqB,EAAOugqB,IAAM,GACzB1lqB,EAASurB,EAAOpmB,EAAOugqB,GAAIvgqB,EAAQvzB,KAI3C,SAAS+zrB,GAAwB/zrB,EAAO25C,EAAOpmB,GAC9B,MAATomB,GAAiB2yoB,EAAWpmoB,GAAQlmD,IACpCkmD,GAAOlmD,GAAO25C,EAAOpmB,EAAOztB,GAAIytB,EAAQvzB,GAIhD,SAASg0rB,GAAWr/oB,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAkDlE,SAASs/oB,GAAWt/oB,GAChB,OAAOq/oB,GAAWr/oB,GAAQ,IAAM,IApCpCo7oB,EAAe,IAAK,EAAG,EAAG,WACtB,IAAItvqB,EAAItlB,KAAKw5C,OACb,OAAOl0B,GAAK,KAAO8uqB,EAAS9uqB,EAAG,GAAK,IAAMA,IAG9CsvqB,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAO50rB,KAAKw5C,OAAS,MAGzBo7oB,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CiD,GAAc,IAAKN,IACnBM,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,OAAQT,EAAWN,GACjCe,GAAc,QAASR,GAAWN,GAClCc,GAAc,SAAUR,GAAWN,GAEnCyB,GAAc,CAAC,QAAS,UAjCb,GAkCXA,GAAc,OAAQ,SAAUh6oB,EAAOzlC,GACnCA,EAnCO,GAoCc,IAAjBylC,EAAMr6C,OAAe6qF,EAAM+pmB,kBAAkBv6oB,GAASo6S,GAAMp6S,KAEpEg6oB,GAAc,KAAM,SAAUh6oB,EAAOzlC,GACjCA,EAvCO,GAuCOi2E,EAAM+pmB,kBAAkBv6oB,KAE1Cg6oB,GAAc,IAAK,SAAUh6oB,EAAOzlC,GAChCA,EA1CO,GA0COy2B,SAASgP,EAAO,MAWlCwwC,EAAM+pmB,kBAAoB,SAAUv6oB,GAChC,OAAOo6S,GAAMp6S,IAAUo6S,GAAMp6S,GAAS,GAAK,KAAO,MAKtD,IA0HIv1C,GA1HA+vrB,GAAaC,GAAW,YAAY,GAMxC,SAASA,GAAWx6oB,EAAMy6oB,GACtB,OAAO,SAAU33rB,GACb,OAAa,MAATA,GACA43rB,GAAMn5rB,KAAMy+C,EAAMl9C,GAClBytF,EAAMwgZ,aAAaxve,KAAMk5rB,GAClBl5rB,MAEAkS,GAAIlS,KAAMy+C,IAK7B,SAASvsC,GAAI2tmB,EAAKphkB,GACd,IAAKohkB,EAAIr7hB,UACL,OAAOi6C,IAGX,IAAIzmH,EAAI6nmB,EAAIhrlB,GACRukqB,EAAQv5E,EAAI2zE,OAEhB,OAAQ/0oB,GACJ,IAAK,eACD,OAAO26oB,EAAQphrB,EAAE8iC,qBAAuB9iC,EAAEwiC,kBAC9C,IAAK,UACD,OAAO4+oB,EAAQphrB,EAAE6iC,gBAAkB7iC,EAAEuiC,aACzC,IAAK,UACD,OAAO6+oB,EAAQphrB,EAAE4iC,gBAAkB5iC,EAAEsiC,aACzC,IAAK,QACD,OAAO8+oB,EAAQphrB,EAAE2iC,cAAgB3iC,EAAEqiC,WACvC,IAAK,OACD,OAAO++oB,EAAQphrB,EAAEqhC,aAAerhC,EAAEoiC,UACtC,IAAK,MACD,OAAOg/oB,EAAQphrB,EAAE+hC,YAAc/hC,EAAE2pG,SACrC,IAAK,QACD,OAAOy3kB,EAAQphrB,EAAEohC,cAAgBphC,EAAEmiC,WACvC,IAAK,WACD,OAAOi/oB,EAAQphrB,EAAEmhC,iBAAmBnhC,EAAEkiC,cAC1C,QACI,OAAOukF,KAInB,SAAS06jB,GAAMt5E,EAAKphkB,EAAMl9C,GACtB,IAAIyW,EAAGohrB,EAAO5/oB,EAAMv2B,EAAOg3B,EAE3B,GAAK4lkB,EAAIr7hB,YAAavpC,MAAM15C,GAA5B,CAOA,OAHAyW,EAAI6nmB,EAAIhrlB,GACRukqB,EAAQv5E,EAAI2zE,OAEJ/0oB,GACJ,IAAK,eACD,YAAa26oB,EACPphrB,EAAEqhrB,mBAAmB93rB,GACrByW,EAAEshrB,gBAAgB/3rB,IAC5B,IAAK,UACD,YAAa63rB,EAAQphrB,EAAE6uQ,cAActlR,GAASyW,EAAE8wX,WAAWvnY,IAC/D,IAAK,UACD,YAAa63rB,EAAQphrB,EAAEuhrB,cAAch4rB,GAASyW,EAAE6wX,WAAWtnY,IAC/D,IAAK,QACD,YAAa63rB,EAAQphrB,EAAEunL,YAAYh+L,GAASyW,EAAEqnL,SAAS99L,IAC3D,IAAK,OACD,YAAa63rB,EAAQphrB,EAAEwhrB,WAAWj4rB,GAASyW,EAAEypG,QAAQlgH,IAKzD,IAAK,WACD,MACJ,QACI,OAGRi4C,EAAOj4C,EACP0hB,EAAQ48lB,EAAI58lB,QAEZg3B,EAAgB,MADhBA,EAAO4lkB,EAAI5lkB,SACqB,IAAVh3B,GAAgB41qB,GAAWr/oB,GAAaS,EAAL,GACnDm/oB,EACAphrB,EAAEsnL,eAAe9lJ,EAAMv2B,EAAOg3B,GAC9BjiC,EAAEmpG,YAAY3nE,EAAMv2B,EAAOg3B,IAoDrC,SAAS22jB,GAAYp3jB,EAAMv2B,GACvB,GAAIg4B,MAAMzB,IAASyB,MAAMh4B,GACrB,OAAOw7G,IAEX,IAAIg7jB,GAAex2qB,EAAO,UAE1B,OADAu2B,IAASv2B,EAAQw2qB,GAAY,GACT,IAAbA,EACDZ,GAAWr/oB,GACP,GACA,GACJ,GAAOigpB,EAAW,EAAK,EAxB7BxwrB,GADAsB,MAAMmoB,UAAUzpB,QACNsB,MAAMmoB,UAAUzpB,QAEhB,SAAUklC,GAEhB,IAAItmC,EACJ,IAAKA,EAAI,EAAGA,EAAI7H,KAAKmE,SAAU0D,EAC3B,GAAI7H,KAAK6H,KAAOsmC,EACZ,OAAOtmC,EAGf,OAAQ,GAmBhB+srB,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WACjC,OAAO50rB,KAAKijB,QAAU,IAG1B2xqB,EAAe,MAAO,EAAG,EAAG,SAAU7xqB,GAClC,OAAO/iB,KAAK80rB,aAAajyqB,YAAY7iB,KAAM+iB,KAG/C6xqB,EAAe,OAAQ,EAAG,EAAG,SAAU7xqB,GACnC,OAAO/iB,KAAK80rB,aAAalyqB,OAAO5iB,KAAM+iB,KAK1C80qB,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,MAAO,SAAUr/b,EAAUrzM,GACrC,OAAOA,EAAOjiC,iBAAiBs1O,KAEnCq/b,GAAc,OAAQ,SAAUr/b,EAAUrzM,GACtC,OAAOA,EAAOziC,YAAY81O,KAG9Bggc,GAAc,CAAC,IAAK,MAAO,SAAUh6oB,EAAOzlC,GACxCA,EA5OQ,GA4OO6/U,GAAMp6S,GAAS,IAGlCg6oB,GAAc,CAAC,MAAO,QAAS,SAAUh6oB,EAAOzlC,EAAOqf,EAAQvzB,GAC3D,IAAIoe,EAAQmV,EAAO+qF,QAAQ1gG,YAAY+7B,EAAO35C,EAAOuzB,EAAOu6pB,SAE/C,MAAT1vqB,EACAlK,EAnPI,GAmPWkK,EAEfyuqB,EAAgBt5pB,GAAQ65pB,aAAezzoB,IAM/C,IAAIk7oB,GACI,wFAAwFn3qB,MACpF,KAERo3qB,GACI,kDAAkDp3qB,MAAM,KAC5Dq3qB,GAAmB,gCACnBC,GAA0BnC,GAC1BoC,GAAqBpC,GA8BzB,SAASqC,GAAkBnmF,EAAW7wlB,EAAQwuqB,GAC1C,IAAI1prB,EACAu0J,EACAyjd,EACAm6E,EAAMpmF,EAAU1tjB,oBACpB,IAAKlmD,KAAKi6rB,aAKN,IAHAj6rB,KAAKi6rB,aAAe,GACpBj6rB,KAAKk6rB,iBAAmB,GACxBl6rB,KAAKm6rB,kBAAoB,GACpBtyrB,EAAI,EAAGA,EAAI,KAAMA,EAClBg4mB,EAAMyxE,EAAU,CAAC,IAAMzprB,IACvB7H,KAAKm6rB,kBAAkBtyrB,GAAK7H,KAAK6iB,YAC7Bg9lB,EACA,IACF35jB,oBACFlmD,KAAKk6rB,iBAAiBryrB,GAAK7H,KAAK4iB,OAAOi9lB,EAAK,IAAI35jB,oBAIxD,OAAIqroB,EACe,QAAXxuqB,GAEe,KADfq5I,EAAKnzJ,GAAQisB,KAAKl1B,KAAKm6rB,kBAAmBH,IACvB59hB,EAAK,MAGT,KADfA,EAAKnzJ,GAAQisB,KAAKl1B,KAAKk6rB,iBAAkBF,IACtB59hB,EAAK,KAGb,QAAXr5I,GAEY,KADZq5I,EAAKnzJ,GAAQisB,KAAKl1B,KAAKm6rB,kBAAmBH,MAK3B,KADf59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKk6rB,iBAAkBF,IAF9B59hB,EAGa,MAGZ,KADZA,EAAKnzJ,GAAQisB,KAAKl1B,KAAKk6rB,iBAAkBF,MAK1B,KADf59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKm6rB,kBAAmBH,IAF/B59hB,EAGa,KA4DpC,SAASv6C,GAASg+f,EAAKt+mB,GACnB,IAAKs+mB,EAAIr7hB,UAEL,OAAOq7hB,EAGX,GAAqB,iBAAVt+mB,EACP,GAAI,QAAQyhB,KAAKzhB,GACbA,EAAQq3V,GAAMr3V,QAId,IAAK+8G,EAFL/8G,EAAQs+mB,EAAIi1E,aAAaryqB,YAAYlhB,IAGjC,OAAOs+mB,EAKnB,IAAI58lB,EAAQ1hB,EACR04C,EAAO4lkB,EAAI5lkB,OAMf,OAJAA,EAAOA,EAAO,GAAKA,EAAO17B,KAAKG,IAAIu7B,EAAM22jB,GAAYiP,EAAIrmkB,OAAQv2B,IAC3D48lB,EAAI2zE,OACJ3zE,EAAIhrlB,GAAGulqB,YAAYn3qB,EAAOg3B,GAC1B4lkB,EAAIhrlB,GAAGgtF,SAAS5+F,EAAOg3B,GACtB4lkB,EAGX,SAASw6E,GAAY94rB,GACjB,OAAa,MAATA,GACAsgH,GAAS7hH,KAAMuB,GACfytF,EAAMwgZ,aAAaxve,MAAM,GAClBA,MAEAkS,GAAIlS,KAAM,SAgDzB,SAASs6rB,KACL,SAASC,EAAUx+qB,EAAGC,GAClB,OAAOA,EAAE7X,OAAS4X,EAAE5X,OAGxB,IAGI0D,EACAg4mB,EACA26E,EACAC,EANAC,EAAc,GACdC,EAAa,GACbC,EAAc,GAKlB,IAAK/yrB,EAAI,EAAGA,EAAI,GAAIA,IAEhBg4mB,EAAMyxE,EAAU,CAAC,IAAMzprB,IACvB2yrB,EAASxC,GAAYh4rB,KAAK6iB,YAAYg9lB,EAAK,KAC3C46E,EAAQzC,GAAYh4rB,KAAK4iB,OAAOi9lB,EAAK,KACrC66E,EAAY92rB,KAAK42rB,GACjBG,EAAW/2rB,KAAK62rB,GAChBG,EAAYh3rB,KAAK62rB,GACjBG,EAAYh3rB,KAAK42rB,GAIrBE,EAAY7+qB,KAAK0+qB,GACjBI,EAAW9+qB,KAAK0+qB,GAChBK,EAAY/+qB,KAAK0+qB,GAEjBv6rB,KAAK66rB,aAAe,IAAI35jB,OAAO,KAAO05jB,EAAY5qpB,KAAK,KAAO,IAAK,KACnEhwC,KAAK86rB,kBAAoB96rB,KAAK66rB,aAC9B76rB,KAAK+6rB,mBAAqB,IAAI75jB,OAC1B,KAAOy5jB,EAAW3qpB,KAAK,KAAO,IAC9B,KAEJhwC,KAAKg7rB,wBAA0B,IAAI95jB,OAC/B,KAAOw5jB,EAAY1qpB,KAAK,KAAO,IAC/B,KAIR,SAASk/jB,GAAW5plB,EAAGxC,EAAG9K,EAAG+M,EAAGK,EAAGR,EAAGy6B,GAGlC,IAAIpF,EAYJ,OAVI30B,EAAI,KAAOA,GAAK,GAEhB20B,EAAO,IAAIS,KAAKp1B,EAAI,IAAKxC,EAAG9K,EAAG+M,EAAGK,EAAGR,EAAGy6B,GACpCm/D,SAASvkE,EAAKC,gBACdD,EAAKknE,YAAY77F,IAGrB20B,EAAO,IAAIS,KAAKp1B,EAAGxC,EAAG9K,EAAG+M,EAAGK,EAAGR,EAAGy6B,GAG/BpF,EAGX,SAASghpB,GAAc31qB,GACnB,IAAI20B,EAAMp6C,EAcV,OAZIylB,EAAI,KAAOA,GAAK,IAChBzlB,EAAO0K,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5b,YAE7B,GAAKgM,EAAI,IACd20B,EAAO,IAAIS,KAAKA,KAAKK,IAAIpD,MAAM,KAAM93C,IACjC2+G,SAASvkE,EAAKd,mBACdc,EAAKqlJ,eAAeh6K,IAGxB20B,EAAO,IAAIS,KAAKA,KAAKK,IAAIpD,MAAM,KAAMr+B,YAGlC2gC,EAIX,SAASP,GAAgBF,EAAM5zB,EAAKC,GAChC,IACIi0B,EAAM,EAAIl0B,EAAMC,EAIpB,QAFa,EAAIo1qB,GAAczhpB,EAAM,EAAGM,GAAKC,YAAcn0B,GAAO,EAElDk0B,EAAM,EAI1B,SAASohpB,GAAmB1hpB,EAAM7zB,EAAMw8B,EAASv8B,EAAKC,GAClD,IAGIs1qB,EACAC,EAFA7E,EAAY,EAAI,GAAK5wqB,EAAO,IAFZ,EAAIw8B,EAAUv8B,GAAO,EACxB8zB,GAAgBF,EAAM5zB,EAAKC,GAgB5C,OAXI0wqB,GAAa,EAEb6E,EAAetC,GADfqC,EAAU3hpB,EAAO,GACoB+8oB,EAC9BA,EAAYuC,GAAWt/oB,IAC9B2hpB,EAAU3hpB,EAAO,EACjB4hpB,EAAe7E,EAAYuC,GAAWt/oB,KAEtC2hpB,EAAU3hpB,EACV4hpB,EAAe7E,GAGZ,CACH/8oB,KAAM2hpB,EACN5E,UAAW6E,GAInB,SAAS7vnB,GAAWs0iB,EAAKj6lB,EAAKC,GAC1B,IAEIw1qB,EACAF,EAHAG,EAAa5hpB,GAAgBmmkB,EAAIrmkB,OAAQ5zB,EAAKC,GAC9CF,EAAOpH,KAAKs7B,OAAOgmkB,EAAI02E,YAAc+E,EAAa,GAAK,GAAK,EAehE,OAXI31qB,EAAO,EAEP01qB,EAAU11qB,EAAO41qB,GADjBJ,EAAUt7E,EAAIrmkB,OAAS,EACe5zB,EAAKC,GACpCF,EAAO41qB,GAAY17E,EAAIrmkB,OAAQ5zB,EAAKC,IAC3Cw1qB,EAAU11qB,EAAO41qB,GAAY17E,EAAIrmkB,OAAQ5zB,EAAKC,GAC9Cs1qB,EAAUt7E,EAAIrmkB,OAAS,IAEvB2hpB,EAAUt7E,EAAIrmkB,OACd6hpB,EAAU11qB,GAGP,CACHA,KAAM01qB,EACN7hpB,KAAM2hpB,GAId,SAASI,GAAY/hpB,EAAM5zB,EAAKC,GAC5B,IAAIy1qB,EAAa5hpB,GAAgBF,EAAM5zB,EAAKC,GACxC21qB,EAAiB9hpB,GAAgBF,EAAO,EAAG5zB,EAAKC,GACpD,OAAQizqB,GAAWt/oB,GAAQ8hpB,EAAaE,GAAkB,EAkI9D,SAASC,GAAcC,EAAI3jpB,GACvB,OAAO2jpB,EAAGlyrB,MAAMuuC,EAAG,GAAG/+B,OAAO0irB,EAAGlyrB,MAAM,EAAGuuC,IA9H7C68oB,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCiD,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAE/B8B,GACI,CAAC,IAAK,KAAM,IAAK,MACjB,SAAUl6oB,EAAO74B,EAAMyS,EAAQvzB,GAC3B8gB,EAAK9gB,EAAM0yC,OAAO,EAAG,IAAMqhT,GAAMp6S,KAuCzCo2oB,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAU7xqB,GACjC,OAAO/iB,KAAK80rB,aAAarxqB,YAAYzjB,KAAM+iB,KAG/C6xqB,EAAe,MAAO,EAAG,EAAG,SAAU7xqB,GAClC,OAAO/iB,KAAK80rB,aAAatxqB,cAAcxjB,KAAM+iB,KAGjD6xqB,EAAe,OAAQ,EAAG,EAAG,SAAU7xqB,GACnC,OAAO/iB,KAAK80rB,aAAavxqB,SAASvjB,KAAM+iB,KAG5C6xqB,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BiD,GAAc,IAAKb,GACnBa,GAAc,IAAKb,GACnBa,GAAc,IAAKb,GACnBa,GAAc,KAAM,SAAUr/b,EAAUrzM,GACpC,OAAOA,EAAOw2oB,iBAAiBnjc,KAEnCq/b,GAAc,MAAO,SAAUr/b,EAAUrzM,GACrC,OAAOA,EAAOy2oB,mBAAmBpjc,KAErCq/b,GAAc,OAAQ,SAAUr/b,EAAUrzM,GACtC,OAAOA,EAAO02oB,cAAcrjc,KAGhCkgc,GAAkB,CAAC,KAAM,MAAO,QAAS,SAAUl6oB,EAAO74B,EAAMyS,EAAQvzB,GACpE,IAAIs9C,EAAU/pB,EAAO+qF,QAAQ+pO,cAAc1uS,EAAO35C,EAAOuzB,EAAOu6pB,SAEjD,MAAXxwoB,EACAx8B,EAAK3N,EAAImqC,EAETuvoB,EAAgBt5pB,GAAQs6pB,eAAiBl0oB,IAIjDk6oB,GAAkB,CAAC,IAAK,IAAK,KAAM,SAAUl6oB,EAAO74B,EAAMyS,EAAQvzB,GAC9D8gB,EAAK9gB,GAAS+zV,GAAMp6S,KAkCxB,IAAIs9oB,GACI,2DAA2Dv5qB,MAAM,KACrEw5qB,GAA6B,8BAA8Bx5qB,MAAM,KACjEy5qB,GAA2B,uBAAuBz5qB,MAAM,KACxD05qB,GAAuBvE,GACvBwE,GAA4BxE,GAC5ByE,GAA0BzE,GAiC9B,SAAS0E,GAAoBC,EAAat5qB,EAAQwuqB,GAC9C,IAAI1prB,EACAu0J,EACAyjd,EACAm6E,EAAMqC,EAAYn2oB,oBACtB,IAAKlmD,KAAKs8rB,eAKN,IAJAt8rB,KAAKs8rB,eAAiB,GACtBt8rB,KAAKu8rB,oBAAsB,GAC3Bv8rB,KAAKw8rB,kBAAoB,GAEpB30rB,EAAI,EAAGA,EAAI,IAAKA,EACjBg4mB,EAAMyxE,EAAU,CAAC,IAAM,IAAIx/oB,IAAIjqC,GAC/B7H,KAAKw8rB,kBAAkB30rB,GAAK7H,KAAKyjB,YAC7Bo8lB,EACA,IACF35jB,oBACFlmD,KAAKu8rB,oBAAoB10rB,GAAK7H,KAAKwjB,cAC/Bq8lB,EACA,IACF35jB,oBACFlmD,KAAKs8rB,eAAez0rB,GAAK7H,KAAKujB,SAASs8lB,EAAK,IAAI35jB,oBAIxD,OAAIqroB,EACe,SAAXxuqB,GAEe,KADfq5I,EAAKnzJ,GAAQisB,KAAKl1B,KAAKs8rB,eAAgBtC,IACpB59hB,EAAK,KACN,QAAXr5I,GAEQ,KADfq5I,EAAKnzJ,GAAQisB,KAAKl1B,KAAKu8rB,oBAAqBvC,IACzB59hB,EAAK,MAGT,KADfA,EAAKnzJ,GAAQisB,KAAKl1B,KAAKw8rB,kBAAmBxC,IACvB59hB,EAAK,KAGb,SAAXr5I,GAEY,KADZq5I,EAAKnzJ,GAAQisB,KAAKl1B,KAAKs8rB,eAAgBtC,MAK3B,KADZ59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKu8rB,oBAAqBvC,MAK7B,KADf59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKw8rB,kBAAmBxC,IAN/B59hB,EAOa,KACN,QAAXr5I,GAEK,KADZq5I,EAAKnzJ,GAAQisB,KAAKl1B,KAAKu8rB,oBAAqBvC,MAKhC,KADZ59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKs8rB,eAAgBtC,MAKxB,KADf59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKw8rB,kBAAmBxC,IAN/B59hB,EAOa,MAGZ,KADZA,EAAKnzJ,GAAQisB,KAAKl1B,KAAKw8rB,kBAAmBxC,MAK9B,KADZ59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKs8rB,eAAgBtC,MAKxB,KADf59hB,EAAKnzJ,GAAQisB,KAAKl1B,KAAKu8rB,oBAAqBvC,IANjC59hB,EAOa,KA6KpC,SAASqgiB,KACL,SAASlC,EAAUx+qB,EAAGC,GAClB,OAAOA,EAAE7X,OAAS4X,EAAE5X,OAGxB,IAII0D,EACAg4mB,EACA68E,EACAC,EACAC,EARAC,EAAY,GACZnC,EAAc,GACdC,EAAa,GACbC,EAAc,GAMlB,IAAK/yrB,EAAI,EAAGA,EAAI,EAAGA,IAEfg4mB,EAAMyxE,EAAU,CAAC,IAAM,IAAIx/oB,IAAIjqC,GAC/B60rB,EAAO1E,GAAYh4rB,KAAKyjB,YAAYo8lB,EAAK,KACzC88E,EAAS3E,GAAYh4rB,KAAKwjB,cAAcq8lB,EAAK,KAC7C+8E,EAAQ5E,GAAYh4rB,KAAKujB,SAASs8lB,EAAK,KACvCg9E,EAAUj5rB,KAAK84rB,GACfhC,EAAY92rB,KAAK+4rB,GACjBhC,EAAW/2rB,KAAKg5rB,GAChBhC,EAAYh3rB,KAAK84rB,GACjB9B,EAAYh3rB,KAAK+4rB,GACjB/B,EAAYh3rB,KAAKg5rB,GAIrBC,EAAUhhrB,KAAK0+qB,GACfG,EAAY7+qB,KAAK0+qB,GACjBI,EAAW9+qB,KAAK0+qB,GAChBK,EAAY/+qB,KAAK0+qB,GAEjBv6rB,KAAK88rB,eAAiB,IAAI57jB,OAAO,KAAO05jB,EAAY5qpB,KAAK,KAAO,IAAK,KACrEhwC,KAAK+8rB,oBAAsB/8rB,KAAK88rB,eAChC98rB,KAAKg9rB,kBAAoBh9rB,KAAK88rB,eAE9B98rB,KAAKi9rB,qBAAuB,IAAI/7jB,OAC5B,KAAOy5jB,EAAW3qpB,KAAK,KAAO,IAC9B,KAEJhwC,KAAKk9rB,0BAA4B,IAAIh8jB,OACjC,KAAOw5jB,EAAY1qpB,KAAK,KAAO,IAC/B,KAEJhwC,KAAKm9rB,wBAA0B,IAAIj8jB,OAC/B,KAAO27jB,EAAU7spB,KAAK,KAAO,IAC7B,KAMR,SAASotpB,KACL,OAAOp9rB,KAAKg/C,QAAU,IAAM,GAqChC,SAASrN,GAAS9sC,EAAOw4rB,GACrBzI,EAAe/vrB,EAAO,EAAG,EAAG,WACxB,OAAO7E,KAAK80rB,aAAanjpB,SACrB3xC,KAAKg/C,QACLh/C,KAAKi/C,UACLo+oB,KAUZ,SAASC,GAAc9kc,EAAUrzM,GAC7B,OAAOA,EAAOo4oB,eA9ClB3I,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGwI,IAClCxI,EAAe,IAAK,CAAC,KAAM,GAAI,EAN/B,WACI,OAAO50rB,KAAKg/C,SAAW,KAO3B41oB,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKwI,GAAQzlpB,MAAM33C,MAAQo0rB,EAASp0rB,KAAKi/C,UAAW,KAG/D21oB,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAwI,GAAQzlpB,MAAM33C,MACdo0rB,EAASp0rB,KAAKi/C,UAAW,GACzBm1oB,EAASp0rB,KAAKk/C,UAAW,KAIjC01oB,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK50rB,KAAKg/C,QAAUo1oB,EAASp0rB,KAAKi/C,UAAW,KAGxD21oB,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACA50rB,KAAKg/C,QACLo1oB,EAASp0rB,KAAKi/C,UAAW,GACzBm1oB,EAASp0rB,KAAKk/C,UAAW,KAcjCvN,GAAS,KAAK,GACdA,GAAS,KAAK,GAQdkmpB,GAAc,IAAKyF,IACnBzF,GAAc,IAAKyF,IACnBzF,GAAc,IAAKb,EAAWY,IAC9BC,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAMb,EAAWJ,GAE/BiB,GAAc,MAAOZ,GACrBY,GAAc,QAASX,GACvBW,GAAc,MAAOZ,GACrBY,GAAc,QAASX,GAEvBsB,GAAc,CAAC,IAAK,MA3nCT,GA4nCXA,GAAc,CAAC,IAAK,MAAO,SAAUh6oB,EAAOzlC,EAAOqf,GAC/C,IAAIolqB,EAAS5kW,GAAMp6S,GACnBzlC,EA9nCO,GA8nCkB,KAAXykrB,EAAgB,EAAIA,IAEtChF,GAAc,CAAC,IAAK,KAAM,SAAUh6oB,EAAOzlC,EAAOqf,GAC9CA,EAAOqlqB,MAAQrlqB,EAAO+qF,QAAQwc,KAAKnhF,GACnCpmB,EAAOslqB,UAAYl/oB,IAEvBg6oB,GAAc,CAAC,IAAK,MAAO,SAAUh6oB,EAAOzlC,EAAOqf,GAC/Crf,EAroCO,GAqoCO6/U,GAAMp6S,GACpBkzoB,EAAgBt5pB,GAAQw6pB,SAAU,IAEtC4F,GAAc,MAAO,SAAUh6oB,EAAOzlC,EAAOqf,GACzC,IAAI8kJ,EAAM1+H,EAAMr6C,OAAS,EACzB4U,EA1oCO,GA0oCO6/U,GAAMp6S,EAAMjH,OAAO,EAAG2lI,IACpCnkK,EA1oCS,GA0oCO6/U,GAAMp6S,EAAMjH,OAAO2lI,IACnCw0gB,EAAgBt5pB,GAAQw6pB,SAAU,IAEtC4F,GAAc,QAAS,SAAUh6oB,EAAOzlC,EAAOqf,GAC3C,IAAIulqB,EAAOn/oB,EAAMr6C,OAAS,EACtBy5rB,EAAOp/oB,EAAMr6C,OAAS,EAC1B4U,EAjpCO,GAipCO6/U,GAAMp6S,EAAMjH,OAAO,EAAGompB,IACpC5krB,EAjpCS,GAipCO6/U,GAAMp6S,EAAMjH,OAAOompB,EAAM,IACzC5krB,EAjpCS,GAipCO6/U,GAAMp6S,EAAMjH,OAAOqmpB,IACnClM,EAAgBt5pB,GAAQw6pB,SAAU,IAEtC4F,GAAc,MAAO,SAAUh6oB,EAAOzlC,EAAOqf,GACzC,IAAI8kJ,EAAM1+H,EAAMr6C,OAAS,EACzB4U,EAxpCO,GAwpCO6/U,GAAMp6S,EAAMjH,OAAO,EAAG2lI,IACpCnkK,EAxpCS,GAwpCO6/U,GAAMp6S,EAAMjH,OAAO2lI,MAEvCs7gB,GAAc,QAAS,SAAUh6oB,EAAOzlC,EAAOqf,GAC3C,IAAIulqB,EAAOn/oB,EAAMr6C,OAAS,EACtBy5rB,EAAOp/oB,EAAMr6C,OAAS,EAC1B4U,EA9pCO,GA8pCO6/U,GAAMp6S,EAAMjH,OAAO,EAAGompB,IACpC5krB,EA9pCS,GA8pCO6/U,GAAMp6S,EAAMjH,OAAOompB,EAAM,IACzC5krB,EA9pCS,GA8pCO6/U,GAAMp6S,EAAMjH,OAAOqmpB,MAWvC,IAsCIC,GAjCAC,GAAa7E,GAAW,SAAS,GAUjC8E,GAAa,CACb75qB,SA1mDkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAqmDVb,eA9+CwB,CACxBE,IAAK,YACLD,GAAI,SACJE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAy+CN8tB,YA58CqB,eA68CrBtsB,QAv8CiB,KAw8CjBD,uBAv8CgC,UAw8ChCf,aAl8CsB,CACtBC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ/B,EAAG,WACHgC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJhN,EAAG,QACHiN,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAo7CJ3C,OAAQ82qB,GACR72qB,YAAa82qB,GAEbh0qB,KAvkBoB,CACpBC,IAAK,EACLC,IAAK,GAukBLtC,SAAUu4qB,GACVr4qB,YAAau4qB,GACbx4qB,cAAeu4qB,GAEfvqpB,cAhC6B,iBAoC7B8Y,GAAU,GACV0zoB,GAAiB,GAGrB,SAASC,GAAa72T,EAAMr7C,GACxB,IAAIlkV,EACAq2rB,EAAO3/qB,KAAKG,IAAI0oX,EAAKjjY,OAAQ4nV,EAAK5nV,QACtC,IAAK0D,EAAI,EAAGA,EAAIq2rB,EAAMr2rB,GAAK,EACvB,GAAIu/X,EAAKv/X,KAAOkkV,EAAKlkV,GACjB,OAAOA,EAGf,OAAOq2rB,EAGX,SAAS19G,GAAgB7jkB,GACrB,OAAOA,EAAMA,EAAIC,cAAcpb,QAAQ,IAAK,KAAOmb,EA4CvD,SAASwhrB,GAAWh9rB,GAChB,IAAIi9rB,EAAY,KAGhB,QACsB35rB,IAAlB6lD,GAAQnpD,SACU,IAAXi8B,GACPA,GACAA,EAAOC,SAdf,SAA0Bl8B,GAGtB,SAAUA,IAAQA,EAAKmwC,MAAM,gBAYzB+spB,CAAiBl9rB,GAEjB,IACIi9rB,EAAYP,GAAaS,MAEzB,UAAe,KAAcn9rB,GAC7Bo9rB,GAAmBH,GACrB,MAAOnqqB,GAGLq2B,GAAQnpD,GAAQ,KAGxB,OAAOmpD,GAAQnpD,GAMnB,SAASo9rB,GAAmB5hrB,EAAK7I,GAC7B,IAAIhE,EAqBJ,OApBI6M,KAEI7M,EADA8kQ,EAAY9gQ,GACL0qrB,GAAU7hrB,GAEVgG,GAAahG,EAAK7I,IAKzB+prB,GAAe/trB,EAEQ,oBAAZi7B,SAA2BA,QAAQ24B,MAE1C34B,QAAQ24B,KACJ,UAAY/mD,EAAM,2CAM3BkhrB,GAAaS,MAGxB,SAAS37qB,GAAaxhB,EAAMi3B,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAI+sB,EACA+uoB,EAAe6J,GAEnB,GADA3lqB,EAAOkkJ,KAAOn7K,EACO,MAAjBmpD,GAAQnpD,GACR6yrB,EACI,uBACA,2OAKJE,EAAe5poB,GAAQnpD,GAAM2gC,aAC1B,GAA2B,MAAvB1J,EAAOsojB,aACd,GAAoC,MAAhCp2hB,GAAQlyB,EAAOsojB,cACfwzG,EAAe5poB,GAAQlyB,EAAOsojB,cAAc5+iB,YACzC,CAEH,GAAc,OADdqjB,EAASg5oB,GAAW/lqB,EAAOsojB,eAWvB,OAPKs9G,GAAe5lqB,EAAOsojB,gBACvBs9G,GAAe5lqB,EAAOsojB,cAAgB,IAE1Cs9G,GAAe5lqB,EAAOsojB,cAAc98kB,KAAK,CACrCzC,KAAMA,EACNi3B,OAAQA,IAEL,KATP87pB,EAAe/uoB,EAAOrjB,QA0BlC,OAbAwoB,GAAQnpD,GAAQ,IAAIgzrB,EAAOF,EAAaC,EAAc97pB,IAElD4lqB,GAAe78rB,IACf68rB,GAAe78rB,GAAMkS,QAAQ,SAAUkoB,GACnC5Y,GAAa4Y,EAAEp6B,KAAMo6B,EAAEnD,UAO/BmmqB,GAAmBp9rB,GAEZmpD,GAAQnpD,GAIf,cADOmpD,GAAQnpD,GACR,KAkDf,SAASq9rB,GAAU7hrB,GACf,IAAIwoC,EAMJ,GAJIxoC,GAAOA,EAAIwmG,SAAWxmG,EAAIwmG,QAAQm7kB,QAClC3hrB,EAAMA,EAAIwmG,QAAQm7kB,QAGjB3hrB,EACD,OAAOkhrB,GAGX,IAAK7nrB,EAAQ2G,GAAM,CAGf,GADAwoC,EAASg5oB,GAAWxhrB,GAEhB,OAAOwoC,EAEXxoC,EAAM,CAACA,GAGX,OAnNJ,SAAsB8hrB,GAOlB,IANA,IACIlqrB,EACA1Q,EACAshD,EACA5iC,EAJA1a,EAAI,EAMDA,EAAI42rB,EAAMt6rB,QAAQ,CAKrB,IAHAoQ,GADAgO,EAAQi+jB,GAAgBi+G,EAAM52rB,IAAI0a,MAAM,MAC9Bpe,OAEVN,GADAA,EAAO28kB,GAAgBi+G,EAAM52rB,EAAI,KACnBhE,EAAK0e,MAAM,KAAO,KACzBhO,EAAI,GAAG,CAEV,GADA4wC,EAASg5oB,GAAW57qB,EAAM/Y,MAAM,EAAG+K,GAAGy7B,KAAK,MAEvC,OAAOmV,EAEX,GACIthD,GACAA,EAAKM,QAAUoQ,GACf0prB,GAAa17qB,EAAO1e,IAAS0Q,EAAI,EAGjC,MAEJA,IAEJ1M,IAEJ,OAAOg2rB,GAsLAa,CAAa/hrB,GAOxB,SAASgirB,GAAc77qB,GACnB,IAAI2xD,EACA14D,EAAI+G,EAAEnY,GAuCV,OArCIoR,IAAsC,IAAjC21qB,EAAgB5uqB,GAAG2xD,WACxBA,EACI14D,EAv8CA,GAu8CW,GAAKA,EAv8ChB,GAu8C2B,GAv8C3B,EAy8CMA,EAx8CP,GAw8CiB,GAAKA,EAx8CtB,GAw8CgC60lB,GAAY70lB,EA18C5C,GA08CqDA,EAz8CpD,IACD,EA08CSA,EAz8CT,GAy8CmB,GACRA,EA18CX,GA08CqB,IACG,KAAZA,EA38CZ,KA48C8B,IAAdA,EA38Cd,IA48C+B,IAAdA,EA38CjB,IA48CoC,IAAnBA,EA38CZ,IAHP,EAg9CWA,EA/8CT,GA+8CqB,GAAKA,EA/8C1B,GA+8CsC,GA/8CtC,EAi9CWA,EAh9CX,GAg9CuB,GAAKA,EAh9C5B,GAg9CwC,GAh9CxC,EAk9CaA,EAj9CR,GAi9CyB,GAAKA,EAj9C9B,GAi9C+C,IAj9C/C,GAm9CW,EAGjB21qB,EAAgB5uqB,GAAG87qB,qBAClBnqnB,EA79CF,GA69CqBA,EA39CrB,KA69CCA,EA79CD,GA+9CCi9mB,EAAgB5uqB,GAAG+7qB,iBAAgC,IAAdpqnB,IACrCA,EA39CD,GA69CCi9mB,EAAgB5uqB,GAAGg8qB,mBAAkC,IAAdrqnB,IACvCA,EA79CE,GAg+CNi9mB,EAAgB5uqB,GAAG2xD,SAAWA,GAG3B3xD,EAKX,IAAIi8qB,GACI,iJACJC,GACI,6IACJC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElB9M,GACI,0LACJ+M,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAc5nqB,GACnB,IAAIvwB,EACA+jI,EAGAq0jB,EACA5lX,EACAt9Q,EACAmjoB,EALA/wpB,EAAS/W,EAAO1oB,GAChB4hC,EAAQytpB,GAAiBrgpB,KAAKvP,IAAW6vpB,GAActgpB,KAAKvP,GAK5DgxpB,EAAcjB,GAAS/6rB,OACvBi8rB,EAAcjB,GAASh7rB,OAE3B,GAAImtC,EAAO,CAEP,IADAogpB,EAAgBt5pB,GAAQg6pB,KAAM,EACzBvqrB,EAAI,EAAG+jI,EAAIu0jB,EAAat4rB,EAAI+jI,EAAG/jI,IAChC,GAAIq3rB,GAASr3rB,GAAG,GAAG62C,KAAKpN,EAAM,IAAK,CAC/B+oS,EAAa6kX,GAASr3rB,GAAG,GACzBo4rB,GAA+B,IAAnBf,GAASr3rB,GAAG,GACxB,MAGR,GAAkB,MAAdwyU,EAEA,YADAjiT,EAAOy6pB,UAAW,GAGtB,GAAIvhpB,EAAM,GAAI,CACV,IAAKzpC,EAAI,EAAG+jI,EAAIw0jB,EAAav4rB,EAAI+jI,EAAG/jI,IAChC,GAAIs3rB,GAASt3rB,GAAG,GAAG62C,KAAKpN,EAAM,IAAK,CAE/ByrB,GAAczrB,EAAM,IAAM,KAAO6tpB,GAASt3rB,GAAG,GAC7C,MAGR,GAAkB,MAAdk1D,EAEA,YADA3kC,EAAOy6pB,UAAW,GAI1B,IAAKoN,GAA2B,MAAdljoB,EAEd,YADA3kC,EAAOy6pB,UAAW,GAGtB,GAAIvhpB,EAAM,GAAI,CACV,IAAI2tpB,GAAQvgpB,KAAKpN,EAAM,IAInB,YADAlZ,EAAOy6pB,UAAW,GAFlBqN,EAAW,IAMnB9nqB,EAAOi7pB,GAAKh5W,GAAct9Q,GAAc,KAAOmjoB,GAAY,IAC3DG,GAA0BjoqB,QAE1BA,EAAOy6pB,UAAW,EA+E1B,SAASyN,GAAkBloqB,GACvB,IACImoqB,EA3EJC,EACAC,EACAC,EACAC,EACAC,EAEIhkqB,EAegBikqB,EAChBrnpB,EAoDAlI,EAAQghpB,GAAQ5zoB,KAAuBtmB,EAAO1oB,GAxC7ClO,QAAQ,qBAAsB,KAC9BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,KAuCvB,GAAI8vC,EAAO,CASP,GArFJkvpB,EA+EQlvpB,EAAM,GA9EdmvpB,EA+EQnvpB,EAAM,GA9EdovpB,EA+EQpvpB,EAAM,GA9EdqvpB,EA+EQrvpB,EAAM,GA9EdsvpB,EA+EQtvpB,EAAM,GA7EV1U,EAAS,EAeOikqB,EAyDZvvpB,EAAM,GAxDVkI,EAAOhK,SAASqxpB,EAAS,IACzBrnpB,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,GApBHmgpB,GAAyB1wrB,QAAQu3rB,GACjChxpB,SAASixpB,EAAQ,IACjBjxpB,SAASkxpB,EAAS,IAClBlxpB,SAASmxpB,EAAW,KAGpBC,GACAhkqB,EAAOh5B,KAAK4rC,SAASoxpB,EAAW,MAyBxC,SAAsBE,EAAYC,EAAa3oqB,GAC3C,OAAI0oqB,GAEsB/E,GAA2B9yrB,QAAQ63rB,KACrC,IAAIpmpB,KAChBqmpB,EAAY,GACZA,EAAY,GACZA,EAAY,IACdp/kB,WAEF+vkB,EAAgBt5pB,GAAQm6pB,iBAAkB,EAC1Cn6pB,EAAOy6pB,UAAW,GACX,GAiCNmO,CAAa1vpB,EAAM,GARxBivpB,EA3DG3jqB,EAmEsCxE,GACrC,OAGJA,EAAOztB,GAAK41rB,EACZnoqB,EAAOm7pB,KAhCf,SAAyB0N,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAO5B,GAAW4B,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIp4a,EAAKt5O,SAAS2xpB,EAAW,IACzBr+qB,EAAIgmQ,EAAK,IAEb,OADSA,EAAKhmQ,GAAK,IACR,GAAKA,EAsBF+/f,CAAgBvxe,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExDlZ,EAAOvD,GAAKomqB,GAActjpB,MAAM,KAAMvf,EAAOztB,IAC7CytB,EAAOvD,GAAG0kqB,cAAcnhqB,EAAOvD,GAAG+lB,gBAAkBxiB,EAAOm7pB,MAE3D7B,EAAgBt5pB,GAAQk6pB,SAAU,OAElCl6pB,EAAOy6pB,UAAW,EA4C1B,SAAS9rqB,GAAShL,EAAGC,EAAG4zB,GACpB,OAAS,MAAL7zB,EACOA,EAEF,MAALC,EACOA,EAEJ4zB,EAoBX,SAASwxpB,GAAgBhpqB,GACrB,IAAIvwB,EACAoyC,EAEA6qB,EACAu8nB,EACAC,EAHA9ipB,EAAQ,GAKZ,IAAIpmB,EAAOvD,GAAX,CAgCA,IA5BAiwC,EA7BJ,SAA0B1sC,GAEtB,IAAImpqB,EAAW,IAAI7mpB,KAAKs0C,EAAMjjC,OAC9B,OAAI3zB,EAAOopqB,QACA,CACHD,EAASpopB,iBACToopB,EAASnopB,cACTmopB,EAASlopB,cAGV,CAACkopB,EAASrnpB,cAAeqnpB,EAASpnpB,WAAYonpB,EAASnnpB,WAmBhDqnpB,CAAiBrpqB,GAG3BA,EAAOugqB,IAAyB,MAAnBvgqB,EAAOztB,GAlxDjB,IAkxDyD,MAApBytB,EAAOztB,GAnxD3C,IA61DZ,SAA+BytB,GAC3B,IAAIlT,EAAGsxqB,EAAU7wqB,EAAMw8B,EAASv8B,EAAKC,EAAK+vP,EAAM8rb,EAAiBC,EAGrD,OADZz8qB,EAAIkT,EAAOugqB,IACL/C,IAAqB,MAAP1wqB,EAAE0+L,GAAoB,MAAP1+L,EAAE+9L,GACjCr9L,EAAM,EACNC,EAAM,EAMN2wqB,EAAWzvqB,GACP7B,EAAE0wqB,GACFx9pB,EAAOztB,GA52DR,GA62DC4gE,GAAWq2nB,KAAe,EAAG,GAAGpopB,MAEpC7zB,EAAOoB,GAAS7B,EAAE0+L,EAAG,KACrBzhK,EAAUp7B,GAAS7B,EAAE+9L,EAAG,IACV,GAAK9gK,EAAU,KACzBu/oB,GAAkB,KAGtB97qB,EAAMwS,EAAO+qF,QAAQ0+kB,MAAMj8qB,IAC3BC,EAAMuS,EAAO+qF,QAAQ0+kB,MAAMh8qB,IAE3B87qB,EAAUp2nB,GAAWq2nB,KAAeh8qB,EAAKC,GAEzC2wqB,EAAWzvqB,GAAS7B,EAAEuwqB,GAAIr9pB,EAAOztB,GA13D9B,GA03DwCg3rB,EAAQnopB,MAGnD7zB,EAAOoB,GAAS7B,EAAEA,EAAGy8qB,EAAQh8qB,MAElB,MAAPT,EAAElN,IAEFmqC,EAAUj9B,EAAElN,GACE,GAAKmqC,EAAU,KACzBu/oB,GAAkB,GAER,MAAPx8qB,EAAE+O,GAETkuB,EAAUj9B,EAAE+O,EAAIrO,GACZV,EAAE+O,EAAI,GAAK/O,EAAE+O,EAAI,KACjBytqB,GAAkB,IAItBv/oB,EAAUv8B,GAGdD,EAAO,GAAKA,EAAO41qB,GAAY/E,EAAU5wqB,EAAKC,GAC9C6rqB,EAAgBt5pB,GAAQymqB,gBAAiB,EACf,MAAnB6C,EACPhQ,EAAgBt5pB,GAAQ0mqB,kBAAmB,GAE3Clpb,EAAOslb,GAAmB1E,EAAU7wqB,EAAMw8B,EAASv8B,EAAKC,GACxDuS,EAAOztB,GAt5DJ,GAs5DeirQ,EAAKp8N,KACvBphB,EAAO0pqB,WAAalsb,EAAK2gb,WAlIzBwL,CAAsB3pqB,GAID,MAArBA,EAAO0pqB,aACPR,EAAYv6qB,GAASqR,EAAOztB,GA1xDzB,GA0xDmCm6D,EA1xDnC,KA6xDC1sC,EAAO0pqB,WAAahJ,GAAWwI,IACT,IAAtBlpqB,EAAO0pqB,cAEPpQ,EAAgBt5pB,GAAQwmqB,oBAAqB,GAGjD3kpB,EAAOghpB,GAAcqG,EAAW,EAAGlpqB,EAAO0pqB,YAC1C1pqB,EAAOztB,GAnyDH,GAmyDesvC,EAAKb,cACxBhhB,EAAOztB,GAnyDJ,GAmyDesvC,EAAKZ,cAQtBxxC,EAAI,EAAGA,EAAI,GAAqB,MAAhBuwB,EAAOztB,GAAG9C,KAAcA,EACzCuwB,EAAOztB,GAAG9C,GAAK22C,EAAM32C,GAAKi9D,EAAYj9D,GAI1C,KAAOA,EAAI,EAAGA,IACVuwB,EAAOztB,GAAG9C,GAAK22C,EAAM32C,GACD,MAAhBuwB,EAAOztB,GAAG9C,GAAoB,IAANA,EAAU,EAAI,EAAKuwB,EAAOztB,GAAG9C,GAKrC,KAApBuwB,EAAOztB,GAtzDJ,IAuzDmB,IAAtBytB,EAAOztB,GAtzDF,IAuzDiB,IAAtBytB,EAAOztB,GAtzDF,IAuzDsB,IAA3BytB,EAAOztB,GAtzDG,KAwzDVytB,EAAO4pqB,UAAW,EAClB5pqB,EAAOztB,GA5zDJ,GA4zDe,GAGtBytB,EAAOvD,IAAMuD,EAAOopqB,QAAUvG,GAAgB/rF,IAAYv3jB,MACtD,KACA6G,GAEJ6ipB,EAAkBjpqB,EAAOopqB,QACnBppqB,EAAOvD,GAAGklB,YACV3hB,EAAOvD,GAAG8sF,SAIG,MAAfvpF,EAAOm7pB,MACPn7pB,EAAOvD,GAAG0kqB,cAAcnhqB,EAAOvD,GAAG+lB,gBAAkBxiB,EAAOm7pB,MAG3Dn7pB,EAAO4pqB,WACP5pqB,EAAOztB,GA90DJ,GA80De,IAKlBytB,EAAOugqB,SACgB,IAAhBvgqB,EAAOugqB,GAAG3grB,GACjBogB,EAAOugqB,GAAG3grB,IAAMqprB,IAEhB3P,EAAgBt5pB,GAAQm6pB,iBAAkB,IAwElD,SAAS8N,GAA0BjoqB,GAE/B,GAAIA,EAAOi7pB,KAAOrkmB,EAAMizmB,SAIxB,GAAI7pqB,EAAOi7pB,KAAOrkmB,EAAMkzmB,SAAxB,CAIA9pqB,EAAOztB,GAAK,GACZ+mrB,EAAgBt5pB,GAAQo7I,OAAQ,EAGhC,IACI3rK,EACAk5rB,EACAh2oB,EACAlmD,EACAs9rB,EAGAjgpB,EACAu2oB,EATAtppB,EAAS,GAAK/W,EAAO1oB,GAMrB0yrB,EAAejzpB,EAAOhrC,OACtBk+rB,EAAyB,EAO7B,IADA5J,GAFA1toB,EACIiqoB,EAAa58pB,EAAOi7pB,GAAIj7pB,EAAO+qF,SAAS7xE,MAAMkjpB,IAAqB,IACrDrwrB,OACb0D,EAAI,EAAGA,EAAI4wrB,EAAU5wrB,KAEtBk5rB,GAAe5xpB,EAAOmC,MAAMympB,GAD5BlzrB,EAAQkmD,EAAOljD,GAC0CuwB,KACrD,IAAI,OAEJ+pqB,EAAUhzpB,EAAOoI,OAAO,EAAGpI,EAAOlmC,QAAQ83rB,KAC9B58rB,OAAS,GACjButrB,EAAgBt5pB,GAAQy5pB,YAAYjurB,KAAKu+rB,GAE7ChzpB,EAASA,EAAO3lC,MACZ2lC,EAAOlmC,QAAQ83rB,GAAeA,EAAY58rB,QAE9Ck+rB,GAA0BtB,EAAY58rB,QAGtCwwrB,EAAqB9vrB,IACjBk8rB,EACArP,EAAgBt5pB,GAAQo7I,OAAQ,EAEhCk+gB,EAAgBt5pB,GAAQw5pB,aAAahurB,KAAKiB,GAE9C+zrB,GAAwB/zrB,EAAOk8rB,EAAa3oqB,IACrCA,EAAOu6pB,UAAYoO,GAC1BrP,EAAgBt5pB,GAAQw5pB,aAAahurB,KAAKiB,GAKlD6srB,EAAgBt5pB,GAAQ05pB,cACpBsQ,EAAeC,EACflzpB,EAAOhrC,OAAS,GAChButrB,EAAgBt5pB,GAAQy5pB,YAAYjurB,KAAKurC,GAKzC/W,EAAOztB,GA/9DJ,IA+9DgB,KACiB,IAApC+mrB,EAAgBt5pB,GAAQw6pB,SACxBx6pB,EAAOztB,GAj+DJ,GAi+De,IAElB+mrB,EAAgBt5pB,GAAQw6pB,aAAUnurB,GAGtCitrB,EAAgBt5pB,GAAQi6pB,gBAAkBj6pB,EAAOztB,GAAGnB,MAAM,GAC1DkorB,EAAgBt5pB,GAAQuZ,SAAWvZ,EAAOslqB,UAE1CtlqB,EAAOztB,GAz+DA,GAy/DX,SAAyBw6C,EAAQzT,EAAMC,GACnC,IAAI2wpB,EAEJ,OAAgB,MAAZ3wpB,EAEOD,EAEgB,MAAvByT,EAAO1T,aACA0T,EAAO1T,aAAaC,EAAMC,GACX,MAAfwT,EAAOw6E,OAEd2ikB,EAAOn9oB,EAAOw6E,KAAKhuF,KACPD,EAAO,KACfA,GAAQ,IAEP4wpB,GAAiB,KAAT5wpB,IACTA,EAAO,GAEJA,GAGAA,EArCO6wpB,CACdnqqB,EAAO+qF,QACP/qF,EAAOztB,GA3+DJ,GA4+DHytB,EAAOslqB,WAKC,QADZx7oB,EAAMwvoB,EAAgBt5pB,GAAQ8pB,OAE1B9pB,EAAOztB,GAr/DJ,GAq/DeytB,EAAO+qF,QAAQq/kB,gBAAgBtgpB,EAAK9pB,EAAOztB,GAr/D1D,KAw/DPy2rB,GAAgBhpqB,GAChBumqB,GAAcvmqB,QAhFVkoqB,GAAkBloqB,QAJlB4nqB,GAAc5nqB,GA0MtB,SAASqqqB,GAAcrqqB,GACnB,IAAIomB,EAAQpmB,EAAO1oB,GACfqT,EAASqV,EAAOi7pB,GAIpB,OAFAj7pB,EAAO+qF,QAAU/qF,EAAO+qF,SAAWq7kB,GAAUpmqB,EAAOk7pB,IAEtC,OAAV90oB,QAA8B/5C,IAAXse,GAAkC,KAAVy7B,EACpCs0oB,EAAc,CAAEf,WAAW,KAGjB,iBAAVvzoB,IACPpmB,EAAO1oB,GAAK8uC,EAAQpmB,EAAO+qF,QAAQ9xE,SAASmN,IAG5Cm1oB,EAASn1oB,GACF,IAAIk1oB,EAAOiL,GAAcngpB,KACzBggM,EAAOhgM,GACdpmB,EAAOvD,GAAK2pB,EACLxoC,EAAQ+M,GA3GvB,SAAkCqV,GAC9B,IAAIsqqB,EACAC,EACAC,EACA/6rB,EACAg7rB,EACAC,EACAC,GAAoB,EACpBC,EAAa5qqB,EAAOi7pB,GAAGlvrB,OAE3B,GAAmB,IAAf6+rB,EAGA,OAFAtR,EAAgBt5pB,GAAQ85pB,eAAgB,OACxC95pB,EAAOvD,GAAK,IAAI6lB,KAAK+jF,MAIzB,IAAK52H,EAAI,EAAGA,EAAIm7rB,EAAYn7rB,IACxBg7rB,EAAe,EACfC,GAAmB,EACnBJ,EAAaxP,EAAW,GAAI96pB,GACN,MAAlBA,EAAOopqB,UACPkB,EAAWlB,QAAUppqB,EAAOopqB,SAEhCkB,EAAWrP,GAAKj7pB,EAAOi7pB,GAAGxrrB,GAC1Bw4rB,GAA0BqC,GAEtBl+mB,EAAQk+mB,KACRI,GAAmB,GAIvBD,GAAgBnR,EAAgBgR,GAAY5Q,cAG5C+Q,GAAkE,GAAlDnR,EAAgBgR,GAAY9Q,aAAaztrB,OAEzDutrB,EAAgBgR,GAAYjlD,MAAQolD,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpChlf,EAAO3lL,EAAQuqqB,GAAcD,GAkDzBO,CAAyB7qqB,GAClBrV,EACPs9qB,GAA0BjoqB,GAYlC,SAAyBA,GACrB,IAAIomB,EAAQpmB,EAAO1oB,GACfklQ,EAAYp2N,GACZpmB,EAAOvD,GAAK,IAAI6lB,KAAKs0C,EAAMjjC,OACpByyL,EAAOhgM,GACdpmB,EAAOvD,GAAK,IAAI6lB,KAAK8D,EAAM1F,WACH,iBAAV0F,EAndtB,SAA0BpmB,GACtB,IAAIyxJ,EAAUu1gB,GAAgB1gpB,KAAKtmB,EAAO1oB,IAC1B,OAAZm6K,GAKJm2gB,GAAc5nqB,IACU,IAApBA,EAAOy6pB,kBACAz6pB,EAAOy6pB,SAKlByN,GAAkBloqB,IACM,IAApBA,EAAOy6pB,kBACAz6pB,EAAOy6pB,SAKdz6pB,EAAOu6pB,QACPv6pB,EAAOy6pB,UAAW,EAGlB7jmB,EAAMk0mB,wBAAwB9qqB,MAtB9BA,EAAOvD,GAAK,IAAI6lB,MAAMmvI,EAAQ,IAid9Bs5gB,CAAiB/qqB,GACVpiB,EAAQwoC,IACfpmB,EAAOztB,GAAKlB,EAAI+0C,EAAMh1C,MAAM,GAAI,SAAUuU,GACtC,OAAOyxB,SAASzxB,EAAK,MAEzBqjrB,GAAgBhpqB,IACTizK,EAAS7sJ,GA1ExB,SAA0BpmB,GACtB,IAAIA,EAAOvD,GAAX,CAIA,IAAIhtB,EAAIqurB,EAAqB99pB,EAAO1oB,IAEpC0oB,EAAOztB,GAAKlB,EACR,CAAC5B,EAAE2xC,KAAM3xC,EAAEob,WAFWxe,IAAVoD,EAAEiqC,IAAoBjqC,EAAEoyC,KAAOpyC,EAAEiqC,IAEhBjqC,EAAE6pC,KAAM7pC,EAAE+pC,OAAQ/pC,EAAEs3C,OAAQt3C,EAAEu3C,aAC3D,SAAUrhC,GACN,OAAOA,GAAOyxB,SAASzxB,EAAK,MAIpCqjrB,GAAgBhpqB,IA6DZgrqB,CAAiBhrqB,GACVkmF,EAAS9/D,GAEhBpmB,EAAOvD,GAAK,IAAI6lB,KAAK8D,GAErBwwC,EAAMk0mB,wBAAwB9qqB,GA7B9BirqB,CAAgBjrqB,GAGfosD,EAAQpsD,KACTA,EAAOvD,GAAK,MAGTuD,IA0BX,SAASo5pB,GAAiBhzoB,EAAOz7B,EAAQoiC,EAAQosoB,EAAQ6H,GACrD,IAnEI9gqB,EAmEAsX,EAAI,GA2BR,OAzBe,IAAX7sB,IAA8B,IAAXA,IACnBwuqB,EAASxuqB,EACTA,OAASte,IAGE,IAAX0gD,IAA8B,IAAXA,IACnBosoB,EAASpsoB,EACTA,OAAS1gD,IAIR4mM,EAAS7sJ,IAAU4yoB,EAAc5yoB,IACjCxoC,EAAQwoC,IAA2B,IAAjBA,EAAMr6C,UAEzBq6C,OAAQ/5C,GAIZmrC,EAAEwjpB,kBAAmB,EACrBxjpB,EAAE4xpB,QAAU5xpB,EAAE4jpB,OAAS4F,EACvBxppB,EAAE0jpB,GAAKnuoB,EACPvV,EAAElgC,GAAK8uC,EACP5O,EAAEyjpB,GAAKtwqB,EACP6sB,EAAE+ipB,QAAUpB,GA5FRj5pB,EAAM,IAAIo7pB,EAAOiL,GAAc8D,GA8FX7ypB,MA7FhBoypB,WAEJ1pqB,EAAIz1B,IAAI,EAAG,KACXy1B,EAAI0pqB,cAAWv9rB,GAGZ6zB,EA0FX,SAASspqB,GAAYpjpB,EAAOz7B,EAAQoiC,EAAQosoB,GACxC,OAAOC,GAAiBhzoB,EAAOz7B,EAAQoiC,EAAQosoB,GAAQ,GAve3DvimB,EAAMk0mB,wBAA0Bx3jB,EAC5B,gSAGA,SAAUtzG,GACNA,EAAOvD,GAAK,IAAI6lB,KAAKtiB,EAAO1oB,IAAM0oB,EAAOopqB,QAAU,OAAS,OAuLpExymB,EAAMizmB,SAAW,aAGjBjzmB,EAAMkzmB,SAAW,aA2SjB,IAAIoB,GAAe53jB,EACX,qGACA,WACI,IAAI7qB,EAAQ+glB,GAAYjqpB,MAAM,KAAMr+B,WACpC,OAAItZ,KAAKwkF,WAAaq8B,EAAMr8B,UACjBq8B,EAAQ7gH,KAAOA,KAAO6gH,EAEtBiykB,MAInByQ,GAAe73jB,EACX,qGACA,WACI,IAAI7qB,EAAQ+glB,GAAYjqpB,MAAM,KAAMr+B,WACpC,OAAItZ,KAAKwkF,WAAaq8B,EAAMr8B,UACjBq8B,EAAQ7gH,KAAOA,KAAO6gH,EAEtBiykB,MAUvB,SAASjlb,GAAO7+P,EAAIw0rB,GAChB,IAAIlrqB,EAAKzwB,EAIT,GAHuB,IAAnB27rB,EAAQr/rB,QAAgB6R,EAAQwtrB,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQr/rB,OACT,OAAOy9rB,KAGX,IADAtpqB,EAAMkrqB,EAAQ,GACT37rB,EAAI,EAAGA,EAAI27rB,EAAQr/rB,SAAU0D,EACzB27rB,EAAQ37rB,GAAG28E,YAAag/mB,EAAQ37rB,GAAGmH,GAAIspB,KACxCA,EAAMkrqB,EAAQ37rB,IAGtB,OAAOywB,EAgBX,IAIImrqB,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eA0CJ,SAASC,GAASlmpB,GACd,IAAI44oB,EAAkBF,EAAqB14oB,GACvCoB,EAAQw3oB,EAAgB58oB,MAAQ,EAChCg8oB,EAAWY,EAAgBpld,SAAW,EACtCpuN,EAASwzqB,EAAgBnzqB,OAAS,EAClCq8B,EAAQ82oB,EAAgBzwqB,MAAQywqB,EAAgBM,SAAW,EAC3D98oB,EAAOw8oB,EAAgBtkpB,KAAO,EAC9BkN,EAAQo3oB,EAAgB1kpB,MAAQ,EAChCuN,EAAUm3oB,EAAgBxkpB,QAAU,EACpCsN,EAAUk3oB,EAAgBj3oB,QAAU,EACpCN,EAAeu3oB,EAAgBh3oB,aAAe,EAElDp/C,KAAK6yrB,SAnDT,SAAyB/vqB,GACrB,IAAInG,EAEA9U,EADA87rB,GAAiB,EAEjBC,EAAWH,GAASt/rB,OACxB,IAAKwY,KAAOmG,EACR,GACIquqB,EAAWruqB,EAAGnG,MAEuB,IAAjC1T,GAAQisB,KAAKuuqB,GAAU9mrB,IACZ,MAAVmG,EAAEnG,IAAiBs+B,MAAMn4B,EAAEnG,KAGhC,OAAO,EAIf,IAAK9U,EAAI,EAAGA,EAAI+7rB,IAAY/7rB,EACxB,GAAIib,EAAE2grB,GAAS57rB,IAAK,CAChB,GAAI87rB,EACA,OAAO,EAEP91qB,WAAW/K,EAAE2grB,GAAS57rB,OAAS+wV,GAAM91U,EAAE2grB,GAAS57rB,OAChD87rB,GAAiB,GAK7B,OAAO,EAuBSE,CAAgBzN,GAGhCp2rB,KAAK8jsB,eACAjlpB,EACS,IAAVK,EACU,IAAVD,EACQ,IAARD,EAAe,GAAK,GAGxBh/C,KAAK+jsB,OAASnqpB,EAAe,EAAR0F,EAIrBt/C,KAAK0zmB,SAAW9wlB,EAAoB,EAAX4yqB,EAAuB,GAAR52oB,EAExC5+C,KAAKiU,MAAQ,GAEbjU,KAAKmjH,QAAUq7kB,KAEfx+rB,KAAKgksB,UAGT,SAASC,GAAWlmrB,GAChB,OAAOA,aAAe2lrB,GAG1B,SAASQ,GAASx+qB,GACd,OAAIA,EAAS,GACyB,EAA3BnH,KAAK06B,OAAO,EAAIvzB,GAEhBnH,KAAK06B,MAAMvzB,GAuB1B,SAAS7a,GAAOhG,EAAOg9C,GACnB+yoB,EAAe/vrB,EAAO,EAAG,EAAG,WACxB,IAAIgG,EAAS7K,KAAKmksB,YACdxlpB,EAAO,IAKX,OAJI9zC,EAAS,IACTA,GAAUA,EACV8zC,EAAO,KAGPA,EACAy1oB,KAAYvprB,EAAS,IAAK,GAC1Bg3C,EACAuyoB,IAAWvprB,EAAS,GAAI,KAKpCA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbgtrB,GAAc,IAAKJ,IACnBI,GAAc,KAAMJ,IACpBe,GAAc,CAAC,IAAK,MAAO,SAAUh6oB,EAAOzlC,EAAOqf,GAC/CA,EAAOopqB,SAAU,EACjBppqB,EAAOm7pB,KAAO6Q,GAAiB3M,GAAkBj5oB,KAQrD,IAAI6lpB,GAAc,kBAElB,SAASD,GAAiBzmC,EAASxunB,GAC/B,IAEIiW,EACAnG,EAHAhU,GAAWkE,GAAU,IAAImC,MAAMqsnB,GAKnC,OAAgB,OAAZ1ynB,EACO,KAOQ,KAFnBgU,EAAuB,IADvBmG,IADQna,EAAQA,EAAQ9mC,OAAS,IAAM,IACtB,IAAImtC,MAAM+ypB,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAWzrW,GAAMxzS,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAanG,GAAWA,EAI7D,SAASqlpB,GAAgB9lpB,EAAOy7C,GAC5B,IAAI3hE,EAAK/yB,EACT,OAAI00F,EAAMu5lB,QACNl7pB,EAAM2hE,EAAM2pD,QACZr+I,GACKourB,EAASn1oB,IAAUggM,EAAOhgM,GACrBA,EAAM1F,UACN8opB,GAAYpjpB,GAAO1F,WAAaxgB,EAAIwgB,UAE9CxgB,EAAIzD,GAAG0vqB,QAAQjsqB,EAAIzD,GAAGikB,UAAYvzC,GAClCypF,EAAMwgZ,aAAal3c,GAAK,GACjBA,GAEAspqB,GAAYpjpB,GAAOgmpB,QAIlC,SAASC,GAAc3hrB,GAGnB,OAAQvE,KAAK06B,MAAMn2B,EAAE+R,GAAGi3C,qBA0J5B,SAAS44nB,KACL,QAAO1ksB,KAAKwkF,WAAYxkF,KAAKwzrB,QAA2B,IAAjBxzrB,KAAKyzrB,QApJhDzkmB,EAAMwgZ,aAAe,aAwJrB,IAAIm1N,GAAc,wDAIdC,GACI,sKAER,SAASrmpB,GAAeC,EAAO7hC,GAC3B,IAGIgiC,EACAkve,EACAg3K,EA4FmBjlsB,EAAMihH,EACzBvoF,EAlGAklB,EAAWgB,EAEXlN,EAAQ,KAkEZ,OA7DI2ypB,GAAWzlpB,GACXhB,EAAW,CACP6B,GAAIb,EAAMslpB,cACV9rrB,EAAGwmC,EAAMulpB,MACT3+qB,EAAGo5B,EAAMk1jB,SAENp1f,EAAS9/D,KAAWvD,OAAOuD,IAClChB,EAAW,GACP7gC,EACA6gC,EAAS7gC,IAAQ6hC,EAEjBhB,EAASqB,cAAgBL,IAErBlN,EAAQqzpB,GAAYjmpB,KAAKF,KACjCG,EAAoB,MAAbrN,EAAM,IAAc,EAAI,EAC/BkM,EAAW,CACPl4B,EAAG,EACHtN,EAAG4gV,GAAMtnT,EApoFV,IAooFyBqN,EACxB55B,EAAG6zU,GAAMtnT,EApoFV,IAooFyBqN,EACxB77B,EAAG81U,GAAMtnT,EApoFR,IAooFyBqN,EAC1B/5B,EAAGg0U,GAAMtnT,EApoFR,IAooFyBqN,EAC1BU,GAAIu5S,GAAMsrW,GAA8B,IAArB5ypB,EApoFb,KAooF2CqN,KAE7CrN,EAAQszpB,GAASlmpB,KAAKF,IAE9BhB,EAAW,CACPl4B,EAAGw/qB,GAASxzpB,EAAM,GAFtBqN,EAAoB,MAAbrN,EAAM,IAAc,EAAI,GAG3BlsB,EAAG0/qB,GAASxzpB,EAAM,GAAIqN,GACtBz5B,EAAG4/qB,GAASxzpB,EAAM,GAAIqN,GACtB3mC,EAAG8srB,GAASxzpB,EAAM,GAAIqN,GACtB55B,EAAG+/qB,GAASxzpB,EAAM,GAAIqN,GACtB77B,EAAGgirB,GAASxzpB,EAAM,GAAIqN,GACtB/5B,EAAGkgrB,GAASxzpB,EAAM,GAAIqN,IAEP,MAAZnB,EAEPA,EAAW,GAES,iBAAbA,IACN,SAAUA,GAAY,OAAQA,KAmDZ59C,EAhDfgisB,GAAYpkpB,EAASl5C,MAgDAu8G,EA/CrB+glB,GAAYpkpB,EAASg0G,IAFzBqziB,EAmDEjlsB,EAAK4kF,WAAaq8B,EAAMr8B,WAI9Bq8B,EAAQyjlB,GAAgBzjlB,EAAOjhH,GAC3BA,EAAKmlsB,SAASlklB,GACdvoF,EAAM0sqB,GAA0BplsB,EAAMihH,KAEtCvoF,EAAM0sqB,GAA0BnklB,EAAOjhH,IACnCi/C,cAAgBvmB,EAAIumB,aACxBvmB,EAAI1V,QAAU0V,EAAI1V,QAGf0V,GAZI,CAAEumB,aAAc,EAAGj8B,OAAQ,IA/ClC46B,EAAW,IACF6B,GAAKwlpB,EAAQhmpB,aACtBrB,EAASp4B,EAAIy/qB,EAAQjirB,QAGzBirgB,EAAM,IAAI61K,GAASlmpB,GAEfympB,GAAWzlpB,IAAU2yoB,EAAW3yoB,EAAO,aACvCqve,EAAI1qa,QAAU3kE,EAAM2kE,SAGpB8glB,GAAWzlpB,IAAU2yoB,EAAW3yoB,EAAO,cACvCqve,EAAIglK,SAAWr0oB,EAAMq0oB,UAGlBhlK,EAMX,SAASi3K,GAASG,EAAKtmpB,GAInB,IAAIrmB,EAAM2sqB,GAAOp3qB,WAAWo3qB,EAAIzjsB,QAAQ,IAAK,MAE7C,OAAQy5C,MAAM3iB,GAAO,EAAIA,GAAOqmB,EAGpC,SAASqmpB,GAA0BplsB,EAAMihH,GACrC,IAAIvoF,EAAM,GAUV,OARAA,EAAI1V,OACAi+F,EAAM59F,QAAUrjB,EAAKqjB,QAAyC,IAA9B49F,EAAMrnE,OAAS55C,EAAK45C,QACpD55C,EAAKgkJ,QAAQ/gJ,IAAIy1B,EAAI1V,OAAQ,KAAKsirB,QAAQrklB,MACxCvoF,EAAI1V,OAGV0V,EAAIumB,cAAgBgiE,GAASjhH,EAAKgkJ,QAAQ/gJ,IAAIy1B,EAAI1V,OAAQ,KAEnD0V,EAsBX,SAAS6sqB,GAAYn+rB,EAAW7F,GAC5B,OAAO,SAAUmtC,EAAKkzE,GAClB,IAASq1hB,EAmBT,OAjBe,OAAXr1hB,GAAoBvmE,OAAOumE,KAC3BwykB,EACI7yrB,EACA,YACIA,EACA,uDACAA,EAHJ,kGAOJ01oB,EAAMvomB,EACNA,EAAMkzE,EACNA,EAASq1hB,GAIbuuD,GAAYplsB,KADNu+C,GAAejQ,EAAKkzE,GACHx6G,GAChBhH,MAIf,SAASolsB,GAAYvlF,EAAKrikB,EAAU6npB,EAAU71N,GAC1C,IAAI3wb,EAAerB,EAASsmpB,cACxBlqpB,EAAOsqpB,GAAS1mpB,EAASumpB,OACzBnhrB,EAASshrB,GAAS1mpB,EAASk2jB,SAE1BmM,EAAIr7hB,YAKTgrZ,EAA+B,MAAhBA,GAA8BA,EAEzC5sd,GACAi/F,GAASg+f,EAAK3tmB,GAAI2tmB,EAAK,SAAWj9lB,EAASyirB,GAE3CzrpB,GACAu/oB,GAAMt5E,EAAK,OAAQ3tmB,GAAI2tmB,EAAK,QAAUjmkB,EAAOyrpB,GAE7CxmpB,GACAghkB,EAAIhrlB,GAAG0vqB,QAAQ1kF,EAAIhrlB,GAAGikB,UAAY+F,EAAewmpB,GAEjD71N,GACAxgZ,EAAMwgZ,aAAaqwI,EAAKjmkB,GAAQh3B,IA5FxC27B,GAAevvC,GAAK00rB,GAAShxqB,UAC7B6rB,GAAeoxE,QA/Xf,WACI,OAAOpxE,GAAekgF,MA6d1B,IAAI57H,GAAMsisB,GAAY,EAAG,OACrB/mpB,GAAW+mpB,IAAa,EAAG,YAE/B,SAAS7md,GAAS9/L,GACd,MAAwB,iBAAVA,GAAsBA,aAAiBnP,OAIzD,SAASi2pB,GAAc9mpB,GACnB,OACIm1oB,EAASn1oB,IACTggM,EAAOhgM,IACP8/L,GAAS9/L,IACT8/D,EAAS9/D,IAiDjB,SAA+BA,GAC3B,IAAI+mpB,EAAYvvrB,EAAQwoC,GACpBgnpB,GAAe,EAOnB,OANID,IACAC,EAGkB,IAFdhnpB,EAAMrpC,OAAO,SAAU7D,GACnB,OAAQgtG,EAAShtG,IAASgtO,GAAS9/L,KACpCr6C,QAEJohsB,GAAaC,EAzDhBC,CAAsBjnpB,IAO9B,SAA6BA,GACzB,IA4BI32C,EA5BA69rB,EAAar6f,EAAS7sJ,KAAW4yoB,EAAc5yoB,GAC/CmnpB,GAAe,EACft1b,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIJu1b,EAAcv1b,EAAWlsQ,OAE7B,IAAK0D,EAAI,EAAGA,EAAI+9rB,EAAa/9rB,GAAK,EAE9B89rB,EAAeA,GAAgBxU,EAAW3yoB,EAD/B6xN,EAAWxoQ,IAI1B,OAAO69rB,GAAcC,EA5CjBE,CAAoBrnpB,IALpBm1oB,MAMAn1oB,EA0DR,SAASsnpB,GAAetnpB,GACpB,IAUI32C,EAVA69rB,EAAar6f,EAAS7sJ,KAAW4yoB,EAAc5yoB,GAC/CmnpB,GAAe,EACft1b,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAKxoQ,EAAI,EAAGA,EAAIwoQ,EAAWlsQ,OAAQ0D,GAAK,EAEpC89rB,EAAeA,GAAgBxU,EAAW3yoB,EAD/B6xN,EAAWxoQ,IAI1B,OAAO69rB,GAAcC,EA4KzB,SAASI,GAAUhqrB,EAAGC,GAClB,GAAID,EAAEk+B,OAASj+B,EAAEi+B,OAGb,OAAQ8rpB,GAAU/prB,EAAGD,GAGzB,IAAIiqrB,EAAyC,IAAvBhqrB,EAAEw9B,OAASz9B,EAAEy9B,SAAgBx9B,EAAEiH,QAAUlH,EAAEkH,SAE7D4nI,EAAS9uI,EAAE6nI,QAAQ/gJ,IAAImjsB,EAAgB,UAe3C,QAASA,GAXLhqrB,EAAI6uI,EAAS,GAGH7uI,EAAI6uI,IAAWA,EAFf9uI,EAAE6nI,QAAQ/gJ,IAAImjsB,EAAiB,EAAG,YAMlChqrB,EAAI6uI,IAFJ9uI,EAAE6nI,QAAQ/gJ,IAAImjsB,EAAiB,EAAG,UAETn7iB,MAIF,EAmHzC,SAAS1lG,GAAOxoC,GACZ,IAAIsprB,EAEJ,YAAYxhsB,IAARkY,EACO3c,KAAKmjH,QAAQm7kB,OAGC,OADrB2H,EAAgBzH,GAAU7hrB,MAEtB3c,KAAKmjH,QAAU8ilB,GAEZjmsB,MA1HfgvF,EAAMqf,cAAgB,uBACtBrf,EAAMk3mB,iBAAmB,yBA6HzB,IAAInhD,GAAOr5gB,EACP,kJACA,SAAU/uH,GACN,YAAYlY,IAARkY,EACO3c,KAAK80rB,aAEL90rB,KAAKmlD,OAAOxoC,KAK/B,SAASm4qB,KACL,OAAO90rB,KAAKmjH,QAGhB,IAAIgjlB,GAAgB,IAChBC,GAAgB,IAChBC,GAAc,KACdC,GAAmB,YAGvB,SAASC,GAAM52b,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,EAG9C,SAAS42b,GAAiBlhrB,EAAGxC,EAAG9K,GAE5B,OAAIsN,EAAI,KAAOA,GAAK,EAET,IAAIo1B,KAAKp1B,EAAI,IAAKxC,EAAG9K,GAAKsurB,GAE1B,IAAI5rpB,KAAKp1B,EAAGxC,EAAG9K,GAAG8gC,UAIjC,SAAS2tpB,GAAenhrB,EAAGxC,EAAG9K,GAE1B,OAAIsN,EAAI,KAAOA,GAAK,EAETo1B,KAAKK,IAAIz1B,EAAI,IAAKxC,EAAG9K,GAAKsurB,GAE1B5rpB,KAAKK,IAAIz1B,EAAGxC,EAAG9K,GAob9B,SAAS0urB,GAAaluc,EAAUrzM,GAC5B,OAAOA,EAAOwhpB,cAAcnuc,GAehC,SAASouc,KACL,IAII/+rB,EACA+jI,EACAi7jB,EACAC,EACAC,EARAC,EAAa,GACbC,EAAa,GACbC,EAAe,GACftM,EAAc,GAMdz+gB,EAAOn8K,KAAKm8K,OAEhB,IAAKt0K,EAAI,EAAG+jI,EAAIuwC,EAAKh4K,OAAQ0D,EAAI+jI,IAAK/jI,EAClCg/rB,EAAW7O,GAAY77gB,EAAKt0K,GAAG1G,MAC/B2lsB,EAAW9O,GAAY77gB,EAAKt0K,GAAGy0K,MAC/ByqhB,EAAa/O,GAAY77gB,EAAKt0K,GAAGw0K,QAEjC4qhB,EAAWrjsB,KAAKijsB,GAChBG,EAAWpjsB,KAAKkjsB,GAChBI,EAAatjsB,KAAKmjsB,GAClBnM,EAAYh3rB,KAAKijsB,GACjBjM,EAAYh3rB,KAAKkjsB,GACjBlM,EAAYh3rB,KAAKmjsB,GAGrB/msB,KAAKmnsB,WAAa,IAAIjmkB,OAAO,KAAO05jB,EAAY5qpB,KAAK,KAAO,IAAK,KACjEhwC,KAAKonsB,eAAiB,IAAIlmkB,OAAO,KAAO+lkB,EAAWj3pB,KAAK,KAAO,IAAK,KACpEhwC,KAAKqnsB,eAAiB,IAAInmkB,OAAO,KAAO8lkB,EAAWh3pB,KAAK,KAAO,IAAK,KACpEhwC,KAAKsnsB,iBAAmB,IAAIpmkB,OACxB,KAAOgmkB,EAAal3pB,KAAK,KAAO,IAChC,KAcR,SAASu3pB,GAAuB1isB,EAAOu+lB,GACnCwxF,EAAe,EAAG,CAAC/vrB,EAAOA,EAAMV,QAAS,EAAGi/lB,GA0EhD,SAASokG,GAAqBhppB,EAAO74B,EAAMw8B,EAASv8B,EAAKC,GACrD,IAAI4hrB,EACJ,OAAa,MAATjppB,EACO+sB,GAAWvrE,KAAM4lB,EAAKC,GAAK2zB,MAG9B7zB,GADJ8hrB,EAAclM,GAAY/8oB,EAAO54B,EAAKC,MAElCF,EAAO8hrB,GAEJC,GAAWxyqB,KAAKl1B,KAAMw+C,EAAO74B,EAAMw8B,EAASv8B,EAAKC,IAIhE,SAAS6hrB,GAAWlR,EAAU7wqB,EAAMw8B,EAASv8B,EAAKC,GAC9C,IAAI8hrB,EAAgBzM,GAAmB1E,EAAU7wqB,EAAMw8B,EAASv8B,EAAKC,GACjEo0B,EAAOghpB,GAAc0M,EAAcnupB,KAAM,EAAGmupB,EAAcpR,WAK9D,OAHAv2rB,KAAKw5C,KAAKS,EAAKd,kBACfn5C,KAAKijB,MAAMg3B,EAAKb,eAChBp5C,KAAKi6C,KAAKA,EAAKZ,cACRr5C,KAtYX40rB,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpCiD,GAAc,IAAK6O,IACnB7O,GAAc,KAAM6O,IACpB7O,GAAc,MAAO6O,IACrB7O,GAAc,OAiOd,SAAsBr/b,EAAUrzM,GAC5B,OAAOA,EAAOyipB,cAAcpvc,KAjOhCq/b,GAAc,QAoOd,SAAwBr/b,EAAUrzM,GAC9B,OAAOA,EAAO0ipB,gBAAgBrvc,KAnOlCggc,GACI,CAAC,IAAK,KAAM,MAAO,OAAQ,SAC3B,SAAUh6oB,EAAOzlC,EAAOqf,EAAQvzB,GAC5B,IAAIq9C,EAAM9pB,EAAO+qF,QAAQ2klB,UAAUtppB,EAAO35C,EAAOuzB,EAAOu6pB,SACpDzwoB,EACAwvoB,EAAgBt5pB,GAAQ8pB,IAAMA,EAE9BwvoB,EAAgBt5pB,GAAQ45pB,WAAaxzoB,IAKjDq5oB,GAAc,IAAKP,IACnBO,GAAc,KAAMP,IACpBO,GAAc,MAAOP,IACrBO,GAAc,OAAQP,IACtBO,GAAc,KAsNd,SAA6Br/b,EAAUrzM,GACnC,OAAOA,EAAO4ipB,sBAAwBzQ,KArN1CkB,GAAc,CAAC,IAAK,KAAM,MAAO,QA58GtB,GA68GXA,GAAc,CAAC,MAAO,SAAUh6oB,EAAOzlC,EAAOqf,EAAQvzB,GAClD,IAAIysC,EACAlZ,EAAO+qF,QAAQ4klB,uBACfz2pB,EAAQkN,EAAMlN,MAAMlZ,EAAO+qF,QAAQ4klB,uBAInChvrB,EAp9GG,GAm9GHqf,EAAO+qF,QAAQs5D,oBACDrkJ,EAAO+qF,QAAQs5D,oBAAoBj+H,EAAOlN,GAE1C9B,SAASgP,EAAO,MAkPtCo2oB,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAO50rB,KAAKw2rB,WAAa,MAG7B5B,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAO50rB,KAAKy2rB,cAAgB,MAOhC8Q,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAMhC1P,GAAc,IAAKN,IACnBM,GAAc,IAAKN,IACnBM,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,OAAQT,EAAWN,GACjCe,GAAc,OAAQT,EAAWN,GACjCe,GAAc,QAASR,GAAWN,GAClCc,GAAc,QAASR,GAAWN,GAElC2B,GACI,CAAC,OAAQ,QAAS,OAAQ,SAC1B,SAAUl6oB,EAAO74B,EAAMyS,EAAQvzB,GAC3B8gB,EAAK9gB,EAAM0yC,OAAO,EAAG,IAAMqhT,GAAMp6S,KAIzCk6oB,GAAkB,CAAC,KAAM,MAAO,SAAUl6oB,EAAO74B,EAAMyS,EAAQvzB,GAC3D8gB,EAAK9gB,GAASmqF,EAAM+pmB,kBAAkBv6oB,KAsE1Co2oB,EAAe,IAAK,EAAG,KAAM,WAI7BiD,GAAc,IAAKlB,GACnB6B,GAAc,IAAK,SAAUh6oB,EAAOzlC,GAChCA,EAzzHQ,GAyzH4B,GAApB6/U,GAAMp6S,GAAS,KAanCo2oB,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCiD,GAAc,IAAKb,EAAWW,IAC9BE,GAAc,KAAMb,EAAWJ,GAC/BiB,GAAc,KAAM,SAAUr/b,EAAUrzM,GAEpC,OAAOqzM,EACDrzM,EAAO6ipB,yBAA2B7ipB,EAAO8ipB,cACzC9ipB,EAAO+ipB,iCAGjB1P,GAAc,CAAC,IAAK,MAl1HT,GAm1HXA,GAAc,KAAM,SAAUh6oB,EAAOzlC,GACjCA,EAp1HO,GAo1HO6/U,GAAMp6S,EAAMlN,MAAM0lpB,GAAW,MAK/C,IAAImR,GAAmBlP,GAAW,QAAQ,GAI1CrE,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CiD,GAAc,MAAOV,GACrBU,GAAc,OAAQhB,GACtB2B,GAAc,CAAC,MAAO,QAAS,SAAUh6oB,EAAOzlC,EAAOqf,GACnDA,EAAO0pqB,WAAalpW,GAAMp6S,KAiB9Bo2oB,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCiD,GAAc,IAAKb,EAAWY,IAC9BC,GAAc,KAAMb,EAAWJ,GAC/B4B,GAAc,CAAC,IAAK,MAz3HP,GA63Hb,IAAI4P,GAAenP,GAAW,WAAW,GAIzCrE,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCiD,GAAc,IAAKb,EAAWY,IAC9BC,GAAc,KAAMb,EAAWJ,GAC/B4B,GAAc,CAAC,IAAK,MAt4HP,GA04Hb,IAsCI3zrB,GAAOwjsB,GAtCPC,GAAerP,GAAW,WAAW,GAuCzC,IAnCArE,EAAe,IAAK,EAAG,EAAG,WACtB,SAAU50rB,KAAKo/C,cAAgB,OAGnCw1oB,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,SAAU50rB,KAAKo/C,cAAgB,MAGnCw1oB,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,WAC9B,OAA4B,GAArB50rB,KAAKo/C,gBAEhBw1oB,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,WAC/B,OAA4B,IAArB50rB,KAAKo/C,gBAEhBw1oB,EAAe,EAAG,CAAC,SAAU,GAAI,EAAG,WAChC,OAA4B,IAArB50rB,KAAKo/C,gBAEhBw1oB,EAAe,EAAG,CAAC,UAAW,GAAI,EAAG,WACjC,OAA4B,IAArB50rB,KAAKo/C,gBAEhBw1oB,EAAe,EAAG,CAAC,WAAY,GAAI,EAAG,WAClC,OAA4B,IAArB50rB,KAAKo/C,gBAEhBw1oB,EAAe,EAAG,CAAC,YAAa,GAAI,EAAG,WACnC,OAA4B,IAArB50rB,KAAKo/C,gBAKhBy4oB,GAAc,IAAKV,EAAWR,GAC9BkB,GAAc,KAAMV,EAAWP,GAC/BiB,GAAc,MAAOV,EAAWN,GAG3BhyrB,GAAQ,OAAQA,GAAMV,QAAU,EAAGU,IAAS,IAC7CgzrB,GAAchzrB,GAAOyyrB,IAGzB,SAASiR,GAAQ/ppB,EAAOzlC,GACpBA,EAr7Hc,GAq7HO6/U,GAAuB,KAAhB,KAAOp6S,IAGvC,IAAK35C,GAAQ,IAAKA,GAAMV,QAAU,EAAGU,IAAS,IAC1C2zrB,GAAc3zrB,GAAO0jsB,IAGzBF,GAAoBpP,GAAW,gBAAgB,GAI/CrE,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAIh0gB,GAAQ8ygB,EAAOhhqB,UAgHnB,SAAS81qB,GAAmBr5pB,GACxB,OAAOA,EA/GXyxI,GAAM/9K,IAAMA,GACZ+9K,GAAM18J,SAhlCN,SAAoB2jD,EAAMp6B,GAEG,IAArBn0B,UAAUnV,SACLmV,UAAU,GAGJgsrB,GAAchsrB,UAAU,KAC/BuuD,EAAOvuD,UAAU,GACjBm0B,OAAUhpC,GACHqhsB,GAAexsrB,UAAU,MAChCm0B,EAAUn0B,UAAU,GACpBuuD,OAAOpjE,IAPPojE,OAAOpjE,EACPgpC,OAAUhpC,IAWlB,IAAIsnD,EAAM8b,GAAQ+5nB,KACd6G,EAAMnE,GAAgBv4oB,EAAK/rD,MAAM+qE,QAAQ,OACzChoD,EAASisE,EAAM05mB,eAAe1osB,KAAMyosB,IAAQ,WAC5Ct8pB,EACIsB,IACCw+H,EAAWx+H,EAAQ1qB,IACd0qB,EAAQ1qB,GAAQmS,KAAKl1B,KAAM+rD,GAC3Bte,EAAQ1qB,IAEtB,OAAO/iB,KAAK+iB,OACRopB,GAAUnsC,KAAK80rB,aAAa5wqB,SAASnB,EAAQ/iB,KAAM4hsB,GAAY71oB,MAujCvE60H,GAAMh9B,MAnjCN,WACI,OAAO,IAAI8viB,EAAO1zrB,OAmjCtB4gL,GAAMr7K,KA3+BN,SAAci5C,EAAOusJ,EAAO49f,GACxB,IAAIp8W,EAAMq8W,EAAWz8pB,EAErB,IAAKnsC,KAAKwkF,UACN,OAAOi6C,IAKX,KAFA8tN,EAAO+3W,GAAgB9lpB,EAAOx+C,OAEpBwkF,UACN,OAAOi6C,IAOX,OAJAmqkB,EAAoD,KAAvCr8W,EAAK43W,YAAcnksB,KAAKmksB,aAErCp5f,EAAQkrf,EAAelrf,IAGnB,IAAK,OACD5+J,EAAS45pB,GAAU/lsB,KAAMusV,GAAQ,GACjC,MACJ,IAAK,QACDpgT,EAAS45pB,GAAU/lsB,KAAMusV,GACzB,MACJ,IAAK,UACDpgT,EAAS45pB,GAAU/lsB,KAAMusV,GAAQ,EACjC,MACJ,IAAK,SACDpgT,GAAUnsC,KAAOusV,GAAQ,IACzB,MACJ,IAAK,SACDpgT,GAAUnsC,KAAOusV,GAAQ,IACzB,MACJ,IAAK,OACDpgT,GAAUnsC,KAAOusV,GAAQ,KACzB,MACJ,IAAK,MACDpgT,GAAUnsC,KAAOusV,EAAOq8W,GAAa,MACrC,MACJ,IAAK,OACDz8pB,GAAUnsC,KAAOusV,EAAOq8W,GAAa,OACrC,MACJ,QACIz8pB,EAASnsC,KAAOusV,EAGxB,OAAOo8W,EAAUx8pB,EAASkspB,GAASlspB,IA87BvCy0I,GAAM8kD,MAtrBN,SAAe36B,GACX,IAAIljI,EAAMghoB,EAEV,QAAcpksB,KADdsmM,EAAQkrf,EAAelrf,KACc,gBAAVA,IAA4B/qM,KAAKwkF,UACxD,OAAOxkF,KAKX,OAFA6osB,EAAc7osB,KAAKwzrB,OAASiT,GAAiBD,GAErCz7f,GACJ,IAAK,OACDljI,EAAOghoB,EAAY7osB,KAAKw5C,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACDquB,EACIghoB,EACI7osB,KAAKw5C,OACLx5C,KAAKijB,QAAWjjB,KAAKijB,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACD4kD,EAAOghoB,EAAY7osB,KAAKw5C,OAAQx5C,KAAKijB,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACD4kD,EACIghoB,EACI7osB,KAAKw5C,OACLx5C,KAAKijB,QACLjjB,KAAKi6C,OAASj6C,KAAKmiD,UAAY,GAC/B,EACR,MACJ,IAAK,UACD0lB,EACIghoB,EACI7osB,KAAKw5C,OACLx5C,KAAKijB,QACLjjB,KAAKi6C,QAAUj6C,KAAKmyO,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDtqK,EAAOghoB,EAAY7osB,KAAKw5C,OAAQx5C,KAAKijB,QAASjjB,KAAKi6C,OAAS,GAAK,EACjE,MACJ,IAAK,OACD4tB,EAAO7nE,KAAK60B,GAAGikB,UACf+uB,GACIw+nB,GACAE,GACI1+nB,GAAQ7nE,KAAKwzrB,OAAS,EAAIxzrB,KAAKmksB,YAAciC,IAC7CC,IAEJ,EACJ,MACJ,IAAK,SACDx+nB,EAAO7nE,KAAK60B,GAAGikB,UACf+uB,GAAQu+nB,GAAgBG,GAAM1+nB,EAAMu+nB,IAAiB,EACrD,MACJ,IAAK,SACDv+nB,EAAO7nE,KAAK60B,GAAGikB,UACf+uB,GAAQs+nB,GAAgBI,GAAM1+nB,EAAMs+nB,IAAiB,EAM7D,OAFAnmsB,KAAK60B,GAAG0vqB,QAAQ18nB,GAChBmnB,EAAMwgZ,aAAaxve,MAAM,GAClBA,MAqnBX4gL,GAAM79J,OAh2BN,SAAgBmwpB,GACPA,IACDA,EAAclzqB,KAAK0ksB,QACb11mB,EAAMk3mB,iBACNl3mB,EAAMqf,eAEhB,IAAIliE,EAAS4opB,EAAa/0rB,KAAMkzqB,GAChC,OAAOlzqB,KAAK80rB,aAAavjpB,WAAWpF,IA01BxCy0I,GAAMt8K,KAv1BN,SAAcujE,EAAMm1F,GAChB,OACIh9J,KAAKwkF,YACHmvmB,EAAS9rnB,IAASA,EAAK2c,WAAco9mB,GAAY/5nB,GAAM2c,WAElDjmC,GAAe,CAAEizG,GAAIxxJ,KAAMsE,KAAMujE,IACnC1iB,OAAOnlD,KAAKmlD,UACZ2jpB,UAAU9riB,GAERh9J,KAAK80rB,aAAa/ipB,eA+0BjC6uI,GAAMmohB,QA30BN,SAAiB/riB,GACb,OAAOh9J,KAAKsE,KAAKs9rB,KAAe5kiB,IA20BpC4jB,GAAMpvB,GAx0BN,SAAY3pF,EAAMm1F,GACd,OACIh9J,KAAKwkF,YACHmvmB,EAAS9rnB,IAASA,EAAK2c,WAAco9mB,GAAY/5nB,GAAM2c,WAElDjmC,GAAe,CAAEj6C,KAAMtE,KAAMwxJ,GAAI3pF,IACnC1iB,OAAOnlD,KAAKmlD,UACZ2jpB,UAAU9riB,GAERh9J,KAAK80rB,aAAa/ipB,eAg0BjC6uI,GAAMoohB,MA5zBN,SAAehsiB,GACX,OAAOh9J,KAAKwxJ,GAAGowiB,KAAe5kiB,IA4zBlC4jB,GAAM1uK,IAx0HN,SAAmB64L,GAEf,OAAI9+B,EAAWjsK,KADf+qM,EAAQkrf,EAAelrf,KAEZ/qM,KAAK+qM,KAET/qM,MAo0HX4gL,GAAMqohB,UArkBN,WACI,OAAOvX,EAAgB1xrB,MAAMy0E,UAqkBjCmsG,GAAMskhB,QAzjCN,SAAiB1mpB,EAAOusJ,GACpB,IAAIm+f,EAAavV,EAASn1oB,GAASA,EAAQojpB,GAAYpjpB,GACvD,SAAMx+C,KAAKwkF,YAAa0knB,EAAW1knB,aAIrB,iBADdumH,EAAQkrf,EAAelrf,IAAU,eAEtB/qM,KAAK84C,UAAYowpB,EAAWpwpB,UAE5BowpB,EAAWpwpB,UAAY94C,KAAK4jJ,QAAQ74E,QAAQggI,GAAOjyJ,YAijClE8nI,GAAMmkhB,SA7iCN,SAAkBvmpB,EAAOusJ,GACrB,IAAIm+f,EAAavV,EAASn1oB,GAASA,EAAQojpB,GAAYpjpB,GACvD,SAAMx+C,KAAKwkF,YAAa0knB,EAAW1knB,aAIrB,iBADdumH,EAAQkrf,EAAelrf,IAAU,eAEtB/qM,KAAK84C,UAAYowpB,EAAWpwpB,UAE5B94C,KAAK4jJ,QAAQ8hF,MAAM36B,GAAOjyJ,UAAYowpB,EAAWpwpB,YAqiChE8nI,GAAMuohB,UAjiCN,SAAmB7ksB,EAAMktJ,EAAIu5C,EAAOq+f,GAChC,IAAIC,EAAY1V,EAASrvrB,GAAQA,EAAOs9rB,GAAYt9rB,GAChDglsB,EAAU3V,EAASniiB,GAAMA,EAAKowiB,GAAYpwiB,GAC9C,SAAMxxJ,KAAKwkF,WAAa6knB,EAAU7knB,WAAa8knB,EAAQ9knB,aAK/B,OAFxB4knB,EAAcA,GAAe,MAEZ,GACPppsB,KAAKklsB,QAAQmE,EAAWt+f,IACvB/qM,KAAK+ksB,SAASsE,EAAWt+f,MACZ,MAAnBq+f,EAAY,GACPppsB,KAAK+ksB,SAASuE,EAASv+f,IACtB/qM,KAAKklsB,QAAQoE,EAASv+f,KAqhCrCnqB,GAAM2ohB,OAjhCN,SAAgB/qpB,EAAOusJ,GACnB,IACIy+f,EADAN,EAAavV,EAASn1oB,GAASA,EAAQojpB,GAAYpjpB,GAEvD,SAAMx+C,KAAKwkF,YAAa0knB,EAAW1knB,aAIrB,iBADdumH,EAAQkrf,EAAelrf,IAAU,eAEtB/qM,KAAK84C,YAAcowpB,EAAWpwpB,WAErC0wpB,EAAUN,EAAWpwpB,UAEjB94C,KAAK4jJ,QAAQ74E,QAAQggI,GAAOjyJ,WAAa0wpB,GACzCA,GAAWxpsB,KAAK4jJ,QAAQ8hF,MAAM36B,GAAOjyJ,aAqgCjD8nI,GAAM6ohB,cAhgCN,SAAuBjrpB,EAAOusJ,GAC1B,OAAO/qM,KAAKupsB,OAAO/qpB,EAAOusJ,IAAU/qM,KAAKklsB,QAAQ1mpB,EAAOusJ,IAggC5DnqB,GAAM8ohB,eA7/BN,SAAwBlrpB,EAAOusJ,GAC3B,OAAO/qM,KAAKupsB,OAAO/qpB,EAAOusJ,IAAU/qM,KAAK+ksB,SAASvmpB,EAAOusJ,IA6/B7DnqB,GAAMp8F,QAplBN,WACI,OAAOA,EAAQxkF,OAolBnB4gL,GAAMmke,KAAOA,GACbnke,GAAMz7H,OAASA,GACfy7H,GAAMk0gB,WAAaA,GACnBl0gB,GAAM99H,IAAMygpB,GACZ3ihB,GAAMliK,IAAM4krB,GACZ1ihB,GAAM+ohB,aAtlBN,WACI,OAAO5rf,EAAO,GAAI2ze,EAAgB1xrB,QAslBtC4gL,GAAMvsK,IA/0HN,SAAmB02L,EAAOxpM,GACtB,GAAqB,iBAAVwpM,EAAoB,CAE3B,IACIljM,EADA+hsB,EArSZ,SAA6BC,GACzB,IACIvphB,EADAyqB,EAAQ,GAEZ,IAAKzqB,KAAKuphB,EACF1Y,EAAW0Y,EAAUvphB,IACrByqB,EAAMnnM,KAAK,CAAE66C,KAAM6hI,EAAGwphB,SAAUxT,EAAWh2gB,KAMnD,OAHAyqB,EAAMlvL,KAAK,SAAUE,EAAGC,GACpB,OAAOD,EAAE+trB,SAAW9trB,EAAE8trB,WAEnB/+f,EA0Reg/f,CADlBh/f,EAAQmrf,EAAqBnrf,IAGzBi/f,EAAiBJ,EAAYzlsB,OACjC,IAAK0D,EAAI,EAAGA,EAAImisB,EAAgBnisB,IAC5B7H,KAAK4psB,EAAY/hsB,GAAG42C,MAAMssJ,EAAM6+f,EAAY/hsB,GAAG42C,YAInD,GAAIwtH,EAAWjsK,KADf+qM,EAAQkrf,EAAelrf,KAEnB,OAAO/qM,KAAK+qM,GAAOxpM,GAG3B,OAAOvB,MAi0HX4gL,GAAM71G,QA3wBN,SAAiBggI,GACb,IAAIljI,EAAMghoB,EAEV,QAAcpksB,KADdsmM,EAAQkrf,EAAelrf,KACc,gBAAVA,IAA4B/qM,KAAKwkF,UACxD,OAAOxkF,KAKX,OAFA6osB,EAAc7osB,KAAKwzrB,OAASiT,GAAiBD,GAErCz7f,GACJ,IAAK,OACDljI,EAAOghoB,EAAY7osB,KAAKw5C,OAAQ,EAAG,GACnC,MACJ,IAAK,UACDquB,EAAOghoB,EACH7osB,KAAKw5C,OACLx5C,KAAKijB,QAAWjjB,KAAKijB,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACD4kD,EAAOghoB,EAAY7osB,KAAKw5C,OAAQx5C,KAAKijB,QAAS,GAC9C,MACJ,IAAK,OACD4kD,EAAOghoB,EACH7osB,KAAKw5C,OACLx5C,KAAKijB,QACLjjB,KAAKi6C,OAASj6C,KAAKmiD,WAEvB,MACJ,IAAK,UACD0lB,EAAOghoB,EACH7osB,KAAKw5C,OACLx5C,KAAKijB,QACLjjB,KAAKi6C,QAAUj6C,KAAKmyO,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDtqK,EAAOghoB,EAAY7osB,KAAKw5C,OAAQx5C,KAAKijB,QAASjjB,KAAKi6C,QACnD,MACJ,IAAK,OACD4tB,EAAO7nE,KAAK60B,GAAGikB,UACf+uB,GAAQ0+nB,GACJ1+nB,GAAQ7nE,KAAKwzrB,OAAS,EAAIxzrB,KAAKmksB,YAAciC,IAC7CC,IAEJ,MACJ,IAAK,SACDx+nB,EAAO7nE,KAAK60B,GAAGikB,UACf+uB,GAAQ0+nB,GAAM1+nB,EAAMu+nB,IACpB,MACJ,IAAK,SACDv+nB,EAAO7nE,KAAK60B,GAAGikB,UACf+uB,GAAQ0+nB,GAAM1+nB,EAAMs+nB,IAM5B,OAFAnmsB,KAAK60B,GAAG0vqB,QAAQ18nB,GAChBmnB,EAAMwgZ,aAAaxve,MAAM,GAClBA,MAgtBX4gL,GAAMxiI,SAAWA,GACjBwiI,GAAM14J,QA7nBN,WACI,IAAIpF,EAAI9iB,KACR,MAAO,CACH8iB,EAAE02B,OACF12B,EAAEG,QACFH,EAAEm3B,OACFn3B,EAAE4uB,OACF5uB,EAAE8uB,SACF9uB,EAAEq8B,SACFr8B,EAAEs8B,gBAqnBVwhI,GAAMqphB,SAjnBN,WACI,IAAInnrB,EAAI9iB,KACR,MAAO,CACH4+C,MAAO97B,EAAE02B,OACT52B,OAAQE,EAAEG,QACVg3B,KAAMn3B,EAAEm3B,OACR+E,MAAOl8B,EAAEk8B,QACTC,QAASn8B,EAAEm8B,UACXC,QAASp8B,EAAEo8B,UACXL,aAAc/7B,EAAE+7B,iBAymBxB+hI,GAAMzhH,OAnoBN,WACI,OAAO,IAAIzkB,KAAK16C,KAAK84C,YAmoBzB8nI,GAAMrgI,YAp7BN,SAAqB2ppB,GACjB,IAAKlqsB,KAAKwkF,UACN,OAAO,KAEX,IAAIitmB,GAAqB,IAAfyY,EACNpnrB,EAAI2uqB,EAAMzxrB,KAAK4jJ,QAAQ6tiB,MAAQzxrB,KACnC,OAAI8iB,EAAE02B,OAAS,GAAK12B,EAAE02B,OAAS,KACpBu7oB,EACHjyqB,EACA2uqB,EACM,iCACA,gCAGVxlhB,EAAWvxH,KAAKhoB,UAAU6tB,aAEtBkxoB,EACOzxrB,KAAKm/D,SAAS5e,cAEd,IAAI7F,KAAK16C,KAAK84C,UAA+B,GAAnB94C,KAAKmksB,YAAmB,KACpD5jpB,cACA/+C,QAAQ,IAAKuzrB,EAAajyqB,EAAG,MAGnCiyqB,EACHjyqB,EACA2uqB,EAAM,+BAAiC,+BA25B/C7wgB,GAAMm8D,QAj5BN,WACI,IAAK/8O,KAAKwkF,UACN,MAAO,qBAAuBxkF,KAAK0P,GAAK,OAE5C,IAEI+pE,EACAjgC,EAHAvC,EAAO,SACPkzE,EAAO,GAcX,OATKnqH,KAAKmqsB,YACNlzpB,EAA4B,IAArBj3C,KAAKmksB,YAAoB,aAAe,mBAC/Ch6kB,EAAO,KAEX1wC,EAAS,IAAMxiC,EAAO,MACtBuC,EAAO,GAAKx5C,KAAKw5C,QAAUx5C,KAAKw5C,QAAU,KAAO,OAAS,SAInDx5C,KAAK+iB,OAAO02D,EAASjgC,EAHjB,wBACF2wE,EAAO,SAi4BE,oBAAX/6E,QAAwC,MAAdA,OAAO2xS,MACxCngK,GAAMxxI,OAAO2xS,IAAI,+BAAiC,WAC9C,MAAO,UAAY/gV,KAAK+iB,SAAW,MAG3C69J,GAAMr3G,OA7mBN,WAEI,OAAOvpE,KAAKwkF,UAAYxkF,KAAKugD,cAAgB,MA4mBjDqgI,GAAM3uJ,SAh8BN,WACI,OAAOjyB,KAAK4jJ,QAAQz+F,OAAO,MAAMpiC,OAAO,qCAg8B5C69J,GAAMwphB,KAjpBN,WACI,OAAO7rrB,KAAKs7B,MAAM75C,KAAK84C,UAAY,MAipBvC8nI,GAAM9nI,QAtpBN,WACI,OAAO94C,KAAK60B,GAAGikB,UAAkC,KAArB94C,KAAKyzrB,SAAW,IAspBhD7ygB,GAAMyphB,aAhmBN,WACI,MAAO,CACH7rpB,MAAOx+C,KAAK0P,GACZqT,OAAQ/iB,KAAKqzrB,GACbluoB,OAAQnlD,KAAKmjH,QACbi2kB,MAAOp5rB,KAAKwzrB,OACZjC,OAAQvxrB,KAAK2yrB,UA2lBrB/xgB,GAAM0phB,QAvdN,WACI,IAAIzisB,EACA+jI,EACAt9F,EACA6tI,EAAOn8K,KAAK80rB,aAAa34gB,OAC7B,IAAKt0K,EAAI,EAAG+jI,EAAIuwC,EAAKh4K,OAAQ0D,EAAI+jI,IAAK/jI,EAAG,CAIrC,GAFAymC,EAAMtuC,KAAK4jJ,QAAQ74E,QAAQ,OAAOjyB,UAE9BqjI,EAAKt0K,GAAGu0K,OAAS9tI,GAAOA,GAAO6tI,EAAKt0K,GAAG00K,MACvC,OAAOJ,EAAKt0K,GAAG1G,KAEnB,GAAIg7K,EAAKt0K,GAAG00K,OAASjuI,GAAOA,GAAO6tI,EAAKt0K,GAAGu0K,MACvC,OAAOD,EAAKt0K,GAAG1G,KAIvB,MAAO,IAucXy/K,GAAM2phB,UApcN,WACI,IAAI1isB,EACA+jI,EACAt9F,EACA6tI,EAAOn8K,KAAK80rB,aAAa34gB,OAC7B,IAAKt0K,EAAI,EAAG+jI,EAAIuwC,EAAKh4K,OAAQ0D,EAAI+jI,IAAK/jI,EAAG,CAIrC,GAFAymC,EAAMtuC,KAAK4jJ,QAAQ74E,QAAQ,OAAOjyB,UAE9BqjI,EAAKt0K,GAAGu0K,OAAS9tI,GAAOA,GAAO6tI,EAAKt0K,GAAG00K,MACvC,OAAOJ,EAAKt0K,GAAGw0K,OAEnB,GAAIF,EAAKt0K,GAAG00K,OAASjuI,GAAOA,GAAO6tI,EAAKt0K,GAAGu0K,MACvC,OAAOD,EAAKt0K,GAAGw0K,OAIvB,MAAO,IAobXuE,GAAM4phB,QAjbN,WACI,IAAI3isB,EACA+jI,EACAt9F,EACA6tI,EAAOn8K,KAAK80rB,aAAa34gB,OAC7B,IAAKt0K,EAAI,EAAG+jI,EAAIuwC,EAAKh4K,OAAQ0D,EAAI+jI,IAAK/jI,EAAG,CAIrC,GAFAymC,EAAMtuC,KAAK4jJ,QAAQ74E,QAAQ,OAAOjyB,UAE9BqjI,EAAKt0K,GAAGu0K,OAAS9tI,GAAOA,GAAO6tI,EAAKt0K,GAAG00K,MACvC,OAAOJ,EAAKt0K,GAAGy0K,KAEnB,GAAIH,EAAKt0K,GAAG00K,OAASjuI,GAAOA,GAAO6tI,EAAKt0K,GAAGu0K,MACvC,OAAOD,EAAKt0K,GAAGy0K,KAIvB,MAAO,IAiaXsE,GAAM6phB,QA9ZN,WACI,IAAI5isB,EACA+jI,EACAtgI,EACAgjC,EACA6tI,EAAOn8K,KAAK80rB,aAAa34gB,OAC7B,IAAKt0K,EAAI,EAAG+jI,EAAIuwC,EAAKh4K,OAAQ0D,EAAI+jI,IAAK/jI,EAMlC,GALAyD,EAAM6wK,EAAKt0K,GAAGu0K,OAASD,EAAKt0K,GAAG00K,MAAQ,GAAM,EAG7CjuI,EAAMtuC,KAAK4jJ,QAAQ74E,QAAQ,OAAOjyB,UAG7BqjI,EAAKt0K,GAAGu0K,OAAS9tI,GAAOA,GAAO6tI,EAAKt0K,GAAG00K,OACvCJ,EAAKt0K,GAAG00K,OAASjuI,GAAOA,GAAO6tI,EAAKt0K,GAAGu0K,MAExC,OACKp8K,KAAKw5C,OAASw1C,EAAMmtF,EAAKt0K,GAAGu0K,OAAO5iI,QAAUluC,EAC9C6wK,EAAKt0K,GAAGgD,OAKpB,OAAO7K,KAAKw5C,QAwYhBonI,GAAMpnI,KAAOw/oB,GACbp4gB,GAAMi4gB,WAx8HN,WACI,OAAOA,GAAW74rB,KAAKw5C,SAw8H3BonI,GAAM41gB,SAnRN,SAAwBh4oB,GACpB,OAAOgppB,GAAqBtyqB,KACxBl1B,KACAw+C,EACAx+C,KAAK2lB,OACL3lB,KAAKmiD,UAAYniD,KAAK80rB,aAAa+M,MAAMj8qB,IACzC5lB,KAAK80rB,aAAa+M,MAAMj8qB,IACxB5lB,KAAK80rB,aAAa+M,MAAMh8qB,MA6QhC+6J,GAAM61gB,YAzQN,SAA2Bj4oB,GACvB,OAAOgppB,GAAqBtyqB,KACxBl1B,KACAw+C,EACAx+C,KAAK02rB,UACL12rB,KAAKmyO,aACL,EACA,IAmQRvxD,GAAMowD,QAAUpwD,GAAM40gB,SAzMtB,SAAuBh3oB,GACnB,OAAgB,MAATA,EACDjgC,KAAKC,MAAMxe,KAAKijB,QAAU,GAAK,GAC/BjjB,KAAKijB,MAAoB,GAAbu7B,EAAQ,GAAUx+C,KAAKijB,QAAU,IAuMvD29J,GAAM39J,MAAQo3qB,GACdz5gB,GAAMgwb,YA5lHN,WACI,OAAOA,GAAY5wmB,KAAKw5C,OAAQx5C,KAAKijB,UA4lHzC29J,GAAMj7J,KAAOi7J,GAAMthI,MA33GnB,SAAoBd,GAChB,IAAI74B,EAAO3lB,KAAK80rB,aAAanvqB,KAAK3lB,MAClC,OAAgB,MAATw+C,EAAgB74B,EAAO3lB,KAAK6C,IAAqB,GAAhB27C,EAAQ74B,GAAW,MA03G/Di7J,GAAM81gB,QAAU91gB,GAAM8phB,SAv3GtB,SAAuBlspB,GACnB,IAAI74B,EAAO4lD,GAAWvrE,KAAM,EAAG,GAAG2lB,KAClC,OAAgB,MAAT64B,EAAgB74B,EAAO3lB,KAAK6C,IAAqB,GAAhB27C,EAAQ74B,GAAW,MAs3G/Di7J,GAAM26gB,YA5PN,WACI,IAAIoP,EAAW3qsB,KAAK80rB,aAAa+M,MACjC,OAAOtG,GAAYv7rB,KAAKw5C,OAAQmxpB,EAAS/krB,IAAK+krB,EAAS9krB,MA2P3D+6J,GAAMgqhB,gBAxPN,WACI,IAAID,EAAW3qsB,KAAK80rB,aAAa+M,MACjC,OAAOtG,GAAYv7rB,KAAKw2rB,WAAYmU,EAAS/krB,IAAK+krB,EAAS9krB,MAuP/D+6J,GAAMiqhB,eAtQN,WACI,OAAOtP,GAAYv7rB,KAAKw5C,OAAQ,EAAG,IAsQvConI,GAAMkqhB,sBAnQN,WACI,OAAOvP,GAAYv7rB,KAAKy2rB,cAAe,EAAG,IAmQ9C71gB,GAAM3mI,KAAOkupB,GACbvnhB,GAAM9uI,IAAM8uI,GAAMhnI,KApnGlB,SAAyB4E,GACrB,IAAKx+C,KAAKwkF,UACN,OAAgB,MAAThmC,EAAgBx+C,KAAOy+H,IAGlC,IAAI3sF,EAAM5/B,GAAIlS,KAAM,OACpB,OAAa,MAATw+C,GACAA,EAzNR,SAAsBA,EAAO2G,GACzB,MAAqB,iBAAV3G,EACAA,EAGNvD,MAAMuD,GAKU,iBADrBA,EAAQ2G,EAAO+nS,cAAc1uS,IAElBA,EAGJ,KARIhP,SAASgP,EAAO,IAmNfuspB,CAAavspB,EAAOx+C,KAAK80rB,cAC1B90rB,KAAK6C,IAAI27C,EAAQ1M,EAAK,MAEtBA,GA2mGf8uI,GAAMz+H,QAvmGN,SAA+B3D,GAC3B,IAAKx+C,KAAKwkF,UACN,OAAgB,MAAThmC,EAAgBx+C,KAAOy+H,IAElC,IAAIt8E,GAAWniD,KAAK8xC,MAAQ,EAAI9xC,KAAK80rB,aAAa+M,MAAMj8qB,KAAO,EAC/D,OAAgB,MAAT44B,EAAgB2D,EAAUniD,KAAK6C,IAAI27C,EAAQ2D,EAAS,MAmmG/Dy+H,GAAMuxD,WAhmGN,SAA4B3zL,GACxB,IAAKx+C,KAAKwkF,UACN,OAAgB,MAAThmC,EAAgBx+C,KAAOy+H,IAOlC,GAAa,MAATjgF,EAAe,CACf,IAAI2D,EAjOZ,SAAyB3D,EAAO2G,GAC5B,MAAqB,iBAAV3G,EACA2G,EAAO+nS,cAAc1uS,GAAS,GAAK,EAEvCvD,MAAMuD,GAAS,KAAOA,EA6NXwspB,CAAgBxspB,EAAOx+C,KAAK80rB,cAC1C,OAAO90rB,KAAK8xC,IAAI9xC,KAAK8xC,MAAQ,EAAIqQ,EAAUA,EAAU,GAErD,OAAOniD,KAAK8xC,OAAS,GAolG7B8uI,GAAM21gB,UAxKN,SAAyB/3oB,GACrB,IAAI+3oB,EACAh4qB,KAAK06B,OACAj5C,KAAK4jJ,QAAQ74E,QAAQ,OAAS/qE,KAAK4jJ,QAAQ74E,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAATvsB,EAAgB+3oB,EAAYv2rB,KAAK6C,IAAI27C,EAAQ+3oB,EAAW,MAoKnE31gB,GAAMlvI,KAAOkvI,GAAM5hI,MAAQ8+oB,GAC3Bl9gB,GAAMhvI,OAASgvI,GAAM3hI,QAAUmppB,GAC/BxnhB,GAAMzhI,OAASyhI,GAAM1hI,QAAUoppB,GAC/B1nhB,GAAMxhI,YAAcwhI,GAAM/hI,aAAewppB,GACzCznhB,GAAMujhB,UA9jDN,SAAsB3lpB,EAAOyspB,EAAeC,GACxC,IACIC,EADAtgsB,EAAS7K,KAAKyzrB,SAAW,EAE7B,IAAKzzrB,KAAKwkF,UACN,OAAgB,MAAThmC,EAAgBx+C,KAAOy+H,IAElC,GAAa,MAATjgF,EAAe,CACf,GAAqB,iBAAVA,GAEP,GAAc,QADdA,EAAQ4lpB,GAAiB3M,GAAkBj5oB,IAEvC,OAAOx+C,UAEJue,KAAKqiC,IAAIpC,GAAS,KAAO0spB,IAChC1spB,GAAgB,IAwBpB,OAtBKx+C,KAAKwzrB,QAAUyX,IAChBE,EAAc1G,GAAczksB,OAEhCA,KAAKyzrB,QAAUj1oB,EACfx+C,KAAKwzrB,QAAS,EACK,MAAf2X,GACAnrsB,KAAK6C,IAAIsosB,EAAa,KAEtBtgsB,IAAW2zC,KACNyspB,GAAiBjrsB,KAAKorsB,kBACvBhG,GACIplsB,KACAu+C,GAAeC,EAAQ3zC,EAAQ,KAC/B,GACA,GAEI7K,KAAKorsB,oBACbprsB,KAAKorsB,mBAAoB,EACzBp8mB,EAAMwgZ,aAAaxve,MAAM,GACzBA,KAAKorsB,kBAAoB,OAG1BprsB,KAEP,OAAOA,KAAKwzrB,OAAS3orB,EAAS45rB,GAAczksB,OAwhDpD4gL,GAAM6wgB,IAtgDN,SAAwBwZ,GACpB,OAAOjrsB,KAAKmksB,UAAU,EAAG8G,IAsgD7BrqhB,GAAM4jhB,MAngDN,SAA0ByG,GAStB,OARIjrsB,KAAKwzrB,SACLxzrB,KAAKmksB,UAAU,EAAG8G,GAClBjrsB,KAAKwzrB,QAAS,EAEVyX,GACAjrsB,KAAKo+C,SAASqmpB,GAAczksB,MAAO,MAGpCA,MA2/CX4gL,GAAMyqhB,UAx/CN,WACI,GAAiB,MAAbrrsB,KAAKuzrB,KACLvzrB,KAAKmksB,UAAUnksB,KAAKuzrB,MAAM,GAAO,QAC9B,GAAuB,iBAAZvzrB,KAAK0P,GAAiB,CACpC,IAAI47rB,EAAQlH,GAAiB5M,GAAax3rB,KAAK0P,IAClC,MAAT47rB,EACAtrsB,KAAKmksB,UAAUmH,GAEftrsB,KAAKmksB,UAAU,GAAG,GAG1B,OAAOnksB,MA8+CX4gL,GAAM2qhB,qBA3+CN,SAA8B/spB,GAC1B,QAAKx+C,KAAKwkF,YAGVhmC,EAAQA,EAAQojpB,GAAYpjpB,GAAO2lpB,YAAc,GAEzCnksB,KAAKmksB,YAAc3lpB,GAAS,IAAO,IAs+C/CoiI,GAAM4qhB,MAn+CN,WACI,OACIxrsB,KAAKmksB,YAAcnksB,KAAK4jJ,QAAQ3gI,MAAM,GAAGkhrB,aACzCnksB,KAAKmksB,YAAcnksB,KAAK4jJ,QAAQ3gI,MAAM,GAAGkhrB,aAi+CjDvjhB,GAAMuphB,QAv8CN,WACI,QAAOnqsB,KAAKwkF,YAAaxkF,KAAKwzrB,QAu8ClC5ygB,GAAM6qhB,YAp8CN,WACI,QAAOzrsB,KAAKwkF,WAAYxkF,KAAKwzrB,QAo8CjC5ygB,GAAM8jhB,MAAQA,GACd9jhB,GAAMw4gB,MAAQsL,GACd9jhB,GAAM8qhB,SAzFN,WACI,OAAO1rsB,KAAKwzrB,OAAS,MAAQ,IAyFjC5ygB,GAAM+qhB,SAtFN,WACI,OAAO3rsB,KAAKwzrB,OAAS,6BAA+B,IAsFxD5ygB,GAAMrhF,MAAQmsC,EACV,kDACAy8jB,IAEJvnhB,GAAMh+J,OAAS8oH,EACX,mDACA2ujB,IAEJz5gB,GAAMhiI,MAAQ8sF,EACV,iDACAstjB,IAEJp4gB,GAAMz2D,KAAOuhB,EACT,2GA5iDJ,SAAoBltF,EAAOyspB,GACvB,OAAa,MAATzspB,GACqB,iBAAVA,IACPA,GAASA,GAGbx+C,KAAKmksB,UAAU3lpB,EAAOyspB,GAEfjrsB,OAECA,KAAKmksB,cAqiDrBvjhB,GAAMgrhB,aAAelgkB,EACjB,0GAp/CJ,WACI,IAAKkpI,EAAY50Q,KAAK6rsB,eAClB,OAAO7rsB,KAAK6rsB,cAGhB,IACIhrlB,EADAjxE,EAAI,GAcR,OAXAsjpB,EAAWtjpB,EAAG5vC,OACd4vC,EAAI6ypB,GAAc7ypB,IAEZjlC,IACFk2G,EAAQjxE,EAAE4jpB,OAASlC,EAAU1hpB,EAAEjlC,IAAMi3rB,GAAYhypB,EAAEjlC,IACnD3K,KAAK6rsB,cACD7rsB,KAAKwkF,WAtOjB,SAAuByiT,EAAQC,EAAQ4kU,GACnC,IAGIjksB,EAHAyvC,EAAM/4B,KAAKG,IAAIuoX,EAAO9iY,OAAQ+iY,EAAO/iY,QACrC4nsB,EAAaxtrB,KAAKqiC,IAAIqmV,EAAO9iY,OAAS+iY,EAAO/iY,QAC7C6nsB,EAAQ,EAEZ,IAAKnksB,EAAI,EAAGA,EAAIyvC,EAAKzvC,IAGI+wV,GAAMquC,EAAOp/X,MAAQ+wV,GAAMsuC,EAAOr/X,KAEnDmksB,IAGR,OAAOA,EAAQD,EAyNW/kU,CAAcp3V,EAAEjlC,GAAIk2G,EAAM34F,WAAa,GAE7DloB,KAAK6rsB,eAAgB,EAGlB7rsB,KAAK6rsB,gBAi/ChB,IAAII,GAAU9X,EAAOzhqB,UAuCrB,SAASw5qB,GAAMnprB,EAAQpZ,EAAOutC,EAAOq0M,GACjC,IAAIpmM,EAASq5oB,KACT/M,EAAMH,IAAYj9qB,IAAIk3O,EAAQ5hP,GAClC,OAAOw7C,EAAOjO,GAAOu6oB,EAAK1uqB,GAG9B,SAASoprB,GAAepprB,EAAQpZ,EAAOutC,GAQnC,GAPIonE,EAASv7F,KACTpZ,EAAQoZ,EACRA,OAASte,GAGbse,EAASA,GAAU,GAEN,MAATpZ,EACA,OAAOuisB,GAAMnprB,EAAQpZ,EAAOutC,EAAO,SAGvC,IAAIrvC,EACA4nC,EAAM,GACV,IAAK5nC,EAAI,EAAGA,EAAI,GAAIA,IAChB4nC,EAAI5nC,GAAKqksB,GAAMnprB,EAAQlb,EAAGqvC,EAAO,SAErC,OAAOzH,EAWX,SAAS28pB,GAAiBC,EAActprB,EAAQpZ,EAAOutC,GACvB,kBAAjBm1pB,GACH/tlB,EAASv7F,KACTpZ,EAAQoZ,EACRA,OAASte,GAGbse,EAASA,GAAU,KAGnBpZ,EADAoZ,EAASsprB,EAETA,GAAe,EAEX/tlB,EAASv7F,KACTpZ,EAAQoZ,EACRA,OAASte,GAGbse,EAASA,GAAU,IAGvB,IAEIlb,EAFAs9C,EAASq5oB,KACT7prB,EAAQ03rB,EAAelnpB,EAAO08oB,MAAMj8qB,IAAM,EAE1C6pB,EAAM,GAEV,GAAa,MAAT9lC,EACA,OAAOuisB,GAAMnprB,GAASpZ,EAAQgL,GAAS,EAAGuiC,EAAO,OAGrD,IAAKrvC,EAAI,EAAGA,EAAI,EAAGA,IACf4nC,EAAI5nC,GAAKqksB,GAAMnprB,GAASlb,EAAI8M,GAAS,EAAGuiC,EAAO,OAEnD,OAAOzH,EAxGXw8pB,GAAQ/nrB,SA5+IR,SAAkBvH,EAAKkjmB,EAAK9zjB,GACxB,IAAI5f,EAASnsC,KAAK6jH,UAAUlnG,IAAQ3c,KAAK6jH,UAAL,SACpC,OAAOooD,EAAW9/H,GAAUA,EAAOjX,KAAK2qlB,EAAK9zjB,GAAO5f,GA2+IxD8/pB,GAAQtorB,eAh3IR,SAAwBhH,GACpB,IAAIoG,EAAS/iB,KAAKsssB,gBAAgB3vrB,GAC9B4vrB,EAAcvssB,KAAKsssB,gBAAgB3vrB,EAAIixB,eAE3C,OAAI7qB,IAAWwprB,EACJxprB,GAGX/iB,KAAKsssB,gBAAgB3vrB,GAAO4vrB,EACvBj7pB,MAAMkjpB,GACN/qrB,IAAI,SAAU+isB,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAIhjsB,MAAM,GAEdgjsB,IAEVx8pB,KAAK,IAEHhwC,KAAKsssB,gBAAgB3vrB,KA01IhCsvrB,GAAQl6pB,YAr1IR,WACI,OAAO/xC,KAAKyssB,cAq1IhBR,GAAQxmrB,QA/0IR,SAAiBC,GACb,OAAO1lB,KAAK0ssB,SAASlrsB,QAAQ,KAAMkkB,IA+0IvCumrB,GAAQ56pB,SAAWm3pB,GACnByD,GAAQ16pB,WAAai3pB,GACrByD,GAAQxnrB,aA3zIR,SAAsBiB,EAAQs3I,EAAe7tH,EAAQ6uB,GACjD,IAAI7xB,EAASnsC,KAAK2ssB,cAAcx9pB,GAChC,OAAO88H,EAAW9/H,GACZA,EAAOzmB,EAAQs3I,EAAe7tH,EAAQ6uB,GACtC7xB,EAAO3qC,QAAQ,MAAOkkB,IAwzIhCumrB,GAAQW,WArzIR,SAAoBrnsB,EAAM4mC,GACtB,IAAIppB,EAAS/iB,KAAK2ssB,cAAcpnsB,EAAO,EAAI,SAAW,QACtD,OAAO0mK,EAAWlpJ,GAAUA,EAAOopB,GAAUppB,EAAOvhB,QAAQ,MAAO2qC,IAozIvE8/pB,GAAQ53rB,IAxkJR,SAAa+jB,GACT,IAAIgW,EAAMvmC,EACV,IAAKA,KAAKuwB,EACF+4pB,EAAW/4pB,EAAQvwB,KAEfokK,EADJ79H,EAAOhW,EAAOvwB,IAEV7H,KAAK6H,GAAKumC,EAEVpuC,KAAK,IAAM6H,GAAKumC,GAI5BpuC,KAAK8hC,QAAU1J,EAIfp4B,KAAKkosB,+BAAiC,IAAIhnkB,QACrClhI,KAAKgosB,wBAAwBzhrB,QAAUvmB,KAAKiosB,cAAc1hrB,QACvD,IACA,UAAUA,SAsjJtB0lrB,GAAQ9vhB,KAxnBR,SAAoBr5J,EAAGC,GACnB,IAAIlb,EACA+jI,EACA3xF,EACAkiI,EAAOn8K,KAAK6ssB,OAASrO,GAAU,MAAMqO,MACzC,IAAKhlsB,EAAI,EAAG+jI,EAAIuwC,EAAKh4K,OAAQ0D,EAAI+jI,IAAK/jI,EAAG,CACrC,cAAes0K,EAAKt0K,GAAGu0K,OACnB,IAAK,SAEDniI,EAAO+0C,EAAMmtF,EAAKt0K,GAAGu0K,OAAOrxG,QAAQ,OACpCoxG,EAAKt0K,GAAGu0K,MAAQniI,EAAKnB,UAI7B,cAAeqjI,EAAKt0K,GAAG00K,OACnB,IAAK,YACDJ,EAAKt0K,GAAG00K,MAAQ,IAChB,MACJ,IAAK,SAEDtiI,EAAO+0C,EAAMmtF,EAAKt0K,GAAG00K,OAAOxxG,QAAQ,OAAOjyB,UAC3CqjI,EAAKt0K,GAAG00K,MAAQtiI,EAAKnB,WAIjC,OAAOqjI,GAgmBX8vhB,GAAQnE,UA7lBR,SAAyBwC,EAASvnrB,EAAQwuqB,GACtC,IAAI1prB,EACA+jI,EAEAzqI,EACAm7K,EACAD,EAHAF,EAAOn8K,KAAKm8K,OAMhB,IAFAmuhB,EAAUA,EAAQ18pB,cAEb/lC,EAAI,EAAG+jI,EAAIuwC,EAAKh4K,OAAQ0D,EAAI+jI,IAAK/jI,EAKlC,GAJA1G,EAAOg7K,EAAKt0K,GAAG1G,KAAKysC,cACpB0uI,EAAOH,EAAKt0K,GAAGy0K,KAAK1uI,cACpByuI,EAASF,EAAKt0K,GAAGw0K,OAAOzuI,cAEpB2jpB,EACA,OAAQxuqB,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAIu5J,IAASguhB,EACT,OAAOnuhB,EAAKt0K,GAEhB,MAEJ,IAAK,OACD,GAAI1G,IAASmpsB,EACT,OAAOnuhB,EAAKt0K,GAEhB,MAEJ,IAAK,QACD,GAAIw0K,IAAWiuhB,EACX,OAAOnuhB,EAAKt0K,QAIrB,GAAI,CAAC1G,EAAMm7K,EAAMD,GAAQpzK,QAAQqhsB,IAAY,EAChD,OAAOnuhB,EAAKt0K,IAyjBxBoksB,GAAQzJ,gBApjBR,SAA+BtgpB,EAAK1I,GAChC,IAAIluC,EAAM42C,EAAIk6H,OAASl6H,EAAIq6H,MAAQ,GAAM,EACzC,YAAa93K,IAAT+0C,EACOw1C,EAAM9sC,EAAIk6H,OAAO5iI,OAEjBw1C,EAAM9sC,EAAIk6H,OAAO5iI,QAAUA,EAAO0I,EAAIr3C,QAAUS,GAgjB/D2gsB,GAAQtF,cA/cR,SAAuBnuc,GAInB,OAHK24b,EAAWnxrB,KAAM,mBAClB4msB,GAAiB1xqB,KAAKl1B,MAEnBw4P,EAAWx4P,KAAKqnsB,eAAiBrnsB,KAAKmnsB,YA4cjD8E,GAAQrE,cAvdR,SAAuBpvc,GAInB,OAHK24b,EAAWnxrB,KAAM,mBAClB4msB,GAAiB1xqB,KAAKl1B,MAEnBw4P,EAAWx4P,KAAKonsB,eAAiBpnsB,KAAKmnsB,YAodjD8E,GAAQpE,gBA1cR,SAAyBrvc,GAIrB,OAHK24b,EAAWnxrB,KAAM,qBAClB4msB,GAAiB1xqB,KAAKl1B,MAEnBw4P,EAAWx4P,KAAKsnsB,iBAAmBtnsB,KAAKmnsB,YAwcnD8E,GAAQrprB,OAn1HR,SAAsBE,EAAGC,GACrB,OAAKD,EAKE9M,EAAQhW,KAAK0zmB,SACd1zmB,KAAK0zmB,QAAQ5wlB,EAAEG,SACfjjB,KAAK0zmB,SACA1zmB,KAAK0zmB,QAAQhve,UAAYk1jB,IAAkB52qB,KAAKD,GAC3C,SACA,cACRD,EAAEG,SAVCjN,EAAQhW,KAAK0zmB,SACd1zmB,KAAK0zmB,QACL1zmB,KAAK0zmB,QAAL,YAg1Hdu4F,GAAQpprB,YAr0HR,SAA2BC,EAAGC,GAC1B,OAAKD,EAKE9M,EAAQhW,KAAKwjH,cACdxjH,KAAKwjH,aAAa1gG,EAAEG,SACpBjjB,KAAKwjH,aACDo2kB,GAAiB52qB,KAAKD,GAAU,SAAW,cAC7CD,EAAEG,SARCjN,EAAQhW,KAAKwjH,cACdxjH,KAAKwjH,aACLxjH,KAAKwjH,aAAL,YAk0HdyolB,GAAQxprB,YA1wHR,SAA2BmxlB,EAAW7wlB,EAAQwuqB,GAC1C,IAAI1prB,EAAGg4mB,EAAK9we,EAEZ,GAAI/uI,KAAK8ssB,kBACL,OAAO/S,GAAkB7kqB,KAAKl1B,KAAM4zmB,EAAW7wlB,EAAQwuqB,GAY3D,IATKvxrB,KAAKi6rB,eACNj6rB,KAAKi6rB,aAAe,GACpBj6rB,KAAKk6rB,iBAAmB,GACxBl6rB,KAAKm6rB,kBAAoB,IAMxBtyrB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBAg4mB,EAAMyxE,EAAU,CAAC,IAAMzprB,IACnB0prB,IAAWvxrB,KAAKk6rB,iBAAiBryrB,KACjC7H,KAAKk6rB,iBAAiBryrB,GAAK,IAAIq5H,OAC3B,IAAMlhI,KAAK4iB,OAAOi9lB,EAAK,IAAIr+mB,QAAQ,IAAK,IAAM,IAC9C,KAEJxB,KAAKm6rB,kBAAkBtyrB,GAAK,IAAIq5H,OAC5B,IAAMlhI,KAAK6iB,YAAYg9lB,EAAK,IAAIr+mB,QAAQ,IAAK,IAAM,IACnD,MAGH+vrB,GAAWvxrB,KAAKi6rB,aAAapyrB,KAC9BknI,EACI,IAAM/uI,KAAK4iB,OAAOi9lB,EAAK,IAAM,KAAO7/mB,KAAK6iB,YAAYg9lB,EAAK,IAC9D7/mB,KAAKi6rB,aAAapyrB,GAAK,IAAIq5H,OAAO6N,EAAMvtI,QAAQ,IAAK,IAAK,MAI1D+vrB,GACW,SAAXxuqB,GACA/iB,KAAKk6rB,iBAAiBryrB,GAAGmb,KAAK4wlB,GAE9B,OAAO/rmB,EACJ,GACH0prB,GACW,QAAXxuqB,GACA/iB,KAAKm6rB,kBAAkBtyrB,GAAGmb,KAAK4wlB,GAE/B,OAAO/rmB,EACJ,IAAK0prB,GAAUvxrB,KAAKi6rB,aAAapyrB,GAAGmb,KAAK4wlB,GAC5C,OAAO/rmB,IA2tHnBoksB,GAAQvprB,YAtpHR,SAAqB81O,GACjB,OAAIx4P,KAAK8ssB,mBACA3b,EAAWnxrB,KAAM,iBAClBs6rB,GAAmBplqB,KAAKl1B,MAExBw4P,EACOx4P,KAAK+6rB,mBAEL/6rB,KAAK66rB,eAGX1J,EAAWnxrB,KAAM,kBAClBA,KAAK66rB,aAAef,IAEjB95rB,KAAK+6rB,oBAAsBvic,EAC5Bx4P,KAAK+6rB,mBACL/6rB,KAAK66rB,eAuoHnBoR,GAAQ/orB,iBA3qHR,SAA0Bs1O,GACtB,OAAIx4P,KAAK8ssB,mBACA3b,EAAWnxrB,KAAM,iBAClBs6rB,GAAmBplqB,KAAKl1B,MAExBw4P,EACOx4P,KAAKg7rB,wBAELh7rB,KAAK86rB,oBAGX3J,EAAWnxrB,KAAM,uBAClBA,KAAK86rB,kBAAoBjB,IAEtB75rB,KAAKg7rB,yBAA2Bxic,EACjCx4P,KAAKg7rB,wBACLh7rB,KAAK86rB,oBA4pHnBmR,GAAQtmrB,KAj+GR,SAAoBk6lB,GAChB,OAAOt0iB,GAAWs0iB,EAAK7/mB,KAAK6hsB,MAAMj8qB,IAAK5lB,KAAK6hsB,MAAMh8qB,KAAKF,MAi+G3DsmrB,GAAQ1lE,eAr9GR,WACI,OAAOvmoB,KAAK6hsB,MAAMh8qB,KAq9GtBomrB,GAAQrqlB,eA19GR,WACI,OAAO5hH,KAAK6hsB,MAAMj8qB,KA29GtBqmrB,GAAQ1orB,SAj3GR,SAAwBT,EAAGC,GACvB,IAAIQ,EAAWvN,EAAQhW,KAAK2wmB,WACtB3wmB,KAAK2wmB,UACL3wmB,KAAK2wmB,UACD7tlB,IAAW,IAANA,GAAc9iB,KAAK2wmB,UAAUjse,SAAS1hH,KAAKD,GAC1C,SACA,cAEhB,OAAa,IAAND,EACD24qB,GAAcl4qB,EAAUvjB,KAAK6hsB,MAAMj8qB,KACnC9C,EACES,EAAST,EAAEgvB,OACXvuB,GAs2GZ0orB,GAAQxorB,YA31GR,SAA2BX,GACvB,OAAa,IAANA,EACD24qB,GAAcz7rB,KAAK+ssB,aAAc/ssB,KAAK6hsB,MAAMj8qB,KAC5C9C,EACE9iB,KAAK+ssB,aAAajqrB,EAAEgvB,OACpB9xC,KAAK+ssB,cAu1GjBd,GAAQzorB,cAp2GR,SAA6BV,GACzB,OAAa,IAANA,EACD24qB,GAAcz7rB,KAAKujH,eAAgBvjH,KAAK6hsB,MAAMj8qB,KAC9C9C,EACE9iB,KAAKujH,eAAezgG,EAAEgvB,OACtB9xC,KAAKujH,gBAg2GjB0olB,GAAQ/+W,cA5wGR,SAA6BmvW,EAAat5qB,EAAQwuqB,GAC9C,IAAI1prB,EAAGg4mB,EAAK9we,EAEZ,GAAI/uI,KAAKgtsB,oBACL,OAAO5Q,GAAoBlnqB,KAAKl1B,KAAMq8rB,EAAat5qB,EAAQwuqB,GAU/D,IAPKvxrB,KAAKs8rB,iBACNt8rB,KAAKs8rB,eAAiB,GACtBt8rB,KAAKw8rB,kBAAoB,GACzBx8rB,KAAKu8rB,oBAAsB,GAC3Bv8rB,KAAKitsB,mBAAqB,IAGzBplsB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BAg4mB,EAAMyxE,EAAU,CAAC,IAAM,IAAIx/oB,IAAIjqC,GAC3B0prB,IAAWvxrB,KAAKitsB,mBAAmBplsB,KACnC7H,KAAKitsB,mBAAmBplsB,GAAK,IAAIq5H,OAC7B,IAAMlhI,KAAKujB,SAASs8lB,EAAK,IAAIr+mB,QAAQ,IAAK,QAAU,IACpD,KAEJxB,KAAKu8rB,oBAAoB10rB,GAAK,IAAIq5H,OAC9B,IAAMlhI,KAAKwjB,cAAcq8lB,EAAK,IAAIr+mB,QAAQ,IAAK,QAAU,IACzD,KAEJxB,KAAKw8rB,kBAAkB30rB,GAAK,IAAIq5H,OAC5B,IAAMlhI,KAAKyjB,YAAYo8lB,EAAK,IAAIr+mB,QAAQ,IAAK,QAAU,IACvD,MAGHxB,KAAKs8rB,eAAez0rB,KACrBknI,EACI,IACA/uI,KAAKujB,SAASs8lB,EAAK,IACnB,KACA7/mB,KAAKwjB,cAAcq8lB,EAAK,IACxB,KACA7/mB,KAAKyjB,YAAYo8lB,EAAK,IAC1B7/mB,KAAKs8rB,eAAez0rB,GAAK,IAAIq5H,OAAO6N,EAAMvtI,QAAQ,IAAK,IAAK,MAI5D+vrB,GACW,SAAXxuqB,GACA/iB,KAAKitsB,mBAAmBplsB,GAAGmb,KAAKq5qB,GAEhC,OAAOx0rB,EACJ,GACH0prB,GACW,QAAXxuqB,GACA/iB,KAAKu8rB,oBAAoB10rB,GAAGmb,KAAKq5qB,GAEjC,OAAOx0rB,EACJ,GACH0prB,GACW,OAAXxuqB,GACA/iB,KAAKw8rB,kBAAkB30rB,GAAGmb,KAAKq5qB,GAE/B,OAAOx0rB,EACJ,IAAK0prB,GAAUvxrB,KAAKs8rB,eAAez0rB,GAAGmb,KAAKq5qB,GAC9C,OAAOx0rB,IAgtGnBoksB,GAAQpQ,cAlqGR,SAAuBrjc,GACnB,OAAIx4P,KAAKgtsB,qBACA7b,EAAWnxrB,KAAM,mBAClBy8rB,GAAqBvnqB,KAAKl1B,MAE1Bw4P,EACOx4P,KAAKi9rB,qBAELj9rB,KAAK88rB,iBAGX3L,EAAWnxrB,KAAM,oBAClBA,KAAK88rB,eAAiBb,IAEnBj8rB,KAAKi9rB,sBAAwBzkc,EAC9Bx4P,KAAKi9rB,qBACLj9rB,KAAK88rB,iBAmpGnBmP,GAAQrQ,mBA/oGR,SAA4Bpjc,GACxB,OAAIx4P,KAAKgtsB,qBACA7b,EAAWnxrB,KAAM,mBAClBy8rB,GAAqBvnqB,KAAKl1B,MAE1Bw4P,EACOx4P,KAAKk9rB,0BAELl9rB,KAAK+8rB,sBAGX5L,EAAWnxrB,KAAM,yBAClBA,KAAK+8rB,oBAAsBb,IAExBl8rB,KAAKk9rB,2BAA6B1kc,EACnCx4P,KAAKk9rB,0BACLl9rB,KAAK+8rB,sBAgoGnBkP,GAAQtQ,iBA5nGR,SAA0Bnjc,GACtB,OAAIx4P,KAAKgtsB,qBACA7b,EAAWnxrB,KAAM,mBAClBy8rB,GAAqBvnqB,KAAKl1B,MAE1Bw4P,EACOx4P,KAAKm9rB,wBAELn9rB,KAAKg9rB,oBAGX7L,EAAWnxrB,KAAM,uBAClBA,KAAKg9rB,kBAAoBb,IAEtBn8rB,KAAKm9rB,yBAA2B3kc,EACjCx4P,KAAKm9rB,wBACLn9rB,KAAKg9rB,oBA8mGnBiP,GAAQtskB,KAn8FR,SAAoBnhF,GAGhB,MAAgD,OAAxCA,EAAQ,IAAI5hC,cAAcmzB,OAAO,IAi8F7Ck8pB,GAAQt6pB,SAv7FR,SAAwBqN,EAAOC,EAASpN,GACpC,OAAImN,EAAQ,GACDnN,EAAU,KAAO,KAEjBA,EAAU,KAAO,MA+gGhC0spB,GAAmB,KAAM,CACrBpihB,KAAM,CACF,CACIC,MAAO,aACPG,MAAO,IACP1xK,OAAQ,EACR1J,KAAM,cACNk7K,OAAQ,KACRC,KAAM,MAEV,CACIF,MAAO,aACPG,OAAO,IACP1xK,OAAQ,EACR1J,KAAM,gBACNk7K,OAAQ,KACRC,KAAM,OAGd92J,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI1J,EAAI0J,EAAS,GAWjB,OAAOA,GATgC,IAA/BkzU,GAAOlzU,EAAS,IAAO,IACjB,KACM,IAAN1J,EACE,KACM,IAANA,EACE,KACM,IAANA,EACE,KACA,SAO5BgzE,EAAM+1jB,KAAOr5gB,EACT,wDACA6yjB,IAEJvvmB,EAAMk+mB,SAAWxhkB,EACb,gEACA8yjB,IAGJ,IAAI2O,GAAU5urB,KAAKqiC,IAmBnB,SAASwspB,GAAc5vpB,EAAUgB,EAAOj9C,EAAOyF,GAC3C,IAAI65G,EAAQtiE,GAAeC,EAAOj9C,GAMlC,OAJAi8C,EAASsmpB,eAAiB98rB,EAAY65G,EAAMijlB,cAC5CtmpB,EAASumpB,OAAS/8rB,EAAY65G,EAAMkjlB,MACpCvmpB,EAASk2jB,SAAW1smB,EAAY65G,EAAM6yf,QAE/Bl2jB,EAASwmpB,UAapB,SAASqJ,GAAQ3nrB,GACb,OAAIA,EAAS,EACFnH,KAAKs7B,MAAMn0B,GAEXnH,KAAKC,KAAKkH,GA2DzB,SAAS4nrB,GAAa1zpB,GAGlB,OAAe,KAAPA,EAAe,OAG3B,SAAS2zpB,GAAa3qrB,GAElB,OAAiB,OAATA,EAAmB,KA+C/B,SAAS4qrB,GAAOrzkB,GACZ,OAAO,WACH,OAAOn6H,KAAKi0pB,GAAG95hB,IAIvB,IAAIszkB,GAAiBD,GAAO,MACxBE,GAAYF,GAAO,KACnBG,GAAYH,GAAO,KACnBI,GAAUJ,GAAO,KACjBK,GAASL,GAAO,KAChBM,GAAUN,GAAO,KACjBO,GAAWP,GAAO,KAClBQ,GAAaR,GAAO,KACpBS,GAAUT,GAAO,KACjBU,GAAYT,GAWhB,SAASU,GAAWhtsB,GAChB,OAAO,WACH,OAAOnB,KAAKwkF,UAAYxkF,KAAKiU,MAAM9S,GAAQs9H,KAInD,IAAI5/E,GAAesvpB,GAAW,gBAC1BjvpB,GAAUivpB,GAAW,WACrBlvpB,GAAUkvpB,GAAW,WACrBnvpB,GAAQmvpB,GAAW,SACnBv0pB,GAAOu0pB,GAAW,QAClBvrrB,GAASurrB,GAAW,UACpBvvpB,GAAQuvpB,GAAW,SAMnBl1pB,GAAQ16B,KAAK06B,MACbm1pB,GAAa,CACTvprB,GAAI,GACJD,EAAG,GACH9B,EAAG,GACHiC,EAAG,GACH/M,EAAG,GACHkN,EAAG,KACHE,EAAG,IAIX,SAASiprB,GAAkBl/pB,EAAQzpB,EAAQs3I,EAAeh/F,EAAU7Y,GAChE,OAAOA,EAAO1gC,aAAaiB,GAAU,IAAKs3I,EAAe7tH,EAAQ6uB,GAoGrE,IAAIswoB,GAAQ/vrB,KAAKqiC,IAEjB,SAASjC,GAAKpjB,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,EAGjC,SAASgzqB,KAQL,IAAKvusB,KAAKwkF,UACN,OAAOxkF,KAAK80rB,aAAa/ipB,cAG7B,IAGIkN,EACAD,EACAJ,EACAh6B,EAEA4prB,EACAC,EACAC,EACAC,EAXAzvpB,EAAUovpB,GAAMtusB,KAAK8jsB,eAAiB,IACtClqpB,EAAO00pB,GAAMtusB,KAAK+jsB,OAClBnhrB,EAAS0rrB,GAAMtusB,KAAK0zmB,SAKpB92b,EAAQ58K,KAAK0tsB,YAMjB,OAAK9whB,GAOL39H,EAAUo5oB,GAASn5oB,EAAU,IAC7BF,EAAQq5oB,GAASp5oB,EAAU,IAC3BC,GAAW,GACXD,GAAW,GAGXL,EAAQy5oB,GAASz1qB,EAAS,IAC1BA,GAAU,GAGVgC,EAAIs6B,EAAUA,EAAQy9E,QAAQ,GAAGn7H,QAAQ,SAAU,IAAM,GAEzDgtsB,EAAY5xhB,EAAQ,EAAI,IAAM,GAC9B6xhB,EAAS9vpB,GAAK3+C,KAAK0zmB,WAAa/0jB,GAAKi+H,GAAS,IAAM,GACpD8xhB,EAAW/vpB,GAAK3+C,KAAK+jsB,SAAWplpB,GAAKi+H,GAAS,IAAM,GACpD+xhB,EAAUhwpB,GAAK3+C,KAAK8jsB,iBAAmBnlpB,GAAKi+H,GAAS,IAAM,GAGvD4xhB,EACA,KACC5vpB,EAAQ6vpB,EAAS7vpB,EAAQ,IAAM,KAC/Bh8B,EAAS6rrB,EAAS7rrB,EAAS,IAAM,KACjCg3B,EAAO80pB,EAAW90pB,EAAO,IAAM,KAC/BoF,GAASC,GAAWC,EAAU,IAAM,KACpCF,EAAQ2vpB,EAAU3vpB,EAAQ,IAAM,KAChCC,EAAU0vpB,EAAU1vpB,EAAU,IAAM,KACpCC,EAAUyvpB,EAAU/prB,EAAI,IAAM,KA9BxB,MAkCf,IAAIgqrB,GAAUlL,GAAShxqB,UAwGvB,OAtGAk8qB,GAAQpqnB,QAp0ER,WACI,OAAOxkF,KAAK6yrB,UAo0EhB+b,GAAQhupB,IA/XR,WACI,IAAI9wC,EAAO9P,KAAKiU,MAahB,OAXAjU,KAAK8jsB,cAAgBqJ,GAAQntsB,KAAK8jsB,eAClC9jsB,KAAK+jsB,MAAQoJ,GAAQntsB,KAAK+jsB,OAC1B/jsB,KAAK0zmB,QAAUy5F,GAAQntsB,KAAK0zmB,SAE5B5jmB,EAAK+uC,aAAesupB,GAAQr9rB,EAAK+uC,cACjC/uC,EAAKovC,QAAUiupB,GAAQr9rB,EAAKovC,SAC5BpvC,EAAKmvC,QAAUkupB,GAAQr9rB,EAAKmvC,SAC5BnvC,EAAKkvC,MAAQmupB,GAAQr9rB,EAAKkvC,OAC1BlvC,EAAK8S,OAASuqrB,GAAQr9rB,EAAK8S,QAC3B9S,EAAK8uC,MAAQuupB,GAAQr9rB,EAAK8uC,OAEnB5+C,MAkXX4usB,GAAQ/rsB,IApWR,SAAe27C,EAAOj9C,GAClB,OAAO6rsB,GAAcptsB,KAAMw+C,EAAOj9C,EAAO,IAoW7CqtsB,GAAQxwpB,SAhWR,SAAoBI,EAAOj9C,GACvB,OAAO6rsB,GAAcptsB,KAAMw+C,EAAOj9C,GAAQ,IAgW9CqtsB,GAAQ36C,GAnRR,SAAYlpd,GACR,IAAK/qM,KAAKwkF,UACN,OAAOi6C,IAEX,IAAI7kF,EACAh3B,EACAi8B,EAAe7+C,KAAK8jsB,cAIxB,GAAc,WAFd/4f,EAAQkrf,EAAelrf,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OADAnoL,EAAS5iB,KAAK0zmB,QAAU45F,GADxB1zpB,EAAO55C,KAAK+jsB,MAAQllpB,EAAe,OAE3BksJ,GACJ,IAAK,QACD,OAAOnoL,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADAg3B,EAAO55C,KAAK+jsB,MAAQxlrB,KAAK06B,MAAMs0pB,GAAavtsB,KAAK0zmB,UACzC3oa,GACJ,IAAK,OACD,OAAOnxJ,EAAO,EAAIiF,EAAe,OACrC,IAAK,MACD,OAAOjF,EAAOiF,EAAe,MACjC,IAAK,OACD,OAAc,GAAPjF,EAAYiF,EAAe,KACtC,IAAK,SACD,OAAc,KAAPjF,EAAciF,EAAe,IACxC,IAAK,SACD,OAAc,MAAPjF,EAAeiF,EAAe,IAEzC,IAAK,cACD,OAAOtgC,KAAKs7B,MAAa,MAAPD,GAAgBiF,EACtC,QACI,MAAM,IAAIxqB,MAAM,gBAAkB02K,KA6OlD6jgB,GAAQnB,eAAiBA,GACzBmB,GAAQlB,UAAYA,GACpBkB,GAAQjB,UAAYA,GACpBiB,GAAQhB,QAAUA,GAClBgB,GAAQf,OAASA,GACjBe,GAAQd,QAAUA,GAClBc,GAAQb,SAAWA,GACnBa,GAAQZ,WAAaA,GACrBY,GAAQX,QAAUA,GAClBW,GAAQ91pB,QAAUo1pB,GAClBU,GAAQ5K,QAhWR,WACI,IAII9kpB,EACAD,EACAD,EACAJ,EACAiwpB,EARAhwpB,EAAe7+C,KAAK8jsB,cACpBlqpB,EAAO55C,KAAK+jsB,MACZnhrB,EAAS5iB,KAAK0zmB,QACd5jmB,EAAO9P,KAAKiU,MAgDhB,OArCS4qC,GAAgB,GAAKjF,GAAQ,GAAKh3B,GAAU,GAC5Ci8B,GAAgB,GAAKjF,GAAQ,GAAKh3B,GAAU,IAGjDi8B,GAAuD,MAAvCwupB,GAAQE,GAAa3qrB,GAAUg3B,GAC/CA,EAAO,EACPh3B,EAAS,GAKb9S,EAAK+uC,aAAeA,EAAe,IAEnCK,EAAUm5oB,GAASx5oB,EAAe,KAClC/uC,EAAKovC,QAAUA,EAAU,GAEzBD,EAAUo5oB,GAASn5oB,EAAU,IAC7BpvC,EAAKmvC,QAAUA,EAAU,GAEzBD,EAAQq5oB,GAASp5oB,EAAU,IAC3BnvC,EAAKkvC,MAAQA,EAAQ,GAErBpF,GAAQy+oB,GAASr5oB,EAAQ,IAIzBp8B,GADAisrB,EAAiBxW,GAASiV,GAAa1zpB,IAEvCA,GAAQyzpB,GAAQE,GAAasB,IAG7BjwpB,EAAQy5oB,GAASz1qB,EAAS,IAC1BA,GAAU,GAEV9S,EAAK8pC,KAAOA,EACZ9pC,EAAK8S,OAASA,EACd9S,EAAK8uC,MAAQA,EAEN5+C,MA6SX4usB,GAAQhrjB,MAlOR,WACI,OAAOrlG,GAAev+C,OAkO1B4usB,GAAQ18rB,IA/NR,SAAe64L,GAEX,OADAA,EAAQkrf,EAAelrf,GAChB/qM,KAAKwkF,UAAYxkF,KAAK+qM,EAAQ,OAAStsE,KA8NlDmwkB,GAAQ/vpB,aAAeA,GACvB+vpB,GAAQ1vpB,QAAUA,GAClB0vpB,GAAQ3vpB,QAAUA,GAClB2vpB,GAAQ5vpB,MAAQA,GAChB4vpB,GAAQh1pB,KAAOA,GACfg1pB,GAAQtvpB,MAlNR,WACI,OAAO+4oB,GAASr4rB,KAAK45C,OAAS,IAkNlCg1pB,GAAQhsrB,OAASA,GACjBgsrB,GAAQhwpB,MAAQA,GAChBgwpB,GAAQ9F,SAlIR,SAAkBgG,EAAeC,GAC7B,IAAK/usB,KAAKwkF,UACN,OAAOxkF,KAAK80rB,aAAa/ipB,cAG7B,IAEIoT,EACAhZ,EAHA6iqB,GAAa,EACbC,EAAKb,GAyBT,MArB6B,iBAAlBU,IACPC,EAAgBD,EAChBA,GAAgB,GAES,kBAAlBA,IACPE,EAAaF,GAEY,iBAAlBC,IACPE,EAAKzyrB,OAAOuqB,OAAO,GAAIqnqB,GAAYW,GACZ,MAAnBA,EAAcnqrB,GAAiC,MAApBmqrB,EAAclqrB,KACzCoqrB,EAAGpqrB,GAAKkqrB,EAAcnqrB,EAAI,IAKlCunB,EAxFJ,SAAwB+iqB,EAAgBlyiB,EAAeoxiB,EAAYjppB,GAC/D,IAAI3H,EAAWe,GAAe2wpB,GAAgBtupB,MAC1C1B,EAAUjG,GAAMuE,EAASy2mB,GAAG,MAC5Bh1mB,EAAUhG,GAAMuE,EAASy2mB,GAAG,MAC5Bj1mB,EAAQ/F,GAAMuE,EAASy2mB,GAAG,MAC1Br6mB,EAAOX,GAAMuE,EAASy2mB,GAAG,MACzBrxoB,EAASq2B,GAAMuE,EAASy2mB,GAAG,MAC3B30mB,EAAQrG,GAAMuE,EAASy2mB,GAAG,MAC1Br1mB,EAAQ3F,GAAMuE,EAASy2mB,GAAG,MAC1Bl4oB,EACKmjC,GAAWkvpB,EAAWvprB,IAAM,CAAC,IAAKq6B,IAClCA,EAAUkvpB,EAAWxprB,GAAK,CAAC,KAAMs6B,IACjCD,GAAW,GAAK,CAAC,MACjBA,EAAUmvpB,EAAWtrrB,GAAK,CAAC,KAAMm8B,IACjCD,GAAS,GAAK,CAAC,MACfA,EAAQovpB,EAAWrprB,GAAK,CAAC,KAAMi6B,IAC/BpF,GAAQ,GAAK,CAAC,MACdA,EAAOw0pB,EAAWp2rB,GAAK,CAAC,KAAM4hC,GAgBvC,OAdoB,MAAhBw0pB,EAAWlprB,IACXnJ,EACIA,GACCujC,GAAS,GAAK,CAAC,MACfA,EAAQ8upB,EAAWlprB,GAAK,CAAC,KAAMo6B,KAExCvjC,EAAIA,GACC6G,GAAU,GAAK,CAAC,MAChBA,EAASwrrB,EAAWhprB,GAAK,CAAC,KAAMxC,IAChCg8B,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAKo+G,EACPjhJ,EAAE,IAAMmzrB,EAAiB,EACzBnzrB,EAAE,GAAKopC,EACAkppB,GAAkB12pB,MAAM,KAAM57B,GAuD5BozrB,CAAenvsB,MAAOgvsB,EAAYC,EAD3C9ppB,EAASnlD,KAAK80rB,cAGVka,IACA7iqB,EAASgZ,EAAOynpB,YAAY5ssB,KAAMmsC,IAG/BgZ,EAAO5T,WAAWpF,IAoG7ByiqB,GAAQrupB,YAAcgupB,GACtBK,GAAQ38qB,SAAWs8qB,GACnBK,GAAQrloB,OAASgloB,GACjBK,GAAQzppB,OAASA,GACjByppB,GAAQ9Z,WAAaA,GAErB8Z,GAAQQ,YAAc1jkB,EAClB,sFACA6ikB,IAEJK,GAAQ7pD,KAAOA,GAIf6vC,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BiD,GAAc,IAAKN,IACnBM,GAAc,IA5wJO,wBA6wJrBW,GAAc,IAAK,SAAUh6oB,EAAOzlC,EAAOqf,GACvCA,EAAOvD,GAAK,IAAI6lB,KAAyB,IAApB7sB,WAAW2wB,MAEpCg6oB,GAAc,IAAK,SAAUh6oB,EAAOzlC,EAAOqf,GACvCA,EAAOvD,GAAK,IAAI6lB,KAAKk+S,GAAMp6S,MAK/BwwC,EAAM+6F,QAAU,SAn/KZmngB,EAq/KY0Q,GAEhB5ymB,EAAMhgF,GAAK4xK,GACX5xF,EAAMtwE,IA77EN,WAGI,OAAOmvP,GAAO,WAFH,GAAGrkQ,MAAM0rB,KAAK5b,UAAW,KA67ExC01E,EAAMlsC,IAx7EN,WAGI,OAAO+qN,GAAO,UAFH,GAAGrkQ,MAAM0rB,KAAK5b,UAAW,KAw7ExC01E,EAAMjjC,IAn7EI,WACN,OAAOrR,KAAKqR,IAAMrR,KAAKqR,OAAS,IAAIrR,MAm7ExCs0C,EAAMyimB,IAAMH,EACZtimB,EAAMo7mB,KA9nBN,SAAoB5rpB,GAChB,OAAOojpB,GAAoB,IAARpjpB,IA8nBvBwwC,EAAMpsE,OAtgBN,SAAoBG,EAAQpZ,GACxB,OAAOwisB,GAAepprB,EAAQpZ,EAAO,WAsgBzCqlF,EAAMwvJ,OAASA,EACfxvJ,EAAM7pC,OAASo5oB,GACfvvmB,EAAM2gC,QAAUmjkB,EAChB9jmB,EAAMxxC,SAAWe,GACjBywC,EAAM2kmB,SAAWA,EACjB3kmB,EAAMzrE,SApgBN,SAAsB8orB,EAActprB,EAAQpZ,GACxC,OAAOyisB,GAAiBC,EAActprB,EAAQpZ,EAAO,aAogBzDqlF,EAAMq8mB,UAloBN,WACI,OAAOzJ,GAAYjqpB,MAAM,KAAMr+B,WAAW+xrB,aAkoB9Cr8mB,EAAM8lmB,WAAa0J,GACnBxvmB,EAAMi1mB,WAAaA,GACnBj1mB,EAAMnsE,YA5gBN,SAAyBE,EAAQpZ,GAC7B,OAAOwisB,GAAepprB,EAAQpZ,EAAO,gBA4gBzCqlF,EAAMvrE,YAjgBN,SAAyB4orB,EAActprB,EAAQpZ,GAC3C,OAAOyisB,GAAiBC,EAActprB,EAAQpZ,EAAO,gBAigBzDqlF,EAAMrsE,aAAeA,GACrBqsE,EAAMqgnB,aA90GN,SAAsBlusB,EAAMi3B,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAI+sB,EACAmqpB,EACApb,EAAe6J,GAEE,MAAjBzzoB,GAAQnpD,IAA+C,MAA9BmpD,GAAQnpD,GAAMu/kB,aAEvCp2hB,GAAQnpD,GAAMkT,IAAI4/qB,EAAa3poB,GAAQnpD,GAAM2gC,QAAS1J,KAIrC,OADjBk3qB,EAAYnR,GAAWh9rB,MAEnB+yrB,EAAeob,EAAUxtqB,SAE7B1J,EAAS67pB,EAAaC,EAAc97pB,GACnB,MAAbk3qB,IAIAl3qB,EAAOkkJ,KAAOn7K,IAElBgkD,EAAS,IAAIgvoB,EAAO/7pB,IACbsojB,aAAep2hB,GAAQnpD,GAC9BmpD,GAAQnpD,GAAQgkD,GAIpBo5oB,GAAmBp9rB,QAGE,MAAjBmpD,GAAQnpD,KAC0B,MAA9BmpD,GAAQnpD,GAAMu/kB,cACdp2hB,GAAQnpD,GAAQmpD,GAAQnpD,GAAMu/kB,aAC1Bv/kB,IAASo9rB,MACTA,GAAmBp9rB,IAEC,MAAjBmpD,GAAQnpD,WACRmpD,GAAQnpD,IAI3B,OAAOmpD,GAAQnpD,IAqyGnB6tF,EAAM1kC,QA1wGN,WACI,OAAO7tC,EAAK6tC,KA0wGhB0kC,EAAMxrE,cAzgBN,SAA2B6orB,EAActprB,EAAQpZ,GAC7C,OAAOyisB,GAAiBC,EAActprB,EAAQpZ,EAAO,kBAygBzDqlF,EAAMinmB,eAAiBA,EACvBjnmB,EAAMugnB,qBAtNN,SAAoCC,GAChC,YAAyB/qsB,IAArB+qsB,EACOv2pB,GAEqB,mBAArBu2pB,IACPv2pB,GAAQu2pB,GACD,IAiNfxgnB,EAAMygnB,sBA3MN,SAAqC7sjB,EAAW70G,GAC5C,YAA8BtpC,IAA1B2psB,GAAWxrjB,UAGDn+I,IAAVspC,EACOqgqB,GAAWxrjB,IAEtBwrjB,GAAWxrjB,GAAa70G,EACN,MAAd60G,IACAwrjB,GAAWvprB,GAAKkpB,EAAQ,IAErB,KAiMXihD,EAAM05mB,eAx1DN,SAA2BgH,EAAU3jpB,GACjC,IAAIxmD,EAAOmqsB,EAASnqsB,KAAKwmD,EAAK,QAAQ,GACtC,OAAOxmD,GAAQ,EACT,WACAA,GAAQ,EACN,WACAA,EAAO,EACL,UACAA,EAAO,EACL,UACAA,EAAO,EACL,UACAA,EAAO,EACL,WACA,YA20DpBypF,EAAMt8D,UAAYkuJ,GAGlB5xF,EAAM2gnB,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnBC,KAAM,aACNC,KAAM,QACNC,aAAc,WACdC,QAAS,eACTC,KAAM,aACNC,MAAO,WAGJphnB,EA9iLyElqF,K,2GCKpF,aAaC,WAAoB2tC,GAAA,KAAAA,K,OASpB,YAAAC,gBAAA,WACC1yC,KAAKyjK,OAAS,IAAI4siB,SAASrwsB,KAAKyyC,GAAG7vC,cAAe5C,KAAKgoB,U,sCAnB5CsorB,GAAe,Y,uBAAfA,EAAe,kF,EAJ5B,I,4JCXM,SAAU7pkB,IACZ,OAAO,SAAkClgH,GACrC,OAAOA,EAAO8V,KAAK,IAAIk0qB,EAAiBhqrB,K,IAG1CgqrB,E,8BACF,WAAYzphB,GAAW,oBACnB9mL,KAAK8mL,YAAcA,G,mBAEvB,SAAKvqJ,EAAYhW,GACb,IAAQugK,EAAgB9mL,KAAhB8mL,YACRA,EAAYX,YACZ,IAAMqqhB,EAAa,IAAIC,EAAmBl0qB,EAAYuqJ,GAChD9yE,EAAeztF,EAAOriB,UAAUsssB,GAItC,OAHKA,EAAWhprB,SACZgprB,EAAWhqhB,WAAaM,EAAYhxK,WAEjCk+F,M,GAGTy8lB,E,YACF,WAAYh0qB,EAAaqqJ,GAAW,M,MAAA,2B,EAChC,K,EAAA,E,EAAA,CAAMrqJ,G,kBAAN,E,iGACKqqJ,YAAcA,EAFa,E,iEAIpC,WACI,IAAQA,EAAgB9mL,KAAhB8mL,YACR,GAAKA,EAAL,CAIA9mL,KAAK8mL,YAAc,KACnB,IAAMrgD,EAAWqgD,EAAYX,UAC7B,GAAI1/C,GAAY,EACZzmI,KAAKwmL,WAAa,UAItB,GADAM,EAAYX,UAAY1/C,EAAW,EAC/BA,EAAW,EACXzmI,KAAKwmL,WAAa,SADtB,CAIA,IAAQA,EAAexmL,KAAfwmL,WACFkqhB,EAAmB5phB,EAAYL,YACrCzmL,KAAKwmL,WAAa,MACdkqhB,GAAsBlqhB,GAAckqhB,IAAqBlqhB,GACzDkqhB,EAAiB96rB,oBAlBjB5V,KAAKwmL,WAAa,S,CARG,M,sBCVxB,SAAUnkK,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,sXAA0EL,MAC9E,KAEJM,YACI,kSAA4DN,MAAM,KACtEgB,SAAU,6LAAuChB,MAAM,KACvDiB,cAAe,6FAAuBjB,MAAM,KAC5CkB,YAAa,mDAAgBlB,MAAM,KACnCoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,kCACN2nH,EAAG,WACHjH,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEV3gH,SAAU,CACNC,QAAS,4CACTC,QAAS,sCACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,qGACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,8BACRC,KAAM,8BACNC,EAAG,0DACHC,GAAI,oCACJ/B,EAAG,qBACHgC,GAAI,8BACJC,EAAG,qBACHC,GAAI,SAAUU,GACV,OAAe,IAAXA,EACO,uCAEJA,EAAS,6BAEpB1N,EAAG,qBACHiN,GAAI,SAAUS,GACV,OAAe,IAAXA,EACO,uCAEJA,EAAS,6BAEpBN,EAAG,2BACHC,GAAI,SAAUK,GACV,OAAe,IAAXA,EACO,6CAEJA,EAAS,yCAEpBJ,EAAG,qBACHC,GAAI,SAAUG,GACV,OAAe,IAAXA,EACO,uCACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,sBAEbA,EAAS,8BAGxB8rB,cACI,qTACJmuF,KAAM,SAAUnhF,GACZ,MAAO,6HAA8Bx7B,KAAKw7B,IAE9C7M,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,0DACAA,EAAO,GACP,iCACAA,EAAO,GACPG,EAAU,kCAAW,sEACrBH,EAAO,GACPG,EAAU,4BAAU,sEAEpB,8BAzFmB/sC,CAAQ,EAAQ,U,0JCPpD,SAAU8iI,IAAkC,IAAnBljB,EAAmB,uDAAJ,KAC1C,OAAO,SAACn+F,GAAD,OAAYA,EAAO8V,KAAK,IAAIs0qB,EAAuBjslB,K,IAExDislB,E,8BACF,WAAYjslB,GAAY,oBACpB1kH,KAAK0kH,aAAeA,G,mBAExB,SAAKnoF,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI0ssB,EAAyBr0qB,EAAYv8B,KAAK0kH,mB,GAGxEkslB,E,YACF,WAAYn0qB,EAAaioF,GAAY,M,MAAA,2B,EACjC,K,EAAA,E,EAAA,CAAMjoF,G,kBAAN,E,iGACKioF,aAAeA,EACpB,EAAKtkF,SAAU,EAHkB,E,0DAKrC,SAAM7+B,GACFvB,KAAKogC,SAAU,EACfpgC,KAAKy8B,YAAY54B,KAAKtC,K,uBAE1B,WACQvB,KAAKogC,SACLpgC,KAAKy8B,YAAY54B,KAAK7D,KAAK0kH,cAE/B1kH,KAAKy8B,YAAY34B,e,CAdc,M,kICPjC,SAAUqlH,EAAU38F,EAAQspB,EAAW9tB,EAASm9G,GAKlD,OAJI,YAAWn9G,KACXm9G,EAAiBn9G,EACjBA,OAAUvjB,GAEV0gI,EACOhc,EAAU38F,EAAQspB,EAAW9tB,GAAShkB,KAAK,YAAI,SAAAnE,GAAI,OAAI,YAAQA,GAAQslI,EAAc,WAAd,cAAkBtlI,IAAQslI,EAAetlI,MAEpH,IAAI,IAAW,SAAA08B,GASlBs0qB,EAAkBrkrB,EAAQspB,EAR1B,SAAiB7hB,GAETsI,EAAW14B,KADXyV,UAAUnV,OAAS,EACHoG,MAAMmoB,UAAUlpB,MAAM0rB,KAAK5b,WAG3B2a,IAGsBsI,EAAYvU,KAGlE,SAAS6orB,EAAkBC,EAAWh7pB,EAAWzJ,EAAS9P,EAAYvU,GAClE,IAAIpS,EACJ,GA+BJ,SAAuBk7rB,GACnB,OAAOA,GAAmD,mBAA/BA,EAAUxlrB,kBAA4E,mBAAlCwlrB,EAAUnlrB,oBAhCrFolrB,CAAcD,GAAY,CAC1B,IAAMvqrB,EAASuqrB,EACfA,EAAUxlrB,iBAAiBwqB,EAAWzJ,EAASrkB,GAC/CpS,EAAc,kBAAM2Q,EAAOoF,oBAAoBmqB,EAAWzJ,EAASrkB,SAElE,GAuBT,SAAmC8orB,GAC/B,OAAOA,GAAqC,mBAAjBA,EAAUvtoB,IAA8C,mBAAlButoB,EAAUntoB,IAxBlEqtoB,CAA0BF,GAAY,CAC3C,IAAM,EAASA,EACfA,EAAUvtoB,GAAGztB,EAAWzJ,GACxBz2B,EAAc,kBAAM,EAAO+tD,IAAI7tB,EAAWzJ,SAEzC,GAeT,SAAiCykqB,GAC7B,OAAOA,GAA8C,mBAA1BA,EAAU3lqB,aAAkE,mBAA7B2lqB,EAAU1lqB,eAhB3E6lqB,CAAwBH,GAAY,CACzC,IAAM,EAASA,EACfA,EAAU3lqB,YAAY2K,EAAWzJ,GACjCz2B,EAAc,kBAAM,EAAOw1B,eAAe0K,EAAWzJ,QAEpD,KAAIykqB,IAAaA,EAAU3ssB,OAM5B,MAAM,IAAIquC,UAAU,wBALpB,IAAK,IAAI3qC,EAAI,EAAGyvC,EAAMw5pB,EAAU3ssB,OAAQ0D,EAAIyvC,EAAKzvC,IAC7CgpsB,EAAkBC,EAAUjpsB,GAAIiuC,EAAWzJ,EAAS9P,EAAYvU,GAMxEuU,EAAW15B,IAAI+S,K,kCClDnB,wEAGM,SAAU+0G,EAAUnsE,EAAOstF,GAC7B,OAAKA,EAIM,YAActtF,EAAOstF,GAHrB,IAAI,IAAW,YAAiBttF,M,sBCMtC,SAAUn8B,GAAU,aAIhBA,EAAOM,aAAa,KAAM,CAC/BC,OAAQ,mFAAgFL,MACpF,KAEJM,YAAa,qDAAkDN,MAAM,KACrEgB,SAAU,8EAA4DhB,MAClE,KAEJiB,cAAe,oCAA8BjB,MAAM,KACnDkB,YAAa,sBAAmBlB,MAAM,KACtCmB,oBAAoB,EACpB8tB,cAAe,QACfmuF,KAAM,SAAUnhF,GACZ,MAA2B,MAApBA,EAAMzO,OAAO,IAExB4B,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAOmN,EAAQ,GAAK,KAAO,MAE/Br7B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,mBACNC,EAAG,eACHC,GAAI,aACJ/B,EAAG,mBACHgC,GAAI,YACJC,EAAG,gBACHC,GAAI,YACJhN,EAAG,iBACHiN,GAAI,aACJG,EAAG,cACHC,GAAI,UACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB/gB,CAAQ,EAAQ,U,oCCRpD,SAAUossB,EAAY3vsB,GACxB,OAAOA,GAAmC,mBAAnBA,EAAM6C,SADjC,iC,sBCUS,SAAUie,GAAU,aAiEzB,SAAS06I,EAAoBr3I,EAAQs3I,EAAergJ,EAAKqhD,GACrD,IAAIj7C,EAAS,CACT6B,EAAG,CAAC,kBAAmB,mBACvBC,GAAI,CAACa,EAAS,WAAiBA,EAAS,YACxC5C,EAAG,CAAC,aAAW,iBACfgC,GAAI,CAACY,EAAS,YAAeA,EAAS,aACtCX,EAAG,CAAC,aAAW,kBACfC,GAAI,CAACU,EAAS,YAAeA,EAAS,aACtC1N,EAAG,CAAC,UAAW,eACfiN,GAAI,CAACS,EAAS,SAAeA,EAAS,UACtCN,EAAG,CAAC,SAAU,aACdC,GAAI,CAACK,EAAS,SAAeA,EAAS,UACtCJ,EAAG,CAAC,QAAS,YACbC,GAAI,CAACG,EAAS,OAAaA,EAAS,SAExC,OAAOs4C,GAEDg/F,EADAj6I,EAAOpG,GAAK,GAGVoG,EAAOpG,GAAK,GA9Ed0F,EAAOM,aAAa,MAAO,CACjCC,OAAQ,kGAAsFL,MAC1F,KAEJM,YAAa,qDAAkDN,MAAM,KACrEgB,SAAU,8EAAsDhB,MAAM,KACtEiB,cAAe,gDAA8BjB,MAAM,KACnDkB,YAAa,mCAAuBlB,MAAM,KAC1CoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVutB,cAAe,aACfmuF,KAAM,SAAUnhF,GACZ,MAAO,QAAUA,EAAM5hC,eAE3B+0B,SAAU,SAAUqN,EAAOC,EAASpN,GAChC,OAAImN,EAAQ,GACDnN,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjC3tB,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACNC,EAAGm4I,EACHl4I,GAAIk4I,EACJj6I,EAAGi6I,EACHj4I,GAAIi4I,EACJh4I,EAAGg4I,EACH/3I,GAAI+3I,EACJ/kJ,EAAG+kJ,EACH93I,GAAI83I,EACJ33I,EAAG23I,EACH13I,GAAI03I,EACJz3I,EAAGy3I,EACHx3I,GAAIw3I,GAERv3I,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB/gB,CAAQ,EAAQ,U,sBCEjD,SAAUud,GAAU,aAIzB,IAAI8urB,EAAe,2DAAiD5urB,MAAM,KA4B1E,SAAS66J,EAAU13J,EAAQs3I,EAAe7tH,EAAQ6uB,GAC9C,IAAIozoB,EAiBR,SAAsB1rrB,GAClB,IAAI2rrB,EAAU9yrB,KAAKs7B,MAAOn0B,EAAS,IAAQ,KACvC4rrB,EAAM/yrB,KAAKs7B,MAAOn0B,EAAS,IAAO,IAClC6rrB,EAAM7rrB,EAAS,GACfmgK,EAAO,GAUX,OATIwrhB,EAAU,IACVxrhB,GAAQsrhB,EAAaE,GAAW,SAEhCC,EAAM,IACNzrhB,IAAkB,KAATA,EAAc,IAAM,IAAMsrhB,EAAaG,GAAO,OAEvDC,EAAM,IACN1rhB,IAAkB,KAATA,EAAc,IAAM,IAAMsrhB,EAAaI,IAEpC,KAAT1rhB,EAAc,OAASA,EA/Bb2rhB,CAAa9rrB,GAC9B,OAAQypB,GACJ,IAAK,KACD,OAAOiiqB,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtB/urB,EAAOM,aAAa,MAAO,CACjCC,OAAQ,iSAAkML,MACtM,KAEJM,YACI,6JAA0HN,MACtH,KAER0U,kBAAkB,EAClB1T,SAAU,2DAA2DhB,MACjE,KAEJiB,cACI,2DAA2DjB,MAAM,KACrEkB,YACI,2DAA2DlB,MAAM,KACrEoB,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,mBACTC,SAAU,MACVC,QAAS,wBACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OA9FR,SAAyBynB,GACrB,IAAI07B,EAAO17B,EASX,OAP+B,IAA3BA,EAAOljC,QAAQ,OACT4+D,EAAKr+D,MAAM,GAAI,GAAK,OACO,IAA3B2iC,EAAOljC,QAAQ,OACb4+D,EAAKr+D,MAAM,GAAI,GAAK,OACO,IAA3B2iC,EAAOljC,QAAQ,OACb4+D,EAAKr+D,MAAM,GAAI,GAAK,MACpBq+D,EAAO,QAsFjBljD,KAlFR,SAAuBwnB,GACnB,IAAI07B,EAAO17B,EASX,OAP+B,IAA3BA,EAAOljC,QAAQ,OACT4+D,EAAKr+D,MAAM,GAAI,GAAK,YACO,IAA3B2iC,EAAOljC,QAAQ,OACb4+D,EAAKr+D,MAAM,GAAI,GAAK,OACO,IAA3B2iC,EAAOljC,QAAQ,OACb4+D,EAAKr+D,MAAM,GAAI,GAAK,MACpBq+D,EAAO,QA0EjBjjD,EAAG,UACHC,GAAIu4J,EACJt6J,EAAG,eACHgC,GAAIs4J,EACJr4J,EAAG,eACHC,GAAIo4J,EACJplK,EAAG,eACHiN,GAAIm4J,EACJh4J,EAAG,eACHC,GAAI+3J,EACJ93J,EAAG,eACHC,GAAI63J,GAER53J,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1HyB/gB,CAAQ,EAAQ,U,kCCN1D,gDACM,SAAU6hI,EAAW3xG,EAAO82G,GAC9B,OAIW,IAAI,IAJVA,EAIqB,SAAAvvG,GAAU,OAAIuvG,EAAU1nI,SAASs0B,EAAU,EAAG,CAAE1D,QAAOuH,gBAHvD,SAAAA,GAAU,OAAIA,EAAWvH,MAAMA,KAM7D,SAAS0D,EAAT,GAAuC,EAAZ6D,WACZvH,MADwB,EAAnBA,S,oCCPpB,IAAIy8qB,EAAY,EAAQ,QACpBC,EAAa,EAAQ,QACrBC,EAAe,EAAQ,QACvBC,EAAwB,EAAQ,QAoIpC,SAASj7D,EAA4BpngB,GACjC,OAAOA,EAAO95H,OAAO,SAAUshoB,EAAMp6mB,GAAO,OAAOo6mB,EAAK/9nB,OAAQ2jB,aAAei1qB,EAAsBlvd,oBAAuB/lN,EAAI4yG,OAAS5yG,IAAS,IAFtJU,EAAQ0nH,aAlIY,WAChB,SAASA,EAAanvI,GAClB5V,KAAKwnB,QAAS,EACdxnB,KAAKymK,iBAAmB,KACxBzmK,KAAKi3mB,eAAiB,KAClBrhmB,IACA5V,KAAK02oB,kBAAmB,EACxB12oB,KAAKysI,aAAe72H,GAqHN,IAAU49J,EAIhC,OAtHAzuB,EAAaryH,UAAU9c,YAAc,WACjC,IAAI25H,EACJ,IAAIvvI,KAAKwnB,OAAT,CAGA,IAAI7c,EAAK3K,KAAMymK,EAAmB97J,EAAG87J,iBAAkBiwe,EAAmB/roB,EAAG+roB,iBAAkBjqgB,EAAe9hI,EAAG8hI,aAAcwqe,EAAiBtsmB,EAAGssmB,eAInJ,GAHAj3mB,KAAKwnB,QAAS,EACdxnB,KAAKymK,iBAAmB,KACxBzmK,KAAKi3mB,eAAiB,KAClBxwc,aAA4B1hB,EAC5B0hB,EAAiBj7J,OAAOxL,WAEvB,GAAyB,OAArBymK,EACL,IAAK,IAAI98J,EAAQ,EAAGA,EAAQ88J,EAAiBtiK,SAAUwF,EACpC88J,EAAiB98J,GACvB6B,OAAOxL,MAGxB,GAAI2xsB,EAAa1liB,WAAWx/B,GAAe,CACnCiqgB,IACA12oB,KAAKysI,kBAAehoI,GAExB,IACIgoI,EAAav3G,KAAKl1B,MAEtB,MAAOi0B,GACHs7G,EAASt7G,aAAa29qB,EAAsBlvd,oBAAsBi0Z,EAA4B1inB,EAAEs7G,QAAU,CAACt7G,IAGnH,GAAIw9qB,EAAUz7rB,QAAQihmB,GAClB,CAAIttmB,GAAS,EAEb,IAFA,IACI2tC,EAAM2/jB,EAAe9ymB,SAChBwF,EAAQ2tC,GAAK,CAClB,IAAI26C,EAAMglhB,EAAettmB,GACzB,GAAI+nsB,EAAWrmgB,SAASp5G,GACpB,IACIA,EAAIr8E,cAER,MAAOqe,GACHs7G,EAASA,GAAU,GACft7G,aAAa29qB,EAAsBlvd,oBACnCnzG,EAASA,EAAOv2H,OAAO29nB,EAA4B1inB,EAAEs7G,SAGrDA,EAAO3rI,KAAKqwB,KAMhC,GAAIs7G,EACA,MAAM,IAAIqikB,EAAsBlvd,oBAAoBnzG,KAG5DwV,EAAaryH,UAAU7vB,IAAM,SAAU+zoB,GACnC,IAAI5iiB,EAAe4iiB,EACnB,IAAKA,EACD,OAAO7xf,EAAa79H,MAExB,cAAe0vnB,GACX,IAAK,WACD5iiB,EAAe,IAAI+wC,EAAa6xf,GACpC,IAAK,SACD,GAAI5iiB,IAAiBh0G,MAAQg0G,EAAaxsF,QAA8C,mBAA7BwsF,EAAap+F,YACpE,OAAOo+F,EAEN,GAAIh0G,KAAKwnB,OAEV,OADAwsF,EAAap+F,cACNo+F,EAEN,KAAMA,aAAwB+wC,GAAe,CAC9C,IAAI8xf,EAAM7iiB,GACVA,EAAe,IAAI+wC,GACNkyd,eAAiB,CAAC4/B,GAEnC,MACJ,QACI,MAAM,IAAIxinB,MAAM,yBAA2BuinB,EAAW,2BAG9D,IAAInwe,EAAmBzyD,EAAayyD,iBACpC,GAAyB,OAArBA,EACAzyD,EAAayyD,iBAAmBzmK,UAE/B,GAAIymK,aAA4B1hB,EAAc,CAC/C,GAAI0hB,IAAqBzmK,KACrB,OAAOg0G,EAEXA,EAAayyD,iBAAmB,CAACA,EAAkBzmK,UAElD,KAAwC,IAApCymK,EAAiBx9J,QAAQjJ,MAI9B,OAAOg0G,EAHPyyD,EAAiB7iK,KAAK5D,MAK1B,IAAI+zG,EAAgB/zG,KAAKi3mB,eAOzB,OANsB,OAAlBljgB,EACA/zG,KAAKi3mB,eAAiB,CAACjjgB,GAGvBD,EAAcnwG,KAAKowG,GAEhBA,GAEX+wC,EAAaryH,UAAUlnB,OAAS,SAAUwoG,GACtC,IAAID,EAAgB/zG,KAAKi3mB,eACzB,GAAIljgB,EAAe,CACf,IAAI+iiB,EAAoB/iiB,EAAc9qG,QAAQ+qG,IACnB,IAAvB8iiB,GACA/iiB,EAAcxrE,OAAOuumB,EAAmB,KAIpD/xf,EAAa79H,QAAmBssJ,EAG9B,IAAIzuB,GAFIv9H,QAAS,EACRgsJ,GAEJzuB,EAhIS,I,sCCiChB,E,oCAxBJ,SAAS3Z,IACL,IAAK,IAAIxmH,EAAI,EAAG/c,EAAI,EAAGwjI,EAAK/xH,UAAUnV,OAAQ0D,EAAIwjI,EAAIxjI,IAAK+c,GAAKtL,UAAUzR,GAAG1D,OACxE,IAAI2lI,EAAIv/H,MAAMqa,GAAI43G,EAAI,EAA3B,IAA8B30H,EAAI,EAAGA,EAAIwjI,EAAIxjI,IACzC,IAAK,IAAIkU,EAAIzC,UAAUzR,GAAI0M,EAAI,EAAG+2H,EAAKvvH,EAAE5X,OAAQoQ,EAAI+2H,EAAI/2H,IAAKioH,IAC1DsN,EAAEtN,GAAKzgH,EAAExH,GACjB,OAAOu1H,EAuBX,ICtBI+nkB,EDsBAz+qB,EAAY,GAYZ0+qB,EACH,SAAUA,G,OACPA,EAASA,EAAQ,MAAY,GAAK,QAClCA,EAASA,EAAQ,QAAc,GAAK,UACpCA,EAASA,EAAQ,KAAW,GAAK,OACjCA,EAASA,EAAQ,KAAW,GAAK,OACjCA,EAASA,EAAQ,MAAY,GAAK,QAClCA,EAASA,EAAQ,OAAa,GAAK,SAN5BA,EAAV,CADW,IASRC,EAAoB,CACpB,MAASD,EAASE,MAClB,QAAWF,EAASG,QACpB,KAAQH,EAASI,KACjB,KAAQJ,EAASK,KACjB,MAASL,EAASM,MAClB,OAAUN,EAASO,QAKnBC,EAAkBR,EAASI,KAO3BK,IAAiB,EAAK,IACnBT,EAASE,OAAS,MACrB,EAAGF,EAASG,SAAW,MACvB,EAAGH,EAASI,MAAQ,OACpB,EAAGJ,EAASK,MAAQ,OACpB,EAAGL,EAASM,OAAS,QACrB,GAMAI,EAAoB,SAAU1+qB,EAAU2+qB,GAExC,IADA,IAAI5ysB,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,EAAK,GAAK4J,UAAU5J,GAE7B,KAAI+isB,EAAU3+qB,EAAS4+qB,UAAvB,CAGA,IAAI3mpB,GAAM,IAAIrR,MAAO6F,cACjBqqC,EAAS2nnB,EAAcE,GAC3B,IAAI7nnB,EAIA,MAAM,IAAIv2D,MAAM,8DAAgEo+qB,EAAU,KAH1F1nqB,QAAQ6/C,GAAQjzC,MAAM5M,QAASqgG,EAAe,CAAC,IAAMr/E,EAAM,MAAQj4B,EAAS3yB,KAAO,KAAMtB,MAM7F0rgB,EAAwB,WAOxB,SAASA,EAAOpqgB,GACZnB,KAAKmB,KAAOA,EAIZnB,KAAK2ysB,UAAYL,EAKjBtysB,KAAK4ysB,YAAcJ,EAInBxysB,KAAK6ysB,gBAAkB,KAIvBz/qB,EAAUxvB,KAAK5D,MAqFnB,OAnFAwc,OAAOu3B,eAAew3d,EAAO74e,UAAW,WAAY,CAChDxgB,IAAK,WACD,OAAOlS,KAAK2ysB,WAEhBt+rB,IAAK,SAAUi6B,GACX,KAAMA,KAAOwjqB,GACT,MAAM,IAAIt/pB,UAAU,kBAAqBlE,EAAM,4BAEnDtuC,KAAK2ysB,UAAYrkqB,GAErB2F,YAAY,EACZvW,cAAc,IAGlB6te,EAAO74e,UAAUogrB,YAAc,SAAUxkqB,GACrCtuC,KAAK2ysB,UAA2B,iBAARrkqB,EAAmByjqB,EAAkBzjqB,GAAOA,GAExE9xB,OAAOu3B,eAAew3d,EAAO74e,UAAW,aAAc,CAClDxgB,IAAK,WACD,OAAOlS,KAAK4ysB,aAEhBv+rB,IAAK,SAAUi6B,GACX,GAAmB,mBAARA,EACP,MAAM,IAAIkE,UAAU,qDAExBxyC,KAAK4ysB,YAActkqB,GAEvB2F,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAew3d,EAAO74e,UAAW,iBAAkB,CACtDxgB,IAAK,WACD,OAAOlS,KAAK6ysB,iBAEhBx+rB,IAAK,SAAUi6B,GACXtuC,KAAK6ysB,gBAAkBvkqB,GAE3B2F,YAAY,EACZvW,cAAc,IAKlB6te,EAAO74e,UAAU8oD,MAAQ,WAErB,IADA,IAAI37E,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAEzB1P,KAAK6ysB,iBAAmB7ysB,KAAK6ysB,gBAAgBl7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASE,OAAQnysB,IAChGG,KAAK4ysB,YAAYj7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASE,OAAQnysB,KAExE0rgB,EAAO74e,UAAU+oD,IAAM,WAEnB,IADA,IAAI57E,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAEzB1P,KAAK6ysB,iBAAmB7ysB,KAAK6ysB,gBAAgBl7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASG,SAAUpysB,IAClGG,KAAK4ysB,YAAYj7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASG,SAAUpysB,KAE1E0rgB,EAAO74e,UAAU29C,KAAO,WAEpB,IADA,IAAIxwE,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAEzB1P,KAAK6ysB,iBAAmB7ysB,KAAK6ysB,gBAAgBl7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASI,MAAOrysB,IAC/FG,KAAK4ysB,YAAYj7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASI,MAAOrysB,KAEvE0rgB,EAAO74e,UAAUgxC,KAAO,WAEpB,IADA,IAAI7jE,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAEzB1P,KAAK6ysB,iBAAmB7ysB,KAAK6ysB,gBAAgBl7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASK,MAAOtysB,IAC/FG,KAAK4ysB,YAAYj7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASK,MAAOtysB,KAEvE0rgB,EAAO74e,UAAUsC,MAAQ,WAErB,IADA,IAAIn1B,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAEzB1P,KAAK6ysB,iBAAmB7ysB,KAAK6ysB,gBAAgBl7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASM,OAAQvysB,IAChGG,KAAK4ysB,YAAYj7pB,MAAM33C,KAAMorI,EAAe,CAACprI,KAAM8xsB,EAASM,OAAQvysB,KAEjE0rgB,EA9GiB,GAgH5B,SAASunM,EAAY98mB,GACjB5iE,EAAU/f,QAAQ,SAAUi7S,GACxBA,EAAKwkZ,YAAY98mB,KC3MzB,IAuDI,EAvDA+8mB,IAAUlB,EAAO,IACZ,UAAyB,oFAE9BA,EAAK,gBAAqC,gCAC1CA,EAAK,iBAAuC,iDAC5CA,EAAK,eAAmC,kDACxCA,EAAK,wBAAqD,6EAE1DA,EAAK,wBAAqD,wDAC1DA,GACAmB,EAAgB,IAAI,IAAa,MAAO,WAAYD,GAEpDE,EAAS,gBA4CT//qB,EAAqB,YACrBggrB,IAAuB,EAAK,IACzBD,GAAU,YACb,EA5CS,uBA4CI,iBACb,EA3CS,uBA2CI,iBACb,EA1CS,kBA0CI,YACb,EAzCS,sBAyCI,YACb,EAxCS,uBAwCI,UACb,EAvCS,2BAuCI,WACb,EAtCS,uBAsCI,WACb,EArCS,yBAqCI,YACb,EApCS,2BAoCI,UACb,EAnCS,qBAmCI,WACb,EAlCS,uBAkCI,WACb,EAAG,WAAa,UAChB,EAlCO,oBAkCI,cACX,GAkBAl6T,EAAS,IAAIwyH,EAAO,iBAsBpB,EAAiC,WACjC,SAAS4nM,EAAgBnrrB,EAASoQ,EAAQg7qB,GACtC,IAAI1xpB,EAAQ1hD,KACZA,KAAKozsB,UAAYA,EACjBpzsB,KAAKqzsB,YAAa,EAClBrzsB,KAAKszsB,MAAQl7qB,EAAOj3B,KACpBnB,KAAKuzsB,gCACDn7qB,EAAOo7qB,iCAAkC,EAC7CxzsB,KAAKyzsB,SAAW,YAASzrrB,GACzBhoB,KAAKqY,UAAY,IAAI,IAAmB+f,EAAOj3B,MAE/CnB,KAAK0zsB,cAAc,IAAI,IAAU,MAAO,WAAc,OAAOhypB,GAAU,WAEvE1hD,KAAKozsB,UAAU59qB,SAASq+U,WAAWxgW,QAAQ,SAAU4L,GACjD,OAAOyiC,EAAMgypB,cAAcz0rB,KAuHnC,OApHAzC,OAAOu3B,eAAeo/pB,EAAgBzgrB,UAAW,iCAAkC,CAC/ExgB,IAAK,WAED,OADAlS,KAAK2zsB,kBACE3zsB,KAAKuzsB,iCAEhBl/rB,IAAK,SAAUi6B,GACXtuC,KAAK2zsB,kBACL3zsB,KAAKuzsB,gCAAkCjlqB,GAE3C2F,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeo/pB,EAAgBzgrB,UAAW,OAAQ,CACrDxgB,IAAK,WAED,OADAlS,KAAK2zsB,kBACE3zsB,KAAKszsB,OAEhBr/pB,YAAY,EACZvW,cAAc,IAElBlhB,OAAOu3B,eAAeo/pB,EAAgBzgrB,UAAW,UAAW,CACxDxgB,IAAK,WAED,OADAlS,KAAK2zsB,kBACE3zsB,KAAKyzsB,UAEhBx/pB,YAAY,EACZvW,cAAc,IAElBy1qB,EAAgBzgrB,UAAUngB,OAAS,WAC/B,IAAImvC,EAAQ1hD,KACZ,OAAO,IAAIuE,QAAQ,SAAUC,GACzBk9C,EAAMiypB,kBACNnvsB,MAEC6Z,KAAK,WAEN,OADAqjC,EAAM0xpB,UAAU59qB,SAASo+qB,UAAUlypB,EAAM4xpB,OAClC/usB,QAAQ+wB,IAAIosB,EAAMrpC,UAAU2e,eAAevtB,IAAI,SAAUotB,GAAY,OAAOA,EAAStkB,cAE3F8L,KAAK,WACNqjC,EAAM2xpB,YAAa,KAiB3BF,EAAgBzgrB,UAAUmhrB,YAAc,SAAU1ysB,EAAM6yB,GACpD,IAAIrpB,OACuB,IAAvBqpB,IAAiCA,EAAqBd,GAC1DlzB,KAAK2zsB,kBAEL,IAAI98qB,EAAW72B,KAAKqY,UAAUye,YAAY31B,GAM1C,OALK01B,EAASjD,iBACqF,cAA3D,QAAlCjpB,EAAKksB,EAASvC,sBAAmC,IAAP3pB,OAAgB,EAASA,EAAG6nB,oBACxEqE,EAAShB,aAGNgB,EAAS1C,aAAa,CACzBX,WAAYQ,KAapBm/qB,EAAgBzgrB,UAAUohrB,uBAAyB,SAAU3ysB,EAAM6yB,QACpC,IAAvBA,IAAiCA,EAAqBd,GAE1DlzB,KAAKqY,UAAUye,YAAY31B,GAAMg0B,cAAcnB,IAKnDm/qB,EAAgBzgrB,UAAUghrB,cAAgB,SAAUz0rB,GAChD,IACIjf,KAAKqY,UAAUue,aAAa3X,GAEhC,MAAOgV,GACH8kX,EAAOv9T,MAAM,aAAev8D,EAAU9d,KAAO,wCAA0CnB,KAAKmB,KAAM8yB,KAG1Gk/qB,EAAgBzgrB,UAAUqhrB,yBAA2B,SAAU90rB,GAC3Djf,KAAKqY,UAAU0e,wBAAwB9X,IAE3Ck0rB,EAAgBzgrB,UAAU62C,OAAS,WAC/B,MAAO,CACHpoE,KAAMnB,KAAKmB,KACXqysB,+BAAgCxzsB,KAAKwzsB,+BACrCxrrB,QAAShoB,KAAKgoB,UAOtBmrrB,EAAgBzgrB,UAAUihrB,gBAAkB,WACxC,GAAI3zsB,KAAKqzsB,WACL,MAAML,EAAc1tsB,OAAO,cAAiC,CAAE0usB,QAASh0sB,KAAKszsB,SAG7EH,EArI0B,GAyIpC,EAAgBzgrB,UAAUvxB,MAAQ,EAAgBuxB,UAAU1K,SACzD,EAAgB0K,UAAUngB,QAC1Bw4B,QAAQ0wC,IAAI,MAsQhB,IAAIw4nB,EAjBJ,SAASC,IACL,IAAIn0b,EA3NR,SAAqCo0b,GACjC,IAAInqD,EAAO,GAEPn2S,EAAa,IAAIpmW,IAEjBsyQ,EAAY,CAIZq0b,YAAY,EACZnqD,cAmDJ,SAAuBjioB,EAASqsrB,QACV,IAAdA,IAAwBA,EAAY,IACf,iBAAdA,GAAwC,OAAdA,IAEjCA,EAAY,CAAElzsB,KADDkzsB,IAGjB,IAAIj8qB,EAASi8qB,OACO5vsB,IAAhB2zB,EAAOj3B,OACPi3B,EAAOj3B,KAAO+xB,GAElB,IAAI/xB,EAAOi3B,EAAOj3B,KAClB,GAAoB,iBAATA,IAAsBA,EAC7B,MAAM6xsB,EAAc1tsB,OAAO,eAAmC,CAC1D0usB,QAAS3kqB,OAAOluC,KAGxB,GAAI,YAAS6opB,EAAM7opB,GACf,MAAM6xsB,EAAc1tsB,OAAO,gBAAqC,CAAE0usB,QAAS7ysB,IAE/E,IAAIilI,EAAM,IAAI+tkB,EAAgBnsrB,EAASoQ,EAAQ2nP,GAE/C,OADAiqY,EAAK7opB,GAAQilI,EACNA,GAtEPA,IAAKA,EACL8yG,gBAwIJ,SAAyBo7d,EAAkBvqhB,EAASwqhB,GAChD,IAAI5psB,EAGA6psB,EAA2D,QAAhD7psB,EAAKuosB,EAAoBoB,UAAsC,IAAP3psB,EAAgBA,EAAK2psB,EACxFC,IACAC,GAAW,IAAMD,GAErB,IAAIE,EAAkBD,EAAQljqB,MAAM,SAChCojqB,EAAkB3qhB,EAAQz4I,MAAM,SACpC,GAAImjqB,GAAmBC,EAAiB,CACpC,IAAI58a,EAAU,CACV,+BAAkC08a,EAAU,mBAAuBzqhB,EAAU,MAYjF,OAVI0qhB,GACA38a,EAAQl0R,KAAK,iBAAoB4wsB,EAAU,qDAE3CC,GAAmBC,GACnB58a,EAAQl0R,KAAK,OAEb8wsB,GACA58a,EAAQl0R,KAAK,iBAAoBmmL,EAAU,0DAE/CgvN,EAAOr1U,KAAKo0N,EAAQ9nP,KAAK,MAG7Bwra,EAAkB,IAAI,IAAUg5P,EAAU,WAAY,WAAc,MAAQ,CAAEA,QAASA,EAASzqhB,QAASA,IAAe,aAjKxH+ohB,YAAaA,EACb6B,MAkKJ,SAAeC,EAAa5srB,GACxB,GAAoB,OAAhB4srB,GAA+C,mBAAhBA,EAC/B,MAAM5B,EAAc1tsB,OAAO,yBD3PvC,SAA2BsvsB,EAAa5srB,GAmDpC,IAlDA,IAAI2zW,EAAU,SAAU7nW,GACpB,IAAI+grB,EAAiB,KACjB7srB,GAAWA,EAAQguE,QACnB6+mB,EAAiB9C,EAAkB/prB,EAAQguE,QAG3CliE,EAASghrB,eADO,OAAhBF,EAC0B,KAGA,SAAU9grB,EAAUkiE,GAE1C,IADA,IAAIn2F,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,EAAK,GAAK4J,UAAU5J,GAE7B,IAAIsqB,EAAUn6B,EACT4J,IAAI,SAAUmuC,GACf,GAAW,MAAPA,EACA,OAAO,KAEN,GAAmB,iBAARA,EACZ,OAAOA,EAEN,GAAmB,iBAARA,GAAmC,kBAARA,EACvC,OAAOA,EAAI3lB,WAEV,GAAI2lB,aAAevjB,MACpB,OAAOujB,EAAI5d,QAGX,IACI,OAAOR,KAAKC,UAAUme,GAE1B,MAAOm9pB,GACH,OAAO,QAId5/rB,OAAO,SAAUyiC,GAAO,OAAOA,IAC/B5H,KAAK,KACNgmD,IAAU6+mB,QAAuDA,EAAiB/grB,EAAS4+qB,WAC3FkC,EAAY,CACR5+mB,MAAO87mB,EAAS97mB,GAAOp5E,cACvBod,QAASA,EACTn6B,KAAMA,EACNa,KAAMozB,EAAS3yB,SAM1BuO,EAAK,EAAGslsB,EAAc5hrB,EAAW1jB,EAAKslsB,EAAY7wsB,OAAQuL,IAE/DisX,EADeq5U,EAAYtlsB,ICyM3BulsB,CAAkBL,EAAa5srB,IApK/BgioB,KAAM,KACNzkhB,YA3CM,SA4CN/vG,SAAU,CACNgmb,kBAAmBA,EACnBo4P,UAyBR,SAAmBzysB,UACR6opB,EAAK7opB,IAzBR0yW,WAAYA,EACZqhW,aAkKR,SAAsB9ukB,EAAKjlI,GACvB,MAAa,eAATA,EACO,KAEMA,KAzIrB,SAASilI,EAAIjlI,GAET,GADAA,EAAOA,GAAQ+xB,GACV,YAAS82nB,EAAM7opB,GAChB,MAAM6xsB,EAAc1tsB,OAAO,SAAuB,CAAE0usB,QAAS7ysB,IAEjE,OAAO6opB,EAAK7opB,GAkChB,SAASq6c,EAAkBv8b,GACvB,IAAI46X,EAAgB56X,EAAU9d,KAC9B,GAAI0yW,EAAWz/V,IAAIylY,GAEf,OADAd,EAAOv9T,MAAM,sDAAwDq+T,EAAgB,KAC3D,WAAnB56X,EAAUve,KAETq/Q,EAAU85H,GACZ,KAIV,GAFAhmC,EAAWx/V,IAAIwlY,EAAe56X,GAEP,WAAnBA,EAAUve,KAAgC,CAE1C,IAAIy0sB,EAAmB,SAAUC,GAG7B,QAFe,IAAXA,IAAqBA,EAAShvkB,KAEG,mBAA1BgvkB,EAAOv7T,GAGd,MAAMm5T,EAAc1tsB,OAAO,uBAAmD,CAC1E0usB,QAASn6T,IAKjB,OAAOu7T,EAAOv7T,WAGap1Y,IAA3Bwa,EAAUsT,cACV,YAAW4irB,EAAkBl2rB,EAAUsT,cAG3CwtP,EAAU85H,GAAiBs7T,EAG3BhB,EAAgBzhrB,UAAUmnX,GAItB,WAEI,IADA,IAAIh6Y,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAGzB,OADiB1P,KAAK6zsB,YAAYtpqB,KAAKvqC,KAAM65Y,GAC3BliW,MAAM33C,KAAMif,EAAUqT,kBAAoBzyB,EAAO,KAI/E,IAAK,IAAI6P,EAAK,EAAG/E,EAAK6R,OAAOC,KAAKutoB,GAAOt6oB,EAAK/E,EAAGxG,OAAQuL,IAErDs6oB,EADcr/oB,EAAG+E,IACHgksB,cAAcz0rB,GAEhC,MAA0B,WAAnBA,EAAUve,KAETq/Q,EAAU85H,GACZ,KA6CV,OA3JA95H,EAAS,QAAcA,EAEvBvjQ,OAAOu3B,eAAegsO,EAAW,OAAQ,CACrC7tQ,IA+CJ,WAEI,OAAOsK,OAAOC,KAAKutoB,GAAMvgpB,IAAI,SAAUtI,GAAQ,OAAO6opB,EAAK7opB,QA7B/DilI,EAAG,IAAU+tkB,EAoINp0b,EA2BSs1b,CAA4B,GAc5C,OAbAt1b,EAAUvqP,SAAW,YAAS,YAAS,GAAIuqP,EAAUvqP,UAAW,CAAE0+qB,wBAAyBA,EACvFoB,gBASJ,SAAyBvirB,GACrB,YAAWgtP,EAAWhtP,IATtB4inB,gBAAiB,IACjBL,aAAc,IACdN,WAAY,MASTj1X,EAEMm0b,GAkBbqB,EAAuC,WACvC,SAASA,EAAsBl9rB,GAC3BrY,KAAKqY,UAAYA,EAqBrB,OAjBAk9rB,EAAsB7irB,UAAU8irB,sBAAwB,WAIpD,OAHgBx1sB,KAAKqY,UAAU2e,eAI1BvtB,IAAI,SAAUotB,GACf,GAqBZ,SAAkCA,GAC9B,IAAI5X,EAAY4X,EAASvC,eACzB,MAAkF,aAA1ErV,aAA6C,EAASA,EAAUve,MAvB5D+0sB,CAAyB5+qB,GAAW,CACpC,IAAItB,EAAUsB,EAAS1C,eACvB,OAAOoB,EAAQi/qB,QAAU,IAAMj/qB,EAAQw0J,QAGvC,OAAO,OAGV50K,OAAO,SAAUugsB,GAAa,OAAOA,IACrC1lqB,KAAK,MAEPulqB,EAvBgC,GAgF3C,GAAI,oBAAiC9wsB,IAAlBw0O,KAAKz9D,SAAwB,CAC5Cu9N,EAAOr1U,KAAK,mIAEZ,IAAIiyoB,EAAa18d,KAAKz9D,SAASj2C,YAC3BowkB,GAAcA,EAAW1ssB,QAAQ,SAAW,GAC5C8vY,EAAOr1U,KAAK,sNAGpB,IAAI,EAAgBuwoB,EAAWhqD,cAI/BgqD,EAAWhqD,cAAgB,WAEvB,IADA,IAAIpqpB,EAAO,GACF6P,EAAK,EAAGA,EAAK4J,UAAUnV,OAAQuL,IACpC7P,EAAK6P,GAAM4J,UAAU5J,GAQzB,OAHI,eACAqpY,EAAOr1U,KAAK,2pBAET,EAAc/rB,WAAMlzC,EAAW5E,IAE1C,IAnDgC27K,EAmD5B,EAAWy4hB,GAnDiBz4hB,EAoDT,GAnDVhmJ,SAASgmb,kBAAkB,IAAI,IAAU,kBAAmB,SAAUnjc,GAAa,OAAO,IAAIk9rB,EAAsBl9rB,IAAe,YAE5ImjK,EAAS09D,gBAAgB+5d,EA/jBb,cA4jB0BsB,GAKtC/4hB,EAAS09D,gBAAgB,UAAW,IAiDzB,O,0JCppBT,SAAUlqN,EAAK9X,GACjB,OAAO,SAACqP,GAAD,OAAYA,EAAO8V,KAAK,IAAIu5qB,EAAa1+rB,K,IAE9C0+rB,E,8BACF,WAAYh5hB,GAAK,oBACb58K,KAAK48K,MAAQA,G,mBAEjB,SAAKrgJ,EAAYhW,GACb,OAAOA,EAAOriB,UAAU,IAAI2xsB,EAAet5qB,EAAYv8B,KAAK48K,Y,GAG9Di5hB,E,YACF,WAAYp5qB,EAAamgJ,GAAK,M,MAAA,2B,EAC1B,K,EAAA,E,EAAA,CAAMngJ,G,kBAAN,E,iGACKmgJ,MAAQA,EACb,EAAK1lK,MAAQ,EAHa,E,0DAK9B,SAAMqkB,KACIv7B,KAAKkX,MAAQlX,KAAK48K,OACpB58K,KAAKy8B,YAAY54B,KAAK03B,O,CARL,M,qcCRvB,E,8BACF,WAAY8E,EAAWoqG,EAASlkH,GAAM,oBAClCvmB,KAAKqgC,UAAYA,EACjBrgC,KAAKyqI,QAAUA,EACfzqI,KAAKumB,OAASA,G,mBAElB,SAAK6lB,EAAU7lB,GACX,OAAOA,EAAOriB,UAAU,IAAI,EAAgBkoC,EAAUpsC,KAAKqgC,UAAWrgC,KAAKyqI,QAASzqI,KAAKumB,a,GAG3F,E,YACF,WAAYkW,EAAa4D,EAAWoqG,EAASlkH,GAAM,M,MAAA,2B,EAC/C,K,EAAA,E,EAAA,CAAMkW,G,kBAAN,E,iGACK4D,UAAYA,EACjB,EAAKoqG,QAAUA,EACf,EAAKlkH,OAASA,EACd,EAAK5c,MAAQ,EACb,EAAK8gI,QAAUA,GAAW,EANqB,E,mEAQnD,SAAeqrkB,GACX91sB,KAAKy8B,YAAY54B,KAAKiysB,GACtB91sB,KAAKy8B,YAAY34B,a,mBAErB,SAAMvC,GACF,IAAIq7B,GAAS,EACb,IACIA,EAAS58B,KAAKqgC,UAAUnL,KAAKl1B,KAAKyqI,QAASlpI,EAAOvB,KAAK2J,QAAS3J,KAAKumB,QAEzE,MAAOoW,GAEH,YADA38B,KAAKy8B,YAAYzH,MAAM2H,GAGtBC,GACD58B,KAAK4rV,gBAAe,K,uBAG5B,WACI5rV,KAAK4rV,gBAAe,O,CA3BE5lL,EAAA,G,gDCFxB+viB,EACM,SADNA,EAEI,O,iBAOJC,E,YACF,iCACIh2sB,KAAKi2sB,iBAAmB,IAAIvnsB,EAAA,EAAgB,IAC5C1O,KAAKk2sB,YAAcl2sB,KAAKi2sB,iBAAiBh+qB,iB,OAGjD+9qB,EAAiCz1sB,UAAO,SAAkDC,GAAK,OAAO,IAAKA,GAAKw1sB,IAChHA,EAAiCpxsB,WAAQ,KAA0B,CAAEC,MAAOmxsB,EAAkClxsB,QAASkxsB,EAAiCz1sB,Y,KAYlJ41sB,EAA0B,IAAI,IAAe,2B,iBAC7CC,E,8BAKF,aAA+C,IAAnC3vD,EAAmC,wDAAlB4vD,EAAkB,2DAC3Cr2sB,KAAKympB,QAAUA,EACfzmpB,KAAKq2sB,mBAAqBA,EAC1Br2sB,KAAKi2sB,iBAAmBj2sB,KAAKympB,QAAU,IAAI/3oB,EAAA,EAAgB,IAAM1O,KAAKq2sB,mBAAmBJ,iBACzFj2sB,KAAKk2sB,YAAcl2sB,KAAKi2sB,iBAAiBh+qB,eACzCj4B,KAAKs2sB,4BAA8Bt2sB,KAAKympB,aAAUhipB,EAAYzE,KAAKq2sB,mBAAmBC,4BACtFt2sB,KAAKu2sB,8BAAgCv2sB,KAAKympB,aAAUhipB,EAAYzE,KAAKq2sB,mBAAmBE,+B,6CAM5F,SAA+Bp1sB,GACvBnB,KAAKympB,QACLzmpB,KAAKs2sB,4BAA8Bt2sB,KAAKw2sB,mBAAmBr1sB,IAG3DnB,KAAKq2sB,mBAAmBC,4BAA8Bt2sB,KAAKw2sB,mBAAmBr1sB,GAC9EnB,KAAKs2sB,4BAA8Bt2sB,KAAKq2sB,mBAAmBC,+B,8CAOnE,SAAiCn1sB,GACzBnB,KAAKympB,QACLzmpB,KAAKu2sB,8BAAgCv2sB,KAAKw2sB,mBAAmBr1sB,IAG7DnB,KAAKq2sB,mBAAmBE,8BAAgCv2sB,KAAKw2sB,mBAAmBr1sB,GAChFnB,KAAKu2sB,8BAAgCv2sB,KAAKq2sB,mBAAmBE,iC,mCAQrE,SAAsB55rB,EAAKs6B,GACvBj3C,KAAKi2sB,iBAAiB10sB,MAAMob,GAAOs6B,I,yBAMvC,SAAYt6B,GACR,OAAO3c,KAAKi2sB,iBAAiB10sB,MAAMob,K,8BAKvC,WACI,OAAO3c,KAAKi2sB,iBAAiB10sB,Q,gCAOjC,SAAmBJ,GACf,GAAInB,KAAKi2sB,iBAAiB10sB,MAAMJ,IAASnB,KAAKy2sB,qBAAqBt1sB,GAC/D,OAAOA,EAGP,MAAM,IAAIkzB,MAAJ,eAAkBlzB,EAAlB,6C,kCAQd,SAAqB+uB,GACjB,OAAOA,IAAa6lrB,GAA2C7lrB,IAAa6lrB,M,UAGpFK,EAAmC71sB,UAAO,SAAoDC,GAAK,OAAO,IAAKA,GAAK41sB,GAAoC,KAAgBD,GAA0B,KAAgB,KAClNC,EAAmCxxsB,WAAQ,KAA0B,CAAEC,MAAOuxsB,EAAoCtxsB,QAASsxsB,EAAmC71sB,Y,sBAiBxJm2sB,E,YACF,iCACI12sB,KAAK22sB,kBAAoB,IAAIjosB,EAAA,EAAgB,IAC7C1O,KAAK42sB,aAAe52sB,KAAK22sB,kBAAkB1+qB,iB,OAGnDy+qB,EAAoBn2sB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKk2sB,IACtFA,EAAoB9xsB,WAAQ,KAA0B,CAAEC,MAAO6xsB,EAAqB5xsB,QAAS4xsB,EAAoBn2sB,Y,KAejH,SAAS0rK,EAAW4qiB,GAGhB,QAASA,GAAmBA,aAA2Bl/hB,UAAuD,sBADhG,GAC6D1lJ,SAASiD,KAAK2hrB,GAM7F,SAASn4d,EAAcn9O,GACnB,GAA8C,oBAA1Cib,OAAOkW,UAAUT,SAASiD,KAAK3zB,GAC/B,OAAO,EAIP,IAAImxB,EAAYlW,OAAO24H,eAAe5zI,GACtC,OAAqB,OAAdmxB,GAAsBA,IAAclW,OAAOkW,UAO1D,SAAS4rN,EAAS/8O,GACd,QAASA,GAA0B,iBAAVA,EAM7B,SAAS88O,EAAU98O,GACf,MAAwB,kBAAVA,EAalB,SAASu1sB,GAAcv1sB,GACnB,OAAIgJ,MAAMyL,QAAQzU,GACPA,EAAM4C,OAAS,IAEjB5C,EAMb,SAASw1sB,GAAuBx1sB,GAC5B,OAAI+8O,EAAS/8O,GACF,CAACA,GAELA,EAQX,IAAMy1sB,GAAwB,IAAI,IAAe,yB,kBAC3CC,E,8BAKF,aAA6C,IAAjCxwD,EAAiC,wDAAhBywD,EAAgB,2DACzCl3sB,KAAKympB,QAAUA,EACfzmpB,KAAKk3sB,iBAAmBA,EACxBl3sB,KAAK22sB,kBAAoBlwD,EAAU,IAAI/3oB,EAAA,EAAgB,IAAMwosB,EAAiBP,kBAC9E32sB,KAAK42sB,aAAe52sB,KAAK22sB,kBAAkB1+qB,gB,+BAM/C,WACIj4B,KAAK22sB,kBAAkB9ysB,KAAK,M,2BAMhC,SAAcijI,GACV,OAAKA,GAAev8H,MAAMyL,QAAQ8wH,IAAqC,IAAtBA,EAAW3iI,OACjDI,QAAQC,SAAQ,IAE3BsiI,EAAaiwkB,GAAuBjwkB,GAC7B9mI,KAAKm3sB,mBAAmBrwkB,M,6BAOnC,SAAgBG,EAAamwkB,GAAkB,WAErCC,EAAiBpwkB,EAAYxxH,OAKnC,SAAC8Q,EAAQgjH,GAAT,OAAe,EAAK+tkB,iBAAiB/wrB,EAAQgjH,EAAG6tkB,IAAsB,IACtEp3sB,KAAK22sB,kBAAkB9ysB,KAAKwzsB,K,2BAOhC,SAAcvwkB,EAAYswkB,GAAkB,WACxC,GAAI7ssB,MAAMyL,QAAQ8wH,GAAa,CAE3B,IAAMG,EAAcH,EAAWrxH,OAK/B,SAAC8Q,EAAQgjH,GAAT,OAAe,EAAK+tkB,iBAAiB/wrB,EAAQgjH,EAAG6tkB,IAAsBp3sB,KAAK22sB,kBAAkBp1sB,OAC7FvB,KAAK22sB,kBAAkB9ysB,KAAKojI,OAE3B,CAED,IAAM,EAAcjnI,KAAKs3sB,iBAAiBt3sB,KAAK22sB,kBAAkBp1sB,MAAOulI,EAAYswkB,GACpFp3sB,KAAK22sB,kBAAkB9ysB,KAAK,M,8BAOpC,SAAiB0zsB,GAEb,IAAMtwkB,EAAczqH,OAAOuqB,OAAO,GAAI/mC,KAAK22sB,kBAAkBp1sB,cACtD0lI,EAAYswkB,GACnBv3sB,KAAK22sB,kBAAkB9ysB,KAAKojI,K,2BAMhC,SAAc9lI,GACV,OAAOnB,KAAK22sB,kBAAkBp1sB,MAAMJ,K,4BAKxC,WACI,OAAOnB,KAAK22sB,kBAAkBp1sB,Q,8BASlC,SAAiBglB,EAAQplB,EAAMi2sB,GAC3B,OAAMA,GAAsBnriB,EAAWmriB,GAC5B56rB,OAAOuqB,OAAO,GAAIxgB,EAAlB/J,OAAA,IAAAA,CAAA,GAA6Brb,EAAO,CAAEA,OAAMi2sB,wBAG5C56rB,OAAOuqB,OAAO,GAAIxgB,EAAlB/J,OAAA,IAAAA,CAAA,GAA6Brb,EAAO,CAAEA,Y,gCAQrD,SAAmB8lI,GAAW,WAEpBgxQ,EAAWhxQ,EAAYx9H,IAI7B,SAACkT,GACG,GAAI,EAAK66rB,gCAAgC76rB,GAAM,CAE3C,IAAM86rB,EAAiBj7rB,OAAOuqB,OAAO,GAAI,EAAK4vqB,kBAAkBp1sB,OAE1D61sB,EAAwC,EAAKT,kBAAkBp1sB,MAAMob,GAAKy6rB,mBAChF,OAAO,OAAAnhsB,EAAA,GAAG,MAAMjS,KAAK,OAAAyF,EAAA,GAGrB,kBAAM2tsB,EAAmBz6rB,EAAK86rB,KAAmB,OAAAv0kB,EAAA,GAIjD,SAAChvG,GAAD,OAAamqN,EAAUnqN,GACnB,OAAAje,EAAA,GAAsBie,GAAgCA,IAAa,OAAAuzG,EAAA,GAGvE,kBAAM,OAAAxxH,EAAA,IAAG,MAGb,OAAO,OAAAA,EAAA,KAAK,EAAK0gsB,kBAAkBp1sB,MAAMob,MAE7C,OAAO,OAAArY,EAAA,GAAK2zY,GAAUj0Y,KAAK,OAAA0oM,EAAA,KAAY,OAAA1qM,EAAA,GAIvC,SAAC8N,GAAD,OAAmB,IAATA,IAAiB,GAAQ,OAAArG,EAAA,GAInC,SAACqG,GAAD,OAAmB,IAATA,KAAiCg4J,YAAYzpJ,KAIvD,SAACvO,GAAD,OAAUA,M,6CAOd,SAAgC6M,GAC5B,QAAS3c,KAAK22sB,kBAAkBp1sB,MAAMob,MAChC3c,KAAK22sB,kBAAkBp1sB,MAAMob,GAAKy6rB,oBACpCnriB,EAAWjsK,KAAK22sB,kBAAkBp1sB,MAAMob,GAAKy6rB,wB,UAGzDH,EAAsB12sB,UAAO,SAAuCC,GAAK,OAAO,IAAKA,GAAKy2sB,GAAuB,KAAgBD,IAAwB,KAAgB,KACzKC,EAAsBrysB,WAAQ,KAA0B,CAAEC,MAAOoysB,EAAuBnysB,QAASmysB,EAAsB12sB,Y,KAiBjH,G,YACF,iCACIP,KAAK03sB,YAAc,IAAIhpsB,EAAA,EAAgB,IACvC1O,KAAK23sB,OAAS33sB,KAAK03sB,YAAYz/qB,iBASjC2/qB,GAAkB,IAAI,IAAe,mB,kBACrCC,E,8BAMF,aAA2D,IAA/CpxD,EAA+C,wDAA9BqxD,EAA8B,uCAAlBC,EAAkB,2DACvD/3sB,KAAKympB,QAAUA,EACfzmpB,KAAK83sB,WAAaA,EAClB93sB,KAAK+3sB,mBAAqBA,EAC1B/3sB,KAAK03sB,YAAc13sB,KAAKympB,QAAU,IAAI/3oB,EAAA,EAAgB,IAAM1O,KAAK83sB,WAAWJ,YAC5E13sB,KAAK23sB,OAAS33sB,KAAK03sB,YAAYz/qB,gB,sBAOnC,SAAQ92B,EAAMi2sB,GAEV,IAAMpwY,EAAQxqT,OAAOuqB,OAAO,GAAI/mC,KAAK03sB,YAAYn2sB,MAAnCib,OAAA,IAAAA,CAAA,GAA6Crb,EAAO,CAAEA,OAAMi2sB,wBAC1Ep3sB,KAAK03sB,YAAY7zsB,KAAKmjU,K,sBAM1B,SAASgxY,GAAQ,WACbx7rB,OAAOC,KAAKu7rB,GAAU3ksB,QAKtB,SAACsJ,EAAKhT,GACF,EAAKsusB,QAAQt7rB,EAAKq7rB,EAASr7rB,Q,wBAMnC,WACI3c,KAAK03sB,YAAY7zsB,KAAK,M,wBAM1B,SAAWq0sB,GAEP,IAAIlxY,EAAQxqT,OAAOuqB,OAAO,GAAI/mC,KAAK03sB,YAAYn2sB,cACxCylU,EAAMkxY,GACbl4sB,KAAK03sB,YAAY7zsB,KAAKmjU,K,sBAK1B,WACI,OAAOhnU,KAAK03sB,YAAYn2sB,Q,qBAM5B,SAAQJ,GACJ,OAAOnB,KAAK03sB,YAAYn2sB,MAAMJ,K,0BAMlC,SAAas9rB,GAGT,OADsBA,GAAUl0rB,MAAMyL,QAAQyorB,IAA2B,IAAjBA,EAAMt6rB,OAEnDI,QAAQC,SAAQ,IAC3Bi6rB,EAAQsY,GAAuBtY,GACxBl6rB,QAAQ+wB,IAAI,CAACt1B,KAAKm4sB,WAAW1Z,GAAQz+rB,KAAKo4sB,kBAAkBp4sB,KAAK03sB,YAAYn2sB,MAAOk9rB,KACtFpgrB,KAIL,YAA+B,uBAC3B,OAD2B,gB,wBASnC,SAAW65rB,GAAQ,WAETjgU,EAAWigU,EAASzusB,IAI1B,SAACkT,GAKG,GAHgC,EAAK+6rB,YAAYn2sB,MAAMob,IACjD,EAAK+6rB,YAAYn2sB,MAAMob,GAAKy6rB,oBAC9BnriB,EAAW,EAAKyriB,YAAYn2sB,MAAMob,GAAKy6rB,qBAlUA,qBAA5C56rB,OAAOkW,UAAUT,SAASiD,KAmUe,EAAKwirB,YAAYn2sB,MAAMob,GAAKy6rB,oBAAqB,CAErF,IAAMA,EAAwC,EAAKM,YAAYn2sB,MAAMob,GAAKy6rB,mBAEpEK,EAAiBj7rB,OAAOuqB,OAAO,GAAI,EAAK2wqB,YAAYn2sB,OAC1D,OAAO,OAAA0U,EAAA,GAAG,MAAMjS,KAAK,OAAAyF,EAAA,GAGrB,kBAAM2tsB,EAAmBz6rB,EAAK86rB,KAAmB,OAAAv0kB,EAAA,GAIjD,SAAChvG,GAAD,OAAamqN,EAAUnqN,GACnB,OAAAje,EAAA,GAAsBie,GAAgCA,IAAa,OAAAuzG,EAAA,GAGvE,kBAAM,OAAAxxH,EAAA,IAAG,MAEb,OAAO,OAAAA,EAAA,IAAG,KAEd,OAAO,OAAA3R,EAAA,GAAK2zY,GAAUj0Y,KAAK,OAAA0oM,EAAA,KAAY,OAAA1qM,EAAA,GAIvC,SAAC8N,GAAD,OAAmB,IAATA,IAAiB,GAAQ,OAAArG,EAAA,GAInC,SAACqG,GAAD,OAAmB,IAATA,KAAkBg4J,YAAYzpJ,KAIxC,SAACvO,GAAD,OAAUA,M,+BAQd,SAAkBk3T,EAAOqxY,GAAS,WAC9B,OAAO,OAAA/zsB,EAAA,GAAK+zsB,GAAWr0sB,KAAK,OAAA0jI,EAAA,GAI5B,SAAC/qH,GACG,OAAIqqT,EAAMrqT,IAAQpS,MAAMyL,QAAQgxT,EAAMrqT,GAAKy6rB,oBAChC,OAAA9ysB,EAAA,GAAwB0iU,EAAMrqT,GAAKy6rB,oBAAsBpzsB,KAAK,OAAA0jI,EAAA,GAIrE,SAACZ,GAAD,OAAgB,EAAKixkB,mBAAmBO,cAAcxxkB,MD9jBhDzmG,ECkkBN,SAACk4qB,GAAD,OAAuC,IAAnBA,GDjkBzB,SAAChyrB,GAAD,OAAYA,EAAO8V,KAAK,IAAI,EAAcgE,OADpBoqG,EACwClkH,OCmkBtD,OAAAtQ,EAAA,IAAG,GDpkBhB,IAAgBoqB,ICqkBT,OAAAr+B,EAAA,GAIL,SAACs2sB,GAAD,OAAqC,IAAlBA,IAAyB,IAAQxwiB,gB,UAG5D+viB,EAAgBt3sB,UAAO,SAAiCC,GAAK,OAAO,IAAKA,GAAKq3sB,GAAiB,KAAgBD,IAAkB,KAAgB,IAAgB,KAAgB,MACjLC,EAAgBjzsB,WAAQ,KAA0B,CAAEC,MAAOgzsB,EAAiB/ysB,QAAS+ysB,EAAgBt3sB,Y,uBAkB/Fi4sB,E,8BASF,WAAYT,EAAoBU,EAAsBC,EAAcjssB,EAAe0mS,EAAgBvsS,GAAW,oBAC1G5G,KAAK+3sB,mBAAqBA,EAC1B/3sB,KAAKy4sB,qBAAuBA,EAC5Bz4sB,KAAK04sB,aAAeA,EACpB14sB,KAAKyM,cAAgBA,EACrBzM,KAAKmzS,eAAiBA,EACtBnzS,KAAK4G,YAAcA,EACnB5G,KAAK24sB,sBAAwB,IAAI,IACjC34sB,KAAK44sB,wBAA0B,IAAI,IAEnC54sB,KAAK64sB,oBAAsB,G,uBAK/B,WACI74sB,KAAKyM,cAAciE,QACnB1Q,KAAK84sB,2BAA6B94sB,KAAK+4sB,kC,yBAM3C,SAAY9zsB,GAAO,WAET+zsB,EAAc/zsB,EAAO,mBAErBg0sB,EAAgBh0sB,EAAO,qBAC7B,GAAI+zsB,GAAeC,EAAe,CAE9B,GAAID,GAAeA,EAAYz9iB,YAC3B,OACJ,GAAI09iB,GAAiBA,EAAc19iB,YAC/B,OACJ,OAAAl+I,EAAA,GAAMrd,KAAK+3sB,mBAAmBnB,aAAc52sB,KAAK04sB,aAAaf,QACzD3zsB,KAAK,OAAAgrB,EAAA,GAAKhvB,KAAK64sB,qBAAsB,OAAAl0sB,EAAA,GAAK,IAC1CT,UAGL,WACQ4ysB,GAAc,EAAKoC,sBACnB,EAAKC,mCAGLrC,GAAc,EAAKsC,oBACnB,EAAKC,0BAGT,EAAKC,2BAA2B,EAAKC,+B,yBAOjD,WACQv5sB,KAAK84sB,4BACL94sB,KAAK84sB,2BAA2BljsB,gB,2CAOxC,WAA6B,WACzB,OAAO,OAAAyH,EAAA,GAAMrd,KAAK+3sB,mBAAmBnB,aAAc52sB,KAAK04sB,aAAaf,QAChE3zsB,KAAK,OAAAgrB,EAAA,GAAKhvB,KAAK64sB,sBACf30sB,UAGL,WACQ4ysB,GAAc,EAAKoC,sBACnB,EAAKC,mCAGLrC,GAAc,EAAKsC,oBACnB,EAAKC,0BAGT,EAAKC,2BAA2B,EAAKC,8B,8CAO7C,WAAgC,WAC5Bh1sB,QAAQ+wB,IAAI,CAACt1B,KAAK+3sB,mBAAmBO,cAAct4sB,KAAKk5sB,sBAAuBl5sB,KAAK04sB,aAAac,aAAax5sB,KAAKk5sB,wBAC9G76rB,KAIL,YAA6B,uBACzB,GADyB,WAErB,EAAKo7rB,6BAA6B,EAAKC,0BAA4B,EAAKC,wBAD5E,CAIA,GAAM,EAAKP,mBACP,MAAM,EACV,EAAKE,2BAA2B,EAAKM,0BAA4B,EAAKC,oBAAsB,EAAKjzsB,gBACjG82lB,MAGJ,WACU,EAAK07G,mBACP,EAAKC,0BAGL,EAAKC,2BAA2B,EAAKM,0BAA4B,EAAKC,oBAAsB,EAAKjzsB,iB,qCAQ7G,WAAuB,WACnBrC,QAAQ+wB,IAAI,CAACt1B,KAAK+3sB,mBAAmBO,cAAct4sB,KAAKo5sB,oBAAqBp5sB,KAAK04sB,aAAac,aAAax5sB,KAAKo5sB,sBAC5G/6rB,KAIL,YAA+B,kCAEvB,EAAKi7rB,2BAA2B,EAAKQ,wBAA0B,EAAKD,oBAAsB,EAAKjzsB,aAG/F,EAAK6ysB,6BAA6B,EAAKM,wBAA0B,EAAKJ,sBAE1Ej8G,MAGJ,WACI,EAAK+7G,6BAA6B,EAAKM,wBAA0B,EAAKJ,wB,0CAQ9E,SAA6Br5sB,GACrB+9O,EAAUr+O,KAAKg6sB,0BAA4Bh6sB,KAAKg6sB,yBAEpDh6sB,KAAKg6sB,wBAAyB,EAC9Bh6sB,KAAK44sB,wBAAwB12rB,OACzBliB,KAAKi6sB,+BACLj6sB,KAAKk6sB,qCAAqCl6sB,KAAKi6sB,gCAG/Cj6sB,KAAKy4sB,qBAAqBlC,gCAAkCv2sB,KAAKm6sB,mBACjEn6sB,KAAKo6sB,cAAcp6sB,KAAKy4sB,qBAAqBlC,+BAG7Cv2sB,KAAKq6sB,wBAAwB/5sB,M,wCAQrC,SAA2BA,GACnB+9O,EAAUr+O,KAAKg6sB,yBAA2Bh6sB,KAAKg6sB,yBAEnDh6sB,KAAKg6sB,wBAAyB,EAC9Bh6sB,KAAK24sB,sBAAsBz2rB,OACvBliB,KAAKs6sB,6BACLt6sB,KAAKk6sB,qCAAqCl6sB,KAAKs6sB,8BAG/Ct6sB,KAAKy4sB,qBAAqBnC,8BAAgCt2sB,KAAKu6sB,mBAC/Dv6sB,KAAKo6sB,cAAcp6sB,KAAKy4sB,qBAAqBnC,6BAG7Ct2sB,KAAKq6sB,wBAAwB/5sB,M,kDAQrC,SAAqC4vB,GACjC,IAAIouN,EAASpuN,GAIb,OAAI+7I,EAAW/7I,IACXlwB,KAAKq6sB,wBAAwBr6sB,KAAK4G,kBACdspB,EAAYlwB,KAAK4G,mBAFzC,EAHI5G,KAAKo6sB,cAAclqrB,K,qCAc3B,SAAwB5vB,GACpBN,KAAKyM,cAAciE,QACdpQ,IAGLN,KAAKyM,cAAcqK,mBAAmBxW,GACtCN,KAAKmzS,eAAen8R,kB,oCAMxB,WACI,OAAOhX,KAAK85sB,wBACL95sB,KAAK45sB,0BACL55sB,KAAK65sB,oBACL75sB,KAAK4G,c,8BAMhB,WACI,QAAS5G,KAAK05sB,4BAA8B15sB,KAAK25sB,qB,8BAMrD,WACI,QAAS35sB,KAAK45sB,4BAA8B55sB,KAAK65sB,qB,wCAMrD,WACI,OAAO75sB,KAAKw6sB,sCACRx6sB,KAAKy6sB,wCACLz6sB,KAAK06sB,mC,0CAMb,WACI,OAAO16sB,KAAK26sB,wCACR36sB,KAAK46sB,0CACL56sB,KAAK66sB,qC,2BAOb,SAAcnsqB,GACV,GAAIA,IAAQqnqB,EAIZ,GAAIrnqB,IAAQqnqB,EAAZ,CAKA,IAAM7lrB,EAAWlwB,KAAKy4sB,qBAAqBqC,YAAYpsqB,GACvD1uC,KAAKq6sB,wBAAwBr6sB,KAAK4G,aAClCspB,EAASlwB,KAAK4G,kBANV5G,KAAKyM,cAAciE,aAJnB1Q,KAAKq6sB,wBAAwBr6sB,KAAK4G,iB,UAa9C4xsB,EAAwBj4sB,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKg4sB,GAAyB,KAAyB,IAAwB,KAAyB,GAAqC,KAAyB,IAAkB,KAAyB,KAA0B,KAAyB,KAA2B,KAAyB,OACjZA,EAAwB/3sB,UAAO,KAAyB,CAAEC,KAAM83sB,EAAyB73sB,UAAW,CAAC,CAAC,GAAI,qBAAsB,IAAK,CAAC,GAAI,uBAAwB,KAAMwB,OAAQ,CAAEi3sB,mBAAoB,qBAAsBU,uBAAwB,yBAA0BC,uBAAwB,yBAA0Bb,qBAAsB,uBAAwBQ,yBAA0B,2BAA4BE,yBAA0B,2BAA4BC,mBAAoB,qBAAsBF,mBAAoB,qBAAsBa,qCAAsC,uCAAwCG,uCAAwC,yCAA0CC,yCAA0C,2CAA4CH,uCAAwC,yCAA0CI,mCAAoC,qCAAsCH,iCAAkC,oCAAsCv4rB,QAAS,CAAEw2rB,sBAAuB,wBAAyBC,wBAAyB,2BAA6Bt2sB,SAAU,CAAC,Q,uBAuE9nCy4sB,E,8BAMF,WAAYhD,EAAoBW,EAAcnhrB,GAAM,oBAChDv3B,KAAK+3sB,mBAAqBA,EAC1B/3sB,KAAK04sB,aAAeA,EACpB14sB,KAAKu3B,OAASA,G,0BAOlB,SAAYswP,EAAOx/Q,GACf,OAAOrI,KAAKu4sB,eAAe1wb,EAAOx/Q,K,8BAOtC,SAAiB2ysB,EAAY3ysB,GACzB,OAAOrI,KAAKu4sB,eAAeyC,EAAY3ysB,K,qBAM3C,SAAQw/Q,GACJ,OAAO7nR,KAAKu4sB,eAAe1wb,K,4BAQ/B,SAAeA,EAAOx/Q,GAElB,IAEI4+H,EAAcjnI,KAAKi7sB,oBAFGpzb,GAASA,EAAM/3Q,KAA0B+3Q,EAAM/3Q,KAAN,YAA8B,GAErC+3Q,EAAOx/Q,GACnE,OAAIrI,KAAKk7sB,qBAAqBj0kB,EAAYk0kB,QAC/Bn7sB,KAAKo7sB,mCAAmCn0kB,EAAa4gJ,EAAOx/Q,IAEnErI,KAAKk7sB,qBAAqBj0kB,EAAYo0kB,OAC/Br7sB,KAAKs7sB,iCAAiCr0kB,EAAa4gJ,EAAOx/Q,K,iCAWzE,SAAoBkzsB,EAAiB1zb,EAAOx/Q,GAExC,IAAI4+H,EAAczqH,OAAOuqB,OAAO,GAAIw0qB,GASpC,OARItviB,EAAWhlC,EAAYk0kB,UACvBl0kB,EAAYk0kB,OAA6Bl0kB,EAAYk0kB,OAAUtzb,EAAOx/Q,IAEtE4jK,EAAWhlC,EAAYo0kB,QACvBp0kB,EAAYo0kB,KAA2Bp0kB,EAAYo0kB,KAAQxzb,EAAOx/Q,IAEtE4+H,EAAYk0kB,OAASpE,GAAuB9vkB,EAAYk0kB,QACxDl0kB,EAAYo0kB,KAAOtE,GAAuB9vkB,EAAYo0kB,MAC/Cp0kB,I,kCAOX,SAAqBH,GACjB,QAAUA,GAAeA,EAAW3iI,OAAS,I,gDASjD,SAAmC8iI,EAAa4gJ,EAAOx/Q,GAAK,WACxD,GAAM4+H,EAAY43hB,aAAgB5yf,EAAWhlC,EAAY43hB,aAAiBngb,EAAcz3G,EAAY43hB,cAAgB7+pB,KAAKw7sB,4BAA4Bv0kB,EAAY43hB,aAAe,CAE5K,IAAI48C,EAAmB,GACvB,OAAO,OAAAn3sB,EAAA,GAAwB2iI,EAAYk0kB,QAAUn3sB,KAAK,OAAA0jI,EAAA,GAI1D,SAAC53H,GACG,OAAO,OAAA06W,EAAA,GAAS,CACZ,EAAKutV,mBAAmBO,cAAiCxosB,GACzD,EAAK4osB,aAAac,aAAgC1psB,KACnD9L,KAAK,OAAA8+H,EAAA,GAIR,SAACy1kB,GAE+BA,EAAenkjB,MAI3C,SAACtkJ,GAAD,OAAmB,IAATA,MAEN2rsB,EAAmB3rsB,QAG1B,OAAA9N,EAAA,GAIL,SAAC8N,GAAD,OAAUA,EAAK1H,KAIf,SAAC0H,GAAD,OAAmB,IAATA,MAAkB,GAAQ,OAAA43H,EAAA,GAIpC,SAACg0kB,GACG,OAAMD,GACF,EAAKE,iCAAiC10kB,EAAaw0kB,EAAkB5zb,EAAOx/Q,GACrE,OAAA4N,EAAA,IAAG,KAETylsB,GAAcz0kB,EAAYo0kB,KACpB,EAAKO,kBAAkB30kB,EAAa4gJ,EAAOx/Q,GAE/C,OAAA4N,EAAA,IAAIylsB,MACV5ziB,YAET,OAAOvjK,QAAQ+wB,IAAI,CAACt1B,KAAK+3sB,mBAAmBO,cAAiCrxkB,EAAYk0kB,QAAWn7sB,KAAK04sB,aAAac,aAAgCvykB,EAAYk0kB,UAC7J98rB,KAIL,YAA8B,uBAC1B,OAD0B,YAElB4oH,EAAY43hB,YACZ,EAAKg9C,uBAAuB50kB,EAAY43hB,WAAYh3Y,EAAOx/Q,IAExD,IAEP4+H,EAAYo0kB,MACL,EAAKS,qBAAqB70kB,EAAa4gJ,EAAOx/Q,O,oCAajE,SAAuBw2pB,EAAYh3Y,EAAOx/Q,EAAO0zsB,GAI7C,GAHI9viB,EAAW4yf,KACXA,EAAiCA,EAAck9C,EAAsBl0b,EAAOx/Q,IAE5ErI,KAAKw7sB,4BAA4B38C,GAQjC,OAPI7+pB,KAAKg8sB,8BAA8Bn9C,KACfA,EAAcwM,iBAA2DxM,EAAcwM,iBAAoBxjZ,EAAOx/Q,IAEtIrI,KAAKi8sB,gCAAgCp9C,KACjBA,EAAcq9C,mBAA6Dr9C,EAAcq9C,mBAAsBr0b,EAAOx/Q,SAE9IrI,KAAKu3B,OAAOixF,SAAiDq2iB,EAAcq9C,mBAA+Dr9C,EAAcwM,kBAGxJ9gqB,MAAMyL,QAAQ6opB,GACd7+pB,KAAKu3B,OAAOixF,SAASq2iB,GAGrB7+pB,KAAKu3B,OAAOixF,SAAS,CAACq2iB,M,yCAQ9B,SAA4B3xa,GACxB,OAAOxO,EAAcwO,OAAcA,EAAOgvd,sBAAwBhvd,EAAOm+a,oB,2CAO7E,SAA8BxM,GAC1B,QAA6BA,EAAcwM,kBACvCp/f,EAA+B4yf,EAAcwM,oB,6CAOrD,SAAgCxM,GAC5B,QAA6BA,EAAcq9C,oBACvCjwiB,EAA+B4yf,EAAcq9C,sB,+BASrD,SAAkBj1kB,EAAa4gJ,EAAOx/Q,GAAK,WAEnCozsB,EAAmB,GACvB,OAAO,OAAAn3sB,EAAA,GAAK2iI,EAAYo0kB,MAAMr3sB,KAAK,OAAA0jI,EAAA,GAInC,SAAC53H,GACG,OAAO,OAAA06W,EAAA,GAAS,CACZ,EAAKutV,mBAAmBO,cAAiCxosB,GACzD,EAAK4osB,aAAac,aAAgC1psB,KACnD9L,KAAK,OAAA8+H,EAAA,GAIR,SAACw1kB,GAEkBA,EAAclkjB,MAI7B,SAACtkJ,GAAD,OAAmB,IAATA,MAEN2rsB,EAAmB3rsB,QAG1B,OAAA9N,EAAA,GAIL,SAAC8N,GACG,OAAIm8J,EAAWhlC,EAAY43hB,YAChB/upB,EAAK1H,KAIZ,SAAC0H,GAAD,OAAmB,IAATA,IAEPA,EAAKskJ,MAIZ,SAACtkJ,GAAD,OAAmB,IAATA,MACV,GAAQ,OAAA43H,EAAA,GAIZ,SAACy0kB,GACG,OAAIlwiB,EAAWhlC,EAAY43hB,YACnBs9C,EACO,OAAAlmsB,EAAA,IAAG,IAGV,EAAK0lsB,iCAAiC10kB,EAAaw0kB,EAAkB5zb,EAAOx/Q,GACrE,OAAA4N,EAAA,IAAG,KAIRwlsB,GACF,EAAKE,iCAAiC10kB,EAAaw0kB,EAAkB5zb,EAAOx/Q,GAEzE,OAAA4N,EAAA,IAAIkmsB,OAEdr0iB,c,8CAUT,SAAiC7gC,EAAaw0kB,EAAkB5zb,EAAOx/Q,GAC/DrI,KAAKo8sB,uCAAuCn1kB,EAAaw0kB,GACzDz7sB,KAAK67sB,uBAA2C50kB,EAAY43hB,WAAc48C,GAAmB5zb,EAAOx/Q,EAAOozsB,GAGvGxviB,EAAWhlC,EAAY43hB,YACvB7+pB,KAAK67sB,uBAA2C50kB,EAAY43hB,WAAeh3Y,EAAOx/Q,EAAOozsB,GAGzFz7sB,KAAK67sB,uBAA2C50kB,EAAY43hB,WAAhC,QAA0Dh3Y,EAAOx/Q,EAAOozsB,K,oDAUhH,SAAuCx0kB,EAAaw0kB,GAChD,QAASx0kB,EAAY43hB,YAAc53hB,EAAY43hB,WAA8B48C,K,kCASjF,SAAqBF,EAAiB1zb,EAAOx/Q,GAAK,WAE1C4+H,EAAczqH,OAAOuqB,OAAO,GAAIw0qB,GACpC,OAAOh3sB,QAAQ+wB,IAAI,CAACt1B,KAAK+3sB,mBAAmBO,cAAiCrxkB,EAAYo0kB,MAASr7sB,KAAK04sB,aAAac,aAAgCvykB,EAAYo0kB,QAC3Jh9rB,KAIL,YAA6B,uBACzB,SADyB,cAGrB4oH,EAAY43hB,YACZ,EAAKg9C,uBAAuB50kB,EAAY43hB,WAAYh3Y,EAAOx/Q,GAExD,Q,8CAUf,SAAiC4+H,EAAa4gJ,EAAOx/Q,GACjD,OAAK4jK,EAAWhlC,EAAY43hB,aAAengb,EAAcz3G,EAAY43hB,cAAgB7+pB,KAAKw7sB,4BAA4Bv0kB,EAAY43hB,YACvH7+pB,KAAK47sB,kBAAkB30kB,EAAa4gJ,EAAOx/Q,GAE/CrI,KAAK87sB,qBAAqB70kB,EAAa4gJ,EAAOx/Q,O,UAG7D0ysB,EAAoBx6sB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAKu6sB,GAAqB,KAAgB,IAAwB,KAAgB,IAAkB,KAAgB,OACrMA,EAAoBn2sB,WAAQ,KAA0B,CAAEC,MAAOk2sB,EAAqBj2sB,QAASi2sB,EAAoBx6sB,Y,uBAgO3G87sB,E,4FAKF,WAA0B,IAAXjkrB,EAAW,uDAAF,GACpB,MAAO,CACH2mF,SAAUs9lB,EACVlqrB,UAAW,CACP,EACA,GACA,EACA,GACA,GACA,GACA,EACA,CAAE5vB,QAASy0sB,GAAuBp+rB,SAAUwf,EAAOkkrB,oBACnD,CAAE/5sB,QAASq1sB,GAAiBh/rB,SAAUwf,EAAOmkrB,cAC7C,CAAEh6sB,QAAS4zsB,EAAyBv9rB,SAAUwf,EAAOokrB,0B,sBAQjE,WAA2B,IAAXpkrB,EAAW,uDAAF,GACrB,MAAO,CACH2mF,SAAUs9lB,EACVlqrB,UAAW,CACP,CAAE5vB,QAASy0sB,GAAuBp+rB,SAAUwf,EAAOkkrB,oBACnD,CAAE/5sB,QAASq1sB,GAAiBh/rB,SAAUwf,EAAOmkrB,cAC7C,CAAEh6sB,QAAS4zsB,EAAyBv9rB,SAAUwf,EAAOokrB,sBACrD,EACA,GACA,GACA,S,UAKhBH,EAAqB97sB,UAAO,SAAsCC,GAAK,OAAO,IAAKA,GAAK67sB,IACxFA,EAAqBnjsB,UAAO,KAAwB,CAAExY,KAAM27sB,IAC5DA,EAAqBljsB,UAAO,KAAwB,CAAEC,QAAS,CAAC,M,4CC9hD1DqjsB,GAAiB,6BAKjBC,IAJsB,aAAaD,GAAgB,gBAI/B,iCAKpBE,IAJyB,aAAaD,GAAmB,gBAIzC,6BAKhBE,IAJqB,aAAaD,GAAe,gBAIlC,4BAKfE,IAJoB,aAAaD,GAAc,gBAI5B,gCACK,aAAaC,GAAkB,gB,IAkBvD,G,+CAGA,G,wFACF,SAAUv2C,GACN,MAAO,CACHlnlB,KAAMp/E,KAAK88sB,eAAex2C,EAAYlnlB,MACtCjrC,IAAKmynB,EAAYnynB,O,4BAGzB,SAAe0zO,GAAK,WACV//Q,EAAW+/Q,EAAM//Q,SAAS2B,IAAI,SAACmmC,GAAD,OAAO,EAAKktqB,eAAeltqB,KAC/D,MAAO,CACHk6C,OAAQ+9L,EAAM/9L,OACdiznB,SAAUl1b,EAAMk1b,SAChBjtsB,KAAM+3Q,EAAM/3Q,KACZqkC,IAAK0zO,EAAM1zO,IACXt9B,OAAQgxQ,EAAMhxQ,OACdm7oB,YAAanqY,EAAMmqY,YACb,CACE/yoB,UAAW4oQ,EAAMmqY,YAAY/yoB,UAC7BkyH,KAAM02I,EAAMmqY,YAAY7ghB,KACxBqhhB,UAAW3qY,EAAMmqY,YAAYQ,UAC7BqM,WAAYh3Y,EAAMmqY,YAAY6M,WAC9BhopB,OAAQgxQ,EAAMmqY,YAAYn7oB,QAE5B,KACNuxT,YAAavgD,EAAMugD,YACnB40Y,cAAen1b,EAAMm1b,cACrBrpD,SAAU9rY,EAAM8rY,SAChB10oB,UAAY4oQ,EAAMmqY,YACZnqY,EAAMmqY,YAAY/yoB,eAClBxa,EACN26E,UAAM36E,EACNmiC,YAAQniC,EACRiwE,WAAY5sE,EAAS,GACrBmupB,kBAAcxxpB,EACdqD,gB,GAKN,G,wFACF,SAAUw+pB,GACN,MAAO,CACHlnlB,KAAMp/E,KAAK88sB,eAAex2C,EAAYlnlB,MACtCjrC,IAAKmynB,EAAYnynB,O,4BAGzB,SAAe0zO,GAAK,WACV//Q,EAAW+/Q,EAAM//Q,SAAS2B,IAAI,SAACmmC,GAAD,OAAO,EAAKktqB,eAAeltqB,KAC/D,MAAO,CACHk6C,OAAQ+9L,EAAM/9L,OACdh6E,KAAM+3Q,EAAM/3Q,KACZqkC,IAAK0zO,EAAM1zO,IACXt9B,OAAQgxQ,EAAMhxQ,OACdm7oB,YAAanqY,EAAMmqY,YACb,CACE7ghB,KAAM02I,EAAMmqY,YAAY7ghB,KACxBqhhB,UAAW3qY,EAAMmqY,YAAYQ,UAC7BqM,WAAYh3Y,EAAMmqY,YAAY6M,WAC9BhopB,OAAQgxQ,EAAMmqY,YAAYn7oB,QAE5B,KACNuxT,YAAavgD,EAAMugD,YACnBurV,SAAU9rY,EAAM8rY,SAChBj/kB,WAAY5sE,EAAS,GACrBA,gB,GAKRm1sB,GACH,SAAUA,G,OACPA,EAAuBA,EAAsB,cAAoB,GAAK,gBACtEA,EAAuBA,EAAsB,eAAqB,GAAK,iBAFhEA,EAAV,CADyB,IAKpBC,GAAiB,IAAI,IAAe,6CACpCC,GAAgB,IAAI,IAAe,oCAEzC,SAASC,GAAoBhlrB,GACzB,OAAO5b,OAAOuqB,OAAO,CAAEs2qB,SAFQ,SAE8Bz1C,WAAY,GAA8B01C,uBAAwBL,GAAuBM,eAAiBnlrB,GAE3K,IAAIolrB,GACH,SAAUA,G,OACPA,EAAcA,EAAa,KAAW,GAAK,OAC3CA,EAAcA,EAAa,OAAa,GAAK,SAC7CA,EAAcA,EAAa,MAAY,GAAK,QAHrCA,EAAV,CADgB,I,kBAgDXC,E,WACF,WAAYnmrB,EAAOC,EAAQqwoB,EAAYp8f,EAAcpzI,EAAQslrB,GAAmB,oBAC5E19sB,KAAKs3B,MAAQA,EACbt3B,KAAKu3B,OAASA,EACdv3B,KAAK4nqB,WAAaA,EAClB5nqB,KAAKwrK,aAAeA,EACpBxrK,KAAKo4B,OAASA,EACdp4B,KAAK09sB,oBAAsBA,EAC3B19sB,KAAK29sB,UAAY,KACjB39sB,KAAKsmqB,YAAc,KACnBtmqB,KAAKu+D,QAAUi/oB,GAAct+F,KAC7Bl/mB,KAAKq9sB,SAAWr9sB,KAAKo4B,OAAOilrB,UACvB,gBACD,kBACEK,aAAiE,EAASA,EAAoBnpF,+BAAiCmpF,aAAiE,EAASA,EAAoBppF,8BAC/Nt0nB,KAAK4nqB,sBAAsB,IAC3B78nB,QAAQ24B,KAAK,oZAOjB1jE,KAAK49sB,0BACL59sB,KAAK69sB,4B,2DAuBT,WAAuB,WACnB79sB,KAAKs3B,MACAtzB,KAAK,aAAOhE,KAAKq9sB,UAAW,OAAAxylB,GAAA,GAAe7qH,KAAKs3B,QAChDpzB,UAAU,YAAmC,uBAC9C,EAAK45sB,iBADyC,e,8BAItD,SAAiBC,EAAkBC,GAAU,WACzC,GAAKD,GAAqBA,EAAiB11sB,OAGvCrI,KAAKu+D,UAAYi/oB,GAAcS,UAG/Bj+sB,KAAK29sB,qBAAqB,KAA9B,CAGA,IAAMxpqB,EAAM4pqB,EAAiB11sB,MAAM8rC,KA8H3C,SAAmBnyC,EAAOm9C,GACtB,OAAO2+kB,GAAmB97nB,KAAW87nB,GAAmB3+kB,IA9H/C++pB,CAAUl+sB,KAAKu3B,OAAO4c,IAAKA,KAC5Bn0C,KAAKg+sB,WAAaA,EAClBh+sB,KAAKu+D,QAAUi/oB,GAAcW,MAC7Bn+sB,KAAKu3B,OAAOiD,cAAc2Z,GAAKupjB,MAAM,SAAC1okB,GAClC,EAAKw2I,aAAaE,YAAY12I,S,uCAI1C,WAAyB,IAGjBkzoB,EAHiB,OACfk2C,EAAkBp+sB,KAAKo4B,OAAOklrB,yBAChCL,GAAuBoB,eAE3Br+sB,KAAKu3B,OAAOs7B,OACP7uD,KAAK,OAAA6mH,GAAA,GAAe7qH,KAAKs3B,QACzBpzB,UAAU,YAAwB,uBAAtBokB,EAAsB,KAAf01rB,EAAe,KACnC,EAAKL,UAAYr1rB,EACbA,aAAiB,KACjB,EAAKg+oB,YAAc,EAAKsB,WAAW35U,UAAU,EAAK12T,OAAO+uoB,YAAYvU,UACjE,EAAKxzlB,UAAYi/oB,GAAcW,QAC/B,EAAKH,WAAaA,EAClB,EAAKM,sBAAsBh2rB,KAG1BA,aAAiB,KACtB4/oB,EAAmB5/oB,EACd81rB,GAAmB,EAAK7/oB,UAAYi/oB,GAAcW,OACnD,EAAKI,yBAAyBj2rB,IAG7BA,aAAiB,KACtB,EAAKk2rB,qBAAqBl2rB,GAC1B,EAAK00G,SAEA10G,aAAiB,KACtB,EAAKm2rB,oBAAoBn2rB,GACzB,EAAK00G,SAEA10G,aAAiB,MAClB,EAAKi2C,UAAYi/oB,GAAcW,QAC3BC,GACA,EAAKG,yBAAyBr2C,GAElC,EAAKw2C,wBAAwBp2rB,IAEjC,EAAK00G,a,mCAIjB,SAAsB10G,GAClBtoB,KAAK2+sB,qBAAqBlC,GAAgB,CAAEn0rB,Y,sCAEhD,SAAyBs2rB,GACrB,IAAMC,EAAkB7+sB,KAAK4nqB,WAAW35U,UAAU2wX,EAAqBv2sB,OACvErI,KAAK2+sB,qBAAqBjC,GAAmB,CACzCp2C,YAAau4C,EACbv2rB,MAAO,IAAI,IAAiBs2rB,EAAqB54rB,GAAI44rB,EAAqBzqqB,IAAKyqqB,EAAqB/sD,kBAAmBgtD,O,kCAG/H,SAAqBv2rB,GACjBtoB,KAAK2+sB,qBAAqBhC,GAAe,CACrCqB,WAAYh+sB,KAAKg+sB,WACjB11rB,Y,iCAGR,SAAoBA,GAChBtoB,KAAK2+sB,qBAAqB/B,GAAc,CACpCoB,WAAYh+sB,KAAKg+sB,WACjB11rB,MAAO,IAAI,IAAgBA,EAAMtC,GAAIsC,EAAM6rB,IAApC,UAA4C7rB,Q,qCAG3D,SAAwBA,GACpB,IAAMg+oB,EAActmqB,KAAK4nqB,WAAW35U,UAAUjuV,KAAKu3B,OAAO+uoB,YAAYvU,UACtE/xpB,KAAK2+sB,qBAAqB9B,GAAkB,CAAEv0rB,QAAOg+oB,kB,kCAEzD,SAAqB5lqB,EAAM+nI,GACvBzoI,KAAKu+D,QAAUi/oB,GAAcS,OAC7B,IACIj+sB,KAAKs3B,MAAMoB,SAAS,CAChBh4B,OACA+nI,QAASjsH,OAAOuqB,OAAOvqB,OAAOuqB,OAAO,CAAEu/nB,YAAatmqB,KAAKsmqB,aAAe79hB,GAAU,CAAEngH,MAAmC,IAA5BtoB,KAAKo4B,OAAOkuoB,YAC7F79hB,EAAQngH,MACR,CACEtC,GAAIyiH,EAAQngH,MAAMtC,GAClBmuB,IAAKs0F,EAAQngH,MAAM6rB,IAEnB09mB,kBAAmBpphB,EAAQngH,MACtBupoB,uBAVzB,QAeI7xpB,KAAKu+D,QAAUi/oB,GAAct+F,Q,mBAGrC,WACIl/mB,KAAKu+D,QAAUi/oB,GAAct+F,KAC7Bl/mB,KAAKg+sB,WAAa,KAClBh+sB,KAAKsmqB,YAAc,Q,sBAxIvB,WAA0B,IAAXluoB,EAAW,uDAAF,GACpB,MAAO,CACH2mF,SAAU0+lB,EACVtrrB,UAAW,CACP,CAAE5vB,QAAS26sB,GAAgBtksB,SAAUwf,GACrC,CACI71B,QAAS46sB,GACT/zrB,WAAYg0rB,GACZj0rB,KAAM,CAAC+zrB,KAEX,CACI36sB,QAAS,GACToW,SAAUyf,EAAOwvoB,WACXxvoB,EAAOwvoB,WACgB,IAAvBxvoB,EAAOkuoB,YACH,GACA,U,UA2H9Bm3C,EAA4Bl9sB,UAAO,SAA6CC,GAAK,OAAO,IAAKA,GAAKi9sB,GAA6B,KAAgB,MAAe,KAAgB,KAAgB,KAAgB,IAAwB,KAAgB,KAAsB,KAAgBN,IAAgB,KAAgB,QAChUM,EAA4BvksB,UAAO,KAAwB,CAAExY,KAAM+8sB,IACnEA,EAA4BtksB,UAAO,KAAwB,I,KA0B3D,SAAS2knB,GAAmBt0iB,GACxB,OAAIA,EAAKrlF,OAAS,GAA+B,MAA1BqlF,EAAKA,EAAKrlF,OAAS,GAC/BqlF,EAAKx+B,UAAU,EAAGw+B,EAAKrlF,OAAS,GAEpCqlF,E,iBCzXErkC,GAAS,CACrB4/lB,KAAM,KACNj1oB,KAAM,CACLgvsB,WAAY,CACXC,OAAQ,wBAETC,KAAM,CACLC,IAAK,MACLC,QAAS,UACTC,YAAa,kBACbC,MAAO,QACPC,SAAU,WACVC,KAAM,OACNC,UAAW,aAEZC,KAAM,CACLC,QAAS,CACRC,GAAI,KACJC,cAAe,SACfC,WAAY,yBACZC,cAAe,UACfC,cAAe,kBACfC,YAAa,OACbC,QAAS,UACTC,MAAO,QACPC,QAAS,WAEVC,MAAO,CACNC,MAAO,gBACPC,OAAQ,WAETC,OAAQ,CACPF,MAAO,sBACPG,KAAM,0CACNC,QAAS,6CAEVC,SAAU,CACTL,MAAO,UACPG,KAAM,4CACNC,QAAS,iDAEVE,MAAO,CACNC,MAAO,QACPC,SAAU,WACVC,SAAU,WACVC,iBAAkB,mBAClBC,SAAU,YAEXC,WAAY,CACX1rkB,QAAS,wBACT2rkB,SAAU,uBACVC,WAAY,qCACZC,mBAAoB,4CACpBtvJ,UAAW,sCACXuvJ,cAAe,gCACfC,eAAgB,iBAChBC,iBAAkB,wBAClBC,iBAAkB,wBAClBC,cAAe,uBAGjBC,UAAW,CACVC,OAAQ,CACPC,uBAAwB,2BACxBC,IAAK,MACLC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,UAAW,YACXC,QAAS,UACTC,SAAU,WACVC,WAAY,aACZC,OAAQ,SACRC,cAAe,iBAEhBZ,UAAW,YACXa,UAAW,CACVA,UAAW,YACXC,eAAgB,iBAChBC,aAAc,eACdC,uBAAwB,CACvBrC,MAAO,kBACPsC,YAAa,oDACbC,iBAAkB,0BAClBC,QAAS,6BAEVC,sBAAuB,CACtBzC,MAAO,mBACPsC,YAAa,yDACbC,iBAAkB,4BAClBC,QAAS,wCAEVE,cAAe,CACd1C,MAAO,iDACPwC,QAAS,4DAEVG,KAAM,CACLC,eAAgB,4BAChBC,YAAa,iCClGL,GAAS,CACrBl+D,KAAM,KACNj1oB,KAAM,CACLgvsB,WAAY,CACXC,OAAQ,wCAETC,KAAM,CACLC,IAAK,SACLC,QAAS,eACTC,YAAa,iCACbC,MAAO,QACPC,SAAU,eACVC,KAAM,eACNC,UAAW,sBAEZC,KAAM,CACLC,QAAS,CACRC,GAAI,eACJC,cAAe,eACfC,WAAY,iCACZC,cAAe,eACfC,cAAe,2BACfC,YAAa,eACbC,QAAS,eACTC,MAAO,eACPC,QAAS,gBAEVC,MAAO,CACNC,MAAO,2BACPC,OAAQ,gBAETC,OAAQ,CACPF,MAAO,sBACPG,KAAM,0CACNC,QAAS,6CAEVC,SAAU,CACTL,MAAO,UACPG,KAAM,4CACNC,QAAS,iDAEVE,MAAO,CACNC,MAAO,QACPC,SAAU,WACVC,SAAU,WACVC,iBAAkB,mBAClBC,SAAU,sBAEXC,WAAY,CACX1rkB,QAAS,wBACT2rkB,SAAU,uBACVC,WAAY,qCACZC,mBAAoB,4CACpBtvJ,UAAW,sCACXuvJ,cAAe,gCACfC,eAAgB,iBAChBC,iBAAkB,wBAClBC,iBAAkB,wBAClBC,cAAe,uBAGjBC,UAAW,CACVC,OAAQ,CACPC,uBAAwB,2BACxBC,IAAK,MACLC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,UAAW,YACXC,QAAS,UACTC,SAAU,WACVC,WAAY,aACZC,OAAQ,SACRC,cAAe,iBAEhBZ,UAAW,YACXa,UAAW,CACVA,UAAW,eACXC,eAAgB,2BAChBC,aAAc,eACdC,uBAAwB,CACvBrC,MAAO,kBACPsC,YAAa,oDACbC,iBAAkB,0BAClBC,QAAS,6BAEVC,sBAAuB,CACtBzC,MAAO,mBACPsC,YAAa,yDACbC,iBAAkB,4BAClBC,QAAS,wCAEVE,cAAe,CACd1C,MAAO,iDACPwC,QAAS,4DAEVG,KAAM,CACLC,eAAgB,4BAChBC,YAAa,iCClGL,GAAS,CACrBl+D,KAAM,KACNj1oB,KAAM,CACLgvsB,WAAY,CACXC,OAAQ,mBAETC,KAAM,CACLC,IAAK,QACLC,QAAS,iBACTC,YAAa,6BACbC,MAAO,QACPC,SAAU,kBACVC,KAAM,eACNC,UAAW,WAEZC,KAAM,CACLC,QAAS,CACRC,GAAI,IACJC,cAAe,SACfC,WAAY,wBACZC,cAAe,gBACfC,cAAe,mCACfC,YAAa,UACbC,QAAS,YACTC,MAAO,QACPC,QAAS,YAEVC,MAAO,CACNC,MAAO,mBACPC,OAAQ,eAETC,OAAQ,CACPF,MAAO,0BACPG,KAAM,qEACNC,QAAS,6CAEVC,SAAU,CACTL,MAAO,UACPG,KAAM,4CACNC,QAAS,iDAEVE,MAAO,CACNC,MAAO,QACPC,SAAU,WACVC,SAAU,WACVC,iBAAkB,mBAClBC,SAAU,WAEXC,WAAY,CACX1rkB,QAAS,wBACT2rkB,SAAU,uBACVC,WAAY,qCACZC,mBAAoB,4CACpBtvJ,UAAW,sCACXuvJ,cAAe,gCACfC,eAAgB,iBAChBC,iBAAkB,wBAClBC,iBAAkB,wBAClBC,cAAe,uBAGjBC,UAAW,CACVC,OAAQ,CACPC,uBAAwB,2BACxBC,IAAK,MACLC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,UAAW,YACXC,QAAS,UACTC,SAAU,WACVC,WAAY,aACZC,OAAQ,SACRC,cAAe,iBAEhBZ,UAAW,YACXa,UAAW,CACVA,UAAW,YACXC,eAAgB,iBAChBC,aAAc,eACdC,uBAAwB,CACvBrC,MAAO,kBACPsC,YAAa,oDACbC,iBAAkB,0BAClBC,QAAS,6BAEVC,sBAAuB,CACtBzC,MAAO,mBACPsC,YAAa,yDACbC,iBAAkB,4BAClBC,QAAS,wCAEVE,cAAe,CACd1C,MAAO,iDACPwC,QAAS,4DAEVG,KAAM,CACLC,eAAgB,4BAChBC,YAAa,iCClGL,GAAS,CACrBl+D,KAAM,KACNj1oB,KAAM,CACLgvsB,WAAY,CACXC,OAAQ,oGAETC,KAAM,CACLC,IAAK,qBACLC,QAAS,eACTC,YAAa,mDACbC,MAAO,QACPC,SAAU,eACVC,KAAM,qBACNC,UAAW,8CAEZC,KAAM,CACLC,QAAS,CACRC,GAAI,qBACJC,cAAe,2BACfC,WAAY,iFACZC,cAAe,uCACfC,cAAe,2EACfC,YAAa,qBACbC,QAAS,uCACTC,MAAO,eACPC,QAAS,gBAEVC,MAAO,CACNC,MAAO,iBACPC,OAAQ,WAETC,OAAQ,CACPF,MAAO,sBACPG,KAAM,0CACNC,QAAS,6CAEVC,SAAU,CACTL,MAAO,UACPG,KAAM,4CACNC,QAAS,iDAEVE,MAAO,CACNC,MAAO,QACPC,SAAU,WACVC,SAAU,WACVC,iBAAkB,mBAClBC,SAAU,kCAEXC,WAAY,CACX1rkB,QAAS,wBACT2rkB,SAAU,uBACVC,WAAY,qCACZC,mBAAoB,4CACpBtvJ,UAAW,sCACXuvJ,cAAe,gCACfC,eAAgB,iBAChBC,iBAAkB,wBAClBC,iBAAkB,wBAClBC,cAAe,uBAGjBC,UAAW,CACVC,OAAQ,CACPC,uBAAwB,2BACxBC,IAAK,MACLC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,UAAW,YACXC,QAAS,UACTC,SAAU,WACVC,WAAY,aACZC,OAAQ,SACRC,cAAe,iBAEhBZ,UAAW,YACXa,UAAW,CACVA,UAAW,YACXC,eAAgB,iBAChBC,aAAc,eACdC,uBAAwB,CACvBrC,MAAO,kBACPsC,YAAa,oDACbC,iBAAkB,0BAClBC,QAAS,6BAEVC,sBAAuB,CACtBzC,MAAO,mBACPsC,YAAa,yDACbC,iBAAkB,4BAClBC,QAAS,wCAEVE,cAAe,CACd1C,MAAO,iDACPwC,QAAS,4DAEVG,KAAM,CACLC,eAAgB,4BAChBC,YAAa,iCClGL,GAAS,CACrBl+D,KAAM,KACNj1oB,KAAM,CACLgvsB,WAAY,CACXC,OAAQ,0BAETC,KAAM,CACLC,IAAK,MACLC,QAAS,WACTC,YAAa,oCACbC,MAAO,QACPC,SAAU,gBACVC,KAAM,OACNC,UAAW,qBAEZC,KAAM,CACLC,QAAS,CACRC,GAAI,OACJC,cAAe,aACfC,WAAY,sBACZC,cAAe,WACfC,cAAe,qBACfC,YAAa,YACbC,QAAS,kBACTC,MAAO,QACPC,QAAS,WAEVC,MAAO,CACNC,MAAO,iBACPC,OAAQ,WAETC,OAAQ,CACPF,MAAO,sBACPG,KAAM,0CACNC,QAAS,6CAEVC,SAAU,CACTL,MAAO,UACPG,KAAM,4CACNC,QAAS,iDAEVE,MAAO,CACNC,MAAO,QACPC,SAAU,WACVC,SAAU,WACVC,iBAAkB,mBAClBC,SAAU,cAEXC,WAAY,CACX1rkB,QAAS,wBACT2rkB,SAAU,uBACVC,WAAY,qCACZC,mBAAoB,4CACpBtvJ,UAAW,sCACXuvJ,cAAe,gCACfC,eAAgB,iBAChBC,iBAAkB,wBAClBC,iBAAkB,wBAClBC,cAAe,uBAGjBC,UAAW,CACVC,OAAQ,CACPC,uBAAwB,2BACxBC,IAAK,MACLC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,UAAW,YACXC,QAAS,UACTC,SAAU,WACVC,WAAY,aACZC,OAAQ,SACRC,cAAe,iBAEhBZ,UAAW,YACXa,UAAW,CACVA,UAAW,YACXC,eAAgB,iBAChBC,aAAc,eACdC,uBAAwB,CACvBrC,MAAO,kBACPsC,YAAa,oDACbC,iBAAkB,0BAClBC,QAAS,6BAEVC,sBAAuB,CACtBzC,MAAO,mBACPsC,YAAa,yDACbC,iBAAkB,4BAClBC,QAAS,wCAEVE,cAAe,CACd1C,MAAO,iDACPwC,QAAS,4DAEVG,KAAM,CACLC,eAAgB,4BAChBC,YAAa,iCClGL,GAAS,CACrBl+D,KAAM,KACNj1oB,KAAM,CACLgvsB,WAAY,CACXC,OAAQ,2BAETC,KAAM,CACLC,IAAK,UACLC,QAAS,QACTC,YAAa,2BACbC,MAAO,QACPC,SAAU,qBACVC,KAAM,eACNC,UAAW,mBAEZC,KAAM,CACLC,QAAS,CACRC,GAAI,KACJC,cAAe,YACfC,WAAY,0BACZC,cAAe,WACfC,cAAe,yBACfC,YAAa,OACbC,QAAS,UACTC,MAAO,QACPC,QAAS,WAEVC,MAAO,CACNC,MAAO,qBACPC,OAAQ,WAETC,OAAQ,CACPF,MAAO,sBACPG,KAAM,0CACNC,QAAS,6CAEVC,SAAU,CACTL,MAAO,UACPG,KAAM,4CACNC,QAAS,iDAEVE,MAAO,CACNC,MAAO,QACPC,SAAU,WACVC,SAAU,eACVC,iBAAkB,mBAClBC,SAAU,qBAEXC,WAAY,CACX1rkB,QAAS,4BACT2rkB,SAAU,sBACVC,WAAY,qCACZC,mBAAoB,4CACpBtvJ,UAAW,sCACXuvJ,cAAe,gCACfC,eAAgB,iBAChBC,iBAAkB,wBAClBC,iBAAkB,wBAClBC,cAAe,uBAGjBC,UAAW,CACVC,OAAQ,CACPC,uBAAwB,gDACxBC,IAAK,MACLC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,UAAW,YACXC,QAAS,UACTC,SAAU,WACVC,WAAY,aACZC,OAAQ,SACRC,cAAe,iBAEhBZ,UAAW,eACXa,UAAW,CACVA,UAAW,cACXC,eAAgB,oBAChBC,aAAc,iBACdC,uBAAwB,CACvBrC,MAAO,wBACPsC,YAAa,gEACbC,iBAAkB,0CAClBC,QAAS,qCAEVC,sBAAuB,CACtBzC,MAAO,wBACPsC,YAAa,qFACbC,iBAAkB,6BAClBC,QAAS,6DAEVE,cAAe,CACd1C,MAAO,0EACPwC,QAAS,qFAEVG,KAAM,CACLC,eAAgB,sCAChBC,YAAa,wC,+ICjGLC,GAAQ,IAAI1olB,GAAA,EAAW9F,GAAA,G,uCCiB9ByulB,GAAuB,gEAOvB,G,8BACF,WAAYr9kB,GAER,GAFqB,oBACrB9lI,KAAK8lI,cAAgBA,EAChBA,EAGA,CACD,IACMs9kB,EADyB,OAAAj6lB,GAAA,GAAU2c,EAAe,oBACP9hI,KAAK,OAAAyF,EAAA,GAAI,kBAAMq8H,EAAcisF,cACxEsxf,EAAoB,OAAAx3c,GAAA,GAAM,kBAAM,OAAA51P,EAAA,GAAG6vH,EAAcisF,cACjDuxf,EAAwB,OAAAtqsB,GAAA,GAAOqqsB,EAAmBD,GACxDpjtB,KAAKujtB,OAASD,EAAsBt/sB,KAAK,OAAAmR,GAAA,GAAO,SAACy6B,GAAD,QAASA,KACzD5vC,KAAKwjtB,aAAgBxjtB,KAAKujtB,OAAOv/sB,KAAK,OAAAk/H,EAAA,GAAU,kBAAM4C,EAAc29kB,qBACpE,IAGM5wpB,EAHY,OAAAs2D,GAAA,GAAU2c,EAAe,WACT9hI,KAAK,OAAAyF,EAAA,GAAI,SAAA6e,GAAK,OAAIA,EAAMxY,QAChB9L,KAAK,OAAAmR,GAAA,GAAO,SAAAmT,GAAK,OAAIA,GAASA,EAAM5nB,QAC7CsD,KCrCrC,OAAAw4nB,GAAA,GAAU,IAAI/4nB,GAAA,IDsCVovD,EAAO/8C,UACP9V,KAAK6yD,OAASA,OAdd7yD,KAAKujtB,OAASvjtB,KAAK6yD,OAAS7yD,KAAKwjtB,aATlC,OAAA33c,GAAA,GAAM,kBAAM,OAAAllI,GAAA,GAAW,IAAItyG,MASsC8urB,qE,0BAiBxE,SAAYpgpB,EAAQ0lE,GAChB,OAAOzoI,KAAKujtB,OACPv/sB,KAAK,OAAAW,EAAA,GAAK,GAAI,OAAAm+H,EAAA,GAAI,SAAC4glB,GACpBA,EAAGC,YAAYnnsB,OAAOuqB,OAAO,CAAEg8B,UAAU0lE,OAExCq/B,YACAzpJ,KAAK,gB,mCAEd,SAAsB3d,EAAM+nI,EAASm7kB,GACjC,IAAMC,EAAgB7jtB,KAAK6jtB,cAAcD,GACnCD,EAAc3jtB,KAAK2jtB,YAAYjjtB,EAAM+nI,GAC3C,OAAOlkI,QAAQ+wB,IAAI,CAACuurB,EAAeF,IAActlsB,KAAK,gB,2BAE1D,WACI,OAAOE,KAAK06B,MAAsB,IAAhB16B,KAAKqqH,Y,0BAE3B,SAAaloI,GAET,OAAOV,KAAK6yD,OAAO7uD,KAAK,OAAAmR,GAAA,GADP,SAACmT,GAAD,OAAWA,EAAM5nB,OAASA,O,6BAG/C,SAAgBA,GACZ,OAAOV,KAAK8jtB,aAAapjtB,GAAMsD,KAAK,OAAAW,EAAA,GAAK,M,2BAE7C,SAAci/sB,GACV,OAAO5jtB,KAAK8jtB,aAAa,UACpB9/sB,KAAK,OAAAmR,GAAA,GAAO,SAAAmT,GAAK,OAAIA,EAAMs7rB,QAAUA,IAAQ,OAAAj/sB,EAAA,GAAK,GAAI,OAAA8E,EAAA,GAAI,SAAA6e,GAC3D,IAAIA,EAAMkjE,OAGV,MAAM,IAAIn3D,MAAM/L,EAAM0M,UAErB8yI,c,qBAET,WACI,QAAS9nK,KAAK8lI,kB,qBAuFhBi+kB,E,8BACF,WAAYL,GAGR,GAHU,oBACV1jtB,KAAK0jtB,GAAKA,EACV1jtB,KAAKgktB,oBAAsB,IAAIvgtB,GAAA,GAC1BigtB,EAAGr6L,UAIJ,OAHArphB,KAAKsnI,SAAW47kB,GAChBljtB,KAAKiktB,mBAAqBf,QAC1BljtB,KAAKg0G,aAAekvmB,IAGxBljtB,KAAKsnI,SAAWtnI,KAAK0jtB,GAAGI,aAAa,QAAQ9/sB,KAAK,OAAAyF,EAAA,GAAI,SAAAuwB,GAAO,OAAIA,EAAQlqB,QACzE9P,KAAKiktB,mBACDjktB,KAAK0jtB,GAAGI,aAAa,sBAAsB9/sB,KAAK,OAAAyF,EAAA,GAAI,SAACuwB,GAAD,OAAaA,EAAQlqB,QAC7E9P,KAAKkktB,YAAclktB,KAAK0jtB,GAAGF,aAAax/sB,KAAK,OAAAyF,EAAA,GAAI,SAAA+5sB,GAAY,OAAIA,EAAaU,eAC9E,IAAMC,EAA4BnktB,KAAKkktB,YAAYlgtB,KAAK,OAAAk/H,EAAA,GAAU,SAAAkhlB,GAAE,OAAIA,EAAGC,qBAC3ErktB,KAAKg0G,aAAe,OAAA32F,EAAA,GAAM8msB,EAA2BnktB,KAAKgktB,sB,sBAM9D,WACI,OAAOhktB,KAAK0jtB,GAAGr6L,Y,iCASnB,SAAoBrhgB,GAAO,WACvB,IAAKhoB,KAAK0jtB,GAAGr6L,UACT,OAAO9khB,QAAQkxH,OAAO,IAAIphG,MAAM8urB,KAKpC,IAHA,IAAMmB,EAAc,CAAEC,iBAAiB,GACnC5nsB,EAAM3c,KAAKwktB,aAAax8rB,EAAQy8rB,gBAAgBjjtB,QAAQ,KAAM,KAAKA,QAAQ,KAAM,MACjFkjtB,EAAuB,IAAIlsiB,WAAW,IAAIG,YAAYh8J,EAAIxY,SACrD0D,EAAI,EAAGA,EAAI8U,EAAIxY,OAAQ0D,IAC5B68sB,EAAqB78sB,GAAK8U,EAAIkzB,WAAWhoC,GAG7C,OADAy8sB,EAAYI,qBAAuBA,EAC5B1ktB,KAAKkktB,YAAYlgtB,KAAK,OAAAk/H,EAAA,GAAU,SAAAkhlB,GAAE,OAAIA,EAAGlgtB,UAAUogtB,KAAe,OAAA3/sB,EAAA,GAAK,IACzEmjK,YACAzpJ,KAAK,SAAA4zE,GAEN,OADA,EAAK+xnB,oBAAoBngtB,KAAKouF,GACvBA,M,yBASf,WAAW,WACP,OAAKjyF,KAAK0jtB,GAAGr6L,UAcNrphB,KAAKg0G,aAAahwG,KAAK,OAAAW,EAAA,GAAK,GAAI,OAAAu+H,EAAA,GAXjB,SAACjxC,GACnB,GAAY,OAARA,EACA,MAAM,IAAI59D,MAAM,yCAEpB,OAAO49D,EAAIr8E,cAAcyI,KAAK,SAAAqjD,GAC1B,IAAKA,EACD,MAAM,IAAIrtC,MAAM,uBAEpB,EAAK2vrB,oBAAoBngtB,KAAK,WAG2BikK,YAbtDvjK,QAAQkxH,OAAO,IAAIphG,MAAM8urB,O,0BAexC,SAAa3kqB,GACT,OAAO66U,KAAK76U,O,UAGpBulqB,EAAOxjtB,UAAO,SAAwBC,GAAK,OAAO,IAAKA,GAAKujtB,GAAQ,KAAgB,MACpFA,EAAOn/sB,WAAQ,KAA0B,CAAEC,MAAOk/sB,EAAQj/sB,QAASi/sB,EAAOxjtB,Y,uBAuBpEoktB,E,8BACF,WAAYjB,GAER,GAFU,oBACV1jtB,KAAK0jtB,GAAKA,GACLA,EAAGr6L,UAIJ,OAHArphB,KAAKgtE,UAAYk2oB,GACjBljtB,KAAKy2pB,UAAYysD,QACjBljtB,KAAK4ktB,cAAgB1B,IAGzBljtB,KAAKgtE,UAAYhtE,KAAK0jtB,GAAGI,aAAa,oBACtC9jtB,KAAKy2pB,UAAYz2pB,KAAK0jtB,GAAGI,aAAa,oBACtC9jtB,KAAK4ktB,cAAgB5ktB,KAAK0jtB,GAAGI,aAAa,wB,sBAM9C,WACI,OAAO9jtB,KAAK0jtB,GAAGr6L,Y,4BAEnB,WACI,IAAKrphB,KAAK0jtB,GAAGr6L,UACT,OAAO9khB,QAAQkxH,OAAO,IAAIphG,MAAM8urB,KAEpC,IAAM0B,EAAc7ktB,KAAK0jtB,GAAGoB,gBAC5B,OAAO9ktB,KAAK0jtB,GAAGqB,sBAAsB,oBAAqB,CAAEF,eAAeA,K,4BAE/E,WACI,IAAK7ktB,KAAK0jtB,GAAGr6L,UACT,OAAO9khB,QAAQkxH,OAAO,IAAIphG,MAAM8urB,KAEpC,IAAM0B,EAAc7ktB,KAAK0jtB,GAAGoB,gBAC5B,OAAO9ktB,KAAK0jtB,GAAGqB,sBAAsB,kBAAmB,CAAEF,eAAeA,O,UAGjFF,EAASpktB,UAAO,SAA0BC,GAAK,OAAO,IAAKA,GAAKmktB,GAAU,KAAgB,MAC1FA,EAAS//sB,WAAQ,KAA0B,CAAEC,MAAO8/sB,EAAU7/sB,QAAS6/sB,EAASpktB,Y,KA2B1E,G,+CAEAqlnB,GAAS,IAAI,IAAe,wBAClC,SAASo/F,GAAmB7lsB,EAAUsnmB,EAAQz+lB,EAAS09G,GA4CnD,OA3CoB,WAChB,GAAM,aAAkBA,IAAgB,kBAAmB5a,YACnC,IAApB9iG,EAAQ0oH,QADZ,CAYA,IAAIu0kB,EACJ,GANAn6lB,UAAUgb,cAAcx6G,iBAAiB,mBAAoB,WACd,OAAvCw/F,UAAUgb,cAAcisF,YACxBjnG,UAAUgb,cAAcisF,WAAW4xf,YAAY,CAAE5gpB,OAAQ,iBAIrB,mBAAjC/6C,EAAQk9rB,qBACfD,EAAmBj9rB,EAAQk9rB,2BAE1B,CACD,OAA6Bl9rB,EAAQk9rB,sBAAwB,4BAA4B3isB,MAAM,KAA/F,kBAAO2N,EAAP,KAAoBrwB,EAApB,WACA,OAAQqwB,GACJ,IAAK,sBACD+0rB,EAAmB,OAAAhvsB,EAAA,GAAG,MACtB,MACJ,IAAK,oBACDgvsB,EAAmBE,IAAkBtltB,EAAK,IAAM,GAChD,MACJ,IAAK,qBACDoltB,EAAoBpltB,EAAK,GACrB,OAAAwd,EAAA,GAAMgkmB,GAAWlimB,GAAWgmsB,IAAkBtltB,EAAK,KADzBwhnB,GAAWlimB,GAEzC,MACJ,QAEI,MAAM,IAAIkV,MAAJ,uDAA0DrM,EAAQk9rB,wBAOrE/lsB,EAASjN,IAAI,KACrBmZ,kBAAkB,kBAAM45rB,EAAiBjhtB,KAAK,OAAAW,EAAA,GAAK,IAAIT,UAAU,kBAAM4mH,UAAUgb,cAAci1F,SAAS0rZ,EAAQ,CAAEj5hB,MAAOxlE,EAAQwlE,QACnIkwgB,MAAM,SAAA/gkB,GAAG,OAAIoO,QAAQ/V,MAAM,2CAA4C2H,WAIpF,SAASworB,GAAiB/2jB,GACtB,OAAO,OAAAn4I,EAAA,GAAG,MAAMjS,KAAK,OAAAopF,GAAA,GAAMghE,IAE/B,SAASizd,GAAWlimB,GAEhB,OADeA,EAASjN,IAAI,KACd7N,SAASL,KAAK,OAAAmR,GAAA,GAAO,SAAAiwsB,GAAM,OAAIA,KAEjD,SAASC,GAAuBvvrB,EAAM4vG,GAClC,OAAO,IAAI,GAAgB,aAAkBA,KAAgC,IAAjB5vG,EAAK46G,QAAoB5lB,UAAUgb,mBAC3FrhI,G,sBAKF6gtB,E,6FAOF,SAAgB7+F,GAAiB,IAAT3wlB,EAAS,uDAAF,GAC3B,MAAO,CACHipF,SAAUummB,EACVnzrB,UAAW,CACP,CAAE5vB,QAASqjnB,GAAQhtmB,SAAU6tmB,GAC7B,CAAElknB,QAAS,GAAuBqW,SAAUkd,GAC5C,CACIvzB,QAAS,GACT6mB,WAAYi8rB,GACZl8rB,KAAM,CAAC,GAAuB,MAElC,CACI5mB,QAAS,IACT6mB,WAAY47rB,GACZ77rB,KAAM,CAAC,IAAUy8lB,GAAQ,GAAuB,KAChDl8lB,OAAO,S,UAM3B47rB,EAAoB/ktB,UAAO,SAAqCC,GAAK,OAAO,IAAKA,GAAK8ktB,IACtFA,EAAoBpssB,UAAO,KAAwB,CAAExY,KAAM4ktB,IAC3DA,EAAoBnssB,UAAO,KAAwB,CAAEgZ,UAAW,CAAC,GAAQ,M,KErazE,cAIC,WAA6BqxS,GAA7B,WAA6B,KAAAA,UAC5BxjU,KAAKwjU,QAAQx2P,UAAU9oE,UAAU,SAAAokB,GAChC,EAAKi9rB,yB,OAGO,YAAAA,qBAAd,W,sGAuBQ,YAAAC,MAAR,aAGQ,YAAAC,SAAR,WACCzltB,KAAKwjU,QAAQkiZ,iBAAiBrnsB,KAAK,WAAM,OAAAssB,SAASrQ,SAASuzS,Y,sCAjChD83Y,GAAgB,W,yBAAhBA,EAAgB,QAAhBA,EAAgB,qBAFhB,S,EADb,GCAA,cAEC,WAAoBpurB,GAAA,KAAAA,SAEpB,KAAAk7D,UAAY,IAAIhvF,GAAA,E,OAChB,YAAA8gK,KAAA,WACCvkK,KAAKyyF,UAAU5uF,MAAK,IAErB,YAAAmpL,KAAA,WACChtL,KAAKyyF,UAAU5uF,MAAK,I,sCART+htB,GAAa,Y,yBAAbA,EAAa,QAAbA,EAAa,Y,EAD1B,G,0BCHA,gBACC,iCACD,Q,kBADuC,8BAAe,cAAf,CAAe,kBCGtD,kBAWC,WAAoBC,GAAA,KAAAA,gBALpB,KAAAhwpB,MAAQ,UACR,KAAAjjC,KAAO,gBACP,KAAArxB,MAAQ,GACR,KAAAkxF,UAA8BzyF,KAAK6ltB,cAAcpznB,U,6CAJrCqznB,GAAmB,W,uBAAnBA,EAAmB,sKDThC,uB,sBAAM,oC,qTCIN,G,2DCFC,eAA+C,QAAmB,Q,kBAAnB,+B,yBAC/C,gB,kBAA2C,+BCI5C,kBAoBC,WACSrzqB,EACA+4R,EACAG,GAFA,KAAAl5R,KACA,KAAA+4R,sBACA,KAAAG,sB,OAUT,YAAAt7M,SAAA,WAEC,IAAM01lB,EAAe/ltB,KAAKwrU,oBAAoBpmS,UAAU,UACxDplC,KAAKgmtB,WAAa,OAAeD,EAAc,QAC/C/ltB,KAAKimtB,WAAa,OAAeF,EAAc,QAC/C/ltB,KAAKkmtB,cAAgB,OAAeH,EAAc,WAElD/ltB,KAAK2rU,oBAAoBrmC,KAAKtlS,KAAKmmtB,e,sCAnCxBC,GAAqB,kC,uBAArBA,EAAqB,yD,MAAA,K,8NDXlC,kBACC,wBACA,uBACA,wBACD,Q,MAHQ,sDACD,qD,mzBCIP,G,wCCPA,2BCmBA,kBAuBC,WACS9urB,EACAo0S,EACAn0S,EACAi0S,EACAG,EACA06Y,GALA,KAAA/urB,QACA,KAAAo0S,qBACA,KAAAn0S,SACA,KAAAi0S,sBACA,KAAAG,sBACA,KAAA06Y,mBApBT,KAAAzvpB,MAAQ,QAGA,KAAAhhD,YAA8B,GAoBrC5V,KAAK0rU,mBAAmB4wW,iBAAiB,GAAQ,GAAQ,GAAQ,GAAQ,GAAQ,I,OAOlF,YAAAjsjB,SAAA,sBACCrwH,KAAK8mlB,OAAS9mlB,KAAKwrU,oBAAoBpmS,UAAU,kBAEjD,IAAMkhrB,EAAqBtmtB,KAAKu3B,OAAOs7B,OAAO3uD,UAAU,SAAAokB,GACnDA,aAAiB,MAEpB,EAAKqjT,oBAAoB3+I,OAGzB7hK,OAAOs4Q,SAAS,EAAG,GAGnB7+P,WAAW,WACV+F,SAAS7H,KAAKngC,UAAUE,IAAI,oBAC1B,QAGL7C,KAAK4V,YAAYhS,KAAK0itB,IAKvB,YAAA9iiB,YAAA,WACCxjL,KAAK4V,YAAYvC,QAAQ,SAAA2mU,GAAM,OAAAA,EAAGpkU,iB,sCAvDvB2wsB,GAAY,iE,uBAAZA,EAAY,2GD1BzB,oCACA,yBAEA,yB,KAHmB,uB,oGCmBnB,G,aCjBA,2BACQ,KAAAx/rB,SAA8B,CACpCg1pB,KAAM,QAEN9ic,KAAM,CACLzhB,OAAQ,QACR10L,KAAM,CACL,mBAAoB,gCAErB64oB,KAAM,CACLv/d,KAAM,sCACNC,MAAO,qCACPmqgB,MAAO,sCACP1zgB,MAAO,wCAITg0Y,OAAQ,CACPp2c,SAAS,EACThwI,KAAM,eACNi7qB,KAAM,wCACN3hpB,QAAS,2BAGVysrB,OAAQ,CACPp+sB,MAAO,CACNm+sB,MAAO,UACPpqgB,KAAM,UACNC,MAAO,UACP7uF,QAAS,UACT9rD,QAAS,UACT2O,KAAM,UACNynN,QAAS,UACT4ub,OAAQ,WAET9mtB,KAAM,CACLy1B,MAAO,CAAC,UAAW,UAAW,UAAW,WACzCsxrB,MAAO,CAAC,UAAW,UAAW,UAAW,aAG3CpipB,OAAQ,CACP00K,KAAM,CACL2te,KAAM,QACNC,MAAO,CACN7gc,SAAS,EACTC,QAAQ,IAGVrzO,KAAM,CACLqmM,KAAM,CACLlmO,SAAS,EACTykN,OAAQ,UACR,cAAc,GAEfwuD,QAAS,CACR8gc,OAAO,EACPrjjB,OAAQ,QACR+5gB,QAAS,CACRopC,KAAM,QACNE,OAAO,IAGT7gc,OAAQ,CACPu3Z,QAAS,CACRopC,KAAM,OACNjmjB,WAAW,MAKfomjB,UAAW,CACVh0sB,SAAS,EACTykN,OAAQ,eACRqvf,OAAO,EACPn9sB,MAAO,QACP6B,MAAO,SAER+nD,QAAS,CACR5pD,MAAO,SAER88sB,MAAO,CACNvte,KAAM,CACL2te,KAAM,UAGR9oC,MAAO,CACN7kc,KAAM,CACL2te,KAAM,QACN7zsB,SAAS,EACT8zsB,OAAO,EACPn4U,SAAU,CACTjrO,QAAQ,EACR8rC,SAAS,IAGX9qI,OAAQ,CACPw0K,KAAM,CACLlmO,SAAS,IAGX6/B,KAAM,CACL++E,UAAU,EACV34C,QAAQ,EACRwkmB,QAAS,CACR78gB,WAAW,EACXhvC,SAAU,CACTm1lB,OAAO,EACP,gBAAiB,QAKrBripB,OAAQ,CACPw0K,KAAM,CACLvvO,MAAO,WAWX,OAHC,sBAAW,sBAAO,C,IAAlB,WACC,OAAO1J,KAAK+mB,U,gCAEd,EA7HA,GCFA,2BACQ,KAAAA,SAAW,CACjBw9C,OAAQ,CACP00K,KAAM,GACN/gO,MAAO,IAER4lqB,MAAO,CACN7kc,KAAM,GACN/gO,MAAO,CAEN,CACC0+C,MAAO,UACPwoB,MAAM,EACN21M,KAAM,sBACNv9K,OACuC,SAAtC5/E,aAAaC,QAAQ,cACiB,UAAtCD,aAAaC,QAAQ,eACmB,SAAtCD,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAC9B,MAAxCD,aAAaC,QAAQ,gBAGvB2lpB,QAAS,CAER,CACC5mnB,MAAO,eACPwoB,MAAM,EACN21M,KAAM,qBACNv3Q,KAAM,gBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,UAAtC5/E,aAAaC,QAAQ,cAG9B,CACC++B,MAAO,sBACPwoB,MAAM,EACN21M,KAAM,kBACNv3Q,KAAM,uBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,SACPwoB,MAAM,EACN21M,KAAM,iCACNv3Q,KAAM,gBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,+BACPwoB,MAAM,EACN21M,KAAM,wBACNv3Q,KAAM,uBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,mBACPwoB,MAAM,EACN21M,KAAM,oBACNv3Q,KAAM,qBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAG9B,CACC++B,MAAO,SACPwoB,MAAM,EACN21M,KAAM,iCACNv3Q,KAAM,gBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,+BACPwoB,MAAM,EACN21M,KAAM,wBACNv3Q,KAAM,yBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,gBAMzE,CACC++B,MAAO,wBACPwoB,MAAM,EACN21M,KAAM,cACNv9K,OACwC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAC9B,MAAxCD,aAAaC,QAAQ,eAGtB2lpB,QAAS,CACR,CACC5mnB,MAAO,yBACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,uBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,qCACPwoB,MAAM,EACN21M,KAAM,gBACNv3Q,KAAM,4BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,oCACPwoB,MAAM,EACN21M,KAAM,aACNv3Q,KAAM,yBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,gBAmBzE,CACC++B,MAAO,eACPwoB,MAAM,EACN21M,KAAM,sBACNv9K,OACwC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAC9B,MAAxCD,aAAaC,QAAQ,eAGtB2lpB,QAAS,CACR,CACC5mnB,MAAO,eACPwoB,MAAM,EACN21M,KAAM,gBACNv3Q,KAAM,gBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,kBACPwoB,MAAM,EACN21M,KAAM,mBACNv3Q,KAAM,mBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,qBACPwoB,MAAM,EACN21M,KAAM,gBACNv3Q,KAAM,iBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,iCACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,mBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,iBACPwoB,MAAM,EACN21M,KAAM,oBACNv3Q,KAAM,gBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,gDACPwoB,MAAM,EACN21M,KAAM,mBACNv3Q,KAAM,6BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,gBAWzE,CACC++B,MAAO,oBACPwoB,MAAM,EACN21M,KAAM,sBACNv9K,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,aAGtE2lpB,QAAS,CACR,CACC5mnB,MAAO,0BACPwoB,MAAM,EACN21M,KAAM,mBACNv3Q,KAAM,2BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,kCACPwoB,MAAM,EACN21M,KAAM,gBACNv3Q,KAAM,mCACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAA4E,SAAjDD,aAAaC,QAAQ,2BAUzE,CACC++B,MAAO,MACPwoB,MAAM,EACN21M,KAAM,sBACNv9K,OACuC,SAAtC5/E,aAAaC,QAAQ,eACmB,SAAtCD,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAC9B,MAAxCD,aAAaC,QAAQ,gBAGvB2lpB,QAAS,CACR,CACC5mnB,MAAO,2BACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,kBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,yCACPwoB,MAAM,EACN21M,KAAM,aACNv3Q,KAAM,yBACN4/J,UAAW,GACX4piB,OAAQ,OAGT,CACCpwpB,MAAO,oBACPwoB,MAAM,EACN21M,KAAM,wBACNv3Q,KAAM,gBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,mBACPwoB,MAAM,EACN21M,KAAM,wBACNv3Q,KAAM,eACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,uCACPwoB,MAAM,EACN21M,KAAM,oBACNv3Q,KAAM,eACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,0BACPwoB,MAAM,EACN21M,KAAM,eACNv3Q,KAAM,sBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,oCACPwoB,MAAM,EACN21M,KAAM,eACNv3Q,KAAM,sBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,gCACPwoB,MAAM,EACN21M,KAAM,eACNv3Q,KAAM,uBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,4BACPwoB,MAAM,EACN21M,KAAM,eACNv3Q,KAAM,wBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,oCACPwoB,MAAM,EACN21M,KAAM,eACNv3Q,KAAM,wBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,sCACPwoB,MAAM,EACN21M,KAAM,eACNv3Q,KAAM,0BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,gBAIhC,CACC++B,MAAO,cACPwoB,MAAM,EACN21M,KAAM,sBACNv9K,OACwC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAC9B,MAAxCD,aAAaC,QAAQ,eAGtB2lpB,QAAS,CACR,CACC5mnB,MAAO,oBACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,+BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAG9B,CACC++B,MAAO,kCACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,yBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OACuC,SAAtC5/E,aAAaC,QAAQ,cAAiE,eAAtCD,aAAaC,QAAQ,cAIvE,CACC++B,MAAO,+BACPwoB,MAAM,EACN21M,KAAM,sBACNv9K,OAA8C,SAAtC5/E,aAAaC,QAAQ,aAC7B2lpB,QAAS,CACR,CACC5mnB,MAAO,kCACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,8BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,wCACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,2BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,qCACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,2BACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAG9B,CACC++B,MAAO,uDACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,eACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,cAE9B,CACC++B,MAAO,oCACPwoB,MAAM,EACN21M,KAAM,sBACNv3Q,KAAM,mBACN4/J,UAAW,GACX4piB,OAAQ,MACRxvmB,OAA8C,SAAtC5/E,aAAaC,QAAQ,qBAatC,OAHC,sBAAW,sBAAO,C,IAAlB,WACC,OAAO73B,KAAK+mB,U,gCAEd,EA5eA,GCAA,2BACQ,KAAAA,SAAgB,CACtBkgsB,UAAW,CACVzpsB,KAAM,CACLo5C,MAAO,YACPn5B,KAAM,wCAGRyprB,YAAa,CACZvmjB,UAAW,CACVnjJ,KAAM,CAAEo5C,MAAO,YAAan5B,KAAM,KAEnC0prB,MAAO,CACN3psB,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,KAE/B+mQ,QAAS,CACRhnR,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,KAEjC2prB,SAAU,CACT5psB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAElC4prB,SAAU,CACT7psB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAElC25kB,WAAY,CACX55lB,KAAM,CAAEo5C,MAAO,aAAcn5B,KAAM,KAEpCk0F,SAAU,CACTn0G,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAElCi/P,MAAO,CACNl/Q,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,KAE/BwjV,WAAY,CACXzjW,KAAM,CAAEo5C,MAAO,aAAcn5B,KAAM,KAEpC6prB,QAAS,CACR9psB,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,KAEjC8prB,YAAa,CACZ/psB,KAAM,CAAEo5C,MAAO,cAAen5B,KAAM,KAErC+prB,OAAQ,CACPhqsB,KAAM,CAAEo5C,MAAO,SAAUn5B,KAAM,KAEhC2gG,KAAM,CACL5gH,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,KAE9BgqrB,WAAY,CACXjqsB,KAAM,CAAEo5C,MAAO,aAAcn5B,KAAM,KAEpC+2J,QAAS,CACRh3K,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,KAEjCiqrB,SAAU,CACTlqsB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,MAGnCkqrB,SAAU,CAET,gBAAiB,CAChB38rB,aAAc,CACbxN,KAAM,CAAEo5C,MAAO,gBAAiBn5B,KAAM,KAEvCs5P,SAAU,CACTv5Q,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAElC25kB,WAAY,CACX55lB,KAAM,CAAEo5C,MAAO,aAAcn5B,KAAM,KAEpCmqrB,YAAa,CACZpqsB,KAAM,CAAEo5C,MAAO,eAAgBn5B,KAAM,KAEtCoqrB,UAAW,CACVrqsB,KAAM,CAAEo5C,MAAO,aAAcn5B,KAAM,KAEpC+gB,MAAO,CACNhhC,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,KAE/BwC,OAAQ,CACPziB,KAAM,CAAEo5C,MAAO,SAAUn5B,KAAM,KAEhCuzf,OAAQ,CACPxzgB,KAAM,CAAEo5C,MAAO,SAAUn5B,KAAM,KAEhCqqrB,aAAc,CACbtqsB,KAAM,CAAEo5C,MAAO,gBAAiBn5B,KAAM,MAIxC23E,WAAY,CACXxiE,KAAM,CACLp1B,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,KAE9BsqrB,QAAS,CACRvqsB,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,KAEjCuqrB,QAAS,CACRxqsB,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,MAIlC+5L,OAAQ,CACPywf,KAAM,CACLzqsB,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,KAE9ByqrB,QAAS,CACR1qsB,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,KAEjC,kBAAmB,CAClBjgB,KAAM,CAAEo5C,MAAO,kBAAmBn5B,KAAM,KAEzC,YAAa,CACZjgB,KAAM,CAAEo5C,MAAO,YAAan5B,KAAM,KAEnC0uC,KAAM,CACL3uD,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,KAE9B2gG,KAAM,CACL5gH,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,KAE9B0qrB,QAAS,CACR3qsB,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,KAEjC,gBAAiB,CAChBjgB,KAAM,CAAEo5C,MAAO,gBAAiBn5B,KAAM,KAEvCwyY,KAAM,CACLzyZ,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,MAI/B,yBAA0B,CACzB8hD,OAAQ,CACP/hE,KAAM,CAAEo5C,MAAO,SAAUn5B,KAAM,KAEhC,gBAAiB,CAChBjgB,KAAM,CAAEo5C,MAAO,gBAAiBn5B,KAAM,KAEvCq2I,MAAO,CACNt2J,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,KAE/Bs3P,KAAM,CACLv3Q,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,KAE9B,eAAgB,CACfjgB,KAAM,CAAEo5C,MAAO,eAAgBn5B,KAAM,KAEtC,mBAAoB,CACnBjgB,KAAM,CAAEo5C,MAAO,mBAAoBn5B,KAAM,MAI3C,oBAAqB,CACpB,eAAgB,CACfjgB,KAAM,CAAEo5C,MAAO,eAAgBn5B,KAAM,KAEtCkK,OAAQ,CACPnqB,KAAM,CAAEo5C,MAAO,SAAUn5B,KAAM,KAEhC2qrB,SAAU,CACT5qsB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAElC+2J,QAAS,CACRh3K,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,MAIlC,aAAc,CACbtgB,UAAW,CACVK,KAAM,CAAEo5C,MAAO,YAAan5B,KAAM,KAEnC,cAAe,CACdjgB,KAAM,CAAEo5C,MAAO,cAAen5B,KAAM,KAErC4qrB,MAAO,CACN7qsB,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,OAIjCuvK,MAAO,CACNxvL,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,KAE/B6qrB,KAAM,CACL9qsB,KAAM,CAAEo5C,MAAO,OAAQn5B,KAAM,SAE9B8qrB,UAAW,CACVC,UAAW,CACVhrsB,KAAM,CAAEo5C,MAAO,YAAan5B,KAAM,KAEnCgrrB,SAAU,CACTC,KAAM,CACLlrsB,KAAM,CAAEo5C,MAAO,eAAgBn5B,KAAM,KAEtC56B,IAAK,CACJ2a,KAAM,CAAEo5C,MAAO,iBAAkBn5B,KAAM,MAGzCggO,OAAQ,CACPjgP,KAAM,CAAEo5C,MAAO,SAAUn5B,KAAM,MAGjC,kBAAmB,CAClBkrrB,MAAO,CACNnrsB,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,KAE/BupS,MAAO,CACNxpT,KAAM,CAAEo5C,MAAO,QAASn5B,KAAM,MAGhC4rR,QAAS,CACR7rS,KAAM,CAAEo5C,MAAO,iBAAkBn5B,KAAM,KAExC8mC,OAAQ,CACPmoE,QAAS,CACRlvH,KAAM,CAAEo5C,MAAO,UAAWn5B,KAAM,0BAGlCmrrB,QAAS,CACRprsB,KAAM,CAAEo5C,MAAO,eAAgBn5B,KAAM,KAEtCzI,MAAO,CACN6zrB,IAAK,CACJrrsB,KAAM,CAAEo5C,MAAO,gBAAiBn5B,KAAM,GAAIsprB,WAAW,IAEtD+B,IAAK,CACJtrsB,KAAM,CAAEo5C,MAAO,uBAAwBn5B,KAAM,GAAIsprB,WAAW,KAG9DgC,OAAQ,CACP,WAAY,CAAEvrsB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAC/C,WAAY,CAAEjgB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAC/C,WAAY,CAAEjgB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,KAC/C,WAAY,CAAEjgB,KAAM,CAAEo5C,MAAO,WAAYn5B,KAAM,OAOlD,OAHC,sBAAW,sBAAO,C,IAAlB,WACC,OAAOz9B,KAAK+mB,U,gCAEd,EAhPA,GCgBA,cAYC,aALQ,KAAAipoB,OAAmB,GAM1BhwpB,KAAKgptB,kBAAoB,IAAIt6sB,EAAA,EAAgB1O,KAAKilC,S,OAOnD,YAAAy2oB,UAAA,SAAUF,GACTx7qB,KAAKo4B,OAASojpB,EAGdx7qB,KAAKilC,QAAU,CACds/B,OAAQ,GACR0kpB,cAAe,GACfC,YAAa,GACbC,WAAY,IAIbnptB,KAAKoptB,aACLpptB,KAAKqptB,aAGLrptB,KAAKsptB,aACLtptB,KAAKuptB,gBAGLvptB,KAAKwptB,YAGLxptB,KAAKyptB,aAELzptB,KAAK0ptB,YAEL1ptB,KAAKgptB,kBAAkBnltB,KAAK7D,KAAKilC,UASlC,YAAA0krB,WAAA,SAAWx4kB,EAAel/G,GACzB,GAAIk/G,EAAM,CACT,IAAMlsG,EAAU,OAAejlC,KAAKilC,QAASksG,IAAS,GACtD,OAAIl/G,GAAY1nB,MAAMyL,QAAQivB,GACtBA,EAAQ+K,KAAK,KAEd/K,EAAQhT,WAEhB,OAAOjyB,KAAKilC,SAML,YAAAmkrB,WAAR,WACC,GAAI,OAAepptB,KAAKo4B,OAAQ,mBAAoB,CACnD,IAAMwxrB,EAAgB,OAAe5ptB,KAAKo4B,OAAQ,mBAAmBnG,WACjE23rB,GAC2BA,EAAcrnsB,MAAM,KACtClP,QAAQ,SAAAsgX,GAAY,OAAAhpV,SAAS7H,KAAKngC,UAAUE,IAAI8wX,KAKd,UAA/C,OAAe3zX,KAAKo4B,OAAQ,gBAC5B,OAAep4B,KAAKo4B,OAAQ,gCAE5BuS,SAAS7H,KAAKv3B,MAAMs+sB,gBAAkB,QAAU,OAAe7ptB,KAAKo4B,OAAQ,8BAAgC,MAI7GuS,SAAS7H,KAAKngC,UAAUE,IAAI,yBAC5B8nC,SAAS7H,KAAKngC,UAAUE,IAAI,wBAC5B8nC,SAAS7H,KAAKngC,UAAUE,IAAI,8BAMrB,YAAAwmtB,WAAR,aAKQ,YAAAC,WAAR,WAEK,OAAetptB,KAAKo4B,OAAQ,8BAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,oBAC5B,QAAgB7C,KAAKilC,QAAS,SAAU,qBAExC0F,SAAS7H,KAAKngC,UAAUE,IAAI,qBAGzB,OAAe7C,KAAKo4B,OAAQ,8BAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,2BAC5B,QAAgB7C,KAAKilC,QAAS,gBAAiB,4BAG5C,OAAejlC,KAAKo4B,OAAQ,4BAC/B,QACCp4B,KAAKilC,QACL,cACA,0BAA4B,OAAejlC,KAAKo4B,OAAQ,6BAQnD,YAAAmxrB,cAAR,WAEK,OAAevptB,KAAKo4B,OAAQ,oBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,uBAGzB,OAAe7C,KAAKo4B,OAAQ,sBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,yBAGzB,OAAe7C,KAAKo4B,OAAQ,oBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,iBAAmB,OAAe7C,KAAKo4B,OAAQ,qBAOrE,YAAAoxrB,UAAR,YAC2D,IAAtD,OAAexptB,KAAKo4B,OAAQ,wBAIhCuS,SAAS7H,KAAKngC,UAAUE,IAAI,qBAGxB,OAAe7C,KAAKo4B,OAAQ,qBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,mBAC5B,QAAgB7C,KAAKilC,QAAS,QAAS,oBAEvC0F,SAAS7H,KAAKngC,UAAUE,IAAI,oBAIzB,OAAe7C,KAAKo4B,OAAQ,gCAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,sBAKzB,OAAe7C,KAAKo4B,OAAQ,wBAC/B,QAAgBp4B,KAAKilC,QAAS,aAAc,6BAQtC,YAAAwkrB,WAAR,WAEK,OAAezptB,KAAKo4B,OAAQ,sBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,qBAOtB,YAAA6mtB,UAAR,WACK,OAAe1ptB,KAAKo4B,OAAQ,qBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,kBAAoB,OAAe7C,KAAKo4B,OAAQ,qBAEzE,OAAep4B,KAAKo4B,OAAQ,qCAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,kBAAoB,OAAe7C,KAAKo4B,OAAQ,qCAEzE,OAAep4B,KAAKo4B,OAAQ,oBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,YAAc,OAAe7C,KAAKo4B,OAAQ,oBAEnE,OAAep4B,KAAKo4B,OAAQ,oBAC/BuS,SAAS7H,KAAKngC,UAAUE,IAAI,YAAc,OAAe7C,KAAKo4B,OAAQ,qB,yBAnM5D0xrB,EAAgB,Q,sCAAhBA,M,EADb,G,0BCfC,iBACC,QACD,Q,kBADC,+B,uBAMC,gBASC,YACC,yNAED,OACD,Q,0BAhBF,gBACC,gBACC,eAAM,QAAc,OACpB,uBAoBD,OACD,Q,kBAtBQ,+BAGJ,+L,0BAqBJ,gBACC,gBAA0B,QAAa,OACvC,iBACC,iBACA,iBACD,OAEA,gBAA0B,QAAa,OACxC,Q,kBAP2B,wBAMA,yBCnC5B,kBAYC,WAAmBvyrB,GAAA,KAAAA,SAFV,KAAAwyrB,aAAc,E,OAIvB,YAAA15lB,SAAA,WAC0C,QAArCz4F,aAAaC,QAAQ,cAA2B73B,KAAKgqtB,UACxDhqtB,KAAKgqtB,QAAUpyrB,aAAaC,QAAQ,UAErC73B,KAAKiqtB,UAAYryrB,aAAaC,QAAQ,aACtC73B,KAAKkqtB,QAAUtyrB,aAAaC,QAAQ,cACpC73B,KAAKmqtB,QAAUvyrB,aAAaC,QAAQ,e,sCAfzBuyrB,GAAoB,Y,uBAApBA,EAAoB,iwBDRjC,gBACC,wBAIA,uBA0BA,uBASD,Q,MAvC0C,mCAId,2FA0BS,8E,+5DC5BrC,G,gICMG,uBAAoE,QAAgB,Q,uBAAvC,oBAAuB,uB,sCATvE,gBAMC,2BACC,oBAAW,0BAAY,OACvB,uBAA0B,qEAAuB,iEAChD,8BACD,OACD,OACD,O,qBAJ4B,oCACI,uCCFhC,kBAYC,WAAoB7yrB,EAAwB8yrB,GAA5C,WAAoB,KAAA9yrB,SAAwB,KAAA8yrB,wBALrC,KAAAC,aAAc,EACd,KAAAC,YAAsD,GACtD,KAAAC,UAAY,GACF,KAAAC,MAA8B,IAAI,IAGlDJ,EAAsBvtc,6BAA6B54Q,UAAU,SAAA4L,GACvDA,IACL,EAAKy6sB,YAAcz6sB,EACC,IAAhBA,EAAK3L,QACR,EAAKqmtB,UAAY16sB,EAAK,GAAGq2G,IACzB,EAAKukmB,eAEA9yrB,aAAaC,QAAQ,sBAA8D,SAAtCD,aAAaC,QAAQ,cACtE,KAAK0mQ,KAAK,aAAS,6BAAwB,c,OAM/C,YAAAluK,SAAA,WACCrwH,KAAK2qtB,UAAkD,WAAtC/yrB,aAAaC,QAAQ,aAA4B,EAAI,EAEtE73B,KAAKsqtB,YAAoD,SAAtC1yrB,aAAaC,QAAQ,aAEpC73B,KAAKsqtB,aACRtqtB,KAAK4qtB,iBAGFhzrB,aAAaC,QAAQ,uBACxB73B,KAAKwqtB,UAAY5yrB,aAAaC,QAAQ,uBAIxC,YAAA+yrB,eAAA,WACC5qtB,KAAKqqtB,sBAAsBjtc,kCAG5B,YAAAstc,YAAA,WACC9yrB,aAAaW,QAAQ,oBAAqBv4B,KAAKwqtB,WAC/CxqtB,KAAKyqtB,MAAMvosB,KAAKliB,KAAKwqtB,WACrB3kgB,EAAE,gBAAgBt8H,QACM,oBAApBvpF,KAAKu3B,OAAO4c,KACf0xK,EAAE,kBAAkBt8H,S,sCA7CVshoB,GAAmB,uB,uBAAnBA,EAAmB,ogBDZhC,uB,KACE,6C,oKCMF,G,sCCPA,gBAKC,6DAEA,mBAAmG,qBAAU,OAC9G,QCHA,kBAYC,WAAoBvzrB,GAAA,KAAAA,QAPpB,KAAAyyrB,aAAc,E,OASd,YAAA15lB,SAAA,WAEErwH,KAAK+ptB,YADoC,UAAtCnyrB,aAAaC,QAAQ,cAO1B,YAAAgnoB,WAAA,WACCjnoB,aAAalnB,QACb1Q,KAAKs3B,MAAMoB,SAAS,IAAI,O,sCApBboyrB,GAAkB,a,uBAAlBA,EAAkB,6gBDT/B,uB,KACE,+B,2CCIF,G,aCAA,cAKC,WACSvzrB,EACA04S,EACAnF,GAFA,KAAAvzS,SACA,KAAA04S,oBACA,KAAAnF,c,OAGT,YAAA+zV,WAAA,sBACC7+pB,KAAKiwU,kBAAkBO,YAAYtsU,UAAU,SAAAusU,GAC5C74S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,mBAC7C94S,aAAaW,QAAQ,aAAck4S,EAAO,GAAGC,mBAC7C,EAAK5F,YAAYh4R,UAAU5uC,UAAU,SAAA6mtB,GACpC,IAAIC,EAAUD,EAAM1ltB,KAAK,SAAAk2B,GAAK,OAAe,MAAfA,EAAEyhpB,YAC5BguC,GAC0B,OAAzBA,EAAQ1/Y,cAAkD,KAAzB0/Y,EAAQ1/Y,mBAAgD7mU,IAAzBumtB,EAAQ1/Y,eAG3E0/Y,EAAUD,EAAM1ltB,KACf,SAAAk2B,GACC,OAAmB,OAAnBA,EAAE+vS,cACiB,KAAnB/vS,EAAE+vS,mBACiB7mU,IAAnB82B,EAAE+vS,cACF/vS,EAAEyhpB,YAAcguC,EAAQrxrB,UAP1B,EAAKpC,OAAOiD,cAAc,IAAMwwrB,EAAQ1/Y,eAYC,UAAtC1zS,aAAaC,QAAQ,cAAkE,KAAtCD,aAAaC,QAAQ,aACzE,EAAKN,OAAOiD,cAAc,eAEe,QAArC5C,aAAaC,QAAQ,cACxB,EAAKN,OAAOiD,cAAc,wB,sCA/BpBywrB,GAAmB,kC,uBAAnBA,EAAmB,oUCThC,gBAKC,+BAAS,EAAApsD,eAET,iBACC,cACD,OACD,S,sCDLA,GEFA,cAUC,WAAoBtnoB,GAAA,KAAAA,S,OAGpB,YAAA84F,SAAA,aAEA,YAAAj2F,OAAA,WACCxC,aAAaC,QAAQ,aACHD,aAAaC,QAAQ,aACrBD,aAAaC,QAAQ,aACvCD,aAAalnB,QACbknB,aAAa4jI,WAAW,eAIxBrwI,OAAOmP,SAASuzS,U,sCApBLq9Y,GAAe,Y,uBAAfA,EAAe,sVCP5B,gBAKC,+BAAS,EAAA9wrB,WAET,iBACC,cACD,OACD,S,sCDPA,GECA,cAeC,WAAoBoxS,EAAiDj0S,GAAjD,KAAAi0S,sBAAiD,KAAAj0S,SANrE,KAAA4zrB,cAA+B,CAC9B3+rB,OAAQ,OACR4+rB,YAAa,+BACbC,aAAc,oD,OAKf,YAAAh7lB,SAAA,WACCrwH,KAAK+rU,WAAa/rU,KAAKwrU,oBAAoBswW,gBAC3C97qB,KAAKsrtB,aAAetrtB,KAAKwrU,oBAAoBpmS,UAAU,uB,sCAd5CmmrB,GAAqB,uB,uBAArBA,EAAqB,8ZCRlC,gBACC,gBACC,cACC,gBACD,OACD,OACA,gBACC,yBACA,4BACA,mBAMC,eACD,OAIA,wBACA,0BAIA,qBAED,OACD,Q,MAzBmB,sCAOhB,yC,0IDPH,G,0EECA,cAaC,WAAoB//Y,EAAkDp0S,GAAlD,KAAAo0S,sBAAkD,KAAAp0S,gBAR/D,KAAA4tC,MAAgBtqB,KAAKqR,M,OAiB5B,YAAAskE,SAAA,WACC,IAAMj4F,EAASp4B,KAAKwrU,oBAAoBpmS,YAGxCplC,KAAKwrtB,MAAwD,UAAhD,OAAepzrB,EAAQ,qBACpCp4B,KAAK+pL,QAAU/pL,KAAKo3B,cAAcgB,OAAO2xJ,S,sCAvB9B0hiB,GAAe,wB,uBAAfA,EAAe,wQCR5B,gBACC,gBACC,gBACC,Q,eAEA,2CAED,OAMA,eAA+B,QAAuB,OACvD,OACD,Q,MAd2B,2CAExB,2DAU8B,0C,mDDTjC,G,2JE6BK,iBAKC,eACC,iBACC,eACD,OACA,iBACC,iBAAyC,sCAA2B,OACpE,iBAAwC,oBAAS,OAClD,OACD,OACA,eACC,kBACC,gBACD,OACA,kBACC,kBAAyC,sCAA0B,OACnE,kBAAwC,qBAAS,OAClD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,yCAA6B,OACtE,kBAAwC,qBAAS,OAClD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,sCAA0B,OACnE,kBAAwC,qBAAS,OAClD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,sCAA0B,OACnE,kBAAwC,qBAAS,OAClD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,yDAA6C,OACtF,kBAAwC,sBAAU,OACnD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,qCAAyB,OAClE,kBAAwC,sBAAU,OACnD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,oCAAwB,OACjE,kBAAwC,sBAAU,OACnD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,wCAA4B,OACrE,kBAAwC,sBAAU,OACnD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,6CAAiC,OAC1E,kBAAwC,sBAAU,OACnD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,yCAA6B,OACtE,kBAAwC,sBAAU,OACnD,OACD,OACA,gBACC,kBACC,gBACD,OACA,kBACC,kBAAyC,sCAA0B,OACnE,kBAAwC,sBAAU,OACnD,OACD,OACD,Q,KAhHC,oCAAgD,sB,uBAqHjD,iBACC,eACC,iBACC,eACD,OACA,iBACC,iBAA4C,sCAA2B,OACvE,iBAA2C,iCAAsB,OAClE,OACD,OAEA,eACC,kBACC,gBACD,OACA,kBACC,kBAA4C,gCAAoB,OAChE,kBAA2C,wBAAY,OACxD,OACD,OAEA,gBACC,kBACC,gBACD,OACA,kBACC,kBAA4C,kCAAsB,OAClE,kBAA2C,kCAAsB,OAClE,OACD,OAEA,gBACC,kBACC,gBACD,OACA,kBACC,kBAA4C,uCAA2B,OACvE,kBAA2C,2BAAe,OAC3D,OACD,OAEA,gBACC,kBACC,gBACD,OACA,kBACC,kBAA4C,sCAA0B,OACtE,kBAA2C,4BAAgB,OAC5D,OACD,OAEA,gBACC,kBACC,gBACD,OACA,kBACC,kBAA4C,mCAAuB,OACnE,kBAA2C,uBAAW,OACvD,OACD,OAEA,gBACC,kBACC,gBACD,OACA,kBACC,kBAA4C,4CAAgC,OAC5E,kBAA2C,4BAAgB,OAC5D,OACD,OAEA,gBACC,kBACC,gBACD,OACA,kBACC,kBAA4C,sCAA0B,OACtE,kBAA2C,4BAAgB,OAC5D,OACD,OACD,Q,KAhFsB,2B,uBAqFtB,iBACC,kBACC,iBAA4D,wBAAa,OAEzE,iBACC,mBAAoC,gCAAqB,OACzD,iBACC,kBACC,gBACC,oBACA,gBACD,OACD,OACD,OACD,OACA,kBACC,oBAAoC,iCAAqB,OACzD,kBACC,mBACC,iBACC,oBACA,gBACD,OACD,OACD,OACD,OACA,kBACC,oBAAoC,2BAAe,OACnD,kBACC,mBACC,iBACC,oBACA,gBACD,OACD,OACD,OACD,OAEA,kBAEA,kBAA4D,mBAAO,OAEnE,kBACC,oBAAoC,6BAAiB,OACrD,kBACC,mBACC,iBACC,oBACA,gBACD,OACD,OACD,OACD,OACA,kBACC,oBAAoC,iCAAqB,OACzD,kBACC,mBACC,iBACC,oBACA,gBACD,OACD,OAC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","file":"main.da7765859c69a058b2c5.js","sourcesContent":["import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isDataSource, _VIEW_REPEATER_STRATEGY, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/bidi';\nimport * as ɵngcc2 from '@angular/cdk/platform';\nimport * as ɵngcc3 from '@angular/cdk/scrolling';\n\nconst _c0 = [[[\"caption\"]], [[\"colgroup\"], [\"col\"]]];\nconst _c1 = [\"caption\", \"colgroup, col\"];\nfunction CdkTextColumn_th_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"text-align\", ctx_r0.justify);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.headerText, \" \");\n} }\nfunction CdkTextColumn_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const data_r2 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"text-align\", ctx_r1.justify);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.dataAccessor(data_r2, ctx_r1.name), \" \");\n} }\nexport { DataSource } from '@angular/cdk/collections';\nimport { Platform } from '@angular/cdk/platform';\nimport { ViewportRuler, ScrollingModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { InjectionToken, Directive, TemplateRef, Inject, Optional, Input, ContentChild, ElementRef, Injectable, NgZone, IterableDiffers, ViewContainerRef, Component, ChangeDetectionStrategy, ViewEncapsulation, EmbeddedViewRef, ChangeDetectorRef, Attribute, SkipSelf, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { Subject, from, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n this._hasStickyChanged = false;\n }\n /** Whether sticky positioning should be applied. */\n get sticky() { return this._sticky; }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass CdkCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkCellDef.ɵfac = function CdkCellDef_Factory(t) { return new (t || CdkCellDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCdkCellDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkCellDef, selectors: [[\"\", \"cdkCellDef\", \"\"]] });\nCdkCellDef.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkCellDef, [{\n type: Directive,\n args: [{ selector: '[cdkCellDef]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass CdkHeaderCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkHeaderCellDef.ɵfac = function CdkHeaderCellDef_Factory(t) { return new (t || CdkHeaderCellDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCdkHeaderCellDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkHeaderCellDef, selectors: [[\"\", \"cdkHeaderCellDef\", \"\"]] });\nCdkHeaderCellDef.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkHeaderCellDef, [{\n type: Directive,\n args: [{ selector: '[cdkHeaderCellDef]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass CdkFooterCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkFooterCellDef.ɵfac = function CdkFooterCellDef_Factory(t) { return new (t || CdkFooterCellDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCdkFooterCellDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkFooterCellDef, selectors: [[\"\", \"cdkFooterCellDef\", \"\"]] });\nCdkFooterCellDef.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFooterCellDef, [{\n type: Directive,\n args: [{ selector: '[cdkFooterCellDef]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n// Boilerplate for applying mixins to CdkColumnDef.\n/** @docs-private */\nclass CdkColumnDefBase {\n}\nconst _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nclass CdkColumnDef extends _CdkColumnDefBase {\n constructor(_table) {\n super();\n this._table = _table;\n this._stickyEnd = false;\n }\n /** Unique name for this column. */\n get name() { return this._name; }\n set name(name) { this._setNameInput(name); }\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(v) {\n const prevValue = this._stickyEnd;\n this._stickyEnd = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._stickyEnd;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/ig, '-');\n this._updateColumnCssClassName();\n }\n }\n}\nCdkColumnDef.ɵfac = function CdkColumnDef_Factory(t) { return new (t || CdkColumnDef)(ɵngcc0.ɵɵdirectiveInject(CDK_TABLE, 8)); };\nCdkColumnDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkColumnDef, selectors: [[\"\", \"cdkColumnDef\", \"\"]], contentQueries: function CdkColumnDef_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkCellDef, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkHeaderCellDef, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkFooterCellDef, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cell = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerCell = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerCell = _t.first);\n } }, inputs: { sticky: \"sticky\", name: [\"cdkColumnDef\", \"name\"], stickyEnd: \"stickyEnd\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkColumnDef.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [CDK_TABLE,] }, { type: Optional }] }\n];\nCdkColumnDef.propDecorators = {\n name: [{ type: Input, args: ['cdkColumnDef',] }],\n stickyEnd: [{ type: Input, args: ['stickyEnd',] }],\n cell: [{ type: ContentChild, args: [CdkCellDef,] }],\n headerCell: [{ type: ContentChild, args: [CdkHeaderCellDef,] }],\n footerCell: [{ type: ContentChild, args: [CdkFooterCellDef,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkColumnDef, [{\n type: Directive,\n args: [{\n selector: '[cdkColumnDef]',\n inputs: ['sticky'],\n providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; }, { name: [{\n type: Input,\n args: ['cdkColumnDef']\n }], stickyEnd: [{\n type: Input,\n args: ['stickyEnd']\n }], cell: [{\n type: ContentChild,\n args: [CdkCellDef]\n }], headerCell: [{\n type: ContentChild,\n args: [CdkHeaderCellDef]\n }], footerCell: [{\n type: ContentChild,\n args: [CdkFooterCellDef]\n }] }); })();\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n // If IE 11 is dropped before we switch to setting a single class name, change to multi param\n // with destructuring.\n const classList = elementRef.nativeElement.classList;\n for (const className of columnDef._columnCssClassName) {\n classList.add(className);\n }\n }\n}\n/** Header cell template container that adds the right classes and role. */\nclass CdkHeaderCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n}\nCdkHeaderCell.ɵfac = function CdkHeaderCell_Factory(t) { return new (t || CdkHeaderCell)(ɵngcc0.ɵɵdirectiveInject(CdkColumnDef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCdkHeaderCell.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkHeaderCell, selectors: [[\"cdk-header-cell\"], [\"th\", \"cdk-header-cell\", \"\"]], hostAttrs: [\"role\", \"columnheader\", 1, \"cdk-header-cell\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkHeaderCell.ctorParameters = () => [\n { type: CdkColumnDef },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkHeaderCell, [{\n type: Directive,\n args: [{\n selector: 'cdk-header-cell, th[cdk-header-cell]',\n host: {\n 'class': 'cdk-header-cell',\n 'role': 'columnheader'\n }\n }]\n }], function () { return [{ type: CdkColumnDef }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/** Footer cell template container that adds the right classes and role. */\nclass CdkFooterCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n}\nCdkFooterCell.ɵfac = function CdkFooterCell_Factory(t) { return new (t || CdkFooterCell)(ɵngcc0.ɵɵdirectiveInject(CdkColumnDef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCdkFooterCell.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkFooterCell, selectors: [[\"cdk-footer-cell\"], [\"td\", \"cdk-footer-cell\", \"\"]], hostAttrs: [\"role\", \"gridcell\", 1, \"cdk-footer-cell\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkFooterCell.ctorParameters = () => [\n { type: CdkColumnDef },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFooterCell, [{\n type: Directive,\n args: [{\n selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n host: {\n 'class': 'cdk-footer-cell',\n 'role': 'gridcell'\n }\n }]\n }], function () { return [{ type: CdkColumnDef }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/** Cell template container that adds the right classes and role. */\nclass CdkCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n}\nCdkCell.ɵfac = function CdkCell_Factory(t) { return new (t || CdkCell)(ɵngcc0.ɵɵdirectiveInject(CdkColumnDef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCdkCell.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkCell, selectors: [[\"cdk-cell\"], [\"td\", \"cdk-cell\", \"\"]], hostAttrs: [\"role\", \"gridcell\", 1, \"cdk-cell\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkCell.ctorParameters = () => [\n { type: CdkColumnDef },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkCell, [{\n type: Directive,\n args: [{\n selector: 'cdk-cell, td[cdk-cell]',\n host: {\n 'class': 'cdk-cell',\n 'role': 'gridcell'\n }\n }]\n }], function () { return [{ type: CdkColumnDef }, { type: ɵngcc0.ElementRef }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @docs-private\n */\nclass _Schedule {\n constructor() {\n this.tasks = [];\n this.endTasks = [];\n }\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nclass _CoalescedStyleScheduler {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n this._currentSchedule = null;\n this._destroyed = new Subject();\n }\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n /** Prevent any further tasks from running. */\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._getScheduleObservable().pipe(takeUntil(this._destroyed)).subscribe(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n });\n }\n _getScheduleObservable() {\n // Use onStable when in the context of an ongoing change detection cycle so that we\n // do not accidentally trigger additional cycles.\n return this._ngZone.isStable ?\n from(Promise.resolve(undefined)) :\n this._ngZone.onStable.pipe(take(1));\n }\n}\n_CoalescedStyleScheduler.ɵfac = function _CoalescedStyleScheduler_Factory(t) { return new (t || _CoalescedStyleScheduler)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\n_CoalescedStyleScheduler.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: _CoalescedStyleScheduler, factory: _CoalescedStyleScheduler.ɵfac });\n_CoalescedStyleScheduler.ctorParameters = () => [\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_CoalescedStyleScheduler, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = ``;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nclass BaseRowDef {\n constructor(\n /** @docs-private */ template, _differs) {\n this.template = template;\n this._differs = _differs;\n }\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = (changes['columns'] && changes['columns'].currentValue) || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n }\n else {\n return column.cell.template;\n }\n }\n}\nBaseRowDef.ɵfac = function BaseRowDef_Factory(t) { return new (t || BaseRowDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers)); };\nBaseRowDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: BaseRowDef, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nBaseRowDef.ctorParameters = () => [\n { type: TemplateRef },\n { type: IterableDiffers }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BaseRowDef, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }]; }, null); })();\n// Boilerplate for applying mixins to CdkHeaderRowDef.\n/** @docs-private */\nclass CdkHeaderRowDefBase extends BaseRowDef {\n}\nconst _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass CdkHeaderRowDef extends _CdkHeaderRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkHeaderRowDef.ɵfac = function CdkHeaderRowDef_Factory(t) { return new (t || CdkHeaderRowDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(CDK_TABLE, 8)); };\nCdkHeaderRowDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkHeaderRowDef, selectors: [[\"\", \"cdkHeaderRowDef\", \"\"]], inputs: { columns: [\"cdkHeaderRowDef\", \"columns\"], sticky: [\"cdkHeaderRowDefSticky\", \"sticky\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\nCdkHeaderRowDef.ctorParameters = () => [\n { type: TemplateRef },\n { type: IterableDiffers },\n { type: undefined, decorators: [{ type: Inject, args: [CDK_TABLE,] }, { type: Optional }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkHeaderRowDef, [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderRowDef]',\n inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky']\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; }, null); })();\n// Boilerplate for applying mixins to CdkFooterRowDef.\n/** @docs-private */\nclass CdkFooterRowDefBase extends BaseRowDef {\n}\nconst _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass CdkFooterRowDef extends _CdkFooterRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkFooterRowDef.ɵfac = function CdkFooterRowDef_Factory(t) { return new (t || CdkFooterRowDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(CDK_TABLE, 8)); };\nCdkFooterRowDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkFooterRowDef, selectors: [[\"\", \"cdkFooterRowDef\", \"\"]], inputs: { columns: [\"cdkFooterRowDef\", \"columns\"], sticky: [\"cdkFooterRowDefSticky\", \"sticky\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\nCdkFooterRowDef.ctorParameters = () => [\n { type: TemplateRef },\n { type: IterableDiffers },\n { type: undefined, decorators: [{ type: Inject, args: [CDK_TABLE,] }, { type: Optional }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFooterRowDef, [{\n type: Directive,\n args: [{\n selector: '[cdkFooterRowDef]',\n inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky']\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; }, null); })();\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass CdkRowDef extends BaseRowDef {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n}\nCdkRowDef.ɵfac = function CdkRowDef_Factory(t) { return new (t || CdkRowDef)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(CDK_TABLE, 8)); };\nCdkRowDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkRowDef, selectors: [[\"\", \"cdkRowDef\", \"\"]], inputs: { columns: [\"cdkRowDefColumns\", \"columns\"], when: [\"cdkRowDefWhen\", \"when\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkRowDef.ctorParameters = () => [\n { type: TemplateRef },\n { type: IterableDiffers },\n { type: undefined, decorators: [{ type: Inject, args: [CDK_TABLE,] }, { type: Optional }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkRowDef, [{\n type: Directive,\n args: [{\n selector: '[cdkRowDef]',\n inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen']\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; }, null); })();\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nclass CdkCellOutlet {\n constructor(_viewContainer) {\n this._viewContainer = _viewContainer;\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n}\nCdkCellOutlet.ɵfac = function CdkCellOutlet_Factory(t) { return new (t || CdkCellOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nCdkCellOutlet.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkCellOutlet, selectors: [[\"\", \"cdkCellOutlet\", \"\"]] });\n/**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\nCdkCellOutlet.mostRecentCellOutlet = null;\nCdkCellOutlet.ctorParameters = () => [\n { type: ViewContainerRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkCellOutlet, [{\n type: Directive,\n args: [{ selector: '[cdkCellOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, null); })();\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass CdkHeaderRow {\n}\nCdkHeaderRow.ɵfac = function CdkHeaderRow_Factory(t) { return new (t || CdkHeaderRow)(); };\nCdkHeaderRow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CdkHeaderRow, selectors: [[\"cdk-header-row\"], [\"tr\", \"cdk-header-row\", \"\"]], hostAttrs: [\"role\", \"row\", 1, \"cdk-header-row\"], decls: 1, vars: 0, consts: [[\"cdkCellOutlet\", \"\"]], template: function CdkHeaderRow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n } }, directives: [CdkCellOutlet], encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkHeaderRow, [{\n type: Component,\n args: [{\n selector: 'cdk-header-row, tr[cdk-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-header-row',\n 'role': 'row'\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None\n }]\n }], null, null); })();\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass CdkFooterRow {\n}\nCdkFooterRow.ɵfac = function CdkFooterRow_Factory(t) { return new (t || CdkFooterRow)(); };\nCdkFooterRow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CdkFooterRow, selectors: [[\"cdk-footer-row\"], [\"tr\", \"cdk-footer-row\", \"\"]], hostAttrs: [\"role\", \"row\", 1, \"cdk-footer-row\"], decls: 1, vars: 0, consts: [[\"cdkCellOutlet\", \"\"]], template: function CdkFooterRow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n } }, directives: [CdkCellOutlet], encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFooterRow, [{\n type: Component,\n args: [{\n selector: 'cdk-footer-row, tr[cdk-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-footer-row',\n 'role': 'row'\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None\n }]\n }], null, null); })();\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass CdkRow {\n}\nCdkRow.ɵfac = function CdkRow_Factory(t) { return new (t || CdkRow)(); };\nCdkRow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CdkRow, selectors: [[\"cdk-row\"], [\"tr\", \"cdk-row\", \"\"]], hostAttrs: [\"role\", \"row\", 1, \"cdk-row\"], decls: 1, vars: 0, consts: [[\"cdkCellOutlet\", \"\"]], template: function CdkRow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n } }, directives: [CdkCellOutlet], encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkRow, [{\n type: Component,\n args: [{\n selector: 'cdk-row, tr[cdk-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-row',\n 'role': 'row'\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None\n }]\n }], null, null); })();\n/** Row that can be used to display a message when no data is shown in the table. */\nclass CdkNoDataRow {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCdkNoDataRow.ɵfac = function CdkNoDataRow_Factory(t) { return new (t || CdkNoDataRow)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCdkNoDataRow.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkNoDataRow, selectors: [[\"ng-template\", \"cdkNoDataRow\", \"\"]] });\nCdkNoDataRow.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkNoDataRow, [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkNoDataRow]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, \n /**\n * @deprecated `_coalescedStyleScheduler` parameter to become required.\n * @breaking-change 11.0.0\n */\n _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._cachedCellWidths = [];\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`,\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row);\n for (let i = 0; i < row.children.length; i++) {\n elementsToClear.push(row.children[i]);\n }\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._scheduleStyleChanges(() => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {\n if (!rows.length || !this._isBrowser || !(stickyStartStates.some(state => state) ||\n stickyEndStates.some(state => state))) {\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({ sizes: [] });\n this._positionListener.stickyEndColumnsUpdated({ sizes: [] });\n }\n return;\n }\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n this._scheduleStyleChanges(() => {\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1 ?\n [] :\n cellWidths\n .slice(0, lastStickyStart + 1)\n .map((width, index) => stickyStartStates[index] ? width : null)\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1 ?\n [] :\n cellWidths\n .slice(firstStickyEnd)\n .map((width, index) => stickyEndStates[index + firstStickyEnd] ? width : null)\n .reverse()\n });\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n stickyOffsets[rowIndex] = stickyOffset;\n if (!states[rowIndex]) {\n continue;\n }\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable ?\n Array.from(row.children) : [row];\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n const borderedRowIndex = states.lastIndexOf(true);\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._scheduleStyleChanges(() => {\n var _a, _b;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n (_a = this._positionListener) === null || _a === void 0 ? void 0 : _a.stickyHeaderRowsUpdated({ sizes: stickyCellHeights, elements: elementsToStick });\n }\n else {\n (_b = this._positionListener) === null || _b === void 0 ? void 0 : _b.stickyFooterRowsUpdated({ sizes: stickyCellHeights, elements: elementsToStick });\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n const tfoot = tableElement.querySelector('tfoot');\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._scheduleStyleChanges(() => {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n }\n else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n });\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n }\n else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1,\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n let cell = firstRowCells[i];\n cellWidths.push(cell.getBoundingClientRect().width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Schedules styles to be applied when the style scheduler deems appropriate.\n * @breaking-change 11.0.0 This method can be removed in favor of calling\n * `CoalescedStyleScheduler.schedule` directly once the scheduler is a required parameter.\n */\n _scheduleStyleChanges(changes) {\n if (this._coalescedStyleScheduler) {\n this._coalescedStyleScheduler.schedule(changes);\n }\n else {\n changes();\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to find an unexisting column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` +\n `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' +\n 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = new InjectionToken('CDK_SPL');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nclass DataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nDataRowOutlet.ɵfac = function DataRowOutlet_Factory(t) { return new (t || DataRowOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nDataRowOutlet.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: DataRowOutlet, selectors: [[\"\", \"rowOutlet\", \"\"]] });\nDataRowOutlet.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataRowOutlet, [{\n type: Directive,\n args: [{ selector: '[rowOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nclass HeaderRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nHeaderRowOutlet.ɵfac = function HeaderRowOutlet_Factory(t) { return new (t || HeaderRowOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nHeaderRowOutlet.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: HeaderRowOutlet, selectors: [[\"\", \"headerRowOutlet\", \"\"]] });\nHeaderRowOutlet.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeaderRowOutlet, [{\n type: Directive,\n args: [{ selector: '[headerRowOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nclass FooterRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nFooterRowOutlet.ɵfac = function FooterRowOutlet_Factory(t) { return new (t || FooterRowOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFooterRowOutlet.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: FooterRowOutlet, selectors: [[\"\", \"footerRowOutlet\", \"\"]] });\nFooterRowOutlet.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FooterRowOutlet, [{\n type: Directive,\n args: [{ selector: '[footerRowOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nclass NoDataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nNoDataRowOutlet.ɵfac = function NoDataRowOutlet_Factory(t) { return new (t || NoDataRowOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNoDataRowOutlet.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NoDataRowOutlet, selectors: [[\"\", \"noDataRowOutlet\", \"\"]] });\nNoDataRowOutlet.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoDataRowOutlet, [{\n type: Directive,\n args: [{ selector: '[noDataRowOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n \n \n \n \n \n \n`;\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * @docs-private\n */\nclass RowViewRef extends EmbeddedViewRef {\n}\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nclass CdkTable {\n constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform, \n /**\n * @deprecated `_coalescedStyleScheduler`, `_viewRepeater` and `_viewportRuler`\n * parameters to become required.\n * @breaking-change 11.0.0\n */\n _viewRepeater, _coalescedStyleScheduler, _stickyPositioningListener, \n // Optional for backwards compatibility. The viewport ruler is provided in root. Therefore,\n // this property will never be null.\n // tslint:disable-next-line: lightweight-tokens\n _viewportRuler) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._platform = _platform;\n this._viewRepeater = _viewRepeater;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._stickyPositioningListener = _stickyPositioningListener;\n this._viewportRuler = _viewportRuler;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n this._columnDefsByName = new Map();\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n this._customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n this._customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n this._customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n this._customFooterRowDefs = new Set();\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n this._stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n this._forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef` object. With the two keys, the cache points to a `RenderRow` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n this._cachedRenderRowsMap = new Map();\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overriden by\n * table subclasses.\n */\n this.stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add positon: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n this.needsPositionStickyOnElement = true;\n /** Whether the no data row is currently showing anything. */\n this._isShowingNoDataRow = false;\n this._multiTemplateDataRows = false;\n this._fixedLayout = false;\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n this.viewChange = new BehaviorSubject({ start: 0, end: Number.MAX_VALUE });\n if (!role) {\n this._elementRef.nativeElement.setAttribute('role', 'grid');\n }\n this._document = _document;\n this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n }\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(v) {\n this._multiTemplateDataRows = coerceBooleanProperty(v);\n // In Ivy if this value is set via a static attribute (e.g.
),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(v) {\n this._fixedLayout = coerceBooleanProperty(v);\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n ngOnInit() {\n this._setupStickyStyler();\n if (this._isNativeHtmlTable) {\n this._applyNativeTableSections();\n }\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n // Table cell dimensions may change after resizing the window. Signal the sticky styler to\n // refresh its cache of cell widths the next time sticky styles are updated.\n // @breaking-change 11.0.0 Remove null check for _viewportRuler once it's a required parameter.\n if (this._viewportRuler) {\n this._viewportRuler.change().pipe(takeUntil(this._onDestroy)).subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n }\n ngAfterContentChecked() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length && !this._footerRowDefs.length && !this._rowDefs.length &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n ngOnDestroy() {\n this._rowOutlet.viewContainer.clear();\n this._noDataRowOutlet.viewContainer.clear();\n this._headerRowOutlet.viewContainer.clear();\n this._footerRowOutlet.viewContainer.clear();\n this._cachedRenderRowsMap.clear();\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n // @breaking-change 11.0.0 Remove null check for `_viewRepeater` and the\n // `else` clause once `_viewRepeater` is turned into a required parameter.\n if (this._viewRepeater) {\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), (record) => record.item.data, (change) => {\n if (change.operation === 1 /* INSERTED */ && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n }\n else {\n changes.forEachOperation((record, prevIndex, currentIndex) => {\n if (record.previousIndex == null) {\n const renderRow = record.item;\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n this._renderRow(this._rowOutlet, rowDef, currentIndex, context);\n }\n else if (currentIndex == null) {\n viewContainer.remove(prevIndex);\n }\n else {\n const view = viewContainer.get(prevIndex);\n viewContainer.move(view, currentIndex);\n }\n });\n }\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange((record) => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n this.updateStickyColumnStyles();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const thead = tableElement.querySelector('thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if ((this._isNativeHtmlTable && !this._fixedLayout)\n || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n }\n else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = (cache && cache.has(rowDef)) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n }\n else {\n return { data, rowDef, dataIndex };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows && defaultRowDefs.length > 1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => acc || !!def.getColumnsDiff();\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n this._rowOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n }\n else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n }\n else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream.pipe(takeUntil(this._onDestroy))\n .subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n }\n else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n return {\n templateRef: rowDef.template,\n context,\n index,\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n }\n else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */\n _applyNativeTableSections() {\n const documentFragment = this._document.createDocumentFragment();\n const sections = [\n { tag: 'thead', outlets: [this._headerRowOutlet] },\n { tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet] },\n { tag: 'tfoot', outlets: [this._footerRowOutlet] },\n ];\n for (const section of sections) {\n const element = this._document.createElement(section.tag);\n element.setAttribute('role', 'rowgroup');\n for (const outlet of section.outlets) {\n element.appendChild(outlet.elementRef.nativeElement);\n }\n documentFragment.appendChild(element);\n }\n // Use a DocumentFragment so we don't hit the DOM on each iteration.\n this._elementRef.nativeElement.appendChild(documentFragment);\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener);\n (this._dir ? this._dir.change : of())\n .pipe(takeUntil(this._onDestroy))\n .subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (noDataRow) {\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow !== this._isShowingNoDataRow) {\n const container = this._noDataRowOutlet.viewContainer;\n shouldShow ? container.createEmbeddedView(noDataRow.templateRef) : container.clear();\n this._isShowingNoDataRow = shouldShow;\n }\n }\n }\n}\nCdkTable.ɵfac = function CdkTable_Factory(t) { return new (t || CdkTable)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Platform), ɵngcc0.ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY, 8), ɵngcc0.ɵɵdirectiveInject(_COALESCED_STYLE_SCHEDULER, 8), ɵngcc0.ɵɵdirectiveInject(STICKY_POSITIONING_LISTENER, 12), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.ViewportRuler, 8)); };\nCdkTable.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CdkTable, selectors: [[\"cdk-table\"], [\"table\", \"cdk-table\", \"\"]], contentQueries: function CdkTable_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkNoDataRow, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkColumnDef, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkRowDef, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkHeaderRowDef, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CdkFooterRowDef, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._noDataRow = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentColumnDefs = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentRowDefs = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentHeaderRowDefs = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentFooterRowDefs = _t);\n } }, viewQuery: function CdkTable_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(DataRowOutlet, 3);\n ɵngcc0.ɵɵviewQuery(HeaderRowOutlet, 3);\n ɵngcc0.ɵɵviewQuery(FooterRowOutlet, 3);\n ɵngcc0.ɵɵviewQuery(NoDataRowOutlet, 3);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._rowOutlet = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._headerRowOutlet = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._footerRowOutlet = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._noDataRowOutlet = _t.first);\n } }, hostAttrs: [1, \"cdk-table\"], hostVars: 2, hostBindings: function CdkTable_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"cdk-table-fixed-layout\", ctx.fixedLayout);\n } }, inputs: { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: \"multiTemplateDataRows\", fixedLayout: \"fixedLayout\" }, exportAs: [\"cdkTable\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ])], ngContentSelectors: _c1, decls: 6, vars: 0, consts: [[\"headerRowOutlet\", \"\"], [\"rowOutlet\", \"\"], [\"noDataRowOutlet\", \"\"], [\"footerRowOutlet\", \"\"]], template: function CdkTable_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c0);\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵprojection(1, 1);\n ɵngcc0.ɵɵelementContainer(2, 0);\n ɵngcc0.ɵɵelementContainer(3, 1);\n ɵngcc0.ɵɵelementContainer(4, 2);\n ɵngcc0.ɵɵelementContainer(5, 3);\n } }, directives: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet], styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"], encapsulation: 2 });\nCdkTable.ctorParameters = () => [\n { type: IterableDiffers },\n { type: ChangeDetectorRef },\n { type: ElementRef },\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: Platform },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [_VIEW_REPEATER_STRATEGY,] }] },\n { type: _CoalescedStyleScheduler, decorators: [{ type: Optional }, { type: Inject, args: [_COALESCED_STYLE_SCHEDULER,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: SkipSelf }, { type: Inject, args: [STICKY_POSITIONING_LISTENER,] }] },\n { type: ViewportRuler, decorators: [{ type: Optional }] }\n];\nCdkTable.propDecorators = {\n trackBy: [{ type: Input }],\n dataSource: [{ type: Input }],\n multiTemplateDataRows: [{ type: Input }],\n fixedLayout: [{ type: Input }],\n _rowOutlet: [{ type: ViewChild, args: [DataRowOutlet, { static: true },] }],\n _headerRowOutlet: [{ type: ViewChild, args: [HeaderRowOutlet, { static: true },] }],\n _footerRowOutlet: [{ type: ViewChild, args: [FooterRowOutlet, { static: true },] }],\n _noDataRowOutlet: [{ type: ViewChild, args: [NoDataRowOutlet, { static: true },] }],\n _contentColumnDefs: [{ type: ContentChildren, args: [CdkColumnDef, { descendants: true },] }],\n _contentRowDefs: [{ type: ContentChildren, args: [CdkRowDef, { descendants: true },] }],\n _contentHeaderRowDefs: [{ type: ContentChildren, args: [CdkHeaderRowDef, {\n descendants: true\n },] }],\n _contentFooterRowDefs: [{ type: ContentChildren, args: [CdkFooterRowDef, {\n descendants: true\n },] }],\n _noDataRow: [{ type: ContentChild, args: [CdkNoDataRow,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkTable, [{\n type: Component,\n args: [{\n selector: 'cdk-table, table[cdk-table]',\n exportAs: 'cdkTable',\n template: CDK_TABLE_TEMPLATE,\n host: {\n 'class': 'cdk-table',\n '[class.cdk-table-fixed-layout]': 'fixedLayout'\n },\n encapsulation: ViewEncapsulation.None,\n // The \"OnPush\" status for the `MatTable` component is effectively a noop, so we are removing it.\n // The view for `MatTable` consists entirely of templates declared in other views. As they are\n // declared elsewhere, they are checked when their declaration points are checked.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ],\n styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.IterableDiffers }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: ɵngcc1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc2.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: _CoalescedStyleScheduler, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [STICKY_POSITIONING_LISTENER]\n }] }, { type: ɵngcc3.ViewportRuler, decorators: [{\n type: Optional\n }] }]; }, { trackBy: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], multiTemplateDataRows: [{\n type: Input\n }], fixedLayout: [{\n type: Input\n }], _rowOutlet: [{\n type: ViewChild,\n args: [DataRowOutlet, { static: true }]\n }], _headerRowOutlet: [{\n type: ViewChild,\n args: [HeaderRowOutlet, { static: true }]\n }], _footerRowOutlet: [{\n type: ViewChild,\n args: [FooterRowOutlet, { static: true }]\n }], _noDataRowOutlet: [{\n type: ViewChild,\n args: [NoDataRowOutlet, { static: true }]\n }], _contentColumnDefs: [{\n type: ContentChildren,\n args: [CdkColumnDef, { descendants: true }]\n }], _contentRowDefs: [{\n type: ContentChildren,\n args: [CdkRowDef, { descendants: true }]\n }], _contentHeaderRowDefs: [{\n type: ContentChildren,\n args: [CdkHeaderRowDef, {\n descendants: true\n }]\n }], _contentFooterRowDefs: [{\n type: ContentChildren,\n args: [CdkFooterRowDef, {\n descendants: true\n }]\n }], _noDataRow: [{\n type: ContentChild,\n args: [CdkNoDataRow]\n }] }); })();\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass CdkTextColumn {\n constructor(\n // `CdkTextColumn` is always requiring a table, but we just assert it manually\n // for better error reporting.\n // tslint:disable-next-line: lightweight-tokens\n _table, _options) {\n this._table = _table;\n this._options = _options;\n /** Alignment of the cell values. */\n this.justify = 'start';\n this._options = _options || {};\n }\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n}\nCdkTextColumn.ɵfac = function CdkTextColumn_Factory(t) { return new (t || CdkTextColumn)(ɵngcc0.ɵɵdirectiveInject(CdkTable, 8), ɵngcc0.ɵɵdirectiveInject(TEXT_COLUMN_OPTIONS, 8)); };\nCdkTextColumn.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CdkTextColumn, selectors: [[\"cdk-text-column\"]], viewQuery: function CdkTextColumn_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(CdkColumnDef, 3);\n ɵngcc0.ɵɵviewQuery(CdkCellDef, 3);\n ɵngcc0.ɵɵviewQuery(CdkHeaderCellDef, 3);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columnDef = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.cell = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerCell = _t.first);\n } }, inputs: { justify: \"justify\", name: \"name\", headerText: \"headerText\", dataAccessor: \"dataAccessor\" }, decls: 3, vars: 0, consts: [[\"cdkColumnDef\", \"\"], [\"cdk-header-cell\", \"\", 3, \"text-align\", 4, \"cdkHeaderCellDef\"], [\"cdk-cell\", \"\", 3, \"text-align\", 4, \"cdkCellDef\"], [\"cdk-header-cell\", \"\"], [\"cdk-cell\", \"\"]], template: function CdkTextColumn_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵtemplate(1, CdkTextColumn_th_1_Template, 2, 3, \"th\", 1);\n ɵngcc0.ɵɵtemplate(2, CdkTextColumn_td_2_Template, 2, 3, \"td\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n } }, directives: [CdkColumnDef, CdkHeaderCellDef, CdkCellDef, CdkHeaderCell, CdkCell], encapsulation: 2 });\nCdkTextColumn.ctorParameters = () => [\n { type: CdkTable, decorators: [{ type: Optional }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TEXT_COLUMN_OPTIONS,] }] }\n];\nCdkTextColumn.propDecorators = {\n name: [{ type: Input }],\n headerText: [{ type: Input }],\n dataAccessor: [{ type: Input }],\n justify: [{ type: Input }],\n columnDef: [{ type: ViewChild, args: [CdkColumnDef, { static: true },] }],\n cell: [{ type: ViewChild, args: [CdkCellDef, { static: true },] }],\n headerCell: [{ type: ViewChild, args: [CdkHeaderCellDef, { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkTextColumn, [{\n type: Component,\n args: [{\n selector: 'cdk-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default\n }]\n }], function () { return [{ type: CdkTable, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TEXT_COLUMN_OPTIONS]\n }] }]; }, { justify: [{\n type: Input\n }], name: [{\n type: Input\n }], headerText: [{\n type: Input\n }], dataAccessor: [{\n type: Input\n }], columnDef: [{\n type: ViewChild,\n args: [CdkColumnDef, { static: true }]\n }], cell: [{\n type: ViewChild,\n args: [CdkCellDef, { static: true }]\n }], headerCell: [{\n type: ViewChild,\n args: [CdkHeaderCellDef, { static: true }]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EXPORTED_DECLARATIONS = [\n CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n NoDataRowOutlet,\n];\nclass CdkTableModule {\n}\nCdkTableModule.ɵfac = function CdkTableModule_Factory(t) { return new (t || CdkTableModule)(); };\nCdkTableModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: CdkTableModule });\nCdkTableModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[ScrollingModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CdkTableModule, { declarations: function () { return [CdkTable, CdkRowDef, CdkCellDef, CdkCellOutlet, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkCell, CdkRow, CdkHeaderCell, CdkFooterCell, CdkHeaderRow, CdkHeaderRowDef, CdkFooterRow, CdkFooterRowDef, DataRowOutlet, HeaderRowOutlet, FooterRowOutlet, CdkTextColumn, CdkNoDataRow, NoDataRowOutlet]; }, imports: function () { return [ScrollingModule]; }, exports: function () { return [CdkTable, CdkRowDef, CdkCellDef, CdkCellOutlet, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkCell, CdkRow, CdkHeaderCell, CdkFooterCell, CdkHeaderRow, CdkHeaderRowDef, CdkFooterRow, CdkFooterRowDef, DataRowOutlet, HeaderRowOutlet, FooterRowOutlet, CdkTextColumn, CdkNoDataRow, NoDataRowOutlet]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkTableModule, [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n imports: [ScrollingModule]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, NoDataRowOutlet, STICKY_DIRECTIONS, STICKY_POSITIONING_LISTENER, StickyStyler, TEXT_COLUMN_OPTIONS, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, _Schedule, mixinHasStickyInput };\n\n//# sourceMappingURL=table.js.map","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, Input, NgModule } from '@angular/core';\nimport { CdkTable, CDK_TABLE_TEMPLATE, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CDK_ROW_TEMPLATE, CdkFooterRow, CdkRow, CdkNoDataRow, CdkTextColumn, CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { _VIEW_REPEATER_STRATEGY, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nimport { MatCommonModule } from '@angular/material/core';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/table';\n\nconst _c0 = [[[\"caption\"]], [[\"colgroup\"], [\"col\"]]];\nconst _c1 = [\"caption\", \"colgroup, col\"];\nfunction MatTextColumn_th_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"text-align\", ctx_r0.justify);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.headerText, \" \");\n} }\nfunction MatTextColumn_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const data_r2 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"text-align\", ctx_r1.justify);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.dataAccessor(data_r2, ctx_r1.name), \" \");\n} }\nclass MatTable extends CdkTable {\n constructor() {\n super(...arguments);\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n this.stickyCssClass = 'mat-table-sticky';\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n this.needsPositionStickyOnElement = false;\n }\n}\nMatTable.ɵfac = function MatTable_Factory(t) { return ɵMatTable_BaseFactory(t || MatTable); };\nMatTable.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatTable, selectors: [[\"mat-table\"], [\"table\", \"mat-table\", \"\"]], hostAttrs: [1, \"mat-table\"], hostVars: 2, hostBindings: function MatTable_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"mat-table-fixed-layout\", ctx.fixedLayout);\n } }, exportAs: [\"matTable\"], features: [ɵngcc0.ɵɵProvidersFeature([\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 6, vars: 0, consts: [[\"headerRowOutlet\", \"\"], [\"rowOutlet\", \"\"], [\"noDataRowOutlet\", \"\"], [\"footerRowOutlet\", \"\"]], template: function MatTable_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c0);\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵprojection(1, 1);\n ɵngcc0.ɵɵelementContainer(2, 0);\n ɵngcc0.ɵɵelementContainer(3, 1);\n ɵngcc0.ɵɵelementContainer(4, 2);\n ɵngcc0.ɵɵelementContainer(5, 3);\n } }, directives: [ɵngcc1.HeaderRowOutlet, ɵngcc1.DataRowOutlet, ɵngcc1.NoDataRowOutlet, ɵngcc1.FooterRowOutlet], styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\\\"\\\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"], encapsulation: 2 });\nconst ɵMatTable_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatTable);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatTable, [{\n type: Component,\n args: [{\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n host: {\n 'class': 'mat-table',\n '[class.mat-table-fixed-layout]': 'fixedLayout'\n },\n providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n ],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-row::after,mat-header-row::after,mat-footer-row::after{display:inline-block;min-height:inherit;content:\\\"\\\"}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass MatCellDef extends CdkCellDef {\n}\nMatCellDef.ɵfac = function MatCellDef_Factory(t) { return ɵMatCellDef_BaseFactory(t || MatCellDef); };\nMatCellDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCellDef, selectors: [[\"\", \"matCellDef\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkCellDef, useExisting: MatCellDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatCellDef_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatCellDef);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCellDef, [{\n type: Directive,\n args: [{\n selector: '[matCellDef]',\n providers: [{ provide: CdkCellDef, useExisting: MatCellDef }]\n }]\n }], null, null); })();\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass MatHeaderCellDef extends CdkHeaderCellDef {\n}\nMatHeaderCellDef.ɵfac = function MatHeaderCellDef_Factory(t) { return ɵMatHeaderCellDef_BaseFactory(t || MatHeaderCellDef); };\nMatHeaderCellDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatHeaderCellDef, selectors: [[\"\", \"matHeaderCellDef\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatHeaderCellDef_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatHeaderCellDef);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatHeaderCellDef, [{\n type: Directive,\n args: [{\n selector: '[matHeaderCellDef]',\n providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }]\n }]\n }], null, null); })();\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass MatFooterCellDef extends CdkFooterCellDef {\n}\nMatFooterCellDef.ɵfac = function MatFooterCellDef_Factory(t) { return ɵMatFooterCellDef_BaseFactory(t || MatFooterCellDef); };\nMatFooterCellDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatFooterCellDef, selectors: [[\"\", \"matFooterCellDef\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatFooterCellDef_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatFooterCellDef);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatFooterCellDef, [{\n type: Directive,\n args: [{\n selector: '[matFooterCellDef]',\n providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }]\n }]\n }], null, null); })();\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nclass MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n get name() { return this._name; }\n set name(name) { this._setNameInput(name); }\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n}\nMatColumnDef.ɵfac = function MatColumnDef_Factory(t) { return ɵMatColumnDef_BaseFactory(t || MatColumnDef); };\nMatColumnDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatColumnDef, selectors: [[\"\", \"matColumnDef\", \"\"]], inputs: { sticky: \"sticky\", name: [\"matColumnDef\", \"name\"] }, features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nMatColumnDef.propDecorators = {\n name: [{ type: Input, args: ['matColumnDef',] }]\n};\nconst ɵMatColumnDef_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatColumnDef);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatColumnDef, [{\n type: Directive,\n args: [{\n selector: '[matColumnDef]',\n inputs: ['sticky'],\n providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef }\n ]\n }]\n }], null, { name: [{\n type: Input,\n args: ['matColumnDef']\n }] }); })();\n/** Header cell template container that adds the right classes and role. */\nclass MatHeaderCell extends CdkHeaderCell {\n}\nMatHeaderCell.ɵfac = function MatHeaderCell_Factory(t) { return ɵMatHeaderCell_BaseFactory(t || MatHeaderCell); };\nMatHeaderCell.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatHeaderCell, selectors: [[\"mat-header-cell\"], [\"th\", \"mat-header-cell\", \"\"]], hostAttrs: [\"role\", \"columnheader\", 1, \"mat-header-cell\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatHeaderCell_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatHeaderCell);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatHeaderCell, [{\n type: Directive,\n args: [{\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader'\n }\n }]\n }], null, null); })();\n/** Footer cell template container that adds the right classes and role. */\nclass MatFooterCell extends CdkFooterCell {\n}\nMatFooterCell.ɵfac = function MatFooterCell_Factory(t) { return ɵMatFooterCell_BaseFactory(t || MatFooterCell); };\nMatFooterCell.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatFooterCell, selectors: [[\"mat-footer-cell\"], [\"td\", \"mat-footer-cell\", \"\"]], hostAttrs: [\"role\", \"gridcell\", 1, \"mat-footer-cell\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatFooterCell_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatFooterCell);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatFooterCell, [{\n type: Directive,\n args: [{\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell'\n }\n }]\n }], null, null); })();\n/** Cell template container that adds the right classes and role. */\nclass MatCell extends CdkCell {\n}\nMatCell.ɵfac = function MatCell_Factory(t) { return ɵMatCell_BaseFactory(t || MatCell); };\nMatCell.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCell, selectors: [[\"mat-cell\"], [\"td\", \"mat-cell\", \"\"]], hostAttrs: [\"role\", \"gridcell\", 1, \"mat-cell\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatCell_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatCell);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCell, [{\n type: Directive,\n args: [{\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell'\n }\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass MatHeaderRowDef extends CdkHeaderRowDef {\n}\nMatHeaderRowDef.ɵfac = function MatHeaderRowDef_Factory(t) { return ɵMatHeaderRowDef_BaseFactory(t || MatHeaderRowDef); };\nMatHeaderRowDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatHeaderRowDef, selectors: [[\"\", \"matHeaderRowDef\", \"\"]], inputs: { columns: [\"matHeaderRowDef\", \"columns\"], sticky: [\"matHeaderRowDefSticky\", \"sticky\"] }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatHeaderRowDef_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatHeaderRowDef);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatHeaderRowDef, [{\n type: Directive,\n args: [{\n selector: '[matHeaderRowDef]',\n providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky']\n }]\n }], null, null); })();\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass MatFooterRowDef extends CdkFooterRowDef {\n}\nMatFooterRowDef.ɵfac = function MatFooterRowDef_Factory(t) { return ɵMatFooterRowDef_BaseFactory(t || MatFooterRowDef); };\nMatFooterRowDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatFooterRowDef, selectors: [[\"\", \"matFooterRowDef\", \"\"]], inputs: { columns: [\"matFooterRowDef\", \"columns\"], sticky: [\"matFooterRowDefSticky\", \"sticky\"] }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatFooterRowDef_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatFooterRowDef);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatFooterRowDef, [{\n type: Directive,\n args: [{\n selector: '[matFooterRowDef]',\n providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky']\n }]\n }], null, null); })();\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass MatRowDef extends CdkRowDef {\n}\nMatRowDef.ɵfac = function MatRowDef_Factory(t) { return ɵMatRowDef_BaseFactory(t || MatRowDef); };\nMatRowDef.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatRowDef, selectors: [[\"\", \"matRowDef\", \"\"]], inputs: { columns: [\"matRowDefColumns\", \"columns\"], when: [\"matRowDefWhen\", \"when\"] }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkRowDef, useExisting: MatRowDef }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatRowDef_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatRowDef);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatRowDef, [{\n type: Directive,\n args: [{\n selector: '[matRowDef]',\n providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen']\n }]\n }], null, null); })();\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass MatHeaderRow extends CdkHeaderRow {\n}\nMatHeaderRow.ɵfac = function MatHeaderRow_Factory(t) { return ɵMatHeaderRow_BaseFactory(t || MatHeaderRow); };\nMatHeaderRow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatHeaderRow, selectors: [[\"mat-header-row\"], [\"tr\", \"mat-header-row\", \"\"]], hostAttrs: [\"role\", \"row\", 1, \"mat-header-row\"], exportAs: [\"matHeaderRow\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkHeaderRow, useExisting: MatHeaderRow }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 0, consts: [[\"cdkCellOutlet\", \"\"]], template: function MatHeaderRow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n } }, directives: [ɵngcc1.CdkCellOutlet], encapsulation: 2 });\nconst ɵMatHeaderRow_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatHeaderRow);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatHeaderRow, [{\n type: Component,\n args: [{\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row'\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }]\n }]\n }], null, null); })();\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass MatFooterRow extends CdkFooterRow {\n}\nMatFooterRow.ɵfac = function MatFooterRow_Factory(t) { return ɵMatFooterRow_BaseFactory(t || MatFooterRow); };\nMatFooterRow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatFooterRow, selectors: [[\"mat-footer-row\"], [\"tr\", \"mat-footer-row\", \"\"]], hostAttrs: [\"role\", \"row\", 1, \"mat-footer-row\"], exportAs: [\"matFooterRow\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkFooterRow, useExisting: MatFooterRow }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 0, consts: [[\"cdkCellOutlet\", \"\"]], template: function MatFooterRow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n } }, directives: [ɵngcc1.CdkCellOutlet], encapsulation: 2 });\nconst ɵMatFooterRow_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatFooterRow);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatFooterRow, [{\n type: Component,\n args: [{\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row'\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }]\n }]\n }], null, null); })();\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass MatRow extends CdkRow {\n}\nMatRow.ɵfac = function MatRow_Factory(t) { return ɵMatRow_BaseFactory(t || MatRow); };\nMatRow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatRow, selectors: [[\"mat-row\"], [\"tr\", \"mat-row\", \"\"]], hostAttrs: [\"role\", \"row\", 1, \"mat-row\"], exportAs: [\"matRow\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkRow, useExisting: MatRow }]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 0, consts: [[\"cdkCellOutlet\", \"\"]], template: function MatRow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 0);\n } }, directives: [ɵngcc1.CdkCellOutlet], encapsulation: 2 });\nconst ɵMatRow_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatRow);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatRow, [{\n type: Component,\n args: [{\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row'\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{ provide: CdkRow, useExisting: MatRow }]\n }]\n }], null, null); })();\n/** Row that can be used to display a message when no data is shown in the table. */\nclass MatNoDataRow extends CdkNoDataRow {\n}\nMatNoDataRow.ɵfac = function MatNoDataRow_Factory(t) { return ɵMatNoDataRow_BaseFactory(t || MatNoDataRow); };\nMatNoDataRow.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatNoDataRow, selectors: [[\"ng-template\", \"matNoDataRow\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CdkNoDataRow, useExisting: MatNoDataRow }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatNoDataRow_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatNoDataRow);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatNoDataRow, [{\n type: Directive,\n args: [{\n selector: 'ng-template[matNoDataRow]',\n providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
\n {{headerText}}\n \n {{dataAccessor(data, name)}}\n
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass MatTextColumn extends CdkTextColumn {\n}\nMatTextColumn.ɵfac = function MatTextColumn_Factory(t) { return ɵMatTextColumn_BaseFactory(t || MatTextColumn); };\nMatTextColumn.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatTextColumn, selectors: [[\"mat-text-column\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 0, consts: [[\"matColumnDef\", \"\"], [\"mat-header-cell\", \"\", 3, \"text-align\", 4, \"matHeaderCellDef\"], [\"mat-cell\", \"\", 3, \"text-align\", 4, \"matCellDef\"], [\"mat-header-cell\", \"\"], [\"mat-cell\", \"\"]], template: function MatTextColumn_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0, 0);\n ɵngcc0.ɵɵtemplate(1, MatTextColumn_th_1_Template, 2, 3, \"th\", 1);\n ɵngcc0.ɵɵtemplate(2, MatTextColumn_td_2_Template, 2, 3, \"td\", 2);\n ɵngcc0.ɵɵelementContainerEnd();\n } }, directives: [MatColumnDef, MatHeaderCellDef, MatCellDef, MatHeaderCell, MatCell], encapsulation: 2 });\nconst ɵMatTextColumn_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatTextColumn);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatTextColumn, [{\n type: Component,\n args: [{\n selector: 'mat-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn,\n];\nclass MatTableModule {\n}\nMatTableModule.ɵfac = function MatTableModule_Factory(t) { return new (t || MatTableModule)(); };\nMatTableModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatTableModule });\nMatTableModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[\n CdkTableModule,\n MatCommonModule,\n ], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatTableModule, { declarations: function () { return [MatTable, MatHeaderCellDef, MatHeaderRowDef, MatColumnDef, MatCellDef, MatRowDef, MatFooterCellDef, MatFooterRowDef, MatHeaderCell, MatCell, MatFooterCell, MatHeaderRow, MatRow, MatFooterRow, MatNoDataRow, MatTextColumn]; }, imports: function () { return [CdkTableModule,\n MatCommonModule]; }, exports: function () { return [MatCommonModule, MatTable, MatHeaderCellDef, MatHeaderRowDef, MatColumnDef, MatCellDef, MatRowDef, MatFooterCellDef, MatFooterRowDef, MatHeaderCell, MatCell, MatFooterCell, MatHeaderRow, MatRow, MatFooterRow, MatNoDataRow, MatTextColumn]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatTableModule, [{\n type: NgModule,\n args: [{\n imports: [\n CdkTableModule,\n MatCommonModule,\n ],\n exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n declarations: EXPORTED_DECLARATIONS\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n/** Shared base class with MDC-based implementation. */\nclass _MatTableDataSource extends DataSource {\n constructor(initialData = []) {\n super();\n /** Stream emitting render data to the table (depends on ordered data changes). */\n this._renderData = new BehaviorSubject([]);\n /** Stream that emits when a new filter string is set on the data source. */\n this._filter = new BehaviorSubject('');\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n this._internalPageChanges = new Subject();\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n this._renderChangesSubscription = null;\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n this.sortingDataAccessor = (data, sortHeaderId) => {\n const value = data[sortHeaderId];\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n return value;\n };\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n this.sortData = (data, sort) => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') {\n return data;\n }\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n }\n else if (valueA < valueB) {\n comparatorResult = -1;\n }\n }\n else if (valueA != null) {\n comparatorResult = 1;\n }\n else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n this.filterPredicate = (data, filter) => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm, key) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + data[key] + '◬';\n }, '').toLowerCase();\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n return dataStr.indexOf(transformedFilter) != -1;\n };\n this._data = new BehaviorSubject(initialData);\n this._updateChangeSubscription();\n }\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data) {\n this._data.next(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter() { return this._filter.value; }\n set filter(filter) {\n this._filter.next(filter);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort() { return this._sort; }\n set sort(sort) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator() { return this._paginator; }\n set paginator(paginator) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n var _a;\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange = this._sort ?\n merge(this._sort.sortChange, this._sort.initialized) :\n of(null);\n const pageChange = this._paginator ?\n merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized) :\n of(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter])\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange])\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange])\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData = (this.filter == null || this.filter === '') ? data :\n data.filter(obj => this.filterPredicate(obj, this.filter));\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n return this.filteredData;\n }\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data) {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n return this.sortData(data.slice(), this.sort);\n }\n /**\n * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data) {\n if (!this.paginator) {\n return data;\n }\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n if (!paginator) {\n return;\n }\n paginator.length = filteredDataLength;\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n return this._renderData;\n }\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n var _a;\n (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nclass MatTableDataSource extends _MatTableDataSource {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn, _MatTableDataSource };\n\n//# sourceMappingURL=table.js.map","import { ElementRef, Directive, TemplateRef, ViewContainerRef, EventEmitter, ComponentFactoryResolver, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(template, viewContainerRef, context) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn((() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n if (this.outletElement.parentNode != null) {\n this.outletElement.parentNode.removeChild(this.outletElement);\n }\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\nCdkPortal.ɵfac = function CdkPortal_Factory(t) { return new (t || CdkPortal)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nCdkPortal.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkPortal, selectors: [[\"\", \"cdkPortal\", \"\"]], exportAs: [\"cdkPortal\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkPortal.ctorParameters = () => [\n { type: TemplateRef },\n { type: ViewContainerRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkPortal, [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.ViewContainerRef }]; }, null); })();\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = function TemplatePortalDirective_Factory(t) { return ɵTemplatePortalDirective_BaseFactory(t || TemplatePortalDirective); };\nTemplatePortalDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: TemplatePortalDirective, selectors: [[\"\", \"cdk-portal\", \"\"], [\"\", \"portal\", \"\"]], exportAs: [\"cdkPortal\"], features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵTemplatePortalDirective_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(TemplatePortalDirective);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplatePortalDirective, [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]\n }]\n }], null, null); })();\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE ?\n nativeElement : nativeElement.parentNode);\n }\n}\nCdkPortalOutlet.ɵfac = function CdkPortalOutlet_Factory(t) { return new (t || CdkPortalOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nCdkPortalOutlet.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CdkPortalOutlet, selectors: [[\"\", \"cdkPortalOutlet\", \"\"]], inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkPortalOutlet.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nCdkPortalOutlet.propDecorators = {\n attached: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkPortalOutlet, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet']\n }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { attached: [{\n type: Output\n }] }); })();\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = function PortalHostDirective_Factory(t) { return ɵPortalHostDirective_BaseFactory(t || PortalHostDirective); };\nPortalHostDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: PortalHostDirective, selectors: [[\"\", \"cdkPortalHost\", \"\"], [\"\", \"portalHost\", \"\"]], inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, exportAs: [\"cdkPortalHost\"], features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵPortalHostDirective_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(PortalHostDirective);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PortalHostDirective, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]\n }]\n }], null, null); })();\nclass PortalModule {\n}\nPortalModule.ɵfac = function PortalModule_Factory(t) { return new (t || PortalModule)(); };\nPortalModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: PortalModule });\nPortalModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PortalModule, { declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PortalModule, [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n\n//# sourceMappingURL=portal.js.map","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\nimport { Platform, _getShadowRoot } from '@angular/cdk/platform';\nimport { InjectionToken, EventEmitter, Directive, ChangeDetectorRef, ElementRef, Inject, ViewChild, TemplateRef, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, forwardRef, ViewContainerRef, NgZone, Optional, Host, NgModule } from '@angular/core';\nimport { mixinDisableRipple, MAT_OPTION_PARENT_COMPONENT, MAT_OPTGROUP, MatOption, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { Subscription, Subject, defer, merge, of, fromEvent } from 'rxjs';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE, hasModifierKey, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { take, switchMap, filter, map, tap, delay } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/platform';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@angular/cdk/overlay';\nimport * as ɵngcc4 from '@angular/cdk/bidi';\nimport * as ɵngcc5 from '@angular/cdk/scrolling';\nimport * as ɵngcc6 from '@angular/material/form-field';\n\nconst _c0 = [\"panel\"];\nfunction MatAutocomplete_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const formFieldId_r1 = ctx.id;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r0.id)(\"ngClass\", ctx_r0._classList);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r0.ariaLabel || null)(\"aria-labelledby\", ctx_r0._getPanelAriaLabelledby(formFieldId_r1));\n} }\nconst _c1 = [\"*\"];\nlet _uniqueAutocompleteIdCounter = 0;\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n source, \n /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nclass MatAutocompleteBase {\n}\nconst _MatAutocompleteMixinBase = mixinDisableRipple(MatAutocompleteBase);\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return { autoActiveFirstOption: false };\n}\n/** Base class with all of the `MatAutocomplete` functionality. */\nclass _MatAutocompleteBase extends _MatAutocompleteMixinBase {\n constructor(_changeDetectorRef, _elementRef, defaults, platform) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._activeOptionChanges = Subscription.EMPTY;\n /** Whether the autocomplete panel should be visible, depending on option length. */\n this.showPanel = false;\n this._isOpen = false;\n /** Function that maps an option's control value to its display value in the trigger. */\n this.displayWith = null;\n /** Event that is emitted whenever an option from the list is selected. */\n this.optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n this.opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n this.closed = new EventEmitter();\n /** Emits whenever an option is activated using the keyboard. */\n this.optionActivated = new EventEmitter();\n this._classList = {};\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = (platform === null || platform === void 0 ? void 0 : platform.SAFARI) || false;\n this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n }\n /** Whether the autocomplete panel is open. */\n get isOpen() { return this._isOpen && this.showPanel; }\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n get autoActiveFirstOption() { return this._autoActiveFirstOption; }\n set autoActiveFirstOption(value) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n if (value && value.length) {\n this._classList = coerceStringArray(value).reduce((classList, className) => {\n classList[className] = true;\n return classList;\n }, {});\n }\n else {\n this._classList = {};\n }\n this._setVisibilityClasses(this._classList);\n this._elementRef.nativeElement.className = '';\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap();\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._activeOptionChanges.unsubscribe();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._setVisibilityClasses(this._classList);\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Sets the autocomplete visibility classes on a classlist based on the panel is visible. */\n _setVisibilityClasses(classList) {\n classList[this._visibleClass] = this.showPanel;\n classList[this._hiddenClass] = !this.showPanel;\n }\n}\n_MatAutocompleteBase.ɵfac = function _MatAutocompleteBase_Factory(t) { return new (t || _MatAutocompleteBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Platform)); };\n_MatAutocompleteBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatAutocompleteBase, viewQuery: function _MatAutocompleteBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(TemplateRef, 3);\n ɵngcc0.ɵɵviewQuery(_c0, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.template = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n } }, inputs: { displayWith: \"displayWith\", autoActiveFirstOption: \"autoActiveFirstOption\", classList: [\"class\", \"classList\"], ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], panelWidth: \"panelWidth\" }, outputs: { optionSelected: \"optionSelected\", opened: \"opened\", closed: \"closed\", optionActivated: \"optionActivated\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n_MatAutocompleteBase.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,] }] },\n { type: Platform }\n];\n_MatAutocompleteBase.propDecorators = {\n template: [{ type: ViewChild, args: [TemplateRef, { static: true },] }],\n panel: [{ type: ViewChild, args: ['panel',] }],\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],\n displayWith: [{ type: Input }],\n autoActiveFirstOption: [{ type: Input }],\n panelWidth: [{ type: Input }],\n optionSelected: [{ type: Output }],\n opened: [{ type: Output }],\n closed: [{ type: Output }],\n optionActivated: [{ type: Output }],\n classList: [{ type: Input, args: ['class',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatAutocompleteBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }, { type: ɵngcc1.Platform }]; }, { displayWith: [{\n type: Input\n }], optionSelected: [{\n type: Output\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], optionActivated: [{\n type: Output\n }], autoActiveFirstOption: [{\n type: Input\n }], classList: [{\n type: Input,\n args: ['class']\n }], template: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], panelWidth: [{\n type: Input\n }] }); })();\nclass MatAutocomplete extends _MatAutocompleteBase {\n constructor() {\n super(...arguments);\n this._visibleClass = 'mat-autocomplete-visible';\n this._hiddenClass = 'mat-autocomplete-hidden';\n }\n}\nMatAutocomplete.ɵfac = function MatAutocomplete_Factory(t) { return ɵMatAutocomplete_BaseFactory(t || MatAutocomplete); };\nMatAutocomplete.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatAutocomplete, selectors: [[\"mat-autocomplete\"]], contentQueries: function MatAutocomplete_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatOption, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.options = _t);\n } }, hostAttrs: [1, \"mat-autocomplete\"], inputs: { disableRipple: \"disableRipple\" }, exportAs: [\"matAutocomplete\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 1, vars: 0, consts: [[\"role\", \"listbox\", 1, \"mat-autocomplete-panel\", 3, \"id\", \"ngClass\"], [\"panel\", \"\"]], template: function MatAutocomplete_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, MatAutocomplete_ng_template_0_Template, 3, 4, \"ng-template\");\n } }, directives: [ɵngcc2.NgClass], styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\\n\"], encapsulation: 2, changeDetection: 0 });\nMatAutocomplete.propDecorators = {\n optionGroups: [{ type: ContentChildren, args: [MAT_OPTGROUP, { descendants: true },] }],\n options: [{ type: ContentChildren, args: [MatOption, { descendants: true },] }]\n};\nconst ɵMatAutocomplete_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatAutocomplete);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatAutocomplete, [{\n type: Component,\n args: [{\n selector: 'mat-autocomplete',\n template: \"\\n
\\n \\n
\\n
\\n\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'matAutocomplete',\n inputs: ['disableRipple'],\n host: {\n 'class': 'mat-autocomplete'\n },\n providers: [\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }\n ],\n styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\\n\"]\n }]\n }], null, { optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */\nclass _MatAutocompleteOriginBase {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\n_MatAutocompleteOriginBase.ɵfac = function _MatAutocompleteOriginBase_Factory(t) { return new (t || _MatAutocompleteOriginBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\n_MatAutocompleteOriginBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatAutocompleteOriginBase });\n_MatAutocompleteOriginBase.ctorParameters = () => [\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatAutocompleteOriginBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin extends _MatAutocompleteOriginBase {\n}\nMatAutocompleteOrigin.ɵfac = function MatAutocompleteOrigin_Factory(t) { return ɵMatAutocompleteOrigin_BaseFactory(t || MatAutocompleteOrigin); };\nMatAutocompleteOrigin.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatAutocompleteOrigin, selectors: [[\"\", \"matAutocompleteOrigin\", \"\"]], exportAs: [\"matAutocompleteOrigin\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatAutocompleteOrigin_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatAutocompleteOrigin);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatAutocompleteOrigin, [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin'\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the scrollTop of the panel. Because we are not\n * actually focusing the active item, scroll must be handled manually.\n */\n/**\n * The height of each autocomplete option.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 12.0.0\n */\nconst AUTOCOMPLETE_OPTION_HEIGHT = 48;\n/**\n * The total height of the autocomplete panel.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 12.0.0\n */\nconst AUTOCOMPLETE_PANEL_HEIGHT = 256;\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n 'you\\'re attempting to open it after the ngAfterContentInit hook.');\n}\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass _MatAutocompleteTriggerBase {\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n this._defaults = _defaults;\n this._componentDestroyed = false;\n this._autocompleteDisabled = false;\n /** Whether or not the label state is being overridden. */\n this._manuallyFloatingLabel = false;\n /** Subscription to viewport size changes. */\n this._viewportSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n this._canOpenOnNextFocus = true;\n /** Stream of keyboard events that can close the panel. */\n this._closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n this._windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when autocomplete has been touched` */\n this._onTouched = () => { };\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n this.position = 'auto';\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n this.autocompleteAttribute = 'off';\n this._overlayAttached = false;\n /** Stream of autocomplete option selections. */\n this.optionSelections = defer(() => {\n if (this.autocomplete && this.autocomplete.options) {\n return merge(...this.autocomplete.options.map(option => option.onSelectionChange));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable\n .pipe(take(1), switchMap(() => this.optionSelections));\n });\n this._scrollStrategy = scrollStrategy;\n }\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n get autocompleteDisabled() { return this._autocompleteDisabled; }\n set autocompleteDisabled(value) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n ngAfterViewInit() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._attachOverlay();\n this._floatLabel();\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n this.autocomplete.closed.emit();\n }\n this.autocomplete._isOpen = this._overlayAttached = false;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef ?\n this._overlayRef.detachments().pipe(filter(() => this._overlayAttached)) :\n of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => event instanceof MatOptionSelectionChange ? event : null));\n }\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend'))\n .pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = (this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] :\n event.target);\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return this._overlayAttached && clickTarget !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n (!!this._overlayRef && !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._onChange(value);\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n }\n else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n }\n else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n this._formField.floatLabel = 'auto';\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()), \n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the zone is stable initially, and when the option list changes...\n return merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this.autocomplete._setVisibility();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n // If the `panelOpen` state changed, we need to make sure to emit the `opened`\n // event, because we may not have emitted it when the panel was attached. This\n // can happen if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing.\n if (wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n return this.panelClosingActions;\n }), \n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event));\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n _setTriggerValue(value) {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith ?\n this.autocomplete.displayWith(value) :\n value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n const inputValue = toDisplay != null ? toDisplay : '';\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = inputValue;\n }\n else {\n this._element.nativeElement.value = inputValue;\n }\n this._previousValue = inputValue;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n if (event && event.source) {\n this._clearPreviousSelectedOption(event.source);\n this._setTriggerValue(event.source.value);\n this._onChange(event.source.value);\n this._element.nativeElement.focus();\n this.autocomplete._emitSelectEvent(event.source);\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip) {\n this.autocomplete.options.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n _attachOverlay() {\n var _a;\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n // We want to resolve this once, as late as possible so that we can be\n // sure that the element has been moved into its final place in the DOM.\n if (this._isInsideShadowRoot == null) {\n this._isInsideShadowRoot = !!_getShadowRoot(this._element.nativeElement);\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, { id: (_a = this._formField) === null || _a === void 0 ? void 0 : _a.getLabelId() });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n this._resetActiveItem();\n this._closeKeyEventStream.next();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n });\n }\n else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._overlayAttached = true;\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n _getOverlayConfig() {\n var _a;\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir,\n panelClass: (_a = this._defaults) === null || _a === void 0 ? void 0 : _a.overlayPanelClass,\n });\n }\n _getOverlayPosition() {\n const strategy = this._overlay.position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }\n ];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass }\n ];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n }\n else if (this.position === 'below') {\n positions = belowPositions;\n }\n else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Note that we go through `setFirstItemActive`, rather than `setActiveItem(0)`, because\n // the former will find the next enabled option, if the first one is disabled.\n autocomplete._keyManager.setFirstItemActive();\n }\n else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n var _a;\n return ((_a = this._document) === null || _a === void 0 ? void 0 : _a.defaultView) || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n }\n else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n}\n_MatAutocompleteTriggerBase.ɵfac = function _MatAutocompleteTriggerBase_Factory(t) { return new (t || _MatAutocompleteTriggerBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(MAT_FORM_FIELD, 9), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.ViewportRuler), ɵngcc0.ɵɵdirectiveInject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, 8)); };\n_MatAutocompleteTriggerBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatAutocompleteTriggerBase, inputs: { position: [\"matAutocompletePosition\", \"position\"], autocompleteAttribute: [\"autocomplete\", \"autocompleteAttribute\"], autocompleteDisabled: [\"matAutocompleteDisabled\", \"autocompleteDisabled\"], autocomplete: [\"matAutocomplete\", \"autocomplete\"], connectedTo: [\"matAutocompleteConnectedTo\", \"connectedTo\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n_MatAutocompleteTriggerBase.ctorParameters = () => [\n { type: ElementRef },\n { type: Overlay },\n { type: ViewContainerRef },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY,] }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }, { type: Host }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },\n { type: ViewportRuler },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,] }] }\n];\n_MatAutocompleteTriggerBase.propDecorators = {\n autocomplete: [{ type: Input, args: ['matAutocomplete',] }],\n position: [{ type: Input, args: ['matAutocompletePosition',] }],\n connectedTo: [{ type: Input, args: ['matAutocompleteConnectedTo',] }],\n autocompleteAttribute: [{ type: Input, args: ['autocomplete',] }],\n autocompleteDisabled: [{ type: Input, args: ['matAutocompleteDisabled',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatAutocompleteTriggerBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc3.Overlay }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY]\n }] }, { type: ɵngcc4.Directionality, decorators: [{\n type: Optional\n }] }, { type: ɵngcc6.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc5.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }]; }, { position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }], autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }], autocompleteDisabled: [{\n type: Input,\n args: ['matAutocompleteDisabled']\n }], autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }], connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }] }); })();\nclass MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {\n constructor() {\n super(...arguments);\n this._aboveClass = 'mat-autocomplete-panel-above';\n }\n}\nMatAutocompleteTrigger.ɵfac = function MatAutocompleteTrigger_Factory(t) { return ɵMatAutocompleteTrigger_BaseFactory(t || MatAutocompleteTrigger); };\nMatAutocompleteTrigger.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatAutocompleteTrigger, selectors: [[\"input\", \"matAutocomplete\", \"\"], [\"textarea\", \"matAutocomplete\", \"\"]], hostAttrs: [1, \"mat-autocomplete-trigger\"], hostVars: 7, hostBindings: function MatAutocompleteTrigger_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focusin\", function MatAutocompleteTrigger_focusin_HostBindingHandler() { return ctx._handleFocus(); })(\"blur\", function MatAutocompleteTrigger_blur_HostBindingHandler() { return ctx._onTouched(); })(\"input\", function MatAutocompleteTrigger_input_HostBindingHandler($event) { return ctx._handleInput($event); })(\"keydown\", function MatAutocompleteTrigger_keydown_HostBindingHandler($event) { return ctx._handleKeydown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"autocomplete\", ctx.autocompleteAttribute)(\"role\", ctx.autocompleteDisabled ? null : \"combobox\")(\"aria-autocomplete\", ctx.autocompleteDisabled ? null : \"list\")(\"aria-activedescendant\", ctx.panelOpen && ctx.activeOption ? ctx.activeOption.id : null)(\"aria-expanded\", ctx.autocompleteDisabled ? null : ctx.panelOpen.toString())(\"aria-owns\", ctx.autocompleteDisabled || !ctx.panelOpen ? null : ctx.autocomplete == null ? null : ctx.autocomplete.id)(\"aria-haspopup\", !ctx.autocompleteDisabled);\n } }, exportAs: [\"matAutocompleteTrigger\"], features: [ɵngcc0.ɵɵProvidersFeature([MAT_AUTOCOMPLETE_VALUE_ACCESSOR]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatAutocompleteTrigger_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatAutocompleteTrigger);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatAutocompleteTrigger, [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': '!autocompleteDisabled',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)'\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatAutocompleteModule {\n}\nMatAutocompleteModule.ɵfac = function MatAutocompleteModule_Factory(t) { return new (t || MatAutocompleteModule)(); };\nMatAutocompleteModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatAutocompleteModule });\nMatAutocompleteModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n CommonModule\n ], CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatAutocompleteModule, { declarations: function () { return [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin]; }, imports: function () { return [OverlayModule,\n MatOptionModule,\n MatCommonModule,\n CommonModule]; }, exports: function () { return [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin, CdkScrollableModule,\n MatOptionModule,\n MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatAutocompleteModule, [{\n type: NgModule,\n args: [{\n imports: [\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n CommonModule\n ],\n exports: [\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule,\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, _MatAutocompleteBase, _MatAutocompleteOriginBase, _MatAutocompleteTriggerBase, getMatAutocompleteMissingPanelError };\n\n//# sourceMappingURL=autocomplete.js.map","import { __values, __read, __awaiter, __generator, __spreadArray } from 'tslib';\nimport { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nvar Component = /** @class */ (function () {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n function Component(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n Component.prototype.setInstantiationMode = function (mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n };\r\n Component.prototype.setMultipleInstances = function (multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n };\r\n Component.prototype.setServiceProps = function (props) {\r\n this.serviceProps = props;\r\n return this;\r\n };\r\n Component.prototype.setInstanceCreatedCallback = function (callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n };\r\n return Component;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nvar Provider = /** @class */ (function () {\r\n function Provider(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n Provider.prototype.get = function (identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n var deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n };\r\n Provider.prototype.getImmediate = function (options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n var optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(\"Service \" + this.name + \" is not available\");\r\n }\r\n }\r\n };\r\n Provider.prototype.getComponent = function () {\r\n return this.component;\r\n };\r\n Provider.prototype.setComponent = function (component) {\r\n var e_1, _a;\r\n if (component.name !== this.name) {\r\n throw Error(\"Mismatching Component \" + component.name + \" for Provider \" + this.name + \".\");\r\n }\r\n if (this.component) {\r\n throw Error(\"Component for \" + this.name + \" has already been provided\");\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n try {\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (var _b = __values(this.instancesDeferred.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var _d = __read(_c.value, 2), instanceIdentifier = _d[0], instanceDeferred = _d[1];\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n };\r\n Provider.prototype.clearInstance = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n };\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n Provider.prototype.delete = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var services;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n services = Array.from(this.instances.values());\r\n return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([], __read(services\r\n .filter(function (service) { return 'INTERNAL' in service; }) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(function (service) { return service.INTERNAL.delete(); }))), __read(services\r\n .filter(function (service) { return '_delete' in service; }) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(function (service) { return service._delete(); }))))];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Provider.prototype.isComponentSet = function () {\r\n return this.component != null;\r\n };\r\n Provider.prototype.isInitialized = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n return this.instances.has(identifier);\r\n };\r\n Provider.prototype.getOptions = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n return this.instancesOptions.get(identifier) || {};\r\n };\r\n Provider.prototype.initialize = function (opts) {\r\n var e_2, _a;\r\n if (opts === void 0) { opts = {}; }\r\n var _b = opts.options, options = _b === void 0 ? {} : _b;\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(this.name + \"(\" + normalizedIdentifier + \") has already been initialized\");\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(\"Component \" + this.name + \" has not been registered yet\");\r\n }\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options: options\r\n });\r\n try {\r\n // resolve any pending promise waiting for the service instance\r\n for (var _c = __values(this.instancesDeferred.entries()), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var _e = __read(_d.value, 2), instanceIdentifier = _e[0], instanceDeferred = _e[1];\r\n var normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n return instance;\r\n };\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n Provider.prototype.onInit = function (callback, identifier) {\r\n var _a;\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n var existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n var existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return function () {\r\n existingCallbacks.delete(callback);\r\n };\r\n };\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n Provider.prototype.invokeOnInitCallbacks = function (instance, identifier) {\r\n var e_3, _a;\r\n var callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n try {\r\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\r\n var callback = callbacks_1_1.value;\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_b) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n };\r\n Provider.prototype.getOrInitializeService = function (_a) {\r\n var instanceIdentifier = _a.instanceIdentifier, _b = _a.options, options = _b === void 0 ? {} : _b;\r\n var instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options: options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_c) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n };\r\n Provider.prototype.normalizeInstanceIdentifier = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n };\r\n Provider.prototype.shouldAutoInitialize = function () {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* EXPLICIT */);\r\n };\r\n return Provider;\r\n}());\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nvar ComponentContainer = /** @class */ (function () {\r\n function ComponentContainer(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n ComponentContainer.prototype.addComponent = function (component) {\r\n var provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(\"Component \" + component.name + \" has already been registered with \" + this.name);\r\n }\r\n provider.setComponent(component);\r\n };\r\n ComponentContainer.prototype.addOrOverwriteComponent = function (component) {\r\n var provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n };\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n ComponentContainer.prototype.getProvider = function (name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n var provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n };\r\n ComponentContainer.prototype.getProviders = function () {\r\n return Array.from(this.providers.values());\r\n };\r\n return ComponentContainer;\r\n}());\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm.js.map\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { ConfigService } from 'app/core/config.service';\nimport { LoginV2Request } from '../_models/login/loginV2.request';\nimport { LoginResponseV2 } from '../_models/login/login.response';\nimport { map } from 'rxjs/operators';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { AppState } from 'app/core/reducers';\nimport { Store } from '@ngrx/store';\nimport { Login, Logout } from '../_actions/auth.actions';\nimport { Router } from '@angular/router';\nimport jwt_decode from 'jwt-decode';\nimport { AccessTokenResponse } from '../_models/login/access-token.response';\nimport { KullaniciTemplateResponse } from '../_models/kullaniciTemplate.response';\nimport { KullaniciTemplateRequest } from '../_models/kullaniciTemplate.request';\nimport { KullaniciTemplateKaydetRequest } from '../_models/kullaniciTemplateKaydet.request';\nimport { KullanıcıyaBagliFiloListesiResponese } from 'app/core/ofkas/models/response/kullaniciayarlari/kulanicibaglifilolistesi.response';\nimport { MessagingService } from 'app/core/messaging.service';\nimport { TrendyolRandevuObjResponse, TrendyolRandevuResponse } from 'app/core/randevu/models/trendyol-randevu-response';\n\nexport enum LoginType {\n\tplaka = 0,\n\tdeveloper = 1,\n\tmerkez = 2,\n\tbayi = 5,\n\tfilo = 6,\n\tdiğer = 7,\n\tOEPlaza = 12\n}\n\nclass Token {\n\tpublic User: MiyaUser;\n\tpublic aud: string;\n\tpublic exp: number;\n\tpublic iss: string;\n}\n\nexport class MiyaUser {\n\tpublic Id: number;\n\tpublic UserName: string;\n\tpublic FullName: string;\n\tpublic UserType: LoginType;\n\tpublic UserTypeText: string;\n\tpublic MemberOf: number[];\n\tpublic ExternalId: number;\n}\n\nclass Dist {\n\tpublic lngKod: number;\n\tpublic txtUnvan: string;\n\tpublic txtDistKod: string;\n\tpublic txtKod: string;\n}\n\n@Injectable()\nexport class AuthService {\n\tprivate param: BehaviorSubject;\n\tpublic param$: Observable;\n\tconstructor(\n\t\tprivate http: HttpClient,\n\t\tprivate configService: ConfigService,\n\t\tprivate jwtHelper: JwtHelperService,\n\t\tprivate store: Store,\n\t\tprivate router: Router,\n\t\tprivate messagingService: MessagingService\n\t) {\n\t\tthis.param = new BehaviorSubject(false);\n\t\tthis.param$ = this.param.asObservable();\n\t}\n\n\tprivate headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n\tpublic message;\n\tlogin(value: LoginV2Request): Observable {\n\t\treturn this.http\n\t\t\t.post(this.configService.config.apiUrl + 'token', value, { headers: this.headers })\n\t\t\t.pipe(\n\t\t\t\tmap(res => {\n\t\t\t\t\t// localStorage.clear();\n\t\t\t\t\tlocalStorage.setItem('accessToken', res.access_token.toString());\n\t\t\t\t\tconst token: Token = this.jwtHelper.decodeToken(res.access_token.toString());\n\t\t\t\t\tthis.store.dispatch(new Login({ authToken: res.access_token }));\n\n\t\t\t\t\t/*\n\t\t\t\tToken'dan gelen orjinal UserType değeri Miya framework login tipidir.\n\t\t\t\tUI tarafında bu mantığı kullanmıyor UI için mantığını değiştiriyoruz.\n\t\t\t\tMiyaKullanici = 0,\n\t\t\t\tToken = 1,\n\t\t\t\tPanoramaKullanici = 2,\n\t\t\t\tPlaka = 3\n\t\t\t\t*/\n\t\t\t\t\tlet tip = 'plaka';\n\t\t\t\t\ttoken.User.UserType = LoginType.plaka;\n\n\t\t\t\t\tif (token.User.MemberOf.find(f => f === 1)) {\n\t\t\t\t\t\ttip = 'developer';\n\t\t\t\t\t\ttoken.User.UserType = LoginType.developer;\n\t\t\t\t\t}\n\t\t\t\t\tif (token.User.MemberOf.find(f => f === 2)) {\n\t\t\t\t\t\ttip = 'merkez';\n\t\t\t\t\t\ttoken.User.UserType = LoginType.merkez;\n\t\t\t\t\t}\n\t\t\t\t\tif (token.User.MemberOf.find(f => f === 5)) {\n\t\t\t\t\t\ttip = 'bayi';\n\t\t\t\t\t\ttoken.User.UserType = LoginType.bayi;\n\t\t\t\t\t}\n\t\t\t\t\tif (token.User.MemberOf.find(f => f === 7)) {\n\t\t\t\t\t\ttip = 'diğer';\n\t\t\t\t\t\ttoken.User.UserType = LoginType.diğer;\n\t\t\t\t\t}\n\t\t\t\t\tif (token.User.MemberOf.find(f => f === 6)) {\n\t\t\t\t\t\ttip = 'filo';\n\t\t\t\t\t\ttoken.User.UserType = LoginType.filo;\n\t\t\t\t\t}\n\t\t\t\t\tif (token.User.MemberOf.find(f => f === 12)) {\n\t\t\t\t\t\ttip = 'OEPlaza';\n\t\t\t\t\t\ttoken.User.UserType = LoginType.OEPlaza;\n\t\t\t\t\t}\n\n\t\t\t\t\tlocalStorage.setItem('User', JSON.stringify(token.User));\n\n\t\t\t\t\tif (tip !== 'plaka') {\n\t\t\t\t\t\tthis.getDistInfo().subscribe(data => {\n\t\t\t\t\t\t\tif (data.length !== 0) {\n\t\t\t\t\t\t\t\tlocalStorage.setItem('lngDistKod', data[0].lngKod.toString());\n\t\t\t\t\t\t\t\tlocalStorage.setItem('unvan', data[0].txtUnvan);\n\t\t\t\t\t\t\t\tlocalStorage.setItem('distArray', JSON.stringify(data));\n\t\t\t\t\t\t\t\tthis.distYetki();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlocalStorage.setItem('bayiyetkili', '0');\n\t\t\t\t\tlocalStorage.setItem('loginType', tip);\n\t\t\t\t\tif (tip === 'bayi') {\n\t\t\t\t\t\tthis.messagingService.requestPermission();\n\t\t\t\t\t\tthis.messagingService.receiveMessage();\n\t\t\t\t\t\tthis.message = this.messagingService.currentMessage;\n\t\t\t\t\t}\n\n\t\t\t\t\tlocalStorage.setItem('txtPerformansAnlasma', 'user.txtPerformansAnlasma');\n\n\t\t\t\t\treturn token.User;\n\t\t\t\t})\n\t\t\t);\n\t}\n\n\tdistInfo(): JSON {\n\t\treturn JSON.parse(localStorage.getItem('distArray'));\n\t}\n\n\tlogout(): void {\n\t\tconst cntloginType = localStorage.getItem('loginType');\n\t\tlocalStorage.clear();\n\t\tlocalStorage.setItem('loginType', cntloginType);\n\n\t\tthis.store.dispatch(new Logout());\n\n\t\tif (window.location.hostname === 'performanslastikara.com') {\n\t\t\tthis.router.navigateByUrl('/auth/sorumlu-girisi');\n\t\t} else {\n\t\t\tif (cntloginType === 'plaka' || !cntloginType) {\n\t\t\t\tthis.router.navigateByUrl('/auth/login');\n\t\t\t} else {\n\t\t\t\tthis.router.navigateByUrl('/auth/sorumlu-girisi');\n\t\t\t}\n\t\t}\n\t}\n\n\tCurrentUser(): MiyaUser {\n\t\tconst userStr = localStorage.getItem('User');\n\t\tlet user = new MiyaUser();\n\t\tif (userStr) {\n\t\t\tuser = JSON.parse(userStr) as MiyaUser;\n\t\t}\n\t\tuser.ExternalId = +user.ExternalId;\n\t\tuser.Id = +user.Id;\n\t\treturn user;\n\t}\n\n\tgetDistInfo(): Observable {\n\t\treturn this.http.get(this.configService.config.apiUrl + 'api/kullanici/GetDistInfo', {\n\t\t\theaders: this.headers\n\t\t});\n\t}\n\tpostTrendyolRandevuOku(vasId: string): Observable {\n\t\tconst formData = new FormData();\n\t\tformData.append('vasId', vasId.toString());\n\t\treturn this.http.post(\n\t\t\tthis.configService.config.apiUrl + 'api/ETicaretEntegrasyon/TrendyolRandevuOku',\n\t\t\tformData\n\t\t);\n\t}\n\n\tdistYetki(): Dist[] {\n\t\tconst accessTokenexp: AccessTokenResponse = jwt_decode(localStorage.getItem('accessToken'));\n\n\t\tconst eslesenDist: Dist[] = [];\n\t\tconst distArray: Dist[] = JSON.parse(localStorage.getItem('distArray'));\n\t\taccessTokenexp.User.MemberOf.forEach(x => {\n\t\t\tdistArray.forEach(dist => {\n\t\t\t\tif (x === dist.lngKod) {\n\t\t\t\t\teslesenDist.push(dist);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn eslesenDist;\n\t}\n\n\tpublic isAuthenticated(): boolean {\n\t\tconst token = localStorage.getItem('accessToken');\n\t\treturn !this.jwtHelper.isTokenExpired(token);\n\t}\n\n\tprivate requestOptions = new HttpHeaders({\n\t\t'Content-Type': 'application/json',\n\t\tAuthorization: 'bearer' + ' ' + localStorage.getItem('accessToken'),\n\t\tAccept: 'application/json'\n\t});\n\n\tprivate options = { headers: this.requestOptions };\n\n\tpostKullaniciTemplate(req: KullaniciTemplateRequest) {\n\t\treturn this.http.post(\n\t\t\tthis.configService.config.apiUrl + 'api/Kullanici/KullaniciTemplate',\n\t\t\treq,\n\t\t\tthis.options\n\t\t);\n\t}\n\n\tpostKullaniciTemplateKaydet(req: KullaniciTemplateKaydetRequest) {\n\t\treturn this.http.post(\n\t\t\tthis.configService.config.apiUrl + 'api/Kullanici/KullaniciTemplateKaydet',\n\t\t\treq,\n\t\t\tthis.options\n\t\t);\n\t}\n\tKullaniciyaBagliFiloListesi(): Observable {\n\t\treturn this.http.get(\n\t\t\tthis.configService.config.apiUrl + 'api/OfkFilo/KullaniciyaBagliFiloListesi',\n\t\t\t{}\n\t\t);\n\t}\n\tkullaniciTipi(parametre: boolean): boolean {\n\t\tthis.param.next(parametre);\n\n\t\treturn parametre;\n\t}\n}\n","import { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return (source) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\nclass DistinctUntilChangedOperator {\n constructor(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n call(subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\nclass DistinctUntilChangedSubscriber extends Subscriber {\n constructor(destination, compare, keySelector) {\n super(destination);\n this.keySelector = keySelector;\n this.hasKey = false;\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n compare(x, y) {\n return x === y;\n }\n _next(value) {\n let key;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","import { isObservable, of, Subject } from 'rxjs';\nimport { ɵɵdefineInjectable, Injectable, InjectionToken } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource.\n return value && typeof value.connect === 'function';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* INSERTED */;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* REMOVED */;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) { // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* INSERTED */ : 0 /* REPLACED */;\n }\n else if (currentIndex == null) { // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* REMOVED */;\n }\n else { // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /**\n * Selects a value or an array of values.\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Deselects a value or an array of values.\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Toggles a value between selected and deselected.\n */\n toggle(value) {\n this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n */\n clear() {\n this._unmarkAll();\n this._emitChangeEvent();\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(value);\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n this._selection.add(value);\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n}\nUniqueSelectionDispatcher.ɵfac = function UniqueSelectionDispatcher_Factory(t) { return new (t || UniqueSelectionDispatcher)(); };\nUniqueSelectionDispatcher.ɵprov = ɵɵdefineInjectable({ factory: function UniqueSelectionDispatcher_Factory() { return new UniqueSelectionDispatcher(); }, token: UniqueSelectionDispatcher, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UniqueSelectionDispatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n\n//# sourceMappingURL=collections.js.map","import { Overlay, OverlayConfig, OverlayContainer, OverlayModule } from '@angular/cdk/overlay';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { EventEmitter, Directive, ElementRef, ChangeDetectorRef, Optional, Inject, ViewChild, Component, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Injector, TemplateRef, Type, Injectable, SkipSelf, Input, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { Subject, defer, of } from 'rxjs';\nimport { filter, take, startWith } from 'rxjs/operators';\nimport { FocusTrapFactory, FocusMonitor } from '@angular/cdk/a11y';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/a11y';\nimport * as ɵngcc2 from '@angular/cdk/portal';\nimport * as ɵngcc3 from '@angular/cdk/overlay';\nimport * as ɵngcc4 from '@angular/common';\n\nfunction MatDialogContainer_ng_template_0_Template(rf, ctx) { }\nclass MatDialogConfig {\n constructor() {\n /** The ARIA role of the dialog element. */\n this.role = 'dialog';\n /** Custom class for the overlay pane. */\n this.panelClass = '';\n /** Whether the dialog has a backdrop. */\n this.hasBackdrop = true;\n /** Custom class for the backdrop. */\n this.backdropClass = '';\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n this.disableClose = false;\n /** Width of the dialog. */\n this.width = '';\n /** Height of the dialog. */\n this.height = '';\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n this.maxWidth = '80vw';\n /** Data being injected into the child component. */\n this.data = null;\n /** ID of the element that describes the dialog. */\n this.ariaDescribedBy = null;\n /** ID of the element that labels the dialog. */\n this.ariaLabelledBy = null;\n /** Aria label to assign to the dialog element. */\n this.ariaLabel = null;\n /** Whether the dialog should focus the first focusable element on open. */\n this.autoFocus = true;\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n this.restoreFocus = true;\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.closeOnNavigation = true;\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nconst matDialogAnimations = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({ opacity: 0, transform: 'scale(0.7)' })),\n state('enter', style({ transform: 'none' })),\n transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'none', opacity: 1 }))),\n transition('* => void, * => exit', animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ opacity: 0 }))),\n ])\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nfunction throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\nclass _MatDialogContainerBase extends BasePortalOutlet {\n constructor(_elementRef, _focusTrapFactory, _changeDetectorRef, _document, \n /** The dialog configuration. */\n _config, _focusMonitor) {\n super();\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._changeDetectorRef = _changeDetectorRef;\n this._config = _config;\n this._focusMonitor = _focusMonitor;\n /** Emits when an animation state changes. */\n this._animationStateChanged = new EventEmitter();\n /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n this._elementFocusedBeforeDialogWasOpened = null;\n /**\n * Type of interaction that led to the dialog being closed. This is used to determine\n * whether the focus style will be applied when returning focus to its original location\n * after the dialog is closed.\n */\n this._closeInteractionType = null;\n /**\n * Attaches a DOM portal to the dialog container.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n return this._portalOutlet.attachDomPortal(portal);\n };\n this._ariaLabelledBy = _config.ariaLabelledBy || null;\n this._document = _document;\n }\n /** Initializes the dialog container with the attached content. */\n _initializeWithAttachedContent() {\n this._setupFocusTrap();\n // Save the previously focused element. This element will be re-focused\n // when the dialog closes.\n this._capturePreviouslyFocusedElement();\n // Move focus onto the dialog immediately in order to prevent the user\n // from accidentally opening multiple dialogs at the same time.\n this._focusDialogContainer();\n }\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachComponentPortal(portal) {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n return this._portalOutlet.attachComponentPortal(portal);\n }\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachTemplatePortal(portal) {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n /** Moves focus back into the dialog if it was moved out. */\n _recaptureFocus() {\n if (!this._containsFocus()) {\n const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();\n if (focusContainer) {\n this._elementRef.nativeElement.focus();\n }\n }\n }\n /** Moves the focus inside the focus trap. */\n _trapFocus() {\n // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait for the microtask queue to be empty.\n if (this._config.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n }\n else if (!this._containsFocus()) {\n // Otherwise ensure that focus is on the dialog container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the dialog already, because it's possible that the consumer\n // turned off `autoFocus` in order to move focus themselves.\n this._elementRef.nativeElement.focus();\n }\n }\n /** Restores focus to the element that was focused before the dialog opened. */\n _restoreFocus() {\n const previousElement = this._elementFocusedBeforeDialogWasOpened;\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this._config.restoreFocus && previousElement &&\n typeof previousElement.focus === 'function') {\n const activeElement = this._getActiveElement();\n const element = this._elementRef.nativeElement;\n // Make sure that focus is still inside the dialog or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement || activeElement === this._document.body || activeElement === element ||\n element.contains(activeElement)) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n this._closeInteractionType = null;\n }\n else {\n previousElement.focus();\n }\n }\n }\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n /** Sets up the focus trap. */\n _setupFocusTrap() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n /** Captures the element that was focused before the dialog was opened. */\n _capturePreviouslyFocusedElement() {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = this._getActiveElement();\n }\n }\n /** Focuses the dialog container. */\n _focusDialogContainer() {\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n this._elementRef.nativeElement.focus();\n }\n }\n /** Returns whether focus is inside the dialog. */\n _containsFocus() {\n const element = this._elementRef.nativeElement;\n const activeElement = this._getActiveElement();\n return element === activeElement || element.contains(activeElement);\n }\n /** Gets the currently-focused element on the page. */\n _getActiveElement() {\n var _a;\n // If the `activeElement` is inside a shadow root, `document.activeElement` will\n // point to the shadow root so we have to descend into it ourselves.\n const activeElement = this._document.activeElement;\n return ((_a = activeElement === null || activeElement === void 0 ? void 0 : activeElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) || activeElement;\n }\n}\n_MatDialogContainerBase.ɵfac = function _MatDialogContainerBase_Factory(t) { return new (t || _MatDialogContainerBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusTrapFactory), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8), ɵngcc0.ɵɵdirectiveInject(MatDialogConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor)); };\n_MatDialogContainerBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatDialogContainerBase, viewQuery: function _MatDialogContainerBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(CdkPortalOutlet, 3);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._portalOutlet = _t.first);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n_MatDialogContainerBase.ctorParameters = () => [\n { type: ElementRef },\n { type: FocusTrapFactory },\n { type: ChangeDetectorRef },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },\n { type: MatDialogConfig },\n { type: FocusMonitor }\n];\n_MatDialogContainerBase.propDecorators = {\n _portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet, { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatDialogContainerBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.FocusTrapFactory }, { type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: MatDialogConfig }, { type: ɵngcc1.FocusMonitor }]; }, { _portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, { static: true }]\n }] }); })();\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\nclass MatDialogContainer extends _MatDialogContainerBase {\n constructor() {\n super(...arguments);\n /** State of the dialog animation. */\n this._state = 'enter';\n }\n /** Callback, invoked whenever an animation on the host completes. */\n _onAnimationDone({ toState, totalTime }) {\n if (toState === 'enter') {\n this._trapFocus();\n this._animationStateChanged.next({ state: 'opened', totalTime });\n }\n else if (toState === 'exit') {\n this._restoreFocus();\n this._animationStateChanged.next({ state: 'closed', totalTime });\n }\n }\n /** Callback, invoked when an animation on the host starts. */\n _onAnimationStart({ toState, totalTime }) {\n if (toState === 'enter') {\n this._animationStateChanged.next({ state: 'opening', totalTime });\n }\n else if (toState === 'exit' || toState === 'void') {\n this._animationStateChanged.next({ state: 'closing', totalTime });\n }\n }\n /** Starts the dialog exit animation. */\n _startExitAnimation() {\n this._state = 'exit';\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\n }\n}\nMatDialogContainer.ɵfac = function MatDialogContainer_Factory(t) { return ɵMatDialogContainer_BaseFactory(t || MatDialogContainer); };\nMatDialogContainer.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatDialogContainer, selectors: [[\"mat-dialog-container\"]], hostAttrs: [\"tabindex\", \"-1\", \"aria-modal\", \"true\", 1, \"mat-dialog-container\"], hostVars: 6, hostBindings: function MatDialogContainer_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵsyntheticHostListener(\"@dialogContainer.start\", function MatDialogContainer_animation_dialogContainer_start_HostBindingHandler($event) { return ctx._onAnimationStart($event); })(\"@dialogContainer.done\", function MatDialogContainer_animation_dialogContainer_done_HostBindingHandler($event) { return ctx._onAnimationDone($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx._id);\n ɵngcc0.ɵɵattribute(\"role\", ctx._config.role)(\"aria-labelledby\", ctx._config.ariaLabel ? null : ctx._ariaLabelledBy)(\"aria-label\", ctx._config.ariaLabel)(\"aria-describedby\", ctx._config.ariaDescribedBy || null);\n ɵngcc0.ɵɵsyntheticHostProperty(\"@dialogContainer\", ctx._state);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 0, consts: [[\"cdkPortalOutlet\", \"\"]], template: function MatDialogContainer_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MatDialogContainer_ng_template_0_Template, 0, 0, \"ng-template\", 0);\n } }, directives: [ɵngcc2.CdkPortalOutlet], styles: [\".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;box-sizing:content-box;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"], encapsulation: 2, data: { animation: [matDialogAnimations.dialogContainer] } });\nconst ɵMatDialogContainer_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatDialogContainer);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDialogContainer, [{\n type: Component,\n args: [{\n selector: 'mat-dialog-container',\n template: \"\\n\",\n encapsulation: ViewEncapsulation.None,\n // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [matDialogAnimations.dialogContainer],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n 'aria-modal': 'true',\n '[id]': '_id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[@dialogContainer]': '_state',\n '(@dialogContainer.start)': '_onAnimationStart($event)',\n '(@dialogContainer.done)': '_onAnimationDone($event)'\n },\n styles: [\".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;box-sizing:content-box;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(jelbourn): resizing\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nclass MatDialogRef {\n constructor(_overlayRef, _containerInstance, id = `mat-dialog-${uniqueId++}`) {\n this._overlayRef = _overlayRef;\n this._containerInstance = _containerInstance;\n this.id = id;\n /** Whether the user is allowed to close the dialog. */\n this.disableClose = this._containerInstance._config.disableClose;\n /** Subject for notifying the user that the dialog has finished opening. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the dialog has finished closing. */\n this._afterClosed = new Subject();\n /** Subject for notifying the user that the dialog has started closing. */\n this._beforeClosed = new Subject();\n /** Current state of the dialog. */\n this._state = 0 /* OPEN */;\n // Pass the id along to the container.\n _containerInstance._id = id;\n // Emit when opening animation completes\n _containerInstance._animationStateChanged.pipe(filter(event => event.state === 'opened'), take(1))\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged.pipe(filter(event => event.state === 'closed'), take(1)).subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n _overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null;\n this._overlayRef.dispose();\n });\n _overlayRef.keydownEvents()\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }))\n .subscribe(event => {\n event.preventDefault();\n _closeDialogVia(this, 'keyboard');\n });\n _overlayRef.backdropClick().subscribe(() => {\n if (this.disableClose) {\n this._containerInstance._recaptureFocus();\n }\n else {\n _closeDialogVia(this, 'mouse');\n }\n });\n }\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult) {\n this._result = dialogResult;\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged.pipe(filter(event => event.state === 'closing'), take(1))\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._overlayRef.detachBackdrop();\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(), event.totalTime + 100);\n });\n this._state = 1 /* CLOSING */;\n this._containerInstance._startExitAnimation();\n }\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened() {\n return this._afterOpened;\n }\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed() {\n return this._afterClosed;\n }\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed() {\n return this._beforeClosed;\n }\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick() {\n return this._overlayRef.backdropClick();\n }\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents() {\n return this._overlayRef.keydownEvents();\n }\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position) {\n let strategy = this._getPositionStrategy();\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n }\n else {\n strategy.centerHorizontally();\n }\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n }\n else {\n strategy.centerVertically();\n }\n this._overlayRef.updatePosition();\n return this;\n }\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width = '', height = '') {\n this._overlayRef.updateSize({ width, height });\n this._overlayRef.updatePosition();\n return this;\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n this._overlayRef.addPanelClass(classes);\n return this;\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n this._overlayRef.removePanelClass(classes);\n return this;\n }\n /** Gets the current state of the dialog's lifecycle. */\n getState() {\n return this._state;\n }\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n _finishDialogClose() {\n this._state = 2 /* CLOSED */;\n this._overlayRef.dispose();\n }\n /** Fetches the position strategy object from the overlay ref. */\n _getPositionStrategy() {\n return this._overlayRef.getConfig().positionStrategy;\n }\n}\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nfunction _closeDialogVia(ref, interactionType, result) {\n // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n // For those, we keep the behavior as is and do not deal with the interaction type.\n if (ref._containerInstance !== undefined) {\n ref._containerInstance._closeInteractionType = interactionType;\n }\n return ref.close(result);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nconst MAT_DIALOG_DATA = new InjectionToken('MatDialogData');\n/** Injection token that can be used to specify default dialog options. */\nconst MAT_DIALOG_DEFAULT_OPTIONS = new InjectionToken('mat-dialog-default-options');\n/** Injection token that determines the scroll handling while the dialog is open. */\nconst MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken('mat-dialog-scroll-strategy');\n/** @docs-private */\nfunction MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.block();\n}\n/** @docs-private */\nfunction MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.block();\n}\n/** @docs-private */\nconst MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\nclass _MatDialogBase {\n constructor(_overlay, _injector, _defaultOptions, _parentDialog, _overlayContainer, scrollStrategy, _dialogRefConstructor, _dialogContainerType, _dialogDataToken) {\n this._overlay = _overlay;\n this._injector = _injector;\n this._defaultOptions = _defaultOptions;\n this._parentDialog = _parentDialog;\n this._overlayContainer = _overlayContainer;\n this._dialogRefConstructor = _dialogRefConstructor;\n this._dialogContainerType = _dialogContainerType;\n this._dialogDataToken = _dialogDataToken;\n this._openDialogsAtThisLevel = [];\n this._afterAllClosedAtThisLevel = new Subject();\n this._afterOpenedAtThisLevel = new Subject();\n this._ariaHiddenElements = new Map();\n // TODO (jelbourn): tighten the typing right-hand side of this expression.\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n this.afterAllClosed = defer(() => this.openDialogs.length ?\n this._getAfterAllClosed() :\n this._getAfterAllClosed().pipe(startWith(undefined)));\n this._scrollStrategy = scrollStrategy;\n }\n /** Keeps track of the currently-open dialogs. */\n get openDialogs() {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n /** Stream that emits when a dialog has been opened. */\n get afterOpened() {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n _getAfterAllClosed() {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n open(componentOrTemplateRef, config) {\n config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n if (config.id && this.getDialogById(config.id) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n const overlayRef = this._createOverlay(config);\n const dialogContainer = this._attachDialogContainer(overlayRef, config);\n const dialogRef = this._attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);\n // If this is the first dialog that we're opening, hide all the non-overlay content.\n if (!this.openDialogs.length) {\n this._hideNonDialogContentFromAssistiveTechnology();\n }\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n this.afterOpened.next(dialogRef);\n // Notify the dialog container that the content has been attached.\n dialogContainer._initializeWithAttachedContent();\n return dialogRef;\n }\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll() {\n this._closeDialogs(this.openDialogs);\n }\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id) {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param config The dialog configuration.\n * @returns A promise resolving to the OverlayRef for the created overlay.\n */\n _createOverlay(config) {\n const overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an overlay config from a dialog config.\n * @param dialogConfig The dialog configuration.\n * @returns The overlay configuration.\n */\n _getOverlayConfig(dialogConfig) {\n const state = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight,\n disposeOnNavigation: dialogConfig.closeOnNavigation\n });\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n return state;\n }\n /**\n * Attaches a dialog container to a dialog's already-created overlay.\n * @param overlay Reference to the dialog's underlying overlay.\n * @param config The dialog configuration.\n * @returns A promise resolving to a ComponentRef for the attached container.\n */\n _attachDialogContainer(overlay, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: MatDialogConfig, useValue: config }]\n });\n const containerPortal = new ComponentPortal(this._dialogContainerType, config.viewContainerRef, injector, config.componentFactoryResolver);\n const containerRef = overlay.attach(containerPortal);\n return containerRef.instance;\n }\n /**\n * Attaches the user-provided component to the already-created dialog container.\n * @param componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param dialogContainer Reference to the wrapping dialog container.\n * @param overlayRef Reference to the overlay in which the dialog resides.\n * @param config The dialog configuration.\n * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n */\n _attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config) {\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, { $implicit: config.data, dialogRef }));\n }\n else {\n const injector = this._createInjector(config, dialogRef, dialogContainer);\n const contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n return dialogRef;\n }\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the dialog.\n * @param dialogRef Reference to the dialog.\n * @param dialogContainer Dialog container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the dialog.\n */\n _createInjector(config, dialogRef, dialogContainer) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n // The dialog container should be provided as the dialog container and the dialog's\n // content are created out of the same `ViewContainerRef` and as such, are siblings\n // for injector purposes. To allow the hierarchy that is expected, the dialog\n // container is explicitly provided in the injector.\n const providers = [\n { provide: this._dialogContainerType, useValue: dialogContainer },\n { provide: this._dialogDataToken, useValue: config.data },\n { provide: this._dialogRefConstructor, useValue: dialogRef }\n ];\n if (config.direction &&\n (!userInjector || !userInjector.get(Directionality, null))) {\n providers.push({\n provide: Directionality,\n useValue: { value: config.direction, change: of() }\n });\n }\n return Injector.create({ parent: userInjector || this._injector, providers });\n }\n /**\n * Removes a dialog from the array of open dialogs.\n * @param dialogRef Dialog to be removed.\n */\n _removeOpenDialog(dialogRef) {\n const index = this.openDialogs.indexOf(dialogRef);\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this._ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenElements.clear();\n this._getAfterAllClosed().next();\n }\n }\n }\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n _hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this._overlayContainer.getContainerElement();\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n for (let i = siblings.length - 1; i > -1; i--) {\n let sibling = siblings[i];\n if (sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')) {\n this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n /** Closes all of the dialogs in an array. */\n _closeDialogs(dialogs) {\n let i = dialogs.length;\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n dialogs[i].close();\n }\n }\n}\n_MatDialogBase.ɵfac = function _MatDialogBase_Factory(t) { return new (t || _MatDialogBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(undefined), ɵngcc0.ɵɵdirectiveInject(undefined), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.OverlayContainer), ɵngcc0.ɵɵdirectiveInject(undefined), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Type), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Type), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.InjectionToken)); };\n_MatDialogBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatDialogBase });\n_MatDialogBase.ctorParameters = () => [\n { type: Overlay },\n { type: Injector },\n { type: undefined },\n { type: undefined },\n { type: OverlayContainer },\n { type: undefined },\n { type: Type },\n { type: Type },\n { type: InjectionToken }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatDialogBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc3.Overlay }, { type: ɵngcc0.Injector }, { type: undefined }, { type: undefined }, { type: ɵngcc3.OverlayContainer }, { type: undefined }, { type: ɵngcc0.Type }, { type: ɵngcc0.Type }, { type: ɵngcc0.InjectionToken }]; }, null); })();\n/**\n * Service to open Material Design modal dialogs.\n */\nclass MatDialog extends _MatDialogBase {\n constructor(overlay, injector, \n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n location, defaultOptions, scrollStrategy, parentDialog, overlayContainer) {\n super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy, MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);\n }\n}\nMatDialog.ɵfac = function MatDialog_Factory(t) { return new (t || MatDialog)(ɵngcc0.ɵɵinject(ɵngcc3.Overlay), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(ɵngcc4.Location, 8), ɵngcc0.ɵɵinject(MAT_DIALOG_DEFAULT_OPTIONS, 8), ɵngcc0.ɵɵinject(MAT_DIALOG_SCROLL_STRATEGY), ɵngcc0.ɵɵinject(MatDialog, 12), ɵngcc0.ɵɵinject(ɵngcc3.OverlayContainer)); };\nMatDialog.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: MatDialog, factory: MatDialog.ɵfac });\nMatDialog.ctorParameters = () => [\n { type: Overlay },\n { type: Injector },\n { type: Location, decorators: [{ type: Optional }] },\n { type: MatDialogConfig, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DIALOG_DEFAULT_OPTIONS,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_SCROLL_STRATEGY,] }] },\n { type: MatDialog, decorators: [{ type: Optional }, { type: SkipSelf }] },\n { type: OverlayContainer }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDialog, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc3.Overlay }, { type: ɵngcc0.Injector }, { type: ɵngcc4.Location, decorators: [{\n type: Optional\n }] }, { type: MatDialogConfig, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DIALOG_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DIALOG_SCROLL_STRATEGY]\n }] }, { type: MatDialog, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: ɵngcc3.OverlayContainer }]; }, null); })();\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(config, defaultOptions) {\n return Object.assign(Object.assign({}, defaultOptions), config);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n/**\n * Button that will close the current dialog.\n */\nclass MatDialogClose {\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n dialogRef, _elementRef, _dialog) {\n this.dialogRef = dialogRef;\n this._elementRef = _elementRef;\n this._dialog = _dialog;\n /** Default to \"button\" to prevents accidental form submits. */\n this.type = 'button';\n }\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);\n }\n }\n ngOnChanges(changes) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n _onButtonClick(event) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(this.dialogRef, event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n }\n}\nMatDialogClose.ɵfac = function MatDialogClose_Factory(t) { return new (t || MatDialogClose)(ɵngcc0.ɵɵdirectiveInject(MatDialogRef, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(MatDialog)); };\nMatDialogClose.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatDialogClose, selectors: [[\"\", \"mat-dialog-close\", \"\"], [\"\", \"matDialogClose\", \"\"]], hostVars: 2, hostBindings: function MatDialogClose_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function MatDialogClose_click_HostBindingHandler($event) { return ctx._onButtonClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.ariaLabel || null)(\"type\", ctx.type);\n } }, inputs: { type: \"type\", dialogResult: [\"mat-dialog-close\", \"dialogResult\"], ariaLabel: [\"aria-label\", \"ariaLabel\"], _matDialogClose: [\"matDialogClose\", \"_matDialogClose\"] }, exportAs: [\"matDialogClose\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nMatDialogClose.ctorParameters = () => [\n { type: MatDialogRef, decorators: [{ type: Optional }] },\n { type: ElementRef },\n { type: MatDialog }\n];\nMatDialogClose.propDecorators = {\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n type: [{ type: Input }],\n dialogResult: [{ type: Input, args: ['mat-dialog-close',] }],\n _matDialogClose: [{ type: Input, args: ['matDialogClose',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDialogClose, [{\n type: Directive,\n args: [{\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type'\n }\n }]\n }], function () { return [{ type: MatDialogRef, decorators: [{\n type: Optional\n }] }, { type: ɵngcc0.ElementRef }, { type: MatDialog }]; }, { type: [{\n type: Input\n }], dialogResult: [{\n type: Input,\n args: ['mat-dialog-close']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], _matDialogClose: [{\n type: Input,\n args: ['matDialogClose']\n }] }); })();\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\nclass MatDialogTitle {\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n _dialogRef, _elementRef, _dialog) {\n this._dialogRef = _dialogRef;\n this._elementRef = _elementRef;\n this._dialog = _dialog;\n this.id = `mat-dialog-title-${dialogElementUid++}`;\n }\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);\n }\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n const container = this._dialogRef._containerInstance;\n if (container && !container._ariaLabelledBy) {\n container._ariaLabelledBy = this.id;\n }\n });\n }\n }\n}\nMatDialogTitle.ɵfac = function MatDialogTitle_Factory(t) { return new (t || MatDialogTitle)(ɵngcc0.ɵɵdirectiveInject(MatDialogRef, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(MatDialog)); };\nMatDialogTitle.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatDialogTitle, selectors: [[\"\", \"mat-dialog-title\", \"\"], [\"\", \"matDialogTitle\", \"\"]], hostAttrs: [1, \"mat-dialog-title\"], hostVars: 1, hostBindings: function MatDialogTitle_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n } }, inputs: { id: \"id\" }, exportAs: [\"matDialogTitle\"] });\nMatDialogTitle.ctorParameters = () => [\n { type: MatDialogRef, decorators: [{ type: Optional }] },\n { type: ElementRef },\n { type: MatDialog }\n];\nMatDialogTitle.propDecorators = {\n id: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDialogTitle, [{\n type: Directive,\n args: [{\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id'\n }\n }]\n }], function () { return [{ type: MatDialogRef, decorators: [{\n type: Optional\n }] }, { type: ɵngcc0.ElementRef }, { type: MatDialog }]; }, { id: [{\n type: Input\n }] }); })();\n/**\n * Scrollable content container of a dialog.\n */\nclass MatDialogContent {\n}\nMatDialogContent.ɵfac = function MatDialogContent_Factory(t) { return new (t || MatDialogContent)(); };\nMatDialogContent.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatDialogContent, selectors: [[\"\", \"mat-dialog-content\", \"\"], [\"mat-dialog-content\"], [\"\", \"matDialogContent\", \"\"]], hostAttrs: [1, \"mat-dialog-content\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDialogContent, [{\n type: Directive,\n args: [{\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: { 'class': 'mat-dialog-content' }\n }]\n }], null, null); })();\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\nclass MatDialogActions {\n}\nMatDialogActions.ɵfac = function MatDialogActions_Factory(t) { return new (t || MatDialogActions)(); };\nMatDialogActions.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatDialogActions, selectors: [[\"\", \"mat-dialog-actions\", \"\"], [\"mat-dialog-actions\"], [\"\", \"matDialogActions\", \"\"]], hostAttrs: [1, \"mat-dialog-actions\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDialogActions, [{\n type: Directive,\n args: [{\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: { 'class': 'mat-dialog-actions' }\n }]\n }], null, null); })();\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element, openDialogs) {\n let parent = element.nativeElement.parentElement;\n while (parent && !parent.classList.contains('mat-dialog-container')) {\n parent = parent.parentElement;\n }\n return parent ? openDialogs.find(dialog => dialog.id === parent.id) : null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatDialogModule {\n}\nMatDialogModule.ɵfac = function MatDialogModule_Factory(t) { return new (t || MatDialogModule)(); };\nMatDialogModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatDialogModule });\nMatDialogModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ], imports: [[\n OverlayModule,\n PortalModule,\n MatCommonModule,\n ], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatDialogModule, { declarations: function () { return [MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogActions, MatDialogContent]; }, imports: function () { return [OverlayModule,\n PortalModule,\n MatCommonModule]; }, exports: function () { return [MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogContent, MatDialogActions, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDialogModule, [{\n type: NgModule,\n args: [{\n imports: [\n OverlayModule,\n PortalModule,\n MatCommonModule,\n ],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [MatDialogContainer]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, _MatDialogBase, _MatDialogContainerBase, _closeDialogVia, matDialogAnimations, throwMatDialogContentAlreadyAttachedError };\n\n//# sourceMappingURL=dialog.js.map","import { NgModule, ɵɵdefineInjectable, ɵɵinject, Injectable, NgZone } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport { Platform } from '@angular/cdk/platform';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/platform';\nclass LayoutModule {\n}\nLayoutModule.ɵfac = function LayoutModule_Factory(t) { return new (t || LayoutModule)(); };\nLayoutModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: LayoutModule });\nLayoutModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutModule, [{\n type: NgModule,\n args: [{}]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform) {\n this._platform = _platform;\n this._matchMedia = this._platform.isBrowser && window.matchMedia ?\n // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window) :\n noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\nMediaMatcher.ɵfac = function MediaMatcher_Factory(t) { return new (t || MediaMatcher)(ɵngcc0.ɵɵinject(ɵngcc1.Platform)); };\nMediaMatcher.ɵprov = ɵɵdefineInjectable({ factory: function MediaMatcher_Factory() { return new MediaMatcher(ɵɵinject(Platform)); }, token: MediaMatcher, providedIn: \"root\" });\nMediaMatcher.ctorParameters = () => [\n { type: Platform }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MediaMatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.Platform }]; }, null); })();\n/**\n * For Webkit engines that only trigger the MediaQueryListListener when\n * there is at least one CSS selector for the respective media query.\n */\nfunction createEmptyStyleRule(query) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet\n .insertRule(`@media ${query} {.fx-query-test{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n}\nBreakpointObserver.ɵfac = function BreakpointObserver_Factory(t) { return new (t || BreakpointObserver)(ɵngcc0.ɵɵinject(MediaMatcher), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nBreakpointObserver.ɵprov = ɵɵdefineInjectable({ factory: function BreakpointObserver_Factory() { return new BreakpointObserver(ɵɵinject(MediaMatcher), ɵɵinject(NgZone)); }, token: BreakpointObserver, providedIn: \"root\" });\nBreakpointObserver.ctorParameters = () => [\n { type: MediaMatcher },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BreakpointObserver, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: MediaMatcher }, { type: ɵngcc0.NgZone }]; }, null); })();\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries.map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n\n//# sourceMappingURL=layout.js.map","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var j = 0; j < string.length; j += limit) {\n var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n var arr = [];\n\n for (var i = 0; i < segment.length; ++i) {\n var c = segment.charCodeAt(i);\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n arr[arr.length] = hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n out += arr.join('');\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","import { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\nexport function takeUntil(notifier) {\n return (source) => source.lift(new TakeUntilOperator(notifier));\n}\nclass TakeUntilOperator {\n constructor(notifier) {\n this.notifier = notifier;\n }\n call(subscriber, source) {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n constructor(destination) {\n super(destination);\n this.seenValue = false;\n }\n notifyNext() {\n this.seenValue = true;\n this.complete();\n }\n notifyComplete() {\n }\n}\n//# sourceMappingURL=takeUntil.js.map","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","// Angular\nimport { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n// Object-Path\nimport * as objectPath from 'object-path';\n\nexport interface MenuOptions {\n\tscroll?: any;\n\tsubmenu?: any;\n\taccordion?: any;\n}\n\n/**\n * Configure menu\n */\n@Directive({\n\tselector: '[ktMenu]',\n\texportAs: 'ktMenu'\n})\nexport class MenuDirective implements AfterViewInit {\n\t// Public propeties\n\t@Input() options: MenuOptions;\n\t// Private properites\n\tprivate menu: any;\n\n\t/**\n\t * Directive Constructor\n\t * @param el: ElementRef\n\t */\n\tconstructor(private el: ElementRef) {}\n\n\t/**\n\t * @ Lifecycle sequences => https://angular.io/guide/lifecycle-hooks\n\t */\n\n\t/**\n\t * After view init\n\t */\n\tngAfterViewInit(): void {\n\t\tthis.setupOptions();\n\t\tthis.menu = new KTMenu(this.el.nativeElement, this.options);\n\t}\n\n\t/**\n\t * Return the menu\n\t */\n\tgetMenu() {\n\t\treturn this.menu;\n\t}\n\n\t/**\n\t * Setup menu options\n\t */\n\tprivate setupOptions() {\n\t\t// init aside menu\n\t\tlet menuDesktopMode = 'accordion';\n\t\tif (this.el.nativeElement.getAttribute('data-ktmenu-dropdown') === '1') {\n\t\t\tmenuDesktopMode = 'dropdown';\n\t\t}\n\n\t\tif (typeof objectPath.get(this.options, 'submenu.desktop') === 'object') {\n\t\t\tobjectPath.set(this.options, 'submenu.desktop', menuDesktopMode);\n\t\t}\n\t}\n}\n","export default \"\\n/* classes attached to */\\n/* TODO: make fc-event selector work when calender in shadow DOM */\\n.fc-not-allowed,\\n.fc-not-allowed .fc-event { /* override events' custom cursors */\\n cursor: not-allowed;\\n}\\n/* TODO: not attached to body. attached to specific els. move */\\n.fc-unselectable {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n.fc {\\n /* layout of immediate children */\\n display: flex;\\n flex-direction: column;\\n\\n font-size: 1em\\n}\\n.fc,\\n .fc *,\\n .fc *:before,\\n .fc *:after {\\n box-sizing: border-box;\\n }\\n.fc table {\\n border-collapse: collapse;\\n border-spacing: 0;\\n font-size: 1em; /* normalize cross-browser */\\n }\\n.fc th {\\n text-align: center;\\n }\\n.fc th,\\n .fc td {\\n vertical-align: top;\\n padding: 0;\\n }\\n.fc a[data-navlink] {\\n cursor: pointer;\\n }\\n.fc a[data-navlink]:hover {\\n text-decoration: underline;\\n }\\n.fc-direction-ltr {\\n direction: ltr;\\n text-align: left;\\n}\\n.fc-direction-rtl {\\n direction: rtl;\\n text-align: right;\\n}\\n.fc-theme-standard td,\\n .fc-theme-standard th {\\n border: 1px solid #ddd;\\n border: 1px solid var(--fc-border-color, #ddd);\\n }\\n/* for FF, which doesn't expand a 100% div within a table cell. use absolute positioning */\\n/* inner-wrappers are responsible for being absolute */\\n/* TODO: best place for this? */\\n.fc-liquid-hack td,\\n .fc-liquid-hack th {\\n position: relative;\\n }\\n@font-face {\\n font-family: 'fcicons';\\n src: url(\\\"data:application/x-font-ttf;charset=utf-8;base64,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\\\") format('truetype');\\n font-weight: normal;\\n font-style: normal;\\n}\\n.fc-icon {\\n /* added for fc */\\n display: inline-block;\\n width: 1em;\\n height: 1em;\\n text-align: center;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n\\n /* use !important to prevent issues with browser extensions that change fonts */\\n font-family: 'fcicons' !important;\\n speak: none;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-transform: none;\\n line-height: 1;\\n\\n /* Better Font Rendering =========== */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n.fc-icon-chevron-left:before {\\n content: \\\"\\\\e900\\\";\\n}\\n.fc-icon-chevron-right:before {\\n content: \\\"\\\\e901\\\";\\n}\\n.fc-icon-chevrons-left:before {\\n content: \\\"\\\\e902\\\";\\n}\\n.fc-icon-chevrons-right:before {\\n content: \\\"\\\\e903\\\";\\n}\\n.fc-icon-minus-square:before {\\n content: \\\"\\\\e904\\\";\\n}\\n.fc-icon-plus-square:before {\\n content: \\\"\\\\e905\\\";\\n}\\n.fc-icon-x:before {\\n content: \\\"\\\\e906\\\";\\n}\\n/*\\nLots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css\\n\\nThese styles only apply when the standard-theme is activated.\\nWhen it's NOT activated, the fc-button classes won't even be in the DOM.\\n*/\\n.fc {\\n\\n /* reset */\\n\\n}\\n.fc .fc-button {\\n border-radius: 0;\\n overflow: visible;\\n text-transform: none;\\n margin: 0;\\n font-family: inherit;\\n font-size: inherit;\\n line-height: inherit;\\n }\\n.fc .fc-button:focus {\\n outline: 1px dotted;\\n outline: 5px auto -webkit-focus-ring-color;\\n }\\n.fc .fc-button {\\n -webkit-appearance: button;\\n }\\n.fc .fc-button:not(:disabled) {\\n cursor: pointer;\\n }\\n.fc .fc-button::-moz-focus-inner {\\n padding: 0;\\n border-style: none;\\n }\\n.fc {\\n\\n /* theme */\\n\\n}\\n.fc .fc-button {\\n display: inline-block;\\n font-weight: 400;\\n text-align: center;\\n vertical-align: middle;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n background-color: transparent;\\n border: 1px solid transparent;\\n padding: 0.4em 0.65em;\\n font-size: 1em;\\n line-height: 1.5;\\n border-radius: 0.25em;\\n }\\n.fc .fc-button:hover {\\n text-decoration: none;\\n }\\n.fc .fc-button:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);\\n }\\n.fc .fc-button:disabled {\\n opacity: 0.65;\\n }\\n.fc {\\n\\n /* \\\"primary\\\" coloring */\\n\\n}\\n.fc .fc-button-primary {\\n color: #fff;\\n color: var(--fc-button-text-color, #fff);\\n background-color: #2C3E50;\\n background-color: var(--fc-button-bg-color, #2C3E50);\\n border-color: #2C3E50;\\n border-color: var(--fc-button-border-color, #2C3E50);\\n }\\n.fc .fc-button-primary:hover {\\n color: #fff;\\n color: var(--fc-button-text-color, #fff);\\n background-color: #1e2b37;\\n background-color: var(--fc-button-hover-bg-color, #1e2b37);\\n border-color: #1a252f;\\n border-color: var(--fc-button-hover-border-color, #1a252f);\\n }\\n.fc .fc-button-primary:disabled { /* not DRY */\\n color: #fff;\\n color: var(--fc-button-text-color, #fff);\\n background-color: #2C3E50;\\n background-color: var(--fc-button-bg-color, #2C3E50);\\n border-color: #2C3E50;\\n border-color: var(--fc-button-border-color, #2C3E50); /* overrides :hover */\\n }\\n.fc .fc-button-primary:focus {\\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\\n }\\n.fc .fc-button-primary:not(:disabled):active,\\n .fc .fc-button-primary:not(:disabled).fc-button-active {\\n color: #fff;\\n color: var(--fc-button-text-color, #fff);\\n background-color: #1a252f;\\n background-color: var(--fc-button-active-bg-color, #1a252f);\\n border-color: #151e27;\\n border-color: var(--fc-button-active-border-color, #151e27);\\n }\\n.fc .fc-button-primary:not(:disabled):active:focus,\\n .fc .fc-button-primary:not(:disabled).fc-button-active:focus {\\n box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);\\n }\\n.fc {\\n\\n /* icons within buttons */\\n\\n}\\n.fc .fc-button .fc-icon {\\n vertical-align: middle;\\n font-size: 1.5em; /* bump up the size (but don't make it bigger than line-height of button, which is 1.5em also) */\\n }\\n.fc .fc-button-group {\\n position: relative;\\n display: inline-flex;\\n vertical-align: middle;\\n }\\n.fc .fc-button-group > .fc-button {\\n position: relative;\\n flex: 1 1 auto;\\n }\\n.fc .fc-button-group > .fc-button:hover {\\n z-index: 1;\\n }\\n.fc .fc-button-group > .fc-button:focus,\\n .fc .fc-button-group > .fc-button:active,\\n .fc .fc-button-group > .fc-button.fc-button-active {\\n z-index: 1;\\n }\\n.fc-direction-ltr .fc-button-group > .fc-button:not(:first-child) {\\n margin-left: -1px;\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n }\\n.fc-direction-ltr .fc-button-group > .fc-button:not(:last-child) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n }\\n.fc-direction-rtl .fc-button-group > .fc-button:not(:first-child) {\\n margin-right: -1px;\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n }\\n.fc-direction-rtl .fc-button-group > .fc-button:not(:last-child) {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n }\\n.fc .fc-toolbar {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n }\\n.fc .fc-toolbar.fc-header-toolbar {\\n margin-bottom: 1.5em;\\n }\\n.fc .fc-toolbar.fc-footer-toolbar {\\n margin-top: 1.5em;\\n }\\n.fc .fc-toolbar-title {\\n font-size: 1.75em;\\n margin: 0;\\n }\\n.fc-direction-ltr .fc-toolbar > * > :not(:first-child) {\\n margin-left: .75em; /* space between */\\n }\\n.fc-direction-rtl .fc-toolbar > * > :not(:first-child) {\\n margin-right: .75em; /* space between */\\n }\\n.fc-direction-rtl .fc-toolbar-ltr { /* when the toolbar-chunk positioning system is explicitly left-to-right */\\n flex-direction: row-reverse;\\n }\\n.fc .fc-scroller {\\n -webkit-overflow-scrolling: touch;\\n position: relative; /* for abs-positioned elements within */\\n }\\n.fc .fc-scroller-liquid {\\n height: 100%;\\n }\\n.fc .fc-scroller-liquid-absolute {\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n bottom: 0;\\n }\\n.fc .fc-scroller-harness {\\n position: relative;\\n overflow: hidden;\\n direction: ltr;\\n /* hack for chrome computing the scroller's right/left wrong for rtl. undone below... */\\n /* TODO: demonstrate in codepen */\\n }\\n.fc .fc-scroller-harness-liquid {\\n height: 100%;\\n }\\n.fc-direction-rtl .fc-scroller-harness > .fc-scroller { /* undo above hack */\\n direction: rtl;\\n }\\n.fc-theme-standard .fc-scrollgrid {\\n border: 1px solid #ddd;\\n border: 1px solid var(--fc-border-color, #ddd); /* bootstrap does this. match */\\n }\\n.fc .fc-scrollgrid,\\n .fc .fc-scrollgrid table { /* all tables (self included) */\\n width: 100%; /* because tables don't normally do this */\\n table-layout: fixed;\\n }\\n.fc .fc-scrollgrid table { /* inner tables */\\n border-top-style: hidden;\\n border-left-style: hidden;\\n border-right-style: hidden;\\n }\\n.fc .fc-scrollgrid {\\n\\n border-collapse: separate;\\n border-right-width: 0;\\n border-bottom-width: 0;\\n\\n }\\n.fc .fc-scrollgrid-liquid {\\n height: 100%;\\n }\\n.fc .fc-scrollgrid-section { /* a
*/\\n height: 1px /* better than 0, for firefox */\\n\\n }\\n.fc .fc-scrollgrid-section > td {\\n height: 1px; /* needs a height so inner div within grow. better than 0, for firefox */\\n }\\n.fc .fc-scrollgrid-section table {\\n height: 1px;\\n /* for most browsers, if a height isn't set on the table, can't do liquid-height within cells */\\n /* serves as a min-height. harmless */\\n }\\n.fc .fc-scrollgrid-section-liquid > td {\\n height: 100%; /* better than `auto`, for firefox */\\n }\\n.fc .fc-scrollgrid-section > * {\\n border-top-width: 0;\\n border-left-width: 0;\\n }\\n.fc .fc-scrollgrid-section-header > *,\\n .fc .fc-scrollgrid-section-footer > * {\\n border-bottom-width: 0;\\n }\\n.fc .fc-scrollgrid-section-body table,\\n .fc .fc-scrollgrid-section-footer table {\\n border-bottom-style: hidden; /* head keeps its bottom border tho */\\n }\\n.fc {\\n\\n /* stickiness */\\n\\n}\\n.fc .fc-scrollgrid-section-sticky > * {\\n background: #fff;\\n background: var(--fc-page-bg-color, #fff);\\n position: sticky;\\n z-index: 3; /* TODO: var */\\n /* TODO: box-shadow when sticking */\\n }\\n.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {\\n top: 0; /* because border-sharing causes a gap at the top */\\n /* TODO: give safari -1. has bug */\\n }\\n.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky > * {\\n bottom: 0; /* known bug: bottom-stickiness doesn't work in safari */\\n }\\n.fc .fc-scrollgrid-sticky-shim { /* for horizontal scrollbar */\\n height: 1px; /* needs height to create scrollbars */\\n margin-bottom: -1px;\\n }\\n.fc-sticky { /* no .fc wrap because used as child of body */\\n position: sticky;\\n}\\n.fc .fc-view-harness {\\n flex-grow: 1; /* because this harness is WITHIN the .fc's flexbox */\\n position: relative;\\n }\\n.fc {\\n\\n /* when the harness controls the height, make the view liquid */\\n\\n}\\n.fc .fc-view-harness-active > .fc-view {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n }\\n.fc .fc-col-header-cell-cushion {\\n display: inline-block; /* x-browser for when sticky (when multi-tier header) */\\n padding: 2px 4px;\\n }\\n.fc .fc-bg-event,\\n .fc .fc-non-business,\\n .fc .fc-highlight {\\n /* will always have a harness with position:relative/absolute, so absolutely expand */\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n }\\n.fc .fc-non-business {\\n background: rgba(215, 215, 215, 0.3);\\n background: var(--fc-non-business-color, rgba(215, 215, 215, 0.3));\\n }\\n.fc .fc-bg-event {\\n background: rgb(143, 223, 130);\\n background: var(--fc-bg-event-color, rgb(143, 223, 130));\\n opacity: 0.3;\\n opacity: var(--fc-bg-event-opacity, 0.3)\\n }\\n.fc .fc-bg-event .fc-event-title {\\n margin: .5em;\\n font-size: .85em;\\n font-size: var(--fc-small-font-size, .85em);\\n font-style: italic;\\n }\\n.fc .fc-highlight {\\n background: rgba(188, 232, 241, 0.3);\\n background: var(--fc-highlight-color, rgba(188, 232, 241, 0.3));\\n }\\n.fc .fc-cell-shaded,\\n .fc .fc-day-disabled {\\n background: rgba(208, 208, 208, 0.3);\\n background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\\n }\\n/* link resets */\\n/* ---------------------------------------------------------------------------------------------------- */\\na.fc-event,\\na.fc-event:hover {\\n text-decoration: none;\\n}\\n/* cursor */\\n.fc-event[href],\\n.fc-event.fc-event-draggable {\\n cursor: pointer;\\n}\\n/* event text content */\\n/* ---------------------------------------------------------------------------------------------------- */\\n.fc-event .fc-event-main {\\n position: relative;\\n z-index: 2;\\n }\\n/* dragging */\\n/* ---------------------------------------------------------------------------------------------------- */\\n.fc-event-dragging:not(.fc-event-selected) { /* MOUSE */\\n opacity: 0.75;\\n }\\n.fc-event-dragging.fc-event-selected { /* TOUCH */\\n box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);\\n }\\n/* resizing */\\n/* ---------------------------------------------------------------------------------------------------- */\\n/* (subclasses should hone positioning for touch and non-touch) */\\n.fc-event .fc-event-resizer {\\n display: none;\\n position: absolute;\\n z-index: 4;\\n }\\n.fc-event:hover, /* MOUSE */\\n.fc-event-selected { /* TOUCH */\\n\\n}\\n.fc-event:hover .fc-event-resizer, .fc-event-selected .fc-event-resizer {\\n display: block;\\n }\\n.fc-event-selected .fc-event-resizer {\\n border-radius: 4px;\\n border-radius: calc(var(--fc-event-resizer-dot-total-width, 8px) / 2);\\n border-width: 1px;\\n border-width: var(--fc-event-resizer-dot-border-width, 1px);\\n width: 8px;\\n width: var(--fc-event-resizer-dot-total-width, 8px);\\n height: 8px;\\n height: var(--fc-event-resizer-dot-total-width, 8px);\\n border-style: solid;\\n border-color: inherit;\\n background: #fff;\\n background: var(--fc-page-bg-color, #fff)\\n\\n /* expand hit area */\\n\\n }\\n.fc-event-selected .fc-event-resizer:before {\\n content: '';\\n position: absolute;\\n top: -20px;\\n left: -20px;\\n right: -20px;\\n bottom: -20px;\\n }\\n/* selecting (always TOUCH) */\\n/* OR, focused by tab-index */\\n/* (TODO: maybe not the best focus-styling for .fc-daygrid-dot-event) */\\n/* ---------------------------------------------------------------------------------------------------- */\\n.fc-event-selected,\\n.fc-event:focus {\\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2)\\n\\n /* expand hit area (subclasses should expand) */\\n\\n}\\n.fc-event-selected:before, .fc-event:focus:before {\\n content: \\\"\\\";\\n position: absolute;\\n z-index: 3;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n }\\n.fc-event-selected,\\n.fc-event:focus {\\n\\n /* dimmer effect */\\n\\n}\\n.fc-event-selected:after, .fc-event:focus:after {\\n content: \\\"\\\";\\n background: rgba(0, 0, 0, 0.25);\\n background: var(--fc-event-selected-overlay-color, rgba(0, 0, 0, 0.25));\\n position: absolute;\\n z-index: 1;\\n\\n /* assume there's a border on all sides. overcome it. */\\n /* sometimes there's NOT a border, in which case the dimmer will go over */\\n /* an adjacent border, which looks fine. */\\n top: -1px;\\n left: -1px;\\n right: -1px;\\n bottom: -1px;\\n }\\n/*\\nA HORIZONTAL event\\n*/\\n.fc-h-event { /* allowed to be top-level */\\n display: block;\\n border: 1px solid #3788d8;\\n border: 1px solid var(--fc-event-border-color, #3788d8);\\n background-color: #3788d8;\\n background-color: var(--fc-event-bg-color, #3788d8)\\n\\n}\\n.fc-h-event .fc-event-main {\\n color: #fff;\\n color: var(--fc-event-text-color, #fff);\\n }\\n.fc-h-event .fc-event-main-frame {\\n display: flex; /* for make fc-event-title-container expand */\\n }\\n.fc-h-event .fc-event-time {\\n max-width: 100%; /* clip overflow on this element */\\n overflow: hidden;\\n }\\n.fc-h-event .fc-event-title-container { /* serves as a container for the sticky cushion */\\n flex-grow: 1;\\n flex-shrink: 1;\\n min-width: 0; /* important for allowing to shrink all the way */\\n }\\n.fc-h-event .fc-event-title {\\n display: inline-block; /* need this to be sticky cross-browser */\\n vertical-align: top; /* for not messing up line-height */\\n left: 0; /* for sticky */\\n right: 0; /* for sticky */\\n max-width: 100%; /* clip overflow on this element */\\n overflow: hidden;\\n }\\n.fc-h-event.fc-event-selected:before {\\n /* expand hit area */\\n top: -10px;\\n bottom: -10px;\\n }\\n/* adjust border and border-radius (if there is any) for non-start/end */\\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),\\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end) {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n border-left-width: 0;\\n}\\n.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),\\n.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border-right-width: 0;\\n}\\n/* resizers */\\n.fc-h-event:not(.fc-event-selected) .fc-event-resizer {\\n top: 0;\\n bottom: 0;\\n width: 8px;\\n width: var(--fc-event-resizer-thickness, 8px);\\n}\\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,\\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end {\\n cursor: w-resize;\\n left: -4px;\\n left: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));\\n}\\n.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,\\n.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start {\\n cursor: e-resize;\\n right: -4px;\\n right: calc(-0.5 * var(--fc-event-resizer-thickness, 8px));\\n}\\n/* resizers for TOUCH */\\n.fc-h-event.fc-event-selected .fc-event-resizer {\\n top: 50%;\\n margin-top: -4px;\\n margin-top: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));\\n}\\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,\\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end {\\n left: -4px;\\n left: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));\\n}\\n.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,\\n.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start {\\n right: -4px;\\n right: calc(-0.5 * var(--fc-event-resizer-dot-total-width, 8px));\\n}\\n.fc .fc-popover {\\n position: absolute;\\n z-index: 9999;\\n box-shadow: 0 2px 6px rgba(0,0,0,.15);\\n }\\n.fc .fc-popover-header {\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n padding: 3px 4px;\\n }\\n.fc .fc-popover-title {\\n margin: 0 2px;\\n }\\n.fc .fc-popover-close {\\n cursor: pointer;\\n opacity: 0.65;\\n font-size: 1.1em;\\n }\\n.fc-theme-standard .fc-popover {\\n border: 1px solid #ddd;\\n border: 1px solid var(--fc-border-color, #ddd);\\n background: #fff;\\n background: var(--fc-page-bg-color, #fff);\\n }\\n.fc-theme-standard .fc-popover-header {\\n background: rgba(208, 208, 208, 0.3);\\n background: var(--fc-neutral-bg-color, rgba(208, 208, 208, 0.3));\\n }\\n\";","/// \nif (typeof FullCalendarVDom === 'undefined') {\n throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');\n}\nvar Component = FullCalendarVDom.Component;\nvar createElement = FullCalendarVDom.createElement;\nvar render = FullCalendarVDom.render;\nvar createRef = FullCalendarVDom.createRef;\nvar Fragment = FullCalendarVDom.Fragment;\nvar createContext = FullCalendarVDom.createContext;\nvar createPortal = FullCalendarVDom.createPortal;\nvar flushSync = FullCalendarVDom.flushSync;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushSync, render, unmountComponentAtNode };\n","/*!\nFullCalendar v5.11.5\nDocs & License: https://fullcalendar.io/\n(c) 2022 Adam Shaw\n*/\nimport './main.css';\n\nimport { __assign, __spreadArray, __extends } from 'tslib';\nimport { createContext, Component, createRef, createElement, Fragment, createPortal } from './vdom.js';\nexport * from './vdom.js';\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar EventSourceApi = /** @class */ (function () {\n function EventSourceApi(context, internalEventSource) {\n this.context = context;\n this.internalEventSource = internalEventSource;\n }\n EventSourceApi.prototype.remove = function () {\n this.context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId,\n });\n };\n EventSourceApi.prototype.refetch = function () {\n this.context.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId],\n isRefetch: true,\n });\n };\n Object.defineProperty(EventSourceApi.prototype, \"id\", {\n get: function () {\n return this.internalEventSource.publicId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"url\", {\n get: function () {\n return this.internalEventSource.meta.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"format\", {\n get: function () {\n return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n },\n enumerable: false,\n configurable: true\n });\n return EventSourceApi;\n}());\n\nfunction removeElement(el) {\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n // really bad fallback for IE\n // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n }\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (elementMatches(el, selector)) {\n return el;\n }\n el = (el.parentElement || el.parentNode);\n } while (el !== null && el.nodeType === 1);\n return null;\n}\nfunction elementMatches(el, selector) {\n var method = el.matches || el.matchesSelector || el.msMatchesSelector;\n return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n var containers = container instanceof HTMLElement ? [container] : container;\n var allMatches = [];\n for (var i = 0; i < containers.length; i += 1) {\n var matches = containers[i].querySelectorAll(selector);\n for (var j = 0; j < matches.length; j += 1) {\n allMatches.push(matches[j]);\n }\n }\n return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n var parents = parent instanceof HTMLElement ? [parent] : parent;\n var allMatches = [];\n for (var i = 0; i < parents.length; i += 1) {\n var childNodes = parents[i].children; // only ever elements\n for (var j = 0; j < childNodes.length; j += 1) {\n var childNode = childNodes[j];\n if (!selector || elementMatches(childNode, selector)) {\n allMatches.push(childNode);\n }\n }\n }\n return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nvar PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n for (var propName in props) {\n applyStyleProp(el, propName, props[propName]);\n }\n}\nfunction applyStyleProp(el, name, val) {\n if (val == null) {\n el.style[name] = '';\n }\n else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = val + \"px\";\n }\n else {\n el.style[name] = val;\n }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n var _a, _b;\n return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Shadow DOM consuderations\n// ----------------------------------------------------------------------------------------------------------------\nfunction getElRoot(el) {\n return el.getRootNode ? el.getRootNode() : document;\n}\n// Unique ID for DOM attribute\nvar guid$1 = 0;\nfunction getUniqueDomId() {\n guid$1 += 1;\n return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n return function (ev) {\n var matchedChild = elementClosest(ev.target, selector);\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n var attachedHandler = buildDelegationHandler(selector, handler);\n container.addEventListener(eventType, attachedHandler);\n return function () {\n container.removeEventListener(eventType, attachedHandler);\n };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n var currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, function (mouseOverEv, matchedChild) {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(mouseOverEv, matchedChild);\n var realOnMouseLeave_1 = function (mouseLeaveEv) {\n currentMatchedChild = null;\n onMouseLeave(mouseLeaveEv, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);\n };\n // listen to the next mouseleave, and then unattach\n matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);\n }\n });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nvar transitionEventNames = [\n 'webkitTransitionEnd',\n 'otransitionend',\n 'oTransitionEnd',\n 'msTransitionEnd',\n 'transitionend',\n];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n var realCallback = function (ev) {\n callback(ev);\n transitionEventNames.forEach(function (eventName) {\n el.removeEventListener(eventName, realCallback);\n });\n };\n transitionEventNames.forEach(function (eventName) {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n return __assign({ onClick: handler }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n return {\n tabIndex: 0,\n onKeyDown: function (ev) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n handler(ev);\n ev.preventDefault(); // if space, don't scroll down page\n }\n },\n };\n}\n\nvar guidNumber = 0;\nfunction guid() {\n guidNumber += 1;\n return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n el.classList.add('fc-unselectable');\n el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n el.classList.remove('fc-unselectable');\n el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n var specs = [];\n var tokens = [];\n var i;\n var token;\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n }\n else if (typeof input === 'function') {\n tokens = [input];\n }\n else if (Array.isArray(input)) {\n tokens = input;\n }\n for (i = 0; i < tokens.length; i += 1) {\n token = tokens[i];\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ?\n { field: token.substring(1), order: -1 } :\n { field: token, order: 1 });\n }\n else if (typeof token === 'function') {\n specs.push({ func: token });\n }\n }\n return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n var i;\n var cmp;\n for (i = 0; i < fieldSpecs.length; i += 1) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n if (cmp) {\n return cmp;\n }\n }\n return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n if (b == null) {\n return -1;\n }\n if (a == null) {\n return 1;\n }\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n var s = String(val);\n return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n if (typeof formatter === 'function') {\n return formatter.apply(void 0, args);\n }\n if (typeof formatter === 'string') { // non-blank string\n return args.reduce(function (str, arg, index) { return (str.replace('$' + index, arg || '')); }, formatter);\n }\n return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n return a - b;\n}\nfunction isInt(n) {\n return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n var allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n var contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n if (!allWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n }\n if (!contentWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-cushion className');\n }\n return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n contentWidthEl.getBoundingClientRect().width;\n}\n\nvar DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n var a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n var m0day = startOfDay(m0);\n var m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n var d = diffWholeDays(m0, m1);\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n return null;\n}\nfunction diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n ]);\n}\nfunction startOfHour(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n ]);\n}\nfunction startOfMinute(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n ]);\n}\nfunction startOfSecond(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n m.getUTCSeconds(),\n ]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n var y = marker.getUTCFullYear();\n var w = weekOfGivenYear(marker, y, dow, doy);\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n var nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n var dayStart = startOfDay(marker);\n var days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n var fwd = 7 + dow - doy;\n // first-week day local weekday -- which local weekday is fwd\n var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n return [\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n ];\n}\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n return [\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds(),\n ];\n}\nfunction arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n return new Date(Date.UTC.apply(Date, a));\n}\n// Other Utils\nfunction isValidDate(m) {\n return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 +\n m.getUTCMinutes() * 1000 * 60 +\n m.getUTCSeconds() * 1000 +\n m.getUTCMilliseconds();\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: guid(),\n defId: defId,\n range: range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n };\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n var dest = {};\n if (complexPropsMap) {\n for (var name_1 in complexPropsMap) {\n var complexObjs = [];\n // collect the trailing object values, stopping when a non-object is discovered\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var val = propObjs[i][name_1];\n if (typeof val === 'object' && val) { // non-null object\n complexObjs.unshift(val);\n }\n else if (val !== undefined) {\n dest[name_1] = val; // if there were no objects, this value will be used\n break;\n }\n }\n // if the trailing values were objects, use the merged value\n if (complexObjs.length) {\n dest[name_1] = mergeProps(complexObjs);\n }\n }\n }\n // copy values into the destination, going from last to first\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var props = propObjs[i];\n for (var name_2 in props) {\n if (!(name_2 in dest)) { // if already assigned by previous props or complex props, don't reassign\n dest[name_2] = props[name_2];\n }\n }\n }\n return dest;\n}\nfunction filterHash(hash, func) {\n var filtered = {};\n for (var key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n return filtered;\n}\nfunction mapHash(hash, func) {\n var newHash = {};\n for (var key in hash) {\n newHash[key] = func(hash[key], key);\n }\n return newHash;\n}\nfunction arrayToHash(a) {\n var hash = {};\n for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {\n var item = a_1[_i];\n hash[item] = true;\n }\n return hash;\n}\nfunction buildHashFromArray(a, func) {\n var hash = {};\n for (var i = 0; i < a.length; i += 1) {\n var tuple = func(a[i], i);\n hash[tuple[0]] = tuple[1];\n }\n return hash;\n}\nfunction hashValuesToArray(obj) {\n var a = [];\n for (var key in obj) {\n a.push(obj[key]);\n }\n return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n if (obj0 === obj1) {\n return true;\n }\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n var keys = [];\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n keys.push(key);\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n keys.push(key);\n }\n }\n }\n return keys;\n}\nfunction compareObjs(oldProps, newProps, equalityFuncs) {\n if (equalityFuncs === void 0) { equalityFuncs = {}; }\n if (oldProps === newProps) {\n return true;\n }\n for (var key in newProps) {\n if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;\n else {\n return false;\n }\n }\n // check for props that were omitted in the new\n for (var key in oldProps) {\n if (!(key in newProps)) {\n return false;\n }\n }\n return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n if (val0 === val1 || comparator === true) {\n return true;\n }\n if (comparator) {\n return comparator(val0, val1);\n }\n return false;\n}\nfunction collectFromHash(hash, startIndex, endIndex, step) {\n if (startIndex === void 0) { startIndex = 0; }\n if (step === void 0) { step = 1; }\n var res = [];\n if (endIndex == null) {\n endIndex = Object.keys(hash).length;\n }\n for (var i = startIndex; i < endIndex; i += step) {\n var val = hash[i];\n if (val !== undefined) { // will disregard undefined for sparse arrays\n res.push(val);\n }\n }\n return res;\n}\n\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n for (var i = 0; i < recurringTypes.length; i += 1) {\n var parsed = recurringTypes[i].parse(refined, dateEnv);\n if (parsed) {\n var allDay = refined.allDay;\n if (allDay == null) {\n allDay = defaultAllDay;\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n return {\n allDay: allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i,\n };\n }\n }\n return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n var dateEnv = context.dateEnv, pluginHooks = context.pluginHooks, options = context.options;\n var defs = eventStore.defs, instances = eventStore.instances;\n // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n instances = filterHash(instances, function (instance) { return !defs[instance.defId].recurringDef; });\n for (var defId in defs) {\n var def = defs[defId];\n if (def.recurringDef) {\n var duration = def.recurringDef.duration;\n if (!duration) {\n duration = def.allDay ?\n options.defaultAllDayEventDuration :\n options.defaultTimedEventDuration;\n }\n var starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {\n var start = starts_1[_i];\n var instance = createEventInstance(defId, {\n start: start,\n end: dateEnv.add(start, duration),\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n return { defs: defs, instances: instances };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n var typeDef = recurringTypes[eventDef.recurringDef.typeId];\n var markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end,\n }, dateEnv);\n // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n return markers;\n}\n\nvar INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nvar PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n var _a;\n if (typeof input === 'string') {\n return parseString(input);\n }\n if (typeof input === 'object' && input) { // non-null object\n return parseObject(input);\n }\n if (typeof input === 'number') {\n return parseObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));\n }\n return null;\n}\nfunction parseString(s) {\n var m = PARSE_RE.exec(s);\n if (m) {\n var sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n (m[6] ? parseInt(m[6], 10) : 0) // ms\n ),\n };\n }\n return null;\n}\nfunction parseObject(obj) {\n var duration = {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: obj.days || obj.day || 0,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + // seconds\n (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n };\n var weeks = obj.weeks || obj.week;\n if (weeks) {\n duration.days += weeks * 7;\n duration.specifiedWeeks = true;\n }\n return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n return d0.years === d1.years &&\n d0.months === d1.months &&\n d0.days === d1.days &&\n d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n if (!dur.years && !dur.months && !dur.milliseconds) {\n return dur.days;\n }\n return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds,\n };\n}\nfunction subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds,\n };\n}\nfunction multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n,\n };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n return dur.years * (365 * 864e5) +\n dur.months * (30 * 864e5) +\n dur.days * 864e5 +\n dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n var res = null;\n for (var i = 0; i < INTERNAL_UNITS.length; i += 1) {\n var unit = INTERNAL_UNITS[i];\n if (denominator[unit]) {\n var localRes = numerator[unit] / denominator[unit];\n if (!isInt(localRes) || (res !== null && res !== localRes)) {\n return null;\n }\n res = localRes;\n }\n else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n return res;\n}\nfunction greatestDurationDenominator(dur) {\n var ms = dur.milliseconds;\n if (ms) {\n if (ms % 1000 !== 0) {\n return { unit: 'millisecond', value: ms };\n }\n if (ms % (1000 * 60) !== 0) {\n return { unit: 'second', value: ms / 1000 };\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return { unit: 'minute', value: ms / (1000 * 60) };\n }\n if (ms) {\n return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n }\n }\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return { unit: 'week', value: dur.days / 7 };\n }\n return { unit: 'day', value: dur.days };\n }\n if (dur.months) {\n return { unit: 'month', value: dur.months };\n }\n if (dur.years) {\n return { unit: 'year', value: dur.years };\n }\n return { unit: 'millisecond', value: 0 };\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) { stripZeroTime = false; }\n var s = marker.toISOString();\n s = s.replace('.000', '');\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n if (s.length > 10) { // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n }\n else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n }\n // otherwise, its UTC-0 and we want to keep the Z\n }\n return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n return marker.toISOString().replace(/T.*$/, '');\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' +\n padStart(marker.getUTCMinutes(), 2) + ':' +\n padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) { doIso = false; }\n var sign = minutes < 0 ? '-' : '+';\n var abs = Math.abs(minutes);\n var hours = Math.floor(abs / 60);\n var mins = Math.round(abs % 60);\n if (doIso) {\n return sign + padStart(hours, 2) + \":\" + padStart(mins, 2);\n }\n return \"GMT\" + sign + hours + (mins ? \":\" + padStart(mins, 2) : '');\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n var removeCnt = 0;\n var i = 0;\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt += 1;\n }\n else {\n i += 1;\n }\n }\n return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n if (a0 === a1) {\n return true;\n }\n var len = a0.length;\n var i;\n if (len !== a1.length) { // not array? or not same length?\n return false;\n }\n for (i = 0; i < len; i += 1) {\n if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n var currentArgs;\n var currentRes;\n return function () {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (!currentArgs) {\n currentRes = workerFunc.apply(this, newArgs);\n }\n else if (!isArraysEqual(currentArgs, newArgs)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.apply(this, newArgs);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArgs = newArgs;\n return currentRes;\n };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArg;\n var currentRes;\n return function (newArg) {\n if (!currentArg) {\n currentRes = workerFunc.call(_this, newArg);\n }\n else if (!isPropsEqual(currentArg, newArg)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.call(_this, newArg);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArg = newArg;\n return currentRes;\n };\n}\nfunction memoizeArraylike(// used at all?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgSets = [];\n var currentResults = [];\n return function (newArgSets) {\n var currentLen = currentArgSets.length;\n var newLen = newArgSets.length;\n var i = 0;\n for (; i < currentLen; i += 1) {\n if (!newArgSets[i]) { // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n }\n else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n var res = workerFunc.apply(_this, newArgSets[i]);\n if (!resEquality || !resEquality(res, currentResults[i])) {\n currentResults[i] = res;\n }\n }\n }\n for (; i < newLen; i += 1) {\n currentResults[i] = workerFunc.apply(_this, newArgSets[i]);\n }\n currentArgSets = newArgSets;\n currentResults.splice(newLen); // remove excess\n return currentResults;\n };\n}\nfunction memoizeHashlike(workerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgHash = {};\n var currentResHash = {};\n return function (newArgHash) {\n var newResHash = {};\n for (var key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(_this, newArgHash[key]);\n }\n else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n if (teardownFunc) {\n teardownFunc(currentResHash[key]);\n }\n var res = workerFunc.apply(_this, newArgHash[key]);\n newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n ? currentResHash[key]\n : res;\n }\n else {\n newResHash[key] = currentResHash[key];\n }\n }\n currentArgHash = newArgHash;\n currentResHash = newResHash;\n return newResHash;\n };\n}\n\nvar EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0,\n};\nvar STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1,\n};\nvar MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nvar COMMA_RE = /,/g; // we need re for globalness\nvar MULTI_SPACE_RE = /\\s+/g;\nvar LTR_RE = /\\u200e/g; // control character\nvar UTC_RE = /UTC|GMT/;\nvar NativeFormatter = /** @class */ (function () {\n function NativeFormatter(formatSettings) {\n var standardDateProps = {};\n var extendedSettings = {};\n var severity = 0;\n for (var name_1 in formatSettings) {\n if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name_1] = formatSettings[name_1];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);\n }\n else {\n standardDateProps[name_1] = formatSettings[name_1];\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);\n }\n }\n }\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n NativeFormatter.prototype.format = function (date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n };\n NativeFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings;\n var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n if (!diffSeverity) {\n return this.format(start, context);\n }\n var biggestUnitForPartial = diffSeverity;\n if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n var full0 = this.format(start, context);\n var full1 = this.format(end, context);\n if (full0 === full1) {\n return full0;\n }\n var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n var partial0 = partialFormattingFunc(start);\n var partial1 = partialFormattingFunc(end);\n var insertion = findCommonInsertion(full0, partial0, full1, partial1);\n var separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n return full0 + separator + full1;\n };\n NativeFormatter.prototype.getLargestUnit = function () {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n case 4:\n return 'month';\n case 3:\n return 'week';\n case 2:\n return 'day';\n default:\n return 'time'; // really?\n }\n };\n return NativeFormatter;\n}());\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n var standardDatePropCnt = Object.keys(standardDateProps).length;\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return function (date) { return (formatTimeZoneOffset(date.timeZoneOffset)); };\n }\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) { return (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week)); };\n }\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = __assign({}, standardDateProps); // copy\n extendedSettings = __assign({}, extendedSettings); // copy\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n var zeroFormat; // needed?\n if (extendedSettings.omitZeroMinute) {\n var zeroProps = __assign({}, standardDateProps);\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n return function (date) {\n var marker = date.marker;\n var format;\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n }\n else {\n format = normalFormat;\n }\n var s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n }\n // only support short timezone names\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n }\n // if requesting to display seconds, MUST display minutes\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n 'UTC' : // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n }\n // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n }\n else if (extendedSettings.meridiem === 'narrow') { // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase(); });\n }\n else if (extendedSettings.meridiem === 'short') { // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase() + \"m\"; });\n }\n else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) { return m0.toLocaleLowerCase(); });\n }\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n var replaced = false;\n s = s.replace(UTC_RE, function () {\n replaced = true;\n return tzoStr;\n });\n // IE11 doesn't include UTC/GMT in the original string, so append to end\n if (!replaced) {\n s += \" \" + tzoStr;\n }\n return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n var parts = [];\n if (display === 'long') {\n parts.push(weekTextLong);\n }\n else if (display === 'short' || display === 'narrow') {\n parts.push(weekText);\n }\n if (display === 'long' || display === 'short') {\n parts.push(' ');\n }\n parts.push(locale.simpleNumberFormat.format(num));\n if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n parts.reverse();\n }\n return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n var partialOptions = {};\n for (var name_2 in options) {\n if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {\n partialOptions[name_2] = options[name_2];\n }\n }\n return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n var i0 = 0;\n while (i0 < full0.length) {\n var found0 = full0.indexOf(partial0, i0);\n if (found0 === -1) {\n break;\n }\n var before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n var after0 = full0.substr(i0);\n var i1 = 0;\n while (i1 < full1.length) {\n var found1 = full1.indexOf(partial1, i1);\n if (found1 === -1) {\n break;\n }\n var before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n var after1 = full1.substr(i1);\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0,\n };\n }\n }\n }\n return null;\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n var a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6],\n };\n}\n\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n var startInfo = expandZonedMarker(start, context.calendarSystem);\n var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nvar CmdFormatter = /** @class */ (function () {\n function CmdFormatter(cmdStr) {\n this.cmdStr = cmdStr;\n }\n CmdFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n CmdFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return CmdFormatter;\n}());\n\nvar FuncFormatter = /** @class */ (function () {\n function FuncFormatter(func) {\n this.func = func;\n }\n FuncFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n FuncFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return FuncFormatter;\n}());\n\nfunction createFormatter(input) {\n if (typeof input === 'object' && input) { // non-null object\n return new NativeFormatter(input);\n }\n if (typeof input === 'string') {\n return new CmdFormatter(input);\n }\n if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n return null;\n}\n\n// base options\n// ------------\nvar BASE_OPTION_REFINERS = {\n navLinkDayClick: identity,\n navLinkWeekClick: identity,\n duration: createDuration,\n bootstrapFontAwesome: identity,\n buttonIcons: identity,\n customButtons: identity,\n defaultAllDayEventDuration: createDuration,\n defaultTimedEventDuration: createDuration,\n nextDayThreshold: createDuration,\n scrollTime: createDuration,\n scrollTimeReset: Boolean,\n slotMinTime: createDuration,\n slotMaxTime: createDuration,\n dayPopoverFormat: createFormatter,\n slotDuration: createDuration,\n snapDuration: createDuration,\n headerToolbar: identity,\n footerToolbar: identity,\n defaultRangeSeparator: String,\n titleRangeSeparator: String,\n forceEventDuration: Boolean,\n dayHeaders: Boolean,\n dayHeaderFormat: createFormatter,\n dayHeaderClassNames: identity,\n dayHeaderContent: identity,\n dayHeaderDidMount: identity,\n dayHeaderWillUnmount: identity,\n dayCellClassNames: identity,\n dayCellContent: identity,\n dayCellDidMount: identity,\n dayCellWillUnmount: identity,\n initialView: String,\n aspectRatio: Number,\n weekends: Boolean,\n weekNumberCalculation: identity,\n weekNumbers: Boolean,\n weekNumberClassNames: identity,\n weekNumberContent: identity,\n weekNumberDidMount: identity,\n weekNumberWillUnmount: identity,\n editable: Boolean,\n viewClassNames: identity,\n viewDidMount: identity,\n viewWillUnmount: identity,\n nowIndicator: Boolean,\n nowIndicatorClassNames: identity,\n nowIndicatorContent: identity,\n nowIndicatorDidMount: identity,\n nowIndicatorWillUnmount: identity,\n showNonCurrentDates: Boolean,\n lazyFetching: Boolean,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n timeZone: String,\n locales: identity,\n locale: identity,\n themeSystem: String,\n dragRevertDuration: Number,\n dragScroll: Boolean,\n allDayMaintainDuration: Boolean,\n unselectAuto: Boolean,\n dropAccept: identity,\n eventOrder: parseFieldSpecs,\n eventOrderStrict: Boolean,\n handleWindowResize: Boolean,\n windowResizeDelay: Number,\n longPressDelay: Number,\n eventDragMinDistance: Number,\n expandRows: Boolean,\n height: identity,\n contentHeight: identity,\n direction: String,\n weekNumberFormat: createFormatter,\n eventResizableFromStart: Boolean,\n displayEventTime: Boolean,\n displayEventEnd: Boolean,\n weekText: String,\n weekTextLong: String,\n progressiveEventRendering: Boolean,\n businessHours: identity,\n initialDate: identity,\n now: identity,\n eventDataTransform: identity,\n stickyHeaderDates: identity,\n stickyFooterScrollbar: identity,\n viewHeight: identity,\n defaultAllDay: Boolean,\n eventSourceFailure: identity,\n eventSourceSuccess: identity,\n eventDisplay: String,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventOverlap: identity,\n eventConstraint: identity,\n eventAllow: identity,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n eventClassNames: identity,\n eventContent: identity,\n eventDidMount: identity,\n eventWillUnmount: identity,\n selectConstraint: identity,\n selectOverlap: identity,\n selectAllow: identity,\n droppable: Boolean,\n unselectCancel: String,\n slotLabelFormat: identity,\n slotLaneClassNames: identity,\n slotLaneContent: identity,\n slotLaneDidMount: identity,\n slotLaneWillUnmount: identity,\n slotLabelClassNames: identity,\n slotLabelContent: identity,\n slotLabelDidMount: identity,\n slotLabelWillUnmount: identity,\n dayMaxEvents: identity,\n dayMaxEventRows: identity,\n dayMinWidth: Number,\n slotLabelInterval: createDuration,\n allDayText: String,\n allDayClassNames: identity,\n allDayContent: identity,\n allDayDidMount: identity,\n allDayWillUnmount: identity,\n slotMinWidth: Number,\n navLinks: Boolean,\n eventTimeFormat: createFormatter,\n rerenderDelay: Number,\n moreLinkText: identity,\n moreLinkHint: identity,\n selectMinDistance: Number,\n selectable: Boolean,\n selectLongPressDelay: Number,\n eventLongPressDelay: Number,\n selectMirror: Boolean,\n eventMaxStack: Number,\n eventMinHeight: Number,\n eventMinWidth: Number,\n eventShortHeight: Number,\n slotEventOverlap: Boolean,\n plugins: identity,\n firstDay: Number,\n dayCount: Number,\n dateAlignment: String,\n dateIncrement: createDuration,\n hiddenDays: identity,\n monthMode: Boolean,\n fixedWeekCount: Boolean,\n validRange: identity,\n visibleRange: identity,\n titleFormat: identity,\n eventInteractive: Boolean,\n // only used by list-view, but languages define the value, so we need it in base options\n noEventsText: String,\n viewHint: identity,\n navLinkHint: identity,\n closeHint: String,\n timeHint: String,\n eventHint: String,\n moreLinkClick: identity,\n moreLinkClassNames: identity,\n moreLinkContent: identity,\n moreLinkDidMount: identity,\n moreLinkWillUnmount: identity,\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nvar BASE_OPTION_DEFAULTS = {\n eventDisplay: 'auto',\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: ' \\u2013 ',\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: { day: 1 },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n dayHeaders: true,\n initialView: '',\n aspectRatio: 1.35,\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next',\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n nowIndicator: false,\n scrollTime: '06:00:00',\n scrollTimeReset: true,\n slotMinTime: '00:00:00',\n slotMaxTime: '24:00:00',\n showNonCurrentDates: true,\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n locales: [],\n locale: '',\n themeSystem: 'standard',\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n unselectAuto: true,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5,\n expandRows: false,\n navLinks: false,\n selectable: false,\n eventMinHeight: 15,\n eventMinWidth: 30,\n eventShortHeight: 30,\n};\n// calendar listeners\n// ------------------\nvar CALENDAR_LISTENER_REFINERS = {\n datesSet: identity,\n eventsSet: identity,\n eventAdd: identity,\n eventChange: identity,\n eventRemove: identity,\n windowResize: identity,\n eventClick: identity,\n eventMouseEnter: identity,\n eventMouseLeave: identity,\n select: identity,\n unselect: identity,\n loading: identity,\n // internal\n _unmount: identity,\n _beforeprint: identity,\n _afterprint: identity,\n _noEventDrop: identity,\n _noEventResize: identity,\n _resize: identity,\n _scrollRequest: identity,\n};\n// calendar-specific options\n// -------------------------\nvar CALENDAR_OPTION_REFINERS = {\n buttonText: identity,\n buttonHints: identity,\n views: identity,\n plugins: identity,\n initialEvents: identity,\n events: identity,\n eventSources: identity,\n};\nvar COMPLEX_OPTION_COMPARATORS = {\n headerToolbar: isMaybeObjectsEqual,\n footerToolbar: isMaybeObjectsEqual,\n buttonText: isMaybeObjectsEqual,\n buttonHints: isMaybeObjectsEqual,\n buttonIcons: isMaybeObjectsEqual,\n dateIncrement: isMaybeObjectsEqual,\n};\nfunction isMaybeObjectsEqual(a, b) {\n if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects\n return isPropsEqual(a, b);\n }\n return a === b;\n}\n// view-specific options\n// ---------------------\nvar VIEW_OPTION_REFINERS = {\n type: String,\n component: identity,\n buttonText: String,\n buttonTextKey: String,\n dateProfileGeneratorClass: identity,\n usesMinMaxTime: Boolean,\n classNames: identity,\n content: identity,\n didMount: identity,\n willUnmount: identity,\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n var refined = {};\n var extra = {};\n for (var propName in refiners) {\n if (propName in input) {\n refined[propName] = refiners[propName](input[propName]);\n }\n }\n for (var propName in input) {\n if (!(propName in refiners)) {\n extra[propName] = input[propName];\n }\n }\n return { refined: refined, extra: extra };\n}\nfunction identity(raw) {\n return raw;\n}\n\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange) {\n var eventStore = createEmptyEventStore();\n var eventRefiners = buildEventRefiners(context);\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners);\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n return eventStore;\n}\nfunction eventTupleToStore(tuple, eventStore) {\n if (eventStore === void 0) { eventStore = createEmptyEventStore(); }\n eventStore.defs[tuple.def.defId] = tuple.def;\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n var instance = eventStore.instances[instanceId];\n if (instance) {\n var def_1 = eventStore.defs[instance.defId];\n // get events/instances with same group\n var newStore = filterEventStoreDefs(eventStore, function (lookDef) { return isEventDefsGrouped(def_1, lookDef); });\n // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n newStore.defs[def_1.defId] = def_1;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n return { defs: {}, instances: {} };\n}\nfunction mergeEventStores(store0, store1) {\n return {\n defs: __assign(__assign({}, store0.defs), store1.defs),\n instances: __assign(__assign({}, store0.instances), store1.instances),\n };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n var defs = filterHash(eventStore.defs, filterFunc);\n var instances = filterHash(eventStore.instances, function (instance) { return (defs[instance.defId] // still exists?\n ); });\n return { defs: defs, instances: instances };\n}\nfunction excludeSubEventStore(master, sub) {\n var defs = master.defs, instances = master.instances;\n var filteredDefs = {};\n var filteredInstances = {};\n for (var defId in defs) {\n if (!sub.defs[defId]) { // not explicitly excluded\n filteredDefs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n if (!sub.instances[instanceId] && // not explicitly excluded\n filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n ) {\n filteredInstances[instanceId] = instances[instanceId];\n }\n }\n return {\n defs: filteredDefs,\n instances: filteredInstances,\n };\n}\n\nfunction normalizeConstraint(input, context) {\n if (Array.isArray(input)) {\n return parseEvents(input, null, context, true); // allowOpenRange=true\n }\n if (typeof input === 'object' && input) { // non-null object\n return parseEvents([input], null, context, true); // allowOpenRange=true\n }\n if (input != null) {\n return String(input);\n }\n return null;\n}\n\nfunction parseClassNames(raw) {\n if (Array.isArray(raw)) {\n return raw;\n }\n if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n }\n return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nvar EVENT_UI_REFINERS = {\n display: String,\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: identity,\n overlap: identity,\n allow: identity,\n className: parseClassNames,\n classNames: parseClassNames,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String,\n};\nvar EMPTY_EVENT_UI = {\n display: null,\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n};\nfunction createEventUi(refined, context) {\n var constraint = normalizeConstraint(refined.constraint, context);\n return {\n display: refined.display || null,\n startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: refined.overlap != null ? refined.overlap : null,\n allows: refined.allow != null ? [refined.allow] : [],\n backgroundColor: refined.backgroundColor || refined.color || '',\n borderColor: refined.borderColor || refined.color || '',\n textColor: refined.textColor || '',\n classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n return {\n display: item1.display != null ? item1.display : item0.display,\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames),\n };\n}\n\nvar EVENT_NON_DATE_REFINERS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n interactive: Boolean,\n};\nvar EVENT_DATE_REFINERS = {\n start: identity,\n end: identity,\n date: identity,\n allDay: Boolean,\n};\nvar EVENT_REFINERS = __assign(__assign(__assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\n var _a = refineEventDef(raw, context, refiners), refined = _a.refined, extra = _a.extra;\n var defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n var recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n if (recurringRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration,\n };\n return { def: def, instance: null };\n }\n var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n if (singleRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context);\n var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n return { def: def, instance: instance };\n }\n return null;\n}\nfunction refineEventDef(raw, context, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\n return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context) {\n var def = {\n title: refined.title || '',\n groupId: refined.groupId || '',\n publicId: refined.id || '',\n url: refined.url || '',\n recurringDef: null,\n defId: guid(),\n sourceId: sourceId,\n allDay: allDay,\n hasEnd: hasEnd,\n interactive: refined.interactive,\n ui: createEventUi(refined, context),\n extendedProps: __assign(__assign({}, (refined.extendedProps || {})), extra),\n };\n for (var _i = 0, _a = context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++) {\n var memberAdder = _a[_i];\n __assign(def, memberAdder(refined));\n }\n // help out EventApi from having user modify props\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n var allDay = refined.allDay;\n var startMeta;\n var startMarker = null;\n var hasEnd = false;\n var endMeta;\n var endMarker = null;\n var startInput = refined.start != null ? refined.start : refined.date;\n startMeta = context.dateEnv.createMarkerMeta(startInput);\n if (startMeta) {\n startMarker = startMeta.marker;\n }\n else if (!allowOpenRange) {\n return null;\n }\n if (refined.end != null) {\n endMeta = context.dateEnv.createMarkerMeta(refined.end);\n }\n if (allDay == null) {\n if (defaultAllDay != null) {\n allDay = defaultAllDay;\n }\n else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n if (endMeta) {\n endMarker = endMeta.marker;\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n if (endMarker) {\n hasEnd = true;\n }\n else if (!allowOpenRange) {\n hasEnd = context.options.forceEventDuration || false;\n endMarker = context.dateEnv.add(startMarker, allDay ?\n context.options.defaultAllDayEventDuration :\n context.options.defaultTimedEventDuration);\n }\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: { start: startMarker, end: endMarker },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null,\n };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n var res = null;\n if (eventSource) {\n res = eventSource.defaultAllDay;\n }\n if (res == null) {\n res = context.options.defaultAllDay;\n }\n return res;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n var start = startOfDay(timedRange.start);\n var end = addDays(start, dayCnt);\n return { start: start, end: end };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange, nextDayThreshold) {\n if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); }\n var startDay = null;\n var endDay = null;\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n return { start: startDay, end: endDay };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n var visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n }\n if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n }\n return diffDayAndTime(date0, date1); // returns a duration\n}\n\nfunction parseRange(input, dateEnv) {\n var start = null;\n var end = null;\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n if (!start && !end) {\n return null;\n }\n if (start && end && end < start) {\n return null;\n }\n return { start: start, end: end };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n var invertedRanges = [];\n var start = constraintRange.start; // the end of the previous range. the start of the new range\n var i;\n var dateRange;\n // ranges need to be in order. required for our date-walking algorithm\n ranges.sort(compareRanges);\n for (i = 0; i < ranges.length; i += 1) {\n dateRange = ranges[i];\n // add the span of time before the event (if there is any)\n if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: dateRange.start });\n }\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n }\n // add the span of time after the last event (if there is any)\n if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: constraintRange.end });\n }\n return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n var start = range0.start, end = range0.end;\n var newRange = null;\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n }\n else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n }\n else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n if (start === null || end === null || start < end) {\n newRange = { start: start, end: end };\n }\n return newRange;\n}\nfunction rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n}\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) &&\n (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n return date;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n var inverseBgByGroupId = {};\n var inverseBgByDefId = {};\n var defByGroupId = {};\n var bgRanges = [];\n var fgRanges = [];\n var eventUis = compileEventUis(eventStore.defs, eventUiBases);\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n var ui = eventUis[def.defId];\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n }\n else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = eventStore.defs[instance.defId];\n var ui = eventUis[def.defId];\n var origRange = instance.range;\n var normalRange = (!def.allDay && nextDayThreshold) ?\n computeVisibleDayRange(origRange, nextDayThreshold) :\n origRange;\n var slicedRange = intersectRanges(normalRange, framingRange);\n if (slicedRange) {\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n }\n else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n }\n else if (ui.display !== 'none') {\n (ui.display === 'background' ? bgRanges : fgRanges).push({\n def: def,\n ui: ui,\n instance: instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n });\n }\n }\n }\n for (var groupId in inverseBgByGroupId) { // BY GROUP\n var ranges = inverseBgByGroupId[groupId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {\n var invertedRange = invertedRanges_1[_i];\n var def = defByGroupId[groupId];\n var ui = eventUis[def.defId];\n bgRanges.push({\n def: def,\n ui: ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n });\n }\n }\n for (var defId in inverseBgByDefId) {\n var ranges = inverseBgByDefId[defId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {\n var invertedRange = invertedRanges_2[_a];\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n });\n }\n }\n return { bg: bgRanges, fg: fgRanges };\n}\nfunction hasBgRendering(def) {\n return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n return el.fcSeg ||\n el.parentNode.fcSeg || // for the harness\n null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) { return compileEventUi(eventDef, eventUiBases); });\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n var uis = [];\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n var objs = segs.map(buildSegCompareObj);\n objs.sort(function (obj0, obj1) { return compareByFieldSpecs(obj0, obj1, eventOrderSpecs); });\n return objs.map(function (c) { return c._seg; });\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n var eventRange = seg.eventRange;\n var eventDef = eventRange.def;\n var range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n var end = range.end ? range.end.valueOf() : 0; // \"\n return __assign(__assign(__assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start: start,\n end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });\n}\nfunction computeSegDraggable(seg, context) {\n var pluginHooks = context.pluginHooks;\n var transformers = pluginHooks.isDraggableTransformers;\n var _a = seg.eventRange, def = _a.def, ui = _a.ui;\n var val = ui.startEditable;\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n val = transformer(val, def, ui, context);\n }\n return val;\n}\nfunction computeSegStartResizable(seg, context) {\n return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n var dateEnv = context.dateEnv, options = context.options;\n var displayEventTime = options.displayEventTime, displayEventEnd = options.displayEventEnd;\n var eventDef = seg.eventRange.def;\n var eventInstance = seg.eventRange.instance;\n if (displayEventTime == null) {\n displayEventTime = defaultDisplayEventTime !== false;\n }\n if (displayEventEnd == null) {\n displayEventEnd = defaultDisplayEventEnd !== false;\n }\n var wholeEventStart = eventInstance.range.start;\n var wholeEventEnd = eventInstance.range.end;\n var segStart = startOverride || seg.start || seg.eventRange.range.start;\n var segEnd = endOverride || seg.end || seg.eventRange.range.end;\n var isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n var isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n segStart = isStartDay ? wholeEventStart : segStart;\n segEnd = isEndDay ? wholeEventEnd : segEnd;\n if (displayEventEnd && eventDef.hasEnd) {\n return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n });\n }\n return dateEnv.format(segStart, timeFormat, {\n forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n });\n }\n return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n var segRange = seg.eventRange.range;\n return {\n isPast: segRange.end < (nowDate || todayRange.start),\n isFuture: segRange.start >= (nowDate || todayRange.end),\n isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n };\n}\nfunction getEventClassNames(props) {\n var classNames = ['fc-event'];\n if (props.isMirror) {\n classNames.push('fc-event-mirror');\n }\n if (props.isDraggable) {\n classNames.push('fc-event-draggable');\n }\n if (props.isStartResizable || props.isEndResizable) {\n classNames.push('fc-event-resizable');\n }\n if (props.isDragging) {\n classNames.push('fc-event-dragging');\n }\n if (props.isResizing) {\n classNames.push('fc-event-resizing');\n }\n if (props.isSelected) {\n classNames.push('fc-event-selected');\n }\n if (props.isStart) {\n classNames.push('fc-event-start');\n }\n if (props.isEnd) {\n classNames.push('fc-event-end');\n }\n if (props.isPast) {\n classNames.push('fc-event-past');\n }\n if (props.isToday) {\n classNames.push('fc-event-today');\n }\n if (props.isFuture) {\n classNames.push('fc-event-future');\n }\n return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n return eventRange.instance\n ? eventRange.instance.instanceId\n : eventRange.def.defId + \":\" + eventRange.range.start.toISOString();\n // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n var _a = seg.eventRange, def = _a.def, instance = _a.instance;\n var url = def.url;\n if (url) {\n return { href: url };\n }\n var emitter = context.emitter, options = context.options;\n var eventInteractive = options.eventInteractive;\n if (eventInteractive == null) {\n eventInteractive = def.interactive;\n if (eventInteractive == null) {\n eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n }\n }\n // mock what happens in EventClicking\n if (eventInteractive) {\n // only attach keyboard-related handlers because click handler is already done in EventClicking\n return createAriaKeyboardAttrs(function (ev) {\n emitter.trigger('eventClick', {\n el: ev.target,\n event: new EventApi(context, def, instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n });\n }\n return {};\n}\n\nvar STANDARD_PROPS = {\n start: identity,\n end: identity,\n allDay: Boolean,\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n var span = parseOpenDateSpan(raw, dateEnv);\n var range = span.range;\n if (!range.start) {\n return null;\n }\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n }\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n var _a = refineProps(raw, STANDARD_PROPS), standardProps = _a.refined, extra = _a.extra;\n var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n var allDay = standardProps.allDay;\n if (allDay == null) {\n allDay = (startMeta && startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n return __assign({ range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null,\n }, allDay: allDay }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) &&\n span0.allDay === span1.allDay &&\n isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n for (var propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n }\n // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n for (var propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n return __assign(__assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), { allDay: span.allDay });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n return __assign(__assign({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n return {\n start: dateEnv.toDate(range.start),\n end: dateEnv.toDate(range.end),\n startStr: dateEnv.formatIso(range.start, { omitTime: omitTime }),\n endStr: dateEnv.formatIso(range.end, { omitTime: omitTime }),\n };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n var res = refineEventDef({ editable: false }, context);\n var def = parseEventDef(res.refined, res.extra, '', // sourceId\n dateSpan.allDay, true, // hasEnd\n context);\n return {\n def: def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true,\n };\n}\n\nfunction triggerDateSelect(selection, pev, context) {\n context.emitter.trigger('select', __assign(__assign({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view }));\n}\nfunction triggerDateUnselect(pev, context) {\n context.emitter.trigger('unselect', {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view,\n });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n var props = {};\n for (var _i = 0, _a = context.pluginHooks.dateSpanTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(props, transform(dateSpan, context));\n }\n __assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n var dateEnv = context.dateEnv, options = context.options;\n var end = marker;\n if (allDay) {\n end = startOfDay(end);\n end = dateEnv.add(end, options.defaultAllDayEventDuration);\n }\n else {\n end = dateEnv.add(end, options.defaultTimedEventDuration);\n }\n return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n var dest = createEmptyEventStore();\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = dest.defs[instance.defId]; // important to grab the newly modified def\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n }\n return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n var standardProps = mutation.standardProps || {};\n // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n if (standardProps.hasEnd == null &&\n eventConfig.durationEditable &&\n (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n var copy = __assign(__assign(__assign({}, eventDef), standardProps), { ui: __assign(__assign({}, eventDef.ui), standardProps.ui) });\n if (mutation.extendedProps) {\n copy.extendedProps = __assign(__assign({}, copy.extendedProps), mutation.extendedProps);\n }\n for (var _i = 0, _a = context.pluginHooks.eventDefMutationAppliers; _i < _a.length; _i++) {\n var applier = _a[_i];\n applier(copy, mutation, context);\n }\n if (!copy.hasEnd && context.options.forceEventDuration) {\n copy.hasEnd = true;\n }\n return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n var dateEnv = context.dateEnv;\n var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n var copy = __assign({}, eventInstance);\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta),\n };\n }\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end,\n };\n }\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta),\n };\n }\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n };\n }\n // in case event was all-day but the supplied deltas were not\n // better util for this?\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end),\n };\n }\n // handle invalid durations\n if (copy.range.end < copy.range.start) {\n copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n }\n return copy;\n}\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar ViewApi = /** @class */ (function () {\n function ViewApi(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n Object.defineProperty(ViewApi.prototype, \"calendar\", {\n get: function () {\n return this.getCurrentData().calendarApi;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"title\", {\n get: function () {\n return this.getCurrentData().viewTitle;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n },\n enumerable: false,\n configurable: true\n });\n ViewApi.prototype.getOption = function (name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n };\n return ViewApi;\n}());\n\nvar EVENT_SOURCE_REFINERS = {\n id: String,\n defaultAllDay: Boolean,\n url: String,\n format: String,\n events: identity,\n eventDataTransform: identity,\n // for any network-related sources\n success: identity,\n failure: identity,\n};\nfunction parseEventSource(raw, context, refiners) {\n if (refiners === void 0) { refiners = buildEventSourceRefiners(context); }\n var rawObj;\n if (typeof raw === 'string') {\n rawObj = { url: raw };\n }\n else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = { events: raw };\n }\n else if (typeof raw === 'object' && raw) { // not null\n rawObj = raw;\n }\n if (rawObj) {\n var _a = refineProps(rawObj, refiners), refined = _a.refined, extra = _a.extra;\n var metaRes = buildEventSourceMeta(refined, context);\n if (metaRes) {\n return {\n _raw: raw,\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n defaultAllDay: refined.defaultAllDay,\n eventDataTransform: refined.eventDataTransform,\n success: refined.success,\n failure: refined.failure,\n publicId: refined.id || '',\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n ui: createEventUi(refined, context),\n extendedProps: extra,\n };\n }\n }\n return null;\n}\nfunction buildEventSourceRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n for (var i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n if (meta) {\n return { sourceDefId: i, meta: meta };\n }\n }\n return null;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker;\n default:\n return currentDate;\n }\n}\nfunction getInitialDate(options, dateEnv) {\n var initialDateInput = options.initialDate;\n // compute the initial ambig-timezone date\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput);\n }\n return getNow(options.now, dateEnv); // getNow already returns unzoned\n}\nfunction getNow(nowInput, dateEnv) {\n if (typeof nowInput === 'function') {\n nowInput = nowInput();\n }\n if (nowInput == null) {\n return dateEnv.createNowMarker();\n }\n return dateEnv.createMarker(nowInput);\n}\n\nvar CalendarApi = /** @class */ (function () {\n function CalendarApi() {\n }\n CalendarApi.prototype.getCurrentData = function () {\n return this.currentDataManager.getCurrentData();\n };\n CalendarApi.prototype.dispatch = function (action) {\n return this.currentDataManager.dispatch(action);\n };\n Object.defineProperty(CalendarApi.prototype, \"view\", {\n get: function () { return this.getCurrentData().viewApi; } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n CalendarApi.prototype.batchRendering = function (callback) {\n callback();\n };\n CalendarApi.prototype.updateSize = function () {\n this.trigger('_resize', true);\n };\n // Options\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.setOption = function (name, val) {\n this.dispatch({\n type: 'SET_OPTION',\n optionName: name,\n rawOptionValue: val,\n });\n };\n CalendarApi.prototype.getOption = function (name) {\n return this.currentDataManager.currentCalendarOptionsInput[name];\n };\n CalendarApi.prototype.getAvailableLocaleCodes = function () {\n return Object.keys(this.getCurrentData().availableRawLocales);\n };\n // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.on = function (handlerName, handler) {\n var currentDataManager = this.currentDataManager;\n if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n currentDataManager.emitter.on(handlerName, handler);\n }\n else {\n console.warn(\"Unknown listener name '\" + handlerName + \"'\");\n }\n };\n CalendarApi.prototype.off = function (handlerName, handler) {\n this.currentDataManager.emitter.off(handlerName, handler);\n };\n // not meant for public use\n CalendarApi.prototype.trigger = function (handlerName) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n (_a = this.currentDataManager.emitter).trigger.apply(_a, __spreadArray([handlerName], args));\n };\n // View\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.changeView = function (viewType, dateOrRange) {\n var _this = this;\n this.batchRendering(function () {\n _this.unselect();\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) { // a range\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n });\n _this.dispatch({\n type: 'SET_OPTION',\n optionName: 'visibleRange',\n rawOptionValue: dateOrRange,\n });\n }\n else {\n var dateEnv = _this.getCurrentData().dateEnv;\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n dateMarker: dateEnv.createMarker(dateOrRange),\n });\n }\n }\n else {\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n });\n }\n });\n };\n // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n CalendarApi.prototype.zoomTo = function (dateMarker, viewType) {\n var state = this.getCurrentData();\n var spec;\n viewType = viewType || 'day'; // day is default zoom\n spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n this.unselect();\n if (spec) {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: spec.type,\n dateMarker: dateMarker,\n });\n }\n else {\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: dateMarker,\n });\n }\n };\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n CalendarApi.prototype.getUnitViewSpec = function (unit) {\n var _a = this.getCurrentData(), viewSpecs = _a.viewSpecs, toolbarConfig = _a.toolbarConfig;\n var viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n var i;\n var spec;\n for (var viewType in viewSpecs) {\n viewTypes.push(viewType);\n }\n for (i = 0; i < viewTypes.length; i += 1) {\n spec = viewSpecs[viewTypes[i]];\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n return null;\n };\n // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.prev = function () {\n this.unselect();\n this.dispatch({ type: 'PREV' });\n };\n CalendarApi.prototype.next = function () {\n this.unselect();\n this.dispatch({ type: 'NEXT' });\n };\n CalendarApi.prototype.prevYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n });\n };\n CalendarApi.prototype.nextYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n });\n };\n CalendarApi.prototype.today = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: getNow(state.calendarOptions.now, state.dateEnv),\n });\n };\n CalendarApi.prototype.gotoDate = function (zonedDateInput) {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.createMarker(zonedDateInput),\n });\n };\n CalendarApi.prototype.incrementDate = function (deltaInput) {\n var state = this.getCurrentData();\n var delta = createDuration(deltaInput);\n if (delta) { // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.add(state.currentDate, delta),\n });\n }\n };\n // for external API\n CalendarApi.prototype.getDate = function () {\n var state = this.getCurrentData();\n return state.dateEnv.toDate(state.currentDate);\n };\n // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.formatDate = function (d, formatter) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n };\n // `settings` is for formatter AND isEndExclusive\n CalendarApi.prototype.formatRange = function (d0, d1, settings) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n };\n CalendarApi.prototype.formatIso = function (d, omitTime) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime });\n };\n // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n CalendarApi.prototype.select = function (dateOrObj, endDate) {\n var selectionInput;\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: null,\n };\n }\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: endDate,\n };\n }\n var state = this.getCurrentData();\n var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }));\n if (selection) { // throw parse error otherwise?\n this.dispatch({ type: 'SELECT_DATES', selection: selection });\n triggerDateSelect(selection, null, state);\n }\n };\n // public method\n CalendarApi.prototype.unselect = function (pev) {\n var state = this.getCurrentData();\n if (state.dateSelection) {\n this.dispatch({ type: 'UNSELECT_DATES' });\n triggerDateUnselect(pev, state);\n }\n };\n // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.addEvent = function (eventInput, sourceInput) {\n if (eventInput instanceof EventApi) {\n var def = eventInput._def;\n var instance = eventInput._instance;\n var currentData = this.getCurrentData();\n // not already present? don't want to add an old snapshot\n if (!currentData.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({ def: def, instance: instance }), // TODO: better util for two args?\n });\n this.triggerEventAdd(eventInput);\n }\n return eventInput;\n }\n var state = this.getCurrentData();\n var eventSource;\n if (sourceInput instanceof EventSourceApi) {\n eventSource = sourceInput.internalEventSource;\n }\n else if (typeof sourceInput === 'boolean') {\n if (sourceInput) { // true. part of the first event source\n eventSource = hashValuesToArray(state.eventSources)[0];\n }\n }\n else if (sourceInput != null) { // an ID. accepts a number too\n var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n if (!sourceApi) {\n console.warn(\"Could not find an event source with ID \\\"\" + sourceInput + \"\\\"\"); // TODO: test\n return null;\n }\n eventSource = sourceApi.internalEventSource;\n }\n var tuple = parseEvent(eventInput, eventSource, state, false);\n if (tuple) {\n var newEventApi = new EventApi(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple),\n });\n this.triggerEventAdd(newEventApi);\n return newEventApi;\n }\n return null;\n };\n CalendarApi.prototype.triggerEventAdd = function (eventApi) {\n var _this = this;\n var emitter = this.getCurrentData().emitter;\n emitter.trigger('eventAdd', {\n event: eventApi,\n relatedEvents: [],\n revert: function () {\n _this.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: eventApiToStore(eventApi),\n });\n },\n });\n };\n // TODO: optimize\n CalendarApi.prototype.getEventById = function (id) {\n var state = this.getCurrentData();\n var _a = state.eventStore, defs = _a.defs, instances = _a.instances;\n id = String(id);\n for (var defId in defs) {\n var def = defs[defId];\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(state, def, null);\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n if (instance.defId === def.defId) {\n return new EventApi(state, def, instance);\n }\n }\n }\n }\n return null;\n };\n CalendarApi.prototype.getEvents = function () {\n var currentData = this.getCurrentData();\n return buildEventApis(currentData.eventStore, currentData);\n };\n CalendarApi.prototype.removeAllEvents = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENTS' });\n };\n // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.getEventSources = function () {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n var sourceApis = [];\n for (var internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(state, sourceHash[internalId]));\n }\n return sourceApis;\n };\n CalendarApi.prototype.getEventSourceById = function (id) {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n id = String(id);\n for (var sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(state, sourceHash[sourceId]);\n }\n }\n return null;\n };\n CalendarApi.prototype.addEventSource = function (sourceInput) {\n var state = this.getCurrentData();\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource],\n });\n }\n return sourceInput;\n }\n var eventSource = parseEventSource(sourceInput, state);\n if (eventSource) { // TODO: error otherwise?\n this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n return new EventSourceApi(state, eventSource);\n }\n return null;\n };\n CalendarApi.prototype.removeAllEventSources = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n };\n CalendarApi.prototype.refetchEvents = function () {\n this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true });\n };\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.scrollToTime = function (timeInput) {\n var time = createDuration(timeInput);\n if (time) {\n this.trigger('_scrollRequest', { time: time });\n }\n };\n return CalendarApi;\n}());\n\nvar EventApi = /** @class */ (function () {\n // instance will be null if expressing a recurring event that has no current instances,\n // OR if trying to validate an incoming external event that has no dates assigned\n function EventApi(context, def, instance) {\n this._context = context;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n EventApi.prototype.setProp = function (name, val) {\n var _a, _b;\n if (name in EVENT_DATE_REFINERS) {\n console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n // TODO: make proper aliasing system?\n }\n else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: { publicId: val }, // hardcoded internal name\n });\n }\n else if (name in EVENT_NON_DATE_REFINERS) {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: (_a = {}, _a[name] = val, _a),\n });\n }\n else if (name in EVENT_UI_REFINERS) {\n var ui = EVENT_UI_REFINERS[name](val);\n if (name === 'color') {\n ui = { backgroundColor: val, borderColor: val };\n }\n else if (name === 'editable') {\n ui = { startEditable: val, durationEditable: val };\n }\n else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n this.mutate({\n standardProps: { ui: ui },\n });\n }\n else {\n console.warn(\"Could not set prop '\" + name + \"'. Use setExtendedProp instead.\");\n }\n };\n EventApi.prototype.setExtendedProp = function (name, val) {\n var _a;\n this.mutate({\n extendedProps: (_a = {}, _a[name] = val, _a),\n });\n };\n EventApi.prototype.setStart = function (startInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var start = dateEnv.createMarker(startInput);\n if (start && this._instance) { // TODO: warning if parsed bad\n var instanceRange = this._instance.range;\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n if (options.maintainDuration) {\n this.mutate({ datesDelta: startDelta });\n }\n else {\n this.mutate({ startDelta: startDelta });\n }\n }\n };\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var end;\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n if (this._instance) {\n if (end) {\n var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({ endDelta: endDelta });\n }\n else {\n this.mutate({ standardProps: { hasEnd: false } });\n }\n }\n };\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var standardProps = { allDay: options.allDay };\n var start = dateEnv.createMarker(startInput);\n var end;\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) { // TODO: warning if parsed bad\n return;\n }\n }\n if (this._instance) {\n var instanceRange = this._instance.range;\n // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n if (end) {\n var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n else {\n this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps });\n }\n }\n else { // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n }\n };\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ startDelta: delta });\n }\n };\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ endDelta: delta });\n }\n };\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ datesDelta: delta });\n }\n };\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) { options = {}; }\n var standardProps = { allDay: allDay };\n var maintainDuration = options.maintainDuration;\n if (maintainDuration == null) {\n maintainDuration = this._context.options.allDayMaintainDuration;\n }\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n this.mutate({ standardProps: standardProps });\n };\n EventApi.prototype.formatRange = function (formatInput) {\n var dateEnv = this._context.dateEnv;\n var instance = this._instance;\n var formatter = createFormatter(formatInput);\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo,\n });\n }\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo,\n });\n };\n EventApi.prototype.mutate = function (mutation) {\n var instance = this._instance;\n if (instance) {\n var def = this._def;\n var context_1 = this._context;\n var eventStore_1 = context_1.getCurrentData().eventStore;\n var relevantEvents = getRelevantEvents(eventStore_1, instance.instanceId);\n var eventConfigBase = {\n '': {\n display: '',\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n },\n };\n relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context_1);\n var oldEvent = new EventApi(context_1, def, instance); // snapshot\n this._def = relevantEvents.defs[def.defId];\n this._instance = relevantEvents.instances[instance.instanceId];\n context_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents,\n });\n context_1.emitter.trigger('eventChange', {\n oldEvent: oldEvent,\n event: this,\n relatedEvents: buildEventApis(relevantEvents, context_1, instance),\n revert: function () {\n context_1.dispatch({\n type: 'RESET_EVENTS',\n eventStore: eventStore_1,\n });\n },\n });\n }\n };\n EventApi.prototype.remove = function () {\n var context = this._context;\n var asStore = eventApiToStore(this);\n context.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: asStore,\n });\n context.emitter.trigger('eventRemove', {\n event: this,\n relatedEvents: [],\n revert: function () {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: asStore,\n });\n },\n });\n };\n Object.defineProperty(EventApi.prototype, \"source\", {\n get: function () {\n var sourceId = this._def.sourceId;\n if (sourceId) {\n return new EventSourceApi(this._context, this._context.getCurrentData().eventSources[sourceId]);\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"start\", {\n get: function () {\n return this._instance ?\n this._context.dateEnv.toDate(this._instance.range.start) :\n null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"end\", {\n get: function () {\n return (this._instance && this._def.hasEnd) ?\n this._context.dateEnv.toDate(this._instance.range.end) :\n null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startStr\", {\n get: function () {\n var instance = this._instance;\n if (instance) {\n return this._context.dateEnv.formatIso(instance.range.start, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedStartTzo,\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"endStr\", {\n get: function () {\n var instance = this._instance;\n if (instance && this._def.hasEnd) {\n return this._context.dateEnv.formatIso(instance.range.end, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedEndTzo,\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"id\", {\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get: function () { return this._def.publicId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function () { return this._def.groupId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function () { return this._def.allDay; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function () { return this._def.title; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function () { return this._def.url; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"display\", {\n get: function () { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier\n ,\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function () { return this._def.ui.startEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function () { return this._def.ui.durationEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function () { return this._def.ui.constraints[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function () { return this._def.ui.overlap; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function () { return this._def.ui.allows[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function () { return this._def.ui.backgroundColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function () { return this._def.ui.borderColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function () { return this._def.ui.textColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"classNames\", {\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get: function () { return this._def.ui.classNames; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function () { return this._def.extendedProps; },\n enumerable: false,\n configurable: true\n });\n EventApi.prototype.toPlainObject = function (settings) {\n if (settings === void 0) { settings = {}; }\n var def = this._def;\n var ui = def.ui;\n var _a = this, startStr = _a.startStr, endStr = _a.endStr;\n var res = {};\n if (def.title) {\n res.title = def.title;\n }\n if (startStr) {\n res.start = startStr;\n }\n if (endStr) {\n res.end = endStr;\n }\n if (def.publicId) {\n res.id = def.publicId;\n }\n if (def.groupId) {\n res.groupId = def.groupId;\n }\n if (def.url) {\n res.url = def.url;\n }\n if (ui.display && ui.display !== 'auto') {\n res.display = ui.display;\n }\n // TODO: what about recurring-event properties???\n // TODO: include startEditable/durationEditable/constraint/overlap/allow\n if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.color = ui.backgroundColor;\n }\n else {\n if (ui.backgroundColor) {\n res.backgroundColor = ui.backgroundColor;\n }\n if (ui.borderColor) {\n res.borderColor = ui.borderColor;\n }\n }\n if (ui.textColor) {\n res.textColor = ui.textColor;\n }\n if (ui.classNames.length) {\n res.classNames = ui.classNames;\n }\n if (Object.keys(def.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n __assign(res, def.extendedProps);\n }\n else {\n res.extendedProps = def.extendedProps;\n }\n }\n return res;\n };\n EventApi.prototype.toJSON = function () {\n return this.toPlainObject();\n };\n return EventApi;\n}());\nfunction eventApiToStore(eventApi) {\n var _a, _b;\n var def = eventApi._def;\n var instance = eventApi._instance;\n return {\n defs: (_a = {}, _a[def.defId] = def, _a),\n instances: instance\n ? (_b = {}, _b[instance.instanceId] = instance, _b) : {},\n };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var eventApis = [];\n var excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n for (var id in instances) {\n var instance = instances[id];\n var def = defs[instance.defId];\n if (instance.instanceId !== excludeInstanceId) {\n eventApis.push(new EventApi(context, def, instance));\n }\n }\n return eventApis;\n}\n\nvar calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n}\nvar GregorianCalendarSystem = /** @class */ (function () {\n function GregorianCalendarSystem() {\n }\n GregorianCalendarSystem.prototype.getMarkerYear = function (d) {\n return d.getUTCFullYear();\n };\n GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {\n return d.getUTCMonth();\n };\n GregorianCalendarSystem.prototype.getMarkerDay = function (d) {\n return d.getUTCDate();\n };\n GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {\n return arrayToUtcDate(arr);\n };\n GregorianCalendarSystem.prototype.markerToArray = function (marker) {\n return dateToUtcArray(marker);\n };\n return GregorianCalendarSystem;\n}());\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\n\nvar ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n var m = ISO_RE.exec(str);\n if (m) {\n var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(\"0.\" + m[12]) * 1000 : 0));\n if (isValidDate(marker)) {\n var timeZoneOffset = null;\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +\n Number(m[18] || 0));\n }\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset,\n };\n }\n }\n return null;\n}\n\nvar DateEnv = /** @class */ (function () {\n function DateEnv(settings) {\n var timeZone = this.timeZone = settings.timeZone;\n var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n this.cmdFormatter = settings.cmdFormatter;\n this.defaultSeparator = settings.defaultSeparator;\n }\n // Creating / Parsing\n DateEnv.prototype.createMarker = function (input) {\n var meta = this.createMarkerMeta(input);\n if (meta === null) {\n return null;\n }\n return meta.marker;\n };\n DateEnv.prototype.createNowMarker = function () {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n }\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()));\n };\n DateEnv.prototype.createMarkerMeta = function (input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n var marker = null;\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n }\n else if (input instanceof Date) {\n input = input.valueOf();\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n }\n else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n return { marker: marker, isTimeUnspecified: false, forcedTzo: null };\n };\n DateEnv.prototype.parse = function (s) {\n var parts = parse(s);\n if (parts === null) {\n return null;\n }\n var marker = parts.marker;\n var forcedTzo = null;\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n }\n else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo };\n };\n // Accessors\n DateEnv.prototype.getYear = function (marker) {\n return this.calendarSystem.getMarkerYear(marker);\n };\n DateEnv.prototype.getMonth = function (marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n };\n // Adding / Subtracting\n DateEnv.prototype.add = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.subtract = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addYears = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addMonths = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n // Diffing Whole Units\n DateEnv.prototype.diffWholeYears = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n return null;\n };\n DateEnv.prototype.diffWholeMonths = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n return null;\n };\n // Range / Duration\n DateEnv.prototype.greatestWholeUnit = function (m0, m1) {\n var n = this.diffWholeYears(m0, m1);\n if (n !== null) {\n return { unit: 'year', value: n };\n }\n n = this.diffWholeMonths(m0, m1);\n if (n !== null) {\n return { unit: 'month', value: n };\n }\n n = diffWholeWeeks(m0, m1);\n if (n !== null) {\n return { unit: 'week', value: n };\n }\n n = diffWholeDays(m0, m1);\n if (n !== null) {\n return { unit: 'day', value: n };\n }\n n = diffHours(m0, m1);\n if (isInt(n)) {\n return { unit: 'hour', value: n };\n }\n n = diffMinutes(m0, m1);\n if (isInt(n)) {\n return { unit: 'minute', value: n };\n }\n n = diffSeconds(m0, m1);\n if (isInt(n)) {\n return { unit: 'second', value: n };\n }\n return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\n };\n DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {\n // TODO: can use greatestWholeUnit\n var diff;\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n };\n // Start-Of\n // these DON'T return zoned-dates. only UTC start-of dates\n DateEnv.prototype.startOf = function (m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n }\n if (unit === 'month') {\n return this.startOfMonth(m);\n }\n if (unit === 'week') {\n return this.startOfWeek(m);\n }\n if (unit === 'day') {\n return startOfDay(m);\n }\n if (unit === 'hour') {\n return startOfHour(m);\n }\n if (unit === 'minute') {\n return startOfMinute(m);\n }\n if (unit === 'second') {\n return startOfSecond(m);\n }\n return null;\n };\n DateEnv.prototype.startOfYear = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n ]);\n };\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n ]);\n };\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n ]);\n };\n // Week Number\n DateEnv.prototype.computeWeekNumber = function (marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n }\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n };\n // TODO: choke on timeZoneName: long\n DateEnv.prototype.format = function (marker, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ?\n dateOptions.forcedTzo :\n this.offsetForMarker(marker),\n }, this);\n };\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ?\n dateOptions.forcedStartTzo :\n this.offsetForMarker(start),\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ?\n dateOptions.forcedEndTzo :\n this.offsetForMarker(end),\n }, this, dateOptions.defaultSeparator);\n };\n /*\n DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n might as well use buildIsoString or some other util directly\n */\n DateEnv.prototype.formatIso = function (marker, extraOptions) {\n if (extraOptions === void 0) { extraOptions = {}; }\n var timeZoneOffset = null;\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n }\n else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n };\n // TimeZone\n DateEnv.prototype.timestampToMarker = function (ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n }\n if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n }\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n };\n DateEnv.prototype.offsetForMarker = function (m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n }\n if (this.timeZone === 'UTC') {\n return 0;\n }\n if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n return null;\n };\n // Conversion\n DateEnv.prototype.toDate = function (m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n }\n if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n }\n if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n }\n return new Date(m.valueOf() -\n this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n };\n return DateEnv;\n}());\n\nvar globalLocales = [];\n\nvar MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list',\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\n};\nvar RAW_EN_LOCALE = __assign(__assign({}, MINIMAL_RAW_EN_LOCALE), { \n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today: function (buttonText, unit) {\n return (unit === 'day')\n ? 'Today'\n : \"This \" + buttonText;\n },\n }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint: function (eventCnt) {\n return \"Show \" + eventCnt + \" more event\" + (eventCnt === 1 ? '' : 's');\n } });\nfunction organizeRawLocales(explicitRawLocales) {\n var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n var allRawLocales = globalLocales.concat(explicitRawLocales);\n var rawLocaleMap = {\n en: RAW_EN_LOCALE,\n };\n for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {\n var rawLocale = allRawLocales_1[_i];\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode: defaultCode,\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n var codes = [].concat(codeArg || []); // will convert to array\n var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (var i = 0; i < codes.length; i += 1) {\n var parts = codes[i].toLocaleLowerCase().split('-');\n for (var j = parts.length; j > 0; j -= 1) {\n var simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n var merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n var week = merged.week;\n delete merged.week;\n return {\n codeArg: codeArg,\n codes: codes,\n week: week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n };\n}\n\nfunction formatDate(dateInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = buildDateEnv$1(options);\n var formatter = createFormatter(options);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo,\n });\n}\nfunction formatRange(startInput, endInput, options) {\n var dateEnv = buildDateEnv$1(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n var formatter = createFormatter(options);\n var startMeta = dateEnv.createMarkerMeta(startInput);\n var endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv$1(settings) {\n var locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(__assign(__assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale: locale }));\n}\n\nvar DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n display: 'inverse-background',\n classNames: 'fc-non-business',\n groupId: '_businessHours', // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n var rawDefs;\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n }\n else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(function (rawDef) { return rawDef.daysOfWeek; });\n }\n else if (typeof input === 'object' && input) { // non-null object\n rawDefs = [input];\n }\n else { // is probably false\n rawDefs = [];\n }\n rawDefs = rawDefs.map(function (rawDef) { return (__assign(__assign({}, DEF_DEFAULTS), rawDef)); });\n return rawDefs;\n}\n\nfunction pointInsideRect(point, rect) {\n return point.left >= rect.left &&\n point.left < rect.right &&\n point.top >= rect.top &&\n point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n var res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom),\n };\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY,\n };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2,\n };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top,\n };\n}\n\nvar canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n if (canVGrowWithinCell == null) {\n canVGrowWithinCell = computeCanVGrowWithinCell();\n }\n return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n // for SSR, because this function is call immediately at top-level\n // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n if (typeof document === 'undefined') {\n return true;\n }\n var el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '0px';\n el.style.left = '0px';\n el.innerHTML = '
\n {{headerText}}\n \n {{dataAccessor(data, name)}}\n
';\n el.querySelector('table').style.height = '100px';\n el.querySelector('div').style.height = '100%';\n document.body.appendChild(el);\n var div = el.querySelector('div');\n var possible = div.offsetHeight > 0;\n document.body.removeChild(el);\n return possible;\n}\n\nvar EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nvar Splitter = /** @class */ (function () {\n function Splitter() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n Splitter.prototype.splitProps = function (props) {\n var _this = this;\n var keyInfos = this.getKeyInfo(props);\n var defKeys = this.getKeysForEventDefs(props.eventStore);\n var dateSelections = this.splitDateSelection(props.dateSelection);\n var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n var eventStores = this.splitEventStore(props.eventStore, defKeys);\n var eventDrags = this.splitEventDrag(props.eventDrag);\n var eventResizes = this.splitEventResize(props.eventResize);\n var splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, function (info, key) { return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); });\n for (var key in keyInfos) {\n var keyInfo = keyInfos[key];\n var eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n var buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore: eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null,\n };\n }\n return splitProps;\n };\n Splitter.prototype._splitDateSpan = function (dateSpan) {\n var dateSpans = {};\n if (dateSpan) {\n var keys = this.getKeysForDateSpan(dateSpan);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n dateSpans[key] = dateSpan;\n }\n }\n return dateSpans;\n };\n Splitter.prototype._getKeysForEventDefs = function (eventStore) {\n var _this = this;\n return mapHash(eventStore.defs, function (eventDef) { return _this.getKeysForEventDef(eventDef); });\n };\n Splitter.prototype._splitEventStore = function (eventStore, defKeys) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var splitStores = {};\n for (var defId in defs) {\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (splitStores[key]) { // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n return splitStores;\n };\n Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {\n var splitHashes = {};\n for (var defId in eventUiBases) {\n if (defId) { // not the '' key\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n return splitHashes;\n };\n Splitter.prototype._splitInteraction = function (interaction) {\n var splitStates = {};\n if (interaction) {\n var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n // can't rely on defKeys because event data is mutated\n var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n var populate = function (key) {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent,\n };\n }\n };\n for (var key in affectedStores_1) {\n populate(key);\n }\n for (var key in mutatedStores_1) {\n populate(key);\n }\n }\n return splitStates;\n };\n return Splitter;\n}());\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n var baseParts = [];\n if (allUi) {\n baseParts.push(allUi);\n }\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n var stuff = {\n '': combineEventUis(baseParts),\n };\n if (individualUi) {\n __assign(stuff, individualUi);\n }\n return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n return {\n dow: date.getUTCDay(),\n isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n };\n}\nfunction getDayClassNames(meta, theme) {\n var classNames = [\n 'fc-day',\n \"fc-day-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-day-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-day-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-day-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-day-future');\n }\n if (meta.isOther) {\n classNames.push('fc-day-other');\n }\n }\n return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n var classNames = [\n 'fc-slot',\n \"fc-slot-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-slot-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-slot-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-slot-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-slot-future');\n }\n }\n return classNames;\n}\n\nvar DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });\nvar WEEK_FORMAT = createFormatter({ week: 'long' });\nfunction buildNavLinkAttrs(context, dateMarker, viewType, isTabbable) {\n if (viewType === void 0) { viewType = 'day'; }\n if (isTabbable === void 0) { isTabbable = true; }\n var dateEnv = context.dateEnv, options = context.options, calendarApi = context.calendarApi;\n var dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n if (options.navLinks) {\n var zonedDate = dateEnv.toDate(dateMarker);\n var handleInteraction = function (ev) {\n var customAction = viewType === 'day' ? options.navLinkDayClick :\n viewType === 'week' ? options.navLinkWeekClick : null;\n if (typeof customAction === 'function') {\n customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n }\n else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n calendarApi.zoomTo(dateMarker, viewType);\n }\n };\n return __assign({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable\n ? createAriaClickAttrs(handleInteraction)\n : { onClick: handleInteraction }));\n }\n return { 'aria-label': dateStr };\n}\n\nvar _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n if (_isRtlScrollbarOnLeft === null) {\n _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n var outerEl = document.createElement('div');\n applyStyle(outerEl, {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl',\n });\n outerEl.innerHTML = '
';\n document.body.appendChild(outerEl);\n var innerEl = outerEl.firstChild;\n var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n}\n\nvar _scrollbarWidths;\nfunction getScrollbarWidths() {\n if (!_scrollbarWidths) {\n _scrollbarWidths = computeScrollbarWidths();\n }\n return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n var el = document.createElement('div');\n el.style.overflow = 'scroll';\n el.style.position = 'absolute';\n el.style.top = '-9999px';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n var res = computeScrollbarWidthsForEl(el);\n document.body.removeChild(el);\n return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n return {\n x: el.offsetHeight - el.clientHeight,\n y: el.offsetWidth - el.clientWidth,\n };\n}\n\nfunction computeEdges(el, getPadding) {\n if (getPadding === void 0) { getPadding = false; }\n var computedStyle = window.getComputedStyle(el);\n var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n var badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n var scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n var scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n var res = {\n borderLeft: borderLeft,\n borderRight: borderRight,\n borderTop: borderTop,\n borderBottom: borderBottom,\n scrollbarBottom: scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0,\n };\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n }\n else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n return res;\n}\nfunction computeInnerRect(el, goWithinPadding, doFromWindowViewport) {\n if (goWithinPadding === void 0) { goWithinPadding = false; }\n var outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n var edges = computeEdges(el, goWithinPadding);\n var res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n };\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n return res;\n}\nfunction computeRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset,\n };\n}\nfunction computeClippedClientRect(el) {\n var clippingParents = getClippingParents(el);\n var rect = el.getBoundingClientRect();\n for (var _i = 0, clippingParents_1 = clippingParents; _i < clippingParents_1.length; _i++) {\n var clippingParent = clippingParents_1[_i];\n var intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n if (intersection) {\n rect = intersection;\n }\n else {\n return null;\n }\n }\n return rect;\n}\nfunction computeHeightAndMargins(el) {\n return el.getBoundingClientRect().height + computeVMargins(el);\n}\nfunction computeVMargins(el) {\n var computed = window.getComputedStyle(el);\n return parseInt(computed.marginTop, 10) +\n parseInt(computed.marginBottom, 10);\n}\n// does not return window\nfunction getClippingParents(el) {\n var parents = [];\n while (el instanceof HTMLElement) { // will stop when gets to document or null\n var computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'fixed') {\n break;\n }\n if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n el = el.parentNode;\n }\n return parents;\n}\n\n// given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\nfunction unpromisify(func, success, failure) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n var isResolved = false;\n var wrappedSuccess = function () {\n if (!isResolved) {\n isResolved = true;\n success.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n };\n var wrappedFailure = function () {\n if (!isResolved) {\n isResolved = true;\n if (failure) {\n failure.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n }\n };\n var res = func(wrappedSuccess, wrappedFailure);\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n}\n\nvar Emitter = /** @class */ (function () {\n function Emitter() {\n this.handlers = {};\n this.thisContext = null;\n }\n Emitter.prototype.setThisContext = function (thisContext) {\n this.thisContext = thisContext;\n };\n Emitter.prototype.setOptions = function (options) {\n this.options = options;\n };\n Emitter.prototype.on = function (type, handler) {\n addToHash(this.handlers, type, handler);\n };\n Emitter.prototype.off = function (type, handler) {\n removeFromHash(this.handlers, type, handler);\n };\n Emitter.prototype.trigger = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var attachedHandlers = this.handlers[type] || [];\n var optionHandler = this.options && this.options[type];\n var handlers = [].concat(optionHandler || [], attachedHandlers);\n for (var _a = 0, handlers_1 = handlers; _a < handlers_1.length; _a++) {\n var handler = handlers_1[_a];\n handler.apply(this.thisContext, args);\n }\n };\n Emitter.prototype.hasHandlers = function (type) {\n return Boolean((this.handlers[type] && this.handlers[type].length) ||\n (this.options && this.options[type]));\n };\n return Emitter;\n}());\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = []))\n .push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(function (func) { return func !== handler; });\n }\n }\n else {\n delete hash[type]; // remove all handler funcs for this type\n }\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nvar PositionCache = /** @class */ (function () {\n function PositionCache(originEl, els, isHorizontal, isVertical) {\n this.els = els;\n var originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n if (isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n if (isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n }\n // Populates the left/right internal coordinate arrays\n PositionCache.prototype.buildElHorizontals = function (originClientLeft) {\n var lefts = [];\n var rights = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n this.lefts = lefts;\n this.rights = rights;\n };\n // Populates the top/bottom internal coordinate arrays\n PositionCache.prototype.buildElVerticals = function (originClientTop) {\n var tops = [];\n var bottoms = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n this.tops = tops;\n this.bottoms = bottoms;\n };\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.leftToIndex = function (leftPosition) {\n var _a = this, lefts = _a.lefts, rights = _a.rights;\n var len = lefts.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.topToIndex = function (topPosition) {\n var _a = this, tops = _a.tops, bottoms = _a.bottoms;\n var len = tops.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Gets the width of the element at the given index\n PositionCache.prototype.getWidth = function (leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n };\n // Gets the height of the element at the given index\n PositionCache.prototype.getHeight = function (topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n };\n return PositionCache;\n}());\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nvar ScrollController = /** @class */ (function () {\n function ScrollController() {\n }\n ScrollController.prototype.getMaxScrollTop = function () {\n return this.getScrollHeight() - this.getClientHeight();\n };\n ScrollController.prototype.getMaxScrollLeft = function () {\n return this.getScrollWidth() - this.getClientWidth();\n };\n ScrollController.prototype.canScrollVertically = function () {\n return this.getMaxScrollTop() > 0;\n };\n ScrollController.prototype.canScrollHorizontally = function () {\n return this.getMaxScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollUp = function () {\n return this.getScrollTop() > 0;\n };\n ScrollController.prototype.canScrollDown = function () {\n return this.getScrollTop() < this.getMaxScrollTop();\n };\n ScrollController.prototype.canScrollLeft = function () {\n return this.getScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollRight = function () {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n };\n return ScrollController;\n}());\nvar ElementScrollController = /** @class */ (function (_super) {\n __extends(ElementScrollController, _super);\n function ElementScrollController(el) {\n var _this = _super.call(this) || this;\n _this.el = el;\n return _this;\n }\n ElementScrollController.prototype.getScrollTop = function () {\n return this.el.scrollTop;\n };\n ElementScrollController.prototype.getScrollLeft = function () {\n return this.el.scrollLeft;\n };\n ElementScrollController.prototype.setScrollTop = function (top) {\n this.el.scrollTop = top;\n };\n ElementScrollController.prototype.setScrollLeft = function (left) {\n this.el.scrollLeft = left;\n };\n ElementScrollController.prototype.getScrollWidth = function () {\n return this.el.scrollWidth;\n };\n ElementScrollController.prototype.getScrollHeight = function () {\n return this.el.scrollHeight;\n };\n ElementScrollController.prototype.getClientHeight = function () {\n return this.el.clientHeight;\n };\n ElementScrollController.prototype.getClientWidth = function () {\n return this.el.clientWidth;\n };\n return ElementScrollController;\n}(ScrollController));\nvar WindowScrollController = /** @class */ (function (_super) {\n __extends(WindowScrollController, _super);\n function WindowScrollController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WindowScrollController.prototype.getScrollTop = function () {\n return window.pageYOffset;\n };\n WindowScrollController.prototype.getScrollLeft = function () {\n return window.pageXOffset;\n };\n WindowScrollController.prototype.setScrollTop = function (n) {\n window.scroll(window.pageXOffset, n);\n };\n WindowScrollController.prototype.setScrollLeft = function (n) {\n window.scroll(n, window.pageYOffset);\n };\n WindowScrollController.prototype.getScrollWidth = function () {\n return document.documentElement.scrollWidth;\n };\n WindowScrollController.prototype.getScrollHeight = function () {\n return document.documentElement.scrollHeight;\n };\n WindowScrollController.prototype.getClientHeight = function () {\n return document.documentElement.clientHeight;\n };\n WindowScrollController.prototype.getClientWidth = function () {\n return document.documentElement.clientWidth;\n };\n return WindowScrollController;\n}(ScrollController));\n\nvar Theme = /** @class */ (function () {\n function Theme(calendarOptions) {\n if (this.iconOverrideOption) {\n this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n }\n }\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\n var iconClassesCopy;\n var buttonName;\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n iconClassesCopy = __assign({}, this.iconClasses);\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n this.iconClasses = iconClassesCopy;\n }\n else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n };\n Theme.prototype.applyIconOverridePrefix = function (className) {\n var prefix = this.iconOverridePrefix;\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n className = prefix + className;\n }\n return className;\n };\n Theme.prototype.getClass = function (key) {\n return this.classes[key] || '';\n };\n Theme.prototype.getIconClass = function (buttonName, isRtl) {\n var className;\n if (isRtl && this.rtlIconClasses) {\n className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n }\n else {\n className = this.iconClasses[buttonName];\n }\n if (className) {\n return this.baseIconClass + \" \" + className;\n }\n return '';\n };\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\n var className;\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n if (className) {\n return this.baseIconClass + \" \" + this.applyIconOverridePrefix(className);\n }\n }\n return '';\n };\n return Theme;\n}());\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\nvar ScrollResponder = /** @class */ (function () {\n function ScrollResponder(execFunc, emitter, scrollTime, scrollTimeReset) {\n var _this = this;\n this.execFunc = execFunc;\n this.emitter = emitter;\n this.scrollTime = scrollTime;\n this.scrollTimeReset = scrollTimeReset;\n this.handleScrollRequest = function (request) {\n _this.queuedRequest = __assign({}, _this.queuedRequest || {}, request);\n _this.drain();\n };\n emitter.on('_scrollRequest', this.handleScrollRequest);\n this.fireInitialScroll();\n }\n ScrollResponder.prototype.detach = function () {\n this.emitter.off('_scrollRequest', this.handleScrollRequest);\n };\n ScrollResponder.prototype.update = function (isDatesNew) {\n if (isDatesNew && this.scrollTimeReset) {\n this.fireInitialScroll(); // will drain\n }\n else {\n this.drain();\n }\n };\n ScrollResponder.prototype.fireInitialScroll = function () {\n this.handleScrollRequest({\n time: this.scrollTime,\n });\n };\n ScrollResponder.prototype.drain = function () {\n if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n this.queuedRequest = null;\n }\n };\n return ScrollResponder;\n}());\n\nvar ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n return {\n dateEnv: dateEnv,\n options: viewOptions,\n pluginHooks: pluginHooks,\n emitter: emitter,\n dispatch: dispatch,\n getCurrentData: getCurrentData,\n calendarApi: calendarApi,\n viewSpec: viewSpec,\n viewApi: viewApi,\n dateProfileGenerator: dateProfileGenerator,\n theme: theme,\n isRtl: viewOptions.direction === 'rtl',\n addResizeHandler: function (handler) {\n emitter.on('_resize', handler);\n },\n removeResizeHandler: function (handler) {\n emitter.off('_resize', handler);\n },\n createScrollResponder: function (execFunc) {\n return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n },\n registerInteractiveComponent: registerInteractiveComponent,\n unregisterInteractiveComponent: unregisterInteractiveComponent,\n };\n}\n\n/* eslint max-classes-per-file: off */\nvar PureComponent = /** @class */ (function (_super) {\n __extends(PureComponent, _super);\n function PureComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PureComponent.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));\n }\n return !compareObjs(this.props, nextProps, this.propEquality) ||\n !compareObjs(this.state, nextState, this.stateEquality);\n };\n // HACK for freakin' React StrictMode\n PureComponent.prototype.safeSetState = function (newState) {\n if (!compareObjs(this.state, __assign(__assign({}, this.state), newState), this.stateEquality)) {\n this.setState(newState);\n }\n };\n PureComponent.addPropsEquality = addPropsEquality;\n PureComponent.addStateEquality = addStateEquality;\n PureComponent.contextType = ViewContextType;\n return PureComponent;\n}(Component));\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nvar BaseComponent = /** @class */ (function (_super) {\n __extends(BaseComponent, _super);\n function BaseComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BaseComponent.contextType = ViewContextType;\n return BaseComponent;\n}(PureComponent));\nfunction addPropsEquality(propEquality) {\n var hash = Object.create(this.prototype.propEquality);\n __assign(hash, propEquality);\n this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n var hash = Object.create(this.prototype.stateEquality);\n __assign(hash, stateEquality);\n this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n if (typeof ref === 'function') {\n ref(current);\n }\n else if (ref) {\n // see https://github.com/facebook/react/issues/13029\n ref.current = current;\n }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nvar DateComponent = /** @class */ (function (_super) {\n __extends(DateComponent, _super);\n function DateComponent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uid = guid();\n return _this;\n }\n // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.prepareHits = function () {\n };\n DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n };\n // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.isValidSegDownEl = function (el) {\n return !this.props.eventDrag && // HACK\n !this.props.eventResize && // HACK\n !elementClosest(el, '.fc-event-mirror');\n };\n DateComponent.prototype.isValidDateDownEl = function (el) {\n return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n !elementClosest(el, '.fc-popover'); // hack\n };\n return DateComponent;\n}(BaseComponent));\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n contentTypeHandlers: input.contentTypeHandlers || {},\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n var isAdded = {};\n var hooks = {\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n contentTypeHandlers: {},\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n };\n function addDefs(defs) {\n for (var _i = 0, defs_1 = defs; _i < defs_1.length; _i++) {\n var def = defs_1[_i];\n if (!isAdded[def.id]) {\n isAdded[def.id] = true;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n var currentOverrideDefs = [];\n var currentGlobalDefs = [];\n var currentHooks;\n return function (overrideDefs, globalDefs) {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: __assign(__assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: __assign(__assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: __assign(__assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: __assign(__assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: __assign(__assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n contentTypeHandlers: __assign(__assign({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers),\n listenerRefiners: __assign(__assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: __assign(__assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n };\n}\n\nvar StandardTheme = /** @class */ (function (_super) {\n __extends(StandardTheme, _super);\n function StandardTheme() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StandardTheme;\n}(Theme));\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n var hash = {};\n var viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n var defaultConfig = defaultConfigs[viewType];\n var overrideConfig = overrideConfigs[viewType];\n var queryProp = function (name) { return ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)); };\n var theComponent = queryProp('component');\n var superType = queryProp('superType');\n var superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: __assign(__assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n overrides: __assign(__assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n };\n}\n\n/* eslint max-classes-per-file: off */\n// NOTE: in JSX, you should always use this class with arg. otherwise, will default to any???\nvar RenderHook = /** @class */ (function (_super) {\n __extends(RenderHook, _super);\n function RenderHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rootElRef = createRef();\n _this.handleRootEl = function (el) {\n setRef(_this.rootElRef, el);\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n return _this;\n }\n RenderHook.prototype.render = function () {\n var _this = this;\n var props = this.props;\n var hookProps = props.hookProps;\n return (createElement(MountHook, { hookProps: hookProps, didMount: props.didMount, willUnmount: props.willUnmount, elRef: this.handleRootEl }, function (rootElRef) { return (createElement(ContentHook, { hookProps: hookProps, content: props.content, defaultContent: props.defaultContent, backupElRef: _this.rootElRef }, function (innerElRef, innerContent) { return props.children(rootElRef, normalizeClassNames(props.classNames, hookProps), innerElRef, innerContent); })); }));\n };\n return RenderHook;\n}(BaseComponent));\n// TODO: rename to be about function, not default. use in above type\n// for forcing rerender of components that use the ContentHook\nvar CustomContentRenderContext = createContext(0);\nfunction ContentHook(props) {\n return (createElement(CustomContentRenderContext.Consumer, null, function (renderId) { return (createElement(ContentHookInner, __assign({ renderId: renderId }, props))); }));\n}\nvar ContentHookInner = /** @class */ (function (_super) {\n __extends(ContentHookInner, _super);\n function ContentHookInner() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.innerElRef = createRef();\n return _this;\n }\n ContentHookInner.prototype.render = function () {\n return this.props.children(this.innerElRef, this.renderInnerContent());\n };\n ContentHookInner.prototype.componentDidMount = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentDidUpdate = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentWillUnmount = function () {\n if (this.customContentInfo && this.customContentInfo.destroy) {\n this.customContentInfo.destroy();\n }\n };\n ContentHookInner.prototype.renderInnerContent = function () {\n var customContentInfo = this.customContentInfo; // only populated if using non-[p]react node(s)\n var innerContent = this.getInnerContent();\n var meta = this.getContentMeta(innerContent);\n // initial run, or content-type changing? (from vue -> react for example)\n if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) {\n // clearing old value\n if (customContentInfo) {\n if (customContentInfo.destroy) {\n customContentInfo.destroy();\n }\n customContentInfo = this.customContentInfo = null;\n }\n // assigning new value\n if (meta.contentKey) {\n customContentInfo = this.customContentInfo = __assign({ contentKey: meta.contentKey, contentVal: innerContent[meta.contentKey] }, meta.buildLifecycleFuncs());\n }\n // updating\n }\n else if (customContentInfo) {\n customContentInfo.contentVal = innerContent[meta.contentKey];\n }\n return customContentInfo\n ? [] // signal that something was specified\n : innerContent; // assume a [p]react vdom node. use it\n };\n ContentHookInner.prototype.getInnerContent = function () {\n var props = this.props;\n var innerContent = normalizeContent(props.content, props.hookProps);\n if (innerContent === undefined) { // use the default\n innerContent = normalizeContent(props.defaultContent, props.hookProps);\n }\n return innerContent == null ? null : innerContent; // convert undefined to null (better for React)\n };\n ContentHookInner.prototype.getContentMeta = function (innerContent) {\n var contentTypeHandlers = this.context.pluginHooks.contentTypeHandlers;\n var contentKey = '';\n var buildLifecycleFuncs = null;\n if (innerContent) { // allowed to be null, for convenience to caller\n for (var searchKey in contentTypeHandlers) {\n if (innerContent[searchKey] !== undefined) {\n contentKey = searchKey;\n buildLifecycleFuncs = contentTypeHandlers[searchKey];\n break;\n }\n }\n }\n return { contentKey: contentKey, buildLifecycleFuncs: buildLifecycleFuncs };\n };\n ContentHookInner.prototype.updateCustomContent = function () {\n if (this.customContentInfo) { // for non-[p]react\n this.customContentInfo.render(this.innerElRef.current || this.props.backupElRef.current, // the element to render into\n this.customContentInfo.contentVal);\n }\n };\n return ContentHookInner;\n}(BaseComponent));\nvar MountHook = /** @class */ (function (_super) {\n __extends(MountHook, _super);\n function MountHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, rootEl);\n }\n };\n return _this;\n }\n MountHook.prototype.render = function () {\n return this.props.children(this.handleRootEl);\n };\n MountHook.prototype.componentDidMount = function () {\n var callback = this.props.didMount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n MountHook.prototype.componentWillUnmount = function () {\n var callback = this.props.willUnmount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n return MountHook;\n}(BaseComponent));\nfunction buildClassNameNormalizer() {\n var currentGenerator;\n var currentHookProps;\n var currentClassNames = [];\n return function (generator, hookProps) {\n if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) {\n currentGenerator = generator;\n currentHookProps = hookProps;\n currentClassNames = normalizeClassNames(generator, hookProps);\n }\n return currentClassNames;\n };\n}\nfunction normalizeClassNames(classNames, hookProps) {\n if (typeof classNames === 'function') {\n classNames = classNames(hookProps);\n }\n return parseClassNames(classNames);\n}\nfunction normalizeContent(input, hookProps) {\n if (typeof input === 'function') {\n return input(hookProps, createElement); // give the function the vdom-creation func\n }\n return input;\n}\n\nvar ViewRoot = /** @class */ (function (_super) {\n __extends(ViewRoot, _super);\n function ViewRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n ViewRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = { view: context.viewApi };\n var customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps);\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, [\"fc-\" + props.viewSpec.type + \"-view\", 'fc-view'].concat(customClassNames)); }));\n };\n return ViewRoot;\n}(BaseComponent));\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n var rawOptions = typeof input === 'function' ?\n { component: input } :\n input;\n var component = rawOptions.component;\n if (rawOptions.content) {\n component = createViewHookComponent(rawOptions);\n // TODO: remove content/classNames/didMount/etc from options?\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions: rawOptions,\n };\n}\nfunction createViewHookComponent(options) {\n return function (viewProps) { return (createElement(ViewContextType.Consumer, null, function (context) { return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (viewElRef, viewClassNames) {\n var hookProps = __assign(__assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.classNames, content: options.content, didMount: options.didMount, willUnmount: options.willUnmount, elRef: viewElRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"div\", { className: viewClassNames.concat(customClassNames).join(' '), ref: rootElRef }, innerContent)); }));\n })); })); };\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var defaultConfigs = parseViewConfigs(defaultInputs);\n var overrideConfigs = parseViewConfigs(optionOverrides.views);\n var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, function (viewDef) { return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults); });\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration;\n var duration = null;\n var durationUnit = '';\n var singleUnit = '';\n var singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) { // valid?\n var denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n var queryButtonText = function (optionsSubset) {\n var buttonTextMap = optionsSubset.buttonText || {};\n var buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n var queryButtonTitle = function (optionsSubset) {\n var buttonHints = optionsSubset.buttonHints || {};\n var buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration: duration,\n durationUnit: durationUnit,\n singleUnit: singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: __assign(__assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nvar durationInputMap = {};\nfunction createDurationCached(durationInput) {\n var json = JSON.stringify(durationInput);\n var res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\n\nvar DateProfileGenerator = /** @class */ (function () {\n function DateProfileGenerator(props) {\n this.props = props;\n this.nowDate = getNow(props.nowInput, props.dateEnv);\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1, forceToValid);\n };\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1, forceToValid);\n };\n // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {\n if (forceToValid === void 0) { forceToValid = true; }\n var props = this.props;\n var validRange;\n var currentInfo;\n var isRangeAllDay;\n var renderRange;\n var activeRange;\n var isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n if (!props.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n activeRange = this.adjustActiveRange(activeRange);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n isValid = rangesIntersect(currentInfo.range, validRange);\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange: validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay: isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange: activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange: renderRange,\n // Duration object that denotes the first visible time of any given day\n slotMinTime: props.slotMinTime,\n // Duration object that denotes the exclusive visible end time of any given day\n slotMaxTime: props.slotMaxTime,\n isValid: isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration),\n // pass a fallback (might be null) ^\n };\n };\n // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildValidRange = function () {\n var input = this.props.validRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(this.props.calendarApi, this.nowDate)\n : input;\n return this.refineRange(simpleInput) ||\n { start: null, end: null }; // completely open-ended\n };\n // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\n var props = this.props;\n var duration = null;\n var unit = null;\n var range = null;\n var dayCount;\n if (props.duration) {\n duration = props.duration;\n unit = props.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n else if ((dayCount = this.props.dayCount)) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n }\n else if ((range = this.buildCustomVisibleRange(date))) {\n unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n }\n else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n return { duration: duration, unit: unit, range: range };\n };\n DateProfileGenerator.prototype.getFallbackDuration = function () {\n return createDuration({ day: 1 });\n };\n // Returns a new activeRange to have time values (un-ambiguate)\n // slotMinTime or slotMaxTime causes the range to expand.\n DateProfileGenerator.prototype.adjustActiveRange = function (range) {\n var _a = this.props, dateEnv = _a.dateEnv, usesMinMaxTime = _a.usesMinMaxTime, slotMinTime = _a.slotMinTime, slotMaxTime = _a.slotMaxTime;\n var start = range.start, end = range.end;\n if (usesMinMaxTime) {\n // expand active range if slotMinTime is negative (why not when positive?)\n if (asRoughDays(slotMinTime) < 0) {\n start = startOfDay(start); // necessary?\n start = dateEnv.add(start, slotMinTime);\n }\n // expand active range if slotMaxTime is beyond one day (why not when negative?)\n if (asRoughDays(slotMaxTime) > 1) {\n end = startOfDay(end); // necessary?\n end = addDays(end, -1);\n end = dateEnv.add(end, slotMaxTime);\n }\n }\n return { start: start, end: end };\n };\n // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var start;\n var end;\n var res;\n // compute what the alignment should be\n if (!dateAlignment) {\n var dateIncrement = this.props.dateIncrement;\n if (dateIncrement) {\n // use the smaller of the two units\n if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n }\n else {\n dateAlignment = unit;\n }\n }\n else {\n dateAlignment = unit;\n }\n }\n // if the view displays a single day or smaller\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n function computeRes() {\n start = dateEnv.startOf(date, dateAlignment);\n end = dateEnv.add(start, duration);\n res = { start: start, end: end };\n }\n computeRes();\n // if range is completely enveloped by hidden days, go past the hidden days\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n return res;\n };\n // Builds the \"current\" range when a dayCount is specified.\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var runningCount = 0;\n var start = date;\n var end;\n if (dateAlignment) {\n start = dateEnv.startOf(start, dateAlignment);\n }\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n do {\n end = addDays(end, 1);\n if (!this.isHiddenDay(end)) {\n runningCount += 1;\n }\n } while (runningCount < dayCount);\n return { start: start, end: end };\n };\n // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\n var props = this.props;\n var input = props.visibleRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n : input;\n var range = this.refineRange(simpleInput);\n if (range && (range.start == null || range.end == null)) {\n return null;\n }\n return range;\n };\n // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n };\n // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\n var dateIncrement = this.props.dateIncrement;\n var customAlignment;\n if (dateIncrement) {\n return dateIncrement;\n }\n if ((customAlignment = this.props.dateAlignment)) {\n return createDuration(1, customAlignment);\n }\n if (fallback) {\n return fallback;\n }\n return createDuration({ days: 1 });\n };\n DateProfileGenerator.prototype.refineRange = function (rangeInput) {\n if (rangeInput) {\n var range = parseRange(rangeInput, this.props.dateEnv);\n if (range) {\n range = computeVisibleDayRange(range);\n }\n return range;\n }\n return null;\n };\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n DateProfileGenerator.prototype.initHiddenDays = function () {\n var hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n var dayCnt = 0;\n var i;\n if (this.props.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n for (i = 0; i < 7; i += 1) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt += 1;\n }\n }\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n this.isHiddenDayHash = isHiddenDayHash;\n };\n // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n DateProfileGenerator.prototype.trimHiddenDays = function (range) {\n var start = range.start, end = range.end;\n if (start) {\n start = this.skipHiddenDays(start);\n }\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n if (start == null || end == null || start < end) {\n return { start: start, end: end };\n }\n return null;\n };\n // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n DateProfileGenerator.prototype.isHiddenDay = function (day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n return this.isHiddenDayHash[day];\n };\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {\n if (inc === void 0) { inc = 1; }\n if (isExclusive === void 0) { isExclusive = false; }\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n return date;\n };\n return DateProfileGenerator;\n}());\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n var _a;\n switch (action.type) {\n case 'SET_OPTION':\n return __assign(__assign({}, dynamicOptionOverrides), (_a = {}, _a[action.optionName] = action.rawOptionValue, _a));\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n var dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (var sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n var hash = {};\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return __assign(__assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, function (eventSource) { return eventSource.sourceId !== sourceId; });\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { return isSourceDirty(eventSource, fetchRange, context); }), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n var nextSources = {};\n for (var sourceId in prevSources) {\n var source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n var options = context.options, calendarApi = context.calendarApi;\n var sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n var fetchId = guid();\n sourceDef.fetch({\n eventSource: eventSource,\n range: fetchRange,\n isRefetch: isRefetch,\n context: context,\n }, function (res) {\n var rawEvents = res.rawEvents;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n rawEvents: rawEvents,\n });\n }, function (error) {\n console.warn(error.message, error);\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n error: error,\n });\n });\n return __assign(__assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n var _a;\n var eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return __assign(__assign({}, sourceHash), (_a = {}, _a[sourceId] = __assign(__assign({}, eventSource), { isFetching: false, fetchRange: fetchRange }), _a));\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, function (eventSource) { return doesSourceNeedRange(eventSource, context); });\n}\nfunction parseInitialSources(rawOptions, context) {\n var refiners = buildEventSourceRefiners(context);\n var rawSources = [].concat(rawOptions.eventSources || []);\n var sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {\n var rawSource = rawSources_1[_i];\n var source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n switch (action.type) {\n case 'RECEIVE_EVENTS': // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n case 'ADD_EVENTS': // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null, context);\n case 'RESET_EVENTS':\n return action.eventStore;\n case 'MERGE_EVENTS': // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, context);\n }\n return eventStore;\n case 'REMOVE_EVENTS':\n return excludeSubEventStore(eventStore, action.eventStore);\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, function (eventDef) { return (!eventDef.sourceId // only keep events with no source id\n ); });\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n default:\n return eventStore;\n }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n var subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, context);\n }\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n return eventStore;\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n var calEachTransform = context.options.eventDataTransform;\n var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n var refinedEvents;\n if (!func) {\n refinedEvents = rawEvents;\n }\n else {\n refinedEvents = [];\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var refinedEvent = func(rawEvent);\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n }\n else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n }\n }\n return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, context);\n }\n return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n var defs = eventStore.defs;\n var instances = mapHash(eventStore.instances, function (instance) {\n var def = defs[instance.defId];\n if (def.allDay || def.recurringDef) {\n return instance; // isn't dependent on timezone\n }\n return __assign(__assign({}, instance), { range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n });\n return { defs: defs, instances: instances };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, function (eventDef) { return eventDef.sourceId !== sourceId; });\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, function (instance) { return !removals[instance.instanceId]; }),\n };\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n var newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n };\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n var newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n };\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n var footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return { header: header, footer: footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var sectionWidgets = {};\n var viewsWithButtons = [];\n var hasTitle = false;\n for (var sectionName in sectionStrHash) {\n var sectionStr = sectionStrHash[sectionName];\n var sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push.apply(viewsWithButtons, sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return { sectionWidgets: sectionWidgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n var isRtl = calendarOptions.direction === 'rtl';\n var calendarCustomButtons = calendarOptions.customButtons || {};\n var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n var calendarButtonText = calendarOptions.buttonText || {};\n var calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n var calendarButtonHints = calendarOptions.buttonHints || {};\n var sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n var viewsWithButtons = [];\n var hasTitle = false;\n var widgets = sectionSubstrs.map(function (buttonGroupStr) { return (buttonGroupStr.split(',').map(function (buttonName) {\n if (buttonName === 'title') {\n hasTitle = true;\n return { buttonName: buttonName };\n }\n var customButtonProps;\n var viewSpec;\n var buttonClick;\n var buttonIcon; // only one of these will be set\n var buttonText; // \"\n var buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = function (ev) {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName);\n buttonClick = function () {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault);\n var textFallback = viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n }\n else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = function () {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n var prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext], [\n calendarButtonText.year || 'year',\n 'year',\n ], calendarButtonText[buttonName]);\n }\n else {\n buttonHint = function (navUnit) { return formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName], [\n calendarButtonText[navUnit] || navUnit,\n navUnit,\n ], calendarButtonText[buttonName]); };\n }\n }\n return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText, buttonHint: buttonHint };\n })); });\n return { widgets: widgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n\nvar eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta: function (refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success) {\n success({\n rawEvents: arg.eventSource.meta,\n });\n },\n};\nvar arrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$2],\n});\n\nvar eventSourceDef$1 = {\n parseMeta: function (refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var dateEnv = arg.context.dateEnv;\n var func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents) {\n success({ rawEvents: rawEvents }); // needs an object response\n }, failure);\n },\n};\nvar funcEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$1],\n});\n\nfunction requestJson(method, url, params, successCallback, failureCallback) {\n method = method.toUpperCase();\n var body = null;\n if (method === 'GET') {\n url = injectQueryStringParams(url, params);\n }\n else {\n body = encodeParams(params);\n }\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n var parsed = false;\n var res = void 0;\n try {\n res = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (err) {\n // will handle parsed=false\n }\n if (parsed) {\n successCallback(res, xhr);\n }\n else {\n failureCallback('Failure parsing JSON', xhr);\n }\n }\n else {\n failureCallback('Request failed', xhr);\n }\n };\n xhr.onerror = function () {\n failureCallback('Request failed', xhr);\n };\n xhr.send(body);\n}\nfunction injectQueryStringParams(url, params) {\n return url +\n (url.indexOf('?') === -1 ? '?' : '&') +\n encodeParams(params);\n}\nfunction encodeParams(params) {\n var parts = [];\n for (var key in params) {\n parts.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]));\n }\n return parts.join('&');\n}\n\nvar JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n};\n\nvar eventSourceDef = {\n parseMeta: function (refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n };\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var meta = arg.eventSource.meta;\n var requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {\n success({ rawEvents: rawEvents, xhr: xhr });\n }, function (errorMessage, xhr) {\n failure({ message: errorMessage, xhr: xhr });\n });\n },\n};\nvar jsonFeedEventSourcePlugin = createPlugin({\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n var dateEnv = context.dateEnv, options = context.options;\n var startParam;\n var endParam;\n var timeZoneParam;\n var customRequestParams;\n var params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n __assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\n\nvar SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity,\n};\n\nvar recurring = {\n parse: function (refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n var recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n };\n var duration = void 0;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration: duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand: function (typeData, framingRange, dateEnv) {\n var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n return [];\n },\n};\nvar simpleRecurringEventsPlugin = createPlugin({\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n var dayMarker = startOfDay(framingRange.start);\n var endMarker = framingRange.end;\n var instanceStarts = [];\n while (dayMarker < endMarker) {\n var instanceStart \n // if everyday, or this particular day-of-week\n = void 0;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\n\nvar changeHandlerPlugin = createPlugin({\n optionChangeHandlers: {\n events: function (events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources,\n },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n var unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n var newInputs = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n var inputFound = false;\n for (var i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {\n var unfoundSource = unfoundSources_1[_a];\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n });\n }\n for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {\n var newInput = newInputs_1[_b];\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', __assign(__assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n var emitter = context.emitter;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nvar globalPlugins = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n isLoadingFuncs: [\n function (state) { return computeEventSourcesLoading(state.eventSources); },\n ],\n contentTypeHandlers: {\n html: buildHtmlRenderer,\n domNodes: buildDomNodeRenderer,\n },\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\nfunction buildHtmlRenderer() {\n var currentEl = null;\n var currentHtml = '';\n function render(el, html) {\n if (el !== currentEl || html !== currentHtml) {\n el.innerHTML = html;\n }\n currentEl = el;\n currentHtml = html;\n }\n function destroy() {\n currentEl.innerHTML = '';\n currentEl = null;\n currentHtml = '';\n }\n return { render: render, destroy: destroy };\n}\nfunction buildDomNodeRenderer() {\n var currentEl = null;\n var currentDomNodes = [];\n function render(el, domNodes) {\n var newDomNodes = Array.prototype.slice.call(domNodes);\n if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) {\n // append first, remove second (for scroll resetting)\n for (var _i = 0, newDomNodes_1 = newDomNodes; _i < newDomNodes_1.length; _i++) {\n var newNode = newDomNodes_1[_i];\n el.appendChild(newNode);\n }\n destroy();\n }\n currentEl = el;\n currentDomNodes = newDomNodes;\n }\n function destroy() {\n currentDomNodes.forEach(removeElement);\n currentDomNodes = [];\n currentEl = null;\n }\n return { render: render, destroy: destroy };\n}\n\nvar DelayedRunner = /** @class */ (function () {\n function DelayedRunner(drainedOption) {\n this.drainedOption = drainedOption;\n this.isRunning = false;\n this.isDirty = false;\n this.pauseDepths = {};\n this.timeoutId = 0;\n }\n DelayedRunner.prototype.request = function (delay) {\n this.isDirty = true;\n if (!this.isPaused()) {\n this.clearTimeout();\n if (delay == null) {\n this.tryDrain();\n }\n else {\n this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce\n this.tryDrain.bind(this), delay);\n }\n }\n };\n DelayedRunner.prototype.pause = function (scope) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n this.clearTimeout();\n };\n DelayedRunner.prototype.resume = function (scope, force) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n if (scope in pauseDepths) {\n if (force) {\n delete pauseDepths[scope];\n }\n else {\n pauseDepths[scope] -= 1;\n var depth = pauseDepths[scope];\n if (depth <= 0) {\n delete pauseDepths[scope];\n }\n }\n this.tryDrain();\n }\n };\n DelayedRunner.prototype.isPaused = function () {\n return Object.keys(this.pauseDepths).length;\n };\n DelayedRunner.prototype.tryDrain = function () {\n if (!this.isRunning && !this.isPaused()) {\n this.isRunning = true;\n while (this.isDirty) {\n this.isDirty = false;\n this.drained(); // might set isDirty to true again\n }\n this.isRunning = false;\n }\n };\n DelayedRunner.prototype.clear = function () {\n this.clearTimeout();\n this.isDirty = false;\n this.pauseDepths = {};\n };\n DelayedRunner.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = 0;\n }\n };\n DelayedRunner.prototype.drained = function () {\n if (this.drainedOption) {\n this.drainedOption();\n }\n };\n return DelayedRunner;\n}());\n\nvar TaskRunner = /** @class */ (function () {\n function TaskRunner(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n TaskRunner.prototype.request = function (task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n };\n TaskRunner.prototype.pause = function (scope) {\n this.delayedRunner.pause(scope);\n };\n TaskRunner.prototype.resume = function (scope, force) {\n this.delayedRunner.resume(scope, force);\n };\n TaskRunner.prototype.drain = function () {\n var queue = this.queue;\n while (queue.length) {\n var completedTasks = [];\n var task = void 0;\n while ((task = queue.shift())) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n };\n TaskRunner.prototype.runTask = function (task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n };\n TaskRunner.prototype.drained = function (completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n };\n return TaskRunner;\n}());\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n var range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n var currentRangeUnit = dateProfile.currentRangeUnit;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nvar CalendarDataManager = /** @class */ (function () {\n function CalendarDataManager(props) {\n var _this = this;\n this.computeOptionsData = memoize(this._computeOptionsData);\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.getCurrentData = function () { return _this.data; };\n this.dispatch = function (action) {\n _this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n var dynamicOptionOverrides = {};\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n var currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n var dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n };\n // needs to be after setThisContext\n for (var _i = 0, _a = optionsData.pluginHooks.contextInit; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(calendarContext);\n }\n // NOT DRY\n var eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n var initialState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources: eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n };\n var contextAndState = __assign(__assign({}, calendarContext), initialState);\n for (var _b = 0, _c = optionsData.pluginHooks.reducers; _b < _c.length; _b++) {\n var reducer = _c[_b];\n __assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n CalendarDataManager.prototype.resetOptions = function (optionOverrides, append) {\n var props = this.props;\n props.optionOverrides = append\n ? __assign(__assign({}, props.optionOverrides), optionOverrides) : optionOverrides;\n this.actionRunner.request({\n type: 'NOTHING',\n });\n };\n CalendarDataManager.prototype._handleAction = function (action) {\n var _a = this, props = _a.props, state = _a.state, emitter = _a.emitter;\n var dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = reduceViewType(state.currentViewType, action);\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: emitter,\n getCurrentData: this.getCurrentData,\n };\n var currentDate = state.currentDate, dateProfile = state.dateProfile;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n var eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n var isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n var renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore;\n var _b = this.buildViewUiProps(calendarContext), eventUiSingleBase = _b.eventUiSingleBase, selectionConfig = _b.selectionConfig; // will memoize obj\n var eventUiBySource = this.buildEventUiBySource(eventSources);\n var eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n var newState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n eventSources: eventSources,\n eventStore: eventStore,\n renderableEventStore: renderableEventStore,\n selectionConfig: selectionConfig,\n eventUiBases: eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n };\n var contextAndState = __assign(__assign({}, calendarContext), newState);\n for (var _i = 0, _c = optionsData.pluginHooks.reducers; _i < _c.length; _i++) {\n var reducer = _c[_i];\n __assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n var wasLoading = computeIsLoading(state, calendarContext);\n var isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n }\n else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n };\n CalendarDataManager.prototype.updateData = function () {\n var _a = this, props = _a.props, state = _a.state;\n var oldData = this.data;\n var optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n var currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n var data = this.data = __assign(__assign(__assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n var changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n var oldCalendarOptions = oldData && oldData.calendarOptions;\n var newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n }\n for (var optionName in changeHandlers) {\n if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n if (props.onData) {\n props.onData(data);\n }\n };\n CalendarDataManager.prototype._computeOptionsData = function (optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n var _a = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, pluginHooks = _a.pluginHooks, localeDefaults = _a.localeDefaults, availableLocaleData = _a.availableLocaleData, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n var viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults);\n var theme = this.buildTheme(refinedOptions, pluginHooks);\n var toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi);\n return {\n calendarOptions: refinedOptions,\n pluginHooks: pluginHooks,\n dateEnv: dateEnv,\n viewSpecs: viewSpecs,\n theme: theme,\n toolbarConfig: toolbarConfig,\n localeDefaults: localeDefaults,\n availableRawLocales: availableLocaleData.map,\n };\n };\n // always called from behind a memoizer\n CalendarDataManager.prototype.processRawCalendarOptions = function (optionOverrides, dynamicOptionOverrides) {\n var _a = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ]), locales = _a.locales, locale = _a.locale;\n var availableLocaleData = this.organizeRawLocales(locales);\n var availableRawLocales = availableLocaleData.map;\n var localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n var pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n var refiners = this.currentCalendarOptionsRefiners = __assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var extra = {};\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refined = {};\n var currentRaw = this.currentCalendarOptionsInput;\n var currentRefined = this.currentCalendarOptionsRefined;\n var anyChanges = false;\n for (var optionName in raw) {\n if (optionName !== 'plugins') { // because plugins is special-cased\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n }\n else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks: pluginHooks,\n availableLocaleData: availableLocaleData,\n localeDefaults: localeDefaults,\n extra: extra,\n };\n };\n CalendarDataManager.prototype._computeCurrentViewData = function (viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n var viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(\"viewType \\\"\" + viewType + \"\\\" is not available. Please make sure you've loaded all neccessary plugins\");\n }\n var _a = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n monthMode: refinedOptions.monthMode,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n });\n var viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return { viewSpec: viewSpec, options: refinedOptions, dateProfileGenerator: dateProfileGenerator, viewApi: viewApi };\n };\n CalendarDataManager.prototype.processRawViewOptions = function (viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refiners = __assign(__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var refined = {};\n var currentRaw = this.currentViewOptionsInput;\n var currentRefined = this.currentViewOptionsRefined;\n var anyChanges = false;\n var extra = {};\n for (var optionName in raw) {\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n }\n else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra: extra,\n };\n };\n return CalendarDataManager;\n}());\nfunction buildDateEnv(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n var locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone: timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale: locale,\n weekNumberCalculation: weekNumberCalculation,\n firstDay: firstDay,\n weekText: weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator: defaultSeparator,\n });\n}\nfunction buildTheme(options, pluginHooks) {\n var ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n var DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewApi(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, function (eventSource) { return eventSource.ui; });\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n var eventUiBases = { '': eventUiSingleBase };\n for (var defId in eventDefs) {\n var def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n var options = calendarContext.options;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n }, calendarContext),\n };\n}\nfunction computeIsLoading(state, context) {\n for (var _i = 0, _a = context.pluginHooks.isLoadingFuncs; _i < _a.length; _i++) {\n var isLoadingFunc = _a[_i];\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (var optionName in options) {\n console.warn(\"Unknown option '\" + optionName + \"'\" +\n (viewName ? \" for view '\" + viewName + \"'\" : ''));\n }\n}\n\n// TODO: move this to react plugin?\nvar CalendarDataProvider = /** @class */ (function (_super) {\n __extends(CalendarDataProvider, _super);\n function CalendarDataProvider(props) {\n var _this = _super.call(this, props) || this;\n _this.handleData = function (data) {\n if (!_this.dataManager) { // still within initial run, before assignment in constructor\n // eslint-disable-next-line react/no-direct-mutation-state\n _this.state = data; // can't use setState yet\n }\n else {\n _this.setState(data);\n }\n };\n _this.dataManager = new CalendarDataManager({\n optionOverrides: props.optionOverrides,\n calendarApi: props.calendarApi,\n onData: _this.handleData,\n });\n return _this;\n }\n CalendarDataProvider.prototype.render = function () {\n return this.props.children(this.state);\n };\n CalendarDataProvider.prototype.componentDidUpdate = function (prevProps) {\n var newOptionOverrides = this.props.optionOverrides;\n if (newOptionOverrides !== prevProps.optionOverrides) { // prevent recursive handleData\n this.dataManager.resetOptions(newOptionOverrides);\n }\n };\n return CalendarDataProvider;\n}(Component));\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nvar NamedTimeZoneImpl = /** @class */ (function () {\n function NamedTimeZoneImpl(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n return NamedTimeZoneImpl;\n}());\n\nvar SegHierarchy = /** @class */ (function () {\n function SegHierarchy() {\n // settings\n this.strictOrder = false;\n this.allowReslicing = false;\n this.maxCoord = -1; // -1 means no max\n this.maxStackCnt = -1; // -1 means no max\n this.levelCoords = []; // ordered\n this.entriesByLevel = []; // parallel with levelCoords\n this.stackCnts = {}; // TODO: use better technique!?\n }\n SegHierarchy.prototype.addSegs = function (inputs) {\n var hiddenEntries = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n this.insertEntry(input, hiddenEntries);\n }\n return hiddenEntries;\n };\n SegHierarchy.prototype.insertEntry = function (entry, hiddenEntries) {\n var insertion = this.findInsertion(entry);\n if (this.isInsertionValid(insertion, entry)) {\n this.insertEntryAt(entry, insertion);\n return 1;\n }\n return this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n };\n SegHierarchy.prototype.isInsertionValid = function (insertion, entry) {\n return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) &&\n (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n };\n // returns number of new entries inserted\n SegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) {\n if (this.allowReslicing && insertion.touchingEntry) {\n return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.splitEntry = function (entry, barrier, hiddenEntries) {\n var partCnt = 0;\n var splitHiddenEntries = [];\n var entrySpan = entry.span;\n var barrierSpan = barrier.span;\n if (entrySpan.start < barrierSpan.start) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: entrySpan.start, end: barrierSpan.start },\n }, splitHiddenEntries);\n }\n if (entrySpan.end > barrierSpan.end) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: barrierSpan.end, end: entrySpan.end },\n }, splitHiddenEntries);\n }\n if (partCnt) {\n hiddenEntries.push.apply(hiddenEntries, __spreadArray([{\n index: entry.index,\n thickness: entry.thickness,\n span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect\n }], splitHiddenEntries));\n return partCnt;\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.insertEntryAt = function (entry, insertion) {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n if (insertion.lateral === -1) {\n // create a new level\n insertAt(levelCoords, insertion.level, insertion.levelCoord);\n insertAt(entriesByLevel, insertion.level, [entry]);\n }\n else {\n // insert into existing level\n insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n }\n this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n };\n SegHierarchy.prototype.findInsertion = function (newEntry) {\n var _a = this, levelCoords = _a.levelCoords, entriesByLevel = _a.entriesByLevel, strictOrder = _a.strictOrder, stackCnts = _a.stackCnts;\n var levelCnt = levelCoords.length;\n var candidateCoord = 0;\n var touchingLevel = -1;\n var touchingLateral = -1;\n var touchingEntry = null;\n var stackCnt = 0;\n for (var trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n var trackingCoord = levelCoords[trackingLevel];\n // if the current level is past the placed entry, we have found a good empty space and can stop.\n // if strictOrder, keep finding more lateral intersections.\n if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) {\n break;\n }\n var trackingEntries = entriesByLevel[trackingLevel];\n var trackingEntry = void 0;\n var searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n var lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n while ( // loop through entries that horizontally intersect\n (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n ) {\n var trackingEntryBottom = trackingCoord + trackingEntry.thickness;\n // intersects into the top of the candidate?\n if (trackingEntryBottom > candidateCoord) {\n candidateCoord = trackingEntryBottom;\n touchingEntry = trackingEntry;\n touchingLevel = trackingLevel;\n touchingLateral = lateralIndex;\n }\n // butts up against top of candidate? (will happen if just intersected as well)\n if (trackingEntryBottom === candidateCoord) {\n // accumulate the highest possible stackCnt of the trackingEntries that butt up\n stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n }\n lateralIndex += 1;\n }\n }\n // the destination level will be after touchingEntry's level. find it\n var destLevel = 0;\n if (touchingEntry) {\n destLevel = touchingLevel + 1;\n while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n destLevel += 1;\n }\n }\n // if adding to an existing level, find where to insert\n var destLateral = -1;\n if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n }\n return {\n touchingLevel: touchingLevel,\n touchingLateral: touchingLateral,\n touchingEntry: touchingEntry,\n stackCnt: stackCnt,\n levelCoord: candidateCoord,\n level: destLevel,\n lateral: destLateral,\n };\n };\n // sorted by levelCoord (lowest to highest)\n SegHierarchy.prototype.toRects = function () {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n var levelCnt = entriesByLevel.length;\n var rects = [];\n for (var level = 0; level < levelCnt; level += 1) {\n var entries = entriesByLevel[level];\n var levelCoord = levelCoords[level];\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n rects.push(__assign(__assign({}, entry), { levelCoord: levelCoord }));\n }\n }\n return rects;\n };\n return SegHierarchy;\n}());\nfunction getEntrySpanEnd(entry) {\n return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n var merges = [];\n for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {\n var entry = entries_2[_i];\n var filteredMerges = [];\n var hungryMerge = {\n span: entry.span,\n entries: [entry],\n };\n for (var _a = 0, merges_1 = merges; _a < merges_1.length; _a++) {\n var merge = merges_1[_a];\n if (intersectSpans(merge.span, hungryMerge.span)) {\n hungryMerge = {\n entries: merge.entries.concat(hungryMerge.entries),\n span: joinSpans(merge.span, hungryMerge.span),\n };\n }\n else {\n filteredMerges.push(merge);\n }\n }\n filteredMerges.push(hungryMerge);\n merges = filteredMerges;\n }\n return merges;\n}\nfunction joinSpans(span0, span1) {\n return {\n start: Math.min(span0.start, span1.start),\n end: Math.max(span0.end, span1.end),\n };\n}\nfunction intersectSpans(span0, span1) {\n var start = Math.max(span0.start, span1.start);\n var end = Math.min(span0.end, span1.end);\n if (start < end) {\n return { start: start, end: end };\n }\n return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n var startIndex = 0;\n var endIndex = a.length; // exclusive\n if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n return [0, 0];\n }\n if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n return [endIndex, 0];\n }\n while (startIndex < endIndex) {\n var middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n var middleVal = getItemVal(a[middleIndex]);\n if (searchVal < middleVal) {\n endIndex = middleIndex;\n }\n else if (searchVal > middleVal) {\n startIndex = middleIndex + 1;\n }\n else { // equal!\n return [middleIndex, 1];\n }\n }\n return [startIndex, 0];\n}\n\nvar Interaction = /** @class */ (function () {\n function Interaction(settings) {\n this.component = settings.component;\n this.isHitComboAllowed = settings.isHitComboAllowed || null;\n }\n Interaction.prototype.destroy = function () {\n };\n return Interaction;\n}());\nfunction parseInteractionSettings(component, input) {\n return {\n component: component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n isHitComboAllowed: input.isHitComboAllowed || null,\n };\n}\nfunction interactionSettingsToStore(settings) {\n var _a;\n return _a = {},\n _a[settings.component.uid] = settings,\n _a;\n}\n// global state\nvar interactionSettingsStore = {};\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nvar ElementDragging = /** @class */ (function () {\n function ElementDragging(el, selector) {\n this.emitter = new Emitter();\n }\n ElementDragging.prototype.destroy = function () {\n };\n ElementDragging.prototype.setMirrorIsVisible = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n // optional\n };\n return ElementDragging;\n}());\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nvar config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nvar DRAG_META_REFINERS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String,\n};\nfunction parseDragMeta(raw) {\n var _a = refineProps(raw, DRAG_META_REFINERS), refined = _a.refined, extra = _a.extra;\n return {\n startTime: refined.startTime || null,\n duration: refined.duration || null,\n create: refined.create != null ? refined.create : true,\n sourceId: refined.sourceId,\n leftoverProps: extra,\n };\n}\n\nvar ToolbarSection = /** @class */ (function (_super) {\n __extends(ToolbarSection, _super);\n function ToolbarSection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ToolbarSection.prototype.render = function () {\n var _this = this;\n var children = this.props.widgetGroups.map(function (widgetGroup) { return _this.renderWidgetGroup(widgetGroup); });\n return createElement.apply(void 0, __spreadArray(['div', { className: 'fc-toolbar-chunk' }], children));\n };\n ToolbarSection.prototype.renderWidgetGroup = function (widgetGroup) {\n var props = this.props;\n var theme = this.context.theme;\n var children = [];\n var isOnlyButtons = true;\n for (var _i = 0, widgetGroup_1 = widgetGroup; _i < widgetGroup_1.length; _i++) {\n var widget = widgetGroup_1[_i];\n var buttonName = widget.buttonName, buttonClick = widget.buttonClick, buttonText = widget.buttonText, buttonIcon = widget.buttonIcon, buttonHint = widget.buttonHint;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n }\n else {\n var isPressed = buttonName === props.activeButton;\n var isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n var buttonClasses = [\"fc-\" + buttonName + \"-button\", theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon }) : '')));\n }\n }\n if (children.length > 1) {\n var groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n return createElement.apply(void 0, __spreadArray(['div', { className: groupClassName }], children));\n }\n return children[0];\n };\n return ToolbarSection;\n}(BaseComponent));\n\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Toolbar.prototype.render = function () {\n var _a = this.props, model = _a.model, extraClassName = _a.extraClassName;\n var forceLtr = false;\n var startContent;\n var endContent;\n var sectionWidgets = model.sectionWidgets;\n var centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n }\n else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n }\n else {\n endContent = sectionWidgets.end;\n }\n var classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ];\n return (createElement(\"div\", { className: classNames.join(' ') },\n this.renderSection('start', startContent || []),\n this.renderSection('center', centerContent || []),\n this.renderSection('end', endContent || [])));\n };\n Toolbar.prototype.renderSection = function (key, widgetGroups) {\n var props = this.props;\n return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n };\n return Toolbar;\n}(BaseComponent));\n\n// TODO: do function component?\nvar ViewContainer = /** @class */ (function (_super) {\n __extends(ViewContainer, _super);\n function ViewContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n availableWidth: null,\n };\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n _this.updateAvailableWidth();\n };\n _this.handleResize = function () {\n _this.updateAvailableWidth();\n };\n return _this;\n }\n ViewContainer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n var aspectRatio = props.aspectRatio;\n var classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ];\n var height = '';\n var paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n }\n else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = (1 / aspectRatio) * 100 + \"%\";\n }\n }\n else {\n height = props.height || '';\n }\n return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom } }, props.children));\n };\n ViewContainer.prototype.componentDidMount = function () {\n this.context.addResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.updateAvailableWidth = function () {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth });\n }\n };\n return ViewContainer;\n}(BaseComponent));\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nvar EventClicking = /** @class */ (function (_super) {\n __extends(EventClicking, _super);\n function EventClicking(settings) {\n var _this = _super.call(this, settings) || this;\n _this.handleSegClick = function (ev, segEl) {\n var component = _this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (seg && // might be the
surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n var hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n _this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n _this.handleSegClick);\n return _this;\n }\n return EventClicking;\n}(Interaction));\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nvar EventHovering = /** @class */ (function (_super) {\n __extends(EventHovering, _super);\n function EventHovering(settings) {\n var _this = _super.call(this, settings) || this;\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n _this.handleEventElRemove = function (el) {\n if (el === _this.currentSegEl) {\n _this.handleSegLeave(null, _this.currentSegEl);\n }\n };\n _this.handleSegEnter = function (ev, segEl) {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n _this.currentSegEl = segEl;\n _this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n _this.handleSegLeave = function (ev, segEl) {\n if (_this.currentSegEl) {\n _this.currentSegEl = null;\n _this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n _this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n _this.handleSegEnter, _this.handleSegLeave);\n return _this;\n }\n EventHovering.prototype.destroy = function () {\n this.removeHoverListeners();\n };\n EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {\n var component = this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n };\n return EventHovering;\n}(Interaction));\n\nvar CalendarContent = /** @class */ (function (_super) {\n __extends(CalendarContent, _super);\n function CalendarContent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildViewContext = memoize(buildViewContext);\n _this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n _this.buildToolbarProps = memoize(buildToolbarProps);\n _this.headerRef = createRef();\n _this.footerRef = createRef();\n _this.interactionsStore = {};\n // eslint-disable-next-line\n _this.state = {\n viewLabelId: getUniqueDomId(),\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n _this.registerInteractiveComponent = function (component, settingsInput) {\n var settings = parseInteractionSettings(component, settingsInput);\n var DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering,\n ];\n var interactionClasses = DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions);\n var interactions = interactionClasses.map(function (TheInteractionClass) { return new TheInteractionClass(settings); });\n _this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n _this.unregisterInteractiveComponent = function (component) {\n var listeners = _this.interactionsStore[component.uid];\n if (listeners) {\n for (var _i = 0, listeners_1 = listeners; _i < listeners_1.length; _i++) {\n var listener = listeners_1[_i];\n listener.destroy();\n }\n delete _this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n _this.resizeRunner = new DelayedRunner(function () {\n _this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n _this.props.emitter.trigger('windowResize', { view: _this.props.viewApi });\n });\n _this.handleWindowResize = function (ev) {\n var options = _this.props.options;\n if (options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n _this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n return _this;\n }\n /*\n renders INSIDE of an outer div\n */\n CalendarContent.prototype.render = function () {\n var props = this.props;\n var toolbarConfig = props.toolbarConfig, options = props.options;\n var toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle);\n var viewVGrow = false;\n var viewHeight = '';\n var viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n }\n else if (options.height != null) {\n viewVGrow = true;\n }\n else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n }\n else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n var viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n var viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : '';\n return (createElement(ViewContextType.Provider, { value: viewContext },\n toolbarConfig.header && (createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footer && (createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n };\n CalendarContent.prototype.componentDidMount = function () {\n var props = this.props;\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map(function (CalendarInteractionClass) { return new CalendarInteractionClass(props); });\n window.addEventListener('resize', this.handleWindowResize);\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n };\n CalendarContent.prototype.componentDidUpdate = function (prevProps) {\n var props = this.props;\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n };\n CalendarContent.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {\n var interaction = _a[_i];\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n };\n CalendarContent.prototype.buildAppendContent = function () {\n var props = this.props;\n var children = props.pluginHooks.viewContainerAppends.map(function (buildAppendContent) { return buildAppendContent(props); });\n return createElement.apply(void 0, __spreadArray([Fragment, {}], children));\n };\n CalendarContent.prototype.renderView = function (props) {\n var pluginHooks = props.pluginHooks;\n var viewSpec = props.viewSpec;\n var viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n };\n var transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n __assign(viewProps, transformer.transform(viewProps, props));\n }\n var ViewComponent = viewSpec.component;\n return (createElement(ViewComponent, __assign({}, viewProps)));\n };\n return CalendarContent;\n}(PureComponent));\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n var todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title: title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map(function (TheClass) { return new TheClass(); });\n}\n\nvar CalendarRoot = /** @class */ (function (_super) {\n __extends(CalendarRoot, _super);\n function CalendarRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n forPrint: false,\n };\n _this.handleBeforePrint = function () {\n _this.setState({ forPrint: true });\n };\n _this.handleAfterPrint = function () {\n _this.setState({ forPrint: false });\n };\n return _this;\n }\n CalendarRoot.prototype.render = function () {\n var props = this.props;\n var options = props.options;\n var forPrint = this.state.forPrint;\n var isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n var height = (!isHeightAuto && options.height != null) ? options.height : '';\n var classNames = [\n 'fc',\n forPrint ? 'fc-media-print' : 'fc-media-screen',\n \"fc-direction-\" + options.direction,\n props.theme.getClass('root'),\n ];\n if (!getCanVGrowWithinCell()) {\n classNames.push('fc-liquid-hack');\n }\n return props.children(classNames, height, isHeightAuto, forPrint);\n };\n CalendarRoot.prototype.componentDidMount = function () {\n var emitter = this.props.emitter;\n emitter.on('_beforeprint', this.handleBeforePrint);\n emitter.on('_afterprint', this.handleAfterPrint);\n };\n CalendarRoot.prototype.componentWillUnmount = function () {\n var emitter = this.props.emitter;\n emitter.off('_beforeprint', this.handleBeforePrint);\n emitter.off('_afterprint', this.handleAfterPrint);\n };\n return CalendarRoot;\n}(BaseComponent));\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return createFormatter({ weekday: 'short' }); // \"Sat\"\n }\n if (dayCnt > 1) {\n return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // \"Sat 11/12\"\n }\n return createFormatter({ weekday: 'long' }); // \"Saturday\"\n}\n\nvar CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(hookProps) {\n return hookProps.text;\n}\n\nvar TableDateCell = /** @class */ (function (_super) {\n __extends(TableDateCell, _super);\n function TableDateCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDateCell.prototype.render = function () {\n var _a = this.context, dateEnv = _a.dateEnv, options = _a.options, theme = _a.theme, viewApi = _a.viewApi;\n var props = this.props;\n var date = props.date, dateProfile = props.dateProfile;\n var dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n var classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n var text = dateEnv.format(date, props.dayHeaderFormat);\n // if colCnt is 1, we are already in a day-view and don't need a navlink\n var navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n ? buildNavLinkAttrs(this.context, date)\n : {};\n var hookProps = __assign(__assign(__assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraHookProps), { text: text }), dayMeta);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), \"data-date\": !dayMeta.isDisabled ? formatDayString(date) : undefined, colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" }, !dayMeta.isDisabled && (createElement(\"a\", __assign({ ref: innerElRef, className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' ') }, navLinkAttrs), innerContent))))); }));\n };\n return TableDateCell;\n}(BaseComponent));\n\nvar WEEKDAY_FORMAT = createFormatter({ weekday: 'long' });\nvar TableDowCell = /** @class */ (function (_super) {\n __extends(TableDowCell, _super);\n function TableDowCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDowCell.prototype.render = function () {\n var props = this.props;\n var _a = this.context, dateEnv = _a.dateEnv, theme = _a.theme, viewApi = _a.viewApi, options = _a.options;\n var date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n var dateMeta = {\n dow: props.dow,\n isDisabled: false,\n isFuture: false,\n isPast: false,\n isToday: false,\n isOther: false,\n };\n var classNames = [CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames || []);\n var text = dateEnv.format(date, props.dayHeaderFormat);\n var hookProps = __assign(__assign(__assign(__assign({ // TODO: make this public?\n date: date }, dateMeta), { view: viewApi }), props.extraHookProps), { text: text });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n createElement(\"a\", { \"aria-label\": dateEnv.format(date, WEEKDAY_FORMAT), className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' '), ref: innerElRef }, innerContent)))); }));\n };\n return TableDowCell;\n}(BaseComponent));\n\nvar NowTimer = /** @class */ (function (_super) {\n __extends(NowTimer, _super);\n function NowTimer(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.initialNowDate = getNow(context.options.now, context.dateEnv);\n _this.initialNowQueriedMs = new Date().valueOf();\n _this.state = _this.computeTiming().currentState;\n return _this;\n }\n NowTimer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n return props.children(state.nowDate, state.todayRange);\n };\n NowTimer.prototype.componentDidMount = function () {\n this.setTimeout();\n };\n NowTimer.prototype.componentDidUpdate = function (prevProps) {\n if (prevProps.unit !== this.props.unit) {\n this.clearTimeout();\n this.setTimeout();\n }\n };\n NowTimer.prototype.componentWillUnmount = function () {\n this.clearTimeout();\n };\n NowTimer.prototype.computeTiming = function () {\n var _a = this, props = _a.props, context = _a.context;\n var unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);\n var currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n var nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n var waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n // ensure no longer than a day\n waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n return {\n currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },\n nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },\n waitMs: waitMs,\n };\n };\n NowTimer.prototype.setTimeout = function () {\n var _this = this;\n var _a = this.computeTiming(), nextState = _a.nextState, waitMs = _a.waitMs;\n this.timeoutId = setTimeout(function () {\n _this.setState(nextState, function () {\n _this.setTimeout();\n });\n }, waitMs);\n };\n NowTimer.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n };\n NowTimer.contextType = ViewContextType;\n return NowTimer;\n}(Component));\nfunction buildDayRange(date) {\n var start = startOfDay(date);\n var end = addDays(start, 1);\n return { start: start, end: end };\n}\n\nvar DayHeader = /** @class */ (function (_super) {\n __extends(DayHeader, _super);\n function DayHeader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n return _this;\n }\n DayHeader.prototype.render = function () {\n var context = this.context;\n var _a = this.props, dates = _a.dates, dateProfile = _a.dateProfile, datesRepDistinctDays = _a.datesRepDistinctDays, renderIntro = _a.renderIntro;\n var dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n return (createElement(NowTimer, { unit: \"day\" }, function (nowDate, todayRange) { return (createElement(\"tr\", { role: \"row\" },\n renderIntro && renderIntro('day'),\n dates.map(function (date) { return (datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : (createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))); }))); }));\n };\n return DayHeader;\n}(BaseComponent));\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nvar DaySeriesModel = /** @class */ (function () {\n function DaySeriesModel(range, dateProfileGenerator) {\n var date = range.start;\n var end = range.end;\n var indices = [];\n var dates = [];\n var dayIndex = -1;\n while (date < end) { // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n }\n else {\n dayIndex += 1;\n indices.push(dayIndex);\n dates.push(date);\n }\n date = addDays(date, 1);\n }\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n DaySeriesModel.prototype.sliceRange = function (range) {\n var firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n var clippedFirstIndex = Math.max(0, firstIndex);\n var clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n // deal with in-between indices\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex,\n };\n }\n return null;\n };\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n DaySeriesModel.prototype.getDateDayIndex = function (date) {\n var indices = this.indices;\n var dayOffset = Math.floor(diffDays(this.dates[0], date));\n if (dayOffset < 0) {\n return indices[0] - 1;\n }\n if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n }\n return indices[dayOffset];\n };\n return DaySeriesModel;\n}());\n\nvar DayTableModel = /** @class */ (function () {\n function DayTableModel(daySeries, breakOnWeeks) {\n var dates = daySeries.dates;\n var daysPerRow;\n var firstDay;\n var rowCnt;\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n rowCnt = Math.ceil(dates.length / daysPerRow);\n }\n else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n DayTableModel.prototype.buildCells = function () {\n var rows = [];\n for (var row = 0; row < this.rowCnt; row += 1) {\n var cells = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n cells.push(this.buildCell(row, col));\n }\n rows.push(cells);\n }\n return rows;\n };\n DayTableModel.prototype.buildCell = function (row, col) {\n var date = this.daySeries.dates[row * this.colCnt + col];\n return {\n key: date.toISOString(),\n date: date,\n };\n };\n DayTableModel.prototype.buildHeaderDates = function () {\n var dates = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n dates.push(this.cells[0][col].date);\n }\n return dates;\n };\n DayTableModel.prototype.sliceRange = function (range) {\n var colCnt = this.colCnt;\n var seriesSeg = this.daySeries.sliceRange(range);\n var segs = [];\n if (seriesSeg) {\n var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex;\n var index = firstIndex;\n while (index <= lastIndex) {\n var row = Math.floor(index / colCnt);\n var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row: row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n });\n index = nextIndex;\n }\n }\n return segs;\n };\n return DayTableModel;\n}());\n\nvar Slicer = /** @class */ (function () {\n function Slicer() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n this.forceDayIfListItem = false; // hack\n }\n Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n var eventUiBases = props.eventUiBases;\n var eventSegs = this.sliceEventStore.apply(this, __spreadArray([props.eventStore, eventUiBases, dateProfile, nextDayThreshold], extraArgs));\n return {\n dateSelectionSegs: this.sliceDateSelection.apply(this, __spreadArray([props.dateSelection, eventUiBases, context], extraArgs)),\n businessHourSegs: this.sliceBusinessHours.apply(this, __spreadArray([props.businessHours, dateProfile, nextDayThreshold, context], extraArgs)),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag.apply(this, __spreadArray([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventResize: this.sliceEventResize.apply(this, __spreadArray([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventSelection: props.eventSelection,\n }; // TODO: give interactionSegs?\n };\n Slicer.prototype.sliceNowDate = function (// does not memoize\n date, context) {\n var extraArgs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n extraArgs[_i - 2] = arguments[_i];\n }\n return this._sliceDateSpan.apply(this, __spreadArray([{ range: { start: date, end: addMs(date, 1) }, allDay: false },\n {},\n context], extraArgs));\n };\n Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!businessHours) {\n return [];\n }\n return this._sliceEventStore.apply(this, __spreadArray([expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context),\n {},\n dateProfile,\n nextDayThreshold], extraArgs)).bg;\n };\n Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (eventStore) {\n var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n };\n }\n return { bg: [], fg: [] };\n };\n Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!interaction) {\n return null;\n }\n var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent,\n };\n };\n Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, context) {\n var extraArgs = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n extraArgs[_i - 3] = arguments[_i];\n }\n if (!dateSpan) {\n return [];\n }\n var eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n var segs = this.sliceRange.apply(this, __spreadArray([dateSpan.range], extraArgs));\n for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {\n var seg = segs_1[_a];\n seg.eventRange = eventRange;\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRanges = function (eventRanges, extraArgs) {\n var segs = [];\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.sliceEventRange(eventRange, extraArgs));\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRange = function (eventRange, extraArgs) {\n var dateRange = eventRange.range;\n // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n dateRange = {\n start: dateRange.start,\n end: addDays(dateRange.start, 1),\n };\n }\n var segs = this.sliceRange.apply(this, __spreadArray([dateRange], extraArgs));\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n return segs;\n };\n return Slicer;\n}());\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n var range = dateProfile.activeRange;\n if (isComponentAllDay) {\n return range;\n }\n return {\n start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n var instances = interaction.mutatedEvents.instances;\n for (var instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n return false;\n }\n return isNewPropsValid({ dateSelection: dateSelection }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n var calendarState = context.getCurrentData();\n var props = __assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context, dateSpanMeta, filterConfig) {\n if (dateSpanMeta === void 0) { dateSpanMeta = {}; }\n if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var currentState = context.getCurrentData();\n var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n var subjectEventStore = interaction.mutatedEvents;\n var subjectDefs = subjectEventStore.defs;\n var subjectInstances = subjectEventStore.instances;\n var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n state.eventUiBases :\n { '': currentState.selectionConfig });\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n }\n // exclude the subject events. TODO: exclude defs too?\n var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n var otherDefs = otherEventStore.defs;\n var otherInstances = otherEventStore.instances;\n var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n for (var subjectInstanceId in subjectInstances) {\n var subjectInstance = subjectInstances[subjectInstanceId];\n var subjectRange = subjectInstance.range;\n var subjectConfig = subjectConfigs[subjectInstance.defId];\n var subjectDef = subjectDefs[subjectInstance.defId];\n // constraint\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var eventOverlap = context.options.eventOverlap;\n var eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n for (var otherInstanceId in otherInstances) {\n var otherInstance = otherInstances[otherInstanceId];\n // intersect! evaluate\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n var otherOverlap = otherConfigs[otherInstance.defId].overlap;\n // consider the other event's overlap. only do this if the subject event is a \"real\" event\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n if (subjectConfig.overlap === false) {\n return false;\n }\n if (eventOverlapFunc && !eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event\n new EventApi(context, subjectDef, subjectInstance))) {\n return false;\n }\n }\n }\n // allow (a function)\n var calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) {\n var subjectAllow = _a[_i];\n var subjectDateSpan = __assign(__assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });\n var origDef = calendarEventStore.defs[subjectDef.defId];\n var origInstance = calendarEventStore.instances[subjectInstanceId];\n var eventApi = void 0;\n if (origDef) { // was previously in the calendar\n eventApi = new EventApi(context, origDef, origInstance);\n }\n else { // was an external event\n eventApi = new EventApi(context, subjectDef); // no instance, because had no dates\n }\n if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n return false;\n }\n }\n }\n return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var relevantEventStore = state.eventStore;\n var relevantDefs = relevantEventStore.defs;\n var relevantInstances = relevantEventStore.instances;\n var selection = state.dateSelection;\n var selectionRange = selection.range;\n var selectionConfig = context.getCurrentData().selectionConfig;\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n }\n // constraint\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var selectOverlap = context.options.selectOverlap;\n var selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n for (var relevantInstanceId in relevantInstances) {\n var relevantInstance = relevantInstances[relevantInstanceId];\n // intersect! evaluate\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n if (selectOverlapFunc && !selectOverlapFunc(new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n return false;\n }\n }\n }\n // allow (a function)\n for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {\n var selectionAllow = _a[_i];\n var fullDateSpan = __assign(__assign({}, dateSpanMeta), selection);\n if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n return false;\n }\n }\n return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {\n var constraint = constraints_1[_i];\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n return false;\n }\n }\n return true;\n}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n }\n if (typeof constraint === 'string') { // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { return eventDef.groupId === constraint; }));\n }\n if (typeof constraint === 'object' && constraint) { // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n }\n return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n var instances = eventStore.instances;\n var ranges = [];\n for (var instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {\n var outerRange = outerRanges_1[_i];\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n return false;\n}\n\nvar VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nvar Scroller = /** @class */ (function (_super) {\n __extends(Scroller, _super);\n function Scroller() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n };\n return _this;\n }\n Scroller.prototype.render = function () {\n var props = this.props;\n var liquid = props.liquid, liquidIsAbsolute = props.liquidIsAbsolute;\n var isAbsolute = liquid && liquidIsAbsolute;\n var className = ['fc-scroller'];\n if (liquid) {\n if (liquidIsAbsolute) {\n className.push('fc-scroller-liquid-absolute');\n }\n else {\n className.push('fc-scroller-liquid');\n }\n }\n return (createElement(\"div\", { ref: this.handleEl, className: className.join(' '), style: {\n overflowX: props.overflowX,\n overflowY: props.overflowY,\n left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n maxHeight: props.maxHeight || '',\n } }, props.children));\n };\n Scroller.prototype.needsXScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return false;\n }\n // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().width > realClientWidth) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.needsYScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return false;\n }\n // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().height > realClientHeight) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.getXScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return 0;\n }\n return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n Scroller.prototype.getYScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return 0;\n }\n return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n return Scroller;\n}(BaseComponent));\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nvar RefMap = /** @class */ (function () {\n function RefMap(masterCallback) {\n var _this = this;\n this.masterCallback = masterCallback;\n this.currentMap = {};\n this.depths = {};\n this.callbackMap = {};\n this.handleValue = function (val, key) {\n var _a = _this, depths = _a.depths, currentMap = _a.currentMap;\n var removed = false;\n var added = false;\n if (val !== null) {\n // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n removed = (key in currentMap);\n currentMap[key] = val;\n depths[key] = (depths[key] || 0) + 1;\n added = true;\n }\n else {\n depths[key] -= 1;\n if (!depths[key]) {\n delete currentMap[key];\n delete _this.callbackMap[key];\n removed = true;\n }\n }\n if (_this.masterCallback) {\n if (removed) {\n _this.masterCallback(null, String(key));\n }\n if (added) {\n _this.masterCallback(val, String(key));\n }\n }\n };\n }\n RefMap.prototype.createRef = function (key) {\n var _this = this;\n var refCallback = this.callbackMap[key];\n if (!refCallback) {\n refCallback = this.callbackMap[key] = function (val) {\n _this.handleValue(val, String(key));\n };\n }\n return refCallback;\n };\n // TODO: check callers that don't care about order. should use getAll instead\n // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n RefMap.prototype.collect = function (startIndex, endIndex, step) {\n return collectFromHash(this.currentMap, startIndex, endIndex, step);\n };\n RefMap.prototype.getAll = function () {\n return hashValuesToArray(this.currentMap);\n };\n return RefMap;\n}());\n\nfunction computeShrinkWidth(chunkEls) {\n var shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n var largestWidth = 0;\n for (var _i = 0, shrinkCells_1 = shrinkCells; _i < shrinkCells_1.length; _i++) {\n var shrinkCell = shrinkCells_1[_i];\n largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n }\n return Math.ceil(largestWidth); // elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n var expandRows = arg.expandRows;\n var content = typeof chunkConfig.content === 'function' ?\n chunkConfig.content(arg) :\n createElement('table', {\n role: 'presentation',\n className: [\n chunkConfig.tableClassName,\n sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n ].join(' '),\n style: {\n minWidth: arg.tableMinWidth,\n width: arg.clientWidth,\n height: expandRows ? arg.clientHeight : '', // css `height` on a
serves as a min-height\n },\n }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n role: 'presentation',\n }, typeof chunkConfig.rowContent === 'function'\n ? chunkConfig.rowContent(arg)\n : chunkConfig.rowContent));\n return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n var colNodes = [];\n /*\n for ColProps with spans, it would have been great to make a single \n HOWEVER, Chrome was getting messing up distributing the width to elements makes Chrome behave.\n */\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var colProps = cols_1[_i];\n var span = colProps.span || 1;\n for (var i = 0; i < span; i += 1) {\n colNodes.push(createElement(\"col\", { style: {\n width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n minWidth: colProps.minWidth || '',\n } }));\n }\n }\n return createElement.apply(void 0, __spreadArray(['colgroup', {}], colNodes));\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n 4 accounts for 2 2-pixel borders. TODO: better solution? */\n return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n for (var _i = 0, cols_2 = cols; _i < cols_2.length; _i++) {\n var col = cols_2[_i];\n if (col.width === 'shrink') {\n return true;\n }\n }\n return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n var classNames = [\n 'fc-scrollgrid',\n context.theme.getClass('table'),\n ];\n if (liquid) {\n classNames.push('fc-scrollgrid-liquid');\n }\n return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n var classNames = [\n 'fc-scrollgrid-section',\n \"fc-scrollgrid-section-\" + sectionConfig.type,\n sectionConfig.className, // used?\n ];\n if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n classNames.push('fc-scrollgrid-section-liquid');\n }\n if (sectionConfig.isSticky) {\n classNames.push('fc-scrollgrid-section-sticky');\n }\n return classNames;\n}\nfunction renderScrollShim(arg) {\n return (createElement(\"div\", { className: \"fc-scrollgrid-sticky-shim\", style: {\n width: arg.clientWidth,\n minWidth: arg.tableMinWidth,\n } }));\n}\nfunction getStickyHeaderDates(options) {\n var stickyHeaderDates = options.stickyHeaderDates;\n if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n var stickyFooterScrollbar = options.stickyFooterScrollbar;\n if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyFooterScrollbar;\n}\n\nvar SimpleScrollGrid = /** @class */ (function (_super) {\n __extends(SimpleScrollGrid, _super);\n function SimpleScrollGrid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.processCols = memoize(function (a) { return a; }, isColPropsEqual); // so we get same `cols` props every time\n // yucky to memoize VNodes, but much more efficient for consumers\n _this.renderMicroColGroup = memoize(renderMicroColGroup);\n _this.scrollerRefs = new RefMap();\n _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this));\n _this.state = {\n shrinkWidth: null,\n forceYScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n };\n // TODO: can do a really simple print-view. dont need to join rows\n _this.handleSizing = function () {\n _this.safeSetState(__assign({ shrinkWidth: _this.computeShrinkWidth() }, _this.computeScrollerDims()));\n };\n return _this;\n }\n SimpleScrollGrid.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state, context = _a.context;\n var sectionConfigs = props.sections || [];\n var cols = this.processCols(props.cols);\n var microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n var classNames = getScrollGridClassNames(props.liquid, context);\n if (props.collapsibleWidth) {\n classNames.push('fc-scrollgrid-collapsible');\n }\n // TODO: make DRY\n var configCnt = sectionConfigs.length;\n var configI = 0;\n var currentConfig;\n var headSectionNodes = [];\n var bodySectionNodes = [];\n var footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n // firefox bug: when setting height on table and there is a thead or tfoot,\n // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n // if so, use a simpler dom structure, jam everything into a lone tbody.\n var isBuggy = !getCanVGrowWithinCell();\n var roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n role: 'grid',\n className: classNames.join(' '),\n style: { height: props.height },\n }, Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));\n };\n SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)));\n };\n SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n if ('outerContent' in chunkConfig) {\n return chunkConfig.outerContent;\n }\n var props = this.props;\n var _a = this.state, forceYScrollbars = _a.forceYScrollbars, scrollerClientWidths = _a.scrollerClientWidths, scrollerClientHeights = _a.scrollerClientHeights;\n var needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n var isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n // for `!props.liquid` - is WHOLE scrollgrid natural height?\n // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n var overflowY = !props.liquid ? 'visible' :\n forceYScrollbars ? 'scroll' :\n !needsYScrolling ? 'hidden' :\n 'auto';\n var sectionKey = sectionConfig.key;\n var content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth: '',\n clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n expandRows: sectionConfig.expandRows,\n syncRowHeights: false,\n rowSyncHeights: [],\n reportRowHeightChange: function () { },\n }, isHeader);\n return createElement(isHeader ? 'th' : 'td', {\n ref: chunkConfig.elRef,\n role: 'presentation',\n }, createElement(\"div\", { className: \"fc-scroller-harness\" + (isLiquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness\n : true }, content)));\n };\n SimpleScrollGrid.prototype._handleScrollerEl = function (scrollerEl, key) {\n var section = getSectionByKey(this.props.sections, key);\n if (section) {\n setRef(section.chunk.scrollerElRef, scrollerEl);\n }\n };\n SimpleScrollGrid.prototype.componentDidMount = function () {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.componentDidUpdate = function () {\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing();\n };\n SimpleScrollGrid.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.computeShrinkWidth = function () {\n return hasShrinkWidth(this.props.cols)\n ? computeShrinkWidth(this.scrollerElRefs.getAll())\n : 0;\n };\n SimpleScrollGrid.prototype.computeScrollerDims = function () {\n var scrollbarWidth = getScrollbarWidths();\n var _a = this, scrollerRefs = _a.scrollerRefs, scrollerElRefs = _a.scrollerElRefs;\n var forceYScrollbars = false;\n var scrollerClientWidths = {};\n var scrollerClientHeights = {};\n for (var sectionKey in scrollerRefs.currentMap) {\n var scroller = scrollerRefs.currentMap[sectionKey];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (var _i = 0, _b = this.props.sections; _i < _b.length; _i++) {\n var section = _b[_i];\n var sectionKey = section.key;\n var scrollerEl = scrollerElRefs.currentMap[sectionKey];\n if (scrollerEl) {\n var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n }\n }\n return { forceYScrollbars: forceYScrollbars, scrollerClientWidths: scrollerClientWidths, scrollerClientHeights: scrollerClientHeights };\n };\n return SimpleScrollGrid;\n}(BaseComponent));\nSimpleScrollGrid.addStateEquality({\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction getSectionByKey(sections, key) {\n for (var _i = 0, sections_1 = sections; _i < sections_1.length; _i++) {\n var section = sections_1[_i];\n if (section.key === key) {\n return section;\n }\n }\n return null;\n}\n\nvar EventRoot = /** @class */ (function (_super) {\n __extends(EventRoot, _super);\n function EventRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.elRef = createRef();\n return _this;\n }\n EventRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var seg = props.seg;\n var eventRange = seg.eventRange;\n var ui = eventRange.ui;\n var hookProps = {\n event: new EventApi(context, eventRange.def, eventRange.instance),\n view: context.viewApi,\n timeText: props.timeText,\n textColor: ui.textColor,\n backgroundColor: ui.backgroundColor,\n borderColor: ui.borderColor,\n isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n isStart: Boolean(seg.isStart),\n isEnd: Boolean(seg.isEnd),\n isPast: Boolean(props.isPast),\n isFuture: Boolean(props.isFuture),\n isToday: Boolean(props.isToday),\n isSelected: Boolean(props.isSelected),\n isDragging: Boolean(props.isDragging),\n isResizing: Boolean(props.isResizing),\n };\n var standardClassNames = getEventClassNames(hookProps).concat(ui.classNames);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.eventClassNames, content: options.eventContent, defaultContent: props.defaultContent, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount, elRef: this.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps); }));\n };\n EventRoot.prototype.componentDidMount = function () {\n setElSeg(this.elRef.current, this.props.seg);\n };\n /*\n need to re-assign seg to the element if seg changes, even if the element is the same\n */\n EventRoot.prototype.componentDidUpdate = function (prevProps) {\n var seg = this.props.seg;\n if (seg !== prevProps.seg) {\n setElSeg(this.elRef.current, seg);\n }\n };\n return EventRoot;\n}(BaseComponent));\n\n// should not be a purecomponent\nvar StandardEvent = /** @class */ (function (_super) {\n __extends(StandardEvent, _super);\n function StandardEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StandardEvent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var seg = props.seg;\n var timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat;\n var timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n return (createElement(EventRoot, { seg: seg, timeText: timeText, disableDragging: props.disableDragging, disableResizing: props.disableResizing, defaultContent: props.defaultContent || renderInnerContent$1, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"a\", __assign({ className: props.extraClassNames.concat(classNames).join(' '), style: {\n borderColor: hookProps.borderColor,\n backgroundColor: hookProps.backgroundColor,\n }, ref: rootElRef }, getSegAnchorAttrs(seg, context)),\n createElement(\"div\", { className: \"fc-event-main\", ref: innerElRef, style: { color: hookProps.textColor } }, innerContent),\n hookProps.isStartResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-start\" }),\n hookProps.isEndResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-end\" }))); }));\n };\n return StandardEvent;\n}(BaseComponent));\nfunction renderInnerContent$1(innerProps) {\n return (createElement(\"div\", { className: \"fc-event-main-frame\" },\n innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n createElement(\"div\", { className: \"fc-event-title-container\" },\n createElement(\"div\", { className: \"fc-event-title fc-sticky\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\")))));\n}\n\nvar NowIndicatorRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var options = context.options;\n var hookProps = {\n isAxis: props.isAxis,\n date: context.dateEnv.toDate(props.date),\n view: context.viewApi,\n };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.nowIndicatorClassNames, content: options.nowIndicatorContent, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));\n})); };\n\nvar DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });\nvar DayCellContent = /** @class */ (function (_super) {\n __extends(DayCellContent, _super);\n function DayCellContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DayCellContent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = refineDayCellHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n return (createElement(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children));\n };\n return DayCellContent;\n}(BaseComponent));\nfunction refineDayCellHookProps(raw) {\n var date = raw.date, dateEnv = raw.dateEnv;\n var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile);\n return __assign(__assign(__assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '' }), raw.extraProps);\n}\n\nvar DayCellRoot = /** @class */ (function (_super) {\n __extends(DayCellRoot, _super);\n function DayCellRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.refineHookProps = memoizeObjArg(refineDayCellHookProps);\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n DayCellRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = this.refineHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n var classNames = getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled\n ? [] // don't use custom classNames if disabled\n : this.normalizeClassNames(options.dayCellClassNames, hookProps));\n var dataAttrs = hookProps.isDisabled ? {} : {\n 'data-date': formatDayString(props.date),\n };\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled); }));\n };\n return DayCellRoot;\n}(BaseComponent));\n\nfunction renderFill(fillType) {\n return (createElement(\"div\", { className: \"fc-\" + fillType }));\n}\nvar BgEvent = function (props) { return (createElement(EventRoot, { defaultContent: renderInnerContent, seg: props.seg /* uselesss i think */, timeText: \"\", disableDragging: true, disableResizing: true, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-bg-event'].concat(classNames).join(' '), style: {\n backgroundColor: hookProps.backgroundColor,\n } }, innerContent)); })); };\nfunction renderInnerContent(props) {\n var title = props.event.title;\n return title && (createElement(\"div\", { className: \"fc-event-title\" }, props.event.title));\n}\n\nvar WeekNumberRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var dateEnv = context.dateEnv, options = context.options;\n var date = props.date;\n var format = options.weekNumberFormat || props.defaultFormat;\n var num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n var text = dateEnv.format(date, format);\n var hookProps = { num: num, text: text, date: date };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.weekNumberClassNames, content: options.weekNumberContent, defaultContent: renderInner, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));\n})); };\nfunction renderInner(innerProps) {\n return innerProps.text;\n}\n\nvar PADDING_FROM_VIEWPORT = 10;\nvar Popover = /** @class */ (function (_super) {\n __extends(Popover, _super);\n function Popover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n titleId: getUniqueDomId(),\n };\n _this.handleRootEl = function (el) {\n _this.rootEl = el;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n _this.handleDocumentMouseDown = function (ev) {\n // only hide the popover if the click happened outside the popover\n var target = getEventTargetViaRoot(ev);\n if (!_this.rootEl.contains(target)) {\n _this.handleCloseClick();\n }\n };\n _this.handleDocumentKeyDown = function (ev) {\n if (ev.key === 'Escape') {\n _this.handleCloseClick();\n }\n };\n _this.handleCloseClick = function () {\n var onClose = _this.props.onClose;\n if (onClose) {\n onClose();\n }\n };\n return _this;\n }\n Popover.prototype.render = function () {\n var _a = this.context, theme = _a.theme, options = _a.options;\n var _b = this, props = _b.props, state = _b.state;\n var classNames = [\n 'fc-popover',\n theme.getClass('popover'),\n ].concat(props.extraClassNames || []);\n return createPortal(createElement(\"div\", __assign({ id: props.id, className: classNames.join(' '), \"aria-labelledby\": state.titleId }, props.extraAttrs, { ref: this.handleRootEl }),\n createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n createElement(\"span\", { className: \"fc-popover-title\", id: state.titleId }, props.title),\n createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })),\n createElement(\"div\", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl);\n };\n Popover.prototype.componentDidMount = function () {\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n this.updateSize();\n };\n Popover.prototype.componentWillUnmount = function () {\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n };\n Popover.prototype.updateSize = function () {\n var isRtl = this.context.isRtl;\n var _a = this.props, alignmentEl = _a.alignmentEl, alignGridTop = _a.alignGridTop;\n var rootEl = this.rootEl;\n var alignmentRect = computeClippedClientRect(alignmentEl);\n if (alignmentRect) {\n var popoverDims = rootEl.getBoundingClientRect();\n // position relative to viewport\n var popoverTop = alignGridTop\n ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n : alignmentRect.top;\n var popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n // constrain\n popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n var origin_1 = rootEl.offsetParent.getBoundingClientRect();\n applyStyle(rootEl, {\n top: popoverTop - origin_1.top,\n left: popoverLeft - origin_1.left,\n });\n }\n };\n return Popover;\n}(BaseComponent));\n\nvar MorePopover = /** @class */ (function (_super) {\n __extends(MorePopover, _super);\n function MorePopover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (rootEl) {\n _this.context.registerInteractiveComponent(_this, {\n el: rootEl,\n useEventCenter: false,\n });\n }\n else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n return _this;\n }\n MorePopover.prototype.render = function () {\n var _a = this.context, options = _a.options, dateEnv = _a.dateEnv;\n var props = this.props;\n var startDate = props.startDate, todayRange = props.todayRange, dateProfile = props.dateProfile;\n var title = dateEnv.format(startDate, options.dayPopoverFormat);\n return (createElement(DayCellRoot, { date: startDate, dateProfile: dateProfile, todayRange: todayRange, elRef: this.handleRootEl }, function (rootElRef, dayClassNames, dataAttrs) { return (createElement(Popover, { elRef: rootElRef, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose },\n createElement(DayCellContent, { date: startDate, dateProfile: dateProfile, todayRange: todayRange }, function (innerElRef, innerContent) { return (innerContent &&\n createElement(\"div\", { className: \"fc-more-popover-misc\", ref: innerElRef }, innerContent)); }),\n props.children)); }));\n };\n MorePopover.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n var _a = this, rootEl = _a.rootEl, props = _a.props;\n if (positionLeft >= 0 && positionLeft < elWidth &&\n positionTop >= 0 && positionTop < elHeight) {\n return {\n dateProfile: props.dateProfile,\n dateSpan: __assign({ allDay: true, range: {\n start: props.startDate,\n end: props.endDate,\n } }, props.extraDateSpan),\n dayEl: rootEl,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight,\n },\n layer: 1, // important when comparing with hits from other components\n };\n }\n return null;\n };\n return MorePopover;\n}(DateComponent));\n\nvar MoreLinkRoot = /** @class */ (function (_super) {\n __extends(MoreLinkRoot, _super);\n function MoreLinkRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.linkElRef = createRef();\n _this.state = {\n isPopoverOpen: false,\n popoverId: getUniqueDomId(),\n };\n _this.handleClick = function (ev) {\n var _a = _this, props = _a.props, context = _a.context;\n var moreLinkClick = context.options.moreLinkClick;\n var date = computeRange(props).start;\n function buildPublicSeg(seg) {\n var _a = seg.eventRange, def = _a.def, instance = _a.instance, range = _a.range;\n return {\n event: new EventApi(context, def, instance),\n start: context.dateEnv.toDate(range.start),\n end: context.dateEnv.toDate(range.end),\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n };\n }\n if (typeof moreLinkClick === 'function') {\n moreLinkClick = moreLinkClick({\n date: date,\n allDay: Boolean(props.allDayDate),\n allSegs: props.allSegs.map(buildPublicSeg),\n hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n if (!moreLinkClick || moreLinkClick === 'popover') {\n _this.setState({ isPopoverOpen: true });\n }\n else if (typeof moreLinkClick === 'string') { // a view name\n context.calendarApi.zoomTo(date, moreLinkClick);\n }\n };\n _this.handlePopoverClose = function () {\n _this.setState({ isPopoverOpen: false });\n };\n return _this;\n }\n MoreLinkRoot.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, state = _a.state;\n return (createElement(ViewContextType.Consumer, null, function (context) {\n var viewApi = context.viewApi, options = context.options, calendarApi = context.calendarApi;\n var moreLinkText = options.moreLinkText;\n var moreCnt = props.moreCnt;\n var range = computeRange(props);\n var text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n ? moreLinkText.call(calendarApi, moreCnt)\n : \"+\" + moreCnt + \" \" + moreLinkText;\n var title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n var hookProps = {\n num: moreCnt,\n shortText: \"+\" + moreCnt,\n text: text,\n view: viewApi,\n };\n return (createElement(Fragment, null,\n Boolean(props.moreCnt) && (createElement(RenderHook, { elRef: _this.linkElRef, hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: props.defaultContent || renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, ['fc-more-link'].concat(customClassNames), innerElRef, innerContent, _this.handleClick, title, state.isPopoverOpen, state.isPopoverOpen ? state.popoverId : ''); })),\n state.isPopoverOpen && (createElement(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: _this.parentEl, alignmentEl: props.alignmentElRef.current, alignGridTop: props.alignGridTop, onClose: _this.handlePopoverClose }, props.popoverContent()))));\n }));\n };\n MoreLinkRoot.prototype.componentDidMount = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.componentDidUpdate = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.updateParentEl = function () {\n if (this.linkElRef.current) {\n this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness');\n }\n };\n return MoreLinkRoot;\n}(BaseComponent));\nfunction renderMoreLinkInner(props) {\n return props.text;\n}\nfunction computeRange(props) {\n if (props.allDayDate) {\n return {\n start: props.allDayDate,\n end: addDays(props.allDayDate, 1),\n };\n }\n var hiddenSegs = props.hiddenSegs;\n return {\n start: computeEarliestSegStart(hiddenSegs),\n end: computeLatestSegEnd(hiddenSegs),\n };\n}\nfunction computeEarliestSegStart(segs) {\n return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\n\n// exports\n// --------------------------------------------------------------------------------------------------\nvar version = '5.11.5'; // important to type it, so .d.ts has generic string\n\nexport { BASE_OPTION_DEFAULTS, BASE_OPTION_REFINERS, BaseComponent, BgEvent, CalendarApi, CalendarContent, CalendarDataManager, CalendarDataProvider, CalendarRoot, ContentHook, CustomContentRenderContext, DateComponent, DateEnv, DateProfileGenerator, DayCellContent, DayCellRoot, DayHeader, DaySeriesModel, DayTableModel, DelayedRunner, ElementDragging, ElementScrollController, Emitter, EventApi, EventRoot, EventSourceApi, Interaction, MoreLinkRoot, MountHook, NamedTimeZoneImpl, NowIndicatorRoot, NowTimer, PositionCache, RefMap, RenderHook, ScrollController, ScrollResponder, Scroller, SegHierarchy, SimpleScrollGrid, Slicer, Splitter, StandardEvent, TableDateCell, TableDowCell, Theme, ViewApi, ViewContextType, ViewRoot, WeekNumberRoot, WindowScrollController, addDays, addDurations, addMs, addWeeks, allowContextMenu, allowSelection, applyMutationToEventStore, applyStyle, applyStyleProp, asCleanDays, asRoughMinutes, asRoughMs, asRoughSeconds, binarySearch, buildClassNameNormalizer, buildEntryKey, buildEventApis, buildEventRangeKey, buildHashFromArray, buildIsoString, buildNavLinkAttrs, buildSegCompareObj, buildSegTimeText, collectFromHash, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compareObjs, computeEarliestSegStart, computeEdges, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeSegDraggable, computeSegEndResizable, computeSegStartResizable, computeShrinkWidth, computeSmallestCellWidth, computeVisibleDayRange, config, constrainPoint, createAriaClickAttrs, createDuration, createEmptyEventStore, createEventInstance, createEventUi, createFormatter, createPlugin, diffDates, diffDayAndTime, diffDays, diffPoints, diffWeeks, diffWholeDays, diffWholeWeeks, disableCursor, elementClosest, elementMatches, enableCursor, eventTupleToStore, filterEventStoreDefs, filterHash, findDirectChildren, findElements, flexibleCompare, formatDate, formatDayString, formatIsoTimeString, formatRange, getAllowYScrolling, getCanVGrowWithinCell, getClippingParents, getDateMeta, getDayClassNames, getDefaultEventEnd, getElRoot, getElSeg, getEntrySpanEnd, getEventClassNames, getEventTargetViaRoot, getIsRtlScrollbarOnLeft, getRectCenter, getRelevantEvents, getScrollGridClassNames, getScrollbarWidths, getSectionClassNames, getSectionHasLiquidHeight, getSegAnchorAttrs, getSegMeta, getSlotClassNames, getStickyFooterScrollbar, getStickyHeaderDates, getUnequalProps, getUniqueDomId, globalLocales, globalPlugins, greatestDurationDenominator, groupIntersectingEntries, guid, hasBgRendering, hasShrinkWidth, identity, interactionSettingsStore, interactionSettingsToStore, intersectRanges, intersectRects, intersectSpans, isArraysEqual, isColPropsEqual, isDateSelectionValid, isDateSpansEqual, isInt, isInteractionValid, isMultiDayRange, isPropsEqual, isPropsValid, isValidDate, joinSpans, listenBySelector, mapHash, memoize, memoizeArraylike, memoizeHashlike, memoizeObjArg, mergeEventStores, multiplyDuration, padStart, parseBusinessHours, parseClassNames, parseDragMeta, parseEventDef, parseFieldSpecs, parse as parseMarker, pointInsideRect, preventContextMenu, preventDefault, preventSelection, rangeContainsMarker, rangeContainsRange, rangesEqual, rangesIntersect, refineEventDef, refineProps, removeElement, removeExact, renderChunkContent, renderFill, renderMicroColGroup, renderScrollShim, requestJson, sanitizeShrinkWidth, setElSeg, setRef, sliceEventStore, sliceEvents, sortEventSegs, startOfDay, translateRect, triggerDateSelect, unpromisify, version, whenTransitionDone, wholeDivideDurations };\n//# sourceMappingURL=main.js.map\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { InjectionToken, forwardRef, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, ChangeDetectorRef, Attribute, Inject, Optional, ViewChild, Input, Output, Directive, NgModule } from '@angular/core';\nimport { mixinTabIndex, mixinColor, mixinDisableRipple, mixinDisabled, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/a11y';\nimport * as ɵngcc2 from '@angular/material/core';\nimport * as ɵngcc3 from '@angular/cdk/observers';\n\nconst _c0 = [\"thumbContainer\"];\nconst _c1 = [\"toggleBar\"];\nconst _c2 = [\"input\"];\nconst _c3 = function () { return { enterDuration: 150 }; };\nconst _c4 = [\"*\"];\nconst MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS = new InjectionToken('mat-slide-toggle-default-options', {\n providedIn: 'root',\n factory: () => ({ disableToggleValue: false })\n});\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Increasing integer for generating unique ids for slide-toggle components.\nlet nextUniqueId = 0;\n/** @docs-private */\nconst MAT_SLIDE_TOGGLE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true\n};\n/** Change event object emitted by a MatSlideToggle. */\nclass MatSlideToggleChange {\n constructor(\n /** The source MatSlideToggle of the event. */\n source, \n /** The new `checked` value of the MatSlideToggle. */\n checked) {\n this.source = source;\n this.checked = checked;\n }\n}\n// Boilerplate for applying mixins to MatSlideToggle.\n/** @docs-private */\nclass MatSlideToggleBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatSlideToggleMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase)), 'accent'));\n/** Represents a slidable \"switch\" toggle that can be moved between on and off. */\nclass MatSlideToggle extends _MatSlideToggleMixinBase {\n constructor(elementRef, _focusMonitor, _changeDetectorRef, tabIndex, defaults, _animationMode) {\n super(elementRef);\n this._focusMonitor = _focusMonitor;\n this._changeDetectorRef = _changeDetectorRef;\n this.defaults = defaults;\n this._animationMode = _animationMode;\n this._onChange = (_) => { };\n this._onTouched = () => { };\n this._uniqueId = `mat-slide-toggle-${++nextUniqueId}`;\n this._required = false;\n this._checked = false;\n /** Name value will be applied to the input element if present. */\n this.name = null;\n /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n this.id = this._uniqueId;\n /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n this.labelPosition = 'after';\n /** Used to set the aria-label attribute on the underlying input element. */\n this.ariaLabel = null;\n /** Used to set the aria-labelledby attribute on the underlying input element. */\n this.ariaLabelledby = null;\n /** An event will be dispatched each time the slide-toggle changes its value. */\n this.change = new EventEmitter();\n /**\n * An event will be dispatched each time the slide-toggle input is toggled.\n * This event is always emitted when the user toggles the slide toggle, but this does not mean\n * the slide toggle's value has changed.\n */\n this.toggleChange = new EventEmitter();\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n /** Whether the slide-toggle is required. */\n get required() { return this._required; }\n set required(value) { this._required = coerceBooleanProperty(value); }\n /** Whether the slide-toggle element is checked or not. */\n get checked() { return this._checked; }\n set checked(value) {\n this._checked = coerceBooleanProperty(value);\n this._changeDetectorRef.markForCheck();\n }\n /** Returns the unique id for the visual hidden input. */\n get inputId() { return `${this.id || this._uniqueId}-input`; }\n ngAfterContentInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .subscribe(focusOrigin => {\n // Only forward focus manually when it was received programmatically or through the\n // keyboard. We should not do this for mouse/touch focus for two reasons:\n // 1. It can prevent clicks from landing in Chrome (see #18269).\n // 2. They're already handled by the wrapping `label` element.\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this._inputElement.nativeElement.focus();\n }\n else if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state\n // change (such as a form control's 'ng-touched') will cause a changed-after-checked\n // error. See https://github.com/angular/angular/issues/17793. To work around this,\n // we defer telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => this._onTouched());\n }\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n /** Method being called whenever the underlying input emits a change event. */\n _onChangeEvent(event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the component's `change` output.\n event.stopPropagation();\n this.toggleChange.emit();\n // When the slide toggle's config disables toggle change event by setting\n // `disableToggleValue: true`, the slide toggle's value does not change, and the\n // checked state of the underlying input needs to be changed back.\n if (this.defaults.disableToggleValue) {\n this._inputElement.nativeElement.checked = this.checked;\n return;\n }\n // Sync the value from the underlying input element with the component instance.\n this.checked = this._inputElement.nativeElement.checked;\n // Emit our custom change event only if the underlying input emitted one. This ensures that\n // there is no change event, when the checked state changes programmatically.\n this._emitChangeEvent();\n }\n /** Method being called whenever the slide-toggle has been clicked. */\n _onInputClick(event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `slide-toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value) {\n this.checked = !!value;\n }\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the slide-toggle. */\n focus(options, origin) {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n }\n else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n /** Toggles the checked state of the slide-toggle. */\n toggle() {\n this.checked = !this.checked;\n this._onChange(this.checked);\n }\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n */\n _emitChangeEvent() {\n this._onChange(this.checked);\n this.change.emit(new MatSlideToggleChange(this, this.checked));\n }\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the\n // slide-toggle component will be only marked for check, but no actual change detection runs\n // automatically. Instead of going back into the zone in order to trigger a change detection\n // which causes *all* components to be checked (if explicitly marked or not using OnPush),\n // we only trigger an explicit change detection for the slide-toggle view and its children.\n this._changeDetectorRef.detectChanges();\n }\n}\nMatSlideToggle.ɵfac = function MatSlideToggle_Factory(t) { return new (t || MatSlideToggle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵinjectAttribute('tabindex'), ɵngcc0.ɵɵdirectiveInject(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); };\nMatSlideToggle.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatSlideToggle, selectors: [[\"mat-slide-toggle\"]], viewQuery: function MatSlideToggle_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 1);\n ɵngcc0.ɵɵviewQuery(_c1, 1);\n ɵngcc0.ɵɵviewQuery(_c2, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._thumbEl = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._thumbBarEl = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._inputElement = _t.first);\n } }, hostAttrs: [1, \"mat-slide-toggle\"], hostVars: 12, hostBindings: function MatSlideToggle_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? null : -1)(\"aria-label\", null)(\"aria-labelledby\", null);\n ɵngcc0.ɵɵclassProp(\"mat-checked\", ctx.checked)(\"mat-disabled\", ctx.disabled)(\"mat-slide-toggle-label-before\", ctx.labelPosition == \"before\")(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\");\n } }, inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", color: \"color\", tabIndex: \"tabIndex\", name: \"name\", id: \"id\", labelPosition: \"labelPosition\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], required: \"required\", checked: \"checked\" }, outputs: { change: \"change\", toggleChange: \"toggleChange\" }, exportAs: [\"matSlideToggle\"], features: [ɵngcc0.ɵɵProvidersFeature([MAT_SLIDE_TOGGLE_VALUE_ACCESSOR]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c4, decls: 16, vars: 18, consts: [[1, \"mat-slide-toggle-label\"], [\"label\", \"\"], [1, \"mat-slide-toggle-bar\"], [\"toggleBar\", \"\"], [\"type\", \"checkbox\", \"role\", \"switch\", 1, \"mat-slide-toggle-input\", \"cdk-visually-hidden\", 3, \"id\", \"required\", \"tabIndex\", \"checked\", \"disabled\", \"change\", \"click\"], [\"input\", \"\"], [1, \"mat-slide-toggle-thumb-container\"], [\"thumbContainer\", \"\"], [1, \"mat-slide-toggle-thumb\"], [\"mat-ripple\", \"\", 1, \"mat-slide-toggle-ripple\", \"mat-focus-indicator\", 3, \"matRippleTrigger\", \"matRippleDisabled\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\"], [1, \"mat-ripple-element\", \"mat-slide-toggle-persistent-ripple\"], [1, \"mat-slide-toggle-content\", 3, \"cdkObserveContent\"], [\"labelContent\", \"\"], [2, \"display\", \"none\"]], template: function MatSlideToggle_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"label\", 0, 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2, 3);\n ɵngcc0.ɵɵelementStart(4, \"input\", 4, 5);\n ɵngcc0.ɵɵlistener(\"change\", function MatSlideToggle_Template_input_change_4_listener($event) { return ctx._onChangeEvent($event); })(\"click\", function MatSlideToggle_Template_input_click_4_listener($event) { return ctx._onInputClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 6, 7);\n ɵngcc0.ɵɵelement(8, \"div\", 8);\n ɵngcc0.ɵɵelementStart(9, \"div\", 9);\n ɵngcc0.ɵɵelement(10, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"span\", 11, 12);\n ɵngcc0.ɵɵlistener(\"cdkObserveContent\", function MatSlideToggle_Template_span_cdkObserveContent_11_listener() { return ctx._onLabelTextChange(); });\n ɵngcc0.ɵɵelementStart(13, \"span\", 13);\n ɵngcc0.ɵɵtext(14, \"\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(15);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n const _r4 = ɵngcc0.ɵɵreference(12);\n ɵngcc0.ɵɵattribute(\"for\", ctx.inputId);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"mat-slide-toggle-bar-no-side-margin\", !_r4.textContent || !_r4.textContent.trim());\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", ctx.inputId)(\"required\", ctx.required)(\"tabIndex\", ctx.tabIndex)(\"checked\", ctx.checked)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵattribute(\"name\", ctx.name)(\"aria-checked\", ctx.checked.toString())(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx.ariaLabelledby);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"matRippleTrigger\", _r0)(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleCentered\", true)(\"matRippleRadius\", 20)(\"matRippleAnimation\", ɵngcc0.ɵɵpureFunction0(17, _c3));\n } }, directives: [ɵngcc2.MatRipple, ɵngcc3.CdkObserveContent], styles: [\".mat-slide-toggle{display:inline-block;height:24px;max-width:100%;line-height:24px;white-space:nowrap;outline:none;-webkit-tap-highlight-color:transparent}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px, 0, 0)}[dir=rtl] .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(-16px, 0, 0)}.mat-slide-toggle.mat-disabled{opacity:.38}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;height:inherit;cursor:pointer}.mat-slide-toggle-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar,.mat-slide-toggle-bar{margin-right:8px;margin-left:0}[dir=rtl] .mat-slide-toggle-bar,.mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0, 0, 0);transition:all 80ms linear;transition-property:transform}._mat-animation-noopable .mat-slide-toggle-thumb-container{transition:none}[dir=rtl] .mat-slide-toggle-thumb-container{left:auto;right:0}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;flex-shrink:0;border-radius:8px}.mat-slide-toggle-input{bottom:0;left:10px}[dir=rtl] .mat-slide-toggle-input{left:auto;right:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}._mat-animation-noopable .mat-slide-toggle-bar,._mat-animation-noopable .mat-slide-toggle-thumb{transition:none}.mat-slide-toggle .mat-slide-toggle-ripple{position:absolute;top:calc(50% - 20px);left:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-slide-toggle .mat-slide-toggle-ripple .mat-ripple-element:not(.mat-slide-toggle-persistent-ripple){opacity:.12}.mat-slide-toggle-persistent-ripple{width:100%;height:100%;transform:none}.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:.04}.mat-slide-toggle:not(.mat-disabled).cdk-keyboard-focused .mat-slide-toggle-persistent-ripple{opacity:.12}.mat-slide-toggle-persistent-ripple,.mat-slide-toggle.mat-disabled .mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:0}@media(hover: none){.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{display:none}}.cdk-high-contrast-active .mat-slide-toggle-thumb,.cdk-high-contrast-active .mat-slide-toggle-bar{border:1px solid}.cdk-high-contrast-active .mat-slide-toggle.cdk-keyboard-focused .mat-slide-toggle-bar{outline:2px dotted;outline-offset:5px}\\n\"], encapsulation: 2, changeDetection: 0 });\nMatSlideToggle.ctorParameters = () => [\n { type: ElementRef },\n { type: FocusMonitor },\n { type: ChangeDetectorRef },\n { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,] }] },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }\n];\nMatSlideToggle.propDecorators = {\n _thumbEl: [{ type: ViewChild, args: ['thumbContainer',] }],\n _thumbBarEl: [{ type: ViewChild, args: ['toggleBar',] }],\n name: [{ type: Input }],\n id: [{ type: Input }],\n labelPosition: [{ type: Input }],\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],\n required: [{ type: Input }],\n checked: [{ type: Input }],\n change: [{ type: Output }],\n toggleChange: [{ type: Output }],\n _inputElement: [{ type: ViewChild, args: ['input',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSlideToggle, [{\n type: Component,\n args: [{\n selector: 'mat-slide-toggle',\n exportAs: 'matSlideToggle',\n host: {\n 'class': 'mat-slide-toggle',\n '[id]': 'id',\n // Needs to be `-1` so it can still receive programmatic focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-checked]': 'checked',\n '[class.mat-disabled]': 'disabled',\n '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"'\n },\n template: \"\\n\",\n providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-slide-toggle{display:inline-block;height:24px;max-width:100%;line-height:24px;white-space:nowrap;outline:none;-webkit-tap-highlight-color:transparent}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px, 0, 0)}[dir=rtl] .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(-16px, 0, 0)}.mat-slide-toggle.mat-disabled{opacity:.38}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;height:inherit;cursor:pointer}.mat-slide-toggle-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar,.mat-slide-toggle-bar{margin-right:8px;margin-left:0}[dir=rtl] .mat-slide-toggle-bar,.mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0, 0, 0);transition:all 80ms linear;transition-property:transform}._mat-animation-noopable .mat-slide-toggle-thumb-container{transition:none}[dir=rtl] .mat-slide-toggle-thumb-container{left:auto;right:0}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;flex-shrink:0;border-radius:8px}.mat-slide-toggle-input{bottom:0;left:10px}[dir=rtl] .mat-slide-toggle-input{left:auto;right:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}._mat-animation-noopable .mat-slide-toggle-bar,._mat-animation-noopable .mat-slide-toggle-thumb{transition:none}.mat-slide-toggle .mat-slide-toggle-ripple{position:absolute;top:calc(50% - 20px);left:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-slide-toggle .mat-slide-toggle-ripple .mat-ripple-element:not(.mat-slide-toggle-persistent-ripple){opacity:.12}.mat-slide-toggle-persistent-ripple{width:100%;height:100%;transform:none}.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:.04}.mat-slide-toggle:not(.mat-disabled).cdk-keyboard-focused .mat-slide-toggle-persistent-ripple{opacity:.12}.mat-slide-toggle-persistent-ripple,.mat-slide-toggle.mat-disabled .mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:0}@media(hover: none){.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{display:none}}.cdk-high-contrast-active .mat-slide-toggle-thumb,.cdk-high-contrast-active .mat-slide-toggle-bar{border:1px solid}.cdk-high-contrast-active .mat-slide-toggle.cdk-keyboard-focused .mat-slide-toggle-bar{outline:2px dotted;outline-offset:5px}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.FocusMonitor }, { type: ɵngcc0.ChangeDetectorRef }, { type: String, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS]\n }] }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, { name: [{\n type: Input\n }], id: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], change: [{\n type: Output\n }], toggleChange: [{\n type: Output\n }], required: [{\n type: Input\n }], checked: [{\n type: Input\n }], _thumbEl: [{\n type: ViewChild,\n args: ['thumbContainer']\n }], _thumbBarEl: [{\n type: ViewChild,\n args: ['toggleBar']\n }], _inputElement: [{\n type: ViewChild,\n args: ['input']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatSlideToggleRequiredValidator),\n multi: true\n};\n/**\n * Validator for Material slide-toggle components with the required attribute in a\n * template-driven form. The default validator for required form controls asserts\n * that the control value is not undefined but that is not appropriate for a slide-toggle\n * where the value is always defined.\n *\n * Required slide-toggle form controls are valid when checked.\n */\nclass MatSlideToggleRequiredValidator extends CheckboxRequiredValidator {\n}\nMatSlideToggleRequiredValidator.ɵfac = function MatSlideToggleRequiredValidator_Factory(t) { return ɵMatSlideToggleRequiredValidator_BaseFactory(t || MatSlideToggleRequiredValidator); };\nMatSlideToggleRequiredValidator.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatSlideToggleRequiredValidator, selectors: [[\"mat-slide-toggle\", \"required\", \"\", \"formControlName\", \"\"], [\"mat-slide-toggle\", \"required\", \"\", \"formControl\", \"\"], [\"mat-slide-toggle\", \"required\", \"\", \"ngModel\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatSlideToggleRequiredValidator_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatSlideToggleRequiredValidator);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSlideToggleRequiredValidator, [{\n type: Directive,\n args: [{\n selector: `mat-slide-toggle[required][formControlName],\n mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]`,\n providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** This module is used by both original and MDC-based slide-toggle implementations. */\nclass _MatSlideToggleRequiredValidatorModule {\n}\n_MatSlideToggleRequiredValidatorModule.ɵfac = function _MatSlideToggleRequiredValidatorModule_Factory(t) { return new (t || _MatSlideToggleRequiredValidatorModule)(); };\n_MatSlideToggleRequiredValidatorModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: _MatSlideToggleRequiredValidatorModule });\n_MatSlideToggleRequiredValidatorModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(_MatSlideToggleRequiredValidatorModule, { declarations: [MatSlideToggleRequiredValidator], exports: [MatSlideToggleRequiredValidator] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatSlideToggleRequiredValidatorModule, [{\n type: NgModule,\n args: [{\n exports: [MatSlideToggleRequiredValidator],\n declarations: [MatSlideToggleRequiredValidator]\n }]\n }], null, null); })();\nclass MatSlideToggleModule {\n}\nMatSlideToggleModule.ɵfac = function MatSlideToggleModule_Factory(t) { return new (t || MatSlideToggleModule)(); };\nMatSlideToggleModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatSlideToggleModule });\nMatSlideToggleModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[\n _MatSlideToggleRequiredValidatorModule,\n MatRippleModule,\n MatCommonModule,\n ObserversModule,\n ], _MatSlideToggleRequiredValidatorModule, MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatSlideToggleModule, { declarations: function () { return [MatSlideToggle]; }, imports: function () { return [_MatSlideToggleRequiredValidatorModule, MatRippleModule,\n MatCommonModule,\n ObserversModule]; }, exports: function () { return [_MatSlideToggleRequiredValidatorModule, MatSlideToggle, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSlideToggleModule, [{\n type: NgModule,\n args: [{\n imports: [\n _MatSlideToggleRequiredValidatorModule,\n MatRippleModule,\n MatCommonModule,\n ObserversModule,\n ],\n exports: [\n _MatSlideToggleRequiredValidatorModule,\n MatSlideToggle,\n MatCommonModule\n ],\n declarations: [MatSlideToggle]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS, MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR, MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggle, MatSlideToggleChange, MatSlideToggleModule, MatSlideToggleRequiredValidator, _MatSlideToggleRequiredValidatorModule };\n\n//# sourceMappingURL=slide-toggle.js.map","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race(...observables) {\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nexport class RaceOperator {\n call(subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\nexport class RaceSubscriber extends OuterSubscriber {\n constructor(destination) {\n super(destination);\n this.hasFirst = false;\n this.observables = [];\n this.subscriptions = [];\n }\n _next(observable) {\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n }\n}\n//# sourceMappingURL=race.js.map","import { Injectable, Component, Input, TemplateRef, Output, EventEmitter, ViewEncapsulation, ChangeDetectionStrategy, Inject, InjectionToken, LOCALE_ID, NgModule, ChangeDetectorRef, ContentChildren, Directive, NgZone, PLATFORM_ID, Injector, Renderer2, ElementRef, ViewContainerRef, ComponentFactoryResolver, ApplicationRef, ContentChild, forwardRef, Optional, Host, defineInjectable, inject, RendererFactory2, INJECTOR, ViewChild } from '@angular/core';\nimport { CommonModule, isPlatformBrowser, FormStyle, getLocaleDayNames, getLocaleMonthNames, TranslationWidth, formatDate, DOCUMENT } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport { merge, Subject, timer, fromEvent, race, Observable, BehaviorSubject } from 'rxjs';\nimport { filter, map, switchMap, takeUntil, take, delay, withLatestFrom, share, tap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} value\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/forms';\n\nfunction NgbAccordion_ng_template_0_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_0_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r3 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngbPanelToggle\", panel_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", panel_r3.title, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r3.titleTpl == null ? null : panel_r3.titleTpl.templateRef);\n} }\nfunction NgbAccordion_ng_template_2_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_div_3_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵclassProp(\"show\", panel_r5.isOpen);\n ɵngcc0.ɵɵpropertyInterpolate(\"id\", panel_r5.id);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", panel_r5.id + \"-header\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r5.contentTpl == null ? null : panel_r5.contentTpl.templateRef);\n} }\nconst _c0 = function (a0, a1) { return { $implicit: a0, opened: a1 }; };\nfunction NgbAccordion_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵelementStart(1, \"div\", 6);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbAccordion_ng_template_2_div_3_Template, 3, 5, \"div\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMap(\"card-header \" + (panel_r5.type ? \"bg-\" + panel_r5.type : ctx_r2.type ? \"bg-\" + ctx_r2.type : \"\"));\n ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", panel_r5.id, \"-header\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.headerTpl == null ? null : panel_r5.headerTpl.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c0, panel_r5, panel_r5.isOpen));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.destroyOnHide || panel_r5.isOpen);\n} }\nfunction NgbAlert_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbAlert_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.closeHandler(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 2);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c3 = [\"*\"];\nfunction NgbCarousel_ol_0_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_ol_0_li_1_Template_li_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r7); const slide_r5 = ctx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(2); ctx_r6.select(slide_r5.id); return ctx_r6.pauseOnHover && ctx_r6.pause(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r5 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"active\", slide_r5.id === ctx_r4.activeId);\n ɵngcc0.ɵɵproperty(\"id\", slide_r5.id);\n} }\nfunction NgbCarousel_ol_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ol\", 5);\n ɵngcc0.ɵɵtemplate(1, NgbCarousel_ol_0_li_1_Template, 1, 3, \"li\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.slides);\n} }\nfunction NgbCarousel_div_2_ng_template_1_Template(rf, ctx) { }\nfunction NgbCarousel_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbCarousel_div_2_ng_template_1_Template, 0, 0, \"ng-template\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r8 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", slide_r8.id === ctx_r1.activeId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", slide_r8.tplRef);\n} }\nfunction NgbCarousel_a_3_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_3_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.prev(); });\n ɵngcc0.ɵɵelement(1, \"span\", 11);\n ɵngcc0.ɵɵelementStart(2, \"span\", 12);\n ɵngcc0.ɵɵi18n(3, 13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbCarousel_a_4_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_4_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.next(); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 12);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c8 = [\"months\"];\nfunction NgbDatepicker_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const date_r6 = ctx.date;\n const currentMonth_r7 = ctx.currentMonth;\n const selected_r8 = ctx.selected;\n const disabled_r9 = ctx.disabled;\n const focused_r10 = ctx.focused;\n ɵngcc0.ɵɵproperty(\"date\", date_r6)(\"currentMonth\", currentMonth_r7)(\"selected\", selected_r8)(\"disabled\", disabled_r9)(\"focused\", focused_r10);\n} }\nfunction NgbDatepicker_ngb_datepicker_navigation_3_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation\", 8);\n ɵngcc0.ɵɵlistener(\"navigate\", function NgbDatepicker_ngb_datepicker_navigation_3_Template_ngb_datepicker_navigation_navigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onNavigateEvent($event); })(\"select\", function NgbDatepicker_ngb_datepicker_navigation_3_Template_ngb_datepicker_navigation_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onNavigateDateSelect($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r2.model.firstDate)(\"months\", ctx_r2.model.months)(\"disabled\", ctx_r2.model.disabled)(\"showSelect\", ctx_r2.model.navigation === \"select\")(\"prevDisabled\", ctx_r2.model.prevDisabled)(\"nextDisabled\", ctx_r2.model.nextDisabled)(\"selectBoxes\", ctx_r2.model.selectBoxes);\n} }\nfunction NgbDatepicker_ng_template_6_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r16.i18n.getMonthFullName(month_r14.number, month_r14.year), \" \", ctx_r16.i18n.getYearNumerals(month_r14.year), \" \");\n} }\nfunction NgbDatepicker_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵtemplate(1, NgbDatepicker_ng_template_6_div_1_Template, 2, 2, \"div\", 10);\n ɵngcc0.ɵɵelementStart(2, \"ngb-datepicker-month-view\", 11);\n ɵngcc0.ɵɵlistener(\"select\", function NgbDatepicker_ng_template_6_Template_ngb_datepicker_month_view_select_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.onDateSelect($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.navigation === \"none\" || ctx_r4.displayMonths > 1 && ctx_r4.navigation === \"select\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"month\", month_r14)(\"dayTemplate\", ctx_r4.dayTemplate || _r0)(\"showWeekdays\", ctx_r4.showWeekdays)(\"showWeekNumbers\", ctx_r4.showWeekNumbers);\n} }\nfunction NgbDatepicker_ng_template_7_Template(rf, ctx) { }\nfunction NgbDatepickerMonthView_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 5);\n} }\nfunction NgbDatepickerMonthView_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const w_r4 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.i18n.getWeekdayShortName(w_r4), \" \");\n} }\nfunction NgbDatepickerMonthView_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonthView_div_0_div_1_Template, 1, 0, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonthView_div_0_div_2_Template, 2, 1, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.month.weekdays);\n} }\nfunction NgbDatepickerMonthView_ng_template_1_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r7.i18n.getWeekNumerals(week_r5.number));\n} }\nfunction NgbDatepickerMonthView_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template(rf, ctx) { }\nfunction NgbDatepickerMonthView_ng_template_1_div_0_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonthView_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const day_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.dayTemplate)(\"ngTemplateOutletContext\", day_r10.context);\n} }\nfunction NgbDatepickerMonthView_ng_template_1_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerMonthView_ng_template_1_div_0_div_2_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const day_r10 = ctx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(3); return ctx_r14.doSelect(day_r10); });\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonthView_ng_template_1_div_0_div_2_ng_template_1_Template, 1, 2, \"ng-template\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r10 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"disabled\", day_r10.context.disabled)(\"hidden\", day_r10.hidden)(\"ngb-dp-today\", day_r10.context.today);\n ɵngcc0.ɵɵproperty(\"tabindex\", day_r10.tabindex);\n ɵngcc0.ɵɵattribute(\"aria-label\", day_r10.ariaLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !day_r10.hidden);\n} }\nfunction NgbDatepickerMonthView_ng_template_1_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonthView_ng_template_1_div_0_div_1_Template, 2, 1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonthView_ng_template_1_div_0_div_2_Template, 2, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", week_r5.days);\n} }\nfunction NgbDatepickerMonthView_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonthView_ng_template_1_div_0_Template, 3, 2, \"div\", 7);\n} if (rf & 2) {\n const week_r5 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", !week_r5.collapsed);\n} }\nfunction NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation-select\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.select.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r0.date)(\"disabled\", ctx_r0.disabled)(\"months\", ctx_r0.selectBoxes.months)(\"years\", ctx_r0.selectBoxes.years);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_div_0_Template, 1, 0, \"div\", 9);\n ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_4_ng_template_0_div_3_Template, 1, 0, \"div\", 9);\n} if (rf & 2) {\n const month_r5 = ctx.$implicit;\n const i_r6 = ctx.index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r4.i18n.getMonthFullName(month_r5.number, month_r5.year), \" \", ctx_r4.i18n.getYearNumerals(month_r5.year), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 !== ctx_r4.months.length - 1);\n} }\nfunction NgbDatepickerNavigation_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_Template, 4, 4, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.months);\n} }\nconst _c17 = [\"ngbDatepickerDayView\", \"\"];\nfunction NgbDatepickerNavigationSelect_option_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const m_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", m_r2);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r0.i18n.getMonthFullName(m_r2, ctx_r0.date == null ? null : ctx_r0.date.year));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.i18n.getMonthShortName(m_r2, ctx_r0.date == null ? null : ctx_r0.date.year));\n} }\nfunction NgbDatepickerNavigationSelect_option_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const y_r3 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", y_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.i18n.getYearNumerals(y_r3));\n} }\nfunction NgbPagination_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 9);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 11);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵi18n(1, 12);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0, \"...\");\n} }\nfunction NgbPagination_ng_template_10_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 14);\n ɵngcc0.ɵɵtext(1, \"(current)\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_10_span_1_Template, 2, 0, \"span\", 13);\n} if (rf & 2) {\n const page_r17 = ctx.$implicit;\n const currentPage_r18 = ctx.currentPage;\n ɵngcc0.ɵɵtextInterpolate1(\" \", page_r17, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", page_r17 === currentPage_r18);\n} }\nfunction NgbPagination_li_13_ng_template_2_Template(rf, ctx) { }\nconst _c36 = function (a0, a1) { return { disabled: a0, currentPage: a1 }; };\nfunction NgbPagination_li_13_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15);\n ɵngcc0.ɵɵelementStart(1, \"a\", 16);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_13_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); ctx_r21.selectPage(1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_13_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r12.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r12.hasPrevious() ? null : \"-1\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r12.tplFirst == null ? null : ctx_r12.tplFirst.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(5, _c36, ctx_r12.previousDisabled(), ctx_r12.page));\n} }\nfunction NgbPagination_li_14_ng_template_2_Template(rf, ctx) { }\nconst _c39 = function (a0) { return { disabled: a0 }; };\nfunction NgbPagination_li_14_Template(rf, ctx) { if (rf & 1) {\n const _r25 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15);\n ɵngcc0.ɵɵelementStart(1, \"a\", 18);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_14_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r25); const ctx_r24 = ɵngcc0.ɵɵnextContext(); ctx_r24.selectPage(ctx_r24.page - 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_14_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext();\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r13.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r13.hasPrevious() ? null : \"-1\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r13.tplPrevious == null ? null : ctx_r13.tplPrevious.templateRef) || _r2)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(5, _c39, ctx_r13.previousDisabled()));\n} }\nfunction NgbPagination_li_15_a_1_ng_template_1_Template(rf, ctx) { }\nconst _c40 = function (a1) { return { disabled: true, currentPage: a1 }; };\nfunction NgbPagination_li_15_a_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 21);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_li_15_a_1_ng_template_1_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r27 = ɵngcc0.ɵɵnextContext(2);\n const _r8 = ɵngcc0.ɵɵreference(9);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r27.tplEllipsis == null ? null : ctx_r27.tplEllipsis.templateRef) || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c40, ctx_r27.page));\n} }\nfunction NgbPagination_li_15_a_2_ng_template_1_Template(rf, ctx) { }\nconst _c41 = function (a0, a1, a2) { return { disabled: a0, $implicit: a1, currentPage: a2 }; };\nfunction NgbPagination_li_15_a_2_Template(rf, ctx) { if (rf & 1) {\n const _r33 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 22);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_15_a_2_Template_a_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r33); const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r31 = ɵngcc0.ɵɵnextContext(); ctx_r31.selectPage(pageNumber_r26); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbPagination_li_15_a_2_ng_template_1_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r28 = ɵngcc0.ɵɵnextContext();\n const _r10 = ɵngcc0.ɵɵreference(11);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r28.tplNumber == null ? null : ctx_r28.tplNumber.templateRef) || _r10)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c41, ctx_r28.disabled, pageNumber_r26, ctx_r28.page));\n} }\nfunction NgbPagination_li_15_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 15);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_li_15_a_1_Template, 2, 4, \"a\", 19);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_15_a_2_Template, 2, 6, \"a\", 20);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ctx.$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", pageNumber_r26 === ctx_r14.page)(\"disabled\", ctx_r14.isEllipsis(pageNumber_r26) || ctx_r14.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r14.isEllipsis(pageNumber_r26));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r14.isEllipsis(pageNumber_r26));\n} }\nfunction NgbPagination_li_16_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_16_Template(rf, ctx) { if (rf & 1) {\n const _r37 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15);\n ɵngcc0.ɵɵelementStart(1, \"a\", 23);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_16_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r37); const ctx_r36 = ɵngcc0.ɵɵnextContext(); ctx_r36.selectPage(ctx_r36.page + 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_16_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n const _r4 = ɵngcc0.ɵɵreference(5);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r15.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r15.hasNext() ? null : \"-1\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r15.tplNext == null ? null : ctx_r15.tplNext.templateRef) || _r4)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(5, _c36, ctx_r15.nextDisabled(), ctx_r15.page));\n} }\nfunction NgbPagination_li_17_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_17_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 15);\n ɵngcc0.ɵɵelementStart(1, \"a\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_17_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(); ctx_r39.selectPage(ctx_r39.pageCount); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_17_ng_template_2_Template, 0, 0, \"ng-template\", 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n const _r6 = ɵngcc0.ɵɵreference(7);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r16.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r16.hasNext() ? null : \"-1\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r16.tplLast == null ? null : ctx_r16.tplLast.templateRef) || _r6)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(5, _c36, ctx_r16.nextDisabled(), ctx_r16.page));\n} }\nfunction NgbPopoverWindow_h3_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.title);\n} }\nfunction NgbPopoverWindow_h3_1_ng_template_3_Template(rf, ctx) { }\nfunction NgbPopoverWindow_h3_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"h3\", 3);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_ng_template_1_Template, 1, 1, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgbPopoverWindow_h3_1_ng_template_3_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r1 = ɵngcc0.ɵɵreference(2);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.isTitleTemplate() ? ctx_r0.title : _r1)(\"ngTemplateOutletContext\", ctx_r0.context);\n} }\nfunction NgbProgressbar_span_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵi18n(1, 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵi18nExp(ctx_r0.getPercentValue());\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbRating_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const fill_r3 = ctx.fill;\n ɵngcc0.ɵɵtextInterpolate(fill_r3 === 100 ? \"\\u2605\" : \"\\u2606\");\n} }\nfunction NgbRating_ng_template_2_ng_template_3_Template(rf, ctx) { }\nfunction NgbRating_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbRating_ng_template_2_Template_span_mouseenter_2_listener() { ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = ctx.index; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.enter(index_r4 + 1); })(\"click\", function NgbRating_ng_template_2_Template_span_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = ctx.index; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleClick(index_r4 + 1); });\n ɵngcc0.ɵɵtemplate(3, NgbRating_ng_template_2_ng_template_3_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const index_r4 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", index_r4 < ctx_r2.nextRate ? \"*\" : \" \", \")\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"cursor\", ctx_r2.readonly || ctx_r2.disabled ? \"default\" : \"pointer\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.starTemplate || ctx_r2.starTemplateFromContent || _r0)(\"ngTemplateOutletContext\", ctx_r2.contexts[index_r4]);\n} }\nfunction NgbTabset_li_1_ng_template_3_Template(rf, ctx) { }\nfunction NgbTabset_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 4);\n ɵngcc0.ɵɵelementStart(1, \"a\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTabset_li_1_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const tab_r2 = ctx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); ctx_r4.select(tab_r2.id); return $event.preventDefault(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵtemplate(3, NgbTabset_li_1_ng_template_3_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tab_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", tab_r2.id === ctx_r0.activeId)(\"disabled\", tab_r2.disabled);\n ɵngcc0.ɵɵproperty(\"id\", tab_r2.id);\n ɵngcc0.ɵɵattribute(\"tabindex\", tab_r2.disabled ? \"-1\" : undefined)(\"aria-controls\", !ctx_r0.destroyOnHide || tab_r2.id === ctx_r0.activeId ? tab_r2.id + \"-panel\" : null)(\"aria-selected\", tab_r2.id === ctx_r0.activeId)(\"aria-disabled\", tab_r2.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", tab_r2.title, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", tab_r2.titleTpl == null ? null : tab_r2.titleTpl.templateRef);\n} }\nfunction NgbTabset_ng_template_3_div_0_ng_template_1_Template(rf, ctx) { }\nfunction NgbTabset_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbTabset_ng_template_3_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tab_r6 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMapInterpolate1(\"tab-pane \", tab_r6.id === ctx_r7.activeId ? \"active\" : null, \"\");\n ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", tab_r6.id, \"-panel\");\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", tab_r6.id);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", tab_r6.contentTpl == null ? null : tab_r6.contentTpl.templateRef);\n} }\nfunction NgbTabset_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbTabset_ng_template_3_div_0_Template, 2, 6, \"div\", 7);\n} if (rf & 2) {\n const tab_r6 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.destroyOnHide || tab_r6.id === ctx_r1.activeId);\n} }\nfunction NgbTimepicker_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.changeHour(ctx_r8.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r0.isSmallSize)(\"btn-lg\", ctx_r0.isLargeSize)(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n} }\nfunction NgbTimepicker_button_5_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_5_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.changeHour(-ctx_r10.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n} }\nfunction NgbTimepicker_button_9_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_9_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.changeMinute(ctx_r12.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r2.isSmallSize)(\"btn-lg\", ctx_r2.isLargeSize)(\"disabled\", ctx_r2.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled);\n} }\nfunction NgbTimepicker_button_11_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_11_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.changeMinute(-ctx_r14.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r3.isSmallSize)(\"btn-lg\", ctx_r3.isLargeSize)(\"disabled\", ctx_r3.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled);\n} }\nfunction NgbTimepicker_div_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1, \":\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbTimepicker_div_13_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.changeSecond(ctx_r18.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 21);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r16.isSmallSize)(\"btn-lg\", ctx_r16.isLargeSize)(\"disabled\", ctx_r16.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r16.disabled);\n} }\nfunction NgbTimepicker_div_13_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.changeSecond(-ctx_r20.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 22);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r17.isSmallSize)(\"btn-lg\", ctx_r17.isLargeSize)(\"disabled\", ctx_r17.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r17.disabled);\n} }\nfunction NgbTimepicker_div_13_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtemplate(1, NgbTimepicker_div_13_button_1_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(2, \"input\", 20);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_div_13_Template_input_change_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.updateSecond($event.target.value); })(\"keydown.ArrowUp\", function NgbTimepicker_div_13_Template_input_keydown_ArrowUp_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(); ctx_r24.changeSecond(ctx_r24.secondStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_div_13_Template_input_keydown_ArrowDown_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(); ctx_r25.changeSecond(-ctx_r25.secondStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_13_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx_r5.isSmallSize)(\"form-control-lg\", ctx_r5.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r5.formatMinSec(ctx_r5.model == null ? null : ctx_r5.model.second))(\"readOnly\", ctx_r5.readonlyInputs)(\"disabled\", ctx_r5.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n} }\nfunction NgbTimepicker_div_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 5);\n} }\nfunction NgbTimepicker_div_15_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵi18n(1, 27);\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction NgbTimepicker_div_15_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵi18n(0, 28);\n} }\nfunction NgbTimepicker_div_15_Template(rf, ctx) { if (rf & 1) {\n const _r30 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23);\n ɵngcc0.ɵɵelementStart(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_15_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r30); const ctx_r29 = ɵngcc0.ɵɵnextContext(); return ctx_r29.toggleMeridian(); });\n ɵngcc0.ɵɵtemplate(2, NgbTimepicker_div_15_ng_container_2_Template, 2, 0, \"ng-container\", 25);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_15_ng_template_3_Template, 1, 0, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r27 = ɵngcc0.ɵɵreference(4);\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r7.isSmallSize)(\"btn-lg\", ctx_r7.isLargeSize)(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (ctx_r7.model == null ? null : ctx_r7.model.hour) >= 12)(\"ngIfElse\", _r27);\n} }\nfunction NgbHighlight_ng_template_0_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.highlightClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_span_0_Template, 2, 3, \"span\", 1);\n ɵngcc0.ɵɵtemplate(1, NgbHighlight_ng_template_0_ng_template_1_Template, 1, 1, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n} if (rf & 2) {\n const isOdd_r2 = ctx.odd;\n const _r4 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", isOdd_r2)(\"ngIfElse\", _r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ngb-highlight\", 2);\n} if (rf & 2) {\n const result_r3 = ctx.result;\n const term_r4 = ctx.term;\n const formatter_r5 = ctx.formatter;\n ɵngcc0.ɵɵproperty(\"result\", formatter_r5(result_r3))(\"term\", term_r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_2_ng_template_1_Template(rf, ctx) { }\nconst _c76 = function (a0, a1, a2) { return { result: a0, term: a1, formatter: a2 }; };\nfunction NgbTypeaheadWindow_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbTypeaheadWindow_ng_template_2_Template_button_mouseenter_0_listener() { ɵngcc0.ɵɵrestoreView(_r10); const idx_r7 = ctx.index; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.markActive(idx_r7); })(\"click\", function NgbTypeaheadWindow_ng_template_2_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r10); const result_r6 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.select(result_r6); });\n ɵngcc0.ɵɵtemplate(1, NgbTypeaheadWindow_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const result_r6 = ctx.$implicit;\n const idx_r7 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"active\", idx_r7 === ctx_r2.activeIdx);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r2.id + \"-\" + idx_r7);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.resultTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(5, _c76, result_r6, ctx_r2.term, ctx_r2.formatter));\n} }\nfunction toInteger(value) {\n return parseInt(`${value}`, 10);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toString(value) {\n return (value !== undefined && value !== null) ? `${value}` : '';\n}\n/**\n * @param {?} value\n * @param {?} max\n * @param {?=} min\n * @return {?}\n */\nfunction getValueInRange(value, max, min = 0) {\n return Math.max(Math.min(value, max), min);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction padNumber(value) {\n if (isNumber(value)) {\n return `0${value}`.slice(-2);\n }\n else {\n return '';\n }\n}\n/**\n * @param {?} text\n * @return {?}\n */\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nfunction hasClassName(element, className) {\n return element && element.className && element.className.split &&\n element.className.split(/\\s+/).indexOf(className) >= 0;\n}\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\n // Polyfill for ie10+\n if (!Element.prototype.matches) {\n // IE uses the non-standard name: msMatchesSelector\n Element.prototype.matches = ((/** @type {?} */ (Element.prototype))).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n Element.prototype.closest = function (s) {\n /** @type {?} */\n let el = this;\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (el.matches(s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\n/**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n return element.closest(selector);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nclass NgbAccordionConfig {\n constructor() {\n this.closeOthers = false;\n }\n}\nNgbAccordionConfig.ɵfac = function NgbAccordionConfig_Factory(t) { return new (t || NgbAccordionConfig)(); };\nNgbAccordionConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbAccordionConfig, factory: NgbAccordionConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbAccordionConfig.ngInjectableDef = defineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(); }, token: NgbAccordionConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nlet nextId = 0;\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * \\@since 4.1.0\n */\nclass NgbPanelToggle {\n /**\n * @param {?} accordion\n * @param {?} panel\n */\n constructor(accordion, panel) {\n this.accordion = accordion;\n this.panel = panel;\n }\n /**\n * @param {?} panel\n * @return {?}\n */\n set ngbPanelToggle(panel) {\n if (panel) {\n this.panel = panel;\n }\n }\n}\nNgbPanelToggle.ɵfac = function NgbPanelToggle_Factory(t) { return new (t || NgbPanelToggle)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbAccordion)), ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbPanel), 9)); };\nNgbPanelToggle.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPanelToggle, selectors: [[\"button\", \"ngbPanelToggle\", \"\"]], hostAttrs: [\"type\", \"button\"], hostVars: 5, hostBindings: function NgbPanelToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbPanelToggle_click_HostBindingHandler() { return ctx.accordion.toggle(ctx.panel.id); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.panel.disabled);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.panel.isOpen)(\"aria-controls\", ctx.panel.id);\n ɵngcc0.ɵɵclassProp(\"collapsed\", !ctx.panel.isOpen);\n } }, inputs: { ngbPanelToggle: \"ngbPanelToggle\" } });\n/** @nocollapse */\nNgbPanelToggle.ctorParameters = () => [\n { type: NgbAccordion, decorators: [{ type: Inject, args: [forwardRef(() => NgbAccordion),] }] },\n { type: NgbPanel, decorators: [{ type: Optional }, { type: Host }, { type: Inject, args: [forwardRef(() => NgbPanel),] }] }\n];\nNgbPanelToggle.propDecorators = {\n ngbPanelToggle: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelToggle, [{\n type: Directive,\n args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n }]\n }], function () { return [{ type: NgbAccordion, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbAccordion)]\n }] }, { type: NgbPanel, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: Inject,\n args: [forwardRef(() => NgbPanel)]\n }] }]; }, { ngbPanelToggle: [{\n type: Input\n }] }); })();\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * \\@since 4.1.0\n */\nclass NgbPanelHeader {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelHeader.ɵfac = function NgbPanelHeader_Factory(t) { return new (t || NgbPanelHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelHeader.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPanelHeader, selectors: [[\"ng-template\", \"ngbPanelHeader\", \"\"]] });\n/** @nocollapse */\nNgbPanelHeader.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelHeader, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelHeader]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nclass NgbPanelTitle {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelTitle.ɵfac = function NgbPanelTitle_Factory(t) { return new (t || NgbPanelTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelTitle.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPanelTitle, selectors: [[\"ng-template\", \"ngbPanelTitle\", \"\"]] });\n/** @nocollapse */\nNgbPanelTitle.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelTitle, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelTitle]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive that wraps the accordion panel content.\n */\nclass NgbPanelContent {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelContent.ɵfac = function NgbPanelContent_Factory(t) { return new (t || NgbPanelContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelContent.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPanelContent, selectors: [[\"ng-template\", \"ngbPanelContent\", \"\"]] });\n/** @nocollapse */\nNgbPanelContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nclass NgbPanel {\n constructor() {\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n this.disabled = false;\n /**\n * An optional id for the panel that must be unique on the page.\n *\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n */\n this.id = `ngb-panel-${nextId++}`;\n this.isOpen = false;\n }\n /**\n * @return {?}\n */\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n}\nNgbPanel.ɵfac = function NgbPanel_Factory(t) { return new (t || NgbPanel)(); };\nNgbPanel.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPanel, selectors: [[\"ngb-panel\"]], contentQueries: function NgbPanel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelTitle, 0);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelHeader, 0);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelContent, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, inputs: { disabled: \"disabled\", id: \"id\", title: \"title\", type: \"type\" } });\nNgbPanel.propDecorators = {\n disabled: [{ type: Input }],\n id: [{ type: Input }],\n title: [{ type: Input }],\n type: [{ type: Input }],\n titleTpls: [{ type: ContentChildren, args: [NgbPanelTitle, { descendants: false },] }],\n headerTpls: [{ type: ContentChildren, args: [NgbPanelHeader, { descendants: false },] }],\n contentTpls: [{ type: ContentChildren, args: [NgbPanelContent, { descendants: false },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanel, [{\n type: Directive,\n args: [{ selector: 'ngb-panel' }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], title: [{\n type: Input\n }], type: [{\n type: Input\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbPanelTitle, { descendants: false }]\n }], headerTpls: [{\n type: ContentChildren,\n args: [NgbPanelHeader, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbPanelContent, { descendants: false }]\n }] }); })();\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nclass NgbAccordion {\n /**\n * @param {?} config\n */\n constructor(config) {\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n *\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n * the `(panelChange)` event.\n */\n this.activeIds = [];\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n this.destroyOnHide = true;\n /**\n * Event emitted right before the panel toggle happens.\n *\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n */\n this.panelChange = new EventEmitter();\n this.type = config.type;\n this.closeOtherPanels = config.closeOthers;\n }\n /**\n * Checks if a panel with a given id is expanded.\n * @param {?} panelId\n * @return {?}\n */\n isExpanded(panelId) { return this.activeIds.indexOf(panelId) > -1; }\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n * @param {?} panelId\n * @return {?}\n */\n expand(panelId) { this._changeOpenState(this._findPanelById(panelId), true); }\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n * @return {?}\n */\n expandAll() {\n if (this.closeOtherPanels) {\n if (this.activeIds.length === 0 && this.panels.length) {\n this._changeOpenState(this.panels.first, true);\n }\n }\n else {\n this.panels.forEach(panel => this._changeOpenState(panel, true));\n }\n }\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n * @param {?} panelId\n * @return {?}\n */\n collapse(panelId) { this._changeOpenState(this._findPanelById(panelId), false); }\n /**\n * Collapses all opened panels.\n * @return {?}\n */\n collapseAll() {\n this.panels.forEach((panel) => { this._changeOpenState(panel, false); });\n }\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n * @param {?} panelId\n * @return {?}\n */\n toggle(panelId) {\n /** @type {?} */\n const panel = this._findPanelById(panelId);\n if (panel) {\n this._changeOpenState(panel, !panel.isOpen);\n }\n }\n /**\n * @return {?}\n */\n ngAfterContentChecked() {\n // active id updates\n if (isString(this.activeIds)) {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n // update panels open states\n this.panels.forEach(panel => panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1);\n // closeOthers updates\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\n this._closeOthers(this.activeIds[0]);\n this._updateActiveIds();\n }\n }\n /**\n * @param {?} panel\n * @param {?} nextState\n * @return {?}\n */\n _changeOpenState(panel, nextState) {\n if (panel && !panel.disabled && panel.isOpen !== nextState) {\n /** @type {?} */\n let defaultPrevented = false;\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: () => { defaultPrevented = true; } });\n if (!defaultPrevented) {\n panel.isOpen = nextState;\n if (nextState && this.closeOtherPanels) {\n this._closeOthers(panel.id);\n }\n this._updateActiveIds();\n }\n }\n }\n /**\n * @param {?} panelId\n * @return {?}\n */\n _closeOthers(panelId) {\n this.panels.forEach(panel => {\n if (panel.id !== panelId) {\n panel.isOpen = false;\n }\n });\n }\n /**\n * @param {?} panelId\n * @return {?}\n */\n _findPanelById(panelId) { return this.panels.find(p => p.id === panelId); }\n /**\n * @return {?}\n */\n _updateActiveIds() {\n this.activeIds = this.panels.filter(panel => panel.isOpen && !panel.disabled).map(panel => panel.id);\n }\n}\nNgbAccordion.ɵfac = function NgbAccordion_Factory(t) { return new (t || NgbAccordion)(ɵngcc0.ɵɵdirectiveInject(NgbAccordionConfig)); };\nNgbAccordion.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbAccordion, selectors: [[\"ngb-accordion\"]], contentQueries: function NgbAccordion_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanel, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panels = _t);\n } }, hostAttrs: [\"role\", \"tablist\", 1, \"accordion\"], hostVars: 1, hostBindings: function NgbAccordion_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", !ctx.closeOtherPanels);\n } }, inputs: { activeIds: \"activeIds\", destroyOnHide: \"destroyOnHide\", type: \"type\", closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"] }, outputs: { panelChange: \"panelChange\" }, exportAs: [\"ngbAccordion\"], decls: 3, vars: 1, consts: [[\"ngbPanelHeader\", \"\"], [\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"btn\", \"btn-link\", 3, \"ngbPanelToggle\"], [3, \"ngTemplateOutlet\"], [1, \"card\"], [\"role\", \"tab\", 3, \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"tabpanel\", \"class\", \"collapse\", 3, \"id\", \"show\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 1, \"collapse\", 3, \"id\"], [1, \"card-body\"]], template: function NgbAccordion_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbAccordion_ng_template_0_Template, 3, 3, \"ng-template\", 0, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_Template, 4, 9, \"ng-template\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.panels);\n } }, directives: [NgbPanelHeader, ɵngcc1.NgForOf, NgbPanelToggle, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgIf], encapsulation: 2 });\n/** @nocollapse */\nNgbAccordion.ctorParameters = () => [\n { type: NgbAccordionConfig }\n];\nNgbAccordion.propDecorators = {\n panels: [{ type: ContentChildren, args: [NgbPanel,] }],\n activeIds: [{ type: Input }],\n closeOtherPanels: [{ type: Input, args: ['closeOthers',] }],\n destroyOnHide: [{ type: Input }],\n type: [{ type: Input }],\n panelChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordion, [{\n type: Component,\n args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: `\n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n `\n }]\n }], function () { return [{ type: NgbAccordionConfig }]; }, { activeIds: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], type: [{\n type: Input\n }], closeOtherPanels: [{\n type: Input,\n args: ['closeOthers']\n }], panels: [{\n type: ContentChildren,\n args: [NgbPanel]\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\nclass NgbAccordionModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbAccordionModule }; }\n}\nNgbAccordionModule.ɵfac = function NgbAccordionModule_Factory(t) { return new (t || NgbAccordionModule)(); };\nNgbAccordionModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbAccordionModule });\nNgbAccordionModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAccordionModule, { declarations: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionModule, [{\n type: NgModule,\n args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nclass NgbAlertConfig {\n constructor() {\n this.dismissible = true;\n this.type = 'warning';\n }\n}\nNgbAlertConfig.ɵfac = function NgbAlertConfig_Factory(t) { return new (t || NgbAlertConfig)(); };\nNgbAlertConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbAlertConfig, factory: NgbAlertConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbAlertConfig.ngInjectableDef = defineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(); }, token: NgbAlertConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nclass NgbAlert {\n /**\n * @param {?} config\n * @param {?} _renderer\n * @param {?} _element\n */\n constructor(config, _renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n */\n this.close = new EventEmitter();\n this.dismissible = config.dismissible;\n this.type = config.type;\n }\n /**\n * @return {?}\n */\n closeHandler() { this.close.emit(null); }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n /** @type {?} */\n const typeChange = changes['type'];\n if (typeChange && !typeChange.firstChange) {\n this._renderer.removeClass(this._element.nativeElement, `alert-${typeChange.previousValue}`);\n this._renderer.addClass(this._element.nativeElement, `alert-${typeChange.currentValue}`);\n }\n }\n /**\n * @return {?}\n */\n ngOnInit() { this._renderer.addClass(this._element.nativeElement, `alert-${this.type}`); }\n}\nNgbAlert.ɵfac = function NgbAlert_Factory(t) { return new (t || NgbAlert)(ɵngcc0.ɵɵdirectiveInject(NgbAlertConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbAlert.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbAlert, selectors: [[\"ngb-alert\"]], hostAttrs: [\"role\", \"alert\", 1, \"alert\"], hostVars: 2, hostBindings: function NgbAlert_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"alert-dismissible\", ctx.dismissible);\n } }, inputs: { dismissible: \"dismissible\", type: \"type\" }, outputs: { close: \"close\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 2, vars: 1, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2 = goog.getMsg(\"Close\");\n i18n_1 = MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2;\n }\n else {\n i18n_1 = $localize `:@@ngb.alert.close␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"type\", \"button\", \"class\", \"close\", \"aria-label\", i18n_1, 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", i18n_1, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbAlert_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, NgbAlert_button_1_Template, 3, 0, \"button\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dismissible);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-alert{display:block}\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbAlert.ctorParameters = () => [\n { type: NgbAlertConfig },\n { type: Renderer2 },\n { type: ElementRef }\n];\nNgbAlert.propDecorators = {\n dismissible: [{ type: Input }],\n type: [{ type: Input }],\n close: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlert, [{\n type: Component,\n args: [{\n selector: 'ngb-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'role': 'alert', 'class': 'alert', '[class.alert-dismissible]': 'dismissible' },\n template: `\n \n \n `,\n styles: [\"ngb-alert{display:block}\"]\n }]\n }], function () { return [{ type: NgbAlertConfig }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, { close: [{\n type: Output\n }], dismissible: [{\n type: Input\n }], type: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbAlertModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbAlertModule }; }\n}\nNgbAlertModule.ɵfac = function NgbAlertModule_Factory(t) { return new (t || NgbAlertModule)(); };\nNgbAlertModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbAlertModule });\nNgbAlertModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAlertModule, { declarations: function () { return [NgbAlert]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAlert]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertModule, [{\n type: NgModule,\n args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule], entryComponents: [NgbAlert] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbButtonLabel {\n}\nNgbButtonLabel.ɵfac = function NgbButtonLabel_Factory(t) { return new (t || NgbButtonLabel)(); };\nNgbButtonLabel.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbButtonLabel, selectors: [[\"\", \"ngbButtonLabel\", \"\"]], hostVars: 8, hostBindings: function NgbButtonLabel_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"btn\", true)(\"active\", ctx.active)(\"disabled\", ctx.disabled)(\"focus\", ctx.focused);\n } } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonLabel, [{\n type: Directive,\n args: [{\n selector: '[ngbButtonLabel]',\n host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbCheckBox),\n multi: true\n};\n/**\n * Allows to easily create Bootstrap-style checkbox buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nclass NgbCheckBox {\n /**\n * @param {?} _label\n * @param {?} _cd\n */\n constructor(_label, _cd) {\n this._label = _label;\n this._cd = _cd;\n /**\n * If `true`, the checkbox button will be disabled\n */\n this.disabled = false;\n /**\n * The form control value when the checkbox is checked.\n */\n this.valueChecked = true;\n /**\n * The form control value when the checkbox is unchecked.\n */\n this.valueUnChecked = false;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n }\n /**\n * @param {?} isFocused\n * @return {?}\n */\n set focused(isFocused) {\n this._label.focused = isFocused;\n if (!isFocused) {\n this.onTouched();\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onInputChange($event) {\n /** @type {?} */\n const modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\n this.onChange(modelToPropagate);\n this.onTouched();\n this.writeValue(modelToPropagate);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) { this.onChange = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) { this.onTouched = fn; }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._label.disabled = isDisabled;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this.checked = value === this.valueChecked;\n this._label.active = this.checked;\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n this._cd.markForCheck();\n }\n}\nNgbCheckBox.ɵfac = function NgbCheckBox_Factory(t) { return new (t || NgbCheckBox)(ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbCheckBox.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbCheckBox, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"checkbox\"]], hostAttrs: [\"autocomplete\", \"off\"], hostVars: 2, hostBindings: function NgbCheckBox_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbCheckBox_change_HostBindingHandler($event) { return ctx.onInputChange($event); })(\"focus\", function NgbCheckBox_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbCheckBox_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", valueChecked: \"valueChecked\", valueUnChecked: \"valueUnChecked\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_CHECKBOX_VALUE_ACCESSOR])] });\n/** @nocollapse */\nNgbCheckBox.ctorParameters = () => [\n { type: NgbButtonLabel },\n { type: ChangeDetectorRef }\n];\nNgbCheckBox.propDecorators = {\n disabled: [{ type: Input }],\n valueChecked: [{ type: Input }],\n valueUnChecked: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCheckBox, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=checkbox]',\n host: {\n 'autocomplete': 'off',\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '(change)': 'onInputChange($event)',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n },\n providers: [NGB_CHECKBOX_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: NgbButtonLabel }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabled: [{\n type: Input\n }], valueChecked: [{\n type: Input\n }], valueUnChecked: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbRadioGroup),\n multi: true\n};\n/** @type {?} */\nlet nextId$1 = 0;\n/**\n * Allows to easily create Bootstrap-style radio buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nclass NgbRadioGroup {\n constructor() {\n this._radios = new Set();\n this._value = null;\n /**\n * Name of the radio group applied to radio input elements.\n *\n * Will be applied to all radio input elements inside the group,\n * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n *\n * If not provided, will be generated in the `ngb-radio-xx` format.\n */\n this.name = `ngb-radio-${nextId$1++}`;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n }\n /**\n * @return {?}\n */\n get disabled() { return this._disabled; }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n set disabled(isDisabled) { this.setDisabledState(isDisabled); }\n /**\n * @param {?} radio\n * @return {?}\n */\n onRadioChange(radio) {\n this.writeValue(radio.value);\n this.onChange(radio.value);\n }\n /**\n * @return {?}\n */\n onRadioValueUpdate() { this._updateRadiosValue(); }\n /**\n * @param {?} radio\n * @return {?}\n */\n register(radio) { this._radios.add(radio); }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) { this.onChange = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) { this.onTouched = fn; }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._disabled = isDisabled;\n this._updateRadiosDisabled();\n }\n /**\n * @param {?} radio\n * @return {?}\n */\n unregister(radio) { this._radios.delete(radio); }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this._value = value;\n this._updateRadiosValue();\n }\n /**\n * @return {?}\n */\n _updateRadiosValue() { this._radios.forEach((radio) => radio.updateValue(this._value)); }\n /**\n * @return {?}\n */\n _updateRadiosDisabled() { this._radios.forEach((radio) => radio.updateDisabled()); }\n}\nNgbRadioGroup.ɵfac = function NgbRadioGroup_Factory(t) { return new (t || NgbRadioGroup)(); };\nNgbRadioGroup.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbRadioGroup, selectors: [[\"\", \"ngbRadioGroup\", \"\"]], hostAttrs: [\"role\", \"radiogroup\"], inputs: { name: \"name\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_RADIO_VALUE_ACCESSOR])] });\nNgbRadioGroup.propDecorators = {\n name: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadioGroup, [{\n type: Directive,\n args: [{ selector: '[ngbRadioGroup]', host: { 'role': 'radiogroup' }, providers: [NGB_RADIO_VALUE_ACCESSOR] }]\n }], function () { return []; }, { name: [{\n type: Input\n }] }); })();\n/**\n * A directive that marks an input of type \"radio\" as a part of the\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\n */\nclass NgbRadio {\n /**\n * @param {?} _group\n * @param {?} _label\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _cd\n */\n constructor(_group, _label, _renderer, _element, _cd) {\n this._group = _group;\n this._label = _label;\n this._renderer = _renderer;\n this._element = _element;\n this._cd = _cd;\n this._value = null;\n this._group.register(this);\n this.updateDisabled();\n }\n /**\n * The form control value when current radio button is checked.\n * @param {?} value\n * @return {?}\n */\n set value(value) {\n this._value = value;\n /** @type {?} */\n const stringValue = value ? value.toString() : '';\n this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\n this._group.onRadioValueUpdate();\n }\n /**\n * If `true`, current radio button will be disabled.\n * @param {?} isDisabled\n * @return {?}\n */\n set disabled(isDisabled) {\n this._disabled = isDisabled !== false;\n this.updateDisabled();\n }\n /**\n * @param {?} isFocused\n * @return {?}\n */\n set focused(isFocused) {\n if (this._label) {\n this._label.focused = isFocused;\n }\n if (!isFocused) {\n this._group.onTouched();\n }\n }\n /**\n * @return {?}\n */\n get checked() { return this._checked; }\n /**\n * @return {?}\n */\n get disabled() { return this._group.disabled || this._disabled; }\n /**\n * @return {?}\n */\n get value() { return this._value; }\n /**\n * @return {?}\n */\n get nameAttr() { return this.name || this._group.name; }\n /**\n * @return {?}\n */\n ngOnDestroy() { this._group.unregister(this); }\n /**\n * @return {?}\n */\n onChange() { this._group.onRadioChange(this); }\n /**\n * @param {?} value\n * @return {?}\n */\n updateValue(value) {\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n if (this.value !== value) {\n this._cd.markForCheck();\n }\n this._checked = this.value === value;\n this._label.active = this._checked;\n }\n /**\n * @return {?}\n */\n updateDisabled() { this._label.disabled = this.disabled; }\n}\nNgbRadio.ɵfac = function NgbRadio_Factory(t) { return new (t || NgbRadio)(ɵngcc0.ɵɵdirectiveInject(NgbRadioGroup), ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRadio.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbRadio, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"radio\"]], hostVars: 3, hostBindings: function NgbRadio_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbRadio_change_HostBindingHandler() { return ctx.onChange(); })(\"focus\", function NgbRadio_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbRadio_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"name\", ctx.nameAttr);\n } }, inputs: { value: \"value\", disabled: \"disabled\", name: \"name\" } });\n/** @nocollapse */\nNgbRadio.ctorParameters = () => [\n { type: NgbRadioGroup },\n { type: NgbButtonLabel },\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\nNgbRadio.propDecorators = {\n name: [{ type: Input }],\n value: [{ type: Input, args: ['value',] }],\n disabled: [{ type: Input, args: ['disabled',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadio, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=radio]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '[name]': 'nameAttr',\n '(change)': 'onChange()',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n }\n }]\n }], function () { return [{ type: NgbRadioGroup }, { type: NgbButtonLabel }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { value: [{\n type: Input,\n args: ['value']\n }], disabled: [{\n type: Input,\n args: ['disabled']\n }], name: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\nclass NgbButtonsModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbButtonsModule }; }\n}\nNgbButtonsModule.ɵfac = function NgbButtonsModule_Factory(t) { return new (t || NgbButtonsModule)(); };\nNgbButtonsModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbButtonsModule });\nNgbButtonsModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbButtonsModule, { declarations: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio], exports: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonsModule, [{\n type: NgModule,\n args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nclass NgbCarouselConfig {\n constructor() {\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n}\nNgbCarouselConfig.ɵfac = function NgbCarouselConfig_Factory(t) { return new (t || NgbCarouselConfig)(); };\nNgbCarouselConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCarouselConfig, factory: NgbCarouselConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbCarouselConfig.ngInjectableDef = defineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(); }, token: NgbCarouselConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nlet nextId$2 = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nclass NgbSlide {\n /**\n * @param {?} tplRef\n */\n constructor(tplRef) {\n this.tplRef = tplRef;\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = `ngb-slide-${nextId$2++}`;\n }\n}\nNgbSlide.ɵfac = function NgbSlide_Factory(t) { return new (t || NgbSlide)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbSlide.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbSlide, selectors: [[\"ng-template\", \"ngbSlide\", \"\"]], inputs: { id: \"id\" } });\n/** @nocollapse */\nNgbSlide.ctorParameters = () => [\n { type: TemplateRef }\n];\nNgbSlide.propDecorators = {\n id: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbSlide, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbSlide]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { id: [{\n type: Input\n }] }); })();\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nclass NgbCarousel {\n /**\n * @param {?} config\n * @param {?} _platformId\n * @param {?} _ngZone\n * @param {?} _cd\n */\n constructor(config, _platformId, _ngZone, _cd) {\n this._platformId = _platformId;\n this._ngZone = _ngZone;\n this._cd = _cd;\n this._destroy$ = new Subject();\n this._start$ = new Subject();\n this._stop$ = new Subject();\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n this.interval = config.interval;\n this.wrap = config.wrap;\n this.keyboard = config.keyboard;\n this.pauseOnHover = config.pauseOnHover;\n this.showNavigationArrows = config.showNavigationArrows;\n this.showNavigationIndicators = config.showNavigationIndicators;\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular(() => {\n this._start$\n .pipe(map(() => this.interval), filter(interval => interval > 0 && this.slides.length > 0), switchMap(interval => timer(interval).pipe(takeUntil(merge(this._stop$, this._destroy$)))))\n .subscribe(() => this._ngZone.run(() => this.next()));\n this._start$.next();\n });\n }\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => this._cd.markForCheck());\n }\n /**\n * @return {?}\n */\n ngAfterContentChecked() {\n /** @type {?} */\n let activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : null);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this._destroy$.next(); }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if ('interval' in changes && !changes['interval'].isFirstChange()) {\n this._start$.next();\n }\n }\n /**\n * Navigates to a slide with the specified identifier.\n * @param {?} slideId\n * @return {?}\n */\n select(slideId) { this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId)); }\n /**\n * Navigates to the previous slide.\n * @return {?}\n */\n prev() { this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT); }\n /**\n * Navigates to the next slide.\n * @return {?}\n */\n next() { this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT); }\n /**\n * Pauses cycling through the slides.\n * @return {?}\n */\n pause() { this._stop$.next(); }\n /**\n * Restarts cycling through the slides from left to right.\n * @return {?}\n */\n cycle() { this._start$.next(); }\n /**\n * @param {?} slideIdx\n * @param {?} direction\n * @return {?}\n */\n _cycleToSelected(slideIdx, direction) {\n /** @type {?} */\n let selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction });\n this._start$.next();\n this.activeId = selectedSlide.id;\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n }\n /**\n * @param {?} currentActiveSlideId\n * @param {?} nextActiveSlideId\n * @return {?}\n */\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\n /** @type {?} */\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n /** @type {?} */\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\n }\n /**\n * @param {?} slideId\n * @return {?}\n */\n _getSlideById(slideId) { return this.slides.find(slide => slide.id === slideId); }\n /**\n * @param {?} slideId\n * @return {?}\n */\n _getSlideIdxById(slideId) {\n return this.slides.toArray().indexOf(this._getSlideById(slideId));\n }\n /**\n * @param {?} currentSlideId\n * @return {?}\n */\n _getNextSlide(currentSlideId) {\n /** @type {?} */\n const slideArr = this.slides.toArray();\n /** @type {?} */\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n /** @type {?} */\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\n slideArr[currentSlideIdx + 1].id;\n }\n /**\n * @param {?} currentSlideId\n * @return {?}\n */\n _getPrevSlide(currentSlideId) {\n /** @type {?} */\n const slideArr = this.slides.toArray();\n /** @type {?} */\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n /** @type {?} */\n const isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\n slideArr[currentSlideIdx - 1].id;\n }\n}\nNgbCarousel.ɵfac = function NgbCarousel_Factory(t) { return new (t || NgbCarousel)(ɵngcc0.ɵɵdirectiveInject(NgbCarouselConfig), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbCarousel.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbCarousel, selectors: [[\"ngb-carousel\"]], contentQueries: function NgbCarousel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbSlide, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.slides = _t);\n } }, hostAttrs: [\"tabIndex\", \"0\", 1, \"carousel\", \"slide\"], hostVars: 2, hostBindings: function NgbCarousel_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbCarousel_mouseenter_HostBindingHandler() { return ctx.pauseOnHover && ctx.pause(); })(\"mouseleave\", function NgbCarousel_mouseleave_HostBindingHandler() { return ctx.pauseOnHover && ctx.cycle(); })(\"keydown.arrowLeft\", function NgbCarousel_keydown_arrowLeft_HostBindingHandler() { return ctx.keyboard && ctx.prev(); })(\"keydown.arrowRight\", function NgbCarousel_keydown_arrowRight_HostBindingHandler() { return ctx.keyboard && ctx.next(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", \"block\");\n } }, inputs: { interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\", activeId: \"activeId\" }, outputs: { slide: \"slide\" }, exportAs: [\"ngbCarousel\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 4, consts: function () { let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__5 = goog.getMsg(\"Previous\");\n i18n_4 = MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__5;\n }\n else {\n i18n_4 = $localize `:@@ngb.carousel.previous␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__7 = goog.getMsg(\"Next\");\n i18n_6 = MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__7;\n }\n else {\n i18n_6 = $localize `:@@ngb.carousel.next␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } return [[\"class\", \"carousel-indicators\", 4, \"ngIf\"], [1, \"carousel-inner\"], [\"class\", \"carousel-item\", 3, \"active\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"carousel-control-prev\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"carousel-control-next\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [1, \"carousel-indicators\"], [3, \"id\", \"active\", \"click\", 4, \"ngFor\", \"ngForOf\"], [3, \"id\", \"click\"], [1, \"carousel-item\"], [3, \"ngTemplateOutlet\"], [\"role\", \"button\", 1, \"carousel-control-prev\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-prev-icon\"], [1, \"sr-only\"], i18n_4, [\"role\", \"button\", 1, \"carousel-control-next\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-next-icon\"], i18n_6]; }, template: function NgbCarousel_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbCarousel_ol_0_Template, 2, 1, \"ol\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, NgbCarousel_div_2_Template, 2, 3, \"div\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_a_3_Template, 4, 0, \"a\", 3);\n ɵngcc0.ɵɵtemplate(4, NgbCarousel_a_4_Template, 4, 0, \"a\", 4);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationIndicators);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbCarousel.ctorParameters = () => [\n { type: NgbCarouselConfig },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef }\n];\nNgbCarousel.propDecorators = {\n slides: [{ type: ContentChildren, args: [NgbSlide,] }],\n activeId: [{ type: Input }],\n interval: [{ type: Input }],\n wrap: [{ type: Input }],\n keyboard: [{ type: Input }],\n pauseOnHover: [{ type: Input }],\n showNavigationArrows: [{ type: Input }],\n showNavigationIndicators: [{ type: Input }],\n slide: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarousel, [{\n type: Component,\n args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(mouseenter)': 'pauseOnHover && pause()',\n '(mouseleave)': 'pauseOnHover && cycle()',\n '(keydown.arrowLeft)': 'keyboard && prev()',\n '(keydown.arrowRight)': 'keyboard && next()'\n },\n template: `\n
    \n
  1. \n
\n
\n
\n \n
\n
\n \n \n Previous\n \n \n \n Next\n \n `\n }]\n }], function () { return [{ type: NgbCarouselConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { slide: [{\n type: Output\n }], interval: [{\n type: Input\n }], wrap: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], pauseOnHover: [{\n type: Input\n }], showNavigationArrows: [{\n type: Input\n }], showNavigationIndicators: [{\n type: Input\n }], activeId: [{\n type: Input\n }], slides: [{\n type: ContentChildren,\n args: [NgbSlide]\n }] }); })();\n/** @enum {string} */\nconst NgbSlideEventDirection = {\n LEFT: (/** @type {?} */ ('left')),\n RIGHT: (/** @type {?} */ ('right')),\n};\n/** @type {?} */\nconst NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbCarouselModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbCarouselModule }; }\n}\nNgbCarouselModule.ɵfac = function NgbCarouselModule_Factory(t) { return new (t || NgbCarouselModule)(); };\nNgbCarouselModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbCarouselModule });\nNgbCarouselModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCarouselModule, { declarations: function () { return [NgbCarousel, NgbSlide]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbCarousel, NgbSlide]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselModule, [{\n type: NgModule,\n args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A directive to provide a simple way of hiding and showing elements on the page.\n */\nclass NgbCollapse {\n constructor() {\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n this.collapsed = false;\n }\n}\nNgbCollapse.ɵfac = function NgbCollapse_Factory(t) { return new (t || NgbCollapse)(); };\nNgbCollapse.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbCollapse, selectors: [[\"\", \"ngbCollapse\", \"\"]], hostVars: 4, hostBindings: function NgbCollapse_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"collapse\", true)(\"show\", !ctx.collapsed);\n } }, inputs: { collapsed: [\"ngbCollapse\", \"collapsed\"] }, exportAs: [\"ngbCollapse\"] });\nNgbCollapse.propDecorators = {\n collapsed: [{ type: Input, args: ['ngbCollapse',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapse, [{\n type: Directive,\n args: [{\n selector: '[ngbCollapse]',\n exportAs: 'ngbCollapse',\n host: { '[class.collapse]': 'true', '[class.show]': '!collapsed' }\n }]\n }], function () { return []; }, { collapsed: [{\n type: Input,\n args: ['ngbCollapse']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbCollapseModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbCollapseModule }; }\n}\nNgbCollapseModule.ɵfac = function NgbCollapseModule_Factory(t) { return new (t || NgbCollapseModule)(); };\nNgbCollapseModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbCollapseModule });\nNgbCollapseModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCollapseModule, { declarations: [NgbCollapse], exports: [NgbCollapse] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseModule, [{\n type: NgModule,\n args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * \\@since 3.0.0\n */\nclass NgbDate {\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n * @param {?} date\n * @return {?}\n */\n static from(date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n }\n /**\n * @param {?} year\n * @param {?} month\n * @param {?} day\n */\n constructor(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * Checks if the current date is equal to another date.\n * @param {?} other\n * @return {?}\n */\n equals(other) {\n return other && this.year === other.year && this.month === other.month && this.day === other.day;\n }\n /**\n * Checks if the current date is before another date.\n * @param {?} other\n * @return {?}\n */\n before(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n }\n else {\n return this.month < other.month;\n }\n }\n else {\n return this.year < other.year;\n }\n }\n /**\n * Checks if the current date is after another date.\n * @param {?} other\n * @return {?}\n */\n after(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n }\n else {\n return this.month > other.month;\n }\n }\n else {\n return this.year > other.year;\n }\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} jsDate\n * @return {?}\n */\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\n/**\n * @param {?} date\n * @return {?}\n */\nfunction toJSDate(date) {\n /** @type {?} */\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n * @abstract\n */\nclass NgbCalendar {\n}\nNgbCalendar.ɵfac = function NgbCalendar_Factory(t) { return new (t || NgbCalendar)(); };\nNgbCalendar.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendar, factory: function () { return NGB_DATEPICKER_CALENDAR_FACTORY(); }, providedIn: 'root' });\n/** @nocollapse */ NgbCalendar.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendar, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY }]\n }], null, null); })();\nclass NgbCalendarGregorian extends NgbCalendar {\n /**\n * @return {?}\n */\n getDaysPerWeek() { return 7; }\n /**\n * @return {?}\n */\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n /**\n * @return {?}\n */\n getWeeksPerMonth() { return 6; }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getNext(date, period = 'd', number = 1) {\n /** @type {?} */\n let jsDate = toJSDate(date);\n switch (period) {\n case 'y':\n return new NgbDate(date.year + number, 1, 1);\n case 'm':\n jsDate = new Date(date.year, date.month + number - 1, 1, 12);\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n break;\n default:\n return date;\n }\n return fromJSDate(jsDate);\n }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n /**\n * @param {?} date\n * @return {?}\n */\n getWeekday(date) {\n /** @type {?} */\n let jsDate = toJSDate(date);\n /** @type {?} */\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n let date = week[thursdayIndex];\n /** @type {?} */\n const jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n /**\n * @return {?}\n */\n getToday() { return fromJSDate(new Date()); }\n /**\n * @param {?} date\n * @return {?}\n */\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n /** @type {?} */\n const jsDate = toJSDate(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day;\n }\n}\nNgbCalendarGregorian.ɵfac = function NgbCalendarGregorian_Factory(t) { return ɵNgbCalendarGregorian_BaseFactory(t || NgbCalendarGregorian); };\nNgbCalendarGregorian.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarGregorian, factory: NgbCalendarGregorian.ɵfac });\nconst ɵNgbCalendarGregorian_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarGregorian);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarGregorian, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction dateComparator(prev, next) {\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\n/**\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n }\n}\n/**\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date;\n}\n/**\n * @param {?} date\n * @param {?} state\n * @return {?}\n */\nfunction isDateSelectable(date, state) {\n const { minDate, maxDate, disabled, markDisabled } = state;\n // clang-format off\n return !(!isDefined(date) ||\n disabled ||\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n (minDate && date.before(minDate)) ||\n (maxDate && date.after(maxDate)));\n // clang-format on\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n /** @type {?} */\n let months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n /** @type {?} */\n const index = months.findIndex(month => month === minDate.month);\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n /** @type {?} */\n const index = months.findIndex(month => month === maxDate.month);\n months = months.slice(0, index + 1);\n }\n return months;\n}\n/**\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n /** @type {?} */\n const start = minDate && minDate.year || date.year - 10;\n /** @type {?} */\n const end = maxDate && maxDate.year || date.year + 10;\n return Array.from({ length: end - start + 1 }, (e, i) => start + i);\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} maxDate\n * @return {?}\n */\nfunction nextMonthDisabled(calendar, date, maxDate) {\n return maxDate && calendar.getNext(date, 'm').after(maxDate);\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} minDate\n * @return {?}\n */\nfunction prevMonthDisabled(calendar, date, minDate) {\n /** @type {?} */\n const prevDate = calendar.getPrev(date, 'm');\n return minDate && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\n prevDate.year < minDate.year && minDate.month === 1);\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} state\n * @param {?} i18n\n * @param {?} force\n * @return {?}\n */\nfunction buildMonths(calendar, date, state, i18n, force) {\n const { displayMonths, months } = state;\n // move old months to a temporary array\n /** @type {?} */\n const monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n /** @type {?} */\n const firstDates = Array.from({ length: displayMonths }, (_, i) => {\n /** @type {?} */\n const firstDate = calendar.getNext(date, 'm', i);\n months[i] = null;\n if (!force) {\n /** @type {?} */\n const reusedIndex = monthsToReuse.findIndex(month => month.firstDate.equals(firstDate));\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n });\n // rebuild nullified months\n firstDates.forEach((firstDate, i) => {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || (/** @type {?} */ ({})));\n }\n });\n return months;\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} state\n * @param {?} i18n\n * @param {?=} month\n * @return {?}\n */\nfunction buildMonth(calendar, date, state, i18n, month = (/** @type {?} */ ({}))) {\n const { dayTemplateData, minDate, maxDate, firstDayOfWeek, markDisabled, outsideDays } = state;\n /** @type {?} */\n const calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // month has weeks\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n /** @type {?} */\n let weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n }\n /** @type {?} */\n const days = weekObject.days;\n // week has days\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0) {\n month.weekdays[day] = calendar.getWeekday(date);\n }\n /** @type {?} */\n const newDate = new NgbDate(date.year, date.month, date.day);\n /** @type {?} */\n const nextDate = calendar.getNext(newDate);\n /** @type {?} */\n const ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n /** @type {?} */\n let disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\n }\n // today\n /** @type {?} */\n let today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n /** @type {?} */\n let contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n /** @type {?} */\n let dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = (/** @type {?} */ ({}));\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number, disabled,\n focused: false,\n selected: false, today\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map(day => day.date), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\n days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} firstDayOfWeek\n * @return {?}\n */\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n /** @type {?} */\n const daysPerWeek = calendar.getDaysPerWeek();\n /** @type {?} */\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\n /** @type {?} */\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @param {?} locale\n * @return {?}\n */\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n return new NgbDatepickerI18nDefault(locale);\n}\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n * @abstract\n */\nclass NgbDatepickerI18n {\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * \\@since 3.0.0\n * @param {?} date\n * @return {?}\n */\n getDayNumerals(date) { return `${date.day}`; }\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * \\@since 3.0.0\n * @param {?} weekNumber\n * @return {?}\n */\n getWeekNumerals(weekNumber) { return `${weekNumber}`; }\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * \\@since 3.0.0\n * @param {?} year\n * @return {?}\n */\n getYearNumerals(year) { return `${year}`; }\n}\nNgbDatepickerI18n.ɵfac = function NgbDatepickerI18n_Factory(t) { return new (t || NgbDatepickerI18n)(); };\nNgbDatepickerI18n.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18n, factory: function NgbDatepickerI18n_Factory(t) { let r = null; if (t) {\n r = new t();\n }\n else {\n r = NGB_DATEPICKER_18N_FACTORY(ɵngcc0.ɵɵinject(LOCALE_ID));\n } return r; }, providedIn: 'root' });\n/** @nocollapse */ NgbDatepickerI18n.ngInjectableDef = defineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(inject(LOCALE_ID)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\nclass NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n /**\n * @param {?} _locale\n */\n constructor(_locale) {\n super();\n this._locale = _locale;\n /** @type {?} */\n const weekdaysStartingOnSunday = getLocaleDayNames(_locale, FormStyle.Standalone, TranslationWidth.Short);\n this._weekdaysShort = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\n this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n }\n /**\n * @param {?} weekday\n * @return {?}\n */\n getWeekdayShortName(weekday) { return this._weekdaysShort[weekday - 1]; }\n /**\n * @param {?} month\n * @return {?}\n */\n getMonthShortName(month) { return this._monthsShort[month - 1]; }\n /**\n * @param {?} month\n * @return {?}\n */\n getMonthFullName(month) { return this._monthsFull[month - 1]; }\n /**\n * @param {?} date\n * @return {?}\n */\n getDayAriaLabel(date) {\n /** @type {?} */\n const jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n }\n}\nNgbDatepickerI18nDefault.ɵfac = function NgbDatepickerI18nDefault_Factory(t) { return new (t || NgbDatepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbDatepickerI18nDefault.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nDefault, factory: NgbDatepickerI18nDefault.ɵfac });\n/** @nocollapse */\nNgbDatepickerI18nDefault.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbDatepickerService {\n /**\n * @param {?} _calendar\n * @param {?} _i18n\n */\n constructor(_calendar, _i18n) {\n this._calendar = _calendar;\n this._i18n = _i18n;\n this._model$ = new Subject();\n this._select$ = new Subject();\n this._state = {\n disabled: false,\n displayMonths: 1,\n firstDayOfWeek: 1,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectBoxes: { years: [], months: [] },\n selectedDate: null\n };\n }\n /**\n * @return {?}\n */\n get model$() { return this._model$.pipe(filter(model => model.months.length > 0)); }\n /**\n * @return {?}\n */\n get select$() { return this._select$.pipe(filter(date => date !== null)); }\n /**\n * @param {?} dayTemplateData\n * @return {?}\n */\n set dayTemplateData(dayTemplateData) {\n if (this._state.dayTemplateData !== dayTemplateData) {\n this._nextState({ dayTemplateData });\n }\n }\n /**\n * @param {?} disabled\n * @return {?}\n */\n set disabled(disabled) {\n if (this._state.disabled !== disabled) {\n this._nextState({ disabled });\n }\n }\n /**\n * @param {?} displayMonths\n * @return {?}\n */\n set displayMonths(displayMonths) {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n this._nextState({ displayMonths });\n }\n }\n /**\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n set firstDayOfWeek(firstDayOfWeek) {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n this._nextState({ firstDayOfWeek });\n }\n }\n /**\n * @param {?} focusVisible\n * @return {?}\n */\n set focusVisible(focusVisible) {\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n this._nextState({ focusVisible });\n }\n }\n /**\n * @param {?} date\n * @return {?}\n */\n set maxDate(date) {\n /** @type {?} */\n const maxDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.maxDate, maxDate)) {\n this._nextState({ maxDate });\n }\n }\n /**\n * @param {?} markDisabled\n * @return {?}\n */\n set markDisabled(markDisabled) {\n if (this._state.markDisabled !== markDisabled) {\n this._nextState({ markDisabled });\n }\n }\n /**\n * @param {?} date\n * @return {?}\n */\n set minDate(date) {\n /** @type {?} */\n const minDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.minDate, minDate)) {\n this._nextState({ minDate });\n }\n }\n /**\n * @param {?} navigation\n * @return {?}\n */\n set navigation(navigation) {\n if (this._state.navigation !== navigation) {\n this._nextState({ navigation });\n }\n }\n /**\n * @param {?} outsideDays\n * @return {?}\n */\n set outsideDays(outsideDays) {\n if (this._state.outsideDays !== outsideDays) {\n this._nextState({ outsideDays });\n }\n }\n /**\n * @param {?} date\n * @return {?}\n */\n focus(date) {\n if (!this._state.disabled && this._calendar.isValid(date) && isChangedDate(this._state.focusDate, date)) {\n this._nextState({ focusDate: date });\n }\n }\n /**\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n focusMove(period, number) {\n this.focus(this._calendar.getNext(this._state.focusDate, period, number));\n }\n /**\n * @return {?}\n */\n focusSelect() {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, { emitEvent: true });\n }\n }\n /**\n * @param {?} date\n * @return {?}\n */\n open(date) {\n /** @type {?} */\n const firstDate = this.toValidDate(date, this._calendar.getToday());\n if (!this._state.disabled && (!this._state.firstDate || isChangedMonth(this._state.firstDate, date))) {\n this._nextState({ firstDate });\n }\n }\n /**\n * @param {?} date\n * @param {?=} options\n * @return {?}\n */\n select(date, options = {}) {\n /** @type {?} */\n const selectedDate = this.toValidDate(date, null);\n if (!this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({ selectedDate });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._select$.next(selectedDate);\n }\n }\n }\n /**\n * @param {?} date\n * @param {?=} defaultValue\n * @return {?}\n */\n toValidDate(date, defaultValue) {\n /** @type {?} */\n const ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n }\n /**\n * @param {?} patch\n * @return {?}\n */\n _nextState(patch) {\n /** @type {?} */\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n /**\n * @param {?} state\n * @return {?}\n */\n _patchContexts(state) {\n const { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\n state.months.forEach(month => {\n month.weeks.forEach(week => {\n week.days.forEach(day => {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex = !disabled && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\n day.date.before(months[displayMonths - 1].lastDate));\n }\n });\n });\n });\n }\n /**\n * @param {?} patch\n * @return {?}\n */\n _updateState(patch) {\n // patching fields\n /** @type {?} */\n const state = Object.assign({}, this._state, patch);\n /** @type {?} */\n let startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 && !state.focusDate.before(state.firstDate) &&\n !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n /** @type {?} */\n const forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch;\n /** @type {?} */\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months.length > 0 ? months[0].firstDate : undefined;\n state.lastDate = months.length > 0 ? months[months.length - 1].lastDate : undefined;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (state.focusDate === undefined || state.focusDate.before(state.firstDate) ||\n state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n /** @type {?} */\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n /** @type {?} */\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months =\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n }\n else {\n state.selectBoxes = { years: [], months: [] };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n }\n}\nNgbDatepickerService.ɵfac = function NgbDatepickerService_Factory(t) { return new (t || NgbDatepickerService)(ɵngcc0.ɵɵinject(NgbCalendar), ɵngcc0.ɵɵinject(NgbDatepickerI18n)); };\nNgbDatepickerService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerService, factory: NgbDatepickerService.ɵfac });\n/** @nocollapse */\nNgbDatepickerService.ctorParameters = () => [\n { type: NgbCalendar },\n { type: NgbDatepickerI18n }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerService, [{\n type: Injectable\n }], function () { return [{ type: NgbCalendar }, { type: NgbDatepickerI18n }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nconst Key = {\n Tab: 9,\n Enter: 13,\n Escape: 27,\n Space: 32,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n};\nKey[Key.Tab] = 'Tab';\nKey[Key.Enter] = 'Enter';\nKey[Key.Escape] = 'Escape';\nKey[Key.Space] = 'Space';\nKey[Key.PageUp] = 'PageUp';\nKey[Key.PageDown] = 'PageDown';\nKey[Key.End] = 'End';\nKey[Key.Home] = 'Home';\nKey[Key.ArrowLeft] = 'ArrowLeft';\nKey[Key.ArrowUp] = 'ArrowUp';\nKey[Key.ArrowRight] = 'ArrowRight';\nKey[Key.ArrowDown] = 'ArrowDown';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbDatepickerKeyMapService {\n /**\n * @param {?} _service\n * @param {?} _calendar\n */\n constructor(_service, _calendar) {\n this._service = _service;\n this._calendar = _calendar;\n _service.model$.subscribe(model => {\n this._minDate = model.minDate;\n this._maxDate = model.maxDate;\n this._firstViewDate = model.firstDate;\n this._lastViewDate = model.lastDate;\n });\n }\n /**\n * @param {?} event\n * @return {?}\n */\n processKey(event) {\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.PageUp:\n this._service.focusMove(event.shiftKey ? 'y' : 'm', -1);\n break;\n case Key.PageDown:\n this._service.focusMove(event.shiftKey ? 'y' : 'm', 1);\n break;\n case Key.End:\n this._service.focus(event.shiftKey ? this._maxDate : this._lastViewDate);\n break;\n case Key.Home:\n this._service.focus(event.shiftKey ? this._minDate : this._firstViewDate);\n break;\n case Key.ArrowLeft:\n this._service.focusMove('d', -1);\n break;\n case Key.ArrowUp:\n this._service.focusMove('d', -this._calendar.getDaysPerWeek());\n break;\n case Key.ArrowRight:\n this._service.focusMove('d', 1);\n break;\n case Key.ArrowDown:\n this._service.focusMove('d', this._calendar.getDaysPerWeek());\n break;\n case Key.Enter:\n case Key.Space:\n this._service.focusSelect();\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n event.stopPropagation();\n }\n}\nNgbDatepickerKeyMapService.ɵfac = function NgbDatepickerKeyMapService_Factory(t) { return new (t || NgbDatepickerKeyMapService)(ɵngcc0.ɵɵinject(NgbDatepickerService), ɵngcc0.ɵɵinject(NgbCalendar)); };\nNgbDatepickerKeyMapService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerKeyMapService, factory: NgbDatepickerKeyMapService.ɵfac });\n/** @nocollapse */\nNgbDatepickerKeyMapService.ctorParameters = () => [\n { type: NgbDatepickerService },\n { type: NgbCalendar }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerKeyMapService, [{\n type: Injectable\n }], function () { return [{ type: NgbDatepickerService }, { type: NgbCalendar }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nconst NavigationEvent = {\n PREV: 0,\n NEXT: 1,\n};\nNavigationEvent[NavigationEvent.PREV] = 'PREV';\nNavigationEvent[NavigationEvent.NEXT] = 'NEXT';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nclass NgbDatepickerConfig {\n constructor() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekdays = true;\n this.showWeekNumbers = false;\n }\n}\nNgbDatepickerConfig.ɵfac = function NgbDatepickerConfig_Factory(t) { return new (t || NgbDatepickerConfig)(); };\nNgbDatepickerConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerConfig, factory: NgbDatepickerConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbDatepickerConfig.ngInjectableDef = defineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n * @abstract\n * @template D\n */\nclass NgbDateAdapter {\n}\nNgbDateAdapter.ɵfac = function NgbDateAdapter_Factory(t) { return new (t || NgbDateAdapter)(); };\nNgbDateAdapter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDateAdapter, factory: function () { return NGB_DATEPICKER_DATE_ADAPTER_FACTORY(); }, providedIn: 'root' });\n/** @nocollapse */ NgbDateAdapter.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY }]\n }], null, null); })();\nclass NgbDateStructAdapter extends NgbDateAdapter {\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n fromModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n toModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n}\nNgbDateStructAdapter.ɵfac = function NgbDateStructAdapter_Factory(t) { return ɵNgbDateStructAdapter_BaseFactory(t || NgbDateStructAdapter); };\nNgbDateStructAdapter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDateStructAdapter, factory: NgbDateStructAdapter.ɵfac });\nconst ɵNgbDateStructAdapter_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbDateStructAdapter);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbDatepicker),\n multi: true\n};\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nclass NgbDatepicker {\n /**\n * @param {?} _keyMapService\n * @param {?} _service\n * @param {?} _calendar\n * @param {?} i18n\n * @param {?} config\n * @param {?} _cd\n * @param {?} _elementRef\n * @param {?} _ngbDateAdapter\n * @param {?} _ngZone\n */\n constructor(_keyMapService, _service, _calendar, i18n, config, _cd, _elementRef, _ngbDateAdapter, _ngZone) {\n this._keyMapService = _keyMapService;\n this._service = _service;\n this._calendar = _calendar;\n this.i18n = i18n;\n this._cd = _cd;\n this._elementRef = _elementRef;\n this._ngbDateAdapter = _ngbDateAdapter;\n this._ngZone = _ngZone;\n this._destroyed$ = new Subject();\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n */\n this.select = new EventEmitter();\n this.onChange = (_) => { };\n this.onTouched = () => { };\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showWeekdays', 'showWeekNumbers', 'startDate']\n .forEach(input => this[input] = config[input]);\n _service.select$.pipe(takeUntil(this._destroyed$)).subscribe(date => { this.select.emit(date); });\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(model => {\n /** @type {?} */\n const newDate = model.firstDate;\n /** @type {?} */\n const oldDate = this.model ? this.model.firstDate : null;\n /** @type {?} */\n let navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n this.navigate.emit({\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n next: { year: newDate.year, month: newDate.month },\n preventDefault: () => navigationPrevented = true\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n this._service.open(oldDate);\n return;\n }\n }\n /** @type {?} */\n const newSelectedDate = model.selectedDate;\n /** @type {?} */\n const newFocusedDate = model.focusDate;\n /** @type {?} */\n const oldFocusedDate = this.model ? this.model.focusDate : null;\n this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, this._controlValue)) {\n this._controlValue = newSelectedDate;\n this.onTouched();\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n this.focus();\n }\n _cd.markForCheck();\n });\n }\n /**\n * @return {?}\n */\n focus() {\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n /** @type {?} */\n const elementToFocus = this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n if (elementToFocus) {\n elementToFocus.focus();\n }\n });\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n navigateTo(date) {\n this._service.open(NgbDate.from(date ? date.day ? (/** @type {?} */ (date)) : Object.assign({}, date, { day: 1 }) : null));\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n /** @type {?} */\n const focusIns$ = fromEvent(this._monthsEl.nativeElement, 'focusin');\n /** @type {?} */\n const focusOuts$ = fromEvent(this._monthsEl.nativeElement, 'focusout');\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$)\n .pipe(filter(({ target, relatedTarget }) => !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day'))), takeUntil(this._destroyed$))\n .subscribe(({ type }) => this._ngZone.run(() => this._service.focusVisible = type === 'focusin'));\n });\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this._destroyed$.next(); }\n /**\n * @return {?}\n */\n ngOnInit() {\n if (this.model === undefined) {\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .forEach(input => this._service[input] = this[input]);\n this.navigateTo(this.startDate);\n }\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .filter(input => input in changes)\n .forEach(input => this._service[input] = this[input]);\n if ('startDate' in changes) {\n const { currentValue, previousValue } = changes.startDate;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n }\n /**\n * @param {?} date\n * @return {?}\n */\n onDateSelect(date) {\n this._service.focus(date);\n this._service.select(date, { emitEvent: true });\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onKeyDown(event) { this._keyMapService.processKey(event); }\n /**\n * @param {?} date\n * @return {?}\n */\n onNavigateDateSelect(date) { this._service.open(date); }\n /**\n * @param {?} event\n * @return {?}\n */\n onNavigateEvent(event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) { this.onChange = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) { this.onTouched = fn; }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) { this._service.disabled = isDisabled; }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n }\n}\nNgbDatepicker.ɵfac = function NgbDatepicker_Factory(t) { return new (t || NgbDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerKeyMapService), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbDatepicker.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbDatepicker, selectors: [[\"ngb-datepicker\"]], viewQuery: function NgbDatepicker_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c8, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._monthsEl = _t.first);\n } }, inputs: { dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekdays: \"showWeekdays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\" }, outputs: { navigate: \"navigate\", select: \"select\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([NGB_DATEPICKER_VALUE_ACCESSOR, NgbDatepickerService, NgbDatepickerKeyMapService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 3, consts: [[\"dt\", \"\"], [1, \"ngb-dp-header\", \"bg-light\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\", 4, \"ngIf\"], [1, \"ngb-dp-months\", 3, \"keydown\"], [\"months\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"ngTemplateOutlet\"], [\"ngbDatepickerDayView\", \"\", 3, \"date\", \"currentMonth\", \"selected\", \"disabled\", \"focused\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\"], [1, \"ngb-dp-month\"], [\"class\", \"ngb-dp-month-name bg-light\", 4, \"ngIf\"], [3, \"month\", \"dayTemplate\", \"showWeekdays\", \"showWeekNumbers\", \"select\"], [1, \"ngb-dp-month-name\", \"bg-light\"]], template: function NgbDatepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_0_Template, 1, 5, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵtemplate(3, NgbDatepicker_ngb_datepicker_navigation_3_Template, 1, 7, \"ngb-datepicker-navigation\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"div\", 3, 4);\n ɵngcc0.ɵɵlistener(\"keydown\", function NgbDatepicker_Template_div_keydown_4_listener($event) { return ctx.onKeyDown($event); });\n ɵngcc0.ɵɵtemplate(6, NgbDatepicker_ng_template_6_Template, 3, 5, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, NgbDatepicker_ng_template_7_Template, 0, 0, \"ng-template\", 6);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigation !== \"none\");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.model.months);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.footerTemplate);\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet, NgbDatepickerDayView, NgbDatepickerNavigation, NgbDatepickerMonthView]; }, styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month-view{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbDatepicker.ctorParameters = () => [\n { type: NgbDatepickerKeyMapService },\n { type: NgbDatepickerService },\n { type: NgbCalendar },\n { type: NgbDatepickerI18n },\n { type: NgbDatepickerConfig },\n { type: ChangeDetectorRef },\n { type: ElementRef },\n { type: NgbDateAdapter },\n { type: NgZone }\n];\nNgbDatepicker.propDecorators = {\n _monthsEl: [{ type: ViewChild, args: ['months',] }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n maxDate: [{ type: Input }],\n minDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n navigate: [{ type: Output }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepicker, [{\n type: Component,\n args: [{\n exportAs: 'ngbDatepicker',\n selector: 'ngb-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n
\n
1 && navigation === 'select')\"\n class=\"ngb-dp-month-name bg-light\">\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\n
\n \n \n
\n
\n
\n\n \n `,\n providers: [NGB_DATEPICKER_VALUE_ACCESSOR, NgbDatepickerService, NgbDatepickerKeyMapService],\n styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month-view{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerKeyMapService }, { type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDatepickerI18n }, { type: NgbDatepickerConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: NgbDateAdapter }, { type: ɵngcc0.NgZone }]; }, { navigate: [{\n type: Output\n }], select: [{\n type: Output\n }], _monthsEl: [{\n type: ViewChild,\n args: ['months']\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekdays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbDatepickerMonthView {\n /**\n * @param {?} i18n\n */\n constructor(i18n) {\n this.i18n = i18n;\n this.select = new EventEmitter();\n }\n /**\n * @param {?} day\n * @return {?}\n */\n doSelect(day) {\n if (!day.context.disabled && !day.hidden) {\n this.select.emit(day.date);\n }\n }\n}\nNgbDatepickerMonthView.ɵfac = function NgbDatepickerMonthView_Factory(t) { return new (t || NgbDatepickerMonthView)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerMonthView.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerMonthView, selectors: [[\"ngb-datepicker-month-view\"]], hostAttrs: [\"role\", \"grid\"], inputs: { dayTemplate: \"dayTemplate\", month: \"month\", showWeekdays: \"showWeekdays\", showWeekNumbers: \"showWeekNumbers\" }, outputs: { select: \"select\" }, decls: 2, vars: 2, consts: [[\"class\", \"ngb-dp-week ngb-dp-weekdays bg-light\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"ngb-dp-week\", \"ngb-dp-weekdays\", \"bg-light\"], [\"class\", \"ngb-dp-weekday ngb-dp-showweek\", 4, \"ngIf\"], [\"class\", \"ngb-dp-weekday small\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-weekday\", \"ngb-dp-showweek\"], [1, \"ngb-dp-weekday\", \"small\"], [\"class\", \"ngb-dp-week\", \"role\", \"row\", 4, \"ngIf\"], [\"role\", \"row\", 1, \"ngb-dp-week\"], [\"class\", \"ngb-dp-week-number small text-muted\", 4, \"ngIf\"], [\"class\", \"ngb-dp-day\", \"role\", \"gridcell\", 3, \"disabled\", \"tabindex\", \"hidden\", \"ngb-dp-today\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-week-number\", \"small\", \"text-muted\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"tabindex\", \"click\"], [3, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbDatepickerMonthView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonthView_div_0_Template, 3, 2, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonthView_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showWeekdays);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.month.weeks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-datepicker-month-view{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}\"], encapsulation: 2 });\n/** @nocollapse */\nNgbDatepickerMonthView.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\nNgbDatepickerMonthView.propDecorators = {\n dayTemplate: [{ type: Input }],\n month: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerMonthView, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-month-view',\n host: { 'role': 'grid' },\n encapsulation: ViewEncapsulation.None,\n template: `\n
\n
\n
\n {{ i18n.getWeekdayShortName(w) }}\n
\n
\n \n
\n
{{ i18n.getWeekNumerals(week.number) }}
\n
\n \n \n \n
\n
\n
\n `,\n styles: [\"ngb-datepicker-month-view{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { select: [{\n type: Output\n }], dayTemplate: [{\n type: Input\n }], month: [{\n type: Input\n }], showWeekdays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbDatepickerNavigation {\n /**\n * @param {?} i18n\n */\n constructor(i18n) {\n this.i18n = i18n;\n this.navigation = NavigationEvent;\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n}\nNgbDatepickerNavigation.ɵfac = function NgbDatepickerNavigation_Factory(t) { return new (t || NgbDatepickerNavigation)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerNavigation.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigation, selectors: [[\"ngb-datepicker-navigation\"]], inputs: { months: \"months\", date: \"date\", disabled: \"disabled\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, outputs: { navigate: \"navigate\", select: \"select\" }, decls: 8, vars: 4, consts: function () { let i18n_9; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_10 = goog.getMsg(\"Previous month\");\n i18n_9 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_10;\n }\n else {\n i18n_9 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_11; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_12 = goog.getMsg(\"Previous month\");\n i18n_11 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_12;\n }\n else {\n i18n_11 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_13; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_14 = goog.getMsg(\"Next month\");\n i18n_13 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_14;\n }\n else {\n i18n_13 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } let i18n_15; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_16 = goog.getMsg(\"Next month\");\n i18n_15 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_16;\n }\n else {\n i18n_15 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } return [[1, \"ngb-dp-arrow\"], [\"type\", \"button\", \"aria-label\", i18n_9, \"title\", i18n_11, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-chevron\"], [\"class\", \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"ngb-dp-arrow\", \"right\"], [\"type\", \"button\", \"aria-label\", i18n_13, \"title\", i18n_15, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"ngb-dp-arrow\", 4, \"ngIf\"], [1, \"ngb-dp-month-name\"]]; }, template: function NgbDatepickerNavigation_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_1_listener() { return ctx.navigate.emit(ctx.navigation.PREV); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template, 1, 4, \"ngb-datepicker-navigation-select\", 3);\n ɵngcc0.ɵɵtemplate(4, NgbDatepickerNavigation_4_Template, 1, 1, undefined, 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5);\n ɵngcc0.ɵɵelementStart(6, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_6_listener() { return ctx.navigate.emit(ctx.navigation.NEXT); });\n ɵngcc0.ɵɵelement(7, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.prevDisabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSelect);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.showSelect);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.nextDisabled);\n } }, directives: function () { return [ɵngcc1.NgIf, NgbDatepickerNavigationSelect, ɵngcc1.NgForOf]; }, styles: [\"ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbDatepickerNavigation.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\nNgbDatepickerNavigation.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n showSelect: [{ type: Input }],\n prevDisabled: [{ type: Input }],\n nextDisabled: [{ type: Input }],\n selectBoxes: [{ type: Input }],\n navigate: [{ type: Output }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigation, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n
\n \n
\n \n \n\n \n
0\">
\n
\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\n
\n
\n
\n
\n \n
\n `,\n styles: [\"ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { months: [{\n type: Input\n }], navigate: [{\n type: Output\n }], select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showSelect: [{\n type: Input\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], selectBoxes: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst isContainedIn = (element, array) => array ? array.some(item => item.contains(element)) : false;\n/** @type {?} */\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\n// we'll have to use 'touch' events instead of 'mouse' events on iOS and add a more significant delay\n// to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\n/** @type {?} */\nlet iOS = false;\nif (typeof navigator !== 'undefined') {\n iOS = !!navigator.userAgent && /iPad|iPhone|iPod/.test(navigator.userAgent);\n}\n/**\n * @param {?} zone\n * @param {?} document\n * @param {?} type\n * @param {?} close\n * @param {?} closed$\n * @param {?} insideElements\n * @param {?=} ignoreElements\n * @param {?=} insideSelector\n * @return {?}\n */\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(() => {\n /** @type {?} */\n const shouldCloseOnClick = (event) => {\n /** @type {?} */\n const element = (/** @type {?} */ (event.target));\n if ((event instanceof MouseEvent && event.button === 2) || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n }\n else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n }\n else /* if (type === true) */ {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n };\n /** @type {?} */\n const escapes$ = fromEvent(document, 'keydown')\n .pipe(takeUntil(closed$), \n // tslint:disable-next-line:deprecation\n filter(e => e.which === Key.Escape));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown/touchstart',\n // because on 'mouseup/touchend' DOM nodes might be detached\n /** @type {?} */\n const mouseDowns$ = fromEvent(document, iOS ? 'touchstart' : 'mousedown')\n .pipe(map(shouldCloseOnClick), takeUntil(closed$));\n /** @type {?} */\n const closeableClicks$ = fromEvent(document, iOS ? 'touchend' : 'mouseup')\n .pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(iOS ? 16 : 0), takeUntil(closed$));\n race([escapes$, closeableClicks$]).subscribe(() => zone.run(close));\n });\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n * @param {?} element\n * @return {?}\n */\nfunction getFocusableBoundaryElements(element) {\n /** @type {?} */\n const list = Array.from((/** @type {?} */ (element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))))\n .filter(el => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * \\@param element The element around which focus will be trapped inside\n * \\@param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * \\@param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n * @type {?}\n */\nconst ngbFocusTrap = (element, stopFocusTrap$, refocusOnClick = false) => {\n // last focused element\n /** @type {?} */\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown')\n .pipe(takeUntil(stopFocusTrap$), \n // tslint:disable:deprecation\n filter(e => e.which === Key.Tab), \n // tslint:enable:deprecation\n withLatestFrom(lastFocusedElement$))\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => (/** @type {?} */ (arr[1]))))\n .subscribe(lastFocusedElement => lastFocusedElement.focus());\n }\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nclass Positioning {\n /**\n * @param {?} element\n * @return {?}\n */\n getAllStyles(element) { return window.getComputedStyle(element); }\n /**\n * @param {?} element\n * @param {?} prop\n * @return {?}\n */\n getStyle(element, prop) { return this.getAllStyles(element)[prop]; }\n /**\n * @param {?} element\n * @return {?}\n */\n isStaticPositioned(element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n }\n /**\n * @param {?} element\n * @return {?}\n */\n offsetParent(element) {\n /** @type {?} */\n let offsetParentEl = (/** @type {?} */ (element.offsetParent)) || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = (/** @type {?} */ (offsetParentEl.offsetParent));\n }\n return offsetParentEl || document.documentElement;\n }\n /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n position(element, round = true) {\n /** @type {?} */\n let elPosition;\n /** @type {?} */\n let parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n /** @type {?} */\n const offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n }\n /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n offset(element, round = true) {\n /** @type {?} */\n const elBcr = element.getBoundingClientRect();\n /** @type {?} */\n const viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n /** @type {?} */\n let elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n }\n /*\n Return false if the element to position is outside the viewport\n */\n /**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @return {?}\n */\n positionElements(hostElement, targetElement, placement, appendToBody) {\n const [placementPrimary = 'top', placementSecondary = 'center'] = placement.split('-');\n /** @type {?} */\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n /** @type {?} */\n const targetElStyles = this.getAllStyles(targetElement);\n /** @type {?} */\n const marginTop = parseFloat(targetElStyles.marginTop);\n /** @type {?} */\n const marginBottom = parseFloat(targetElStyles.marginBottom);\n /** @type {?} */\n const marginLeft = parseFloat(targetElStyles.marginLeft);\n /** @type {?} */\n const marginRight = parseFloat(targetElStyles.marginRight);\n /** @type {?} */\n let topPosition = 0;\n /** @type {?} */\n let leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = `translate(${Math.round(leftPosition)}px, ${Math.round(topPosition)}px)`;\n // Check if the targetElement is inside the viewport\n /** @type {?} */\n const targetElBCR = targetElement.getBoundingClientRect();\n /** @type {?} */\n const html = document.documentElement;\n /** @type {?} */\n const windowHeight = window.innerHeight || html.clientHeight;\n /** @type {?} */\n const windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n }\n}\n/** @type {?} */\nconst placementSeparator = /\\s+/;\n/** @type {?} */\nconst positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\n/**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @param {?=} baseClass\n * @return {?}\n */\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n /** @type {?} */\n let placementVals = Array.isArray(placement) ? placement : (/** @type {?} */ (placement.split(placementSeparator)));\n /** @type {?} */\n const allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n /** @type {?} */\n const classList = targetElement.classList;\n /** @type {?} */\n const addClassesToTarget = (targetPlacement) => {\n const [primary, secondary] = targetPlacement.split('-');\n /** @type {?} */\n const classes = [];\n if (baseClass) {\n classes.push(`${baseClass}-${primary}`);\n if (secondary) {\n classes.push(`${baseClass}-${primary}-${secondary}`);\n }\n classes.forEach((classname) => { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach((placementToRemove) => { classList.remove(`${baseClass}-${placementToRemove}`); });\n }\n // replace auto placement with other placements\n /** @type {?} */\n let hasAuto = placementVals.findIndex(val => val === 'auto');\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, (/** @type {?} */ (obj)));\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n /** @type {?} */\n const style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n /** @type {?} */\n let testPlacement;\n /** @type {?} */\n let isInViewport = false;\n for (testPlacement of placementVals) {\n /** @type {?} */\n let addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach((classname) => { classList.remove(classname); });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n * @abstract\n */\nclass NgbDateParserFormatter {\n}\nNgbDateParserFormatter.ɵfac = function NgbDateParserFormatter_Factory(t) { return new (t || NgbDateParserFormatter)(); };\nNgbDateParserFormatter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDateParserFormatter, factory: function () { return NGB_DATEPICKER_PARSER_FORMATTER_FACTORY(); }, providedIn: 'root' });\n/** @nocollapse */ NgbDateParserFormatter.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateParserFormatter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY }]\n }], null, null); })();\nclass NgbDateISOParserFormatter extends NgbDateParserFormatter {\n /**\n * @param {?} value\n * @return {?}\n */\n parse(value) {\n if (value) {\n /** @type {?} */\n const dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return { year: toInteger(dateParts[0]), month: null, day: null };\n }\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n }\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n }\n }\n return null;\n }\n /**\n * @param {?} date\n * @return {?}\n */\n format(date) {\n return date ?\n `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}` :\n '';\n }\n}\nNgbDateISOParserFormatter.ɵfac = function NgbDateISOParserFormatter_Factory(t) { return ɵNgbDateISOParserFormatter_BaseFactory(t || NgbDateISOParserFormatter); };\nNgbDateISOParserFormatter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDateISOParserFormatter, factory: NgbDateISOParserFormatter.ɵfac });\nconst ɵNgbDateISOParserFormatter_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateISOParserFormatter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_DATEPICKER_VALUE_ACCESSOR$1 = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbInputDatepicker),\n multi: true\n};\n/** @type {?} */\nconst NGB_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NgbInputDatepicker),\n multi: true\n};\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nclass NgbInputDatepicker {\n /**\n * @param {?} _parserFormatter\n * @param {?} _elRef\n * @param {?} _vcRef\n * @param {?} _renderer\n * @param {?} _cfr\n * @param {?} _ngZone\n * @param {?} _service\n * @param {?} _calendar\n * @param {?} _dateAdapter\n * @param {?} _document\n * @param {?} _changeDetector\n */\n constructor(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _service, _calendar, _dateAdapter, _document, _changeDetector) {\n this._parserFormatter = _parserFormatter;\n this._elRef = _elRef;\n this._vcRef = _vcRef;\n this._renderer = _renderer;\n this._cfr = _cfr;\n this._ngZone = _ngZone;\n this._service = _service;\n this._calendar = _calendar;\n this._dateAdapter = _dateAdapter;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._cRef = null;\n this._disabled = false;\n /**\n * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.\n *\n * * `true` - the popup will close on both date selection and outside click.\n * * `false` - the popup can only be closed manually via `close()` or `toggle()` methods.\n * * `\"inside\"` - the popup will close on date selection, but not outside clicks.\n * * `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.\n *\n * \\@since 3.0.0\n */\n this.autoClose = true;\n /**\n * The preferred placement of the datepicker popup.\n *\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n * `\"right-bottom\"`\n *\n * Accepts an array of strings or a string with space separated possible values.\n *\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * \\@since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * \\@since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = (_) => { };\n this._onTouched = () => { };\n this._validatorChange = () => { };\n this._zoneSubscription = _ngZone.onStable.subscribe(() => this._updatePopupPosition());\n }\n /**\n * @return {?}\n */\n get disabled() {\n return this._disabled;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) {\n this._disabled = value === '' || (value && value !== 'false');\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) { this._onChange = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) { this._onTouched = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnValidatorChange(fn) { this._validatorChange = fn; }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n /**\n * @param {?} c\n * @return {?}\n */\n validate(c) {\n /** @type {?} */\n const value = c.value;\n if (value === null || value === undefined) {\n return null;\n }\n /** @type {?} */\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!this._calendar.isValid(ngbDate)) {\n return { 'ngbDate': { invalid: c.value } };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return { 'ngbDate': { requiredBefore: this.minDate } };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return { 'ngbDate': { requiredAfter: this.maxDate } };\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n }\n /**\n * @param {?} value\n * @param {?=} updateView\n * @return {?}\n */\n manualDateChange(value, updateView = false) {\n /** @type {?} */\n const inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n }\n /**\n * @return {?}\n */\n isOpen() { return !!this._cRef; }\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n * @return {?}\n */\n open() {\n if (!this.isOpen()) {\n /** @type {?} */\n const cf = this._cfr.resolveComponentFactory(NgbDatepicker);\n this._cRef = this._vcRef.createComponent(cf);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef.instance);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange((selectedDate) => {\n this.writeValue(selectedDate);\n this._onChange(selectedDate);\n this._onTouched();\n });\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n ngbFocusTrap(this._cRef.location.nativeElement, this.closed, true);\n this._cRef.instance.focus();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n }\n /**\n * Closes the datepicker popup.\n * @return {?}\n */\n close() {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this.closed.emit();\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the datepicker popup.\n * @return {?}\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n navigateTo(date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n }\n /**\n * @return {?}\n */\n onBlur() { this._onTouched(); }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.close();\n this._zoneSubscription.unsubscribe();\n }\n /**\n * @param {?} datepickerInstance\n * @return {?}\n */\n _applyDatepickerInputs(datepickerInstance) {\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekdays', 'showWeekNumbers']\n .forEach((optionName) => {\n if (this[optionName] !== undefined) {\n datepickerInstance[optionName] = this[optionName];\n }\n });\n datepickerInstance.startDate = this.startDate || this._model;\n }\n /**\n * @param {?} nativeElement\n * @return {?}\n */\n _applyPopupStyling(nativeElement) {\n this._renderer.addClass(nativeElement, 'dropdown-menu');\n this._renderer.addClass(nativeElement, 'show');\n if (this.container === 'body') {\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\n }\n }\n /**\n * @param {?} datepickerInstance\n * @return {?}\n */\n _subscribeForDatepickerOutputs(datepickerInstance) {\n datepickerInstance.navigate.subscribe(navigateEvent => this.navigate.emit(navigateEvent));\n datepickerInstance.select.subscribe(date => {\n this.dateSelect.emit(date);\n if (this.autoClose === true || this.autoClose === 'inside') {\n this.close();\n }\n });\n }\n /**\n * @param {?} model\n * @return {?}\n */\n _writeModelValue(model) {\n /** @type {?} */\n const value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n }\n /**\n * @param {?} date\n * @return {?}\n */\n _fromDateStruct(date) {\n /** @type {?} */\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n }\n /**\n * @return {?}\n */\n _updatePopupPosition() {\n if (!this._cRef) {\n return;\n }\n /** @type {?} */\n let hostElement;\n if (typeof this.positionTarget === 'string') {\n hostElement = window.document.querySelector(this.positionTarget);\n }\n else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n }\n else {\n hostElement = this._elRef.nativeElement;\n }\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\n }\n}\nNgbInputDatepicker.ɵfac = function NgbInputDatepicker_Factory(t) { return new (t || NgbInputDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDateParserFormatter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbInputDatepicker.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbInputDatepicker, selectors: [[\"input\", \"ngbDatepicker\", \"\"]], hostVars: 1, hostBindings: function NgbInputDatepicker_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function NgbInputDatepicker_input_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value); })(\"change\", function NgbInputDatepicker_change_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value, true); })(\"blur\", function NgbInputDatepicker_blur_HostBindingHandler() { return ctx.onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n } }, inputs: { autoClose: \"autoClose\", placement: \"placement\", disabled: \"disabled\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekdays: \"showWeekdays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", container: \"container\", positionTarget: \"positionTarget\" }, outputs: { dateSelect: \"dateSelect\", navigate: \"navigate\", closed: \"closed\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([NGB_DATEPICKER_VALUE_ACCESSOR$1, NGB_DATEPICKER_VALIDATOR, NgbDatepickerService]), ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nNgbInputDatepicker.ctorParameters = () => [\n { type: NgbDateParserFormatter },\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: NgZone },\n { type: NgbDatepickerService },\n { type: NgbCalendar },\n { type: NgbDateAdapter },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef }\n];\nNgbInputDatepicker.propDecorators = {\n autoClose: [{ type: Input }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n placement: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n container: [{ type: Input }],\n positionTarget: [{ type: Input }],\n dateSelect: [{ type: Output }],\n navigate: [{ type: Output }],\n closed: [{ type: Output }],\n disabled: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepicker, [{\n type: Directive,\n args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [NGB_DATEPICKER_VALUE_ACCESSOR$1, NGB_DATEPICKER_VALIDATOR, NgbDatepickerService]\n }]\n }], function () { return [{ type: NgbDateParserFormatter }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.NgZone }, { type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDateAdapter }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }]; }, { autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], dateSelect: [{\n type: Output\n }], navigate: [{\n type: Output\n }], closed: [{\n type: Output\n }], disabled: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekdays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], container: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbDatepickerDayView {\n /**\n * @param {?} i18n\n */\n constructor(i18n) {\n this.i18n = i18n;\n }\n /**\n * @return {?}\n */\n isMuted() { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); }\n}\nNgbDatepickerDayView.ɵfac = function NgbDatepickerDayView_Factory(t) { return new (t || NgbDatepickerDayView)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerDayView.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerDayView, selectors: [[\"\", \"ngbDatepickerDayView\", \"\"]], hostAttrs: [1, \"btn-light\"], hostVars: 10, hostBindings: function NgbDatepickerDayView_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"bg-primary\", ctx.selected)(\"text-white\", ctx.selected)(\"text-muted\", ctx.isMuted())(\"outside\", ctx.isMuted())(\"active\", ctx.focused);\n } }, inputs: { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, attrs: _c17, decls: 1, vars: 1, template: function NgbDatepickerDayView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ctx.i18n.getDayNumerals(ctx.date));\n } }, styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbDatepickerDayView.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\nNgbDatepickerDayView.propDecorators = {\n currentMonth: [{ type: Input }],\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n focused: [{ type: Input }],\n selected: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerDayView, [{\n type: Component,\n args: [{\n selector: '[ngbDatepickerDayView]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n },\n template: `{{ i18n.getDayNumerals(date) }}`,\n styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { currentMonth: [{\n type: Input\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], focused: [{\n type: Input\n }], selected: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbDatepickerNavigationSelect {\n /**\n * @param {?} i18n\n */\n constructor(i18n) {\n this.i18n = i18n;\n this.select = new EventEmitter();\n }\n /**\n * @param {?} month\n * @return {?}\n */\n changeMonth(month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); }\n /**\n * @param {?} year\n * @return {?}\n */\n changeYear(year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); }\n}\nNgbDatepickerNavigationSelect.ɵfac = function NgbDatepickerNavigationSelect_Factory(t) { return new (t || NgbDatepickerNavigationSelect)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerNavigationSelect.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigationSelect, selectors: [[\"ngb-datepicker-navigation-select\"]], inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, outputs: { select: \"select\" }, decls: 4, vars: 6, consts: function () { let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_19 = goog.getMsg(\"Select month\");\n i18n_18 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_19;\n }\n else {\n i18n_18 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_20; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_21 = goog.getMsg(\"Select month\");\n i18n_20 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_21;\n }\n else {\n i18n_20 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_22; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_23 = goog.getMsg(\"Select year\");\n i18n_22 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_23;\n }\n else {\n i18n_22 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } let i18n_24; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_25 = goog.getMsg(\"Select year\");\n i18n_24 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_25;\n }\n else {\n i18n_24 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } return [[\"aria-label\", i18n_18, \"title\", i18n_20, 1, \"custom-select\", 3, \"disabled\", \"value\", \"change\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"aria-label\", i18n_22, \"title\", i18n_24, 1, \"custom-select\", 3, \"disabled\", \"value\", \"change\"], [3, \"value\"]]; }, template: function NgbDatepickerNavigationSelect_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"select\", 0);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_0_listener($event) { return ctx.changeMonth($event.target.value); });\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerNavigationSelect_option_1_Template, 2, 3, \"option\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"select\", 2);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_2_listener($event) { return ctx.changeYear($event.target.value); });\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigationSelect_option_3_Template, 2, 2, \"option\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled)(\"value\", ctx.date == null ? null : ctx.date.month);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.months);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled)(\"value\", ctx.date == null ? null : ctx.date.year);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.years);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc2.NgSelectOption, ɵngcc2.ɵangular_packages_forms_forms_z], styles: [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbDatepickerNavigationSelect.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\nNgbDatepickerNavigationSelect.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n years: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigationSelect, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n \n \n \n \n `,\n styles: [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], years: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass NgbCalendarHijri extends NgbCalendar {\n /**\n * @return {?}\n */\n getDaysPerWeek() { return 7; }\n /**\n * @return {?}\n */\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n /**\n * @return {?}\n */\n getWeeksPerMonth() { return 6; }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n /**\n * @param {?} date\n * @return {?}\n */\n getWeekday(date) {\n /** @type {?} */\n const day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n const date = week[thursdayIndex];\n /** @type {?} */\n const jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n const time = jsDate.getTime();\n /** @type {?} */\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n }\n /**\n * @return {?}\n */\n getToday() { return this.fromGregorian(new Date()); }\n /**\n * @param {?} date\n * @return {?}\n */\n isValid(date) {\n return date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\n !isNaN(this.toGregorian(date).getTime());\n }\n /**\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\n _setDay(date, day) {\n day = +day;\n /** @type {?} */\n let mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n }\n /**\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\n _setMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n }\n /**\n * @param {?} date\n * @param {?} year\n * @return {?}\n */\n _setYear(date, year) {\n date.year = +year;\n return date;\n }\n}\nNgbCalendarHijri.ɵfac = function NgbCalendarHijri_Factory(t) { return ɵNgbCalendarHijri_BaseFactory(t || NgbCalendarHijri); };\nNgbCalendarHijri.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHijri, factory: NgbCalendarHijri.ɵfac });\nconst ɵNgbCalendarHijri_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHijri);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHijri, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Checks if islamic year is a leap year\n * @param {?} hYear\n * @return {?}\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n * @param {?} gDate\n * @return {?}\n */\nfunction isGregorianLeapYear(gDate) {\n /** @type {?} */\n const year = gDate.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hYear\n * @param {?} hMonth\n * @return {?}\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n * @param {?} year\n * @return {?}\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n * @type {?}\n */\nconst GREGORIAN_EPOCH = 1721425.5;\n/** @type {?} */\nconst ISLAMIC_EPOCH = 1948439.5;\nclass NgbCalendarIslamicCivil extends NgbCalendarHijri {\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n fromGregorian(gDate) {\n /** @type {?} */\n const gYear = gDate.getFullYear();\n /** @type {?} */\n const gMonth = gDate.getMonth();\n /** @type {?} */\n const gDay = gDate.getDate();\n /** @type {?} */\n let julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n /** @type {?} */\n const days = julianDay - ISLAMIC_EPOCH;\n /** @type {?} */\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\n /** @type {?} */\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n /** @type {?} */\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n toGregorian(hDate) {\n /** @type {?} */\n const hYear = hDate.year;\n /** @type {?} */\n const hMonth = hDate.month - 1;\n /** @type {?} */\n const hDay = hDate.day;\n /** @type {?} */\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n /** @type {?} */\n const wjd = Math.floor(julianDay - 0.5) + 0.5;\n /** @type {?} */\n const depoch = wjd - GREGORIAN_EPOCH;\n /** @type {?} */\n const quadricent = Math.floor(depoch / 146097);\n /** @type {?} */\n const dqc = mod(depoch, 146097);\n /** @type {?} */\n const cent = Math.floor(dqc / 36524);\n /** @type {?} */\n const dcent = mod(dqc, 36524);\n /** @type {?} */\n const quad = Math.floor(dcent / 1461);\n /** @type {?} */\n const dquad = mod(dcent, 1461);\n /** @type {?} */\n const yindex = Math.floor(dquad / 365);\n /** @type {?} */\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n /** @type {?} */\n const gYearStart = GREGORIAN_EPOCH + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400);\n /** @type {?} */\n const yearday = wjd - gYearStart;\n /** @type {?} */\n const tjd = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\n /** @type {?} */\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\n /** @type {?} */\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n /** @type {?} */\n const tjd2 = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) +\n 1);\n /** @type {?} */\n const day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n }\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\n getDaysPerMonth(month, year) {\n year = year + Math.floor(month / 13);\n month = ((month - 1) % 12) + 1;\n /** @type {?} */\n let length = 29 + month % 2;\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n }\n}\nNgbCalendarIslamicCivil.ɵfac = function NgbCalendarIslamicCivil_Factory(t) { return ɵNgbCalendarIslamicCivil_BaseFactory(t || NgbCalendarIslamicCivil); };\nNgbCalendarIslamicCivil.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicCivil, factory: NgbCalendarIslamicCivil.ɵfac });\nconst ɵNgbCalendarIslamicCivil_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicCivil, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * @type {?}\n */\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\n/** @type {?} */\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\n/** @type {?} */\nconst HIJRI_BEGIN = 1300;\n/** @type {?} */\nconst HIJRI_END = 1600;\n/** @type {?} */\nconst ONE_DAY = 1000 * 60 * 60 * 24;\n/** @type {?} */\nconst MONTH_LENGTH = [\n // 1300-1304\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n // 1305-1309\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n // 1310-1314\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n // 1315-1319\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n // 1320-1324\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n // 1325-1329\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n // 1330-1334\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n // 1335-1339\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n // 1340-1344\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n // 1345-1349\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n // 1350-1354\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n // 1355-1359\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n // 1360-1364\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n // 1365-1369\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n // 1370-1374\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n // 1375-1379\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n // 1380-1384\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n // 1385-1389\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n // 1390-1394\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n // 1395-1399\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n // 1400-1404\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n // 1405-1409\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n // 1410-1414\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n // 1415-1419\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n // 1420-1424\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n // 1425-1429\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n // 1430-1434\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n // 1435-1439\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n // 1440-1444\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n // 1445-1449\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n // 1450-1454\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n // 1455-1459\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n // 1460-1464\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n // 1465-1469\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n // 1470-1474\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n // 1475-1479\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n // 1480-1484\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n // 1485-1489\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n // 1490-1494\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n // 1495-1499\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n // 1500-1504\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n // 1505-1509\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n // 1510-1514\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n // 1515-1519\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n // 1520-1524\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n // 1525-1529\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n // 1530-1534\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n // 1535-1539\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n // 1540-1544\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n // 1545-1549\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n // 1550-1554\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n // 1555-1559\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n // 1560-1564\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n // 1565-1569\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n // 1570-1574\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n // 1575-1579\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n // 1580-1584\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n // 1585-1589\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n // 1590-1594\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n // 1595-1599\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n // 1600\n '001010011101'\n];\n/**\n * @param {?} date1\n * @param {?} date2\n * @return {?}\n */\nfunction getDaysDiff(date1, date2) {\n /** @type {?} */\n const diff = Math.abs(date1.getTime() - date2.getTime());\n return Math.round(diff / ONE_DAY);\n}\nclass NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n fromGregorian(gDate) {\n /** @type {?} */\n let hDay = 1;\n /** @type {?} */\n let hMonth = 0;\n /** @type {?} */\n let hYear = 1300;\n /** @type {?} */\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n /** @type {?} */\n let year = 1300;\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (let j = 0; j < 12; j++) {\n /** @type {?} */\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n }\n else {\n return super.fromGregorian(gDate);\n }\n }\n /**\n * Converts the current Hijri date to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n toGregorian(hDate) {\n /** @type {?} */\n const hYear = hDate.year;\n /** @type {?} */\n const hMonth = hDate.month - 1;\n /** @type {?} */\n const hDay = hDate.day;\n /** @type {?} */\n let gDate = new Date(GREGORIAN_FIRST_DATE);\n /** @type {?} */\n let dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (let m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (let m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n }\n else {\n gDate = super.toGregorian(hDate);\n }\n return gDate;\n }\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hMonth\n * @param {?} hYear\n * @return {?}\n */\n getDaysPerMonth(hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n /** @type {?} */\n const pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return super.getDaysPerMonth(hMonth, hYear);\n }\n}\nNgbCalendarIslamicUmalqura.ɵfac = function NgbCalendarIslamicUmalqura_Factory(t) { return ɵNgbCalendarIslamicUmalqura_BaseFactory(t || NgbCalendarIslamicUmalqura); };\nNgbCalendarIslamicUmalqura.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicUmalqura, factory: NgbCalendarIslamicUmalqura.ɵfac });\nconst ɵNgbCalendarIslamicUmalqura_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicUmalqura, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n * @param {?} jalaliDate\n * @return {?}\n */\nfunction toGregorian(jalaliDate) {\n /** @type {?} */\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n /** @type {?} */\n let date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n * @param {?} gdate\n * @return {?}\n */\nfunction fromGregorian(gdate) {\n /** @type {?} */\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\n/**\n * @param {?} date\n * @param {?} yearValue\n * @return {?}\n */\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\n/**\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n}\n/**\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\nfunction setJalaliDay(date, day) {\n /** @type {?} */\n let mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\n/**\n * @param {?} jalaliYear\n * @return {?}\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n /** @type {?} */\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n /** @type {?} */\n const breaksLength = breaks.length;\n /** @type {?} */\n const gYear = jalaliYear + 621;\n /** @type {?} */\n let leapJ = -14;\n /** @type {?} */\n let jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n /** @type {?} */\n let jump;\n for (let i = 1; i < breaksLength; i += 1) {\n /** @type {?} */\n const jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod$1(jump, 33), 4);\n jp = jm;\n }\n /** @type {?} */\n let n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod$1(n, 33) + 3, 4);\n if (mod$1(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n /** @type {?} */\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n /** @type {?} */\n const march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n /** @type {?} */\n let leap = mod$1(mod$1(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return { leap: leap, gy: gYear, march: march };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\n/**\n * @param {?} julianDayNumber\n * @return {?}\n */\nfunction julianToGregorian(julianDayNumber) {\n /** @type {?} */\n let j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n /** @type {?} */\n const i = div(mod$1(j, 1461), 4) * 5 + 308;\n /** @type {?} */\n const gDay = div(mod$1(i, 153), 5) + 1;\n /** @type {?} */\n const gMonth = mod$1(div(i, 153), 12) + 1;\n /** @type {?} */\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\n/**\n * @param {?} gy\n * @param {?} gm\n * @param {?} gd\n * @return {?}\n */\nfunction gregorianToJulian(gy, gm, gd) {\n /** @type {?} */\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod$1(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\n/**\n * @param {?} julianDayNumber\n * @return {?}\n */\nfunction julianToJalali(julianDayNumber) {\n /** @type {?} */\n let gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n ;\n /** @type {?} */\n let jalaliYear = gy - 621;\n /** @type {?} */\n let r = jalCal(jalaliYear);\n /** @type {?} */\n let gregorianDay = gregorianToJulian(gy, 3, r.march);\n /** @type {?} */\n let jalaliDay;\n /** @type {?} */\n let jalaliMonth;\n /** @type {?} */\n let numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod$1(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n }\n else {\n // The remaining months.\n numberOfDays -= 186;\n }\n }\n else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod$1(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\n/**\n * @param {?} jYear\n * @param {?} jMonth\n * @param {?} jDay\n * @return {?}\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n /** @type {?} */\n let r = jalCal(jYear);\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysPerMonth(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbCalendarPersian extends NgbCalendar {\n /**\n * @return {?}\n */\n getDaysPerWeek() { return 7; }\n /**\n * @return {?}\n */\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n /**\n * @return {?}\n */\n getWeeksPerMonth() { return 6; }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n /**\n * @param {?} date\n * @return {?}\n */\n getWeekday(date) {\n /** @type {?} */\n const day = toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n const date = week[thursdayIndex];\n /** @type {?} */\n const jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n const time = jsDate.getTime();\n /** @type {?} */\n const startDate = toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n }\n /**\n * @return {?}\n */\n getToday() { return fromGregorian(new Date()); }\n /**\n * @param {?} date\n * @return {?}\n */\n isValid(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\n !isNaN(toGregorian(date).getTime());\n }\n}\nNgbCalendarPersian.ɵfac = function NgbCalendarPersian_Factory(t) { return ɵNgbCalendarPersian_BaseFactory(t || NgbCalendarPersian); };\nNgbCalendarPersian.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarPersian, factory: NgbCalendarPersian.ɵfac });\nconst ɵNgbCalendarPersian_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarPersian);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarPersian, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst PARTS_PER_HOUR = 1080;\n/** @type {?} */\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\n/** @type {?} */\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\n/** @type {?} */\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\n/** @type {?} */\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\n/** @type {?} */\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\n/** @type {?} */\nconst GREGORIAN_EPOCH$1 = 1721425.5;\n/**\n * @param {?} year\n * @return {?}\n */\nfunction isGregorianLeapYear$1(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction numberOfFirstDayInYear(year) {\n /** @type {?} */\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n /** @type {?} */\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n /** @type {?} */\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n /** @type {?} */\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n /** @type {?} */\n let dayOfWeek = dayNumber % 7;\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n }\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\n/**\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInGregorianMonth(month, year) {\n /** @type {?} */\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear$1(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction isHebrewLeapYear(year) {\n /** @type {?} */\n let b = (year * 12 + 17) % 19;\n return b >= ((b < 0) ? -7 : 12);\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInHebrewMonth(month, year) {\n /** @type {?} */\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n /** @type {?} */\n let yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\n /** @type {?} */\n let leapYear = isHebrewLeapYear(year);\n /** @type {?} */\n let daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\n/**\n * @param {?} date\n * @return {?}\n */\nfunction getDayNumberInHebrewYear(date) {\n /** @type {?} */\n let numberOfDay = 0;\n for (let i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\n/**\n * @param {?} date\n * @param {?} val\n * @return {?}\n */\nfunction setHebrewMonth(date, val) {\n /** @type {?} */\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n }\n else {\n date.month += val;\n val = 0;\n }\n }\n else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n }\n else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * @param {?} date\n * @param {?} val\n * @return {?}\n */\nfunction setHebrewDay(date, val) {\n /** @type {?} */\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n }\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n }\n else {\n date.day += val;\n val = 0;\n }\n }\n else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n }\n else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n * @param {?} gdate\n * @return {?}\n */\nfunction fromGregorian$1(gdate) {\n /** @type {?} */\n const date = new Date(gdate);\n /** @type {?} */\n const gYear = date.getFullYear();\n /** @type {?} */\n const gMonth = date.getMonth();\n /** @type {?} */\n const gDay = date.getDate();\n /** @type {?} */\n let julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n /** @type {?} */\n let daysSinceHebEpoch = julianDay - 347997;\n /** @type {?} */\n let monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n /** @type {?} */\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n /** @type {?} */\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n /** @type {?} */\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n /** @type {?} */\n let hMonth = 1;\n /** @type {?} */\n let hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n * @param {?} hebrewDate\n * @return {?}\n */\nfunction toGregorian$1(hebrewDate) {\n /** @type {?} */\n const hYear = hebrewDate.year;\n /** @type {?} */\n const hMonth = hebrewDate.month;\n /** @type {?} */\n const hDay = hebrewDate.day;\n /** @type {?} */\n let days = numberOfFirstDayInYear(hYear);\n for (let i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n /** @type {?} */\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n /** @type {?} */\n let after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n /** @type {?} */\n let gYear = 1970;\n /** @type {?} */\n let gMonth = 1;\n /** @type {?} */\n let gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear$1(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear) ? 366 : 365;\n gYear++;\n }\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n }\n else {\n gDay += diffDays;\n diffDays = 0;\n }\n }\n else {\n if (diffDays >= (isGregorianLeapYear$1(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear - 1) ? 366 : 365;\n gYear--;\n }\n else {\n if (gMonth > 1) {\n gMonth--;\n }\n else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n }\n else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\n/**\n * @param {?} numerals\n * @return {?}\n */\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n /** @type {?} */\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n /** @type {?} */\n const hArray10_19 = [\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\n ];\n /** @type {?} */\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n /** @type {?} */\n const hArray100_900 = [\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\n '\\u05ea\\u05ea\\u05e7'\n ];\n /** @type {?} */\n const hArray1000_9000 = [\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\n ];\n /** @type {?} */\n const geresh = '\\u05f3';\n /** @type {?} */\n const gershaim = '\\u05f4';\n /** @type {?} */\n let mem = 0;\n /** @type {?} */\n let result = [];\n /** @type {?} */\n let step = 0;\n while (numerals > 0) {\n /** @type {?} */\n let m = numerals % 10;\n if (step === 0) {\n mem = m;\n }\n else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n }\n else {\n result.unshift(hArray10_19[mem]);\n }\n }\n else if (step === 2) {\n result.unshift(hArray100_900[m]);\n }\n else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n }\n else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * \\@since 3.2.0\n */\nclass NgbCalendarHebrew extends NgbCalendar {\n /**\n * @return {?}\n */\n getDaysPerWeek() { return 7; }\n /**\n * @param {?=} year\n * @return {?}\n */\n getMonths(year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n }\n /**\n * @return {?}\n */\n getWeeksPerMonth() { return 6; }\n /**\n * @param {?} date\n * @return {?}\n */\n isValid(date) {\n /** @type {?} */\n let b = date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$1(date).getTime());\n }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n }\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n /**\n * @param {?} date\n * @return {?}\n */\n getWeekday(date) {\n /** @type {?} */\n const day = toGregorian$1(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n getWeekNumber(week, firstDayOfWeek) {\n /** @type {?} */\n const date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n }\n /**\n * @return {?}\n */\n getToday() { return fromGregorian$1(new Date()); }\n /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n toGregorian(date) { return fromJSDate(toGregorian$1(date)); }\n /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n fromGregorian(date) { return fromGregorian$1(toJSDate(date)); }\n}\nNgbCalendarHebrew.ɵfac = function NgbCalendarHebrew_Factory(t) { return ɵNgbCalendarHebrew_BaseFactory(t || NgbCalendarHebrew); };\nNgbCalendarHebrew.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHebrew, factory: NgbCalendarHebrew.ɵfac });\nconst ɵNgbCalendarHebrew_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHebrew);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHebrew, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\n/** @type {?} */\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/** @type {?} */\nconst MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/**\n * \\@since 3.2.0\n */\nclass NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n getMonthShortName(month, year) { return this.getMonthFullName(month, year); }\n /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n getMonthFullName(month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] : MONTHS[month - 1];\n }\n /**\n * @param {?} weekday\n * @return {?}\n */\n getWeekdayShortName(weekday) { return WEEKDAYS[weekday - 1]; }\n /**\n * @param {?} date\n * @return {?}\n */\n getDayAriaLabel(date) {\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n }\n /**\n * @param {?} date\n * @return {?}\n */\n getDayNumerals(date) { return hebrewNumerals(date.day); }\n /**\n * @param {?} weekNumber\n * @return {?}\n */\n getWeekNumerals(weekNumber) { return hebrewNumerals(weekNumber); }\n /**\n * @param {?} year\n * @return {?}\n */\n getYearNumerals(year) { return hebrewNumerals(year); }\n}\nNgbDatepickerI18nHebrew.ɵfac = function NgbDatepickerI18nHebrew_Factory(t) { return ɵNgbDatepickerI18nHebrew_BaseFactory(t || NgbDatepickerI18nHebrew); };\nNgbDatepickerI18nHebrew.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nHebrew, factory: NgbDatepickerI18nHebrew.ɵfac });\nconst ɵNgbDatepickerI18nHebrew_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nHebrew, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nclass NgbDateNativeAdapter extends NgbDateAdapter {\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n * @param {?} date\n * @return {?}\n */\n fromModel(date) {\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\n }\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n * @param {?} date\n * @return {?}\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\n null;\n }\n /**\n * @param {?} date\n * @return {?}\n */\n _fromNativeDate(date) {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n }\n /**\n * @param {?} date\n * @return {?}\n */\n _toNativeDate(date) {\n /** @type {?} */\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeAdapter.ɵfac = function NgbDateNativeAdapter_Factory(t) { return ɵNgbDateNativeAdapter_BaseFactory(t || NgbDateNativeAdapter); };\nNgbDateNativeAdapter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeAdapter, factory: NgbDateNativeAdapter.ɵfac });\nconst ɵNgbDateNativeAdapter_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeAdapter);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * \\@since 3.2.0\n */\nclass NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n /**\n * @param {?} date\n * @return {?}\n */\n _fromNativeDate(date) {\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n }\n /**\n * @param {?} date\n * @return {?}\n */\n _toNativeDate(date) {\n /** @type {?} */\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeUTCAdapter.ɵfac = function NgbDateNativeUTCAdapter_Factory(t) { return ɵNgbDateNativeUTCAdapter_BaseFactory(t || NgbDateNativeUTCAdapter); };\nNgbDateNativeUTCAdapter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeUTCAdapter, factory: NgbDateNativeUTCAdapter.ɵfac });\nconst ɵNgbDateNativeUTCAdapter_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeUTCAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbDatepickerModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbDatepickerModule }; }\n}\nNgbDatepickerModule.ɵfac = function NgbDatepickerModule_Factory(t) { return new (t || NgbDatepickerModule)(); };\nNgbDatepickerModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbDatepickerModule });\nNgbDatepickerModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDatepickerModule, { declarations: function () { return [NgbDatepicker, NgbDatepickerMonthView, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView, NgbInputDatepicker]; }, imports: function () { return [CommonModule, FormsModule]; }, exports: function () { return [NgbDatepicker, NgbInputDatepicker]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerMonthView, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView,\n NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbInputDatepicker],\n imports: [CommonModule, FormsModule],\n entryComponents: [NgbDatepicker]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nclass NgbDropdownConfig {\n constructor() {\n this.autoClose = true;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n}\nNgbDropdownConfig.ɵfac = function NgbDropdownConfig_Factory(t) { return new (t || NgbDropdownConfig)(); };\nNgbDropdownConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbDropdownConfig, factory: NgbDropdownConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbDropdownConfig.ngInjectableDef = defineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbNavbar {\n}\nNgbNavbar.ɵfac = function NgbNavbar_Factory(t) { return new (t || NgbNavbar)(); };\nNgbNavbar.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbNavbar, selectors: [[\"\", 8, \"navbar\"]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavbar, [{\n type: Directive,\n args: [{ selector: '.navbar' }]\n }], null, null); })();\n/**\n * A directive you should put put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * \\@since 4.1.0\n */\nclass NgbDropdownItem {\n /**\n * @param {?} elementRef\n */\n constructor(elementRef) {\n this.elementRef = elementRef;\n this._disabled = false;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) {\n this._disabled = (/** @type {?} */ (value)) === '' || value === true; // accept an empty attribute as true\n }\n /**\n * @return {?}\n */\n get disabled() { return this._disabled; }\n}\nNgbDropdownItem.ɵfac = function NgbDropdownItem_Factory(t) { return new (t || NgbDropdownItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownItem.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownItem, selectors: [[\"\", \"ngbDropdownItem\", \"\"]], hostAttrs: [1, \"dropdown-item\"], hostVars: 2, hostBindings: function NgbDropdownItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\" } });\n/** @nocollapse */\nNgbDropdownItem.ctorParameters = () => [\n { type: ElementRef }\n];\nNgbDropdownItem.propDecorators = {\n disabled: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownItem, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }] }); })();\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nclass NgbDropdownMenu {\n /**\n * @param {?} dropdown\n */\n constructor(dropdown) {\n this.dropdown = dropdown;\n this.placement = 'bottom';\n this.isOpen = false;\n }\n}\nNgbDropdownMenu.ɵfac = function NgbDropdownMenu_Factory(t) { return new (t || NgbDropdownMenu)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown))); };\nNgbDropdownMenu.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownMenu, selectors: [[\"\", \"ngbDropdownMenu\", \"\"]], contentQueries: function NgbDropdownMenu_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownItem, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.menuItems = _t);\n } }, hostVars: 5, hostBindings: function NgbDropdownMenu_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.ArrowUp\", function NgbDropdownMenu_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownMenu_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownMenu_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownMenu_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Enter\", function NgbDropdownMenu_keydown_Enter_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Space\", function NgbDropdownMenu_keydown_Space_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"x-placement\", ctx.placement);\n ɵngcc0.ɵɵclassProp(\"dropdown-menu\", true)(\"show\", ctx.dropdown.isOpen());\n } } });\n/** @nocollapse */\nNgbDropdownMenu.ctorParameters = () => [\n { type: NgbDropdown, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] }\n];\nNgbDropdownMenu.propDecorators = {\n menuItems: [{ type: ContentChildren, args: [NgbDropdownItem,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownMenu, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '[attr.x-placement]': 'placement',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }]; }, { menuItems: [{\n type: ContentChildren,\n args: [NgbDropdownItem]\n }] }); })();\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * \\@since 1.1.0\n */\nclass NgbDropdownAnchor {\n /**\n * @param {?} dropdown\n * @param {?} _elementRef\n */\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this._elementRef = _elementRef;\n this.anchorEl = _elementRef.nativeElement;\n }\n /**\n * @return {?}\n */\n getNativeElement() { return this._elementRef.nativeElement; }\n}\nNgbDropdownAnchor.ɵfac = function NgbDropdownAnchor_Factory(t) { return new (t || NgbDropdownAnchor)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownAnchor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownAnchor, selectors: [[\"\", \"ngbDropdownAnchor\", \"\"]], hostAttrs: [\"aria-haspopup\", \"true\", 1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownAnchor_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } } });\n/** @nocollapse */\nNgbDropdownAnchor.ctorParameters = () => [\n { type: NgbDropdown, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownAnchor, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownAnchor]',\n host: { 'class': 'dropdown-toggle', 'aria-haspopup': 'true', '[attr.aria-expanded]': 'dropdown.isOpen()' }\n }]\n }], function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nclass NgbDropdownToggle extends NgbDropdownAnchor {\n /**\n * @param {?} dropdown\n * @param {?} elementRef\n */\n constructor(dropdown, elementRef) {\n super(dropdown, elementRef);\n }\n}\nNgbDropdownToggle.ɵfac = function NgbDropdownToggle_Factory(t) { return new (t || NgbDropdownToggle)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownToggle.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownToggle, selectors: [[\"\", \"ngbDropdownToggle\", \"\"]], hostAttrs: [\"aria-haspopup\", \"true\", 1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbDropdownToggle_click_HostBindingHandler() { return ctx.dropdown.toggle(); })(\"keydown.ArrowUp\", function NgbDropdownToggle_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownToggle_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownToggle_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownToggle_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nNgbDropdownToggle.ctorParameters = () => [\n { type: NgbDropdown, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownToggle, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]\n }]\n }], function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nclass NgbDropdown {\n /**\n * @param {?} _changeDetector\n * @param {?} config\n * @param {?} _document\n * @param {?} _ngZone\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} ngbNavbar\n */\n constructor(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n this._changeDetector = _changeDetector;\n this._document = _document;\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._closed$ = new Subject();\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n this.placement = config.placement;\n this.container = config.container;\n this.autoClose = config.autoClose;\n this.display = ngbNavbar ? 'static' : 'dynamic';\n this._zoneSubscription = _ngZone.onStable.subscribe(() => { this._positionMenu(); });\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.isFirstChange) {\n this._applyPlacementClasses();\n }\n }\n /**\n * Checks if the dropdown menu is open.\n * @return {?}\n */\n isOpen() { return this._open; }\n /**\n * Opens the dropdown menu.\n * @return {?}\n */\n open() {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n }\n }\n /**\n * @return {?}\n */\n _setCloseHandlers() {\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this._closed$, this._menu ? [this._menuElement.nativeElement] : [], this._anchor ? [this._anchor.getNativeElement()] : [], '.dropdown-item,.dropdown-divider');\n }\n /**\n * Closes the dropdown menu.\n * @return {?}\n */\n close() {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._closed$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the dropdown menu.\n * @return {?}\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._resetContainer();\n this._closed$.next();\n this._zoneSubscription.unsubscribe();\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onKeyDown(event) {\n // tslint:disable-next-line:deprecation\n /** @type {?} */\n const key = event.which;\n /** @type {?} */\n const itemElements = this._getMenuElements();\n /** @type {?} */\n let position = -1;\n /** @type {?} */\n let isEventFromItems = false;\n /** @type {?} */\n const isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach((itemElement, index) => {\n if (itemElement.contains((/** @type {?} */ (event.target)))) {\n isEventFromItems = true;\n }\n if (itemElement === this._document.activeElement) {\n position = index;\n }\n });\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (isEventFromItems && (this.autoClose === true || this.autoClose === 'inside')) {\n this.close();\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || isEventFromItems) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n }\n /**\n * @return {?}\n */\n _isDropup() { return this._elementRef.nativeElement.classList.contains('dropup'); }\n /**\n * @param {?} event\n * @return {?}\n */\n _isEventFromToggle(event) {\n return this._anchor.getNativeElement().contains((/** @type {?} */ (event.target)));\n }\n /**\n * @return {?}\n */\n _getMenuElements() {\n if (this._menu == null) {\n return [];\n }\n return this._menu.menuItems.filter(item => !item.disabled).map(item => item.elementRef.nativeElement);\n }\n /**\n * @return {?}\n */\n _positionMenu() {\n if (this.isOpen() && this._menu) {\n this._applyPlacementClasses(this.display === 'dynamic' ?\n positionElements(this._anchor.anchorEl, this._bodyContainer || this._menuElement.nativeElement, this.placement, this.container === 'body') :\n this._getFirstPlacement(this.placement));\n }\n }\n /**\n * @param {?} placement\n * @return {?}\n */\n _getFirstPlacement(placement) {\n return Array.isArray(placement) ? placement[0] : (/** @type {?} */ (placement.split(' ')[0]));\n }\n /**\n * @return {?}\n */\n _resetContainer() {\n /** @type {?} */\n const renderer = this._renderer;\n if (this._menuElement) {\n /** @type {?} */\n const dropdownElement = this._elementRef.nativeElement;\n /** @type {?} */\n const dropdownMenuElement = this._menuElement.nativeElement;\n renderer.appendChild(dropdownElement, dropdownMenuElement);\n renderer.removeStyle(dropdownMenuElement, 'position');\n renderer.removeStyle(dropdownMenuElement, 'transform');\n }\n if (this._bodyContainer) {\n renderer.removeChild(this._document.body, this._bodyContainer);\n this._bodyContainer = null;\n }\n }\n /**\n * @param {?=} container\n * @return {?}\n */\n _applyContainer(container = null) {\n this._resetContainer();\n if (container === 'body') {\n /** @type {?} */\n const renderer = this._renderer;\n /** @type {?} */\n const dropdownMenuElement = this._menuElement.nativeElement;\n /** @type {?} */\n const bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\n // Override some styles to have the positionning working\n renderer.setStyle(bodyContainer, 'position', 'absolute');\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\n renderer.setStyle(bodyContainer, 'z-index', '1050');\n renderer.appendChild(bodyContainer, dropdownMenuElement);\n renderer.appendChild(this._document.body, bodyContainer);\n }\n }\n /**\n * @param {?=} placement\n * @return {?}\n */\n _applyPlacementClasses(placement) {\n if (this._menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n /** @type {?} */\n const renderer = this._renderer;\n /** @type {?} */\n const dropdownElement = this._elementRef.nativeElement;\n // remove the current placement classes\n renderer.removeClass(dropdownElement, 'dropup');\n renderer.removeClass(dropdownElement, 'dropdown');\n this._menu.placement = placement;\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n /** @type {?} */\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n renderer.addClass(dropdownElement, dropdownClass);\n /** @type {?} */\n const bodyContainer = this._bodyContainer;\n if (bodyContainer) {\n renderer.removeClass(bodyContainer, 'dropup');\n renderer.removeClass(bodyContainer, 'dropdown');\n renderer.addClass(bodyContainer, dropdownClass);\n }\n }\n }\n}\nNgbDropdown.ɵfac = function NgbDropdown_Factory(t) { return new (t || NgbDropdown)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbDropdownConfig), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(NgbNavbar, 8)); };\nNgbDropdown.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbDropdown, selectors: [[\"\", \"ngbDropdown\", \"\"]], contentQueries: function NgbDropdown_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 1, ElementRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownAnchor, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menu = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menuElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._anchor = _t.first);\n } }, hostVars: 2, hostBindings: function NgbDropdown_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"show\", ctx.isOpen());\n } }, inputs: { _open: [\"open\", \"_open\"], placement: \"placement\", container: \"container\", autoClose: \"autoClose\", display: \"display\" }, outputs: { openChange: \"openChange\" }, exportAs: [\"ngbDropdown\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nNgbDropdown.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: NgbDropdownConfig },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ElementRef },\n { type: Renderer2 },\n { type: NgbNavbar, decorators: [{ type: Optional }] }\n];\nNgbDropdown.propDecorators = {\n _menu: [{ type: ContentChild, args: [NgbDropdownMenu,] }],\n _menuElement: [{ type: ContentChild, args: [NgbDropdownMenu, { read: ElementRef },] }],\n _anchor: [{ type: ContentChild, args: [NgbDropdownAnchor,] }],\n autoClose: [{ type: Input }],\n _open: [{ type: Input, args: ['open',] }],\n placement: [{ type: Input }],\n container: [{ type: Input }],\n display: [{ type: Input }],\n openChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdown, [{\n type: Directive,\n args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: NgbDropdownConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: NgbNavbar, decorators: [{\n type: Optional\n }] }]; }, { _open: [{\n type: Input,\n args: ['open']\n }], openChange: [{\n type: Output\n }], placement: [{\n type: Input\n }], container: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], display: [{\n type: Input\n }], _menu: [{\n type: ContentChild,\n args: [NgbDropdownMenu]\n }], _menuElement: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { read: ElementRef }]\n }], _anchor: [{\n type: ContentChild,\n args: [NgbDropdownAnchor]\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\nclass NgbDropdownModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbDropdownModule }; }\n}\nNgbDropdownModule.ɵfac = function NgbDropdownModule_Factory(t) { return new (t || NgbDropdownModule)(); };\nNgbDropdownModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbDropdownModule });\nNgbDropdownModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDropdownModule, { declarations: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar], exports: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownModule, [{\n type: NgModule,\n args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * \\@since 3.1.0\n */\nclass NgbModalConfig {\n constructor() {\n this.backdrop = true;\n this.keyboard = true;\n }\n}\nNgbModalConfig.ɵfac = function NgbModalConfig_Factory(t) { return new (t || NgbModalConfig)(); };\nNgbModalConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbModalConfig, factory: NgbModalConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbModalConfig.ngInjectableDef = defineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(); }, token: NgbModalConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass ContentRef {\n /**\n * @param {?} nodes\n * @param {?=} viewRef\n * @param {?=} componentRef\n */\n constructor(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\n/**\n * @template T\n */\nclass PopupService {\n /**\n * @param {?} _type\n * @param {?} _injector\n * @param {?} _viewContainerRef\n * @param {?} _renderer\n * @param {?} _componentFactoryResolver\n * @param {?} _applicationRef\n */\n constructor(_type, _injector, _viewContainerRef, _renderer, _componentFactoryResolver, _applicationRef) {\n this._type = _type;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._applicationRef = _applicationRef;\n }\n /**\n * @param {?=} content\n * @param {?=} context\n * @return {?}\n */\n open(content, context) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), 0, this._injector, this._contentRef.nodes);\n }\n return this._windowRef;\n }\n /**\n * @return {?}\n */\n close() {\n if (this._windowRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n if (this._contentRef.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }\n }\n /**\n * @param {?} content\n * @param {?=} context\n * @return {?}\n */\n _getContentRef(content, context) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n /** @type {?} */\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n else {\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst noop = () => { };\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n */\nclass ScrollBar {\n /**\n * @param {?} _document\n */\n constructor(_document) {\n this._document = _document;\n }\n /**\n * Detects if a scrollbar is present and if yes, already compensates for its\n * removal by adding an equivalent padding on the right of the body.\n *\n * @return {?} a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n compensate() { return !this._isPresent() ? noop : this._adjustBody(this._getWidth()); }\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @param {?} width\n * @return {?} a callback used to revert the padding to its previous value\n */\n _adjustBody(width) {\n /** @type {?} */\n const body = this._document.body;\n /** @type {?} */\n const userSetPadding = body.style.paddingRight;\n /** @type {?} */\n const paddingAmount = parseFloat(window.getComputedStyle(body)['padding-right']);\n body.style['padding-right'] = `${paddingAmount + width}px`;\n return () => body.style['padding-right'] = userSetPadding;\n }\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return {?} true if scrollbar is present, false otherwise\n */\n _isPresent() {\n /** @type {?} */\n const rect = this._document.body.getBoundingClientRect();\n return rect.left + rect.right < window.innerWidth;\n }\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return {?} the width of a scrollbar on this page\n */\n _getWidth() {\n /** @type {?} */\n const measurer = this._document.createElement('div');\n measurer.className = 'modal-scrollbar-measure';\n /** @type {?} */\n const body = this._document.body;\n body.appendChild(measurer);\n /** @type {?} */\n const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n body.removeChild(measurer);\n return width;\n }\n}\nScrollBar.ɵfac = function ScrollBar_Factory(t) { return new (t || ScrollBar)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nScrollBar.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: ScrollBar, factory: ScrollBar.ɵfac, providedIn: 'root' });\n/** @nocollapse */\nScrollBar.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n/** @nocollapse */ ScrollBar.ngInjectableDef = defineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(inject(DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollBar, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbModalBackdrop {\n}\nNgbModalBackdrop.ɵfac = function NgbModalBackdrop_Factory(t) { return new (t || NgbModalBackdrop)(); };\nNgbModalBackdrop.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbModalBackdrop, selectors: [[\"ngb-modal-backdrop\"]], hostAttrs: [2, \"z-index\", \"1050\"], hostVars: 2, hostBindings: function NgbModalBackdrop_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-backdrop fade show\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n } }, inputs: { backdropClass: \"backdropClass\" }, decls: 0, vars: 0, template: function NgbModalBackdrop_Template(rf, ctx) { }, encapsulation: 2 });\nNgbModalBackdrop.propDecorators = {\n backdropClass: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalBackdrop, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-backdrop',\n template: '',\n host: { '[class]': '\"modal-backdrop fade show\" + (backdropClass ? \" \" + backdropClass : \"\")', 'style': 'z-index: 1050' }\n }]\n }], null, { backdropClass: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nclass NgbActiveModal {\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n close(result) { }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n dismiss(reason) { }\n}\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nclass NgbModalRef {\n /**\n * @param {?} _windowCmptRef\n * @param {?} _contentRef\n * @param {?=} _backdropCmptRef\n * @param {?=} _beforeDismiss\n */\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n _windowCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => { });\n }\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n * @return {?}\n */\n get componentInstance() {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n close(result) {\n if (this._windowCmptRef) {\n this._resolve(result);\n this._removeModalElements();\n }\n }\n /**\n * @param {?=} reason\n * @return {?}\n */\n _dismiss(reason) {\n this._reject(reason);\n this._removeModalElements();\n }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n dismiss(reason) {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n /** @type {?} */\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(result => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n /**\n * @return {?}\n */\n _removeModalElements() {\n /** @type {?} */\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n if (this._backdropCmptRef) {\n /** @type {?} */\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nconst ModalDismissReasons = {\n BACKDROP_CLICK: 0,\n ESC: 1,\n};\nModalDismissReasons[ModalDismissReasons.BACKDROP_CLICK] = 'BACKDROP_CLICK';\nModalDismissReasons[ModalDismissReasons.ESC] = 'ESC';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbModalWindow {\n /**\n * @param {?} _document\n * @param {?} _elRef\n */\n constructor(_document, _elRef) {\n this._document = _document;\n this._elRef = _elRef;\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n backdropClick($event) {\n if (this.backdrop === true && this._elRef.nativeElement === $event.target) {\n this.dismiss(ModalDismissReasons.BACKDROP_CLICK);\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n escKey($event) {\n if (this.keyboard && !$event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.ESC);\n }\n }\n /**\n * @param {?} reason\n * @return {?}\n */\n dismiss(reason) { this.dismissEvent.emit(reason); }\n /**\n * @return {?}\n */\n ngOnInit() { this._elWithFocus = this._document.activeElement; }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n /** @type {?} */\n const autoFocusable = (/** @type {?} */ (this._elRef.nativeElement.querySelector(`[ngbAutofocus]`)));\n /** @type {?} */\n const firstFocusable = getFocusableBoundaryElements(this._elRef.nativeElement)[0];\n /** @type {?} */\n const elementToFocus = autoFocusable || firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n /** @type {?} */\n const body = this._document.body;\n /** @type {?} */\n const elWithFocus = this._elWithFocus;\n /** @type {?} */\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n }\n}\nNgbModalWindow.ɵfac = function NgbModalWindow_Factory(t) { return new (t || NgbModalWindow)(ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbModalWindow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbModalWindow, selectors: [[\"ngb-modal-window\"]], hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"], hostVars: 4, hostBindings: function NgbModalWindow_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keyup.esc\", function NgbModalWindow_keyup_esc_HostBindingHandler($event) { return ctx.escKey($event); })(\"click\", function NgbModalWindow_click_HostBindingHandler($event) { return ctx.backdropClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy);\n ɵngcc0.ɵɵclassMap(\"modal fade show d-block\" + (ctx.windowClass ? \" \" + ctx.windowClass : \"\"));\n } }, inputs: { backdrop: \"backdrop\", keyboard: \"keyboard\", ariaLabelledBy: \"ariaLabelledBy\", centered: \"centered\", size: \"size\", windowClass: \"windowClass\" }, outputs: { dismissEvent: \"dismiss\" }, ngContentSelectors: _c3, decls: 3, vars: 2, consts: [[\"role\", \"document\"], [1, \"modal-content\"]], template: function NgbModalWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-dialog\" + (ctx.size ? \" modal-\" + ctx.size : \"\") + (ctx.centered ? \" modal-dialog-centered\" : \"\"));\n } }, encapsulation: 2 });\n/** @nocollapse */\nNgbModalWindow.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ElementRef }\n];\nNgbModalWindow.propDecorators = {\n ariaLabelledBy: [{ type: Input }],\n backdrop: [{ type: Input }],\n centered: [{ type: Input }],\n keyboard: [{ type: Input }],\n size: [{ type: Input }],\n windowClass: [{ type: Input }],\n dismissEvent: [{ type: Output, args: ['dismiss',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-window',\n host: {\n '[class]': '\"modal fade show d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n 'role': 'dialog',\n 'tabindex': '-1',\n '(keyup.esc)': 'escKey($event)',\n '(click)': 'backdropClick($event)',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy'\n },\n template: `\n
\n
\n
\n `\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ElementRef }]; }, { backdrop: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }], ariaLabelledBy: [{\n type: Input\n }], centered: [{\n type: Input\n }], size: [{\n type: Input\n }], windowClass: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbModalStack {\n /**\n * @param {?} _applicationRef\n * @param {?} _injector\n * @param {?} _document\n * @param {?} _scrollBar\n * @param {?} _rendererFactory\n */\n constructor(_applicationRef, _injector, _document, _scrollBar, _rendererFactory) {\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._rendererFactory = _rendererFactory;\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._backdropAttributes = ['backdropClass'];\n this._modalRefs = [];\n this._windowAttributes = ['ariaLabelledBy', 'backdrop', 'centered', 'keyboard', 'size', 'windowClass'];\n this._windowCmpts = [];\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n /** @type {?} */\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n ngbFocusTrap(activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} options\n * @return {?}\n */\n open(moduleCFR, contentInjector, content, options) {\n /** @type {?} */\n const containerEl = isDefined(options.container) ? this._document.querySelector(options.container) : this._document.body;\n /** @type {?} */\n const renderer = this._rendererFactory.createRenderer(null, null);\n /** @type {?} */\n const revertPaddingForScrollBar = this._scrollBar.compensate();\n /** @type {?} */\n const removeBodyClass = () => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n if (!containerEl) {\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n /** @type {?} */\n const activeModal = new NgbActiveModal();\n /** @type {?} */\n const contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal);\n /** @type {?} */\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : null;\n /** @type {?} */\n let windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n /** @type {?} */\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n ngbModalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result) => { ngbModalRef.close(result); };\n activeModal.dismiss = (reason) => { ngbModalRef.dismiss(reason); };\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n }\n return ngbModalRef;\n }\n /**\n * @param {?=} reason\n * @return {?}\n */\n dismissAll(reason) { this._modalRefs.forEach(ngbModalRef => ngbModalRef.dismiss(reason)); }\n /**\n * @return {?}\n */\n hasOpenModals() { return this._modalRefs.length > 0; }\n /**\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @return {?}\n */\n _attachBackdrop(moduleCFR, containerEl) {\n /** @type {?} */\n let backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n /** @type {?} */\n let backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n /**\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @param {?} contentRef\n * @return {?}\n */\n _attachWindowComponent(moduleCFR, containerEl, contentRef) {\n /** @type {?} */\n let windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n /** @type {?} */\n let windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n /**\n * @param {?} windowInstance\n * @param {?} options\n * @return {?}\n */\n _applyWindowOptions(windowInstance, options) {\n this._windowAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n /**\n * @param {?} backdropInstance\n * @param {?} options\n * @return {?}\n */\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n _getContentRef(moduleCFR, contentInjector, content, activeModal) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal);\n }\n }\n /**\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n _createFromTemplateRef(content, activeModal) {\n /** @type {?} */\n const context = {\n $implicit: activeModal,\n /**\n * @param {?} result\n * @return {?}\n */\n close(result) { activeModal.close(result); },\n /**\n * @param {?} reason\n * @return {?}\n */\n dismiss(reason) { activeModal.dismiss(reason); }\n };\n /** @type {?} */\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n /**\n * @param {?} content\n * @return {?}\n */\n _createFromString(content) {\n /** @type {?} */\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} context\n * @return {?}\n */\n _createFromComponent(moduleCFR, contentInjector, content, context) {\n /** @type {?} */\n const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n /** @type {?} */\n const modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\n /** @type {?} */\n const componentRef = contentCmptFactory.create(modalContentInjector);\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);\n }\n /**\n * @param {?} element\n * @return {?}\n */\n _setAriaHidden(element) {\n /** @type {?} */\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach(sibling => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n /**\n * @return {?}\n */\n _revertAriaHidden() {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n /**\n * @param {?} ngbModalRef\n * @return {?}\n */\n _registerModalRef(ngbModalRef) {\n /** @type {?} */\n const unregisterModalRef = () => {\n /** @type {?} */\n const index = this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(ngbModalRef);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n /**\n * @param {?} ngbWindowCmpt\n * @return {?}\n */\n _registerWindowCmpt(ngbWindowCmpt) {\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy(() => {\n /** @type {?} */\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n}\nNgbModalStack.ɵfac = function NgbModalStack_Factory(t) { return new (t || NgbModalStack)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ScrollBar), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2)); };\nNgbModalStack.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbModalStack, factory: NgbModalStack.ɵfac, providedIn: 'root' });\n/** @nocollapse */\nNgbModalStack.ctorParameters = () => [\n { type: ApplicationRef },\n { type: Injector },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ScrollBar },\n { type: RendererFactory2 }\n];\n/** @nocollapse */ NgbModalStack.ngInjectableDef = defineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(inject(ApplicationRef), inject(INJECTOR), inject(DOCUMENT), inject(ScrollBar), inject(RendererFactory2)); }, token: NgbModalStack, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalStack, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: ɵngcc0.RendererFactory2 }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nclass NgbModal {\n /**\n * @param {?} _moduleCFR\n * @param {?} _injector\n * @param {?} _modalStack\n * @param {?} _config\n */\n constructor(_moduleCFR, _injector, _modalStack, _config) {\n this._moduleCFR = _moduleCFR;\n this._injector = _injector;\n this._modalStack = _modalStack;\n this._config = _config;\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n * @param {?} content\n * @param {?=} options\n * @return {?}\n */\n open(content, options = {}) {\n /** @type {?} */\n const combinedOptions = Object.assign({}, this._config, options);\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n }\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * \\@since 3.1.0\n * @param {?=} reason\n * @return {?}\n */\n dismissAll(reason) { this._modalStack.dismissAll(reason); }\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * \\@since 3.3.0\n * @return {?}\n */\n hasOpenModals() { return this._modalStack.hasOpenModals(); }\n}\nNgbModal.ɵfac = function NgbModal_Factory(t) { return new (t || NgbModal)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(NgbModalStack), ɵngcc0.ɵɵinject(NgbModalConfig)); };\nNgbModal.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbModal, factory: NgbModal.ɵfac, providedIn: 'root' });\n/** @nocollapse */\nNgbModal.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: Injector },\n { type: NgbModalStack },\n { type: NgbModalConfig }\n];\n/** @nocollapse */ NgbModal.ngInjectableDef = defineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(inject(ComponentFactoryResolver), inject(INJECTOR), inject(NgbModalStack), inject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModal, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: NgbModalStack }, { type: NgbModalConfig }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbModalModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbModalModule }; }\n}\nNgbModalModule.ɵfac = function NgbModalModule_Factory(t) { return new (t || NgbModalModule)(); };\nNgbModalModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbModalModule });\nNgbModalModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [NgbModal] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModalModule, { declarations: [NgbModalBackdrop, NgbModalWindow] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbModalBackdrop, NgbModalWindow],\n entryComponents: [NgbModalBackdrop, NgbModalWindow],\n providers: [NgbModal]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nclass NgbPaginationConfig {\n constructor() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n}\nNgbPaginationConfig.ɵfac = function NgbPaginationConfig_Factory(t) { return new (t || NgbPaginationConfig)(); };\nNgbPaginationConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbPaginationConfig, factory: NgbPaginationConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbPaginationConfig.ngInjectableDef = defineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A directive to match the 'ellipsis' link template\n *\n * \\@since 4.1.0\n */\nclass NgbPaginationEllipsis {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationEllipsis.ɵfac = function NgbPaginationEllipsis_Factory(t) { return new (t || NgbPaginationEllipsis)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationEllipsis.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationEllipsis, selectors: [[\"ng-template\", \"ngbPaginationEllipsis\", \"\"]] });\n/** @nocollapse */\nNgbPaginationEllipsis.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationEllipsis, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationEllipsis]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'first' link template\n *\n * \\@since 4.1.0\n */\nclass NgbPaginationFirst {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationFirst.ɵfac = function NgbPaginationFirst_Factory(t) { return new (t || NgbPaginationFirst)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationFirst.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationFirst, selectors: [[\"ng-template\", \"ngbPaginationFirst\", \"\"]] });\n/** @nocollapse */\nNgbPaginationFirst.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationFirst, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationFirst]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'last' link template\n *\n * \\@since 4.1.0\n */\nclass NgbPaginationLast {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationLast.ɵfac = function NgbPaginationLast_Factory(t) { return new (t || NgbPaginationLast)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationLast.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationLast, selectors: [[\"ng-template\", \"ngbPaginationLast\", \"\"]] });\n/** @nocollapse */\nNgbPaginationLast.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationLast, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationLast]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'next' link template\n *\n * \\@since 4.1.0\n */\nclass NgbPaginationNext {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNext.ɵfac = function NgbPaginationNext_Factory(t) { return new (t || NgbPaginationNext)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNext.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNext, selectors: [[\"ng-template\", \"ngbPaginationNext\", \"\"]] });\n/** @nocollapse */\nNgbPaginationNext.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNext, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNext]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the page 'number' link template\n *\n * \\@since 4.1.0\n */\nclass NgbPaginationNumber {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNumber.ɵfac = function NgbPaginationNumber_Factory(t) { return new (t || NgbPaginationNumber)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNumber.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNumber, selectors: [[\"ng-template\", \"ngbPaginationNumber\", \"\"]] });\n/** @nocollapse */\nNgbPaginationNumber.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNumber, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNumber]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'previous' link template\n *\n * \\@since 4.1.0\n */\nclass NgbPaginationPrevious {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationPrevious.ɵfac = function NgbPaginationPrevious_Factory(t) { return new (t || NgbPaginationPrevious)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPrevious.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPrevious, selectors: [[\"ng-template\", \"ngbPaginationPrevious\", \"\"]] });\n/** @nocollapse */\nNgbPaginationPrevious.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPrevious, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPrevious]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nclass NgbPagination {\n /**\n * @param {?} config\n */\n constructor(config) {\n this.pageCount = 0;\n this.pages = [];\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n this.disabled = config.disabled;\n this.boundaryLinks = config.boundaryLinks;\n this.directionLinks = config.directionLinks;\n this.ellipses = config.ellipses;\n this.maxSize = config.maxSize;\n this.pageSize = config.pageSize;\n this.rotate = config.rotate;\n this.size = config.size;\n }\n /**\n * @return {?}\n */\n hasPrevious() { return this.page > 1; }\n /**\n * @return {?}\n */\n hasNext() { return this.page < this.pageCount; }\n /**\n * @return {?}\n */\n nextDisabled() { return !this.hasNext() || this.disabled; }\n /**\n * @return {?}\n */\n previousDisabled() { return !this.hasPrevious() || this.disabled; }\n /**\n * @param {?} pageNumber\n * @return {?}\n */\n selectPage(pageNumber) { this._updatePages(pageNumber); }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) { this._updatePages(this.page); }\n /**\n * @param {?} pageNumber\n * @return {?}\n */\n isEllipsis(pageNumber) { return pageNumber === -1; }\n /**\n * Appends ellipses and first/last page number to the displayed pages\n * @param {?} start\n * @param {?} end\n * @return {?}\n */\n _applyEllipses(start, end) {\n if (this.ellipses) {\n if (start > 0) {\n if (start > 1) {\n this.pages.unshift(-1);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n if (end < (this.pageCount - 1)) {\n this.pages.push(-1);\n }\n this.pages.push(this.pageCount);\n }\n }\n }\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n * @return {?}\n */\n _applyRotation() {\n /** @type {?} */\n let start = 0;\n /** @type {?} */\n let end = this.pageCount;\n /** @type {?} */\n let leftOffset = Math.floor(this.maxSize / 2);\n /** @type {?} */\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n }\n else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n }\n else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n }\n /**\n * Paginates page numbers based on maxSize items per page.\n * @return {?}\n */\n _applyPagination() {\n /** @type {?} */\n let page = Math.ceil(this.page / this.maxSize) - 1;\n /** @type {?} */\n let start = page * this.maxSize;\n /** @type {?} */\n let end = start + this.maxSize;\n return [start, end];\n }\n /**\n * @param {?} newPageNo\n * @return {?}\n */\n _setPageInRange(newPageNo) {\n /** @type {?} */\n const prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n }\n /**\n * @param {?} newPage\n * @return {?}\n */\n _updatePages(newPage) {\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (let i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n /** @type {?} */\n let start = 0;\n /** @type {?} */\n let end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n [start, end] = this._applyRotation();\n }\n else {\n [start, end] = this._applyPagination();\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n }\n}\nNgbPagination.ɵfac = function NgbPagination_Factory(t) { return new (t || NgbPagination)(ɵngcc0.ɵɵdirectiveInject(NgbPaginationConfig)); };\nNgbPagination.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbPagination, selectors: [[\"ngb-pagination\"]], contentQueries: function NgbPagination_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationEllipsis, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationFirst, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationLast, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNext, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNumber, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPrevious, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplEllipsis = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplFirst = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplLast = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNext = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNumber = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPrevious = _t.first);\n } }, hostAttrs: [\"role\", \"navigation\"], inputs: { page: \"page\", disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", maxSize: \"maxSize\", pageSize: \"pageSize\", rotate: \"rotate\", size: \"size\", collectionSize: \"collectionSize\" }, outputs: { pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 18, vars: 7, consts: function () { let i18n_26; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__27 = goog.getMsg(\"\\u00AB\\u00AB\");\n i18n_26 = MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__27;\n }\n else {\n i18n_26 = $localize `:@@ngb.pagination.first␟656506dfd46380956a655f919f1498d018f75ca0␟6867721956102594380:««`;\n } let i18n_28; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__29 = goog.getMsg(\"\\u00AB\");\n i18n_28 = MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__29;\n }\n else {\n i18n_28 = $localize `:@@ngb.pagination.previous␟6e52b6ee77a4848d899dd21b591c6fd499e3aef3␟6479320895410098858:«`;\n } let i18n_30; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__31 = goog.getMsg(\"\\u00BB\");\n i18n_30 = MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__31;\n }\n else {\n i18n_30 = $localize `:@@ngb.pagination.next␟ba9cbb4ff311464308a3627e4f1c3345d9fe6d7d␟5458177150283468089:»`;\n } let i18n_32; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__33 = goog.getMsg(\"\\u00BB\\u00BB\");\n i18n_32 = MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__33;\n }\n else {\n i18n_32 = $localize `:@@ngb.pagination.last␟49f27a460bc97e7e00be5b37098bfa79884fc7d9␟5277020320267646988:»»`;\n } let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__35 = goog.getMsg(\"First\");\n i18n_34 = MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__35;\n }\n else {\n i18n_34 = $localize `:@@ngb.pagination.first-aria␟f2f852318759c6396b5d3d17031d53817d7b38cc␟2241508602425256033:First`;\n } let i18n_37; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__38 = goog.getMsg(\"Previous\");\n i18n_37 = MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__38;\n }\n else {\n i18n_37 = $localize `:@@ngb.pagination.previous-aria␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_42; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__43 = goog.getMsg(\"Next\");\n i18n_42 = MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__43;\n }\n else {\n i18n_42 = $localize `:@@ngb.pagination.next-aria␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } let i18n_44; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__45 = goog.getMsg(\"Last\");\n i18n_44 = MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__45;\n }\n else {\n i18n_44 = $localize `:@@ngb.pagination.last-aria␟5c729788ba138508aca1bec050b610f7bf81db3e␟4882268002141858767:Last`;\n } return [[\"first\", \"\"], [\"previous\", \"\"], [\"next\", \"\"], [\"last\", \"\"], [\"ellipsis\", \"\"], [\"defaultNumber\", \"\"], [\"class\", \"page-item\", 3, \"disabled\", 4, \"ngIf\"], [\"class\", \"page-item\", 3, \"active\", \"disabled\", 4, \"ngFor\", \"ngForOf\"], [\"aria-hidden\", \"true\"], i18n_26, i18n_28, i18n_30, i18n_32, [\"class\", \"sr-only\", 4, \"ngIf\"], [1, \"sr-only\"], [1, \"page-item\"], [\"aria-label\", i18n_34, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-label\", i18n_37, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"class\", \"page-link\", 4, \"ngIf\"], [\"class\", \"page-link\", \"href\", \"\", 3, \"click\", 4, \"ngIf\"], [1, \"page-link\"], [\"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_42, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_44, \"href\", \"\", 1, \"page-link\", 3, \"click\"]]; }, template: function NgbPagination_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, NgbPagination_ng_template_4_Template, 2, 0, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(6, NgbPagination_ng_template_6_Template, 2, 0, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(8, NgbPagination_ng_template_8_Template, 1, 0, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(10, NgbPagination_ng_template_10_Template, 2, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(12, \"ul\");\n ɵngcc0.ɵɵtemplate(13, NgbPagination_li_13_Template, 3, 8, \"li\", 6);\n ɵngcc0.ɵɵtemplate(14, NgbPagination_li_14_Template, 3, 7, \"li\", 6);\n ɵngcc0.ɵɵtemplate(15, NgbPagination_li_15_Template, 3, 6, \"li\", 7);\n ɵngcc0.ɵɵtemplate(16, NgbPagination_li_16_Template, 3, 8, \"li\", 6);\n ɵngcc0.ɵɵtemplate(17, NgbPagination_li_17_Template, 3, 8, \"li\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(12);\n ɵngcc0.ɵɵclassMap(\"pagination\" + (ctx.size ? \" pagination-\" + ctx.size : \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.pages);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbPagination.ctorParameters = () => [\n { type: NgbPaginationConfig }\n];\nNgbPagination.propDecorators = {\n tplEllipsis: [{ type: ContentChild, args: [NgbPaginationEllipsis,] }],\n tplFirst: [{ type: ContentChild, args: [NgbPaginationFirst,] }],\n tplLast: [{ type: ContentChild, args: [NgbPaginationLast,] }],\n tplNext: [{ type: ContentChild, args: [NgbPaginationNext,] }],\n tplNumber: [{ type: ContentChild, args: [NgbPaginationNumber,] }],\n tplPrevious: [{ type: ContentChild, args: [NgbPaginationPrevious,] }],\n disabled: [{ type: Input }],\n boundaryLinks: [{ type: Input }],\n directionLinks: [{ type: Input }],\n ellipses: [{ type: Input }],\n rotate: [{ type: Input }],\n collectionSize: [{ type: Input }],\n maxSize: [{ type: Input }],\n page: [{ type: Input }],\n pageSize: [{ type: Input }],\n pageChange: [{ type: Output }],\n size: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPagination, [{\n type: Component,\n args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: `\n ««\n «\n »\n »»\n ...\n \n {{ page }}\n (current)\n \n \n `\n }]\n }], function () { return [{ type: NgbPaginationConfig }]; }, { page: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], disabled: [{\n type: Input\n }], boundaryLinks: [{\n type: Input\n }], directionLinks: [{\n type: Input\n }], ellipses: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], rotate: [{\n type: Input\n }], size: [{\n type: Input\n }], tplEllipsis: [{\n type: ContentChild,\n args: [NgbPaginationEllipsis]\n }], tplFirst: [{\n type: ContentChild,\n args: [NgbPaginationFirst]\n }], tplLast: [{\n type: ContentChild,\n args: [NgbPaginationLast]\n }], tplNext: [{\n type: ContentChild,\n args: [NgbPaginationNext]\n }], tplNumber: [{\n type: ContentChild,\n args: [NgbPaginationNumber]\n }], tplPrevious: [{\n type: ContentChild,\n args: [NgbPaginationPrevious]\n }], collectionSize: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DIRECTIVES = [\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious\n];\nclass NgbPaginationModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbPaginationModule }; }\n}\nNgbPaginationModule.ɵfac = function NgbPaginationModule_Factory(t) { return new (t || NgbPaginationModule)(); };\nNgbPaginationModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbPaginationModule });\nNgbPaginationModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPaginationModule, { declarations: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationModule, [{\n type: NgModule,\n args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass Trigger {\n /**\n * @param {?} open\n * @param {?=} close\n */\n constructor(open, close) {\n this.open = open;\n this.close = close;\n if (!close) {\n this.close = open;\n }\n }\n /**\n * @return {?}\n */\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\n}\n/** @type {?} */\nconst DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focusin', 'focusout'],\n};\n/**\n * @param {?} triggers\n * @param {?=} aliases\n * @return {?}\n */\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n /** @type {?} */\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n /** @type {?} */\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\n /** @type {?} */\n let alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n /** @type {?} */\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw 'Triggers parse error: only one manual trigger is allowed';\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n }\n return parsedTriggers;\n}\n/**\n * @param {?} renderer\n * @param {?} nativeElement\n * @param {?} triggers\n * @param {?} isOpenedFn\n * @return {?}\n */\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n return new Observable(subscriber => {\n /** @type {?} */\n const listeners = [];\n /** @type {?} */\n const openFn = () => subscriber.next(true);\n /** @type {?} */\n const closeFn = () => subscriber.next(false);\n /** @type {?} */\n const toggleFn = () => subscriber.next(!isOpenedFn());\n triggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n }\n else {\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\n });\n}\n/** @type {?} */\nconst delayOrNoop = (time) => time > 0 ? delay(time) : (a) => a;\n/**\n * @param {?} openDelay\n * @param {?} closeDelay\n * @param {?} isOpenedFn\n * @return {?}\n */\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n return (input$) => {\n /** @type {?} */\n let pending = null;\n /** @type {?} */\n const filteredInput$ = input$.pipe(map(open => ({ open })), filter(event => {\n /** @type {?} */\n const currentlyOpen = isOpenedFn();\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n pending = event;\n return true;\n }\n if (pending && pending.open !== event.open) {\n pending = null;\n }\n return false;\n }), share());\n /** @type {?} */\n const delayedOpen$ = filteredInput$.pipe(filter(event => event.open), delayOrNoop(openDelay));\n /** @type {?} */\n const delayedClose$ = filteredInput$.pipe(filter(event => !event.open), delayOrNoop(closeDelay));\n return merge(delayedOpen$, delayedClose$)\n .pipe(filter(event => {\n if (event === pending) {\n pending = null;\n return event.open !== isOpenedFn();\n }\n return false;\n }), map(event => event.open));\n };\n}\n/**\n * @param {?} renderer\n * @param {?} nativeElement\n * @param {?} triggers\n * @param {?} isOpenedFn\n * @param {?} openFn\n * @param {?} closeFn\n * @param {?=} openDelay\n * @param {?=} closeDelay\n * @return {?}\n */\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay = 0, closeDelay = 0) {\n /** @type {?} */\n const parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return () => { };\n }\n /** @type {?} */\n const subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n .subscribe(open => (open ? openFn() : closeFn()));\n return () => subscription.unsubscribe();\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nclass NgbPopoverConfig {\n constructor() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n}\nNgbPopoverConfig.ɵfac = function NgbPopoverConfig_Factory(t) { return new (t || NgbPopoverConfig)(); };\nNgbPopoverConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbPopoverConfig, factory: NgbPopoverConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbPopoverConfig.ngInjectableDef = defineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(); }, token: NgbPopoverConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nlet nextId$3 = 0;\nclass NgbPopoverWindow {\n /**\n * @return {?}\n */\n isTitleTemplate() { return this.title instanceof TemplateRef; }\n}\nNgbPopoverWindow.ɵfac = function NgbPopoverWindow_Factory(t) { return new (t || NgbPopoverWindow)(); };\nNgbPopoverWindow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbPopoverWindow, selectors: [[\"ngb-popover-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 3, hostBindings: function NgbPopoverWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"popover\" + (ctx.popoverClass ? \" \" + ctx.popoverClass : \"\"));\n } }, inputs: { title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, ngContentSelectors: _c3, decls: 4, vars: 1, consts: [[1, \"arrow\"], [\"class\", \"popover-header\", 4, \"ngIf\"], [1, \"popover-body\"], [1, \"popover-header\"], [\"simpleTitle\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbPopoverWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_Template, 4, 2, \"h3\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title != null);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-popover-window.bs-popover-bottom .arrow,ngb-popover-window.bs-popover-top .arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left .arrow,ngb-popover-window.bs-popover-top-left .arrow{left:2em}ngb-popover-window.bs-popover-bottom-right .arrow,ngb-popover-window.bs-popover-top-right .arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left .arrow,ngb-popover-window.bs-popover-right .arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top .arrow,ngb-popover-window.bs-popover-right-top .arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom .arrow,ngb-popover-window.bs-popover-right-bottom .arrow{top:auto;bottom:.7em}\"], encapsulation: 2, changeDetection: 0 });\nNgbPopoverWindow.propDecorators = {\n title: [{ type: Input }],\n id: [{ type: Input }],\n popoverClass: [{ type: Input }],\n context: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: `\n
\n

\n {{title}}\n \n

\n
`,\n styles: [\"ngb-popover-window.bs-popover-bottom .arrow,ngb-popover-window.bs-popover-top .arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left .arrow,ngb-popover-window.bs-popover-top-left .arrow{left:2em}ngb-popover-window.bs-popover-bottom-right .arrow,ngb-popover-window.bs-popover-top-right .arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left .arrow,ngb-popover-window.bs-popover-right .arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top .arrow,ngb-popover-window.bs-popover-right-top .arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom .arrow,ngb-popover-window.bs-popover-right-bottom .arrow{top:auto;bottom:.7em}\"]\n }]\n }], null, { title: [{\n type: Input\n }], id: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], context: [{\n type: Input\n }] }); })();\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nclass NgbPopover {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} injector\n * @param {?} componentFactoryResolver\n * @param {?} viewContainerRef\n * @param {?} config\n * @param {?} _ngZone\n * @param {?} _document\n * @param {?} _changeDetector\n * @param {?} _applicationRef\n */\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, _applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._applicationRef = _applicationRef;\n /**\n * An event emitted when the popover is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbPopoverWindowId = `ngb-popover-${nextId$3++}`;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this.popoverClass = config.popoverClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-popover');\n }\n });\n }\n /**\n * @return {?}\n */\n _isDisabled() {\n if (this.disablePopover) {\n return true;\n }\n if (!this.ngbPopover && !this.popoverTitle) {\n return true;\n }\n return false;\n }\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n * @param {?=} context\n * @return {?}\n */\n open(context) {\n if (!this._windowRef && !this._isDisabled()) {\n this._windowRef = this._popupService.open(this.ngbPopover, context);\n this._windowRef.instance.title = this.popoverTitle;\n this._windowRef.instance.context = context;\n this._windowRef.instance.popoverClass = this.popoverClass;\n this._windowRef.instance.id = this._ngbPopoverWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n }\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n close() {\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n isOpen() { return this._windowRef != null; }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n // close popover if title and content become empty, or disablePopover set to true\n if ((changes['ngbPopover'] || changes['popoverTitle'] || changes['disablePopover']) && this._isDisabled()) {\n this.close();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n }\n}\nNgbPopover.ɵfac = function NgbPopover_Factory(t) { return new (t || NgbPopover)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbPopoverConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbPopover.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbPopover, selectors: [[\"\", \"ngbPopover\", \"\"]], inputs: { autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disablePopover: \"disablePopover\", popoverClass: \"popoverClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbPopover: \"ngbPopover\", popoverTitle: \"popoverTitle\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbPopover\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nNgbPopover.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbPopoverConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\nNgbPopover.propDecorators = {\n autoClose: [{ type: Input }],\n ngbPopover: [{ type: Input }],\n popoverTitle: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disablePopover: [{ type: Input }],\n popoverClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopover, [{\n type: Directive,\n args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbPopoverConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disablePopover: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbPopover: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbPopoverModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbPopoverModule }; }\n}\nNgbPopoverModule.ɵfac = function NgbPopoverModule_Factory(t) { return new (t || NgbPopoverModule)(); };\nNgbPopoverModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbPopoverModule });\nNgbPopoverModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPopoverModule, { declarations: function () { return [NgbPopover, NgbPopoverWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPopover]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbPopover, NgbPopoverWindow],\n exports: [NgbPopover],\n imports: [CommonModule],\n entryComponents: [NgbPopoverWindow]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nclass NgbProgressbarConfig {\n constructor() {\n this.max = 100;\n this.animated = false;\n this.striped = false;\n this.showValue = false;\n }\n}\nNgbProgressbarConfig.ɵfac = function NgbProgressbarConfig_Factory(t) { return new (t || NgbProgressbarConfig)(); };\nNgbProgressbarConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbProgressbarConfig, factory: NgbProgressbarConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbProgressbarConfig.ngInjectableDef = defineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nclass NgbProgressbar {\n /**\n * @param {?} config\n */\n constructor(config) {\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n this.max = config.max;\n this.animated = config.animated;\n this.striped = config.striped;\n this.type = config.type;\n this.showValue = config.showValue;\n this.height = config.height;\n }\n /**\n * @return {?}\n */\n getValue() { return getValueInRange(this.value, this.max); }\n /**\n * @return {?}\n */\n getPercentValue() { return 100 * this.getValue() / this.max; }\n}\nNgbProgressbar.ɵfac = function NgbProgressbar_Factory(t) { return new (t || NgbProgressbar)(ɵngcc0.ɵɵdirectiveInject(NgbProgressbarConfig)); };\nNgbProgressbar.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbProgressbar, selectors: [[\"ngb-progressbar\"]], inputs: { value: \"value\", max: \"max\", animated: \"animated\", striped: \"striped\", type: \"type\", showValue: \"showValue\", height: \"height\" }, ngContentSelectors: _c3, decls: 4, vars: 12, consts: function () { let i18n_46; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__47 = goog.getMsg(\"{$interpolation}%\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_46 = MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__47;\n }\n else {\n i18n_46 = $localize `:@@ngb.progressbar.value␟04d611d19c117c60c9e14d0a04399a027184bc77␟5214781723415385277:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:%`;\n } return [[1, \"progress\"], [\"role\", \"progressbar\", \"aria-valuemin\", \"0\"], [4, \"ngIf\"], i18n_46]; }, template: function NgbProgressbar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, NgbProgressbar_span_2_Template, 2, 1, \"span\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate3(\"progress-bar\", ctx.type ? \" bg-\" + ctx.type : \"\", \"\", ctx.animated ? \" progress-bar-animated\" : \"\", \"\", ctx.striped ? \" progress-bar-striped\" : \"\", \"\");\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.getPercentValue(), \"%\");\n ɵngcc0.ɵɵattribute(\"aria-valuenow\", ctx.getValue())(\"aria-valuemax\", ctx.max);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showValue);\n } }, directives: [ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbProgressbar.ctorParameters = () => [\n { type: NgbProgressbarConfig }\n];\nNgbProgressbar.propDecorators = {\n max: [{ type: Input }],\n animated: [{ type: Input }],\n striped: [{ type: Input }],\n showValue: [{ type: Input }],\n type: [{ type: Input }],\n value: [{ type: Input }],\n height: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbar, [{\n type: Component,\n args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n
\n {{getPercentValue()}}%\n
\n
\n `\n }]\n }], function () { return [{ type: NgbProgressbarConfig }]; }, { value: [{\n type: Input\n }], max: [{\n type: Input\n }], animated: [{\n type: Input\n }], striped: [{\n type: Input\n }], type: [{\n type: Input\n }], showValue: [{\n type: Input\n }], height: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbProgressbarModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbProgressbarModule }; }\n}\nNgbProgressbarModule.ɵfac = function NgbProgressbarModule_Factory(t) { return new (t || NgbProgressbarModule)(); };\nNgbProgressbarModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbProgressbarModule });\nNgbProgressbarModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbProgressbarModule, { declarations: function () { return [NgbProgressbar]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbProgressbar]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarModule, [{\n type: NgModule,\n args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nclass NgbRatingConfig {\n constructor() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n }\n}\nNgbRatingConfig.ɵfac = function NgbRatingConfig_Factory(t) { return new (t || NgbRatingConfig)(); };\nNgbRatingConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbRatingConfig, factory: NgbRatingConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbRatingConfig.ngInjectableDef = defineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_RATING_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbRating),\n multi: true\n};\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nclass NgbRating {\n /**\n * @param {?} config\n * @param {?} _changeDetectorRef\n */\n constructor(config, _changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this.contexts = [];\n this.disabled = false;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the user selects a new rating.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.max = config.max;\n this.readonly = config.readonly;\n }\n /**\n * @return {?}\n */\n ariaValueText() { return `${this.nextRate} out of ${this.max}`; }\n /**\n * @param {?} value\n * @return {?}\n */\n enter(value) {\n if (!this.readonly && !this.disabled) {\n this._updateState(value);\n }\n this.hover.emit(value);\n }\n /**\n * @return {?}\n */\n handleBlur() { this.onTouched(); }\n /**\n * @param {?} value\n * @return {?}\n */\n handleClick(value) { this.update(this.resettable && this.rate === value ? 0 : value); }\n /**\n * @param {?} event\n * @return {?}\n */\n handleKeyDown(event) {\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k }));\n this._updateState(this.rate);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) { this.onChange = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) { this.onTouched = fn; }\n /**\n * @return {?}\n */\n reset() {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n /**\n * @param {?} value\n * @param {?=} internalChange\n * @return {?}\n */\n update(value, internalChange = true) {\n /** @type {?} */\n const newRate = getValueInRange(value, this.max, 0);\n if (!this.readonly && !this.disabled && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * @param {?} index\n * @return {?}\n */\n _getFillValue(index) {\n /** @type {?} */\n const diff = this.nextRate - index;\n if (diff >= 1) {\n return 100;\n }\n if (diff < 1 && diff > 0) {\n return parseInt((diff * 100).toFixed(2), 10);\n }\n return 0;\n }\n /**\n * @param {?} nextValue\n * @return {?}\n */\n _updateState(nextValue) {\n this.nextRate = nextValue;\n this.contexts.forEach((context, index) => context.fill = this._getFillValue(index));\n }\n}\nNgbRating.ɵfac = function NgbRating_Factory(t) { return new (t || NgbRating)(ɵngcc0.ɵɵdirectiveInject(NgbRatingConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRating.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbRating, selectors: [[\"ngb-rating\"]], contentQueries: function NgbRating_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.starTemplateFromContent = _t.first);\n } }, hostAttrs: [\"tabindex\", \"0\", \"role\", \"slider\", \"aria-valuemin\", \"0\", 1, \"d-inline-flex\"], hostVars: 4, hostBindings: function NgbRating_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbRating_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbRating_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); })(\"mouseleave\", function NgbRating_mouseleave_HostBindingHandler() { return ctx.reset(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.nextRate)(\"aria-valuetext\", ctx.ariaValueText())(\"aria-disabled\", ctx.readonly ? true : null);\n } }, inputs: { max: \"max\", readonly: \"readonly\", rate: \"rate\", resettable: \"resettable\", starTemplate: \"starTemplate\" }, outputs: { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_RATING_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [[\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"sr-only\"], [3, \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbRating_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbRating_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbRating_ng_template_2_Template, 4, 5, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.contexts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgbRating.ctorParameters = () => [\n { type: NgbRatingConfig },\n { type: ChangeDetectorRef }\n];\nNgbRating.propDecorators = {\n max: [{ type: Input }],\n rate: [{ type: Input }],\n readonly: [{ type: Input }],\n resettable: [{ type: Input }],\n starTemplate: [{ type: Input }],\n starTemplateFromContent: [{ type: ContentChild, args: [TemplateRef,] }],\n hover: [{ type: Output }],\n leave: [{ type: Output }],\n rateChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRating, [{\n type: Component,\n args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'd-inline-flex',\n 'tabindex': '0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: `\n {{ fill === 100 ? '★' : '☆' }}\n \n ({{ index < nextRate ? '*' : ' ' }})\n \n \n \n \n \n `,\n providers: [NGB_RATING_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: NgbRatingConfig }, { type: ɵngcc0.ChangeDetectorRef }]; }, { hover: [{\n type: Output\n }], leave: [{\n type: Output\n }], rateChange: [{\n type: Output\n }], max: [{\n type: Input\n }], readonly: [{\n type: Input\n }], rate: [{\n type: Input\n }], resettable: [{\n type: Input\n }], starTemplate: [{\n type: Input\n }], starTemplateFromContent: [{\n type: ContentChild,\n args: [TemplateRef]\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbRatingModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbRatingModule }; }\n}\nNgbRatingModule.ɵfac = function NgbRatingModule_Factory(t) { return new (t || NgbRatingModule)(); };\nNgbRatingModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbRatingModule });\nNgbRatingModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbRatingModule, { declarations: function () { return [NgbRating]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbRating]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingModule, [{\n type: NgModule,\n args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTabset`](#/components/tabset/api#NgbTabset) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tabsets used in the application.\n */\nclass NgbTabsetConfig {\n constructor() {\n this.justify = 'start';\n this.orientation = 'horizontal';\n this.type = 'tabs';\n }\n}\nNgbTabsetConfig.ɵfac = function NgbTabsetConfig_Factory(t) { return new (t || NgbTabsetConfig)(); };\nNgbTabsetConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbTabsetConfig, factory: NgbTabsetConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbTabsetConfig.ngInjectableDef = defineInjectable({ factory: function NgbTabsetConfig_Factory() { return new NgbTabsetConfig(); }, token: NgbTabsetConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabsetConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nlet nextId$4 = 0;\n/**\n * A directive to wrap tab titles that need to contain HTML markup or other directives.\n *\n * Alternatively you could use the `NgbTab.title` input for string titles.\n */\nclass NgbTabTitle {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbTabTitle.ɵfac = function NgbTabTitle_Factory(t) { return new (t || NgbTabTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbTabTitle.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbTabTitle, selectors: [[\"ng-template\", \"ngbTabTitle\", \"\"]] });\n/** @nocollapse */\nNgbTabTitle.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabTitle, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbTabTitle]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to wrap content to be displayed in a tab.\n */\nclass NgbTabContent {\n /**\n * @param {?} templateRef\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbTabContent.ɵfac = function NgbTabContent_Factory(t) { return new (t || NgbTabContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbTabContent.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbTabContent, selectors: [[\"ng-template\", \"ngbTabContent\", \"\"]] });\n/** @nocollapse */\nNgbTabContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbTabContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive representing an individual tab.\n */\nclass NgbTab {\n constructor() {\n /**\n * The tab identifier.\n *\n * Must be unique for the entire document for proper accessibility support.\n */\n this.id = `ngb-tab-${nextId$4++}`;\n /**\n * If `true`, the current tab is disabled and can't be toggled.\n */\n this.disabled = false;\n }\n /**\n * @return {?}\n */\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n}\nNgbTab.ɵfac = function NgbTab_Factory(t) { return new (t || NgbTab)(); };\nNgbTab.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbTab, selectors: [[\"ngb-tab\"]], contentQueries: function NgbTab_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbTabTitle, 0);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbTabContent, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, inputs: { id: \"id\", disabled: \"disabled\", title: \"title\" } });\nNgbTab.propDecorators = {\n id: [{ type: Input }],\n title: [{ type: Input }],\n disabled: [{ type: Input }],\n titleTpls: [{ type: ContentChildren, args: [NgbTabTitle, { descendants: false },] }],\n contentTpls: [{ type: ContentChildren, args: [NgbTabContent, { descendants: false },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTab, [{\n type: Directive,\n args: [{ selector: 'ngb-tab' }]\n }], function () { return []; }, { id: [{\n type: Input\n }], disabled: [{\n type: Input\n }], title: [{\n type: Input\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbTabTitle, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbTabContent, { descendants: false }]\n }] }); })();\n/**\n * A component that makes it easy to create tabbed interface.\n */\nclass NgbTabset {\n /**\n * @param {?} config\n */\n constructor(config) {\n /**\n * If `true`, non-visible tabs content will be removed from DOM. Otherwise it will just be hidden.\n */\n this.destroyOnHide = true;\n /**\n * A tab change event emitted right before the tab change happens.\n *\n * See [`NgbTabChangeEvent`](#/components/tabset/api#NgbTabChangeEvent) for payload details.\n */\n this.tabChange = new EventEmitter();\n this.type = config.type;\n this.justify = config.justify;\n this.orientation = config.orientation;\n }\n /**\n * The horizontal alignment of the tabs with flexbox utilities.\n * @param {?} className\n * @return {?}\n */\n set justify(className) {\n if (className === 'fill' || className === 'justified') {\n this.justifyClass = `nav-${className}`;\n }\n else {\n this.justifyClass = `justify-content-${className}`;\n }\n }\n /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n * @param {?} tabId\n * @return {?}\n */\n select(tabId) {\n /** @type {?} */\n let selectedTab = this._getTabById(tabId);\n if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {\n /** @type {?} */\n let defaultPrevented = false;\n this.tabChange.emit({ activeId: this.activeId, nextId: selectedTab.id, preventDefault: () => { defaultPrevented = true; } });\n if (!defaultPrevented) {\n this.activeId = selectedTab.id;\n }\n }\n }\n /**\n * @return {?}\n */\n ngAfterContentChecked() {\n // auto-correct activeId that might have been set incorrectly as input\n /** @type {?} */\n let activeTab = this._getTabById(this.activeId);\n this.activeId = activeTab ? activeTab.id : (this.tabs.length ? this.tabs.first.id : null);\n }\n /**\n * @param {?} id\n * @return {?}\n */\n _getTabById(id) {\n /** @type {?} */\n let tabsWithId = this.tabs.filter(tab => tab.id === id);\n return tabsWithId.length ? tabsWithId[0] : null;\n }\n}\nNgbTabset.ɵfac = function NgbTabset_Factory(t) { return new (t || NgbTabset)(ɵngcc0.ɵɵdirectiveInject(NgbTabsetConfig)); };\nNgbTabset.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbTabset, selectors: [[\"ngb-tabset\"]], contentQueries: function NgbTabset_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbTab, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tabs = _t);\n } }, inputs: { destroyOnHide: \"destroyOnHide\", type: \"type\", justify: \"justify\", orientation: \"orientation\", activeId: \"activeId\" }, outputs: { tabChange: \"tabChange\" }, exportAs: [\"ngbTabset\"], decls: 4, vars: 4, consts: [[\"role\", \"tablist\"], [\"class\", \"nav-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"tab-content\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"nav-item\"], [\"href\", \"\", \"role\", \"tab\", 1, \"nav-link\", 3, \"id\", \"click\"], [3, \"ngTemplateOutlet\"], [\"role\", \"tabpanel\", 3, \"class\", \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"id\"]], template: function NgbTabset_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbTabset_li_1_Template, 4, 11, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbTabset_ng_template_3_Template, 1, 1, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"nav nav-\" + ctx.type + (ctx.orientation == \"horizontal\" ? \" \" + ctx.justifyClass : \" flex-column\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.tabs);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.tabs);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgIf], encapsulation: 2 });\n/** @nocollapse */\nNgbTabset.ctorParameters = () => [\n { type: NgbTabsetConfig }\n];\nNgbTabset.propDecorators = {\n tabs: [{ type: ContentChildren, args: [NgbTab,] }],\n activeId: [{ type: Input }],\n destroyOnHide: [{ type: Input }],\n justify: [{ type: Input }],\n orientation: [{ type: Input }],\n type: [{ type: Input }],\n tabChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabset, [{\n type: Component,\n args: [{\n selector: 'ngb-tabset',\n exportAs: 'ngbTabset',\n template: `\n \n
\n \n \n \n
\n \n \n `\n }]\n }], function () { return [{ type: NgbTabsetConfig }]; }, { destroyOnHide: [{\n type: Input\n }], tabChange: [{\n type: Output\n }], type: [{\n type: Input\n }], justify: [{\n type: Input\n }], orientation: [{\n type: Input\n }], activeId: [{\n type: Input\n }], tabs: [{\n type: ContentChildren,\n args: [NgbTab]\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_TABSET_DIRECTIVES = [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle];\nclass NgbTabsetModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbTabsetModule }; }\n}\nNgbTabsetModule.ɵfac = function NgbTabsetModule_Factory(t) { return new (t || NgbTabsetModule)(); };\nNgbTabsetModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbTabsetModule });\nNgbTabsetModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTabsetModule, { declarations: function () { return [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTabsetModule, [{\n type: NgModule,\n args: [{ declarations: NGB_TABSET_DIRECTIVES, exports: NGB_TABSET_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbTime {\n /**\n * @param {?=} hour\n * @param {?=} minute\n * @param {?=} second\n */\n constructor(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n /**\n * @param {?=} step\n * @return {?}\n */\n changeHour(step = 1) { this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step); }\n /**\n * @param {?} hour\n * @return {?}\n */\n updateHour(hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n }\n else {\n this.hour = NaN;\n }\n }\n /**\n * @param {?=} step\n * @return {?}\n */\n changeMinute(step = 1) { this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step); }\n /**\n * @param {?} minute\n * @return {?}\n */\n updateMinute(minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n }\n else {\n this.minute = NaN;\n }\n }\n /**\n * @param {?=} step\n * @return {?}\n */\n changeSecond(step = 1) { this.updateSecond((isNaN(this.second) ? 0 : this.second) + step); }\n /**\n * @param {?} second\n * @return {?}\n */\n updateSecond(second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + second % 60 : second % 60;\n this.changeMinute(Math.floor(second / 60));\n }\n else {\n this.second = NaN;\n }\n }\n /**\n * @param {?=} checkSecs\n * @return {?}\n */\n isValid(checkSecs = true) {\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n }\n /**\n * @return {?}\n */\n toString() { return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`; }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nclass NgbTimepickerConfig {\n constructor() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n}\nNgbTimepickerConfig.ɵfac = function NgbTimepickerConfig_Factory(t) { return new (t || NgbTimepickerConfig)(); };\nNgbTimepickerConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbTimepickerConfig, factory: NgbTimepickerConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbTimepickerConfig.ngInjectableDef = defineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * \\@since 2.2.0\n * @abstract\n * @template T\n */\nclass NgbTimeAdapter {\n}\nNgbTimeAdapter.ɵfac = function NgbTimeAdapter_Factory(t) { return new (t || NgbTimeAdapter)(); };\nNgbTimeAdapter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbTimeAdapter, factory: function () { return NGB_DATEPICKER_TIME_ADAPTER_FACTORY(); }, providedIn: 'root' });\n/** @nocollapse */ NgbTimeAdapter.ngInjectableDef = defineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY }]\n }], null, null); })();\nclass NgbTimeStructAdapter extends NgbTimeAdapter {\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n fromModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n toModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n}\nNgbTimeStructAdapter.ɵfac = function NgbTimeStructAdapter_Factory(t) { return ɵNgbTimeStructAdapter_BaseFactory(t || NgbTimeStructAdapter); };\nNgbTimeStructAdapter.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbTimeStructAdapter, factory: NgbTimeStructAdapter.ɵfac });\nconst ɵNgbTimeStructAdapter_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(NgbTimeStructAdapter);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_TIMEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbTimepicker),\n multi: true\n};\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nclass NgbTimepicker {\n /**\n * @param {?} _config\n * @param {?} _ngbTimeAdapter\n * @param {?} _cd\n */\n constructor(_config, _ngbTimeAdapter, _cd) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n * @param {?} step\n * @return {?}\n */\n set hourStep(step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n }\n /**\n * @return {?}\n */\n get hourStep() { return this._hourStep; }\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n * @param {?} step\n * @return {?}\n */\n set minuteStep(step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n }\n /**\n * @return {?}\n */\n get minuteStep() { return this._minuteStep; }\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n * @param {?} step\n * @return {?}\n */\n set secondStep(step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n }\n /**\n * @return {?}\n */\n get secondStep() { return this._secondStep; }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n /** @type {?} */\n const structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) { this.onChange = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) { this.onTouched = fn; }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n /**\n * @param {?} step\n * @return {?}\n */\n changeHour(step) {\n this.model.changeHour(step);\n this.propagateModelChange();\n }\n /**\n * @param {?} step\n * @return {?}\n */\n changeMinute(step) {\n this.model.changeMinute(step);\n this.propagateModelChange();\n }\n /**\n * @param {?} step\n * @return {?}\n */\n changeSecond(step) {\n this.model.changeSecond(step);\n this.propagateModelChange();\n }\n /**\n * @param {?} newVal\n * @return {?}\n */\n updateHour(newVal) {\n /** @type {?} */\n const isPM = this.model.hour >= 12;\n /** @type {?} */\n const enteredHour = toInteger(newVal);\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n this.model.updateHour(enteredHour + 12);\n }\n else {\n this.model.updateHour(enteredHour);\n }\n this.propagateModelChange();\n }\n /**\n * @param {?} newVal\n * @return {?}\n */\n updateMinute(newVal) {\n this.model.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n }\n /**\n * @param {?} newVal\n * @return {?}\n */\n updateSecond(newVal) {\n this.model.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n }\n /**\n * @return {?}\n */\n toggleMeridian() {\n if (this.meridian) {\n this.changeHour(12);\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n formatHour(value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n }\n else {\n return padNumber(value % 24);\n }\n }\n else {\n return padNumber(NaN);\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n formatMinSec(value) { return padNumber(value); }\n /**\n * @return {?}\n */\n get isSmallSize() { return this.size === 'small'; }\n /**\n * @return {?}\n */\n get isLargeSize() { return this.size === 'large'; }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n }\n /**\n * @param {?=} touched\n * @return {?}\n */\n propagateModelChange(touched = true) {\n if (touched) {\n this.onTouched();\n }\n if (this.model.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n }\n else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n }\n}\nNgbTimepicker.ɵfac = function NgbTimepicker_Factory(t) { return new (t || NgbTimepicker)(ɵngcc0.ɵɵdirectiveInject(NgbTimepickerConfig), ɵngcc0.ɵɵdirectiveInject(NgbTimeAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbTimepicker.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbTimepicker, selectors: [[\"ngb-timepicker\"]], inputs: { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGB_TIMEPICKER_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 16, vars: 25, consts: function () { let i18n_48; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_49 = goog.getMsg(\"HH\");\n i18n_48 = MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_49;\n }\n else {\n i18n_48 = $localize `:@@ngb.timepicker.HH␟ce676ab1d6d98f85c836381cf100a4a91ef95a1f␟4043638465245303811:HH`;\n } let i18n_50; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_51 = goog.getMsg(\"Hours\");\n i18n_50 = MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_51;\n }\n else {\n i18n_50 = $localize `:@@ngb.timepicker.hours␟3bbce5fef7e1151da052a4e529453edb340e3912␟8070396816726827304:Hours`;\n } let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_53 = goog.getMsg(\"MM\");\n i18n_52 = MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_53;\n }\n else {\n i18n_52 = $localize `:@@ngb.timepicker.MM␟72c8edf6a50068a05bde70991e36b1e881f4ca54␟1647282246509919852:MM`;\n } let i18n_54; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_55 = goog.getMsg(\"Minutes\");\n i18n_54 = MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_55;\n }\n else {\n i18n_54 = $localize `:@@ngb.timepicker.minutes␟41e62daa962947c0d23ded0981975d1bddf0bf38␟5531237363767747080:Minutes`;\n } let i18n_56; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__57 = goog.getMsg(\"Increment hours\");\n i18n_56 = MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__57;\n }\n else {\n i18n_56 = $localize `:@@ngb.timepicker.increment-hours␟cb74bc1d625a6c1742f0d7d47306cf495780c218␟5939278348542933629:Increment hours`;\n } let i18n_58; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__59 = goog.getMsg(\"Decrement hours\");\n i18n_58 = MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__59;\n }\n else {\n i18n_58 = $localize `:@@ngb.timepicker.decrement-hours␟147c7a19429da7d999e247d22e33fee370b1691b␟3651829882940481818:Decrement hours`;\n } let i18n_60; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__61 = goog.getMsg(\"Increment minutes\");\n i18n_60 = MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__61;\n }\n else {\n i18n_60 = $localize `:@@ngb.timepicker.increment-minutes␟f5a4a3bc05e053f6732475d0e74875ec01c3a348␟180147720391025024:Increment minutes`;\n } let i18n_62; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__63 = goog.getMsg(\"Decrement minutes\");\n i18n_62 = MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__63;\n }\n else {\n i18n_62 = $localize `:@@ngb.timepicker.decrement-minutes␟c1a6899e529c096da5b660385d4e77fe1f7ad271␟7447789825403243588:Decrement minutes`;\n } let i18n_64; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__65 = goog.getMsg(\"SS\");\n i18n_64 = MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__65;\n }\n else {\n i18n_64 = $localize `:@@ngb.timepicker.SS␟ebe38d36a40a2383c5fefa9b4608ffbda08bd4a3␟3628127143071124194:SS`;\n } let i18n_66; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__67 = goog.getMsg(\"Seconds\");\n i18n_66 = MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__67;\n }\n else {\n i18n_66 = $localize `:@@ngb.timepicker.seconds␟4f2ed9e71a7c981db3e50ae2fedb28aff2ec4e6c␟8874012390997067175:Seconds`;\n } let i18n_68; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___69 = goog.getMsg(\"Increment seconds\");\n i18n_68 = MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___69;\n }\n else {\n i18n_68 = $localize `:@@ngb.timepicker.increment-seconds␟912322ecee7d659d04dcf494a70e22e49d334b26␟5364772110539092174:Increment seconds`;\n } let i18n_70; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___71 = goog.getMsg(\"Decrement seconds\");\n i18n_70 = MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___71;\n }\n else {\n i18n_70 = $localize `:@@ngb.timepicker.decrement-seconds␟5db47ac104294243a70eb9124fbea9d0004ddf69␟753633511487974857:Decrement seconds`;\n } let i18n_72; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___73 = goog.getMsg(\"PM\");\n i18n_72 = MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___73;\n }\n else {\n i18n_72 = $localize `:@@ngb.timepicker.PM␟ea3531b9e785bbfa3a8e3bac5a63256791fe6742␟8786206544894467023:PM`;\n } let i18n_74; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___75 = goog.getMsg(\"AM\");\n i18n_74 = MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___75;\n }\n else {\n i18n_74 = $localize `:@@ngb.timepicker.AM␟7a15fe3d37ae85ad0d31e40bb0c366e6a6ce6aa9␟5815402189639789859:AM`;\n } return [[3, \"disabled\"], [1, \"ngb-tp\"], [1, \"ngb-tp-input-container\", \"ngb-tp-hour\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"class\", \"btn btn-link\", 3, \"btn-sm\", \"btn-lg\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"text\", \"maxlength\", \"2\", \"placeholder\", i18n_48, \"aria-label\", i18n_50, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [1, \"ngb-tp-spacer\"], [1, \"ngb-tp-input-container\", \"ngb-tp-minute\"], [\"type\", \"text\", \"maxlength\", \"2\", \"placeholder\", i18n_52, \"aria-label\", i18n_54, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [\"class\", \"ngb-tp-spacer\", 4, \"ngIf\"], [\"class\", \"ngb-tp-input-container ngb-tp-second\", 4, \"ngIf\"], [\"class\", \"ngb-tp-meridian\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"disabled\", \"click\"], [1, \"chevron\", \"ngb-tp-chevron\"], [1, \"sr-only\"], i18n_56, [1, \"chevron\", \"ngb-tp-chevron\", \"bottom\"], i18n_58, i18n_60, i18n_62, [1, \"ngb-tp-input-container\", \"ngb-tp-second\"], [\"type\", \"text\", \"maxlength\", \"2\", \"placeholder\", i18n_64, \"aria-label\", i18n_66, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], i18n_68, i18n_70, [1, \"ngb-tp-meridian\"], [\"type\", \"button\", 1, \"btn\", \"btn-outline-primary\", 3, \"disabled\", \"click\"], [4, \"ngIf\", \"ngIfElse\"], [\"am\", \"\"], i18n_72, i18n_74]; }, template: function NgbTimepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"fieldset\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(4, \"input\", 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_4_listener($event) { return ctx.updateHour($event.target.value); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_4_listener($event) { ctx.changeHour(ctx.hourStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_4_listener($event) { ctx.changeHour(-ctx.hourStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, NgbTimepicker_button_5_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵtext(7, \":\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n ɵngcc0.ɵɵtemplate(9, NgbTimepicker_button_9_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(10, \"input\", 7);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_10_listener($event) { return ctx.updateMinute($event.target.value); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_10_listener($event) { ctx.changeMinute(ctx.minuteStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_10_listener($event) { ctx.changeMinute(-ctx.minuteStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, NgbTimepicker_button_11_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(12, NgbTimepicker_div_12_Template, 2, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(13, NgbTimepicker_div_13_Template, 4, 9, \"div\", 9);\n ɵngcc0.ɵɵtemplate(14, NgbTimepicker_div_14_Template, 1, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(15, NgbTimepicker_div_15_Template, 5, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatHour(ctx.model == null ? null : ctx.model.hour))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatMinSec(ctx.model == null ? null : ctx.model.minute))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:'';display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"], encapsulation: 2 });\n/** @nocollapse */\nNgbTimepicker.ctorParameters = () => [\n { type: NgbTimepickerConfig },\n { type: NgbTimeAdapter },\n { type: ChangeDetectorRef }\n];\nNgbTimepicker.propDecorators = {\n meridian: [{ type: Input }],\n spinners: [{ type: Input }],\n seconds: [{ type: Input }],\n hourStep: [{ type: Input }],\n minuteStep: [{ type: Input }],\n secondStep: [{ type: Input }],\n readonlyInputs: [{ type: Input }],\n size: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepicker, [{\n type: Component,\n args: [{\n selector: 'ngb-timepicker',\n encapsulation: ViewEncapsulation.None,\n template: `\n
\n
\n
\n \n \n \n
\n
:
\n
\n \n \n \n
\n
:
\n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n `,\n providers: [NGB_TIMEPICKER_VALUE_ACCESSOR],\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:'';display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"]\n }]\n }], function () { return [{ type: NgbTimepickerConfig }, { type: NgbTimeAdapter }, { type: ɵngcc0.ChangeDetectorRef }]; }, { meridian: [{\n type: Input\n }], spinners: [{\n type: Input\n }], seconds: [{\n type: Input\n }], hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondStep: [{\n type: Input\n }], readonlyInputs: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbTimepickerModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbTimepickerModule }; }\n}\nNgbTimepickerModule.ɵfac = function NgbTimepickerModule_Factory(t) { return new (t || NgbTimepickerModule)(); };\nNgbTimepickerModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbTimepickerModule });\nNgbTimepickerModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTimepickerModule, { declarations: function () { return [NgbTimepicker]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTimepicker]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nclass NgbTooltipConfig {\n constructor() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n}\nNgbTooltipConfig.ɵfac = function NgbTooltipConfig_Factory(t) { return new (t || NgbTooltipConfig)(); };\nNgbTooltipConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbTooltipConfig, factory: NgbTooltipConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbTooltipConfig.ngInjectableDef = defineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(); }, token: NgbTooltipConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nlet nextId$5 = 0;\nclass NgbTooltipWindow {\n}\nNgbTooltipWindow.ɵfac = function NgbTooltipWindow_Factory(t) { return new (t || NgbTooltipWindow)(); };\nNgbTooltipWindow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbTooltipWindow, selectors: [[\"ngb-tooltip-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 3, hostBindings: function NgbTooltipWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"tooltip show\" + (ctx.tooltipClass ? \" \" + ctx.tooltipClass : \"\"));\n } }, inputs: { id: \"id\", tooltipClass: \"tooltipClass\" }, ngContentSelectors: _c3, decls: 3, vars: 0, consts: [[1, \"arrow\"], [1, \"tooltip-inner\"]], template: function NgbTooltipWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } }, styles: [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"], encapsulation: 2, changeDetection: 0 });\nNgbTooltipWindow.propDecorators = {\n id: [{ type: Input }],\n tooltipClass: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"tooltip show\" + (tooltipClass ? \" \" + tooltipClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: `
`,\n styles: [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"]\n }]\n }], null, { id: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }] }); })();\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nclass NgbTooltip {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} injector\n * @param {?} componentFactoryResolver\n * @param {?} viewContainerRef\n * @param {?} config\n * @param {?} _ngZone\n * @param {?} _document\n * @param {?} _changeDetector\n * @param {?} _applicationRef\n */\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, _applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._applicationRef = _applicationRef;\n /**\n * An event emitted when the tooltip is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId$5++}`;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this.tooltipClass = config.tooltipClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-tooltip');\n }\n });\n }\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n * @param {?} value\n * @return {?}\n */\n set ngbTooltip(value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n }\n /**\n * @return {?}\n */\n get ngbTooltip() { return this._ngbTooltip; }\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n * @param {?=} context\n * @return {?}\n */\n open(context) {\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n this._windowRef = this._popupService.open(this._ngbTooltip, context);\n this._windowRef.instance.tooltipClass = this.tooltipClass;\n this._windowRef.instance.id = this._ngbTooltipWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n }\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n close() {\n if (this._windowRef != null) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n isOpen() { return this._windowRef != null; }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n }\n}\nNgbTooltip.ɵfac = function NgbTooltip_Factory(t) { return new (t || NgbTooltip)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbTooltipConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTooltip.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbTooltip, selectors: [[\"\", \"ngbTooltip\", \"\"]], inputs: { autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disableTooltip: \"disableTooltip\", tooltipClass: \"tooltipClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbTooltip: \"ngbTooltip\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbTooltip\"] });\n/** @nocollapse */\nNgbTooltip.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbTooltipConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\nNgbTooltip.propDecorators = {\n autoClose: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disableTooltip: [{ type: Input }],\n tooltipClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }],\n ngbTooltip: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltip, [{\n type: Directive,\n args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbTooltipConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disableTooltip: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbTooltip: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbTooltipModule {\n /**\n * No need in forRoot anymore with tree-shakeable services\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbTooltipModule }; }\n}\nNgbTooltipModule.ɵfac = function NgbTooltipModule_Factory(t) { return new (t || NgbTooltipModule)(); };\nNgbTooltipModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbTooltipModule });\nNgbTooltipModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTooltipModule, { declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A component that helps with text highlighting.\n *\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\n */\nclass NgbHighlight {\n constructor() {\n /**\n * The CSS class for `` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n /** @type {?} */\n const resultStr = toString(this.result);\n if (!resultStr) {\n this.parts = [resultStr];\n return;\n }\n /** @type {?} */\n let resultTerms = Array.isArray(this.term) ? this.term.map(x => toString(x)) : [toString(this.term)];\n resultTerms = resultTerms.filter(x => x);\n if (!resultTerms.length) {\n this.parts = [resultStr];\n return;\n }\n /** @type {?} */\n const regexStr = `(${resultTerms.map(x => regExpEscape(x)).join('|')})`;\n this.parts = resultStr.split(new RegExp(regexStr, 'gmi'));\n }\n}\nNgbHighlight.ɵfac = function NgbHighlight_Factory(t) { return new (t || NgbHighlight)(); };\nNgbHighlight.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbHighlight, selectors: [[\"ngb-highlight\"]], inputs: { highlightClass: \"highlightClass\", result: \"result\", term: \"term\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"class\", 4, \"ngIf\", \"ngIfElse\"], [\"even\", \"\"]], template: function NgbHighlight_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_Template, 3, 2, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.parts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], styles: [\".ngb-highlight{font-weight:700}\"], encapsulation: 2, changeDetection: 0 });\nNgbHighlight.propDecorators = {\n highlightClass: [{ type: Input }],\n result: [{ type: Input }],\n term: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbHighlight, [{\n type: Component,\n args: [{\n selector: 'ngb-highlight',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `` +\n `{{part}}{{part}}` +\n ``,\n styles: [\".ngb-highlight{font-weight:700}\"]\n }]\n }], function () { return []; }, { highlightClass: [{\n type: Input\n }], result: [{\n type: Input\n }], term: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbTypeaheadWindow {\n constructor() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n /**\n * @return {?}\n */\n hasActive() { return this.activeIdx > -1 && this.activeIdx < this.results.length; }\n /**\n * @return {?}\n */\n getActive() { return this.results[this.activeIdx]; }\n /**\n * @param {?} activeIdx\n * @return {?}\n */\n markActive(activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n }\n /**\n * @return {?}\n */\n next() {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n }\n else {\n this.activeIdx++;\n }\n this._activeChanged();\n }\n /**\n * @return {?}\n */\n prev() {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n }\n else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n }\n else {\n this.activeIdx--;\n }\n this._activeChanged();\n }\n /**\n * @return {?}\n */\n resetActive() {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n }\n /**\n * @param {?} item\n * @return {?}\n */\n select(item) { this.selectEvent.emit(item); }\n /**\n * @return {?}\n */\n ngOnInit() { this.resetActive(); }\n /**\n * @return {?}\n */\n _activeChanged() {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n }\n}\nNgbTypeaheadWindow.ɵfac = function NgbTypeaheadWindow_Factory(t) { return new (t || NgbTypeaheadWindow)(); };\nNgbTypeaheadWindow.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NgbTypeaheadWindow, selectors: [[\"ngb-typeahead-window\"]], hostAttrs: [\"role\", \"listbox\", 1, \"dropdown-menu\", \"show\"], hostVars: 1, hostBindings: function NgbTypeaheadWindow_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgbTypeaheadWindow_mousedown_HostBindingHandler($event) { return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n } }, inputs: { focusFirst: \"focusFirst\", formatter: \"formatter\", id: \"id\", results: \"results\", term: \"term\", resultTemplate: \"resultTemplate\" }, outputs: { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, exportAs: [\"ngbTypeaheadWindow\"], decls: 3, vars: 1, consts: [[\"rt\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"result\", \"term\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"id\", \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbTypeaheadWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbTypeaheadWindow_ng_template_0_Template, 1, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbTypeaheadWindow_ng_template_2_Template, 2, 9, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results);\n } }, directives: [ɵngcc1.NgForOf, NgbHighlight, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\nNgbTypeaheadWindow.propDecorators = {\n id: [{ type: Input }],\n focusFirst: [{ type: Input }],\n results: [{ type: Input }],\n term: [{ type: Input }],\n formatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n selectEvent: [{ type: Output, args: ['select',] }],\n activeChangeEvent: [{ type: Output, args: ['activeChange',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n host: { '(mousedown)': '$event.preventDefault()', 'class': 'dropdown-menu show', 'role': 'listbox', '[id]': 'id' },\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return []; }, { focusFirst: [{\n type: Input\n }], formatter: [{\n type: Input\n }], selectEvent: [{\n type: Output,\n args: ['select']\n }], activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }], id: [{\n type: Input\n }], results: [{\n type: Input\n }], term: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\n/**\n * @return {?}\n */\nfunction ARIA_LIVE_DELAY_FACTORY() {\n return 100;\n}\n/**\n * @param {?} document\n * @param {?=} lazyCreate\n * @return {?}\n */\nfunction getLiveElement(document, lazyCreate = false) {\n /** @type {?} */\n let element = (/** @type {?} */ (document.body.querySelector('#ngb-live')));\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('sr-only');\n document.body.appendChild(element);\n }\n return element;\n}\nclass Live {\n /**\n * @param {?} _document\n * @param {?} _delay\n */\n constructor(_document, _delay) {\n this._document = _document;\n this._delay = _delay;\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n /** @type {?} */\n const element = getLiveElement(this._document);\n if (element) {\n element.parentElement.removeChild(element);\n }\n }\n /**\n * @param {?} message\n * @return {?}\n */\n say(message) {\n /** @type {?} */\n const element = getLiveElement(this._document, true);\n /** @type {?} */\n const delay$$1 = this._delay;\n element.textContent = '';\n /** @type {?} */\n const setText = () => element.textContent = message;\n if (delay$$1 === null) {\n setText();\n }\n else {\n setTimeout(setText, delay$$1);\n }\n }\n}\nLive.ɵfac = function Live_Factory(t) { return new (t || Live)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ARIA_LIVE_DELAY)); };\nLive.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: Live, factory: Live.ɵfac, providedIn: 'root' });\n/** @nocollapse */\nLive.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [ARIA_LIVE_DELAY,] }] }\n];\n/** @nocollapse */ Live.ngInjectableDef = defineInjectable({ factory: function Live_Factory() { return new Live(inject(DOCUMENT), inject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Live, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ARIA_LIVE_DELAY]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nclass NgbTypeaheadConfig {\n constructor() {\n this.editable = true;\n this.focusFirst = true;\n this.showHint = false;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n}\nNgbTypeaheadConfig.ɵfac = function NgbTypeaheadConfig_Factory(t) { return new (t || NgbTypeaheadConfig)(); };\nNgbTypeaheadConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NgbTypeaheadConfig, factory: NgbTypeaheadConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ NgbTypeaheadConfig.ngInjectableDef = defineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_TYPEAHEAD_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbTypeahead),\n multi: true\n};\n/** @type {?} */\nlet nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nclass NgbTypeahead {\n /**\n * @param {?} _elementRef\n * @param {?} _viewContainerRef\n * @param {?} _renderer\n * @param {?} _injector\n * @param {?} componentFactoryResolver\n * @param {?} config\n * @param {?} ngZone\n * @param {?} _live\n * @param {?} _document\n * @param {?} _ngZone\n * @param {?} _changeDetector\n * @param {?} _applicationRef\n */\n constructor(_elementRef, _viewContainerRef, _renderer, _injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, _applicationRef) {\n this._elementRef = _elementRef;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._injector = _injector;\n this._live = _live;\n this._document = _document;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n this._applicationRef = _applicationRef;\n this._closed$ = new Subject();\n /**\n * The value for the `autocomplete` attribute for the `` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * \\@since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * The preferred placement of the typeahead.\n *\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n * `\"right-bottom\"`\n *\n * Accepts an array of strings or a string with space separated possible values.\n *\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = 'bottom-left';\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._onTouched = () => { };\n this._onChange = (_) => { };\n this.container = config.container;\n this.editable = config.editable;\n this.focusFirst = config.focusFirst;\n this.showHint = config.showHint;\n this.placement = config.placement;\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\n .pipe(map($event => ((/** @type {?} */ ($event.target))).value));\n this._resubscribeTypeahead = new BehaviorSubject(null);\n this._popupService = new PopupService(NgbTypeaheadWindow, _injector, _viewContainerRef, _renderer, componentFactoryResolver, _applicationRef);\n this._zoneSubscription = ngZone.onStable.subscribe(() => {\n if (this.isPopupOpen()) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body');\n }\n });\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n /** @type {?} */\n const inputValues$ = this._valueChanges.pipe(tap(value => {\n this._inputValueBackup = this.showHint ? value : null;\n if (this.editable) {\n this._onChange(value);\n }\n }));\n /** @type {?} */\n const results$ = inputValues$.pipe(this.ngbTypeahead);\n /** @type {?} */\n const processedResults$ = results$.pipe(tap(() => {\n if (!this.editable) {\n this._onChange(undefined);\n }\n }));\n /** @type {?} */\n const userInput$ = this._resubscribeTypeahead.pipe(switchMap(() => processedResults$));\n this._subscription = this._subscribeToUserInput(userInput$);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._closePopup();\n this._unsubscribeFromUserInput();\n this._zoneSubscription.unsubscribe();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) { this._onChange = fn; }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) { this._onTouched = fn; }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * Dismisses typeahead popup window\n * @return {?}\n */\n dismissPopup() {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Returns true if the typeahead popup window is displayed\n * @return {?}\n */\n isPopupOpen() { return this._windowRef != null; }\n /**\n * @return {?}\n */\n handleBlur() {\n this._resubscribeTypeahead.next(null);\n this._onTouched();\n }\n /**\n * @param {?} event\n * @return {?}\n */\n handleKeyDown(event) {\n if (!this.isPopupOpen()) {\n return;\n }\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab:\n /** @type {?} */\n const result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n }\n /**\n * @return {?}\n */\n _openPopup() {\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._elementRef.nativeElement.value;\n this._windowRef = this._popupService.open();\n this._windowRef.instance.id = this.popupId;\n this._windowRef.instance.selectEvent.subscribe((result) => this._selectResultClosePopup(result));\n this._windowRef.instance.activeChangeEvent.subscribe((activeId) => this.activeDescendant = activeId);\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n }\n }\n /**\n * @return {?}\n */\n _closePopup() {\n this._closed$.next();\n this._popupService.close();\n this._windowRef = null;\n this.activeDescendant = undefined;\n }\n /**\n * @param {?} result\n * @return {?}\n */\n _selectResult(result) {\n /** @type {?} */\n let defaultPrevented = false;\n this.selectItem.emit({ item: result, preventDefault: () => { defaultPrevented = true; } });\n this._resubscribeTypeahead.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n }\n /**\n * @param {?} result\n * @return {?}\n */\n _selectResultClosePopup(result) {\n this._selectResult(result);\n this._closePopup();\n }\n /**\n * @return {?}\n */\n _showHint() {\n if (this.showHint && this._windowRef.instance.hasActive() && this._inputValueBackup != null) {\n /** @type {?} */\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\n /** @type {?} */\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n }\n else {\n this._writeInputValue(formattedVal);\n }\n }\n }\n /**\n * @param {?} item\n * @return {?}\n */\n _formatItemForInput(item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n _writeInputValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n }\n /**\n * @param {?} userInput$\n * @return {?}\n */\n _subscribeToUserInput(userInput$) {\n return userInput$.subscribe((results) => {\n if (!results || results.length === 0) {\n this._closePopup();\n }\n else {\n this._openPopup();\n this._windowRef.instance.focusFirst = this.focusFirst;\n this._windowRef.instance.results = results;\n this._windowRef.instance.term = this._elementRef.nativeElement.value;\n if (this.resultFormatter) {\n this._windowRef.instance.formatter = this.resultFormatter;\n }\n if (this.resultTemplate) {\n this._windowRef.instance.resultTemplate = this.resultTemplate;\n }\n this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n this._windowRef.changeDetectorRef.detectChanges();\n this._showHint();\n }\n // live announcer\n /** @type {?} */\n const count = results ? results.length : 0;\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\n });\n }\n /**\n * @return {?}\n */\n _unsubscribeFromUserInput() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n }\n}\nNgbTypeahead.ɵfac = function NgbTypeahead_Factory(t) { return new (t || NgbTypeahead)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(NgbTypeaheadConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(Live), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTypeahead.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgbTypeahead, selectors: [[\"input\", \"ngbTypeahead\", \"\"]], hostAttrs: [\"autocapitalize\", \"off\", \"autocorrect\", \"off\", \"role\", \"combobox\", \"aria-multiline\", \"false\"], hostVars: 7, hostBindings: function NgbTypeahead_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbTypeahead_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbTypeahead_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"autocomplete\", ctx.autocomplete);\n ɵngcc0.ɵɵattribute(\"aria-autocomplete\", ctx.showHint ? \"both\" : \"list\")(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-owns\", ctx.isPopupOpen() ? ctx.popupId : null)(\"aria-expanded\", ctx.isPopupOpen());\n ɵngcc0.ɵɵclassProp(\"open\", ctx.isPopupOpen());\n } }, inputs: { autocomplete: \"autocomplete\", placement: \"placement\", container: \"container\", editable: \"editable\", focusFirst: \"focusFirst\", showHint: \"showHint\", inputFormatter: \"inputFormatter\", ngbTypeahead: \"ngbTypeahead\", resultFormatter: \"resultFormatter\", resultTemplate: \"resultTemplate\" }, outputs: { selectItem: \"selectItem\" }, exportAs: [\"ngbTypeahead\"], features: [ɵngcc0.ɵɵProvidersFeature([NGB_TYPEAHEAD_VALUE_ACCESSOR])] });\n/** @nocollapse */\nNgbTypeahead.ctorParameters = () => [\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: NgbTypeaheadConfig },\n { type: NgZone },\n { type: Live },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\nNgbTypeahead.propDecorators = {\n autocomplete: [{ type: Input }],\n container: [{ type: Input }],\n editable: [{ type: Input }],\n focusFirst: [{ type: Input }],\n inputFormatter: [{ type: Input }],\n ngbTypeahead: [{ type: Input }],\n resultFormatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n showHint: [{ type: Input }],\n placement: [{ type: Input }],\n selectItem: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeahead, [{\n type: Directive,\n args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [NGB_TYPEAHEAD_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: NgbTypeaheadConfig }, { type: ɵngcc0.NgZone }, { type: Live }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { autocomplete: [{\n type: Input\n }], placement: [{\n type: Input\n }], selectItem: [{\n type: Output\n }], container: [{\n type: Input\n }], editable: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], showHint: [{\n type: Input\n }], inputFormatter: [{\n type: Input\n }], ngbTypeahead: [{\n type: Input\n }], resultFormatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass NgbTypeaheadModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbTypeaheadModule }; }\n}\nNgbTypeaheadModule.ɵfac = function NgbTypeaheadModule_Factory(t) { return new (t || NgbTypeaheadModule)(); };\nNgbTypeaheadModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbTypeaheadModule });\nNgbTypeaheadModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTypeaheadModule, { declarations: function () { return [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTypeahead, NgbHighlight]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n entryComponents: [NgbTypeaheadWindow]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NGB_MODULES = [\n NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\n NgbDropdownModule, NgbModalModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule,\n NgbTabsetModule, NgbTimepickerModule, NgbTooltipModule, NgbTypeaheadModule\n];\nclass NgbModule {\n /**\n * Importing with '.forRoot()' is no longer necessary, you can simply import the module.\n * Will be removed in 4.0.0.\n *\n * @deprecated 3.0.0\n * @return {?}\n */\n static forRoot() { return { ngModule: NgbModule }; }\n}\nNgbModule.ɵfac = function NgbModule_Factory(t) { return new (t || NgbModule)(); };\nNgbModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgbModule });\nNgbModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTabsetModule, NgbTimepickerModule, NgbTooltipModule, NgbTypeaheadModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModule, { imports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTabsetModule, NgbTimepickerModule, NgbTooltipModule, NgbTypeaheadModule], exports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTabsetModule, NgbTimepickerModule, NgbTooltipModule, NgbTypeaheadModule] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModule, [{\n type: NgModule,\n args: [{ imports: NGB_MODULES, exports: NGB_MODULES }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { NgbAccordionModule, NgbAccordionConfig, NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle, NgbAlertModule, NgbAlertConfig, NgbAlert, NgbButtonsModule, NgbButtonLabel, NgbCheckBox, NgbRadio, NgbRadioGroup, NgbCarouselModule, NgbCarouselConfig, NgbCarousel, NgbSlide, NgbCollapseModule, NgbCollapse, NgbCalendar, NgbCalendarGregorian, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarHebrew, NgbCalendarPersian, NgbDatepickerModule, NgbDatepickerI18n, NgbDatepickerI18nHebrew, NgbDatepickerConfig, NgbDate, NgbDateParserFormatter, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDatepicker, NgbInputDatepicker, NgbDropdownModule, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownToggle, NgbDropdown, NgbModalModule, NgbModal, NgbModalConfig, NgbActiveModal, NgbModalRef, ModalDismissReasons, NgbPaginationModule, NgbPaginationConfig, NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPopoverModule, NgbPopoverConfig, NgbPopover, NgbProgressbarModule, NgbProgressbarConfig, NgbProgressbar, NgbRatingModule, NgbRatingConfig, NgbRating, NgbTabsetModule, NgbTabsetConfig, NgbTabset, NgbTab, NgbTabContent, NgbTabTitle, NgbTimepickerModule, NgbTimepickerConfig, NgbTimepicker, NgbTimeAdapter, NgbTooltipModule, NgbTooltipConfig, NgbTooltip, NgbHighlight, NgbTypeaheadModule, NgbTypeaheadConfig, NgbTypeahead, NgbModule, NGB_CAROUSEL_DIRECTIVES as ɵa, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵi, NgbDateStructAdapter as ɵj, NgbDatepickerDayView as ɵd, NGB_DATEPICKER_18N_FACTORY as ɵg, NgbDatepickerI18nDefault as ɵh, NgbDatepickerKeyMapService as ɵt, NgbDatepickerMonthView as ɵc, NgbDatepickerNavigation as ɵe, NgbDatepickerNavigationSelect as ɵf, NgbDatepickerService as ɵs, NgbCalendarHijri as ɵbb, NGB_DATEPICKER_CALENDAR_FACTORY as ɵb, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵk, NgbDateISOParserFormatter as ɵl, NgbNavbar as ɵm, NgbModalBackdrop as ɵu, NgbModalStack as ɵw, NgbModalWindow as ɵv, NgbPopoverWindow as ɵn, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵo, NgbTimeStructAdapter as ɵp, NgbTooltipWindow as ɵq, NgbTypeaheadWindow as ɵr, ARIA_LIVE_DELAY as ɵy, ARIA_LIVE_DELAY_FACTORY as ɵz, Live as ɵba, ContentRef as ɵbc, ScrollBar as ɵx };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYm9vdHN0cmFwLmpzIiwic291cmNlcyI6WyJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL3V0aWwudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9hY2NvcmRpb24vYWNjb3JkaW9uLWNvbmZpZy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2FjY29yZGlvbi9hY2NvcmRpb24udHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9hY2NvcmRpb24vYWNjb3JkaW9uLm1vZHVsZS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2FsZXJ0L2FsZXJ0LWNvbmZpZy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2FsZXJ0L2FsZXJ0LnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvYWxlcnQvYWxlcnQubW9kdWxlLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvYnV0dG9ucy9sYWJlbC50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2J1dHRvbnMvY2hlY2tib3gudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9idXR0b25zL3JhZGlvLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvYnV0dG9ucy9idXR0b25zLm1vZHVsZS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2Nhcm91c2VsL2Nhcm91c2VsLWNvbmZpZy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2Nhcm91c2VsL2Nhcm91c2VsLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvY2Fyb3VzZWwvY2Fyb3VzZWwubW9kdWxlLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvY29sbGFwc2UvY29sbGFwc2UudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9jb2xsYXBzZS9jb2xsYXBzZS5tb2R1bGUudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL25nYi1kYXRlLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9uZ2ItY2FsZW5kYXIudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9vbHMudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItaTE4bi50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1zZXJ2aWNlLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdXRpbC9rZXkudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXIta2V5bWFwLXNlcnZpY2UudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItdmlldy1tb2RlbC50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jb25maWcudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2FkYXB0ZXJzL25nYi1kYXRlLWFkYXB0ZXIudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXIudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXItbW9udGgtdmlldy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdXRpbC9hdXRvY2xvc2UudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL2ZvY3VzLXRyYXAudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL3Bvc2l0aW9uaW5nLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9uZ2ItZGF0ZS1wYXJzZXItZm9ybWF0dGVyLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWlucHV0LnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWRheS12aWV3LnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9kYXRlcGlja2VyLW5hdmlnYXRpb24tc2VsZWN0LnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9oaWpyaS9uZ2ItY2FsZW5kYXItaGlqcmkudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2hpanJpL25nYi1jYWxlbmRhci1pc2xhbWljLWNpdmlsLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9oaWpyaS9uZ2ItY2FsZW5kYXItaXNsYW1pYy11bWFscXVyYS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvamFsYWxpL2phbGFsaS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvamFsYWxpL25nYi1jYWxlbmRhci1wZXJzaWFuLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9oZWJyZXcvaGVicmV3LnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9oZWJyZXcvbmdiLWNhbGVuZGFyLWhlYnJldy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2RhdGVwaWNrZXIvaGVicmV3L2RhdGVwaWNrZXItaTE4bi1oZWJyZXcudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2FkYXB0ZXJzL25nYi1kYXRlLW5hdGl2ZS1hZGFwdGVyLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZGF0ZXBpY2tlci9hZGFwdGVycy9uZ2ItZGF0ZS1uYXRpdmUtdXRjLWFkYXB0ZXIudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZHJvcGRvd24vZHJvcGRvd24tY29uZmlnLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvZHJvcGRvd24vZHJvcGRvd24udHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9tb2RhbC9tb2RhbC1jb25maWcudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC91dGlsL3BvcHVwLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdXRpbC9zY3JvbGxiYXIudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9tb2RhbC9tb2RhbC1iYWNrZHJvcC50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL21vZGFsL21vZGFsLXJlZi50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL21vZGFsL21vZGFsLWRpc21pc3MtcmVhc29ucy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL21vZGFsL21vZGFsLXdpbmRvdy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL21vZGFsL21vZGFsLXN0YWNrLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvbW9kYWwvbW9kYWwudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9tb2RhbC9tb2RhbC5tb2R1bGUudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9wYWdpbmF0aW9uL3BhZ2luYXRpb24tY29uZmlnLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLm1vZHVsZS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3V0aWwvdHJpZ2dlcnMudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9wb3BvdmVyL3BvcG92ZXItY29uZmlnLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcG9wb3Zlci9wb3BvdmVyLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLWNvbmZpZy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcHJvZ3Jlc3NiYXIvcHJvZ3Jlc3NiYXIubW9kdWxlLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcmF0aW5nL3JhdGluZy1jb25maWcudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC9yYXRpbmcvcmF0aW5nLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvcmF0aW5nL3JhdGluZy5tb2R1bGUudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90YWJzZXQvdGFic2V0LWNvbmZpZy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3RhYnNldC90YWJzZXQudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90YWJzZXQvdGFic2V0Lm1vZHVsZS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3RpbWVwaWNrZXIvbmdiLXRpbWUudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90aW1lcGlja2VyL3RpbWVwaWNrZXItY29uZmlnLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdGltZXBpY2tlci9uZ2ItdGltZS1hZGFwdGVyLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdGltZXBpY2tlci90aW1lcGlja2VyLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdGltZXBpY2tlci90aW1lcGlja2VyLm1vZHVsZS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3Rvb2x0aXAvdG9vbHRpcC1jb25maWcudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90b29sdGlwL3Rvb2x0aXAudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90b29sdGlwL3Rvb2x0aXAubW9kdWxlLnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdHlwZWFoZWFkL2hpZ2hsaWdodC50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWQtd2luZG93LnRzIiwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvdXRpbC9hY2Nlc3NpYmlsaXR5L2xpdmUudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90eXBlYWhlYWQvdHlwZWFoZWFkLWNvbmZpZy50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWQudHMiLCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC90eXBlYWhlYWQvdHlwZWFoZWFkLm1vZHVsZS50cyIsIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2luZGV4LnRzIl0sIm5hbWVzIjpbIm5leHRJZCIsIk5HQl9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SIiwibW9kIiwiR1JFR09SSUFOX0VQT0NIIiwiaXNHcmVnb3JpYW5MZWFwWWVhciIsImZyb21HcmVnb3JpYW4iLCJ0b0dyZWdvcmlhbiIsImRlbGF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFDLEtBQVU7QUFBSSxJQUN0QyxPQUFPLFFBQVEsQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFDRDtBQUNHO0FBQW9CO0FBQWU7QUFBdEMsU0FBZ0IsUUFBUSxDQUFDLEtBQVU7QUFBSSxJQUNyQyxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ25FLENBQUM7QUFDRDtBQUNHO0FBQW9CO0FBQWtCO0FBQW1CO0FBQWU7QUFBM0UsU0FBZ0IsZUFBZSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFBSSxJQUNyRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUNEO0FBQ0c7QUFBb0I7QUFBZTtBQUF0QyxTQUFnQixRQUFRLENBQUMsS0FBVTtBQUFJLElBQ3JDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0FBQ25DLENBQUM7QUFDRDtBQUNHO0FBQW9CO0FBQWU7QUFBdEMsU0FBZ0IsUUFBUSxDQUFDLEtBQVU7QUFBSSxJQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFDRDtBQUNHO0FBQW9CO0FBQWU7QUFBdEMsU0FBZ0IsU0FBUyxDQUFDLEtBQVU7QUFBSSxJQUN0QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7QUFDckYsQ0FBQztBQUNEO0FBQ0c7QUFBb0I7QUFBZTtBQUF0QyxTQUFnQixTQUFTLENBQUMsS0FBVTtBQUFJLElBQ3RDLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQy9DLENBQUM7QUFDRDtBQUNHO0FBQW9CO0FBQWU7QUFBdEMsU0FBZ0IsU0FBUyxDQUFDLEtBQWE7QUFDdkMsSUFBRSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN2QixRQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxLQUFHO0FBQUMsU0FBSztBQUNULFFBQUksT0FBTyxFQUFFLENBQUM7QUFDZCxLQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0c7QUFBbUI7QUFDdEI7QUFEQSxTQUFnQixZQUFZLENBQUMsSUFBSTtBQUNqQyxJQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBQ0Q7QUFDRztBQUFzQjtBQUF3QjtBQUFlO0FBQWhFLFNBQWdCLFlBQVksQ0FBQyxPQUFZLEVBQUUsU0FBaUI7QUFBSSxJQUM5RCxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSztBQUNoRSxRQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDbEU7QUFFQyxJQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNsQztBQUNJLFFBQUEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsb0JBQUMsT0FBTyxDQUFDLFNBQVMsSUFBUyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDO0FBQ3hILEtBQUc7QUFDSCxJQUNFLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsQ0FBUztBQUNoRDtBQUNNLFlBREUsRUFBRSxHQUFHLElBQUk7QUFDakIsUUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDaEQsWUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixTQUFLO0FBQ0wsUUFBSSxHQUFHO0FBQ1AsWUFBTSxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDekIsZ0JBQVEsT0FBTyxFQUFFLENBQUM7QUFDbEIsYUFBTztBQUNQLFlBQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztBQUM3QyxTQUFLLFFBQVEsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtBQUMvQyxRQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEtBQUcsQ0FBQztBQUNKLENBQUM7QUFDRDtBQUNHO0FBQXNCO0FBQXVCO0FBQWU7QUFBL0QsU0FBZ0IsT0FBTyxDQUFDLE9BQW9CLEVBQUUsUUFBUTtBQUFJLElBQ3hELElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDakIsUUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixLQUFHO0FBQ0gsSUFDRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUNEO0FBQUM7QUFBSTtBQUFrQztBQUFrRTtBQzNFekc7QUFBSTtBQUd1RDtBQUFHO0FBRVY7QUFDdEI7QUFHOUIsTUFBYSxrQkFBa0I7QUFDL0IsSUFGQTtBQUFnQixRQUVkLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLEtBQ0M7QUFDRDs4Q0FMQyxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzBJQUMzQjtBQUFDOzs7O2dEQUlzSTtBQUFDO0FBQUM7QUFBSTtBQUFrQztBQUFrRTtBQ2J0UDtBQUNRLElBbUJKLE1BQU0sR0FBRyxDQUFDO0FBQ2Q7QUFDRztBQUNzRTtBQUFHO0FBTTNFO0FBQUc7QUFBaUI7QUF1QnJCLE1BQWEsY0FBYztBQUMzQjtBQUFRO0FBQ2lCO0FBQ2hCO0FBQ1QsSUFJRSxZQUNtRCxTQUF1QixFQUNQLEtBQWU7QUFBSSxRQURuQyxjQUFTLEdBQVQsU0FBUyxDQUFjO0FBQUMsUUFDUixVQUFLLEdBQUwsS0FBSyxDQUFVO0FBQUMsS0FBRztBQUN4RjtBQUdDO0FBQXdCO0FBQW1CO0FBQVEsSUFibEQsSUFDSSxjQUFjLENBQUMsS0FBZTtBQUNwQyxRQUFJLElBQUksS0FBSyxFQUFFO0FBQ2YsWUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN6QixTQUFLO0FBQ0wsS0FBRztBQUNIOzBDQWxCQyxTQUFTLFNBQUMsa0JBQ1QsUUFBUSxFQUFFLHdCQUF3QixrQkFDbEMsSUFBSSxFQUFFLHNCQUNKLE1BQU0sRUFBRSxRQUFRLHNCQUNoQixZQUFZLEVBQUU7ZUFBZ0Isc0JBQzlCLG1CQUFtQixFQUFFLGVBQWUsc0JBQ3BDLHNCQUFzQixFQUFFLGNBQWMsc0JBQ3RDLHNCQUFzQixFQUFFLFVBQVUsc0JBQ2xDLFNBQVMsRUFBRTtZQUE0QixrQkFDeEMsY0FDRjs7Ozs7eURBQ0k7QUFBQztBQUFtQjtBQUVELFlBT3dDLFlBQVksdUJBQXJFLE1BQU0sU0FBQyxVQUFVLENBQUMsTUFBTSxZQUFZLENBQUM7QUFBUyxZQUN1QixRQUFRLHVCQUE3RSxRQUFRLFlBQUksSUFBSSxZQUFJLE1BQU0sU0FBQyxVQUFVLENBQUMsTUFBTSxRQUFRLENBQUM7QUFBUTtBQUFHO0FBSTlELDZCQWJOLEtBQUs7QUFDUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFJO0FBTUM7QUFDK0Q7QUFHeEU7QUFDRTtBQUVnQjtBQUFHO0FBQWlCO0FBUXRDLE1BQWEsY0FBYztBQUMzQjtBQUFRO0FBQThCO0FBQVEsSUFBNUMsWUFBbUIsV0FBNkI7QUFBSSxRQUFqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7QUFBQyxLQUFHO0FBQ3REOzBDQUhDLFNBQVMsU0FBQyxFQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBQzs2SEFDL0M7QUFBQztBQUFtQjtBQUNVLFlBL0RqQyxXQUFXO0FBQ1g7Ozs7NEVBQUU7QUFBQztBQUFJO0FBSU87QUFBRztBQUt5QztBQThENUQsTUFBYSxhQUFhO0FBQzFCO0FBQVE7QUFBOEI7QUFBUSxJQUE1QyxZQUFtQixXQUE2QjtBQUFJLFFBQWpDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtBQUFDLEtBQUc7QUFDdEQ7eUNBSEMsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLDRCQUE0QixFQUFDOzBIQUM5QztBQUFDO0FBQW1CO0FBQ1UsWUF6RWpDLFdBQVc7QUFDWDs7Ozs0RUFBRTtBQUFDO0FBQUk7QUFHVDtBQTRFQSxNQUFhLGVBQWU7QUFDNUI7QUFBUTtBQUE4QjtBQUFRLElBQTVDLFlBQW1CLFdBQTZCO0FBQUksUUFBakMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0FBQUMsS0FBRztBQUN0RDsyQ0FIQyxTQUFTLFNBQUMsRUFBQyxRQUFRLEVBQUUsOEJBQThCLEVBQUM7Z0lBQ2hEO0FBQUM7QUFBbUI7QUFDVSxZQWpGakMsV0FBVztBQUNYOzs7OzRFQUFFO0FBQUM7QUFBSTtBQUkyQjtBQW1GcEMsTUFBYSxRQUFRO0FBQUcsSUFEeEI7QUFBZ0I7QUFBWTtBQUV6QjtBQUNNLFFBRUUsYUFBUSxHQUFHLEtBQUssQ0FBQztBQUM1QjtBQUVLO0FBRUM7QUFBVztBQUVBO0FBQVksUUFBbEIsT0FBRSxHQUFHLGFBQWEsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUN4QyxRQUNFLFdBQU0sR0FBRyxLQUFLLENBQUM7QUFDakIsS0FpQ0M7QUFDRDtBQUVHO0FBQW1CO0FBQVEsSUFaNUIscUJBQXFCO0FBQ3ZCO0FBQ0k7QUFDSTtBQUNJO0FBQ0ksUUFBWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQ3pDLFFBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUMzQyxRQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7QUFDN0MsS0FBRztBQUNIO29DQWhEQyxTQUFTLFNBQUMsRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDOzs7Ozs7Ozs7O3FGQUM3QjtBQUFDO0FBQTRCLHVCQUkvQixLQUFLO0FBQUssaUJBT1YsS0FBSztBQUFLLG9CQVNWLEtBQUs7QUFBSyxtQkFRVixLQUFLO0FBQUssd0JBTVYsZUFBZSxTQUFDLGFBQWEsRUFBRSxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUM7QUFBTyx5QkFDMUQsZUFBZSxTQUFDLGNBQWMsRUFBRSxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUM7QUFBTywwQkFDM0QsZUFBZSxTQUFDLGVBQWUsRUFBRSxFQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUM7QUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQUFFO0FBQUM7QUFBSTtBQUcxRDtBQUFHO0FBQWtGO0FBQ3ZGO0FBK0RULE1BQWEsWUFBWTtBQUFHO0FBQVE7QUFDbEM7QUFBUSxJQXFDUixZQUFZLE1BQTBCO0FBQ3hDO0FBQVk7QUFLUztBQUFXO0FBRTRCO0FBR3pEO0FBQVksUUF4Q0osY0FBUyxHQUFzQixFQUFFLENBQUM7QUFDN0M7QUFFSztBQUlGO0FBQVksUUFLSixrQkFBYSxHQUFHLElBQUksQ0FBQztBQUNoQztBQUVLO0FBRXNDO0FBQVc7QUFDWDtBQUV0QyxRQU9PLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7QUFDbEUsUUFFSSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDNUIsUUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUMvQyxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBQ29CO0FBQW1CO0FBQVEsSUFBaEQsVUFBVSxDQUFDLE9BQWUsSUFBYSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkY7QUFFQztBQUNFO0FBQ0U7QUFFSjtBQUEwQjtBQUFtQjtBQUFRLElBQXBELE1BQU0sQ0FBQyxPQUFlLElBQVUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUM5RjtBQUVDO0FBQ0U7QUFDRTtBQUVKO0FBQW1CO0FBQ2QsSUFESixTQUFTO0FBQUssUUFDWixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtBQUMvQixZQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzdELGdCQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RCxhQUFPO0FBQ1AsU0FBSztBQUFDLGFBQUs7QUFDWCxZQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkUsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUVDO0FBQ0U7QUFDRTtBQUVKO0FBQTBCO0FBQW1CO0FBQVEsSUFBcEQsUUFBUSxDQUFDLE9BQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzNGO0FBRUM7QUFDRTtBQUNhO0FBQ1YsSUFESixXQUFXO0FBQ2IsUUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLEtBQUc7QUFDSDtBQUVDO0FBQ0U7QUFDRTtBQUVKO0FBQTBCO0FBQ1Q7QUFBUSxJQUR4QixNQUFNLENBQUMsT0FBZTtBQUN4QjtBQUF5QixjQUFmLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztBQUM5QyxRQUFJLElBQUksS0FBSyxFQUFFO0FBQ2YsWUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xELFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUFtQjtBQUNwQixJQURKLHFCQUFxQjtBQUN2QjtBQUNJLFFBQUEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQ2xDLFlBQU0sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2RCxTQUFLO0FBQ0w7QUFFRyxRQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRztBQUVHLFFBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQzVELFlBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsWUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUM5QixTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBd0I7QUFBNEI7QUFDL0M7QUFBUSxJQURWLGdCQUFnQixDQUFDLEtBQWUsRUFBRSxTQUFrQjtBQUM5RCxRQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtBQUNoRTtBQUE2QixnQkFBbkIsZ0JBQWdCLEdBQUcsS0FBSztBQUNsQyxZQUNNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNqQixFQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUM7QUFDekcsWUFDTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDN0IsZ0JBQVEsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7QUFDakMsZ0JBQ1EsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQ2hELG9CQUFVLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLGlCQUFTO0FBQ1QsZ0JBQVEsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDaEMsYUFBTztBQUNQLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUEwQjtBQUN2QjtBQUFRLElBRFIsWUFBWSxDQUFDLE9BQWU7QUFDdEMsUUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLO0FBQzdCLFlBQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sRUFBRTtBQUNoQyxnQkFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztBQUM3QixhQUFPO0FBQ1AsU0FBSyxDQUFDLENBQUM7QUFDUCxLQUFHO0FBQ0g7QUFDTztBQUEwQjtBQUFtQjtBQUFRLElBQWxELGNBQWMsQ0FBQyxPQUFlLElBQXFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRTtBQUM5RztBQUNPO0FBQW1CO0FBQ3ZCLElBRE8sZ0JBQWdCO0FBQzFCLFFBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RyxLQUFHO0FBQ0g7d0NBektDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsZUFBZSxrQkFDekIsUUFBUSxFQUFFO09BQWMsa0JBQ3hCLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBQyxrQkFDbkcsUUFBUSxFQUFFOzs7Ozs7OzRtQkFvQlQsY0FDRjs7Ozs7O2lJQUNHO0FBQUM7QUFBbUI7QUFDckIsWUEzTEssa0JBQWtCO0FBQUc7QUFBRztBQUV4QixxQkF5TEwsZUFBZSxTQUFDLFFBQVE7QUFBTyx3QkFRL0IsS0FBSztBQUFLLCtCQU9WLEtBQUssU0FBQyxhQUFhO0FBQU8sNEJBSzFCLEtBQUs7QUFBSyxtQkFRVixLQUFLO0FBQUssMEJBT1YsTUFBTTtBQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQUFFO0FBQUM7QUFBQztBQUFJO0FBQWtDO0FBRzlDO0FDblBUO0FBQWlCLE1BaUJYLHdCQUF3QixHQUMxQixDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDO0FBRzVGLE1BQWEsa0JBQWtCO0FBQy9CO0FBQ0U7QUFDRTtBQUVIO0FBQU87QUFFSjtBQUFtQjtBQUFRLElBQTdCLE9BQU8sT0FBTyxLQUEwQixPQUFPLEVBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFDLENBQUMsRUFBRTtBQUNsRjs4Q0FUQyxRQUFRLFNBQUMsRUFBQyxZQUFZLEVBQUUsd0JBQXdCLEVBQUU7RUFBTyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFDOzs7Ozs7MEJBQ3pHO0FBQUM7QUFBQztBQUFJO0FBRU47QUFBa0U7QUN2QnZFO0FBQUk7QUFHMkM7QUFBRztBQUVFO0FBQzFCO0FBRzFCLE1BQWEsY0FBYztBQUMzQixJQUZBO0FBQWdCLFFBRWQsZ0JBQVcsR0FBRyxJQUFJLENBQUM7QUFDckIsUUFBRSxTQUFJLEdBQUcsU0FBUyxDQUFDO0FBQ25CLEtBQUM7QUFDRDswQ0FMQyxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzhIQUMzQjtBQUFDOzs7O2dEQUl1SDtBQUFDO0FBQUM7QUFBSTtBQUFrQztBQUFrRTtBQ2J2TztBQUFJO0FBS2lCO0FBQUc7QUFLcEI7QUF5QkosTUFBYSxRQUFRO0FBQUc7QUFBUTtBQUVoQztBQUNzQjtBQUEyQjtBQUVqRCxJQWdCRSxZQUFZLE1BQXNCLEVBQVUsU0FBb0IsRUFBVSxRQUFvQjtBQUNoRyxRQUQ4QyxjQUFTLEdBQVQsU0FBUyxDQUFXO0FBQUMsUUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFZO0FBQUM7QUFDeEY7QUFNQTtBQUFZLFFBVFQsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7QUFDN0MsUUFFSSxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFDMUMsUUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDNUIsS0FBRztBQUNIO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUMzQztBQUNPO0FBQTBCO0FBQ3JCO0FBQVEsSUFEbEIsV0FBVyxDQUFDLE9BQXNCO0FBQ3BDO0FBQXlCLGNBQWYsVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDdEMsUUFBSSxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7QUFDL0MsWUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxTQUFTLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQ25HLFlBQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUMvRixTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxRQUFRLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQzVGO29DQW5EQyxTQUFTLFNBQUMsa0JBQ1QsUUFBUSxFQUFFLFdBQVcsa0JBQ3JCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLGtCQUMvQyxhQUFhLEVBQUUsaUJBQWlCO0FBQUMsSUFBSSxrQkFDckMsSUFBSSxFQUFFLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGFBQWEsRUFBQyxrQkFDckYsUUFBUSxFQUFFOzt1R0FNUCxvRUFFSjs7Ozs7Ozs7Ozs7OztrSEFDRztBQUFDO0FBQW1CO0FBRXZCLFlBdkJPLGNBQWM7QUFBSSxZQVJ4QixTQUFTO0FBQ1QsWUFBQSxVQUFVO0FBQ1g7QUFBRztBQUVLLDBCQWlDTixLQUFLO0FBQUssbUJBT1YsS0FBSztBQUFLLG9CQUlWLE1BQU07QUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFDO0FBQUk7QUFFYjtBQUFrRTtBQ3hEMUUsTUFTYSxjQUFjO0FBQzNCO0FBQ0U7QUFDRTtBQUVIO0FBQU87QUFFSjtBQUFtQjtBQUFRLElBQTdCLE9BQU8sT0FBTyxLQUEwQixPQUFPLEVBQUMsUUFBUSxFQUFFLGNBQWMsRUFBQyxDQUFDLEVBQUU7QUFDOUU7MENBVEMsUUFBUSxTQUFDLEVBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7T0FBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUM7Ozs7OzswQkFDMUc7QUFBQztBQUFDO0FBQUk7QUFFRjtBQUFrRTtBQ1gzRSxNQU9hLGNBQWM7QUFDM0I7MENBTkMsU0FBUyxTQUFDLGtCQUNULFFBQVEsRUFBRTtRQUFrQixrQkFDNUIsSUFBSSxFQUNBLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUMsY0FDcEg7Ozs7Ozs7OzswQkFDSTtBQUFDO0FBQUM7QUFBSTtBQUNJO0FBSUk7QUNabkI7QUFBaUIsTUFLWCwyQkFBMkIsR0FBRztBQUNwQyxJQUFFLE9BQU8sRUFBRSxpQkFBaUI7QUFDNUIsSUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzVDLElBQUUsS0FBSyxFQUFFLElBQUk7QUFDYixDQUFDO0FBQ0Q7QUFFRTtBQUN5RDtBQUMxRDtBQUNnRztBQUNuRDtBQWM5QyxNQUFhLFdBQVc7QUFBRztBQUFRO0FBQ2xDO0FBR0k7QUFBUSxJQXdCWCxZQUFvQixNQUFzQixFQUFVLEdBQXNCO0FBQUksUUFBMUQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7QUFBQyxRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO0FBQUM7QUFFdEU7QUFDaUM7QUFBWSxRQXpCekMsYUFBUSxHQUFHLEtBQUssQ0FBQztBQUM1QjtBQUVLO0FBRUE7QUFBWSxRQUFOLGlCQUFZLEdBQUcsSUFBSSxDQUFDO0FBQy9CO0FBRUs7QUFFQTtBQUFZLFFBQU4sbUJBQWMsR0FBRyxLQUFLLENBQUM7QUFDbEMsUUFDRSxhQUFRLEdBQUcsQ0FBQyxDQUFNLFFBQU8sQ0FBQztBQUM1QixRQUFFLGNBQVMsR0FBRyxTQUFRLENBQUM7QUFDdkIsS0FRZ0Y7QUFDaEY7QUFDTztBQUNFO0FBQW1CO0FBQVEsSUFWbEMsSUFBSSxPQUFPLENBQUMsU0FBa0I7QUFDaEMsUUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDcEMsUUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3BCLFlBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3ZCLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUF5QjtBQUFtQjtBQUFRLElBRXpELGFBQWEsQ0FBQyxNQUFNO0FBQ3RCO0FBQXlCLGNBQWYsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYztBQUM1RixRQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwQyxRQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNyQixRQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN0QyxLQUFHO0FBQ0g7QUFDTztBQUFxQjtBQUFtQjtBQUFRLElBQXJELGdCQUFnQixDQUFDLEVBQXVCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRTtBQUN6RTtBQUNPO0FBQXFCO0FBQW1CO0FBQVEsSUFBckQsaUJBQWlCLENBQUMsRUFBYSxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFDakU7QUFDTztBQUE2QjtBQUM3QjtBQUFRLElBRGIsZ0JBQWdCLENBQUMsVUFBbUI7QUFBSSxRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUMvQixRQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUN0QyxLQUFHO0FBQ0g7QUFDTztBQUNFO0FBQW1CO0FBQVEsSUFEbEMsVUFBVSxDQUFDLEtBQUs7QUFDbEIsUUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBQy9DLFFBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN0QztBQUVHLFFBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUM1QixLQUFHO0FBQ0g7dUNBakVDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsNEJBQTRCLGtCQUN0QyxJQUFJLEVBQUUsc0JBQ0osY0FBYyxFQUFFLEtBQUs7cUJBQ3JCLFdBQVcsRUFBRSxTQUFTLHNCQUN0QixZQUFZLEVBQUUsVUFBVSxzQkFDeEIsVUFBVSxFQUFFLHVCQUF1QixzQkFDbkMsU0FBUyxFQUFFLGdCQUFnQixzQkFDM0IsUUFBUSxFQUFFO0NBQWlCLGtCQUM1QixrQkFDRCxTQUFTLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxjQUN6Qzs7O21MQUNJO0FBQUM7QUFBbUI7QUFDdEIsWUE1QkssY0FBYztBQUFJLFlBSGxCLGlCQUFpQjtBQUFHO0FBQUc7QUFBK0IsdUJBb0MzRCxLQUFLO0FBQUssMkJBS1YsS0FBSztBQUFLLDZCQUtWLEtBQUs7QUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQUFFO0FBQUM7QUFBQztBQUFJO0FBRUY7QUFHWTtBQ25EOUI7QUFBaUIsTUFLWCx3QkFBd0IsR0FBRztBQUNqQyxJQUFFLE9BQU8sRUFBRSxpQkFBaUI7QUFDNUIsSUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzlDLElBQUUsS0FBSyxFQUFFLElBQUk7QUFDYixDQUFDO0FBQ0Q7QUFFQSxJQURJQSxRQUFNLEdBQUcsQ0FBQztBQUNkO0FBQ0c7QUFDc0Q7QUFDdkQ7QUFDZ0c7QUFDbkQ7QUFHL0MsTUFBYSxhQUFhO0FBQUcsSUFEN0I7QUFBZ0IsUUFFTixZQUFPLEdBQWtCLElBQUksR0FBRyxFQUFZLENBQUM7QUFDdkQsUUFBVSxXQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3hCO0FBQVk7QUFHUDtBQUFXO0FBR1Q7QUFFMkI7QUFBVztBQUNTO0FBQVksUUFJdkQsU0FBSSxHQUFHLGFBQWFBLFFBQU0sRUFBRSxFQUFFLENBQUM7QUFDMUMsUUFDRSxhQUFRLEdBQUcsQ0FBQyxDQUFNLFFBQU8sQ0FBQztBQUM1QixRQUFFLGNBQVMsR0FBRyxTQUFRLENBQUM7QUFDdkIsS0E0QkM7QUFDRDtBQUdFO0FBQW1CO0FBQVEsSUEvQzNCLElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQzNDO0FBQVE7QUFBNkI7QUFBbUI7QUFBUSxJQUE5RCxJQUFJLFFBQVEsQ0FBQyxVQUFtQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO0FBQzFFO0FBRUM7QUFBd0I7QUFBbUI7QUFBUSxJQVlsRCxhQUFhLENBQUMsS0FBZTtBQUMvQixRQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0IsS0FBRztBQUNIO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFO0FBQ3JEO0FBQ087QUFBd0I7QUFBbUI7QUFFbEQsSUFGRSxRQUFRLENBQUMsS0FBZSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDeEQ7QUFDTztBQUFxQjtBQUFtQjtBQUFRLElBQXJELGdCQUFnQixDQUFDLEVBQXVCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRTtBQUN6RTtBQUNPO0FBQXFCO0FBQW1CO0FBQVEsSUFBckQsaUJBQWlCLENBQUMsRUFBYSxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFDakU7QUFDTztBQUE2QjtBQUM3QjtBQUFRLElBRGIsZ0JBQWdCLENBQUMsVUFBbUI7QUFBSSxRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztBQUNoQyxRQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pDLEtBQUc7QUFDSDtBQUNPO0FBQXdCO0FBQW1CO0FBQVEsSUFBeEQsVUFBVSxDQUFDLEtBQWUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzdEO0FBQ087QUFDRTtBQUNOO0FBQVEsSUFGVCxVQUFVLENBQUMsS0FBSztBQUNsQixRQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLFFBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDOUIsS0FBRztBQUNIO0FBQ087QUFBbUI7QUFBUSxJQUF4QixrQkFBa0IsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDbkc7QUFBUTtBQUFtQjtBQUFRLElBQXpCLHFCQUFxQixLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDOUY7eUNBakRDLFNBQVMsU0FBQyxFQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJO0NBQUUsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBQyw2S0FDeEc7QUFBQztBQUFpQyxtQkFnQnBDLEtBQUs7QUFBSTs7Ozs7O29CQUFFO0FBQUM7QUFBSTtBQUdMO0FBR0U7QUE0Q2hCLE1BQWEsUUFBUTtBQUFHO0FBQVE7QUFDcEI7QUFDSjtBQUNGO0FBRUo7QUFDZ0I7QUFBUSxJQTRDeEIsWUFDWSxNQUFxQixFQUFVLE1BQXNCLEVBQVUsU0FBb0IsRUFDbkYsUUFBc0MsRUFBVSxHQUFzQjtBQUNwRixRQUZjLFdBQU0sR0FBTixNQUFNLENBQWU7QUFBQyxRQUFTLFdBQU0sR0FBTixNQUFNLENBQWdCO0FBQUMsUUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFXO0FBQUMsUUFDcEYsYUFBUSxHQUFSLFFBQVEsQ0FBOEI7QUFBQyxRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO0FBQUMsUUFqRDNFLFdBQU0sR0FBUSxJQUFJLENBQUM7QUFDN0IsUUFpREksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsUUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDMUIsS0FBRztBQUNIO0FBQ087QUFFaUI7QUFBd0I7QUFFaEM7QUFDZixJQTlDQyxJQUNJLEtBQUssQ0FBQyxLQUFVO0FBQ3RCLFFBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDeEI7QUFBeUIsY0FBZixXQUFXLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQ3JELFFBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ2xGLFFBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0FBQ3JDLEtBQUc7QUFDSDtBQUVDO0FBQ0U7QUFFRTtBQUFtQjtBQUFRLElBRDlCLElBQ0ksUUFBUSxDQUFDLFVBQW1CO0FBQ2xDLFFBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLEtBQUssS0FBSyxDQUFDO0FBQzFDLFFBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQzFCLEtBQUc7QUFDSDtBQUNPO0FBQTRCO0FBQ2pCO0FBQ2YsSUFGRCxJQUFJLE9BQU8sQ0FBQyxTQUFrQjtBQUNoQyxRQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQixZQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUN0QyxTQUFLO0FBQ0wsUUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3BCLFlBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUM5QixTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUN6QztBQUNPO0FBQW1CO0FBQVEsSUFBaEMsSUFBSSxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDbkU7QUFDTztBQUFtQjtBQUFRLElBQWhDLElBQUksS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3JDO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxJQUFJLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMxRDtBQUNPO0FBQ0k7QUFBUSxJQU1qQixXQUFXLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNqRDtBQUNPO0FBQW1CO0FBQVEsSUFBaEMsUUFBUSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDakQ7QUFDTztBQUNDO0FBQW1CO0FBQVEsSUFEakMsV0FBVyxDQUFDLEtBQUs7QUFDbkI7QUFDSSxRQUFBLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFDOUIsWUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzlCLFNBQUs7QUFDTCxRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUM7QUFDekMsUUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3ZDLEtBQUc7QUFDSDtBQUNPO0FBQW1CO0FBQVEsSUFBaEMsY0FBYyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM1RDtvQ0FuRkMsU0FBUyxTQUFDLGtCQUNULFFBQVEsRUFBRSx5QkFBeUIsa0JBQ25DLElBQUksRUFBRSxzQkFDSixXQUFXLEVBQUUsU0FBUyxzQkFDdEIsWUFBWSxFQUFFLFVBQVUsc0JBQ3hCLFFBQVEsRUFBRSxVQUFVLHNCQUNwQixVQUFVLEVBQUU7T0FBWSxzQkFDeEIsU0FBUyxFQUFFLGdCQUFnQixzQkFDM0IsUUFBUSxFQUFFLGlCQUFpQixrQkFDNUIsY0FDRjs7OzsyRUFDSTtBQUFDO0FBQW1CO0FBQ1gsWUFrRFEsYUFBYTtBQUFJLFlBdEkvQixjQUFjO0FBQUksWUFIc0QsU0FBUztBQUFJLFlBQXZELFVBQVU7QUFBSSxZQUE1QyxpQkFBaUI7QUFBRztBQUFHO0FBQTRCLG1CQWlHeEQsS0FBSztBQUFLLG9CQUtWLEtBQUssU0FBQyxPQUFPO0FBQ1gsdUJBVUYsS0FBSyxTQUFDLFVBQVU7QUFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFBRTtBQUFDO0FBQUM7QUFBSTtBQUNKO0FBR1I7QUN0SEE7QUFBaUIsTUFVWCxxQkFBcUIsR0FBRyxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQztBQUdwRixNQUFhLGdCQUFnQjtBQUM3QjtBQUNFO0FBQ0U7QUFFSDtBQUFPO0FBRUo7QUFBbUI7QUFBUSxJQUE3QixPQUFPLE9BQU8sS0FBMEIsT0FBTyxFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLEVBQUU7QUFDaEY7NENBVEMsUUFBUSxTQUFDLEVBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFO0dBQU8sRUFBRSxxQkFBcUIsRUFBQzs7Ozs7OzBCQUMxRTtBQUFDO0FBQUM7QUFBSTtBQUVKO0FBQWtFO0FDZnpFO0FBQUk7QUFHb0Q7QUFBRztBQUVQO0FBQ3ZCO0FBRzdCLE1BQWEsaUJBQWlCO0FBQzlCLElBRkE7QUFBZ0IsUUFFZCxhQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLFFBQUUsU0FBSSxHQUFHLElBQUksQ0FBQztBQUNkLFFBQUUsYUFBUSxHQUFHLElBQUksQ0FBQztBQUNsQixRQUFFLGlCQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFFBQUUseUJBQW9CLEdBQUcsSUFBSSxDQUFDO0FBQzlCLFFBQUUsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0FBQ2xDLEtBQUM7QUFDRDs2Q0FUQyxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDO3VJQUMzQjtBQUFDOzs7O2dEQVE0QjtBQUFDO0FBQUM7QUFBSTtBQUFrQztBQUFrRTtBQ2pCNUk7QUFDUSxJQXlCSkEsUUFBTSxHQUFHLENBQUM7QUFDZDtBQUNHO0FBQ3FEO0FBR3hELE1BQWEsUUFBUTtBQUNyQjtBQUNFO0FBQXlCO0FBQVEsSUFLakMsWUFBbUIsTUFBd0I7QUFBSSxRQUE1QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtBQUFDO0FBSTdDO0FBQWlFO0FBRTVEO0FBQTRFO0FBQVksUUFQbkYsT0FBRSxHQUFHLGFBQWFBLFFBQU0sRUFBRSxFQUFFLENBQUM7QUFDeEMsS0FBaUQ7QUFDakQ7b0NBVEMsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFDO2lJQUN6QztBQUFDO0FBQ0w7QUFDNEIsWUFqQjNCLFdBQVc7QUFDWDtBQUFHO0FBQ0ksaUJBbUJOLEtBQUs7QUFBSTs7Ozs7O29CQUFFO0FBQUM7QUFBSTtBQUMyQjtBQUFHO0FBTXJCO0FBbUM1QixNQUFhLFdBQVc7QUFBRztBQUFRO0FBQ2hDO0FBQThCO0FBQ25CO0FBQXNCO0FBQVEsSUF3RDFDLFlBQ0ksTUFBeUIsRUFBK0IsV0FBVyxFQUFVLE9BQWUsRUFDcEYsR0FBc0I7QUFDcEMsUUFGOEQsZ0JBQVcsR0FBWCxXQUFXLENBQUE7QUFBQyxRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVE7QUFBQyxRQUNyRixRQUFHLEdBQUgsR0FBRyxDQUFtQjtBQUFDLFFBeEQzQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztBQUMxQyxRQUFVLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0FBQ3hDLFFBQVUsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7QUFDdkM7QUFFSztBQUVZO0FBQVc7QUFFVDtBQUVsQixRQXlDVyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7QUFDdEQsUUFJSSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDcEMsUUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDNUIsUUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDcEMsUUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7QUFDNUMsUUFBSSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDO0FBQzVELFFBQUksSUFBSSxDQUFDLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztBQUNwRSxLQUFHO0FBQ0g7QUFDTztBQUNOO0FBQVEsSUFEUCxrQkFBa0I7QUFDcEI7QUFDSTtBQUNJLFFBQUosSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDN0MsWUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQ3JDLGdCQUFRLElBQUksQ0FBQyxPQUFPO0FBQ3BCLHFCQUFhLElBQUksQ0FDRCxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFRLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUNwRixTQUFTLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRyxxQkFBYSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEUsZ0JBQ1EsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM1QixhQUFPLENBQUMsQ0FBQztBQUNULFNBQUs7QUFDTCxRQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQ2pHLEtBQUc7QUFDSDtBQUNPO0FBQW1CO0FBQ3BCLElBREoscUJBQXFCO0FBQ3ZCO0FBQXlCLFlBQWpCLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkQsUUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0RyxLQUFHO0FBQ0g7QUFDTztBQUFtQjtBQUFRLElBQWhDLFdBQVcsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDMUM7QUFDTztBQUNDO0FBQW1CO0FBQVEsSUFEakMsV0FBVyxDQUFDLE9BQU87QUFDckIsUUFBSSxJQUFJLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7QUFDdkUsWUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFCLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBQ29CO0FBQW1CO0FBQVEsSUFBaEQsTUFBTSxDQUFDLE9BQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNuSDtBQUVDO0FBQ0U7QUFDYTtBQUFRLElBQXRCLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwRztBQUVDO0FBQ0U7QUFDYTtBQUFRLElBQXRCLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuRztBQUVDO0FBQ0U7QUFDYTtBQUFRLElBQXRCLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDakM7QUFFQztBQUNFO0FBQ2E7QUFBUSxJQUF0QixLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDO0FBQ087QUFBMkI7QUFBNEI7QUFBbUI7QUFDMUUsSUFERyxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLFNBQWlDO0FBQzlFO0FBQXlCLFlBQWpCLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztBQUNwRCxRQUFJLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUM3RCxZQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7QUFDOUYsWUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFCLFlBQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDO0FBQ3ZDLFNBQUs7QUFDTDtBQUVHLFFBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUM1QixLQUFHO0FBQ0g7QUFDTztBQUF1QztBQUFvQztBQUFtQjtBQUFRLElBQW5HLHVCQUF1QixDQUFDLG9CQUE0QixFQUFFLGlCQUF5QjtBQUFJO0FBQzVGLGNBQVMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO0FBQzdFO0FBQXlCLGNBQWYsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO0FBQ3ZFLFFBQ0ksT0FBTyxxQkFBcUIsR0FBRyxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDO0FBQ25ILEtBQUc7QUFDSDtBQUNPO0FBQTBCO0FBQW1CO0FBQVEsSUFBbEQsYUFBYSxDQUFDLE9BQWUsSUFBYyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUU7QUFDOUc7QUFDTztBQUEwQjtBQUFtQjtBQUM5QyxJQURJLGdCQUFnQixDQUFDLE9BQWU7QUFBSSxRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0RSxLQUFHO0FBQ0g7QUFDTztBQUFpQztBQUN2QztBQUFRLElBREMsYUFBYSxDQUFDLGNBQXNCO0FBQUk7QUFDakMsY0FBUCxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDMUM7QUFBeUIsY0FBZixlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztBQUNqRTtBQUF5QixjQUFmLFdBQVcsR0FBRyxlQUFlLEtBQUssUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO0FBQy9ELFFBQ0ksT0FBTyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkYsWUFBeUIsUUFBUSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDMUQsS0FBRztBQUNIO0FBQ087QUFBaUM7QUFDdkM7QUFBUSxJQURDLGFBQWEsQ0FBQyxjQUFzQjtBQUFJO0FBQ2pDLGNBQVAsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQzFDO0FBQXlCLGNBQWYsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7QUFDakU7QUFBeUIsY0FBZixZQUFZLEdBQUcsZUFBZSxLQUFLLENBQUM7QUFDOUMsUUFDSSxPQUFPLFlBQVksSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN4RixZQUEwQixRQUFRLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMzRCxLQUFHO0FBQ0g7dUNBeE1DLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsY0FBYyxrQkFDeEIsUUFBUSxFQUFFLGFBQWEsa0JBQ3ZCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLGtCQUMvQyxJQUFJLEVBQUUsc0JBQ0osT0FBTyxFQUFFO1lBQWdCLHNCQUN6QixpQkFBaUIsRUFBRSxTQUFTLHNCQUM1QixVQUFVLEVBQUUsR0FBRyxzQkFDZixjQUFjLEVBQUUseUJBQXlCO0NBQ3pDLGNBQWMsRUFBRSx5QkFBeUI7VUFDekM7V0FBcUIsRUFBRTtpQkFBb0Isc0JBQzNDLHNCQUFzQixFQUFFO0lBQW9CLGtCQUM3QyxrQkFDRCxRQUFRLEVBQUU7Ozs7OFRBa0JULGNBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxSEFDRztBQUFDO0FBQW1CO0FBQ3BCLFlBNURJLGlCQUFpQjtBQUFJLDRDQXNISyxNQUFNLFNBQUMsV0FBVztBQUFTLFlBaEkzRCxNQUFNO0FBQ04sWUFSQSxpQkFBaUI7QUFDbEI7QUFBRztBQUVELHFCQTJFQSxlQUFlLFNBQUMsUUFBUTtBQUFPLHVCQVcvQixLQUFLO0FBQUssdUJBS1YsS0FBSztBQUFLLG1CQUtWLEtBQUs7QUFBSyx1QkFLVixLQUFLO0FBQUssMkJBT1YsS0FBSztBQUFLLG1DQU9WLEtBQUs7QUFBSyx1Q0FPVixLQUFLO0FBQUssb0JBT1YsTUFBTTtBQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQUFFO0FBQUM7QUFBc0I7QUFHdEMsSUF3SUUseUJBQVksTUFBTSxFQUFBO0FBQ3BCLElBQUUsMEJBQWEsT0FBTyxFQUFBO0FBQ3JCO0FBRUE7QUFBRCxNQUFhLHVCQUF1QixHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztBQUM5RDtBQUFDO0FBQUk7QUFBa0M7QUFBa0U7QUN4UnpHLE1BU2EsaUJBQWlCO0FBQzlCO0FBQ0U7QUFDRTtBQUVIO0FBQU87QUFFSjtBQUFtQjtBQUFRLElBQTdCLE9BQU8sT0FBTyxLQUEwQixPQUFPLEVBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFDLENBQUMsRUFBRTtBQUNqRjs2Q0FUQyxRQUFRLFNBQUMsRUFBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUU7R0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFDOzs7Ozs7MEJBQ3ZHO0FBQUM7QUFBQztBQUFJO0FBRUw7QUFBa0U7QUNYeEU7QUFBSTtBQUc4QjtBQU9sQyxNQUFhLFdBQVc7QUFDeEIsSUFOQTtBQUNHO0FBQVk7QUFFYztBQUFZLFFBTWpCLGNBQVMsR0FBRyxLQUFLLENBQUM7QUFDMUMsS0FBQztBQUNEO3VDQVhDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUU7V0FBZSxrQkFDekIsUUFBUSxFQUFFLGFBQWEsa0JBQ3ZCLElBQUksRUFBRSxFQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFDLGNBQ2pFOzsyRkFDSTtBQUFDO0FBRUYsd0JBRUQsS0FBSyxTQUFDLGFBQWE7QUFBTTs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFDO0FBQUk7QUFFWDtBQUFrRTtBQ2hCM0YsTUFNYSxpQkFBaUI7QUFDOUI7QUFDRTtBQUNFO0FBRUg7QUFBTztBQUVKO0FBQW1CO0FBQVEsSUFBN0IsT0FBTyxPQUFPLEtBQTBCLE9BQU8sRUFBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsQ0FBQyxFQUFFO0FBQ2pGOzZDQVRDLFFBQVEsU0FBQyxFQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO09BQVcsQ0FBQyxFQUFDOzs7Ozs7MEJBQzFEO0FBQUM7QUFBQztBQUFJO0FBRUw7QUFBa0U7QUNQeEU7QUFBSTtBQUdrQztBQUFHO0FBRWU7QUFBdUM7QUFDOUY7QUFFNEI7QUFBRztBQUVBO0FBQ1M7QUFBRztBQUVZO0FBQUc7QUFBaUI7QUFJNUUsTUFBYSxPQUFPO0FBQUc7QUFBUTtBQU8vQjtBQUFPO0FBRVA7QUFBTztBQVFBO0FBQXVCO0FBQW1CO0FBQVEsSUFNdkQsT0FBTyxJQUFJLENBQUMsSUFBbUI7QUFBSSxRQUNqQyxJQUFJLElBQUksWUFBWSxPQUFPLEVBQUU7QUFDakMsWUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixTQUFLO0FBQ0wsUUFBSSxPQUFPLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0RSxLQUFHO0FBQ0g7QUFDTztBQUF1QjtBQUF3QjtBQUNwQztBQUFRLElBRHhCLFlBQVksSUFBWSxFQUFFLEtBQWEsRUFBRSxHQUFXO0FBQ3RELFFBQUksSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUM5QyxRQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakQsUUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzNDLEtBQUc7QUFDSDtBQUVDO0FBQ0U7QUFDa0I7QUFBbUI7QUFDbEMsSUFESixNQUFNLENBQUMsS0FBb0I7QUFBSSxRQUM3QixPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUNyRyxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBQ2tCO0FBQW1CO0FBQ2xDLElBREosTUFBTSxDQUFDLEtBQW9CO0FBQUksUUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNoQixZQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLFNBQUs7QUFDTCxRQUNJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ2xDLFlBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDdEMsZ0JBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUNyRSxhQUFPO0FBQUMsaUJBQUs7QUFDYixnQkFBUSxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUN4QyxhQUFPO0FBQ1AsU0FBSztBQUFDLGFBQUs7QUFDWCxZQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3BDLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBQ2tCO0FBQW1CO0FBQ2pDLElBREwsS0FBSyxDQUFDLEtBQW9CO0FBQUksUUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNoQixZQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLFNBQUs7QUFDTCxRQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ2xDLFlBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDdEMsZ0JBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUNyRSxhQUFPO0FBQUMsaUJBQUs7QUFDYixnQkFBUSxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUN4QyxhQUFPO0FBQ1AsU0FBSztBQUFDLGFBQUs7QUFDWCxZQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3BDLFNBQUs7QUFDTCxLQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQUM7QUFBSTtBQUFrQztBQUFrRTtBQ2xHekc7QUFBSTtBQUFxQjtBQUNyQjtBQUdKLFNBQWdCLFVBQVUsQ0FBQyxNQUFZO0FBQ3ZDLElBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBQ0Q7QUFBSTtBQUFtQjtBQUFlO0FBQXRDLFNBQWdCLFFBQVEsQ0FBQyxJQUFhO0FBQ3RDO0FBQXFCLFVBQWIsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbEU7QUFDRSxJQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7QUFDaEMsUUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxLQUFHO0FBQ0gsSUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBQ0Q7QUFDRztBQUFlO0FBRWxCLFNBQWdCLCtCQUErQjtBQUMvQyxJQUFFLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFDRDtBQUNHO0FBQzhEO0FBQy9EO0FBQ3NGO0FBQ3JCO0FBRTNEO0FBQ1IsTUFBc0IsV0FBVztBQUNqQzt1Q0FGQyxVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFO0NBQVUsRUFBRSwrQkFBK0IsRUFBQywwSEFDeEU7QUFBQzs7OzswQkFPa0I7QUFBQyxNQXVEWixvQkFBcUIsU0FBUSxXQUFXO0FBQ3JEO0FBQVE7QUFBbUI7QUFFMUIsSUFGQyxjQUFjLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRTtBQUNoQztBQUNPO0FBQW1CO0FBQVEsSUFBaEMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDakU7QUFDTztBQUFtQjtBQUFRLElBQWhDLGdCQUFnQixLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUU7QUFDbEM7QUFDTztBQUF1QjtBQUEwQjtBQUN0QztBQUVmO0FBQVEsSUFIVCxPQUFPLENBQUMsSUFBYSxFQUFFLFNBQW9CLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUM1RDtBQUF5QixZQUFqQixNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztBQUMvQixRQUNJLFFBQVEsTUFBTTtBQUNsQixZQUFNLEtBQUssR0FBRztBQUNkLGdCQUFRLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JELFlBQU0sS0FBSyxHQUFHO0FBQ2QsZ0JBQVEsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyRSxnQkFBUSxNQUFNO0FBQ2QsWUFBTSxLQUFLLEdBQUc7QUFDZCxnQkFBUSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNsRCxnQkFBUSxNQUFNO0FBQ2QsWUFBTTtBQUNOLGdCQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLFNBQUs7QUFDTCxRQUNJLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQTBCO0FBQTBCO0FBQW1CO0FBQVEsSUFBM0csT0FBTyxDQUFDLElBQWEsRUFBRSxTQUFvQixHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7QUFDN0c7QUFDTztBQUNQO0FBQW1CO0FBQVEsSUFEekIsVUFBVSxDQUFDLElBQWE7QUFDMUI7QUFBeUIsWUFBakIsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDL0I7QUFBeUIsWUFBakIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUU7QUFDN0I7QUFDSSxRQUFBLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQy9CLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQzFCO0FBQW1CO0FBQVEsSUFEN0IsYUFBYSxDQUFDLElBQWUsRUFBRSxjQUFzQjtBQUN2RDtBQUNJLFFBQUEsSUFBSSxjQUFjLEtBQUssQ0FBQyxFQUFFO0FBQzlCLFlBQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixTQUFLO0FBQ0w7QUFDd0IsY0FBZCxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsSUFBSSxDQUFDO0FBQ3REO0FBQXlCLFlBQWpCLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQ2xDO0FBQ3dCLGNBQWQsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDakMsUUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBYTtBQUM1RDtBQUNWLGNBREMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDakMsUUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQXVCLFFBQzFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsUUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLEtBQUc7QUFDSDtBQUNPO0FBQW1CO0FBQVEsSUFBaEMsUUFBUSxLQUFjLE9BQU8sVUFBVSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ3hEO0FBQ087QUFBdUI7QUFDakI7QUFBUSxJQURuQixPQUFPLENBQUMsSUFBYTtBQUFJLFFBQ3ZCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDMUYsWUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixTQUFLO0FBQ0w7QUFFRyxRQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDekIsWUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixTQUFLO0FBQ0w7QUFDd0IsY0FBZCxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztBQUNqQyxRQUNJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSztBQUNqSCxZQUFRLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3RDLEtBQUc7QUFDSDtnREF0RUMsVUFBVTs7Ozs7MEJBQ1Q7QUFBQztBQUFDO0FBQUk7QUFBa0M7QUFHeEI7QUM5RmxCO0FBQUk7QUFBbUI7QUFDakI7QUFBZTtBQUtyQixTQUFnQixhQUFhLENBQUMsSUFBYSxFQUFFLElBQWE7QUFDMUQsSUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBQ0Q7QUFDRztBQUFtQjtBQUFtQjtBQUFlO0FBQXhELFNBQWdCLGNBQWMsQ0FBQyxJQUFhLEVBQUUsSUFBYTtBQUMzRCxJQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQy9HLENBQUM7QUFDRDtBQUNHO0FBQW1CO0FBQW1CO0FBQWU7QUFBeEQsU0FBZ0IsY0FBYyxDQUFDLElBQWEsRUFBRSxJQUFhO0FBQzNELElBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUNEO0FBQ0c7QUFBc0I7QUFBc0I7QUFBZTtBQUE5RCxTQUFnQixpQkFBaUIsQ0FBQyxPQUFnQixFQUFFLE9BQWdCO0FBQ3BFLElBQUUsSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDckQsUUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsT0FBTyxxQ0FBcUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN4RixLQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0c7QUFBbUI7QUFBc0I7QUFBc0I7QUFBZTtBQUFqRixTQUFnQixnQkFBZ0IsQ0FBQyxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxPQUFnQjtBQUFJLElBQ3BGLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQy9DLFFBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsS0FBRztBQUNILElBQUUsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDOUMsUUFBSSxPQUFPLE9BQU8sQ0FBQztBQUNuQixLQUFHO0FBQ0gsSUFDRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNHO0FBQW1CO0FBQW9CO0FBQWU7QUFBekQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBYSxFQUFFLEtBQTBCO0FBQzFFLFVBQVEsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUMsR0FBRyxLQUFLO0FBQzFEO0FBQ0UsSUFBQSxPQUFPLEVBQ0wsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3BCLFFBQUksUUFBUTtBQUNaLFNBQUssWUFBWSxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7QUFDOUUsU0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQyxTQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2pDLENBQUM7QUFDSjtBQUVBLENBREM7QUFDRDtBQUNHO0FBQXVCO0FBQW1CO0FBQXNCO0FBQXNCO0FBQWU7QUFBeEcsU0FBZ0IsdUJBQXVCLENBQUMsUUFBcUIsRUFBRSxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxPQUFnQjtBQUNoSCxJQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDYixRQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2QsS0FBRztBQUNIO0FBQ29CLFFBQWQsTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM1QyxJQUNFLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksRUFBRTtBQUM3QztBQUF5QixjQUFmLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNwRSxRQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLEtBQUc7QUFDSCxJQUNFLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksRUFBRTtBQUM3QztBQUF5QixjQUFmLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQztBQUNwRSxRQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsS0FBRztBQUNILElBQ0UsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUNEO0FBQ0c7QUFBbUI7QUFBc0I7QUFBc0I7QUFBZTtBQUFqRixTQUFnQixzQkFBc0IsQ0FBQyxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxPQUFnQjtBQUN4RixJQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDYixRQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2QsS0FBRztBQUNIO0FBQ29CLFVBQVosS0FBSyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRTtBQUN6RDtBQUFxQixVQUFiLEdBQUcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUU7QUFDdkQsSUFDRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFDRDtBQUNHO0FBQXVCO0FBQW1CO0FBQXNCO0FBQWU7QUFBbEYsU0FBZ0IsaUJBQWlCLENBQUMsUUFBcUIsRUFBRSxJQUFhLEVBQUUsT0FBZ0I7QUFDeEYsSUFBRSxPQUFPLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUNEO0FBQ0c7QUFBdUI7QUFBbUI7QUFBc0I7QUFBZTtBQUFsRixTQUFnQixpQkFBaUIsQ0FBQyxRQUFxQixFQUFFLElBQWEsRUFBRSxPQUFnQjtBQUN4RjtBQUFxQixVQUFiLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7QUFDOUMsSUFBRSxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSztBQUNyRixRQUFxQixRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBQ0Q7QUFDRztBQUF1QjtBQUNWO0FBQW9CO0FBQW1CO0FBQW9CO0FBQWU7QUFEMUYsU0FBZ0IsV0FBVyxDQUN2QixRQUFxQixFQUFFLElBQWEsRUFBRSxLQUEwQixFQUFFLElBQXVCLEVBQ3pGLEtBQWM7QUFBSSxVQUNkLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxHQUFHLEtBQUs7QUFDdkM7QUFDRTtBQUFxQixVQUFmLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3ZEO0FBRUM7QUFBcUIsVUFBZCxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlEO0FBQXlCLGNBQWYsU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEQsUUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFFBQ0ksSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNoQjtBQUE2QixrQkFBakIsV0FBVyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdGO0FBQ00sWUFBQSxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUM5QixnQkFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsYUFBTztBQUNQLFNBQUs7QUFDTCxRQUNJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLEtBQUcsQ0FBQztBQUNKO0FBRUMsSUFBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDbEMsUUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDNUIsWUFBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLHVCQUFJLEVBQUUsRUFBa0IsQ0FBQyxDQUFDO0FBQzlHLFNBQUs7QUFDTCxLQUFHLENBQUMsQ0FBQztBQUNMLElBQ0UsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUNEO0FBQ0c7QUFBdUI7QUFDVDtBQUFvQjtBQUFtQjtBQUFxQjtBQUFlO0FBRDVGLFNBQWdCLFVBQVUsQ0FDdEIsUUFBcUIsRUFBRSxJQUFhLEVBQUUsS0FBMEIsRUFBRSxJQUF1QixFQUN6RiwyQkFBd0IsRUFBRSxFQUFrQjtBQUFJLFVBQzVDLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUMsR0FBRyxLQUFLO0FBQzlGO0FBQXFCLFVBQWIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUU7QUFDM0MsSUFDRSxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUN6QixJQUFFLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzVCLElBQUUsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3pCLElBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUNsQyxJQUFFLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDeEMsSUFDRSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUMxRDtBQUVDLElBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO0FBQ2pFO0FBQXlCLFlBQWpCLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUN0QyxRQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7QUFDckIsWUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUM7QUFDOUUsU0FBSztBQUNMO0FBQXlCLGNBQWYsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJO0FBQ2hDO0FBRUcsUUFBQyxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQzlELFlBQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQ3RCLGdCQUFRLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RCxhQUFPO0FBQ1A7QUFDNEIsa0JBQWhCLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNsRTtBQUE2QixrQkFBakIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQ2hEO0FBQzRCLGtCQUFoQixTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7QUFDckQ7QUFFSztBQUE2QixnQkFBeEIsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDcEcsWUFBTSxJQUFJLENBQUMsUUFBUSxJQUFJLFlBQVksRUFBRTtBQUNyQyxnQkFBUSxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUNsRixhQUFPO0FBQ1A7QUFFSztBQUE2QixnQkFBeEIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO0FBQy9DO0FBRUs7QUFDQyxnQkFESSxlQUFlLEdBQ2YsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBQyxDQUFDLEdBQUcsU0FBUztBQUN6RztBQUVLLFlBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDdEUsZ0JBQVEsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDbEMsYUFBTztBQUNQO0FBRUssWUFBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDN0UsZ0JBQVEsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7QUFDakMsYUFBTztBQUNQO0FBQzRCLGdCQUFsQixTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMvQixZQUFNLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDdEIsZ0JBQVEsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQUcsRUFBRSxFQUFnQixDQUFDO0FBQ25ELGFBQU87QUFDUCxZQUFNLFNBQVMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQy9CLFlBQU0sU0FBUyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFO0FBQ2pFLGdCQUFRLFNBQVMsRUFBRSxPQUFPO0FBQzFCLGdCQUFRLElBQUksRUFBRSxPQUFPO0FBQ3JCLGdCQUFRLElBQUksRUFBRSxlQUFlO0FBQzdCLGdCQUFRLFlBQVksRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVE7QUFDNUMsZ0JBQVEsT0FBTyxFQUFFLEtBQUs7QUFDdEIsZ0JBQVEsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLO0FBQzlCLGFBQU8sQ0FBQyxDQUFDO0FBQ1QsWUFBTSxTQUFTLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFlBQU0sU0FBUyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDdEMsWUFBTSxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztBQUMvQixZQUNNLElBQUksR0FBRyxRQUFRLENBQUM7QUFDdEIsU0FBSztBQUNMLFFBQ0ksVUFBVSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUMxRjtBQUVHLFFBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxXQUFXLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxNQUFNO0FBQzdGLFlBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzFELEtBQUc7QUFDSCxJQUNFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNEO0FBQ0c7QUFBdUI7QUFBbUI7QUFBNkI7QUFBZTtBQUF6RixTQUFnQixnQkFBZ0IsQ0FBQyxRQUFxQixFQUFFLElBQWEsRUFBRSxjQUFzQjtBQUFJO0FBQ3JGLFVBQUosV0FBVyxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUU7QUFDL0M7QUFBcUIsVUFBYixjQUFjLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM5RDtBQUFxQixVQUFiLFNBQVMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLFdBQVc7QUFDckUsSUFBRSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLEdBQUcsY0FBYyxJQUFJLFdBQVcsQ0FBQyxDQUFDO0FBQ3pHLENBQUM7QUFDRDtBQUFDO0FBQUk7QUFBa0M7QUFBa0U7QUN2TnpHO0FBQUk7QUFBcUI7QUFBZTtBQUl4QyxTQUFnQiwwQkFBMEIsQ0FBQyxNQUFNO0FBQ2pELElBQUUsT0FBTyxJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFDRDtBQUNHO0FBQzBEO0FBQzNEO0FBQ2tHO0FBQy9CO0FBQ25FO0FBQ2dIO0FBQ2hDO0FBQ2hGO0FBQytEO0FBQ3lDO0FBQzVFO0FBRXRCO0FBQ1IsTUFBc0IsaUJBQWlCO0FBQ3ZDO0FBQ0U7QUFDRTtBQUNFO0FBQXFCO0FBQXVCO0FBQW1CO0FBQ2xFLElBNkJELGNBQWMsQ0FBQyxJQUFtQixJQUFZLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRTtBQUN2RTtBQUVDO0FBQ0U7QUFDRTtBQUVIO0FBQTZCO0FBQW1CO0FBQVEsSUFBeEQsZUFBZSxDQUFDLFVBQWtCLElBQVksT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUU7QUFDekU7QUFFQztBQUNFO0FBQ0U7QUFFSDtBQUF1QjtBQUFtQjtBQUFRLElBQWxELGVBQWUsQ0FBQyxJQUFZLElBQVksT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDN0Q7NkNBbERDLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO2lCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFDOzs7Ozt5Q0FDdEY7QUFBQzs7OzswQkFNYTtBQUFDLE1BOENQLHdCQUF5QixTQUFRLGlCQUFpQjtBQUMvRDtBQUFRO0FBQTBCO0FBQ2pDLElBR0MsWUFBdUMsT0FBZTtBQUN4RCxRQUFJLEtBQUssRUFBRSxDQUFDO0FBQ1osUUFGeUMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtBQUFDO0FBR2pELGNBQUUsd0JBQXdCLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0FBQzdHLFFBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLHdCQUF3QixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xILFFBQ0ksSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RyxRQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakcsS0FBRztBQUNIO0FBQ087QUFBMEI7QUFBbUI7QUFBUSxJQUExRCxtQkFBbUIsQ0FBQyxPQUFlLElBQVksT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzNGO0FBQ087QUFBd0I7QUFBbUI7QUFBUSxJQUF4RCxpQkFBaUIsQ0FBQyxLQUFhLElBQVksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ25GO0FBQ087QUFBd0I7QUFBbUI7QUFBUSxJQUF4RCxnQkFBZ0IsQ0FBQyxLQUFhLElBQVksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2pGO0FBQ087QUFBdUI7QUFDOUI7QUFBUSxJQUROLGVBQWUsQ0FBQyxJQUFtQjtBQUFJO0FBQ3hCLGNBQVAsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNoRSxRQUFJLE9BQU8sVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELEtBQUc7QUFDSDtvREExQkMsVUFBVTt3SUFDVDtBQUFDO0FBQW1CO0FBQ2hCLHlDQUlTLE1BQU0sU0FBQyxTQUFTO0FBQVE7Ozs7OztrQ0FBRTtBQUFDO0FBQUM7QUFBSTtBQUd4QztBQUFrRTtBQ2xGekUsTUF3QmEsb0JBQW9CO0FBQ2pDO0FBQVE7QUFBNEI7QUFFakM7QUFBUSxJQW9GVCxZQUFvQixTQUFzQixFQUFVLEtBQXdCO0FBQUksUUFBNUQsY0FBUyxHQUFULFNBQVMsQ0FBYTtBQUFDLFFBQVMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7QUFBQyxRQXRGckUsWUFBTyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBQ3ZELFFBQ1UsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7QUFDNUMsUUFDVSxXQUFNLEdBQXdCO0FBQ3hDLFlBQUksUUFBUSxFQUFFLEtBQUs7QUFDbkIsWUFBSSxhQUFhLEVBQUUsQ0FBQztBQUNwQixZQUFJLGNBQWMsRUFBRSxDQUFDO0FBQ3JCLFlBQUksWUFBWSxFQUFFLEtBQUs7QUFDdkIsWUFBSSxNQUFNLEVBQUUsRUFBRTtBQUNkLFlBQUksVUFBVSxFQUFFLFFBQVE7QUFDeEIsWUFBSSxXQUFXLEVBQUUsU0FBUztBQUMxQixZQUFJLFlBQVksRUFBRSxLQUFLO0FBQ3ZCLFlBQUksWUFBWSxFQUFFLEtBQUs7QUFDdkIsWUFBSSxXQUFXLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUM7QUFDeEMsWUFBSSxZQUFZLEVBQUUsSUFBSTtBQUN0QixTQUFHLENBQUM7QUFDSixLQXFFa0Y7QUFDbEY7QUFDTztBQUNOO0FBQVEsSUF2RVAsSUFBSSxNQUFNLEtBQXNDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkg7QUFDTztBQUFtQjtBQUFRLElBQWhDLElBQUksT0FBTyxLQUEwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNsRztBQUNPO0FBQWtDO0FBQW1CO0FBQ3JELElBREwsSUFBSSxlQUFlLENBQUMsZUFBbUM7QUFDekQsUUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxLQUFLLGVBQWUsRUFBRTtBQUN6RCxZQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBQyxlQUFlLEVBQUMsQ0FBQyxDQUFDO0FBQ3pDLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUEyQjtBQUNqQjtBQUFRLElBRHZCLElBQUksUUFBUSxDQUFDLFFBQWlCO0FBQ2hDLFFBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDM0MsWUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBZ0M7QUFDMUI7QUFBUSxJQURuQixJQUFJLGFBQWEsQ0FBQyxhQUFxQjtBQUN6QyxRQUFJLGFBQWEsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0MsUUFBSSxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxhQUFhLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxLQUFLLGFBQWEsRUFBRTtBQUN0RyxZQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBQyxhQUFhLEVBQUMsQ0FBQyxDQUFDO0FBQ3ZDLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUFpQztBQUM1QjtBQUFRLElBRGxCLElBQUksY0FBYyxDQUFDLGNBQXNCO0FBQzNDLFFBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUMvQyxRQUFJLElBQUksU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssY0FBYyxFQUFFO0FBQzNHLFlBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLGNBQWMsRUFBQyxDQUFDLENBQUM7QUFDeEMsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQStCO0FBQ3pCO0FBQVEsSUFEbkIsSUFBSSxZQUFZLENBQUMsWUFBcUI7QUFDeEMsUUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxLQUFLLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO0FBQzVFLFlBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLFlBQVksRUFBQyxDQUFDLENBQUM7QUFDdEMsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQ1o7QUFBUSxJQUR4QixJQUFJLE9BQU8sQ0FBQyxJQUFhO0FBQzNCO0FBQXlCLGNBQWYsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoRCxRQUFJLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQ3JELFlBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7QUFDakMsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQStCO0FBQ2pDO0FBQVEsSUFEWCxJQUFJLFlBQVksQ0FBQyxZQUE2QjtBQUNoRCxRQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssWUFBWSxFQUFFO0FBQ25ELFlBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLFlBQVksRUFBQyxDQUFDLENBQUM7QUFDdEMsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQ1o7QUFBUSxJQUR4QixJQUFJLE9BQU8sQ0FBQyxJQUFhO0FBQzNCO0FBQXlCLGNBQWYsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoRCxRQUFJLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQ3JELFlBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7QUFDakMsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQTZCO0FBQW1CO0FBQ3JELElBREEsSUFBSSxVQUFVLENBQUMsVUFBd0M7QUFDekQsUUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtBQUMvQyxZQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBQyxVQUFVLEVBQUMsQ0FBQyxDQUFDO0FBQ3BDLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUE4QjtBQUFtQjtBQUFRLElBQTlELElBQUksV0FBVyxDQUFDLFdBQStDO0FBQ2pFLFFBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7QUFDakQsWUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztBQUNyQyxTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBdUI7QUFBbUI7QUFBUSxJQUV2RCxLQUFLLENBQUMsSUFBYTtBQUNyQixRQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDN0csWUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7QUFDekMsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQTBCO0FBQ3pCO0FBQW1CO0FBQVEsSUFEakMsU0FBUyxDQUFDLE1BQWtCLEVBQUUsTUFBZTtBQUMvQyxRQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUUsS0FBRztBQUNIO0FBQ087QUFDQztBQUFRLElBRGQsV0FBVztBQUNiLFFBQUksSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDOUQsWUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7QUFDNUQsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQ0Q7QUFBbUI7QUFBUSxJQUQvQixJQUFJLENBQUMsSUFBYTtBQUNwQjtBQUF5QixjQUFmLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3ZFLFFBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDMUcsWUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztBQUNuQyxTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBdUI7QUFBMkI7QUFDNUM7QUFBUSxJQURuQixNQUFNLENBQUMsSUFBYSxFQUFFLFVBQWlDLEVBQUU7QUFDM0Q7QUFBeUIsY0FBZixZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3JELFFBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO0FBQy9CLFlBQU0sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQUU7QUFDakUsZ0JBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLFlBQVksRUFBQyxDQUFDLENBQUM7QUFDeEMsYUFBTztBQUNQLFlBQ00sSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDNUUsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekMsYUFBTztBQUNQLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUF1QjtBQUFnQztBQUNuRDtBQUFRLElBRGpCLFdBQVcsQ0FBQyxJQUFtQixFQUFFLFlBQXNCO0FBQUk7QUFDN0MsY0FBTixPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDdEMsUUFBSSxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7QUFDcEMsWUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMvQyxTQUFLO0FBQ0wsUUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxZQUFZLENBQUM7QUFDcEUsS0FBRztBQUNIO0FBQ087QUFBd0I7QUFBbUI7QUFBUSxJQUFoRCxVQUFVLENBQUMsS0FBbUM7QUFDeEQ7QUFBeUIsY0FBZixRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7QUFDN0MsUUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLFFBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDM0IsUUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkMsS0FBRztBQUNIO0FBQ087QUFBd0I7QUFBbUI7QUFDL0MsSUFETyxjQUFjLENBQUMsS0FBMEI7QUFDbkQsY0FBVSxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQyxHQUFHLEtBQUs7QUFDdkcsUUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLO0FBQzlCLFlBQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSTtBQUM5QixnQkFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO0FBQzdCO0FBRVMsb0JBQUMsSUFBSSxTQUFTLEVBQUU7QUFDekIsd0JBQVksR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDO0FBQzdFLHFCQUFXO0FBQ1g7QUFFUyxvQkFBQyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUc7QUFFUyxvQkFBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFDakMsd0JBQVksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3hDLHFCQUFXO0FBQ1g7QUFFUyxvQkFBQyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7QUFDMUMsd0JBQVksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsWUFBWSxLQUFLLElBQUksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRixxQkFBVztBQUNYO0FBRVMsb0JBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQy9DLHdCQUFZLEdBQUcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxLQUFLLFFBQVEsSUFBSSxXQUFXLEtBQUssV0FBVztBQUNoRiw2QkFBaUIsYUFBYSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pFLGdDQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDdEUscUJBQVc7QUFDWCxpQkFBUyxDQUFDLENBQUM7QUFDWCxhQUFPLENBQUMsQ0FBQztBQUNULFNBQUssQ0FBQyxDQUFDO0FBQ1AsS0FBRztBQUNIO0FBQ087QUFBd0I7QUFBbUI7QUFBUSxJQUFoRCxZQUFZLENBQUMsS0FBbUM7QUFBSTtBQUN4RDtBQUNFLGNBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO0FBQ3ZEO0FBQ3dCLFlBQWhCLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUztBQUNuQztBQUVHLFFBQUMsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLEVBQUU7QUFDbEQsWUFBTSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0RCxZQUFNLEtBQUssQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RixZQUFNLEtBQUssQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RixZQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0FBQ2xDLFNBQUs7QUFDTDtBQUVHLFFBQUMsSUFBSSxVQUFVLElBQUksS0FBSyxFQUFFO0FBQzdCLFlBQU0sS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDakMsU0FBSztBQUNMO0FBRUcsUUFBQyxJQUFJLGNBQWMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNwRSxZQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO0FBQ3JDLFNBQUs7QUFDTDtBQUVHLFFBQUMsSUFBSSxjQUFjLElBQUksS0FBSyxFQUFFO0FBQ2pDLFlBQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsU0FBSztBQUNMO0FBRUcsUUFBQyxJQUFJLFdBQVcsSUFBSSxLQUFLLEVBQUU7QUFDOUIsWUFBTSxLQUFLLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEYsWUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUNsQztBQUVLLFlBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0FBQy9FLGdCQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ2xELGdCQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLGFBQU87QUFDUCxTQUFLO0FBQ0w7QUFFRyxRQUFDLElBQUksV0FBVyxJQUFJLEtBQUssRUFBRTtBQUM5QixZQUFNLEtBQUssQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RixZQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0FBQ2xDLFNBQUs7QUFDTDtBQUVHLFFBQUMsSUFBSSxTQUFTLEVBQUU7QUFDbkI7QUFBNkIsa0JBQWpCLFlBQVksR0FBRyxpQkFBaUIsSUFBSSxLQUFLLElBQUksZ0JBQWdCLElBQUksS0FBSyxJQUFJLGNBQWMsSUFBSSxLQUFLO0FBQzdHLGdCQUFVLFNBQVMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksS0FBSyxJQUFJLGFBQWEsSUFBSSxLQUFLO0FBQ25HO0FBQzRCLGtCQUFoQixNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztBQUM1RjtBQUVLLFlBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDNUIsWUFBTSxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzVFLFlBQU0sS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBQzFGO0FBRUssWUFBQyxJQUFJLGNBQWMsSUFBSSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFO0FBQ25GLGdCQUFRLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ2xDLGFBQU87QUFDUDtBQUVLLFlBQUMsSUFBSSxXQUFXLElBQUksS0FBSyxFQUFFO0FBQ2hDLGdCQUFRLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUNwRixvQkFBWSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbkQsb0JBQVUsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDdEMsaUJBQVM7QUFDVCxhQUFPO0FBQ1A7QUFFSztBQUE2QixrQkFBdEIsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSTtBQUN2RztBQUE2QixrQkFBakIsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztBQUMxRyxZQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUU7QUFDekM7QUFDUSxnQkFBQSxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFdBQVcsRUFBRTtBQUM3RyxvQkFBVSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzFHLGlCQUFTO0FBQ1Q7QUFFTyxnQkFBQyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFdBQVcsRUFBRTtBQUM5RyxvQkFBVSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU07QUFDbEMsd0JBQWMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JHLGlCQUFTO0FBQ1QsYUFBTztBQUFDLGlCQUFLO0FBQ2IsZ0JBQVEsS0FBSyxDQUFDLFdBQVcsR0FBRyxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ3BELGFBQU87QUFDUDtBQUVLLFlBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUTtBQUN6RSxpQkFBVyxZQUFZLElBQUksV0FBVyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDNUcsZ0JBQVEsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakgsZ0JBQVEsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEgsYUFBTztBQUNQLFNBQUs7QUFDTCxRQUNJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEtBQUc7QUFDSDtnREFwUkMsVUFBVTs0SEFDVDtBQUFDO0FBQW1CO0FBQ1UsWUF6QnhCLFdBQVc7QUFBSSxZQXFCZixpQkFBaUI7QUFBRzs7O2tHQUFFO0FBQUM7QUFBQztBQUFJO0FBR2xDO0FBQzhCO0FBQUk7QUFFbkM7QUFBYyxJQzFCYixNQUFPO0FBQ1QsSUFBRSxTQUFVO0FBQ1osSUFBRSxVQUFXO0FBQ2IsSUFBRSxTQUFVO0FBQ1osSUFBRSxVQUFXO0FBQ2IsSUFBRSxZQUFhO0FBQ2YsSUFBRSxPQUFRO0FBQ1YsSUFBRSxRQUFTO0FBQ1gsSUFBRSxhQUFjO0FBQ2hCLElBQUUsV0FBWTtBQUNkLElBQUUsY0FBZTtBQUNqQixJQUFFLGFBQWM7QUFDZjtBQUNDO0FBQXNCO0FBQTBCO0FBQTRCO0FBQTBCO0FBQTRCO0FBQWdDO0FBQXNCO0FBQXdCO0FBQWtDO0FBQThCO0FBQW9DO0FBQWtDO0FBQUM7QUFBSTtBQUFrQztBQUFrRTtBQ2RqYyxNQU9hLDBCQUEwQjtBQUN2QztBQUFRO0FBQ0Y7QUFDRDtBQUFRLElBR1gsWUFBb0IsUUFBOEIsRUFBVSxTQUFzQjtBQUNwRixRQURzQixhQUFRLEdBQVIsUUFBUSxDQUFzQjtBQUFDLFFBQVMsY0FBUyxHQUFULFNBQVMsQ0FBYTtBQUFDLFFBQ2pGLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUs7QUFDbkMsWUFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7QUFDcEMsWUFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7QUFDcEMsWUFBTSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDNUMsWUFBTSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7QUFDMUMsU0FBSyxDQUFDLENBQUM7QUFDUCxLQUFHO0FBQ0g7QUFDTztBQUF3QjtBQUNsQjtBQUFRLElBRG5CLFVBQVUsQ0FBQyxLQUFvQjtBQUNqQztBQUNJLFFBQUEsUUFBUSxLQUFLLENBQUMsS0FBSztBQUN2QixZQUFNLEtBQUssR0FBRyxDQUFDLE1BQU07QUFDckIsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsZ0JBQVEsTUFBTTtBQUNkLFlBQU0sS0FBSyxHQUFHLENBQUMsUUFBUTtBQUN2QixnQkFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0QsZ0JBQVEsTUFBTTtBQUNkLFlBQU0sS0FBSyxHQUFHLENBQUMsR0FBRztBQUNsQixnQkFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2pGLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssR0FBRyxDQUFDLElBQUk7QUFDbkIsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNsRixnQkFBUSxNQUFNO0FBQ2QsWUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTO0FBQ3hCLGdCQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssR0FBRyxDQUFDLE9BQU87QUFDdEIsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssR0FBRyxDQUFDLFVBQVU7QUFDekIsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssR0FBRyxDQUFDLFNBQVM7QUFDeEIsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUN0RSxnQkFBUSxNQUFNO0FBQ2QsWUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDckIsWUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLO0FBQ3BCLGdCQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDcEMsZ0JBQVEsTUFBTTtBQUNkLFlBQU07QUFDTixnQkFBUSxPQUFPO0FBQ2YsU0FBSztBQUNMO0FBRUcsUUFBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDM0IsUUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDNUIsS0FBRztBQUNIO3NEQXZEQyxVQUFVOzhJQUNUO0FBQUM7QUFBbUI7QUFFbkIsWUFSSyxvQkFBb0I7QUFBSSxZQUN4QixXQUFXO0FBQUc7OztxR0FBRTtBQUFDO0FBQUM7QUFBSTtBQUNWO0FBSWxCO0FBQUk7QUFBc0I7QUFDaEIsSUNpRFYsT0FBSTtBQUNOLElBQUUsT0FBSTtBQUNMO0FBQ0M7QUFBZ0Q7QUFBZ0Q7QUFBQztBQUFJO0FBQWtDO0FBQWtFO0FDNUQzTTtBQUFJO0FBQ29EO0FBQUc7QUFJWjtBQUUxQjtBQUlyQixNQUFhLG1CQUFtQjtBQUNoQyxJQUZBO0FBQWdCLFFBS2Qsa0JBQWEsR0FBRyxDQUFDLENBQUM7QUFDcEIsUUFBRSxtQkFBYyxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUdFLGVBQVUsR0FBaUMsUUFBUSxDQUFDO0FBQ3RELFFBQUUsZ0JBQVcsR0FBdUMsU0FBUyxDQUFDO0FBQzlELFFBQUUsaUJBQVksR0FBRyxJQUFJLENBQUM7QUFDdEIsUUFBRSxvQkFBZSxHQUFHLEtBQUssQ0FBQztBQUMxQixLQUNDO0FBQ0Q7K0NBaEJDLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7NklBQzNCO0FBQUM7Ozs7Z0RBSUs7QUFBQztBQUFDO0FBQUk7QUFFVDtBQUFrRTtBQ2pCMUU7QUFBSTtBQUFlO0FBSW5CLFNBQWdCLG1DQUFtQztBQUNuRCxJQUFFLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFDRDtBQUNHO0FBQ3NHO0FBQ25DO0FBQ3BFO0FBQ3VGO0FBQ1g7QUFDNUU7QUFDc0Y7QUFDdEY7QUFDNkY7QUFDTDtBQUVsRjtBQUFlO0FBQ3ZCLE1BQXNCLGNBQWM7QUFBRzswQ0FEdEMsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7Z0NBQW1DLEVBQUMsc0lBQzVFO0FBQUM7Ozs7MEJBSXdCO0FBQUMsTUFTbEIsb0JBQXFCLFNBQVEsY0FBNkI7QUFDdkU7QUFDRTtBQUNFO0FBQ2lCO0FBQW1CO0FBQVEsSUFBOUMsU0FBUyxDQUFDLElBQW1CO0FBQUksUUFDL0IsT0FBTyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDeEYsWUFBUSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFDO0FBQzNELFlBQVEsSUFBSSxDQUFDO0FBQ2IsS0FBRztBQUNIO0FBRUM7QUFDRTtBQUNpQjtBQUFtQjtBQUFRLElBQTdDLE9BQU8sQ0FBQyxJQUFtQjtBQUFJLFFBQzdCLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3hGLFlBQVEsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBQztBQUMzRCxZQUFRLElBQUksQ0FBQztBQUNiLEtBQUc7QUFDSDtnREFuQkMsVUFBVTs7Ozs7MEJBQ1Q7QUFBQztBQUFDO0FBQUk7QUFBa0M7QUFFZDtBQ3BDNUI7QUFBaUIsTUFtQ1gsNkJBQTZCLEdBQUc7QUFDdEMsSUFBRSxPQUFPLEVBQUUsaUJBQWlCO0FBQzVCLElBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxJQUFFLEtBQUssRUFBRSxJQUFJO0FBQ2IsQ0FBQztBQUNEO0FBQ0c7QUFDNkU7QUFBRztBQUkvRTtBQTJFSixNQUFhLGFBQWE7QUFBRztBQUFRO0FBQ2hCO0FBQTJCO0FBQ2pDO0FBRVI7QUFBeUI7QUFBc0I7QUFDckM7QUFDQTtBQUEwQjtBQUV0QyxJQXNISCxZQUNZLGNBQTBDLEVBQVMsUUFBOEIsRUFDakYsU0FBc0IsRUFBUyxJQUF1QixFQUFFLE1BQTJCLEVBQ25GLEdBQXNCLEVBQVUsV0FBb0MsRUFDcEUsZUFBb0MsRUFBVSxPQUFlO0FBQzNFLFFBSmMsbUJBQWMsR0FBZCxjQUFjLENBQTRCO0FBQUMsUUFBUSxhQUFRLEdBQVIsUUFBUSxDQUFzQjtBQUFDLFFBQ2xGLGNBQVMsR0FBVCxTQUFTLENBQWE7QUFBQyxRQUFRLFNBQUksR0FBSixJQUFJLENBQW1CO0FBQUMsUUFDdkQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7QUFBQyxRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtBQUFDLFFBQ3JFLG9CQUFlLEdBQWYsZUFBZSxDQUFxQjtBQUFDLFFBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtBQUFDLFFBNUhsRSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7QUFDNUM7QUFFSztBQUVtQztBQUFXO0FBRWlDO0FBQVksUUFxR3BGLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztBQUN0RTtBQUVLO0FBRUM7QUFBVztBQUVBO0FBQVksUUFBakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7QUFDakQsUUFDRSxhQUFRLEdBQUcsQ0FBQyxDQUFNLFFBQU8sQ0FBQztBQUM1QixRQUFFLGNBQVMsR0FBRyxTQUFRLENBQUM7QUFDdkIsUUFNSSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFNBQVM7QUFDckgsWUFBSyxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDO0FBQzVGLGFBQVMsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkQsUUFDSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RyxRQUNJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSztBQUNyRTtBQUE2QixrQkFBakIsT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTO0FBQ3JDO0FBQTZCLGtCQUFqQixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJO0FBQzlEO0FBQzRCLGdCQUFsQixtQkFBbUIsR0FBRyxLQUFLO0FBQ3JDO0FBQ00sWUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNwQyxnQkFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztBQUMzQixvQkFBVSxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUMsR0FBRyxJQUFJO0FBQzlFLG9CQUFVLElBQUksRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFDO0FBQzFELG9CQUFVLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixHQUFHLElBQUk7QUFDMUQsaUJBQVMsQ0FBQyxDQUFDO0FBQ1g7QUFFTyxnQkFBQyxJQUFJLG1CQUFtQixJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDckQsb0JBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEMsb0JBQVUsT0FBTztBQUNqQixpQkFBUztBQUNULGFBQU87QUFDUDtBQUM0QixrQkFBaEIsZUFBZSxHQUFHLEtBQUssQ0FBQyxZQUFZO0FBQ2hEO0FBQTZCLGtCQUFqQixjQUFjLEdBQUcsS0FBSyxDQUFDLFNBQVM7QUFDNUM7QUFBNkIsa0JBQWpCLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUk7QUFDckUsWUFDTSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN6QjtBQUVLLFlBQUMsSUFBSSxhQUFhLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtBQUM5RCxnQkFBUSxJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUM3QyxnQkFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekIsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLGFBQU87QUFDUDtBQUVLLFlBQUMsSUFBSSxhQUFhLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxJQUFJLGNBQWMsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO0FBQ2pHLGdCQUFRLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQixhQUFPO0FBQ1AsWUFDTSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDekIsU0FBSyxDQUFDLENBQUM7QUFDUCxLQUFHO0FBQ0g7QUFDTztBQUNPO0FBQVEsSUFEcEIsS0FBSztBQUNQLFFBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNqRTtBQUNBLGtCQURZLGNBQWMsR0FDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFpQiw4QkFBOEIsQ0FBQztBQUN0RyxZQUFNLElBQUksY0FBYyxFQUFFO0FBQzFCLGdCQUFRLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixhQUFPO0FBQ1AsU0FBSyxDQUFDLENBQUM7QUFDUCxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBQ0U7QUFDRTtBQUVIO0FBQU87QUFFSjtBQUF3QjtBQUFtQjtBQUFRLElBQXhELFVBQVUsQ0FBQyxJQUFrRDtBQUMvRCxRQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLHNCQUFHLElBQUksdUJBQXdCLElBQUksSUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6RyxLQUFHO0FBQ0g7QUFDTztBQUNIO0FBQVEsSUFEVixlQUFlO0FBQ2pCLFFBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNuQztBQUE2QixrQkFBakIsU0FBUyxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUM7QUFDdEY7QUFBNkIsa0JBQWpCLFVBQVUsR0FBRyxTQUFTLENBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO0FBQ3hGO0FBRUs7QUFDTSxZQUFMLEtBQUssQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO0FBQ2xDLGlCQUFXLElBQUksQ0FDRCxNQUFNLENBQ0YsQ0FBQyxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUMsS0FDcEIsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUMzRixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzFDLGlCQUFXLFNBQVMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRyxTQUFLLENBQUMsQ0FBQztBQUNQLEtBQUc7QUFDSDtBQUNPO0FBQW1CO0FBQVEsSUFBaEMsV0FBVyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUM1QztBQUNPO0FBQ0k7QUFBUSxJQURqQixRQUFRO0FBQ1YsUUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ2xDLFlBQU0sQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUztBQUMvRyxnQkFBTyxhQUFhLENBQUM7QUFDckIsaUJBQVcsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLFlBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdEMsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQTBCO0FBQ3JCO0FBQVEsSUFEbEIsV0FBVyxDQUFDLE9BQXNCO0FBQ3BDLFFBQUksQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUztBQUM3RyxZQUFLLGFBQWEsQ0FBQztBQUNuQixhQUFTLE1BQU0sQ0FBQyxLQUFLLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQztBQUMxQyxhQUFTLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5RCxRQUNJLElBQUksV0FBVyxJQUFJLE9BQU8sRUFBRTtBQUNoQyxrQkFBWSxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUMsR0FBRyxPQUFPLENBQUMsU0FBUztBQUM3RCxZQUFNLElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsRUFBRTtBQUN2RCxnQkFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4QyxhQUFPO0FBQ1AsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQ2I7QUFBUSxJQUR2QixZQUFZLENBQUMsSUFBYTtBQUM1QixRQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLFFBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7QUFDbEQsS0FBRztBQUNIO0FBQ087QUFBd0I7QUFBbUI7QUFBUSxJQUF4RCxTQUFTLENBQUMsS0FBb0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzVFO0FBQ087QUFBdUI7QUFBbUI7QUFBUSxJQUF2RCxvQkFBb0IsQ0FBQyxJQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuRTtBQUNPO0FBQXdCO0FBQ3pCO0FBQVEsSUFEWixlQUFlLENBQUMsS0FBc0I7QUFDeEMsUUFBSSxRQUFRLEtBQUs7QUFDakIsWUFBTSxLQUFLLGVBQWUsQ0FBQyxJQUFJO0FBQy9CLGdCQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssZUFBZSxDQUFDLElBQUk7QUFDL0IsZ0JBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsZ0JBQVEsTUFBTTtBQUNkLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUFxQjtBQUFtQjtBQUFRLElBQXJELGdCQUFnQixDQUFDLEVBQXVCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRTtBQUN6RTtBQUNPO0FBQXFCO0FBQW1CO0FBQVEsSUFBckQsaUJBQWlCLENBQUMsRUFBYSxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFDakU7QUFDTztBQUE2QjtBQUFtQjtBQUFRLElBQTdELGdCQUFnQixDQUFDLFVBQW1CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDaEY7QUFDTztBQUNFO0FBQW1CO0FBQVEsSUFEbEMsVUFBVSxDQUFDLEtBQUs7QUFDbEIsUUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM3RSxRQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM3QyxLQUFHO0FBQ0g7eUNBdFVDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsZUFBZSxrQkFDekIsUUFBUSxFQUFFLGdCQUFnQixrQkFDMUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU0sa0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLGtCQUVyQyxRQUFRLEVBQUU7Ozs7OzsrcUNBNENULGtCQUNELFNBQVMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixDQUFDOzs7Ozs7Ozs7MkNBQzdGOzs7Ozs7OztzN0JBQ0c7QUFBQztBQUFtQjtBQUNWLFlBakdOLDBCQUEwQjtBQUFJLFlBRDlCLG9CQUFvQjtBQUFJLFlBRnhCLFdBQVc7QUFBSSxZQVNmLGlCQUFpQjtBQUFJLFlBSHJCLG1CQUFtQjtBQUFJLFlBdkI3QixpQkFBaUI7QUFDakIsWUFDQSxVQUFVO0FBQ1YsWUFxQk0sY0FBYztBQUFJLFlBbEJ4QixNQUFNO0FBQ1A7QUFBRztBQUdILHdCQThHRSxTQUFTLFNBQUMsUUFBUTtBQUFPLDBCQVd6QixLQUFLO0FBQUssOEJBVVYsS0FBSztBQUFLLDRCQUtWLEtBQUs7QUFBSyw2QkFPVixLQUFLO0FBQUssNkJBT1YsS0FBSztBQUFLLDJCQVNWLEtBQUs7QUFBSyxzQkFPVixLQUFLO0FBQUssc0JBT1YsS0FBSztBQUFLLHlCQVNWLEtBQUs7QUFBSywwQkFXVixLQUFLO0FBQUssMkJBS1YsS0FBSztBQUFLLDhCQUtWLEtBQUs7QUFBSyx3QkFVVixLQUFLO0FBQUssdUJBT1YsTUFBTTtBQUFLLHFCQU9YLE1BQU07QUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFDO0FBQUk7QUFFakI7QUFJSDtBQ3hQRCxNQW1DYSxzQkFBc0I7QUFDbkM7QUFBUTtBQUF1QjtBQUFRLElBT3JDLFlBQW1CLElBQXVCO0FBQUksUUFBM0IsU0FBSSxHQUFKLElBQUksQ0FBbUI7QUFBQyxRQUZqQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztBQUNqRCxLQUNnRDtBQUNoRDtBQUNPO0FBQXNCO0FBQ2I7QUFBUSxJQUR0QixRQUFRLENBQUMsR0FBaUI7QUFDNUIsUUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO0FBQzlDLFlBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFNBQUs7QUFDTCxLQUFHO0FBQ0g7a0RBNUNDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsMkJBQTJCLGtCQUNyQyxJQUFJLEVBQUUsRUFBQyxNQUFNLEVBQUUsTUFBTTtBQUFDLGtCQUN0QixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxrQkFFckMsUUFBUSxFQUFFLGlsQ0FzQlQ7Ozs7Ozs7NEpBQ0YsMGFBQ0c7QUFBQztBQUFtQjtBQUNVLFlBakMxQixpQkFBaUI7QUFBRztBQUFHO0FBQ1gsMEJBZ0NqQixLQUFLO0FBQUssb0JBQ1YsS0FBSztBQUFLLDJCQUNWLEtBQUs7QUFBSyw4QkFDVixLQUFLO0FBQUsscUJBRVYsTUFBTTtBQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFDO0FBQUk7QUFFakI7QUFFZ0I7QUM3Q3BCLE1BMENhLHVCQUF1QjtBQUNwQztBQUFRO0FBQXVCO0FBRXpCLElBV0osWUFBbUIsSUFBdUI7QUFBSSxRQUEzQixTQUFJLEdBQUosSUFBSSxDQUFtQjtBQUFDLFFBYjNDLGVBQVUsR0FBRyxlQUFlLENBQUM7QUFDL0IsUUFHVyxXQUFNLEdBQXFCLEVBQUUsQ0FBQztBQUN6QyxRQUtZLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztBQUMzRCxRQUFZLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0FBQ2pELEtBQ2dEO0FBQ2hEO21EQXBEQyxTQUFTLFNBQUMsa0JBQ1QsUUFBUSxFQUFFLDJCQUEyQixrQkFDckMsZUFBZSxFQUFFO2NBQXVCLENBQUMsTUFBTSxrQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUksa0JBRXJDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E4QlA7Ozs7Ozs7a2tCQUNKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eXVDQUNHO0FBQUM7QUFBbUI7QUFHdkIsWUExQ08saUJBQWlCO0FBQUc7QUFBRztBQUd4QixtQkF1Q0osS0FBSztBQUFLLHVCQUNWLEtBQUs7QUFBSyxxQkFDVixLQUFLO0FBQUsseUJBQ1YsS0FBSztBQUFLLDJCQUNWLEtBQUs7QUFBSywyQkFDVixLQUFLO0FBQUssMEJBQ1YsS0FBSztBQUFLLHVCQUVWLE1BQU07QUFBSyxxQkFDWCxNQUFNO0FBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFDO0FBQUk7QUFFakI7QUFFZTtBQ3pEbkI7QUFBaUIsTUFLWCxhQUFhLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEtBQXFCLEtBQzlELEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsS0FBSztBQUM5RDtBQUNnQixNQUFWLG9CQUFvQixHQUFHLENBQUMsT0FBb0IsRUFBRSxRQUFpQixLQUNqRSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUk7QUFDbkQ7QUFDcUc7QUFDbkM7QUFDOEM7QUFDaEcsSUFBWixHQUFHLEdBQUcsS0FBSztBQUNmLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxFQUFFO0FBQ3RDLElBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUNEO0FBQ0c7QUFBbUI7QUFDUDtBQUFtQjtBQUFvQjtBQUFzQjtBQUE2QjtBQUN0RjtBQUE4QjtBQUFlO0FBRmhFLFNBQWdCLFlBQVksQ0FDeEIsSUFBWSxFQUFFLFFBQWEsRUFBRSxJQUFvQyxFQUFFLEtBQWlCLEVBQUUsT0FBd0IsRUFDOUcsY0FBNkIsRUFBRSxjQUE4QixFQUFFLGNBQXVCO0FBQzFGO0FBQ0UsSUFBQSxJQUFJLElBQUksRUFBRTtBQUNaLFFBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO0FBQzNCO0FBQzRCLGtCQUFoQixrQkFBa0IsR0FBRyxDQUFDLEtBQThCO0FBQ2hFO0FBQWlDLHNCQUFuQixPQUFPLHNCQUFHLEtBQUssQ0FBQyxNQUFNLEVBQWU7QUFDbkQsZ0JBQVEsSUFBSSxDQUFDLEtBQUssWUFBWSxVQUFVLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEtBQUssYUFBYSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsRUFBRTtBQUMzRyxvQkFBVSxPQUFPLEtBQUssQ0FBQztBQUN2QixpQkFBUztBQUNULGdCQUFRLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUMvQixvQkFBVSxPQUFPLGFBQWEsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLElBQUksb0JBQW9CLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3pHLGlCQUFTO0FBQUMscUJBQUssSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQ3ZDLG9CQUFVLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3pELGlCQUFTO0FBQUMsOENBQThCO0FBQ3hDLG9CQUFVLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztBQUMxRyxpQkFBUztBQUNULGFBQU87QUFDUDtBQUM0QixrQkFBaEIsUUFBUSxHQUFHLFNBQVMsQ0FBZ0IsUUFBUSxFQUFFLFNBQVMsQ0FBQztBQUNwRSxpQkFBNEIsSUFBSSxDQUNELFNBQVMsQ0FBQyxPQUFPLENBQUM7QUFDaEQ7QUFBb0QsWUFDdEIsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRTtBQUdJO0FBQ007QUFBNkIsa0JBQTNCLFdBQVcsR0FBRyxTQUFTLENBQWEsUUFBUSxFQUFFLEdBQUcsR0FBRyxZQUFZLEdBQUcsV0FBVyxDQUFDO0FBQzNGLGlCQUErQixJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hGO0FBQzRCLGtCQUFoQixnQkFBZ0IsR0FBRyxTQUFTLENBQWEsUUFBUSxFQUFFLEdBQUcsR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQzVGLGlCQUFvQyxJQUFJLENBQ0QsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxFQUN0RSxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0UsWUFFTSxJQUFJLENBQVEsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRixTQUFLLENBQUMsQ0FBQztBQUNQLEtBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFBQztBQUFJO0FBQWtDO0FBQWtFO0FDL0R6RztBQUFpQixNQU1YLDJCQUEyQixHQUFHO0FBQ3BDLElBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLDRDQUE0QyxFQUFFLHdCQUF3QjtBQUM3RyxJQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFFLGlDQUFpQztBQUNwRixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNaO0FBQ0c7QUFDa0c7QUFFcEY7QUFBZTtBQUFoQyxTQUFnQiw0QkFBNEIsQ0FBQyxPQUFvQjtBQUFJO0FBQy9ELFVBQUUsSUFBSSxHQUNOLEtBQUssQ0FBQyxJQUFJLG9CQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxHQUE0QjtBQUNsRyxTQUFXLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzQyxJQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBQ0Q7QUFDRztBQUN3RTtBQUN6RTtBQUMyRztBQUMzRztBQUVGO0FBQ0M7QUFDQTtBQUNDO0FBQ0E7QUFDUztBQUFYLE1BQWEsWUFBWSxHQUFHLENBQUMsT0FBb0IsRUFBRSxjQUErQixFQUFFLGNBQWMsR0FBRyxLQUFLO0FBQzFHO0FBQ0U7QUFBcUIsVUFBZixtQkFBbUIsR0FDckIsU0FBUyxDQUFhLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25HO0FBRUMsSUFBQyxTQUFTLENBQWdCLE9BQU8sRUFBRSxTQUFTLENBQUM7QUFDOUMsU0FBTyxJQUFJLENBQ0QsU0FBUyxDQUFDLGNBQWMsQ0FBQztBQUNsQztBQUFrQyxJQUN6QixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUN6QztBQUFpQyxJQUN4QixjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUM5QyxTQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQztBQUM1QyxjQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztBQUNsRSxRQUNRLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxJQUFJLGNBQWMsS0FBSyxPQUFPLEtBQUssUUFBUSxDQUFDLFFBQVEsRUFBRTtBQUMzRixZQUFVLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN2QixZQUFVLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNwQyxTQUFTO0FBQ1QsUUFDUSxJQUFJLGNBQWMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO0FBQzNELFlBQVUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCLFlBQVUsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3BDLFNBQVM7QUFDVCxLQUFPLENBQUMsQ0FBQztBQUNUO0FBRUMsSUFBQyxJQUFJLGNBQWMsRUFBRTtBQUN0QixRQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0FBQy9CLGFBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxjQUFjLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyx1QkFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQWUsQ0FBQyxDQUFDO0FBQ2hILGFBQVMsU0FBUyxDQUFDLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDckUsS0FBRztBQUNILENBQUM7QUFDRDtBQUFDO0FBQUk7QUFBa0M7QUFBa0U7QUFBSTtBQUFxQjtBQ2hFbEksTUFBYSxXQUFXO0FBQ3hCO0FBQVE7QUFBMEI7QUFBbUI7QUFBUSxJQUFuRCxZQUFZLENBQUMsT0FBb0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO0FBQ3pGO0FBQ087QUFBMEI7QUFBdUI7QUFBbUI7QUFBUSxJQUF6RSxRQUFRLENBQUMsT0FBb0IsRUFBRSxJQUFZLElBQVksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDM0c7QUFDTztBQUEwQjtBQUFtQjtBQUFRLElBQWxELGtCQUFrQixDQUFDLE9BQW9CO0FBQUksUUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLFFBQVEsTUFBTSxRQUFRLENBQUM7QUFDekUsS0FBRztBQUNIO0FBQ087QUFBMEI7QUFBbUI7QUFDcEQsSUFEVSxZQUFZLENBQUMsT0FBb0I7QUFBSTtBQUNuQyxZQUFKLGNBQWMsR0FBRyxtQkFBYSxPQUFPLENBQUMsWUFBWSxNQUFJLFFBQVEsQ0FBQyxlQUFlO0FBQ3RGLFFBQ0ksT0FBTyxjQUFjLElBQUksY0FBYyxLQUFLLFFBQVEsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxFQUFFO0FBQ3JILFlBQU0sY0FBYyxzQkFBZ0IsY0FBYyxDQUFDLFlBQVksRUFBQSxDQUFDO0FBQ2hFLFNBQUs7QUFDTCxRQUNJLE9BQU8sY0FBYyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUM7QUFDdEQsS0FBRztBQUNIO0FBQ087QUFBMEI7QUFBeUI7QUFDMUM7QUFBUSxJQUR0QixRQUFRLENBQUMsT0FBb0IsRUFBRSxLQUFLLEdBQUcsSUFBSTtBQUFJO0FBQ3BDLFlBQUwsVUFBc0I7QUFDOUI7QUFBeUIsWUFBakIsWUFBWSxHQUFlLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUM7QUFDOUYsUUFDSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLE9BQU8sRUFBRTtBQUN4RCxZQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUNuRCxZQUFNLFVBQVUsR0FBRztBQUNuQixnQkFBUSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUc7QUFDM0IsZ0JBQVEsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO0FBQ2pDLGdCQUFRLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtBQUM3QixnQkFBUSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7QUFDL0IsZ0JBQVEsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO0FBQ2pDLGdCQUFRLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztBQUMvQixhQUFPLENBQUM7QUFDUixTQUFLO0FBQUMsYUFBSztBQUNYO0FBQTZCLGtCQUFqQixjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7QUFDdkQsWUFDTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0MsWUFDTSxJQUFJLGNBQWMsS0FBSyxRQUFRLENBQUMsZUFBZSxFQUFFO0FBQ3ZELGdCQUFRLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxRCxhQUFPO0FBQ1AsWUFDTSxZQUFZLENBQUMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUM7QUFDbkQsWUFBTSxZQUFZLENBQUMsSUFBSSxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUM7QUFDckQsU0FBSztBQUNMLFFBQ0ksVUFBVSxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDO0FBQ3ZDLFFBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDO0FBQzFDLFFBQUksVUFBVSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDO0FBQ3pDLFFBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDO0FBQzFDLFFBQ0ksSUFBSSxLQUFLLEVBQUU7QUFDZixZQUFNLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsWUFBTSxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hELFlBQU0sVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxZQUFNLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEQsU0FBSztBQUNMLFFBQ0ksT0FBTyxVQUFVLENBQUM7QUFDdEIsS0FBRztBQUNIO0FBQ087QUFBMEI7QUFBeUI7QUFDeEM7QUFBUSxJQUR4QixNQUFNLENBQUMsT0FBb0IsRUFBRSxLQUFLLEdBQUcsSUFBSTtBQUFJO0FBQ2xDLGNBQUgsS0FBSyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtBQUNqRDtBQUF5QixjQUFmLGNBQWMsR0FBRztBQUMzQixZQUFNLEdBQUcsRUFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUztBQUNsRSxZQUFNLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVTtBQUNwRSxTQUFLO0FBQ0w7QUFFRyxZQURLLFFBQVEsR0FBRztBQUNuQixZQUFNLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZO0FBQ2xELFlBQU0sS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFdBQVc7QUFDL0MsWUFBTSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsR0FBRztBQUN6QyxZQUFNLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHO0FBQy9DLFlBQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUk7QUFDNUMsWUFBTSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSTtBQUM5QyxTQUFLO0FBQ0wsUUFDSSxJQUFJLEtBQUssRUFBRTtBQUNmLFlBQU0sUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwRCxZQUFNLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEQsWUFBTSxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLFlBQU0sUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwRCxZQUFNLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEQsWUFBTSxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELFNBQUs7QUFDTCxRQUNJLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLEtBQUc7QUFDSDtBQUVDO0FBRUQ7QUFBUztBQUFRO0FBQThCO0FBQWdDO0FBQTRCO0FBRXJHO0FBQW1CO0FBQVEsSUFGL0IsZ0JBQWdCLENBQUMsV0FBd0IsRUFBRSxhQUEwQixFQUFFLFNBQWlCLEVBQUUsWUFBc0I7QUFDakgsY0FDUSxDQUFDLGdCQUFnQixHQUFHLEtBQUssRUFBRSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUN6RjtBQUN3QixjQUFkLGNBQWMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0FBQzdHO0FBQXlCLGNBQWYsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO0FBQzNEO0FBQ3dCLGNBQWQsU0FBUyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO0FBQzFEO0FBQXlCLGNBQWYsWUFBWSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO0FBQ2hFO0FBQXlCLGNBQWYsVUFBVSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO0FBQzVEO0FBQXlCLGNBQWYsV0FBVyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO0FBQzlEO0FBQ3dCLFlBQWhCLFdBQVcsR0FBRyxDQUFDO0FBQ3ZCO0FBQXlCLFlBQWpCLFlBQVksR0FBRyxDQUFDO0FBQ3hCLFFBQ0ksUUFBUSxnQkFBZ0I7QUFDNUIsWUFBTSxLQUFLLEtBQUs7QUFDaEIsZ0JBQVEsV0FBVyxJQUFJLGNBQWMsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLFlBQVksR0FBRyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNyRyxnQkFBUSxNQUFNO0FBQ2QsWUFBTSxLQUFLLFFBQVE7QUFDbkIsZ0JBQVEsV0FBVyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25FLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssTUFBTTtBQUNqQixnQkFBUSxZQUFZLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsV0FBVyxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3RHLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssT0FBTztBQUNsQixnQkFBUSxZQUFZLElBQUksY0FBYyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEUsZ0JBQVEsTUFBTTtBQUNkLFNBQUs7QUFDTCxRQUNJLFFBQVEsa0JBQWtCO0FBQzlCLFlBQU0sS0FBSyxLQUFLO0FBQ2hCLGdCQUFRLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO0FBQ3pDLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssUUFBUTtBQUNuQixnQkFBUSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7QUFDOUYsZ0JBQVEsTUFBTTtBQUNkLFlBQU0sS0FBSyxNQUFNO0FBQ2pCLGdCQUFRLFlBQVksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO0FBQzNDLGdCQUFRLE1BQU07QUFDZCxZQUFNLEtBQUssT0FBTztBQUNsQixnQkFBUSxZQUFZLEdBQUcsY0FBYyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUM7QUFDOUYsZ0JBQVEsTUFBTTtBQUNkLFlBQU0sS0FBSyxRQUFRO0FBQ25CLGdCQUFRLElBQUksZ0JBQWdCLEtBQUssS0FBSyxJQUFJLGdCQUFnQixLQUFLLFFBQVEsRUFBRTtBQUN6RSxvQkFBVSxZQUFZLElBQUksY0FBYyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFHLGlCQUFTO0FBQUMscUJBQUs7QUFDZixvQkFBVSxXQUFXLElBQUksY0FBYyxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFHLGlCQUFTO0FBQ1QsZ0JBQVEsTUFBTTtBQUNkLFNBQUs7QUFDTDtBQUVHO0FBQ0ksUUFBSCxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxhQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQzdHO0FBRUc7QUFBeUIsY0FBbEIsV0FBVyxHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRTtBQUM3RDtBQUF5QixjQUFmLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZTtBQUN6QztBQUF5QixjQUFmLFlBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZO0FBQ2hFO0FBQXlCLGNBQWYsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVc7QUFDN0QsUUFDSSxPQUFPLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLElBQUksV0FBVztBQUM1RixZQUFRLFdBQVcsQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDO0FBQzNDLEtBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDZ0IsTUFBVixrQkFBa0IsR0FBRyxLQUFLO0FBQ2hDO0FBQWlCLE1BQVgsZUFBZSxHQUFHLElBQUksV0FBVyxFQUFFO0FBQ3pDO0FBQ0U7QUFDNEY7QUFDN0Q7QUFDNkI7QUFDeEI7QUFDVDtBQUNNO0FBQ0o7QUFDRTtBQUM1QjtBQUNGO0FBQTBCO0FBQ047QUFBd0I7QUFBNEI7QUFBeUI7QUFDM0Y7QUFGVCxTQUFnQixnQkFBZ0IsQ0FDNUIsV0FBd0IsRUFBRSxhQUEwQixFQUFFLFNBQThDLEVBQ3BHLFlBQXNCLEVBQUUsU0FBa0I7QUFBSTtBQUN4QyxRQUFKLGFBQWEsR0FDYixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsc0JBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFvQjtBQUNwRztBQUNvQixVQUFaLGlCQUFpQixHQUFHO0FBQzVCLFFBQUksS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsYUFBYTtBQUN2SCxRQUFJLFdBQVcsRUFBRSxjQUFjO0FBQy9CLEtBQUc7QUFDSDtBQUNvQixVQUFaLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUztBQUMzQztBQUFxQixVQUFiLGtCQUFrQixHQUFHLENBQUMsZUFBMEI7QUFBTyxjQUN0RCxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUMxRDtBQUNDLGNBRFMsT0FBTyxHQUFHLEVBQUU7QUFDdEIsUUFBSSxJQUFJLFNBQVMsRUFBRTtBQUNuQixZQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztBQUM5QyxZQUFNLElBQUksU0FBUyxFQUFFO0FBQ3JCLGdCQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDN0QsYUFBTztBQUNQLFlBQ00sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLFNBQUs7QUFDTCxRQUFJLE9BQU8sT0FBTyxDQUFDO0FBQ25CLEtBQUc7QUFDSDtBQUVDLElBQUMsSUFBSSxTQUFTLEVBQUU7QUFDakIsUUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxJQUFJLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqSCxLQUFHO0FBQ0g7QUFFQztBQUFxQixRQUFoQixPQUFPLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQztBQUM5RCxJQUFFLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRTtBQUNwQixRQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxVQUFTLEdBQUc7QUFDMUMsWUFBTSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO0FBQzNFLGdCQUFRLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxxQkFBRSxHQUFHLEdBQWMsQ0FBQztBQUM3RCxhQUFPO0FBQ1AsU0FBSyxDQUFDLENBQUM7QUFDUCxLQUFHO0FBQ0g7QUFHQTtBQUNFO0FBQXFCLFVBQWYsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLO0FBQ25DLElBQUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDOUIsSUFBRSxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNsQixJQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ25CLElBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUNyQztBQUNvQixRQUFkLGFBQXdCO0FBQzlCO0FBQXFCLFFBQWYsWUFBWSxHQUFHLEtBQUs7QUFDMUIsSUFBRSxLQUFLLGFBQWEsSUFBSSxhQUFhLEVBQUU7QUFDdkM7QUFBeUIsWUFBakIsWUFBWSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztBQUN4RCxRQUNJLElBQUksZUFBZSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxFQUFFO0FBQ25HLFlBQU0sWUFBWSxHQUFHLElBQUksQ0FBQztBQUMxQixZQUFNLE1BQU07QUFDWixTQUFLO0FBQ0w7QUFFRyxRQUFDLElBQUksU0FBUyxFQUFFO0FBQ25CLFlBQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLFNBQUs7QUFDTCxLQUFHO0FBQ0gsSUFDRSxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ3JCO0FBQ0ksUUFBQSxhQUFhLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLFFBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdEMsUUFBSSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDOUYsS0FBRztBQUNILElBQ0UsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUNEO0FBQ0E7QUFBSTtBQUFrQztBQUFrRTtBQzFQeEc7QUFBSTtBQUFlO0FBSW5CLFNBQWdCLHVDQUF1QztBQUN2RCxJQUFFLE9BQU8sSUFBSSx5QkFBeUIsRUFBRSxDQUFDO0FBQ3pDLENBQUM7QUFDRDtBQUNHO0FBQzREO0FBQ3FCO0FBQ3VCO0FBQzFGO0FBQ2Y7QUFDd0c7QUFDSztBQUMvRjtBQUNkO0FBQ21HO0FBQ3BDO0FBQy9EO0FBQzhGO0FBRXhGO0FBQ1IsTUFBc0Isc0JBQXNCO0FBQzVDO2tEQUZDLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO29CQUF1QyxFQUFDLHNLQUNoRjtBQUFDOzs7OzBCQUtDO0FBQUMsTUFjSyx5QkFBMEIsU0FBUSxzQkFBc0I7QUFDckU7QUFBUTtBQUF3QjtBQUNyQjtBQUNULElBRkEsS0FBSyxDQUFDLEtBQWE7QUFBSSxRQUNyQixJQUFJLEtBQUssRUFBRTtBQUNmO0FBQTZCLGtCQUFqQixTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDL0MsWUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1RCxnQkFBUSxPQUFPLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQztBQUN2RSxhQUFPO0FBQUMsaUJBQUssSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzdGLGdCQUFRLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBQyxDQUFDO0FBQzFGLGFBQU87QUFBQyxpQkFBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3ZILGdCQUFRLE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO0FBQzdHLGFBQU87QUFDUCxTQUFLO0FBQ0wsUUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixLQUFHO0FBQ0g7QUFDTztBQUF1QjtBQUNyQjtBQUFRLElBRGYsTUFBTSxDQUFDLElBQW1CO0FBQUksUUFDNUIsT0FBTyxJQUFJO0FBQ2YsWUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO0FBQzVILFlBQVEsRUFBRSxDQUFDO0FBQ1gsS0FBRztBQUNIO3FEQXJCQyxVQUFVOzs7OzswQkFDVDtBQUFDO0FBQUM7QUFBSTtBQUFrQztBQUNOO0FDNUNwQztBQUNRLE1Ba0NGQywrQkFBNkIsR0FBRztBQUN0QyxJQUFFLE9BQU8sRUFBRSxpQkFBaUI7QUFDNUIsSUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsSUFBRSxLQUFLLEVBQUUsSUFBSTtBQUNiLENBQUM7QUFDRDtBQUNnQixNQUFWLHdCQUF3QixHQUFHO0FBQ2pDLElBQUUsT0FBTyxFQUFFLGFBQWE7QUFDeEIsSUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsSUFBRSxLQUFLLEVBQUUsSUFBSTtBQUNiLENBQUM7QUFDRDtBQUNHO0FBQ3NFO0FBQ3ZFO0FBQ3VHO0FBYXpHLE1BQWEsa0JBQWtCO0FBQUc7QUFBUTtBQUNuQjtBQUF5QjtBQUN4QjtBQUE0QjtBQUM5QjtBQUNIO0FBQ0E7QUFDSDtBQUdWO0FBQTRCO0FBQWtDO0FBQVEsSUF1TDFFLFlBQ1ksZ0JBQXdDLEVBQVUsTUFBb0MsRUFDdEYsTUFBd0IsRUFBVSxTQUFvQixFQUFVLElBQThCLEVBQzlGLE9BQWUsRUFBVSxRQUE4QixFQUFVLFNBQXNCLEVBQ3ZGLFlBQWlDLEVBQTRCLFNBQWMsRUFDM0UsZUFBa0M7QUFDaEQsUUFMYyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO0FBQUMsUUFBUyxXQUFNLEdBQU4sTUFBTSxDQUE4QjtBQUFDLFFBQ3ZGLFdBQU0sR0FBTixNQUFNLENBQWtCO0FBQUMsUUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFXO0FBQUMsUUFBUyxTQUFJLEdBQUosSUFBSSxDQUEwQjtBQUFDLFFBQy9GLFlBQU8sR0FBUCxPQUFPLENBQVE7QUFBQyxRQUFTLGFBQVEsR0FBUixRQUFRLENBQXNCO0FBQUMsUUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFhO0FBQUMsUUFDeEYsaUJBQVksR0FBWixZQUFZLENBQXFCO0FBQUMsUUFBMkIsY0FBUyxHQUFULFNBQVMsQ0FBSztBQUFDLFFBQzVFLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtBQUFDLFFBbk12QyxVQUFLLEdBQWdDLElBQUksQ0FBQztBQUNwRCxRQUFVLGNBQVMsR0FBRyxLQUFLLENBQUM7QUFDNUI7QUFBWTtBQUsyQjtBQUFXO0FBRXhDO0FBQ21CO0FBQ0Y7QUFDK0I7QUFBVztBQUF5QjtBQUFZLFFBSS9GLGNBQVMsR0FBbUMsSUFBSSxDQUFDO0FBQzVEO0FBRUs7QUFFRTtBQUFXO0FBRU87QUFFbkI7QUFBNEI7QUFBVztBQUd5QjtBQUMvRDtBQUVQO0FBQVc7QUFFRTtBQUVaLFFBNkVVLGNBQVMsR0FBbUIsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNoRztBQUVLO0FBRTRCO0FBRzlCO0FBRWU7QUFBVztBQUduQjtBQUFZLFFBZ0NWLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0FBQ3JEO0FBRUs7QUFFQztBQUFXO0FBRUE7QUFBWSxRQUFqQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQThCLENBQUM7QUFDdEU7QUFFSztBQUVDO0FBQVc7QUFFQztBQUFZLFFBQWxCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0FBQzlDLFFBYVUsY0FBUyxHQUFHLENBQUMsQ0FBTSxRQUFPLENBQUM7QUFDckMsUUFBVSxlQUFVLEdBQUcsU0FBUSxDQUFDO0FBQ2hDLFFBQVUscUJBQWdCLEdBQUcsU0FBUSxDQUFDO0FBQ3RDLFFBUUksSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztBQUMzRixLQUFHO0FBQ0g7QUFDTztBQUFtQjtBQUFRLElBMUJoQyxJQUNJLFFBQVE7QUFDZCxRQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMxQixLQUFHO0FBQ0g7QUFBUTtBQUNMO0FBQW1CO0FBQVEsSUFENUIsSUFBSSxRQUFRLENBQUMsS0FBVTtBQUN6QixRQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQ2xFLFFBQ0ksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDdkIsWUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0QsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQXFCO0FBQ25CO0FBQVEsSUFhZixnQkFBZ0IsQ0FBQyxFQUF1QixJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFDMUU7QUFDTztBQUFxQjtBQUFtQjtBQUFRLElBQXJELGlCQUFpQixDQUFDLEVBQWEsSUFBVSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQ2xFO0FBQ087QUFBcUI7QUFBbUI7QUFBUSxJQUFyRCx5QkFBeUIsQ0FBQyxFQUFjLElBQVUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQ2pGO0FBQ087QUFBNkI7QUFBbUI7QUFBUSxJQUE3RCxnQkFBZ0IsQ0FBQyxVQUFtQixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDN0U7QUFDTztBQUFvQjtBQUFtQjtBQUFRLElBQXBELFFBQVEsQ0FBQyxDQUFrQjtBQUFJO0FBQzlCLGNBQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLO0FBQ3pCLFFBQ0ksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFDL0MsWUFBTSxPQUFPLElBQUksQ0FBQztBQUNsQixTQUFLO0FBQ0w7QUFDd0IsY0FBZCxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RSxRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUMxQyxZQUFNLE9BQU8sRUFBQyxTQUFTLEVBQUUsRUFBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBQyxFQUFDLENBQUM7QUFDN0MsU0FBSztBQUNMLFFBQ0ksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtBQUNwRSxZQUFNLE9BQU8sRUFBQyxTQUFTLEVBQUUsRUFBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBQyxFQUFDLENBQUM7QUFDekQsU0FBSztBQUNMLFFBQ0ksSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtBQUNuRSxZQUFNLE9BQU8sRUFBQyxTQUFTLEVBQUUsRUFBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBQyxFQUFDLENBQUM7QUFDeEQsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQ0U7QUFBbUI7QUFBUSxJQURsQyxVQUFVLENBQUMsS0FBSztBQUNsQixRQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNFLFFBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxLQUFHO0FBQ0g7QUFDTztBQUF3QjtBQUMxQjtBQUFtQjtBQUFRLElBRDlCLGdCQUFnQixDQUFDLEtBQWEsRUFBRSxVQUFVLEdBQUcsS0FBSztBQUNwRDtBQUF5QixjQUFmLGlCQUFpQixHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVztBQUN4RCxRQUFJLElBQUksaUJBQWlCLEVBQUU7QUFDM0IsWUFBTSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUMvQixZQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0UsU0FBSztBQUNMLFFBQUksSUFBSSxpQkFBaUIsSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUMxQyxZQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzRyxTQUFLO0FBQ0wsUUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25DLFlBQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ25DO0FBRUM7QUFDRTtBQUNFO0FBRUo7QUFDUTtBQUFRLElBRGYsSUFBSTtBQUNOLFFBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtBQUN4QjtBQUE2QixrQkFBakIsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDO0FBQ2pFLFlBQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRCxZQUNNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNqRSxZQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZELFlBQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0QsWUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNyQyxZQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM3RTtBQUVLLFlBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFZO0FBQ3hELGdCQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdEMsZ0JBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNyQyxnQkFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUIsYUFBTyxDQUFDLENBQUM7QUFDVCxZQUNNLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDbkQsWUFDTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUQsWUFDTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFO0FBQ3JDLGdCQUFRLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDckcsYUFBTztBQUNQO0FBRUssWUFBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekUsWUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQyxZQUNNLFlBQVksQ0FDUixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFDakYsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQzFFLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBRUM7QUFBUSxJQURWLEtBQUs7QUFDUCxRQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO0FBQ3ZCLFlBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ25FLFlBQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDeEIsWUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pCLFlBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUMxQyxTQUFLO0FBQ0wsS0FBRztBQUNIO0FBRUM7QUFDRTtBQUVBO0FBQVEsSUFEVCxNQUFNO0FBQ1IsUUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtBQUN2QixZQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNuQixTQUFLO0FBQUMsYUFBSztBQUNYLFlBQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xCLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBQ0U7QUFDRTtBQUVIO0FBQU87QUFFSjtBQUF3QjtBQUFtQjtBQUFRLElBQXhELFVBQVUsQ0FBQyxJQUFrRDtBQUMvRCxRQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO0FBQ3ZCLFlBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNDLFNBQUs7QUFDTCxLQUFHO0FBQ0g7QUFDTztBQUFtQjtBQUMxQixJQURFLE1BQU0sS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRTtBQUNqQztBQUNPO0FBQTBCO0FBQ3JCO0FBQVEsSUFEbEIsV0FBVyxDQUFDLE9BQXNCO0FBQ3BDLFFBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQ2xELFlBQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDOUIsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQ0M7QUFBUSxJQURkLFdBQVc7QUFDYixRQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQixRQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN6QyxLQUFHO0FBQ0g7QUFDTztBQUFxQztBQUFtQjtBQUFRLElBQTdELHNCQUFzQixDQUFDLGtCQUFpQztBQUFJLFFBQ2xFLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsU0FBUztBQUNySCxZQUFLLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQztBQUNqRyxhQUFTLE9BQU8sQ0FBQyxDQUFDLFVBQWtCO0FBQ3BDLFlBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQzlDLGdCQUFZLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5RCxhQUFXO0FBQ1gsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFJLGtCQUFrQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDakUsS0FBRztBQUNIO0FBQ087QUFBZ0M7QUFDaEM7QUFBUSxJQURMLGtCQUFrQixDQUFDLGFBQWtCO0FBQy9DLFFBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQzVELFFBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ25ELFFBQ0ksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRTtBQUNuQyxZQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM1RCxTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBcUM7QUFBbUI7QUFBUSxJQUE3RCw4QkFBOEIsQ0FBQyxrQkFBaUM7QUFDMUUsUUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQzlGLFFBQUksa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzVDLFlBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsWUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO0FBQ2xFLGdCQUFRLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQixhQUFPO0FBQ1AsU0FBSyxDQUFDLENBQUM7QUFDUCxLQUFHO0FBQ0g7QUFDTztBQUF3QjtBQUMxQjtBQUFRLElBREgsZ0JBQWdCLENBQUMsS0FBYztBQUN6QztBQUF5QixjQUFmLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNyRCxRQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQzdCLFFBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFFLFFBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7QUFDdkIsWUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2RSxZQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN4QixTQUFLO0FBQ0wsS0FBRztBQUNIO0FBQ087QUFBdUI7QUFBbUI7QUFBUSxJQUEvQyxlQUFlLENBQUMsSUFBbUI7QUFBSTtBQUNqQyxjQUFOLE9BQU8sR0FBRyxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQzlFLFFBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzVELEtBQUc7QUFDSDtBQUNPO0FBQW1CO0FBQVEsSUFBeEIsb0JBQW9CO0FBQzlCLFFBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDckIsWUFBTSxPQUFPO0FBQ2IsU0FBSztBQUNMO0FBQ3dCLFlBQWhCLFdBQXdCO0FBQ2hDLFFBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFO0FBQ2pELFlBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN2RSxTQUFLO0FBQUMsYUFBSyxJQUFJLElBQUksQ0FBQyxjQUFjLFlBQVksV0FBVyxFQUFFO0FBQzNELFlBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7QUFDeEMsU0FBSztBQUFDLGFBQUs7QUFDWCxZQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztBQUM5QyxTQUFLO0FBQ0wsUUFDSSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDN0MsWUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7QUFDaEgsU0FBSztBQUNMLFFBQ0ksZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDaEgsS0FBRztBQUNIOzhDQW5hQyxTQUFTLFNBQUMsa0JBQ1QsUUFBUSxFQUFFLHNCQUFzQixrQkFDaEMsUUFBUSxFQUFFLGVBQWUsa0JBQ3pCLElBQUksRUFBRSxzQkFDSixTQUFTLEVBQUUsdUNBQXVDLHNCQUNsRCxVQUFVLEVBQUUsNkNBQTZDLHNCQUN6RCxRQUFRLEVBQUUsVUFBVSxzQkFDcEIsWUFBWSxFQUFFLFVBQVUsa0JBQ3pCLGtCQUNELFNBQVMsRUFBRSxDQUFDQSwrQkFBNkIsRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0IsQ0FBQyxjQUMzRjs7Ozs7b3hCQUNJO0FBQUM7QUFBbUI7QUFDVixZQWhDUCxzQkFBc0I7QUFBSSxZQTNCaEMsVUFBVTtBQUNWLFlBV0EsZ0JBQWdCO0FBQ2YsWUFKRCxTQUFTO0FBQ1QsWUFiQSx3QkFBd0I7QUFDeEIsWUFPQSxNQUFNO0FBQ04sWUFrQk0sb0JBQW9CO0FBQUksWUFDeEIsV0FBVztBQUFJLFlBSmYsY0FBYztBQUFJLDRDQXlPd0IsTUFBTSxTQUFDLFFBQVE7QUFBUyxZQWxReEUsaUJBQWlCO0FBQ2xCO0FBQUc7QUFDVSx3QkE4RVgsS0FBSztBQUFLLDBCQVNWLEtBQUs7QUFBSyw4QkFVVixLQUFLO0FBQUssNEJBS1YsS0FBSztBQUFLLDZCQU9WLEtBQUs7QUFBSyw2QkFPVixLQUFLO0FBQUssMkJBU1YsS0FBSztBQUFLLHNCQU9WLEtBQUs7QUFBSyxzQkFPVixLQUFLO0FBQUsseUJBU1YsS0FBSztBQUFLLDBCQVdWLEtBQUs7QUFBSyx3QkFlVixLQUFLO0FBQUssMkJBS1YsS0FBSztBQUFLLDhCQUtWLEtBQUs7QUFBSyx3QkFVVixLQUFLO0FBQUssd0JBT1YsS0FBSztBQUFLLDZCQVNWLEtBQUs7QUFBSyx5QkFTVixNQUFNO0FBQUssdUJBT1gsTUFBTTtBQUFLLHFCQU9YLE1BQU07QUFBSyx1QkFFWCxLQUFLO0FBQ1A7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQUFFO0FBQUM7QUFBQztBQUFJO0FBQ2U7QUFHTTtBQ25QOUIsTUFtQmEsb0JBQW9CO0FBQ2pDO0FBQVE7QUFBdUI7QUFDekIsSUFLSixZQUFtQixJQUF1QjtBQUFJLFFBQTNCLFNBQUksR0FBSixJQUFJLENBQW1CO0FBQUMsS0FBRztBQUNoRDtBQUNPO0FBQW1CO0FBQVEsSUFBaEMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDbEc7Z0RBekJDLFNBQVMsU0FBQyxrQkFDVCxRQUFRLEVBQUUsd0JBQXdCLGtCQUNsQyxlQUFlLEVBQUU7aUJBQXVCLENBQUMsTUFBTSxrQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUksa0JBRXJDLElBQUksRUFBRSxzQkFDSixPQUFPLEVBQUUsV0FBVyxzQkFDcEIsb0JBQW9CLEVBQUUsVUFBVSxzQkFDaEMsb0JBQW9CLEVBQUUsVUFBVTtvQkFDaEMsb0JBQW9CLEVBQUUsV0FBVyxzQkFDakMsaUJBQWlCLEVBQUUsV0FBVyxzQkFDOUIsZ0JBQWdCLEVBQUUsU0FBUztVQUM1QixrQkFDRCxRQUFRLEVBQUUsaUNBQWlDOzthQUM1Qzs7OE5BQ0c7QUFBQztBQUFtQjtBQUV2QixZQW5CTyxpQkFBaUI7QUFBRztBQUFHO0FBRzNCLDJCQWVELEtBQUs7QUFBSyxtQkFDVixLQUFLO0FBQUssdUJBQ1YsS0FBSztBQUFLLHNCQUNWLEtBQUs7QUFBSyx1QkFDVixLQUFLO0FBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFDO0FBQUk7QUFFRztBQUVnQjtBQzVCdkMsTUErQmEsNkJBQTZCO0FBQzFDO0FBQVE7QUFDSDtBQUFRLElBTVgsWUFBbUIsSUFBdUI7QUFBSSxRQUEzQixTQUFJLEdBQUosSUFBSSxDQUFtQjtBQUFDLFFBRmpDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0FBQ2pELEtBQ2dEO0FBQ2hEO0FBQ087QUFBd0I7QUFBbUI7QUFBUSxJQUF4RCxXQUFXLENBQUMsS0FBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDcEc7QUFDTztBQUF1QjtBQUFtQjtBQUFRLElBQXZELFVBQVUsQ0FBQyxJQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNsRzt5REF2Q0MsU0FBUyxTQUFDLGtCQUNULFFBQVEsRUFBRSxrQ0FBa0Msa0JBQzVDLGVBQWUsRUFBRTtTQUF1QixDQUFDLE1BQU0sa0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLGtCQUVyQyxRQUFRLEVBQUU7Ozs7Ozs7O3FDQW1CVDs7O3dHQUNGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NlJBQ0c7QUFBQztBQUFtQjtBQUVoQixZQTlCQSxpQkFBaUI7QUFBRztBQUFHO0FBR2xCLG1CQTBCVixLQUFLO0FBQUssdUJBQ1YsS0FBSztBQUFLLHFCQUNWLEtBQUs7QUFBSyxvQkFDVixLQUFLO0FBQUsscUJBRVYsTUFBTTtBQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQUU7QUFBQztBQUFDO0FBQUk7QUFFakI7QUFFZ0I7QUN6Q3BCO0FBQUk7QUFBYTtBQU1qQixNQUFzQixnQkFBaUIsU0FBUSxXQUFXO0FBQzFEO0FBQ0U7QUFBbUI7QUFBUSxJQWlCM0IsY0FBYyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUU7QUFDaEM7QUFDTztBQUFtQjtBQUFRLElBQWhDLFNBQVMsS0FBSyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2pFO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxnQkFBZ0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxFQUFFO0FBQ2xDO0FBQ087QUFBdUI7QUFBMEI7QUFDdEM7QUFBbUI7QUFBUSxJQUQzQyxPQUFPLENBQUMsSUFBYSxFQUFFLFNBQW9CLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUM1RCxRQUFJLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELFFBQ0ksUUFBUSxNQUFNO0FBQ2xCLFlBQU0sS0FBSyxHQUFHO0FBQ2QsZ0JBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDdkQsZ0JBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDdkIsZ0JBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDckIsZ0JBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsWUFBTSxLQUFLLEdBQUc7QUFDZCxnQkFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQztBQUN6RCxnQkFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNyQixnQkFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixZQUFNLEtBQUssR0FBRztBQUNkLGdCQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNyRCxZQUFNO0FBQ04sZ0JBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsU0FBSztBQUNMLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQTBCO0FBQTBCO0FBQW1CO0FBQVEsSUFBM0csT0FBTyxDQUFDLElBQWEsRUFBRSxTQUFvQixHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7QUFDN0c7QUFDTztBQUNQO0FBQW1CO0FBQVEsSUFEekIsVUFBVSxDQUFDLElBQWE7QUFDMUI7QUFBeUIsY0FBZixHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDL0M7QUFDSSxRQUFBLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQy9CLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQzFCO0FBQW1CO0FBQVEsSUFEN0IsYUFBYSxDQUFDLElBQWUsRUFBRSxjQUFzQjtBQUN2RDtBQUNJLFFBQUEsSUFBSSxjQUFjLEtBQUssQ0FBQyxFQUFFO0FBQzlCLFlBQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixTQUFLO0FBQ0w7QUFDd0IsY0FBZCxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsSUFBSSxDQUFDO0FBQ3REO0FBQXlCLGNBQWYsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDcEM7QUFDd0IsY0FBZCxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFDekMsUUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBYTtBQUM1RDtBQUNWLGNBREMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDakM7QUFBeUIsY0FBZixPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUFFLFFBQ2hFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakYsS0FBRztBQUNIO0FBQ087QUFBbUI7QUFBUSxJQUFoQyxRQUFRLEtBQWMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hFO0FBRU07QUFBdUI7QUFDakI7QUFBUSxJQURsQixPQUFPLENBQUMsSUFBYTtBQUFJLFFBQ3ZCLE9BQU8sSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNwRixZQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNqRCxLQUFHO0FBQ0g7QUFDTztBQUF1QjtBQUFzQjtBQUN0QztBQUNSLElBRkksT0FBTyxDQUFDLElBQWEsRUFBRSxHQUFXO0FBQUksUUFDNUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ2Y7QUFBeUIsWUFBakIsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzNELFFBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQ2xCLFlBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQ3ZCLGdCQUFRLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELGdCQUFRLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVELGdCQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDckIsYUFBTztBQUNQLFNBQUs7QUFBQyxhQUFLLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRTtBQUM1QixZQUFNLE9BQU8sR0FBRyxHQUFHLEtBQUssRUFBRTtBQUMxQixnQkFBUSxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3JCLGdCQUFRLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELGdCQUFRLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVELGFBQU87QUFDUCxTQUFLO0FBQ0wsUUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNuQixRQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEtBQUc7QUFDSDtBQUNPO0FBQXVCO0FBQXdCO0FBQzFDO0FBQ1osSUFGVSxTQUFTLENBQUMsSUFBYSxFQUFFLEtBQWE7QUFBSSxRQUNoRCxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDbkIsUUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekQsUUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUQsUUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixLQUFHO0FBQ0g7QUFDTztBQUF1QjtBQUF1QjtBQUN4QztBQUFRLElBRFgsUUFBUSxDQUFDLElBQWEsRUFBRSxJQUFZO0FBQUksUUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQztBQUN0QixRQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEtBQUc7QUFDSDs0Q0E3R0MsVUFBVTs7Ozs7MEJBQ1Q7QUFBQztBQUFDO0FBQUk7QUFBa0M7QUFFRDtBQ1J6QztBQUFJO0FBQXlDO0FBQ25DO0FBQWU7QUFNekIsU0FBUyxpQkFBaUIsQ0FBQyxLQUFhO0FBQUksSUFDMUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUNEO0FBQ0c7QUFDd0M7QUFFNUI7QUFBZTtBQUE5QixTQUFTLG1CQUFtQixDQUFDLEtBQVc7QUFBSTtBQUNoQyxVQUFKLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFO0FBQ2xDLElBQUUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBQ0Q7QUFDRztBQUNpQztBQUNZO0FBQ2xCO0FBRWY7QUFBcUI7QUFBZTtBQUFuRCxTQUFTLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxNQUFjO0FBQUksSUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztBQUM1RixDQUFDO0FBQ0Q7QUFDRztBQUNnQztBQUNQO0FBRWQ7QUFBZTtBQUE3QixTQUFTLG1CQUFtQixDQUFDLElBQVk7QUFBSSxJQUMzQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFDRDtBQUNHO0FBQWdCO0FBQWdCO0FBQzlCO0FBREwsU0FBUyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7QUFBSSxJQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUNEO0FBQ0c7QUFDNEU7QUFDcEI7QUFDWTtBQUMyQjtBQUNtQjtBQUN2RztBQUdQO0FBQUksTUFBTCxlQUFlLEdBQUcsU0FBUztBQUNqQztBQUFpQixNQUFYLGFBQWEsR0FBRyxTQUFTO0FBRy9CLE1BQWEsdUJBQXdCLFNBQVEsZ0JBQWdCO0FBQzdEO0FBQ0U7QUFDRTtBQUVKO0FBQXdCO0FBQ3JCO0FBQVEsSUFEVCxhQUFhLENBQUMsS0FBVztBQUFJO0FBQ2YsY0FBTixLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRTtBQUFFO0FBQXlCLGNBQXpCLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQUU7QUFFbEUsY0FGa0UsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDeEY7QUFDd0IsWUFBaEIsU0FBUyxHQUFHLGVBQWUsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekYsWUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUN0RSxZQUFRLElBQUksQ0FBQyxLQUFLLENBQ04sQ0FBQyxHQUFHLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2xILFFBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzVDO0FBQ3dCLGNBQWQsSUFBSSxHQUFHLFNBQVMsR0FBRyxhQUFhO0FBQzFDO0FBQXlCLGNBQWYsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLEtBQUssSUFBSSxPQUFPLENBQUM7QUFDM0Q7QUFBeUIsWUFBakIsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztBQUMzRSxRQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQztBQUF5QixjQUFmLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzFFLFFBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxLQUFHO0FBQ0g7QUFFQztBQUNFO0FBQ0U7QUFDa0I7QUFDbkI7QUFBUSxJQURWLFdBQVcsQ0FBQyxLQUFjO0FBQUk7QUFDYixjQUFULEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSTtBQUM1QjtBQUF5QixjQUFmLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUM7QUFDbEM7QUFBeUIsY0FBZixJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUc7QUFDMUI7QUFDRyxjQURPLFNBQVMsR0FDWCxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDLEdBQUcsYUFBYSxHQUFHLENBQUM7QUFDbkg7QUFDd0IsY0FBZCxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRztBQUFFO0FBQXlCLGNBQXpCLE1BQU0sR0FBRyxHQUFHLEdBQUcsZUFBZTtBQUNqRjtBQUF5QixjQUFmLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFBRTtBQUF5QixjQUF6QixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFBRTtBQUF5QixjQUF6QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQzdHO0FBQXlCLGNBQWYsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO0FBQUU7QUFBeUIsY0FBekIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUFFO0FBQXlCLGNBQXpCLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztBQUM1RjtBQUF5QixjQUFmLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7QUFDMUM7QUFBeUIsWUFBakIsSUFBSSxHQUFHLFVBQVUsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLE1BQU07QUFDaEUsUUFBSSxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDdkMsWUFBTSxJQUFJLEVBQUUsQ0FBQztBQUNiLFNBQUs7QUFDTDtBQUN3QixjQUFkLFVBQVUsR0FBRyxlQUFlLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDckgsWUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDcEM7QUFDd0IsY0FBZCxPQUFPLEdBQUcsR0FBRyxHQUFHLFVBQVU7QUFDcEM7QUFDd0IsY0FBZCxHQUFHLEdBQUcsZUFBZSxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNsSCxZQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkg7QUFDd0IsY0FBZCxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3JGO0FBQ3dCLGNBQWQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDcEU7QUFBeUIsY0FBZixJQUFJLEdBQUcsZUFBZSxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNuSCxZQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNwQyxZQUFRLElBQUksQ0FBQyxLQUFLLENBQ04sQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNySCxnQkFBWSxDQUFDLENBQUM7QUFDZDtBQUN3QixjQUFkLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDOUIsUUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLEtBQUc7QUFDSDtBQUVDO0FBQ0U7QUFDRTtBQUVKO0FBQXdCO0FBQXVCO0FBQ3RDO0FBQVEsSUFEaEIsZUFBZSxDQUFDLEtBQWEsRUFBRSxJQUFZO0FBQUksUUFDN0MsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN6QyxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DO0FBQXlCLFlBQWpCLE1BQU0sR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUM7QUFDL0IsUUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakQsWUFBTSxNQUFNLEVBQUUsQ0FBQztBQUNmLFNBQUs7QUFDTCxRQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLEtBQUc7QUFDSDttREEvRUMsVUFBVTs7Ozs7MEJBQ1Q7QUFBQztBQUFDO0FBQUk7QUFBa0M7QUFFSjtBQ3ZEdEM7QUFBSTtBQUNTO0FBR1g7QUFFeUI7QUFDOEI7QUFBYTtBQUFJLE1BSXBFLG9CQUFvQixHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0FBQWlCLE1BQVgsbUJBQW1CLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7QUFBaUIsTUFBWCxXQUFXLEdBQUcsSUFBSTtBQUN4QjtBQUFpQixNQUFYLFNBQVMsR0FBRyxJQUFJO0FBQ3RCO0FBQWlCLE1BQVgsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDbkM7QUFDZ0IsTUFBVixZQUFZLEdBQUc7QUFDckI7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElBQUEsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWM7QUFDaEY7QUFDRSxJQUFBLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjO0FBQ2hGO0FBQ0UsSUFBQSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYztBQUNoRjtBQUNFLElB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QUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFDMUVBLEFBU0EsQUFBQSxBQUFBLEFBREEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFKQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDUkEsQUFvQkEsQUFBQSxBQUFBLEFBQUEsQUFnQ0EsQUFBQSxBQUFBLEFBUUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQURBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFUQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFqQkEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBVUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBVEEsQUFBQSxBQXNCQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFGQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBN0RBLEFBQUEsQUF3RUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXZFQSxBQUFBLEFBZ0ZBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUEvRUEsQUFBQSxBQXdGQSxBQUFBLEFBQUEsQUFEQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWtDQSxBQVRBLEFBQUEsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQS9DQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQU9BLEFBQUEsQUFTQSxBQUFBLEFBUUEsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQW1FQSxBQUFBLEFBQUEsQUFzQ0EsQUFBQSxBQUFBLEFBN0JBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFZQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBZUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUF4S0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBb0JBLEFBQ0EsQUF6TEEsQUFBQSxBQTJMQSxBQUFBLEFBQUEsQUFBQSxBQVFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQUEsQUFRQSxBQUFBLEFBT0EsQUFBQSxBQ2hQQSxBQWlCQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ3BCQSxBQVNBLEFBQUEsQUFBQSxBQURBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUpBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNSQSxBQW1DQSxBQUFBLEFBQUEsQUFxQkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBbERBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFNQSxBQUVBLEFBcEJBLEFBQUEsQUFSQSxBQUFBLEFBQ0EsQUFBQSxBQW9DQSxBQUFBLEFBT0EsQUFBQSxBQUlBLEFBQUEsQUN0REEsQUFTQSxBQUFBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBUkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNSQSxBQU9BLEFBQUEsQUFMQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQ05BLEFBS0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQXFCQSxBQUFBLEFBQUEsQUE0QkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBdEJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVNBLEFBUEEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBSUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBaEVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQTFCQSxBQUFBLEFBSEEsQUFBQSxBQW9DQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUM5Q0EsQUFLQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUFQLEFBQUEsQUFBQSxBQUFBLEFBU0EsQUFBQSxBQUFBLEFBREEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFjQSxBQUFBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQTZCQSxBQTNDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFlQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWhEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWlCQSxBQUFBLEFBa0RBLEFBQUEsQUFBQSxBQWtEQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBREEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFqREEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWtEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBdkNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWxGQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFvREEsQUFBQSxBQXRJQSxBQUFBLEFBSEEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBaUdBLEFBQUEsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQVdBLEFBQUEsQUFBQSxBQUFBLEFDakhBLEFBVUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBUkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDWkEsQUFTQSxBQUFBLEFBQUEsQUFEQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBUkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1JBLEFBMEJBQSxBQUFBLEFBQUEsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFEQSxBQUFBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBUkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWRBLEFBQUEsQUFxQkEsQUFBQSxBQTBDQSxBQUFBLEFBQUEsQUEwREEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBREEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBeERBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWtEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQXZNQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQWtCQSxBQUNBLEFBMURBLEFBQUEsQUFzSEEsQUFBQSxBQUFBLEFBQUEsQUFoSUEsQUFBQSxBQVBBLEFBQUEsQUE4RUEsQUFBQSxBQUFBLEFBQUEsQUFXQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUFLQSxBQUFBLEFBT0EsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBT0EsQUFBQSxBQTJJQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDdlJBLEFBU0EsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1JBLEFBVUEsQUFBQSxBQUFBLEFBTEEsQUFTQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFWQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQ2RBLEFBTUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDSkEsQUFpQkEsQUFBQSxBQUFBLEFBdUJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQ2pHQSxBQUlBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFJQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQVNBLEFBQUEsQUFBQSxBQURBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQStEQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFyRUEsQUFBQSxBQzFGQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBRUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUN0TkEsQUFJQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBZ0JBLEFBQUEsQUFBQSxBQWtDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBakRBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXFEQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBREEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBekJBLEFBQUEsQUFNQSxBQUFBLEFBQUEsQUFBQSxBQy9FQSxBQXdCQSxBQUFBLEFBdUZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXRGQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBc0VBLEFBcEVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUlBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFuUkEsQUFBQSxBQXZCQSxBQUFBLEFBcUJBLEFBQUEsQUNwQkEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFDWkEsQUFPQSxBQUFBLEFBTUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBdERBLEFBQUEsQUFMQSxBQUFBLEFBQ0EsQUFBQSxBQ3VEQSxBQUFBLEFBQ0EsQUFBQSxBQzFEQSxBQVdBLEFBQUEsQUFBQSxBQURBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFJQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFmQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDVkEsQUFJQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQWVBLEFBQUEsQUFBQSxBQURBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWNBLEFBQUEsQUFBQSxBQUFBLEFBSUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFsQkEsQUFBQSxBQ2pDQSxBQW1DQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBa0ZBLEFBQUEsQUFBQSxBQThIQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUhBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBNUhBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBNEdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFVQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUlBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQXJVQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBNENBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQS9GQSxBQUFBLEFBREEsQUFBQSxBQUZBLEFBQUEsQUFTQSxBQUFBLEFBSEEsQUFBQSxBQXZCQSxBQUFBLEFBRUEsQUFBQSxBQXNCQSxBQUFBLEFBbEJBLEFBQUEsQUFrSEEsQUFBQSxBQUFBLEFBQUEsQUFXQSxBQUFBLEFBVUEsQUFBQSxBQUtBLEFBQUEsQUFPQSxBQUFBLEFBT0EsQUFBQSxBQVNBLEFBQUEsQUFPQSxBQUFBLEFBT0EsQUFBQSxBQVNBLEFBQUEsQUFXQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUFVQSxBQUFBLEFBT0EsQUFBQSxBQU9BLEFBQUEsQUNsUEEsQUFtQ0EsQUFBQSxBQVFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFGQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQTNDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFzQkEsQUFDQSxBQS9CQSxBQUFBLEFBaUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFFQSxBQUFBLEFDekNBLEFBMENBLEFBQUEsQUFjQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBYkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUlBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFNQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFuREEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUE4QkEsQUFDQSxBQXRDQSxBQUFBLEFBMENBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQ3JEQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFDOURBLEFBTUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFhQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFDL0RBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUNBLEFBSUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFZQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUN4UEEsQUFJQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQWtCQSxBQUFBLEFBQUEsQUFEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFvQkEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFwQkEsQUFBQSxBQzFDQSxBQW1DQUMsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFrQkEsQUFBQSxBQUFBLEFBZ01BLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFKQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQW5NQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFnR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUE2Q0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBY0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBeEJBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQWdCQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUtBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBS0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFVQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQWxhQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBOUJBLEFBQUEsQUEzQkEsQUFBQSxBQVlBLEFBQUEsQUFIQSxBQUFBLEFBWkEsQUFBQSxBQVFBLEFBQUEsQUFtQkEsQUFBQSxBQUNBLEFBQUEsQUFKQSxBQUFBLEFBeU9BLEFBQUEsQUFBQSxBQUFBLEFBbFFBLEFBQUEsQUFnRkEsQUFBQSxBQVNBLEFBQUEsQUFVQSxBQUFBLEFBS0EsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBU0EsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBU0EsQUFBQSxBQVdBLEFBQUEsQUFlQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUFVQSxBQUFBLEFBT0EsQUFBQSxBQVNBLEFBQUEsQUFTQSxBQUFBLEFBT0EsQUFBQSxBQU9BLEFBQUEsQUFFQSxBQUFBLEFDOU9BLEFBbUJBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXhCQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQWhCQSxBQUFBLEFBa0JBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFDeEJBLEFBK0JBLEFBQUEsQUFRQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXRDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQW1CQSxBQUNBLEFBM0JBLEFBQUEsQUE2QkEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUVBLEFBQUEsQUNyQ0EsQUFNQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBbUJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBNUdBLEFBQUEsQUNMQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFNQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQVdBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQTlFQSxBQUFBLEFDcERBLEFBV0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBSUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBTUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQXRFQSxBQUFBLEFDbkpBLEFBTUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBQyxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBZUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBSUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUFBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQVlBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFTQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFVQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQVNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQ2xPQSxBQVFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBekRBLEFBQUEsQUNQQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQUMsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBQyxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFNQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQU1BLEFBQUFDLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQUYsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBQyxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFNQSxBQUFBRSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQUYsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUN0U0EsQUFrQkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBRSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUFELEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUFDLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUFELEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBaEVBLEFBQUEsQUNqQkEsQUFNQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBbEJBLEFBQUEsQUNkQSxBQVVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFJQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQTFCQSxBQUFBLEFDVEEsQUFVQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFYQSxBQUFBLEFDVEEsQUF3Q0EsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWhCQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUN2Q0EsQUFVQSxBQUFBLEFBQUEsQUFEQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBTEEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1RBLEFBNkJBLEFBQUEsQUFEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBV0EsQUFBQSxBQUFBLEFBVUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVRBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFTQSxBQVBBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVRBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFqQ0EsQUFBQSxBQXFDQSxBQUFBLEFBMkJBLEFBQUEsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFMQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUlBLEFBcEJBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFrQkEsQUFBQSxBQUFBLEFBR0EsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQURBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBYkEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUExRkEsQUFBQSxBQXFIQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQWpCQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUF0SEEsQUFBQSxBQStIQSxBQUFBLEFBQUEsQUFnRUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFqRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFzQkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXVDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUtBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBS0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBTUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBeFNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFsSUEsQUFBQSxBQXlCQSxBQUFBLEFBMktBLEFBQUEsQUFBQSxBQUFBLEFBM0xBLEFBQUEsQUFMQSxBQUFBLEFBVUEsQUFBQSxBQXdMQSxBQUFBLEFBQUEsQUFBQSxBQTlEQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFVQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFlQSxBQUFBLEFBUUEsQUFBQSxBQU9BLEFBQUEsQUFTQSxBQUFBLEFDbE1BLEFBYUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFSQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNoQkEsQUF5RkEsQUFBQSxBQUFBLEFBREEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBSkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ3hGQSxBQVdBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFJQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQzNEQSxBQUlBLEFBQUEsQUFBQSxBQUFBLEFBZ0JBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBT0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFPQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBbkRBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQ3JCQSxBQVFBLEFBQUEsQUFOQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFDSUEsQUFBQSxBQUFBLEFBTUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUtBLEFBQUEsQUFBQSxBQW9CQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFyQkEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQXdCQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUM3SEEsQUFBQSxBQUNBLEFBQUEsQUNGQSxBQWlDQSxBQUFBLEFBYUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBUkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFJQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUF0RUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBSUEsQUFDQSxBQWNBLEFBQUEsQUFBQSxBQUFBLEFBMUNBLEFBQUEsQUFpQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUM1Q0EsQUFzQkEsQUFBQSxBQVFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVRBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUEvTEEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQW5CQSxBQUFBLEFBS0EsQUFBQSxBQXdCQSxBQUFBLEFBQUEsQUFBQSxBQWhCQSxBQUFBLEFBUEEsQUFBQSxBQ1JBLEFBYUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBREEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBV0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWhDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBWkEsQUFBQSxBQUFBLEFBQUEsQUFJQSxBQUFBLEFBRkEsQUFBQSxBQ0ZBLEFBZ0JBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFaQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFDZkEsQUFTQSxBQUFBLEFBQUEsQUFEQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQVZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNSQSxBQTJEQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFGQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBaERBLEFBQUEsQUEyREEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQTFEQSxBQUFBLEFBcUVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFwRUEsQUFBQSxBQStFQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFGQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBOUVBLEFBQUEsQUF5RkEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXhGQSxBQUFBLEFBbUdBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFsR0EsQUFBQSxBQXVLQSxBQUFBLEFBQUEsQUFnRkEsQUFBQSxBQUFBLEFBL0VBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBdURBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFjQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFVQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBVUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUE1UUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBdURBLEFBQ0EsQUFuS0EsQUFBQSxBQXdLQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFLQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUFLQSxBQUFBLEFBT0EsQUFBQSxBQVNBLEFBQUEsQUFLQSxBQUFBLEFBT0EsQUFBQSxBQUtBLEFBQUEsQUFTQSxBQUFBLEFBT0EsQUFBQSxBQy9QQSxBQXdCQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFSQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUM3QkEsQUFHQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFDL0dBLEFBVUEsQUFBQSxBQUFBLEFBREEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQVZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNUQSxBQWlDQUwsQUFBQSxBQUFBLEFBQUEsQUFnQkEsQUFBQSxBQUFBLEFBTUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXBCQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBTUEsQUFFQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFTQSxBQUFBLEFBQUEsQUErR0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBSEEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBMUJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQW9CQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQWpDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBaUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFPQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFPQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUF0T0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBL0NBLEFBQUEsQUFGQSxBQUFBLEFBREEsQUFBQSxBQU1BLEFBQUEsQUFEQSxBQUFBLEFBZUEsQUFBQSxBQWJBLEFBQUEsQUE4SkEsQUFBQSxBQUFBLEFBQUEsQUEzSkEsQUFBQSxBQUNBLEFBQUEsQUFvREEsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBZUEsQUFBQSxBQVFBLEFBQUEsQUFPQSxBQUFBLEFBT0EsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBT0EsQUFBQSxBQUtBLEFBQUEsQUFLQSxBQUFBLEFDNUpBLEFBZUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWJBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQ2RBLEFBU0EsQUFBQSxBQUFBLEFBREEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFSQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDUkEsQUFvQkEsQUFBQSxBQUFBLEFBNENBLEFBQUEsQUFBQSxBQVRBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFVQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFwRUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFRQSxBQUNBLEFBakJBLEFBQUEsQUFzQkEsQUFBQSxBQU9BLEFBQUEsQUFLQSxBQUFBLEFBS0EsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBT0EsQUFBQSxBQzlEQSxBQVNBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFSQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1JBLEFBU0EsQUFBQSxBQUFBLEFBREEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUxBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNSQSxBQWtDQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBaUNBLEFBQUEsQUFBQSxBQTJEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXpEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBMUxBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBU0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQXhEQSxBQUFBLEFBRkEsQUFBQSxBQXFFQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUFLQSxBQUFBLEFBT0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBT0EsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFDN0hBLEFBU0EsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDUkEsQUFTQSxBQUFBLEFBQUEsQUFEQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBTEEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1JBLEFBYUFBLEFBQUEsQUFBQSxBQUFBLEFBUUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWRBLEFBQUEsQUF1QkEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQXRCQSxBQUFBLEFBK0JBLEFBQUEsQUFBQSxBQURBLEFBT0EsQUFBQSxBQUFBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFZQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBZ0JBLEFBUkEsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFsQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUE4REEsQUFBQSxBQUFBLEFBa0RBLEFBQUEsQUFBQSxBQW5DQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBaUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFsQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFtQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBaEhBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFzQkEsQUFDQSxBQS9HQSxBQUFBLEFBbUhBLEFBQUEsQUFBQSxBQUFBLEFBT0EsQUFBQSxBQUtBLEFBQUEsQUFLQSxBQUFBLEFBWUEsQUFBQSxBQVNBLEFBQUEsQUFPQSxBQUFBLEFDM0tBLEFBUUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBT0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBUkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDVkEsQUFFQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUNsREEsQUFTQSxBQUFBLEFBQUEsQUFEQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBWEEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1JBLEFBSUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFnQkEsQUFBQSxBQUFBLEFBREEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBY0EsQUFBQSxBQUFBLEFBQUEsQUFJQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUtBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBbEJBLEFBQUEsQUNsQ0EsQUFnQkEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQXdGQSxBQUFBLEFBQUEsQUFnRUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFEQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFZQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFaQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQWpEQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUtBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBS0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUE2QkEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQWhRQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQTRFQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBOUZBLEFBQUEsQUFDQSxBQUFBLEFBYkEsQUFBQSxBQXVIQSxBQUFBLEFBS0EsQUFBQSxBQUtBLEFBQUEsQUFLQSxBQUFBLEFBVUEsQUFBQSxBQVVBLEFBQUEsQUFVQSxBQUFBLEFBS0EsQUFBQSxBQzFLQSxBQVdBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFSQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1ZBLEFBVUEsQUFBQSxBQUFBLEFBREEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQVZBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNUQSxBQStCQUEsQUFBQSxBQUFBLEFBQUEsQUFVQSxBQUFBLEFBQUEsQUFSQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBT0EsQUFBQSxBQUFBLEFBd0ZBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUhBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWpCQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUlBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFXQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQU9BLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFPQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBT0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUF0TkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBcENBLEFBQUEsQUFGQSxBQUFBLEFBREEsQUFBQSxBQU1BLEFBQUEsQUFEQSxBQUFBLEFBY0EsQUFBQSxBQVpBLEFBQUEsQUE0SEEsQUFBQSxBQUFBLEFBQUEsQUExSEEsQUFBQSxBQUNBLEFBQUEsQUEwQ0EsQUFBQSxBQWVBLEFBQUEsQUFRQSxBQUFBLEFBT0EsQUFBQSxBQU9BLEFBQUEsQUFPQSxBQUFBLEFBT0EsQUFBQSxBQU9BLEFBQUEsQUFLQSxBQUFBLEFBSUEsQUFBQSxBQXVDQSxBQUFBLEFDeEtBLEFBU0EsQUFBQSxBQU1BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVBBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQ1JBLEFBb0JBLEFBQUEsQUFBQSxBQVRBLEFBZUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWlDQSxBQWpCQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUEvQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBRUEsQUFPQSxBQUFBLEFBUUEsQUFBQSxBQU1BLEFBQUEsQUN4Q0EsQUF1Q0EsQUFBQSxBQXBCQSxBQXFCQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBV0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWdCQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBVUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQTJDQSxBQXpDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUF0R0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFjQSxBQUNBLEFBUUEsQUFBQSxBQUtBLEFBQUEsQUFLQSxBQUFBLEFBS0EsQUFBQSxBQU1BLEFBQUEsQUFLQSxBQUFBLEFBS0EsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQy9FQSxBQVFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBTyxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUF0QkEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUNyQ0EsQUFVQSxBQUFBLEFBQUEsQUFEQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFQQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFDVEEsQUFvQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQWlCQSxBQUFBLEFBQUEsQUFBQSxBQXdCQSxBQUFBLEFBQUEsQUE2R0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFIQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUE3R0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFjQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBNEVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUdBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFPQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBS0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFHQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFFQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBRUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFLQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUVBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBR0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFFQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQTlWQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFDQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQTNFQSxBQUFBLEFBWUEsQUFBQSxBQUZBLEFBQUEsQUFOQSxBQUFBLEFBUEEsQUFBQSxBQThCQSxBQUFBLEFBckJBLEFBQUEsQUFjQSxBQUFBLEFBd0tBLEFBQUEsQUFBQSxBQUFBLEFBdExBLEFBQUEsQUFWQSxBQUFBLEFBaUJBLEFBQUEsQUFpRkEsQUFBQSxBQU9BLEFBQUEsQUFLQSxBQUFBLEFBS0EsQUFBQSxBQVFBLEFBQUEsQUFhQSxBQUFBLEFBU0EsQUFBQSxBQVNBLEFBQUEsQUFLQSxBQUFBLEFBZUEsQUFBQSxBQU9BLEFBQUEsQUN0TEEsQUFrQkEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQWJBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQ0EsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFDakJBLEFBb0hBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUNBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFDQSxBQUdBLEFBQUEsQUFBQSxBQU9BLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQVJBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSxBQUFBLEFBQUEsQUFBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0b0ludGVnZXIodmFsdWU6IGFueSk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludChgJHt2YWx1ZX1gLCAxMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSA/IGAke3ZhbHVlfWAgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlSW5SYW5nZSh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlciwgbWluID0gMCk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSwgbWF4KSwgbWluKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gIWlzTmFOKHRvSW50ZWdlcih2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh2YWx1ZSkgJiYgTWF0aC5mbG9vcih2YWx1ZSkgPT09IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWROdW1iZXIodmFsdWU6IG51bWJlcikge1xuICBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIGAwJHt2YWx1ZX1gLnNsaWNlKC0yKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ0V4cEVzY2FwZSh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoL1stW1xcXXt9KCkqKz8uLFxcXFxeJHwjXFxzXS9nLCAnXFxcXCQmJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNDbGFzc05hbWUoZWxlbWVudDogYW55LCBjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTmFtZS5zcGxpdCAmJlxuICAgICAgZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoL1xccysvKS5pbmRleE9mKGNsYXNzTmFtZSkgPj0gMDtcbn1cblxuaWYgKHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiAhRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdCkge1xuICAvLyBQb2x5ZmlsbCBmb3IgaWUxMCtcblxuICBpZiAoIUVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMpIHtcbiAgICAvLyBJRSB1c2VzIHRoZSBub24tc3RhbmRhcmQgbmFtZTogbXNNYXRjaGVzU2VsZWN0b3JcbiAgICBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzID0gKEVsZW1lbnQucHJvdG90eXBlIGFzIGFueSkubXNNYXRjaGVzU2VsZWN0b3IgfHwgRWxlbWVudC5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yO1xuICB9XG5cbiAgRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdCA9IGZ1bmN0aW9uKHM6IHN0cmluZykge1xuICAgIGxldCBlbCA9IHRoaXM7XG4gICAgaWYgKCFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMoZWwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZG8ge1xuICAgICAgaWYgKGVsLm1hdGNoZXMocykpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50IHx8IGVsLnBhcmVudE5vZGU7XG4gICAgfSB3aGlsZSAoZWwgIT09IG51bGwgJiYgZWwubm9kZVR5cGUgPT09IDEpO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50OiBIVE1MRWxlbWVudCwgc2VsZWN0b3IpOiBIVE1MRWxlbWVudCB7XG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50LmNsb3Nlc3Qoc2VsZWN0b3IpO1xufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBIGNvbmZpZ3VyYXRpb24gc2VydmljZSBmb3IgdGhlIFtOZ2JBY2NvcmRpb25dKCMvY29tcG9uZW50cy9hY2NvcmRpb24vYXBpI05nYkFjY29yZGlvbikgY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSwgdHlwaWNhbGx5IGluIHlvdXIgcm9vdCBjb21wb25lbnQsIGFuZCBjdXN0b21pemUgaXRzIHByb3BlcnRpZXNcbiAqIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCBhY2NvcmRpb25zIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JBY2NvcmRpb25Db25maWcge1xuICBjbG9zZU90aGVycyA9IGZhbHNlO1xuICB0eXBlOiBzdHJpbmc7XG59XG4iLCJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3QsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7aXNTdHJpbmd9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbmltcG9ydCB7TmdiQWNjb3JkaW9uQ29uZmlnfSBmcm9tICcuL2FjY29yZGlvbi1jb25maWcnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgdGhlIFtOZ2JQYW5lbEhlYWRlcl0oIy9jb21wb25lbnRzL2FjY29yZGlvbi9hcGkjTmdiUGFuZWxIZWFkZXIpIHRlbXBsYXRlXG4gKlxuICogQHNpbmNlIDQuMS4wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdiUGFuZWxIZWFkZXJDb250ZXh0IHtcbiAgLyoqXG4gICAqIGBUcnVlYCBpZiBjdXJyZW50IHBhbmVsIGlzIG9wZW5lZFxuICAgKi9cbiAgb3BlbmVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIHB1dCBvbiBhIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgcGFuZWwgb3BlbmluZyBhbmQgY2xvc2luZy5cbiAqXG4gKiBUbyBiZSB1c2VkIGluc2lkZSB0aGUgW2BOZ2JQYW5lbEhlYWRlcmBdKCMvY29tcG9uZW50cy9hY2NvcmRpb24vYXBpI05nYlBhbmVsSGVhZGVyKVxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdidXR0b25bbmdiUGFuZWxUb2dnbGVdJyxcbiAgaG9zdDoge1xuICAgICd0eXBlJzogJ2J1dHRvbicsXG4gICAgJ1tkaXNhYmxlZF0nOiAncGFuZWwuZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuY29sbGFwc2VkXSc6ICchcGFuZWwuaXNPcGVuJyxcbiAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAncGFuZWwuaXNPcGVuJyxcbiAgICAnW2F0dHIuYXJpYS1jb250cm9sc10nOiAncGFuZWwuaWQnLFxuICAgICcoY2xpY2spJzogJ2FjY29yZGlvbi50b2dnbGUocGFuZWwuaWQpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE5nYlBhbmVsVG9nZ2xlIHtcbiAgQElucHV0KClcbiAgc2V0IG5nYlBhbmVsVG9nZ2xlKHBhbmVsOiBOZ2JQYW5lbCkge1xuICAgIGlmIChwYW5lbCkge1xuICAgICAgdGhpcy5wYW5lbCA9IHBhbmVsO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYkFjY29yZGlvbikpIHB1YmxpYyBhY2NvcmRpb246IE5nYkFjY29yZGlvbixcbiAgICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYlBhbmVsKSkgcHVibGljIHBhbmVsOiBOZ2JQYW5lbCkge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHdyYXBzIGFuIGFjY29yZGlvbiBwYW5lbCBoZWFkZXIgd2l0aCBhbnkgSFRNTCBtYXJrdXAgYW5kIGEgdG9nZ2xpbmcgYnV0dG9uXG4gKiBtYXJrZWQgd2l0aCBbYE5nYlBhbmVsVG9nZ2xlYF0oIy9jb21wb25lbnRzL2FjY29yZGlvbi9hcGkjTmdiUGFuZWxUb2dnbGUpLlxuICogU2VlIHRoZSBbaGVhZGVyIGN1c3RvbWl6YXRpb24gZGVtb10oIy9jb21wb25lbnRzL2FjY29yZGlvbi9leGFtcGxlcyNoZWFkZXIpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IGNhbiBhbHNvIHVzZSBbYE5nYlBhbmVsVGl0bGVgXSgjL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FwaSNOZ2JQYW5lbFRpdGxlKSB0byBjdXN0b21pemUgb25seSB0aGUgcGFuZWwgdGl0bGUuXG4gKlxuICogQHNpbmNlIDQuMS4wXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiUGFuZWxIZWFkZXJdJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFuZWxIZWFkZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCB3cmFwcyBvbmx5IHRoZSBwYW5lbCB0aXRsZSB3aXRoIEhUTUwgbWFya3VwIGluc2lkZS5cbiAqXG4gKiBZb3UgY2FuIGFsc28gdXNlIFtgTmdiUGFuZWxIZWFkZXJgXSgjL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FwaSNOZ2JQYW5lbEhlYWRlcikgdG8gY3VzdG9taXplIHRoZSBmdWxsIHBhbmVsIGhlYWRlci5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYW5lbFRpdGxlXSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhbmVsVGl0bGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCB3cmFwcyB0aGUgYWNjb3JkaW9uIHBhbmVsIGNvbnRlbnQuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiUGFuZWxDb250ZW50XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhbmVsQ29udGVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHdyYXBzIGFuIGluZGl2aWR1YWwgYWNjb3JkaW9uIHBhbmVsIHdpdGggdGl0bGUgYW5kIGNvbGxhcHNpYmxlIGNvbnRlbnQuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmdiLXBhbmVsJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFuZWwgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgLyoqXG4gICAqICBJZiBgdHJ1ZWAsIHRoZSBwYW5lbCBpcyBkaXNhYmxlZCBhbiBjYW4ndCBiZSB0b2dnbGVkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEFuIG9wdGlvbmFsIGlkIGZvciB0aGUgcGFuZWwgdGhhdCBtdXN0IGJlIHVuaXF1ZSBvbiB0aGUgcGFnZS5cbiAgICpcbiAgICogIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZCBpbiB0aGUgYG5nYi1wYW5lbC14eHhgIGZvcm1hdC5cbiAgICovXG4gIEBJbnB1dCgpIGlkID0gYG5nYi1wYW5lbC0ke25leHRJZCsrfWA7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBUaGUgcGFuZWwgdGl0bGUuXG4gICAqXG4gICAqICBZb3UgY2FuIGFsdGVybmF0aXZlbHkgdXNlIFtgTmdiUGFuZWxUaXRsZWBdKCMvY29tcG9uZW50cy9hY2NvcmRpb24vYXBpI05nYlBhbmVsVGl0bGUpIHRvIHNldCBwYW5lbCB0aXRsZS5cbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGN1cnJlbnQgcGFuZWwuXG4gICAqXG4gICAqIEJvb3RzdHJhcCBwcm92aWRlcyBzdHlsZXMgZm9yIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGAnc3VjY2VzcydgLCBgJ2luZm8nYCwgYCd3YXJuaW5nJ2AsIGAnZGFuZ2VyJ2AsIGAncHJpbWFyeSdgLFxuICAgKiBgJ3NlY29uZGFyeSdgLCBgJ2xpZ2h0J2AgYW5kIGAnZGFyaydgLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gIHRpdGxlVHBsOiBOZ2JQYW5lbFRpdGxlIHwgbnVsbDtcbiAgaGVhZGVyVHBsOiBOZ2JQYW5lbEhlYWRlciB8IG51bGw7XG4gIGNvbnRlbnRUcGw6IE5nYlBhbmVsQ29udGVudCB8IG51bGw7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JQYW5lbFRpdGxlLCB7ZGVzY2VuZGFudHM6IGZhbHNlfSkgdGl0bGVUcGxzOiBRdWVyeUxpc3Q8TmdiUGFuZWxUaXRsZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTmdiUGFuZWxIZWFkZXIsIHtkZXNjZW5kYW50czogZmFsc2V9KSBoZWFkZXJUcGxzOiBRdWVyeUxpc3Q8TmdiUGFuZWxIZWFkZXI+O1xuICBAQ29udGVudENoaWxkcmVuKE5nYlBhbmVsQ29udGVudCwge2Rlc2NlbmRhbnRzOiBmYWxzZX0pIGNvbnRlbnRUcGxzOiBRdWVyeUxpc3Q8TmdiUGFuZWxDb250ZW50PjtcblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgLy8gV2UgYXJlIHVzaW5nIEBDb250ZW50Q2hpbGRyZW4gaW5zdGVhZCBvZiBAQ29udGVudENoaWxkIGFzIGluIHRoZSBBbmd1bGFyIHZlcnNpb24gYmVpbmcgdXNlZFxuICAgIC8vIG9ubHkgQENvbnRlbnRDaGlsZHJlbiBhbGxvd3MgdXMgdG8gc3BlY2lmeSB0aGUge2Rlc2NlbmRhbnRzOiBmYWxzZX0gb3B0aW9uLlxuICAgIC8vIFdpdGhvdXQge2Rlc2NlbmRhbnRzOiBmYWxzZX0gd2UgYXJlIGhpdHRpbmcgYnVncyBkZXNjcmliZWQgaW46XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvaXNzdWVzLzIyNDBcbiAgICB0aGlzLnRpdGxlVHBsID0gdGhpcy50aXRsZVRwbHMuZmlyc3Q7XG4gICAgdGhpcy5oZWFkZXJUcGwgPSB0aGlzLmhlYWRlclRwbHMuZmlyc3Q7XG4gICAgdGhpcy5jb250ZW50VHBsID0gdGhpcy5jb250ZW50VHBscy5maXJzdDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IGVtaXR0ZWQgcmlnaHQgYmVmb3JlIHRvZ2dsaW5nIGFuIGFjY29yZGlvbiBwYW5lbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JQYW5lbENoYW5nZUV2ZW50IHtcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgYWNjb3JkaW9uIHBhbmVsIHRoYXQgaXMgYmVpbmcgdG9nZ2xlZC5cbiAgICovXG4gIHBhbmVsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5leHQgc3RhdGUgb2YgdGhlIHBhbmVsLlxuICAgKlxuICAgKiBgdHJ1ZWAgaWYgaXQgd2lsbCBiZSBvcGVuZWQsIGBmYWxzZWAgaWYgY2xvc2VkLlxuICAgKi9cbiAgbmV4dFN0YXRlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBwcmV2ZW50IHBhbmVsIHRvZ2dsaW5nLlxuICAgKi9cbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQWNjb3JkaW9uIGlzIGEgY29sbGVjdGlvbiBvZiBjb2xsYXBzaWJsZSBwYW5lbHMgKGJvb3RzdHJhcCBjYXJkcykuXG4gKlxuICogSXQgY2FuIGVuc3VyZSBvbmx5IG9uZSBwYW5lbCBpcyBvcGVuZWQgYXQgYSB0aW1lIGFuZCBhbGxvd3MgdG8gY3VzdG9taXplIHBhbmVsXG4gKiBoZWFkZXJzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItYWNjb3JkaW9uJyxcbiAgZXhwb3J0QXM6ICduZ2JBY2NvcmRpb24nLFxuICBob3N0OiB7J2NsYXNzJzogJ2FjY29yZGlvbicsICdyb2xlJzogJ3RhYmxpc3QnLCAnW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdJzogJyFjbG9zZU90aGVyUGFuZWxzJ30sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICN0IG5nYlBhbmVsSGVhZGVyIGxldC1wYW5lbD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbbmdiUGFuZWxUb2dnbGVdPVwicGFuZWxcIj5cbiAgICAgICAge3twYW5lbC50aXRsZX19PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhbmVsLnRpdGxlVHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtcGFuZWwgW25nRm9yT2ZdPVwicGFuZWxzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICA8ZGl2IHJvbGU9XCJ0YWJcIiBpZD1cInt7cGFuZWwuaWR9fS1oZWFkZXJcIiBbY2xhc3NdPVwiJ2NhcmQtaGVhZGVyICcgKyAocGFuZWwudHlwZSA/ICdiZy0nK3BhbmVsLnR5cGU6IHR5cGUgPyAnYmctJyt0eXBlIDogJycpXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhbmVsLmhlYWRlclRwbD8udGVtcGxhdGVSZWYgfHwgdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBwYW5lbCwgb3BlbmVkOiBwYW5lbC5pc09wZW59XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJ7e3BhbmVsLmlkfX1cIiByb2xlPVwidGFicGFuZWxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwicGFuZWwuaWQgKyAnLWhlYWRlcidcIlxuICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIiBbY2xhc3Muc2hvd109XCJwYW5lbC5pc09wZW5cIiAqbmdJZj1cIiFkZXN0cm95T25IaWRlIHx8IHBhbmVsLmlzT3BlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwYW5lbC5jb250ZW50VHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2JBY2NvcmRpb24gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JQYW5lbCkgcGFuZWxzOiBRdWVyeUxpc3Q8TmdiUGFuZWw+O1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvciBjb21tYSBzZXBhcmF0ZWQgc3RyaW5ncyBvZiBwYW5lbCBpZHMgdGhhdCBzaG91bGQgYmUgb3BlbmVkICoqaW5pdGlhbGx5KiouXG4gICAqXG4gICAqIEZvciBzdWJzZXF1ZW50IGNoYW5nZXMgdXNlIG1ldGhvZHMgbGlrZSBgZXhwYW5kKClgLCBgY29sbGFwc2UoKWAsIGV0Yy4gYW5kXG4gICAqIHRoZSBgKHBhbmVsQ2hhbmdlKWAgZXZlbnQuXG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmVJZHM6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqICBJZiBgdHJ1ZWAsIG9ubHkgb25lIHBhbmVsIGNvdWxkIGJlIG9wZW5lZCBhdCBhIHRpbWUuXG4gICAqXG4gICAqICBPcGVuaW5nIGEgbmV3IHBhbmVsIHdpbGwgY2xvc2Ugb3RoZXJzLlxuICAgKi9cbiAgQElucHV0KCdjbG9zZU90aGVycycpIGNsb3NlT3RoZXJQYW5lbHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgcGFuZWwgY29udGVudCB3aWxsIGJlIGRldGFjaGVkIGZyb20gRE9NIGFuZCBub3Qgc2ltcGx5IGhpZGRlbiB3aGVuIHRoZSBwYW5lbCBpcyBjb2xsYXBzZWQuXG4gICAqL1xuICBASW5wdXQoKSBkZXN0cm95T25IaWRlID0gdHJ1ZTtcblxuICAvKipcbiAgICogVHlwZSBvZiBwYW5lbHMuXG4gICAqXG4gICAqIEJvb3RzdHJhcCBwcm92aWRlcyBzdHlsZXMgZm9yIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGAnc3VjY2VzcydgLCBgJ2luZm8nYCwgYCd3YXJuaW5nJ2AsIGAnZGFuZ2VyJ2AsIGAncHJpbWFyeSdgLFxuICAgKiBgJ3NlY29uZGFyeSdgLCBgJ2xpZ2h0J2AgYW5kIGAnZGFyaydgLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHJpZ2h0IGJlZm9yZSB0aGUgcGFuZWwgdG9nZ2xlIGhhcHBlbnMuXG4gICAqXG4gICAqIFNlZSBbTmdiUGFuZWxDaGFuZ2VFdmVudF0oIy9jb21wb25lbnRzL2FjY29yZGlvbi9hcGkjTmdiUGFuZWxDaGFuZ2VFdmVudCkgZm9yIHBheWxvYWQgZGV0YWlscy5cbiAgICovXG4gIEBPdXRwdXQoKSBwYW5lbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmdiUGFuZWxDaGFuZ2VFdmVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IE5nYkFjY29yZGlvbkNvbmZpZykge1xuICAgIHRoaXMudHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuY2xvc2VPdGhlclBhbmVscyA9IGNvbmZpZy5jbG9zZU90aGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYW5lbCB3aXRoIGEgZ2l2ZW4gaWQgaXMgZXhwYW5kZWQuXG4gICAqL1xuICBpc0V4cGFuZGVkKHBhbmVsSWQ6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5hY3RpdmVJZHMuaW5kZXhPZihwYW5lbElkKSA+IC0xOyB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZHMgYSBwYW5lbCB3aXRoIGEgZ2l2ZW4gaWQuXG4gICAqXG4gICAqIEhhcyBubyBlZmZlY3QgaWYgdGhlIHBhbmVsIGlzIGFscmVhZHkgZXhwYW5kZWQgb3IgZGlzYWJsZWQuXG4gICAqL1xuICBleHBhbmQocGFuZWxJZDogc3RyaW5nKTogdm9pZCB7IHRoaXMuX2NoYW5nZU9wZW5TdGF0ZSh0aGlzLl9maW5kUGFuZWxCeUlkKHBhbmVsSWQpLCB0cnVlKTsgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmRzIGFsbCBwYW5lbHMsIGlmIGBbY2xvc2VPdGhlcnNdYCBpcyBgZmFsc2VgLlxuICAgKlxuICAgKiBJZiBgW2Nsb3NlT3RoZXJzXWAgaXMgYHRydWVgLCBpdCB3aWxsIGV4cGFuZCB0aGUgZmlyc3QgcGFuZWwsIHVubGVzcyB0aGVyZSBpcyBhbHJlYWR5IGEgcGFuZWwgb3BlbmVkLlxuICAgKi9cbiAgZXhwYW5kQWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlT3RoZXJQYW5lbHMpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUlkcy5sZW5ndGggPT09IDAgJiYgdGhpcy5wYW5lbHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuX2NoYW5nZU9wZW5TdGF0ZSh0aGlzLnBhbmVscy5maXJzdCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFuZWxzLmZvckVhY2gocGFuZWwgPT4gdGhpcy5fY2hhbmdlT3BlblN0YXRlKHBhbmVsLCB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlcyBhIHBhbmVsIHdpdGggdGhlIGdpdmVuIGlkLlxuICAgKlxuICAgKiBIYXMgbm8gZWZmZWN0IGlmIHRoZSBwYW5lbCBpcyBhbHJlYWR5IGNvbGxhcHNlZCBvciBkaXNhYmxlZC5cbiAgICovXG4gIGNvbGxhcHNlKHBhbmVsSWQ6IHN0cmluZykgeyB0aGlzLl9jaGFuZ2VPcGVuU3RhdGUodGhpcy5fZmluZFBhbmVsQnlJZChwYW5lbElkKSwgZmFsc2UpOyB9XG5cbiAgLyoqXG4gICAqIENvbGxhcHNlcyBhbGwgb3BlbmVkIHBhbmVscy5cbiAgICovXG4gIGNvbGxhcHNlQWxsKCkge1xuICAgIHRoaXMucGFuZWxzLmZvckVhY2goKHBhbmVsKSA9PiB7IHRoaXMuX2NoYW5nZU9wZW5TdGF0ZShwYW5lbCwgZmFsc2UpOyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGEgcGFuZWwgd2l0aCB0aGUgZ2l2ZW4gaWQuXG4gICAqXG4gICAqIEhhcyBubyBlZmZlY3QgaWYgdGhlIHBhbmVsIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgdG9nZ2xlKHBhbmVsSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5fZmluZFBhbmVsQnlJZChwYW5lbElkKTtcbiAgICBpZiAocGFuZWwpIHtcbiAgICAgIHRoaXMuX2NoYW5nZU9wZW5TdGF0ZShwYW5lbCwgIXBhbmVsLmlzT3Blbik7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIC8vIGFjdGl2ZSBpZCB1cGRhdGVzXG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuYWN0aXZlSWRzKSkge1xuICAgICAgdGhpcy5hY3RpdmVJZHMgPSB0aGlzLmFjdGl2ZUlkcy5zcGxpdCgvXFxzKixcXHMqLyk7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHBhbmVscyBvcGVuIHN0YXRlc1xuICAgIHRoaXMucGFuZWxzLmZvckVhY2gocGFuZWwgPT4gcGFuZWwuaXNPcGVuID0gIXBhbmVsLmRpc2FibGVkICYmIHRoaXMuYWN0aXZlSWRzLmluZGV4T2YocGFuZWwuaWQpID4gLTEpO1xuXG4gICAgLy8gY2xvc2VPdGhlcnMgdXBkYXRlc1xuICAgIGlmICh0aGlzLmFjdGl2ZUlkcy5sZW5ndGggPiAxICYmIHRoaXMuY2xvc2VPdGhlclBhbmVscykge1xuICAgICAgdGhpcy5fY2xvc2VPdGhlcnModGhpcy5hY3RpdmVJZHNbMF0pO1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aXZlSWRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hhbmdlT3BlblN0YXRlKHBhbmVsOiBOZ2JQYW5lbCwgbmV4dFN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKHBhbmVsICYmICFwYW5lbC5kaXNhYmxlZCAmJiBwYW5lbC5pc09wZW4gIT09IG5leHRTdGF0ZSkge1xuICAgICAgbGV0IGRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy5wYW5lbENoYW5nZS5lbWl0KFxuICAgICAgICAgIHtwYW5lbElkOiBwYW5lbC5pZCwgbmV4dFN0YXRlOiBuZXh0U3RhdGUsIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7IGRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOyB9fSk7XG5cbiAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICBwYW5lbC5pc09wZW4gPSBuZXh0U3RhdGU7XG5cbiAgICAgICAgaWYgKG5leHRTdGF0ZSAmJiB0aGlzLmNsb3NlT3RoZXJQYW5lbHMpIHtcbiAgICAgICAgICB0aGlzLl9jbG9zZU90aGVycyhwYW5lbC5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlQWN0aXZlSWRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPdGhlcnMocGFuZWxJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5wYW5lbHMuZm9yRWFjaChwYW5lbCA9PiB7XG4gICAgICBpZiAocGFuZWwuaWQgIT09IHBhbmVsSWQpIHtcbiAgICAgICAgcGFuZWwuaXNPcGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9maW5kUGFuZWxCeUlkKHBhbmVsSWQ6IHN0cmluZyk6IE5nYlBhbmVsIHwgbnVsbCB7IHJldHVybiB0aGlzLnBhbmVscy5maW5kKHAgPT4gcC5pZCA9PT0gcGFuZWxJZCk7IH1cblxuICBwcml2YXRlIF91cGRhdGVBY3RpdmVJZHMoKSB7XG4gICAgdGhpcy5hY3RpdmVJZHMgPSB0aGlzLnBhbmVscy5maWx0ZXIocGFuZWwgPT4gcGFuZWwuaXNPcGVuICYmICFwYW5lbC5kaXNhYmxlZCkubWFwKHBhbmVsID0+IHBhbmVsLmlkKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtOZ2JBY2NvcmRpb24sIE5nYlBhbmVsLCBOZ2JQYW5lbFRpdGxlLCBOZ2JQYW5lbENvbnRlbnQsIE5nYlBhbmVsSGVhZGVyLCBOZ2JQYW5lbFRvZ2dsZX0gZnJvbSAnLi9hY2NvcmRpb24nO1xuXG5leHBvcnQge1xuICBOZ2JBY2NvcmRpb24sXG4gIE5nYlBhbmVsLFxuICBOZ2JQYW5lbFRpdGxlLFxuICBOZ2JQYW5lbENvbnRlbnQsXG4gIE5nYlBhbmVsQ2hhbmdlRXZlbnQsXG4gIE5nYlBhbmVsSGVhZGVyLFxuICBOZ2JQYW5lbEhlYWRlckNvbnRleHQsXG4gIE5nYlBhbmVsVG9nZ2xlXG59IGZyb20gJy4vYWNjb3JkaW9uJztcbmV4cG9ydCB7TmdiQWNjb3JkaW9uQ29uZmlnfSBmcm9tICcuL2FjY29yZGlvbi1jb25maWcnO1xuXG5jb25zdCBOR0JfQUNDT1JESU9OX0RJUkVDVElWRVMgPVxuICAgIFtOZ2JBY2NvcmRpb24sIE5nYlBhbmVsLCBOZ2JQYW5lbFRpdGxlLCBOZ2JQYW5lbENvbnRlbnQsIE5nYlBhbmVsSGVhZGVyLCBOZ2JQYW5lbFRvZ2dsZV07XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBOR0JfQUNDT1JESU9OX0RJUkVDVElWRVMsIGV4cG9ydHM6IE5HQl9BQ0NPUkRJT05fRElSRUNUSVZFUywgaW1wb3J0czogW0NvbW1vbk1vZHVsZV19KVxuZXhwb3J0IGNsYXNzIE5nYkFjY29yZGlvbk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JBY2NvcmRpb25Nb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW05nYkFsZXJ0XSgjL2NvbXBvbmVudHMvYWxlcnQvYXBpI05nYkFsZXJ0KSBjb21wb25lbnQuXG4gKlxuICogWW91IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlLCB0eXBpY2FsbHkgaW4geW91ciByb290IGNvbXBvbmVudCwgYW5kIGN1c3RvbWl6ZSBpdHMgcHJvcGVydGllc1xuICogdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIGFsZXJ0cyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiQWxlcnRDb25maWcge1xuICBkaXNtaXNzaWJsZSA9IHRydWU7XG4gIHR5cGUgPSAnd2FybmluZyc7XG59XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFJlbmRlcmVyMixcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge05nYkFsZXJ0Q29uZmlnfSBmcm9tICcuL2FsZXJ0LWNvbmZpZyc7XG5cbi8qKlxuICogQWxlcnQgaXMgYSBjb21wb25lbnQgdG8gcHJvdmlkZSBjb250ZXh0dWFsIGZlZWRiYWNrIG1lc3NhZ2VzIGZvciB1c2VyLlxuICpcbiAqIEl0IHN1cHBvcnRzIHNldmVyYWwgYWxlcnQgdHlwZXMgYW5kIGNhbiBiZSBkaXNtaXNzZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1hbGVydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7J3JvbGUnOiAnYWxlcnQnLCAnY2xhc3MnOiAnYWxlcnQnLCAnW2NsYXNzLmFsZXJ0LWRpc21pc3NpYmxlXSc6ICdkaXNtaXNzaWJsZSd9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8YnV0dG9uICpuZ0lmPVwiZGlzbWlzc2libGVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLmFsZXJ0LmNsb3NlXCJcbiAgICAgIChjbGljayk9XCJjbG9zZUhhbmRsZXIoKVwiPlxuICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICBgLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmdiQWxlcnQgaW1wbGVtZW50cyBPbkluaXQsXG4gICAgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYWxlcnQgY2FuIGJlIGRpc21pc3NlZCBieSB0aGUgdXNlci5cbiAgICpcbiAgICogVGhlIGNsb3NlIGJ1dHRvbiAow4PClykgd2lsbCBiZSBkaXNwbGF5ZWQgYW5kIHlvdSBjYW4gYmUgbm90aWZpZWRcbiAgICogb2YgdGhlIGV2ZW50IHdpdGggdGhlIGAoY2xvc2UpYCBvdXRwdXQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNtaXNzaWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGFsZXJ0LlxuICAgKlxuICAgKiBCb290c3RyYXAgcHJvdmlkZXMgc3R5bGVzIGZvciB0aGUgZm9sbG93aW5nIHR5cGVzOiBgJ3N1Y2Nlc3MnYCwgYCdpbmZvJ2AsIGAnd2FybmluZydgLCBgJ2RhbmdlcidgLCBgJ3ByaW1hcnknYCxcbiAgICogYCdzZWNvbmRhcnknYCwgYCdsaWdodCdgIGFuZCBgJ2RhcmsnYC5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2xvc2UgYnV0dG9uIGlzIGNsaWNrZWQuIEl0IGhhcyBubyBwYXlsb2FkIGFuZCBvbmx5IHJlbGV2YW50IGZvciBkaXNtaXNzaWJsZSBhbGVydHMuXG4gICAqL1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBOZ2JBbGVydENvbmZpZywgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuZGlzbWlzc2libGUgPSBjb25maWcuZGlzbWlzc2libGU7XG4gICAgdGhpcy50eXBlID0gY29uZmlnLnR5cGU7XG4gIH1cblxuICBjbG9zZUhhbmRsZXIoKSB7IHRoaXMuY2xvc2UuZW1pdChudWxsKTsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCB0eXBlQ2hhbmdlID0gY2hhbmdlc1sndHlwZSddO1xuICAgIGlmICh0eXBlQ2hhbmdlICYmICF0eXBlQ2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGBhbGVydC0ke3R5cGVDaGFuZ2UucHJldmlvdXNWYWx1ZX1gKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgYGFsZXJ0LSR7dHlwZUNoYW5nZS5jdXJyZW50VmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7IHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgYGFsZXJ0LSR7dGhpcy50eXBlfWApOyB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge05nYkFsZXJ0fSBmcm9tICcuL2FsZXJ0JztcblxuZXhwb3J0IHtOZ2JBbGVydH0gZnJvbSAnLi9hbGVydCc7XG5leHBvcnQge05nYkFsZXJ0Q29uZmlnfSBmcm9tICcuL2FsZXJ0LWNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBbTmdiQWxlcnRdLCBleHBvcnRzOiBbTmdiQWxlcnRdLCBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSwgZW50cnlDb21wb25lbnRzOiBbTmdiQWxlcnRdfSlcbmV4cG9ydCBjbGFzcyBOZ2JBbGVydE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JBbGVydE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7RGlyZWN0aXZlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nYkJ1dHRvbkxhYmVsXScsXG4gIGhvc3Q6XG4gICAgICB7J1tjbGFzcy5idG5dJzogJ3RydWUnLCAnW2NsYXNzLmFjdGl2ZV0nOiAnYWN0aXZlJywgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLCAnW2NsYXNzLmZvY3VzXSc6ICdmb2N1c2VkJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiQnV0dG9uTGFiZWwge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBmb2N1c2VkOiBib29sZWFuO1xufVxuIiwiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge05nYkJ1dHRvbkxhYmVsfSBmcm9tICcuL2xhYmVsJztcblxuY29uc3QgTkdCX0NIRUNLQk9YX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiQ2hlY2tCb3gpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuXG4vKipcbiAqIEFsbG93cyB0byBlYXNpbHkgY3JlYXRlIEJvb3RzdHJhcC1zdHlsZSBjaGVja2JveCBidXR0b25zLlxuICpcbiAqIEludGVncmF0ZXMgd2l0aCBmb3Jtcywgc28gdGhlIHZhbHVlIG9mIGEgY2hlY2tlZCBidXR0b24gaXMgYm91bmQgdG8gdGhlIHVuZGVybHlpbmcgZm9ybSBjb250cm9sXG4gKiBlaXRoZXIgaW4gYSByZWFjdGl2ZSBvciB0ZW1wbGF0ZS1kcml2ZW4gd2F5LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdiQnV0dG9uXVt0eXBlPWNoZWNrYm94XScsXG4gIGhvc3Q6IHtcbiAgICAnYXV0b2NvbXBsZXRlJzogJ29mZicsXG4gICAgJ1tjaGVja2VkXSc6ICdjaGVja2VkJyxcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJyhjaGFuZ2UpJzogJ29uSW5wdXRDaGFuZ2UoJGV2ZW50KScsXG4gICAgJyhmb2N1cyknOiAnZm9jdXNlZCA9IHRydWUnLFxuICAgICcoYmx1ciknOiAnZm9jdXNlZCA9IGZhbHNlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtOR0JfQ0hFQ0tCT1hfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIE5nYkNoZWNrQm94IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjaGVja2VkO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjaGVja2JveCBidXR0b24gd2lsbCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCB2YWx1ZSB3aGVuIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVDaGVja2VkID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCB2YWx1ZSB3aGVuIHRoZSBjaGVja2JveCBpcyB1bmNoZWNrZWQuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZVVuQ2hlY2tlZCA9IGZhbHNlO1xuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHNldCBmb2N1c2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2xhYmVsLmZvY3VzZWQgPSBpc0ZvY3VzZWQ7XG4gICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbGFiZWw6IE5nYkJ1dHRvbkxhYmVsLCBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgb25JbnB1dENoYW5nZSgkZXZlbnQpIHtcbiAgICBjb25zdCBtb2RlbFRvUHJvcGFnYXRlID0gJGV2ZW50LnRhcmdldC5jaGVja2VkID8gdGhpcy52YWx1ZUNoZWNrZWQgOiB0aGlzLnZhbHVlVW5DaGVja2VkO1xuICAgIHRoaXMub25DaGFuZ2UobW9kZWxUb1Byb3BhZ2F0ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLndyaXRlVmFsdWUobW9kZWxUb1Byb3BhZ2F0ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuX2xhYmVsLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZSA9PT0gdGhpcy52YWx1ZUNoZWNrZWQ7XG4gICAgdGhpcy5fbGFiZWwuYWN0aXZlID0gdGhpcy5jaGVja2VkO1xuXG4gICAgLy8gbGFiZWwgd29uJ3QgYmUgdXBkYXRlZCwgaWYgaXQgaXMgaW5zaWRlIHRoZSBPblB1c2ggY29tcG9uZW50IHdoZW4gW25nTW9kZWxdIGNoYW5nZXNcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtOZ2JCdXR0b25MYWJlbH0gZnJvbSAnLi9sYWJlbCc7XG5cbmNvbnN0IE5HQl9SQURJT19WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nYlJhZGlvR3JvdXApLFxuICBtdWx0aTogdHJ1ZVxufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQWxsb3dzIHRvIGVhc2lseSBjcmVhdGUgQm9vdHN0cmFwLXN0eWxlIHJhZGlvIGJ1dHRvbnMuXG4gKlxuICogSW50ZWdyYXRlcyB3aXRoIGZvcm1zLCBzbyB0aGUgdmFsdWUgb2YgYSBjaGVja2VkIGJ1dHRvbiBpcyBib3VuZCB0byB0aGUgdW5kZXJseWluZyBmb3JtIGNvbnRyb2xcbiAqIGVpdGhlciBpbiBhIHJlYWN0aXZlIG9yIHRlbXBsYXRlLWRyaXZlbiB3YXkuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nYlJhZGlvR3JvdXBdJywgaG9zdDogeydyb2xlJzogJ3JhZGlvZ3JvdXAnfSwgcHJvdmlkZXJzOiBbTkdCX1JBRElPX1ZBTFVFX0FDQ0VTU09SXX0pXG5leHBvcnQgY2xhc3MgTmdiUmFkaW9Hcm91cCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBfcmFkaW9zOiBTZXQ8TmdiUmFkaW8+ID0gbmV3IFNldDxOZ2JSYWRpbz4oKTtcbiAgcHJpdmF0ZSBfdmFsdWUgPSBudWxsO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICBnZXQgZGlzYWJsZWQoKSB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxuICBzZXQgZGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbikgeyB0aGlzLnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7IH1cblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcmFkaW8gZ3JvdXAgYXBwbGllZCB0byByYWRpbyBpbnB1dCBlbGVtZW50cy5cbiAgICpcbiAgICogV2lsbCBiZSBhcHBsaWVkIHRvIGFsbCByYWRpbyBpbnB1dCBlbGVtZW50cyBpbnNpZGUgdGhlIGdyb3VwLFxuICAgKiB1bmxlc3MgW2BOZ2JSYWRpb2BdKCMvY29tcG9uZW50cy9idXR0b25zL2FwaSNOZ2JSYWRpbykncyBzcGVjaWZ5IG5hbWVzIHRoZW1zZWx2ZXMuXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgd2lsbCBiZSBnZW5lcmF0ZWQgaW4gdGhlIGBuZ2ItcmFkaW8teHhgIGZvcm1hdC5cbiAgICovXG4gIEBJbnB1dCgpIG5hbWUgPSBgbmdiLXJhZGlvLSR7bmV4dElkKyt9YDtcblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBvblJhZGlvQ2hhbmdlKHJhZGlvOiBOZ2JSYWRpbykge1xuICAgIHRoaXMud3JpdGVWYWx1ZShyYWRpby52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZShyYWRpby52YWx1ZSk7XG4gIH1cblxuICBvblJhZGlvVmFsdWVVcGRhdGUoKSB7IHRoaXMuX3VwZGF0ZVJhZGlvc1ZhbHVlKCk7IH1cblxuICByZWdpc3RlcihyYWRpbzogTmdiUmFkaW8pIHsgdGhpcy5fcmFkaW9zLmFkZChyYWRpbyk7IH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl91cGRhdGVSYWRpb3NEaXNhYmxlZCgpO1xuICB9XG5cbiAgdW5yZWdpc3RlcihyYWRpbzogTmdiUmFkaW8pIHsgdGhpcy5fcmFkaW9zLmRlbGV0ZShyYWRpbyk7IH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVSYWRpb3NWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlUmFkaW9zVmFsdWUoKSB7IHRoaXMuX3JhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4gcmFkaW8udXBkYXRlVmFsdWUodGhpcy5fdmFsdWUpKTsgfVxuICBwcml2YXRlIF91cGRhdGVSYWRpb3NEaXNhYmxlZCgpIHsgdGhpcy5fcmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiByYWRpby51cGRhdGVEaXNhYmxlZCgpKTsgfVxufVxuXG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCBtYXJrcyBhbiBpbnB1dCBvZiB0eXBlIFwicmFkaW9cIiBhcyBhIHBhcnQgb2YgdGhlXG4gKiBbYE5nYlJhZGlvR3JvdXBgXSgjL2NvbXBvbmVudHMvYnV0dG9ucy9hcGkjTmdiUmFkaW9Hcm91cCkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2JCdXR0b25dW3R5cGU9cmFkaW9dJyxcbiAgaG9zdDoge1xuICAgICdbY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbbmFtZV0nOiAnbmFtZUF0dHInLFxuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZSgpJyxcbiAgICAnKGZvY3VzKSc6ICdmb2N1c2VkID0gdHJ1ZScsXG4gICAgJyhibHVyKSc6ICdmb2N1c2VkID0gZmFsc2UnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTmdiUmFkaW8gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlICduYW1lJyBwcm9wZXJ0eSBvZiB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICpcbiAgICogQWxsIGlucHV0cyBvZiB0aGUgcmFkaW8gZ3JvdXAgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbmFtZS4gSWYgbm90IHNwZWNpZmllZCxcbiAgICogdGhlIG5hbWUgb2YgdGhlIGVuY2xvc2luZyBncm91cCBpcyB1c2VkLlxuICAgKi9cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIHZhbHVlIHdoZW4gY3VycmVudCByYWRpbyBidXR0b24gaXMgY2hlY2tlZC5cbiAgICovXG4gIEBJbnB1dCgndmFsdWUnKVxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgY29uc3Qgc3RyaW5nVmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHN0cmluZ1ZhbHVlKTtcbiAgICB0aGlzLl9ncm91cC5vblJhZGlvVmFsdWVVcGRhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGN1cnJlbnQgcmFkaW8gYnV0dG9uIHdpbGwgYmUgZGlzYWJsZWQuXG4gICAqL1xuICBASW5wdXQoJ2Rpc2FibGVkJylcbiAgc2V0IGRpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQgIT09IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcbiAgfVxuXG4gIHNldCBmb2N1c2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9sYWJlbCkge1xuICAgICAgdGhpcy5fbGFiZWwuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICB9XG4gICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuX2dyb3VwLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjaGVja2VkKCkgeyByZXR1cm4gdGhpcy5fY2hlY2tlZDsgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX2dyb3VwLmRpc2FibGVkIHx8IHRoaXMuX2Rpc2FibGVkOyB9XG5cbiAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH1cblxuICBnZXQgbmFtZUF0dHIoKSB7IHJldHVybiB0aGlzLm5hbWUgfHwgdGhpcy5fZ3JvdXAubmFtZTsgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfZ3JvdXA6IE5nYlJhZGlvR3JvdXAsIHByaXZhdGUgX2xhYmVsOiBOZ2JCdXR0b25MYWJlbCwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuX2dyb3VwLnJlZ2lzdGVyKHRoaXMpO1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkgeyB0aGlzLl9ncm91cC51bnJlZ2lzdGVyKHRoaXMpOyB9XG5cbiAgb25DaGFuZ2UoKSB7IHRoaXMuX2dyb3VwLm9uUmFkaW9DaGFuZ2UodGhpcyk7IH1cblxuICB1cGRhdGVWYWx1ZSh2YWx1ZSkge1xuICAgIC8vIGxhYmVsIHdvbid0IGJlIHVwZGF0ZWQsIGlmIGl0IGlzIGluc2lkZSB0aGUgT25QdXNoIGNvbXBvbmVudCB3aGVuIFtuZ01vZGVsXSBjaGFuZ2VzXG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGVja2VkID0gdGhpcy52YWx1ZSA9PT0gdmFsdWU7XG4gICAgdGhpcy5fbGFiZWwuYWN0aXZlID0gdGhpcy5fY2hlY2tlZDtcbiAgfVxuXG4gIHVwZGF0ZURpc2FibGVkKCkgeyB0aGlzLl9sYWJlbC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7IH1cbn1cbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JCdXR0b25MYWJlbH0gZnJvbSAnLi9sYWJlbCc7XG5pbXBvcnQge05nYkNoZWNrQm94fSBmcm9tICcuL2NoZWNrYm94JztcbmltcG9ydCB7TmdiUmFkaW8sIE5nYlJhZGlvR3JvdXB9IGZyb20gJy4vcmFkaW8nO1xuXG5leHBvcnQge05nYkJ1dHRvbkxhYmVsfSBmcm9tICcuL2xhYmVsJztcbmV4cG9ydCB7TmdiQ2hlY2tCb3h9IGZyb20gJy4vY2hlY2tib3gnO1xuZXhwb3J0IHtOZ2JSYWRpbywgTmdiUmFkaW9Hcm91cH0gZnJvbSAnLi9yYWRpbyc7XG5cblxuY29uc3QgTkdCX0JVVFRPTl9ESVJFQ1RJVkVTID0gW05nYkJ1dHRvbkxhYmVsLCBOZ2JDaGVja0JveCwgTmdiUmFkaW9Hcm91cCwgTmdiUmFkaW9dO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogTkdCX0JVVFRPTl9ESVJFQ1RJVkVTLCBleHBvcnRzOiBOR0JfQlVUVE9OX0RJUkVDVElWRVN9KVxuZXhwb3J0IGNsYXNzIE5nYkJ1dHRvbnNNb2R1bGUge1xuICAvKipcbiAgICogSW1wb3J0aW5nIHdpdGggJy5mb3JSb290KCknIGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIHlvdSBjYW4gc2ltcGx5IGltcG9ydCB0aGUgbW9kdWxlLlxuICAgKiBXaWxsIGJlIHJlbW92ZWQgaW4gNC4wLjAuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIDMuMC4wXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHsgcmV0dXJuIHtuZ01vZHVsZTogTmdiQnV0dG9uc01vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbTmdiQ2Fyb3VzZWxdKCMvY29tcG9uZW50cy9jYXJvdXNlbC9hcGkjTmdiQ2Fyb3VzZWwpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIGl0cyBwcm9wZXJ0aWVzXG4gKiB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgY2Fyb3VzZWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JDYXJvdXNlbENvbmZpZyB7XG4gIGludGVydmFsID0gNTAwMDtcbiAgd3JhcCA9IHRydWU7XG4gIGtleWJvYXJkID0gdHJ1ZTtcbiAgcGF1c2VPbkhvdmVyID0gdHJ1ZTtcbiAgc2hvd05hdmlnYXRpb25BcnJvd3MgPSB0cnVlO1xuICBzaG93TmF2aWdhdGlvbkluZGljYXRvcnMgPSB0cnVlO1xufVxuIiwiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzUGxhdGZvcm1Ccm93c2VyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge05nYkNhcm91c2VsQ29uZmlnfSBmcm9tICcuL2Nhcm91c2VsLWNvbmZpZyc7XG5cbmltcG9ydCB7bWVyZ2UsIFN1YmplY3QsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgd3JhcHMgdGhlIGluZGl2aWR1YWwgY2Fyb3VzZWwgc2xpZGUuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiU2xpZGVdJ30pXG5leHBvcnQgY2xhc3MgTmdiU2xpZGUge1xuICAvKipcbiAgICogU2xpZGUgaWQgdGhhdCBtdXN0IGJlIHVuaXF1ZSBmb3IgdGhlIGVudGlyZSBkb2N1bWVudC5cbiAgICpcbiAgICogSWYgbm90IHByb3ZpZGVkLCB3aWxsIGJlIGdlbmVyYXRlZCBpbiB0aGUgYG5nYi1zbGlkZS14eGAgZm9ybWF0LlxuICAgKi9cbiAgQElucHV0KCkgaWQgPSBgbmdiLXNsaWRlLSR7bmV4dElkKyt9YDtcbiAgY29uc3RydWN0b3IocHVibGljIHRwbFJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuLyoqXG4gKiBDYXJvdXNlbCBpcyBhIGNvbXBvbmVudCB0byBlYXNpbHkgY3JlYXRlIGFuZCBjb250cm9sIHNsaWRlc2hvd3MuXG4gKlxuICogQWxsb3dzIHRvIHNldCBpbnRlcnZhbHMsIGNoYW5nZSB0aGUgd2F5IHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlIHNsaWRlcyBhbmQgcHJvdmlkZXMgYSBwcm9ncmFtbWF0aWMgQVBJLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItY2Fyb3VzZWwnLFxuICBleHBvcnRBczogJ25nYkNhcm91c2VsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnY2Fyb3VzZWwgc2xpZGUnLFxuICAgICdbc3R5bGUuZGlzcGxheV0nOiAnXCJibG9ja1wiJyxcbiAgICAndGFiSW5kZXgnOiAnMCcsXG4gICAgJyhtb3VzZWVudGVyKSc6ICdwYXVzZU9uSG92ZXIgJiYgcGF1c2UoKScsXG4gICAgJyhtb3VzZWxlYXZlKSc6ICdwYXVzZU9uSG92ZXIgJiYgY3ljbGUoKScsXG4gICAgJyhrZXlkb3duLmFycm93TGVmdCknOiAna2V5Ym9hcmQgJiYgcHJldigpJyxcbiAgICAnKGtleWRvd24uYXJyb3dSaWdodCknOiAna2V5Ym9hcmQgJiYgbmV4dCgpJ1xuICB9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxvbCBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvcnNcIiAqbmdJZj1cInNob3dOYXZpZ2F0aW9uSW5kaWNhdG9yc1wiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXNcIiBbaWRdPVwic2xpZGUuaWRcIiBbY2xhc3MuYWN0aXZlXT1cInNsaWRlLmlkID09PSBhY3RpdmVJZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChzbGlkZS5pZCk7IHBhdXNlT25Ib3ZlciAmJiBwYXVzZSgpXCI+PC9saT5cbiAgICA8L29sPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2xpZGUgb2Ygc2xpZGVzXCIgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJzbGlkZS5pZCA9PT0gYWN0aXZlSWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNsaWRlLnRwbFJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YSBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtcHJldlwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwicHJldigpXCIgKm5nSWY9XCJzaG93TmF2aWdhdGlvbkFycm93c1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi5jYXJvdXNlbC5wcmV2aW91c1wiPlByZXZpb3VzPC9zcGFuPlxuICAgIDwvYT5cbiAgICA8YSBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2wtbmV4dFwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwibmV4dCgpXCIgKm5nSWY9XCJzaG93TmF2aWdhdGlvbkFycm93c1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi5jYXJvdXNlbC5uZXh0XCI+TmV4dDwvc3Bhbj5cbiAgICA8L2E+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiQ2Fyb3VzZWwgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JTbGlkZSkgc2xpZGVzOiBRdWVyeUxpc3Q8TmdiU2xpZGU+O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfc3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfc3RvcCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xpZGUgaWQgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkICoqaW5pdGlhbGx5KiouXG4gICAqXG4gICAqIEZvciBzdWJzZXF1ZW50IGludGVyYWN0aW9ucyB1c2UgbWV0aG9kcyBgc2VsZWN0KClgLCBgbmV4dCgpYCwgZXRjLiBhbmQgdGhlIGAoc2xpZGUpYCBvdXRwdXQuXG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lIGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIG5leHQgc2xpZGUgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBpbnRlcnZhbDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHdpbGwgJ3dyYXAnIHRoZSBjYXJvdXNlbCBieSBzd2l0Y2hpbmcgZnJvbSB0aGUgbGFzdCBzbGlkZSBiYWNrIHRvIHRoZSBmaXJzdC5cbiAgICovXG4gIEBJbnB1dCgpIHdyYXA6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYWxsb3dzIHRvIGludGVyYWN0IHdpdGggY2Fyb3VzZWwgdXNpbmcga2V5Ym9hcmQgJ2Fycm93IGxlZnQnIGFuZCAnYXJyb3cgcmlnaHQnLlxuICAgKi9cbiAgQElucHV0KCkga2V5Ym9hcmQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgd2lsbCBwYXVzZSBzbGlkZSBzd2l0Y2hpbmcgd2hlbiBtb3VzZSBjdXJzb3IgaG92ZXJzIHRoZSBzbGlkZS5cbiAgICpcbiAgICogQHNpbmNlIDIuMi4wXG4gICAqL1xuICBASW5wdXQoKSBwYXVzZU9uSG92ZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgJ3ByZXZpb3VzJyBhbmQgJ25leHQnIG5hdmlnYXRpb24gYXJyb3dzIHdpbGwgYmUgdmlzaWJsZSBvbiB0aGUgc2xpZGUuXG4gICAqXG4gICAqIEBzaW5jZSAyLjIuMFxuICAgKi9cbiAgQElucHV0KCkgc2hvd05hdmlnYXRpb25BcnJvd3M6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgbmF2aWdhdGlvbiBpbmRpY2F0b3JzIGF0IHRoZSBib3R0b20gb2YgdGhlIHNsaWRlIHdpbGwgYmUgdmlzaWJsZS5cbiAgICpcbiAgICogQHNpbmNlIDIuMi4wXG4gICAqL1xuICBASW5wdXQoKSBzaG93TmF2aWdhdGlvbkluZGljYXRvcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgcmlnaHQgYWZ0ZXIgdGhlIHNsaWRlIHRyYW5zaXRpb24gaXMgY29tcGxldGVkLlxuICAgKlxuICAgKiBTZWUgW2BOZ2JTbGlkZUV2ZW50YF0oIy9jb21wb25lbnRzL2Nhcm91c2VsL2FwaSNOZ2JTbGlkZUV2ZW50KSBmb3IgcGF5bG9hZCBkZXRhaWxzLlxuICAgKi9cbiAgQE91dHB1dCgpIHNsaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JTbGlkZUV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgY29uZmlnOiBOZ2JDYXJvdXNlbENvbmZpZywgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBfcGxhdGZvcm1JZCwgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmludGVydmFsID0gY29uZmlnLmludGVydmFsO1xuICAgIHRoaXMud3JhcCA9IGNvbmZpZy53cmFwO1xuICAgIHRoaXMua2V5Ym9hcmQgPSBjb25maWcua2V5Ym9hcmQ7XG4gICAgdGhpcy5wYXVzZU9uSG92ZXIgPSBjb25maWcucGF1c2VPbkhvdmVyO1xuICAgIHRoaXMuc2hvd05hdmlnYXRpb25BcnJvd3MgPSBjb25maWcuc2hvd05hdmlnYXRpb25BcnJvd3M7XG4gICAgdGhpcy5zaG93TmF2aWdhdGlvbkluZGljYXRvcnMgPSBjb25maWcuc2hvd05hdmlnYXRpb25JbmRpY2F0b3JzO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIC8vIHNldEludGVydmFsKCkgZG9lc24ndCBwbGF5IHdlbGwgd2l0aCBTU1IgYW5kIHByb3RyYWN0b3IsXG4gICAgLy8gc28gd2Ugc2hvdWxkIHJ1biBpdCBpbiB0aGUgYnJvd3NlciBhbmQgb3V0c2lkZSBBbmd1bGFyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuX3BsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGFydCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmludGVydmFsKSwgZmlsdGVyKGludGVydmFsID0+IGludGVydmFsID4gMCAmJiB0aGlzLnNsaWRlcy5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaW50ZXJ2YWwgPT4gdGltZXIoaW50ZXJ2YWwpLnBpcGUodGFrZVVudGlsKG1lcmdlKHRoaXMuX3N0b3AkLCB0aGlzLl9kZXN0cm95JCkpKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5uZXh0KCkpKTtcblxuICAgICAgICB0aGlzLl9zdGFydCQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zbGlkZXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgbGV0IGFjdGl2ZVNsaWRlID0gdGhpcy5fZ2V0U2xpZGVCeUlkKHRoaXMuYWN0aXZlSWQpO1xuICAgIHRoaXMuYWN0aXZlSWQgPSBhY3RpdmVTbGlkZSA/IGFjdGl2ZVNsaWRlLmlkIDogKHRoaXMuc2xpZGVzLmxlbmd0aCA/IHRoaXMuc2xpZGVzLmZpcnN0LmlkIDogbnVsbCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHsgdGhpcy5fZGVzdHJveSQubmV4dCgpOyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xuICAgIGlmICgnaW50ZXJ2YWwnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXNbJ2ludGVydmFsJ10uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLl9zdGFydCQubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gYSBzbGlkZSB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllci5cbiAgICovXG4gIHNlbGVjdChzbGlkZUlkOiBzdHJpbmcpIHsgdGhpcy5fY3ljbGVUb1NlbGVjdGVkKHNsaWRlSWQsIHRoaXMuX2dldFNsaWRlRXZlbnREaXJlY3Rpb24odGhpcy5hY3RpdmVJZCwgc2xpZGVJZCkpOyB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgc2xpZGUuXG4gICAqL1xuICBwcmV2KCkgeyB0aGlzLl9jeWNsZVRvU2VsZWN0ZWQodGhpcy5fZ2V0UHJldlNsaWRlKHRoaXMuYWN0aXZlSWQpLCBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uLlJJR0hUKTsgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgc2xpZGUuXG4gICAqL1xuICBuZXh0KCkgeyB0aGlzLl9jeWNsZVRvU2VsZWN0ZWQodGhpcy5fZ2V0TmV4dFNsaWRlKHRoaXMuYWN0aXZlSWQpLCBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uLkxFRlQpOyB9XG5cbiAgLyoqXG4gICAqIFBhdXNlcyBjeWNsaW5nIHRocm91Z2ggdGhlIHNsaWRlcy5cbiAgICovXG4gIHBhdXNlKCkgeyB0aGlzLl9zdG9wJC5uZXh0KCk7IH1cblxuICAvKipcbiAgICogUmVzdGFydHMgY3ljbGluZyB0aHJvdWdoIHRoZSBzbGlkZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgKi9cbiAgY3ljbGUoKSB7IHRoaXMuX3N0YXJ0JC5uZXh0KCk7IH1cblxuICBwcml2YXRlIF9jeWNsZVRvU2VsZWN0ZWQoc2xpZGVJZHg6IHN0cmluZywgZGlyZWN0aW9uOiBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uKSB7XG4gICAgbGV0IHNlbGVjdGVkU2xpZGUgPSB0aGlzLl9nZXRTbGlkZUJ5SWQoc2xpZGVJZHgpO1xuICAgIGlmIChzZWxlY3RlZFNsaWRlICYmIHNlbGVjdGVkU2xpZGUuaWQgIT09IHRoaXMuYWN0aXZlSWQpIHtcbiAgICAgIHRoaXMuc2xpZGUuZW1pdCh7cHJldjogdGhpcy5hY3RpdmVJZCwgY3VycmVudDogc2VsZWN0ZWRTbGlkZS5pZCwgZGlyZWN0aW9uOiBkaXJlY3Rpb259KTtcbiAgICAgIHRoaXMuX3N0YXJ0JC5uZXh0KCk7XG4gICAgICB0aGlzLmFjdGl2ZUlkID0gc2VsZWN0ZWRTbGlkZS5pZDtcbiAgICB9XG5cbiAgICAvLyB3ZSBnZXQgaGVyZSBhZnRlciB0aGUgaW50ZXJ2YWwgZmlyZXMgb3IgYW55IGV4dGVybmFsIEFQSSBjYWxsIGxpa2UgbmV4dCgpLCBwcmV2KCkgb3Igc2VsZWN0KClcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFNsaWRlRXZlbnREaXJlY3Rpb24oY3VycmVudEFjdGl2ZVNsaWRlSWQ6IHN0cmluZywgbmV4dEFjdGl2ZVNsaWRlSWQ6IHN0cmluZyk6IE5nYlNsaWRlRXZlbnREaXJlY3Rpb24ge1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVTbGlkZUlkeCA9IHRoaXMuX2dldFNsaWRlSWR4QnlJZChjdXJyZW50QWN0aXZlU2xpZGVJZCk7XG4gICAgY29uc3QgbmV4dEFjdGl2ZVNsaWRlSWR4ID0gdGhpcy5fZ2V0U2xpZGVJZHhCeUlkKG5leHRBY3RpdmVTbGlkZUlkKTtcblxuICAgIHJldHVybiBjdXJyZW50QWN0aXZlU2xpZGVJZHggPiBuZXh0QWN0aXZlU2xpZGVJZHggPyBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uLlJJR0hUIDogTmdiU2xpZGVFdmVudERpcmVjdGlvbi5MRUZUO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2xpZGVCeUlkKHNsaWRlSWQ6IHN0cmluZyk6IE5nYlNsaWRlIHsgcmV0dXJuIHRoaXMuc2xpZGVzLmZpbmQoc2xpZGUgPT4gc2xpZGUuaWQgPT09IHNsaWRlSWQpOyB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2xpZGVJZHhCeUlkKHNsaWRlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2xpZGVzLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMuX2dldFNsaWRlQnlJZChzbGlkZUlkKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0U2xpZGUoY3VycmVudFNsaWRlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2xpZGVBcnIgPSB0aGlzLnNsaWRlcy50b0FycmF5KCk7XG4gICAgY29uc3QgY3VycmVudFNsaWRlSWR4ID0gdGhpcy5fZ2V0U2xpZGVJZHhCeUlkKGN1cnJlbnRTbGlkZUlkKTtcbiAgICBjb25zdCBpc0xhc3RTbGlkZSA9IGN1cnJlbnRTbGlkZUlkeCA9PT0gc2xpZGVBcnIubGVuZ3RoIC0gMTtcblxuICAgIHJldHVybiBpc0xhc3RTbGlkZSA/ICh0aGlzLndyYXAgPyBzbGlkZUFyclswXS5pZCA6IHNsaWRlQXJyW3NsaWRlQXJyLmxlbmd0aCAtIDFdLmlkKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVBcnJbY3VycmVudFNsaWRlSWR4ICsgMV0uaWQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQcmV2U2xpZGUoY3VycmVudFNsaWRlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2xpZGVBcnIgPSB0aGlzLnNsaWRlcy50b0FycmF5KCk7XG4gICAgY29uc3QgY3VycmVudFNsaWRlSWR4ID0gdGhpcy5fZ2V0U2xpZGVJZHhCeUlkKGN1cnJlbnRTbGlkZUlkKTtcbiAgICBjb25zdCBpc0ZpcnN0U2xpZGUgPSBjdXJyZW50U2xpZGVJZHggPT09IDA7XG5cbiAgICByZXR1cm4gaXNGaXJzdFNsaWRlID8gKHRoaXMud3JhcCA/IHNsaWRlQXJyW3NsaWRlQXJyLmxlbmd0aCAtIDFdLmlkIDogc2xpZGVBcnJbMF0uaWQpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVBcnJbY3VycmVudFNsaWRlSWR4IC0gMV0uaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHNsaWRlIGNoYW5nZSBldmVudCBlbWl0dGVkIHJpZ2h0IGFmdGVyIHRoZSBzbGlkZSB0cmFuc2l0aW9uIGlzIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JTbGlkZUV2ZW50IHtcbiAgLyoqXG4gICAqIFRoZSBwcmV2aW91cyBzbGlkZSBpZC5cbiAgICovXG4gIHByZXY6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc2xpZGUgaWQuXG4gICAqL1xuICBjdXJyZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzbGlkZSBldmVudCBkaXJlY3Rpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIHZhbHVlcyBhcmUgYCdsZWZ0JyB8ICdyaWdodCdgLlxuICAgKi9cbiAgZGlyZWN0aW9uOiBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhlIGNhcm91c2VsIHNsaWRlIHRyYW5zaXRpb24gZGlyZWN0aW9uLlxuICovXG5leHBvcnQgZW51bSBOZ2JTbGlkZUV2ZW50RGlyZWN0aW9uIHtcbiAgTEVGVCA9IDxhbnk+J2xlZnQnLFxuICBSSUdIVCA9IDxhbnk+J3JpZ2h0J1xufVxuXG5leHBvcnQgY29uc3QgTkdCX0NBUk9VU0VMX0RJUkVDVElWRVMgPSBbTmdiQ2Fyb3VzZWwsIE5nYlNsaWRlXTtcbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7TkdCX0NBUk9VU0VMX0RJUkVDVElWRVN9IGZyb20gJy4vY2Fyb3VzZWwnO1xuXG5leHBvcnQge05nYkNhcm91c2VsLCBOZ2JTbGlkZSwgTmdiU2xpZGVFdmVudH0gZnJvbSAnLi9jYXJvdXNlbCc7XG5leHBvcnQge05nYkNhcm91c2VsQ29uZmlnfSBmcm9tICcuL2Nhcm91c2VsLWNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBOR0JfQ0FST1VTRUxfRElSRUNUSVZFUywgZXhwb3J0czogTkdCX0NBUk9VU0VMX0RJUkVDVElWRVMsIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdfSlcbmV4cG9ydCBjbGFzcyBOZ2JDYXJvdXNlbE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JDYXJvdXNlbE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdG8gcHJvdmlkZSBhIHNpbXBsZSB3YXkgb2YgaGlkaW5nIGFuZCBzaG93aW5nIGVsZW1lbnRzIG9uIHRoZSBwYWdlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdiQ29sbGFwc2VdJyxcbiAgZXhwb3J0QXM6ICduZ2JDb2xsYXBzZScsXG4gIGhvc3Q6IHsnW2NsYXNzLmNvbGxhcHNlXSc6ICd0cnVlJywgJ1tjbGFzcy5zaG93XSc6ICchY29sbGFwc2VkJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiQ29sbGFwc2Uge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB3aWxsIGNvbGxhcHNlIHRoZSBlbGVtZW50IG9yIHNob3cgaXQgb3RoZXJ3aXNlLlxuICAgKi9cbiAgQElucHV0KCduZ2JDb2xsYXBzZScpIGNvbGxhcHNlZCA9IGZhbHNlO1xufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nYkNvbGxhcHNlfSBmcm9tICcuL2NvbGxhcHNlJztcblxuZXhwb3J0IHtOZ2JDb2xsYXBzZX0gZnJvbSAnLi9jb2xsYXBzZSc7XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBbTmdiQ29sbGFwc2VdLCBleHBvcnRzOiBbTmdiQ29sbGFwc2VdfSlcbmV4cG9ydCBjbGFzcyBOZ2JDb2xsYXBzZU1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JDb2xsYXBzZU1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuaW1wb3J0IHtpc0ludGVnZXJ9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbi8qKlxuICogQSBzaW1wbGUgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgZGF0ZSB0aGF0IGRhdGVwaWNrZXIgYWxzbyB1c2VzIGludGVybmFsbHkuXG4gKlxuICogSXQgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgTmdiRGF0ZVN0cnVjdGAgaW50ZXJmYWNlIHRoYXQgYWRkcyBzb21lIGNvbnZlbmllbmNlIG1ldGhvZHMsXG4gKiBsaWtlIGAuZXF1YWxzKClgLCBgLmJlZm9yZSgpYCwgZXRjLlxuICpcbiAqIEFsbCBkYXRlcGlja2VyIEFQSXMgY29uc3VtZSBgTmdiRGF0ZVN0cnVjdGAsIGJ1dCByZXR1cm4gYE5nYkRhdGVgLlxuICpcbiAqIEluIG1hbnkgY2FzZXMgaXQgaXMgc2ltcGxlciB0byBtYW5pcHVsYXRlIHRoZXNlIG9iamVjdHMgdG9nZXRoZXIgd2l0aFxuICogW2BOZ2JDYWxlbmRhcmBdKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JDYWxlbmRhcikgdGhhbiBuYXRpdmUgSlMgRGF0ZXMuXG4gKlxuICogU2VlIHRoZSBbZGF0ZSBmb3JtYXQgb3ZlcnZpZXddKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL292ZXJ2aWV3I2RhdGUtbW9kZWwpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHNpbmNlIDMuMC4wXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ2JEYXRlIGltcGxlbWVudHMgTmdiRGF0ZVN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgeWVhciwgZm9yIGV4YW1wbGUgMjAxNlxuICAgKi9cbiAgeWVhcjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9udGgsIGZvciBleGFtcGxlIDE9SmFuIC4uLiAxMj1EZWMgYXMgaW4gSVNPIDg2MDFcbiAgICovXG4gIG1vbnRoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXkgb2YgbW9udGgsIHN0YXJ0aW5nIHdpdGggMVxuICAgKi9cbiAgZGF5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgKipzdGF0aWMgbWV0aG9kKiogdGhhdCBjcmVhdGVzIGEgbmV3IGRhdGUgb2JqZWN0IGZyb20gdGhlIGBOZ2JEYXRlU3RydWN0YCxcbiAgICpcbiAgICogZXguIGBOZ2JEYXRlLmZyb20oe3llYXI6IDIwMDAsIG1vbnRoOiA1LCBkYXk6IDF9KWAuXG4gICAqXG4gICAqIElmIHRoZSBgZGF0ZWAgaXMgYWxyZWFkeSBvZiBgTmdiRGF0ZWAgdHlwZSwgdGhlIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgc2FtZSBvYmplY3QuXG4gICAqL1xuICBzdGF0aWMgZnJvbShkYXRlOiBOZ2JEYXRlU3RydWN0KTogTmdiRGF0ZSB7XG4gICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGUgPyBuZXcgTmdiRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5KSA6IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKSB7XG4gICAgdGhpcy55ZWFyID0gaXNJbnRlZ2VyKHllYXIpID8geWVhciA6IG51bGw7XG4gICAgdGhpcy5tb250aCA9IGlzSW50ZWdlcihtb250aCkgPyBtb250aCA6IG51bGw7XG4gICAgdGhpcy5kYXkgPSBpc0ludGVnZXIoZGF5KSA/IGRheSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGRhdGUgaXMgZXF1YWwgdG8gYW5vdGhlciBkYXRlLlxuICAgKi9cbiAgZXF1YWxzKG90aGVyOiBOZ2JEYXRlU3RydWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMueWVhciA9PT0gb3RoZXIueWVhciAmJiB0aGlzLm1vbnRoID09PSBvdGhlci5tb250aCAmJiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBkYXRlIGlzIGJlZm9yZSBhbm90aGVyIGRhdGUuXG4gICAqL1xuICBiZWZvcmUob3RoZXI6IE5nYkRhdGVTdHJ1Y3QpOiBib29sZWFuIHtcbiAgICBpZiAoIW90aGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMueWVhciA9PT0gb3RoZXIueWVhcikge1xuICAgICAgaWYgKHRoaXMubW9udGggPT09IG90aGVyLm1vbnRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5ID8gZmFsc2UgOiB0aGlzLmRheSA8IG90aGVyLmRheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoIDwgb3RoZXIubW9udGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnllYXIgPCBvdGhlci55ZWFyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZGF0ZSBpcyBhZnRlciBhbm90aGVyIGRhdGUuXG4gICAqL1xuICBhZnRlcihvdGhlcjogTmdiRGF0ZVN0cnVjdCk6IGJvb2xlYW4ge1xuICAgIGlmICghb3RoZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMueWVhciA9PT0gb3RoZXIueWVhcikge1xuICAgICAgaWYgKHRoaXMubW9udGggPT09IG90aGVyLm1vbnRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheSA9PT0gb3RoZXIuZGF5ID8gZmFsc2UgOiB0aGlzLmRheSA+IG90aGVyLmRheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoID4gb3RoZXIubW9udGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnllYXIgPiBvdGhlci55ZWFyO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vdXRpbC91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21KU0RhdGUoanNEYXRlOiBEYXRlKSB7XG4gIHJldHVybiBuZXcgTmdiRGF0ZShqc0RhdGUuZ2V0RnVsbFllYXIoKSwganNEYXRlLmdldE1vbnRoKCkgKyAxLCBqc0RhdGUuZ2V0RGF0ZSgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b0pTRGF0ZShkYXRlOiBOZ2JEYXRlKSB7XG4gIGNvbnN0IGpzRGF0ZSA9IG5ldyBEYXRlKGRhdGUueWVhciwgZGF0ZS5tb250aCAtIDEsIGRhdGUuZGF5LCAxMik7XG4gIC8vIHRoaXMgaXMgZG9uZSBhdm9pZCAzMCAtPiAxOTMwIGNvbnZlcnNpb25cbiAgaWYgKCFpc05hTihqc0RhdGUuZ2V0VGltZSgpKSkge1xuICAgIGpzRGF0ZS5zZXRGdWxsWWVhcihkYXRlLnllYXIpO1xuICB9XG4gIHJldHVybiBqc0RhdGU7XG59XG5cbmV4cG9ydCB0eXBlIE5nYlBlcmlvZCA9ICd5JyB8ICdtJyB8ICdkJztcblxuZXhwb3J0IGZ1bmN0aW9uIE5HQl9EQVRFUElDS0VSX0NBTEVOREFSX0ZBQ1RPUlkoKSB7XG4gIHJldHVybiBuZXcgTmdiQ2FsZW5kYXJHcmVnb3JpYW4oKTtcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2UgdGhhdCByZXByZXNlbnRzIHRoZSBjYWxlbmRhciB1c2VkIGJ5IHRoZSBkYXRlcGlja2VyLlxuICpcbiAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4gWW91IGNhbiBpbmplY3QgaXQgaW4geW91ciBvd25cbiAqIGltcGxlbWVudGF0aW9ucyBpZiBuZWNlc3NhcnkgdG8gc2ltcGxpZnkgYE5nYkRhdGVgIGNhbGN1bGF0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogTkdCX0RBVEVQSUNLRVJfQ0FMRU5EQVJfRkFDVE9SWX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmdiQ2FsZW5kYXIge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgcGVyIHdlZWsuXG4gICAqL1xuICBhYnN0cmFjdCBnZXREYXlzUGVyV2VlaygpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgbW9udGhzIHBlciB5ZWFyLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxIGFuZCByZXR1cm4gWzEsIDIsIC4uLiwgMTJdO1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0TW9udGhzKHllYXI/OiBudW1iZXIpOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHdlZWtzIHBlciBtb250aC5cbiAgICovXG4gIGFic3RyYWN0IGdldFdlZWtzUGVyTW9udGgoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB3ZWVrZGF5IG51bWJlciBmb3IgYSBnaXZlbiBkYXkuXG4gICAqXG4gICAqIFdpdGggdGhlIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnd2Vla2RheScgaXMgMT1Nb24gLi4uIDc9U3VuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRXZWVrZGF5KGRhdGU6IE5nYkRhdGUpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBudW1iZXIgb2YgeWVhcnMsIG1vbnRocyBvciBkYXlzIHRvIGEgZ2l2ZW4gZGF0ZS5cbiAgICpcbiAgICogKiBgcGVyaW9kYCBjYW4gYmUgYHlgLCBgbWAgb3IgYGRgIGFuZCBkZWZhdWx0cyB0byBkYXkuXG4gICAqICogYG51bWJlcmAgZGVmYXVsdHMgdG8gMS5cbiAgICpcbiAgICogQWx3YXlzIHJldHVybnMgYSBuZXcgZGF0ZS5cbiAgICovXG4gIGFic3RyYWN0IGdldE5leHQoZGF0ZTogTmdiRGF0ZSwgcGVyaW9kPzogTmdiUGVyaW9kLCBudW1iZXI/OiBudW1iZXIpOiBOZ2JEYXRlO1xuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBudW1iZXIgb2YgeWVhcnMsIG1vbnRocyBvciBkYXlzIGZyb20gYSBnaXZlbiBkYXRlLlxuICAgKlxuICAgKiAqIGBwZXJpb2RgIGNhbiBiZSBgeWAsIGBtYCBvciBgZGAgYW5kIGRlZmF1bHRzIHRvIGRheS5cbiAgICogKiBgbnVtYmVyYCBkZWZhdWx0cyB0byAxLlxuICAgKlxuICAgKiBBbHdheXMgcmV0dXJucyBhIG5ldyBkYXRlLlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0UHJldihkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q/OiBOZ2JQZXJpb2QsIG51bWJlcj86IG51bWJlcik6IE5nYkRhdGU7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHdlZWsgbnVtYmVyIGZvciBhIGdpdmVuIHdlZWsuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRXZWVrTnVtYmVyKHdlZWs6IE5nYkRhdGVbXSwgZmlyc3REYXlPZldlZWs6IG51bWJlcik6IG51bWJlcjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdG9kYXkncyBkYXRlLlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0VG9kYXkoKTogTmdiRGF0ZTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZGF0ZSBpcyB2YWxpZCBpbiB0aGUgY3VycmVudCBjYWxlbmRhci5cbiAgICovXG4gIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JDYWxlbmRhckdyZWdvcmlhbiBleHRlbmRzIE5nYkNhbGVuZGFyIHtcbiAgZ2V0RGF5c1BlcldlZWsoKSB7IHJldHVybiA3OyB9XG5cbiAgZ2V0TW9udGhzKCkgeyByZXR1cm4gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTJdOyB9XG5cbiAgZ2V0V2Vla3NQZXJNb250aCgpIHsgcmV0dXJuIDY7IH1cblxuICBnZXROZXh0KGRhdGU6IE5nYkRhdGUsIHBlcmlvZDogTmdiUGVyaW9kID0gJ2QnLCBudW1iZXIgPSAxKSB7XG4gICAgbGV0IGpzRGF0ZSA9IHRvSlNEYXRlKGRhdGUpO1xuXG4gICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgIGNhc2UgJ3knOlxuICAgICAgICByZXR1cm4gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyICsgbnVtYmVyLCAxLCAxKTtcbiAgICAgIGNhc2UgJ20nOlxuICAgICAgICBqc0RhdGUgPSBuZXcgRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGggKyBudW1iZXIgLSAxLCAxLCAxMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZCc6XG4gICAgICAgIGpzRGF0ZS5zZXREYXRlKGpzRGF0ZS5nZXREYXRlKCkgKyBudW1iZXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIHJldHVybiBmcm9tSlNEYXRlKGpzRGF0ZSk7XG4gIH1cblxuICBnZXRQcmV2KGRhdGU6IE5nYkRhdGUsIHBlcmlvZDogTmdiUGVyaW9kID0gJ2QnLCBudW1iZXIgPSAxKSB7IHJldHVybiB0aGlzLmdldE5leHQoZGF0ZSwgcGVyaW9kLCAtbnVtYmVyKTsgfVxuXG4gIGdldFdlZWtkYXkoZGF0ZTogTmdiRGF0ZSkge1xuICAgIGxldCBqc0RhdGUgPSB0b0pTRGF0ZShkYXRlKTtcbiAgICBsZXQgZGF5ID0ganNEYXRlLmdldERheSgpO1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgcmV0dXJuIGRheSA9PT0gMCA/IDcgOiBkYXk7XG4gIH1cblxuICBnZXRXZWVrTnVtYmVyKHdlZWs6IE5nYkRhdGVbXSwgZmlyc3REYXlPZldlZWs6IG51bWJlcikge1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgaWYgKGZpcnN0RGF5T2ZXZWVrID09PSA3KSB7XG4gICAgICBmaXJzdERheU9mV2VlayA9IDA7XG4gICAgfVxuXG4gICAgY29uc3QgdGh1cnNkYXlJbmRleCA9ICg0ICsgNyAtIGZpcnN0RGF5T2ZXZWVrKSAlIDc7XG4gICAgbGV0IGRhdGUgPSB3ZWVrW3RodXJzZGF5SW5kZXhdO1xuXG4gICAgY29uc3QganNEYXRlID0gdG9KU0RhdGUoZGF0ZSk7XG4gICAganNEYXRlLnNldERhdGUoanNEYXRlLmdldERhdGUoKSArIDQgLSAoanNEYXRlLmdldERheSgpIHx8IDcpKTsgIC8vIFRodXJzZGF5XG4gICAgY29uc3QgdGltZSA9IGpzRGF0ZS5nZXRUaW1lKCk7XG4gICAganNEYXRlLnNldE1vbnRoKDApOyAgLy8gQ29tcGFyZSB3aXRoIEphbiAxXG4gICAganNEYXRlLnNldERhdGUoMSk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yb3VuZCgodGltZSAtIGpzRGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDApIC8gNykgKyAxO1xuICB9XG5cbiAgZ2V0VG9kYXkoKTogTmdiRGF0ZSB7IHJldHVybiBmcm9tSlNEYXRlKG5ldyBEYXRlKCkpOyB9XG5cbiAgaXNWYWxpZChkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFkYXRlIHx8ICFpc0ludGVnZXIoZGF0ZS55ZWFyKSB8fCAhaXNJbnRlZ2VyKGRhdGUubW9udGgpIHx8ICFpc0ludGVnZXIoZGF0ZS5kYXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8geWVhciAwIGRvZXNuJ3QgZXhpc3QgaW4gR3JlZ29yaWFuIGNhbGVuZGFyXG4gICAgaWYgKGRhdGUueWVhciA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGpzRGF0ZSA9IHRvSlNEYXRlKGRhdGUpO1xuXG4gICAgcmV0dXJuICFpc05hTihqc0RhdGUuZ2V0VGltZSgpKSAmJiBqc0RhdGUuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZS55ZWFyICYmIGpzRGF0ZS5nZXRNb250aCgpICsgMSA9PT0gZGF0ZS5tb250aCAmJlxuICAgICAgICBqc0RhdGUuZ2V0RGF0ZSgpID09PSBkYXRlLmRheTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7RGF0ZXBpY2tlclZpZXdNb2RlbCwgRGF5Vmlld01vZGVsLCBNb250aFZpZXdNb2RlbH0gZnJvbSAnLi9kYXRlcGlja2VyLXZpZXctbW9kZWwnO1xuaW1wb3J0IHtOZ2JDYWxlbmRhcn0gZnJvbSAnLi9uZ2ItY2FsZW5kYXInO1xuaW1wb3J0IHtpc0RlZmluZWR9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJJMThufSBmcm9tICcuL2RhdGVwaWNrZXItaTE4bic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NoYW5nZWREYXRlKHByZXY6IE5nYkRhdGUsIG5leHQ6IE5nYkRhdGUpIHtcbiAgcmV0dXJuICFkYXRlQ29tcGFyYXRvcihwcmV2LCBuZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hhbmdlZE1vbnRoKHByZXY6IE5nYkRhdGUsIG5leHQ6IE5nYkRhdGUpIHtcbiAgcmV0dXJuICFwcmV2ICYmICFuZXh0ID8gZmFsc2UgOiAhcHJldiB8fCAhbmV4dCA/IHRydWUgOiBwcmV2LnllYXIgIT09IG5leHQueWVhciB8fCBwcmV2Lm1vbnRoICE9PSBuZXh0Lm1vbnRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNvbXBhcmF0b3IocHJldjogTmdiRGF0ZSwgbmV4dDogTmdiRGF0ZSkge1xuICByZXR1cm4gKCFwcmV2ICYmICFuZXh0KSB8fCAoISFwcmV2ICYmICEhbmV4dCAmJiBwcmV2LmVxdWFscyhuZXh0KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja01pbkJlZm9yZU1heChtaW5EYXRlOiBOZ2JEYXRlLCBtYXhEYXRlOiBOZ2JEYXRlKSB7XG4gIGlmIChtYXhEYXRlICYmIG1pbkRhdGUgJiYgbWF4RGF0ZS5iZWZvcmUobWluRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCdtYXhEYXRlJyAke21heERhdGV9IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gJ21pbkRhdGUnICR7bWluRGF0ZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEYXRlSW5SYW5nZShkYXRlOiBOZ2JEYXRlLCBtaW5EYXRlOiBOZ2JEYXRlLCBtYXhEYXRlOiBOZ2JEYXRlKTogTmdiRGF0ZSB7XG4gIGlmIChkYXRlICYmIG1pbkRhdGUgJiYgZGF0ZS5iZWZvcmUobWluRGF0ZSkpIHtcbiAgICByZXR1cm4gbWluRGF0ZTtcbiAgfVxuICBpZiAoZGF0ZSAmJiBtYXhEYXRlICYmIGRhdGUuYWZ0ZXIobWF4RGF0ZSkpIHtcbiAgICByZXR1cm4gbWF4RGF0ZTtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlU2VsZWN0YWJsZShkYXRlOiBOZ2JEYXRlLCBzdGF0ZTogRGF0ZXBpY2tlclZpZXdNb2RlbCkge1xuICBjb25zdCB7bWluRGF0ZSwgbWF4RGF0ZSwgZGlzYWJsZWQsIG1hcmtEaXNhYmxlZH0gPSBzdGF0ZTtcbiAgLy8gY2xhbmctZm9ybWF0IG9mZlxuICByZXR1cm4gIShcbiAgICAhaXNEZWZpbmVkKGRhdGUpIHx8XG4gICAgZGlzYWJsZWQgfHxcbiAgICAobWFya0Rpc2FibGVkICYmIG1hcmtEaXNhYmxlZChkYXRlLCB7eWVhcjogZGF0ZS55ZWFyLCBtb250aDogZGF0ZS5tb250aH0pKSB8fFxuICAgIChtaW5EYXRlICYmIGRhdGUuYmVmb3JlKG1pbkRhdGUpKSB8fFxuICAgIChtYXhEYXRlICYmIGRhdGUuYWZ0ZXIobWF4RGF0ZSkpXG4gICk7XG4gIC8vIGNsYW5nLWZvcm1hdCBvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWxlY3RCb3hNb250aHMoY2FsZW5kYXI6IE5nYkNhbGVuZGFyLCBkYXRlOiBOZ2JEYXRlLCBtaW5EYXRlOiBOZ2JEYXRlLCBtYXhEYXRlOiBOZ2JEYXRlKSB7XG4gIGlmICghZGF0ZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGxldCBtb250aHMgPSBjYWxlbmRhci5nZXRNb250aHMoZGF0ZS55ZWFyKTtcblxuICBpZiAobWluRGF0ZSAmJiBkYXRlLnllYXIgPT09IG1pbkRhdGUueWVhcikge1xuICAgIGNvbnN0IGluZGV4ID0gbW9udGhzLmZpbmRJbmRleChtb250aCA9PiBtb250aCA9PT0gbWluRGF0ZS5tb250aCk7XG4gICAgbW9udGhzID0gbW9udGhzLnNsaWNlKGluZGV4KTtcbiAgfVxuXG4gIGlmIChtYXhEYXRlICYmIGRhdGUueWVhciA9PT0gbWF4RGF0ZS55ZWFyKSB7XG4gICAgY29uc3QgaW5kZXggPSBtb250aHMuZmluZEluZGV4KG1vbnRoID0+IG1vbnRoID09PSBtYXhEYXRlLm1vbnRoKTtcbiAgICBtb250aHMgPSBtb250aHMuc2xpY2UoMCwgaW5kZXggKyAxKTtcbiAgfVxuXG4gIHJldHVybiBtb250aHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNlbGVjdEJveFllYXJzKGRhdGU6IE5nYkRhdGUsIG1pbkRhdGU6IE5nYkRhdGUsIG1heERhdGU6IE5nYkRhdGUpIHtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3Qgc3RhcnQgPSBtaW5EYXRlICYmIG1pbkRhdGUueWVhciB8fCBkYXRlLnllYXIgLSAxMDtcbiAgY29uc3QgZW5kID0gbWF4RGF0ZSAmJiBtYXhEYXRlLnllYXIgfHwgZGF0ZS55ZWFyICsgMTA7XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDogZW5kIC0gc3RhcnQgKyAxfSwgKGUsIGkpID0+IHN0YXJ0ICsgaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXh0TW9udGhEaXNhYmxlZChjYWxlbmRhcjogTmdiQ2FsZW5kYXIsIGRhdGU6IE5nYkRhdGUsIG1heERhdGU6IE5nYkRhdGUpIHtcbiAgcmV0dXJuIG1heERhdGUgJiYgY2FsZW5kYXIuZ2V0TmV4dChkYXRlLCAnbScpLmFmdGVyKG1heERhdGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldk1vbnRoRGlzYWJsZWQoY2FsZW5kYXI6IE5nYkNhbGVuZGFyLCBkYXRlOiBOZ2JEYXRlLCBtaW5EYXRlOiBOZ2JEYXRlKSB7XG4gIGNvbnN0IHByZXZEYXRlID0gY2FsZW5kYXIuZ2V0UHJldihkYXRlLCAnbScpO1xuICByZXR1cm4gbWluRGF0ZSAmJiAocHJldkRhdGUueWVhciA9PT0gbWluRGF0ZS55ZWFyICYmIHByZXZEYXRlLm1vbnRoIDwgbWluRGF0ZS5tb250aCB8fFxuICAgICAgICAgICAgICAgICAgICAgcHJldkRhdGUueWVhciA8IG1pbkRhdGUueWVhciAmJiBtaW5EYXRlLm1vbnRoID09PSAxKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTW9udGhzKFxuICAgIGNhbGVuZGFyOiBOZ2JDYWxlbmRhciwgZGF0ZTogTmdiRGF0ZSwgc3RhdGU6IERhdGVwaWNrZXJWaWV3TW9kZWwsIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuLFxuICAgIGZvcmNlOiBib29sZWFuKTogTW9udGhWaWV3TW9kZWxbXSB7XG4gIGNvbnN0IHtkaXNwbGF5TW9udGhzLCBtb250aHN9ID0gc3RhdGU7XG4gIC8vIG1vdmUgb2xkIG1vbnRocyB0byBhIHRlbXBvcmFyeSBhcnJheVxuICBjb25zdCBtb250aHNUb1JldXNlID0gbW9udGhzLnNwbGljZSgwLCBtb250aHMubGVuZ3RoKTtcblxuICAvLyBnZW5lcmF0ZSBuZXcgZmlyc3QgZGF0ZXMsIG51bGxpZnkgb3IgcmV1c2UgbW9udGhzXG4gIGNvbnN0IGZpcnN0RGF0ZXMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IGRpc3BsYXlNb250aHN9LCAoXywgaSkgPT4ge1xuICAgIGNvbnN0IGZpcnN0RGF0ZSA9IGNhbGVuZGFyLmdldE5leHQoZGF0ZSwgJ20nLCBpKTtcbiAgICBtb250aHNbaV0gPSBudWxsO1xuXG4gICAgaWYgKCFmb3JjZSkge1xuICAgICAgY29uc3QgcmV1c2VkSW5kZXggPSBtb250aHNUb1JldXNlLmZpbmRJbmRleChtb250aCA9PiBtb250aC5maXJzdERhdGUuZXF1YWxzKGZpcnN0RGF0ZSkpO1xuICAgICAgLy8gbW92ZSByZXVzZWQgbW9udGggYmFjayB0byBtb250aHNcbiAgICAgIGlmIChyZXVzZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgbW9udGhzW2ldID0gbW9udGhzVG9SZXVzZS5zcGxpY2UocmV1c2VkSW5kZXgsIDEpWzBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaXJzdERhdGU7XG4gIH0pO1xuXG4gIC8vIHJlYnVpbGQgbnVsbGlmaWVkIG1vbnRoc1xuICBmaXJzdERhdGVzLmZvckVhY2goKGZpcnN0RGF0ZSwgaSkgPT4ge1xuICAgIGlmIChtb250aHNbaV0gPT09IG51bGwpIHtcbiAgICAgIG1vbnRoc1tpXSA9IGJ1aWxkTW9udGgoY2FsZW5kYXIsIGZpcnN0RGF0ZSwgc3RhdGUsIGkxOG4sIG1vbnRoc1RvUmV1c2Uuc2hpZnQoKSB8fCB7fSBhcyBNb250aFZpZXdNb2RlbCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbW9udGhzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNb250aChcbiAgICBjYWxlbmRhcjogTmdiQ2FsZW5kYXIsIGRhdGU6IE5nYkRhdGUsIHN0YXRlOiBEYXRlcGlja2VyVmlld01vZGVsLCBpMThuOiBOZ2JEYXRlcGlja2VySTE4bixcbiAgICBtb250aDogTW9udGhWaWV3TW9kZWwgPSB7fSBhcyBNb250aFZpZXdNb2RlbCk6IE1vbnRoVmlld01vZGVsIHtcbiAgY29uc3Qge2RheVRlbXBsYXRlRGF0YSwgbWluRGF0ZSwgbWF4RGF0ZSwgZmlyc3REYXlPZldlZWssIG1hcmtEaXNhYmxlZCwgb3V0c2lkZURheXN9ID0gc3RhdGU7XG4gIGNvbnN0IGNhbGVuZGFyVG9kYXkgPSBjYWxlbmRhci5nZXRUb2RheSgpO1xuXG4gIG1vbnRoLmZpcnN0RGF0ZSA9IG51bGw7XG4gIG1vbnRoLmxhc3REYXRlID0gbnVsbDtcbiAgbW9udGgubnVtYmVyID0gZGF0ZS5tb250aDtcbiAgbW9udGgueWVhciA9IGRhdGUueWVhcjtcbiAgbW9udGgud2Vla3MgPSBtb250aC53ZWVrcyB8fCBbXTtcbiAgbW9udGgud2Vla2RheXMgPSBtb250aC53ZWVrZGF5cyB8fCBbXTtcblxuICBkYXRlID0gZ2V0Rmlyc3RWaWV3RGF0ZShjYWxlbmRhciwgZGF0ZSwgZmlyc3REYXlPZldlZWspO1xuXG4gIC8vIG1vbnRoIGhhcyB3ZWVrc1xuICBmb3IgKGxldCB3ZWVrID0gMDsgd2VlayA8IGNhbGVuZGFyLmdldFdlZWtzUGVyTW9udGgoKTsgd2VlaysrKSB7XG4gICAgbGV0IHdlZWtPYmplY3QgPSBtb250aC53ZWVrc1t3ZWVrXTtcbiAgICBpZiAoIXdlZWtPYmplY3QpIHtcbiAgICAgIHdlZWtPYmplY3QgPSBtb250aC53ZWVrc1t3ZWVrXSA9IHtudW1iZXI6IDAsIGRheXM6IFtdLCBjb2xsYXBzZWQ6IHRydWV9O1xuICAgIH1cbiAgICBjb25zdCBkYXlzID0gd2Vla09iamVjdC5kYXlzO1xuXG4gICAgLy8gd2VlayBoYXMgZGF5c1xuICAgIGZvciAobGV0IGRheSA9IDA7IGRheSA8IGNhbGVuZGFyLmdldERheXNQZXJXZWVrKCk7IGRheSsrKSB7XG4gICAgICBpZiAod2VlayA9PT0gMCkge1xuICAgICAgICBtb250aC53ZWVrZGF5c1tkYXldID0gY2FsZW5kYXIuZ2V0V2Vla2RheShkYXRlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBOZ2JEYXRlKGRhdGUueWVhciwgZGF0ZS5tb250aCwgZGF0ZS5kYXkpO1xuICAgICAgY29uc3QgbmV4dERhdGUgPSBjYWxlbmRhci5nZXROZXh0KG5ld0RhdGUpO1xuXG4gICAgICBjb25zdCBhcmlhTGFiZWwgPSBpMThuLmdldERheUFyaWFMYWJlbChuZXdEYXRlKTtcblxuICAgICAgLy8gbWFya2luZyBkYXRlIGFzIGRpc2FibGVkXG4gICAgICBsZXQgZGlzYWJsZWQgPSAhISgobWluRGF0ZSAmJiBuZXdEYXRlLmJlZm9yZShtaW5EYXRlKSkgfHwgKG1heERhdGUgJiYgbmV3RGF0ZS5hZnRlcihtYXhEYXRlKSkpO1xuICAgICAgaWYgKCFkaXNhYmxlZCAmJiBtYXJrRGlzYWJsZWQpIHtcbiAgICAgICAgZGlzYWJsZWQgPSBtYXJrRGlzYWJsZWQobmV3RGF0ZSwge21vbnRoOiBtb250aC5udW1iZXIsIHllYXI6IG1vbnRoLnllYXJ9KTtcbiAgICAgIH1cblxuICAgICAgLy8gdG9kYXlcbiAgICAgIGxldCB0b2RheSA9IG5ld0RhdGUuZXF1YWxzKGNhbGVuZGFyVG9kYXkpO1xuXG4gICAgICAvLyBhZGRpbmcgdXNlci1wcm92aWRlZCBkYXRhIHRvIHRoZSBjb250ZXh0XG4gICAgICBsZXQgY29udGV4dFVzZXJEYXRhID1cbiAgICAgICAgICBkYXlUZW1wbGF0ZURhdGEgPyBkYXlUZW1wbGF0ZURhdGEobmV3RGF0ZSwge21vbnRoOiBtb250aC5udW1iZXIsIHllYXI6IG1vbnRoLnllYXJ9KSA6IHVuZGVmaW5lZDtcblxuICAgICAgLy8gc2F2aW5nIGZpcnN0IGRhdGUgb2YgdGhlIG1vbnRoXG4gICAgICBpZiAobW9udGguZmlyc3REYXRlID09PSBudWxsICYmIG5ld0RhdGUubW9udGggPT09IG1vbnRoLm51bWJlcikge1xuICAgICAgICBtb250aC5maXJzdERhdGUgPSBuZXdEYXRlO1xuICAgICAgfVxuXG4gICAgICAvLyBzYXZpbmcgbGFzdCBkYXRlIG9mIHRoZSBtb250aFxuICAgICAgaWYgKG5ld0RhdGUubW9udGggPT09IG1vbnRoLm51bWJlciAmJiBuZXh0RGF0ZS5tb250aCAhPT0gbW9udGgubnVtYmVyKSB7XG4gICAgICAgIG1vbnRoLmxhc3REYXRlID0gbmV3RGF0ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRheU9iamVjdCA9IGRheXNbZGF5XTtcbiAgICAgIGlmICghZGF5T2JqZWN0KSB7XG4gICAgICAgIGRheU9iamVjdCA9IGRheXNbZGF5XSA9IHt9IGFzIERheVZpZXdNb2RlbDtcbiAgICAgIH1cbiAgICAgIGRheU9iamVjdC5kYXRlID0gbmV3RGF0ZTtcbiAgICAgIGRheU9iamVjdC5jb250ZXh0ID0gT2JqZWN0LmFzc2lnbihkYXlPYmplY3QuY29udGV4dCB8fCB7fSwge1xuICAgICAgICAkaW1wbGljaXQ6IG5ld0RhdGUsXG4gICAgICAgIGRhdGU6IG5ld0RhdGUsXG4gICAgICAgIGRhdGE6IGNvbnRleHRVc2VyRGF0YSxcbiAgICAgICAgY3VycmVudE1vbnRoOiBtb250aC5udW1iZXIsIGRpc2FibGVkLFxuICAgICAgICBmb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLCB0b2RheVxuICAgICAgfSk7XG4gICAgICBkYXlPYmplY3QudGFiaW5kZXggPSAtMTtcbiAgICAgIGRheU9iamVjdC5hcmlhTGFiZWwgPSBhcmlhTGFiZWw7XG4gICAgICBkYXlPYmplY3QuaGlkZGVuID0gZmFsc2U7XG5cbiAgICAgIGRhdGUgPSBuZXh0RGF0ZTtcbiAgICB9XG5cbiAgICB3ZWVrT2JqZWN0Lm51bWJlciA9IGNhbGVuZGFyLmdldFdlZWtOdW1iZXIoZGF5cy5tYXAoZGF5ID0+IGRheS5kYXRlKSwgZmlyc3REYXlPZldlZWspO1xuXG4gICAgLy8gbWFya2luZyB3ZWVrIGFzIGNvbGxhcHNlZFxuICAgIHdlZWtPYmplY3QuY29sbGFwc2VkID0gb3V0c2lkZURheXMgPT09ICdjb2xsYXBzZWQnICYmIGRheXNbMF0uZGF0ZS5tb250aCAhPT0gbW9udGgubnVtYmVyICYmXG4gICAgICAgIGRheXNbZGF5cy5sZW5ndGggLSAxXS5kYXRlLm1vbnRoICE9PSBtb250aC5udW1iZXI7XG4gIH1cblxuICByZXR1cm4gbW9udGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJzdFZpZXdEYXRlKGNhbGVuZGFyOiBOZ2JDYWxlbmRhciwgZGF0ZTogTmdiRGF0ZSwgZmlyc3REYXlPZldlZWs6IG51bWJlcik6IE5nYkRhdGUge1xuICBjb25zdCBkYXlzUGVyV2VlayA9IGNhbGVuZGFyLmdldERheXNQZXJXZWVrKCk7XG4gIGNvbnN0IGZpcnN0TW9udGhEYXRlID0gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCAxKTtcbiAgY29uc3QgZGF5T2ZXZWVrID0gY2FsZW5kYXIuZ2V0V2Vla2RheShmaXJzdE1vbnRoRGF0ZSkgJSBkYXlzUGVyV2VlaztcbiAgcmV0dXJuIGNhbGVuZGFyLmdldFByZXYoZmlyc3RNb250aERhdGUsICdkJywgKGRheXNQZXJXZWVrICsgZGF5T2ZXZWVrIC0gZmlyc3REYXlPZldlZWspICUgZGF5c1BlcldlZWspO1xufVxuIiwiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1TdHlsZSwgZ2V0TG9jYWxlRGF5TmFtZXMsIGdldExvY2FsZU1vbnRoTmFtZXMsIFRyYW5zbGF0aW9uV2lkdGgsIGZvcm1hdERhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4vbmdiLWRhdGUtc3RydWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIE5HQl9EQVRFUElDS0VSXzE4Tl9GQUNUT1JZKGxvY2FsZSkge1xuICByZXR1cm4gbmV3IE5nYkRhdGVwaWNrZXJJMThuRGVmYXVsdChsb2NhbGUpO1xufVxuXG4vKipcbiAqIEEgc2VydmljZSBzdXBwbHlpbmcgaTE4biBkYXRhIHRvIHRoZSBkYXRlcGlja2VyIGNvbXBvbmVudC5cbiAqXG4gKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHNlcnZpY2UgdXNlcyB0aGUgQW5ndWxhciBsb2NhbGUgYW5kIHJlZ2lzdGVyZWQgbG9jYWxlIGRhdGEgZm9yXG4gKiB3ZWVrZGF5cyBhbmQgbW9udGggbmFtZXMgKGFzIGV4cGxhaW5lZCBpbiB0aGUgQW5ndWxhciBpMThuIGd1aWRlKS5cbiAqXG4gKiBJdCBhbHNvIHByb3ZpZGVzIGEgd2F5IHRvIGkxOG4gZGF0YSB0aGF0IGRlcGVuZHMgb24gY2FsZW5kYXIgY2FsY3VsYXRpb25zLCBsaWtlIGFyaWEgbGFiZWxzLCBkYXksIHdlZWsgYW5kIHllYXJcbiAqIG51bWVyYWxzLiBGb3Igb3RoZXIgc3RhdGljIGxhYmVscyB0aGUgZGF0ZXBpY2tlciB1c2VzIHRoZSBkZWZhdWx0IEFuZ3VsYXIgaTE4bi5cbiAqXG4gKiBTZWUgdGhlIFtpMThuIGRlbW9dKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL2V4YW1wbGVzI2kxOG4pIGFuZFxuICogW0hlYnJldyBjYWxlbmRhciBkZW1vXSgjL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhcnMjaGVicmV3KSBvbiBob3cgdG8gZXh0ZW5kIHRoaXMgY2xhc3MgYW5kIGRlZmluZVxuICogYSBjdXN0b20gcHJvdmlkZXIgZm9yIGkxOG4uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCcsIHVzZUZhY3Rvcnk6IE5HQl9EQVRFUElDS0VSXzE4Tl9GQUNUT1JZLCBkZXBzOiBbTE9DQUxFX0lEXX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmdiRGF0ZXBpY2tlckkxOG4ge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2hvcnQgd2Vla2RheSBuYW1lIHRvIGRpc3BsYXkgaW4gdGhlIGhlYWRpbmcgb2YgdGhlIG1vbnRoIHZpZXcuXG4gICAqXG4gICAqIFdpdGggZGVmYXVsdCBjYWxlbmRhciB3ZSB1c2UgSVNPIDg2MDE6ICd3ZWVrZGF5JyBpcyAxPU1vbiAuLi4gNz1TdW4uXG4gICAqL1xuICBhYnN0cmFjdCBnZXRXZWVrZGF5U2hvcnROYW1lKHdlZWtkYXk6IG51bWJlcik6IHN0cmluZztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2hvcnQgbW9udGggbmFtZSB0byBkaXNwbGF5IGluIHRoZSBkYXRlIHBpY2tlciBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnbW9udGgnIGlzIDE9SmFuIC4uLiAxMj1EZWMuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRNb250aFNob3J0TmFtZShtb250aDogbnVtYmVyLCB5ZWFyPzogbnVtYmVyKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIG1vbnRoIG5hbWUgdG8gZGlzcGxheSBpbiB0aGUgZGF0ZSBwaWNrZXIgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogV2l0aCBkZWZhdWx0IGNhbGVuZGFyIHdlIHVzZSBJU08gODYwMTogJ21vbnRoJyBpcyAxPUphbiAuLi4gMTI9RGVjLlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0TW9udGhGdWxsTmFtZShtb250aDogbnVtYmVyLCB5ZWFyPzogbnVtYmVyKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSBmb3IgYSBzcGVjaWZpYyBkYXRlLlxuICAgKlxuICAgKiBAc2luY2UgMi4wLjBcbiAgICovXG4gIGFic3RyYWN0IGdldERheUFyaWFMYWJlbChkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgZGF5IHRoYXQgaXMgcmVuZGVyZWQgaW4gYSBkYXkgY2VsbC5cbiAgICpcbiAgICogQHNpbmNlIDMuMC4wXG4gICAqL1xuICBnZXREYXlOdW1lcmFscyhkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nIHsgcmV0dXJuIGAke2RhdGUuZGF5fWA7IH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIHdlZWsgbnVtYmVyIHJlbmRlcmVkIGJ5IGRhdGVwaWNrZXIuXG4gICAqXG4gICAqIEBzaW5jZSAzLjAuMFxuICAgKi9cbiAgZ2V0V2Vla051bWVyYWxzKHdlZWtOdW1iZXI6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBgJHt3ZWVrTnVtYmVyfWA7IH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIHllYXIgdGhhdCBpcyByZW5kZXJlZCBpbiB0aGUgZGF0ZXBpY2tlciB5ZWFyIHNlbGVjdCBib3guXG4gICAqXG4gICAqIEBzaW5jZSAzLjAuMFxuICAgKi9cbiAgZ2V0WWVhck51bWVyYWxzKHllYXI6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBgJHt5ZWFyfWA7IH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJJMThuRGVmYXVsdCBleHRlbmRzIE5nYkRhdGVwaWNrZXJJMThuIHtcbiAgcHJpdmF0ZSBfd2Vla2RheXNTaG9ydDogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSBfbW9udGhzU2hvcnQ6IEFycmF5PHN0cmluZz47XG4gIHByaXZhdGUgX21vbnRoc0Z1bGw6IEFycmF5PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGNvbnN0IHdlZWtkYXlzU3RhcnRpbmdPblN1bmRheSA9IGdldExvY2FsZURheU5hbWVzKF9sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLlNob3J0KTtcbiAgICB0aGlzLl93ZWVrZGF5c1Nob3J0ID0gd2Vla2RheXNTdGFydGluZ09uU3VuZGF5Lm1hcCgoZGF5LCBpbmRleCkgPT4gd2Vla2RheXNTdGFydGluZ09uU3VuZGF5WyhpbmRleCArIDEpICUgN10pO1xuXG4gICAgdGhpcy5fbW9udGhzU2hvcnQgPSBnZXRMb2NhbGVNb250aE5hbWVzKF9sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLkFiYnJldmlhdGVkKTtcbiAgICB0aGlzLl9tb250aHNGdWxsID0gZ2V0TG9jYWxlTW9udGhOYW1lcyhfbG9jYWxlLCBGb3JtU3R5bGUuU3RhbmRhbG9uZSwgVHJhbnNsYXRpb25XaWR0aC5XaWRlKTtcbiAgfVxuXG4gIGdldFdlZWtkYXlTaG9ydE5hbWUod2Vla2RheTogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRbd2Vla2RheSAtIDFdOyB9XG5cbiAgZ2V0TW9udGhTaG9ydE5hbWUobW9udGg6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiB0aGlzLl9tb250aHNTaG9ydFttb250aCAtIDFdOyB9XG5cbiAgZ2V0TW9udGhGdWxsTmFtZShtb250aDogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX21vbnRoc0Z1bGxbbW9udGggLSAxXTsgfVxuXG4gIGdldERheUFyaWFMYWJlbChkYXRlOiBOZ2JEYXRlU3RydWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBqc0RhdGUgPSBuZXcgRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGggLSAxLCBkYXRlLmRheSk7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUoanNEYXRlLCAnZnVsbERhdGUnLCB0aGlzLl9sb2NhbGUpO1xuICB9XG59XG4iLCJpbXBvcnQge05nYkNhbGVuZGFyLCBOZ2JQZXJpb2R9IGZyb20gJy4vbmdiLWNhbGVuZGFyJztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4vbmdiLWRhdGUtc3RydWN0JztcbmltcG9ydCB7RGF0ZXBpY2tlclZpZXdNb2RlbCwgTmdiRGF5VGVtcGxhdGVEYXRhLCBOZ2JNYXJrRGlzYWJsZWR9IGZyb20gJy4vZGF0ZXBpY2tlci12aWV3LW1vZGVsJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzSW50ZWdlciwgdG9JbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGJ1aWxkTW9udGhzLFxuICBjaGVja0RhdGVJblJhbmdlLFxuICBjaGVja01pbkJlZm9yZU1heCxcbiAgaXNDaGFuZ2VkRGF0ZSxcbiAgaXNDaGFuZ2VkTW9udGgsXG4gIGlzRGF0ZVNlbGVjdGFibGUsXG4gIGdlbmVyYXRlU2VsZWN0Qm94WWVhcnMsXG4gIGdlbmVyYXRlU2VsZWN0Qm94TW9udGhzLFxuICBwcmV2TW9udGhEaXNhYmxlZCxcbiAgbmV4dE1vbnRoRGlzYWJsZWRcbn0gZnJvbSAnLi9kYXRlcGlja2VyLXRvb2xzJztcblxuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlckkxOG59IGZyb20gJy4vZGF0ZXBpY2tlci1pMThuJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbW9kZWwkID0gbmV3IFN1YmplY3Q8RGF0ZXBpY2tlclZpZXdNb2RlbD4oKTtcblxuICBwcml2YXRlIF9zZWxlY3QkID0gbmV3IFN1YmplY3Q8TmdiRGF0ZT4oKTtcblxuICBwcml2YXRlIF9zdGF0ZTogRGF0ZXBpY2tlclZpZXdNb2RlbCA9IHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZGlzcGxheU1vbnRoczogMSxcbiAgICBmaXJzdERheU9mV2VlazogMSxcbiAgICBmb2N1c1Zpc2libGU6IGZhbHNlLFxuICAgIG1vbnRoczogW10sXG4gICAgbmF2aWdhdGlvbjogJ3NlbGVjdCcsXG4gICAgb3V0c2lkZURheXM6ICd2aXNpYmxlJyxcbiAgICBwcmV2RGlzYWJsZWQ6IGZhbHNlLFxuICAgIG5leHREaXNhYmxlZDogZmFsc2UsXG4gICAgc2VsZWN0Qm94ZXM6IHt5ZWFyczogW10sIG1vbnRoczogW119LFxuICAgIHNlbGVjdGVkRGF0ZTogbnVsbFxuICB9O1xuXG4gIGdldCBtb2RlbCQoKTogT2JzZXJ2YWJsZTxEYXRlcGlja2VyVmlld01vZGVsPiB7IHJldHVybiB0aGlzLl9tb2RlbCQucGlwZShmaWx0ZXIobW9kZWwgPT4gbW9kZWwubW9udGhzLmxlbmd0aCA+IDApKTsgfVxuXG4gIGdldCBzZWxlY3QkKCk6IE9ic2VydmFibGU8TmdiRGF0ZT4geyByZXR1cm4gdGhpcy5fc2VsZWN0JC5waXBlKGZpbHRlcihkYXRlID0+IGRhdGUgIT09IG51bGwpKTsgfVxuXG4gIHNldCBkYXlUZW1wbGF0ZURhdGEoZGF5VGVtcGxhdGVEYXRhOiBOZ2JEYXlUZW1wbGF0ZURhdGEpIHtcbiAgICBpZiAodGhpcy5fc3RhdGUuZGF5VGVtcGxhdGVEYXRhICE9PSBkYXlUZW1wbGF0ZURhdGEpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7ZGF5VGVtcGxhdGVEYXRhfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLmRpc2FibGVkICE9PSBkaXNhYmxlZCkge1xuICAgICAgdGhpcy5fbmV4dFN0YXRlKHtkaXNhYmxlZH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBkaXNwbGF5TW9udGhzKGRpc3BsYXlNb250aHM6IG51bWJlcikge1xuICAgIGRpc3BsYXlNb250aHMgPSB0b0ludGVnZXIoZGlzcGxheU1vbnRocyk7XG4gICAgaWYgKGlzSW50ZWdlcihkaXNwbGF5TW9udGhzKSAmJiBkaXNwbGF5TW9udGhzID4gMCAmJiB0aGlzLl9zdGF0ZS5kaXNwbGF5TW9udGhzICE9PSBkaXNwbGF5TW9udGhzKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe2Rpc3BsYXlNb250aHN9KTtcbiAgICB9XG4gIH1cblxuICBzZXQgZmlyc3REYXlPZldlZWsoZmlyc3REYXlPZldlZWs6IG51bWJlcikge1xuICAgIGZpcnN0RGF5T2ZXZWVrID0gdG9JbnRlZ2VyKGZpcnN0RGF5T2ZXZWVrKTtcbiAgICBpZiAoaXNJbnRlZ2VyKGZpcnN0RGF5T2ZXZWVrKSAmJiBmaXJzdERheU9mV2VlayA+PSAwICYmIHRoaXMuX3N0YXRlLmZpcnN0RGF5T2ZXZWVrICE9PSBmaXJzdERheU9mV2Vlaykge1xuICAgICAgdGhpcy5fbmV4dFN0YXRlKHtmaXJzdERheU9mV2Vla30pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBmb2N1c1Zpc2libGUoZm9jdXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLmZvY3VzVmlzaWJsZSAhPT0gZm9jdXNWaXNpYmxlICYmICF0aGlzLl9zdGF0ZS5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fbmV4dFN0YXRlKHtmb2N1c1Zpc2libGV9KTtcbiAgICB9XG4gIH1cblxuICBzZXQgbWF4RGF0ZShkYXRlOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMudG9WYWxpZERhdGUoZGF0ZSwgbnVsbCk7XG4gICAgaWYgKGlzQ2hhbmdlZERhdGUodGhpcy5fc3RhdGUubWF4RGF0ZSwgbWF4RGF0ZSkpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7bWF4RGF0ZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBtYXJrRGlzYWJsZWQobWFya0Rpc2FibGVkOiBOZ2JNYXJrRGlzYWJsZWQpIHtcbiAgICBpZiAodGhpcy5fc3RhdGUubWFya0Rpc2FibGVkICE9PSBtYXJrRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7bWFya0Rpc2FibGVkfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IG1pbkRhdGUoZGF0ZTogTmdiRGF0ZSkge1xuICAgIGNvbnN0IG1pbkRhdGUgPSB0aGlzLnRvVmFsaWREYXRlKGRhdGUsIG51bGwpO1xuICAgIGlmIChpc0NoYW5nZWREYXRlKHRoaXMuX3N0YXRlLm1pbkRhdGUsIG1pbkRhdGUpKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe21pbkRhdGV9KTtcbiAgICB9XG4gIH1cblxuICBzZXQgbmF2aWdhdGlvbihuYXZpZ2F0aW9uOiAnc2VsZWN0JyB8ICdhcnJvd3MnIHwgJ25vbmUnKSB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLm5hdmlnYXRpb24gIT09IG5hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7bmF2aWdhdGlvbn0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBvdXRzaWRlRGF5cyhvdXRzaWRlRGF5czogJ3Zpc2libGUnIHwgJ2NvbGxhcHNlZCcgfCAnaGlkZGVuJykge1xuICAgIGlmICh0aGlzLl9zdGF0ZS5vdXRzaWRlRGF5cyAhPT0gb3V0c2lkZURheXMpIHtcbiAgICAgIHRoaXMuX25leHRTdGF0ZSh7b3V0c2lkZURheXN9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jYWxlbmRhcjogTmdiQ2FsZW5kYXIsIHByaXZhdGUgX2kxOG46IE5nYkRhdGVwaWNrZXJJMThuKSB7fVxuXG4gIGZvY3VzKGRhdGU6IE5nYkRhdGUpIHtcbiAgICBpZiAoIXRoaXMuX3N0YXRlLmRpc2FibGVkICYmIHRoaXMuX2NhbGVuZGFyLmlzVmFsaWQoZGF0ZSkgJiYgaXNDaGFuZ2VkRGF0ZSh0aGlzLl9zdGF0ZS5mb2N1c0RhdGUsIGRhdGUpKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe2ZvY3VzRGF0ZTogZGF0ZX0pO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzTW92ZShwZXJpb2Q/OiBOZ2JQZXJpb2QsIG51bWJlcj86IG51bWJlcikge1xuICAgIHRoaXMuZm9jdXModGhpcy5fY2FsZW5kYXIuZ2V0TmV4dCh0aGlzLl9zdGF0ZS5mb2N1c0RhdGUsIHBlcmlvZCwgbnVtYmVyKSk7XG4gIH1cblxuICBmb2N1c1NlbGVjdCgpIHtcbiAgICBpZiAoaXNEYXRlU2VsZWN0YWJsZSh0aGlzLl9zdGF0ZS5mb2N1c0RhdGUsIHRoaXMuX3N0YXRlKSkge1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5fc3RhdGUuZm9jdXNEYXRlLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgfVxuICB9XG5cbiAgb3BlbihkYXRlOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgZmlyc3REYXRlID0gdGhpcy50b1ZhbGlkRGF0ZShkYXRlLCB0aGlzLl9jYWxlbmRhci5nZXRUb2RheSgpKTtcbiAgICBpZiAoIXRoaXMuX3N0YXRlLmRpc2FibGVkICYmICghdGhpcy5fc3RhdGUuZmlyc3REYXRlIHx8IGlzQ2hhbmdlZE1vbnRoKHRoaXMuX3N0YXRlLmZpcnN0RGF0ZSwgZGF0ZSkpKSB7XG4gICAgICB0aGlzLl9uZXh0U3RhdGUoe2ZpcnN0RGF0ZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChkYXRlOiBOZ2JEYXRlLCBvcHRpb25zOiB7ZW1pdEV2ZW50PzogYm9vbGVhbn0gPSB7fSkge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMudG9WYWxpZERhdGUoZGF0ZSwgbnVsbCk7XG4gICAgaWYgKCF0aGlzLl9zdGF0ZS5kaXNhYmxlZCkge1xuICAgICAgaWYgKGlzQ2hhbmdlZERhdGUodGhpcy5fc3RhdGUuc2VsZWN0ZWREYXRlLCBzZWxlY3RlZERhdGUpKSB7XG4gICAgICAgIHRoaXMuX25leHRTdGF0ZSh7c2VsZWN0ZWREYXRlfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmVtaXRFdmVudCAmJiBpc0RhdGVTZWxlY3RhYmxlKHNlbGVjdGVkRGF0ZSwgdGhpcy5fc3RhdGUpKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdCQubmV4dChzZWxlY3RlZERhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRvVmFsaWREYXRlKGRhdGU6IE5nYkRhdGVTdHJ1Y3QsIGRlZmF1bHRWYWx1ZT86IE5nYkRhdGUpOiBOZ2JEYXRlIHtcbiAgICBjb25zdCBuZ2JEYXRlID0gTmdiRGF0ZS5mcm9tKGRhdGUpO1xuICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5fY2FsZW5kYXIuZ2V0VG9kYXkoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmlzVmFsaWQobmdiRGF0ZSkgPyBuZ2JEYXRlIDogZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmV4dFN0YXRlKHBhdGNoOiBQYXJ0aWFsPERhdGVwaWNrZXJWaWV3TW9kZWw+KSB7XG4gICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLl91cGRhdGVTdGF0ZShwYXRjaCk7XG4gICAgdGhpcy5fcGF0Y2hDb250ZXh0cyhuZXdTdGF0ZSk7XG4gICAgdGhpcy5fc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICB0aGlzLl9tb2RlbCQubmV4dCh0aGlzLl9zdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIF9wYXRjaENvbnRleHRzKHN0YXRlOiBEYXRlcGlja2VyVmlld01vZGVsKSB7XG4gICAgY29uc3Qge21vbnRocywgZGlzcGxheU1vbnRocywgc2VsZWN0ZWREYXRlLCBmb2N1c0RhdGUsIGZvY3VzVmlzaWJsZSwgZGlzYWJsZWQsIG91dHNpZGVEYXlzfSA9IHN0YXRlO1xuICAgIHN0YXRlLm1vbnRocy5mb3JFYWNoKG1vbnRoID0+IHtcbiAgICAgIG1vbnRoLndlZWtzLmZvckVhY2god2VlayA9PiB7XG4gICAgICAgIHdlZWsuZGF5cy5mb3JFYWNoKGRheSA9PiB7XG5cbiAgICAgICAgICAvLyBwYXRjaCBmb2N1cyBmbGFnXG4gICAgICAgICAgaWYgKGZvY3VzRGF0ZSkge1xuICAgICAgICAgICAgZGF5LmNvbnRleHQuZm9jdXNlZCA9IGZvY3VzRGF0ZS5lcXVhbHMoZGF5LmRhdGUpICYmIGZvY3VzVmlzaWJsZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBjYWxjdWxhdGluZyB0YWJpbmRleFxuICAgICAgICAgIGRheS50YWJpbmRleCA9ICFkaXNhYmxlZCAmJiBkYXkuZGF0ZS5lcXVhbHMoZm9jdXNEYXRlKSAmJiBmb2N1c0RhdGUubW9udGggPT09IG1vbnRoLm51bWJlciA/IDAgOiAtMTtcblxuICAgICAgICAgIC8vIG92ZXJyaWRlIGNvbnRleHQgZGlzYWJsZWRcbiAgICAgICAgICBpZiAoZGlzYWJsZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGRheS5jb250ZXh0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBwYXRjaCBzZWxlY3Rpb24gZmxhZ1xuICAgICAgICAgIGlmIChzZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGF5LmNvbnRleHQuc2VsZWN0ZWQgPSBzZWxlY3RlZERhdGUgIT09IG51bGwgJiYgc2VsZWN0ZWREYXRlLmVxdWFscyhkYXkuZGF0ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdmlzaWJpbGl0eVxuICAgICAgICAgIGlmIChtb250aC5udW1iZXIgIT09IGRheS5kYXRlLm1vbnRoKSB7XG4gICAgICAgICAgICBkYXkuaGlkZGVuID0gb3V0c2lkZURheXMgPT09ICdoaWRkZW4nIHx8IG91dHNpZGVEYXlzID09PSAnY29sbGFwc2VkJyB8fFxuICAgICAgICAgICAgICAgIChkaXNwbGF5TW9udGhzID4gMSAmJiBkYXkuZGF0ZS5hZnRlcihtb250aHNbMF0uZmlyc3REYXRlKSAmJlxuICAgICAgICAgICAgICAgICBkYXkuZGF0ZS5iZWZvcmUobW9udGhzW2Rpc3BsYXlNb250aHMgLSAxXS5sYXN0RGF0ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVN0YXRlKHBhdGNoOiBQYXJ0aWFsPERhdGVwaWNrZXJWaWV3TW9kZWw+KTogRGF0ZXBpY2tlclZpZXdNb2RlbCB7XG4gICAgLy8gcGF0Y2hpbmcgZmllbGRzXG4gICAgY29uc3Qgc3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9zdGF0ZSwgcGF0Y2gpO1xuXG4gICAgbGV0IHN0YXJ0RGF0ZSA9IHN0YXRlLmZpcnN0RGF0ZTtcblxuICAgIC8vIG1pbi9tYXggZGF0ZXMgY2hhbmdlZFxuICAgIGlmICgnbWluRGF0ZScgaW4gcGF0Y2ggfHwgJ21heERhdGUnIGluIHBhdGNoKSB7XG4gICAgICBjaGVja01pbkJlZm9yZU1heChzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXRlLmZvY3VzRGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZm9jdXNEYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXRlLmZpcnN0RGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZmlyc3REYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXJ0RGF0ZSA9IHN0YXRlLmZvY3VzRGF0ZTtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGlmICgnZGlzYWJsZWQnIGluIHBhdGNoKSB7XG4gICAgICBzdGF0ZS5mb2N1c1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBpbml0aWFsIHJlYnVpbGQgdmlhICdzZWxlY3QoKSdcbiAgICBpZiAoJ3NlbGVjdGVkRGF0ZScgaW4gcGF0Y2ggJiYgdGhpcy5fc3RhdGUubW9udGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc3RhcnREYXRlID0gc3RhdGUuc2VsZWN0ZWREYXRlO1xuICAgIH1cblxuICAgIC8vIHRlcm1pbmF0ZSBlYXJseSBpZiBvbmx5IGZvY3VzIHZpc2liaWxpdHkgd2FzIGNoYW5nZWRcbiAgICBpZiAoJ2ZvY3VzVmlzaWJsZScgaW4gcGF0Y2gpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICAvLyBmb2N1cyBkYXRlIGNoYW5nZWRcbiAgICBpZiAoJ2ZvY3VzRGF0ZScgaW4gcGF0Y2gpIHtcbiAgICAgIHN0YXRlLmZvY3VzRGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZm9jdXNEYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXJ0RGF0ZSA9IHN0YXRlLmZvY3VzRGF0ZTtcblxuICAgICAgLy8gbm90aGluZyB0byByZWJ1aWxkIGlmIG9ubHkgZm9jdXMgY2hhbmdlZCBhbmQgaXQgaXMgc3RpbGwgdmlzaWJsZVxuICAgICAgaWYgKHN0YXRlLm1vbnRocy5sZW5ndGggIT09IDAgJiYgIXN0YXRlLmZvY3VzRGF0ZS5iZWZvcmUoc3RhdGUuZmlyc3REYXRlKSAmJlxuICAgICAgICAgICFzdGF0ZS5mb2N1c0RhdGUuYWZ0ZXIoc3RhdGUubGFzdERhdGUpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmaXJzdCBkYXRlIGNoYW5nZWRcbiAgICBpZiAoJ2ZpcnN0RGF0ZScgaW4gcGF0Y2gpIHtcbiAgICAgIHN0YXRlLmZpcnN0RGF0ZSA9IGNoZWNrRGF0ZUluUmFuZ2Uoc3RhdGUuZmlyc3REYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgIHN0YXJ0RGF0ZSA9IHN0YXRlLmZpcnN0RGF0ZTtcbiAgICB9XG5cbiAgICAvLyByZWJ1aWxkaW5nIG1vbnRoc1xuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIGNvbnN0IGZvcmNlUmVidWlsZCA9ICdkYXlUZW1wbGF0ZURhdGEnIGluIHBhdGNoIHx8ICdmaXJzdERheU9mV2VlaycgaW4gcGF0Y2ggfHwgJ21hcmtEaXNhYmxlZCcgaW4gcGF0Y2ggfHxcbiAgICAgICAgICAnbWluRGF0ZScgaW4gcGF0Y2ggfHwgJ21heERhdGUnIGluIHBhdGNoIHx8ICdkaXNhYmxlZCcgaW4gcGF0Y2ggfHwgJ291dHNpZGVEYXlzJyBpbiBwYXRjaDtcblxuICAgICAgY29uc3QgbW9udGhzID0gYnVpbGRNb250aHModGhpcy5fY2FsZW5kYXIsIHN0YXJ0RGF0ZSwgc3RhdGUsIHRoaXMuX2kxOG4sIGZvcmNlUmVidWlsZCk7XG5cbiAgICAgIC8vIHVwZGF0aW5nIG1vbnRocyBhbmQgYm91bmRhcnkgZGF0ZXNcbiAgICAgIHN0YXRlLm1vbnRocyA9IG1vbnRocztcbiAgICAgIHN0YXRlLmZpcnN0RGF0ZSA9IG1vbnRocy5sZW5ndGggPiAwID8gbW9udGhzWzBdLmZpcnN0RGF0ZSA6IHVuZGVmaW5lZDtcbiAgICAgIHN0YXRlLmxhc3REYXRlID0gbW9udGhzLmxlbmd0aCA+IDAgPyBtb250aHNbbW9udGhzLmxlbmd0aCAtIDFdLmxhc3REYXRlIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyByZXNldCBzZWxlY3RlZCBkYXRlIGlmICdtYXJrRGlzYWJsZWQnIHJldHVybnMgdHJ1ZVxuICAgICAgaWYgKCdzZWxlY3RlZERhdGUnIGluIHBhdGNoICYmICFpc0RhdGVTZWxlY3RhYmxlKHN0YXRlLnNlbGVjdGVkRGF0ZSwgc3RhdGUpKSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkRGF0ZSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIGFkanVzdGluZyBmb2N1cyBhZnRlciBtb250aHMgd2VyZSBidWlsdFxuICAgICAgaWYgKCdmaXJzdERhdGUnIGluIHBhdGNoKSB7XG4gICAgICAgIGlmIChzdGF0ZS5mb2N1c0RhdGUgPT09IHVuZGVmaW5lZCB8fCBzdGF0ZS5mb2N1c0RhdGUuYmVmb3JlKHN0YXRlLmZpcnN0RGF0ZSkgfHxcbiAgICAgICAgICAgIHN0YXRlLmZvY3VzRGF0ZS5hZnRlcihzdGF0ZS5sYXN0RGF0ZSkpIHtcbiAgICAgICAgICBzdGF0ZS5mb2N1c0RhdGUgPSBzdGFydERhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gYWRqdXN0aW5nIG1vbnRocy95ZWFycyBmb3IgdGhlIHNlbGVjdCBib3ggbmF2aWdhdGlvblxuICAgICAgY29uc3QgeWVhckNoYW5nZWQgPSAhdGhpcy5fc3RhdGUuZmlyc3REYXRlIHx8IHRoaXMuX3N0YXRlLmZpcnN0RGF0ZS55ZWFyICE9PSBzdGF0ZS5maXJzdERhdGUueWVhcjtcbiAgICAgIGNvbnN0IG1vbnRoQ2hhbmdlZCA9ICF0aGlzLl9zdGF0ZS5maXJzdERhdGUgfHwgdGhpcy5fc3RhdGUuZmlyc3REYXRlLm1vbnRoICE9PSBzdGF0ZS5maXJzdERhdGUubW9udGg7XG4gICAgICBpZiAoc3RhdGUubmF2aWdhdGlvbiA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgLy8geWVhcnMgLT4gIGJvdW5kYXJpZXMgKG1pbi9tYXggd2VyZSBjaGFuZ2VkKVxuICAgICAgICBpZiAoJ21pbkRhdGUnIGluIHBhdGNoIHx8ICdtYXhEYXRlJyBpbiBwYXRjaCB8fCBzdGF0ZS5zZWxlY3RCb3hlcy55ZWFycy5sZW5ndGggPT09IDAgfHwgeWVhckNoYW5nZWQpIHtcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RCb3hlcy55ZWFycyA9IGdlbmVyYXRlU2VsZWN0Qm94WWVhcnMoc3RhdGUuZmlyc3REYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG1vbnRocyAtPiB3aGVuIGN1cnJlbnQgeWVhciBvciBib3VuZGFyaWVzIGNoYW5nZVxuICAgICAgICBpZiAoJ21pbkRhdGUnIGluIHBhdGNoIHx8ICdtYXhEYXRlJyBpbiBwYXRjaCB8fCBzdGF0ZS5zZWxlY3RCb3hlcy5tb250aHMubGVuZ3RoID09PSAwIHx8IHllYXJDaGFuZ2VkKSB7XG4gICAgICAgICAgc3RhdGUuc2VsZWN0Qm94ZXMubW9udGhzID1cbiAgICAgICAgICAgICAgZ2VuZXJhdGVTZWxlY3RCb3hNb250aHModGhpcy5fY2FsZW5kYXIsIHN0YXRlLmZpcnN0RGF0ZSwgc3RhdGUubWluRGF0ZSwgc3RhdGUubWF4RGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdEJveGVzID0ge3llYXJzOiBbXSwgbW9udGhzOiBbXX07XG4gICAgICB9XG5cbiAgICAgIC8vIHVwZGF0aW5nIG5hdmlnYXRpb24gYXJyb3dzIC0+IGJvdW5kYXJpZXMgY2hhbmdlIChtaW4vbWF4KSBvciBtb250aC95ZWFyIGNoYW5nZXNcbiAgICAgIGlmICgoc3RhdGUubmF2aWdhdGlvbiA9PT0gJ2Fycm93cycgfHwgc3RhdGUubmF2aWdhdGlvbiA9PT0gJ3NlbGVjdCcpICYmXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlZCB8fCB5ZWFyQ2hhbmdlZCB8fCAnbWluRGF0ZScgaW4gcGF0Y2ggfHwgJ21heERhdGUnIGluIHBhdGNoIHx8ICdkaXNhYmxlZCcgaW4gcGF0Y2gpKSB7XG4gICAgICAgIHN0YXRlLnByZXZEaXNhYmxlZCA9IHN0YXRlLmRpc2FibGVkIHx8IHByZXZNb250aERpc2FibGVkKHRoaXMuX2NhbGVuZGFyLCBzdGF0ZS5maXJzdERhdGUsIHN0YXRlLm1pbkRhdGUpO1xuICAgICAgICBzdGF0ZS5uZXh0RGlzYWJsZWQgPSBzdGF0ZS5kaXNhYmxlZCB8fCBuZXh0TW9udGhEaXNhYmxlZCh0aGlzLl9jYWxlbmRhciwgc3RhdGUubGFzdERhdGUsIHN0YXRlLm1heERhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuIiwiZXhwb3J0IGVudW0gS2V5IHtcbiAgVGFiID0gOSxcbiAgRW50ZXIgPSAxMyxcbiAgRXNjYXBlID0gMjcsXG4gIFNwYWNlID0gMzIsXG4gIFBhZ2VVcCA9IDMzLFxuICBQYWdlRG93biA9IDM0LFxuICBFbmQgPSAzNSxcbiAgSG9tZSA9IDM2LFxuICBBcnJvd0xlZnQgPSAzNyxcbiAgQXJyb3dVcCA9IDM4LFxuICBBcnJvd1JpZ2h0ID0gMzksXG4gIEFycm93RG93biA9IDQwXG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyU2VydmljZX0gZnJvbSAnLi9kYXRlcGlja2VyLXNlcnZpY2UnO1xuaW1wb3J0IHtOZ2JDYWxlbmRhcn0gZnJvbSAnLi9uZ2ItY2FsZW5kYXInO1xuaW1wb3J0IHtLZXl9IGZyb20gJy4uL3V0aWwva2V5JztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JEYXRlcGlja2VyS2V5TWFwU2VydmljZSB7XG4gIHByaXZhdGUgX21pbkRhdGU6IE5nYkRhdGU7XG4gIHByaXZhdGUgX21heERhdGU6IE5nYkRhdGU7XG4gIHByaXZhdGUgX2ZpcnN0Vmlld0RhdGU6IE5nYkRhdGU7XG4gIHByaXZhdGUgX2xhc3RWaWV3RGF0ZTogTmdiRGF0ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBOZ2JEYXRlcGlja2VyU2VydmljZSwgcHJpdmF0ZSBfY2FsZW5kYXI6IE5nYkNhbGVuZGFyKSB7XG4gICAgX3NlcnZpY2UubW9kZWwkLnN1YnNjcmliZShtb2RlbCA9PiB7XG4gICAgICB0aGlzLl9taW5EYXRlID0gbW9kZWwubWluRGF0ZTtcbiAgICAgIHRoaXMuX21heERhdGUgPSBtb2RlbC5tYXhEYXRlO1xuICAgICAgdGhpcy5fZmlyc3RWaWV3RGF0ZSA9IG1vZGVsLmZpcnN0RGF0ZTtcbiAgICAgIHRoaXMuX2xhc3RWaWV3RGF0ZSA9IG1vZGVsLmxhc3REYXRlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvY2Vzc0tleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgIHN3aXRjaCAoZXZlbnQud2hpY2gpIHtcbiAgICAgIGNhc2UgS2V5LlBhZ2VVcDpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1c01vdmUoZXZlbnQuc2hpZnRLZXkgPyAneScgOiAnbScsIC0xKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5QYWdlRG93bjpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1c01vdmUoZXZlbnQuc2hpZnRLZXkgPyAneScgOiAnbScsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkVuZDpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhldmVudC5zaGlmdEtleSA/IHRoaXMuX21heERhdGUgOiB0aGlzLl9sYXN0Vmlld0RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkhvbWU6XG4gICAgICAgIHRoaXMuX3NlcnZpY2UuZm9jdXMoZXZlbnQuc2hpZnRLZXkgPyB0aGlzLl9taW5EYXRlIDogdGhpcy5fZmlyc3RWaWV3RGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXkuQXJyb3dMZWZ0OlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzTW92ZSgnZCcsIC0xKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5BcnJvd1VwOlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzTW92ZSgnZCcsIC10aGlzLl9jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5BcnJvd1JpZ2h0OlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzTW92ZSgnZCcsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkFycm93RG93bjpcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1c01vdmUoJ2QnLCB0aGlzLl9jYWxlbmRhci5nZXREYXlzUGVyV2VlaygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5FbnRlcjpcbiAgICAgIGNhc2UgS2V5LlNwYWNlOlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzU2VsZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIG5vdGUgJ3JldHVybicgaW4gZGVmYXVsdCBjYXNlXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuaW1wb3J0IHtEYXlUZW1wbGF0ZUNvbnRleHR9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdGVtcGxhdGUtY29udGV4dCc7XG5cbmV4cG9ydCB0eXBlIE5nYk1hcmtEaXNhYmxlZCA9IChkYXRlOiBOZ2JEYXRlU3RydWN0LCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIE5nYkRheVRlbXBsYXRlRGF0YSA9IChkYXRlOiBOZ2JEYXRlU3RydWN0LCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBEYXlWaWV3TW9kZWwgPSB7XG4gIGRhdGU6IE5nYkRhdGUsXG4gIGNvbnRleHQ6IERheVRlbXBsYXRlQ29udGV4dCxcbiAgdGFiaW5kZXg6IG51bWJlcixcbiAgYXJpYUxhYmVsOiBzdHJpbmcsXG4gIGhpZGRlbjogYm9vbGVhblxufTtcblxuZXhwb3J0IHR5cGUgV2Vla1ZpZXdNb2RlbCA9IHtcbiAgbnVtYmVyOiBudW1iZXIsXG4gIGRheXM6IERheVZpZXdNb2RlbFtdLFxuICBjb2xsYXBzZWQ6IGJvb2xlYW5cbn07XG5cbmV4cG9ydCB0eXBlIE1vbnRoVmlld01vZGVsID0ge1xuICBmaXJzdERhdGU6IE5nYkRhdGUsXG4gIGxhc3REYXRlOiBOZ2JEYXRlLFxuICBudW1iZXI6IG51bWJlcixcbiAgeWVhcjogbnVtYmVyLFxuICB3ZWVrczogV2Vla1ZpZXdNb2RlbFtdLFxuICB3ZWVrZGF5czogbnVtYmVyW11cbn07XG5cbi8vIGNsYW5nLWZvcm1hdCBvZmZcbmV4cG9ydCB0eXBlIERhdGVwaWNrZXJWaWV3TW9kZWwgPSB7XG4gIGRheVRlbXBsYXRlRGF0YT86IE5nYkRheVRlbXBsYXRlRGF0YSxcbiAgZGlzYWJsZWQ6IGJvb2xlYW4sXG4gIGRpc3BsYXlNb250aHM6IG51bWJlcixcbiAgZmlyc3REYXRlPzogTmdiRGF0ZSxcbiAgZmlyc3REYXlPZldlZWs6IG51bWJlcixcbiAgZm9jdXNEYXRlPzogTmdiRGF0ZSxcbiAgZm9jdXNWaXNpYmxlOiBib29sZWFuLFxuICBsYXN0RGF0ZT86IE5nYkRhdGUsXG4gIG1hcmtEaXNhYmxlZD86IE5nYk1hcmtEaXNhYmxlZCxcbiAgbWF4RGF0ZT86IE5nYkRhdGUsXG4gIG1pbkRhdGU/OiBOZ2JEYXRlLFxuICBtb250aHM6IE1vbnRoVmlld01vZGVsW10sXG4gIG5hdmlnYXRpb246ICdzZWxlY3QnIHwgJ2Fycm93cycgfCAnbm9uZScsXG4gIG91dHNpZGVEYXlzOiAndmlzaWJsZScgfCAnY29sbGFwc2VkJyB8ICdoaWRkZW4nLFxuICBwcmV2RGlzYWJsZWQ6IGJvb2xlYW4sXG4gIG5leHREaXNhYmxlZDogYm9vbGVhbixcbiAgc2VsZWN0Qm94ZXM6IHtcbiAgICB5ZWFyczogbnVtYmVyW10sXG4gICAgbW9udGhzOiBudW1iZXJbXVxuICB9LFxuICBzZWxlY3RlZERhdGU6IE5nYkRhdGVcbn07XG4vLyBjbGFuZy1mb3JtYXQgb25cblxuZXhwb3J0IGVudW0gTmF2aWdhdGlvbkV2ZW50IHtcbiAgUFJFVixcbiAgTkVYVFxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RheVRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi9kYXRlcGlja2VyLWRheS10ZW1wbGF0ZS1jb250ZXh0JztcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JEYXRlcGlja2VyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVwaWNrZXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZGF0ZXBpY2tlcnMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJDb25maWcge1xuICBkYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8RGF5VGVtcGxhdGVDb250ZXh0PjtcbiAgZGF5VGVtcGxhdGVEYXRhOiAoZGF0ZTogTmdiRGF0ZVN0cnVjdCwgY3VycmVudDoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlcn0pID0+IGFueTtcbiAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGRpc3BsYXlNb250aHMgPSAxO1xuICBmaXJzdERheU9mV2VlayA9IDE7XG4gIG1hcmtEaXNhYmxlZDogKGRhdGU6IE5nYkRhdGVTdHJ1Y3QsIGN1cnJlbnQ6IHt5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXJ9KSA9PiBib29sZWFuO1xuICBtaW5EYXRlOiBOZ2JEYXRlU3RydWN0O1xuICBtYXhEYXRlOiBOZ2JEYXRlU3RydWN0O1xuICBuYXZpZ2F0aW9uOiAnc2VsZWN0JyB8ICdhcnJvd3MnIHwgJ25vbmUnID0gJ3NlbGVjdCc7XG4gIG91dHNpZGVEYXlzOiAndmlzaWJsZScgfCAnY29sbGFwc2VkJyB8ICdoaWRkZW4nID0gJ3Zpc2libGUnO1xuICBzaG93V2Vla2RheXMgPSB0cnVlO1xuICBzaG93V2Vla051bWJlcnMgPSBmYWxzZTtcbiAgc3RhcnREYXRlOiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfTtcbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4uL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIE5HQl9EQVRFUElDS0VSX0RBVEVfQURBUFRFUl9GQUNUT1JZKCkge1xuICByZXR1cm4gbmV3IE5nYkRhdGVTdHJ1Y3RBZGFwdGVyKCk7XG59XG5cbi8qKlxuICogQW4gYWJzdHJhY3Qgc2VydmljZSB0aGF0IGRvZXMgdGhlIGNvbnZlcnNpb24gYmV0d2VlbiB0aGUgaW50ZXJuYWwgZGF0ZXBpY2tlciBgTmdiRGF0ZVN0cnVjdGAgbW9kZWwgYW5kXG4gKiBhbnkgcHJvdmlkZWQgdXNlciBkYXRlIG1vZGVsIGBEYCwgZXguIGEgc3RyaW5nLCBhIG5hdGl2ZSBkYXRlLCBldGMuXG4gKlxuICogVGhlIGFkYXB0ZXIgaXMgdXNlZCAqKm9ubHkqKiBmb3IgY29udmVyc2lvbiB3aGVuIGJpbmRpbmcgZGF0ZXBpY2tlciB0byBhIGZvcm0gY29udHJvbCxcbiAqIGV4LiBgWyhuZ01vZGVsKV09XCJ1c2VyRGF0ZU1vZGVsXCJgLiBIZXJlIGB1c2VyRGF0ZU1vZGVsYCBjYW4gYmUgb2YgYW55IHR5cGUuXG4gKlxuICogVGhlIGRlZmF1bHQgZGF0ZXBpY2tlciBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHdlIHVzZSBgTmdiRGF0ZVN0cnVjdGAgYXMgYSB1c2VyIG1vZGVsLlxuICpcbiAqIFNlZSB0aGUgW2RhdGUgZm9ybWF0IG92ZXJ2aWV3XSgjL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9vdmVydmlldyNkYXRlLW1vZGVsKSBmb3IgbW9yZSBkZXRhaWxzXG4gKiBhbmQgdGhlIFtjdXN0b20gYWRhcHRlciBkZW1vXSgjL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9leGFtcGxlcyNhZGFwdGVyKSBmb3IgYW4gZXhhbXBsZS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogTkdCX0RBVEVQSUNLRVJfREFURV9BREFQVEVSX0ZBQ1RPUll9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nYkRhdGVBZGFwdGVyPEQ+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgdXNlci1tb2RlbCBkYXRlIG9mIHR5cGUgYERgIHRvIGFuIGBOZ2JEYXRlU3RydWN0YCBmb3IgaW50ZXJuYWwgdXNlLlxuICAgKi9cbiAgYWJzdHJhY3QgZnJvbU1vZGVsKHZhbHVlOiBEKTogTmdiRGF0ZVN0cnVjdDtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gaW50ZXJuYWwgYE5nYkRhdGVTdHJ1Y3RgIGRhdGUgdG8gYSB1c2VyLW1vZGVsIGRhdGUgb2YgdHlwZSBgRGAuXG4gICAqL1xuICBhYnN0cmFjdCB0b01vZGVsKGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBEO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiRGF0ZVN0cnVjdEFkYXB0ZXIgZXh0ZW5kcyBOZ2JEYXRlQWRhcHRlcjxOZ2JEYXRlU3RydWN0PiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIE5nYkRhdGVTdHJ1Y3QgdmFsdWUgaW50byBOZ2JEYXRlU3RydWN0IHZhbHVlXG4gICAqL1xuICBmcm9tTW9kZWwoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiAoZGF0ZSAmJiBpc0ludGVnZXIoZGF0ZS55ZWFyKSAmJiBpc0ludGVnZXIoZGF0ZS5tb250aCkgJiYgaXNJbnRlZ2VyKGRhdGUuZGF5KSkgP1xuICAgICAgICB7eWVhcjogZGF0ZS55ZWFyLCBtb250aDogZGF0ZS5tb250aCwgZGF5OiBkYXRlLmRheX0gOlxuICAgICAgICBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgTmdiRGF0ZVN0cnVjdCB2YWx1ZSBpbnRvIE5nYkRhdGVTdHJ1Y3QgdmFsdWVcbiAgICovXG4gIHRvTW9kZWwoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiAoZGF0ZSAmJiBpc0ludGVnZXIoZGF0ZS55ZWFyKSAmJiBpc0ludGVnZXIoZGF0ZS5tb250aCkgJiYgaXNJbnRlZ2VyKGRhdGUuZGF5KSkgP1xuICAgICAgICB7eWVhcjogZGF0ZS55ZWFyLCBtb250aDogZGF0ZS5tb250aCwgZGF5OiBkYXRlLmRheX0gOlxuICAgICAgICBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge2Zyb21FdmVudCwgbWVyZ2UsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2UsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge05nYkNhbGVuZGFyfSBmcm9tICcuL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge05nYkRhdGV9IGZyb20gJy4vbmdiLWRhdGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyU2VydmljZX0gZnJvbSAnLi9kYXRlcGlja2VyLXNlcnZpY2UnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyS2V5TWFwU2VydmljZX0gZnJvbSAnLi9kYXRlcGlja2VyLWtleW1hcC1zZXJ2aWNlJztcbmltcG9ydCB7RGF0ZXBpY2tlclZpZXdNb2RlbCwgTmF2aWdhdGlvbkV2ZW50fSBmcm9tICcuL2RhdGVwaWNrZXItdmlldy1tb2RlbCc7XG5pbXBvcnQge0RheVRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi9kYXRlcGlja2VyLWRheS10ZW1wbGF0ZS1jb250ZXh0JztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlckNvbmZpZ30gZnJvbSAnLi9kYXRlcGlja2VyLWNvbmZpZyc7XG5pbXBvcnQge05nYkRhdGVBZGFwdGVyfSBmcm9tICcuL2FkYXB0ZXJzL25nYi1kYXRlLWFkYXB0ZXInO1xuaW1wb3J0IHtOZ2JEYXRlU3RydWN0fSBmcm9tICcuL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJJMThufSBmcm9tICcuL2RhdGVwaWNrZXItaTE4bic7XG5pbXBvcnQge2lzQ2hhbmdlZERhdGUsIGlzQ2hhbmdlZE1vbnRofSBmcm9tICcuL2RhdGVwaWNrZXItdG9vbHMnO1xuaW1wb3J0IHtoYXNDbGFzc05hbWV9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbmNvbnN0IE5HQl9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiRGF0ZXBpY2tlciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEFuIGV2ZW50IGVtaXR0ZWQgcmlnaHQgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uIGhhcHBlbnMgYW5kIHRoZSBtb250aCBkaXNwbGF5ZWQgYnkgdGhlIGRhdGVwaWNrZXIgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JEYXRlcGlja2VyTmF2aWdhdGVFdmVudCB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IGRpc3BsYXllZCBtb250aC5cbiAgICovXG4gIGN1cnJlbnQ6IHt5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXJ9O1xuXG4gIC8qKlxuICAgKiBUaGUgbW9udGggd2UncmUgbmF2aWdhdGluZyB0by5cbiAgICovXG4gIG5leHQ6IHt5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXJ9O1xuXG4gIC8qKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBwcmV2ZW50IG5hdmlnYXRpb24gZnJvbSBoYXBwZW5pbmcuXG4gICAqXG4gICAqIEBzaW5jZSA0LjEuMFxuICAgKi9cbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQSBoaWdobHkgY29uZmlndXJhYmxlIGNvbXBvbmVudCB0aGF0IGhlbHBzIHlvdSB3aXRoIHNlbGVjdGluZyBjYWxlbmRhciBkYXRlcy5cbiAqXG4gKiBgTmdiRGF0ZXBpY2tlcmAgaXMgbWVhbnQgdG8gYmUgZGlzcGxheWVkIGlubGluZSBvbiBhIHBhZ2Ugb3IgcHV0IGluc2lkZSBhIHBvcHVwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgZXhwb3J0QXM6ICduZ2JEYXRlcGlja2VyJyxcbiAgc2VsZWN0b3I6ICduZ2ItZGF0ZXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2R0IGxldC1kYXRlPVwiZGF0ZVwiIGxldC1jdXJyZW50TW9udGg9XCJjdXJyZW50TW9udGhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCIgbGV0LWZvY3VzZWQ9XCJmb2N1c2VkXCI+XG4gICAgICA8ZGl2IG5nYkRhdGVwaWNrZXJEYXlWaWV3XG4gICAgICAgIFtkYXRlXT1cImRhdGVcIlxuICAgICAgICBbY3VycmVudE1vbnRoXT1cImN1cnJlbnRNb250aFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtmb2N1c2VkXT1cImZvY3VzZWRcIj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmdiLWRwLWhlYWRlciBiZy1saWdodFwiPlxuICAgICAgPG5nYi1kYXRlcGlja2VyLW5hdmlnYXRpb24gKm5nSWY9XCJuYXZpZ2F0aW9uICE9PSAnbm9uZSdcIlxuICAgICAgICBbZGF0ZV09XCJtb2RlbC5maXJzdERhdGVcIlxuICAgICAgICBbbW9udGhzXT1cIm1vZGVsLm1vbnRoc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJtb2RlbC5kaXNhYmxlZFwiXG4gICAgICAgIFtzaG93U2VsZWN0XT1cIm1vZGVsLm5hdmlnYXRpb24gPT09ICdzZWxlY3QnXCJcbiAgICAgICAgW3ByZXZEaXNhYmxlZF09XCJtb2RlbC5wcmV2RGlzYWJsZWRcIlxuICAgICAgICBbbmV4dERpc2FibGVkXT1cIm1vZGVsLm5leHREaXNhYmxlZFwiXG4gICAgICAgIFtzZWxlY3RCb3hlc109XCJtb2RlbC5zZWxlY3RCb3hlc1wiXG4gICAgICAgIChuYXZpZ2F0ZSk9XCJvbk5hdmlnYXRlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3QpPVwib25OYXZpZ2F0ZURhdGVTZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgPC9uZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAjbW9udGhzIGNsYXNzPVwibmdiLWRwLW1vbnRoc1wiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LW1vbnRoIFtuZ0Zvck9mXT1cIm1vZGVsLm1vbnRoc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5nYi1kcC1tb250aFwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJuYXZpZ2F0aW9uID09PSAnbm9uZScgfHwgKGRpc3BsYXlNb250aHMgPiAxICYmIG5hdmlnYXRpb24gPT09ICdzZWxlY3QnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuZ2ItZHAtbW9udGgtbmFtZSBiZy1saWdodFwiPlxuICAgICAgICAgICAge3sgaTE4bi5nZXRNb250aEZ1bGxOYW1lKG1vbnRoLm51bWJlciwgbW9udGgueWVhcikgfX0ge3sgaTE4bi5nZXRZZWFyTnVtZXJhbHMobW9udGgueWVhcikgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmdiLWRhdGVwaWNrZXItbW9udGgtdmlld1xuICAgICAgICAgICAgW21vbnRoXT1cIm1vbnRoXCJcbiAgICAgICAgICAgIFtkYXlUZW1wbGF0ZV09XCJkYXlUZW1wbGF0ZSB8fCBkdFwiXG4gICAgICAgICAgICBbc2hvd1dlZWtkYXlzXT1cInNob3dXZWVrZGF5c1wiXG4gICAgICAgICAgICBbc2hvd1dlZWtOdW1iZXJzXT1cInNob3dXZWVrTnVtYmVyc1wiXG4gICAgICAgICAgICAoc2VsZWN0KT1cIm9uRGF0ZVNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICAgICAgPC9uZ2ItZGF0ZXBpY2tlci1tb250aC12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBwcm92aWRlcnM6IFtOR0JfREFURVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUiwgTmdiRGF0ZXBpY2tlclNlcnZpY2UsIE5nYkRhdGVwaWNrZXJLZXlNYXBTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JEYXRlcGlja2VyIGltcGxlbWVudHMgT25EZXN0cm95LFxuICAgIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIG1vZGVsOiBEYXRlcGlja2VyVmlld01vZGVsO1xuXG4gIEBWaWV3Q2hpbGQoJ21vbnRocycpIHByaXZhdGUgX21vbnRoc0VsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJpdmF0ZSBfY29udHJvbFZhbHVlOiBOZ2JEYXRlO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGRheS5cbiAgICpcbiAgICogQWxsb3dzIHRvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIHdheSBhIGRheSAnY2VsbCcgaW4gdGhlIGNhbGVuZGFyIGlzIGRpc3BsYXllZC5cbiAgICpcbiAgICogU2VlIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkgZm9yIHRoZSBkYXRhIHlvdSBnZXQgaW5zaWRlLlxuICAgKi9cbiAgQElucHV0KCkgZGF5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPERheVRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBwYXNzIGFueSBhcmJpdHJhcnkgZGF0YSB0byB0aGUgdGVtcGxhdGUgY2VsbCB2aWEgdGhlXG4gICAqIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkncyBgZGF0YWAgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBgY3VycmVudGAgaXMgdGhlIG1vbnRoIHRoYXQgaXMgY3VycmVudGx5IGRpc3BsYXllZCBieSB0aGUgZGF0ZXBpY2tlci5cbiAgICpcbiAgICogQHNpbmNlIDMuMy4wXG4gICAqL1xuICBASW5wdXQoKSBkYXlUZW1wbGF0ZURhdGE6IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheU1vbnRoczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnd2Vla2RheScgaXMgMT1Nb24gLi4uIDc9U3VuLlxuICAgKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byB0aGUgY3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgZGF0ZXBpY2tlciBmb290ZXIuXG4gICAqXG4gICAqIEBzaW5jZSAzLjMuMFxuICAgKi9cbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBtYXJrIHNvbWUgZGF0ZXMgYXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIEl0IGlzIGNhbGxlZCBmb3IgZWFjaCBuZXcgZGF0ZSB3aGVuIG5hdmlnYXRpbmcgdG8gYSBkaWZmZXJlbnQgbW9udGguXG4gICAqXG4gICAqIGBjdXJyZW50YCBpcyB0aGUgbW9udGggdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkIGJ5IHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KCkgbWFya0Rpc2FibGVkOiAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudDoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlcn0pID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZGF0ZSB0aGF0IGNhbiBiZSBkaXNwbGF5ZWQgb3Igc2VsZWN0ZWQuXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgJ3llYXInIHNlbGVjdCBib3ggd2lsbCBkaXNwbGF5IDEwIHllYXJzIGFmdGVyIHRoZSBjdXJyZW50IG1vbnRoLlxuICAgKi9cbiAgQElucHV0KCkgbWF4RGF0ZTogTmdiRGF0ZVN0cnVjdDtcblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBjYW4gYmUgZGlzcGxheWVkIG9yIHNlbGVjdGVkLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsICd5ZWFyJyBzZWxlY3QgYm94IHdpbGwgZGlzcGxheSAxMCB5ZWFycyBiZWZvcmUgdGhlIGN1cnJlbnQgbW9udGguXG4gICAqL1xuICBASW5wdXQoKSBtaW5EYXRlOiBOZ2JEYXRlU3RydWN0O1xuXG4gIC8qKlxuICAgKiBOYXZpZ2F0aW9uIHR5cGUuXG4gICAqXG4gICAqICogYFwic2VsZWN0XCJgIC0gc2VsZWN0IGJveGVzIGZvciBtb250aCBhbmQgbmF2aWdhdGlvbiBhcnJvd3NcbiAgICogKiBgXCJhcnJvd3NcImAgLSBvbmx5IG5hdmlnYXRpb24gYXJyb3dzXG4gICAqICogYFwibm9uZVwiYCAtIG5vIG5hdmlnYXRpb24gdmlzaWJsZSBhdCBhbGxcbiAgICovXG4gIEBJbnB1dCgpIG5hdmlnYXRpb246ICdzZWxlY3QnIHwgJ2Fycm93cycgfCAnbm9uZSc7XG5cbiAgLyoqXG4gICAqIFRoZSB3YXkgb2YgZGlzcGxheWluZyBkYXlzIHRoYXQgZG9uJ3QgYmVsb25nIHRvIHRoZSBjdXJyZW50IG1vbnRoLlxuICAgKlxuICAgKiAqIGBcInZpc2libGVcImAgLSBkYXlzIGFyZSB2aXNpYmxlXG4gICAqICogYFwiaGlkZGVuXCJgIC0gZGF5cyBhcmUgaGlkZGVuLCB3aGl0ZSBzcGFjZSBwcmVzZXJ2ZWRcbiAgICogKiBgXCJjb2xsYXBzZWRcImAgLSBkYXlzIGFyZSBjb2xsYXBzZWQsIHNvIHRoZSBkYXRlcGlja2VyIGhlaWdodCBtaWdodCBjaGFuZ2UgYmV0d2VlbiBtb250aHNcbiAgICpcbiAgICogRm9yIHRoZSAyKyBtb250aHMgdmlldywgZGF5cyBpbiBiZXR3ZWVuIG1vbnRocyBhcmUgbmV2ZXIgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBvdXRzaWRlRGF5czogJ3Zpc2libGUnIHwgJ2NvbGxhcHNlZCcgfCAnaGlkZGVuJztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrZGF5cyB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dXZWVrZGF5czogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrIG51bWJlcnMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBzaG93V2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIHRvIG9wZW4gY2FsZW5kYXIgd2l0aC5cbiAgICpcbiAgICogV2l0aCB0aGUgZGVmYXVsdCBjYWxlbmRhciB3ZSB1c2UgSVNPIDg2MDE6ICdtb250aCcgaXMgMT1KYW4gLi4uIDEyPURlYy5cbiAgICogSWYgbm90aGluZyBvciBpbnZhbGlkIGRhdGUgaXMgcHJvdmlkZWQsIGNhbGVuZGFyIHdpbGwgb3BlbiB3aXRoIGN1cnJlbnQgbW9udGguXG4gICAqXG4gICAqIFlvdSBjb3VsZCB1c2UgYG5hdmlnYXRlVG8oZGF0ZSlgIG1ldGhvZCBhcyBhbiBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZToge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5PzogbnVtYmVyfTtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCByaWdodCBiZWZvcmUgdGhlIG5hdmlnYXRpb24gaGFwcGVucyBhbmQgZGlzcGxheWVkIG1vbnRoIGNoYW5nZXMuXG4gICAqXG4gICAqIFNlZSBbYE5nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50KSBmb3IgdGhlIHBheWxvYWQgaW5mby5cbiAgICovXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmdiRGF0ZXBpY2tlck5hdmlnYXRlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB1c2VyIHNlbGVjdHMgYSBkYXRlIHVzaW5nIGtleWJvYXJkIG9yIG1vdXNlLlxuICAgKlxuICAgKiBUaGUgcGF5bG9hZCBvZiB0aGUgZXZlbnQgaXMgY3VycmVudGx5IHNlbGVjdGVkIGBOZ2JEYXRlYC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGU+KCk7XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF9rZXlNYXBTZXJ2aWNlOiBOZ2JEYXRlcGlja2VyS2V5TWFwU2VydmljZSwgcHVibGljIF9zZXJ2aWNlOiBOZ2JEYXRlcGlja2VyU2VydmljZSxcbiAgICAgIHByaXZhdGUgX2NhbGVuZGFyOiBOZ2JDYWxlbmRhciwgcHVibGljIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuLCBjb25maWc6IE5nYkRhdGVwaWNrZXJDb25maWcsXG4gICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgcHJpdmF0ZSBfbmdiRGF0ZUFkYXB0ZXI6IE5nYkRhdGVBZGFwdGVyPGFueT4sIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7XG4gICAgWydkYXlUZW1wbGF0ZScsICdkYXlUZW1wbGF0ZURhdGEnLCAnZGlzcGxheU1vbnRocycsICdmaXJzdERheU9mV2VlaycsICdmb290ZXJUZW1wbGF0ZScsICdtYXJrRGlzYWJsZWQnLCAnbWluRGF0ZScsXG4gICAgICdtYXhEYXRlJywgJ25hdmlnYXRpb24nLCAnb3V0c2lkZURheXMnLCAnc2hvd1dlZWtkYXlzJywgJ3Nob3dXZWVrTnVtYmVycycsICdzdGFydERhdGUnXVxuICAgICAgICAuZm9yRWFjaChpbnB1dCA9PiB0aGlzW2lucHV0XSA9IGNvbmZpZ1tpbnB1dF0pO1xuXG4gICAgX3NlcnZpY2Uuc2VsZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGRhdGUgPT4geyB0aGlzLnNlbGVjdC5lbWl0KGRhdGUpOyB9KTtcblxuICAgIF9zZXJ2aWNlLm1vZGVsJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKG1vZGVsID0+IHtcbiAgICAgIGNvbnN0IG5ld0RhdGUgPSBtb2RlbC5maXJzdERhdGU7XG4gICAgICBjb25zdCBvbGREYXRlID0gdGhpcy5tb2RlbCA/IHRoaXMubW9kZWwuZmlyc3REYXRlIDogbnVsbDtcblxuICAgICAgbGV0IG5hdmlnYXRpb25QcmV2ZW50ZWQgPSBmYWxzZTtcbiAgICAgIC8vIGVtaXR0aW5nIG5hdmlnYXRpb24gZXZlbnQgaWYgdGhlIGZpcnN0IG1vbnRoIGNoYW5nZXNcbiAgICAgIGlmICghbmV3RGF0ZS5lcXVhbHMob2xkRGF0ZSkpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZS5lbWl0KHtcbiAgICAgICAgICBjdXJyZW50OiBvbGREYXRlID8ge3llYXI6IG9sZERhdGUueWVhciwgbW9udGg6IG9sZERhdGUubW9udGh9IDogbnVsbCxcbiAgICAgICAgICBuZXh0OiB7eWVhcjogbmV3RGF0ZS55ZWFyLCBtb250aDogbmV3RGF0ZS5tb250aH0sXG4gICAgICAgICAgcHJldmVudERlZmF1bHQ6ICgpID0+IG5hdmlnYXRpb25QcmV2ZW50ZWQgPSB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNhbid0IHByZXZlbnQgdGhlIHZlcnkgZmlyc3QgbmF2aWdhdGlvblxuICAgICAgICBpZiAobmF2aWdhdGlvblByZXZlbnRlZCAmJiBvbGREYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5fc2VydmljZS5vcGVuKG9sZERhdGUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdTZWxlY3RlZERhdGUgPSBtb2RlbC5zZWxlY3RlZERhdGU7XG4gICAgICBjb25zdCBuZXdGb2N1c2VkRGF0ZSA9IG1vZGVsLmZvY3VzRGF0ZTtcbiAgICAgIGNvbnN0IG9sZEZvY3VzZWREYXRlID0gdGhpcy5tb2RlbCA/IHRoaXMubW9kZWwuZm9jdXNEYXRlIDogbnVsbDtcblxuICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuXG4gICAgICAvLyBoYW5kbGluZyBzZWxlY3Rpb24gY2hhbmdlXG4gICAgICBpZiAoaXNDaGFuZ2VkRGF0ZShuZXdTZWxlY3RlZERhdGUsIHRoaXMuX2NvbnRyb2xWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlID0gbmV3U2VsZWN0ZWREYXRlO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX25nYkRhdGVBZGFwdGVyLnRvTW9kZWwobmV3U2VsZWN0ZWREYXRlKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGhhbmRsaW5nIGZvY3VzIGNoYW5nZVxuICAgICAgaWYgKGlzQ2hhbmdlZERhdGUobmV3Rm9jdXNlZERhdGUsIG9sZEZvY3VzZWREYXRlKSAmJiBvbGRGb2N1c2VkRGF0ZSAmJiBtb2RlbC5mb2N1c1Zpc2libGUpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICBfY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLl9uZ1pvbmUub25TdGFibGUuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPVxuICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PignZGl2Lm5nYi1kcC1kYXlbdGFiaW5kZXg9XCIwXCJdJyk7XG4gICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcbiAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByb3ZpZGVkIGRhdGUuXG4gICAqXG4gICAqIFdpdGggdGhlIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnbW9udGgnIGlzIDE9SmFuIC4uLiAxMj1EZWMuXG4gICAqIElmIG5vdGhpbmcgb3IgaW52YWxpZCBkYXRlIHByb3ZpZGVkIGNhbGVuZGFyIHdpbGwgb3BlbiBjdXJyZW50IG1vbnRoLlxuICAgKlxuICAgKiBVc2UgdGhlIGBbc3RhcnREYXRlXWAgaW5wdXQgYXMgYW4gYWx0ZXJuYXRpdmUuXG4gICAqL1xuICBuYXZpZ2F0ZVRvKGRhdGU/OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk/OiBudW1iZXJ9KSB7XG4gICAgdGhpcy5fc2VydmljZS5vcGVuKE5nYkRhdGUuZnJvbShkYXRlID8gZGF0ZS5kYXkgPyBkYXRlIGFzIE5nYkRhdGVTdHJ1Y3QgOiB7Li4uZGF0ZSwgZGF5OiAxfSA6IG51bGwpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgZm9jdXNJbnMkID0gZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuX21vbnRoc0VsLm5hdGl2ZUVsZW1lbnQsICdmb2N1c2luJyk7XG4gICAgICBjb25zdCBmb2N1c091dHMkID0gZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuX21vbnRoc0VsLm5hdGl2ZUVsZW1lbnQsICdmb2N1c291dCcpO1xuXG4gICAgICAvLyB3ZSdyZSBjaGFuZ2luZyAnZm9jdXNWaXNpYmxlJyBvbmx5IHdoZW4gZW50ZXJpbmcgb3IgbGVhdmluZyBtb250aHMgdmlld1xuICAgICAgLy8gYW5kIGlnbm9yaW5nIGFsbCBmb2N1cyBldmVudHMgd2hlcmUgYm90aCAndGFyZ2V0JyBhbmQgJ3JlbGF0ZWQnIHRhcmdldCBhcmUgZGF5IGNlbGxzXG4gICAgICBtZXJnZShmb2N1c0lucyQsIGZvY3VzT3V0cyQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICh7dGFyZ2V0LCByZWxhdGVkVGFyZ2V0fSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAhKGhhc0NsYXNzTmFtZSh0YXJnZXQsICduZ2ItZHAtZGF5JykgJiYgaGFzQ2xhc3NOYW1lKHJlbGF0ZWRUYXJnZXQsICduZ2ItZHAtZGF5JykpKSxcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHt0eXBlfSkgPT4gdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLl9zZXJ2aWNlLmZvY3VzVmlzaWJsZSA9IHR5cGUgPT09ICdmb2N1c2luJykpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7IHRoaXMuX2Rlc3Ryb3llZCQubmV4dCgpOyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgWydkYXlUZW1wbGF0ZURhdGEnLCAnZGlzcGxheU1vbnRocycsICdtYXJrRGlzYWJsZWQnLCAnZmlyc3REYXlPZldlZWsnLCAnbmF2aWdhdGlvbicsICdtaW5EYXRlJywgJ21heERhdGUnLFxuICAgICAgICdvdXRzaWRlRGF5cyddXG4gICAgICAgICAgLmZvckVhY2goaW5wdXQgPT4gdGhpcy5fc2VydmljZVtpbnB1dF0gPSB0aGlzW2lucHV0XSk7XG4gICAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5zdGFydERhdGUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBbJ2RheVRlbXBsYXRlRGF0YScsICdkaXNwbGF5TW9udGhzJywgJ21hcmtEaXNhYmxlZCcsICdmaXJzdERheU9mV2VlaycsICduYXZpZ2F0aW9uJywgJ21pbkRhdGUnLCAnbWF4RGF0ZScsXG4gICAgICdvdXRzaWRlRGF5cyddXG4gICAgICAgIC5maWx0ZXIoaW5wdXQgPT4gaW5wdXQgaW4gY2hhbmdlcylcbiAgICAgICAgLmZvckVhY2goaW5wdXQgPT4gdGhpcy5fc2VydmljZVtpbnB1dF0gPSB0aGlzW2lucHV0XSk7XG5cbiAgICBpZiAoJ3N0YXJ0RGF0ZScgaW4gY2hhbmdlcykge1xuICAgICAgY29uc3Qge2N1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZX0gPSBjaGFuZ2VzLnN0YXJ0RGF0ZTtcbiAgICAgIGlmIChpc0NoYW5nZWRNb250aChwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25EYXRlU2VsZWN0KGRhdGU6IE5nYkRhdGUpIHtcbiAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzKGRhdGUpO1xuICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KGRhdGUsIHtlbWl0RXZlbnQ6IHRydWV9KTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkgeyB0aGlzLl9rZXlNYXBTZXJ2aWNlLnByb2Nlc3NLZXkoZXZlbnQpOyB9XG5cbiAgb25OYXZpZ2F0ZURhdGVTZWxlY3QoZGF0ZTogTmdiRGF0ZSkgeyB0aGlzLl9zZXJ2aWNlLm9wZW4oZGF0ZSk7IH1cblxuICBvbk5hdmlnYXRlRXZlbnQoZXZlbnQ6IE5hdmlnYXRpb25FdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgTmF2aWdhdGlvbkV2ZW50LlBSRVY6XG4gICAgICAgIHRoaXMuX3NlcnZpY2Uub3Blbih0aGlzLl9jYWxlbmRhci5nZXRQcmV2KHRoaXMubW9kZWwuZmlyc3REYXRlLCAnbScsIDEpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5hdmlnYXRpb25FdmVudC5ORVhUOlxuICAgICAgICB0aGlzLl9zZXJ2aWNlLm9wZW4odGhpcy5fY2FsZW5kYXIuZ2V0TmV4dCh0aGlzLm1vZGVsLmZpcnN0RGF0ZSwgJ20nLCAxKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7IHRoaXMuX3NlcnZpY2UuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuX2NvbnRyb2xWYWx1ZSA9IE5nYkRhdGUuZnJvbSh0aGlzLl9uZ2JEYXRlQWRhcHRlci5mcm9tTW9kZWwodmFsdWUpKTtcbiAgICB0aGlzLl9zZXJ2aWNlLnNlbGVjdCh0aGlzLl9jb250cm9sVmFsdWUpO1xuICB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb250aFZpZXdNb2RlbCwgRGF5Vmlld01vZGVsfSBmcm9tICcuL2RhdGVwaWNrZXItdmlldy1tb2RlbCc7XG5pbXBvcnQge05nYkRhdGV9IGZyb20gJy4vbmdiLWRhdGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VySTE4bn0gZnJvbSAnLi9kYXRlcGlja2VyLWkxOG4nO1xuaW1wb3J0IHtEYXlUZW1wbGF0ZUNvbnRleHR9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdGVtcGxhdGUtY29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1kYXRlcGlja2VyLW1vbnRoLXZpZXcnLFxuICBob3N0OiB7J3JvbGUnOiAnZ3JpZCd9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLW1vbnRoLXZpZXcuc2NzcyddLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgKm5nSWY9XCJzaG93V2Vla2RheXNcIiBjbGFzcz1cIm5nYi1kcC13ZWVrIG5nYi1kcC13ZWVrZGF5cyBiZy1saWdodFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dXZWVrTnVtYmVyc1wiIGNsYXNzPVwibmdiLWRwLXdlZWtkYXkgbmdiLWRwLXNob3d3ZWVrXCI+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB3IG9mIG1vbnRoLndlZWtkYXlzXCIgY2xhc3M9XCJuZ2ItZHAtd2Vla2RheSBzbWFsbFwiPlxuICAgICAgICB7eyBpMThuLmdldFdlZWtkYXlTaG9ydE5hbWUodykgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtd2VlayBbbmdGb3JPZl09XCJtb250aC53ZWVrc1wiPlxuICAgICAgPGRpdiAqbmdJZj1cIiF3ZWVrLmNvbGxhcHNlZFwiIGNsYXNzPVwibmdiLWRwLXdlZWtcIiByb2xlPVwicm93XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93V2Vla051bWJlcnNcIiBjbGFzcz1cIm5nYi1kcC13ZWVrLW51bWJlciBzbWFsbCB0ZXh0LW11dGVkXCI+e3sgaTE4bi5nZXRXZWVrTnVtZXJhbHMod2Vlay5udW1iZXIpIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrLmRheXNcIiAoY2xpY2spPVwiZG9TZWxlY3QoZGF5KVwiIGNsYXNzPVwibmdiLWRwLWRheVwiIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRheS5jb250ZXh0LmRpc2FibGVkXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwiZGF5LnRhYmluZGV4XCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cImRheS5oaWRkZW5cIlxuICAgICAgICAgIFtjbGFzcy5uZ2ItZHAtdG9kYXldPVwiZGF5LmNvbnRleHQudG9kYXlcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF5LmFyaWFMYWJlbFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhZGF5LmhpZGRlblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRheVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImRheS5jb250ZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiRGF0ZXBpY2tlck1vbnRoVmlldyB7XG4gIEBJbnB1dCgpIGRheVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxEYXlUZW1wbGF0ZUNvbnRleHQ+O1xuICBASW5wdXQoKSBtb250aDogTW9udGhWaWV3TW9kZWw7XG4gIEBJbnB1dCgpIHNob3dXZWVrZGF5cztcbiAgQElucHV0KCkgc2hvd1dlZWtOdW1iZXJzO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGU+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuKSB7fVxuXG4gIGRvU2VsZWN0KGRheTogRGF5Vmlld01vZGVsKSB7XG4gICAgaWYgKCFkYXkuY29udGV4dC5kaXNhYmxlZCAmJiAhZGF5LmhpZGRlbikge1xuICAgICAgdGhpcy5zZWxlY3QuZW1pdChkYXkuZGF0ZSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRXZlbnQsIE1vbnRoVmlld01vZGVsfSBmcm9tICcuL2RhdGVwaWNrZXItdmlldy1tb2RlbCc7XG5pbXBvcnQge05nYkRhdGV9IGZyb20gJy4vbmdiLWRhdGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VySTE4bn0gZnJvbSAnLi9kYXRlcGlja2VyLWkxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXItbmF2aWdhdGlvbi5zY3NzJ10sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm5nYi1kcC1hcnJvd1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgbmdiLWRwLWFycm93LWJ0blwiIChjbGljayk9XCJuYXZpZ2F0ZS5lbWl0KG5hdmlnYXRpb24uUFJFVilcIiBbZGlzYWJsZWRdPVwicHJldkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgaTE4bi1hcmlhLWxhYmVsPVwiQEBuZ2IuZGF0ZXBpY2tlci5wcmV2aW91cy1tb250aFwiIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBtb250aFwiXG4gICAgICAgICAgICAgIGkxOG4tdGl0bGU9XCJAQG5nYi5kYXRlcGlja2VyLnByZXZpb3VzLW1vbnRoXCIgdGl0bGU9XCJQcmV2aW91cyBtb250aFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5nYi1kcC1uYXZpZ2F0aW9uLWNoZXZyb25cIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bmdiLWRhdGVwaWNrZXItbmF2aWdhdGlvbi1zZWxlY3QgKm5nSWY9XCJzaG93U2VsZWN0XCIgY2xhc3M9XCJuZ2ItZHAtbmF2aWdhdGlvbi1zZWxlY3RcIlxuICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdID0gXCJkaXNhYmxlZFwiXG4gICAgICBbbW9udGhzXT1cInNlbGVjdEJveGVzLm1vbnRoc1wiXG4gICAgICBbeWVhcnNdPVwic2VsZWN0Qm94ZXMueWVhcnNcIlxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3QuZW1pdCgkZXZlbnQpXCI+XG4gICAgPC9uZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLXNlbGVjdD5cblxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFzaG93U2VsZWN0XCIgbmdGb3IgbGV0LW1vbnRoIFtuZ0Zvck9mXT1cIm1vbnRoc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuZ2ItZHAtYXJyb3dcIiAqbmdJZj1cImkgPiAwXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibmdiLWRwLW1vbnRoLW5hbWVcIj5cbiAgICAgICAge3sgaTE4bi5nZXRNb250aEZ1bGxOYW1lKG1vbnRoLm51bWJlciwgbW9udGgueWVhcikgfX0ge3sgaTE4bi5nZXRZZWFyTnVtZXJhbHMobW9udGgueWVhcikgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm5nYi1kcC1hcnJvd1wiICpuZ0lmPVwiaSAhPT0gbW9udGhzLmxlbmd0aCAtIDFcIj48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJuZ2ItZHAtYXJyb3cgcmlnaHRcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIG5nYi1kcC1hcnJvdy1idG5cIiAoY2xpY2spPVwibmF2aWdhdGUuZW1pdChuYXZpZ2F0aW9uLk5FWFQpXCIgW2Rpc2FibGVkXT1cIm5leHREaXNhYmxlZFwiXG4gICAgICAgICAgICAgIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLmRhdGVwaWNrZXIubmV4dC1tb250aFwiIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgICAgICAgICAgaTE4bi10aXRsZT1cIkBAbmdiLmRhdGVwaWNrZXIubmV4dC1tb250aFwiIHRpdGxlPVwiTmV4dCBtb250aFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5nYi1kcC1uYXZpZ2F0aW9uLWNoZXZyb25cIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uIHtcbiAgbmF2aWdhdGlvbiA9IE5hdmlnYXRpb25FdmVudDtcblxuICBASW5wdXQoKSBkYXRlOiBOZ2JEYXRlO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbW9udGhzOiBNb250aFZpZXdNb2RlbFtdID0gW107XG4gIEBJbnB1dCgpIHNob3dTZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByZXZEaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbmV4dERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RCb3hlczoge3llYXJzOiBudW1iZXJbXSwgbW9udGhzOiBudW1iZXJbXX07XG5cbiAgQE91dHB1dCgpIG5hdmlnYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXZpZ2F0aW9uRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGU+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGkxOG46IE5nYkRhdGVwaWNrZXJJMThuKSB7fVxufVxuIiwiaW1wb3J0IHtOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIE9ic2VydmFibGUsIHJhY2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWxheSwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7S2V5fSBmcm9tICcuL2tleSc7XG5pbXBvcnQge2Nsb3Nlc3R9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IGlzQ29udGFpbmVkSW4gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIGFycmF5PzogSFRNTEVsZW1lbnRbXSkgPT5cbiAgICBhcnJheSA/IGFycmF5LnNvbWUoaXRlbSA9PiBpdGVtLmNvbnRhaW5zKGVsZW1lbnQpKSA6IGZhbHNlO1xuXG5jb25zdCBtYXRjaGVzU2VsZWN0b3JJZkFueSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgc2VsZWN0b3I/OiBzdHJpbmcpID0+XG4gICAgIXNlbGVjdG9yIHx8IGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpICE9IG51bGw7XG5cbi8vIHdlJ2xsIGhhdmUgdG8gdXNlICd0b3VjaCcgZXZlbnRzIGluc3RlYWQgb2YgJ21vdXNlJyBldmVudHMgb24gaU9TIGFuZCBhZGQgYSBtb3JlIHNpZ25pZmljYW50IGRlbGF5XG4vLyB0byBhdm9pZCByZS1vcGVuaW5nIHdoZW4gaGFuZGxpbmcgKGNsaWNrKSBvbiBhIHRvZ2dsaW5nIGVsZW1lbnRcbi8vIFRPRE86IHVzZSBwcm9wZXIgQW5ndWxhciBwbGF0Zm9ybSBkZXRlY3Rpb24gd2hlbiBOZ2JBdXRvQ2xvc2UgYmVjb21lcyBhIHNlcnZpY2UgYW5kIHdlIGNhbiBpbmplY3QgUExBVEZPUk1fSURcbmxldCBpT1MgPSBmYWxzZTtcbmlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICBpT1MgPSAhIW5hdmlnYXRvci51c2VyQWdlbnQgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZ2JBdXRvQ2xvc2UoXG4gICAgem9uZTogTmdab25lLCBkb2N1bWVudDogYW55LCB0eXBlOiBib29sZWFuIHwgJ2luc2lkZScgfCAnb3V0c2lkZScsIGNsb3NlOiAoKSA9PiB2b2lkLCBjbG9zZWQkOiBPYnNlcnZhYmxlPGFueT4sXG4gICAgaW5zaWRlRWxlbWVudHM6IEhUTUxFbGVtZW50W10sIGlnbm9yZUVsZW1lbnRzPzogSFRNTEVsZW1lbnRbXSwgaW5zaWRlU2VsZWN0b3I/OiBzdHJpbmcpIHtcbiAgLy8gY2xvc2luZyBvbiBFU0MgYW5kIG91dHNpZGUgY2xpY2tzXG4gIGlmICh0eXBlKSB7XG4gICAgem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cbiAgICAgIGNvbnN0IHNob3VsZENsb3NlT25DbGljayA9IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgJiYgZXZlbnQuYnV0dG9uID09PSAyKSB8fCBpc0NvbnRhaW5lZEluKGVsZW1lbnQsIGlnbm9yZUVsZW1lbnRzKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2luc2lkZScpIHtcbiAgICAgICAgICByZXR1cm4gaXNDb250YWluZWRJbihlbGVtZW50LCBpbnNpZGVFbGVtZW50cykgJiYgbWF0Y2hlc1NlbGVjdG9ySWZBbnkoZWxlbWVudCwgaW5zaWRlU2VsZWN0b3IpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvdXRzaWRlJykge1xuICAgICAgICAgIHJldHVybiAhaXNDb250YWluZWRJbihlbGVtZW50LCBpbnNpZGVFbGVtZW50cyk7XG4gICAgICAgIH0gZWxzZSAvKiBpZiAodHlwZSA9PT0gdHJ1ZSkgKi8ge1xuICAgICAgICAgIHJldHVybiBtYXRjaGVzU2VsZWN0b3JJZkFueShlbGVtZW50LCBpbnNpZGVTZWxlY3RvcikgfHwgIWlzQ29udGFpbmVkSW4oZWxlbWVudCwgaW5zaWRlRWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBlc2NhcGVzJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKGNsb3NlZCQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihlID0+IGUud2hpY2ggPT09IEtleS5Fc2NhcGUpKTtcblxuXG4gICAgICAvLyB3ZSBoYXZlIHRvIHByZS1jYWxjdWxhdGUgJ3Nob3VsZENsb3NlT25DbGljaycgb24gJ21vdXNlZG93bi90b3VjaHN0YXJ0JyxcbiAgICAgIC8vIGJlY2F1c2Ugb24gJ21vdXNldXAvdG91Y2hlbmQnIERPTSBub2RlcyBtaWdodCBiZSBkZXRhY2hlZFxuICAgICAgY29uc3QgbW91c2VEb3ducyQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsIGlPUyA/ICd0b3VjaHN0YXJ0JyA6ICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKHNob3VsZENsb3NlT25DbGljayksIHRha2VVbnRpbChjbG9zZWQkKSk7XG5cbiAgICAgIGNvbnN0IGNsb3NlYWJsZUNsaWNrcyQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsIGlPUyA/ICd0b3VjaGVuZCcgOiAnbW91c2V1cCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aExhdGVzdEZyb20obW91c2VEb3ducyQpLCBmaWx0ZXIoKFtfLCBzaG91bGRDbG9zZV0pID0+IHNob3VsZENsb3NlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5KGlPUyA/IDE2IDogMCksIHRha2VVbnRpbChjbG9zZWQkKSk7XG5cblxuICAgICAgcmFjZTxFdmVudD4oW2VzY2FwZXMkLCBjbG9zZWFibGVDbGlja3MkXSkuc3Vic2NyaWJlKCgpID0+IHpvbmUucnVuKGNsb3NlKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7ZnJvbUV2ZW50LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHRha2VVbnRpbCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtLZXl9IGZyb20gJy4uL3V0aWwva2V5JztcblxuXG5jb25zdCBGT0NVU0FCTEVfRUxFTUVOVFNfU0VMRUNUT1IgPSBbXG4gICdhW2hyZWZdJywgJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknLCAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSknLCAnc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICd0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSknLCAnW2NvbnRlbnRlZGl0YWJsZV0nLCAnW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuXS5qb2luKCcsICcpO1xuXG4vKipcbiAqIFJldHVybnMgZmlyc3QgYW5kIGxhc3QgZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZSBvZiBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gc3BlY2lmaWMgQ1NTIHNlbGVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c2FibGVCb3VuZGFyeUVsZW1lbnRzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRbXSB7XG4gIGNvbnN0IGxpc3Q6IEhUTUxFbGVtZW50W10gPVxuICAgICAgQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoRk9DVVNBQkxFX0VMRU1FTlRTX1NFTEVDVE9SKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PilcbiAgICAgICAgICAuZmlsdGVyKGVsID0+IGVsLnRhYkluZGV4ICE9PSAtMSk7XG4gIHJldHVybiBbbGlzdFswXSwgbGlzdFtsaXN0Lmxlbmd0aCAtIDFdXTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IGVuZm9yY2VzIGJyb3dzZXIgZm9jdXMgdG8gYmUgdHJhcHBlZCBpbnNpZGUgYSBET00gZWxlbWVudC5cbiAqXG4gKiBXb3JrcyBvbmx5IGZvciBjbGlja3MgaW5zaWRlIHRoZSBlbGVtZW50IGFuZCBuYXZpZ2F0aW9uIHdpdGggJ1RhYicsIGlnbm9yaW5nIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBlbGVtZW50XG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgYXJvdW5kIHdoaWNoIGZvY3VzIHdpbGwgYmUgdHJhcHBlZCBpbnNpZGVcbiAqIEBwYXJhbSBzdG9wRm9jdXNUcmFwJCBUaGUgb2JzZXJ2YWJsZSBzdHJlYW0uIFdoZW4gY29tcGxldGVkIHRoZSBmb2N1cyB0cmFwIHdpbGwgY2xlYW4gdXAgbGlzdGVuZXJzXG4gKiBhbmQgZnJlZSBpbnRlcm5hbCByZXNvdXJjZXNcbiAqIEBwYXJhbSByZWZvY3VzT25DbGljayBQdXQgdGhlIGZvY3VzIGJhY2sgdG8gdGhlIGxhc3QgZm9jdXNlZCBlbGVtZW50IHdoZW5ldmVyIGEgY2xpY2sgb2NjdXJzIG9uIGVsZW1lbnQgKGRlZmF1bHQgdG9cbiAqIGZhbHNlKVxuICovXG5leHBvcnQgY29uc3QgbmdiRm9jdXNUcmFwID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzdG9wRm9jdXNUcmFwJDogT2JzZXJ2YWJsZTxhbnk+LCByZWZvY3VzT25DbGljayA9IGZhbHNlKSA9PiB7XG4gIC8vIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gIGNvbnN0IGxhc3RGb2N1c2VkRWxlbWVudCQgPVxuICAgICAgZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KGVsZW1lbnQsICdmb2N1c2luJykucGlwZSh0YWtlVW50aWwoc3RvcEZvY3VzVHJhcCQpLCBtYXAoZSA9PiBlLnRhcmdldCkpO1xuXG4gIC8vICd0YWInIC8gJ3NoaWZ0K3RhYicgc3RyZWFtXG4gIGZyb21FdmVudDxLZXlib2FyZEV2ZW50PihlbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoc3RvcEZvY3VzVHJhcCQpLFxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlOmRlcHJlY2F0aW9uXG4gICAgICAgICAgZmlsdGVyKGUgPT4gZS53aGljaCA9PT0gS2V5LlRhYiksXG4gICAgICAgICAgLy8gdHNsaW50OmVuYWJsZTpkZXByZWNhdGlvblxuICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKGxhc3RGb2N1c2VkRWxlbWVudCQpKVxuICAgICAgLnN1YnNjcmliZSgoW3RhYkV2ZW50LCBmb2N1c2VkRWxlbWVudF0pID0+IHtcbiAgICAgICAgY29uc3RbZmlyc3QsIGxhc3RdID0gZ2V0Rm9jdXNhYmxlQm91bmRhcnlFbGVtZW50cyhlbGVtZW50KTtcblxuICAgICAgICBpZiAoKGZvY3VzZWRFbGVtZW50ID09PSBmaXJzdCB8fCBmb2N1c2VkRWxlbWVudCA9PT0gZWxlbWVudCkgJiYgdGFiRXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBsYXN0LmZvY3VzKCk7XG4gICAgICAgICAgdGFiRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCA9PT0gbGFzdCAmJiAhdGFiRXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBmaXJzdC5mb2N1cygpO1xuICAgICAgICAgIHRhYkV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gIC8vIGluc2lkZSBjbGlja1xuICBpZiAocmVmb2N1c09uQ2xpY2spIHtcbiAgICBmcm9tRXZlbnQoZWxlbWVudCwgJ2NsaWNrJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHN0b3BGb2N1c1RyYXAkKSwgd2l0aExhdGVzdEZyb20obGFzdEZvY3VzZWRFbGVtZW50JCksIG1hcChhcnIgPT4gYXJyWzFdIGFzIEhUTUxFbGVtZW50KSlcbiAgICAgICAgLnN1YnNjcmliZShsYXN0Rm9jdXNlZEVsZW1lbnQgPT4gbGFzdEZvY3VzZWRFbGVtZW50LmZvY3VzKCkpO1xuICB9XG59O1xuIiwiLy8gcHJldmlvdXMgdmVyc2lvbjpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyLXVpL2Jvb3RzdHJhcC9ibG9iLzA3YzMxZDA3MzFmN2NiMDY4YTE5MzJiOGUwMWQyMzEyYjc5NmI0ZWMvc3JjL3Bvc2l0aW9uL3Bvc2l0aW9uLmpzXG5leHBvcnQgY2xhc3MgUG9zaXRpb25pbmcge1xuICBwcml2YXRlIGdldEFsbFN0eWxlcyhlbGVtZW50OiBIVE1MRWxlbWVudCkgeyByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7IH1cblxuICBwcml2YXRlIGdldFN0eWxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXRBbGxTdHlsZXMoZWxlbWVudClbcHJvcF07IH1cblxuICBwcml2YXRlIGlzU3RhdGljUG9zaXRpb25lZChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKSB8fCAnc3RhdGljJykgPT09ICdzdGF0aWMnO1xuICB9XG5cbiAgcHJpdmF0ZSBvZmZzZXRQYXJlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgbGV0IG9mZnNldFBhcmVudEVsID0gPEhUTUxFbGVtZW50PmVsZW1lbnQub2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChvZmZzZXRQYXJlbnRFbCAmJiBvZmZzZXRQYXJlbnRFbCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIHRoaXMuaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudEVsKSkge1xuICAgICAgb2Zmc2V0UGFyZW50RWwgPSA8SFRNTEVsZW1lbnQ+b2Zmc2V0UGFyZW50RWwub2Zmc2V0UGFyZW50O1xuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXRQYXJlbnRFbCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICBwb3NpdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCwgcm91bmQgPSB0cnVlKTogQ2xpZW50UmVjdCB7XG4gICAgbGV0IGVsUG9zaXRpb246IENsaWVudFJlY3Q7XG4gICAgbGV0IHBhcmVudE9mZnNldDogQ2xpZW50UmVjdCA9IHt3aWR0aDogMCwgaGVpZ2h0OiAwLCB0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDB9O1xuXG4gICAgaWYgKHRoaXMuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcbiAgICAgIGVsUG9zaXRpb24gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgZWxQb3NpdGlvbiA9IHtcbiAgICAgICAgdG9wOiBlbFBvc2l0aW9uLnRvcCxcbiAgICAgICAgYm90dG9tOiBlbFBvc2l0aW9uLmJvdHRvbSxcbiAgICAgICAgbGVmdDogZWxQb3NpdGlvbi5sZWZ0LFxuICAgICAgICByaWdodDogZWxQb3NpdGlvbi5yaWdodCxcbiAgICAgICAgaGVpZ2h0OiBlbFBvc2l0aW9uLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGVsUG9zaXRpb24ud2lkdGhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9mZnNldFBhcmVudEVsID0gdGhpcy5vZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgICAgIGVsUG9zaXRpb24gPSB0aGlzLm9mZnNldChlbGVtZW50LCBmYWxzZSk7XG5cbiAgICAgIGlmIChvZmZzZXRQYXJlbnRFbCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAgIHBhcmVudE9mZnNldCA9IHRoaXMub2Zmc2V0KG9mZnNldFBhcmVudEVsLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHBhcmVudE9mZnNldC50b3AgKz0gb2Zmc2V0UGFyZW50RWwuY2xpZW50VG9wO1xuICAgICAgcGFyZW50T2Zmc2V0LmxlZnQgKz0gb2Zmc2V0UGFyZW50RWwuY2xpZW50TGVmdDtcbiAgICB9XG5cbiAgICBlbFBvc2l0aW9uLnRvcCAtPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgIGVsUG9zaXRpb24uYm90dG9tIC09IHBhcmVudE9mZnNldC50b3A7XG4gICAgZWxQb3NpdGlvbi5sZWZ0IC09IHBhcmVudE9mZnNldC5sZWZ0O1xuICAgIGVsUG9zaXRpb24ucmlnaHQgLT0gcGFyZW50T2Zmc2V0LmxlZnQ7XG5cbiAgICBpZiAocm91bmQpIHtcbiAgICAgIGVsUG9zaXRpb24udG9wID0gTWF0aC5yb3VuZChlbFBvc2l0aW9uLnRvcCk7XG4gICAgICBlbFBvc2l0aW9uLmJvdHRvbSA9IE1hdGgucm91bmQoZWxQb3NpdGlvbi5ib3R0b20pO1xuICAgICAgZWxQb3NpdGlvbi5sZWZ0ID0gTWF0aC5yb3VuZChlbFBvc2l0aW9uLmxlZnQpO1xuICAgICAgZWxQb3NpdGlvbi5yaWdodCA9IE1hdGgucm91bmQoZWxQb3NpdGlvbi5yaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsUG9zaXRpb247XG4gIH1cblxuICBvZmZzZXQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHJvdW5kID0gdHJ1ZSk6IENsaWVudFJlY3Qge1xuICAgIGNvbnN0IGVsQmNyID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydE9mZnNldCA9IHtcbiAgICAgIHRvcDogd2luZG93LnBhZ2VZT2Zmc2V0IC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFRvcCxcbiAgICAgIGxlZnQ6IHdpbmRvdy5wYWdlWE9mZnNldCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRMZWZ0XG4gICAgfTtcblxuICAgIGxldCBlbE9mZnNldCA9IHtcbiAgICAgIGhlaWdodDogZWxCY3IuaGVpZ2h0IHx8IGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxuICAgICAgd2lkdGg6IGVsQmNyLndpZHRoIHx8IGVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICB0b3A6IGVsQmNyLnRvcCArIHZpZXdwb3J0T2Zmc2V0LnRvcCxcbiAgICAgIGJvdHRvbTogZWxCY3IuYm90dG9tICsgdmlld3BvcnRPZmZzZXQudG9wLFxuICAgICAgbGVmdDogZWxCY3IubGVmdCArIHZpZXdwb3J0T2Zmc2V0LmxlZnQsXG4gICAgICByaWdodDogZWxCY3IucmlnaHQgKyB2aWV3cG9ydE9mZnNldC5sZWZ0XG4gICAgfTtcblxuICAgIGlmIChyb3VuZCkge1xuICAgICAgZWxPZmZzZXQuaGVpZ2h0ID0gTWF0aC5yb3VuZChlbE9mZnNldC5oZWlnaHQpO1xuICAgICAgZWxPZmZzZXQud2lkdGggPSBNYXRoLnJvdW5kKGVsT2Zmc2V0LndpZHRoKTtcbiAgICAgIGVsT2Zmc2V0LnRvcCA9IE1hdGgucm91bmQoZWxPZmZzZXQudG9wKTtcbiAgICAgIGVsT2Zmc2V0LmJvdHRvbSA9IE1hdGgucm91bmQoZWxPZmZzZXQuYm90dG9tKTtcbiAgICAgIGVsT2Zmc2V0LmxlZnQgPSBNYXRoLnJvdW5kKGVsT2Zmc2V0LmxlZnQpO1xuICAgICAgZWxPZmZzZXQucmlnaHQgPSBNYXRoLnJvdW5kKGVsT2Zmc2V0LnJpZ2h0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxPZmZzZXQ7XG4gIH1cblxuICAvKlxuICAgIFJldHVybiBmYWxzZSBpZiB0aGUgZWxlbWVudCB0byBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSB2aWV3cG9ydFxuICAqL1xuICBwb3NpdGlvbkVsZW1lbnRzKGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCwgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsIHBsYWNlbWVudDogc3RyaW5nLCBhcHBlbmRUb0JvZHk/OiBib29sZWFuKTpcbiAgICAgIGJvb2xlYW4ge1xuICAgIGNvbnN0W3BsYWNlbWVudFByaW1hcnkgPSAndG9wJywgcGxhY2VtZW50U2Vjb25kYXJ5ID0gJ2NlbnRlciddID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG5cbiAgICBjb25zdCBob3N0RWxQb3NpdGlvbiA9IGFwcGVuZFRvQm9keSA/IHRoaXMub2Zmc2V0KGhvc3RFbGVtZW50LCBmYWxzZSkgOiB0aGlzLnBvc2l0aW9uKGhvc3RFbGVtZW50LCBmYWxzZSk7XG4gICAgY29uc3QgdGFyZ2V0RWxTdHlsZXMgPSB0aGlzLmdldEFsbFN0eWxlcyh0YXJnZXRFbGVtZW50KTtcblxuICAgIGNvbnN0IG1hcmdpblRvcCA9IHBhcnNlRmxvYXQodGFyZ2V0RWxTdHlsZXMubWFyZ2luVG9wKTtcbiAgICBjb25zdCBtYXJnaW5Cb3R0b20gPSBwYXJzZUZsb2F0KHRhcmdldEVsU3R5bGVzLm1hcmdpbkJvdHRvbSk7XG4gICAgY29uc3QgbWFyZ2luTGVmdCA9IHBhcnNlRmxvYXQodGFyZ2V0RWxTdHlsZXMubWFyZ2luTGVmdCk7XG4gICAgY29uc3QgbWFyZ2luUmlnaHQgPSBwYXJzZUZsb2F0KHRhcmdldEVsU3R5bGVzLm1hcmdpblJpZ2h0KTtcblxuICAgIGxldCB0b3BQb3NpdGlvbiA9IDA7XG4gICAgbGV0IGxlZnRQb3NpdGlvbiA9IDA7XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudFByaW1hcnkpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHRvcFBvc2l0aW9uID0gKGhvc3RFbFBvc2l0aW9uLnRvcCAtICh0YXJnZXRFbGVtZW50Lm9mZnNldEhlaWdodCArIG1hcmdpblRvcCArIG1hcmdpbkJvdHRvbSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHRvcFBvc2l0aW9uID0gKGhvc3RFbFBvc2l0aW9uLnRvcCArIGhvc3RFbFBvc2l0aW9uLmhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGxlZnRQb3NpdGlvbiA9IChob3N0RWxQb3NpdGlvbi5sZWZ0IC0gKHRhcmdldEVsZW1lbnQub2Zmc2V0V2lkdGggKyBtYXJnaW5MZWZ0ICsgbWFyZ2luUmlnaHQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGxlZnRQb3NpdGlvbiA9IChob3N0RWxQb3NpdGlvbi5sZWZ0ICsgaG9zdEVsUG9zaXRpb24ud2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudFNlY29uZGFyeSkge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgdG9wUG9zaXRpb24gPSBob3N0RWxQb3NpdGlvbi50b3A7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgdG9wUG9zaXRpb24gPSBob3N0RWxQb3NpdGlvbi50b3AgKyBob3N0RWxQb3NpdGlvbi5oZWlnaHQgLSB0YXJnZXRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgbGVmdFBvc2l0aW9uID0gaG9zdEVsUG9zaXRpb24ubGVmdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIGxlZnRQb3NpdGlvbiA9IGhvc3RFbFBvc2l0aW9uLmxlZnQgKyBob3N0RWxQb3NpdGlvbi53aWR0aCAtIHRhcmdldEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgaWYgKHBsYWNlbWVudFByaW1hcnkgPT09ICd0b3AnIHx8IHBsYWNlbWVudFByaW1hcnkgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgbGVmdFBvc2l0aW9uID0gKGhvc3RFbFBvc2l0aW9uLmxlZnQgKyBob3N0RWxQb3NpdGlvbi53aWR0aCAvIDIgLSB0YXJnZXRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9wUG9zaXRpb24gPSAoaG9zdEVsUG9zaXRpb24udG9wICsgaG9zdEVsUG9zaXRpb24uaGVpZ2h0IC8gMiAtIHRhcmdldEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8vIFRoZSB0cmFuc2xhdGUzZC9ncHUgYWNjZWxlcmF0aW9uIHJlbmRlciBhIGJsdXJyeSB0ZXh0IG9uIGNocm9tZSwgdGhlIG5leHQgbGluZSBpcyBjb21tZW50ZWQgdW50aWwgYSBicm93c2VyIGZpeFxuICAgIC8vIHRhcmdldEVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKCR7TWF0aC5yb3VuZChsZWZ0UG9zaXRpb24pfXB4LCAke01hdGguZmxvb3IodG9wUG9zaXRpb24pfXB4LCAwcHgpYDtcbiAgICB0YXJnZXRFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtNYXRoLnJvdW5kKGxlZnRQb3NpdGlvbil9cHgsICR7TWF0aC5yb3VuZCh0b3BQb3NpdGlvbil9cHgpYDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSB0YXJnZXRFbGVtZW50IGlzIGluc2lkZSB0aGUgdmlld3BvcnRcbiAgICBjb25zdCB0YXJnZXRFbEJDUiA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgaHRtbC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBodG1sLmNsaWVudFdpZHRoO1xuXG4gICAgcmV0dXJuIHRhcmdldEVsQkNSLmxlZnQgPj0gMCAmJiB0YXJnZXRFbEJDUi50b3AgPj0gMCAmJiB0YXJnZXRFbEJDUi5yaWdodCA8PSB3aW5kb3dXaWR0aCAmJlxuICAgICAgICB0YXJnZXRFbEJDUi5ib3R0b20gPD0gd2luZG93SGVpZ2h0O1xuICB9XG59XG5cbmNvbnN0IHBsYWNlbWVudFNlcGFyYXRvciA9IC9cXHMrLztcbmNvbnN0IHBvc2l0aW9uU2VydmljZSA9IG5ldyBQb3NpdGlvbmluZygpO1xuXG4vKlxuICogQWNjZXB0IHRoZSBwbGFjZW1lbnQgYXJyYXkgYW5kIGFwcGxpZXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlbWVudCBkZXBlbmRlbnQgb24gdGhlIHZpZXdwb3J0LlxuICogUmV0dXJucyB0aGUgYXBwbGllZCBwbGFjZW1lbnQuXG4gKiBJbiBjYXNlIG9mIGF1dG8gcGxhY2VtZW50LCBwbGFjZW1lbnRzIGFyZSBzZWxlY3RlZCBpbiBvcmRlclxuICogICAndG9wJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0JyxcbiAqICAgJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCcsXG4gKiAgICdib3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnLFxuICogICAnbGVmdC10b3AnLCAnbGVmdC1ib3R0b20nLFxuICogICAncmlnaHQtdG9wJywgJ3JpZ2h0LWJvdHRvbScuXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uRWxlbWVudHMoXG4gICAgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCwgcGxhY2VtZW50OiBzdHJpbmcgfCBQbGFjZW1lbnQgfCBQbGFjZW1lbnRBcnJheSxcbiAgICBhcHBlbmRUb0JvZHk/OiBib29sZWFuLCBiYXNlQ2xhc3M/OiBzdHJpbmcpOiBQbGFjZW1lbnQge1xuICBsZXQgcGxhY2VtZW50VmFsczogQXJyYXk8UGxhY2VtZW50PiA9XG4gICAgICBBcnJheS5pc0FycmF5KHBsYWNlbWVudCkgPyBwbGFjZW1lbnQgOiBwbGFjZW1lbnQuc3BsaXQocGxhY2VtZW50U2VwYXJhdG9yKSBhcyBBcnJheTxQbGFjZW1lbnQ+O1xuXG4gIGNvbnN0IGFsbG93ZWRQbGFjZW1lbnRzID0gW1xuICAgICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnLCAndG9wLWxlZnQnLCAndG9wLXJpZ2h0JywgJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICdsZWZ0LXRvcCcsICdsZWZ0LWJvdHRvbScsXG4gICAgJ3JpZ2h0LXRvcCcsICdyaWdodC1ib3R0b20nXG4gIF07XG5cbiAgY29uc3QgY2xhc3NMaXN0ID0gdGFyZ2V0RWxlbWVudC5jbGFzc0xpc3Q7XG4gIGNvbnN0IGFkZENsYXNzZXNUb1RhcmdldCA9ICh0YXJnZXRQbGFjZW1lbnQ6IFBsYWNlbWVudCk6IEFycmF5PHN0cmluZz4gPT4ge1xuICAgIGNvbnN0W3ByaW1hcnksIHNlY29uZGFyeV0gPSB0YXJnZXRQbGFjZW1lbnQuc3BsaXQoJy0nKTtcbiAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgaWYgKGJhc2VDbGFzcykge1xuICAgICAgY2xhc3Nlcy5wdXNoKGAke2Jhc2VDbGFzc30tJHtwcmltYXJ5fWApO1xuICAgICAgaWYgKHNlY29uZGFyeSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goYCR7YmFzZUNsYXNzfS0ke3ByaW1hcnl9LSR7c2Vjb25kYXJ5fWApO1xuICAgICAgfVxuXG4gICAgICBjbGFzc2VzLmZvckVhY2goKGNsYXNzbmFtZSkgPT4geyBjbGFzc0xpc3QuYWRkKGNsYXNzbmFtZSk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfTtcblxuICAvLyBSZW1vdmUgb2xkIHBsYWNlbWVudCBjbGFzc2VzIHRvIGF2b2lkIGlzc3Vlc1xuICBpZiAoYmFzZUNsYXNzKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMuZm9yRWFjaCgocGxhY2VtZW50VG9SZW1vdmUpID0+IHsgY2xhc3NMaXN0LnJlbW92ZShgJHtiYXNlQ2xhc3N9LSR7cGxhY2VtZW50VG9SZW1vdmV9YCk7IH0pO1xuICB9XG5cbiAgLy8gcmVwbGFjZSBhdXRvIHBsYWNlbWVudCB3aXRoIG90aGVyIHBsYWNlbWVudHNcbiAgbGV0IGhhc0F1dG8gPSBwbGFjZW1lbnRWYWxzLmZpbmRJbmRleCh2YWwgPT4gdmFsID09PSAnYXV0bycpO1xuICBpZiAoaGFzQXV0byA+PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMuZm9yRWFjaChmdW5jdGlvbihvYmopIHtcbiAgICAgIGlmIChwbGFjZW1lbnRWYWxzLmZpbmQodmFsID0+IHZhbC5zZWFyY2goJ14nICsgb2JqKSAhPT0gLTEpID09IG51bGwpIHtcbiAgICAgICAgcGxhY2VtZW50VmFscy5zcGxpY2UoaGFzQXV0bysrLCAxLCBvYmogYXMgUGxhY2VtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGNvb3JkaW5hdGVzIHdoZXJlIHRvIHBvc2l0aW9uXG5cbiAgLy8gUmVxdWlyZWQgZm9yIHRyYW5zZm9ybTpcbiAgY29uc3Qgc3R5bGUgPSB0YXJnZXRFbGVtZW50LnN0eWxlO1xuICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIHN0eWxlLnRvcCA9ICcwJztcbiAgc3R5bGUubGVmdCA9ICcwJztcbiAgc3R5bGVbJ3dpbGwtY2hhbmdlJ10gPSAndHJhbnNmb3JtJztcblxuICBsZXQgdGVzdFBsYWNlbWVudDogUGxhY2VtZW50O1xuICBsZXQgaXNJblZpZXdwb3J0ID0gZmFsc2U7XG4gIGZvciAodGVzdFBsYWNlbWVudCBvZiBwbGFjZW1lbnRWYWxzKSB7XG4gICAgbGV0IGFkZGVkQ2xhc3NlcyA9IGFkZENsYXNzZXNUb1RhcmdldCh0ZXN0UGxhY2VtZW50KTtcblxuICAgIGlmIChwb3NpdGlvblNlcnZpY2UucG9zaXRpb25FbGVtZW50cyhob3N0RWxlbWVudCwgdGFyZ2V0RWxlbWVudCwgdGVzdFBsYWNlbWVudCwgYXBwZW5kVG9Cb2R5KSkge1xuICAgICAgaXNJblZpZXdwb3J0ID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgYmFzZUNsYXNzZXMgZm9yIGZ1cnRoZXIgY2FsY3VsYXRpb25cbiAgICBpZiAoYmFzZUNsYXNzKSB7XG4gICAgICBhZGRlZENsYXNzZXMuZm9yRWFjaCgoY2xhc3NuYW1lKSA9PiB7IGNsYXNzTGlzdC5yZW1vdmUoY2xhc3NuYW1lKTsgfSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc0luVmlld3BvcnQpIHtcbiAgICAvLyBJZiBub3RoaW5nIG1hdGNoLCB0aGUgZmlyc3QgcGxhY2VtZW50IGlzIHRoZSBkZWZhdWx0IG9uZVxuICAgIHRlc3RQbGFjZW1lbnQgPSBwbGFjZW1lbnRWYWxzWzBdO1xuICAgIGFkZENsYXNzZXNUb1RhcmdldCh0ZXN0UGxhY2VtZW50KTtcbiAgICBwb3NpdGlvblNlcnZpY2UucG9zaXRpb25FbGVtZW50cyhob3N0RWxlbWVudCwgdGFyZ2V0RWxlbWVudCwgdGVzdFBsYWNlbWVudCwgYXBwZW5kVG9Cb2R5KTtcbiAgfVxuXG4gIHJldHVybiB0ZXN0UGxhY2VtZW50O1xufVxuXG5leHBvcnQgdHlwZSBQbGFjZW1lbnQgPSAnYXV0bycgfCAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfFxuICAgICdib3R0b20tcmlnaHQnIHwgJ2xlZnQtdG9wJyB8ICdsZWZ0LWJvdHRvbScgfCAncmlnaHQtdG9wJyB8ICdyaWdodC1ib3R0b20nO1xuXG5leHBvcnQgdHlwZSBQbGFjZW1lbnRBcnJheSA9IFBsYWNlbWVudCB8IEFycmF5PFBsYWNlbWVudD58IHN0cmluZztcbiIsImltcG9ydCB7cGFkTnVtYmVyLCB0b0ludGVnZXIsIGlzTnVtYmVyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JEYXRlU3RydWN0fSBmcm9tICcuL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gTkdCX0RBVEVQSUNLRVJfUEFSU0VSX0ZPUk1BVFRFUl9GQUNUT1JZKCkge1xuICByZXR1cm4gbmV3IE5nYkRhdGVJU09QYXJzZXJGb3JtYXR0ZXIoKTtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBzZXJ2aWNlIGZvciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGRhdGVzIGZvciB0aGVcbiAqIFtgTmdiSW5wdXREYXRlcGlja2VyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYklucHV0RGF0ZXBpY2tlcikgZGlyZWN0aXZlLlxuICogQ29udmVydHMgYmV0d2VlbiB0aGUgaW50ZXJuYWwgYE5nYkRhdGVTdHJ1Y3RgIG1vZGVsIHByZXNlbnRhdGlvbiBhbmQgYSBgc3RyaW5nYCB0aGF0IGlzIGRpc3BsYXllZCBpbiB0aGVcbiAqIGlucHV0IGVsZW1lbnQuXG4gKlxuICogV2hlbiB1c2VyIHR5cGVzIHNvbWV0aGluZyBpbiB0aGUgaW5wdXQgdGhpcyBzZXJ2aWNlIGF0dGVtcHRzIHRvIHBhcnNlIGl0IGludG8gYSBgTmdiRGF0ZVN0cnVjdGAgb2JqZWN0LlxuICogQW5kIHZpY2UgdmVyc2EsIHdoZW4gdXNlcnMgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyIHdpdGggdGhlIG1vdXNlLCBpdCBtdXN0IGJlIGRpc3BsYXllZCBhcyBhIGBzdHJpbmdgXG4gKiBpbiB0aGUgaW5wdXQuXG4gKlxuICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBJU08gODYwMSBmb3JtYXQsIGJ1dCB5b3UgY2FuIHByb3ZpZGUgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiB2aWEgRElcbiAqIHRvIHVzZSBhbiBhbHRlcm5hdGl2ZSBzdHJpbmcgZm9ybWF0IG9yIGEgY3VzdG9tIHBhcnNpbmcgbG9naWMuXG4gKlxuICogU2VlIHRoZSBbZGF0ZSBmb3JtYXQgb3ZlcnZpZXddKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL292ZXJ2aWV3I2RhdGUtbW9kZWwpIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCcsIHVzZUZhY3Rvcnk6IE5HQl9EQVRFUElDS0VSX1BBUlNFUl9GT1JNQVRURVJfRkFDVE9SWX0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciB7XG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGBzdHJpbmdgIHRvIGFuIGBOZ2JEYXRlU3RydWN0YC5cbiAgICpcbiAgICogSW1wbGVtZW50YXRpb25zIHNob3VsZCB0cnkgdGhlaXIgYmVzdCB0byBwcm92aWRlIGEgcmVzdWx0LCBldmVuXG4gICAqIHBhcnRpYWwuIFRoZXkgbXVzdCByZXR1cm4gYG51bGxgIGlmIHRoZSB2YWx1ZSBjYW4ndCBiZSBwYXJzZWQuXG4gICAqL1xuICBhYnN0cmFjdCBwYXJzZSh2YWx1ZTogc3RyaW5nKTogTmdiRGF0ZVN0cnVjdDtcblxuICAvKipcbiAgICogRm9ybWF0cyB0aGUgZ2l2ZW4gYE5nYkRhdGVTdHJ1Y3RgIHRvIGEgYHN0cmluZ2AuXG4gICAqXG4gICAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgZ2l2ZW4gZGF0ZSBpcyBgbnVsbGAsXG4gICAqIGFuZCB0cnkgdGhlaXIgYmVzdCB0byBwcm92aWRlIGEgcGFydGlhbCByZXN1bHQgaWYgdGhlIGdpdmVuIGRhdGUgaXMgaW5jb21wbGV0ZSBvciBpbnZhbGlkLlxuICAgKi9cbiAgYWJzdHJhY3QgZm9ybWF0KGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JEYXRlSVNPUGFyc2VyRm9ybWF0dGVyIGV4dGVuZHMgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciB7XG4gIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBOZ2JEYXRlU3RydWN0IHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IGRhdGVQYXJ0cyA9IHZhbHVlLnRyaW0oKS5zcGxpdCgnLScpO1xuICAgICAgaWYgKGRhdGVQYXJ0cy5sZW5ndGggPT09IDEgJiYgaXNOdW1iZXIoZGF0ZVBhcnRzWzBdKSkge1xuICAgICAgICByZXR1cm4ge3llYXI6IHRvSW50ZWdlcihkYXRlUGFydHNbMF0pLCBtb250aDogbnVsbCwgZGF5OiBudWxsfTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0ZVBhcnRzLmxlbmd0aCA9PT0gMiAmJiBpc051bWJlcihkYXRlUGFydHNbMF0pICYmIGlzTnVtYmVyKGRhdGVQYXJ0c1sxXSkpIHtcbiAgICAgICAgcmV0dXJuIHt5ZWFyOiB0b0ludGVnZXIoZGF0ZVBhcnRzWzBdKSwgbW9udGg6IHRvSW50ZWdlcihkYXRlUGFydHNbMV0pLCBkYXk6IG51bGx9O1xuICAgICAgfSBlbHNlIGlmIChkYXRlUGFydHMubGVuZ3RoID09PSAzICYmIGlzTnVtYmVyKGRhdGVQYXJ0c1swXSkgJiYgaXNOdW1iZXIoZGF0ZVBhcnRzWzFdKSAmJiBpc051bWJlcihkYXRlUGFydHNbMl0pKSB7XG4gICAgICAgIHJldHVybiB7eWVhcjogdG9JbnRlZ2VyKGRhdGVQYXJ0c1swXSksIG1vbnRoOiB0b0ludGVnZXIoZGF0ZVBhcnRzWzFdKSwgZGF5OiB0b0ludGVnZXIoZGF0ZVBhcnRzWzJdKX07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9ybWF0KGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlID9cbiAgICAgICAgYCR7ZGF0ZS55ZWFyfS0ke2lzTnVtYmVyKGRhdGUubW9udGgpID8gcGFkTnVtYmVyKGRhdGUubW9udGgpIDogJyd9LSR7aXNOdW1iZXIoZGF0ZS5kYXkpID8gcGFkTnVtYmVyKGRhdGUuZGF5KSA6ICcnfWAgOlxuICAgICAgICAnJztcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge25nYkF1dG9DbG9zZX0gZnJvbSAnLi4vdXRpbC9hdXRvY2xvc2UnO1xuaW1wb3J0IHtuZ2JGb2N1c1RyYXB9IGZyb20gJy4uL3V0aWwvZm9jdXMtdHJhcCc7XG5pbXBvcnQge1BsYWNlbWVudEFycmF5LCBwb3NpdGlvbkVsZW1lbnRzfSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcblxuaW1wb3J0IHtOZ2JEYXRlQWRhcHRlcn0gZnJvbSAnLi9hZGFwdGVycy9uZ2ItZGF0ZS1hZGFwdGVyJztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlciwgTmdiRGF0ZXBpY2tlck5hdmlnYXRlRXZlbnR9IGZyb20gJy4vZGF0ZXBpY2tlcic7XG5pbXBvcnQge0RheVRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi9kYXRlcGlja2VyLWRheS10ZW1wbGF0ZS1jb250ZXh0JztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlclNlcnZpY2V9IGZyb20gJy4vZGF0ZXBpY2tlci1zZXJ2aWNlJztcbmltcG9ydCB7TmdiQ2FsZW5kYXJ9IGZyb20gJy4vbmdiLWNhbGVuZGFyJztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkRhdGVQYXJzZXJGb3JtYXR0ZXJ9IGZyb20gJy4vbmdiLWRhdGUtcGFyc2VyLWZvcm1hdHRlcic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4vbmdiLWRhdGUtc3RydWN0JztcblxuY29uc3QgTkdCX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ2JJbnB1dERhdGVwaWNrZXIpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuY29uc3QgTkdCX0RBVEVQSUNLRVJfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ2JJbnB1dERhdGVwaWNrZXIpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IGFsbG93cyB0byBzdGljayBhIGRhdGVwaWNrZXIgcG9wdXAgdG8gYW4gaW5wdXQgZmllbGQuXG4gKlxuICogTWFuYWdlcyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnB1dCBmaWVsZCBpdHNlbGYsIGRvZXMgdmFsdWUgZm9ybWF0dGluZyBhbmQgcHJvdmlkZXMgZm9ybXMgaW50ZWdyYXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W25nYkRhdGVwaWNrZXJdJyxcbiAgZXhwb3J0QXM6ICduZ2JEYXRlcGlja2VyJyxcbiAgaG9zdDoge1xuICAgICcoaW5wdXQpJzogJ21hbnVhbERhdGVDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSknLFxuICAgICcoY2hhbmdlKSc6ICdtYW51YWxEYXRlQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUsIHRydWUpJyxcbiAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbTkdCX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IsIE5HQl9EQVRFUElDS0VSX1ZBTElEQVRPUiwgTmdiRGF0ZXBpY2tlclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5nYklucHV0RGF0ZXBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBwcml2YXRlIF9jUmVmOiBDb21wb25lbnRSZWY8TmdiRGF0ZXBpY2tlcj4gPSBudWxsO1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9tb2RlbDogTmdiRGF0ZTtcbiAgcHJpdmF0ZSBfaW5wdXRWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIF96b25lU3Vic2NyaXB0aW9uOiBhbnk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBkYXRlcGlja2VyIHBvcHVwIHNob3VsZCBiZSBjbG9zZWQgYXV0b21hdGljYWxseSBhZnRlciBkYXRlIHNlbGVjdGlvbiAvIG91dHNpZGUgY2xpY2sgb3Igbm90LlxuICAgKlxuICAgKiAqIGB0cnVlYCAtIHRoZSBwb3B1cCB3aWxsIGNsb3NlIG9uIGJvdGggZGF0ZSBzZWxlY3Rpb24gYW5kIG91dHNpZGUgY2xpY2suXG4gICAqICogYGZhbHNlYCAtIHRoZSBwb3B1cCBjYW4gb25seSBiZSBjbG9zZWQgbWFudWFsbHkgdmlhIGBjbG9zZSgpYCBvciBgdG9nZ2xlKClgIG1ldGhvZHMuXG4gICAqICogYFwiaW5zaWRlXCJgIC0gdGhlIHBvcHVwIHdpbGwgY2xvc2Ugb24gZGF0ZSBzZWxlY3Rpb24sIGJ1dCBub3Qgb3V0c2lkZSBjbGlja3MuXG4gICAqICogYFwib3V0c2lkZVwiYCAtIHRoZSBwb3B1cCB3aWxsIGNsb3NlIG9ubHkgb24gdGhlIG91dHNpZGUgY2xpY2sgYW5kIG5vdCBvbiBkYXRlIHNlbGVjdGlvbi9pbnNpZGUgY2xpY2tzLlxuICAgKlxuICAgKiBAc2luY2UgMy4wLjBcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdpbnNpZGUnIHwgJ291dHNpZGUnID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGRheS5cbiAgICpcbiAgICogQWxsb3dzIHRvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIHdheSBhIGRheSAnY2VsbCcgaW4gdGhlIGNhbGVuZGFyIGlzIGRpc3BsYXllZC5cbiAgICpcbiAgICogU2VlIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkgZm9yIHRoZSBkYXRhIHlvdSBnZXQgaW5zaWRlLlxuICAgKi9cbiAgQElucHV0KCkgZGF5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPERheVRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBwYXNzIGFueSBhcmJpdHJhcnkgZGF0YSB0byB0aGUgdGVtcGxhdGUgY2VsbCB2aWEgdGhlXG4gICAqIFtgRGF5VGVtcGxhdGVDb250ZXh0YF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI0RheVRlbXBsYXRlQ29udGV4dCkncyBgZGF0YWAgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBgY3VycmVudGAgaXMgdGhlIG1vbnRoIHRoYXQgaXMgY3VycmVudGx5IGRpc3BsYXllZCBieSB0aGUgZGF0ZXBpY2tlci5cbiAgICpcbiAgICogQHNpbmNlIDMuMy4wXG4gICAqL1xuICBASW5wdXQoKSBkYXlUZW1wbGF0ZURhdGE6IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50OiB7eWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyfSkgPT4gYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheU1vbnRoczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKlxuICAgKiBXaXRoIGRlZmF1bHQgY2FsZW5kYXIgd2UgdXNlIElTTyA4NjAxOiAnd2Vla2RheScgaXMgMT1Nb24gLi4uIDc9U3VuLlxuICAgKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlZmVyZW5jZSB0byB0aGUgY3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgZGF0ZXBpY2tlciBmb290ZXIuXG4gICAqXG4gICAqIEBzaW5jZSAzLjMuMFxuICAgKi9cbiAgQElucHV0KCkgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBtYXJrIHNvbWUgZGF0ZXMgYXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIEl0IGlzIGNhbGxlZCBmb3IgZWFjaCBuZXcgZGF0ZSB3aGVuIG5hdmlnYXRpbmcgdG8gYSBkaWZmZXJlbnQgbW9udGguXG4gICAqXG4gICAqIGBjdXJyZW50YCBpcyB0aGUgbW9udGggdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkIGJ5IHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KCkgbWFya0Rpc2FibGVkOiAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudDoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlcn0pID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBlYXJsaWVzdCBkYXRlIHRoYXQgY2FuIGJlIGRpc3BsYXllZCBvciBzZWxlY3RlZC4gQWxzbyB1c2VkIGZvciBmb3JtIHZhbGlkYXRpb24uXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgJ3llYXInIHNlbGVjdCBib3ggd2lsbCBkaXNwbGF5IDEwIHllYXJzIGJlZm9yZSB0aGUgY3VycmVudCBtb250aC5cbiAgICovXG4gIEBJbnB1dCgpIG1pbkRhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZGF0ZSB0aGF0IGNhbiBiZSBkaXNwbGF5ZWQgb3Igc2VsZWN0ZWQuIEFsc28gdXNlZCBmb3IgZm9ybSB2YWxpZGF0aW9uLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsICd5ZWFyJyBzZWxlY3QgYm94IHdpbGwgZGlzcGxheSAxMCB5ZWFycyBhZnRlciB0aGUgY3VycmVudCBtb250aC5cbiAgICovXG4gIEBJbnB1dCgpIG1heERhdGU6IE5nYkRhdGVTdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRpb24gdHlwZS5cbiAgICpcbiAgICogKiBgXCJzZWxlY3RcImAgLSBzZWxlY3QgYm94ZXMgZm9yIG1vbnRoIGFuZCBuYXZpZ2F0aW9uIGFycm93c1xuICAgKiAqIGBcImFycm93c1wiYCAtIG9ubHkgbmF2aWdhdGlvbiBhcnJvd3NcbiAgICogKiBgXCJub25lXCJgIC0gbm8gbmF2aWdhdGlvbiB2aXNpYmxlIGF0IGFsbFxuICAgKi9cbiAgQElucHV0KCkgbmF2aWdhdGlvbjogJ3NlbGVjdCcgfCAnYXJyb3dzJyB8ICdub25lJztcblxuICAvKipcbiAgICogVGhlIHdheSBvZiBkaXNwbGF5aW5nIGRheXMgdGhhdCBkb24ndCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgbW9udGguXG4gICAqXG4gICAqICogYFwidmlzaWJsZVwiYCAtIGRheXMgYXJlIHZpc2libGVcbiAgICogKiBgXCJoaWRkZW5cImAgLSBkYXlzIGFyZSBoaWRkZW4sIHdoaXRlIHNwYWNlIHByZXNlcnZlZFxuICAgKiAqIGBcImNvbGxhcHNlZFwiYCAtIGRheXMgYXJlIGNvbGxhcHNlZCwgc28gdGhlIGRhdGVwaWNrZXIgaGVpZ2h0IG1pZ2h0IGNoYW5nZSBiZXR3ZWVuIG1vbnRoc1xuICAgKlxuICAgKiBGb3IgdGhlIDIrIG1vbnRocyB2aWV3LCBkYXlzIGluIGJldHdlZW4gbW9udGhzIGFyZSBuZXZlciBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIG91dHNpZGVEYXlzOiAndmlzaWJsZScgfCAnY29sbGFwc2VkJyB8ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZmVycmVkIHBsYWNlbWVudCBvZiB0aGUgZGF0ZXBpY2tlciBwb3B1cC5cbiAgICpcbiAgICogUG9zc2libGUgdmFsdWVzIGFyZSBgXCJ0b3BcImAsIGBcInRvcC1sZWZ0XCJgLCBgXCJ0b3AtcmlnaHRcImAsIGBcImJvdHRvbVwiYCwgYFwiYm90dG9tLWxlZnRcImAsXG4gICAqIGBcImJvdHRvbS1yaWdodFwiYCwgYFwibGVmdFwiYCwgYFwibGVmdC10b3BcImAsIGBcImxlZnQtYm90dG9tXCJgLCBgXCJyaWdodFwiYCwgYFwicmlnaHQtdG9wXCJgLFxuICAgKiBgXCJyaWdodC1ib3R0b21cImBcbiAgICpcbiAgICogQWNjZXB0cyBhbiBhcnJheSBvZiBzdHJpbmdzIG9yIGEgc3RyaW5nIHdpdGggc3BhY2Ugc2VwYXJhdGVkIHBvc3NpYmxlIHZhbHVlcy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgb3JkZXIgb2YgcHJlZmVyZW5jZSBpcyBgXCJib3R0b20tbGVmdCBib3R0b20tcmlnaHQgdG9wLWxlZnQgdG9wLXJpZ2h0XCJgXG4gICAqXG4gICAqIFBsZWFzZSBzZWUgdGhlIFtwb3NpdGlvbmluZyBvdmVydmlld10oIy9wb3NpdGlvbmluZykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlbWVudDogUGxhY2VtZW50QXJyYXkgPSBbJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICd0b3AtbGVmdCcsICd0b3AtcmlnaHQnXTtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrZGF5cyB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dXZWVrZGF5czogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB3ZWVrIG51bWJlcnMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBzaG93V2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIHRvIG9wZW4gY2FsZW5kYXIgd2l0aC5cbiAgICpcbiAgICogV2l0aCB0aGUgZGVmYXVsdCBjYWxlbmRhciB3ZSB1c2UgSVNPIDg2MDE6ICdtb250aCcgaXMgMT1KYW4gLi4uIDEyPURlYy5cbiAgICogSWYgbm90aGluZyBvciBpbnZhbGlkIGRhdGUgaXMgcHJvdmlkZWQsIGNhbGVuZGFyIHdpbGwgb3BlbiB3aXRoIGN1cnJlbnQgbW9udGguXG4gICAqXG4gICAqIFlvdSBjb3VsZCB1c2UgYG5hdmlnYXRlVG8oZGF0ZSlgIG1ldGhvZCBhcyBhbiBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZToge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5PzogbnVtYmVyfTtcblxuICAvKipcbiAgICogQSBzZWxlY3RvciBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IHRoZSBkYXRlcGlja2VyIHBvcHVwIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgICpcbiAgICogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgYFwiYm9keVwiYC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNzcyBzZWxlY3RvciBvciBodG1sIGVsZW1lbnQgc3BlY2lmeWluZyB0aGUgZWxlbWVudCB0aGUgZGF0ZXBpY2tlciBwb3B1cCBzaG91bGQgYmUgcG9zaXRpb25lZCBhZ2FpbnN0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBpbnB1dCBpcyB1c2VkIGFzIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBAc2luY2UgNC4yLjBcbiAgICovXG4gIEBJbnB1dCgpIHBvc2l0aW9uVGFyZ2V0OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIGRhdGUgdXNpbmcga2V5Ym9hcmQgb3IgbW91c2UuXG4gICAqXG4gICAqIFRoZSBwYXlsb2FkIG9mIHRoZSBldmVudCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgYE5nYkRhdGVgLlxuICAgKlxuICAgKiBAc2luY2UgMS4xLjFcbiAgICovXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHJpZ2h0IGFmdGVyIHRoZSBuYXZpZ2F0aW9uIGhhcHBlbnMgYW5kIGRpc3BsYXllZCBtb250aCBjaGFuZ2VzLlxuICAgKlxuICAgKiBTZWUgW2BOZ2JEYXRlcGlja2VyTmF2aWdhdGVFdmVudGBdKCMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JEYXRlcGlja2VyTmF2aWdhdGVFdmVudCkgZm9yIHRoZSBwYXlsb2FkIGluZm8uXG4gICAqL1xuICBAT3V0cHV0KCkgbmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPE5nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBBbiBldmVudCBmaXJlZCBhZnRlciBjbG9zaW5nIGRhdGVwaWNrZXIgd2luZG93LlxuICAgKlxuICAgKiBAc2luY2UgNC4yLjBcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWUgPT09ICcnIHx8ICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJyk7XG5cbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5fY1JlZi5pbnN0YW5jZS5zZXREaXNhYmxlZFN0YXRlKHRoaXMuX2Rpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlID0gKCkgPT4ge307XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX3BhcnNlckZvcm1hdHRlcjogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICBwcml2YXRlIF92Y1JlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBfc2VydmljZTogTmdiRGF0ZXBpY2tlclNlcnZpY2UsIHByaXZhdGUgX2NhbGVuZGFyOiBOZ2JDYWxlbmRhcixcbiAgICAgIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBOZ2JEYXRlQWRhcHRlcjxhbnk+LCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LFxuICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbiA9IF9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZVBvcHVwUG9zaXRpb24oKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMuX29uQ2hhbmdlID0gZm47IH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gYW55KTogdm9pZCB7IHRoaXMuX29uVG91Y2hlZCA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLl92YWxpZGF0b3JDaGFuZ2UgPSBmbjsgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQgeyB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDsgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICBjb25zdCB2YWx1ZSA9IGMudmFsdWU7XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbmdiRGF0ZSA9IHRoaXMuX2Zyb21EYXRlU3RydWN0KHRoaXMuX2RhdGVBZGFwdGVyLmZyb21Nb2RlbCh2YWx1ZSkpO1xuXG4gICAgaWYgKCF0aGlzLl9jYWxlbmRhci5pc1ZhbGlkKG5nYkRhdGUpKSB7XG4gICAgICByZXR1cm4geyduZ2JEYXRlJzoge2ludmFsaWQ6IGMudmFsdWV9fTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5taW5EYXRlICYmIG5nYkRhdGUuYmVmb3JlKE5nYkRhdGUuZnJvbSh0aGlzLm1pbkRhdGUpKSkge1xuICAgICAgcmV0dXJuIHsnbmdiRGF0ZSc6IHtyZXF1aXJlZEJlZm9yZTogdGhpcy5taW5EYXRlfX07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBuZ2JEYXRlLmFmdGVyKE5nYkRhdGUuZnJvbSh0aGlzLm1heERhdGUpKSkge1xuICAgICAgcmV0dXJuIHsnbmdiRGF0ZSc6IHtyZXF1aXJlZEFmdGVyOiB0aGlzLm1heERhdGV9fTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9mcm9tRGF0ZVN0cnVjdCh0aGlzLl9kYXRlQWRhcHRlci5mcm9tTW9kZWwodmFsdWUpKTtcbiAgICB0aGlzLl93cml0ZU1vZGVsVmFsdWUodGhpcy5fbW9kZWwpO1xuICB9XG5cbiAgbWFudWFsRGF0ZUNoYW5nZSh2YWx1ZTogc3RyaW5nLCB1cGRhdGVWaWV3ID0gZmFsc2UpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlQ2hhbmdlZCA9IHZhbHVlICE9PSB0aGlzLl9pbnB1dFZhbHVlO1xuICAgIGlmIChpbnB1dFZhbHVlQ2hhbmdlZCkge1xuICAgICAgdGhpcy5faW5wdXRWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9mcm9tRGF0ZVN0cnVjdCh0aGlzLl9wYXJzZXJGb3JtYXR0ZXIucGFyc2UodmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKGlucHV0VmFsdWVDaGFuZ2VkIHx8ICF1cGRhdGVWaWV3KSB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl9tb2RlbCA/IHRoaXMuX2RhdGVBZGFwdGVyLnRvTW9kZWwodGhpcy5fbW9kZWwpIDogKHZhbHVlID09PSAnJyA/IG51bGwgOiB2YWx1ZSkpO1xuICAgIH1cbiAgICBpZiAodXBkYXRlVmlldyAmJiB0aGlzLl9tb2RlbCkge1xuICAgICAgdGhpcy5fd3JpdGVNb2RlbFZhbHVlKHRoaXMuX21vZGVsKTtcbiAgICB9XG4gIH1cblxuICBpc09wZW4oKSB7IHJldHVybiAhIXRoaXMuX2NSZWY7IH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGRhdGVwaWNrZXIgcG9wdXAuXG4gICAqXG4gICAqIElmIHRoZSByZWxhdGVkIGZvcm0gY29udHJvbCBjb250YWlucyBhIHZhbGlkIGRhdGUsIHRoZSBjb3JyZXNwb25kaW5nIG1vbnRoIHdpbGwgYmUgb3BlbmVkLlxuICAgKi9cbiAgb3BlbigpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIGNvbnN0IGNmID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE5nYkRhdGVwaWNrZXIpO1xuICAgICAgdGhpcy5fY1JlZiA9IHRoaXMuX3ZjUmVmLmNyZWF0ZUNvbXBvbmVudChjZik7XG5cbiAgICAgIHRoaXMuX2FwcGx5UG9wdXBTdHlsaW5nKHRoaXMuX2NSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLl9hcHBseURhdGVwaWNrZXJJbnB1dHModGhpcy5fY1JlZi5pbnN0YW5jZSk7XG4gICAgICB0aGlzLl9zdWJzY3JpYmVGb3JEYXRlcGlja2VyT3V0cHV0cyh0aGlzLl9jUmVmLmluc3RhbmNlKTtcbiAgICAgIHRoaXMuX2NSZWYuaW5zdGFuY2UubmdPbkluaXQoKTtcbiAgICAgIHRoaXMuX2NSZWYuaW5zdGFuY2Uud3JpdGVWYWx1ZSh0aGlzLl9kYXRlQWRhcHRlci50b01vZGVsKHRoaXMuX21vZGVsKSk7XG5cbiAgICAgIC8vIGRhdGUgc2VsZWN0aW9uIGV2ZW50IGhhbmRsaW5nXG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLnJlZ2lzdGVyT25DaGFuZ2UoKHNlbGVjdGVkRGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUoc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2Uoc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fY1JlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgIHRoaXMuX2NSZWYuaW5zdGFuY2Uuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKTtcblxuICAgICAgaWYgKHRoaXMuY29udGFpbmVyID09PSAnYm9keScpIHtcbiAgICAgICAgd2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXIpLmFwcGVuZENoaWxkKHRoaXMuX2NSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGZvY3VzIGhhbmRsaW5nXG4gICAgICBuZ2JGb2N1c1RyYXAodGhpcy5fY1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLmNsb3NlZCwgdHJ1ZSk7XG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLmZvY3VzKCk7XG5cbiAgICAgIG5nYkF1dG9DbG9zZShcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUsIHRoaXMuX2RvY3VtZW50LCB0aGlzLmF1dG9DbG9zZSwgKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmNsb3NlZCwgW10sXG4gICAgICAgICAgW3RoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2NSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudF0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGRhdGVwaWNrZXIgcG9wdXAuXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5fdmNSZWYucmVtb3ZlKHRoaXMuX3ZjUmVmLmluZGV4T2YodGhpcy5fY1JlZi5ob3N0VmlldykpO1xuICAgICAgdGhpcy5fY1JlZiA9IG51bGw7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZGF0ZXBpY2tlciBwb3B1cC5cbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcm92aWRlZCBkYXRlLlxuICAgKlxuICAgKiBXaXRoIHRoZSBkZWZhdWx0IGNhbGVuZGFyIHdlIHVzZSBJU08gODYwMTogJ21vbnRoJyBpcyAxPUphbiAuLi4gMTI9RGVjLlxuICAgKiBJZiBub3RoaW5nIG9yIGludmFsaWQgZGF0ZSBwcm92aWRlZCBjYWxlbmRhciB3aWxsIG9wZW4gY3VycmVudCBtb250aC5cbiAgICpcbiAgICogVXNlIHRoZSBgW3N0YXJ0RGF0ZV1gIGlucHV0IGFzIGFuIGFsdGVybmF0aXZlLlxuICAgKi9cbiAgbmF2aWdhdGVUbyhkYXRlPzoge3llYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5PzogbnVtYmVyfSkge1xuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLm5hdmlnYXRlVG8oZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKCkgeyB0aGlzLl9vblRvdWNoZWQoKTsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbWluRGF0ZSddIHx8IGNoYW5nZXNbJ21heERhdGUnXSkge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5RGF0ZXBpY2tlcklucHV0cyhkYXRlcGlja2VySW5zdGFuY2U6IE5nYkRhdGVwaWNrZXIpOiB2b2lkIHtcbiAgICBbJ2RheVRlbXBsYXRlJywgJ2RheVRlbXBsYXRlRGF0YScsICdkaXNwbGF5TW9udGhzJywgJ2ZpcnN0RGF5T2ZXZWVrJywgJ2Zvb3RlclRlbXBsYXRlJywgJ21hcmtEaXNhYmxlZCcsICdtaW5EYXRlJyxcbiAgICAgJ21heERhdGUnLCAnbmF2aWdhdGlvbicsICdvdXRzaWRlRGF5cycsICdzaG93TmF2aWdhdGlvbicsICdzaG93V2Vla2RheXMnLCAnc2hvd1dlZWtOdW1iZXJzJ11cbiAgICAgICAgLmZvckVhY2goKG9wdGlvbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmICh0aGlzW29wdGlvbk5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbnN0YW5jZVtvcHRpb25OYW1lXSA9IHRoaXNbb3B0aW9uTmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICBkYXRlcGlja2VySW5zdGFuY2Uuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGUgfHwgdGhpcy5fbW9kZWw7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVBvcHVwU3R5bGluZyhuYXRpdmVFbGVtZW50OiBhbnkpIHtcbiAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhuYXRpdmVFbGVtZW50LCAnZHJvcGRvd24tbWVudScpO1xuICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKG5hdGl2ZUVsZW1lbnQsICdzaG93Jyk7XG5cbiAgICBpZiAodGhpcy5jb250YWluZXIgPT09ICdib2R5Jykge1xuICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3MobmF0aXZlRWxlbWVudCwgJ25nYi1kcC1ib2R5Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlRm9yRGF0ZXBpY2tlck91dHB1dHMoZGF0ZXBpY2tlckluc3RhbmNlOiBOZ2JEYXRlcGlja2VyKSB7XG4gICAgZGF0ZXBpY2tlckluc3RhbmNlLm5hdmlnYXRlLnN1YnNjcmliZShuYXZpZ2F0ZUV2ZW50ID0+IHRoaXMubmF2aWdhdGUuZW1pdChuYXZpZ2F0ZUV2ZW50KSk7XG4gICAgZGF0ZXBpY2tlckluc3RhbmNlLnNlbGVjdC5zdWJzY3JpYmUoZGF0ZSA9PiB7XG4gICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChkYXRlKTtcbiAgICAgIGlmICh0aGlzLmF1dG9DbG9zZSA9PT0gdHJ1ZSB8fCB0aGlzLmF1dG9DbG9zZSA9PT0gJ2luc2lkZScpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd3JpdGVNb2RlbFZhbHVlKG1vZGVsOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9wYXJzZXJGb3JtYXR0ZXIuZm9ybWF0KG1vZGVsKTtcbiAgICB0aGlzLl9pbnB1dFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLl9jUmVmLmluc3RhbmNlLndyaXRlVmFsdWUodGhpcy5fZGF0ZUFkYXB0ZXIudG9Nb2RlbChtb2RlbCkpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZnJvbURhdGVTdHJ1Y3QoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGUge1xuICAgIGNvbnN0IG5nYkRhdGUgPSBkYXRlID8gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCBkYXRlLmRheSkgOiBudWxsO1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5pc1ZhbGlkKG5nYkRhdGUpID8gbmdiRGF0ZSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVQb3B1cFBvc2l0aW9uKCkge1xuICAgIGlmICghdGhpcy5fY1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBob3N0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnBvc2l0aW9uVGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgaG9zdEVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLnBvc2l0aW9uVGFyZ2V0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucG9zaXRpb25UYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgaG9zdEVsZW1lbnQgPSB0aGlzLnBvc2l0aW9uVGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICBob3N0RWxlbWVudCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9zaXRpb25UYXJnZXQgJiYgIWhvc3RFbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25nYkRhdGVwaWNrZXIgY291bGQgbm90IGZpbmQgZWxlbWVudCBkZWNsYXJlZCBpbiBbcG9zaXRpb25UYXJnZXRdIHRvIHBvc2l0aW9uIGFnYWluc3QuJyk7XG4gICAgfVxuXG4gICAgcG9zaXRpb25FbGVtZW50cyhob3N0RWxlbWVudCwgdGhpcy5fY1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLnBsYWNlbWVudCwgdGhpcy5jb250YWluZXIgPT09ICdib2R5Jyk7XG4gIH1cbn1cbiIsImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJJMThufSBmcm9tICcuL2RhdGVwaWNrZXItaTE4bic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tuZ2JEYXRlcGlja2VyRGF5Vmlld10nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci1kYXktdmlldy5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnYnRuLWxpZ2h0JyxcbiAgICAnW2NsYXNzLmJnLXByaW1hcnldJzogJ3NlbGVjdGVkJyxcbiAgICAnW2NsYXNzLnRleHQtd2hpdGVdJzogJ3NlbGVjdGVkJyxcbiAgICAnW2NsYXNzLnRleHQtbXV0ZWRdJzogJ2lzTXV0ZWQoKScsXG4gICAgJ1tjbGFzcy5vdXRzaWRlXSc6ICdpc011dGVkKCknLFxuICAgICdbY2xhc3MuYWN0aXZlXSc6ICdmb2N1c2VkJ1xuICB9LFxuICB0ZW1wbGF0ZTogYHt7IGkxOG4uZ2V0RGF5TnVtZXJhbHMoZGF0ZSkgfX1gXG59KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJEYXlWaWV3IHtcbiAgQElucHV0KCkgY3VycmVudE1vbnRoOiBudW1iZXI7XG4gIEBJbnB1dCgpIGRhdGU6IE5nYkRhdGU7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBmb2N1c2VkOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaTE4bjogTmdiRGF0ZXBpY2tlckkxOG4pIHt9XG5cbiAgaXNNdXRlZCgpIHsgcmV0dXJuICF0aGlzLnNlbGVjdGVkICYmICh0aGlzLmRhdGUubW9udGggIT09IHRoaXMuY3VycmVudE1vbnRoIHx8IHRoaXMuZGlzYWJsZWQpOyB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmltcG9ydCB7dG9JbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VySTE4bn0gZnJvbSAnLi9kYXRlcGlja2VyLWkxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItZGF0ZXBpY2tlci1uYXZpZ2F0aW9uLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLW5hdmlnYXRpb24tc2VsZWN0LnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c2VsZWN0XG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCJcbiAgICAgIFt2YWx1ZV09XCJkYXRlPy5tb250aFwiXG4gICAgICBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi5kYXRlcGlja2VyLnNlbGVjdC1tb250aFwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgbW9udGhcIlxuICAgICAgaTE4bi10aXRsZT1cIkBAbmdiLmRhdGVwaWNrZXIuc2VsZWN0LW1vbnRoXCIgdGl0bGU9XCJTZWxlY3QgbW9udGhcIlxuICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VNb250aCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtIG9mIG1vbnRoc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiaTE4bi5nZXRNb250aEZ1bGxOYW1lKG0sIGRhdGU/LnllYXIpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibVwiPnt7IGkxOG4uZ2V0TW9udGhTaG9ydE5hbWUobSwgZGF0ZT8ueWVhcikgfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD48c2VsZWN0XG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCJcbiAgICAgIFt2YWx1ZV09XCJkYXRlPy55ZWFyXCJcbiAgICAgIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLmRhdGVwaWNrZXIuc2VsZWN0LXllYXJcIiBhcmlhLWxhYmVsPVwiU2VsZWN0IHllYXJcIlxuICAgICAgaTE4bi10aXRsZT1cIkBAbmdiLmRhdGVwaWNrZXIuc2VsZWN0LXllYXJcIiB0aXRsZT1cIlNlbGVjdCB5ZWFyXCJcbiAgICAgIChjaGFuZ2UpPVwiY2hhbmdlWWVhcigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB5IG9mIHllYXJzXCIgW3ZhbHVlXT1cInlcIj57eyBpMThuLmdldFllYXJOdW1lcmFscyh5KSB9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0IHtcbiAgQElucHV0KCkgZGF0ZTogTmdiRGF0ZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG1vbnRoczogbnVtYmVyW107XG4gIEBJbnB1dCgpIHllYXJzOiBudW1iZXJbXTtcblxuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JEYXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBOZ2JEYXRlcGlja2VySTE4bikge31cblxuICBjaGFuZ2VNb250aChtb250aDogc3RyaW5nKSB7IHRoaXMuc2VsZWN0LmVtaXQobmV3IE5nYkRhdGUodGhpcy5kYXRlLnllYXIsIHRvSW50ZWdlcihtb250aCksIDEpKTsgfVxuXG4gIGNoYW5nZVllYXIoeWVhcjogc3RyaW5nKSB7IHRoaXMuc2VsZWN0LmVtaXQobmV3IE5nYkRhdGUodG9JbnRlZ2VyKHllYXIpLCB0aGlzLmRhdGUubW9udGgsIDEpKTsgfVxufVxuIiwiaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYlBlcmlvZCwgTmdiQ2FsZW5kYXJ9IGZyb20gJy4uL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc051bWJlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nYkNhbGVuZGFySGlqcmkgZXh0ZW5kcyBOZ2JDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIHNwZWNpZmljIEhpanJpIG1vbnRoLlxuICAgKiBgbW9udGhgIGlzIDEgZm9yIE11aGFycmFtLCAyIGZvciBTYWZhciwgZXRjLlxuICAgKiBgeWVhcmAgaXMgYW55IEhpanJpIHllYXIuXG4gICAqL1xuICBhYnN0cmFjdCBnZXREYXlzUGVyTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IEhpanJpIGRhdGUgdmFsdWUgZm9yIGEgZ2l2ZSBpbnB1dCBHcmVnb3JpYW4gZGF0ZS5cbiAgICogYGdEYXRlYCBpcyBzIEpTIERhdGUgdG8gYmUgY29udmVydGVkIHRvIEhpanJpLlxuICAgKi9cbiAgYWJzdHJhY3QgZnJvbUdyZWdvcmlhbihnRGF0ZTogRGF0ZSk6IE5nYkRhdGU7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IEhpanJpIGRhdGUgdG8gR3JlZ29yaWFuLlxuICAgKi9cbiAgYWJzdHJhY3QgdG9HcmVnb3JpYW4oaERhdGU6IE5nYkRhdGUpOiBEYXRlO1xuXG4gIGdldERheXNQZXJXZWVrKCkgeyByZXR1cm4gNzsgfVxuXG4gIGdldE1vbnRocygpIHsgcmV0dXJuIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyXTsgfVxuXG4gIGdldFdlZWtzUGVyTW9udGgoKSB7IHJldHVybiA2OyB9XG5cbiAgZ2V0TmV4dChkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkge1xuICAgIGRhdGUgPSBuZXcgTmdiRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5KTtcblxuICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICBjYXNlICd5JzpcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldFllYXIoZGF0ZSwgZGF0ZS55ZWFyICsgbnVtYmVyKTtcbiAgICAgICAgZGF0ZS5tb250aCA9IDE7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICBjYXNlICdtJzpcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldE1vbnRoKGRhdGUsIGRhdGUubW9udGggKyBudW1iZXIpO1xuICAgICAgICBkYXRlLmRheSA9IDE7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgY2FzZSAnZCc6XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXREYXkoZGF0ZSwgZGF0ZS5kYXkgKyBudW1iZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJldihkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkgeyByZXR1cm4gdGhpcy5nZXROZXh0KGRhdGUsIHBlcmlvZCwgLW51bWJlcik7IH1cblxuICBnZXRXZWVrZGF5KGRhdGU6IE5nYkRhdGUpIHtcbiAgICBjb25zdCBkYXkgPSB0aGlzLnRvR3JlZ29yaWFuKGRhdGUpLmdldERheSgpO1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgcmV0dXJuIGRheSA9PT0gMCA/IDcgOiBkYXk7XG4gIH1cblxuICBnZXRXZWVrTnVtYmVyKHdlZWs6IE5nYkRhdGVbXSwgZmlyc3REYXlPZldlZWs6IG51bWJlcikge1xuICAgIC8vIGluIEpTIERhdGUgU3VuPTAsIGluIElTTyA4NjAxIFN1bj03XG4gICAgaWYgKGZpcnN0RGF5T2ZXZWVrID09PSA3KSB7XG4gICAgICBmaXJzdERheU9mV2VlayA9IDA7XG4gICAgfVxuXG4gICAgY29uc3QgdGh1cnNkYXlJbmRleCA9ICg0ICsgNyAtIGZpcnN0RGF5T2ZXZWVrKSAlIDc7XG4gICAgY29uc3QgZGF0ZSA9IHdlZWtbdGh1cnNkYXlJbmRleF07XG5cbiAgICBjb25zdCBqc0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGRhdGUpO1xuICAgIGpzRGF0ZS5zZXREYXRlKGpzRGF0ZS5nZXREYXRlKCkgKyA0IC0gKGpzRGF0ZS5nZXREYXkoKSB8fCA3KSk7ICAvLyBUaHVyc2RheVxuICAgIGNvbnN0IHRpbWUgPSBqc0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IE11aERhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKG5ldyBOZ2JEYXRlKGRhdGUueWVhciwgMSwgMSkpOyAgLy8gQ29tcGFyZSB3aXRoIE11aGFycmFtIDFcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJvdW5kKCh0aW1lIC0gTXVoRGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDApIC8gNykgKyAxO1xuICB9XG5cbiAgZ2V0VG9kYXkoKTogTmdiRGF0ZSB7IHJldHVybiB0aGlzLmZyb21HcmVnb3JpYW4obmV3IERhdGUoKSk7IH1cblxuXG4gIGlzVmFsaWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlICYmIGlzTnVtYmVyKGRhdGUueWVhcikgJiYgaXNOdW1iZXIoZGF0ZS5tb250aCkgJiYgaXNOdW1iZXIoZGF0ZS5kYXkpICYmXG4gICAgICAgICFpc05hTih0aGlzLnRvR3JlZ29yaWFuKGRhdGUpLmdldFRpbWUoKSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXREYXkoZGF0ZTogTmdiRGF0ZSwgZGF5OiBudW1iZXIpOiBOZ2JEYXRlIHtcbiAgICBkYXkgPSArZGF5O1xuICAgIGxldCBtRGF5cyA9IHRoaXMuZ2V0RGF5c1Blck1vbnRoKGRhdGUubW9udGgsIGRhdGUueWVhcik7XG4gICAgaWYgKGRheSA8PSAwKSB7XG4gICAgICB3aGlsZSAoZGF5IDw9IDApIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldE1vbnRoKGRhdGUsIGRhdGUubW9udGggLSAxKTtcbiAgICAgICAgbURheXMgPSB0aGlzLmdldERheXNQZXJNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgICAgICBkYXkgKz0gbURheXM7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkYXkgPiBtRGF5cykge1xuICAgICAgd2hpbGUgKGRheSA+IG1EYXlzKSB7XG4gICAgICAgIGRheSAtPSBtRGF5cztcbiAgICAgICAgZGF0ZSA9IHRoaXMuX3NldE1vbnRoKGRhdGUsIGRhdGUubW9udGggKyAxKTtcbiAgICAgICAgbURheXMgPSB0aGlzLmdldERheXNQZXJNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBkYXRlLmRheSA9IGRheTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE1vbnRoKGRhdGU6IE5nYkRhdGUsIG1vbnRoOiBudW1iZXIpOiBOZ2JEYXRlIHtcbiAgICBtb250aCA9ICttb250aDtcbiAgICBkYXRlLnllYXIgPSBkYXRlLnllYXIgKyBNYXRoLmZsb29yKChtb250aCAtIDEpIC8gMTIpO1xuICAgIGRhdGUubW9udGggPSBNYXRoLmZsb29yKCgobW9udGggLSAxKSAlIDEyICsgMTIpICUgMTIpICsgMTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFllYXIoZGF0ZTogTmdiRGF0ZSwgeWVhcjogbnVtYmVyKTogTmdiRGF0ZSB7XG4gICAgZGF0ZS55ZWFyID0gK3llYXI7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdiQ2FsZW5kYXJIaWpyaX0gZnJvbSAnLi9uZ2ItY2FsZW5kYXItaGlqcmknO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBpc2xhbWljIHllYXIgaXMgYSBsZWFwIHllYXJcbiAqL1xuZnVuY3Rpb24gaXNJc2xhbWljTGVhcFllYXIoaFllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKDE0ICsgMTEgKiBoWWVhcikgJSAzMCA8IDExO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBncmVnb3JpYW4geWVhcnMgaXMgYSBsZWFwIHllYXJcbiAqL1xuZnVuY3Rpb24gaXNHcmVnb3JpYW5MZWFwWWVhcihnRGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICBjb25zdCB5ZWFyID0gZ0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzdGFydCBvZiBIaWpyaSBNb250aC5cbiAqIGBoTW9udGhgIGlzIDAgZm9yIE11aGFycmFtLCAxIGZvciBTYWZhciwgZXRjLlxuICogYGhZZWFyYCBpcyBhbnkgSGlqcmkgaFllYXIuXG4gKi9cbmZ1bmN0aW9uIGdldElzbGFtaWNNb250aFN0YXJ0KGhZZWFyOiBudW1iZXIsIGhNb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguY2VpbCgyOS41ICogaE1vbnRoKSArIChoWWVhciAtIDEpICogMzU0ICsgTWF0aC5mbG9vcigoMyArIDExICogaFllYXIpIC8gMzAuMCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc3RhcnQgb2YgSGlqcmkgeWVhci5cbiAqIGB5ZWFyYCBpcyBhbnkgSGlqcmkgeWVhci5cbiAqL1xuZnVuY3Rpb24gZ2V0SXNsYW1pY1llYXJTdGFydCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKHllYXIgLSAxKSAqIDM1NCArIE1hdGguZmxvb3IoKDMgKyAxMSAqIHllYXIpIC8gMzAuMCk7XG59XG5cbmZ1bmN0aW9uIG1vZChhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhIC0gYiAqIE1hdGguZmxvb3IoYSAvIGIpO1xufVxuXG4vKipcbiAqIFRoZSBjaXZpbCBjYWxlbmRhciBpcyBvbmUgdHlwZSBvZiBIaWpyaSBjYWxlbmRhcnMgdXNlZCBpbiBpc2xhbWljIGNvdW50cmllcy5cbiAqIFVzZXMgYSBmaXhlZCBjeWNsZSBvZiBhbHRlcm5hdGluZyAyOS0gYW5kIDMwLWRheSBtb250aHMsXG4gKiB3aXRoIGEgbGVhcCBkYXkgYWRkZWQgdG8gdGhlIGxhc3QgbW9udGggb2YgMTEgb3V0IG9mIGV2ZXJ5IDMwIHllYXJzLlxuICogaHR0cDovL2NsZHIudW5pY29kZS5vcmcvZGV2ZWxvcG1lbnQvZGV2ZWxvcG1lbnQtcHJvY2Vzcy9kZXNpZ24tcHJvcG9zYWxzL2lzbGFtaWMtY2FsZW5kYXItdHlwZXNcbiAqIEFsbCB0aGUgY2FsY3VsYXRpb25zIGhlcmUgYXJlIGJhc2VkIG9uIHRoZSBlcXVhdGlvbnMgZnJvbSBcIkNhbGVuZHJpY2FsIENhbGN1bGF0aW9uc1wiIEJ5IEVkd2FyZCBNLiBSZWluZ29sZCwgTmFjaHVtXG4gKiBEZXJzaG93aXR6LlxuICovXG5cbmNvbnN0IEdSRUdPUklBTl9FUE9DSCA9IDE3MjE0MjUuNTtcbmNvbnN0IElTTEFNSUNfRVBPQ0ggPSAxOTQ4NDM5LjU7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JDYWxlbmRhcklzbGFtaWNDaXZpbCBleHRlbmRzIE5nYkNhbGVuZGFySGlqcmkge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXF1aXZhbGVudCBpc2xhbWljKGNpdmlsKSBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gICAqIGBnRGF0ZWAgaXMgYSBKUyBEYXRlIHRvIGJlIGNvbnZlcnRlZCB0byBIaWpyaS5cbiAgICovXG4gIGZyb21HcmVnb3JpYW4oZ0RhdGU6IERhdGUpOiBOZ2JEYXRlIHtcbiAgICBjb25zdCBnWWVhciA9IGdEYXRlLmdldEZ1bGxZZWFyKCksIGdNb250aCA9IGdEYXRlLmdldE1vbnRoKCksIGdEYXkgPSBnRGF0ZS5nZXREYXRlKCk7XG5cbiAgICBsZXQganVsaWFuRGF5ID0gR1JFR09SSUFOX0VQT0NIIC0gMSArIDM2NSAqIChnWWVhciAtIDEpICsgTWF0aC5mbG9vcigoZ1llYXIgLSAxKSAvIDQpICtcbiAgICAgICAgLU1hdGguZmxvb3IoKGdZZWFyIC0gMSkgLyAxMDApICsgTWF0aC5mbG9vcigoZ1llYXIgLSAxKSAvIDQwMCkgK1xuICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgKDM2NyAqIChnTW9udGggKyAxKSAtIDM2MikgLyAxMiArIChnTW9udGggKyAxIDw9IDIgPyAwIDogaXNHcmVnb3JpYW5MZWFwWWVhcihnRGF0ZSkgPyAtMSA6IC0yKSArIGdEYXkpO1xuICAgIGp1bGlhbkRheSA9IE1hdGguZmxvb3IoanVsaWFuRGF5KSArIDAuNTtcblxuICAgIGNvbnN0IGRheXMgPSBqdWxpYW5EYXkgLSBJU0xBTUlDX0VQT0NIO1xuICAgIGNvbnN0IGhZZWFyID0gTWF0aC5mbG9vcigoMzAgKiBkYXlzICsgMTA2NDYpIC8gMTA2MzEuMCk7XG4gICAgbGV0IGhNb250aCA9IE1hdGguY2VpbCgoZGF5cyAtIDI5IC0gZ2V0SXNsYW1pY1llYXJTdGFydChoWWVhcikpIC8gMjkuNSk7XG4gICAgaE1vbnRoID0gTWF0aC5taW4oaE1vbnRoLCAxMSk7XG4gICAgY29uc3QgaERheSA9IE1hdGguY2VpbChkYXlzIC0gZ2V0SXNsYW1pY01vbnRoU3RhcnQoaFllYXIsIGhNb250aCkpICsgMTtcbiAgICByZXR1cm4gbmV3IE5nYkRhdGUoaFllYXIsIGhNb250aCArIDEsIGhEYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVxdWl2YWxlbnQgSlMgZGF0ZSB2YWx1ZSBmb3IgYSBnaXZlIGlucHV0IGlzbGFtaWMoY2l2aWwpIGRhdGUuXG4gICAqIGBoRGF0ZWAgaXMgYW4gaXNsYW1pYyhjaXZpbCkgZGF0ZSB0byBiZSBjb252ZXJ0ZWQgdG8gR3JlZ29yaWFuLlxuICAgKi9cbiAgdG9HcmVnb3JpYW4oaERhdGU6IE5nYkRhdGUpOiBEYXRlIHtcbiAgICBjb25zdCBoWWVhciA9IGhEYXRlLnllYXI7XG4gICAgY29uc3QgaE1vbnRoID0gaERhdGUubW9udGggLSAxO1xuICAgIGNvbnN0IGhEYXkgPSBoRGF0ZS5kYXk7XG4gICAgY29uc3QganVsaWFuRGF5ID1cbiAgICAgICAgaERheSArIE1hdGguY2VpbCgyOS41ICogaE1vbnRoKSArIChoWWVhciAtIDEpICogMzU0ICsgTWF0aC5mbG9vcigoMyArIDExICogaFllYXIpIC8gMzApICsgSVNMQU1JQ19FUE9DSCAtIDE7XG5cbiAgICBjb25zdCB3amQgPSBNYXRoLmZsb29yKGp1bGlhbkRheSAtIDAuNSkgKyAwLjUsIGRlcG9jaCA9IHdqZCAtIEdSRUdPUklBTl9FUE9DSCxcbiAgICAgICAgICBxdWFkcmljZW50ID0gTWF0aC5mbG9vcihkZXBvY2ggLyAxNDYwOTcpLCBkcWMgPSBtb2QoZGVwb2NoLCAxNDYwOTcpLCBjZW50ID0gTWF0aC5mbG9vcihkcWMgLyAzNjUyNCksXG4gICAgICAgICAgZGNlbnQgPSBtb2QoZHFjLCAzNjUyNCksIHF1YWQgPSBNYXRoLmZsb29yKGRjZW50IC8gMTQ2MSksIGRxdWFkID0gbW9kKGRjZW50LCAxNDYxKSxcbiAgICAgICAgICB5aW5kZXggPSBNYXRoLmZsb29yKGRxdWFkIC8gMzY1KTtcbiAgICBsZXQgeWVhciA9IHF1YWRyaWNlbnQgKiA0MDAgKyBjZW50ICogMTAwICsgcXVhZCAqIDQgKyB5aW5kZXg7XG4gICAgaWYgKCEoY2VudCA9PT0gNCB8fCB5aW5kZXggPT09IDQpKSB7XG4gICAgICB5ZWFyKys7XG4gICAgfVxuXG4gICAgY29uc3QgZ1llYXJTdGFydCA9IEdSRUdPUklBTl9FUE9DSCArIDM2NSAqICh5ZWFyIC0gMSkgKyBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyA0KSAtIE1hdGguZmxvb3IoKHllYXIgLSAxKSAvIDEwMCkgK1xuICAgICAgICBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyA0MDApO1xuXG4gICAgY29uc3QgeWVhcmRheSA9IHdqZCAtIGdZZWFyU3RhcnQ7XG5cbiAgICBjb25zdCB0amQgPSBHUkVHT1JJQU5fRVBPQ0ggLSAxICsgMzY1ICogKHllYXIgLSAxKSArIE1hdGguZmxvb3IoKHllYXIgLSAxKSAvIDQpIC0gTWF0aC5mbG9vcigoeWVhciAtIDEpIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IoKHllYXIgLSAxKSAvIDQwMCkgKyBNYXRoLmZsb29yKDczOSAvIDEyICsgKGlzR3JlZ29yaWFuTGVhcFllYXIobmV3IERhdGUoeWVhciwgMywgMSkpID8gLTEgOiAtMikgKyAxKTtcblxuICAgIGNvbnN0IGxlYXBhZGogPSB3amQgPCB0amQgPyAwIDogaXNHcmVnb3JpYW5MZWFwWWVhcihuZXcgRGF0ZSh5ZWFyLCAzLCAxKSkgPyAxIDogMjtcblxuICAgIGNvbnN0IG1vbnRoID0gTWF0aC5mbG9vcigoKHllYXJkYXkgKyBsZWFwYWRqKSAqIDEyICsgMzczKSAvIDM2Nyk7XG4gICAgY29uc3QgdGpkMiA9IEdSRUdPUklBTl9FUE9DSCAtIDEgKyAzNjUgKiAoeWVhciAtIDEpICsgTWF0aC5mbG9vcigoeWVhciAtIDEpIC8gNCkgLSBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcigoeWVhciAtIDEpIC8gNDAwKSArXG4gICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAoMzY3ICogbW9udGggLSAzNjIpIC8gMTIgKyAobW9udGggPD0gMiA/IDAgOiBpc0dyZWdvcmlhbkxlYXBZZWFyKG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgMSkpID8gLTEgOiAtMikgK1xuICAgICAgICAgICAgMSk7XG5cbiAgICBjb25zdCBkYXkgPSB3amQgLSB0amQyICsgMTtcblxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBzcGVjaWZpYyBIaWpyaSBtb250aC5cbiAgICogYG1vbnRoYCBpcyAxIGZvciBNdWhhcnJhbSwgMiBmb3IgU2FmYXIsIGV0Yy5cbiAgICogYHllYXJgIGlzIGFueSBIaWpyaSB5ZWFyLlxuICAgKi9cbiAgZ2V0RGF5c1Blck1vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgeWVhciA9IHllYXIgKyBNYXRoLmZsb29yKG1vbnRoIC8gMTMpO1xuICAgIG1vbnRoID0gKChtb250aCAtIDEpICUgMTIpICsgMTtcbiAgICBsZXQgbGVuZ3RoID0gMjkgKyBtb250aCAlIDI7XG4gICAgaWYgKG1vbnRoID09PSAxMiAmJiBpc0lzbGFtaWNMZWFwWWVhcih5ZWFyKSkge1xuICAgICAgbGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdiQ2FsZW5kYXJJc2xhbWljQ2l2aWx9IGZyb20gJy4vbmdiLWNhbGVuZGFyLWlzbGFtaWMtY2l2aWwnO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFVtYWxxdXJhIGNhbGVuZGFyIGlzIG9uZSB0eXBlIG9mIEhpanJpIGNhbGVuZGFycyB1c2VkIGluIGlzbGFtaWMgY291bnRyaWVzLlxuICogVGhpcyBDYWxlbmRhciBpcyB1c2VkIGJ5IFNhdWRpIEFyYWJpYSBmb3IgYWRtaW5pc3RyYXRpdmUgcHVycG9zZS5cbiAqIFVubGlrZSB0YWJ1bGFyIGNhbGVuZGFycywgdGhlIGFsZ29yaXRobSBpbnZvbHZlcyBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb24sIGJ1dCBpdCdzIHN0aWxsIGRldGVybWluaXN0aWMuXG4gKiBodHRwOi8vY2xkci51bmljb2RlLm9yZy9kZXZlbG9wbWVudC9kZXZlbG9wbWVudC1wcm9jZXNzL2Rlc2lnbi1wcm9wb3NhbHMvaXNsYW1pYy1jYWxlbmRhci10eXBlc1xuICovXG5cbmNvbnN0IEdSRUdPUklBTl9GSVJTVF9EQVRFID0gbmV3IERhdGUoMTg4MiwgMTAsIDEyKTtcbmNvbnN0IEdSRUdPUklBTl9MQVNUX0RBVEUgPSBuZXcgRGF0ZSgyMTc0LCAxMCwgMjUpO1xuY29uc3QgSElKUklfQkVHSU4gPSAxMzAwO1xuY29uc3QgSElKUklfRU5EID0gMTYwMDtcbmNvbnN0IE9ORV9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuXG5jb25zdCBNT05USF9MRU5HVEggPSBbXG4gIC8vIDEzMDAtMTMwNFxuICAnMTAxMDEwMTAxMDEwJywgJzExMDEwMTAxMDEwMCcsICcxMTEwMTEwMDEwMDEnLCAnMDExMDExMDEwMTAwJywgJzAxMTAxMTEwMTAxMCcsXG4gIC8vIDEzMDUtMTMwOVxuICAnMDAxMTAxMTAxMTAwJywgJzEwMTAxMDEwMTEwMScsICcwMTAxMDEwMTAxMDEnLCAnMDExMDEwMTAxMDAxJywgJzAxMTExMDAxMDAxMCcsXG4gIC8vIDEzMTAtMTMxNFxuICAnMTAxMTEwMTAxMDAxJywgJzAxMDExMTAxMDEwMCcsICcxMDEwMTEwMTEwMTAnLCAnMDEwMTAxMDExMTAwJywgJzExMDEwMDEwMTEwMScsXG4gIC8vIDEzMTUtMTMxOVxuICAnMDExMDEwMDEwMTAxJywgJzAxMTEwMTAwMTAxMCcsICcxMDExMDEwMTAxMDAnLCAnMTAxMTAxMTAxMDEwJywgJzAxMDExMDEwMTEwMScsXG4gIC8vIDEzMjAtMTMyNFxuICAnMDEwMDEwMTAxMTEwJywgJzEwMTAwMTAwMTExMScsICcwMTAxMDAwMTAxMTEnLCAnMDExMDEwMDAxMDExJywgJzAxMTAxMDEwMDEwMScsXG4gIC8vIDEzMjUtMTMyOVxuICAnMTAxMDExMDEwMTAxJywgJzAwMTAxMTAxMDExMCcsICcxMDAxMDEwMTEwMTEnLCAnMDEwMDEwMDExMTAxJywgJzEwMTAwMTAwMTEwMScsXG4gIC8vIDEzMzAtMTMzNFxuICAnMTEwMTAwMTAwMTEwJywgJzExMDExMDAxMDEwMScsICcwMTAxMTAxMDExMDAnLCAnMTAwMTEwMTEwMTEwJywgJzAwMTAxMDExMTAxMCcsXG4gIC8vIDEzMzUtMTMzOVxuICAnMTAxMDAxMDExMDExJywgJzAxMDEwMDEwMTAxMScsICcxMDEwMTAwMTAxMDEnLCAnMDExMDExMDAxMDEwJywgJzEwMTAxMTEwMTAwMScsXG4gIC8vIDEzNDAtMTM0NFxuICAnMDAxMDExMTEwMTAwJywgJzEwMDEwMTExMDExMCcsICcwMDEwMTAxMTAxMTAnLCAnMTAwMTAxMDEwMTEwJywgJzEwMTAxMTAwMTAxMCcsXG4gIC8vIDEzNDUtMTM0OVxuICAnMTAxMTEwMTAwMTAwJywgJzEwMTExMTAxMDAxMCcsICcwMTAxMTEwMTEwMDEnLCAnMDAxMDExMDExMTAwJywgJzEwMDEwMTEwMTEwMScsXG4gIC8vIDEzNTAtMTM1NFxuICAnMDEwMTAxMDAxMTAxJywgJzEwMTAxMDEwMDEwMScsICcxMDExMDEwMTAwMTAnLCAnMTAxMTEwMTAwMTAxJywgJzAxMDExMDExMDEwMCcsXG4gIC8vIDEzNTUtMTM1OVxuICAnMTAwMTEwMTEwMTEwJywgJzAxMDEwMTAxMDExMScsICcwMDEwMTAwMTAxMTEnLCAnMDEwMTAxMDAxMDExJywgJzAxMTAxMDEwMDAxMScsXG4gIC8vIDEzNjAtMTM2NFxuICAnMDExMTAxMDEwMDEwJywgJzEwMTEwMTEwMDEwMScsICcwMTAxMDExMDEwMTAnLCAnMTAxMDEwMTAxMDExJywgJzAxMDEwMDEwMTAxMScsXG4gIC8vIDEzNjUtMTM2OVxuICAnMTEwMDEwMDEwMTAxJywgJzExMDEwMTAwMTAxMCcsICcxMTAxMTAxMDAxMDEnLCAnMDEwMTExMDAxMDEwJywgJzEwMTAxMTAxMDExMCcsXG4gIC8vIDEzNzAtMTM3NFxuICAnMTAwMTAxMDEwMTExJywgJzAxMDAxMDEwMTAxMScsICcxMDAxMDEwMDEwMTEnLCAnMTAxMDEwMTAwMTAxJywgJzEwMTEwMTAxMDAxMCcsXG4gIC8vIDEzNzUtMTM3OVxuICAnMTAxMTAxMTAxMDEwJywgJzAxMDEwMTExMDEwMScsICcwMDEwMDExMTAxMTAnLCAnMTAwMDEwMTEwMTExJywgJzAxMDAwMTAxMTAxMScsXG4gIC8vIDEzODAtMTM4NFxuICAnMDEwMTAxMDEwMTAxJywgJzAxMDExMDEwMTAwMScsICcwMTAxMTAxMTAxMDAnLCAnMTAwMTExMDExMDEwJywgJzAxMDAxMTAxMTEwMScsXG4gIC8vIDEzODUtMTM4OVxuICAnMDAxMDAxMTAxMTEwJywgJzEwMDEwMDExMDExMCcsICcxMDEwMTAxMDEwMTAnLCAnMTEwMTAxMDEwMTAwJywgJzExMDExMDExMDAxMCcsXG4gIC8vIDEzOTAtMTM5NFxuICAnMDEwMTExMDEwMTAxJywgJzAwMTAxMTAxMTAxMCcsICcxMDAxMDEwMTEwMTEnLCAnMDEwMDEwMTAxMDExJywgJzEwMTAwMTAxMDEwMScsXG4gIC8vIDEzOTUtMTM5OVxuICAnMTAxMTAxMDAxMDAxJywgJzEwMTEwMTEwMDEwMCcsICcxMDExMDExMTAwMDEnLCAnMDEwMTEwMTEwMTAwJywgJzEwMTAxMDExMDEwMScsXG4gIC8vIDE0MDAtMTQwNFxuICAnMTAxMDAxMDEwMTAxJywgJzExMDEwMDEwMDEwMScsICcxMTEwMTAwMTAwMTAnLCAnMTExMDExMDAxMDAxJywgJzAxMTAxMTAxMDEwMCcsXG4gIC8vIDE0MDUtMTQwOVxuICAnMTAxMDExMTAxMDAxJywgJzEwMDEwMTEwMTAxMScsICcwMTAwMTAxMDEwMTEnLCAnMTAxMDEwMDEwMDExJywgJzExMDEwMTAwMTAwMScsXG4gIC8vIDE0MTAtMTQxNFxuICAnMTEwMTEwMTAwMTAwJywgJzExMDExMDExMDAxMCcsICcxMDEwMTAxMTEwMDEnLCAnMDEwMDEwMTExMDEwJywgJzEwMTAwMTAxMTAxMScsXG4gIC8vIDE0MTUtMTQxOVxuICAnMDEwMTAwMTAxMDExJywgJzEwMTAxMDAxMDEwMScsICcxMDExMDAxMDEwMTAnLCAnMTAxMTAxMDEwMTAxJywgJzAxMDEwMTAxMTEwMCcsXG4gIC8vIDE0MjAtMTQyNFxuICAnMDEwMDEwMTExMTAxJywgJzAwMTAwMDExMTEwMScsICcxMDAxMDAwMTExMDEnLCAnMTAxMDEwMDEwMTAxJywgJzEwMTEwMTAwMTAxMCcsXG4gIC8vIDE0MjUtMTQyOVxuICAnMTAxMTAxMDExMDEwJywgJzAxMDEwMTEwMTEwMScsICcwMDEwMTAxMTAxMTAnLCAnMTAwMTAwMTExMDExJywgJzAxMDAxMDAxMTAxMScsXG4gIC8vIDE0MzAtMTQzNFxuICAnMDExMDAxMDEwMTAxJywgJzAxMTAxMDEwMTAwMScsICcwMTExMDEwMTAxMDAnLCAnMTAxMTAxMTAxMDEwJywgJzAxMDEwMTEwMTEwMCcsXG4gIC8vIDE0MzUtMTQzOVxuICAnMTAxMDEwMTAxMTAxJywgJzAxMDEwMTAxMDEwMScsICcxMDExMDAxMDEwMDEnLCAnMTAxMTEwMDEwMDEwJywgJzEwMTExMDEwMTAwMScsXG4gIC8vIDE0NDAtMTQ0NFxuICAnMDEwMTExMDEwMTAwJywgJzEwMTAxMTAxMTAxMCcsICcwMTAxMDEwMTEwMTAnLCAnMTAxMDEwMTAxMDExJywgJzAxMDExMDAxMDEwMScsXG4gIC8vIDE0NDUtMTQ0OVxuICAnMDExMTAxMDAxMDAxJywgJzAxMTEwMTEwMDEwMCcsICcxMDExMTAxMDEwMTAnLCAnMDEwMTEwMTEwMTAxJywgJzAwMTAxMDExMDExMCcsXG4gIC8vIDE0NTAtMTQ1NFxuICAnMTAxMDAxMDEwMTEwJywgJzExMTAwMTAwMTEwMScsICcxMDExMDAxMDAxMDEnLCAnMTAxMTAxMDEwMDEwJywgJzEwMTEwMTEwMTAxMCcsXG4gIC8vIDE0NTUtMTQ1OVxuICAnMDEwMTEwMTAxMTAxJywgJzAwMTAxMDEwMTExMCcsICcxMDAxMDAxMDExMTEnLCAnMDEwMDEwMDEwMTExJywgJzAxMTAwMTAwMTAxMScsXG4gIC8vIDE0NjAtMTQ2NFxuICAnMDExMDEwMTAwMTAxJywgJzAxMTAxMDEwMTEwMCcsICcxMDEwMTEwMTAxMTAnLCAnMDEwMTAxMDExMTAxJywgJzAxMDAxMDAxMTEwMScsXG4gIC8vIDE0NjUtMTQ2OVxuICAnMTAxMDAxMDAxMTAxJywgJzExMDEwMDAxMDExMCcsICcxMTAxMTAwMTAxMDEnLCAnMDEwMTEwMTAxMDEwJywgJzAxMDExMDExMDEwMScsXG4gIC8vIDE0NzAtMTQ3NFxuICAnMDAxMDExMDExMDEwJywgJzEwMDEwMTAxMTAxMScsICcwMTAwMTAxMDExMDEnLCAnMDEwMTEwMDEwMTAxJywgJzAxMTAxMTAwMTAxMCcsXG4gIC8vIDE0NzUtMTQ3OVxuICAnMDExMDExMTAwMTAwJywgJzEwMTAxMTEwMTAxMCcsICcwMTAwMTExMTAxMDEnLCAnMDAxMDEwMTEwMTEwJywgJzEwMDEwMTAxMDExMCcsXG4gIC8vIDE0ODAtMTQ4NFxuICAnMTAxMDEwMTAxMDEwJywgJzEwMTEwMTAxMDEwMCcsICcxMDExMTEwMTAwMTAnLCAnMDEwMTExMDExMDAxJywgJzAwMTAxMTEwMTAxMCcsXG4gIC8vIDE0ODUtMTQ4OVxuICAnMTAwMTAxMTAxMTAxJywgJzAxMDAxMDEwMTEwMScsICcxMDEwMTAwMTAxMDEnLCAnMTAxMTAxMDAxMDEwJywgJzEwMTExMDEwMDEwMScsXG4gIC8vIDE0OTAtMTQ5NFxuICAnMDEwMTEwMTEwMDEwJywgJzEwMDExMDExMDEwMScsICcwMTAwMTEwMTAxMTAnLCAnMTAxMDEwMDEwMTExJywgJzAxMDEwMTAwMDExMScsXG4gIC8vIDE0OTUtMTQ5OVxuICAnMDExMDEwMDEwMDExJywgJzAxMTEwMTAwMTAwMScsICcxMDExMDEwMTAxMDEnLCAnMDEwMTAxMTAxMDEwJywgJzEwMTAwMTEwMTAxMScsXG4gIC8vIDE1MDAtMTUwNFxuICAnMDEwMTAwMTAxMDExJywgJzEwMTAxMDAwMTAxMScsICcxMTAxMDEwMDAxMTAnLCAnMTEwMTEwMTAwMDExJywgJzAxMDExMTAwMTAxMCcsXG4gIC8vIDE1MDUtMTUwOVxuICAnMTAxMDExMDEwMTEwJywgJzAxMDAxMTAxMTAxMScsICcwMDEwMDExMDEwMTEnLCAnMTAwMTAxMDAxMDExJywgJzEwMTAxMDEwMDEwMScsXG4gIC8vIDE1MTAtMTUxNFxuICAnMTAxMTAxMDEwMDEwJywgJzEwMTEwMTEwMTAwMScsICcwMTAxMDExMTAxMDEnLCAnMDAwMTAxMTEwMTEwJywgJzEwMDAxMDExMDExMScsXG4gIC8vIDE1MTUtMTUxOVxuICAnMDAxMDAxMDExMDExJywgJzAxMDEwMDEwMTAxMScsICcwMTAxMDExMDAxMDEnLCAnMDEwMTEwMTEwMTAwJywgJzEwMDExMTAxMTAxMCcsXG4gIC8vIDE1MjAtMTUyNFxuICAnMDEwMDExMTAxMTAxJywgJzAwMDEwMTEwMTEwMScsICcxMDAwMTAxMTAxMTAnLCAnMTAxMDEwMTAwMTEwJywgJzExMDEwMTAxMDAxMCcsXG4gIC8vIDE1MjUtMTUyOVxuICAnMTEwMTEwMTAxMDAxJywgJzAxMDExMTAxMDEwMCcsICcxMDEwMTEwMTEwMTAnLCAnMTAwMTAxMDExMDExJywgJzAxMDAxMDEwMTAxMScsXG4gIC8vIDE1MzAtMTUzNFxuICAnMDExMDAxMDEwMDExJywgJzAxMTEwMDEwMTAwMScsICcwMTExMDExMDAwMTAnLCAnMTAxMTEwMTAxMDAxJywgJzAxMDExMDExMDAxMCcsXG4gIC8vIDE1MzUtMTUzOVxuICAnMTAxMDEwMTEwMTAxJywgJzAxMDEwMTAxMDEwMScsICcxMDExMDAxMDAxMDEnLCAnMTEwMTEwMDEwMDEwJywgJzExMTAxMTAwMTAwMScsXG4gIC8vIDE1NDAtMTU0NFxuICAnMDExMDExMDEwMDEwJywgJzEwMTAxMTEwMTAwMScsICcwMTAxMDExMDEwMTEnLCAnMDEwMDEwMTAxMDExJywgJzEwMTAwMTAxMDEwMScsXG4gIC8vIDE1NDUtMTU0OVxuICAnMTEwMTAwMTAxMDAxJywgJzExMDEwMTAxMDEwMCcsICcxMTAxMTAxMDEwMTAnLCAnMTAwMTEwMTEwMTAxJywgJzAxMDAxMDExMTAxMCcsXG4gIC8vIDE1NTAtMTU1NFxuICAnMTAxMDAwMTExMDExJywgJzAxMDAxMDAxMTAxMScsICcxMDEwMDEwMDExMDEnLCAnMTAxMDEwMTAxMDEwJywgJzEwMTAxMTAxMDEwMScsXG4gIC8vIDE1NTUtMTU1OVxuICAnMDAxMDExMDExMDEwJywgJzEwMDEwMTAxMTEwMScsICcwMTAwMDEwMTExMTAnLCAnMTAxMDAwMTAxMTEwJywgJzExMDAxMDAxMTAxMCcsXG4gIC8vIDE1NjAtMTU2NFxuICAnMTEwMTAxMDEwMTAxJywgJzAxMTAxMDExMDAxMCcsICcwMTEwMTAxMTEwMDEnLCAnMDEwMDEwMTExMDEwJywgJzEwMTAwMTAxMTEwMScsXG4gIC8vIDE1NjUtMTU2OVxuICAnMDEwMTAwMTAxMTAxJywgJzEwMTAxMDAxMDEwMScsICcxMDExMDEwMTAwMTAnLCAnMTAxMTEwMTAxMDAwJywgJzEwMTExMDExMDEwMCcsXG4gIC8vIDE1NzAtMTU3NFxuICAnMDEwMTEwMTExMDAxJywgJzAwMTAxMTAxMTAxMCcsICcxMDAxMDEwMTEwMTAnLCAnMTAxMTAxMDAxMDEwJywgJzExMDExMDEwMDEwMCcsXG4gIC8vIDE1NzUtMTU3OVxuICAnMTExMDExMDEwMDAxJywgJzAxMTAxMTEwMTAwMCcsICcxMDExMDExMDEwMTAnLCAnMDEwMTAxMTAxMTAxJywgJzAxMDEwMDExMDEwMScsXG4gIC8vIDE1ODAtMTU4NFxuICAnMDExMDEwMDEwMTAxJywgJzExMDEwMTAwMTAxMCcsICcxMTAxMTAxMDEwMDAnLCAnMTEwMTExMDEwMTAwJywgJzAxMTAxMTAxMTAxMCcsXG4gIC8vIDE1ODUtMTU4OVxuICAnMDEwMTAxMDExMDExJywgJzAwMTAxMDAxMTEwMScsICcwMTEwMDAxMDEwMTEnLCAnMTAxMTAwMDEwMTAxJywgJzEwMTEwMTAwMTAxMCcsXG4gIC8vIDE1OTAtMTU5NFxuICAnMTAxMTEwMDEwMTAxJywgJzAxMDExMDEwMTAxMCcsICcxMDEwMTAxMDExMTAnLCAnMTAwMTAwMTAxMTEwJywgJzExMDAxMDAwMTExMScsXG4gIC8vIDE1OTUtMTU5OVxuICAnMDEwMTAwMTAwMTExJywgJzAxMTAxMDAxMDEwMScsICcwMTEwMTAxMDEwMTAnLCAnMTAxMDExMDEwMTEwJywgJzAxMDEwMTAxMTEwMScsXG4gIC8vIDE2MDBcbiAgJzAwMTAxMDAxMTEwMSdcbl07XG5cbmZ1bmN0aW9uIGdldERheXNEaWZmKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhkYXRlMS5nZXRUaW1lKCkgLSBkYXRlMi5nZXRUaW1lKCkpO1xuICByZXR1cm4gTWF0aC5yb3VuZChkaWZmIC8gT05FX0RBWSk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2JDYWxlbmRhcklzbGFtaWNVbWFscXVyYSBleHRlbmRzIE5nYkNhbGVuZGFySXNsYW1pY0NpdmlsIHtcbiAgLyoqXG4gICogUmV0dXJucyB0aGUgZXF1aXZhbGVudCBpc2xhbWljKFVtYWxxdXJhKSBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gICogYGdkYXRlYCBpcyBzIEpTIERhdGUgdG8gYmUgY29udmVydGVkIHRvIEhpanJpLlxuICAqL1xuICBmcm9tR3JlZ29yaWFuKGdEYXRlOiBEYXRlKTogTmdiRGF0ZSB7XG4gICAgbGV0IGhEYXkgPSAxLCBoTW9udGggPSAwLCBoWWVhciA9IDEzMDA7XG4gICAgbGV0IGRheXNEaWZmID0gZ2V0RGF5c0RpZmYoZ0RhdGUsIEdSRUdPUklBTl9GSVJTVF9EQVRFKTtcbiAgICBpZiAoZ0RhdGUuZ2V0VGltZSgpIC0gR1JFR09SSUFOX0ZJUlNUX0RBVEUuZ2V0VGltZSgpID49IDAgJiYgZ0RhdGUuZ2V0VGltZSgpIC0gR1JFR09SSUFOX0xBU1RfREFURS5nZXRUaW1lKCkgPD0gMCkge1xuICAgICAgbGV0IHllYXIgPSAxMzAwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNT05USF9MRU5HVEgubGVuZ3RoOyBpKyssIHllYXIrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDEyOyBqKyspIHtcbiAgICAgICAgICBsZXQgbnVtT2ZEYXlzID0gK01PTlRIX0xFTkdUSFtpXVtqXSArIDI5O1xuICAgICAgICAgIGlmIChkYXlzRGlmZiA8PSBudW1PZkRheXMpIHtcbiAgICAgICAgICAgIGhEYXkgPSBkYXlzRGlmZiArIDE7XG4gICAgICAgICAgICBpZiAoaERheSA+IG51bU9mRGF5cykge1xuICAgICAgICAgICAgICBoRGF5ID0gMTtcbiAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPiAxMSkge1xuICAgICAgICAgICAgICBqID0gMDtcbiAgICAgICAgICAgICAgeWVhcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaE1vbnRoID0gajtcbiAgICAgICAgICAgIGhZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTmdiRGF0ZShoWWVhciwgaE1vbnRoICsgMSwgaERheSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRheXNEaWZmID0gZGF5c0RpZmYgLSBudW1PZkRheXM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLmZyb21HcmVnb3JpYW4oZ0RhdGUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgKiBDb252ZXJ0cyB0aGUgY3VycmVudCBIaWpyaSBkYXRlIHRvIEdyZWdvcmlhbi5cbiAgKi9cbiAgdG9HcmVnb3JpYW4oaERhdGU6IE5nYkRhdGUpOiBEYXRlIHtcbiAgICBjb25zdCBoWWVhciA9IGhEYXRlLnllYXI7XG4gICAgY29uc3QgaE1vbnRoID0gaERhdGUubW9udGggLSAxO1xuICAgIGNvbnN0IGhEYXkgPSBoRGF0ZS5kYXk7XG4gICAgbGV0IGdEYXRlID0gbmV3IERhdGUoR1JFR09SSUFOX0ZJUlNUX0RBVEUpO1xuICAgIGxldCBkYXlEaWZmID0gaERheSAtIDE7XG4gICAgaWYgKGhZZWFyID49IEhJSlJJX0JFR0lOICYmIGhZZWFyIDw9IEhJSlJJX0VORCkge1xuICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoWWVhciAtIEhJSlJJX0JFR0lOOyB5KyspIHtcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCAxMjsgbSsrKSB7XG4gICAgICAgICAgZGF5RGlmZiArPSArTU9OVEhfTEVOR1RIW3ldW21dICsgMjk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgaE1vbnRoOyBtKyspIHtcbiAgICAgICAgZGF5RGlmZiArPSArTU9OVEhfTEVOR1RIW2hZZWFyIC0gSElKUklfQkVHSU5dW21dICsgMjk7XG4gICAgICB9XG4gICAgICBnRGF0ZS5zZXREYXRlKEdSRUdPUklBTl9GSVJTVF9EQVRFLmdldERhdGUoKSArIGRheURpZmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnRGF0ZSA9IHN1cGVyLnRvR3JlZ29yaWFuKGhEYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGdEYXRlO1xuICB9XG4gIC8qKlxuICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgc3BlY2lmaWMgSGlqcmkgaE1vbnRoLlxuICAqIGBoTW9udGhgIGlzIDEgZm9yIE11aGFycmFtLCAyIGZvciBTYWZhciwgZXRjLlxuICAqIGBoWWVhcmAgaXMgYW55IEhpanJpIGhZZWFyLlxuICAqL1xuICBnZXREYXlzUGVyTW9udGgoaE1vbnRoOiBudW1iZXIsIGhZZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChoWWVhciA+PSBISUpSSV9CRUdJTiAmJiBoWWVhciA8PSBISUpSSV9FTkQpIHtcbiAgICAgIGNvbnN0IHBvcyA9IGhZZWFyIC0gSElKUklfQkVHSU47XG4gICAgICByZXR1cm4gK01PTlRIX0xFTkdUSFtwb3NdW2hNb250aCAtIDFdICsgMjk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5nZXREYXlzUGVyTW9udGgoaE1vbnRoLCBoWWVhcik7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdiRGF0ZX0gZnJvbSAnLi4vbmdiLWRhdGUnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGVxdWl2YWxlbnQgSlMgZGF0ZSB2YWx1ZSBmb3IgYSBnaXZlIGlucHV0IEphbGFsaSBkYXRlLlxuICogYGphbGFsaURhdGVgIGlzIGFuIEphbGFsaSBkYXRlIHRvIGJlIGNvbnZlcnRlZCB0byBHcmVnb3JpYW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0dyZWdvcmlhbihqYWxhbGlEYXRlOiBOZ2JEYXRlKTogRGF0ZSB7XG4gIGxldCBqZG4gPSBqYWxhbGlUb0p1bGlhbihqYWxhbGlEYXRlLnllYXIsIGphbGFsaURhdGUubW9udGgsIGphbGFsaURhdGUuZGF5KTtcbiAgbGV0IGRhdGUgPSBqdWxpYW5Ub0dyZWdvcmlhbihqZG4pO1xuICBkYXRlLnNldEhvdXJzKDYsIDMwLCAzLCAyMDApO1xuICByZXR1cm4gZGF0ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGphbGFsaSBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gKiBgZ2RhdGVgIGlzIGEgSlMgRGF0ZSB0byBiZSBjb252ZXJ0ZWQgdG8gamFsYWxpLlxuICogdXRjIHRvIGxvY2FsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tR3JlZ29yaWFuKGdkYXRlOiBEYXRlKTogTmdiRGF0ZSB7XG4gIGxldCBnMmQgPSBncmVnb3JpYW5Ub0p1bGlhbihnZGF0ZS5nZXRGdWxsWWVhcigpLCBnZGF0ZS5nZXRNb250aCgpICsgMSwgZ2RhdGUuZ2V0RGF0ZSgpKTtcbiAgcmV0dXJuIGp1bGlhblRvSmFsYWxpKGcyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRKYWxhbGlZZWFyKGRhdGU6IE5nYkRhdGUsIHllYXJWYWx1ZTogbnVtYmVyKTogTmdiRGF0ZSB7XG4gIGRhdGUueWVhciA9ICt5ZWFyVmFsdWU7XG4gIHJldHVybiBkYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0SmFsYWxpTW9udGgoZGF0ZTogTmdiRGF0ZSwgbW9udGg6IG51bWJlcik6IE5nYkRhdGUge1xuICBtb250aCA9ICttb250aDtcbiAgZGF0ZS55ZWFyID0gZGF0ZS55ZWFyICsgTWF0aC5mbG9vcigobW9udGggLSAxKSAvIDEyKTtcbiAgZGF0ZS5tb250aCA9IE1hdGguZmxvb3IoKChtb250aCAtIDEpICUgMTIgKyAxMikgJSAxMikgKyAxO1xuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEphbGFsaURheShkYXRlOiBOZ2JEYXRlLCBkYXk6IG51bWJlcik6IE5nYkRhdGUge1xuICBsZXQgbURheXMgPSBnZXREYXlzUGVyTW9udGgoZGF0ZS5tb250aCwgZGF0ZS55ZWFyKTtcbiAgaWYgKGRheSA8PSAwKSB7XG4gICAgd2hpbGUgKGRheSA8PSAwKSB7XG4gICAgICBkYXRlID0gc2V0SmFsYWxpTW9udGgoZGF0ZSwgZGF0ZS5tb250aCAtIDEpO1xuICAgICAgbURheXMgPSBnZXREYXlzUGVyTW9udGgoZGF0ZS5tb250aCwgZGF0ZS55ZWFyKTtcbiAgICAgIGRheSArPSBtRGF5cztcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGF5ID4gbURheXMpIHtcbiAgICB3aGlsZSAoZGF5ID4gbURheXMpIHtcbiAgICAgIGRheSAtPSBtRGF5cztcbiAgICAgIGRhdGUgPSBzZXRKYWxhbGlNb250aChkYXRlLCBkYXRlLm1vbnRoICsgMSk7XG4gICAgICBtRGF5cyA9IGdldERheXNQZXJNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgIH1cbiAgfVxuICBkYXRlLmRheSA9IGRheTtcbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIG1vZChhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhIC0gYiAqIE1hdGguZmxvb3IoYSAvIGIpO1xufVxuXG5mdW5jdGlvbiBkaXYoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoYSAvIGIpO1xufVxuXG4vKlxuIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiB0aGUgSmFsYWxpIChQZXJzaWFuKSB5ZWFyIGlzXG4gbGVhcCAoMzY2LWRheSBsb25nKSBvciBpcyB0aGUgY29tbW9uIHllYXIgKDM2NSBkYXlzKSwgYW5kXG4gZmluZHMgdGhlIGRheSBpbiBNYXJjaCAoR3JlZ29yaWFuIGNhbGVuZGFyKSBvZiB0aGUgZmlyc3RcbiBkYXkgb2YgdGhlIEphbGFsaSB5ZWFyIChqYWxhbGlZZWFyKS5cbiBAcGFyYW0gamFsYWxpWWVhciBKYWxhbGkgY2FsZW5kYXIgeWVhciAoLTYxIHRvIDMxNzcpXG4gQHJldHVyblxuIGxlYXA6IG51bWJlciBvZiB5ZWFycyBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIgKDAgdG8gNClcbiBnWWVhcjogR3JlZ29yaWFuIHllYXIgb2YgdGhlIGJlZ2lubmluZyBvZiBKYWxhbGkgeWVhclxuIG1hcmNoOiB0aGUgTWFyY2ggZGF5IG9mIEZhcnZhcmRpbiB0aGUgMXN0ICgxc3QgZGF5IG9mIGphbGFsaVllYXIpXG4gQHNlZTogaHR0cDovL3d3dy5hc3Ryby51bmkudG9ydW4ucGwvfmtiL1BhcGVycy9FTVAvUGVyc2lhbkMtRU1QLmh0bVxuIEBzZWU6IGh0dHA6Ly93d3cuZm91cm1pbGFiLmNoL2RvY3VtZW50cy9jYWxlbmRhci9cbiAqL1xuZnVuY3Rpb24gamFsQ2FsKGphbGFsaVllYXI6IG51bWJlcikge1xuICAvLyBKYWxhbGkgeWVhcnMgc3RhcnRpbmcgdGhlIDMzLXllYXIgcnVsZS5cbiAgbGV0IGJyZWFrcyA9XG4gICAgICBbLTYxLCA5LCAzOCwgMTk5LCA0MjYsIDY4NiwgNzU2LCA4MTgsIDExMTEsIDExODEsIDEyMTAsIDE2MzUsIDIwNjAsIDIwOTcsIDIxOTIsIDIyNjIsIDIzMjQsIDIzOTQsIDI0NTYsIDMxNzhdO1xuICBjb25zdCBicmVha3NMZW5ndGggPSBicmVha3MubGVuZ3RoO1xuICBjb25zdCBnWWVhciA9IGphbGFsaVllYXIgKyA2MjE7XG4gIGxldCBsZWFwSiA9IC0xNDtcbiAgbGV0IGpwID0gYnJlYWtzWzBdO1xuXG4gIGlmIChqYWxhbGlZZWFyIDwganAgfHwgamFsYWxpWWVhciA+PSBicmVha3NbYnJlYWtzTGVuZ3RoIC0gMV0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSmFsYWxpIHllYXIgJyArIGphbGFsaVllYXIpO1xuICB9XG5cbiAgLy8gRmluZCB0aGUgbGltaXRpbmcgeWVhcnMgZm9yIHRoZSBKYWxhbGkgeWVhciBqYWxhbGlZZWFyLlxuICBsZXQganVtcDtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBicmVha3NMZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IGptID0gYnJlYWtzW2ldO1xuICAgIGp1bXAgPSBqbSAtIGpwO1xuICAgIGlmIChqYWxhbGlZZWFyIDwgam0pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZWFwSiA9IGxlYXBKICsgZGl2KGp1bXAsIDMzKSAqIDggKyBkaXYobW9kKGp1bXAsIDMzKSwgNCk7XG4gICAganAgPSBqbTtcbiAgfVxuICBsZXQgbiA9IGphbGFsaVllYXIgLSBqcDtcblxuICAvLyBGaW5kIHRoZSBudW1iZXIgb2YgbGVhcCB5ZWFycyBmcm9tIEFEIDYyMSB0byB0aGUgYmVnaW5uaW5nXG4gIC8vIG9mIHRoZSBjdXJyZW50IEphbGFsaSB5ZWFyIGluIHRoZSBQZXJzaWFuIGNhbGVuZGFyLlxuICBsZWFwSiA9IGxlYXBKICsgZGl2KG4sIDMzKSAqIDggKyBkaXYobW9kKG4sIDMzKSArIDMsIDQpO1xuICBpZiAobW9kKGp1bXAsIDMzKSA9PT0gNCAmJiBqdW1wIC0gbiA9PT0gNCkge1xuICAgIGxlYXBKICs9IDE7XG4gIH1cblxuICAvLyBBbmQgdGhlIHNhbWUgaW4gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciAodW50aWwgdGhlIHllYXIgZ1llYXIpLlxuICBjb25zdCBsZWFwRyA9IGRpdihnWWVhciwgNCkgLSBkaXYoKGRpdihnWWVhciwgMTAwKSArIDEpICogMywgNCkgLSAxNTA7XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBHcmVnb3JpYW4gZGF0ZSBvZiBGYXJ2YXJkaW4gdGhlIDFzdC5cbiAgY29uc3QgbWFyY2ggPSAyMCArIGxlYXBKIC0gbGVhcEc7XG5cbiAgLy8gRmluZCBob3cgbWFueSB5ZWFycyBoYXZlIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIuXG4gIGlmIChqdW1wIC0gbiA8IDYpIHtcbiAgICBuID0gbiAtIGp1bXAgKyBkaXYoanVtcCArIDQsIDMzKSAqIDMzO1xuICB9XG4gIGxldCBsZWFwID0gbW9kKG1vZChuICsgMSwgMzMpIC0gMSwgNCk7XG4gIGlmIChsZWFwID09PSAtMSkge1xuICAgIGxlYXAgPSA0O1xuICB9XG5cbiAgcmV0dXJuIHtsZWFwOiBsZWFwLCBneTogZ1llYXIsIG1hcmNoOiBtYXJjaH07XG59XG5cbi8qXG4gQ2FsY3VsYXRlcyBHcmVnb3JpYW4gYW5kIEp1bGlhbiBjYWxlbmRhciBkYXRlcyBmcm9tIHRoZSBKdWxpYW4gRGF5IG51bWJlclxuIChqZG4pIGZvciB0aGUgcGVyaW9kIHNpbmNlIGpkbj0tMzQ4Mzk2NTUgKGkuZS4gdGhlIHllYXIgLTEwMDEwMCBvZiBib3RoXG4gY2FsZW5kYXJzKSB0byBzb21lIG1pbGxpb25zIHllYXJzIGFoZWFkIG9mIHRoZSBwcmVzZW50LlxuIEBwYXJhbSBqZG4gSnVsaWFuIERheSBudW1iZXJcbiBAcmV0dXJuXG4gZ1llYXI6IENhbGVuZGFyIHllYXIgKHllYXJzIEJDIG51bWJlcmVkIDAsIC0xLCAtMiwgLi4uKVxuIGdNb250aDogQ2FsZW5kYXIgbW9udGggKDEgdG8gMTIpXG4gZ0RheTogQ2FsZW5kYXIgZGF5IG9mIHRoZSBtb250aCBNICgxIHRvIDI4LzI5LzMwLzMxKVxuICovXG5mdW5jdGlvbiBqdWxpYW5Ub0dyZWdvcmlhbihqdWxpYW5EYXlOdW1iZXI6IG51bWJlcikge1xuICBsZXQgaiA9IDQgKiBqdWxpYW5EYXlOdW1iZXIgKyAxMzkzNjE2MzE7XG4gIGogPSBqICsgZGl2KGRpdig0ICoganVsaWFuRGF5TnVtYmVyICsgMTgzMTg3NzIwLCAxNDYwOTcpICogMywgNCkgKiA0IC0gMzkwODtcbiAgY29uc3QgaSA9IGRpdihtb2QoaiwgMTQ2MSksIDQpICogNSArIDMwODtcbiAgY29uc3QgZ0RheSA9IGRpdihtb2QoaSwgMTUzKSwgNSkgKyAxO1xuICBjb25zdCBnTW9udGggPSBtb2QoZGl2KGksIDE1MyksIDEyKSArIDE7XG4gIGNvbnN0IGdZZWFyID0gZGl2KGosIDE0NjEpIC0gMTAwMTAwICsgZGl2KDggLSBnTW9udGgsIDYpO1xuXG4gIHJldHVybiBuZXcgRGF0ZShnWWVhciwgZ01vbnRoIC0gMSwgZ0RheSk7XG59XG5cbi8qXG4gQ29udmVydHMgYSBkYXRlIG9mIHRoZSBKYWxhbGkgY2FsZW5kYXIgdG8gdGhlIEp1bGlhbiBEYXkgbnVtYmVyLlxuIEBwYXJhbSBqeSBKYWxhbGkgeWVhciAoMSB0byAzMTAwKVxuIEBwYXJhbSBqbSBKYWxhbGkgbW9udGggKDEgdG8gMTIpXG4gQHBhcmFtIGpkIEphbGFsaSBkYXkgKDEgdG8gMjkvMzEpXG4gQHJldHVybiBKdWxpYW4gRGF5IG51bWJlclxuICovXG5mdW5jdGlvbiBncmVnb3JpYW5Ub0p1bGlhbihneTogbnVtYmVyLCBnbTogbnVtYmVyLCBnZDogbnVtYmVyKSB7XG4gIGxldCBkID0gZGl2KChneSArIGRpdihnbSAtIDgsIDYpICsgMTAwMTAwKSAqIDE0NjEsIDQpICsgZGl2KDE1MyAqIG1vZChnbSArIDksIDEyKSArIDIsIDUpICsgZ2QgLSAzNDg0MDQwODtcbiAgZCA9IGQgLSBkaXYoZGl2KGd5ICsgMTAwMTAwICsgZGl2KGdtIC0gOCwgNiksIDEwMCkgKiAzLCA0KSArIDc1MjtcbiAgcmV0dXJuIGQ7XG59XG5cbi8qXG4gQ29udmVydHMgdGhlIEp1bGlhbiBEYXkgbnVtYmVyIHRvIGEgZGF0ZSBpbiB0aGUgSmFsYWxpIGNhbGVuZGFyLlxuIEBwYXJhbSBqdWxpYW5EYXlOdW1iZXIgSnVsaWFuIERheSBudW1iZXJcbiBAcmV0dXJuXG4gamFsYWxpWWVhcjogSmFsYWxpIHllYXIgKDEgdG8gMzEwMClcbiBqYWxhbGlNb250aDogSmFsYWxpIG1vbnRoICgxIHRvIDEyKVxuIGphbGFsaURheTogSmFsYWxpIGRheSAoMSB0byAyOS8zMSlcbiAqL1xuZnVuY3Rpb24ganVsaWFuVG9KYWxhbGkoanVsaWFuRGF5TnVtYmVyOiBudW1iZXIpIHtcbiAgbGV0IGd5ID0ganVsaWFuVG9HcmVnb3JpYW4oanVsaWFuRGF5TnVtYmVyKS5nZXRGdWxsWWVhcigpICAvLyBDYWxjdWxhdGUgR3JlZ29yaWFuIHllYXIgKGd5KS5cbiAgICAgICxcbiAgICAgIGphbGFsaVllYXIgPSBneSAtIDYyMSwgciA9IGphbENhbChqYWxhbGlZZWFyKSwgZ3JlZ29yaWFuRGF5ID0gZ3JlZ29yaWFuVG9KdWxpYW4oZ3ksIDMsIHIubWFyY2gpLCBqYWxhbGlEYXksXG4gICAgICBqYWxhbGlNb250aCwgbnVtYmVyT2ZEYXlzO1xuXG4gIC8vIEZpbmQgbnVtYmVyIG9mIGRheXMgdGhhdCBwYXNzZWQgc2luY2UgMSBGYXJ2YXJkaW4uXG4gIG51bWJlck9mRGF5cyA9IGp1bGlhbkRheU51bWJlciAtIGdyZWdvcmlhbkRheTtcbiAgaWYgKG51bWJlck9mRGF5cyA+PSAwKSB7XG4gICAgaWYgKG51bWJlck9mRGF5cyA8PSAxODUpIHtcbiAgICAgIC8vIFRoZSBmaXJzdCA2IG1vbnRocy5cbiAgICAgIGphbGFsaU1vbnRoID0gMSArIGRpdihudW1iZXJPZkRheXMsIDMxKTtcbiAgICAgIGphbGFsaURheSA9IG1vZChudW1iZXJPZkRheXMsIDMxKSArIDE7XG4gICAgICByZXR1cm4gbmV3IE5nYkRhdGUoamFsYWxpWWVhciwgamFsYWxpTW9udGgsIGphbGFsaURheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSByZW1haW5pbmcgbW9udGhzLlxuICAgICAgbnVtYmVyT2ZEYXlzIC09IDE4NjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gUHJldmlvdXMgSmFsYWxpIHllYXIuXG4gICAgamFsYWxpWWVhciAtPSAxO1xuICAgIG51bWJlck9mRGF5cyArPSAxNzk7XG4gICAgaWYgKHIubGVhcCA9PT0gMSkge1xuICAgICAgbnVtYmVyT2ZEYXlzICs9IDE7XG4gICAgfVxuICB9XG4gIGphbGFsaU1vbnRoID0gNyArIGRpdihudW1iZXJPZkRheXMsIDMwKTtcbiAgamFsYWxpRGF5ID0gbW9kKG51bWJlck9mRGF5cywgMzApICsgMTtcblxuICByZXR1cm4gbmV3IE5nYkRhdGUoamFsYWxpWWVhciwgamFsYWxpTW9udGgsIGphbGFsaURheSk7XG59XG5cbi8qXG4gQ29udmVydHMgYSBkYXRlIG9mIHRoZSBKYWxhbGkgY2FsZW5kYXIgdG8gdGhlIEp1bGlhbiBEYXkgbnVtYmVyLlxuIEBwYXJhbSBqWWVhciBKYWxhbGkgeWVhciAoMSB0byAzMTAwKVxuIEBwYXJhbSBqTW9udGggSmFsYWxpIG1vbnRoICgxIHRvIDEyKVxuIEBwYXJhbSBqRGF5IEphbGFsaSBkYXkgKDEgdG8gMjkvMzEpXG4gQHJldHVybiBKdWxpYW4gRGF5IG51bWJlclxuICovXG5mdW5jdGlvbiBqYWxhbGlUb0p1bGlhbihqWWVhcjogbnVtYmVyLCBqTW9udGg6IG51bWJlciwgakRheTogbnVtYmVyKSB7XG4gIGxldCByID0gamFsQ2FsKGpZZWFyKTtcbiAgcmV0dXJuIGdyZWdvcmlhblRvSnVsaWFuKHIuZ3ksIDMsIHIubWFyY2gpICsgKGpNb250aCAtIDEpICogMzEgLSBkaXYoak1vbnRoLCA3KSAqIChqTW9udGggLSA3KSArIGpEYXkgLSAxO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgc3BlY2lmaWMgamFsYWxpIG1vbnRoLlxuICovXG5mdW5jdGlvbiBnZXREYXlzUGVyTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKG1vbnRoIDw9IDYpIHtcbiAgICByZXR1cm4gMzE7XG4gIH1cbiAgaWYgKG1vbnRoIDw9IDExKSB7XG4gICAgcmV0dXJuIDMwO1xuICB9XG4gIGlmIChqYWxDYWwoeWVhcikubGVhcCA9PT0gMCkge1xuICAgIHJldHVybiAzMDtcbiAgfVxuICByZXR1cm4gMjk7XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlfSBmcm9tICcuLi9uZ2ItZGF0ZSc7XG5pbXBvcnQge05nYkNhbGVuZGFyLCBOZ2JQZXJpb2R9IGZyb20gJy4uL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuaW1wb3J0IHtmcm9tR3JlZ29yaWFuLCBzZXRKYWxhbGlEYXksIHNldEphbGFsaU1vbnRoLCBzZXRKYWxhbGlZZWFyLCB0b0dyZWdvcmlhbn0gZnJvbSAnLi9qYWxhbGknO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiQ2FsZW5kYXJQZXJzaWFuIGV4dGVuZHMgTmdiQ2FsZW5kYXIge1xuICBnZXREYXlzUGVyV2VlaygpIHsgcmV0dXJuIDc7IH1cblxuICBnZXRNb250aHMoKSB7IHJldHVybiBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMl07IH1cblxuICBnZXRXZWVrc1Blck1vbnRoKCkgeyByZXR1cm4gNjsgfVxuXG4gIGdldE5leHQoZGF0ZTogTmdiRGF0ZSwgcGVyaW9kOiBOZ2JQZXJpb2QgPSAnZCcsIG51bWJlciA9IDEpIHtcbiAgICBkYXRlID0gbmV3IE5nYkRhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCBkYXRlLmRheSk7XG5cbiAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgY2FzZSAneSc6XG4gICAgICAgIGRhdGUgPSBzZXRKYWxhbGlZZWFyKGRhdGUsIGRhdGUueWVhciArIG51bWJlcik7XG4gICAgICAgIGRhdGUubW9udGggPSAxO1xuICAgICAgICBkYXRlLmRheSA9IDE7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgY2FzZSAnbSc6XG4gICAgICAgIGRhdGUgPSBzZXRKYWxhbGlNb250aChkYXRlLCBkYXRlLm1vbnRoICsgbnVtYmVyKTtcbiAgICAgICAgZGF0ZS5kYXkgPSAxO1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIGNhc2UgJ2QnOlxuICAgICAgICByZXR1cm4gc2V0SmFsYWxpRGF5KGRhdGUsIGRhdGUuZGF5ICsgbnVtYmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfVxuXG4gIGdldFByZXYoZGF0ZTogTmdiRGF0ZSwgcGVyaW9kOiBOZ2JQZXJpb2QgPSAnZCcsIG51bWJlciA9IDEpIHsgcmV0dXJuIHRoaXMuZ2V0TmV4dChkYXRlLCBwZXJpb2QsIC1udW1iZXIpOyB9XG5cbiAgZ2V0V2Vla2RheShkYXRlOiBOZ2JEYXRlKSB7XG4gICAgY29uc3QgZGF5ID0gdG9HcmVnb3JpYW4oZGF0ZSkuZ2V0RGF5KCk7XG4gICAgLy8gaW4gSlMgRGF0ZSBTdW49MCwgaW4gSVNPIDg2MDEgU3VuPTdcbiAgICByZXR1cm4gZGF5ID09PSAwID8gNyA6IGRheTtcbiAgfVxuXG4gIGdldFdlZWtOdW1iZXIod2VlazogTmdiRGF0ZVtdLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSB7XG4gICAgLy8gaW4gSlMgRGF0ZSBTdW49MCwgaW4gSVNPIDg2MDEgU3VuPTdcbiAgICBpZiAoZmlyc3REYXlPZldlZWsgPT09IDcpIHtcbiAgICAgIGZpcnN0RGF5T2ZXZWVrID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCB0aHVyc2RheUluZGV4ID0gKDQgKyA3IC0gZmlyc3REYXlPZldlZWspICUgNztcbiAgICBjb25zdCBkYXRlID0gd2Vla1t0aHVyc2RheUluZGV4XTtcblxuICAgIGNvbnN0IGpzRGF0ZSA9IHRvR3JlZ29yaWFuKGRhdGUpO1xuICAgIGpzRGF0ZS5zZXREYXRlKGpzRGF0ZS5nZXREYXRlKCkgKyA0IC0gKGpzRGF0ZS5nZXREYXkoKSB8fCA3KSk7ICAvLyBUaHVyc2RheVxuICAgIGNvbnN0IHRpbWUgPSBqc0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRvR3JlZ29yaWFuKG5ldyBOZ2JEYXRlKGRhdGUueWVhciwgMSwgMSkpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucm91bmQoKHRpbWUgLSBzdGFydERhdGUuZ2V0VGltZSgpKSAvIDg2NDAwMDAwKSAvIDcpICsgMTtcbiAgfVxuXG4gIGdldFRvZGF5KCk6IE5nYkRhdGUgeyByZXR1cm4gZnJvbUdyZWdvcmlhbihuZXcgRGF0ZSgpKTsgfVxuXG4gIGlzVmFsaWQoZGF0ZTogTmdiRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlICYmIGlzSW50ZWdlcihkYXRlLnllYXIpICYmIGlzSW50ZWdlcihkYXRlLm1vbnRoKSAmJiBpc0ludGVnZXIoZGF0ZS5kYXkpICYmXG4gICAgICAgICFpc05hTih0b0dyZWdvcmlhbihkYXRlKS5nZXRUaW1lKCkpO1xuICB9XG59XG4iLCJpbXBvcnQge05nYkRhdGV9IGZyb20gJy4uL25nYi1kYXRlJztcbmltcG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi4vbmdiLWRhdGUtc3RydWN0JztcblxuY29uc3QgUEFSVFNfUEVSX0hPVVIgPSAxMDgwO1xuY29uc3QgUEFSVFNfUEVSX0RBWSA9IDI0ICogUEFSVFNfUEVSX0hPVVI7XG5jb25zdCBQQVJUU19GUkFDVElPTkFMX01PTlRIID0gMTIgKiBQQVJUU19QRVJfSE9VUiArIDc5MztcbmNvbnN0IFBBUlRTX1BFUl9NT05USCA9IDI5ICogUEFSVFNfUEVSX0RBWSArIFBBUlRTX0ZSQUNUSU9OQUxfTU9OVEg7XG5jb25zdCBCQUhBUkFEID0gMTEgKiBQQVJUU19QRVJfSE9VUiArIDIwNDtcbmNvbnN0IEhFQlJFV19EQVlfT05fSkFOXzFfMTk3MCA9IDIwOTI1OTE7XG5jb25zdCBHUkVHT1JJQU5fRVBPQ0ggPSAxNzIxNDI1LjU7XG5cbmZ1bmN0aW9uIGlzR3JlZ29yaWFuTGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDA7XG59XG5cbmZ1bmN0aW9uIG51bWJlck9mRmlyc3REYXlJblllYXIoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IG1vbnRoc0JlZm9yZVllYXIgPSBNYXRoLmZsb29yKCgyMzUgKiB5ZWFyIC0gMjM0KSAvIDE5KTtcbiAgbGV0IGZyYWN0aW9uYWxNb250aHNCZWZvcmVZZWFyID0gbW9udGhzQmVmb3JlWWVhciAqIFBBUlRTX0ZSQUNUSU9OQUxfTU9OVEggKyBCQUhBUkFEO1xuICBsZXQgZGF5TnVtYmVyID0gbW9udGhzQmVmb3JlWWVhciAqIDI5ICsgTWF0aC5mbG9vcihmcmFjdGlvbmFsTW9udGhzQmVmb3JlWWVhciAvIFBBUlRTX1BFUl9EQVkpO1xuICBsZXQgdGltZU9mRGF5ID0gZnJhY3Rpb25hbE1vbnRoc0JlZm9yZVllYXIgJSBQQVJUU19QRVJfREFZO1xuXG4gIGxldCBkYXlPZldlZWsgPSBkYXlOdW1iZXIgJSA3OyAgLy8gMCA9PSBNb25kYXlcblxuICBpZiAoZGF5T2ZXZWVrID09PSAyIHx8IGRheU9mV2VlayA9PT0gNCB8fCBkYXlPZldlZWsgPT09IDYpIHtcbiAgICBkYXlOdW1iZXIrKztcbiAgICBkYXlPZldlZWsgPSBkYXlOdW1iZXIgJSA3O1xuICB9XG4gIGlmIChkYXlPZldlZWsgPT09IDEgJiYgdGltZU9mRGF5ID4gMTUgKiBQQVJUU19QRVJfSE9VUiArIDIwNCAmJiAhaXNIZWJyZXdMZWFwWWVhcih5ZWFyKSkge1xuICAgIGRheU51bWJlciArPSAyO1xuICB9IGVsc2UgaWYgKGRheU9mV2VlayA9PT0gMCAmJiB0aW1lT2ZEYXkgPiAyMSAqIFBBUlRTX1BFUl9IT1VSICsgNTg5ICYmIGlzSGVicmV3TGVhcFllYXIoeWVhciAtIDEpKSB7XG4gICAgZGF5TnVtYmVyKys7XG4gIH1cbiAgcmV0dXJuIGRheU51bWJlcjtcbn1cblxuZnVuY3Rpb24gZ2V0RGF5c0luR3JlZ29yaWFuTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGRheXMgPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG4gIGlmIChpc0dyZWdvcmlhbkxlYXBZZWFyKHllYXIpKSB7XG4gICAgZGF5c1sxXSsrO1xuICB9XG4gIHJldHVybiBkYXlzW21vbnRoIC0gMV07XG59XG5cbmZ1bmN0aW9uIGdldEhlYnJld01vbnRocyh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gaXNIZWJyZXdMZWFwWWVhcih5ZWFyKSA/IDEzIDogMTI7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBzcGVjaWZpYyBIZWJyZXcgeWVhci5cbiAqIGB5ZWFyYCBpcyBhbnkgSGVicmV3IHllYXIuXG4gKi9cbmZ1bmN0aW9uIGdldERheXNJbkhlYnJld1llYXIoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIG51bWJlck9mRmlyc3REYXlJblllYXIoeWVhciArIDEpIC0gbnVtYmVyT2ZGaXJzdERheUluWWVhcih5ZWFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGVicmV3TGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIGxldCBiID0gKHllYXIgKiAxMiArIDE3KSAlIDE5O1xuICByZXR1cm4gYiA+PSAoKGIgPCAwKSA/IC03IDogMTIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgc3BlY2lmaWMgSGVicmV3IG1vbnRoLlxuICogYG1vbnRoYCBpcyAxIGZvciBOaXNhbiwgMiBmb3IgSXlhciBldGMuIE5vdGU6IEhlYnJldyBsZWFwIHllYXIgY29udGFpbnMgMTMgbW9udGhzLlxuICogYHllYXJgIGlzIGFueSBIZWJyZXcgeWVhci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERheXNJbkhlYnJld01vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB5ZWFyTGVuZ3RoID0gbnVtYmVyT2ZGaXJzdERheUluWWVhcih5ZWFyICsgMSkgLSBudW1iZXJPZkZpcnN0RGF5SW5ZZWFyKHllYXIpO1xuICBsZXQgeWVhclR5cGUgPSAoeWVhckxlbmd0aCA8PSAzODAgPyB5ZWFyTGVuZ3RoIDogKHllYXJMZW5ndGggLSAzMCkpIC0gMzUzO1xuICBsZXQgbGVhcFllYXIgPSBpc0hlYnJld0xlYXBZZWFyKHllYXIpO1xuICBsZXQgZGF5c0luTW9udGggPSBsZWFwWWVhciA/IFszMCwgMjksIDI5LCAyOSwgMzAsIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOV0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFszMCwgMjksIDI5LCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOSwgMzAsIDI5XTtcbiAgaWYgKHllYXJUeXBlID4gMCkge1xuICAgIGRheXNJbk1vbnRoWzJdKys7ICAvLyBLaXNsZXYgZ2V0cyBhbiBleHRyYSBkYXkgaW4gbm9ybWFsIG9yIGNvbXBsZXRlIHllYXJzLlxuICB9XG4gIGlmICh5ZWFyVHlwZSA+IDEpIHtcbiAgICBkYXlzSW5Nb250aFsxXSsrOyAgLy8gSGVzaHZhbiBnZXRzIGFuIGV4dHJhIGRheSBpbiBjb21wbGV0ZSB5ZWFycyBvbmx5LlxuICB9XG4gIHJldHVybiBkYXlzSW5Nb250aFttb250aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF5TnVtYmVySW5IZWJyZXdZZWFyKGRhdGU6IE5nYkRhdGUpOiBudW1iZXIge1xuICBsZXQgbnVtYmVyT2ZEYXkgPSAwO1xuICBmb3IgKGxldCBpID0gMTsgaSA8IGRhdGUubW9udGg7IGkrKykge1xuICAgIG51bWJlck9mRGF5ICs9IGdldERheXNJbkhlYnJld01vbnRoKGksIGRhdGUueWVhcik7XG4gIH1cbiAgcmV0dXJuIG51bWJlck9mRGF5ICsgZGF0ZS5kYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRIZWJyZXdNb250aChkYXRlOiBOZ2JEYXRlLCB2YWw6IG51bWJlcik6IE5nYkRhdGUge1xuICBsZXQgYWZ0ZXIgPSB2YWwgPj0gMDtcbiAgaWYgKCFhZnRlcikge1xuICAgIHZhbCA9IC12YWw7XG4gIH1cbiAgd2hpbGUgKHZhbCA+IDApIHtcbiAgICBpZiAoYWZ0ZXIpIHtcbiAgICAgIGlmICh2YWwgPiBnZXRIZWJyZXdNb250aHMoZGF0ZS55ZWFyKSAtIGRhdGUubW9udGgpIHtcbiAgICAgICAgdmFsIC09IGdldEhlYnJld01vbnRocyhkYXRlLnllYXIpIC0gZGF0ZS5tb250aCArIDE7XG4gICAgICAgIGRhdGUueWVhcisrO1xuICAgICAgICBkYXRlLm1vbnRoID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUubW9udGggKz0gdmFsO1xuICAgICAgICB2YWwgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsID49IGRhdGUubW9udGgpIHtcbiAgICAgICAgZGF0ZS55ZWFyLS07XG4gICAgICAgIHZhbCAtPSBkYXRlLm1vbnRoO1xuICAgICAgICBkYXRlLm1vbnRoID0gZ2V0SGVicmV3TW9udGhzKGRhdGUueWVhcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlLm1vbnRoIC09IHZhbDtcbiAgICAgICAgdmFsID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRIZWJyZXdEYXkoZGF0ZTogTmdiRGF0ZSwgdmFsOiBudW1iZXIpOiBOZ2JEYXRlIHtcbiAgbGV0IGFmdGVyID0gdmFsID49IDA7XG4gIGlmICghYWZ0ZXIpIHtcbiAgICB2YWwgPSAtdmFsO1xuICB9XG4gIHdoaWxlICh2YWwgPiAwKSB7XG4gICAgaWYgKGFmdGVyKSB7XG4gICAgICBpZiAodmFsID4gZ2V0RGF5c0luSGVicmV3WWVhcihkYXRlLnllYXIpIC0gZ2V0RGF5TnVtYmVySW5IZWJyZXdZZWFyKGRhdGUpKSB7XG4gICAgICAgIHZhbCAtPSBnZXREYXlzSW5IZWJyZXdZZWFyKGRhdGUueWVhcikgLSBnZXREYXlOdW1iZXJJbkhlYnJld1llYXIoZGF0ZSkgKyAxO1xuICAgICAgICBkYXRlLnllYXIrKztcbiAgICAgICAgZGF0ZS5tb250aCA9IDE7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgIH0gZWxzZSBpZiAodmFsID4gZ2V0RGF5c0luSGVicmV3TW9udGgoZGF0ZS5tb250aCwgZGF0ZS55ZWFyKSAtIGRhdGUuZGF5KSB7XG4gICAgICAgIHZhbCAtPSBnZXREYXlzSW5IZWJyZXdNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpIC0gZGF0ZS5kYXkgKyAxO1xuICAgICAgICBkYXRlLm1vbnRoKys7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUuZGF5ICs9IHZhbDtcbiAgICAgICAgdmFsID0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHZhbCA+PSBkYXRlLmRheSkge1xuICAgICAgICB2YWwgLT0gZGF0ZS5kYXk7XG4gICAgICAgIGRhdGUubW9udGgtLTtcbiAgICAgICAgaWYgKGRhdGUubW9udGggPT09IDApIHtcbiAgICAgICAgICBkYXRlLnllYXItLTtcbiAgICAgICAgICBkYXRlLm1vbnRoID0gZ2V0SGVicmV3TW9udGhzKGRhdGUueWVhcik7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZS5kYXkgPSBnZXREYXlzSW5IZWJyZXdNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZS5kYXkgLT0gdmFsO1xuICAgICAgICB2YWwgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IEhlYnJldyBkYXRlIHZhbHVlIGZvciBhIGdpdmUgaW5wdXQgR3JlZ29yaWFuIGRhdGUuXG4gKiBgZ2RhdGVgIGlzIGEgSlMgRGF0ZSB0byBiZSBjb252ZXJ0ZWQgdG8gSGVicmV3IGRhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tR3JlZ29yaWFuKGdkYXRlOiBEYXRlKTogTmdiRGF0ZSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShnZGF0ZSk7XG4gIGNvbnN0IGdZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLCBnTW9udGggPSBkYXRlLmdldE1vbnRoKCksIGdEYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgbGV0IGp1bGlhbkRheSA9IEdSRUdPUklBTl9FUE9DSCAtIDEgKyAzNjUgKiAoZ1llYXIgLSAxKSArIE1hdGguZmxvb3IoKGdZZWFyIC0gMSkgLyA0KSAtXG4gICAgICBNYXRoLmZsb29yKChnWWVhciAtIDEpIC8gMTAwKSArIE1hdGguZmxvb3IoKGdZZWFyIC0gMSkgLyA0MDApICtcbiAgICAgIE1hdGguZmxvb3IoKDM2NyAqIChnTW9udGggKyAxKSAtIDM2MikgLyAxMiArIChnTW9udGggKyAxIDw9IDIgPyAwIDogaXNHcmVnb3JpYW5MZWFwWWVhcihnWWVhcikgPyAtMSA6IC0yKSArIGdEYXkpO1xuICBqdWxpYW5EYXkgPSBNYXRoLmZsb29yKGp1bGlhbkRheSArIDAuNSk7XG4gIGxldCBkYXlzU2luY2VIZWJFcG9jaCA9IGp1bGlhbkRheSAtIDM0Nzk5NztcbiAgbGV0IG1vbnRoc1NpbmNlSGViRXBvY2ggPSBNYXRoLmZsb29yKGRheXNTaW5jZUhlYkVwb2NoICogUEFSVFNfUEVSX0RBWSAvIFBBUlRTX1BFUl9NT05USCk7XG4gIGxldCBoWWVhciA9IE1hdGguZmxvb3IoKG1vbnRoc1NpbmNlSGViRXBvY2ggKiAxOSArIDIzNCkgLyAyMzUpICsgMTtcbiAgbGV0IGZpcnN0RGF5T2ZUaGlzWWVhciA9IG51bWJlck9mRmlyc3REYXlJblllYXIoaFllYXIpO1xuICBsZXQgZGF5T2ZZZWFyID0gZGF5c1NpbmNlSGViRXBvY2ggLSBmaXJzdERheU9mVGhpc1llYXI7XG4gIHdoaWxlIChkYXlPZlllYXIgPCAxKSB7XG4gICAgaFllYXItLTtcbiAgICBmaXJzdERheU9mVGhpc1llYXIgPSBudW1iZXJPZkZpcnN0RGF5SW5ZZWFyKGhZZWFyKTtcbiAgICBkYXlPZlllYXIgPSBkYXlzU2luY2VIZWJFcG9jaCAtIGZpcnN0RGF5T2ZUaGlzWWVhcjtcbiAgfVxuICBsZXQgaE1vbnRoID0gMTtcbiAgbGV0IGhEYXkgPSBkYXlPZlllYXI7XG4gIHdoaWxlIChoRGF5ID4gZ2V0RGF5c0luSGVicmV3TW9udGgoaE1vbnRoLCBoWWVhcikpIHtcbiAgICBoRGF5IC09IGdldERheXNJbkhlYnJld01vbnRoKGhNb250aCwgaFllYXIpO1xuICAgIGhNb250aCsrO1xuICB9XG4gIHJldHVybiBuZXcgTmdiRGF0ZShoWWVhciwgaE1vbnRoLCBoRGF5KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IEpTIGRhdGUgdmFsdWUgZm9yIGEgZ2l2ZW4gSGVicmV3IGRhdGUuXG4gKiBgaGVicmV3RGF0ZWAgaXMgYW4gSGVicmV3IGRhdGUgdG8gYmUgY29udmVydGVkIHRvIEdyZWdvcmlhbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvR3JlZ29yaWFuKGhlYnJld0RhdGU6IE5nYkRhdGVTdHJ1Y3QgfCBOZ2JEYXRlKTogRGF0ZSB7XG4gIGNvbnN0IGhZZWFyID0gaGVicmV3RGF0ZS55ZWFyO1xuICBjb25zdCBoTW9udGggPSBoZWJyZXdEYXRlLm1vbnRoO1xuICBjb25zdCBoRGF5ID0gaGVicmV3RGF0ZS5kYXk7XG4gIGxldCBkYXlzID0gbnVtYmVyT2ZGaXJzdERheUluWWVhcihoWWVhcik7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgaE1vbnRoOyBpKyspIHtcbiAgICBkYXlzICs9IGdldERheXNJbkhlYnJld01vbnRoKGksIGhZZWFyKTtcbiAgfVxuICBkYXlzICs9IGhEYXk7XG4gIGxldCBkaWZmRGF5cyA9IGRheXMgLSBIRUJSRVdfREFZX09OX0pBTl8xXzE5NzA7XG4gIGxldCBhZnRlciA9IGRpZmZEYXlzID49IDA7XG4gIGlmICghYWZ0ZXIpIHtcbiAgICBkaWZmRGF5cyA9IC1kaWZmRGF5cztcbiAgfVxuICBsZXQgZ1llYXIgPSAxOTcwO1xuICBsZXQgZ01vbnRoID0gMTtcbiAgbGV0IGdEYXkgPSAxO1xuICB3aGlsZSAoZGlmZkRheXMgPiAwKSB7XG4gICAgaWYgKGFmdGVyKSB7XG4gICAgICBpZiAoZGlmZkRheXMgPj0gKGlzR3JlZ29yaWFuTGVhcFllYXIoZ1llYXIpID8gMzY2IDogMzY1KSkge1xuICAgICAgICBkaWZmRGF5cyAtPSBpc0dyZWdvcmlhbkxlYXBZZWFyKGdZZWFyKSA/IDM2NiA6IDM2NTtcbiAgICAgICAgZ1llYXIrKztcbiAgICAgIH0gZWxzZSBpZiAoZGlmZkRheXMgPj0gZ2V0RGF5c0luR3JlZ29yaWFuTW9udGgoZ01vbnRoLCBnWWVhcikpIHtcbiAgICAgICAgZGlmZkRheXMgLT0gZ2V0RGF5c0luR3JlZ29yaWFuTW9udGgoZ01vbnRoLCBnWWVhcik7XG4gICAgICAgIGdNb250aCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ0RheSArPSBkaWZmRGF5cztcbiAgICAgICAgZGlmZkRheXMgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGlmZkRheXMgPj0gKGlzR3JlZ29yaWFuTGVhcFllYXIoZ1llYXIgLSAxKSA/IDM2NiA6IDM2NSkpIHtcbiAgICAgICAgZGlmZkRheXMgLT0gaXNHcmVnb3JpYW5MZWFwWWVhcihnWWVhciAtIDEpID8gMzY2IDogMzY1O1xuICAgICAgICBnWWVhci0tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGdNb250aCA+IDEpIHtcbiAgICAgICAgICBnTW9udGgtLTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnTW9udGggPSAxMjtcbiAgICAgICAgICBnWWVhci0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaWZmRGF5cyA+PSBnZXREYXlzSW5HcmVnb3JpYW5Nb250aChnTW9udGgsIGdZZWFyKSkge1xuICAgICAgICAgIGRpZmZEYXlzIC09IGdldERheXNJbkdyZWdvcmlhbk1vbnRoKGdNb250aCwgZ1llYXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdEYXkgPSBnZXREYXlzSW5HcmVnb3JpYW5Nb250aChnTW9udGgsIGdZZWFyKSAtIGRpZmZEYXlzICsgMTtcbiAgICAgICAgICBkaWZmRGF5cyA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKGdZZWFyLCBnTW9udGggLSAxLCBnRGF5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYnJld051bWVyYWxzKG51bWVyYWxzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoIW51bWVyYWxzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IGhBcnJheTBfOSA9IFsnJywgJ1xcdTA1ZDAnLCAnXFx1MDVkMScsICdcXHUwNWQyJywgJ1xcdTA1ZDMnLCAnXFx1MDVkNCcsICdcXHUwNWQ1JywgJ1xcdTA1ZDYnLCAnXFx1MDVkNycsICdcXHUwNWQ4J107XG4gIGNvbnN0IGhBcnJheTEwXzE5ID0gW1xuICAgICdcXHUwNWQ5JywgJ1xcdTA1ZDlcXHUwNWQwJywgJ1xcdTA1ZDlcXHUwNWQxJywgJ1xcdTA1ZDlcXHUwNWQyJywgJ1xcdTA1ZDlcXHUwNWQzJywgJ1xcdTA1ZDhcXHUwNWQ1JywgJ1xcdTA1ZDhcXHUwNWQ2JyxcbiAgICAnXFx1MDVkOVxcdTA1ZDYnLCAnXFx1MDVkOVxcdTA1ZDcnLCAnXFx1MDVkOVxcdTA1ZDgnXG4gIF07XG4gIGNvbnN0IGhBcnJheTIwXzkwID0gWycnLCAnJywgJ1xcdTA1ZGInLCAnXFx1MDVkYycsICdcXHUwNWRlJywgJ1xcdTA1ZTAnLCAnXFx1MDVlMScsICdcXHUwNWUyJywgJ1xcdTA1ZTQnLCAnXFx1MDVlNiddO1xuICBjb25zdCBoQXJyYXkxMDBfOTAwID0gW1xuICAgICcnLCAnXFx1MDVlNycsICdcXHUwNWU4JywgJ1xcdTA1ZTknLCAnXFx1MDVlYScsICdcXHUwNWVhXFx1MDVlNycsICdcXHUwNWVhXFx1MDVlOCcsICdcXHUwNWVhXFx1MDVlOScsICdcXHUwNWVhXFx1MDVlYScsXG4gICAgJ1xcdTA1ZWFcXHUwNWVhXFx1MDVlNydcbiAgXTtcbiAgY29uc3QgaEFycmF5MTAwMF85MDAwID0gW1xuICAgICcnLCAnXFx1MDVkMCcsICdcXHUwNWQxJywgJ1xcdTA1ZDFcXHUwNWQwJywgJ1xcdTA1ZDFcXHUwNWQxJywgJ1xcdTA1ZDQnLCAnXFx1MDVkNFxcdTA1ZDAnLCAnXFx1MDVkNFxcdTA1ZDEnLFxuICAgICdcXHUwNWQ0XFx1MDVkMVxcdTA1ZDAnLCAnXFx1MDVkNFxcdTA1ZDFcXHUwNWQxJ1xuICBdO1xuICBjb25zdCBnZXJlc2ggPSAnXFx1MDVmMycsIGdlcnNoYWltID0gJ1xcdTA1ZjQnO1xuICBsZXQgbWVtID0gMDtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuICBsZXQgc3RlcCA9IDA7XG4gIHdoaWxlIChudW1lcmFscyA+IDApIHtcbiAgICBsZXQgbSA9IG51bWVyYWxzICUgMTA7XG4gICAgaWYgKHN0ZXAgPT09IDApIHtcbiAgICAgIG1lbSA9IG07XG4gICAgfSBlbHNlIGlmIChzdGVwID09PSAxKSB7XG4gICAgICBpZiAobSAhPT0gMSkge1xuICAgICAgICByZXN1bHQudW5zaGlmdChoQXJyYXkyMF85MFttXSwgaEFycmF5MF85W21lbV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnVuc2hpZnQoaEFycmF5MTBfMTlbbWVtXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGVwID09PSAyKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChoQXJyYXkxMDBfOTAwW21dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG0gIT09IDUpIHtcbiAgICAgICAgcmVzdWx0LnVuc2hpZnQoaEFycmF5MTAwMF85MDAwW21dLCBnZXJlc2gsICcgJyk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgbnVtZXJhbHMgPSBNYXRoLmZsb29yKG51bWVyYWxzIC8gMTApO1xuICAgIGlmIChzdGVwID09PSAwICYmIG51bWVyYWxzID09PSAwKSB7XG4gICAgICByZXN1bHQudW5zaGlmdChoQXJyYXkwXzlbbV0pO1xuICAgIH1cbiAgICBzdGVwKys7XG4gIH1cbiAgcmVzdWx0ID0gcmVzdWx0LmpvaW4oJycpLnNwbGl0KCcnKTtcbiAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICByZXN1bHQucHVzaChnZXJlc2gpO1xuICB9IGVsc2UgaWYgKHJlc3VsdC5sZW5ndGggPiAxKSB7XG4gICAgcmVzdWx0LnNwbGljZShyZXN1bHQubGVuZ3RoIC0gMSwgMCwgZ2Vyc2hhaW0pO1xuICB9XG4gIHJldHVybiByZXN1bHQuam9pbignJyk7XG59XG4iLCJpbXBvcnQge05nYkRhdGV9IGZyb20gJy4uL25nYi1kYXRlJztcbmltcG9ydCB7ZnJvbUpTRGF0ZSwgTmdiQ2FsZW5kYXIsIE5nYlBlcmlvZCwgdG9KU0RhdGV9IGZyb20gJy4uL25nYi1jYWxlbmRhcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc051bWJlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7XG4gIGZyb21HcmVnb3JpYW4sXG4gIGdldERheU51bWJlckluSGVicmV3WWVhcixcbiAgZ2V0RGF5c0luSGVicmV3TW9udGgsXG4gIGlzSGVicmV3TGVhcFllYXIsXG4gIHRvR3JlZ29yaWFuLFxuICBzZXRIZWJyZXdEYXksXG4gIHNldEhlYnJld01vbnRoXG59IGZyb20gJy4vaGVicmV3JztcblxuLyoqXG4gKiBAc2luY2UgMy4yLjBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkNhbGVuZGFySGVicmV3IGV4dGVuZHMgTmdiQ2FsZW5kYXIge1xuICBnZXREYXlzUGVyV2VlaygpIHsgcmV0dXJuIDc7IH1cblxuICBnZXRNb250aHMoeWVhcj86IG51bWJlcikge1xuICAgIGlmICh5ZWFyICYmIGlzSGVicmV3TGVhcFllYXIoeWVhcikpIHtcbiAgICAgIHJldHVybiBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTJdO1xuICAgIH1cbiAgfVxuXG4gIGdldFdlZWtzUGVyTW9udGgoKSB7IHJldHVybiA2OyB9XG5cbiAgaXNWYWxpZChkYXRlOiBOZ2JEYXRlKTogYm9vbGVhbiB7XG4gICAgbGV0IGIgPSBkYXRlICYmIGlzTnVtYmVyKGRhdGUueWVhcikgJiYgaXNOdW1iZXIoZGF0ZS5tb250aCkgJiYgaXNOdW1iZXIoZGF0ZS5kYXkpO1xuICAgIGIgPSBiICYmIGRhdGUubW9udGggPiAwICYmIGRhdGUubW9udGggPD0gKGlzSGVicmV3TGVhcFllYXIoZGF0ZS55ZWFyKSA/IDEzIDogMTIpO1xuICAgIGIgPSBiICYmIGRhdGUuZGF5ID4gMCAmJiBkYXRlLmRheSA8PSBnZXREYXlzSW5IZWJyZXdNb250aChkYXRlLm1vbnRoLCBkYXRlLnllYXIpO1xuICAgIHJldHVybiBiICYmICFpc05hTih0b0dyZWdvcmlhbihkYXRlKS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgZ2V0TmV4dChkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkge1xuICAgIGRhdGUgPSBuZXcgTmdiRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5KTtcblxuICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICBjYXNlICd5JzpcbiAgICAgICAgZGF0ZS55ZWFyICs9IG51bWJlcjtcbiAgICAgICAgZGF0ZS5tb250aCA9IDE7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICBjYXNlICdtJzpcbiAgICAgICAgZGF0ZSA9IHNldEhlYnJld01vbnRoKGRhdGUsIG51bWJlcik7XG4gICAgICAgIGRhdGUuZGF5ID0gMTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICBjYXNlICdkJzpcbiAgICAgICAgcmV0dXJuIHNldEhlYnJld0RheShkYXRlLCBudW1iZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJldihkYXRlOiBOZ2JEYXRlLCBwZXJpb2Q6IE5nYlBlcmlvZCA9ICdkJywgbnVtYmVyID0gMSkgeyByZXR1cm4gdGhpcy5nZXROZXh0KGRhdGUsIHBlcmlvZCwgLW51bWJlcik7IH1cblxuICBnZXRXZWVrZGF5KGRhdGU6IE5nYkRhdGUpIHtcbiAgICBjb25zdCBkYXkgPSB0b0dyZWdvcmlhbihkYXRlKS5nZXREYXkoKTtcbiAgICAvLyBpbiBKUyBEYXRlIFN1bj0wLCBpbiBJU08gODYwMSBTdW49N1xuICAgIHJldHVybiBkYXkgPT09IDAgPyA3IDogZGF5O1xuICB9XG5cbiAgZ2V0V2Vla051bWJlcih3ZWVrOiBOZ2JEYXRlW10sIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpIHtcbiAgICBjb25zdCBkYXRlID0gd2Vla1t3ZWVrLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBNYXRoLmNlaWwoZ2V0RGF5TnVtYmVySW5IZWJyZXdZZWFyKGRhdGUpIC8gNyk7XG4gIH1cblxuICBnZXRUb2RheSgpOiBOZ2JEYXRlIHsgcmV0dXJuIGZyb21HcmVnb3JpYW4obmV3IERhdGUoKSk7IH1cblxuICAvKipcbiAgICogQHNpbmNlIDMuNC4wXG4gICAqL1xuICB0b0dyZWdvcmlhbihkYXRlOiBOZ2JEYXRlKTogTmdiRGF0ZSB7IHJldHVybiBmcm9tSlNEYXRlKHRvR3JlZ29yaWFuKGRhdGUpKTsgfVxuXG4gIC8qKlxuICAgKiBAc2luY2UgMy40LjBcbiAgICovXG4gIGZyb21HcmVnb3JpYW4oZGF0ZTogTmdiRGF0ZSk6IE5nYkRhdGUgeyByZXR1cm4gZnJvbUdyZWdvcmlhbih0b0pTRGF0ZShkYXRlKSk7IH1cbn1cbiIsImltcG9ydCB7TmdiRGF0ZXBpY2tlckkxOG59IGZyb20gJy4uL2RhdGVwaWNrZXItaTE4bic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4uLy4uL2luZGV4JztcbmltcG9ydCB7aGVicmV3TnVtZXJhbHMsIGlzSGVicmV3TGVhcFllYXJ9IGZyb20gJy4vaGVicmV3JztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuY29uc3QgV0VFS0RBWVMgPSBbJ8OXwqnDl8Kgw5fCmScsICfDl8Kpw5fCnMOXwpnDl8Kpw5fCmScsICfDl8Kow5fCkcOXwpnDl8Kiw5fCmScsICfDl8KXw5fCnsOXwpnDl8Kpw5fCmScsICfDl8Kpw5fCmcOXwqnDl8KZJywgJ8OXwqnDl8KRw5fCqicsICfDl8Kow5fCkMOXwqnDl8KVw5fCnyddO1xuY29uc3QgTU9OVEhTID0gWyfDl8Kqw5fCqcOXwqjDl8KZJywgJ8OXwpfDl8Kpw5fClcOXwp8nLCAnw5fCm8OXwqHDl8Kcw5fClScsICfDl8KYw5fCkcOXwqonLCAnw5fCqcOXwpHDl8KYJywgJ8OXwpDDl8KTw5fCqCcsICfDl8Kgw5fCmcOXwqHDl8KfJywgJ8OXwpDDl8KZw5fCmcOXwqgnLCAnw5fCocOXwpnDl8KVw5fCnycsICfDl8Kqw5fCnsOXwpXDl8KWJywgJ8OXwpDDl8KRJywgJ8OXwpDDl8Kcw5fClcOXwpwnXTtcbmNvbnN0IE1PTlRIU19MRUFQID1cbiAgICBbJ8OXwqrDl8Kpw5fCqMOXwpknLCAnw5fCl8OXwqnDl8KVw5fCnycsICfDl8Kbw5fCocOXwpzDl8KVJywgJ8OXwpjDl8KRw5fCqicsICfDl8Kpw5fCkcOXwpgnLCAnw5fCkMOXwpPDl8KoIMOXwpDDl8KzJywgJ8OXwpDDl8KTw5fCqCDDl8KRw5fCsycsICfDl8Kgw5fCmcOXwqHDl8KfJywgJ8OXwpDDl8KZw5fCmcOXwqgnLCAnw5fCocOXwpnDl8KVw5fCnycsICfDl8Kqw5fCnsOXwpXDl8KWJywgJ8OXwpDDl8KRJywgJ8OXwpDDl8Kcw5fClcOXwpwnXTtcblxuLyoqXG4gKiBAc2luY2UgMy4yLjBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nYkRhdGVwaWNrZXJJMThuSGVicmV3IGV4dGVuZHMgTmdiRGF0ZXBpY2tlckkxOG4ge1xuICBnZXRNb250aFNob3J0TmFtZShtb250aDogbnVtYmVyLCB5ZWFyPzogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0TW9udGhGdWxsTmFtZShtb250aCwgeWVhcik7IH1cblxuICBnZXRNb250aEZ1bGxOYW1lKG1vbnRoOiBudW1iZXIsIHllYXI/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc0hlYnJld0xlYXBZZWFyKHllYXIpID8gTU9OVEhTX0xFQVBbbW9udGggLSAxXSA6IE1PTlRIU1ttb250aCAtIDFdO1xuICB9XG5cbiAgZ2V0V2Vla2RheVNob3J0TmFtZSh3ZWVrZGF5OiBudW1iZXIpOiBzdHJpbmcgeyByZXR1cm4gV0VFS0RBWVNbd2Vla2RheSAtIDFdOyB9XG5cbiAgZ2V0RGF5QXJpYUxhYmVsKGRhdGU6IE5nYkRhdGVTdHJ1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtoZWJyZXdOdW1lcmFscyhkYXRlLmRheSl9ICR7dGhpcy5nZXRNb250aEZ1bGxOYW1lKGRhdGUubW9udGgsIGRhdGUueWVhcil9ICR7aGVicmV3TnVtZXJhbHMoZGF0ZS55ZWFyKX1gO1xuICB9XG5cbiAgZ2V0RGF5TnVtZXJhbHMoZGF0ZTogTmdiRGF0ZVN0cnVjdCk6IHN0cmluZyB7IHJldHVybiBoZWJyZXdOdW1lcmFscyhkYXRlLmRheSk7IH1cblxuICBnZXRXZWVrTnVtZXJhbHMod2Vla051bWJlcjogbnVtYmVyKTogc3RyaW5nIHsgcmV0dXJuIGhlYnJld051bWVyYWxzKHdlZWtOdW1iZXIpOyB9XG5cbiAgZ2V0WWVhck51bWVyYWxzKHllYXI6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBoZWJyZXdOdW1lcmFscyh5ZWFyKTsgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdiRGF0ZUFkYXB0ZXJ9IGZyb20gJy4vbmdiLWRhdGUtYWRhcHRlcic7XG5pbXBvcnQge05nYkRhdGVTdHJ1Y3R9IGZyb20gJy4uL25nYi1kYXRlLXN0cnVjdCc7XG5pbXBvcnQge2lzSW50ZWdlcn0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcblxuLyoqXG4gKiBbYE5nYkRhdGVBZGFwdGVyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVBZGFwdGVyKSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXNcbiAqIG5hdGl2ZSBqYXZhc2NyaXB0IGRhdGVzIGFzIGEgdXNlciBkYXRlIG1vZGVsLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiRGF0ZU5hdGl2ZUFkYXB0ZXIgZXh0ZW5kcyBOZ2JEYXRlQWRhcHRlcjxEYXRlPiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIG5hdGl2ZSBgRGF0ZWAgdG8gYSBgTmdiRGF0ZVN0cnVjdGAuXG4gICAqL1xuICBmcm9tTW9kZWwoZGF0ZTogRGF0ZSk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgPyB0aGlzLl9mcm9tTmF0aXZlRGF0ZShkYXRlKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBgTmdiRGF0ZVN0cnVjdGAgdG8gYSBuYXRpdmUgYERhdGVgLlxuICAgKi9cbiAgdG9Nb2RlbChkYXRlOiBOZ2JEYXRlU3RydWN0KTogRGF0ZSB7XG4gICAgcmV0dXJuIGRhdGUgJiYgaXNJbnRlZ2VyKGRhdGUueWVhcikgJiYgaXNJbnRlZ2VyKGRhdGUubW9udGgpICYmIGlzSW50ZWdlcihkYXRlLmRheSkgPyB0aGlzLl90b05hdGl2ZURhdGUoZGF0ZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZnJvbU5hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiB7eWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aDogZGF0ZS5nZXRNb250aCgpICsgMSwgZGF5OiBkYXRlLmdldERhdGUoKX07XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RvTmF0aXZlRGF0ZShkYXRlOiBOZ2JEYXRlU3RydWN0KTogRGF0ZSB7XG4gICAgY29uc3QganNEYXRlID0gbmV3IERhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoIC0gMSwgZGF0ZS5kYXksIDEyKTtcbiAgICAvLyBhdm9pZCAzMCAtPiAxOTMwIGNvbnZlcnNpb25cbiAgICBqc0RhdGUuc2V0RnVsbFllYXIoZGF0ZS55ZWFyKTtcbiAgICByZXR1cm4ganNEYXRlO1xuICB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JEYXRlU3RydWN0fSBmcm9tICcuLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuaW1wb3J0IHtOZ2JEYXRlTmF0aXZlQWRhcHRlcn0gZnJvbSAnLi9uZ2ItZGF0ZS1uYXRpdmUtYWRhcHRlcic7XG5cbi8qKlxuICogU2FtZSBhcyBbYE5nYkRhdGVOYXRpdmVBZGFwdGVyYF0oIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVOYXRpdmVBZGFwdGVyKSwgYnV0IHdpdGggVVRDIGRhdGVzLlxuICpcbiAqIEBzaW5jZSAzLjIuMFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiRGF0ZU5hdGl2ZVVUQ0FkYXB0ZXIgZXh0ZW5kcyBOZ2JEYXRlTmF0aXZlQWRhcHRlciB7XG4gIHByb3RlY3RlZCBfZnJvbU5hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiB7eWVhcjogZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBtb250aDogZGF0ZS5nZXRVVENNb250aCgpICsgMSwgZGF5OiBkYXRlLmdldFVUQ0RhdGUoKX07XG4gIH1cblxuICBwcm90ZWN0ZWQgX3RvTmF0aXZlRGF0ZShkYXRlOiBOZ2JEYXRlU3RydWN0KTogRGF0ZSB7XG4gICAgY29uc3QganNEYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoIC0gMSwgZGF0ZS5kYXkpKTtcbiAgICAvLyBhdm9pZCAzMCAtPiAxOTMwIGNvbnZlcnNpb25cbiAgICBqc0RhdGUuc2V0VVRDRnVsbFllYXIoZGF0ZS55ZWFyKTtcbiAgICByZXR1cm4ganNEYXRlO1xuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyfSBmcm9tICcuL2RhdGVwaWNrZXInO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyTW9udGhWaWV3fSBmcm9tICcuL2RhdGVwaWNrZXItbW9udGgtdmlldyc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9ufSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbic7XG5pbXBvcnQge05nYklucHV0RGF0ZXBpY2tlcn0gZnJvbSAnLi9kYXRlcGlja2VyLWlucHV0JztcbmltcG9ydCB7TmdiRGF0ZXBpY2tlckRheVZpZXd9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdmlldyc7XG5pbXBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0fSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbi1zZWxlY3QnO1xuXG5leHBvcnQge05nYkRhdGVwaWNrZXIsIE5nYkRhdGVwaWNrZXJOYXZpZ2F0ZUV2ZW50fSBmcm9tICcuL2RhdGVwaWNrZXInO1xuZXhwb3J0IHtOZ2JJbnB1dERhdGVwaWNrZXJ9IGZyb20gJy4vZGF0ZXBpY2tlci1pbnB1dCc7XG5leHBvcnQge05nYkNhbGVuZGFyLCBOZ2JQZXJpb2QsIE5nYkNhbGVuZGFyR3JlZ29yaWFufSBmcm9tICcuL25nYi1jYWxlbmRhcic7XG5leHBvcnQge05nYkNhbGVuZGFySXNsYW1pY0NpdmlsfSBmcm9tICcuL2hpanJpL25nYi1jYWxlbmRhci1pc2xhbWljLWNpdmlsJztcbmV4cG9ydCB7TmdiQ2FsZW5kYXJJc2xhbWljVW1hbHF1cmF9IGZyb20gJy4vaGlqcmkvbmdiLWNhbGVuZGFyLWlzbGFtaWMtdW1hbHF1cmEnO1xuZXhwb3J0IHtOZ2JDYWxlbmRhclBlcnNpYW59IGZyb20gJy4vamFsYWxpL25nYi1jYWxlbmRhci1wZXJzaWFuJztcbmV4cG9ydCB7TmdiQ2FsZW5kYXJIZWJyZXd9IGZyb20gJy4vaGVicmV3L25nYi1jYWxlbmRhci1oZWJyZXcnO1xuZXhwb3J0IHtOZ2JEYXRlcGlja2VySTE4bkhlYnJld30gZnJvbSAnLi9oZWJyZXcvZGF0ZXBpY2tlci1pMThuLWhlYnJldyc7XG5leHBvcnQge05nYkRhdGVwaWNrZXJNb250aFZpZXd9IGZyb20gJy4vZGF0ZXBpY2tlci1tb250aC12aWV3JztcbmV4cG9ydCB7TmdiRGF0ZXBpY2tlckRheVZpZXd9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXktdmlldyc7XG5leHBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9ufSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbic7XG5leHBvcnQge05nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0fSBmcm9tICcuL2RhdGVwaWNrZXItbmF2aWdhdGlvbi1zZWxlY3QnO1xuZXhwb3J0IHtOZ2JEYXRlcGlja2VyQ29uZmlnfSBmcm9tICcuL2RhdGVwaWNrZXItY29uZmlnJztcbmV4cG9ydCB7TmdiRGF0ZXBpY2tlckkxOG59IGZyb20gJy4vZGF0ZXBpY2tlci1pMThuJztcbmV4cG9ydCB7TmdiRGF0ZVN0cnVjdH0gZnJvbSAnLi9uZ2ItZGF0ZS1zdHJ1Y3QnO1xuZXhwb3J0IHtOZ2JEYXRlfSBmcm9tICcuL25nYi1kYXRlJztcbmV4cG9ydCB7TmdiRGF0ZUFkYXB0ZXJ9IGZyb20gJy4vYWRhcHRlcnMvbmdiLWRhdGUtYWRhcHRlcic7XG5leHBvcnQge05nYkRhdGVOYXRpdmVBZGFwdGVyfSBmcm9tICcuL2FkYXB0ZXJzL25nYi1kYXRlLW5hdGl2ZS1hZGFwdGVyJztcbmV4cG9ydCB7TmdiRGF0ZU5hdGl2ZVVUQ0FkYXB0ZXJ9IGZyb20gJy4vYWRhcHRlcnMvbmdiLWRhdGUtbmF0aXZlLXV0Yy1hZGFwdGVyJztcbmV4cG9ydCB7TmdiRGF0ZVBhcnNlckZvcm1hdHRlcn0gZnJvbSAnLi9uZ2ItZGF0ZS1wYXJzZXItZm9ybWF0dGVyJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmdiRGF0ZXBpY2tlciwgTmdiRGF0ZXBpY2tlck1vbnRoVmlldywgTmdiRGF0ZXBpY2tlck5hdmlnYXRpb24sIE5nYkRhdGVwaWNrZXJOYXZpZ2F0aW9uU2VsZWN0LCBOZ2JEYXRlcGlja2VyRGF5VmlldyxcbiAgICBOZ2JJbnB1dERhdGVwaWNrZXJcbiAgXSxcbiAgZXhwb3J0czogW05nYkRhdGVwaWNrZXIsIE5nYklucHV0RGF0ZXBpY2tlcl0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgZW50cnlDb21wb25lbnRzOiBbTmdiRGF0ZXBpY2tlcl1cbn0pXG5leHBvcnQgY2xhc3MgTmdiRGF0ZXBpY2tlck1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JEYXRlcGlja2VyTW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhY2VtZW50QXJyYXl9IGZyb20gJy4uL3V0aWwvcG9zaXRpb25pbmcnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JEcm9wZG93bmBdKCMvY29tcG9uZW50cy9kcm9wZG93bi9hcGkjTmdiRHJvcGRvd24pIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZHJvcGRvd25zIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JEcm9wZG93bkNvbmZpZyB7XG4gIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdvdXRzaWRlJyB8ICdpbnNpZGUnID0gdHJ1ZTtcbiAgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSA9IFsnYm90dG9tLWxlZnQnLCAnYm90dG9tLXJpZ2h0JywgJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCddO1xuICBjb250YWluZXI6IG51bGwgfCAnYm9keSc7XG59XG4iLCJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPcHRpb25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7UGxhY2VtZW50LCBQbGFjZW1lbnRBcnJheSwgcG9zaXRpb25FbGVtZW50c30gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5pbXBvcnQge25nYkF1dG9DbG9zZX0gZnJvbSAnLi4vdXRpbC9hdXRvY2xvc2UnO1xuaW1wb3J0IHtLZXl9IGZyb20gJy4uL3V0aWwva2V5JztcblxuaW1wb3J0IHtOZ2JEcm9wZG93bkNvbmZpZ30gZnJvbSAnLi9kcm9wZG93bi1jb25maWcnO1xuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJy5uYXZiYXInfSlcbmV4cG9ydCBjbGFzcyBOZ2JOYXZiYXIge1xufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHlvdSBzaG91bGQgcHV0IHB1dCBvbiBhIGRyb3Bkb3duIGl0ZW0gdG8gZW5hYmxlIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKiBBcnJvdyBrZXlzIHdpbGwgbW92ZSBmb2N1cyBiZXR3ZWVuIGl0ZW1zIG1hcmtlZCB3aXRoIHRoaXMgZGlyZWN0aXZlLlxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ2JEcm9wZG93bkl0ZW1dJywgaG9zdDogeydjbGFzcyc6ICdkcm9wZG93bi1pdGVtJywgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnfX0pXG5leHBvcnQgY2xhc3MgTmdiRHJvcGRvd25JdGVtIHtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IDxhbnk+dmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSB0cnVlOyAgLy8gYWNjZXB0IGFuIGVtcHR5IGF0dHJpYnV0ZSBhcyB0cnVlXG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHdyYXBzIGRyb3Bkb3duIG1lbnUgY29udGVudCBhbmQgZHJvcGRvd24gaXRlbXMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2JEcm9wZG93bk1lbnVdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuZHJvcGRvd24tbWVudV0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5zaG93XSc6ICdkcm9wZG93bi5pc09wZW4oKScsXG4gICAgJ1thdHRyLngtcGxhY2VtZW50XSc6ICdwbGFjZW1lbnQnLFxuICAgICcoa2V5ZG93bi5BcnJvd1VwKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KScsXG4gICAgJyhrZXlkb3duLkFycm93RG93biknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknLFxuICAgICcoa2V5ZG93bi5Ib21lKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KScsXG4gICAgJyhrZXlkb3duLkVuZCknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknLFxuICAgICcoa2V5ZG93bi5FbnRlciknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknLFxuICAgICcoa2V5ZG93bi5TcGFjZSknOiAnZHJvcGRvd24ub25LZXlEb3duKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTmdiRHJvcGRvd25NZW51IHtcbiAgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JEcm9wZG93bkl0ZW0pIG1lbnVJdGVtczogUXVlcnlMaXN0PE5nYkRyb3Bkb3duSXRlbT47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYkRyb3Bkb3duKSkgcHVibGljIGRyb3Bkb3duOiBOZ2JEcm9wZG93bikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0byBtYXJrIGFuIGVsZW1lbnQgdG8gd2hpY2ggZHJvcGRvd24gbWVudSB3aWxsIGJlIGFuY2hvcmVkLlxuICpcbiAqIFRoaXMgaXMgYSBzaW1wbGUgdmVyc2lvbiBvZiB0aGUgYE5nYkRyb3Bkb3duVG9nZ2xlYCBkaXJlY3RpdmUuXG4gKiBJdCBwbGF5cyB0aGUgc2FtZSByb2xlLCBidXQgZG9lc24ndCBsaXN0ZW4gdG8gY2xpY2sgZXZlbnRzIHRvIHRvZ2dsZSBkcm9wZG93biBtZW51IHRodXMgZW5hYmxpbmcgc3VwcG9ydFxuICogZm9yIGV2ZW50cyBvdGhlciB0aGFuIGNsaWNrLlxuICpcbiAqIEBzaW5jZSAxLjEuMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdiRHJvcGRvd25BbmNob3JdJyxcbiAgaG9zdDogeydjbGFzcyc6ICdkcm9wZG93bi10b2dnbGUnLCAnYXJpYS1oYXNwb3B1cCc6ICd0cnVlJywgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2Ryb3Bkb3duLmlzT3BlbigpJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiRHJvcGRvd25BbmNob3Ige1xuICBhbmNob3JFbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBOZ2JEcm9wZG93bikpIHB1YmxpYyBkcm9wZG93bjogTmdiRHJvcGRvd24sXG4gICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMuYW5jaG9yRWwgPSBfZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgZ2V0TmF0aXZlRWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDsgfVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hcmsgYW4gZWxlbWVudCB0aGF0IHdpbGwgdG9nZ2xlIGRyb3Bkb3duIHZpYSB0aGUgYGNsaWNrYCBldmVudC5cbiAqXG4gKiBZb3UgY2FuIGFsc28gdXNlIGBOZ2JEcm9wZG93bkFuY2hvcmAgYXMgYW4gYWx0ZXJuYXRpdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2JEcm9wZG93blRvZ2dsZV0nLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2Ryb3Bkb3duLXRvZ2dsZScsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2Ryb3Bkb3duLmlzT3BlbigpJyxcbiAgICAnKGNsaWNrKSc6ICdkcm9wZG93bi50b2dnbGUoKScsXG4gICAgJyhrZXlkb3duLkFycm93VXApJzogJ2Ryb3Bkb3duLm9uS2V5RG93bigkZXZlbnQpJyxcbiAgICAnKGtleWRvd24uQXJyb3dEb3duKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KScsXG4gICAgJyhrZXlkb3duLkhvbWUpJzogJ2Ryb3Bkb3duLm9uS2V5RG93bigkZXZlbnQpJyxcbiAgICAnKGtleWRvd24uRW5kKSc6ICdkcm9wZG93bi5vbktleURvd24oJGV2ZW50KSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5nYkRyb3Bkb3duQW5jaG9yLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ2JEcm9wZG93blRvZ2dsZSl9XVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JEcm9wZG93blRvZ2dsZSBleHRlbmRzIE5nYkRyb3Bkb3duQW5jaG9yIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nYkRyb3Bkb3duKSkgZHJvcGRvd246IE5nYkRyb3Bkb3duLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHN1cGVyKGRyb3Bkb3duLCBlbGVtZW50UmVmKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgcHJvdmlkZXMgY29udGV4dHVhbCBvdmVybGF5cyBmb3IgZGlzcGxheWluZyBsaXN0cyBvZiBsaW5rcyBhbmQgbW9yZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdiRHJvcGRvd25dJywgZXhwb3J0QXM6ICduZ2JEcm9wZG93bicsIGhvc3Q6IHsnW2NsYXNzLnNob3ddJzogJ2lzT3BlbigpJ319KVxuZXhwb3J0IGNsYXNzIE5nYkRyb3Bkb3duIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jbG9zZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfem9uZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9ib2R5Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcblxuICBAQ29udGVudENoaWxkKE5nYkRyb3Bkb3duTWVudSkgcHJpdmF0ZSBfbWVudTogTmdiRHJvcGRvd25NZW51O1xuICBAQ29udGVudENoaWxkKE5nYkRyb3Bkb3duTWVudSwge3JlYWQ6IEVsZW1lbnRSZWZ9KSBwcml2YXRlIF9tZW51RWxlbWVudDogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkKE5nYkRyb3Bkb3duQW5jaG9yKSBwcml2YXRlIF9hbmNob3I6IE5nYkRyb3Bkb3duQW5jaG9yO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZHJvcGRvd24gc2hvdWxkIGJlIGNsb3NlZCB3aGVuIGNsaWNraW5nIG9uZSBvZiBkcm9wZG93biBpdGVtcyBvciBwcmVzc2luZyBFU0MuXG4gICAqXG4gICAqICogYHRydWVgIC0gdGhlIGRyb3Bkb3duIHdpbGwgY2xvc2Ugb24gYm90aCBvdXRzaWRlIGFuZCBpbnNpZGUgKG1lbnUpIGNsaWNrcy5cbiAgICogKiBgZmFsc2VgIC0gdGhlIGRyb3Bkb3duIGNhbiBvbmx5IGJlIGNsb3NlZCBtYW51YWxseSB2aWEgYGNsb3NlKClgIG9yIGB0b2dnbGUoKWAgbWV0aG9kcy5cbiAgICogKiBgXCJpbnNpZGVcImAgLSB0aGUgZHJvcGRvd24gd2lsbCBjbG9zZSBvbiBpbnNpZGUgbWVudSBjbGlja3MsIGJ1dCBub3Qgb3V0c2lkZSBjbGlja3MuXG4gICAqICogYFwib3V0c2lkZVwiYCAtIHRoZSBkcm9wZG93biB3aWxsIGNsb3NlIG9ubHkgb24gdGhlIG91dHNpZGUgY2xpY2tzIGFuZCBub3Qgb24gbWVudSBjbGlja3MuXG4gICAqL1xuICBASW5wdXQoKSBhdXRvQ2xvc2U6IGJvb2xlYW4gfCAnb3V0c2lkZScgfCAnaW5zaWRlJztcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgZHJvcGRvd24gbWVudSBpcyBvcGVuZWQgaW5pdGlhbGx5LlxuICAgKi9cbiAgQElucHV0KCdvcGVuJykgX29wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHByZWZlcnJlZCBwbGFjZW1lbnQgb2YgdGhlIGRyb3Bkb3duLlxuICAgKlxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBcInRvcFwiYCwgYFwidG9wLWxlZnRcImAsIGBcInRvcC1yaWdodFwiYCwgYFwiYm90dG9tXCJgLCBgXCJib3R0b20tbGVmdFwiYCxcbiAgICogYFwiYm90dG9tLXJpZ2h0XCJgLCBgXCJsZWZ0XCJgLCBgXCJsZWZ0LXRvcFwiYCwgYFwibGVmdC1ib3R0b21cImAsIGBcInJpZ2h0XCJgLCBgXCJyaWdodC10b3BcImAsXG4gICAqIGBcInJpZ2h0LWJvdHRvbVwiYFxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYSBzdHJpbmcgd2l0aCBzcGFjZSBzZXBhcmF0ZWQgcG9zc2libGUgdmFsdWVzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBvcmRlciBvZiBwcmVmZXJlbmNlIGlzIGBcImJvdHRvbS1sZWZ0IGJvdHRvbS1yaWdodCB0b3AtbGVmdCB0b3AtcmlnaHRcImBcbiAgICpcbiAgICogUGxlYXNlIHNlZSB0aGUgW3Bvc2l0aW9uaW5nIG92ZXJ2aWV3XSgjL3Bvc2l0aW9uaW5nKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheTtcblxuICAvKipcbiAgKiBBIHNlbGVjdG9yIHNwZWNpZnlpbmcgdGhlIGVsZW1lbnQgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBcImJvZHlcIi5cbiAgKlxuICAqIEBzaW5jZSA0LjEuMFxuICAqL1xuICBASW5wdXQoKSBjb250YWluZXI6IG51bGwgfCAnYm9keSc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBkeW5hbWljIHBvc2l0aW9uaW5nXG4gICAqXG4gICAqIEBzaW5jZSA0LjIuMFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheTogJ2R5bmFtaWMnIHwgJ3N0YXRpYyc7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGZpcmVkIHdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW5lZCBvciBjbG9zZWQuXG4gICAqXG4gICAqIFRoZSBldmVudCBwYXlsb2FkIGlzIGEgYGJvb2xlYW5gOlxuICAgKiAqIGB0cnVlYCAtIHRoZSBkcm9wZG93biB3YXMgb3BlbmVkXG4gICAqICogYGZhbHNlYCAtIHRoZSBkcm9wZG93biB3YXMgY2xvc2VkXG4gICAqL1xuICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgY29uZmlnOiBOZ2JEcm9wZG93bkNvbmZpZywgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgIEBPcHRpb25hbCgpIG5nYk5hdmJhcjogTmdiTmF2YmFyKSB7XG4gICAgdGhpcy5wbGFjZW1lbnQgPSBjb25maWcucGxhY2VtZW50O1xuICAgIHRoaXMuY29udGFpbmVyID0gY29uZmlnLmNvbnRhaW5lcjtcbiAgICB0aGlzLmF1dG9DbG9zZSA9IGNvbmZpZy5hdXRvQ2xvc2U7XG5cbiAgICB0aGlzLmRpc3BsYXkgPSBuZ2JOYXZiYXIgPyAnc3RhdGljJyA6ICdkeW5hbWljJztcblxuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24gPSBfbmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuX3Bvc2l0aW9uTWVudSgpOyB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2FwcGx5UGxhY2VtZW50Q2xhc3NlcygpO1xuICAgIGlmICh0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLl9zZXRDbG9zZUhhbmRsZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmNvbnRhaW5lciAmJiB0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLl9hcHBseUNvbnRhaW5lcih0aGlzLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucGxhY2VtZW50ICYmICFjaGFuZ2VzLnBsYWNlbWVudC5pc0ZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9hcHBseVBsYWNlbWVudENsYXNzZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkcm9wZG93biBtZW51IGlzIG9wZW4uXG4gICAqL1xuICBpc09wZW4oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9vcGVuOyB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBkcm9wZG93biBtZW51LlxuICAgKi9cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX29wZW4pIHtcbiAgICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5fYXBwbHlDb250YWluZXIodGhpcy5jb250YWluZXIpO1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICB0aGlzLl9zZXRDbG9zZUhhbmRsZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Q2xvc2VIYW5kbGVycygpIHtcbiAgICBuZ2JBdXRvQ2xvc2UoXG4gICAgICAgIHRoaXMuX25nWm9uZSwgdGhpcy5fZG9jdW1lbnQsIHRoaXMuYXV0b0Nsb3NlLCAoKSA9PiB0aGlzLmNsb3NlKCksIHRoaXMuX2Nsb3NlZCQsXG4gICAgICAgIHRoaXMuX21lbnUgPyBbdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudF0gOiBbXSwgdGhpcy5fYW5jaG9yID8gW3RoaXMuX2FuY2hvci5nZXROYXRpdmVFbGVtZW50KCldIDogW10sXG4gICAgICAgICcuZHJvcGRvd24taXRlbSwuZHJvcGRvd24tZGl2aWRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xuICAgICAgdGhpcy5fY2xvc2VkJC5uZXh0KCk7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xuXG4gICAgdGhpcy5fY2xvc2VkJC5uZXh0KCk7XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRlcHJlY2F0aW9uXG4gICAgY29uc3Qga2V5ID0gZXZlbnQud2hpY2g7XG4gICAgY29uc3QgaXRlbUVsZW1lbnRzID0gdGhpcy5fZ2V0TWVudUVsZW1lbnRzKCk7XG5cbiAgICBsZXQgcG9zaXRpb24gPSAtMTtcbiAgICBsZXQgaXNFdmVudEZyb21JdGVtcyA9IGZhbHNlO1xuICAgIGNvbnN0IGlzRXZlbnRGcm9tVG9nZ2xlID0gdGhpcy5faXNFdmVudEZyb21Ub2dnbGUoZXZlbnQpO1xuXG4gICAgaWYgKCFpc0V2ZW50RnJvbVRvZ2dsZSAmJiBpdGVtRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICBpdGVtRWxlbWVudHMuZm9yRWFjaCgoaXRlbUVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpdGVtRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgaXNFdmVudEZyb21JdGVtcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW1FbGVtZW50ID09PSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgcG9zaXRpb24gPSBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gY2xvc2luZyBvbiBFbnRlciAvIFNwYWNlXG4gICAgaWYgKGtleSA9PT0gS2V5LlNwYWNlIHx8IGtleSA9PT0gS2V5LkVudGVyKSB7XG4gICAgICBpZiAoaXNFdmVudEZyb21JdGVtcyAmJiAodGhpcy5hdXRvQ2xvc2UgPT09IHRydWUgfHwgdGhpcy5hdXRvQ2xvc2UgPT09ICdpbnNpZGUnKSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gb3BlbmluZyAvIG5hdmlnYXRpbmdcbiAgICBpZiAoaXNFdmVudEZyb21Ub2dnbGUgfHwgaXNFdmVudEZyb21JdGVtcykge1xuICAgICAgdGhpcy5vcGVuKCk7XG5cbiAgICAgIGlmIChpdGVtRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSBLZXkuQXJyb3dEb3duOlxuICAgICAgICAgICAgcG9zaXRpb24gPSBNYXRoLm1pbihwb3NpdGlvbiArIDEsIGl0ZW1FbGVtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgS2V5LkFycm93VXA6XG4gICAgICAgICAgICBpZiAodGhpcy5faXNEcm9wdXAoKSAmJiBwb3NpdGlvbiA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgcG9zaXRpb24gPSBpdGVtRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3NpdGlvbiA9IE1hdGgubWF4KHBvc2l0aW9uIC0gMSwgMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEtleS5Ib21lOlxuICAgICAgICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBLZXkuRW5kOlxuICAgICAgICAgICAgcG9zaXRpb24gPSBpdGVtRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1FbGVtZW50c1twb3NpdGlvbl0uZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNEcm9wdXAoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcm9wdXAnKTsgfVxuXG4gIHByaXZhdGUgX2lzRXZlbnRGcm9tVG9nZ2xlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuY2hvci5nZXROYXRpdmVFbGVtZW50KCkuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1lbnVFbGVtZW50cygpOiBIVE1MRWxlbWVudFtdIHtcbiAgICBpZiAodGhpcy5fbWVudSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9tZW51Lm1lbnVJdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCkubWFwKGl0ZW0gPT4gaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcG9zaXRpb25NZW51KCkge1xuICAgIGlmICh0aGlzLmlzT3BlbigpICYmIHRoaXMuX21lbnUpIHtcbiAgICAgIHRoaXMuX2FwcGx5UGxhY2VtZW50Q2xhc3NlcyhcbiAgICAgICAgICB0aGlzLmRpc3BsYXkgPT09ICdkeW5hbWljJyA/XG4gICAgICAgICAgICAgIHBvc2l0aW9uRWxlbWVudHMoXG4gICAgICAgICAgICAgICAgICB0aGlzLl9hbmNob3IuYW5jaG9yRWwsIHRoaXMuX2JvZHlDb250YWluZXIgfHwgdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5wbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9PT0gJ2JvZHknKSA6XG4gICAgICAgICAgICAgIHRoaXMuX2dldEZpcnN0UGxhY2VtZW50KHRoaXMucGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Rmlyc3RQbGFjZW1lbnQocGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSk6IFBsYWNlbWVudCB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGxhY2VtZW50KSA/IHBsYWNlbWVudFswXSA6IHBsYWNlbWVudC5zcGxpdCgnICcpWzBdIGFzIFBsYWNlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0Q29udGFpbmVyKCkge1xuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5fcmVuZGVyZXI7XG4gICAgaWYgKHRoaXMuX21lbnVFbGVtZW50KSB7XG4gICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZHJvcGRvd25FbGVtZW50LCBkcm9wZG93bk1lbnVFbGVtZW50KTtcbiAgICAgIHJlbmRlcmVyLnJlbW92ZVN0eWxlKGRyb3Bkb3duTWVudUVsZW1lbnQsICdwb3NpdGlvbicpO1xuICAgICAgcmVuZGVyZXIucmVtb3ZlU3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3RyYW5zZm9ybScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fYm9keUNvbnRhaW5lcikge1xuICAgICAgcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5fZG9jdW1lbnQuYm9keSwgdGhpcy5fYm9keUNvbnRhaW5lcik7XG4gICAgICB0aGlzLl9ib2R5Q29udGFpbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNvbnRhaW5lcihjb250YWluZXI6IG51bGwgfCAnYm9keScgPSBudWxsKSB7XG4gICAgdGhpcy5fcmVzZXRDb250YWluZXIoKTtcbiAgICBpZiAoY29udGFpbmVyID09PSAnYm9keScpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5fcmVuZGVyZXI7XG4gICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGJvZHlDb250YWluZXIgPSB0aGlzLl9ib2R5Q29udGFpbmVyID0gdGhpcy5fYm9keUNvbnRhaW5lciB8fCByZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgLy8gT3ZlcnJpZGUgc29tZSBzdHlsZXMgdG8gaGF2ZSB0aGUgcG9zaXRpb25uaW5nIHdvcmtpbmdcbiAgICAgIHJlbmRlcmVyLnNldFN0eWxlKGJvZHlDb250YWluZXIsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3N0YXRpYycpO1xuICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoYm9keUNvbnRhaW5lciwgJ3otaW5kZXgnLCAnMTA1MCcpO1xuXG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChib2R5Q29udGFpbmVyLCBkcm9wZG93bk1lbnVFbGVtZW50KTtcbiAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2RvY3VtZW50LmJvZHksIGJvZHlDb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5UGxhY2VtZW50Q2xhc3NlcyhwbGFjZW1lbnQ/OiBQbGFjZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fbWVudSkge1xuICAgICAgaWYgKCFwbGFjZW1lbnQpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gdGhpcy5fZ2V0Rmlyc3RQbGFjZW1lbnQodGhpcy5wbGFjZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMuX3JlbmRlcmVyO1xuICAgICAgY29uc3QgZHJvcGRvd25FbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAvLyByZW1vdmUgdGhlIGN1cnJlbnQgcGxhY2VtZW50IGNsYXNzZXNcbiAgICAgIHJlbmRlcmVyLnJlbW92ZUNsYXNzKGRyb3Bkb3duRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgcmVuZGVyZXIucmVtb3ZlQ2xhc3MoZHJvcGRvd25FbGVtZW50LCAnZHJvcGRvd24nKTtcbiAgICAgIHRoaXMuX21lbnUucGxhY2VtZW50ID0gcGxhY2VtZW50O1xuXG4gICAgICAvKlxuICAgICAgKiBhcHBseSB0aGUgbmV3IHBsYWNlbWVudFxuICAgICAgKiBpbiBjYXNlIG9mIHRvcCB1c2UgdXAtYXJyb3cgb3IgZG93bi1hcnJvdyBvdGhlcndpc2VcbiAgICAgICovXG4gICAgICBjb25zdCBkcm9wZG93bkNsYXNzID0gcGxhY2VtZW50LnNlYXJjaCgnXnRvcCcpICE9PSAtMSA/ICdkcm9wdXAnIDogJ2Ryb3Bkb3duJztcbiAgICAgIHJlbmRlcmVyLmFkZENsYXNzKGRyb3Bkb3duRWxlbWVudCwgZHJvcGRvd25DbGFzcyk7XG5cbiAgICAgIGNvbnN0IGJvZHlDb250YWluZXIgPSB0aGlzLl9ib2R5Q29udGFpbmVyO1xuICAgICAgaWYgKGJvZHlDb250YWluZXIpIHtcbiAgICAgICAgcmVuZGVyZXIucmVtb3ZlQ2xhc3MoYm9keUNvbnRhaW5lciwgJ2Ryb3B1cCcpO1xuICAgICAgICByZW5kZXJlci5yZW1vdmVDbGFzcyhib2R5Q29udGFpbmVyLCAnZHJvcGRvd24nKTtcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoYm9keUNvbnRhaW5lciwgZHJvcGRvd25DbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5nYkRyb3Bkb3duLFxuICBOZ2JEcm9wZG93bkFuY2hvcixcbiAgTmdiRHJvcGRvd25Ub2dnbGUsXG4gIE5nYkRyb3Bkb3duTWVudSxcbiAgTmdiRHJvcGRvd25JdGVtLFxuICBOZ2JOYXZiYXJcbn0gZnJvbSAnLi9kcm9wZG93bic7XG5cbmV4cG9ydCB7TmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duQW5jaG9yLCBOZ2JEcm9wZG93blRvZ2dsZSwgTmdiRHJvcGRvd25NZW51LCBOZ2JEcm9wZG93bkl0ZW19IGZyb20gJy4vZHJvcGRvd24nO1xuZXhwb3J0IHtOZ2JEcm9wZG93bkNvbmZpZ30gZnJvbSAnLi9kcm9wZG93bi1jb25maWcnO1xuXG5jb25zdCBOR0JfRFJPUERPV05fRElSRUNUSVZFUyA9XG4gICAgW05nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bkFuY2hvciwgTmdiRHJvcGRvd25Ub2dnbGUsIE5nYkRyb3Bkb3duTWVudSwgTmdiRHJvcGRvd25JdGVtLCBOZ2JOYXZiYXJdO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogTkdCX0RST1BET1dOX0RJUkVDVElWRVMsIGV4cG9ydHM6IE5HQl9EUk9QRE9XTl9ESVJFQ1RJVkVTfSlcbmV4cG9ydCBjbGFzcyBOZ2JEcm9wZG93bk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JEcm9wZG93bk1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIE9wdGlvbnMgYXZhaWxhYmxlIHdoZW4gb3BlbmluZyBuZXcgbW9kYWwgd2luZG93cyB3aXRoIGBOZ2JNb2RhbC5vcGVuKClgIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JNb2RhbE9wdGlvbnMge1xuICAvKipcbiAgICogYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHZhbHVlIHRvIHNldCBvbiB0aGUgbW9kYWwgd2luZG93LlxuICAgKlxuICAgKiBAc2luY2UgMi4yLjBcbiAgICovXG4gIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBiYWNrZHJvcCBlbGVtZW50IHdpbGwgYmUgY3JlYXRlZCBmb3IgYSBnaXZlbiBtb2RhbC5cbiAgICpcbiAgICogQWx0ZXJuYXRpdmVseSwgc3BlY2lmeSBgJ3N0YXRpYydgIGZvciBhIGJhY2tkcm9wIHdoaWNoIGRvZXNuJ3QgY2xvc2UgdGhlIG1vZGFsIG9uIGNsaWNrLlxuICAgKlxuICAgKiBEZWZhdWx0IHZhbHVlIGlzIGB0cnVlYC5cbiAgICovXG4gIGJhY2tkcm9wPzogYm9vbGVhbiB8ICdzdGF0aWMnO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayByaWdodCBiZWZvcmUgdGhlIG1vZGFsIHdpbGwgYmUgZGlzbWlzc2VkLlxuICAgKlxuICAgKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnM6XG4gICAqICogYGZhbHNlYFxuICAgKiAqIGEgcHJvbWlzZSByZXNvbHZlZCB3aXRoIGBmYWxzZWBcbiAgICogKiBhIHByb21pc2UgdGhhdCBpcyByZWplY3RlZFxuICAgKlxuICAgKiB0aGVuIHRoZSBtb2RhbCB3b24ndCBiZSBkaXNtaXNzZWQuXG4gICAqL1xuICBiZWZvcmVEaXNtaXNzPzogKCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1vZGFsIHdpbGwgYmUgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICpcbiAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgKlxuICAgKiBAc2luY2UgMS4xLjBcbiAgICovXG4gIGNlbnRlcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBzZWxlY3RvciBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IGFsbCBuZXcgbW9kYWwgd2luZG93cyBzaG91bGQgYmUgYXBwZW5kZWQgdG8uXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHdpbGwgYmUgYGJvZHlgLlxuICAgKi9cbiAgY29udGFpbmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYEluamVjdG9yYCB0byB1c2UgZm9yIG1vZGFsIGNvbnRlbnQuXG4gICAqL1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBtb2RhbCB3aWxsIGJlIGNsb3NlZCB3aGVuIGBFc2NhcGVgIGtleSBpcyBwcmVzc2VkXG4gICAqXG4gICAqIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxuICAgKi9cbiAga2V5Ym9hcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIGEgbmV3IG1vZGFsIHdpbmRvdy5cbiAgICovXG4gIHNpemU/OiAnc20nIHwgJ2xnJztcblxuICAvKipcbiAgICogQSBjdXN0b20gY2xhc3MgdG8gYXBwZW5kIHRvIHRoZSBtb2RhbCB3aW5kb3cuXG4gICAqL1xuICB3aW5kb3dDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBjdXN0b20gY2xhc3MgdG8gYXBwZW5kIHRvIHRoZSBtb2RhbCBiYWNrZHJvcC5cbiAgICpcbiAgICogQHNpbmNlIDEuMS4wXG4gICAqL1xuICBiYWNrZHJvcENsYXNzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JNb2RhbGBdKCMvY29tcG9uZW50cy9tb2RhbC9hcGkjTmdiTW9kYWwpIHNlcnZpY2UuXG4gKlxuICogWW91IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlLCB0eXBpY2FsbHkgaW4geW91ciByb290IGNvbXBvbmVudCwgYW5kIGN1c3RvbWl6ZSB0aGUgdmFsdWVzIG9mIGl0cyBwcm9wZXJ0aWVzIGluXG4gKiBvcmRlciB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgbW9kYWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuKlxuKiBAc2luY2UgMy4xLjBcbiovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbENvbmZpZyBpbXBsZW1lbnRzIE5nYk1vZGFsT3B0aW9ucyB7XG4gIGJhY2tkcm9wOiBib29sZWFuIHwgJ3N0YXRpYycgPSB0cnVlO1xuICBrZXlib2FyZCA9IHRydWU7XG59XG4iLCJpbXBvcnQge1xuICBJbmplY3RvcixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFJlbmRlcmVyMixcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEFwcGxpY2F0aW9uUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ29udGVudFJlZiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub2RlczogYW55W10sIHB1YmxpYyB2aWV3UmVmPzogVmlld1JlZiwgcHVibGljIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgUG9wdXBTZXJ2aWNlPFQ+IHtcbiAgcHJpdmF0ZSBfd2luZG93UmVmOiBDb21wb25lbnRSZWY8VD47XG4gIHByaXZhdGUgX2NvbnRlbnRSZWY6IENvbnRlbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF90eXBlOiBhbnksIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgcHJpdmF0ZSBfYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKSB7fVxuXG4gIG9wZW4oY29udGVudD86IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4sIGNvbnRleHQ/OiBhbnkpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGlmICghdGhpcy5fd2luZG93UmVmKSB7XG4gICAgICB0aGlzLl9jb250ZW50UmVmID0gdGhpcy5fZ2V0Q29udGVudFJlZihjb250ZW50LCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICAgIHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxUPih0aGlzLl90eXBlKSwgMCwgdGhpcy5faW5qZWN0b3IsXG4gICAgICAgICAgdGhpcy5fY29udGVudFJlZi5ub2Rlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1JlZjtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYucmVtb3ZlKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzLl93aW5kb3dSZWYuaG9zdFZpZXcpKTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZiA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYpIHtcbiAgICAgICAgdGhpcy5fYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyh0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYpO1xuICAgICAgICB0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9jb250ZW50UmVmID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb250ZW50UmVmKGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4sIGNvbnRleHQ/OiBhbnkpOiBDb250ZW50UmVmIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBuZXcgQ29udGVudFJlZihbXSk7XG4gICAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSBjb250ZW50LmNyZWF0ZUVtYmVkZGVkVmlldyhjb250ZXh0KTtcbiAgICAgIHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcodmlld1JlZik7XG4gICAgICByZXR1cm4gbmV3IENvbnRlbnRSZWYoW3ZpZXdSZWYucm9vdE5vZGVzXSwgdmlld1JlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQ29udGVudFJlZihbW3RoaXMuX3JlbmRlcmVyLmNyZWF0ZVRleHQoYCR7Y29udGVudH1gKV1dKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5cblxuLyoqIFR5cGUgZm9yIHRoZSBjYWxsYmFjayB1c2VkIHRvIHJldmVydCB0aGUgc2Nyb2xsYmFyIGNvbXBlbnNhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIENvbXBlbnNhdGlvblJldmVydGVyID0gKCkgPT4gdm9pZDtcblxuXG5cbi8qKlxuICogVXRpbGl0eSB0byBoYW5kbGUgdGhlIHNjcm9sbGJhci5cbiAqXG4gKiBJdCBhbGxvd3MgdG8gY29tcGVuc2F0ZSB0aGUgbGFjayBvZiBhIHZlcnRpY2FsIHNjcm9sbGJhciBieSBhZGRpbmcgYW5cbiAqIGVxdWl2YWxlbnQgcGFkZGluZyBvbiB0aGUgcmlnaHQgb2YgdGhlIGJvZHksIGFuZCB0byByZW1vdmUgdGhpcyBjb21wZW5zYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFNjcm9sbEJhciB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHt9XG5cbiAgLyoqXG4gICAqIERldGVjdHMgaWYgYSBzY3JvbGxiYXIgaXMgcHJlc2VudCBhbmQgaWYgeWVzLCBhbHJlYWR5IGNvbXBlbnNhdGVzIGZvciBpdHNcbiAgICogcmVtb3ZhbCBieSBhZGRpbmcgYW4gZXF1aXZhbGVudCBwYWRkaW5nIG9uIHRoZSByaWdodCBvZiB0aGUgYm9keS5cbiAgICpcbiAgICogQHJldHVybiBhIGNhbGxiYWNrIHVzZWQgdG8gcmV2ZXJ0IHRoZSBjb21wZW5zYXRpb24gKG5vb3AgaWYgdGhlcmUgd2FzIG5vbmUsXG4gICAqIG90aGVyd2lzZSBhIGZ1bmN0aW9uIHJlbW92aW5nIHRoZSBwYWRkaW5nKVxuICAgKi9cbiAgY29tcGVuc2F0ZSgpOiBDb21wZW5zYXRpb25SZXZlcnRlciB7IHJldHVybiAhdGhpcy5faXNQcmVzZW50KCkgPyBub29wIDogdGhpcy5fYWRqdXN0Qm9keSh0aGlzLl9nZXRXaWR0aCgpKTsgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcGFkZGluZyBvZiB0aGUgZ2l2ZW4gd2lkdGggb24gdGhlIHJpZ2h0IG9mIHRoZSBib2R5LlxuICAgKlxuICAgKiBAcmV0dXJuIGEgY2FsbGJhY2sgdXNlZCB0byByZXZlcnQgdGhlIHBhZGRpbmcgdG8gaXRzIHByZXZpb3VzIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIF9hZGp1c3RCb2R5KHdpZHRoOiBudW1iZXIpOiBDb21wZW5zYXRpb25SZXZlcnRlciB7XG4gICAgY29uc3QgYm9keSA9IHRoaXMuX2RvY3VtZW50LmJvZHk7XG4gICAgY29uc3QgdXNlclNldFBhZGRpbmcgPSBib2R5LnN0eWxlLnBhZGRpbmdSaWdodDtcbiAgICBjb25zdCBwYWRkaW5nQW1vdW50ID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib2R5KVsncGFkZGluZy1yaWdodCddKTtcbiAgICBib2R5LnN0eWxlWydwYWRkaW5nLXJpZ2h0J10gPSBgJHtwYWRkaW5nQW1vdW50ICsgd2lkdGh9cHhgO1xuICAgIHJldHVybiAoKSA9PiBib2R5LnN0eWxlWydwYWRkaW5nLXJpZ2h0J10gPSB1c2VyU2V0UGFkZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBUZWxscyB3aGV0aGVyIGEgc2Nyb2xsYmFyIGlzIGN1cnJlbnRseSBwcmVzZW50IG9uIHRoZSBib2R5LlxuICAgKlxuICAgKiBAcmV0dXJuIHRydWUgaWYgc2Nyb2xsYmFyIGlzIHByZXNlbnQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBfaXNQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiByZWN0LmxlZnQgKyByZWN0LnJpZ2h0IDwgd2luZG93LmlubmVyV2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgd2lkdGggb2YgYSBzY3JvbGxiYXIuXG4gICAqXG4gICAqIEByZXR1cm4gdGhlIHdpZHRoIG9mIGEgc2Nyb2xsYmFyIG9uIHRoaXMgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0V2lkdGgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBtZWFzdXJlciA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lYXN1cmVyLmNsYXNzTmFtZSA9ICdtb2RhbC1zY3JvbGxiYXItbWVhc3VyZSc7XG5cbiAgICBjb25zdCBib2R5ID0gdGhpcy5fZG9jdW1lbnQuYm9keTtcbiAgICBib2R5LmFwcGVuZENoaWxkKG1lYXN1cmVyKTtcbiAgICBjb25zdCB3aWR0aCA9IG1lYXN1cmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC0gbWVhc3VyZXIuY2xpZW50V2lkdGg7XG4gICAgYm9keS5yZW1vdmVDaGlsZChtZWFzdXJlcik7XG5cbiAgICByZXR1cm4gd2lkdGg7XG4gIH1cbn1cbiIsImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1tb2RhbC1iYWNrZHJvcCcsXG4gIHRlbXBsYXRlOiAnJyxcbiAgaG9zdDpcbiAgICAgIHsnW2NsYXNzXSc6ICdcIm1vZGFsLWJhY2tkcm9wIGZhZGUgc2hvd1wiICsgKGJhY2tkcm9wQ2xhc3MgPyBcIiBcIiArIGJhY2tkcm9wQ2xhc3MgOiBcIlwiKScsICdzdHlsZSc6ICd6LWluZGV4OiAxMDUwJ31cbn0pXG5leHBvcnQgY2xhc3MgTmdiTW9kYWxCYWNrZHJvcCB7XG4gIEBJbnB1dCgpIGJhY2tkcm9wQ2xhc3M6IHN0cmluZztcbn1cbiIsImltcG9ydCB7Q29tcG9uZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtOZ2JNb2RhbEJhY2tkcm9wfSBmcm9tICcuL21vZGFsLWJhY2tkcm9wJztcbmltcG9ydCB7TmdiTW9kYWxXaW5kb3d9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuaW1wb3J0IHtDb250ZW50UmVmfSBmcm9tICcuLi91dGlsL3BvcHVwJztcblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudGx5IG9wZW5lZCAoYWN0aXZlKSBtb2RhbC5cbiAqXG4gKiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgaW5qZWN0ZWQgaW50byB5b3VyIGNvbXBvbmVudCBwYXNzZWQgYXMgbW9kYWwgY29udGVudC5cbiAqIFNvIHlvdSBjYW4gYC5jbG9zZSgpYCBvciBgLmRpc21pc3MoKWAgdGhlIG1vZGFsIHdpbmRvdyBmcm9tIHlvdXIgY29tcG9uZW50LlxuICovXG5leHBvcnQgY2xhc3MgTmdiQWN0aXZlTW9kYWwge1xuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbCB3aXRoIGFuIG9wdGlvbmFsIGByZXN1bHRgIHZhbHVlLlxuICAgKlxuICAgKiBUaGUgYE5nYk1vYmFsUmVmLnJlc3VsdGAgcHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgKi9cbiAgY2xvc2UocmVzdWx0PzogYW55KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzZXMgdGhlIG1vZGFsIHdpdGggYW4gb3B0aW9uYWwgYHJlYXNvbmAgdmFsdWUuXG4gICAqXG4gICAqIFRoZSBgTmdiTW9kYWxSZWYucmVzdWx0YCBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAqL1xuICBkaXNtaXNzKHJlYXNvbj86IGFueSk6IHZvaWQge31cbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byB0aGUgbmV3bHkgb3BlbmVkIG1vZGFsIHJldHVybmVkIGJ5IHRoZSBgTmdiTW9kYWwub3BlbigpYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbFJlZiB7XG4gIHByaXZhdGUgX3Jlc29sdmU6IChyZXN1bHQ/OiBhbnkpID0+IHZvaWQ7XG4gIHByaXZhdGUgX3JlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIG9mIGEgY29tcG9uZW50IHVzZWQgZm9yIHRoZSBtb2RhbCBjb250ZW50LlxuICAgKlxuICAgKiBXaGVuIGEgYFRlbXBsYXRlUmVmYCBpcyB1c2VkIGFzIHRoZSBjb250ZW50LCB3aWxsIHJldHVybiBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGdldCBjb21wb25lbnRJbnN0YW5jZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLl9jb250ZW50UmVmLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRSZWYuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZCBhbmQgcmVqZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgcmVzdWx0OiBQcm9taXNlPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF93aW5kb3dDbXB0UmVmOiBDb21wb25lbnRSZWY8TmdiTW9kYWxXaW5kb3c+LCBwcml2YXRlIF9jb250ZW50UmVmOiBDb250ZW50UmVmLFxuICAgICAgcHJpdmF0ZSBfYmFja2Ryb3BDbXB0UmVmPzogQ29tcG9uZW50UmVmPE5nYk1vZGFsQmFja2Ryb3A+LCBwcml2YXRlIF9iZWZvcmVEaXNtaXNzPzogRnVuY3Rpb24pIHtcbiAgICBfd2luZG93Q21wdFJlZi5pbnN0YW5jZS5kaXNtaXNzRXZlbnQuc3Vic2NyaWJlKChyZWFzb246IGFueSkgPT4geyB0aGlzLmRpc21pc3MocmVhc29uKTsgfSk7XG5cbiAgICB0aGlzLnJlc3VsdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgICAgdGhpcy5fcmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHRoaXMucmVzdWx0LnRoZW4obnVsbCwgKCkgPT4ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgbW9kYWwgd2l0aCBhbiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZS5cbiAgICpcbiAgICogVGhlIGBOZ2JNb2JhbFJlZi5yZXN1bHRgIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICovXG4gIGNsb3NlKHJlc3VsdD86IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dDbXB0UmVmKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlKHJlc3VsdCk7XG4gICAgICB0aGlzLl9yZW1vdmVNb2RhbEVsZW1lbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGlzbWlzcyhyZWFzb24/OiBhbnkpIHtcbiAgICB0aGlzLl9yZWplY3QocmVhc29uKTtcbiAgICB0aGlzLl9yZW1vdmVNb2RhbEVsZW1lbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIHRoZSBtb2RhbCB3aXRoIGFuIG9wdGlvbmFsIGByZWFzb25gIHZhbHVlLlxuICAgKlxuICAgKiBUaGUgYE5nYk1vZGFsUmVmLnJlc3VsdGAgcHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgKi9cbiAgZGlzbWlzcyhyZWFzb24/OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd2luZG93Q21wdFJlZikge1xuICAgICAgaWYgKCF0aGlzLl9iZWZvcmVEaXNtaXNzKSB7XG4gICAgICAgIHRoaXMuX2Rpc21pc3MocmVhc29uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpc21pc3MgPSB0aGlzLl9iZWZvcmVEaXNtaXNzKCk7XG4gICAgICAgIGlmIChkaXNtaXNzICYmIGRpc21pc3MudGhlbikge1xuICAgICAgICAgIGRpc21pc3MudGhlbihcbiAgICAgICAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzbWlzcyhyZWFzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKCkgPT4ge30pO1xuICAgICAgICB9IGVsc2UgaWYgKGRpc21pc3MgIT09IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy5fZGlzbWlzcyhyZWFzb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlTW9kYWxFbGVtZW50cygpIHtcbiAgICBjb25zdCB3aW5kb3dOYXRpdmVFbCA9IHRoaXMuX3dpbmRvd0NtcHRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB3aW5kb3dOYXRpdmVFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHdpbmRvd05hdGl2ZUVsKTtcbiAgICB0aGlzLl93aW5kb3dDbXB0UmVmLmRlc3Ryb3koKTtcblxuICAgIGlmICh0aGlzLl9iYWNrZHJvcENtcHRSZWYpIHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wTmF0aXZlRWwgPSB0aGlzLl9iYWNrZHJvcENtcHRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICAgIGJhY2tkcm9wTmF0aXZlRWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiYWNrZHJvcE5hdGl2ZUVsKTtcbiAgICAgIHRoaXMuX2JhY2tkcm9wQ21wdFJlZi5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbnRlbnRSZWYgJiYgdGhpcy5fY29udGVudFJlZi52aWV3UmVmKSB7XG4gICAgICB0aGlzLl9jb250ZW50UmVmLnZpZXdSZWYuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3dpbmRvd0NtcHRSZWYgPSBudWxsO1xuICAgIHRoaXMuX2JhY2tkcm9wQ21wdFJlZiA9IG51bGw7XG4gICAgdGhpcy5fY29udGVudFJlZiA9IG51bGw7XG4gIH1cbn1cbiIsImV4cG9ydCBlbnVtIE1vZGFsRGlzbWlzc1JlYXNvbnMge1xuICBCQUNLRFJPUF9DTElDSyxcbiAgRVNDXG59XG4iLCJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Z2V0Rm9jdXNhYmxlQm91bmRhcnlFbGVtZW50c30gZnJvbSAnLi4vdXRpbC9mb2N1cy10cmFwJztcbmltcG9ydCB7TW9kYWxEaXNtaXNzUmVhc29uc30gZnJvbSAnLi9tb2RhbC1kaXNtaXNzLXJlYXNvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItbW9kYWwtd2luZG93JyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ1wibW9kYWwgZmFkZSBzaG93IGQtYmxvY2tcIiArICh3aW5kb3dDbGFzcyA/IFwiIFwiICsgd2luZG93Q2xhc3MgOiBcIlwiKScsXG4gICAgJ3JvbGUnOiAnZGlhbG9nJyxcbiAgICAndGFiaW5kZXgnOiAnLTEnLFxuICAgICcoa2V5dXAuZXNjKSc6ICdlc2NLZXkoJGV2ZW50KScsXG4gICAgJyhjbGljayknOiAnYmFja2Ryb3BDbGljaygkZXZlbnQpJyxcbiAgICAnW2F0dHIuYXJpYS1tb2RhbF0nOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnYXJpYUxhYmVsbGVkQnknLFxuICB9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cIidtb2RhbC1kaWFsb2cnICsgKHNpemUgPyAnIG1vZGFsLScgKyBzaXplIDogJycpICsgKGNlbnRlcmVkID8gJyBtb2RhbC1kaWFsb2ctY2VudGVyZWQnIDogJycpXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiTW9kYWxXaW5kb3cgaW1wbGVtZW50cyBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZWxXaXRoRm9jdXM6IEVsZW1lbnQ7ICAvLyBlbGVtZW50IHRoYXQgaXMgZm9jdXNlZCBwcmlvciB0byBtb2RhbCBvcGVuaW5nXG5cbiAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcbiAgQElucHV0KCkgYmFja2Ryb3A6IGJvb2xlYW4gfCBzdHJpbmcgPSB0cnVlO1xuICBASW5wdXQoKSBjZW50ZXJlZDogc3RyaW5nO1xuICBASW5wdXQoKSBrZXlib2FyZCA9IHRydWU7XG4gIEBJbnB1dCgpIHNpemU6IHN0cmluZztcbiAgQElucHV0KCkgd2luZG93Q2xhc3M6IHN0cmluZztcblxuICBAT3V0cHV0KCdkaXNtaXNzJykgZGlzbWlzc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBiYWNrZHJvcENsaWNrKCRldmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJhY2tkcm9wID09PSB0cnVlICYmIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQgPT09ICRldmVudC50YXJnZXQpIHtcbiAgICAgIHRoaXMuZGlzbWlzcyhNb2RhbERpc21pc3NSZWFzb25zLkJBQ0tEUk9QX0NMSUNLKTtcbiAgICB9XG4gIH1cblxuICBlc2NLZXkoJGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMua2V5Ym9hcmQgJiYgISRldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICB0aGlzLmRpc21pc3MoTW9kYWxEaXNtaXNzUmVhc29ucy5FU0MpO1xuICAgIH1cbiAgfVxuXG4gIGRpc21pc3MocmVhc29uKTogdm9pZCB7IHRoaXMuZGlzbWlzc0V2ZW50LmVtaXQocmVhc29uKTsgfVxuXG4gIG5nT25Jbml0KCkgeyB0aGlzLl9lbFdpdGhGb2N1cyA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBhdXRvRm9jdXNhYmxlID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbbmdiQXV0b2ZvY3VzXWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGUgPSBnZXRGb2N1c2FibGVCb3VuZGFyeUVsZW1lbnRzKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpWzBdO1xuXG4gICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGF1dG9Gb2N1c2FibGUgfHwgZmlyc3RGb2N1c2FibGUgfHwgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgYm9keSA9IHRoaXMuX2RvY3VtZW50LmJvZHk7XG4gICAgY29uc3QgZWxXaXRoRm9jdXMgPSB0aGlzLl9lbFdpdGhGb2N1cztcblxuICAgIGxldCBlbGVtZW50VG9Gb2N1cztcbiAgICBpZiAoZWxXaXRoRm9jdXMgJiYgZWxXaXRoRm9jdXNbJ2ZvY3VzJ10gJiYgYm9keS5jb250YWlucyhlbFdpdGhGb2N1cykpIHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzID0gZWxXaXRoRm9jdXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnRUb0ZvY3VzID0gYm9keTtcbiAgICB9XG4gICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICB0aGlzLl9lbFdpdGhGb2N1cyA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7bmdiRm9jdXNUcmFwfSBmcm9tICcuLi91dGlsL2ZvY3VzLXRyYXAnO1xuaW1wb3J0IHtDb250ZW50UmVmfSBmcm9tICcuLi91dGlsL3BvcHVwJztcbmltcG9ydCB7U2Nyb2xsQmFyfSBmcm9tICcuLi91dGlsL3Njcm9sbGJhcic7XG5pbXBvcnQge2lzRGVmaW5lZCwgaXNTdHJpbmd9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge05nYk1vZGFsQmFja2Ryb3B9IGZyb20gJy4vbW9kYWwtYmFja2Ryb3AnO1xuaW1wb3J0IHtOZ2JBY3RpdmVNb2RhbCwgTmdiTW9kYWxSZWZ9IGZyb20gJy4vbW9kYWwtcmVmJztcbmltcG9ydCB7TmdiTW9kYWxXaW5kb3d9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiTW9kYWxTdGFjayB7XG4gIHByaXZhdGUgX2FjdGl2ZVdpbmRvd0NtcHRIYXNDaGFuZ2VkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfYXJpYUhpZGRlblZhbHVlczogTWFwPEVsZW1lbnQsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgX2JhY2tkcm9wQXR0cmlidXRlcyA9IFsnYmFja2Ryb3BDbGFzcyddO1xuICBwcml2YXRlIF9tb2RhbFJlZnM6IE5nYk1vZGFsUmVmW10gPSBbXTtcbiAgcHJpdmF0ZSBfd2luZG93QXR0cmlidXRlcyA9IFsnYXJpYUxhYmVsbGVkQnknLCAnYmFja2Ryb3AnLCAnY2VudGVyZWQnLCAna2V5Ym9hcmQnLCAnc2l6ZScsICd3aW5kb3dDbGFzcyddO1xuICBwcml2YXRlIF93aW5kb3dDbXB0czogQ29tcG9uZW50UmVmPE5nYk1vZGFsV2luZG93PltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF9hcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICAgIHByaXZhdGUgX3Njcm9sbEJhcjogU2Nyb2xsQmFyLCBwcml2YXRlIF9yZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcbiAgICAvLyBUcmFwIGZvY3VzIG9uIGFjdGl2ZSBXaW5kb3dDbXB0XG4gICAgdGhpcy5fYWN0aXZlV2luZG93Q21wdEhhc0NoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl93aW5kb3dDbXB0cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlV2luZG93Q21wdCA9IHRoaXMuX3dpbmRvd0NtcHRzW3RoaXMuX3dpbmRvd0NtcHRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBuZ2JGb2N1c1RyYXAoYWN0aXZlV2luZG93Q21wdC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZCk7XG4gICAgICAgIHRoaXMuX3JldmVydEFyaWFIaWRkZW4oKTtcbiAgICAgICAgdGhpcy5fc2V0QXJpYUhpZGRlbihhY3RpdmVXaW5kb3dDbXB0LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3Blbihtb2R1bGVDRlI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgY29udGVudEluamVjdG9yOiBJbmplY3RvciwgY29udGVudDogYW55LCBvcHRpb25zKTogTmdiTW9kYWxSZWYge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsID1cbiAgICAgICAgaXNEZWZpbmVkKG9wdGlvbnMuY29udGFpbmVyKSA/IHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob3B0aW9ucy5jb250YWluZXIpIDogdGhpcy5fZG9jdW1lbnQuYm9keTtcbiAgICBjb25zdCByZW5kZXJlciA9IHRoaXMuX3JlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblxuICAgIGNvbnN0IHJldmVydFBhZGRpbmdGb3JTY3JvbGxCYXIgPSB0aGlzLl9zY3JvbGxCYXIuY29tcGVuc2F0ZSgpO1xuICAgIGNvbnN0IHJlbW92ZUJvZHlDbGFzcyA9ICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5fbW9kYWxSZWZzLmxlbmd0aCkge1xuICAgICAgICByZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9kb2N1bWVudC5ib2R5LCAnbW9kYWwtb3BlbicpO1xuICAgICAgICB0aGlzLl9yZXZlcnRBcmlhSGlkZGVuKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghY29udGFpbmVyRWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNwZWNpZmllZCBtb2RhbCBjb250YWluZXIgXCIke29wdGlvbnMuY29udGFpbmVyIHx8ICdib2R5J31cIiB3YXMgbm90IGZvdW5kIGluIHRoZSBET00uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlTW9kYWwgPSBuZXcgTmdiQWN0aXZlTW9kYWwoKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gdGhpcy5fZ2V0Q29udGVudFJlZihtb2R1bGVDRlIsIG9wdGlvbnMuaW5qZWN0b3IgfHwgY29udGVudEluamVjdG9yLCBjb250ZW50LCBhY3RpdmVNb2RhbCk7XG5cbiAgICBsZXQgYmFja2Ryb3BDbXB0UmVmOiBDb21wb25lbnRSZWY8TmdiTW9kYWxCYWNrZHJvcD4gPVxuICAgICAgICBvcHRpb25zLmJhY2tkcm9wICE9PSBmYWxzZSA/IHRoaXMuX2F0dGFjaEJhY2tkcm9wKG1vZHVsZUNGUiwgY29udGFpbmVyRWwpIDogbnVsbDtcbiAgICBsZXQgd2luZG93Q21wdFJlZjogQ29tcG9uZW50UmVmPE5nYk1vZGFsV2luZG93PiA9IHRoaXMuX2F0dGFjaFdpbmRvd0NvbXBvbmVudChtb2R1bGVDRlIsIGNvbnRhaW5lckVsLCBjb250ZW50UmVmKTtcbiAgICBsZXQgbmdiTW9kYWxSZWY6IE5nYk1vZGFsUmVmID0gbmV3IE5nYk1vZGFsUmVmKHdpbmRvd0NtcHRSZWYsIGNvbnRlbnRSZWYsIGJhY2tkcm9wQ21wdFJlZiwgb3B0aW9ucy5iZWZvcmVEaXNtaXNzKTtcblxuICAgIHRoaXMuX3JlZ2lzdGVyTW9kYWxSZWYobmdiTW9kYWxSZWYpO1xuICAgIHRoaXMuX3JlZ2lzdGVyV2luZG93Q21wdCh3aW5kb3dDbXB0UmVmKTtcbiAgICBuZ2JNb2RhbFJlZi5yZXN1bHQudGhlbihyZXZlcnRQYWRkaW5nRm9yU2Nyb2xsQmFyLCByZXZlcnRQYWRkaW5nRm9yU2Nyb2xsQmFyKTtcbiAgICBuZ2JNb2RhbFJlZi5yZXN1bHQudGhlbihyZW1vdmVCb2R5Q2xhc3MsIHJlbW92ZUJvZHlDbGFzcyk7XG4gICAgYWN0aXZlTW9kYWwuY2xvc2UgPSAocmVzdWx0OiBhbnkpID0+IHsgbmdiTW9kYWxSZWYuY2xvc2UocmVzdWx0KTsgfTtcbiAgICBhY3RpdmVNb2RhbC5kaXNtaXNzID0gKHJlYXNvbjogYW55KSA9PiB7IG5nYk1vZGFsUmVmLmRpc21pc3MocmVhc29uKTsgfTtcblxuICAgIHRoaXMuX2FwcGx5V2luZG93T3B0aW9ucyh3aW5kb3dDbXB0UmVmLmluc3RhbmNlLCBvcHRpb25zKTtcbiAgICBpZiAodGhpcy5fbW9kYWxSZWZzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZG9jdW1lbnQuYm9keSwgJ21vZGFsLW9wZW4nKTtcbiAgICB9XG5cbiAgICBpZiAoYmFja2Ryb3BDbXB0UmVmICYmIGJhY2tkcm9wQ21wdFJlZi5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5fYXBwbHlCYWNrZHJvcE9wdGlvbnMoYmFja2Ryb3BDbXB0UmVmLmluc3RhbmNlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIG5nYk1vZGFsUmVmO1xuICB9XG5cbiAgZGlzbWlzc0FsbChyZWFzb24/OiBhbnkpIHsgdGhpcy5fbW9kYWxSZWZzLmZvckVhY2gobmdiTW9kYWxSZWYgPT4gbmdiTW9kYWxSZWYuZGlzbWlzcyhyZWFzb24pKTsgfVxuXG4gIGhhc09wZW5Nb2RhbHMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9tb2RhbFJlZnMubGVuZ3RoID4gMDsgfVxuXG4gIHByaXZhdGUgX2F0dGFjaEJhY2tkcm9wKG1vZHVsZUNGUjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBjb250YWluZXJFbDogYW55KTogQ29tcG9uZW50UmVmPE5nYk1vZGFsQmFja2Ryb3A+IHtcbiAgICBsZXQgYmFja2Ryb3BGYWN0b3J5ID0gbW9kdWxlQ0ZSLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE5nYk1vZGFsQmFja2Ryb3ApO1xuICAgIGxldCBiYWNrZHJvcENtcHRSZWYgPSBiYWNrZHJvcEZhY3RvcnkuY3JlYXRlKHRoaXMuX2luamVjdG9yKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGJhY2tkcm9wQ21wdFJlZi5ob3N0Vmlldyk7XG4gICAgY29udGFpbmVyRWwuYXBwZW5kQ2hpbGQoYmFja2Ryb3BDbXB0UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHJldHVybiBiYWNrZHJvcENtcHRSZWY7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hXaW5kb3dDb21wb25lbnQobW9kdWxlQ0ZSOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGNvbnRhaW5lckVsOiBhbnksIGNvbnRlbnRSZWY6IGFueSk6XG4gICAgICBDb21wb25lbnRSZWY8TmdiTW9kYWxXaW5kb3c+IHtcbiAgICBsZXQgd2luZG93RmFjdG9yeSA9IG1vZHVsZUNGUi5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOZ2JNb2RhbFdpbmRvdyk7XG4gICAgbGV0IHdpbmRvd0NtcHRSZWYgPSB3aW5kb3dGYWN0b3J5LmNyZWF0ZSh0aGlzLl9pbmplY3RvciwgY29udGVudFJlZi5ub2Rlcyk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyh3aW5kb3dDbXB0UmVmLmhvc3RWaWV3KTtcbiAgICBjb250YWluZXJFbC5hcHBlbmRDaGlsZCh3aW5kb3dDbXB0UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHJldHVybiB3aW5kb3dDbXB0UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlXaW5kb3dPcHRpb25zKHdpbmRvd0luc3RhbmNlOiBOZ2JNb2RhbFdpbmRvdywgb3B0aW9uczogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5fd2luZG93QXR0cmlidXRlcy5mb3JFYWNoKChvcHRpb25OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChpc0RlZmluZWQob3B0aW9uc1tvcHRpb25OYW1lXSkpIHtcbiAgICAgICAgd2luZG93SW5zdGFuY2Vbb3B0aW9uTmFtZV0gPSBvcHRpb25zW29wdGlvbk5hbWVdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlCYWNrZHJvcE9wdGlvbnMoYmFja2Ryb3BJbnN0YW5jZTogTmdiTW9kYWxCYWNrZHJvcCwgb3B0aW9uczogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5fYmFja2Ryb3BBdHRyaWJ1dGVzLmZvckVhY2goKG9wdGlvbk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGlzRGVmaW5lZChvcHRpb25zW29wdGlvbk5hbWVdKSkge1xuICAgICAgICBiYWNrZHJvcEluc3RhbmNlW29wdGlvbk5hbWVdID0gb3B0aW9uc1tvcHRpb25OYW1lXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvbnRlbnRSZWYoXG4gICAgICBtb2R1bGVDRlI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgY29udGVudEluamVjdG9yOiBJbmplY3RvciwgY29udGVudDogYW55LFxuICAgICAgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsKTogQ29udGVudFJlZiB7XG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm4gbmV3IENvbnRlbnRSZWYoW10pO1xuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRnJvbVRlbXBsYXRlUmVmKGNvbnRlbnQsIGFjdGl2ZU1vZGFsKTtcbiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRnJvbVN0cmluZyhjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZyb21Db21wb25lbnQobW9kdWxlQ0ZSLCBjb250ZW50SW5qZWN0b3IsIGNvbnRlbnQsIGFjdGl2ZU1vZGFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVGcm9tVGVtcGxhdGVSZWYoY29udGVudDogVGVtcGxhdGVSZWY8YW55PiwgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsKTogQ29udGVudFJlZiB7XG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICRpbXBsaWNpdDogYWN0aXZlTW9kYWwsXG4gICAgICBjbG9zZShyZXN1bHQpIHsgYWN0aXZlTW9kYWwuY2xvc2UocmVzdWx0KTsgfSxcbiAgICAgIGRpc21pc3MocmVhc29uKSB7IGFjdGl2ZU1vZGFsLmRpc21pc3MocmVhc29uKTsgfVxuICAgIH07XG4gICAgY29uc3Qgdmlld1JlZiA9IGNvbnRlbnQuY3JlYXRlRW1iZWRkZWRWaWV3KGNvbnRleHQpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcodmlld1JlZik7XG4gICAgcmV0dXJuIG5ldyBDb250ZW50UmVmKFt2aWV3UmVmLnJvb3ROb2Rlc10sIHZpZXdSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRnJvbVN0cmluZyhjb250ZW50OiBzdHJpbmcpOiBDb250ZW50UmVmIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgJHtjb250ZW50fWApO1xuICAgIHJldHVybiBuZXcgQ29udGVudFJlZihbW2NvbXBvbmVudF1dKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUZyb21Db21wb25lbnQoXG4gICAgICBtb2R1bGVDRlI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgY29udGVudEluamVjdG9yOiBJbmplY3RvciwgY29udGVudDogYW55LFxuICAgICAgY29udGV4dDogTmdiQWN0aXZlTW9kYWwpOiBDb250ZW50UmVmIHtcbiAgICBjb25zdCBjb250ZW50Q21wdEZhY3RvcnkgPSBtb2R1bGVDRlIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29udGVudCk7XG4gICAgY29uc3QgbW9kYWxDb250ZW50SW5qZWN0b3IgPVxuICAgICAgICBJbmplY3Rvci5jcmVhdGUoe3Byb3ZpZGVyczogW3twcm92aWRlOiBOZ2JBY3RpdmVNb2RhbCwgdXNlVmFsdWU6IGNvbnRleHR9XSwgcGFyZW50OiBjb250ZW50SW5qZWN0b3J9KTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb250ZW50Q21wdEZhY3RvcnkuY3JlYXRlKG1vZGFsQ29udGVudEluamVjdG9yKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgcmV0dXJuIG5ldyBDb250ZW50UmVmKFtbY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnRdXSwgY29tcG9uZW50UmVmLmhvc3RWaWV3LCBjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QXJpYUhpZGRlbihlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgY29uc3QgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnQgJiYgZWxlbWVudCAhPT0gdGhpcy5fZG9jdW1lbnQuYm9keSkge1xuICAgICAgQXJyYXkuZnJvbShwYXJlbnQuY2hpbGRyZW4pLmZvckVhY2goc2libGluZyA9PiB7XG4gICAgICAgIGlmIChzaWJsaW5nICE9PSBlbGVtZW50ICYmIHNpYmxpbmcubm9kZU5hbWUgIT09ICdTQ1JJUFQnKSB7XG4gICAgICAgICAgdGhpcy5fYXJpYUhpZGRlblZhbHVlcy5zZXQoc2libGluZywgc2libGluZy5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykpO1xuICAgICAgICAgIHNpYmxpbmcuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9zZXRBcmlhSGlkZGVuKHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmV2ZXJ0QXJpYUhpZGRlbigpIHtcbiAgICB0aGlzLl9hcmlhSGlkZGVuVmFsdWVzLmZvckVhY2goKHZhbHVlLCBlbGVtZW50KSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fYXJpYUhpZGRlblZhbHVlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJNb2RhbFJlZihuZ2JNb2RhbFJlZjogTmdiTW9kYWxSZWYpIHtcbiAgICBjb25zdCB1bnJlZ2lzdGVyTW9kYWxSZWYgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX21vZGFsUmVmcy5pbmRleE9mKG5nYk1vZGFsUmVmKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuX21vZGFsUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fbW9kYWxSZWZzLnB1c2gobmdiTW9kYWxSZWYpO1xuICAgIG5nYk1vZGFsUmVmLnJlc3VsdC50aGVuKHVucmVnaXN0ZXJNb2RhbFJlZiwgdW5yZWdpc3Rlck1vZGFsUmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyV2luZG93Q21wdChuZ2JXaW5kb3dDbXB0OiBDb21wb25lbnRSZWY8TmdiTW9kYWxXaW5kb3c+KSB7XG4gICAgdGhpcy5fd2luZG93Q21wdHMucHVzaChuZ2JXaW5kb3dDbXB0KTtcbiAgICB0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG5cbiAgICBuZ2JXaW5kb3dDbXB0Lm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3dpbmRvd0NtcHRzLmluZGV4T2YobmdiV2luZG93Q21wdCk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLl93aW5kb3dDbXB0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9hY3RpdmVXaW5kb3dDbXB0SGFzQ2hhbmdlZC5uZXh0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3IsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TmdiTW9kYWxPcHRpb25zLCBOZ2JNb2RhbENvbmZpZ30gZnJvbSAnLi9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHtOZ2JNb2RhbFJlZn0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuaW1wb3J0IHtOZ2JNb2RhbFN0YWNrfSBmcm9tICcuL21vZGFsLXN0YWNrJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgZm9yIG9wZW5pbmcgbW9kYWwgd2luZG93cy5cbiAqXG4gKiBDcmVhdGluZyBhIG1vZGFsIGlzIHN0cmFpZ2h0Zm9yd2FyZDogY3JlYXRlIGEgY29tcG9uZW50IG9yIGEgdGVtcGxhdGUgYW5kIHBhc3MgaXQgYXMgYW4gYXJndW1lbnQgdG9cbiAqIHRoZSBgLm9wZW4oKWAgbWV0aG9kLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfbW9kdWxlQ0ZSOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBfbW9kYWxTdGFjazogTmdiTW9kYWxTdGFjayxcbiAgICAgIHByaXZhdGUgX2NvbmZpZzogTmdiTW9kYWxDb25maWcpIHt9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgbmV3IG1vZGFsIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgc3VwcGxpZWQgb3B0aW9ucy5cbiAgICpcbiAgICogQ29udGVudCBjYW4gYmUgcHJvdmlkZWQgYXMgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50IHR5cGUuIElmIHlvdSBwYXNzIGEgY29tcG9uZW50IHR5cGUgYXMgY29udGVudCxcbiAgICogdGhlbiBpbnN0YW5jZXMgb2YgdGhvc2UgY29tcG9uZW50cyBjYW4gYmUgaW5qZWN0ZWQgd2l0aCBhbiBpbnN0YW5jZSBvZiB0aGUgYE5nYkFjdGl2ZU1vZGFsYCBjbGFzcy4gWW91IGNhbiB0aGVuXG4gICAqIHVzZSBgTmdiQWN0aXZlTW9kYWxgIG1ldGhvZHMgdG8gY2xvc2UgLyBkaXNtaXNzIG1vZGFscyBmcm9tIFwiaW5zaWRlXCIgb2YgeW91ciBjb21wb25lbnQuXG4gICAqXG4gICAqIEFsc28gc2VlIHRoZSBbYE5nYk1vZGFsT3B0aW9uc2BdKCMvY29tcG9uZW50cy9tb2RhbC9hcGkjTmdiTW9kYWxPcHRpb25zKSBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIG9wdGlvbnMuXG4gICAqL1xuICBvcGVuKGNvbnRlbnQ6IGFueSwgb3B0aW9uczogTmdiTW9kYWxPcHRpb25zID0ge30pOiBOZ2JNb2RhbFJlZiB7XG4gICAgY29uc3QgY29tYmluZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fY29uZmlnLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5fbW9kYWxTdGFjay5vcGVuKHRoaXMuX21vZHVsZUNGUiwgdGhpcy5faW5qZWN0b3IsIGNvbnRlbnQsIGNvbWJpbmVkT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBjdXJyZW50bHkgZGlzcGxheWVkIG1vZGFsIHdpbmRvd3Mgd2l0aCB0aGUgc3VwcGxpZWQgcmVhc29uLlxuICAgKlxuICAgKiBAc2luY2UgMy4xLjBcbiAgICovXG4gIGRpc21pc3NBbGwocmVhc29uPzogYW55KSB7IHRoaXMuX21vZGFsU3RhY2suZGlzbWlzc0FsbChyZWFzb24pOyB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGVyZSBhcmUgY3VycmVudGx5IGFueSBvcGVuIG1vZGFsIHdpbmRvd3MgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAc2luY2UgMy4zLjBcbiAgICovXG4gIGhhc09wZW5Nb2RhbHMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9tb2RhbFN0YWNrLmhhc09wZW5Nb2RhbHMoKTsgfVxufVxuIiwiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TmdiTW9kYWx9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHtOZ2JNb2RhbEJhY2tkcm9wfSBmcm9tICcuL21vZGFsLWJhY2tkcm9wJztcbmltcG9ydCB7TmdiTW9kYWxXaW5kb3d9IGZyb20gJy4vbW9kYWwtd2luZG93JztcblxuZXhwb3J0IHtOZ2JNb2RhbH0gZnJvbSAnLi9tb2RhbCc7XG5leHBvcnQge05nYk1vZGFsQ29uZmlnLCBOZ2JNb2RhbE9wdGlvbnN9IGZyb20gJy4vbW9kYWwtY29uZmlnJztcbmV4cG9ydCB7TmdiTW9kYWxSZWYsIE5nYkFjdGl2ZU1vZGFsfSBmcm9tICcuL21vZGFsLXJlZic7XG5leHBvcnQge01vZGFsRGlzbWlzc1JlYXNvbnN9IGZyb20gJy4vbW9kYWwtZGlzbWlzcy1yZWFzb25zJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmdiTW9kYWxCYWNrZHJvcCwgTmdiTW9kYWxXaW5kb3ddLFxuICBlbnRyeUNvbXBvbmVudHM6IFtOZ2JNb2RhbEJhY2tkcm9wLCBOZ2JNb2RhbFdpbmRvd10sXG4gIHByb3ZpZGVyczogW05nYk1vZGFsXVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JNb2RhbE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JNb2RhbE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbYE5nYlBhZ2luYXRpb25gXSgjL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9hcGkjTmdiUGFnaW5hdGlvbikgY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSwgdHlwaWNhbGx5IGluIHlvdXIgcm9vdCBjb21wb25lbnQsIGFuZCBjdXN0b21pemUgdGhlIHZhbHVlcyBvZiBpdHMgcHJvcGVydGllcyBpblxuICogb3JkZXIgdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHRoZSBwYWdpbmF0aW9ucyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbkNvbmZpZyB7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIGJvdW5kYXJ5TGlua3MgPSBmYWxzZTtcbiAgZGlyZWN0aW9uTGlua3MgPSB0cnVlO1xuICBlbGxpcHNlcyA9IHRydWU7XG4gIG1heFNpemUgPSAwO1xuICBwYWdlU2l6ZSA9IDEwO1xuICByb3RhdGUgPSBmYWxzZTtcbiAgc2l6ZTogJ3NtJyB8ICdsZyc7XG59XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtnZXRWYWx1ZUluUmFuZ2UsIGlzTnVtYmVyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JQYWdpbmF0aW9uQ29uZmlnfSBmcm9tICcuL3BhZ2luYXRpb24tY29uZmlnJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZVxuICogKiBgTmdiUGFnaW5hdGlvbkZpcnN0YFxuICogKiBgTmdiUGFnaW5hdGlvblByZXZpb3VzYFxuICogKiBgTmdiUGFnaW5hdGlvbk5leHRgXG4gKiAqIGBOZ2JQYWdpbmF0aW9uTGFzdGBcbiAqICogYE5nYlBhZ2luYXRpb25FbGxpcHNpc2BcbiAqXG4gKiBsaW5rIHRlbXBsYXRlcyBpbiBjYXNlIHlvdSB3YW50IHRvIG92ZXJyaWRlIG9uZS5cbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwYWdlIG51bWJlclxuICAgKi9cbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY3VycmVudCBsaW5rIGlzIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZSBgTmdiUGFnaW5hdGlvbk51bWJlcmAgbGluayB0ZW1wbGF0ZSBpbiBjYXNlIHlvdSB3YW50IHRvIG92ZXJyaWRlIG9uZS5cbiAqXG4gKiBFeHRlbmRzIGBOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHRgLlxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nYlBhZ2luYXRpb25OdW1iZXJDb250ZXh0IGV4dGVuZHMgTmdiUGFnaW5hdGlvbkxpbmtDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBwYWdlIG51bWJlciwgZGlzcGxheWVkIGJ5IHRoZSBjdXJyZW50IHBhZ2UgbGluay5cbiAgICovXG4gICRpbXBsaWNpdDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnZWxsaXBzaXMnIGxpbmsgdGVtcGxhdGVcbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYWdpbmF0aW9uRWxsaXBzaXNdJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbkVsbGlwc2lzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnZmlyc3QnIGxpbmsgdGVtcGxhdGVcbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYWdpbmF0aW9uRmlyc3RdJ30pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbkZpcnN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnbGFzdCcgbGluayB0ZW1wbGF0ZVxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25nYlBhZ2luYXRpb25MYXN0XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25MYXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSAnbmV4dCcgbGluayB0ZW1wbGF0ZVxuICpcbiAqIEBzaW5jZSA0LjEuMFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25nYlBhZ2luYXRpb25OZXh0XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25OZXh0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxOZ2JQYWdpbmF0aW9uTGlua0NvbnRleHQ+KSB7fVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIG1hdGNoIHRoZSBwYWdlICdudW1iZXInIGxpbmsgdGVtcGxhdGVcbiAqXG4gKiBAc2luY2UgNC4xLjBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JQYWdpbmF0aW9uTnVtYmVyXSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25OdW1iZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPE5nYlBhZ2luYXRpb25OdW1iZXJDb250ZXh0Pikge31cbn1cblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0byBtYXRjaCB0aGUgJ3ByZXZpb3VzJyBsaW5rIHRlbXBsYXRlXG4gKlxuICogQHNpbmNlIDQuMS4wXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiUGFnaW5hdGlvblByZXZpb3VzXSd9KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb25QcmV2aW91cyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8TmdiUGFnaW5hdGlvbkxpbmtDb250ZXh0Pikge31cbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIHBhZ2UgbnVtYmVycyBhbmQgYWxsb3dzIHRvIGN1c3RvbWl6ZSB0aGVtIGluIHNldmVyYWwgd2F5cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXBhZ2luYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeydyb2xlJzogJ25hdmlnYXRpb24nfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2ZpcnN0PjxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGkxOG49XCJAQG5nYi5wYWdpbmF0aW9uLmZpcnN0XCI+JmxhcXVvOyZsYXF1bzs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3ByZXZpb3VzPjxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGkxOG49XCJAQG5nYi5wYWdpbmF0aW9uLnByZXZpb3VzXCI+JmxhcXVvOzwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbmV4dD48c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBpMThuPVwiQEBuZ2IucGFnaW5hdGlvbi5uZXh0XCI+JnJhcXVvOzwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbGFzdD48c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBpMThuPVwiQEBuZ2IucGFnaW5hdGlvbi5sYXN0XCI+JnJhcXVvOyZyYXF1bzs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzPi4uLjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TnVtYmVyIGxldC1wYWdlIGxldC1jdXJyZW50UGFnZT1cImN1cnJlbnRQYWdlXCI+XG4gICAgICB7eyBwYWdlIH19XG4gICAgICA8c3BhbiAqbmdJZj1cInBhZ2UgPT09IGN1cnJlbnRQYWdlXCIgY2xhc3M9XCJzci1vbmx5XCI+KGN1cnJlbnQpPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPHVsIFtjbGFzc109XCIncGFnaW5hdGlvbicgKyAoc2l6ZSA/ICcgcGFnaW5hdGlvbi0nICsgc2l6ZSA6ICcnKVwiPlxuICAgICAgPGxpICpuZ0lmPVwiYm91bmRhcnlMaW5rc1wiIGNsYXNzPVwicGFnZS1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInByZXZpb3VzRGlzYWJsZWQoKVwiPlxuICAgICAgICA8YSBhcmlhLWxhYmVsPVwiRmlyc3RcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi5wYWdpbmF0aW9uLmZpcnN0LWFyaWFcIiBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWZcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGFnZSgxKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBbYXR0ci50YWJpbmRleF09XCIoaGFzUHJldmlvdXMoKSA/IG51bGwgOiAnLTEnKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxGaXJzdD8udGVtcGxhdGVSZWYgfHwgZmlyc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Rpc2FibGVkOiBwcmV2aW91c0Rpc2FibGVkKCksIGN1cnJlbnRQYWdlOiBwYWdlfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSAqbmdJZj1cImRpcmVjdGlvbkxpbmtzXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicHJldmlvdXNEaXNhYmxlZCgpXCI+XG4gICAgICAgIDxhIGFyaWEtbGFiZWw9XCJQcmV2aW91c1wiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLnBhZ2luYXRpb24ucHJldmlvdXMtYXJpYVwiIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2UtMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgW2F0dHIudGFiaW5kZXhdPVwiKGhhc1ByZXZpb3VzKCkgPyBudWxsIDogJy0xJylcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidHBsUHJldmlvdXM/LnRlbXBsYXRlUmVmIHx8IHByZXZpb3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkaXNhYmxlZDogcHJldmlvdXNEaXNhYmxlZCgpfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IHBhZ2VOdW1iZXIgb2YgcGFnZXNcIiBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwicGFnZU51bWJlciA9PT0gcGFnZVwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0VsbGlwc2lzKHBhZ2VOdW1iZXIpIHx8IGRpc2FibGVkXCI+XG4gICAgICAgIDxhICpuZ0lmPVwiaXNFbGxpcHNpcyhwYWdlTnVtYmVyKVwiIGNsYXNzPVwicGFnZS1saW5rXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRwbEVsbGlwc2lzPy50ZW1wbGF0ZVJlZiB8fCBlbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ZGlzYWJsZWQ6IHRydWUsIGN1cnJlbnRQYWdlOiBwYWdlfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGEgKm5nSWY9XCIhaXNFbGxpcHNpcyhwYWdlTnVtYmVyKVwiIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZiAoY2xpY2spPVwic2VsZWN0UGFnZShwYWdlTnVtYmVyKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidHBsTnVtYmVyPy50ZW1wbGF0ZVJlZiB8fCBkZWZhdWx0TnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkaXNhYmxlZDogZGlzYWJsZWQsICRpbXBsaWNpdDogcGFnZU51bWJlciwgY3VycmVudFBhZ2U6IHBhZ2V9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSAqbmdJZj1cImRpcmVjdGlvbkxpbmtzXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwibmV4dERpc2FibGVkKClcIj5cbiAgICAgICAgPGEgYXJpYS1sYWJlbD1cIk5leHRcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi5wYWdpbmF0aW9uLm5leHQtYXJpYVwiIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQYWdlKHBhZ2UrMSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgW2F0dHIudGFiaW5kZXhdPVwiKGhhc05leHQoKSA/IG51bGwgOiAnLTEnKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cGxOZXh0Py50ZW1wbGF0ZVJlZiB8fCBuZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkaXNhYmxlZDogbmV4dERpc2FibGVkKCksIGN1cnJlbnRQYWdlOiBwYWdlfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSAqbmdJZj1cImJvdW5kYXJ5TGlua3NcIiBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5kaXNhYmxlZF09XCJuZXh0RGlzYWJsZWQoKVwiPlxuICAgICAgICA8YSBhcmlhLWxhYmVsPVwiTGFzdFwiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLnBhZ2luYXRpb24ubGFzdC1hcmlhXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBhZ2UocGFnZUNvdW50KTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBbYXR0ci50YWJpbmRleF09XCIoaGFzTmV4dCgpID8gbnVsbCA6ICctMScpXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRwbExhc3Q/LnRlbXBsYXRlUmVmIHx8IGxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Rpc2FibGVkOiBuZXh0RGlzYWJsZWQoKSwgY3VycmVudFBhZ2U6IHBhZ2V9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE5nYlBhZ2luYXRpb24gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBwYWdlQ291bnQgPSAwO1xuICBwYWdlczogbnVtYmVyW10gPSBbXTtcblxuICBAQ29udGVudENoaWxkKE5nYlBhZ2luYXRpb25FbGxpcHNpcykgdHBsRWxsaXBzaXM6IE5nYlBhZ2luYXRpb25FbGxpcHNpcztcbiAgQENvbnRlbnRDaGlsZChOZ2JQYWdpbmF0aW9uRmlyc3QpIHRwbEZpcnN0OiBOZ2JQYWdpbmF0aW9uRmlyc3Q7XG4gIEBDb250ZW50Q2hpbGQoTmdiUGFnaW5hdGlvbkxhc3QpIHRwbExhc3Q6IE5nYlBhZ2luYXRpb25MYXN0O1xuICBAQ29udGVudENoaWxkKE5nYlBhZ2luYXRpb25OZXh0KSB0cGxOZXh0OiBOZ2JQYWdpbmF0aW9uTmV4dDtcbiAgQENvbnRlbnRDaGlsZChOZ2JQYWdpbmF0aW9uTnVtYmVyKSB0cGxOdW1iZXI6IE5nYlBhZ2luYXRpb25OdW1iZXI7XG4gIEBDb250ZW50Q2hpbGQoTmdiUGFnaW5hdGlvblByZXZpb3VzKSB0cGxQcmV2aW91czogTmdiUGFnaW5hdGlvblByZXZpb3VzO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHBhZ2luYXRpb24gbGlua3Mgd2lsbCBiZSBkaXNhYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBcIkZpcnN0XCIgYW5kIFwiTGFzdFwiIHBhZ2UgbGlua3MgYXJlIHNob3duLlxuICAgKi9cbiAgQElucHV0KCkgYm91bmRhcnlMaW5rczogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgXCJOZXh0XCIgYW5kIFwiUHJldmlvdXNcIiBwYWdlIGxpbmtzIGFyZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBlbGxpcHNpcyBzeW1ib2xzIGFuZCBmaXJzdC9sYXN0IHBhZ2UgbnVtYmVycyB3aWxsIGJlIHNob3duIHdoZW4gYG1heFNpemVgID4gbnVtYmVyIG9mIHBhZ2VzLlxuICAgKi9cbiAgQElucHV0KCkgZWxsaXBzZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcm90YXRlIHBhZ2VzIHdoZW4gYG1heFNpemVgID4gbnVtYmVyIG9mIHBhZ2VzLlxuICAgKlxuICAgKiBUaGUgY3VycmVudCBwYWdlIGFsd2F5cyBzdGF5cyBpbiB0aGUgbWlkZGxlIGlmIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIHJvdGF0ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogIFRoZSBudW1iZXIgb2YgaXRlbXMgaW4geW91ciBwYWdpbmF0ZWQgY29sbGVjdGlvbi5cbiAgICpcbiAgICogIE5vdGUsIHRoYXQgdGhpcyBpcyBub3QgdGhlIG51bWJlciBvZiBwYWdlcy4gUGFnZSBudW1iZXJzIGFyZSBjYWxjdWxhdGVkIGR5bmFtaWNhbGx5IGJhc2VkIG9uXG4gICAqICBgY29sbGVjdGlvblNpemVgIGFuZCBgcGFnZVNpemVgLiBFeC4gaWYgeW91IGhhdmUgMTAwIGl0ZW1zIGluIHlvdXIgY29sbGVjdGlvbiBhbmQgZGlzcGxheWluZyAyMCBpdGVtcyBwZXIgcGFnZSxcbiAgICogIHlvdSdsbCBlbmQgdXAgd2l0aCA1IHBhZ2VzLlxuICAgKi9cbiAgQElucHV0KCkgY29sbGVjdGlvblNpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWdlcyB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KCkgbWF4U2l6ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAgVGhlIGN1cnJlbnQgcGFnZS5cbiAgICpcbiAgICogIFBhZ2UgbnVtYmVycyBzdGFydCB3aXRoIGAxYC5cbiAgICovXG4gIEBJbnB1dCgpIHBhZ2UgPSAxO1xuXG4gIC8qKlxuICAgKiAgVGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqICBBbiBldmVudCBmaXJlZCB3aGVuIHRoZSBwYWdlIGlzIGNoYW5nZWQuIFdpbGwgZmlyZSBvbmx5IGlmIGNvbGxlY3Rpb24gc2l6ZSBpcyBzZXQgYW5kIGFsbCB2YWx1ZXMgYXJlIHZhbGlkLlxuICAgKlxuICAgKiAgRXZlbnQgcGF5bG9hZCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBuZXdseSBzZWxlY3RlZCBwYWdlLlxuICAgKlxuICAgKiAgUGFnZSBudW1iZXJzIHN0YXJ0IHdpdGggYDFgLlxuICAgKi9cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4odHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBwYWdpbmF0aW9uIGRpc3BsYXkgc2l6ZS5cbiAgICpcbiAgICogQm9vdHN0cmFwIGN1cnJlbnRseSBzdXBwb3J0cyBzbWFsbCBhbmQgbGFyZ2Ugc2l6ZXMuXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ2xnJztcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IE5nYlBhZ2luYXRpb25Db25maWcpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gY29uZmlnLmRpc2FibGVkO1xuICAgIHRoaXMuYm91bmRhcnlMaW5rcyA9IGNvbmZpZy5ib3VuZGFyeUxpbmtzO1xuICAgIHRoaXMuZGlyZWN0aW9uTGlua3MgPSBjb25maWcuZGlyZWN0aW9uTGlua3M7XG4gICAgdGhpcy5lbGxpcHNlcyA9IGNvbmZpZy5lbGxpcHNlcztcbiAgICB0aGlzLm1heFNpemUgPSBjb25maWcubWF4U2l6ZTtcbiAgICB0aGlzLnBhZ2VTaXplID0gY29uZmlnLnBhZ2VTaXplO1xuICAgIHRoaXMucm90YXRlID0gY29uZmlnLnJvdGF0ZTtcbiAgICB0aGlzLnNpemUgPSBjb25maWcuc2l6ZTtcbiAgfVxuXG4gIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5wYWdlID4gMTsgfVxuXG4gIGhhc05leHQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnBhZ2UgPCB0aGlzLnBhZ2VDb3VudDsgfVxuXG4gIG5leHREaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmhhc05leHQoKSB8fCB0aGlzLmRpc2FibGVkOyB9XG5cbiAgcHJldmlvdXNEaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLmhhc1ByZXZpb3VzKCkgfHwgdGhpcy5kaXNhYmxlZDsgfVxuXG4gIHNlbGVjdFBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7IHRoaXMuX3VwZGF0ZVBhZ2VzKHBhZ2VOdW1iZXIpOyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQgeyB0aGlzLl91cGRhdGVQYWdlcyh0aGlzLnBhZ2UpOyB9XG5cbiAgaXNFbGxpcHNpcyhwYWdlTnVtYmVyKTogYm9vbGVhbiB7IHJldHVybiBwYWdlTnVtYmVyID09PSAtMTsgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIGVsbGlwc2VzIGFuZCBmaXJzdC9sYXN0IHBhZ2UgbnVtYmVyIHRvIHRoZSBkaXNwbGF5ZWQgcGFnZXNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5RWxsaXBzZXMoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5lbGxpcHNlcykge1xuICAgICAgaWYgKHN0YXJ0ID4gMCkge1xuICAgICAgICBpZiAoc3RhcnQgPiAxKSB7XG4gICAgICAgICAgdGhpcy5wYWdlcy51bnNoaWZ0KC0xKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VzLnVuc2hpZnQoMSk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kIDwgdGhpcy5wYWdlQ291bnQpIHtcbiAgICAgICAgaWYgKGVuZCA8ICh0aGlzLnBhZ2VDb3VudCAtIDEpKSB7XG4gICAgICAgICAgdGhpcy5wYWdlcy5wdXNoKC0xKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VzLnB1c2godGhpcy5wYWdlQ291bnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSb3RhdGVzIHBhZ2UgbnVtYmVycyBiYXNlZCBvbiBtYXhTaXplIGl0ZW1zIHZpc2libGUuXG4gICAqIEN1cnJlbnRseSBzZWxlY3RlZCBwYWdlIHN0YXlzIGluIHRoZSBtaWRkbGU6XG4gICAqXG4gICAqIEV4LiBmb3Igc2VsZWN0ZWQgcGFnZSA9IDY6XG4gICAqIFs1LCo2Kiw3XSBmb3IgbWF4U2l6ZSA9IDNcbiAgICogWzQsNSwqNiosN10gZm9yIG1heFNpemUgPSA0XG4gICAqL1xuICBwcml2YXRlIF9hcHBseVJvdGF0aW9uKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGxldCBzdGFydCA9IDA7XG4gICAgbGV0IGVuZCA9IHRoaXMucGFnZUNvdW50O1xuICAgIGxldCBsZWZ0T2Zmc2V0ID0gTWF0aC5mbG9vcih0aGlzLm1heFNpemUgLyAyKTtcbiAgICBsZXQgcmlnaHRPZmZzZXQgPSB0aGlzLm1heFNpemUgJSAyID09PSAwID8gbGVmdE9mZnNldCAtIDEgOiBsZWZ0T2Zmc2V0O1xuXG4gICAgaWYgKHRoaXMucGFnZSA8PSBsZWZ0T2Zmc2V0KSB7XG4gICAgICAvLyB2ZXJ5IGJlZ2lubmluZywgbm8gcm90YXRpb24gLT4gWzAuLm1heFNpemVdXG4gICAgICBlbmQgPSB0aGlzLm1heFNpemU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhZ2VDb3VudCAtIHRoaXMucGFnZSA8IGxlZnRPZmZzZXQpIHtcbiAgICAgIC8vIHZlcnkgZW5kLCBubyByb3RhdGlvbiAtPiBbbGVuLW1heFNpemUuLmxlbl1cbiAgICAgIHN0YXJ0ID0gdGhpcy5wYWdlQ291bnQgLSB0aGlzLm1heFNpemU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJvdGF0ZVxuICAgICAgc3RhcnQgPSB0aGlzLnBhZ2UgLSBsZWZ0T2Zmc2V0IC0gMTtcbiAgICAgIGVuZCA9IHRoaXMucGFnZSArIHJpZ2h0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiBbc3RhcnQsIGVuZF07XG4gIH1cblxuICAvKipcbiAgICogUGFnaW5hdGVzIHBhZ2UgbnVtYmVycyBiYXNlZCBvbiBtYXhTaXplIGl0ZW1zIHBlciBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlQYWdpbmF0aW9uKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGxldCBwYWdlID0gTWF0aC5jZWlsKHRoaXMucGFnZSAvIHRoaXMubWF4U2l6ZSkgLSAxO1xuICAgIGxldCBzdGFydCA9IHBhZ2UgKiB0aGlzLm1heFNpemU7XG4gICAgbGV0IGVuZCA9IHN0YXJ0ICsgdGhpcy5tYXhTaXplO1xuXG4gICAgcmV0dXJuIFtzdGFydCwgZW5kXTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFBhZ2VJblJhbmdlKG5ld1BhZ2VObykge1xuICAgIGNvbnN0IHByZXZQYWdlTm8gPSB0aGlzLnBhZ2U7XG4gICAgdGhpcy5wYWdlID0gZ2V0VmFsdWVJblJhbmdlKG5ld1BhZ2VObywgdGhpcy5wYWdlQ291bnQsIDEpO1xuXG4gICAgaWYgKHRoaXMucGFnZSAhPT0gcHJldlBhZ2VObyAmJiBpc051bWJlcih0aGlzLmNvbGxlY3Rpb25TaXplKSkge1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVQYWdlcyhuZXdQYWdlOiBudW1iZXIpIHtcbiAgICB0aGlzLnBhZ2VDb3VudCA9IE1hdGguY2VpbCh0aGlzLmNvbGxlY3Rpb25TaXplIC8gdGhpcy5wYWdlU2l6ZSk7XG5cbiAgICBpZiAoIWlzTnVtYmVyKHRoaXMucGFnZUNvdW50KSkge1xuICAgICAgdGhpcy5wYWdlQ291bnQgPSAwO1xuICAgIH1cblxuICAgIC8vIGZpbGwtaW4gbW9kZWwgbmVlZGVkIHRvIHJlbmRlciBwYWdlc1xuICAgIHRoaXMucGFnZXMubGVuZ3RoID0gMDtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLnBhZ2VDb3VudDsgaSsrKSB7XG4gICAgICB0aGlzLnBhZ2VzLnB1c2goaSk7XG4gICAgfVxuXG4gICAgLy8gc2V0IHBhZ2Ugd2l0aGluIDEuLm1heCByYW5nZVxuICAgIHRoaXMuX3NldFBhZ2VJblJhbmdlKG5ld1BhZ2UpO1xuXG4gICAgLy8gYXBwbHkgbWF4U2l6ZSBpZiBuZWNlc3NhcnlcbiAgICBpZiAodGhpcy5tYXhTaXplID4gMCAmJiB0aGlzLnBhZ2VDb3VudCA+IHRoaXMubWF4U2l6ZSkge1xuICAgICAgbGV0IHN0YXJ0ID0gMDtcbiAgICAgIGxldCBlbmQgPSB0aGlzLnBhZ2VDb3VudDtcblxuICAgICAgLy8gZWl0aGVyIHBhZ2luYXRpbmcgb3Igcm90YXRpbmcgcGFnZSBudW1iZXJzXG4gICAgICBpZiAodGhpcy5yb3RhdGUpIHtcbiAgICAgICAgW3N0YXJ0LCBlbmRdID0gdGhpcy5fYXBwbHlSb3RhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW3N0YXJ0LCBlbmRdID0gdGhpcy5fYXBwbHlQYWdpbmF0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucGFnZXMgPSB0aGlzLnBhZ2VzLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgICAvLyBhZGRpbmcgZWxsaXBzZXNcbiAgICAgIHRoaXMuX2FwcGx5RWxsaXBzZXMoc3RhcnQsIGVuZCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1xuICBOZ2JQYWdpbmF0aW9uLFxuICBOZ2JQYWdpbmF0aW9uRWxsaXBzaXMsXG4gIE5nYlBhZ2luYXRpb25GaXJzdCxcbiAgTmdiUGFnaW5hdGlvbkxhc3QsXG4gIE5nYlBhZ2luYXRpb25OZXh0LFxuICBOZ2JQYWdpbmF0aW9uTnVtYmVyLFxuICBOZ2JQYWdpbmF0aW9uUHJldmlvdXNcbn0gZnJvbSAnLi9wYWdpbmF0aW9uJztcblxuZXhwb3J0IHtcbiAgTmdiUGFnaW5hdGlvbixcbiAgTmdiUGFnaW5hdGlvbkVsbGlwc2lzLFxuICBOZ2JQYWdpbmF0aW9uRmlyc3QsXG4gIE5nYlBhZ2luYXRpb25MYXN0LFxuICBOZ2JQYWdpbmF0aW9uTmV4dCxcbiAgTmdiUGFnaW5hdGlvbk51bWJlcixcbiAgTmdiUGFnaW5hdGlvblByZXZpb3VzXG59IGZyb20gJy4vcGFnaW5hdGlvbic7XG5leHBvcnQge05nYlBhZ2luYXRpb25Db25maWd9IGZyb20gJy4vcGFnaW5hdGlvbi1jb25maWcnO1xuXG5jb25zdCBESVJFQ1RJVkVTID0gW1xuICBOZ2JQYWdpbmF0aW9uLCBOZ2JQYWdpbmF0aW9uRWxsaXBzaXMsIE5nYlBhZ2luYXRpb25GaXJzdCwgTmdiUGFnaW5hdGlvbkxhc3QsIE5nYlBhZ2luYXRpb25OZXh0LCBOZ2JQYWdpbmF0aW9uTnVtYmVyLFxuICBOZ2JQYWdpbmF0aW9uUHJldmlvdXNcbl07XG5cbkBOZ01vZHVsZSh7ZGVjbGFyYXRpb25zOiBESVJFQ1RJVkVTLCBleHBvcnRzOiBESVJFQ1RJVkVTLCBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXX0pXG5leHBvcnQgY2xhc3MgTmdiUGFnaW5hdGlvbk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JQYWdpbmF0aW9uTW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtPYnNlcnZhYmxlLCBtZXJnZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3NoYXJlLCBmaWx0ZXIsIGRlbGF5LCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGNsYXNzIFRyaWdnZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3Blbjogc3RyaW5nLCBwdWJsaWMgY2xvc2U/OiBzdHJpbmcpIHtcbiAgICBpZiAoIWNsb3NlKSB7XG4gICAgICB0aGlzLmNsb3NlID0gb3BlbjtcbiAgICB9XG4gIH1cblxuICBpc01hbnVhbCgpIHsgcmV0dXJuIHRoaXMub3BlbiA9PT0gJ21hbnVhbCcgfHwgdGhpcy5jbG9zZSA9PT0gJ21hbnVhbCc7IH1cbn1cblxuY29uc3QgREVGQVVMVF9BTElBU0VTID0ge1xuICAnaG92ZXInOiBbJ21vdXNlZW50ZXInLCAnbW91c2VsZWF2ZSddLFxuICAnZm9jdXMnOiBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyaWdnZXJzKHRyaWdnZXJzOiBzdHJpbmcsIGFsaWFzZXMgPSBERUZBVUxUX0FMSUFTRVMpOiBUcmlnZ2VyW10ge1xuICBjb25zdCB0cmltbWVkVHJpZ2dlcnMgPSAodHJpZ2dlcnMgfHwgJycpLnRyaW0oKTtcblxuICBpZiAodHJpbW1lZFRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gdHJpbW1lZFRyaWdnZXJzLnNwbGl0KC9cXHMrLykubWFwKHRyaWdnZXIgPT4gdHJpZ2dlci5zcGxpdCgnOicpKS5tYXAoKHRyaWdnZXJQYWlyKSA9PiB7XG4gICAgbGV0IGFsaWFzID0gYWxpYXNlc1t0cmlnZ2VyUGFpclswXV0gfHwgdHJpZ2dlclBhaXI7XG4gICAgcmV0dXJuIG5ldyBUcmlnZ2VyKGFsaWFzWzBdLCBhbGlhc1sxXSk7XG4gIH0pO1xuXG4gIGNvbnN0IG1hbnVhbFRyaWdnZXJzID0gcGFyc2VkVHJpZ2dlcnMuZmlsdGVyKHRyaWdnZXJQYWlyID0+IHRyaWdnZXJQYWlyLmlzTWFudWFsKCkpO1xuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgJ1RyaWdnZXJzIHBhcnNlIGVycm9yOiBvbmx5IG9uZSBtYW51YWwgdHJpZ2dlciBpcyBhbGxvd2VkJztcbiAgfVxuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93ICdUcmlnZ2VycyBwYXJzZSBlcnJvcjogbWFudWFsIHRyaWdnZXIgY2FuXFwndCBiZSBtaXhlZCB3aXRoIG90aGVyIHRyaWdnZXJzJztcbiAgfVxuXG4gIHJldHVybiBwYXJzZWRUcmlnZ2Vycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVUcmlnZ2VycyhyZW5kZXJlcjogYW55LCBuYXRpdmVFbGVtZW50OiBhbnksIHRyaWdnZXJzOiBUcmlnZ2VyW10sIGlzT3BlbmVkRm46ICgpID0+IGJvb2xlYW4pIHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KHN1YnNjcmliZXIgPT4ge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IFtdO1xuICAgIGNvbnN0IG9wZW5GbiA9ICgpID0+IHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICBjb25zdCBjbG9zZUZuID0gKCkgPT4gc3Vic2NyaWJlci5uZXh0KGZhbHNlKTtcbiAgICBjb25zdCB0b2dnbGVGbiA9ICgpID0+IHN1YnNjcmliZXIubmV4dCghaXNPcGVuZWRGbigpKTtcblxuICAgIHRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXI6IFRyaWdnZXIpID0+IHtcbiAgICAgIGlmICh0cmlnZ2VyLm9wZW4gPT09IHRyaWdnZXIuY2xvc2UpIHtcbiAgICAgICAgbGlzdGVuZXJzLnB1c2gocmVuZGVyZXIubGlzdGVuKG5hdGl2ZUVsZW1lbnQsIHRyaWdnZXIub3BlbiwgdG9nZ2xlRm4pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgICAgICAgcmVuZGVyZXIubGlzdGVuKG5hdGl2ZUVsZW1lbnQsIHRyaWdnZXIub3Blbiwgb3BlbkZuKSxcbiAgICAgICAgICAgIHJlbmRlcmVyLmxpc3RlbihuYXRpdmVFbGVtZW50LCB0cmlnZ2VyLmNsb3NlLCBjbG9zZUZuKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4geyBsaXN0ZW5lcnMuZm9yRWFjaCh1bnN1YnNjcmliZUZuID0+IHVuc3Vic2NyaWJlRm4oKSk7IH07XG4gIH0pO1xufVxuXG5jb25zdCBkZWxheU9yTm9vcCA9IDxUPih0aW1lOiBudW1iZXIpID0+IHRpbWUgPiAwID8gZGVsYXk8VD4odGltZSkgOiAoYTogT2JzZXJ2YWJsZTxUPikgPT4gYTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyaWdnZXJEZWxheShvcGVuRGVsYXk6IG51bWJlciwgY2xvc2VEZWxheTogbnVtYmVyLCBpc09wZW5lZEZuOiAoKSA9PiBib29sZWFuKSB7XG4gIHJldHVybiAoaW5wdXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+KSA9PiB7XG4gICAgbGV0IHBlbmRpbmcgPSBudWxsO1xuICAgIGNvbnN0IGZpbHRlcmVkSW5wdXQkID0gaW5wdXQkLnBpcGUoXG4gICAgICAgIG1hcChvcGVuID0+ICh7b3Blbn0pKSwgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50bHlPcGVuID0gaXNPcGVuZWRGbigpO1xuICAgICAgICAgIGlmIChjdXJyZW50bHlPcGVuICE9PSBldmVudC5vcGVuICYmICghcGVuZGluZyB8fCBwZW5kaW5nLm9wZW4gPT09IGN1cnJlbnRseU9wZW4pKSB7XG4gICAgICAgICAgICBwZW5kaW5nID0gZXZlbnQ7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBlbmRpbmcgJiYgcGVuZGluZy5vcGVuICE9PSBldmVudC5vcGVuKSB7XG4gICAgICAgICAgICBwZW5kaW5nID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmUoKSk7XG4gICAgY29uc3QgZGVsYXllZE9wZW4kID0gZmlsdGVyZWRJbnB1dCQucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQub3BlbiksIGRlbGF5T3JOb29wKG9wZW5EZWxheSkpO1xuICAgIGNvbnN0IGRlbGF5ZWRDbG9zZSQgPSBmaWx0ZXJlZElucHV0JC5waXBlKGZpbHRlcihldmVudCA9PiAhZXZlbnQub3BlbiksIGRlbGF5T3JOb29wKGNsb3NlRGVsYXkpKTtcbiAgICByZXR1cm4gbWVyZ2UoZGVsYXllZE9wZW4kLCBkZWxheWVkQ2xvc2UkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgIGlmIChldmVudCA9PT0gcGVuZGluZykge1xuICAgICAgICAgICAgICAgIHBlbmRpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5vcGVuICE9PSBpc09wZW5lZEZuKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQub3BlbikpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuVG9UcmlnZ2VycyhcbiAgICByZW5kZXJlcjogYW55LCBuYXRpdmVFbGVtZW50OiBhbnksIHRyaWdnZXJzOiBzdHJpbmcsIGlzT3BlbmVkRm46ICgpID0+IGJvb2xlYW4sIG9wZW5GbiwgY2xvc2VGbiwgb3BlbkRlbGF5ID0gMCxcbiAgICBjbG9zZURlbGF5ID0gMCkge1xuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHBhcnNlVHJpZ2dlcnModHJpZ2dlcnMpO1xuXG4gIGlmIChwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnNbMF0uaXNNYW51YWwoKSkge1xuICAgIHJldHVybiAoKSA9PiB7fTtcbiAgfVxuXG4gIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmVUcmlnZ2VycyhyZW5kZXJlciwgbmF0aXZlRWxlbWVudCwgcGFyc2VkVHJpZ2dlcnMsIGlzT3BlbmVkRm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0cmlnZ2VyRGVsYXkob3BlbkRlbGF5LCBjbG9zZURlbGF5LCBpc09wZW5lZEZuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUob3BlbiA9PiAob3BlbiA/IG9wZW5GbigpIDogY2xvc2VGbigpKSk7XG5cbiAgcmV0dXJuICgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhY2VtZW50QXJyYXl9IGZyb20gJy4uL3V0aWwvcG9zaXRpb25pbmcnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JQb3BvdmVyYF0oIy9jb21wb25lbnRzL3BvcG92ZXIvYXBpI05nYlBvcG92ZXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgcG9wb3ZlcnMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYlBvcG92ZXJDb25maWcge1xuICBhdXRvQ2xvc2U6IGJvb2xlYW4gfCAnaW5zaWRlJyB8ICdvdXRzaWRlJyA9IHRydWU7XG4gIHBsYWNlbWVudDogUGxhY2VtZW50QXJyYXkgPSAnYXV0byc7XG4gIHRyaWdnZXJzID0gJ2NsaWNrJztcbiAgY29udGFpbmVyOiBzdHJpbmc7XG4gIGRpc2FibGVQb3BvdmVyID0gZmFsc2U7XG4gIHBvcG92ZXJDbGFzczogc3RyaW5nO1xuICBvcGVuRGVsYXkgPSAwO1xuICBjbG9zZURlbGF5ID0gMDtcbn1cbiIsImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgTmdab25lLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFwcGxpY2F0aW9uUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtsaXN0ZW5Ub1RyaWdnZXJzfSBmcm9tICcuLi91dGlsL3RyaWdnZXJzJztcbmltcG9ydCB7bmdiQXV0b0Nsb3NlfSBmcm9tICcuLi91dGlsL2F1dG9jbG9zZSc7XG5pbXBvcnQge3Bvc2l0aW9uRWxlbWVudHMsIFBsYWNlbWVudEFycmF5fSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcbmltcG9ydCB7UG9wdXBTZXJ2aWNlfSBmcm9tICcuLi91dGlsL3BvcHVwJztcblxuaW1wb3J0IHtOZ2JQb3BvdmVyQ29uZmlnfSBmcm9tICcuL3BvcG92ZXItY29uZmlnJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1wb3BvdmVyLXdpbmRvdycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7J1tjbGFzc10nOiAnXCJwb3BvdmVyXCIgKyAocG9wb3ZlckNsYXNzID8gXCIgXCIgKyBwb3BvdmVyQ2xhc3MgOiBcIlwiKScsICdyb2xlJzogJ3Rvb2x0aXAnLCAnW2lkXSc6ICdpZCd9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhcnJvd1wiPjwvZGl2PlxuICAgIDxoMyBjbGFzcz1cInBvcG92ZXItaGVhZGVyXCIgKm5nSWY9XCJ0aXRsZSAhPSBudWxsXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZVRpdGxlPnt7dGl0bGV9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXNUaXRsZVRlbXBsYXRlKCkgPyB0aXRsZSA6IHNpbXBsZVRpdGxlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImNvbnRleHRcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInBvcG92ZXItYm9keVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gLFxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JQb3BvdmVyV2luZG93IHtcbiAgQElucHV0KCkgdGl0bGU6IHVuZGVmaW5lZCB8IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBvcG92ZXJDbGFzczogc3RyaW5nO1xuICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XG5cbiAgaXNUaXRsZVRlbXBsYXRlKCkgeyByZXR1cm4gdGhpcy50aXRsZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmOyB9XG59XG5cbi8qKlxuICogQSBsaWdodHdlaWdodCBhbmQgZXh0ZW5zaWJsZSBkaXJlY3RpdmUgZm9yIGZhbmN5IHBvcG92ZXIgY3JlYXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nYlBvcG92ZXJdJywgZXhwb3J0QXM6ICduZ2JQb3BvdmVyJ30pXG5leHBvcnQgY2xhc3MgTmdiUG9wb3ZlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGNsb3NlZCBvbiBgRXNjYXBlYCBrZXkgYW5kIGluc2lkZS9vdXRzaWRlIGNsaWNrczpcbiAgICpcbiAgICogKiBgdHJ1ZWAgLSBjbG9zZXMgb24gYm90aCBvdXRzaWRlIGFuZCBpbnNpZGUgY2xpY2tzIGFzIHdlbGwgYXMgYEVzY2FwZWAgcHJlc3Nlc1xuICAgKiAqIGBmYWxzZWAgLSBkaXNhYmxlcyB0aGUgYXV0b0Nsb3NlIGZlYXR1cmUgKE5COiB0cmlnZ2VycyBzdGlsbCBhcHBseSlcbiAgICogKiBgXCJpbnNpZGVcImAgLSBjbG9zZXMgb24gaW5zaWRlIGNsaWNrcyBhcyB3ZWxsIGFzIEVzY2FwZSBwcmVzc2VzXG4gICAqICogYFwib3V0c2lkZVwiYCAtIGNsb3NlcyBvbiBvdXRzaWRlIGNsaWNrcyAoc29tZXRpbWVzIGFsc28gYWNoaWV2YWJsZSB0aHJvdWdoIHRyaWdnZXJzKVxuICAgKiBhcyB3ZWxsIGFzIGBFc2NhcGVgIHByZXNzZXNcbiAgICpcbiAgICogQHNpbmNlIDMuMC4wXG4gICAqL1xuICBASW5wdXQoKSBhdXRvQ2xvc2U6IGJvb2xlYW4gfCAnaW5zaWRlJyB8ICdvdXRzaWRlJztcblxuICAvKipcbiAgICogVGhlIHN0cmluZyBjb250ZW50IG9yIGEgYFRlbXBsYXRlUmVmYCBmb3IgdGhlIGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwb3BvdmVyLlxuICAgKlxuICAgKiBJZiB0aGUgdGl0bGUgYW5kIHRoZSBjb250ZW50IGFyZSBlbXB0eSwgdGhlIHBvcG92ZXIgd29uJ3Qgb3Blbi5cbiAgICovXG4gIEBJbnB1dCgpIG5nYlBvcG92ZXI6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgcG9wb3Zlci5cbiAgICpcbiAgICogSWYgdGhlIHRpdGxlIGFuZCB0aGUgY29udGVudCBhcmUgZW1wdHksIHRoZSBwb3BvdmVyIHdvbid0IG9wZW4uXG4gICAqL1xuICBASW5wdXQoKSBwb3BvdmVyVGl0bGU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmZXJyZWQgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLlxuICAgKlxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBcInRvcFwiYCwgYFwidG9wLWxlZnRcImAsIGBcInRvcC1yaWdodFwiYCwgYFwiYm90dG9tXCJgLCBgXCJib3R0b20tbGVmdFwiYCxcbiAgICogYFwiYm90dG9tLXJpZ2h0XCJgLCBgXCJsZWZ0XCJgLCBgXCJsZWZ0LXRvcFwiYCwgYFwibGVmdC1ib3R0b21cImAsIGBcInJpZ2h0XCJgLCBgXCJyaWdodC10b3BcImAsXG4gICAqIGBcInJpZ2h0LWJvdHRvbVwiYFxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgYSBzdHJpbmcgd2l0aCBzcGFjZSBzZXBhcmF0ZWQgcG9zc2libGUgdmFsdWVzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBvcmRlciBvZiBwcmVmZXJlbmNlIGlzIGBcImF1dG9cImAgKHNhbWUgYXMgdGhlIHNlcXVlbmNlIGFib3ZlKS5cbiAgICpcbiAgICogUGxlYXNlIHNlZSB0aGUgW3Bvc2l0aW9uaW5nIG92ZXJ2aWV3XSgjL3Bvc2l0aW9uaW5nKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGV2ZW50cyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBTdXBwb3J0cyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGV2ZW50IG5hbWVzLlxuICAgKiBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgW3RyaWdnZXJzIGRlbW9dKCMvY29tcG9uZW50cy9wb3BvdmVyL2V4YW1wbGVzI3RyaWdnZXJzKS5cbiAgICovXG4gIEBJbnB1dCgpIHRyaWdnZXJzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc2VsZWN0b3Igc3BlY2lmeWluZyB0aGUgZWxlbWVudCB0aGUgcG9wb3ZlciBzaG91bGQgYmUgYXBwZW5kZWQgdG8uXG4gICAqXG4gICAqIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGBib2R5YC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHBvcG92ZXIgaXMgZGlzYWJsZWQgYW5kIHdvbid0IGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogQHNpbmNlIDEuMS4wXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlUG9wb3ZlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgY2xhc3MgYXBwbGllZCB0byB0aGUgcG9wb3ZlciB3aW5kb3cgZWxlbWVudC5cbiAgICpcbiAgICogQHNpbmNlIDIuMi4wXG4gICAqL1xuICBASW5wdXQoKSBwb3BvdmVyQ2xhc3M6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wZW5pbmcgZGVsYXkgaW4gbXMuIFdvcmtzIG9ubHkgZm9yIFwibm9uLW1hbnVhbFwiIG9wZW5pbmcgdHJpZ2dlcnMgZGVmaW5lZCBieSB0aGUgYHRyaWdnZXJzYCBpbnB1dC5cbiAgICpcbiAgICogQHNpbmNlIDQuMS4wXG4gICAqL1xuICBASW5wdXQoKSBvcGVuRGVsYXk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGNsb3NpbmcgZGVsYXkgaW4gbXMuIFdvcmtzIG9ubHkgZm9yIFwibm9uLW1hbnVhbFwiIG9wZW5pbmcgdHJpZ2dlcnMgZGVmaW5lZCBieSB0aGUgYHRyaWdnZXJzYCBpbnB1dC5cbiAgICpcbiAgICogQHNpbmNlIDQuMS4wXG4gICAqL1xuICBASW5wdXQoKSBjbG9zZURlbGF5OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBzaG93bi4gQ29udGFpbnMgbm8gcGF5bG9hZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzaG93biA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIGhpZGRlbi4gQ29udGFpbnMgbm8gcGF5bG9hZC5cbiAgICovXG4gIEBPdXRwdXQoKSBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfbmdiUG9wb3ZlcldpbmRvd0lkID0gYG5nYi1wb3BvdmVyLSR7bmV4dElkKyt9YDtcbiAgcHJpdmF0ZSBfcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2U8TmdiUG9wb3ZlcldpbmRvdz47XG4gIHByaXZhdGUgX3dpbmRvd1JlZjogQ29tcG9uZW50UmVmPE5nYlBvcG92ZXJXaW5kb3c+O1xuICBwcml2YXRlIF91bnJlZ2lzdGVyTGlzdGVuZXJzRm47XG4gIHByaXZhdGUgX3pvbmVTdWJzY3JpcHRpb246IGFueTtcbiAgcHJpdmF0ZSBfaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlUG9wb3Zlcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5uZ2JQb3BvdmVyICYmICF0aGlzLnBvcG92ZXJUaXRsZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBjb25maWc6IE5nYlBvcG92ZXJDb25maWcsXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgcHJpdmF0ZSBfYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKSB7XG4gICAgdGhpcy5hdXRvQ2xvc2UgPSBjb25maWcuYXV0b0Nsb3NlO1xuICAgIHRoaXMucGxhY2VtZW50ID0gY29uZmlnLnBsYWNlbWVudDtcbiAgICB0aGlzLnRyaWdnZXJzID0gY29uZmlnLnRyaWdnZXJzO1xuICAgIHRoaXMuY29udGFpbmVyID0gY29uZmlnLmNvbnRhaW5lcjtcbiAgICB0aGlzLmRpc2FibGVQb3BvdmVyID0gY29uZmlnLmRpc2FibGVQb3BvdmVyO1xuICAgIHRoaXMucG9wb3ZlckNsYXNzID0gY29uZmlnLnBvcG92ZXJDbGFzcztcbiAgICB0aGlzLm9wZW5EZWxheSA9IGNvbmZpZy5vcGVuRGVsYXk7XG4gICAgdGhpcy5jbG9zZURlbGF5ID0gY29uZmlnLmNsb3NlRGVsYXk7XG4gICAgdGhpcy5fcG9wdXBTZXJ2aWNlID0gbmV3IFBvcHVwU2VydmljZTxOZ2JQb3BvdmVyV2luZG93PihcbiAgICAgICAgTmdiUG9wb3ZlcldpbmRvdywgaW5qZWN0b3IsIHZpZXdDb250YWluZXJSZWYsIF9yZW5kZXJlciwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBfYXBwbGljYXRpb25SZWYpO1xuXG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbiA9IF9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgICAgcG9zaXRpb25FbGVtZW50cyhcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fd2luZG93UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsIHRoaXMucGxhY2VtZW50LFxuICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPT09ICdib2R5JywgJ2JzLXBvcG92ZXInKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgcG9wb3Zlci5cbiAgICpcbiAgICogVGhpcyBpcyBjb25zaWRlcmVkIHRvIGJlIGEgXCJtYW51YWxcIiB0cmlnZ2VyaW5nLlxuICAgKiBUaGUgYGNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIHZhbHVlIHRvIGJlIGluamVjdGVkIGludG8gdGhlIHBvcG92ZXIgdGVtcGxhdGUgd2hlbiBpdCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgb3Blbihjb250ZXh0PzogYW55KSB7XG4gICAgaWYgKCF0aGlzLl93aW5kb3dSZWYgJiYgIXRoaXMuX2lzRGlzYWJsZWQoKSkge1xuICAgICAgdGhpcy5fd2luZG93UmVmID0gdGhpcy5fcG9wdXBTZXJ2aWNlLm9wZW4odGhpcy5uZ2JQb3BvdmVyLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS50aXRsZSA9IHRoaXMucG9wb3ZlclRpdGxlO1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnBvcG92ZXJDbGFzcyA9IHRoaXMucG9wb3ZlckNsYXNzO1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmlkID0gdGhpcy5fbmdiUG9wb3ZlcldpbmRvd0lkO1xuXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScsIHRoaXMuX25nYlBvcG92ZXJXaW5kb3dJZCk7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lciA9PT0gJ2JvZHknKSB7XG4gICAgICAgIHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXIpLmFwcGVuZENoaWxkKHRoaXMuX3dpbmRvd1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gV2UgbmVlZCB0byBkZXRlY3QgY2hhbmdlcywgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoZXJlIC5vcGVuKCkgbWlnaHQgYmUgY2FsbGVkIGZyb20uXG4gICAgICAvLyBFeC4gb3BlbmluZyBwb3BvdmVyIGZyb20gb25lIG9mIGxpZmVjeWNsZSBob29rcyB0aGF0IHJ1biBhZnRlciB0aGUgQ0RcbiAgICAgIC8vIChzYXkgZnJvbSBuZ0FmdGVyVmlld0luaXQpIHdpbGwgcmVzdWx0IGluICdFeHByZXNzaW9uSGFzQ2hhbmdlZCcgZXhjZXB0aW9uXG4gICAgICB0aGlzLl93aW5kb3dSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBXZSBuZWVkIHRvIG1hcmsgZm9yIGNoZWNrLCBiZWNhdXNlIHBvcG92ZXIgd29uJ3Qgd29yayBpbnNpZGUgdGhlIE9uUHVzaCBjb21wb25lbnQuXG4gICAgICAvLyBFeC4gd2hlbiB3ZSB1c2UgZXhwcmVzc2lvbiBsaWtlIGB7eyBwb3BvdmVyLmlzT3BlbigpIDogJ29wZW5lZCcgOiAnY2xvc2VkJyB9fWBcbiAgICAgIC8vIGluc2lkZSB0aGUgdGVtcGxhdGUgb2YgYW4gT25QdXNoIGNvbXBvbmVudCBhbmQgd2UgY2hhbmdlIHRoZSBwb3BvdmVyIGZyb21cbiAgICAgIC8vIG9wZW4gLT4gY2xvc2VkLCB0aGUgZXhwcmVzc2lvbiBpbiBxdWVzdGlvbiB3b24ndCBiZSB1cGRhdGVkIHVubGVzcyB3ZSBleHBsaWNpdGx5XG4gICAgICAvLyBtYXJrIHRoZSBwYXJlbnQgY29tcG9uZW50IHRvIGJlIGNoZWNrZWQuXG4gICAgICB0aGlzLl93aW5kb3dSZWYuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgIG5nYkF1dG9DbG9zZShcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUsIHRoaXMuX2RvY3VtZW50LCB0aGlzLmF1dG9DbG9zZSwgKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmhpZGRlbixcbiAgICAgICAgICBbdGhpcy5fd2luZG93UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnRdKTtcbiAgICAgIHRoaXMuc2hvd24uZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHBvcG92ZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgY29uc2lkZXJlZCB0byBiZSBhIFwibWFudWFsXCIgdHJpZ2dlcmluZyBvZiB0aGUgcG9wb3Zlci5cbiAgICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgICB0aGlzLl9wb3B1cFNlcnZpY2UuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZiA9IG51bGw7XG4gICAgICB0aGlzLmhpZGRlbi5lbWl0KCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgcG9wb3Zlci5cbiAgICpcbiAgICogVGhpcyBpcyBjb25zaWRlcmVkIHRvIGJlIGEgXCJtYW51YWxcIiB0cmlnZ2VyaW5nIG9mIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgLCBpZiB0aGUgcG9wb3ZlciBpcyBjdXJyZW50bHkgc2hvd24uXG4gICAqL1xuICBpc09wZW4oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl93aW5kb3dSZWYgIT0gbnVsbDsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3VucmVnaXN0ZXJMaXN0ZW5lcnNGbiA9IGxpc3RlblRvVHJpZ2dlcnMoXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudHJpZ2dlcnMsIHRoaXMuaXNPcGVuLmJpbmQodGhpcyksIHRoaXMub3Blbi5iaW5kKHRoaXMpLFxuICAgICAgICB0aGlzLmNsb3NlLmJpbmQodGhpcyksICt0aGlzLm9wZW5EZWxheSwgK3RoaXMuY2xvc2VEZWxheSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgLy8gY2xvc2UgcG9wb3ZlciBpZiB0aXRsZSBhbmQgY29udGVudCBiZWNvbWUgZW1wdHksIG9yIGRpc2FibGVQb3BvdmVyIHNldCB0byB0cnVlXG4gICAgaWYgKChjaGFuZ2VzWyduZ2JQb3BvdmVyJ10gfHwgY2hhbmdlc1sncG9wb3ZlclRpdGxlJ10gfHwgY2hhbmdlc1snZGlzYWJsZVBvcG92ZXInXSkgJiYgdGhpcy5faXNEaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIC8vIFRoaXMgY2hlY2sgaXMgbmVlZGVkIGFzIGl0IG1pZ2h0IGhhcHBlbiB0aGF0IG5nT25EZXN0cm95IGlzIGNhbGxlZCBiZWZvcmUgbmdPbkluaXRcbiAgICAvLyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL25nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvaXNzdWVzLzIxOTlcbiAgICBpZiAodGhpcy5fdW5yZWdpc3Rlckxpc3RlbmVyc0ZuKSB7XG4gICAgICB0aGlzLl91bnJlZ2lzdGVyTGlzdGVuZXJzRm4oKTtcbiAgICB9XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtOZ2JQb3BvdmVyLCBOZ2JQb3BvdmVyV2luZG93fSBmcm9tICcuL3BvcG92ZXInO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCB7TmdiUG9wb3Zlcn0gZnJvbSAnLi9wb3BvdmVyJztcbmV4cG9ydCB7TmdiUG9wb3ZlckNvbmZpZ30gZnJvbSAnLi9wb3BvdmVyLWNvbmZpZyc7XG5leHBvcnQge1BsYWNlbWVudH0gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05nYlBvcG92ZXIsIE5nYlBvcG92ZXJXaW5kb3ddLFxuICBleHBvcnRzOiBbTmdiUG9wb3Zlcl0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtOZ2JQb3BvdmVyV2luZG93XVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JQb3BvdmVyTW9kdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydGluZyB3aXRoICcuZm9yUm9vdCgpJyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCB5b3UgY2FuIHNpbXBseSBpbXBvcnQgdGhlIG1vZHVsZS5cbiAgICogV2lsbCBiZSByZW1vdmVkIGluIDQuMC4wLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAzLjAuMFxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7IHJldHVybiB7bmdNb2R1bGU6IE5nYlBvcG92ZXJNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JQcm9ncmVzc2JhcmBdKCMvY29tcG9uZW50cy9wcm9ncmVzc2Jhci9hcGkjTmdiUHJvZ3Jlc3NiYXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgcHJvZ3Jlc3MgYmFycyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiUHJvZ3Jlc3NiYXJDb25maWcge1xuICBtYXggPSAxMDA7XG4gIGFuaW1hdGVkID0gZmFsc2U7XG4gIHN0cmlwZWQgPSBmYWxzZTtcbiAgdHlwZTogc3RyaW5nO1xuICBzaG93VmFsdWUgPSBmYWxzZTtcbiAgaGVpZ2h0OiBzdHJpbmc7XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Z2V0VmFsdWVJblJhbmdlfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHtOZ2JQcm9ncmVzc2JhckNvbmZpZ30gZnJvbSAnLi9wcm9ncmVzc2Jhci1jb25maWcnO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgcHJvdmlkZXMgZmVlZGJhY2sgb24gdGhlIHByb2dyZXNzIG9mIGEgd29ya2Zsb3cgb3IgYW4gYWN0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ItcHJvZ3Jlc3NiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhcnt7dHlwZSA/ICcgYmctJyArIHR5cGUgOiAnJ319e3thbmltYXRlZCA/ICcgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkJyA6ICcnfX17e3N0cmlwZWQgP1xuICAgICcgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQnIDogJyd9fVwiIHJvbGU9XCJwcm9ncmVzc2JhclwiIFtzdHlsZS53aWR0aC4lXT1cImdldFBlcmNlbnRWYWx1ZSgpXCJcbiAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cImdldFZhbHVlKClcIiBhcmlhLXZhbHVlbWluPVwiMFwiIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd1ZhbHVlXCIgaTE4bj1cIkBAbmdiLnByb2dyZXNzYmFyLnZhbHVlXCI+e3tnZXRQZXJjZW50VmFsdWUoKX19JTwvc3Bhbj48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2JQcm9ncmVzc2JhciB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW1hbCB2YWx1ZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHByb2dyZXNzYmFyLlxuICAgKi9cbiAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHN0cmlwZXMgb24gdGhlIHByb2dyZXNzYmFyIGFyZSBhbmltYXRlZC5cbiAgICpcbiAgICogVGFrZXMgZWZmZWN0IG9ubHkgZm9yIGJyb3dzZXJzIHN1cHBvcnRpbmcgQ1NTMyBhbmltYXRpb25zLCBhbmQgaWYgYHN0cmlwZWRgIGlzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIGFuaW1hdGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBwcm9ncmVzcyBiYXJzIHdpbGwgYmUgZGlzcGxheWVkIGFzIHN0cmlwZWQuXG4gICAqL1xuICBASW5wdXQoKSBzdHJpcGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjdXJyZW50IHBlcmNlbnRhZ2Ugd2lsbCBiZSBzaG93biBpbiB0aGUgYHh4JWAgZm9ybWF0LlxuICAgKi9cbiAgQElucHV0KCkgc2hvd1ZhbHVlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgcHJvZ3Jlc3MgYmFyLlxuICAgKlxuICAgKiBDdXJyZW50bHkgQm9vdHN0cmFwIHN1cHBvcnRzIGBcInN1Y2Nlc3NcImAsIGBcImluZm9cImAsIGBcIndhcm5pbmdcImAgb3IgYFwiZGFuZ2VyXCJgLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB2YWx1ZSBmb3IgdGhlIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogU2hvdWxkIGJlIGluIHRoZSBgWzAsIG1heF1gIHJhbmdlLlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWUgPSAwO1xuXG4gIC8qKlxuICAgKiBUSGUgaGVpZ2h0IG9mIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAqXG4gICAqIEFjY2VwdHMgYW55IHZhbGlkIENTUyBoZWlnaHQgdmFsdWVzLCBleC4gYFwiMnJlbVwiYFxuICAgKi9cbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBOZ2JQcm9ncmVzc2JhckNvbmZpZykge1xuICAgIHRoaXMubWF4ID0gY29uZmlnLm1heDtcbiAgICB0aGlzLmFuaW1hdGVkID0gY29uZmlnLmFuaW1hdGVkO1xuICAgIHRoaXMuc3RyaXBlZCA9IGNvbmZpZy5zdHJpcGVkO1xuICAgIHRoaXMudHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuc2hvd1ZhbHVlID0gY29uZmlnLnNob3dWYWx1ZTtcbiAgICB0aGlzLmhlaWdodCA9IGNvbmZpZy5oZWlnaHQ7XG4gIH1cblxuICBnZXRWYWx1ZSgpIHsgcmV0dXJuIGdldFZhbHVlSW5SYW5nZSh0aGlzLnZhbHVlLCB0aGlzLm1heCk7IH1cblxuICBnZXRQZXJjZW50VmFsdWUoKSB7IHJldHVybiAxMDAgKiB0aGlzLmdldFZhbHVlKCkgLyB0aGlzLm1heDsgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtOZ2JQcm9ncmVzc2Jhcn0gZnJvbSAnLi9wcm9ncmVzc2Jhcic7XG5cbmV4cG9ydCB7TmdiUHJvZ3Jlc3NiYXJ9IGZyb20gJy4vcHJvZ3Jlc3NiYXInO1xuZXhwb3J0IHtOZ2JQcm9ncmVzc2JhckNvbmZpZ30gZnJvbSAnLi9wcm9ncmVzc2Jhci1jb25maWcnO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogW05nYlByb2dyZXNzYmFyXSwgZXhwb3J0czogW05nYlByb2dyZXNzYmFyXSwgaW1wb3J0czogW0NvbW1vbk1vZHVsZV19KVxuZXhwb3J0IGNsYXNzIE5nYlByb2dyZXNzYmFyTW9kdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydGluZyB3aXRoICcuZm9yUm9vdCgpJyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCB5b3UgY2FuIHNpbXBseSBpbXBvcnQgdGhlIG1vZHVsZS5cbiAgICogV2lsbCBiZSByZW1vdmVkIGluIDQuMC4wLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAzLjAuMFxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7IHJldHVybiB7bmdNb2R1bGU6IE5nYlByb2dyZXNzYmFyTW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBIGNvbmZpZ3VyYXRpb24gc2VydmljZSBmb3IgdGhlIFtgTmdiUmF0aW5nYF0oIy9jb21wb25lbnRzL3JhdGluZy9hcGkjTmdiUmF0aW5nKSBjb21wb25lbnQuXG4gKlxuICogWW91IGNhbiBpbmplY3QgdGhpcyBzZXJ2aWNlLCB0eXBpY2FsbHkgaW4geW91ciByb290IGNvbXBvbmVudCwgYW5kIGN1c3RvbWl6ZSB0aGUgdmFsdWVzIG9mIGl0cyBwcm9wZXJ0aWVzIGluXG4gKiBvcmRlciB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgdGhlIHJhdGluZ3MgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYlJhdGluZ0NvbmZpZyB7XG4gIG1heCA9IDEwO1xuICByZWFkb25seSA9IGZhbHNlO1xuICByZXNldHRhYmxlID0gZmFsc2U7XG59XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ29udGVudENoaWxkLFxuICBmb3J3YXJkUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdiUmF0aW5nQ29uZmlnfSBmcm9tICcuL3JhdGluZy1jb25maWcnO1xuaW1wb3J0IHtnZXRWYWx1ZUluUmFuZ2V9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge0tleX0gZnJvbSAnLi4vdXRpbC9rZXknO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgdGhlIGN1c3RvbSBzdGFyIGRpc3BsYXkgdGVtcGxhdGUgZGVmaW5lZCBpbiB0aGUgYHN0YXJUZW1wbGF0ZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhclRlbXBsYXRlQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgc3RhciBmaWxsIHBlcmNlbnRhZ2UsIGFuIGludGVnZXIgaW4gdGhlIGBbMCwgMTAwXWAgcmFuZ2UuXG4gICAqL1xuICBmaWxsOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGV4IG9mIHRoZSBzdGFyLCBzdGFydHMgd2l0aCBgMGAuXG4gICAqL1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5jb25zdCBOR0JfUkFUSU5HX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiUmF0aW5nKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCBoZWxwcyB2aXN1YWxpc2luZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBhIHN0YXIgcmF0aW5nIGJhci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXJhdGluZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2QtaW5saW5lLWZsZXgnLFxuICAgICd0YWJpbmRleCc6ICcwJyxcbiAgICAncm9sZSc6ICdzbGlkZXInLFxuICAgICdhcmlhLXZhbHVlbWluJzogJzAnLFxuICAgICdbYXR0ci5hcmlhLXZhbHVlbWF4XSc6ICdtYXgnLFxuICAgICdbYXR0ci5hcmlhLXZhbHVlbm93XSc6ICduZXh0UmF0ZScsXG4gICAgJ1thdHRyLmFyaWEtdmFsdWV0ZXh0XSc6ICdhcmlhVmFsdWVUZXh0KCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdyZWFkb25seSA/IHRydWUgOiBudWxsJyxcbiAgICAnKGJsdXIpJzogJ2hhbmRsZUJsdXIoKScsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlEb3duKCRldmVudCknLFxuICAgICcobW91c2VsZWF2ZSknOiAncmVzZXQoKSdcbiAgfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI3QgbGV0LWZpbGw9XCJmaWxsXCI+e3sgZmlsbCA9PT0gMTAwID8gJyYjOTczMzsnIDogJyYjOTczNDsnIH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiY29udGV4dHNcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+KHt7IGluZGV4IDwgbmV4dFJhdGUgPyAnKicgOiAnICcgfX0pPC9zcGFuPlxuICAgICAgPHNwYW4gKG1vdXNlZW50ZXIpPVwiZW50ZXIoaW5kZXggKyAxKVwiIChjbGljayk9XCJoYW5kbGVDbGljayhpbmRleCArIDEpXCIgW3N0eWxlLmN1cnNvcl09XCJyZWFkb25seSB8fCBkaXNhYmxlZCA/ICdkZWZhdWx0JyA6ICdwb2ludGVyJ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RhclRlbXBsYXRlIHx8IHN0YXJUZW1wbGF0ZUZyb21Db250ZW50IHx8IHRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY29udGV4dHNbaW5kZXhdXCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbTkdCX1JBVElOR19WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgTmdiUmF0aW5nIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjb250ZXh0czogU3RhclRlbXBsYXRlQ29udGV4dFtdID0gW107XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIG5leHRSYXRlOiBudW1iZXI7XG5cblxuICAvKipcbiAgICogVGhlIG1heGltYWwgcmF0aW5nIHRoYXQgY2FuIGJlIGdpdmVuLlxuICAgKi9cbiAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHJhdGluZy4gQ291bGQgYmUgYSBkZWNpbWFsIHZhbHVlIGxpa2UgYDMuNzVgLlxuICAgKi9cbiAgQElucHV0KCkgcmF0ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByYXRpbmcgY2FuJ3QgYmUgY2hhbmdlZC5cbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByYXRpbmcgY2FuIGJlIHJlc2V0IHRvIGAwYCBieSBtb3VzZSBjbGlja2luZyBjdXJyZW50bHkgc2V0IHJhdGluZy5cbiAgICovXG4gIEBJbnB1dCgpIHJlc2V0dGFibGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB0byBvdmVycmlkZSB0aGUgd2F5IGVhY2ggc3RhciBpcyBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEFsdGVybmF0aXZlbHkgcHV0IGFuIGA8bmctdGVtcGxhdGU+YCBhcyB0aGUgb25seSBjaGlsZCBvZiB5b3VyIGA8bmdiLXJhdGluZz5gIGVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIHN0YXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8U3RhclRlbXBsYXRlQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHN0YXJUZW1wbGF0ZUZyb21Db250ZW50OiBUZW1wbGF0ZVJlZjxTdGFyVGVtcGxhdGVDb250ZXh0PjtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGlzIGhvdmVyaW5nIG92ZXIgYSBnaXZlbiByYXRpbmcuXG4gICAqXG4gICAqIEV2ZW50IHBheWxvYWQgZXF1YWxzIHRvIHRoZSByYXRpbmcgYmVpbmcgaG92ZXJlZCBvdmVyLlxuICAgKi9cbiAgQE91dHB1dCgpIGhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBzdG9wcyBob3ZlcmluZyBvdmVyIGEgZ2l2ZW4gcmF0aW5nLlxuICAgKlxuICAgKiBFdmVudCBwYXlsb2FkIGVxdWFscyB0byB0aGUgcmF0aW5nIG9mIHRoZSBsYXN0IGl0ZW0gYmVpbmcgaG92ZXJlZCBvdmVyLlxuICAgKi9cbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbmV3IHJhdGluZy5cbiAgICpcbiAgICogRXZlbnQgcGF5bG9hZCBlcXVhbHMgdG8gdGhlIG5ld2x5IHNlbGVjdGVkIHJhdGluZy5cbiAgICovXG4gIEBPdXRwdXQoKSByYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KHRydWUpO1xuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogTmdiUmF0aW5nQ29uZmlnLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLm1heCA9IGNvbmZpZy5tYXg7XG4gICAgdGhpcy5yZWFkb25seSA9IGNvbmZpZy5yZWFkb25seTtcbiAgfVxuXG4gIGFyaWFWYWx1ZVRleHQoKSB7IHJldHVybiBgJHt0aGlzLm5leHRSYXRlfSBvdXQgb2YgJHt0aGlzLm1heH1gOyB9XG5cbiAgZW50ZXIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlU3RhdGUodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmhvdmVyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgaGFuZGxlQmx1cigpIHsgdGhpcy5vblRvdWNoZWQoKTsgfVxuXG4gIGhhbmRsZUNsaWNrKHZhbHVlOiBudW1iZXIpIHsgdGhpcy51cGRhdGUodGhpcy5yZXNldHRhYmxlICYmIHRoaXMucmF0ZSA9PT0gdmFsdWUgPyAwIDogdmFsdWUpOyB9XG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkZXByZWNhdGlvblxuICAgIHN3aXRjaCAoZXZlbnQud2hpY2gpIHtcbiAgICAgIGNhc2UgS2V5LkFycm93RG93bjpcbiAgICAgIGNhc2UgS2V5LkFycm93TGVmdDpcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5yYXRlIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXkuQXJyb3dVcDpcbiAgICAgIGNhc2UgS2V5LkFycm93UmlnaHQ6XG4gICAgICAgIHRoaXMudXBkYXRlKHRoaXMucmF0ZSArIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkhvbWU6XG4gICAgICAgIHRoaXMudXBkYXRlKDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5LkVuZDpcbiAgICAgICAgdGhpcy51cGRhdGUodGhpcy5tYXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBub3RlICdyZXR1cm4nIGluIGRlZmF1bHQgY2FzZVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3JhdGUnXSkge1xuICAgICAgdGhpcy51cGRhdGUodGhpcy5yYXRlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiB0aGlzLm1heH0sICh2LCBrKSA9PiAoe2ZpbGw6IDAsIGluZGV4OiBrfSkpO1xuICAgIHRoaXMuX3VwZGF0ZVN0YXRlKHRoaXMucmF0ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMubGVhdmUuZW1pdCh0aGlzLm5leHRSYXRlKTtcbiAgICB0aGlzLl91cGRhdGVTdGF0ZSh0aGlzLnJhdGUpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgdXBkYXRlKHZhbHVlOiBudW1iZXIsIGludGVybmFsQ2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1JhdGUgPSBnZXRWYWx1ZUluUmFuZ2UodmFsdWUsIHRoaXMubWF4LCAwKTtcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5yYXRlICE9PSBuZXdSYXRlKSB7XG4gICAgICB0aGlzLnJhdGUgPSBuZXdSYXRlO1xuICAgICAgdGhpcy5yYXRlQ2hhbmdlLmVtaXQodGhpcy5yYXRlKTtcbiAgICB9XG4gICAgaWYgKGludGVybmFsQ2hhbmdlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMucmF0ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgICB0aGlzLl91cGRhdGVTdGF0ZSh0aGlzLnJhdGUpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMudXBkYXRlKHZhbHVlLCBmYWxzZSk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRGaWxsVmFsdWUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgZGlmZiA9IHRoaXMubmV4dFJhdGUgLSBpbmRleDtcblxuICAgIGlmIChkaWZmID49IDEpIHtcbiAgICAgIHJldHVybiAxMDA7XG4gICAgfVxuICAgIGlmIChkaWZmIDwgMSAmJiBkaWZmID4gMCkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KChkaWZmICogMTAwKS50b0ZpeGVkKDIpLCAxMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTdGF0ZShuZXh0VmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMubmV4dFJhdGUgPSBuZXh0VmFsdWU7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0LCBpbmRleCkgPT4gY29udGV4dC5maWxsID0gdGhpcy5fZ2V0RmlsbFZhbHVlKGluZGV4KSk7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7TmdiUmF0aW5nfSBmcm9tICcuL3JhdGluZyc7XG5cbmV4cG9ydCB7TmdiUmF0aW5nfSBmcm9tICcuL3JhdGluZyc7XG5leHBvcnQge05nYlJhdGluZ0NvbmZpZ30gZnJvbSAnLi9yYXRpbmctY29uZmlnJztcblxuQE5nTW9kdWxlKHtkZWNsYXJhdGlvbnM6IFtOZ2JSYXRpbmddLCBleHBvcnRzOiBbTmdiUmF0aW5nXSwgaW1wb3J0czogW0NvbW1vbk1vZHVsZV19KVxuZXhwb3J0IGNsYXNzIE5nYlJhdGluZ01vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JSYXRpbmdNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JUYWJzZXRgXSgjL2NvbXBvbmVudHMvdGFic2V0L2FwaSNOZ2JUYWJzZXQpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgdGFic2V0cyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiVGFic2V0Q29uZmlnIHtcbiAganVzdGlmeTogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgfCAnZmlsbCcgfCAnanVzdGlmaWVkJyA9ICdzdGFydCc7XG4gIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuICB0eXBlOiAndGFicycgfCAncGlsbHMnID0gJ3RhYnMnO1xufVxuIiwiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIERpcmVjdGl2ZSxcbiAgVGVtcGxhdGVSZWYsXG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ2JUYWJzZXRDb25maWd9IGZyb20gJy4vdGFic2V0LWNvbmZpZyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIHdyYXAgdGFiIHRpdGxlcyB0aGF0IG5lZWQgdG8gY29udGFpbiBIVE1MIG1hcmt1cCBvciBvdGhlciBkaXJlY3RpdmVzLlxuICpcbiAqIEFsdGVybmF0aXZlbHkgeW91IGNvdWxkIHVzZSB0aGUgYE5nYlRhYi50aXRsZWAgaW5wdXQgZm9yIHN0cmluZyB0aXRsZXMuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmdiVGFiVGl0bGVdJ30pXG5leHBvcnQgY2xhc3MgTmdiVGFiVGl0bGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdG8gd3JhcCBjb250ZW50IHRvIGJlIGRpc3BsYXllZCBpbiBhIHRhYi5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtuZ2JUYWJDb250ZW50XSd9KVxuZXhwb3J0IGNsYXNzIE5nYlRhYkNvbnRlbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgcmVwcmVzZW50aW5nIGFuIGluZGl2aWR1YWwgdGFiLlxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nYi10YWInfSlcbmV4cG9ydCBjbGFzcyBOZ2JUYWIgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgLyoqXG4gICAqIFRoZSB0YWIgaWRlbnRpZmllci5cbiAgICpcbiAgICogTXVzdCBiZSB1bmlxdWUgZm9yIHRoZSBlbnRpcmUgZG9jdW1lbnQgZm9yIHByb3BlciBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuXG4gICAqL1xuICBASW5wdXQoKSBpZCA9IGBuZ2ItdGFiLSR7bmV4dElkKyt9YDtcblxuICAvKipcbiAgICogVGhlIHRhYiB0aXRsZS5cbiAgICpcbiAgICogVXNlIHRoZSBbYE5nYlRhYlRpdGxlYF0oIy9jb21wb25lbnRzL3RhYnNldC9hcGkjTmdiVGFiVGl0bGUpIGRpcmVjdGl2ZSBmb3Igbm9uLXN0cmluZyB0aXRsZXMuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjdXJyZW50IHRhYiBpcyBkaXNhYmxlZCBhbmQgY2FuJ3QgYmUgdG9nZ2xlZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgdGl0bGVUcGw6IE5nYlRhYlRpdGxlIHwgbnVsbDtcbiAgY29udGVudFRwbDogTmdiVGFiQ29udGVudCB8IG51bGw7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JUYWJUaXRsZSwge2Rlc2NlbmRhbnRzOiBmYWxzZX0pIHRpdGxlVHBsczogUXVlcnlMaXN0PE5nYlRhYlRpdGxlPjtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JUYWJDb250ZW50LCB7ZGVzY2VuZGFudHM6IGZhbHNlfSkgY29udGVudFRwbHM6IFF1ZXJ5TGlzdDxOZ2JUYWJDb250ZW50PjtcblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgLy8gV2UgYXJlIHVzaW5nIEBDb250ZW50Q2hpbGRyZW4gaW5zdGVhZCBvZiBAQ29udGVudENoaWxkIGFzIGluIHRoZSBBbmd1bGFyIHZlcnNpb24gYmVpbmcgdXNlZFxuICAgIC8vIG9ubHkgQENvbnRlbnRDaGlsZHJlbiBhbGxvd3MgdXMgdG8gc3BlY2lmeSB0aGUge2Rlc2NlbmRhbnRzOiBmYWxzZX0gb3B0aW9uLlxuICAgIC8vIFdpdGhvdXQge2Rlc2NlbmRhbnRzOiBmYWxzZX0gd2UgYXJlIGhpdHRpbmcgYnVncyBkZXNjcmliZWQgaW46XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAvaXNzdWVzLzIyNDBcbiAgICB0aGlzLnRpdGxlVHBsID0gdGhpcy50aXRsZVRwbHMuZmlyc3Q7XG4gICAgdGhpcy5jb250ZW50VHBsID0gdGhpcy5jb250ZW50VHBscy5maXJzdDtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBwYXlsb2FkIG9mIHRoZSBjaGFuZ2UgZXZlbnQgZmlyZWQgcmlnaHQgYmVmb3JlIHRoZSB0YWIgY2hhbmdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5nYlRhYkNoYW5nZUV2ZW50IHtcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0YWIuXG4gICAqL1xuICBhY3RpdmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIG5ld2x5IHNlbGVjdGVkIHRhYi5cbiAgICovXG4gIG5leHRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBwcmV2ZW50IHRhYiBzd2l0Y2hpbmcuXG4gICAqL1xuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gY3JlYXRlIHRhYmJlZCBpbnRlcmZhY2UuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi10YWJzZXQnLFxuICBleHBvcnRBczogJ25nYlRhYnNldCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHVsIFtjbGFzc109XCInbmF2IG5hdi0nICsgdHlwZSArIChvcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCc/ICAnICcgKyBqdXN0aWZ5Q2xhc3MgOiAnIGZsZXgtY29sdW1uJylcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgICAgPGEgW2lkXT1cInRhYi5pZFwiIGNsYXNzPVwibmF2LWxpbmtcIiBbY2xhc3MuYWN0aXZlXT1cInRhYi5pZCA9PT0gYWN0aXZlSWRcIiBbY2xhc3MuZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICAgICBocmVmIChjbGljayk9XCJzZWxlY3QodGFiLmlkKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiByb2xlPVwidGFiXCIgW2F0dHIudGFiaW5kZXhdPVwiKHRhYi5kaXNhYmxlZCA/ICctMSc6IHVuZGVmaW5lZClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiKCFkZXN0cm95T25IaWRlIHx8IHRhYi5pZCA9PT0gYWN0aXZlSWQgPyB0YWIuaWQgKyAnLXBhbmVsJyA6IG51bGwpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInRhYi5pZCA9PT0gYWN0aXZlSWRcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiPlxuICAgICAgICAgIHt7dGFiLnRpdGxlfX08bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiLnRpdGxlVHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtdGFiIFtuZ0Zvck9mXT1cInRhYnNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidGFiLXBhbmUge3t0YWIuaWQgPT09IGFjdGl2ZUlkID8gJ2FjdGl2ZScgOiBudWxsfX1cIlxuICAgICAgICAgICpuZ0lmPVwiIWRlc3Ryb3lPbkhpZGUgfHwgdGFiLmlkID09PSBhY3RpdmVJZFwiXG4gICAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGFiLmlkXCIgaWQ9XCJ7e3RhYi5pZH19LXBhbmVsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi5jb250ZW50VHBsPy50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBOZ2JUYWJzZXQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAganVzdGlmeUNsYXNzOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihOZ2JUYWIpIHRhYnM6IFF1ZXJ5TGlzdDxOZ2JUYWI+O1xuXG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgdGFiIHRoYXQgc2hvdWxkIGJlIG9wZW5lZCAqKmluaXRpYWxseSoqLlxuICAgKlxuICAgKiBGb3Igc3Vic2VxdWVudCB0YWIgc3dpdGNoZXMgdXNlIHRoZSBgLnNlbGVjdCgpYCBtZXRob2QgYW5kIHRoZSBgKHRhYkNoYW5nZSlgIGV2ZW50LlxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBub24tdmlzaWJsZSB0YWJzIGNvbnRlbnQgd2lsbCBiZSByZW1vdmVkIGZyb20gRE9NLiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIGhpZGRlbi5cbiAgICovXG4gIEBJbnB1dCgpIGRlc3Ryb3lPbkhpZGUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgdGhlIHRhYnMgd2l0aCBmbGV4Ym94IHV0aWxpdGllcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBqdXN0aWZ5KGNsYXNzTmFtZTogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgfCAnZmlsbCcgfCAnanVzdGlmaWVkJykge1xuICAgIGlmIChjbGFzc05hbWUgPT09ICdmaWxsJyB8fCBjbGFzc05hbWUgPT09ICdqdXN0aWZpZWQnKSB7XG4gICAgICB0aGlzLmp1c3RpZnlDbGFzcyA9IGBuYXYtJHtjbGFzc05hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qdXN0aWZ5Q2xhc3MgPSBganVzdGlmeS1jb250ZW50LSR7Y2xhc3NOYW1lfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgdGFic2V0LlxuICAgKi9cbiAgQElucHV0KCkgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgbmF2aWdhdGlvbiB0byBiZSB1c2VkIGZvciB0YWJzLlxuICAgKlxuICAgKiBDdXJyZW50bHkgQm9vdHN0cmFwIHN1cHBvcnRzIG9ubHkgYFwidGFic1wiYCBhbmQgYFwicGlsbHNcImAuXG4gICAqXG4gICAqIFNpbmNlIGAzLjAuMGAgY2FuIGFsc28gYmUgYW4gYXJiaXRyYXJ5IHN0cmluZyAoZXguIGZvciBjdXN0b20gdGhlbWVzKS5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6ICd0YWJzJyB8ICdwaWxscycgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGFiIGNoYW5nZSBldmVudCBlbWl0dGVkIHJpZ2h0IGJlZm9yZSB0aGUgdGFiIGNoYW5nZSBoYXBwZW5zLlxuICAgKlxuICAgKiBTZWUgW2BOZ2JUYWJDaGFuZ2VFdmVudGBdKCMvY29tcG9uZW50cy90YWJzZXQvYXBpI05nYlRhYkNoYW5nZUV2ZW50KSBmb3IgcGF5bG9hZCBkZXRhaWxzLlxuICAgKi9cbiAgQE91dHB1dCgpIHRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TmdiVGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBOZ2JUYWJzZXRDb25maWcpIHtcbiAgICB0aGlzLnR5cGUgPSBjb25maWcudHlwZTtcbiAgICB0aGlzLmp1c3RpZnkgPSBjb25maWcuanVzdGlmeTtcbiAgICB0aGlzLm9yaWVudGF0aW9uID0gY29uZmlnLm9yaWVudGF0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIHRhYiB3aXRoIHRoZSBnaXZlbiBpZCBhbmQgc2hvd3MgaXRzIGFzc29jaWF0ZWQgY29udGVudCBwYW5lbC5cbiAgICpcbiAgICogQW55IG90aGVyIHRhYiB0aGF0IHdhcyBwcmV2aW91c2x5IHNlbGVjdGVkIGJlY29tZXMgdW5zZWxlY3RlZCBhbmQgaXRzIGFzc29jaWF0ZWQgcGFuZSBpcyByZW1vdmVkIGZyb20gRE9NIG9yXG4gICAqIGhpZGRlbiBkZXBlbmRpbmcgb24gdGhlIGBkZXN0cm95T25IaWRlYCB2YWx1ZS5cbiAgICovXG4gIHNlbGVjdCh0YWJJZDogc3RyaW5nKSB7XG4gICAgbGV0IHNlbGVjdGVkVGFiID0gdGhpcy5fZ2V0VGFiQnlJZCh0YWJJZCk7XG4gICAgaWYgKHNlbGVjdGVkVGFiICYmICFzZWxlY3RlZFRhYi5kaXNhYmxlZCAmJiB0aGlzLmFjdGl2ZUlkICE9PSBzZWxlY3RlZFRhYi5pZCkge1xuICAgICAgbGV0IGRlZmF1bHRQcmV2ZW50ZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdChcbiAgICAgICAgICB7YWN0aXZlSWQ6IHRoaXMuYWN0aXZlSWQsIG5leHRJZDogc2VsZWN0ZWRUYWIuaWQsIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7IGRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOyB9fSk7XG5cbiAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUlkID0gc2VsZWN0ZWRUYWIuaWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIC8vIGF1dG8tY29ycmVjdCBhY3RpdmVJZCB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBzZXQgaW5jb3JyZWN0bHkgYXMgaW5wdXRcbiAgICBsZXQgYWN0aXZlVGFiID0gdGhpcy5fZ2V0VGFiQnlJZCh0aGlzLmFjdGl2ZUlkKTtcbiAgICB0aGlzLmFjdGl2ZUlkID0gYWN0aXZlVGFiID8gYWN0aXZlVGFiLmlkIDogKHRoaXMudGFicy5sZW5ndGggPyB0aGlzLnRhYnMuZmlyc3QuaWQgOiBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRhYkJ5SWQoaWQ6IHN0cmluZyk6IE5nYlRhYiB7XG4gICAgbGV0IHRhYnNXaXRoSWQ6IE5nYlRhYltdID0gdGhpcy50YWJzLmZpbHRlcih0YWIgPT4gdGFiLmlkID09PSBpZCk7XG4gICAgcmV0dXJuIHRhYnNXaXRoSWQubGVuZ3RoID8gdGFic1dpdGhJZFswXSA6IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB7TmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7TmdiVGFic2V0LCBOZ2JUYWIsIE5nYlRhYkNvbnRlbnQsIE5nYlRhYlRpdGxlfSBmcm9tICcuL3RhYnNldCc7XG5cbmV4cG9ydCB7TmdiVGFic2V0LCBOZ2JUYWIsIE5nYlRhYkNvbnRlbnQsIE5nYlRhYlRpdGxlLCBOZ2JUYWJDaGFuZ2VFdmVudH0gZnJvbSAnLi90YWJzZXQnO1xuZXhwb3J0IHtOZ2JUYWJzZXRDb25maWd9IGZyb20gJy4vdGFic2V0LWNvbmZpZyc7XG5cbmNvbnN0IE5HQl9UQUJTRVRfRElSRUNUSVZFUyA9IFtOZ2JUYWJzZXQsIE5nYlRhYiwgTmdiVGFiQ29udGVudCwgTmdiVGFiVGl0bGVdO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogTkdCX1RBQlNFVF9ESVJFQ1RJVkVTLCBleHBvcnRzOiBOR0JfVEFCU0VUX0RJUkVDVElWRVMsIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdfSlcbmV4cG9ydCBjbGFzcyBOZ2JUYWJzZXRNb2R1bGUge1xuICAvKipcbiAgICogSW1wb3J0aW5nIHdpdGggJy5mb3JSb290KCknIGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIHlvdSBjYW4gc2ltcGx5IGltcG9ydCB0aGUgbW9kdWxlLlxuICAgKiBXaWxsIGJlIHJlbW92ZWQgaW4gNC4wLjAuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIDMuMC4wXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHsgcmV0dXJuIHtuZ01vZHVsZTogTmdiVGFic2V0TW9kdWxlfTsgfVxufVxuIiwiaW1wb3J0IHtpc051bWJlciwgdG9JbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgTmdiVGltZSB7XG4gIGhvdXI6IG51bWJlcjtcbiAgbWludXRlOiBudW1iZXI7XG4gIHNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGhvdXI/OiBudW1iZXIsIG1pbnV0ZT86IG51bWJlciwgc2Vjb25kPzogbnVtYmVyKSB7XG4gICAgdGhpcy5ob3VyID0gdG9JbnRlZ2VyKGhvdXIpO1xuICAgIHRoaXMubWludXRlID0gdG9JbnRlZ2VyKG1pbnV0ZSk7XG4gICAgdGhpcy5zZWNvbmQgPSB0b0ludGVnZXIoc2Vjb25kKTtcbiAgfVxuXG4gIGNoYW5nZUhvdXIoc3RlcCA9IDEpIHsgdGhpcy51cGRhdGVIb3VyKChpc05hTih0aGlzLmhvdXIpID8gMCA6IHRoaXMuaG91cikgKyBzdGVwKTsgfVxuXG4gIHVwZGF0ZUhvdXIoaG91cjogbnVtYmVyKSB7XG4gICAgaWYgKGlzTnVtYmVyKGhvdXIpKSB7XG4gICAgICB0aGlzLmhvdXIgPSAoaG91ciA8IDAgPyAyNCArIGhvdXIgOiBob3VyKSAlIDI0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhvdXIgPSBOYU47XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTWludXRlKHN0ZXAgPSAxKSB7IHRoaXMudXBkYXRlTWludXRlKChpc05hTih0aGlzLm1pbnV0ZSkgPyAwIDogdGhpcy5taW51dGUpICsgc3RlcCk7IH1cblxuICB1cGRhdGVNaW51dGUobWludXRlOiBudW1iZXIpIHtcbiAgICBpZiAoaXNOdW1iZXIobWludXRlKSkge1xuICAgICAgdGhpcy5taW51dGUgPSBtaW51dGUgJSA2MCA8IDAgPyA2MCArIG1pbnV0ZSAlIDYwIDogbWludXRlICUgNjA7XG4gICAgICB0aGlzLmNoYW5nZUhvdXIoTWF0aC5mbG9vcihtaW51dGUgLyA2MCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pbnV0ZSA9IE5hTjtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTZWNvbmQoc3RlcCA9IDEpIHsgdGhpcy51cGRhdGVTZWNvbmQoKGlzTmFOKHRoaXMuc2Vjb25kKSA/IDAgOiB0aGlzLnNlY29uZCkgKyBzdGVwKTsgfVxuXG4gIHVwZGF0ZVNlY29uZChzZWNvbmQ6IG51bWJlcikge1xuICAgIGlmIChpc051bWJlcihzZWNvbmQpKSB7XG4gICAgICB0aGlzLnNlY29uZCA9IHNlY29uZCA8IDAgPyA2MCArIHNlY29uZCAlIDYwIDogc2Vjb25kICUgNjA7XG4gICAgICB0aGlzLmNoYW5nZU1pbnV0ZShNYXRoLmZsb29yKHNlY29uZCAvIDYwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2Vjb25kID0gTmFOO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWQoY2hlY2tTZWNzID0gdHJ1ZSkge1xuICAgIHJldHVybiBpc051bWJlcih0aGlzLmhvdXIpICYmIGlzTnVtYmVyKHRoaXMubWludXRlKSAmJiAoY2hlY2tTZWNzID8gaXNOdW1iZXIodGhpcy5zZWNvbmQpIDogdHJ1ZSk7XG4gIH1cblxuICB0b1N0cmluZygpIHsgcmV0dXJuIGAke3RoaXMuaG91ciB8fCAwfToke3RoaXMubWludXRlIHx8IDB9OiR7dGhpcy5zZWNvbmQgfHwgMH1gOyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JUaW1lcGlja2VyYF0oIy9jb21wb25lbnRzL3RpbWVwaWNrZXIvYXBpI05nYlRpbWVwaWNrZXIpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgdGltZXBpY2tlcnMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5nYlRpbWVwaWNrZXJDb25maWcge1xuICBtZXJpZGlhbiA9IGZhbHNlO1xuICBzcGlubmVycyA9IHRydWU7XG4gIHNlY29uZHMgPSBmYWxzZTtcbiAgaG91clN0ZXAgPSAxO1xuICBtaW51dGVTdGVwID0gMTtcbiAgc2Vjb25kU3RlcCA9IDE7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIHJlYWRvbmx5SW5wdXRzID0gZmFsc2U7XG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcbn1cbiIsImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nYlRpbWVTdHJ1Y3R9IGZyb20gJy4vbmdiLXRpbWUtc3RydWN0JztcbmltcG9ydCB7aXNJbnRlZ2VyfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gTkdCX0RBVEVQSUNLRVJfVElNRV9BREFQVEVSX0ZBQ1RPUlkoKSB7XG4gIHJldHVybiBuZXcgTmdiVGltZVN0cnVjdEFkYXB0ZXIoKTtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBzZXJ2aWNlIHRoYXQgZG9lcyB0aGUgY29udmVyc2lvbiBiZXR3ZWVuIHRoZSBpbnRlcm5hbCB0aW1lcGlja2VyIGBOZ2JUaW1lU3RydWN0YCBtb2RlbCBhbmRcbiAqIGFueSBwcm92aWRlZCB1c2VyIHRpbWUgbW9kZWwgYFRgLCBleC4gYSBzdHJpbmcsIGEgbmF0aXZlIGRhdGUsIGV0Yy5cbiAqXG4gKiBUaGUgYWRhcHRlciBpcyB1c2VkICoqb25seSoqIGZvciBjb252ZXJzaW9uIHdoZW4gYmluZGluZyB0aW1lcGlja2VyIHRvIGEgZm9ybSBjb250cm9sLFxuICogZXguIGBbKG5nTW9kZWwpXT1cInVzZXJUaW1lTW9kZWxcImAuIEhlcmUgYHVzZXJUaW1lTW9kZWxgIGNhbiBiZSBvZiBhbnkgdHlwZS5cbiAqXG4gKiBUaGUgZGVmYXVsdCB0aW1lcGlja2VyIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgd2UgdXNlIGBOZ2JUaW1lU3RydWN0YCBhcyBhIHVzZXIgbW9kZWwuXG4gKlxuICogU2VlIHRoZSBbY3VzdG9tIHRpbWUgYWRhcHRlciBkZW1vXSgjL2NvbXBvbmVudHMvdGltZXBpY2tlci9leGFtcGxlcyNhZGFwdGVyKSBmb3IgYW4gZXhhbXBsZS5cbiAqXG4gKiBAc2luY2UgMi4yLjBcbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogTkdCX0RBVEVQSUNLRVJfVElNRV9BREFQVEVSX0ZBQ1RPUll9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nYlRpbWVBZGFwdGVyPFQ+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgdXNlci1tb2RlbCB0aW1lIG9mIHR5cGUgYFRgIHRvIGFuIGBOZ2JUaW1lU3RydWN0YCBmb3IgaW50ZXJuYWwgdXNlLlxuICAgKi9cbiAgYWJzdHJhY3QgZnJvbU1vZGVsKHZhbHVlOiBUKTogTmdiVGltZVN0cnVjdDtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gaW50ZXJuYWwgYE5nYlRpbWVTdHJ1Y3RgIHRpbWUgdG8gYSB1c2VyLW1vZGVsIHRpbWUgb2YgdHlwZSBgVGAuXG4gICAqL1xuICBhYnN0cmFjdCB0b01vZGVsKHRpbWU6IE5nYlRpbWVTdHJ1Y3QpOiBUO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdiVGltZVN0cnVjdEFkYXB0ZXIgZXh0ZW5kcyBOZ2JUaW1lQWRhcHRlcjxOZ2JUaW1lU3RydWN0PiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIE5nYlRpbWVTdHJ1Y3QgdmFsdWUgaW50byBOZ2JUaW1lU3RydWN0IHZhbHVlXG4gICAqL1xuICBmcm9tTW9kZWwodGltZTogTmdiVGltZVN0cnVjdCk6IE5nYlRpbWVTdHJ1Y3Qge1xuICAgIHJldHVybiAodGltZSAmJiBpc0ludGVnZXIodGltZS5ob3VyKSAmJiBpc0ludGVnZXIodGltZS5taW51dGUpKSA/XG4gICAgICAgIHtob3VyOiB0aW1lLmhvdXIsIG1pbnV0ZTogdGltZS5taW51dGUsIHNlY29uZDogaXNJbnRlZ2VyKHRpbWUuc2Vjb25kKSA/IHRpbWUuc2Vjb25kIDogbnVsbH0gOlxuICAgICAgICBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgTmdiVGltZVN0cnVjdCB2YWx1ZSBpbnRvIE5nYlRpbWVTdHJ1Y3QgdmFsdWVcbiAgICovXG4gIHRvTW9kZWwodGltZTogTmdiVGltZVN0cnVjdCk6IE5nYlRpbWVTdHJ1Y3Qge1xuICAgIHJldHVybiAodGltZSAmJiBpc0ludGVnZXIodGltZS5ob3VyKSAmJiBpc0ludGVnZXIodGltZS5taW51dGUpKSA/XG4gICAgICAgIHtob3VyOiB0aW1lLmhvdXIsIG1pbnV0ZTogdGltZS5taW51dGUsIHNlY29uZDogaXNJbnRlZ2VyKHRpbWUuc2Vjb25kKSA/IHRpbWUuc2Vjb25kIDogbnVsbH0gOlxuICAgICAgICBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7aXNJbnRlZ2VyLCBpc051bWJlciwgcGFkTnVtYmVyLCB0b0ludGVnZXJ9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQge05nYlRpbWV9IGZyb20gJy4vbmdiLXRpbWUnO1xuaW1wb3J0IHtOZ2JUaW1lcGlja2VyQ29uZmlnfSBmcm9tICcuL3RpbWVwaWNrZXItY29uZmlnJztcbmltcG9ydCB7TmdiVGltZUFkYXB0ZXJ9IGZyb20gJy4vbmdiLXRpbWUtYWRhcHRlcic7XG5cbmNvbnN0IE5HQl9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiVGltZXBpY2tlciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRoYXQgaGVscHMgd2l0aCB3dGggcGlja2luZyBob3VycywgbWludXRlcyBhbmQgc2Vjb25kcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXRpbWVwaWNrZXInLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmdiLXRwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZ2ItdHAtaW5wdXQtY29udGFpbmVyIG5nYi10cC1ob3VyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNwaW5uZXJzXCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlSG91cihob3VyU3RlcClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuYnRuLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmJ0bi1sZ109XCJpc0xhcmdlU2l6ZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBuZ2ItdHAtY2hldnJvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi50aW1lcGlja2VyLmluY3JlbWVudC1ob3Vyc1wiPkluY3JlbWVudCBob3Vyczwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm5nYi10cC1pbnB1dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmZvcm0tY29udHJvbC1sZ109XCJpc0xhcmdlU2l6ZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCIgcGxhY2Vob2xkZXI9XCJISFwiIGkxOG4tcGxhY2Vob2xkZXI9XCJAQG5nYi50aW1lcGlja2VyLkhIXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRIb3VyKG1vZGVsPy5ob3VyKVwiIChjaGFuZ2UpPVwidXBkYXRlSG91cigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlJbnB1dHNcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBhcmlhLWxhYmVsPVwiSG91cnNcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi50aW1lcGlja2VyLmhvdXJzXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlSG91cihob3VyU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VIb3VyKC1ob3VyU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNwaW5uZXJzXCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlSG91cigtaG91clN0ZXApXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmJ0bi1zbV09XCJpc1NtYWxsU2l6ZVwiIFtjbGFzcy5idG4tbGddPVwiaXNMYXJnZVNpemVcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb24gbmdiLXRwLWNoZXZyb24gYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgaTE4bj1cIkBAbmdiLnRpbWVwaWNrZXIuZGVjcmVtZW50LWhvdXJzXCI+RGVjcmVtZW50IGhvdXJzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5nYi10cC1zcGFjZXJcIj46PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZ2ItdHAtaW5wdXQtY29udGFpbmVyIG5nYi10cC1taW51dGVcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3Bpbm5lcnNcIiB0YWJpbmRleD1cIi0xXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VNaW51dGUobWludXRlU3RlcClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuYnRuLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmJ0bi1sZ109XCJpc0xhcmdlU2l6ZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBuZ2ItdHAtY2hldnJvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIGkxOG49XCJAQG5nYi50aW1lcGlja2VyLmluY3JlbWVudC1taW51dGVzXCI+SW5jcmVtZW50IG1pbnV0ZXM8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJuZ2ItdHAtaW5wdXQgZm9ybS1jb250cm9sXCIgW2NsYXNzLmZvcm0tY29udHJvbC1zbV09XCJpc1NtYWxsU2l6ZVwiIFtjbGFzcy5mb3JtLWNvbnRyb2wtbGddPVwiaXNMYXJnZVNpemVcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiIHBsYWNlaG9sZGVyPVwiTU1cIiBpMThuLXBsYWNlaG9sZGVyPVwiQEBuZ2IudGltZXBpY2tlci5NTVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0TWluU2VjKG1vZGVsPy5taW51dGUpXCIgKGNoYW5nZSk9XCJ1cGRhdGVNaW51dGUoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5SW5wdXRzXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgYXJpYS1sYWJlbD1cIk1pbnV0ZXNcIiBpMThuLWFyaWEtbGFiZWw9XCJAQG5nYi50aW1lcGlja2VyLm1pbnV0ZXNcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dVcCk9XCJjaGFuZ2VNaW51dGUobWludXRlU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VNaW51dGUoLW1pbnV0ZVN0ZXApOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzcGlubmVyc1wiIHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNoYW5nZU1pbnV0ZSgtbWludXRlU3RlcClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuYnRuLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmJ0bi1sZ109XCJpc0xhcmdlU2l6ZVwiICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb24gbmdiLXRwLWNoZXZyb24gYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgIGkxOG49XCJAQG5nYi50aW1lcGlja2VyLmRlY3JlbWVudC1taW51dGVzXCI+RGVjcmVtZW50IG1pbnV0ZXM8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2Vjb25kc1wiIGNsYXNzPVwibmdiLXRwLXNwYWNlclwiPjo8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlY29uZHNcIiBjbGFzcz1cIm5nYi10cC1pbnB1dC1jb250YWluZXIgbmdiLXRwLXNlY29uZFwiPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzcGlubmVyc1wiIHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNoYW5nZVNlY29uZChzZWNvbmRTdGVwKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5idG4tc21dPVwiaXNTbWFsbFNpemVcIiBbY2xhc3MuYnRuLWxnXT1cImlzTGFyZ2VTaXplXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGV2cm9uIG5nYi10cC1jaGV2cm9uXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgaTE4bj1cIkBAbmdiLnRpbWVwaWNrZXIuaW5jcmVtZW50LXNlY29uZHNcIj5JbmNyZW1lbnQgc2Vjb25kczwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm5nYi10cC1pbnB1dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLXNtXT1cImlzU21hbGxTaXplXCIgW2NsYXNzLmZvcm0tY29udHJvbC1sZ109XCJpc0xhcmdlU2l6ZVwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCIgcGxhY2Vob2xkZXI9XCJTU1wiIGkxOG4tcGxhY2Vob2xkZXI9XCJAQG5nYi50aW1lcGlja2VyLlNTXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXRNaW5TZWMobW9kZWw/LnNlY29uZClcIiAoY2hhbmdlKT1cInVwZGF0ZVNlY29uZCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlJbnB1dHNcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBhcmlhLWxhYmVsPVwiU2Vjb25kc1wiIGkxOG4tYXJpYS1sYWJlbD1cIkBAbmdiLnRpbWVwaWNrZXIuc2Vjb25kc1wiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZVNlY29uZChzZWNvbmRTdGVwKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZVNlY29uZCgtc2Vjb25kU3RlcCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNwaW5uZXJzXCIgdGFiaW5kZXg9XCItMVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2hhbmdlU2Vjb25kKC1zZWNvbmRTdGVwKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5idG4tc21dPVwiaXNTbWFsbFNpemVcIiBbY2xhc3MuYnRuLWxnXT1cImlzTGFyZ2VTaXplXCIgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBuZ2ItdHAtY2hldnJvbiBib3R0b21cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiBpMThuPVwiQEBuZ2IudGltZXBpY2tlci5kZWNyZW1lbnQtc2Vjb25kc1wiPkRlY3JlbWVudCBzZWNvbmRzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lcmlkaWFuXCIgY2xhc3M9XCJuZ2ItdHAtc3BhY2VyXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtZXJpZGlhblwiIGNsYXNzPVwibmdiLXRwLW1lcmlkaWFuXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIFtjbGFzcy5idG4tc21dPVwiaXNTbWFsbFNpemVcIiBbY2xhc3MuYnRuLWxnXT1cImlzTGFyZ2VTaXplXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVyaWRpYW4oKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsPy5ob3VyID49IDEyOyBlbHNlIGFtXCIgaTE4bj1cIkBAbmdiLnRpbWVwaWNrZXIuUE1cIj5QTTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhbSBpMThuPVwiQEBuZ2IudGltZXBpY2tlci5BTVwiPkFNPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICBgLFxuICBwcm92aWRlcnM6IFtOR0JfVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgTmdiVGltZXBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE9uQ2hhbmdlcyB7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBtb2RlbDogTmdiVGltZTtcblxuICBwcml2YXRlIF9ob3VyU3RlcDogbnVtYmVyO1xuICBwcml2YXRlIF9taW51dGVTdGVwOiBudW1iZXI7XG4gIHByaXZhdGUgX3NlY29uZFN0ZXA6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IDEySCBvciAyNEggbW9kZS5cbiAgICovXG4gIEBJbnB1dCgpIG1lcmlkaWFuOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzcGlubmVycyBhYm92ZSBhbmQgYmVsb3cgaW5wdXRzIGFyZSB2aXNpYmxlLlxuICAgKi9cbiAgQElucHV0KCkgc3Bpbm5lcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaXQgaXMgcG9zc2libGUgdG8gc2VsZWN0IHNlY29uZHMuXG4gICAqL1xuICBASW5wdXQoKSBzZWNvbmRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGhvdXJzIHRvIGFkZC9zdWJ0cmFjdCB3aGVuIGNsaWNraW5nIGhvdXIgc3Bpbm5lcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaG91clN0ZXAoc3RlcDogbnVtYmVyKSB7XG4gICAgdGhpcy5faG91clN0ZXAgPSBpc0ludGVnZXIoc3RlcCkgPyBzdGVwIDogdGhpcy5fY29uZmlnLmhvdXJTdGVwO1xuICB9XG5cbiAgZ2V0IGhvdXJTdGVwKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9ob3VyU3RlcDsgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYWRkL3N1YnRyYWN0IHdoZW4gY2xpY2tpbmcgbWludXRlIHNwaW5uZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG1pbnV0ZVN0ZXAoc3RlcDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWludXRlU3RlcCA9IGlzSW50ZWdlcihzdGVwKSA/IHN0ZXAgOiB0aGlzLl9jb25maWcubWludXRlU3RlcDtcbiAgfVxuXG4gIGdldCBtaW51dGVTdGVwKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9taW51dGVTdGVwOyB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBhZGQvc3VidHJhY3Qgd2hlbiBjbGlja2luZyBzZWNvbmQgc3Bpbm5lcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2Vjb25kU3RlcChzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zZWNvbmRTdGVwID0gaXNJbnRlZ2VyKHN0ZXApID8gc3RlcCA6IHRoaXMuX2NvbmZpZy5zZWNvbmRTdGVwO1xuICB9XG5cbiAgZ2V0IHNlY29uZFN0ZXAoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3NlY29uZFN0ZXA7IH1cblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGltZXBpY2tlciBpcyByZWFkb25seSBhbmQgY2FuJ3QgYmUgY2hhbmdlZC5cbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5SW5wdXRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiBpbnB1dHMgYW5kIGJ1dHRvbnMuXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBOZ2JUaW1lcGlja2VyQ29uZmlnLCBwcml2YXRlIF9uZ2JUaW1lQWRhcHRlcjogTmdiVGltZUFkYXB0ZXI8YW55PixcbiAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMubWVyaWRpYW4gPSBfY29uZmlnLm1lcmlkaWFuO1xuICAgIHRoaXMuc3Bpbm5lcnMgPSBfY29uZmlnLnNwaW5uZXJzO1xuICAgIHRoaXMuc2Vjb25kcyA9IF9jb25maWcuc2Vjb25kcztcbiAgICB0aGlzLmhvdXJTdGVwID0gX2NvbmZpZy5ob3VyU3RlcDtcbiAgICB0aGlzLm1pbnV0ZVN0ZXAgPSBfY29uZmlnLm1pbnV0ZVN0ZXA7XG4gICAgdGhpcy5zZWNvbmRTdGVwID0gX2NvbmZpZy5zZWNvbmRTdGVwO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBfY29uZmlnLmRpc2FibGVkO1xuICAgIHRoaXMucmVhZG9ubHlJbnB1dHMgPSBfY29uZmlnLnJlYWRvbmx5SW5wdXRzO1xuICAgIHRoaXMuc2l6ZSA9IF9jb25maWcuc2l6ZTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICBjb25zdCBzdHJ1Y3RWYWx1ZSA9IHRoaXMuX25nYlRpbWVBZGFwdGVyLmZyb21Nb2RlbCh2YWx1ZSk7XG4gICAgdGhpcy5tb2RlbCA9IHN0cnVjdFZhbHVlID8gbmV3IE5nYlRpbWUoc3RydWN0VmFsdWUuaG91ciwgc3RydWN0VmFsdWUubWludXRlLCBzdHJ1Y3RWYWx1ZS5zZWNvbmQpIDogbmV3IE5nYlRpbWUoKTtcbiAgICBpZiAoIXRoaXMuc2Vjb25kcyAmJiAoIXN0cnVjdFZhbHVlIHx8ICFpc051bWJlcihzdHJ1Y3RWYWx1ZS5zZWNvbmQpKSkge1xuICAgICAgdGhpcy5tb2RlbC5zZWNvbmQgPSAwO1xuICAgIH1cbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgY2hhbmdlSG91cihzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLm1vZGVsLmNoYW5nZUhvdXIoc3RlcCk7XG4gICAgdGhpcy5wcm9wYWdhdGVNb2RlbENoYW5nZSgpO1xuICB9XG5cbiAgY2hhbmdlTWludXRlKHN0ZXA6IG51bWJlcikge1xuICAgIHRoaXMubW9kZWwuY2hhbmdlTWludXRlKHN0ZXApO1xuICAgIHRoaXMucHJvcGFnYXRlTW9kZWxDaGFuZ2UoKTtcbiAgfVxuXG4gIGNoYW5nZVNlY29uZChzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLm1vZGVsLmNoYW5nZVNlY29uZChzdGVwKTtcbiAgICB0aGlzLnByb3BhZ2F0ZU1vZGVsQ2hhbmdlKCk7XG4gIH1cblxuICB1cGRhdGVIb3VyKG5ld1ZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgaXNQTSA9IHRoaXMubW9kZWwuaG91ciA+PSAxMjtcbiAgICBjb25zdCBlbnRlcmVkSG91ciA9IHRvSW50ZWdlcihuZXdWYWwpO1xuICAgIGlmICh0aGlzLm1lcmlkaWFuICYmIChpc1BNICYmIGVudGVyZWRIb3VyIDwgMTIgfHwgIWlzUE0gJiYgZW50ZXJlZEhvdXIgPT09IDEyKSkge1xuICAgICAgdGhpcy5tb2RlbC51cGRhdGVIb3VyKGVudGVyZWRIb3VyICsgMTIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVsLnVwZGF0ZUhvdXIoZW50ZXJlZEhvdXIpO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZU1vZGVsQ2hhbmdlKCk7XG4gIH1cblxuICB1cGRhdGVNaW51dGUobmV3VmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1vZGVsLnVwZGF0ZU1pbnV0ZSh0b0ludGVnZXIobmV3VmFsKSk7XG4gICAgdGhpcy5wcm9wYWdhdGVNb2RlbENoYW5nZSgpO1xuICB9XG5cbiAgdXBkYXRlU2Vjb25kKG5ld1ZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5tb2RlbC51cGRhdGVTZWNvbmQodG9JbnRlZ2VyKG5ld1ZhbCkpO1xuICAgIHRoaXMucHJvcGFnYXRlTW9kZWxDaGFuZ2UoKTtcbiAgfVxuXG4gIHRvZ2dsZU1lcmlkaWFuKCkge1xuICAgIGlmICh0aGlzLm1lcmlkaWFuKSB7XG4gICAgICB0aGlzLmNoYW5nZUhvdXIoMTIpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdEhvdXIodmFsdWU6IG51bWJlcikge1xuICAgIGlmIChpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGlmICh0aGlzLm1lcmlkaWFuKSB7XG4gICAgICAgIHJldHVybiBwYWROdW1iZXIodmFsdWUgJSAxMiA9PT0gMCA/IDEyIDogdmFsdWUgJSAxMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFkTnVtYmVyKHZhbHVlICUgMjQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFkTnVtYmVyKE5hTik7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0TWluU2VjKHZhbHVlOiBudW1iZXIpIHsgcmV0dXJuIHBhZE51bWJlcih2YWx1ZSk7IH1cblxuICBnZXQgaXNTbWFsbFNpemUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnNpemUgPT09ICdzbWFsbCc7IH1cblxuICBnZXQgaXNMYXJnZVNpemUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnNpemUgPT09ICdsYXJnZSc7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3NlY29uZHMnXSAmJiAhdGhpcy5zZWNvbmRzICYmIHRoaXMubW9kZWwgJiYgIWlzTnVtYmVyKHRoaXMubW9kZWwuc2Vjb25kKSkge1xuICAgICAgdGhpcy5tb2RlbC5zZWNvbmQgPSAwO1xuICAgICAgdGhpcy5wcm9wYWdhdGVNb2RlbENoYW5nZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wYWdhdGVNb2RlbENoYW5nZSh0b3VjaGVkID0gdHJ1ZSkge1xuICAgIGlmICh0b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlbC5pc1ZhbGlkKHRoaXMuc2Vjb25kcykpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UoXG4gICAgICAgICAgdGhpcy5fbmdiVGltZUFkYXB0ZXIudG9Nb2RlbCh7aG91cjogdGhpcy5tb2RlbC5ob3VyLCBtaW51dGU6IHRoaXMubW9kZWwubWludXRlLCBzZWNvbmQ6IHRoaXMubW9kZWwuc2Vjb25kfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX25nYlRpbWVBZGFwdGVyLnRvTW9kZWwobnVsbCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtOZ2JUaW1lcGlja2VyfSBmcm9tICcuL3RpbWVwaWNrZXInO1xuXG5leHBvcnQge05nYlRpbWVwaWNrZXJ9IGZyb20gJy4vdGltZXBpY2tlcic7XG5leHBvcnQge05nYlRpbWVwaWNrZXJDb25maWd9IGZyb20gJy4vdGltZXBpY2tlci1jb25maWcnO1xuZXhwb3J0IHtOZ2JUaW1lU3RydWN0fSBmcm9tICcuL25nYi10aW1lLXN0cnVjdCc7XG5leHBvcnQge05nYlRpbWVBZGFwdGVyfSBmcm9tICcuL25nYi10aW1lLWFkYXB0ZXInO1xuXG5ATmdNb2R1bGUoe2RlY2xhcmF0aW9uczogW05nYlRpbWVwaWNrZXJdLCBleHBvcnRzOiBbTmdiVGltZXBpY2tlcl0sIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdfSlcbmV4cG9ydCBjbGFzcyBOZ2JUaW1lcGlja2VyTW9kdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydGluZyB3aXRoICcuZm9yUm9vdCgpJyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LCB5b3UgY2FuIHNpbXBseSBpbXBvcnQgdGhlIG1vZHVsZS5cbiAgICogV2lsbCBiZSByZW1vdmVkIGluIDQuMC4wLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAzLjAuMFxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7IHJldHVybiB7bmdNb2R1bGU6IE5nYlRpbWVwaWNrZXJNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQbGFjZW1lbnRBcnJheX0gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbYE5nYlRvb2x0aXBgXSgjL2NvbXBvbmVudHMvdG9vbHRpcC9hcGkjTmdiVG9vbHRpcCkgY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSwgdHlwaWNhbGx5IGluIHlvdXIgcm9vdCBjb21wb25lbnQsIGFuZCBjdXN0b21pemUgdGhlIHZhbHVlcyBvZiBpdHMgcHJvcGVydGllcyBpblxuICogb3JkZXIgdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHRoZSB0b29sdGlwcyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiVG9vbHRpcENvbmZpZyB7XG4gIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdpbnNpZGUnIHwgJ291dHNpZGUnID0gdHJ1ZTtcbiAgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSA9ICdhdXRvJztcbiAgdHJpZ2dlcnMgPSAnaG92ZXIgZm9jdXMnO1xuICBjb250YWluZXI6IHN0cmluZztcbiAgZGlzYWJsZVRvb2x0aXAgPSBmYWxzZTtcbiAgdG9vbHRpcENsYXNzOiBzdHJpbmc7XG4gIG9wZW5EZWxheSA9IDA7XG4gIGNsb3NlRGVsYXkgPSAwO1xufVxuIiwiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgTmdab25lLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFwcGxpY2F0aW9uUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtsaXN0ZW5Ub1RyaWdnZXJzfSBmcm9tICcuLi91dGlsL3RyaWdnZXJzJztcbmltcG9ydCB7bmdiQXV0b0Nsb3NlfSBmcm9tICcuLi91dGlsL2F1dG9jbG9zZSc7XG5pbXBvcnQge3Bvc2l0aW9uRWxlbWVudHMsIFBsYWNlbWVudEFycmF5fSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcbmltcG9ydCB7UG9wdXBTZXJ2aWNlfSBmcm9tICcuLi91dGlsL3BvcHVwJztcblxuaW1wb3J0IHtOZ2JUb29sdGlwQ29uZmlnfSBmcm9tICcuL3Rvb2x0aXAtY29uZmlnJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi10b29sdGlwLXdpbmRvdycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7J1tjbGFzc10nOiAnXCJ0b29sdGlwIHNob3dcIiArICh0b29sdGlwQ2xhc3MgPyBcIiBcIiArIHRvb2x0aXBDbGFzcyA6IFwiXCIpJywgJ3JvbGUnOiAndG9vbHRpcCcsICdbaWRdJzogJ2lkJ30sXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImFycm93XCI+PC9kaXY+PGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+YCxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmdiVG9vbHRpcFdpbmRvdyB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2x0aXBDbGFzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbGlnaHR3ZWlnaHQgYW5kIGV4dGVuc2libGUgZGlyZWN0aXZlIGZvciBmYW5jeSB0b29sdGlwIGNyZWF0aW9uLlxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ2JUb29sdGlwXScsIGV4cG9ydEFzOiAnbmdiVG9vbHRpcCd9KVxuZXhwb3J0IGNsYXNzIE5nYlRvb2x0aXAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgYmUgY2xvc2VkIG9uIGBFc2NhcGVgIGtleSBhbmQgaW5zaWRlL291dHNpZGUgY2xpY2tzOlxuICAgKlxuICAgKiAqIGB0cnVlYCAtIGNsb3NlcyBvbiBib3RoIG91dHNpZGUgYW5kIGluc2lkZSBjbGlja3MgYXMgd2VsbCBhcyBgRXNjYXBlYCBwcmVzc2VzXG4gICAqICogYGZhbHNlYCAtIGRpc2FibGVzIHRoZSBhdXRvQ2xvc2UgZmVhdHVyZSAoTkI6IHRyaWdnZXJzIHN0aWxsIGFwcGx5KVxuICAgKiAqIGBcImluc2lkZVwiYCAtIGNsb3NlcyBvbiBpbnNpZGUgY2xpY2tzIGFzIHdlbGwgYXMgRXNjYXBlIHByZXNzZXNcbiAgICogKiBgXCJvdXRzaWRlXCJgIC0gY2xvc2VzIG9uIG91dHNpZGUgY2xpY2tzIChzb21ldGltZXMgYWxzbyBhY2hpZXZhYmxlIHRocm91Z2ggdHJpZ2dlcnMpXG4gICAqIGFzIHdlbGwgYXMgYEVzY2FwZWAgcHJlc3Nlc1xuICAgKlxuICAgKiBAc2luY2UgMy4wLjBcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9DbG9zZTogYm9vbGVhbiB8ICdpbnNpZGUnIHwgJ291dHNpZGUnO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZmVycmVkIHBsYWNlbWVudCBvZiB0aGUgdG9vbHRpcC5cbiAgICpcbiAgICogUG9zc2libGUgdmFsdWVzIGFyZSBgXCJ0b3BcImAsIGBcInRvcC1sZWZ0XCJgLCBgXCJ0b3AtcmlnaHRcImAsIGBcImJvdHRvbVwiYCwgYFwiYm90dG9tLWxlZnRcImAsXG4gICAqIGBcImJvdHRvbS1yaWdodFwiYCwgYFwibGVmdFwiYCwgYFwibGVmdC10b3BcImAsIGBcImxlZnQtYm90dG9tXCJgLCBgXCJyaWdodFwiYCwgYFwicmlnaHQtdG9wXCJgLFxuICAgKiBgXCJyaWdodC1ib3R0b21cImBcbiAgICpcbiAgICogQWNjZXB0cyBhbiBhcnJheSBvZiBzdHJpbmdzIG9yIGEgc3RyaW5nIHdpdGggc3BhY2Ugc2VwYXJhdGVkIHBvc3NpYmxlIHZhbHVlcy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgb3JkZXIgb2YgcHJlZmVyZW5jZSBpcyBgXCJhdXRvXCJgIChzYW1lIGFzIHRoZSBzZXF1ZW5jZSBhYm92ZSkuXG4gICAqXG4gICAqIFBsZWFzZSBzZWUgdGhlIFtwb3NpdGlvbmluZyBvdmVydmlld10oIy9wb3NpdGlvbmluZykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlbWVudDogUGxhY2VtZW50QXJyYXk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBldmVudHMgdGhhdCBzaG91bGQgdHJpZ2dlciB0aGUgdG9vbHRpcC5cbiAgICpcbiAgICogU3VwcG9ydHMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBldmVudCBuYW1lcy5cbiAgICogRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIFt0cmlnZ2VycyBkZW1vXSgjL2NvbXBvbmVudHMvdG9vbHRpcC9leGFtcGxlcyN0cmlnZ2VycykuXG4gICAqL1xuICBASW5wdXQoKSB0cmlnZ2Vyczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNlbGVjdG9yIHNwZWNpZnlpbmcgdGhlIGVsZW1lbnQgdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGFwcGVuZGVkIHRvLlxuICAgKlxuICAgKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBgXCJib2R5XCJgLlxuICAgKi9cbiAgQElucHV0KCkgY29udGFpbmVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdG9vbHRpcCBpcyBkaXNhYmxlZCBhbmQgd29uJ3QgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiBAc2luY2UgMS4xLjBcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVUb29sdGlwOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBjbGFzcyBhcHBsaWVkIHRvIHRoZSB0b29sdGlwIHdpbmRvdyBlbGVtZW50LlxuICAgKlxuICAgKiBAc2luY2UgMy4yLjBcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBDbGFzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlbmluZyBkZWxheSBpbiBtcy4gV29ya3Mgb25seSBmb3IgXCJub24tbWFudWFsXCIgb3BlbmluZyB0cmlnZ2VycyBkZWZpbmVkIGJ5IHRoZSBgdHJpZ2dlcnNgIGlucHV0LlxuICAgKlxuICAgKiBAc2luY2UgNC4xLjBcbiAgICovXG4gIEBJbnB1dCgpIG9wZW5EZWxheTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgY2xvc2luZyBkZWxheSBpbiBtcy4gV29ya3Mgb25seSBmb3IgXCJub24tbWFudWFsXCIgb3BlbmluZyB0cmlnZ2VycyBkZWZpbmVkIGJ5IHRoZSBgdHJpZ2dlcnNgIGlucHV0LlxuICAgKlxuICAgKiBAc2luY2UgNC4xLjBcbiAgICovXG4gIEBJbnB1dCgpIGNsb3NlRGVsYXk6IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB0b29sdGlwIGlzIHNob3duLiBDb250YWlucyBubyBwYXlsb2FkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNob3duID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIGhpZGRlbi4gQ29udGFpbnMgbm8gcGF5bG9hZC5cbiAgICovXG4gIEBPdXRwdXQoKSBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBfbmdiVG9vbHRpcDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfbmdiVG9vbHRpcFdpbmRvd0lkID0gYG5nYi10b29sdGlwLSR7bmV4dElkKyt9YDtcbiAgcHJpdmF0ZSBfcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2U8TmdiVG9vbHRpcFdpbmRvdz47XG4gIHByaXZhdGUgX3dpbmRvd1JlZjogQ29tcG9uZW50UmVmPE5nYlRvb2x0aXBXaW5kb3c+O1xuICBwcml2YXRlIF91bnJlZ2lzdGVyTGlzdGVuZXJzRm47XG4gIHByaXZhdGUgX3pvbmVTdWJzY3JpcHRpb246IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgY29uZmlnOiBOZ2JUb29sdGlwQ29uZmlnLFxuICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgIHByaXZhdGUgX2FwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZikge1xuICAgIHRoaXMuYXV0b0Nsb3NlID0gY29uZmlnLmF1dG9DbG9zZTtcbiAgICB0aGlzLnBsYWNlbWVudCA9IGNvbmZpZy5wbGFjZW1lbnQ7XG4gICAgdGhpcy50cmlnZ2VycyA9IGNvbmZpZy50cmlnZ2VycztcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbmZpZy5jb250YWluZXI7XG4gICAgdGhpcy5kaXNhYmxlVG9vbHRpcCA9IGNvbmZpZy5kaXNhYmxlVG9vbHRpcDtcbiAgICB0aGlzLnRvb2x0aXBDbGFzcyA9IGNvbmZpZy50b29sdGlwQ2xhc3M7XG4gICAgdGhpcy5vcGVuRGVsYXkgPSBjb25maWcub3BlbkRlbGF5O1xuICAgIHRoaXMuY2xvc2VEZWxheSA9IGNvbmZpZy5jbG9zZURlbGF5O1xuICAgIHRoaXMuX3BvcHVwU2VydmljZSA9IG5ldyBQb3B1cFNlcnZpY2U8TmdiVG9vbHRpcFdpbmRvdz4oXG4gICAgICAgIE5nYlRvb2x0aXBXaW5kb3csIGluamVjdG9yLCB2aWV3Q29udGFpbmVyUmVmLCBfcmVuZGVyZXIsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgX2FwcGxpY2F0aW9uUmVmKTtcblxuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24gPSBfbmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fd2luZG93UmVmKSB7XG4gICAgICAgIHBvc2l0aW9uRWxlbWVudHMoXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX3dpbmRvd1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCB0aGlzLnBsYWNlbWVudCxcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID09PSAnYm9keScsICdicy10b29sdGlwJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cmluZyBjb250ZW50IG9yIGEgYFRlbXBsYXRlUmVmYCBmb3IgdGhlIGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBJZiB0aGUgY29udGVudCBpZiBmYWxzeSwgdGhlIHRvb2x0aXAgd29uJ3Qgb3Blbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBuZ2JUb29sdGlwKHZhbHVlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fbmdiVG9vbHRpcCA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUgJiYgdGhpcy5fd2luZG93UmVmKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG5nYlRvb2x0aXAoKSB7IHJldHVybiB0aGlzLl9uZ2JUb29sdGlwOyB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBcIm1hbnVhbFwiIHRyaWdnZXJpbmcuXG4gICAqIFRoZSBgY29udGV4dGAgaXMgYW4gb3B0aW9uYWwgdmFsdWUgdG8gYmUgaW5qZWN0ZWQgaW50byB0aGUgdG9vbHRpcCB0ZW1wbGF0ZSB3aGVuIGl0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICBvcGVuKGNvbnRleHQ/OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuX3dpbmRvd1JlZiAmJiB0aGlzLl9uZ2JUb29sdGlwICYmICF0aGlzLmRpc2FibGVUb29sdGlwKSB7XG4gICAgICB0aGlzLl93aW5kb3dSZWYgPSB0aGlzLl9wb3B1cFNlcnZpY2Uub3Blbih0aGlzLl9uZ2JUb29sdGlwLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS50b29sdGlwQ2xhc3MgPSB0aGlzLnRvb2x0aXBDbGFzcztcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5pZCA9IHRoaXMuX25nYlRvb2x0aXBXaW5kb3dJZDtcblxuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLl9uZ2JUb29sdGlwV2luZG93SWQpO1xuXG4gICAgICBpZiAodGhpcy5jb250YWluZXIgPT09ICdib2R5Jykge1xuICAgICAgICB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLl93aW5kb3dSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIG5lZWQgdG8gZGV0ZWN0IGNoYW5nZXMsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGVyZSAub3BlbigpIG1pZ2h0IGJlIGNhbGxlZCBmcm9tLlxuICAgICAgLy8gRXguIG9wZW5pbmcgdG9vbHRpcCBmcm9tIG9uZSBvZiBsaWZlY3ljbGUgaG9va3MgdGhhdCBydW4gYWZ0ZXIgdGhlIENEXG4gICAgICAvLyAoc2F5IGZyb20gbmdBZnRlclZpZXdJbml0KSB3aWxsIHJlc3VsdCBpbiAnRXhwcmVzc2lvbkhhc0NoYW5nZWQnIGV4Y2VwdGlvblxuICAgICAgdGhpcy5fd2luZG93UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBtYXJrIGZvciBjaGVjaywgYmVjYXVzZSB0b29sdGlwIHdvbid0IHdvcmsgaW5zaWRlIHRoZSBPblB1c2ggY29tcG9uZW50LlxuICAgICAgLy8gRXguIHdoZW4gd2UgdXNlIGV4cHJlc3Npb24gbGlrZSBge3sgdG9vbHRpcC5pc09wZW4oKSA6ICdvcGVuZWQnIDogJ2Nsb3NlZCcgfX1gXG4gICAgICAvLyBpbnNpZGUgdGhlIHRlbXBsYXRlIG9mIGFuIE9uUHVzaCBjb21wb25lbnQgYW5kIHdlIGNoYW5nZSB0aGUgdG9vbHRpcCBmcm9tXG4gICAgICAvLyBvcGVuIC0+IGNsb3NlZCwgdGhlIGV4cHJlc3Npb24gaW4gcXVlc3Rpb24gd29uJ3QgYmUgdXBkYXRlZCB1bmxlc3Mgd2UgZXhwbGljaXRseVxuICAgICAgLy8gbWFyayB0aGUgcGFyZW50IGNvbXBvbmVudCB0byBiZSBjaGVja2VkLlxuICAgICAgdGhpcy5fd2luZG93UmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICBuZ2JBdXRvQ2xvc2UoXG4gICAgICAgICAgdGhpcy5fbmdab25lLCB0aGlzLl9kb2N1bWVudCwgdGhpcy5hdXRvQ2xvc2UsICgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5oaWRkZW4sXG4gICAgICAgICAgW3RoaXMuX3dpbmRvd1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50XSk7XG5cbiAgICAgIHRoaXMuc2hvd24uZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHRvb2x0aXAuXG4gICAqXG4gICAqIFRoaXMgaXMgY29uc2lkZXJlZCB0byBiZSBhIFwibWFudWFsXCIgdHJpZ2dlcmluZyBvZiB0aGUgdG9vbHRpcC5cbiAgICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93aW5kb3dSZWYgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgIHRoaXMuX3BvcHVwU2VydmljZS5jbG9zZSgpO1xuICAgICAgdGhpcy5fd2luZG93UmVmID0gbnVsbDtcbiAgICAgIHRoaXMuaGlkZGVuLmVtaXQoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB0b29sdGlwLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBcIm1hbnVhbFwiIHRyaWdnZXJpbmcgb2YgdGhlIHRvb2x0aXAuXG4gICAqL1xuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dpbmRvd1JlZikge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAsIGlmIHRoZSBwb3BvdmVyIGlzIGN1cnJlbnRseSBzaG93bi5cbiAgICovXG4gIGlzT3BlbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3dpbmRvd1JlZiAhPSBudWxsOyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fdW5yZWdpc3Rlckxpc3RlbmVyc0ZuID0gbGlzdGVuVG9UcmlnZ2VycyhcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50cmlnZ2VycywgdGhpcy5pc09wZW4uYmluZCh0aGlzKSwgdGhpcy5vcGVuLmJpbmQodGhpcyksXG4gICAgICAgIHRoaXMuY2xvc2UuYmluZCh0aGlzKSwgK3RoaXMub3BlbkRlbGF5LCArdGhpcy5jbG9zZURlbGF5KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICAvLyBUaGlzIGNoZWNrIGlzIG5lZWRlZCBhcyBpdCBtaWdodCBoYXBwZW4gdGhhdCBuZ09uRGVzdHJveSBpcyBjYWxsZWQgYmVmb3JlIG5nT25Jbml0XG4gICAgLy8gdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2lzc3Vlcy8yMTk5XG4gICAgaWYgKHRoaXMuX3VucmVnaXN0ZXJMaXN0ZW5lcnNGbikge1xuICAgICAgdGhpcy5fdW5yZWdpc3Rlckxpc3RlbmVyc0ZuKCk7XG4gICAgfVxuICAgIHRoaXMuX3pvbmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TmdiVG9vbHRpcCwgTmdiVG9vbHRpcFdpbmRvd30gZnJvbSAnLi90b29sdGlwJztcblxuZXhwb3J0IHtOZ2JUb29sdGlwQ29uZmlnfSBmcm9tICcuL3Rvb2x0aXAtY29uZmlnJztcbmV4cG9ydCB7TmdiVG9vbHRpcH0gZnJvbSAnLi90b29sdGlwJztcbmV4cG9ydCB7UGxhY2VtZW50fSBmcm9tICcuLi91dGlsL3Bvc2l0aW9uaW5nJztcblxuQE5nTW9kdWxlKHtkZWNsYXJhdGlvbnM6IFtOZ2JUb29sdGlwLCBOZ2JUb29sdGlwV2luZG93XSwgZXhwb3J0czogW05nYlRvb2x0aXBdLCBlbnRyeUNvbXBvbmVudHM6IFtOZ2JUb29sdGlwV2luZG93XX0pXG5leHBvcnQgY2xhc3MgTmdiVG9vbHRpcE1vZHVsZSB7XG4gIC8qKlxuICAgKiBObyBuZWVkIGluIGZvclJvb3QgYW55bW9yZSB3aXRoIHRyZWUtc2hha2VhYmxlIHNlcnZpY2VzXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIDMuMC4wXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHsgcmV0dXJuIHtuZ01vZHVsZTogTmdiVG9vbHRpcE1vZHVsZX07IH1cbn1cbiIsImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtyZWdFeHBFc2NhcGUsIHRvU3RyaW5nfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgaGVscHMgd2l0aCB0ZXh0IGhpZ2hsaWdodGluZy5cbiAqXG4gKiBJZiBzcGxpdHMgdGhlIGByZXN1bHRgIHRleHQgaW50byBwYXJ0cyB0aGF0IGNvbnRhaW4gdGhlIHNlYXJjaGVkIGB0ZXJtYCBhbmQgZ2VuZXJhdGVzIHRoZSBIVE1MIG1hcmt1cCB0byBzaW1wbGlmeVxuICogaGlnaGxpZ2h0aW5nOlxuICpcbiAqIEV4LiBgcmVzdWx0PVwiQWxhc2thXCJgIGFuZCBgdGVybT1cImFzXCJgIHdpbGwgcHJvZHVjZSBgQWw8c3BhbiBjbGFzcz1cIm5nYi1oaWdobGlnaHRcIj5hczwvc3Bhbj5rYWAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYi1oaWdobGlnaHQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwicGFydHNcIiBsZXQtcGFydCBsZXQtaXNPZGQ9XCJvZGRcIj5gICtcbiAgICAgIGA8c3BhbiAqbmdJZj1cImlzT2RkOyBlbHNlIGV2ZW5cIiBbY2xhc3NdPVwiaGlnaGxpZ2h0Q2xhc3NcIj57e3BhcnR9fTwvc3Bhbj48bmctdGVtcGxhdGUgI2V2ZW4+e3twYXJ0fX08L25nLXRlbXBsYXRlPmAgK1xuICAgICAgYDwvbmctdGVtcGxhdGU+YCwgIC8vIHRlbXBsYXRlIG5lZWRzIHRvIGJlIGZvcm1hdHRlZCBpbiBhIGNlcnRhaW4gd2F5IHNvIHdlIGRvbid0IGFkZCBlbXB0eSB0ZXh0IG5vZGVzXG4gIHN0eWxlVXJsczogWycuL2hpZ2hsaWdodC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmdiSGlnaGxpZ2h0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcGFydHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIGZvciBgPHNwYW4+YCBlbGVtZW50cyB3cmFwcGluZyB0aGUgYHRlcm1gIGluc2lkZSB0aGUgYHJlc3VsdGAuXG4gICAqL1xuICBASW5wdXQoKSBoaWdobGlnaHRDbGFzcyA9ICduZ2ItaGlnaGxpZ2h0JztcblxuICAvKipcbiAgICogVGhlIHRleHQgaGlnaGxpZ2h0aW5nIGlzIGFkZGVkIHRvLlxuICAgKlxuICAgKiBJZiB0aGUgYHRlcm1gIGlzIGZvdW5kIGluc2lkZSB0aGlzIHRleHQsIGl0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIElmIHRoZSBgdGVybWAgY29udGFpbnMgYXJyYXkgdGhlbiBhbGwgdGhlIGl0ZW1zIGZyb20gaXQgd2lsbCBiZSBoaWdobGlnaHRlZCBpbnNpZGUgdGhlIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSByZXN1bHQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRlcm0gb3IgYXJyYXkgb2YgdGVybXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIFNpbmNlIHZlcnNpb24gYHY0LjIuMGAgdGVybSBjb3VsZCBiZSBhIGBzdHJpbmdbXWBcbiAgICovXG4gIEBJbnB1dCgpIHRlcm06IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCByZXN1bHRTdHIgPSB0b1N0cmluZyh0aGlzLnJlc3VsdCk7XG4gICAgaWYgKCFyZXN1bHRTdHIpIHtcbiAgICAgIHRoaXMucGFydHMgPSBbcmVzdWx0U3RyXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHJlc3VsdFRlcm1zOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkodGhpcy50ZXJtKSA/IHRoaXMudGVybS5tYXAoeCA9PiB0b1N0cmluZyh4KSkgOiBbdG9TdHJpbmcodGhpcy50ZXJtKV07XG5cbiAgICByZXN1bHRUZXJtcyA9IHJlc3VsdFRlcm1zLmZpbHRlcih4ID0+IHgpO1xuICAgIGlmICghcmVzdWx0VGVybXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhcnRzID0gW3Jlc3VsdFN0cl07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVnZXhTdHIgPSBgKCR7cmVzdWx0VGVybXMubWFwKHggPT4gcmVnRXhwRXNjYXBlKHgpKS5qb2luKCd8Jyl9KWA7XG4gICAgdGhpcy5wYXJ0cyA9IHJlc3VsdFN0ci5zcGxpdChuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnZ21pJykpO1xuICB9XG59XG4iLCJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBUZW1wbGF0ZVJlZiwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHt0b1N0cmluZ30gZnJvbSAnLi4vdXRpbC91dGlsJztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgdGhlIHR5cGVhaGVhZCByZXN1bHQgdGVtcGxhdGUgaW4gY2FzZSB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBvbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdWx0VGVtcGxhdGVDb250ZXh0IHtcbiAgLyoqXG4gICAqIFlvdXIgdHlwZWFoZWFkIHJlc3VsdCBpdGVtLlxuICAgKi9cbiAgcmVzdWx0OiBhbnk7XG5cbiAgLyoqXG4gICAqIFNlYXJjaCB0ZXJtIGZyb20gdGhlIGA8aW5wdXQ+YCB1c2VkIHRvIGdldCBjdXJyZW50IHJlc3VsdC5cbiAgICovXG4gIHRlcm06IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdiLXR5cGVhaGVhZC13aW5kb3cnLFxuICBleHBvcnRBczogJ25nYlR5cGVhaGVhZFdpbmRvdycsXG4gIGhvc3Q6IHsnKG1vdXNlZG93biknOiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCknLCAnY2xhc3MnOiAnZHJvcGRvd24tbWVudSBzaG93JywgJ3JvbGUnOiAnbGlzdGJveCcsICdbaWRdJzogJ2lkJ30sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNydCBsZXQtcmVzdWx0PVwicmVzdWx0XCIgbGV0LXRlcm09XCJ0ZXJtXCIgbGV0LWZvcm1hdHRlcj1cImZvcm1hdHRlclwiPlxuICAgICAgPG5nYi1oaWdobGlnaHQgW3Jlc3VsdF09XCJmb3JtYXR0ZXIocmVzdWx0KVwiIFt0ZXJtXT1cInRlcm1cIj48L25nYi1oaWdobGlnaHQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwicmVzdWx0c1wiIGxldC1yZXN1bHQgbGV0LWlkeD1cImluZGV4XCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgW2lkXT1cImlkICsgJy0nICsgaWR4XCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpZHggPT09IGFjdGl2ZUlkeFwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm1hcmtBY3RpdmUoaWR4KVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QocmVzdWx0KVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJyZXN1bHRUZW1wbGF0ZSB8fCBydFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyZXN1bHQ6IHJlc3VsdCwgdGVybTogdGVybSwgZm9ybWF0dGVyOiBmb3JtYXR0ZXJ9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTmdiVHlwZWFoZWFkV2luZG93IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWN0aXZlSWR4ID0gMDtcblxuICAvKipcbiAgICogIFRoZSBpZCBmb3IgdGhlIHR5cGVhaGVhZCB3aW5kb3cuIFRoZSBpZCBzaG91bGQgYmUgdW5pcXVlIGFuZCB0aGUgc2FtZVxuICAgKiAgYXMgdGhlIGFzc29jaWF0ZWQgdHlwZWFoZWFkJ3MgaWQuXG4gICAqL1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgaWYgdGhlIGZpcnN0IHJvdyBzaG91bGQgYmUgYWN0aXZlIGluaXRpYWxseVxuICAgKi9cbiAgQElucHV0KCkgZm9jdXNGaXJzdCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFR5cGVhaGVhZCBtYXRjaCByZXN1bHRzIHRvIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0cztcblxuICAvKipcbiAgICogU2VhcmNoIHRlcm0gdXNlZCB0byBnZXQgY3VycmVudCByZXN1bHRzXG4gICAqL1xuICBASW5wdXQoKSB0ZXJtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdXNlZCB0byBmb3JtYXQgYSBnaXZlbiByZXN1bHQgYmVmb3JlIGRpc3BsYXkuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhIGZvcm1hdHRlZCBzdHJpbmcgd2l0aG91dCBhbnlcbiAgICogSFRNTCBtYXJrdXBcbiAgICovXG4gIEBJbnB1dCgpIGZvcm1hdHRlciA9IHRvU3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHRlbXBsYXRlIHRvIG92ZXJyaWRlIGEgbWF0Y2hpbmcgcmVzdWx0IGRlZmF1bHQgZGlzcGxheVxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlc3VsdFRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIEV2ZW50IHJhaXNlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnRpY3VsYXIgcmVzdWx0IHJvd1xuICAgKi9cbiAgQE91dHB1dCgnc2VsZWN0Jykgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgnYWN0aXZlQ2hhbmdlJykgYWN0aXZlQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgaGFzQWN0aXZlKCkgeyByZXR1cm4gdGhpcy5hY3RpdmVJZHggPiAtMSAmJiB0aGlzLmFjdGl2ZUlkeCA8IHRoaXMucmVzdWx0cy5sZW5ndGg7IH1cblxuICBnZXRBY3RpdmUoKSB7IHJldHVybiB0aGlzLnJlc3VsdHNbdGhpcy5hY3RpdmVJZHhdOyB9XG5cbiAgbWFya0FjdGl2ZShhY3RpdmVJZHg6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlSWR4ID0gYWN0aXZlSWR4O1xuICAgIHRoaXMuX2FjdGl2ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlSWR4ID09PSB0aGlzLnJlc3VsdHMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5hY3RpdmVJZHggPSB0aGlzLmZvY3VzRmlyc3QgPyAodGhpcy5hY3RpdmVJZHggKyAxKSAlIHRoaXMucmVzdWx0cy5sZW5ndGggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVJZHgrKztcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICBpZiAodGhpcy5hY3RpdmVJZHggPCAwKSB7XG4gICAgICB0aGlzLmFjdGl2ZUlkeCA9IHRoaXMucmVzdWx0cy5sZW5ndGggLSAxO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVJZHggPT09IDApIHtcbiAgICAgIHRoaXMuYWN0aXZlSWR4ID0gdGhpcy5mb2N1c0ZpcnN0ID8gdGhpcy5yZXN1bHRzLmxlbmd0aCAtIDEgOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVJZHgtLTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlQ2hhbmdlZCgpO1xuICB9XG5cbiAgcmVzZXRBY3RpdmUoKSB7XG4gICAgdGhpcy5hY3RpdmVJZHggPSB0aGlzLmZvY3VzRmlyc3QgPyAwIDogLTE7XG4gICAgdGhpcy5fYWN0aXZlQ2hhbmdlZCgpO1xuICB9XG5cbiAgc2VsZWN0KGl0ZW0pIHsgdGhpcy5zZWxlY3RFdmVudC5lbWl0KGl0ZW0pOyB9XG5cbiAgbmdPbkluaXQoKSB7IHRoaXMucmVzZXRBY3RpdmUoKTsgfVxuXG4gIHByaXZhdGUgX2FjdGl2ZUNoYW5nZWQoKSB7XG4gICAgdGhpcy5hY3RpdmVDaGFuZ2VFdmVudC5lbWl0KHRoaXMuYWN0aXZlSWR4ID49IDAgPyB0aGlzLmlkICsgJy0nICsgdGhpcy5hY3RpdmVJZHggOiB1bmRlZmluZWQpO1xuICB9XG59XG4iLCJpbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cblxuLy8gdXNlZnVsbmVzcyAoYW5kIGRlZmF1bHQgdmFsdWUpIG9mIGRlbGF5IGRvY3VtZW50ZWQgaW4gTWF0ZXJpYWwncyBDREtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9ibG9iLzY0MDVkYTliOGU4NTMyYTdlNWM4NTRjOTIwZWUxODE1YzI3NWQ3MzQvc3JjL2Nkay9hMTF5L2xpdmUtYW5ub3VuY2VyL2xpdmUtYW5ub3VuY2VyLnRzI0w1MFxuZXhwb3J0IHR5cGUgQVJJQV9MSVZFX0RFTEFZX1RZUEUgPSBudW1iZXIgfCBudWxsO1xuZXhwb3J0IGNvbnN0IEFSSUFfTElWRV9ERUxBWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBUklBX0xJVkVfREVMQVlfVFlQRT4oXG4gICAgJ2xpdmUgYW5ub3VuY2VyIGRlbGF5Jywge3Byb3ZpZGVkSW46ICdyb290JywgZmFjdG9yeTogQVJJQV9MSVZFX0RFTEFZX0ZBQ1RPUll9KTtcbmV4cG9ydCBmdW5jdGlvbiBBUklBX0xJVkVfREVMQVlfRkFDVE9SWSgpOiBudW1iZXIge1xuICByZXR1cm4gMTAwO1xufVxuXG5cbmZ1bmN0aW9uIGdldExpdmVFbGVtZW50KGRvY3VtZW50OiBhbnksIGxhenlDcmVhdGUgPSBmYWxzZSk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKCcjbmdiLWxpdmUnKSBhcyBIVE1MRWxlbWVudDtcblxuICBpZiAoZWxlbWVudCA9PSBudWxsICYmIGxhenlDcmVhdGUpIHtcbiAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAnbmdiLWxpdmUnKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgJ3BvbGl0ZScpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWF0b21pYycsICd0cnVlJyk7XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3NyLW9ubHknKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn1cblxuXG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIExpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LCBASW5qZWN0KEFSSUFfTElWRV9ERUxBWSkgcHJpdmF0ZSBfZGVsYXk6IGFueSkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZ2V0TGl2ZUVsZW1lbnQodGhpcy5fZG9jdW1lbnQpO1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgc2F5KG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRMaXZlRWxlbWVudCh0aGlzLl9kb2N1bWVudCwgdHJ1ZSk7XG4gICAgY29uc3QgZGVsYXkgPSB0aGlzLl9kZWxheTtcblxuICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSAnJztcbiAgICBjb25zdCBzZXRUZXh0ID0gKCkgPT4gZWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7XG4gICAgaWYgKGRlbGF5ID09PSBudWxsKSB7XG4gICAgICBzZXRUZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoc2V0VGV4dCwgZGVsYXkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhY2VtZW50QXJyYXl9IGZyb20gJy4uL3V0aWwvcG9zaXRpb25pbmcnO1xuXG4vKipcbiAqIEEgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGZvciB0aGUgW2BOZ2JUeXBlYWhlYWRgXSgjL2NvbXBvbmVudHMvdHlwZWFoZWFkL2FwaSNOZ2JUeXBlYWhlYWQpIGNvbXBvbmVudC5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgdHlwZWFoZWFkcyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdiVHlwZWFoZWFkQ29uZmlnIHtcbiAgY29udGFpbmVyO1xuICBlZGl0YWJsZSA9IHRydWU7XG4gIGZvY3VzRmlyc3QgPSB0cnVlO1xuICBzaG93SGludCA9IGZhbHNlO1xuICBwbGFjZW1lbnQ6IFBsYWNlbWVudEFycmF5ID0gWydib3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnLCAndG9wLWxlZnQnLCAndG9wLXJpZ2h0J107XG59XG4iLCJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBBcHBsaWNhdGlvblJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0xpdmV9IGZyb20gJy4uL3V0aWwvYWNjZXNzaWJpbGl0eS9saXZlJztcbmltcG9ydCB7bmdiQXV0b0Nsb3NlfSBmcm9tICcuLi91dGlsL2F1dG9jbG9zZSc7XG5pbXBvcnQge0tleX0gZnJvbSAnLi4vdXRpbC9rZXknO1xuaW1wb3J0IHtQb3B1cFNlcnZpY2V9IGZyb20gJy4uL3V0aWwvcG9wdXAnO1xuaW1wb3J0IHtQbGFjZW1lbnRBcnJheSwgcG9zaXRpb25FbGVtZW50c30gZnJvbSAnLi4vdXRpbC9wb3NpdGlvbmluZyc7XG5pbXBvcnQge2lzRGVmaW5lZCwgdG9TdHJpbmd9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbmltcG9ydCB7TmdiVHlwZWFoZWFkQ29uZmlnfSBmcm9tICcuL3R5cGVhaGVhZC1jb25maWcnO1xuaW1wb3J0IHtOZ2JUeXBlYWhlYWRXaW5kb3csIFJlc3VsdFRlbXBsYXRlQ29udGV4dH0gZnJvbSAnLi90eXBlYWhlYWQtd2luZG93JztcblxuXG5jb25zdCBOR0JfVFlQRUFIRUFEX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdiVHlwZWFoZWFkKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQW4gZXZlbnQgZW1pdHRlZCByaWdodCBiZWZvcmUgYW4gaXRlbSBpcyBzZWxlY3RlZCBmcm9tIHRoZSByZXN1bHQgbGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZ2JUeXBlYWhlYWRTZWxlY3RJdGVtRXZlbnQge1xuICAvKipcbiAgICogVGhlIGl0ZW0gZnJvbSB0aGUgcmVzdWx0IGxpc3QgYWJvdXQgdG8gYmUgc2VsZWN0ZWQuXG4gICAqL1xuICBpdGVtOiBhbnk7XG5cbiAgLyoqXG4gICAqIENhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIHByZXZlbnQgaXRlbSBzZWxlY3Rpb24gZnJvbSBoYXBwZW5pbmcuXG4gICAqL1xuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZDtcbn1cblxubGV0IG5leHRXaW5kb3dJZCA9IDA7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgcHJvdmlkaW5nIGEgc2ltcGxlIHdheSBvZiBjcmVhdGluZyBwb3dlcmZ1bCB0eXBlYWhlYWRzIGZyb20gYW55IHRleHQgaW5wdXQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W25nYlR5cGVhaGVhZF0nLFxuICBleHBvcnRBczogJ25nYlR5cGVhaGVhZCcsXG4gIGhvc3Q6IHtcbiAgICAnKGJsdXIpJzogJ2hhbmRsZUJsdXIoKScsXG4gICAgJ1tjbGFzcy5vcGVuXSc6ICdpc1BvcHVwT3BlbigpJyxcbiAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleURvd24oJGV2ZW50KScsXG4gICAgJ1thdXRvY29tcGxldGVdJzogJ2F1dG9jb21wbGV0ZScsXG4gICAgJ2F1dG9jYXBpdGFsaXplJzogJ29mZicsXG4gICAgJ2F1dG9jb3JyZWN0JzogJ29mZicsXG4gICAgJ3JvbGUnOiAnY29tYm9ib3gnLFxuICAgICdhcmlhLW11bHRpbGluZSc6ICdmYWxzZScsXG4gICAgJ1thdHRyLmFyaWEtYXV0b2NvbXBsZXRlXSc6ICdzaG93SGludCA/IFwiYm90aFwiIDogXCJsaXN0XCInLFxuICAgICdbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdJzogJ2FjdGl2ZURlc2NlbmRhbnQnLFxuICAgICdbYXR0ci5hcmlhLW93bnNdJzogJ2lzUG9wdXBPcGVuKCkgPyBwb3B1cElkIDogbnVsbCcsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzUG9wdXBPcGVuKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW05HQl9UWVBFQUhFQURfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIE5nYlR5cGVhaGVhZCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2U8TmdiVHlwZWFoZWFkV2luZG93PjtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2Nsb3NlZCQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9pbnB1dFZhbHVlQmFja3VwOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwcml2YXRlIF9yZXN1YnNjcmliZVR5cGVhaGVhZDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG4gIHByaXZhdGUgX3dpbmRvd1JlZjogQ29tcG9uZW50UmVmPE5nYlR5cGVhaGVhZFdpbmRvdz47XG4gIHByaXZhdGUgX3pvbmVTdWJzY3JpcHRpb246IGFueTtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGZvciB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIGZvciB0aGUgYDxpbnB1dD5gIGVsZW1lbnQuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBcIm9mZlwiYCB0byBkaXNhYmxlIHRoZSBuYXRpdmUgYnJvd3NlciBhdXRvY29tcGxldGUsIGJ1dCB5b3UgY2FuIG92ZXJyaWRlIGl0IGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogQHNpbmNlIDIuMS4wXG4gICAqL1xuICBASW5wdXQoKSBhdXRvY29tcGxldGUgPSAnb2ZmJztcblxuICAvKipcbiAgICogQSBzZWxlY3RvciBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IHRoZSB0eXBlYWhlYWQgcG9wdXAgd2lsbCBiZSBhcHBlbmRlZCB0by5cbiAgICpcbiAgICogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgYFwiYm9keVwiYC5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIG1vZGVsIHZhbHVlcyB3aWxsIG5vdCBiZSByZXN0cmljdGVkIG9ubHkgdG8gaXRlbXMgc2VsZWN0ZWQgZnJvbSB0aGUgcG9wdXAuXG4gICAqL1xuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgcmVzdWx0IGxpc3Qgd2lsbCBhbHdheXMgc3RheSBmb2N1c2VkIHdoaWxlIHR5cGluZy5cbiAgICovXG4gIEBJbnB1dCgpIGZvY3VzRmlyc3Q6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIGFuIGl0ZW0gZnJvbSB0aGUgcmVzdWx0IGxpc3QgdG8gYSBgc3RyaW5nYCB0byBkaXNwbGF5IGluIHRoZSBgPGlucHV0PmAgZmllbGQuXG4gICAqXG4gICAqIEl0IGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgc29tZXRoaW5nIGluIHRoZSBwb3B1cCBvciB0aGUgbW9kZWwgdmFsdWUgY2hhbmdlcywgc28gdGhlIGlucHV0IG5lZWRzIHRvXG4gICAqIGJlIHVwZGF0ZWQuXG4gICAqL1xuICBASW5wdXQoKSBpbnB1dEZvcm1hdHRlcjogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhIHN0cmVhbSBvZiB0ZXh0IHZhbHVlcyBmcm9tIHRoZSBgPGlucHV0PmAgZWxlbWVudCB0byB0aGUgc3RyZWFtIG9mIHRoZSBhcnJheSBvZiBpdGVtc1xuICAgKiB0byBkaXNwbGF5IGluIHRoZSB0eXBlYWhlYWQgcG9wdXAuXG4gICAqXG4gICAqIElmIHRoZSByZXN1bHRpbmcgb2JzZXJ2YWJsZSBlbWl0cyBhIG5vbi1lbXB0eSBhcnJheSAtIHRoZSBwb3B1cCB3aWxsIGJlIHNob3duLiBJZiBpdCBlbWl0cyBhbiBlbXB0eSBhcnJheSAtIHRoZVxuICAgKiBwb3B1cCB3aWxsIGJlIGNsb3NlZC5cbiAgICpcbiAgICogU2VlIHRoZSBbYmFzaWMgZXhhbXBsZV0oIy9jb21wb25lbnRzL3R5cGVhaGVhZC9leGFtcGxlcyNiYXNpYykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBgdGhpc2AgYXJndW1lbnQgaXMgYHVuZGVmaW5lZGAgc28geW91IG5lZWQgdG8gZXhwbGljaXRseSBiaW5kIGl0IHRvIGEgZGVzaXJlZCBcInRoaXNcIiB0YXJnZXQuXG4gICAqL1xuICBASW5wdXQoKSBuZ2JUeXBlYWhlYWQ6ICh0ZXh0OiBPYnNlcnZhYmxlPHN0cmluZz4pID0+IE9ic2VydmFibGU8YW55W10+O1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhbiBpdGVtIGZyb20gdGhlIHJlc3VsdCBsaXN0IHRvIGEgYHN0cmluZ2AgdG8gZGlzcGxheSBpbiB0aGUgcG9wdXAuXG4gICAqXG4gICAqIE11c3QgYmUgcHJvdmlkZWQsIGlmIHlvdXIgYG5nYlR5cGVhaGVhZGAgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIgdGhhbiBgT2JzZXJ2YWJsZTxzdHJpbmdbXT5gLlxuICAgKlxuICAgKiBBbHRlcm5hdGl2ZWx5IGZvciBtb3JlIGNvbXBsZXggbWFya3VwIGluIHRoZSBwb3B1cCB5b3Ugc2hvdWxkIHVzZSBgcmVzdWx0VGVtcGxhdGVgLlxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0Rm9ybWF0dGVyOiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW1wbGF0ZSB0byBvdmVycmlkZSB0aGUgd2F5IHJlc3VsdGluZyBpdGVtcyBhcmUgZGlzcGxheWVkIGluIHRoZSBwb3B1cC5cbiAgICpcbiAgICogU2VlIHRoZSBbUmVzdWx0VGVtcGxhdGVDb250ZXh0XSgjL2NvbXBvbmVudHMvdHlwZWFoZWFkL2FwaSNSZXN1bHRUZW1wbGF0ZUNvbnRleHQpIGZvciB0aGUgdGVtcGxhdGUgY29udGV4dC5cbiAgICpcbiAgICogQWxzbyBzZWUgdGhlIFt0ZW1wbGF0ZSBmb3IgcmVzdWx0cyBkZW1vXSgjL2NvbXBvbmVudHMvdHlwZWFoZWFkL2V4YW1wbGVzI3RlbXBsYXRlKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgQElucHV0KCkgcmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlc3VsdFRlbXBsYXRlQ29udGV4dD47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgd2lsbCBzaG93IHRoZSBoaW50IGluIHRoZSBgPGlucHV0PmAgd2hlbiBhbiBpdGVtIGluIHRoZSByZXN1bHQgbGlzdCBtYXRjaGVzLlxuICAgKi9cbiAgQElucHV0KCkgc2hvd0hpbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmZXJyZWQgcGxhY2VtZW50IG9mIHRoZSB0eXBlYWhlYWQuXG4gICAqXG4gICAqIFBvc3NpYmxlIHZhbHVlcyBhcmUgYFwidG9wXCJgLCBgXCJ0b3AtbGVmdFwiYCwgYFwidG9wLXJpZ2h0XCJgLCBgXCJib3R0b21cImAsIGBcImJvdHRvbS1sZWZ0XCJgLFxuICAgKiBgXCJib3R0b20tcmlnaHRcImAsIGBcImxlZnRcImAsIGBcImxlZnQtdG9wXCJgLCBgXCJsZWZ0LWJvdHRvbVwiYCwgYFwicmlnaHRcImAsIGBcInJpZ2h0LXRvcFwiYCxcbiAgICogYFwicmlnaHQtYm90dG9tXCJgXG4gICAqXG4gICAqIEFjY2VwdHMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBhIHN0cmluZyB3aXRoIHNwYWNlIHNlcGFyYXRlZCBwb3NzaWJsZSB2YWx1ZXMuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IG9yZGVyIG9mIHByZWZlcmVuY2UgaXMgYFwiYm90dG9tLWxlZnQgYm90dG9tLXJpZ2h0IHRvcC1sZWZ0IHRvcC1yaWdodFwiYFxuICAgKlxuICAgKiBQbGVhc2Ugc2VlIHRoZSBbcG9zaXRpb25pbmcgb3ZlcnZpZXddKCMvcG9zaXRpb25pbmcpIGZvciBtb3JlIGRldGFpbHMuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZW1lbnQ6IFBsYWNlbWVudEFycmF5ID0gJ2JvdHRvbS1sZWZ0JztcblxuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCByaWdodCBiZWZvcmUgYW4gaXRlbSBpcyBzZWxlY3RlZCBmcm9tIHRoZSByZXN1bHQgbGlzdC5cbiAgICpcbiAgICogRXZlbnQgcGF5bG9hZCBpcyBvZiB0eXBlIFtgTmdiVHlwZWFoZWFkU2VsZWN0SXRlbUV2ZW50YF0oIy9jb21wb25lbnRzL3R5cGVhaGVhZC9hcGkjTmdiVHlwZWFoZWFkU2VsZWN0SXRlbUV2ZW50KS5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxOZ2JUeXBlYWhlYWRTZWxlY3RJdGVtRXZlbnQ+KCk7XG5cbiAgYWN0aXZlRGVzY2VuZGFudDogc3RyaW5nO1xuICBwb3B1cElkID0gYG5nYi10eXBlYWhlYWQtJHtuZXh0V2luZG93SWQrK31gO1xuXG4gIHByaXZhdGUgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICBjb25maWc6IE5nYlR5cGVhaGVhZENvbmZpZywgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUgX2xpdmU6IExpdmUsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9hcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYpIHtcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbmZpZy5jb250YWluZXI7XG4gICAgdGhpcy5lZGl0YWJsZSA9IGNvbmZpZy5lZGl0YWJsZTtcbiAgICB0aGlzLmZvY3VzRmlyc3QgPSBjb25maWcuZm9jdXNGaXJzdDtcbiAgICB0aGlzLnNob3dIaW50ID0gY29uZmlnLnNob3dIaW50O1xuICAgIHRoaXMucGxhY2VtZW50ID0gY29uZmlnLnBsYWNlbWVudDtcblxuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlcyA9IGZyb21FdmVudDxFdmVudD4oX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2lucHV0JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKCRldmVudCA9PiAoJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSkpO1xuXG4gICAgdGhpcy5fcmVzdWJzY3JpYmVUeXBlYWhlYWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gICAgdGhpcy5fcG9wdXBTZXJ2aWNlID0gbmV3IFBvcHVwU2VydmljZTxOZ2JUeXBlYWhlYWRXaW5kb3c+KFxuICAgICAgICBOZ2JUeXBlYWhlYWRXaW5kb3csIF9pbmplY3RvciwgX3ZpZXdDb250YWluZXJSZWYsIF9yZW5kZXJlciwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBfYXBwbGljYXRpb25SZWYpO1xuXG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbiA9IG5nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNQb3B1cE9wZW4oKSkge1xuICAgICAgICBwb3NpdGlvbkVsZW1lbnRzKFxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl93aW5kb3dSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCwgdGhpcy5wbGFjZW1lbnQsXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9PT0gJ2JvZHknKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWVzJCA9IHRoaXMuX3ZhbHVlQ2hhbmdlcy5waXBlKHRhcCh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLl9pbnB1dFZhbHVlQmFja3VwID0gdGhpcy5zaG93SGludCA/IHZhbHVlIDogbnVsbDtcbiAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgcmVzdWx0cyQgPSBpbnB1dFZhbHVlcyQucGlwZSh0aGlzLm5nYlR5cGVhaGVhZCk7XG4gICAgY29uc3QgcHJvY2Vzc2VkUmVzdWx0cyQgPSByZXN1bHRzJC5waXBlKHRhcCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgdXNlcklucHV0JCA9IHRoaXMuX3Jlc3Vic2NyaWJlVHlwZWFoZWFkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHByb2Nlc3NlZFJlc3VsdHMkKSk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5fc3Vic2NyaWJlVG9Vc2VySW5wdXQodXNlcklucHV0JCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbG9zZVBvcHVwKCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmVGcm9tVXNlcklucHV0KCk7XG4gICAgdGhpcy5fem9uZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQgeyB0aGlzLl9vbkNoYW5nZSA9IGZuOyB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLl9vblRvdWNoZWQgPSBmbjsgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl93cml0ZUlucHV0VmFsdWUodGhpcy5fZm9ybWF0SXRlbUZvcklucHV0KHZhbHVlKSk7XG4gICAgaWYgKHRoaXMuc2hvd0hpbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0VmFsdWVCYWNrdXAgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyB0eXBlYWhlYWQgcG9wdXAgd2luZG93XG4gICAqL1xuICBkaXNtaXNzUG9wdXAoKSB7XG4gICAgaWYgKHRoaXMuaXNQb3B1cE9wZW4oKSkge1xuICAgICAgdGhpcy5fcmVzdWJzY3JpYmVUeXBlYWhlYWQubmV4dChudWxsKTtcbiAgICAgIHRoaXMuX2Nsb3NlUG9wdXAoKTtcbiAgICAgIGlmICh0aGlzLnNob3dIaW50ICYmIHRoaXMuX2lucHV0VmFsdWVCYWNrdXAgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fd3JpdGVJbnB1dFZhbHVlKHRoaXMuX2lucHV0VmFsdWVCYWNrdXApO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHlwZWFoZWFkIHBvcHVwIHdpbmRvdyBpcyBkaXNwbGF5ZWRcbiAgICovXG4gIGlzUG9wdXBPcGVuKCkgeyByZXR1cm4gdGhpcy5fd2luZG93UmVmICE9IG51bGw7IH1cblxuICBoYW5kbGVCbHVyKCkge1xuICAgIHRoaXMuX3Jlc3Vic2NyaWJlVHlwZWFoZWFkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzUG9wdXBPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGVwcmVjYXRpb25cbiAgICBzd2l0Y2ggKGV2ZW50LndoaWNoKSB7XG4gICAgICBjYXNlIEtleS5BcnJvd0Rvd246XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Nob3dIaW50KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXkuQXJyb3dVcDpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnByZXYoKTtcbiAgICAgICAgdGhpcy5fc2hvd0hpbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleS5FbnRlcjpcbiAgICAgIGNhc2UgS2V5LlRhYjpcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmdldEFjdGl2ZSgpO1xuICAgICAgICBpZiAoaXNEZWZpbmVkKHJlc3VsdCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuX3NlbGVjdFJlc3VsdChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Nsb3NlUG9wdXAoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlblBvcHVwKCkge1xuICAgIGlmICghdGhpcy5pc1BvcHVwT3BlbigpKSB7XG4gICAgICB0aGlzLl9pbnB1dFZhbHVlQmFja3VwID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgdGhpcy5fd2luZG93UmVmID0gdGhpcy5fcG9wdXBTZXJ2aWNlLm9wZW4oKTtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5pZCA9IHRoaXMucG9wdXBJZDtcbiAgICAgIHRoaXMuX3dpbmRvd1JlZi5pbnN0YW5jZS5zZWxlY3RFdmVudC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB0aGlzLl9zZWxlY3RSZXN1bHRDbG9zZVBvcHVwKHJlc3VsdCkpO1xuICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmFjdGl2ZUNoYW5nZUV2ZW50LnN1YnNjcmliZSgoYWN0aXZlSWQ6IHN0cmluZykgPT4gdGhpcy5hY3RpdmVEZXNjZW5kYW50ID0gYWN0aXZlSWQpO1xuXG4gICAgICBpZiAodGhpcy5jb250YWluZXIgPT09ICdib2R5Jykge1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmNvbnRhaW5lcikuYXBwZW5kQ2hpbGQodGhpcy5fd2luZG93UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgbmdiQXV0b0Nsb3NlKFxuICAgICAgICAgIHRoaXMuX25nWm9uZSwgdGhpcy5fZG9jdW1lbnQsICdvdXRzaWRlJywgKCkgPT4gdGhpcy5kaXNtaXNzUG9wdXAoKSwgdGhpcy5fY2xvc2VkJCxcbiAgICAgICAgICBbdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl93aW5kb3dSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudF0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlUG9wdXAoKSB7XG4gICAgdGhpcy5fY2xvc2VkJC5uZXh0KCk7XG4gICAgdGhpcy5fcG9wdXBTZXJ2aWNlLmNsb3NlKCk7XG4gICAgdGhpcy5fd2luZG93UmVmID0gbnVsbDtcbiAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RSZXN1bHQocmVzdWx0OiBhbnkpIHtcbiAgICBsZXQgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0SXRlbS5lbWl0KHtpdGVtOiByZXN1bHQsIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7IGRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOyB9fSk7XG4gICAgdGhpcy5fcmVzdWJzY3JpYmVUeXBlYWhlYWQubmV4dChudWxsKTtcblxuICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHJlc3VsdCk7XG4gICAgICB0aGlzLl9vbkNoYW5nZShyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdFJlc3VsdENsb3NlUG9wdXAocmVzdWx0OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RSZXN1bHQocmVzdWx0KTtcbiAgICB0aGlzLl9jbG9zZVBvcHVwKCk7XG4gIH1cblxuICBwcml2YXRlIF9zaG93SGludCgpIHtcbiAgICBpZiAodGhpcy5zaG93SGludCAmJiB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UuaGFzQWN0aXZlKCkgJiYgdGhpcy5faW5wdXRWYWx1ZUJhY2t1cCAhPSBudWxsKSB7XG4gICAgICBjb25zdCB1c2VySW5wdXRMb3dlckNhc2UgPSB0aGlzLl9pbnB1dFZhbHVlQmFja3VwLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRWYWwgPSB0aGlzLl9mb3JtYXRJdGVtRm9ySW5wdXQodGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmdldEFjdGl2ZSgpKTtcblxuICAgICAgaWYgKHVzZXJJbnB1dExvd2VyQ2FzZSA9PT0gZm9ybWF0dGVkVmFsLnN1YnN0cigwLCB0aGlzLl9pbnB1dFZhbHVlQmFja3VwLmxlbmd0aCkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICB0aGlzLl93cml0ZUlucHV0VmFsdWUodGhpcy5faW5wdXRWYWx1ZUJhY2t1cCArIGZvcm1hdHRlZFZhbC5zdWJzdHIodGhpcy5faW5wdXRWYWx1ZUJhY2t1cC5sZW5ndGgpKTtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50WydzZXRTZWxlY3Rpb25SYW5nZSddLmFwcGx5KFxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBbdGhpcy5faW5wdXRWYWx1ZUJhY2t1cC5sZW5ndGgsIGZvcm1hdHRlZFZhbC5sZW5ndGhdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3dyaXRlSW5wdXRWYWx1ZShmb3JtYXR0ZWRWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Zvcm1hdEl0ZW1Gb3JJbnB1dChpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtICE9IG51bGwgJiYgdGhpcy5pbnB1dEZvcm1hdHRlciA/IHRoaXMuaW5wdXRGb3JtYXR0ZXIoaXRlbSkgOiB0b1N0cmluZyhpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgX3dyaXRlSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB0b1N0cmluZyh2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Vc2VySW5wdXQodXNlcklucHV0JDogT2JzZXJ2YWJsZTxhbnlbXT4pOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB1c2VySW5wdXQkLnN1YnNjcmliZSgocmVzdWx0cykgPT4ge1xuICAgICAgaWYgKCFyZXN1bHRzIHx8IHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX2Nsb3NlUG9wdXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29wZW5Qb3B1cCgpO1xuICAgICAgICB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UuZm9jdXNGaXJzdCA9IHRoaXMuZm9jdXNGaXJzdDtcbiAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UudGVybSA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0Rm9ybWF0dGVyKSB7XG4gICAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLmZvcm1hdHRlciA9IHRoaXMucmVzdWx0Rm9ybWF0dGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc3VsdFRlbXBsYXRlKSB7XG4gICAgICAgICAgdGhpcy5fd2luZG93UmVmLmluc3RhbmNlLnJlc3VsdFRlbXBsYXRlID0gdGhpcy5yZXN1bHRUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl93aW5kb3dSZWYuaW5zdGFuY2UucmVzZXRBY3RpdmUoKTtcblxuICAgICAgICAvLyBUaGUgb2JzZXJ2YWJsZSBzdHJlYW0gd2UgYXJlIHN1YnNjcmliaW5nIHRvIG1pZ2h0IGhhdmUgYXN5bmMgc3RlcHNcbiAgICAgICAgLy8gYW5kIGlmIGEgY29tcG9uZW50IGNvbnRhaW5pbmcgdHlwZWFoZWFkIGlzIHVzaW5nIHRoZSBPblB1c2ggc3RyYXRlZ3lcbiAgICAgICAgLy8gdGhlIGNoYW5nZSBkZXRlY3Rpb24gdHVybiB3b3VsZG4ndCBiZSBpbnZva2VkIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgIHRoaXMuX3dpbmRvd1JlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fc2hvd0hpbnQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gbGl2ZSBhbm5vdW5jZXJcbiAgICAgIGNvbnN0IGNvdW50ID0gcmVzdWx0cyA/IHJlc3VsdHMubGVuZ3RoIDogMDtcbiAgICAgIHRoaXMuX2xpdmUuc2F5KGNvdW50ID09PSAwID8gJ05vIHJlc3VsdHMgYXZhaWxhYmxlJyA6IGAke2NvdW50fSByZXN1bHQke2NvdW50ID09PSAxID8gJycgOiAncyd9IGF2YWlsYWJsZWApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVGcm9tVXNlcklucHV0KCkge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge05nYkhpZ2hsaWdodH0gZnJvbSAnLi9oaWdobGlnaHQnO1xuaW1wb3J0IHtOZ2JUeXBlYWhlYWRXaW5kb3d9IGZyb20gJy4vdHlwZWFoZWFkLXdpbmRvdyc7XG5pbXBvcnQge05nYlR5cGVhaGVhZH0gZnJvbSAnLi90eXBlYWhlYWQnO1xuXG5leHBvcnQge05nYkhpZ2hsaWdodH0gZnJvbSAnLi9oaWdobGlnaHQnO1xuZXhwb3J0IHtOZ2JUeXBlYWhlYWRXaW5kb3d9IGZyb20gJy4vdHlwZWFoZWFkLXdpbmRvdyc7XG5leHBvcnQge05nYlR5cGVhaGVhZENvbmZpZ30gZnJvbSAnLi90eXBlYWhlYWQtY29uZmlnJztcbmV4cG9ydCB7TmdiVHlwZWFoZWFkLCBOZ2JUeXBlYWhlYWRTZWxlY3RJdGVtRXZlbnR9IGZyb20gJy4vdHlwZWFoZWFkJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmdiVHlwZWFoZWFkLCBOZ2JIaWdobGlnaHQsIE5nYlR5cGVhaGVhZFdpbmRvd10sXG4gIGV4cG9ydHM6IFtOZ2JUeXBlYWhlYWQsIE5nYkhpZ2hsaWdodF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtOZ2JUeXBlYWhlYWRXaW5kb3ddXG59KVxuZXhwb3J0IGNsYXNzIE5nYlR5cGVhaGVhZE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JUeXBlYWhlYWRNb2R1bGV9OyB9XG59XG4iLCJpbXBvcnQge05nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtOZ2JBY2NvcmRpb25Nb2R1bGV9IGZyb20gJy4vYWNjb3JkaW9uL2FjY29yZGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JBbGVydE1vZHVsZX0gZnJvbSAnLi9hbGVydC9hbGVydC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JCdXR0b25zTW9kdWxlfSBmcm9tICcuL2J1dHRvbnMvYnV0dG9ucy5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JDYXJvdXNlbE1vZHVsZX0gZnJvbSAnLi9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JDb2xsYXBzZU1vZHVsZX0gZnJvbSAnLi9jb2xsYXBzZS9jb2xsYXBzZS5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JEYXRlcGlja2VyTW9kdWxlfSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JEcm9wZG93bk1vZHVsZX0gZnJvbSAnLi9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JNb2RhbE1vZHVsZX0gZnJvbSAnLi9tb2RhbC9tb2RhbC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JQYWdpbmF0aW9uTW9kdWxlfSBmcm9tICcuL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JQb3BvdmVyTW9kdWxlfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JQcm9ncmVzc2Jhck1vZHVsZX0gZnJvbSAnLi9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JSYXRpbmdNb2R1bGV9IGZyb20gJy4vcmF0aW5nL3JhdGluZy5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUYWJzZXRNb2R1bGV9IGZyb20gJy4vdGFic2V0L3RhYnNldC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUaW1lcGlja2VyTW9kdWxlfSBmcm9tICcuL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUb29sdGlwTW9kdWxlfSBmcm9tICcuL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuaW1wb3J0IHtOZ2JUeXBlYWhlYWRNb2R1bGV9IGZyb20gJy4vdHlwZWFoZWFkL3R5cGVhaGVhZC5tb2R1bGUnO1xuXG5leHBvcnQge1xuICBOZ2JBY2NvcmRpb25Nb2R1bGUsXG4gIE5nYlBhbmVsQ2hhbmdlRXZlbnQsXG4gIE5nYkFjY29yZGlvbkNvbmZpZyxcbiAgTmdiQWNjb3JkaW9uLFxuICBOZ2JQYW5lbCxcbiAgTmdiUGFuZWxUaXRsZSxcbiAgTmdiUGFuZWxDb250ZW50LFxuICBOZ2JQYW5lbEhlYWRlcixcbiAgTmdiUGFuZWxIZWFkZXJDb250ZXh0LFxuICBOZ2JQYW5lbFRvZ2dsZVxufSBmcm9tICcuL2FjY29yZGlvbi9hY2NvcmRpb24ubW9kdWxlJztcbmV4cG9ydCB7TmdiQWxlcnRNb2R1bGUsIE5nYkFsZXJ0Q29uZmlnLCBOZ2JBbGVydH0gZnJvbSAnLi9hbGVydC9hbGVydC5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JCdXR0b25zTW9kdWxlLCBOZ2JCdXR0b25MYWJlbCwgTmdiQ2hlY2tCb3gsIE5nYlJhZGlvLCBOZ2JSYWRpb0dyb3VwfSBmcm9tICcuL2J1dHRvbnMvYnV0dG9ucy5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JDYXJvdXNlbE1vZHVsZSwgTmdiQ2Fyb3VzZWxDb25maWcsIE5nYkNhcm91c2VsLCBOZ2JTbGlkZX0gZnJvbSAnLi9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JDb2xsYXBzZU1vZHVsZSwgTmdiQ29sbGFwc2V9IGZyb20gJy4vY29sbGFwc2UvY29sbGFwc2UubW9kdWxlJztcbmV4cG9ydCB7XG4gIE5nYkNhbGVuZGFyLFxuICBOZ2JQZXJpb2QsXG4gIE5nYkNhbGVuZGFyR3JlZ29yaWFuLFxuICBOZ2JDYWxlbmRhcklzbGFtaWNDaXZpbCxcbiAgTmdiQ2FsZW5kYXJJc2xhbWljVW1hbHF1cmEsXG4gIE5nYkNhbGVuZGFySGVicmV3LFxuICBOZ2JDYWxlbmRhclBlcnNpYW4sXG4gIE5nYkRhdGVwaWNrZXJNb2R1bGUsXG4gIE5nYkRhdGVwaWNrZXJJMThuLFxuICBOZ2JEYXRlcGlja2VySTE4bkhlYnJldyxcbiAgTmdiRGF0ZXBpY2tlckNvbmZpZyxcbiAgTmdiRGF0ZXBpY2tlck5hdmlnYXRlRXZlbnQsXG4gIE5nYkRhdGVTdHJ1Y3QsXG4gIE5nYkRhdGUsXG4gIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsXG4gIE5nYkRhdGVBZGFwdGVyLFxuICBOZ2JEYXRlTmF0aXZlQWRhcHRlcixcbiAgTmdiRGF0ZU5hdGl2ZVVUQ0FkYXB0ZXIsXG4gIE5nYkRhdGVwaWNrZXIsXG4gIE5nYklucHV0RGF0ZXBpY2tlclxufSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgTmdiRHJvcGRvd25Nb2R1bGUsXG4gIE5nYkRyb3Bkb3duQW5jaG9yLFxuICBOZ2JEcm9wZG93bkNvbmZpZyxcbiAgTmdiRHJvcGRvd25JdGVtLFxuICBOZ2JEcm9wZG93bk1lbnUsXG4gIE5nYkRyb3Bkb3duVG9nZ2xlLFxuICBOZ2JEcm9wZG93blxufSBmcm9tICcuL2Ryb3Bkb3duL2Ryb3Bkb3duLm1vZHVsZSc7XG5leHBvcnQge1xuICBOZ2JNb2RhbE1vZHVsZSxcbiAgTmdiTW9kYWwsXG4gIE5nYk1vZGFsQ29uZmlnLFxuICBOZ2JNb2RhbE9wdGlvbnMsXG4gIE5nYkFjdGl2ZU1vZGFsLFxuICBOZ2JNb2RhbFJlZixcbiAgTW9kYWxEaXNtaXNzUmVhc29uc1xufSBmcm9tICcuL21vZGFsL21vZGFsLm1vZHVsZSc7XG5leHBvcnQge1xuICBOZ2JQYWdpbmF0aW9uTW9kdWxlLFxuICBOZ2JQYWdpbmF0aW9uQ29uZmlnLFxuICBOZ2JQYWdpbmF0aW9uLFxuICBOZ2JQYWdpbmF0aW9uRWxsaXBzaXMsXG4gIE5nYlBhZ2luYXRpb25GaXJzdCxcbiAgTmdiUGFnaW5hdGlvbkxhc3QsXG4gIE5nYlBhZ2luYXRpb25OZXh0LFxuICBOZ2JQYWdpbmF0aW9uTnVtYmVyLFxuICBOZ2JQYWdpbmF0aW9uUHJldmlvdXNcbn0gZnJvbSAnLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcbmV4cG9ydCB7TmdiUG9wb3Zlck1vZHVsZSwgTmdiUG9wb3ZlckNvbmZpZywgTmdiUG9wb3Zlcn0gZnJvbSAnLi9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcbmV4cG9ydCB7TmdiUHJvZ3Jlc3NiYXJNb2R1bGUsIE5nYlByb2dyZXNzYmFyQ29uZmlnLCBOZ2JQcm9ncmVzc2Jhcn0gZnJvbSAnLi9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5tb2R1bGUnO1xuZXhwb3J0IHtOZ2JSYXRpbmdNb2R1bGUsIE5nYlJhdGluZ0NvbmZpZywgTmdiUmF0aW5nfSBmcm9tICcuL3JhdGluZy9yYXRpbmcubW9kdWxlJztcbmV4cG9ydCB7XG4gIE5nYlRhYnNldE1vZHVsZSxcbiAgTmdiVGFiQ2hhbmdlRXZlbnQsXG4gIE5nYlRhYnNldENvbmZpZyxcbiAgTmdiVGFic2V0LFxuICBOZ2JUYWIsXG4gIE5nYlRhYkNvbnRlbnQsXG4gIE5nYlRhYlRpdGxlXG59IGZyb20gJy4vdGFic2V0L3RhYnNldC5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgTmdiVGltZXBpY2tlck1vZHVsZSxcbiAgTmdiVGltZXBpY2tlckNvbmZpZyxcbiAgTmdiVGltZVN0cnVjdCxcbiAgTmdiVGltZXBpY2tlcixcbiAgTmdiVGltZUFkYXB0ZXJcbn0gZnJvbSAnLi90aW1lcGlja2VyL3RpbWVwaWNrZXIubW9kdWxlJztcbmV4cG9ydCB7TmdiVG9vbHRpcE1vZHVsZSwgTmdiVG9vbHRpcENvbmZpZywgTmdiVG9vbHRpcH0gZnJvbSAnLi90b29sdGlwL3Rvb2x0aXAubW9kdWxlJztcbmV4cG9ydCB7XG4gIE5nYkhpZ2hsaWdodCxcbiAgTmdiVHlwZWFoZWFkTW9kdWxlLFxuICBOZ2JUeXBlYWhlYWRDb25maWcsXG4gIE5nYlR5cGVhaGVhZFNlbGVjdEl0ZW1FdmVudCxcbiAgTmdiVHlwZWFoZWFkXG59IGZyb20gJy4vdHlwZWFoZWFkL3R5cGVhaGVhZC5tb2R1bGUnO1xuXG5leHBvcnQge1BsYWNlbWVudH0gZnJvbSAnLi91dGlsL3Bvc2l0aW9uaW5nJztcblxuY29uc3QgTkdCX01PRFVMRVMgPSBbXG4gIE5nYkFjY29yZGlvbk1vZHVsZSwgTmdiQWxlcnRNb2R1bGUsIE5nYkJ1dHRvbnNNb2R1bGUsIE5nYkNhcm91c2VsTW9kdWxlLCBOZ2JDb2xsYXBzZU1vZHVsZSwgTmdiRGF0ZXBpY2tlck1vZHVsZSxcbiAgTmdiRHJvcGRvd25Nb2R1bGUsIE5nYk1vZGFsTW9kdWxlLCBOZ2JQYWdpbmF0aW9uTW9kdWxlLCBOZ2JQb3BvdmVyTW9kdWxlLCBOZ2JQcm9ncmVzc2Jhck1vZHVsZSwgTmdiUmF0aW5nTW9kdWxlLFxuICBOZ2JUYWJzZXRNb2R1bGUsIE5nYlRpbWVwaWNrZXJNb2R1bGUsIE5nYlRvb2x0aXBNb2R1bGUsIE5nYlR5cGVhaGVhZE1vZHVsZVxuXTtcblxuQE5nTW9kdWxlKHtpbXBvcnRzOiBOR0JfTU9EVUxFUywgZXhwb3J0czogTkdCX01PRFVMRVN9KVxuZXhwb3J0IGNsYXNzIE5nYk1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRpbmcgd2l0aCAnLmZvclJvb3QoKScgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgeW91IGNhbiBzaW1wbHkgaW1wb3J0IHRoZSBtb2R1bGUuXG4gICAqIFdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAuMC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgMy4wLjBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnMgeyByZXR1cm4ge25nTW9kdWxlOiBOZ2JNb2R1bGV9OyB9XG59XG4iXX0=","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import { switchMap } from './switchMap';\nexport function switchMapTo(innerObservable, resultSelector) {\n return resultSelector ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n//# sourceMappingURL=switchMapTo.js.map","import { __awaiter } from 'tslib';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, Optional, PLATFORM_ID, NgZone, NgModule } from '@angular/core';\nimport firebase from 'firebase/app';\nimport { of, EMPTY, throwError, Observable, concat } from 'rxjs';\nimport { subscribeOn, observeOn, switchMap, map, shareReplay, switchMapTo, catchError, mergeMap, defaultIfEmpty } from 'rxjs/operators';\nimport * as i1 from '@angular/fire';\nimport { ɵAngularFireSchedulers, ɵfirebaseAppFactory, ɵfetchInstance, ɵlazySDKProxy, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵapplyMixins } from '@angular/fire';\nimport { isPlatformServer } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nconst proxyPolyfillCompat = {\n deleteToken: null,\n getToken: null,\n onMessage: null,\n onBackgroundMessage: null,\n onTokenRefresh: null,\n requestPermission: null,\n setBackgroundMessageHandler: null,\n useServiceWorker: null,\n usePublicVapidKey: null,\n};\n\nconst VAPID_KEY = new InjectionToken('angularfire2.messaging.vapid-key');\nconst SERVICE_WORKER = new InjectionToken('angularfire2.messaging.service-worker-registeration');\n// SEMVER(7): drop\nconst firebaseLTv8 = parseInt(firebase.SDK_VERSION, 10) < 8;\nclass AngularFireMessaging {\n constructor(options, nameOrConfig, \n // tslint:disable-next-line:ban-types\n platformId, zone, vapidKey, _serviceWorker) {\n const schedulers = new ɵAngularFireSchedulers(zone);\n const serviceWorker = _serviceWorker;\n const messaging = of(undefined).pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(() => isPlatformServer(platformId) ? EMPTY : import('firebase/messaging')), map(() => ɵfirebaseAppFactory(options, zone, nameOrConfig)), switchMap(app => ɵfetchInstance(`${app.name}.messaging`, 'AngularFireMessaging', app, () => __awaiter(this, void 0, void 0, function* () {\n const messaging = app.messaging();\n if (firebaseLTv8) {\n if (vapidKey) {\n messaging.usePublicVapidKey(vapidKey);\n }\n if (serviceWorker) {\n messaging.useServiceWorker(yield serviceWorker);\n }\n }\n return messaging;\n }), [vapidKey, serviceWorker])), shareReplay({ bufferSize: 1, refCount: false }));\n this.requestPermission = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), \n // tslint:disable-next-line\n switchMap(messaging => firebase.messaging.isSupported() ? messaging.requestPermission() : throwError('Not supported.')));\n this.getToken = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap((messaging) => __awaiter(this, void 0, void 0, function* () {\n if (firebase.messaging.isSupported() && Notification.permission === 'granted') {\n if (firebaseLTv8) {\n return yield messaging.getToken();\n }\n else {\n const serviceWorkerRegistration = serviceWorker ? yield serviceWorker : null;\n return yield messaging.getToken({ vapidKey, serviceWorkerRegistration });\n }\n }\n else {\n return null;\n }\n })));\n const notificationPermission$ = new Observable(emitter => {\n navigator.permissions.query({ name: 'notifications' }).then(notificationPerm => {\n notificationPerm.onchange = () => emitter.next();\n });\n });\n const tokenChange$ = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMapTo(notificationPermission$), switchMapTo(this.getToken));\n this.tokenChanges = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(() => firebase.messaging.isSupported() ? concat(this.getToken, tokenChange$) : EMPTY));\n this.messages = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(messaging => firebase.messaging.isSupported() ? new Observable(emitter => messaging.onMessage(next => emitter.next(next), err => emitter.error(err), () => emitter.complete())) : EMPTY));\n this.requestToken = of(undefined).pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(() => this.requestPermission), catchError(() => of(null)), mergeMap(() => this.tokenChanges));\n // SEMVER(7): drop token\n this.deleteToken = (token) => messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(messaging => messaging.deleteToken(token || undefined)), defaultIfEmpty(false));\n return ɵlazySDKProxy(this, messaging, zone);\n }\n}\nAngularFireMessaging.ɵfac = function AngularFireMessaging_Factory(t) { return new (t || AngularFireMessaging)(ɵngcc0.ɵɵinject(FIREBASE_OPTIONS), ɵngcc0.ɵɵinject(FIREBASE_APP_NAME, 8), ɵngcc0.ɵɵinject(PLATFORM_ID), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(VAPID_KEY, 8), ɵngcc0.ɵɵinject(SERVICE_WORKER, 8)); };\n/** @nocollapse */ AngularFireMessaging.ɵprov = i0.ɵɵdefineInjectable({ factory: function AngularFireMessaging_Factory() { return new AngularFireMessaging(i0.ɵɵinject(i1.FIREBASE_OPTIONS), i0.ɵɵinject(i1.FIREBASE_APP_NAME, 8), i0.ɵɵinject(i0.PLATFORM_ID), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(VAPID_KEY, 8), i0.ɵɵinject(SERVICE_WORKER, 8)); }, token: AngularFireMessaging, providedIn: \"any\" });\n/** @nocollapse */\nAngularFireMessaging.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [FIREBASE_OPTIONS,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FIREBASE_APP_NAME,] }] },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: NgZone },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [VAPID_KEY,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SERVICE_WORKER,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AngularFireMessaging, [{\n type: Injectable,\n args: [{\n providedIn: 'any'\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [FIREBASE_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FIREBASE_APP_NAME]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.NgZone }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VAPID_KEY]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SERVICE_WORKER]\n }] }]; }, null); })();\nɵapplyMixins(AngularFireMessaging, [proxyPolyfillCompat]);\n\nclass AngularFireMessagingModule {\n}\nAngularFireMessagingModule.ɵfac = function AngularFireMessagingModule_Factory(t) { return new (t || AngularFireMessagingModule)(); };\nAngularFireMessagingModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: AngularFireMessagingModule });\nAngularFireMessagingModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [AngularFireMessaging] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AngularFireMessagingModule, [{\n type: NgModule,\n args: [{\n providers: [AngularFireMessaging]\n }]\n }], null, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularFireMessaging, AngularFireMessagingModule, SERVICE_WORKER, VAPID_KEY };\n\n//# sourceMappingURL=angular-fire-messaging.js.map","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { notificationRequest } from './model/NotificationRequest';\nimport { ConfigService } from '../config.service';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class NotificationService {\n\tconstructor(private http: HttpClient, private configService: ConfigService) {}\n\tNotificationKaydet(req: notificationRequest): Observable {\n\t\treturn this.http.post(this.configService.config.apiUrl + 'api/Entegrasyon/NotificationKaydet', req, {});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { AngularFireMessaging } from '@angular/fire/messaging';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { MiyaUser } from './auth/_services/auth.service';\nimport { notificationRequest } from './Notification/model/NotificationRequest';\nimport { NotificationService } from './Notification/NotificationService';\n@Injectable()\nexport class MessagingService {\n\tcurrentMessage = new BehaviorSubject(null);\n\tconstructor(private angularFireMessaging: AngularFireMessaging, private notificationService: NotificationService) {\n\t\tthis.angularFireMessaging.onMessage;\n\t\tthis.angularFireMessaging.onTokenRefresh;\n\t\tthis.angularFireMessaging.messages.subscribe(message => {\n\t\t\t// Firebase'den yeni bir bildirim geldiğinde bu işlev çağrılır\n\t\t\t// message içinde bildirimle ilgili bilgilere erişebilirsiniz\n\t\t\tthis.currentMessage.next(message);\n\t\t});\n\t}\n\trequestPermission() {\n\t\tthis.angularFireMessaging.requestToken.subscribe(\n\t\t\ttoken => {\n\t\t\t\tif (token.length > 0 || token !== undefined) {\n\t\t\t\t\tconst userStr = localStorage.getItem('User');\n\t\t\t\t\tconst lngDistKod = localStorage.getItem('lngDistKod');\n\t\t\t\t\tlet user = new MiyaUser();\n\t\t\t\t\tif (userStr) {\n\t\t\t\t\t\tuser = JSON.parse(userStr) as MiyaUser;\n\t\t\t\t\t}\n\t\t\t\t\tconst request: notificationRequest = {\n\t\t\t\t\t\tLngDistKod: +lngDistKod,\n\t\t\t\t\t\tLngKullaniciKod: +user.ExternalId,\n\t\t\t\t\t\tTxtNotificationToken: token,\n\t\t\t\t\t\tLngKod: 0\n\t\t\t\t\t};\n\t\t\t\t\tthis.notificationService.NotificationKaydet(request).subscribe(f => {\n\t\t\t\t\t\tconsole.log(f);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\terr => {\n\t\t\t\tconsole.error('Unable to get permission to notify.', err);\n\t\t\t}\n\t\t);\n\t\tthis.angularFireMessaging.onTokenRefresh;\n\t}\n\treceiveMessage() {\n\t\tthis.angularFireMessaging.messages.subscribe(payload => {\n\t\t\tconsole.log('new message received. ', payload);\n\t\t\tthis.currentMessage.next(payload);\n\t\t\tnew window.Notification('Yeni Mesaj', { body: 'Yeni Filo Siparişi Geldi.' });\n\t\t});\n\t}\n}\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n//# sourceMappingURL=BehaviorSubject.js.map","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\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 });\nvar Action_1 = require(\"./Action\");\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler = async) {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source) => source.lift(new DelayOperator(delayFor, scheduler));\n}\nclass DelayOperator {\n constructor(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\nclass DelaySubscriber extends Subscriber {\n constructor(destination, delay, scheduler) {\n super(destination);\n this.delay = delay;\n this.scheduler = scheduler;\n this.queue = [];\n this.active = false;\n this.errored = false;\n }\n static dispatch(state) {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n }\n _schedule(scheduler) {\n this.active = true;\n const destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n scheduleNotification(notification) {\n if (this.errored === true) {\n return;\n }\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n _next(value) {\n this.scheduleNotification(Notification.createNext(value));\n }\n _error(err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\nclass DelayMessage {\n constructor(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n}\n//# sourceMappingURL=delay.js.map","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","import { Action } from './Action';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, delay) {\n let errored = false;\n let errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n _unsubscribe() {\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n }\n}\n//# sourceMappingURL=AsyncAction.js.map","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n//# sourceMappingURL=Action.js.map","/**\n * @license Angular v11.2.14\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { InjectionToken, forwardRef, Directive, Renderer2, ElementRef, Optional, Inject, ɵisPromise, ɵisObservable, Self, EventEmitter, Input, Host, SkipSelf, Output, NgModule, ɵɵdefineInjectable, Injectable, Injector, Version } from '@angular/core';\nimport { ɵgetDOM } from '@angular/common';\nimport { from, forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Base class for all built-in ControlValueAccessor classes. We use this class to distinguish\n * between built-in and custom CVAs, so that Forms logic can recognize built-in CVAs and treat\n * custom ones with higher priority (when both built-in and custom CVAs are present).\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nimport * as ɵngcc0 from '@angular/core';\nclass BuiltInControlValueAccessor {\n}\n/**\n * Used to provide a `ControlValueAccessor` for form controls.\n *\n * See `DefaultValueAccessor` for how to implement one.\n *\n * @publicApi\n */\nconst NG_VALUE_ACCESSOR = new InjectionToken('NgValueAccessor');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxControlValueAccessor),\n multi: true,\n};\n/**\n * @description\n * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input\n * element.\n *\n * @usageNotes\n *\n * ### Using a checkbox with a reactive form.\n *\n * The following example shows how to use a checkbox with a reactive form.\n *\n * ```ts\n * const rememberLoginControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass CheckboxControlValueAccessor extends BuiltInControlValueAccessor {\n constructor(_renderer, _elementRef) {\n super();\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * The registered callback function called when a change event occurs on the input element.\n * @nodoc\n */\n this.onChange = (_) => { };\n /**\n * The registered callback function called when a blur event occurs on the input element.\n * @nodoc\n */\n this.onTouched = () => { };\n }\n /**\n * Sets the \"checked\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'checked', value);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Registers a function called when the control is touched.\n * @nodoc\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the \"disabled\" property on the input element.\n * @nodoc\n */\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n}\nCheckboxControlValueAccessor.ɵfac = function CheckboxControlValueAccessor_Factory(t) { return new (t || CheckboxControlValueAccessor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCheckboxControlValueAccessor.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: CheckboxControlValueAccessor, selectors: [[\"input\", \"type\", \"checkbox\", \"formControlName\", \"\"], [\"input\", \"type\", \"checkbox\", \"formControl\", \"\"], [\"input\", \"type\", \"checkbox\", \"ngModel\", \"\"]], hostBindings: function CheckboxControlValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function CheckboxControlValueAccessor_change_HostBindingHandler($event) { return ctx.onChange($event.target.checked); })(\"blur\", function CheckboxControlValueAccessor_blur_HostBindingHandler() { return ctx.onTouched(); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([CHECKBOX_VALUE_ACCESSOR]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nCheckboxControlValueAccessor.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckboxControlValueAccessor, [{\n type: Directive,\n args: [{\n selector: 'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',\n host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },\n providers: [CHECKBOX_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst DEFAULT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DefaultValueAccessor),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n */\nfunction _isAndroid() {\n const userAgent = ɵgetDOM() ? ɵgetDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\n/**\n * @description\n * Provide this token to control if form directives buffer IME input until\n * the \"compositionend\" event occurs.\n * @publicApi\n */\nconst COMPOSITION_BUFFER_MODE = new InjectionToken('CompositionEventMode');\n/**\n * The default `ControlValueAccessor` for writing a value and listening to changes on input\n * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * {@searchKeywords ngDefaultControl}\n *\n * @usageNotes\n *\n * ### Using the default value accessor\n *\n * The following example shows how to use an input element that activates the default value accessor\n * (in this case, a text field).\n *\n * ```ts\n * const firstNameControl = new FormControl();\n * ```\n *\n * ```\n * \n * ```\n *\n * This value accessor is used by default for `` and `\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n\").replace(/(^|\\n)\\s*/g, '');\n\n var resetOldContainer = function resetOldContainer() {\n var oldContainer = getContainer();\n\n if (!oldContainer) {\n return false;\n }\n\n oldContainer.parentNode.removeChild(oldContainer);\n removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);\n return true;\n };\n\n var oldInputVal; // IE11 workaround, see #1109 for details\n\n var resetValidationMessage = function resetValidationMessage(e) {\n if (Swal.isVisible() && oldInputVal !== e.target.value) {\n Swal.resetValidationMessage();\n }\n\n oldInputVal = e.target.value;\n };\n\n var addInputChangeListeners = function addInputChangeListeners() {\n var content = getContent();\n var input = getChildByClass(content, swalClasses.input);\n var file = getChildByClass(content, swalClasses.file);\n var range = content.querySelector(\".\".concat(swalClasses.range, \" input\"));\n var rangeOutput = content.querySelector(\".\".concat(swalClasses.range, \" output\"));\n var select = getChildByClass(content, swalClasses.select);\n var checkbox = content.querySelector(\".\".concat(swalClasses.checkbox, \" input\"));\n var textarea = getChildByClass(content, swalClasses.textarea);\n input.oninput = resetValidationMessage;\n file.onchange = resetValidationMessage;\n select.onchange = resetValidationMessage;\n checkbox.onchange = resetValidationMessage;\n textarea.oninput = resetValidationMessage;\n\n range.oninput = function (e) {\n resetValidationMessage(e);\n rangeOutput.value = range.value;\n };\n\n range.onchange = function (e) {\n resetValidationMessage(e);\n range.nextSibling.value = range.value;\n };\n };\n\n var getTarget = function getTarget(target) {\n return typeof target === 'string' ? document.querySelector(target) : target;\n };\n\n var setupAccessibility = function setupAccessibility(params) {\n var popup = getPopup();\n popup.setAttribute('role', params.toast ? 'alert' : 'dialog');\n popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');\n\n if (!params.toast) {\n popup.setAttribute('aria-modal', 'true');\n }\n };\n\n var setupRTL = function setupRTL(targetElement) {\n if (window.getComputedStyle(targetElement).direction === 'rtl') {\n addClass(getContainer(), swalClasses.rtl);\n }\n };\n /*\n * Add modal + backdrop to DOM\n */\n\n\n var init = function init(params) {\n // Clean up the old popup container if it exists\n var oldContainerExisted = resetOldContainer();\n /* istanbul ignore if */\n\n if (isNodeEnv()) {\n error('SweetAlert2 requires document to initialize');\n return;\n }\n\n var container = document.createElement('div');\n container.className = swalClasses.container;\n\n if (oldContainerExisted) {\n addClass(container, swalClasses['no-transition']);\n }\n\n setInnerHtml(container, sweetHTML);\n var targetElement = getTarget(params.target);\n targetElement.appendChild(container);\n setupAccessibility(params);\n setupRTL(targetElement);\n addInputChangeListeners();\n };\n\n var parseHtmlToContainer = function parseHtmlToContainer(param, target) {\n // DOM element\n if (param instanceof HTMLElement) {\n target.appendChild(param); // Object\n } else if (_typeof(param) === 'object') {\n handleObject(param, target); // Plain string\n } else if (param) {\n setInnerHtml(target, param);\n }\n };\n\n var handleObject = function handleObject(param, target) {\n // JQuery element(s)\n if (param.jquery) {\n handleJqueryElem(target, param); // For other objects use their string representation\n } else {\n setInnerHtml(target, param.toString());\n }\n };\n\n var handleJqueryElem = function handleJqueryElem(target, elem) {\n target.textContent = '';\n\n if (0 in elem) {\n for (var i = 0; (i in elem); i++) {\n target.appendChild(elem[i].cloneNode(true));\n }\n } else {\n target.appendChild(elem.cloneNode(true));\n }\n };\n\n var animationEndEvent = function () {\n // Prevent run in Node env\n\n /* istanbul ignore if */\n if (isNodeEnv()) {\n return false;\n }\n\n var testEl = document.createElement('div');\n var transEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n OAnimation: 'oAnimationEnd oanimationend',\n animation: 'animationend'\n };\n\n for (var i in transEndEventNames) {\n if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {\n return transEndEventNames[i];\n }\n }\n\n return false;\n }();\n\n // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js\n\n var measureScrollbar = function measureScrollbar() {\n var scrollDiv = document.createElement('div');\n scrollDiv.className = swalClasses['scrollbar-measure'];\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n var renderActions = function renderActions(instance, params) {\n var actions = getActions();\n var confirmButton = getConfirmButton();\n var cancelButton = getCancelButton(); // Actions (buttons) wrapper\n\n if (!params.showConfirmButton && !params.showCancelButton) {\n hide(actions);\n } // Custom class\n\n\n applyCustomClass(actions, params, 'actions'); // Render confirm button\n\n renderButton(confirmButton, 'confirm', params); // render Cancel Button\n\n renderButton(cancelButton, 'cancel', params);\n\n if (params.buttonsStyling) {\n handleButtonsStyling(confirmButton, cancelButton, params);\n } else {\n removeClass([confirmButton, cancelButton], swalClasses.styled);\n confirmButton.style.backgroundColor = confirmButton.style.borderLeftColor = confirmButton.style.borderRightColor = '';\n cancelButton.style.backgroundColor = cancelButton.style.borderLeftColor = cancelButton.style.borderRightColor = '';\n }\n\n if (params.reverseButtons) {\n confirmButton.parentNode.insertBefore(cancelButton, confirmButton);\n }\n };\n\n function handleButtonsStyling(confirmButton, cancelButton, params) {\n addClass([confirmButton, cancelButton], swalClasses.styled); // Buttons background colors\n\n if (params.confirmButtonColor) {\n confirmButton.style.backgroundColor = params.confirmButtonColor;\n }\n\n if (params.cancelButtonColor) {\n cancelButton.style.backgroundColor = params.cancelButtonColor;\n } // Loading state\n\n\n if (!isLoading()) {\n var confirmButtonBackgroundColor = window.getComputedStyle(confirmButton).getPropertyValue('background-color');\n confirmButton.style.borderLeftColor = confirmButtonBackgroundColor;\n confirmButton.style.borderRightColor = confirmButtonBackgroundColor;\n }\n }\n\n function renderButton(button, buttonType, params) {\n toggle(button, params[\"show\".concat(capitalizeFirstLetter(buttonType), \"Button\")], 'inline-block');\n setInnerHtml(button, params[\"\".concat(buttonType, \"ButtonText\")]); // Set caption text\n\n button.setAttribute('aria-label', params[\"\".concat(buttonType, \"ButtonAriaLabel\")]); // ARIA label\n // Add buttons custom classes\n\n button.className = swalClasses[buttonType];\n applyCustomClass(button, params, \"\".concat(buttonType, \"Button\"));\n addClass(button, params[\"\".concat(buttonType, \"ButtonClass\")]);\n }\n\n function handleBackdropParam(container, backdrop) {\n if (typeof backdrop === 'string') {\n container.style.background = backdrop;\n } else if (!backdrop) {\n addClass([document.documentElement, document.body], swalClasses['no-backdrop']);\n }\n }\n\n function handlePositionParam(container, position) {\n if (position in swalClasses) {\n addClass(container, swalClasses[position]);\n } else {\n warn('The \"position\" parameter is not valid, defaulting to \"center\"');\n addClass(container, swalClasses.center);\n }\n }\n\n function handleGrowParam(container, grow) {\n if (grow && typeof grow === 'string') {\n var growClass = \"grow-\".concat(grow);\n\n if (growClass in swalClasses) {\n addClass(container, swalClasses[growClass]);\n }\n }\n }\n\n var renderContainer = function renderContainer(instance, params) {\n var container = getContainer();\n\n if (!container) {\n return;\n }\n\n handleBackdropParam(container, params.backdrop);\n\n if (!params.backdrop && params.allowOutsideClick) {\n warn('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`');\n }\n\n handlePositionParam(container, params.position);\n handleGrowParam(container, params.grow); // Custom class\n\n applyCustomClass(container, params, 'container'); // Set queue step attribute for getQueueStep() method\n\n var queueStep = document.body.getAttribute('data-swal2-queue-step');\n\n if (queueStep) {\n container.setAttribute('data-queue-step', queueStep);\n document.body.removeAttribute('data-swal2-queue-step');\n }\n };\n\n /**\n * This module containts `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateProps = {\n promise: new WeakMap(),\n innerParams: new WeakMap(),\n domCache: new WeakMap()\n };\n\n var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n var renderInput = function renderInput(instance, params) {\n var content = getContent();\n var innerParams = privateProps.innerParams.get(instance);\n var rerender = !innerParams || params.input !== innerParams.input;\n inputTypes.forEach(function (inputType) {\n var inputClass = swalClasses[inputType];\n var inputContainer = getChildByClass(content, inputClass); // set attributes\n\n setAttributes(inputType, params.inputAttributes); // set class\n\n inputContainer.className = inputClass;\n\n if (rerender) {\n hide(inputContainer);\n }\n });\n\n if (params.input) {\n if (rerender) {\n showInput(params);\n } // set custom class\n\n\n setCustomClass(params);\n }\n };\n\n var showInput = function showInput(params) {\n if (!renderInputType[params.input]) {\n return error(\"Unexpected type of input! Expected \\\"text\\\", \\\"email\\\", \\\"password\\\", \\\"number\\\", \\\"tel\\\", \\\"select\\\", \\\"radio\\\", \\\"checkbox\\\", \\\"textarea\\\", \\\"file\\\" or \\\"url\\\", got \\\"\".concat(params.input, \"\\\"\"));\n }\n\n var inputContainer = getInputContainer(params.input);\n var input = renderInputType[params.input](inputContainer, params);\n show(input); // input autofocus\n\n setTimeout(function () {\n focusInput(input);\n });\n };\n\n var removeAttributes = function removeAttributes(input) {\n for (var i = 0; i < input.attributes.length; i++) {\n var attrName = input.attributes[i].name;\n\n if (!(['type', 'value', 'style'].indexOf(attrName) !== -1)) {\n input.removeAttribute(attrName);\n }\n }\n };\n\n var setAttributes = function setAttributes(inputType, inputAttributes) {\n var input = getInput(getContent(), inputType);\n\n if (!input) {\n return;\n }\n\n removeAttributes(input);\n\n for (var attr in inputAttributes) {\n // Do not set a placeholder for \n // it'll crash Edge, #1298\n if (inputType === 'range' && attr === 'placeholder') {\n continue;\n }\n\n input.setAttribute(attr, inputAttributes[attr]);\n }\n };\n\n var setCustomClass = function setCustomClass(params) {\n var inputContainer = getInputContainer(params.input);\n\n if (params.customClass) {\n addClass(inputContainer, params.customClass.input);\n }\n };\n\n var setInputPlaceholder = function setInputPlaceholder(input, params) {\n if (!input.placeholder || params.inputPlaceholder) {\n input.placeholder = params.inputPlaceholder;\n }\n };\n\n var getInputContainer = function getInputContainer(inputType) {\n var inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;\n return getChildByClass(getContent(), inputClass);\n };\n\n var renderInputType = {};\n\n renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = function (input, params) {\n if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {\n input.value = params.inputValue;\n } else if (!isPromise(params.inputValue)) {\n warn(\"Unexpected type of inputValue! Expected \\\"string\\\", \\\"number\\\" or \\\"Promise\\\", got \\\"\".concat(_typeof(params.inputValue), \"\\\"\"));\n }\n\n setInputPlaceholder(input, params);\n input.type = params.input;\n return input;\n };\n\n renderInputType.file = function (input, params) {\n setInputPlaceholder(input, params);\n return input;\n };\n\n renderInputType.range = function (range, params) {\n var rangeInput = range.querySelector('input');\n var rangeOutput = range.querySelector('output');\n rangeInput.value = params.inputValue;\n rangeInput.type = params.input;\n rangeOutput.value = params.inputValue;\n return range;\n };\n\n renderInputType.select = function (select, params) {\n select.textContent = '';\n\n if (params.inputPlaceholder) {\n var placeholder = document.createElement('option');\n setInnerHtml(placeholder, params.inputPlaceholder);\n placeholder.value = '';\n placeholder.disabled = true;\n placeholder.selected = true;\n select.appendChild(placeholder);\n }\n\n return select;\n };\n\n renderInputType.radio = function (radio) {\n radio.textContent = '';\n return radio;\n };\n\n renderInputType.checkbox = function (checkboxContainer, params) {\n var checkbox = getInput(getContent(), 'checkbox');\n checkbox.value = 1;\n checkbox.id = swalClasses.checkbox;\n checkbox.checked = Boolean(params.inputValue);\n var label = checkboxContainer.querySelector('span');\n setInnerHtml(label, params.inputPlaceholder);\n return checkboxContainer;\n };\n\n renderInputType.textarea = function (textarea, params) {\n textarea.value = params.inputValue;\n setInputPlaceholder(textarea, params);\n\n if ('MutationObserver' in window) {\n // #1699\n var initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);\n var popupPadding = parseInt(window.getComputedStyle(getPopup()).paddingLeft) + parseInt(window.getComputedStyle(getPopup()).paddingRight);\n\n var outputsize = function outputsize() {\n var contentWidth = textarea.offsetWidth + popupPadding;\n\n if (contentWidth > initialPopupWidth) {\n getPopup().style.width = \"\".concat(contentWidth, \"px\");\n } else {\n getPopup().style.width = null;\n }\n };\n\n new MutationObserver(outputsize).observe(textarea, {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n\n return textarea;\n };\n\n var renderContent = function renderContent(instance, params) {\n var content = getContent().querySelector(\"#\".concat(swalClasses.content)); // Content as HTML\n\n if (params.html) {\n parseHtmlToContainer(params.html, content);\n show(content, 'block'); // Content as plain text\n } else if (params.text) {\n content.textContent = params.text;\n show(content, 'block'); // No content\n } else {\n hide(content);\n }\n\n renderInput(instance, params); // Custom class\n\n applyCustomClass(getContent(), params, 'content');\n };\n\n var renderFooter = function renderFooter(instance, params) {\n var footer = getFooter();\n toggle(footer, params.footer);\n\n if (params.footer) {\n parseHtmlToContainer(params.footer, footer);\n } // Custom class\n\n\n applyCustomClass(footer, params, 'footer');\n };\n\n var renderCloseButton = function renderCloseButton(instance, params) {\n var closeButton = getCloseButton();\n setInnerHtml(closeButton, params.closeButtonHtml); // Custom class\n\n applyCustomClass(closeButton, params, 'closeButton');\n toggle(closeButton, params.showCloseButton);\n closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);\n };\n\n var renderIcon = function renderIcon(instance, params) {\n var innerParams = privateProps.innerParams.get(instance); // if the give icon already rendered, apply the custom class without re-rendering the icon\n\n if (innerParams && params.icon === innerParams.icon && getIcon()) {\n applyCustomClass(getIcon(), params, 'icon');\n return;\n }\n\n hideAllIcons();\n\n if (!params.icon) {\n return;\n }\n\n if (Object.keys(iconTypes).indexOf(params.icon) !== -1) {\n var icon = elementBySelector(\".\".concat(swalClasses.icon, \".\").concat(iconTypes[params.icon]));\n show(icon); // Custom or default content\n\n setContent(icon, params);\n adjustSuccessIconBackgoundColor(); // Custom class\n\n applyCustomClass(icon, params, 'icon'); // Animate icon\n\n addClass(icon, params.showClass.icon);\n } else {\n error(\"Unknown icon! Expected \\\"success\\\", \\\"error\\\", \\\"warning\\\", \\\"info\\\" or \\\"question\\\", got \\\"\".concat(params.icon, \"\\\"\"));\n }\n };\n\n var hideAllIcons = function hideAllIcons() {\n var icons = getIcons();\n\n for (var i = 0; i < icons.length; i++) {\n hide(icons[i]);\n }\n }; // Adjust success icon background color to match the popup background color\n\n\n var adjustSuccessIconBackgoundColor = function adjustSuccessIconBackgoundColor() {\n var popup = getPopup();\n var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');\n var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');\n\n for (var i = 0; i < successIconParts.length; i++) {\n successIconParts[i].style.backgroundColor = popupBackgroundColor;\n }\n };\n\n var setContent = function setContent(icon, params) {\n icon.textContent = '';\n\n if (params.iconHtml) {\n setInnerHtml(icon, iconContent(params.iconHtml));\n } else if (params.icon === 'success') {\n setInnerHtml(icon, \"\\n
\\n \\n
\\n
\\n \");\n } else if (params.icon === 'error') {\n setInnerHtml(icon, \"\\n \\n \\n \\n \\n \");\n } else {\n var defaultIconHtml = {\n question: '?',\n warning: '!',\n info: 'i'\n };\n setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));\n }\n };\n\n var iconContent = function iconContent(content) {\n return \"
\").concat(content, \"
\");\n };\n\n var renderImage = function renderImage(instance, params) {\n var image = getImage();\n\n if (!params.imageUrl) {\n return hide(image);\n }\n\n show(image, ''); // Src, alt\n\n image.setAttribute('src', params.imageUrl);\n image.setAttribute('alt', params.imageAlt); // Width, height\n\n applyNumericalStyle(image, 'width', params.imageWidth);\n applyNumericalStyle(image, 'height', params.imageHeight); // Class\n\n image.className = swalClasses.image;\n applyCustomClass(image, params, 'image');\n };\n\n var currentSteps = [];\n /*\n * Global function for chaining sweetAlert popups\n */\n\n var queue = function queue(steps) {\n var Swal = this;\n currentSteps = steps;\n\n var resetAndResolve = function resetAndResolve(resolve, value) {\n currentSteps = [];\n resolve(value);\n };\n\n var queueResult = [];\n return new Promise(function (resolve) {\n (function step(i, callback) {\n if (i < currentSteps.length) {\n document.body.setAttribute('data-swal2-queue-step', i);\n Swal.fire(currentSteps[i]).then(function (result) {\n if (typeof result.value !== 'undefined') {\n queueResult.push(result.value);\n step(i + 1, callback);\n } else {\n resetAndResolve(resolve, {\n dismiss: result.dismiss\n });\n }\n });\n } else {\n resetAndResolve(resolve, {\n value: queueResult\n });\n }\n })(0);\n });\n };\n /*\n * Global function for getting the index of current popup in queue\n */\n\n var getQueueStep = function getQueueStep() {\n return getContainer() && getContainer().getAttribute('data-queue-step');\n };\n /*\n * Global function for inserting a popup to the queue\n */\n\n var insertQueueStep = function insertQueueStep(step, index) {\n if (index && index < currentSteps.length) {\n return currentSteps.splice(index, 0, step);\n }\n\n return currentSteps.push(step);\n };\n /*\n * Global function for deleting a popup from the queue\n */\n\n var deleteQueueStep = function deleteQueueStep(index) {\n if (typeof currentSteps[index] !== 'undefined') {\n currentSteps.splice(index, 1);\n }\n };\n\n var createStepElement = function createStepElement(step) {\n var stepEl = document.createElement('li');\n addClass(stepEl, swalClasses['progress-step']);\n setInnerHtml(stepEl, step);\n return stepEl;\n };\n\n var createLineElement = function createLineElement(params) {\n var lineEl = document.createElement('li');\n addClass(lineEl, swalClasses['progress-step-line']);\n\n if (params.progressStepsDistance) {\n lineEl.style.width = params.progressStepsDistance;\n }\n\n return lineEl;\n };\n\n var renderProgressSteps = function renderProgressSteps(instance, params) {\n var progressStepsContainer = getProgressSteps();\n\n if (!params.progressSteps || params.progressSteps.length === 0) {\n return hide(progressStepsContainer);\n }\n\n show(progressStepsContainer);\n progressStepsContainer.textContent = '';\n var currentProgressStep = parseInt(params.currentProgressStep === undefined ? getQueueStep() : params.currentProgressStep);\n\n if (currentProgressStep >= params.progressSteps.length) {\n warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n }\n\n params.progressSteps.forEach(function (step, index) {\n var stepEl = createStepElement(step);\n progressStepsContainer.appendChild(stepEl);\n\n if (index === currentProgressStep) {\n addClass(stepEl, swalClasses['active-progress-step']);\n }\n\n if (index !== params.progressSteps.length - 1) {\n var lineEl = createLineElement(params);\n progressStepsContainer.appendChild(lineEl);\n }\n });\n };\n\n var renderTitle = function renderTitle(instance, params) {\n var title = getTitle();\n toggle(title, params.title || params.titleText);\n\n if (params.title) {\n parseHtmlToContainer(params.title, title);\n }\n\n if (params.titleText) {\n title.innerText = params.titleText;\n } // Custom class\n\n\n applyCustomClass(title, params, 'title');\n };\n\n var renderHeader = function renderHeader(instance, params) {\n var header = getHeader(); // Custom class\n\n applyCustomClass(header, params, 'header'); // Progress steps\n\n renderProgressSteps(instance, params); // Icon\n\n renderIcon(instance, params); // Image\n\n renderImage(instance, params); // Title\n\n renderTitle(instance, params); // Close button\n\n renderCloseButton(instance, params);\n };\n\n var renderPopup = function renderPopup(instance, params) {\n var popup = getPopup(); // Width\n\n applyNumericalStyle(popup, 'width', params.width); // Padding\n\n applyNumericalStyle(popup, 'padding', params.padding); // Background\n\n if (params.background) {\n popup.style.background = params.background;\n } // Classes\n\n\n addClasses(popup, params);\n };\n\n var addClasses = function addClasses(popup, params) {\n // Default Class + showClass when updating Swal.update({})\n popup.className = \"\".concat(swalClasses.popup, \" \").concat(isVisible(popup) ? params.showClass.popup : '');\n\n if (params.toast) {\n addClass([document.documentElement, document.body], swalClasses['toast-shown']);\n addClass(popup, swalClasses.toast);\n } else {\n addClass(popup, swalClasses.modal);\n } // Custom class\n\n\n applyCustomClass(popup, params, 'popup');\n\n if (typeof params.customClass === 'string') {\n addClass(popup, params.customClass);\n } // Icon class (#1842)\n\n\n if (params.icon) {\n addClass(popup, swalClasses[\"icon-\".concat(params.icon)]);\n }\n };\n\n var render = function render(instance, params) {\n renderPopup(instance, params);\n renderContainer(instance, params);\n renderHeader(instance, params);\n renderContent(instance, params);\n renderActions(instance, params);\n renderFooter(instance, params);\n\n if (typeof params.onRender === 'function') {\n params.onRender(getPopup());\n }\n };\n\n /*\n * Global function to determine if SweetAlert2 popup is shown\n */\n\n var isVisible$1 = function isVisible$$1() {\n return isVisible(getPopup());\n };\n /*\n * Global function to click 'Confirm' button\n */\n\n var clickConfirm = function clickConfirm() {\n return getConfirmButton() && getConfirmButton().click();\n };\n /*\n * Global function to click 'Cancel' button\n */\n\n var clickCancel = function clickCancel() {\n return getCancelButton() && getCancelButton().click();\n };\n\n function fire() {\n var Swal = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _construct(Swal, args);\n }\n\n /**\n * Returns an extended version of `Swal` containing `params` as defaults.\n * Useful for reusing Swal configuration.\n *\n * For example:\n *\n * Before:\n * const textPromptOptions = { input: 'text', showCancelButton: true }\n * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })\n * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })\n *\n * After:\n * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })\n * const {value: firstName} = await TextPrompt('What is your first name?')\n * const {value: lastName} = await TextPrompt('What is your last name?')\n *\n * @param mixinParams\n */\n function mixin(mixinParams) {\n var MixinSwal = /*#__PURE__*/function (_this) {\n _inherits(MixinSwal, _this);\n\n var _super = _createSuper(MixinSwal);\n\n function MixinSwal() {\n _classCallCheck(this, MixinSwal);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MixinSwal, [{\n key: \"_main\",\n value: function _main(params) {\n return _get(_getPrototypeOf(MixinSwal.prototype), \"_main\", this).call(this, _extends({}, mixinParams, params));\n }\n }]);\n\n return MixinSwal;\n }(this);\n\n return MixinSwal;\n }\n\n /**\n * Show spinner instead of Confirm button\n */\n\n var showLoading = function showLoading() {\n var popup = getPopup();\n\n if (!popup) {\n Swal.fire();\n }\n\n popup = getPopup();\n var actions = getActions();\n var confirmButton = getConfirmButton();\n show(actions);\n show(confirmButton, 'inline-block');\n addClass([popup, actions], swalClasses.loading);\n confirmButton.disabled = true;\n popup.setAttribute('data-loading', true);\n popup.setAttribute('aria-busy', true);\n popup.focus();\n };\n\n var RESTORE_FOCUS_TIMEOUT = 100;\n\n var globalState = {};\n\n var focusPreviousActiveElement = function focusPreviousActiveElement() {\n if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {\n globalState.previousActiveElement.focus();\n globalState.previousActiveElement = null;\n } else if (document.body) {\n document.body.focus();\n }\n }; // Restore previous active (focused) element\n\n\n var restoreActiveElement = function restoreActiveElement() {\n return new Promise(function (resolve) {\n var x = window.scrollX;\n var y = window.scrollY;\n globalState.restoreFocusTimeout = setTimeout(function () {\n focusPreviousActiveElement();\n resolve();\n }, RESTORE_FOCUS_TIMEOUT); // issues/900\n\n /* istanbul ignore if */\n\n if (typeof x !== 'undefined' && typeof y !== 'undefined') {\n // IE doesn't have scrollX/scrollY support\n window.scrollTo(x, y);\n }\n });\n };\n\n /**\n * If `timer` parameter is set, returns number of milliseconds of timer remained.\n * Otherwise, returns undefined.\n */\n\n var getTimerLeft = function getTimerLeft() {\n return globalState.timeout && globalState.timeout.getTimerLeft();\n };\n /**\n * Stop timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var stopTimer = function stopTimer() {\n if (globalState.timeout) {\n stopTimerProgressBar();\n return globalState.timeout.stop();\n }\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var resumeTimer = function resumeTimer() {\n if (globalState.timeout) {\n var remaining = globalState.timeout.start();\n animateTimerProgressBar(remaining);\n return remaining;\n }\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var toggleTimer = function toggleTimer() {\n var timer = globalState.timeout;\n return timer && (timer.running ? stopTimer() : resumeTimer());\n };\n /**\n * Increase timer. Returns number of milliseconds of an updated timer.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var increaseTimer = function increaseTimer(n) {\n if (globalState.timeout) {\n var remaining = globalState.timeout.increase(n);\n animateTimerProgressBar(remaining, true);\n return remaining;\n }\n };\n /**\n * Check if timer is running. Returns true if timer is running\n * or false if timer is paused or stopped.\n * If `timer` parameter isn't set, returns undefined\n */\n\n var isTimerRunning = function isTimerRunning() {\n return globalState.timeout && globalState.timeout.isRunning();\n };\n\n var defaultParams = {\n title: '',\n titleText: '',\n text: '',\n html: '',\n footer: '',\n icon: undefined,\n iconHtml: undefined,\n toast: false,\n animation: true,\n showClass: {\n popup: 'swal2-show',\n backdrop: 'swal2-backdrop-show',\n icon: 'swal2-icon-show'\n },\n hideClass: {\n popup: 'swal2-hide',\n backdrop: 'swal2-backdrop-hide',\n icon: 'swal2-icon-hide'\n },\n customClass: undefined,\n target: 'body',\n backdrop: true,\n heightAuto: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n allowEnterKey: true,\n stopKeydownPropagation: true,\n keydownListenerCapture: false,\n showConfirmButton: true,\n showCancelButton: false,\n preConfirm: undefined,\n confirmButtonText: 'OK',\n confirmButtonAriaLabel: '',\n confirmButtonColor: undefined,\n cancelButtonText: 'Cancel',\n cancelButtonAriaLabel: '',\n cancelButtonColor: undefined,\n buttonsStyling: true,\n reverseButtons: false,\n focusConfirm: true,\n focusCancel: false,\n showCloseButton: false,\n closeButtonHtml: '×',\n closeButtonAriaLabel: 'Close this dialog',\n showLoaderOnConfirm: false,\n imageUrl: undefined,\n imageWidth: undefined,\n imageHeight: undefined,\n imageAlt: '',\n timer: undefined,\n timerProgressBar: false,\n width: undefined,\n padding: undefined,\n background: undefined,\n input: undefined,\n inputPlaceholder: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputAttributes: {},\n inputValidator: undefined,\n validationMessage: undefined,\n grow: false,\n position: 'center',\n progressSteps: [],\n currentProgressStep: undefined,\n progressStepsDistance: undefined,\n onBeforeOpen: undefined,\n onOpen: undefined,\n onRender: undefined,\n onClose: undefined,\n onAfterClose: undefined,\n onDestroy: undefined,\n scrollbarPadding: true\n };\n var updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'footer', 'hideClass', 'html', 'icon', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'onAfterClose', 'onClose', 'onDestroy', 'progressSteps', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'text', 'title', 'titleText'];\n var deprecatedParams = {\n animation: 'showClass\" and \"hideClass'\n };\n var toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusCancel', 'heightAuto', 'keydownListenerCapture'];\n /**\n * Is valid parameter\n * @param {String} paramName\n */\n\n var isValidParameter = function isValidParameter(paramName) {\n return Object.prototype.hasOwnProperty.call(defaultParams, paramName);\n };\n /**\n * Is valid parameter for Swal.update() method\n * @param {String} paramName\n */\n\n var isUpdatableParameter = function isUpdatableParameter(paramName) {\n return updatableParams.indexOf(paramName) !== -1;\n };\n /**\n * Is deprecated parameter\n * @param {String} paramName\n */\n\n var isDeprecatedParameter = function isDeprecatedParameter(paramName) {\n return deprecatedParams[paramName];\n };\n\n var checkIfParamIsValid = function checkIfParamIsValid(param) {\n if (!isValidParameter(param)) {\n warn(\"Unknown parameter \\\"\".concat(param, \"\\\"\"));\n }\n };\n\n var checkIfToastParamIsValid = function checkIfToastParamIsValid(param) {\n if (toastIncompatibleParams.indexOf(param) !== -1) {\n warn(\"The parameter \\\"\".concat(param, \"\\\" is incompatible with toasts\"));\n }\n };\n\n var checkIfParamIsDeprecated = function checkIfParamIsDeprecated(param) {\n if (isDeprecatedParameter(param)) {\n warnAboutDepreation(param, isDeprecatedParameter(param));\n }\n };\n /**\n * Show relevant warnings for given params\n *\n * @param params\n */\n\n\n var showWarningsForParams = function showWarningsForParams(params) {\n for (var param in params) {\n checkIfParamIsValid(param);\n\n if (params.toast) {\n checkIfToastParamIsValid(param);\n }\n\n checkIfParamIsDeprecated(param);\n }\n };\n\n\n\n var staticMethods = /*#__PURE__*/Object.freeze({\n isValidParameter: isValidParameter,\n isUpdatableParameter: isUpdatableParameter,\n isDeprecatedParameter: isDeprecatedParameter,\n argsToParams: argsToParams,\n isVisible: isVisible$1,\n clickConfirm: clickConfirm,\n clickCancel: clickCancel,\n getContainer: getContainer,\n getPopup: getPopup,\n getTitle: getTitle,\n getContent: getContent,\n getHtmlContainer: getHtmlContainer,\n getImage: getImage,\n getIcon: getIcon,\n getIcons: getIcons,\n getCloseButton: getCloseButton,\n getActions: getActions,\n getConfirmButton: getConfirmButton,\n getCancelButton: getCancelButton,\n getHeader: getHeader,\n getFooter: getFooter,\n getTimerProgressBar: getTimerProgressBar,\n getFocusableElements: getFocusableElements,\n getValidationMessage: getValidationMessage,\n isLoading: isLoading,\n fire: fire,\n mixin: mixin,\n queue: queue,\n getQueueStep: getQueueStep,\n insertQueueStep: insertQueueStep,\n deleteQueueStep: deleteQueueStep,\n showLoading: showLoading,\n enableLoading: showLoading,\n getTimerLeft: getTimerLeft,\n stopTimer: stopTimer,\n resumeTimer: resumeTimer,\n toggleTimer: toggleTimer,\n increaseTimer: increaseTimer,\n isTimerRunning: isTimerRunning\n });\n\n /**\n * Enables buttons and hide loader.\n */\n\n function hideLoading() {\n // do nothing if popup is closed\n var innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n return;\n }\n\n var domCache = privateProps.domCache.get(this);\n\n if (!innerParams.showConfirmButton) {\n hide(domCache.confirmButton);\n\n if (!innerParams.showCancelButton) {\n hide(domCache.actions);\n }\n }\n\n removeClass([domCache.popup, domCache.actions], swalClasses.loading);\n domCache.popup.removeAttribute('aria-busy');\n domCache.popup.removeAttribute('data-loading');\n domCache.confirmButton.disabled = false;\n domCache.cancelButton.disabled = false;\n }\n\n function getInput$1(instance) {\n var innerParams = privateProps.innerParams.get(instance || this);\n var domCache = privateProps.domCache.get(instance || this);\n\n if (!domCache) {\n return null;\n }\n\n return getInput(domCache.content, innerParams.input);\n }\n\n var fixScrollbar = function fixScrollbar() {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return;\n } // if the body has overflow\n\n\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding + measureScrollbar(), \"px\");\n }\n };\n var undoScrollbar = function undoScrollbar() {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding, \"px\");\n states.previousBodyPadding = null;\n }\n };\n\n /* istanbul ignore file */\n\n var iOSfix = function iOSfix() {\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n var offset = document.body.scrollTop;\n document.body.style.top = \"\".concat(offset * -1, \"px\");\n addClass(document.body, swalClasses.iosfix);\n lockBodyScroll();\n addBottomPaddingForTallPopups(); // #1948\n }\n };\n\n var addBottomPaddingForTallPopups = function addBottomPaddingForTallPopups() {\n var safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);\n\n if (safari) {\n var bottomPanelHeight = 44;\n\n if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {\n getContainer().style.paddingBottom = \"\".concat(bottomPanelHeight, \"px\");\n }\n }\n };\n\n var lockBodyScroll = function lockBodyScroll() {\n // #1246\n var container = getContainer();\n var preventTouchMove;\n\n container.ontouchstart = function (e) {\n preventTouchMove = shouldPreventTouchMove(e.target);\n };\n\n container.ontouchmove = function (e) {\n if (preventTouchMove) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n };\n\n var shouldPreventTouchMove = function shouldPreventTouchMove(target) {\n var container = getContainer();\n\n if (target === container) {\n return true;\n }\n\n if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603\n !(isScrollable(getContent()) && // #1944\n getContent().contains(target))) {\n return true;\n }\n\n return false;\n };\n\n var undoIOSfix = function undoIOSfix() {\n if (hasClass(document.body, swalClasses.iosfix)) {\n var offset = parseInt(document.body.style.top, 10);\n removeClass(document.body, swalClasses.iosfix);\n document.body.style.top = '';\n document.body.scrollTop = offset * -1;\n }\n };\n\n /* istanbul ignore file */\n\n var isIE11 = function isIE11() {\n return !!window.MSInputMethodContext && !!document.documentMode;\n }; // Fix IE11 centering sweetalert2/issues/933\n\n\n var fixVerticalPositionIE = function fixVerticalPositionIE() {\n var container = getContainer();\n var popup = getPopup();\n container.style.removeProperty('align-items');\n\n if (popup.offsetTop < 0) {\n container.style.alignItems = 'flex-start';\n }\n };\n\n var IEfix = function IEfix() {\n if (typeof window !== 'undefined' && isIE11()) {\n fixVerticalPositionIE();\n window.addEventListener('resize', fixVerticalPositionIE);\n }\n };\n var undoIEfix = function undoIEfix() {\n if (typeof window !== 'undefined' && isIE11()) {\n window.removeEventListener('resize', fixVerticalPositionIE);\n }\n };\n\n // Adding aria-hidden=\"true\" to elements outside of the active modal dialog ensures that\n // elements not within the active modal dialog will not be surfaced if a user opens a screen\n // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.\n\n var setAriaHidden = function setAriaHidden() {\n var bodyChildren = toArray(document.body.children);\n bodyChildren.forEach(function (el) {\n if (el === getContainer() || contains(el, getContainer())) {\n return;\n }\n\n if (el.hasAttribute('aria-hidden')) {\n el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));\n }\n\n el.setAttribute('aria-hidden', 'true');\n });\n };\n var unsetAriaHidden = function unsetAriaHidden() {\n var bodyChildren = toArray(document.body.children);\n bodyChildren.forEach(function (el) {\n if (el.hasAttribute('data-previous-aria-hidden')) {\n el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));\n el.removeAttribute('data-previous-aria-hidden');\n } else {\n el.removeAttribute('aria-hidden');\n }\n });\n };\n\n /**\n * This module containts `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateMethods = {\n swalPromiseResolve: new WeakMap()\n };\n\n /*\n * Instance method to close sweetAlert\n */\n\n function removePopupAndResetState(instance, container, isToast$$1, onAfterClose) {\n if (isToast$$1) {\n triggerOnAfterCloseAndDispose(instance, onAfterClose);\n } else {\n restoreActiveElement().then(function () {\n return triggerOnAfterCloseAndDispose(instance, onAfterClose);\n });\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n\n if (container.parentNode && !document.body.getAttribute('data-swal2-queue-step')) {\n container.parentNode.removeChild(container);\n }\n\n if (isModal()) {\n undoScrollbar();\n undoIOSfix();\n undoIEfix();\n unsetAriaHidden();\n }\n\n removeBodyClasses();\n }\n\n function removeBodyClasses() {\n removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['toast-column']]);\n }\n\n function close(resolveValue) {\n var popup = getPopup();\n\n if (!popup) {\n return;\n }\n\n var innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {\n return;\n }\n\n var swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);\n removeClass(popup, innerParams.showClass.popup);\n addClass(popup, innerParams.hideClass.popup);\n var backdrop = getContainer();\n removeClass(backdrop, innerParams.showClass.backdrop);\n addClass(backdrop, innerParams.hideClass.backdrop);\n handlePopupAnimation(this, popup, innerParams);\n\n if (typeof resolveValue !== 'undefined') {\n resolveValue.isDismissed = typeof resolveValue.dismiss !== 'undefined';\n resolveValue.isConfirmed = typeof resolveValue.dismiss === 'undefined';\n } else {\n resolveValue = {\n isDismissed: true,\n isConfirmed: false\n };\n } // Resolve Swal promise\n\n\n swalPromiseResolve(resolveValue || {});\n }\n\n var handlePopupAnimation = function handlePopupAnimation(instance, popup, innerParams) {\n var container = getContainer(); // If animation is supported, animate\n\n var animationIsSupported = animationEndEvent && hasCssAnimation(popup);\n var onClose = innerParams.onClose,\n onAfterClose = innerParams.onAfterClose;\n\n if (onClose !== null && typeof onClose === 'function') {\n onClose(popup);\n }\n\n if (animationIsSupported) {\n animatePopup(instance, popup, container, onAfterClose);\n } else {\n // Otherwise, remove immediately\n removePopupAndResetState(instance, container, isToast(), onAfterClose);\n }\n };\n\n var animatePopup = function animatePopup(instance, popup, container, onAfterClose) {\n globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, isToast(), onAfterClose);\n popup.addEventListener(animationEndEvent, function (e) {\n if (e.target === popup) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n });\n };\n\n var triggerOnAfterCloseAndDispose = function triggerOnAfterCloseAndDispose(instance, onAfterClose) {\n setTimeout(function () {\n if (typeof onAfterClose === 'function') {\n onAfterClose();\n }\n\n instance._destroy();\n });\n };\n\n function setButtonsDisabled(instance, buttons, disabled) {\n var domCache = privateProps.domCache.get(instance);\n buttons.forEach(function (button) {\n domCache[button].disabled = disabled;\n });\n }\n\n function setInputDisabled(input, disabled) {\n if (!input) {\n return false;\n }\n\n if (input.type === 'radio') {\n var radiosContainer = input.parentNode.parentNode;\n var radios = radiosContainer.querySelectorAll('input');\n\n for (var i = 0; i < radios.length; i++) {\n radios[i].disabled = disabled;\n }\n } else {\n input.disabled = disabled;\n }\n }\n\n function enableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'cancelButton'], false);\n }\n function disableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'cancelButton'], true);\n }\n function enableInput() {\n return setInputDisabled(this.getInput(), false);\n }\n function disableInput() {\n return setInputDisabled(this.getInput(), true);\n }\n\n function showValidationMessage(error) {\n var domCache = privateProps.domCache.get(this);\n setInnerHtml(domCache.validationMessage, error);\n var popupComputedStyle = window.getComputedStyle(domCache.popup);\n domCache.validationMessage.style.marginLeft = \"-\".concat(popupComputedStyle.getPropertyValue('padding-left'));\n domCache.validationMessage.style.marginRight = \"-\".concat(popupComputedStyle.getPropertyValue('padding-right'));\n show(domCache.validationMessage);\n var input = this.getInput();\n\n if (input) {\n input.setAttribute('aria-invalid', true);\n input.setAttribute('aria-describedBy', swalClasses['validation-message']);\n focusInput(input);\n addClass(input, swalClasses.inputerror);\n }\n } // Hide block with validation message\n\n function resetValidationMessage$1() {\n var domCache = privateProps.domCache.get(this);\n\n if (domCache.validationMessage) {\n hide(domCache.validationMessage);\n }\n\n var input = this.getInput();\n\n if (input) {\n input.removeAttribute('aria-invalid');\n input.removeAttribute('aria-describedBy');\n removeClass(input, swalClasses.inputerror);\n }\n }\n\n function getProgressSteps$1() {\n var domCache = privateProps.domCache.get(this);\n return domCache.progressSteps;\n }\n\n var Timer = /*#__PURE__*/function () {\n function Timer(callback, delay) {\n _classCallCheck(this, Timer);\n\n this.callback = callback;\n this.remaining = delay;\n this.running = false;\n this.start();\n }\n\n _createClass(Timer, [{\n key: \"start\",\n value: function start() {\n if (!this.running) {\n this.running = true;\n this.started = new Date();\n this.id = setTimeout(this.callback, this.remaining);\n }\n\n return this.remaining;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.running) {\n this.running = false;\n clearTimeout(this.id);\n this.remaining -= new Date() - this.started;\n }\n\n return this.remaining;\n }\n }, {\n key: \"increase\",\n value: function increase(n) {\n var running = this.running;\n\n if (running) {\n this.stop();\n }\n\n this.remaining += n;\n\n if (running) {\n this.start();\n }\n\n return this.remaining;\n }\n }, {\n key: \"getTimerLeft\",\n value: function getTimerLeft() {\n if (this.running) {\n this.stop();\n this.start();\n }\n\n return this.remaining;\n }\n }, {\n key: \"isRunning\",\n value: function isRunning() {\n return this.running;\n }\n }]);\n\n return Timer;\n }();\n\n var defaultInputValidators = {\n email: function email(string, validationMessage) {\n return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');\n },\n url: function url(string, validationMessage) {\n // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013\n return /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-z]{2,63}\\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');\n }\n };\n\n function setDefaultInputValidators(params) {\n // Use default `inputValidator` for supported input types if not provided\n if (!params.inputValidator) {\n Object.keys(defaultInputValidators).forEach(function (key) {\n if (params.input === key) {\n params.inputValidator = defaultInputValidators[key];\n }\n });\n }\n }\n\n function validateCustomTargetElement(params) {\n // Determine if the custom target element is valid\n if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {\n warn('Target parameter is not valid, defaulting to \"body\"');\n params.target = 'body';\n }\n }\n /**\n * Set type, text and actions on popup\n *\n * @param params\n * @returns {boolean}\n */\n\n\n function setParameters(params) {\n setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm\n\n if (params.showLoaderOnConfirm && !params.preConfirm) {\n warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\\n' + 'https://sweetalert2.github.io/#ajax-request');\n } // params.animation will be actually used in renderPopup.js\n // but in case when params.animation is a function, we need to call that function\n // before popup (re)initialization, so it'll be possible to check Swal.isVisible()\n // inside the params.animation function\n\n\n params.animation = callIfFunction(params.animation);\n validateCustomTargetElement(params); // Replace newlines with
in title\n\n if (typeof params.title === 'string') {\n params.title = params.title.split('\\n').join('
');\n }\n\n init(params);\n }\n\n /**\n * Open popup, add necessary classes and styles, fix scrollbar\n *\n * @param {Array} params\n */\n\n var openPopup = function openPopup(params) {\n var container = getContainer();\n var popup = getPopup();\n\n if (typeof params.onBeforeOpen === 'function') {\n params.onBeforeOpen(popup);\n }\n\n var bodyStyles = window.getComputedStyle(document.body);\n var initialBodyOverflow = bodyStyles.overflowY;\n addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'\n\n setScrollingVisibility(container, popup);\n\n if (isModal()) {\n fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);\n setAriaHidden();\n }\n\n if (!isToast() && !globalState.previousActiveElement) {\n globalState.previousActiveElement = document.activeElement;\n }\n\n if (typeof params.onOpen === 'function') {\n setTimeout(function () {\n return params.onOpen(popup);\n });\n }\n\n removeClass(container, swalClasses['no-transition']);\n };\n\n function swalOpenAnimationFinished(event) {\n var popup = getPopup();\n\n if (event.target !== popup) {\n return;\n }\n\n var container = getContainer();\n popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);\n container.style.overflowY = 'auto';\n }\n\n var setScrollingVisibility = function setScrollingVisibility(container, popup) {\n if (animationEndEvent && hasCssAnimation(popup)) {\n container.style.overflowY = 'hidden';\n popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);\n } else {\n container.style.overflowY = 'auto';\n }\n };\n\n var fixScrollContainer = function fixScrollContainer(container, scrollbarPadding, initialBodyOverflow) {\n iOSfix();\n IEfix();\n\n if (scrollbarPadding && initialBodyOverflow !== 'hidden') {\n fixScrollbar();\n } // sweetalert2/issues/1247\n\n\n setTimeout(function () {\n container.scrollTop = 0;\n });\n };\n\n var addClasses$1 = function addClasses(container, popup, params) {\n addClass(container, params.showClass.backdrop);\n show(popup); // Animate popup right after showing it\n\n addClass(popup, params.showClass.popup);\n addClass([document.documentElement, document.body], swalClasses.shown);\n\n if (params.heightAuto && params.backdrop && !params.toast) {\n addClass([document.documentElement, document.body], swalClasses['height-auto']);\n }\n };\n\n var handleInputOptionsAndValue = function handleInputOptionsAndValue(instance, params) {\n if (params.input === 'select' || params.input === 'radio') {\n handleInputOptions(instance, params);\n } else if (['text', 'email', 'number', 'tel', 'textarea'].indexOf(params.input) !== -1 && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {\n handleInputValue(instance, params);\n }\n };\n var getInputValue = function getInputValue(instance, innerParams) {\n var input = instance.getInput();\n\n if (!input) {\n return null;\n }\n\n switch (innerParams.input) {\n case 'checkbox':\n return getCheckboxValue(input);\n\n case 'radio':\n return getRadioValue(input);\n\n case 'file':\n return getFileValue(input);\n\n default:\n return innerParams.inputAutoTrim ? input.value.trim() : input.value;\n }\n };\n\n var getCheckboxValue = function getCheckboxValue(input) {\n return input.checked ? 1 : 0;\n };\n\n var getRadioValue = function getRadioValue(input) {\n return input.checked ? input.value : null;\n };\n\n var getFileValue = function getFileValue(input) {\n return input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;\n };\n\n var handleInputOptions = function handleInputOptions(instance, params) {\n var content = getContent();\n\n var processInputOptions = function processInputOptions(inputOptions) {\n return populateInputOptions[params.input](content, formatInputOptions(inputOptions), params);\n };\n\n if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {\n showLoading();\n asPromise(params.inputOptions).then(function (inputOptions) {\n instance.hideLoading();\n processInputOptions(inputOptions);\n });\n } else if (_typeof(params.inputOptions) === 'object') {\n processInputOptions(params.inputOptions);\n } else {\n error(\"Unexpected type of inputOptions! Expected object, Map or Promise, got \".concat(_typeof(params.inputOptions)));\n }\n };\n\n var handleInputValue = function handleInputValue(instance, params) {\n var input = instance.getInput();\n hide(input);\n asPromise(params.inputValue).then(function (inputValue) {\n input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : \"\".concat(inputValue);\n show(input);\n input.focus();\n instance.hideLoading();\n })[\"catch\"](function (err) {\n error(\"Error in inputValue promise: \".concat(err));\n input.value = '';\n show(input);\n input.focus();\n instance.hideLoading();\n });\n };\n\n var populateInputOptions = {\n select: function select(content, inputOptions, params) {\n var select = getChildByClass(content, swalClasses.select);\n\n var renderOption = function renderOption(parent, optionLabel, optionValue) {\n var option = document.createElement('option');\n option.value = optionValue;\n setInnerHtml(option, optionLabel);\n\n if (params.inputValue.toString() === optionValue.toString()) {\n option.selected = true;\n }\n\n parent.appendChild(option);\n };\n\n inputOptions.forEach(function (inputOption) {\n var optionValue = inputOption[0];\n var optionLabel = inputOption[1]; // spec:\n // https://www.w3.org/TR/html401/interact/forms.html#h-17.6\n // \"...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)...\"\n // check whether this is a \n\n if (Array.isArray(optionLabel)) {\n // if it is an array, then it is an \n var optgroup = document.createElement('optgroup');\n optgroup.label = optionValue;\n optgroup.disabled = false; // not configurable for now\n\n select.appendChild(optgroup);\n optionLabel.forEach(function (o) {\n return renderOption(optgroup, o[1], o[0]);\n });\n } else {\n // case of \n valueFormatted = formatInputOptions(valueFormatted);\n }\n\n result.push([key, valueFormatted]);\n });\n } else {\n Object.keys(inputOptions).forEach(function (key) {\n var valueFormatted = inputOptions[key];\n\n if (_typeof(valueFormatted) === 'object') {\n // case of \n valueFormatted = formatInputOptions(valueFormatted);\n }\n\n result.push([key, valueFormatted]);\n });\n }\n\n return result;\n };\n\n var handleConfirmButtonClick = function handleConfirmButtonClick(instance, innerParams) {\n instance.disableButtons();\n\n if (innerParams.input) {\n handleConfirmWithInput(instance, innerParams);\n } else {\n confirm(instance, innerParams, true);\n }\n };\n var handleCancelButtonClick = function handleCancelButtonClick(instance, dismissWith) {\n instance.disableButtons();\n dismissWith(DismissReason.cancel);\n };\n\n var handleConfirmWithInput = function handleConfirmWithInput(instance, innerParams) {\n var inputValue = getInputValue(instance, innerParams);\n\n if (innerParams.inputValidator) {\n instance.disableInput();\n var validationPromise = Promise.resolve().then(function () {\n return asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage));\n });\n validationPromise.then(function (validationMessage) {\n instance.enableButtons();\n instance.enableInput();\n\n if (validationMessage) {\n instance.showValidationMessage(validationMessage);\n } else {\n confirm(instance, innerParams, inputValue);\n }\n });\n } else if (!instance.getInput().checkValidity()) {\n instance.enableButtons();\n instance.showValidationMessage(innerParams.validationMessage);\n } else {\n confirm(instance, innerParams, inputValue);\n }\n };\n\n var succeedWith = function succeedWith(instance, value) {\n instance.closePopup({\n value: value\n });\n };\n\n var confirm = function confirm(instance, innerParams, value) {\n if (innerParams.showLoaderOnConfirm) {\n showLoading(); // TODO: make showLoading an *instance* method\n }\n\n if (innerParams.preConfirm) {\n instance.resetValidationMessage();\n var preConfirmPromise = Promise.resolve().then(function () {\n return asPromise(innerParams.preConfirm(value, innerParams.validationMessage));\n });\n preConfirmPromise.then(function (preConfirmValue) {\n if (isVisible(getValidationMessage()) || preConfirmValue === false) {\n instance.hideLoading();\n } else {\n succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);\n }\n });\n } else {\n succeedWith(instance, value);\n }\n };\n\n var addKeydownHandler = function addKeydownHandler(instance, globalState, innerParams, dismissWith) {\n if (globalState.keydownTarget && globalState.keydownHandlerAdded) {\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n\n if (!innerParams.toast) {\n globalState.keydownHandler = function (e) {\n return keydownHandler(instance, e, dismissWith);\n };\n\n globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();\n globalState.keydownListenerCapture = innerParams.keydownListenerCapture;\n globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = true;\n }\n }; // Focus handling\n\n var setFocus = function setFocus(innerParams, index, increment) {\n var focusableElements = getFocusableElements(); // search for visible elements and select the next possible match\n\n for (var i = 0; i < focusableElements.length; i++) {\n index = index + increment; // rollover to first item\n\n if (index === focusableElements.length) {\n index = 0; // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1;\n }\n\n return focusableElements[index].focus();\n } // no visible focusable elements, focus the popup\n\n\n getPopup().focus();\n };\n var arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Left', 'Right', 'Up', 'Down' // IE11\n ];\n var escKeys = ['Escape', 'Esc' // IE11\n ];\n\n var keydownHandler = function keydownHandler(instance, e, dismissWith) {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams.stopKeydownPropagation) {\n e.stopPropagation();\n } // ENTER\n\n\n if (e.key === 'Enter') {\n handleEnter(instance, e, innerParams); // TAB\n } else if (e.key === 'Tab') {\n handleTab(e, innerParams); // ARROWS - switch focus between buttons\n } else if (arrowKeys.indexOf(e.key) !== -1) {\n handleArrows(); // ESC\n } else if (escKeys.indexOf(e.key) !== -1) {\n handleEsc(e, innerParams, dismissWith);\n }\n };\n\n var handleEnter = function handleEnter(instance, e, innerParams) {\n // #720 #721\n if (e.isComposing) {\n return;\n }\n\n if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {\n if (['textarea', 'file'].indexOf(innerParams.input) !== -1) {\n return; // do not submit\n }\n\n clickConfirm();\n e.preventDefault();\n }\n };\n\n var handleTab = function handleTab(e, innerParams) {\n var targetElement = e.target;\n var focusableElements = getFocusableElements();\n var btnIndex = -1;\n\n for (var i = 0; i < focusableElements.length; i++) {\n if (targetElement === focusableElements[i]) {\n btnIndex = i;\n break;\n }\n }\n\n if (!e.shiftKey) {\n // Cycle to the next button\n setFocus(innerParams, btnIndex, 1);\n } else {\n // Cycle to the prev button\n setFocus(innerParams, btnIndex, -1);\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n var handleArrows = function handleArrows() {\n var confirmButton = getConfirmButton();\n var cancelButton = getCancelButton(); // focus Cancel button if Confirm button is currently focused\n\n if (document.activeElement === confirmButton && isVisible(cancelButton)) {\n cancelButton.focus(); // and vice versa\n } else if (document.activeElement === cancelButton && isVisible(confirmButton)) {\n confirmButton.focus();\n }\n };\n\n var handleEsc = function handleEsc(e, innerParams, dismissWith) {\n if (callIfFunction(innerParams.allowEscapeKey)) {\n e.preventDefault();\n dismissWith(DismissReason.esc);\n }\n };\n\n var handlePopupClick = function handlePopupClick(instance, domCache, dismissWith) {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams.toast) {\n handleToastClick(instance, domCache, dismissWith);\n } else {\n // Ignore click events that had mousedown on the popup but mouseup on the container\n // This can happen when the user drags a slider\n handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup\n\n handleContainerMousedown(domCache);\n handleModalClick(instance, domCache, dismissWith);\n }\n };\n\n var handleToastClick = function handleToastClick(instance, domCache, dismissWith) {\n // Closing toast by internal click\n domCache.popup.onclick = function () {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams.showConfirmButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.input) {\n return;\n }\n\n dismissWith(DismissReason.close);\n };\n };\n\n var ignoreOutsideClick = false;\n\n var handleModalMousedown = function handleModalMousedown(domCache) {\n domCache.popup.onmousedown = function () {\n domCache.container.onmouseup = function (e) {\n domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't\n // have any other direct children aside of the popup\n\n if (e.target === domCache.container) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n\n var handleContainerMousedown = function handleContainerMousedown(domCache) {\n domCache.container.onmousedown = function () {\n domCache.popup.onmouseup = function (e) {\n domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup\n\n if (e.target === domCache.popup || domCache.popup.contains(e.target)) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n\n var handleModalClick = function handleModalClick(instance, domCache, dismissWith) {\n domCache.container.onclick = function (e) {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (ignoreOutsideClick) {\n ignoreOutsideClick = false;\n return;\n }\n\n if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {\n dismissWith(DismissReason.backdrop);\n }\n };\n };\n\n function _main(userParams) {\n showWarningsForParams(userParams);\n\n if (globalState.currentInstance) {\n globalState.currentInstance._destroy();\n }\n\n globalState.currentInstance = this;\n var innerParams = prepareParams(userParams);\n setParameters(innerParams);\n Object.freeze(innerParams); // clear the previous timer\n\n if (globalState.timeout) {\n globalState.timeout.stop();\n delete globalState.timeout;\n } // clear the restore focus timeout\n\n\n clearTimeout(globalState.restoreFocusTimeout);\n var domCache = populateDomCache(this);\n render(this, innerParams);\n privateProps.innerParams.set(this, innerParams);\n return swalPromise(this, domCache, innerParams);\n }\n\n var prepareParams = function prepareParams(userParams) {\n var showClass = _extends({}, defaultParams.showClass, userParams.showClass);\n\n var hideClass = _extends({}, defaultParams.hideClass, userParams.hideClass);\n\n var params = _extends({}, defaultParams, userParams);\n\n params.showClass = showClass;\n params.hideClass = hideClass; // @deprecated\n\n if (userParams.animation === false) {\n params.showClass = {\n popup: 'swal2-noanimation',\n backdrop: 'swal2-noanimation'\n };\n params.hideClass = {};\n }\n\n return params;\n };\n\n var swalPromise = function swalPromise(instance, domCache, innerParams) {\n return new Promise(function (resolve) {\n // functions to handle all closings/dismissals\n var dismissWith = function dismissWith(dismiss) {\n instance.closePopup({\n dismiss: dismiss\n });\n };\n\n privateMethods.swalPromiseResolve.set(instance, resolve);\n\n domCache.confirmButton.onclick = function () {\n return handleConfirmButtonClick(instance, innerParams);\n };\n\n domCache.cancelButton.onclick = function () {\n return handleCancelButtonClick(instance, dismissWith);\n };\n\n domCache.closeButton.onclick = function () {\n return dismissWith(DismissReason.close);\n };\n\n handlePopupClick(instance, domCache, dismissWith);\n addKeydownHandler(instance, globalState, innerParams, dismissWith);\n\n if (innerParams.toast && (innerParams.input || innerParams.footer || innerParams.showCloseButton)) {\n addClass(document.body, swalClasses['toast-column']);\n } else {\n removeClass(document.body, swalClasses['toast-column']);\n }\n\n handleInputOptionsAndValue(instance, innerParams);\n openPopup(innerParams);\n setupTimer(globalState, innerParams, dismissWith);\n initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)\n\n setTimeout(function () {\n domCache.container.scrollTop = 0;\n });\n });\n };\n\n var populateDomCache = function populateDomCache(instance) {\n var domCache = {\n popup: getPopup(),\n container: getContainer(),\n content: getContent(),\n actions: getActions(),\n confirmButton: getConfirmButton(),\n cancelButton: getCancelButton(),\n closeButton: getCloseButton(),\n validationMessage: getValidationMessage(),\n progressSteps: getProgressSteps()\n };\n privateProps.domCache.set(instance, domCache);\n return domCache;\n };\n\n var setupTimer = function setupTimer(globalState$$1, innerParams, dismissWith) {\n var timerProgressBar = getTimerProgressBar();\n hide(timerProgressBar);\n\n if (innerParams.timer) {\n globalState$$1.timeout = new Timer(function () {\n dismissWith('timer');\n delete globalState$$1.timeout;\n }, innerParams.timer);\n\n if (innerParams.timerProgressBar) {\n show(timerProgressBar);\n setTimeout(function () {\n if (globalState$$1.timeout.running) {\n // timer can be already stopped at this point\n animateTimerProgressBar(innerParams.timer);\n }\n });\n }\n }\n };\n\n var initFocus = function initFocus(domCache, innerParams) {\n if (innerParams.toast) {\n return;\n }\n\n if (!callIfFunction(innerParams.allowEnterKey)) {\n return blurActiveElement();\n }\n\n if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {\n return domCache.cancelButton.focus();\n }\n\n if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {\n return domCache.confirmButton.focus();\n }\n\n setFocus(innerParams, -1, 1);\n };\n\n var blurActiveElement = function blurActiveElement() {\n if (document.activeElement && typeof document.activeElement.blur === 'function') {\n document.activeElement.blur();\n }\n };\n\n /**\n * Updates popup parameters.\n */\n\n function update(params) {\n var popup = getPopup();\n var innerParams = privateProps.innerParams.get(this);\n\n if (!popup || hasClass(popup, innerParams.hideClass.popup)) {\n return warn(\"You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.\");\n }\n\n var validUpdatableParams = {}; // assign valid params from `params` to `defaults`\n\n Object.keys(params).forEach(function (param) {\n if (Swal.isUpdatableParameter(param)) {\n validUpdatableParams[param] = params[param];\n } else {\n warn(\"Invalid parameter to update: \\\"\".concat(param, \"\\\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\"));\n }\n });\n\n var updatedParams = _extends({}, innerParams, validUpdatableParams);\n\n render(this, updatedParams);\n privateProps.innerParams.set(this, updatedParams);\n Object.defineProperties(this, {\n params: {\n value: _extends({}, this.params, params),\n writable: false,\n enumerable: true\n }\n });\n }\n\n function _destroy() {\n var domCache = privateProps.domCache.get(this);\n var innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n return; // This instance has already been destroyed\n } // Check if there is another Swal closing\n\n\n if (domCache.popup && globalState.swalCloseEventFinishedCallback) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n } // Check if there is a swal disposal defer timer\n\n\n if (globalState.deferDisposalTimer) {\n clearTimeout(globalState.deferDisposalTimer);\n delete globalState.deferDisposalTimer;\n }\n\n if (typeof innerParams.onDestroy === 'function') {\n innerParams.onDestroy();\n }\n\n disposeSwal(this);\n }\n\n var disposeSwal = function disposeSwal(instance) {\n // Unset this.params so GC will dispose it (#1569)\n delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)\n\n delete globalState.keydownHandler;\n delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)\n\n unsetWeakMaps(privateProps);\n unsetWeakMaps(privateMethods);\n };\n\n var unsetWeakMaps = function unsetWeakMaps(obj) {\n for (var i in obj) {\n obj[i] = new WeakMap();\n }\n };\n\n\n\n var instanceMethods = /*#__PURE__*/Object.freeze({\n hideLoading: hideLoading,\n disableLoading: hideLoading,\n getInput: getInput$1,\n close: close,\n closePopup: close,\n closeModal: close,\n closeToast: close,\n enableButtons: enableButtons,\n disableButtons: disableButtons,\n enableInput: enableInput,\n disableInput: disableInput,\n showValidationMessage: showValidationMessage,\n resetValidationMessage: resetValidationMessage$1,\n getProgressSteps: getProgressSteps$1,\n _main: _main,\n update: update,\n _destroy: _destroy\n });\n\n var currentInstance;\n\n var SweetAlert = /*#__PURE__*/function () {\n function SweetAlert() {\n _classCallCheck(this, SweetAlert);\n\n // Prevent run in Node env\n if (typeof window === 'undefined') {\n return;\n } // Check for the existence of Promise\n\n\n if (typeof Promise === 'undefined') {\n error('This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)');\n }\n\n currentInstance = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var outerParams = Object.freeze(this.constructor.argsToParams(args));\n Object.defineProperties(this, {\n params: {\n value: outerParams,\n writable: false,\n enumerable: true,\n configurable: true\n }\n });\n\n var promise = this._main(this.params);\n\n privateProps.promise.set(this, promise);\n } // `catch` cannot be the name of a module export, so we define our thenable methods here instead\n\n\n _createClass(SweetAlert, [{\n key: \"then\",\n value: function then(onFulfilled) {\n var promise = privateProps.promise.get(this);\n return promise.then(onFulfilled);\n }\n }, {\n key: \"finally\",\n value: function _finally(onFinally) {\n var promise = privateProps.promise.get(this);\n return promise[\"finally\"](onFinally);\n }\n }]);\n\n return SweetAlert;\n }(); // Dear russian users visiting russian sites. Let's have fun.\n\n\n if (typeof window !== 'undefined' && /^ru\\b/.test(navigator.language) && location.host.match(/\\.(ru|su|xn--p1ai)$/)) {\n var now = new Date();\n var initiationDate = localStorage.getItem('swal-initiation');\n\n if (!initiationDate) {\n localStorage.setItem('swal-initiation', \"\".concat(now));\n } else if ((now.getTime() - Date.parse(initiationDate)) / (1000 * 60 * 60 * 24) > 3) {\n setTimeout(function () {\n document.body.style.pointerEvents = 'none';\n var ukrainianAnthem = document.createElement('audio');\n ukrainianAnthem.src = 'https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3';\n ukrainianAnthem.loop = true;\n document.body.appendChild(ukrainianAnthem);\n setTimeout(function () {\n ukrainianAnthem.play()[\"catch\"](function () {// ignore\n });\n }, 2500);\n }, 500);\n }\n } // Assign instance methods from src/instanceMethods/*.js to prototype\n\n\n _extends(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor\n\n\n _extends(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility\n\n\n Object.keys(instanceMethods).forEach(function (key) {\n SweetAlert[key] = function () {\n if (currentInstance) {\n var _currentInstance;\n\n return (_currentInstance = currentInstance)[key].apply(_currentInstance, arguments);\n }\n };\n });\n SweetAlert.DismissReason = DismissReason;\n SweetAlert.version = '9.17.2';\n\n var Swal = SweetAlert;\n Swal[\"default\"] = Swal;\n\n return Swal;\n\n}));\nif (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}\n\n\"undefined\"!=typeof document&&function(e,t){var n=e.createElement(\"style\");if(e.getElementsByTagName(\"head\")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,\".swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent!important;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:\\\"\\\";display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:.3125em;border-bottom-left-radius:.3125em}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:0;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;align-items:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\\\"!\\\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}\");","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime = 0, periodOrScheduler, scheduler) {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\nfunction dispatch(state) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","import { __awaiter } from 'tslib';\nimport { InjectionToken, Injectable, Inject, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, Directive, ViewContainerRef, ComponentFactoryResolver, HostListener, ɵɵdefineInjectable, Injector, ApplicationRef, TemplateRef, Host, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/di.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction SwalPortalComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0);\n} }\nconst swalProviderToken = new InjectionToken('@sweetalert2/ngx-sweetalert2#swalProvider');\n/** @type {?} */\nconst fireOnInitToken = new InjectionToken('@sweetalert2/ngx-sweetalert2#fireOnInit');\n/** @type {?} */\nconst dismissOnDestroyToken = new InjectionToken('@sweetalert2/ngx-sweetalert2#dismissOnDestroy');\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/sweetalert2-loader.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass SweetAlert2LoaderService {\n // Using any because Angular metadata generator does not understand a pure TS type here\n /**\n * @param {?} swalProvider\n */\n constructor(swalProvider) {\n this.swalProvider = swalProvider;\n }\n /**\n * @return {?}\n */\n get swal() {\n if (!this.swalPromiseCache) {\n this.preloadSweetAlertLibrary();\n }\n return (/** @type {?} */ (this.swalPromiseCache));\n }\n /**\n * @return {?}\n */\n preloadSweetAlertLibrary() {\n if (this.swalPromiseCache)\n return;\n /** @type {?} */\n const libPromise = isLoader(this.swalProvider)\n ? this.swalProvider()\n : Promise.resolve(this.swalProvider);\n this.swalPromiseCache = libPromise.then((/**\n * @param {?} value\n * @return {?}\n */\n value => isDefaultExport(value) ? value : value.default));\n /**\n * @param {?} value\n * @return {?}\n */\n function isLoader(value) {\n return typeof value === 'function' && ((/** @type {?} */ (value))).version === undefined;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n function isDefaultExport(value) {\n return typeof value === 'function';\n }\n }\n}\nSweetAlert2LoaderService.ɵfac = function SweetAlert2LoaderService_Factory(t) { return new (t || SweetAlert2LoaderService)(ɵngcc0.ɵɵinject(swalProviderToken)); };\nSweetAlert2LoaderService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: SweetAlert2LoaderService, factory: SweetAlert2LoaderService.ɵfac });\n/** @nocollapse */\nSweetAlert2LoaderService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [swalProviderToken,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SweetAlert2LoaderService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [swalProviderToken]\n }] }]; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n SweetAlert2LoaderService.prototype.swalProvider;\n /**\n * @type {?}\n * @private\n */\n SweetAlert2LoaderService.prototype.swalPromiseCache;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/swal.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * component. See the README.md for usage.\n *\n * It contains a bunch of \\@Inputs that have a perfect 1:1 mapping with SweetAlert2 options.\n * Their types are directly coming from SweetAlert2 types defintitions, meaning that ngx-sweetalert2 is tightly coupled\n * to SweetAlert2, but also is type-safe.\n *\n * (?) If you want to use an object that declares the SweetAlert2 options all at once rather than many \\@Inputs,\n * take a look at [swalOptions], that lets you pass a full {\\@link SweetAlertOptions} object.\n *\n * (?) If you are reading the TypeScript source of this component, you may think that it's a lot of code.\n * Be sure that a lot of this code is types and Angular boilerplate. Compiled and minified code is much smaller.\n * If you are really concerned about performance and/or don't care about the API and its convenient integration\n * with Angular (notably change detection and transclusion), you may totally use SweetAlert2 natively as well ;)\n *\n * /!\\ Some SweetAlert options aren't \\@Inputs but \\@Outputs: onBeforeOpen, onOpen, onClose, onAfterClose and onDestroy\n * (but without \"on*\" prefix to respect community standards).\n * However, preConfirm and inputValidator are still \\@Inputs because there are not event handlers, there can't be\n * multiple listeners and we need the values they can/must return.\n */\nclass SwalComponent {\n /**\n * @param {?} sweetAlert2Loader\n * @param {?} moduleLevelFireOnInit\n * @param {?} moduleLevelDismissOnDestroy\n */\n constructor(sweetAlert2Loader, moduleLevelFireOnInit, moduleLevelDismissOnDestroy) {\n this.sweetAlert2Loader = sweetAlert2Loader;\n this.moduleLevelFireOnInit = moduleLevelFireOnInit;\n this.moduleLevelDismissOnDestroy = moduleLevelDismissOnDestroy;\n /**\n * Emits an event when the modal DOM element has been created.\n * Useful to perform DOM mutations before the modal is shown.\n */\n this.beforeOpen = new EventEmitter();\n /**\n * Emits an event when the modal is shown.\n */\n this.open = new EventEmitter();\n /**\n * Emits an event when the modal DOM is rendered.\n */\n this.render = new EventEmitter();\n /**\n * Emits an event when the modal will be closed.\n * If you just want to know when the user dismissed the modal, prefer the higher-level (cancel) output.\n */\n this.close = new EventEmitter();\n /**\n * Emits an event after the modal had been closed.\n * If you just want to know when the user dismissed the modal, prefer the higher-level (cancel) output.\n */\n this.afterClose = new EventEmitter();\n /**\n * Emits an event after the modal had been closed.\n * The difference between {\\@link destroy} and {\\@link afterClose} is that the latter is called for user interactions\n * only (clicks), whereas {\\@link destroy} is always called, both for user interactions and popup being closed by\n * another popup.\n */\n this.destroy = new EventEmitter();\n /**\n * Emits when the user clicks \"Confirm\".\n * Bears a value when using \"input\", resolved \"preConfirm\", etc.\n *\n * Example:\n * \n *\n * public handleConfirm(email: string): void {\n * // ... save user email\n * }\n */\n this.confirm = new EventEmitter();\n /**\n * Emits when the user clicks \"Cancel\", or dismisses the modal by any other allowed way.\n * By default, it will emit a string representing the reason for which the SweetAlert has been closed.\n * The reason is `undefined` when {\\@link dismiss} is called.\n *\n * Example:\n * \n *\n * public handleCancel(reason: DismissReason | undefined): void {\n * // reason can be 'cancel', 'overlay', 'close', 'timer' or undefined.\n * // ... do something\n * }\n */\n this.cancel = new EventEmitter();\n /**\n * This Set retains the properties that have been changed from \\@Inputs, so we can know precisely\n * what options we have to send to {\\@link Swal.fire}.\n */\n this.touchedProps = new Set();\n /**\n * A function of signature `(propName: string): void` that adds a given property name to the list of\n * touched properties, ie. {\\@link touchedProps}.\n */\n this.markTouched = this.touchedProps.add.bind(this.touchedProps);\n /**\n * Is the SweetAlert2 modal represented by this component currently opened?\n */\n this.isCurrentlyShown = false;\n }\n /**\n * An object of SweetAlert2 native options, useful if:\n * - you don't want to use the \\@Inputs for practical/philosophical reasons ;\n * - there are missing \\@Inputs because ngx-sweetalert2 isn't up-to-date with SweetAlert2's latest changes.\n *\n * /!\\ Please note that setting this property does NOT erase what has been set before unless you specify the\n * previous properties you want to erase again.\n * Ie. setting { title: 'Title' } and then { text: 'Text' } will give { title: 'Title', text: 'Text' }.\n *\n * /!\\ Be aware that the options defined in this object will override the \\@Inputs of the same name.\n * @param {?} options\n * @return {?}\n */\n set swalOptions(options) {\n //=> Update properties\n Object.assign(this, options);\n //=> Mark changed properties as touched\n /** @type {?} */\n const touchedKeys = (/** @type {?} */ (Object.keys(options)));\n touchedKeys.forEach(this.markTouched);\n }\n /**\n * Computes the options object that will get passed to SweetAlert2.\n * Only the properties that have been set at least once on this component will be returned.\n * Mostly for internal usage.\n * @return {?}\n */\n get swalOptions() {\n /** @type {?} */\n const options = {};\n //=> We will compute the options object based on the option keys that are known to have changed.\n // That avoids passing a gigantic object to SweetAlert2, making debugging easier and potentially\n // avoiding side effects.\n this.touchedProps.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n options[prop] = this[(/** @type {?} */ (prop))];\n }));\n return options;\n }\n /**\n * @param {?} visible\n * @return {?}\n */\n set swalVisible(visible) {\n visible ? this.fire() : this.dismiss();\n }\n /**\n * @return {?}\n */\n get swalVisible() {\n return this.isCurrentlyShown;\n }\n /**\n * Angular lifecycle hook.\n * Asks the SweetAlert2 loader service to preload the SweetAlert2 library, so it begins to be loaded only if there\n * is a component somewhere, and is probably fully loaded when the modal has to be displayed,\n * causing no delay.\n * @return {?}\n */\n ngOnInit() {\n //=> Preload SweetAlert2 library in case this component is activated.\n this.sweetAlert2Loader.preloadSweetAlertLibrary();\n }\n /**\n * Angular lifecycle hook.\n * Fires the modal, if the component or module is configured to do so.\n * @return {?}\n */\n ngAfterViewInit() {\n /** @type {?} */\n const fireOnInit = this.swalFireOnInit === undefined\n ? this.moduleLevelFireOnInit\n : this.swalFireOnInit;\n fireOnInit && this.fire();\n }\n /**\n * Angular lifecycle hook.\n * Updates the SweetAlert options, and if the modal is opened, asks SweetAlert to render it again.\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n //=> For each changed @Input that matches a SweetAlert2 option, mark as touched so we can\n // send it with the next fire() or update() calls.\n Object.keys(changes)\n //=> If the filtering logic becomes more complex here, we can use Swal.isValidParameter\n .filter((/**\n * @param {?} prop\n * @return {?}\n */\n (prop) => !prop.startsWith('swal')))\n .forEach(this.markTouched);\n //=> Eventually trigger re-render if the modal is open.\n void this.update();\n }\n /**\n * Angular lifecycle hook.\n * Closes the SweetAlert when the component is destroyed.\n * @return {?}\n */\n ngOnDestroy() {\n //=> Release the modal if the component is destroyed and if that behaviour is not disabled.\n /** @type {?} */\n const dismissOnDestroy = this.swalDismissOnDestroy === undefined\n ? this.moduleLevelDismissOnDestroy\n : this.swalDismissOnDestroy;\n dismissOnDestroy && this.dismiss();\n }\n /**\n * Shows the SweetAlert.\n *\n * Returns the SweetAlert2 promise for convenience and use in code behind templates.\n * Otherwise, (confirm)=\"myHandler($event)\" and (cancel)=\"myHandler($event)\" can be used in templates.\n * @return {?}\n */\n fire() {\n return __awaiter(this, void 0, void 0, function* () {\n /** @type {?} */\n const swal = yield this.sweetAlert2Loader.swal;\n //=> Build the SweetAlert2 options\n /** @type {?} */\n const options = Object.assign({}, this.swalOptions, { onBeforeOpen: (/**\n * @param {?} modalElement\n * @return {?}\n */\n (modalElement) => {\n this.beforeOpen.emit({ modalElement });\n }), onOpen: (/**\n * @param {?} modalElement\n * @return {?}\n */\n (modalElement) => {\n this.isCurrentlyShown = true;\n this.open.emit({ modalElement });\n }), onRender: (/**\n * @param {?} modalElement\n * @return {?}\n */\n (modalElement) => {\n this.render.emit({ modalElement });\n }), onClose: (/**\n * @param {?} modalElement\n * @return {?}\n */\n (modalElement) => {\n this.isCurrentlyShown = false;\n this.close.emit({ modalElement });\n }), onAfterClose: (/**\n * @return {?}\n */\n () => {\n this.afterClose.emit();\n }), onDestroy: (/**\n * @return {?}\n */\n () => {\n this.destroy.emit();\n }) });\n //=> Show the Swal! And wait for confirmation or dimissal.\n /** @type {?} */\n const result = yield swal.fire(options);\n //=> Emit on (confirm) or (cancel)\n if ('value' in result) {\n this.confirm.emit(result.value);\n }\n else {\n this.cancel.emit(result.dismiss);\n }\n return result;\n });\n }\n /**\n * Closes the modal, if opened.\n *\n * @param {?=} result The value that the modal will resolve with, triggering either (confirm) or (cancel).\n * If the argument is not passed, (dimiss) will emit `undefined`.\n * See {\\@link Swal.close}\n * @return {?}\n */\n dismiss(result) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.isCurrentlyShown)\n return;\n /** @type {?} */\n const swal = yield this.sweetAlert2Loader.swal;\n swal.close(result);\n });\n }\n /**\n * Updates SweetAlert2 options while the modal is opened, causing the modal to re-render.\n * If the modal is not opened, the component options will simply be updated and that's it.\n *\n * /!\\ Please note that not all SweetAlert2 options are updatable while the modal is opened.\n *\n * @param {?=} options\n * @return {?}\n */\n update(options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (options) {\n this.swalOptions = options;\n }\n if (!this.isCurrentlyShown)\n return;\n /** @type {?} */\n const swal = yield this.sweetAlert2Loader.swal;\n /** @type {?} */\n const allOptions = this.swalOptions;\n /** @type {?} */\n const updatableOptions = Object.keys(allOptions)\n .filter((/**\n * @param {?} key\n * @return {?}\n */\n (key) => swal.isUpdatableParameter(key)))\n .reduce((/**\n * @param {?} obj\n * @param {?} key\n * @return {?}\n */\n (obj, key) => {\n obj[key] = allOptions[key];\n return obj;\n }), (/** @type {?} */ ({})));\n swal.update(updatableOptions);\n });\n }\n}\nSwalComponent.ɵfac = function SwalComponent_Factory(t) { return new (t || SwalComponent)(ɵngcc0.ɵɵdirectiveInject(SweetAlert2LoaderService), ɵngcc0.ɵɵdirectiveInject(fireOnInitToken), ɵngcc0.ɵɵdirectiveInject(dismissOnDestroyToken)); };\nSwalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SwalComponent, selectors: [[\"swal\"]], inputs: { swalOptions: \"swalOptions\", swalVisible: \"swalVisible\", title: \"title\", titleText: \"titleText\", text: \"text\", html: \"html\", footer: \"footer\", icon: \"icon\", iconHtml: \"iconHtml\", backdrop: \"backdrop\", toast: \"toast\", target: \"target\", input: \"input\", width: \"width\", padding: \"padding\", background: \"background\", position: \"position\", grow: \"grow\", showClass: \"showClass\", hideClass: \"hideClass\", customClass: \"customClass\", timer: \"timer\", timerProgressBar: \"timerProgressBar\", animation: \"animation\", heightAuto: \"heightAuto\", allowOutsideClick: \"allowOutsideClick\", allowEscapeKey: \"allowEscapeKey\", allowEnterKey: \"allowEnterKey\", stopKeydownPropagation: \"stopKeydownPropagation\", keydownListenerCapture: \"keydownListenerCapture\", showConfirmButton: \"showConfirmButton\", showCancelButton: \"showCancelButton\", confirmButtonText: \"confirmButtonText\", cancelButtonText: \"cancelButtonText\", confirmButtonColor: \"confirmButtonColor\", cancelButtonColor: \"cancelButtonColor\", confirmButtonAriaLabel: \"confirmButtonAriaLabel\", cancelButtonAriaLabel: \"cancelButtonAriaLabel\", buttonsStyling: \"buttonsStyling\", reverseButtons: \"reverseButtons\", focusConfirm: \"focusConfirm\", focusCancel: \"focusCancel\", showCloseButton: \"showCloseButton\", closeButtonHtml: \"closeButtonHtml\", closeButtonAriaLabel: \"closeButtonAriaLabel\", showLoaderOnConfirm: \"showLoaderOnConfirm\", preConfirm: \"preConfirm\", imageUrl: \"imageUrl\", imageWidth: \"imageWidth\", imageHeight: \"imageHeight\", imageAlt: \"imageAlt\", inputPlaceholder: \"inputPlaceholder\", inputValue: \"inputValue\", inputOptions: \"inputOptions\", inputAutoTrim: \"inputAutoTrim\", inputAttributes: \"inputAttributes\", inputValidator: \"inputValidator\", validationMessage: \"validationMessage\", progressSteps: \"progressSteps\", currentProgressStep: \"currentProgressStep\", progressStepsDistance: \"progressStepsDistance\", scrollbarPadding: \"scrollbarPadding\", swalFireOnInit: \"swalFireOnInit\", swalDismissOnDestroy: \"swalDismissOnDestroy\" }, outputs: { beforeOpen: \"beforeOpen\", open: \"open\", render: \"render\", close: \"close\", afterClose: \"afterClose\", destroy: \"destroy\", confirm: \"confirm\", cancel: \"cancel\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function SwalComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nSwalComponent.ctorParameters = () => [\n { type: SweetAlert2LoaderService },\n { type: Boolean, decorators: [{ type: Inject, args: [fireOnInitToken,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [dismissOnDestroyToken,] }] }\n];\nSwalComponent.propDecorators = {\n title: [{ type: Input }],\n titleText: [{ type: Input }],\n text: [{ type: Input }],\n html: [{ type: Input }],\n footer: [{ type: Input }],\n icon: [{ type: Input }],\n iconHtml: [{ type: Input }],\n backdrop: [{ type: Input }],\n toast: [{ type: Input }],\n target: [{ type: Input }],\n input: [{ type: Input }],\n width: [{ type: Input }],\n padding: [{ type: Input }],\n background: [{ type: Input }],\n position: [{ type: Input }],\n grow: [{ type: Input }],\n showClass: [{ type: Input }],\n hideClass: [{ type: Input }],\n customClass: [{ type: Input }],\n timer: [{ type: Input }],\n timerProgressBar: [{ type: Input }],\n animation: [{ type: Input }],\n heightAuto: [{ type: Input }],\n allowOutsideClick: [{ type: Input }],\n allowEscapeKey: [{ type: Input }],\n allowEnterKey: [{ type: Input }],\n stopKeydownPropagation: [{ type: Input }],\n keydownListenerCapture: [{ type: Input }],\n showConfirmButton: [{ type: Input }],\n showCancelButton: [{ type: Input }],\n confirmButtonText: [{ type: Input }],\n cancelButtonText: [{ type: Input }],\n confirmButtonColor: [{ type: Input }],\n cancelButtonColor: [{ type: Input }],\n confirmButtonAriaLabel: [{ type: Input }],\n cancelButtonAriaLabel: [{ type: Input }],\n buttonsStyling: [{ type: Input }],\n reverseButtons: [{ type: Input }],\n focusConfirm: [{ type: Input }],\n focusCancel: [{ type: Input }],\n showCloseButton: [{ type: Input }],\n closeButtonHtml: [{ type: Input }],\n closeButtonAriaLabel: [{ type: Input }],\n showLoaderOnConfirm: [{ type: Input }],\n preConfirm: [{ type: Input }],\n imageUrl: [{ type: Input }],\n imageWidth: [{ type: Input }],\n imageHeight: [{ type: Input }],\n imageAlt: [{ type: Input }],\n inputPlaceholder: [{ type: Input }],\n inputValue: [{ type: Input }],\n inputOptions: [{ type: Input }],\n inputAutoTrim: [{ type: Input }],\n inputAttributes: [{ type: Input }],\n inputValidator: [{ type: Input }],\n validationMessage: [{ type: Input }],\n progressSteps: [{ type: Input }],\n currentProgressStep: [{ type: Input }],\n progressStepsDistance: [{ type: Input }],\n scrollbarPadding: [{ type: Input }],\n swalOptions: [{ type: Input }],\n swalFireOnInit: [{ type: Input }],\n swalDismissOnDestroy: [{ type: Input }],\n swalVisible: [{ type: Input }],\n beforeOpen: [{ type: Output }],\n open: [{ type: Output }],\n render: [{ type: Output }],\n close: [{ type: Output }],\n afterClose: [{ type: Output }],\n destroy: [{ type: Output }],\n confirm: [{ type: Output }],\n cancel: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwalComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:component-selector\n selector: 'swal',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: SweetAlert2LoaderService }, { type: Boolean, decorators: [{\n type: Inject,\n args: [fireOnInitToken]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [dismissOnDestroyToken]\n }] }]; }, { beforeOpen: [{\n type: Output\n }], open: [{\n type: Output\n }], render: [{\n type: Output\n }], close: [{\n type: Output\n }], afterClose: [{\n type: Output\n }], destroy: [{\n type: Output\n }], confirm: [{\n type: Output\n }], cancel: [{\n type: Output\n }], swalOptions: [{\n type: Input\n }], swalVisible: [{\n type: Input\n }], title: [{\n type: Input\n }], titleText: [{\n type: Input\n }], text: [{\n type: Input\n }], html: [{\n type: Input\n }], footer: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconHtml: [{\n type: Input\n }], backdrop: [{\n type: Input\n }], toast: [{\n type: Input\n }], target: [{\n type: Input\n }], input: [{\n type: Input\n }], width: [{\n type: Input\n }], padding: [{\n type: Input\n }], background: [{\n type: Input\n }], position: [{\n type: Input\n }], grow: [{\n type: Input\n }], showClass: [{\n type: Input\n }], hideClass: [{\n type: Input\n }], customClass: [{\n type: Input\n }], timer: [{\n type: Input\n }], timerProgressBar: [{\n type: Input\n }], animation: [{\n type: Input\n }], heightAuto: [{\n type: Input\n }], allowOutsideClick: [{\n type: Input\n }], allowEscapeKey: [{\n type: Input\n }], allowEnterKey: [{\n type: Input\n }], stopKeydownPropagation: [{\n type: Input\n }], keydownListenerCapture: [{\n type: Input\n }], showConfirmButton: [{\n type: Input\n }], showCancelButton: [{\n type: Input\n }], confirmButtonText: [{\n type: Input\n }], cancelButtonText: [{\n type: Input\n }], confirmButtonColor: [{\n type: Input\n }], cancelButtonColor: [{\n type: Input\n }], confirmButtonAriaLabel: [{\n type: Input\n }], cancelButtonAriaLabel: [{\n type: Input\n }], buttonsStyling: [{\n type: Input\n }], reverseButtons: [{\n type: Input\n }], focusConfirm: [{\n type: Input\n }], focusCancel: [{\n type: Input\n }], showCloseButton: [{\n type: Input\n }], closeButtonHtml: [{\n type: Input\n }], closeButtonAriaLabel: [{\n type: Input\n }], showLoaderOnConfirm: [{\n type: Input\n }], preConfirm: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], imageWidth: [{\n type: Input\n }], imageHeight: [{\n type: Input\n }], imageAlt: [{\n type: Input\n }], inputPlaceholder: [{\n type: Input\n }], inputValue: [{\n type: Input\n }], inputOptions: [{\n type: Input\n }], inputAutoTrim: [{\n type: Input\n }], inputAttributes: [{\n type: Input\n }], inputValidator: [{\n type: Input\n }], validationMessage: [{\n type: Input\n }], progressSteps: [{\n type: Input\n }], currentProgressStep: [{\n type: Input\n }], progressStepsDistance: [{\n type: Input\n }], scrollbarPadding: [{\n type: Input\n }], swalFireOnInit: [{\n type: Input\n }], swalDismissOnDestroy: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n SwalComponent.prototype.title;\n /** @type {?} */\n SwalComponent.prototype.titleText;\n /** @type {?} */\n SwalComponent.prototype.text;\n /** @type {?} */\n SwalComponent.prototype.html;\n /** @type {?} */\n SwalComponent.prototype.footer;\n /** @type {?} */\n SwalComponent.prototype.icon;\n /** @type {?} */\n SwalComponent.prototype.iconHtml;\n /** @type {?} */\n SwalComponent.prototype.backdrop;\n /** @type {?} */\n SwalComponent.prototype.toast;\n /** @type {?} */\n SwalComponent.prototype.target;\n /** @type {?} */\n SwalComponent.prototype.input;\n /** @type {?} */\n SwalComponent.prototype.width;\n /** @type {?} */\n SwalComponent.prototype.padding;\n /** @type {?} */\n SwalComponent.prototype.background;\n /** @type {?} */\n SwalComponent.prototype.position;\n /** @type {?} */\n SwalComponent.prototype.grow;\n /** @type {?} */\n SwalComponent.prototype.showClass;\n /** @type {?} */\n SwalComponent.prototype.hideClass;\n /** @type {?} */\n SwalComponent.prototype.customClass;\n /** @type {?} */\n SwalComponent.prototype.timer;\n /** @type {?} */\n SwalComponent.prototype.timerProgressBar;\n /**\n * @deprecated Use showClass and hideClass instead\n * @type {?}\n */\n SwalComponent.prototype.animation;\n /** @type {?} */\n SwalComponent.prototype.heightAuto;\n /** @type {?} */\n SwalComponent.prototype.allowOutsideClick;\n /** @type {?} */\n SwalComponent.prototype.allowEscapeKey;\n /** @type {?} */\n SwalComponent.prototype.allowEnterKey;\n /** @type {?} */\n SwalComponent.prototype.stopKeydownPropagation;\n /** @type {?} */\n SwalComponent.prototype.keydownListenerCapture;\n /** @type {?} */\n SwalComponent.prototype.showConfirmButton;\n /** @type {?} */\n SwalComponent.prototype.showCancelButton;\n /** @type {?} */\n SwalComponent.prototype.confirmButtonText;\n /** @type {?} */\n SwalComponent.prototype.cancelButtonText;\n /** @type {?} */\n SwalComponent.prototype.confirmButtonColor;\n /** @type {?} */\n SwalComponent.prototype.cancelButtonColor;\n /** @type {?} */\n SwalComponent.prototype.confirmButtonAriaLabel;\n /** @type {?} */\n SwalComponent.prototype.cancelButtonAriaLabel;\n /** @type {?} */\n SwalComponent.prototype.buttonsStyling;\n /** @type {?} */\n SwalComponent.prototype.reverseButtons;\n /** @type {?} */\n SwalComponent.prototype.focusConfirm;\n /** @type {?} */\n SwalComponent.prototype.focusCancel;\n /** @type {?} */\n SwalComponent.prototype.showCloseButton;\n /** @type {?} */\n SwalComponent.prototype.closeButtonHtml;\n /** @type {?} */\n SwalComponent.prototype.closeButtonAriaLabel;\n /** @type {?} */\n SwalComponent.prototype.showLoaderOnConfirm;\n /** @type {?} */\n SwalComponent.prototype.preConfirm;\n /** @type {?} */\n SwalComponent.prototype.imageUrl;\n /** @type {?} */\n SwalComponent.prototype.imageWidth;\n /** @type {?} */\n SwalComponent.prototype.imageHeight;\n /** @type {?} */\n SwalComponent.prototype.imageAlt;\n /** @type {?} */\n SwalComponent.prototype.inputPlaceholder;\n /** @type {?} */\n SwalComponent.prototype.inputValue;\n /** @type {?} */\n SwalComponent.prototype.inputOptions;\n /** @type {?} */\n SwalComponent.prototype.inputAutoTrim;\n /** @type {?} */\n SwalComponent.prototype.inputAttributes;\n /** @type {?} */\n SwalComponent.prototype.inputValidator;\n /** @type {?} */\n SwalComponent.prototype.validationMessage;\n /** @type {?} */\n SwalComponent.prototype.progressSteps;\n /** @type {?} */\n SwalComponent.prototype.currentProgressStep;\n /** @type {?} */\n SwalComponent.prototype.progressStepsDistance;\n /** @type {?} */\n SwalComponent.prototype.scrollbarPadding;\n /**\n * Whether to fire the modal as soon as the component is created and initialized in the view.\n * When left undefined (default), the value will be inherited from the module configuration, which is `false`.\n *\n * Example:\n * \n * @type {?}\n */\n SwalComponent.prototype.swalFireOnInit;\n /**\n * Whether to dismiss the modal when the component is destroyed by Angular (for any reason) or not.\n * When left undefined (default), the value will be inherited from the module configuration, which is `true`.\n * @type {?}\n */\n SwalComponent.prototype.swalDismissOnDestroy;\n /**\n * Emits an event when the modal DOM element has been created.\n * Useful to perform DOM mutations before the modal is shown.\n * @type {?}\n */\n SwalComponent.prototype.beforeOpen;\n /**\n * Emits an event when the modal is shown.\n * @type {?}\n */\n SwalComponent.prototype.open;\n /**\n * Emits an event when the modal DOM is rendered.\n * @type {?}\n */\n SwalComponent.prototype.render;\n /**\n * Emits an event when the modal will be closed.\n * If you just want to know when the user dismissed the modal, prefer the higher-level (cancel) output.\n * @type {?}\n */\n SwalComponent.prototype.close;\n /**\n * Emits an event after the modal had been closed.\n * If you just want to know when the user dismissed the modal, prefer the higher-level (cancel) output.\n * @type {?}\n */\n SwalComponent.prototype.afterClose;\n /**\n * Emits an event after the modal had been closed.\n * The difference between {\\@link destroy} and {\\@link afterClose} is that the latter is called for user interactions\n * only (clicks), whereas {\\@link destroy} is always called, both for user interactions and popup being closed by\n * another popup.\n * @type {?}\n */\n SwalComponent.prototype.destroy;\n /**\n * Emits when the user clicks \"Confirm\".\n * Bears a value when using \"input\", resolved \"preConfirm\", etc.\n *\n * Example:\n * \n *\n * public handleConfirm(email: string): void {\n * // ... save user email\n * }\n * @type {?}\n */\n SwalComponent.prototype.confirm;\n /**\n * Emits when the user clicks \"Cancel\", or dismisses the modal by any other allowed way.\n * By default, it will emit a string representing the reason for which the SweetAlert has been closed.\n * The reason is `undefined` when {\\@link dismiss} is called.\n *\n * Example:\n * \n *\n * public handleCancel(reason: DismissReason | undefined): void {\n * // reason can be 'cancel', 'overlay', 'close', 'timer' or undefined.\n * // ... do something\n * }\n * @type {?}\n */\n SwalComponent.prototype.cancel;\n /**\n * This Set retains the properties that have been changed from \\@Inputs, so we can know precisely\n * what options we have to send to {\\@link Swal.fire}.\n * @type {?}\n * @private\n */\n SwalComponent.prototype.touchedProps;\n /**\n * A function of signature `(propName: string): void` that adds a given property name to the list of\n * touched properties, ie. {\\@link touchedProps}.\n * @type {?}\n * @private\n */\n SwalComponent.prototype.markTouched;\n /**\n * Is the SweetAlert2 modal represented by this component currently opened?\n * @type {?}\n * @private\n */\n SwalComponent.prototype.isCurrentlyShown;\n /**\n * @type {?}\n * @private\n */\n SwalComponent.prototype.sweetAlert2Loader;\n /**\n * @type {?}\n * @private\n */\n SwalComponent.prototype.moduleLevelFireOnInit;\n /**\n * @type {?}\n * @private\n */\n SwalComponent.prototype.moduleLevelDismissOnDestroy;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/swal.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * [swal] directive. It takes a value that defines the SweetAlert and can be of three types:\n *\n * 1) A simple array of two or three strings defining [title, text, icon] - the icon being optional, ex:\n *\n * \n *\n * 2) A native SweetAlert2 options object, ex:\n *\n * \n *\n * 3) A reference to an existing SwalComponent instance for more advanced uses, ex:\n *\n * \n * \n */\nclass SwalDirective {\n /**\n * @param {?} viewContainerRef\n * @param {?} resolver\n */\n constructor(viewContainerRef, resolver) {\n this.viewContainerRef = viewContainerRef;\n this.resolver = resolver;\n /**\n * Emits when the user clicks \"Confirm\".\n * Bears a value when using \"input\", resolved \"preConfirm\", etc.\n *\n * Example:\n * \n *\n * public handleConfirm(email: string): void {\n * // ... save user email\n * }\n */\n this.confirm = new EventEmitter();\n /**\n * Emits when the user clicks \"Cancel\", or dismisses the modal by any other allowed way.\n * By default, it will emit a string representing the reason for which the SweetAlert has been closed.\n * The reason is `undefined` when {\\@link dismiss} is called.\n *\n * Example:\n * \n *\n * public handleCancel(reason: DismissReason | undefined): void {\n * // reason can be 'cancel', 'overlay', 'close', 'timer' or undefined.\n * // ... do something\n * }\n */\n this.cancel = new EventEmitter();\n }\n /**\n * SweetAlert2 options or a SwalComponent instance.\n * See the class doc block for more informations.\n * @param {?} options\n * @return {?}\n */\n set swal(options) {\n if (options instanceof SwalComponent) {\n this.swalInstance = options;\n }\n else if (Array.isArray(options)) {\n this.swalOptions = {};\n [this.swalOptions.title, this.swalOptions.text, this.swalOptions.icon] = options;\n }\n else {\n this.swalOptions = options;\n }\n }\n /**\n * OnInit lifecycle handler.\n * Creates a SwalComponent instance if the user didn't provided one and binds on that component (confirm) and\n * (cancel) outputs to reemit on the directive.\n * @return {?}\n */\n ngOnInit() {\n if (!this.swalInstance) {\n /** @type {?} */\n const factory = this.resolver.resolveComponentFactory(SwalComponent);\n this.swalRef = this.viewContainerRef.createComponent(factory);\n this.swalInstance = this.swalRef.instance;\n }\n }\n /**\n * OnDestroy lifecycle handler.\n * Destroys the dynamically-created SwalComponent.\n * @return {?}\n */\n ngOnDestroy() {\n if (this.swalRef) {\n this.swalRef.destroy();\n }\n }\n /**\n * Click handler.\n * The directive listens for onclick events on its host element.\n * When this happens, it shows the attached to this directive.\n * @param {?} event\n * @return {?}\n */\n onClick(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n if (!this.swalInstance)\n return;\n if (this.swalOptions) {\n this.swalInstance.swalOptions = this.swalOptions;\n }\n /** @type {?} */\n const swalClosed = new Subject();\n this.swalInstance.confirm.asObservable().pipe(takeUntil(swalClosed)).subscribe((/**\n * @param {?} v\n * @return {?}\n */\n v => this.confirm.emit(v)));\n this.swalInstance.cancel.asObservable().pipe(takeUntil(swalClosed)).subscribe((/**\n * @param {?} v\n * @return {?}\n */\n v => this.cancel.emit(v)));\n this.swalInstance.fire().then((/**\n * @return {?}\n */\n () => swalClosed.next()));\n }\n}\nSwalDirective.ɵfac = function SwalDirective_Factory(t) { return new (t || SwalDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver)); };\nSwalDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: SwalDirective, selectors: [[\"\", \"swal\", \"\"]], hostBindings: function SwalDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function SwalDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } }, inputs: { swal: \"swal\" }, outputs: { confirm: \"confirm\", cancel: \"cancel\" } });\n/** @nocollapse */\nSwalDirective.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: ComponentFactoryResolver }\n];\nSwalDirective.propDecorators = {\n swal: [{ type: Input }],\n confirm: [{ type: Output }],\n cancel: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwalDirective, [{\n type: Directive,\n args: [{\n selector: '[swal]'\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ComponentFactoryResolver }]; }, { confirm: [{\n type: Output\n }], cancel: [{\n type: Output\n }], swal: [{\n type: Input\n }], \n /**\n * Click handler.\n * The directive listens for onclick events on its host element.\n * When this happens, it shows the attached to this directive.\n * @param {?} event\n * @return {?}\n */\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] }); })();\nif (false) {\n /**\n * Emits when the user clicks \"Confirm\".\n * Bears a value when using \"input\", resolved \"preConfirm\", etc.\n *\n * Example:\n * \n *\n * public handleConfirm(email: string): void {\n * // ... save user email\n * }\n * @type {?}\n */\n SwalDirective.prototype.confirm;\n /**\n * Emits when the user clicks \"Cancel\", or dismisses the modal by any other allowed way.\n * By default, it will emit a string representing the reason for which the SweetAlert has been closed.\n * The reason is `undefined` when {\\@link dismiss} is called.\n *\n * Example:\n * \n *\n * public handleCancel(reason: DismissReason | undefined): void {\n * // reason can be 'cancel', 'overlay', 'close', 'timer' or undefined.\n * // ... do something\n * }\n * @type {?}\n */\n SwalDirective.prototype.cancel;\n /**\n * When the user does not provides a SwalComponent instance, we create it on-the-fly and assign the plain-object\n * options to it.\n * This fields keeps a reference to the dynamically-created , to destroy it along this directive instance.\n * @type {?}\n * @private\n */\n SwalDirective.prototype.swalRef;\n /**\n * An instance of the component that this directive controls.\n * Could be an instance passed by the user, otherwise it's the instance we've dynamically created.\n * @type {?}\n * @private\n */\n SwalDirective.prototype.swalInstance;\n /**\n * Holds the native SweetAlert2 options.\n * Empty when the user passed an existing SwalComponent instance.\n * @type {?}\n * @private\n */\n SwalDirective.prototype.swalOptions;\n /**\n * @type {?}\n * @private\n */\n SwalDirective.prototype.viewContainerRef;\n /**\n * @type {?}\n * @private\n */\n SwalDirective.prototype.resolver;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/swal-events.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Emitted when a SweetAlert modal gets created in memory, just before it's displayed.\n * @record\n */\nfunction BeforeOpenEvent() { }\nif (false) {\n /** @type {?} */\n BeforeOpenEvent.prototype.modalElement;\n}\n/**\n * Emitted when a SweetAlert modal gets displayed.\n * @record\n */\nfunction OpenEvent() { }\nif (false) {\n /** @type {?} */\n OpenEvent.prototype.modalElement;\n}\n/**\n * Emitted when a SweetAlert modal gets rendered.\n * @record\n */\nfunction RenderEvent() { }\nif (false) {\n /** @type {?} */\n RenderEvent.prototype.modalElement;\n}\n/**\n * Emitted when a SweetAlert modal gets closed (because it's been confirmed, cancelled, or for no reason at all).\n * @record\n */\nfunction CloseEvent() { }\nif (false) {\n /** @type {?} */\n CloseEvent.prototype.modalElement;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/swal-portal-targets.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction SwalPortalTarget() { }\nif (false) {\n /** @type {?|undefined} */\n SwalPortalTarget.prototype.options;\n /**\n * @param {?} swal\n * @return {?}\n */\n SwalPortalTarget.prototype.element = function (swal) { };\n}\n/**\n * Represents an object of targets for portals (use with *swalPortal directive).\n * We must use thunks to access the Swal.* functions listed below, because they get created after the first modal is\n * shown, so this object lets us reference those functions safely and in a statically-typed manner.\n */\nclass SwalPortalTargets {\n constructor() {\n /**\n * Targets the modal close button block contents.\n */\n this.closeButton = {\n element: (/**\n * @param {?} swal\n * @return {?}\n */\n swal => swal.getCloseButton()),\n options: { showCloseButton: true }\n };\n /**\n * Targets the modal title block contents.\n */\n this.title = {\n element: (/**\n * @param {?} swal\n * @return {?}\n */\n swal => swal.getTitle()),\n // Empty text that will never be shown but necessary so SweetAlert2 makes the div visible.\n options: { title: ' ' }\n };\n /**\n * Targets the modal text block contents (that is another block inside the first content block, so you can still\n * use other modal features like Swal inputs, that are situated inside that parent content block).\n */\n this.content = {\n element: (/**\n * @param {?} swal\n * @return {?}\n */\n swal => swal.getHtmlContainer()),\n // Empty text that will never be shown but necessary so SweetAlert2 makes the div visible.\n options: { text: ' ' }\n };\n /**\n * Targets the actions block contents, where are the confirm and cancel buttons in a normal time.\n * /!\\ WARNING: using this target destroys some of the native SweetAlert2 modal's DOM, therefore, if you use this\n * target, do not update the modal via \\@Inputs while the modal is open, or you'll get an error.\n * We could workaround that inconvenient inside this integration, but that'd be detrimental to memory and\n * performance of everyone, for a relatively rare use case.\n */\n this.actions = {\n element: (/**\n * @param {?} swal\n * @return {?}\n */\n swal => swal.getActions()),\n // The button will never exist, but SweetAlert2 shows the actions block only if there is at least one button.\n options: { showConfirmButton: true }\n };\n /**\n * Targets the confirm button contents, replacing the text inside it (not the button itself)\n */\n this.confirmButton = {\n element: (/**\n * @param {?} swal\n * @return {?}\n */\n swal => swal.getConfirmButton()),\n options: { showConfirmButton: true }\n };\n /**\n * Targets the cancel button contents, replacing the text inside it (not the button itself)\n */\n this.cancelButton = {\n element: (/**\n * @param {?} swal\n * @return {?}\n */\n swal => swal.getCancelButton()),\n options: { showCancelButton: true }\n };\n /**\n * Targets the modal footer contents.\n */\n this.footer = {\n element: (/**\n * @param {?} swal\n * @return {?}\n */\n swal => swal.getFooter()),\n // Empty text that will never be shown but necessary so SweetAlert2 makes the div visible.\n options: { footer: ' ' }\n };\n }\n}\nSwalPortalTargets.ɵfac = function SwalPortalTargets_Factory(t) { return new (t || SwalPortalTargets)(); };\nSwalPortalTargets.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: SwalPortalTargets, factory: SwalPortalTargets.ɵfac, providedIn: 'root' });\n/** @nocollapse */ SwalPortalTargets.ngInjectableDef = ɵɵdefineInjectable({ factory: function SwalPortalTargets_Factory() { return new SwalPortalTargets(); }, token: SwalPortalTargets, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwalPortalTargets, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\nif (false) {\n /**\n * Targets the modal close button block contents.\n * @type {?}\n */\n SwalPortalTargets.prototype.closeButton;\n /**\n * Targets the modal title block contents.\n * @type {?}\n */\n SwalPortalTargets.prototype.title;\n /**\n * Targets the modal text block contents (that is another block inside the first content block, so you can still\n * use other modal features like Swal inputs, that are situated inside that parent content block).\n * @type {?}\n */\n SwalPortalTargets.prototype.content;\n /**\n * Targets the actions block contents, where are the confirm and cancel buttons in a normal time.\n * /!\\ WARNING: using this target destroys some of the native SweetAlert2 modal's DOM, therefore, if you use this\n * target, do not update the modal via \\@Inputs while the modal is open, or you'll get an error.\n * We could workaround that inconvenient inside this integration, but that'd be detrimental to memory and\n * performance of everyone, for a relatively rare use case.\n * @type {?}\n */\n SwalPortalTargets.prototype.actions;\n /**\n * Targets the confirm button contents, replacing the text inside it (not the button itself)\n * @type {?}\n */\n SwalPortalTargets.prototype.confirmButton;\n /**\n * Targets the cancel button contents, replacing the text inside it (not the button itself)\n * @type {?}\n */\n SwalPortalTargets.prototype.cancelButton;\n /**\n * Targets the modal footer contents.\n * @type {?}\n */\n SwalPortalTargets.prototype.footer;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/swal-portal.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@internal\n * Holds a consumer's Angular template and displays it on a Sweet Alert.\n * See SwalPortalDirective for info about the covered feature.\n */\nclass SwalPortalComponent {\n constructor() {\n this.template = null;\n }\n}\nSwalPortalComponent.ɵfac = function SwalPortalComponent_Factory(t) { return new (t || SwalPortalComponent)(); };\nSwalPortalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SwalPortalComponent, selectors: [[\"swal-portal\"]], inputs: { template: \"template\" }, decls: 1, vars: 1, consts: [[4, \"ngTemplateOutlet\"]], template: function SwalPortalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SwalPortalComponent_ng_container_0_Template, 1, 0, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.template);\n } }, directives: [ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\nSwalPortalComponent.propDecorators = {\n template: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwalPortalComponent, [{\n type: Component,\n args: [{\n selector: 'swal-portal',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { template: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n SwalPortalComponent.prototype.template;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/swal-portal.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A structural directive that lets you use Angular templates inside of SweetAlerts.\n * There are different targetable zones provided by {\\@link SwalPortalTargets}: title, content, confirmButton, etc, but\n * you can also make your own target by implementing {\\@link SwalPortalTarget} and giving it to this directive.\n * The default target is the alert text content zone.\n *\n * Usage in your component's TypeScript (if you use another target than {\\@link SwalPortalTargets.content}):\n *\n * \\@Component({ ... })\n * export class MyComponent {\n * public constructor(public readonly swalTargets: SwalPortalTargets) {\n * }\n * }\n *\n * Usage in the template:\n *\n * \n * \n *
\n * ...\n * \n *\n * \n * \n * Send ({{ secondsLeft }} seconds left)\n * \n * \n */\nclass SwalPortalDirective {\n /**\n * @param {?} resolver\n * @param {?} injector\n * @param {?} app\n * @param {?} templateRef\n * @param {?} sweetAlert2Loader\n * @param {?} swalTargets\n * @param {?} swalComponent\n */\n constructor(resolver, injector, app, templateRef, sweetAlert2Loader, swalTargets, swalComponent) {\n this.resolver = resolver;\n this.injector = injector;\n this.app = app;\n this.templateRef = templateRef;\n this.sweetAlert2Loader = sweetAlert2Loader;\n this.swalTargets = swalTargets;\n this.swalComponent = swalComponent;\n this.destroyed = new Subject();\n }\n /**\n * Subscribes to the the SweetAlert appearance/disappearance events to create/destroy the SwalPortalComponent\n * that will receive the consumer's template.\n * @return {?}\n */\n ngOnInit() {\n // Can't be set in a default property value, if the customer lets *swalPortal empty, the value we get is undef.\n this.target = this.target || this.swalTargets.content;\n //=> Apply the options provided by the target definition\n void this.swalComponent.update(this.target.options);\n //=> Subscribe to a few hooks frm the parent SwalComponent.\n this.swalComponent.render.pipe(takeUntil(this.destroyed)).subscribe(this.renderHook.bind(this));\n this.swalComponent.beforeOpen.pipe(takeUntil(this.destroyed)).subscribe(this.beforeOpenHook.bind(this));\n this.swalComponent.destroy.pipe(takeUntil(this.destroyed)).subscribe(this.destroyHook.bind(this));\n }\n /**\n * Signal any {\\@link destroyed} consumer that this is over, so they can unsubscribe from the\n * parent SwalComponent events.\n * @return {?}\n */\n ngOnDestroy() {\n this.destroyed.next();\n }\n /**\n * This render hook runs 1..n times (per modal instance), just before the modal is shown (and also before the\n * {\\@link beforeOpenHook}), or after Swal.update() is called.\n * This is a good place to render, or re-render, our portal contents.\n * @private\n * @return {?}\n */\n renderHook() {\n return __awaiter(this, void 0, void 0, function* () {\n //=> Ensure the portal component is created\n if (!this.portalComponentRef) {\n this.portalComponentRef = this.createPortalComponent();\n }\n //=> SweetAlert2 created the modal or just erased all of our content, so we need to install/reinstall it.\n // Swal.update() is synchronous, this observable too, and mountComponentOnTarget too (the promise inside\n // this function is already resolved at this point), so the whole process of re-rendering and re-mounting\n // the portal component is fully synchronous, causing no blinks in the modal contents.\n /** @type {?} */\n const swal = yield this.sweetAlert2Loader.swal;\n //=> Find target element\n /** @type {?} */\n const targetEl = (/** @type {?} */ (this.target)).element(swal);\n //=> Replace target's contents with our component\n // https://jsperf.com/innerhtml-vs-removechild/15\n while (targetEl.firstChild) {\n targetEl.removeChild(targetEl.firstChild);\n }\n targetEl.appendChild(this.portalComponentRef.location.nativeElement);\n });\n }\n /**\n * This beforeOpen hook runs once (per modal instance), just before the modal is shown on the screen.\n * This is a good place to declare our detached view to the Angular app.\n * @private\n * @return {?}\n */\n beforeOpenHook() {\n if (!this.portalComponentRef)\n return;\n //=> Make the Angular app aware of that detached view so rendering and change detection can happen\n this.app.attachView(this.portalComponentRef.hostView);\n }\n /**\n * This afterClose hook runs once (per modal instance), just after the modal closing animation terminated.\n * This is a good place to detach and destroy our content, that is not visible anymore.\n * @private\n * @return {?}\n */\n destroyHook() {\n if (!this.portalComponentRef)\n return;\n //=> Detach the portal component from the app and destroy it\n this.app.detachView(this.portalComponentRef.hostView);\n this.portalComponentRef.destroy();\n this.portalComponentRef = void 0;\n }\n /**\n * Creates the {\\@link SwalPortalComponent} and gives it the customer's template ref.\n * @private\n * @return {?}\n */\n createPortalComponent() {\n //=> Create the SwalPortalComponent that will hold our content\n /** @type {?} */\n const factory = this.resolver.resolveComponentFactory(SwalPortalComponent);\n // Yes, we do not use the third argument that would directly use the target as the component's view\n // (unfortunately, because that would give a cleaner DOM and would avoid dirty and direct DOM manipulations)\n // That's because we want to keep our component safe from SweetAlert2's operations on the DOM, and to be\n // able to restore it at any moment, ie. after the modal has been re-rendered.\n /** @type {?} */\n const componentRef = factory.create(this.injector, []);\n //=> Apply the consumer's template on the component\n componentRef.instance.template = this.templateRef;\n return componentRef;\n }\n}\nSwalPortalDirective.ɵfac = function SwalPortalDirective_Factory(t) { return new (t || SwalPortalDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(SweetAlert2LoaderService), ɵngcc0.ɵɵdirectiveInject(SwalPortalTargets), ɵngcc0.ɵɵdirectiveInject(SwalComponent, 1)); };\nSwalPortalDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: SwalPortalDirective, selectors: [[\"\", \"swalPortal\", \"\"]], inputs: { target: [\"swalPortal\", \"target\"] } });\n/** @nocollapse */\nSwalPortalDirective.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: Injector },\n { type: ApplicationRef },\n { type: TemplateRef },\n { type: SweetAlert2LoaderService },\n { type: SwalPortalTargets },\n { type: SwalComponent, decorators: [{ type: Host }] }\n];\nSwalPortalDirective.propDecorators = {\n target: [{ type: Input, args: ['swalPortal',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SwalPortalDirective, [{\n type: Directive,\n args: [{\n selector: '[swalPortal]'\n }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.TemplateRef }, { type: SweetAlert2LoaderService }, { type: SwalPortalTargets }, { type: SwalComponent, decorators: [{\n type: Host\n }] }]; }, { target: [{\n type: Input,\n args: ['swalPortal']\n }] }); })();\nif (false) {\n /**\n * Takes a portal target or nothing (then it will target the text content zone by default).\n *\n * See the {\\@link SwalPortalTargets} service to see the available targets.\n * See the class doc block for more informations.\n * @type {?}\n */\n SwalPortalDirective.prototype.target;\n /**\n * Holds the component reference of the controlled SwalPortalComponent to destroy it when no longer needed.\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.portalComponentRef;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.destroyed;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.resolver;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.injector;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.app;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.templateRef;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.sweetAlert2Loader;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.swalTargets;\n /**\n * @type {?}\n * @private\n */\n SwalPortalDirective.prototype.swalComponent;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/sweetalert2.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction Sweetalert2ModuleConfig() { }\nif (false) {\n /** @type {?|undefined} */\n Sweetalert2ModuleConfig.prototype.provideSwal;\n /** @type {?|undefined} */\n Sweetalert2ModuleConfig.prototype.fireOnInit;\n /** @type {?|undefined} */\n Sweetalert2ModuleConfig.prototype.dismissOnDestroy;\n}\n/**\n * @return {?}\n */\nfunction provideDefaultSwal() {\n return import('sweetalert2');\n}\nclass SweetAlert2Module {\n /**\n * @param {?=} options\n * @return {?}\n */\n static forRoot(options = {}) {\n return {\n ngModule: SweetAlert2Module,\n providers: [\n SweetAlert2LoaderService,\n { provide: swalProviderToken, useValue: options.provideSwal || provideDefaultSwal },\n { provide: fireOnInitToken, useValue: options.fireOnInit || false },\n { provide: dismissOnDestroyToken, useValue: options.dismissOnDestroy || true }\n ]\n };\n }\n /**\n * @param {?=} options\n * @return {?}\n */\n static forChild(options = {}) {\n return {\n ngModule: SweetAlert2Module,\n providers: [\n ...options.provideSwal ? [\n SweetAlert2LoaderService,\n { provide: swalProviderToken, useValue: options.provideSwal }\n ] : [],\n ...options.fireOnInit !== undefined ? [\n { provide: fireOnInitToken, useValue: options.fireOnInit }\n ] : [],\n ...options.dismissOnDestroy !== undefined ? [\n { provide: dismissOnDestroyToken, useValue: options.dismissOnDestroy }\n ] : []\n ]\n };\n }\n}\nSweetAlert2Module.ɵfac = function SweetAlert2Module_Factory(t) { return new (t || SweetAlert2Module)(); };\nSweetAlert2Module.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: SweetAlert2Module });\nSweetAlert2Module.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SweetAlert2Module, { declarations: function () { return [SwalDirective, SwalComponent, SwalPortalDirective, SwalPortalComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [SwalComponent, SwalPortalDirective, SwalDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SweetAlert2Module, [{\n type: NgModule,\n args: [{\n declarations: [\n SwalDirective, SwalComponent, SwalPortalDirective, SwalPortalComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n SwalComponent, SwalPortalDirective, SwalDirective\n ],\n entryComponents: [\n SwalComponent, SwalPortalComponent\n ]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: sweetalert2-ngx-sweetalert2.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { SwalComponent, SwalDirective, SwalPortalTargets, SweetAlert2LoaderService, SweetAlert2Module, provideDefaultSwal as ɵa, swalProviderToken as ɵb, fireOnInitToken as ɵc, dismissOnDestroyToken as ɵd, SwalPortalDirective as ɵe, SwalPortalComponent as ɵf };\n\n//# sourceMappingURL=sweetalert2-ngx-sweetalert2.js.map","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","\"use strict\";\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 });\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AnimationFrameScheduler = AnimationFrameScheduler;\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { InjectionToken, forwardRef, EventEmitter, Directive, ChangeDetectorRef, Output, Input, ContentChildren, ElementRef, ViewChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Attribute, NgModule } from '@angular/core';\nimport { mixinDisableRipple, mixinTabIndex, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/a11y';\nimport * as ɵngcc2 from '@angular/cdk/collections';\nimport * as ɵngcc3 from '@angular/material/core';\n\nconst _c0 = [\"input\"];\nconst _c1 = function () { return { enterDuration: 150 }; };\nconst _c2 = [\"*\"];\nconst MAT_RADIO_DEFAULT_OPTIONS = new InjectionToken('mat-radio-default-options', {\n providedIn: 'root',\n factory: MAT_RADIO_DEFAULT_OPTIONS_FACTORY\n});\nfunction MAT_RADIO_DEFAULT_OPTIONS_FACTORY() {\n return {\n color: 'accent'\n };\n}\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n/**\n * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * @docs-private\n */\nconst MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatRadioGroup),\n multi: true\n};\n/** Change event object emitted by MatRadio and MatRadioGroup. */\nclass MatRadioChange {\n constructor(\n /** The MatRadioButton that emits the change event. */\n source, \n /** The value of the MatRadioButton. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/**\n * Injection token that can be used to inject instances of `MatRadioGroup`. It serves as\n * alternative token to the actual `MatRadioGroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nconst MAT_RADIO_GROUP = new InjectionToken('MatRadioGroup');\n/**\n * Base class with all of the `MatRadioGroup` functionality.\n * @docs-private\n */\nclass _MatRadioGroupBase {\n constructor(_changeDetector) {\n this._changeDetector = _changeDetector;\n /** Selected value for the radio group. */\n this._value = null;\n /** The HTML name attribute applied to radio buttons in this group. */\n this._name = `mat-radio-group-${nextUniqueId++}`;\n /** The currently selected radio button. Should match value. */\n this._selected = null;\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n this._labelPosition = 'after';\n /** Whether the radio group is disabled. */\n this._disabled = false;\n /** Whether the radio group is required. */\n this._required = false;\n /** The method to be called in order to update ngModel */\n this._controlValueAccessorChangeFn = () => { };\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n this.onTouched = () => { };\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as ``).\n */\n this.change = new EventEmitter();\n }\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n get name() { return this._name; }\n set name(value) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n get labelPosition() {\n return this._labelPosition;\n }\n set labelPosition(v) {\n this._labelPosition = v === 'before' ? 'before' : 'after';\n this._markRadiosForCheck();\n }\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n get value() { return this._value; }\n set value(newValue) {\n if (this._value !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n }\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n /**\n * The currently selected radio button. If set to a new radio button, the radio group value\n * will be updated to match the new selected button.\n */\n get selected() { return this._selected; }\n set selected(selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n /** Whether the radio group is disabled */\n get disabled() { return this._disabled; }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n /** Whether the radio group is required */\n get required() { return this._required; }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on MatRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the MatRadioGroup.\n this._isInitialized = true;\n }\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n _updateRadioButtonNames() {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n radio._markForCheck();\n });\n }\n }\n /** Updates the `selected` radio button from the internal _value state. */\n _updateSelectedRadioFromValue() {\n // If the value already matches the selected radio, do nothing.\n const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n if (this._radios && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n }\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent() {\n if (this._isInitialized) {\n this.change.emit(new MatRadioChange(this._selected, this._value));\n }\n }\n _markRadiosForCheck() {\n if (this._radios) {\n this._radios.forEach(radio => radio._markForCheck());\n }\n }\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n}\n_MatRadioGroupBase.ɵfac = function _MatRadioGroupBase_Factory(t) { return new (t || _MatRadioGroupBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\n_MatRadioGroupBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatRadioGroupBase, inputs: { name: \"name\", labelPosition: \"labelPosition\", value: \"value\", selected: \"selected\", disabled: \"disabled\", required: \"required\", color: \"color\" }, outputs: { change: \"change\" } });\n_MatRadioGroupBase.ctorParameters = () => [\n { type: ChangeDetectorRef }\n];\n_MatRadioGroupBase.propDecorators = {\n change: [{ type: Output }],\n color: [{ type: Input }],\n name: [{ type: Input }],\n labelPosition: [{ type: Input }],\n value: [{ type: Input }],\n selected: [{ type: Input }],\n disabled: [{ type: Input }],\n required: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatRadioGroupBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { change: [{\n type: Output\n }], name: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], value: [{\n type: Input\n }], selected: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }], color: [{\n type: Input\n }] }); })();\n/**\n * A group of radio buttons. May contain one or more `` elements.\n */\nclass MatRadioGroup extends _MatRadioGroupBase {\n}\nMatRadioGroup.ɵfac = function MatRadioGroup_Factory(t) { return ɵMatRadioGroup_BaseFactory(t || MatRadioGroup); };\nMatRadioGroup.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatRadioGroup, selectors: [[\"mat-radio-group\"]], contentQueries: function MatRadioGroup_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatRadioButton, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._radios = _t);\n } }, hostAttrs: [\"role\", \"radiogroup\", 1, \"mat-radio-group\"], exportAs: [\"matRadioGroup\"], features: [ɵngcc0.ɵɵProvidersFeature([\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n { provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup },\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nMatRadioGroup.propDecorators = {\n _radios: [{ type: ContentChildren, args: [forwardRef(() => MatRadioButton), { descendants: true },] }]\n};\nconst ɵMatRadioGroup_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatRadioGroup);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatRadioGroup, [{\n type: Directive,\n args: [{\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n { provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup },\n ],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-radio-group'\n }\n }]\n }], null, { _radios: [{\n type: ContentChildren,\n args: [forwardRef(() => MatRadioButton), { descendants: true }]\n }] }); })();\n// Boilerplate for applying mixins to MatRadioButton.\n/** @docs-private */\nclass MatRadioButtonBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\n// As per Material design specifications the selection control radio should use the accent color\n// palette by default. https://material.io/guidelines/components/selection-controls.html\nconst _MatRadioButtonMixinBase = mixinDisableRipple(mixinTabIndex(MatRadioButtonBase));\n/**\n * Base class with all of the `MatRadioButton` functionality.\n * @docs-private\n */\nclass _MatRadioButtonBase extends _MatRadioButtonMixinBase {\n constructor(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, _animationMode, _providerOverride, tabIndex) {\n super(elementRef);\n this._changeDetector = _changeDetector;\n this._focusMonitor = _focusMonitor;\n this._radioDispatcher = _radioDispatcher;\n this._animationMode = _animationMode;\n this._providerOverride = _providerOverride;\n this._uniqueId = `mat-radio-${++nextUniqueId}`;\n /** The unique ID for the radio button. */\n this.id = this._uniqueId;\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as ``).\n */\n this.change = new EventEmitter();\n /** Whether this radio is checked. */\n this._checked = false;\n /** Value assigned to this radio. */\n this._value = null;\n /** Unregister function for _radioDispatcher */\n this._removeUniqueSelectionListener = () => { };\n // Assertions. Ideally these should be stripped out by the compiler.\n // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n this.radioGroup = radioGroup;\n if (tabIndex) {\n this.tabIndex = coerceNumberProperty(tabIndex, 0);\n }\n this._removeUniqueSelectionListener =\n _radioDispatcher.listen((id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n /** Whether this radio button is checked. */\n get checked() { return this._checked; }\n set checked(value) {\n const newCheckedState = coerceBooleanProperty(value);\n if (this._checked !== newCheckedState) {\n this._checked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n }\n else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n if (newCheckedState) {\n // Notify all radio buttons with the same name to un-check.\n this._radioDispatcher.notify(this.id, this.name);\n }\n this._changeDetector.markForCheck();\n }\n }\n /** The value of this radio button. */\n get value() { return this._value; }\n set value(value) {\n if (this._value !== value) {\n this._value = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n get labelPosition() {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n }\n set labelPosition(value) {\n this._labelPosition = value;\n }\n /** Whether the radio button is disabled. */\n get disabled() {\n return this._disabled || (this.radioGroup !== null && this.radioGroup.disabled);\n }\n set disabled(value) {\n this._setDisabled(coerceBooleanProperty(value));\n }\n /** Whether the radio button is required. */\n get required() {\n return this._required || (this.radioGroup && this.radioGroup.required);\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n /** Theme color of the radio button. */\n get color() {\n return this._color ||\n (this.radioGroup && this.radioGroup.color) ||\n this._providerOverride && this._providerOverride.color || 'accent';\n }\n set color(newValue) { this._color = newValue; }\n /** ID of the native input element inside `` */\n get inputId() { return `${this.id || this._uniqueId}-input`; }\n /** Focuses the radio button. */\n focus(options, origin) {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n }\n else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n }\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n }\n ngAfterViewInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .subscribe(focusOrigin => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup._touch();\n }\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._removeUniqueSelectionListener();\n }\n /** Dispatch change event with current value. */\n _emitChangeEvent() {\n this.change.emit(new MatRadioChange(this, this._value));\n }\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n _onInputClick(event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `radio-button` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n /**\n * Triggered when the radio button received a click or the input recognized any change.\n * Clicking on a label element, will trigger a change event on the associated input.\n */\n _onInputChange(event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n /** Sets the disabled state and marks for check if a change occurred. */\n _setDisabled(value) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._changeDetector.markForCheck();\n }\n }\n}\n_MatRadioButtonBase.ɵfac = function _MatRadioButtonBase_Factory(t) { return new (t || _MatRadioButtonBase)(ɵngcc0.ɵɵdirectiveInject(_MatRadioGroupBase), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.UniqueSelectionDispatcher), ɵngcc0.ɵɵdirectiveInject(String), ɵngcc0.ɵɵdirectiveInject(undefined), ɵngcc0.ɵɵdirectiveInject(String)); };\n_MatRadioButtonBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatRadioButtonBase, viewQuery: function _MatRadioButtonBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._inputElement = _t.first);\n } }, inputs: { id: \"id\", checked: \"checked\", value: \"value\", labelPosition: \"labelPosition\", disabled: \"disabled\", required: \"required\", color: \"color\", name: \"name\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"] }, outputs: { change: \"change\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n_MatRadioButtonBase.ctorParameters = () => [\n { type: _MatRadioGroupBase },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: FocusMonitor },\n { type: UniqueSelectionDispatcher },\n { type: String },\n { type: undefined },\n { type: String }\n];\n_MatRadioButtonBase.propDecorators = {\n id: [{ type: Input }],\n name: [{ type: Input }],\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],\n ariaDescribedby: [{ type: Input, args: ['aria-describedby',] }],\n checked: [{ type: Input }],\n value: [{ type: Input }],\n labelPosition: [{ type: Input }],\n disabled: [{ type: Input }],\n required: [{ type: Input }],\n color: [{ type: Input }],\n change: [{ type: Output }],\n _inputElement: [{ type: ViewChild, args: ['input',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatRadioButtonBase, [{\n type: Directive\n }], function () { return [{ type: _MatRadioGroupBase }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.FocusMonitor }, { type: ɵngcc2.UniqueSelectionDispatcher }, { type: String }, { type: undefined }, { type: String }]; }, { id: [{\n type: Input\n }], change: [{\n type: Output\n }], checked: [{\n type: Input\n }], value: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }], color: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], _inputElement: [{\n type: ViewChild,\n args: ['input']\n }] }); })();\n/**\n * A Material design radio-button. Typically placed inside of `` elements.\n */\nclass MatRadioButton extends _MatRadioButtonBase {\n constructor(radioGroup, elementRef, changeDetector, focusMonitor, radioDispatcher, animationMode, providerOverride, tabIndex) {\n super(radioGroup, elementRef, changeDetector, focusMonitor, radioDispatcher, animationMode, providerOverride, tabIndex);\n }\n}\nMatRadioButton.ɵfac = function MatRadioButton_Factory(t) { return new (t || MatRadioButton)(ɵngcc0.ɵɵdirectiveInject(MAT_RADIO_GROUP, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.UniqueSelectionDispatcher), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵngcc0.ɵɵdirectiveInject(MAT_RADIO_DEFAULT_OPTIONS, 8), ɵngcc0.ɵɵinjectAttribute('tabindex')); };\nMatRadioButton.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatRadioButton, selectors: [[\"mat-radio-button\"]], hostAttrs: [1, \"mat-radio-button\"], hostVars: 17, hostBindings: function MatRadioButton_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focus\", function MatRadioButton_focus_HostBindingHandler() { return ctx._inputElement.nativeElement.focus(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", null)(\"id\", ctx.id)(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n ɵngcc0.ɵɵclassProp(\"mat-radio-checked\", ctx.checked)(\"mat-radio-disabled\", ctx.disabled)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-primary\", ctx.color === \"primary\")(\"mat-accent\", ctx.color === \"accent\")(\"mat-warn\", ctx.color === \"warn\");\n } }, inputs: { disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, exportAs: [\"matRadioButton\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c2, decls: 13, vars: 19, consts: [[1, \"mat-radio-label\"], [\"label\", \"\"], [1, \"mat-radio-container\"], [1, \"mat-radio-outer-circle\"], [1, \"mat-radio-inner-circle\"], [\"type\", \"radio\", 1, \"mat-radio-input\", \"cdk-visually-hidden\", 3, \"id\", \"checked\", \"disabled\", \"tabIndex\", \"required\", \"change\", \"click\"], [\"input\", \"\"], [\"mat-ripple\", \"\", 1, \"mat-radio-ripple\", \"mat-focus-indicator\", 3, \"matRippleTrigger\", \"matRippleDisabled\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\"], [1, \"mat-ripple-element\", \"mat-radio-persistent-ripple\"], [1, \"mat-radio-label-content\"], [2, \"display\", \"none\"]], template: function MatRadioButton_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"label\", 0, 1);\n ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n ɵngcc0.ɵɵelement(3, \"span\", 3);\n ɵngcc0.ɵɵelement(4, \"span\", 4);\n ɵngcc0.ɵɵelementStart(5, \"input\", 5, 6);\n ɵngcc0.ɵɵlistener(\"change\", function MatRadioButton_Template_input_change_5_listener($event) { return ctx._onInputChange($event); })(\"click\", function MatRadioButton_Template_input_click_5_listener($event) { return ctx._onInputClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"span\", 7);\n ɵngcc0.ɵɵelement(8, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"span\", 9);\n ɵngcc0.ɵɵelementStart(10, \"span\", 10);\n ɵngcc0.ɵɵtext(11, \"\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(12);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵattribute(\"for\", ctx.inputId);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"id\", ctx.inputId)(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"tabIndex\", ctx.tabIndex)(\"required\", ctx.required);\n ɵngcc0.ɵɵattribute(\"name\", ctx.name)(\"value\", ctx.value)(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx.ariaLabelledby)(\"aria-describedby\", ctx.ariaDescribedby);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"matRippleTrigger\", _r0)(\"matRippleDisabled\", ctx._isRippleDisabled())(\"matRippleCentered\", true)(\"matRippleRadius\", 20)(\"matRippleAnimation\", ɵngcc0.ɵɵpureFunction0(18, _c1));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"mat-radio-label-before\", ctx.labelPosition == \"before\");\n } }, directives: [ɵngcc3.MatRipple], styles: [\".mat-radio-button{display:inline-block;-webkit-tap-highlight-color:transparent;outline:0}.mat-radio-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle;width:100%}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}._mat-animation-noopable .mat-radio-outer-circle{transition:none}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:transform ease 280ms,background-color ease 280ms;width:20px;transform:scale(0.001);-webkit-print-color-adjust:exact;color-adjust:exact}._mat-animation-noopable .mat-radio-inner-circle{transition:none}.mat-radio-checked .mat-radio-inner-circle{transform:scale(0.5)}.cdk-high-contrast-active .mat-radio-checked .mat-radio-inner-circle{border:solid 10px}.mat-radio-label-content{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-button .mat-radio-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-radio-button .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple){opacity:.16}.mat-radio-persistent-ripple{width:100%;height:100%;transform:none;top:0;left:0}.mat-radio-container:hover .mat-radio-persistent-ripple{opacity:.04}.mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-persistent-ripple,.mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-persistent-ripple{opacity:.12}.mat-radio-persistent-ripple,.mat-radio-disabled .mat-radio-container:hover .mat-radio-persistent-ripple{opacity:0}@media(hover: none){.mat-radio-container:hover .mat-radio-persistent-ripple{display:none}}.mat-radio-input{bottom:0;left:50%}.cdk-high-contrast-active .mat-radio-disabled{opacity:.5}\\n\"], encapsulation: 2, changeDetection: 0 });\nMatRadioButton.ctorParameters = () => [\n { type: MatRadioGroup, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RADIO_GROUP,] }] },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: FocusMonitor },\n { type: UniqueSelectionDispatcher },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RADIO_DEFAULT_OPTIONS,] }] },\n { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatRadioButton, [{\n type: Component,\n args: [{\n selector: 'mat-radio-button',\n template: \"\\n\\n\\n\",\n inputs: ['disableRipple', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRadioButton',\n host: {\n 'class': 'mat-radio-button',\n '[class.mat-radio-checked]': 'checked',\n '[class.mat-radio-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.id]': 'id',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the native element.\n '(focus)': '_inputElement.nativeElement.focus()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-radio-button{display:inline-block;-webkit-tap-highlight-color:transparent;outline:0}.mat-radio-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle;width:100%}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}._mat-animation-noopable .mat-radio-outer-circle{transition:none}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:transform ease 280ms,background-color ease 280ms;width:20px;transform:scale(0.001);-webkit-print-color-adjust:exact;color-adjust:exact}._mat-animation-noopable .mat-radio-inner-circle{transition:none}.mat-radio-checked .mat-radio-inner-circle{transform:scale(0.5)}.cdk-high-contrast-active .mat-radio-checked .mat-radio-inner-circle{border:solid 10px}.mat-radio-label-content{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-button .mat-radio-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-radio-button .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple){opacity:.16}.mat-radio-persistent-ripple{width:100%;height:100%;transform:none;top:0;left:0}.mat-radio-container:hover .mat-radio-persistent-ripple{opacity:.04}.mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-persistent-ripple,.mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-persistent-ripple{opacity:.12}.mat-radio-persistent-ripple,.mat-radio-disabled .mat-radio-container:hover .mat-radio-persistent-ripple{opacity:0}@media(hover: none){.mat-radio-container:hover .mat-radio-persistent-ripple{display:none}}.mat-radio-input{bottom:0;left:50%}.cdk-high-contrast-active .mat-radio-disabled{opacity:.5}\\n\"]\n }]\n }], function () { return [{ type: MatRadioGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_GROUP]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.FocusMonitor }, { type: ɵngcc2.UniqueSelectionDispatcher }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_DEFAULT_OPTIONS]\n }] }, { type: String, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatRadioModule {\n}\nMatRadioModule.ɵfac = function MatRadioModule_Factory(t) { return new (t || MatRadioModule)(); };\nMatRadioModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatRadioModule });\nMatRadioModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[MatRippleModule, MatCommonModule], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatRadioModule, { declarations: function () { return [MatRadioGroup, MatRadioButton]; }, imports: function () { return [MatRippleModule, MatCommonModule]; }, exports: function () { return [MatRadioGroup, MatRadioButton, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatRadioModule, [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, MatCommonModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n declarations: [MatRadioGroup, MatRadioButton]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_RADIO_DEFAULT_OPTIONS, MAT_RADIO_DEFAULT_OPTIONS_FACTORY, MAT_RADIO_GROUP, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioButton, MatRadioChange, MatRadioGroup, MatRadioModule, _MatRadioButtonBase, _MatRadioGroupBase };\n\n//# sourceMappingURL=radio.js.map","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","import { Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport { AriaDescriber, FocusMonitor, A11yModule } from '@angular/cdk/a11y';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { InjectionToken, Directive, ElementRef, ViewContainerRef, NgZone, Inject, Optional, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { ScrollDispatcher, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';\nimport { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Subject } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate, keyframes } from '@angular/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by MatTooltip.\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/overlay';\nimport * as ɵngcc2 from '@angular/cdk/scrolling';\nimport * as ɵngcc3 from '@angular/cdk/platform';\nimport * as ɵngcc4 from '@angular/cdk/a11y';\nimport * as ɵngcc5 from '@angular/cdk/bidi';\nimport * as ɵngcc6 from '@angular/cdk/layout';\nimport * as ɵngcc7 from '@angular/common';\nconst matTooltipAnimations = {\n /** Animation that transitions a tooltip in and out. */\n tooltipState: trigger('state', [\n state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0)' })),\n state('visible', style({ transform: 'scale(1)' })),\n transition('* => visible', animate('200ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n style({ opacity: 0.5, transform: 'scale(0.99)', offset: 0.5 }),\n style({ opacity: 1, transform: 'scale(1)', offset: 1 })\n ]))),\n transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 }))),\n ])\n};\n\n/** Time in ms to throttle repositioning after scroll events. */\nconst SCROLL_THROTTLE_MS = 20;\n/** CSS class that will be attached to the overlay panel. */\nconst TOOLTIP_PANEL_CLASS = 'mat-tooltip-panel';\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * Time between the user putting the pointer on a tooltip\n * trigger and the long press event being fired.\n */\nconst LONGPRESS_DELAY = 500;\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nfunction getMatTooltipInvalidPositionError(position) {\n return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nconst MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('mat-tooltip-scroll-strategy');\n/** @docs-private */\nfunction MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n}\n/** @docs-private */\nconst MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n/** Injection token to be used to override the default options for `matTooltip`. */\nconst MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken('mat-tooltip-default-options', {\n providedIn: 'root',\n factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY() {\n return {\n showDelay: 0,\n hideDelay: 0,\n touchendHideDelay: 1500,\n };\n}\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\nclass MatTooltip {\n constructor(_overlay, _elementRef, _scrollDispatcher, _viewContainerRef, _ngZone, _platform, _ariaDescriber, _focusMonitor, scrollStrategy, _dir, _defaultOptions, \n /** @breaking-change 11.0.0 _document argument to become required. */\n _document) {\n this._overlay = _overlay;\n this._elementRef = _elementRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._viewContainerRef = _viewContainerRef;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._ariaDescriber = _ariaDescriber;\n this._focusMonitor = _focusMonitor;\n this._dir = _dir;\n this._defaultOptions = _defaultOptions;\n this._position = 'below';\n this._disabled = false;\n this._viewInitialized = false;\n this._pointerExitEventsInitialized = false;\n /** The default delay in ms before showing the tooltip after show is called */\n this.showDelay = this._defaultOptions.showDelay;\n /** The default delay in ms before hiding the tooltip after hide is called */\n this.hideDelay = this._defaultOptions.hideDelay;\n /**\n * How touch gestures should be handled by the tooltip. On touch devices the tooltip directive\n * uses a long press gesture to show and hide, however it can conflict with the native browser\n * gestures. To work around the conflict, Angular Material disables native gestures on the\n * trigger, but that might not be desirable on particular elements (e.g. inputs and draggable\n * elements). The different values for this option configure the touch event handling as follows:\n * - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native\n * browser gestures on particular elements. In particular, it allows text selection on inputs\n * and textareas, and preserves the native browser dragging on elements marked as `draggable`.\n * - `on` - Enables touch gestures for all elements and disables native\n * browser gestures with no exceptions.\n * - `off` - Disables touch gestures. Note that this will prevent the tooltip from\n * showing on touch devices.\n */\n this.touchGestures = 'auto';\n this._message = '';\n /** Manually-bound passive event listeners. */\n this._passiveListeners = [];\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /**\n * Handles the keydown events on the host element.\n * Needs to be an arrow function so that we can use it in addEventListener.\n */\n this._handleKeydown = (event) => {\n if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._ngZone.run(() => this.hide(0));\n }\n };\n this._scrollStrategy = scrollStrategy;\n if (_defaultOptions) {\n if (_defaultOptions.position) {\n this.position = _defaultOptions.position;\n }\n if (_defaultOptions.touchGestures) {\n this.touchGestures = _defaultOptions.touchGestures;\n }\n }\n _ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keydown', this._handleKeydown);\n });\n }\n /** Allows the user to define the position of the tooltip relative to the parent element */\n get position() { return this._position; }\n set position(value) {\n if (value !== this._position) {\n this._position = value;\n if (this._overlayRef) {\n this._updatePosition();\n if (this._tooltipInstance) {\n this._tooltipInstance.show(0);\n }\n this._overlayRef.updatePosition();\n }\n }\n }\n /** Disables the display of the tooltip. */\n get disabled() { return this._disabled; }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n // If tooltip is disabled, hide immediately.\n if (this._disabled) {\n this.hide(0);\n }\n else {\n this._setupPointerEnterEventsIfNeeded();\n }\n }\n /** The message to be displayed in the tooltip */\n get message() { return this._message; }\n set message(value) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message, 'tooltip');\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n // Must convert with `String(value)`, not `${value}`, otherwise Closure Compiler optimises\n // away the string-conversion: https://github.com/angular/components/issues/20684\n this._message = value != null ? String(value).trim() : '';\n if (!this._message && this._isTooltipVisible()) {\n this.hide(0);\n }\n else {\n this._setupPointerEnterEventsIfNeeded();\n this._updateTooltipMessage();\n this._ngZone.runOutsideAngular(() => {\n // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n Promise.resolve().then(() => {\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, 'tooltip');\n });\n });\n }\n }\n /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n get tooltipClass() { return this._tooltipClass; }\n set tooltipClass(value) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n }\n ngAfterViewInit() {\n // This needs to happen after view init so the initial values for all inputs have been set.\n this._viewInitialized = true;\n this._setupPointerEnterEventsIfNeeded();\n this._focusMonitor.monitor(this._elementRef)\n .pipe(takeUntil(this._destroyed))\n .subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n this._ngZone.run(() => this.hide(0));\n }\n else if (origin === 'keyboard') {\n this._ngZone.run(() => this.show());\n }\n });\n }\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\n const nativeElement = this._elementRef.nativeElement;\n clearTimeout(this._touchstartTimeout);\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._tooltipInstance = null;\n }\n // Clean up the event listeners set in the constructor\n nativeElement.removeEventListener('keydown', this._handleKeydown);\n this._passiveListeners.forEach(([event, listener]) => {\n nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n });\n this._passiveListeners.length = 0;\n this._destroyed.next();\n this._destroyed.complete();\n this._ariaDescriber.removeDescription(nativeElement, this.message, 'tooltip');\n this._focusMonitor.stopMonitoring(nativeElement);\n }\n /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n show(delay = this.showDelay) {\n if (this.disabled || !this.message || (this._isTooltipVisible() &&\n !this._tooltipInstance._showTimeoutId && !this._tooltipInstance._hideTimeoutId)) {\n return;\n }\n const overlayRef = this._createOverlay();\n this._detach();\n this._portal = this._portal || new ComponentPortal(TooltipComponent, this._viewContainerRef);\n this._tooltipInstance = overlayRef.attach(this._portal).instance;\n this._tooltipInstance.afterHidden()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage();\n this._tooltipInstance.show(delay);\n }\n /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n hide(delay = this.hideDelay) {\n if (this._tooltipInstance) {\n this._tooltipInstance.hide(delay);\n }\n }\n /** Shows/hides the tooltip */\n toggle() {\n this._isTooltipVisible() ? this.hide() : this.show();\n }\n /** Returns true if the tooltip is currently visible to the user */\n _isTooltipVisible() {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n }\n /** Create the overlay config and position strategy */\n _createOverlay() {\n if (this._overlayRef) {\n return this._overlayRef;\n }\n const scrollableAncestors = this._scrollDispatcher.getAncestorScrollContainers(this._elementRef);\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = this._overlay.position()\n .flexibleConnectedTo(this._elementRef)\n .withTransformOriginOn('.mat-tooltip')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withScrollableContainers(scrollableAncestors);\n strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n if (this._tooltipInstance) {\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide(0));\n }\n }\n });\n this._overlayRef = this._overlay.create({\n direction: this._dir,\n positionStrategy: strategy,\n panelClass: TOOLTIP_PANEL_CLASS,\n scrollStrategy: this._scrollStrategy()\n });\n this._updatePosition();\n this._overlayRef.detachments()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n return this._overlayRef;\n }\n /** Detaches the currently-attached tooltip. */\n _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n this._tooltipInstance = null;\n }\n /** Updates the position of the current tooltip. */\n _updatePosition() {\n const position = this._overlayRef.getConfig().positionStrategy;\n const origin = this._getOrigin();\n const overlay = this._getOverlayPosition();\n position.withPositions([\n Object.assign(Object.assign({}, origin.main), overlay.main),\n Object.assign(Object.assign({}, origin.fallback), overlay.fallback)\n ]);\n }\n /**\n * Returns the origin position and a fallback position based on the user's position preference.\n * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n */\n _getOrigin() {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let originPosition;\n if (position == 'above' || position == 'below') {\n originPosition = { originX: 'center', originY: position == 'above' ? 'top' : 'bottom' };\n }\n else if (position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n originPosition = { originX: 'start', originY: 'center' };\n }\n else if (position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n originPosition = { originX: 'end', originY: 'center' };\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n const { x, y } = this._invertPosition(originPosition.originX, originPosition.originY);\n return {\n main: originPosition,\n fallback: { originX: x, originY: y }\n };\n }\n /** Returns the overlay position and a fallback position based on the user's preference */\n _getOverlayPosition() {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let overlayPosition;\n if (position == 'above') {\n overlayPosition = { overlayX: 'center', overlayY: 'bottom' };\n }\n else if (position == 'below') {\n overlayPosition = { overlayX: 'center', overlayY: 'top' };\n }\n else if (position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n overlayPosition = { overlayX: 'end', overlayY: 'center' };\n }\n else if (position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n overlayPosition = { overlayX: 'start', overlayY: 'center' };\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n const { x, y } = this._invertPosition(overlayPosition.overlayX, overlayPosition.overlayY);\n return {\n main: overlayPosition,\n fallback: { overlayX: x, overlayY: y }\n };\n }\n /** Updates the tooltip message and repositions the overlay according to the new message length */\n _updateTooltipMessage() {\n // Must wait for the message to be painted to the tooltip so that the overlay can properly\n // calculate the correct positioning based on the size of the text.\n if (this._tooltipInstance) {\n this._tooltipInstance.message = this.message;\n this._tooltipInstance._markForCheck();\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntil(this._destroyed)).subscribe(() => {\n if (this._tooltipInstance) {\n this._overlayRef.updatePosition();\n }\n });\n }\n }\n /** Updates the tooltip class */\n _setTooltipClass(tooltipClass) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass = tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n }\n /** Inverts an overlay position. */\n _invertPosition(x, y) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n }\n else if (y === 'bottom') {\n y = 'top';\n }\n }\n else {\n if (x === 'end') {\n x = 'start';\n }\n else if (x === 'start') {\n x = 'end';\n }\n }\n return { x, y };\n }\n /** Binds the pointer events to the tooltip trigger. */\n _setupPointerEnterEventsIfNeeded() {\n // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n if (this._disabled || !this.message || !this._viewInitialized ||\n this._passiveListeners.length) {\n return;\n }\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (this._platformSupportsMouseEvents()) {\n this._passiveListeners\n .push(['mouseenter', () => {\n this._setupPointerExitEventsIfNeeded();\n this.show();\n }]);\n }\n else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n this._passiveListeners\n .push(['touchstart', () => {\n // Note that it's important that we don't `preventDefault` here,\n // because it can prevent click events from firing on the element.\n this._setupPointerExitEventsIfNeeded();\n clearTimeout(this._touchstartTimeout);\n this._touchstartTimeout = setTimeout(() => this.show(), LONGPRESS_DELAY);\n }]);\n }\n this._addListeners(this._passiveListeners);\n }\n _setupPointerExitEventsIfNeeded() {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n const exitListeners = [];\n if (this._platformSupportsMouseEvents()) {\n exitListeners.push(['mouseleave', () => this.hide()], ['wheel', event => this._wheelListener(event)]);\n }\n else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n const touchendListener = () => {\n clearTimeout(this._touchstartTimeout);\n this.hide(this._defaultOptions.touchendHideDelay);\n };\n exitListeners.push(['touchend', touchendListener], ['touchcancel', touchendListener]);\n }\n this._addListeners(exitListeners);\n this._passiveListeners.push(...exitListeners);\n }\n _addListeners(listeners) {\n listeners.forEach(([event, listener]) => {\n this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n });\n }\n _platformSupportsMouseEvents() {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n /** Listener for the `wheel` event on the element. */\n _wheelListener(event) {\n if (this._isTooltipVisible()) {\n // @breaking-change 11.0.0 Remove `|| document` once the document is a required param.\n const doc = this._document || document;\n const elementUnderPointer = doc.elementFromPoint(event.clientX, event.clientY);\n const element = this._elementRef.nativeElement;\n // On non-touch devices we depend on the `mouseleave` event to close the tooltip, but it\n // won't fire if the user scrolls away using the wheel without moving their cursor. We\n // work around it by finding the element under the user's cursor and closing the tooltip\n // if it's not the trigger.\n if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n this.hide();\n }\n }\n }\n /** Disables the native browser gestures, based on how the tooltip has been configured. */\n _disableNativeGesturesIfNecessary() {\n const gestures = this.touchGestures;\n if (gestures !== 'off') {\n const element = this._elementRef.nativeElement;\n const style = element.style;\n // If gestures are set to `auto`, we don't disable text selection on inputs and\n // textareas, because it prevents the user from typing into them on iOS Safari.\n if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n style.userSelect = style.msUserSelect = style.webkitUserSelect =\n style.MozUserSelect = 'none';\n }\n // If we have `auto` gestures and the element uses native HTML dragging,\n // we don't set `-webkit-user-drag` because it prevents the native behavior.\n if (gestures === 'on' || !element.draggable) {\n style.webkitUserDrag = 'none';\n }\n style.touchAction = 'none';\n style.webkitTapHighlightColor = 'transparent';\n }\n }\n}\nMatTooltip.ɵfac = function MatTooltip_Factory(t) { return new (t || MatTooltip)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.ScrollDispatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Platform), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.AriaDescriber), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(MAT_TOOLTIP_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(MAT_TOOLTIP_DEFAULT_OPTIONS, 8), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nMatTooltip.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatTooltip, selectors: [[\"\", \"matTooltip\", \"\"]], hostAttrs: [1, \"mat-tooltip-trigger\"], inputs: { showDelay: [\"matTooltipShowDelay\", \"showDelay\"], hideDelay: [\"matTooltipHideDelay\", \"hideDelay\"], touchGestures: [\"matTooltipTouchGestures\", \"touchGestures\"], position: [\"matTooltipPosition\", \"position\"], disabled: [\"matTooltipDisabled\", \"disabled\"], message: [\"matTooltip\", \"message\"], tooltipClass: [\"matTooltipClass\", \"tooltipClass\"] }, exportAs: [\"matTooltip\"] });\nMatTooltip.ctorParameters = () => [\n { type: Overlay },\n { type: ElementRef },\n { type: ScrollDispatcher },\n { type: ViewContainerRef },\n { type: NgZone },\n { type: Platform },\n { type: AriaDescriber },\n { type: FocusMonitor },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_TOOLTIP_SCROLL_STRATEGY,] }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_TOOLTIP_DEFAULT_OPTIONS,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nMatTooltip.propDecorators = {\n position: [{ type: Input, args: ['matTooltipPosition',] }],\n disabled: [{ type: Input, args: ['matTooltipDisabled',] }],\n showDelay: [{ type: Input, args: ['matTooltipShowDelay',] }],\n hideDelay: [{ type: Input, args: ['matTooltipHideDelay',] }],\n touchGestures: [{ type: Input, args: ['matTooltipTouchGestures',] }],\n message: [{ type: Input, args: ['matTooltip',] }],\n tooltipClass: [{ type: Input, args: ['matTooltipClass',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatTooltip, [{\n type: Directive,\n args: [{\n selector: '[matTooltip]',\n exportAs: 'matTooltip',\n host: {\n 'class': 'mat-tooltip-trigger'\n }\n }]\n }], function () { return [{ type: ɵngcc1.Overlay }, { type: ɵngcc0.ElementRef }, { type: ɵngcc2.ScrollDispatcher }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc3.Platform }, { type: ɵngcc4.AriaDescriber }, { type: ɵngcc4.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TOOLTIP_SCROLL_STRATEGY]\n }] }, { type: ɵngcc5.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_TOOLTIP_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { showDelay: [{\n type: Input,\n args: ['matTooltipShowDelay']\n }], hideDelay: [{\n type: Input,\n args: ['matTooltipHideDelay']\n }], touchGestures: [{\n type: Input,\n args: ['matTooltipTouchGestures']\n }], position: [{\n type: Input,\n args: ['matTooltipPosition']\n }], disabled: [{\n type: Input,\n args: ['matTooltipDisabled']\n }], message: [{\n type: Input,\n args: ['matTooltip']\n }], tooltipClass: [{\n type: Input,\n args: ['matTooltipClass']\n }] }); })();\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\nclass TooltipComponent {\n constructor(_changeDetectorRef, _breakpointObserver) {\n this._changeDetectorRef = _changeDetectorRef;\n this._breakpointObserver = _breakpointObserver;\n /** Property watched by the animation framework to show or hide the tooltip */\n this._visibility = 'initial';\n /** Whether interactions on the page should close the tooltip */\n this._closeOnInteraction = false;\n /** Subject for notifying that the tooltip has been hidden from the view */\n this._onHide = new Subject();\n /** Stream that emits whether the user has a handset-sized display. */\n this._isHandset = this._breakpointObserver.observe(Breakpoints.Handset);\n }\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay) {\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId);\n this._hideTimeoutId = null;\n }\n // Body interactions should cancel the tooltip if there is a delay in showing.\n this._closeOnInteraction = true;\n this._showTimeoutId = setTimeout(() => {\n this._visibility = 'visible';\n this._showTimeoutId = null;\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this._markForCheck();\n }, delay);\n }\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay) {\n // Cancel the delayed show if it is scheduled\n if (this._showTimeoutId) {\n clearTimeout(this._showTimeoutId);\n this._showTimeoutId = null;\n }\n this._hideTimeoutId = setTimeout(() => {\n this._visibility = 'hidden';\n this._hideTimeoutId = null;\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n this._markForCheck();\n }, delay);\n }\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden() {\n return this._onHide;\n }\n /** Whether the tooltip is being displayed. */\n isVisible() {\n return this._visibility === 'visible';\n }\n ngOnDestroy() {\n this._onHide.complete();\n }\n _animationStart() {\n this._closeOnInteraction = false;\n }\n _animationDone(event) {\n const toState = event.toState;\n if (toState === 'hidden' && !this.isVisible()) {\n this._onHide.next();\n }\n if (toState === 'visible' || toState === 'hidden') {\n this._closeOnInteraction = true;\n }\n }\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction() {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck() {\n this._changeDetectorRef.markForCheck();\n }\n}\nTooltipComponent.ɵfac = function TooltipComponent_Factory(t) { return new (t || TooltipComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc6.BreakpointObserver)); };\nTooltipComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TooltipComponent, selectors: [[\"mat-tooltip-component\"]], hostAttrs: [\"aria-hidden\", \"true\"], hostVars: 2, hostBindings: function TooltipComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function TooltipComponent_click_HostBindingHandler() { return ctx._handleBodyInteraction(); }, false, ɵngcc0.ɵɵresolveBody)(\"auxclick\", function TooltipComponent_auxclick_HostBindingHandler() { return ctx._handleBodyInteraction(); }, false, ɵngcc0.ɵɵresolveBody);\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"zoom\", ctx._visibility === \"visible\" ? 1 : null);\n } }, decls: 3, vars: 7, consts: [[1, \"mat-tooltip\", 3, \"ngClass\"]], template: function TooltipComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"@state.start\", function TooltipComponent_Template_div_animation_state_start_0_listener() { return ctx._animationStart(); })(\"@state.done\", function TooltipComponent_Template_div_animation_state_done_0_listener($event) { return ctx._animationDone($event); });\n ɵngcc0.ɵɵpipe(1, \"async\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n let tmp_0_0 = null;\n ɵngcc0.ɵɵclassProp(\"mat-tooltip-handset\", (tmp_0_0 = ɵngcc0.ɵɵpipeBind1(1, 5, ctx._isHandset)) == null ? null : tmp_0_0.matches);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.tooltipClass)(\"@state\", ctx._visibility);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.message);\n } }, directives: [ɵngcc7.NgClass], pipes: [ɵngcc7.AsyncPipe], styles: [\".mat-tooltip-panel{pointer-events:none !important}.mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}\\n\"], encapsulation: 2, data: { animation: [matTooltipAnimations.tooltipState] }, changeDetection: 0 });\nTooltipComponent.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: BreakpointObserver }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipComponent, [{\n type: Component,\n args: [{\n selector: 'mat-tooltip-component',\n template: \"
{{message}}
\\n\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [matTooltipAnimations.tooltipState],\n host: {\n // Forces the element to have a layout in IE and Edge. This fixes issues where the element\n // won't be rendered if the animations are disabled or there is no web animations polyfill.\n '[style.zoom]': '_visibility === \"visible\" ? 1 : null',\n '(body:click)': 'this._handleBodyInteraction()',\n '(body:auxclick)': 'this._handleBodyInteraction()',\n 'aria-hidden': 'true'\n },\n styles: [\".mat-tooltip-panel{pointer-events:none !important}.mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc6.BreakpointObserver }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatTooltipModule {\n}\nMatTooltipModule.ɵfac = function MatTooltipModule_Factory(t) { return new (t || MatTooltipModule)(); };\nMatTooltipModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatTooltipModule });\nMatTooltipModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[\n A11yModule,\n CommonModule,\n OverlayModule,\n MatCommonModule,\n ], MatCommonModule, CdkScrollableModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatTooltipModule, { declarations: function () { return [MatTooltip, TooltipComponent]; }, imports: function () { return [A11yModule,\n CommonModule,\n OverlayModule,\n MatCommonModule]; }, exports: function () { return [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatTooltipModule, [{\n type: NgModule,\n args: [{\n imports: [\n A11yModule,\n CommonModule,\n OverlayModule,\n MatCommonModule,\n ],\n exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],\n declarations: [MatTooltip, TooltipComponent],\n entryComponents: [TooltipComponent],\n providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_TOOLTIP_DEFAULT_OPTIONS, MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, MatTooltip, MatTooltipModule, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, TooltipComponent, getMatTooltipInvalidPositionError, matTooltipAnimations };\n\n//# sourceMappingURL=tooltip.js.map","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","/**\n * @license Angular v11.2.14\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the `build()` method to create a programmatic animation using the\n * `animate()` function. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the `AnimationBuilder`.`build()` method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of `state()`\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of `state()`\n * and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
...
\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
\n *
\n *
\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation `state`, within an animation `sequence`,\n * or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow a component to animate from\n * a height of 0 up to the height of the parent element:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* Keyframes */, steps };\n}\n/**\n * Declares an animation transition as a sequence of animation steps to run when a given\n * condition is satisfied. The condition is a Boolean expression or function that compares\n * the previous and current animation states, and returns true if this transition should occur.\n * When the state criteria of a defined transition are met, the associated animation is\n * triggered.\n *\n * @param stateChangeExpr A Boolean expression or function that compares the previous and current\n * animation states, and returns true if this transition should occur. Note that \"true\" and \"false\"\n * match 1 and 0, respectively. An expression is evaluated each time a state change occurs in the\n * animation trigger element.\n * The animation steps run when the expression evaluates to true.\n *\n * - A state-change string takes the form \"state1 => state2\", where each side is a defined animation\n * state, or an asterix (*) to refer to a dynamic start or end state.\n * - The expression string can contain multiple comma-separated statements;\n * for example \"state1 => state2, state3 => state4\".\n * - Special values `:enter` and `:leave` initiate a transition on the entry and exit states,\n * equivalent to \"void => *\" and \"* => void\".\n * - Special values `:increment` and `:decrement` initiate a transition when a numeric value has\n * increased or decreased in value.\n * - A function is executed each time a state change occurs in the animation trigger element.\n * The animation steps run when the function returns true.\n *\n * @param steps One or more animation objects, as returned by the `animate()` or\n * `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the animation,\n * and additional developer-defined parameters. Provided values for additional parameters are used\n * as defaults, and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n * The template associated with a component binds an animation trigger to an element.\n *\n * ```HTML\n * \n *
...
\n * ```\n *\n * All transitions are defined within an animation trigger,\n * along with named states that the transitions change to and from.\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * // define states\n * state(\"on\", style({ background: \"green\" })),\n * state(\"off\", style({ background: \"grey\" })),\n * ...]\n * ```\n *\n * Note that when you call the `sequence()` function within a `{@link animations/group group()}`\n * or a `transition()` call, execution does not continue to the next instruction\n * until each of the inner animation steps have completed.\n *\n * ### Syntax examples\n *\n * The following examples define transitions between the two defined states (and default states),\n * using various options:\n *\n * ```typescript\n * // Transition occurs when the state value\n * // bound to \"myAnimationTrigger\" changes from \"on\" to \"off\"\n * transition(\"on => off\", animate(500))\n * // Run the same animation for both directions\n * transition(\"on <=> off\", animate(500))\n * // Define multiple state-change pairs separated by commas\n * transition(\"on => off, off => void\", animate(500))\n * ```\n *\n * ### Special values for state-change expressions\n *\n * - Catch-all state change for when an element is inserted into the page and the\n * destination state is unknown:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n *\n * - Capture a state change between any states:\n *\n * `transition(\"* => *\", animate(\"1s 0s\"))`\n *\n * - Entry and exit transitions:\n *\n * ```typescript\n * transition(\":enter\", [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * transition(\":leave\", [\n * animate(500, style({ opacity: 0 }))\n * ])\n * ```\n *\n * - Use `:increment` and `:decrement` to initiate transitions:\n *\n * ```typescript\n * transition(\":increment\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n *\n * transition(\":decrement\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n * ```\n *\n * ### State-change functions\n *\n * Here is an example of a `fromState` specified as a state-change function that invokes an\n * animation when true:\n *\n * ```typescript\n * transition((fromState, toState) =>\n * {\n * return fromState == \"off\" && toState == \"on\";\n * },\n * animate(\"1s 0s\"))\n * ```\n *\n * ### Animating to the final state\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no style data, that step is automatically considered the final animation arc,\n * for the element to reach the final state. Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n * The following example defines a transition that starts by hiding the element,\n * then makes sure that it animates properly to whatever state is currently active for trigger:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n * ### Boolean value matching\n * If a trigger binding value is a Boolean, it can be matched using a transition expression\n * that compares true and false or 1 and 0. For example:\n *\n * ```\n * // in the template\n *
...
\n * // in the component metadata\n * trigger('openClose', [\n * state('true', style({ height: '*' })),\n * state('false', style({ height: '0px' })),\n * transition('false <=> true', animate(500))\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements.\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
\n *

Title

\n *
\n * Blah blah blah\n *
\n *
\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
\n *
\n *
\n * {{ item }}\n *
\n *
\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* Stagger */, timings, animation };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() { }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n\n//# sourceMappingURL=animations.js.map","/**\n * @license Angular v11.2.14\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport { Injectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes(driver, normalizer, element, keyframes, preStyles = {}, postStyles = {}) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf['offset'];\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || {};\n Object.keys(kf).forEach(prop => {\n let normalizedProp = prop;\n let normalizedValue = kf[prop];\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles[prop];\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles[prop];\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe[normalizedProp] = normalizedValue;\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n const LINE_START = '\\n - ';\n throw new Error(`Unable to animate due to the following errors:${LINE_START}${errors.join(LINE_START)}`);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetAsInMap(map, key, defaultValue) {\n let value;\n if (map instanceof Map) {\n value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n }\n else {\n value = map[key];\n if (!value) {\n value = map[key] = defaultValue;\n }\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.substr(separatorPos + 1);\n return [id, action];\n}\nlet _contains = (elm1, elm2) => false;\nconst ɵ0 = _contains;\nlet _matches = (element, selector) => false;\nconst ɵ1 = _matches;\nlet _query = (element, selector, multi) => {\n return [];\n};\nconst ɵ2 = _query;\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n // this is well supported in all browsers\n _contains = (elm1, elm2) => {\n return elm1.contains(elm2);\n };\n _matches = (() => {\n if (_isNode || Element.prototype.matches) {\n return (element, selector) => element.matches(selector);\n }\n else {\n const proto = Element.prototype;\n const fn = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector ||\n proto.oMatchesSelector || proto.webkitMatchesSelector;\n if (fn) {\n return (element, selector) => fn.apply(element, [selector]);\n }\n else {\n return _matches;\n }\n }\n })();\n _query = (element, selector, multi) => {\n let results = [];\n if (multi) {\n // DO NOT REFACTOR TO USE SPREAD SYNTAX.\n // For element queries that return sufficiently large NodeList objects,\n // using spread syntax to populate the results array causes a RangeError\n // due to the call stack limit being reached. `Array.from` can not be used\n // as well, since NodeList is not iterable in IE 11, see\n // https://developer.mozilla.org/en-US/docs/Web/API/NodeList\n // More info is available in #38551.\n const elems = element.querySelectorAll(selector);\n for (let i = 0; i < elems.length; i++) {\n results.push(elems[i]);\n }\n }\n else {\n const elm = element.querySelector(selector);\n if (elm) {\n results.push(elm);\n }\n }\n return results;\n };\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.substr(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nconst matchesElement = _matches;\nconst containsElement = _contains;\nconst invokeQuery = _query;\nfunction hypenatePropsObject(object) {\n const newObj = {};\n Object.keys(object).forEach(prop => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newObj[newProp] = object[prop];\n });\n return newObj;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(element, selector) {\n return matchesElement(element, selector);\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.ɵfac = function NoopAnimationDriver_Factory(t) { return new (t || NoopAnimationDriver)(); };\nNoopAnimationDriver.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: NoopAnimationDriver, factory: NoopAnimationDriver.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoopAnimationDriver, [{\n type: Injectable\n }], null, null); })();\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = new NoopAnimationDriver();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst ENTER_SELECTOR = '.ng-enter';\nconst LEAVE_SELECTOR = '.ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(`The provided timing value \"${exp}\" is invalid.`);\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(`Duration values below 0 are not allowed for this animation step.`);\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(`Delay values below 0 are not allowed for this animation step.`);\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, `The provided timing value \"${exp}\" is invalid.`);\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = {};\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, false, normalizedStyles));\n }\n else {\n copyStyles(styles, false, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, readPrototype, destination = {}) {\n if (readPrototype) {\n // we make use of a for-in loop so that the\n // prototypically inherited properties are\n // revealed from the backFill map\n for (let prop in styles) {\n destination[prop] = styles[prop];\n }\n }\n else {\n copyObj(styles, destination);\n }\n return destination;\n}\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.hasOwnProperty(prop)) {\n formerStyles[prop] = element.style[camelProp];\n }\n element.style[camelProp] = styles[prop];\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(`Unable to resolve the local animation param ${varName} in the given list of values`);\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (!params.hasOwnProperty(varName)) {\n errors.push(`Please provide a value for the animation param ${varName}`);\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n const previousStyleProps = Object.keys(previousStyles);\n if (previousStyleProps.length && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyleProps.forEach(prop => {\n if (!startingKeyframe.hasOwnProperty(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe[prop] = previousStyles[prop];\n });\n if (missingStyleProps.length) {\n // tslint:disable-next-line\n for (var i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(function (prop) {\n kf[prop] = computeStyle(element, prop);\n });\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* State */:\n return visitor.visitState(node, context);\n case 1 /* Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* Group */:\n return visitor.visitGroup(node, context);\n case 4 /* Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* Style */:\n return visitor.visitStyle(node, context);\n case 8 /* Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* Query */:\n return visitor.visitQuery(node, context);\n case 12 /* Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw new Error(`Unable to resolve animation metadata node #${node.type}`);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(`The provided transition expression \"${eventStr}\" is not supported`);\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(`The transition alias value \"${alias}\" is not supported`);\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n return visitDslNode(this, normalizeAnimationEntry(metadata), context);\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = {};\n context.collectedStyles[ROOT_SELECTOR] = {};\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push('animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push('only state() and transition() definitions can sit inside of a trigger()');\n }\n });\n return {\n type: 7 /* Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(value => {\n if (isObject(value)) {\n const stylesObj = value;\n Object.keys(stylesObj).forEach(prop => {\n extractStyleParams(stylesObj[prop]).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(`state(\"${metadata\n .name}\", ...) must define default values for all the following style substitutions: ${missingSubsArr.join(', ')}`);\n }\n }\n return {\n type: 0 /* State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n if (Array.isArray(metadata.styles)) {\n metadata.styles.forEach(styleTuple => {\n if (typeof styleTuple == 'string') {\n if (styleTuple == AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(`The provided style string value ${styleTuple} is not allowed.`);\n }\n }\n else {\n styles.push(styleTuple);\n }\n });\n }\n else {\n styles.push(metadata.styles);\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (isObject(styleData)) {\n const styleMap = styleData;\n const easing = styleMap['easing'];\n if (easing) {\n collectedEasing = easing;\n delete styleMap['easing'];\n }\n if (!containsDynamicStyles) {\n for (let prop in styleMap) {\n const value = styleMap[prop];\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple == 'string')\n return;\n Object.keys(tuple).forEach(prop => {\n if (!this._driver.validateStyleProperty(prop)) {\n context.errors.push(`The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n return;\n }\n const collectedStyles = context.collectedStyles[context.currentQuerySelector];\n const collectedEntry = collectedStyles[prop];\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(`The CSS property \"${prop}\" that exists between the times of \"${collectedEntry.startTime}ms\" and \"${collectedEntry\n .endTime}ms\" is also being animated in a parallel animation between the times of \"${startTime}ms\" and \"${endTime}ms\"`);\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles[prop] = { startTime, endTime };\n }\n if (context.options) {\n validateStyleParams(tuple[prop], context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(`keyframes() must be placed inside of a call to animate()`);\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(`Please ensure that all keyframe offsets are between 0 and 1`);\n }\n if (offsetsOutOfOrder) {\n context.errors.push(`Please ensure that all keyframe offsets are in order`);\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(`Not all style() steps within the declared keyframes() contain offsets`);\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetAsInMap(context.collectedStyles, context.currentQuerySelector, {});\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(`stagger() can only be used inside of query()`);\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // the :enter and :leave selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.substr(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = {};\n this.options = null;\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (isObject(styleTuple) && styleTuple.hasOwnProperty('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n });\n }\n else if (isObject(styles) && styles.hasOwnProperty('offset')) {\n const obj = styles;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n return offset;\n}\nfunction isObject(value) {\n return !Array.isArray(value) && typeof value == 'object';\n}\nfunction constructTimingAst(value, errors) {\n let timings = null;\n if (value.hasOwnProperty('duration')) {\n timings = value;\n }\n else if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n timings = timings || resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n consume(element) {\n let instructions = this._map.get(element);\n if (instructions) {\n this._map.delete(element);\n }\n else {\n instructions = [];\n }\n return instructions;\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of prototypical inheritance, AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two wihtin a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergesort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill object. Given that each of the keyframe\n * styles are objects that prototypically inhert from the backFill object, this means that if a\n * value is added into the backFill then it will automatically propagate any missing values to all\n * keyframes. Therefore the missing `height` value will be properly filled into the already\n * processed keyframes.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * (For prototypically-inherited contents to be detected a `for(i in obj)` loop must be used.)\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = {}, finalStyles = {}, options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n if (timelines.length && Object.keys(finalStyles).length) {\n const tl = timelines[timelines.length - 1];\n if (!tl.allowOnlyTimelineStyles()) {\n tl.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, 0, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.consume(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just incase the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.getCurrentStyleProperties().length) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* Style */ ||\n (startTime == 0 && context.currentTimeline.getCurrentStyleProperties().length))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // if :self is only used then the selector is empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(`\\`query(\"${originalSelector}\")\\` returned zero elements. (Use \\`query(\"${originalSelector}\", { optional: true })\\` if you wish to allow this.)`);\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = {};\n this._currentKeyframe = {};\n this._keyframes = new Map();\n this._styleSummary = {};\n this._pendingStyles = {};\n this._backFill = {};\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._localTimelineStyles = Object.create(this._backFill, {});\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.getCurrentStyleProperties().length > 0;\n default:\n return true;\n }\n }\n getCurrentStyleProperties() {\n return Object.keys(this._currentKeyframe);\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size == 1 && Object.keys(this._pendingStyles).length;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = Object.create(this._backFill, {});\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles[prop] = value;\n this._globalTimelineStyles[prop] = value;\n this._styleSummary[prop] = { time: this.currentTime, value };\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n Object.keys(this._globalTimelineStyles).forEach(prop => {\n this._backFill[prop] = this._globalTimelineStyles[prop] || AUTO_STYLE;\n this._currentKeyframe[prop] = AUTO_STYLE;\n });\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n Object.keys(styles).forEach(prop => {\n const val = interpolateParams(styles[prop], params, errors);\n this._pendingStyles[prop] = val;\n if (!this._localTimelineStyles.hasOwnProperty(prop)) {\n this._backFill[prop] = this._globalTimelineStyles.hasOwnProperty(prop) ?\n this._globalTimelineStyles[prop] :\n AUTO_STYLE;\n }\n this._updateStyle(prop, val);\n });\n }\n applyStylesToKeyframe() {\n const styles = this._pendingStyles;\n const props = Object.keys(styles);\n if (props.length == 0)\n return;\n this._pendingStyles = {};\n props.forEach(prop => {\n const val = styles[prop];\n this._currentKeyframe[prop] = val;\n });\n Object.keys(this._localTimelineStyles).forEach(prop => {\n if (!this._currentKeyframe.hasOwnProperty(prop)) {\n this._currentKeyframe[prop] = this._localTimelineStyles[prop];\n }\n });\n }\n snapshotCurrentStyles() {\n Object.keys(this._localTimelineStyles).forEach(prop => {\n const val = this._localTimelineStyles[prop];\n this._pendingStyles[prop] = val;\n this._updateStyle(prop, val);\n });\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n Object.keys(timeline._styleSummary).forEach(prop => {\n const details0 = this._styleSummary[prop];\n const details1 = timeline._styleSummary[prop];\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, true);\n Object.keys(finalKeyframe).forEach(prop => {\n const value = finalKeyframe[prop];\n if (value == ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value == AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe['offset'] = time / this.duration;\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = copyObj(kf0);\n kf0['offset'] = 0;\n kf1['offset'] = 1;\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.element = element;\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0], false);\n newFirstKeyframe['offset'] = 0;\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0], false);\n oldFirstKeyframe['offset'] = roundOffset(startingGap);\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still renderered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i], false);\n const oldOffset = kf['offset'];\n const timeAtKeyframe = delay + oldOffset * duration;\n kf['offset'] = roundOffset(timeAtKeyframe / totalTime);\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = {};\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || Object.keys(allStyles);\n allProperties.forEach(prop => {\n styles[prop] = AUTO_STYLE;\n });\n }\n else {\n copyStyles(token, false, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const ast = buildAnimationAst(_driver, input, errors);\n if (errors.length) {\n const errorMessage = `animation validation failed:\\n${errors.join('\\n')}`;\n throw new Error(errorMessage);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n const errorMessage = `animation building failed:\\n${errors.join('\\n')}`;\n throw new Error(errorMessage);\n }\n return result;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_MAP[normalizedProperty] && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(`Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n }\n }\n }\n return strVal + unit;\n }\n}\nconst ɵ0$1 = () => makeBooleanMap('width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective'\n .split(','));\nconst DIMENSIONAL_PROP_MAP = (ɵ0$1)();\nfunction makeBooleanMap(keys) {\n const map = {};\n keys.forEach(key => map[key] = true);\n return map;\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n const backupStateStyler = this._stateStyles['*'];\n const stateStyler = this._stateStyles[stateName];\n const backupStyles = backupStateStyler ? backupStateStyler.buildStyles(params, errors) : {};\n return stateStyler ? stateStyler.buildStyles(params, errors) : backupStyles;\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = { params: Object.assign(Object.assign({}, transitionAnimationParams), nextAnimationParams) };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetAsInMap(preStyleMap, elm, {});\n tl.preStyleProps.forEach(prop => preProps[prop] = true);\n const postProps = getOrSetAsInMap(postStyleMap, elm, {});\n tl.postStyleProps.forEach(prop => postProps[prop] = true);\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n }\n buildStyles(params, errors) {\n const finalStyles = {};\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value != null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n const styleObj = value;\n Object.keys(styleObj).forEach(prop => {\n let val = styleObj[prop];\n if (val.length > 1) {\n val = interpolateParams(val, combinedParams, errors);\n }\n finalStyles[prop] = val;\n });\n }\n });\n return finalStyles;\n }\n}\n\n/**\n * @publicApi\n */\nfunction buildTrigger(name, ast) {\n return new AnimationTrigger(name, ast);\n}\n/**\n * @publicApi\n */\nclass AnimationTrigger {\n constructor(name, ast) {\n this.name = name;\n this.ast = ast;\n this.transitionFactories = [];\n this.states = {};\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states[ast.name] = new AnimationStateStyles(ast.style, defaultParams);\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(obj, key1, key2) {\n if (obj.hasOwnProperty(key1)) {\n if (!obj.hasOwnProperty(key2)) {\n obj[key2] = obj[key1];\n }\n }\n else if (obj.hasOwnProperty(key2)) {\n obj[key1] = obj[key2];\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = {};\n this._playersById = {};\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const ast = buildAnimationAst(this._driver, metadata, errors);\n if (errors.length) {\n throw new Error(`Unable to build the animation due to the following errors: ${errors.join('\\n')}`);\n }\n else {\n this._animations[id] = ast;\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations[id];\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, {}, {}, options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetAsInMap(autoStylesMap, inst.element, {});\n inst.postStyleProps.forEach(prop => styles[prop] = null);\n });\n }\n else {\n errors.push('The requested animation doesn\\'t exist or has already been destroyed');\n instructions = [];\n }\n if (errors.length) {\n throw new Error(`Unable to create the animation due to the following errors: ${errors.join('\\n')}`);\n }\n autoStylesMap.forEach((styles, element) => {\n Object.keys(styles).forEach(prop => {\n styles[prop] = this._driver.computeStyle(element, prop, AUTO_STYLE);\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, {}, styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById[id] = player;\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n delete this._playersById[id];\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById[id];\n if (!player) {\n throw new Error(`Unable to find the timeline player referenced by ${id}`);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n get params() {\n return this.options.params;\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = {};\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.hasOwnProperty(name)) {\n throw new Error(`Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n }\n if (phase == null || phase.length == 0) {\n throw new Error(`Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n }\n if (!isTriggerEventValid(phase)) {\n throw new Error(`The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n }\n const listeners = getOrSetAsInMap(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetAsInMap(this._engine.statesByElement, element, {});\n if (!triggersWithStates.hasOwnProperty(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates[name] = DEFAULT_STATE_VALUE;\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers[name]) {\n delete triggersWithStates[name];\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers[name]) {\n // throw\n return false;\n }\n else {\n this._triggers[name] = ast;\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers[name];\n if (!trigger) {\n throw new Error(`The provided animation trigger \"${name}\" has not been registered!`);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = {});\n }\n let fromState = triggersWithStates[triggerName];\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates[triggerName] = toState;\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetAsInMap(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new palyer)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n delete this._triggers[name];\n this._engine.statesByElement.forEach((stateMap, element) => {\n delete stateMap[name];\n });\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n if (triggerStates) {\n const players = [];\n Object.keys(triggerStates).forEach(triggerName => {\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers[triggerName]) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers[triggerName];\n const transition = trigger.fallbackTransition;\n const fromState = elementStates[triggerName] || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is apart of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const limit = this._namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n for (let i = limit; i >= 0; i--) {\n const nextNamespace = this._namespaceList[i];\n if (this.driver.containsElement(nextNamespace.hostElement, hostElement)) {\n this._namespaceList.splice(i + 1, 0, ns);\n found = true;\n break;\n }\n }\n if (!found) {\n this._namespaceList.splice(0, 0, ns);\n }\n }\n else {\n this._namespaceList.push(ns);\n }\n this.namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply the dedupe\n // of namespaces incase there are multiple triggers both the elm and host\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n const keys = Object.keys(elementStates);\n for (let i = 0; i < keys.length; i++) {\n const nsId = elementStates[keys[i]].namespaceId;\n if (nsId) {\n const ns = this._fetchNamespace(nsId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] =\n { namespaceId, setForRemoval: context, hasAnimation, removedBeforeQueried: false };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (this.driver.matchesElement(element, DISABLED_SELECTOR)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw new Error(`Unable to process animations due to the following failed trigger transitions\\n ${errors.join('\\n')}`);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // move animations are currently not supported...\n if (details && details.setForMove) {\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be apart of the DOM, it may\n // still be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important we still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if a unmatched transition is queued to go then it SHOULD NOT render\n // an animation and cancel the previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub trigger\n // then it will instruct the timeline builder to not add a player delay, but\n // instead stretch the first keyframe gap up until the animation starts. The\n // reason this is important is to prevent extra initialization styles from being\n // required by the user in the animation.\n instruction.timelines.forEach(tl => tl.stretchStartingKeyframe = true);\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetAsInMap(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n if (props.length) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(`@${instruction.triggerName} has failed due to:\\n`);\n instruction.errors.forEach(error => errors.push(`- ${error}\\n`));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map works to tell which element in the DOM tree is contained by\n // which animation. Further down below this map will get populated once\n // the players are built and in doing so it can efficiently figure out\n // if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetAsInMap(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed (either by)\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or auto since the element\n // that is being getComputedStyle'd will not be visible (since * = destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, Object.assign(Object.assign({}, post), pre));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation player\n subPlayers.forEach(player => {\n // even if any players are not found for a sub animation then it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetAsInMap(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetAsInMap(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetAsInMap(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = {};\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n Object.keys(this._queuedCallbacks).forEach(phase => {\n this._queuedCallbacks[phase].forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks = {};\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetAsInMap(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues;\n if (map instanceof Map) {\n currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n }\n else {\n currentValues = map[key];\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n delete map[key];\n }\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = {};\n props.forEach(prop => {\n const value = styles[prop] = driver.computeStyle(element, prop, defaultStyle);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nconst CLASSES_CACHE_KEY = '$$classes';\nfunction containsClass(element, className) {\n if (element.classList) {\n return element.classList.contains(className);\n }\n else {\n const classes = element[CLASSES_CACHE_KEY];\n return classes && classes[className];\n }\n}\nfunction addClass(element, className) {\n if (element.classList) {\n element.classList.add(className);\n }\n else {\n let classes = element[CLASSES_CACHE_KEY];\n if (!classes) {\n classes = element[CLASSES_CACHE_KEY] = {};\n }\n classes[className] = true;\n }\n}\nfunction removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n }\n else {\n let classes = element[CLASSES_CACHE_KEY];\n if (classes) {\n delete classes[className];\n }\n }\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const ast = buildAnimationAst(this._driver, metadata, errors);\n if (errors.length) {\n throw new Error(`The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.join('\\n - ')}`);\n }\n trigger = buildTrigger(name, ast);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = {});\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = new WeakMap();\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n const props = Object.keys(styles);\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (isNonAnimatableStyle(prop)) {\n result = result || {};\n result[prop] = styles[prop];\n }\n }\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ELAPSED_TIME_MAX_DECIMAL_PLACES = 3;\nconst ANIMATION_PROP = 'animation';\nconst ANIMATIONEND_EVENT = 'animationend';\nconst ONE_SECOND$1 = 1000;\nclass ElementAnimationStyleHandler {\n constructor(_element, _name, _duration, _delay, _easing, _fillMode, _onDoneFn) {\n this._element = _element;\n this._name = _name;\n this._duration = _duration;\n this._delay = _delay;\n this._easing = _easing;\n this._fillMode = _fillMode;\n this._onDoneFn = _onDoneFn;\n this._finished = false;\n this._destroyed = false;\n this._startTime = 0;\n this._position = 0;\n this._eventFn = (e) => this._handleCallback(e);\n }\n apply() {\n applyKeyframeAnimation(this._element, `${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`);\n addRemoveAnimationEvent(this._element, this._eventFn, false);\n this._startTime = Date.now();\n }\n pause() {\n playPauseAnimation(this._element, this._name, 'paused');\n }\n resume() {\n playPauseAnimation(this._element, this._name, 'running');\n }\n setPosition(position) {\n const index = findIndexForAnimation(this._element, this._name);\n this._position = position * this._duration;\n setAnimationStyle(this._element, 'Delay', `-${this._position}ms`, index);\n }\n getPosition() {\n return this._position;\n }\n _handleCallback(event) {\n const timestamp = event._ngTestManualTimestamp || Date.now();\n const elapsedTime = parseFloat(event.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)) * ONE_SECOND$1;\n if (event.animationName == this._name &&\n Math.max(timestamp - this._startTime, 0) >= this._delay && elapsedTime >= this._duration) {\n this.finish();\n }\n }\n finish() {\n if (this._finished)\n return;\n this._finished = true;\n this._onDoneFn();\n addRemoveAnimationEvent(this._element, this._eventFn, true);\n }\n destroy() {\n if (this._destroyed)\n return;\n this._destroyed = true;\n this.finish();\n removeKeyframeAnimation(this._element, this._name);\n }\n}\nfunction playPauseAnimation(element, name, status) {\n const index = findIndexForAnimation(element, name);\n setAnimationStyle(element, 'PlayState', status, index);\n}\nfunction applyKeyframeAnimation(element, value) {\n const anim = getAnimationStyle(element, '').trim();\n let index = 0;\n if (anim.length) {\n index = countChars(anim, ',') + 1;\n value = `${anim}, ${value}`;\n }\n setAnimationStyle(element, '', value);\n return index;\n}\nfunction removeKeyframeAnimation(element, name) {\n const anim = getAnimationStyle(element, '');\n const tokens = anim.split(',');\n const index = findMatchingTokenIndex(tokens, name);\n if (index >= 0) {\n tokens.splice(index, 1);\n const newValue = tokens.join(',');\n setAnimationStyle(element, '', newValue);\n }\n}\nfunction findIndexForAnimation(element, value) {\n const anim = getAnimationStyle(element, '');\n if (anim.indexOf(',') > 0) {\n const tokens = anim.split(',');\n return findMatchingTokenIndex(tokens, value);\n }\n return findMatchingTokenIndex([anim], value);\n}\nfunction findMatchingTokenIndex(tokens, searchToken) {\n for (let i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(searchToken) >= 0) {\n return i;\n }\n }\n return -1;\n}\nfunction addRemoveAnimationEvent(element, fn, doRemove) {\n doRemove ? element.removeEventListener(ANIMATIONEND_EVENT, fn) :\n element.addEventListener(ANIMATIONEND_EVENT, fn);\n}\nfunction setAnimationStyle(element, name, value, index) {\n const prop = ANIMATION_PROP + name;\n if (index != null) {\n const oldValue = element.style[prop];\n if (oldValue.length) {\n const tokens = oldValue.split(',');\n tokens[index] = value;\n value = tokens.join(',');\n }\n }\n element.style[prop] = value;\n}\nfunction getAnimationStyle(element, name) {\n return element.style[ANIMATION_PROP + name] || '';\n}\nfunction countChars(value, char) {\n let count = 0;\n for (let i = 0; i < value.length; i++) {\n const c = value.charAt(i);\n if (c === char)\n count++;\n }\n return count;\n}\n\nconst DEFAULT_FILL_MODE = 'forwards';\nconst DEFAULT_EASING = 'linear';\nclass CssKeyframesPlayer {\n constructor(element, keyframes, animationName, _duration, _delay, easing, _finalStyles, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.animationName = animationName;\n this._duration = _duration;\n this._delay = _delay;\n this._finalStyles = _finalStyles;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this.currentSnapshot = {};\n this._state = 0;\n this.easing = easing || DEFAULT_EASING;\n this.totalTime = _duration + _delay;\n this._buildStyler();\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n destroy() {\n this.init();\n if (this._state >= 4 /* DESTROYED */)\n return;\n this._state = 4 /* DESTROYED */;\n this._styler.destroy();\n this._flushStartFns();\n this._flushDoneFns();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n _flushDoneFns() {\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n _flushStartFns() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n finish() {\n this.init();\n if (this._state >= 3 /* FINISHED */)\n return;\n this._state = 3 /* FINISHED */;\n this._styler.finish();\n this._flushStartFns();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._flushDoneFns();\n }\n setPosition(value) {\n this._styler.setPosition(value);\n }\n getPosition() {\n return this._styler.getPosition();\n }\n hasStarted() {\n return this._state >= 2 /* STARTED */;\n }\n init() {\n if (this._state >= 1 /* INITIALIZED */)\n return;\n this._state = 1 /* INITIALIZED */;\n const elm = this.element;\n this._styler.apply();\n if (this._delay) {\n this._styler.pause();\n }\n }\n play() {\n this.init();\n if (!this.hasStarted()) {\n this._flushStartFns();\n this._state = 2 /* STARTED */;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this._styler.resume();\n }\n pause() {\n this.init();\n this._styler.pause();\n }\n restart() {\n this.reset();\n this.play();\n }\n reset() {\n this._styler.destroy();\n this._buildStyler();\n this._styler.apply();\n }\n _buildStyler() {\n this._styler = new ElementAnimationStyleHandler(this.element, this.animationName, this._duration, this._delay, this.easing, DEFAULT_FILL_MODE, () => this.finish());\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n beforeDestroy() {\n this.init();\n const styles = {};\n if (this.hasStarted()) {\n const finished = this._state >= 3 /* FINISHED */;\n Object.keys(this._finalStyles).forEach(prop => {\n if (prop != 'offset') {\n styles[prop] = finished ? this._finalStyles[prop] : computeStyle(this.element, prop);\n }\n });\n }\n this.currentSnapshot = styles;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass DirectStylePlayer extends NoopAnimationPlayer {\n constructor(element, styles) {\n super();\n this.element = element;\n this._startingStyles = {};\n this.__initialized = false;\n this._styles = hypenatePropsObject(styles);\n }\n init() {\n if (this.__initialized || !this._startingStyles)\n return;\n this.__initialized = true;\n Object.keys(this._styles).forEach(prop => {\n this._startingStyles[prop] = this.element.style[prop];\n });\n super.init();\n }\n play() {\n if (!this._startingStyles)\n return;\n this.init();\n Object.keys(this._styles)\n .forEach(prop => this.element.style.setProperty(prop, this._styles[prop]));\n super.play();\n }\n destroy() {\n if (!this._startingStyles)\n return;\n Object.keys(this._startingStyles).forEach(prop => {\n const value = this._startingStyles[prop];\n if (value) {\n this.element.style.setProperty(prop, value);\n }\n else {\n this.element.style.removeProperty(prop);\n }\n });\n this._startingStyles = null;\n super.destroy();\n }\n}\n\nconst KEYFRAMES_NAME_PREFIX = 'gen_css_kf_';\nconst TAB_SPACE = ' ';\nclass CssKeyframesDriver {\n constructor() {\n this._count = 0;\n this._head = document.querySelector('head');\n }\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(element, selector) {\n return matchesElement(element, selector);\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n buildKeyframeElement(element, name, keyframes) {\n keyframes = keyframes.map(kf => hypenatePropsObject(kf));\n let keyframeStr = `@keyframes ${name} {\\n`;\n let tab = '';\n keyframes.forEach(kf => {\n tab = TAB_SPACE;\n const offset = parseFloat(kf['offset']);\n keyframeStr += `${tab}${offset * 100}% {\\n`;\n tab += TAB_SPACE;\n Object.keys(kf).forEach(prop => {\n const value = kf[prop];\n switch (prop) {\n case 'offset':\n return;\n case 'easing':\n if (value) {\n keyframeStr += `${tab}animation-timing-function: ${value};\\n`;\n }\n return;\n default:\n keyframeStr += `${tab}${prop}: ${value};\\n`;\n return;\n }\n });\n keyframeStr += `${tab}}\\n`;\n });\n keyframeStr += `}\\n`;\n const kfElm = document.createElement('style');\n kfElm.textContent = keyframeStr;\n return kfElm;\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && scrubberAccessRequested) {\n notifyFaultyScrubber();\n }\n const previousCssKeyframePlayers = previousPlayers.filter(player => player instanceof CssKeyframesPlayer);\n const previousStyles = {};\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousCssKeyframePlayers.forEach(player => {\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach(prop => previousStyles[prop] = styles[prop]);\n });\n }\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n const finalStyles = flattenKeyframesIntoStyles(keyframes);\n // if there is no animation then there is no point in applying\n // styles and waiting for an event to get fired. This causes lag.\n // It's better to just directly apply the styles to the element\n // via the direct styling animation player.\n if (duration == 0) {\n return new DirectStylePlayer(element, finalStyles);\n }\n const animationName = `${KEYFRAMES_NAME_PREFIX}${this._count++}`;\n const kfElm = this.buildKeyframeElement(element, animationName, keyframes);\n document.querySelector('head').appendChild(kfElm);\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n const player = new CssKeyframesPlayer(element, keyframes, animationName, duration, delay, easing, finalStyles, specialStyles);\n player.onDestroy(() => removeElement(kfElm));\n return player;\n }\n}\nfunction flattenKeyframesIntoStyles(keyframes) {\n let flatKeyframes = {};\n if (keyframes) {\n const kfs = Array.isArray(keyframes) ? keyframes : [keyframes];\n kfs.forEach(kf => {\n Object.keys(kf).forEach(prop => {\n if (prop == 'offset' || prop == 'easing')\n return;\n flatKeyframes[prop] = kf[prop];\n });\n });\n }\n return flatKeyframes;\n}\nfunction removeElement(node) {\n node.parentNode.removeChild(node);\n}\nlet warningIssued = false;\nfunction notifyFaultyScrubber() {\n if (warningIssued)\n return;\n console.warn('@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\\n', ' visit https://bit.ly/IWukam to learn more about using the web-animation-js polyfill.');\n warningIssued = true;\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = {};\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : {};\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return element['animate'](keyframes, options);\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n return this.domPlayer.currentTime / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = {};\n if (this.hasStarted()) {\n Object.keys(this._finalKeyframe).forEach(prop => {\n if (prop != 'offset') {\n styles[prop] =\n this._finished ? this._finalKeyframe[prop] : computeStyle(this.element, prop);\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n constructor() {\n this._isNativeImpl = /\\{\\s*\\[native\\s+code\\]\\s*\\}/.test(getElementAnimateFn().toString());\n this._cssKeyframesDriver = new CssKeyframesDriver();\n }\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(element, selector) {\n return matchesElement(element, selector);\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n overrideWebAnimationsSupport(supported) {\n this._isNativeImpl = supported;\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n const useKeyframes = !scrubberAccessRequested && !this._isNativeImpl;\n if (useKeyframes) {\n return this._cssKeyframesDriver.animate(element, keyframes, duration, delay, easing, previousPlayers);\n }\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = {};\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach(prop => previousStyles[prop] = styles[prop]);\n });\n }\n keyframes = keyframes.map(styles => copyStyles(styles, false));\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n return new WebAnimationsPlayer(element, keyframes, playerOptions, specialStyles);\n }\n}\nfunction supportsWebAnimations() {\n return typeof getElementAnimateFn() === 'function';\n}\nfunction getElementAnimateFn() {\n return (isBrowser() && Element.prototype['animate']) || {};\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, CssKeyframesDriver as ɵCssKeyframesDriver, CssKeyframesPlayer as ɵCssKeyframesPlayer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, SpecialCasedStyles as ɵangular_packages_animations_browser_browser_a, containsElement as ɵcontainsElement, invokeQuery as ɵinvokeQuery, matchesElement as ɵmatchesElement, supportsWebAnimations as ɵsupportsWebAnimations, validateStyleProperty as ɵvalidateStyleProperty };\n\n//# sourceMappingURL=browser.js.map","/**\n * @license Angular v11.2.14\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ViewEncapsulation, Injectable, RendererFactory2, Inject, NgZone, InjectionToken, NgModule } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport { ɵAnimationEngine, AnimationDriver, ɵAnimationStyleNormalizer, ɵsupportsWebAnimations, ɵWebAnimationsDriver, ɵCssKeyframesDriver, ɵWebAnimationsStyleNormalizer, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/animations/browser';\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\nBrowserAnimationBuilder.ɵfac = function BrowserAnimationBuilder_Factory(t) { return new (t || BrowserAnimationBuilder)(ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(DOCUMENT)); };\nBrowserAnimationBuilder.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: BrowserAnimationBuilder, factory: BrowserAnimationBuilder.ɵfac });\nBrowserAnimationBuilder.ctorParameters = () => [\n { type: RendererFactory2 },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BrowserAnimationBuilder, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n var _a, _b;\n return (_b = (_a = this._renderer.engine.players[+this.id]) === null || _a === void 0 ? void 0 : _a.getPosition()) !== null && _b !== void 0 ? _b : 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n this.promise = Promise.resolve(0);\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if an component element has a leave animation, and the component\n // a host leave animation, the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n if (delegate && delegate.parentNode(element)) {\n delegate.removeChild(element.parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n // always use promise to schedule microtask instead of use Zone\n this.promise.then(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n Promise.resolve(null).then(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\nAnimationRendererFactory.ɵfac = function AnimationRendererFactory_Factory(t) { return new (t || AnimationRendererFactory)(ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(ɵngcc1.ɵAnimationEngine), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nAnimationRendererFactory.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: AnimationRendererFactory, factory: AnimationRendererFactory.ɵfac });\nAnimationRendererFactory.ctorParameters = () => [\n { type: RendererFactory2 },\n { type: ɵAnimationEngine },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AnimationRendererFactory, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.RendererFactory2 }, { type: ɵngcc1.ɵAnimationEngine }, { type: ɵngcc0.NgZone }]; }, null); })();\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode(n) : null;\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine) {\n super(namespaceId, delegate, engine);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.substr(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.substr(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.substr(dotIndex + 1);\n return [trigger, phase];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n constructor(doc, driver, normalizer) {\n super(doc.body, driver, normalizer);\n }\n}\nInjectableAnimationEngine.ɵfac = function InjectableAnimationEngine_Factory(t) { return new (t || InjectableAnimationEngine)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc1.AnimationDriver), ɵngcc0.ɵɵinject(ɵngcc1.ɵAnimationStyleNormalizer)); };\nInjectableAnimationEngine.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: InjectableAnimationEngine, factory: InjectableAnimationEngine.ɵfac });\nInjectableAnimationEngine.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: AnimationDriver },\n { type: ɵAnimationStyleNormalizer }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InjectableAnimationEngine, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc1.AnimationDriver }, { type: ɵngcc1.ɵAnimationStyleNormalizer }]; }, null); })();\nfunction instantiateSupportedAnimationDriver() {\n return ɵsupportsWebAnimations() ? new ɵWebAnimationsDriver() : new ɵCssKeyframesDriver();\n}\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\n/**\n * @publicApi\n */\nconst ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: instantiateSupportedAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n}\nBrowserAnimationsModule.ɵfac = function BrowserAnimationsModule_Factory(t) { return new (t || BrowserAnimationsModule)(); };\nBrowserAnimationsModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: BrowserAnimationsModule });\nBrowserAnimationsModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BrowserAnimationsModule, { exports: function () { return [BrowserModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BrowserAnimationsModule, [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS\n }]\n }], null, null); })();\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n}\nNoopAnimationsModule.ɵfac = function NoopAnimationsModule_Factory(t) { return new (t || NoopAnimationsModule)(); };\nNoopAnimationsModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NoopAnimationsModule });\nNoopAnimationsModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NoopAnimationsModule, { exports: function () { return [BrowserModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoopAnimationsModule, [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine, instantiateSupportedAnimationDriver as ɵangular_packages_platform_browser_animations_animations_a, instantiateDefaultStyleNormalizer as ɵangular_packages_platform_browser_animations_animations_b, instantiateRendererFactory as ɵangular_packages_platform_browser_animations_animations_c, BROWSER_ANIMATIONS_PROVIDERS as ɵangular_packages_platform_browser_animations_animations_d, BROWSER_NOOP_ANIMATIONS_PROVIDERS as ɵangular_packages_platform_browser_animations_animations_e, BaseAnimationRenderer as ɵangular_packages_platform_browser_animations_animations_f };\n\n//# sourceMappingURL=animations.js.map","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","import superPropBase from \"@babel/runtime/helpers/esm/superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-ps\": \"TJgH\",\n\t\"./ar-ps.js\": \"TJgH\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku-kmr\": \"dVgr\",\n\t\"./ku-kmr.js\": \"dVgr\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { AuthNotice } from './auth-notice.interface';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AuthNoticeService {\n\tonNoticeChanged$: BehaviorSubject;\n\n\tconstructor() {\n\t\tthis.onNoticeChanged$ = new BehaviorSubject(null);\n\t}\n\n\tsetNotice(message: string, type?: string) {\n\t\tconst notice: AuthNotice = {\n\t\t\tmessage: message,\n\t\t\ttype: type\n\t\t};\n\t\tthis.onNoticeChanged$.next(notice);\n\t}\n}\n","import { createSelector } from '@ngrx/store';\nimport { isDevMode } from '@angular/core';\n\nfunction getInitialEntityState() {\n return {\n ids: [],\n entities: {},\n };\n}\nfunction createInitialStateFactory() {\n function getInitialState(additionalState = {}) {\n return Object.assign(getInitialEntityState(), additionalState);\n }\n return { getInitialState };\n}\n\nfunction createSelectorsFactory() {\n function getSelectors(selectState) {\n const selectIds = (state) => state.ids;\n const selectEntities = (state) => state.entities;\n const selectAll = createSelector(selectIds, selectEntities, (ids, entities) => ids.map((id) => entities[id]));\n const selectTotal = createSelector(selectIds, (ids) => ids.length);\n if (!selectState) {\n return {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n };\n }\n return {\n selectIds: createSelector(selectState, selectIds),\n selectEntities: createSelector(selectState, selectEntities),\n selectAll: createSelector(selectState, selectAll),\n selectTotal: createSelector(selectState, selectTotal),\n };\n }\n return { getSelectors };\n}\n\nvar DidMutate;\n(function (DidMutate) {\n DidMutate[DidMutate[\"EntitiesOnly\"] = 0] = \"EntitiesOnly\";\n DidMutate[DidMutate[\"Both\"] = 1] = \"Both\";\n DidMutate[DidMutate[\"None\"] = 2] = \"None\";\n})(DidMutate || (DidMutate = {}));\nfunction createStateOperator(mutator) {\n return function operation(arg, state) {\n const clonedEntityState = {\n ids: [...state.ids],\n entities: Object.assign({}, state.entities),\n };\n const didMutate = mutator(arg, clonedEntityState);\n if (didMutate === DidMutate.Both) {\n return Object.assign({}, state, clonedEntityState);\n }\n if (didMutate === DidMutate.EntitiesOnly) {\n return Object.assign(Object.assign({}, state), { entities: clonedEntityState.entities });\n }\n return state;\n };\n}\n\nfunction selectIdValue(entity, selectId) {\n const key = selectId(entity);\n if (isDevMode() && key === undefined) {\n console.warn('@ngrx/entity: The entity passed to the `selectId` implementation returned undefined.', 'You should probably provide your own `selectId` implementation.', 'The entity that was passed:', entity, 'The `selectId` implementation:', selectId.toString());\n }\n return key;\n}\n\nfunction createUnsortedStateAdapter(selectId) {\n function addOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n return DidMutate.None;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n return DidMutate.Both;\n }\n function addManyMutably(entities, state) {\n let didMutate = false;\n for (const entity of entities) {\n didMutate = addOneMutably(entity, state) !== DidMutate.None || didMutate;\n }\n return didMutate ? DidMutate.Both : DidMutate.None;\n }\n function setAllMutably(entities, state) {\n state.ids = [];\n state.entities = {};\n addManyMutably(entities, state);\n return DidMutate.Both;\n }\n function setOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n state.entities[key] = entity;\n return DidMutate.EntitiesOnly;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n return DidMutate.Both;\n }\n function removeOneMutably(key, state) {\n return removeManyMutably([key], state);\n }\n function removeManyMutably(keysOrPredicate, state) {\n const keys = keysOrPredicate instanceof Array\n ? keysOrPredicate\n : state.ids.filter((key) => keysOrPredicate(state.entities[key]));\n const didMutate = keys\n .filter((key) => key in state.entities)\n .map((key) => delete state.entities[key]).length > 0;\n if (didMutate) {\n state.ids = state.ids.filter((id) => id in state.entities);\n }\n return didMutate ? DidMutate.Both : DidMutate.None;\n }\n function removeAll(state) {\n return Object.assign({}, state, {\n ids: [],\n entities: {},\n });\n }\n function takeNewKey(keys, update, state) {\n const original = state.entities[update.id];\n const updated = Object.assign({}, original, update.changes);\n const newKey = selectIdValue(updated, selectId);\n const hasNewKey = newKey !== update.id;\n if (hasNewKey) {\n keys[update.id] = newKey;\n delete state.entities[update.id];\n }\n state.entities[newKey] = updated;\n return hasNewKey;\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n const newKeys = {};\n updates = updates.filter((update) => update.id in state.entities);\n const didMutateEntities = updates.length > 0;\n if (didMutateEntities) {\n const didMutateIds = updates.filter((update) => takeNewKey(newKeys, update, state)).length >\n 0;\n if (didMutateIds) {\n state.ids = state.ids.map((id) => newKeys[id] || id);\n return DidMutate.Both;\n }\n else {\n return DidMutate.EntitiesOnly;\n }\n }\n return DidMutate.None;\n }\n function mapMutably(map, state) {\n const changes = state.ids.reduce((changes, id) => {\n const change = map(state.entities[id]);\n if (change !== state.entities[id]) {\n changes.push({ id, changes: change });\n }\n return changes;\n }, []);\n const updates = changes.filter(({ id }) => id in state.entities);\n return updateManyMutably(updates, state);\n }\n function mapOneMutably({ map, id }, state) {\n const entity = state.entities[id];\n if (!entity) {\n return DidMutate.None;\n }\n const updatedEntity = map(entity);\n return updateOneMutably({\n id: id,\n changes: updatedEntity,\n }, state);\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(entities, state) {\n const added = [];\n const updated = [];\n for (const entity of entities) {\n const id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n updated.push({ id, changes: entity });\n }\n else {\n added.push(entity);\n }\n }\n const didMutateByUpdated = updateManyMutably(updated, state);\n const didMutateByAdded = addManyMutably(added, state);\n switch (true) {\n case didMutateByAdded === DidMutate.None &&\n didMutateByUpdated === DidMutate.None:\n return DidMutate.None;\n case didMutateByAdded === DidMutate.Both ||\n didMutateByUpdated === DidMutate.Both:\n return DidMutate.Both;\n default:\n return DidMutate.EntitiesOnly;\n }\n }\n return {\n removeAll,\n addOne: createStateOperator(addOneMutably),\n addMany: createStateOperator(addManyMutably),\n setAll: createStateOperator(setAllMutably),\n setOne: createStateOperator(setOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n removeOne: createStateOperator(removeOneMutably),\n removeMany: createStateOperator(removeManyMutably),\n map: createStateOperator(mapMutably),\n mapOne: createStateOperator(mapOneMutably),\n };\n}\n\nfunction createSortedStateAdapter(selectId, sort) {\n const { removeOne, removeMany, removeAll } = createUnsortedStateAdapter(selectId);\n function addOneMutably(entity, state) {\n return addManyMutably([entity], state);\n }\n function addManyMutably(newModels, state) {\n const models = newModels.filter((model) => !(selectIdValue(model, selectId) in state.entities));\n if (models.length === 0) {\n return DidMutate.None;\n }\n else {\n merge(models, state);\n return DidMutate.Both;\n }\n }\n function setAllMutably(models, state) {\n state.entities = {};\n state.ids = [];\n addManyMutably(models, state);\n return DidMutate.Both;\n }\n function setOneMutably(entity, state) {\n const id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n state.ids = state.ids.filter((val) => val !== id);\n merge([entity], state);\n return DidMutate.Both;\n }\n else {\n return addOneMutably(entity, state);\n }\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function takeUpdatedModel(models, update, state) {\n if (!(update.id in state.entities)) {\n return false;\n }\n const original = state.entities[update.id];\n const updated = Object.assign({}, original, update.changes);\n const newKey = selectIdValue(updated, selectId);\n delete state.entities[update.id];\n models.push(updated);\n return newKey !== update.id;\n }\n function updateManyMutably(updates, state) {\n const models = [];\n const didMutateIds = updates.filter((update) => takeUpdatedModel(models, update, state))\n .length > 0;\n if (models.length === 0) {\n return DidMutate.None;\n }\n else {\n const originalIds = state.ids;\n const updatedIndexes = [];\n state.ids = state.ids.filter((id, index) => {\n if (id in state.entities) {\n return true;\n }\n else {\n updatedIndexes.push(index);\n return false;\n }\n });\n merge(models, state);\n if (!didMutateIds &&\n updatedIndexes.every((i) => state.ids[i] === originalIds[i])) {\n return DidMutate.EntitiesOnly;\n }\n else {\n return DidMutate.Both;\n }\n }\n }\n function mapMutably(updatesOrMap, state) {\n const updates = state.ids.reduce((changes, id) => {\n const change = updatesOrMap(state.entities[id]);\n if (change !== state.entities[id]) {\n changes.push({ id, changes: change });\n }\n return changes;\n }, []);\n return updateManyMutably(updates, state);\n }\n function mapOneMutably({ map, id }, state) {\n const entity = state.entities[id];\n if (!entity) {\n return DidMutate.None;\n }\n const updatedEntity = map(entity);\n return updateOneMutably({\n id: id,\n changes: updatedEntity,\n }, state);\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(entities, state) {\n const added = [];\n const updated = [];\n for (const entity of entities) {\n const id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n updated.push({ id, changes: entity });\n }\n else {\n added.push(entity);\n }\n }\n const didMutateByUpdated = updateManyMutably(updated, state);\n const didMutateByAdded = addManyMutably(added, state);\n switch (true) {\n case didMutateByAdded === DidMutate.None &&\n didMutateByUpdated === DidMutate.None:\n return DidMutate.None;\n case didMutateByAdded === DidMutate.Both ||\n didMutateByUpdated === DidMutate.Both:\n return DidMutate.Both;\n default:\n return DidMutate.EntitiesOnly;\n }\n }\n function merge(models, state) {\n models.sort(sort);\n const ids = [];\n let i = 0;\n let j = 0;\n while (i < models.length && j < state.ids.length) {\n const model = models[i];\n const modelId = selectIdValue(model, selectId);\n const entityId = state.ids[j];\n const entity = state.entities[entityId];\n if (sort(model, entity) <= 0) {\n ids.push(modelId);\n i++;\n }\n else {\n ids.push(entityId);\n j++;\n }\n }\n if (i < models.length) {\n state.ids = ids.concat(models.slice(i).map(selectId));\n }\n else {\n state.ids = ids.concat(state.ids.slice(j));\n }\n models.forEach((model, i) => {\n state.entities[selectId(model)] = model;\n });\n }\n return {\n removeOne,\n removeMany,\n removeAll,\n addOne: createStateOperator(addOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n setAll: createStateOperator(setAllMutably),\n setOne: createStateOperator(setOneMutably),\n addMany: createStateOperator(addManyMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n map: createStateOperator(mapMutably),\n mapOne: createStateOperator(mapOneMutably),\n };\n}\n\nfunction createEntityAdapter(options = {}) {\n const { selectId, sortComparer } = Object.assign({ sortComparer: false, selectId: (instance) => instance.id }, options);\n const stateFactory = createInitialStateFactory();\n const selectorsFactory = createSelectorsFactory();\n const stateAdapter = sortComparer\n ? createSortedStateAdapter(selectId, sortComparer)\n : createUnsortedStateAdapter(selectId);\n return Object.assign(Object.assign(Object.assign({ selectId,\n sortComparer }, stateFactory), selectorsFactory), stateAdapter);\n}\n\nclass Dictionary {\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Dictionary, createEntityAdapter };\n\n//# sourceMappingURL=ngrx-entity.js.map","// NGRX\nimport { Action } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n// CRUD\nimport { QueryParamsModel } from '../../_base/crud';\n// Models\nimport { Role } from '../_models/role.model';\n\nexport enum RoleActionTypes {\n\tAllRolesRequested = '[Roles Home Page] All Roles Requested',\n\tAllRolesLoaded = '[Roles API] All Roles Loaded',\n\tRoleOnServerCreated = '[Edit Role Dialog] Role On Server Created',\n\tRoleCreated = '[Edit Roles Dialog] Roles Created',\n\tRoleUpdated = '[Edit Role Dialog] Role Updated',\n\tRoleDeleted = '[Roles List Page] Role Deleted',\n\tRolesPageRequested = '[Roles List Page] Roles Page Requested',\n\tRolesPageLoaded = '[Roles API] Roles Page Loaded',\n\tRolesPageCancelled = '[Roles API] Roles Page Cancelled',\n\tRolesPageToggleLoading = '[Roles page] Roles Page Toggle Loading',\n\tRolesActionToggleLoading = '[Roles] Roles Action Toggle Loading'\n}\n\nexport class RoleOnServerCreated implements Action {\n\treadonly type = RoleActionTypes.RoleOnServerCreated;\n\tconstructor(public payload: { role: Role }) {}\n}\n\nexport class RoleCreated implements Action {\n\treadonly type = RoleActionTypes.RoleCreated;\n\tconstructor(public payload: { role: Role }) {}\n}\n\nexport class RoleUpdated implements Action {\n\treadonly type = RoleActionTypes.RoleUpdated;\n\tconstructor(\n\t\tpublic payload: {\n\t\t\tpartialrole: Update;\n\t\t\trole: Role;\n\t\t}\n\t) {}\n}\n\nexport class RoleDeleted implements Action {\n\treadonly type = RoleActionTypes.RoleDeleted;\n\tconstructor(public payload: { id: number }) {}\n}\n\nexport class RolesPageRequested implements Action {\n\treadonly type = RoleActionTypes.RolesPageRequested;\n\tconstructor(public payload: { page: QueryParamsModel }) {}\n}\n\nexport class RolesPageLoaded implements Action {\n\treadonly type = RoleActionTypes.RolesPageLoaded;\n\tconstructor(public payload: { roles: Role[]; totalCount: number; page: QueryParamsModel }) {}\n}\n\nexport class RolesPageCancelled implements Action {\n\treadonly type = RoleActionTypes.RolesPageCancelled;\n}\n\nexport class AllRolesRequested implements Action {\n\treadonly type = RoleActionTypes.AllRolesRequested;\n}\n\nexport class AllRolesLoaded implements Action {\n\treadonly type = RoleActionTypes.AllRolesLoaded;\n\tconstructor(public payload: { roles: Role[] }) {}\n}\n\nexport class RolesPageToggleLoading implements Action {\n\treadonly type = RoleActionTypes.RolesPageToggleLoading;\n\tconstructor(public payload: { isLoading: boolean }) {}\n}\n\nexport class RolesActionToggleLoading implements Action {\n\treadonly type = RoleActionTypes.RolesActionToggleLoading;\n\tconstructor(public payload: { isLoading: boolean }) {}\n}\n\nexport type RoleActions =\n\t| RoleCreated\n\t| RoleUpdated\n\t| RoleDeleted\n\t| RolesPageRequested\n\t| RolesPageLoaded\n\t| RolesPageCancelled\n\t| AllRolesLoaded\n\t| AllRolesRequested\n\t| RoleOnServerCreated\n\t| RolesPageToggleLoading\n\t| RolesActionToggleLoading;\n","// NGRX\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\n// Actions\nimport { RoleActions, RoleActionTypes } from '../_actions/role.actions';\n// Models\nimport { Role } from '../_models/role.model';\nimport { QueryParamsModel } from '../../_base/crud';\n\nexport interface RolesState extends EntityState {\n\tisAllRolesLoaded: boolean;\n\tqueryRowsCount: number;\n\tqueryResult: Role[];\n\tlastCreatedRoleId: number;\n\tlistLoading: boolean;\n\tactionsloading: boolean;\n\tlastQuery: QueryParamsModel;\n\tshowInitWaitingMessage: boolean;\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialRolesState: RolesState = adapter.getInitialState({\n\tisAllRolesLoaded: false,\n\tqueryRowsCount: 0,\n\tqueryResult: [],\n\tlastCreatedRoleId: undefined,\n\tlistLoading: false,\n\tactionsloading: false,\n\tlastQuery: new QueryParamsModel({}),\n\tshowInitWaitingMessage: true\n});\n\nexport function rolesReducer(state = initialRolesState, action: RoleActions): RolesState {\n\tswitch (action.type) {\n\t\tcase RoleActionTypes.RolesPageToggleLoading:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlistLoading: action.payload.isLoading,\n\t\t\t\tlastCreatedRoleId: undefined\n\t\t\t};\n\t\tcase RoleActionTypes.RolesActionToggleLoading:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tactionsloading: action.payload.isLoading\n\t\t\t};\n\t\tcase RoleActionTypes.RoleOnServerCreated:\n\t\t\treturn {\n\t\t\t\t...state\n\t\t\t};\n\t\tcase RoleActionTypes.RoleCreated:\n\t\t\treturn adapter.addOne(action.payload.role, {\n\t\t\t\t...state,\n\t\t\t\tlastCreatedRoleId: action.payload.role.id\n\t\t\t});\n\t\tcase RoleActionTypes.RoleUpdated:\n\t\t\treturn adapter.updateOne(action.payload.partialrole, state);\n\t\tcase RoleActionTypes.RoleDeleted:\n\t\t\treturn adapter.removeOne(action.payload.id, state);\n\t\tcase RoleActionTypes.AllRolesLoaded:\n\t\t\treturn adapter.addMany(action.payload.roles, {\n\t\t\t\t...state,\n\t\t\t\tisAllRolesLoaded: true\n\t\t\t});\n\t\tcase RoleActionTypes.RolesPageCancelled:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlistLoading: false,\n\t\t\t\tqueryRowsCount: 0,\n\t\t\t\tqueryResult: [],\n\t\t\t\tlastQuery: new QueryParamsModel({})\n\t\t\t};\n\t\tcase RoleActionTypes.RolesPageLoaded:\n\t\t\treturn adapter.addMany(action.payload.roles, {\n\t\t\t\t...initialRolesState,\n\t\t\t\tlistLoading: false,\n\t\t\t\tqueryRowsCount: action.payload.totalCount,\n\t\t\t\tqueryResult: action.payload.roles,\n\t\t\t\tlastQuery: action.payload.page,\n\t\t\t\tshowInitWaitingMessage: false\n\t\t\t});\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nexport const { selectAll, selectEntities, selectIds, selectTotal } = adapter.getSelectors();\n","import { Role } from './../_models/role.model';\n\n// NGRX\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\n// CRUD\nimport { QueryResultsModel, HttpExtenstionsModel } from '../../_base/crud';\n// State\nimport { RolesState } from '../_reducers/role.reducers';\nimport * as fromRole from '../_reducers/role.reducers';\nimport { each } from 'lodash';\n\nexport const selectRolesState = createFeatureSelector('roles');\n\nexport const selectRoleById = (roleId: number) =>\n\tcreateSelector(selectRolesState, rolesState => rolesState.entities[roleId]);\n\nexport const selectAllRoles = createSelector(selectRolesState, fromRole.selectAll);\n\nexport const selectAllRolesIds = createSelector(selectRolesState, fromRole.selectIds);\n\nexport const allRolesLoaded = createSelector(selectRolesState, rolesState => rolesState.isAllRolesLoaded);\n\nexport const selectRolesPageLoading = createSelector(selectRolesState, rolesState => rolesState.listLoading);\n\nexport const selectRolesActionLoading = createSelector(selectRolesState, rolesState => rolesState.actionsloading);\n\nexport const selectLastCreatedRoleId = createSelector(selectRolesState, rolesState => rolesState.lastCreatedRoleId);\n\nexport const selectRolesShowInitWaitingMessage = createSelector(\n\tselectRolesState,\n\trolesState => rolesState.showInitWaitingMessage\n);\n\nexport const selectQueryResult = createSelector(selectRolesState, rolesState => {\n\tconst items: Role[] = [];\n\teach(rolesState.entities, element => {\n\t\titems.push(element);\n\t});\n\tconst httpExtension = new HttpExtenstionsModel();\n\tconst result: Role[] = httpExtension.sortArray(items, rolesState.lastQuery.sortField, rolesState.lastQuery.sortOrder);\n\n\treturn new QueryResultsModel(rolesState.queryResult, rolesState.queryRowsCount);\n});\n","// NGRX\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\n// CRUD\nimport { QueryResultsModel, HttpExtenstionsModel } from '../../_base/crud';\n// State\nimport { UsersState } from '../_reducers/user.reducers';\nimport { each } from 'lodash';\nimport { User } from '../_models/user.model';\n\nexport const selectUsersState = createFeatureSelector('users');\n\nexport const selectUserById = (userId: number) =>\n\tcreateSelector(selectUsersState, usersState => usersState.entities[userId]);\n\nexport const selectUsersPageLoading = createSelector(selectUsersState, usersState => {\n\treturn usersState.listLoading;\n});\n\nexport const selectUsersActionLoading = createSelector(selectUsersState, usersState => usersState.actionsloading);\n\nexport const selectLastCreatedUserId = createSelector(selectUsersState, usersState => usersState.lastCreatedUserId);\n\nexport const selectUsersPageLastQuery = createSelector(selectUsersState, usersState => usersState.lastQuery);\n\nexport const selectUsersInStore = createSelector(selectUsersState, usersState => {\n\tconst items: User[] = [];\n\teach(usersState.entities, element => {\n\t\titems.push(element);\n\t});\n\tconst httpExtension = new HttpExtenstionsModel();\n\tconst result: User[] = httpExtension.sortArray(items, usersState.lastQuery.sortField, usersState.lastQuery.sortOrder);\n\treturn new QueryResultsModel(result, usersState.totalCount, '');\n});\n\nexport const selectUsersShowInitWaitingMessage = createSelector(\n\tselectUsersState,\n\tusersState => usersState.showInitWaitingMessage\n);\n\nexport const selectHasUsersInStore = createSelector(selectUsersState, queryResult => {\n\tif (!queryResult.totalCount) {\n\t\treturn false;\n\t}\n\n\treturn true;\n});\n","// NGRX\nimport { Action } from '@ngrx/store';\n// Models\nimport { Permission } from '../_models/permission.model';\n\nexport enum PermissionActionTypes {\n\tAllPermissionsRequested = '[Init] All Permissions Requested',\n\tAllPermissionsLoaded = '[Init] All Permissions Loaded'\n}\n\nexport class AllPermissionsRequested implements Action {\n\treadonly type = PermissionActionTypes.AllPermissionsRequested;\n}\n\nexport class AllPermissionsLoaded implements Action {\n\treadonly type = PermissionActionTypes.AllPermissionsLoaded;\n\tconstructor(public payload: { permissions: Permission[] }) {}\n}\n\nexport type PermissionActions = AllPermissionsRequested | AllPermissionsLoaded;\n","// NGRX\nimport { Action } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n// CRUD\nimport { User } from '../_models/user.model';\n// Models\nimport { QueryParamsModel } from '../../_base/crud';\n\nexport enum UserActionTypes {\n\tAllUsersRequested = '[Users Module] All Users Requested',\n\tAllUsersLoaded = '[Users API] All Users Loaded',\n\tUserOnServerCreated = '[Edit User Component] User On Server Created',\n\tUserCreated = '[Edit User Dialog] User Created',\n\tUserUpdated = '[Edit User Dialog] User Updated',\n\tUserDeleted = '[Users List Page] User Deleted',\n\tUsersPageRequested = '[Users List Page] Users Page Requested',\n\tUsersPageLoaded = '[Users API] Users Page Loaded',\n\tUsersPageCancelled = '[Users API] Users Page Cancelled',\n\tUsersPageToggleLoading = '[Users] Users Page Toggle Loading',\n\tUsersActionToggleLoading = '[Users] Users Action Toggle Loading'\n}\n\nexport class UserOnServerCreated implements Action {\n\treadonly type = UserActionTypes.UserOnServerCreated;\n\tconstructor(public payload: { user: User }) {}\n}\n\nexport class UserCreated implements Action {\n\treadonly type = UserActionTypes.UserCreated;\n\tconstructor(public payload: { user: User }) {}\n}\n\nexport class UserUpdated implements Action {\n\treadonly type = UserActionTypes.UserUpdated;\n\tconstructor(\n\t\tpublic payload: {\n\t\t\tpartialUser: Update;\n\t\t\tuser: User;\n\t\t}\n\t) {}\n}\n\nexport class UserDeleted implements Action {\n\treadonly type = UserActionTypes.UserDeleted;\n\tconstructor(public payload: { id: number }) {}\n}\n\nexport class UsersPageRequested implements Action {\n\treadonly type = UserActionTypes.UsersPageRequested;\n\tconstructor(public payload: { page: QueryParamsModel }) {}\n}\n\nexport class UsersPageLoaded implements Action {\n\treadonly type = UserActionTypes.UsersPageLoaded;\n\tconstructor(public payload: { users: User[]; totalCount: number; page: QueryParamsModel }) {}\n}\n\nexport class UsersPageCancelled implements Action {\n\treadonly type = UserActionTypes.UsersPageCancelled;\n}\n\nexport class UsersPageToggleLoading implements Action {\n\treadonly type = UserActionTypes.UsersPageToggleLoading;\n\tconstructor(public payload: { isLoading: boolean }) {}\n}\n\nexport class UsersActionToggleLoading implements Action {\n\treadonly type = UserActionTypes.UsersActionToggleLoading;\n\tconstructor(public payload: { isLoading: boolean }) {}\n}\n\nexport type UserActions =\n\t| UserCreated\n\t| UserUpdated\n\t| UserDeleted\n\t| UserOnServerCreated\n\t| UsersPageLoaded\n\t| UsersPageCancelled\n\t| UsersPageToggleLoading\n\t| UsersPageRequested\n\t| UsersActionToggleLoading;\n","// Angular\nimport { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n// RxJS\nimport { tap } from 'rxjs/operators';\nimport { defer, Observable, of } from 'rxjs';\n// NGRX\nimport { Actions, Effect, ofType } from '@ngrx/effects';\nimport { Action, Store } from '@ngrx/store';\n// Auth actions\nimport { AuthActionTypes, Login, Logout, Register, UserRequested } from '../_actions/auth.actions';\n// import { AuthService } from '../_services/index';\nimport { AppState } from '../../reducers';\nimport { environment } from '../../../../environments/environment';\n\n@Injectable()\nexport class AuthEffects {\n\t@Effect({ dispatch: false })\n\tlogin$ = this.actions$.pipe(\n\t\tofType(AuthActionTypes.Login),\n\t\ttap(action => {\n\t\t\tlocalStorage.setItem(environment.authTokenKey, action.payload.authToken);\n\t\t\tthis.store.dispatch(new UserRequested());\n\t\t})\n\t);\n\n\t@Effect({ dispatch: false })\n\tlogout$ = this.actions$.pipe(\n\t\tofType(AuthActionTypes.Logout),\n\t\ttap(() => {\n\t\t\tlocalStorage.removeItem(environment.authTokenKey);\n\t\t\tthis.router.navigate(['/auth/login'], { queryParams: { returnUrl: this.returnUrl } });\n\t\t})\n\t);\n\n\t@Effect({ dispatch: false })\n\tregister$ = this.actions$.pipe(\n\t\tofType(AuthActionTypes.Register),\n\t\ttap(action => {\n\t\t\tlocalStorage.setItem(environment.authTokenKey, action.payload.authToken);\n\t\t})\n\t);\n\n\t// @Effect({dispatch: false})\n\t// loadUser$ = this.actions$\n\t// .pipe(\n\t// ofType(AuthActionTypes.UserRequested),\n\t// withLatestFrom(this.store.pipe(select(isUserLoaded))),\n\t// filter(([action, _isUserLoaded]) => !_isUserLoaded),\n\t// mergeMap(([action, _isUserLoaded]) => this.auth.getUserByToken()),\n\t// tap(_user => {\n\t// if (_user) {\n\t// this.store.dispatch(new UserLoaded({ user: _user }));\n\t// } else {\n\t// this.store.dispatch(new Logout());\n\t// }\n\t// })\n\t// );\n\n\t@Effect()\n\tinit$: Observable = defer(() => {\n\t\tconst userToken = localStorage.getItem(environment.authTokenKey);\n\t\tlet observableResult = of({ type: 'NO_ACTION' });\n\t\tif (userToken) {\n\t\t\tobservableResult = of(new Login({ authToken: userToken }));\n\t\t}\n\t\treturn observableResult;\n\t});\n\n\tprivate returnUrl: string;\n\n\tconstructor(\n\t\tprivate actions$: Actions,\n\t\tprivate router: Router,\n\t\t// private auth: AuthService,\n\t\tprivate store: Store\n\t) {\n\t\tthis.router.events.subscribe(event => {\n\t\t\tif (event instanceof NavigationEnd) {\n\t\t\t\tthis.returnUrl = event.url;\n\t\t\t}\n\t\t});\n\t}\n}\n","// Angular\nimport { Injectable } from '@angular/core';\n// RxJS\nimport { mergeMap, map, tap } from 'rxjs/operators';\nimport { defer, Observable, of } from 'rxjs';\n// NGRX\nimport { Effect, Actions, ofType } from '@ngrx/effects';\nimport { Action } from '@ngrx/store';\n// Services\n// import { AuthService } from '../_services';\n// Actions\nimport { AllPermissionsLoaded, AllPermissionsRequested, PermissionActionTypes } from '../_actions/permission.actions';\n// Models\nimport { Permission } from '../_models/permission.model';\n\n@Injectable()\nexport class PermissionEffects {\n\t// @Effect()\n\t// loadAllPermissions$ = this.actions$\n\t// .pipe(\n\t// ofType(PermissionActionTypes.AllPermissionsRequested),\n\t// mergeMap(() => this.auth.getAllPermissions()),\n\t// map((result: Permission[]) => {\n\t// return new AllPermissionsLoaded({\n\t// permissions: result\n\t// });\n\t// })\n\t// );\n\n\t@Effect()\n\tinit$: Observable = defer(() => {\n\t\treturn of(new AllPermissionsRequested());\n\t});\n\n\tconstructor(private actions$: Actions) // private auth: AuthService\n\t{}\n}\n","// Angular\nimport { Injectable } from '@angular/core';\n// RxJS\nimport { of, Observable, defer, forkJoin } from 'rxjs';\nimport { mergeMap, map, withLatestFrom, filter, tap } from 'rxjs/operators';\n// NGRX\nimport { Effect, Actions, ofType } from '@ngrx/effects';\nimport { Store, select, Action } from '@ngrx/store';\n// CRUD\nimport { QueryResultsModel, QueryParamsModel } from '../../_base/crud';\n// Services\n// import { AuthService } from '../_services';\n// State\nimport { AppState } from '../../../core/reducers';\n// Selectors\nimport { allRolesLoaded } from '../_selectors/role.selectors';\n// Actions\nimport {\n\tAllRolesLoaded,\n\tAllRolesRequested,\n\tRoleActionTypes,\n\tRolesPageRequested,\n\tRolesPageLoaded,\n\tRoleUpdated,\n\tRolesPageToggleLoading,\n\tRoleDeleted,\n\tRoleOnServerCreated,\n\tRoleCreated,\n\tRolesActionToggleLoading\n} from '../_actions/role.actions';\n\n@Injectable()\nexport class RoleEffects {\n\tshowPageLoadingDistpatcher = new RolesPageToggleLoading({ isLoading: true });\n\thidePageLoadingDistpatcher = new RolesPageToggleLoading({ isLoading: false });\n\n\tshowActionLoadingDistpatcher = new RolesActionToggleLoading({ isLoading: true });\n\thideActionLoadingDistpatcher = new RolesActionToggleLoading({ isLoading: false });\n\n\t// @Effect()\n\t// loadAllRoles$ = this.actions$\n\t// .pipe(\n\t// ofType(RoleActionTypes.AllRolesRequested),\n\t// withLatestFrom(this.store.pipe(select(allRolesLoaded))),\n\t// filter(([action, isAllRolesLoaded]) => !isAllRolesLoaded),\n\t// mergeMap(() => this.auth.getAllRoles()),\n\t// map(roles => {\n\t// return new AllRolesLoaded({roles});\n\t// })\n\t// );\n\n\t// @Effect()\n\t// loadRolesPage$ = this.actions$\n\t// .pipe(\n\t// ofType(RoleActionTypes.RolesPageRequested),\n\t// mergeMap(( { payload } ) => {\n\t// this.store.dispatch(this.showPageLoadingDistpatcher);\n\t// const requestToServer = this.auth.findRoles(payload.page);\n\t// const lastQuery = of(payload.page);\n\t// return forkJoin(requestToServer, lastQuery);\n\t// }),\n\t// map(response => {\n\t// const result: QueryResultsModel = response[0];\n\t// const lastQuery: QueryParamsModel = response[1];\n\t// this.store.dispatch(this.hidePageLoadingDistpatcher);\n\n\t// return new RolesPageLoaded({\n\t// roles: result.items,\n\t// totalCount: result.totalCount,\n\t// page: lastQuery\n\t// });\n\t// }),\n\t// );\n\n\t// @Effect()\n\t// deleteRole$ = this.actions$\n\t// .pipe(\n\t// ofType(RoleActionTypes.RoleDeleted),\n\t// mergeMap(({ payload }) => {\n\t// this.store.dispatch(this.showActionLoadingDistpatcher);\n\t// return this.auth.deleteRole(payload.id);\n\t// }\n\t// ),\n\t// map(() => {\n\t// return this.hideActionLoadingDistpatcher;\n\t// }),\n\t// );\n\n\t// @Effect()\n\t// updateRole$ = this.actions$\n\t// .pipe(\n\t// ofType(RoleActionTypes.RoleUpdated),\n\t// mergeMap(({ payload }) => {\n\t// this.store.dispatch(this.showActionLoadingDistpatcher);\n\t// return this.auth.updateRole(payload.role);\n\t// }),\n\t// map(() => {\n\t// return this.hideActionLoadingDistpatcher;\n\t// }),\n\t// );\n\n\t// @Effect()\n\t// createRole$ = this.actions$\n\t// .pipe(\n\t// ofType(RoleActionTypes.RoleOnServerCreated),\n\t// mergeMap(( { payload } ) => {\n\t// this.store.dispatch(this.showActionLoadingDistpatcher);\n\t// return this.auth.createRole(payload.role).pipe(\n\t// tap(res => {\n\t// this.store.dispatch(new RoleCreated({ role: res }));\n\t// })\n\t// );\n\t// }),\n\t// map(() => {\n\t// return this.hideActionLoadingDistpatcher;\n\t// }),\n\t// );\n\n\t@Effect()\n\tinit$: Observable = defer(() => {\n\t\treturn of(new AllRolesRequested());\n\t});\n\n\tconstructor(\n\t\tprivate actions$: Actions,\n\t\t// private auth: AuthService,\n\t\tprivate store: Store\n\t) {}\n}\n","// Actions\nimport { AuthActions, AuthActionTypes } from '../_actions/auth.actions';\n// Models\nimport { User } from '../_models/user.model';\n\nexport interface AuthState {\n\tloggedIn: boolean;\n\tauthToken: string;\n\tuser: User;\n\tisUserLoaded: boolean;\n}\n\nexport const initialAuthState: AuthState = {\n\tloggedIn: false,\n\tauthToken: undefined,\n\tuser: undefined,\n\tisUserLoaded: false\n};\n\nexport function authReducer(state = initialAuthState, action: AuthActions): AuthState {\n\tswitch (action.type) {\n\t\tcase AuthActionTypes.Login: {\n\t\t\tconst _token: string = action.payload.authToken;\n\t\t\treturn {\n\t\t\t\tloggedIn: true,\n\t\t\t\tauthToken: _token,\n\t\t\t\tuser: undefined,\n\t\t\t\tisUserLoaded: false\n\t\t\t};\n\t\t}\n\n\t\tcase AuthActionTypes.Register: {\n\t\t\tconst _token: string = action.payload.authToken;\n\t\t\treturn {\n\t\t\t\tloggedIn: true,\n\t\t\t\tauthToken: _token,\n\t\t\t\tuser: undefined,\n\t\t\t\tisUserLoaded: false\n\t\t\t};\n\t\t}\n\n\t\tcase AuthActionTypes.Logout:\n\t\t\treturn initialAuthState;\n\n\t\tcase AuthActionTypes.UserLoaded: {\n\t\t\tconst _user: User = action.payload.user;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tuser: _user,\n\t\t\t\tisUserLoaded: true\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n","// Angular\nimport { Injectable } from '@angular/core';\n// RxJS\nimport { mergeMap, map, tap } from 'rxjs/operators';\nimport { Observable, defer, of, forkJoin } from 'rxjs';\n// NGRX\nimport { Effect, Actions, ofType } from '@ngrx/effects';\nimport { Store, select, Action } from '@ngrx/store';\n// CRUD\nimport { QueryResultsModel, QueryParamsModel } from '../../_base/crud';\n// Services\n// import { AuthService } from '../../../core/auth/_services';\n// State\nimport { AppState } from '../../../core/reducers';\nimport {\n\tUserActionTypes,\n\tUsersPageRequested,\n\tUsersPageLoaded,\n\tUserCreated,\n\tUserDeleted,\n\tUserUpdated,\n\tUserOnServerCreated,\n\tUsersActionToggleLoading,\n\tUsersPageToggleLoading\n} from '../_actions/user.actions';\n\n@Injectable()\nexport class UserEffects {\n\tshowPageLoadingDistpatcher = new UsersPageToggleLoading({ isLoading: true });\n\thidePageLoadingDistpatcher = new UsersPageToggleLoading({ isLoading: false });\n\n\tshowActionLoadingDistpatcher = new UsersActionToggleLoading({ isLoading: true });\n\thideActionLoadingDistpatcher = new UsersActionToggleLoading({ isLoading: false });\n\n\t// @Effect()\n\t// loadUsersPage$ = this.actions$\n\t// .pipe(\n\t// ofType(UserActionTypes.UsersPageRequested),\n\t// mergeMap(({ payload }) => {\n\t// this.store.dispatch(this.showPageLoadingDistpatcher);\n\t// const requestToServer = this.auth.findUsers(payload.page);\n\t// const lastQuery = of(payload.page);\n\t// return forkJoin(requestToServer, lastQuery);\n\t// }),\n\t// map(response => {\n\t// // const result: QueryResultsModel = response[0];\n\t// const lastQuery: QueryParamsModel = response[1];\n\t// // return new UsersPageLoaded({\n\t// // users: result.items,\n\t// // totalCount: result.totalCount,\n\t// // page: lastQuery\n\t// // });\n\t// }),\n\t// );\n\n\t// @Effect()\n\t// deleteUser$ = this.actions$\n\t// .pipe(\n\t// ofType(UserActionTypes.UserDeleted),\n\t// mergeMap(({ payload }) => {\n\t// this.store.dispatch(this.showActionLoadingDistpatcher);\n\t// return this.auth.deleteUser(payload.id);\n\t// }\n\t// ),\n\t// map(() => {\n\t// return this.hideActionLoadingDistpatcher;\n\t// }),\n\t// );\n\n\t// @Effect()\n\t// updateUser$ = this.actions$\n\t// .pipe(\n\t// ofType(UserActionTypes.UserUpdated),\n\t// mergeMap(({ payload }) => {\n\t// this.store.dispatch(this.showActionLoadingDistpatcher);\n\t// return this.auth.updateUser(payload.user);\n\t// }),\n\t// map(() => {\n\t// return this.hideActionLoadingDistpatcher;\n\t// }),\n\t// );\n\n\t// @Effect()\n\t// createUser$ = this.actions$\n\t// .pipe(\n\t// ofType(UserActionTypes.UserOnServerCreated),\n\t// mergeMap(( { payload } ) => {\n\t// this.store.dispatch(this.showActionLoadingDistpatcher);\n\t// return this.auth.createUser(payload.user).pipe(\n\t// tap(res => {\n\t// this.store.dispatch(new UserCreated({ user: res }));\n\t// })\n\t// );\n\t// }),\n\t// map(() => {\n\t// return this.hideActionLoadingDistpatcher;\n\t// }),\n\t// );\n\n\tconstructor(\n\t\tprivate actions$: Actions,\n\t\t// private auth: AuthService,\n\t\tprivate store: Store\n\t) {}\n}\n","// NGRX\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { createFeatureSelector } from '@ngrx/store';\n// Actions\nimport { PermissionActionTypes, PermissionActions } from '../_actions/permission.actions';\n// Models\nimport { Permission } from '../_models/permission.model';\n\nexport interface PermissionsState extends EntityState {\n\t_isAllPermissionsLoaded: boolean;\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialPermissionsState: PermissionsState = adapter.getInitialState({\n\t_isAllPermissionsLoaded: false\n});\n\nexport function permissionsReducer(state = initialPermissionsState, action: PermissionActions): PermissionsState {\n\tswitch (action.type) {\n\t\tcase PermissionActionTypes.AllPermissionsRequested:\n\t\t\treturn { ...state, _isAllPermissionsLoaded: false };\n\t\tcase PermissionActionTypes.AllPermissionsLoaded:\n\t\t\treturn adapter.addMany(action.payload.permissions, {\n\t\t\t\t...state,\n\t\t\t\t_isAllPermissionsLoaded: true\n\t\t\t});\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nexport const getRoleState = createFeatureSelector('permissions');\n\nexport const { selectAll, selectEntities, selectIds, selectTotal } = adapter.getSelectors();\n","// NGRX\nimport { createFeatureSelector } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\n// Actions\nimport { UserActions, UserActionTypes } from '../_actions/user.actions';\n// CRUD\nimport { QueryParamsModel } from '../../_base/crud';\n// Models\nimport { User } from '../_models/user.model';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface UsersState extends EntityState {\n\tlistLoading: boolean;\n\tactionsloading: boolean;\n\ttotalCount: number;\n\tlastCreatedUserId: number;\n\tlastQuery: QueryParamsModel;\n\tshowInitWaitingMessage: boolean;\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialUsersState: UsersState = adapter.getInitialState({\n\tlistLoading: false,\n\tactionsloading: false,\n\ttotalCount: 0,\n\tlastQuery: new QueryParamsModel({}),\n\tlastCreatedUserId: undefined,\n\tshowInitWaitingMessage: true\n});\n\nexport function usersReducer(state = initialUsersState, action: UserActions): UsersState {\n\tswitch (action.type) {\n\t\tcase UserActionTypes.UsersPageToggleLoading:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlistLoading: action.payload.isLoading,\n\t\t\t\tlastCreatedUserId: undefined\n\t\t\t};\n\t\tcase UserActionTypes.UsersActionToggleLoading:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tactionsloading: action.payload.isLoading\n\t\t\t};\n\t\tcase UserActionTypes.UserOnServerCreated:\n\t\t\treturn {\n\t\t\t\t...state\n\t\t\t};\n\t\tcase UserActionTypes.UserCreated:\n\t\t\treturn adapter.addOne(action.payload.user, {\n\t\t\t\t...state,\n\t\t\t\tlastCreatedUserId: action.payload.user.id\n\t\t\t});\n\t\tcase UserActionTypes.UserUpdated:\n\t\t\treturn adapter.updateOne(action.payload.partialUser, state);\n\t\tcase UserActionTypes.UserDeleted:\n\t\t\treturn adapter.removeOne(action.payload.id, state);\n\t\tcase UserActionTypes.UsersPageCancelled:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlistLoading: false,\n\t\t\t\tlastQuery: new QueryParamsModel({})\n\t\t\t};\n\t\tcase UserActionTypes.UsersPageLoaded: {\n\t\t\treturn adapter.addMany(action.payload.users, {\n\t\t\t\t...initialUsersState,\n\t\t\t\ttotalCount: action.payload.totalCount,\n\t\t\t\tlastQuery: action.payload.page,\n\t\t\t\tlistLoading: false,\n\t\t\t\tshowInitWaitingMessage: false\n\t\t\t});\n\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nexport const getUserState = createFeatureSelector('users');\n\nexport const { selectAll, selectEntities, selectIds, selectTotal } = adapter.getSelectors();\n","// NGRX\nimport { createFeatureSelector, createSelector } from '@ngrx/store';\n// State\nimport { PermissionsState } from '../_reducers/permission.reducers';\nimport * as fromPermissions from '../_reducers/permission.reducers';\n\nexport const selectPermissionsState = createFeatureSelector('permissions');\n\nexport const selectPermissionById = (permissionId: number) =>\n\tcreateSelector(selectPermissionsState, ps => ps.entities[permissionId]);\n\nexport const selectAllPermissions = createSelector(selectPermissionsState, fromPermissions.selectAll);\n\nexport const selectAllPermissionsIds = createSelector(selectPermissionsState, fromPermissions.selectIds);\n\nexport const allPermissionsLoaded = createSelector(selectPermissionsState, ps => ps._isAllPermissionsLoaded);\n","// NGRX\nimport { createSelector } from '@ngrx/store';\n// Lodash\nimport { each, find, some } from 'lodash';\n// Selectors\nimport { selectAllRoles } from './role.selectors';\nimport { selectAllPermissions } from './permission.selectors';\n// Models\nimport { Role } from '../_models/role.model';\nimport { Permission } from '../_models/permission.model';\n\nexport const selectAuthState = state => state.auth;\n\nexport const isLoggedIn = createSelector(selectAuthState, auth => auth.loggedIn);\n\nexport const isLoggedOut = createSelector(isLoggedIn, loggedIn => !loggedIn);\n\nexport const currentAuthToken = createSelector(selectAuthState, auth => auth.authToken);\n\nexport const isUserLoaded = createSelector(selectAuthState, auth => auth.isUserLoaded);\n\nexport const currentUser = createSelector(selectAuthState, auth => auth.user);\n\nexport const currentUserRoleIds = createSelector(currentUser, user => {\n\tif (!user) {\n\t\treturn [];\n\t}\n\n\treturn user.roles;\n});\n\nexport const currentUserPermissionsIds = createSelector(\n\tcurrentUserRoleIds,\n\tselectAllRoles,\n\t(userRoleIds: number[], allRoles: Role[]) => {\n\t\tconst result = getPermissionsIdsFrom(userRoleIds, allRoles);\n\t\treturn result;\n\t}\n);\n\nexport const checkHasUserPermission = (permissionId: number) =>\n\tcreateSelector(currentUserPermissionsIds, (ids: number[]) => {\n\t\treturn ids.some(id => id === permissionId);\n\t});\n\nexport const currentUserPermissions = createSelector(\n\tcurrentUserPermissionsIds,\n\tselectAllPermissions,\n\t(permissionIds: number[], allPermissions: Permission[]) => {\n\t\tconst result: Permission[] = [];\n\t\teach(permissionIds, id => {\n\t\t\tconst userPermission = find(allPermissions, elem => elem.id === id);\n\t\t\tif (userPermission) {\n\t\t\t\tresult.push(userPermission);\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n);\n\nfunction getPermissionsIdsFrom(userRolesIds: number[] = [], allRoles: Role[] = []): number[] {\n\tconst userRoles: Role[] = [];\n\teach(userRolesIds, (_id: number) => {\n\t\tconst userRole = find(allRoles, (_role: Role) => _role.id === _id);\n\t\tif (userRole) {\n\t\t\tuserRoles.push(userRole);\n\t\t}\n\t});\n\n\tconst result: number[] = [];\n\teach(userRoles, (_role: Role) => {\n\t\teach(_role.permissions, id => {\n\t\t\tif (!some(result, _id => _id === id)) {\n\t\t\t\tresult.push(id);\n\t\t\t}\n\t\t});\n\t});\n\treturn result;\n}\n","// Angular\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\n// RxJS\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n// NGRX\nimport { select, Store } from '@ngrx/store';\n// Auth reducers and selectors\nimport { AppState } from 'app/core/reducers';\nimport { isLoggedIn } from '../_selectors/auth.selectors';\nimport { MenuAsideService } from 'app/core/_base/layout';\nimport { Toaster } from 'ngx-toast-notifications';\nimport { AuthService } from '../_services/auth.service';\n\ndeclare let $: any;\n@Injectable()\nexport class AuthGuard implements CanActivate {\n\tconstructor(\n\t\tprivate store: Store,\n\t\tprivate toaster: Toaster,\n\t\tprivate menuService: MenuAsideService,\n\t\tprivate authService: AuthService\n\t) {}\n\n\tshowToast(text, caption, type) {\n\t\tthis.toaster.open({\n\t\t\ttext,\n\t\t\tcaption,\n\t\t\ttype\n\t\t});\n\t}\n\n\turlKontrol(currentUrl: string, targetUrl: string): boolean {\n\t\tif (!targetUrl) {\n\t\t\treturn false;\n\t\t}\n\t\tcurrentUrl = currentUrl.substring(1);\n\t\tlet yasak = false;\n\t\ttargetUrl.split('/').forEach((item, index) => {\n\t\t\tif (currentUrl.split('/')[index] !== item) {\n\t\t\t\tyasak = true;\n\t\t\t}\n\t\t});\n\t\treturn !yasak;\n\t\t// const reMapCurrent = currentUrl.substring(1).split(\"/\").slice(0, 2).join(\"/\");\n\t\t// const reMapTarget = targetUrl.indexOf('/:') === -1 ? targetUrl.substring(0, targetUrl.indexOf('/:')) : targetUrl\n\n\t\t// const parametreLokasyon = targetUrl.indexOf('/:');\n\t\t// if (parametreLokasyon === -1) {\n\t\t// \treturn currentUrl === targetUrl;\n\t\t// } else {\n\t\t// \treturn currentUrl.substring(0, parametreLokasyon) === targetUrl.substring(0, parametreLokasyon);\n\t\t// }\n\t}\n\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n\t\treturn this.store.pipe(\n\t\t\tselect(isLoggedIn),\n\t\t\ttap(loggedIn => {\n\t\t\t\tif (loggedIn) {\n\t\t\t\t\tif (!this.authService.isAuthenticated()) {\n\t\t\t\t\t\tthis.showToast('', 'Kullanım Süresi Doldu.Tekrar giriş yapınız', 'danger');\n\t\t\t\t\t\tthis.authService.logout();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.menuService.UserMenuItems.length === 0) {\n\t\t\t\t\t\tthis.menuService.getMenu().subscribe(() => {\n\t\t\t\t\t\t\tif (this.menuService.UserMenuItems.length === 0) {\n\t\t\t\t\t\t\t\tthis.authService.logout();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!this.menuService.UserMenuItems.some(x => this.urlKontrol(state.url, x.txtTargetUrl))) {\n\t\t\t\t\t\t\t\tthis.authService.logout();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.menuService.UserMenuItems.some(x => this.urlKontrol(state.url, x.txtTargetUrl))) {\n\t\t\t\t\t\t\tthis.authService.logout();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.authService.logout();\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n}\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { LayoutConfigService, SplashScreenService, TranslationService } from 'app/core/_base/layout';\nimport { AuthNoticeService } from 'app/core/auth';\n\n@Component({\n\tselector: 'kt-auth',\n\ttemplateUrl: './auth.component.html',\n\tstyleUrls: ['./auth.component.scss'],\n\tencapsulation: ViewEncapsulation.None\n})\nexport class AuthComponent implements OnInit {\n\t// Public properties\n\tprivate today: number = Date.now();\n\tprivate headerLogo: string;\n\n\t/**\n\t * Component constructor\n\t *\n\t * @param el\n\t * @param render\n\t * @param layoutConfigService: LayoutConfigService\n\t * @param authNoticeService: authNoticeService\n\t * @param translationService: TranslationService\n\t * @param splashScreenService: SplashScreenService\n\t */\n\tconstructor(\n\t\tprivate layoutConfigService: LayoutConfigService,\n\t\tpublic authNoticeService: AuthNoticeService,\n\t\tprivate translationService: TranslationService,\n\t\tprivate splashScreenService: SplashScreenService\n\t) {}\n\n\turlx = 0;\n\tngOnInit(): void {\n\t\tthis.translationService.setLanguage(this.translationService.getSelectedLanguage());\n\t\tthis.headerLogo = this.layoutConfigService.getLogo();\n\n\t\tthis.splashScreenService.hide();\n\t}\n}\n","
\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t
\n\t\t\n\t\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ConfigService } from 'app/core/config.service';\nimport { LoginRequest } from '../_models/login/login.request';\nimport { KullaniciKayitRequest } from '../_models/login/register.request';\nimport { KullaniciKayitResponse } from '../_models/login/register.response';\n\nimport { PanaromaLoginRequest } from '../_models/login/panaromalogin.request';\nimport { PanaromaLoginResponse } from '../_models/login/panaromaLogin.response';\nimport { LoginResponse } from '../_models/login/login.response';\n\n@Injectable()\nexport class LoginService {\n\tconstructor(private http: HttpClient, private configService: ConfigService) {}\n\n\t// #region Eski sistem yeni token mekanizması testleri bittiğinde kaldırılacak\n\tplakaLogin(txtPlaka: string): Observable {\n\t\tconst req: LoginRequest = { txtPlaka, kullaniciAd: '', sifre: '' };\n\t\tconst headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n\t\treturn this.http.post(`${this.configService.config.apiUrl}api/Kullanici/AracKullaniciGiris`, req, {\n\t\t\theaders\n\t\t});\n\t}\n\n\tsorumluGirisi(req: LoginRequest): Observable {\n\t\tconst headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n\t\treturn this.http.post(\n\t\t\t`${this.configService.config.apiUrl}api/Kullanici/SorumluGirisi`,\n\t\t\treq,\n\t\t\t{ headers }\n\t\t);\n\t}\n\n\tpanoramaGirisi(req: PanaromaLoginRequest): Observable {\n\t\tconst headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n\t\treturn this.http.post(\n\t\t\t`${this.configService.config.apiUrl}api/Kullanici/PanoramaGirisi`,\n\t\t\treq,\n\t\t\t{ headers }\n\t\t); // panaromadan girerken url alması için\n\t}\n\n\tkullaniciKayit(req: KullaniciKayitRequest): Observable {\n\t\tconst headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n\t\treturn this.http.post(\n\t\t\t`${this.configService.config.apiUrl}api/Kullanici/KullaniciKayit`,\n\t\t\treq,\n\t\t\t{ headers }\n\t\t);\n\t}\n\n\tgetLogoFind(subdomain: string): Observable {\n\t\tconst params = new HttpParams().set('subdomain', subdomain);\n\t\treturn this.http.get(this.configService.config.apiUrl + 'api/Login/LogoFind', {\n\t\t\tparams: params\n\t\t});\n\t\t// #endregion\n\t}\n}\n","\n\n\n\n\n\n\n\n\n","// Angular\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n// RxJS\nimport { Observable, Subject } from 'rxjs';\n// Auth\nimport { AuthNoticeService } from '../../../../core/auth';\n\nimport { NgbTabsetConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport swal from 'sweetalert2';\nimport { ConfigService } from '../../../../core/config.service';\nimport { enuUserType, LoginV2Request } from 'app/core/auth/_models/login/loginV2.request';\nimport { AuthService } from 'app/core/auth/_services/auth.service';\nimport { MenuAsideService } from 'app/core/_base/layout';\nimport { LastikAramaService } from 'app/core/randevu/lastik-arama/services/lastik-arama.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { PlakaSorgulaResponse } from 'app/core/randevu/lastik-arama/models/plaka-sorgula.response';\nimport { Paging, PlakaRandevuListesiRequest } from 'app/core/randevu/lastik-arama/models/plaka-randevu-listesi.request';\nimport { LoginService } from 'app/core/auth/_services';\n\n/**\n * ! Just example => Should be removed in development\n */\nconst DEMO_PARAMS = {\n\tEMAIL: 'admin@demo.com',\n\tPASSWORD: 'demo'\n};\n\n@Component({\n\tselector: 'kt-login',\n\ttemplateUrl: './login.component.html',\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [NgbTabsetConfig]\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n\t// Public params\n\tpublic plakaForm: FormGroup;\n\tpublic loading = false;\n\tprivate isLoggedIn$: Observable;\n\tprivate errors: any = [];\n\tpublic today: number = Date.now();\n\t// #region ADDED BY MİYA\n\tpublic exampleTabset: {\n\t\tbeforeCodeTitle: string;\n\t\tviewCode: string;\n\t\tisCodeVisible: boolean;\n\t\tisExampleExpanded: boolean;\n\t};\n\tprivate randevuListesiRequest: PlakaRandevuListesiRequest = new PlakaRandevuListesiRequest();\n\n\tprivate tabset = {\n\t\tbeforeCodeTitle: 'Tabset',\n\t\tviewCode: ``,\n\t\tisCodeVisible: false,\n\t\tisExampleExpanded: true\n\t};\n\t// #endregion ADDED BY MİYA\n\n\tprivate unsubscribe: Subject;\n\tprivate authVerision: number;\n\tprivate returnUrl: any;\n\tsubDomainliDist: any;\n\tprivate loginType: string;\n\tprivate plaka: string;\n\n\t// Read more: => https://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/\n\n\t/**\n\t * Component constructor\n\t *\n\t * @param router: Router\n\t * @param auth: AuthService\n\t * @param authNoticeService: AuthNoticeService\n\t * @param translate: TranslateService\n\t * @param store: Store\n\t * @param fb: FormBuilder\n\t * @param cdr\n\t * @param route\n\t */\n\n\tconstructor(\n\t\tprivate lastikAramaService: LastikAramaService,\n\t\tprivate loginService: LoginService,\n\t\tprivate router: Router,\n\t\tprivate authNoticeService: AuthNoticeService,\n\t\tprivate fb: FormBuilder,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\tpublic snackBar: MatSnackBar,\n\t\tprivate route: ActivatedRoute,\n\t\tprivate configService: ConfigService,\n\t\tprivate authService: AuthService,\n\t\tprivate menuService: MenuAsideService\n\t) {\n\t\tthis.unsubscribe = new Subject();\n\t\tthis.authVerision = configService.config.authVersion;\n\t}\n\n\t/**\n\t * @ Lifecycle sequences => https://angular.io/guide/lifecycle-hooks\n\t */\n\n\t/**\n\t * On init\n\t */\n\tpublic girisParam;\n\tpublic imageBase64;\n\tngOnInit(): void {\n\t\tconst link = window.location.href;\n\t\tlocalStorage.removeItem('sipNo');\n\n\t\tthis.route.params.subscribe(f => {\n\t\t\tif (f) {\n\t\t\t\tthis.girisParam = f;\n\t\t\t\tif (this.girisParam.bayiad !== null && this.girisParam.bayiad !== undefined) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\t\t\t\tthis.lastikAramaService.getSubDomain(this.girisParam.bayiad).subscribe(f => {});\n\t\t\t\t\tthis.loginService.getLogoFind(this.girisParam.bayiad).subscribe(f => {\n\t\t\t\t\t\tthis.imageBase64 = f;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (localStorage.getItem('reloaded') === 'false' || localStorage.getItem('reloaded') === null) {\n\t\t\tlocalStorage.setItem('reloaded', 'true');\n\t\t\tlocation.reload();\n\t\t}\n\n\t\tthis.exampleTabset = this.tabset;\n\n\t\tthis.initLoginForm();\n\n\t\t// redirect back to the returnUrl before login\n\t\tthis.route.queryParams.subscribe(params => {\n\t\t\tthis.returnUrl = params.returnUrl || '/';\n\t\t});\n\t}\n\n\t/**\n\t * On destroy\n\t */\n\tngOnDestroy(): void {\n\t\tthis.authNoticeService.setNotice(null);\n\t\tthis.unsubscribe.next();\n\t\tthis.unsubscribe.complete();\n\t\tthis.loading = false;\n\t}\n\n\tplakaInput(e): void {\n\t\tif (e.data === ' ') {\n\t\t\tconst plaka: string = this.plakaForm.controls.plaka.value;\n\t\t\tthis.plakaForm.controls.plaka.setValue(plaka.trim());\n\t\t}\n\t}\n\n\t/**\n\t * Form initalization\n\t * Default params, validators\n\t */\n\tinitLoginForm(): void {\n\t\t// demo message to show\n\t\tif (!this.authNoticeService.onNoticeChanged$.getValue()) {\n\t\t\tconst initialNotice = `Use account\n\t\t\t${DEMO_PARAMS.EMAIL} and password\n\t\t\t${DEMO_PARAMS.PASSWORD} to continue.`;\n\t\t\tthis.authNoticeService.setNotice(initialNotice, 'info');\n\t\t}\n\n\t\tthis.plakaForm = this.fb.group({\n\t\t\tplaka: [\n\t\t\t\t'',\n\t\t\t\tValidators.compose([\n\t\t\t\t\tValidators.required,\n\t\t\t\t\tValidators.minLength(5),\n\t\t\t\t\tValidators.maxLength(9),\n\t\t\t\t\tValidators.pattern('^[a-zA-Z0-9_]*$')\n\t\t\t\t])\n\t\t\t]\n\t\t});\n\t}\n\n\t/**\n\t * Form Submit\n\t */\n\n\tplakaSubmit(): void {\n\t\tconst controls = this.plakaForm.controls;\n\t\t/** check form */\n\t\tif (this.plakaForm.invalid) {\n\t\t\tObject.keys(controls).forEach(controlName => controls[controlName].markAsTouched());\n\t\t\treturn;\n\t\t}\n\n\t\tthis.loading = true;\n\n\t\tconst authDatav2: LoginV2Request = {\n\t\t\tUserName: controls.plaka.value,\n\t\t\tPassword: null,\n\t\t\tUserType: enuUserType.Plaka\n\t\t};\n\n\t\tthis.authService.login(authDatav2).subscribe(\n\t\t\t() => {\n\t\t\t\tthis.menuService.getMenu().subscribe(() => {\n\t\t\t\t\tthis.loginType = localStorage.getItem('loginType');\n\t\t\t\t\tif (this.loginType === 'plaka') {\n\t\t\t\t\t\tthis.plaka = this.authService.CurrentUser().UserName;\n\t\t\t\t\t}\n\t\t\t\t\tthis.randevuListesiRequest.txtPlaka = this.plaka;\n\t\t\t\t\tthis.randevuListesiRequest.paging = new Paging();\n\t\t\t\t\tthis.randevuListesiRequest.paging.sayfa = 1;\n\t\t\t\t\tthis.lastikAramaService\n\t\t\t\t\t\t.postPlakaRandevuListesi(this.randevuListesiRequest)\n\t\t\t\t\t\t.pipe(takeUntil(this.unsubscribe))\n\t\t\t\t\t\t.subscribe(data => {\n\t\t\t\t\t\t\tif (data.data.length === 0) {\n\t\t\t\t\t\t\t\tif (this.girisParam.bayiad !== undefined && this.girisParam.bayiad !== null) {\n\t\t\t\t\t\t\t\t\t//sublı giriş\n\t\t\t\t\t\t\t\t\tthis.lastikAramaService\n\t\t\t\t\t\t\t\t\t\t.getSubDomain(this.girisParam.bayiad)\n\t\t\t\t\t\t\t\t\t\t.pipe(takeUntil(this.unsubscribe))\n\t\t\t\t\t\t\t\t\t\t.subscribe(response => {\n\t\t\t\t\t\t\t\t\t\t\tthis.subDomainliDist = response.lngDistKod;\n\t\t\t\t\t\t\t\t\t\t\tif (response.bytTip === 1 && response.lngDistKod !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst kayit: PlakaSorgulaResponse = {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlngKod: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tlngKayitYeri: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tlngDistKod: this.subDomainliDist,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsubdanGeldi: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\tlngMiktar: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtErpKod: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtKayitYeri: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtPlaka: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtUnvan: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtAracKullanici: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtCepTelefonu: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttrhIslemTarihi: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\tlngSaklamaHizmeti: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tlngSokmeHizmeti: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtAciklama: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\tlngDepoDizilim: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsaklamaDetayList: [],\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtHizmetVerenEmail: '',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttxtHizmetVerenTel: ''\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\tlocalStorage.setItem('secilenKayit', JSON.stringify(kayit));\n\t\t\t\t\t\t\t\t\t\t\t\tthis.menuService.navigate('hizmet-noktasi-secimi');\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t} else if (response.bytTip === 2 && response.lngDistKod === null) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.authService.kullaniciTipi(true);\n\t\t\t\t\t\t\t\t\t\t\t\t// tip=2 ve dist kodu null döner ise\n\t\t\t\t\t\t\t\t\t\t\t\tthis.router.navigateByUrl(`lastik-arama/${this.girisParam.bayiad}`);\n\n\t\t\t\t\t\t\t\t\t\t\t\t//istek atılacak ve bayi list alınacak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst sipNo = this.girisParam.sipNo;\n\t\t\t\t\t\t\t\t\tif (sipNo !== null && sipNo !== undefined) {\n\t\t\t\t\t\t\t\t\t\tthis.authService.postTrendyolRandevuOku(sipNo).subscribe(f => {\n\t\t\t\t\t\t\t\t\t\t\tif (f.content[0].status !== null && f.content[0].status !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tlocalStorage.setItem('sipNo', sipNo.toString());\n\t\t\t\t\t\t\t\t\t\t\t\tthis.menuService.navigate(`lastik-arama`);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tswal.fire('Hatalı Sipariş Numarası');\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.menuService.navigate(`lastik-arama:${this.girisParam}`);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.menuService.navigate(`lastik-arama:${this.girisParam}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\t(err: HttpErrorResponse) => {\n\t\t\t\tthis.loading = false;\n\t\t\t\tif (err.status === 401) {\n\t\t\t\t\tswal.fire('Hata', 'Belirtilen plaka sistemde bulunamadı.', 'error');\n\t\t\t\t} else {\n\t\t\t\t\tswal.fire('Hata', err.error.ErrorMessage, 'error');\n\t\t\t\t}\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Checking control validation\n\t *\n\t * @param controlName: string => Equals to formControlName\n\t * @param validationType: string => Equals to valitors name\n\t */\n\tisPlakaControlHasError(controlName: string, validationType: string): boolean {\n\t\tconst control = this.plakaForm.controls[controlName];\n\t\tif (!control) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst result = control.hasError(validationType) && (control.dirty || control.touched);\n\t\treturn result;\n\t}\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { AuthNoticeService } from 'app/core/auth';\n// Store\nimport { MenuConfigService } from 'app/core/_base/layout/services/menu-config.service';\nimport { enuUserType, LoginV2Request } from 'app/core/auth/_models/login/loginV2.request';\nimport { AuthService } from 'app/core/auth/_services/auth.service';\nimport { MenuAsideService } from 'app/core/_base/layout';\nimport { Subject } from 'rxjs';\n\n@Component({\n\tselector: 'kt-panaroma-login',\n\ttemplateUrl: './panaroma-login.component.html',\n\tencapsulation: ViewEncapsulation.None\n})\nexport class PanaromaLoginComponent implements OnInit, OnDestroy {\n\ttxtKullaniciAd: string;\n\ttxtAccessToken: string;\n\tconstructor(\n\t\tprivate route: ActivatedRoute,\n\t\tprivate menuConfigService: MenuConfigService,\n\t\tprivate authService: AuthService,\n\t\tprivate menuService: MenuAsideService,\n\t\tprivate authNoticeService: AuthNoticeService\n\t) {\n\t\tthis.route.queryParams.subscribe(params => {\n\t\t\tthis.txtKullaniciAd = params.UserName;\n\t\t\tthis.txtAccessToken = params.AccessToken;\n\t\t});\n\t\tthis.unsubscribe = new Subject();\n\t}\n\n\thizmetNoktasiForm: FormGroup;\n\tloading = false;\n\tprivate unsubscribe: Subject;\n\tngOnDestroy(): void {\n\t\tthis.authNoticeService.setNotice(null);\n\t\tthis.unsubscribe.next();\n\t\tthis.unsubscribe.complete();\n\t}\n\n\tngOnInit(): void {\n\t\tlocalStorage.clear();\n\n\t\tlet hangisayfa: string;\n\t\tthis.route.url.subscribe(url => {\n\t\t\tif (url.length === 2) {\n\t\t\t\thangisayfa = url[1].path;\n\t\t\t} else {\n\t\t\t\thangisayfa = url[1].path + '/' + url[2].path;\n\t\t\t}\n\t\t});\n\n\t\tconst authDatav2: LoginV2Request = {\n\t\t\tUserName: encodeURIComponent(this.txtAccessToken),\n\t\t\tPassword: this.txtKullaniciAd,\n\t\t\tUserType: enuUserType.Token\n\t\t};\n\n\t\tthis.authService.login(authDatav2).subscribe(() => {\n\t\t\tthis.menuConfigService.getSlogan().subscribe(slogan => {\n\t\t\t\tlocalStorage.setItem('sloganAdi1', slogan[0].txtParametreDeger);\n\t\t\t\tlocalStorage.setItem('sloganAdi2', slogan[1].txtParametreDeger);\n\t\t\t});\n\t\t\tthis.menuService.getMenu().subscribe(() => {\n\t\t\t\tthis.menuService.navigate(hangisayfa);\n\t\t\t});\n\t\t});\n\t}\n}\n","\n\n\n\n\n\n\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { MenuConfigService } from 'app/core/_base/layout/services/menu-config.service';\nimport { enuUserType, LoginV2Request } from 'app/core/auth/_models/login/loginV2.request';\nimport { AuthService } from 'app/core/auth/_services/auth.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MenuAsideService } from 'app/core/_base/layout';\nimport { Subject } from 'rxjs';\nimport { AuthNoticeService } from 'app/core/auth';\ndeclare let $: any;\n\n@Component({\n\tselector: 'kt-sorumlu-login',\n\ttemplateUrl: './sorumlugirisi.component.html',\n\t// styleUrls: ['./sorumlugirisi.component.scss'],\n\tencapsulation: ViewEncapsulation.None\n})\nexport class SorumluGirisiLoginComponent implements OnInit {\n\tpublic today: number = Date.now();\n\tpublic hizmetNoktasiForm: FormGroup;\n\tprivate loading = false;\n\tprivate exampleTabset: {\n\t\tbeforeCodeTitle: string;\n\t\tviewCode: string;\n\t\tisCodeVisible: boolean;\n\t\tisExampleExpanded: boolean;\n\t};\n\tprivate tabset = { beforeCodeTitle: 'Tabset', viewCode: ``, isCodeVisible: false, isExampleExpanded: true };\n\n\tconstructor(\n\t\tprivate menuConfigService: MenuConfigService,\n\t\tprivate fb: FormBuilder,\n\t\tprivate authService: AuthService,\n\t\tprivate router: Router,\n\t\tprivate snackBar: MatSnackBar,\n\t\tprivate menuService: MenuAsideService,\n\t\tprivate authNoticeService: AuthNoticeService\n\t) {\n\t\tthis.unsubscribe = new Subject();\n\t}\n\tprivate unsubscribe: Subject;\n\tngOnDestroy(): void {\n\t\t$('.modal').modal('hide');\n\t\tthis.authNoticeService.setNotice(null);\n\t\tthis.unsubscribe.next();\n\t\tthis.unsubscribe.complete();\n\t\tthis.loading = false;\n\t}\n\n\tngOnInit(): void {\n\t\tthis.hizmetNoktasiForm = this.fb.group({\n\t\t\tkullaniciAdi: ['', Validators.compose([Validators.required])],\n\t\t\tsifre: ['', Validators.compose([Validators.required])]\n\t\t});\n\t\tthis.exampleTabset = this.tabset;\n\t}\n\n\tisHizmetNoktasiControlHasError(controlName: string, validationType: string): boolean {\n\t\tconst control = this.hizmetNoktasiForm.controls[controlName];\n\t\tif (!control) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst result = control.hasError(validationType) && (control.dirty || control.touched);\n\t\treturn result;\n\t}\n\n\tsorumluGirisiSubmit(): boolean {\n\t\tconst controls = this.hizmetNoktasiForm.controls;\n\t\tif (this.hizmetNoktasiForm.invalid) {\n\t\t\tObject.keys(controls).forEach(controlName => controls[controlName].markAsTouched());\n\t\t\treturn;\n\t\t}\n\t\tthis.loading = true;\n\n\t\tconst authDatav2: LoginV2Request = {\n\t\t\tUserName: controls.kullaniciAdi.value,\n\t\t\tPassword: controls.sifre.value,\n\t\t\tUserType: enuUserType.PanoramaKullanici\n\t\t};\n\n\t\tthis.authService.login(authDatav2).subscribe(() => {\n\t\t\tthis.menuConfigService.getSlogan().subscribe(slogan => {\n\t\t\t\tlocalStorage.setItem('sloganAdi1', slogan[0].txtParametreDeger);\n\t\t\t\tlocalStorage.setItem('sloganAdi2', slogan[1].txtParametreDeger);\n\t\t\t});\n\t\t\tthis.menuService.getMenu().subscribe(() => {\n\t\t\t\tthis.menuService.navigate();\n\t\t\t});\n\t\t});\n\n\t\treturn false;\n\t}\n\n\tkayitol(): void {\n\t\tthis.router.navigateByUrl('/auth/register');\n\t}\n\n\topenSnackBar(message: string, action: string, className: string): void {\n\t\tthis.snackBar.open(message, action, {\n\t\t\tduration: 2000,\n\t\t\tverticalPosition: 'bottom',\n\t\t\thorizontalPosition: 'end',\n\t\t\tpanelClass: [className]\n\t\t});\n\t\t// $('.mat-snack-bar-container').addClass(className);\n\t}\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { AuthNoticeService } from 'app/core/auth';\n// Store\nimport { MenuConfigService } from 'app/core/_base/layout/services/menu-config.service';\nimport { enuUserType, LoginV2Request } from 'app/core/auth/_models/login/loginV2.request';\nimport { AuthService } from 'app/core/auth/_services/auth.service';\nimport { MenuAsideService } from 'app/core/_base/layout';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n\tselector: 'kt-token-login',\n\ttemplateUrl: './token-login.component.html',\n\tencapsulation: ViewEncapsulation.None\n})\nexport class TokenLoginComponent implements OnInit, OnDestroy {\n\ttxtKullaniciAd: string;\n\ttxtAccessToken: string;\n\tconstructor(\n\t\tprivate route: ActivatedRoute,\n\t\tprivate menuConfigService: MenuConfigService,\n\t\tprivate authService: AuthService,\n\t\tprivate menuService: MenuAsideService,\n\t\tprivate authNoticeService: AuthNoticeService\n\t) {\n\t\tthis.unsubscribe = new Subject();\n\t\tthis.route.queryParams.pipe(takeUntil(this.unsubscribe)).subscribe(params => {\n\t\t\tthis.txtKullaniciAd = params.UserName;\n\t\t\tthis.txtAccessToken = params.AccessToken;\n\t\t});\n\t}\n\n\thizmetNoktasiForm: FormGroup;\n\tloading = false;\n\tprivate unsubscribe: Subject;\n\n\tngOnInit(): void {\n\t\tlocalStorage.clear();\n\n\t\tlet hangisayfa: string;\n\t\tthis.route.url.pipe(takeUntil(this.unsubscribe)).subscribe(url => {\n\t\t\tif (url.length === 2) {\n\t\t\t\thangisayfa = url[1].path;\n\t\t\t} else {\n\t\t\t\thangisayfa = url[1].path + '/' + url[2].path;\n\t\t\t}\n\t\t});\n\n\t\tconst authDatav2: LoginV2Request = {\n\t\t\tUserName: encodeURIComponent(this.txtAccessToken),\n\t\t\tPassword: this.txtKullaniciAd,\n\t\t\tUserType: enuUserType.MiyaToken\n\t\t};\n\n\t\tthis.authService\n\t\t\t.login(authDatav2)\n\t\t\t.pipe(takeUntil(this.unsubscribe))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.menuConfigService\n\t\t\t\t\t.getSlogan()\n\t\t\t\t\t.pipe(takeUntil(this.unsubscribe))\n\t\t\t\t\t.subscribe(slogan => {\n\t\t\t\t\t\tlocalStorage.setItem('sloganAdi1', slogan[0].txtParametreDeger);\n\t\t\t\t\t\tlocalStorage.setItem('sloganAdi2', slogan[1].txtParametreDeger);\n\t\t\t\t\t});\n\t\t\t\tthis.menuService\n\t\t\t\t\t.getMenu()\n\t\t\t\t\t.pipe(takeUntil(this.unsubscribe))\n\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\tthis.menuService.navigate(hangisayfa);\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.authNoticeService.setNotice(null);\n\t\tthis.unsubscribe.next();\n\t\tthis.unsubscribe.complete();\n\t}\n}\n","// Angular\nimport { ModuleWithProviders, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule, LocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n// Material\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n// Translate\nimport { TranslateModule } from '@ngx-translate/core';\n// NGRX\nimport { StoreModule } from '@ngrx/store';\nimport { EffectsModule } from '@ngrx/effects';\n// CRUD\nimport { InterceptService } from '../../../core/_base/crud/';\n// Module components\nimport { AuthComponent } from './auth.component';\nimport { LoginComponent } from './login/login.component';\n// Auth\nimport { AuthEffects, AuthGuard, authReducer } from '../../../core/auth';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { LoginService } from '../../../core/auth/_services';\nimport { RegisterComponent } from './register/register.component';\nimport { PanaromaLoginComponent } from './panaroma-login/panaroma-login.component';\nimport { SorumluGirisiLoginComponent } from './sorumlugirisi/sorumlugirisi.component';\n\nimport { AuthService } from '../../../core/auth/_services/auth.service';\nimport { TokenLoginComponent } from './token-login/token-login.component';\nconst routes: Routes = [\n\t{\n\t\tpath: '',\n\t\tcomponent: AuthComponent,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tpath: 'login',\n\t\t\t\tcomponent: LoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'login/trendyol/:sipNo',\n\t\t\t\tcomponent: LoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'sorumlu-girisi',\n\t\t\t\tcomponent: SorumluGirisiLoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'panaroma-girisi',\n\t\t\t\tcomponent: PanaromaLoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'panaroma-girisi/:id',\n\t\t\t\tcomponent: PanaromaLoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'panaroma-girisi/:id/:id2',\n\t\t\t\tcomponent: PanaromaLoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'token-login',\n\t\t\t\tcomponent: TokenLoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'token-login/:id',\n\t\t\t\tcomponent: TokenLoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'token-login/:id/:id2',\n\t\t\t\tcomponent: TokenLoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: '',\n\t\t\t\tcomponent: LoginComponent,\n\t\t\t\tdata: { returnUrl: window.location.pathname }\n\t\t\t}\n\t\t]\n\t}\n];\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tMatButtonModule,\n\t\tRouterModule.forChild(routes),\n\n\t\tMatInputModule,\n\t\tMatFormFieldModule,\n\t\tMatCheckboxModule,\n\t\tTranslateModule.forChild(),\n\t\tStoreModule.forFeature('auth', authReducer),\n\t\tEffectsModule.forFeature([AuthEffects]),\n\t\tNgbModule\n\t],\n\tproviders: [\n\t\tInterceptService,\n\t\t{\n\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\tuseClass: InterceptService,\n\t\t\tmulti: true\n\t\t}\n\t],\n\texports: [AuthComponent],\n\tdeclarations: [\n\t\tAuthComponent,\n\t\tLoginComponent,\n\t\tRegisterComponent,\n\t\tPanaromaLoginComponent,\n\t\tSorumluGirisiLoginComponent,\n\t\tTokenLoginComponent\n\n\t\t// ForgotPasswordComponent,\n\t\t// AuthNoticeComponent\n\t],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class AuthModule {\n\tstatic forRoot(): ModuleWithProviders {\n\t\treturn {\n\t\t\tngModule: AuthModule,\n\t\t\tproviders: [AuthService, LoginService, AuthGuard]\n\t\t};\n\t}\n}\n","import { FocusMonitor, FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { InjectionToken, Directive, TemplateRef, ComponentFactoryResolver, ApplicationRef, Injector, ViewContainerRef, Inject, ChangeDetectorRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, Optional, Input, HostListener, QueryList, EventEmitter, NgZone, ContentChildren, ViewChild, ContentChild, Output, Self, NgModule } from '@angular/core';\nimport { Subject, Subscription, merge, of, asapScheduler } from 'rxjs';\nimport { startWith, switchMap, take, filter, takeUntil, delay } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { mixinDisableRipple, mixinDisabled, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/a11y';\nimport * as ɵngcc2 from '@angular/material/core';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@angular/cdk/overlay';\nimport * as ɵngcc5 from '@angular/cdk/bidi';\n\nconst _c0 = [\"mat-menu-item\", \"\"];\nconst _c1 = [\"*\"];\nfunction MatMenu_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"keydown\", function MatMenu_ng_template_0_Template_div_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1._handleKeydown($event); })(\"click\", function MatMenu_ng_template_0_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.closed.emit(\"click\"); })(\"@transformMenu.start\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_start_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4._onAnimationStart($event); })(\"@transformMenu.done\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_done_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5._onAnimationDone($event); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r0.panelId)(\"ngClass\", ctx_r0._classList)(\"@transformMenu\", ctx_r0._panelAnimationState);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r0.ariaLabel || null)(\"aria-labelledby\", ctx_r0.ariaLabelledby || null)(\"aria-describedby\", ctx_r0.ariaDescribedby || null);\n} }\nconst matMenuAnimations = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: trigger('transformMenu', [\n state('void', style({\n opacity: 0,\n transform: 'scale(0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1)'\n }))),\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))\n ]),\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: trigger('fadeInItems', [\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', style({ opacity: 1 })),\n transition('void => *', [\n style({ opacity: 0 }),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n ])\n};\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst fadeInItems = matMenuAnimations.fadeInItems;\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst transformMenu = matMenuAnimations.transformMenu;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `MatMenuContent`. It serves\n * as alternative token to the actual `MatMenuContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_MENU_CONTENT = new InjectionToken('MatMenuContent');\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\nclass MatMenuContent {\n constructor(_template, _componentFactoryResolver, _appRef, _injector, _viewContainerRef, _document, _changeDetectorRef) {\n this._template = _template;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._document = _document;\n this._changeDetectorRef = _changeDetectorRef;\n /** Emits when the menu content has been attached. */\n this._attached = new Subject();\n }\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n this.detach();\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._componentFactoryResolver, this._appRef, this._injector);\n }\n const element = this._template.elementRef.nativeElement;\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode.insertBefore(this._outlet.outletElement, element);\n // When `MatMenuContent` is used in an `OnPush` component, the insertion of the menu\n // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n // by Angular. This causes the `@ContentChildren` for menu items within the menu to\n // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`.\n // @breaking-change 9.0.0 Make change detector ref required\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\n }\n }\n}\nMatMenuContent.ɵfac = function MatMenuContent_Factory(t) { return new (t || MatMenuContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nMatMenuContent.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatMenuContent, selectors: [[\"ng-template\", \"matMenuContent\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }])] });\nMatMenuContent.ctorParameters = () => [\n { type: TemplateRef },\n { type: ComponentFactoryResolver },\n { type: ApplicationRef },\n { type: Injector },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuContent, [{\n type: Directive,\n args: [{\n selector: 'ng-template[matMenuContent]',\n providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }]\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * @docs-private\n */\nfunction throwMatMenuMissingError() {\n throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.\n\n Example:\n \n `);\n}\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: `);\n}\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: `);\n}\n/**\n * Throws an exception for the case when a menu is assigned\n * to a trigger that is placed inside the same menu.\n * @docs-private\n */\nfunction throwMatMenuRecursiveError() {\n throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` +\n `not a parent of the trigger or move the trigger outside of the menu.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst MAT_MENU_PANEL = new InjectionToken('MAT_MENU_PANEL');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nclass MatMenuItemBase {\n}\nconst _MatMenuItemMixinBase = mixinDisableRipple(mixinDisabled(MatMenuItemBase));\n/**\n * Single item inside of a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nclass MatMenuItem extends _MatMenuItemMixinBase {\n constructor(_elementRef, \n /**\n * @deprecated `_document` parameter is no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _focusMonitor, _parentMenu) {\n // @breaking-change 8.0.0 make `_focusMonitor` and `document` required params.\n super();\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._parentMenu = _parentMenu;\n /** ARIA role for the menu item. */\n this.role = 'menuitem';\n /** Stream that emits when the menu item is hovered. */\n this._hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n this._focused = new Subject();\n /** Whether the menu item is highlighted. */\n this._highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n this._triggersSubmenu = false;\n if (_parentMenu && _parentMenu.addItem) {\n _parentMenu.addItem(this);\n }\n }\n /** Focuses the menu item. */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n }\n else {\n this._getHostElement().focus(options);\n }\n this._focused.next(this);\n }\n ngAfterViewInit() {\n if (this._focusMonitor) {\n // Start monitoring the element so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n this._focusMonitor.monitor(this._elementRef, false);\n }\n }\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n this._hovered.complete();\n this._focused.complete();\n }\n /** Used to set the `tabindex`. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Returns the host DOM element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Prevents the default element actions if it is disabled. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n var _a, _b;\n const clone = this._elementRef.nativeElement.cloneNode(true);\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n // Strip away icons so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n const icon = icons[i];\n (_a = icon.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(icon);\n }\n return ((_b = clone.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || '';\n }\n}\nMatMenuItem.ɵfac = function MatMenuItem_Factory(t) { return new (t || MatMenuItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8)); };\nMatMenuItem.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatMenuItem, selectors: [[\"\", \"mat-menu-item\", \"\"]], hostAttrs: [1, \"mat-focus-indicator\"], hostVars: 10, hostBindings: function MatMenuItem_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function MatMenuItem_click_HostBindingHandler($event) { return ctx._checkDisabled($event); })(\"mouseenter\", function MatMenuItem_mouseenter_HostBindingHandler() { return ctx._handleMouseEnter(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx._getTabIndex())(\"aria-disabled\", ctx.disabled.toString())(\"disabled\", ctx.disabled || null);\n ɵngcc0.ɵɵclassProp(\"mat-menu-item\", true)(\"mat-menu-item-highlighted\", ctx._highlighted)(\"mat-menu-item-submenu-trigger\", ctx._triggersSubmenu);\n } }, inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", role: \"role\" }, exportAs: [\"matMenuItem\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 2, vars: 2, consts: [[\"matRipple\", \"\", 1, \"mat-menu-ripple\", 3, \"matRippleDisabled\", \"matRippleTrigger\"]], template: function MatMenuItem_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelement(1, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleTrigger\", ctx._getHostElement());\n } }, directives: [ɵngcc2.MatRipple], encapsulation: 2, changeDetection: 0 });\nMatMenuItem.ctorParameters = () => [\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: FocusMonitor },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_PANEL,] }, { type: Optional }] }\n];\nMatMenuItem.propDecorators = {\n role: [{ type: Input }],\n _checkDisabled: [{ type: HostListener, args: ['click', ['$event'],] }],\n _handleMouseEnter: [{ type: HostListener, args: ['mouseenter',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuItem, [{\n type: Component,\n args: [{\n selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n inputs: ['disabled', 'disableRipple'],\n host: {\n '[attr.role]': 'role',\n '[class.mat-menu-item]': 'true',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n 'class': 'mat-focus-indicator'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n
\\n\"\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc1.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }]; }, { role: [{\n type: Input\n }], \n /** Prevents the default element actions if it is disabled. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _checkDisabled: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], \n /** Emits to the hover stream. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _handleMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_MENU_DEFAULT_OPTIONS_FACTORY() {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n}\n/**\n * Start elevation for the menu panel.\n * @docs-private\n */\nconst MAT_MENU_BASE_ELEVATION = 4;\nlet menuPanelUid = 0;\n/** Base class with all of the `MatMenu` functionality. */\nclass _MatMenuBase {\n constructor(_elementRef, _ngZone, _defaultOptions) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n this._xPosition = this._defaultOptions.xPosition;\n this._yPosition = this._defaultOptions.yPosition;\n /** Only the direct descendant menu items. */\n this._directDescendantItems = new QueryList();\n /** Subscription to tab events on the menu panel */\n this._tabSubscription = Subscription.EMPTY;\n /** Config object to be passed into the menu's ngClass */\n this._classList = {};\n /** Current state of the panel animation. */\n this._panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n this._animationDone = new Subject();\n /** Class or list of classes to be added to the overlay panel. */\n this.overlayPanelClass = this._defaultOptions.overlayPanelClass || '';\n /** Class to be added to the backdrop element. */\n this.backdropClass = this._defaultOptions.backdropClass;\n this._overlapTrigger = this._defaultOptions.overlapTrigger;\n this._hasBackdrop = this._defaultOptions.hasBackdrop;\n /** Event emitted when the menu is closed. */\n this.closed = new EventEmitter();\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n this.close = this.closed;\n this.panelId = `mat-menu-panel-${menuPanelUid++}`;\n }\n /** Position of the menu in the X axis. */\n get xPosition() { return this._xPosition; }\n set xPosition(value) {\n if (value !== 'before' && value !== 'after' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n /** Position of the menu in the Y axis. */\n get yPosition() { return this._yPosition; }\n set yPosition(value) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n /** Whether the menu should overlap its trigger. */\n get overlapTrigger() { return this._overlapTrigger; }\n set overlapTrigger(value) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n /** Whether the menu has a backdrop. */\n get hasBackdrop() { return this._hasBackdrop; }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n set panelClass(classes) {\n const previousPanelClass = this._previousPanelClass;\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach((className) => {\n this._classList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach((className) => {\n this._classList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n get classList() { return this.panelClass; }\n set classList(classes) { this.panelClass = classes; }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems)\n .withWrap()\n .withTypeAhead()\n .withHomeAndEnd();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n // If a user manually (programmatically) focuses a menu item, we need to reflect that focus\n // change back to the key manager. Note that we don't need to unsubscribe here because _focused\n // is internal and we know that it gets completed on destroy.\n this._directDescendantItems.changes.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._focused)))).subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));\n }\n ngOnDestroy() {\n this._directDescendantItems.destroy();\n this._tabSubscription.unsubscribe();\n this.closed.complete();\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable`\n const itemChanges = this._directDescendantItems.changes;\n return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._hovered))));\n }\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item) { }\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item) { }\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n manager.onKeydown(event);\n }\n }\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin = 'program') {\n // When the content is rendered lazily, it takes a bit before the items are inside the DOM.\n if (this.lazyContent) {\n this._ngZone.onStable\n .pipe(take(1))\n .subscribe(() => this._focusFirstItem(origin));\n }\n else {\n this._focusFirstItem(origin);\n }\n }\n /**\n * Actual implementation that focuses the first item. Needs to be separated\n * out so we don't repeat the same logic in the public `focusFirstItem` method.\n */\n _focusFirstItem(origin) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menu panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && this._directDescendantItems.length) {\n let element = this._directDescendantItems.first._getHostElement().parentElement;\n // Because the `mat-menu` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menu panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n while (element) {\n if (element.getAttribute('role') === 'menu') {\n element.focus();\n break;\n }\n else {\n element = element.parentElement;\n }\n }\n }\n }\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n /**\n * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth) {\n // The elevation starts at the base and increases by one for each level.\n // Capped at 24 because that's the maximum elevation defined in the Material design spec.\n const elevation = Math.min(MAT_MENU_BASE_ELEVATION + depth, 24);\n const newElevation = `mat-elevation-z${elevation}`;\n const customElevation = Object.keys(this._classList).find(c => c.startsWith('mat-elevation-z'));\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n }\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX = this.xPosition, posY = this.yPosition) {\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n }\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n _onAnimationStart(event) {\n this._isAnimating = true;\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\n }\n }\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n _updateDirectDescendants() {\n this._allItems.changes\n .pipe(startWith(this._allItems))\n .subscribe((items) => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n}\n_MatMenuBase.ɵfac = function _MatMenuBase_Factory(t) { return new (t || _MatMenuBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_DEFAULT_OPTIONS)); };\n_MatMenuBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatMenuBase, contentQueries: function _MatMenuBase_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_MENU_CONTENT, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatMenuItem, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatMenuItem, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.lazyContent = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._allItems = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n } }, viewQuery: function _MatMenuBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(TemplateRef, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n } }, inputs: { backdropClass: \"backdropClass\", xPosition: \"xPosition\", yPosition: \"yPosition\", overlapTrigger: \"overlapTrigger\", hasBackdrop: \"hasBackdrop\", panelClass: [\"class\", \"panelClass\"], classList: \"classList\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"] }, outputs: { closed: \"closed\", close: \"close\" } });\n_MatMenuBase.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] }] }\n];\n_MatMenuBase.propDecorators = {\n _allItems: [{ type: ContentChildren, args: [MatMenuItem, { descendants: true },] }],\n backdropClass: [{ type: Input }],\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],\n ariaDescribedby: [{ type: Input, args: ['aria-describedby',] }],\n xPosition: [{ type: Input }],\n yPosition: [{ type: Input }],\n templateRef: [{ type: ViewChild, args: [TemplateRef,] }],\n items: [{ type: ContentChildren, args: [MatMenuItem, { descendants: false },] }],\n lazyContent: [{ type: ContentChild, args: [MAT_MENU_CONTENT,] }],\n overlapTrigger: [{ type: Input }],\n hasBackdrop: [{ type: Input }],\n panelClass: [{ type: Input, args: ['class',] }],\n classList: [{ type: Input }],\n closed: [{ type: Output }],\n close: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatMenuBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }]; }, { backdropClass: [{\n type: Input\n }], closed: [{\n type: Output\n }], close: [{\n type: Output\n }], xPosition: [{\n type: Input\n }], yPosition: [{\n type: Input\n }], overlapTrigger: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], panelClass: [{\n type: Input,\n args: ['class']\n }], classList: [{\n type: Input\n }], _allItems: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: true }]\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], templateRef: [{\n type: ViewChild,\n args: [TemplateRef]\n }], items: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: false }]\n }], lazyContent: [{\n type: ContentChild,\n args: [MAT_MENU_CONTENT]\n }] }); })();\n/** @docs-public MatMenu */\nclass MatMenu extends _MatMenuBase {\n constructor(elementRef, ngZone, defaultOptions) {\n super(elementRef, ngZone, defaultOptions);\n }\n}\nMatMenu.ɵfac = function MatMenu_Factory(t) { return new (t || MatMenu)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_DEFAULT_OPTIONS)); };\nMatMenu.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatMenu, selectors: [[\"mat-menu\"]], hostVars: 3, hostBindings: function MatMenu_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n } }, exportAs: [\"matMenu\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: MAT_MENU_PANEL, useExisting: MatMenu },\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 1, vars: 0, consts: [[\"tabindex\", \"-1\", \"role\", \"menu\", 1, \"mat-menu-panel\", 3, \"id\", \"ngClass\", \"keydown\", \"click\"], [1, \"mat-menu-content\"]], template: function MatMenu_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, MatMenu_ng_template_0_Template, 3, 6, \"ng-template\");\n } }, directives: [ɵngcc3.NgClass], styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\\\"\\\";display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"], encapsulation: 2, data: { animation: [\n matMenuAnimations.transformMenu,\n matMenuAnimations.fadeInItems\n ] }, changeDetection: 0 });\nMatMenu.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenu, [{\n type: Component,\n args: [{\n selector: 'mat-menu',\n template: \"\\n \\n
\\n \\n
\\n \\n
\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matMenu',\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null'\n },\n animations: [\n matMenuAnimations.transformMenu,\n matMenuAnimations.fadeInItems\n ],\n providers: [\n { provide: MAT_MENU_PANEL, useExisting: MatMenu },\n ],\n styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\\\"\\\";display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy');\n/** @docs-private */\nfunction MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,\n};\n/** Default top padding of the menu panel. */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\n/** Directive applied to an element that should trigger a `mat-menu`. */\nclass MatMenuTrigger {\n constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu, \n // `MatMenuTrigger` is commonly used in combination with a `MatMenuItem`.\n // tslint:disable-next-line: lightweight-tokens\n _menuItemInstance, _dir, \n // TODO(crisbeto): make the _focusMonitor required when doing breaking changes.\n // @breaking-change 8.0.0\n _focusMonitor) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._focusMonitor = _focusMonitor;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closingActionsSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._menuCloseSubscription = Subscription.EMPTY;\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n this._handleTouchStart = (event) => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\n };\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n this._openedBy = undefined;\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n this.restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n this.menuOpened = new EventEmitter();\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n this.menuClosed = new EventEmitter();\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuClose = this.menuClosed;\n this._scrollStrategy = scrollStrategy;\n this._parentMaterialMenu = parentMenu instanceof _MatMenuBase ? parentMenu : undefined;\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n get _deprecatedMatMenuTriggerFor() { return this.menu; }\n set _deprecatedMatMenuTriggerFor(v) {\n this.menu = v;\n }\n /** References the menu instance that the trigger is associated with. */\n get menu() { return this._menu; }\n set menu(menu) {\n if (menu === this._menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n this._menuCloseSubscription = menu.close.subscribe((reason) => {\n this._destroyMenu(reason);\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMaterialMenu) {\n this._parentMaterialMenu.closed.emit(reason);\n }\n });\n }\n }\n ngAfterContentInit() {\n this._checkMenu();\n this._handleHover();\n }\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n /** The text direction of the containing app. */\n get dir() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu() {\n return !!(this._menuItemInstance && this._parentMaterialMenu);\n }\n /** Toggles the menu between the open and closed states. */\n toggleMenu() {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n /** Opens the menu. */\n openMenu() {\n if (this._menuOpen) {\n return;\n }\n this._checkMenu();\n const overlayRef = this._createOverlay();\n const overlayConfig = overlayRef.getConfig();\n this._setPosition(overlayConfig.positionStrategy);\n overlayConfig.hasBackdrop = this.menu.hasBackdrop == null ? !this.triggersSubmenu() :\n this.menu.hasBackdrop;\n overlayRef.attach(this._getPortal());\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu();\n if (this.menu instanceof _MatMenuBase) {\n this.menu._startAnimation();\n }\n }\n /** Closes the menu. */\n closeMenu() {\n this.menu.close.emit();\n }\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n }\n else {\n this._element.nativeElement.focus(options);\n }\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n const menu = this.menu;\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\n // Always restore focus if the user is navigating using the keyboard or the menu was opened\n // programmatically. We don't restore for non-root triggers, because it can prevent focus\n // from making it back to the root trigger when closing a long chain of menus by clicking\n // on the backdrop.\n if (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this.triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n if (menu instanceof _MatMenuBase) {\n menu._resetAnimation();\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone\n .pipe(filter(event => event.toState === 'void'), take(1), \n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached))\n .subscribe({\n next: () => menu.lazyContent.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._setIsMenuOpen(false)\n });\n }\n else {\n this._setIsMenuOpen(false);\n }\n }\n else {\n this._setIsMenuOpen(false);\n if (menu.lazyContent) {\n menu.lazyContent.detach();\n }\n }\n }\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n _initMenu() {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this.menu.focusFirstItem(this._openedBy || 'program');\n this._setIsMenuOpen(true);\n }\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n _setMenuElevation() {\n if (this.menu.setElevation) {\n let depth = 0;\n let parentMenu = this.menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n this.menu.setElevation(depth);\n }\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._highlighted = isOpen;\n }\n }\n /**\n * This method checks that a valid instance of MatMenu has been passed into\n * matMenuTriggerFor. If not, an exception is thrown.\n */\n _checkMenu() {\n if (!this.menu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuMissingError();\n }\n }\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n _createOverlay() {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy);\n this._overlayRef = this._overlay.create(config);\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n return this._overlayRef;\n }\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._overlay.position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withGrowAfterOpen()\n .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: this.menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir\n });\n }\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n _subscribeToPositions(position) {\n if (this.menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n this.menu.setPositionClasses(posX, posY);\n });\n }\n }\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n _setPosition(positionStrategy) {\n let [originX, originFallbackX] = this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n if (this.triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = this.menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n }\n else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n positionStrategy.withPositions([\n { originX, originY, overlayX, overlayY, offsetY },\n { originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY },\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }\n ]);\n }\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n _menuClosingActions() {\n const backdrop = this._overlayRef.backdropClick();\n const detachments = this._overlayRef.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();\n const hover = this._parentMaterialMenu ? this._parentMaterialMenu._hovered().pipe(filter(active => active !== this._menuItemInstance), filter(() => this._menuOpen)) : of();\n return merge(backdrop, parentClose, hover, detachments);\n }\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event) {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : undefined;\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n /** Handles key presses on the trigger. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n if (this.triggersSubmenu() && ((keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n /** Handles click events on the trigger. */\n _handleClick(event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n }\n else {\n this.toggleMenu();\n }\n }\n /** Handles the cases where the user hovers over the trigger. */\n _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu() || !this._parentMaterialMenu) {\n return;\n }\n this._hoverSubscription = this._parentMaterialMenu._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(filter(active => active === this._menuItemInstance && !active.disabled), delay(0, asapScheduler))\n .subscribe(() => {\n this._openedBy = 'mouse';\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof _MatMenuBase && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone\n .pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMaterialMenu._hovered()))\n .subscribe(() => this.openMenu());\n }\n else {\n this.openMenu();\n }\n });\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal() {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== this.menu.templateRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n}\nMatMenuTrigger.ɵfac = function MatMenuTrigger_Factory(t) { return new (t || MatMenuTrigger)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8), ɵngcc0.ɵɵdirectiveInject(MatMenuItem, 10), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor)); };\nMatMenuTrigger.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatMenuTrigger, selectors: [[\"\", \"mat-menu-trigger-for\", \"\"], [\"\", \"matMenuTriggerFor\", \"\"]], hostAttrs: [\"aria-haspopup\", \"true\", 1, \"mat-menu-trigger\"], hostVars: 2, hostBindings: function MatMenuTrigger_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function MatMenuTrigger_mousedown_HostBindingHandler($event) { return ctx._handleMousedown($event); })(\"keydown\", function MatMenuTrigger_keydown_HostBindingHandler($event) { return ctx._handleKeydown($event); })(\"click\", function MatMenuTrigger_click_HostBindingHandler($event) { return ctx._handleClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.menuOpen || null)(\"aria-controls\", ctx.menuOpen ? ctx.menu.panelId : null);\n } }, inputs: { restoreFocus: [\"matMenuTriggerRestoreFocus\", \"restoreFocus\"], _deprecatedMatMenuTriggerFor: [\"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"], menu: [\"matMenuTriggerFor\", \"menu\"], menuData: [\"matMenuTriggerData\", \"menuData\"] }, outputs: { menuOpened: \"menuOpened\", onMenuOpen: \"onMenuOpen\", menuClosed: \"menuClosed\", onMenuClose: \"onMenuClose\" }, exportAs: [\"matMenuTrigger\"] });\nMatMenuTrigger.ctorParameters = () => [\n { type: Overlay },\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_SCROLL_STRATEGY,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_PANEL,] }, { type: Optional }] },\n { type: MatMenuItem, decorators: [{ type: Optional }, { type: Self }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: FocusMonitor }\n];\nMatMenuTrigger.propDecorators = {\n _deprecatedMatMenuTriggerFor: [{ type: Input, args: ['mat-menu-trigger-for',] }],\n menu: [{ type: Input, args: ['matMenuTriggerFor',] }],\n menuData: [{ type: Input, args: ['matMenuTriggerData',] }],\n restoreFocus: [{ type: Input, args: ['matMenuTriggerRestoreFocus',] }],\n menuOpened: [{ type: Output }],\n onMenuOpen: [{ type: Output }],\n menuClosed: [{ type: Output }],\n onMenuClose: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuTrigger, [{\n type: Directive,\n args: [{\n selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,\n host: {\n 'class': 'mat-menu-trigger',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'menuOpen || null',\n '[attr.aria-controls]': 'menuOpen ? menu.panelId : null',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick($event)'\n },\n exportAs: 'matMenuTrigger'\n }]\n }], function () { return [{ type: ɵngcc4.Overlay }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_SCROLL_STRATEGY]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }, { type: MatMenuItem, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: ɵngcc5.Directionality, decorators: [{\n type: Optional\n }] }, { type: ɵngcc1.FocusMonitor }]; }, { restoreFocus: [{\n type: Input,\n args: ['matMenuTriggerRestoreFocus']\n }], menuOpened: [{\n type: Output\n }], onMenuOpen: [{\n type: Output\n }], menuClosed: [{\n type: Output\n }], onMenuClose: [{\n type: Output\n }], _deprecatedMatMenuTriggerFor: [{\n type: Input,\n args: ['mat-menu-trigger-for']\n }], menu: [{\n type: Input,\n args: ['matMenuTriggerFor']\n }], menuData: [{\n type: Input,\n args: ['matMenuTriggerData']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used by both the current `MatMenuModule` and the MDC `MatMenuModule`\n * to declare the menu-related directives.\n */\nclass _MatMenuDirectivesModule {\n}\n_MatMenuDirectivesModule.ɵfac = function _MatMenuDirectivesModule_Factory(t) { return new (t || _MatMenuDirectivesModule)(); };\n_MatMenuDirectivesModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: _MatMenuDirectivesModule });\n_MatMenuDirectivesModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(_MatMenuDirectivesModule, { declarations: function () { return [MatMenuTrigger, MatMenuContent]; }, exports: function () { return [MatMenuTrigger, MatMenuContent, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatMenuDirectivesModule, [{\n type: NgModule,\n args: [{\n exports: [MatMenuTrigger, MatMenuContent, MatCommonModule],\n declarations: [\n MatMenuTrigger,\n MatMenuContent,\n ],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null); })();\nclass MatMenuModule {\n}\nMatMenuModule.ɵfac = function MatMenuModule_Factory(t) { return new (t || MatMenuModule)(); };\nMatMenuModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatMenuModule });\nMatMenuModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[\n CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule,\n _MatMenuDirectivesModule,\n ], CdkScrollableModule, MatCommonModule, _MatMenuDirectivesModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatMenuModule, { declarations: function () { return [MatMenu, MatMenuItem]; }, imports: function () { return [CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule, _MatMenuDirectivesModule]; }, exports: function () { return [CdkScrollableModule, MatCommonModule, MatMenu, MatMenuItem, _MatMenuDirectivesModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule,\n _MatMenuDirectivesModule,\n ],\n exports: [CdkScrollableModule, MatCommonModule, MatMenu, MatMenuItem, _MatMenuDirectivesModule],\n declarations: [MatMenu, MatMenuItem],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, _MatMenuBase, _MatMenuDirectivesModule, fadeInItems, matMenuAnimations, transformMenu, MAT_MENU_DEFAULT_OPTIONS_FACTORY as ɵangular_material_src_material_menu_menu_a, MAT_MENU_SCROLL_STRATEGY_FACTORY as ɵangular_material_src_material_menu_menu_b, MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER as ɵangular_material_src_material_menu_menu_c };\n\n//# sourceMappingURL=menu.js.map","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","import { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeTo = (result) => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeToObservable = (obj) => (subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n};\n//# sourceMappingURL=subscribeToObservable.js.map","import { hostReportError } from './hostReportError';\nexport const subscribeToPromise = (promise) => (subscriber) => {\n promise.then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, hostReportError);\n return subscriber;\n};\n//# sourceMappingURL=subscribeToPromise.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport const subscribeToIterable = (iterable) => (subscriber) => {\n const iterator = iterable[Symbol_iterator]();\n do {\n let item;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n};\n//# sourceMappingURL=subscribeToIterable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n//# sourceMappingURL=first.js.map","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arPs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","export class BaseModel {\n\t// Edit\n\t_isEditMode: boolean = false;\n\t// Log\n\t_userId: number = 0; // Admin\n\t_createdDate: string;\n\t_updatedDate: string;\n}\n","export class QueryResultsModel {\n\t// fields\n\titems: any[];\n\ttotalCount: number;\n\terrorMessage: string;\n\n\tconstructor(_items: any[] = [], _totalCount: number = 0, _errorMessage: string = '') {\n\t\tthis.items = _items;\n\t\tthis.totalCount = _totalCount;\n\t}\n}\n","// CRUD\nimport { QueryParamsModel } from './query-models/query-params.model';\nimport { QueryResultsModel } from './query-models/query-results.model';\n\nexport class HttpExtenstionsModel {\n\t/**\n\t * Filtration with sorting\n\t * First do Sort then filter\n\t *\n\t * @param _entities: any[]\n\t * @param _queryParams: QueryParamsModel\n\t * @param _filtrationFields: string[]\n\t */\n\tbaseFilter(_entities: any[], _queryParams: QueryParamsModel, _filtrationFields: string[] = []): QueryResultsModel {\n\t\t// Filtration\n\t\tlet entitiesResult = this.searchInArray(_entities, _queryParams.filter, _filtrationFields);\n\n\t\t// Sorting\n\t\t// start\n\t\tif (_queryParams.sortField) {\n\t\t\tentitiesResult = this.sortArray(entitiesResult, _queryParams.sortField, _queryParams.sortOrder);\n\t\t}\n\t\t// end\n\n\t\t// Paginator\n\t\t// start\n\t\tconst totalCount = entitiesResult.length;\n\t\tconst initialPos = _queryParams.pageNumber * _queryParams.pageSize;\n\t\tentitiesResult = entitiesResult.slice(initialPos, initialPos + _queryParams.pageSize);\n\t\t// end\n\n\t\tconst queryResults = new QueryResultsModel();\n\t\tqueryResults.items = entitiesResult;\n\t\tqueryResults.totalCount = totalCount;\n\t\treturn queryResults;\n\t}\n\n\t/**\n\t * Sort array by field name and order-type\n\t * @param _incomingArray: any[]\n\t * @param _sortField: string\n\t * @param _sortOrder: string\n\t */\n\tsortArray(_incomingArray: any[], _sortField: string = '', _sortOrder: string = 'asc'): any[] {\n\t\tif (!_sortField) {\n\t\t\treturn _incomingArray;\n\t\t}\n\n\t\tlet result: any[] = [];\n\t\tresult = _incomingArray.sort((a, b) => {\n\t\t\tif (a[_sortField] < b[_sortField]) {\n\t\t\t\treturn _sortOrder === 'asc' ? -1 : 1;\n\t\t\t}\n\n\t\t\tif (a[_sortField] > b[_sortField]) {\n\t\t\t\treturn _sortOrder === 'asc' ? 1 : -1;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t});\n\t\treturn result;\n\t}\n\n\t/**\n\t * Filter array by some fields\n\t *\n\t * @param _incomingArray: any[]\n\t * @param _queryObj: any\n\t * @param _filtrationFields: string[]\n\t */\n\tsearchInArray(_incomingArray: any[], _queryObj: any, _filtrationFields: string[] = []): any[] {\n\t\tconst result: any[] = [];\n\t\tlet resultBuffer: any[] = [];\n\t\tconst indexes: number[] = [];\n\t\tlet firstIndexes: number[] = [];\n\t\tlet doSearch: boolean = false;\n\n\t\t_filtrationFields.forEach(item => {\n\t\t\tif (item in _queryObj) {\n\t\t\t\t_incomingArray.forEach((element, index) => {\n\t\t\t\t\tif (element[item] === _queryObj[item]) {\n\t\t\t\t\t\tfirstIndexes.push(index);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tfirstIndexes.forEach(element => {\n\t\t\t\t\tresultBuffer.push(_incomingArray[element]);\n\t\t\t\t});\n\t\t\t\t_incomingArray = resultBuffer.slice(0);\n\t\t\t\tresultBuffer = [].slice(0);\n\t\t\t\tfirstIndexes = [].slice(0);\n\t\t\t}\n\t\t});\n\n\t\tObject.keys(_queryObj).forEach(key => {\n\t\t\tconst searchText = _queryObj[key].toString().trim().toLowerCase();\n\t\t\tif (key && !_filtrationFields.some(e => e === key) && searchText) {\n\t\t\t\tdoSearch = true;\n\t\t\t\ttry {\n\t\t\t\t\t_incomingArray.forEach((element, index) => {\n\t\t\t\t\t\tif (element[key]) {\n\t\t\t\t\t\t\tconst _val = element[key].toString().trim().toLowerCase();\n\t\t\t\t\t\t\tif (_val.indexOf(searchText) > -1 && indexes.indexOf(index) === -1) {\n\t\t\t\t\t\t\t\tindexes.push(index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} catch (ex) {\n\t\t\t\t\tconsole.log(ex, key, searchText);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (!doSearch) {\n\t\t\treturn _incomingArray;\n\t\t}\n\n\t\tindexes.forEach(re => {\n\t\t\tresult.push(_incomingArray[re]);\n\t\t});\n\n\t\treturn result;\n\t}\n}\n","// Angular\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\n// RxJS\nimport { Observable, BehaviorSubject, combineLatest, Subscription, of } from 'rxjs';\n// CRUD\nimport { HttpExtenstionsModel } from './http-extentsions-model';\nimport { QueryParamsModel } from './query-models/query-params.model';\nimport { QueryResultsModel } from './query-models/query-results.model';\nimport { BaseModel } from './_base.model';\nimport { skip, distinctUntilChanged } from 'rxjs/operators';\n\n// Why not use MatTableDataSource?\n/* In this example, we will not be using the built-in MatTableDataSource because its designed for filtering,\n\tsorting and pagination of a client - side data array.\n\tRead the article: 'https://blog.angular-university.io/angular-material-data-table/'\n**/\nexport class BaseDataSource implements DataSource {\n\tentitySubject = new BehaviorSubject([]);\n\thasItems: boolean = true; // Need to show message: 'No records found'\n\n\t// Loading | Progress bar\n\tloading$: Observable;\n\tisPreloadTextViewed$: Observable = of(true);\n\n\t// Paginator | Paginators count\n\tpaginatorTotalSubject = new BehaviorSubject(0);\n\tpaginatorTotal$: Observable;\n\tsubscriptions: Subscription[] = [];\n\n\tconstructor() {\n\t\tthis.paginatorTotal$ = this.paginatorTotalSubject.asObservable();\n\n\t\t// subscribe hasItems to (entitySubject.length==0)\n\t\tconst hasItemsSubscription = this.paginatorTotal$\n\t\t\t.pipe(distinctUntilChanged(), skip(1))\n\t\t\t.subscribe(res => (this.hasItems = res > 0));\n\t\tthis.subscriptions.push(hasItemsSubscription);\n\t}\n\n\tconnect(collectionViewer: CollectionViewer): Observable {\n\t\t// Connecting data source\n\t\treturn this.entitySubject.asObservable();\n\t}\n\n\tdisconnect(collectionViewer: CollectionViewer): void {\n\t\t// Disonnecting data source\n\t\tthis.entitySubject.complete();\n\t\tthis.paginatorTotalSubject.complete();\n\t\tthis.subscriptions.forEach(sb => sb.unsubscribe());\n\t}\n\n\tbaseFilter(_entities: any[], _queryParams: QueryParamsModel, _filtrationFields: string[] = []): QueryResultsModel {\n\t\tconst httpExtention = new HttpExtenstionsModel();\n\t\treturn httpExtention.baseFilter(_entities, _queryParams, _filtrationFields);\n\t}\n\n\tsortArray(_incomingArray: any[], _sortField: string = '', _sortOrder: string = 'asc'): any[] {\n\t\tconst httpExtention = new HttpExtenstionsModel();\n\t\treturn httpExtention.sortArray(_incomingArray, _sortField, _sortOrder);\n\t}\n\n\tsearchInArray(_incomingArray: any[], _queryObj: any, _filtrationFields: string[] = []): any[] {\n\t\tconst httpExtention = new HttpExtenstionsModel();\n\t\treturn httpExtention.searchInArray(_incomingArray, _queryObj, _filtrationFields);\n\t}\n}\n","export class QueryParamsModel {\n\t// fields\n\tfilter: any;\n\tsortOrder: string; // asc || desc\n\tsortField: string;\n\tpageNumber: number;\n\tpageSize: number;\n\n\t// constructor overrides\n\tconstructor(\n\t\t_filter: any,\n\t\t_sortOrder: string = 'asc',\n\t\t_sortField: string = '',\n\t\t_pageNumber: number = 0,\n\t\t_pageSize: number = 10\n\t) {\n\t\tthis.filter = _filter;\n\t\tthis.sortOrder = _sortOrder;\n\t\tthis.sortField = _sortField;\n\t\tthis.pageNumber = _pageNumber;\n\t\tthis.pageSize = _pageSize;\n\t}\n}\n","// Angular\nimport { Injectable } from '@angular/core';\nimport { HttpParams, HttpHeaders } from '@angular/common/http';\n// CRUD\nimport { QueryResultsModel } from '../models/query-models/query-results.model';\nimport { QueryParamsModel } from '../models/query-models/query-params.model';\nimport { HttpExtenstionsModel } from '../../crud/models/http-extentsions-model';\n\n@Injectable()\nexport class HttpUtilsService {\n\t/**\n\t * Prepare query http params\n\t * @param queryParams: QueryParamsModel\n\t */\n\tgetFindHTTPParams(queryParams): HttpParams {\n\t\tconst params = new HttpParams()\n\t\t\t.set('lastNamefilter', queryParams.filter)\n\t\t\t.set('sortOrder', queryParams.sortOrder)\n\t\t\t.set('sortField', queryParams.sortField)\n\t\t\t.set('pageNumber', queryParams.pageNumber.toString())\n\t\t\t.set('pageSize', queryParams.pageSize.toString());\n\n\t\treturn params;\n\t}\n\n\t/**\n\t * get standard content-type\n\t */\n\tgetHTTPHeaders(): HttpHeaders {\n\t\tconst result = new HttpHeaders();\n\t\tresult.set('Content-Type', 'application/json');\n\t\treturn result;\n\t}\n\n\tbaseFilter(_entities: any[], _queryParams: QueryParamsModel, _filtrationFields: string[] = []): QueryResultsModel {\n\t\tconst httpExtention = new HttpExtenstionsModel();\n\t\treturn httpExtention.baseFilter(_entities, _queryParams, _filtrationFields);\n\t}\n\n\tsortArray(_incomingArray: any[], _sortField: string = '', _sortOrder: string = 'asc'): any[] {\n\t\tconst httpExtention = new HttpExtenstionsModel();\n\t\treturn httpExtention.sortArray(_incomingArray, _sortField, _sortOrder);\n\t}\n\n\tsearchInArray(_incomingArray: any[], _queryObj: any, _filtrationFields: string[] = []): any[] {\n\t\tconst httpExtention = new HttpExtenstionsModel();\n\t\treturn httpExtention.searchInArray(_incomingArray, _queryObj, _filtrationFields);\n\t}\n}\n","/** Angular */\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TypesUtilsService {\n\t/**\n\t * Convert number to string and addinng '0' before\n\t *\n\t * @param value: number\n\t */\n\tpadNumber(value: number) {\n\t\tif (this.isNumber(value)) {\n\t\t\treturn `0${value}`.slice(-2);\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\t}\n\n\t/**\n\t * Checking value type equals to Number\n\t *\n\t * @param value: any\n\t */\n\tisNumber(value: any): boolean {\n\t\treturn !isNaN(this.toInteger(value));\n\t}\n\n\t/**\n\t * Covert value to number\n\t *\n\t * @param value: any\n\t */\n\ttoInteger(value: any): number {\n\t\treturn parseInt(`${value}`, 10);\n\t}\n\n\t/**\n\t * Convert date to string with 'MM/dd/yyyy' format\n\t *\n\t * @param date: Date\n\t */\n\tdateFormat(date: Date): string {\n\t\tconst month = date.getMonth() + 1;\n\t\tconst day = date.getDate();\n\t\tconst year = date.getFullYear();\n\t\tif (date) {\n\t\t\treturn `${month}/${day}/${year}`;\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t/**\n\t * Convert Date to string with custom format 'MM/dd/yyyy'\n\t *\n\t * @param date: any\n\t */\n\tdateCustomFormat(date: any): string {\n\t\tlet stringDate: string = '';\n\t\tif (date) {\n\t\t\tstringDate += this.isNumber(date.month) ? this.padNumber(date.month) + '/' : '';\n\t\t\tstringDate += this.isNumber(date.day) ? this.padNumber(date.day) + '/' : '';\n\n\t\t\tstringDate += date.year;\n\t\t}\n\t\treturn stringDate;\n\t}\n\n\t/**\n\t * Convert string to DateFormatter (For Reactive Forms Validators)\n\t *\n\t * @param dateInStr: string (format => 'MM/dd/yyyy')\n\t */\n\tgetDateFormatterFromString(dateInStr: string): any {\n\t\tif (dateInStr && dateInStr.length > 0) {\n\t\t\tconst dateParts = dateInStr.trim().split('/');\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tyear: this.toInteger(dateParts[2]),\n\t\t\t\t\tmonth: this.toInteger(dateParts[0]),\n\t\t\t\t\tday: this.toInteger(dateParts[1])\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\n\t\tconst _date = new Date();\n\t\treturn [\n\t\t\t{\n\t\t\t\tyear: _date.getFullYear(),\n\t\t\t\tmonth: _date.getMonth() + 1,\n\t\t\t\tday: _date.getDay()\n\t\t\t}\n\t\t];\n\t}\n\n\t/**\n\t * Convert string to Date\n\t *\n\t * @param dateInStr: string (format => 'MM/dd/yyyy')\n\t */\n\tgetDateFromString(dateInStr: string = ''): Date {\n\t\tif (dateInStr && dateInStr.length > 0) {\n\t\t\tconst dateParts = dateInStr.trim().split('/');\n\t\t\tconst year = this.toInteger(dateParts[2]);\n\t\t\tconst month = this.toInteger(dateParts[0]);\n\t\t\tconst day = this.toInteger(dateParts[1]);\n\t\t\t// tslint:disable-next-line:prefer-const\n\t\t\tlet result = new Date();\n\t\t\tresult.setDate(day);\n\t\t\tresult.setMonth(month - 1);\n\t\t\tresult.setFullYear(year);\n\t\t\treturn result;\n\t\t}\n\n\t\treturn new Date();\n\t}\n\n\t/**\n\t * Convert Date to string with format 'MM/dd/yyyy'\n\t * @param _date: Date?\n\t */\n\tgetDateStringFromDate(_date: Date = new Date()): string {\n\t\tconst month = _date.getMonth() + 1;\n\t\tconst year = _date.getFullYear();\n\t\tconst date = _date.getDate();\n\t\treturn `${month}/${date}/${year}`;\n\t}\n}\n","\n\t
\n\t\t
\n\t\t\t

{{ data.title }}

\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t{{ message.text }}\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\tmessage.statusTitle\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\tstatus.text\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tSelect Status for rows updating\n\t\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tUpdate status \n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\n","// Angular\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n\tselector: 'kt-update-status-dialog',\n\ttemplateUrl: './update-status-dialog.component.html'\n})\nexport class UpdateStatusDialogComponent implements OnInit {\n\tselectedStatusForUpdate = new FormControl('');\n\tviewLoading: boolean = false;\n\tloadingAfterSubmit: boolean = false;\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) {}\n\n\tngOnInit() {\n\t\t/* Server loading imitation. Remove this */\n\t\tthis.viewLoading = true;\n\t\tsetTimeout(() => {\n\t\t\tthis.viewLoading = false;\n\t\t}, 2500);\n\t}\n\n\tonNoClick(): void {\n\t\tthis.dialogRef.close();\n\t}\n\n\tupdateStatus() {\n\t\tif (this.selectedStatusForUpdate.value.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t/* Server loading imitation. Remove this */\n\t\tthis.viewLoading = true;\n\t\tthis.loadingAfterSubmit = true;\n\t\tsetTimeout(() => {\n\t\t\tthis.dialogRef.close(this.selectedStatusForUpdate.value); // Keep only this row\n\t\t}, 2500);\n\t}\n}\n","
\n\t
\n\t\t
\n\t\t\t

Fetch selected elements

\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t{{ message.text }}\n\t\t\t\t\t\t\tID: {{ message.id }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t\t
\n\t\t
\n\t
\n
\n","// Angular\nimport { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n\tselector: 'kt-fetch-entity-dialog',\n\ttemplateUrl: './fetch-entity-dialog.component.html'\n})\nexport class FetchEntityDialogComponent {\n\t/**\n\t * Component constructor\n\t *\n\t * @param dialogRef: MatDialogRef,\n\t * @param data: any\n\t */\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) {}\n\n\t/**\n\t * Close dialog with false result\n\t */\n\tonNoClick(): void {\n\t\tthis.dialogRef.close();\n\t}\n\n\t/** UI */\n\t/**\n\t * Returns CSS Class Name by status type\n\t * @param status: number\n\t */\n\tgetItemCssClassByStatus(status: number = 0) {\n\t\tswitch (status) {\n\t\t\tcase 0:\n\t\t\t\treturn 'success';\n\t\t\tcase 1:\n\t\t\t\treturn 'metal';\n\t\t\tcase 2:\n\t\t\t\treturn 'danger';\n\t\t\tdefault:\n\t\t\t\treturn 'success';\n\t\t}\n\t}\n}\n","
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t

{{ data.title }}

\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{{ viewLoading ? data.waitDesciption : data.description }}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t \n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n
\n","// Angular\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n\tselector: 'kt-delete-entity-dialog',\n\ttemplateUrl: './delete-entity-dialog.component.html'\n})\nexport class DeleteEntityDialogComponent implements OnInit {\n\t// Public properties\n\tviewLoading: boolean = false;\n\n\t/**\n\t * Component constructor\n\t *\n\t * @param dialogRef: MatDialogRef\n\t * @param data: any\n\t */\n\tconstructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any) {}\n\n\t/**\n\t * @ Lifecycle sequences => https://angular.io/guide/lifecycle-hooks\n\t */\n\n\t/**\n\t * On init\n\t */\n\tngOnInit() {}\n\n\t/**\n\t * Close dialog with false result\n\t */\n\tonNoClick(): void {\n\t\tthis.dialogRef.close();\n\t}\n\n\t/**\n\t * Close dialog with true result\n\t */\n\tonYesClick(): void {\n\t\t/* Server loading imitation. Remove this */\n\t\tthis.viewLoading = true;\n\t\tsetTimeout(() => {\n\t\t\tthis.dialogRef.close(true); // Keep only this row\n\t\t}, 2500);\n\t}\n}\n","
\n\t
{{ data.message }}
\n\t
\n\t\t\n\t
\n\t
\n\t\t\n\t
\n
\n","// Angular\nimport { Component, Inject, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n// RxJS\nimport { delay } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\n@Component({\n\tselector: 'kt-action-natification',\n\ttemplateUrl: './action-notification.component.html',\n\tchangeDetection: ChangeDetectionStrategy.Default\n})\nexport class ActionNotificationComponent implements OnInit {\n\t/**\n\t * Component constructor\n\t *\n\t * @param data: any\n\t */\n\tconstructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {}\n\n\t/**\n\t * @ Lifecycle sequences => https://angular.io/guide/lifecycle-hooks\n\t */\n\n\t/**\n\t * On init\n\t */\n\tngOnInit() {\n\t\tif (!this.data.showUndoButton || this.data.undoButtonDuration >= this.data.duration) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.delayForUndoButton(this.data.undoButtonDuration).subscribe(() => {\n\t\t\tthis.data.showUndoButton = false;\n\t\t});\n\t}\n\n\t/*\n\t *\tReturns delay\n\t *\n\t * @param timeToDelay: any\n\t */\n\tdelayForUndoButton(timeToDelay) {\n\t\treturn of('').pipe(delay(timeToDelay));\n\t}\n\n\t/**\n\t * Dismiss with Action\n\t */\n\tonDismissWithAction() {\n\t\tthis.data.snackBar.dismiss();\n\t}\n\n\t/**\n\t * Dismiss\n\t */\n\tpublic onDismiss() {\n\t\tthis.data.snackBar.dismiss();\n\t}\n}\n","// Angular\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// Partials for CRUD\nimport {\n\tActionNotificationComponent,\n\tDeleteEntityDialogComponent,\n\tFetchEntityDialogComponent,\n\tUpdateStatusDialogComponent\n} from '../../../../views/partials/content/crud';\n\nexport enum MessageType {\n\tCreate,\n\tRead,\n\tUpdate,\n\tDelete\n}\n\n@Injectable()\nexport class LayoutUtilsService {\n\t/**\n\t * Service constructor\n\t *\n\t * @param snackBar: MatSnackBar\n\t * @param dialog: MatDialog\n\t */\n\tconstructor(private snackBar: MatSnackBar, private dialog: MatDialog) {}\n\n\t/**\n\t * Showing (Mat-Snackbar) Notification\n\t *\n\t * @param message: string\n\t * @param type: MessageType\n\t * @param duration: number\n\t * @param showCloseButton: boolean\n\t * @param showUndoButton: boolean\n\t * @param undoButtonDuration: number\n\t * @param verticalPosition: 'top' | 'bottom' = 'top'\n\t */\n\tshowActionNotification(\n\t\t_message: string,\n\t\t_type: MessageType = MessageType.Create,\n\t\t_duration: number = 10000,\n\t\t_showCloseButton: boolean = true,\n\t\t_showUndoButton: boolean = true,\n\t\t_undoButtonDuration: number = 3000,\n\t\t_verticalPosition: 'top' | 'bottom' = 'bottom'\n\t) {\n\t\tconst _data = {\n\t\t\tmessage: _message,\n\t\t\tsnackBar: this.snackBar,\n\t\t\tshowCloseButton: _showCloseButton,\n\t\t\tshowUndoButton: _showUndoButton,\n\t\t\tundoButtonDuration: _undoButtonDuration,\n\t\t\tverticalPosition: _verticalPosition,\n\t\t\ttype: _type,\n\t\t\taction: 'Undo'\n\t\t};\n\t\treturn this.snackBar.openFromComponent(ActionNotificationComponent, {\n\t\t\tduration: _duration,\n\t\t\tdata: _data,\n\t\t\tverticalPosition: _verticalPosition\n\t\t});\n\t}\n\n\t/**\n\t * Showing Confirmation (Mat-Dialog) before Entity Removing\n\t *\n\t * @param title: stirng\n\t * @param description: stirng\n\t * @param waitDesciption: string\n\t */\n\tdeleteElement(title: string = '', description: string = '', waitDesciption: string = '') {\n\t\treturn this.dialog.open(DeleteEntityDialogComponent, {\n\t\t\tdata: { title, description, waitDesciption },\n\t\t\twidth: '440px'\n\t\t});\n\t}\n\n\t/**\n\t * Showing Fetching Window(Mat-Dialog)\n\t *\n\t * @param _data: any\n\t */\n\tfetchElements(_data) {\n\t\treturn this.dialog.open(FetchEntityDialogComponent, {\n\t\t\tdata: _data,\n\t\t\twidth: '400px'\n\t\t});\n\t}\n\n\t/**\n\t * Showing Update Status for Entites Window\n\t *\n\t * @param title: string\n\t * @param statuses: string[]\n\t * @param messages: string[]\n\t */\n\tupdateStatusForEntities(title, statuses, messages) {\n\t\treturn this.dialog.open(UpdateStatusDialogComponent, {\n\t\t\tdata: { title, statuses, messages },\n\t\t\twidth: '480px'\n\t\t});\n\t}\n}\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","import { ReplaySubject } from '../ReplaySubject';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n let config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime,\n refCount: false,\n scheduler,\n };\n }\n return (source) => source.lift(shareReplayOperator(config));\n}\nfunction shareReplayOperator({ bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, refCount: useRefCount, scheduler, }) {\n let subject;\n let refCount = 0;\n let subscription;\n let hasError = false;\n let isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n let innerSub;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n innerSub = subject.subscribe(this);\n subscription = source.subscribe({\n next(value) {\n subject.next(value);\n },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n if (isComplete) {\n subscription = undefined;\n }\n }\n else {\n innerSub = subject.subscribe(this);\n }\n this.add(() => {\n refCount--;\n innerSub.unsubscribe();\n innerSub = undefined;\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n//# sourceMappingURL=shareReplay.js.map","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","import { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge(...observables) {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler = null;\n let last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","var n,l,u,i,t,r,o,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function h(n,l){for(var u in l)n[u]=l[u];return n}function v(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,i){var t,r,o,f={};for(o in u)\"key\"==o?t=u[o]:\"ref\"==o?r=u[o]:f[o]=u[o];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===f[o]&&(f[o]=l.defaultProps[o]);return p(l,f,t,r,null)}function p(n,i,t,r,o){var f={type:n,props:i,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u:o};return null==o&&null!=l.vnode&&l.vnode(f),f}function d(){return{current:null}}function _(n){return n.children}function k(n,l,u,i,t){var r;for(r in u)\"children\"===r||\"key\"===r||r in l||g(n,r,null,u[r],i);for(r in l)t&&\"function\"!=typeof l[r]||\"children\"===r||\"key\"===r||\"value\"===r||\"checked\"===r||u[r]===l[r]||g(n,r,l[r],u[r],i)}function b(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function g(n,l,u,i,t){var r;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||b(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||b(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])r=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?i||n.addEventListener(l,r?w:m,r):n.removeEventListener(l,r?w:m,r);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&-1==l.indexOf(\"-\")?n.removeAttribute(l):n.setAttribute(l,u))}}function m(n){t=!0;try{return this.l[n.type+!1](l.event?l.event(n):n)}finally{t=!1}}function w(n){t=!0;try{return this.l[n.type+!0](l.event?l.event(n):n)}finally{t=!1}}function x(n,l){this.props=n,this.context=l}function A(n,l){if(null==l)return n.__?A(n.__,n.__.__k.indexOf(n)+1):null;for(var u;ll&&r.sort(function(n,l){return n.__v.__b-l.__v.__b}));$.__r=0}function H(n,l,u,i,t,r,o,f,e,a){var h,v,y,d,k,b,g,m=i&&i.__k||s,w=m.length;for(u.__k=[],h=0;h0?p(d.type,d.props,d.key,d.ref?d.ref:null,d.__v):d)){if(d.__=u,d.__b=u.__b+1,null===(y=m[h])||y&&d.key==y.key&&d.type===y.type)m[h]=void 0;else for(v=0;v=0;l--)if((u=n.__k[l])&&(i=L(u)))return i;return null}function M(n,u,i,t,r,o,f,e,c){var s,a,v,y,p,d,k,b,g,m,w,A,P,C,T,$=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,o=[e]),(s=l.__b)&&s(u);try{n:if(\"function\"==typeof $){if(b=u.props,g=(s=$.contextType)&&t[s.__c],m=s?g?g.props.value:s.__:t,i.__c?k=(a=u.__c=i.__c).__=a.__E:(\"prototype\"in $&&$.prototype.render?u.__c=a=new $(b,m):(u.__c=a=new x(b,m),a.constructor=$,a.render=B),g&&g.sub(a),a.props=b,a.state||(a.state={}),a.context=m,a.__n=t,v=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=$.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,$.getDerivedStateFromProps(b,a.__s))),y=a.props,p=a.state,a.__v=u,v)null==$.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==$.getDerivedStateFromProps&&b!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(b,m),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(b,a.__s,m)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=b,a.state=a.__s,a.__d=!1),u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),w=0;w2&&(f.children=arguments.length>3?n.call(arguments,2):i),p(l.type,f,t||l.key,r||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,T(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,i){for(var t,r,o;l=l.__;)if((t=l.__c)&&!t.__)try{if((r=t.constructor)&&null!=r.getDerivedStateFromError&&(t.setState(r.getDerivedStateFromError(n)),o=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),o=t.__d),o)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},t=!1,x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),T(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),T(this))},x.prototype.render=_,r=[],f=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,$.__r=0,e=0;export{x as Component,_ as Fragment,F as cloneElement,G as createContext,y as createElement,d as createRef,y as h,E as hydrate,i as isValidElement,l as options,D as render,j as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=[],e=n.__b,a=n.__r,v=n.diffed,l=n.__c,m=n.unmount;function d(t,u){n.__h&&n.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function p(n){return o=1,y(B,n)}function y(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){r.u=!0;var f=r.shouldComponentUpdate;r.shouldComponentUpdate=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!f||f.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!f||f.call(this,n,t,r))}}return o.__N||o.__}function h(u,i){var o=d(t++,3);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function s(u,i){var o=d(t++,4);!n.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,s(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return z(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){n.useDebugValue&&n.useDebugValue(r?r(t):t)}function P(n){var u=d(t++,10),i=p();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function V(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w),t.__H.__h=[]}catch(r){t.__H.__h=[],n.__e(r,t.__v)}}n.__b=function(n){r=null,e&&e(n)},n.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(k),i.__h.forEach(w),i.__h=[])),u=r},n.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===n.requestAnimationFrame||((i=n.requestAnimationFrame)||j)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},n.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],n.__e(u,t.__v)}}),l&&l(t,r)},n.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n)}catch(n){r=n}}),u.__H=void 0,r&&n.__e(r,u.__v))};var g=\"function\"==typeof requestAnimationFrame;function j(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))}function k(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function w(n){var t=r;n.__c=n.__(),r=t}function z(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B(n,t){return\"function\"==typeof t?t(n):t}export{T as useCallback,q as useContext,x as useDebugValue,h as useEffect,P as useErrorBoundary,V as useId,A as useImperativeHandle,s as useLayoutEffect,F as useMemo,y as useReducer,_ as useRef,p as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useId as s,useReducer as h,useEffect as v,useLayoutEffect as d,useRef as p,useImperativeHandle as m,useMemo as y,useCallback as _,useContext as b,useDebugValue as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n,t){return n===t&&(0!==n||1/n==1/t)||n!=n&&t!=t}function w(n){this.props=n}function R(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(w.prototype=new n).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n)};var N=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=N,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var A=function(n,t){return null==n?null:r(r(n).map(t))},O={map:A,forEach:A,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},T=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r)};var I=e.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function M(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function V(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n)},(D.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},D.prototype.componentWillUnmount=function(){this.t=[]},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__h=null),[t(u,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),e.i.removeChild(n)}}),o(t(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount()}function j(n,e){var r=t($,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new n).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u()};e?e(o):o()}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t)})};var z=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H=\"undefined\"!=typeof document,Z=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function Y(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function q(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var G=e.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}e.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var X,nn={configurable:!0,get:function(){return this.class}},tn=e.vnode;e.vnode=function(n){var t=n.type,e=n.props,u=e;if(\"string\"==typeof t){var o=-1===t.indexOf(\"-\");for(var i in u={},e){var l=e[i];H&&\"children\"===i&&\"noscript\"===t||\"value\"===i&&\"defaultValue\"in e&&null==l||(\"defaultValue\"===i&&\"value\"in e&&null==e.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":/ondoubleclick/i.test(i)?i=\"ondblclick\":/^onchange(textarea|input)/i.test(i+t)&&!Z(e.type)?i=\"oninput\":/^onfocus$/i.test(i)?i=\"onfocusin\":/^onblur$/i.test(i)?i=\"onfocusout\":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&B.test(i)?i=i.replace(/[A-Z0-9]/g,\"-$&\").toLowerCase():null===l&&(l=void 0),/^oninput$/i.test(i)&&(i=i.toLowerCase(),u[i]&&(i=\"oninputCapture\")),u[i]=l)}\"select\"==t&&u.multiple&&Array.isArray(u.value)&&(u.value=r(e.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==t&&null!=u.defaultValue&&(u.value=r(e.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),n.props=u,e.class!=e.className&&(nn.enumerable=\"className\"in e,null!=e.className&&(u.class=e.className),Object.defineProperty(u,\"className\",nn))}n.$$typeof=z,tn&&tn(n)};var en=e.__r;e.__r=function(n){en&&en(n),X=n.__c};var rn={ReactCurrentDispatcher:{current:{readContext:function(n){return X.__n[n.__c].props.value}}}},un=\"17.0.2\";function on(n){return t.bind(null,n)}function ln(n){return!!n&&n.$$typeof===z}function cn(n){return ln(n)?f.apply(null,arguments):n}function fn(n){return!!n.__k&&(o(null,n),!0)}function an(n){return n&&(n.base||1===n.nodeType&&n)||null}var sn=function(n,t){return n(t)},hn=function(n,t){return n(t)},vn=u;function dn(n){n()}function pn(n){return n}function mn(){return[!1,dn]}var yn=d;function _n(n,t){var e=t(),r=a({h:{__:e,v:t}}),u=r[0].h,o=r[1];return d(function(){u.__=e,u.v=t,E(u.__,t())||o({h:u})},[n,e,t]),v(function(){return E(u.__,u.v())||o({h:u}),n(function(){E(u.__,u.v())||o({h:u})})},[n]),e}var bn={useState:a,useId:s,useReducer:h,useEffect:v,useLayoutEffect:d,useInsertionEffect:yn,useTransition:mn,useDeferredValue:pn,useSyncExternalStore:_n,startTransition:dn,useRef:p,useImperativeHandle:m,useMemo:y,useCallback:_,useContext:b,useDebugValue:S,version:\"17.0.2\",Children:O,render:Y,hydrate:q,unmountComponentAtNode:fn,createPortal:j,createElement:t,createContext:l,createFactory:on,cloneElement:cn,createRef:c,Fragment:u,isValidElement:ln,findDOMNode:an,Component:n,PureComponent:w,memo:R,forwardRef:k,flushSync:hn,unstable_batchedUpdates:sn,StrictMode:vn,Suspense:D,SuspenseList:V,lazy:M,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:rn};export{O as Children,w as PureComponent,vn as StrictMode,D as Suspense,V as SuspenseList,rn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,cn as cloneElement,on as createFactory,j as createPortal,bn as default,an as findDOMNode,hn as flushSync,k as forwardRef,q as hydrate,ln as isValidElement,M as lazy,R as memo,Y as render,dn as startTransition,fn as unmountComponentAtNode,sn as unstable_batchedUpdates,pn as useDeferredValue,yn as useInsertionEffect,_n as useSyncExternalStore,mn as useTransition,un as version};\n//# sourceMappingURL=compat.module.js.map\n","import { __extends } from 'tslib';\nimport * as preact from 'preact';\nimport * as preactCompat from 'preact/compat';\n\nvar globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support\nif (globalObj.FullCalendarVDom) {\n console.warn('FullCalendar VDOM already loaded');\n}\nelse {\n globalObj.FullCalendarVDom = {\n Component: preact.Component,\n createElement: preact.createElement,\n render: preact.render,\n createRef: preact.createRef,\n Fragment: preact.Fragment,\n createContext: createContext,\n createPortal: preactCompat.createPortal,\n flushSync: flushSync,\n unmountComponentAtNode: unmountComponentAtNode,\n };\n}\n// HACKS...\n// TODO: lock version\n// TODO: link gh issues\nfunction flushSync(runBeforeFlush) {\n runBeforeFlush();\n var oldDebounceRendering = preact.options.debounceRendering; // orig\n var callbackQ = [];\n function execCallbackSync(callback) {\n callbackQ.push(callback);\n }\n preact.options.debounceRendering = execCallbackSync;\n preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n while (callbackQ.length) {\n callbackQ.shift()();\n }\n preact.options.debounceRendering = oldDebounceRendering;\n}\nvar FakeComponent = /** @class */ (function (_super) {\n __extends(FakeComponent, _super);\n function FakeComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeComponent.prototype.render = function () { return preact.createElement('div', {}); };\n FakeComponent.prototype.componentDidMount = function () { this.setState({}); };\n return FakeComponent;\n}(preact.Component));\nfunction createContext(defaultValue) {\n var ContextType = preact.createContext(defaultValue);\n var origProvider = ContextType.Provider;\n ContextType.Provider = function () {\n var _this = this;\n var isNew = !this.getChildContext;\n var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n if (isNew) {\n var subs_1 = [];\n this.shouldComponentUpdate = function (_props) {\n if (_this.props.value !== _props.value) {\n subs_1.forEach(function (c) {\n c.context = _props.value;\n c.forceUpdate();\n });\n }\n };\n this.sub = function (c) {\n subs_1.push(c);\n var old = c.componentWillUnmount;\n c.componentWillUnmount = function () {\n subs_1.splice(subs_1.indexOf(c), 1);\n old && old.call(c);\n };\n };\n }\n return children;\n };\n return ContextType;\n}\nfunction unmountComponentAtNode(node) {\n preact.render(null, node);\n}\n","/*!\nFullCalendar v5.11.5\nDocs & License: https://fullcalendar.io/\n(c) 2022 Adam Shaw\n*/\nimport './vdom.js';\nimport { __extends, __assign } from 'tslib';\nimport { flushSync, render, createElement, CalendarRoot, CustomContentRenderContext, CalendarContent, unmountComponentAtNode, DelayedRunner, CalendarDataManager, isArraysEqual, applyStyleProp, CalendarApi } from '@fullcalendar/common';\nexport * from '@fullcalendar/common';\n\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n function Calendar(el, optionOverrides) {\n if (optionOverrides === void 0) { optionOverrides = {}; }\n var _this = _super.call(this) || this;\n _this.isRendering = false;\n _this.isRendered = false;\n _this.currentClassNames = [];\n _this.customContentRenderId = 0; // will affect custom generated classNames?\n _this.handleAction = function (action) {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n _this.renderRunner.tryDrain();\n }\n };\n _this.handleData = function (data) {\n _this.currentData = data;\n _this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n _this.handleRenderRequest = function () {\n if (_this.isRendering) {\n _this.isRendered = true;\n var currentData_1 = _this.currentData;\n flushSync(function () {\n render(createElement(CalendarRoot, { options: currentData_1.calendarOptions, theme: currentData_1.theme, emitter: currentData_1.emitter }, function (classNames, height, isHeightAuto, forPrint) {\n _this.setClassNames(classNames);\n _this.setHeight(height);\n return (createElement(CustomContentRenderContext.Provider, { value: _this.customContentRenderId },\n createElement(CalendarContent, __assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData_1))));\n }), _this.el);\n });\n }\n else if (_this.isRendered) {\n _this.isRendered = false;\n unmountComponentAtNode(_this.el);\n _this.setClassNames([]);\n _this.setHeight('');\n }\n };\n _this.el = el;\n _this.renderRunner = new DelayedRunner(_this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides: optionOverrides,\n calendarApi: _this,\n onAction: _this.handleAction,\n onData: _this.handleData,\n });\n return _this;\n }\n Object.defineProperty(Calendar.prototype, \"view\", {\n get: function () { return this.currentData.viewApi; } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n Calendar.prototype.render = function () {\n var wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n }\n else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n };\n Calendar.prototype.destroy = function () {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n };\n Calendar.prototype.updateSize = function () {\n var _this = this;\n flushSync(function () {\n _super.prototype.updateSize.call(_this);\n });\n };\n Calendar.prototype.batchRendering = function (func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n };\n Calendar.prototype.pauseRendering = function () {\n this.renderRunner.pause('pauseRendering');\n };\n Calendar.prototype.resumeRendering = function () {\n this.renderRunner.resume('pauseRendering', true);\n };\n Calendar.prototype.resetOptions = function (optionOverrides, append) {\n this.currentDataManager.resetOptions(optionOverrides, append);\n };\n Calendar.prototype.setClassNames = function (classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n var classList = this.el.classList;\n for (var _i = 0, _a = this.currentClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.remove(className);\n }\n for (var _b = 0, classNames_1 = classNames; _b < classNames_1.length; _b++) {\n var className = classNames_1[_b];\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n };\n Calendar.prototype.setHeight = function (height) {\n applyStyleProp(this.el, 'height', height);\n };\n return Calendar;\n}(CalendarApi));\n\nexport { Calendar };\n//# sourceMappingURL=main.js.map\n","import { __decorate, __param } from 'tslib';\nimport { Directive, EventEmitter, Inject, ChangeDetectorRef, Optional, Input, Output, ViewChild, ElementRef, ContentChild, HostBinding, Component, forwardRef, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { _countGroupLabelsBeforeOption, MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { MatFormField } from '@angular/material/form-field';\nimport { A, Z, ZERO, NINE, SPACE, HOME, END, ENTER, ESCAPE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BehaviorSubject, of, combineLatest, Subject } from 'rxjs';\nimport { switchMap, map, startWith, delay, takeUntil, take, filter, tap } from 'rxjs/operators';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Directive for providing a custom clear-icon.\n * e.g.\n * \n * delete\n * \n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/scrolling';\nimport * as ɵngcc2 from '@angular/cdk/a11y';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@angular/forms';\nimport * as ɵngcc5 from '@angular/material/checkbox';\nimport * as ɵngcc6 from '@angular/material/tooltip';\nimport * as ɵngcc7 from '@angular/material/progress-spinner';\nimport * as ɵngcc8 from '@angular/material/button';\nimport * as ɵngcc9 from '@angular/material/icon';\nimport * as ɵngcc10 from '@angular/material/select';\nimport * as ɵngcc11 from '@angular/material/core';\nimport * as ɵngcc12 from '@angular/material/form-field';\n\nconst _c0 = [\"searchSelectInput\"];\nconst _c1 = [\"innerSelectSearch\"];\nfunction MatSelectSearchComponent_mat_checkbox_3_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mat-checkbox\", 9);\n ɵngcc0.ɵɵlistener(\"change\", function MatSelectSearchComponent_mat_checkbox_3_Template_mat_checkbox_change_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6._emitSelectAllBooleanToParent($event.checked); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"color\", ctx_r1.matFormField == null ? null : ctx_r1.matFormField.color)(\"checked\", ctx_r1.toggleAllCheckboxChecked)(\"indeterminate\", ctx_r1.toggleAllCheckboxIndeterminate)(\"matTooltip\", ctx_r1.toggleAllCheckboxTooltipMessage)(\"matTooltipPosition\", ctx_r1.toogleAllCheckboxTooltipPosition);\n} }\nfunction MatSelectSearchComponent_mat_spinner_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"mat-spinner\", 10);\n} }\nfunction MatSelectSearchComponent_button_7_ng_content_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 1, [\"*ngIf\", \"clearIcon; else defaultIcon\"]);\n} }\nfunction MatSelectSearchComponent_button_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"mat-icon\");\n ɵngcc0.ɵɵtext(1, \"close\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction MatSelectSearchComponent_button_7_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function MatSelectSearchComponent_button_7_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11._reset(true); });\n ɵngcc0.ɵɵtemplate(1, MatSelectSearchComponent_button_7_ng_content_1_Template, 1, 0, \"ng-content\", 12);\n ɵngcc0.ɵɵtemplate(2, MatSelectSearchComponent_button_7_ng_template_2_Template, 2, 0, \"ng-template\", null, 13, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r9 = ɵngcc0.ɵɵreference(3);\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.clearIcon)(\"ngIfElse\", _r9);\n} }\nfunction MatSelectSearchComponent_div_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 14);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r5.noEntriesFoundLabel, \"\\n\");\n} }\nconst _c2 = [[[\"\", 8, \"mat-select-search-custom-header-content\"]], [[\"\", \"ngxMatSelectSearchClear\", \"\"]]];\nconst _c3 = function (a0, a1) { return { \"mat-select-search-inner-multiple\": a0, \"mat-select-search-inner-toggle-all\": a1 }; };\nconst _c4 = [\".mat-select-search-custom-header-content\", \"[ngxMatSelectSearchClear]\"];\nlet MatSelectSearchClearDirective = class MatSelectSearchClearDirective {\n};\nMatSelectSearchClearDirective.ɵfac = function MatSelectSearchClearDirective_Factory(t) { return new (t || MatSelectSearchClearDirective)(); };\nMatSelectSearchClearDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatSelectSearchClearDirective, selectors: [[\"\", \"ngxMatSelectSearchClear\", \"\"]] });\n\n/**\n * Copyright (c) 2018 Bithost GmbH All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar MatSelectSearchComponent_1;\n/** The max height of the select's overlay panel. */\nconst SELECT_PANEL_MAX_HEIGHT = 256;\n/* tslint:disable:member-ordering component-selector */\n/**\n * Component providing an input field for searching MatSelect options.\n *\n * Example usage:\n *\n * interface Bank {\n * id: string;\n * name: string;\n * }\n *\n * @Component({\n * selector: 'my-app-data-selection',\n * template: `\n * \n * \n * \n * \n * \n * \n * {{bank.name}}\n * \n * \n * \n * `\n * })\n * export class DataSelectionComponent implements OnInit, OnDestroy {\n *\n * // control for the selected bank\n * public bankCtrl: FormControl = new FormControl();\n * // control for the MatSelect filter keyword\n * public bankFilterCtrl: FormControl = new FormControl();\n *\n * // list of banks\n * private banks: Bank[] = [{name: 'Bank A', id: 'A'}, {name: 'Bank B', id: 'B'}, {name: 'Bank C', id: 'C'}];\n * // list of banks filtered by search keyword\n * public filteredBanks: ReplaySubject = new ReplaySubject(1);\n *\n * // Subject that emits when the component has been destroyed.\n * private _onDestroy = new Subject();\n *\n *\n * ngOnInit() {\n * // load the initial bank list\n * this.filteredBanks.next(this.banks.slice());\n * // listen for search field value changes\n * this.bankFilterCtrl.valueChanges\n * .pipe(takeUntil(this._onDestroy))\n * .subscribe(() => {\n * this.filterBanks();\n * });\n * }\n *\n * ngOnDestroy() {\n * this._onDestroy.next();\n * this._onDestroy.complete();\n * }\n *\n * private filterBanks() {\n * if (!this.banks) {\n * return;\n * }\n *\n * // get the search keyword\n * let search = this.bankFilterCtrl.value;\n * if (!search) {\n * this.filteredBanks.next(this.banks.slice());\n * return;\n * } else {\n * search = search.toLowerCase();\n * }\n *\n * // filter the banks\n * this.filteredBanks.next(\n * this.banks.filter(bank => bank.name.toLowerCase().indexOf(search) > -1)\n * );\n * }\n * }\n */\nlet MatSelectSearchComponent = MatSelectSearchComponent_1 = class MatSelectSearchComponent {\n constructor(matSelect, changeDetectorRef, _viewportRuler, matOption = null, liveAnnouncer, matFormField = null) {\n this.matSelect = matSelect;\n this.changeDetectorRef = changeDetectorRef;\n this._viewportRuler = _viewportRuler;\n this.matOption = matOption;\n this.liveAnnouncer = liveAnnouncer;\n this.matFormField = matFormField;\n /** Label of the search placeholder */\n this.placeholderLabel = 'Suche';\n /** Type of the search input field */\n this.type = 'text';\n /** Label to be shown when no entries are found. Set to null if no message should be shown. */\n this.noEntriesFoundLabel = 'Keine Optionen gefunden';\n /**\n * Text that is appended to the currently active item label announced by screen readers,\n * informing the user of the current index, value and total options.\n * eg: Bank R (Germany) 1 of 6\n */\n this.indexAndLengthScreenReaderText = ' of ';\n /**\n * Whether or not the search field should be cleared after the dropdown menu is closed.\n * Useful for server-side filtering. See [#3](https://github.com/bithost-gmbh/ngx-mat-select-search/issues/3)\n */\n this.clearSearchInput = true;\n /** Whether to show the search-in-progress indicator */\n this.searching = false;\n /** Disables initial focusing of the input field */\n this.disableInitialFocus = false;\n /** Enable clear input on escape pressed */\n this.enableClearOnEscapePressed = false;\n /**\n * Prevents home / end key being propagated to mat-select,\n * allowing to move the cursor within the search input instead of navigating the options\n */\n this.preventHomeEndKeyPropagation = false;\n /** Disables scrolling to active options when option list changes. Useful for server-side search */\n this.disableScrollToActiveOnOptionsChanged = false;\n /** Adds 508 screen reader support for search box */\n this.ariaLabel = 'dropdown search';\n /** Whether to show Select All Checkbox (for mat-select[multi=true]) */\n this.showToggleAllCheckbox = false;\n /** select all checkbox checked state */\n this.toggleAllCheckboxChecked = false;\n /** select all checkbox indeterminate state */\n this.toggleAllCheckboxIndeterminate = false;\n /** Display a message in a tooltip on the toggle-all checkbox */\n this.toggleAllCheckboxTooltipMessage = '';\n /** Define the position of the tooltip on the toggle-all checkbox. */\n this.toogleAllCheckboxTooltipPosition = 'below';\n /** Show/Hide the search clear button of the search input */\n this.hideClearSearchButton = false;\n /**\n * Always restore selected options on selectionChange for mode multi (e.g. for lazy loading/infinity scrolling).\n * Defaults to false, so selected options are only restored while filtering is active.\n */\n this.alwaysRestoreSelectedOptionsMulti = false;\n /** Output emitter to send to parent component with the toggle all boolean */\n this.toggleAll = new EventEmitter();\n this.onTouched = (_) => { };\n this._options$ = new BehaviorSubject(null);\n this.optionsList$ = this._options$.pipe(switchMap(_options => _options ?\n _options.changes.pipe(map(options => options.toArray()), startWith(_options.toArray())) : of(null)));\n this.optionsLength$ = this.optionsList$.pipe(map(options => options ? options.length : 0));\n this._formControl = new FormControl('');\n /** whether to show the no entries found message */\n this._showNoEntriesFound$ = combineLatest([\n this._formControl.valueChanges,\n this.optionsLength$\n ]).pipe(map(([value, optionsLength]) => this.noEntriesFoundLabel && value\n && optionsLength === this.getOptionsLengthOffset()));\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n }\n get isInsideMatOption() {\n return !!this.matOption;\n }\n /** Current search value */\n get value() {\n return this._formControl.value;\n }\n /** Reference to the MatSelect options */\n set _options(_options) {\n this._options$.next(_options);\n }\n get _options() {\n return this._options$.getValue();\n }\n ngOnInit() {\n // set custom panel class\n const panelClass = 'mat-select-search-panel';\n if (this.matSelect.panelClass) {\n if (Array.isArray(this.matSelect.panelClass)) {\n this.matSelect.panelClass.push(panelClass);\n }\n else if (typeof this.matSelect.panelClass === 'string') {\n this.matSelect.panelClass = [this.matSelect.panelClass, panelClass];\n }\n else if (typeof this.matSelect.panelClass === 'object') {\n this.matSelect.panelClass[panelClass] = true;\n }\n }\n else {\n this.matSelect.panelClass = panelClass;\n }\n // set custom mat-option class if the component was placed inside a mat-option\n if (this.matOption) {\n this.matOption.disabled = true;\n this.matOption._getHostElement().classList.add('contains-mat-select-search');\n }\n else {\n console.error(' must be placed inside a element');\n }\n // when the select dropdown panel is opened or closed\n this.matSelect.openedChange\n .pipe(delay(1), takeUntil(this._onDestroy))\n .subscribe((opened) => {\n if (opened) {\n this.updateInputWidth();\n // focus the search field when opening\n if (!this.disableInitialFocus) {\n this._focus();\n }\n }\n else {\n // clear it when closing\n if (this.clearSearchInput) {\n this._reset();\n }\n }\n });\n // set the first item active after the options changed\n this.matSelect.openedChange\n .pipe(take(1))\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n if (this.matSelect._keyManager) {\n this.matSelect._keyManager.change.pipe(takeUntil(this._onDestroy))\n .subscribe(() => this.adjustScrollTopToFitActiveOptionIntoView());\n }\n else {\n console.log('_keyManager was not initialized.');\n }\n this._options = this.matSelect.options;\n // Closure variable for tracking the most recent first option.\n // In order to avoid avoid causing the list to\n // scroll to the top when options are added to the bottom of\n // the list (eg: infinite scroll), we compare only\n // the changes to the first options to determine if we\n // should set the first item as active.\n // This prevents unnecessary scrolling to the top of the list\n // when options are appended, but allows the first item\n // in the list to be set as active by default when there\n // is no active selection\n let previousFirstOption = this._options.toArray()[this.getOptionsLengthOffset()];\n this._options.changes\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n // avoid \"expression has been changed\" error\n setTimeout(() => {\n // Convert the QueryList to an array\n const options = this._options.toArray();\n // The true first item is offset by 1\n const currentFirstOption = options[this.getOptionsLengthOffset()];\n const keyManager = this.matSelect._keyManager;\n if (keyManager && this.matSelect.panelOpen) {\n // set first item active and input width\n // Check to see if the first option in these changes is different from the previous.\n const firstOptionIsChanged = !this.matSelect.compareWith(previousFirstOption, currentFirstOption);\n // CASE: The first option is different now.\n // Indiciates we should set it as active and scroll to the top.\n if (firstOptionIsChanged\n || !keyManager.activeItem\n || !options.find(option => this.matSelect.compareWith(option, keyManager.activeItem))) {\n keyManager.setFirstItemActive();\n }\n // wait for panel width changes\n setTimeout(() => {\n this.updateInputWidth();\n });\n if (!this.disableScrollToActiveOnOptionsChanged) {\n this.adjustScrollTopToFitActiveOptionIntoView();\n }\n }\n // Update our reference\n previousFirstOption = currentFirstOption;\n });\n });\n });\n // add or remove css class depending on whether to show the no entries found message\n // note: this is hacky\n this._showNoEntriesFound$.pipe(takeUntil(this._onDestroy)).subscribe(showNoEntriesFound => {\n // set no entries found class on mat option\n if (this.matOption) {\n if (showNoEntriesFound) {\n this.matOption._getHostElement().classList.add('mat-select-search-no-entries-found');\n }\n else {\n this.matOption._getHostElement().classList.remove('mat-select-search-no-entries-found');\n }\n }\n });\n // resize the input width when the viewport is resized, i.e. the trigger width could potentially be resized\n this._viewportRuler.change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n if (this.matSelect.panelOpen) {\n this.updateInputWidth();\n }\n });\n this.initMultipleHandling();\n this.optionsList$.pipe(takeUntil(this._onDestroy)).subscribe(() => {\n // update view when available options change\n this.changeDetectorRef.markForCheck();\n });\n }\n _emitSelectAllBooleanToParent(state) {\n this.toggleAll.emit(state);\n }\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n _isToggleAllCheckboxVisible() {\n return this.matSelect.multiple && this.showToggleAllCheckbox;\n }\n /**\n * Handles the key down event with MatSelect.\n * Allows e.g. selecting with enter key, navigation with arrow keys, etc.\n * @param event\n */\n _handleKeydown(event) {\n // Prevent propagation for all alphanumeric characters in order to avoid selection issues\n if ((event.key && event.key.length === 1) ||\n (event.keyCode >= A && event.keyCode <= Z) ||\n (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n (event.keyCode === SPACE)\n || (this.preventHomeEndKeyPropagation && (event.keyCode === HOME || event.keyCode === END))) {\n event.stopPropagation();\n }\n if (this.matSelect.multiple && event.key && event.keyCode === ENTER) {\n // Regain focus after multiselect, so we can further type\n setTimeout(() => this._focus());\n }\n // Special case if click Escape, if input is empty, close the dropdown, if not, empty out the search field\n if (this.enableClearOnEscapePressed === true && event.keyCode === ESCAPE && this.value) {\n this._reset(true);\n event.stopPropagation();\n }\n }\n /**\n * Handles the key up event with MatSelect.\n * Allows e.g. the announcing of the currently activeDescendant by screen readers.\n */\n _handleKeyup(event) {\n if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n const ariaActiveDescendantId = this.matSelect._getAriaActiveDescendant();\n const index = this._options.toArray().findIndex(item => item.id === ariaActiveDescendantId);\n if (index !== -1) {\n const activeDescendant = this._options.toArray()[index];\n this.liveAnnouncer.announce(activeDescendant.viewValue + ' '\n + this.getAriaIndex(index)\n + this.indexAndLengthScreenReaderText\n + this.getAriaLength());\n }\n }\n }\n /**\n * Calculate the index of the current option, taking the offset to length into account.\n * examples:\n * Case 1 [Search, 1, 2, 3] will have offset of 1, due to search and will read index of total.\n * Case 2 [1, 2, 3] will have offset of 0 and will read index +1 of total.\n */\n getAriaIndex(optionIndex) {\n if (this.getOptionsLengthOffset() === 0) {\n return optionIndex + 1;\n }\n return optionIndex;\n }\n /**\n * Calculate the length of the options, taking the offset to length into account.\n * examples:\n * Case 1 [Search, 1, 2, 3] will have length of options.length -1, due to search.\n * Case 2 [1, 2, 3] will have length of options.length.\n */\n getAriaLength() {\n return this._options.toArray().length - this.getOptionsLengthOffset();\n }\n writeValue(value) {\n this._lastExternalInputValue = value;\n this._formControl.setValue(value);\n this.changeDetectorRef.markForCheck();\n }\n onBlur() {\n this.onTouched();\n }\n registerOnChange(fn) {\n this._formControl.valueChanges.pipe(filter(value => value !== this._lastExternalInputValue), tap(() => this._lastExternalInputValue = undefined), takeUntil(this._onDestroy)).subscribe(fn);\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Focuses the search input field\n */\n _focus() {\n if (!this.searchSelectInput || !this.matSelect.panel) {\n return;\n }\n // save and restore scrollTop of panel, since it will be reset by focus()\n // note: this is hacky\n const panel = this.matSelect.panel.nativeElement;\n const scrollTop = panel.scrollTop;\n // focus\n this.searchSelectInput.nativeElement.focus();\n panel.scrollTop = scrollTop;\n }\n /**\n * Resets the current search value\n * @param focus whether to focus after resetting\n */\n _reset(focus) {\n this._formControl.setValue('');\n if (focus) {\n this._focus();\n }\n }\n /**\n * Initializes handling \n * Note: to improve this code, mat-select should be extended to allow disabling resetting the selection while filtering.\n */\n initMultipleHandling() {\n if (!this.matSelect.ngControl) {\n if (this.matSelect.multiple) {\n // note: the access to matSelect.ngControl (instead of matSelect.value / matSelect.valueChanges)\n // is necessary to properly work in multi-selection mode.\n console.error('the mat-select containing ngx-mat-select-search must have a ngModel or formControl directive when multiple=true');\n }\n return;\n }\n // if \n // store previously selected values and restore them when they are deselected\n // because the option is not available while we are currently filtering\n this.previousSelectedValues = this.matSelect.ngControl.value;\n this.matSelect.ngControl.valueChanges\n .pipe(takeUntil(this._onDestroy))\n .subscribe((values) => {\n let restoreSelectedValues = false;\n if (this.matSelect.multiple) {\n if ((this.alwaysRestoreSelectedOptionsMulti || (this._formControl.value && this._formControl.value.length))\n && this.previousSelectedValues && Array.isArray(this.previousSelectedValues)) {\n if (!values || !Array.isArray(values)) {\n values = [];\n }\n const optionValues = this.matSelect.options.map(option => option.value);\n this.previousSelectedValues.forEach(previousValue => {\n if (!values.some(v => this.matSelect.compareWith(v, previousValue))\n && !optionValues.some(v => this.matSelect.compareWith(v, previousValue))) {\n // if a value that was selected before is deselected and not found in the options, it was deselected\n // due to the filtering, so we restore it.\n values.push(previousValue);\n restoreSelectedValues = true;\n }\n });\n }\n }\n this.previousSelectedValues = values;\n if (restoreSelectedValues) {\n this.matSelect._onChange(values);\n }\n });\n }\n /**\n * Scrolls the currently active option into the view if it is not yet visible.\n */\n adjustScrollTopToFitActiveOptionIntoView() {\n if (this.matSelect.panel && this.matSelect.options.length > 0) {\n const matOptionHeight = this.getMatOptionHeight();\n const activeOptionIndex = this.matSelect._keyManager.activeItemIndex || 0;\n const labelCount = _countGroupLabelsBeforeOption(activeOptionIndex, this.matSelect.options, this.matSelect.optionGroups);\n // If the component is in a MatOption, the activeItemIndex will be offset by one.\n const indexOfOptionToFitIntoView = (this.matOption ? -1 : 0) + labelCount + activeOptionIndex;\n const currentScrollTop = this.matSelect.panel.nativeElement.scrollTop;\n const searchInputHeight = this.innerSelectSearch.nativeElement.offsetHeight;\n const amountOfVisibleOptions = Math.floor((SELECT_PANEL_MAX_HEIGHT - searchInputHeight) / matOptionHeight);\n const indexOfFirstVisibleOption = Math.round((currentScrollTop + searchInputHeight) / matOptionHeight) - 1;\n if (indexOfFirstVisibleOption >= indexOfOptionToFitIntoView) {\n this.matSelect.panel.nativeElement.scrollTop = indexOfOptionToFitIntoView * matOptionHeight;\n }\n else if (indexOfFirstVisibleOption + amountOfVisibleOptions <= indexOfOptionToFitIntoView) {\n this.matSelect.panel.nativeElement.scrollTop = (indexOfOptionToFitIntoView + 1) * matOptionHeight\n - (SELECT_PANEL_MAX_HEIGHT - searchInputHeight);\n }\n }\n }\n /**\n * Set the width of the innerSelectSearch to fit even custom scrollbars\n * And support all Operation Systems\n */\n updateInputWidth() {\n if (!this.innerSelectSearch || !this.innerSelectSearch.nativeElement) {\n return;\n }\n let element = this.innerSelectSearch.nativeElement;\n let panelElement;\n while (element = element.parentElement) {\n if (element.classList.contains('mat-select-panel')) {\n panelElement = element;\n break;\n }\n }\n if (panelElement) {\n this.innerSelectSearch.nativeElement.style.width = panelElement.clientWidth + 'px';\n }\n }\n getMatOptionHeight() {\n if (this.matSelect.options.length > 0) {\n return this.matSelect.options.first._getHostElement().getBoundingClientRect().height;\n }\n return 0;\n }\n /**\n * Determine the offset to length that can be caused by the optional matOption used as a search input.\n */\n getOptionsLengthOffset() {\n if (this.matOption) {\n return 1;\n }\n else {\n return 0;\n }\n }\n};\nMatSelectSearchComponent.ɵfac = function MatSelectSearchComponent_Factory(t) { return new (t || MatSelectSearchComponent)(ɵngcc0.ɵɵdirectiveInject(MatSelect), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵdirectiveInject(MatOption, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.LiveAnnouncer), ɵngcc0.ɵɵdirectiveInject(MatFormField, 8)); };\nMatSelectSearchComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatSelectSearchComponent, selectors: [[\"ngx-mat-select-search\"]], contentQueries: function MatSelectSearchComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatSelectSearchClearDirective, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.clearIcon = _t.first);\n } }, viewQuery: function MatSelectSearchComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 3, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c1, 3, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchSelectInput = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.innerSelectSearch = _t.first);\n } }, hostVars: 2, hostBindings: function MatSelectSearchComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"mat-select-search-inside-mat-option\", ctx.isInsideMatOption);\n } }, inputs: { placeholderLabel: \"placeholderLabel\", type: \"type\", noEntriesFoundLabel: \"noEntriesFoundLabel\", indexAndLengthScreenReaderText: \"indexAndLengthScreenReaderText\", clearSearchInput: \"clearSearchInput\", searching: \"searching\", disableInitialFocus: \"disableInitialFocus\", enableClearOnEscapePressed: \"enableClearOnEscapePressed\", preventHomeEndKeyPropagation: \"preventHomeEndKeyPropagation\", disableScrollToActiveOnOptionsChanged: \"disableScrollToActiveOnOptionsChanged\", ariaLabel: \"ariaLabel\", showToggleAllCheckbox: \"showToggleAllCheckbox\", toggleAllCheckboxChecked: \"toggleAllCheckboxChecked\", toggleAllCheckboxIndeterminate: \"toggleAllCheckboxIndeterminate\", toggleAllCheckboxTooltipMessage: \"toggleAllCheckboxTooltipMessage\", toogleAllCheckboxTooltipPosition: \"toogleAllCheckboxTooltipPosition\", hideClearSearchButton: \"hideClearSearchButton\", alwaysRestoreSelectedOptionsMulti: \"alwaysRestoreSelectedOptionsMulti\" }, outputs: { toggleAll: \"toggleAll\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSelectSearchComponent_1),\n multi: true\n }\n ])], ngContentSelectors: _c4, decls: 11, vars: 14, consts: [[\"matInput\", \"\", 1, \"mat-select-search-input\", \"mat-select-search-hidden\"], [1, \"mat-select-search-inner\", \"mat-typography\", \"mat-datepicker-content\", \"mat-tab-header\", 3, \"ngClass\"], [\"innerSelectSearch\", \"\"], [\"class\", \"mat-select-search-toggle-all-checkbox\", \"matTooltipClass\", \"ngx-mat-select-search-toggle-all-tooltip\", 3, \"color\", \"checked\", \"indeterminate\", \"matTooltip\", \"matTooltipPosition\", \"change\", 4, \"ngIf\"], [\"autocomplete\", \"off\", 1, \"mat-select-search-input\", \"mat-input-element\", 3, \"type\", \"formControl\", \"placeholder\", \"keydown\", \"keyup\", \"blur\"], [\"searchSelectInput\", \"\"], [\"class\", \"mat-select-search-spinner\", \"diameter\", \"16\", 4, \"ngIf\"], [\"mat-button\", \"\", \"mat-icon-button\", \"\", \"aria-label\", \"Clear\", \"class\", \"mat-select-search-clear\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"mat-select-search-no-entries-found\", 4, \"ngIf\"], [\"matTooltipClass\", \"ngx-mat-select-search-toggle-all-tooltip\", 1, \"mat-select-search-toggle-all-checkbox\", 3, \"color\", \"checked\", \"indeterminate\", \"matTooltip\", \"matTooltipPosition\", \"change\"], [\"diameter\", \"16\", 1, \"mat-select-search-spinner\"], [\"mat-button\", \"\", \"mat-icon-button\", \"\", \"aria-label\", \"Clear\", 1, \"mat-select-search-clear\", 3, \"click\"], [4, \"ngIf\", \"ngIfElse\"], [\"defaultIcon\", \"\"], [1, \"mat-select-search-no-entries-found\"]], template: function MatSelectSearchComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c2);\n ɵngcc0.ɵɵelement(0, \"input\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵtemplate(3, MatSelectSearchComponent_mat_checkbox_3_Template, 1, 5, \"mat-checkbox\", 3);\n ɵngcc0.ɵɵelementStart(4, \"input\", 4, 5);\n ɵngcc0.ɵɵlistener(\"keydown\", function MatSelectSearchComponent_Template_input_keydown_4_listener($event) { return ctx._handleKeydown($event); })(\"keyup\", function MatSelectSearchComponent_Template_input_keyup_4_listener($event) { return ctx._handleKeyup($event); })(\"blur\", function MatSelectSearchComponent_Template_input_blur_4_listener() { return ctx.onBlur(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, MatSelectSearchComponent_mat_spinner_6_Template, 1, 0, \"mat-spinner\", 6);\n ɵngcc0.ɵɵtemplate(7, MatSelectSearchComponent_button_7_Template, 4, 2, \"button\", 7);\n ɵngcc0.ɵɵprojection(8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, MatSelectSearchComponent_div_9_Template, 2, 1, \"div\", 8);\n ɵngcc0.ɵɵpipe(10, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(11, _c3, ctx.matSelect.multiple, ctx._isToggleAllCheckboxVisible()));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx._isToggleAllCheckboxVisible());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"type\", ctx.type)(\"formControl\", ctx._formControl)(\"placeholder\", ctx.placeholderLabel);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.ariaLabel);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.searching);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.hideClearSearchButton && ctx.value && !ctx.searching);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(10, 9, ctx._showNoEntriesFound$));\n } }, directives: [ɵngcc3.NgClass, ɵngcc3.NgIf, ɵngcc4.DefaultValueAccessor, ɵngcc4.NgControlStatus, ɵngcc4.FormControlDirective, ɵngcc5.MatCheckbox, ɵngcc6.MatTooltip, ɵngcc7.MatSpinner, ɵngcc8.MatButton, ɵngcc9.MatIcon], pipes: [ɵngcc3.AsyncPipe], styles: [\".mat-select-search-hidden[_ngcontent-%COMP%]{visibility:hidden}.mat-select-search-inner[_ngcontent-%COMP%]{position:absolute;top:0;width:100%;border-bottom-width:1px;border-bottom-style:solid;z-index:100;font-size:inherit;box-shadow:none;border-radius:4px 4px 0 0;-webkit-transform:translate3d(0,0,0)}.mat-select-search-inner.mat-select-search-inner-multiple[_ngcontent-%COMP%]{width:100%}.mat-select-search-inner.mat-select-search-inner-multiple.mat-select-search-inner-toggle-all[_ngcontent-%COMP%]{display:flex;align-items:center}.mat-select-search-inner[_ngcontent-%COMP%] .mat-input-element[_ngcontent-%COMP%]{flex-basis:auto}.mat-select-search-inner[_ngcontent-%COMP%] .mat-input-element[_ngcontent-%COMP%]:-ms-input-placeholder{-ms-user-select:text} .mat-select-search-panel{transform:none!important;overflow-x:hidden}.mat-select-search-input[_ngcontent-%COMP%]{padding:16px 44px 16px 16px;box-sizing:border-box;width:100%}[dir=rtl][_nghost-%COMP%] .mat-select-search-input[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-input[_ngcontent-%COMP%]{padding-right:16px;padding-left:44px}.mat-select-search-no-entries-found[_ngcontent-%COMP%]{padding:16px}.mat-select-search-clear[_ngcontent-%COMP%]{position:absolute;right:4px;top:5px}[dir=rtl][_nghost-%COMP%] .mat-select-search-clear[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-clear[_ngcontent-%COMP%]{right:auto;left:4px}.mat-select-search-spinner[_ngcontent-%COMP%]{position:absolute;right:16px;top:calc(50% - 8px)}[dir=rtl][_nghost-%COMP%] .mat-select-search-spinner[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-spinner[_ngcontent-%COMP%]{right:auto;left:16px}.mat-select-search-inside-mat-option[_nghost-%COMP%] .mat-select-search-input[_ngcontent-%COMP%]{padding-top:0;padding-bottom:0;height:3em;line-height:3em}.mat-select-search-inside-mat-option[_nghost-%COMP%] .mat-select-search-clear[_ngcontent-%COMP%]{top:3px} .mat-option[aria-disabled=true].contains-mat-select-search{position:static;padding:0} .mat-option[aria-disabled=true].contains-mat-select-search .mat-icon{margin-right:0;margin-left:0} .mat-option[aria-disabled=true].contains-mat-select-search .mat-option-pseudo-checkbox{display:none} .mat-option[aria-disabled=true].contains-mat-select-search.mat-select-search-no-entries-found{height:6em}.mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%]{padding-left:16px;padding-bottom:2px}[dir=rtl][_nghost-%COMP%] .mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%]{padding-left:0;padding-right:16px}\"], changeDetection: 0 });\nMatSelectSearchComponent.ctorParameters = () => [\n { type: MatSelect, decorators: [{ type: Inject, args: [MatSelect,] }] },\n { type: ChangeDetectorRef },\n { type: ViewportRuler },\n { type: MatOption, decorators: [{ type: Optional }, { type: Inject, args: [MatOption,] }] },\n { type: LiveAnnouncer },\n { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MatFormField,] }] }\n];\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"placeholderLabel\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"type\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"noEntriesFoundLabel\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"indexAndLengthScreenReaderText\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"clearSearchInput\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"searching\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"disableInitialFocus\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"enableClearOnEscapePressed\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"preventHomeEndKeyPropagation\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"disableScrollToActiveOnOptionsChanged\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"ariaLabel\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"showToggleAllCheckbox\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"toggleAllCheckboxChecked\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"toggleAllCheckboxIndeterminate\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"toggleAllCheckboxTooltipMessage\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"toogleAllCheckboxTooltipPosition\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"hideClearSearchButton\", void 0);\n__decorate([\n Input()\n], MatSelectSearchComponent.prototype, \"alwaysRestoreSelectedOptionsMulti\", void 0);\n__decorate([\n Output()\n], MatSelectSearchComponent.prototype, \"toggleAll\", void 0);\n__decorate([\n ViewChild('searchSelectInput', { read: ElementRef, static: true })\n], MatSelectSearchComponent.prototype, \"searchSelectInput\", void 0);\n__decorate([\n ViewChild('innerSelectSearch', { read: ElementRef, static: true })\n], MatSelectSearchComponent.prototype, \"innerSelectSearch\", void 0);\n__decorate([\n ContentChild(MatSelectSearchClearDirective, { static: false })\n], MatSelectSearchComponent.prototype, \"clearIcon\", void 0);\n__decorate([\n HostBinding('class.mat-select-search-inside-mat-option')\n], MatSelectSearchComponent.prototype, \"isInsideMatOption\", null);\nMatSelectSearchComponent = MatSelectSearchComponent_1 = __decorate([ __param(0, Inject(MatSelect)),\n __param(3, Optional()), __param(3, Inject(MatOption)),\n __param(5, Optional()), __param(5, Inject(MatFormField))\n], MatSelectSearchComponent);\n\n/**\n * Copyright (c) 2018 Bithost GmbH All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MatSelectSearchVersion = '3.3.3';\nlet NgxMatSelectSearchModule = class NgxMatSelectSearchModule {\n};\nNgxMatSelectSearchModule.ɵfac = function NgxMatSelectSearchModule_Factory(t) { return new (t || NgxMatSelectSearchModule)(); };\nNgxMatSelectSearchModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgxMatSelectSearchModule });\nNgxMatSelectSearchModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatTooltipModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectSearchClearDirective, [{\n type: Directive,\n args: [{\n selector: '[ngxMatSelectSearchClear]'\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectSearchComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-select-search',\n template: \"\\n\\n\\n\\n\\n\\n \\n\\n \\n \\n\\n \\n\\n \\n\\n\\n\\n
\\n {{noEntriesFoundLabel}}\\n
\\n\\n\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSelectSearchComponent_1),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-select-search-hidden{visibility:hidden}.mat-select-search-inner{position:absolute;top:0;width:100%;border-bottom-width:1px;border-bottom-style:solid;z-index:100;font-size:inherit;box-shadow:none;border-radius:4px 4px 0 0;-webkit-transform:translate3d(0,0,0)}.mat-select-search-inner.mat-select-search-inner-multiple{width:100%}.mat-select-search-inner.mat-select-search-inner-multiple.mat-select-search-inner-toggle-all{display:flex;align-items:center}.mat-select-search-inner .mat-input-element{flex-basis:auto}.mat-select-search-inner .mat-input-element:-ms-input-placeholder{-ms-user-select:text}::ng-deep .mat-select-search-panel{transform:none!important;overflow-x:hidden}.mat-select-search-input{padding:16px 44px 16px 16px;box-sizing:border-box;width:100%}:host-context([dir=rtl]) .mat-select-search-input{padding-right:16px;padding-left:44px}.mat-select-search-no-entries-found{padding:16px}.mat-select-search-clear{position:absolute;right:4px;top:5px}:host-context([dir=rtl]) .mat-select-search-clear{right:auto;left:4px}.mat-select-search-spinner{position:absolute;right:16px;top:calc(50% - 8px)}:host-context([dir=rtl]) .mat-select-search-spinner{right:auto;left:16px}:host.mat-select-search-inside-mat-option .mat-select-search-input{padding-top:0;padding-bottom:0;height:3em;line-height:3em}:host.mat-select-search-inside-mat-option .mat-select-search-clear{top:3px}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search{position:static;padding:0}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search .mat-icon{margin-right:0;margin-left:0}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search .mat-option-pseudo-checkbox{display:none}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search.mat-select-search-no-entries-found{height:6em}.mat-select-search-toggle-all-checkbox{padding-left:16px;padding-bottom:2px}:host-context([dir=rtl]) .mat-select-search-toggle-all-checkbox{padding-left:0;padding-right:16px}\"]\n }]\n }], function () { return [{ type: ɵngcc10.MatSelect, decorators: [{\n type: Inject,\n args: [MatSelect]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.ViewportRuler }, { type: ɵngcc11.MatOption, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MatOption]\n }] }, { type: ɵngcc2.LiveAnnouncer }, { type: ɵngcc12.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MatFormField]\n }] }]; }, { placeholderLabel: [{\n type: Input\n }], type: [{\n type: Input\n }], noEntriesFoundLabel: [{\n type: Input\n }], indexAndLengthScreenReaderText: [{\n type: Input\n }], clearSearchInput: [{\n type: Input\n }], searching: [{\n type: Input\n }], disableInitialFocus: [{\n type: Input\n }], enableClearOnEscapePressed: [{\n type: Input\n }], preventHomeEndKeyPropagation: [{\n type: Input\n }], disableScrollToActiveOnOptionsChanged: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], showToggleAllCheckbox: [{\n type: Input\n }], toggleAllCheckboxChecked: [{\n type: Input\n }], toggleAllCheckboxIndeterminate: [{\n type: Input\n }], toggleAllCheckboxTooltipMessage: [{\n type: Input\n }], toogleAllCheckboxTooltipPosition: [{\n type: Input\n }], hideClearSearchButton: [{\n type: Input\n }], alwaysRestoreSelectedOptionsMulti: [{\n type: Input\n }], toggleAll: [{\n type: Output\n }], isInsideMatOption: [{\n type: HostBinding,\n args: ['class.mat-select-search-inside-mat-option']\n }], searchSelectInput: [{\n type: ViewChild,\n args: ['searchSelectInput', { read: ElementRef, static: true }]\n }], innerSelectSearch: [{\n type: ViewChild,\n args: ['innerSelectSearch', { read: ElementRef, static: true }]\n }], clearIcon: [{\n type: ContentChild,\n args: [MatSelectSearchClearDirective, { static: false }]\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMatSelectSearchModule, { declarations: function () { return [MatSelectSearchComponent, MatSelectSearchClearDirective]; }, imports: function () { return [CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatTooltipModule]; }, exports: function () { return [MatSelectSearchComponent, MatSelectSearchClearDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatSelectSearchModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatTooltipModule\n ],\n declarations: [\n MatSelectSearchComponent,\n MatSelectSearchClearDirective\n ],\n exports: [\n MatSelectSearchComponent,\n MatSelectSearchClearDirective\n ]\n }]\n }], null, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSelectSearchComponent, MatSelectSearchVersion, NgxMatSelectSearchModule, MatSelectSearchClearDirective as ɵa };\n\n//# sourceMappingURL=ngx-mat-select-search.js.map","import { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nexport class Notification {\n constructor(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n observe(observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n do(next, error, complete) {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n accept(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n }\n toObservable() {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n static createNext(value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n static createError(err) {\n return new Notification('E', undefined, err);\n }\n static createComplete() {\n return Notification.completeNotification;\n }\n}\nNotification.completeNotification = new Notification('C');\nNotification.undefinedValueNotification = new Notification('N', undefined);\n//# sourceMappingURL=Notification.js.map","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","import { Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, NgModule } from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Content of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"*\", [[\"mat-card-footer\"]]];\nconst _c1 = [\"*\", \"mat-card-footer\"];\nconst _c2 = [[[\"\", \"mat-card-avatar\", \"\"], [\"\", \"matCardAvatar\", \"\"]], [[\"mat-card-title\"], [\"mat-card-subtitle\"], [\"\", \"mat-card-title\", \"\"], [\"\", \"mat-card-subtitle\", \"\"], [\"\", \"matCardTitle\", \"\"], [\"\", \"matCardSubtitle\", \"\"]], \"*\"];\nconst _c3 = [\"[mat-card-avatar], [matCardAvatar]\", \"mat-card-title, mat-card-subtitle,\\n [mat-card-title], [mat-card-subtitle],\\n [matCardTitle], [matCardSubtitle]\", \"*\"];\nconst _c4 = [[[\"mat-card-title\"], [\"mat-card-subtitle\"], [\"\", \"mat-card-title\", \"\"], [\"\", \"mat-card-subtitle\", \"\"], [\"\", \"matCardTitle\", \"\"], [\"\", \"matCardSubtitle\", \"\"]], [[\"img\"]], \"*\"];\nconst _c5 = [\"mat-card-title, mat-card-subtitle,\\n [mat-card-title], [mat-card-subtitle],\\n [matCardTitle], [matCardSubtitle]\", \"img\", \"*\"];\nclass MatCardContent {\n}\nMatCardContent.ɵfac = function MatCardContent_Factory(t) { return new (t || MatCardContent)(); };\nMatCardContent.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardContent, selectors: [[\"mat-card-content\"], [\"\", \"mat-card-content\", \"\"], [\"\", \"matCardContent\", \"\"]], hostAttrs: [1, \"mat-card-content\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardContent, [{\n type: Directive,\n args: [{\n selector: 'mat-card-content, [mat-card-content], [matCardContent]',\n host: { 'class': 'mat-card-content' }\n }]\n }], null, null); })();\n/**\n * Title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardTitle {\n}\nMatCardTitle.ɵfac = function MatCardTitle_Factory(t) { return new (t || MatCardTitle)(); };\nMatCardTitle.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardTitle, selectors: [[\"mat-card-title\"], [\"\", \"mat-card-title\", \"\"], [\"\", \"matCardTitle\", \"\"]], hostAttrs: [1, \"mat-card-title\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardTitle, [{\n type: Directive,\n args: [{\n selector: `mat-card-title, [mat-card-title], [matCardTitle]`,\n host: {\n 'class': 'mat-card-title'\n }\n }]\n }], null, null); })();\n/**\n * Sub-title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardSubtitle {\n}\nMatCardSubtitle.ɵfac = function MatCardSubtitle_Factory(t) { return new (t || MatCardSubtitle)(); };\nMatCardSubtitle.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardSubtitle, selectors: [[\"mat-card-subtitle\"], [\"\", \"mat-card-subtitle\", \"\"], [\"\", \"matCardSubtitle\", \"\"]], hostAttrs: [1, \"mat-card-subtitle\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardSubtitle, [{\n type: Directive,\n args: [{\n selector: `mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]`,\n host: {\n 'class': 'mat-card-subtitle'\n }\n }]\n }], null, null); })();\n/**\n * Action section of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardActions {\n constructor() {\n /** Position of the actions inside the card. */\n this.align = 'start';\n }\n}\nMatCardActions.ɵfac = function MatCardActions_Factory(t) { return new (t || MatCardActions)(); };\nMatCardActions.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardActions, selectors: [[\"mat-card-actions\"]], hostAttrs: [1, \"mat-card-actions\"], hostVars: 2, hostBindings: function MatCardActions_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"mat-card-actions-align-end\", ctx.align === \"end\");\n } }, inputs: { align: \"align\" }, exportAs: [\"matCardActions\"] });\nMatCardActions.propDecorators = {\n align: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardActions, [{\n type: Directive,\n args: [{\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-card-actions',\n '[class.mat-card-actions-align-end]': 'align === \"end\"'\n }\n }]\n }], function () { return []; }, { align: [{\n type: Input\n }] }); })();\n/**\n * Footer of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardFooter {\n}\nMatCardFooter.ɵfac = function MatCardFooter_Factory(t) { return new (t || MatCardFooter)(); };\nMatCardFooter.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardFooter, selectors: [[\"mat-card-footer\"]], hostAttrs: [1, \"mat-card-footer\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardFooter, [{\n type: Directive,\n args: [{\n selector: 'mat-card-footer',\n host: { 'class': 'mat-card-footer' }\n }]\n }], null, null); })();\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardImage {\n}\nMatCardImage.ɵfac = function MatCardImage_Factory(t) { return new (t || MatCardImage)(); };\nMatCardImage.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardImage, selectors: [[\"\", \"mat-card-image\", \"\"], [\"\", \"matCardImage\", \"\"]], hostAttrs: [1, \"mat-card-image\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardImage, [{\n type: Directive,\n args: [{\n selector: '[mat-card-image], [matCardImage]',\n host: { 'class': 'mat-card-image' }\n }]\n }], null, null); })();\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardSmImage {\n}\nMatCardSmImage.ɵfac = function MatCardSmImage_Factory(t) { return new (t || MatCardSmImage)(); };\nMatCardSmImage.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardSmImage, selectors: [[\"\", \"mat-card-sm-image\", \"\"], [\"\", \"matCardImageSmall\", \"\"]], hostAttrs: [1, \"mat-card-sm-image\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardSmImage, [{\n type: Directive,\n args: [{\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: { 'class': 'mat-card-sm-image' }\n }]\n }], null, null); })();\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardMdImage {\n}\nMatCardMdImage.ɵfac = function MatCardMdImage_Factory(t) { return new (t || MatCardMdImage)(); };\nMatCardMdImage.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardMdImage, selectors: [[\"\", \"mat-card-md-image\", \"\"], [\"\", \"matCardImageMedium\", \"\"]], hostAttrs: [1, \"mat-card-md-image\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardMdImage, [{\n type: Directive,\n args: [{\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: { 'class': 'mat-card-md-image' }\n }]\n }], null, null); })();\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardLgImage {\n}\nMatCardLgImage.ɵfac = function MatCardLgImage_Factory(t) { return new (t || MatCardLgImage)(); };\nMatCardLgImage.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardLgImage, selectors: [[\"\", \"mat-card-lg-image\", \"\"], [\"\", \"matCardImageLarge\", \"\"]], hostAttrs: [1, \"mat-card-lg-image\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardLgImage, [{\n type: Directive,\n args: [{\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: { 'class': 'mat-card-lg-image' }\n }]\n }], null, null); })();\n/**\n * Large image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardXlImage {\n}\nMatCardXlImage.ɵfac = function MatCardXlImage_Factory(t) { return new (t || MatCardXlImage)(); };\nMatCardXlImage.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardXlImage, selectors: [[\"\", \"mat-card-xl-image\", \"\"], [\"\", \"matCardImageXLarge\", \"\"]], hostAttrs: [1, \"mat-card-xl-image\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardXlImage, [{\n type: Directive,\n args: [{\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: { 'class': 'mat-card-xl-image' }\n }]\n }], null, null); })();\n/**\n * Avatar image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardAvatar {\n}\nMatCardAvatar.ɵfac = function MatCardAvatar_Factory(t) { return new (t || MatCardAvatar)(); };\nMatCardAvatar.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCardAvatar, selectors: [[\"\", \"mat-card-avatar\", \"\"], [\"\", \"matCardAvatar\", \"\"]], hostAttrs: [1, \"mat-card-avatar\"] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardAvatar, [{\n type: Directive,\n args: [{\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: { 'class': 'mat-card-avatar' }\n }]\n }], null, null); })();\n/**\n * A basic content container component that adds the styles of a Material design card.\n *\n * While this component can be used alone, it also provides a number\n * of preset styles for common card sections, including:\n * - mat-card-title\n * - mat-card-subtitle\n * - mat-card-content\n * - mat-card-actions\n * - mat-card-footer\n */\nclass MatCard {\n // @breaking-change 9.0.0 `_animationMode` parameter to be made required.\n constructor(_animationMode) {\n this._animationMode = _animationMode;\n }\n}\nMatCard.ɵfac = function MatCard_Factory(t) { return new (t || MatCard)(ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); };\nMatCard.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatCard, selectors: [[\"mat-card\"]], hostAttrs: [1, \"mat-card\", \"mat-focus-indicator\"], hostVars: 2, hostBindings: function MatCard_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\");\n } }, exportAs: [\"matCard\"], ngContentSelectors: _c1, decls: 2, vars: 0, template: function MatCard_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c0);\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵprojection(1, 1);\n } }, styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}._mat-animation-noopable.mat-card{transition:none;animation:none}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions:not(.mat-card-actions-align-end) .mat-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-raised-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-actions-align-end .mat-button:last-child,.mat-card-actions-align-end .mat-raised-button:last-child,.mat-card-actions-align-end .mat-stroked-button:last-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\\n\"], encapsulation: 2, changeDetection: 0 });\nMatCard.ctorParameters = () => [\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCard, [{\n type: Component,\n args: [{\n selector: 'mat-card',\n exportAs: 'matCard',\n template: \"\\n\\n\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-card mat-focus-indicator',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"'\n },\n styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}._mat-animation-noopable.mat-card{transition:none;animation:none}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions:not(.mat-card-actions-align-end) .mat-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-raised-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-actions-align-end .mat-button:last-child,.mat-card-actions-align-end .mat-raised-button:last-child,.mat-card-actions-align-end .mat-stroked-button:last-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\\n\"]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, null); })();\n/**\n * Component intended to be used within the `` component. It adds styles for a\n * preset header section (i.e. a title, subtitle, and avatar layout).\n * @docs-private\n */\nclass MatCardHeader {\n}\nMatCardHeader.ɵfac = function MatCardHeader_Factory(t) { return new (t || MatCardHeader)(); };\nMatCardHeader.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatCardHeader, selectors: [[\"mat-card-header\"]], hostAttrs: [1, \"mat-card-header\"], ngContentSelectors: _c3, decls: 4, vars: 0, consts: [[1, \"mat-card-header-text\"]], template: function MatCardHeader_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c2);\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 0);\n ɵngcc0.ɵɵprojection(2, 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(3, 2);\n } }, encapsulation: 2, changeDetection: 0 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardHeader, [{\n type: Component,\n args: [{\n selector: 'mat-card-header',\n template: \"\\n
\\n \\n
\\n\\n\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card-header' }\n }]\n }], null, null); })();\n/**\n * Component intended to be used within the `` component. It adds styles for a preset\n * layout that groups an image with a title section.\n * @docs-private\n */\nclass MatCardTitleGroup {\n}\nMatCardTitleGroup.ɵfac = function MatCardTitleGroup_Factory(t) { return new (t || MatCardTitleGroup)(); };\nMatCardTitleGroup.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatCardTitleGroup, selectors: [[\"mat-card-title-group\"]], hostAttrs: [1, \"mat-card-title-group\"], ngContentSelectors: _c5, decls: 4, vars: 0, template: function MatCardTitleGroup_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c4);\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵprojection(2, 1);\n ɵngcc0.ɵɵprojection(3, 2);\n } }, encapsulation: 2, changeDetection: 0 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardTitleGroup, [{\n type: Component,\n args: [{\n selector: 'mat-card-title-group',\n template: \"
\\n \\n
\\n\\n\\n\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card-title-group' }\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatCardModule {\n}\nMatCardModule.ɵfac = function MatCardModule_Factory(t) { return new (t || MatCardModule)(); };\nMatCardModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatCardModule });\nMatCardModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[MatCommonModule], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatCardModule, { declarations: function () { return [MatCard, MatCardHeader, MatCardTitleGroup, MatCardContent, MatCardTitle, MatCardSubtitle, MatCardActions, MatCardFooter, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardImage, MatCardXlImage, MatCardAvatar]; }, imports: function () { return [MatCommonModule]; }, exports: function () { return [MatCard, MatCardHeader, MatCardTitleGroup, MatCardContent, MatCardTitle, MatCardSubtitle, MatCardActions, MatCardFooter, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardImage, MatCardXlImage, MatCardAvatar, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCardModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule,\n ],\n declarations: [\n MatCard, MatCardHeader, MatCardTitleGroup, MatCardContent, MatCardTitle, MatCardSubtitle,\n MatCardActions, MatCardFooter, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardImage,\n MatCardXlImage, MatCardAvatar,\n ]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatCard, MatCardActions, MatCardAvatar, MatCardContent, MatCardFooter, MatCardHeader, MatCardImage, MatCardLgImage, MatCardMdImage, MatCardModule, MatCardSmImage, MatCardSubtitle, MatCardTitle, MatCardTitleGroup, MatCardXlImage };\n\n//# sourceMappingURL=card.js.map","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","import { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return (source) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nclass ThrowIfEmptyOperator {\n constructor(errorFactory) {\n this.errorFactory = errorFactory;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\nclass ThrowIfEmptySubscriber extends Subscriber {\n constructor(destination, errorFactory) {\n super(destination);\n this.errorFactory = errorFactory;\n this.hasValue = false;\n }\n _next(value) {\n this.hasValue = true;\n this.destination.next(value);\n }\n _complete() {\n if (!this.hasValue) {\n let err;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n }\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n//# sourceMappingURL=Subject.js.map","import { InjectionToken, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { _getShadowRoot, Platform } from '@angular/cdk/platform';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Base reference size of the spinner.\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/platform';\nimport * as ɵngcc2 from '@angular/common';\n\nfunction MatProgressSpinner__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"animation-name\", \"mat-progress-spinner-stroke-rotate-\" + ctx_r0._spinnerAnimationLabel)(\"stroke-dashoffset\", ctx_r0._getStrokeDashOffset(), \"px\")(\"stroke-dasharray\", ctx_r0._getStrokeCircumference(), \"px\")(\"stroke-width\", ctx_r0._getCircleStrokeWidth(), \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r0._getCircleRadius());\n} }\nfunction MatProgressSpinner__svg_circle_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"stroke-dashoffset\", ctx_r1._getStrokeDashOffset(), \"px\")(\"stroke-dasharray\", ctx_r1._getStrokeCircumference(), \"px\")(\"stroke-width\", ctx_r1._getCircleStrokeWidth(), \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r1._getCircleRadius());\n} }\nfunction MatSpinner__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"animation-name\", \"mat-progress-spinner-stroke-rotate-\" + ctx_r0._spinnerAnimationLabel)(\"stroke-dashoffset\", ctx_r0._getStrokeDashOffset(), \"px\")(\"stroke-dasharray\", ctx_r0._getStrokeCircumference(), \"px\")(\"stroke-width\", ctx_r0._getCircleStrokeWidth(), \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r0._getCircleRadius());\n} }\nfunction MatSpinner__svg_circle_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"stroke-dashoffset\", ctx_r1._getStrokeDashOffset(), \"px\")(\"stroke-dasharray\", ctx_r1._getStrokeCircumference(), \"px\")(\"stroke-width\", ctx_r1._getCircleStrokeWidth(), \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r1._getCircleRadius());\n} }\nconst _c0 = \".mat-progress-spinner{display:block;position:relative;overflow:hidden}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.cdk-high-contrast-active .mat-progress-spinner circle{stroke:currentColor;stroke:CanvasText}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] svg{animation:mat-progress-spinner-stroke-rotate-fallback 10000ms cubic-bezier(0.87, 0.03, 0.33, 1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0deg)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\\n\";\nconst BASE_SIZE = 100;\n/**\n * Base reference stroke width of the spinner.\n * @docs-private\n */\nconst BASE_STROKE_WIDTH = 10;\n// Boilerplate for applying mixins to MatProgressSpinner.\n/** @docs-private */\nclass MatProgressSpinnerBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatProgressSpinnerMixinBase = mixinColor(MatProgressSpinnerBase, 'primary');\n/** Injection token to be used to override the default options for `mat-progress-spinner`. */\nconst MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = new InjectionToken('mat-progress-spinner-default-options', {\n providedIn: 'root',\n factory: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY() {\n return { diameter: BASE_SIZE };\n}\n// .0001 percentage difference is necessary in order to avoid unwanted animation frames\n// for example because the animation duration is 4 seconds, .1% accounts to 4ms\n// which are enough to see the flicker described in\n// https://github.com/angular/components/issues/8984\nconst INDETERMINATE_ANIMATION_TEMPLATE = `\n @keyframes mat-progress-spinner-stroke-rotate-DIAMETER {\n 0% { stroke-dashoffset: START_VALUE; transform: rotate(0); }\n 12.5% { stroke-dashoffset: END_VALUE; transform: rotate(0); }\n 12.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n 25% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n\n 25.0001% { stroke-dashoffset: START_VALUE; transform: rotate(270deg); }\n 37.5% { stroke-dashoffset: END_VALUE; transform: rotate(270deg); }\n 37.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n 50% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n\n 50.0001% { stroke-dashoffset: START_VALUE; transform: rotate(180deg); }\n 62.5% { stroke-dashoffset: END_VALUE; transform: rotate(180deg); }\n 62.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n 75% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n\n 75.0001% { stroke-dashoffset: START_VALUE; transform: rotate(90deg); }\n 87.5% { stroke-dashoffset: END_VALUE; transform: rotate(90deg); }\n 87.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n 100% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n }\n`;\n/**\n * `` component.\n */\nclass MatProgressSpinner extends _MatProgressSpinnerMixinBase {\n constructor(_elementRef, platform, _document, animationMode, defaults) {\n super(_elementRef);\n this._elementRef = _elementRef;\n this._document = _document;\n this._diameter = BASE_SIZE;\n this._value = 0;\n this._fallbackAnimation = false;\n /** Mode of the progress circle */\n this.mode = 'determinate';\n const trackedDiameters = MatProgressSpinner._diameters;\n this._spinnerAnimationLabel = this._getSpinnerAnimationLabel();\n // The base size is already inserted via the component's structural styles. We still\n // need to track it so we don't end up adding the same styles again.\n if (!trackedDiameters.has(_document.head)) {\n trackedDiameters.set(_document.head, new Set([BASE_SIZE]));\n }\n this._fallbackAnimation = platform.EDGE || platform.TRIDENT;\n this._noopAnimations = animationMode === 'NoopAnimations' &&\n (!!defaults && !defaults._forceAnimations);\n if (defaults) {\n if (defaults.diameter) {\n this.diameter = defaults.diameter;\n }\n if (defaults.strokeWidth) {\n this.strokeWidth = defaults.strokeWidth;\n }\n }\n }\n /** The diameter of the progress spinner (will set width and height of svg). */\n get diameter() { return this._diameter; }\n set diameter(size) {\n this._diameter = coerceNumberProperty(size);\n this._spinnerAnimationLabel = this._getSpinnerAnimationLabel();\n // If this is set before `ngOnInit`, the style root may not have been resolved yet.\n if (!this._fallbackAnimation && this._styleRoot) {\n this._attachStyleNode();\n }\n }\n /** Stroke width of the progress spinner. */\n get strokeWidth() {\n return this._strokeWidth || this.diameter / 10;\n }\n set strokeWidth(value) {\n this._strokeWidth = coerceNumberProperty(value);\n }\n /** Value of the progress circle. */\n get value() {\n return this.mode === 'determinate' ? this._value : 0;\n }\n set value(newValue) {\n this._value = Math.max(0, Math.min(100, coerceNumberProperty(newValue)));\n }\n ngOnInit() {\n const element = this._elementRef.nativeElement;\n // Note that we need to look up the root node in ngOnInit, rather than the constructor, because\n // Angular seems to create the element outside the shadow root and then moves it inside, if the\n // node is inside an `ngIf` and a ShadowDom-encapsulated component.\n this._styleRoot = _getShadowRoot(element) || this._document.head;\n this._attachStyleNode();\n // On IE and Edge, we can't animate the `stroke-dashoffset`\n // reliably so we fall back to a non-spec animation.\n const animationClass = `mat-progress-spinner-indeterminate${this._fallbackAnimation ? '-fallback' : ''}-animation`;\n element.classList.add(animationClass);\n }\n /** The radius of the spinner, adjusted for stroke width. */\n _getCircleRadius() {\n return (this.diameter - BASE_STROKE_WIDTH) / 2;\n }\n /** The view box of the spinner's svg element. */\n _getViewBox() {\n const viewBox = this._getCircleRadius() * 2 + this.strokeWidth;\n return `0 0 ${viewBox} ${viewBox}`;\n }\n /** The stroke circumference of the svg circle. */\n _getStrokeCircumference() {\n return 2 * Math.PI * this._getCircleRadius();\n }\n /** The dash offset of the svg circle. */\n _getStrokeDashOffset() {\n if (this.mode === 'determinate') {\n return this._getStrokeCircumference() * (100 - this._value) / 100;\n }\n // In fallback mode set the circle to 80% and rotate it with CSS.\n if (this._fallbackAnimation && this.mode === 'indeterminate') {\n return this._getStrokeCircumference() * 0.2;\n }\n return null;\n }\n /** Stroke width of the circle in percent. */\n _getCircleStrokeWidth() {\n return this.strokeWidth / this.diameter * 100;\n }\n /** Dynamically generates a style tag containing the correct animation for this diameter. */\n _attachStyleNode() {\n const styleRoot = this._styleRoot;\n const currentDiameter = this._diameter;\n const diameters = MatProgressSpinner._diameters;\n let diametersForElement = diameters.get(styleRoot);\n if (!diametersForElement || !diametersForElement.has(currentDiameter)) {\n const styleTag = this._document.createElement('style');\n styleTag.setAttribute('mat-spinner-animation', this._spinnerAnimationLabel);\n styleTag.textContent = this._getAnimationText();\n styleRoot.appendChild(styleTag);\n if (!diametersForElement) {\n diametersForElement = new Set();\n diameters.set(styleRoot, diametersForElement);\n }\n diametersForElement.add(currentDiameter);\n }\n }\n /** Generates animation styles adjusted for the spinner's diameter. */\n _getAnimationText() {\n const strokeCircumference = this._getStrokeCircumference();\n return INDETERMINATE_ANIMATION_TEMPLATE\n // Animation should begin at 5% and end at 80%\n .replace(/START_VALUE/g, `${0.95 * strokeCircumference}`)\n .replace(/END_VALUE/g, `${0.2 * strokeCircumference}`)\n .replace(/DIAMETER/g, `${this._spinnerAnimationLabel}`);\n }\n /** Returns the circle diameter formatted for use with the animation-name CSS property. */\n _getSpinnerAnimationLabel() {\n // The string of a float point number will include a period ‘.’ character,\n // which is not valid for a CSS animation-name.\n return this.diameter.toString().replace('.', '_');\n }\n}\nMatProgressSpinner.ɵfac = function MatProgressSpinner_Factory(t) { return new (t || MatProgressSpinner)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Platform), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵngcc0.ɵɵdirectiveInject(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS)); };\nMatProgressSpinner.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatProgressSpinner, selectors: [[\"mat-progress-spinner\"]], hostAttrs: [\"role\", \"progressbar\", \"tabindex\", \"-1\", 1, \"mat-progress-spinner\"], hostVars: 10, hostBindings: function MatProgressSpinner_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-valuemin\", ctx.mode === \"determinate\" ? 0 : null)(\"aria-valuemax\", ctx.mode === \"determinate\" ? 100 : null)(\"aria-valuenow\", ctx.mode === \"determinate\" ? ctx.value : null)(\"mode\", ctx.mode);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._noopAnimations);\n } }, inputs: { color: \"color\", mode: \"mode\", diameter: \"diameter\", strokeWidth: \"strokeWidth\", value: \"value\" }, exportAs: [\"matProgressSpinner\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 8, consts: [[\"preserveAspectRatio\", \"xMidYMid meet\", \"focusable\", \"false\", \"aria-hidden\", \"true\", 3, \"ngSwitch\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"animation-name\", \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\"]], template: function MatProgressSpinner_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"svg\", 0);\n ɵngcc0.ɵɵtemplate(1, MatProgressSpinner__svg_circle_1_Template, 1, 9, \"circle\", 1);\n ɵngcc0.ɵɵtemplate(2, MatProgressSpinner__svg_circle_2_Template, 1, 7, \"circle\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.mode === \"indeterminate\");\n ɵngcc0.ɵɵattribute(\"viewBox\", ctx._getViewBox());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n } }, directives: [ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase], styles: [_c0], encapsulation: 2, changeDetection: 0 });\n/**\n * Tracks diameters of existing instances to de-dupe generated styles (default d = 100).\n * We need to keep track of which elements the diameters were attached to, because for\n * elements in the Shadow DOM the style tags are attached to the shadow root, rather\n * than the document head.\n */\nMatProgressSpinner._diameters = new WeakMap();\nMatProgressSpinner.ctorParameters = () => [\n { type: ElementRef },\n { type: Platform },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS,] }] }\n];\nMatProgressSpinner.propDecorators = {\n diameter: [{ type: Input }],\n strokeWidth: [{ type: Input }],\n mode: [{ type: Input }],\n value: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatProgressSpinner, [{\n type: Component,\n args: [{\n selector: 'mat-progress-spinner',\n exportAs: 'matProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'mat-progress-spinner',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\n '[attr.mode]': 'mode'\n },\n inputs: ['color'],\n template: \"\\n\\n\\n\\n \\n \\n\\n \\n\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".mat-progress-spinner{display:block;position:relative;overflow:hidden}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.cdk-high-contrast-active .mat-progress-spinner circle{stroke:currentColor;stroke:CanvasText}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] svg{animation:mat-progress-spinner-stroke-rotate-fallback 10000ms cubic-bezier(0.87, 0.03, 0.33, 1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0deg)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS]\n }] }]; }, { mode: [{\n type: Input\n }], diameter: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\n/**\n * `` component.\n *\n * This is a component definition to be used as a convenience reference to create an\n * indeterminate `` instance.\n */\nclass MatSpinner extends MatProgressSpinner {\n constructor(elementRef, platform, document, animationMode, defaults) {\n super(elementRef, platform, document, animationMode, defaults);\n this.mode = 'indeterminate';\n }\n}\nMatSpinner.ɵfac = function MatSpinner_Factory(t) { return new (t || MatSpinner)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Platform), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵngcc0.ɵɵdirectiveInject(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS)); };\nMatSpinner.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatSpinner, selectors: [[\"mat-spinner\"]], hostAttrs: [\"role\", \"progressbar\", \"mode\", \"indeterminate\", 1, \"mat-spinner\", \"mat-progress-spinner\"], hostVars: 6, hostBindings: function MatSpinner_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._noopAnimations);\n } }, inputs: { color: \"color\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 8, consts: [[\"preserveAspectRatio\", \"xMidYMid meet\", \"focusable\", \"false\", \"aria-hidden\", \"true\", 3, \"ngSwitch\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"animation-name\", \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\"]], template: function MatSpinner_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"svg\", 0);\n ɵngcc0.ɵɵtemplate(1, MatSpinner__svg_circle_1_Template, 1, 9, \"circle\", 1);\n ɵngcc0.ɵɵtemplate(2, MatSpinner__svg_circle_2_Template, 1, 7, \"circle\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.mode === \"indeterminate\");\n ɵngcc0.ɵɵattribute(\"viewBox\", ctx._getViewBox());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n } }, directives: [ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase], styles: [_c0], encapsulation: 2, changeDetection: 0 });\nMatSpinner.ctorParameters = () => [\n { type: ElementRef },\n { type: Platform },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSpinner, [{\n type: Component,\n args: [{\n selector: 'mat-spinner',\n host: {\n 'role': 'progressbar',\n 'mode': 'indeterminate',\n 'class': 'mat-spinner mat-progress-spinner',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter'\n },\n inputs: ['color'],\n template: \"\\n\\n\\n\\n \\n \\n\\n \\n\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".mat-progress-spinner{display:block;position:relative;overflow:hidden}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.cdk-high-contrast-active .mat-progress-spinner circle{stroke:currentColor;stroke:CanvasText}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] svg{animation:mat-progress-spinner-stroke-rotate-fallback 10000ms cubic-bezier(0.87, 0.03, 0.33, 1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0deg)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatProgressSpinnerModule {\n}\nMatProgressSpinnerModule.ɵfac = function MatProgressSpinnerModule_Factory(t) { return new (t || MatProgressSpinnerModule)(); };\nMatProgressSpinnerModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatProgressSpinnerModule });\nMatProgressSpinnerModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[MatCommonModule, CommonModule], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatProgressSpinnerModule, { declarations: function () { return [MatProgressSpinner, MatSpinner]; }, imports: function () { return [MatCommonModule, CommonModule]; }, exports: function () { return [MatProgressSpinner, MatSpinner, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatProgressSpinnerModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CommonModule],\n exports: [\n MatProgressSpinner,\n MatSpinner,\n MatCommonModule\n ],\n declarations: [\n MatProgressSpinner,\n MatSpinner\n ]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, MatProgressSpinner, MatProgressSpinnerModule, MatSpinner };\n\n//# sourceMappingURL=progress-spinner.js.map","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map","import { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n//# sourceMappingURL=SubjectSubscription.js.map","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","import { Subscriber } from './Subscriber';\nexport class InnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n _error(error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n//# sourceMappingURL=InnerSubscriber.js.map","import { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n//# sourceMappingURL=subscribeToResult.js.map","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { InjectionToken, Injectable, Inject, ErrorHandler, NgModule } from '@angular/core';\nimport { ActionsSubject, UPDATE, INIT, ReducerObservable, ScannedActionsSubject, INITIAL_STATE, StateObservable, ReducerManagerDispatcher } from '@ngrx/store';\nimport { EMPTY, Observable, of, merge, queueScheduler, ReplaySubject } from 'rxjs';\nimport { share, filter, map, concatMap, timeout, debounceTime, catchError, take, takeUntil, switchMap, skip, observeOn, withLatestFrom, scan } from 'rxjs/operators';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@ngrx/store';\nclass StoreDevtoolsConfig {\n constructor() {\n this.maxAge = false;\n }\n}\nconst STORE_DEVTOOLS_CONFIG = new InjectionToken('@ngrx/store-devtools Options');\nconst INITIAL_OPTIONS = new InjectionToken('@ngrx/store-devtools Initial Config');\nfunction noMonitor() {\n return null;\n}\nconst DEFAULT_NAME = 'NgRx Store DevTools';\nfunction createConfig(_options) {\n const DEFAULT_OPTIONS = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n // Add all features explicitly. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true,\n lock: true,\n persist: true,\n export: true,\n import: 'custom',\n jump: true,\n skip: true,\n reorder: true,\n dispatch: true,\n test: true,\n },\n };\n let options = typeof _options === 'function' ? _options() : _options;\n const logOnly = options.logOnly\n ? { pause: true, export: true, test: true }\n : false;\n const features = options.features || logOnly || DEFAULT_OPTIONS.features;\n const config = Object.assign({}, DEFAULT_OPTIONS, { features }, options);\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(`Devtools 'maxAge' cannot be less than 2, got ${config.maxAge}`);\n }\n return config;\n}\n\nconst PERFORM_ACTION = 'PERFORM_ACTION';\nconst REFRESH = 'REFRESH';\nconst RESET = 'RESET';\nconst ROLLBACK = 'ROLLBACK';\nconst COMMIT = 'COMMIT';\nconst SWEEP = 'SWEEP';\nconst TOGGLE_ACTION = 'TOGGLE_ACTION';\nconst SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nconst JUMP_TO_STATE = 'JUMP_TO_STATE';\nconst JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nconst IMPORT_STATE = 'IMPORT_STATE';\nconst LOCK_CHANGES = 'LOCK_CHANGES';\nconst PAUSE_RECORDING = 'PAUSE_RECORDING';\nclass PerformAction {\n constructor(action, timestamp) {\n this.action = action;\n this.timestamp = timestamp;\n this.type = PERFORM_ACTION;\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' +\n 'Have you misspelled a constant?');\n }\n }\n}\nclass Refresh {\n constructor() {\n this.type = REFRESH;\n }\n}\nclass Reset {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n}\nclass Rollback {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n}\nclass Commit {\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n}\nclass Sweep {\n constructor() {\n this.type = SWEEP;\n }\n}\nclass ToggleAction {\n constructor(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n}\nclass SetActionsActive {\n constructor(start, end, active = true) {\n this.start = start;\n this.end = end;\n this.active = active;\n this.type = SET_ACTIONS_ACTIVE;\n }\n}\nclass JumpToState {\n constructor(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n}\nclass JumpToAction {\n constructor(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n}\nclass ImportState {\n constructor(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n}\nclass LockChanges {\n constructor(status) {\n this.status = status;\n this.type = LOCK_CHANGES;\n }\n}\nclass PauseRecording {\n constructor(status) {\n this.status = status;\n this.type = PAUSE_RECORDING;\n }\n}\n\nclass DevtoolsDispatcher extends ActionsSubject {\n}\nDevtoolsDispatcher.ɵfac = function DevtoolsDispatcher_Factory(t) { return ɵDevtoolsDispatcher_BaseFactory(t || DevtoolsDispatcher); };\nDevtoolsDispatcher.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: DevtoolsDispatcher, factory: DevtoolsDispatcher.ɵfac });\nconst ɵDevtoolsDispatcher_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(DevtoolsDispatcher);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DevtoolsDispatcher, [{\n type: Injectable\n }], null, null); })();\n\nfunction difference(first, second) {\n return first.filter((item) => second.indexOf(item) < 0);\n}\n/**\n * Provides an app's view into the state of the lifted store.\n */\nfunction unliftState(liftedState) {\n const { computedStates, currentStateIndex } = liftedState;\n // At start up NgRx dispatches init actions,\n // When these init actions are being filtered out by the predicate or safe/block list options\n // we don't have a complete computed states yet.\n // At this point it could happen that we're out of bounds, when this happens we fall back to the last known state\n if (currentStateIndex >= computedStates.length) {\n const { state } = computedStates[computedStates.length - 1];\n return state;\n }\n const { state } = computedStates[currentStateIndex];\n return state;\n}\nfunction unliftAction(liftedState) {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n/**\n * Lifts an app's action into an action on the lifted store.\n */\nfunction liftAction(action) {\n return new PerformAction(action, +Date.now());\n}\n/**\n * Sanitizes given actions with given function.\n */\nfunction sanitizeActions(actionSanitizer, actions) {\n return Object.keys(actions).reduce((sanitizedActions, actionIdx) => {\n const idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(actionSanitizer, actions[idx], idx);\n return sanitizedActions;\n }, {});\n}\n/**\n * Sanitizes given action with given function.\n */\nfunction sanitizeAction(actionSanitizer, action, actionIdx) {\n return Object.assign(Object.assign({}, action), { action: actionSanitizer(action.action, actionIdx) });\n}\n/**\n * Sanitizes given states with given function.\n */\nfunction sanitizeStates(stateSanitizer, states) {\n return states.map((computedState, idx) => ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error,\n }));\n}\n/**\n * Sanitizes given state with given function.\n */\nfunction sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n}\n/**\n * Read the config and tell if actions should be filtered\n */\nfunction shouldFilterActions(config) {\n return config.predicate || config.actionsSafelist || config.actionsBlocklist;\n}\n/**\n * Return a full filtered lifted state\n */\nfunction filterLiftedState(liftedState, predicate, safelist, blocklist) {\n const filteredStagedActionIds = [];\n const filteredActionsById = {};\n const filteredComputedStates = [];\n liftedState.stagedActionIds.forEach((id, idx) => {\n const liftedAction = liftedState.actionsById[id];\n if (!liftedAction)\n return;\n if (idx &&\n isActionFiltered(liftedState.computedStates[idx], liftedAction, predicate, safelist, blocklist)) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return Object.assign(Object.assign({}, liftedState), { stagedActionIds: filteredStagedActionIds, actionsById: filteredActionsById, computedStates: filteredComputedStates });\n}\n/**\n * Return true is the action should be ignored\n */\nfunction isActionFiltered(state, action, predicate, safelist, blockedlist) {\n const predicateMatch = predicate && !predicate(state, action.action);\n const safelistMatch = safelist &&\n !action.action.type.match(safelist.map((s) => escapeRegExp(s)).join('|'));\n const blocklistMatch = blockedlist &&\n action.action.type.match(blockedlist.map((s) => escapeRegExp(s)).join('|'));\n return predicateMatch || safelistMatch || blocklistMatch;\n}\n/**\n * Return string with escaped RegExp special characters\n * https://stackoverflow.com/a/6969486/1337347\n */\nfunction escapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nconst ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION',\n};\nconst REDUX_DEVTOOLS_EXTENSION = new InjectionToken('@ngrx/store-devtools Redux Devtools Extension');\nclass DevtoolsExtension {\n constructor(devtoolsExtension, config, dispatcher) {\n this.config = config;\n this.dispatcher = dispatcher;\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n notify(action, state) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app and the recording\n // is not locked/paused, only send the action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n if (state.isLocked || state.isPaused) {\n return;\n }\n const currentState = unliftState(state);\n if (shouldFilterActions(this.config) &&\n isActionFiltered(currentState, action, this.config.predicate, this.config.actionsSafelist, this.config.actionsBlocklist)) {\n return;\n }\n const sanitizedState = this.config.stateSanitizer\n ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex)\n : currentState;\n const sanitizedAction = this.config.actionSanitizer\n ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId)\n : action;\n this.sendToReduxDevtools(() => this.extensionConnection.send(sanitizedAction, sanitizedState));\n }\n else {\n // Requires full state update\n const sanitizedLiftedState = Object.assign(Object.assign({}, state), { stagedActionIds: state.stagedActionIds, actionsById: this.config.actionSanitizer\n ? sanitizeActions(this.config.actionSanitizer, state.actionsById)\n : state.actionsById, computedStates: this.config.stateSanitizer\n ? sanitizeStates(this.config.stateSanitizer, state.computedStates)\n : state.computedStates });\n this.sendToReduxDevtools(() => this.devtoolsExtension.send(null, sanitizedLiftedState, this.getExtensionConfig(this.config)));\n }\n }\n createChangesObservable() {\n if (!this.devtoolsExtension) {\n return EMPTY;\n }\n return new Observable((subscriber) => {\n const connection = this.devtoolsExtension.connect(this.getExtensionConfig(this.config));\n this.extensionConnection = connection;\n connection.init();\n connection.subscribe((change) => subscriber.next(change));\n return connection.unsubscribe;\n });\n }\n createActionStreams() {\n // Listens to all changes\n const changes$ = this.createChangesObservable().pipe(share());\n // Listen for the start action\n const start$ = changes$.pipe(filter((change) => change.type === ExtensionActionTypes.START));\n // Listen for the stop action\n const stop$ = changes$.pipe(filter((change) => change.type === ExtensionActionTypes.STOP));\n // Listen for lifted actions\n const liftedActions$ = changes$.pipe(filter((change) => change.type === ExtensionActionTypes.DISPATCH), map((change) => this.unwrapAction(change.payload)), concatMap((action) => {\n if (action.type === IMPORT_STATE) {\n // State imports may happen in two situations:\n // 1. Explicitly by user\n // 2. User activated the \"persist state accross reloads\" option\n // and now the state is imported during reload.\n // Because of option 2, we need to give possible\n // lazy loaded reducers time to instantiate.\n // As soon as there is no UPDATE action within 1 second,\n // it is assumed that all reducers are loaded.\n return this.dispatcher.pipe(filter((action) => action.type === UPDATE), timeout(1000), debounceTime(1000), map(() => action), catchError(() => of(action)), take(1));\n }\n else {\n return of(action);\n }\n }));\n // Listen for unlifted actions\n const actions$ = changes$.pipe(filter((change) => change.type === ExtensionActionTypes.ACTION), map((change) => this.unwrapAction(change.payload)));\n const actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n const liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(() => actionsUntilStop$));\n this.liftedActions$ = this.start$.pipe(switchMap(() => liftedUntilStop$));\n }\n unwrapAction(action) {\n return typeof action === 'string' ? eval(`(${action})`) : action;\n }\n getExtensionConfig(config) {\n const extensionOptions = {\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n }\n sendToReduxDevtools(send) {\n try {\n send();\n }\n catch (err) {\n console.warn('@ngrx/store-devtools: something went wrong inside the redux devtools', err);\n }\n }\n}\nDevtoolsExtension.ɵfac = function DevtoolsExtension_Factory(t) { return new (t || DevtoolsExtension)(ɵngcc0.ɵɵinject(REDUX_DEVTOOLS_EXTENSION), ɵngcc0.ɵɵinject(STORE_DEVTOOLS_CONFIG), ɵngcc0.ɵɵinject(DevtoolsDispatcher)); };\nDevtoolsExtension.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: DevtoolsExtension, factory: DevtoolsExtension.ɵfac });\n/** @nocollapse */\nDevtoolsExtension.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [REDUX_DEVTOOLS_EXTENSION,] }] },\n { type: StoreDevtoolsConfig, decorators: [{ type: Inject, args: [STORE_DEVTOOLS_CONFIG,] }] },\n { type: DevtoolsDispatcher }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DevtoolsExtension, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [REDUX_DEVTOOLS_EXTENSION]\n }] }, { type: StoreDevtoolsConfig, decorators: [{\n type: Inject,\n args: [STORE_DEVTOOLS_CONFIG]\n }] }, { type: DevtoolsDispatcher }]; }, null); })();\n\nconst INIT_ACTION = { type: INIT };\nconst RECOMPUTE = '@ngrx/store-devtools/recompute';\nconst RECOMPUTE_ACTION = { type: RECOMPUTE };\n/**\n * Computes the next entry in the log by applying an action.\n */\nfunction computeNextEntry(reducer, action, state, error, errorHandler) {\n if (error) {\n return {\n state,\n error: 'Interrupted by an error up the chain',\n };\n }\n let nextState = state;\n let nextError;\n try {\n nextState = reducer(state, action);\n }\n catch (err) {\n nextError = err.toString();\n errorHandler.handleError(err);\n }\n return {\n state: nextState,\n error: nextError,\n };\n}\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n */\nfunction recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (minInvalidatedStateIndex >= computedStates.length &&\n computedStates.length === stagedActionIds.length) {\n return computedStates;\n }\n const nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n const lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (let i = minInvalidatedStateIndex; i < lastIncludedActionId; i++) {\n const actionId = stagedActionIds[i];\n const action = actionsById[actionId].action;\n const previousEntry = nextComputedStates[i - 1];\n const previousState = previousEntry ? previousEntry.state : committedState;\n const previousError = previousEntry ? previousEntry.error : undefined;\n const shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n const entry = shouldSkip\n ? previousEntry\n : computeNextEntry(reducer, action, previousState, previousError, errorHandler);\n nextComputedStates.push(entry);\n }\n // If the recording is paused, the last state will not be recomputed,\n // because it's essentially not part of the state history.\n if (isPaused) {\n nextComputedStates.push(computedStates[computedStates.length - 1]);\n }\n return nextComputedStates;\n}\nfunction liftInitialState(initialCommittedState, monitorReducer) {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: { 0: liftAction(INIT_ACTION) },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n isLocked: false,\n isPaused: false,\n };\n}\n/**\n * Creates a history state reducer from an app's reducer.\n */\nfunction liftReducerWith(initialCommittedState, initialLiftedState, errorHandler, monitorReducer, options = {}) {\n /**\n * Manages how the history actions modify the history state.\n */\n return (reducer) => (liftedState, liftedAction) => {\n let { monitorState, actionsById, nextActionId, stagedActionIds, skippedActionIds, committedState, currentStateIndex, computedStates, isLocked, isPaused, } = liftedState || initialLiftedState;\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n function commitExcessActions(n) {\n // Auto-commits n-number of excess actions.\n let excess = n;\n let idsToDelete = stagedActionIds.slice(1, excess + 1);\n for (let i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n }\n else {\n delete actionsById[idsToDelete[i]];\n }\n }\n skippedActionIds = skippedActionIds.filter((id) => idsToDelete.indexOf(id) === -1);\n stagedActionIds = [0, ...stagedActionIds.slice(excess + 1)];\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex =\n currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n function commitChanges() {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n }\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n let minInvalidatedStateIndex = 0;\n switch (liftedAction.type) {\n case LOCK_CHANGES: {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case PAUSE_RECORDING: {\n isPaused = liftedAction.status;\n if (isPaused) {\n // Add a pause action to signal the devtools-user the recording is paused.\n // The corresponding state will be overwritten on each update to always contain\n // the latest state (see Actions.PERFORM_ACTION).\n stagedActionIds = [...stagedActionIds, nextActionId];\n actionsById[nextActionId] = new PerformAction({\n type: '@ngrx/devtools/pause',\n }, +Date.now());\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(computedStates[computedStates.length - 1]);\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n }\n else {\n commitChanges();\n }\n break;\n }\n case RESET: {\n // Get back to the state the store was created with.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case COMMIT: {\n commitChanges();\n break;\n }\n case ROLLBACK: {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case TOGGLE_ACTION: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { id: actionId } = liftedAction;\n const index = skippedActionIds.indexOf(actionId);\n if (index === -1) {\n skippedActionIds = [actionId, ...skippedActionIds];\n }\n else {\n skippedActionIds = skippedActionIds.filter((id) => id !== actionId);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId);\n break;\n }\n case SET_ACTIONS_ACTIVE: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { start, end, active } = liftedAction;\n const actionIds = [];\n for (let i = start; i < end; i++)\n actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n }\n else {\n skippedActionIds = [...skippedActionIds, ...actionIds];\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case JUMP_TO_STATE: {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case JUMP_TO_ACTION: {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n const index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1)\n currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case SWEEP: {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);\n break;\n }\n case PERFORM_ACTION: {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n if (isPaused ||\n (liftedState &&\n isActionFiltered(liftedState.computedStates[currentStateIndex], liftedAction, options.predicate, options.actionsSafelist, options.actionsBlocklist))) {\n // If recording is paused or if the action should be ignored, overwrite the last state\n // (corresponds to the pause action) and keep everything else as is.\n // This way, the app gets the new current state while the devtools\n // do not record another action.\n const lastState = computedStates[computedStates.length - 1];\n computedStates = [\n ...computedStates.slice(0, -1),\n computeNextEntry(reducer, liftedAction.action, lastState.state, lastState.error, errorHandler),\n ];\n minInvalidatedStateIndex = Infinity;\n break;\n }\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n const actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n stagedActionIds = [...stagedActionIds, actionId];\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case IMPORT_STATE: {\n // Completely replace everything.\n ({\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused,\n } = liftedAction.nextLiftedState);\n break;\n }\n case INIT: {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case UPDATE: {\n const stateHasErrors = computedStates.filter((state) => state.error).length > 0;\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n }\n else {\n // If not paused/locked, add a new action to signal devtools-user\n // that there was a reducer update.\n if (!isPaused && !isLocked) {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n // Add a new action to only recompute state\n const actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = [...stagedActionIds, actionId];\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n }\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map((cmp) => (Object.assign(Object.assign({}, cmp), { state: reducer(cmp.state, RECOMPUTE_ACTION) })));\n currentStateIndex = stagedActionIds.length - 1;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n default: {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler, isPaused);\n monitorState = monitorReducer(monitorState, liftedAction);\n return {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused,\n };\n };\n}\n\nclass StoreDevtools {\n constructor(dispatcher, actions$, reducers$, extension, scannedActions, errorHandler, initialState, config) {\n const liftedInitialState = liftInitialState(initialState, config.monitor);\n const liftReducer = liftReducerWith(initialState, liftedInitialState, errorHandler, config.monitor, config);\n const liftedAction$ = merge(merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(map(liftAction)), dispatcher, extension.liftedActions$).pipe(observeOn(queueScheduler));\n const liftedReducer$ = reducers$.pipe(map(liftReducer));\n const liftedStateSubject = new ReplaySubject(1);\n const liftedStateSubscription = liftedAction$\n .pipe(withLatestFrom(liftedReducer$), scan(({ state: liftedState }, [action, reducer]) => {\n let reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completely our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(reducedLiftedState, config.predicate, config.actionsSafelist, config.actionsBlocklist);\n }\n // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return { state: reducedLiftedState, action };\n }, { state: liftedInitialState, action: null }))\n .subscribe(({ state, action }) => {\n liftedStateSubject.next(state);\n if (action.type === PERFORM_ACTION) {\n const unliftedAction = action.action;\n scannedActions.next(unliftedAction);\n }\n });\n const extensionStartSubscription = extension.start$.subscribe(() => {\n this.refresh();\n });\n const liftedState$ = liftedStateSubject.asObservable();\n const state$ = liftedState$.pipe(map(unliftState));\n this.extensionStartSubscription = extensionStartSubscription;\n this.stateSubscription = liftedStateSubscription;\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n dispatch(action) {\n this.dispatcher.next(action);\n }\n next(action) {\n this.dispatcher.next(action);\n }\n error(error) { }\n complete() { }\n performAction(action) {\n this.dispatch(new PerformAction(action, +Date.now()));\n }\n refresh() {\n this.dispatch(new Refresh());\n }\n reset() {\n this.dispatch(new Reset(+Date.now()));\n }\n rollback() {\n this.dispatch(new Rollback(+Date.now()));\n }\n commit() {\n this.dispatch(new Commit(+Date.now()));\n }\n sweep() {\n this.dispatch(new Sweep());\n }\n toggleAction(id) {\n this.dispatch(new ToggleAction(id));\n }\n jumpToAction(actionId) {\n this.dispatch(new JumpToAction(actionId));\n }\n jumpToState(index) {\n this.dispatch(new JumpToState(index));\n }\n importState(nextLiftedState) {\n this.dispatch(new ImportState(nextLiftedState));\n }\n lockChanges(status) {\n this.dispatch(new LockChanges(status));\n }\n pauseRecording(status) {\n this.dispatch(new PauseRecording(status));\n }\n}\nStoreDevtools.ɵfac = function StoreDevtools_Factory(t) { return new (t || StoreDevtools)(ɵngcc0.ɵɵinject(DevtoolsDispatcher), ɵngcc0.ɵɵinject(ɵngcc1.ActionsSubject), ɵngcc0.ɵɵinject(ɵngcc1.ReducerObservable), ɵngcc0.ɵɵinject(DevtoolsExtension), ɵngcc0.ɵɵinject(ɵngcc1.ScannedActionsSubject), ɵngcc0.ɵɵinject(ɵngcc0.ErrorHandler), ɵngcc0.ɵɵinject(INITIAL_STATE), ɵngcc0.ɵɵinject(STORE_DEVTOOLS_CONFIG)); };\nStoreDevtools.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: StoreDevtools, factory: StoreDevtools.ɵfac });\n/** @nocollapse */\nStoreDevtools.ctorParameters = () => [\n { type: DevtoolsDispatcher },\n { type: ActionsSubject },\n { type: ReducerObservable },\n { type: DevtoolsExtension },\n { type: ScannedActionsSubject },\n { type: ErrorHandler },\n { type: undefined, decorators: [{ type: Inject, args: [INITIAL_STATE,] }] },\n { type: StoreDevtoolsConfig, decorators: [{ type: Inject, args: [STORE_DEVTOOLS_CONFIG,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StoreDevtools, [{\n type: Injectable\n }], function () { return [{ type: DevtoolsDispatcher }, { type: ɵngcc1.ActionsSubject }, { type: ɵngcc1.ReducerObservable }, { type: DevtoolsExtension }, { type: ɵngcc1.ScannedActionsSubject }, { type: ɵngcc0.ErrorHandler }, { type: undefined, decorators: [{\n type: Inject,\n args: [INITIAL_STATE]\n }] }, { type: StoreDevtoolsConfig, decorators: [{\n type: Inject,\n args: [STORE_DEVTOOLS_CONFIG]\n }] }]; }, null); })();\n\nconst IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken('@ngrx/store-devtools Is Devtools Extension or Monitor Present');\nfunction createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\nfunction createReduxDevtoolsExtension() {\n const extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n if (typeof window === 'object' &&\n typeof window[extensionKey] !== 'undefined') {\n return window[extensionKey];\n }\n else {\n return null;\n }\n}\nfunction createStateObservable(devtools) {\n return devtools.state;\n}\nclass StoreDevtoolsModule {\n static instrument(options = {}) {\n return {\n ngModule: StoreDevtoolsModule,\n providers: [\n DevtoolsExtension,\n DevtoolsDispatcher,\n StoreDevtools,\n {\n provide: INITIAL_OPTIONS,\n useValue: options,\n },\n {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent,\n },\n {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension,\n },\n {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig,\n },\n {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable,\n },\n {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher,\n },\n ],\n };\n }\n}\nStoreDevtoolsModule.ɵfac = function StoreDevtoolsModule_Factory(t) { return new (t || StoreDevtoolsModule)(); };\nStoreDevtoolsModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: StoreDevtoolsModule });\nStoreDevtoolsModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StoreDevtoolsModule, [{\n type: NgModule,\n args: [{}]\n }], null, null); })();\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INITIAL_OPTIONS, RECOMPUTE, StoreDevtools, StoreDevtoolsConfig, StoreDevtoolsModule, IS_EXTENSION_OR_MONITOR_PRESENT as ɵa, createIsExtensionOrMonitorPresent as ɵb, createReduxDevtoolsExtension as ɵc, createStateObservable as ɵd, STORE_DEVTOOLS_CONFIG as ɵe, noMonitor as ɵf, createConfig as ɵg, REDUX_DEVTOOLS_EXTENSION as ɵh, DevtoolsExtension as ɵi, DevtoolsDispatcher as ɵj };\n\n//# sourceMappingURL=ngrx-store-devtools.js.map","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","/*!\n * perfect-scrollbar v1.5.3\n * Copyright 2021 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nfunction processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nfunction updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.round(rect.width);\n i.containerHeight = Math.round(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nfunction clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n\nfunction dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n if (e.type.startsWith('touch') && e.changedTouches.length > 1) {\n e.preventDefault();\n }\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n}\n\nfunction keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n\nfunction wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n  \\n \\n \\n\\n\",\n exportAs: 'matCheckbox',\n host: {\n 'class': 'mat-checkbox',\n '[id]': 'id',\n '[attr.tabindex]': 'null',\n '[class.mat-checkbox-indeterminate]': 'indeterminate',\n '[class.mat-checkbox-checked]': 'checked',\n '[class.mat-checkbox-disabled]': 'disabled',\n '[class.mat-checkbox-label-before]': 'labelPosition == \"before\"',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`\n },\n providers: [MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\"@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.910259}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);stroke-dashoffset:0}to{stroke-dashoffset:-22.910259}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0deg)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}32.8%,100%{opacity:0;transform:scaleX(0)}}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{display:inline-block;transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);cursor:pointer;-webkit-tap-highlight-color:transparent}._mat-animation-noopable.mat-checkbox{transition:none;animation:none}.mat-checkbox .mat-ripple-element:not(.mat-checkbox-persistent-ripple){opacity:.16}.mat-checkbox-layout{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-label{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.mat-checkbox-inner-container{display:inline-block;height:16px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:16px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1);border-width:2px;border-style:solid}._mat-animation-noopable .mat-checkbox-frame{transition:none}.cdk-high-contrast-active .mat-checkbox.cdk-keyboard-focused .mat-checkbox-frame{border-style:dotted}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0, 0, 0.2, 0.1),opacity 90ms cubic-bezier(0, 0, 0.2, 0.1);-webkit-print-color-adjust:exact;color-adjust:exact}._mat-animation-noopable .mat-checkbox-background{transition:none}.cdk-high-contrast-active .mat-checkbox .mat-checkbox-background{background:none}.mat-checkbox-persistent-ripple{display:block;width:100%;height:100%;transform:none}.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:.04}.mat-checkbox.cdk-keyboard-focused .mat-checkbox-persistent-ripple{opacity:.12}.mat-checkbox-persistent-ripple,.mat-checkbox.mat-checkbox-disabled .mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:0}@media(hover: none){.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{display:none}}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.910259;stroke-dasharray:22.910259;stroke-width:2.1333333333px}.cdk-high-contrast-black-on-white .mat-checkbox-checkmark-path{stroke:#000 !important}.mat-checkbox-mixedmark{width:calc(100% - 6px);height:2px;opacity:0;transform:scaleX(0) rotate(0deg);border-radius:2px}.cdk-high-contrast-active .mat-checkbox-mixedmark{height:0;border-top:solid 2px;margin-top:2px}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0deg)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.cdk-high-contrast-active .mat-checkbox-disabled{opacity:.5}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0ms mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0ms mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:300ms linear 0ms mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}.mat-checkbox .mat-checkbox-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.FocusMonitor }, { type: ɵngcc0.NgZone }, { type: String, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_CHECKBOX_DEFAULT_OPTIONS]\n }] }]; }, { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], id: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], name: [{\n type: Input\n }], change: [{\n type: Output\n }], indeterminateChange: [{\n type: Output\n }], required: [{\n type: Input\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], indeterminate: [{\n type: Input\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], value: [{\n type: Input\n }], _inputElement: [{\n type: ViewChild,\n args: ['input']\n }], ripple: [{\n type: ViewChild,\n args: [MatRipple]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAT_CHECKBOX_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatCheckboxRequiredValidator),\n multi: true\n};\n/**\n * Validator for Material checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `mat-checkbox`.\n */\nclass MatCheckboxRequiredValidator extends CheckboxRequiredValidator {\n}\nMatCheckboxRequiredValidator.ɵfac = function MatCheckboxRequiredValidator_Factory(t) { return ɵMatCheckboxRequiredValidator_BaseFactory(t || MatCheckboxRequiredValidator); };\nMatCheckboxRequiredValidator.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatCheckboxRequiredValidator, selectors: [[\"mat-checkbox\", \"required\", \"\", \"formControlName\", \"\"], [\"mat-checkbox\", \"required\", \"\", \"formControl\", \"\"], [\"mat-checkbox\", \"required\", \"\", \"ngModel\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([MAT_CHECKBOX_REQUIRED_VALIDATOR]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nconst ɵMatCheckboxRequiredValidator_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatCheckboxRequiredValidator);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCheckboxRequiredValidator, [{\n type: Directive,\n args: [{\n selector: `mat-checkbox[required][formControlName],\n mat-checkbox[required][formControl], mat-checkbox[required][ngModel]`,\n providers: [MAT_CHECKBOX_REQUIRED_VALIDATOR]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** This module is used by both original and MDC-based checkbox implementations. */\nclass _MatCheckboxRequiredValidatorModule {\n}\n_MatCheckboxRequiredValidatorModule.ɵfac = function _MatCheckboxRequiredValidatorModule_Factory(t) { return new (t || _MatCheckboxRequiredValidatorModule)(); };\n_MatCheckboxRequiredValidatorModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: _MatCheckboxRequiredValidatorModule });\n_MatCheckboxRequiredValidatorModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(_MatCheckboxRequiredValidatorModule, { declarations: [MatCheckboxRequiredValidator], exports: [MatCheckboxRequiredValidator] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatCheckboxRequiredValidatorModule, [{\n type: NgModule,\n args: [{\n exports: [MatCheckboxRequiredValidator],\n declarations: [MatCheckboxRequiredValidator]\n }]\n }], null, null); })();\nclass MatCheckboxModule {\n}\nMatCheckboxModule.ɵfac = function MatCheckboxModule_Factory(t) { return new (t || MatCheckboxModule)(); };\nMatCheckboxModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatCheckboxModule });\nMatCheckboxModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[\n MatRippleModule, MatCommonModule, ObserversModule,\n _MatCheckboxRequiredValidatorModule\n ], MatCommonModule, _MatCheckboxRequiredValidatorModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatCheckboxModule, { declarations: function () { return [MatCheckbox]; }, imports: function () { return [MatRippleModule, MatCommonModule, ObserversModule, _MatCheckboxRequiredValidatorModule]; }, exports: function () { return [MatCheckbox, MatCommonModule, _MatCheckboxRequiredValidatorModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatCheckboxModule, [{\n type: NgModule,\n args: [{\n imports: [\n MatRippleModule, MatCommonModule, ObserversModule,\n _MatCheckboxRequiredValidatorModule\n ],\n exports: [MatCheckbox, MatCommonModule, _MatCheckboxRequiredValidatorModule],\n declarations: [MatCheckbox]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, MAT_CHECKBOX_DEFAULT_OPTIONS, MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckbox, MatCheckboxChange, MatCheckboxModule, MatCheckboxRequiredValidator, _MatCheckboxRequiredValidatorModule };\n\n//# sourceMappingURL=checkbox.js.map","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, Optional, Inject, ViewChild, Input, NgModule } from '@angular/core';\nimport { mixinColor, mixinDisabled, mixinDisableRipple, MatRipple, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default color palette for round buttons (mat-fab and mat-mini-fab) */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/a11y';\nimport * as ɵngcc2 from '@angular/material/core';\n\nconst _c0 = [\"mat-button\", \"\"];\nconst _c1 = [\"*\"];\nconst _c2 = \".mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{opacity:0}.mat-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay,.mat-stroked-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay{opacity:.04}@media(hover: none){.mat-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay,.mat-stroked-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay{opacity:0}}.mat-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-button.mat-button-disabled,.mat-icon-button.mat-button-disabled,.mat-stroked-button.mat-button-disabled,.mat-flat-button.mat-button-disabled{cursor:default}.mat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-button.cdk-program-focused .mat-button-focus-overlay,.mat-icon-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-icon-button.cdk-program-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-program-focused .mat-button-focus-overlay,.mat-flat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-flat-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-raised-button::-moz-focus-inner{border:0}.mat-raised-button.mat-button-disabled{cursor:default}.mat-raised-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-raised-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-raised-button::-moz-focus-inner{border:0}._mat-animation-noopable.mat-raised-button{transition:none;animation:none}.mat-stroked-button{border:1px solid currentColor;padding:0 15px;line-height:34px}.mat-stroked-button .mat-button-ripple.mat-ripple,.mat-stroked-button .mat-button-focus-overlay{top:-1px;left:-1px;right:-1px;bottom:-1px}.mat-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab::-moz-focus-inner{border:0}.mat-fab.mat-button-disabled{cursor:default}.mat-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-fab{transition:none;animation:none}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab::-moz-focus-inner{border:0}.mat-mini-fab.mat-button-disabled{cursor:default}.mat-mini-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-mini-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-mini-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-mini-fab{transition:none;animation:none}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button i,.mat-icon-button .mat-icon{line-height:24px}.mat-button-ripple.mat-ripple,.mat-button-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-button-ripple.mat-ripple:not(:empty){transform:translateZ(0)}.mat-button-focus-overlay{opacity:0;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1),background-color 200ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-button-focus-overlay{transition:none}.mat-button-ripple-round{border-radius:50%;z-index:1}.mat-button .mat-button-wrapper>*,.mat-flat-button .mat-button-wrapper>*,.mat-stroked-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-fab .mat-button-wrapper>*,.mat-mini-fab .mat-button-wrapper>*{vertical-align:middle}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{display:inline-flex;justify-content:center;align-items:center;font-size:inherit;width:2.5em;height:2.5em}.cdk-high-contrast-active .mat-button,.cdk-high-contrast-active .mat-flat-button,.cdk-high-contrast-active .mat-raised-button,.cdk-high-contrast-active .mat-icon-button,.cdk-high-contrast-active .mat-fab,.cdk-high-contrast-active .mat-mini-fab{outline:solid 1px}.cdk-high-contrast-active .mat-button-base.cdk-keyboard-focused,.cdk-high-contrast-active .mat-button-base.cdk-program-focused{outline:solid 3px}\\n\";\nconst DEFAULT_ROUND_BUTTON_COLOR = 'accent';\n/**\n * List of classes to add to MatButton instances based on host attributes to\n * style as different variants.\n */\nconst BUTTON_HOST_ATTRIBUTES = [\n 'mat-button',\n 'mat-flat-button',\n 'mat-icon-button',\n 'mat-raised-button',\n 'mat-stroked-button',\n 'mat-mini-fab',\n 'mat-fab',\n];\n// Boilerplate for applying mixins to MatButton.\n/** @docs-private */\nclass MatButtonBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatButtonMixinBase = mixinColor(mixinDisabled(mixinDisableRipple(MatButtonBase)));\n/**\n * Material design button.\n */\nclass MatButton extends _MatButtonMixinBase {\n constructor(elementRef, _focusMonitor, _animationMode) {\n super(elementRef);\n this._focusMonitor = _focusMonitor;\n this._animationMode = _animationMode;\n /** Whether the button is round. */\n this.isRoundButton = this._hasHostAttributes('mat-fab', 'mat-mini-fab');\n /** Whether the button is icon button. */\n this.isIconButton = this._hasHostAttributes('mat-icon-button');\n // For each of the variant selectors that is present in the button's host\n // attributes, add the correct corresponding class.\n for (const attr of BUTTON_HOST_ATTRIBUTES) {\n if (this._hasHostAttributes(attr)) {\n this._getHostElement().classList.add(attr);\n }\n }\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons. We do it here rather than `host` to ensure that\n // the class is applied to derived classes.\n elementRef.nativeElement.classList.add('mat-button-base');\n if (this.isRoundButton) {\n this.color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n /** Focuses the button. */\n focus(origin, options) {\n if (origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n }\n else {\n this._getHostElement().focus(options);\n }\n }\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n /** Gets whether the button has one of the given attributes. */\n _hasHostAttributes(...attributes) {\n return attributes.some(attribute => this._getHostElement().hasAttribute(attribute));\n }\n}\nMatButton.ɵfac = function MatButton_Factory(t) { return new (t || MatButton)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); };\nMatButton.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatButton, selectors: [[\"button\", \"mat-button\", \"\"], [\"button\", \"mat-raised-button\", \"\"], [\"button\", \"mat-icon-button\", \"\"], [\"button\", \"mat-fab\", \"\"], [\"button\", \"mat-mini-fab\", \"\"], [\"button\", \"mat-stroked-button\", \"\"], [\"button\", \"mat-flat-button\", \"\"]], viewQuery: function MatButton_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(MatRipple, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ripple = _t.first);\n } }, hostAttrs: [1, \"mat-focus-indicator\"], hostVars: 5, hostBindings: function MatButton_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"disabled\", ctx.disabled || null);\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-button-disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", color: \"color\" }, exportAs: [\"matButton\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 4, vars: 5, consts: [[1, \"mat-button-wrapper\"], [\"matRipple\", \"\", 1, \"mat-button-ripple\", 3, \"matRippleDisabled\", \"matRippleCentered\", \"matRippleTrigger\"], [1, \"mat-button-focus-overlay\"]], template: function MatButton_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"span\", 1);\n ɵngcc0.ɵɵelement(3, \"span\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"mat-button-ripple-round\", ctx.isRoundButton || ctx.isIconButton);\n ɵngcc0.ɵɵproperty(\"matRippleDisabled\", ctx._isRippleDisabled())(\"matRippleCentered\", ctx.isIconButton)(\"matRippleTrigger\", ctx._getHostElement());\n } }, directives: [ɵngcc2.MatRipple], styles: [_c2], encapsulation: 2, changeDetection: 0 });\nMatButton.ctorParameters = () => [\n { type: ElementRef },\n { type: FocusMonitor },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }\n];\nMatButton.propDecorators = {\n ripple: [{ type: ViewChild, args: [MatRipple,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatButton, [{\n type: Component,\n args: [{\n selector: `button[mat-button], button[mat-raised-button], button[mat-icon-button],\n button[mat-fab], button[mat-mini-fab], button[mat-stroked-button],\n button[mat-flat-button]`,\n exportAs: 'matButton',\n host: {\n '[attr.disabled]': 'disabled || null',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n // Add a class for disabled button styling instead of the using attribute\n // selector or pseudo-selector. This allows users to create focusabled\n // disabled buttons without recreating the styles.\n '[class.mat-button-disabled]': 'disabled',\n 'class': 'mat-focus-indicator'\n },\n template: \"\\n\\n\\n\",\n inputs: ['disabled', 'disableRipple', 'color'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{opacity:0}.mat-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay,.mat-stroked-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay{opacity:.04}@media(hover: none){.mat-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay,.mat-stroked-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay{opacity:0}}.mat-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-button.mat-button-disabled,.mat-icon-button.mat-button-disabled,.mat-stroked-button.mat-button-disabled,.mat-flat-button.mat-button-disabled{cursor:default}.mat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-button.cdk-program-focused .mat-button-focus-overlay,.mat-icon-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-icon-button.cdk-program-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-program-focused .mat-button-focus-overlay,.mat-flat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-flat-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-raised-button::-moz-focus-inner{border:0}.mat-raised-button.mat-button-disabled{cursor:default}.mat-raised-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-raised-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-raised-button::-moz-focus-inner{border:0}._mat-animation-noopable.mat-raised-button{transition:none;animation:none}.mat-stroked-button{border:1px solid currentColor;padding:0 15px;line-height:34px}.mat-stroked-button .mat-button-ripple.mat-ripple,.mat-stroked-button .mat-button-focus-overlay{top:-1px;left:-1px;right:-1px;bottom:-1px}.mat-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab::-moz-focus-inner{border:0}.mat-fab.mat-button-disabled{cursor:default}.mat-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-fab{transition:none;animation:none}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab::-moz-focus-inner{border:0}.mat-mini-fab.mat-button-disabled{cursor:default}.mat-mini-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-mini-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-mini-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-mini-fab{transition:none;animation:none}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button i,.mat-icon-button .mat-icon{line-height:24px}.mat-button-ripple.mat-ripple,.mat-button-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-button-ripple.mat-ripple:not(:empty){transform:translateZ(0)}.mat-button-focus-overlay{opacity:0;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1),background-color 200ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-button-focus-overlay{transition:none}.mat-button-ripple-round{border-radius:50%;z-index:1}.mat-button .mat-button-wrapper>*,.mat-flat-button .mat-button-wrapper>*,.mat-stroked-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-fab .mat-button-wrapper>*,.mat-mini-fab .mat-button-wrapper>*{vertical-align:middle}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{display:inline-flex;justify-content:center;align-items:center;font-size:inherit;width:2.5em;height:2.5em}.cdk-high-contrast-active .mat-button,.cdk-high-contrast-active .mat-flat-button,.cdk-high-contrast-active .mat-raised-button,.cdk-high-contrast-active .mat-icon-button,.cdk-high-contrast-active .mat-fab,.cdk-high-contrast-active .mat-mini-fab{outline:solid 1px}.cdk-high-contrast-active .mat-button-base.cdk-keyboard-focused,.cdk-high-contrast-active .mat-button-base.cdk-program-focused{outline:solid 3px}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.FocusMonitor }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, { ripple: [{\n type: ViewChild,\n args: [MatRipple]\n }] }); })();\n/**\n * Material design anchor button.\n */\nclass MatAnchor extends MatButton {\n constructor(focusMonitor, elementRef, animationMode) {\n super(elementRef, focusMonitor, animationMode);\n }\n _haltDisabledEvents(event) {\n // A disabled button shouldn't apply any actions\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\nMatAnchor.ɵfac = function MatAnchor_Factory(t) { return new (t || MatAnchor)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); };\nMatAnchor.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatAnchor, selectors: [[\"a\", \"mat-button\", \"\"], [\"a\", \"mat-raised-button\", \"\"], [\"a\", \"mat-icon-button\", \"\"], [\"a\", \"mat-fab\", \"\"], [\"a\", \"mat-mini-fab\", \"\"], [\"a\", \"mat-stroked-button\", \"\"], [\"a\", \"mat-flat-button\", \"\"]], hostAttrs: [1, \"mat-focus-indicator\"], hostVars: 7, hostBindings: function MatAnchor_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function MatAnchor_click_HostBindingHandler($event) { return ctx._haltDisabledEvents($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.disabled ? -1 : ctx.tabIndex || 0)(\"disabled\", ctx.disabled || null)(\"aria-disabled\", ctx.disabled.toString());\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-button-disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", color: \"color\", tabIndex: \"tabIndex\" }, exportAs: [\"matButton\", \"matAnchor\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 4, vars: 5, consts: [[1, \"mat-button-wrapper\"], [\"matRipple\", \"\", 1, \"mat-button-ripple\", 3, \"matRippleDisabled\", \"matRippleCentered\", \"matRippleTrigger\"], [1, \"mat-button-focus-overlay\"]], template: function MatAnchor_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"span\", 1);\n ɵngcc0.ɵɵelement(3, \"span\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"mat-button-ripple-round\", ctx.isRoundButton || ctx.isIconButton);\n ɵngcc0.ɵɵproperty(\"matRippleDisabled\", ctx._isRippleDisabled())(\"matRippleCentered\", ctx.isIconButton)(\"matRippleTrigger\", ctx._getHostElement());\n } }, directives: [ɵngcc2.MatRipple], styles: [_c2], encapsulation: 2, changeDetection: 0 });\nMatAnchor.ctorParameters = () => [\n { type: FocusMonitor },\n { type: ElementRef },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }\n];\nMatAnchor.propDecorators = {\n tabIndex: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatAnchor, [{\n type: Component,\n args: [{\n selector: `a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab],\n a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]`,\n exportAs: 'matButton, matAnchor',\n host: {\n // Note that we ignore the user-specified tabindex when it's disabled for\n // consistency with the `mat-button` applied on native buttons where even\n // though they have an index, they're not tabbable.\n '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_haltDisabledEvents($event)',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-button-disabled]': 'disabled',\n 'class': 'mat-focus-indicator'\n },\n inputs: ['disabled', 'disableRipple', 'color'],\n template: \"\\n\\n\\n\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{opacity:0}.mat-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay,.mat-stroked-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay{opacity:.04}@media(hover: none){.mat-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay,.mat-stroked-button:hover:not(.mat-button-disabled) .mat-button-focus-overlay{opacity:0}}.mat-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-button.mat-button-disabled,.mat-icon-button.mat-button-disabled,.mat-stroked-button.mat-button-disabled,.mat-flat-button.mat-button-disabled{cursor:default}.mat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-button.cdk-program-focused .mat-button-focus-overlay,.mat-icon-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-icon-button.cdk-program-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-program-focused .mat-button-focus-overlay,.mat-flat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-flat-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-raised-button::-moz-focus-inner{border:0}.mat-raised-button.mat-button-disabled{cursor:default}.mat-raised-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-raised-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-raised-button::-moz-focus-inner{border:0}._mat-animation-noopable.mat-raised-button{transition:none;animation:none}.mat-stroked-button{border:1px solid currentColor;padding:0 15px;line-height:34px}.mat-stroked-button .mat-button-ripple.mat-ripple,.mat-stroked-button .mat-button-focus-overlay{top:-1px;left:-1px;right:-1px;bottom:-1px}.mat-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab::-moz-focus-inner{border:0}.mat-fab.mat-button-disabled{cursor:default}.mat-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-fab{transition:none;animation:none}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab::-moz-focus-inner{border:0}.mat-mini-fab.mat-button-disabled{cursor:default}.mat-mini-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-mini-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-mini-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-mini-fab{transition:none;animation:none}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button i,.mat-icon-button .mat-icon{line-height:24px}.mat-button-ripple.mat-ripple,.mat-button-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-button-ripple.mat-ripple:not(:empty){transform:translateZ(0)}.mat-button-focus-overlay{opacity:0;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1),background-color 200ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-button-focus-overlay{transition:none}.mat-button-ripple-round{border-radius:50%;z-index:1}.mat-button .mat-button-wrapper>*,.mat-flat-button .mat-button-wrapper>*,.mat-stroked-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-fab .mat-button-wrapper>*,.mat-mini-fab .mat-button-wrapper>*{vertical-align:middle}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{display:inline-flex;justify-content:center;align-items:center;font-size:inherit;width:2.5em;height:2.5em}.cdk-high-contrast-active .mat-button,.cdk-high-contrast-active .mat-flat-button,.cdk-high-contrast-active .mat-raised-button,.cdk-high-contrast-active .mat-icon-button,.cdk-high-contrast-active .mat-fab,.cdk-high-contrast-active .mat-mini-fab{outline:solid 1px}.cdk-high-contrast-active .mat-button-base.cdk-keyboard-focused,.cdk-high-contrast-active .mat-button-base.cdk-program-focused{outline:solid 3px}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc1.FocusMonitor }, { type: ɵngcc0.ElementRef }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, { tabIndex: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatButtonModule {\n}\nMatButtonModule.ɵfac = function MatButtonModule_Factory(t) { return new (t || MatButtonModule)(); };\nMatButtonModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatButtonModule });\nMatButtonModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[\n MatRippleModule,\n MatCommonModule,\n ], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatButtonModule, { declarations: function () { return [MatButton, MatAnchor]; }, imports: function () { return [MatRippleModule,\n MatCommonModule]; }, exports: function () { return [MatButton, MatAnchor, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatButtonModule, [{\n type: NgModule,\n args: [{\n imports: [\n MatRippleModule,\n MatCommonModule,\n ],\n exports: [\n MatButton,\n MatAnchor,\n MatCommonModule,\n ],\n declarations: [\n MatButton,\n MatAnchor,\n ]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatAnchor, MatButton, MatButtonModule };\n\n//# sourceMappingURL=button.js.map","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","(function (root, factory) {\n 'use strict'\n\n /*istanbul ignore next:cant test*/\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = factory()\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory)\n } else {\n // Browser globals\n root.objectPath = factory()\n }\n})(this, function () {\n 'use strict'\n\n var toStr = Object.prototype.toString\n\n function hasOwnProperty (obj, prop) {\n if (obj == null) {\n return false\n }\n //to handle objects with null prototypes (too edge case?)\n return Object.prototype.hasOwnProperty.call(obj, prop)\n }\n\n function isEmpty (value) {\n if (!value) {\n return true\n }\n if (isArray(value) && value.length === 0) {\n return true\n } else if (typeof value !== 'string') {\n for (var i in value) {\n if (hasOwnProperty(value, i)) {\n return false\n }\n }\n return true\n }\n return false\n }\n\n function toString (type) {\n return toStr.call(type)\n }\n\n function isObject (obj) {\n return typeof obj === 'object' && toString(obj) === '[object Object]'\n }\n\n var isArray = Array.isArray || function (obj) {\n /*istanbul ignore next:cant test*/\n return toStr.call(obj) === '[object Array]'\n }\n\n function isBoolean (obj) {\n return typeof obj === 'boolean' || toString(obj) === '[object Boolean]'\n }\n\n function getKey (key) {\n var intKey = parseInt(key)\n if (intKey.toString() === key) {\n return intKey\n }\n return key\n }\n\n function factory (options) {\n options = options || {}\n\n var objectPath = function (obj) {\n return Object.keys(objectPath).reduce(function (proxy, prop) {\n if (prop === 'create') {\n return proxy\n }\n\n /*istanbul ignore else*/\n if (typeof objectPath[prop] === 'function') {\n proxy[prop] = objectPath[prop].bind(objectPath, obj)\n }\n\n return proxy\n }, {})\n }\n\n var hasShallowProperty\n if (options.includeInheritedProps) {\n hasShallowProperty = function () {\n return true\n }\n } else {\n hasShallowProperty = function (obj, prop) {\n return (typeof prop === 'number' && Array.isArray(obj)) || hasOwnProperty(obj, prop)\n }\n }\n\n function getShallowProperty (obj, prop) {\n if (hasShallowProperty(obj, prop)) {\n return obj[prop]\n }\n }\n\n var getShallowPropertySafely\n if (options.includeInheritedProps) {\n getShallowPropertySafely = function (obj, currentPath) {\n if (typeof currentPath !== 'string' && typeof currentPath !== 'number') {\n currentPath = String(currentPath)\n }\n var currentValue = getShallowProperty(obj, currentPath)\n if (currentPath === '__proto__' || currentPath === 'prototype' ||\n (currentPath === 'constructor' && typeof currentValue === 'function')) {\n throw new Error('For security reasons, object\\'s magic properties cannot be set')\n }\n return currentValue\n }\n } else {\n getShallowPropertySafely = function (obj, currentPath) {\n return getShallowProperty(obj, currentPath)\n }\n }\n\n function set (obj, path, value, doNotReplace) {\n if (typeof path === 'number') {\n path = [path]\n }\n if (!path || path.length === 0) {\n return obj\n }\n if (typeof path === 'string') {\n return set(obj, path.split('.').map(getKey), value, doNotReplace)\n }\n var currentPath = path[0]\n var currentValue = getShallowPropertySafely(obj, currentPath)\n if (path.length === 1) {\n if (currentValue === void 0 || !doNotReplace) {\n obj[currentPath] = value\n }\n return currentValue\n }\n\n if (currentValue === void 0) {\n //check if we assume an array\n if (typeof path[1] === 'number') {\n obj[currentPath] = []\n } else {\n obj[currentPath] = {}\n }\n }\n\n return set(obj[currentPath], path.slice(1), value, doNotReplace)\n }\n\n objectPath.has = function (obj, path) {\n if (typeof path === 'number') {\n path = [path]\n } else if (typeof path === 'string') {\n path = path.split('.')\n }\n\n if (!path || path.length === 0) {\n return !!obj\n }\n\n for (var i = 0; i < path.length; i++) {\n var j = getKey(path[i])\n\n if ((typeof j === 'number' && isArray(obj) && j < obj.length) ||\n (options.includeInheritedProps ? (j in Object(obj)) : hasOwnProperty(obj, j))) {\n obj = obj[j]\n } else {\n return false\n }\n }\n\n return true\n }\n\n objectPath.ensureExists = function (obj, path, value) {\n return set(obj, path, value, true)\n }\n\n objectPath.set = function (obj, path, value, doNotReplace) {\n return set(obj, path, value, doNotReplace)\n }\n\n objectPath.insert = function (obj, path, value, at) {\n var arr = objectPath.get(obj, path)\n at = ~~at\n if (!isArray(arr)) {\n arr = []\n objectPath.set(obj, path, arr)\n }\n arr.splice(at, 0, value)\n }\n\n objectPath.empty = function (obj, path) {\n if (isEmpty(path)) {\n return void 0\n }\n if (obj == null) {\n return void 0\n }\n\n var value, i\n if (!(value = objectPath.get(obj, path))) {\n return void 0\n }\n\n if (typeof value === 'string') {\n return objectPath.set(obj, path, '')\n } else if (isBoolean(value)) {\n return objectPath.set(obj, path, false)\n } else if (typeof value === 'number') {\n return objectPath.set(obj, path, 0)\n } else if (isArray(value)) {\n value.length = 0\n } else if (isObject(value)) {\n for (i in value) {\n if (hasShallowProperty(value, i)) {\n delete value[i]\n }\n }\n } else {\n return objectPath.set(obj, path, null)\n }\n }\n\n objectPath.push = function (obj, path /*, values */) {\n var arr = objectPath.get(obj, path)\n if (!isArray(arr)) {\n arr = []\n objectPath.set(obj, path, arr)\n }\n\n arr.push.apply(arr, Array.prototype.slice.call(arguments, 2))\n }\n\n objectPath.coalesce = function (obj, paths, defaultValue) {\n var value\n\n for (var i = 0, len = paths.length; i < len; i++) {\n if ((value = objectPath.get(obj, paths[i])) !== void 0) {\n return value\n }\n }\n\n return defaultValue\n }\n\n objectPath.get = function (obj, path, defaultValue) {\n if (typeof path === 'number') {\n path = [path]\n }\n if (!path || path.length === 0) {\n return obj\n }\n if (obj == null) {\n return defaultValue\n }\n if (typeof path === 'string') {\n return objectPath.get(obj, path.split('.'), defaultValue)\n }\n\n var currentPath = getKey(path[0])\n var nextObj = getShallowPropertySafely(obj, currentPath)\n if (nextObj === void 0) {\n return defaultValue\n }\n\n if (path.length === 1) {\n return nextObj\n }\n\n return objectPath.get(obj[currentPath], path.slice(1), defaultValue)\n }\n\n objectPath.del = function del (obj, path) {\n if (typeof path === 'number') {\n path = [path]\n }\n\n if (obj == null) {\n return obj\n }\n\n if (isEmpty(path)) {\n return obj\n }\n if (typeof path === 'string') {\n return objectPath.del(obj, path.split('.'))\n }\n\n var currentPath = getKey(path[0])\n getShallowPropertySafely(obj, currentPath)\n if (!hasShallowProperty(obj, currentPath)) {\n return obj\n }\n\n if (path.length === 1) {\n if (isArray(obj)) {\n obj.splice(currentPath, 1)\n } else {\n delete obj[currentPath]\n }\n } else {\n return objectPath.del(obj[currentPath], path.slice(1))\n }\n\n return obj\n }\n\n return objectPath\n }\n\n var mod = factory()\n mod.create = factory\n mod.withInheritedProps = factory({includeInheritedProps: true})\n return mod\n})\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","import { InjectionToken, inject, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, NgZone, Optional, Inject, Input, ViewChild, Output, NgModule } from '@angular/core';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatProgressBar.\n/** @docs-private */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"primaryValueBar\"];\nclass MatProgressBarBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatProgressBarMixinBase = mixinColor(MatProgressBarBase, 'primary');\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nconst MAT_PROGRESS_BAR_LOCATION = new InjectionToken('mat-progress-bar-location', { providedIn: 'root', factory: MAT_PROGRESS_BAR_LOCATION_FACTORY });\n/** @docs-private */\nfunction MAT_PROGRESS_BAR_LOCATION_FACTORY() {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => _location ? (_location.pathname + _location.search) : ''\n };\n}\n/** Counter used to generate unique IDs for progress bars. */\nlet progressbarId = 0;\n/**\n * `` component.\n */\nclass MatProgressBar extends _MatProgressBarMixinBase {\n constructor(_elementRef, _ngZone, _animationMode, \n /**\n * @deprecated `location` parameter to be made required.\n * @breaking-change 8.0.0\n */\n location) {\n super(_elementRef);\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n this._isNoopAnimation = false;\n this._value = 0;\n this._bufferValue = 0;\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n this.animationEnd = new EventEmitter();\n /** Reference to animation end subscription to be unsubscribed on destroy. */\n this._animationEndSubscription = Subscription.EMPTY;\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n this.mode = 'determinate';\n /** ID of the progress bar. */\n this.progressbarId = `mat-progress-bar-${progressbarId++}`;\n // We need to prefix the SVG reference with the current path, otherwise they won't work\n // in Safari if the page has a `` tag. Note that we need quotes inside the `url()`,\n // because named route URLs can contain parentheses (see #12338). Also we don't use since\n // we can't tell the difference between whether\n // the consumer is using the hash location strategy or not, because `Location` normalizes\n // both `/#/foo/bar` and `/foo/bar` to the same thing.\n const path = location ? location.getPathname().split('#')[0] : '';\n this._rectangleFillValue = `url('${path}#${this.progressbarId}')`;\n this._isNoopAnimation = _animationMode === 'NoopAnimations';\n }\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n get value() { return this._value; }\n set value(v) {\n this._value = clamp(coerceNumberProperty(v) || 0);\n }\n /** Buffer value of the progress bar. Defaults to zero. */\n get bufferValue() { return this._bufferValue; }\n set bufferValue(v) { this._bufferValue = clamp(v || 0); }\n /** Gets the current transform value for the progress bar's primary indicator. */\n _primaryTransform() {\n // We use a 3d transform to work around some rendering issues in iOS Safari. See #19328.\n const scale = this.value / 100;\n return { transform: `scale3d(${scale}, 1, 1)` };\n }\n /**\n * Gets the current transform value for the progress bar's buffer indicator. Only used if the\n * progress mode is set to buffer, otherwise returns an undefined, causing no transformation.\n */\n _bufferTransform() {\n if (this.mode === 'buffer') {\n // We use a 3d transform to work around some rendering issues in iOS Safari. See #19328.\n const scale = this.bufferValue / 100;\n return { transform: `scale3d(${scale}, 1, 1)` };\n }\n return null;\n }\n ngAfterViewInit() {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular((() => {\n const element = this._primaryValueBar.nativeElement;\n this._animationEndSubscription =\n fromEvent(element, 'transitionend')\n .pipe(filter(((e) => e.target === element)))\n .subscribe(() => {\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this._ngZone.run(() => this.animationEnd.next({ value: this.value }));\n }\n });\n }));\n }\n ngOnDestroy() {\n this._animationEndSubscription.unsubscribe();\n }\n}\nMatProgressBar.ɵfac = function MatProgressBar_Factory(t) { return new (t || MatProgressBar)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵngcc0.ɵɵdirectiveInject(MAT_PROGRESS_BAR_LOCATION, 8)); };\nMatProgressBar.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatProgressBar, selectors: [[\"mat-progress-bar\"]], viewQuery: function MatProgressBar_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._primaryValueBar = _t.first);\n } }, hostAttrs: [\"role\", \"progressbar\", \"aria-valuemin\", \"0\", \"aria-valuemax\", \"100\", \"tabindex\", \"-1\", 1, \"mat-progress-bar\"], hostVars: 4, hostBindings: function MatProgressBar_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-valuenow\", ctx.mode === \"indeterminate\" || ctx.mode === \"query\" ? null : ctx.value)(\"mode\", ctx.mode);\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._isNoopAnimation);\n } }, inputs: { color: \"color\", mode: \"mode\", value: \"value\", bufferValue: \"bufferValue\" }, outputs: { animationEnd: \"animationEnd\" }, exportAs: [\"matProgressBar\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 10, vars: 4, consts: [[\"aria-hidden\", \"true\"], [\"width\", \"100%\", \"height\", \"4\", \"focusable\", \"false\", 1, \"mat-progress-bar-background\", \"mat-progress-bar-element\"], [\"x\", \"4\", \"y\", \"0\", \"width\", \"8\", \"height\", \"4\", \"patternUnits\", \"userSpaceOnUse\", 3, \"id\"], [\"cx\", \"2\", \"cy\", \"2\", \"r\", \"2\"], [\"width\", \"100%\", \"height\", \"100%\"], [1, \"mat-progress-bar-buffer\", \"mat-progress-bar-element\", 3, \"ngStyle\"], [1, \"mat-progress-bar-primary\", \"mat-progress-bar-fill\", \"mat-progress-bar-element\", 3, \"ngStyle\"], [\"primaryValueBar\", \"\"], [1, \"mat-progress-bar-secondary\", \"mat-progress-bar-fill\", \"mat-progress-bar-element\"]], template: function MatProgressBar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"svg\", 1);\n ɵngcc0.ɵɵelementStart(2, \"defs\");\n ɵngcc0.ɵɵelementStart(3, \"pattern\", 2);\n ɵngcc0.ɵɵelement(4, \"circle\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"rect\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelement(6, \"div\", 5);\n ɵngcc0.ɵɵelement(7, \"div\", 6, 7);\n ɵngcc0.ɵɵelement(9, \"div\", 8);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", ctx.progressbarId);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"fill\", ctx._rectangleFillValue);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx._bufferTransform());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx._primaryTransform());\n } }, directives: [ɵngcc1.NgStyle], styles: [\".mat-progress-bar{display:block;height:4px;overflow:hidden;position:relative;transition:opacity 250ms linear;width:100%}._mat-animation-noopable.mat-progress-bar{transition:none;animation:none}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{width:calc(100% + 10px)}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-background{display:none}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-buffer{border-top:solid 5px;opacity:.5}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-fill{border-top:solid 4px}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:\\\"\\\";display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-translate 2000ms infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-translate 2000ms infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-buffer,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-background{animation:none;transition-duration:1ms}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-8px)}}\\n\"], encapsulation: 2, changeDetection: 0 });\nMatProgressBar.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_PROGRESS_BAR_LOCATION,] }] }\n];\nMatProgressBar.propDecorators = {\n value: [{ type: Input }],\n bufferValue: [{ type: Input }],\n _primaryValueBar: [{ type: ViewChild, args: ['primaryValueBar',] }],\n animationEnd: [{ type: Output }],\n mode: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatProgressBar, [{\n type: Component,\n args: [{\n selector: 'mat-progress-bar',\n exportAs: 'matProgressBar',\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[attr.aria-valuenow]': '(mode === \"indeterminate\" || mode === \"query\") ? null : value',\n '[attr.mode]': 'mode',\n 'class': 'mat-progress-bar',\n '[class._mat-animation-noopable]': '_isNoopAnimation'\n },\n inputs: ['color'],\n template: \"\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".mat-progress-bar{display:block;height:4px;overflow:hidden;position:relative;transition:opacity 250ms linear;width:100%}._mat-animation-noopable.mat-progress-bar{transition:none;animation:none}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{width:calc(100% + 10px)}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-background{display:none}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-buffer{border-top:solid 5px;opacity:.5}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-fill{border-top:solid 4px}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:\\\"\\\";display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-translate 2000ms infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-translate 2000ms infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-buffer,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-background{animation:none;transition-duration:1ms}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-8px)}}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_PROGRESS_BAR_LOCATION]\n }] }]; }, { animationEnd: [{\n type: Output\n }], mode: [{\n type: Input\n }], value: [{\n type: Input\n }], bufferValue: [{\n type: Input\n }], _primaryValueBar: [{\n type: ViewChild,\n args: ['primaryValueBar']\n }] }); })();\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatProgressBarModule {\n}\nMatProgressBarModule.ɵfac = function MatProgressBarModule_Factory(t) { return new (t || MatProgressBarModule)(); };\nMatProgressBarModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatProgressBarModule });\nMatProgressBarModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, MatCommonModule], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatProgressBarModule, { declarations: function () { return [MatProgressBar]; }, imports: function () { return [CommonModule, MatCommonModule]; }, exports: function () { return [MatProgressBar, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatProgressBarModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatProgressBar, MatCommonModule],\n declarations: [MatProgressBar]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PROGRESS_BAR_LOCATION, MAT_PROGRESS_BAR_LOCATION_FACTORY, MatProgressBar, MatProgressBarModule };\n\n//# sourceMappingURL=progress-bar.js.map","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","export function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map","import { InjectionToken, inject, EventEmitter, ɵɵdefineInjectable, ɵɵinject, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n // TODO: handle 'auto' value -\n // We still need to account for dir=\"auto\".\n // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n const value = bodyDir || htmlDir;\n this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDirectionality.ɵfac = function Directionality_Factory(t) { return new (t || Directionality)(ɵngcc0.ɵɵinject(DIR_DOCUMENT, 8)); };\nDirectionality.ɵprov = ɵɵdefineInjectable({ factory: function Directionality_Factory() { return new Directionality(ɵɵinject(DIR_DOCUMENT, 8)); }, token: Directionality, providedIn: \"root\" });\nDirectionality.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DIR_DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Directionality, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() { return this._dir; }\n set dir(value) {\n const old = this._dir;\n const normalizedValue = value ? value.toLowerCase() : value;\n this._rawDir = value;\n this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';\n if (old !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() { return this.dir; }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDir.ɵfac = function Dir_Factory(t) { return new (t || Dir)(); };\nDir.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: Dir, selectors: [[\"\", \"dir\", \"\"]], hostVars: 1, hostBindings: function Dir_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx._rawDir);\n } }, inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, exportAs: [\"dir\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: Directionality, useExisting: Dir }])] });\nDir.propDecorators = {\n change: [{ type: Output, args: ['dirChange',] }],\n dir: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Dir, [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir'\n }]\n }], function () { return []; }, { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BidiModule {\n}\nBidiModule.ɵfac = function BidiModule_Factory(t) { return new (t || BidiModule)(); };\nBidiModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: BidiModule });\nBidiModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BidiModule, { declarations: [Dir], exports: [Dir] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BidiModule, [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality, DIR_DOCUMENT_FACTORY as ɵangular_material_src_cdk_bidi_bidi_a };\n\n//# sourceMappingURL=bidi.js.map","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","import { __decorate, __metadata } from 'tslib';\nimport { ContentChildren, QueryList, Input, Component, NgZone, Injectable, EventEmitter, ElementRef, ViewContainerRef, ComponentFactoryResolver, Output, ViewEncapsulation, ANALYZE_FOR_ENTRY_COMPONENTS, NgModule } from '@angular/core';\nimport { VanillaFrameworkOverrides, BaseComponentWrapper, Promise, ComponentUtil, Grid, _, Events, GridOptionsWrapper } from 'ag-grid-community';\n\nimport * as ɵngcc0 from '@angular/core';\nvar AgGridColumn_1;\nlet AgGridColumn = AgGridColumn_1 = class AgGridColumn {\n hasChildColumns() {\n if (this.childColumns && this.childColumns.length > 0) {\n // necessary because of https://github.com/angular/angular/issues/10098\n return !(this.childColumns.length === 1 && this.childColumns.first === this);\n }\n return false;\n }\n toColDef() {\n let colDef = this.createColDefFromGridColumn(this);\n if (this.hasChildColumns()) {\n colDef[\"children\"] = this.getChildColDefs(this.childColumns);\n }\n return colDef;\n }\n getChildColDefs(childColumns) {\n return childColumns\n // necessary because of https://github.com/angular/angular/issues/10098\n .filter(column => !column.hasChildColumns())\n .map((column) => {\n return column.toColDef();\n });\n }\n ;\n createColDefFromGridColumn(from) {\n let colDef = {};\n Object.assign(colDef, from);\n delete colDef.childColumns;\n return colDef;\n }\n ;\n};\nAgGridColumn.ɵfac = function AgGridColumn_Factory(t) { return new (t || AgGridColumn)(); };\nAgGridColumn.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AgGridColumn, selectors: [[\"ag-grid-column\"]], contentQueries: function AgGridColumn_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, AgGridColumn_1, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.childColumns = _t);\n } }, inputs: { children: \"children\", sortingOrder: \"sortingOrder\", allowedAggFuncs: \"allowedAggFuncs\", menuTabs: \"menuTabs\", cellClassRules: \"cellClassRules\", icons: \"icons\", headerGroupComponent: \"headerGroupComponent\", headerGroupComponentFramework: \"headerGroupComponentFramework\", headerGroupComponentParams: \"headerGroupComponentParams\", cellStyle: \"cellStyle\", cellRendererParams: \"cellRendererParams\", cellEditorFramework: \"cellEditorFramework\", cellEditorParams: \"cellEditorParams\", pinnedRowCellRendererFramework: \"pinnedRowCellRendererFramework\", pinnedRowCellRendererParams: \"pinnedRowCellRendererParams\", filterFramework: \"filterFramework\", filterParams: \"filterParams\", headerComponent: \"headerComponent\", headerComponentFramework: \"headerComponentFramework\", headerComponentParams: \"headerComponentParams\", floatingFilterComponent: \"floatingFilterComponent\", floatingFilterComponentParams: \"floatingFilterComponentParams\", floatingFilterComponentFramework: \"floatingFilterComponentFramework\", tooltipComponent: \"tooltipComponent\", tooltipComponentParams: \"tooltipComponentParams\", tooltipComponentFramework: \"tooltipComponentFramework\", refData: \"refData\", headerName: \"headerName\", columnGroupShow: \"columnGroupShow\", headerClass: \"headerClass\", toolPanelClass: \"toolPanelClass\", headerValueGetter: \"headerValueGetter\", groupId: \"groupId\", colId: \"colId\", sort: \"sort\", field: \"field\", type: \"type\", tooltipField: \"tooltipField\", headerTooltip: \"headerTooltip\", cellClass: \"cellClass\", showRowGroup: \"showRowGroup\", filter: \"filter\", aggFunc: \"aggFunc\", cellRenderer: \"cellRenderer\", cellEditor: \"cellEditor\", pinned: \"pinned\", chartDataType: \"chartDataType\", sortedAt: \"sortedAt\", flex: \"flex\", width: \"width\", minWidth: \"minWidth\", maxWidth: \"maxWidth\", rowGroupIndex: \"rowGroupIndex\", pivotIndex: \"pivotIndex\", dndSourceOnRowDrag: \"dndSourceOnRowDrag\", valueGetter: \"valueGetter\", valueSetter: \"valueSetter\", filterValueGetter: \"filterValueGetter\", keyCreator: \"keyCreator\", cellRendererFramework: \"cellRendererFramework\", pinnedRowCellRenderer: \"pinnedRowCellRenderer\", valueFormatter: \"valueFormatter\", pinnedRowValueFormatter: \"pinnedRowValueFormatter\", valueParser: \"valueParser\", comparator: \"comparator\", equals: \"equals\", pivotComparator: \"pivotComparator\", suppressKeyboardEvent: \"suppressKeyboardEvent\", colSpan: \"colSpan\", rowSpan: \"rowSpan\", getQuickFilterText: \"getQuickFilterText\", newValueHandler: \"newValueHandler\", onCellValueChanged: \"onCellValueChanged\", onCellClicked: \"onCellClicked\", onCellDoubleClicked: \"onCellDoubleClicked\", onCellContextMenu: \"onCellContextMenu\", rowDragText: \"rowDragText\", tooltip: \"tooltip\", tooltipValueGetter: \"tooltipValueGetter\", cellRendererSelector: \"cellRendererSelector\", cellEditorSelector: \"cellEditorSelector\", suppressCellFlash: \"suppressCellFlash\", suppressColumnsToolPanel: \"suppressColumnsToolPanel\", suppressFiltersToolPanel: \"suppressFiltersToolPanel\", openByDefault: \"openByDefault\", marryChildren: \"marryChildren\", hide: \"hide\", rowGroup: \"rowGroup\", pivot: \"pivot\", checkboxSelection: \"checkboxSelection\", headerCheckboxSelection: \"headerCheckboxSelection\", headerCheckboxSelectionFilteredOnly: \"headerCheckboxSelectionFilteredOnly\", suppressMenu: \"suppressMenu\", suppressSorting: \"suppressSorting\", suppressMovable: \"suppressMovable\", suppressFilter: \"suppressFilter\", lockPosition: \"lockPosition\", lockVisible: \"lockVisible\", lockPinned: \"lockPinned\", unSortIcon: \"unSortIcon\", suppressSizeToFit: \"suppressSizeToFit\", suppressResize: \"suppressResize\", suppressAutoSize: \"suppressAutoSize\", enableRowGroup: \"enableRowGroup\", enablePivot: \"enablePivot\", enableValue: \"enableValue\", editable: \"editable\", suppressPaste: \"suppressPaste\", suppressNavigable: \"suppressNavigable\", enableCellChangeFlash: \"enableCellChangeFlash\", rowDrag: \"rowDrag\", dndSource: \"dndSource\", autoHeight: \"autoHeight\", sortable: \"sortable\", resizable: \"resizable\", singleClickEdit: \"singleClickEdit\", floatingFilter: \"floatingFilter\" }, decls: 0, vars: 0, template: function AgGridColumn_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(AgGridColumn_1),\n __metadata(\"design:type\", QueryList)\n], AgGridColumn.prototype, \"childColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"children\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sortingOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"allowedAggFuncs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"menuTabs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellClassRules\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"icons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerGroupComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerGroupComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerGroupComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filterFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filterParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilterComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilterComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilterComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"refData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerName\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"columnGroupShow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"toolPanelClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerValueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"groupId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"colId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerTooltip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"showRowGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"aggFunc\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinned\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"chartDataType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sortedAt\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"flex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"minWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"maxWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowGroupIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pivotIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"dndSourceOnRowDrag\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueSetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filterValueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"keyCreator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueFormatter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowValueFormatter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueParser\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"comparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"equals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pivotComparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressKeyboardEvent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"colSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"getQuickFilterText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"newValueHandler\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellValueChanged\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellClicked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellDoubleClicked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellContextMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowDragText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipValueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRendererSelector\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorSelector\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressCellFlash\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressColumnsToolPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressFiltersToolPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"openByDefault\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"marryChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"hide\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pivot\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"checkboxSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerCheckboxSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerCheckboxSelectionFilteredOnly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressSorting\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressMovable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"lockPosition\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"lockVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"lockPinned\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"unSortIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressSizeToFit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressResize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressAutoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enableRowGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enablePivot\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enableValue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"editable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressPaste\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressNavigable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enableCellChangeFlash\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowDrag\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"dndSource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"autoHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sortable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"resizable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"singleClickEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilter\", void 0);\n\nlet AngularFrameworkOverrides = class AngularFrameworkOverrides extends VanillaFrameworkOverrides {\n constructor(_ngZone) {\n super();\n this._ngZone = _ngZone;\n }\n setTimeout(action, timeout) {\n this._ngZone.runOutsideAngular(() => {\n window.setTimeout(() => {\n action();\n }, timeout);\n });\n }\n addEventListenerOutsideAngular(element, type, listener, useCapture) {\n this._ngZone.runOutsideAngular(() => {\n super.addEventListenerOutsideAngular(element, type, listener, useCapture);\n });\n }\n};\nAngularFrameworkOverrides.ɵfac = function AngularFrameworkOverrides_Factory(t) { return new (t || AngularFrameworkOverrides)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nAngularFrameworkOverrides.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: AngularFrameworkOverrides, factory: function (t) { return AngularFrameworkOverrides.ɵfac(t); } });\nAngularFrameworkOverrides.ctorParameters = () => [\n { type: NgZone }\n];\nAngularFrameworkOverrides = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], AngularFrameworkOverrides);\n\nlet AngularFrameworkComponentWrapper = class AngularFrameworkComponentWrapper extends BaseComponentWrapper {\n setViewContainerRef(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n setComponentFactoryResolver(componentFactoryResolver) {\n this.componentFactoryResolver = componentFactoryResolver;\n }\n createWrapper(OriginalConstructor) {\n let that = this;\n class DynamicAgNg2Component extends BaseGuiComponent {\n init(params) {\n super.init(params);\n this._componentRef.changeDetectorRef.detectChanges();\n }\n createComponent() {\n return that.createComponent(OriginalConstructor);\n }\n hasMethod(name) {\n return wrapper.getFrameworkComponentInstance()[name] != null;\n }\n callMethod(name, args) {\n const componentRef = this.getFrameworkComponentInstance();\n return wrapper.getFrameworkComponentInstance()[name].apply(componentRef, args);\n }\n addMethod(name, callback) {\n wrapper[name] = callback;\n }\n }\n let wrapper = new DynamicAgNg2Component();\n return wrapper;\n }\n createComponent(componentType) {\n // used to cache the factory, but this a) caused issues when used with either webpack/angularcli with --prod\n // but more significantly, the underlying implementation of resolveComponentFactory uses a map too, so us\n // caching the factory here yields no performance benefits\n let factory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n return this.viewContainerRef.createComponent(factory);\n }\n};\nAngularFrameworkComponentWrapper.ɵfac = function AngularFrameworkComponentWrapper_Factory(t) { return ɵAngularFrameworkComponentWrapper_BaseFactory(t || AngularFrameworkComponentWrapper); };\nAngularFrameworkComponentWrapper.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: AngularFrameworkComponentWrapper, factory: function (t) { return AngularFrameworkComponentWrapper.ɵfac(t); } });\nclass BaseGuiComponent {\n init(params) {\n this._params = params;\n this._componentRef = this.createComponent();\n this._agAwareComponent = this._componentRef.instance;\n this._frameworkComponentInstance = this._componentRef.instance;\n this._eGui = this._componentRef.location.nativeElement;\n this._agAwareComponent.agInit(this._params);\n }\n getGui() {\n return this._eGui;\n }\n destroy() {\n if (this._componentRef) {\n this._componentRef.destroy();\n }\n }\n getFrameworkComponentInstance() {\n return this._frameworkComponentInstance;\n }\n}\n\nlet AgGridAngular = class AgGridAngular {\n constructor(elementDef, viewContainerRef, angularFrameworkOverrides, frameworkComponentWrapper, _componentFactoryResolver) {\n this.viewContainerRef = viewContainerRef;\n this.angularFrameworkOverrides = angularFrameworkOverrides;\n this.frameworkComponentWrapper = frameworkComponentWrapper;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._initialised = false;\n this._destroyed = false;\n // in order to ensure firing of gridReady is deterministic\n this._fullyReady = new Promise(resolve => {\n resolve(true);\n });\n // @START@\n this.slaveGrids = undefined;\n this.alignedGrids = undefined;\n this.rowData = undefined;\n this.columnDefs = undefined;\n this.excelStyles = undefined;\n this.pinnedTopRowData = undefined;\n this.pinnedBottomRowData = undefined;\n this.components = undefined;\n this.frameworkComponents = undefined;\n this.rowStyle = undefined;\n this.context = undefined;\n this.autoGroupColumnDef = undefined;\n this.groupColumnDef = undefined;\n this.localeText = undefined;\n this.icons = undefined;\n this.datasource = undefined;\n this.serverSideDatasource = undefined;\n this.viewportDatasource = undefined;\n this.groupRowRendererParams = undefined;\n this.aggFuncs = undefined;\n this.fullWidthCellRendererParams = undefined;\n this.defaultColGroupDef = undefined;\n this.defaultColDef = undefined;\n this.defaultExportParams = undefined;\n this.columnTypes = undefined;\n this.rowClassRules = undefined;\n this.detailGridOptions = undefined;\n this.detailCellRendererParams = undefined;\n this.loadingCellRendererParams = undefined;\n this.loadingOverlayComponentParams = undefined;\n this.noRowsOverlayComponentParams = undefined;\n this.popupParent = undefined;\n this.colResizeDefault = undefined;\n this.reduxStore = undefined;\n this.statusBar = undefined;\n this.sideBar = undefined;\n this.sortingOrder = undefined;\n this.rowClass = undefined;\n this.rowSelection = undefined;\n this.overlayLoadingTemplate = undefined;\n this.overlayNoRowsTemplate = undefined;\n this.quickFilterText = undefined;\n this.rowModelType = undefined;\n this.editType = undefined;\n this.domLayout = undefined;\n this.clipboardDeliminator = undefined;\n this.rowGroupPanelShow = undefined;\n this.multiSortKey = undefined;\n this.pivotColumnGroupTotals = undefined;\n this.pivotRowTotals = undefined;\n this.pivotPanelShow = undefined;\n this.rowHeight = undefined;\n this.detailRowHeight = undefined;\n this.rowBuffer = undefined;\n this.colWidth = undefined;\n this.headerHeight = undefined;\n this.groupHeaderHeight = undefined;\n this.floatingFiltersHeight = undefined;\n this.pivotHeaderHeight = undefined;\n this.pivotGroupHeaderHeight = undefined;\n this.groupDefaultExpanded = undefined;\n this.minColWidth = undefined;\n this.maxColWidth = undefined;\n this.viewportRowModelPageSize = undefined;\n this.viewportRowModelBufferSize = undefined;\n this.autoSizePadding = undefined;\n this.maxBlocksInCache = undefined;\n this.maxConcurrentDatasourceRequests = undefined;\n this.tooltipShowDelay = undefined;\n this.cacheOverflowSize = undefined;\n this.paginationPageSize = undefined;\n this.cacheBlockSize = undefined;\n this.infiniteInitialRowCount = undefined;\n this.scrollbarWidth = undefined;\n this.paginationStartPage = undefined;\n this.infiniteBlockSize = undefined;\n this.batchUpdateWaitMillis = undefined;\n this.asyncTransactionWaitMillis = undefined;\n this.blockLoadDebounceMillis = undefined;\n this.keepDetailRowsCount = undefined;\n this.undoRedoCellEditingLimit = undefined;\n this.localeTextFunc = undefined;\n this.groupRowInnerRenderer = undefined;\n this.groupRowInnerRendererFramework = undefined;\n this.dateComponent = undefined;\n this.dateComponentFramework = undefined;\n this.groupRowRenderer = undefined;\n this.groupRowRendererFramework = undefined;\n this.isExternalFilterPresent = undefined;\n this.getRowHeight = undefined;\n this.doesExternalFilterPass = undefined;\n this.getRowClass = undefined;\n this.getRowStyle = undefined;\n this.getRowClassRules = undefined;\n this.traverseNode = undefined;\n this.getContextMenuItems = undefined;\n this.getMainMenuItems = undefined;\n this.processRowPostCreate = undefined;\n this.processCellForClipboard = undefined;\n this.getNodeChildDetails = undefined;\n this.groupRowAggNodes = undefined;\n this.getRowNodeId = undefined;\n this.isFullWidthCell = undefined;\n this.fullWidthCellRenderer = undefined;\n this.fullWidthCellRendererFramework = undefined;\n this.doesDataFlower = undefined;\n this.processSecondaryColDef = undefined;\n this.processSecondaryColGroupDef = undefined;\n this.getBusinessKeyForNode = undefined;\n this.sendToClipboard = undefined;\n this.navigateToNextCell = undefined;\n this.tabToNextCell = undefined;\n this.getDetailRowData = undefined;\n this.processCellFromClipboard = undefined;\n this.getDocument = undefined;\n this.postProcessPopup = undefined;\n this.getChildCount = undefined;\n this.getDataPath = undefined;\n this.loadingCellRenderer = undefined;\n this.loadingCellRendererFramework = undefined;\n this.loadingOverlayComponent = undefined;\n this.loadingOverlayComponentFramework = undefined;\n this.noRowsOverlayComponent = undefined;\n this.noRowsOverlayComponentFramework = undefined;\n this.detailCellRenderer = undefined;\n this.detailCellRendererFramework = undefined;\n this.defaultGroupSortComparator = undefined;\n this.isRowMaster = undefined;\n this.isRowSelectable = undefined;\n this.postSort = undefined;\n this.processHeaderForClipboard = undefined;\n this.paginationNumberFormatter = undefined;\n this.processDataFromClipboard = undefined;\n this.getServerSideGroupKey = undefined;\n this.isServerSideGroup = undefined;\n this.suppressKeyboardEvent = undefined;\n this.createChartContainer = undefined;\n this.processChartOptions = undefined;\n this.getChartToolbarItems = undefined;\n this.fillOperation = undefined;\n this.toolPanelSuppressRowGroups = undefined;\n this.toolPanelSuppressValues = undefined;\n this.toolPanelSuppressPivots = undefined;\n this.toolPanelSuppressPivotMode = undefined;\n this.toolPanelSuppressSideButtons = undefined;\n this.toolPanelSuppressColumnFilter = undefined;\n this.toolPanelSuppressColumnSelectAll = undefined;\n this.toolPanelSuppressColumnExpandAll = undefined;\n this.suppressMakeColumnVisibleAfterUnGroup = undefined;\n this.suppressRowClickSelection = undefined;\n this.suppressCellSelection = undefined;\n this.suppressHorizontalScroll = undefined;\n this.alwaysShowVerticalScroll = undefined;\n this.debug = undefined;\n this.enableBrowserTooltips = undefined;\n this.enableColResize = undefined;\n this.enableCellExpressions = undefined;\n this.enableSorting = undefined;\n this.enableServerSideSorting = undefined;\n this.enableFilter = undefined;\n this.enableServerSideFilter = undefined;\n this.angularCompileRows = undefined;\n this.angularCompileFilters = undefined;\n this.angularCompileHeaders = undefined;\n this.groupSuppressAutoColumn = undefined;\n this.groupSelectsChildren = undefined;\n this.groupIncludeFooter = undefined;\n this.groupIncludeTotalFooter = undefined;\n this.groupUseEntireRow = undefined;\n this.groupSuppressRow = undefined;\n this.groupSuppressBlankHeader = undefined;\n this.forPrint = undefined;\n this.suppressMenuHide = undefined;\n this.rowDeselection = undefined;\n this.unSortIcon = undefined;\n this.suppressMultiSort = undefined;\n this.singleClickEdit = undefined;\n this.suppressLoadingOverlay = undefined;\n this.suppressNoRowsOverlay = undefined;\n this.suppressAutoSize = undefined;\n this.skipHeaderOnAutoSize = undefined;\n this.suppressParentsInRowNodes = undefined;\n this.showToolPanel = undefined;\n this.suppressColumnMoveAnimation = undefined;\n this.suppressMovableColumns = undefined;\n this.suppressFieldDotNotation = undefined;\n this.enableRangeSelection = undefined;\n this.enableRangeHandle = undefined;\n this.enableFillHandle = undefined;\n this.suppressClearOnFillReduction = undefined;\n this.deltaSort = undefined;\n this.suppressTouch = undefined;\n this.suppressAsyncEvents = undefined;\n this.allowContextMenuWithControlKey = undefined;\n this.suppressContextMenu = undefined;\n this.suppressMenuFilterPanel = undefined;\n this.suppressMenuMainPanel = undefined;\n this.suppressMenuColumnPanel = undefined;\n this.rememberGroupStateWhenNewData = undefined;\n this.enableCellChangeFlash = undefined;\n this.suppressDragLeaveHidesColumns = undefined;\n this.suppressMiddleClickScrolls = undefined;\n this.suppressPreventDefaultOnMouseWheel = undefined;\n this.suppressUseColIdForGroups = undefined;\n this.suppressCopyRowsToClipboard = undefined;\n this.copyHeadersToClipboard = undefined;\n this.pivotMode = undefined;\n this.suppressAggFuncInHeader = undefined;\n this.suppressColumnVirtualisation = undefined;\n this.suppressAggAtRootLevel = undefined;\n this.suppressFocusAfterRefresh = undefined;\n this.functionsPassive = undefined;\n this.functionsReadOnly = undefined;\n this.animateRows = undefined;\n this.groupSelectsFiltered = undefined;\n this.groupRemoveSingleChildren = undefined;\n this.groupRemoveLowestSingleChildren = undefined;\n this.enableRtl = undefined;\n this.suppressClickEdit = undefined;\n this.rowDragManaged = undefined;\n this.suppressRowDrag = undefined;\n this.suppressMoveWhenRowDragging = undefined;\n this.enableMultiRowDragging = undefined;\n this.enableGroupEdit = undefined;\n this.embedFullWidthRows = undefined;\n this.deprecatedEmbedFullWidthRows = undefined;\n this.suppressTabbing = undefined;\n this.suppressPaginationPanel = undefined;\n this.floatingFilter = undefined;\n this.groupHideOpenParents = undefined;\n this.groupMultiAutoColumn = undefined;\n this.pagination = undefined;\n this.stopEditingWhenGridLosesFocus = undefined;\n this.paginationAutoPageSize = undefined;\n this.suppressScrollOnNewData = undefined;\n this.purgeClosedRowNodes = undefined;\n this.cacheQuickFilter = undefined;\n this.deltaRowDataMode = undefined;\n this.ensureDomOrder = undefined;\n this.accentedSort = undefined;\n this.pivotTotals = undefined;\n this.suppressChangeDetection = undefined;\n this.valueCache = undefined;\n this.valueCacheNeverExpires = undefined;\n this.aggregateOnlyChangedColumns = undefined;\n this.suppressAnimationFrame = undefined;\n this.suppressExcelExport = undefined;\n this.suppressCsvExport = undefined;\n this.treeData = undefined;\n this.masterDetail = undefined;\n this.suppressMultiRangeSelection = undefined;\n this.enterMovesDownAfterEdit = undefined;\n this.enterMovesDown = undefined;\n this.suppressPropertyNamesCheck = undefined;\n this.rowMultiSelectWithClick = undefined;\n this.contractColumnSelection = undefined;\n this.suppressEnterpriseResetOnNewColumns = undefined;\n this.enableOldSetFilterModel = undefined;\n this.suppressRowHoverHighlight = undefined;\n this.gridAutoHeight = undefined;\n this.suppressRowTransform = undefined;\n this.suppressClipboardPaste = undefined;\n this.suppressLastEmptyLineOnPaste = undefined;\n this.serverSideSortingAlwaysResets = undefined;\n this.reactNext = undefined;\n this.suppressSetColumnStateEvents = undefined;\n this.enableCharts = undefined;\n this.deltaColumnMode = undefined;\n this.suppressMaintainUnsortedOrder = undefined;\n this.enableCellTextSelection = undefined;\n this.suppressBrowserResizeObserver = undefined;\n this.suppressMaxRenderedRowRestriction = undefined;\n this.excludeChildrenWhenTreeDataFiltering = undefined;\n this.tooltipMouseTrack = undefined;\n this.keepDetailRows = undefined;\n this.paginateChildRows = undefined;\n this.preventDefaultOnContextMenu = undefined;\n this.undoRedoCellEditing = undefined;\n this.allowDragFromColumnsToolPanel = undefined;\n this.immutableData = undefined;\n this.immutableColumns = undefined;\n this.pivotSuppressAutoColumn = undefined;\n this.columnEverythingChanged = new EventEmitter();\n this.newColumnsLoaded = new EventEmitter();\n this.columnPivotModeChanged = new EventEmitter();\n this.columnRowGroupChanged = new EventEmitter();\n this.expandOrCollapseAll = new EventEmitter();\n this.columnPivotChanged = new EventEmitter();\n this.gridColumnsChanged = new EventEmitter();\n this.columnValueChanged = new EventEmitter();\n this.columnMoved = new EventEmitter();\n this.columnVisible = new EventEmitter();\n this.columnPinned = new EventEmitter();\n this.columnGroupOpened = new EventEmitter();\n this.columnResized = new EventEmitter();\n this.displayedColumnsChanged = new EventEmitter();\n this.virtualColumnsChanged = new EventEmitter();\n this.rowGroupOpened = new EventEmitter();\n this.rowDataChanged = new EventEmitter();\n this.rowDataUpdated = new EventEmitter();\n this.pinnedRowDataChanged = new EventEmitter();\n this.rangeSelectionChanged = new EventEmitter();\n this.chartCreated = new EventEmitter();\n this.chartRangeSelectionChanged = new EventEmitter();\n this.chartOptionsChanged = new EventEmitter();\n this.chartDestroyed = new EventEmitter();\n this.toolPanelVisibleChanged = new EventEmitter();\n this.modelUpdated = new EventEmitter();\n this.pasteStart = new EventEmitter();\n this.pasteEnd = new EventEmitter();\n this.fillStart = new EventEmitter();\n this.fillEnd = new EventEmitter();\n this.cellClicked = new EventEmitter();\n this.cellDoubleClicked = new EventEmitter();\n this.cellMouseDown = new EventEmitter();\n this.cellContextMenu = new EventEmitter();\n this.cellValueChanged = new EventEmitter();\n this.rowValueChanged = new EventEmitter();\n this.cellFocused = new EventEmitter();\n this.rowSelected = new EventEmitter();\n this.selectionChanged = new EventEmitter();\n this.cellKeyDown = new EventEmitter();\n this.cellKeyPress = new EventEmitter();\n this.cellMouseOver = new EventEmitter();\n this.cellMouseOut = new EventEmitter();\n this.filterChanged = new EventEmitter();\n this.filterModified = new EventEmitter();\n this.filterOpened = new EventEmitter();\n this.sortChanged = new EventEmitter();\n this.virtualRowRemoved = new EventEmitter();\n this.rowClicked = new EventEmitter();\n this.rowDoubleClicked = new EventEmitter();\n this.gridReady = new EventEmitter();\n this.gridSizeChanged = new EventEmitter();\n this.viewportChanged = new EventEmitter();\n this.firstDataRendered = new EventEmitter();\n this.dragStarted = new EventEmitter();\n this.dragStopped = new EventEmitter();\n this.checkboxChanged = new EventEmitter();\n this.rowEditingStarted = new EventEmitter();\n this.rowEditingStopped = new EventEmitter();\n this.cellEditingStarted = new EventEmitter();\n this.cellEditingStopped = new EventEmitter();\n this.bodyScroll = new EventEmitter();\n this.animationQueueEmpty = new EventEmitter();\n this.heightScaleChanged = new EventEmitter();\n this.paginationChanged = new EventEmitter();\n this.componentStateChanged = new EventEmitter();\n this.bodyHeightChanged = new EventEmitter();\n this.displayedColumnsWidthChanged = new EventEmitter();\n this.scrollVisibilityChanged = new EventEmitter();\n this.columnHoverChanged = new EventEmitter();\n this.flashCells = new EventEmitter();\n this.rowDragEnter = new EventEmitter();\n this.rowDragMove = new EventEmitter();\n this.rowDragLeave = new EventEmitter();\n this.rowDragEnd = new EventEmitter();\n this.popupToFront = new EventEmitter();\n this.columnRowGroupChangeRequest = new EventEmitter();\n this.columnPivotChangeRequest = new EventEmitter();\n this.columnValueChangeRequest = new EventEmitter();\n this.columnAggFuncChangeRequest = new EventEmitter();\n this.keyboardFocus = new EventEmitter();\n this.mouseFocus = new EventEmitter();\n this._nativeElement = elementDef.nativeElement;\n this.frameworkComponentWrapper.setViewContainerRef(this.viewContainerRef);\n this.frameworkComponentWrapper.setComponentFactoryResolver(this._componentFactoryResolver);\n }\n ngAfterViewInit() {\n this.checkForDeprecatedEvents();\n this.gridOptions = ComponentUtil.copyAttributesToGridOptions(this.gridOptions, this, true);\n this.gridParams = {\n globalEventListener: this.globalEventListener.bind(this),\n frameworkOverrides: this.angularFrameworkOverrides,\n providedBeanInstances: {\n frameworkComponentWrapper: this.frameworkComponentWrapper\n },\n modules: (this.modules || [])\n };\n if (this.columns && this.columns.length > 0) {\n this.gridOptions.columnDefs = this.columns\n .map((column) => {\n return column.toColDef();\n });\n }\n new Grid(this._nativeElement, this.gridOptions, this.gridParams);\n if (this.gridOptions.api) {\n this.api = this.gridOptions.api;\n }\n if (this.gridOptions.columnApi) {\n this.columnApi = this.gridOptions.columnApi;\n }\n this._initialised = true;\n // sometimes, especially in large client apps gridReady can fire before ngAfterViewInit\n // this ties these together so that gridReady will always fire after agGridAngular's ngAfterViewInit\n // the actual containing component's ngAfterViewInit will fire just after agGridAngular's\n this._fullyReady.resolveNow(null, resolve => resolve);\n }\n ngOnChanges(changes) {\n if (this._initialised) {\n ComponentUtil.processOnChange(changes, this.gridOptions, this.api, this.columnApi);\n }\n }\n ngOnDestroy() {\n if (this._initialised) {\n // need to do this before the destroy, so we know not to emit any events\n // while tearing down the grid.\n this._destroyed = true;\n if (this.api) {\n this.api.destroy();\n }\n }\n }\n checkForDeprecatedEvents() {\n _.iterateObject(Events, (key, eventName) => {\n if (this[eventName] && this[eventName].observers.length > 0) {\n GridOptionsWrapper.checkEventDeprecation(eventName);\n }\n });\n }\n globalEventListener(eventType, event) {\n // if we are tearing down, don't emit angular events, as this causes\n // problems with the angular router\n if (this._destroyed) {\n return;\n }\n // generically look up the eventType\n let emitter = this[eventType];\n if (emitter) {\n if (eventType === 'gridReady') {\n // if the user is listening for gridReady, wait for ngAfterViewInit to fire first, then emit the\n // gridReady event\n this._fullyReady.then((result => {\n emitter.emit(event);\n }));\n }\n else {\n emitter.emit(event);\n }\n }\n else {\n console.log('ag-Grid-angular: could not find EventEmitter: ' + eventType);\n }\n }\n};\nAgGridAngular.ɵfac = function AgGridAngular_Factory(t) { return new (t || AgGridAngular)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(AngularFrameworkOverrides), ɵngcc0.ɵɵdirectiveInject(AngularFrameworkComponentWrapper), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver)); };\nAgGridAngular.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AgGridAngular, selectors: [[\"ag-grid-angular\"]], contentQueries: function AgGridAngular_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, AgGridColumn, 0);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n } }, inputs: { slaveGrids: \"slaveGrids\", alignedGrids: \"alignedGrids\", rowData: \"rowData\", columnDefs: \"columnDefs\", excelStyles: \"excelStyles\", pinnedTopRowData: \"pinnedTopRowData\", pinnedBottomRowData: \"pinnedBottomRowData\", components: \"components\", frameworkComponents: \"frameworkComponents\", rowStyle: \"rowStyle\", context: \"context\", autoGroupColumnDef: \"autoGroupColumnDef\", groupColumnDef: \"groupColumnDef\", localeText: \"localeText\", icons: \"icons\", datasource: \"datasource\", serverSideDatasource: \"serverSideDatasource\", viewportDatasource: \"viewportDatasource\", groupRowRendererParams: \"groupRowRendererParams\", aggFuncs: \"aggFuncs\", fullWidthCellRendererParams: \"fullWidthCellRendererParams\", defaultColGroupDef: \"defaultColGroupDef\", defaultColDef: \"defaultColDef\", defaultExportParams: \"defaultExportParams\", columnTypes: \"columnTypes\", rowClassRules: \"rowClassRules\", detailGridOptions: \"detailGridOptions\", detailCellRendererParams: \"detailCellRendererParams\", loadingCellRendererParams: \"loadingCellRendererParams\", loadingOverlayComponentParams: \"loadingOverlayComponentParams\", noRowsOverlayComponentParams: \"noRowsOverlayComponentParams\", popupParent: \"popupParent\", colResizeDefault: \"colResizeDefault\", reduxStore: \"reduxStore\", statusBar: \"statusBar\", sideBar: \"sideBar\", sortingOrder: \"sortingOrder\", rowClass: \"rowClass\", rowSelection: \"rowSelection\", overlayLoadingTemplate: \"overlayLoadingTemplate\", overlayNoRowsTemplate: \"overlayNoRowsTemplate\", quickFilterText: \"quickFilterText\", rowModelType: \"rowModelType\", editType: \"editType\", domLayout: \"domLayout\", clipboardDeliminator: \"clipboardDeliminator\", rowGroupPanelShow: \"rowGroupPanelShow\", multiSortKey: \"multiSortKey\", pivotColumnGroupTotals: \"pivotColumnGroupTotals\", pivotRowTotals: \"pivotRowTotals\", pivotPanelShow: \"pivotPanelShow\", rowHeight: \"rowHeight\", detailRowHeight: \"detailRowHeight\", rowBuffer: \"rowBuffer\", colWidth: \"colWidth\", headerHeight: \"headerHeight\", groupHeaderHeight: \"groupHeaderHeight\", floatingFiltersHeight: \"floatingFiltersHeight\", pivotHeaderHeight: \"pivotHeaderHeight\", pivotGroupHeaderHeight: \"pivotGroupHeaderHeight\", groupDefaultExpanded: \"groupDefaultExpanded\", minColWidth: \"minColWidth\", maxColWidth: \"maxColWidth\", viewportRowModelPageSize: \"viewportRowModelPageSize\", viewportRowModelBufferSize: \"viewportRowModelBufferSize\", autoSizePadding: \"autoSizePadding\", maxBlocksInCache: \"maxBlocksInCache\", maxConcurrentDatasourceRequests: \"maxConcurrentDatasourceRequests\", tooltipShowDelay: \"tooltipShowDelay\", cacheOverflowSize: \"cacheOverflowSize\", paginationPageSize: \"paginationPageSize\", cacheBlockSize: \"cacheBlockSize\", infiniteInitialRowCount: \"infiniteInitialRowCount\", scrollbarWidth: \"scrollbarWidth\", paginationStartPage: \"paginationStartPage\", infiniteBlockSize: \"infiniteBlockSize\", batchUpdateWaitMillis: \"batchUpdateWaitMillis\", asyncTransactionWaitMillis: \"asyncTransactionWaitMillis\", blockLoadDebounceMillis: \"blockLoadDebounceMillis\", keepDetailRowsCount: \"keepDetailRowsCount\", undoRedoCellEditingLimit: \"undoRedoCellEditingLimit\", localeTextFunc: \"localeTextFunc\", groupRowInnerRenderer: \"groupRowInnerRenderer\", groupRowInnerRendererFramework: \"groupRowInnerRendererFramework\", dateComponent: \"dateComponent\", dateComponentFramework: \"dateComponentFramework\", groupRowRenderer: \"groupRowRenderer\", groupRowRendererFramework: \"groupRowRendererFramework\", isExternalFilterPresent: \"isExternalFilterPresent\", getRowHeight: \"getRowHeight\", doesExternalFilterPass: \"doesExternalFilterPass\", getRowClass: \"getRowClass\", getRowStyle: \"getRowStyle\", getRowClassRules: \"getRowClassRules\", traverseNode: \"traverseNode\", getContextMenuItems: \"getContextMenuItems\", getMainMenuItems: \"getMainMenuItems\", processRowPostCreate: \"processRowPostCreate\", processCellForClipboard: \"processCellForClipboard\", getNodeChildDetails: \"getNodeChildDetails\", groupRowAggNodes: \"groupRowAggNodes\", getRowNodeId: \"getRowNodeId\", isFullWidthCell: \"isFullWidthCell\", fullWidthCellRenderer: \"fullWidthCellRenderer\", fullWidthCellRendererFramework: \"fullWidthCellRendererFramework\", doesDataFlower: \"doesDataFlower\", processSecondaryColDef: \"processSecondaryColDef\", processSecondaryColGroupDef: \"processSecondaryColGroupDef\", getBusinessKeyForNode: \"getBusinessKeyForNode\", sendToClipboard: \"sendToClipboard\", navigateToNextCell: \"navigateToNextCell\", tabToNextCell: \"tabToNextCell\", getDetailRowData: \"getDetailRowData\", processCellFromClipboard: \"processCellFromClipboard\", getDocument: \"getDocument\", postProcessPopup: \"postProcessPopup\", getChildCount: \"getChildCount\", getDataPath: \"getDataPath\", loadingCellRenderer: \"loadingCellRenderer\", loadingCellRendererFramework: \"loadingCellRendererFramework\", loadingOverlayComponent: \"loadingOverlayComponent\", loadingOverlayComponentFramework: \"loadingOverlayComponentFramework\", noRowsOverlayComponent: \"noRowsOverlayComponent\", noRowsOverlayComponentFramework: \"noRowsOverlayComponentFramework\", detailCellRenderer: \"detailCellRenderer\", detailCellRendererFramework: \"detailCellRendererFramework\", defaultGroupSortComparator: \"defaultGroupSortComparator\", isRowMaster: \"isRowMaster\", isRowSelectable: \"isRowSelectable\", postSort: \"postSort\", processHeaderForClipboard: \"processHeaderForClipboard\", paginationNumberFormatter: \"paginationNumberFormatter\", processDataFromClipboard: \"processDataFromClipboard\", getServerSideGroupKey: \"getServerSideGroupKey\", isServerSideGroup: \"isServerSideGroup\", suppressKeyboardEvent: \"suppressKeyboardEvent\", createChartContainer: \"createChartContainer\", processChartOptions: \"processChartOptions\", getChartToolbarItems: \"getChartToolbarItems\", fillOperation: \"fillOperation\", toolPanelSuppressRowGroups: \"toolPanelSuppressRowGroups\", toolPanelSuppressValues: \"toolPanelSuppressValues\", toolPanelSuppressPivots: \"toolPanelSuppressPivots\", toolPanelSuppressPivotMode: \"toolPanelSuppressPivotMode\", toolPanelSuppressSideButtons: \"toolPanelSuppressSideButtons\", toolPanelSuppressColumnFilter: \"toolPanelSuppressColumnFilter\", toolPanelSuppressColumnSelectAll: \"toolPanelSuppressColumnSelectAll\", toolPanelSuppressColumnExpandAll: \"toolPanelSuppressColumnExpandAll\", suppressMakeColumnVisibleAfterUnGroup: \"suppressMakeColumnVisibleAfterUnGroup\", suppressRowClickSelection: \"suppressRowClickSelection\", suppressCellSelection: \"suppressCellSelection\", suppressHorizontalScroll: \"suppressHorizontalScroll\", alwaysShowVerticalScroll: \"alwaysShowVerticalScroll\", debug: \"debug\", enableBrowserTooltips: \"enableBrowserTooltips\", enableColResize: \"enableColResize\", enableCellExpressions: \"enableCellExpressions\", enableSorting: \"enableSorting\", enableServerSideSorting: \"enableServerSideSorting\", enableFilter: \"enableFilter\", enableServerSideFilter: \"enableServerSideFilter\", angularCompileRows: \"angularCompileRows\", angularCompileFilters: \"angularCompileFilters\", angularCompileHeaders: \"angularCompileHeaders\", groupSuppressAutoColumn: \"groupSuppressAutoColumn\", groupSelectsChildren: \"groupSelectsChildren\", groupIncludeFooter: \"groupIncludeFooter\", groupIncludeTotalFooter: \"groupIncludeTotalFooter\", groupUseEntireRow: \"groupUseEntireRow\", groupSuppressRow: \"groupSuppressRow\", groupSuppressBlankHeader: \"groupSuppressBlankHeader\", forPrint: \"forPrint\", suppressMenuHide: \"suppressMenuHide\", rowDeselection: \"rowDeselection\", unSortIcon: \"unSortIcon\", suppressMultiSort: \"suppressMultiSort\", singleClickEdit: \"singleClickEdit\", suppressLoadingOverlay: \"suppressLoadingOverlay\", suppressNoRowsOverlay: \"suppressNoRowsOverlay\", suppressAutoSize: \"suppressAutoSize\", skipHeaderOnAutoSize: \"skipHeaderOnAutoSize\", suppressParentsInRowNodes: \"suppressParentsInRowNodes\", showToolPanel: \"showToolPanel\", suppressColumnMoveAnimation: \"suppressColumnMoveAnimation\", suppressMovableColumns: \"suppressMovableColumns\", suppressFieldDotNotation: \"suppressFieldDotNotation\", enableRangeSelection: \"enableRangeSelection\", enableRangeHandle: \"enableRangeHandle\", enableFillHandle: \"enableFillHandle\", suppressClearOnFillReduction: \"suppressClearOnFillReduction\", deltaSort: \"deltaSort\", suppressTouch: \"suppressTouch\", suppressAsyncEvents: \"suppressAsyncEvents\", allowContextMenuWithControlKey: \"allowContextMenuWithControlKey\", suppressContextMenu: \"suppressContextMenu\", suppressMenuFilterPanel: \"suppressMenuFilterPanel\", suppressMenuMainPanel: \"suppressMenuMainPanel\", suppressMenuColumnPanel: \"suppressMenuColumnPanel\", rememberGroupStateWhenNewData: \"rememberGroupStateWhenNewData\", enableCellChangeFlash: \"enableCellChangeFlash\", suppressDragLeaveHidesColumns: \"suppressDragLeaveHidesColumns\", suppressMiddleClickScrolls: \"suppressMiddleClickScrolls\", suppressPreventDefaultOnMouseWheel: \"suppressPreventDefaultOnMouseWheel\", suppressUseColIdForGroups: \"suppressUseColIdForGroups\", suppressCopyRowsToClipboard: \"suppressCopyRowsToClipboard\", copyHeadersToClipboard: \"copyHeadersToClipboard\", pivotMode: \"pivotMode\", suppressAggFuncInHeader: \"suppressAggFuncInHeader\", suppressColumnVirtualisation: \"suppressColumnVirtualisation\", suppressAggAtRootLevel: \"suppressAggAtRootLevel\", suppressFocusAfterRefresh: \"suppressFocusAfterRefresh\", functionsPassive: \"functionsPassive\", functionsReadOnly: \"functionsReadOnly\", animateRows: \"animateRows\", groupSelectsFiltered: \"groupSelectsFiltered\", groupRemoveSingleChildren: \"groupRemoveSingleChildren\", groupRemoveLowestSingleChildren: \"groupRemoveLowestSingleChildren\", enableRtl: \"enableRtl\", suppressClickEdit: \"suppressClickEdit\", rowDragManaged: \"rowDragManaged\", suppressRowDrag: \"suppressRowDrag\", suppressMoveWhenRowDragging: \"suppressMoveWhenRowDragging\", enableMultiRowDragging: \"enableMultiRowDragging\", enableGroupEdit: \"enableGroupEdit\", embedFullWidthRows: \"embedFullWidthRows\", deprecatedEmbedFullWidthRows: \"deprecatedEmbedFullWidthRows\", suppressTabbing: \"suppressTabbing\", suppressPaginationPanel: \"suppressPaginationPanel\", floatingFilter: \"floatingFilter\", groupHideOpenParents: \"groupHideOpenParents\", groupMultiAutoColumn: \"groupMultiAutoColumn\", pagination: \"pagination\", stopEditingWhenGridLosesFocus: \"stopEditingWhenGridLosesFocus\", paginationAutoPageSize: \"paginationAutoPageSize\", suppressScrollOnNewData: \"suppressScrollOnNewData\", purgeClosedRowNodes: \"purgeClosedRowNodes\", cacheQuickFilter: \"cacheQuickFilter\", deltaRowDataMode: \"deltaRowDataMode\", ensureDomOrder: \"ensureDomOrder\", accentedSort: \"accentedSort\", pivotTotals: \"pivotTotals\", suppressChangeDetection: \"suppressChangeDetection\", valueCache: \"valueCache\", valueCacheNeverExpires: \"valueCacheNeverExpires\", aggregateOnlyChangedColumns: \"aggregateOnlyChangedColumns\", suppressAnimationFrame: \"suppressAnimationFrame\", suppressExcelExport: \"suppressExcelExport\", suppressCsvExport: \"suppressCsvExport\", treeData: \"treeData\", masterDetail: \"masterDetail\", suppressMultiRangeSelection: \"suppressMultiRangeSelection\", enterMovesDownAfterEdit: \"enterMovesDownAfterEdit\", enterMovesDown: \"enterMovesDown\", suppressPropertyNamesCheck: \"suppressPropertyNamesCheck\", rowMultiSelectWithClick: \"rowMultiSelectWithClick\", contractColumnSelection: \"contractColumnSelection\", suppressEnterpriseResetOnNewColumns: \"suppressEnterpriseResetOnNewColumns\", enableOldSetFilterModel: \"enableOldSetFilterModel\", suppressRowHoverHighlight: \"suppressRowHoverHighlight\", gridAutoHeight: \"gridAutoHeight\", suppressRowTransform: \"suppressRowTransform\", suppressClipboardPaste: \"suppressClipboardPaste\", suppressLastEmptyLineOnPaste: \"suppressLastEmptyLineOnPaste\", serverSideSortingAlwaysResets: \"serverSideSortingAlwaysResets\", reactNext: \"reactNext\", suppressSetColumnStateEvents: \"suppressSetColumnStateEvents\", enableCharts: \"enableCharts\", deltaColumnMode: \"deltaColumnMode\", suppressMaintainUnsortedOrder: \"suppressMaintainUnsortedOrder\", enableCellTextSelection: \"enableCellTextSelection\", suppressBrowserResizeObserver: \"suppressBrowserResizeObserver\", suppressMaxRenderedRowRestriction: \"suppressMaxRenderedRowRestriction\", excludeChildrenWhenTreeDataFiltering: \"excludeChildrenWhenTreeDataFiltering\", tooltipMouseTrack: \"tooltipMouseTrack\", keepDetailRows: \"keepDetailRows\", paginateChildRows: \"paginateChildRows\", preventDefaultOnContextMenu: \"preventDefaultOnContextMenu\", undoRedoCellEditing: \"undoRedoCellEditing\", allowDragFromColumnsToolPanel: \"allowDragFromColumnsToolPanel\", immutableData: \"immutableData\", immutableColumns: \"immutableColumns\", pivotSuppressAutoColumn: \"pivotSuppressAutoColumn\", gridOptions: \"gridOptions\", modules: \"modules\" }, outputs: { columnEverythingChanged: \"columnEverythingChanged\", newColumnsLoaded: \"newColumnsLoaded\", columnPivotModeChanged: \"columnPivotModeChanged\", columnRowGroupChanged: \"columnRowGroupChanged\", expandOrCollapseAll: \"expandOrCollapseAll\", columnPivotChanged: \"columnPivotChanged\", gridColumnsChanged: \"gridColumnsChanged\", columnValueChanged: \"columnValueChanged\", columnMoved: \"columnMoved\", columnVisible: \"columnVisible\", columnPinned: \"columnPinned\", columnGroupOpened: \"columnGroupOpened\", columnResized: \"columnResized\", displayedColumnsChanged: \"displayedColumnsChanged\", virtualColumnsChanged: \"virtualColumnsChanged\", rowGroupOpened: \"rowGroupOpened\", rowDataChanged: \"rowDataChanged\", rowDataUpdated: \"rowDataUpdated\", pinnedRowDataChanged: \"pinnedRowDataChanged\", rangeSelectionChanged: \"rangeSelectionChanged\", chartCreated: \"chartCreated\", chartRangeSelectionChanged: \"chartRangeSelectionChanged\", chartOptionsChanged: \"chartOptionsChanged\", chartDestroyed: \"chartDestroyed\", toolPanelVisibleChanged: \"toolPanelVisibleChanged\", modelUpdated: \"modelUpdated\", pasteStart: \"pasteStart\", pasteEnd: \"pasteEnd\", fillStart: \"fillStart\", fillEnd: \"fillEnd\", cellClicked: \"cellClicked\", cellDoubleClicked: \"cellDoubleClicked\", cellMouseDown: \"cellMouseDown\", cellContextMenu: \"cellContextMenu\", cellValueChanged: \"cellValueChanged\", rowValueChanged: \"rowValueChanged\", cellFocused: \"cellFocused\", rowSelected: \"rowSelected\", selectionChanged: \"selectionChanged\", cellKeyDown: \"cellKeyDown\", cellKeyPress: \"cellKeyPress\", cellMouseOver: \"cellMouseOver\", cellMouseOut: \"cellMouseOut\", filterChanged: \"filterChanged\", filterModified: \"filterModified\", filterOpened: \"filterOpened\", sortChanged: \"sortChanged\", virtualRowRemoved: \"virtualRowRemoved\", rowClicked: \"rowClicked\", rowDoubleClicked: \"rowDoubleClicked\", gridReady: \"gridReady\", gridSizeChanged: \"gridSizeChanged\", viewportChanged: \"viewportChanged\", firstDataRendered: \"firstDataRendered\", dragStarted: \"dragStarted\", dragStopped: \"dragStopped\", checkboxChanged: \"checkboxChanged\", rowEditingStarted: \"rowEditingStarted\", rowEditingStopped: \"rowEditingStopped\", cellEditingStarted: \"cellEditingStarted\", cellEditingStopped: \"cellEditingStopped\", bodyScroll: \"bodyScroll\", animationQueueEmpty: \"animationQueueEmpty\", heightScaleChanged: \"heightScaleChanged\", paginationChanged: \"paginationChanged\", componentStateChanged: \"componentStateChanged\", bodyHeightChanged: \"bodyHeightChanged\", displayedColumnsWidthChanged: \"displayedColumnsWidthChanged\", scrollVisibilityChanged: \"scrollVisibilityChanged\", columnHoverChanged: \"columnHoverChanged\", flashCells: \"flashCells\", rowDragEnter: \"rowDragEnter\", rowDragMove: \"rowDragMove\", rowDragLeave: \"rowDragLeave\", rowDragEnd: \"rowDragEnd\", popupToFront: \"popupToFront\", columnRowGroupChangeRequest: \"columnRowGroupChangeRequest\", columnPivotChangeRequest: \"columnPivotChangeRequest\", columnValueChangeRequest: \"columnValueChangeRequest\", columnAggFuncChangeRequest: \"columnAggFuncChangeRequest\", keyboardFocus: \"keyboardFocus\", mouseFocus: \"mouseFocus\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function AgGridAngular_Template(rf, ctx) { }, encapsulation: 2 });\nAgGridAngular.ctorParameters = () => [\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: AngularFrameworkOverrides },\n { type: AngularFrameworkComponentWrapper },\n { type: ComponentFactoryResolver }\n];\n__decorate([\n ContentChildren(AgGridColumn),\n __metadata(\"design:type\", QueryList)\n], AgGridAngular.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"gridOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], AgGridAngular.prototype, \"modules\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"slaveGrids\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"alignedGrids\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"columnDefs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"excelStyles\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pinnedTopRowData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pinnedBottomRowData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"components\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"frameworkComponents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"context\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"autoGroupColumnDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupColumnDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"localeText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"icons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"datasource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"serverSideDatasource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"viewportDatasource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"aggFuncs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fullWidthCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultColGroupDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultColDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultExportParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"columnTypes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowClassRules\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailGridOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingOverlayComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"noRowsOverlayComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"popupParent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"colResizeDefault\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"reduxStore\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"statusBar\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"sideBar\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"sortingOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"overlayLoadingTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"overlayNoRowsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"quickFilterText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowModelType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"editType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"domLayout\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"clipboardDeliminator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowGroupPanelShow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"multiSortKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotColumnGroupTotals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotRowTotals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotPanelShow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailRowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowBuffer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"colWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"headerHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupHeaderHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"floatingFiltersHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotHeaderHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotGroupHeaderHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupDefaultExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"minColWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"maxColWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"viewportRowModelPageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"viewportRowModelBufferSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"autoSizePadding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"maxBlocksInCache\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"maxConcurrentDatasourceRequests\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tooltipShowDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cacheOverflowSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginationPageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cacheBlockSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"infiniteInitialRowCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"scrollbarWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginationStartPage\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"infiniteBlockSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"batchUpdateWaitMillis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"asyncTransactionWaitMillis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"blockLoadDebounceMillis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"keepDetailRowsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"undoRedoCellEditingLimit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"localeTextFunc\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowInnerRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowInnerRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"dateComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"dateComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isExternalFilterPresent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"doesExternalFilterPass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowClassRules\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"traverseNode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getContextMenuItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getMainMenuItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processRowPostCreate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processCellForClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getNodeChildDetails\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowAggNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowNodeId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isFullWidthCell\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fullWidthCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fullWidthCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"doesDataFlower\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processSecondaryColDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processSecondaryColGroupDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getBusinessKeyForNode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"sendToClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"navigateToNextCell\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tabToNextCell\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getDetailRowData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processCellFromClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getDocument\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"postProcessPopup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getChildCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getDataPath\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingOverlayComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingOverlayComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"noRowsOverlayComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"noRowsOverlayComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultGroupSortComparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isRowMaster\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isRowSelectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"postSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processHeaderForClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginationNumberFormatter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processDataFromClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getServerSideGroupKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isServerSideGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressKeyboardEvent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"createChartContainer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processChartOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getChartToolbarItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fillOperation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressRowGroups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressValues\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressPivots\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressPivotMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressSideButtons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressColumnFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressColumnSelectAll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"toolPanelSuppressColumnExpandAll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMakeColumnVisibleAfterUnGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowClickSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressCellSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressHorizontalScroll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"alwaysShowVerticalScroll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"debug\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableBrowserTooltips\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableColResize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCellExpressions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableSorting\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableServerSideSorting\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableServerSideFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"angularCompileRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"angularCompileFilters\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"angularCompileHeaders\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSuppressAutoColumn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSelectsChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupIncludeFooter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupIncludeTotalFooter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupUseEntireRow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSuppressRow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSuppressBlankHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"forPrint\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMenuHide\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowDeselection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"unSortIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMultiSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"singleClickEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressLoadingOverlay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressNoRowsOverlay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAutoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"skipHeaderOnAutoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressParentsInRowNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"showToolPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressColumnMoveAnimation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMovableColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressFieldDotNotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableRangeSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableRangeHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableFillHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressClearOnFillReduction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deltaSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressTouch\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAsyncEvents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"allowContextMenuWithControlKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressContextMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMenuFilterPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMenuMainPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMenuColumnPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rememberGroupStateWhenNewData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCellChangeFlash\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressDragLeaveHidesColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMiddleClickScrolls\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressPreventDefaultOnMouseWheel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressUseColIdForGroups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressCopyRowsToClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"copyHeadersToClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAggFuncInHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressColumnVirtualisation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAggAtRootLevel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressFocusAfterRefresh\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"functionsPassive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"functionsReadOnly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"animateRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSelectsFiltered\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRemoveSingleChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRemoveLowestSingleChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableRtl\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressClickEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowDragManaged\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowDrag\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMoveWhenRowDragging\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableMultiRowDragging\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableGroupEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"embedFullWidthRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deprecatedEmbedFullWidthRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressTabbing\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressPaginationPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"floatingFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupHideOpenParents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupMultiAutoColumn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pagination\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"stopEditingWhenGridLosesFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginationAutoPageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressScrollOnNewData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"purgeClosedRowNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cacheQuickFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deltaRowDataMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"ensureDomOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"accentedSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotTotals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressChangeDetection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"valueCache\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"valueCacheNeverExpires\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"aggregateOnlyChangedColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAnimationFrame\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressExcelExport\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressCsvExport\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"treeData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"masterDetail\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMultiRangeSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enterMovesDownAfterEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enterMovesDown\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressPropertyNamesCheck\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowMultiSelectWithClick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"contractColumnSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressEnterpriseResetOnNewColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableOldSetFilterModel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowHoverHighlight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"gridAutoHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowTransform\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressClipboardPaste\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressLastEmptyLineOnPaste\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"serverSideSortingAlwaysResets\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"reactNext\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressSetColumnStateEvents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCharts\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deltaColumnMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMaintainUnsortedOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCellTextSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressBrowserResizeObserver\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMaxRenderedRowRestriction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"excludeChildrenWhenTreeDataFiltering\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tooltipMouseTrack\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"keepDetailRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginateChildRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"preventDefaultOnContextMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"undoRedoCellEditing\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"allowDragFromColumnsToolPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"immutableData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"immutableColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotSuppressAutoColumn\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnEverythingChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"newColumnsLoaded\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPivotModeChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnRowGroupChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"expandOrCollapseAll\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPivotChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"gridColumnsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnValueChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnMoved\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnVisible\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPinned\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnGroupOpened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnResized\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"displayedColumnsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"virtualColumnsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowGroupOpened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDataChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDataUpdated\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"pinnedRowDataChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rangeSelectionChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartCreated\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartRangeSelectionChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartOptionsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartDestroyed\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"toolPanelVisibleChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"modelUpdated\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"pasteStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"pasteEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"fillStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"fillEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellDoubleClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellMouseDown\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellContextMenu\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellValueChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowValueChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellFocused\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowSelected\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"selectionChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellKeyDown\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellKeyPress\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellMouseOver\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellMouseOut\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"filterChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"filterModified\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"filterOpened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"sortChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"virtualRowRemoved\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDoubleClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"gridReady\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"gridSizeChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"viewportChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"firstDataRendered\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"dragStarted\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"dragStopped\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"checkboxChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowEditingStarted\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowEditingStopped\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellEditingStarted\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellEditingStopped\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"bodyScroll\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"animationQueueEmpty\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"heightScaleChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"paginationChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"componentStateChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"bodyHeightChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"displayedColumnsWidthChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"scrollVisibilityChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnHoverChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"flashCells\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragEnter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragMove\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"popupToFront\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnRowGroupChangeRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPivotChangeRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnValueChangeRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnAggFuncChangeRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"keyboardFocus\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"mouseFocus\", void 0);\nAgGridAngular = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ViewContainerRef,\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper,\n ComponentFactoryResolver])\n], AgGridAngular);\n\nvar AgGridModule_1;\nlet AgGridModule = AgGridModule_1 = class AgGridModule {\n static withComponents(components) {\n return {\n ngModule: AgGridModule_1,\n providers: [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: components, multi: true }\n ],\n };\n }\n static forRoot(components) {\n return {\n ngModule: AgGridModule_1,\n providers: [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: components, multi: true }\n ],\n };\n }\n};\nAgGridModule.ɵfac = function AgGridModule_Factory(t) { return new (t || AgGridModule)(); };\nAgGridModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: AgGridModule });\nAgGridModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AgGridColumn, [{\n type: Component,\n args: [{\n selector: 'ag-grid-column',\n template: ''\n }]\n }], null, { childColumns: [{\n type: ContentChildren,\n args: [AgGridColumn_1]\n }], children: [{\n type: Input\n }], sortingOrder: [{\n type: Input\n }], allowedAggFuncs: [{\n type: Input\n }], menuTabs: [{\n type: Input\n }], cellClassRules: [{\n type: Input\n }], icons: [{\n type: Input\n }], headerGroupComponent: [{\n type: Input\n }], headerGroupComponentFramework: [{\n type: Input\n }], headerGroupComponentParams: [{\n type: Input\n }], cellStyle: [{\n type: Input\n }], cellRendererParams: [{\n type: Input\n }], cellEditorFramework: [{\n type: Input\n }], cellEditorParams: [{\n type: Input\n }], pinnedRowCellRendererFramework: [{\n type: Input\n }], pinnedRowCellRendererParams: [{\n type: Input\n }], filterFramework: [{\n type: Input\n }], filterParams: [{\n type: Input\n }], headerComponent: [{\n type: Input\n }], headerComponentFramework: [{\n type: Input\n }], headerComponentParams: [{\n type: Input\n }], floatingFilterComponent: [{\n type: Input\n }], floatingFilterComponentParams: [{\n type: Input\n }], floatingFilterComponentFramework: [{\n type: Input\n }], tooltipComponent: [{\n type: Input\n }], tooltipComponentParams: [{\n type: Input\n }], tooltipComponentFramework: [{\n type: Input\n }], refData: [{\n type: Input\n }], headerName: [{\n type: Input\n }], columnGroupShow: [{\n type: Input\n }], headerClass: [{\n type: Input\n }], toolPanelClass: [{\n type: Input\n }], headerValueGetter: [{\n type: Input\n }], groupId: [{\n type: Input\n }], colId: [{\n type: Input\n }], sort: [{\n type: Input\n }], field: [{\n type: Input\n }], type: [{\n type: Input\n }], tooltipField: [{\n type: Input\n }], headerTooltip: [{\n type: Input\n }], cellClass: [{\n type: Input\n }], showRowGroup: [{\n type: Input\n }], filter: [{\n type: Input\n }], aggFunc: [{\n type: Input\n }], cellRenderer: [{\n type: Input\n }], cellEditor: [{\n type: Input\n }], pinned: [{\n type: Input\n }], chartDataType: [{\n type: Input\n }], sortedAt: [{\n type: Input\n }], flex: [{\n type: Input\n }], width: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], maxWidth: [{\n type: Input\n }], rowGroupIndex: [{\n type: Input\n }], pivotIndex: [{\n type: Input\n }], dndSourceOnRowDrag: [{\n type: Input\n }], valueGetter: [{\n type: Input\n }], valueSetter: [{\n type: Input\n }], filterValueGetter: [{\n type: Input\n }], keyCreator: [{\n type: Input\n }], cellRendererFramework: [{\n type: Input\n }], pinnedRowCellRenderer: [{\n type: Input\n }], valueFormatter: [{\n type: Input\n }], pinnedRowValueFormatter: [{\n type: Input\n }], valueParser: [{\n type: Input\n }], comparator: [{\n type: Input\n }], equals: [{\n type: Input\n }], pivotComparator: [{\n type: Input\n }], suppressKeyboardEvent: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], getQuickFilterText: [{\n type: Input\n }], newValueHandler: [{\n type: Input\n }], onCellValueChanged: [{\n type: Input\n }], onCellClicked: [{\n type: Input\n }], onCellDoubleClicked: [{\n type: Input\n }], onCellContextMenu: [{\n type: Input\n }], rowDragText: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], tooltipValueGetter: [{\n type: Input\n }], cellRendererSelector: [{\n type: Input\n }], cellEditorSelector: [{\n type: Input\n }], suppressCellFlash: [{\n type: Input\n }], suppressColumnsToolPanel: [{\n type: Input\n }], suppressFiltersToolPanel: [{\n type: Input\n }], openByDefault: [{\n type: Input\n }], marryChildren: [{\n type: Input\n }], hide: [{\n type: Input\n }], rowGroup: [{\n type: Input\n }], pivot: [{\n type: Input\n }], checkboxSelection: [{\n type: Input\n }], headerCheckboxSelection: [{\n type: Input\n }], headerCheckboxSelectionFilteredOnly: [{\n type: Input\n }], suppressMenu: [{\n type: Input\n }], suppressSorting: [{\n type: Input\n }], suppressMovable: [{\n type: Input\n }], suppressFilter: [{\n type: Input\n }], lockPosition: [{\n type: Input\n }], lockVisible: [{\n type: Input\n }], lockPinned: [{\n type: Input\n }], unSortIcon: [{\n type: Input\n }], suppressSizeToFit: [{\n type: Input\n }], suppressResize: [{\n type: Input\n }], suppressAutoSize: [{\n type: Input\n }], enableRowGroup: [{\n type: Input\n }], enablePivot: [{\n type: Input\n }], enableValue: [{\n type: Input\n }], editable: [{\n type: Input\n }], suppressPaste: [{\n type: Input\n }], suppressNavigable: [{\n type: Input\n }], enableCellChangeFlash: [{\n type: Input\n }], rowDrag: [{\n type: Input\n }], dndSource: [{\n type: Input\n }], autoHeight: [{\n type: Input\n }], sortable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], singleClickEdit: [{\n type: Input\n }], floatingFilter: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AngularFrameworkOverrides, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\nconst ɵAngularFrameworkComponentWrapper_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(AngularFrameworkComponentWrapper);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AngularFrameworkComponentWrapper, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AgGridAngular, [{\n type: Component,\n args: [{\n selector: 'ag-grid-angular',\n template: '',\n providers: [\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ],\n // tell angular we don't want view encapsulation, we don't want a shadow root\n encapsulation: ViewEncapsulation.None\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: AngularFrameworkOverrides }, { type: AngularFrameworkComponentWrapper }, { type: ɵngcc0.ComponentFactoryResolver }]; }, { slaveGrids: [{\n type: Input\n }], alignedGrids: [{\n type: Input\n }], rowData: [{\n type: Input\n }], columnDefs: [{\n type: Input\n }], excelStyles: [{\n type: Input\n }], pinnedTopRowData: [{\n type: Input\n }], pinnedBottomRowData: [{\n type: Input\n }], components: [{\n type: Input\n }], frameworkComponents: [{\n type: Input\n }], rowStyle: [{\n type: Input\n }], context: [{\n type: Input\n }], autoGroupColumnDef: [{\n type: Input\n }], groupColumnDef: [{\n type: Input\n }], localeText: [{\n type: Input\n }], icons: [{\n type: Input\n }], datasource: [{\n type: Input\n }], serverSideDatasource: [{\n type: Input\n }], viewportDatasource: [{\n type: Input\n }], groupRowRendererParams: [{\n type: Input\n }], aggFuncs: [{\n type: Input\n }], fullWidthCellRendererParams: [{\n type: Input\n }], defaultColGroupDef: [{\n type: Input\n }], defaultColDef: [{\n type: Input\n }], defaultExportParams: [{\n type: Input\n }], columnTypes: [{\n type: Input\n }], rowClassRules: [{\n type: Input\n }], detailGridOptions: [{\n type: Input\n }], detailCellRendererParams: [{\n type: Input\n }], loadingCellRendererParams: [{\n type: Input\n }], loadingOverlayComponentParams: [{\n type: Input\n }], noRowsOverlayComponentParams: [{\n type: Input\n }], popupParent: [{\n type: Input\n }], colResizeDefault: [{\n type: Input\n }], reduxStore: [{\n type: Input\n }], statusBar: [{\n type: Input\n }], sideBar: [{\n type: Input\n }], sortingOrder: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowSelection: [{\n type: Input\n }], overlayLoadingTemplate: [{\n type: Input\n }], overlayNoRowsTemplate: [{\n type: Input\n }], quickFilterText: [{\n type: Input\n }], rowModelType: [{\n type: Input\n }], editType: [{\n type: Input\n }], domLayout: [{\n type: Input\n }], clipboardDeliminator: [{\n type: Input\n }], rowGroupPanelShow: [{\n type: Input\n }], multiSortKey: [{\n type: Input\n }], pivotColumnGroupTotals: [{\n type: Input\n }], pivotRowTotals: [{\n type: Input\n }], pivotPanelShow: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], rowBuffer: [{\n type: Input\n }], colWidth: [{\n type: Input\n }], headerHeight: [{\n type: Input\n }], groupHeaderHeight: [{\n type: Input\n }], floatingFiltersHeight: [{\n type: Input\n }], pivotHeaderHeight: [{\n type: Input\n }], pivotGroupHeaderHeight: [{\n type: Input\n }], groupDefaultExpanded: [{\n type: Input\n }], minColWidth: [{\n type: Input\n }], maxColWidth: [{\n type: Input\n }], viewportRowModelPageSize: [{\n type: Input\n }], viewportRowModelBufferSize: [{\n type: Input\n }], autoSizePadding: [{\n type: Input\n }], maxBlocksInCache: [{\n type: Input\n }], maxConcurrentDatasourceRequests: [{\n type: Input\n }], tooltipShowDelay: [{\n type: Input\n }], cacheOverflowSize: [{\n type: Input\n }], paginationPageSize: [{\n type: Input\n }], cacheBlockSize: [{\n type: Input\n }], infiniteInitialRowCount: [{\n type: Input\n }], scrollbarWidth: [{\n type: Input\n }], paginationStartPage: [{\n type: Input\n }], infiniteBlockSize: [{\n type: Input\n }], batchUpdateWaitMillis: [{\n type: Input\n }], asyncTransactionWaitMillis: [{\n type: Input\n }], blockLoadDebounceMillis: [{\n type: Input\n }], keepDetailRowsCount: [{\n type: Input\n }], undoRedoCellEditingLimit: [{\n type: Input\n }], localeTextFunc: [{\n type: Input\n }], groupRowInnerRenderer: [{\n type: Input\n }], groupRowInnerRendererFramework: [{\n type: Input\n }], dateComponent: [{\n type: Input\n }], dateComponentFramework: [{\n type: Input\n }], groupRowRenderer: [{\n type: Input\n }], groupRowRendererFramework: [{\n type: Input\n }], isExternalFilterPresent: [{\n type: Input\n }], getRowHeight: [{\n type: Input\n }], doesExternalFilterPass: [{\n type: Input\n }], getRowClass: [{\n type: Input\n }], getRowStyle: [{\n type: Input\n }], getRowClassRules: [{\n type: Input\n }], traverseNode: [{\n type: Input\n }], getContextMenuItems: [{\n type: Input\n }], getMainMenuItems: [{\n type: Input\n }], processRowPostCreate: [{\n type: Input\n }], processCellForClipboard: [{\n type: Input\n }], getNodeChildDetails: [{\n type: Input\n }], groupRowAggNodes: [{\n type: Input\n }], getRowNodeId: [{\n type: Input\n }], isFullWidthCell: [{\n type: Input\n }], fullWidthCellRenderer: [{\n type: Input\n }], fullWidthCellRendererFramework: [{\n type: Input\n }], doesDataFlower: [{\n type: Input\n }], processSecondaryColDef: [{\n type: Input\n }], processSecondaryColGroupDef: [{\n type: Input\n }], getBusinessKeyForNode: [{\n type: Input\n }], sendToClipboard: [{\n type: Input\n }], navigateToNextCell: [{\n type: Input\n }], tabToNextCell: [{\n type: Input\n }], getDetailRowData: [{\n type: Input\n }], processCellFromClipboard: [{\n type: Input\n }], getDocument: [{\n type: Input\n }], postProcessPopup: [{\n type: Input\n }], getChildCount: [{\n type: Input\n }], getDataPath: [{\n type: Input\n }], loadingCellRenderer: [{\n type: Input\n }], loadingCellRendererFramework: [{\n type: Input\n }], loadingOverlayComponent: [{\n type: Input\n }], loadingOverlayComponentFramework: [{\n type: Input\n }], noRowsOverlayComponent: [{\n type: Input\n }], noRowsOverlayComponentFramework: [{\n type: Input\n }], detailCellRenderer: [{\n type: Input\n }], detailCellRendererFramework: [{\n type: Input\n }], defaultGroupSortComparator: [{\n type: Input\n }], isRowMaster: [{\n type: Input\n }], isRowSelectable: [{\n type: Input\n }], postSort: [{\n type: Input\n }], processHeaderForClipboard: [{\n type: Input\n }], paginationNumberFormatter: [{\n type: Input\n }], processDataFromClipboard: [{\n type: Input\n }], getServerSideGroupKey: [{\n type: Input\n }], isServerSideGroup: [{\n type: Input\n }], suppressKeyboardEvent: [{\n type: Input\n }], createChartContainer: [{\n type: Input\n }], processChartOptions: [{\n type: Input\n }], getChartToolbarItems: [{\n type: Input\n }], fillOperation: [{\n type: Input\n }], toolPanelSuppressRowGroups: [{\n type: Input\n }], toolPanelSuppressValues: [{\n type: Input\n }], toolPanelSuppressPivots: [{\n type: Input\n }], toolPanelSuppressPivotMode: [{\n type: Input\n }], toolPanelSuppressSideButtons: [{\n type: Input\n }], toolPanelSuppressColumnFilter: [{\n type: Input\n }], toolPanelSuppressColumnSelectAll: [{\n type: Input\n }], toolPanelSuppressColumnExpandAll: [{\n type: Input\n }], suppressMakeColumnVisibleAfterUnGroup: [{\n type: Input\n }], suppressRowClickSelection: [{\n type: Input\n }], suppressCellSelection: [{\n type: Input\n }], suppressHorizontalScroll: [{\n type: Input\n }], alwaysShowVerticalScroll: [{\n type: Input\n }], debug: [{\n type: Input\n }], enableBrowserTooltips: [{\n type: Input\n }], enableColResize: [{\n type: Input\n }], enableCellExpressions: [{\n type: Input\n }], enableSorting: [{\n type: Input\n }], enableServerSideSorting: [{\n type: Input\n }], enableFilter: [{\n type: Input\n }], enableServerSideFilter: [{\n type: Input\n }], angularCompileRows: [{\n type: Input\n }], angularCompileFilters: [{\n type: Input\n }], angularCompileHeaders: [{\n type: Input\n }], groupSuppressAutoColumn: [{\n type: Input\n }], groupSelectsChildren: [{\n type: Input\n }], groupIncludeFooter: [{\n type: Input\n }], groupIncludeTotalFooter: [{\n type: Input\n }], groupUseEntireRow: [{\n type: Input\n }], groupSuppressRow: [{\n type: Input\n }], groupSuppressBlankHeader: [{\n type: Input\n }], forPrint: [{\n type: Input\n }], suppressMenuHide: [{\n type: Input\n }], rowDeselection: [{\n type: Input\n }], unSortIcon: [{\n type: Input\n }], suppressMultiSort: [{\n type: Input\n }], singleClickEdit: [{\n type: Input\n }], suppressLoadingOverlay: [{\n type: Input\n }], suppressNoRowsOverlay: [{\n type: Input\n }], suppressAutoSize: [{\n type: Input\n }], skipHeaderOnAutoSize: [{\n type: Input\n }], suppressParentsInRowNodes: [{\n type: Input\n }], showToolPanel: [{\n type: Input\n }], suppressColumnMoveAnimation: [{\n type: Input\n }], suppressMovableColumns: [{\n type: Input\n }], suppressFieldDotNotation: [{\n type: Input\n }], enableRangeSelection: [{\n type: Input\n }], enableRangeHandle: [{\n type: Input\n }], enableFillHandle: [{\n type: Input\n }], suppressClearOnFillReduction: [{\n type: Input\n }], deltaSort: [{\n type: Input\n }], suppressTouch: [{\n type: Input\n }], suppressAsyncEvents: [{\n type: Input\n }], allowContextMenuWithControlKey: [{\n type: Input\n }], suppressContextMenu: [{\n type: Input\n }], suppressMenuFilterPanel: [{\n type: Input\n }], suppressMenuMainPanel: [{\n type: Input\n }], suppressMenuColumnPanel: [{\n type: Input\n }], rememberGroupStateWhenNewData: [{\n type: Input\n }], enableCellChangeFlash: [{\n type: Input\n }], suppressDragLeaveHidesColumns: [{\n type: Input\n }], suppressMiddleClickScrolls: [{\n type: Input\n }], suppressPreventDefaultOnMouseWheel: [{\n type: Input\n }], suppressUseColIdForGroups: [{\n type: Input\n }], suppressCopyRowsToClipboard: [{\n type: Input\n }], copyHeadersToClipboard: [{\n type: Input\n }], pivotMode: [{\n type: Input\n }], suppressAggFuncInHeader: [{\n type: Input\n }], suppressColumnVirtualisation: [{\n type: Input\n }], suppressAggAtRootLevel: [{\n type: Input\n }], suppressFocusAfterRefresh: [{\n type: Input\n }], functionsPassive: [{\n type: Input\n }], functionsReadOnly: [{\n type: Input\n }], animateRows: [{\n type: Input\n }], groupSelectsFiltered: [{\n type: Input\n }], groupRemoveSingleChildren: [{\n type: Input\n }], groupRemoveLowestSingleChildren: [{\n type: Input\n }], enableRtl: [{\n type: Input\n }], suppressClickEdit: [{\n type: Input\n }], rowDragManaged: [{\n type: Input\n }], suppressRowDrag: [{\n type: Input\n }], suppressMoveWhenRowDragging: [{\n type: Input\n }], enableMultiRowDragging: [{\n type: Input\n }], enableGroupEdit: [{\n type: Input\n }], embedFullWidthRows: [{\n type: Input\n }], deprecatedEmbedFullWidthRows: [{\n type: Input\n }], suppressTabbing: [{\n type: Input\n }], suppressPaginationPanel: [{\n type: Input\n }], floatingFilter: [{\n type: Input\n }], groupHideOpenParents: [{\n type: Input\n }], groupMultiAutoColumn: [{\n type: Input\n }], pagination: [{\n type: Input\n }], stopEditingWhenGridLosesFocus: [{\n type: Input\n }], paginationAutoPageSize: [{\n type: Input\n }], suppressScrollOnNewData: [{\n type: Input\n }], purgeClosedRowNodes: [{\n type: Input\n }], cacheQuickFilter: [{\n type: Input\n }], deltaRowDataMode: [{\n type: Input\n }], ensureDomOrder: [{\n type: Input\n }], accentedSort: [{\n type: Input\n }], pivotTotals: [{\n type: Input\n }], suppressChangeDetection: [{\n type: Input\n }], valueCache: [{\n type: Input\n }], valueCacheNeverExpires: [{\n type: Input\n }], aggregateOnlyChangedColumns: [{\n type: Input\n }], suppressAnimationFrame: [{\n type: Input\n }], suppressExcelExport: [{\n type: Input\n }], suppressCsvExport: [{\n type: Input\n }], treeData: [{\n type: Input\n }], masterDetail: [{\n type: Input\n }], suppressMultiRangeSelection: [{\n type: Input\n }], enterMovesDownAfterEdit: [{\n type: Input\n }], enterMovesDown: [{\n type: Input\n }], suppressPropertyNamesCheck: [{\n type: Input\n }], rowMultiSelectWithClick: [{\n type: Input\n }], contractColumnSelection: [{\n type: Input\n }], suppressEnterpriseResetOnNewColumns: [{\n type: Input\n }], enableOldSetFilterModel: [{\n type: Input\n }], suppressRowHoverHighlight: [{\n type: Input\n }], gridAutoHeight: [{\n type: Input\n }], suppressRowTransform: [{\n type: Input\n }], suppressClipboardPaste: [{\n type: Input\n }], suppressLastEmptyLineOnPaste: [{\n type: Input\n }], serverSideSortingAlwaysResets: [{\n type: Input\n }], reactNext: [{\n type: Input\n }], suppressSetColumnStateEvents: [{\n type: Input\n }], enableCharts: [{\n type: Input\n }], deltaColumnMode: [{\n type: Input\n }], suppressMaintainUnsortedOrder: [{\n type: Input\n }], enableCellTextSelection: [{\n type: Input\n }], suppressBrowserResizeObserver: [{\n type: Input\n }], suppressMaxRenderedRowRestriction: [{\n type: Input\n }], excludeChildrenWhenTreeDataFiltering: [{\n type: Input\n }], tooltipMouseTrack: [{\n type: Input\n }], keepDetailRows: [{\n type: Input\n }], paginateChildRows: [{\n type: Input\n }], preventDefaultOnContextMenu: [{\n type: Input\n }], undoRedoCellEditing: [{\n type: Input\n }], allowDragFromColumnsToolPanel: [{\n type: Input\n }], immutableData: [{\n type: Input\n }], immutableColumns: [{\n type: Input\n }], pivotSuppressAutoColumn: [{\n type: Input\n }], columnEverythingChanged: [{\n type: Output\n }], newColumnsLoaded: [{\n type: Output\n }], columnPivotModeChanged: [{\n type: Output\n }], columnRowGroupChanged: [{\n type: Output\n }], expandOrCollapseAll: [{\n type: Output\n }], columnPivotChanged: [{\n type: Output\n }], gridColumnsChanged: [{\n type: Output\n }], columnValueChanged: [{\n type: Output\n }], columnMoved: [{\n type: Output\n }], columnVisible: [{\n type: Output\n }], columnPinned: [{\n type: Output\n }], columnGroupOpened: [{\n type: Output\n }], columnResized: [{\n type: Output\n }], displayedColumnsChanged: [{\n type: Output\n }], virtualColumnsChanged: [{\n type: Output\n }], rowGroupOpened: [{\n type: Output\n }], rowDataChanged: [{\n type: Output\n }], rowDataUpdated: [{\n type: Output\n }], pinnedRowDataChanged: [{\n type: Output\n }], rangeSelectionChanged: [{\n type: Output\n }], chartCreated: [{\n type: Output\n }], chartRangeSelectionChanged: [{\n type: Output\n }], chartOptionsChanged: [{\n type: Output\n }], chartDestroyed: [{\n type: Output\n }], toolPanelVisibleChanged: [{\n type: Output\n }], modelUpdated: [{\n type: Output\n }], pasteStart: [{\n type: Output\n }], pasteEnd: [{\n type: Output\n }], fillStart: [{\n type: Output\n }], fillEnd: [{\n type: Output\n }], cellClicked: [{\n type: Output\n }], cellDoubleClicked: [{\n type: Output\n }], cellMouseDown: [{\n type: Output\n }], cellContextMenu: [{\n type: Output\n }], cellValueChanged: [{\n type: Output\n }], rowValueChanged: [{\n type: Output\n }], cellFocused: [{\n type: Output\n }], rowSelected: [{\n type: Output\n }], selectionChanged: [{\n type: Output\n }], cellKeyDown: [{\n type: Output\n }], cellKeyPress: [{\n type: Output\n }], cellMouseOver: [{\n type: Output\n }], cellMouseOut: [{\n type: Output\n }], filterChanged: [{\n type: Output\n }], filterModified: [{\n type: Output\n }], filterOpened: [{\n type: Output\n }], sortChanged: [{\n type: Output\n }], virtualRowRemoved: [{\n type: Output\n }], rowClicked: [{\n type: Output\n }], rowDoubleClicked: [{\n type: Output\n }], gridReady: [{\n type: Output\n }], gridSizeChanged: [{\n type: Output\n }], viewportChanged: [{\n type: Output\n }], firstDataRendered: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragStopped: [{\n type: Output\n }], checkboxChanged: [{\n type: Output\n }], rowEditingStarted: [{\n type: Output\n }], rowEditingStopped: [{\n type: Output\n }], cellEditingStarted: [{\n type: Output\n }], cellEditingStopped: [{\n type: Output\n }], bodyScroll: [{\n type: Output\n }], animationQueueEmpty: [{\n type: Output\n }], heightScaleChanged: [{\n type: Output\n }], paginationChanged: [{\n type: Output\n }], componentStateChanged: [{\n type: Output\n }], bodyHeightChanged: [{\n type: Output\n }], displayedColumnsWidthChanged: [{\n type: Output\n }], scrollVisibilityChanged: [{\n type: Output\n }], columnHoverChanged: [{\n type: Output\n }], flashCells: [{\n type: Output\n }], rowDragEnter: [{\n type: Output\n }], rowDragMove: [{\n type: Output\n }], rowDragLeave: [{\n type: Output\n }], rowDragEnd: [{\n type: Output\n }], popupToFront: [{\n type: Output\n }], columnRowGroupChangeRequest: [{\n type: Output\n }], columnPivotChangeRequest: [{\n type: Output\n }], columnValueChangeRequest: [{\n type: Output\n }], columnAggFuncChangeRequest: [{\n type: Output\n }], keyboardFocus: [{\n type: Output\n }], mouseFocus: [{\n type: Output\n }], gridOptions: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [AgGridColumn]\n }], modules: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AgGridModule, { declarations: [AgGridAngular, AgGridColumn], exports: [AgGridAngular, AgGridColumn] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AgGridModule, [{\n type: NgModule,\n args: [{\n declarations: [AgGridAngular, AgGridColumn],\n imports: [],\n exports: [AgGridAngular, AgGridColumn]\n }]\n }], null, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AgGridAngular, AgGridColumn, AgGridModule, AngularFrameworkOverrides as ɵa, AngularFrameworkComponentWrapper as ɵb };\n\n//# sourceMappingURL=ag-grid-angular.js.map","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin(...sources) {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map((args) => resultSelector(...args)));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n//# sourceMappingURL=forkJoin.js.map","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","import { Overlay, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { InjectionToken, Directive, EventEmitter, ChangeDetectorRef, NgZone, ElementRef, Optional, Inject, Self, Attribute, ViewChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { mixinDisableRipple, mixinTabIndex, mixinDisabled, mixinErrorState, ErrorStateMatcher, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { MatFormField, MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { ViewportRuler, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, SPACE, hasModifierKey, A } from '@angular/cdk/keycodes';\nimport { NgForm, FormGroupDirective, NgControl } from '@angular/forms';\nimport { Subject, defer, merge } from 'rxjs';\nimport { startWith, switchMap, take, filter, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { trigger, transition, query, animateChild, state, style, animate } from '@angular/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/scrolling';\nimport * as ɵngcc2 from '@angular/material/core';\nimport * as ɵngcc3 from '@angular/cdk/bidi';\nimport * as ɵngcc4 from '@angular/forms';\nimport * as ɵngcc5 from '@angular/cdk/a11y';\nimport * as ɵngcc6 from '@angular/material/form-field';\nimport * as ɵngcc7 from '@angular/cdk/overlay';\nimport * as ɵngcc8 from '@angular/common';\n\nconst _c0 = [\"trigger\"];\nconst _c1 = [\"panel\"];\nfunction MatSelect_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.placeholder);\n} }\nfunction MatSelect_span_5_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r5.triggerValue);\n} }\nfunction MatSelect_span_5_ng_content_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojection(0, 0, [\"*ngSwitchCase\", \"true\"]);\n} }\nfunction MatSelect_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtemplate(1, MatSelect_span_5_span_1_Template, 2, 1, \"span\", 10);\n ɵngcc0.ɵɵtemplate(2, MatSelect_span_5_ng_content_2_Template, 1, 0, \"ng-content\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngSwitch\", !!ctx_r3.customTrigger);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n} }\nfunction MatSelect_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 13);\n ɵngcc0.ɵɵelementStart(1, \"div\", 14, 15);\n ɵngcc0.ɵɵlistener(\"@transformPanel.done\", function MatSelect_ng_template_8_Template_div_animation_transformPanel_done_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8._panelDoneAnimatingStream.next($event.toState); })(\"keydown\", function MatSelect_ng_template_8_Template_div_keydown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10._handleKeydown($event); });\n ɵngcc0.ɵɵprojection(3, 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@transformPanelWrap\", undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"mat-select-panel \", ctx_r4._getPanelTheme(), \"\");\n ɵngcc0.ɵɵstyleProp(\"transform-origin\", ctx_r4._transformOrigin)(\"font-size\", ctx_r4._triggerFontSize, \"px\");\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r4.panelClass)(\"@transformPanel\", ctx_r4.multiple ? \"showing-multiple\" : \"showing\");\n ɵngcc0.ɵɵattribute(\"id\", ctx_r4.id + \"-panel\")(\"aria-multiselectable\", ctx_r4.multiple)(\"aria-label\", ctx_r4.ariaLabel || null)(\"aria-labelledby\", ctx_r4._getPanelAriaLabelledby());\n} }\nconst _c2 = [[[\"mat-select-trigger\"]], \"*\"];\nconst _c3 = [\"mat-select-trigger\", \"*\"];\nconst matSelectAnimations = {\n /**\n * This animation ensures the select's overlay panel animation (transformPanel) is called when\n * closing the select.\n * This is needed due to https://github.com/angular/angular/issues/23302\n */\n transformPanelWrap: trigger('transformPanelWrap', [\n transition('* => void', query('@transformPanel', [animateChild()], { optional: true }))\n ]),\n /**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n transform: 'scaleY(0.8)',\n minWidth: '100%',\n opacity: 0\n })),\n state('showing', style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)'\n })),\n state('showing-multiple', style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\n transform: 'scaleY(1)'\n })),\n transition('void => *', animate('120ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))\n ])\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nfunction getMatSelectDynamicMultipleError() {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nfunction getMatSelectNonArrayValueError() {\n return Error('Value must be an array in multiple-selection mode.');\n}\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nfunction getMatSelectNonFunctionValueError() {\n return Error('`compareWith` must be a function.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId = 0;\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n/**\n * The max height of the select's overlay panel.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_MAX_HEIGHT = 256;\n/**\n * The panel's padding on the x-axis.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_PADDING_X = 16;\n/**\n * The panel's x axis padding if it is indented (e.g. there is an option group).\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/**\n * The height of the select items in `em` units.\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_ITEM_HEIGHT_EM = 3;\n// TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 16 = 40\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n *\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 16;\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n *\n * @deprecated To be turned into a private variable.\n * @breaking-change 12.0.0\n */\nconst SELECT_PANEL_VIEWPORT_PADDING = 8;\n/** Injection token that determines the scroll handling while a select is open. */\nconst MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');\n/** @docs-private */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** Injection token that can be used to provide the default options the select module. */\nconst MAT_SELECT_CONFIG = new InjectionToken('MAT_SELECT_CONFIG');\n/** @docs-private */\nconst MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/** Change event object that is emitted when the select value has changed. */\nclass MatSelectChange {\n constructor(\n /** Reference to the select that emitted the change event. */\n source, \n /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n// Boilerplate for applying mixins to MatSelect.\n/** @docs-private */\nclass MatSelectBase {\n constructor(_elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) {\n this._elementRef = _elementRef;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n }\n}\nconst _MatSelectMixinBase = mixinDisableRipple(mixinTabIndex(mixinDisabled(mixinErrorState(MatSelectBase))));\n/**\n * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as\n * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SELECT_TRIGGER = new InjectionToken('MatSelectTrigger');\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nclass MatSelectTrigger {\n}\nMatSelectTrigger.ɵfac = function MatSelectTrigger_Factory(t) { return new (t || MatSelectTrigger)(); };\nMatSelectTrigger.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: MatSelectTrigger, selectors: [[\"mat-select-trigger\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }])] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectTrigger, [{\n type: Directive,\n args: [{\n selector: 'mat-select-trigger',\n providers: [{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }]\n }]\n }], null, null); })();\n/** Base class with all of the `MatSelect` functionality. */\nclass _MatSelectBase extends _MatSelectMixinBase {\n constructor(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, _defaultOptions) {\n var _a, _b, _c;\n super(elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._viewportRuler = _viewportRuler;\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._dir = _dir;\n this._parentFormField = _parentFormField;\n this.ngControl = ngControl;\n this._liveAnnouncer = _liveAnnouncer;\n this._defaultOptions = _defaultOptions;\n /** Whether or not the overlay panel is open. */\n this._panelOpen = false;\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n this._compareWith = (o1, o2) => o1 === o2;\n /** Unique id for this input. */\n this._uid = `mat-select-${nextUniqueId++}`;\n /** Current `ariar-labelledby` value for the select trigger. */\n this._triggerAriaLabelledBy = null;\n /** Emits whenever the component is destroyed. */\n this._destroy = new Subject();\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when select has been touched` */\n this._onTouched = () => { };\n /** ID for the DOM node containing the select's value. */\n this._valueId = `mat-select-value-${nextUniqueId++}`;\n /** Emits when the panel element is finished transforming in. */\n this._panelDoneAnimatingStream = new Subject();\n this._overlayPanelClass = ((_a = this._defaultOptions) === null || _a === void 0 ? void 0 : _a.overlayPanelClass) || '';\n this._focused = false;\n /** A name for this control that can be used by `mat-form-field`. */\n this.controlType = 'mat-select';\n this._required = false;\n this._multiple = false;\n this._disableOptionCentering = (_c = (_b = this._defaultOptions) === null || _b === void 0 ? void 0 : _b.disableOptionCentering) !== null && _c !== void 0 ? _c : false;\n /** Aria label of the select. */\n this.ariaLabel = '';\n /** Combined stream of all of the child options' change events. */\n this.optionSelectionChanges = defer(() => {\n const options = this.options;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n return this._ngZone.onStable\n .pipe(take(1), switchMap(() => this.optionSelectionChanges));\n });\n /** Event emitted when the select panel has been toggled. */\n this.openedChange = new EventEmitter();\n /** Event emitted when the select has been opened. */\n this._openedStream = this.openedChange.pipe(filter(o => o), map(() => { }));\n /** Event emitted when the select has been closed. */\n this._closedStream = this.openedChange.pipe(filter(o => !o), map(() => { }));\n /** Event emitted when the selected value has been changed by the user. */\n this.selectionChange = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n // Note that we only want to set this when the defaults pass it in, otherwise it should\n // stay as `undefined` so that it falls back to the default in the key manager.\n if ((_defaultOptions === null || _defaultOptions === void 0 ? void 0 : _defaultOptions.typeaheadDebounceInterval) != null) {\n this._typeaheadDebounceInterval = _defaultOptions.typeaheadDebounceInterval;\n }\n this._scrollStrategyFactory = scrollStrategyFactory;\n this._scrollStrategy = this._scrollStrategyFactory();\n this.tabIndex = parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n /** Whether the select is focused. */\n get focused() {\n return this._focused || this._panelOpen;\n }\n /** Placeholder to be shown if no value has been selected. */\n get placeholder() { return this._placeholder; }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n /** Whether the component is required. */\n get required() { return this._required; }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n /** Whether the user should be allowed to select multiple options. */\n get multiple() { return this._multiple; }\n set multiple(value) {\n if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = coerceBooleanProperty(value);\n }\n /** Whether to center the active option over the trigger. */\n get disableOptionCentering() { return this._disableOptionCentering; }\n set disableOptionCentering(value) {\n this._disableOptionCentering = coerceBooleanProperty(value);\n }\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n get compareWith() { return this._compareWith; }\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n /** Value of the select control. */\n get value() { return this._value; }\n set value(newValue) {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || (this._multiple && Array.isArray(newValue))) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n this._value = newValue;\n }\n }\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n get typeaheadDebounceInterval() { return this._typeaheadDebounceInterval; }\n set typeaheadDebounceInterval(value) {\n this._typeaheadDebounceInterval = coerceNumberProperty(value);\n }\n /** Unique id of the element. */\n get id() { return this._id; }\n set id(value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple);\n this.stateChanges.next();\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this._panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntil(this._destroy))\n .subscribe(() => this._panelDoneAnimating(this.panelOpen));\n }\n ngAfterContentInit() {\n this._initKeyManager();\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n ngDoCheck() {\n const newAriaLabelledby = this._getTriggerAriaLabelledby();\n // We have to manage setting the `aria-labelledby` ourselves, because part of its value\n // is computed as a result of a content query which can cause this binding to trigger a\n // \"changed after checked\" error.\n if (newAriaLabelledby !== this._triggerAriaLabelledBy) {\n const element = this._elementRef.nativeElement;\n this._triggerAriaLabelledBy = newAriaLabelledby;\n if (newAriaLabelledby) {\n element.setAttribute('aria-labelledby', newAriaLabelledby);\n }\n else {\n element.removeAttribute('aria-labelledby');\n }\n }\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n ngOnChanges(changes) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this._typeaheadDebounceInterval);\n }\n }\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n }\n /** Toggles the overlay panel open or closed. */\n toggle() {\n this.panelOpen ? this.close() : this.open();\n }\n /** Opens the overlay panel. */\n open() {\n if (this._canOpen()) {\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Closes the overlay panel and focuses the host element. */\n close() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n /** Whether or not the overlay panel is open. */\n get panelOpen() {\n return this._panelOpen;\n }\n /** The currently selected option. */\n get selected() {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n }\n /** The value displayed in the trigger. */\n get triggerValue() {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map(option => option.viewValue);\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n return this._selectionModel.selected[0].viewValue;\n }\n /** Whether the element is in RTL mode. */\n _isRtl() {\n return this._dir ? this._dir.value === 'rtl' : false;\n }\n /** Handles all keydown events on the select. */\n _handleKeydown(event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n /** Handles keyboard events while the select is closed. */\n _handleClosedKeydown(event) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native \n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n }\n else if (!isTyping && (keyCode === ENTER || keyCode === SPACE) && manager.activeItem &&\n !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n }\n else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n }\n else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n _onFocus() {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n _onBlur() {\n this._focused = false;\n if (!this.disabled && !this.panelOpen) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n /**\n * Callback that is invoked when the overlay panel has been attached.\n */\n _onAttached() {\n this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n /** Returns the theme to be used on the panel. */\n _getPanelTheme() {\n return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\n }\n /** Whether the select has a value. */\n get empty() {\n return !this._selectionModel || this._selectionModel.isEmpty();\n }\n _initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n this.stateChanges.next();\n });\n }\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n _setSelectionByValue(value) {\n this._selectionModel.selected.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonArrayValueError();\n }\n value.forEach((currentValue) => this._selectValue(currentValue));\n this._sortValues();\n }\n else {\n const correspondingOption = this._selectValue(value);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n }\n else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n _selectValue(value) {\n const correspondingOption = this.options.find((option) => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n try {\n // Treat null as a special reset value.\n return option.value != null && this._compareWith(option.value, value);\n }\n catch (error) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n return correspondingOption;\n }\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager(this.options)\n .withTypeAhead(this._typeaheadDebounceInterval)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n .withHomeAndEnd()\n .withAllowedModifierKeys(['shiftKey']);\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n }\n });\n this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n /** Drops current option subscriptions and IDs and resets from scratch. */\n _resetOptions() {\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n if (event.isUserInput && !this.multiple && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n merge(...this.options.map(option => option._stateChanges))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n /** Invoked when an option is clicked. */\n _onSelect(option, isUserInput) {\n const wasSelected = this._selectionModel.isSelected(option);\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n }\n else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) :\n this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n }\n /** Sorts the selected values in the selected based on their order in the panel. */\n _sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n this._selectionModel.sort((a, b) => {\n return this.sortComparator ? this.sortComparator(a, b, options) :\n options.indexOf(a) - options.indexOf(b);\n });\n this.stateChanges.next();\n }\n }\n /** Emits change event to set the model value. */\n _propagateChanges(fallbackValue) {\n let valueToEmit = null;\n if (this.multiple) {\n valueToEmit = this.selected.map(option => option.value);\n }\n else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(this._getChangeEvent(valueToEmit));\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n _highlightCorrectOption() {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n /** Whether the panel is allowed to open. */\n _canOpen() {\n var _a;\n return !this._panelOpen && !this.disabled && ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n /** Focuses the select element. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Gets the aria-labelledby for the select panel. */\n _getPanelAriaLabelledby() {\n var _a;\n if (this.ariaLabel) {\n return null;\n }\n const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.getLabelId();\n const labelExpression = (labelId ? labelId + ' ' : '');\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant() {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n return null;\n }\n /** Gets the aria-labelledby of the select component trigger. */\n _getTriggerAriaLabelledby() {\n var _a;\n if (this.ariaLabel) {\n return null;\n }\n const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.getLabelId();\n let value = (labelId ? labelId + ' ' : '') + this._valueId;\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n return value;\n }\n /** Called when the overlay panel is done animating. */\n _panelDoneAnimating(isOpen) {\n this.openedChange.emit(isOpen);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n this._ariaDescribedby = ids.join(' ');\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n this.open();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n return this._panelOpen || !this.empty || (this._focused && !!this._placeholder);\n }\n}\n_MatSelectBase.ɵfac = function _MatSelectBase_Factory(t) { return new (t || _MatSelectBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.ErrorStateMatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.NgForm, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.FormGroupDirective, 8), ɵngcc0.ɵɵdirectiveInject(MAT_FORM_FIELD, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.NgControl, 10), ɵngcc0.ɵɵinjectAttribute('tabindex'), ɵngcc0.ɵɵdirectiveInject(MAT_SELECT_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.LiveAnnouncer), ɵngcc0.ɵɵdirectiveInject(MAT_SELECT_CONFIG, 8)); };\n_MatSelectBase.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: _MatSelectBase, viewQuery: function _MatSelectBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 1);\n ɵngcc0.ɵɵviewQuery(_c1, 1);\n ɵngcc0.ɵɵviewQuery(CdkConnectedOverlay, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.trigger = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.overlayDir = _t.first);\n } }, inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], id: \"id\", placeholder: \"placeholder\", required: \"required\", multiple: \"multiple\", disableOptionCentering: \"disableOptionCentering\", compareWith: \"compareWith\", value: \"value\", typeaheadDebounceInterval: \"typeaheadDebounceInterval\", panelClass: \"panelClass\", ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], errorStateMatcher: \"errorStateMatcher\", sortComparator: \"sortComparator\" }, outputs: { openedChange: \"openedChange\", _openedStream: \"opened\", _closedStream: \"closed\", selectionChange: \"selectionChange\", valueChange: \"valueChange\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n_MatSelectBase.ctorParameters = () => [\n { type: ViewportRuler },\n { type: ChangeDetectorRef },\n { type: NgZone },\n { type: ErrorStateMatcher },\n { type: ElementRef },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: NgForm, decorators: [{ type: Optional }] },\n { type: FormGroupDirective, decorators: [{ type: Optional }] },\n { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }] },\n { type: NgControl, decorators: [{ type: Self }, { type: Optional }] },\n { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] }] },\n { type: LiveAnnouncer },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_SELECT_CONFIG,] }] }\n];\n_MatSelectBase.propDecorators = {\n trigger: [{ type: ViewChild, args: ['trigger',] }],\n panel: [{ type: ViewChild, args: ['panel',] }],\n overlayDir: [{ type: ViewChild, args: [CdkConnectedOverlay,] }],\n panelClass: [{ type: Input }],\n placeholder: [{ type: Input }],\n required: [{ type: Input }],\n multiple: [{ type: Input }],\n disableOptionCentering: [{ type: Input }],\n compareWith: [{ type: Input }],\n value: [{ type: Input }],\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],\n errorStateMatcher: [{ type: Input }],\n typeaheadDebounceInterval: [{ type: Input }],\n sortComparator: [{ type: Input }],\n id: [{ type: Input }],\n openedChange: [{ type: Output }],\n _openedStream: [{ type: Output, args: ['opened',] }],\n _closedStream: [{ type: Output, args: ['closed',] }],\n selectionChange: [{ type: Output }],\n valueChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatSelectBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc1.ViewportRuler }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc2.ErrorStateMatcher }, { type: ɵngcc0.ElementRef }, { type: ɵngcc3.Directionality, decorators: [{\n type: Optional\n }] }, { type: ɵngcc4.NgForm, decorators: [{\n type: Optional\n }] }, { type: ɵngcc4.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: ɵngcc6.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }, { type: ɵngcc4.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: String, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_SELECT_SCROLL_STRATEGY]\n }] }, { type: ɵngcc5.LiveAnnouncer }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SELECT_CONFIG]\n }] }]; }, { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], openedChange: [{\n type: Output\n }], _openedStream: [{\n type: Output,\n args: ['opened']\n }], _closedStream: [{\n type: Output,\n args: ['closed']\n }], selectionChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], id: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], required: [{\n type: Input\n }], multiple: [{\n type: Input\n }], disableOptionCentering: [{\n type: Input\n }], compareWith: [{\n type: Input\n }], value: [{\n type: Input\n }], typeaheadDebounceInterval: [{\n type: Input\n }], trigger: [{\n type: ViewChild,\n args: ['trigger']\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], overlayDir: [{\n type: ViewChild,\n args: [CdkConnectedOverlay]\n }], panelClass: [{\n type: Input\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], errorStateMatcher: [{\n type: Input\n }], sortComparator: [{\n type: Input\n }] }); })();\nclass MatSelect extends _MatSelectBase {\n constructor() {\n super(...arguments);\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n this._scrollTop = 0;\n /** The cached font-size of the trigger element. */\n this._triggerFontSize = 0;\n /** The value of the select panel's transform-origin property. */\n this._transformOrigin = 'top';\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n this._offsetY = 0;\n this._positions = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ];\n }\n /**\n * Calculates the scroll position of the select's overlay panel.\n *\n * Attempts to center the selected option in the panel. If the option is\n * too high or too low in the panel to be scrolled to the center, it clamps the\n * scroll position to the min or max scroll positions respectively.\n */\n _calculateOverlayScroll(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionOffsetFromScrollTop = itemHeight * selectedIndex;\n const halfOptionHeight = itemHeight / 2;\n // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n // scroll container, then subtracts the scroll buffer to scroll the option down to\n // the center of the overlay panel. Half the option height must be re-added to the\n // scrollTop so the option is centered based on its middle, not its top edge.\n const optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n }\n ngOnInit() {\n super.ngOnInit();\n this._viewportRuler.change().pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n open() {\n if (super._canOpen()) {\n super.open();\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this._triggerFontSize =\n parseInt(getComputedStyle(this.trigger.nativeElement).fontSize || '0');\n this._calculateOverlayPosition();\n // Set the font size on the panel element once it exists.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this._triggerFontSize && this.overlayDir.overlayRef &&\n this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this._triggerFontSize}px`;\n }\n });\n }\n }\n /** Scrolls the active option into view. */\n _scrollOptionIntoView(index) {\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const itemHeight = this._getItemHeight();\n this.panel.nativeElement.scrollTop = _getOptionScrollPosition((index + labelCount) * itemHeight, itemHeight, this.panel.nativeElement.scrollTop, SELECT_PANEL_MAX_HEIGHT);\n }\n _positioningSettled() {\n this._calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this._scrollTop;\n }\n _panelDoneAnimating(isOpen) {\n if (this.panelOpen) {\n this._scrollTop = 0;\n }\n else {\n this.overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\n }\n super._panelDoneAnimating(isOpen);\n }\n _getChangeEvent(value) {\n return new MatSelectChange(this, value);\n }\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n _calculateOverlayOffsetX() {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this._viewportRuler.getViewportSize();\n const isRtl = this._isRtl();\n const paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n SELECT_PANEL_PADDING_X * 2;\n let offsetX;\n // Adjust the offset, depending on the option padding.\n if (this.multiple) {\n offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n }\n else if (this.disableOptionCentering) {\n offsetX = SELECT_PANEL_PADDING_X;\n }\n else {\n let selected = this._selectionModel.selected[0] || this.options.first;\n offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n }\n // Invert the offset in LTR.\n if (!isRtl) {\n offsetX *= -1;\n }\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width\n + (isRtl ? 0 : paddingWidth);\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n /**\n * Calculates the y-offset of the select's overlay panel in relation to the\n * top start corner of the trigger. It has to be adjusted in order for the\n * selected option to be aligned over the trigger when the panel opens.\n */\n _calculateOverlayOffsetY(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n let optionOffsetFromPanelTop;\n // Disable offset if requested by user by returning 0 as value to offset\n if (this.disableOptionCentering) {\n return 0;\n }\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n }\n else if (this._scrollTop === maxScroll) {\n const firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n const selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n // The first item is partially out of the viewport. Therefore we need to calculate what\n // portion of it is shown in the viewport and account for it in our offset.\n let partialItemHeight = itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;\n // Because the panel height is longer than the height of the options alone,\n // there is always extra padding at the top or bottom of the panel. When\n // scrolled to the very bottom, this padding is at the top of the panel and\n // must be added to the offset.\n optionOffsetFromPanelTop = selectedDisplayIndex * itemHeight + partialItemHeight;\n }\n else {\n // If the option was scrolled to the middle of the panel using a scroll buffer,\n // its offset will be the scroll buffer minus the half height that was added to\n // center it.\n optionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n }\n // The final offset is the option's offset from the top, adjusted for the height difference,\n // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n // The value is rounded to prevent some browsers from blurring the content.\n return Math.round(optionOffsetFromPanelTop * -1 - optionHeightAdjustment);\n }\n /**\n * Checks that the attempted overlay position will fit within the viewport.\n * If it will not fit, tries to adjust the scroll position and the associated\n * y-offset so the panel can open fully on-screen. If it still won't fit,\n * sets the offset back to 0 to allow the fallback position to take over.\n */\n _checkOverlayWithinViewport(maxScroll) {\n const itemHeight = this._getItemHeight();\n const viewportSize = this._viewportRuler.getViewportSize();\n const topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n const bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n const panelHeightTop = Math.abs(this._offsetY);\n const totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n if (panelHeightBottom > bottomSpaceAvailable) {\n this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n }\n else if (panelHeightTop > topSpaceAvailable) {\n this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n }\n else {\n this._transformOrigin = this._getOriginBasedOnOption();\n }\n }\n /** Adjusts the overlay panel up to fit in the viewport. */\n _adjustPanelUp(panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\n // Scrolls the panel up by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel up into the viewport.\n this._scrollTop -= distanceBelowViewport;\n this._offsetY -= distanceBelowViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very top, it won't be able to fit the panel\n // by scrolling, so set the offset to 0 to allow the fallback position to take\n // effect.\n if (this._scrollTop <= 0) {\n this._scrollTop = 0;\n this._offsetY = 0;\n this._transformOrigin = `50% bottom 0px`;\n }\n }\n /** Adjusts the overlay panel down to fit in the viewport. */\n _adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\n // Scrolls the panel down by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel down into the viewport.\n this._scrollTop += distanceAboveViewport;\n this._offsetY += distanceAboveViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very bottom, it won't be able to fit the\n // panel by scrolling, so set the offset to 0 to allow the fallback position\n // to take effect.\n if (this._scrollTop >= maxScroll) {\n this._scrollTop = maxScroll;\n this._offsetY = 0;\n this._transformOrigin = `50% top 0px`;\n return;\n }\n }\n /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n _calculateOverlayPosition() {\n const itemHeight = this._getItemHeight();\n const items = this._getItemCount();\n const panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n const maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n let selectedOptionOffset;\n if (this.empty) {\n selectedOptionOffset = 0;\n }\n else {\n selectedOptionOffset =\n Math.max(this.options.toArray().indexOf(this._selectionModel.selected[0]), 0);\n }\n selectedOptionOffset += _countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);\n // We must maintain a scroll buffer so the selected option will be scrolled to the\n // center of the overlay panel rather than the top.\n const scrollBuffer = panelHeight / 2;\n this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n this._checkOverlayWithinViewport(maxScroll);\n }\n /** Sets the transform origin point based on the selected option. */\n _getOriginBasedOnOption() {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return `50% ${originY}px 0px`;\n }\n /** Calculates the height of the select's options. */\n _getItemHeight() {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n }\n /** Calculates the amount of items in the select. This includes options and group labels. */\n _getItemCount() {\n return this.options.length + this.optionGroups.length;\n }\n}\nMatSelect.ɵfac = function MatSelect_Factory(t) { return ɵMatSelect_BaseFactory(t || MatSelect); };\nMatSelect.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatSelect, selectors: [[\"mat-select\"]], contentQueries: function MatSelect_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_SELECT_TRIGGER, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatOption, 1);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 1);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.customTrigger = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.options = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n } }, hostAttrs: [\"role\", \"combobox\", \"aria-autocomplete\", \"none\", \"aria-haspopup\", \"true\", 1, \"mat-select\"], hostVars: 20, hostBindings: function MatSelect_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function MatSelect_keydown_HostBindingHandler($event) { return ctx._handleKeydown($event); })(\"focus\", function MatSelect_focus_HostBindingHandler() { return ctx._onFocus(); })(\"blur\", function MatSelect_blur_HostBindingHandler() { return ctx._onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.id)(\"tabindex\", ctx.tabIndex)(\"aria-controls\", ctx.panelOpen ? ctx.id + \"-panel\" : null)(\"aria-expanded\", ctx.panelOpen)(\"aria-label\", ctx.ariaLabel || null)(\"aria-required\", ctx.required.toString())(\"aria-disabled\", ctx.disabled.toString())(\"aria-invalid\", ctx.errorState)(\"aria-describedby\", ctx._ariaDescribedby || null)(\"aria-activedescendant\", ctx._getAriaActiveDescendant());\n ɵngcc0.ɵɵclassProp(\"mat-select-disabled\", ctx.disabled)(\"mat-select-invalid\", ctx.errorState)(\"mat-select-required\", ctx.required)(\"mat-select-empty\", ctx.empty)(\"mat-select-multiple\", ctx.multiple);\n } }, inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, exportAs: [\"matSelect\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: MatFormFieldControl, useExisting: MatSelect },\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c3, decls: 9, vars: 12, consts: [[\"cdk-overlay-origin\", \"\", 1, \"mat-select-trigger\", 3, \"click\"], [\"origin\", \"cdkOverlayOrigin\", \"trigger\", \"\"], [1, \"mat-select-value\", 3, \"ngSwitch\"], [\"class\", \"mat-select-placeholder mat-select-min-line\", 4, \"ngSwitchCase\"], [\"class\", \"mat-select-value-text\", 3, \"ngSwitch\", 4, \"ngSwitchCase\"], [1, \"mat-select-arrow-wrapper\"], [1, \"mat-select-arrow\"], [\"cdk-connected-overlay\", \"\", \"cdkConnectedOverlayLockPosition\", \"\", \"cdkConnectedOverlayHasBackdrop\", \"\", \"cdkConnectedOverlayBackdropClass\", \"cdk-overlay-transparent-backdrop\", 3, \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayOffsetY\", \"backdropClick\", \"attach\", \"detach\"], [1, \"mat-select-placeholder\", \"mat-select-min-line\"], [1, \"mat-select-value-text\", 3, \"ngSwitch\"], [\"class\", \"mat-select-min-line\", 4, \"ngSwitchDefault\"], [4, \"ngSwitchCase\"], [1, \"mat-select-min-line\"], [1, \"mat-select-panel-wrap\"], [\"role\", \"listbox\", \"tabindex\", \"-1\", 3, \"ngClass\", \"keydown\"], [\"panel\", \"\"]], template: function MatSelect_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c2);\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵlistener(\"click\", function MatSelect_Template_div_click_0_listener() { return ctx.toggle(); });\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, MatSelect_span_4_Template, 2, 1, \"span\", 3);\n ɵngcc0.ɵɵtemplate(5, MatSelect_span_5_Template, 3, 2, \"span\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵelement(7, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(8, MatSelect_ng_template_8_Template, 4, 14, \"ng-template\", 7);\n ɵngcc0.ɵɵlistener(\"backdropClick\", function MatSelect_Template_ng_template_backdropClick_8_listener() { return ctx.close(); })(\"attach\", function MatSelect_Template_ng_template_attach_8_listener() { return ctx._onAttached(); })(\"detach\", function MatSelect_Template_ng_template_detach_8_listener() { return ctx.close(); });\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵattribute(\"aria-owns\", ctx.panelOpen ? ctx.id + \"-panel\" : null);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.empty);\n ɵngcc0.ɵɵattribute(\"id\", ctx._valueId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"cdkConnectedOverlayPanelClass\", ctx._overlayPanelClass)(\"cdkConnectedOverlayScrollStrategy\", ctx._scrollStrategy)(\"cdkConnectedOverlayOrigin\", _r0)(\"cdkConnectedOverlayOpen\", ctx.panelOpen)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayMinWidth\", ctx._triggerRect == null ? null : ctx._triggerRect.width)(\"cdkConnectedOverlayOffsetY\", ctx._offsetY);\n } }, directives: [ɵngcc7.CdkOverlayOrigin, ɵngcc8.NgSwitch, ɵngcc8.NgSwitchCase, ɵngcc7.CdkConnectedOverlay, ɵngcc8.NgSwitchDefault, ɵngcc8.NgClass], styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px}\\n\"], encapsulation: 2, data: { animation: [\n matSelectAnimations.transformPanelWrap,\n matSelectAnimations.transformPanel\n ] }, changeDetection: 0 });\nMatSelect.propDecorators = {\n options: [{ type: ContentChildren, args: [MatOption, { descendants: true },] }],\n optionGroups: [{ type: ContentChildren, args: [MAT_OPTGROUP, { descendants: true },] }],\n customTrigger: [{ type: ContentChild, args: [MAT_SELECT_TRIGGER,] }]\n};\nconst ɵMatSelect_BaseFactory = /*@__PURE__*/ ɵngcc0.ɵɵgetInheritedFactory(MatSelect);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelect, [{\n type: Component,\n args: [{\n selector: 'mat-select',\n exportAs: 'matSelect',\n template: \"\\n
\\n
\\n {{placeholder}}\\n \\n {{triggerValue}}\\n \\n \\n
\\n\\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n \\n\\n\",\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'none',\n // TODO(crisbeto): the value for aria-haspopup should be `listbox`, but currently it's difficult\n // to sync into Google, because of an outdated automated a11y check which flags it as an invalid\n // value. At some point we should try to switch it back to being `listbox`.\n 'aria-haspopup': 'true',\n 'class': 'mat-select',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-select-disabled]': 'disabled',\n '[class.mat-select-invalid]': 'errorState',\n '[class.mat-select-required]': 'required',\n '[class.mat-select-empty]': 'empty',\n '[class.mat-select-multiple]': 'multiple',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()'\n },\n animations: [\n matSelectAnimations.transformPanelWrap,\n matSelectAnimations.transformPanel\n ],\n providers: [\n { provide: MatFormFieldControl, useExisting: MatSelect },\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }\n ],\n styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px}\\n\"]\n }]\n }], null, { options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }], optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], customTrigger: [{\n type: ContentChild,\n args: [MAT_SELECT_TRIGGER]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSelectModule {\n}\nMatSelectModule.ɵfac = function MatSelectModule_Factory(t) { return new (t || MatSelectModule)(); };\nMatSelectModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatSelectModule });\nMatSelectModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [[\n CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n ], CdkScrollableModule,\n MatFormFieldModule,\n MatOptionModule,\n MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatSelectModule, { declarations: function () { return [MatSelect, MatSelectTrigger]; }, imports: function () { return [CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule]; }, exports: function () { return [CdkScrollableModule,\n MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule,\n MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n ],\n exports: [\n CdkScrollableModule,\n MatFormFieldModule,\n MatSelect,\n MatSelectTrigger,\n MatOptionModule,\n MatCommonModule\n ],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SELECT_CONFIG, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_TRIGGER, MatSelect, MatSelectChange, MatSelectModule, MatSelectTrigger, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, _MatSelectBase, matSelectAnimations };\n\n//# sourceMappingURL=select.js.map","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { PlakaSorgulaResponse } from '../models/plaka-sorgula.response';\nimport { PlakaRandevuListesiRequest } from '../models/plaka-randevu-listesi.request';\nimport { PlakaRandevuListesiResponse } from '../models/plaka-randevu-listesi.response';\nimport { FiloPlakaSorgulaResponse } from '../models/filo-plaka-sorgula.response';\nimport { ConfigService } from '../../../../core/config.service';\nimport { SmsGonderRequest } from 'app/core/filo/models/request/filo-islem/sms-gonderrequest';\nimport { SmsGonderResponse } from 'app/core/filo/models/response/filo-islem/sms-gonderesponse';\nimport { CheckOnayRequest } from 'app/core/filo/models/request/filo-islem/checkOnayrequet';\nimport { checkOnayResponse, SubDomainResponse } from 'app/core/filo/models/response/filo-islem/checkOnayResponse';\nimport { bayiListesiResponse } from 'app/views/pages/randevu/bayi-secim-modal/models/bayi-listesi.response';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class LastikAramaService {\n\tconstructor(private http: HttpClient, private configService: ConfigService) {}\n\n\tgetPlakaSorgula(txtPlaka: string): Observable {\n\t\tconst params = new HttpParams().set('txtPlaka', txtPlaka);\n\t\treturn this.http.get(this.configService.config.apiUrl + 'api/Saklama/PlakaSorgula', {\n\t\t\tparams: params\n\t\t});\n\t}\n\n\tgetFiloPlakaSorgula(txtPlaka: string, txtErpKod: string): Observable {\n\t\tconst params = new HttpParams().set('txtPlaka', txtPlaka).set('txtErpKod', txtErpKod);\n\t\treturn this.http.get(\n\t\t\tthis.configService.config.apiUrl + 'api/Saklama/FiloPlakaSorgula',\n\t\t\t{ params: params }\n\t\t);\n\t}\n\n\tpostPlakaRandevuListesi(req: PlakaRandevuListesiRequest): Observable {\n\t\treturn this.http.post(\n\t\t\tthis.configService.config.apiUrl + 'api/Randevu/PlakaRandevuListesi',\n\t\t\treq\n\t\t);\n\t}\n\tpostsmsGonder(req: SmsGonderRequest): Observable {\n\t\treturn this.http.post('api/FiloHizmetTanimlar/SendOnaySms', req);\n\t}\n\tpostcheckOnay(req: CheckOnayRequest): Observable {\n\t\treturn this.http.post('api/FiloHizmetTanimlar/CheckOnay', req);\n\t}\n\n\tpostPlakaRandevuIptal(lngKod: number): Observable {\n\t\treturn this.http.get(\n\t\t\t`${this.configService.config.apiUrl}api/Randevu/PlakaGirisiVeFiloYoneticiRandevuIptal/${lngKod}`\n\t\t);\n\t}\n\tgetSubDomain(request: string): Observable {\n\t\tconst params = new HttpParams().set('request', request);\n\t\tconst donus = this.http.get(this.configService.config.apiUrl + 'api/SubDomain/SubDomainGetir', {\n\t\t\tparams: params\n\t\t});\n\t\tdonus.subscribe(f => {\n\t\t\tconsole.log(f);\n\t\t\tlocalStorage.setItem('unvan', f.txtUnvan.toString());\n\t\t\tlocalStorage.setItem('subDomainParametreler', JSON.stringify(f));\n\t\t});\n\t\treturn donus;\n\t}\n\tgetDomainKisitliBayiGetir(url: string): Observable {\n\t\tconst params = new HttpParams().set('url', url);\n\t\treturn this.http.get(\n\t\t\tthis.configService.config.apiUrl + 'api/Saklama/DomainKisitliBayiGetir',\n\t\t\t{\n\t\t\t\tparams: params\n\t\t\t}\n\t\t);\n\t}\n}\n","import { OverlayModule, OverlayConfig, Overlay } from '@angular/cdk/overlay';\nimport { BasePortalOutlet, CdkPortalOutlet, PortalModule, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, NgZone, ElementRef, ChangeDetectorRef, ViewChild, NgModule, Injector, TemplateRef, ɵɵdefineInjectable, ɵɵinject, INJECTOR, Injectable, Optional, SkipSelf } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Subject } from 'rxjs';\nimport { Platform } from '@angular/cdk/platform';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/material/button';\nimport * as ɵngcc3 from '@angular/cdk/platform';\nimport * as ɵngcc4 from '@angular/cdk/portal';\nimport * as ɵngcc5 from '@angular/cdk/overlay';\nimport * as ɵngcc6 from '@angular/cdk/a11y';\nimport * as ɵngcc7 from '@angular/cdk/layout';\n\nfunction SimpleSnackBar_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵelementStart(1, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function SimpleSnackBar_div_2_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.action(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.data.action);\n} }\nfunction MatSnackBarContainer_ng_template_1_Template(rf, ctx) { }\nconst MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nclass MatSnackBarConfig {\n constructor() {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n this.politeness = 'assertive';\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n this.announcementMessage = '';\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n this.duration = 0;\n /** Data being injected into the child component. */\n this.data = null;\n /** The horizontal position to place the snack bar. */\n this.horizontalPosition = 'center';\n /** The vertical position to place the snack bar. */\n this.verticalPosition = 'bottom';\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nclass MatSnackBarRef {\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /** Subject for notifying the user that the snack bar has been dismissed. */\n this._afterDismissed = new Subject();\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the snack bar action was called. */\n this._onAction = new Subject();\n /** Whether the snack bar was dismissed using the action button. */\n this._dismissedByAction = false;\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(() => this.dismiss());\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n /** Dismisses the snack bar. */\n dismiss() {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /** Marks the snackbar action clicked. */\n dismissWithAction() {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction() {\n this.dismissWithAction();\n }\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration) {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n /** Marks the snackbar as opened */\n _open() {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n /** Cleans up the DOM after closing. */\n _finishDismiss() {\n this._overlayRef.dispose();\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n this._afterDismissed.next({ dismissedByAction: this._dismissedByAction });\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed() {\n return this._afterDismissed;\n }\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened() {\n return this.containerInstance._onEnter;\n }\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction() {\n return this._onAction;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\nclass SimpleSnackBar {\n constructor(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /** Performs the action on the snack bar. */\n action() {\n this.snackBarRef.dismissWithAction();\n }\n /** If the action button should be shown. */\n get hasAction() {\n return !!this.data.action;\n }\n}\nSimpleSnackBar.ɵfac = function SimpleSnackBar_Factory(t) { return new (t || SimpleSnackBar)(ɵngcc0.ɵɵdirectiveInject(MatSnackBarRef), ɵngcc0.ɵɵdirectiveInject(MAT_SNACK_BAR_DATA)); };\nSimpleSnackBar.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SimpleSnackBar, selectors: [[\"simple-snack-bar\"]], hostAttrs: [1, \"mat-simple-snackbar\"], decls: 3, vars: 2, consts: [[\"class\", \"mat-simple-snackbar-action\", 4, \"ngIf\"], [1, \"mat-simple-snackbar-action\"], [\"mat-button\", \"\", 3, \"click\"]], template: function SimpleSnackBar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, SimpleSnackBar_div_2_Template, 3, 1, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.data.message);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasAction);\n } }, directives: [ɵngcc1.NgIf, ɵngcc2.MatButton], styles: [\".mat-simple-snackbar{display:flex;justify-content:space-between;align-items:center;line-height:20px;opacity:1}.mat-simple-snackbar-action{flex-shrink:0;margin:-8px -8px -8px 8px}.mat-simple-snackbar-action button{max-height:36px;min-width:0}[dir=rtl] .mat-simple-snackbar-action{margin-left:-8px;margin-right:8px}\\n\"], encapsulation: 2, changeDetection: 0 });\nSimpleSnackBar.ctorParameters = () => [\n { type: MatSnackBarRef },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SNACK_BAR_DATA,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SimpleSnackBar, [{\n type: Component,\n args: [{\n selector: 'simple-snack-bar',\n template: \"{{data.message}}\\n
\\n \\n
\\n\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar'\n },\n styles: [\".mat-simple-snackbar{display:flex;justify-content:space-between;align-items:center;line-height:20px;opacity:1}.mat-simple-snackbar-action{flex-shrink:0;margin:-8px -8px -8px 8px}.mat-simple-snackbar-action button{max-height:36px;min-width:0}[dir=rtl] .mat-simple-snackbar-action{margin-left:-8px;margin-right:8px}\\n\"]\n }]\n }], function () { return [{ type: MatSnackBarRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DATA]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nconst matSnackBarAnimations = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [\n state('void, hidden', style({\n transform: 'scale(0.8)',\n opacity: 0,\n })),\n state('visible', style({\n transform: 'scale(1)',\n opacity: 1,\n })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n }))),\n ])\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\nclass MatSnackBarContainer extends BasePortalOutlet {\n constructor(_ngZone, _elementRef, _changeDetectorRef, _platform, \n /** The snack bar configuration. */\n snackBarConfig) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platform = _platform;\n this.snackBarConfig = snackBarConfig;\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n this._announceDelay = 150;\n /** Whether the component has been destroyed. */\n this._destroyed = false;\n /** Subject for notifying that the snack bar has announced to screen readers. */\n this._onAnnounce = new Subject();\n /** Subject for notifying that the snack bar has exited from view. */\n this._onExit = new Subject();\n /** Subject for notifying that the snack bar has finished entering the view. */\n this._onEnter = new Subject();\n /** The state of the snack bar animations. */\n this._animationState = 'void';\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachDomPortal(portal);\n };\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n }\n else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n }\n else {\n this._live = 'polite';\n }\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal(portal) {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal(portal) {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event) {\n const { fromState, toState } = event;\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /** Begin animation of snack bar entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n /** Begin animation of the snack bar exiting from view. */\n exit() {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n return this._onExit;\n }\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._completeExit();\n }\n /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n _completeExit() {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n /** Applies the various positioning and user-configured CSS classes to the snack bar. */\n _applySnackBarClasses() {\n const element = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n }\n else {\n element.classList.add(panelClasses);\n }\n }\n if (this.snackBarConfig.horizontalPosition === 'center') {\n element.classList.add('mat-snack-bar-center');\n }\n if (this.snackBarConfig.verticalPosition === 'top') {\n element.classList.add('mat-snack-bar-top');\n }\n }\n /** Asserts that no content is already attached to the container. */\n _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement = null;\n if (this._platform.isBrowser &&\n document.activeElement instanceof HTMLElement &&\n inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.focus();\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n }\n}\nMatSnackBarContainer.ɵfac = function MatSnackBarContainer_Factory(t) { return new (t || MatSnackBarContainer)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Platform), ɵngcc0.ɵɵdirectiveInject(MatSnackBarConfig)); };\nMatSnackBarContainer.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatSnackBarContainer, selectors: [[\"snack-bar-container\"]], viewQuery: function MatSnackBarContainer_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(CdkPortalOutlet, 3);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._portalOutlet = _t.first);\n } }, hostAttrs: [1, \"mat-snack-bar-container\"], hostVars: 1, hostBindings: function MatSnackBarContainer_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵsyntheticHostListener(\"@state.done\", function MatSnackBarContainer_animation_state_done_HostBindingHandler($event) { return ctx.onAnimationEnd($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵsyntheticHostProperty(\"@state\", ctx._animationState);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [[\"aria-hidden\", \"true\"], [\"cdkPortalOutlet\", \"\"]], template: function MatSnackBarContainer_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, MatSnackBarContainer_ng_template_1_Template, 0, 0, \"ng-template\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"div\");\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"aria-live\", ctx._live)(\"role\", ctx._role);\n } }, directives: [ɵngcc4.CdkPortalOutlet], styles: [\".mat-snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:24px;max-width:33vw;min-width:344px;padding:14px 16px;min-height:48px;transform-origin:center}.cdk-high-contrast-active .mat-snack-bar-container{border:solid 1px}.mat-snack-bar-handset{width:100%}.mat-snack-bar-handset .mat-snack-bar-container{margin:8px;max-width:100%;min-width:0;width:100%}\\n\"], encapsulation: 2, data: { animation: [matSnackBarAnimations.snackBarState] } });\nMatSnackBarContainer.ctorParameters = () => [\n { type: NgZone },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: Platform },\n { type: MatSnackBarConfig }\n];\nMatSnackBarContainer.propDecorators = {\n _portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet, { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSnackBarContainer, [{\n type: Component,\n args: [{\n selector: 'snack-bar-container',\n template: \"\\n
\\n \\n
\\n\\n\\n
\\n\",\n // In Ivy embedded views will be change detected from their declaration place, rather than\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n // because it might cause snack bars that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n styles: [\".mat-snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:24px;max-width:33vw;min-width:344px;padding:14px 16px;min-height:48px;transform-origin:center}.cdk-high-contrast-active .mat-snack-bar-container{border:solid 1px}.mat-snack-bar-handset{width:100%}.mat-snack-bar-handset .mat-snack-bar-container{margin:8px;max-width:100%;min-width:0;width:100%}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc3.Platform }, { type: MatSnackBarConfig }]; }, { _portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, { static: true }]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSnackBarModule {\n}\nMatSnackBarModule.ɵfac = function MatSnackBarModule_Factory(t) { return new (t || MatSnackBarModule)(); };\nMatSnackBarModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatSnackBarModule });\nMatSnackBarModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[\n OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule,\n ], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatSnackBarModule, { declarations: function () { return [MatSnackBarContainer, SimpleSnackBar]; }, imports: function () { return [OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule]; }, exports: function () { return [MatSnackBarContainer, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSnackBarModule, [{\n type: NgModule,\n args: [{\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to specify default snack bar. */\nconst MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY() {\n return new MatSnackBarConfig();\n}\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nclass MatSnackBar {\n constructor(_overlay, _live, _injector, _breakpointObserver, _parentSnackBar, _defaultConfig) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._breakpointObserver = _breakpointObserver;\n this._parentSnackBar = _parentSnackBar;\n this._defaultConfig = _defaultConfig;\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n this._snackBarRefAtThisLevel = null;\n /** The component that should be rendered as the snack bar's simple component. */\n this.simpleSnackBarComponent = SimpleSnackBar;\n /** The container component that attaches the provided template or component. */\n this.snackBarContainerComponent = MatSnackBarContainer;\n /** The CSS class to apply for handset mode. */\n this.handsetCssClass = 'mat-snack-bar-handset';\n }\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef() {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n set _openedSnackBarRef(value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n }\n else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent(component, config) {\n return this._attach(component, config);\n }\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template, config) {\n return this._attach(template, config);\n }\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(message, action = '', config) {\n const _config = Object.assign(Object.assign({}, this._defaultConfig), config);\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = { message, action };\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss() {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n /**\n * Attaches the snack bar container component to the overlay.\n */\n _attachSnackBarContainer(overlayRef, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: MatSnackBarConfig, useValue: config }]\n });\n const containerPortal = new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n _attach(content, userConfig) {\n const config = Object.assign(Object.assign(Object.assign({}, new MatSnackBarConfig()), this._defaultConfig), userConfig);\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef(container, overlayRef);\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null, {\n $implicit: config.data,\n snackBarRef\n });\n snackBarRef.instance = container.attachTemplatePortal(portal);\n }\n else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(takeUntil(overlayRef.detachments())).subscribe(state => {\n const classList = overlayRef.overlayElement.classList;\n state.matches ? classList.add(this.handsetCssClass) : classList.remove(this.handsetCssClass);\n });\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage, config.politeness);\n });\n }\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n /** Animates the old snack bar out and the new one in. */\n _animateSnackBar(snackBarRef, config) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n }\n else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration));\n }\n }\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n _createOverlay(config) {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = (config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n }\n else if (isRight) {\n positionStrategy.right('0');\n }\n else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n }\n else {\n positionStrategy.bottom('0');\n }\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n _createInjector(config, snackBarRef) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n { provide: MatSnackBarRef, useValue: snackBarRef },\n { provide: MAT_SNACK_BAR_DATA, useValue: config.data }\n ]\n });\n }\n}\nMatSnackBar.ɵfac = function MatSnackBar_Factory(t) { return new (t || MatSnackBar)(ɵngcc0.ɵɵinject(ɵngcc5.Overlay), ɵngcc0.ɵɵinject(ɵngcc6.LiveAnnouncer), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(ɵngcc7.BreakpointObserver), ɵngcc0.ɵɵinject(MatSnackBar, 12), ɵngcc0.ɵɵinject(MAT_SNACK_BAR_DEFAULT_OPTIONS)); };\nMatSnackBar.ɵprov = ɵɵdefineInjectable({ factory: function MatSnackBar_Factory() { return new MatSnackBar(ɵɵinject(Overlay), ɵɵinject(LiveAnnouncer), ɵɵinject(INJECTOR), ɵɵinject(BreakpointObserver), ɵɵinject(MatSnackBar, 12), ɵɵinject(MAT_SNACK_BAR_DEFAULT_OPTIONS)); }, token: MatSnackBar, providedIn: MatSnackBarModule });\nMatSnackBar.ctorParameters = () => [\n { type: Overlay },\n { type: LiveAnnouncer },\n { type: Injector },\n { type: BreakpointObserver },\n { type: MatSnackBar, decorators: [{ type: Optional }, { type: SkipSelf }] },\n { type: MatSnackBarConfig, decorators: [{ type: Inject, args: [MAT_SNACK_BAR_DEFAULT_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSnackBar, [{\n type: Injectable,\n args: [{ providedIn: MatSnackBarModule }]\n }], function () { return [{ type: ɵngcc5.Overlay }, { type: ɵngcc6.LiveAnnouncer }, { type: ɵngcc0.Injector }, { type: ɵngcc7.BreakpointObserver }, { type: MatSnackBar, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: MatSnackBarConfig, decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DEFAULT_OPTIONS]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SNACK_BAR_DATA, MAT_SNACK_BAR_DEFAULT_OPTIONS, MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, MatSnackBar, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarModule, MatSnackBarRef, SimpleSnackBar, matSnackBarAnimations };\n\n//# sourceMappingURL=snack-bar.js.map","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return kuKmr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","var InlineSVGConfig = (function () {\n function InlineSVGConfig() {\n }\n return InlineSVGConfig;\n}());\nexport { InlineSVGConfig };\n","import * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from './inline-svg.config';\nimport * as ɵngcc3 from '@angular/common/http';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Inject, Injectable, Optional, RendererFactory2 } from '@angular/core';\nimport { APP_BASE_HREF, PlatformLocation } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { of } from 'rxjs';\nimport { map, finalize, share } from 'rxjs/operators';\nimport { InlineSVGConfig } from './inline-svg.config';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"./inline-svg.config\";\nimport * as i3 from \"@angular/common/http\";\nvar SVGCacheService = (function () {\n function SVGCacheService(_appBase, _location, _config, _http, rendererFactory) {\n this._appBase = _appBase;\n this._location = _location;\n this._config = _config;\n this._http = _http;\n this._renderer = rendererFactory.createRenderer(null, null);\n this.setBaseUrl();\n if (!SVGCacheService_1._cache) {\n SVGCacheService_1._cache = new Map();\n }\n if (!SVGCacheService_1._inProgressReqs) {\n SVGCacheService_1._inProgressReqs = new Map();\n }\n }\n SVGCacheService_1 = SVGCacheService;\n SVGCacheService.prototype.getSVG = function (url, cache) {\n var _this = this;\n if (cache === void 0) { cache = true; }\n var absUrl = this.getAbsoluteUrl(url);\n if (cache && SVGCacheService_1._cache.has(absUrl)) {\n return of(this._cloneSVG(SVGCacheService_1._cache.get(absUrl)));\n }\n if (SVGCacheService_1._inProgressReqs.has(absUrl)) {\n return SVGCacheService_1._inProgressReqs.get(absUrl);\n }\n var req = this._http.get(absUrl, { responseType: 'text' })\n .pipe(finalize(function () {\n SVGCacheService_1._inProgressReqs.delete(absUrl);\n }), share(), map(function (svgText) {\n var svgEl = _this._svgElementFromString(svgText);\n SVGCacheService_1._cache.set(absUrl, svgEl);\n return _this._cloneSVG(svgEl);\n }));\n SVGCacheService_1._inProgressReqs.set(absUrl, req);\n return req;\n };\n SVGCacheService.prototype.setBaseUrl = function () {\n if (this._config) {\n this._baseUrl = this._config.baseUrl;\n }\n else if (this._appBase !== null) {\n this._baseUrl = this._appBase;\n }\n else if (this._location !== null) {\n this._baseUrl = this._location.getBaseHrefFromDOM();\n }\n };\n SVGCacheService.prototype.getAbsoluteUrl = function (url) {\n if (this._baseUrl && !/^https?:\\/\\//i.test(url)) {\n url = this._baseUrl + url;\n if (url.indexOf('//') === 0) {\n url = url.substring(1);\n }\n }\n var base = this._renderer.createElement('BASE');\n base.href = url;\n return base.href;\n };\n SVGCacheService.prototype._svgElementFromString = function (str) {\n var div = this._renderer.createElement('DIV');\n div.innerHTML = str;\n var svg = div.querySelector('svg');\n if (!svg) {\n throw new Error('No SVG found in loaded contents');\n }\n return svg;\n };\n SVGCacheService.prototype._cloneSVG = function (svg) {\n return svg.cloneNode(true);\n };\n var SVGCacheService_1;\n SVGCacheService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function SVGCacheService_Factory() { return new SVGCacheService(i0.ɵɵinject(i1.APP_BASE_HREF, 8), i0.ɵɵinject(i1.PlatformLocation, 8), i0.ɵɵinject(i2.InlineSVGConfig, 8), i0.ɵɵinject(i3.HttpClient), i0.ɵɵinject(i0.RendererFactory2)); }, token: SVGCacheService, providedIn: \"root\" });\n SVGCacheService = SVGCacheService_1 = __decorate([ __param(0, Optional()), __param(0, Inject(APP_BASE_HREF)),\n __param(1, Optional()),\n __param(2, Optional()),\n __metadata(\"design:paramtypes\", [String, PlatformLocation,\n InlineSVGConfig,\n HttpClient,\n RendererFactory2])\n ], SVGCacheService);\nSVGCacheService.ɵfac = function SVGCacheService_Factory(t) { return new (t || SVGCacheService)(ɵngcc0.ɵɵinject(APP_BASE_HREF, 8), ɵngcc0.ɵɵinject(ɵngcc1.PlatformLocation, 8), ɵngcc0.ɵɵinject(ɵngcc2.InlineSVGConfig, 8), ɵngcc0.ɵɵinject(ɵngcc3.HttpClient), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2)); };\nSVGCacheService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: SVGCacheService, factory: function (t) { return SVGCacheService.ɵfac(t); }, providedIn: 'root' });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SVGCacheService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }, { type: ɵngcc1.PlatformLocation, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.InlineSVGConfig, decorators: [{\n type: Optional\n }] }, { type: ɵngcc3.HttpClient }, { type: ɵngcc0.RendererFactory2 }]; }, null); })();\n return SVGCacheService;\n}());\nexport { SVGCacheService };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWNhY2hlLnNlcnZpY2UuanMiLCJzb3VyY2VzIjpbInN2Zy1jYWNoZS5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBSU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7a0dBQXdCO0FBQ3hCO0FBQ0E7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG52YXIgX19wYXJhbSA9ICh0aGlzICYmIHRoaXMuX19wYXJhbSkgfHwgZnVuY3Rpb24gKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufTtcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFQUF9CQVNFX0hSRUYsIFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElubGluZVNWR0NvbmZpZyB9IGZyb20gJy4vaW5saW5lLXN2Zy5jb25maWcnO1xuaW1wb3J0ICogYXMgaTAgZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCAqIGFzIGkxIGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCAqIGFzIGkyIGZyb20gXCIuL2lubGluZS1zdmcuY29uZmlnXCI7XG5pbXBvcnQgKiBhcyBpMyBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbnZhciBTVkdDYWNoZVNlcnZpY2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNWR0NhY2hlU2VydmljZShfYXBwQmFzZSwgX2xvY2F0aW9uLCBfY29uZmlnLCBfaHR0cCwgcmVuZGVyZXJGYWN0b3J5KSB7XG4gICAgICAgIHRoaXMuX2FwcEJhc2UgPSBfYXBwQmFzZTtcbiAgICAgICAgdGhpcy5fbG9jYXRpb24gPSBfbG9jYXRpb247XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IF9jb25maWc7XG4gICAgICAgIHRoaXMuX2h0dHAgPSBfaHR0cDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0QmFzZVVybCgpO1xuICAgICAgICBpZiAoIVNWR0NhY2hlU2VydmljZV8xLl9jYWNoZSkge1xuICAgICAgICAgICAgU1ZHQ2FjaGVTZXJ2aWNlXzEuX2NhY2hlID0gbmV3IE1hcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghU1ZHQ2FjaGVTZXJ2aWNlXzEuX2luUHJvZ3Jlc3NSZXFzKSB7XG4gICAgICAgICAgICBTVkdDYWNoZVNlcnZpY2VfMS5faW5Qcm9ncmVzc1JlcXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgU1ZHQ2FjaGVTZXJ2aWNlXzEgPSBTVkdDYWNoZVNlcnZpY2U7XG4gICAgU1ZHQ2FjaGVTZXJ2aWNlLnByb3RvdHlwZS5nZXRTVkcgPSBmdW5jdGlvbiAodXJsLCBjYWNoZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoY2FjaGUgPT09IHZvaWQgMCkgeyBjYWNoZSA9IHRydWU7IH1cbiAgICAgICAgdmFyIGFic1VybCA9IHRoaXMuZ2V0QWJzb2x1dGVVcmwodXJsKTtcbiAgICAgICAgaWYgKGNhY2hlICYmIFNWR0NhY2hlU2VydmljZV8xLl9jYWNoZS5oYXMoYWJzVXJsKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuX2Nsb25lU1ZHKFNWR0NhY2hlU2VydmljZV8xLl9jYWNoZS5nZXQoYWJzVXJsKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChTVkdDYWNoZVNlcnZpY2VfMS5faW5Qcm9ncmVzc1JlcXMuaGFzKGFic1VybCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTVkdDYWNoZVNlcnZpY2VfMS5faW5Qcm9ncmVzc1JlcXMuZ2V0KGFic1VybCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcSA9IHRoaXMuX2h0dHAuZ2V0KGFic1VybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgU1ZHQ2FjaGVTZXJ2aWNlXzEuX2luUHJvZ3Jlc3NSZXFzLmRlbGV0ZShhYnNVcmwpO1xuICAgICAgICB9KSwgc2hhcmUoKSwgbWFwKGZ1bmN0aW9uIChzdmdUZXh0KSB7XG4gICAgICAgICAgICB2YXIgc3ZnRWwgPSBfdGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcoc3ZnVGV4dCk7XG4gICAgICAgICAgICBTVkdDYWNoZVNlcnZpY2VfMS5fY2FjaGUuc2V0KGFic1VybCwgc3ZnRWwpO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9jbG9uZVNWRyhzdmdFbCk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgU1ZHQ2FjaGVTZXJ2aWNlXzEuX2luUHJvZ3Jlc3NSZXFzLnNldChhYnNVcmwsIHJlcSk7XG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfTtcbiAgICBTVkdDYWNoZVNlcnZpY2UucHJvdG90eXBlLnNldEJhc2VVcmwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuX2Jhc2VVcmwgPSB0aGlzLl9jb25maWcuYmFzZVVybDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLl9hcHBCYXNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9iYXNlVXJsID0gdGhpcy5fYXBwQmFzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLl9sb2NhdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fYmFzZVVybCA9IHRoaXMuX2xvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTVkdDYWNoZVNlcnZpY2UucHJvdG90eXBlLmdldEFic29sdXRlVXJsID0gZnVuY3Rpb24gKHVybCkge1xuICAgICAgICBpZiAodGhpcy5fYmFzZVVybCAmJiAhL15odHRwcz86XFwvXFwvL2kudGVzdCh1cmwpKSB7XG4gICAgICAgICAgICB1cmwgPSB0aGlzLl9iYXNlVXJsICsgdXJsO1xuICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCcvLycpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgYmFzZSA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ0JBU0UnKTtcbiAgICAgICAgYmFzZS5ocmVmID0gdXJsO1xuICAgICAgICByZXR1cm4gYmFzZS5ocmVmO1xuICAgIH07XG4gICAgU1ZHQ2FjaGVTZXJ2aWNlLnByb3RvdHlwZS5fc3ZnRWxlbWVudEZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgIHZhciBkaXYgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdESVYnKTtcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IHN0cjtcbiAgICAgICAgdmFyIHN2ZyA9IGRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICAgICAgaWYgKCFzdmcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gU1ZHIGZvdW5kIGluIGxvYWRlZCBjb250ZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdmc7XG4gICAgfTtcbiAgICBTVkdDYWNoZVNlcnZpY2UucHJvdG90eXBlLl9jbG9uZVNWRyA9IGZ1bmN0aW9uIChzdmcpIHtcbiAgICAgICAgcmV0dXJuIHN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgfTtcbiAgICB2YXIgU1ZHQ2FjaGVTZXJ2aWNlXzE7XG4gICAgU1ZHQ2FjaGVTZXJ2aWNlLm5nSW5qZWN0YWJsZURlZiA9IGkwLsm1ybVkZWZpbmVJbmplY3RhYmxlKHsgZmFjdG9yeTogZnVuY3Rpb24gU1ZHQ2FjaGVTZXJ2aWNlX0ZhY3RvcnkoKSB7IHJldHVybiBuZXcgU1ZHQ2FjaGVTZXJ2aWNlKGkwLsm1ybVpbmplY3QoaTEuQVBQX0JBU0VfSFJFRiwgOCksIGkwLsm1ybVpbmplY3QoaTEuUGxhdGZvcm1Mb2NhdGlvbiwgOCksIGkwLsm1ybVpbmplY3QoaTIuSW5saW5lU1ZHQ29uZmlnLCA4KSwgaTAuybXJtWluamVjdChpMy5IdHRwQ2xpZW50KSwgaTAuybXJtWluamVjdChpMC5SZW5kZXJlckZhY3RvcnkyKSk7IH0sIHRva2VuOiBTVkdDYWNoZVNlcnZpY2UsIHByb3ZpZGVkSW46IFwicm9vdFwiIH0pO1xuICAgIFNWR0NhY2hlU2VydmljZSA9IFNWR0NhY2hlU2VydmljZV8xID0gX19kZWNvcmF0ZShbXG4gICAgICAgIEluamVjdGFibGUoe1xuICAgICAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG4gICAgICAgIH0pLFxuICAgICAgICBfX3BhcmFtKDAsIE9wdGlvbmFsKCkpLCBfX3BhcmFtKDAsIEluamVjdChBUFBfQkFTRV9IUkVGKSksXG4gICAgICAgIF9fcGFyYW0oMSwgT3B0aW9uYWwoKSksXG4gICAgICAgIF9fcGFyYW0oMiwgT3B0aW9uYWwoKSksXG4gICAgICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbU3RyaW5nLCBQbGF0Zm9ybUxvY2F0aW9uLFxuICAgICAgICAgICAgSW5saW5lU1ZHQ29uZmlnLFxuICAgICAgICAgICAgSHR0cENsaWVudCxcbiAgICAgICAgICAgIFJlbmRlcmVyRmFjdG9yeTJdKVxuICAgIF0sIFNWR0NhY2hlU2VydmljZSk7XG4gICAgcmV0dXJuIFNWR0NhY2hlU2VydmljZTtcbn0oKSk7XG5leHBvcnQgeyBTVkdDYWNoZVNlcnZpY2UgfTtcbiJdfQ==","import * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Injectable, RendererFactory2 } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nvar InlineSVGService = (function () {\n function InlineSVGService(rendererFactory) {\n this._ranScripts = {};\n this._renderer = rendererFactory.createRenderer(null, null);\n }\n InlineSVGService.prototype.insertEl = function (dir, parentEl, content, replaceContents, prepend) {\n if (replaceContents && !prepend) {\n var parentNode = dir._prevSVG && dir._prevSVG.parentNode;\n if (parentNode) {\n this._renderer.removeChild(parentNode, dir._prevSVG);\n }\n parentEl.innerHTML = '';\n }\n if (prepend) {\n this._renderer.insertBefore(parentEl, content, parentEl.firstChild);\n }\n else {\n this._renderer.appendChild(parentEl, content);\n }\n if (content.nodeName === 'svg') {\n dir._prevSVG = content;\n }\n };\n InlineSVGService.prototype.evalScripts = function (svg, url, evalMode) {\n var scripts = svg.querySelectorAll('script');\n var scriptsToEval = [];\n for (var i = 0; i < scripts.length; i++) {\n var scriptType = scripts[i].getAttribute('type');\n if (!scriptType || scriptType === 'application/ecmascript' || scriptType === 'application/javascript') {\n var script = scripts[i].innerText || scripts[i].textContent;\n scriptsToEval.push(script);\n this._renderer.removeChild(scripts[i].parentNode, scripts[i]);\n }\n }\n if (scriptsToEval.length > 0 && (evalMode === \"always\" ||\n (evalMode === \"once\" && !this._ranScripts[url]))) {\n for (var i = 0; i < scriptsToEval.length; i++) {\n new Function(scriptsToEval[i])(window);\n }\n this._ranScripts[url] = true;\n }\n };\n InlineSVGService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function InlineSVGService_Factory() { return new InlineSVGService(i0.ɵɵinject(i0.RendererFactory2)); }, token: InlineSVGService, providedIn: \"root\" });\n InlineSVGService = __decorate([ __metadata(\"design:paramtypes\", [RendererFactory2])\n ], InlineSVGService);\nInlineSVGService.ɵfac = function InlineSVGService_Factory(t) { return new (t || InlineSVGService)(ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2)); };\nInlineSVGService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: InlineSVGService, factory: function (t) { return InlineSVGService.ɵfac(t); }, providedIn: 'root' });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: ɵngcc0.RendererFactory2 }]; }, null); })();\n return InlineSVGService;\n}());\nexport { InlineSVGService };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN2Zy5zZXJ2aWNlLmpzIiwic291cmNlcyI6WyJpbmxpbmUtc3ZnLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUlPO0FBQ1A7Ozs7Ozs7O2lGQUF5QjtBQUN6QjtBQUNBO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgX19tZXRhZGF0YSA9ICh0aGlzICYmIHRoaXMuX19tZXRhZGF0YSkgfHwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7XG59O1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgaTAgZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbnZhciBJbmxpbmVTVkdTZXJ2aWNlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBJbmxpbmVTVkdTZXJ2aWNlKHJlbmRlcmVyRmFjdG9yeSkge1xuICAgICAgICB0aGlzLl9yYW5TY3JpcHRzID0ge307XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIH1cbiAgICBJbmxpbmVTVkdTZXJ2aWNlLnByb3RvdHlwZS5pbnNlcnRFbCA9IGZ1bmN0aW9uIChkaXIsIHBhcmVudEVsLCBjb250ZW50LCByZXBsYWNlQ29udGVudHMsIHByZXBlbmQpIHtcbiAgICAgICAgaWYgKHJlcGxhY2VDb250ZW50cyAmJiAhcHJlcGVuZCkge1xuICAgICAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBkaXIuX3ByZXZTVkcgJiYgZGlyLl9wcmV2U1ZHLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIGRpci5fcHJldlNWRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnRFbC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlcGVuZCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHBhcmVudEVsLCBjb250ZW50LCBwYXJlbnRFbC5maXJzdENoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudEVsLCBjb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udGVudC5ub2RlTmFtZSA9PT0gJ3N2ZycpIHtcbiAgICAgICAgICAgIGRpci5fcHJldlNWRyA9IGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIElubGluZVNWR1NlcnZpY2UucHJvdG90eXBlLmV2YWxTY3JpcHRzID0gZnVuY3Rpb24gKHN2ZywgdXJsLCBldmFsTW9kZSkge1xuICAgICAgICB2YXIgc2NyaXB0cyA9IHN2Zy5xdWVyeVNlbGVjdG9yQWxsKCdzY3JpcHQnKTtcbiAgICAgICAgdmFyIHNjcmlwdHNUb0V2YWwgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc2NyaXB0VHlwZSA9IHNjcmlwdHNbaV0uZ2V0QXR0cmlidXRlKCd0eXBlJyk7XG4gICAgICAgICAgICBpZiAoIXNjcmlwdFR5cGUgfHwgc2NyaXB0VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2VjbWFzY3JpcHQnIHx8IHNjcmlwdFR5cGUgPT09ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Jykge1xuICAgICAgICAgICAgICAgIHZhciBzY3JpcHQgPSBzY3JpcHRzW2ldLmlubmVyVGV4dCB8fCBzY3JpcHRzW2ldLnRleHRDb250ZW50O1xuICAgICAgICAgICAgICAgIHNjcmlwdHNUb0V2YWwucHVzaChzY3JpcHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKHNjcmlwdHNbaV0ucGFyZW50Tm9kZSwgc2NyaXB0c1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjcmlwdHNUb0V2YWwubGVuZ3RoID4gMCAmJiAoZXZhbE1vZGUgPT09IFwiYWx3YXlzXCIgfHxcbiAgICAgICAgICAgIChldmFsTW9kZSA9PT0gXCJvbmNlXCIgJiYgIXRoaXMuX3JhblNjcmlwdHNbdXJsXSkpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHNUb0V2YWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBuZXcgRnVuY3Rpb24oc2NyaXB0c1RvRXZhbFtpXSkod2luZG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3JhblNjcmlwdHNbdXJsXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIElubGluZVNWR1NlcnZpY2UubmdJbmplY3RhYmxlRGVmID0gaTAuybXJtWRlZmluZUluamVjdGFibGUoeyBmYWN0b3J5OiBmdW5jdGlvbiBJbmxpbmVTVkdTZXJ2aWNlX0ZhY3RvcnkoKSB7IHJldHVybiBuZXcgSW5saW5lU1ZHU2VydmljZShpMC7Jtcm1aW5qZWN0KGkwLlJlbmRlcmVyRmFjdG9yeTIpKTsgfSwgdG9rZW46IElubGluZVNWR1NlcnZpY2UsIHByb3ZpZGVkSW46IFwicm9vdFwiIH0pO1xuICAgIElubGluZVNWR1NlcnZpY2UgPSBfX2RlY29yYXRlKFtcbiAgICAgICAgSW5qZWN0YWJsZSh7XG4gICAgICAgICAgICBwcm92aWRlZEluOiAncm9vdCdcbiAgICAgICAgfSksXG4gICAgICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbUmVuZGVyZXJGYWN0b3J5Ml0pXG4gICAgXSwgSW5saW5lU1ZHU2VydmljZSk7XG4gICAgcmV0dXJuIElubGluZVNWR1NlcnZpY2U7XG59KCkpO1xuZXhwb3J0IHsgSW5saW5lU1ZHU2VydmljZSB9O1xuIl19","import * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from './inline-svg.service';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\nimport { InlineSVGDirective } from './inline-svg.directive';\nimport { InlineSVGService } from './inline-svg.service';\nvar InlineSVGComponent = (function () {\n function InlineSVGComponent(_inlineSVGService, el) {\n this._inlineSVGService = _inlineSVGService;\n this._el = el;\n }\n InlineSVGComponent.prototype.ngAfterViewInit = function () {\n this._updateContent();\n };\n InlineSVGComponent.prototype.ngOnChanges = function (changes) {\n if (changes['content']) {\n this._updateContent();\n }\n };\n InlineSVGComponent.prototype._updateContent = function () {\n this._inlineSVGService.insertEl(this.context, this._el.nativeElement, this.content, this.replaceContents, this.prepend);\n };\n __decorate([\n Input(),\n __metadata(\"design:type\", InlineSVGDirective)\n ], InlineSVGComponent.prototype, \"context\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Element)\n ], InlineSVGComponent.prototype, \"content\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGComponent.prototype, \"replaceContents\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGComponent.prototype, \"prepend\", void 0);\n InlineSVGComponent = __decorate([ __metadata(\"design:paramtypes\", [InlineSVGService, ElementRef])\n ], InlineSVGComponent);\nInlineSVGComponent.ɵfac = function InlineSVGComponent_Factory(t) { return new (t || InlineSVGComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.InlineSVGService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nInlineSVGComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: InlineSVGComponent, selectors: [[\"inline-svg\"]], inputs: { context: \"context\", content: \"content\", replaceContents: \"replaceContents\", prepend: \"prepend\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function InlineSVGComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGComponent, [{\n type: Component,\n args: [{\n selector: 'inline-svg',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc1.InlineSVGService }, { type: ɵngcc0.ElementRef }]; }, { context: [{\n type: Input\n }], content: [{\n type: Input\n }], replaceContents: [{\n type: Input\n }], prepend: [{\n type: Input\n }] }); })();\n return InlineSVGComponent;\n}());\nexport { InlineSVGComponent };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN2Zy5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbImlubGluZS1zdmcuY29tcG9uZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQU1PO0FBQ1A7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFBMkI7QUFDM0I7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVjb3JhdGUgPSAodGhpcyAmJiB0aGlzLl9fZGVjb3JhdGUpIHx8IGZ1bmN0aW9uIChkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59O1xudmFyIF9fbWV0YWRhdGEgPSAodGhpcyAmJiB0aGlzLl9fbWV0YWRhdGEpIHx8IGZ1bmN0aW9uIChrLCB2KSB7XG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKGssIHYpO1xufTtcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbmxpbmVTVkdEaXJlY3RpdmUgfSBmcm9tICcuL2lubGluZS1zdmcuZGlyZWN0aXZlJztcbmltcG9ydCB7IElubGluZVNWR1NlcnZpY2UgfSBmcm9tICcuL2lubGluZS1zdmcuc2VydmljZSc7XG52YXIgSW5saW5lU1ZHQ29tcG9uZW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBJbmxpbmVTVkdDb21wb25lbnQoX2lubGluZVNWR1NlcnZpY2UsIGVsKSB7XG4gICAgICAgIHRoaXMuX2lubGluZVNWR1NlcnZpY2UgPSBfaW5saW5lU1ZHU2VydmljZTtcbiAgICAgICAgdGhpcy5fZWwgPSBlbDtcbiAgICB9XG4gICAgSW5saW5lU1ZHQ29tcG9uZW50LnByb3RvdHlwZS5uZ0FmdGVyVmlld0luaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnQoKTtcbiAgICB9O1xuICAgIElubGluZVNWR0NvbXBvbmVudC5wcm90b3R5cGUubmdPbkNoYW5nZXMgPSBmdW5jdGlvbiAoY2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlc1snY29udGVudCddKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIElubGluZVNWR0NvbXBvbmVudC5wcm90b3R5cGUuX3VwZGF0ZUNvbnRlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2lubGluZVNWR1NlcnZpY2UuaW5zZXJ0RWwodGhpcy5jb250ZXh0LCB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmNvbnRlbnQsIHRoaXMucmVwbGFjZUNvbnRlbnRzLCB0aGlzLnByZXBlbmQpO1xuICAgIH07XG4gICAgX19kZWNvcmF0ZShbXG4gICAgICAgIElucHV0KCksXG4gICAgICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBJbmxpbmVTVkdEaXJlY3RpdmUpXG4gICAgXSwgSW5saW5lU1ZHQ29tcG9uZW50LnByb3RvdHlwZSwgXCJjb250ZXh0XCIsIHZvaWQgMCk7XG4gICAgX19kZWNvcmF0ZShbXG4gICAgICAgIElucHV0KCksXG4gICAgICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBFbGVtZW50KVxuICAgIF0sIElubGluZVNWR0NvbXBvbmVudC5wcm90b3R5cGUsIFwiY29udGVudFwiLCB2b2lkIDApO1xuICAgIF9fZGVjb3JhdGUoW1xuICAgICAgICBJbnB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQm9vbGVhbilcbiAgICBdLCBJbmxpbmVTVkdDb21wb25lbnQucHJvdG90eXBlLCBcInJlcGxhY2VDb250ZW50c1wiLCB2b2lkIDApO1xuICAgIF9fZGVjb3JhdGUoW1xuICAgICAgICBJbnB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQm9vbGVhbilcbiAgICBdLCBJbmxpbmVTVkdDb21wb25lbnQucHJvdG90eXBlLCBcInByZXBlbmRcIiwgdm9pZCAwKTtcbiAgICBJbmxpbmVTVkdDb21wb25lbnQgPSBfX2RlY29yYXRlKFtcbiAgICAgICAgQ29tcG9uZW50KHtcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnaW5saW5lLXN2ZycsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJycsXG4gICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxuICAgICAgICB9KSxcbiAgICAgICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtJbmxpbmVTVkdTZXJ2aWNlLCBFbGVtZW50UmVmXSlcbiAgICBdLCBJbmxpbmVTVkdDb21wb25lbnQpO1xuICAgIHJldHVybiBJbmxpbmVTVkdDb21wb25lbnQ7XG59KCkpO1xuZXhwb3J0IHsgSW5saW5lU1ZHQ29tcG9uZW50IH07XG4iXX0=","export function isUrlSymbol(url) {\n return url.charAt(0) === '#' || url.indexOf('.svg#') > -1;\n}\nexport function isSvgSupported() {\n return typeof SVGRect !== 'undefined';\n}\nexport function createSymbolSvg(renderer, svg, symbolId) {\n var symbol = svg.querySelector(\"[id=\\\"\" + symbolId + \"\\\"]\");\n if (!symbol) {\n throw new Error(\"Symbol \\\"\" + symbolId + \"\\\" not found\");\n }\n var elSvg = renderer.createElement('svg', 'svg');\n renderer.appendChild(elSvg, symbol);\n var elSvgUse = renderer.createElement('use', 'svg');\n renderer.setAttribute(elSvgUse, 'href', \"#\" + symbolId, 'xlink');\n renderer.appendChild(elSvg, elSvgUse);\n return elSvg;\n}\nexport function removeAttributes(element, attrs) {\n for (var i = 0; i < attrs.length; i++) {\n var elAttr = element.getAttribute(attrs[i]);\n if (elAttr) {\n element.removeAttribute(attrs[i]);\n }\n }\n var innerEls = element.getElementsByTagName('*');\n for (var i = 0; i < innerEls.length; i++) {\n removeAttributes(innerEls[i], attrs);\n }\n}\nexport function setAttributes(element, attrs) {\n for (var attr in attrs) {\n element.setAttribute(attr, attrs[attr]);\n }\n}\n","import * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from './svg-cache.service';\nimport * as ɵngcc2 from './inline-svg.service';\nimport * as ɵngcc3 from './inline-svg.config';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { ComponentFactoryResolver, Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output, PLATFORM_ID, Renderer2, ViewContainerRef, } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { InlineSVGComponent } from './inline-svg.component';\nimport { SVGCacheService } from './svg-cache.service';\nimport { InlineSVGService } from './inline-svg.service';\nimport { InlineSVGConfig } from './inline-svg.config';\nimport * as SvgUtil from './svg-util';\nvar InlineSVGDirective = (function () {\n function InlineSVGDirective(_el, _viewContainerRef, _resolver, _svgCache, _renderer, _inlineSVGService, _config, platformId) {\n this._el = _el;\n this._viewContainerRef = _viewContainerRef;\n this._resolver = _resolver;\n this._svgCache = _svgCache;\n this._renderer = _renderer;\n this._inlineSVGService = _inlineSVGService;\n this._config = _config;\n this.platformId = platformId;\n this.replaceContents = true;\n this.prepend = false;\n this.injectComponent = false;\n this.cacheSVG = true;\n this.forceEvalStyles = false;\n this.evalScripts = \"always\";\n this.onSVGInserted = new EventEmitter();\n this.onSVGFailed = new EventEmitter();\n this._supportsSVG = SvgUtil.isSvgSupported();\n if (!isPlatformServer(this.platformId) && !this._supportsSVG) {\n this._fail('Embed SVG are not supported by this browser');\n }\n }\n InlineSVGDirective.prototype.ngOnInit = function () {\n if (!this._isValidPlatform() || this._isSSRDisabled()) {\n return;\n }\n this._insertSVG();\n };\n InlineSVGDirective.prototype.ngOnChanges = function (changes) {\n if (!this._isValidPlatform() || this._isSSRDisabled()) {\n return;\n }\n if (changes['inlineSVG']) {\n this._insertSVG();\n }\n };\n InlineSVGDirective.prototype.ngOnDestroy = function () {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n };\n InlineSVGDirective.prototype._insertSVG = function () {\n var _this = this;\n if (!isPlatformServer(this.platformId) && !this._supportsSVG) {\n return;\n }\n if (!this.inlineSVG) {\n this._fail('No URL passed to [inlineSVG]');\n return;\n }\n if (this.inlineSVG === this._prevUrl) {\n return;\n }\n this._prevUrl = this.inlineSVG;\n this._subscription = this._svgCache.getSVG(this.inlineSVG, this.cacheSVG)\n .subscribe(function (svg) {\n if (SvgUtil.isUrlSymbol(_this.inlineSVG)) {\n var symbolId = _this.inlineSVG.split('#')[1];\n svg = SvgUtil.createSymbolSvg(_this._renderer, svg, symbolId);\n }\n _this._processSvg(svg);\n }, function (err) {\n _this._fail(err);\n });\n };\n InlineSVGDirective.prototype._processSvg = function (svg) {\n if (!svg) {\n return;\n }\n if (this.removeSVGAttributes && isPlatformBrowser(this.platformId)) {\n SvgUtil.removeAttributes(svg, this.removeSVGAttributes);\n }\n if (this.setSVGAttributes) {\n SvgUtil.setAttributes(svg, this.setSVGAttributes);\n }\n if (this.onSVGLoaded) {\n svg = this.onSVGLoaded(svg, this._el.nativeElement);\n }\n this._insertEl(svg);\n if (isPlatformBrowser(this.platformId)) {\n this._inlineSVGService.evalScripts(svg, this.inlineSVG, this.evalScripts);\n }\n if (this.forceEvalStyles) {\n var styleTags = svg.querySelectorAll('style');\n Array.from(styleTags).forEach(function (tag) { return tag.textContent += ''; });\n }\n this.onSVGInserted.emit(svg);\n };\n InlineSVGDirective.prototype._insertEl = function (el) {\n if (this.injectComponent) {\n if (!this._svgComp) {\n var factory = this._resolver.resolveComponentFactory(InlineSVGComponent);\n this._svgComp = this._viewContainerRef.createComponent(factory);\n }\n this._svgComp.instance.context = this;\n this._svgComp.instance.replaceContents = this.replaceContents;\n this._svgComp.instance.prepend = this.prepend;\n this._svgComp.instance.content = el;\n this._renderer.appendChild(this._el.nativeElement, this._svgComp.injector.get(InlineSVGComponent)._el.nativeElement);\n }\n else {\n this._inlineSVGService.insertEl(this, this._el.nativeElement, el, this.replaceContents, this.prepend);\n }\n };\n InlineSVGDirective.prototype._fail = function (msg) {\n this.onSVGFailed.emit(msg);\n if (this.fallbackImgUrl) {\n var elImg = this._renderer.createElement('IMG');\n this._renderer.setAttribute(elImg, 'src', this.fallbackImgUrl);\n this._insertEl(elImg);\n }\n };\n InlineSVGDirective.prototype._isValidPlatform = function () {\n return isPlatformServer(this.platformId) || isPlatformBrowser(this.platformId);\n };\n InlineSVGDirective.prototype._isSSRDisabled = function () {\n return isPlatformServer(this.platformId) && this._config && this._config.clientOnly;\n };\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], InlineSVGDirective.prototype, \"inlineSVG\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"replaceContents\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"prepend\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"injectComponent\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"cacheSVG\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Object)\n ], InlineSVGDirective.prototype, \"setSVGAttributes\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Array)\n ], InlineSVGDirective.prototype, \"removeSVGAttributes\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"forceEvalStyles\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], InlineSVGDirective.prototype, \"evalScripts\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], InlineSVGDirective.prototype, \"fallbackImgUrl\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Function)\n ], InlineSVGDirective.prototype, \"onSVGLoaded\", void 0);\n __decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n ], InlineSVGDirective.prototype, \"onSVGInserted\", void 0);\n __decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n ], InlineSVGDirective.prototype, \"onSVGFailed\", void 0);\n InlineSVGDirective = __decorate([ __param(6, Optional()),\n __param(7, Inject(PLATFORM_ID)),\n __metadata(\"design:paramtypes\", [ElementRef,\n ViewContainerRef,\n ComponentFactoryResolver,\n SVGCacheService,\n Renderer2,\n InlineSVGService,\n InlineSVGConfig,\n Object])\n ], InlineSVGDirective);\nInlineSVGDirective.ɵfac = function InlineSVGDirective_Factory(t) { return new (t || InlineSVGDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.SVGCacheService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.InlineSVGService), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.InlineSVGConfig, 8), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nInlineSVGDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: InlineSVGDirective, selectors: [[\"\", \"inlineSVG\", \"\"]], inputs: { replaceContents: \"replaceContents\", prepend: \"prepend\", injectComponent: \"injectComponent\", cacheSVG: \"cacheSVG\", forceEvalStyles: \"forceEvalStyles\", evalScripts: \"evalScripts\", inlineSVG: \"inlineSVG\", setSVGAttributes: \"setSVGAttributes\", removeSVGAttributes: \"removeSVGAttributes\", fallbackImgUrl: \"fallbackImgUrl\", onSVGLoaded: \"onSVGLoaded\" }, outputs: { onSVGInserted: \"onSVGInserted\", onSVGFailed: \"onSVGFailed\" }, features: [ɵngcc0.ɵɵProvidersFeature([SVGCacheService]), ɵngcc0.ɵɵNgOnChangesFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGDirective, [{\n type: Directive,\n args: [{\n selector: '[inlineSVG]',\n providers: [SVGCacheService]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc1.SVGCacheService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.InlineSVGService }, { type: ɵngcc3.InlineSVGConfig, decorators: [{\n type: Optional\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { replaceContents: [{\n type: Input\n }], prepend: [{\n type: Input\n }], injectComponent: [{\n type: Input\n }], cacheSVG: [{\n type: Input\n }], forceEvalStyles: [{\n type: Input\n }], evalScripts: [{\n type: Input\n }], onSVGInserted: [{\n type: Output\n }], onSVGFailed: [{\n type: Output\n }], inlineSVG: [{\n type: Input\n }], setSVGAttributes: [{\n type: Input\n }], removeSVGAttributes: [{\n type: Input\n }], fallbackImgUrl: [{\n type: Input\n }], onSVGLoaded: [{\n type: Input\n }] }); })();\n return InlineSVGDirective;\n}());\nexport { InlineSVGDirective };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN2Zy5kaXJlY3RpdmUuanMiLCJzb3VyY2VzIjpbImlubGluZS1zdmcuZGlyZWN0aXZlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUtPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBQTJCO0FBQzNCO0FBQ0E7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG52YXIgX19wYXJhbSA9ICh0aGlzICYmIHRoaXMuX19wYXJhbSkgfHwgZnVuY3Rpb24gKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxufTtcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFZpZXdDb250YWluZXJSZWYsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmxpbmVTVkdDb21wb25lbnQgfSBmcm9tICcuL2lubGluZS1zdmcuY29tcG9uZW50JztcbmltcG9ydCB7IFNWR0NhY2hlU2VydmljZSB9IGZyb20gJy4vc3ZnLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5saW5lU1ZHU2VydmljZSB9IGZyb20gJy4vaW5saW5lLXN2Zy5zZXJ2aWNlJztcbmltcG9ydCB7IElubGluZVNWR0NvbmZpZyB9IGZyb20gJy4vaW5saW5lLXN2Zy5jb25maWcnO1xuaW1wb3J0ICogYXMgU3ZnVXRpbCBmcm9tICcuL3N2Zy11dGlsJztcbnZhciBJbmxpbmVTVkdEaXJlY3RpdmUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIElubGluZVNWR0RpcmVjdGl2ZShfZWwsIF92aWV3Q29udGFpbmVyUmVmLCBfcmVzb2x2ZXIsIF9zdmdDYWNoZSwgX3JlbmRlcmVyLCBfaW5saW5lU1ZHU2VydmljZSwgX2NvbmZpZywgcGxhdGZvcm1JZCkge1xuICAgICAgICB0aGlzLl9lbCA9IF9lbDtcbiAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZiA9IF92aWV3Q29udGFpbmVyUmVmO1xuICAgICAgICB0aGlzLl9yZXNvbHZlciA9IF9yZXNvbHZlcjtcbiAgICAgICAgdGhpcy5fc3ZnQ2FjaGUgPSBfc3ZnQ2FjaGU7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gX3JlbmRlcmVyO1xuICAgICAgICB0aGlzLl9pbmxpbmVTVkdTZXJ2aWNlID0gX2lubGluZVNWR1NlcnZpY2U7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IF9jb25maWc7XG4gICAgICAgIHRoaXMucGxhdGZvcm1JZCA9IHBsYXRmb3JtSWQ7XG4gICAgICAgIHRoaXMucmVwbGFjZUNvbnRlbnRzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmVwZW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5qZWN0Q29tcG9uZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FjaGVTVkcgPSB0cnVlO1xuICAgICAgICB0aGlzLmZvcmNlRXZhbFN0eWxlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmV2YWxTY3JpcHRzID0gXCJhbHdheXNcIjtcbiAgICAgICAgdGhpcy5vblNWR0luc2VydGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICB0aGlzLm9uU1ZHRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICB0aGlzLl9zdXBwb3J0c1NWRyA9IFN2Z1V0aWwuaXNTdmdTdXBwb3J0ZWQoKTtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkgJiYgIXRoaXMuX3N1cHBvcnRzU1ZHKSB7XG4gICAgICAgICAgICB0aGlzLl9mYWlsKCdFbWJlZCBTVkcgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgSW5saW5lU1ZHRGlyZWN0aXZlLnByb3RvdHlwZS5uZ09uSW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkUGxhdGZvcm0oKSB8fCB0aGlzLl9pc1NTUkRpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnNlcnRTVkcoKTtcbiAgICB9O1xuICAgIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUubmdPbkNoYW5nZXMgPSBmdW5jdGlvbiAoY2hhbmdlcykge1xuICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWRQbGF0Zm9ybSgpIHx8IHRoaXMuX2lzU1NSRGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydpbmxpbmVTVkcnXSkge1xuICAgICAgICAgICAgdGhpcy5faW5zZXJ0U1ZHKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUubmdPbkRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBJbmxpbmVTVkdEaXJlY3RpdmUucHJvdG90eXBlLl9pbnNlcnRTVkcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybVNlcnZlcih0aGlzLnBsYXRmb3JtSWQpICYmICF0aGlzLl9zdXBwb3J0c1NWRykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pbmxpbmVTVkcpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZhaWwoJ05vIFVSTCBwYXNzZWQgdG8gW2lubGluZVNWR10nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmxpbmVTVkcgPT09IHRoaXMuX3ByZXZVcmwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2VXJsID0gdGhpcy5pbmxpbmVTVkc7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuX3N2Z0NhY2hlLmdldFNWRyh0aGlzLmlubGluZVNWRywgdGhpcy5jYWNoZVNWRylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKHN2Zykge1xuICAgICAgICAgICAgaWYgKFN2Z1V0aWwuaXNVcmxTeW1ib2woX3RoaXMuaW5saW5lU1ZHKSkge1xuICAgICAgICAgICAgICAgIHZhciBzeW1ib2xJZCA9IF90aGlzLmlubGluZVNWRy5zcGxpdCgnIycpWzFdO1xuICAgICAgICAgICAgICAgIHN2ZyA9IFN2Z1V0aWwuY3JlYXRlU3ltYm9sU3ZnKF90aGlzLl9yZW5kZXJlciwgc3ZnLCBzeW1ib2xJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5fcHJvY2Vzc1N2ZyhzdmcpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBfdGhpcy5fZmFpbChlcnIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUuX3Byb2Nlc3NTdmcgPSBmdW5jdGlvbiAoc3ZnKSB7XG4gICAgICAgIGlmICghc3ZnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlU1ZHQXR0cmlidXRlcyAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBTdmdVdGlsLnJlbW92ZUF0dHJpYnV0ZXMoc3ZnLCB0aGlzLnJlbW92ZVNWR0F0dHJpYnV0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNldFNWR0F0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIFN2Z1V0aWwuc2V0QXR0cmlidXRlcyhzdmcsIHRoaXMuc2V0U1ZHQXR0cmlidXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub25TVkdMb2FkZWQpIHtcbiAgICAgICAgICAgIHN2ZyA9IHRoaXMub25TVkdMb2FkZWQoc3ZnLCB0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnNlcnRFbChzdmcpO1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5faW5saW5lU1ZHU2VydmljZS5ldmFsU2NyaXB0cyhzdmcsIHRoaXMuaW5saW5lU1ZHLCB0aGlzLmV2YWxTY3JpcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mb3JjZUV2YWxTdHlsZXMpIHtcbiAgICAgICAgICAgIHZhciBzdHlsZVRhZ3MgPSBzdmcucXVlcnlTZWxlY3RvckFsbCgnc3R5bGUnKTtcbiAgICAgICAgICAgIEFycmF5LmZyb20oc3R5bGVUYWdzKS5mb3JFYWNoKGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZy50ZXh0Q29udGVudCArPSAnJzsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblNWR0luc2VydGVkLmVtaXQoc3ZnKTtcbiAgICB9O1xuICAgIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUuX2luc2VydEVsID0gZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIGlmICh0aGlzLmluamVjdENvbXBvbmVudCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9zdmdDb21wKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZhY3RvcnkgPSB0aGlzLl9yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShJbmxpbmVTVkdDb21wb25lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N2Z0NvbXAgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3N2Z0NvbXAuaW5zdGFuY2UuY29udGV4dCA9IHRoaXM7XG4gICAgICAgICAgICB0aGlzLl9zdmdDb21wLmluc3RhbmNlLnJlcGxhY2VDb250ZW50cyA9IHRoaXMucmVwbGFjZUNvbnRlbnRzO1xuICAgICAgICAgICAgdGhpcy5fc3ZnQ29tcC5pbnN0YW5jZS5wcmVwZW5kID0gdGhpcy5wcmVwZW5kO1xuICAgICAgICAgICAgdGhpcy5fc3ZnQ29tcC5pbnN0YW5jZS5jb250ZW50ID0gZWw7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCB0aGlzLl9zdmdDb21wLmluamVjdG9yLmdldChJbmxpbmVTVkdDb21wb25lbnQpLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lubGluZVNWR1NlcnZpY2UuaW5zZXJ0RWwodGhpcywgdGhpcy5fZWwubmF0aXZlRWxlbWVudCwgZWwsIHRoaXMucmVwbGFjZUNvbnRlbnRzLCB0aGlzLnByZXBlbmQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBJbmxpbmVTVkdEaXJlY3RpdmUucHJvdG90eXBlLl9mYWlsID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICB0aGlzLm9uU1ZHRmFpbGVkLmVtaXQobXNnKTtcbiAgICAgICAgaWYgKHRoaXMuZmFsbGJhY2tJbWdVcmwpIHtcbiAgICAgICAgICAgIHZhciBlbEltZyA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ0lNRycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsSW1nLCAnc3JjJywgdGhpcy5mYWxsYmFja0ltZ1VybCk7XG4gICAgICAgICAgICB0aGlzLl9pbnNlcnRFbChlbEltZyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUuX2lzVmFsaWRQbGF0Zm9ybSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICAgIH07XG4gICAgSW5saW5lU1ZHRGlyZWN0aXZlLnByb3RvdHlwZS5faXNTU1JEaXNhYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLl9jb25maWcgJiYgdGhpcy5fY29uZmlnLmNsaWVudE9ubHk7XG4gICAgfTtcbiAgICBfX2RlY29yYXRlKFtcbiAgICAgICAgSW5wdXQoKSxcbiAgICAgICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIFN0cmluZylcbiAgICBdLCBJbmxpbmVTVkdEaXJlY3RpdmUucHJvdG90eXBlLCBcImlubGluZVNWR1wiLCB2b2lkIDApO1xuICAgIF9fZGVjb3JhdGUoW1xuICAgICAgICBJbnB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQm9vbGVhbilcbiAgICBdLCBJbmxpbmVTVkdEaXJlY3RpdmUucHJvdG90eXBlLCBcInJlcGxhY2VDb250ZW50c1wiLCB2b2lkIDApO1xuICAgIF9fZGVjb3JhdGUoW1xuICAgICAgICBJbnB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQm9vbGVhbilcbiAgICBdLCBJbmxpbmVTVkdEaXJlY3RpdmUucHJvdG90eXBlLCBcInByZXBlbmRcIiwgdm9pZCAwKTtcbiAgICBfX2RlY29yYXRlKFtcbiAgICAgICAgSW5wdXQoKSxcbiAgICAgICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEJvb2xlYW4pXG4gICAgXSwgSW5saW5lU1ZHRGlyZWN0aXZlLnByb3RvdHlwZSwgXCJpbmplY3RDb21wb25lbnRcIiwgdm9pZCAwKTtcbiAgICBfX2RlY29yYXRlKFtcbiAgICAgICAgSW5wdXQoKSxcbiAgICAgICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEJvb2xlYW4pXG4gICAgXSwgSW5saW5lU1ZHRGlyZWN0aXZlLnByb3RvdHlwZSwgXCJjYWNoZVNWR1wiLCB2b2lkIDApO1xuICAgIF9fZGVjb3JhdGUoW1xuICAgICAgICBJbnB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuICAgIF0sIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUsIFwic2V0U1ZHQXR0cmlidXRlc1wiLCB2b2lkIDApO1xuICAgIF9fZGVjb3JhdGUoW1xuICAgICAgICBJbnB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgQXJyYXkpXG4gICAgXSwgSW5saW5lU1ZHRGlyZWN0aXZlLnByb3RvdHlwZSwgXCJyZW1vdmVTVkdBdHRyaWJ1dGVzXCIsIHZvaWQgMCk7XG4gICAgX19kZWNvcmF0ZShbXG4gICAgICAgIElucHV0KCksXG4gICAgICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBCb29sZWFuKVxuICAgIF0sIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUsIFwiZm9yY2VFdmFsU3R5bGVzXCIsIHZvaWQgMCk7XG4gICAgX19kZWNvcmF0ZShbXG4gICAgICAgIElucHV0KCksXG4gICAgICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBTdHJpbmcpXG4gICAgXSwgSW5saW5lU1ZHRGlyZWN0aXZlLnByb3RvdHlwZSwgXCJldmFsU2NyaXB0c1wiLCB2b2lkIDApO1xuICAgIF9fZGVjb3JhdGUoW1xuICAgICAgICBJbnB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgU3RyaW5nKVxuICAgIF0sIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUsIFwiZmFsbGJhY2tJbWdVcmxcIiwgdm9pZCAwKTtcbiAgICBfX2RlY29yYXRlKFtcbiAgICAgICAgSW5wdXQoKSxcbiAgICAgICAgX19tZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIEZ1bmN0aW9uKVxuICAgIF0sIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUsIFwib25TVkdMb2FkZWRcIiwgdm9pZCAwKTtcbiAgICBfX2RlY29yYXRlKFtcbiAgICAgICAgT3V0cHV0KCksXG4gICAgICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBFdmVudEVtaXR0ZXIpXG4gICAgXSwgSW5saW5lU1ZHRGlyZWN0aXZlLnByb3RvdHlwZSwgXCJvblNWR0luc2VydGVkXCIsIHZvaWQgMCk7XG4gICAgX19kZWNvcmF0ZShbXG4gICAgICAgIE91dHB1dCgpLFxuICAgICAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRXZlbnRFbWl0dGVyKVxuICAgIF0sIElubGluZVNWR0RpcmVjdGl2ZS5wcm90b3R5cGUsIFwib25TVkdGYWlsZWRcIiwgdm9pZCAwKTtcbiAgICBJbmxpbmVTVkdEaXJlY3RpdmUgPSBfX2RlY29yYXRlKFtcbiAgICAgICAgRGlyZWN0aXZlKHtcbiAgICAgICAgICAgIHNlbGVjdG9yOiAnW2lubGluZVNWR10nLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbU1ZHQ2FjaGVTZXJ2aWNlXVxuICAgICAgICB9KSxcbiAgICAgICAgX19wYXJhbSg2LCBPcHRpb25hbCgpKSxcbiAgICAgICAgX19wYXJhbSg3LCBJbmplY3QoUExBVEZPUk1fSUQpKSxcbiAgICAgICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtFbGVtZW50UmVmLFxuICAgICAgICAgICAgVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICAgIFNWR0NhY2hlU2VydmljZSxcbiAgICAgICAgICAgIFJlbmRlcmVyMixcbiAgICAgICAgICAgIElubGluZVNWR1NlcnZpY2UsXG4gICAgICAgICAgICBJbmxpbmVTVkdDb25maWcsXG4gICAgICAgICAgICBPYmplY3RdKVxuICAgIF0sIElubGluZVNWR0RpcmVjdGl2ZSk7XG4gICAgcmV0dXJuIElubGluZVNWR0RpcmVjdGl2ZTtcbn0oKSk7XG5leHBvcnQgeyBJbmxpbmVTVkdEaXJlY3RpdmUgfTtcbiJdfQ==","import * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { NgModule } from '@angular/core';\nimport { InlineSVGComponent } from './inline-svg.component';\nimport { InlineSVGConfig } from './inline-svg.config';\nimport { InlineSVGDirective } from './inline-svg.directive';\nvar InlineSVGModule = (function () {\n function InlineSVGModule() {\n }\n InlineSVGModule_1 = InlineSVGModule;\n InlineSVGModule.forRoot = function (config) {\n return {\n ngModule: InlineSVGModule_1,\n providers: [\n { provide: InlineSVGConfig, useValue: config }\n ]\n };\n };\n var InlineSVGModule_1;\nInlineSVGModule.ɵfac = function InlineSVGModule_Factory(t) { return new (t || InlineSVGModule)(); };\nInlineSVGModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: InlineSVGModule });\nInlineSVGModule.ɵinj = ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(InlineSVGModule, { declarations: function () { return [InlineSVGDirective, InlineSVGComponent]; }, exports: function () { return [InlineSVGDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGModule, [{\n type: NgModule,\n args: [{\n declarations: [InlineSVGDirective, InlineSVGComponent],\n exports: [InlineSVGDirective],\n entryComponents: [InlineSVGComponent]\n }]\n }], function () { return []; }, null); })();\n return InlineSVGModule;\n}());\nexport { InlineSVGModule };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN2Zy5tb2R1bGUuanMiLCJzb3VyY2VzIjpbImlubGluZS1zdmcubW9kdWxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Z0RBT3dCO0FBQ3hCO0FBQ0E7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbmxpbmVTVkdDb21wb25lbnQgfSBmcm9tICcuL2lubGluZS1zdmcuY29tcG9uZW50JztcbmltcG9ydCB7IElubGluZVNWR0NvbmZpZyB9IGZyb20gJy4vaW5saW5lLXN2Zy5jb25maWcnO1xuaW1wb3J0IHsgSW5saW5lU1ZHRGlyZWN0aXZlIH0gZnJvbSAnLi9pbmxpbmUtc3ZnLmRpcmVjdGl2ZSc7XG52YXIgSW5saW5lU1ZHTW9kdWxlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBJbmxpbmVTVkdNb2R1bGUoKSB7XG4gICAgfVxuICAgIElubGluZVNWR01vZHVsZV8xID0gSW5saW5lU1ZHTW9kdWxlO1xuICAgIElubGluZVNWR01vZHVsZS5mb3JSb290ID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IElubGluZVNWR01vZHVsZV8xLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBJbmxpbmVTVkdDb25maWcsIHVzZVZhbHVlOiBjb25maWcgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgIH07XG4gICAgdmFyIElubGluZVNWR01vZHVsZV8xO1xuICAgIElubGluZVNWR01vZHVsZSA9IElubGluZVNWR01vZHVsZV8xID0gX19kZWNvcmF0ZShbXG4gICAgICAgIE5nTW9kdWxlKHtcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uczogW0lubGluZVNWR0RpcmVjdGl2ZSwgSW5saW5lU1ZHQ29tcG9uZW50XSxcbiAgICAgICAgICAgIGV4cG9ydHM6IFtJbmxpbmVTVkdEaXJlY3RpdmVdLFxuICAgICAgICAgICAgZW50cnlDb21wb25lbnRzOiBbSW5saW5lU1ZHQ29tcG9uZW50XVxuICAgICAgICB9KVxuICAgIF0sIElubGluZVNWR01vZHVsZSk7XG4gICAgcmV0dXJuIElubGluZVNWR01vZHVsZTtcbn0oKSk7XG5leHBvcnQgeyBJbmxpbmVTVkdNb2R1bGUgfTtcbiJdfQ==","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(switchMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return (source) => source.lift(new SwitchMapOperator(project));\n}\nclass SwitchMapOperator {\n constructor(project) {\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project) {\n super(destination);\n this.project = project;\n this.index = 0;\n }\n _next(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result);\n }\n _innerSub(result) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n _complete() {\n const { innerSubscription } = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n _unsubscribe() {\n this.innerSubscription = undefined;\n }\n notifyComplete() {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n}\n//# sourceMappingURL=switchMap.js.map","import { AsyncAction } from './AsyncAction';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(() => scheduler.flush(null)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n }\n}\n//# sourceMappingURL=AnimationFrameAction.js.map","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this.active = true;\n this.scheduled = undefined;\n const { actions } = this;\n let error;\n let index = -1;\n let count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport const animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","var atob = require('./atob');\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = '0' + code;\n }\n return '%' + code;\n }));\n}\n\nmodule.exports = function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try{\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n};\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nclass MatDivider {\n constructor() {\n this._vertical = false;\n this._inset = false;\n }\n /** Whether the divider is vertically aligned. */\n get vertical() { return this._vertical; }\n set vertical(value) { this._vertical = coerceBooleanProperty(value); }\n /** Whether the divider is an inset divider. */\n get inset() { return this._inset; }\n set inset(value) { this._inset = coerceBooleanProperty(value); }\n}\nMatDivider.ɵfac = function MatDivider_Factory(t) { return new (t || MatDivider)(); };\nMatDivider.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatDivider, selectors: [[\"mat-divider\"]], hostAttrs: [\"role\", \"separator\", 1, \"mat-divider\"], hostVars: 7, hostBindings: function MatDivider_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\");\n ɵngcc0.ɵɵclassProp(\"mat-divider-vertical\", ctx.vertical)(\"mat-divider-horizontal\", !ctx.vertical)(\"mat-divider-inset\", ctx.inset);\n } }, inputs: { vertical: \"vertical\", inset: \"inset\" }, decls: 0, vars: 0, template: function MatDivider_Template(rf, ctx) { }, styles: [\".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\\n\"], encapsulation: 2, changeDetection: 0 });\nMatDivider.propDecorators = {\n vertical: [{ type: Input }],\n inset: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDivider, [{\n type: Component,\n args: [{\n selector: 'mat-divider',\n host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-divider-vertical]': 'vertical',\n '[class.mat-divider-horizontal]': '!vertical',\n '[class.mat-divider-inset]': 'inset',\n 'class': 'mat-divider'\n },\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\\n\"]\n }]\n }], function () { return []; }, { vertical: [{\n type: Input\n }], inset: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatDividerModule {\n}\nMatDividerModule.ɵfac = function MatDividerModule_Factory(t) { return new (t || MatDividerModule)(); };\nMatDividerModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatDividerModule });\nMatDividerModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ imports: [[MatCommonModule], MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatDividerModule, { declarations: function () { return [MatDivider]; }, imports: function () { return [MatCommonModule]; }, exports: function () { return [MatDivider, MatCommonModule]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatDividerModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatDivider, MatCommonModule],\n declarations: [MatDivider]\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatDivider, MatDividerModule };\n\n//# sourceMappingURL=divider.js.map","/**\n * ag-grid-community - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components * @version v23.1.1\n * @link http://www.ag-grid.com/\n' * @license MIT\n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Color = /** @class */ (function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) { a = 1; }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) { // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // Using separate RegExp for the short hex notation because strings like `#abcd`\n // are matched as ['#abcd', 'ab', 'c', 'd', undefined] when the `{1,2}` quantifier is used.\n Color.fromHexString = function (str) {\n var values = str.match(Color.hexRe);\n if (values) {\n var r = parseInt(values[1], 16);\n var g = parseInt(values[2], 16);\n var b = parseInt(values[3], 16);\n var a = values[4] !== undefined ? parseInt(values[4], 16) : 255;\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n values = str.match(Color.shortHexRe);\n if (values) {\n var r = parseInt(values[1], 16);\n var g = parseInt(values[2], 16);\n var b = parseInt(values[3], 16);\n var a = values[4] !== undefined ? parseInt(values[4], 16) : 15;\n r += r * 16;\n g += g * 16;\n b += b * 16;\n a += a * 16;\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.fromRgbaString = function (str) {\n var values = str.match(Color.rgbRe);\n if (values) {\n return new Color(+values[1] / 255, +values[2] / 255, +values[3] / 255);\n }\n values = str.match(Color.rgbaRe);\n if (values) {\n return new Color(+values[1] / 255, +values[2] / 255, +values[3] / 255, +values[4]);\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n /**\n * Creates an instance of the Color class from the given HSB(A) components.\n * @param h Hue in the [0, 360) range.\n * @param s Saturation in the [0, 1] range.\n * @param b Brightness in the [0, 1] range.\n * @param alpha Opacity in the [0, 1] range. Defaults to 1 (completely opaque).\n */\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#'\n + Color.padHex(Math.round(this.r * 255).toString(16))\n + Color.padHex(Math.round(this.g * 255).toString(16))\n + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 3; }\n var components = [\n Math.round(this.r * 255),\n Math.round(this.g * 255),\n Math.round(this.b * 255)\n ];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n }\n else if (g === max) {\n H = 2.0 + rc - bc;\n }\n else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n }\n else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - (S * (1 - f)));\n switch (h >> 0) { // discard the floating point part of the number\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.hexRe = /\\s*#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?\\s*$/;\n Color.shortHexRe = /\\s*#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?\\s*$/;\n Color.rgbRe = /\\s*rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)\\s*/;\n Color.rgbaRe = /\\s*rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)\\s*/;\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// Based on https://stackoverflow.com/a/14991797\n// This will parse a delimited string into an array of arrays.\nfunction stringToArray(strData, delimiter) {\n if (delimiter === void 0) { delimiter = ','; }\n var data = [];\n var isNewline = function (char) { return char === '\\r' || char === '\\n'; };\n var insideQuotedField = false;\n var _loop_1 = function (row, column, position) {\n var previousChar = strData[position - 1];\n var currentChar = strData[position];\n var nextChar = strData[position + 1];\n var ensureDataExists = function () {\n if (!data[row]) {\n // create row if it doesn't exist\n data[row] = [];\n }\n if (!data[row][column]) {\n // create column if it doesn't exist\n data[row][column] = '';\n }\n };\n ensureDataExists();\n if (currentChar === '\"') {\n if (insideQuotedField) {\n if (nextChar === '\"') {\n // unescape double quote\n data[row][column] += '\"';\n position++;\n }\n else {\n // exit quoted field\n insideQuotedField = false;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {\n // enter quoted field\n insideQuotedField = true;\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n if (!insideQuotedField) {\n if (currentChar === delimiter) {\n // move to next column\n column++;\n ensureDataExists();\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (isNewline(currentChar)) {\n // move to next row\n column = 0;\n row++;\n ensureDataExists();\n if (currentChar === '\\r' && nextChar === '\\n') {\n // skip over second newline character if it exists\n position++;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n // add current character to current column\n data[row][column] += currentChar;\n out_row_1 = row;\n out_column_1 = column;\n out_position_1 = position;\n };\n var out_row_1, out_column_1, out_position_1;\n // iterate over each character, keep track of current row and column (of the returned array)\n for (var row = 0, column = 0, position = 0; position < strData.length; position++) {\n _loop_1(row, column, position);\n row = out_row_1;\n column = out_column_1;\n position = out_position_1;\n }\n return data;\n}\n\nvar CsvUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n stringToArray: stringToArray\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * These variables are lazy loaded, as otherwise they try and get initialised when we are loading\n * unit tests and we don't have references to window or document in the unit tests\n * from http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser\n */\nvar isSafari;\nvar isIE;\nvar isEdge;\nvar isChrome;\nvar isFirefox;\nvar isIOS;\nfunction isBrowserIE() {\n if (isIE === undefined) {\n isIE = /*@cc_on!@*/ !!document.documentMode; // At least IE6\n }\n return isIE;\n}\nfunction isBrowserEdge() {\n if (isEdge === undefined) {\n isEdge = !isBrowserIE() && !!window.StyleMedia;\n }\n return isEdge;\n}\nfunction isBrowserSafari() {\n if (isSafari === undefined) {\n // taken from https://github.com/ag-grid/ag-grid/issues/550\n var anyWindow = window;\n var hasNotification = function (p) { return p && p.toString() === '[object SafariRemoteNotification]'; };\n isSafari = Object.prototype.toString.call(anyWindow.HTMLElement).indexOf('Constructor') > 0\n || hasNotification(anyWindow.safari && anyWindow.safari.pushNotification);\n }\n return isSafari;\n}\nfunction isBrowserChrome() {\n if (isChrome === undefined) {\n var win = window;\n isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n }\n return isChrome;\n}\nfunction isBrowserFirefox() {\n if (isFirefox === undefined) {\n var win = window;\n isFirefox = typeof win.InstallTrigger !== 'undefined';\n }\n return isFirefox;\n}\nfunction isIOSUserAgent() {\n if (isIOS === undefined) {\n // taken from https://stackoverflow.com/a/58064481/1388233\n isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n // eslint-disable-next-line\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n !window.MSStream;\n }\n return isIOS;\n}\nfunction getMaxDivHeight() {\n if (!document.body) {\n return -1;\n }\n var res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n var div = document.createElement('div');\n document.body.appendChild(div);\n while (true) {\n var test_1 = res * 2;\n div.style.height = test_1 + 'px';\n if (test_1 > testUpTo || div.clientHeight !== test_1) {\n break;\n }\n else {\n res = test_1;\n }\n }\n document.body.removeChild(div);\n return res;\n}\nfunction getScrollbarWidth() {\n var body = document.body;\n var div = document.createElement('div');\n div.style.width = div.style.height = '100px';\n div.style.opacity = '0';\n div.style.overflow = 'scroll';\n div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n div.style.position = 'absolute';\n body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n // remove divs\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return width;\n}\n/** @deprecated */\nfunction hasOverflowScrolling() {\n var prefixes = ['webkit', 'moz', 'o', 'ms'];\n var div = document.createElement('div');\n var body = document.getElementsByTagName('body')[0];\n var found = false;\n var p;\n body.appendChild(div);\n div.setAttribute('style', prefixes.map(function (prefix) { return \"-\" + prefix + \"-overflow-scrolling: touch\"; }).concat('overflow-scrolling: touch').join(';'));\n var computedStyle = window.getComputedStyle(div);\n if (computedStyle.overflowScrolling === 'touch') {\n found = true;\n }\n if (!found) {\n for (var _i = 0, prefixes_1 = prefixes; _i < prefixes_1.length; _i++) {\n p = prefixes_1[_i];\n if (computedStyle[p + \"OverflowScrolling\"] === 'touch') {\n found = true;\n break;\n }\n }\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return found;\n}\n/**\n * Gets the document body width\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\nfunction getBodyWidth() {\n if (document.body) {\n return document.body.clientWidth;\n }\n if (window.innerHeight) {\n return window.innerWidth;\n }\n if (document.documentElement && document.documentElement.clientWidth) {\n return document.documentElement.clientWidth;\n }\n return -1;\n}\n/**\n * Gets the body height\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\nfunction getBodyHeight() {\n if (document.body) {\n return document.body.clientHeight;\n }\n if (window.innerHeight) {\n return window.innerHeight;\n }\n if (document.documentElement && document.documentElement.clientHeight) {\n return document.documentElement.clientHeight;\n }\n return -1;\n}\n\nvar BrowserUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isBrowserIE: isBrowserIE,\n isBrowserEdge: isBrowserEdge,\n isBrowserSafari: isBrowserSafari,\n isBrowserChrome: isBrowserChrome,\n isBrowserFirefox: isBrowserFirefox,\n isIOSUserAgent: isIOSUserAgent,\n getMaxDivHeight: getMaxDivHeight,\n getScrollbarWidth: getScrollbarWidth,\n hasOverflowScrolling: hasOverflowScrolling,\n getBodyWidth: getBodyWidth,\n getBodyHeight: getBodyHeight\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * If value is undefined, null or blank, returns null, otherwise returns the value\n * @param {T} value\n * @returns {T | null}\n */\nfunction makeNull(value) {\n return value == null || value === '' ? null : value;\n}\nfunction exists(value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (allowEmptyString || value !== '');\n}\nfunction missing(value) {\n return !exists(value);\n}\nfunction missingOrEmpty(value) {\n return !value || missing(value) || value.length === 0;\n}\nfunction toStringOrNull(value) {\n return exists(value) && value.toString ? value.toString() : null;\n}\n/** @deprecated */\nfunction referenceCompare(left, right) {\n if (left == null && right == null) {\n return true;\n }\n if (left == null && right != null) {\n return false;\n }\n if (left != null && right == null) {\n return false;\n }\n return left === right;\n}\nfunction jsonEquals(val1, val2) {\n var val1Json = val1 ? JSON.stringify(val1) : null;\n var val2Json = val2 ? JSON.stringify(val2) : null;\n return val1Json === val2Json;\n}\nfunction defaultComparator(valueA, valueB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n var valueAMissing = valueA == null;\n var valueBMissing = valueB == null;\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n // if we didn't do this, then the toString() value would be used, which would result in\n // the strings getting used instead of the numbers.\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n function doQuickCompare(a, b) {\n return (a > b ? 1 : (a < b ? -1 : 0));\n }\n if (typeof valueA === 'string') {\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n try {\n // using local compare also allows chinese comparisons\n return valueA.localeCompare(valueB);\n }\n catch (e) {\n // if something wrong with localeCompare, eg not supported\n // by browser, then just continue with the quick one\n return doQuickCompare(valueA, valueB);\n }\n }\n return doQuickCompare(valueA, valueB);\n}\nfunction find(collection, predicate, value) {\n if (collection === null || collection === undefined) {\n return null;\n }\n if (!Array.isArray(collection)) {\n var objToArray = values(collection);\n return find(objToArray, predicate, value);\n }\n var collectionAsArray = collection;\n var firstMatchingItem = null;\n for (var i = 0; i < collectionAsArray.length; i++) {\n var item = collectionAsArray[i];\n if (typeof predicate === 'string') {\n if (item[predicate] === value) {\n firstMatchingItem = item;\n break;\n }\n }\n else {\n var callback = predicate;\n if (callback(item)) {\n firstMatchingItem = item;\n break;\n }\n }\n }\n return firstMatchingItem;\n}\nfunction values(object) {\n if (object instanceof Set || object instanceof Map) {\n var values_1 = [];\n object.forEach(function (value) { return values_1.push(value); });\n return values_1;\n }\n return Object.keys(object).map(function (key) { return object[key]; });\n}\n\nvar GenericUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n makeNull: makeNull,\n exists: exists,\n missing: missing,\n missingOrEmpty: missingOrEmpty,\n toStringOrNull: toStringOrNull,\n referenceCompare: referenceCompare,\n jsonEquals: jsonEquals,\n defaultComparator: defaultComparator,\n find: find,\n values: values\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar reUnescapedHtml = /[&<>\"']/g;\n/**\n * HTML Escapes.\n */\nvar HTML_ESCAPES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n/**\n * It encodes any string in UTF-8 format\n * taken from https://github.com/mathiasbynens/utf8.js\n * @param {string} s\n * @returns {string}\n */\nfunction utf8_encode(s) {\n var stringFromCharCode = String.fromCharCode;\n function ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n var value;\n var extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n }\n else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n }\n else {\n output.push(value);\n }\n }\n return output;\n }\n function checkScalarValue(codePoint) {\n if (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n throw Error('Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n ' is not a scalar value');\n }\n }\n function createByte(codePoint, shift) {\n return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n }\n function encodeCodePoint(codePoint) {\n if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n return stringFromCharCode(codePoint);\n }\n var symbol = '';\n if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n }\n else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n checkScalarValue(codePoint);\n symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n symbol += createByte(codePoint, 6);\n }\n else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n symbol += createByte(codePoint, 12);\n symbol += createByte(codePoint, 6);\n }\n symbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n return symbol;\n }\n var codePoints = ucs2decode(s);\n var length = codePoints.length;\n var index = -1;\n var codePoint;\n var byteString = '';\n while (++index < length) {\n codePoint = codePoints[index];\n byteString += encodeCodePoint(codePoint);\n }\n return byteString;\n}\n/**\n * Converts a camelCase string into hyphenated string\n * from https://gist.github.com/youssman/745578062609e8acac9f\n * @param {string} str\n * @return {string}\n */\nfunction camelCaseToHyphen(str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });\n}\n/**\n * Converts a hyphenated string into camelCase string\n * from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase\n * @param {string} str\n * @return {string}\n */\nfunction hyphenToCamelCase(str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n}\nfunction capitalise(str) {\n return str[0].toUpperCase() + str.substr(1).toLowerCase();\n}\nfunction escape(toEscape) {\n return toEscape == null || !toEscape.replace ? toEscape : toEscape.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n}\n/**\n * Converts a camelCase string into regular text\n * from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n * @param {string} camelCase\n * @return {string}\n */\nfunction camelCaseToHumanText(camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;\n var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');\n return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n}\n\nvar StringUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n utf8_encode: utf8_encode,\n camelCaseToHyphen: camelCaseToHyphen,\n hyphenToCamelCase: hyphenToCamelCase,\n capitalise: capitalise,\n escape: escape,\n camelCaseToHumanText: camelCaseToHumanText\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction addCssClass(element, className) {\n if (!className || className.length === 0) {\n return;\n }\n if (className.indexOf(' ') >= 0) {\n className.split(' ').forEach(function (value) { return addCssClass(element, value); });\n return;\n }\n if (element.classList) {\n element.classList.add(className);\n }\n else if (element.className && element.className.length > 0) {\n var cssClasses = element.className.split(' ');\n if (cssClasses.indexOf(className) < 0) {\n cssClasses.push(className);\n element.setAttribute('class', cssClasses.join(' '));\n }\n }\n else {\n // do not use element.classList = className here, it will cause\n // a read-only assignment error on some browsers (IE/Edge).\n element.setAttribute('class', className);\n }\n return element;\n}\nfunction removeCssClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n }\n else if (element.className && element.className.length > 0) {\n var newClassName = element.className.split(' ').filter(function (c) { return c !== className; }).join(' ');\n element.setAttribute('class', newClassName);\n }\n}\nfunction addOrRemoveCssClass(element, className, addOrRemove) {\n if (addOrRemove) {\n addCssClass(element, className);\n }\n else {\n removeCssClass(element, className);\n }\n}\n/**\n * This method adds a class to an element and remove that class from all siblings.\n * Useful for toggling state.\n * @param {HTMLElement} element The element to receive the class\n * @param {string} elementClass The class to be assigned to the element\n * @param {boolean} otherElementClass The class to be assigned to siblings of the element, but not the element itself\n */\nfunction radioCssClass(element, elementClass, otherElementClass) {\n var parent = element.parentElement;\n var sibling = parent.firstChild;\n while (sibling) {\n if (elementClass) {\n addOrRemoveCssClass(sibling, elementClass, sibling === element);\n }\n if (otherElementClass) {\n addOrRemoveCssClass(sibling, otherElementClass, sibling !== element);\n }\n sibling = sibling.nextSibling;\n }\n}\nfunction containsClass(element, className) {\n if (element.classList) {\n // for modern browsers\n return element.classList.contains(className);\n }\n if (element.className) {\n // for older browsers, check against the string of class names\n // if only one class, can check for exact match\n var onlyClass = element.className === className;\n // if many classes, check for class name, we have to pad with ' ' to stop other\n // class names that are a substring of this class\n var contains = element.className.indexOf(' ' + className + ' ') >= 0;\n // the padding above then breaks when it's the first or last class names\n var startsWithClass = element.className.indexOf(className + ' ') === 0;\n var endsWithClass = element.className.lastIndexOf(' ' + className) === (element.className.length - className.length - 1);\n return onlyClass || contains || startsWithClass || endsWithClass;\n }\n // if item is not a node\n return false;\n}\nfunction setDisplayed(element, displayed) {\n addOrRemoveCssClass(element, 'ag-hidden', !displayed);\n}\nfunction setVisible(element, visible) {\n addOrRemoveCssClass(element, 'ag-invisible', !visible);\n}\nfunction isElementChildOfClass(element, cls, maxNest) {\n var counter = 0;\n while (element) {\n if (containsClass(element, cls)) {\n return true;\n }\n element = element.parentElement;\n if (maxNest && ++counter > maxNest) {\n break;\n }\n }\n return false;\n}\nfunction getElementSize(el) {\n var _a = window.getComputedStyle(el), height = _a.height, width = _a.width, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, paddingBottom = _a.paddingBottom, paddingLeft = _a.paddingLeft, marginTop = _a.marginTop, marginRight = _a.marginRight, marginBottom = _a.marginBottom, marginLeft = _a.marginLeft, boxSizing = _a.boxSizing;\n return {\n height: parseFloat(height),\n width: parseFloat(width),\n paddingTop: parseFloat(paddingTop),\n paddingRight: parseFloat(paddingRight),\n paddingBottom: parseFloat(paddingBottom),\n paddingLeft: parseFloat(paddingLeft),\n marginTop: parseFloat(marginTop),\n marginRight: parseFloat(marginRight),\n marginBottom: parseFloat(marginBottom),\n marginLeft: parseFloat(marginLeft),\n boxSizing: boxSizing\n };\n}\nfunction getInnerHeight(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n}\nfunction getInnerWidth(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n}\nfunction getAbsoluteHeight(el) {\n var size = getElementSize(el);\n var marginRight = size.marginBottom + size.marginTop;\n return Math.ceil(el.offsetHeight + marginRight);\n}\nfunction getAbsoluteWidth(el) {\n var size = getElementSize(el);\n var marginWidth = size.marginLeft + size.marginRight;\n return Math.ceil(el.offsetWidth + marginWidth);\n}\nfunction getScrollLeft(element, rtl) {\n var scrollLeft = element.scrollLeft;\n if (rtl) {\n // Absolute value - for FF that reports RTL scrolls in negative numbers\n scrollLeft = Math.abs(scrollLeft);\n // Get Chrome to return the same value as well\n if (isBrowserChrome()) {\n scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n }\n }\n return scrollLeft;\n}\nfunction setScrollLeft(element, value, rtl) {\n if (rtl) {\n // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n if (isBrowserSafari() || isBrowserChrome()) {\n value = element.scrollWidth - element.clientWidth - value;\n }\n // Firefox uses negative numbers when doing RTL scrolling\n if (isBrowserFirefox()) {\n value *= -1;\n }\n }\n element.scrollLeft = value;\n}\nfunction clearElement(el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n/** @deprecated */\nfunction removeElement(parent, cssSelector) {\n removeFromParent(parent.querySelector(cssSelector));\n}\nfunction removeFromParent(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction isVisible(element) {\n return element.offsetParent !== null;\n}\n/**\n * Loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n * @param {string} template\n * @returns {HTMLElement}\n */\nfunction loadTemplate(template) {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = (template || '').trim();\n return tempDiv.firstChild;\n}\nfunction appendHtml(eContainer, htmlTemplate) {\n if (eContainer.lastChild) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n // we put the items at the start, so new items appear underneath old items,\n // so when expanding/collapsing groups, the new rows don't go on top of the\n // rows below that are moving our of the way\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n eContainer.innerHTML = htmlTemplate;\n }\n}\n/** @deprecated */\nfunction getElementAttribute(element, attributeName) {\n if (element.attributes && element.attributes[attributeName]) {\n var attribute = element.attributes[attributeName];\n return attribute.value;\n }\n return null;\n}\nfunction offsetHeight(element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n}\nfunction offsetWidth(element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n}\nfunction ensureDomOrder(eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n // otherwise put at start\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eChild);\n }\n }\n}\nfunction setDomChildOrder(eContainer, orderedChildren) {\n for (var i = 0; i < orderedChildren.length; i++) {\n var correctCellAtIndex = orderedChildren[i];\n var actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n}\nfunction insertTemplateWithDomOrder(eContainer, htmlTemplate, eChildBefore) {\n var res;\n if (eChildBefore) {\n // if previous element exists, just slot in after the previous element\n eChildBefore.insertAdjacentHTML('afterend', htmlTemplate);\n res = eChildBefore.nextSibling;\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.innerHTML = htmlTemplate;\n }\n res = eContainer.firstChild;\n }\n return res;\n}\n/** @deprecated */\nfunction prependDC(parent, documentFragment) {\n if (exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n}\nfunction addStylesToElement(eElement, styles) {\n if (!styles) {\n return;\n }\n Object.keys(styles).forEach(function (key) {\n var keyCamelCase = hyphenToCamelCase(key);\n if (keyCamelCase) {\n eElement.style[keyCamelCase] = styles[key];\n }\n });\n}\nfunction isHorizontalScrollShowing(element) {\n return element.clientWidth < element.scrollWidth;\n}\nfunction isVerticalScrollShowing(element) {\n return element.clientHeight < element.scrollHeight;\n}\nfunction setElementWidth(element, width) {\n if (width === 'flex') {\n element.style.width = null;\n element.style.minWidth = null;\n element.style.maxWidth = null;\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedWidth(element, width);\n }\n}\nfunction setFixedWidth(element, width) {\n width = formatSize(width);\n element.style.width = width.toString();\n element.style.maxWidth = width.toString();\n element.style.minWidth = width.toString();\n}\nfunction setElementHeight(element, height) {\n if (height === 'flex') {\n element.style.height = null;\n element.style.minHeight = null;\n element.style.maxHeight = null;\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedHeight(element, height);\n }\n}\nfunction setFixedHeight(element, height) {\n height = formatSize(height);\n element.style.height = height.toString();\n element.style.maxHeight = height.toString();\n element.style.minHeight = height.toString();\n}\nfunction formatSize(size) {\n if (typeof size === 'number') {\n return size + \"px\";\n }\n return size;\n}\n/**\n * Returns true if it is a DOM node\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @return {boolean}\n */\nfunction isNode(o) {\n return (typeof Node === 'function'\n ? o instanceof Node\n : o && typeof o === 'object' && typeof o.nodeType === 'number' && typeof o.nodeName === 'string');\n}\n//\n/**\n * Returns true if it is a DOM element\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @returns {boolean}\n */\nfunction isElement(o) {\n return (typeof HTMLElement === 'function'\n ? o instanceof HTMLElement //DOM2\n : o && typeof o === 'object' && o !== null && o.nodeType === 1 && typeof o.nodeName === 'string');\n}\nfunction isNodeOrElement(o) {\n return isNode(o) || isElement(o);\n}\n/**\n * Makes a copy of a node list into a list\n * @param {NodeList} nodeList\n * @returns {Node[]}\n */\nfunction copyNodeList(nodeList) {\n var childCount = nodeList ? nodeList.length : 0;\n var res = [];\n for (var i = 0; i < childCount; i++) {\n res.push(nodeList[i]);\n }\n return res;\n}\nfunction iterateNamedNodeMap(map, callback) {\n if (!map) {\n return;\n }\n for (var i = 0; i < map.length; i++) {\n var attr = map[i];\n callback(attr.name, attr.value);\n }\n}\n/** @deprecated */\nfunction setCheckboxState(eCheckbox, state) {\n if (typeof state === 'boolean') {\n eCheckbox.checked = state;\n eCheckbox.indeterminate = false;\n }\n else {\n // isNodeSelected returns back undefined if it's a group and the children\n // are a mix of selected and unselected\n eCheckbox.indeterminate = true;\n }\n}\n\nvar DomUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n addCssClass: addCssClass,\n removeCssClass: removeCssClass,\n addOrRemoveCssClass: addOrRemoveCssClass,\n radioCssClass: radioCssClass,\n containsClass: containsClass,\n setDisplayed: setDisplayed,\n setVisible: setVisible,\n isElementChildOfClass: isElementChildOfClass,\n getElementSize: getElementSize,\n getInnerHeight: getInnerHeight,\n getInnerWidth: getInnerWidth,\n getAbsoluteHeight: getAbsoluteHeight,\n getAbsoluteWidth: getAbsoluteWidth,\n getScrollLeft: getScrollLeft,\n setScrollLeft: setScrollLeft,\n clearElement: clearElement,\n removeElement: removeElement,\n removeFromParent: removeFromParent,\n isVisible: isVisible,\n loadTemplate: loadTemplate,\n appendHtml: appendHtml,\n getElementAttribute: getElementAttribute,\n offsetHeight: offsetHeight,\n offsetWidth: offsetWidth,\n ensureDomOrder: ensureDomOrder,\n setDomChildOrder: setDomChildOrder,\n insertTemplateWithDomOrder: insertTemplateWithDomOrder,\n prependDC: prependDC,\n addStylesToElement: addStylesToElement,\n isHorizontalScrollShowing: isHorizontalScrollShowing,\n isVerticalScrollShowing: isVerticalScrollShowing,\n setElementWidth: setElementWidth,\n setFixedWidth: setFixedWidth,\n setElementHeight: setElementHeight,\n setFixedHeight: setFixedHeight,\n formatSize: formatSize,\n isNode: isNode,\n isElement: isElement,\n isNodeOrElement: isNodeOrElement,\n copyNodeList: copyNodeList,\n iterateNamedNodeMap: iterateNamedNodeMap,\n setCheckboxState: setCheckboxState\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction iterateObject(object, callback) {\n if (!object || missing(object)) {\n return;\n }\n if (Array.isArray(object)) {\n object.forEach(function (value, index) { return callback(\"\" + index, value); });\n }\n else {\n Object.keys(object).forEach(function (key) { return callback(key, object[key]); });\n }\n}\nfunction cloneObject(object) {\n var copy = {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n copy[key] = value;\n }\n return copy;\n}\nfunction deepCloneObject(object) {\n return JSON.parse(JSON.stringify(object));\n}\nfunction getProperty(object, key) {\n return object[key];\n}\nfunction setProperty(object, key, value) {\n object[key] = value;\n}\n/**\n * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with\n * a value of `undefined`.\n */\nfunction copyPropertiesIfPresent(source, target) {\n var properties = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n properties[_i - 2] = arguments[_i];\n }\n properties.forEach(function (p) { return copyPropertyIfPresent(source, target, p); });\n}\n/**\n * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a\n * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.\n */\nfunction copyPropertyIfPresent(source, target, property, transform) {\n var value = getProperty(source, property);\n if (value !== undefined) {\n setProperty(target, property, transform ? transform(value) : value);\n }\n}\nfunction getAllKeysInObjects(objects) {\n var allValues = {};\n objects.filter(function (obj) { return obj != null; }).forEach(function (obj) {\n Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n });\n return Object.keys(allValues);\n}\nfunction mergeDeep(dest, source, copyUndefined) {\n if (copyUndefined === void 0) { copyUndefined = true; }\n if (!exists(source)) {\n return;\n }\n iterateObject(source, function (key, newValue) {\n var oldValue = dest[key];\n if (oldValue === newValue) {\n return;\n }\n if (typeof oldValue === 'object' && typeof newValue === 'object' && !Array.isArray(oldValue)) {\n mergeDeep(oldValue, newValue);\n }\n else if (copyUndefined || newValue !== undefined) {\n dest[key] = newValue;\n }\n });\n}\nfunction assign(object) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n sources.forEach(function (source) {\n if (exists(source)) {\n iterateObject(source, function (key, value) {\n object[key] = value;\n });\n }\n });\n return object;\n}\nfunction missingOrEmptyObject(value) {\n return missing(value) || Object.keys(value).length === 0;\n}\nfunction get(source, expression, defaultValue) {\n if (source == null) {\n return defaultValue;\n }\n var keys = expression.split('.');\n var objectToRead = source;\n while (keys.length > 1) {\n objectToRead = objectToRead[keys.shift()];\n if (objectToRead == null) {\n return defaultValue;\n }\n }\n var value = objectToRead[keys[0]];\n return value != null ? value : defaultValue;\n}\nfunction set(target, expression, value) {\n if (target == null) {\n return;\n }\n var keys = expression.split('.');\n var objectToUpdate = target;\n while (keys.length > 1) {\n objectToUpdate = objectToUpdate[keys.shift()];\n if (objectToUpdate == null) {\n return;\n }\n }\n objectToUpdate[keys[0]] = value;\n}\nfunction deepFreeze(object) {\n Object.freeze(object);\n values(object).filter(function (v) { return v != null; }).forEach(function (v) {\n if (typeof v === 'object' || typeof v === 'function') {\n deepFreeze(v);\n }\n });\n return object;\n}\nfunction getValueUsingField(data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n // if no '.', then it's not a deep value\n if (!fieldContainsDots) {\n return data[field];\n }\n // otherwise it is a deep value, so need to dig for it\n var fields = field.split('.');\n var currentObject = data;\n for (var i = 0; i < fields.length; i++) {\n currentObject = currentObject[fields[i]];\n if (missing(currentObject)) {\n return null;\n }\n }\n return currentObject;\n}\n\nvar ObjectUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n iterateObject: iterateObject,\n cloneObject: cloneObject,\n deepCloneObject: deepCloneObject,\n getProperty: getProperty,\n setProperty: setProperty,\n copyPropertiesIfPresent: copyPropertiesIfPresent,\n copyPropertyIfPresent: copyPropertyIfPresent,\n getAllKeysInObjects: getAllKeysInObjects,\n mergeDeep: mergeDeep,\n assign: assign,\n missingOrEmptyObject: missingOrEmptyObject,\n get: get,\n set: set,\n deepFreeze: deepFreeze,\n getValueUsingField: getValueUsingField\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/** @deprecated */\nfunction getNameOfClass(theClass) {\n var funcNameRegex = /function (.{1,})\\(/;\n var funcAsString = theClass.toString();\n var results = funcNameRegex.exec(funcAsString);\n return results && results.length > 1 ? results[1] : \"\";\n}\nfunction findLineByLeastSquares(values) {\n var len = values.length;\n var maxDecimals = 0;\n if (len <= 1) {\n return values;\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (Math.floor(value) === value) {\n continue;\n }\n maxDecimals = Math.max(maxDecimals, value.toString().split('.')[1].length);\n }\n var sum_x = 0;\n var sum_y = 0;\n var sum_xy = 0;\n var sum_xx = 0;\n var y = 0;\n for (var x = 0; x < len; x++) {\n y = values[x];\n sum_x += x;\n sum_y += y;\n sum_xx += x * x;\n sum_xy += x * y;\n }\n var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);\n var b = (sum_y / len) - (m * sum_x) / len;\n var result = [];\n for (var x = 0; x <= len; x++) {\n result.push(parseFloat((x * m + b).toFixed(maxDecimals)));\n }\n return result;\n}\n/**\n * Converts a CSS object into string\n * @param {Object} stylesToUse an object eg: {color: 'black', top: '25px'}\n * @return {string} A string like \"color: black; top: 25px;\" for html\n */\nfunction cssStyleObjectToMarkup(stylesToUse) {\n if (!stylesToUse) {\n return '';\n }\n var resParts = [];\n iterateObject(stylesToUse, function (styleKey, styleValue) {\n var styleKeyDashed = camelCaseToHyphen(styleKey);\n resParts.push(styleKeyDashed + \": \" + styleValue + \";\");\n });\n return resParts.join(' ');\n}\n/**\n * Displays a message to the browser. this is useful in iPad, where you can't easily see the console.\n * so the javascript code can use this to give feedback. this is NOT intended to be called in production.\n * it is intended the ag-Grid developer calls this to troubleshoot, but then takes out the calls before\n * checking in.\n * @param {string} msg\n */\nfunction message(msg) {\n var eMessage = document.createElement('div');\n var eBox = document.querySelector('#__ag__message');\n eMessage.innerHTML = msg;\n if (!eBox) {\n var template = \"
\";\n eBox = loadTemplate(template);\n if (document.body) {\n document.body.appendChild(eBox);\n }\n }\n eBox.insertBefore(eMessage, eBox.children[0]);\n}\n/**\n * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n * @param {Promise} cellRendererPromise\n * @param {HTMLElement} eTarget\n */\nfunction bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n cellRendererPromise.then(function (cellRenderer) {\n var gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui === 'object') {\n eTarget.appendChild(gui);\n }\n else {\n eTarget.innerHTML = gui;\n }\n }\n });\n}\n\nvar GeneralUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getNameOfClass: getNameOfClass,\n findLineByLeastSquares: findLineByLeastSquares,\n cssStyleObjectToMarkup: cssStyleObjectToMarkup,\n message: message,\n bindCellRendererToHtmlElement: bindCellRendererToHtmlElement\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction firstExistingValue() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (exists(value)) {\n return value;\n }\n }\n return null;\n}\n/** @deprecated */\nfunction anyExists(values) {\n return values && firstExistingValue(values) != null;\n}\nfunction existsAndNotEmpty(value) {\n return value != null && value.length > 0;\n}\nfunction last(arr) {\n if (!arr || !arr.length) {\n return undefined;\n }\n return arr[arr.length - 1];\n}\nfunction areEqual(a, b, comparator) {\n if (a == null && b == null) {\n return true;\n }\n return a != null &&\n b != null &&\n a.length === b.length &&\n every(a, function (value, index) { return comparator ? comparator(value, b[index]) : b[index] === value; });\n}\n/** @deprecated */\nfunction compareArrays(array1, array2) {\n return areEqual(array1, array2);\n}\n/** @deprecated */\nfunction shallowCompare(arr1, arr2) {\n return areEqual(arr1, arr2);\n}\nfunction sortNumerically(array) {\n return array.sort(function (a, b) { return a - b; });\n}\nfunction removeRepeatsFromArray(array, object) {\n if (!array) {\n return;\n }\n for (var index = array.length - 2; index >= 0; index--) {\n var thisOneMatches = array[index] === object;\n var nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n}\nfunction removeFromArray(array, object) {\n var index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction removeAllFromArray(array, toRemove) {\n forEach(toRemove, function (item) { return removeFromArray(array, item); });\n}\nfunction insertIntoArray(array, object, toIndex) {\n array.splice(toIndex, 0, object);\n}\nfunction insertArrayIntoArray(dest, src, toIndex) {\n if (dest == null || src == null) {\n return;\n }\n // put items in backwards, otherwise inserted items end up in reverse order\n for (var i = src.length - 1; i >= 0; i--) {\n var item = src[i];\n insertIntoArray(dest, item, toIndex);\n }\n}\nfunction moveInArray(array, objectsToMove, toIndex) {\n // first take out items from the array\n removeAllFromArray(array, objectsToMove);\n // now add the objects, in same order as provided to us, that means we start at the end\n // as the objects will be pushed to the right as they are inserted\n forEach(objectsToMove.slice().reverse(), function (obj) { return insertIntoArray(array, obj, toIndex); });\n}\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\nfunction flatten(arrayOfArrays) {\n return [].concat.apply([], arrayOfArrays);\n}\nfunction pushAll(target, source) {\n if (source == null || target == null) {\n return;\n }\n forEach(source, function (value) { return target.push(value); });\n}\nfunction toStrings(array) {\n return map(array, toStringOrNull);\n}\nfunction findIndex(collection, predicate) {\n for (var i = 0; i < collection.length; i++) {\n if (predicate(collection[i], i, collection)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * The implementation of Array.prototype.every in browsers is always slower than just using a simple for loop, so\n * use this for improved performance.\n * https://jsbench.me/bek91dtit8/\n */\nfunction every(list, predicate) {\n if (list == null) {\n return true;\n }\n for (var i = 0; i < list.length; i++) {\n if (!predicate(list[i], i)) {\n return false;\n }\n }\n return true;\n}\n/**\n * The implementation of Array.prototype.some in browsers is always slower than just using a simple for loop, so\n * use this for improved performance.\n * https://jsbench.me/5dk91e4tmt/\n */\nfunction some(list, predicate) {\n if (list == null) {\n return false;\n }\n for (var i = 0; i < list.length; i++) {\n if (predicate(list[i], i)) {\n return true;\n }\n }\n return false;\n}\n/**\n * The implementation of Array.prototype.forEach in browsers is often slower than just using a simple for loop, so\n * use this for improved performance.\n * https://jsbench.me/apk91elt8a/\n */\nfunction forEach(list, action) {\n if (list == null) {\n return;\n }\n for (var i = 0; i < list.length; i++) {\n action(list[i], i);\n }\n}\n/**\n * The implementation of Array.prototype.map in browsers is generally the same as just using a simple for loop. However,\n * Firefox does exhibit some difference, and this performs no worse in other browsers, so use this if you want improved\n * performance.\n * https://jsbench.me/njk91ez8pc/\n */\nfunction map(list, process) {\n if (list == null) {\n return null;\n }\n var mapped = [];\n for (var i = 0; i < list.length; i++) {\n mapped.push(process(list[i], i));\n }\n return mapped;\n}\n/**\n * The implementation of Array.prototype.filter in browsers is always slower than just using a simple for loop, so\n * use this for improved performance.\n * https://jsbench.me/7bk91fk08c/\n */\nfunction filter(list, predicate) {\n if (list == null) {\n return null;\n }\n var filtered = [];\n for (var i = 0; i < list.length; i++) {\n if (predicate(list[i], i)) {\n filtered.push(list[i]);\n }\n }\n return filtered;\n}\n/**\n * The implementation of Array.prototype.reduce in browsers is generally the same as just using a simple for loop. However,\n * Chrome does exhibit some difference, and this performs no worse in other browsers, so use this if you want improved\n * performance.\n * https://jsbench.me/7vk92n6u1f/\n */\nfunction reduce(list, step, initial) {\n if (list == null || initial == null) {\n return null;\n }\n var result = initial;\n for (var i = 0; i < list.length; i++) {\n result = step(result, list[i], i);\n }\n return result;\n}\n/** @deprecated */\nfunction forEachSnapshotFirst(list, callback) {\n if (!list) {\n return;\n }\n var arrayCopy = list.slice(0);\n arrayCopy.forEach(callback);\n}\n\nvar ArrayUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n firstExistingValue: firstExistingValue,\n anyExists: anyExists,\n existsAndNotEmpty: existsAndNotEmpty,\n last: last,\n areEqual: areEqual,\n compareArrays: compareArrays,\n shallowCompare: shallowCompare,\n sortNumerically: sortNumerically,\n removeRepeatsFromArray: removeRepeatsFromArray,\n removeFromArray: removeFromArray,\n removeAllFromArray: removeAllFromArray,\n insertIntoArray: insertIntoArray,\n insertArrayIntoArray: insertArrayIntoArray,\n moveInArray: moveInArray,\n includes: includes,\n flatten: flatten,\n pushAll: pushAll,\n toStrings: toStrings,\n findIndex: findIndex,\n every: every,\n some: some,\n forEach: forEach,\n map: map,\n filter: filter,\n reduce: reduce,\n forEachSnapshotFirst: forEachSnapshotFirst\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction padStart(value, totalStringSize) {\n var asString = \"\" + value;\n while (asString.length < totalStringSize) {\n asString = \"0\" + asString;\n }\n return asString;\n}\nfunction createArrayOfNumbers(first, last) {\n var result = [];\n for (var i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n}\n/**\n * Check if a value is numeric\n * from http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers\n * @param {any} value\n * @return {boolean}\n */\nfunction isNumeric(value) {\n return value !== '' && !isNaN(parseFloat(value)) && isFinite(value);\n}\nfunction getMaxSafeInteger() {\n // eslint-disable-next-line\n return Number.MAX_SAFE_INTEGER || 9007199254740991;\n}\nfunction cleanNumber(value) {\n if (typeof value === 'string') {\n value = parseInt(value, 10);\n }\n if (typeof value === 'number') {\n return Math.floor(value);\n }\n else {\n return null;\n }\n}\nfunction decToHex(number, bytes) {\n var hex = '';\n for (var i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n}\nfunction formatNumberTwoDecimalPlacesAndCommas(value) {\n if (typeof value !== 'number') {\n return '';\n }\n return formatNumberCommas(Math.round(value * 100) / 100);\n}\n/**\n * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})\n * puts in decimal places in IE, so we use this method instead\n * from: http://blog.tompawlak.org/number-currency-formatting-javascript\n * @param {number} value\n * @returns {string}\n */\nfunction formatNumberCommas(value) {\n if (typeof value !== 'number') {\n return '';\n }\n return value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n}\nfunction sum(values) {\n return values == null ? null : values.reduce(function (total, value) { return total + value; }, 0);\n}\n\nvar NumberUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n padStart: padStart,\n createArrayOfNumbers: createArrayOfNumbers,\n isNumeric: isNumeric,\n getMaxSafeInteger: getMaxSafeInteger,\n cleanNumber: cleanNumber,\n decToHex: decToHex,\n formatNumberTwoDecimalPlacesAndCommas: formatNumberTwoDecimalPlacesAndCommas,\n formatNumberCommas: formatNumberCommas,\n sum: sum\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Serialises a Date to a string of format `yyyy-MM-dd HH:mm:ss`.\n * An alternative separator can be provided to be used instead of hyphens.\n * @param date The date to serialise\n * @param includeTime Whether to include the time in the serialised string\n * @param separator The separator to use between date parts\n */\nfunction serialiseDate(date, includeTime, separator) {\n if (includeTime === void 0) { includeTime = true; }\n if (separator === void 0) { separator = '-'; }\n if (!date) {\n return null;\n }\n var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function (part) { return padStart(part, 2); }).join(separator);\n if (includeTime) {\n serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function (part) { return padStart(part, 2); }).join(':');\n }\n return serialised;\n}\n/**\n * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`\n */\nfunction parseDateTimeFromString(value) {\n if (!value) {\n return null;\n }\n var _a = value.split(' '), dateStr = _a[0], timeStr = _a[1];\n if (!dateStr) {\n return null;\n }\n var fields = dateStr.split('-').map(function (f) { return parseInt(f, 10); });\n if (fields.filter(function (f) { return !isNaN(f); }).length !== 3) {\n return null;\n }\n var year = fields[0], month = fields[1], day = fields[2];\n var date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day) {\n // date was not parsed as expected so must have been invalid\n return null;\n }\n if (!timeStr || timeStr === '00:00:00') {\n return date;\n }\n var _b = timeStr.split(':').map(function (part) { return parseInt(part, 10); }), hours = _b[0], minutes = _b[1], seconds = _b[2];\n if (hours >= 0 && hours < 24) {\n date.setHours(hours);\n }\n if (minutes >= 0 && minutes < 60) {\n date.setMinutes(minutes);\n }\n if (seconds >= 0 && seconds < 60) {\n date.setSeconds(seconds);\n }\n return date;\n}\n\nvar DateUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n serialiseDate: serialiseDate,\n parseDateTimeFromString: parseDateTimeFromString\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\nvar PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\nvar OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];\nvar supports = {};\n/**\n * a user once raised an issue - they said that when you opened a popup (eg context menu)\n * and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n * to get around this, we have a pattern to stop propagation for the purposes of ag-Grid,\n * but we still let the event pass back to the body.\n * @param {Event} event\n */\nfunction stopPropagationForAgGrid(event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction isStopPropagationForAgGrid(event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nvar isEventSupported = (function () {\n var tags = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img'\n };\n var isEventSupported = function (eventName) {\n if (typeof supports[eventName] === 'boolean') {\n return supports[eventName];\n }\n var el = document.createElement(tags[eventName] || 'div');\n eventName = 'on' + eventName;\n var isSupported = (eventName in el);\n if (!isSupported) {\n el.setAttribute(eventName, 'return;');\n isSupported = typeof el[eventName] == 'function';\n }\n el = null;\n return supports[eventName] = isSupported;\n };\n return isEventSupported;\n})();\nfunction getCellCompForEvent(gridOptionsWrapper, event) {\n var sourceElement = getTarget(event);\n while (sourceElement) {\n var renderedCell = gridOptionsWrapper.getDomData(sourceElement, 'cellComp');\n if (renderedCell) {\n return renderedCell;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n}\n/**\n * @deprecated\n * Adds all type of change listeners to an element, intended to be a text field\n * @param {HTMLElement} element\n * @param {EventListener} listener\n */\nfunction addChangeListener(element, listener) {\n element.addEventListener('changed', listener);\n element.addEventListener('paste', listener);\n element.addEventListener('input', listener);\n // IE doesn't fire changed for special keys (eg delete, backspace), so need to\n // listen for this further ones\n element.addEventListener('keydown', listener);\n element.addEventListener('keyup', listener);\n}\n/**\n * srcElement is only available in IE. In all other browsers it is target\n * http://stackoverflow.com/questions/5301643/how-can-i-make-event-srcelement-work-in-firefox-and-what-does-it-mean\n * @param {Event} event\n * @returns {Element}\n */\nfunction getTarget(event) {\n var eventNoType = event;\n return eventNoType.target || eventNoType.srcElement;\n}\nfunction isElementInEventPath(element, event) {\n if (!event || !element) {\n return false;\n }\n return getEventPath(event).indexOf(element) >= 0;\n}\nfunction createEventPath(event) {\n var res = [];\n var pointer = getTarget(event);\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n}\n/**\n * firefox doesn't have event.path set, or any alternative to it, so we hack\n * it in. this is needed as it's to late to work out the path when the item is\n * removed from the dom. used by MouseEventService, where it works out if a click\n * was from the current grid, or a detail grid (master / detail).\n * @param {Event} event\n */\nfunction addAgGridEventPath(event) {\n event.__agGridEventPath = getEventPath(event);\n}\n/**\n * Gets the path for an Event.\n * https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js\n * https://developer.mozilla.org/en-US/docs/Web/API/Event\n * @param {Event} event\n * @returns {EventTarget[]}\n */\nfunction getEventPath(event) {\n var eventNoType = event;\n if (eventNoType.deepPath) {\n // IE supports deep path\n return eventNoType.deepPath();\n }\n if (eventNoType.path) {\n // Chrome supports path\n return eventNoType.path;\n }\n if (eventNoType.composedPath) {\n // Firefox supports composePath\n return eventNoType.composedPath();\n }\n if (eventNoType.__agGridEventPath) {\n // Firefox supports composePath\n return eventNoType.__agGridEventPath;\n }\n // and finally, if none of the above worked,\n // we create the path ourselves\n return createEventPath(event);\n}\nfunction addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n var isPassive = includes(PASSIVE_EVENTS, event);\n var isOutsideAngular = includes(OUTSIDE_ANGULAR_EVENTS, event);\n var options = isPassive ? { passive: true } : undefined;\n if (isOutsideAngular) {\n // this happens in certain scenarios where I believe the user must be destroying the grid somehow but continuing\n // for it to be used\n // don't fall through to the else part either - just don't add the listener\n if (frameworkOverrides && frameworkOverrides.addEventListenerOutsideAngular) {\n frameworkOverrides.addEventListenerOutsideAngular(eElement, event, listener, options);\n }\n }\n else {\n eElement.addEventListener(event, listener, options);\n }\n}\n\nvar EventUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n stopPropagationForAgGrid: stopPropagationForAgGrid,\n isStopPropagationForAgGrid: isStopPropagationForAgGrid,\n isEventSupported: isEventSupported,\n getCellCompForEvent: getCellCompForEvent,\n addChangeListener: addChangeListener,\n getTarget: getTarget,\n isElementInEventPath: isElementInEventPath,\n createEventPath: createEventPath,\n addAgGridEventPath: addAgGridEventPath,\n getEventPath: getEventPath,\n addSafePassiveEventListener: addSafePassiveEventListener\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar FUNCTION_STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar FUNCTION_ARGUMENT_NAMES = /([^\\s,]+)/g;\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\n/** @deprecated */\nfunction getFunctionParameters(func) {\n var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');\n return fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES) || [];\n}\nfunction isFunction(val) {\n return !!(val && val.constructor && val.call && val.apply);\n}\nfunction executeInAWhile(funcs) {\n executeAfter(funcs, 400);\n}\nfunction executeNextVMTurn(funcs) {\n executeAfter(funcs, 0);\n}\nfunction executeAfter(funcs, milliseconds) {\n if (milliseconds === void 0) { milliseconds = 0; }\n if (funcs.length > 0) {\n window.setTimeout(function () { return funcs.forEach(function (func) { return func(); }); }, milliseconds);\n }\n}\n/**\n * from https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript\n * @param {Function} func The function to be debounced\n * @param {number} wait The time in ms to debounce\n * @param {boolean} immediate If it should run immediately or wait for the initial debounce delay\n * @return {Function} The debounced function\n */\nfunction debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n // 'private' variable for instance\n // The returned function will be able to reference this due to closure.\n // Each call to the returned function will share this common timer.\n var timeout;\n // Calling debounce returns a new anonymous function\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // reference the context and args for the setTimeout function\n var context = this;\n // Should the function be called now? If immediate is true\n // and not already in a timeout then the answer is: Yes\n var callNow = immediate && !timeout;\n // This is the basic debounce behaviour where you can call this\n // function several times, but it will only execute once\n // [before or after imposing a delay].\n // Each time the returned function is called, the timer starts over.\n window.clearTimeout(timeout);\n // Set the new timeout\n timeout = window.setTimeout(function () {\n // Inside the timeout function, clear the timeout variable\n // which will let the next execution run when in 'immediate' mode\n timeout = null;\n // Check if the function already ran with the immediate flag\n if (!immediate) {\n // Call the original function with apply\n // apply lets you define the 'this' object as well as the arguments\n // (both captured before setTimeout)\n func.apply(context, args);\n }\n }, wait);\n // Immediate mode and no wait timer? Execute the function..\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nfunction compose() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n}\nfunction callIfPresent(func) {\n if (func) {\n func();\n }\n}\n\nvar FunctionUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n doOnce: doOnce,\n getFunctionParameters: getFunctionParameters,\n isFunction: isFunction,\n executeInAWhile: executeInAWhile,\n executeNextVMTurn: executeNextVMTurn,\n executeAfter: executeAfter,\n debounce: debounce,\n compose: compose,\n callIfPresent: callIfPresent\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n var fuzzyMatches = {};\n var invalidInputs = inputValues.filter(function (inputValue) {\n return !validValues.some(function (validValue) { return validValue === inputValue; });\n });\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(function (invalidInput) {\n return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);\n });\n }\n return fuzzyMatches;\n}\n/**\n *\n * @param {String} inputValue The value to be compared against a list of strings\n * @param allSuggestions The list of strings to be compared against\n * @param hideIrrelevant By default, fuzzy suggestions will just sort the allSuggestions list, set this to true\n * to filter out the irrelevant values\n * @param weighted Set this to true, to make letters matched in the order they were typed have priority in the results.\n */\nfunction fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, weighted) {\n var search = weighted ? string_weighted_distances : string_distances;\n var thisSuggestions = allSuggestions.map(function (text) { return ({\n value: text,\n relevance: search(inputValue.toLowerCase(), text.toLocaleLowerCase())\n }); });\n thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });\n }\n return thisSuggestions.map(function (suggestion) { return suggestion.value; });\n}\n/**\n * Algorithm to do fuzzy search\n * from https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense\n * @param {string} from\n * @return {[]}\n */\nfunction get_bigrams(from) {\n var s = from.toLowerCase();\n var v = new Array(s.length - 1);\n var i;\n var j;\n var ref;\n for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {\n v[i] = s.slice(i, i + 2);\n }\n return v;\n}\nfunction string_distances(str1, str2) {\n if (str1.length === 0 && str2.length === 0) {\n return 0;\n }\n var pairs1 = get_bigrams(str1);\n var pairs2 = get_bigrams(str2);\n var union = pairs1.length + pairs2.length;\n var hit_count = 0;\n var j;\n var len;\n for (j = 0, len = pairs1.length; j < len; j++) {\n var x = pairs1[j];\n var k = void 0;\n var len1 = void 0;\n for (k = 0, len1 = pairs2.length; k < len1; k++) {\n var y = pairs2[k];\n if (x === y) {\n hit_count++;\n }\n }\n }\n return hit_count > 0 ? (2 * hit_count) / union : 0;\n}\nfunction string_weighted_distances(str1, str2) {\n var a = str1.replace(/\\s/g, '');\n var b = str2.replace(/\\s/g, '');\n var weight = 0;\n var lastIndex = 0;\n for (var i = 0; i < a.length; i++) {\n var idx = b.indexOf(a[i]);\n if (idx === -1) {\n continue;\n }\n lastIndex = idx;\n weight += ((b.length - lastIndex) * 100) / b.length;\n weight *= weight;\n }\n return weight;\n}\n\nvar FuzzyMatchUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fuzzyCheckStrings: fuzzyCheckStrings,\n fuzzySuggestions: fuzzySuggestions,\n get_bigrams: get_bigrams,\n string_distances: string_distances,\n string_weighted_distances: string_weighted_distances\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n//\n// IMPORTANT NOTE!\n//\n// If you change the list below, copy/paste the new content into the docs page javascript-grid-icons\n//\nvar iconNameClassMap = {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: 'expanded',\n // header column group shown when contracted (click to expand)\n columnGroupClosed: 'contracted',\n // tool panel column group contracted (click to expand)\n columnSelectClosed: 'tree-closed',\n // tool panel column group expanded (click to contract)\n columnSelectOpen: 'tree-open',\n // column tool panel header expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n columnSelectIndeterminate: 'tree-indeterminate',\n // shown on ghost icon while dragging column to the side of the grid to pin\n columnMovePin: 'pin',\n // shown on ghost icon while dragging over part of the page that is not a drop zone\n columnMoveHide: 'eye-slash',\n // shown on ghost icon while dragging columns to reorder\n columnMoveMove: 'arrows',\n // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n columnMoveLeft: 'left',\n // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n columnMoveRight: 'right',\n // shown on ghost icon while dragging over Row Groups drop zone\n columnMoveGroup: 'group',\n // shown on ghost icon while dragging over Values drop zone\n columnMoveValue: 'aggregation',\n // shown on ghost icon while dragging over pivot drop zone\n columnMovePivot: 'pivot',\n // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: 'not-allowed',\n // shown on row group when contracted (click to expand)\n groupContracted: 'tree-closed',\n // shown on row group when expanded (click to contract)\n groupExpanded: 'tree-open',\n // context menu chart item\n chart: 'chart',\n // chart window title bar\n close: 'cross',\n // X (remove) on column 'pill' after adding it to a drop zone list\n cancel: 'cancel',\n // indicates the currently active pin state in the \"Pin column\" sub-menu of the column menu\n check: 'tick',\n // \"go to first\" button in pagination controls\n first: 'first',\n // \"go to previous\" button in pagination controls\n previous: 'previous',\n // \"go to next\" button in pagination controls\n next: 'next',\n // \"go to last\" button in pagination controls\n last: 'last',\n // shown on top right of chart when chart is linked to range data (click to unlink)\n linked: 'linked',\n // shown on top right of chart when chart is not linked to range data (click to link)\n unlinked: 'unlinked',\n // \"Choose colour\" button on chart settings tab\n colorPicker: 'color-picker',\n // rotating spinner shown by the loading cell renderer\n groupLoading: 'loading',\n // button to launch enterprise column menu\n menu: 'menu',\n // filter tool panel tab\n filter: 'filter',\n // column tool panel tab\n columns: 'columns',\n // button in chart regular size window title bar (click to maximise)\n maximize: 'maximize',\n // button in chart maximised window title bar (click to make regular size)\n minimize: 'minimize',\n // \"Pin column\" item in column header menu\n menuPin: 'pin',\n // \"Value aggregation\" column menu item (shown on numeric columns when grouping is active)\"\n menuValue: 'aggregation',\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: 'group',\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: 'group',\n // context menu copy item\n clipboardCopy: 'copy',\n // context menu paste item\n clipboardPaste: 'paste',\n // identifies the pivot drop zone\n pivotPanel: 'pivot',\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: 'group',\n // columns tool panel Values drop zone\n valuePanel: 'aggregation',\n // drag handle used to pick up draggable columns\n columnDrag: 'grip',\n // drag handle used to pick up draggable rows\n rowDrag: 'grip',\n // context menu export item\n save: 'save',\n // icon on dropdown editors\n smallDown: 'small-down',\n // version of small-right used in RTL mode\n smallLeft: 'small-left',\n // separater between column 'pills' when you add multiple columns to the header drop zone\n smallRight: 'small-right',\n smallUp: 'small-up',\n // show on column header when column is sorted ascending\n sortAscending: 'asc',\n // show on column header when column is sorted descending\n sortDescending: 'desc',\n // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n sortUnSort: 'none'\n};\n/**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n * @param {string} iconName\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {Column | null} [column]\n * @returns {HTMLElement}\n */\nfunction createIcon(iconName, gridOptionsWrapper, column) {\n var iconContents = createIconNoSpan(iconName, gridOptionsWrapper, column);\n if (iconContents.className.indexOf('ag-icon') > -1) {\n return iconContents;\n }\n var eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n}\nfunction createIconNoSpan(iconName, gridOptionsWrapper, column, forceCreate) {\n var userProvidedIcon = null;\n // check col for icon first\n var icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // if not in col, try grid options\n if (gridOptionsWrapper && !userProvidedIcon) {\n var optionsIcons = gridOptionsWrapper.getIcons();\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n var rendererResult = void 0;\n if (typeof userProvidedIcon === 'function') {\n rendererResult = userProvidedIcon();\n }\n else if (typeof userProvidedIcon === 'string') {\n rendererResult = userProvidedIcon;\n }\n else {\n throw new Error('icon from grid options needs to be a string or a function');\n }\n if (typeof rendererResult === 'string') {\n return loadTemplate(rendererResult);\n }\n else if (isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n else {\n console.warn('ag-Grid: iconRenderer should return back a string or a dom object');\n }\n }\n else {\n var span = document.createElement('span');\n var cssClass = iconNameClassMap[iconName];\n if (!cssClass) {\n if (!forceCreate) {\n console.warn(\"ag-Grid: Did not find icon \" + iconName);\n cssClass = '';\n }\n else {\n cssClass = iconName;\n }\n }\n span.setAttribute('class', \"ag-icon ag-icon-\" + cssClass);\n span.setAttribute(\"unselectable\", \"on\");\n return span;\n }\n}\n\nvar IconUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n iconNameClassMap: iconNameClassMap,\n createIcon: createIcon,\n createIconNoSpan: createIconNoSpan\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Constants = /** @class */ (function () {\n function Constants() {\n }\n Constants.STEP_EVERYTHING = 0;\n Constants.STEP_FILTER = 1;\n Constants.STEP_SORT = 2;\n Constants.STEP_MAP = 3;\n Constants.STEP_AGGREGATE = 4;\n Constants.STEP_PIVOT = 5;\n Constants.ROW_BUFFER_SIZE = 10;\n Constants.LAYOUT_INTERVAL = 500;\n Constants.BATCH_WAIT_MILLIS = 50;\n Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';\n Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';\n Constants.EXPORT_TYPE_EXCEL = 'excel';\n Constants.EXPORT_TYPE_CSV = 'csv';\n Constants.KEY_BACKSPACE = 8;\n Constants.KEY_TAB = 9;\n Constants.KEY_NEW_LINE = 10;\n Constants.KEY_ENTER = 13;\n Constants.KEY_SHIFT = 16;\n Constants.KEY_ESCAPE = 27;\n Constants.KEY_SPACE = 32;\n Constants.KEY_LEFT = 37;\n Constants.KEY_UP = 38;\n Constants.KEY_RIGHT = 39;\n Constants.KEY_DOWN = 40;\n Constants.KEY_DELETE = 46;\n Constants.KEY_A = 65;\n Constants.KEY_C = 67;\n Constants.KEY_V = 86;\n Constants.KEY_D = 68;\n Constants.KEY_Z = 90;\n Constants.KEY_Y = 89;\n Constants.KEY_F2 = 113;\n Constants.KEY_PAGE_UP = 33;\n Constants.KEY_PAGE_DOWN = 34;\n Constants.KEY_PAGE_HOME = 36;\n Constants.KEY_PAGE_END = 35;\n Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';\n Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';\n Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';\n Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';\n Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL = 'normal';\n Constants.ALWAYS = 'always';\n Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';\n Constants.PINNED_TOP = 'top';\n Constants.PINNED_BOTTOM = 'bottom';\n Constants.DOM_LAYOUT_NORMAL = 'normal';\n Constants.DOM_LAYOUT_PRINT = 'print';\n Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';\n Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\n Constants.SOURCE_PASTE = 'paste';\n Constants.PINNED_RIGHT = 'right';\n Constants.PINNED_LEFT = 'left';\n Constants.SORT_ASC = 'asc';\n Constants.SORT_DESC = 'desc';\n return Constants;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar PRINTABLE_CHARACTERS = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890!\"£$%^&*()_+-=[];\\'#,./\\\\|<>?:@~{}';\nvar NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';\nvar NUMPAD_DEL_NUMLOCK_ON_CHARCODE = 46;\nfunction isKeyPressed(event, keyToCheck) {\n return (event.which || event.keyCode) === keyToCheck;\n}\nfunction isCharacterKey(event) {\n // from: https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n var which = event.which;\n if (typeof which === 'number' && which) {\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8 && event.which !== 16;\n }\n return which === undefined;\n}\nfunction isEventFromPrintableCharacter(event) {\n var pressedChar = String.fromCharCode(event.charCode);\n // newline is an exception, as it counts as a printable character, but we don't\n // want to start editing when it is pressed. without this check, if user is in chrome\n // and editing a cell, and they press ctrl+enter, the cell stops editing, and then\n // starts editing again with a blank value (two 'key down' events are fired). to\n // test this, remove the line below, edit a cell in chrome and hit ctrl+enter while editing.\n // https://ag-grid.atlassian.net/browse/AG-605\n if (isKeyPressed(event, Constants.KEY_NEW_LINE)) {\n return false;\n }\n // no allowed printable chars have alt or ctrl key combinations\n if (event.altKey || event.ctrlKey) {\n return false;\n }\n if (exists(event.key)) {\n // modern browser will implement key, so we return if key is length 1, eg if it is 'a' for the\n // a key, or '2' for the '2' key. non-printable characters have names, eg 'Enter' or 'Backspace'.\n var printableCharacter = event.key.length === 1;\n // IE11 & Edge treat the numpad del key differently - with numlock on we get \"Del\" for key,\n // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers\n var numpadDelWithNumlockOnForEdgeOrIe = isNumpadDelWithNumlockOnForEdgeOrIe(event);\n return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;\n }\n // otherwise, for older browsers, we test against a list of characters, which doesn't include\n // accents for non-English, but don't care much, as most users are on modern browsers\n return PRINTABLE_CHARACTERS.indexOf(pressedChar) >= 0;\n}\n/**\n * Allows user to tell the grid to skip specific keyboard events\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {KeyboardEvent} keyboardEvent\n * @param {RowNode} rowNode\n * @param {Column} column\n * @param {boolean} editing\n * @returns {boolean}\n */\nfunction isUserSuppressingKeyboardEvent(gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {\n var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();\n var colDefFunc = column.getColDef().suppressKeyboardEvent;\n // if no callbacks provided by user, then do nothing\n if (!gridOptionsFunc && !colDefFunc) {\n return false;\n }\n var params = {\n event: keyboardEvent,\n editing: editing,\n column: column,\n api: gridOptionsWrapper.getApi(),\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsWrapper.getContext(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n var colDefFuncResult = colDefFunc(params);\n // if colDef func suppressed, then return now, no need to call gridOption func\n if (colDefFuncResult) {\n return true;\n }\n }\n if (gridOptionsFunc) {\n // if gridOption func, return the result\n return gridOptionsFunc(params);\n }\n // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n}\nfunction isNumpadDelWithNumlockOnForEdgeOrIe(event) {\n return (isBrowserEdge() || isBrowserIE()) &&\n event.key === NUMPAD_DEL_NUMLOCK_ON_KEY &&\n event.charCode === NUMPAD_DEL_NUMLOCK_ON_CHARCODE;\n}\n\nvar KeyboardUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isKeyPressed: isKeyPressed,\n isCharacterKey: isCharacterKey,\n isEventFromPrintableCharacter: isEventFromPrintableCharacter,\n isUserSuppressingKeyboardEvent: isUserSuppressingKeyboardEvent\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction keys(map) {\n var keys = [];\n map.forEach(function (_, key) { return keys.push(key); });\n return keys;\n}\n\nvar MapUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n keys: keys\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * @deprecated\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n * from: https://github.com/facebook/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n * @param {any} event\n * @return {any}\n */\nfunction normalizeWheel(event) {\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n // spinX, spinY\n var sX = 0;\n var sY = 0;\n // pixelX, pixelY\n var pX = 0;\n var pY = 0;\n // Legacy\n if ('detail' in event) {\n sY = event.detail;\n }\n if ('wheelDelta' in event) {\n sY = -event.wheelDelta / 120;\n }\n if ('wheelDeltaY' in event) {\n sY = -event.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in event) {\n sX = -event.wheelDeltaX / 120;\n }\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in event) {\n pY = event.deltaY;\n }\n if ('deltaX' in event) {\n pX = event.deltaX;\n }\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n }\n else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n}\n/**\n * @deprecated\n * Checks if event was issued by a left click\n * from https://stackoverflow.com/questions/3944122/detect-left-mouse-button-press\n * @param {MouseEvent} mouseEvent\n * @returns {boolean}\n */\nfunction isLeftClick(mouseEvent) {\n if ('buttons' in mouseEvent) {\n return mouseEvent.buttons == 1;\n }\n var button = mouseEvent.which || mouseEvent.button;\n return button == 1;\n}\n/**\n * `True` if the event is close to the original event by X pixels either vertically or horizontally.\n * we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n * @param {MouseEvent | TouchEvent} e1\n * @param {MouseEvent | TouchEvent} e2\n * @param {number} pixelCount\n * @returns {boolean}\n */\nfunction areEventsNear(e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n var diffX = Math.abs(e1.clientX - e2.clientX);\n var diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n}\n\nvar MouseUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n normalizeWheel: normalizeWheel,\n isLeftClick: isLeftClick,\n areEventsNear: areEventsNear\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n * when in ClientSideNodeManager we always have indexes (as this sorts the items the\n * user provided) but when in GroupStage, the nodes can contain filler nodes that\n * don't have order id's\n * @param {RowNode[]} rowNodes\n * @param {Object} rowNodeOrder\n */\nfunction sortRowNodesByOrder(rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return;\n }\n var comparator = function (nodeA, nodeB) {\n var positionA = rowNodeOrder[nodeA.id];\n var positionB = rowNodeOrder[nodeB.id];\n var aHasIndex = positionA !== undefined;\n var bHasIndex = positionB !== undefined;\n var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n if (bothNodesAreUserNodes) {\n // when comparing two nodes the user has provided, they always\n // have indexes\n return positionA - positionB;\n }\n if (bothNodesAreFillerNodes) {\n // when comparing two filler nodes, we have no index to compare them\n // against, however we want this sorting to be deterministic, so that\n // the rows don't jump around as the user does delta updates. so we\n // want the same sort result. so we use the __objectId - which doesn't make sense\n // from a sorting point of view, but does give consistent behaviour between\n // calls. otherwise groups jump around as delta updates are done.\n // note: previously here we used nodeId, however this gave a strange order\n // as string ordering of numbers is wrong, so using id based on creation order\n // as least gives better looking order.\n return nodeA.__objectId - nodeB.__objectId;\n }\n if (aHasIndex) {\n return 1;\n }\n return -1;\n };\n // check if the list first needs sorting\n var rowNodeA;\n var rowNodeB;\n var atLeastOneOutOfOrder = false;\n for (var i = 0; i < rowNodes.length - 1; i++) {\n rowNodeA = rowNodes[i];\n rowNodeB = rowNodes[i + 1];\n if (comparator(rowNodeA, rowNodeB) > 0) {\n atLeastOneOutOfOrder = true;\n break;\n }\n }\n if (atLeastOneOutOfOrder) {\n rowNodes.sort(comparator);\n }\n}\nfunction traverseNodesWithKey(nodes, callback) {\n var keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n currentNodes.forEach(function (node) {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n var key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n}\n\nvar RowNodeUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n sortRowNodesByOrder: sortRowNodesByOrder,\n traverseNodesWithKey: traverseNodesWithKey\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction convertToSet(list) {\n var set = new Set();\n list.forEach(function (x) { return set.add(x); });\n return set;\n}\n\nvar SetUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n convertToSet: convertToSet\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar utils = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, GeneralUtils), ArrayUtils), BrowserUtils), CsvUtils), DateUtils), DomUtils), EventUtils), FunctionUtils), FuzzyMatchUtils), GenericUtils), IconUtils), KeyboardUtils), MapUtils), MouseUtils), NumberUtils), ObjectUtils), RowNodeUtils), SetUtils), StringUtils);\nvar _ = utils;\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n(function (PromiseStatus) {\n PromiseStatus[PromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n PromiseStatus[PromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(exports.PromiseStatus || (exports.PromiseStatus = {}));\nvar Promise = /** @class */ (function () {\n function Promise(callback) {\n var _this = this;\n this.status = exports.PromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.waiters = [];\n callback(function (value) { return _this.onDone(value); }, function (params) { return _this.onReject(params); });\n }\n Promise.all = function (promises) {\n return new Promise(function (resolve) {\n var remainingToResolve = promises.length;\n var combinedValues = new Array(remainingToResolve);\n forEach(promises, function (promise, index) {\n promise.then(function (value) {\n combinedValues[index] = value;\n remainingToResolve--;\n if (remainingToResolve === 0) {\n resolve(combinedValues);\n }\n });\n });\n });\n };\n Promise.resolve = function (value) {\n return new Promise(function (resolve) { return resolve(value); });\n };\n Promise.prototype.then = function (func) {\n if (this.status === exports.PromiseStatus.IN_PROGRESS) {\n this.waiters.push(func);\n }\n else {\n func(this.resolution);\n }\n };\n Promise.prototype.map = function (adapter) {\n var _this = this;\n return new Promise(function (resolve) { return _this.then(function (value) { return resolve(adapter(value)); }); });\n };\n Promise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n return this.status == exports.PromiseStatus.IN_PROGRESS ? ifNotResolvedValue : ifResolved(this.resolution);\n };\n Promise.prototype.onDone = function (value) {\n this.status = exports.PromiseStatus.RESOLVED;\n this.resolution = value;\n forEach(this.waiters, function (waiter) { return waiter(value); });\n };\n Promise.prototype.onReject = function (params) {\n console.warn('TBI');\n };\n return Promise;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * A Util Class only used when debugging for printing time to console\n */\nvar Timer = /** @class */ (function () {\n function Timer() {\n this.timestamp = new Date().getTime();\n }\n Timer.prototype.print = function (msg) {\n var duration = (new Date().getTime()) - this.timestamp;\n console.info(msg + \" = \" + duration);\n this.timestamp = new Date().getTime();\n };\n return Timer;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar ColumnKeyCreator = /** @class */ (function () {\n function ColumnKeyCreator() {\n this.existingKeys = {};\n }\n ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n for (var i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n };\n ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n // in case user passed in number for colId, convert to string\n colId = _.toStringOrNull(colId);\n var count = 0;\n while (true) {\n var idToTry = void 0;\n if (colId) {\n idToTry = colId;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else if (colField) {\n idToTry = colField;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else {\n idToTry = '' + count;\n }\n if (!this.existingKeys[idToTry]) {\n this.existingKeys[idToTry] = true;\n return idToTry;\n }\n count++;\n }\n };\n return ColumnKeyCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Context = /** @class */ (function () {\n function Context(params, logger) {\n this.beanWrappers = {};\n this.componentsMappedByName = {};\n this.destroyed = false;\n if (!params || !params.beanClasses) {\n return;\n }\n this.contextParams = params;\n this.logger = logger;\n this.logger.log(\">> creating ag-Application Context\");\n this.setupComponents();\n this.createBeans();\n var beanInstances = this.getBeanInstances();\n this.wireBeans(beanInstances);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n Context.prototype.getBeanInstances = function () {\n return _.values(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });\n };\n Context.prototype.setupComponents = function () {\n var _this = this;\n if (this.contextParams.components) {\n this.contextParams.components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n }\n };\n Context.prototype.addComponent = function (componentMeta) {\n // get name of the class as a string\n // let className = _.getNameOfClass(ComponentClass);\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n var classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n };\n Context.prototype.createComponentFromElement = function (element, afterPreCreateCallback, paramsMap) {\n var key = element.nodeName;\n var componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;\n return this.createComponent(key, afterPreCreateCallback, element, componentParams);\n };\n Context.prototype.createComponent = function (key, afterPreCreateCallback, element, componentParams) {\n if (this.componentsMappedByName && this.componentsMappedByName[key]) {\n var cls = this.componentsMappedByName[key];\n var newComponent = new this.componentsMappedByName[key](componentParams);\n this.wireBean(newComponent, afterPreCreateCallback);\n return newComponent;\n }\n return null;\n };\n Context.prototype.wireBean = function (bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n this.wireBeans([bean], afterPreCreateCallback);\n };\n Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {\n this.autoWireBeans(beanInstances);\n this.methodWireBeans(beanInstances);\n this.callLifeCycleMethods(beanInstances, 'preConstructMethods');\n // the callback sets the attributes, so the component has access to attributes\n // before postConstruct methods in the component are executed\n if (_.exists(afterPreCreateCallback)) {\n beanInstances.forEach(afterPreCreateCallback);\n }\n this.callLifeCycleMethods(beanInstances, 'postConstructMethods');\n };\n Context.prototype.createBeans = function () {\n var _this = this;\n // register all normal beans\n this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));\n // register override beans, these will overwrite beans above of same name\n // instantiate all beans - overridden beans will be left out\n _.iterateObject(this.beanWrappers, function (key, beanEntry) {\n var constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n var newInstance = applyToConstructor(beanEntry.bean, constructorParams);\n beanEntry.beanInstance = newInstance;\n });\n var createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n this.logger.log(\"created beans: \" + createdBeanNames);\n };\n // tslint:disable-next-line\n Context.prototype.createBeanWrapper = function (Bean) {\n var metaData = Bean.__agBeanMetaData;\n if (!metaData) {\n var beanName = void 0;\n if (Bean.prototype.constructor) {\n beanName = Bean.prototype.constructor.name;\n }\n else {\n beanName = \"\" + Bean;\n }\n console.error(\"context item \" + beanName + \" is not a bean\");\n return;\n }\n var beanEntry = {\n bean: Bean,\n beanInstance: null,\n beanName: metaData.beanName\n };\n this.beanWrappers[metaData.beanName] = beanEntry;\n };\n Context.prototype.autoWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n var attributes = metaData.agClassAttributes;\n if (!attributes) {\n return;\n }\n attributes.forEach(function (attribute) {\n var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n beanInstance[attribute.attributeName] = otherBean;\n });\n });\n });\n };\n Context.prototype.methodWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n _.iterateObject(metaData.autowireMethods, function (methodName, wireParams) {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n var initParams = _this.getBeansForParameters(wireParams, beanName);\n beanInstance[methodName].apply(beanInstance, initParams);\n });\n });\n });\n };\n Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {\n var prototype = Object.getPrototypeOf(beanInstance);\n while (prototype != null) {\n var constructor = prototype.constructor;\n if (constructor.hasOwnProperty('__agBeanMetaData')) {\n var metaData = constructor.__agBeanMetaData;\n var beanName = this.getBeanName(constructor);\n callback(metaData, beanName);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n };\n Context.prototype.getBeanName = function (constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n var constructorString = constructor.toString();\n var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n };\n Context.prototype.getBeansForParameters = function (parameters, beanName) {\n var _this = this;\n var beansList = [];\n if (parameters) {\n _.iterateObject(parameters, function (paramIndex, otherBeanName) {\n var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n };\n Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n if (optional === void 0) { optional = false; }\n if (beanName === \"context\") {\n return this;\n }\n else if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {\n return this.contextParams.providedBeanInstances[beanName];\n }\n else {\n var beanEntry = this.beanWrappers[beanName];\n if (beanEntry) {\n return beanEntry.beanInstance;\n }\n if (!optional) {\n console.error(\"ag-Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n }\n return null;\n }\n };\n Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {\n var methods = metaData[lifeCycleMethod];\n if (!methods) {\n return;\n }\n methods.forEach(function (methodName) { return beanInstance[methodName](); });\n });\n });\n };\n Context.prototype.getBean = function (name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n };\n Context.prototype.destroy = function () {\n // should only be able to destroy once\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n var beanInstances = this.getBeanInstances();\n this.callLifeCycleMethods(beanInstances, 'preDestroyMethods');\n this.contextParams.providedBeanInstances = null;\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n };\n return Context;\n}());\n// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply\n// allows calling 'apply' on a constructor\nfunction applyToConstructor(constructor, argArray) {\n var args = [null].concat(argArray);\n var factoryFunction = constructor.bind.apply(constructor, args);\n return new factoryFunction();\n}\nfunction PreConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.preConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nfunction PostConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nfunction PreDestroy(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nfunction Bean(beanName) {\n return function (classConstructor) {\n var props = getOrCreateProps(classConstructor);\n props.beanName = beanName;\n };\n}\nfunction Autowired(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nfunction Optional(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, true, target, propertyKey, null);\n };\n}\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n if (name === null) {\n console.error(\"ag-Grid: Autowired name should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: Autowired should be on an attribute\");\n return;\n }\n // it's an attribute on the class\n var props = getOrCreateProps(target.constructor);\n if (!props.agClassAttributes) {\n props.agClassAttributes = [];\n }\n props.agClassAttributes.push({\n attributeName: methodOrAttributeName,\n beanName: name,\n optional: optional\n });\n}\nfunction Qualifier(name) {\n return function (classPrototype, methodOrAttributeName, index) {\n var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n var props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n var methodName = void 0;\n if (methodOrAttributeName) {\n props = getOrCreateProps(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps(constructor);\n methodName = \"agConstructor\";\n }\n if (!props.autowireMethods) {\n props.autowireMethods = {};\n }\n if (!props.autowireMethods[methodName]) {\n props.autowireMethods[methodName] = {};\n }\n props.autowireMethods[methodName][index] = name;\n }\n };\n}\nfunction getOrCreateProps(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = new Map();\n this.allAsyncListeners = new Map();\n this.globalSyncListeners = new Set();\n this.globalAsyncListeners = new Set();\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n // using an object performs better than a Set for the number of different events we have\n this.firedEvents = {};\n }\n EventService_1 = EventService;\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by ag-Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.logger = loggerFactory.create('EventService');\n if (globalEventListener) {\n var async = gridOptionsWrapper.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListeners = function (eventType, async) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listeners = listenerMap.get(eventType);\n if (!listeners) {\n listeners = new Set();\n listenerMap.set(eventType, listeners);\n }\n return listeners;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n var _this = this;\n if (async === void 0) { async = false; }\n this.getListeners(eventType, async).add(listener);\n return function () { return _this.removeEventListener(eventType, listener, async); };\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.getListeners(eventType, async).delete(listener);\n };\n // for some events, it's important that the model gets to hear about them before the view,\n // as the model may need to update before the view works on the info. if you register\n // via this method, you get notified before the view parts\n EventService.prototype.addModalPriorityEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n return this.addEventListener(eventType + EventService_1.PRIORITY, listener, async);\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n };\n EventService.prototype.dispatchEvent = function (event) {\n this.dispatchToListeners(event, true);\n this.dispatchToListeners(event, false);\n this.firedEvents[event.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var eventType = event.type;\n var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n }); };\n // PRIORITY events should be processed first\n processEventListeners(this.getListeners(eventType + EventService_1.PRIORITY, async));\n processEventListeners(this.getListeners(eventType, async));\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n globalListeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(eventType, event); });\n }\n else {\n listener(eventType, event);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n var EventService_1;\n // this is an old idea niall had, should really take it out, was to do with ordering who gets to process\n // events first, to give model and service objects preference over the view\n EventService.PRIORITY = '-P1';\n __decorate([\n __param(0, Qualifier('loggerFactory')),\n __param(1, Qualifier('gridOptionsWrapper')),\n __param(2, Qualifier('globalEventListener'))\n ], EventService.prototype, \"setBeans\", null);\n EventService = EventService_1 = __decorate([\n Bean('eventService')\n ], EventService);\n return EventService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n(function (ModuleNames) {\n // when using modules, user references this\n ModuleNames[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n // when not using modules, user references this\n ModuleNames[\"CommunityAllModules\"] = \"@ag-grid-community/all\";\n // community modules\n ModuleNames[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n ModuleNames[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n ModuleNames[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n ModuleNames[\"RowNodeCache\"] = \"@ag-grid-community/row-node-cache\";\n // enterprise core - users never import on this, but other enterprise modules do\n ModuleNames[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n // when not using modules, user references this\n ModuleNames[\"EnterpriseAllModules\"] = \"@ag-grid-enterprise/all\";\n // enterprise modules\n ModuleNames[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n ModuleNames[\"ColumnToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n ModuleNames[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filters-tool-panel\";\n ModuleNames[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n ModuleNames[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n ModuleNames[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n ModuleNames[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n ModuleNames[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n ModuleNames[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n ModuleNames[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n ModuleNames[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n ModuleNames[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n ModuleNames[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n ModuleNames[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n ModuleNames[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n ModuleNames[\"DateTimeCellEditorModule\"] = \"@ag-grid-enterprise/date-time-cell-editor\";\n // framework wrappers currently don't provide beans, comps etc, so no need to be modules,\n // however i argue they should be as in theory they 'could' provide beans etc\n ModuleNames[\"AngularModule\"] = \"@ag-grid-community/angular\";\n ModuleNames[\"ReactModule\"] = \"@ag-grid-community/react\";\n ModuleNames[\"VueModule\"] = \"@ag-grid-community/vue\";\n ModuleNames[\"PolymerModule\"] = \"@ag-grid-community/polymer\";\n // and then this, which is definitely not a grid module, as it should not have any dependency\n // on the grid (ie shouldn't even reference the Module interface)\n // ChartsModule = \"@ag-grid-community/charts-core\",\n})(exports.ModuleNames || (exports.ModuleNames = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar ModuleRegistry = /** @class */ (function () {\n function ModuleRegistry() {\n }\n ModuleRegistry.register = function (module, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n ModuleRegistry.modulesMap[module.moduleName] = module;\n if (ModuleRegistry.moduleBased === undefined) {\n ModuleRegistry.moduleBased = moduleBased;\n }\n else {\n if (ModuleRegistry.moduleBased !== moduleBased) {\n _.doOnce(function () {\n console.warn(\"ag-Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.\");\n console.warn('Please see https://www.ag-grid.com/javascript-grid-packages-modules/ for more information.');\n }, 'ModulePackageCheck');\n }\n }\n };\n // noinspection JSUnusedGlobalSymbols\n ModuleRegistry.registerModules = function (modules, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n if (!modules) {\n return;\n }\n modules.forEach(function (module) { return ModuleRegistry.register(module, moduleBased); });\n };\n ModuleRegistry.assertRegistered = function (moduleName, reason) {\n if (this.isRegistered(moduleName)) {\n return true;\n }\n var warningKey = reason + moduleName;\n var warningMessage = \"ag-Grid: unable to use \" + reason + \" as module \" + moduleName + \" is not present. Please see: https://www.ag-grid.com/javascript-grid-modules/\";\n _.doOnce(function () {\n console.warn(warningMessage);\n }, warningKey);\n return false;\n };\n ModuleRegistry.isRegistered = function (moduleName) {\n return !!ModuleRegistry.modulesMap[moduleName];\n };\n ModuleRegistry.getRegisteredModules = function () {\n return _.values(ModuleRegistry.modulesMap);\n };\n ModuleRegistry.isPackageBased = function () {\n return !ModuleRegistry.moduleBased;\n };\n // having in a map a) removes duplicates and b) allows fast lookup\n ModuleRegistry.modulesMap = {};\n return ModuleRegistry;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and OriginalColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg OriginalColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = /** @class */ (function () {\n function Column(colDef, userProvidedColDef, colId, primary) {\n this.moving = false;\n this.menuVisible = false;\n this.filterActive = false;\n this.eventService = new EventService();\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.visible = !colDef.hide;\n this.sort = colDef.sort;\n this.sortedAt = colDef.sortedAt;\n this.colId = colId;\n this.primary = primary;\n }\n // gets called when user provides an alternative colDef, eg\n Column.prototype.setColDef = function (colDef, userProvidedColDef) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n };\n Column.prototype.getUserProvidedColDef = function () {\n return this.userProvidedColDef;\n };\n Column.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Column.prototype.getParent = function () {\n return this.parent;\n };\n Column.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n Column.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n // this is done after constructor as it uses gridOptionsWrapper\n Column.prototype.initialise = function () {\n this.setPinned(this.colDef.pinned);\n var minColWidth = this.gridOptionsWrapper.getMinColWidth();\n var maxColWidth = this.gridOptionsWrapper.getMaxColWidth();\n if (this.colDef.minWidth) {\n this.minWidth = this.colDef.minWidth;\n }\n else {\n this.minWidth = minColWidth;\n }\n if (this.colDef.maxWidth) {\n this.maxWidth = this.colDef.maxWidth;\n }\n else {\n this.maxWidth = maxColWidth;\n }\n if (this.colDef.flex) {\n this.flex = this.colDef.flex;\n }\n this.actualWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();\n this.fieldContainsDots = _.exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = _.exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n this.validate();\n };\n Column.prototype.isEmptyGroup = function () {\n return false;\n };\n Column.prototype.isRowGroupDisplayed = function (colId) {\n if (_.missing(this.colDef) || _.missing(this.colDef.showRowGroup)) {\n return false;\n }\n var showingAllGroups = this.colDef.showRowGroup === true;\n var showingThisGroup = this.colDef.showRowGroup === colId;\n return showingAllGroups || showingThisGroup;\n };\n Column.prototype.getUniqueId = function () {\n return this.getId();\n };\n Column.prototype.isPrimary = function () {\n return this.primary;\n };\n Column.prototype.isFilterAllowed = function () {\n // filter defined means it's a string, class or true.\n // if its false, null or undefined then it's false.\n var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;\n return this.primary && filterDefined;\n };\n Column.prototype.isFieldContainsDots = function () {\n return this.fieldContainsDots;\n };\n Column.prototype.isTooltipFieldContainsDots = function () {\n return this.tooltipFieldContainsDots;\n };\n Column.prototype.validate = function () {\n var colDefAny = this.colDef;\n function warnOnce(msg, key, obj) {\n _.doOnce(function () {\n if (obj) {\n console.warn(msg, obj);\n }\n else {\n _.doOnce(function () { return console.warn(msg); }, key);\n }\n }, key);\n }\n if (!ModuleRegistry.isRegistered(exports.ModuleNames.RowGroupingModule)) {\n var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n rowGroupingItems.forEach(function (item) {\n if (_.exists(colDefAny[item])) {\n if (ModuleRegistry.isPackageBased()) {\n warnOnce(\"ag-Grid: \" + item + \" is only valid in ag-grid-enterprise, your column definition should not have \" + item, 'ColumnRowGroupingMissing' + item);\n }\n else {\n warnOnce(\"ag-Grid: \" + item + \" is only valid with ag-Grid Enterprise Module \" + exports.ModuleNames.RowGroupingModule + \" - your column definition should not have \" + item, 'ColumnRowGroupingMissing' + item);\n }\n }\n });\n }\n if (!ModuleRegistry.isRegistered(exports.ModuleNames.RichSelectModule)) {\n if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agRichSelectCellEditor') {\n if (ModuleRegistry.isPackageBased()) {\n warnOnce(\"ag-Grid: \" + this.colDef.cellEditor + \" can only be used with ag-grid-enterprise\", 'ColumnRichSelectMissing');\n }\n else {\n warnOnce(\"ag-Grid: \" + this.colDef.cellEditor + \" can only be used with ag-Grid Enterprise Module \" + exports.ModuleNames.RichSelectModule, 'ColumnRichSelectMissing');\n }\n }\n }\n if (!ModuleRegistry.isRegistered(exports.ModuleNames.DateTimeCellEditorModule)) {\n if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agDateTimeCellEditor') {\n if (ModuleRegistry.isPackageBased()) {\n warnOnce(\"ag-Grid: \" + this.colDef.cellEditor + \" can only be used with ag-grid-enterprise\", 'ColumnDateTimeMissing');\n }\n else {\n warnOnce(\"ag-Grid: \" + this.colDef.cellEditor + \" can only be used with ag-Grid Enterprise Module \" + exports.ModuleNames.DateTimeCellEditorModule, 'ColumnDateTimeMissing');\n }\n }\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n itemsNotAllowedWithTreeData.forEach(function (item) {\n if (_.exists(colDefAny[item])) {\n warnOnce(\"ag-Grid: \" + item + \" is not possible when doing tree data, your column definition should not have \" + item, 'TreeDataCannotRowGroup');\n }\n });\n }\n if (_.exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n warnOnce('ag-Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck_asdfawef');\n }\n if (_.get(this, 'colDef.cellRendererParams.restrictToOneGroup', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.restrictToOneGroup is deprecated. You should use showRowGroup', 'ColumnCheck_sksldjf');\n }\n if (_.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator', 'ColumnCheck_ieiruhgdf');\n }\n if (_.get(this, 'colDef.cellRendererParams.keyMap', null)) {\n warnOnce('ag-Grid: Since ag-grid 11.0.0 cellRendererParams.keyMap is deprecated. You should use colDef.keyCreator', 'ColumnCheck_uitolghj');\n }\n if (colDefAny.floatingCellRenderer) {\n warnOnce('ag-Grid: since v11, floatingCellRenderer is now pinnedRowCellRenderer', 'ColumnCheck_soihwewe');\n this.colDef.pinnedRowCellRenderer = colDefAny.floatingCellRenderer;\n }\n if (colDefAny.floatingRendererFramework) {\n warnOnce('ag-Grid: since v11, floatingRendererFramework is now pinnedRowCellRendererFramework', 'ColumnCheck_zdkiouhwer');\n this.colDef.pinnedRowCellRendererFramework = colDefAny.floatingRendererFramework;\n }\n if (colDefAny.floatingRendererParams) {\n console.warn('ag-Grid: since v11, floatingRendererParams is now pinnedRowCellRendererParams', 'ColumnCheck_retiuhjs');\n this.colDef.pinnedRowCellRendererParams = colDefAny.floatingRendererParams;\n }\n if (colDefAny.floatingValueFormatter) {\n warnOnce('ag-Grid: since v11, floatingValueFormatter is now pinnedRowValueFormatter', 'ColumnCheck_qwroeihjdf');\n this.colDef.pinnedRowValueFormatter = colDefAny.floatingValueFormatter;\n }\n if (colDefAny.cellFormatter) {\n warnOnce('ag-Grid: since v12, cellFormatter is now valueFormatter', 'ColumnCheck_eoireknml');\n if (_.missing(this.colDef.valueFormatter)) {\n this.colDef.valueFormatter = colDefAny.cellFormatter;\n }\n }\n if (colDefAny.headerCellTemplate) {\n warnOnce('ag-Grid: since v15, headerCellTemplate is gone, use header component instead.', 'ColumnCheck_eroihxcm');\n }\n if (colDefAny.headerCellRenderer) {\n warnOnce('ag-Grid: since v15, headerCellRenderer is gone, use header component instead.', 'ColumnCheck_terteuh');\n }\n if (colDefAny.volatile) {\n warnOnce('ag-Grid: since v16, colDef.volatile is gone, please check refresh docs on how to refresh specific cells.', 'ColumnCheck_weoihjxcv');\n }\n if (colDefAny.suppressSorting) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressSorting is gone, instead use colDef.sortable=false.\", 'ColumnCheck_43ljrer', this.colDef);\n this.colDef.sortable = false;\n }\n if (colDefAny.suppressFilter) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressFilter is gone, instead use colDef.filter=false.\", 'ColumnCheck_erlkhfdm', this.colDef);\n this.colDef.filter = false;\n }\n if (colDefAny.suppressResize) {\n warnOnce(\"ag-Grid: since v20, colDef.suppressResize is gone, instead use colDef.resizable=false.\", 'ColumnCheck_weoihjxcv', this.colDef);\n this.colDef.resizable = false;\n }\n if (colDefAny.tooltip) {\n warnOnce(\"ag-Grid: since v20.1, colDef.tooltip is gone, instead use colDef.tooltipValueGetter.\", 'ColumnCheck_adslknjwef', this.colDef);\n this.colDef.tooltipValueGetter = colDefAny.tooltip;\n }\n if (colDefAny.suppressToolPanel) {\n warnOnce(\"ag-Grid: since v22, colDef.suppressToolPanel is gone, instead use suppressColumnsToolPanel / suppressFiltersToolPanel.\", 'ColumnCheck_weihjlsjkdf', this.colDef);\n this.colDef.suppressColumnsToolPanel = true;\n }\n };\n Column.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n Column.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n Column.prototype.createIsColumnFuncParams = function (rowNode) {\n return {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n };\n Column.prototype.isSuppressNavigable = function (rowNode) {\n // if boolean set, then just use it\n if (typeof this.colDef.suppressNavigable === 'boolean') {\n return this.colDef.suppressNavigable;\n }\n // if function, then call the function to find out\n if (typeof this.colDef.suppressNavigable === 'function') {\n var params = this.createIsColumnFuncParams(rowNode);\n var userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n };\n Column.prototype.isCellEditable = function (rowNode) {\n // only allow editing of groups if the user has this option enabled\n if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {\n return false;\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n };\n Column.prototype.isRowDrag = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n };\n Column.prototype.isDndSource = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n };\n Column.prototype.isCellCheckboxSelection = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n };\n Column.prototype.isSuppressPaste = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n };\n Column.prototype.isResizable = function () {\n return this.colDef.resizable === true;\n };\n Column.prototype.isColumnFunc = function (rowNode, value) {\n // if boolean set, then just use it\n if (typeof value === 'boolean') {\n return value;\n }\n // if function, then call the function to find out\n if (typeof value === 'function') {\n var params = this.createIsColumnFuncParams(rowNode);\n var editableFunc = value;\n return editableFunc(params);\n }\n return false;\n };\n Column.prototype.setMoving = function (moving, source) {\n if (source === void 0) { source = \"api\"; }\n this.moving = moving;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED, source));\n };\n Column.prototype.createColumnEvent = function (type, source) {\n return {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: type,\n column: this,\n columns: [this],\n source: source\n };\n };\n Column.prototype.isMoving = function () {\n return this.moving;\n };\n Column.prototype.getSort = function () {\n return this.sort;\n };\n Column.prototype.setSort = function (sort, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.sort !== sort) {\n this.sort = sort;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED, source));\n }\n };\n Column.prototype.setMenuVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isMenuVisible = function () {\n return this.menuVisible;\n };\n Column.prototype.isSortAscending = function () {\n return this.sort === Constants.SORT_ASC;\n };\n Column.prototype.isSortDescending = function () {\n return this.sort === Constants.SORT_DESC;\n };\n Column.prototype.isSortNone = function () {\n return _.missing(this.sort);\n };\n Column.prototype.isSorting = function () {\n return _.exists(this.sort);\n };\n Column.prototype.getSortedAt = function () {\n return this.sortedAt;\n };\n Column.prototype.setSortedAt = function (sortedAt) {\n this.sortedAt = sortedAt;\n };\n Column.prototype.setAggFunc = function (aggFunc) {\n this.aggFunc = aggFunc;\n };\n Column.prototype.getAggFunc = function () {\n return this.aggFunc;\n };\n Column.prototype.getLeft = function () {\n return this.left;\n };\n Column.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n Column.prototype.getRight = function () {\n return this.left + this.actualWidth;\n };\n Column.prototype.setLeft = function (left, source) {\n if (source === void 0) { source = \"api\"; }\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED, source));\n }\n };\n Column.prototype.isFilterActive = function () {\n return this.filterActive;\n };\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {\n if (source === void 0) { source = \"api\"; }\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED, source));\n }\n var filterChangedEvent = this.createColumnEvent(Column.EVENT_FILTER_CHANGED, source);\n if (additionalEventAttributes) {\n _.mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventService.dispatchEvent(filterChangedEvent);\n };\n Column.prototype.setPinned = function (pinned) {\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n this.pinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n this.pinned = Constants.PINNED_RIGHT;\n }\n else {\n this.pinned = null;\n }\n };\n Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.isFirstRightPinned = function () {\n return this.firstRightPinned;\n };\n Column.prototype.isLastLeftPinned = function () {\n return this.lastLeftPinned;\n };\n Column.prototype.isPinned = function () {\n return this.pinned === Constants.PINNED_LEFT || this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.isPinnedLeft = function () {\n return this.pinned === Constants.PINNED_LEFT;\n };\n Column.prototype.isPinnedRight = function () {\n return this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.getPinned = function () {\n return this.pinned;\n };\n Column.prototype.setVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n var newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isVisible = function () {\n return this.visible;\n };\n Column.prototype.getColDef = function () {\n return this.colDef;\n };\n Column.prototype.getColumnGroupShow = function () {\n return this.colDef.columnGroupShow;\n };\n Column.prototype.getColId = function () {\n return this.colId;\n };\n Column.prototype.getId = function () {\n return this.getColId();\n };\n Column.prototype.getDefinition = function () {\n return this.colDef;\n };\n Column.prototype.getActualWidth = function () {\n return this.actualWidth;\n };\n Column.prototype.createBaseColDefParams = function (rowNode) {\n var params = {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return params;\n };\n Column.prototype.getColSpan = function (rowNode) {\n if (_.missing(this.colDef.colSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var colSpan = this.colDef.colSpan(params);\n // colSpan must be number equal to or greater than 1\n return Math.max(colSpan, 1);\n };\n Column.prototype.getRowSpan = function (rowNode) {\n if (_.missing(this.colDef.rowSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var rowSpan = this.colDef.rowSpan(params);\n // rowSpan must be number equal to or greater than 1\n return Math.max(rowSpan, 1);\n };\n Column.prototype.setActualWidth = function (actualWidth, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.minWidth != null) {\n actualWidth = Math.max(actualWidth, this.minWidth);\n }\n if (this.maxWidth != null) {\n actualWidth = Math.min(actualWidth, this.maxWidth);\n }\n if (this.actualWidth !== actualWidth) {\n // disable flex for this column if it was manually resized.\n if (this.flex && source !== 'flex') {\n this.flex = 0;\n }\n this.actualWidth = actualWidth;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED, source));\n }\n };\n Column.prototype.isGreaterThanMax = function (width) {\n if (this.maxWidth != null) {\n return width > this.maxWidth;\n }\n return false;\n };\n Column.prototype.getMinWidth = function () {\n return this.minWidth;\n };\n Column.prototype.getMaxWidth = function () {\n return this.maxWidth;\n };\n Column.prototype.getFlex = function () {\n return this.flex || 0;\n };\n // this method should only be used by the columnController to\n // change flex when required by the setColumnState method.\n Column.prototype.setFlex = function (flex) {\n if (this.flex !== flex) {\n this.flex = flex;\n }\n };\n Column.prototype.setMinimum = function (source) {\n if (source === void 0) { source = \"api\"; }\n this.setActualWidth(this.minWidth, source);\n };\n Column.prototype.setRowGroupActive = function (rowGroup, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED, source));\n }\n };\n Column.prototype.isRowGroupActive = function () {\n return this.rowGroupActive;\n };\n Column.prototype.setPivotActive = function (pivot, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED, source));\n }\n };\n Column.prototype.isPivotActive = function () {\n return this.pivotActive;\n };\n Column.prototype.isAnyFunctionActive = function () {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n };\n Column.prototype.isAnyFunctionAllowed = function () {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n };\n Column.prototype.setValueActive = function (value, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED, source));\n }\n };\n Column.prototype.isValueActive = function () {\n return this.aggregationActive;\n };\n Column.prototype.isAllowPivot = function () {\n return this.colDef.enablePivot === true;\n };\n Column.prototype.isAllowValue = function () {\n return this.colDef.enableValue === true;\n };\n Column.prototype.isAllowRowGroup = function () {\n return this.colDef.enableRowGroup === true;\n };\n Column.prototype.getMenuTabs = function (defaultValues) {\n var menuTabs = this.getColDef().menuTabs;\n if (menuTabs == null) {\n menuTabs = defaultValues;\n }\n return menuTabs;\n };\n // this used to be needed, as previous version of ag-grid had lockPosition as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPosition = function () {\n console.warn('ag-Grid: since v21, col.isLockPosition() should not be used, please use col.getColDef().lockPosition instead.');\n return this.colDef ? !!this.colDef.lockPosition : false;\n };\n // this used to be needed, as previous version of ag-grid had lockVisible as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockVisible = function () {\n console.warn('ag-Grid: since v21, col.isLockVisible() should not be used, please use col.getColDef().lockVisible instead.');\n return this.colDef ? !!this.colDef.lockVisible : false;\n };\n // this used to be needed, as previous version of ag-grid had lockPinned as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPinned = function () {\n console.warn('ag-Grid: since v21, col.isLockPinned() should not be used, please use col.getColDef().lockPinned instead.');\n return this.colDef ? !!this.colDef.lockPinned : false;\n };\n // + renderedHeaderCell - for making header cell transparent when moving\n Column.EVENT_MOVING_CHANGED = 'movingChanged';\n // + renderedCell - changing left position\n Column.EVENT_LEFT_CHANGED = 'leftChanged';\n // + renderedCell - changing width\n Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n // + renderedCell - for changing pinned classes\n Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n // + renderedColumn - for changing visibility icon\n Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n // + every time the filter changes, used in the floating filters\n Column.EVENT_FILTER_CHANGED = 'filterChanged';\n // + renderedHeaderCell - marks the header with filter icon\n Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_SORT_CHANGED = 'sortChanged';\n Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n // + toolpanel, for gui updates\n Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n // + toolpanel, for gui updates\n Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n // + toolpanel, for gui updates\n Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n __decorate$1([\n Autowired('gridOptionsWrapper')\n ], Column.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1([\n Autowired('columnUtils')\n ], Column.prototype, \"columnUtils\", void 0);\n __decorate$1([\n Autowired('columnApi')\n ], Column.prototype, \"columnApi\", void 0);\n __decorate$1([\n Autowired('gridApi')\n ], Column.prototype, \"gridApi\", void 0);\n __decorate$1([\n Autowired('context')\n ], Column.prototype, \"context\", void 0);\n __decorate$1([\n PostConstruct\n ], Column.prototype, \"initialise\", null);\n return Column;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(originalColumnGroup, groupId, instanceId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new EventService();\n this.groupId = groupId;\n this.instanceId = instanceId;\n this.originalColumnGroup = originalColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getOriginalColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every(function (col) { return col.isMoving(); });\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var lastChild = _.last(this.displayedChildren);\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return { type: type };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth();\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n // why two methods here doing the same thing?\n ColumnGroup.prototype.getDefinition = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.originalColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.originalColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.originalColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.originalColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.originalColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.originalColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n return this.originalColumnGroup;\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n var topLevelGroup = this;\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n if (this.isPadding()) {\n while (topLevelGroup.getParent() && topLevelGroup.isPadding()) {\n topLevelGroup = topLevelGroup.getParent();\n }\n }\n var isExpandable = topLevelGroup.originalColumnGroup.isExpandable();\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n }\n else {\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (abstractColumn) {\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n switch (headerGroupShow) {\n case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n // when set to open, only show col if group is open\n if (topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n // when set to open, only show col if group is open\n if (!topLevelGroup.originalColumnGroup.isExpanded()) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n default:\n // if this abstractColumn is padding, we just want to add it\n // to the displayedChildren list if it has displayedChildren itself.\n if (!(abstractColumn instanceof ColumnGroup &&\n abstractColumn.isPadding() &&\n !abstractColumn.displayedChildren.length)) {\n _this.displayedChildren.push(abstractColumn);\n }\n break;\n }\n });\n }\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n ColumnGroup.HEADER_GROUP_PADDING = 'padding';\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate$2([\n Autowired('gridOptionsWrapper')\n ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n return ColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar OriginalColumnGroup = /** @class */ (function () {\n function OriginalColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new EventService();\n this.expandable = false;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n OriginalColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n OriginalColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n OriginalColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n OriginalColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n OriginalColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n OriginalColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: OriginalColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n OriginalColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n OriginalColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n OriginalColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n OriginalColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n OriginalColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n OriginalColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n OriginalColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n OriginalColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n OriginalColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n OriginalColumnGroup.prototype.getColumnGroupShow = function () {\n return this.padding ? ColumnGroup.HEADER_GROUP_PADDING : this.colGroupDef.columnGroupShow;\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n OriginalColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n // note - we should be removing this event listener\n this.getLeafColumns().forEach(function (col) { return col.addEventListener(Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n };\n OriginalColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildren();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_PADDING) {\n var column = abstractColumn;\n atLeastOneChangeable = atLeastOneChangeable || column.children.some(function (child) { return child.getColumnGroupShow() !== undefined; });\n }\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n OriginalColumnGroup.prototype.findChildren = function () {\n var children = this.children;\n var firstChild = children[0];\n if (firstChild && (!firstChild.isPadding || !firstChild.isPadding())) {\n return children;\n }\n while (children.length === 1 && children[0] instanceof OriginalColumnGroup) {\n children = children[0].children;\n }\n return children;\n };\n OriginalColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n OriginalColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n OriginalColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n OriginalColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n return OriginalColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar DefaultColumnTypes = {\n numericColumn: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n },\n rightAligned: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n }\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$1 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function () {\n function ColumnFactory() {\n }\n ColumnFactory.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n };\n ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingColumns) {\n // column key creator dishes out unique column id's in a deterministic way,\n // so if we have two grids (that could be master/slave) with same column definitions,\n // then this ensures the two grids use identical id's.\n var columnKeyCreator = new ColumnKeyCreator();\n if (existingColumns) {\n var existingKeys = existingColumns.map(function (col) { return col.getId(); });\n columnKeyCreator.addExistingKeys(existingKeys);\n }\n // we take a copy of the columns as we are going to be removing from them\n var existingColsCopy = existingColumns ? existingColumns.slice() : null;\n // create am unbalanced tree that maps the provided definitions\n var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingColsCopy, columnKeyCreator, null);\n var treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof OriginalColumnGroup) {\n child.setupExpandable();\n }\n // we set the original parents at the end, rather than when we go along, as balancing the tree\n // adds extra levels into the tree. so we can only set parents when balancing is done.\n child.setOriginalParent(parent);\n };\n this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);\n return {\n columnTree: columnTree,\n treeDept: treeDept\n };\n };\n ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n var _this = this;\n var autoColBalancedTree = [];\n autoGroupCols.forEach(function (col) {\n var fakeTreeItem = _this.createAutoGroupTreeItem(gridBalancedTree, col);\n autoColBalancedTree.push(fakeTreeItem);\n });\n return autoColBalancedTree;\n };\n ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n var dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n var nextChild = column;\n for (var i = dept - 1; i >= 0; i--) {\n var autoGroup = new OriginalColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n this.context.wireBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n // at this point, the nextChild is the top most item in the tree\n return nextChild;\n };\n ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n var dept = 0;\n var pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof OriginalColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n };\n ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n var result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (var i = 0; i < unbalancedTree.length; i++) {\n var child = unbalancedTree[i];\n if (child instanceof OriginalColumnGroup) {\n // child is a group, all we do is go to the next level of recursion\n var originalGroup = child;\n var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n }\n else {\n // child is a column - so here we add in the padded column groups if needed\n var firstPaddedGroup = void 0;\n var currentPaddedGroup = void 0;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (var j = columnDept - 1; j >= currentDept; j--) {\n var newColId = columnKeyCreator.getUniqueKey(null, null);\n var colGroupDefMerged = this.createMergedColGroupDef(null);\n var paddedGroup = new OriginalColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.context.wireBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n // likewise this if statement will not run if no padded groups\n if (firstPaddedGroup) {\n result.push(firstPaddedGroup);\n var hasGroups = unbalancedTree.some(function (child) { return child instanceof OriginalColumnGroup; });\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n }\n else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n };\n ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n var maxDeptThisLevel = dept;\n for (var i = 0; i < treeChildren.length; i++) {\n var abstractColumn = treeChildren[i];\n if (abstractColumn instanceof OriginalColumnGroup) {\n var originalGroup = abstractColumn;\n var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n };\n ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, parent) {\n var _this = this;\n var result = [];\n if (!defs) {\n return result;\n }\n defs.forEach(function (def) {\n var newGroupOrColumn;\n if (_this.isColumnGroup(def)) {\n newGroupOrColumn = _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, parent);\n }\n else {\n newGroupOrColumn = _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator, parent);\n }\n result.push(newGroupOrColumn);\n });\n return result;\n };\n ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, parent) {\n var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId, null);\n var originalGroup = new OriginalColumnGroup(colGroupDefMerged, groupId, false, level);\n this.context.wireBean(originalGroup);\n var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, originalGroup);\n originalGroup.setChildren(children);\n return originalGroup;\n };\n ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n var colGroupDefMerged = {};\n _.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n _.assign(colGroupDefMerged, colGroupDef);\n this.checkForDeprecatedItems(colGroupDefMerged);\n return colGroupDefMerged;\n };\n ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator, parent) {\n var colDefMerged = this.mergeColDefs(colDef);\n this.checkForDeprecatedItems(colDefMerged);\n // see if column already exists\n var column = this.findExistingColumn(colDef, existingColsCopy);\n if (!column) {\n // no existing column, need to create one\n var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n column = new Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.wireBean(column);\n }\n else {\n column.setColDef(colDefMerged, colDef);\n }\n return column;\n };\n ColumnFactory.prototype.findExistingColumn = function (colDef, existingColsCopy) {\n var res = _.find(existingColsCopy, function (col) {\n var oldColDef = col.getUserProvidedColDef();\n if (!oldColDef) {\n return false;\n }\n // first check object references\n if (oldColDef === colDef) {\n return true;\n }\n // second check id's\n var oldColHadId = oldColDef.colId !== null && oldColDef.colId !== undefined;\n if (oldColHadId) {\n return oldColDef.colId === colDef.colId;\n }\n return false;\n });\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (res) {\n _.removeFromArray(existingColsCopy, res);\n }\n return res;\n };\n ColumnFactory.prototype.mergeColDefs = function (colDef) {\n // start with empty merged definition\n var colDefMerged = {};\n // merge properties from default column definitions\n _.assign(colDefMerged, this.gridOptionsWrapper.getDefaultColDef());\n // merge properties from column type properties\n if (colDef.type) {\n this.assignColumnTypes(colDef, colDefMerged);\n }\n // merge properties from column definitions\n _.assign(colDefMerged, colDef);\n return colDefMerged;\n };\n ColumnFactory.prototype.assignColumnTypes = function (colDef, colDefMerged) {\n var typeKeys;\n if (colDef.type instanceof Array) {\n var invalidArray = colDef.type.some(function (a) { return typeof a !== 'string'; });\n if (invalidArray) {\n console.warn(\"ag-grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n }\n else {\n typeKeys = colDef.type;\n }\n }\n else if (typeof colDef.type === 'string') {\n typeKeys = colDef.type.split(',');\n }\n else {\n console.warn(\"ag-grid: colDef.type should be of type 'string' | 'string[]'\");\n return;\n }\n // merge user defined with default column types\n var allColumnTypes = _.assign({}, this.gridOptionsWrapper.getColumnTypes(), DefaultColumnTypes);\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n _.assign(colDefMerged, typeColDef);\n }\n else {\n console.warn(\"ag-grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n };\n ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {\n if (colDef) {\n var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type\n if (colDefNoType.group !== undefined) {\n console.warn('ag-grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroup !== undefined) {\n console.warn('ag-grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroupShow !== undefined) {\n console.warn('ag-grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.suppressRowGroup !== undefined) {\n console.warn('ag-grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressAggregation !== undefined) {\n console.warn('ag-grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {\n console.warn('ag-grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');\n }\n if (colDefNoType.displayName) {\n console.warn(\"ag-grid: Found displayName \" + colDefNoType.displayName + \", please use headerName instead, displayName is deprecated.\");\n colDefNoType.headerName = colDefNoType.displayName;\n }\n }\n };\n // if object has children, we assume it's a group\n ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n return abstractColDef.children !== undefined;\n };\n __decorate$3([\n Autowired('gridOptionsWrapper')\n ], ColumnFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$3([\n Autowired('columnUtils')\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate$3([\n Autowired('context')\n ], ColumnFactory.prototype, \"context\", void 0);\n __decorate$3([\n __param$1(0, Qualifier('loggerFactory'))\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate$3([\n Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Events = /** @class */ (function () {\n function Events() {\n }\n /** Everything has changed with the columns. Either complete new set of columns set, or user called setState()*/\n Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n /** User has set in new columns. */\n Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n /** The pivot mode flag was changed */\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n /** A row group column was added, removed or order changed. */\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n /** expandAll / collapseAll was called from the api. */\n Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n /** A pivot column was added, removed or order changed. */\n Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n /** The list of grid columns has changed. */\n Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n /** A value column was added, removed or agg function was changed. */\n Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n /** A column was moved */\n Events.EVENT_COLUMN_MOVED = 'columnMoved';\n /** One or more columns was shown / hidden */\n Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n /** One or more columns was pinned / unpinned*/\n Events.EVENT_COLUMN_PINNED = 'columnPinned';\n /** A column group was opened / closed */\n Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n /** One or more columns was resized. If just one, the column in the event is set. */\n Events.EVENT_COLUMN_RESIZED = 'columnResized';\n /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n /** The list of virtual columns has changed, results from viewport changing */\n Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n /** A row group was opened / closed */\n Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n /** The client has set new data into the grid */\n Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n /** The client has updated data for the grid */\n Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n /** The client has set new floating data into the grid */\n Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n /** Range selection has changed */\n Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n /** Chart was created */\n Events.EVENT_CHART_CREATED = 'chartCreated';\n /** Chart Range selection has changed */\n Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n /** Chart Options have changed */\n Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n /** Chart was destroyed */\n Events.EVENT_CHART_DESTROYED = 'chartDestroyed';\n /** For when the tool panel is shown / hidden */\n Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\n /** Model was updated - grid updates the drawn rows when this happens */\n Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n Events.EVENT_PASTE_START = 'pasteStart';\n Events.EVENT_PASTE_END = 'pasteEnd';\n Events.EVENT_FILL_START = 'fillStart';\n Events.EVENT_FILL_END = 'fillEnd';\n Events.EVENT_CELL_CLICKED = 'cellClicked';\n Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\n Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n Events.EVENT_CELL_FOCUSED = 'cellFocused';\n Events.EVENT_ROW_SELECTED = 'rowSelected';\n Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\n Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';\n Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n Events.EVENT_FILTER_CHANGED = 'filterChanged';\n /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n Events.EVENT_FILTER_MODIFIED = 'filterModified';\n Events.EVENT_FILTER_OPENED = 'filterOpened';\n Events.EVENT_SORT_CHANGED = 'sortChanged';\n /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n Events.EVENT_ROW_CLICKED = 'rowClicked';\n Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n /** Gets called once after the grid has finished initialising. */\n Events.EVENT_GRID_READY = 'gridReady';\n /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n * changed, so always filling the space it was given. */\n Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n /** Rows were rendered for the first time (ie on async data load). */\n Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n /** A column drag has started, either resizing a column or moving a column. */\n Events.EVENT_DRAG_STARTED = 'dragStarted';\n /** A column drag has stopped */\n Events.EVENT_DRAG_STOPPED = 'dragStopped';\n Events.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';\n Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n /** Main body of grid has scrolled, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL = 'bodyScroll';\n Events.EVENT_ANIMATION_QUEUE_EMPTY = 'animationQueueEmpty';\n Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';\n /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n * or the user has moved to a different page. */\n Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n /** Only used by React, Angular 2+, Web Components and VueJS ag-Grid components\n * (not used if doing plain JavaScript or Angular 1.x). If the grid receives changes due\n * to bound properties, this event fires after the grid has finished processing the change. */\n Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n /** All items from here down are used internally by the grid, not intended for external use. */\n // not documented, either experimental, or we just don't want users using an depending on them\n Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n Events.EVENT_FLASH_CELLS = 'flashCells';\n Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\n Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\n Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\n Events.EVENT_ROW_DRAG_END = 'rowDragEnd';\n // primarily for charts\n Events.EVENT_POPUP_TO_FRONT = 'popupToFront';\n // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n // to design these better around server side functions and then release to general public when fully working with\n // all the row models.\n Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n Events.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';\n Events.EVENT_MOUSE_FOCUS = 'mouseFocus';\n return Events;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n function GroupInstanceIdCreator() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n var lastResult = this.existingIds[key];\n var result;\n if (typeof lastResult !== 'number') {\n // first time this key\n result = 0;\n }\n else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n };\n return GroupInstanceIdCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$2 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ColumnController = /** @class */ (function () {\n function ColumnController() {\n // header row count, based on user provided columns\n this.primaryHeaderRowCount = 0;\n this.secondaryHeaderRowCount = 0;\n this.secondaryColumnsPresent = false;\n // header row count, either above, or based on pivoting if we are pivoting\n this.gridHeaderRowCount = 0;\n // these are the lists used by the rowRenderer to render nodes. almost the leaf nodes of the above\n // displayed trees, however it also takes into account if the groups are open or not.\n this.displayedLeftColumns = [];\n this.displayedRightColumns = [];\n this.displayedCenterColumns = [];\n // all three lists above combined\n this.allDisplayedColumns = [];\n // same as above, except trimmed down to only columns within the viewport\n this.allDisplayedVirtualColumns = [];\n this.allDisplayedCenterVirtualColumns = [];\n this.rowGroupColumns = [];\n this.valueColumns = [];\n this.pivotColumns = [];\n this.ready = false;\n this.autoGroupsNeedBuilding = false;\n this.pivotMode = false;\n this.bodyWidth = 0;\n this.leftWidth = 0;\n this.rightWidth = 0;\n this.bodyWidthDirty = true;\n this.flexActive = false;\n }\n ColumnController.prototype.init = function () {\n this.suppressColumnVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation();\n var pivotMode = this.gridOptionsWrapper.isPivotMode();\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n ColumnController.prototype.setColumnDefs = function (columnDefs, source) {\n if (source === void 0) { source = 'api'; }\n var colsPreviouslyExisted = !!this.columnDefs;\n this.columnDefs = columnDefs;\n // always invalidate cache on changing columns, as the column id's for the new columns\n // could overlap with the old id's, so the cache would return old values for new columns.\n this.valueCache.expire();\n // NOTE ==================\n // we should be destroying the existing columns and groups if they exist, for example, the original column\n // group adds a listener to the columns, it should be also removing the listeners\n this.autoGroupsNeedBuilding = true;\n var oldPrimaryColumns = this.primaryColumns;\n var balancedTreeResult = this.columnFactory.createColumnTree(columnDefs, true, oldPrimaryColumns);\n this.primaryColumnTree = balancedTreeResult.columnTree;\n this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n this.extractRowGroupColumns(source, oldPrimaryColumns);\n this.extractPivotColumns(source, oldPrimaryColumns);\n this.createValueColumns(source, oldPrimaryColumns);\n this.ready = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n this.checkDisplayedVirtualColumns();\n if (this.gridOptionsWrapper.isImmutableColumns() && colsPreviouslyExisted) {\n this.resetColumnState(true, source);\n }\n var eventEverythingChanged = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(eventEverythingChanged);\n var newColumnsLoadedEvent = {\n type: Events.EVENT_NEW_COLUMNS_LOADED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(newColumnsLoadedEvent);\n this.flexActive = this.getDisplayedCenterColumns().some(function (col) { return !!col.getFlex(); });\n };\n ColumnController.prototype.isAutoRowHeightActive = function () {\n return this.autoRowHeightColumns && this.autoRowHeightColumns.length > 0;\n };\n ColumnController.prototype.getAllAutoRowHeightCols = function () {\n return this.autoRowHeightColumns;\n };\n ColumnController.prototype.setVirtualViewportLeftAndRight = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n this.viewportRight = this.bodyWidth - this.scrollPosition;\n }\n else {\n this.viewportLeft = this.scrollPosition;\n this.viewportRight = this.scrollWidth + this.scrollPosition;\n }\n };\n // used by clipboard service, to know what columns to paste into\n ColumnController.prototype.getDisplayedColumnsStartingAt = function (column) {\n var currentColumn = column;\n var columns = [];\n while (currentColumn != null) {\n columns.push(currentColumn);\n currentColumn = this.getDisplayedColAfter(currentColumn);\n }\n return columns;\n };\n // checks what columns are currently displayed due to column virtualisation. fires an event\n // if the list of columns has changed.\n // + setColumnWidth(), setVirtualViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n ColumnController.prototype.checkDisplayedVirtualColumns = function () {\n // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n if (this.displayedCenterColumns == null) {\n return;\n }\n var hashBefore = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n this.updateVirtualSets();\n var hashAfter = this.allDisplayedVirtualColumns.map(function (column) { return column.getId(); }).join('#');\n if (hashBefore !== hashAfter) {\n var event_1 = {\n type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ColumnController.prototype.setVirtualViewportPosition = function (scrollWidth, scrollPosition) {\n if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n this.scrollWidth = scrollWidth;\n this.scrollPosition = scrollPosition;\n // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n // virtual columns again\n this.bodyWidthDirty = true;\n this.setVirtualViewportLeftAndRight();\n if (this.ready) {\n this.checkDisplayedVirtualColumns();\n }\n }\n };\n ColumnController.prototype.isPivotMode = function () {\n return this.pivotMode;\n };\n ColumnController.prototype.isPivotSettingAllowed = function (pivot) {\n if (pivot && this.gridOptionsWrapper.isTreeData()) {\n console.warn(\"ag-Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n return false;\n }\n return true;\n };\n ColumnController.prototype.setPivotMode = function (pivotMode, source) {\n if (source === void 0) { source = 'api'; }\n if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {\n return;\n }\n this.pivotMode = pivotMode;\n // we need to update grid columns to cover the scenario where user has groupSuppressAutoColumn=true, as\n // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),\n // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed\n this.autoGroupsNeedBuilding = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n if (!this.secondaryColumnsPresent || !this.secondaryColumns) {\n return null;\n }\n var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n var foundColumn = null;\n this.secondaryColumns.forEach(function (column) {\n var thisPivotKeys = column.getColDef().pivotKeys;\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotKeyMatches = areEqual(thisPivotKeys, pivotKeys);\n var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n return foundColumn;\n };\n ColumnController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnController');\n };\n ColumnController.prototype.setFirstRightAndLastLeftPinned = function (source) {\n var lastLeft;\n var firstRight;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n lastLeft = this.displayedLeftColumns ? this.displayedLeftColumns[0] : null;\n firstRight = this.displayedRightColumns ? _.last(this.displayedRightColumns) : null;\n }\n else {\n lastLeft = this.displayedLeftColumns ? _.last(this.displayedLeftColumns) : null;\n firstRight = this.displayedRightColumns ? this.displayedRightColumns[0] : null;\n }\n this.gridColumns.forEach(function (column) {\n column.setLastLeftPinned(column === lastLeft, source);\n column.setFirstRightPinned(column === firstRight, source);\n });\n };\n ColumnController.prototype.autoSizeColumns = function (keys, skipHeader, source) {\n // because of column virtualisation, we can only do this function on columns that are\n // actually rendered, as non-rendered columns (outside the viewport and not rendered\n // due to column virtualisation) are not present. this can result in all rendered columns\n // getting narrowed, which in turn introduces more rendered columns on the RHS which\n // did not get autosized in the original run, leaving the visible grid with columns on\n // the LHS sized, but RHS no. so we keep looping through the visible columns until\n // no more cols are available (rendered) to be resized\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // we autosize after animation frames finish in case any cell renderers need to complete first. this can\n // happen eg if client code is calling api.autoSizeAllColumns() straight after grid is initialised, but grid\n // hasn't fully drawn out all the cells yet (due to cell renderers in animation frames).\n this.animationFrameService.flushAllFrames();\n // keep track of which cols we have resized in here\n var columnsAutosized = [];\n // initialise with anything except 0 so that while loop executes at least once\n var changesThisTimeAround = -1;\n if (skipHeader == null) {\n skipHeader = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n }\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n this.actionOnGridColumns(keys, function (column) {\n // if already autosized, skip it\n if (columnsAutosized.indexOf(column) >= 0) {\n return false;\n }\n // get how wide this col should be\n var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, skipHeader);\n // preferredWidth = -1 if this col is not on the screen\n if (preferredWidth > 0) {\n var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutosized.push(column);\n changesThisTimeAround++;\n }\n return true;\n }, source);\n }\n if (columnsAutosized.length) {\n var event_2 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columnsAutosized,\n column: columnsAutosized.length === 1 ? columnsAutosized[0] : null,\n finished: true,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: \"autosizeColumns\"\n };\n this.eventService.dispatchEvent(event_2);\n }\n };\n ColumnController.prototype.autoSizeColumn = function (key, skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.autoSizeColumns([key], skipHeader, source);\n }\n };\n ColumnController.prototype.autoSizeAllColumns = function (skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n var allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns(allDisplayedColumns, skipHeader, source);\n };\n ColumnController.prototype.getColumnsFromTree = function (rootColumns) {\n var result = [];\n var recursiveFindColumns = function (childColumns) {\n for (var i = 0; i < childColumns.length; i++) {\n var child = childColumns[i];\n if (child instanceof Column) {\n result.push(child);\n }\n else if (child instanceof OriginalColumnGroup) {\n recursiveFindColumns(child.getChildren());\n }\n }\n };\n recursiveFindColumns(rootColumns);\n return result;\n };\n ColumnController.prototype.getAllDisplayedColumnGroups = function () {\n if (this.displayedLeftColumnTree && this.displayedRightColumnTree && this.displayedCentreColumnTree) {\n return this.displayedLeftColumnTree\n .concat(this.displayedCentreColumnTree)\n .concat(this.displayedRightColumnTree);\n }\n return null;\n };\n // + columnSelectPanel\n ColumnController.prototype.getPrimaryColumnTree = function () {\n return this.primaryColumnTree;\n };\n // + gridPanel -> for resizing the body and setting top margin\n ColumnController.prototype.getHeaderRowCount = function () {\n return this.gridHeaderRowCount;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getLeftDisplayedColumnGroups = function () {\n return this.displayedLeftColumnTree;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getRightDisplayedColumnGroups = function () {\n return this.displayedRightColumnTree;\n };\n // + headerRenderer -> setting pinned body width\n ColumnController.prototype.getCenterDisplayedColumnGroups = function () {\n return this.displayedCentreColumnTree;\n };\n ColumnController.prototype.getDisplayedColumnGroups = function (type) {\n switch (type) {\n case Constants.PINNED_LEFT:\n return this.getLeftDisplayedColumnGroups();\n case Constants.PINNED_RIGHT:\n return this.getRightDisplayedColumnGroups();\n default:\n return this.getCenterDisplayedColumnGroups();\n }\n };\n // gridPanel -> ensureColumnVisible\n ColumnController.prototype.isColumnDisplayed = function (column) {\n return this.getAllDisplayedColumns().indexOf(column) >= 0;\n };\n // + csvCreator\n ColumnController.prototype.getAllDisplayedColumns = function () {\n return this.allDisplayedColumns;\n };\n ColumnController.prototype.getAllDisplayedVirtualColumns = function () {\n return this.allDisplayedVirtualColumns;\n };\n ColumnController.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedLeftColumns;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedLeftColumns);\n };\n ColumnController.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedRightColumns;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedRightColumns);\n };\n ColumnController.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n var result = [];\n var lastConsideredCol = null;\n var _loop_1 = function (i) {\n var col = displayedColumns[i];\n var maxAllowedColSpan = displayedColumns.length - i;\n var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n var columnsToCheckFilter = [col];\n if (colSpan > 1) {\n var colsToRemove = colSpan - 1;\n for (var j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n // see which cols we should take out for column virtualisation\n var filterPasses;\n if (filterCallback) {\n // if user provided a callback, means some columns may not be in the viewport.\n // the user will NOT provide a callback if we are talking about pinned areas,\n // as pinned areas have no horizontal scroll and do not virtualise the columns.\n // if lots of columns, that means column spanning, and we set filterPasses = true\n // if one or more of the columns spanned pass the filter.\n filterPasses = false;\n columnsToCheckFilter.forEach(function (colForFilter) {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n }\n else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n out_i_1 = i;\n };\n var out_i_1;\n for (var i = 0; i < displayedColumns.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n return result;\n };\n // + rowRenderer\n // if we are not column spanning, this just returns back the virtual centre columns,\n // however if we are column spanning, then different rows can have different virtual\n // columns, so we have to work out the list for each individual row.\n ColumnController.prototype.getAllDisplayedCenterVirtualColumnsForRow = function (rowNode) {\n var _this = this;\n if (!this.colSpanActive) {\n return this.allDisplayedCenterVirtualColumns;\n }\n var emptySpaceBeforeColumn = function (col) { return col.getLeft() > _this.viewportLeft; };\n // if doing column virtualisation, then we filter based on the viewport.\n var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInViewport.bind(this);\n return this.getDisplayedColumnsForRow(rowNode, this.displayedCenterColumns, filterCallback, emptySpaceBeforeColumn);\n };\n ColumnController.prototype.isColumnInViewport = function (col) {\n var columnLeft = col.getLeft();\n var columnRight = col.getLeft() + col.getActualWidth();\n // adding 200 for buffer size, so some cols off viewport are rendered.\n // this helps horizontal scrolling so user rarely sees white space (unless\n // they scroll horizontally fast). however we are conservative, as the more\n // buffer the slower the vertical redraw speed\n var leftBounds = this.viewportLeft - 200;\n var rightBounds = this.viewportRight + 200;\n var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n return !columnToMuchLeft && !columnToMuchRight;\n };\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n ColumnController.prototype.getPinnedLeftContainerWidth = function () {\n return this.getWidthOfColsInList(this.displayedLeftColumns);\n };\n // note: this should be cached\n ColumnController.prototype.getPinnedRightContainerWidth = function () {\n return this.getWidthOfColsInList(this.displayedRightColumns);\n };\n ColumnController.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (!keys || _.missingOrEmpty(keys)) {\n return;\n }\n var atLeastOne = false;\n keys.forEach(function (key) {\n var columnToAdd = _this.getPrimaryColumn(key);\n if (!columnToAdd) {\n return;\n }\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n }\n else {\n if (masterList.indexOf(columnToAdd) < 0) {\n return;\n }\n _.removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventType,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.setRowGroupColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.setPrimaryColumnList(colKeys, this.rowGroupColumns, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);\n };\n ColumnController.prototype.setRowGroupActive = function (active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (!active && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup()) {\n column.setVisible(true, source);\n }\n };\n ColumnController.prototype.addRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.addRowGroupColumns([key], source);\n }\n };\n ColumnController.prototype.addRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnController.prototype.removeRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnController.prototype.removeRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.removeRowGroupColumns([key], source);\n }\n };\n ColumnController.prototype.addPivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnController.prototype.setPivotColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n column.setPivotActive(added, source);\n }, source);\n };\n ColumnController.prototype.addPivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.addPivotColumns([key], source);\n };\n ColumnController.prototype.removePivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnController.prototype.removePivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.removePivotColumns([key], source);\n };\n ColumnController.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {\n var _this = this;\n masterList.length = 0;\n if (_.exists(colKeys)) {\n colKeys.forEach(function (key) {\n var column = _this.getPrimaryColumn(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n this.primaryColumns.forEach(function (column) {\n var added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventName,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.setValueColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n };\n ColumnController.prototype.setValueActive = function (active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc()) {\n var defaultAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(defaultAggFunc);\n }\n };\n ColumnController.prototype.addValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n ColumnController.prototype.addValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n if (colKey) {\n this.addValueColumns([colKey], source);\n }\n };\n ColumnController.prototype.removeValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n this.removeValueColumns([colKey], source);\n };\n ColumnController.prototype.removeValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n // returns the width we can set to this col, taking into consideration min and max widths\n ColumnController.prototype.normaliseColumnWidth = function (column, newWidth) {\n if (newWidth < column.getMinWidth()) {\n newWidth = column.getMinWidth();\n }\n if (column.isGreaterThanMax(newWidth)) {\n newWidth = column.getMaxWidth();\n }\n return newWidth;\n };\n ColumnController.prototype.getPrimaryOrGridColumn = function (key) {\n var column = this.getPrimaryColumn(key);\n return column || this.getGridColumn(key);\n };\n ColumnController.prototype.setColumnWidths = function (columnWidths, shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column\n finished, // @finished - ends up in the event, tells the user if more events are to come\n source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n var sets = [];\n columnWidths.forEach(function (columnWidth) {\n var col = _this.getPrimaryOrGridColumn(columnWidth.key);\n if (!col) {\n return;\n }\n sets.push({\n width: columnWidth.newWidth,\n ratios: [1],\n columns: [col]\n });\n // if user wants to do shift resize by default, then we invert the shift operation\n var defaultIsShift = _this.gridOptionsWrapper.getColResizeDefault() === 'shift';\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n var otherCol = _this.getDisplayedColAfter(col);\n if (!otherCol) {\n return;\n }\n var widthDiff = col.getActualWidth() - columnWidth.newWidth;\n var otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n });\n if (sets.length === 0) {\n return;\n }\n this.resizeColumnSets(sets, finished, source);\n if (this.flexActive) {\n this.refreshFlexedColumns();\n }\n };\n ColumnController.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {\n var columns = columnResizeSet.columns, width = columnResizeSet.width;\n // every col has a min width, so sum them all up and see if we have enough room\n // for all the min widths\n var minWidthAccumulated = 0;\n var maxWidthAccumulated = 0;\n var maxWidthActive = true;\n columns.forEach(function (col) {\n minWidthAccumulated += col.getMinWidth();\n if (col.getMaxWidth() > 0) {\n maxWidthAccumulated += col.getMaxWidth();\n }\n else {\n // if at least one columns has no max width, it means the group of columns\n // then has no max width, as at least one column can take as much width as possible\n maxWidthActive = false;\n }\n });\n var minWidthPasses = width >= minWidthAccumulated;\n var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);\n return minWidthPasses && maxWidthPasses;\n };\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n ColumnController.prototype.resizeColumnSets = function (resizeSets, finished, source) {\n var passMinMaxCheck = !resizeSets || resizeSets.every(this.checkMinAndMaxWidthsForSet.bind(this));\n if (!passMinMaxCheck) {\n // even though we are not going to resize beyond min/max size, we still need to raise event when finished\n if (finished) {\n var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n var event_3 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columns,\n column: columns && columns.length === 1 ? columns[0] : null,\n finished: finished,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_3);\n }\n return; // don't resize!\n }\n var changedCols = [];\n var allCols = [];\n resizeSets.forEach(function (set) {\n var width = set.width, columns = set.columns, ratios = set.ratios;\n // keep track of pixels used, and last column gets the remaining,\n // to cater for rounding errors, and min width adjustments\n var newWidths = {};\n var finishedCols = {};\n columns.forEach(function (col) { return allCols.push(col); });\n // the loop below goes through each col. if a col exceeds it's min/max width,\n // it then gets set to its min/max width and the column is removed marked as 'finished'\n // and the calculation is done again leaving this column out. take for example columns\n // {A, width: 50, maxWidth: 100}\n // {B, width: 50}\n // {C, width: 50}\n // and then the set is set to width 600 - on the first pass the grid tries to set each column\n // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked\n // as 'finished' and the calculation is done again with the remaining cols B and C, which end up\n // splitting the remaining 500 pixels.\n var finishedColsGrew = true;\n var loopCount = 0;\n var _loop_2 = function () {\n loopCount++;\n if (loopCount > 1000) {\n // this should never happen, but in the future, someone might introduce a bug here,\n // so we stop the browser from hanging and report bug properly\n console.error('ag-Grid: infinite loop in resizeColumnSets');\n return \"break\";\n }\n finishedColsGrew = false;\n var subsetCols = [];\n var subsetRatioTotal = 0;\n var pixelsToDistribute = width;\n columns.forEach(function (col, index) {\n var thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n }\n else {\n subsetCols.push(col);\n var ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n }\n });\n // because we are not using all of the ratios (cols can be missing),\n // we scale the ratio. if all columns are included, then subsetRatioTotal=1,\n // and so the ratioScale will be 1.\n var ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach(function (col, index) {\n var lastCol = index === (subsetCols.length - 1);\n var colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n }\n else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n if (colNewWidth < col.getMinWidth()) {\n colNewWidth = col.getMinWidth();\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n else if (col.getMaxWidth() > 0 && colNewWidth > col.getMaxWidth()) {\n colNewWidth = col.getMaxWidth();\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n };\n while (finishedColsGrew) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n columns.forEach(function (col) {\n var newWidth = newWidths[col.getId()];\n if (col.getActualWidth() !== newWidth) {\n col.setActualWidth(newWidth, source);\n changedCols.push(col);\n }\n });\n });\n // if no cols changed, then no need to update more or send event.\n var atLeastOneColChanged = changedCols.length > 0;\n if (atLeastOneColChanged) {\n this.setLeftValues(source);\n this.updateBodyWidths();\n this.checkDisplayedVirtualColumns();\n }\n // check for change first, to avoid unnecessary firing of events\n // however we always fire 'finished' events. this is important\n // when groups are resized, as if the group is changing slowly,\n // eg 1 pixel at a time, then each change will fire change events\n // in all the columns in the group, but only one with get the pixel.\n if (atLeastOneColChanged || finished) {\n var event_4 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: allCols,\n column: allCols.length === 1 ? allCols[0] : null,\n finished: finished,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_4);\n }\n };\n ColumnController.prototype.setColumnAggFunc = function (column, aggFunc, source) {\n if (source === void 0) { source = \"api\"; }\n if (!column) {\n return;\n }\n column.setAggFunc(aggFunc);\n var event = {\n type: Events.EVENT_COLUMN_VALUE_CHANGED,\n columns: [column],\n column: column,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.rowGroupColumns[fromIndex];\n this.rowGroupColumns.splice(fromIndex, 1);\n this.rowGroupColumns.splice(toIndex, 0, column);\n var event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n columns: this.rowGroupColumns,\n column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n console.warn('ag-Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n console.warn('ag-Grid: remember that you should not count the moving columns when calculating the new index');\n return;\n }\n // we want to pull all the columns out first and put them into an ordered list\n var columnsToMove = this.getGridColumns(columnsToMoveKeys);\n var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);\n if (failedRules) {\n return;\n }\n _.moveInArray(this.gridColumns, columnsToMove, toIndex);\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: columnsToMove,\n column: columnsToMove.length === 1 ? columnsToMove[0] : null,\n toIndex: toIndex,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n this.columnAnimationService.finish();\n };\n ColumnController.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n // make a copy of what the grid columns would look like after the move\n var proposedColumnOrder = this.gridColumns.slice();\n _.moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n // then check that the new proposed order of the columns passes all rules\n if (!this.doesMovePassMarryChildren(proposedColumnOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(proposedColumnOrder)) {\n return false;\n }\n return true;\n };\n ColumnController.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {\n var foundNonLocked = false;\n var rulePassed = true;\n // go though the cols, see if any non-locked appear before any locked\n proposedColumnOrder.forEach(function (col) {\n if (col.getColDef().lockPosition) {\n if (foundNonLocked) {\n rulePassed = false;\n }\n }\n else {\n foundNonLocked = true;\n }\n });\n return rulePassed;\n };\n ColumnController.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {\n var rulePassed = true;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {\n if (!(child instanceof OriginalColumnGroup)) {\n return;\n }\n var columnGroup = child;\n var marryChildren = columnGroup.getColGroupDef() && columnGroup.getColGroupDef().marryChildren;\n if (!marryChildren) {\n return;\n }\n var newIndexes = [];\n columnGroup.getLeafColumns().forEach(function (col) {\n var newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n var maxIndex = Math.max.apply(Math, newIndexes);\n var minIndex = Math.min.apply(Math, newIndexes);\n // spread is how far the first column in this group is away from the last column\n var spread = maxIndex - minIndex;\n var maxSpread = columnGroup.getLeafColumns().length - 1;\n // if the columns\n if (spread > maxSpread) {\n rulePassed = false;\n }\n // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n });\n return rulePassed;\n };\n ColumnController.prototype.moveColumn = function (key, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.moveColumns([key], toIndex, source);\n };\n ColumnController.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.gridColumns[fromIndex];\n this.moveColumn(column, toIndex, source);\n };\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n ColumnController.prototype.getBodyContainerWidth = function () {\n return this.bodyWidth;\n };\n ColumnController.prototype.getContainerWidth = function (pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n return this.leftWidth;\n case Constants.PINNED_RIGHT:\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n };\n // after setColumnWidth or updateGroupsAndDisplayedColumns\n ColumnController.prototype.updateBodyWidths = function () {\n var newBodyWidth = this.getWidthOfColsInList(this.displayedCenterColumns);\n var newLeftWidth = this.getWidthOfColsInList(this.displayedLeftColumns);\n var newRightWidth = this.getWidthOfColsInList(this.displayedRightColumns);\n // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n // columns, due to RTL inverting the y coordinates\n this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n // when this fires, it is picked up by the gridPanel, which ends up in\n // gridPanel calling setWidthAndScrollPosition(), which in turn calls setVirtualViewportPosition()\n var event_5 = {\n type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_5);\n }\n };\n // + rowController\n ColumnController.prototype.getValueColumns = function () {\n return this.valueColumns ? this.valueColumns : [];\n };\n // + rowController\n ColumnController.prototype.getPivotColumns = function () {\n return this.pivotColumns ? this.pivotColumns : [];\n };\n // + clientSideRowModel\n ColumnController.prototype.isPivotActive = function () {\n return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n };\n // + toolPanel\n ColumnController.prototype.getRowGroupColumns = function () {\n return this.rowGroupColumns ? this.rowGroupColumns : [];\n };\n // + rowController -> while inserting rows\n ColumnController.prototype.getDisplayedCenterColumns = function () {\n return this.displayedCenterColumns;\n };\n // + rowController -> while inserting rows\n ColumnController.prototype.getDisplayedLeftColumns = function () {\n return this.displayedLeftColumns;\n };\n ColumnController.prototype.getDisplayedRightColumns = function () {\n return this.displayedRightColumns;\n };\n ColumnController.prototype.getDisplayedColumns = function (type) {\n switch (type) {\n case Constants.PINNED_LEFT:\n return this.getDisplayedLeftColumns();\n case Constants.PINNED_RIGHT:\n return this.getDisplayedRightColumns();\n default:\n return this.getDisplayedCenterColumns();\n }\n };\n // used by:\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n ColumnController.prototype.getAllPrimaryColumns = function () {\n return this.primaryColumns ? this.primaryColumns.slice() : null;\n };\n ColumnController.prototype.getSecondaryColumns = function () {\n return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n };\n ColumnController.prototype.getAllColumnsForQuickFilter = function () {\n return this.columnsForQuickFilter;\n };\n // + moveColumnController\n ColumnController.prototype.getAllGridColumns = function () {\n return this.gridColumns;\n };\n ColumnController.prototype.isEmpty = function () {\n return _.missingOrEmpty(this.gridColumns);\n };\n ColumnController.prototype.isRowGroupEmpty = function () {\n return _.missingOrEmpty(this.rowGroupColumns);\n };\n ColumnController.prototype.setColumnVisible = function (key, visible, source) {\n if (source === void 0) { source = \"api\"; }\n this.setColumnsVisible([key], visible, source);\n };\n ColumnController.prototype.setColumnsVisible = function (keys, visible, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n this.actionOnGridColumns(keys, function (column) {\n if (column.isVisible() !== visible) {\n column.setVisible(visible, source);\n return true;\n }\n return false;\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: visible,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n ColumnController.prototype.setColumnPinned = function (key, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.setColumnsPinned([key], pinned, source);\n }\n };\n ColumnController.prototype.setColumnsPinned = function (keys, pinned, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (this.gridOptionsWrapper.getDomLayout() === 'print') {\n console.warn(\"Changing the column pinning status is not allowed with domLayout='print'\");\n return;\n }\n this.columnAnimationService.start();\n var actualPinned;\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n actualPinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n actualPinned = Constants.PINNED_RIGHT;\n }\n else {\n actualPinned = null;\n }\n this.actionOnGridColumns(keys, function (col) {\n if (col.getPinned() !== actualPinned) {\n col.setPinned(actualPinned);\n return true;\n }\n return false;\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: actualPinned,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n // does an action on a set of columns. provides common functionality for looking up the\n // columns based on key, getting a list of effected columns, and then updated the event\n // with either one column (if it was just one col) or a list of columns\n // used by: autoResize, setVisible, setPinned\n ColumnController.prototype.actionOnGridColumns = function (// the column keys this action will be on\n keys, \n // the action to do - if this returns false, the column was skipped\n // and won't be included in the event\n action, \n // should return back a column event of the right type\n source, createEvent) {\n var _this = this;\n if (_.missingOrEmpty(keys)) {\n return;\n }\n var updatedColumns = [];\n keys.forEach(function (key) {\n var column = _this.getGridColumn(key);\n if (!column) {\n return;\n }\n // need to check for false with type (ie !== instead of !=)\n // as not returning anything (undefined) would also be false\n var resultOfAction = action(column);\n if (resultOfAction !== false) {\n updatedColumns.push(column);\n }\n });\n if (!updatedColumns.length) {\n return;\n }\n this.updateDisplayedColumns(source);\n if (_.exists(createEvent) && createEvent) {\n var event_6 = createEvent();\n event_6.columns = updatedColumns;\n event_6.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event_6);\n }\n };\n ColumnController.prototype.getDisplayedColBefore = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n return null;\n };\n // used by:\n // + rowRenderer -> for navigation\n ColumnController.prototype.getDisplayedColAfter = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < (allDisplayedColumns.length - 1)) {\n return allDisplayedColumns[oldIndex + 1];\n }\n return null;\n };\n ColumnController.prototype.getDisplayedGroupAfter = function (columnGroup) {\n // pick one col in this group at random\n var col = columnGroup.getDisplayedLeafColumns()[0];\n var requiredLevel = columnGroup.getOriginalColumnGroup().getLevel();\n while (true) {\n // keep moving to the next col, until we get to another group\n col = this.getDisplayedColAfter(col);\n // if no col after, means no group after\n if (!col) {\n return null;\n }\n // get group at same level as the one we are looking for\n var groupPointer = col.getParent();\n while (groupPointer.getOriginalColumnGroup().getLevel() !== requiredLevel) {\n groupPointer = groupPointer.getParent();\n }\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n };\n ColumnController.prototype.isPinningLeft = function () {\n return this.displayedLeftColumns.length > 0;\n };\n ColumnController.prototype.isPinningRight = function () {\n return this.displayedRightColumns.length > 0;\n };\n ColumnController.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n var result = this.primaryColumns ? this.primaryColumns.slice(0) : [];\n if (this.groupAutoColumns && _.exists(this.groupAutoColumns)) {\n this.groupAutoColumns.forEach(function (col) { return result.push(col); });\n }\n if (this.secondaryColumnsPresent && this.secondaryColumns) {\n this.secondaryColumns.forEach(function (column) { return result.push(column); });\n }\n return result;\n };\n ColumnController.prototype.createStateItemFromColumn = function (column) {\n var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n return {\n colId: column.getColId(),\n hide: !column.isVisible(),\n aggFunc: aggFunc,\n width: column.getActualWidth(),\n pivotIndex: pivotIndex,\n pinned: column.getPinned(),\n rowGroupIndex: rowGroupIndex,\n flex: column.getFlex()\n };\n };\n ColumnController.prototype.getColumnState = function () {\n if (_.missing(this.primaryColumns)) {\n return [];\n }\n var primaryColumnState = this.primaryColumns.map(this.createStateItemFromColumn.bind(this));\n var groupAutoColumnState = this.groupAutoColumns\n // if groupAutoCols, then include them\n ? this.groupAutoColumns.map(this.createStateItemFromColumn.bind(this))\n // otherwise no\n : [];\n var columnStateList = groupAutoColumnState.concat(primaryColumnState);\n if (!this.pivotMode) {\n this.orderColumnStateList(columnStateList);\n }\n return columnStateList;\n };\n ColumnController.prototype.orderColumnStateList = function (columnStateList) {\n var gridColumnIds = this.gridColumns.map(function (column) { return column.getColId(); });\n columnStateList.sort(function (itemA, itemB) {\n var posA = gridColumnIds.indexOf(itemA.colId);\n var posB = gridColumnIds.indexOf(itemB.colId);\n return posA - posB;\n });\n };\n ColumnController.prototype.resetColumnState = function (suppressEverythingEvent, source) {\n // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,\n // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.\n // As a work around, developers should just put lockPosition columns first in their colDef list.\n if (suppressEverythingEvent === void 0) { suppressEverythingEvent = false; }\n if (source === void 0) { source = \"api\"; }\n // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n var columnStates = [];\n // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.\n // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,\n // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000\n var letRowGroupIndex = 1000;\n var letPivotIndex = 1000;\n if (primaryColumns) {\n primaryColumns.forEach(function (column) {\n var rowGroupIndex = column.getColDef().rowGroupIndex;\n var rowGroup = column.getColDef().rowGroup;\n var pivotIndex = column.getColDef().pivotIndex;\n var pivot = column.getColDef().pivot;\n var stateItem = {\n colId: column.getColId(),\n aggFunc: column.getColDef().aggFunc,\n hide: column.getColDef().hide,\n pinned: column.getColDef().pinned,\n rowGroupIndex: rowGroupIndex,\n pivotIndex: column.getColDef().pivotIndex,\n width: column.getColDef().width\n };\n if (_.missing(rowGroupIndex) && rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (_.missing(pivotIndex) && pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n }\n this.setColumnState(columnStates, suppressEverythingEvent, source);\n };\n ColumnController.prototype.setColumnState = function (columnStates, suppressEverythingEvent, source) {\n var _this = this;\n if (suppressEverythingEvent === void 0) { suppressEverythingEvent = false; }\n if (source === void 0) { source = \"api\"; }\n if (_.missingOrEmpty(this.primaryColumns)) {\n return false;\n }\n var columnStateBefore = this.getColumnState();\n this.autoGroupsNeedBuilding = true;\n // at the end below, this list will have all columns we got no state for\n var columnsWithNoState = this.primaryColumns.slice();\n this.rowGroupColumns = [];\n this.valueColumns = [];\n this.pivotColumns = [];\n var success = true;\n var rowGroupIndexes = {};\n var pivotIndexes = {};\n var autoGroupColumnStates = [];\n if (columnStates) {\n columnStates.forEach(function (state) {\n // auto group columns are re-created so deferring syncing with ColumnState\n if (_.exists(_this.getAutoColumn(state.colId))) {\n autoGroupColumnStates.push(state);\n return;\n }\n var column = _this.getPrimaryColumn(state.colId);\n if (!column) {\n console.warn('ag-grid: column ' + state.colId + ' not found');\n success = false;\n }\n else {\n _this.syncColumnWithStateItem(column, state, rowGroupIndexes, pivotIndexes, source);\n _.removeFromArray(columnsWithNoState, column);\n }\n });\n if (this.flexActive) {\n this.refreshFlexedColumns(undefined, undefined, true);\n }\n }\n // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n columnsWithNoState.forEach(this.syncColumnWithNoState.bind(this));\n // sort the lists according to the indexes that were provided\n this.rowGroupColumns.sort(this.sortColumnListUsingIndexes.bind(this, rowGroupIndexes));\n this.pivotColumns.sort(this.sortColumnListUsingIndexes.bind(this, pivotIndexes));\n this.updateGridColumns();\n // sync newly created auto group columns with ColumnState\n autoGroupColumnStates.forEach(function (stateItem) {\n var autoCol = _this.getAutoColumn(stateItem.colId);\n _this.syncColumnWithStateItem(autoCol, stateItem, rowGroupIndexes, pivotIndexes, source);\n });\n if (columnStates) {\n var orderOfColIds_1 = columnStates.map(function (stateItem) { return stateItem.colId; });\n this.gridColumns.sort(function (colA, colB) {\n var indexA = orderOfColIds_1.indexOf(colA.getId());\n var indexB = orderOfColIds_1.indexOf(colB.getId());\n return indexA - indexB;\n });\n }\n // this is already done in updateGridColumns, however we changed the order above (to match the order of the state\n // columns) so we need to do it again. we could of put logic into the order above to take into account fixed\n // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here\n // is less sexy for the code here, but it keeps consistency.\n this.putFixedColumnsFirst();\n this.updateDisplayedColumns(source);\n if (!suppressEverythingEvent) {\n var event_7 = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_7);\n }\n this.raiseColumnEvents(columnStateBefore, source);\n return success;\n };\n ColumnController.prototype.raiseColumnEvents = function (columnStateBefore, source) {\n var _this = this;\n if (this.gridOptionsWrapper.isSuppressSetColumnStateEvents()) {\n return;\n }\n var columnStateAfter = this.getColumnState();\n // raises generic ColumnEvents where all columns are returned rather than what has changed\n var raiseEventWithAllColumns = function (eventType, idMapper, columns) {\n var unchanged = areEqual(columnStateBefore.map(idMapper).sort(), columnStateAfter.map(idMapper).sort());\n if (unchanged) {\n return;\n }\n // returning all columns rather than what has changed!\n var event = {\n type: eventType,\n columns: columns,\n column: columns.length === 1 ? columns[0] : null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n };\n // determines which columns have changed according to supplied predicate\n var getChangedColumns = function (changedPredicate) {\n var changedColumns = [];\n var columnStateBeforeMap = {};\n columnStateBefore.forEach(function (col) {\n columnStateBeforeMap[col.colId] = col;\n });\n _this.gridColumns.forEach(function (column) {\n var colStateBefore = columnStateBeforeMap[column.getColId()];\n if (!colStateBefore || changedPredicate(colStateBefore, column)) {\n changedColumns.push(column);\n }\n });\n return changedColumns;\n };\n // generic ColumnEvents which return current column list\n var valueColumnIdMapper = function (cs) { return cs.colId + '-' + cs.aggFunc; };\n raiseEventWithAllColumns(Events.EVENT_COLUMN_VALUE_CHANGED, valueColumnIdMapper, this.valueColumns);\n var pivotColumnIdMapper = function (cs) { return cs.colId + '-' + cs.pivotIndex; };\n raiseEventWithAllColumns(Events.EVENT_COLUMN_PIVOT_CHANGED, pivotColumnIdMapper, this.pivotColumns);\n var rowGroupColumnIdMapper = function (cs) { return cs.colId + '-' + cs.rowGroupIndex; };\n raiseEventWithAllColumns(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, rowGroupColumnIdMapper, this.rowGroupColumns);\n // specific ColumnEvents which return what's changed\n var pinnedChangePredicate = function (cs, c) { return cs.pinned !== c.getPinned(); };\n this.raiseColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n var visibilityChangePredicate = function (cs, c) { return cs.hide === c.isVisible(); };\n var cols = getChangedColumns(visibilityChangePredicate);\n this.raiseColumnVisibleEvent(cols, source);\n var resizeChangePredicate = function (cs, c) { return cs.width !== c.getActualWidth(); };\n this.raiseColumnResizeEvent(getChangedColumns(resizeChangePredicate), source);\n // special handling for moved column events\n this.raiseColumnMovedEvent(columnStateBefore, source);\n };\n ColumnController.prototype.raiseColumnPinnedEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: null,\n columns: changedColumns,\n column: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n var event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: undefined,\n columns: changedColumns,\n column: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.raiseColumnResizeEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n var event = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: changedColumns,\n column: null,\n finished: true,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.raiseColumnMovedEvent = function (columnStateBefore, source) {\n var movedColumns = [];\n var columnStateAfter = this.getColumnState();\n var _loop_3 = function (i) {\n var before = columnStateBefore[i];\n var after = columnStateAfter[i];\n // don't consider column if reintroduced or hidden\n if (!before || after.hide) {\n return \"continue\";\n }\n if (before.colId !== after.colId) {\n var predicate = function (column) { return column.getColId() === after.colId; };\n var movedColumn = _.find(this_1.allDisplayedColumns, predicate);\n movedColumns.push(movedColumn);\n }\n };\n var this_1 = this;\n for (var i = 0; i < columnStateAfter.length; i++) {\n _loop_3(i);\n }\n if (!movedColumns.length) {\n return;\n }\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: movedColumns,\n column: null,\n toIndex: undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.sortColumnListUsingIndexes = function (indexes, colA, colB) {\n var indexA = indexes[colA.getId()];\n var indexB = indexes[colB.getId()];\n return indexA - indexB;\n };\n ColumnController.prototype.syncColumnWithNoState = function (column, source) {\n column.setVisible(false, source);\n column.setAggFunc(null);\n column.setPinned(null);\n column.setRowGroupActive(false, source);\n column.setPivotActive(false, source);\n column.setValueActive(false, source);\n };\n ColumnController.prototype.syncColumnWithStateItem = function (column, stateItem, rowGroupIndexes, pivotIndexes, source) {\n if (!column) {\n return;\n }\n // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n column.setVisible(!stateItem.hide, source);\n // sets pinned to 'left' or 'right'\n column.setPinned(stateItem.pinned);\n // if width provided and valid, use it, otherwise stick with the old width\n var minColWidth = this.gridOptionsWrapper.getMinColWidth();\n if (stateItem.flex != null) {\n column.setFlex(stateItem.flex);\n if (!this.flexActive && stateItem.flex) {\n this.flexActive = true;\n }\n }\n if (stateItem.width && minColWidth &&\n (stateItem.width >= minColWidth)) {\n column.setActualWidth(stateItem.width, source);\n }\n if (typeof stateItem.aggFunc === 'string') {\n column.setAggFunc(stateItem.aggFunc);\n column.setValueActive(true, source);\n this.valueColumns.push(column);\n }\n else {\n if (_.exists(stateItem.aggFunc)) {\n console.warn('ag-Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n 'functions, register the functions first before using them in get/set state. This is because it is ' +\n 'intended for the column state to be stored and retrieved as simple JSON.');\n }\n column.setAggFunc(null);\n column.setValueActive(false, source);\n }\n if (typeof stateItem.rowGroupIndex === 'number') {\n this.rowGroupColumns.push(column);\n column.setRowGroupActive(true, source);\n rowGroupIndexes[column.getId()] = stateItem.rowGroupIndex;\n }\n else {\n column.setRowGroupActive(false, source);\n }\n if (typeof stateItem.pivotIndex === 'number') {\n this.pivotColumns.push(column);\n column.setPivotActive(true, source);\n pivotIndexes[column.getId()] = stateItem.pivotIndex;\n }\n else {\n column.setPivotActive(false, source);\n }\n };\n ColumnController.prototype.getGridColumns = function (keys) {\n return this.getColumns(keys, this.getGridColumn.bind(this));\n };\n ColumnController.prototype.getColumns = function (keys, columnLookupCallback) {\n var foundColumns = [];\n if (keys) {\n keys.forEach(function (key) {\n var column = columnLookupCallback(key);\n if (column) {\n foundColumns.push(column);\n }\n });\n }\n return foundColumns;\n };\n // used by growGroupPanel\n ColumnController.prototype.getColumnWithValidation = function (key) {\n if (key == null) {\n return null;\n }\n var column = this.getGridColumn(key);\n if (!column) {\n console.warn('ag-Grid: could not find column ' + key);\n }\n return column;\n };\n ColumnController.prototype.getPrimaryColumn = function (key) {\n return this.getColumn(key, this.primaryColumns);\n };\n ColumnController.prototype.getGridColumn = function (key) {\n return this.getColumn(key, this.gridColumns);\n };\n ColumnController.prototype.getColumn = function (key, columnList) {\n if (!key) {\n return null;\n }\n for (var i = 0; i < columnList.length; i++) {\n if (this.columnsMatch(columnList[i], key)) {\n return columnList[i];\n }\n }\n return this.getAutoColumn(key);\n };\n ColumnController.prototype.getAutoColumn = function (key) {\n var _this = this;\n if (!this.groupAutoColumns ||\n !_.exists(this.groupAutoColumns) ||\n _.missing(this.groupAutoColumns)) {\n return null;\n }\n return _.find(this.groupAutoColumns, function (groupCol) { return _this.columnsMatch(groupCol, key); });\n };\n ColumnController.prototype.columnsMatch = function (column, key) {\n var columnMatches = column === key;\n var colDefMatches = column.getColDef() === key;\n var idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n };\n ColumnController.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n if (includeAggFunc === void 0) { includeAggFunc = false; }\n if (!column) {\n return null;\n }\n var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n return headerName;\n };\n ColumnController.prototype.getDisplayNameForOriginalColumnGroup = function (columnGroup, originalColumnGroup, location) {\n var colGroupDef = originalColumnGroup ? originalColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, originalColumnGroup, location);\n }\n return null;\n };\n ColumnController.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n return this.getDisplayNameForOriginalColumnGroup(columnGroup, columnGroup.getOriginalColumnGroup(), location);\n };\n // location is where the column is going to appear, ie who is calling us\n ColumnController.prototype.getHeaderName = function (colDef, column, columnGroup, originalColumnGroup, location) {\n var headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n var params = {\n colDef: colDef,\n column: column,\n columnGroup: columnGroup,\n originalColumnGroup: originalColumnGroup,\n location: location,\n api: this.gridOptionsWrapper.getApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n }\n else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n }\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n else if (colDef.headerName != null) {\n return colDef.headerName;\n }\n else if (colDef.field) {\n return _.camelCaseToHumanText(colDef.field);\n }\n return '';\n };\n /*\n private getHeaderGroupName(columnGroup: ColumnGroup): string {\n let colGroupDef = columnGroup.getOriginalColumnGroup().getColGroupDef();\n let headerValueGetter = colGroupDef.headerValueGetter;\n\n if (headerValueGetter) {\n let params = {\n columnGroup: columnGroup,\n colDef: colGroupDef,\n api: this.gridOptionsWrapper.getApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n } else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n } else {\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n } else {\n return colGroupDef.headerName;\n }\n }\n */\n ColumnController.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {\n return headerName;\n }\n // only columns with aggregation active can have aggregations\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotActiveOnThisColumn = _.exists(pivotValueColumn);\n var aggFunc = null;\n var aggFuncFound;\n // otherwise we have a measure that is active, and we are doing aggregation on it\n if (pivotActiveOnThisColumn) {\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n }\n else {\n var measureActive = column.isValueActive();\n var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n if (measureActive && aggregationPresent) {\n aggFunc = column.getAggFunc();\n aggFuncFound = true;\n }\n else {\n aggFuncFound = false;\n }\n }\n if (aggFuncFound) {\n var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n return aggFuncStringTranslated + \"(\" + headerName + \")\";\n }\n return headerName;\n };\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n ColumnController.prototype.getColumnGroup = function (colId, instanceId) {\n if (!colId) {\n return null;\n }\n if (colId instanceof ColumnGroup) {\n return colId;\n }\n var allColumnGroups = this.getAllDisplayedColumnGroups();\n var checkInstanceId = typeof instanceId === 'number';\n var result = null;\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n var matched = void 0;\n if (checkInstanceId) {\n matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();\n }\n else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n };\n ColumnController.prototype.isReady = function () {\n return this.ready;\n };\n ColumnController.prototype.createValueColumns = function (source, oldPrimaryColumns) {\n this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); }, \n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n function () { return null; }, \n // aggFunc is a string, so return it's existence\n function (colDef) { return !!colDef.aggFunc; });\n // all new columns added will have aggFunc missing, so set it to what is in the colDef\n this.valueColumns.forEach(function (col) {\n if (!col.getAggFunc()) {\n col.setAggFunc(col.getColDef().aggFunc);\n }\n });\n };\n ColumnController.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {\n this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.rowGroup; });\n };\n ColumnController.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getValueFunc) {\n var _this = this;\n if (!previousCols) {\n previousCols = [];\n }\n // remove cols that no longer exist\n var colPresentInPrimaryFunc = function (col) { return _this.primaryColumns.indexOf(col) >= 0; };\n var colMissingFromPrimaryFunc = function (col) { return _this.primaryColumns.indexOf(col) < 0; };\n var colNewFunc = function (col) { return !oldPrimaryColumns || oldPrimaryColumns.indexOf(col) < 0; };\n var removedCols = previousCols.filter(colMissingFromPrimaryFunc);\n var existingCols = previousCols.filter(colPresentInPrimaryFunc);\n var newPrimaryCols = this.primaryColumns.filter(colNewFunc);\n removedCols.forEach(function (col) { return setFlagFunc(col, false); });\n var newCols = [];\n // we only want to work on new columns, as old columns already got processed first time around\n // pull out items with xxxIndex\n newPrimaryCols.forEach(function (col) {\n var index = getIndexFunc(col.getColDef());\n if (typeof index === 'number') {\n newCols.push(col);\n }\n });\n // then sort them\n newCols.sort(function (colA, colB) {\n var indexA = getIndexFunc(colA.getColDef());\n var indexB = getIndexFunc(colB.getColDef());\n if (indexA === indexB) {\n return 0;\n }\n else if (indexA < indexB) {\n return -1;\n }\n return 1;\n });\n // now just pull out items xxx (boolean value), they will be added at the end\n // after the indexed ones, but in the order the columns appear\n newPrimaryCols.forEach(function (col) {\n var booleanValue = getValueFunc(col.getColDef());\n if (booleanValue) {\n // if user already specified xxxIndex then we skip it as this col already included\n if (newCols.indexOf(col) >= 0) {\n return;\n }\n newCols.push(col);\n }\n });\n newCols.forEach(function (col) { return setFlagFunc(col, true); });\n var res = existingCols.concat(newCols);\n return res;\n };\n ColumnController.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {\n this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.pivot; });\n };\n ColumnController.prototype.resetColumnGroupState = function (source) {\n if (source === void 0) { source = \"api\"; }\n var stateItems = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {\n if (child instanceof OriginalColumnGroup) {\n var groupState = {\n groupId: child.getGroupId(),\n open: child.getColGroupDef().openByDefault\n };\n stateItems.push(groupState);\n }\n });\n this.setColumnGroupState(stateItems, source);\n };\n ColumnController.prototype.getColumnGroupState = function () {\n var columnGroupState = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof OriginalColumnGroup) {\n var originalColumnGroup = node;\n columnGroupState.push({\n groupId: originalColumnGroup.getGroupId(),\n open: originalColumnGroup.isExpanded()\n });\n }\n });\n return columnGroupState;\n };\n ColumnController.prototype.setColumnGroupState = function (stateItems, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n var impactedGroups = [];\n stateItems.forEach(function (stateItem) {\n var groupKey = stateItem.groupId;\n var newValue = stateItem.open;\n var originalColumnGroup = _this.getOriginalColumnGroup(groupKey);\n if (!originalColumnGroup) {\n return;\n }\n if (originalColumnGroup.isExpanded() === newValue) {\n return;\n }\n _this.logger.log('columnGroupOpened(' + originalColumnGroup.getGroupId() + ',' + newValue + ')');\n originalColumnGroup.setExpanded(newValue);\n impactedGroups.push(originalColumnGroup);\n });\n this.updateGroupsAndDisplayedColumns(source);\n this.setFirstRightAndLastLeftPinned(source);\n impactedGroups.forEach(function (originalColumnGroup) {\n var event = {\n type: Events.EVENT_COLUMN_GROUP_OPENED,\n columnGroup: originalColumnGroup,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event);\n });\n this.columnAnimationService.finish();\n };\n // called by headerRenderer - when a header is opened or closed\n ColumnController.prototype.setColumnGroupOpened = function (key, newValue, source) {\n if (source === void 0) { source = \"api\"; }\n var keyAsString;\n if (key instanceof OriginalColumnGroup) {\n keyAsString = key.getId();\n }\n else {\n keyAsString = key;\n }\n this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n };\n ColumnController.prototype.getOriginalColumnGroup = function (key) {\n if (key instanceof OriginalColumnGroup) {\n return key;\n }\n if (typeof key !== 'string') {\n console.error('ag-Grid: group key must be a string');\n }\n // otherwise, search for the column group by id\n var res = null;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof OriginalColumnGroup) {\n var originalColumnGroup = node;\n if (originalColumnGroup.getId() === key) {\n res = originalColumnGroup;\n }\n }\n });\n return res;\n };\n ColumnController.prototype.calculateColumnsForDisplay = function () {\n var _this = this;\n var columnsForDisplay;\n if (this.pivotMode && !this.secondaryColumnsPresent) {\n // pivot mode is on, but we are not pivoting, so we only\n // show columns we are aggregating on\n columnsForDisplay = this.gridColumns.filter(function (column) {\n var isAutoGroupCol = _this.groupAutoColumns && _.includes(_this.groupAutoColumns, column);\n var isValueCol = _this.valueColumns && _.includes(_this.valueColumns, column);\n return isAutoGroupCol || isValueCol;\n });\n }\n else {\n // otherwise continue as normal. this can be working on the primary\n // or secondary columns, whatever the gridColumns are set to\n columnsForDisplay = this.gridColumns.filter(function (column) {\n // keep col if a) it's auto-group or b) it's visible\n var isAutoGroupCol = _this.groupAutoColumns && _.includes(_this.groupAutoColumns, column);\n return isAutoGroupCol || column.isVisible();\n });\n }\n return columnsForDisplay;\n };\n ColumnController.prototype.checkColSpanActiveInCols = function (columns) {\n var result = false;\n columns.forEach(function (col) {\n if (_.exists(col.getColDef().colSpan)) {\n result = true;\n }\n });\n return result;\n };\n ColumnController.prototype.calculateColumnsForGroupDisplay = function () {\n var _this = this;\n this.groupDisplayColumns = [];\n var checkFunc = function (col) {\n var colDef = col.getColDef();\n if (colDef && _.exists(colDef.showRowGroup)) {\n _this.groupDisplayColumns.push(col);\n }\n };\n this.gridColumns.forEach(checkFunc);\n if (this.groupAutoColumns) {\n this.groupAutoColumns.forEach(checkFunc);\n }\n };\n ColumnController.prototype.getGroupDisplayColumns = function () {\n return this.groupDisplayColumns;\n };\n ColumnController.prototype.updateDisplayedColumns = function (source) {\n var columnsForDisplay = this.calculateColumnsForDisplay();\n this.buildDisplayedTrees(columnsForDisplay);\n this.calculateColumnsForGroupDisplay();\n // also called when group opened/closed\n this.updateGroupsAndDisplayedColumns(source);\n // also called when group opened/closed\n this.setFirstRightAndLastLeftPinned(source);\n };\n ColumnController.prototype.isSecondaryColumnsPresent = function () {\n return this.secondaryColumnsPresent;\n };\n ColumnController.prototype.setSecondaryColumns = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n var newColsPresent = colDefs && colDefs.length > 0;\n // if not cols passed, and we had to cols anyway, then do nothing\n if (!newColsPresent && !this.secondaryColumnsPresent) {\n return;\n }\n if (newColsPresent) {\n this.processSecondaryColumnDefinitions(colDefs);\n var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false);\n this.secondaryBalancedTree = balancedTreeResult.columnTree;\n this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n this.secondaryColumnsPresent = true;\n }\n else {\n this.secondaryBalancedTree = null;\n this.secondaryHeaderRowCount = -1;\n this.secondaryColumns = null;\n this.secondaryColumnsPresent = false;\n }\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n };\n ColumnController.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n var columnCallback = this.gridOptionsWrapper.getProcessSecondaryColDefFunc();\n var groupCallback = this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();\n if (!columnCallback && !groupCallback) {\n return undefined;\n }\n var searchForColDefs = function (colDefs2) {\n colDefs2.forEach(function (abstractColDef) {\n var isGroup = _.exists(abstractColDef.children);\n if (isGroup) {\n var colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n }\n else {\n var colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n };\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n };\n // called from: setColumnState, setColumnDefs, setSecondaryColumns\n ColumnController.prototype.updateGridColumns = function () {\n if (this.gridColsArePrimary) {\n this.lastPrimaryOrder = this.gridColumns;\n }\n if (this.secondaryColumns && this.secondaryBalancedTree) {\n this.gridBalancedTree = this.secondaryBalancedTree.slice();\n this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n this.gridColumns = this.secondaryColumns.slice();\n this.gridColsArePrimary = false;\n }\n else {\n this.gridBalancedTree = this.primaryColumnTree.slice();\n this.gridHeaderRowCount = this.primaryHeaderRowCount;\n this.gridColumns = this.primaryColumns.slice();\n this.gridColsArePrimary = true;\n // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns\n // when this happens (eg if user moved a column) rather than revert back to the original column order.\n // likewise if changing in/out of pivot mode, we want to maintain the order of the primary cols\n this.orderGridColsLikeLastPrimary();\n }\n this.addAutoGroupToGridColumns();\n this.autoRowHeightColumns = this.gridColumns.filter(function (col) { return col.getColDef().autoHeight; });\n this.putFixedColumnsFirst();\n this.setupQuickFilterColumns();\n this.clearDisplayedColumns();\n this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n var event = {\n type: Events.EVENT_GRID_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.orderGridColsLikeLastPrimary = function () {\n var _this = this;\n if (_.missing(this.lastPrimaryOrder)) {\n return;\n }\n // only do the sort if at least one column is accounted for. columns will be not accounted for\n // if changing from secondary to primary columns\n var noColsFound = true;\n this.gridColumns.forEach(function (col) {\n if (_this.lastPrimaryOrder.indexOf(col) >= 0) {\n noColsFound = false;\n }\n });\n if (noColsFound) {\n return;\n }\n // order cols in the same order as before. we need to make sure that all\n // cols still exists, so filter out any that no longer exist.\n var oldColsOrdered = this.lastPrimaryOrder.filter(function (col) { return _this.gridColumns.indexOf(col) >= 0; });\n var newColsOrdered = this.gridColumns.filter(function (col) { return oldColsOrdered.indexOf(col) < 0; });\n // add in the new columns, at the end (if no group), or at the end of the group (if a group)\n var newGridColumns = oldColsOrdered.slice();\n newColsOrdered.forEach(function (newCol) {\n var parent = newCol.getOriginalParent();\n // if no parent, means we are not grouping, so just add the column to the end\n if (!parent) {\n newGridColumns.push(newCol);\n return;\n }\n // find the group the column belongs to. if no siblings at the current level (eg col in group on it's\n // own) then go up one level and look for siblings there.\n var siblings = [];\n while (!siblings.length && parent) {\n var leafCols = parent.getLeafColumns();\n leafCols.forEach(function (leafCol) {\n var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n var noYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewGriColumns && noYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own\n if (!siblings.length) {\n newGridColumns.push(newCol);\n return;\n }\n // find index of last column in the group\n var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });\n var lastIndex = Math.max.apply(Math, indexes);\n _.insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n });\n this.gridColumns = newGridColumns;\n };\n ColumnController.prototype.isPrimaryColumnGroupsPresent = function () {\n return this.primaryHeaderRowCount > 1;\n };\n // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n // following scenarios:\n // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n ColumnController.prototype.setupQuickFilterColumns = function () {\n if (this.groupAutoColumns) {\n this.columnsForQuickFilter = this.primaryColumns.concat(this.groupAutoColumns);\n }\n else {\n this.columnsForQuickFilter = this.primaryColumns;\n }\n };\n ColumnController.prototype.putFixedColumnsFirst = function () {\n var locked = this.gridColumns.filter(function (c) { return c.getColDef().lockPosition; });\n var unlocked = this.gridColumns.filter(function (c) { return !c.getColDef().lockPosition; });\n this.gridColumns = locked.concat(unlocked);\n };\n ColumnController.prototype.addAutoGroupToGridColumns = function () {\n // add in auto-group here\n this.createGroupAutoColumnsIfNeeded();\n if (_.missing(this.groupAutoColumns)) {\n return;\n }\n this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n var autoColBalancedTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n this.gridBalancedTree = autoColBalancedTree.concat(this.gridBalancedTree);\n };\n // gets called after we copy down grid columns, to make sure any part of the gui\n // that tries to draw, eg the header, it will get empty lists of columns rather\n // than stale columns. for example, the header will received gridColumnsChanged\n // event, so will try and draw, but it will draw successfully when it acts on the\n // virtualColumnsChanged event\n ColumnController.prototype.clearDisplayedColumns = function () {\n this.displayedLeftColumnTree = [];\n this.displayedRightColumnTree = [];\n this.displayedCentreColumnTree = [];\n this.displayedLeftHeaderRows = {};\n this.displayedRightHeaderRows = {};\n this.displayedCentreHeaderRows = {};\n this.displayedLeftColumns = [];\n this.displayedRightColumns = [];\n this.displayedCenterColumns = [];\n this.allDisplayedColumns = [];\n this.allDisplayedVirtualColumns = [];\n };\n ColumnController.prototype.updateGroupsAndDisplayedColumns = function (source) {\n this.updateOpenClosedVisibilityInColumnGroups();\n this.updateDisplayedColumnsFromTrees(source);\n this.updateVirtualSets();\n this.refreshFlexedColumns(undefined, undefined, true);\n this.updateBodyWidths();\n // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n var event = {\n type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnController.prototype.updateDisplayedColumnsFromTrees = function (source) {\n this.addToDisplayedColumns(this.displayedLeftColumnTree, this.displayedLeftColumns);\n this.addToDisplayedColumns(this.displayedCentreColumnTree, this.displayedCenterColumns);\n this.addToDisplayedColumns(this.displayedRightColumnTree, this.displayedRightColumns);\n this.setupAllDisplayedColumns();\n this.setLeftValues(source);\n };\n ColumnController.prototype.setupAllDisplayedColumns = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.allDisplayedColumns = this.displayedRightColumns\n .concat(this.displayedCenterColumns)\n .concat(this.displayedLeftColumns);\n }\n else {\n this.allDisplayedColumns = this.displayedLeftColumns\n .concat(this.displayedCenterColumns)\n .concat(this.displayedRightColumns);\n }\n };\n // sets the left pixel position of each column\n ColumnController.prototype.setLeftValues = function (source) {\n this.setLeftValuesOfColumns(source);\n this.setLeftValuesOfGroups();\n };\n ColumnController.prototype.setLeftValuesOfColumns = function (source) {\n var _this = this;\n // go through each list of displayed columns\n var allColumns = this.primaryColumns.slice(0);\n // let totalColumnWidth = this.getWidthOfColsInList()\n var doingRtl = this.gridOptionsWrapper.isEnableRtl();\n [\n this.displayedLeftColumns,\n this.displayedRightColumns,\n this.displayedCenterColumns\n ].forEach(function (columns) {\n if (doingRtl) {\n // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n var left_1 = _this.getWidthOfColsInList(columns);\n columns.forEach(function (column) {\n left_1 -= column.getActualWidth();\n column.setLeft(left_1, source);\n });\n }\n else {\n // otherwise normal LTR, we start at zero\n var left_2 = 0;\n columns.forEach(function (column) {\n column.setLeft(left_2, source);\n left_2 += column.getActualWidth();\n });\n }\n _.removeAllFromArray(allColumns, columns);\n });\n // items left in allColumns are columns not displayed, so remove the left position. this is\n // important for the rows, as if a col is made visible, then taken out, then made visible again,\n // we don't want the animation of the cell floating in from the old position, whatever that was.\n allColumns.forEach(function (column) {\n column.setLeft(null, source);\n });\n };\n ColumnController.prototype.setLeftValuesOfGroups = function () {\n // a groups left value is the lest left value of it's children\n [\n this.displayedLeftColumnTree,\n this.displayedRightColumnTree,\n this.displayedCentreColumnTree\n ].forEach(function (columns) {\n columns.forEach(function (column) {\n if (column instanceof ColumnGroup) {\n var columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n };\n ColumnController.prototype.addToDisplayedColumns = function (displayedColumnTree, displayedColumns) {\n displayedColumns.length = 0;\n this.columnUtils.depthFirstDisplayedColumnTreeSearch(displayedColumnTree, function (child) {\n if (child instanceof Column) {\n displayedColumns.push(child);\n }\n });\n };\n ColumnController.prototype.updateDisplayedCenterVirtualColumns = function () {\n if (this.suppressColumnVirtualisation) {\n // no virtualisation, so don't filter\n this.allDisplayedCenterVirtualColumns = this.displayedCenterColumns;\n }\n else {\n // filter out what should be visible\n this.allDisplayedCenterVirtualColumns = this.filterOutColumnsWithinViewport();\n }\n this.allDisplayedVirtualColumns = this.allDisplayedCenterVirtualColumns\n .concat(this.displayedLeftColumns)\n .concat(this.displayedRightColumns);\n // return map of virtual col id's, for easy lookup when building the groups.\n // the map will be colId=>true, ie col id's mapping to 'true'.\n var result = {};\n this.allDisplayedVirtualColumns.forEach(function (col) {\n result[col.getId()] = true;\n });\n return result;\n };\n ColumnController.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n var result;\n switch (type) {\n case Constants.PINNED_LEFT:\n result = this.displayedLeftHeaderRows[dept];\n break;\n case Constants.PINNED_RIGHT:\n result = this.displayedRightHeaderRows[dept];\n break;\n default:\n result = this.displayedCentreHeaderRows[dept];\n break;\n }\n if (_.missing(result)) {\n result = [];\n }\n return result;\n };\n ColumnController.prototype.updateDisplayedVirtualGroups = function (virtualColIds) {\n // go through each group, see if any of it's cols are displayed, and if yes,\n // then this group is included\n this.displayedLeftHeaderRows = {};\n this.displayedRightHeaderRows = {};\n this.displayedCentreHeaderRows = {};\n var testGroup = function (children, result, dept) {\n var returnValue = false;\n for (var i = 0; i < children.length; i++) {\n // see if this item is within viewport\n var child = children[i];\n var addThisItem = void 0;\n if (child instanceof Column) {\n // for column, test if column is included\n addThisItem = virtualColIds[child.getId()] === true;\n }\n else {\n // if group, base decision on children\n var columnGroup = child;\n addThisItem = testGroup(columnGroup.getDisplayedChildren(), result, dept + 1);\n }\n if (addThisItem) {\n returnValue = true;\n if (!result[dept]) {\n result[dept] = [];\n }\n result[dept].push(child);\n }\n }\n return returnValue;\n };\n testGroup(this.displayedLeftColumnTree, this.displayedLeftHeaderRows, 0);\n testGroup(this.displayedRightColumnTree, this.displayedRightHeaderRows, 0);\n testGroup(this.displayedCentreColumnTree, this.displayedCentreHeaderRows, 0);\n };\n ColumnController.prototype.updateVirtualSets = function () {\n var virtualColIds = this.updateDisplayedCenterVirtualColumns();\n this.updateDisplayedVirtualGroups(virtualColIds);\n };\n ColumnController.prototype.filterOutColumnsWithinViewport = function () {\n return this.displayedCenterColumns.filter(this.isColumnInViewport.bind(this));\n };\n ColumnController.prototype.refreshFlexedColumns = function (updatedFlexViewportWidth, source, silent) {\n if (source === void 0) { source = 'flex'; }\n if (!this.flexActive) {\n return;\n }\n this.flexViewportWidth = updatedFlexViewportWidth || this.flexViewportWidth;\n if (!this.flexViewportWidth) {\n return;\n }\n // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.\n // A \"flexing column\" is one that has a 'flex' value set and is not currently being constrained by its\n // minWidth or maxWidth rules.\n var knownWidthColumns = this.displayedCenterColumns.filter(function (col) { return !col.getFlex(); });\n var flexingColumns = this.displayedCenterColumns.filter(function (col) { return col.getFlex(); });\n if (!flexingColumns.length) {\n this.flexActive = false;\n return;\n }\n var flexingColumnSizes = [];\n var spaceForFlexingColumns;\n outer: while (true) {\n var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);\n spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);\n for (var i = 0; i < flexingColumns.length; i++) {\n var col = flexingColumns[i];\n var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;\n var constrainedWidth = void 0;\n if (widthByFlexRule < col.getMinWidth()) {\n constrainedWidth = col.getMinWidth();\n }\n else if (col.getMaxWidth() != null && widthByFlexRule > col.getMaxWidth()) {\n constrainedWidth = col.getMaxWidth();\n }\n if (constrainedWidth) {\n // This column is not in fact flexing as it is being constrained to a specific size\n // so remove it from the list of flexing columns and start again\n col.setActualWidth(constrainedWidth, source);\n _.removeFromArray(flexingColumns, col);\n knownWidthColumns.push(col);\n continue outer;\n }\n flexingColumnSizes[i] = Math.round(widthByFlexRule);\n }\n break;\n }\n var remainingSpace = spaceForFlexingColumns;\n flexingColumns.forEach(function (col, i) {\n col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);\n remainingSpace -= flexingColumnSizes[i];\n });\n this.setLeftValues(source);\n if (!silent) {\n this.updateBodyWidths();\n this.fireResizedEventForColumns(flexingColumns, source);\n }\n };\n // called from api\n ColumnController.prototype.sizeColumnsToFit = function (gridWidth, source, silent) {\n if (source === void 0) { source = \"sizeColumnsToFit\"; }\n // avoid divide by zero\n var allDisplayedColumns = this.getAllDisplayedColumns();\n if (gridWidth <= 0 || !allDisplayedColumns.length) {\n return;\n }\n var colsToSpread = [];\n var colsToNotSpread = [];\n allDisplayedColumns.forEach(function (column) {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n }\n else {\n colsToSpread.push(column);\n }\n });\n // make a copy of the cols that are going to be resized\n var colsToFireEventFor = colsToSpread.slice(0);\n var finishedResizing = false;\n var moveToNotSpread = function (column) {\n _.removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n };\n while (!finishedResizing) {\n finishedResizing = true;\n var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n // no width, set everything to minimum\n colsToSpread.forEach(function (column) {\n column.setMinimum(source);\n });\n }\n else {\n var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n // we set the pixels for the last col based on what's left, as otherwise\n // we could be a pixel or two short or extra because of rounding errors.\n var pixelsForLastCol = availablePixels;\n // backwards through loop, as we are removing items as we go\n for (var i = colsToSpread.length - 1; i >= 0; i--) {\n var column = colsToSpread[i];\n var newWidth = Math.round(column.getActualWidth() * scale);\n if (newWidth < column.getMinWidth()) {\n column.setMinimum(source);\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (column.isGreaterThanMax(newWidth)) {\n column.setActualWidth(column.getMaxWidth(), source);\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else {\n var onLastCol = i === 0;\n if (onLastCol) {\n column.setActualWidth(pixelsForLastCol, source);\n }\n else {\n column.setActualWidth(newWidth, source);\n }\n }\n pixelsForLastCol -= newWidth;\n }\n }\n }\n this.setLeftValues(source);\n this.updateBodyWidths();\n if (silent) {\n return;\n }\n this.fireResizedEventForColumns(colsToFireEventFor, source);\n };\n ColumnController.prototype.fireResizedEventForColumns = function (columns, source) {\n var _this = this;\n columns.forEach(function (column) {\n var event = {\n type: Events.EVENT_COLUMN_RESIZED,\n column: column,\n columns: [column],\n finished: true,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n });\n };\n ColumnController.prototype.buildDisplayedTrees = function (visibleColumns) {\n var leftVisibleColumns = [];\n var rightVisibleColumns = [];\n var centerVisibleColumns = [];\n visibleColumns.forEach(function (column) {\n switch (column.getPinned()) {\n case \"left\":\n leftVisibleColumns.push(column);\n break;\n case \"right\":\n rightVisibleColumns.push(column);\n break;\n default:\n centerVisibleColumns.push(column);\n break;\n }\n });\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n this.displayedLeftColumnTree = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_LEFT, this.displayedLeftColumnTree);\n this.displayedRightColumnTree = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_RIGHT, this.displayedRightColumnTree);\n this.displayedCentreColumnTree = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedCentreColumnTree);\n };\n ColumnController.prototype.updateOpenClosedVisibilityInColumnGroups = function () {\n var allColumnGroups = this.getAllDisplayedColumnGroups();\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n columnGroup.calculateDisplayedColumns();\n }\n });\n };\n ColumnController.prototype.getGroupAutoColumns = function () {\n return this.groupAutoColumns;\n };\n ColumnController.prototype.createGroupAutoColumnsIfNeeded = function () {\n if (!this.autoGroupsNeedBuilding) {\n return;\n }\n this.autoGroupsNeedBuilding = false;\n var groupFullWidthRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.pivotMode);\n // we need to allow suppressing auto-column separately for group and pivot as the normal situation\n // is CSRM and user provides group column themselves for normal view, but when they go into pivot the\n // columns are generated by the grid so no opportunity for user to provide group column. so need a way\n // to suppress auto-col for grouping only, and not pivot.\n // however if using Viewport RM or SSRM and user is providing the columns, the user may wish full control\n // of the group column in this instance.\n var suppressAutoColumn = this.pivotMode ?\n this.gridOptionsWrapper.isPivotSuppressAutoColumn() : this.gridOptionsWrapper.isGroupSuppressAutoColumn();\n // const groupSuppressAutoColumn = this.gridOptionsWrapper.isGroupSuppressAutoColumn() && !this.pivotMode;\n var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow && !groupSuppressRow;\n if (needAutoColumns) {\n var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(this.rowGroupColumns);\n var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n if (autoColsDifferent) {\n this.groupAutoColumns = newAutoGroupCols;\n }\n }\n else {\n this.groupAutoColumns = null;\n }\n };\n ColumnController.prototype.autoColsEqual = function (colsA, colsB) {\n return areEqual(colsA, colsB, function (a, b) { return a.getColId() === b.getColId(); });\n };\n ColumnController.prototype.getWidthOfColsInList = function (columnList) {\n return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n ColumnController.prototype.getGridBalancedTree = function () {\n return this.gridBalancedTree;\n };\n ColumnController.prototype.hasFloatingFilters = function () {\n var defaultColDef = this.gridOptionsWrapper.getDefaultColDef();\n return (defaultColDef != null && defaultColDef.floatingFilter === true) ||\n (this.columnDefs != null && this.columnDefs.some(function (c) { return c.floatingFilter === true; }));\n };\n __decorate$4([\n Autowired('gridOptionsWrapper')\n ], ColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$4([\n Autowired('expressionService')\n ], ColumnController.prototype, \"expressionService\", void 0);\n __decorate$4([\n Autowired('columnFactory')\n ], ColumnController.prototype, \"columnFactory\", void 0);\n __decorate$4([\n Autowired('displayedGroupCreator')\n ], ColumnController.prototype, \"displayedGroupCreator\", void 0);\n __decorate$4([\n Autowired('autoWidthCalculator')\n ], ColumnController.prototype, \"autoWidthCalculator\", void 0);\n __decorate$4([\n Autowired('eventService')\n ], ColumnController.prototype, \"eventService\", void 0);\n __decorate$4([\n Autowired('columnUtils')\n ], ColumnController.prototype, \"columnUtils\", void 0);\n __decorate$4([\n Autowired('columnAnimationService')\n ], ColumnController.prototype, \"columnAnimationService\", void 0);\n __decorate$4([\n Autowired('autoGroupColService')\n ], ColumnController.prototype, \"autoGroupColService\", void 0);\n __decorate$4([\n Optional('aggFuncService')\n ], ColumnController.prototype, \"aggFuncService\", void 0);\n __decorate$4([\n Optional('valueCache')\n ], ColumnController.prototype, \"valueCache\", void 0);\n __decorate$4([\n Optional('animationFrameService')\n ], ColumnController.prototype, \"animationFrameService\", void 0);\n __decorate$4([\n Autowired('columnApi')\n ], ColumnController.prototype, \"columnApi\", void 0);\n __decorate$4([\n Autowired('gridApi')\n ], ColumnController.prototype, \"gridApi\", void 0);\n __decorate$4([\n PostConstruct\n ], ColumnController.prototype, \"init\", null);\n __decorate$4([\n __param$2(0, Qualifier('loggerFactory'))\n ], ColumnController.prototype, \"setBeans\", null);\n ColumnController = __decorate$4([\n Bean('columnController')\n ], ColumnController);\n return ColumnController;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function () {\n function ColumnUtils() {\n }\n ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n var optionsWrapper = this.gridOptionsWrapper;\n var minColWidth = colDef.minWidth != null ? colDef.minWidth : optionsWrapper.getMinColWidth();\n var maxColWidth = colDef.maxWidth != null ? colDef.maxWidth : (optionsWrapper.getMaxColWidth() || _.getMaxSafeInteger());\n var width = colDef.width != null ? colDef.width : optionsWrapper.getColWidth();\n return Math.max(Math.min(width, maxColWidth), minColWidth);\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n var recursePath = function (balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n return;\n }\n // quit the search, so 'result' is kept with the found result\n var node = balancedColumnTree[i];\n if (node instanceof OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(originalBalancedTree, 0);\n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n return found ? result : null;\n };\n /* public getPathForColumn(column: Column, allDisplayedColumnGroups: ColumnGroupChild[]): ColumnGroup[] {\n let result: ColumnGroup[] = [];\n let found = false;\n \n recursePath(allDisplayedColumnGroups, 0);\n \n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n if (found) {\n return result;\n } else {\n return null;\n }\n \n function recursePath(balancedColumnTree: ColumnGroupChild[], dept: number): void {\n \n for (let i = 0; i node;\n recursePath(nextNode.getChildren(), dept+1);\n result[dept] = node;\n } else {\n if (node === column) {\n found = true;\n }\n }\n }\n }\n }*/\n ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof OriginalColumnGroup) {\n _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n };\n ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n __decorate$5([\n Autowired('gridOptionsWrapper')\n ], ColumnUtils.prototype, \"gridOptionsWrapper\", void 0);\n ColumnUtils = __decorate$5([\n Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = /** @class */ (function () {\n function DisplayedGroupCreator() {\n }\n DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n // all displayed columns sorted - this is the columns the grid should show\n sortedVisibleColumns, \n // the tree of columns, as provided by the users, used to know what groups columns roll up into\n balancedColumnTree, \n // creates unique id's for the group\n groupInstanceIdCreator, \n // whether it's left, right or center col\n pinned, \n // we try to reuse old groups if we can, to allow gui to do animation\n oldDisplayedGroups) {\n var _this = this;\n var result = [];\n var previousRealPath;\n var previousOriginalPath;\n var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n // go through each column, then do a bottom up comparison to the previous column, and start\n // to share groups if they converge at any point.\n sortedVisibleColumns.forEach(function (currentColumn) {\n var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n var currentRealPath = [];\n var firstColumn = !previousOriginalPath;\n for (var i = 0; i < currentOriginalPath.length; i++) {\n if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n // new group needed\n var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);\n currentRealPath[i] = newGroup;\n // if top level, add to result, otherwise add to parent\n if (i == 0) {\n result.push(newGroup);\n }\n else {\n currentRealPath[i - 1].addChild(newGroup);\n }\n }\n else {\n // reuse old group\n currentRealPath[i] = previousRealPath[i];\n }\n }\n var noColumnGroups = currentRealPath.length === 0;\n if (noColumnGroups) {\n // if we are not grouping, then the result of the above is an empty\n // path (no groups), and we just add the column to the root list.\n result.push(currentColumn);\n }\n else {\n var leafGroup = _.last(currentRealPath);\n leafGroup.addChild(currentColumn);\n }\n previousRealPath = currentRealPath;\n previousOriginalPath = currentOriginalPath;\n });\n this.setupParentsIntoColumns(result, null);\n return result;\n };\n DisplayedGroupCreator.prototype.createColumnGroup = function (originalGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n var groupId = originalGroup.getGroupId();\n var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n var uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);\n var columnGroup = oldColumnsMapped[uniqueId];\n // if the user is setting new colDefs, it is possible that the id's overlap, and we\n // would have a false match from above. so we double check we are talking about the\n // same original column group.\n if (columnGroup && columnGroup.getOriginalColumnGroup() !== originalGroup) {\n columnGroup = null;\n }\n if (_.exists(columnGroup)) {\n // clean out the old column group here, as we will be adding children into it again\n columnGroup.reset();\n }\n else {\n columnGroup = new ColumnGroup(originalGroup, groupId, instanceId, pinned);\n this.context.wireBean(columnGroup);\n }\n return columnGroup;\n };\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n var result = {};\n var recursive = function (columnsOrGroups) {\n columnsOrGroups.forEach(function (columnOrGroup) {\n if (columnOrGroup instanceof ColumnGroup) {\n var columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n };\n DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n var _this = this;\n columnsOrGroups.forEach(function (columnsOrGroup) {\n columnsOrGroup.setParent(parent);\n if (columnsOrGroup instanceof ColumnGroup) {\n var columnGroup = columnsOrGroup;\n _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n };\n DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n var result = [];\n var found = false;\n var recursePath = function (balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n // quit the search, so 'result' is kept with the found result\n if (found) {\n return;\n }\n var node = balancedColumnTree[i];\n if (node instanceof OriginalColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(balancedColumnTree, 0);\n // it's possible we didn't find a path. this happens if the column is generated\n // by the grid (auto-group), in that the definition didn't come from the client. in this case,\n // we create a fake original path.\n if (found) {\n return result;\n }\n console.warn('could not get path');\n return null;\n };\n __decorate$6([\n Autowired('columnUtils')\n ], DisplayedGroupCreator.prototype, \"columnUtils\", void 0);\n __decorate$6([\n Autowired('context')\n ], DisplayedGroupCreator.prototype, \"context\", void 0);\n DisplayedGroupCreator = __decorate$6([\n Bean('displayedGroupCreator')\n ], DisplayedGroupCreator);\n return DisplayedGroupCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __spreadArrays = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * These keys are used for validating properties supplied on a gridOptions object, and for code generation.\n * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.\n */\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate',\n 'overlayNoRowsTemplate', 'quickFilterText', 'rowModelType',\n 'editType', 'domLayout', 'clipboardDeliminator', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'groupColumnDef', 'localeText',\n 'icons', 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs',\n 'fullWidthCellRendererParams', 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'columnTypes',\n 'rowClassRules', 'detailGridOptions', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'reduxStore', 'statusBar', 'sideBar'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'slaveGrids', 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData'\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight',\n 'floatingFiltersHeight', 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded',\n 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize', 'viewportRowModelBufferSize',\n 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',\n 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount',\n 'scrollbarWidth', 'paginationStartPage', 'infiniteBlockSize', 'batchUpdateWaitMillis', 'asyncTransactionWaitMillis',\n 'blockLoadDebounceMillis', 'keepDetailRowsCount', 'undoRedoCellEditingLimit'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'toolPanelSuppressRowGroups', 'toolPanelSuppressValues', 'toolPanelSuppressPivots', 'toolPanelSuppressPivotMode',\n 'toolPanelSuppressSideButtons', 'toolPanelSuppressColumnFilter', 'toolPanelSuppressColumnSelectAll',\n 'toolPanelSuppressColumnExpandAll', 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection',\n 'suppressCellSelection', 'suppressHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableColResize',\n 'enableCellExpressions', 'enableSorting', 'enableServerSideSorting', 'enableFilter', 'enableServerSideFilter',\n 'angularCompileRows', 'angularCompileFilters', 'angularCompileHeaders', 'groupSuppressAutoColumn', 'groupSelectsChildren',\n 'groupIncludeFooter', 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressRow', 'groupSuppressBlankHeader',\n 'forPrint', 'suppressMenuHide', 'rowDeselection', 'unSortIcon', 'suppressMultiSort', 'singleClickEdit',\n 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize', 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'showToolPanel',\n 'suppressColumnMoveAnimation', 'suppressMovableColumns', 'suppressFieldDotNotation', 'enableRangeSelection',\n 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction', 'deltaSort', 'suppressTouch', 'suppressAsyncEvents',\n 'allowContextMenuWithControlKey', 'suppressContextMenu', 'suppressMenuFilterPanel', 'suppressMenuMainPanel', 'suppressMenuColumnPanel',\n 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns', 'suppressMiddleClickScrolls',\n 'suppressPreventDefaultOnMouseWheel', 'suppressUseColIdForGroups', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'pivotMode',\n 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh', 'functionsPassive',\n 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren', 'groupRemoveLowestSingleChildren', 'enableRtl',\n 'suppressClickEdit', 'rowDragManaged', 'suppressRowDrag', 'suppressMoveWhenRowDragging', 'enableMultiRowDragging', 'enableGroupEdit',\n 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows', 'suppressTabbing', 'suppressPaginationPanel', 'floatingFilter', 'groupHideOpenParents',\n 'groupMultiAutoColumn', 'pagination', 'stopEditingWhenGridLosesFocus', 'paginationAutoPageSize', 'suppressScrollOnNewData', 'purgeClosedRowNodes',\n 'cacheQuickFilter', 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'pivotTotals', 'suppressChangeDetection', 'valueCache',\n 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport', 'suppressCsvExport', 'treeData',\n 'masterDetail', 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown', 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick',\n 'contractColumnSelection', 'suppressEnterpriseResetOnNewColumns', 'enableOldSetFilterModel', 'suppressRowHoverHighlight',\n 'gridAutoHeight', 'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste', 'serverSideSortingAlwaysResets', 'reactNext',\n 'suppressSetColumnStateEvents', 'enableCharts', 'deltaColumnMode', 'suppressMaintainUnsortedOrder', 'enableCellTextSelection',\n 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction', 'excludeChildrenWhenTreeDataFiltering', 'tooltipMouseTrack',\n 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu', 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel',\n 'immutableData', 'immutableColumns', 'pivotSuppressAutoColumn'\n ];\n /** You do not need to include event callbacks in this list, as they are generated automatically. */\n PropertyKeys.FUNCTION_PROPERTIES = [\n 'localeTextFunc', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',\n 'dateComponent', 'dateComponentFramework', 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent',\n 'getRowHeight', 'doesExternalFilterPass', 'getRowClass', 'getRowStyle', 'getRowClassRules',\n 'traverseNode', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',\n 'getNodeChildDetails', 'groupRowAggNodes', 'getRowNodeId', 'isFullWidthCell', 'fullWidthCellRenderer',\n 'fullWidthCellRendererFramework', 'doesDataFlower', 'processSecondaryColDef', 'processSecondaryColGroupDef',\n 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextCell', 'tabToNextCell', 'getDetailRowData',\n 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'loadingCellRenderer',\n 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent',\n 'noRowsOverlayComponentFramework', 'detailCellRenderer', 'detailCellRendererFramework',\n 'defaultGroupSortComparator', 'isRowMaster', 'isRowSelectable', 'postSort', 'processHeaderForClipboard',\n 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup',\n 'suppressKeyboardEvent', 'createChartContainer', 'processChartOptions', 'getChartToolbarItems', 'fillOperation'\n ];\n PropertyKeys.ALL_PROPERTIES = __spreadArrays(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);\n /**\n * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own\n * framework-specific properties to colDefs, gridOptions etc.\n */\n PropertyKeys.FRAMEWORK_PROPERTIES = [\n '__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'\n ];\n return PropertyKeys;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __spreadArrays$1 = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar ColDefUtil = /** @class */ (function () {\n function ColDefUtil() {\n }\n ColDefUtil.STRING_PROPERTIES = [\n 'headerName',\n 'columnGroupShow',\n 'headerClass',\n 'toolPanelClass',\n 'headerValueGetter',\n 'pivotKeys',\n 'groupId',\n 'colId',\n 'sort',\n 'field',\n 'type',\n 'tooltipComponent',\n 'tooltipField',\n 'headerTooltip',\n 'cellClass',\n 'showRowGroup',\n 'template',\n 'templateUrl',\n 'filter',\n 'aggFunc',\n 'cellRenderer',\n 'cellEditor',\n 'pinned',\n 'chartDataType'\n ];\n ColDefUtil.OBJECT_PROPERTIES = [\n 'headerGroupComponent',\n 'headerGroupComponentFramework',\n 'headerGroupComponentParams',\n 'cellStyle',\n 'cellRendererParams',\n 'cellEditorFramework',\n 'cellEditorParams',\n 'pinnedRowCellRendererFramework',\n 'pinnedRowCellRendererParams',\n 'filterFramework',\n 'filterParams',\n 'pivotValueColumn',\n 'headerComponent',\n 'headerComponentFramework',\n 'headerComponentParams',\n 'floatingFilterComponent',\n 'floatingFilterComponentParams',\n 'floatingFilterComponentFramework',\n 'tooltipComponent',\n 'tooltipComponentParams',\n 'tooltipComponentFramework',\n 'refData'\n ];\n ColDefUtil.ARRAY_PROPERTIES = [\n 'children',\n 'sortingOrder',\n 'allowedAggFuncs',\n 'menuTabs',\n 'pivotTotalColumnIds',\n 'cellClassRules',\n 'icons'\n ];\n ColDefUtil.NUMBER_PROPERTIES = [\n 'sortedAt',\n 'flex',\n 'width',\n 'minWidth',\n 'maxWidth',\n 'rowGroupIndex',\n 'pivotIndex'\n ];\n ColDefUtil.BOOLEAN_PROPERTIES = [\n 'suppressCellFlash',\n 'suppressColumnsToolPanel',\n 'suppressFiltersToolPanel',\n 'openByDefault',\n 'marryChildren',\n 'hide',\n 'rowGroup',\n 'pivot',\n 'checkboxSelection',\n 'headerCheckboxSelection',\n 'headerCheckboxSelectionFilteredOnly',\n 'suppressMenu',\n 'suppressSorting',\n 'suppressMovable',\n 'suppressFilter',\n 'lockPosition',\n 'lockVisible',\n 'lockPinned',\n 'unSortIcon',\n 'suppressSizeToFit',\n 'suppressResize',\n 'suppressAutoSize',\n 'enableRowGroup',\n 'enablePivot',\n 'enableValue',\n 'editable',\n 'suppressPaste',\n 'suppressNavigable',\n 'enableCellChangeFlash',\n 'rowDrag',\n 'dndSource',\n 'autoHeight',\n 'sortable',\n 'resizable',\n 'singleClickEdit',\n 'floatingFilter',\n ];\n ColDefUtil.FUNCTION_PROPERTIES = [\n 'dndSourceOnRowDrag',\n 'valueGetter',\n 'valueSetter',\n 'filterValueGetter',\n 'keyCreator',\n 'cellRenderer',\n 'cellRendererFramework',\n 'pinnedRowCellRenderer',\n 'valueFormatter',\n 'pinnedRowValueFormatter',\n 'valueParser',\n 'comparator',\n 'equals',\n 'pivotComparator',\n 'suppressKeyboardEvent',\n 'colSpan',\n 'rowSpan',\n 'getQuickFilterText',\n 'newValueHandler',\n 'onCellValueChanged',\n 'onCellClicked',\n 'onCellDoubleClicked',\n 'onCellContextMenu',\n 'rowDragText',\n 'tooltip',\n 'tooltipValueGetter',\n 'tooltipComponent',\n 'tooltipComponentFramework',\n 'cellRendererSelector',\n 'cellEditorSelector'\n ];\n ColDefUtil.ALL_PROPERTIES = __spreadArrays$1(ColDefUtil.ARRAY_PROPERTIES, ColDefUtil.OBJECT_PROPERTIES, ColDefUtil.STRING_PROPERTIES, ColDefUtil.NUMBER_PROPERTIES, ColDefUtil.FUNCTION_PROPERTIES, ColDefUtil.BOOLEAN_PROPERTIES);\n // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n // properties to colDefs, gridOptions etc\n ColDefUtil.FRAMEWORK_PROPERTIES = ['__ob__', '__metadata__', 'mappedColumnProperties', 'hasChildColumns',\n 'toColDef', 'createColDefFromGridColumn'];\n return ColDefUtil;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return null;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return null;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault,\n position: toParse.position\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"ag-grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$3 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __spreadArrays$2 = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar DEFAULT_ROW_HEIGHT = 25;\nvar DEFAULT_DETAIL_ROW_HEIGHT = 300;\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nfunction isTrue(value) {\n return value === true || value === 'true';\n}\nfunction zeroOrGreater(value, defaultValue) {\n if (value >= 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nfunction oneOrGreater(value, defaultValue) {\n if (value > 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nvar GridOptionsWrapper = /** @class */ (function () {\n function GridOptionsWrapper() {\n this.propertyEventService = new EventService();\n this.domDataKey = '__AG_' + Math.random().toString();\n this.layoutElements = [];\n }\n GridOptionsWrapper_1 = GridOptionsWrapper;\n GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {\n this.gridOptions.api = gridApi;\n this.gridOptions.columnApi = columnApi;\n this.checkForDeprecated();\n this.checkForViolations();\n };\n GridOptionsWrapper.prototype.destroy = function () {\n // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n // remove the references in case the user keeps the grid options, we want the rest\n // of the grid to be picked up by the garbage collector\n this.gridOptions.api = null;\n this.gridOptions.columnApi = null;\n this.removeEventListener(GridOptionsWrapper_1.PROP_DOM_LAYOUT, this.updateLayoutClassesListener);\n };\n GridOptionsWrapper.prototype.init = function () {\n var _this = this;\n if (!(this.gridOptions.suppressPropertyNamesCheck === true)) {\n this.checkGridOptionsProperties();\n this.checkColumnDefProperties();\n }\n var async = this.useAsyncEvents();\n this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {\n console.warn(\"ag-Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work\");\n }\n if (this.isGroupSelectsChildren()) {\n if (!this.isRowSelectionMulti()) {\n console.warn(\"ag-Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n }\n if (this.isRowModelServerSide()) {\n console.warn('ag-Grid: group selects children is NOT support for Server Side Row Model. ' +\n 'This is because the rows are lazy loaded, so selecting a group is not possible as' +\n 'the grid has no way of knowing what the children are.');\n }\n }\n if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {\n console.warn(\"ag-Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don't ask us how to us these together on our support forum either you will get the same answer!\");\n }\n if (this.isRowModelServerSide()) {\n var msg = function (prop) { return \"ag-Grid: '\" + prop + \"' is not supported on the Server-Side Row Model\"; };\n if (_.exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupDefaultExpanded'));\n }\n if (_.exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupIncludeFooter'));\n }\n if (_.exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupIncludeTotalFooter'));\n }\n }\n if (this.isEnableRangeSelection()) {\n ModuleRegistry.assertRegistered(exports.ModuleNames.RangeSelectionModule, 'enableRangeSelection');\n }\n if (!this.isEnableRangeSelection() && (this.isEnableRangeHandle() || this.isEnableFillHandle())) {\n console.warn(\"ag-Grid: 'enableRangeHandle' and 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true\");\n }\n var warnOfDeprecaredIcon = function (name) {\n if (_this.gridOptions.icons && _this.gridOptions.icons[name]) {\n console.warn(\"gridOptions.icons.\" + name + \" is no longer supported. For information on how to style checkboxes and radio buttons, see https://www.ag-grid.com/javascript-grid-icons/\");\n }\n };\n warnOfDeprecaredIcon('radioButtonOff');\n warnOfDeprecaredIcon('radioButtonOn');\n warnOfDeprecaredIcon('checkboxChecked');\n warnOfDeprecaredIcon('checkboxUnchecked');\n warnOfDeprecaredIcon('checkboxIndeterminate');\n this.updateLayoutClassesListener = this.updateLayoutClasses.bind(this);\n this.addEventListener(GridOptionsWrapper_1.PROP_DOM_LAYOUT, this.updateLayoutClassesListener);\n };\n GridOptionsWrapper.prototype.checkColumnDefProperties = function () {\n var _this = this;\n if (this.gridOptions.columnDefs == null) {\n return;\n }\n this.gridOptions.columnDefs.forEach(function (colDef) {\n var userProperties = Object.getOwnPropertyNames(colDef);\n var validProperties = __spreadArrays$2(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);\n _this.checkProperties(userProperties, validProperties, validProperties, 'colDef', 'https://www.ag-grid.com/javascript-grid-column-properties/');\n });\n };\n GridOptionsWrapper.prototype.checkGridOptionsProperties = function () {\n var userProperties = Object.getOwnPropertyNames(this.gridOptions);\n var validProperties = __spreadArrays$2(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, _.values(Events).map(function (event) { return ComponentUtil.getCallbackForEvent(event); }));\n var validPropertiesAndExceptions = __spreadArrays$2(validProperties, ['api', 'columnApi']);\n this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-grid-properties/');\n };\n GridOptionsWrapper.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n var invalidProperties = _.fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n _.iterateObject(invalidProperties, function (key, value) {\n console.warn(\"ag-grid: invalid \" + containerName + \" property '\" + key + \"' did you mean any of these: \" + value.slice(0, 8).join(\", \"));\n });\n if (Object.keys(invalidProperties).length > 0) {\n console.warn(\"ag-grid: to see all the valid \" + containerName + \" properties please check: \" + docsUrl);\n }\n };\n // returns the dom data, or undefined if not found\n GridOptionsWrapper.prototype.getDomData = function (element, key) {\n var domData = element[this.domDataKey];\n return domData ? domData[key] : undefined;\n };\n GridOptionsWrapper.prototype.setDomData = function (element, key, value) {\n var domData = element[this.domDataKey];\n if (_.missing(domData)) {\n domData = {};\n element[this.domDataKey] = domData;\n }\n domData[key] = value;\n };\n GridOptionsWrapper.prototype.isRowSelection = function () {\n return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isRowDeselection = function () {\n return isTrue(this.gridOptions.rowDeselection);\n };\n GridOptionsWrapper.prototype.isRowSelectionMulti = function () {\n return this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isRowMultiSelectWithClick = function () {\n return isTrue(this.gridOptions.rowMultiSelectWithClick);\n };\n GridOptionsWrapper.prototype.getContext = function () {\n return this.gridOptions.context;\n };\n GridOptionsWrapper.prototype.isPivotMode = function () {\n return isTrue(this.gridOptions.pivotMode);\n };\n GridOptionsWrapper.prototype.isPivotTotals = function () {\n return isTrue(this.gridOptions.pivotTotals);\n };\n GridOptionsWrapper.prototype.getPivotColumnGroupTotals = function () {\n return this.gridOptions.pivotColumnGroupTotals;\n };\n GridOptionsWrapper.prototype.getPivotRowTotals = function () {\n return this.gridOptions.pivotRowTotals;\n };\n GridOptionsWrapper.prototype.isRowModelInfinite = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_INFINITE;\n };\n GridOptionsWrapper.prototype.isRowModelViewport = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n GridOptionsWrapper.prototype.isRowModelServerSide = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n GridOptionsWrapper.prototype.isRowModelDefault = function () {\n return (_.missing(this.gridOptions.rowModelType) ||\n this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE ||\n this.gridOptions.rowModelType === Constants.DEPRECATED_ROW_MODEL_TYPE_NORMAL);\n };\n GridOptionsWrapper.prototype.isFullRowEdit = function () {\n return this.gridOptions.editType === 'fullRow';\n };\n GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () {\n return isTrue(this.gridOptions.suppressFocusAfterRefresh);\n };\n GridOptionsWrapper.prototype.isSuppressBrowserResizeObserver = function () {\n return isTrue(this.gridOptions.suppressBrowserResizeObserver);\n };\n GridOptionsWrapper.prototype.isSuppressMaintainUnsortedOrder = function () {\n return isTrue(this.gridOptions.suppressMaintainUnsortedOrder);\n };\n GridOptionsWrapper.prototype.isSuppressClearOnFillReduction = function () {\n return isTrue(this.gridOptions.suppressClearOnFillReduction);\n };\n GridOptionsWrapper.prototype.isShowToolPanel = function () {\n return isTrue(this.gridOptions.sideBar && Array.isArray(this.getSideBar().toolPanels));\n };\n GridOptionsWrapper.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridOptionsWrapper.prototype.isSuppressTouch = function () {\n return isTrue(this.gridOptions.suppressTouch);\n };\n GridOptionsWrapper.prototype.isSuppressRowTransform = function () {\n return isTrue(this.gridOptions.suppressRowTransform);\n };\n GridOptionsWrapper.prototype.isSuppressSetColumnStateEvents = function () {\n return isTrue(this.gridOptions.suppressSetColumnStateEvents);\n };\n GridOptionsWrapper.prototype.isAllowDragFromColumnsToolPanel = function () {\n return isTrue(this.gridOptions.allowDragFromColumnsToolPanel);\n };\n GridOptionsWrapper.prototype.useAsyncEvents = function () {\n return !isTrue(this.gridOptions.suppressAsyncEvents);\n };\n GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () {\n return isTrue(this.gridOptions.enableCellChangeFlash);\n };\n GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {\n var result = isTrue(this.gridOptions.groupSelectsChildren);\n if (result && this.isTreeData()) {\n console.warn('ag-Grid: groupSelectsChildren does not work with tree data');\n return false;\n }\n return result;\n };\n GridOptionsWrapper.prototype.isSuppressRowHoverHighlight = function () {\n return isTrue(this.gridOptions.suppressRowHoverHighlight);\n };\n GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () {\n return isTrue(this.gridOptions.groupSelectsFiltered);\n };\n GridOptionsWrapper.prototype.isGroupHideOpenParents = function () {\n return isTrue(this.gridOptions.groupHideOpenParents);\n };\n // if we are doing hideOpenParents, then we always have groupMultiAutoColumn, otherwise hideOpenParents would not work\n GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () {\n return isTrue(this.gridOptions.groupMultiAutoColumn) || isTrue(this.gridOptions.groupHideOpenParents);\n };\n GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveLowestSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupIncludeFooter = function () {\n return isTrue(this.gridOptions.groupIncludeFooter);\n };\n GridOptionsWrapper.prototype.isGroupIncludeTotalFooter = function () {\n return isTrue(this.gridOptions.groupIncludeTotalFooter);\n };\n GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () {\n return isTrue(this.gridOptions.groupSuppressBlankHeader);\n };\n GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () {\n return isTrue(this.gridOptions.suppressRowClickSelection);\n };\n GridOptionsWrapper.prototype.isSuppressCellSelection = function () {\n return isTrue(this.gridOptions.suppressCellSelection);\n };\n GridOptionsWrapper.prototype.isSuppressMultiSort = function () {\n return isTrue(this.gridOptions.suppressMultiSort);\n };\n GridOptionsWrapper.prototype.isMultiSortKeyCtrl = function () {\n return this.gridOptions.multiSortKey === 'ctrl';\n };\n GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () {\n return isTrue(this.gridOptions.groupSuppressAutoColumn);\n };\n GridOptionsWrapper.prototype.isPivotSuppressAutoColumn = function () {\n return isTrue(this.gridOptions.pivotSuppressAutoColumn);\n };\n GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () {\n return isTrue(this.gridOptions.suppressDragLeaveHidesColumns);\n };\n GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () {\n return isTrue(this.gridOptions.suppressScrollOnNewData);\n };\n GridOptionsWrapper.prototype.isRowDragManaged = function () {\n return isTrue(this.gridOptions.rowDragManaged);\n };\n GridOptionsWrapper.prototype.isSuppressRowDrag = function () {\n return isTrue(this.gridOptions.suppressRowDrag);\n };\n GridOptionsWrapper.prototype.isSuppressMoveWhenRowDragging = function () {\n return isTrue(this.gridOptions.suppressMoveWhenRowDragging);\n };\n GridOptionsWrapper.prototype.isEnableMultiRowDragging = function () {\n return isTrue(this.gridOptions.enableMultiRowDragging);\n };\n // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n GridOptionsWrapper.prototype.getDomLayout = function () {\n var domLayout = this.gridOptions.domLayout || Constants.DOM_LAYOUT_NORMAL;\n var validLayouts = [\n Constants.DOM_LAYOUT_PRINT,\n Constants.DOM_LAYOUT_AUTO_HEIGHT,\n Constants.DOM_LAYOUT_NORMAL\n ];\n if (validLayouts.indexOf(domLayout) === -1) {\n _.doOnce(function () {\n return console.warn(\"ag-Grid: \" + domLayout + \" is not valid for DOM Layout, valid values are \" + Constants.DOM_LAYOUT_NORMAL + \", \" + Constants.DOM_LAYOUT_AUTO_HEIGHT + \" and \" + Constants.DOM_LAYOUT_PRINT);\n }, 'warn about dom layout values');\n return Constants.DOM_LAYOUT_NORMAL;\n }\n return domLayout;\n };\n GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () {\n return isTrue(this.gridOptions.suppressHorizontalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressMaxRenderedRowRestriction = function () {\n return isTrue(this.gridOptions.suppressMaxRenderedRowRestriction);\n };\n GridOptionsWrapper.prototype.isExcludeChildrenWhenTreeDataFiltering = function () {\n return isTrue(this.gridOptions.excludeChildrenWhenTreeDataFiltering);\n };\n GridOptionsWrapper.prototype.isAlwaysShowVerticalScroll = function () {\n return isTrue(this.gridOptions.alwaysShowVerticalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () {\n return isTrue(this.gridOptions.suppressLoadingOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () {\n return isTrue(this.gridOptions.suppressNoRowsOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () {\n return isTrue(this.gridOptions.suppressFieldDotNotation);\n };\n GridOptionsWrapper.prototype.getPinnedTopRowData = function () {\n return this.gridOptions.pinnedTopRowData;\n };\n GridOptionsWrapper.prototype.getPinnedBottomRowData = function () {\n return this.gridOptions.pinnedBottomRowData;\n };\n GridOptionsWrapper.prototype.isFunctionsPassive = function () {\n return isTrue(this.gridOptions.functionsPassive);\n };\n GridOptionsWrapper.prototype.isSuppressTabbing = function () {\n return isTrue(this.gridOptions.suppressTabbing);\n };\n GridOptionsWrapper.prototype.isSuppressChangeDetection = function () {\n return isTrue(this.gridOptions.suppressChangeDetection);\n };\n GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () {\n return isTrue(this.gridOptions.suppressAnimationFrame);\n };\n GridOptionsWrapper.prototype.getQuickFilterText = function () {\n return this.gridOptions.quickFilterText;\n };\n GridOptionsWrapper.prototype.isCacheQuickFilter = function () {\n return isTrue(this.gridOptions.cacheQuickFilter);\n };\n GridOptionsWrapper.prototype.isUnSortIcon = function () {\n return isTrue(this.gridOptions.unSortIcon);\n };\n GridOptionsWrapper.prototype.isSuppressMenuHide = function () {\n return isTrue(this.gridOptions.suppressMenuHide);\n };\n GridOptionsWrapper.prototype.isEnterMovesDownAfterEdit = function () {\n return isTrue(this.gridOptions.enterMovesDownAfterEdit);\n };\n GridOptionsWrapper.prototype.isEnterMovesDown = function () {\n return isTrue(this.gridOptions.enterMovesDown);\n };\n GridOptionsWrapper.prototype.isUndoRedoCellEditing = function () {\n return isTrue(this.gridOptions.undoRedoCellEditing);\n };\n GridOptionsWrapper.prototype.getUndoRedoCellEditingLimit = function () {\n return this.gridOptions.undoRedoCellEditingLimit;\n };\n GridOptionsWrapper.prototype.getRowStyle = function () {\n return this.gridOptions.rowStyle;\n };\n GridOptionsWrapper.prototype.getRowClass = function () {\n return this.gridOptions.rowClass;\n };\n GridOptionsWrapper.prototype.getRowStyleFunc = function () {\n return this.gridOptions.getRowStyle;\n };\n GridOptionsWrapper.prototype.getRowClassFunc = function () {\n return this.gridOptions.getRowClass;\n };\n GridOptionsWrapper.prototype.rowClassRules = function () {\n return this.gridOptions.rowClassRules;\n };\n GridOptionsWrapper.prototype.getCreateChartContainerFunc = function () {\n return this.gridOptions.createChartContainer;\n };\n GridOptionsWrapper.prototype.getPopupParent = function () {\n return this.gridOptions.popupParent;\n };\n GridOptionsWrapper.prototype.getBlockLoadDebounceMillis = function () {\n return this.gridOptions.blockLoadDebounceMillis;\n };\n GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () {\n return this.gridOptions.postProcessPopup;\n };\n GridOptionsWrapper.prototype.getDoesDataFlowerFunc = function () {\n return this.gridOptions.doesDataFlower;\n };\n GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () {\n return this.gridOptions.paginationNumberFormatter;\n };\n GridOptionsWrapper.prototype.getChildCountFunc = function () {\n return this.gridOptions.getChildCount;\n };\n GridOptionsWrapper.prototype.getDefaultGroupSortComparator = function () {\n return this.gridOptions.defaultGroupSortComparator;\n };\n GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () {\n return this.gridOptions.isFullWidthCell;\n };\n GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () {\n return this.gridOptions.fullWidthCellRendererParams;\n };\n GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {\n return isTrue(this.gridOptions.embedFullWidthRows) || isTrue(this.gridOptions.deprecatedEmbedFullWidthRows);\n };\n GridOptionsWrapper.prototype.getSuppressKeyboardEventFunc = function () {\n return this.gridOptions.suppressKeyboardEvent;\n };\n GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () {\n return this.gridOptions.getBusinessKeyForNode;\n };\n GridOptionsWrapper.prototype.getApi = function () {\n return this.gridOptions.api;\n };\n GridOptionsWrapper.prototype.getColumnApi = function () {\n return this.gridOptions.columnApi;\n };\n GridOptionsWrapper.prototype.isImmutableData = function () {\n return isTrue(this.gridOptions.immutableData);\n };\n GridOptionsWrapper.prototype.isImmutableColumns = function () {\n return isTrue(this.gridOptions.immutableColumns);\n };\n GridOptionsWrapper.prototype.isEnsureDomOrder = function () {\n return isTrue(this.gridOptions.ensureDomOrder);\n };\n GridOptionsWrapper.prototype.isEnableCharts = function () {\n if (isTrue(this.gridOptions.enableCharts)) {\n return ModuleRegistry.assertRegistered(exports.ModuleNames.GridChartsModule, 'enableCharts');\n }\n return false;\n };\n GridOptionsWrapper.prototype.getColResizeDefault = function () {\n return this.gridOptions.colResizeDefault;\n };\n GridOptionsWrapper.prototype.isSingleClickEdit = function () {\n return isTrue(this.gridOptions.singleClickEdit);\n };\n GridOptionsWrapper.prototype.isSuppressClickEdit = function () {\n return isTrue(this.gridOptions.suppressClickEdit);\n };\n GridOptionsWrapper.prototype.isStopEditingWhenGridLosesFocus = function () {\n return isTrue(this.gridOptions.stopEditingWhenGridLosesFocus);\n };\n GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () {\n return this.gridOptions.groupDefaultExpanded;\n };\n GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () {\n return this.gridOptions.maxConcurrentDatasourceRequests;\n };\n GridOptionsWrapper.prototype.getMaxBlocksInCache = function () {\n return this.gridOptions.maxBlocksInCache;\n };\n GridOptionsWrapper.prototype.getCacheOverflowSize = function () {\n return this.gridOptions.cacheOverflowSize;\n };\n GridOptionsWrapper.prototype.getPaginationPageSize = function () {\n return this.gridOptions.paginationPageSize;\n };\n GridOptionsWrapper.prototype.isPaginateChildRows = function () {\n // if using groupSuppressRow, means we are not showing parent rows,\n // so we always paginate on the child rows here as there are no parent rows\n var shouldPaginate = this.isGroupSuppressRow() || this.isGroupRemoveSingleChildren() || this.isGroupRemoveLowestSingleChildren();\n if (shouldPaginate) {\n return true;\n }\n return isTrue(this.gridOptions.paginateChildRows);\n };\n GridOptionsWrapper.prototype.getCacheBlockSize = function () {\n return this.gridOptions.cacheBlockSize;\n };\n GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () {\n return this.gridOptions.infiniteInitialRowCount;\n };\n GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () {\n return isTrue(this.gridOptions.purgeClosedRowNodes);\n };\n GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () {\n return isTrue(this.gridOptions.suppressPaginationPanel);\n };\n GridOptionsWrapper.prototype.getRowData = function () {\n return this.gridOptions.rowData;\n };\n // this property is different - we never allow groupUseEntireRow if in pivot mode,\n // as otherwise we don't see the pivot values.\n GridOptionsWrapper.prototype.isGroupUseEntireRow = function (pivotMode) {\n return pivotMode ? false : isTrue(this.gridOptions.groupUseEntireRow);\n };\n GridOptionsWrapper.prototype.isEnableRtl = function () {\n return isTrue(this.gridOptions.enableRtl);\n };\n GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () {\n return this.gridOptions.autoGroupColumnDef;\n };\n GridOptionsWrapper.prototype.isGroupSuppressRow = function () {\n return isTrue(this.gridOptions.groupSuppressRow);\n };\n GridOptionsWrapper.prototype.getRowGroupPanelShow = function () {\n return this.gridOptions.rowGroupPanelShow;\n };\n GridOptionsWrapper.prototype.getPivotPanelShow = function () {\n return this.gridOptions.pivotPanelShow;\n };\n GridOptionsWrapper.prototype.isAngularCompileRows = function () {\n return isTrue(this.gridOptions.angularCompileRows);\n };\n GridOptionsWrapper.prototype.isAngularCompileFilters = function () {\n return isTrue(this.gridOptions.angularCompileFilters);\n };\n GridOptionsWrapper.prototype.isAngularCompileHeaders = function () {\n return isTrue(this.gridOptions.angularCompileHeaders);\n };\n GridOptionsWrapper.prototype.isDebug = function () {\n return isTrue(this.gridOptions.debug);\n };\n GridOptionsWrapper.prototype.getColumnDefs = function () {\n return this.gridOptions.columnDefs;\n };\n GridOptionsWrapper.prototype.getColumnTypes = function () {\n return this.gridOptions.columnTypes;\n };\n GridOptionsWrapper.prototype.getDatasource = function () {\n return this.gridOptions.datasource;\n };\n GridOptionsWrapper.prototype.getViewportDatasource = function () {\n return this.gridOptions.viewportDatasource;\n };\n GridOptionsWrapper.prototype.getServerSideDatasource = function () {\n return this.gridOptions.serverSideDatasource;\n };\n GridOptionsWrapper.prototype.isAccentedSort = function () {\n return isTrue(this.gridOptions.accentedSort);\n };\n GridOptionsWrapper.prototype.isEnableBrowserTooltips = function () {\n return isTrue(this.gridOptions.enableBrowserTooltips);\n };\n GridOptionsWrapper.prototype.isEnableCellExpressions = function () {\n return isTrue(this.gridOptions.enableCellExpressions);\n };\n GridOptionsWrapper.prototype.isEnableGroupEdit = function () {\n return isTrue(this.gridOptions.enableGroupEdit);\n };\n GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () {\n return isTrue(this.gridOptions.suppressMiddleClickScrolls);\n };\n GridOptionsWrapper.prototype.isPreventDefaultOnContextMenu = function () {\n return isTrue(this.gridOptions.preventDefaultOnContextMenu);\n };\n GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () {\n return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel);\n };\n GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () {\n return isTrue(this.gridOptions.suppressColumnVirtualisation);\n };\n GridOptionsWrapper.prototype.isSuppressContextMenu = function () {\n return isTrue(this.gridOptions.suppressContextMenu);\n };\n GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () {\n return isTrue(this.gridOptions.allowContextMenuWithControlKey);\n };\n GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () {\n return isTrue(this.gridOptions.suppressCopyRowsToClipboard);\n };\n GridOptionsWrapper.prototype.isCopyHeadersToClipboard = function () {\n return isTrue(this.gridOptions.copyHeadersToClipboard);\n };\n GridOptionsWrapper.prototype.isSuppressClipboardPaste = function () {\n return isTrue(this.gridOptions.suppressClipboardPaste);\n };\n GridOptionsWrapper.prototype.isSuppressLastEmptyLineOnPaste = function () {\n return isTrue(this.gridOptions.suppressLastEmptyLineOnPaste);\n };\n GridOptionsWrapper.prototype.isPagination = function () {\n return isTrue(this.gridOptions.pagination);\n };\n GridOptionsWrapper.prototype.isSuppressEnterpriseResetOnNewColumns = function () {\n return isTrue(this.gridOptions.suppressEnterpriseResetOnNewColumns);\n };\n GridOptionsWrapper.prototype.getProcessDataFromClipboardFunc = function () {\n return this.gridOptions.processDataFromClipboard;\n };\n GridOptionsWrapper.prototype.getAsyncTransactionWaitMillis = function () {\n return _.exists(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : Constants.BATCH_WAIT_MILLIS;\n };\n GridOptionsWrapper.prototype.isSuppressMovableColumns = function () {\n return isTrue(this.gridOptions.suppressMovableColumns);\n };\n GridOptionsWrapper.prototype.isAnimateRows = function () {\n // never allow animating if enforcing the row order\n if (this.isEnsureDomOrder()) {\n return false;\n }\n return isTrue(this.gridOptions.animateRows);\n };\n GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () {\n return isTrue(this.gridOptions.suppressColumnMoveAnimation);\n };\n GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () {\n return isTrue(this.gridOptions.suppressAggFuncInHeader);\n };\n GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () {\n return isTrue(this.gridOptions.suppressAggAtRootLevel);\n };\n GridOptionsWrapper.prototype.isEnableRangeSelection = function () {\n return ModuleRegistry.isRegistered(exports.ModuleNames.RangeSelectionModule) && isTrue(this.gridOptions.enableRangeSelection);\n };\n GridOptionsWrapper.prototype.isEnableRangeHandle = function () {\n return isTrue(this.gridOptions.enableRangeHandle);\n };\n GridOptionsWrapper.prototype.isEnableFillHandle = function () {\n return isTrue(this.gridOptions.enableFillHandle);\n };\n GridOptionsWrapper.prototype.getFillOperation = function () {\n return this.gridOptions.fillOperation;\n };\n GridOptionsWrapper.prototype.isSuppressMultiRangeSelection = function () {\n return isTrue(this.gridOptions.suppressMultiRangeSelection);\n };\n GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () {\n return isTrue(this.gridOptions.paginationAutoPageSize);\n };\n GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () {\n return isTrue(this.gridOptions.rememberGroupStateWhenNewData);\n };\n GridOptionsWrapper.prototype.getIcons = function () {\n return this.gridOptions.icons;\n };\n GridOptionsWrapper.prototype.getAggFuncs = function () {\n return this.gridOptions.aggFuncs;\n };\n GridOptionsWrapper.prototype.getSortingOrder = function () {\n return this.gridOptions.sortingOrder;\n };\n GridOptionsWrapper.prototype.getAlignedGrids = function () {\n return this.gridOptions.alignedGrids;\n };\n GridOptionsWrapper.prototype.isMasterDetail = function () {\n var masterDetail = isTrue(this.gridOptions.masterDetail);\n if (masterDetail) {\n return ModuleRegistry.assertRegistered(exports.ModuleNames.MasterDetailModule, 'masterDetail');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isKeepDetailRows = function () {\n return isTrue(this.gridOptions.keepDetailRows);\n };\n GridOptionsWrapper.prototype.getKeepDetailRowsCount = function () {\n if (this.gridOptions.keepDetailRowsCount > 0) {\n return this.gridOptions.keepDetailRowsCount;\n }\n return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n };\n GridOptionsWrapper.prototype.getIsRowMasterFunc = function () {\n return this.gridOptions.isRowMaster;\n };\n GridOptionsWrapper.prototype.getIsRowSelectableFunc = function () {\n return this.gridOptions.isRowSelectable;\n };\n GridOptionsWrapper.prototype.getGroupRowRendererParams = function () {\n return this.gridOptions.groupRowRendererParams;\n };\n GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () {\n return this.gridOptions.overlayLoadingTemplate;\n };\n GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () {\n return this.gridOptions.overlayNoRowsTemplate;\n };\n GridOptionsWrapper.prototype.isSuppressAutoSize = function () {\n return isTrue(this.gridOptions.suppressAutoSize);\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelection = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () {\n return isTrue(this.gridOptions.suppressParentsInRowNodes);\n };\n GridOptionsWrapper.prototype.isFunctionsReadOnly = function () {\n return isTrue(this.gridOptions.functionsReadOnly);\n };\n GridOptionsWrapper.prototype.isFloatingFilter = function () {\n return this.gridOptions.floatingFilter;\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelect = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isEnableOldSetFilterModel = function () {\n return isTrue(this.gridOptions.enableOldSetFilterModel);\n };\n GridOptionsWrapper.prototype.getDefaultColDef = function () {\n return this.gridOptions.defaultColDef;\n };\n GridOptionsWrapper.prototype.getDefaultColGroupDef = function () {\n return this.gridOptions.defaultColGroupDef;\n };\n GridOptionsWrapper.prototype.getDefaultExportParams = function () {\n return this.gridOptions.defaultExportParams;\n };\n GridOptionsWrapper.prototype.isSuppressCsvExport = function () {\n return isTrue(this.gridOptions.suppressCsvExport);\n };\n GridOptionsWrapper.prototype.isAllowShowChangeAfterFilter = function () {\n return isTrue(this.gridOptions.allowShowChangeAfterFilter);\n };\n GridOptionsWrapper.prototype.isSuppressExcelExport = function () {\n return isTrue(this.gridOptions.suppressExcelExport);\n };\n GridOptionsWrapper.prototype.isSuppressMakeColumnVisibleAfterUnGroup = function () {\n return isTrue(this.gridOptions.suppressMakeColumnVisibleAfterUnGroup);\n };\n GridOptionsWrapper.prototype.getNodeChildDetailsFunc = function () {\n return this.gridOptions.getNodeChildDetails;\n };\n GridOptionsWrapper.prototype.getDataPathFunc = function () {\n return this.gridOptions.getDataPath;\n };\n GridOptionsWrapper.prototype.getIsServerSideGroupFunc = function () {\n return this.gridOptions.isServerSideGroup;\n };\n GridOptionsWrapper.prototype.getServerSideGroupKeyFunc = function () {\n return this.gridOptions.getServerSideGroupKey;\n };\n GridOptionsWrapper.prototype.getGroupRowAggNodesFunc = function () {\n return this.gridOptions.groupRowAggNodes;\n };\n GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () {\n return this.gridOptions.getContextMenuItems;\n };\n GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () {\n return this.gridOptions.getMainMenuItems;\n };\n GridOptionsWrapper.prototype.getChartToolbarItemsFunc = function () {\n return this.gridOptions.getChartToolbarItems;\n };\n GridOptionsWrapper.prototype.getRowNodeIdFunc = function () {\n return this.gridOptions.getRowNodeId;\n };\n GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () {\n return this.gridOptions.navigateToNextCell;\n };\n GridOptionsWrapper.prototype.getTabToNextCellFunc = function () {\n return this.gridOptions.tabToNextCell;\n };\n GridOptionsWrapper.prototype.isTreeData = function () {\n var usingTreeData = isTrue(this.gridOptions.treeData);\n if (usingTreeData) {\n return ModuleRegistry.assertRegistered(exports.ModuleNames.RowGroupingModule, 'Tree Data');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isValueCache = function () {\n return isTrue(this.gridOptions.valueCache);\n };\n GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () {\n return isTrue(this.gridOptions.valueCacheNeverExpires);\n };\n GridOptionsWrapper.prototype.isDeltaSort = function () {\n return isTrue(this.gridOptions.deltaSort);\n };\n GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () {\n return isTrue(this.gridOptions.aggregateOnlyChangedColumns);\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColDefFunc = function () {\n return this.gridOptions.processSecondaryColDef;\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColGroupDefFunc = function () {\n return this.gridOptions.processSecondaryColGroupDef;\n };\n GridOptionsWrapper.prototype.getSendToClipboardFunc = function () {\n return this.gridOptions.sendToClipboard;\n };\n GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () {\n return this.gridOptions.processRowPostCreate;\n };\n GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () {\n return this.gridOptions.processCellForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessHeaderForClipboardFunc = function () {\n return this.gridOptions.processHeaderForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () {\n return this.gridOptions.processCellFromClipboard;\n };\n GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () {\n return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n };\n GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () {\n return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n };\n GridOptionsWrapper.prototype.isServerSideSortingAlwaysResets = function () {\n return isTrue(this.gridOptions.serverSideSortingAlwaysResets);\n };\n GridOptionsWrapper.prototype.getPostSortFunc = function () {\n return this.gridOptions.postSort;\n };\n GridOptionsWrapper.prototype.getProcessChartOptionsFunc = function () {\n return this.gridOptions.processChartOptions;\n };\n GridOptionsWrapper.prototype.getClipboardDeliminator = function () {\n return _.exists(this.gridOptions.clipboardDeliminator) ? this.gridOptions.clipboardDeliminator : '\\t';\n };\n GridOptionsWrapper.prototype.setProperty = function (key, value) {\n var gridOptionsNoType = this.gridOptions;\n var previousValue = gridOptionsNoType[key];\n if (previousValue !== value) {\n gridOptionsNoType[key] = value;\n var event_1 = {\n type: key,\n currentValue: value,\n previousValue: previousValue\n };\n this.propertyEventService.dispatchEvent(event_1);\n }\n };\n // this logic is repeated in lots of places. any element that had different CSS\n // dependent on the layout needs to have the layout class added ot it.\n GridOptionsWrapper.prototype.addLayoutElement = function (element) {\n this.layoutElements.push(element);\n this.updateLayoutClasses();\n };\n GridOptionsWrapper.prototype.updateLayoutClasses = function () {\n var domLayout = this.getDomLayout();\n var domLayoutAutoHeight = domLayout === Constants.DOM_LAYOUT_AUTO_HEIGHT;\n var domLayoutPrint = domLayout === Constants.DOM_LAYOUT_PRINT;\n var domLayoutNormal = domLayout === Constants.DOM_LAYOUT_NORMAL;\n this.layoutElements.forEach(function (e) {\n _.addOrRemoveCssClass(e, 'ag-layout-auto-height', domLayoutAutoHeight);\n _.addOrRemoveCssClass(e, 'ag-layout-normal', domLayoutNormal);\n _.addOrRemoveCssClass(e, 'ag-layout-print', domLayoutPrint);\n });\n };\n GridOptionsWrapper.prototype.addEventListener = function (key, listener) {\n GridOptionsWrapper_1.checkEventDeprecation(key);\n this.propertyEventService.addEventListener(key, listener);\n };\n GridOptionsWrapper.checkEventDeprecation = function (eventName) {\n if (eventName === 'floatingRowDataChanged') {\n console.warn('ag-Grid: floatingRowDataChanged is now called pinnedRowDataChanged');\n }\n };\n GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {\n this.propertyEventService.removeEventListener(key, listener);\n };\n GridOptionsWrapper.prototype.isSkipHeaderOnAutoSize = function () {\n return !!this.gridOptions.skipHeaderOnAutoSize;\n };\n GridOptionsWrapper.prototype.getAutoSizePadding = function () {\n return this.gridOptions.autoSizePadding && this.gridOptions.autoSizePadding > 0 ? this.gridOptions.autoSizePadding : 20;\n };\n // properties\n GridOptionsWrapper.prototype.getHeaderHeight = function () {\n if (typeof this.gridOptions.headerHeight === 'number') {\n return this.gridOptions.headerHeight;\n }\n return this.getFromTheme(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {\n if (typeof this.gridOptions.floatingFiltersHeight === 'number') {\n return this.gridOptions.floatingFiltersHeight;\n }\n return this.getFromTheme(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {\n if (typeof this.gridOptions.groupHeaderHeight === 'number') {\n return this.gridOptions.groupHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {\n if (typeof this.gridOptions.pivotHeaderHeight === 'number') {\n return this.gridOptions.pivotHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {\n if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {\n return this.gridOptions.pivotGroupHeaderHeight;\n }\n return this.getGroupHeaderHeight();\n };\n GridOptionsWrapper.prototype.isExternalFilterPresent = function () {\n if (typeof this.gridOptions.isExternalFilterPresent === 'function') {\n return this.gridOptions.isExternalFilterPresent();\n }\n return false;\n };\n GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {\n if (typeof this.gridOptions.doesExternalFilterPass === 'function') {\n return this.gridOptions.doesExternalFilterPass(node);\n }\n return false;\n };\n GridOptionsWrapper.prototype.getTooltipShowDelay = function () {\n var tooltipShowDelay = this.gridOptions.tooltipShowDelay;\n if (_.exists(tooltipShowDelay)) {\n if (tooltipShowDelay < 0) {\n console.warn('ag-grid: tooltipShowDelay should not be lower than 0');\n }\n return Math.max(200, tooltipShowDelay);\n }\n return null;\n };\n GridOptionsWrapper.prototype.isTooltipMouseTrack = function () {\n return isTrue(this.gridOptions.tooltipMouseTrack);\n };\n GridOptionsWrapper.prototype.getDocument = function () {\n // if user is providing document, we use the users one,\n // otherwise we use the document on the global namespace.\n var result = null;\n if (this.gridOptions.getDocument && _.exists(this.gridOptions.getDocument)) {\n result = this.gridOptions.getDocument();\n }\n if (result && _.exists(result)) {\n return result;\n }\n return document;\n };\n GridOptionsWrapper.prototype.getMinColWidth = function () {\n if (this.gridOptions.minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.minColWidth;\n }\n var measuredMin = this.getFromTheme(null, 'headerCellMinWidth');\n return Math.max(measuredMin, GridOptionsWrapper_1.MIN_COL_WIDTH);\n };\n GridOptionsWrapper.prototype.getMaxColWidth = function () {\n if (this.gridOptions.maxColWidth && this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.maxColWidth;\n }\n return null;\n };\n GridOptionsWrapper.prototype.getColWidth = function () {\n if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return 200;\n }\n return this.gridOptions.colWidth;\n };\n GridOptionsWrapper.prototype.getRowBuffer = function () {\n var rowBuffer = this.gridOptions.rowBuffer;\n if (typeof rowBuffer === 'number') {\n if (rowBuffer < 0) {\n _.doOnce(function () { return console.warn(\"ag-Grid: rowBuffer should not be negative\"); }, 'warn rowBuffer negative');\n this.gridOptions.rowBuffer = rowBuffer = 0;\n }\n }\n else {\n rowBuffer = Constants.ROW_BUFFER_SIZE;\n }\n return rowBuffer;\n };\n GridOptionsWrapper.prototype.getRowBufferInPixels = function () {\n var rowsToBuffer = this.getRowBuffer();\n var defaultRowHeight = this.getRowHeightAsNumber();\n return rowsToBuffer * defaultRowHeight;\n };\n // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n // allow the user to provide the scroll width before we work it out.\n GridOptionsWrapper.prototype.getScrollbarWidth = function () {\n if (this.scrollWidth == null) {\n var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;\n this.scrollWidth = useGridOptions ? this.gridOptions.scrollbarWidth : _.getScrollbarWidth();\n }\n return this.scrollWidth;\n };\n GridOptionsWrapper.prototype.checkForDeprecated = function () {\n var _this = this;\n // casting to generic object, so typescript compiles even though\n // we are looking for attributes that don't exist\n var options = this.gridOptions;\n if (options.suppressUnSort) {\n console.warn('ag-grid: as of v1.12.4 suppressUnSort is not used. Please use sortingOrder instead.');\n }\n if (options.suppressDescSort) {\n console.warn('ag-grid: as of v1.12.4 suppressDescSort is not used. Please use sortingOrder instead.');\n }\n if (options.groupAggFields) {\n console.warn('ag-grid: as of v3 groupAggFields is not used. Please add appropriate agg fields to your columns.');\n }\n if (options.groupHidePivotColumns) {\n console.warn('ag-grid: as of v3 groupHidePivotColumns is not used as pivot columns are now called rowGroup columns. Please refer to the documentation');\n }\n if (options.groupKeys) {\n console.warn('ag-grid: as of v3 groupKeys is not used. You need to set rowGroupIndex on the columns to group. Please refer to the documentation');\n }\n if (typeof options.groupDefaultExpanded === 'boolean') {\n console.warn('ag-grid: groupDefaultExpanded can no longer be boolean. for groupDefaultExpanded=true, use groupDefaultExpanded=9999 instead, to expand all the groups');\n }\n if (options.onRowDeselected || options.rowDeselected) {\n console.warn('ag-grid: since version 3.4 event rowDeselected no longer exists, please check the docs');\n }\n if (options.rowsAlreadyGrouped) {\n console.warn('ag-grid: since version 3.4 rowsAlreadyGrouped no longer exists, please use getNodeChildDetails() instead');\n }\n if (options.groupAggFunction) {\n console.warn('ag-grid: since version 4.3.x groupAggFunction is now called groupRowAggNodes');\n }\n if (options.checkboxSelection) {\n console.warn('ag-grid: since version 8.0.x checkboxSelection is not supported as a grid option. ' + 'If you want this on all columns, use defaultColDef instead and set it there');\n }\n if (options.paginationInitialRowCount) {\n console.warn('ag-grid: since version 9.0.x paginationInitialRowCount is now called infiniteInitialRowCount');\n }\n if (options.infinitePageSize) {\n console.warn('ag-grid: since version 9.0.x infinitePageSize is now called cacheBlockSize');\n }\n if (options.infiniteBlockSize) {\n console.warn('ag-grid: since version 10.0.x infiniteBlockSize is now called cacheBlockSize');\n }\n if (options.maxPagesInCache) {\n console.warn('ag-grid: since version 10.0.x maxPagesInCache is now called maxBlocksInCache');\n }\n if (options.paginationOverflowSize) {\n console.warn('ag-grid: since version 10.0.x paginationOverflowSize is now called cacheOverflowSize');\n }\n // if (options.forPrint) {\n // console.warn('ag-grid: since version 10.1.x, use property domLayout=\"forPrint\" instead of forPrint=true');\n // }\n if (options.suppressMenuFilterPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','columnsMenuTab'] instead of suppressMenuFilterPanel=true\");\n }\n if (options.suppressMenuMainPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['filterMenuTab','columnsMenuTab'] instead of suppressMenuMainPanel=true\");\n }\n if (options.suppressMenuColumnPanel) {\n console.warn(\"ag-grid: since version 11.0.x, use property colDef.menuTabs=['generalMenuTab','filterMenuTab'] instead of suppressMenuColumnPanel=true\");\n }\n if (options.suppressUseColIdForGroups) {\n console.warn(\"ag-grid: since version 11.0.x, this is not in use anymore. You should be able to remove it from your definition\");\n }\n if (options.groupSuppressRow) {\n console.warn(\"ag-grid: since version 18.2.x, 'groupSuppressRow' should not be used anymore. Instead remove row groups and perform custom sorting.\");\n }\n if (options.groupColumnDef) {\n console.warn(\"ag-grid: since version 11.0.x, groupColumnDef has been renamed, this property is now called autoGroupColumnDef. Please change your configuration accordingly\");\n }\n if (options.slaveGrids) {\n console.warn(\"ag-grid: since version 12.x, slaveGrids has been renamed, this property is now called alignedGrids. Please change your configuration accordingly\");\n }\n if (options.floatingTopRowData) {\n console.warn(\"ag-grid: since version 12.x, floatingTopRowData is now called pinnedTopRowData\");\n }\n if (options.floatingBottomRowData) {\n console.warn(\"ag-grid: since version 12.x, floatingBottomRowData is now called pinnedBottomRowData\");\n }\n if (options.paginationStartPage) {\n console.warn(\"ag-grid: since version 12.x, paginationStartPage is gone, please call api.paginationGoToPage(\" + options.paginationStartPage + \") instead.\");\n }\n if (options.getHeaderCellTemplate) {\n console.warn(\"ag-grid: since version 15.x, getHeaderCellTemplate is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.headerCellTemplate) {\n console.warn(\"ag-grid: since version 15.x, headerCellTemplate is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.headerCellRenderer) {\n console.warn(\"ag-grid: since version 15.x, headerCellRenderer is gone, please check the header documentation on how to set header templates.\");\n }\n if (options.angularCompileHeaders) {\n console.warn(\"ag-grid: since version 15.x, angularCompileHeaders is gone, please see the getting started for Angular 1 docs to see how to do headers in Angular 1.x.\");\n }\n if (options.pivotTotals) {\n console.warn(\"ag-grid: since version 18.x, pivotTotals has been removed, instead if using pivotTotals, set pivotColumnGroupTotals='before'|'after'.\");\n options.pivotColumnGroupTotals = 'before';\n }\n if (options.rowModelType === 'inMemory') {\n console.warn(\"ag-grid: since version 18.x, The In Memory Row Model has been renamed to the Client Side Row Model, set rowModelType='clientSide' instead.\");\n options.rowModelType = 'clientSide';\n }\n if (options.rowModelType === 'enterprise') {\n console.warn(\"ag-grid: since version 18.x, The Enterprise Row Model has been renamed to the Server Side Row Model, set rowModelType='serverSide' instead.\");\n options.rowModelType = 'serverSide';\n }\n if (options.layoutInterval) {\n console.warn(\"ag-grid: since version 18.x, layoutInterval is no longer a property. This is because the grid now uses CSS Flex for layout.\");\n }\n if (options.gridAutoHeight) {\n console.warn(\"ag-grid: since version 19.x, gridAutoHeight is gone, please use domLayout=autoHeight instead\");\n options.domLayout = 'autoHeight';\n }\n if (options.showToolPanel === true) {\n console.warn(\"ag-grid: since version 19.x, showToolPanel is gone, please specify toolPanel components. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.showToolPanel = undefined;\n options.sideBar = options.sideBar || true;\n }\n if (options.showToolPanel === false) {\n console.warn(\"ag-grid: since version 19.x, showToolPanel is gone, please specify toolPanel components. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.showToolPanel = undefined;\n options.sideBar = options.sideBar || false;\n }\n var oldToolPanelProperties = {\n toolPanelSuppressRowGroups: 'suppressRowGroups',\n toolPanelSuppressValues: 'suppressValues',\n toolPanelSuppressPivots: 'suppressPivots',\n toolPanelSuppressPivotMode: 'suppressPivotMode',\n toolPanelSuppressColumnFilter: 'suppressColumnFilter',\n toolPanelSuppressColumnSelectAll: 'suppressColumnSelectAll',\n toolPanelSuppressSideButtons: 'suppressSideButtons',\n toolPanelSuppressColumnExpandAll: 'suppressColumnExpandAll',\n contractColumnSelection: 'contractColumnSelection'\n };\n var toolPanelColumnsCompProps = {};\n Object.keys(oldToolPanelProperties).forEach(function (key) {\n var translation = oldToolPanelProperties[key];\n var value = _this.gridOptions[key];\n if (value !== undefined) {\n if (key === 'toolPanelSuppressSideButtons') {\n console.warn('ag-grid: since v19.0 toolPanelSuppressSideButtons has been completely removed. See https://www.ag-grid.com/javascript-grid-tool-panel/');\n return;\n }\n console.warn(\"ag-grid: since v19.0 gridOptions.\" + key + \" is deprecated, please use gridOptions.sideBar.toolPanel[columnsIndex].componentParams.\" + translation);\n toolPanelColumnsCompProps[translation] = value;\n }\n });\n if (Object.keys(toolPanelColumnsCompProps).length > 0 && !_.exists(options.sideBar)) {\n console.warn(\"ag-grid: since version 19.x, sideBar is mandatory if using toolPanel related properties. See https://www.ag-grid.com/javascript-grid-tool-panel/\");\n options.sideBar = true;\n }\n if (options.sideBar != null) {\n options.sideBar = SideBarDefParser.parse(options.sideBar);\n }\n var sideBarDef = this.gridOptions.sideBar;\n if (Object.keys(toolPanelColumnsCompProps).length > 0 && sideBarDef && sideBarDef.toolPanels) {\n var columnsDef = sideBarDef.toolPanels.filter(function (it) { return it.id === 'columns'; });\n if (columnsDef.length === 1) {\n _.mergeDeep(columnsDef[0], {\n componentParams: toolPanelColumnsCompProps\n });\n }\n }\n if (options.enableStatusBar) {\n console.warn(\"ag-grid: since version 19.x, enableStatusBar is gone, please specify statusBar components\");\n options.statusBar = options.statusBar || {\n components: [{ component: 'agAggregationComponent' }]\n };\n }\n if (options.alwaysShowStatusBar) {\n console.warn(\"ag-grid: since version 19.x, alwaysShowStatusBar is gone. Please specify a min-height on the ag-status-bar css class, eg .ag-status-bar {min-height: 35px; }\");\n }\n if (options.enableServerSideSorting || options.enableSorting) {\n console.warn(\"ag-Grid: since v20, grid options enableSorting and enableServerSideSorting are gone. Instead set sortable=true on the column definition for the columns sorting are allowed on. To migrate from gridOption.enableSorting=true, set gridOptions.defaultColDef.sortable=true\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.sortable) {\n options.defaultColDef.sortable = true;\n }\n }\n if (options.enableFilter || options.enableServerSideFilter) {\n console.warn(\"ag-Grid: since v20, grid options enableFilter and enableServerSideFilter are gone. Instead set filter=true (if not already specifying a specific filter) on the column definition for the columns filtering is allowed on. To migrate from gridOptions.enableFilter=true, set gridOptions.defaultColDef.filter=true. If you are explicitly setting specific filters for each column (ie colDef.filter is already set) the you don't need to do anything.\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.filter) {\n options.defaultColDef.filter = true;\n }\n }\n if (options.enableColResize) {\n console.warn(\"ag-Grid: since v20, grid options enableColResize is gone. Instead set resizable=true on the column definition for the columns resizing are allowed on. To migrate from gridOption.enableColResize=true, set gridOptions.defaultColDef.resizable=true\");\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (!options.defaultColDef.resizable) {\n options.defaultColDef.resizable = true;\n }\n }\n if (options.deprecatedEmbedFullWidthRows) {\n console.warn(\"ag-Grid: since v21.2, deprecatedEmbedFullWidthRows has been replaced with embedFullWidthRows.\");\n }\n if (options.suppressTabbing) {\n console.warn(\"ag-Grid: since v20.1, suppressTabbing is replaced with the more powerful grid callback suppressKeyboardEvent(params) which can suppress any keyboard event including tabbing.\");\n }\n if (options.doesDataFlower) {\n console.warn('ag-Grid: since v21.1, doesDataFlower is deprecated. Master/Detail is the new way for showing child data for a row and was introduced over a year ago. Please migrate your code to use master/detail instead.');\n }\n if (options.enableOldSetFilterModel) {\n console.warn('ag-Grid: since v22.x, enableOldSetFilterModel is deprecated. Please move to the new Set Filter Model as the old one may not be supported in v23 onwards.');\n }\n if (options.floatingFilter) {\n console.warn('ag-Grid: since v23.1, floatingFilter on the gridOptions is deprecated. Please use floatingFilter on the colDef instead.');\n if (!options.defaultColDef) {\n options.defaultColDef = {};\n }\n if (options.defaultColDef.floatingFilter == null) {\n options.defaultColDef.floatingFilter = true;\n }\n }\n var checkRenamedProperty = function (oldProp, newProp, version) {\n if (options[oldProp] != null) {\n console.warn(\"ag-grid: since version \" + version + \", '\" + oldProp + \"' is deprecated / renamed, please use the new property name '\" + newProp + \"' instead.\");\n if (options[newProp] == null) {\n options[newProp] = options[oldProp];\n }\n }\n };\n checkRenamedProperty('batchUpdateWaitMillis', 'asyncTransactionWaitMillis', '23.1.x');\n checkRenamedProperty('deltaRowDataMode', 'immutableData', '23.1.x');\n checkRenamedProperty('deltaColumnMode', 'immutableColumns', '23.1.x');\n };\n GridOptionsWrapper.prototype.checkForViolations = function () {\n if (this.isTreeData()) {\n this.treeDataViolations();\n }\n };\n GridOptionsWrapper.prototype.treeDataViolations = function () {\n if (this.isRowModelDefault()) {\n if (_.missing(this.getDataPathFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +\n 'provide getDataPath function, please provide getDataPath function if using tree data.');\n }\n }\n if (this.isRowModelServerSide()) {\n if (_.missing(this.getIsServerSideGroupFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');\n }\n if (_.missing(this.getServerSideGroupKeyFunc())) {\n console.warn('ag-Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');\n }\n }\n };\n GridOptionsWrapper.prototype.getLocaleTextFunc = function () {\n if (this.gridOptions.localeTextFunc) {\n return this.gridOptions.localeTextFunc;\n }\n var that = this;\n return function (key, defaultValue) {\n var localeText = that.gridOptions.localeText;\n if (localeText && localeText[key]) {\n return localeText[key];\n }\n return defaultValue;\n };\n };\n // responsible for calling the onXXX functions on gridOptions\n GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {\n var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n if (typeof this.gridOptions[callbackMethodName] === 'function') {\n this.gridOptions[callbackMethodName](event);\n }\n };\n // we don't allow dynamic row height for virtual paging\n GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {\n if (!this.gridOptions.rowHeight || _.missing(this.gridOptions.rowHeight)) {\n return this.getDefaultRowHeight();\n }\n else if (this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight)) {\n return this.gridOptions.rowHeight;\n }\n console.warn('ag-Grid row height must be a number if not using standard row model');\n return this.getDefaultRowHeight();\n };\n GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode, allowEstimate) {\n // check the function first, in case use set both function and\n // number, when using virtual pagination then function can be\n // used for pinned rows and the number for the body rows.\n if (allowEstimate === void 0) { allowEstimate = false; }\n if (typeof this.gridOptions.getRowHeight === 'function') {\n if (allowEstimate) {\n return { height: this.getDefaultRowHeight(), estimated: true };\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptions.api,\n context: this.gridOptions.context\n };\n var height = this.gridOptions.getRowHeight(params);\n if (height != null) {\n return { height: height, estimated: false };\n }\n }\n if (rowNode.detail && this.isMasterDetail()) {\n if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n return { height: this.gridOptions.detailRowHeight, estimated: false };\n }\n return { height: DEFAULT_DETAIL_ROW_HEIGHT, estimated: false };\n }\n var defaultRowHeight = this.getDefaultRowHeight();\n var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;\n var minRowHeight = Math.min(defaultRowHeight, rowHeight);\n if (this.columnController.isAutoRowHeightActive()) {\n if (allowEstimate) {\n return { height: rowHeight, estimated: true };\n }\n var autoHeight = this.autoHeightCalculator.getPreferredHeightForRow(rowNode);\n // never return less than the default row height - covers when auto height\n // cells are blank.\n return { height: Math.max(autoHeight, minRowHeight), estimated: false };\n }\n return { height: rowHeight, estimated: false };\n };\n GridOptionsWrapper.prototype.isDynamicRowHeight = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsWrapper.prototype.getListItemHeight = function () {\n return this.getFromTheme(20, 'listItemHeight');\n };\n GridOptionsWrapper.prototype.chartMenuPanelWidth = function () {\n return this.environment.chartMenuPanelWidth();\n };\n GridOptionsWrapper.prototype.isNumeric = function (value) {\n return !isNaN(value) && typeof value === 'number';\n };\n // Material data table has strict guidelines about whitespace, and these values are different than the ones\n // ag-grid uses by default. We override the default ones for the sake of making it better out of the box\n GridOptionsWrapper.prototype.getFromTheme = function (defaultValue, sassVariableName) {\n var theme = this.environment.getTheme().theme;\n if (theme && theme.indexOf('ag-theme') === 0) {\n return this.environment.getSassVariable(theme, sassVariableName);\n }\n return defaultValue;\n };\n GridOptionsWrapper.prototype.getDefaultRowHeight = function () {\n return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');\n };\n var GridOptionsWrapper_1;\n GridOptionsWrapper.MIN_COL_WIDTH = 10;\n GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';\n GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';\n GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';\n GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';\n GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE = 'suppressClipboardPaste';\n GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';\n GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';\n GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION = 'suppressRowClickSelection';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG = 'suppressRowDrag';\n GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG = 'suppressMoveWhenRowDragging';\n GridOptionsWrapper.PROP_POPUP_PARENT = 'popupParent';\n GridOptionsWrapper.PROP_DOM_LAYOUT = 'domLayout';\n __decorate$7([\n Autowired('gridOptions')\n ], GridOptionsWrapper.prototype, \"gridOptions\", void 0);\n __decorate$7([\n Autowired('columnController')\n ], GridOptionsWrapper.prototype, \"columnController\", void 0);\n __decorate$7([\n Autowired('eventService')\n ], GridOptionsWrapper.prototype, \"eventService\", void 0);\n __decorate$7([\n Autowired('gridApi')\n ], GridOptionsWrapper.prototype, \"gridApi\", void 0);\n __decorate$7([\n Autowired('columnApi')\n ], GridOptionsWrapper.prototype, \"columnApi\", void 0);\n __decorate$7([\n Autowired('environment')\n ], GridOptionsWrapper.prototype, \"environment\", void 0);\n __decorate$7([\n Autowired('autoHeightCalculator')\n ], GridOptionsWrapper.prototype, \"autoHeightCalculator\", void 0);\n __decorate$7([\n Autowired('context')\n ], GridOptionsWrapper.prototype, \"context\", void 0);\n __decorate$7([\n __param$3(0, Qualifier('gridApi')), __param$3(1, Qualifier('columnApi'))\n ], GridOptionsWrapper.prototype, \"agWire\", null);\n __decorate$7([\n PreDestroy\n ], GridOptionsWrapper.prototype, \"destroy\", null);\n __decorate$7([\n PostConstruct\n ], GridOptionsWrapper.prototype, \"init\", null);\n GridOptionsWrapper = GridOptionsWrapper_1 = __decorate$7([\n Bean('gridOptionsWrapper')\n ], GridOptionsWrapper);\n return GridOptionsWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __spreadArrays$3 = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getEventCallbacks = function () {\n if (!ComponentUtil.EVENT_CALLBACKS) {\n ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });\n }\n return ComponentUtil.EVENT_CALLBACKS;\n };\n ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {\n if (skipEventDeprecationCheck === void 0) { skipEventDeprecationCheck = false; }\n checkForDeprecated(component);\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return typeof component[key] !== 'undefined'; };\n // add in all the simple properties\n __spreadArrays$3(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = component[key]; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(component[key]); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(component[key]); });\n // purely for event deprecation checks (for frameworks - wouldn't apply for non-fw versions)\n if (!skipEventDeprecationCheck) {\n ComponentUtil.EVENTS\n // React uses onXXX, not sure why this is different to the other frameworks\n .filter(function (event) { return keyExists(event) || keyExists(ComponentUtil.getCallbackForEvent(event)); })\n .forEach(function (event) { return GridOptionsWrapper.checkEventDeprecation(event); });\n }\n return gridOptions;\n };\n ComponentUtil.getCallbackForEvent = function (eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n else {\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n }\n };\n ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {\n if (!changes) {\n return;\n }\n checkForDeprecated(changes);\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return changes[key]; };\n // check if any change for the simple types, and if so, then just copy in the new value\n __spreadArrays$3(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = changes[key].currentValue; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(changes[key].currentValue); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(changes[key].currentValue); });\n if (changes.enableCellTextSelection) {\n api.setEnableCellTextSelection(ComponentUtil.toBoolean(changes.enableCellTextSelection.currentValue));\n }\n if (changes.showToolPanel) {\n api.showToolPanel(ComponentUtil.toBoolean(changes.showToolPanel.currentValue));\n }\n if (changes.quickFilterText) {\n api.setQuickFilter(changes.quickFilterText.currentValue);\n }\n if (changes.rowData) {\n api.setRowData(changes.rowData.currentValue);\n }\n if (changes.pinnedTopRowData) {\n api.setPinnedTopRowData(changes.pinnedTopRowData.currentValue);\n }\n if (changes.pinnedBottomRowData) {\n api.setPinnedBottomRowData(changes.pinnedBottomRowData.currentValue);\n }\n if (changes.columnDefs) {\n api.setColumnDefs(changes.columnDefs.currentValue, \"gridOptionsChanged\");\n }\n if (changes.datasource) {\n api.setDatasource(changes.datasource.currentValue);\n }\n if (changes.headerHeight) {\n api.setHeaderHeight(ComponentUtil.toNumber(changes.headerHeight.currentValue));\n }\n if (changes.paginationPageSize) {\n api.paginationSetPageSize(ComponentUtil.toNumber(changes.paginationPageSize.currentValue));\n }\n if (changes.pivotMode) {\n columnApi.setPivotMode(ComponentUtil.toBoolean(changes.pivotMode.currentValue));\n }\n if (changes.groupRemoveSingleChildren) {\n api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changes.groupRemoveSingleChildren.currentValue));\n }\n if (changes.suppressRowDrag) {\n api.setSuppressRowDrag(ComponentUtil.toBoolean(changes.suppressRowDrag.currentValue));\n }\n if (changes.suppressMoveWhenRowDragging) {\n api.setSuppressMoveWhenRowDragging(ComponentUtil.toBoolean(changes.suppressMoveWhenRowDragging.currentValue));\n }\n if (changes.suppressRowClickSelection) {\n api.setSuppressRowClickSelection(ComponentUtil.toBoolean(changes.suppressRowClickSelection.currentValue));\n }\n if (changes.gridAutoHeight) {\n api.setGridAutoHeight(ComponentUtil.toBoolean(changes.gridAutoHeight.currentValue));\n }\n if (changes.suppressClipboardPaste) {\n api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changes.suppressClipboardPaste.currentValue));\n }\n if (changes.sideBar) {\n api.setSideBar(changes.sideBar.currentValue);\n }\n // copy changes into an event for dispatch\n var event = {\n type: Events.EVENT_COMPONENT_STATE_CHANGED,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n _.iterateObject(changes, function (key, value) {\n event[key] = value;\n });\n api.dispatchEvent(event);\n };\n ComponentUtil.toBoolean = function (value) {\n if (typeof value === 'boolean') {\n return value;\n }\n else if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // no value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value == '';\n }\n else {\n return false;\n }\n };\n ComponentUtil.toNumber = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n else if (typeof value === 'string') {\n return Number(value);\n }\n else {\n return undefined;\n }\n };\n // all the events are populated in here AFTER this class (at the bottom of the file).\n ComponentUtil.EVENTS = [];\n ComponentUtil.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n return ComponentUtil;\n}());\nComponentUtil.EVENTS = _.values(Events);\nfunction checkForDeprecated(changes) {\n if (changes.rowDeselected || changes.onRowDeselected) {\n console.warn('ag-grid: as of v3.4 rowDeselected no longer exists. Please check the docs.');\n }\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n var _this = this;\n this.destroyFunctions = [];\n this.destroyed = false;\n this.getContext = function () { return _this.context; };\n this.isAlive = function () { return !_this.destroyed; };\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n BeanStub.prototype.getFrameworkOverrides = function () {\n return this.frameworkOverrides;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addDestroyableEventListener = function (object, event, listener) {\n var _this = this;\n if (this.destroyed) {\n return;\n }\n if (object instanceof HTMLElement) {\n _.addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);\n }\n else {\n object.addEventListener(event, listener);\n }\n var destroyFunc = function () {\n object.removeEventListener(event, listener);\n _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.prototype.wireDependentBean = function (bean, context) {\n if (bean.destroy) {\n this.addDestroyFunc(bean.destroy.bind(bean));\n }\n return this.wireBean(bean, context);\n };\n BeanStub.prototype.wireBean = function (bean, context) {\n (context || this.getContext()).wireBean(bean);\n return bean;\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate$8([\n Autowired('context')\n ], BeanStub.prototype, \"context\", void 0);\n __decorate$8([\n Autowired('frameworkOverrides')\n ], BeanStub.prototype, \"frameworkOverrides\", void 0);\n __decorate$8([\n PreDestroy\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (undefined && undefined.__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})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar compIdSequence = new NumberSequence();\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n _this.childComponents = [];\n _this.annotatedEventListeners = [];\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n _this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode, paramsMap) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = _.copyNodeList(parentNode.childNodes);\n _.forEach(childNodeList, function (childNode) {\n if (!(childNode instanceof HTMLElement)) {\n return;\n }\n var childComp = _this.getContext().createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n }, paramsMap);\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n _this.createChildComponentsFromTags(childNode);\n // converting from HTMLCollection to Array\n var items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode);\n }\n });\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n _.iterateNamedNodeMap(source.attributes, function (name, value) { return dest.setAttribute(name, value); });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.childComponents.push(newComponent);\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n };\n Component.prototype.iterateOverQuerySelectors = function (action) {\n var thisPrototype = Object.getPrototypeOf(this);\n while (thisPrototype != null) {\n var metaData = thisPrototype.__agComponentMetaData;\n var currentProtoName = (thisPrototype.constructor).name;\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n _.forEach(metaData[currentProtoName].querySelectors, function (querySelector) { return action(querySelector); });\n }\n thisPrototype = Object.getPrototypeOf(thisPrototype);\n }\n };\n Component.prototype.setTemplate = function (template, paramsMap) {\n var eGui = _.loadTemplate(template);\n this.setTemplateFromElement(eGui, paramsMap);\n };\n Component.prototype.setTemplateFromElement = function (element, paramsMap) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.addAnnotatedEventListeners();\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n if (!!this.getContext()) {\n this.createChildComponentsFromTags(this.getGui(), paramsMap);\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n if (!!this.getGui()) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n thisNoType[querySelector.attributeName] = resultOfQuery.__agComponent || resultOfQuery;\n }\n });\n };\n Component.prototype.addAnnotatedEventListeners = function () {\n var _this = this;\n this.removeAnnotatedEventListeners();\n if (!this.eGui) {\n return;\n }\n var listenerMethods = this.getAgComponentMetaData('listenerMethods');\n if (_.missingOrEmpty(listenerMethods)) {\n return;\n }\n if (!this.annotatedEventListeners) {\n this.annotatedEventListeners = [];\n }\n _.forEach(listenerMethods, function (eventListener) {\n var listener = _this[eventListener.methodName].bind(_this);\n _this.eGui.addEventListener(eventListener.eventName, listener);\n _this.annotatedEventListeners.push({ eventName: eventListener.eventName, listener: listener });\n });\n };\n Component.prototype.getAgComponentMetaData = function (key) {\n var res = [];\n var thisProto = Object.getPrototypeOf(this);\n while (thisProto != null) {\n var metaData = thisProto.__agComponentMetaData;\n var currentProtoName = (thisProto.constructor).name;\n // IE does not support Function.prototype.name, so we need to extract\n // the name using a RegEx\n // from: https://matt.scharley.me/2012/03/monkey-patch-name-ie.html\n if (currentProtoName === undefined) {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = funcNameRegex.exec(thisProto.constructor.toString());\n if (results && results.length > 1) {\n currentProtoName = results[1].trim();\n }\n }\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName][key]) {\n res = res.concat(metaData[currentProtoName][key]);\n }\n thisProto = Object.getPrototypeOf(thisProto);\n }\n return res;\n };\n Component.prototype.removeAnnotatedEventListeners = function () {\n var _this = this;\n if (!this.annotatedEventListeners || !this.eGui) {\n return;\n }\n _.forEach(this.annotatedEventListeners, function (e) { return _this.eGui.removeEventListener(e.eventName, e.listener); });\n this.annotatedEventListeners = [];\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n Component.prototype.getFocusableElement = function () {\n return this.eGui;\n };\n Component.prototype.setParentComponent = function (component) {\n this.parentComponent = component;\n };\n Component.prototype.getParentComponent = function () {\n return this.parentComponent;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild, container) {\n if (!container) {\n container = this.eGui;\n }\n if (_.isNodeOrElement(newChild)) {\n container.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n container.appendChild(childComponent.getGui());\n this.childComponents.push(childComponent);\n }\n };\n Component.prototype.addFeature = function (feature, context) {\n this.wireDependentBean(feature, context);\n };\n Component.prototype.isDisplayed = function () {\n return this.displayed;\n };\n Component.prototype.setVisible = function (visible) {\n if (visible !== this.visible) {\n this.visible = visible;\n _.setVisible(this.eGui, visible);\n }\n };\n Component.prototype.setDisplayed = function (displayed) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n _.setDisplayed(this.eGui, displayed);\n var event_1 = {\n type: Component.EVENT_DISPLAYED_CHANGED,\n visible: this.displayed\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.destroy = function () {\n _.forEach(this.childComponents, function (childComponent) {\n if (childComponent && childComponent.destroy) {\n childComponent.destroy();\n }\n });\n this.childComponents.length = 0;\n this.removeAnnotatedEventListeners();\n _super.prototype.destroy.call(this);\n };\n Component.prototype.addGuiEventListener = function (event, listener) {\n var _this = this;\n this.eGui.addEventListener(event, listener);\n this.addDestroyFunc(function () { return _this.eGui.removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n _.addCssClass(this.eGui, className);\n };\n Component.prototype.removeCssClass = function (className) {\n _.removeCssClass(this.eGui, className);\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n _.addOrRemoveCssClass(this.eGui, className, addOrRemove);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.eGui;\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement(\"[ref=\\\"\" + refName + \"\\\"]\");\n };\n Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n __decorate$9([\n PreConstruct\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1 = (undefined && undefined.__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})();\nvar PopupComponent = /** @class */ (function (_super) {\n __extends$1(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n PopupComponent.prototype.setParentComponent = function (container) {\n _.addCssClass(container.getGui(), 'ag-has-popup');\n _super.prototype.setParentComponent.call(this, container);\n };\n PopupComponent.prototype.destroy = function () {\n var parentComp = this.parentComponent;\n var hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n _.removeCssClass(parentComp.getGui(), 'ag-has-popup');\n }\n _super.prototype.destroy.call(this);\n };\n return PopupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector);\n}\nfunction RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\");\n}\nfunction querySelectorFunc(selector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error(\"ag-Grid: QuerySelector selector should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: QuerySelector should be on an attribute\");\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector\n });\n}\n// think we should take this out, put property bindings on the\nfunction Listener(eventName) {\n return listenerFunc.bind(this, eventName);\n}\nfunction listenerFunc(eventName, target, methodName) {\n if (eventName === null) {\n console.error(\"ag-Grid: EventListener eventName should not be null\");\n return;\n }\n addToObjectProps(target, 'listenerMethods', {\n methodName: methodName,\n eventName: eventName\n });\n}\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps$1(target, target.constructor.name);\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps$1(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2 = (undefined && undefined.__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})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends$2(TextCellEditor, _super);\n function TextCellEditor() {\n return _super.call(this, TextCellEditor.TEMPLATE) || this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n var keyPressBackspaceOrDelete = params.keyPress === Constants.KEY_BACKSPACE\n || params.keyPress === Constants.KEY_DELETE;\n if (keyPressBackspaceOrDelete) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.keyPress !== Constants.KEY_F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (_.exists(startValue)) {\n eInput.setValue(startValue, true);\n }\n this.addDestroyableEventListener(eInput.getGui(), 'keydown', function (event) {\n var pageUp = event.keyCode === Constants.KEY_PAGE_UP;\n var pageDown = event.keyCode === Constants.KEY_PAGE_DOWN;\n if (pageUp || pageDown) {\n event.preventDefault();\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n if (!this.focusAfterAttached) {\n return;\n }\n var eInput = this.eInput;\n // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input\n // to be focused before setSelectionRange will work. But it triggers a bug in Safari where\n // explicitly focusing then blurring an empty field will cause the parent container to scroll.\n if (!_.isBrowserSafari()) {\n eInput.getFocusableElement().focus();\n }\n var inputEl = eInput.getInputElement();\n if (this.highlightAllOnFocus) {\n inputEl.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the caret\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n var value = eInput.getValue();\n var len = (_.exists(value) && value.length) || 0;\n if (len) {\n inputEl.setSelectionRange(len, len);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n var focusEl = eInput.getFocusableElement();\n var inputEl = eInput.getInputElement();\n focusEl.focus();\n inputEl.select();\n };\n TextCellEditor.prototype.focusOut = function () {\n var inputEl = this.eInput.getInputElement();\n if (_.isBrowserIE()) {\n inputEl.setSelectionRange(0, 0);\n }\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.getValue());\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = '
';\n __decorate$a([\n RefSelector('eInput')\n ], TextCellEditor.prototype, \"eInput\", void 0);\n return TextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/** Provides sync access to async component. Date component can be lazy created - this class encapsulates\n * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */\nvar DateCompWrapper = /** @class */ (function () {\n function DateCompWrapper(userComponentFactory, dateComponentParams, eParent) {\n var _this = this;\n this.alive = true;\n userComponentFactory.newDateComponent(dateComponentParams).then(function (dateComp) {\n // because async, check the filter still exists after component comes back\n if (!_this.alive) {\n if (dateComp.destroy) {\n dateComp.destroy();\n }\n return;\n }\n _this.dateComp = dateComp;\n eParent.appendChild(dateComp.getGui());\n if (dateComp.afterGuiAttached) {\n dateComp.afterGuiAttached();\n }\n if (_this.tempValue) {\n dateComp.setDate(_this.tempValue);\n }\n });\n }\n DateCompWrapper.prototype.destroy = function () {\n this.alive = false;\n if (this.dateComp && this.dateComp.destroy) {\n this.dateComp.destroy();\n }\n };\n DateCompWrapper.prototype.getDate = function () {\n return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n };\n DateCompWrapper.prototype.setDate = function (value) {\n if (this.dateComp) {\n this.dateComp.setDate(value);\n }\n else {\n this.tempValue = value;\n }\n };\n DateCompWrapper.prototype.setInputPlaceholder = function (placeholder) {\n if (this.dateComp && this.dateComp.setInputPlaceholder) {\n this.dateComp.setInputPlaceholder(placeholder);\n }\n };\n return DateCompWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/* Common logic for options, used by both filters and floating filters. */\nvar OptionsFactory = /** @class */ (function () {\n function OptionsFactory() {\n this.customFilterOptions = {};\n }\n OptionsFactory.prototype.init = function (params, defaultOptions) {\n this.filterOptions = params.filterOptions ? params.filterOptions : defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n };\n OptionsFactory.prototype.getFilterOptions = function () {\n return this.filterOptions;\n };\n OptionsFactory.prototype.mapCustomOptions = function () {\n var _this = this;\n if (!this.filterOptions) {\n return;\n }\n this.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n if (!filterOption.displayKey) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayKey'\");\n return;\n }\n if (!filterOption.displayName) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'displayName'\");\n return;\n }\n if (!filterOption.test) {\n console.warn(\"ag-Grid: ignoring FilterOptionDef as it doesn't contain a 'test'\");\n return;\n }\n _this.customFilterOptions[filterOption.displayKey] = filterOption;\n });\n };\n OptionsFactory.prototype.selectDefaultItem = function (params) {\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n }\n else if (this.filterOptions.length >= 1) {\n var firstFilterOption = this.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultOption = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultOption = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"ag-Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n else {\n console.warn('ag-Grid: no filter options for filter');\n }\n };\n OptionsFactory.prototype.getDefaultOption = function () {\n return this.defaultOption;\n };\n OptionsFactory.prototype.getCustomOption = function (name) {\n return this.customFilterOptions[name];\n };\n return OptionsFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$3 = (undefined && undefined.__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})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Contains common logic to all provided filters (apply button, clear button, etc).\n * All the filters that come with ag-Grid extend this class. User filters do not\n * extend this class.\n */\nvar ProvidedFilter = /** @class */ (function (_super) {\n __extends$3(ProvidedFilter, _super);\n function ProvidedFilter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.applyActive = false;\n _this.hidePopup = null;\n // after the user hits 'apply' the model gets copied to here. this is then the model that we use for\n // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.\n // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is\n // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter\n // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter\n // not active) then this appliedModel will be null/undefined.\n _this.appliedModel = null;\n return _this;\n }\n /** @deprecated */\n ProvidedFilter.prototype.onFilterChanged = function () {\n console.warn(\"ag-Grid: you should not call onFilterChanged() directly on the filter, please call\\n gridApi.onFilterChanged() instead. onFilterChanged is not part of the exposed filter interface (it was\\n a method that existed on an old version of the filters that was not intended for public use.\");\n this.providedFilterParams.filterChangedCallback();\n };\n ProvidedFilter.prototype.isFilterActive = function () {\n // filter is active if we have a valid applied model\n return !!this.appliedModel;\n };\n ProvidedFilter.prototype.postConstruct = function () {\n var templateString = /* html */ \"\\n
\\n
\\n \" + this.createBodyTemplate() + \"\\n
\\n
\";\n this.setTemplate(templateString);\n };\n ProvidedFilter.prototype.init = function (params) {\n this.setParams(params);\n this.resetUiToDefaults(true);\n this.updateUiVisibility();\n this.setupOnBtApplyDebounce();\n };\n ProvidedFilter.prototype.setParams = function (params) {\n this.providedFilterParams = params;\n if (params.newRowsAction === ProvidedFilter.NEW_ROWS_ACTION_KEEP) {\n this.newRowsActionKeep = true;\n }\n else if (params.newRowsAction === ProvidedFilter.NEW_ROWS_ACTION_CLEAR) {\n this.newRowsActionKeep = false;\n }\n else {\n // the default for SSRM and IRM is 'keep', for CSRM and VRM the default is 'clear'\n var rowModelType = this.rowModel.getType();\n var modelsForKeep = [Constants.ROW_MODEL_TYPE_SERVER_SIDE, Constants.ROW_MODEL_TYPE_INFINITE];\n this.newRowsActionKeep = modelsForKeep.indexOf(rowModelType) >= 0;\n }\n this.applyActive = ProvidedFilter.isUseApplyButton(params);\n this.createButtonPanel(params);\n };\n ProvidedFilter.prototype.createButtonPanel = function (params) {\n var _this = this;\n var clearActive = params.clearButton === true;\n var resetActive = params.resetButton === true;\n var anyButtonVisible = this.applyActive || clearActive || resetActive;\n if (anyButtonVisible) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var eButtonsPanel_1 = document.createElement('div');\n _.addCssClass(eButtonsPanel_1, 'ag-filter-apply-panel');\n var addButton = function (text, clickListener) {\n var button = _.loadTemplate(/* html */ \"\");\n eButtonsPanel_1.appendChild(button);\n _this.addDestroyableEventListener(button, 'click', clickListener);\n };\n if (clearActive) {\n addButton(translate('clearFilter', 'Clear Filter'), function () { return _this.onBtClear(); });\n }\n if (resetActive) {\n addButton(translate('resetFilter', 'Reset Filter'), function () { return _this.onBtReset(); });\n }\n if (this.applyActive) {\n addButton(translate('applyFilter', 'Apply Filter'), function () { return _this.onBtApply(); });\n }\n this.eFilterBodyWrapper.parentElement.appendChild(eButtonsPanel_1);\n }\n };\n // subclasses can override this to provide alternative debounce defaults\n ProvidedFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {\n var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n this.onBtApplyDebounce = _.debounce(this.onBtApply.bind(this), debounceMs);\n };\n ProvidedFilter.prototype.getModel = function () {\n return this.appliedModel;\n };\n ProvidedFilter.prototype.setModel = function (model) {\n if (model) {\n this.setModelIntoUi(model);\n }\n else {\n this.resetUiToDefaults();\n }\n this.updateUiVisibility();\n // we set the model from the gui, rather than the provided model,\n // so the model is consistent. eg handling of null/undefined will be the same,\n // of if model is case insensitive, then casing is removed.\n this.applyModel();\n };\n ProvidedFilter.prototype.onBtClear = function () {\n this.resetUiToDefaults();\n this.updateUiVisibility();\n this.onUiChanged();\n };\n ProvidedFilter.prototype.onBtReset = function () {\n this.onBtClear();\n this.onBtApply();\n };\n // returns true if the new model is different to the old model\n ProvidedFilter.prototype.applyModel = function () {\n var oldAppliedModel = this.appliedModel;\n this.appliedModel = this.getModelFromUi();\n // models can be same if user pasted same content into text field, or maybe just changed the case\n // and it's a case insensitive filter\n return !this.areModelsEqual(this.appliedModel, oldAppliedModel);\n };\n ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter, afterDataChange) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n if (afterDataChange === void 0) { afterDataChange = false; }\n if (this.applyModel()) {\n // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change\n // came from floating filter\n this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter, afterDataChange: afterDataChange });\n }\n var _a = this.providedFilterParams, closeOnApply = _a.closeOnApply, applyButton = _a.applyButton, resetButton = _a.resetButton;\n if (closeOnApply && !afterFloatingFilter && this.hidePopup && (applyButton || resetButton)) {\n this.hidePopup();\n this.hidePopup = null;\n }\n };\n ProvidedFilter.prototype.onNewRowsLoaded = function () {\n if (!this.newRowsActionKeep) {\n this.resetUiToDefaults();\n this.appliedModel = null;\n }\n };\n // called by set filter\n ProvidedFilter.prototype.isNewRowsActionKeep = function () {\n return this.newRowsActionKeep;\n };\n ProvidedFilter.prototype.onUiChanged = function (afterFloatingFilter) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n this.updateUiVisibility();\n this.providedFilterParams.filterModifiedCallback();\n if (afterFloatingFilter) {\n // floating filter changes are always applied immediately\n this.onBtApply(true);\n }\n else if (!this.applyActive) {\n // if no apply button, we apply (but debounce for time delay)\n this.onBtApplyDebounce();\n }\n };\n ProvidedFilter.prototype.afterGuiAttached = function (params) {\n this.hidePopup = params.hidePopup;\n };\n // static, as used by floating filter also\n ProvidedFilter.getDebounceMs = function (params, debounceDefault) {\n var applyActive = ProvidedFilter.isUseApplyButton(params);\n if (applyActive) {\n if (params.debounceMs != null) {\n console.warn('ag-Grid: debounceMs is ignored when applyButton = true');\n }\n return 0;\n }\n return params.debounceMs != null ? params.debounceMs : debounceDefault;\n };\n // static, as used by floating filter also\n ProvidedFilter.isUseApplyButton = function (params) {\n if (params.apply && !params.applyButton) {\n console.warn('ag-Grid: as of ag-Grid v21, filterParams.apply is now filterParams.applyButton, please change to applyButton');\n params.applyButton = true;\n }\n return params.applyButton === true;\n };\n ProvidedFilter.prototype.destroy = function () {\n this.hidePopup = null;\n _super.prototype.destroy.call(this);\n };\n ProvidedFilter.NEW_ROWS_ACTION_KEEP = 'keep';\n ProvidedFilter.NEW_ROWS_ACTION_CLEAR = 'clear';\n __decorate$b([\n RefSelector('eFilterBodyWrapper')\n ], ProvidedFilter.prototype, \"eFilterBodyWrapper\", void 0);\n __decorate$b([\n Autowired('gridOptionsWrapper')\n ], ProvidedFilter.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$b([\n Autowired('rowModel')\n ], ProvidedFilter.prototype, \"rowModel\", void 0);\n __decorate$b([\n PostConstruct\n ], ProvidedFilter.prototype, \"postConstruct\", null);\n return ProvidedFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$4 = (undefined && undefined.__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})();\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ConditionPosition;\n(function (ConditionPosition) {\n ConditionPosition[ConditionPosition[\"One\"] = 0] = \"One\";\n ConditionPosition[ConditionPosition[\"Two\"] = 1] = \"Two\";\n})(ConditionPosition || (ConditionPosition = {}));\nvar DEFAULT_TRANSLATIONS = {\n loadingOoo: 'Loading...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n filterOoo: 'Filter...',\n inRangeStart: 'From',\n inRangeEnd: 'To',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n searchOoo: 'Search...',\n selectAll: 'Select All',\n applyFilter: 'Apply Filter',\n clearFilter: 'Clear Filter',\n andCondition: 'AND',\n orCondition: 'OR'\n};\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values\n */\nvar SimpleFilter = /** @class */ (function (_super) {\n __extends$4(SimpleFilter, _super);\n function SimpleFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // returns true if this type requires a 'from' field, eg any filter that requires at least one text value\n SimpleFilter.prototype.showValueFrom = function (type) {\n return !this.doesFilterHaveHiddenInput(type) && type !== SimpleFilter.EMPTY;\n };\n // returns true if this type requires a 'to' field, currently only 'range' returns true\n SimpleFilter.prototype.showValueTo = function (type) {\n return type === SimpleFilter.IN_RANGE;\n };\n // floating filter calls this when user applies filter from floating filter\n SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {\n this.setTypeFromFloatingFilter(type);\n this.setValueFromFloatingFilter(value);\n this.onUiChanged(true);\n };\n SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {\n this.eType1.setValue(type);\n this.eType2.setValue(this.optionsFactory.getDefaultOption());\n this.eJoinOperatorAnd.setValue(true);\n };\n SimpleFilter.prototype.getModelFromUi = function () {\n if (!this.isConditionUiComplete(ConditionPosition.One)) {\n return null;\n }\n if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {\n return {\n filterType: this.getFilterType(),\n operator: this.getJoinOperator(),\n condition1: this.createCondition(ConditionPosition.One),\n condition2: this.createCondition(ConditionPosition.Two)\n };\n }\n return this.createCondition(ConditionPosition.One);\n };\n SimpleFilter.prototype.getCondition1Type = function () {\n return this.eType1.getValue();\n };\n SimpleFilter.prototype.getCondition2Type = function () {\n return this.eType2.getValue();\n };\n SimpleFilter.prototype.getJoinOperator = function () {\n return this.eJoinOperatorOr.getValue() === true ? 'OR' : 'AND';\n };\n SimpleFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (!a && !b) {\n return true;\n }\n // one is missing, other present\n if ((!a && b) || (a && !b)) {\n return false;\n }\n // one is combined, the other is not\n var aIsSimple = !a.operator;\n var bIsSimple = !b.operator;\n var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n if (oneSimpleOneCombined) {\n return false;\n }\n var res;\n // otherwise both present, so compare\n if (aIsSimple) {\n var aSimple = a;\n var bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n }\n else {\n var aCombined = a;\n var bCombined = b;\n res = aCombined.operator === bCombined.operator\n && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1)\n && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);\n }\n return res;\n };\n SimpleFilter.prototype.setModelIntoUi = function (model) {\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var orChecked = combinedModel.operator === 'OR';\n this.eJoinOperatorAnd.setValue(!orChecked);\n this.eJoinOperatorOr.setValue(orChecked);\n this.eType1.setValue(combinedModel.condition1.type);\n this.eType2.setValue(combinedModel.condition2.type);\n this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);\n this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);\n }\n else {\n var simpleModel = model;\n this.eJoinOperatorAnd.setValue(true);\n this.eJoinOperatorOr.setValue(false);\n this.eType1.setValue(simpleModel.type);\n this.eType2.setValue(this.optionsFactory.getDefaultOption());\n this.setConditionIntoUi(simpleModel, ConditionPosition.One);\n this.setConditionIntoUi(null, ConditionPosition.Two);\n }\n };\n SimpleFilter.prototype.doesFilterPass = function (params) {\n var model = this.getModel();\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var firstResult = this.individualConditionPasses(params, combinedModel.condition1);\n var secondResult = this.individualConditionPasses(params, combinedModel.condition2);\n if (combinedModel.operator === 'AND') {\n return firstResult && secondResult;\n }\n return firstResult || secondResult;\n }\n var simpleModel = model;\n var result = this.individualConditionPasses(params, simpleModel);\n return result;\n };\n SimpleFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.allowTwoConditions = !params.suppressAndOrCondition;\n this.putOptionsIntoDropdown();\n this.addChangedListeners();\n };\n SimpleFilter.prototype.putOptionsIntoDropdown = function () {\n var _this = this;\n var filterOptions = this.optionsFactory.getFilterOptions();\n filterOptions.forEach(function (option) {\n var createOption = function () {\n var key = (typeof option === 'string') ? option : option.displayKey;\n var localName = _this.translate(key);\n return {\n value: key,\n text: localName\n };\n };\n _this.eType1.addOption(createOption());\n _this.eType2.addOption(createOption());\n });\n var readOnly = filterOptions.length <= 1;\n this.eType1.setDisabled(readOnly);\n this.eType2.setDisabled(readOnly);\n };\n SimpleFilter.prototype.isAllowTwoConditions = function () {\n return this.allowTwoConditions;\n };\n SimpleFilter.prototype.createBodyTemplate = function () {\n return /* html */ \"\\n \\n \" + this.createValueTemplate(ConditionPosition.One) + \"\\n
\\n \\n \\n
\\n \\n \" + this.createValueTemplate(ConditionPosition.Two);\n };\n SimpleFilter.prototype.getCssIdentifier = function () {\n return 'simple-filter';\n };\n SimpleFilter.prototype.updateUiVisibility = function () {\n var firstConditionComplete = this.isConditionUiComplete(ConditionPosition.One);\n var showSecondFilter = this.allowTwoConditions && firstConditionComplete;\n _.setDisplayed(this.eCondition2Body, showSecondFilter);\n _.setDisplayed(this.eType2.getGui(), showSecondFilter);\n _.setDisplayed(this.eJoinOperatorPanel, showSecondFilter);\n };\n SimpleFilter.prototype.resetUiToDefaults = function (silent) {\n var uniqueGroupId = 'ag-simple-filter-and-or-' + this.getCompId();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultOption = this.optionsFactory.getDefaultOption();\n this.eType1.setValue(defaultOption, silent);\n this.eType2.setValue(defaultOption, silent);\n this.eJoinOperatorAnd\n .setValue(true, silent)\n .setName(uniqueGroupId)\n .setLabel(translate('andCondition', 'AND'));\n this.eJoinOperatorOr\n .setValue(false, silent)\n .setName(uniqueGroupId)\n .setLabel(translate('orCondition', 'OR'));\n };\n SimpleFilter.prototype.translate = function (toTranslate) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = DEFAULT_TRANSLATIONS[toTranslate];\n if (!defaultTranslation && this.optionsFactory.getCustomOption(toTranslate)) {\n defaultTranslation = this.optionsFactory.getCustomOption(toTranslate).displayName;\n }\n return translate(toTranslate, defaultTranslation);\n };\n SimpleFilter.prototype.addChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.eType1.onValueChange(listener);\n this.eType2.onValueChange(listener);\n this.eJoinOperatorOr.onValueChange(listener);\n this.eJoinOperatorAnd.onValueChange(listener);\n };\n SimpleFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n SimpleFilter.EMPTY = 'empty';\n SimpleFilter.EQUALS = 'equals';\n SimpleFilter.NOT_EQUAL = 'notEqual';\n SimpleFilter.LESS_THAN = 'lessThan';\n SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n SimpleFilter.GREATER_THAN = 'greaterThan';\n SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n SimpleFilter.IN_RANGE = 'inRange';\n SimpleFilter.CONTAINS = 'contains';\n SimpleFilter.NOT_CONTAINS = 'notContains';\n SimpleFilter.STARTS_WITH = 'startsWith';\n SimpleFilter.ENDS_WITH = 'endsWith';\n __decorate$c([\n RefSelector('eOptions1')\n ], SimpleFilter.prototype, \"eType1\", void 0);\n __decorate$c([\n RefSelector('eOptions2')\n ], SimpleFilter.prototype, \"eType2\", void 0);\n __decorate$c([\n RefSelector('eJoinOperatorAnd')\n ], SimpleFilter.prototype, \"eJoinOperatorAnd\", void 0);\n __decorate$c([\n RefSelector('eJoinOperatorOr')\n ], SimpleFilter.prototype, \"eJoinOperatorOr\", void 0);\n __decorate$c([\n RefSelector('eCondition2Body')\n ], SimpleFilter.prototype, \"eCondition2Body\", void 0);\n __decorate$c([\n RefSelector('eJoinOperatorPanel')\n ], SimpleFilter.prototype, \"eJoinOperatorPanel\", void 0);\n return SimpleFilter;\n}(ProvidedFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$5 = (undefined && undefined.__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})();\nvar ScalarFilter = /** @class */ (function (_super) {\n __extends$5(ScalarFilter, _super);\n function ScalarFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalarFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.scalarFilterParams = params;\n this.checkDeprecatedParams();\n };\n ScalarFilter.prototype.checkDeprecatedParams = function () {\n if (this.scalarFilterParams.nullComparator) {\n console.warn('ag-Grid: Since v21.0, the property filterParams.nullComparator is deprecated. ' +\n 'Please use filterParams.includeBlanksInEquals, filterParams.includeBlanksInLessThan and ' +\n 'filterParams.includeBlanksInGreaterThan instead.');\n this.scalarFilterParams.includeBlanksInEquals = this.scalarFilterParams.nullComparator.equals;\n this.scalarFilterParams.includeBlanksInLessThan = this.scalarFilterParams.nullComparator.lessThan;\n this.scalarFilterParams.includeBlanksInGreaterThan = this.scalarFilterParams.nullComparator.greaterThan;\n }\n };\n ScalarFilter.prototype.nullComparator = function (selectedOption, filterValue, gridValue) {\n if (gridValue == null) {\n switch (selectedOption) {\n case ScalarFilter.EMPTY:\n return 0;\n case ScalarFilter.EQUALS:\n return this.scalarFilterParams.includeBlanksInEquals ? 0 : 1;\n case ScalarFilter.NOT_EQUAL:\n return this.scalarFilterParams.includeBlanksInEquals ? 1 : 0;\n case ScalarFilter.GREATER_THAN:\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n return this.scalarFilterParams.includeBlanksInGreaterThan ? 1 : -1;\n case ScalarFilter.LESS_THAN:\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n return this.scalarFilterParams.includeBlanksInLessThan ? -1 : 1;\n }\n }\n return this.comparator()(filterValue, gridValue);\n };\n ScalarFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var cellValue = this.scalarFilterParams.valueGetter(params.node);\n var range = this.mapRangeFromModel(filterModel);\n var filterValue = range.from;\n var filterValueTo = range.to;\n var filterType = filterModel.type;\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterValue != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterValue, cellValue);\n }\n }\n var compareResult = this.nullComparator(filterType, filterValue, cellValue);\n switch (filterType) {\n case ScalarFilter.EQUALS:\n return compareResult === 0;\n case ScalarFilter.NOT_EQUAL:\n return compareResult !== 0;\n case ScalarFilter.GREATER_THAN:\n return compareResult > 0;\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n return compareResult >= 0;\n case ScalarFilter.LESS_THAN:\n return compareResult < 0;\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n return compareResult <= 0;\n case ScalarFilter.IN_RANGE: {\n var compareToResult = this.nullComparator(filterType, filterValueTo, cellValue);\n return this.scalarFilterParams.inRangeInclusive ?\n compareResult >= 0 && compareToResult <= 0 :\n compareResult > 0 && compareToResult < 0;\n }\n default:\n throw new Error('Unexpected type of filter: ' + filterType);\n }\n };\n return ScalarFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$6 = (undefined && undefined.__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})();\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DateFilter = /** @class */ (function (_super) {\n __extends$6(DateFilter, _super);\n function DateFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DateFilter.prototype.mapRangeFromModel = function (filterModel) {\n // unlike the other filters, we do two things here:\n // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'\n // are in different locations in Date and Number filter models)\n // 2) convert the type (because Date filter uses Dates, however model is 'string')\n //\n // NOTE: The conversion of string to date also removes the timezone - i.e. when user picks\n // a date from the UI, it will have timezone info in it. This is lost when creating\n // the model. When we recreate the date again here, it's without a timezone.\n return {\n from: parseDateTimeFromString(filterModel.dateFrom),\n to: parseDateTimeFromString(filterModel.dateTo)\n };\n };\n DateFilter.prototype.setValueFromFloatingFilter = function (value) {\n if (value != null) {\n var dateFrom = parseDateTimeFromString(value);\n this.dateCondition1FromComp.setDate(dateFrom);\n }\n else {\n this.dateCondition1FromComp.setDate(null);\n }\n this.dateCondition1ToComp.setDate(null);\n this.dateCondition2FromComp.setDate(null);\n this.dateCondition2ToComp.setDate(null);\n };\n DateFilter.prototype.setConditionIntoUi = function (model, position) {\n var _a = model ?\n [parseDateTimeFromString(model.dateFrom), parseDateTimeFromString(model.dateTo)] :\n [null, null], dateFrom = _a[0], dateTo = _a[1];\n var _b = this.getFromToComponents(position), compFrom = _b[0], compTo = _b[1];\n compFrom.setDate(dateFrom);\n compTo.setDate(dateTo);\n };\n DateFilter.prototype.resetUiToDefaults = function (silent) {\n _super.prototype.resetUiToDefaults.call(this, silent);\n this.dateCondition1FromComp.setDate(null);\n this.dateCondition1ToComp.setDate(null);\n this.dateCondition2FromComp.setDate(null);\n this.dateCondition2ToComp.setDate(null);\n };\n DateFilter.prototype.comparator = function () {\n return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n };\n DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n // The default comparator assumes that the cellValue is a date\n var cellAsDate = cellValue;\n if (cellValue == null || cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return 0;\n };\n DateFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.dateFilterParams = params;\n this.createDateComponents();\n };\n DateFilter.prototype.createDateComponents = function () {\n var _this = this;\n // params to pass to all four date comps\n var dateComponentParams = {\n onDateChanged: function () { return _this.onUiChanged(); },\n filterParams: this.dateFilterParams\n };\n this.dateCondition1FromComp = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.eCondition1PanelFrom);\n this.dateCondition1ToComp = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.eCondition1PanelTo);\n this.dateCondition2FromComp = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.eCondition2PanelFrom);\n this.dateCondition2ToComp = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.eCondition2PanelTo);\n this.addDestroyFunc(function () {\n _this.dateCondition1FromComp.destroy();\n _this.dateCondition1ToComp.destroy();\n _this.dateCondition2FromComp.destroy();\n _this.dateCondition2ToComp.destroy();\n });\n };\n DateFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n return /* html */ \"\\n
\\n
\\n
\\n
\\n
\\n
\";\n };\n DateFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n var _a = this.getFromToComponents(position), compFrom = _a[0], compTo = _a[1];\n return compFrom.getDate() != null && (option !== SimpleFilter.IN_RANGE || compTo.getDate() != null);\n };\n DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom\n && aSimple.dateTo === bSimple.dateTo\n && aSimple.type === bSimple.type;\n };\n // needed for creating filter model\n DateFilter.prototype.getFilterType = function () {\n return DateFilter.FILTER_TYPE;\n };\n DateFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var _a = this.getFromToComponents(position), compFrom = _a[0], compTo = _a[1];\n return {\n dateFrom: serialiseDate(compFrom.getDate()),\n dateTo: serialiseDate(compTo.getDate()),\n type: type,\n filterType: DateFilter.FILTER_TYPE\n };\n };\n DateFilter.prototype.resetPlaceholder = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var placeholder = translate('dateFormatOoo', 'yyyy-mm-dd');\n this.dateCondition1FromComp.setInputPlaceholder(placeholder);\n this.dateCondition1ToComp.setInputPlaceholder(placeholder);\n this.dateCondition2FromComp.setInputPlaceholder(placeholder);\n this.dateCondition2ToComp.setInputPlaceholder(placeholder);\n };\n DateFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n this.resetPlaceholder();\n var condition1Type = this.getCondition1Type();\n setDisplayed(this.eCondition1PanelFrom, this.showValueFrom(condition1Type));\n setDisplayed(this.eCondition1PanelTo, this.showValueTo(condition1Type));\n var condition2Type = this.getCondition2Type();\n setDisplayed(this.eCondition2PanelFrom, this.showValueFrom(condition2Type));\n setDisplayed(this.eCondition2PanelTo, this.showValueTo(condition2Type));\n };\n DateFilter.prototype.getFromToComponents = function (position) {\n return position === ConditionPosition.One ?\n [this.dateCondition1FromComp, this.dateCondition1ToComp] :\n [this.dateCondition2FromComp, this.dateCondition2ToComp];\n };\n DateFilter.FILTER_TYPE = 'date';\n DateFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.LESS_THAN,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.IN_RANGE\n ];\n __decorate$d([\n RefSelector('eCondition1PanelFrom')\n ], DateFilter.prototype, \"eCondition1PanelFrom\", void 0);\n __decorate$d([\n RefSelector('eCondition1PanelTo')\n ], DateFilter.prototype, \"eCondition1PanelTo\", void 0);\n __decorate$d([\n RefSelector('eCondition2PanelFrom')\n ], DateFilter.prototype, \"eCondition2PanelFrom\", void 0);\n __decorate$d([\n RefSelector('eCondition2PanelTo')\n ], DateFilter.prototype, \"eCondition2PanelTo\", void 0);\n __decorate$d([\n Autowired('userComponentFactory')\n ], DateFilter.prototype, \"userComponentFactory\", void 0);\n return DateFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar TouchListener = /** @class */ (function () {\n function TouchListener(eElement, preventMouseClick) {\n var _this = this;\n if (preventMouseClick === void 0) { preventMouseClick = false; }\n this.destroyFuncs = [];\n this.touching = false;\n this.eventService = new EventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n var startListener = this.onTouchStart.bind(this);\n var moveListener = this.onTouchMove.bind(this);\n var endListener = this.onTouchEnd.bind(this);\n this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n // we set passive=false, as we want to prevent default on this event\n this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(function () {\n _this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n _this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n _this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n TouchListener.prototype.getActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n var matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n };\n TouchListener.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n TouchListener.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n TouchListener.prototype.onTouchStart = function (touchEvent) {\n var _this = this;\n // only looking at one touch point at any time\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n var touchStartCopy = this.touchStart;\n window.setTimeout(function () {\n var touchesMatch = _this.touchStart === touchStartCopy;\n if (_this.touching && touchesMatch && !_this.moved) {\n _this.moved = true;\n var event_1 = {\n type: TouchListener.EVENT_LONG_TAP,\n touchStart: _this.touchStart,\n touchEvent: touchEvent\n };\n _this.eventService.dispatchEvent(event_1);\n }\n }, 500);\n };\n TouchListener.prototype.onTouchMove = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n var touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n var eventIsFarAway = !_.areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n };\n TouchListener.prototype.onTouchEnd = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n var event_2 = {\n type: TouchListener.EVENT_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_2);\n this.checkForDoubleTap();\n }\n // stops the tap from also been processed as a mouse click\n if (this.preventMouseClick) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n };\n TouchListener.prototype.checkForDoubleTap = function () {\n var now = new Date().getTime();\n if (this.lastTapTime && this.lastTapTime > 0) {\n // if previous tap, see if duration is short enough to be considered double tap\n var interval = now - this.lastTapTime;\n if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n // dispatch double tap event\n var event_3 = {\n type: TouchListener.EVENT_DOUBLE_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_3);\n // this stops a tripple tap ending up as two double taps\n this.lastTapTime = null;\n }\n else {\n this.lastTapTime = now;\n }\n }\n else {\n this.lastTapTime = now;\n }\n };\n TouchListener.prototype.destroy = function () {\n this.destroyFuncs.forEach(function (func) { return func(); });\n };\n TouchListener.EVENT_TAP = \"tap\";\n TouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\n TouchListener.EVENT_LONG_TAP = \"longTap\";\n TouchListener.DOUBLE_TAP_MILLIS = 500;\n return TouchListener;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$7 = (undefined && undefined.__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})();\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderComp = /** @class */ (function (_super) {\n __extends$7(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n HeaderComp.prototype.init = function (params) {\n var template = _.firstExistingValue(params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n this.setTemplate(template);\n this.params = params;\n this.setupTap();\n this.setupIcons(params.column);\n this.setupMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setupText(params.displayName);\n };\n HeaderComp.prototype.setupText = function (displayName) {\n var displayNameSanitised = _.escape(displayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var options = this.gridOptionsWrapper;\n if (options.isSuppressTouch()) {\n return;\n }\n var touchListener = new TouchListener(this.getGui(), true);\n var suppressMenuHide = options.isSuppressMenuHide();\n var tapMenuButton = suppressMenuHide && _.exists(this.eMenu);\n var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addDestroyableEventListener(menuTouchListener, TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_TAP, tapListener);\n }\n // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n // so we need to make sure to destroy both listeners here\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (tapMenuButton) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.setupMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device\n // Note: If suppressMenuHide is set to true the menu will be displayed, and if suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();\n var hideShowMenu = !this.params.enableMenu || (_.isIOSUserAgent() && !suppressMenuHide);\n if (hideShowMenu) {\n _.removeFromParent(this.eMenu);\n return;\n }\n this.addDestroyableEventListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n if (!suppressMenuHide) {\n this.eMenu.style.opacity = '0';\n }\n var style = this.eMenu.style;\n style.transition = 'opacity 0.2s, border 0.2s';\n style['-webkit-transition'] = 'opacity 0.2s, border 0.2s';\n };\n HeaderComp.prototype.setMouseOverParent = function (overParent) {\n if (!this.gridOptionsWrapper.isSuppressMenuHide()) {\n this.eMenu.style.opacity = overParent ? '1' : '0';\n }\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource);\n };\n HeaderComp.prototype.removeSortIcons = function () {\n _.removeFromParent(this.eSortAsc);\n _.removeFromParent(this.eSortDesc);\n _.removeFromParent(this.eSortNone);\n _.removeFromParent(this.eSortOrder);\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n var enableSorting = this.params.enableSorting;\n if (!enableSorting) {\n this.removeSortIcons();\n return;\n }\n var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();\n // keep track of last time the moving changed flag was set\n this.addDestroyableEventListener(this.params.column, Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addDestroyableEventListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n this.addDestroyableEventListener(this.params.column, Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.onSortChanged();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n this.setMultiSortOrder();\n };\n HeaderComp.prototype.onSortChanged = function () {\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());\n if (this.eSortAsc) {\n _.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());\n }\n if (this.eSortDesc) {\n _.addOrRemoveCssClass(this.eSortDesc, 'ag-hidden', !this.params.column.isSortDescending());\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n _.addOrRemoveCssClass(this.eSortNone, 'ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n HeaderComp.prototype.setMultiSortOrder = function () {\n if (!this.eSortOrder) {\n return;\n }\n var col = this.params.column;\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = allColumnsWithSorting.indexOf(col);\n var moreThanOneColSorting = allColumnsWithSorting.length > 1;\n var showIndex = col.isSorting() && moreThanOneColSorting;\n _.setDisplayed(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n _.clearElement(this.eSortOrder);\n }\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addDestroyableEventListener(this.params.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n _.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = '
' +\n ' ' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
';\n __decorate$e([\n Autowired('gridOptionsWrapper')\n ], HeaderComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$e([\n Autowired('sortController')\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate$e([\n Autowired('menuFactory')\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate$e([\n Autowired('eventService')\n ], HeaderComp.prototype, \"eventService\", void 0);\n __decorate$e([\n RefSelector('eFilter')\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate$e([\n RefSelector('eSortAsc')\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate$e([\n RefSelector('eSortDesc')\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate$e([\n RefSelector('eSortNone')\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n __decorate$e([\n RefSelector('eSortOrder')\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate$e([\n RefSelector('eMenu')\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate$e([\n RefSelector('eLabel')\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate$e([\n RefSelector('eText')\n ], HeaderComp.prototype, \"eText\", void 0);\n return HeaderComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$8 = (undefined && undefined.__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})();\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupComp = /** @class */ (function (_super) {\n __extends$8(HeaderGroupComp, _super);\n function HeaderGroupComp() {\n return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n }\n HeaderGroupComp.prototype.init = function (params) {\n this.params = params;\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n };\n HeaderGroupComp.prototype.setupExpandIcons = function () {\n var _this = this;\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n var expandAction = function (event) {\n if (_.isStopPropagationForAgGrid(event)) {\n return;\n }\n var newExpandedValue = !_this.params.columnGroup.isExpanded();\n _this.columnController.setColumnGroupOpened(_this.params.columnGroup.getOriginalColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n };\n this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n var stopPropagationAction = function (event) {\n _.stopPropagationForAgGrid(event);\n };\n // adding stopPropagation to the double click for the icons prevents double click action happening\n // when the icons are clicked. if the icons are double clicked, then the groups should open and\n // then close again straight away. if we also listened to double click, then the group would open,\n // close, then open, which is not what we want. double click should only action if the user double\n // clicks outside of the icons.\n this.addDestroyableEventListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n this.addDestroyableEventListener(this.getGui(), \"dblclick\", expandAction);\n this.updateIconVisibility();\n var originalColumnGroup = this.params.columnGroup.getOriginalColumnGroup();\n this.addDestroyableEventListener(originalColumnGroup, OriginalColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n this.addDestroyableEventListener(originalColumnGroup, OriginalColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n };\n HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n var touchListener = new TouchListener(eElement);\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n this.addDestroyableEventListener(eElement, \"click\", action);\n };\n HeaderGroupComp.prototype.updateIconVisibility = function () {\n var columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n var expanded = this.params.columnGroup.isExpanded();\n _.setDisplayed(this.eOpenIcon, expanded);\n _.setDisplayed(this.eCloseIcon, !expanded);\n }\n else {\n _.setDisplayed(this.eOpenIcon, false);\n _.setDisplayed(this.eCloseIcon, false);\n }\n };\n HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, null);\n this.getRefElement(refName).appendChild(eIcon);\n };\n HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n if (!this.params.columnGroup.isExpandable()) {\n _.setDisplayed(this.eOpenIcon, false);\n _.setDisplayed(this.eCloseIcon, false);\n return;\n }\n };\n HeaderGroupComp.prototype.setupLabel = function () {\n // no renderer, default text render\n var displayName = this.params.displayName;\n if (_.exists(displayName)) {\n var displayNameSanitised = _.escape(displayName);\n this.getRefElement(\"agLabel\").innerHTML = displayNameSanitised;\n }\n };\n HeaderGroupComp.TEMPLATE = \"
\" +\n \"\" +\n \"\" +\n \"\" +\n \"
\";\n __decorate$f([\n Autowired(\"columnController\")\n ], HeaderGroupComp.prototype, \"columnController\", void 0);\n __decorate$f([\n Autowired(\"gridOptionsWrapper\")\n ], HeaderGroupComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$f([\n RefSelector(\"agOpened\")\n ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n __decorate$f([\n RefSelector(\"agClosed\")\n ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n return HeaderGroupComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowNode = /** @class */ (function () {\n function RowNode() {\n /** Children mapped by the pivot columns */\n this.childrenMapped = {};\n /** True by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** True when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.highlighted = null;\n this.selected = false;\n }\n RowNode.prototype.setData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.updateDataOnDetailNode();\n var event = this.createDataChangedEvent(data, oldData, true);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n else if (this.rowPinned === Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n return this.rowIndex.toString();\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode();\n this.context.wireBean(oldNode);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = _.exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.selectionController.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var shouldInvokeIsRowSelectable = isRowSelectableFunc && _.exists(this);\n this.setRowSelectable(shouldInvokeIsRowSelectable ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowNodeId = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (getRowNodeId) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n this.id = getRowNodeId(this.data);\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.clearRowTop = function () {\n this.oldRowTop = this.rowTop;\n this.setRowTop(null);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setHighlighted = function (highlighted) {\n if (highlighted === this.highlighted) {\n return;\n }\n this.highlighted = highlighted;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HIGHLIGHT_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n RowNode.prototype.setExpanded = function (expanded) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED);\n this.mainEventService.dispatchEvent(event);\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.gridApi.redrawRows({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n return {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n // we also allow editing the value via the editors. when it is done via\n // the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n RowNode.prototype.setDataValue = function (colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n var oldValue = this.valueService.getValue(column, this);\n this.valueService.setValue(this, column, newValue);\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.columnController.getGridColumn(colKey);\n if (_.missing(this.groupData)) {\n this.groupData = {};\n }\n var columnId = column.getColId();\n var oldValue = this.groupData[columnId];\n if (oldValue === newValue) {\n return;\n }\n this.groupData[columnId] = newValue;\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = _.getAllKeysInObjects([this.aggData, newAggData]);\n var oldAggData = this.aggData;\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.columnController.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n var oldValue = oldAggData ? oldAggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value, oldValue);\n });\n }\n };\n RowNode.prototype.hasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n return this.group || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n };\n RowNode.prototype.isEmptyRowGroupNode = function () {\n return this.group && _.missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue, oldValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue,\n oldValue: oldValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return this.hasChildren() || this.master;\n };\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + rowController.updateGroupsInSelection()\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n var newSelectedValue;\n if (this.childrenAfterGroup) {\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n // skip non-selectable nodes to prevent inconsistent selection values\n if (!child.selectable) {\n continue;\n }\n var childState = child.isSelected();\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n }\n if (atLeastOneMixed) {\n newSelectedValue = undefined;\n }\n else if (atLeastOneSelected && !atLeastOneDeSelected) {\n newSelectedValue = true;\n }\n else if (!atLeastOneSelected && atLeastOneDeSelected) {\n newSelectedValue = false;\n }\n else {\n newSelectedValue = undefined;\n }\n this.selectThisNode(newSelectedValue);\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === Constants.PINNED_TOP || this.rowPinned === Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('ag-Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.warn('ag-Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n var count = this.sibling.setSelectedParams(params);\n return count;\n }\n if (rangeSelect) {\n var newRowClicked = this.selectionController.getLastSelectedNode() !== this;\n var allowMultiSelect = this.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n return this.doRowRangeSelection();\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && this.group) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.selectionController.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.selectionController.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.selectionController.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function () {\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.selectionController.getLastSelectedNode();\n var nodesToSelect = this.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n var updatedCount = 0;\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(true);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.selectionController.updateGroupsFromChildrenSelections();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue) {\n if (!this.selectable || this.selected === newValue) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED);\n this.mainEventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n if (_.missing(children)) {\n return;\n }\n var updatedCount = 0;\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = _.exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.prototype.isFullWidthCell = function () {\n var isFullWidthCellFunc = this.gridOptionsWrapper.getIsFullWidthCellFunc();\n return isFullWidthCellFunc ? isFullWidthCellFunc(this) : false;\n };\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n __decorate$g([\n Autowired('eventService')\n ], RowNode.prototype, \"mainEventService\", void 0);\n __decorate$g([\n Autowired('gridOptionsWrapper')\n ], RowNode.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$g([\n Autowired('selectionController')\n ], RowNode.prototype, \"selectionController\", void 0);\n __decorate$g([\n Autowired('columnController')\n ], RowNode.prototype, \"columnController\", void 0);\n __decorate$g([\n Autowired('valueService')\n ], RowNode.prototype, \"valueService\", void 0);\n __decorate$g([\n Autowired('rowModel')\n ], RowNode.prototype, \"rowModel\", void 0);\n __decorate$g([\n Autowired('context')\n ], RowNode.prototype, \"context\", void 0);\n __decorate$g([\n Autowired('valueCache')\n ], RowNode.prototype, \"valueCache\", void 0);\n __decorate$g([\n Autowired('columnApi')\n ], RowNode.prototype, \"columnApi\", void 0);\n __decorate$g([\n Autowired('gridApi')\n ], RowNode.prototype, \"gridApi\", void 0);\n return RowNode;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$9 = (undefined && undefined.__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})();\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractLabel = /** @class */ (function (_super) {\n __extends$9(AgAbstractLabel, _super);\n function AgAbstractLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.labelSeparator = '';\n _this.labelAlignment = 'left';\n _this.config = {};\n _this.label = '';\n return _this;\n }\n AgAbstractLabel.prototype.postConstruct = function () {\n _.addCssClass(this.getGui(), 'ag-labeled');\n _.addCssClass(this.eLabel, 'ag-label');\n var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;\n if (labelSeparator != null) {\n this.setLabelSeparator(labelSeparator);\n }\n if (label != null) {\n this.setLabel(label);\n }\n if (labelWidth != null) {\n this.setLabelWidth(labelWidth);\n }\n this.setLabelAlignment(labelAlignment || this.labelAlignment);\n this.refreshLabel();\n };\n AgAbstractLabel.prototype.refreshLabel = function () {\n this.eLabel.innerText = this.label + this.labelSeparator;\n _.addOrRemoveCssClass(this.eLabel, 'ag-hidden', this.label === '');\n };\n AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {\n if (this.labelSeparator === labelSeparator) {\n return this;\n }\n this.labelSeparator = labelSeparator;\n if (this.label != null) {\n this.refreshLabel();\n }\n return this;\n };\n AgAbstractLabel.prototype.setLabel = function (label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n };\n AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {\n var eGui = this.getGui();\n _.addOrRemoveCssClass(eGui, 'ag-label-align-left', alignment === 'left');\n _.addOrRemoveCssClass(eGui, 'ag-label-align-right', alignment === 'right');\n _.addOrRemoveCssClass(eGui, 'ag-label-align-top', alignment === 'top');\n return this;\n };\n AgAbstractLabel.prototype.setLabelWidth = function (width) {\n if (this.label == null) {\n return this;\n }\n _.setElementWidth(this.eLabel, width);\n return this;\n };\n __decorate$h([\n PostConstruct\n ], AgAbstractLabel.prototype, \"postConstruct\", null);\n return AgAbstractLabel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$a = (undefined && undefined.__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})();\nvar AgAbstractField = /** @class */ (function (_super) {\n __extends$a(AgAbstractField, _super);\n function AgAbstractField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.disabled = false;\n return _this;\n }\n AgAbstractField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n _.addCssClass(this.getGui(), this.className);\n };\n AgAbstractField.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addDestroyableEventListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.getValue());\n });\n return this;\n };\n AgAbstractField.prototype.getWidth = function () {\n return this.getGui().clientWidth;\n };\n AgAbstractField.prototype.setWidth = function (width) {\n _.setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAbstractField.prototype.getValue = function () {\n return this.value;\n };\n AgAbstractField.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n return this;\n }\n this.value = value;\n if (!silent) {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAbstractField.prototype.setDisabled = function (disabled) {\n disabled = !!disabled;\n var eGui = this.getGui();\n if (disabled) {\n eGui.setAttribute('disabled', 'true');\n }\n _.addOrRemoveCssClass(eGui, 'ag-disabled', disabled);\n this.disabled = disabled;\n return this;\n };\n AgAbstractField.prototype.isDisabled = function () {\n return !!this.disabled;\n };\n AgAbstractField.EVENT_CHANGED = 'valueChange';\n return AgAbstractField;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$b = (undefined && undefined.__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})();\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractInputField = /** @class */ (function (_super) {\n __extends$b(AgAbstractInputField, _super);\n function AgAbstractInputField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.config = {};\n _this.TEMPLATE = \"\\n
\\n \\n
\\n <%displayField% ref=\\\"eInput\\\" class=\\\"ag-input-field-input\\\">\\n
\\n
\";\n return _this;\n }\n AgAbstractInputField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.setInputType();\n _.addCssClass(this.eLabel, this.className + \"-label\");\n _.addCssClass(this.eWrapper, this.className + \"-input-wrapper\");\n _.addCssClass(this.eInput, this.className + \"-input\");\n _.addCssClass(this.getGui(), 'ag-input-field');\n var inputId = this.eInput.id ? this.eInput.id : \"ag-input-id-\" + this.getCompId();\n this.eLabel.htmlFor = inputId;\n this.eInput.id = inputId;\n var _a = this.config, width = _a.width, value = _a.value;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n this.addInputListeners();\n };\n AgAbstractInputField.prototype.addInputListeners = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eInput, 'input', function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgAbstractInputField.prototype.setInputType = function () {\n if (this.inputType) {\n this.eInput.setAttribute('type', this.inputType);\n }\n };\n AgAbstractInputField.prototype.getInputElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setInputWidth = function (width) {\n _.setElementWidth(this.eWrapper, width);\n return this;\n };\n AgAbstractInputField.prototype.setInputName = function (name) {\n this.getInputElement().setAttribute('name', name);\n return this;\n };\n AgAbstractInputField.prototype.getFocusableElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setMaxLength = function (length) {\n var eInput = this.eInput;\n eInput.maxLength = length;\n return this;\n };\n AgAbstractInputField.prototype.setInputPlaceholder = function (placeholder) {\n var eInput = this.eInput;\n if (placeholder) {\n eInput.setAttribute('placeholder', placeholder);\n }\n else {\n eInput.removeAttribute('placeholder');\n }\n return this;\n };\n AgAbstractInputField.prototype.setDisabled = function (disabled) {\n if (disabled) {\n this.eInput.setAttribute('disabled', 'true');\n }\n else {\n this.eInput.removeAttribute('disabled');\n }\n return _super.prototype.setDisabled.call(this, disabled);\n };\n __decorate$i([\n RefSelector('eLabel')\n ], AgAbstractInputField.prototype, \"eLabel\", void 0);\n __decorate$i([\n RefSelector('eWrapper')\n ], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n __decorate$i([\n RefSelector('eInput')\n ], AgAbstractInputField.prototype, \"eInput\", void 0);\n return AgAbstractInputField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$c = (undefined && undefined.__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})();\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends$c(AgCheckbox, _super);\n function AgCheckbox() {\n var _this = _super.call(this) || this;\n _this.className = 'ag-checkbox';\n _this.displayTag = 'input';\n _this.inputType = 'checkbox';\n _this.labelAlignment = 'right';\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n return _this;\n }\n AgCheckbox.prototype.addInputListeners = function () {\n this.addDestroyableEventListener(this.eInput, 'click', this.onCheckboxClick.bind(this));\n };\n AgCheckbox.prototype.getNextValue = function () {\n return this.selected === undefined ? true : !this.selected;\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n _.addOrRemoveCssClass(this.eWrapper, 'ag-disabled', readOnly);\n this.eInput.disabled = readOnly;\n this.readOnly = readOnly;\n };\n AgCheckbox.prototype.setDisabled = function (disabled) {\n _.addOrRemoveCssClass(this.eWrapper, 'ag-disabled', disabled);\n return _super.prototype.setDisabled.call(this, disabled);\n };\n AgCheckbox.prototype.toggle = function () {\n var nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue);\n }\n else {\n this.setValue(nextValue);\n }\n };\n AgCheckbox.prototype.getValue = function () {\n return this.isSelected();\n };\n AgCheckbox.prototype.setValue = function (value, silent) {\n this.refreshSelectedClass(value);\n this.setSelected(value, silent);\n return this;\n };\n AgCheckbox.prototype.setName = function (name) {\n var input = this.getInputElement();\n input.name = name;\n return this;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.setSelected = function (selected, silent) {\n if (this.isSelected() === selected) {\n return;\n }\n this.selected = typeof selected === 'boolean' ? selected : undefined;\n this.eInput.checked = this.selected;\n this.eInput.indeterminate = this.selected === undefined;\n if (!silent) {\n this.dispatchChange(this.selected);\n }\n };\n AgCheckbox.prototype.dispatchChange = function (selected, event) {\n this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected, event: event });\n var input = this.getInputElement();\n var checkboxChangedEvent = {\n type: Events.EVENT_CHECKBOX_CHANGED,\n id: input.id,\n name: input.name,\n selected: selected\n };\n this.eventService.dispatchEvent(checkboxChangedEvent);\n };\n AgCheckbox.prototype.onCheckboxClick = function (e) {\n this.selected = e.target.checked;\n this.refreshSelectedClass(this.selected);\n this.dispatchChange(this.selected, e);\n };\n AgCheckbox.prototype.refreshSelectedClass = function (value) {\n _.addOrRemoveCssClass(this.eWrapper, 'ag-checked', value === true);\n _.addOrRemoveCssClass(this.eWrapper, 'ag-indeterminate', value == null);\n };\n __decorate$j([\n Autowired('gridOptionsWrapper')\n ], AgCheckbox.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$j([\n Autowired('eventService')\n ], AgCheckbox.prototype, \"eventService\", void 0);\n return AgCheckbox;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$d = (undefined && undefined.__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})();\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CheckboxSelectionComponent = /** @class */ (function (_super) {\n __extends$d(CheckboxSelectionComponent, _super);\n function CheckboxSelectionComponent() {\n return _super.call(this, \"
\") || this;\n }\n CheckboxSelectionComponent.prototype.onDataChanged = function () {\n // when rows are loaded for the second time, this can impact the selection, as a row\n // could be loaded as already selected (if user scrolls down, and then up again).\n this.onSelectionChanged();\n };\n CheckboxSelectionComponent.prototype.onSelectableChanged = function () {\n this.showOrHideSelect();\n };\n CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n var state = this.rowNode.isSelected();\n this.eCheckbox.setValue(state, true);\n };\n CheckboxSelectionComponent.prototype.onCheckedClicked = function () {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: false, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.init = function (params) {\n var _this = this;\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.onSelectionChanged();\n // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n // would possibly get selected twice\n this.addGuiEventListener('click', function (event) { return _.stopPropagationForAgGrid(event); });\n // likewise we don't want double click on this icon to open a group\n this.addGuiEventListener('dblclick', function (event) { return _.stopPropagationForAgGrid(event); });\n this.addDestroyableEventListener(this.eCheckbox, AgCheckbox.EVENT_CHANGED, function (params) {\n if (params.selected) {\n _this.onUncheckedClicked(params.event || {});\n }\n else {\n _this.onCheckedClicked();\n }\n });\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));\n this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var checkboxVisibleIsDynamic = this.isRowSelectableFunc || this.checkboxCallbackExists();\n if (checkboxVisibleIsDynamic) {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelect.bind(this));\n this.showOrHideSelect();\n }\n };\n CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n // if the isRowSelectable() is not provided the row node is selectable by default\n var selectable = this.rowNode.selectable;\n // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.\n // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need\n // to call the colDef callback.\n if (selectable && this.checkboxCallbackExists()) {\n selectable = this.column.isCellCheckboxSelection(this.rowNode);\n }\n // show checkbox if both conditions are true\n this.setDisplayed(selectable);\n };\n CheckboxSelectionComponent.prototype.checkboxCallbackExists = function () {\n // column will be missing if groupUseEntireRow=true\n var colDef = this.column ? this.column.getColDef() : null;\n return colDef && typeof colDef.checkboxSelection === 'function';\n };\n __decorate$k([\n Autowired('gridOptionsWrapper')\n ], CheckboxSelectionComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$k([\n Autowired('eventService')\n ], CheckboxSelectionComponent.prototype, \"eventService\", void 0);\n __decorate$k([\n RefSelector('eCheckbox')\n ], CheckboxSelectionComponent.prototype, \"eCheckbox\", void 0);\n return CheckboxSelectionComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar DateComponent = {\n propertyName: 'dateComponent',\n isCellRenderer: function () { return false; }\n};\nvar HeaderComponent = {\n propertyName: 'headerComponent',\n isCellRenderer: function () { return false; },\n};\nvar HeaderGroupComponent = {\n propertyName: 'headerGroupComponent',\n isCellRenderer: function () { return false; },\n};\nvar GroupRowInnerRendererComponent = {\n propertyName: 'groupRowInnerRenderer',\n isCellRenderer: function () { return true; },\n};\nvar CellRendererComponent = {\n propertyName: 'cellRenderer',\n isCellRenderer: function () { return true; },\n};\nvar PinnedRowCellRendererComponent = {\n propertyName: 'pinnedRowCellRenderer',\n isCellRenderer: function () { return true; },\n};\nvar CellEditorComponent = {\n propertyName: 'cellEditor',\n isCellRenderer: function () { return false; },\n};\nvar InnerRendererComponent = {\n propertyName: 'innerRenderer',\n isCellRenderer: function () { return true; },\n};\nvar LoadingOverlayComponent = {\n propertyName: 'loadingOverlayComponent',\n isCellRenderer: function () { return false; },\n};\nvar NoRowsOverlayComponent = {\n propertyName: 'noRowsOverlayComponent',\n isCellRenderer: function () { return false; },\n};\nvar TooltipComponent = {\n propertyName: 'tooltipComponent',\n isCellRenderer: function () { return false; },\n};\nvar FilterComponent = {\n propertyName: 'filter',\n isCellRenderer: function () { return false; },\n};\nvar FloatingFilterComponent = {\n propertyName: 'floatingFilterComponent',\n isCellRenderer: function () { return false; },\n};\nvar ToolPanelComponent = {\n propertyName: 'toolPanel',\n isCellRenderer: function () { return false; },\n};\nvar StatusPanelComponent = {\n propertyName: 'statusPanel',\n isCellRenderer: function () { return false; },\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ComponentSource;\n(function (ComponentSource) {\n ComponentSource[ComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n ComponentSource[ComponentSource[\"REGISTERED_BY_NAME\"] = 1] = \"REGISTERED_BY_NAME\";\n ComponentSource[ComponentSource[\"HARDCODED\"] = 2] = \"HARDCODED\";\n})(ComponentSource || (ComponentSource = {}));\nvar UserComponentFactory = /** @class */ (function () {\n function UserComponentFactory() {\n }\n UserComponentFactory.prototype.newDateComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, DateComponent, 'agDateInput');\n };\n UserComponentFactory.prototype.newHeaderComponent = function (params) {\n return this.createAndInitUserComponent(params.column.getColDef(), params, HeaderComponent, 'agColumnHeader');\n };\n UserComponentFactory.prototype.newHeaderGroupComponent = function (params) {\n return this.createAndInitUserComponent(params.columnGroup.getColGroupDef(), params, HeaderGroupComponent, 'agColumnGroupHeader');\n };\n UserComponentFactory.prototype.newFullWidthGroupRowInnerCellRenderer = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, GroupRowInnerRendererComponent, null, true);\n };\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n UserComponentFactory.prototype.newFullWidthCellRenderer = function (params, cellRendererType, cellRendererName) {\n return this.createAndInitUserComponent(null, params, {\n propertyName: cellRendererType,\n isCellRenderer: function () { return true; }\n }, cellRendererName);\n };\n UserComponentFactory.prototype.newCellRenderer = function (target, params, isPinned) {\n if (isPinned === void 0) { isPinned = false; }\n return this.createAndInitUserComponent(target, params, isPinned ? PinnedRowCellRendererComponent : CellRendererComponent, null, true);\n };\n UserComponentFactory.prototype.newCellEditor = function (colDef, params) {\n return this.createAndInitUserComponent(colDef, params, CellEditorComponent, 'agCellEditor');\n };\n UserComponentFactory.prototype.newInnerCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, InnerRendererComponent, null);\n };\n UserComponentFactory.prototype.newLoadingOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, LoadingOverlayComponent, 'agLoadingOverlay');\n };\n UserComponentFactory.prototype.newNoRowsOverlayComponent = function (params) {\n return this.createAndInitUserComponent(this.gridOptions, params, NoRowsOverlayComponent, 'agNoRowsOverlay');\n };\n UserComponentFactory.prototype.newTooltipComponent = function (params) {\n return this.createAndInitUserComponent(params.colDef, params, TooltipComponent, 'agTooltipComponent');\n };\n UserComponentFactory.prototype.newFilterComponent = function (colDef, params, defaultFilter, modifyParamsCallback) {\n return this.createAndInitUserComponent(colDef, params, FilterComponent, defaultFilter, false, modifyParamsCallback);\n };\n UserComponentFactory.prototype.newSetFilterCellRenderer = function (target, params) {\n return this.createAndInitUserComponent(target, params, CellRendererComponent, null, true);\n };\n UserComponentFactory.prototype.newFloatingFilterComponent = function (colDef, params, defaultFloatingFilter) {\n return this.createAndInitUserComponent(colDef, params, FloatingFilterComponent, defaultFloatingFilter, true);\n };\n UserComponentFactory.prototype.newToolPanelComponent = function (toolPanelDef, params) {\n return this.createAndInitUserComponent(toolPanelDef, params, ToolPanelComponent);\n };\n UserComponentFactory.prototype.newStatusPanelComponent = function (def, params) {\n return this.createAndInitUserComponent(def, params, StatusPanelComponent);\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param defaultComponentName: The actual name of the component to instantiate, this is usually the same as propertyName, but in\n * some cases is not, like floatingFilter, if it is the same is not necessary to specify\n * @param optional: Handy method to tell if this should return a component ALWAYS. if that is the case, but there is no\n * component found, it throws an error, by default all components are MANDATORY\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createAndInitUserComponent = function (definitionObject, paramsFromGrid, componentType, defaultComponentName, \n // optional items are: FloatingFilter, CellComp (for cellRenderer)\n optional, \n // used by FilterManager only\n modifyParamsCallback) {\n if (optional === void 0) { optional = false; }\n if (!definitionObject) {\n definitionObject = this.gridOptions;\n }\n // Create the component instance\n var componentAndParams = this.createComponentInstance(definitionObject, componentType, paramsFromGrid, defaultComponentName, optional);\n if (!componentAndParams) {\n return null;\n }\n var componentInstance = componentAndParams.componentInstance;\n // Wire the component and call the init method with the correct params\n var params = this.createFinalParams(definitionObject, componentType.propertyName, paramsFromGrid, componentAndParams.paramsFromSelector);\n this.addReactHacks(params);\n // give caller chance to set any params that depend on the componentInstance (need here as the\n // componentInstance was not available when createUserComponent was called)\n var paramsAfterCallback = modifyParamsCallback ? modifyParamsCallback(params, componentInstance) : params;\n var deferredInit = this.initComponent(componentInstance, paramsAfterCallback);\n if (deferredInit == null) {\n // const p = new Promise(resolve => {\n // setTimeout( ()=> {\n // resolve(componentInstance);\n // }, 1000);\n // });\n // return p;\n return Promise.resolve(componentInstance);\n }\n else {\n var asPromise = deferredInit;\n return asPromise.map(function (_) { return componentInstance; });\n }\n };\n UserComponentFactory.prototype.addReactHacks = function (params) {\n // a temporary fix for AG-1574\n // AG-1715 raised to do a wider ranging refactor to improve this\n var agGridReact = this.context.getBean('agGridReact');\n if (agGridReact) {\n params.agGridReact = _.cloneObject(agGridReact);\n }\n // AG-1716 - directly related to AG-1574 and AG-1715\n var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n if (frameworkComponentWrapper) {\n params.frameworkComponentWrapper = frameworkComponentWrapper;\n }\n };\n /**\n * This method creates a component given everything needed to guess what sort of component needs to be instantiated\n * It takes\n * @param clazz: The class to instantiate,\n * @param agGridParams: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @param modifyParamsCallback: A chance to customise the params passed to the init method. It receives what the current\n * params are and the component that init is about to get called for\n */\n UserComponentFactory.prototype.createUserComponentFromConcreteClass = function (clazz, agGridParams) {\n var internalComponent = new clazz();\n this.initComponent(internalComponent, agGridParams);\n return internalComponent;\n };\n /**\n * This method returns the underlying representation of the component to be created. ie for Javascript the\n * underlying function where we should be calling new into. In case of the frameworks, the framework class\n * object that represents the component to be created.\n *\n * This method is handy for different reasons, for example if you want to check if a component has a particular\n * method implemented without having to create the component, just by inspecting the source component\n *\n * It takes\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param params: Params to be passed to the dynamic component function in case it needs to be\n * invoked\n * @param defaultComponentName: The name of the component to load if there is no component specified\n */\n UserComponentFactory.prototype.lookupComponentClassDef = function (definitionObject, propertyName, params, defaultComponentName) {\n if (params === void 0) { params = null; }\n /**\n * There are five things that can happen when resolving a component.\n * a) HardcodedFwComponent: That holder[propertyName]Framework has associated a Framework native component\n * b) HardcodedJsComponent: That holder[propertyName] has associate a JS component\n * c) hardcodedJsFunction: That holder[propertyName] has associate a JS function\n * d) hardcodedNameComponent: That holder[propertyName] has associate a string that represents a component to load\n * e) That none of the three previous are specified, then we need to use the DefaultRegisteredComponent\n */\n var hardcodedNameComponent = null;\n var HardcodedJsComponent = null;\n var hardcodedJsFunction = null;\n var HardcodedFwComponent = null;\n var componentSelectorFunc;\n if (definitionObject != null) {\n var componentPropertyValue = definitionObject[propertyName];\n // for filters only, we allow 'true' for the component, which means default filter to be used\n var usingDefaultComponent = componentPropertyValue === true;\n if (componentPropertyValue != null && !usingDefaultComponent) {\n if (typeof componentPropertyValue === 'string') {\n hardcodedNameComponent = componentPropertyValue;\n }\n else if (typeof componentPropertyValue === 'boolean') ;\n else if (this.agComponentUtils.doesImplementIComponent(componentPropertyValue)) {\n HardcodedJsComponent = componentPropertyValue;\n }\n else {\n hardcodedJsFunction = componentPropertyValue;\n }\n }\n HardcodedFwComponent = definitionObject[propertyName + \"Framework\"];\n componentSelectorFunc = definitionObject[propertyName + \"Selector\"];\n }\n /**\n * Since we allow many types of flavors for specifying the components, let's make sure this is not an illegal\n * combination\n */\n if ((HardcodedJsComponent && HardcodedFwComponent) ||\n (hardcodedNameComponent && HardcodedFwComponent) ||\n (hardcodedJsFunction && HardcodedFwComponent)) {\n throw Error(\"ag-grid: you are trying to specify: \" + propertyName + \" twice as a component.\");\n }\n if (HardcodedFwComponent && !this.frameworkComponentWrapper) {\n throw Error(\"ag-grid: you are specifying a framework component but you are not using a framework version of ag-grid for : \" + propertyName);\n }\n if (componentSelectorFunc && (hardcodedNameComponent || HardcodedJsComponent || hardcodedJsFunction || HardcodedFwComponent)) {\n throw Error(\"ag-grid: you can't specify both, the selector and the component of ag-grid for : \" + propertyName);\n }\n /**\n * At this stage we are guaranteed to either have,\n * DEPRECATED\n * - A unique HardcodedFwComponent\n * - A unique HardcodedJsComponent\n * - A unique hardcodedJsFunction\n * BY NAME- FAVOURED APPROACH\n * - A unique hardcodedNameComponent\n * - None of the previous, hence we revert to: RegisteredComponent\n */\n if (HardcodedFwComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedFwComponent}`);\n return {\n componentFromFramework: true,\n component: HardcodedFwComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (HardcodedJsComponent) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a component directly is deprecated, you should register the component by name`);\n // console.warn(`${HardcodedJsComponent}`);\n return {\n componentFromFramework: false,\n component: HardcodedJsComponent,\n source: ComponentSource.HARDCODED,\n paramsFromSelector: null\n };\n }\n if (hardcodedJsFunction) {\n // console.warn(`ag-grid: Since version 12.1.0 specifying a function directly is deprecated, you should register the component by name`);\n // console.warn(`${hardcodedJsFunction}`);\n return this.agComponentUtils.adaptFunction(propertyName, hardcodedJsFunction, false, ComponentSource.HARDCODED);\n }\n var selectorResult = componentSelectorFunc ? componentSelectorFunc(params) : null;\n var componentNameToUse;\n if (selectorResult && selectorResult.component) {\n componentNameToUse = selectorResult.component;\n }\n else if (hardcodedNameComponent) {\n componentNameToUse = hardcodedNameComponent;\n }\n else {\n componentNameToUse = defaultComponentName;\n }\n if (!componentNameToUse) {\n return null;\n }\n var registeredCompClassDef = this.lookupFromRegisteredComponents(propertyName, componentNameToUse);\n if (!registeredCompClassDef) {\n return null;\n }\n return {\n componentFromFramework: registeredCompClassDef.componentFromFramework,\n component: registeredCompClassDef.component,\n source: registeredCompClassDef.source,\n paramsFromSelector: selectorResult ? selectorResult.params : null\n };\n };\n UserComponentFactory.prototype.lookupFromRegisteredComponents = function (propertyName, componentNameOpt) {\n var componentName = componentNameOpt != null ? componentNameOpt : propertyName;\n var registeredComponent = this.userComponentRegistry.retrieve(componentName);\n if (registeredComponent == null) {\n return null;\n }\n //If it is a FW it has to be registered as a component\n if (registeredComponent.componentFromFramework) {\n return {\n component: registeredComponent.component,\n componentFromFramework: true,\n source: ComponentSource.REGISTERED_BY_NAME,\n paramsFromSelector: null\n };\n }\n //If it is JS it may be a function or a component\n if (this.agComponentUtils.doesImplementIComponent(registeredComponent.component)) {\n return {\n component: registeredComponent.component,\n componentFromFramework: false,\n source: (registeredComponent.source == RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT,\n paramsFromSelector: null\n };\n }\n // This is a function\n return this.agComponentUtils.adaptFunction(propertyName, registeredComponent.component, registeredComponent.componentFromFramework, (registeredComponent.source == RegisteredComponentSource.REGISTERED) ? ComponentSource.REGISTERED_BY_NAME : ComponentSource.DEFAULT);\n };\n /**\n * Useful to check what would be the resultant params for a given object\n * @param definitionObject: This is the context for which this component needs to be created, it can be gridOptions\n * (global) or columnDef mostly.\n * @param propertyName: The name of the property used in ag-grid as a convention to refer to the component, it can be:\n * 'floatingFilter', 'cellRenderer', is used to find if the user is specifying a custom component\n * @param paramsFromGrid: Params to be passed to the component and passed by ag-Grid. This will get merged with any params\n * specified by the user in the configuration\n * @returns {TParams} It merges the user agGridParams with the actual params specified by the user.\n */\n UserComponentFactory.prototype.createFinalParams = function (definitionObject, propertyName, paramsFromGrid, paramsFromSelector) {\n if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n var params = {};\n _.mergeDeep(params, paramsFromGrid);\n var userParams = definitionObject ? definitionObject[propertyName + \"Params\"] : null;\n if (userParams != null) {\n if (typeof userParams === 'function') {\n _.mergeDeep(params, userParams(paramsFromGrid));\n }\n else if (typeof userParams === 'object') {\n _.mergeDeep(params, userParams);\n }\n }\n _.mergeDeep(params, paramsFromSelector);\n return params;\n };\n UserComponentFactory.prototype.createComponentInstance = function (holder, componentType, paramsForSelector, defaultComponentName, optional) {\n var propertyName = componentType.propertyName;\n var componentToUse = this.lookupComponentClassDef(holder, propertyName, paramsForSelector, defaultComponentName);\n var missing = !componentToUse || !componentToUse.component;\n if (missing) {\n // to help the user, we print out the name they are looking for, rather than the default name.\n // i don't know why the default name was originally printed out (that doesn't help the user)\n var overrideName = holder ? holder[propertyName] : defaultComponentName;\n var nameToReport = overrideName ? overrideName : defaultComponentName;\n if (!optional) {\n console.error(\"Could not find component \" + nameToReport + \", did you forget to configure this component?\");\n }\n return null;\n }\n var componentInstance;\n if (componentToUse.componentFromFramework) {\n // Using framework component\n var FrameworkComponentRaw = componentToUse.component;\n var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n componentInstance = this.frameworkComponentWrapper.wrap(FrameworkComponentRaw, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, componentType, defaultComponentName);\n }\n else {\n // Using plain JavaScript component\n componentInstance = new componentToUse.component();\n }\n return { componentInstance: componentInstance, paramsFromSelector: componentToUse.paramsFromSelector };\n };\n UserComponentFactory.prototype.initComponent = function (component, params) {\n this.context.wireBean(component);\n if (component.init == null) {\n return;\n }\n return component.init(params);\n };\n __decorate$l([\n Autowired(\"gridOptions\")\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate$l([\n Autowired(\"context\")\n ], UserComponentFactory.prototype, \"context\", void 0);\n __decorate$l([\n Autowired(\"agComponentUtils\")\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate$l([\n Autowired(\"componentMetadataProvider\")\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate$l([\n Autowired(\"userComponentRegistry\")\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate$l([\n Optional(\"frameworkComponentWrapper\")\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate$l([\n Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$e = (undefined && undefined.__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})();\nvar __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends$e(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n this.params = params;\n if (this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {\n this.assignBlankValueToGroupFooterCell(params);\n }\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var nullValue = params.value == null;\n var skipCell = false;\n // if the groupCellRenderer is inside of a footer and groupHideOpenParents is true\n // we should only display the groupCellRenderer if the current column is the rowGroupedColumn\n if (this.gridOptionsWrapper.isGroupIncludeFooter() && this.gridOptionsWrapper.isGroupHideOpenParents()) {\n var node = params.node;\n if (node.footer) {\n var showRowGroup = params.colDef && params.colDef.showRowGroup;\n var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();\n skipCell = showRowGroup !== rowGroupColumnId;\n }\n }\n this.cellIsBlank = embeddedRowMismatch || nullValue || skipCell;\n if (this.cellIsBlank) {\n return;\n }\n this.setupDragOpenParents();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n };\n GroupCellRenderer.prototype.assignBlankValueToGroupFooterCell = function (params) {\n // this is not ideal, but it was the only way we could get footer working for the root node\n if (!params.value && params.node.level == -1) {\n params.value = '';\n }\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRenderer.prototype.isEmbeddedRowMismatch = function () {\n if (!this.params.fullWidth || !this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n return false;\n }\n var pinnedLeftCell = this.params.pinned === Constants.PINNED_LEFT;\n var pinnedRightCell = this.params.pinned === Constants.PINNED_RIGHT;\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (this.columnController.isPinningLeft()) {\n return !pinnedRightCell;\n }\n return !bodyCell;\n }\n if (this.columnController.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n return !bodyCell;\n };\n GroupCellRenderer.prototype.setIndent = function () {\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n var paddingCount = rowNode.uiLevel;\n var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n if (userProvidedPaddingPixelsTheDeprecatedWay) {\n this.setPaddingDeprecatedWay(paddingCount, params.padding);\n return;\n }\n if (this.indentClass) {\n this.removeCssClass(this.indentClass);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.addCssClass(this.indentClass);\n };\n GroupCellRenderer.prototype.setPaddingDeprecatedWay = function (paddingCount, padding) {\n _.doOnce(function () { return console.warn('ag-Grid: since v14.2, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the ag-Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');\n var paddingPx = paddingCount * padding;\n var eGui = this.getGui();\n var paddingSide = this.gridOptionsWrapper.isEnableRtl() ? 'paddingRight' : 'paddingLeft';\n eGui.style[paddingSide] = paddingPx + \"px\";\n };\n GroupCellRenderer.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addDestroyableEventListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRenderer.prototype.addValueElement = function () {\n var params = this.params;\n var rowNode = this.displayedGroup;\n if (rowNode.footer) {\n this.createFooterCell();\n }\n else if (rowNode.hasChildren() ||\n _.get(params.colDef, 'cellRendererParams.innerRenderer', null) ||\n _.get(params.colDef, 'cellRendererParams.innerRendererFramework', null)) {\n this.createGroupCell();\n if (rowNode.hasChildren()) {\n this.addChildCount();\n }\n }\n else {\n this.createLeafCell();\n }\n };\n GroupCellRenderer.prototype.createFooterCell = function () {\n var footerValueGetter = this.params.footerValueGetter;\n var footerValue;\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = _.cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('ag-Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + this.params.value;\n }\n this.eValue.innerHTML = footerValue;\n };\n GroupCellRenderer.prototype.createGroupCell = function () {\n var _this = this;\n var params = this.params;\n var rowGroupColumn = this.displayedGroup.rowGroupColumn;\n // we try and use the cellRenderer of the column used for the grouping if we can\n var columnToUse = rowGroupColumn ? rowGroupColumn : params.column;\n var groupName = this.params.value;\n var valueFormatted = columnToUse ?\n this.valueFormatterService.formatValue(columnToUse, params.node, params.scope, groupName) : null;\n params.valueFormatted = valueFormatted;\n var rendererPromise;\n rendererPromise = params.fullWidth\n ? this.useFullWidth(params)\n : this.useInnerRenderer(this.params.colDef.cellRendererParams, columnToUse.getColDef(), params);\n // retain a reference to the created renderer - we'll use this later for cleanup (in destroy)\n if (rendererPromise) {\n rendererPromise.then(function (value) {\n _this.innerCellRenderer = value;\n });\n }\n };\n GroupCellRenderer.prototype.useInnerRenderer = function (groupCellRendererParams, groupedColumnDef, // the column this group row is for, eg 'Country'\n params) {\n var _this = this;\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n var cellRendererPromise = null;\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var groupInnerRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupCellRendererParams, \"innerRenderer\");\n if (groupInnerRendererClass && groupInnerRendererClass.component != null\n && groupInnerRendererClass.source != ComponentSource.DEFAULT) {\n // use the renderer defined in cellRendererParams.innerRenderer\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupCellRendererParams, params);\n }\n else {\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var groupColumnRendererClass = this.userComponentFactory\n .lookupComponentClassDef(groupedColumnDef, \"cellRenderer\");\n if (groupColumnRendererClass &&\n groupColumnRendererClass.source != ComponentSource.DEFAULT) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n cellRendererPromise = this.userComponentFactory.newCellRenderer(groupedColumnDef, params);\n }\n else if (groupColumnRendererClass &&\n groupColumnRendererClass.source == ComponentSource.DEFAULT &&\n (_.get(groupedColumnDef, 'cellRendererParams.innerRenderer', null))) {\n // EDGE CASE - THIS COMES FROM A COLUMN WHICH HAS BEEN GROUPED DYNAMICALLY, THAT HAS AS RENDERER 'group'\n // AND HAS A INNER CELL RENDERER\n cellRendererPromise = this.userComponentFactory.newInnerCellRenderer(groupedColumnDef.cellRendererParams, params);\n }\n else {\n // This forces the retrieval of the default plain cellRenderer that just renders the values.\n cellRendererPromise = this.userComponentFactory.newCellRenderer({}, params);\n }\n }\n if (cellRendererPromise != null) {\n cellRendererPromise.then(function (rendererToUse) {\n if (rendererToUse == null) {\n _this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n return;\n }\n _.bindCellRendererToHtmlElement(cellRendererPromise, _this.eValue);\n });\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.useFullWidth = function (params) {\n var cellRendererPromise = this.userComponentFactory.newFullWidthGroupRowInnerCellRenderer(params);\n if (cellRendererPromise != null) {\n _.bindCellRendererToHtmlElement(cellRendererPromise, this.eValue);\n }\n else {\n this.eValue.innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n return cellRendererPromise;\n };\n GroupCellRenderer.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addDestroyableEventListener(this.displayedGroup, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRenderer.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroup.allChildrenCount;\n this.eChildCount.innerHTML = allChildrenCount >= 0 ? \"(\" + allChildrenCount + \")\" : \"\";\n };\n GroupCellRenderer.prototype.createLeafCell = function () {\n if (_.exists(this.params.value)) {\n this.eValue.innerText = this.params.valueFormatted ? this.params.valueFormatted : this.params.value;\n }\n };\n GroupCellRenderer.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n if (typeof paramsCheckbox === 'function') {\n return paramsCheckbox(this.params);\n }\n return paramsCheckbox === true;\n };\n GroupCellRenderer.prototype.addCheckboxIfNeeded = function () {\n var rowNode = this.displayedGroup;\n var checkboxNeeded = this.isUserWantsSelected() &&\n // footers cannot be selected\n !rowNode.footer &&\n // pinned rows cannot be selected\n !rowNode.rowPinned &&\n // details cannot be selected\n !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new CheckboxSelectionComponent();\n this.getContext().wireBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return cbSelectionComponent_1.destroy(); });\n }\n _.addOrRemoveCssClass(this.eCheckbox, 'ag-invisible', !checkboxNeeded);\n };\n GroupCellRenderer.prototype.addExpandAndContract = function () {\n var params = this.params;\n var eGroupCell = params.eGridCell;\n var eExpandedIcon = _.createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n var eContractedIcon = _.createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n this.eExpanded.appendChild(eExpandedIcon);\n this.eContracted.appendChild(eContractedIcon);\n this.addDestroyableEventListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addDestroyableEventListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addDestroyableEventListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n this.addDestroyableEventListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n this.addDestroyableEventListener(this.displayedGroup, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.onAllChildrenCountChanged.bind(this));\n // if editing groups, then double click is to start editing\n if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addDestroyableEventListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n };\n GroupCellRenderer.prototype.onAllChildrenCountChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n };\n GroupCellRenderer.prototype.onKeyDown = function (event) {\n var enterKeyPressed = _.isKeyPressed(event, Constants.KEY_ENTER);\n if (!enterKeyPressed || this.params.suppressEnterExpand) {\n return;\n }\n var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n event.preventDefault();\n this.onExpandOrContract();\n };\n GroupCellRenderer.prototype.setupDragOpenParents = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n this.draggedFromHideOpenParents = false;\n }\n else if (!rowNode.hasChildren()) {\n // if we are here, and we are not a group, then we must of been dragged down,\n // as otherwise the cell would be blank, and if cell is blank, this method is never called.\n this.draggedFromHideOpenParents = true;\n }\n else {\n var rowGroupColumn = rowNode.rowGroupColumn;\n if (rowGroupColumn) {\n // if the displayGroup column for this col matches the rowGroupColumn we grouped by for this node,\n // then nothing was dragged down\n this.draggedFromHideOpenParents = !column.isRowGroupDisplayed(rowGroupColumn.getId());\n }\n else {\n // the only way we can end up here (no column, but a group) is if we are at the root node,\n // which only happens when 'groupIncludeTotalFooter' is true. here, we are never dragging\n this.draggedFromHideOpenParents = false;\n }\n }\n if (this.draggedFromHideOpenParents) {\n var pointer = rowNode.parent;\n while (true) {\n if (_.missing(pointer)) {\n break;\n }\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroup = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (_.missing(this.displayedGroup)) {\n this.displayedGroup = rowNode;\n }\n };\n GroupCellRenderer.prototype.onExpandClicked = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n _.stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract();\n };\n GroupCellRenderer.prototype.onCellDblClicked = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = _.isElementInEventPath(this.eExpanded, mouseEvent)\n || _.isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract();\n }\n };\n GroupCellRenderer.prototype.onExpandOrContract = function () {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroup;\n rowNode.setExpanded(!rowNode.expanded);\n };\n GroupCellRenderer.prototype.isExpandable = function () {\n var rowNode = this.params.node;\n var reducedLeafNode = this.columnController.isPivotMode() && rowNode.leafGroup;\n return this.draggedFromHideOpenParents ||\n (rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode);\n };\n GroupCellRenderer.prototype.showExpandAndContractIcons = function () {\n var rowNode = this.params.node;\n if (this.isExpandable()) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.draggedFromHideOpenParents ? true : rowNode.expanded;\n _.setDisplayed(this.eContracted, !expanded);\n _.setDisplayed(this.eExpanded, expanded);\n }\n else {\n // it not expandable, show neither\n _.setDisplayed(this.eExpanded, false);\n _.setDisplayed(this.eContracted, false);\n }\n var displayedGroup = this.displayedGroup;\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotModeAndLeafGroup = this.columnController.isPivotMode() && displayedGroup.leafGroup;\n var notExpandable = !displayedGroup.isExpandable();\n var addLeafIndentClass = displayedGroup.footer || notExpandable || pivotModeAndLeafGroup;\n this.addOrRemoveCssClass('ag-row-group', !addLeafIndentClass);\n this.addOrRemoveCssClass('ag-row-group-leaf-indent', addLeafIndentClass);\n };\n GroupCellRenderer.prototype.destroy = function () {\n if (this.innerCellRenderer && this.innerCellRenderer.destroy) {\n this.innerCellRenderer.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '';\n __decorate$m([\n Autowired('gridOptionsWrapper')\n ], GroupCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$m([\n Autowired('expressionService')\n ], GroupCellRenderer.prototype, \"expressionService\", void 0);\n __decorate$m([\n Autowired('valueFormatterService')\n ], GroupCellRenderer.prototype, \"valueFormatterService\", void 0);\n __decorate$m([\n Autowired('columnController')\n ], GroupCellRenderer.prototype, \"columnController\", void 0);\n __decorate$m([\n Autowired('userComponentFactory')\n ], GroupCellRenderer.prototype, \"userComponentFactory\", void 0);\n __decorate$m([\n RefSelector('eExpanded')\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate$m([\n RefSelector('eContracted')\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate$m([\n RefSelector('eCheckbox')\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate$m([\n RefSelector('eValue')\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate$m([\n RefSelector('eChildCount')\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$f = (undefined && undefined.__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})();\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends$f(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = _.exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n _.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-up', deltaUp);\n _.addOrRemoveCssClass(this.eDelta, 'ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n _.removeCssClass(this.eValue, 'ag-value-change-value-highlight');\n _.clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return;\n }\n if (_.exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (_.exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n _.clearElement(this.eValue);\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return;\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n _.addCssClass(this.eValue, 'ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n __decorate$n([\n Autowired('filterManager')\n ], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateShowChangeCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$g = (undefined && undefined.__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})();\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends$g(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.params = params;\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = _.loadTemplate('');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _.addCssClass(_this.ePrevious, 'ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (_.missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return;\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (_.exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (_.exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n _.clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = '' +\n '' +\n '';\n __decorate$o([\n Autowired('filterManager')\n ], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateSlideCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$h = (undefined && undefined.__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})();\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends$h(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n var eLoadingIcon = _.createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n this.eLoadingIcon.appendChild(eLoadingIcon);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n LoadingCellRenderer.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate$p([\n Autowired('gridOptionsWrapper')\n ], LoadingCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$p([\n RefSelector('eLoadingIcon')\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate$p([\n RefSelector('eLoadingText')\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$i = (undefined && undefined.__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})();\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends$i(SelectCellEditor, _super);\n function SelectCellEditor() {\n return _super.call(this, '
') || this;\n }\n SelectCellEditor.prototype.init = function (params) {\n var _this = this;\n this.focusAfterAttached = params.cellStartedEdit;\n if (_.missing(params.values)) {\n console.warn('ag-Grid: no values found for select cellEditor');\n return;\n }\n params.values.forEach(function (value) {\n var option = { value: value };\n var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, null, value);\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n option.text = valueFormattedExits ? valueFormatted : value;\n _this.eSelect.addOption(option);\n });\n this.eSelect.setValue(params.value, true);\n // we don't want to add this if full row editing, otherwise selecting will stop the\n // full row editing.\n if (!this.gridOptionsWrapper.isFullRowEdit()) {\n this.eSelect.onValueChange(function () { return params.stopEditing(); });\n }\n };\n SelectCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.eSelect.getFocusableElement().focus();\n }\n };\n SelectCellEditor.prototype.focusIn = function () {\n this.eSelect.getFocusableElement().focus();\n };\n SelectCellEditor.prototype.getValue = function () {\n return this.eSelect.getValue();\n };\n SelectCellEditor.prototype.isPopup = function () {\n return false;\n };\n __decorate$q([\n Autowired('gridOptionsWrapper')\n ], SelectCellEditor.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$q([\n Autowired('valueFormatterService')\n ], SelectCellEditor.prototype, \"valueFormatterService\", void 0);\n __decorate$q([\n RefSelector('eSelect')\n ], SelectCellEditor.prototype, \"eSelect\", void 0);\n return SelectCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$j = (undefined && undefined.__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})();\nvar PopupTextCellEditor = /** @class */ (function (_super) {\n __extends$j(PopupTextCellEditor, _super);\n function PopupTextCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupTextCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupTextCellEditor;\n}(TextCellEditor));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$k = (undefined && undefined.__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})();\nvar PopupSelectCellEditor = /** @class */ (function (_super) {\n __extends$k(PopupSelectCellEditor, _super);\n function PopupSelectCellEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupSelectCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupSelectCellEditor;\n}(SelectCellEditor));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$l = (undefined && undefined.__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})();\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n __extends$l(LargeTextCellEditor, _super);\n function LargeTextCellEditor() {\n return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n }\n LargeTextCellEditor.prototype.init = function (params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.eTextArea\n .setMaxLength(params.maxLength || 200)\n .setCols(params.cols || 60)\n .setRows(params.rows || 10);\n if (_.exists(params.value)) {\n this.eTextArea.setValue(params.value.toString(), true);\n }\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n };\n LargeTextCellEditor.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n if (key == Constants.KEY_LEFT ||\n key == Constants.KEY_UP ||\n key == Constants.KEY_RIGHT ||\n key == Constants.KEY_DOWN ||\n (event.shiftKey && key == Constants.KEY_ENTER)) { // shift+enter allows for newlines\n event.stopPropagation();\n }\n };\n LargeTextCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.eTextArea.getFocusableElement().focus();\n }\n };\n LargeTextCellEditor.prototype.getValue = function () {\n return this.params.parseValue(this.eTextArea.getValue());\n };\n LargeTextCellEditor.TEMPLATE = \"
\\n \\n
\";\n __decorate$r([\n RefSelector(\"eTextArea\")\n ], LargeTextCellEditor.prototype, \"eTextArea\", void 0);\n return LargeTextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$m = (undefined && undefined.__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})();\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NumberFilter = /** @class */ (function (_super) {\n __extends$m(NumberFilter, _super);\n function NumberFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFilter.prototype.mapRangeFromModel = function (filterModel) {\n return {\n from: filterModel.filter,\n to: filterModel.filterTo\n };\n };\n NumberFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n NumberFilter.prototype.resetUiToDefaults = function (silent) {\n _super.prototype.resetUiToDefaults.call(this, silent);\n var fields = [this.eValueFrom1, this.eValueFrom2, this.eValueTo1, this.eValueTo2];\n fields.forEach(function (field) { return field.setValue(null, silent); });\n this.resetPlaceholder();\n };\n NumberFilter.prototype.setConditionIntoUi = function (model, position) {\n var positionOne = position === ConditionPosition.One;\n var eValueFrom = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n eValueFrom.setValue(model ? ('' + model.filter) : null);\n eValueTo.setValue(model ? ('' + model.filterTo) : null);\n };\n NumberFilter.prototype.setValueFromFloatingFilter = function (value) {\n this.eValueFrom1.setValue(value);\n this.eValueFrom2.setValue(null);\n this.eValueTo1.setValue(null);\n this.eValueTo2.setValue(null);\n };\n NumberFilter.prototype.comparator = function () {\n return function (left, right) {\n if (left === right) {\n return 0;\n }\n if (left < right) {\n return 1;\n }\n return -1;\n };\n };\n NumberFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.addValueChangedListeners();\n };\n NumberFilter.prototype.addValueChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.eValueFrom1.onValueChange(listener);\n this.eValueFrom2.onValueChange(listener);\n this.eValueTo1.onValueChange(listener);\n this.eValueTo2.onValueChange(listener);\n };\n NumberFilter.prototype.resetPlaceholder = function () {\n var translate = this.translate.bind(this);\n var isRange1 = this.getCondition1Type() === ScalarFilter.IN_RANGE;\n var isRange2 = this.getCondition2Type() === ScalarFilter.IN_RANGE;\n this.eValueFrom1.setInputPlaceholder(translate(isRange1 ? 'inRangeStart' : 'filterOoo'));\n this.eValueTo1.setInputPlaceholder(translate(isRange1 ? 'inRangeEnd' : 'filterOoo'));\n this.eValueFrom2.setInputPlaceholder(translate(isRange2 ? 'inRangeStart' : 'filterOoo'));\n this.eValueTo2.setInputPlaceholder(translate(isRange2 ? 'inRangeEnd' : 'filterOoo'));\n };\n NumberFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.resetPlaceholder();\n this.eValueFrom1.getInputElement().focus();\n };\n NumberFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFilter.prototype.createValueTemplate = function (position) {\n var positionOne = position === ConditionPosition.One;\n var pos = positionOne ? '1' : '2';\n return \"
\\n \\n \\n
\";\n };\n NumberFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n var value = this.stringToFloat(eValue.getValue());\n var valueTo = this.stringToFloat(eValueTo.getValue());\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n if (option === SimpleFilter.IN_RANGE) {\n return value != null && valueTo != null;\n }\n return value != null;\n };\n NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter\n && aSimple.filterTo === bSimple.filterTo\n && aSimple.type === bSimple.type;\n };\n // needed for creating filter model\n NumberFilter.prototype.getFilterType = function () {\n return NumberFilter.FILTER_TYPE;\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n if (typeof value === \"number\") {\n return value;\n }\n var filterText = _.makeNull(value);\n if (filterText && filterText.trim() === '') {\n filterText = null;\n }\n var newFilter;\n if (filterText !== null && filterText !== undefined) {\n newFilter = parseFloat(filterText);\n }\n else {\n newFilter = null;\n }\n return newFilter;\n };\n NumberFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValueFrom1 : this.eValueFrom2;\n var value = this.stringToFloat(eValue.getValue());\n var eValueTo = positionOne ? this.eValueTo1 : this.eValueTo2;\n var valueTo = this.stringToFloat(eValueTo.getValue());\n var model = {\n filterType: NumberFilter.FILTER_TYPE,\n type: type\n };\n if (!this.doesFilterHaveHiddenInput(type)) {\n model.filter = value;\n model.filterTo = valueTo; // FIX - should only populate this when filter choice has 'to' option\n }\n return model;\n };\n NumberFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n this.resetPlaceholder();\n var showFrom1 = this.showValueFrom(this.getCondition1Type());\n _.setDisplayed(this.eValueFrom1.getGui(), showFrom1);\n var showTo1 = this.showValueTo(this.getCondition1Type());\n _.setDisplayed(this.eValueTo1.getGui(), showTo1);\n var showFrom2 = this.showValueFrom(this.getCondition2Type());\n _.setDisplayed(this.eValueFrom2.getGui(), showFrom2);\n var showTo2 = this.showValueTo(this.getCondition2Type());\n _.setDisplayed(this.eValueTo2.getGui(), showTo2);\n };\n NumberFilter.FILTER_TYPE = 'number';\n NumberFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.LESS_THAN,\n ScalarFilter.LESS_THAN_OR_EQUAL,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.GREATER_THAN_OR_EQUAL,\n ScalarFilter.IN_RANGE\n ];\n __decorate$s([\n RefSelector('eValueFrom1')\n ], NumberFilter.prototype, \"eValueFrom1\", void 0);\n __decorate$s([\n RefSelector('eValueFrom2')\n ], NumberFilter.prototype, \"eValueFrom2\", void 0);\n __decorate$s([\n RefSelector('eValueTo1')\n ], NumberFilter.prototype, \"eValueTo1\", void 0);\n __decorate$s([\n RefSelector('eValueTo2')\n ], NumberFilter.prototype, \"eValueTo2\", void 0);\n return NumberFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$n = (undefined && undefined.__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})();\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingOverlayComponent$1 = /** @class */ (function (_super) {\n __extends$n(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n LoadingOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n __decorate$t([\n Autowired('gridOptionsWrapper')\n ], LoadingOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return LoadingOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$o = (undefined && undefined.__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})();\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NoRowsOverlayComponent$1 = /** @class */ (function (_super) {\n __extends$o(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n NoRowsOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n __decorate$u([\n Autowired('gridOptionsWrapper')\n ], NoRowsOverlayComponent.prototype, \"gridOptionsWrapper\", void 0);\n return NoRowsOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$p = (undefined && undefined.__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})();\nvar TooltipComponent$1 = /** @class */ (function (_super) {\n __extends$p(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, /* html */ \"
\") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = value;\n };\n return TooltipComponent;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$q = (undefined && undefined.__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})();\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DefaultDateComponent = /** @class */ (function (_super) {\n __extends$q(DefaultDateComponent, _super);\n function DefaultDateComponent() {\n return _super.call(this, /* html */ \"\\n
\\n \\n
\") || this;\n }\n DefaultDateComponent.prototype.init = function (params) {\n var _this = this;\n if (this.shouldUseBrowserDatePicker(params)) {\n if (isBrowserIE()) {\n console.warn('ag-grid: browserDatePicker is specified to true, but it is not supported in IE 11, reverting to plain text date picker');\n }\n else {\n this.eDateInput.getInputElement().type = 'date';\n }\n }\n this.listener = params.onDateChanged;\n this.addDestroyableEventListener(this.eDateInput.getInputElement(), 'input', function (e) {\n if (e.target !== document.activeElement) {\n return;\n }\n _this.listener();\n });\n };\n DefaultDateComponent.prototype.getDate = function () {\n return parseDateTimeFromString(this.eDateInput.getValue());\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.setValue(serialiseDate(date, false));\n };\n DefaultDateComponent.prototype.setInputPlaceholder = function (placeholder) {\n this.eDateInput.setInputPlaceholder(placeholder);\n };\n DefaultDateComponent.prototype.shouldUseBrowserDatePicker = function (params) {\n if (params.filterParams && params.filterParams.browserDatePicker != null) {\n return params.filterParams.browserDatePicker;\n }\n else {\n return isBrowserChrome() || isBrowserFirefox();\n }\n };\n __decorate$v([\n RefSelector('eDateInput')\n ], DefaultDateComponent.prototype, \"eDateInput\", void 0);\n return DefaultDateComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$r = (undefined && undefined.__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})();\nvar SimpleFloatingFilter = /** @class */ (function (_super) {\n __extends$r(SimpleFloatingFilter, _super);\n function SimpleFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n // used by:\n // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n SimpleFloatingFilter.prototype.getTextFromModel = function (model) {\n if (!model) {\n return null;\n }\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var con1Str = this.conditionToString(combinedModel.condition1);\n var con2Str = this.conditionToString(combinedModel.condition2);\n return con1Str + \" \" + combinedModel.operator + \" \" + con2Str;\n }\n else {\n var condition = model;\n return this.conditionToString(condition);\n }\n };\n SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {\n return event && event.afterFloatingFilter;\n };\n SimpleFloatingFilter.prototype.getLastType = function () {\n return this.lastType;\n };\n SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {\n // if no model provided by the parent filter use default\n if (!model) {\n this.lastType = this.optionsFactory.getDefaultOption();\n return;\n }\n var isCombined = model.operator;\n var condition;\n if (isCombined) {\n var combinedModel = model;\n condition = combinedModel.condition1;\n }\n else {\n condition = model;\n }\n this.lastType = condition.type;\n };\n SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {\n if (!model) {\n // if no model, then we can edit as long as the lastType is something we can edit, as this\n // is the type we will provide to the parent filter if the user decides to use the floating filter.\n return this.isTypeEditable(this.lastType);\n }\n // never allow editing if the filter is combined (ie has two parts)\n var isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n var simpleModel = model;\n return this.isTypeEditable(simpleModel.type);\n };\n SimpleFloatingFilter.prototype.init = function (params) {\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());\n this.lastType = this.optionsFactory.getDefaultOption();\n // we are editable if:\n // 1) there is a type (user has configured filter wrong if not type)\n // AND\n // 2) the default type is not 'in range'\n var editable = this.isTypeEditable(this.lastType);\n this.setEditable(editable);\n };\n SimpleFloatingFilter.prototype.doesFilterHaveHiddenInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n return customFilterOption && customFilterOption.hideFilterInput;\n };\n SimpleFloatingFilter.prototype.isTypeEditable = function (type) {\n return !this.doesFilterHaveHiddenInput(type) &&\n type\n && type !== SimpleFilter.IN_RANGE\n && type !== SimpleFilter.EMPTY;\n };\n return SimpleFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$s = (undefined && undefined.__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})();\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DateFloatingFilter = /** @class */ (function (_super) {\n __extends$s(DateFloatingFilter, _super);\n function DateFloatingFilter() {\n return _super.call(this, /* html */ \"\\n
\\n \\n
\\n
\") || this;\n }\n DateFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFloatingFilter.prototype.conditionToString = function (condition) {\n if (condition.type === SimpleFilter.IN_RANGE) {\n return condition.dateFrom + \"-\" + condition.dateTo;\n }\n // cater for when the type doesn't need a value\n if (condition.dateFrom != null) {\n return \"\" + condition.dateFrom;\n }\n return \"\" + condition.type;\n };\n DateFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.createDateComponent();\n this.eReadOnlyText.setDisabled(true);\n };\n DateFloatingFilter.prototype.setEditable = function (editable) {\n setDisplayed(this.eDateWrapper, editable);\n setDisplayed(this.eReadOnlyText.getGui(), !editable);\n };\n DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // We don't want to update the floating filter if the floating filter caused the change,\n // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n // as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n _super.prototype.setLastTypeFromModel.call(this, model);\n var allowEditing = this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n if (model) {\n var dateModel = model;\n this.dateComp.setDate(parseDateTimeFromString(dateModel.dateFrom));\n }\n else {\n this.dateComp.setDate(null);\n }\n this.eReadOnlyText.setValue('');\n }\n else {\n this.eReadOnlyText.setValue(this.getTextFromModel(model));\n this.dateComp.setDate(null);\n }\n };\n DateFloatingFilter.prototype.onDateChanged = function () {\n var _this = this;\n var filterValueDate = this.dateComp.getDate();\n var filterValueText = serialiseDate(filterValueDate);\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var simpleFilter = filterInstance;\n simpleFilter.onFloatingFilterChanged(_this.getLastType(), filterValueText);\n }\n });\n };\n DateFloatingFilter.prototype.createDateComponent = function () {\n var _this = this;\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var dateComponentParams = {\n onDateChanged: debounce(this.onDateChanged.bind(this), debounceMs),\n filterParams: this.params.column.getColDef().filterParams\n };\n this.dateComp = new DateCompWrapper(this.userComponentFactory, dateComponentParams, this.eDateWrapper);\n this.addDestroyFunc(function () { return _this.dateComp.destroy(); });\n };\n __decorate$w([\n Autowired('userComponentFactory')\n ], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n __decorate$w([\n RefSelector('eReadOnlyText')\n ], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n __decorate$w([\n RefSelector('eDateWrapper')\n ], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n return DateFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$t = (undefined && undefined.__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})();\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextFilter = /** @class */ (function (_super) {\n __extends$t(TextFilter, _super);\n function TextFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextFilter.prototype.getValue = function (inputField) {\n var val = inputField.getValue();\n val = makeNull(val);\n if (val && val.trim() === '') {\n val = null;\n }\n return val;\n };\n TextFilter.prototype.addValueChangedListeners = function () {\n var _this = this;\n var listener = function () { return _this.onUiChanged(); };\n this.eValue1.onValueChange(listener);\n this.eValue2.onValueChange(listener);\n };\n TextFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.textFilterParams = params;\n this.comparator = this.textFilterParams.textCustomComparator || TextFilter.DEFAULT_COMPARATOR;\n this.formatter = this.textFilterParams.textFormatter ||\n (this.textFilterParams.caseSensitive == true\n ? TextFilter.DEFAULT_FORMATTER\n : TextFilter.DEFAULT_LOWERCASE_FORMATTER);\n this.addValueChangedListeners();\n };\n TextFilter.prototype.setConditionIntoUi = function (model, position) {\n var positionOne = position === ConditionPosition.One;\n var eValue = positionOne ? this.eValue1 : this.eValue2;\n eValue.setValue(model ? model.filter : null);\n };\n TextFilter.prototype.createCondition = function (position) {\n var positionOne = position === ConditionPosition.One;\n var type = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n var eValue = positionOne ? this.eValue1 : this.eValue2;\n var value = this.getValue(eValue);\n var model = {\n filterType: TextFilter.FILTER_TYPE,\n type: type\n };\n if (!this.doesFilterHaveHiddenInput(type)) {\n model.filter = value;\n }\n return model;\n };\n TextFilter.prototype.getFilterType = function () {\n return TextFilter.FILTER_TYPE;\n };\n TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter && aSimple.type === bSimple.type;\n };\n TextFilter.prototype.resetUiToDefaults = function (silent) {\n _super.prototype.resetUiToDefaults.call(this, silent);\n var fields = [this.eValue1, this.eValue2];\n fields.forEach(function (field) { return field.setValue(null, silent); });\n this.resetPlaceholder();\n };\n TextFilter.prototype.resetPlaceholder = function () {\n var translate = this.translate.bind(this);\n var placeholder = translate('filterOoo', 'Filter...');\n var fields = [this.eValue1, this.eValue2];\n fields.forEach(function (field) { return field.setInputPlaceholder(placeholder); });\n };\n TextFilter.prototype.setValueFromFloatingFilter = function (value) {\n this.eValue1.setValue(value);\n this.eValue2.setValue(null);\n };\n TextFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n TextFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n return /* html */ \"\\n
\\n \\n
\";\n };\n TextFilter.prototype.updateUiVisibility = function () {\n _super.prototype.updateUiVisibility.call(this);\n var showValue1 = this.showValueFrom(this.getCondition1Type());\n setDisplayed(this.eValue1.getGui(), showValue1);\n var showValue2 = this.showValueFrom(this.getCondition2Type());\n setDisplayed(this.eValue2.getGui(), showValue2);\n };\n TextFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.resetPlaceholder();\n this.eValue1.getInputElement().focus();\n };\n TextFilter.prototype.isConditionUiComplete = function (position) {\n var positionOne = position === ConditionPosition.One;\n var option = positionOne ? this.getCondition1Type() : this.getCondition2Type();\n if (option === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.doesFilterHaveHiddenInput(option)) {\n return true;\n }\n return this.getValue(positionOne ? this.eValue1 : this.eValue2) != null;\n };\n TextFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var filterText = filterModel.filter;\n var filterOption = filterModel.type;\n var cellValue = this.textFilterParams.valueGetter(params.node);\n var cellValueFormatted = this.formatter(cellValue);\n var customFilterOption = this.optionsFactory.getCustomOption(filterOption);\n if (customFilterOption) {\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (filterText != null || customFilterOption.hideFilterInput) {\n return customFilterOption.test(filterText, cellValueFormatted);\n }\n }\n if (cellValue == null) {\n return filterOption === SimpleFilter.NOT_EQUAL || filterOption === SimpleFilter.NOT_CONTAINS;\n }\n var filterTextFormatted = this.formatter(filterText);\n return this.comparator(filterOption, cellValueFormatted, filterTextFormatted);\n };\n TextFilter.FILTER_TYPE = 'text';\n TextFilter.DEFAULT_FILTER_OPTIONS = [\n SimpleFilter.CONTAINS,\n SimpleFilter.NOT_CONTAINS,\n SimpleFilter.EQUALS,\n SimpleFilter.NOT_EQUAL,\n SimpleFilter.STARTS_WITH,\n SimpleFilter.ENDS_WITH\n ];\n TextFilter.DEFAULT_FORMATTER = function (from) { return from; };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) {\n return from == null ? null : from.toString().toLowerCase();\n };\n TextFilter.DEFAULT_COMPARATOR = function (filter, value, filterText) {\n switch (filter) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) === -1;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n };\n __decorate$x([\n RefSelector('eValue1')\n ], TextFilter.prototype, \"eValue1\", void 0);\n __decorate$x([\n RefSelector('eValue2')\n ], TextFilter.prototype, \"eValue2\", void 0);\n return TextFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$u = (undefined && undefined.__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})();\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextInputFloatingFilter = /** @class */ (function (_super) {\n __extends$u(TextInputFloatingFilter, _super);\n function TextInputFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextInputFloatingFilter.prototype.postConstruct = function () {\n this.setTemplate(/* html */ \"\\n
\\n \\n
\");\n };\n TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // we don't want to update the floating filter if the floating filter caused the change.\n // as if it caused the change, the ui is already in sync. if we didn't do this, the UI\n // would behave strange as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n this.setLastTypeFromModel(model);\n var modelString = this.getTextFromModel(model);\n this.eFloatingFilterInput.setValue(modelString);\n var editable = this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(editable);\n };\n TextInputFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n var filterGui = this.eFloatingFilterInput.getGui();\n this.addDestroyableEventListener(filterGui, 'input', toDebounce);\n this.addDestroyableEventListener(filterGui, 'keypress', toDebounce);\n this.addDestroyableEventListener(filterGui, 'keydown', toDebounce);\n var columnDef = params.column.getDefinition();\n if (columnDef.filterParams &&\n columnDef.filterParams.filterOptions &&\n columnDef.filterParams.filterOptions.length === 1 &&\n columnDef.filterParams.filterOptions[0] === 'inRange') {\n this.eFloatingFilterInput.setDisabled(true);\n }\n };\n TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {\n var _this = this;\n var value = this.eFloatingFilterInput.getValue();\n var enterKeyPressed = isKeyPressed(e, Constants.KEY_ENTER);\n if (this.applyActive && !enterKeyPressed) {\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var simpleFilter = filterInstance;\n simpleFilter.onFloatingFilterChanged(_this.getLastType(), value);\n }\n });\n };\n TextInputFloatingFilter.prototype.setEditable = function (editable) {\n this.eFloatingFilterInput.setDisabled(!editable);\n };\n __decorate$y([\n RefSelector('eFloatingFilterInput')\n ], TextInputFloatingFilter.prototype, \"eFloatingFilterInput\", void 0);\n __decorate$y([\n PostConstruct\n ], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n return TextInputFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$v = (undefined && undefined.__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})();\nvar NumberFloatingFilter = /** @class */ (function (_super) {\n __extends$v(NumberFloatingFilter, _super);\n function NumberFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFloatingFilter.prototype.conditionToString = function (condition) {\n var isRange = condition.type == SimpleFilter.IN_RANGE;\n if (isRange) {\n return condition.filter + \"-\" + condition.filterTo;\n }\n // cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n return \"\" + condition.type;\n };\n return NumberFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$w = (undefined && undefined.__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})();\nvar TextFloatingFilter = /** @class */ (function (_super) {\n __extends$w(TextFloatingFilter, _super);\n function TextFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilter.prototype.conditionToString = function (condition) {\n // it's not possible to have 'in range' for string, so no need to check for it.\n // also cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n else {\n return \"\" + condition.type;\n }\n };\n TextFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n return TextFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RegisteredComponentSource;\n(function (RegisteredComponentSource) {\n RegisteredComponentSource[RegisteredComponentSource[\"DEFAULT\"] = 0] = \"DEFAULT\";\n RegisteredComponentSource[RegisteredComponentSource[\"REGISTERED\"] = 1] = \"REGISTERED\";\n})(RegisteredComponentSource || (RegisteredComponentSource = {}));\nvar UserComponentRegistry = /** @class */ (function () {\n function UserComponentRegistry() {\n this.agGridDefaults = {\n //date\n agDateInput: DefaultDateComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n //floating filters\n agTextColumnFloatingFilter: TextFloatingFilter,\n agNumberColumnFloatingFilter: NumberFloatingFilter,\n agDateColumnFloatingFilter: DateFloatingFilter,\n // renderers\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n agGroupCellRenderer: GroupCellRenderer,\n agGroupRowRenderer: GroupCellRenderer,\n agLoadingCellRenderer: LoadingCellRenderer,\n //editors\n agCellEditor: TextCellEditor,\n agTextCellEditor: TextCellEditor,\n agSelectCellEditor: SelectCellEditor,\n agPopupTextCellEditor: PopupTextCellEditor,\n agPopupSelectCellEditor: PopupSelectCellEditor,\n agLargeTextCellEditor: LargeTextCellEditor,\n //filter\n agTextColumnFilter: TextFilter,\n agNumberColumnFilter: NumberFilter,\n agDateColumnFilter: DateFilter,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent$1,\n agNoRowsOverlay: NoRowsOverlayComponent$1,\n // tooltips\n agTooltipComponent: TooltipComponent$1\n };\n this.agDeprecatedNames = {\n set: {\n newComponentName: 'agSetColumnFilter',\n propertyHolder: 'filter'\n },\n text: {\n newComponentName: 'agTextColumnFilter',\n propertyHolder: 'filter'\n },\n number: {\n newComponentName: 'agNumberColumnFilter',\n propertyHolder: 'filter'\n },\n date: {\n newComponentName: 'agDateColumnFilter',\n propertyHolder: 'filter'\n },\n group: {\n newComponentName: 'agGroupCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateShowChange: {\n newComponentName: 'agAnimateShowChangeCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateSlide: {\n newComponentName: 'agAnimateSlideCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n select: {\n newComponentName: 'agSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n largeText: {\n newComponentName: 'agLargeTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupSelect: {\n newComponentName: 'agPopupSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupText: {\n newComponentName: 'agPopupTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n richSelect: {\n newComponentName: 'agRichSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n headerComponent: {\n newComponentName: 'agColumnHeader',\n propertyHolder: 'headerComponent'\n }\n };\n this.jsComponents = {};\n this.frameworkComponents = {};\n }\n UserComponentRegistry.prototype.init = function () {\n var _this = this;\n if (this.gridOptions.components != null) {\n Object.keys(this.gridOptions.components).forEach(function (it) {\n _this.registerComponent(it, _this.gridOptions.components[it]);\n });\n }\n if (this.gridOptions.frameworkComponents != null) {\n Object.keys(this.gridOptions.frameworkComponents).forEach(function (it) {\n _this.registerFwComponent(it, _this.gridOptions.frameworkComponents[it]);\n });\n }\n };\n UserComponentRegistry.prototype.registerDefaultComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.agGridDefaults[name]) {\n console.error(\"Trying to overwrite a default component. You should call registerComponent\");\n return;\n }\n this.agGridDefaults[name] = component;\n };\n UserComponentRegistry.prototype.registerComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.frameworkComponents[name]) {\n console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n return;\n }\n this.jsComponents[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.registerFwComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.jsComponents[name]) {\n console.error(\"Trying to register a component that you have already registered for plain javascript: \" + name);\n return;\n }\n this.frameworkComponents[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.retrieve = function (rawName) {\n var name = this.translateIfDeprecated(rawName);\n if (this.frameworkComponents[name]) {\n return {\n componentFromFramework: true,\n component: this.frameworkComponents[name],\n source: RegisteredComponentSource.REGISTERED\n };\n }\n if (this.jsComponents[name]) {\n return {\n componentFromFramework: false,\n component: this.jsComponents[name],\n source: RegisteredComponentSource.REGISTERED\n };\n }\n if (this.agGridDefaults[name]) {\n return this.agGridDefaults[name] ?\n {\n componentFromFramework: false,\n component: this.agGridDefaults[name],\n source: RegisteredComponentSource.DEFAULT\n } :\n null;\n }\n if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {\n console.warn(\"ag-Grid: Looking for component [\" + name + \"] but it wasn't found.\");\n }\n return null;\n };\n UserComponentRegistry.prototype.translateIfDeprecated = function (raw) {\n var deprecatedInfo = this.agDeprecatedNames[raw];\n if (deprecatedInfo != null) {\n _.doOnce(function () {\n console.warn(\"ag-grid. Since v15.0 component names have been renamed to be namespaced. You should rename \" + deprecatedInfo.propertyHolder + \":\" + raw + \" to \" + deprecatedInfo.propertyHolder + \":\" + deprecatedInfo.newComponentName);\n }, 'DEPRECATE_COMPONENT_' + raw);\n return deprecatedInfo.newComponentName;\n }\n return raw;\n };\n __decorate$z([\n Autowired('gridOptions')\n ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n __decorate$z([\n Autowired('context')\n ], UserComponentRegistry.prototype, \"context\", void 0);\n __decorate$z([\n PostConstruct\n ], UserComponentRegistry.prototype, \"init\", null);\n UserComponentRegistry = __decorate$z([\n Bean('userComponentRegistry')\n ], UserComponentRegistry);\n return UserComponentRegistry;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// when doing transactions, or change detection, and grouping is present\n// in the data, there is no need for the ClientSideRowModel to update each\n// group after an update, ony parts that were impacted by the change.\n// this class keeps track of all groups that were impacted by a transaction.\n// the the different CSRM operations (filter, sort etc) use the forEach method\n// to visit each group that was changed.\nvar ChangedPath = /** @class */ (function () {\n function ChangedPath(keepingColumns, rootNode) {\n // whether changed path is active of not. it is active when a) doing\n // a transaction update or b) doing change detection. if we are doing\n // a CSRM refresh for other reasons (after sort or filter, or user calling\n // setRowData() without delta mode) then we are not active. we are also\n // marked as not active if secondary columns change in pivot (as this impacts\n // aggregations)\n this.active = true;\n // for each node in the change path, we also store which columns need\n // to be re-aggregated.\n this.nodeIdsToColumns = {};\n // for quick lookup, all items in the change path are mapped by nodeId\n this.mapToItems = {};\n this.keepingColumns = keepingColumns;\n this.pathRoot = {\n rowNode: rootNode,\n children: null\n };\n this.mapToItems[rootNode.id] = this.pathRoot;\n }\n // can be set inactive by:\n // a) ClientSideRowModel, if no transactions or\n // b) PivotService, if secondary columns changed\n ChangedPath.prototype.setInactive = function () {\n this.active = false;\n };\n ChangedPath.prototype.isActive = function () {\n return this.active;\n };\n ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {\n if (pathItem.children) {\n for (var i = 0; i < pathItem.children.length; i++) {\n this.depthFirstSearchChangedPath(pathItem.children[i], callback);\n }\n }\n callback(pathItem.rowNode);\n };\n ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n if (childNode.childrenAfterGroup) {\n this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);\n }\n else if (traverseEverything) {\n callback(childNode);\n }\n }\n }\n callback(rowNode);\n };\n // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n // will be called for child nodes in addition to parent nodes.\n ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes) {\n if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }\n if (this.active) {\n // if we are active, then use the change path to callback\n // only for updated groups\n this.depthFirstSearchChangedPath(this.pathRoot, callback);\n }\n else {\n // we are not active, so callback for everything, walk the entire path\n this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n }\n };\n ChangedPath.prototype.executeFromRootNode = function (callback) {\n callback(this.pathRoot.rowNode);\n };\n ChangedPath.prototype.createPathItems = function (rowNode) {\n var pointer = rowNode;\n var newEntryCount = 0;\n while (!this.mapToItems[pointer.id]) {\n var newEntry = {\n rowNode: pointer,\n children: null\n };\n this.mapToItems[pointer.id] = newEntry;\n newEntryCount++;\n pointer = pointer.parent;\n }\n return newEntryCount;\n };\n ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {\n var _this = this;\n if (!this.keepingColumns || !columns) {\n return;\n }\n var pointer = rowNode;\n while (pointer) {\n // if columns, add the columns in all the way to parent, merging\n // in any other columns that might be there already\n if (!this.nodeIdsToColumns[pointer.id]) {\n this.nodeIdsToColumns[pointer.id] = {};\n }\n columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });\n pointer = pointer.parent;\n }\n };\n ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {\n var pointer = rowNode;\n for (var i = 0; i < newEntryCount; i++) {\n var thisItem = this.mapToItems[pointer.id];\n var parentItem = this.mapToItems[pointer.parent.id];\n if (!parentItem.children) {\n parentItem.children = [];\n }\n parentItem.children.push(thisItem);\n pointer = pointer.parent;\n }\n };\n // called by\n // 1) change detection (provides cols) and\n // 2) groupStage if doing transaction update (doesn't provide cols)\n ChangedPath.prototype.addParentNode = function (rowNode, columns) {\n if (!rowNode || rowNode.isRowPinned()) {\n return;\n }\n // we cannot do both steps below in the same loop as\n // the second loop has a dependency on the first loop.\n // ie the hierarchy cannot be stitched up yet because\n // we don't have it built yet\n // create the new PathItem objects.\n var newEntryCount = this.createPathItems(rowNode);\n // link in the node items\n this.linkPathItems(rowNode, newEntryCount);\n // update columns\n this.populateColumnsMap(rowNode, columns);\n };\n ChangedPath.prototype.canSkip = function (rowNode) {\n return this.active && !this.mapToItems[rowNode.id];\n };\n ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return valueColumns;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });\n return result;\n };\n ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return null;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });\n return result;\n };\n return ChangedPath;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$4 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar SelectionController = /** @class */ (function () {\n function SelectionController() {\n this.events = [];\n }\n SelectionController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('SelectionController');\n this.reset();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.events.push(this.eventService.addEventListener(Events.EVENT_ROW_DATA_CHANGED, this.reset.bind(this)));\n }\n else {\n this.logger.log('dont know what to do here');\n }\n };\n SelectionController.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.events.push(this.eventService.addEventListener(Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this)));\n };\n SelectionController.prototype.destroy = function () {\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n }\n this.events = [];\n };\n SelectionController.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionController.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionController.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n _.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionController.prototype.getSelectedRows = function () {\n var selectedRows = [];\n _.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionController.prototype.removeGroupsFromSelection = function () {\n var _this = this;\n _.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.group) {\n _this.selectedNodes[rowNode.id] = undefined;\n }\n });\n };\n // should only be called if groupSelectsChildren=true\n SelectionController.prototype.updateGroupsFromChildrenSelections = function (changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {\n return;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n return;\n }\n var clientSideRowModel = this.rowModel;\n var rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n if (rowNode !== rootNode) {\n rowNode.calculateSelectedFromChildren();\n }\n });\n // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {\n // rowNode.depthFirstSearch((node) => {\n // if (node.group) {\n // }\n // });\n // });\n };\n SelectionController.prototype.getNodeForIdIfSelected = function (id) {\n return this.selectedNodes[id];\n };\n SelectionController.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n _.iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true\n });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n _.iterateObject(groupsToRefresh, function (key, group) {\n group.calculateSelectedFromChildren();\n });\n return updatedCount;\n };\n SelectionController.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n this.selectedNodes[rowNode.id] = undefined;\n }\n };\n SelectionController.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionController.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = _.exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId) {\n var oldNodeSelected = _.exists(this.selectedNodes[oldNode.id]);\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionController.prototype.syncInNewRowNode = function (rowNode) {\n if (_.exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionController.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionController.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.warn('getBestCostNodeSelection is only available when using normal row model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n console.warn('selectAll not available doing rowModel=virtual');\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n if (node.group && node.children) {\n traverse(node.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionController.prototype.setRowModel = function (rowModel) {\n this.rowModel = rowModel;\n };\n SelectionController.prototype.isEmpty = function () {\n var count = 0;\n _.iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionController.prototype.deselectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n var rowModelClientSide = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (justFiltered) {\n if (!rowModelClientSide) {\n console.error('ag-Grid: selecting just filtered only works with In Memory Row Model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n _.iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionController.prototype.selectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n throw new Error(\"selectAll only available with normal row model, ie not \" + this.rowModel.getType());\n }\n var clientSideRowModel = this.rowModel;\n var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n clientSideRowModel.forEachNode(callback);\n }\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectNode = function (rowNode, tryMulti) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectIndex = function (rowIndex) {\n var node = this.rowModel.getRow(rowIndex);\n this.deselectNode(node);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.deselectNode = function (rowNode) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionController.prototype.selectIndex = function (index, tryMulti) {\n var node = this.rowModel.getRow(index);\n this.selectNode(node, tryMulti);\n };\n __decorate$A([\n Autowired('eventService')\n ], SelectionController.prototype, \"eventService\", void 0);\n __decorate$A([\n Autowired('rowModel')\n ], SelectionController.prototype, \"rowModel\", void 0);\n __decorate$A([\n Autowired('gridOptionsWrapper')\n ], SelectionController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$A([\n Autowired('columnApi')\n ], SelectionController.prototype, \"columnApi\", void 0);\n __decorate$A([\n Autowired('gridApi')\n ], SelectionController.prototype, \"gridApi\", void 0);\n __decorate$A([\n __param$4(0, Qualifier('loggerFactory'))\n ], SelectionController.prototype, \"setBeans\", null);\n __decorate$A([\n PostConstruct\n ], SelectionController.prototype, \"init\", null);\n __decorate$A([\n PreDestroy\n ], SelectionController.prototype, \"destroy\", null);\n SelectionController = __decorate$A([\n Bean('selectionController')\n ], SelectionController);\n return SelectionController;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnApi = /** @class */ (function () {\n function ColumnApi() {\n }\n ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {\n // AG-3403 validate that gridWidth is provided because this method has the same name as\n // a method on the grid API that takes no arguments, and it's easy to confuse the two\n if (typeof gridWidth === \"undefined\") {\n console.error('ag-Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');\n }\n this.columnController.sizeColumnsToFit(gridWidth, 'api');\n };\n ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnController.setColumnGroupOpened(group, newValue, 'api'); };\n ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnController.getColumnGroup(name, instanceId); };\n ColumnApi.prototype.getOriginalColumnGroup = function (name) { return this.columnController.getOriginalColumnGroup(name); };\n ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnController.getDisplayNameForColumn(column, location) || ''; };\n ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnController.getDisplayNameForColumnGroup(columnGroup, location) || ''; };\n ColumnApi.prototype.getColumn = function (key) { return this.columnController.getPrimaryColumn(key); };\n ColumnApi.prototype.setColumnState = function (columnState) { return this.columnController.setColumnState(columnState, false, 'api'); };\n ColumnApi.prototype.getColumnState = function () { return this.columnController.getColumnState(); };\n ColumnApi.prototype.resetColumnState = function () { this.columnController.resetColumnState(false, 'api'); };\n ColumnApi.prototype.getColumnGroupState = function () { return this.columnController.getColumnGroupState(); };\n ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnController.setColumnGroupState(stateItems, 'api'); };\n ColumnApi.prototype.resetColumnGroupState = function () { this.columnController.resetColumnGroupState('api'); };\n ColumnApi.prototype.isPinning = function () { return this.columnController.isPinningLeft() || this.columnController.isPinningRight(); };\n ColumnApi.prototype.isPinningLeft = function () { return this.columnController.isPinningLeft(); };\n ColumnApi.prototype.isPinningRight = function () { return this.columnController.isPinningRight(); };\n ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnController.getDisplayedColAfter(col); };\n ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnController.getDisplayedColBefore(col); };\n ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnController.setColumnVisible(key, visible, 'api'); };\n ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnController.setColumnsVisible(keys, visible, 'api'); };\n ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnController.setColumnPinned(key, pinned, 'api'); };\n ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnController.setColumnsPinned(keys, pinned, 'api'); };\n ColumnApi.prototype.getAllColumns = function () { return this.columnController.getAllPrimaryColumns(); };\n ColumnApi.prototype.getAllGridColumns = function () { return this.columnController.getAllGridColumns(); };\n ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnController.getDisplayedLeftColumns(); };\n ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnController.getDisplayedCenterColumns(); };\n ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnController.getDisplayedRightColumns(); };\n ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnController.getAllDisplayedColumns(); };\n ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnController.getAllDisplayedVirtualColumns(); };\n ColumnApi.prototype.moveColumn = function (key, toIndex) {\n if (typeof key === 'number') {\n // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name\n console.warn('ag-Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead');\n this.columnController.moveColumnByIndex(key, toIndex, 'api');\n }\n else {\n this.columnController.moveColumn(key, toIndex, 'api');\n }\n };\n ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnController.moveColumnByIndex(fromIndex, toIndex, 'api'); };\n ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnController.moveColumns(columnsToMoveKeys, toIndex, 'api'); };\n ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnController.moveRowGroupColumn(fromIndex, toIndex); };\n ColumnApi.prototype.setColumnAggFunc = function (column, aggFunc) { this.columnController.setColumnAggFunc(column, aggFunc); };\n ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished) {\n if (finished === void 0) { finished = true; }\n this.columnController.setColumnWidths([{ key: key, newWidth: newWidth }], false, finished);\n };\n ColumnApi.prototype.setColumnWidths = function (columnWidths, finished) {\n if (finished === void 0) { finished = true; }\n this.columnController.setColumnWidths(columnWidths, false, finished);\n };\n ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnController.setPivotMode(pivotMode); };\n ColumnApi.prototype.isPivotMode = function () { return this.columnController.isPivotMode(); };\n ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) { return this.columnController.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnController.setValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.getValueColumns = function () { return this.columnController.getValueColumns(); };\n ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnController.removeValueColumn(colKey, 'api'); };\n ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnController.removeValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.addValueColumn = function (colKey) { this.columnController.addValueColumn(colKey, 'api'); };\n ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnController.addValueColumns(colKeys, 'api'); };\n ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnController.setRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnController.removeRowGroupColumn(colKey, 'api'); };\n ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnController.removeRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnController.addRowGroupColumn(colKey, 'api'); };\n ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnController.addRowGroupColumns(colKeys, 'api'); };\n ColumnApi.prototype.getRowGroupColumns = function () { return this.columnController.getRowGroupColumns(); };\n ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnController.setPivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnController.removePivotColumn(colKey, 'api'); };\n ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnController.removePivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnController.addPivotColumn(colKey, 'api'); };\n ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnController.addPivotColumns(colKeys, 'api'); };\n ColumnApi.prototype.getPivotColumns = function () { return this.columnController.getPivotColumns(); };\n ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnController.getLeftDisplayedColumnGroups(); };\n ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnController.getCenterDisplayedColumnGroups(); };\n ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnController.getRightDisplayedColumnGroups(); };\n ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnController.getAllDisplayedColumnGroups(); };\n ColumnApi.prototype.autoSizeColumn = function (key, skipHeader) { return this.columnController.autoSizeColumn(key, skipHeader, 'api'); };\n ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) { return this.columnController.autoSizeColumns(keys, skipHeader, 'api'); };\n ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnController.autoSizeAllColumns(skipHeader, 'api'); };\n ColumnApi.prototype.setSecondaryColumns = function (colDefs) { this.columnController.setSecondaryColumns(colDefs, 'api'); };\n ColumnApi.prototype.getSecondaryColumns = function () { return this.columnController.getSecondaryColumns(); };\n ColumnApi.prototype.getPrimaryColumns = function () { return this.columnController.getAllPrimaryColumns(); };\n // below goes through deprecated items, prints message to user, then calls the new version of the same method\n ColumnApi.prototype.columnGroupOpened = function (group, newValue) {\n console.error('ag-Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');\n this.setColumnGroupOpened(group, newValue);\n };\n ColumnApi.prototype.hideColumns = function (colIds, hide) {\n console.error('ag-Grid: hideColumns is deprecated, use setColumnsVisible');\n this.columnController.setColumnsVisible(colIds, !hide, 'api');\n };\n ColumnApi.prototype.hideColumn = function (colId, hide) {\n console.error('ag-Grid: hideColumn is deprecated, use setColumnVisible');\n this.columnController.setColumnVisible(colId, !hide, 'api');\n };\n ColumnApi.prototype.setState = function (columnState) {\n console.error('ag-Grid: setState is deprecated, use setColumnState');\n return this.setColumnState(columnState);\n };\n ColumnApi.prototype.getState = function () {\n console.error('ag-Grid: getState is deprecated, use getColumnState');\n return this.getColumnState();\n };\n ColumnApi.prototype.resetState = function () {\n console.error('ag-Grid: resetState is deprecated, use resetColumnState');\n this.resetColumnState();\n };\n ColumnApi.prototype.getAggregationColumns = function () {\n console.error('ag-Grid: getAggregationColumns is deprecated, use getValueColumns');\n return this.columnController.getValueColumns();\n };\n ColumnApi.prototype.removeAggregationColumn = function (colKey) {\n console.error('ag-Grid: removeAggregationColumn is deprecated, use removeValueColumn');\n this.columnController.removeValueColumn(colKey, 'api');\n };\n ColumnApi.prototype.removeAggregationColumns = function (colKeys) {\n console.error('ag-Grid: removeAggregationColumns is deprecated, use removeValueColumns');\n this.columnController.removeValueColumns(colKeys, 'api');\n };\n ColumnApi.prototype.addAggregationColumn = function (colKey) {\n console.error('ag-Grid: addAggregationColumn is deprecated, use addValueColumn');\n this.columnController.addValueColumn(colKey, 'api');\n };\n ColumnApi.prototype.addAggregationColumns = function (colKeys) {\n console.error('ag-Grid: addAggregationColumns is deprecated, use addValueColumns');\n this.columnController.addValueColumns(colKeys, 'api');\n };\n ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {\n console.error('ag-Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');\n this.columnController.setColumnAggFunc(column, aggFunc, 'api');\n };\n ColumnApi.prototype.getDisplayNameForCol = function (column) {\n console.error('ag-Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');\n return this.getDisplayNameForColumn(column, null);\n };\n __decorate$B([\n Autowired('columnController')\n ], ColumnApi.prototype, \"columnController\", void 0);\n ColumnApi = __decorate$B([\n Bean('columnApi')\n ], ColumnApi);\n return ColumnApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(exports.CellRangeType || (exports.CellRangeType = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n DragSourceType[DragSourceType[\"ChartPanel\"] = 3] = \"ChartPanel\";\n})(exports.DragSourceType || (exports.DragSourceType = {}));\n(function (VerticalDirection) {\n VerticalDirection[VerticalDirection[\"Up\"] = 0] = \"Up\";\n VerticalDirection[VerticalDirection[\"Down\"] = 1] = \"Down\";\n})(exports.VerticalDirection || (exports.VerticalDirection = {}));\n(function (HorizontalDirection) {\n HorizontalDirection[HorizontalDirection[\"Left\"] = 0] = \"Left\";\n HorizontalDirection[HorizontalDirection[\"Right\"] = 1] = \"Right\";\n})(exports.HorizontalDirection || (exports.HorizontalDirection = {}));\nvar DragAndDropService = /** @class */ (function () {\n function DragAndDropService() {\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = _.createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.eHideIcon = _.createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = _.createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = _.createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = _.createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = _.createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = _.createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = _.createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = _.createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = _.find(this.dragSourceAndParamsList, function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n _.removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.destroy = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.getDragItem();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.onDragStarted) {\n this.dragSource.onDragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.onDragStopped) {\n this.dragSource.onDragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var hDirection = this.getHorizontalDirection(mouseEvent);\n var vDirection = this.getVerticalDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var dropTarget = _.find(this.dropTargets, this.isMouseOnDropTarget.bind(this, mouseEvent));\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget && dropTarget.onDragging) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n if (dropTarget.onDragEnter) {\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n }\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n if (this.lastDropTarget.onDragLeave) {\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n }\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var containers = [dropTarget.getContainer()];\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n if (secondaryContainers) {\n containers = containers.concat(secondaryContainers);\n }\n return containers;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var mouseOverTarget = false;\n this.getAllContainersFromDropTarget(dropTarget)\n .filter(function (eContainer) { return eContainer; }) // secondary can be missing\n .forEach(function (eContainer) {\n var rect = eContainer.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX <= rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n if (horizontalFit && verticalFit) {\n mouseOverTarget = true;\n }\n });\n return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type);\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.removeDropTarget = function (dropTarget) {\n this.dropTargets = this.dropTargets.filter(function (target) { return target.getContainer() !== dropTarget.getContainer(); });\n };\n DragAndDropService.prototype.hasExternalDropZones = function () {\n return this.dropTargets.some(function (zones) { return zones.external; });\n };\n DragAndDropService.prototype.findExternalZone = function (params) {\n var externalTargets = this.dropTargets.filter(function (target) { return target.external; });\n return _.find(externalTargets, function (zone) { return zone.getContainer() === params.getContainer(); });\n };\n DragAndDropService.prototype.getHorizontalDirection = function (event) {\n var clientX = this.eventLastTime.clientX;\n var eClientX = event.clientX;\n if (clientX === eClientX) {\n return null;\n }\n return clientX > eClientX ? exports.HorizontalDirection.Left : exports.HorizontalDirection.Right;\n };\n DragAndDropService.prototype.getVerticalDirection = function (event) {\n var clientY = this.eventLastTime.clientY;\n var eClientY = event.clientY;\n if (clientY === eClientY) {\n return null;\n }\n return clientY > eClientY ? exports.VerticalDirection.Up : exports.VerticalDirection.Down;\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target\n var dropZoneTarget = dropTarget.getContainer();\n var rect = dropZoneTarget.getBoundingClientRect();\n var _a = this, api = _a.gridApi, columnApi = _a.columnApi, dragItem = _a.dragItem, dragSource = _a.dragSource;\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n return { event: event, x: x, y: y, vDirection: vDirection, hDirection: hDirection, dragSource: dragSource, fromNudge: fromNudge, dragItem: dragItem, api: api, columnApi: columnApi, dropZoneTarget: dropZoneTarget };\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghost = this.eGhost;\n var ghostRect = ghost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = _.getBodyWidth() - 2;\n var browserHeight = _.getBodyHeight() - 2;\n var top = event.pageY - (ghostHeight / 2);\n var left = event.pageX - 10;\n var usrDocument = this.gridOptionsWrapper.getDocument();\n var windowScrollY = window.pageYOffset || usrDocument.documentElement.scrollTop;\n var windowScrollX = window.pageXOffset || usrDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0 && ((left + ghost.clientWidth) > (browserWidth + windowScrollX))) {\n left = browserWidth + windowScrollX - ghost.clientWidth;\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0 && ((top + ghost.clientHeight) > (browserHeight + windowScrollY))) {\n top = browserHeight + windowScrollY - ghost.clientHeight;\n }\n if (top < 0) {\n top = 0;\n }\n ghost.style.left = left + \"px\";\n ghost.style.top = top + \"px\";\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = _.loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n var theme = this.environment.getTheme().theme;\n if (theme) {\n _.addCssClass(this.eGhost, theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n var dragItemName = this.dragSource.dragItemName;\n if (_.isFunction(dragItemName)) {\n dragItemName = dragItemName();\n }\n eText.innerHTML = _.escape(dragItemName);\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var usrDocument = this.gridOptionsWrapper.getDocument();\n this.eGhostParent = usrDocument.querySelector('body');\n if (!this.eGhostParent) {\n console.warn('ag-Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n _.clearElement(this.eGhostIcon);\n var eIcon;\n if (!iconName) {\n iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;\n }\n switch (iconName) {\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n case DragAndDropService_1.ICON_HIDE:\n eIcon = this.eHideIcon;\n break;\n }\n _.addOrRemoveCssClass(this.eGhostIcon, 'ag-shake-left-to-right', shake);\n if (eIcon === this.eHideIcon && this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns()) {\n return;\n }\n if (eIcon) {\n this.eGhostIcon.appendChild(eIcon);\n }\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.ICON_HIDE = 'hide';\n DragAndDropService.GHOST_TEMPLATE = \"
\\n \\n
\\n
\";\n __decorate$C([\n Autowired('gridOptionsWrapper')\n ], DragAndDropService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$C([\n Autowired('dragService')\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate$C([\n Autowired('environment')\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate$C([\n Autowired('columnApi')\n ], DragAndDropService.prototype, \"columnApi\", void 0);\n __decorate$C([\n Autowired('gridApi')\n ], DragAndDropService.prototype, \"gridApi\", void 0);\n __decorate$C([\n PostConstruct\n ], DragAndDropService.prototype, \"init\", null);\n __decorate$C([\n PreDestroy\n ], DragAndDropService.prototype, \"destroy\", null);\n DragAndDropService = DragAndDropService_1 = __decorate$C([\n Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$x = (undefined && undefined.__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})();\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowDragComp = /** @class */ (function (_super) {\n __extends$x(RowDragComp, _super);\n function RowDragComp(rowNode, column, cellValue, beans) {\n var _this = _super.call(this, \"
\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n return _this;\n }\n RowDragComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(_.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkCompatibility();\n var strategy = this.beans.gridOptionsWrapper.isRowDragManaged() ?\n new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :\n new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);\n this.addFeature(strategy, this.beans.context);\n };\n RowDragComp.prototype.getSelectedCount = function () {\n var multiRowEnabled = this.beans.gridOptionsWrapper.isEnableMultiRowDragging();\n if (!multiRowEnabled) {\n return 1;\n }\n var selection = this.beans.selectionController.getSelectedNodes();\n return selection.indexOf(this.rowNode) !== -1 ? selection.length : 1;\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsWrapper.isRowDragManaged();\n var treeData = this.beans.gridOptionsWrapper.isTreeData();\n if (treeData && managed) {\n _.doOnce(function () {\n return console.warn('ag-Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.addDragSource = function () {\n var _this = this;\n var dragItem = {\n rowNode: this.rowNode,\n columns: [this.column],\n defaultTextValue: this.cellValue,\n };\n var rowDragText = this.column.getColDef().rowDragText;\n var dragSource = {\n type: exports.DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: function () {\n var dragItemCount = _this.getSelectedCount();\n if (rowDragText) {\n return rowDragText(dragItem, dragItemCount);\n }\n return dragItemCount === 1 ? _this.cellValue : dragItemCount + \" rows\";\n },\n getDragItem: function () { return dragItem; },\n dragStartPixels: 0\n };\n this.beans.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.beans.dragAndDropService.removeDragSource(dragSource); });\n };\n __decorate$D([\n PostConstruct\n ], RowDragComp.prototype, \"postConstruct\", null);\n return RowDragComp;\n}(Component));\nvar VisibilityStrategy = /** @class */ (function (_super) {\n __extends$x(VisibilityStrategy, _super);\n function VisibilityStrategy(parent, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.column = column;\n _this.rowNode = rowNode;\n return _this;\n }\n VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {\n if (neverDisplayed) {\n this.parent.setDisplayed(false);\n }\n else {\n var shown = this.column.isRowDrag(this.rowNode);\n var isShownSometimes = _.isFunction(this.column.getColDef().rowDrag);\n // if shown sometimes, them some rows can have drag handle while other don't,\n // so we use setVisible to keep the handles horizontally aligned (as setVisible\n // keeps the empty space, whereas setDisplayed looses the space)\n if (isShownSometimes) {\n this.parent.setDisplayed(true);\n this.parent.setVisible(shown);\n }\n else {\n this.parent.setDisplayed(shown);\n }\n }\n };\n return VisibilityStrategy;\n}(BeanStub));\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends$x(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var neverDisplayed = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate$D([\n PostConstruct\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(VisibilityStrategy));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends$x(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addDestroyableEventListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var rowDragFeature = this.beans.gridPanel.getRowDragFeature();\n var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();\n var neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate$D([\n PostConstruct\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(VisibilityStrategy));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$y = (undefined && undefined.__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})();\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PopupEditorWrapper = /** @class */ (function (_super) {\n __extends$y(PopupEditorWrapper, _super);\n function PopupEditorWrapper(cellEditor) {\n var _this = _super.call(this, \"
\") || this;\n _this.getGuiCalledOnChild = false;\n _this.cellEditor = cellEditor;\n return _this;\n }\n PopupEditorWrapper.prototype.onKeyDown = function (event) {\n if (!_.isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, event, this.params.node, this.params.column, true)) {\n this.params.onKeyDown(event);\n }\n };\n PopupEditorWrapper.prototype.getGui = function () {\n // we call getGui() on child here (rather than in the constructor)\n // as we should wait for 'init' to be called on child first.\n if (!this.getGuiCalledOnChild) {\n this.appendChild(this.cellEditor.getGui());\n this.getGuiCalledOnChild = true;\n }\n return _super.prototype.getGui.call(this);\n };\n PopupEditorWrapper.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.gridOptionsWrapper.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n this.addDestroyFunc(function () {\n if (_this.cellEditor.destroy) {\n _this.cellEditor.destroy();\n }\n });\n this.addDestroyableEventListener(\n // this needs to be 'super' and not 'this' as if we call 'this',\n // it ends up called 'getGui()' on the child before 'init' was called,\n // which is not good\n _super.prototype.getGui.call(this), 'keydown', this.onKeyDown.bind(this));\n };\n PopupEditorWrapper.prototype.afterGuiAttached = function () {\n if (this.cellEditor.afterGuiAttached) {\n this.cellEditor.afterGuiAttached();\n }\n };\n PopupEditorWrapper.prototype.getValue = function () {\n return this.cellEditor.getValue();\n };\n PopupEditorWrapper.prototype.isCancelBeforeStart = function () {\n if (this.cellEditor.isCancelBeforeStart) {\n return this.cellEditor.isCancelBeforeStart();\n }\n };\n PopupEditorWrapper.prototype.isCancelAfterEnd = function () {\n if (this.cellEditor.isCancelAfterEnd) {\n return this.cellEditor.isCancelAfterEnd();\n }\n };\n PopupEditorWrapper.prototype.getPopupPosition = function () {\n if (this.cellEditor.getPopupPosition) {\n return this.cellEditor.getPopupPosition();\n }\n };\n PopupEditorWrapper.prototype.focusIn = function () {\n if (this.cellEditor.focusIn) {\n this.cellEditor.focusIn();\n }\n };\n PopupEditorWrapper.prototype.focusOut = function () {\n if (this.cellEditor.focusOut) {\n this.cellEditor.focusOut();\n }\n };\n PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n __decorate$E([\n Autowired('gridOptionsWrapper')\n ], PopupEditorWrapper.prototype, \"gridOptionsWrapper\", void 0);\n return PopupEditorWrapper;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$z = (undefined && undefined.__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})();\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DndSourceComp = /** @class */ (function (_super) {\n __extends$z(DndSourceComp, _super);\n function DndSourceComp(rowNode, column, cellValue, beans, eCell) {\n var _this = _super.call(this, \"
\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.cellValue = cellValue;\n _this.beans = beans;\n _this.eCell = eCell;\n return _this;\n }\n DndSourceComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(_.createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n this.checkVisibility();\n };\n DndSourceComp.prototype.addDragSource = function () {\n this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n };\n DndSourceComp.prototype.onDragStart = function (dragEvent) {\n var _this = this;\n var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;\n var isIE = _.isBrowserIE();\n if (!isIE) {\n dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);\n }\n // default behaviour is to convert data to json and set into drag component\n var defaultOnRowDrag = function () {\n try {\n var jsonData = JSON.stringify(_this.rowNode.data);\n if (isIE) {\n dragEvent.dataTransfer.setData('text', jsonData);\n }\n else {\n dragEvent.dataTransfer.setData('application/json', jsonData);\n dragEvent.dataTransfer.setData('text/plain', jsonData);\n }\n }\n catch (e) {\n // if we cannot convert the data to json, then we do not set the type\n }\n };\n if (providedOnRowDrag) {\n providedOnRowDrag({ rowNode: this.rowNode, dragEvent: dragEvent });\n }\n else {\n defaultOnRowDrag();\n }\n };\n DndSourceComp.prototype.checkVisibility = function () {\n var visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n };\n __decorate$F([\n PostConstruct\n ], DndSourceComp.prototype, \"postConstruct\", null);\n return DndSourceComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$A = (undefined && undefined.__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})();\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TooltipStates;\n(function (TooltipStates) {\n TooltipStates[TooltipStates[\"NOTHING\"] = 0] = \"NOTHING\";\n TooltipStates[TooltipStates[\"WAITING_TO_SHOW\"] = 1] = \"WAITING_TO_SHOW\";\n TooltipStates[TooltipStates[\"SHOWING\"] = 2] = \"SHOWING\";\n})(TooltipStates || (TooltipStates = {}));\nvar TooltipFeature = /** @class */ (function (_super) {\n __extends$A(TooltipFeature, _super);\n function TooltipFeature(parentComp, location) {\n var _this = _super.call(this) || this;\n _this.DEFAULT_HIDE_TOOLTIP_TIMEOUT = 10000;\n _this.SHOW_QUICK_TOOLTIP_DIFF = 1000;\n _this.FADE_OUT_TOOLTIP_TIMEOUT = 1000;\n _this.state = TooltipStates.NOTHING;\n // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n // async we could request two tooltips before the first instance returns, in which case we should\n // disregard the second instance.\n _this.tooltipInstanceCount = 0;\n _this.tooltipMouseTrack = false;\n _this.parentComp = parentComp;\n _this.location = location;\n return _this;\n }\n TooltipFeature.prototype.postConstruct = function () {\n this.tooltipShowDelay = this.gridOptionsWrapper.getTooltipShowDelay() || 2000;\n this.tooltipMouseTrack = this.gridOptionsWrapper.isTooltipMouseTrack();\n var el = this.parentComp.getGui();\n this.addDestroyableEventListener(el, 'mouseenter', this.onMouseEnter.bind(this));\n this.addDestroyableEventListener(el, 'mouseleave', this.onMouseLeave.bind(this));\n this.addDestroyableEventListener(el, 'mousemove', this.onMouseMove.bind(this));\n this.addDestroyableEventListener(el, 'mousedown', this.onMouseDown.bind(this));\n };\n TooltipFeature.prototype.destroy = function () {\n // if this component gets destroyed while tooltip is showing, need to make sure\n // we don't end with no mouseLeave event resulting in zombie tooltip\n this.setToDoNothing();\n _super.prototype.destroy.call(this);\n };\n TooltipFeature.prototype.onMouseEnter = function (e) {\n // if another tooltip was hidden very recently, we only wait 200ms to show, not the normal waiting time\n var delay = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;\n this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n this.lastMouseEvent = e;\n this.state = TooltipStates.WAITING_TO_SHOW;\n };\n TooltipFeature.prototype.onMouseLeave = function () {\n this.setToDoNothing();\n };\n TooltipFeature.prototype.setToDoNothing = function () {\n if (this.state === TooltipStates.SHOWING) {\n this.hideTooltip();\n }\n this.clearTimeouts();\n this.state = TooltipStates.NOTHING;\n };\n TooltipFeature.prototype.onMouseMove = function (e) {\n // there is a delay from the time we mouseOver a component and the time the\n // tooltip is displayed, so we need to track mousemove to be able to correctly\n // position the tooltip when showTooltip is called.\n this.lastMouseEvent = e;\n if (this.tooltipMouseTrack &&\n this.state === TooltipStates.SHOWING &&\n this.tooltipComp) {\n this.positionTooltipUnderLastMouseEvent();\n }\n };\n TooltipFeature.prototype.onMouseDown = function () {\n this.setToDoNothing();\n };\n TooltipFeature.prototype.hideTooltip = function () {\n // check if comp exists - due to async, although we asked for\n // one, the instance may not be back yet\n if (this.tooltipComp) {\n this.destroyTooltipComp();\n TooltipFeature.lastTooltipHideTime = new Date().getTime();\n }\n this.state = TooltipStates.NOTHING;\n };\n TooltipFeature.prototype.destroyTooltipComp = function () {\n // add class to fade out the tooltip\n _.addCssClass(this.tooltipComp.getGui(), 'ag-tooltip-hiding');\n // make local copies of these variables, as we use them in the async function below,\n // and we clear then to 'undefined' later, so need to take a copy before they are undefined.\n var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n var tooltipComp = this.tooltipComp;\n window.setTimeout(function () {\n tooltipPopupDestroyFunc();\n if (tooltipComp.destroy) {\n tooltipComp.destroy();\n }\n }, this.FADE_OUT_TOOLTIP_TIMEOUT);\n this.tooltipPopupDestroyFunc = undefined;\n this.tooltipComp = undefined;\n };\n TooltipFeature.prototype.isLastTooltipHiddenRecently = function () {\n // return true if <1000ms since last time we hid a tooltip\n var now = new Date().getTime();\n var then = TooltipFeature.lastTooltipHideTime;\n return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;\n };\n TooltipFeature.prototype.showTooltip = function () {\n var tooltipText = this.parentComp.getTooltipText();\n if (!tooltipText) {\n this.setToDoNothing();\n return;\n }\n this.state = TooltipStates.SHOWING;\n this.tooltipInstanceCount++;\n var params = {\n location: this.location,\n api: this.gridApi,\n columnApi: this.columnApi,\n colDef: this.parentComp.getComponentHolder(),\n column: this.parentComp.getColumn,\n context: this.gridOptionsWrapper.getContext(),\n rowIndex: this.parentComp.getCellPosition && this.parentComp.getCellPosition().rowIndex,\n value: tooltipText\n };\n // we pass in tooltipInstanceCount so the callback knows what the count was when\n // we requested the tooltip, so if another tooltip was requested in the mean time\n // we disregard it\n var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n this.userComponentFactory.newTooltipComponent(params).then(callback);\n };\n TooltipFeature.prototype.newTooltipComponentCallback = function (tooltipInstanceCopy, tooltipComp) {\n var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;\n if (compNoLongerNeeded) {\n if (tooltipComp.destroy) {\n tooltipComp.destroy();\n }\n return;\n }\n var eGui = tooltipComp.getGui();\n this.tooltipComp = tooltipComp;\n if (!_.containsClass(eGui, 'ag-tooltip')) {\n _.addCssClass(eGui, 'ag-tooltip-custom');\n }\n this.tooltipPopupDestroyFunc = this.popupService.addPopup(false, eGui, false);\n this.positionTooltipUnderLastMouseEvent();\n this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.DEFAULT_HIDE_TOOLTIP_TIMEOUT);\n };\n TooltipFeature.prototype.positionTooltipUnderLastMouseEvent = function () {\n this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: this.lastMouseEvent,\n ePopup: this.tooltipComp.getGui(),\n nudgeY: 18\n });\n };\n TooltipFeature.prototype.clearTimeouts = function () {\n if (this.showTooltipTimeoutId) {\n window.clearTimeout(this.showTooltipTimeoutId);\n this.showTooltipTimeoutId = undefined;\n }\n if (this.hideTooltipTimeoutId) {\n window.clearTimeout(this.hideTooltipTimeoutId);\n this.hideTooltipTimeoutId = undefined;\n }\n };\n __decorate$G([\n Autowired('popupService')\n ], TooltipFeature.prototype, \"popupService\", void 0);\n __decorate$G([\n Autowired('userComponentFactory')\n ], TooltipFeature.prototype, \"userComponentFactory\", void 0);\n __decorate$G([\n Autowired('columnApi')\n ], TooltipFeature.prototype, \"columnApi\", void 0);\n __decorate$G([\n Autowired('gridApi')\n ], TooltipFeature.prototype, \"gridApi\", void 0);\n __decorate$G([\n Autowired('gridOptionsWrapper')\n ], TooltipFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$G([\n PostConstruct\n ], TooltipFeature.prototype, \"postConstruct\", null);\n return TooltipFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$B = (undefined && undefined.__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})();\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n __assign$1 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$1.apply(this, arguments);\n};\nvar CellComp = /** @class */ (function (_super) {\n __extends$B(CellComp, _super);\n function CellComp(scope, beans, column, rowNode, rowComp, autoHeightCell, printLayout) {\n var _this = _super.call(this) || this;\n _this.hasChartRange = false;\n _this.editingCell = false;\n _this.suppressRefreshCell = false;\n _this.scope = null;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.cellEditorVersion = 0;\n _this.cellRendererVersion = 0;\n _this.scope = scope;\n _this.beans = beans;\n _this.column = column;\n _this.rowNode = rowNode;\n _this.rowComp = rowComp;\n _this.autoHeightCell = autoHeightCell;\n _this.printLayout = printLayout;\n _this.createGridCellVo();\n _this.rangeSelectionEnabled = _this.beans.rangeController && beans.gridOptionsWrapper.isEnableRangeSelection();\n _this.cellFocused = _this.beans.focusController.isCellFocused(_this.cellPosition);\n _this.firstRightPinned = _this.column.isFirstRightPinned();\n _this.lastLeftPinned = _this.column.isLastLeftPinned();\n if (_this.rangeSelectionEnabled && _this.beans.rangeController) {\n var rangeController = _this.beans.rangeController;\n _this.rangeCount = rangeController.getCellRangeCount(_this.cellPosition);\n _this.hasChartRange = _this.getHasChartRange();\n }\n _this.getValueAndFormat();\n _this.setUsingWrapper();\n _this.chooseCellRenderer();\n _this.setupColSpan();\n _this.rowSpan = _this.column.getRowSpan(_this.rowNode);\n return _this;\n }\n CellComp.prototype.getCreateTemplate = function () {\n var unselectable = !this.beans.gridOptionsWrapper.isEnableCellTextSelection() ? 'unselectable=\"on\"' : '';\n var templateParts = [];\n var col = this.column;\n var width = this.getCellWidth();\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n var valueToRender = this.getInitialValueToRender();\n var valueSanitised = _.get(this.column, 'colDef.template', null) ? valueToRender : _.escape(valueToRender);\n this.tooltip = this.getToolTip();\n var tooltipSanitised = _.escape(this.tooltip);\n var colIdSanitised = _.escape(col.getId());\n var wrapperStartTemplate = '';\n var wrapperEndTemplate = '';\n var stylesFromColDef = this.preProcessStylesFromColDef();\n var cssClasses = this.getInitialCssClasses();\n var stylesForRowSpanning = this.getStylesForRowSpanning();\n var colIdxSanitised = _.escape(this.getAriaColumnIndex());\n if (this.usingWrapper) {\n wrapperStartTemplate = \"
\\n \";\n wrapperEndTemplate = '
';\n }\n templateParts.push(\"\");\n templateParts.push(wrapperStartTemplate);\n if (_.exists(valueSanitised, true)) {\n templateParts.push(valueSanitised);\n }\n templateParts.push(wrapperEndTemplate);\n templateParts.push(\"
\");\n return templateParts.join('');\n };\n CellComp.prototype.getStylesForRowSpanning = function () {\n if (this.rowSpan === 1) {\n return '';\n }\n var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n return \"height: \" + totalRowHeight + \"px; z-index: 1;\";\n };\n CellComp.prototype.afterAttached = function () {\n var querySelector = \"[comp-id=\\\"\" + this.getCompId() + \"\\\"]\";\n var eGui = this.eParentRow.querySelector(querySelector);\n this.setGui(eGui);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n this.addDomData();\n this.populateTemplate();\n this.createCellRendererInstance(true);\n this.angular1Compile();\n this.refreshHandle();\n if (_.exists(this.tooltip) && !this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.addFeature(new TooltipFeature(this, 'cell'), this.beans.context);\n }\n };\n CellComp.prototype.onColumnHover = function () {\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n CellComp.prototype.onCellChanged = function (event) {\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n CellComp.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n mostLeftCol = _.last(this.colsSpanning);\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellComp.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n CellComp.prototype.onFlashCells = function (event) {\n var cellId = this.beans.cellPositionUtils.createId(this.cellPosition);\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellComp.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (_.missing(this.getComponentHolder().colSpan)) {\n return;\n }\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addDestroyableEventListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n this.colsSpanning = this.getColSpanningList();\n };\n CellComp.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnController.getDisplayedColAfter(pointer);\n if (!pointer || _.missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellComp.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!_.areEqual(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellComp.prototype.getAriaColumnIndex = function () {\n var allColumns = this.beans.columnController.getAllDisplayedColumns();\n return (allColumns.indexOf(this.column) + 1).toString();\n };\n CellComp.prototype.refreshAriaIndex = function () {\n var colIdx = this.getAriaColumnIndex();\n var el = this.usingWrapper ? this.eCellValue : this.getGui();\n el.setAttribute('aria-colindex', colIdx);\n };\n CellComp.prototype.getInitialCssClasses = function () {\n var cssClasses = [\"ag-cell\", \"ag-cell-not-inline-editing\"];\n // if we are putting the cell into a dummy container, to work out it's height,\n // then we don't put the height css in, as we want cell to fit height in that case.\n if (!this.autoHeightCell) {\n cssClasses.push('ag-cell-auto-height');\n }\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss && this.cellFocused) {\n // otherwise the class depends on the focus state\n cssClasses.push('ag-cell-focus');\n }\n if (this.firstRightPinned) {\n cssClasses.push('ag-cell-first-right-pinned');\n }\n if (this.lastLeftPinned) {\n cssClasses.push('ag-cell-last-left-pinned');\n }\n if (this.beans.columnHoverService.isHovered(this.column)) {\n cssClasses.push('ag-column-hover');\n }\n _.pushAll(cssClasses, this.preProcessClassesFromColDef());\n _.pushAll(cssClasses, this.preProcessCellClassRules());\n _.pushAll(cssClasses, this.getInitialRangeClasses());\n // if using the wrapper, this class goes on the wrapper instead\n if (!this.usingWrapper) {\n cssClasses.push('ag-cell-value');\n }\n return cssClasses;\n };\n CellComp.prototype.getInitialValueToRender = function () {\n // if using a cellRenderer, then render the html from the cell renderer if it exists\n if (this.usingCellRenderer) {\n if (typeof this.cellRendererGui === 'string') {\n return this.cellRendererGui;\n }\n return '';\n }\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n return colDef.template;\n }\n if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n return template || '';\n }\n return this.getValueToUse();\n };\n CellComp.prototype.getRenderedRow = function () {\n return this.rowComp;\n };\n CellComp.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowComp: event dataChanged {animate: update, newData: !update}\n // + rowComp: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellComp.prototype.refreshCell = function (params) {\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell || this.editingCell) {\n return;\n }\n var colDef = this.getComponentHolder();\n var newData = params && params.newData;\n var suppressFlash = (params && params.suppressFlash) || colDef.suppressCellFlash;\n var forceRefresh = params && params.forceRefresh;\n var oldValue = this.value;\n // get latest value without invoking the value formatter as we may not be updating the cell\n this.value = this.getValue();\n // for simple values only (not objects), see if the value is the same, and if it is, skip the refresh.\n // when never allow skipping after an edit, as after editing, we need to put the GUI back to the way\n // if was before the edit.\n var valuesDifferent = !this.valuesAreEqual(oldValue, this.value);\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // now invoke the value formatter as we are going to update cell\n this.valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n var cellRendererRefreshed = newData ? false : this.attemptCellRendererRefresh();\n // we do the replace if not doing refresh, or if refresh was unsuccessful.\n // the refresh can be unsuccessful if we are using a framework (eg ng2 or react) and the framework\n // wrapper has the refresh method, but the underlying component doesn't\n if (!cellRendererRefreshed) {\n this.replaceContentsAfterRefresh();\n }\n // we don't want to flash the cells when processing a filter change, as otherwise the UI would\n // be to busy. see comment in FilterManager with regards processingFilterChange\n var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n var flashCell = !suppressFlash && !processingFilterChange &&\n (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n // need to check rules. note, we ignore colDef classes and styles, these are assumed to be static\n this.postProcessStylesFromColDef();\n this.postProcessClassesFromColDef();\n }\n // we can't readily determine if the data in an angularjs template has changed, so here we just update\n // and recompile (if applicable)\n this.updateAngular1ScopeAndCompile();\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n this.postProcessCellClassRules();\n };\n // user can also call this via API\n CellComp.prototype.flashCell = function () {\n this.animateCell('data-changed');\n };\n CellComp.prototype.animateCell = function (cssName) {\n var fullName = \"ag-cell-\" + cssName;\n var animationFullName = \"ag-cell-\" + cssName + \"-animation\";\n var element = this.getGui();\n // we want to highlight the cells, without any animation\n _.addCssClass(element, fullName);\n _.removeCssClass(element, animationFullName);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n _.removeCssClass(element, fullName);\n _.addCssClass(element, animationFullName);\n window.setTimeout(function () {\n // and then to leave things as we got them, we remove the animation\n _.removeCssClass(element, animationFullName);\n }, 1000);\n }, 500);\n };\n CellComp.prototype.replaceContentsAfterRefresh = function () {\n // otherwise we rip out the cell and replace it\n _.clearElement(this.eParentOfValue);\n // remove old renderer component if it exists\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n }\n this.cellRenderer = null;\n this.cellRendererGui = null;\n // populate\n this.putDataIntoCellAfterRefresh();\n this.updateAngular1ScopeAndCompile();\n };\n CellComp.prototype.updateAngular1ScopeAndCompile = function () {\n if (this.beans.gridOptionsWrapper.isAngularCompileRows() && this.scope) {\n this.scope.data = __assign$1({}, this.rowNode.data);\n this.angular1Compile();\n }\n };\n CellComp.prototype.angular1Compile = function () {\n // if angular compiling, then need to also compile the cell again (angular compiling sucks, please wait...)\n if (this.beans.gridOptionsWrapper.isAngularCompileRows()) {\n var eGui = this.getGui();\n // only compile the node if it hasn't already been done\n // this prevents \"orphaned\" node leaks\n if (!eGui.classList.contains('ng-scope') || eGui.childElementCount === 0) {\n var compiledElement_1 = this.beans.$compile(eGui)(this.scope);\n this.addDestroyFunc(function () { return compiledElement_1.remove(); });\n }\n }\n };\n CellComp.prototype.postProcessStylesFromColDef = function () {\n var stylesToUse = this.processStylesFromColDef();\n if (stylesToUse) {\n _.addStylesToElement(this.getGui(), stylesToUse);\n }\n };\n CellComp.prototype.preProcessStylesFromColDef = function () {\n return _.cssStyleObjectToMarkup(this.processStylesFromColDef());\n };\n CellComp.prototype.processStylesFromColDef = function () {\n var colDef = this.getComponentHolder();\n if (colDef.cellStyle) {\n var cssToUse = void 0;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var cellStyleFunc = colDef.cellStyle;\n cssToUse = cellStyleFunc(cellStyleParams);\n }\n else {\n cssToUse = colDef.cellStyle;\n }\n return cssToUse;\n }\n };\n CellComp.prototype.postProcessClassesFromColDef = function () {\n var _this = this;\n this.processClassesFromColDef(function (className) { return _.addCssClass(_this.getGui(), className); });\n };\n CellComp.prototype.preProcessClassesFromColDef = function () {\n var res = [];\n this.processClassesFromColDef(function (className) { return res.push(className); });\n return res;\n };\n CellComp.prototype.processClassesFromColDef = function (onApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processStaticCellClasses(colDef, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass);\n };\n CellComp.prototype.putDataIntoCellAfterRefresh = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n if (colDef.template) {\n // template is really only used for angular 1 - as people using ng1 are used to providing templates with\n // bindings in it. in ng2, people will hopefully want to provide components, not templates.\n this.eParentOfValue.innerHTML = colDef.template;\n }\n else if (colDef.templateUrl) {\n // likewise for templateUrl - it's for ng1 really - when we move away from ng1, we can take these out.\n // niall was pro angular 1 when writing template and templateUrl, if writing from scratch now, would\n // not do these, but would follow a pattern that was friendly towards components, not templates.\n var template = this.beans.templateService.getTemplate(colDef.templateUrl, this.refreshCell.bind(this, true));\n if (template) {\n this.eParentOfValue.innerHTML = template;\n }\n }\n else {\n // we can switch from using a cell renderer back to the default if a user\n // is using cellRendererSelect\n this.chooseCellRenderer();\n if (this.usingCellRenderer) {\n this.createCellRendererInstance();\n }\n else {\n var valueToUse = this.getValueToUse();\n if (valueToUse != null) {\n this.eParentOfValue.innerHTML = _.escape(valueToUse);\n }\n }\n }\n };\n CellComp.prototype.attemptCellRendererRefresh = function () {\n if (_.missing(this.cellRenderer) || !this.cellRenderer || _.missing(this.cellRenderer.refresh)) {\n return false;\n }\n // if the cell renderer has a refresh method, we call this instead of doing a refresh\n var params = this.createCellRendererParams();\n // take any custom params off of the user\n var finalParams = this.beans.userComponentFactory.createFinalParams(this.getComponentHolder(), this.cellRendererType, params);\n var result = this.cellRenderer.refresh(finalParams);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.refreshToolTip = function () {\n var newTooltip = this.getToolTip();\n if (this.tooltip === newTooltip) {\n return;\n }\n var hasNewTooltip = _.exists(newTooltip);\n if (hasNewTooltip && this.tooltip === newTooltip.toString()) {\n return;\n }\n var hadTooltip = _.exists(this.tooltip);\n this.tooltip = newTooltip;\n if (this.beans.gridOptionsWrapper.isEnableBrowserTooltips()) {\n if (hasNewTooltip) {\n this.eParentOfValue.setAttribute('title', this.tooltip);\n }\n else {\n this.eParentOfValue.removeAttribute('title');\n }\n }\n };\n CellComp.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.getComponentHolder();\n var equalsMethod = colDef ? colDef.equals : null;\n return equalsMethod ? equalsMethod(val1, val2) : val1 === val2;\n };\n CellComp.prototype.getToolTip = function () {\n var colDef = this.getComponentHolder();\n var data = this.rowNode.data;\n if (colDef.tooltipField && _.exists(data)) {\n return _.getValueUsingField(data, colDef.tooltipField, this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter || colDef.tooltip;\n if (valueGetter) {\n return valueGetter({\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n colDef: colDef,\n column: this.getColumn(),\n context: this.beans.gridOptionsWrapper.getContext(),\n value: this.value,\n valueFormatted: this.valueFormatted,\n rowIndex: this.cellPosition.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data\n });\n }\n return null;\n };\n CellComp.prototype.getTooltipText = function (escape) {\n if (escape === void 0) { escape = true; }\n return escape ? _.escape(this.tooltip) : this.tooltip;\n };\n CellComp.prototype.processCellClassRules = function (onApplicableClass, onNotApplicableClass) {\n var colDef = this.getComponentHolder();\n this.beans.stylingService.processClassRules(colDef.cellClassRules, {\n value: this.value,\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.cellPosition.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n CellComp.prototype.postProcessCellClassRules = function () {\n var _this = this;\n this.processCellClassRules(function (className) { return _.addCssClass(_this.getGui(), className); }, function (className) { return _.removeCssClass(_this.getGui(), className); });\n };\n CellComp.prototype.preProcessCellClassRules = function () {\n var res = [];\n this.processCellClassRules(function (className) { return res.push(className); }, function (_) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n // a wrapper is used when we are putting a selection checkbox in the cell with the value\n CellComp.prototype.setUsingWrapper = function () {\n var colDef = this.getComponentHolder();\n // never allow selection or dragging on pinned rows\n if (this.rowNode.rowPinned) {\n this.usingWrapper = false;\n this.includeSelectionComponent = false;\n this.includeRowDraggingComponent = false;\n this.includeDndSourceComponent = false;\n return;\n }\n var cbSelectionIsFunc = typeof colDef.checkboxSelection === 'function';\n var rowDraggableIsFunc = typeof colDef.rowDrag === 'function';\n var dndSourceIsFunc = typeof colDef.dndSource === 'function';\n this.includeSelectionComponent = cbSelectionIsFunc || colDef.checkboxSelection === true;\n this.includeRowDraggingComponent = rowDraggableIsFunc || colDef.rowDrag === true;\n this.includeDndSourceComponent = dndSourceIsFunc || colDef.dndSource === true;\n var enableTextSelection = this.beans.gridOptionsWrapper.isEnableCellTextSelection();\n this.usingWrapper = enableTextSelection || this.includeRowDraggingComponent || this.includeSelectionComponent || this.includeDndSourceComponent;\n };\n CellComp.prototype.chooseCellRenderer = function () {\n // template gets preference, then cellRenderer, then do it ourselves\n var colDef = this.getComponentHolder();\n // templates are for ng1, ideally we wouldn't have these, they are ng1 support\n // inside the core which is bad\n if (colDef.template || colDef.templateUrl) {\n this.usingCellRenderer = false;\n return;\n }\n var params = this.createCellRendererParams();\n var cellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'cellRenderer', params);\n var pinnedRowCellRenderer = this.beans.userComponentFactory.lookupComponentClassDef(colDef, 'pinnedRowCellRenderer', params);\n if (pinnedRowCellRenderer && this.rowNode.rowPinned) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_PINNED;\n this.usingCellRenderer = true;\n }\n else if (cellRenderer) {\n this.cellRendererType = CellComp.CELL_RENDERER_TYPE_NORMAL;\n this.usingCellRenderer = true;\n }\n else {\n this.usingCellRenderer = false;\n }\n };\n CellComp.prototype.createCellRendererInstance = function (useTaskService) {\n var _this = this;\n if (useTaskService === void 0) { useTaskService = false; }\n if (!this.usingCellRenderer) {\n return;\n }\n // never use task service if angularCompileRows=true, as that assume the cell renderers\n // are finished when the row is created. also we never use it if animation frame service\n // is turned off.\n // and lastly we never use it if doing auto-height, as the auto-height service checks the\n // row height directly after the cell is created, it doesn't wait around for the tasks to complete\n var angularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n if (angularCompileRows || suppressAnimationFrame || this.autoHeightCell) {\n useTaskService = false;\n }\n var params = this.createCellRendererParams();\n this.cellRendererVersion++;\n var callback = this.afterCellRendererCreated.bind(this, this.cellRendererVersion);\n var cellRendererTypeNormal = this.cellRendererType === CellComp.CELL_RENDERER_TYPE_NORMAL;\n this.createCellRendererFunc = function () {\n _this.createCellRendererFunc = null;\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise = _this.beans.userComponentFactory.newCellRenderer(_this.getComponentHolder(), params, !cellRendererTypeNormal);\n if (componentPromise) {\n componentPromise.then(callback);\n }\n };\n if (useTaskService) {\n this.beans.taskQueue.createTask(this.createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n this.createCellRendererFunc();\n }\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRenderer) {\n // see if daemon\n if (!this.isAlive() || (cellRendererVersion !== this.cellRendererVersion)) {\n if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (_.missing(this.cellRendererGui)) {\n return;\n }\n // if async components, then it's possible the user started editing since this call was made\n if (!this.editingCell) {\n this.eParentOfValue.appendChild(this.cellRendererGui);\n }\n };\n CellComp.prototype.createCellRendererParams = function () {\n var _this = this;\n return {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: this.getValue.bind(this),\n setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: this.getComponentHolder(),\n column: this.column,\n $scope: this.scope,\n rowIndex: this.cellPosition.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.eParentOfValue,\n // these bits are not documented anywhere, so we could drop them?\n // it was in the olden days to allow user to register for when rendered\n // row was removed (the row comp was removed), however now that the user\n // can provide components for cells, the destroy method gets call when this\n // happens so no longer need to fire event.\n addRowCompListener: this.rowComp ? this.rowComp.addEventListener.bind(this.rowComp) : null,\n addRenderedRowListener: function (eventType, listener) {\n console.warn('ag-Grid: since ag-Grid .v11, params.addRenderedRowListener() is now params.addRowCompListener()');\n if (_this.rowComp) {\n _this.rowComp.addEventListener(eventType, listener);\n }\n }\n };\n };\n CellComp.prototype.formatValue = function (value) {\n var valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, value);\n return valueFormatted != null ? valueFormatted : value;\n };\n CellComp.prototype.getValueToUse = function () {\n return this.valueFormatted != null ? this.valueFormatted : this.value;\n };\n CellComp.prototype.getValueAndFormat = function () {\n this.value = this.getValue();\n this.valueFormatted = this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, this.value);\n };\n CellComp.prototype.getValue = function () {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnController.isPivotMode();\n var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n return this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);\n };\n CellComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellComp.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.getComponentHolder();\n var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellComp.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.getComponentHolder(),\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n type: eventType,\n rowIndex: this.rowNode.rowIndex\n };\n // because we are hacking in $scope for angular 1, we have to de-reference\n if (this.scope) {\n event.$scope = this.scope;\n }\n return event;\n };\n CellComp.prototype.onMouseOut = function (mouseEvent) {\n var cellMouseOutEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellComp.prototype.onMouseOver = function (mouseEvent) {\n var cellMouseOverEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellComp.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.getComponentHolder();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnDoubleClick) {\n this.startRowOrCellEdit();\n }\n };\n // called by rowRenderer when user navigates via tab key\n CellComp.prototype.startRowOrCellEdit = function (keyPress, charPress) {\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.startRowEditing(keyPress, charPress, this);\n }\n else {\n this.startEditingIfEnabled(keyPress, charPress, true);\n }\n };\n CellComp.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellComp.prototype.startEditingIfEnabled = function (keyPress, charPress, cellStartedEdit) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n // don't do it if not editable\n if (!this.isCellEditable()) {\n return;\n }\n // don't do it if already editing\n if (this.editingCell) {\n return;\n }\n this.editingCell = true;\n this.cellEditorVersion++;\n var callback = this.afterCellEditorCreated.bind(this, this.cellEditorVersion);\n var params = this.createCellEditorParams(keyPress, charPress, cellStartedEdit);\n this.createCellEditor(params).then(callback);\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = _.missing(this.cellEditor);\n if (cellEditorAsync && cellStartedEdit) {\n this.focusCell(true);\n }\n };\n CellComp.prototype.createCellEditor = function (params) {\n var _this = this;\n var cellEditorPromise = this.beans.userComponentFactory.newCellEditor(this.column.getColDef(), params);\n return cellEditorPromise.map(function (cellEditor) {\n var isPopup = cellEditor.isPopup && cellEditor.isPopup();\n if (!isPopup) {\n return cellEditor;\n }\n if (_this.beans.gridOptionsWrapper.isFullRowEdit()) {\n console.warn('ag-Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n // if a popup, then we wrap in a popup editor and return the popup\n var popupEditorWrapper = new PopupEditorWrapper(cellEditor);\n _this.beans.context.wireBean(popupEditorWrapper);\n popupEditorWrapper.init(params);\n return popupEditorWrapper;\n });\n };\n CellComp.prototype.afterCellEditorCreated = function (cellEditorVersion, cellEditor) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var versionMismatch = cellEditorVersion !== this.cellEditorVersion;\n if (versionMismatch || !this.editingCell) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n return;\n }\n if (cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart()) {\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"ag-Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n // no getGui, for React guys, see if they attached a react component directly\n if (cellEditor.render) {\n console.warn(\"ag-Grid: we found 'render' on the component, are you trying to set a React renderer but added it as colDef.cellEditor instead of colDef.cellEditorFmk?\");\n }\n if (cellEditor.destroy) {\n cellEditor.destroy();\n }\n this.editingCell = false;\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorInPopup = cellEditor.isPopup !== undefined && cellEditor.isPopup();\n this.setInlineEditingClass();\n if (this.cellEditorInPopup) {\n this.addPopupCellEditor();\n }\n else {\n this.addInCellEditor();\n }\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n var event = this.createEvent(null, Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.prototype.addInCellEditor = function () {\n _.clearElement(this.getGui());\n if (this.cellEditor) {\n this.getGui().appendChild(this.cellEditor.getGui());\n }\n this.angular1Compile();\n };\n CellComp.prototype.addPopupCellEditor = function () {\n var _this = this;\n var ePopupGui = this.cellEditor ? this.cellEditor.getGui() : null;\n var useModelPopup = this.beans.gridOptionsWrapper.isStopEditingWhenGridLosesFocus();\n this.hideEditorPopup = this.beans.popupService.addPopup(useModelPopup, ePopupGui, true, \n // callback for when popup disappears\n function () {\n _this.onPopupEditorClosed();\n });\n var params = {\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n ePopup: ePopupGui,\n keepWithinBounds: true\n };\n var position = this.cellEditor && this.cellEditor.getPopupPosition ? this.cellEditor.getPopupPosition() : 'over';\n if (position === 'under') {\n this.beans.popupService.positionPopupUnderComponent(params);\n }\n else {\n this.beans.popupService.positionPopupOverComponent(params);\n }\n this.angular1Compile();\n };\n CellComp.prototype.onPopupEditorClosed = function () {\n // we only call stopEditing if we are editing, as\n // it's possible the popup called 'stop editing'\n // before this, eg if 'enter key' was pressed on\n // the editor.\n if (this.editingCell) {\n // note: this only happens when use clicks outside of the grid. if use clicks on another\n // cell, then the editing will have already stopped on this cell\n this.stopRowOrCellEdit();\n // we only focus cell again if this cell is still focused. it is possible\n // it is not focused if the user cancelled the edit by clicking on another\n // cell outside of this one\n if (this.beans.focusController.isCellFocused(this.cellPosition)) {\n this.focusCell(true);\n }\n }\n };\n // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n // to allow the text editor full access to the entire cell\n CellComp.prototype.setInlineEditingClass = function () {\n if (!this.isAlive()) {\n return;\n }\n // ag-cell-inline-editing - appears when user is inline editing\n // ag-cell-not-inline-editing - appears when user is no inline editing\n // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)\n // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.\n // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}\n // and {ag-cell-not-inline-editing} showing at the same time.\n var editingInline = this.editingCell && !this.cellEditorInPopup;\n var popupEditorShowing = this.editingCell && this.cellEditorInPopup;\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-inline-editing\", editingInline);\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-not-inline-editing\", !editingInline);\n _.addOrRemoveCssClass(this.getGui(), \"ag-cell-popup-editing\", popupEditorShowing);\n _.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-inline-editing\", editingInline);\n _.addOrRemoveCssClass(this.getGui().parentNode, \"ag-row-not-inline-editing\", !editingInline);\n };\n CellComp.prototype.createCellEditorParams = function (keyPress, charPress, cellStartedEdit) {\n return {\n value: this.getValue(),\n keyPress: keyPress,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.cellPosition.rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsWrapper.getApi(),\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope,\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellComp.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellComp.prototype.parseValue = function (newValue) {\n var colDef = this.getComponentHolder();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.value,\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n var valueParser = colDef.valueParser;\n return _.exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n };\n CellComp.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusController.setFocusedCell(this.cellPosition.rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);\n };\n CellComp.prototype.setFocusInOnEditor = function () {\n if (this.editingCell) {\n if (this.cellEditor && this.cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n this.cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n }\n };\n CellComp.prototype.isEditing = function () {\n return this.editingCell;\n };\n CellComp.prototype.onKeyDown = function (event) {\n var key = event.which || event.keyCode;\n switch (key) {\n case Constants.KEY_ENTER:\n this.onEnterKeyDown();\n break;\n case Constants.KEY_F2:\n this.onF2KeyDown();\n break;\n case Constants.KEY_ESCAPE:\n this.onEscapeKeyDown();\n break;\n case Constants.KEY_TAB:\n this.onTabKeyDown(event);\n break;\n case Constants.KEY_BACKSPACE:\n case Constants.KEY_DELETE:\n this.onBackspaceOrDeleteKeyPressed(key);\n break;\n case Constants.KEY_DOWN:\n case Constants.KEY_UP:\n case Constants.KEY_RIGHT:\n case Constants.KEY_LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellComp.prototype.setFocusOutOnEditor = function () {\n if (this.editingCell && this.cellEditor && this.cellEditor.focusOut) {\n this.cellEditor.focusOut();\n }\n };\n CellComp.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.editingCell) {\n return;\n }\n if (event.shiftKey && this.rangeSelectionEnabled) {\n this.onShiftRangeSelect(key);\n }\n else {\n this.beans.rowRenderer.navigateToNextCell(event, key, this.cellPosition, true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellComp.prototype.onShiftRangeSelect = function (key) {\n if (!this.beans.rangeController) {\n return;\n }\n var endCell = this.beans.rangeController.extendLatestRangeInDirection(key);\n if (endCell) {\n this.beans.rowRenderer.ensureCellVisible(endCell);\n }\n };\n CellComp.prototype.onTabKeyDown = function (event) {\n this.beans.rowRenderer.onTabKeyDown(this, event);\n };\n CellComp.prototype.onBackspaceOrDeleteKeyPressed = function (key) {\n if (!this.editingCell) {\n this.startRowOrCellEdit(key);\n }\n };\n CellComp.prototype.onEnterKeyDown = function () {\n if (this.editingCell || this.rowComp.isEditing()) {\n this.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {\n this.beans.rowRenderer.navigateToNextCell(null, Constants.KEY_DOWN, this.cellPosition, false);\n }\n else {\n this.startRowOrCellEdit(Constants.KEY_ENTER);\n }\n }\n };\n CellComp.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();\n if (enterMovesDownAfterEdit) {\n this.beans.rowRenderer.navigateToNextCell(null, Constants.KEY_DOWN, this.cellPosition, false);\n }\n };\n CellComp.prototype.onF2KeyDown = function () {\n if (!this.editingCell) {\n this.startRowOrCellEdit(Constants.KEY_F2);\n }\n };\n CellComp.prototype.onEscapeKeyDown = function () {\n if (this.editingCell) {\n this.stopRowOrCellEdit(true);\n this.focusCell(true);\n }\n };\n CellComp.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = _.getTarget(event);\n var eventOnChildComponent = eventTarget !== this.getGui();\n if (eventOnChildComponent || this.editingCell) {\n return;\n }\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else if (_.isEventFromPrintableCharacter(event)) {\n this.startRowOrCellEdit(null, pressedChar);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n };\n CellComp.prototype.onSpaceKeyPressed = function (event) {\n var gridOptionsWrapper = this.beans.gridOptionsWrapper;\n if (!this.editingCell && gridOptionsWrapper.isRowSelection()) {\n var newSelection = !this.rowNode.isSelected();\n if (newSelection || gridOptionsWrapper.isRowDeselection()) {\n this.rowNode.setSelected(newSelection);\n }\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellComp.prototype.onMouseDown = function (mouseEvent) {\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n var target = mouseEvent.target;\n var _a = this.beans, eventService = _a.eventService, rangeController = _a.rangeController;\n // do not change the range for right-clicks inside an existing range\n if (this.isRightClickInExistingRange(mouseEvent)) {\n return;\n }\n if (!shiftKey || (rangeController && !rangeController.getCellRanges().length)) {\n // We only need to pass true to focusCell when the browser is IE/Edge and we are trying\n // to focus the cell itself (element with ag-cell). This should never be true if the\n // mousedown was triggered due to a click on a cell editor for example.\n var forceBrowserFocus = (_.isBrowserIE() || _.isBrowserEdge()) && target.classList.contains('ag-cell');\n this.focusCell(forceBrowserFocus);\n }\n else {\n // if a range is being changed, we need to make sure the focused cell does not change.\n mouseEvent.preventDefault();\n }\n // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox\n // is focused but we don't want to change the range selection, so return here.\n if (this.containsWidget(target)) {\n return;\n }\n if (rangeController) {\n var thisCell = this.cellPosition;\n if (shiftKey) {\n rangeController.extendLatestRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = ctrlKey || metaKey;\n rangeController.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n eventService.dispatchEvent(this.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN));\n };\n CellComp.prototype.isRightClickInExistingRange = function (mouseEvent) {\n var rangeController = this.beans.rangeController;\n if (rangeController) {\n var cellInRange = rangeController.isCellInAnyRange(this.getCellPosition());\n if (cellInRange && mouseEvent.button === 2) {\n return true;\n }\n }\n return false;\n };\n CellComp.prototype.containsWidget = function (target) {\n return _.isElementChildOfClass(target, 'ag-selection-checkbox', 3);\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellComp.prototype.isDoubleClickOnIPad = function () {\n if (!_.isIOSUserAgent() || _.isEventSupported('dblclick')) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellComp.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var _a = this.beans, eventService = _a.eventService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var cellClickedEvent = this.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.getComponentHolder();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)\n && !gridOptionsWrapper.isSuppressClickEdit();\n if (editOnSingleClick) {\n this.startRowOrCellEdit();\n }\n };\n CellComp.prototype.createGridCellVo = function () {\n this.cellPosition = {\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n column: this.column\n };\n };\n CellComp.prototype.getCellPosition = function () {\n return this.cellPosition;\n };\n CellComp.prototype.getParentRow = function () {\n return this.eParentRow;\n };\n CellComp.prototype.setParentRow = function (eParentRow) {\n this.eParentRow = eParentRow;\n };\n CellComp.prototype.getColumn = function () {\n return this.column;\n };\n CellComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n CellComp.prototype.detach = function () {\n this.eParentRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n CellComp.prototype.destroy = function () {\n if (this.createCellRendererFunc) {\n this.beans.taskQueue.cancelTask(this.createCellRendererFunc);\n }\n this.stopEditing();\n if (this.cellRenderer && this.cellRenderer.destroy) {\n this.cellRenderer.destroy();\n this.cellRenderer = null;\n }\n if (this.selectionHandle) {\n this.selectionHandle.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n CellComp.prototype.onLeftChanged = function () {\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.getGui().style.left = left + 'px';\n this.refreshAriaIndex();\n };\n CellComp.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.printLayout || this.column.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n if (this.column.getPinned() === Constants.PINNED_RIGHT) {\n var leftWidth_1 = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth_1 + bodyWidth + leftPosition;\n }\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n };\n CellComp.prototype.onWidthChanged = function () {\n var width = this.getCellWidth();\n this.getGui().style.width = width + 'px';\n };\n CellComp.prototype.getRangeBorders = function () {\n var _this = this;\n var isRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var top = false;\n var right = false;\n var bottom = false;\n var left = false;\n var thisCol = this.cellPosition.column;\n var _a = this.beans, rangeController = _a.rangeController, columnController = _a.columnController;\n var leftCol;\n var rightCol;\n if (isRtl) {\n leftCol = columnController.getDisplayedColAfter(thisCol);\n rightCol = columnController.getDisplayedColBefore(thisCol);\n }\n else {\n leftCol = columnController.getDisplayedColBefore(thisCol);\n rightCol = columnController.getDisplayedColAfter(thisCol);\n }\n var ranges = rangeController.getCellRanges().filter(function (range) { return rangeController.isCellInSpecificRange(_this.cellPosition, range); });\n // this means we are the first column in the grid\n if (!leftCol) {\n left = true;\n }\n // this means we are the last column in the grid\n if (!rightCol) {\n right = true;\n }\n for (var i = 0; i < ranges.length; i++) {\n if (top && right && bottom && left) {\n break;\n }\n var range = ranges[i];\n var startRow = rangeController.getRangeStartRow(range);\n var endRow = rangeController.getRangeEndRow(range);\n if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellPosition)) {\n top = true;\n }\n if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellPosition)) {\n bottom = true;\n }\n if (!left && range.columns.indexOf(leftCol) < 0) {\n left = true;\n }\n if (!right && range.columns.indexOf(rightCol) < 0) {\n right = true;\n }\n }\n return { top: top, right: right, bottom: bottom, left: left };\n };\n CellComp.prototype.getInitialRangeClasses = function () {\n var classes = [];\n if (!this.rangeSelectionEnabled || !this.rangeCount) {\n return classes;\n }\n classes.push('ag-cell-range-selected');\n if (this.hasChartRange) {\n classes.push('ag-cell-range-chart');\n }\n var count = Math.min(this.rangeCount, 4);\n classes.push(\"ag-cell-range-selected-\" + count);\n if (this.isSingleCell()) {\n classes.push('ag-cell-range-single-cell');\n }\n if (this.rangeCount > 0) {\n var borders = this.getRangeBorders();\n if (borders.top) {\n classes.push('ag-cell-range-top');\n }\n if (borders.right) {\n classes.push('ag-cell-range-right');\n }\n if (borders.bottom) {\n classes.push('ag-cell-range-bottom');\n }\n if (borders.left) {\n classes.push('ag-cell-range-left');\n }\n }\n if (!!this.selectionHandle) {\n classes.push('ag-cell-range-handle');\n }\n return classes;\n };\n CellComp.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createGridCellVo();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n this.onRangeSelectionChanged();\n };\n CellComp.prototype.onRangeSelectionChanged = function () {\n var rangeController = this.beans.rangeController;\n if (!rangeController) {\n return;\n }\n var _a = this, cellPosition = _a.cellPosition, rangeCount = _a.rangeCount;\n var newRangeCount = rangeController.getCellRangeCount(cellPosition);\n var element = this.getGui();\n if (rangeCount !== newRangeCount) {\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected', newRangeCount !== 0);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-1', newRangeCount === 1);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-2', newRangeCount === 2);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-3', newRangeCount === 3);\n _.addOrRemoveCssClass(element, 'ag-cell-range-selected-4', newRangeCount >= 4);\n this.rangeCount = newRangeCount;\n }\n var hasChartRange = this.getHasChartRange();\n if (hasChartRange !== this.hasChartRange) {\n this.hasChartRange = hasChartRange;\n _.addOrRemoveCssClass(element, 'ag-cell-range-chart', this.hasChartRange);\n }\n this.updateRangeBorders();\n _.addOrRemoveCssClass(element, 'ag-cell-range-single-cell', this.isSingleCell());\n this.refreshHandle();\n };\n CellComp.prototype.getHasChartRange = function () {\n var rangeController = this.beans.rangeController;\n if (!this.rangeCount || !rangeController) {\n return false;\n }\n var cellRanges = rangeController.getCellRanges();\n return cellRanges.length > 0 && cellRanges.every(function (range) { return _.includes([exports.CellRangeType.DIMENSION, exports.CellRangeType.VALUE], range.type); });\n };\n CellComp.prototype.shouldHaveSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeController = _a.rangeController;\n var cellRanges = rangeController.getCellRanges();\n var rangesLen = cellRanges.length;\n if (this.rangeCount < 1 || rangesLen < 1) {\n return false;\n }\n var cellRange = _.last(cellRanges);\n var cellPosition = this.getCellPosition();\n var fillHandleIsAvailable = rangesLen === 1 &&\n (gridOptionsWrapper.isEnableFillHandle() || gridOptionsWrapper.isEnableRangeHandle()) &&\n !this.editingCell;\n if (this.hasChartRange) {\n var hasCategoryRange = cellRanges[0].type === exports.CellRangeType.DIMENSION;\n var isCategoryCell = hasCategoryRange && rangeController.isCellInSpecificRange(cellPosition, cellRanges[0]);\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-range-chart-category', isCategoryCell);\n fillHandleIsAvailable = cellRange.type === exports.CellRangeType.VALUE;\n }\n return fillHandleIsAvailable &&\n cellRange.endRow != null &&\n rangeController.isContiguousRange(cellRange) &&\n rangeController.isBottomRightCell(cellRange, cellPosition);\n };\n CellComp.prototype.addSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, context = _a.context, rangeController = _a.rangeController;\n var cellRangeType = _.last(rangeController.getCellRanges()).type;\n var type = (gridOptionsWrapper.isEnableFillHandle() && _.missing(cellRangeType)) ? 'fill' : 'range';\n if (this.selectionHandle && this.selectionHandle.getType() !== type) {\n this.selectionHandle.destroy();\n this.selectionHandle = undefined;\n }\n if (!this.selectionHandle) {\n this.selectionHandle = context.createComponentFromElement(document.createElement(\"ag-\" + type + \"-handle\"));\n }\n this.selectionHandle.refresh(this);\n };\n CellComp.prototype.updateRangeBordersIfRangeCount = function () {\n // we only need to update range borders if we are in a range\n if (this.rangeCount > 0) {\n this.updateRangeBorders();\n this.refreshHandle();\n }\n };\n CellComp.prototype.refreshHandle = function () {\n if (!this.beans.rangeController) {\n return;\n }\n var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();\n if (this.selectionHandle && !shouldHaveSelectionHandle) {\n this.selectionHandle.destroy();\n this.selectionHandle = null;\n }\n if (shouldHaveSelectionHandle) {\n this.addSelectionHandle();\n }\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-range-handle', !!this.selectionHandle);\n };\n CellComp.prototype.updateRangeBorders = function () {\n var rangeBorders = this.getRangeBorders();\n var isSingleCell = this.isSingleCell();\n var isTop = !isSingleCell && rangeBorders.top;\n var isRight = !isSingleCell && rangeBorders.right;\n var isBottom = !isSingleCell && rangeBorders.bottom;\n var isLeft = !isSingleCell && rangeBorders.left;\n var element = this.getGui();\n _.addOrRemoveCssClass(element, 'ag-cell-range-top', isTop);\n _.addOrRemoveCssClass(element, 'ag-cell-range-right', isRight);\n _.addOrRemoveCssClass(element, 'ag-cell-range-bottom', isBottom);\n _.addOrRemoveCssClass(element, 'ag-cell-range-left', isLeft);\n };\n CellComp.prototype.onFirstRightPinnedChanged = function () {\n var firstRightPinned = this.column.isFirstRightPinned();\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-first-right-pinned', firstRightPinned);\n }\n };\n CellComp.prototype.onLastLeftPinnedChanged = function () {\n var lastLeftPinned = this.column.isLastLeftPinned();\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-last-left-pinned', lastLeftPinned);\n }\n };\n CellComp.prototype.populateTemplate = function () {\n if (this.usingWrapper) {\n this.eParentOfValue = this.getRefElement('eCellValue');\n this.eCellWrapper = this.getRefElement('eCellWrapper');\n this.eCellValue = this.getRefElement('eCellValue');\n if (this.includeRowDraggingComponent) {\n this.addRowDragging();\n }\n if (this.includeDndSourceComponent) {\n this.addDndSource();\n }\n if (this.includeSelectionComponent) {\n this.addSelectionCheckbox();\n }\n }\n else {\n this.eParentOfValue = this.getGui();\n }\n };\n CellComp.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n CellComp.prototype.addRowDragging = function () {\n var pagination = this.beans.gridOptionsWrapper.isPagination();\n var rowDragManaged = this.beans.gridOptionsWrapper.isRowDragManaged();\n var clientSideRowModelActive = this.beans.gridOptionsWrapper.isRowModelDefault();\n if (rowDragManaged) {\n // row dragging only available in default row model\n if (!clientSideRowModelActive) {\n _.doOnce(function () { return console.warn('ag-Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (pagination) {\n _.doOnce(function () { return console.warn('ag-Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n }\n var rowDraggingComp = new RowDragComp(this.rowNode, this.column, this.getValueToUse(), this.beans);\n this.addFeature(rowDraggingComp, this.beans.context);\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(rowDraggingComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDndSource = function () {\n var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.getValueToUse(), this.beans, this.getGui());\n this.addFeature(dndSourceComp, this.beans.context);\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(dndSourceComp.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addSelectionCheckbox = function () {\n var cbSelectionComponent = new CheckboxSelectionComponent();\n this.beans.context.wireBean(cbSelectionComponent);\n var visibleFunc = this.getComponentHolder().checkboxSelection;\n visibleFunc = typeof visibleFunc === 'function' ? visibleFunc : null;\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column, visibleFunc: visibleFunc });\n this.addDestroyFunc(function () { return cbSelectionComponent.destroy(); });\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(cbSelectionComponent.getGui(), this.eParentOfValue);\n };\n CellComp.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, this);\n this.addDestroyFunc(function () { return _this.beans.gridOptionsWrapper.setDomData(element, CellComp.DOM_DATA_KEY_CELL_COMP, null); });\n };\n CellComp.prototype.isSingleCell = function () {\n var rangeController = this.beans.rangeController;\n return this.rangeCount === 1 && rangeController && !rangeController.isMoreThanOneCell();\n };\n CellComp.prototype.onCellFocused = function (event) {\n var cellFocused = this.beans.focusController.isCellFocused(this.cellPosition);\n // see if we need to change the classes on this cell\n if (cellFocused !== this.cellFocused) {\n // if we are not doing cell selection, then the focus class does not change\n var doingFocusCss = !this.beans.gridOptionsWrapper.isSuppressCellSelection();\n if (doingFocusCss) {\n _.addOrRemoveCssClass(this.getGui(), 'ag-cell-focus', cellFocused);\n }\n this.cellFocused = cellFocused;\n }\n // see if we need to force browser focus - this can happen if focus is programmatically set\n if (cellFocused && event && event.forceBrowserFocus) {\n var focusEl = this.getFocusableElement();\n focusEl.focus();\n // Fix for AG-3465 \"IE11 - After editing cell's content, selection doesn't go one cell below on enter\"\n // IE can fail to focus the cell after the first call to focus(), and needs a second call\n if (!document.activeElement || document.activeElement === document.body) {\n focusEl.focus();\n }\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (!cellFocused && !fullRowEdit && this.editingCell) {\n this.stopRowOrCellEdit();\n }\n };\n // pass in 'true' to cancel the editing.\n CellComp.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowComp.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editingCell) {\n return;\n }\n // if no cell editor, this means due to async, that the cell editor never got initialised,\n // so we just carry on regardless as if the editing was never started.\n if (!this.cellEditor) {\n this.editingCell = false;\n return;\n }\n var newValueExists = false;\n var newValue;\n var oldValue = this.getValue();\n if (!cancel) {\n // also have another option here to cancel after editing, so for example user could have a popup editor and\n // it is closed by user clicking outside the editor. then the editor will close automatically (with false\n // passed above) and we need to see if the editor wants to accept the new value.\n var userWantsToCancel = this.cellEditor.isCancelAfterEnd && this.cellEditor.isCancelAfterEnd();\n if (!userWantsToCancel) {\n newValue = this.cellEditor.getValue();\n newValueExists = true;\n }\n }\n // it is important we set this after setValue() above, as otherwise the cell will flash\n // when editing stops. the 'refresh' method checks editing, and doesn't refresh editing cells.\n // thus it will skip the refresh on this cell until the end of this method where we call\n // refresh directly and we suppress the flash.\n this.editingCell = false;\n if (this.cellEditor.destroy) {\n this.cellEditor.destroy();\n }\n // important to clear this out - as parts of the code will check for\n // this to see if an async cellEditor has yet to be created\n this.cellEditor = null;\n if (this.cellEditorInPopup && this.hideEditorPopup) {\n this.hideEditorPopup();\n this.hideEditorPopup = null;\n }\n else {\n _.clearElement(this.getGui());\n // put the cell back the way it was before editing\n if (this.usingWrapper) {\n // if wrapper, then put the wrapper back\n this.getGui().appendChild(this.eCellWrapper);\n }\n else {\n // if cellRenderer, then put the gui back in. if the renderer has\n // a refresh, it will be called. however if it doesn't, then later\n // the renderer will be destroyed and a new one will be created.\n if (this.cellRenderer) {\n // we know it's a dom element (not a string) because we converted\n // it after the gui was attached if it was a string.\n var eCell = this.cellRendererGui;\n // can be null if cell was previously null / contained empty string,\n // this will result in new value not being rendered.\n if (eCell) {\n this.getGui().appendChild(eCell);\n }\n }\n }\n }\n this.setInlineEditingClass();\n if (newValueExists && newValue !== oldValue) {\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n this.rowNode.setDataValue(this.column, newValue);\n this.suppressRefreshCell = false;\n }\n // we suppress the flash, as it is not correct to flash the cell the user has finished editing,\n // the user doesn't need to flash as they were the one who did the edit, the flash is pointless\n // (as the flash is meant to draw the user to a change that they didn't manually do themselves).\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n var event = this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n CellComp.DOM_DATA_KEY_CELL_COMP = 'cellComp';\n CellComp.CELL_RENDERER_TYPE_NORMAL = 'cellRenderer';\n CellComp.CELL_RENDERER_TYPE_PINNED = 'pinnedRowCellRenderer';\n return CellComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$C = (undefined && undefined.__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})();\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n __assign$2 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$2.apply(this, arguments);\n};\nvar RowComp = /** @class */ (function (_super) {\n __extends$C(RowComp, _super);\n function RowComp(parentScope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout, embedFullWidth) {\n var _this = _super.call(this) || this;\n _this.eAllRowContainers = [];\n _this.active = true;\n _this.rowContainerReadyCount = 0;\n _this.refreshNeeded = false;\n _this.columnRefreshPending = false;\n _this.cellComps = {};\n // for animations, there are bits we want done in the next VM turn, to all DOM to update first.\n // instead of each row doing a setTimeout(func,0), we put the functions here and the rowRenderer\n // executes them all in one timeout\n _this.createSecondPassFuncs = [];\n // these get called before the row is destroyed - they set up the DOM for the remove animation (ie they\n // set the DOM up for the animation), then the delayedDestroyFunctions get called when the animation is\n // complete (ie removes from the dom).\n _this.removeFirstPassFuncs = [];\n // for animations, these functions get called 400ms after the row is cleared, called by the rowRenderer\n // so each row isn't setting up it's own timeout\n _this.removeSecondPassFuncs = [];\n _this.initialised = false;\n _this.elementOrderChanged = false;\n _this.lastMouseDownOnDragger = false;\n _this.parentScope = parentScope;\n _this.beans = beans;\n _this.bodyContainerComp = bodyContainerComp;\n _this.pinnedLeftContainerComp = pinnedLeftContainerComp;\n _this.pinnedRightContainerComp = pinnedRightContainerComp;\n _this.fullWidthContainerComp = fullWidthContainerComp;\n _this.rowNode = rowNode;\n _this.rowIsEven = _this.rowNode.rowIndex % 2 === 0;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.embedFullWidth = embedFullWidth;\n _this.setAnimateFlags(animateIn);\n return _this;\n }\n RowComp.prototype.init = function () {\n var _this = this;\n this.rowFocused = this.beans.focusController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n this.scope = this.createChildScopeOrNull(this.rowNode.data);\n this.setupRowContainers();\n this.addListeners();\n if (this.slideRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.onTopChanged();\n });\n }\n if (this.fadeRowIn) {\n this.createSecondPassFuncs.push(function () {\n _this.eAllRowContainers.forEach(function (eRow) { return _.removeCssClass(eRow, 'ag-opacity-zero'); });\n });\n }\n };\n RowComp.prototype.createTemplate = function (contents, extraCssClass) {\n if (extraCssClass === void 0) { extraCssClass = null; }\n var templateParts = [];\n var rowHeight = this.rowNode.rowHeight;\n var rowClasses = this.getInitialRowClasses(extraCssClass).join(' ');\n var rowIdSanitised = _.escape(this.rowNode.id);\n var userRowStyles = this.preProcessStylesFromGridOptions();\n var businessKey = this.getRowBusinessKey();\n var businessKeySanitised = _.escape(businessKey);\n var rowTopStyle = this.getInitialRowTopStyle();\n var rowIdx = this.rowNode.getRowIndexString();\n var headerRowCount = this.beans.gridPanel.headerRootComp.getHeaderRowCount();\n templateParts.push(\"\");\n // add in the template for the cells\n templateParts.push(contents);\n templateParts.push(\"\");\n return templateParts.join('');\n };\n RowComp.prototype.getCellForCol = function (column) {\n var cellComp = this.cellComps[column.getColId()];\n return cellComp ? cellComp.getGui() : null;\n };\n RowComp.prototype.afterFlush = function () {\n if (this.initialised) {\n return;\n }\n this.initialised = true;\n this.executeProcessRowPostCreateFunc();\n };\n RowComp.prototype.executeProcessRowPostCreateFunc = function () {\n var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n if (!func) {\n return;\n }\n var params = {\n eRow: this.eBodyRow,\n ePinnedLeftRow: this.ePinnedLeftRow,\n ePinnedRightRow: this.ePinnedRightRow,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n func(params);\n };\n RowComp.prototype.getInitialRowTopStyle = function () {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var isSuppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n return isSuppressRowTransform ? \"top: \" + afterScalingPixels + \"px; \" : \"transform: translateY(\" + afterScalingPixels + \"px);\";\n };\n RowComp.prototype.getRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n return businessKeyForNodeFunc(this.rowNode);\n };\n RowComp.prototype.areAllContainersReady = function () {\n return this.rowContainerReadyCount === 3;\n };\n RowComp.prototype.lazyCreateCells = function (cols, eRow) {\n if (!this.active) {\n return;\n }\n var cellTemplatesAndComps = this.createCells(cols);\n eRow.innerHTML = cellTemplatesAndComps.template;\n this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n this.rowContainerReadyCount++;\n if (this.areAllContainersReady() && this.refreshNeeded) {\n this.refreshCells();\n }\n };\n RowComp.prototype.createRowContainer = function (rowContainerComp, cols, callback) {\n var _this = this;\n var useAnimationsFrameForCreate = this.useAnimationFrameForCreate;\n var cellTemplatesAndComps = useAnimationsFrameForCreate ? { cellComps: [], template: '' } : this.createCells(cols);\n var rowTemplate = this.createTemplate(cellTemplatesAndComps.template);\n // the RowRenderer is probably inserting many rows. rather than inserting each template one\n // at a time, the grid inserts all rows together - so the callback here is called by the\n // rowRenderer when all RowComps are created, then all the HTML is inserted in one go,\n // and then all the callbacks are called. this is NOT done in an animation frame.\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n _this.afterRowAttached(rowContainerComp, eRow);\n callback(eRow);\n if (useAnimationsFrameForCreate) {\n _this.beans.taskQueue.createTask(_this.lazyCreateCells.bind(_this, cols, eRow), _this.rowNode.rowIndex, 'createTasksP1');\n }\n else {\n _this.callAfterRowAttachedOnCells(cellTemplatesAndComps.cellComps, eRow);\n _this.rowContainerReadyCount = 3;\n }\n });\n };\n RowComp.prototype.createChildScopeOrNull = function (data) {\n var isAngularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n if (!isAngularCompileRows) {\n return null;\n }\n var newChildScope = this.parentScope.$new();\n newChildScope.data = __assign$2({}, data);\n newChildScope.rowNode = this.rowNode;\n newChildScope.context = this.beans.gridOptionsWrapper.getContext();\n this.addDestroyFunc(function () {\n newChildScope.$destroy();\n newChildScope.data = null;\n newChildScope.rowNode = null;\n newChildScope.context = null;\n });\n return newChildScope;\n };\n RowComp.prototype.setupRowContainers = function () {\n var isFullWidthCell = this.rowNode.isFullWidthCell();\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var pivotMode = this.beans.columnController.isPivotMode();\n // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking\n // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'\n // so each can be set independently (as a customer complained about footers getting full width, hence\n // introducing this logic)\n var isGroupRow = this.rowNode.group && !this.rowNode.footer;\n var isFullWidthGroup = isGroupRow && this.beans.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);\n if (this.rowNode.stub) {\n this.createFullWidthRows(RowComp.LOADING_CELL_RENDERER, RowComp.LOADING_CELL_RENDERER_COMP_NAME);\n }\n else if (isDetailCell) {\n this.createFullWidthRows(RowComp.DETAIL_CELL_RENDERER, RowComp.DETAIL_CELL_RENDERER_COMP_NAME);\n }\n else if (isFullWidthCell) {\n this.createFullWidthRows(RowComp.FULL_WIDTH_CELL_RENDERER, null);\n }\n else if (isFullWidthGroup) {\n this.createFullWidthRows(RowComp.GROUP_ROW_RENDERER, RowComp.GROUP_ROW_RENDERER_COMP_NAME);\n }\n else {\n this.setupNormalRowContainers();\n }\n };\n RowComp.prototype.setupNormalRowContainers = function () {\n var _this = this;\n var centerCols;\n var leftCols = [];\n var rightCols = [];\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.createRowContainer(this.bodyContainerComp, centerCols, function (eRow) { return _this.eBodyRow = eRow; });\n this.createRowContainer(this.pinnedRightContainerComp, rightCols, function (eRow) { return _this.ePinnedRightRow = eRow; });\n this.createRowContainer(this.pinnedLeftContainerComp, leftCols, function (eRow) { return _this.ePinnedLeftRow = eRow; });\n };\n RowComp.prototype.createFullWidthRows = function (type, name) {\n var _this = this;\n this.fullWidthRow = true;\n if (this.embedFullWidth) {\n this.createFullWidthRowContainer(this.bodyContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRowBody = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentBody = cellRenderer;\n });\n // printLayout doesn't put components into the pinned sections\n if (this.printLayout) {\n return;\n }\n this.createFullWidthRowContainer(this.pinnedLeftContainerComp, Constants.PINNED_LEFT, 'ag-cell-last-left-pinned', type, name, function (eRow) {\n _this.eFullWidthRowLeft = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentLeft = cellRenderer;\n });\n this.createFullWidthRowContainer(this.pinnedRightContainerComp, Constants.PINNED_RIGHT, 'ag-cell-first-right-pinned', type, name, function (eRow) {\n _this.eFullWidthRowRight = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponentRight = cellRenderer;\n });\n }\n else {\n // otherwise we add to the fullWidth container as normal\n // let previousFullWidth = ensureDomOrder ? this.lastPlacedElements.eFullWidth : null;\n this.createFullWidthRowContainer(this.fullWidthContainerComp, null, null, type, name, function (eRow) {\n _this.eFullWidthRow = eRow;\n }, function (cellRenderer) {\n _this.fullWidthRowComponent = cellRenderer;\n });\n }\n };\n RowComp.prototype.setAnimateFlags = function (animateIn) {\n if (animateIn) {\n var oldRowTopExists = _.exists(this.rowNode.oldRowTop);\n // if the row had a previous position, we slide it in (animate row top)\n this.slideRowIn = oldRowTopExists;\n // if the row had no previous position, we fade it in (animate\n this.fadeRowIn = !oldRowTopExists;\n }\n else {\n this.slideRowIn = false;\n this.fadeRowIn = false;\n }\n };\n RowComp.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowComp.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowComp.prototype.isFullWidth = function () {\n return this.fullWidthRow;\n };\n RowComp.prototype.refreshFullWidth = function () {\n var _this = this;\n // returns 'true' if refresh succeeded\n var tryRefresh = function (eRow, eCellComp, pinned) {\n if (!eRow || !eCellComp) {\n return true;\n } // no refresh needed\n // no refresh method present, so can't refresh, hard refresh needed\n if (!eCellComp.refresh) {\n return false;\n }\n var params = _this.createFullWidthParams(eRow, pinned);\n var refreshSucceeded = eCellComp.refresh(params);\n return refreshSucceeded;\n };\n var normalSuccess = tryRefresh(this.eFullWidthRow, this.fullWidthRowComponent, null);\n var bodySuccess = tryRefresh(this.eFullWidthRowBody, this.fullWidthRowComponentBody, null);\n var leftSuccess = tryRefresh(this.eFullWidthRowLeft, this.fullWidthRowComponentLeft, Constants.PINNED_LEFT);\n var rightSuccess = tryRefresh(this.eFullWidthRowRight, this.fullWidthRowComponentRight, Constants.PINNED_RIGHT);\n var allFullWidthRowsRefreshed = normalSuccess && bodySuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n };\n RowComp.prototype.addListeners = function () {\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.onExpandedChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addDestroyableEventListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addDestroyableEventListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));\n this.addListenersForCellComps();\n };\n RowComp.prototype.addListenersForCellComps = function () {\n var _this = this;\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.onRowIndexChanged(); });\n });\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function (event) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onCellChanged(event); });\n });\n };\n // when grid columns change, then all cells should be cleaned out,\n // as the new columns could have same id as the previous columns and may conflict\n RowComp.prototype.onGridColumnsChanged = function () {\n this.removeRenderedCells(Object.keys(this.cellComps));\n };\n RowComp.prototype.onRowNodeDataChanged = function (event) {\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.forEachCellComp(function (cellComp) {\n return cellComp.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.onRowNodeCellChanged = function () {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowComp.prototype.postProcessCss = function () {\n this.postProcessStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowComp.prototype.onRowNodeHighlightChanged = function () {\n var highlighted = this.rowNode.highlighted;\n this.eAllRowContainers.forEach(function (row) {\n _.removeCssClass(row, 'ag-row-highlight-above');\n _.removeCssClass(row, 'ag-row-highlight-below');\n if (highlighted) {\n _.addCssClass(row, 'ag-row-highlight-' + highlighted);\n }\n });\n };\n RowComp.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowComp.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-dragging', dragging); });\n };\n RowComp.prototype.onExpandedChanged = function () {\n var rowNode = this.rowNode;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-group-expanded', rowNode.expanded); });\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-group-contracted', !rowNode.expanded); });\n };\n RowComp.prototype.onDisplayedColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.destroyFullWidthComponents = function () {\n if (this.fullWidthRowComponent) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, null, this.fullWidthRowComponent);\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentBody) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, null, this.fullWidthRowComponentBody);\n this.fullWidthRowComponent = null;\n }\n if (this.fullWidthRowComponentLeft) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, Constants.PINNED_LEFT, this.fullWidthRowComponentLeft);\n this.fullWidthRowComponentLeft = null;\n }\n if (this.fullWidthRowComponentRight) {\n this.beans.detailRowCompCache.addOrDestroy(this.rowNode, Constants.PINNED_RIGHT, this.fullWidthRowComponentRight);\n this.fullWidthRowComponent = null;\n }\n };\n RowComp.prototype.getContainerForCell = function (pinnedType) {\n switch (pinnedType) {\n case Constants.PINNED_LEFT: return this.ePinnedLeftRow;\n case Constants.PINNED_RIGHT: return this.ePinnedRightRow;\n default: return this.eBodyRow;\n }\n };\n RowComp.prototype.onVirtualColumnsChanged = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.onColumnResized = function () {\n if (this.fullWidthRow) {\n return;\n }\n this.refreshCells();\n };\n RowComp.prototype.refreshCells = function () {\n if (!this.areAllContainersReady()) {\n this.refreshNeeded = true;\n return;\n }\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n var skipAnimationFrame = suppressAnimationFrame || this.printLayout;\n if (skipAnimationFrame) {\n this.refreshCellsInAnimationFrame();\n }\n else {\n if (this.columnRefreshPending) {\n return;\n }\n this.beans.taskQueue.createTask(this.refreshCellsInAnimationFrame.bind(this), this.rowNode.rowIndex, 'createTasksP1');\n }\n };\n RowComp.prototype.refreshCellsInAnimationFrame = function () {\n if (!this.active) {\n return;\n }\n this.columnRefreshPending = false;\n var centerCols;\n var leftCols;\n var rightCols;\n if (this.printLayout) {\n centerCols = this.beans.columnController.getAllDisplayedColumns();\n leftCols = [];\n rightCols = [];\n }\n else {\n centerCols = this.beans.columnController.getAllDisplayedCenterVirtualColumnsForRow(this.rowNode);\n leftCols = this.beans.columnController.getDisplayedLeftColumnsForRow(this.rowNode);\n rightCols = this.beans.columnController.getDisplayedRightColumnsForRow(this.rowNode);\n }\n this.insertCellsIntoContainer(this.eBodyRow, centerCols);\n this.insertCellsIntoContainer(this.ePinnedLeftRow, leftCols);\n this.insertCellsIntoContainer(this.ePinnedRightRow, rightCols);\n this.elementOrderChanged = false;\n var colIdsToRemove = Object.keys(this.cellComps);\n centerCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n leftCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n rightCols.forEach(function (col) { return _.removeFromArray(colIdsToRemove, col.getId()); });\n // we never remove editing cells, as this would cause the cells to loose their values while editing\n // as the grid is scrolling horizontally.\n var eligibleToBeRemoved = colIdsToRemove.filter(this.isCellEligibleToBeRemoved.bind(this));\n // remove old cells from gui, but we don't destroy them, we might use them again\n this.removeRenderedCells(eligibleToBeRemoved);\n };\n RowComp.prototype.onColumnMoved = function () {\n this.elementOrderChanged = true;\n };\n RowComp.prototype.removeRenderedCells = function (colIds) {\n var _this = this;\n colIds.forEach(function (key) {\n var cellComp = _this.cellComps[key];\n // could be old reference, ie removed cell\n if (_.missing(cellComp)) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[key] = null;\n });\n };\n RowComp.prototype.isCellEligibleToBeRemoved = function (indexStr) {\n var displayedColumns = this.beans.columnController.getAllDisplayedColumns();\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n var renderedCell = this.cellComps[indexStr];\n // always remove the cell if it's not rendered or if it's in the wrong pinned location\n if (!renderedCell || this.isCellInWrongRow(renderedCell)) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = renderedCell.isEditing();\n var focused = this.beans.focusController.isCellFocused(renderedCell.getCellPosition());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column = renderedCell.getColumn();\n var cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowComp.prototype.ensureCellInCorrectContainer = function (cellComp) {\n // for print layout, we always put cells into centre, otherwise we put in correct pinned section\n if (this.printLayout) {\n return;\n }\n var element = cellComp.getGui();\n var column = cellComp.getColumn();\n var pinnedType = column.getPinned();\n var eContainer = this.getContainerForCell(pinnedType);\n // if in wrong container, remove it\n var eOldContainer = cellComp.getParentRow();\n var inWrongRow = eOldContainer !== eContainer;\n if (inWrongRow) {\n // take out from old row\n if (eOldContainer) {\n eOldContainer.removeChild(element);\n }\n eContainer.appendChild(element);\n cellComp.setParentRow(eContainer);\n this.elementOrderChanged = true;\n }\n };\n RowComp.prototype.isCellInWrongRow = function (cellComp) {\n var column = cellComp.getColumn();\n var rowWeWant = this.getContainerForCell(column.getPinned());\n var oldRow = cellComp.getParentRow(); // if in wrong container, remove it\n return oldRow !== rowWeWant;\n };\n RowComp.prototype.insertCellsIntoContainer = function (eRow, cols) {\n var _this = this;\n if (!eRow) {\n return;\n }\n var cellTemplates = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var colId = col.getId();\n var existingCell = _this.cellComps[colId];\n if (existingCell) {\n _this.ensureCellInCorrectContainer(existingCell);\n }\n else {\n _this.createNewCell(col, eRow, cellTemplates, newCellComps);\n }\n });\n if (cellTemplates.length > 0) {\n _.appendHtml(eRow, cellTemplates.join(''));\n this.callAfterRowAttachedOnCells(newCellComps, eRow);\n }\n if (this.elementOrderChanged && this.beans.gridOptionsWrapper.isEnsureDomOrder()) {\n var correctChildOrder = cols.map(function (col) { return _this.getCellForCol(col); });\n _.setDomChildOrder(eRow, correctChildOrder);\n }\n };\n RowComp.prototype.addDomData = function (eRowContainer) {\n var gow = this.beans.gridOptionsWrapper;\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, this);\n this.addDestroyFunc(function () {\n gow.setDomData(eRowContainer, RowComp.DOM_DATA_KEY_RENDERED_ROW, null);\n });\n };\n RowComp.prototype.createNewCell = function (col, eContainer, cellTemplates, newCellComps) {\n var newCellComp = new CellComp(this.scope, this.beans, col, this.rowNode, this, false, this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n cellTemplates.push(cellTemplate);\n newCellComps.push(newCellComp);\n this.cellComps[col.getId()] = newCellComp;\n newCellComp.setParentRow(eContainer);\n this.elementOrderChanged = true;\n };\n RowComp.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n case 'mousedown':\n this.onRowMouseDown(mouseEvent);\n break;\n }\n };\n RowComp.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n event: domEvent\n };\n };\n RowComp.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowComp.prototype.onRowDblClick = function (mouseEvent) {\n if (_.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowComp.prototype.onRowMouseDown = function (mouseEvent) {\n this.lastMouseDownOnDragger = _.isElementChildOfClass(mouseEvent.target, 'ag-row-drag', 3);\n };\n RowComp.prototype.onRowClick = function (mouseEvent) {\n var stop = _.isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n this.rowNode.group ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsWrapper.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();\n var rowDeselectionWithCtrl = this.beans.gridOptionsWrapper.isRowDeselection();\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: true });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });\n }\n };\n RowComp.prototype.createFullWidthRowContainer = function (rowContainerComp, pinned, extraCssClass, cellRendererType, cellRendererName, eRowCallback, cellRendererCallback) {\n var _this = this;\n var rowTemplate = this.createTemplate('', extraCssClass);\n rowContainerComp.appendRowTemplate(rowTemplate, function () {\n var eRow = rowContainerComp.getRowElement(_this.getCompId());\n var params = _this.createFullWidthParams(eRow, pinned);\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var gui = cellRenderer.getGui();\n eRow.appendChild(gui);\n cellRendererCallback(cellRenderer);\n }\n else if (cellRenderer.destroy) {\n cellRenderer.destroy();\n }\n };\n // if doing master detail, it's possible we have a cached row comp from last time detail was displayed\n var cachedRowComp = _this.beans.detailRowCompCache.get(_this.rowNode, pinned);\n if (cachedRowComp) {\n callback(cachedRowComp);\n }\n else {\n var res = _this.beans.userComponentFactory.newFullWidthCellRenderer(params, cellRendererType, cellRendererName);\n if (!res) {\n var masterDetailModuleLoaded = ModuleRegistry.isRegistered(exports.ModuleNames.MasterDetailModule);\n if (cellRendererName === 'agDetailCellRenderer' && !masterDetailModuleLoaded) {\n console.warn(\"ag-Grid: cell renderer agDetailCellRenderer (for master detail) not found. Did you forget to include the master detail module?\");\n }\n else {\n console.error(\"ag-Grid: fullWidthCellRenderer \" + cellRendererName + \" not found\");\n }\n return;\n }\n res.then(callback);\n }\n _this.afterRowAttached(rowContainerComp, eRow);\n eRowCallback(eRow);\n _this.angular1Compile(eRow);\n });\n };\n RowComp.prototype.angular1Compile = function (element) {\n if (!this.scope) {\n return;\n }\n this.beans.$compile(element)(this.scope);\n };\n RowComp.prototype.createFullWidthParams = function (eRow, pinned) {\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n $scope: this.scope ? this.scope : this.parentScope,\n $compile: this.beans.$compile,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this)\n };\n return params;\n };\n RowComp.prototype.getInitialRowClasses = function (extraCssClass) {\n var classes = [];\n var isTreeData = this.beans.gridOptionsWrapper.isTreeData();\n var rowNode = this.rowNode;\n if (_.exists(extraCssClass)) {\n classes.push(extraCssClass);\n }\n classes.push('ag-row');\n classes.push(this.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (this.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(this.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (rowNode.isRowPinned()) {\n classes.push('ag-row-pinned');\n }\n if (rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (rowNode.group) {\n classes.push('ag-row-group');\n // if a group, put the level of the group in\n classes.push('ag-row-level-' + rowNode.level);\n if (rowNode.footer) {\n classes.push('ag-row-footer');\n }\n }\n else {\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n classes.push('ag-row-level-' + (rowNode.parent ? (rowNode.parent.level + 1) : '0'));\n }\n if (rowNode.stub) {\n classes.push('ag-row-loading');\n }\n if (this.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n var addExpandedClass = isTreeData ?\n // if doing tree data, we add the expanded classes if any children, as any node can be a parent\n rowNode.allChildrenCount :\n // if normal row grouping, we add expanded classes to groups only\n rowNode.group && !rowNode.footer;\n if (addExpandedClass) {\n classes.push(rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n _.pushAll(classes, this.processClassesFromGridOptions());\n _.pushAll(classes, this.preProcessRowClassRules());\n // we use absolute position unless we are doing print layout\n classes.push(this.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n this.firstRowOnPage = this.isFirstRowOnPage();\n this.lastRowOnPage = this.isLastRowOnPage();\n if (this.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (this.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n return classes;\n };\n RowComp.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowComp.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowComp.prototype.onModelUpdated = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-last', newLast); });\n }\n };\n RowComp.prototype.preProcessRowClassRules = function () {\n var res = [];\n this.processRowClassRules(function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowComp.prototype.processRowClassRules = function (onApplicableClass, onNotApplicableClass) {\n this.beans.stylingService.processClassRules(this.beans.gridOptionsWrapper.rowClassRules(), {\n value: undefined,\n colDef: undefined,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n }, onApplicableClass, onNotApplicableClass);\n };\n RowComp.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachCellComp(function (renderedCell) {\n renderedCell.stopEditing(cancel);\n });\n if (!this.editingRow) {\n return;\n }\n if (!cancel) {\n var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n this.setEditingRow(false);\n };\n RowComp.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowComp.prototype.startRowEditing = function (keyPress, charPress, sourceRenderedCell) {\n if (keyPress === void 0) { keyPress = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n this.forEachCellComp(function (renderedCell) {\n var cellStartedEdit = renderedCell === sourceRenderedCell;\n if (cellStartedEdit) {\n renderedCell.startEditingIfEnabled(keyPress, charPress, cellStartedEdit);\n }\n else {\n renderedCell.startEditingIfEnabled(null, null, cellStartedEdit);\n }\n });\n this.setEditingRow(true);\n };\n RowComp.prototype.forEachCellComp = function (callback) {\n _.iterateObject(this.cellComps, function (key, cellComp) {\n if (!cellComp) {\n return;\n }\n callback(cellComp);\n });\n };\n RowComp.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.processClassesFromGridOptions();\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.eAllRowContainers.forEach(function (row) { return _.addCssClass(row, classStr); });\n });\n };\n RowComp.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.processRowClassRules(function (className) {\n _this.eAllRowContainers.forEach(function (row) { return _.addCssClass(row, className); });\n }, function (className) {\n _this.eAllRowContainers.forEach(function (row) { return _.removeCssClass(row, className); });\n });\n };\n RowComp.prototype.processClassesFromGridOptions = function () {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.beans.gridOptionsWrapper.getRowClass();\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('ag-Grid: rowClass should not be a function, please use getRowClass instead');\n return;\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.beans.gridOptionsWrapper.getRowClassFunc();\n if (rowClassFunc) {\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi()\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowComp.prototype.preProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n return _.cssStyleObjectToMarkup(rowStyles);\n };\n RowComp.prototype.postProcessStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n this.eAllRowContainers.forEach(function (row) { return _.addStylesToElement(row, rowStyles); });\n };\n RowComp.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('ag-Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n $scope: this.scope\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return _.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowComp.prototype.createCells = function (cols) {\n var _this = this;\n var templateParts = [];\n var newCellComps = [];\n cols.forEach(function (col) {\n var newCellComp = new CellComp(_this.scope, _this.beans, col, _this.rowNode, _this, false, _this.printLayout);\n var cellTemplate = newCellComp.getCreateTemplate();\n templateParts.push(cellTemplate);\n newCellComps.push(newCellComp);\n _this.cellComps[col.getId()] = newCellComp;\n });\n var templateAndComps = {\n template: templateParts.join(''),\n cellComps: newCellComps\n };\n return templateAndComps;\n };\n RowComp.prototype.onRowSelected = function () {\n var selected = this.rowNode.isSelected();\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-selected', selected); });\n };\n // called:\n // + after row created for first time\n // + after horizontal scroll, so new cells due to column virtualisation\n RowComp.prototype.callAfterRowAttachedOnCells = function (newCellComps, eRow) {\n var _this = this;\n newCellComps.forEach(function (cellComp) {\n cellComp.setParentRow(eRow);\n cellComp.afterAttached();\n // if we are editing the row, then the cell needs to turn\n // into edit mode\n if (_this.editingRow) {\n cellComp.startEditingIfEnabled();\n }\n });\n };\n RowComp.prototype.afterRowAttached = function (rowContainerComp, eRow) {\n var _this = this;\n this.addDomData(eRow);\n this.removeSecondPassFuncs.push(function () {\n rowContainerComp.removeRowElement(eRow);\n });\n this.removeFirstPassFuncs.push(function () {\n if (_.exists(_this.rowNode.rowTop)) {\n // the row top is updated anyway, however we set it here again\n // to something more reasonable for the animation - ie if the\n // row top is 10000px away, the row will flash out, so this\n // gives it a rounded value, so row animates out more slowly\n var rowTop = _this.roundRowTopToBounds(_this.rowNode.rowTop);\n _this.setRowTop(rowTop);\n }\n else {\n _.addCssClass(eRow, 'ag-opacity-zero');\n }\n });\n this.eAllRowContainers.push(eRow);\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (this.useAnimationFrameForCreate) {\n this.beans.taskQueue.createTask(this.addHoverFunctionality.bind(this, eRow), this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n this.addHoverFunctionality(eRow);\n }\n };\n RowComp.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addDestroyableEventListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addDestroyableEventListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards.\n if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {\n _.addCssClass(eRow, 'ag-row-hover');\n }\n });\n this.addDestroyableEventListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function () {\n _.removeCssClass(eRow, 'ag-row-hover');\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowComp.prototype.roundRowTopToBounds = function (rowTop) {\n var range = this.beans.gridPanel.getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowComp.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n RowComp.prototype.onRowHeightChanged = function () {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (_.exists(this.rowNode.rowHeight)) {\n var heightPx_1 = this.rowNode.rowHeight + \"px\";\n this.eAllRowContainers.forEach(function (row) { return row.style.height = heightPx_1; });\n }\n };\n RowComp.prototype.addEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.removeEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('ag-Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n RowComp.prototype.destroy = function (animate) {\n if (animate === void 0) { animate = false; }\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n this.destroyFullWidthComponents();\n if (animate) {\n this.removeFirstPassFuncs.forEach(function (func) { return func(); });\n this.removeSecondPassFuncs.push(this.destroyContainingCells.bind(this));\n }\n else {\n this.destroyContainingCells();\n // we are not animating, so execute the second stage of removal now.\n // we call getAndClear, so that they are only called once\n var delayedDestroyFunctions = this.getAndClearDelayedDestroyFunctions();\n delayedDestroyFunctions.forEach(function (func) { return func(); });\n }\n var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n _super.prototype.destroy.call(this);\n };\n RowComp.prototype.destroyContainingCells = function () {\n this.forEachCellComp(function (renderedCell) { return renderedCell.destroy(); });\n this.destroyFullWidthComponents();\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearDelayedDestroyFunctions = function () {\n var result = this.removeSecondPassFuncs;\n this.removeSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusController.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-focus', rowFocused); });\n this.eAllRowContainers.forEach(function (row) { return _.addOrRemoveCssClass(row, 'ag-row-no-focus', !rowFocused); });\n this.rowFocused = rowFocused;\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowComp.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n };\n RowComp.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowComp.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowComp.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (_.exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.beans.maxDivHeightScaler.getRealPixelPosition(afterPaginationPixels);\n var topPx_1 = afterScalingPixels + \"px\";\n if (this.beans.gridOptionsWrapper.isSuppressRowTransform()) {\n this.eAllRowContainers.forEach(function (row) { return row.style.top = topPx_1; });\n }\n else {\n this.eAllRowContainers.forEach(function (row) { return row.style.transform = \"translateY(\" + topPx_1 + \")\"; });\n }\n }\n };\n // we clear so that the functions are never executed twice\n RowComp.prototype.getAndClearNextVMTurnFunctions = function () {\n var result = this.createSecondPassFuncs;\n this.createSecondPassFuncs = [];\n return result;\n };\n RowComp.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowComp.prototype.getRenderedCellForColumn = function (column) {\n var _this = this;\n var cellComp = this.cellComps[column.getColId()];\n if (cellComp) {\n return cellComp;\n }\n var spanList = Object.keys(this.cellComps)\n .map(function (name) { return _this.cellComps[name]; })\n .filter(function (cmp) { return cmp && cmp.getColSpanningList().indexOf(column) !== -1; });\n return spanList.length ? spanList[0] : undefined;\n };\n RowComp.prototype.onRowIndexChanged = function () {\n // we only bother updating if the rowIndex is present. if it is not present, it means this row\n // is child of a group node, and the group node was closed, it's the only way to have no row index.\n // when this happens, row is about to be de-rendered, so we don't care, rowComp is about to die!\n if (this.rowNode.rowIndex != null) {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n }\n };\n RowComp.prototype.updateRowIndexes = function () {\n var _this = this;\n var rowIndexStr = this.rowNode.getRowIndexString();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var rowIsEvenChanged = this.rowIsEven !== rowIsEven;\n var headerRowCount = this.beans.gridPanel.headerRootComp.getHeaderRowCount();\n if (rowIsEvenChanged) {\n this.rowIsEven = rowIsEven;\n }\n this.eAllRowContainers.forEach(function (eRow) {\n eRow.setAttribute('row-index', rowIndexStr);\n eRow.setAttribute('aria-rowindex', (headerRowCount + _this.rowNode.rowIndex + 1).toString());\n if (!rowIsEvenChanged) {\n return;\n }\n _.addOrRemoveCssClass(eRow, 'ag-row-even', rowIsEven);\n _.addOrRemoveCssClass(eRow, 'ag-row-odd', !rowIsEven);\n });\n };\n RowComp.prototype.ensureDomOrder = function () {\n var sides = [\n {\n el: this.getBodyRowElement(),\n ct: this.bodyContainerComp\n },\n {\n el: this.getPinnedLeftRowElement(),\n ct: this.pinnedLeftContainerComp\n }, {\n el: this.getPinnedRightRowElement(),\n ct: this.pinnedRightContainerComp\n }, {\n el: this.getFullWidthRowElement(),\n ct: this.fullWidthContainerComp\n }\n ];\n sides.forEach(function (side) {\n if (!side.el) {\n return;\n }\n side.ct.ensureDomOrder(side.el);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedLeftRowElement = function () {\n return this.ePinnedLeftRow ? this.ePinnedLeftRow : this.eFullWidthRowLeft;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getPinnedRightRowElement = function () {\n return this.ePinnedRightRow ? this.ePinnedRightRow : this.eFullWidthRowRight;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowComp.prototype.getBodyRowElement = function () {\n return this.eBodyRow ? this.eBodyRow : this.eFullWidthRowBody;\n };\n // returns the full width container\n RowComp.prototype.getFullWidthRowElement = function () {\n return this.eFullWidthRow;\n };\n RowComp.DOM_DATA_KEY_RENDERED_ROW = 'renderedRow';\n RowComp.FULL_WIDTH_CELL_RENDERER = 'fullWidthCellRenderer';\n RowComp.GROUP_ROW_RENDERER = 'groupRowRenderer';\n RowComp.GROUP_ROW_RENDERER_COMP_NAME = 'agGroupRowRenderer';\n RowComp.LOADING_CELL_RENDERER = 'loadingCellRenderer';\n RowComp.LOADING_CELL_RENDERER_COMP_NAME = 'agLoadingCellRenderer';\n RowComp.DETAIL_CELL_RENDERER = 'detailCellRenderer';\n RowComp.DETAIL_CELL_RENDERER_COMP_NAME = 'agDetailCellRenderer';\n return RowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$D = (undefined && undefined.__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})();\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$5 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar RowRenderer = /** @class */ (function (_super) {\n __extends$D(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.destroyFuncsForColumnListeners = [];\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCompsByIndex = {};\n _this.floatingTopRowComps = [];\n _this.floatingBottomRowComps = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n return _this;\n }\n RowRenderer.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n RowRenderer.prototype.getGridCore = function () {\n return this.gridCore;\n };\n RowRenderer.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowRenderer\");\n };\n RowRenderer.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.rowContainers = this.gridPanel.getRowContainers();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n this.registerCellEventListeners();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.redrawAfterModelUpdate();\n };\n // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n // all active cells.\n RowRenderer.prototype.registerCellEventListeners = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_FOCUSED, function (event) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onCellFocused(event); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FLASH_CELLS, function (event) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onFlashCells(event); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.onColumnHover(); });\n });\n // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n // then changing the width of the containers will impact left position. eg the center cols all have their\n // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n // in different containers so doesn't impact.\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {\n if (_this.printLayout) {\n _this.forEachCellComp(function (cellComp) { return cellComp.onLeftChanged(); });\n }\n });\n var rangeSelectionEnabled = this.gridOptionsWrapper.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.onRangeSelectionChanged(); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.updateRangeBordersIfRangeCount(); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PINNED, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.updateRangeBordersIfRangeCount(); });\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n _this.forEachCellComp(function (cellComp) { return cellComp.updateRangeBordersIfRangeCount(); });\n });\n }\n // add listeners to the grid columns\n this.refreshListenersToColumnsForCellComps();\n // if the grid columns change, then refresh the listeners again\n this.addDestroyableEventListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));\n this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n };\n // executes all functions in destroyFuncsForColumnListeners and then clears the list\n RowRenderer.prototype.removeGridColumnListeners = function () {\n this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });\n this.destroyFuncsForColumnListeners.length = 0;\n };\n // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n // once instead.\n RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {\n var _this = this;\n this.removeGridColumnListeners();\n var cols = this.columnController.getAllGridColumns();\n if (!cols) {\n return;\n }\n cols.forEach(function (col) {\n var forEachCellWithThisCol = function (callback) {\n _this.forEachCellComp(function (cellComp) {\n if (cellComp.getColumn() === col) {\n callback(cellComp);\n }\n });\n };\n var leftChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onLeftChanged(); });\n };\n var widthChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onWidthChanged(); });\n };\n var firstRightPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onFirstRightPinnedChanged(); });\n };\n var lastLeftPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellComp) { return cellComp.onLastLeftPinnedChanged(); });\n };\n col.addEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.addEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.addEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n _this.destroyFuncsForColumnListeners.push(function () {\n col.removeEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.removeEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.removeEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n });\n });\n };\n RowRenderer.prototype.onDomLayoutChanged = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n // out using absolute positioning when doing print layout\n var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate();\n }\n };\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n RowRenderer.prototype.datasourceChanged = function () {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.onPageLoaded = function (refreshEvent) {\n if (_.missing(refreshEvent)) {\n refreshEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: false\n };\n }\n this.onModelUpdated(refreshEvent);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var eCells = [];\n function callback(key, rowComp) {\n var eCell = rowComp.getCellForCol(column);\n if (eCell) {\n eCells.push(eCell);\n }\n }\n _.iterateObject(this.rowCompsByIndex, callback);\n _.iterateObject(this.floatingBottomRowComps, callback);\n _.iterateObject(this.floatingTopRowComps, callback);\n return eCells;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.floatingTopRowComps, this.pinnedRowModel.getPinnedTopRowData(), this.rowContainers.floatingTopPinnedLeft, this.rowContainers.floatingTopPinnedRight, this.rowContainers.floatingTop, this.rowContainers.floatingTopFullWidth);\n this.refreshFloatingRows(this.floatingBottomRowComps, this.pinnedRowModel.getPinnedBottomRowData(), this.rowContainers.floatingBottomPinnedLeft, this.rowContainers.floatingBottomPinnedRight, this.rowContainers.floatingBottom, this.rowContainers.floatingBottomFullWidth);\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes, pinnedLeftContainerComp, pinnedRightContainerComp, bodyContainerComp, fullWidthContainerComp) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroy();\n });\n rowComps.length = 0;\n if (rowNodes) {\n rowNodes.forEach(function (node) {\n var rowComp = new RowComp(_this.$scope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, node, _this.beans, false, false, _this.printLayout, _this.embedFullWidthRows);\n rowComp.init();\n rowComps.push(rowComp);\n });\n }\n this.flushContainers(rowComps);\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.onModelUpdated = function (refreshEvent) {\n var params = {\n recycleRows: refreshEvent.keepRenderedRows,\n animate: refreshEvent.animate,\n newData: refreshEvent.newData,\n newPage: refreshEvent.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (_.missing(rowNodes)) {\n return result;\n }\n _.iterateObject(this.rowCompsByIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n if (!rowNodes || rowNodes.length == 0) {\n return;\n }\n // we only need to be worried about rendered rows, as this method is\n // called to what's rendered. if the row isn't rendered, we don't care\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowComps(indexesToRemove);\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: true\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var focusedCell = params.suppressKeepFocus ? null : this.focusController.getFocusCellToUseAfterRefresh();\n if (_.missing(focusedCell)) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var activeElement = document.activeElement;\n var domData = this.gridOptionsWrapper.getDomData(activeElement, CellComp.DOM_DATA_KEY_CELL_COMP);\n var elementIsNotACellDev = _.missing(domData);\n return elementIsNotACellDev ? null : focusedCell;\n };\n // gets called after changes to the model.\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.sizeContainerToPageHeight();\n this.scrollToTopIfNewData(params);\n // never recycle rows when print layout, we draw each row again from scratch. this is because print layout\n // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.\n var recycleRows = !this.printLayout && params.recycleRows;\n var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();\n var rowsToRecycle = this.binRowComps(recycleRows);\n this.redraw(rowsToRecycle, animate);\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.restoreFocusedCell(focusedCell);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n if (scrollToTop && !suppressScrollToTop) {\n this.gridPanel.scrollToTop();\n }\n };\n RowRenderer.prototype.sizeContainerToPageHeight = function () {\n var containers = [\n this.rowContainers.body,\n this.rowContainers.fullWidth,\n this.rowContainers.pinnedLeft,\n this.rowContainers.pinnedRight\n ];\n if (this.printLayout) {\n containers.forEach(function (container) { return container.setHeight(null); });\n return;\n }\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to scroll the header\n // which might be needed us user wants to access columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.maxDivHeightScaler.setModelHeight(containerHeight);\n var realHeight = this.maxDivHeightScaler.getUiContainerHeight();\n containers.forEach(function (container) { return container.setHeight(realHeight); });\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"ag-Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, eg instead of api.refreshView(), \" +\n \"call setTimeout(function(){api.refreshView(),0}). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {\n if (cellPosition) {\n this.focusController.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachRowComp(function (key, rowComp) {\n rowComp.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.forEachCellComp = function (callback) {\n this.forEachRowComp(function (key, rowComp) { return rowComp.forEachCellComp(callback); });\n };\n RowRenderer.prototype.forEachRowComp = function (callback) {\n _.iterateObject(this.rowCompsByIndex, callback);\n _.iterateObject(this.floatingTopRowComps, callback);\n _.iterateObject(this.floatingBottomRowComps, callback);\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCompsByIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.flashCell(); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false\n };\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.refreshCell(refreshCellParams); });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellRenderer = cellComp.getCellRenderer();\n if (cellRenderer) {\n res.push(cellRenderer);\n }\n });\n return res;\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellEditor = cellComp.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.forEachCellComp(function (cellComp) {\n if (cellComp.isEditing()) {\n var cellPosition = cellComp.getCellPosition();\n res.push(cellPosition);\n }\n });\n return res;\n };\n // calls the callback for each cellComp that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so callback gets called 4 times, once for each cell.\n RowRenderer.prototype.forEachCellCompFiltered = function (rowNodes, columns, callback) {\n var _this = this;\n var rowIdsMap;\n if (_.exists(rowNodes)) {\n rowIdsMap = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowPinned === Constants.PINNED_TOP) {\n rowIdsMap.top[rowNode.id] = true;\n }\n else if (rowNode.rowPinned === Constants.PINNED_BOTTOM) {\n rowIdsMap.bottom[rowNode.id] = true;\n }\n else {\n rowIdsMap.normal[rowNode.id] = true;\n }\n });\n }\n var colIdsMap;\n if (_.exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnController.getGridColumn(colKey);\n if (_.exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowComp) {\n var rowNode = rowComp.getRowNode();\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n // skip this row if it is missing from the provided list\n if (_.exists(rowIdsMap)) {\n if (floating === Constants.PINNED_BOTTOM) {\n if (!rowIdsMap.bottom[id]) {\n return;\n }\n }\n else if (floating === Constants.PINNED_TOP) {\n if (!rowIdsMap.top[id]) {\n return;\n }\n }\n else {\n if (!rowIdsMap.normal[id]) {\n return;\n }\n }\n }\n rowComp.forEachCellComp(function (cellComp) {\n var colId = cellComp.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n callback(cellComp);\n });\n };\n _.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n processRow(rowComp);\n });\n if (this.floatingTopRowComps) {\n this.floatingTopRowComps.forEach(processRow);\n }\n if (this.floatingBottomRowComps) {\n this.floatingBottomRowComps.forEach(processRow);\n }\n };\n RowRenderer.prototype.destroy = function () {\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n _super.prototype.destroy.call(this);\n };\n RowRenderer.prototype.binRowComps = function (recycleRows) {\n var _this = this;\n var rowsToRecycle = {};\n var indexesToRemove;\n if (recycleRows) {\n indexesToRemove = [];\n _.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n if (_.exists(rowNode.id)) {\n rowsToRecycle[rowNode.id] = rowComp;\n delete _this.rowCompsByIndex[index];\n }\n else {\n indexesToRemove.push(index);\n }\n });\n }\n else {\n indexesToRemove = Object.keys(this.rowCompsByIndex);\n }\n this.removeRowComps(indexesToRemove);\n return rowsToRecycle;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowComps = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var renderedRow = _this.rowCompsByIndex[indexToRemove];\n renderedRow.destroy();\n delete _this.rowCompsByIndex[indexToRemove];\n });\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCompsByIndex);\n var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });\n this.removeRowComps(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function (rowsToRecycle) {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = _.createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n var checkRowToDraw = function (indexStr, rowComp) {\n var index = Number(indexStr);\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.doNotUnVirtualiseRow(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n };\n // if we are redrawing due to scrolling change, then old rows are in this.rowCompsByIndex\n _.iterateObject(this.rowCompsByIndex, checkRowToDraw);\n // if we are redrawing due to model update, then old rows are in rowsToRecycle\n _.iterateObject(rowsToRecycle, checkRowToDraw);\n indexesToDraw.sort(function (a, b) { return a - b; });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.maxDivHeightScaler.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);\n this.removeRowCompsNotToDraw(indexesToDraw);\n // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n if (this.printLayout) {\n animate = false;\n }\n // add in new rows\n var nextVmTurnFunctions = [];\n var rowComps = [];\n indexesToDraw.forEach(function (rowIndex) {\n var rowComp = _this.createOrUpdateRowComp(rowIndex, rowsToRecycle, animate, afterScroll);\n if (_.exists(rowComp)) {\n rowComps.push(rowComp);\n _.pushAll(nextVmTurnFunctions, rowComp.getAndClearNextVMTurnFunctions());\n }\n });\n this.flushContainers(rowComps);\n _.executeNextVMTurn(nextVmTurnFunctions);\n var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.taskQueue.addDestroyTask(this.destroyRowComps.bind(this, rowsToRecycle, animate));\n }\n else {\n this.destroyRowComps(rowsToRecycle, animate);\n }\n this.checkAngularCompile();\n this.gridPanel.updateRowCount();\n };\n RowRenderer.prototype.flushContainers = function (rowComps) {\n _.iterateObject(this.rowContainers, function (key, rowContainerComp) {\n if (rowContainerComp) {\n rowContainerComp.flushRowTemplates();\n }\n });\n rowComps.forEach(function (rowComp) { return rowComp.afterFlush(); });\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnController.isPinningLeft();\n var pinningRight = this.columnController.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n _.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.refreshFloatingRowComps();\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.refreshFullWidthRows = function () {\n var rowsToRemove = [];\n _.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var fullWidthRowsRefreshed = rowComp.refreshFullWidth();\n if (!fullWidthRowsRefreshed) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n }\n });\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowComp = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowComp = this.rowCompsByIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowComp) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (_.exists(rowNode) && _.exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowComp = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowComp = !rowComp;\n if (creatingNewRowComp) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (_.exists(rowNode)) {\n rowComp = this.createRowComp(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n else {\n // ensure row comp is in right position in DOM\n rowComp.ensureDomOrder();\n }\n if (rowNode) {\n // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n rowNode.alreadyRendered = true;\n }\n this.rowCompsByIndex[rowIndex] = rowComp;\n return rowComp;\n };\n RowRenderer.prototype.destroyRowComps = function (rowCompsMap, animate) {\n var delayedFuncs = [];\n _.iterateObject(rowCompsMap, function (nodeId, rowComp) {\n // if row was used, then it's null\n if (!rowComp) {\n return;\n }\n rowComp.destroy(animate);\n _.pushAll(delayedFuncs, rowComp.getAndClearDelayedDestroyFunctions());\n });\n _.executeInAWhile(delayedFuncs);\n };\n RowRenderer.prototype.checkAngularCompile = function () {\n var _this = this;\n // if we are doing angular compiling, then do digest the scope here\n if (this.gridOptionsWrapper.isAngularCompileRows()) {\n // we do it in a timeout, in case we are already in an apply\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var _this = this;\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else if (this.printLayout) {\n newFirst = this.paginationProxy.getPageFirstRow();\n newLast = this.paginationProxy.getPageLastRow();\n }\n else {\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var maxDivHeightScaler = this.maxDivHeightScaler.getOffset();\n var bodyVRange = this.gridPanel.getVScrollPosition();\n var bodyTopPixel = bodyVRange.top;\n var bodyBottomPixel = bodyVRange.bottom;\n var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();\n var firstPixel = bodyTopPixel + paginationOffset + maxDivHeightScaler - bufferPixels;\n var lastPixel = bodyBottomPixel + paginationOffset + maxDivHeightScaler + bufferPixels;\n this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n // adjust, in case buffer extended actual size\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n // killing the browser, we limit the number of rows. just in case some use case we didn't think\n // of, we also have a property to not do this operation.\n var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();\n var rowBufferMaxSize = Math.max(this.gridOptionsWrapper.getRowBuffer(), 500);\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > rowBufferMaxSize) {\n newLast = newFirst + rowBufferMaxSize;\n }\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n // only dispatch firstDataRendered if we have actually rendered some data\n if (this.paginationProxy.isRowsToRender()) {\n var event_2 = {\n type: Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n // added a small delay here because in some scenarios this can be fired\n // before the grid is actually rendered, causing component creation\n // on EVENT_FIRST_DATA_RENDERED to fail.\n window.setTimeout(function () { return _this.eventService.dispatchEventOnce(event_2); }, 50);\n }\n };\n RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n // all the other row models just hard code so the method just returns back false\n var rowHeightsChanged = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (rowHeightsChanged) {\n // if row heights have changed, we need to resize the containers the rows sit it\n this.sizeContainerToPageHeight();\n // we also need to update heightScaler as this has dependency of row container height\n this.maxDivHeightScaler.updateOffset();\n }\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n // c) if detail record of master detail, as users complained that the context of detail rows\n // was getting lost when detail row out of view. eg user expands to show detail row,\n // then manipulates the detail panel (eg sorts the detail grid), then context is lost\n // after detail panel is scrolled out of / into view.\n RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusController.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var rowIsDetail = rowNode.detail;\n var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowComp = function (rowNode, animate, afterScroll) {\n var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();\n // we don't use animations frames for printing, so the user can put the grid into print mode\n // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n // (via the animation frames) which is awkward to do from code.\n // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n // having animation frames for other times makes the grid look 'jumpy'.\n var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n var rowComp = new RowComp(this.$scope, this.rowContainers.body, this.rowContainers.pinnedLeft, this.rowContainers.pinnedRight, this.rowContainers.fullWidth, rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout, this.embedFullWidthRows);\n rowComp.init();\n return rowComp;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCompsByIndex;\n return Object.keys(renderedRows).map(function (key) { return renderedRows[key].getRowNode(); });\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n RowRenderer.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n var nextCell = currentCell;\n var finished = false;\n while (!finished) {\n // if the current cell is spanning across multiple columns, we need to move\n // our current position to be the last cell on the right before finding the\n // the next target.\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (key === Constants.KEY_LEFT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n }\n else if (key === Constants.KEY_RIGHT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n // eg if going down, and nextCell=undefined, means we are gone past the last row\n var hitEdgeOfGrid = _.missing(nextCell);\n if (hitEdgeOfGrid) {\n finished = true;\n continue;\n }\n var rowNode = this.rowPositionUtils.getRowNode(nextCell);\n // we do not allow focusing on detail rows and full width rows\n if (rowNode.detail || rowNode.isFullWidthCell()) {\n continue;\n }\n // if not a group, then we have a valid row, so quit the search\n if (!rowNode.group) {\n finished = true;\n continue;\n }\n // full width rows cannot be focused, so if it's a group and using full width rows,\n // we need to skip over the row\n var pivotMode = this.columnController.isPivotMode();\n var usingFullWidthRows = this.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);\n if (!usingFullWidthRows) {\n finished = true;\n }\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n if (_.exists(userFunc)) {\n var params = {\n key: key,\n previousCellPosition: currentCell,\n nextCellPosition: nextCell ? nextCell : null,\n event: event\n };\n var userCell = userFunc(params);\n if (_.exists(userCell)) {\n if (userCell.floating) {\n _.doOnce(function () { console.warn(\"ag-Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextCell = {\n rowPinned: userCell.rowPinned,\n rowIndex: userCell.rowIndex,\n column: userCell.column\n };\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n // in case we have col spanning we get the cellComp and use it to\n // get the position. This was we always focus the first cell inside\n // the spanning.\n this.ensureCellVisible(nextCell); // ensureCellVisible first, to make sure nextCell is rendered\n var cellComp = this.getComponentForCell(nextCell);\n // not guaranteed to have a cellComp when using the SSRM as blocks are loading.\n if (!cellComp) {\n return;\n }\n nextCell = cellComp.getCellPosition();\n // we call this again, as nextCell can be different to it's previous value due to Column Spanning\n // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the\n // last column in the group, however now it's the first column in the group). if we didn't do\n // ensureCellVisible again, then we could only be showing the last portion (last column) of the\n // merged cells.\n this.ensureCellVisible(nextCell);\n this.focusController.setFocusedCell(nextCell.rowIndex, nextCell.column, nextCell.rowPinned, true);\n if (this.rangeController) {\n this.rangeController.setRangeToCell(nextCell);\n }\n };\n RowRenderer.prototype.getLastCellOfColSpan = function (cell) {\n var cellComp = this.getComponentForCell(cell);\n if (!cellComp) {\n return cell;\n }\n var colSpanningList = cellComp.getColSpanningList();\n if (colSpanningList.length === 1) {\n return cell;\n }\n return {\n rowIndex: cell.rowIndex,\n column: _.last(colSpanningList),\n rowPinned: cell.rowPinned\n };\n };\n RowRenderer.prototype.ensureCellVisible = function (gridCell) {\n // this scrolls the row into view\n if (_.missing(gridCell.rowPinned)) {\n this.gridPanel.ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(gridCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // need to flush frames, to make sure the correct cells are rendered\n this.animationFrameService.flushAllFrames();\n };\n RowRenderer.prototype.startEditingCell = function (gridCell, keyPress, charPress) {\n var cell = this.getComponentForCell(gridCell);\n if (cell) {\n cell.startRowOrCellEdit(keyPress, charPress);\n }\n };\n RowRenderer.prototype.getComponentForCell = function (cellPosition) {\n var rowComponent;\n switch (cellPosition.rowPinned) {\n case Constants.PINNED_TOP:\n rowComponent = this.floatingTopRowComps[cellPosition.rowIndex];\n break;\n case Constants.PINNED_BOTTOM:\n rowComponent = this.floatingBottomRowComps[cellPosition.rowIndex];\n break;\n default:\n rowComponent = this.rowCompsByIndex[cellPosition.rowIndex];\n break;\n }\n if (!rowComponent) {\n return null;\n }\n var cellComponent = rowComponent.getRenderedCellForColumn(cellPosition.column);\n return cellComponent;\n };\n RowRenderer.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowRenderer.prototype.onTabKeyDown = function (previousRenderedCell, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var success = this.moveToCellAfter(previousRenderedCell, backwards);\n if (success) {\n keyboardEvent.preventDefault();\n }\n };\n RowRenderer.prototype.tabToNextCell = function (backwards) {\n var focusedCell = this.focusController.getFocusedCell();\n // if no focus, then cannot navigate\n if (_.missing(focusedCell)) {\n return false;\n }\n var renderedCell = this.getComponentForCell(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n if (_.missing(renderedCell)) {\n return false;\n }\n var result = this.moveToCellAfter(renderedCell, backwards);\n return result;\n };\n RowRenderer.prototype.moveToCellAfter = function (previousRenderedCell, backwards) {\n var editing = previousRenderedCell.isEditing();\n var res;\n if (editing) {\n if (this.gridOptionsWrapper.isFullRowEdit()) {\n res = this.moveToNextEditingRow(previousRenderedCell, backwards);\n }\n else {\n res = this.moveToNextEditingCell(previousRenderedCell, backwards);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previousRenderedCell, backwards);\n }\n return res;\n };\n RowRenderer.prototype.moveToNextEditingCell = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getCellPosition();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousRenderedCell.stopEditing();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = _.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.startEditingIfEnabled(null, null, true);\n nextRenderedCell.focusCell(false);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextEditingRow = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getCellPosition();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = _.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n this.moveEditToNextCellOrRow(previousRenderedCell, nextRenderedCell);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextCellNotEditing = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getCellPosition();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, false);\n var foundCell = _.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.focusCell(true);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveEditToNextCellOrRow = function (previousRenderedCell, nextRenderedCell) {\n var pGridCell = previousRenderedCell.getCellPosition();\n var nGridCell = nextRenderedCell.getCellPosition();\n var rowsMatch = pGridCell.rowIndex === nGridCell.rowIndex && pGridCell.rowPinned === nGridCell.rowPinned;\n if (rowsMatch) {\n // same row, so we don't start / stop editing, we just move the focus along\n previousRenderedCell.setFocusOutOnEditor();\n nextRenderedCell.setFocusInOnEditor();\n }\n else {\n var pRow = previousRenderedCell.getRenderedRow();\n var nRow = nextRenderedCell.getRenderedRow();\n previousRenderedCell.setFocusOutOnEditor();\n pRow.stopEditing();\n nRow.startRowEditing();\n nextRenderedCell.setFocusInOnEditor();\n }\n nextRenderedCell.focusCell();\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n RowRenderer.prototype.findNextCellToFocusOn = function (gridCell, backwards, startEditing) {\n var nextCell = gridCell;\n while (true) {\n if (!backwards) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = this.cellNavigationService.getNextTabbedCell(nextCell, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n if (_.exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellPosition: gridCell,\n nextCellPosition: nextCell ? nextCell : null\n };\n var userCell = userFunc(params);\n if (_.exists(userCell)) {\n if (userCell.floating) {\n _.doOnce(function () { console.warn(\"ag-Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextCell = {\n rowIndex: userCell.rowIndex,\n column: userCell.column,\n rowPinned: userCell.rowPinned\n };\n }\n else {\n nextCell = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextCell) {\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n if (startEditing) {\n var rowNode = this.lookupRowNodeForCell(nextCell);\n var cellIsEditable = nextCell.column.isCellEditable(rowNode);\n if (!cellIsEditable) {\n continue;\n }\n }\n // this scrolls the row into view\n var cellIsNotFloating = _.missing(nextCell.rowPinned);\n if (cellIsNotFloating) {\n this.gridPanel.ensureIndexVisible(nextCell.rowIndex);\n }\n // pinned columns don't scroll, so no need to ensure index visible\n if (!nextCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(nextCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // get the grid panel to flush all animation frames - otherwise the call below to get the cellComp\n // could fail, if we just scrolled the grid (to make a cell visible) and the rendering hasn't finished.\n this.animationFrameService.flushAllFrames();\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCellComp = this.getComponentForCell(nextCell);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (_.missing(nextCellComp)) {\n continue;\n }\n if (nextCellComp.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeController) {\n this.rangeController.setRangeToCell(nextCell);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCellComp;\n }\n };\n RowRenderer.prototype.lookupRowNodeForCell = function (cell) {\n if (cell.rowPinned === Constants.PINNED_TOP) {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.rowPinned === Constants.PINNED_BOTTOM) {\n return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n }\n return this.paginationProxy.getRow(cell.rowIndex);\n };\n __decorate$H([\n Autowired(\"paginationProxy\")\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate$H([\n Autowired(\"columnController\")\n ], RowRenderer.prototype, \"columnController\", void 0);\n __decorate$H([\n Autowired(\"gridOptionsWrapper\")\n ], RowRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$H([\n Autowired(\"$scope\")\n ], RowRenderer.prototype, \"$scope\", void 0);\n __decorate$H([\n Autowired(\"eventService\")\n ], RowRenderer.prototype, \"eventService\", void 0);\n __decorate$H([\n Autowired(\"pinnedRowModel\")\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate$H([\n Autowired(\"rowModel\")\n ], RowRenderer.prototype, \"rowModel\", void 0);\n __decorate$H([\n Autowired(\"loggerFactory\")\n ], RowRenderer.prototype, \"loggerFactory\", void 0);\n __decorate$H([\n Autowired(\"focusController\")\n ], RowRenderer.prototype, \"focusController\", void 0);\n __decorate$H([\n Autowired(\"cellNavigationService\")\n ], RowRenderer.prototype, \"cellNavigationService\", void 0);\n __decorate$H([\n Autowired(\"columnApi\")\n ], RowRenderer.prototype, \"columnApi\", void 0);\n __decorate$H([\n Autowired(\"gridApi\")\n ], RowRenderer.prototype, \"gridApi\", void 0);\n __decorate$H([\n Autowired(\"beans\")\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate$H([\n Autowired(\"maxDivHeightScaler\")\n ], RowRenderer.prototype, \"maxDivHeightScaler\", void 0);\n __decorate$H([\n Autowired(\"animationFrameService\")\n ], RowRenderer.prototype, \"animationFrameService\", void 0);\n __decorate$H([\n Autowired(\"rowPositionUtils\")\n ], RowRenderer.prototype, \"rowPositionUtils\", void 0);\n __decorate$H([\n Optional(\"rangeController\")\n ], RowRenderer.prototype, \"rangeController\", void 0);\n __decorate$H([\n __param$5(0, Qualifier(\"loggerFactory\"))\n ], RowRenderer.prototype, \"agWire\", null);\n RowRenderer = __decorate$H([\n Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar CssClassApplier = /** @class */ (function () {\n function CssClassApplier() {\n }\n CssClassApplier.addHeaderClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addToolPanelClassesFromColDef = function (abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(abstractColDef)) {\n return;\n }\n this.addColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.addColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, eHeaderCell, gridOptionsWrapper, column, columnGroup) {\n if (_.missing(classesOrFunc)) {\n return;\n }\n var classToUse;\n if (typeof classesOrFunc === 'function') {\n var params = {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column: column,\n columnGroup: columnGroup,\n context: gridOptionsWrapper.getContext(),\n api: gridOptionsWrapper.getApi()\n };\n var headerClassFunc = classesOrFunc;\n classToUse = headerClassFunc(params);\n }\n else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === 'string') {\n _.addCssClass(eHeaderCell, classToUse);\n }\n else if (Array.isArray(classToUse)) {\n classToUse.forEach(function (cssClassItem) {\n _.addCssClass(eHeaderCell, cssClassItem);\n });\n }\n };\n return CssClassApplier;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$E = (undefined && undefined.__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})();\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HoverFeature = /** @class */ (function (_super) {\n __extends$E(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.element = element;\n return _this;\n }\n HoverFeature.prototype.postConstruct = function () {\n this.addMouseHoverListeners();\n };\n HoverFeature.prototype.addMouseHoverListeners = function () {\n this.addDestroyableEventListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addDestroyableEventListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate$I([\n Autowired('columnHoverService')\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n __decorate$I([\n PostConstruct\n ], HoverFeature.prototype, \"postConstruct\", null);\n return HoverFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$F = (undefined && undefined.__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})();\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends$F(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n _this.printLayout = beans.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n return _.last(this.colsSpanning);\n }\n return this.columnOrGroup;\n };\n SetLeftFeature.prototype.init = function () {\n this.addDestroyableEventListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n var oldLeftExists = _.exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var left = this.getColumnOrGroup().getLeft();\n var oldLeft = this.getColumnOrGroup().getOldLeft();\n this.setLeft(oldLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = left;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === left) {\n _this.setLeft(left);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n if (!this.printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === Constants.PINNED_RIGHT) {\n var leftWidth_1 = this.beans.columnController.getPinnedLeftContainerWidth();\n var bodyWidth = this.beans.columnController.getBodyContainerWidth();\n return leftWidth_1 + bodyWidth + leftPosition;\n }\n // is in body\n var leftWidth = this.beans.columnController.getPinnedLeftContainerWidth();\n return leftWidth + leftPosition;\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (_.exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n if (this.columnOrGroup instanceof Column) {\n var colIndex = this.beans.columnController.getAllDisplayedColumns().indexOf(this.columnOrGroup);\n this.ariaEl.setAttribute('aria-colindex', (colIndex + 1).toString());\n }\n else {\n this.ariaEl.removeAttribute('aria-colindex');\n }\n };\n return SetLeftFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$G = (undefined && undefined.__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})();\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends$G(SelectAllFeature, _super);\n function SelectAllFeature(cbSelectAll, column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.cbSelectAll = cbSelectAll;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n return _this;\n }\n SelectAllFeature.prototype.postConstruct = function () {\n this.showOrHideSelectAll();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addDestroyableEventListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(this.cbSelectAllVisible);\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType();\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n // if no rows, always have it unselected\n if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n return false;\n }\n // if mix of selected and unselected, this is the tri-state\n if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n return null;\n }\n // only selected\n if (selectionCount.selected > 0) {\n return true;\n }\n // nothing selected\n return false;\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var selectionCount = this.getSelectionCount();\n var allSelected = this.getNextCheckboxState(selectionCount);\n this.cbSelectAll.setValue(allSelected);\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.getSelectionCount = function () {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) ;\n else {\n notSelectedCount++;\n }\n };\n if (this.filteredOnly) {\n this.gridApi.forEachNodeAfterFilter(callback);\n }\n else {\n this.gridApi.forEachNode(callback);\n }\n return {\n notSelected: notSelectedCount,\n selected: selectedCount\n };\n };\n SelectAllFeature.prototype.checkRightRowModelType = function () {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (!rowModelMatches) {\n console.warn(\"ag-Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n }\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.getValue();\n if (value) {\n this.selectionController.selectAllRowNodes(this.filteredOnly);\n }\n else {\n this.selectionController.deselectAllRowNodes(this.filteredOnly);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n result = func({\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi\n });\n }\n if (result) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n console.warn('headerCheckboxSelection is not supported for Server Side Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('headerCheckboxSelection is not supported for Infinite Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n console.warn('headerCheckboxSelection is not supported for Viewport Row Model');\n return false;\n }\n // otherwise the row model is compatible, so return true\n return true;\n }\n return false;\n };\n __decorate$J([\n Autowired('gridApi')\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate$J([\n Autowired('columnApi')\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate$J([\n Autowired('eventService')\n ], SelectAllFeature.prototype, \"eventService\", void 0);\n __decorate$J([\n Autowired('rowModel')\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate$J([\n Autowired('selectionController')\n ], SelectAllFeature.prototype, \"selectionController\", void 0);\n __decorate$J([\n Autowired('gridOptionsWrapper')\n ], SelectAllFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$J([\n PostConstruct\n ], SelectAllFeature.prototype, \"postConstruct\", null);\n return SelectAllFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$H = (undefined && undefined.__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})();\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderWrapperComp = /** @class */ (function (_super) {\n __extends$H(HeaderWrapperComp, _super);\n function HeaderWrapperComp(column, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderWrapperComp.TEMPLATE) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderWrapperComp.prototype.getColumn = function () {\n return this.column;\n };\n HeaderWrapperComp.prototype.getComponentHolder = function () {\n return this.column.getColDef();\n };\n HeaderWrapperComp.prototype.init = function () {\n var colDef = this.getComponentHolder();\n var displayName = this.columnController.getDisplayNameForColumn(this.column, 'header', true);\n var enableSorting = colDef.sortable;\n var enableMenu = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n this.appendHeaderComp(displayName, enableSorting, enableMenu);\n this.setupWidth();\n this.setupMovingCss();\n this.setupTooltip();\n this.setupResize();\n this.setupMenuClass();\n this.setupSortableClass(enableSorting);\n this.addColumnHoverListener();\n this.addMouseListeners();\n this.addFeature(new HoverFeature([this.column], this.getGui()));\n this.addDestroyableEventListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n this.addFeature(new SelectAllFeature(this.cbSelectAll, this.column));\n var setLeftFeature = new SetLeftFeature(this.column, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n this.addAttributes();\n CssClassApplier.addHeaderClassesFromColDef(colDef, this.getGui(), this.gridOptionsWrapper, this.column, null);\n };\n HeaderWrapperComp.prototype.addColumnHoverListener = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.onColumnHover();\n };\n HeaderWrapperComp.prototype.onColumnHover = function () {\n var isHovered = this.columnHoverService.isHovered(this.column);\n _.addOrRemoveCssClass(this.getGui(), 'ag-column-hover', isHovered);\n };\n HeaderWrapperComp.prototype.addMouseListeners = function () {\n var listener = this.onMouseOverOut.bind(this);\n this.addGuiEventListener(\"mouseenter\", listener);\n this.addGuiEventListener(\"mouseleave\", listener);\n };\n HeaderWrapperComp.prototype.onMouseOverOut = function (e) {\n if (this.headerComp && this.headerComp.setMouseOverParent) {\n this.headerComp.setMouseOverParent(e.type === \"mouseenter\");\n }\n };\n HeaderWrapperComp.prototype.setupSortableClass = function (enableSorting) {\n if (enableSorting) {\n var element = this.getGui();\n _.addCssClass(element, 'ag-header-cell-sortable');\n }\n };\n HeaderWrapperComp.prototype.onFilterChanged = function () {\n var filterPresent = this.column.isFilterActive();\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-filtered', filterPresent);\n };\n HeaderWrapperComp.prototype.appendHeaderComp = function (displayName, enableSorting, enableMenu) {\n var _this = this;\n var params = {\n column: this.column,\n displayName: displayName,\n enableSorting: enableSorting,\n enableMenu: enableMenu,\n showColumnMenu: function (source) {\n _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n },\n progressSort: function (multiSort) {\n _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: function (sort, multiSort) {\n _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderComponent(params).then(callback);\n };\n HeaderWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerComp) {\n this.appendChild(headerComp);\n this.setupMove(headerComp.getGui(), displayName);\n this.headerComp = headerComp;\n };\n HeaderWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n if (this.column.isMoving()) {\n _.addCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n else {\n _.removeCssClass(this.getGui(), 'ag-header-cell-moving');\n }\n };\n HeaderWrapperComp.prototype.setupMove = function (eHeaderCellLabel, displayName) {\n var _this = this;\n var colDef = this.column.getColDef();\n var suppressMove = this.gridOptionsWrapper.isSuppressMovableColumns()\n || this.getComponentHolder().suppressMovable\n || colDef.lockPosition;\n if (suppressMove &&\n !colDef.enableRowGroup &&\n !colDef.enablePivot) {\n return;\n }\n if (eHeaderCellLabel) {\n var dragSource_1 = {\n type: exports.DragSourceType.HeaderCell,\n eElement: eHeaderCellLabel,\n defaultIconName: DragAndDropService.ICON_HIDE,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: displayName,\n dragSourceDropTarget: this.dragSourceDropTarget,\n onDragStarted: function () { return !suppressMove && _this.column.setMoving(true, \"uiColumnMoved\"); },\n onDragStopped: function () { return !suppressMove && _this.column.setMoving(false, \"uiColumnMoved\"); }\n };\n this.dragAndDropService.addDragSource(dragSource_1, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource_1); });\n }\n };\n HeaderWrapperComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n HeaderWrapperComp.prototype.setupResize = function () {\n var _this = this;\n var colDef = this.getComponentHolder();\n // if no eResize in template, do nothing\n if (!this.eResize) {\n return;\n }\n if (!this.column.isResizable()) {\n _.removeFromParent(this.eResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n var weWantAutoSize = !this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;\n var skipHeaderOnAutoSize = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n if (weWantAutoSize) {\n this.addDestroyableEventListener(this.eResize, 'dblclick', function () {\n _this.columnController.autoSizeColumn(_this.column, skipHeaderOnAutoSize, \"uiColumnResized\");\n });\n var touchListener = new TouchListener(this.eResize);\n this.addDestroyableEventListener(touchListener, TouchListener.EVENT_DOUBLE_TAP, function () {\n _this.columnController.autoSizeColumn(_this.column, skipHeaderOnAutoSize, \"uiColumnResized\");\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n }\n };\n HeaderWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];\n this.columnController.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnDragged\");\n if (finished) {\n _.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n HeaderWrapperComp.prototype.onResizeStart = function (shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.resizeWithShiftKey = shiftKey;\n _.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderWrapperComp.prototype.getTooltipText = function () {\n var colDef = this.getComponentHolder();\n return colDef.headerTooltip;\n };\n HeaderWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n // add tooltip if exists\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.addFeature(new TooltipFeature(this, 'header'));\n }\n };\n HeaderWrapperComp.prototype.setupMovingCss = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_MOVING_CHANGED, this.onColumnMovingChanged.bind(this));\n this.onColumnMovingChanged();\n };\n HeaderWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.column.getColId());\n };\n HeaderWrapperComp.prototype.setupWidth = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.setupMenuClass = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, this.onMenuVisible.bind(this));\n this.onColumnWidthChanged();\n };\n HeaderWrapperComp.prototype.onMenuVisible = function () {\n this.addOrRemoveCssClass('ag-column-menu-visible', this.column.isMenuVisible());\n };\n HeaderWrapperComp.prototype.onColumnWidthChanged = function () {\n this.getGui().style.width = this.column.getActualWidth() + 'px';\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n HeaderWrapperComp.prototype.normaliseResizeAmount = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (this.pinned === Constants.PINNED_RIGHT) {\n result *= -1;\n }\n }\n return result;\n };\n HeaderWrapperComp.TEMPLATE = '
' +\n '
' +\n ' ' +\n // \n '
';\n __decorate$K([\n Autowired('gridOptionsWrapper')\n ], HeaderWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$K([\n Autowired('dragAndDropService')\n ], HeaderWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate$K([\n Autowired('columnController')\n ], HeaderWrapperComp.prototype, \"columnController\", void 0);\n __decorate$K([\n Autowired('horizontalResizeService')\n ], HeaderWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate$K([\n Autowired('menuFactory')\n ], HeaderWrapperComp.prototype, \"menuFactory\", void 0);\n __decorate$K([\n Autowired('gridApi')\n ], HeaderWrapperComp.prototype, \"gridApi\", void 0);\n __decorate$K([\n Autowired('columnApi')\n ], HeaderWrapperComp.prototype, \"columnApi\", void 0);\n __decorate$K([\n Autowired('sortController')\n ], HeaderWrapperComp.prototype, \"sortController\", void 0);\n __decorate$K([\n Autowired('eventService')\n ], HeaderWrapperComp.prototype, \"eventService\", void 0);\n __decorate$K([\n Autowired('userComponentFactory')\n ], HeaderWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate$K([\n Autowired('columnHoverService')\n ], HeaderWrapperComp.prototype, \"columnHoverService\", void 0);\n __decorate$K([\n Autowired('beans')\n ], HeaderWrapperComp.prototype, \"beans\", void 0);\n __decorate$K([\n RefSelector('eResize')\n ], HeaderWrapperComp.prototype, \"eResize\", void 0);\n __decorate$K([\n RefSelector('cbSelectAll')\n ], HeaderWrapperComp.prototype, \"cbSelectAll\", void 0);\n __decorate$K([\n PostConstruct\n ], HeaderWrapperComp.prototype, \"init\", null);\n return HeaderWrapperComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$I = (undefined && undefined.__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})();\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupWrapperComp = /** @class */ (function (_super) {\n __extends$I(HeaderGroupWrapperComp, _super);\n function HeaderGroupWrapperComp(columnGroup, dragSourceDropTarget, pinned) {\n var _this = _super.call(this, HeaderGroupWrapperComp.TEMPLATE) || this;\n // the children can change, we keep destroy functions related to listening to the children here\n _this.childColumnsDestroyFuncs = [];\n _this.columnGroup = columnGroup;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.pinned = pinned;\n return _this;\n }\n HeaderGroupWrapperComp.prototype.postConstruct = function () {\n CssClassApplier.addHeaderClassesFromColDef(this.getComponentHolder(), this.getGui(), this.gridOptionsWrapper, null, this.columnGroup);\n var displayName = this.columnController.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n this.appendHeaderGroupComp(displayName);\n this.setupResize();\n this.addClasses();\n this.setupWidth();\n this.addAttributes();\n this.setupMovingCss();\n this.setupTooltip();\n this.addFeature(new HoverFeature(this.columnGroup.getOriginalColumnGroup().getLeafColumns(), this.getGui()));\n var setLeftFeature = new SetLeftFeature(this.columnGroup, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n };\n HeaderGroupWrapperComp.prototype.setupMovingCss = function () {\n var _this = this;\n var originalColumnGroup = this.columnGroup.getOriginalColumnGroup();\n var leafColumns = originalColumnGroup.getLeafColumns();\n leafColumns.forEach(function (col) {\n _this.addDestroyableEventListener(col, Column.EVENT_MOVING_CHANGED, _this.onColumnMovingChanged.bind(_this));\n });\n this.onColumnMovingChanged();\n };\n HeaderGroupWrapperComp.prototype.getColumn = function () {\n return this.columnGroup;\n };\n HeaderGroupWrapperComp.prototype.getComponentHolder = function () {\n return this.columnGroup.getColGroupDef();\n };\n HeaderGroupWrapperComp.prototype.getTooltipText = function () {\n var colGroupDef = this.getComponentHolder();\n return colGroupDef && colGroupDef.headerTooltip;\n };\n HeaderGroupWrapperComp.prototype.setupTooltip = function () {\n var tooltipText = this.getTooltipText();\n if (tooltipText == null) {\n return;\n }\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', tooltipText);\n }\n else {\n this.addFeature(new TooltipFeature(this, 'headerGroup'));\n }\n };\n HeaderGroupWrapperComp.prototype.onColumnMovingChanged = function () {\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n _.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-moving', this.columnGroup.isMoving());\n };\n HeaderGroupWrapperComp.prototype.addAttributes = function () {\n this.getGui().setAttribute(\"col-id\", this.columnGroup.getUniqueId());\n };\n HeaderGroupWrapperComp.prototype.appendHeaderGroupComp = function (displayName) {\n var _this = this;\n var params = {\n displayName: displayName,\n columnGroup: this.columnGroup,\n setExpanded: function (expanded) {\n _this.columnController.setColumnGroupOpened(_this.columnGroup.getOriginalColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n if (!displayName) {\n var columnGroup = this.columnGroup;\n var leafCols = columnGroup.getLeafColumns();\n // find the top most column group that represents the same columns. so if we are dragging a group, we also\n // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n // of grouping, with each group only containing the next group, and the last group containing three columns,\n // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n // the groups represent the same column set.\n while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n columnGroup = columnGroup.getParent();\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef) {\n displayName = colGroupDef.headerName;\n }\n if (!displayName) {\n displayName = leafCols ? this.columnController.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n }\n }\n var callback = this.afterHeaderCompCreated.bind(this, displayName);\n this.userComponentFactory.newHeaderGroupComponent(params).then(callback);\n };\n HeaderGroupWrapperComp.prototype.afterHeaderCompCreated = function (displayName, headerGroupComp) {\n this.appendChild(headerGroupComp);\n this.setupMove(headerGroupComp.getGui(), displayName);\n };\n HeaderGroupWrapperComp.prototype.addClasses = function () {\n // having different classes below allows the style to not have a bottom border\n // on the group header, if no group is specified\n // columnGroup.getColGroupDef\n var style = this.columnGroup.isPadding() ? 'no' : 'with';\n this.addCssClass(\"ag-header-group-cell-\" + style + \"-group\");\n };\n HeaderGroupWrapperComp.prototype.setupMove = function (eHeaderGroup, displayName) {\n var _this = this;\n if (!eHeaderGroup) {\n return;\n }\n if (this.isSuppressMoving()) {\n return;\n }\n var allLeafColumns = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n var dragSource = {\n type: exports.DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n defaultIconName: DragAndDropService.ICON_HIDE,\n dragItemName: displayName,\n // we add in the original group leaf columns, so we move both visible and non-visible items\n getDragItem: this.getDragItemForGroup.bind(this),\n dragSourceDropTarget: this.dragSourceDropTarget,\n onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n // and in the order they are currently in the screen.\n HeaderGroupWrapperComp.prototype.getDragItemForGroup = function () {\n var allColumnsOriginalOrder = this.columnGroup.getOriginalColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n var visibleState = {};\n allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n var allColumnsCurrentOrder = [];\n this.columnController.getAllDisplayedColumns().forEach(function (column) {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n _.removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n // we are left with non-visible columns, stick these in at the end\n allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n };\n HeaderGroupWrapperComp.prototype.isSuppressMoving = function () {\n // if any child is fixed, then don't allow moving\n var childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();\n return result;\n };\n HeaderGroupWrapperComp.prototype.setupWidth = function () {\n // we need to listen to changes in child columns, as they impact our width\n this.addListenersToChildrenColumns();\n // the children belonging to this group can change, so we need to add and remove listeners as they change\n this.addDestroyableEventListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n this.onWidthChanged();\n // the child listeners are not tied to this components life-cycle, as children can get added and removed\n // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n // listeners are removed when we finally get destroyed\n this.addDestroyFunc(this.destroyListenersOnChildrenColumns.bind(this));\n };\n HeaderGroupWrapperComp.prototype.onDisplayedChildrenChanged = function () {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n };\n HeaderGroupWrapperComp.prototype.addListenersToChildrenColumns = function () {\n var _this = this;\n // first destroy any old listeners\n this.destroyListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n var widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(function (column) {\n column.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.addEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n _this.childColumnsDestroyFuncs.push(function () {\n column.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.removeEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n });\n });\n };\n HeaderGroupWrapperComp.prototype.destroyListenersOnChildrenColumns = function () {\n this.childColumnsDestroyFuncs.forEach(function (func) { return func(); });\n this.childColumnsDestroyFuncs = [];\n };\n HeaderGroupWrapperComp.prototype.onWidthChanged = function () {\n this.getGui().style.width = this.columnGroup.getActualWidth() + 'px';\n };\n HeaderGroupWrapperComp.prototype.setupResize = function () {\n var _this = this;\n this.eHeaderCellResize = this.getRefElement('agResize');\n if (!this.columnGroup.isResizable()) {\n _.removeFromParent(this.eHeaderCellResize);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eHeaderCellResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!this.gridOptionsWrapper.isSuppressAutoSize()) {\n var skipHeaderOnAutoSize_1 = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n this.eHeaderCellResize.addEventListener('dblclick', function (event) {\n // get list of all the column keys we are responsible for\n var keys = [];\n _this.columnGroup.getDisplayedLeafColumns().forEach(function (column) {\n // not all cols in the group may be participating with auto-resize\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n _this.columnController.autoSizeColumns(keys, skipHeaderOnAutoSize_1, \"uiColumnResized\");\n }\n });\n }\n };\n HeaderGroupWrapperComp.prototype.onResizeStart = function (shiftKey) {\n var _this = this;\n var leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n this.resizeRatios = [];\n this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n var takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnController.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n }\n else {\n this.resizeTakeFromCols = null;\n this.resizeTakeFromStartWidth = null;\n this.resizeTakeFromRatios = null;\n }\n _.addCssClass(this.getGui(), 'ag-column-resizing');\n };\n HeaderGroupWrapperComp.prototype.onResizing = function (finished, resizeAmount) {\n var resizeSets = [];\n var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: this.resizeStartWidth + resizeAmountNormalised\n });\n if (this.resizeTakeFromCols) {\n resizeSets.push({\n columns: this.resizeTakeFromCols,\n ratios: this.resizeTakeFromRatios,\n width: this.resizeTakeFromStartWidth - resizeAmountNormalised\n });\n }\n this.columnController.resizeColumnSets(resizeSets, finished, 'uiColumnDragged');\n if (finished) {\n _.removeCssClass(this.getGui(), 'ag-column-resizing');\n }\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n HeaderGroupWrapperComp.prototype.normaliseDragChange = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else if (this.pinned === Constants.PINNED_RIGHT) {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n result *= -1;\n }\n return result;\n };\n HeaderGroupWrapperComp.TEMPLATE = '
' +\n '
' +\n '
';\n __decorate$L([\n Autowired('gridOptionsWrapper')\n ], HeaderGroupWrapperComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$L([\n Autowired('columnController')\n ], HeaderGroupWrapperComp.prototype, \"columnController\", void 0);\n __decorate$L([\n Autowired('horizontalResizeService')\n ], HeaderGroupWrapperComp.prototype, \"horizontalResizeService\", void 0);\n __decorate$L([\n Autowired('dragAndDropService')\n ], HeaderGroupWrapperComp.prototype, \"dragAndDropService\", void 0);\n __decorate$L([\n Autowired('userComponentFactory')\n ], HeaderGroupWrapperComp.prototype, \"userComponentFactory\", void 0);\n __decorate$L([\n Autowired('gridApi')\n ], HeaderGroupWrapperComp.prototype, \"gridApi\", void 0);\n __decorate$L([\n Autowired('columnApi')\n ], HeaderGroupWrapperComp.prototype, \"columnApi\", void 0);\n __decorate$L([\n Autowired('beans')\n ], HeaderGroupWrapperComp.prototype, \"beans\", void 0);\n __decorate$L([\n PostConstruct\n ], HeaderGroupWrapperComp.prototype, \"postConstruct\", null);\n return HeaderGroupWrapperComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$J = (undefined && undefined.__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})();\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// optional floating filter for user provided filters - instead of providing a floating filter,\n// they can provide a getModelAsString() method on the filter instead. this class just displays\n// the string returned from getModelAsString()\nvar ReadOnlyFloatingFilter = /** @class */ (function (_super) {\n __extends$J(ReadOnlyFloatingFilter, _super);\n function ReadOnlyFloatingFilter() {\n return _super.call(this, /* html */ \"\\n
\\n \\n
\") || this;\n }\n ReadOnlyFloatingFilter.prototype.init = function (params) {\n this.params = params;\n this.eFloatingFilterText.setDisabled(true);\n };\n ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.setValue('');\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n // getModelAsString should be present, as we check this\n // in floatingFilterWrapper\n if (filterInstance.getModelAsString) {\n var modelAsString = filterInstance.getModelAsString(parentModel);\n _this.eFloatingFilterText.setValue(modelAsString);\n }\n });\n };\n __decorate$M([\n RefSelector('eFloatingFilterText')\n ], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n return ReadOnlyFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$K = (undefined && undefined.__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})();\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FloatingFilterWrapper = /** @class */ (function (_super) {\n __extends$K(FloatingFilterWrapper, _super);\n function FloatingFilterWrapper(column) {\n var _this = _super.call(this, FloatingFilterWrapper.TEMPLATE) || this;\n _this.column = column;\n return _this;\n }\n FloatingFilterWrapper.prototype.postConstruct = function () {\n this.setupFloatingFilter();\n this.setupWidth();\n this.setupLeftPositioning();\n this.setupColumnHover();\n this.addFeature(new HoverFeature([this.column], this.getGui()));\n this.addDestroyableEventListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n };\n FloatingFilterWrapper.prototype.setupFloatingFilter = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n if (colDef.filter && colDef.floatingFilter) {\n this.floatingFilterCompPromise = this.getFloatingFilterInstance();\n if (this.floatingFilterCompPromise) {\n this.floatingFilterCompPromise.then(function (compInstance) {\n if (compInstance) {\n _this.setupWithFloatingFilter(compInstance);\n _this.setupSyncWithFilter();\n }\n else {\n _this.setupEmpty();\n }\n });\n }\n else {\n this.setupEmpty();\n }\n }\n else {\n this.setupEmpty();\n }\n };\n FloatingFilterWrapper.prototype.setupLeftPositioning = function () {\n var setLeftFeature = new SetLeftFeature(this.column, this.getGui(), this.beans);\n setLeftFeature.init();\n this.addDestroyFunc(setLeftFeature.destroy.bind(setLeftFeature));\n };\n FloatingFilterWrapper.prototype.setupSyncWithFilter = function () {\n var _this = this;\n var syncWithFilter = function (filterChangedEvent) {\n var parentModel = _this.getFilterComponent().resolveNow(null, function (filter) { return filter.getModel(); });\n _this.onParentModelChanged(parentModel, filterChangedEvent);\n };\n this.addDestroyableEventListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n if (this.filterManager.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n };\n // linked to event listener in template\n FloatingFilterWrapper.prototype.showParentFilter = function () {\n this.menuFactory.showMenuAfterButtonClick(this.column, this.eButtonShowMainFilter, 'filterMenuTab', ['filterMenuTab']);\n };\n FloatingFilterWrapper.prototype.setupColumnHover = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, this.onColumnHover.bind(this));\n this.onColumnHover();\n };\n FloatingFilterWrapper.prototype.onColumnHover = function () {\n addOrRemoveCssClass(this.getGui(), 'ag-column-hover', this.columnHoverService.isHovered(this.column));\n };\n FloatingFilterWrapper.prototype.setupWidth = function () {\n this.addDestroyableEventListener(this.column, Column.EVENT_WIDTH_CHANGED, this.onColumnWidthChanged.bind(this));\n this.onColumnWidthChanged();\n };\n FloatingFilterWrapper.prototype.onColumnWidthChanged = function () {\n this.getGui().style.width = this.column.getActualWidth() + \"px\";\n };\n FloatingFilterWrapper.prototype.setupWithFloatingFilter = function (floatingFilterComp) {\n var disposeFunc = function () {\n if (floatingFilterComp.destroy) {\n floatingFilterComp.destroy();\n }\n };\n if (!this.isAlive()) {\n disposeFunc();\n return;\n }\n this.addDestroyFunc(disposeFunc);\n var floatingFilterCompUi = floatingFilterComp.getGui();\n addOrRemoveCssClass(this.eFloatingFilterBody, 'ag-floating-filter-body', !this.suppressFilterButton);\n addOrRemoveCssClass(this.eFloatingFilterBody, 'ag-floating-filter-full-body', this.suppressFilterButton);\n setDisplayed(this.eButtonWrapper, !this.suppressFilterButton);\n var eIcon = createIconNoSpan('filter', this.gridOptionsWrapper, this.column);\n this.eButtonShowMainFilter.appendChild(eIcon);\n this.eFloatingFilterBody.appendChild(floatingFilterCompUi);\n if (floatingFilterComp.afterGuiAttached) {\n floatingFilterComp.afterGuiAttached();\n }\n };\n FloatingFilterWrapper.prototype.parentFilterInstance = function (callback) {\n this.getFilterComponent().then(callback);\n };\n FloatingFilterWrapper.prototype.getFilterComponent = function () {\n return this.filterManager.getFilterComponent(this.column, 'NO_UI');\n };\n FloatingFilterWrapper.prototype.getFloatingFilterInstance = function () {\n var colDef = this.column.getColDef();\n var defaultFloatingFilterType;\n if (typeof colDef.filter === 'string') {\n // will be undefined if not in the map\n defaultFloatingFilterType = FloatingFilterWrapper.filterToFloatingFilterNames[colDef.filter];\n }\n else if (colDef.filterFramework) ;\n else if (colDef.filter === true) {\n var setFilterModuleLoaded = ModuleRegistry.isRegistered(exports.ModuleNames.SetFilterModule);\n defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';\n }\n var filterParams = this.filterManager.createFilterParams(this.column, this.column.getColDef());\n var finalFilterParams = this.userComponentFactory.createFinalParams(colDef, 'filter', filterParams);\n var params = {\n api: this.gridApi,\n column: this.column,\n filterParams: finalFilterParams,\n currentParentModel: this.currentParentModel.bind(this),\n parentFilterInstance: this.parentFilterInstance.bind(this),\n onFloatingFilterChanged: this.onFloatingFilterChanged.bind(this),\n suppressFilterButton: false // This one might be overridden from the colDef\n };\n // this is unusual - we need a params value OUTSIDE the component the params are for.\n // the params are for the floating filter component, but this property is actually for the wrapper.\n this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;\n var promise = this.userComponentFactory.newFloatingFilterComponent(colDef, params, defaultFloatingFilterType);\n if (!promise) {\n var filterComponent = this.getFilterComponentPrototype(colDef);\n var getModelAsStringExists = filterComponent && filterComponent.prototype && filterComponent.prototype.getModelAsString;\n if (getModelAsStringExists) {\n var compInstance = this.userComponentFactory.createUserComponentFromConcreteClass(ReadOnlyFloatingFilter, params);\n promise = Promise.resolve(compInstance);\n }\n }\n return promise;\n };\n FloatingFilterWrapper.prototype.createDynamicParams = function () {\n return {\n column: this.column,\n colDef: this.column.getColDef(),\n api: this.gridApi,\n columnApi: this.columnApi\n };\n };\n FloatingFilterWrapper.prototype.getFilterComponentPrototype = function (colDef) {\n var resolvedComponent = this.userComponentFactory.lookupComponentClassDef(colDef, 'filter', this.createDynamicParams());\n return resolvedComponent ? resolvedComponent.component : null;\n };\n FloatingFilterWrapper.prototype.setupEmpty = function () {\n setDisplayed(this.eButtonWrapper, false);\n };\n FloatingFilterWrapper.prototype.currentParentModel = function () {\n return this.getFilterComponent().resolveNow(null, function (filter) { return filter.getModel(); });\n };\n FloatingFilterWrapper.prototype.onParentModelChanged = function (model, filterChangedEvent) {\n if (!this.floatingFilterCompPromise) {\n return;\n }\n this.floatingFilterCompPromise.then(function (comp) { return comp.onParentModelChanged(model, filterChangedEvent); });\n };\n FloatingFilterWrapper.prototype.onFloatingFilterChanged = function () {\n console.warn('ag-Grid: since version 21.x, how floating filters are implemented has changed. ' +\n 'Instead of calling params.onFloatingFilterChanged(), get a reference to the main filter via ' +\n 'params.parentFilterInstance() and then set a value on the parent filter directly.');\n };\n FloatingFilterWrapper.filterToFloatingFilterNames = {\n set: 'agSetColumnFloatingFilter',\n agSetColumnFilter: 'agSetColumnFloatingFilter',\n number: 'agNumberColumnFloatingFilter',\n agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n date: 'agDateColumnFloatingFilter',\n agDateColumnFilter: 'agDateColumnFloatingFilter',\n text: 'agTextColumnFloatingFilter',\n agTextColumnFilter: 'agTextColumnFloatingFilter'\n };\n FloatingFilterWrapper.TEMPLATE = \n /* html */ \"
\\n
\\n
\\n \\n
\\n
\";\n __decorate$N([\n Autowired('columnHoverService')\n ], FloatingFilterWrapper.prototype, \"columnHoverService\", void 0);\n __decorate$N([\n Autowired('eventService')\n ], FloatingFilterWrapper.prototype, \"eventService\", void 0);\n __decorate$N([\n Autowired('beans')\n ], FloatingFilterWrapper.prototype, \"beans\", void 0);\n __decorate$N([\n Autowired('gridOptionsWrapper')\n ], FloatingFilterWrapper.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$N([\n Autowired('userComponentFactory')\n ], FloatingFilterWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate$N([\n Autowired('gridApi')\n ], FloatingFilterWrapper.prototype, \"gridApi\", void 0);\n __decorate$N([\n Autowired('columnApi')\n ], FloatingFilterWrapper.prototype, \"columnApi\", void 0);\n __decorate$N([\n Autowired('filterManager')\n ], FloatingFilterWrapper.prototype, \"filterManager\", void 0);\n __decorate$N([\n Autowired('menuFactory')\n ], FloatingFilterWrapper.prototype, \"menuFactory\", void 0);\n __decorate$N([\n RefSelector('eFloatingFilterBody')\n ], FloatingFilterWrapper.prototype, \"eFloatingFilterBody\", void 0);\n __decorate$N([\n RefSelector('eButtonWrapper')\n ], FloatingFilterWrapper.prototype, \"eButtonWrapper\", void 0);\n __decorate$N([\n RefSelector('eButtonShowMainFilter')\n ], FloatingFilterWrapper.prototype, \"eButtonShowMainFilter\", void 0);\n __decorate$N([\n PostConstruct\n ], FloatingFilterWrapper.prototype, \"postConstruct\", null);\n return FloatingFilterWrapper;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$L = (undefined && undefined.__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})();\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[HeaderRowType[\"COLUMN_GROUP\"] = 0] = \"COLUMN_GROUP\";\n HeaderRowType[HeaderRowType[\"COLUMN\"] = 1] = \"COLUMN\";\n HeaderRowType[HeaderRowType[\"FLOATING_FILTER\"] = 2] = \"FLOATING_FILTER\";\n})(HeaderRowType || (HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n __extends$L(HeaderRowComp, _super);\n function HeaderRowComp(dept, type, pinned, dropTarget) {\n var _this = _super.call(this, /* html */ \"
\") || this;\n _this.headerComps = {};\n _this.dept = dept;\n _this.type = type;\n _this.pinned = pinned;\n _this.dropTarget = dropTarget;\n var niceClassName = HeaderRowType[type].toLowerCase().replace(/_/g, '-');\n _this.addCssClass(\"ag-header-row-\" + niceClassName);\n if (isBrowserSafari()) {\n // fix for a Safari rendering bug that caused the header to flicker above chart panels\n // as you move the mouse over the header\n _this.getGui().style.transform = 'translateZ(0)';\n }\n return _this;\n }\n HeaderRowComp.prototype.forEachHeaderElement = function (callback) {\n var _this = this;\n Object.keys(this.headerComps).forEach(function (key) {\n callback(_this.headerComps[key]);\n });\n };\n HeaderRowComp.prototype.destroy = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n _super.prototype.destroy.call(this);\n };\n HeaderRowComp.prototype.removeAndDestroyChildComponents = function (idsToDestroy) {\n var _this = this;\n idsToDestroy.forEach(function (id) {\n var childHeaderComp = _this.headerComps[id];\n _this.getGui().removeChild(childHeaderComp.getGui());\n childHeaderComp.destroy();\n delete _this.headerComps[id];\n });\n };\n HeaderRowComp.prototype.onRowHeightChanged = function () {\n var headerRowCount = this.columnController.getHeaderRowCount();\n var sizes = [];\n var numberOfFloating = 0;\n var groupHeight;\n var headerHeight;\n if (this.columnController.isPivotMode()) {\n groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();\n }\n else {\n if (this.columnController.hasFloatingFilters()) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n for (var i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (var i = 0; i < numberOfFloating; i++) {\n sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());\n }\n var rowHeight = 0;\n for (var i = 0; i < this.dept; i++) {\n rowHeight += sizes[i];\n }\n this.getGui().style.top = rowHeight + 'px';\n this.getGui().style.height = sizes[this.dept] + 'px';\n };\n //noinspection JSUnusedLocalSymbols\n HeaderRowComp.prototype.init = function () {\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n };\n HeaderRowComp.prototype.onColumnResized = function () {\n this.setWidth();\n };\n HeaderRowComp.prototype.setWidth = function () {\n var width = this.getWidthForRow();\n this.getGui().style.width = width + 'px';\n };\n HeaderRowComp.prototype.getWidthForRow = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n var centerRow = missing(this.pinned);\n if (centerRow) {\n return this.columnController.getContainerWidth(Constants.PINNED_RIGHT)\n + this.columnController.getContainerWidth(Constants.PINNED_LEFT)\n + this.columnController.getContainerWidth(null);\n }\n else {\n return 0;\n }\n }\n else {\n // if not printing, just return the width as normal\n return this.columnController.getContainerWidth(this.pinned);\n }\n };\n HeaderRowComp.prototype.onGridColumnsChanged = function () {\n this.removeAndDestroyAllChildComponents();\n };\n HeaderRowComp.prototype.removeAndDestroyAllChildComponents = function () {\n var idsOfAllChildren = Object.keys(this.headerComps);\n this.removeAndDestroyChildComponents(idsOfAllChildren);\n };\n HeaderRowComp.prototype.onDisplayedColumnsChanged = function () {\n this.onVirtualColumnsChanged();\n this.setWidth();\n };\n HeaderRowComp.prototype.getItemsAtDepth = function () {\n var _this = this;\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n // for print layout, we add all columns into the center\n var centerContainer = missing(this.pinned);\n if (centerContainer) {\n var result_1 = [];\n [Constants.PINNED_LEFT, null, Constants.PINNED_RIGHT].forEach(function (pinned) {\n var items = _this.columnController.getVirtualHeaderGroupRow(pinned, _this.type == HeaderRowType.FLOATING_FILTER ?\n _this.dept - 1 :\n _this.dept);\n result_1 = result_1.concat(items);\n });\n return result_1;\n }\n else {\n return [];\n }\n }\n else {\n // when in normal layout, we add the columns for that container only\n return this.columnController.getVirtualHeaderGroupRow(this.pinned, this.type == HeaderRowType.FLOATING_FILTER ?\n this.dept - 1 :\n this.dept);\n }\n };\n HeaderRowComp.prototype.onVirtualColumnsChanged = function () {\n var _this = this;\n var currentChildIds = Object.keys(this.headerComps);\n var correctChildIds = [];\n var itemsAtDepth = this.getItemsAtDepth();\n itemsAtDepth.forEach(function (child) {\n // skip groups that have no displayed children. this can happen when the group is broken,\n // and this section happens to have nothing to display for the open / closed state.\n // (a broken group is one that is split, ie columns in the group have a non-group column\n // in between them)\n if (child.isEmptyGroup()) {\n return;\n }\n var idOfChild = child.getUniqueId();\n var eParentContainer = _this.getGui();\n // if we already have this cell rendered, do nothing\n var colAlreadyInDom = currentChildIds.indexOf(idOfChild) >= 0;\n var headerComp;\n var eHeaderCompGui;\n if (colAlreadyInDom) {\n removeFromArray(currentChildIds, idOfChild);\n }\n else {\n headerComp = _this.createHeaderComp(child);\n _this.headerComps[idOfChild] = headerComp;\n eHeaderCompGui = headerComp.getGui();\n eParentContainer.appendChild(eHeaderCompGui);\n }\n correctChildIds.push(idOfChild);\n });\n // at this point, anything left in currentChildIds is an element that is no longer in the viewport\n this.removeAndDestroyChildComponents(currentChildIds);\n var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n if (ensureDomOrder) {\n var correctChildOrder = correctChildIds.map(function (id) { return _this.headerComps[id].getGui(); });\n setDomChildOrder(this.getGui(), correctChildOrder);\n }\n };\n HeaderRowComp.prototype.createHeaderComp = function (columnGroupChild) {\n var result;\n switch (this.type) {\n case HeaderRowType.COLUMN:\n result = new HeaderWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.COLUMN_GROUP:\n result = new HeaderGroupWrapperComp(columnGroupChild, this.dropTarget, this.pinned);\n break;\n case HeaderRowType.FLOATING_FILTER:\n result = new FloatingFilterWrapper(columnGroupChild);\n break;\n }\n this.getContext().wireBean(result);\n return result;\n };\n __decorate$O([\n Autowired('gridOptionsWrapper')\n ], HeaderRowComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$O([\n Autowired('columnController')\n ], HeaderRowComp.prototype, \"columnController\", void 0);\n __decorate$O([\n Autowired('eventService')\n ], HeaderRowComp.prototype, \"eventService\", void 0);\n __decorate$O([\n PostConstruct\n ], HeaderRowComp.prototype, \"init\", null);\n return HeaderRowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MoveColumnController = /** @class */ (function () {\n function MoveColumnController(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !_.exists(pinned);\n }\n MoveColumnController.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MoveColumnController.prototype.init = function () {\n this.logger = this.loggerFactory.create('MoveColumnController');\n };\n MoveColumnController.prototype.getIconName = function () {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n };\n MoveColumnController.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === exports.DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = columns.filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true);\n };\n MoveColumnController.prototype.onDragLeave = function (draggingEvent) {\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n this.columnController.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnController.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n this.columnController.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnController.prototype.onDragStop = function () {\n this.ensureIntervalCleared();\n };\n MoveColumnController.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers don't scroll)\n if (this.centerContainer) {\n x += this.gridPanel.getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnController.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.gridPanel.getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.gridPanel.getCenterWidth();\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnController.prototype.onDragging = function (draggingEvent, fromEnter) {\n var _this = this;\n if (fromEnter === void 0) { fromEnter = false; }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (_.missing(draggingEvent.hDirection)) {\n return;\n }\n var mouseXNormalised = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(mouseXNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.getDragItem().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.getColDef().lockPinned) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n else {\n // if not pin locked, then always allowed to be in this container\n return true;\n }\n });\n this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, mouseXNormalised, fromEnter);\n };\n MoveColumnController.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case exports.HorizontalDirection.Left: return exports.HorizontalDirection.Right;\n case exports.HorizontalDirection.Right: return exports.HorizontalDirection.Left;\n default: console.error(\"ag-Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnController.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnController.getAllGridColumns();\n var indexes = _.sortNumerically(movingCols.map(function (col) { return gridCols.indexOf(col); }));\n var firstIndex = indexes[0];\n var lastIndex = _.last(indexes);\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnController.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter) {\n var draggingLeft = hDirection === exports.HorizontalDirection.Left;\n var draggingRight = hDirection === exports.HorizontalDirection.Right;\n var validMoves = this.calculateValidMoves(allMovingColumns, draggingRight, mouseX);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumns);\n if (validMoves.length === 0) {\n return;\n }\n var firstValidMove = validMoves[0];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == exports.DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection) {\n // only allow left drag if this column is moving left\n if (draggingLeft && firstValidMove >= oldIndex) {\n return;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && firstValidMove <= oldIndex) {\n return;\n }\n }\n for (var i = 0; i < validMoves.length; i++) {\n var move = validMoves[i];\n if (!this.columnController.doesMovePassRules(allMovingColumns, move)) {\n continue;\n }\n this.columnController.moveColumns(allMovingColumns, move, \"uiColumnDragged\");\n // important to return here, so once we do the first valid move, we don't try do any more\n return;\n }\n };\n MoveColumnController.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {\n var isMoveBlocked = this.gridOptionsWrapper.isSuppressMovableColumns() || movingCols.some(function (col) { return col.getColDef().suppressMovable; });\n if (isMoveBlocked) {\n return [];\n }\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnController.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnController.getAllGridColumns();\n var movingDisplayedCols = allDisplayedCols.filter(function (col) { return _.includes(movingCols, col); });\n var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !_.includes(movingCols, col); });\n var otherGridCols = allGridCols.filter(function (col) { return !_.includes(movingCols, col); });\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = mouseX;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var firstValidMove;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n if (firstValidMove === -1) {\n firstValidMove = 0;\n }\n }\n var validMoves = [firstValidMove];\n // add in other valid moves due to hidden columns and married children. for example, a particular\n // move might break a group that has married children (so move isn't valid), however there could\n // be hidden columns (not displayed) that we could jump over to make the move valid. because\n // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n // not work. for example imagine a group with 9 columns and all columns are hidden except the\n // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n // be relative to the not-shown column, however we need to consider the move jumping over all the\n // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n // grid, there would be no way to put a column after it (as the grid would only consider beside the\n // visible column, which would fail valid move rules).\n if (draggingRight) {\n // if dragging right, then we add all the additional moves to the right. so in other words\n // if the next move is not valid, find the next move to the right that is valid.\n var pointer = firstValidMove + 1;\n var lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n }\n else {\n // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n // left. however we also have to consider moves to the right for all hidden columns first.\n // (this logic is hard to reason with, it was worked out with trial and error,\n // move observation rather than science).\n // add moves to the right\n var pointer = firstValidMove;\n var lastIndex = allGridCols.length - 1;\n var displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n // add moves to the left\n pointer = firstValidMove - 1;\n var firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnController.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnController.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnController.prototype.ensureIntervalCleared = function () {\n if (this.moveInterval) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnController.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveLeft) {\n pixelsMoved = this.gridPanel.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = this.gridPanel.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? Constants.PINNED_LEFT : Constants.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate$P([\n Autowired('loggerFactory')\n ], MoveColumnController.prototype, \"loggerFactory\", void 0);\n __decorate$P([\n Autowired('columnController')\n ], MoveColumnController.prototype, \"columnController\", void 0);\n __decorate$P([\n Autowired('dragAndDropService')\n ], MoveColumnController.prototype, \"dragAndDropService\", void 0);\n __decorate$P([\n Autowired('gridOptionsWrapper')\n ], MoveColumnController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$P([\n PostConstruct\n ], MoveColumnController.prototype, \"init\", null);\n return MoveColumnController;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n }\n else {\n return null;\n }\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnController.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnController.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnController.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate$Q([\n Autowired('columnController')\n ], BodyDropPivotTarget.prototype, \"columnController\", void 0);\n __decorate$Q([\n Autowired('gridOptionsWrapper')\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DropType;\n(function (DropType) {\n DropType[DropType[\"ColumnMove\"] = 0] = \"ColumnMove\";\n DropType[DropType[\"Pivot\"] = 1] = \"Pivot\";\n})(DropType || (DropType = {}));\nvar BodyDropTarget = /** @class */ (function () {\n function BodyDropTarget(pinned, eContainer) {\n this.dropListeners = {};\n this.pinned = pinned;\n this.eContainer = eContainer;\n }\n BodyDropTarget.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.moveColumnController.registerGridComp(gridPanel);\n switch (this.pinned) {\n case Constants.PINNED_LEFT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetLeftContainers();\n break;\n case Constants.PINNED_RIGHT:\n this.eSecondaryContainers = this.gridPanel.getDropTargetRightContainers();\n break;\n default:\n this.eSecondaryContainers = this.gridPanel.getDropTargetBodyContainers();\n break;\n }\n };\n BodyDropTarget.prototype.isInterestedIn = function (type) {\n return type === exports.DragSourceType.HeaderCell ||\n (type === exports.DragSourceType.ToolPanel && this.gridOptionsWrapper.isAllowDragFromColumnsToolPanel());\n };\n BodyDropTarget.prototype.getSecondaryContainers = function () {\n return this.eSecondaryContainers;\n };\n BodyDropTarget.prototype.getContainer = function () {\n return this.eContainer;\n };\n BodyDropTarget.prototype.init = function () {\n this.moveColumnController = new MoveColumnController(this.pinned, this.eContainer);\n this.context.wireBean(this.moveColumnController);\n var bodyDropPivotTarget = new BodyDropPivotTarget(this.pinned);\n this.context.wireBean(bodyDropPivotTarget);\n this.dropListeners[DropType.ColumnMove] = this.moveColumnController;\n this.dropListeners[DropType.Pivot] = bodyDropPivotTarget;\n this.dragAndDropService.addDropTarget(this);\n };\n BodyDropTarget.prototype.getIconName = function () {\n return this.currentDropListener.getIconName();\n };\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n BodyDropTarget.prototype.getDropType = function (draggingEvent) {\n if (this.columnController.isPivotMode()) {\n // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n // a standard column move, however if it came from the toolpanel, then we are introducing\n // dimensions or values to the grid\n if (draggingEvent.dragSource.type === exports.DragSourceType.ToolPanel) {\n return DropType.Pivot;\n }\n return DropType.ColumnMove;\n }\n // it's a column, and not pivot mode, so always moving\n return DropType.ColumnMove;\n };\n BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n // we change visibility state and position.\n // if (this.columnController.isPivotMode()) {\n var dropType = this.getDropType(draggingEvent);\n this.currentDropListener = this.dropListeners[dropType];\n this.currentDropListener.onDragEnter(draggingEvent);\n };\n BodyDropTarget.prototype.onDragLeave = function (params) {\n this.currentDropListener.onDragLeave(params);\n };\n BodyDropTarget.prototype.onDragging = function (params) {\n this.currentDropListener.onDragging(params);\n };\n BodyDropTarget.prototype.onDragStop = function (params) {\n this.currentDropListener.onDragStop(params);\n };\n __decorate$R([\n Autowired('context')\n ], BodyDropTarget.prototype, \"context\", void 0);\n __decorate$R([\n Autowired('dragAndDropService')\n ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n __decorate$R([\n Autowired('columnController')\n ], BodyDropTarget.prototype, \"columnController\", void 0);\n __decorate$R([\n Autowired('gridOptionsWrapper')\n ], BodyDropTarget.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$R([\n PostConstruct\n ], BodyDropTarget.prototype, \"init\", null);\n return BodyDropTarget;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderContainer = /** @class */ (function () {\n function HeaderContainer(eContainer, eViewport, pinned) {\n this.headerRowComps = [];\n this.events = [];\n this.eContainer = eContainer;\n this.pinned = pinned;\n this.eViewport = eViewport;\n }\n HeaderContainer.prototype.registerGridComp = function (gridPanel) {\n this.setupDragAndDrop(gridPanel);\n };\n HeaderContainer.prototype.forEachHeaderElement = function (callback) {\n this.headerRowComps.forEach(function (headerRowComp) { return headerRowComp.forEachHeaderElement(callback); });\n };\n HeaderContainer.prototype.init = function () {\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n // if value changes, then if not pivoting, we at least need to change the label eg from sum() to avg(),\n // if pivoting, then the columns have changed\n this.events = [\n this.eventService.addEventListener(Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this)),\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this)),\n this.eventService.addEventListener(Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this)),\n this.eventService.addEventListener(Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this)),\n this.eventService.addEventListener(Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this)),\n this.eventService.addEventListener(Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this))\n ];\n };\n // if row group changes, that means we may need to add aggFuncs to the column headers,\n // if the grid goes from no aggregation (ie no grouping) to grouping\n HeaderContainer.prototype.onColumnRowGroupChanged = function () {\n this.onGridColumnsChanged();\n };\n // if the agg func of a column changes, then we may need to update the agg func in columns header\n HeaderContainer.prototype.onColumnValueChanged = function () {\n this.onGridColumnsChanged();\n };\n HeaderContainer.prototype.onColumnResized = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onDisplayedColumnsChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.onScrollVisibilityChanged = function () {\n this.setWidthOfPinnedContainer();\n };\n HeaderContainer.prototype.setWidthOfPinnedContainer = function () {\n var pinningLeft = this.pinned === Constants.PINNED_LEFT;\n var pinningRight = this.pinned === Constants.PINNED_RIGHT;\n var controller = this.columnController;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n if (pinningLeft || pinningRight) {\n // size to fit all columns\n var width = controller[pinningLeft ? 'getPinnedLeftContainerWidth' : 'getPinnedRightContainerWidth']();\n // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n // in the body, then we add extra space to keep header aligned with the body,\n // as body width fits the cols and the scrollbar\n var addPaddingForScrollbar = this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n if (addPaddingForScrollbar) {\n width += this.scrollWidth;\n }\n setFixedWidth(this.eContainer, width);\n }\n };\n HeaderContainer.prototype.destroy = function () {\n this.removeHeaderRowComps();\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n this.events = [];\n }\n };\n HeaderContainer.prototype.getRowComps = function () {\n return this.headerRowComps;\n };\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n HeaderContainer.prototype.onGridColumnsChanged = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.removeAndCreateAllRowComps = function () {\n this.removeHeaderRowComps();\n this.createHeaderRowComps();\n };\n // we expose this for gridOptions.api.refreshHeader() to call\n HeaderContainer.prototype.refresh = function () {\n this.removeAndCreateAllRowComps();\n };\n HeaderContainer.prototype.setupDragAndDrop = function (gridComp) {\n var dropContainer = this.eViewport ? this.eViewport : this.eContainer;\n var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n this.context.wireBean(bodyDropTarget);\n bodyDropTarget.registerGridComp(gridComp);\n };\n HeaderContainer.prototype.removeHeaderRowComps = function () {\n this.headerRowComps.forEach(function (headerRowComp) { return headerRowComp.destroy(); });\n this.headerRowComps.length = 0;\n clearElement(this.eContainer);\n };\n HeaderContainer.prototype.createHeaderRowComps = function () {\n // if we are displaying header groups, then we have many rows here.\n // go through each row of the header, one by one.\n var rowCount = this.columnController.getHeaderRowCount();\n for (var dept = 0; dept < rowCount; dept++) {\n var groupRow = dept !== (rowCount - 1);\n var type = groupRow ? HeaderRowType.COLUMN_GROUP : HeaderRowType.COLUMN;\n var headerRowComp = new HeaderRowComp(dept, type, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n if (!this.columnController.isPivotMode() && this.columnController.hasFloatingFilters()) {\n var headerRowComp = new HeaderRowComp(rowCount, HeaderRowType.FLOATING_FILTER, this.pinned, this.dropTarget);\n this.context.wireBean(headerRowComp);\n this.headerRowComps.push(headerRowComp);\n headerRowComp.getGui().setAttribute('aria-rowindex', this.headerRowComps.length.toString());\n this.eContainer.appendChild(headerRowComp.getGui());\n }\n };\n __decorate$S([\n Autowired('gridOptionsWrapper')\n ], HeaderContainer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$S([\n Autowired('context')\n ], HeaderContainer.prototype, \"context\", void 0);\n __decorate$S([\n Autowired('columnController')\n ], HeaderContainer.prototype, \"columnController\", void 0);\n __decorate$S([\n Autowired('eventService')\n ], HeaderContainer.prototype, \"eventService\", void 0);\n __decorate$S([\n Autowired('scrollVisibleService')\n ], HeaderContainer.prototype, \"scrollVisibleService\", void 0);\n __decorate$S([\n PostConstruct\n ], HeaderContainer.prototype, \"init\", null);\n __decorate$S([\n PreDestroy\n ], HeaderContainer.prototype, \"destroy\", null);\n return HeaderContainer;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$M = (undefined && undefined.__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})();\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRootComp = /** @class */ (function (_super) {\n __extends$M(HeaderRootComp, _super);\n function HeaderRootComp() {\n return _super.call(this, HeaderRootComp.TEMPLATE) || this;\n }\n HeaderRootComp.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.childContainers.forEach(function (c) { return c.registerGridComp(gridPanel); });\n };\n HeaderRootComp.prototype.postConstruct = function () {\n var _this = this;\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n this.gridApi.registerHeaderRootComp(this);\n this.autoWidthCalculator.registerHeaderRootComp(this);\n var centerContainer = new HeaderContainer(this.eHeaderContainer, this.eHeaderViewport, null);\n var pinnedLeftContainer = new HeaderContainer(this.ePinnedLeftHeader, null, Constants.PINNED_LEFT);\n var pinnedRightContainer = new HeaderContainer(this.ePinnedRightHeader, null, Constants.PINNED_RIGHT);\n this.childContainers = [centerContainer, pinnedLeftContainer, pinnedRightContainer];\n this.childContainers.forEach(function (container) { return _this.getContext().wireBean(container); });\n // shotgun way to get labels to change, eg from sum(amount) to avg(amount)\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshHeader.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.onPivotModeChanged();\n this.addPreventHeaderScroll();\n if (this.columnController.isReady()) {\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.onDomLayoutChanged = function () {\n var newValue = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newValue) {\n this.printLayout = newValue;\n this.refreshHeader();\n }\n };\n HeaderRootComp.prototype.setHorizontalScroll = function (offset) {\n this.eHeaderContainer.style.transform = \"translateX(\" + offset + \"px)\";\n };\n HeaderRootComp.prototype.forEachHeaderElement = function (callback) {\n this.childContainers.forEach(function (childContainer) { return childContainer.forEachHeaderElement(callback); });\n };\n HeaderRootComp.prototype.destroy = function () {\n this.childContainers.forEach(function (container) { return container.destroy(); });\n _super.prototype.destroy.call(this);\n };\n HeaderRootComp.prototype.refreshHeader = function () {\n this.childContainers.forEach(function (container) { return container.refresh(); });\n };\n HeaderRootComp.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnController.isPivotMode();\n addOrRemoveCssClass(this.getGui(), 'ag-pivot-on', pivotMode);\n addOrRemoveCssClass(this.getGui(), 'ag-pivot-off', !pivotMode);\n };\n HeaderRootComp.prototype.setHeight = function (height) {\n // one extra pixel is needed here to account for the\n // height of the border\n var px = height + 1 + \"px\";\n this.getGui().style.height = px;\n this.getGui().style.minHeight = px;\n };\n // if the user is in floating filter and hits tab a few times, the header can\n // end up scrolling to show items off the screen, leaving the grid and header\n // and the grid columns no longer in sync.\n HeaderRootComp.prototype.addPreventHeaderScroll = function () {\n var _this = this;\n this.addDestroyableEventListener(this.eHeaderViewport, 'scroll', function () {\n // if the header scrolls, the header will be out of sync. so we reset the\n // header scroll, and then scroll the body, which will in turn set the offset\n // on the header, giving the impression that the header scrolled as expected.\n var scrollLeft = _this.eHeaderViewport.scrollLeft;\n if (scrollLeft !== 0) {\n _this.gridPanel.scrollHorizontally(scrollLeft);\n _this.eHeaderViewport.scrollLeft = 0;\n }\n });\n };\n HeaderRootComp.prototype.setHeaderContainerWidth = function (width) {\n this.eHeaderContainer.style.width = width + \"px\";\n };\n HeaderRootComp.prototype.setLeftVisible = function (visible) {\n setDisplayed(this.ePinnedLeftHeader, visible);\n };\n HeaderRootComp.prototype.setRightVisible = function (visible) {\n setDisplayed(this.ePinnedRightHeader, visible);\n };\n HeaderRootComp.prototype.getHeaderRowCount = function () {\n return this.childContainers.length === 0 ? 0 : this.childContainers[0].getRowComps().length;\n };\n HeaderRootComp.TEMPLATE = \"\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate$T([\n RefSelector('ePinnedLeftHeader')\n ], HeaderRootComp.prototype, \"ePinnedLeftHeader\", void 0);\n __decorate$T([\n RefSelector('ePinnedRightHeader')\n ], HeaderRootComp.prototype, \"ePinnedRightHeader\", void 0);\n __decorate$T([\n RefSelector('eHeaderContainer')\n ], HeaderRootComp.prototype, \"eHeaderContainer\", void 0);\n __decorate$T([\n RefSelector('eHeaderViewport')\n ], HeaderRootComp.prototype, \"eHeaderViewport\", void 0);\n __decorate$T([\n Autowired('gridOptionsWrapper')\n ], HeaderRootComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$T([\n Autowired('columnController')\n ], HeaderRootComp.prototype, \"columnController\", void 0);\n __decorate$T([\n Autowired('eventService')\n ], HeaderRootComp.prototype, \"eventService\", void 0);\n __decorate$T([\n Autowired('gridApi')\n ], HeaderRootComp.prototype, \"gridApi\", void 0);\n __decorate$T([\n Autowired('autoWidthCalculator')\n ], HeaderRootComp.prototype, \"autoWidthCalculator\", void 0);\n __decorate$T([\n PostConstruct\n ], HeaderRootComp.prototype, \"postConstruct\", null);\n return HeaderRootComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterManager = /** @class */ (function () {\n function FilterManager() {\n this.allFilters = new Map();\n this.quickFilter = null;\n this.quickFilterParts = null;\n // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n this.processingFilterChange = false;\n this.eventListenerDestroyers = [];\n }\n FilterManager_1 = FilterManager;\n FilterManager.prototype.init = function () {\n this.eventListenerDestroyers = [\n this.eventService.addEventListener(Events.EVENT_ROW_DATA_CHANGED, this.onNewRowsLoaded.bind(this)),\n this.eventService.addEventListener(Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this))\n ];\n this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());\n this.setQuickFilterParts();\n this.allowShowChangeAfterFilter = this.gridOptionsWrapper.isAllowShowChangeAfterFilter();\n // check this here, in case there is a filter from the start\n this.checkExternalFilter();\n };\n FilterManager.prototype.setQuickFilterParts = function () {\n this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;\n };\n FilterManager.prototype.setFilterModel = function (model) {\n var _this = this;\n var allPromises = [];\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n var modelKeys_1 = _.convertToSet(Object.keys(model));\n this.allFilters.forEach(function (filterWrapper, colId) {\n var newModel = model[colId];\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel);\n allPromises.push(filterWrapper.filterPromise);\n modelKeys_1.delete(colId);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n modelKeys_1.forEach(function (colId) {\n var column = _this.columnController.getPrimaryColumn(colId);\n if (!column) {\n console.warn('Warning ag-grid setFilterModel - no column found for colId ' + colId);\n return;\n }\n var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n else {\n this.allFilters.forEach(function (filterWrapper) {\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, null);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n Promise.all(allPromises).then(function (_) { return _this.onFilterChanged(); });\n };\n FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n filterPromise.then(function (filter) {\n if (typeof filter.setModel !== 'function') {\n console.warn('Warning ag-grid - filter missing setModel method, which is needed for setFilterModel');\n return;\n }\n filter.setModel(newModel);\n });\n };\n FilterManager.prototype.getFilterModel = function () {\n var result = {};\n this.allFilters.forEach(function (filterWrapper, key) {\n // because user can provide filters, we provide useful error checking and messages\n var filterPromise = filterWrapper.filterPromise;\n var filter = filterPromise.resolveNow(null, function (filter) { return filter; });\n if (filter == null) {\n return null;\n }\n if (typeof filter.getModel !== 'function') {\n console.warn('Warning ag-grid - filter API missing getModel method, which is needed for getFilterModel');\n return;\n }\n var model = filter.getModel();\n if (_.exists(model)) {\n result[key] = model;\n }\n });\n return result;\n };\n // returns true if any advanced filter (ie not quick filter) active\n FilterManager.prototype.isAdvancedFilterPresent = function () {\n return this.advancedFilterPresent;\n };\n // called by:\n // 1) onFilterChanged()\n // 2) onNewRowsLoaded()\n FilterManager.prototype.setAdvancedFilterPresent = function () {\n var atLeastOneActive = false;\n this.allFilters.forEach(function (filterWrapper) {\n if (atLeastOneActive) {\n return;\n } // no need to check any more\n if (filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); })) {\n atLeastOneActive = true;\n }\n });\n this.advancedFilterPresent = atLeastOneActive;\n };\n FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {\n this.allFilters.forEach(function (filterWrapper) {\n var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);\n });\n };\n // returns true if quickFilter or advancedFilter\n FilterManager.prototype.isAnyFilterPresent = function () {\n return this.isQuickFilterPresent() || this.advancedFilterPresent || this.externalFilterPresent;\n };\n FilterManager.prototype.doesFilterPass = function (node, filterToSkip) {\n var data = node.data;\n var filterPasses = true;\n this.allFilters.forEach(function (filterWrapper) {\n // if a filter has already failed, no need to run any more\n if (!filterPasses) {\n return;\n }\n // if no filter, always pass\n if (filterWrapper == null) {\n return;\n }\n var filter = filterWrapper.filterPromise.resolveNow(undefined, function (filter) { return filter; });\n if (filter == null || filter === filterToSkip || !filter.isFilterActive()) {\n return;\n }\n if (!filter.doesFilterPass) { // because users can do custom filters, give nice error message\n throw new Error('Filter is missing method doesFilterPass');\n }\n filterPasses = filter.doesFilterPass({ node: node, data: data });\n });\n return filterPasses;\n };\n FilterManager.prototype.parseQuickFilter = function (newFilter) {\n if (!_.exists(newFilter)) {\n return null;\n }\n if (!this.gridOptionsWrapper.isRowModelDefault()) {\n console.warn('ag-grid: quick filtering only works with the Client-Side Row Model');\n return null;\n }\n return newFilter.toUpperCase();\n };\n FilterManager.prototype.setQuickFilter = function (newFilter) {\n var parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.checkExternalFilter = function () {\n this.externalFilterPresent = this.gridOptionsWrapper.isExternalFilterPresent();\n };\n FilterManager.prototype.onFilterChanged = function (additionalEventAttributes) {\n this.setAdvancedFilterPresent();\n this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);\n this.checkExternalFilter();\n this.allFilters.forEach(function (filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n var filterChangedEvent = {\n type: Events.EVENT_FILTER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n if (additionalEventAttributes) {\n _.mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n // because internal events are not async in ag-grid, when the dispatchEvent\n // method comes back, we know all listeners have finished executing.\n this.processingFilterChange = true;\n this.eventService.dispatchEvent(filterChangedEvent);\n this.processingFilterChange = false;\n };\n FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {\n // if user has elected to always flash cell changes, then always return false, otherwise we suppress flashing\n // changes when filtering\n return !this.allowShowChangeAfterFilter && this.processingFilterChange;\n };\n FilterManager.prototype.isQuickFilterPresent = function () {\n return this.quickFilter !== null;\n };\n FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n return this.doesRowPassFilter(node, filterToSkip);\n };\n FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n var _this = this;\n var columns = this.columnController.getAllColumnsForQuickFilter();\n return _.some(columns, function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n return _.exists(part) && part.indexOf(filterPart) >= 0;\n });\n };\n FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n };\n FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n var _this = this;\n var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();\n // each part must pass, if any fails, then the whole filter fails\n return _.every(this.quickFilterParts, function (part) {\n return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);\n });\n };\n FilterManager.prototype.doesRowPassFilter = function (node, filterToSkip) {\n // the row must pass ALL of the filters, so if any of them fail,\n // we return true. that means if a row passes the quick filter,\n // but fails the column filter, it fails overall\n // first up, check quick filter\n if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(node)) {\n return false;\n }\n // secondly, give the client a chance to reject this row\n if (this.externalFilterPresent && !this.gridOptionsWrapper.doesExternalFilterPass(node)) {\n return false;\n }\n // lastly, check our internal advanced filter\n if (this.advancedFilterPresent && !this.doesFilterPass(node, filterToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.getQuickFilterTextForColumn = function (column, node) {\n var value = this.valueService.getValue(column, node, true);\n var colDef = column.getColDef();\n if (colDef.getQuickFilterText) {\n var params = {\n value: value,\n node: node,\n data: node.data,\n column: column,\n colDef: colDef,\n context: this.gridOptionsWrapper.getContext()\n };\n value = colDef.getQuickFilterText(params);\n }\n return _.exists(value) ? value.toString().toUpperCase() : null;\n };\n FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n var _this = this;\n var stringParts = [];\n var columns = this.columnController.getAllColumnsForQuickFilter();\n forEach(columns, function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (_.exists(part)) {\n stringParts.push(part);\n }\n });\n node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n };\n FilterManager.prototype.onNewRowsLoaded = function (source) {\n this.allFilters.forEach(function (filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source);\n this.setAdvancedFilterPresent();\n };\n FilterManager.prototype.createValueGetter = function (column) {\n var _this = this;\n return function (node) { return _this.valueService.getValue(column, node, true); };\n };\n FilterManager.prototype.getFilterComponent = function (column, source) {\n return this.getOrCreateFilterWrapper(column, source).filterPromise;\n };\n FilterManager.prototype.isFilterActive = function (column) {\n var filterWrapper = this.cachedFilter(column);\n return filterWrapper && filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n };\n FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {\n var filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column, source);\n this.allFilters.set(column.getColId(), filterWrapper);\n }\n else if (source !== 'NO_UI') {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.cachedFilter = function (column) {\n return this.allFilters.get(column.getColId());\n };\n FilterManager.prototype.createFilterInstance = function (column, $scope) {\n var _this = this;\n var defaultFilter = ModuleRegistry.isRegistered(exports.ModuleNames.SetFilterModule) ? 'agSetColumnFilter' : 'agTextColumnFilter';\n var sanitisedColDef = _.cloneObject(column.getColDef());\n var filterInstance;\n var params = this.createFilterParams(column, sanitisedColDef, $scope);\n params.filterChangedCallback = this.onFilterChanged.bind(this);\n params.filterModifiedCallback = function () {\n var event = {\n type: Events.EVENT_FILTER_MODIFIED,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n column: column,\n filterInstance: filterInstance\n };\n _this.eventService.dispatchEvent(event);\n };\n // we modify params in a callback as we need the filter instance, and this isn't available\n // when creating the params above\n var modifyParamsCallback = function (params, filterInstance) { return _.assign(params, {\n doesRowPassOtherFilter: _this.doesRowPassOtherFilters.bind(_this, filterInstance),\n }); };\n var res = this.userComponentFactory.newFilterComponent(sanitisedColDef, params, defaultFilter, modifyParamsCallback);\n if (res) {\n res.then(function (r) { return filterInstance = r; });\n }\n return res;\n };\n FilterManager.prototype.createFilterParams = function (column, colDef, $scope) {\n if ($scope === void 0) { $scope = null; }\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n column: column,\n colDef: colDef,\n rowModel: this.rowModel,\n filterChangedCallback: null,\n filterModifiedCallback: null,\n valueGetter: this.createValueGetter(column),\n context: this.gridOptionsWrapper.getContext(),\n doesRowPassOtherFilter: null\n };\n // hack in scope if using AngularJS\n if ($scope) {\n params.$scope = $scope;\n }\n return params;\n };\n FilterManager.prototype.createFilterWrapper = function (column, source) {\n var filterWrapper = {\n column: column,\n filterPromise: null,\n scope: null,\n compiledElement: null,\n guiPromise: Promise.resolve(null)\n };\n filterWrapper.scope = this.gridOptionsWrapper.isAngularCompileFilters() ? this.$scope.$new() : null;\n filterWrapper.filterPromise = this.createFilterInstance(column, filterWrapper.scope);\n if (filterWrapper.filterPromise) {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.putIntoGui = function (filterWrapper, source) {\n var _this = this;\n var eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.guiPromise = new Promise(function (resolve) {\n filterWrapper.filterPromise.then(function (filter) {\n var guiFromFilter = filter.getGui();\n if (_.missing(guiFromFilter)) {\n console.warn(\"getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n }\n // for backwards compatibility with Angular 1 - we\n // used to allow providing back HTML from getGui().\n // once we move away from supporting Angular 1\n // directly, we can change this.\n if (typeof guiFromFilter === 'string') {\n guiFromFilter = _.loadTemplate(guiFromFilter);\n }\n eFilterGui.appendChild(guiFromFilter);\n if (filterWrapper.scope) {\n var compiledElement = _this.$compile(eFilterGui)(filterWrapper.scope);\n filterWrapper.compiledElement = compiledElement;\n window.setTimeout(function () { return filterWrapper.scope.$apply(); }, 0);\n }\n resolve(eFilterGui);\n _this.eventService.dispatchEvent({\n type: Events.EVENT_FILTER_OPENED,\n column: filterWrapper.column,\n source: source,\n eGui: eFilterGui,\n api: _this.gridApi,\n columnApi: _this.columnApi\n });\n });\n });\n };\n FilterManager.prototype.onNewColumnsLoaded = function () {\n var _this = this;\n var atLeastOneFilterGone = false;\n this.allFilters.forEach(function (filterWrapper) {\n var oldColumn = !_this.columnController.getPrimaryColumn(filterWrapper.column);\n if (oldColumn) {\n atLeastOneFilterGone = true;\n _this.disposeFilterWrapper(filterWrapper, 'filterDestroyed');\n }\n });\n if (atLeastOneFilterGone) {\n this.onFilterChanged();\n }\n };\n // destroys the filter, so it not longer takes part\n FilterManager.prototype.destroyFilter = function (column, source) {\n if (source === void 0) { source = 'api'; }\n var filterWrapper = this.allFilters.get(column.getColId());\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n var _this = this;\n filterWrapper.filterPromise.then(function (filter) {\n filter.setModel(null);\n if (filter.destroy) {\n filter.destroy();\n }\n filterWrapper.column.setFilterActive(false, source);\n if (filterWrapper.scope) {\n if (filterWrapper.compiledElement) {\n filterWrapper.compiledElement.remove();\n }\n filterWrapper.scope.$destroy();\n }\n _this.allFilters.delete(filterWrapper.column.getColId());\n });\n };\n FilterManager.prototype.destroy = function () {\n var _this = this;\n this.allFilters.forEach(function (filterWrapper) { return _this.disposeFilterWrapper(filterWrapper, 'filterDestroyed'); });\n if (this.eventListenerDestroyers.length) {\n this.eventListenerDestroyers.forEach(function (func) { return func(); });\n this.eventListenerDestroyers.length = 0;\n }\n };\n var FilterManager_1;\n FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n __decorate$U([\n Autowired('$compile')\n ], FilterManager.prototype, \"$compile\", void 0);\n __decorate$U([\n Autowired('$scope')\n ], FilterManager.prototype, \"$scope\", void 0);\n __decorate$U([\n Autowired('gridOptionsWrapper')\n ], FilterManager.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$U([\n Autowired('valueService')\n ], FilterManager.prototype, \"valueService\", void 0);\n __decorate$U([\n Autowired('columnController')\n ], FilterManager.prototype, \"columnController\", void 0);\n __decorate$U([\n Autowired('rowModel')\n ], FilterManager.prototype, \"rowModel\", void 0);\n __decorate$U([\n Autowired('eventService')\n ], FilterManager.prototype, \"eventService\", void 0);\n __decorate$U([\n Autowired('columnApi')\n ], FilterManager.prototype, \"columnApi\", void 0);\n __decorate$U([\n Autowired('gridApi')\n ], FilterManager.prototype, \"gridApi\", void 0);\n __decorate$U([\n Autowired('userComponentFactory')\n ], FilterManager.prototype, \"userComponentFactory\", void 0);\n __decorate$U([\n PostConstruct\n ], FilterManager.prototype, \"init\", null);\n __decorate$U([\n PreDestroy\n ], FilterManager.prototype, \"destroy\", null);\n FilterManager = FilterManager_1 = __decorate$U([\n Bean('filterManager')\n ], FilterManager);\n return FilterManager;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueService = /** @class */ (function () {\n function ValueService() {\n this.initialised = false;\n }\n ValueService.prototype.init = function () {\n this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n this.initialised = true;\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {\n result = _.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = _.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n return result;\n };\n ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n if (_.missing(rowNode.data)) {\n rowNode.data = {};\n }\n // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n // need either a field or a newValueHandler for this to work\n if (_.missing(field) && _.missing(newValueHandler) && _.missing(valueSetter)) {\n // we don't tell user about newValueHandler, as that is deprecated\n console.warn(\"ag-Grid: you need either field or valueSetter set on colDef for editing to work\");\n return;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (newValueHandler && _.exists(newValueHandler)) {\n valueWasDifferent = newValueHandler(params);\n }\n else if (_.exists(valueSetter)) {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n else {\n valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot, or using an old newValueHandler we didn't always expect a return\n // value here), we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n var onCellValueChanged = column.getColDef().onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n // to make callback async, do in a timeout\n setTimeout(function () { return onCellValueChanged(params); }, 0);\n }\n var event = {\n type: Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n colDef: params.colDef,\n columnApi: params.columnApi,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n var valuesAreSame = false;\n if (!isFieldContainsDots) {\n data[field] = newValue;\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n currentObject[fieldPiece] = newValue;\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n return this.expressionService.evaluate(valueGetter, params);\n };\n ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n var colId = column.getId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result = this.expressionService.evaluate(valueGetter, params);\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnController.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var keyCreator = col.getColDef().keyCreator;\n var result = keyCreator ? keyCreator({ value: value }) : value;\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result == null) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n _.doOnce(function () {\n console.warn('ag-Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se ag-Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate$V([\n Autowired('gridOptionsWrapper')\n ], ValueService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$V([\n Autowired('expressionService')\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate$V([\n Autowired('columnController')\n ], ValueService.prototype, \"columnController\", void 0);\n __decorate$V([\n Autowired('eventService')\n ], ValueService.prototype, \"eventService\", void 0);\n __decorate$V([\n Autowired('valueCache')\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate$V([\n PostConstruct\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate$V([\n Bean('valueService')\n ], ValueService);\n return ValueService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * There are many instances of this component covering each of the areas a row can be entered\n * eg body, pinned left, fullWidth. The component differs from others in that it's given the\n * elements, there is no template. All of the elements are part of the GridPanel.\n */\nvar RowContainerComponent = /** @class */ (function () {\n function RowContainerComponent(params) {\n this.childCount = 0;\n this.rowTemplatesToAdd = [];\n this.afterGuiAttachedCallbacks = [];\n // this is to cater for a 'strange behaviour' where when a panel is made visible, it is firing a scroll\n // event which we want to ignore. see gridPanel.onAnyBodyScroll()\n this.lastMadeVisibleTime = 0;\n this.eContainer = params.eContainer;\n this.eViewport = params.eViewport;\n if (params.eWrapper) {\n this.eWrapper = params.eWrapper;\n }\n this.hideWhenNoChildren = params.hideWhenNoChildren;\n }\n RowContainerComponent.prototype.setVerticalScrollPosition = function (verticalScrollPosition) {\n this.scrollTop = verticalScrollPosition;\n };\n RowContainerComponent.prototype.postConstruct = function () {\n this.checkDomOrder();\n this.checkVisibility();\n this.gridOptionsWrapper.addEventListener(GridOptionsWrapper.PROP_DOM_LAYOUT, this.checkDomOrder.bind(this));\n };\n RowContainerComponent.prototype.checkDomOrder = function () {\n this.domOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n };\n RowContainerComponent.prototype.getRowElement = function (compId) {\n return this.eContainer.querySelector(\"[comp-id=\\\"\" + compId + \"\\\"]\");\n };\n RowContainerComponent.prototype.setHeight = function (height) {\n if (height == null) {\n this.eContainer.style.height = '';\n return;\n }\n this.eContainer.style.height = height + \"px\";\n if (this.eWrapper) {\n this.eWrapper.style.height = height + \"px\";\n }\n };\n RowContainerComponent.prototype.flushRowTemplates = function () {\n // if doing dom order, then rowTemplates will be empty,\n // or if no rows added since last time also empty.\n if (this.rowTemplatesToAdd.length !== 0) {\n var htmlToAdd = this.rowTemplatesToAdd.join('');\n _.appendHtml(this.eContainer, htmlToAdd);\n this.rowTemplatesToAdd.length = 0;\n }\n // this only empty if no rows since last time, as when\n // doing dom order, we still have callbacks to process\n this.afterGuiAttachedCallbacks.forEach(function (func) { return func(); });\n this.afterGuiAttachedCallbacks.length = 0;\n this.lastPlacedElement = null;\n };\n RowContainerComponent.prototype.appendRowTemplate = function (rowTemplate, callback) {\n if (this.domOrder) {\n this.lastPlacedElement = _.insertTemplateWithDomOrder(this.eContainer, rowTemplate, this.lastPlacedElement);\n }\n else {\n this.rowTemplatesToAdd.push(rowTemplate);\n }\n this.afterGuiAttachedCallbacks.push(callback);\n // it is important we put items in in order, so that when we open a row group,\n // the new rows are inserted after the opened group, but before the rows below.\n // that way, the rows below are over the new rows (as dom renders last in dom over\n // items previous in dom), otherwise the child rows would cover the row below and\n // that meant the user doesn't see the rows below slide away.\n this.childCount++;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n _.ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n RowContainerComponent.prototype.removeRowElement = function (eRow) {\n this.eContainer.removeChild(eRow);\n this.childCount--;\n this.checkVisibility();\n };\n RowContainerComponent.prototype.checkVisibility = function () {\n if (!this.hideWhenNoChildren) {\n return;\n }\n var eGui = this.eViewport ? this.eViewport : this.eContainer;\n var visible = this.childCount > 0;\n if (this.visible !== visible) {\n this.visible = visible;\n this.lastMadeVisibleTime = new Date().getTime();\n _.setDisplayed(eGui, visible);\n // if we are showing the viewport, then the scroll is always zero,\n // so we need to align with the other sections (ie if this is full\n // width container, and first time showing a full width row, we need to\n // scroll it so full width rows are show in right place alongside the\n // body rows). without this, there was an issue with 'loading rows' for\n // server side row model, as loading rows are full width, and they were\n // not getting displayed in the right location when rows were expanded.\n if (visible && this.eViewport) {\n this.eViewport.scrollTop = this.scrollTop;\n }\n }\n };\n RowContainerComponent.prototype.isMadeVisibleRecently = function () {\n var now = new Date().getTime();\n var millisSinceVisible = now - this.lastMadeVisibleTime;\n return millisSinceVisible < 500;\n };\n __decorate$W([\n Autowired('gridOptionsWrapper')\n ], RowContainerComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$W([\n PostConstruct\n ], RowContainerComponent.prototype, \"postConstruct\", null);\n return RowContainerComponent;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$3 = (undefined && undefined.__assign) || function () {\n __assign$3 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$3.apply(this, arguments);\n};\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __spreadArrays$4 = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar RowDragFeature = /** @class */ (function () {\n function RowDragFeature(eContainer, gridPanel) {\n this.isMultiRowDrag = false;\n this.events = [];\n this.isGridSorted = false;\n this.isGridFiltered = false;\n this.isRowGroupActive = false;\n this.eContainer = eContainer;\n this.gridPanel = gridPanel;\n }\n RowDragFeature.prototype.postConstruct = function () {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n this.events.push(this.eventService.addEventListener(Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this)), this.eventService.addEventListener(Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this)), this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this)));\n this.onSortChanged();\n this.onFilterChanged();\n this.onRowGroupChanged();\n };\n RowDragFeature.prototype.destroy = function () {\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n }\n };\n RowDragFeature.prototype.onSortChanged = function () {\n var sortModel = this.sortController.getSortModel();\n this.isGridSorted = !_.missingOrEmpty(sortModel);\n };\n RowDragFeature.prototype.onFilterChanged = function () {\n this.isGridFiltered = this.filterManager.isAnyFilterPresent();\n };\n RowDragFeature.prototype.onRowGroupChanged = function () {\n var rowGroups = this.columnController.getRowGroupColumns();\n this.isRowGroupActive = !_.missingOrEmpty(rowGroups);\n };\n RowDragFeature.prototype.getContainer = function () {\n return this.eContainer;\n };\n RowDragFeature.prototype.isInterestedIn = function (type) {\n return type === exports.DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag && this.shouldPreventRowMove()) {\n return DragAndDropService.ICON_NOT_ALLOWED;\n }\n return DragAndDropService.ICON_MOVE;\n };\n RowDragFeature.prototype.shouldPreventRowMove = function () {\n return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;\n };\n RowDragFeature.prototype.getRowNodes = function (draggingEvent) {\n if (!this.isFromThisGrid(draggingEvent)) {\n return draggingEvent.dragItem.rowNodes;\n }\n var enableMultiRowDragging = this.gridOptionsWrapper.isEnableMultiRowDragging();\n var selectedNodes = this.selectionController.getSelectedNodes();\n var currentNode = draggingEvent.dragItem.rowNode;\n if (enableMultiRowDragging && selectedNodes.indexOf(currentNode) !== -1) {\n this.isMultiRowDrag = true;\n return __spreadArrays$4(selectedNodes);\n }\n this.isMultiRowDrag = false;\n return [currentNode];\n };\n RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n // when entering, we fire the enter event, then in onEnterOrDragging,\n // we also fire the move event. so we get both events when entering.\n this.dispatchEvent(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(true);\n });\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragging = function (draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.isFromThisGrid = function (draggingEvent) {\n return this.gridPanel.getGui().contains(draggingEvent.dragSource.eElement);\n };\n RowDragFeature.prototype.isDropZoneWithinThisGrid = function (draggingEvent) {\n var gridGui = this.gridPanel.getGui();\n var dropZoneTarget = draggingEvent.dropZoneTarget;\n return !gridGui.contains(dropZoneTarget);\n };\n RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n // this event is fired for enter and move\n this.dispatchEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.checkCenterForScrolling(pixel);\n };\n RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n var _this = this;\n var rowNodes;\n var isFromThisGrid = this.isFromThisGrid(draggingEvent);\n if (isFromThisGrid) {\n rowNodes = [draggingEvent.dragItem.rowNode];\n if (this.isMultiRowDrag) {\n rowNodes = __spreadArrays$4(this.selectionController.getSelectedNodes()).sort(function (a, b) { return _this.getRowIndexNumber(a) - _this.getRowIndexNumber(b); });\n }\n draggingEvent.dragItem.rowNodes = rowNodes;\n }\n else {\n rowNodes = draggingEvent.dragItem.rowNodes;\n }\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag && this.shouldPreventRowMove()) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !isFromThisGrid) {\n if (!this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);\n }\n }\n else {\n this.moveRows(rowNodes, pixel);\n }\n };\n RowDragFeature.prototype.getRowIndexNumber = function (rowNode) {\n return parseInt(last(rowNode.getRowIndexString().split('-')), 10);\n };\n RowDragFeature.prototype.moveRowAndClearHighlight = function (draggingEvent) {\n var _this = this;\n var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();\n var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === 'below';\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var rowNodes = draggingEvent.dragItem.rowNodes;\n var increment = isBelow ? 1 : 0;\n if (this.isFromThisGrid(draggingEvent)) {\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowTop < pixel) {\n increment -= 1;\n }\n });\n this.moveRows(rowNodes, pixel, increment);\n }\n else {\n var getRowNodeId_1 = this.gridOptionsWrapper.getRowNodeIdFunc();\n var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;\n if (this.clientSideRowModel.getHighlightPosition(pixel) === 'above') {\n addIndex--;\n }\n this.clientSideRowModel.updateRowData({\n add: rowNodes\n .map(function (node) { return node.data; })\n .filter(function (data) { return !_this.clientSideRowModel.getRowNode(getRowNodeId_1 ? getRowNodeId_1(data) : data.id); }),\n addIndex: addIndex\n });\n }\n this.clearRowHighlight();\n };\n RowDragFeature.prototype.clearRowHighlight = function () {\n this.clientSideRowModel.highlightRowAtPixel(null);\n };\n RowDragFeature.prototype.moveRows = function (rowNodes, pixel, increment) {\n if (increment === void 0) { increment = 0; }\n var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);\n if (rowWasMoved) {\n this.focusController.clearFocusedCell();\n if (this.rangeController) {\n this.rangeController.removeAllCellRanges();\n }\n }\n };\n RowDragFeature.prototype.checkCenterForScrolling = function (pixel) {\n // scroll if the mouse is within 50px of the grid edge\n var pixelRange = this.gridPanel.getVScrollPosition();\n // console.log(`pixelRange = (${pixelRange.top}, ${pixelRange.bottom})`);\n this.needToMoveUp = pixel < (pixelRange.top + 50);\n this.needToMoveDown = pixel > (pixelRange.bottom - 50);\n // console.log(`needToMoveUp = ${this.needToMoveUp} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n // console.log(`needToMoveDown = ${this.needToMoveDown} = pixel < (pixelRange.top + 50) = ${pixel} < (${pixelRange.top} + 50)`);\n if (this.needToMoveUp || this.needToMoveDown) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n };\n RowDragFeature.prototype.ensureIntervalStarted = function () {\n if (this.movingIntervalId) {\n return;\n }\n this.intervalCount = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n };\n RowDragFeature.prototype.ensureIntervalCleared = function () {\n if (!this.moveInterval) {\n return;\n }\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n };\n RowDragFeature.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved;\n if (this.needToMoveDown) {\n pixelsMoved = this.gridPanel.scrollVertically(pixelsToMove);\n }\n else if (this.needToMoveUp) {\n pixelsMoved = this.gridPanel.scrollVertically(-pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n }\n };\n RowDragFeature.prototype.addRowDropZone = function (params) {\n var _this = this;\n if (!params.getContainer()) {\n _.doOnce(function () { return console.warn('ag-Grid: addRowDropZone - A container target needs to be provided'); }, 'add-drop-zone-empty-target');\n return;\n }\n if (this.dragAndDropService.findExternalZone(params)) {\n console.warn('ag-Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.');\n return;\n }\n var processedParams = {\n getContainer: params.getContainer\n };\n if (params.fromGrid) {\n params.fromGrid = undefined;\n processedParams = params;\n }\n else {\n if (params.onDragEnter) {\n processedParams.onDragEnter = function (e) {\n params.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n };\n }\n if (params.onDragLeave) {\n processedParams.onDragLeave = function (e) {\n params.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n };\n }\n if (params.onDragging) {\n processedParams.onDragging = function (e) {\n params.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n };\n }\n if (params.onDragStop) {\n processedParams.onDragStop = function (e) {\n params.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n };\n }\n }\n this.dragAndDropService.addDropTarget(__assign$3({ isInterestedIn: function (type) { return type === exports.DragSourceType.RowDrag; }, getIconName: function () { return DragAndDropService.ICON_MOVE; }, external: true }, processedParams));\n };\n RowDragFeature.prototype.getRowDropZone = function (events) {\n var _this = this;\n var getContainer = this.getContainer.bind(this);\n var onDragEnter = this.onDragEnter.bind(this);\n var onDragLeave = this.onDragLeave.bind(this);\n var onDragging = this.onDragging.bind(this);\n var onDragStop = this.onDragStop.bind(this);\n if (!events) {\n return { getContainer: getContainer, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragging: onDragging, onDragStop: onDragStop, fromGrid: true };\n }\n return {\n getContainer: getContainer,\n onDragEnter: events.onDragEnter\n ? (function (e) {\n onDragEnter(e);\n events.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n })\n : onDragEnter,\n onDragLeave: events.onDragLeave\n ? (function (e) {\n onDragLeave(e);\n events.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n })\n : onDragLeave,\n onDragging: events.onDragging\n ? (function (e) {\n onDragging(e);\n events.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n })\n : onDragging,\n onDragStop: events.onDragStop\n ? (function (e) {\n onDragStop(e);\n events.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n })\n : onDragStop,\n fromGrid: true\n };\n };\n RowDragFeature.prototype.draggingToRowDragEvent = function (type, draggingEvent) {\n var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var mouseIsPastLastRow = yNormalised > this.rowModel.getCurrentPageHeight();\n var overIndex = -1;\n var overNode = null;\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n var vDirectionString;\n switch (draggingEvent.vDirection) {\n case exports.VerticalDirection.Down:\n vDirectionString = 'down';\n break;\n case exports.VerticalDirection.Up:\n vDirectionString = 'up';\n break;\n default:\n vDirectionString = null;\n break;\n }\n var event = {\n type: type,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n nodes: draggingEvent.dragItem.rowNodes,\n overIndex: overIndex,\n overNode: overNode,\n y: yNormalised,\n vDirection: vDirectionString\n };\n return event;\n };\n RowDragFeature.prototype.dispatchEvent = function (type, draggingEvent) {\n var event = this.draggingToRowDragEvent(type, draggingEvent);\n this.eventService.dispatchEvent(event);\n };\n RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n this.dispatchEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n this.clearRowHighlight();\n if (this.isFromThisGrid(draggingEvent)) {\n this.isMultiRowDrag = false;\n }\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsWrapper.isRowDragManaged() &&\n (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !this.isFromThisGrid(draggingEvent)) &&\n !this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.moveRowAndClearHighlight(draggingEvent);\n }\n };\n RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n this.ensureIntervalCleared();\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(false);\n });\n };\n __decorate$X([\n Autowired('dragAndDropService')\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate$X([\n Autowired('rowModel')\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate$X([\n Autowired('columnController')\n ], RowDragFeature.prototype, \"columnController\", void 0);\n __decorate$X([\n Autowired('focusController')\n ], RowDragFeature.prototype, \"focusController\", void 0);\n __decorate$X([\n Autowired('sortController')\n ], RowDragFeature.prototype, \"sortController\", void 0);\n __decorate$X([\n Autowired('filterManager')\n ], RowDragFeature.prototype, \"filterManager\", void 0);\n __decorate$X([\n Autowired('gridOptionsWrapper')\n ], RowDragFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$X([\n Autowired('selectionController')\n ], RowDragFeature.prototype, \"selectionController\", void 0);\n __decorate$X([\n Optional('rangeController')\n ], RowDragFeature.prototype, \"rangeController\", void 0);\n __decorate$X([\n Autowired('mouseEventService')\n ], RowDragFeature.prototype, \"mouseEventService\", void 0);\n __decorate$X([\n Autowired('eventService')\n ], RowDragFeature.prototype, \"eventService\", void 0);\n __decorate$X([\n PostConstruct\n ], RowDragFeature.prototype, \"postConstruct\", null);\n __decorate$X([\n PreDestroy\n ], RowDragFeature.prototype, \"destroy\", null);\n return RowDragFeature;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$N = (undefined && undefined.__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})();\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// in the html below, it is important that there are no white space between some of the divs, as if there is white space,\n// it won't render correctly in safari, as safari renders white space as a gap\nvar GRID_PANEL_NORMAL_TEMPLATE = /* html */ \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\";\nvar GridPanel = /** @class */ (function (_super) {\n __extends$N(GridPanel, _super);\n function GridPanel() {\n var _this = _super.call(this, GRID_PANEL_NORMAL_TEMPLATE) || this;\n _this.scrollLeft = -1;\n _this.scrollTop = -1;\n _this.resetLastHorizontalScrollElementDebounced = _.debounce(_this.resetLastHorizontalScrollElement.bind(_this), 500);\n return _this;\n }\n GridPanel.prototype.getVScrollPosition = function () {\n var result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n };\n GridPanel.prototype.getHScrollPosition = function () {\n var result = {\n left: this.eCenterViewport.scrollLeft,\n right: this.eCenterViewport.scrollLeft + this.eCenterViewport.offsetWidth\n };\n return result;\n };\n GridPanel.prototype.onRowDataChanged = function () {\n this.showOrHideOverlay();\n };\n GridPanel.prototype.showOrHideOverlay = function () {\n var isEmpty = this.paginationProxy.isEmpty();\n var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();\n var method = isEmpty && !isSuppressNoRowsOverlay ? 'showNoRowsOverlay' : 'hideOverlay';\n this[method]();\n };\n GridPanel.prototype.onNewColumnsLoaded = function () {\n // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n // this problem exists before of the race condition between the services (column controller in this case)\n // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n // this race condition would not happen.\n if (this.columnController.isReady() && !this.paginationProxy.isEmpty()) {\n this.hideOverlay();\n }\n };\n GridPanel.prototype.init = function () {\n var _this = this;\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n // these elements have different CSS when layout changes\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n this.gridOptionsWrapper.addLayoutElement(this.eBodyViewport);\n this.suppressScrollOnFloatingRow();\n this.setupRowAnimationCssClass();\n this.buildRowContainerComponents();\n this.addEventListeners();\n this.addDragListeners();\n this.addScrollListener();\n if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {\n this.showLoadingOverlay();\n }\n this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.disableBrowserDragging();\n this.addMouseListeners();\n this.addKeyboardEvents();\n this.addBodyViewportListener();\n this.addStopEditingWhenGridLosesFocus();\n this.mockContextMenuForIPad();\n this.addRowDragListener();\n if (this.$scope) {\n this.addAngularApplyCheck();\n }\n this.onDisplayedColumnsWidthChanged();\n this.gridApi.registerGridComp(this);\n this.alignedGridsService.registerGridComp(this);\n this.headerRootComp.registerGridComp(this);\n this.navigationService.registerGridComp(this);\n this.heightScaler.registerGridComp(this);\n this.autoHeightCalculator.registerGridComp(this);\n this.columnAnimationService.registerGridComp(this);\n this.autoWidthCalculator.registerGridComp(this);\n this.paginationAutoPageSizeService.registerGridComp(this);\n this.mouseEventService.registerGridComp(this);\n this.beans.registerGridComp(this);\n this.rowRenderer.registerGridComp(this);\n if (this.rangeController) {\n this.rangeController.registerGridComp(this);\n }\n [this.eCenterViewport, this.eBodyViewport].forEach(function (viewport) {\n var unsubscribeFromResize = _this.resizeObserverService.observeResize(viewport, _this.onCenterViewportResized.bind(_this));\n _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n });\n [this.eTop, this.eBodyViewport, this.eBottom].forEach(function (element) {\n _this.addDestroyableEventListener(element, 'focusin', function () {\n _.addCssClass(element, 'ag-has-focus');\n });\n _this.addDestroyableEventListener(element, 'focusout', function (e) {\n if (!element.contains(e.relatedTarget)) {\n _.removeCssClass(element, 'ag-has-focus');\n }\n });\n });\n };\n GridPanel.prototype.onDomLayoutChanged = function () {\n var newPrintLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (this.printLayout !== newPrintLayout) {\n this.printLayout = newPrintLayout;\n this.setWidthsOfContainers();\n // pinned containers are always hidden for print layout\n this.setPinnedContainerSize();\n }\n };\n GridPanel.prototype.onCenterViewportResized = function () {\n if (_.isVisible(this.eCenterViewport)) {\n this.checkViewportAndScrolls();\n this.columnController.refreshFlexedColumns(this.getCenterWidth());\n }\n else {\n this.bodyHeight = 0;\n }\n };\n // used by ColumnAnimationService\n GridPanel.prototype.setColumnMovingCss = function (moving) {\n this.addOrRemoveCssClass('ag-column-moving', moving);\n };\n GridPanel.prototype.setCellTextSelection = function (selectable) {\n if (selectable === void 0) { selectable = false; }\n [this.eTop, this.eBodyViewport, this.eBottom]\n .forEach(function (ct) { return _.addOrRemoveCssClass(ct, 'ag-selectable', selectable); });\n };\n GridPanel.prototype.addRowDragListener = function () {\n var rowDragFeature = new RowDragFeature(this.eBodyViewport, this);\n this.getContext().wireBean(rowDragFeature);\n this.dragAndDropService.addDropTarget(rowDragFeature);\n this.rowDragFeature = rowDragFeature;\n };\n GridPanel.prototype.getRowDragFeature = function () {\n return this.rowDragFeature;\n };\n GridPanel.prototype.addStopEditingWhenGridLosesFocus = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isStopEditingWhenGridLosesFocus()) {\n return;\n }\n var focusOutListener = function (event) {\n // this is the element the focus is moving to\n var elementWithFocus = event.relatedTarget;\n // see if the element the focus is going to is part of the grid\n var clickInsideGrid = false;\n var pointer = elementWithFocus;\n while (_.exists(pointer) && !clickInsideGrid) {\n var isPopup = !!_this.gridOptionsWrapper.getDomData(pointer, PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER);\n var isBody = _this.eBodyViewport === pointer || _this.eBottom === pointer || _this.eTop === pointer;\n clickInsideGrid = isPopup || isBody;\n pointer = pointer.parentNode;\n }\n if (!clickInsideGrid) {\n _this.rowRenderer.stopEditing();\n }\n };\n this.addDestroyableEventListener(this.eBodyViewport, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eTop, 'focusout', focusOutListener);\n this.addDestroyableEventListener(this.eBottom, 'focusout', focusOutListener);\n };\n GridPanel.prototype.addAngularApplyCheck = function () {\n var _this = this;\n // this makes sure if we queue up requests, we only execute oe\n var applyTriggered = false;\n var listener = function () {\n // only need to do one apply at a time\n if (applyTriggered) {\n return;\n }\n applyTriggered = true; // mark 'need apply' to true\n window.setTimeout(function () {\n applyTriggered = false;\n _this.$scope.$apply();\n }, 0);\n };\n // these are the events we need to do an apply after - these are the ones that can end up\n // with columns added or removed\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addDestroyableEventListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, listener);\n };\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n GridPanel.prototype.disableBrowserDragging = function () {\n this.addGuiEventListener('dragstart', function (event) {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n };\n GridPanel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.setHeaderAndFloatingHeights.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n };\n GridPanel.prototype.addDragListeners = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property\n _.missing(this.rangeController) // no range selection if not enterprise version\n ) {\n return;\n }\n var containers = [\n this.eLeftContainer,\n this.eRightContainer,\n this.eCenterContainer,\n this.eTop,\n this.eBottom\n ];\n containers.forEach(function (container) {\n var params = {\n eElement: container,\n onDragStart: _this.rangeController.onDragStart.bind(_this.rangeController),\n onDragStop: _this.rangeController.onDragStop.bind(_this.rangeController),\n onDragging: _this.rangeController.onDragging.bind(_this.rangeController)\n };\n _this.dragService.addDragSource(params);\n _this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n });\n };\n GridPanel.prototype.addMouseListeners = function () {\n var _this = this;\n var eventNames = ['click', 'mousedown', 'dblclick', 'contextmenu', 'mouseover', 'mouseout'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processMouseEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n return _this.addDestroyableEventListener(container, eventName, listener);\n });\n });\n };\n GridPanel.prototype.addKeyboardEvents = function () {\n var _this = this;\n var eventNames = ['keydown', 'keypress'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processKeyboardEvent.bind(_this, eventName);\n _this.eAllCellContainers.forEach(function (container) {\n _this.addDestroyableEventListener(container, eventName, listener);\n });\n });\n };\n GridPanel.prototype.addBodyViewportListener = function () {\n var _this = this;\n // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n var listener = function (mouseEvent) {\n var target = _.getTarget(mouseEvent);\n if (target === _this.eBodyViewport || target === _this.eCenterViewport) {\n // show it\n _this.onContextMenu(mouseEvent, null, null, null, null);\n _this.preventDefaultOnContextMenu(mouseEvent);\n }\n };\n this.addDestroyableEventListener(this.eBodyViewport, 'contextmenu', listener);\n };\n // + rangeController - used to know when to scroll when user is dragging outside the\n // main viewport while doing a range selection\n GridPanel.prototype.getBodyClientRect = function () {\n if (!this.eBodyViewport) {\n return;\n }\n return this.eBodyViewport.getBoundingClientRect();\n };\n GridPanel.prototype.getRowForEvent = function (event) {\n var sourceElement = _.getTarget(event);\n while (sourceElement) {\n var renderedRow = this.gridOptionsWrapper.getDomData(sourceElement, RowComp.DOM_DATA_KEY_RENDERED_ROW);\n if (renderedRow) {\n return renderedRow;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n GridPanel.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n var cellComp = _.getCellCompForEvent(this.gridOptionsWrapper, keyboardEvent);\n if (!cellComp) {\n return;\n }\n var rowNode = cellComp.getRenderedRow().getRowNode();\n var column = cellComp.getColumn();\n var editing = cellComp.isEditing();\n var gridProcessingAllowed = !_.isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n switch (eventName) {\n case 'keydown':\n // first see if it's a scroll key, page up / down, home / end etc\n var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellComp.onKeyDown(keyboardEvent);\n }\n // perform clipboard and undo / redo operations\n this.doGridOperations(keyboardEvent, cellComp);\n break;\n case 'keypress':\n cellComp.onKeyPress(keyboardEvent);\n break;\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellComp.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n this.beans.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellComp.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);\n this.beans.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n GridPanel.prototype.doGridOperations = function (keyboardEvent, cellComp) {\n // check if ctrl or meta key pressed\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n // if the cell the event came from is editing, then we do not\n // want to do the default shortcut keys, otherwise the editor\n // (eg a text field) would not be able to do the normal cut/copy/paste\n if (cellComp.isEditing()) {\n return;\n }\n // for copy / paste, we don't want to execute when the event\n // was from a child grid (happens in master detail)\n if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n return;\n }\n switch (keyboardEvent.which) {\n case Constants.KEY_A:\n return this.onCtrlAndA(keyboardEvent);\n case Constants.KEY_C:\n return this.onCtrlAndC(keyboardEvent);\n case Constants.KEY_V:\n return this.onCtrlAndV();\n case Constants.KEY_D:\n return this.onCtrlAndD(keyboardEvent);\n case Constants.KEY_Z:\n return keyboardEvent.shiftKey ? this.undoRedoService.redo() : this.undoRedoService.undo();\n case Constants.KEY_Y:\n return this.undoRedoService.redo();\n }\n };\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n GridPanel.prototype.scrollToTop = function () {\n this.eBodyViewport.scrollTop = 0;\n };\n GridPanel.prototype.processMouseEvent = function (eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n _.isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var rowComp = this.getRowForEvent(mouseEvent);\n var cellComp = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n if (eventName === \"contextmenu\") {\n this.preventDefaultOnContextMenu(mouseEvent);\n this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellComp);\n }\n else {\n if (cellComp) {\n cellComp.onMouseEvent(eventName, mouseEvent);\n }\n if (rowComp) {\n rowComp.onMouseEvent(eventName, mouseEvent);\n }\n }\n };\n GridPanel.prototype.mockContextMenuForIPad = function () {\n var _this = this;\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!_.isIOSUserAgent()) {\n return;\n }\n this.eAllCellContainers.forEach(function (container) {\n var touchListener = new TouchListener(container);\n var longTapListener = function (event) {\n var rowComp = _this.getRowForEvent(event.touchEvent);\n var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n };\n _this.addDestroyableEventListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n _this.addDestroyFunc(function () { return touchListener.destroy(); });\n });\n };\n GridPanel.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellComp) {\n var rowNode = rowComp ? rowComp.getRowNode() : null;\n var column = cellComp ? cellComp.getColumn() : null;\n var value = null;\n if (column) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n cellComp.dispatchCellContextMenuEvent(event_1);\n value = this.valueService.getValue(column, rowNode);\n }\n this.onContextMenu(mouseEvent, touchEvent, rowNode, column, value);\n };\n GridPanel.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value) {\n // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n // not everyone wants this, so first 'if' below allows to turn this hack off.\n if (!this.gridOptionsWrapper.isAllowContextMenuWithControlKey()) {\n // then do the check\n if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n return;\n }\n }\n if (this.contextMenuFactory && !this.gridOptionsWrapper.isSuppressContextMenu()) {\n var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n this.contextMenuFactory.showMenu(rowNode, column, value, eventOrTouch);\n var event_2 = mouseEvent ? mouseEvent : touchEvent;\n event_2.preventDefault();\n }\n };\n GridPanel.prototype.preventDefaultOnContextMenu = function (mouseEvent) {\n // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n // button in the browser). so this property allows the user to receive middle button clicks if\n // they want.\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var which = mouseEvent.which;\n if (gridOptionsWrapper.isPreventDefaultOnContextMenu() ||\n (gridOptionsWrapper.isSuppressMiddleClickScrolls() && which === 2)) {\n mouseEvent.preventDefault();\n }\n };\n GridPanel.prototype.onCtrlAndA = function (event) {\n var _a = this, columnController = _a.columnController, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeController = _a.rangeController;\n var PINNED_BOTTOM = Constants.PINNED_BOTTOM, PINNED_TOP = Constants.PINNED_TOP;\n if (rangeController && paginationProxy.isRowsToRender()) {\n var _b = [\n pinnedRowModel.isEmpty(PINNED_TOP),\n pinnedRowModel.isEmpty(PINNED_BOTTOM)\n ], isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;\n var floatingEnd = void 0;\n var rowEnd = void 0;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getRowCount() - 1;\n }\n else {\n floatingEnd = PINNED_BOTTOM;\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = columnController.getAllDisplayedColumns();\n if (_.missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeController.setCellRange({\n rowStartIndex: 0,\n rowStartPinned: floatingStart,\n rowEndIndex: rowEnd,\n rowEndPinned: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: _.last(allDisplayedColumns)\n });\n }\n event.preventDefault();\n };\n GridPanel.prototype.onCtrlAndC = function (event) {\n if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {\n return;\n }\n this.clipboardService.copyToClipboard();\n event.preventDefault();\n };\n GridPanel.prototype.onCtrlAndV = function () {\n if (ModuleRegistry.isRegistered(exports.ModuleNames.ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n this.clipboardService.pasteFromClipboard();\n }\n };\n GridPanel.prototype.onCtrlAndD = function (event) {\n if (ModuleRegistry.isRegistered(exports.ModuleNames.ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n this.clipboardService.copyRangeDown();\n }\n event.preventDefault();\n };\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n GridPanel.prototype.ensureIndexVisible = function (index, position) {\n // if for print or auto height, everything is always visible\n if (this.printLayout) {\n return;\n }\n var rowCount = this.paginationProxy.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n this.paginationProxy.goToPageWithIndex(index);\n var rowNode = this.paginationProxy.getRow(index);\n var rowGotShiftedDuringOperation;\n do {\n var startingRowTop = rowNode.rowTop;\n var startingRowHeight = rowNode.rowHeight;\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var rowTopPixel = rowNode.rowTop - paginationOffset;\n var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n var scrollPosition = this.getVScrollPosition();\n var heightOffset = this.heightScaler.getOffset();\n var vScrollTop = scrollPosition.top + heightOffset;\n var vScrollBottom = scrollPosition.bottom + heightOffset;\n var viewportHeight = vScrollBottom - vScrollTop;\n // work out the pixels for top, middle and bottom up front,\n // make the if/else below easier to read\n var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n var rowBelowViewport = vScrollTop > rowTopPixel;\n var rowAboveViewport = vScrollBottom < rowBottomPixel;\n var newScrollPosition = null;\n if (position === 'top') {\n newScrollPosition = pxTop;\n }\n else if (position === 'bottom') {\n newScrollPosition = pxBottom;\n }\n else if (position === 'middle') {\n newScrollPosition = pxMiddle;\n }\n else if (rowBelowViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop;\n }\n else if (rowAboveViewport) {\n // if row is below, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.eBodyViewport.scrollTop = newScrollPosition;\n this.rowRenderer.redrawAfterScroll();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n // the height of a row changes due to lazy calculation of row heights when using\n // colDef.autoHeight or gridOptions.getRowHeight.\n // if row was shifted, then the position we scrolled to is incorrect.\n rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n || (startingRowHeight !== rowNode.rowHeight);\n } while (rowGotShiftedDuringOperation);\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n // + moveColumnController\n GridPanel.prototype.getCenterWidth = function () {\n return this.eCenterViewport.clientWidth;\n };\n GridPanel.prototype.isVerticalScrollShowing = function () {\n var isAlwaysShowVerticalScroll = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();\n _.addOrRemoveCssClass(this.eBodyViewport, 'ag-force-vertical-scroll', isAlwaysShowVerticalScroll);\n return isAlwaysShowVerticalScroll || _.isVerticalScrollShowing(this.eBodyViewport);\n };\n GridPanel.prototype.isHorizontalScrollShowing = function () {\n return _.isHorizontalScrollShowing(this.eCenterViewport);\n };\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n GridPanel.prototype.checkViewportAndScrolls = function () {\n // results in updating anything that depends on scroll showing\n this.updateScrollVisibleService();\n // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n this.checkBodyHeight();\n // check for virtual columns for ColumnController\n this.onHorizontalViewportChanged();\n this.setPinnedContainerSize();\n // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n // back to the left to be kept in sync.\n // adding and removing the grid from the DOM both resets the scroll position and\n // triggers a resize event, so notify listeners if the scroll position has changed\n if (this.scrollLeft !== this.getCenterViewportScrollLeft()) {\n this.onBodyHorizontalScroll(this.eCenterViewport);\n }\n };\n GridPanel.prototype.updateScrollVisibleService = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n };\n GridPanel.prototype.updateScrollVisibleServiceImpl = function () {\n var params = {\n horizontalScrollShowing: false,\n verticalScrollShowing: false\n };\n params.verticalScrollShowing = this.isVerticalScrollShowing();\n params.horizontalScrollShowing = this.isHorizontalScrollShowing();\n this.scrollVisibleService.setScrollsVisible(params);\n this.setHorizontalScrollVisible(params.horizontalScrollShowing);\n this.setVerticalScrollPaddingVisible(params.verticalScrollShowing);\n };\n GridPanel.prototype.setHorizontalScrollVisible = function (visible) {\n var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();\n var scrollSize = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var scrollContainerSize = !isSuppressHorizontalScroll ? scrollSize : 0;\n var addIEPadding = _.isBrowserIE() && visible;\n this.eCenterViewport.style.height = \"calc(100% + \" + scrollSize + \"px)\";\n _.setFixedHeight(this.eHorizontalScrollBody, scrollContainerSize);\n // we have to add an extra pixel to the scroller viewport on IE because\n // if the container has the same size as the scrollbar, the scroll button won't work\n _.setFixedHeight(this.eBodyHorizontalScrollViewport, scrollContainerSize + (addIEPadding ? 1 : 0));\n _.setFixedHeight(this.eBodyHorizontalScrollContainer, scrollContainerSize);\n };\n GridPanel.prototype.setVerticalScrollPaddingVisible = function (show) {\n var scroller = show ? 'scroll' : 'hidden';\n this.eTop.style.overflowY = this.eBottom.style.overflowY = scroller;\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.updateRowCount = function () {\n var headerCount = this.headerRootComp.getHeaderRowCount();\n var rowCount = this.paginationProxy.getRowCount();\n var total = (headerCount + rowCount).toString();\n this.getGui().setAttribute('aria-rowcount', total);\n };\n GridPanel.prototype.updateColumnCount = function () {\n var columns = this.beans.columnController.getAllDisplayedColumns();\n this.getGui().setAttribute('aria-colcount', columns.length.toString());\n };\n GridPanel.prototype.ensureColumnVisible = function (key) {\n var column = this.columnController.getGridColumn(key);\n if (!column) {\n return;\n }\n if (column.isPinned()) {\n console.warn('calling ensureIndexVisible on a ' + column.getPinned() + ' pinned column doesn\\'t make sense for column ' + column.getColId());\n return;\n }\n if (!this.columnController.isColumnDisplayed(column)) {\n console.warn('column is not currently visible');\n return;\n }\n var colLeftPixel = column.getLeft();\n var colRightPixel = colLeftPixel + column.getActualWidth();\n var viewportWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n var bodyWidth = this.columnController.getBodyContainerWidth();\n var viewportLeftPixel;\n var viewportRightPixel;\n // the logic of working out left and right viewport px is both here and in the ColumnController,\n // need to refactor it out to one place\n if (this.enableRtl) {\n viewportLeftPixel = bodyWidth - scrollPosition - viewportWidth;\n viewportRightPixel = bodyWidth - scrollPosition;\n }\n else {\n viewportLeftPixel = scrollPosition;\n viewportRightPixel = viewportWidth + scrollPosition;\n }\n var viewportScrolledPastCol = viewportLeftPixel > colLeftPixel;\n var viewportScrolledBeforeCol = viewportRightPixel < colRightPixel;\n var colToSmallForViewport = viewportWidth < column.getActualWidth();\n var alignColToLeft = viewportScrolledPastCol || colToSmallForViewport;\n var alignColToRight = viewportScrolledBeforeCol;\n var newScrollPosition = this.getCenterViewportScrollLeft();\n if (alignColToLeft || alignColToRight) {\n if (this.enableRtl) {\n newScrollPosition = alignColToLeft ? (bodyWidth - viewportWidth - colLeftPixel) : (bodyWidth - colRightPixel);\n }\n else {\n newScrollPosition = alignColToLeft ? colLeftPixel : (colRightPixel - viewportWidth);\n }\n this.setCenterViewportScrollLeft(newScrollPosition);\n }\n // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n // it is possible that the ensureColumnVisible method is called from within ag-Grid and\n // the caller will need to have the columns rendered to continue, which will be before\n // the event has been worked on (which is the case for cell navigation).\n this.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridPanel.prototype.showLoadingOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressLoadingOverlay()) {\n this.overlayWrapper.showLoadingOverlay();\n }\n };\n GridPanel.prototype.showNoRowsOverlay = function () {\n if (!this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n this.overlayWrapper.showNoRowsOverlay();\n }\n };\n GridPanel.prototype.hideOverlay = function () {\n this.overlayWrapper.hideOverlay();\n };\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n GridPanel.prototype.sizeColumnsToFit = function (nextTimeout) {\n var _this = this;\n var availableWidth = this.eBodyViewport.clientWidth;\n if (availableWidth > 0) {\n this.columnController.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\");\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(-1);\n }, 500);\n }\n else {\n console.warn('ag-Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n 'zero width, maybe the grid is not visible yet on the screen?');\n }\n };\n // used by autoWidthCalculator and autoHeightCalculator\n GridPanel.prototype.getCenterContainer = function () {\n return this.eCenterContainer;\n };\n GridPanel.prototype.getDropTargetBodyContainers = function () {\n return [this.eCenterViewport, this.eTopViewport, this.eBottomViewport];\n };\n GridPanel.prototype.getDropTargetLeftContainers = function () {\n return [this.eLeftContainer, this.eLeftBottom, this.eLeftTop];\n };\n GridPanel.prototype.getDropTargetRightContainers = function () {\n return [this.eRightContainer, this.eRightBottom, this.eRightTop];\n };\n GridPanel.prototype.buildRowContainerComponents = function () {\n var _this = this;\n this.eAllCellContainers = [\n this.eLeftContainer, this.eRightContainer, this.eCenterContainer,\n this.eTop, this.eBottom, this.eFullWidthContainer\n ];\n this.rowContainerComponents = {\n body: new RowContainerComponent({\n eContainer: this.eCenterContainer,\n eWrapper: this.eCenterColsClipper,\n eViewport: this.eBodyViewport\n }),\n fullWidth: new RowContainerComponent({\n eContainer: this.eFullWidthContainer\n }),\n pinnedLeft: new RowContainerComponent({ eContainer: this.eLeftContainer }),\n pinnedRight: new RowContainerComponent({ eContainer: this.eRightContainer }),\n floatingTop: new RowContainerComponent({ eContainer: this.eTopContainer }),\n floatingTopPinnedLeft: new RowContainerComponent({ eContainer: this.eLeftTop }),\n floatingTopPinnedRight: new RowContainerComponent({ eContainer: this.eRightTop }),\n floatingTopFullWidth: new RowContainerComponent({\n eContainer: this.eTopFullWidthContainer,\n hideWhenNoChildren: true\n }),\n floatingBottom: new RowContainerComponent({ eContainer: this.eBottomContainer }),\n floatingBottomPinnedLeft: new RowContainerComponent({ eContainer: this.eLeftBottom }),\n floatingBottomPinnedRight: new RowContainerComponent({ eContainer: this.eRightBottom }),\n floatingBottomFullWidth: new RowContainerComponent({\n eContainer: this.eBottomFullWidthContainer,\n hideWhenNoChildren: true\n }),\n };\n _.iterateObject(this.rowContainerComponents, function (key, container) {\n if (container) {\n _this.getContext().wireBean(container);\n }\n });\n };\n GridPanel.prototype.setupRowAnimationCssClass = function () {\n var _this = this;\n var listener = function () {\n // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n // when scaling and doing row animation.\n var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.heightScaler.isScaling();\n _.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-animation', animateRows);\n _.addOrRemoveCssClass(_this.eBodyViewport, 'ag-row-no-animation', !animateRows);\n };\n listener();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n };\n // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n // scroll the column into view. we do not want this, the pinned sections should never scroll.\n // so we listen to scrolls on these containers and reset the scroll if we find one.\n GridPanel.prototype.suppressScrollOnFloatingRow = function () {\n var _this = this;\n var resetTopScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n var resetBottomScroll = function () { return _this.eTopViewport.scrollLeft = 0; };\n this.addDestroyableEventListener(this.eTopViewport, 'scroll', resetTopScroll);\n this.addDestroyableEventListener(this.eBottomViewport, 'scroll', resetBottomScroll);\n };\n GridPanel.prototype.getRowContainers = function () {\n return this.rowContainerComponents;\n };\n GridPanel.prototype.getFloatingTopBottom = function () {\n return [this.eTop, this.eBottom];\n };\n GridPanel.prototype.onDisplayedColumnsChanged = function () {\n this.setPinnedContainerSize();\n this.setHeaderAndFloatingHeights();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n this.updateColumnCount();\n };\n GridPanel.prototype.onDisplayedColumnsWidthChanged = function () {\n this.setWidthsOfContainers();\n this.onHorizontalViewportChanged();\n this.updateScrollVisibleService();\n if (this.enableRtl) {\n // because RTL is all backwards, a change in the width of the row\n // can cause a change in the scroll position, without a scroll event,\n // because the scroll position in RTL is a function that depends on\n // the width. to be convinced of this, take out this line, enable RTL,\n // scroll all the way to the left and then resize a column\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n };\n GridPanel.prototype.setWidthsOfContainers = function () {\n this.setCenterWidth();\n this.setPinnedContainerSize();\n };\n GridPanel.prototype.setCenterWidth = function () {\n var width = this.columnController.getBodyContainerWidth();\n if (this.printLayout) {\n var pinnedContainerWidths = this.columnController.getPinnedLeftContainerWidth()\n + this.columnController.getPinnedRightContainerWidth();\n width += pinnedContainerWidths;\n }\n this.headerRootComp.setHeaderContainerWidth(width);\n var widthPx = width + \"px\";\n this.eCenterContainer.style.width = widthPx;\n this.eBottomContainer.style.width = widthPx;\n this.eTopContainer.style.width = widthPx;\n if (!this.printLayout) {\n this.eBodyHorizontalScrollContainer.style.width = widthPx;\n }\n };\n GridPanel.prototype.setPinnedLeftWidth = function () {\n var _this = this;\n var oldPinning = this.pinningLeft;\n var widthOfCols = this.columnController.getPinnedLeftContainerWidth();\n var newPinning = this.pinningLeft = !this.printLayout && widthOfCols > 0;\n var containers = [this.eLeftContainer, this.eLeftTop, this.eLeftBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setLeftVisible(newPinning);\n }\n containers.forEach(function (e) { return _.setDisplayed(e, _this.pinningLeft); });\n if (newPinning) {\n containers.forEach(function (ct) { return _.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedRightWidth = function () {\n var oldPinning = this.pinningRight;\n var widthOfCols = this.columnController.getPinnedRightContainerWidth();\n var newPinning = this.pinningRight = !this.printLayout && widthOfCols > 0;\n var containers = [this.eRightContainer, this.eRightTop, this.eRightBottom];\n if (oldPinning !== newPinning) {\n this.headerRootComp.setRightVisible(newPinning);\n }\n containers.forEach(function (ct) { return _.setDisplayed(ct, newPinning); });\n if (newPinning) {\n containers.forEach(function (ct) { return _.setFixedWidth(ct, widthOfCols); });\n }\n };\n GridPanel.prototype.setPinnedContainerSize = function () {\n this.setPinnedLeftWidth();\n this.setPinnedRightWidth();\n this.setFakeHScrollSpacerWidths();\n };\n GridPanel.prototype.setFakeHScrollSpacerWidths = function () {\n // we pad the right based on a) if cols are pinned to the right and\n // b) if v scroll is showing on the right (normal position of scroll)\n var rightSpacing = this.columnController.getPinnedRightContainerWidth();\n var scrollOnRight = !this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnRight) {\n rightSpacing += this.scrollWidth;\n }\n _.setFixedWidth(this.eHorizontalRightSpacer, rightSpacing);\n _.addOrRemoveCssClass(this.eHorizontalRightSpacer, 'ag-scroller-corner', rightSpacing <= this.scrollWidth);\n // we pad the left based on a) if cols are pinned to the left and\n // b) if v scroll is showing on the left (happens in LTR layout only)\n var leftSpacing = this.columnController.getPinnedLeftContainerWidth();\n var scrollOnLeft = this.enableRtl && this.isVerticalScrollShowing();\n if (scrollOnLeft) {\n leftSpacing += this.scrollWidth;\n }\n _.setFixedWidth(this.eHorizontalLeftSpacer, leftSpacing);\n _.addOrRemoveCssClass(this.eHorizontalLeftSpacer, 'ag-scroller-corner', leftSpacing <= this.scrollWidth);\n };\n GridPanel.prototype.checkBodyHeight = function () {\n var bodyHeight = this.eBodyViewport.clientHeight;\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n var event_3 = {\n type: Events.EVENT_BODY_HEIGHT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n GridPanel.prototype.setHeaderAndFloatingHeights = function () {\n var _a = this, columnController = _a.columnController, gridOptionsWrapper = _a.gridOptionsWrapper, pinnedRowModel = _a.pinnedRowModel, eTop = _a.eTop, eBottom = _a.eBottom;\n var numberOfFloating = 0;\n var headerRowCount = columnController.getHeaderRowCount();\n var totalHeaderHeight;\n var groupHeight;\n var headerHeight;\n if (columnController.isPivotMode()) {\n groupHeight = gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getPivotHeaderHeight();\n }\n else {\n var hasFloatingFilters = columnController.hasFloatingFilters();\n if (hasFloatingFilters) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n groupHeight = gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n this.headerRootComp.setHeight(totalHeaderHeight);\n var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n if (floatingBottomHeight) {\n // adding 1px for cell bottom border\n floatingBottomHeight += 1;\n }\n var floatingTopHeightString = floatingTopHeight + \"px\";\n var floatingBottomHeightString = floatingBottomHeight + \"px\";\n eTop.style.minHeight = floatingTopHeightString;\n eTop.style.height = floatingTopHeightString;\n eTop.style.display = floatingTopHeight ? 'inherit' : 'none';\n eBottom.style.minHeight = floatingBottomHeightString;\n eBottom.style.height = floatingBottomHeightString;\n eBottom.style.display = floatingBottomHeight ? 'inherit' : 'none';\n this.checkBodyHeight();\n };\n GridPanel.prototype.getBodyHeight = function () {\n return this.bodyHeight;\n };\n // called by scrollHorizontally method and alignedGridsService\n GridPanel.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n this.eCenterViewport.scrollLeft = hScrollPosition;\n // we need to manually do the event handling (rather than wait for the event)\n // for the alignedGridsService, as if we don't, the aligned grid service gets\n // notified async, and then it's 'consuming' flag doesn't get used right, and\n // we can end up with an infinite loop\n this.doHorizontalScroll(hScrollPosition);\n };\n GridPanel.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n };\n // called by the headerRootComp and moveColumnController\n GridPanel.prototype.scrollHorizontally = function (pixels) {\n var oldScrollPosition = this.eCenterViewport.scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.eCenterViewport.scrollLeft - oldScrollPosition;\n };\n // called by rowDragFeature\n GridPanel.prototype.scrollVertically = function (pixels) {\n var oldScrollPosition = this.eBodyViewport.scrollTop;\n this.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n };\n GridPanel.prototype.addScrollListener = function () {\n this.addDestroyableEventListener(this.eCenterViewport, 'scroll', this.onCenterViewportScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyHorizontalScrollViewport, 'scroll', this.onFakeHorizontalScroll.bind(this));\n this.addDestroyableEventListener(this.eBodyViewport, 'scroll', this.onVerticalScroll.bind(this));\n };\n GridPanel.prototype.onVerticalScroll = function () {\n var scrollTop = this.eBodyViewport.scrollTop;\n this.animationFrameService.setScrollTop(scrollTop);\n this.scrollTop = scrollTop;\n this.redrawRowsAfterScroll();\n };\n GridPanel.prototype.isControllingScroll = function (eDiv) {\n if (!this.lastHorizontalScrollElement) {\n this.lastHorizontalScrollElement = eDiv;\n return true;\n }\n return eDiv === this.lastHorizontalScrollElement;\n };\n GridPanel.prototype.onFakeHorizontalScroll = function () {\n if (!this.isControllingScroll(this.eBodyHorizontalScrollViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eBodyHorizontalScrollViewport);\n };\n GridPanel.prototype.onCenterViewportScroll = function () {\n if (!this.isControllingScroll(this.eCenterViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(this.eCenterViewport);\n };\n GridPanel.prototype.onBodyHorizontalScroll = function (eSource) {\n var _a = this.eCenterViewport, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n // in chrome, fractions can be in the scroll left, eg 250.342234 - which messes up our 'scrollWentPastBounds'\n // formula. so we floor it to allow the formula to work.\n var scrollLeft = Math.floor(_.getScrollLeft(eSource, this.enableRtl));\n // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n // as otherwise it was causing the rows and header to flicker.\n var scrollWentPastBounds = scrollLeft < 0 || (scrollLeft + clientWidth > scrollWidth);\n if (scrollWentPastBounds) {\n return;\n }\n this.doHorizontalScroll(scrollLeft);\n this.resetLastHorizontalScrollElementDebounced();\n };\n GridPanel.prototype.resetLastHorizontalScrollElement = function () {\n this.lastHorizontalScrollElement = null;\n };\n GridPanel.prototype.doHorizontalScroll = function (scrollLeft) {\n this.scrollLeft = scrollLeft;\n var event = {\n type: Events.EVENT_BODY_SCROLL,\n api: this.gridApi,\n columnApi: this.columnApi,\n direction: 'horizontal',\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n };\n GridPanel.prototype.redrawRowsAfterScroll = function () {\n var event = {\n type: Events.EVENT_BODY_SCROLL,\n direction: 'vertical',\n api: this.gridApi,\n columnApi: this.columnApi,\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(event);\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n GridPanel.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.eCenterViewport.clientWidth;\n var scrollPosition = this.getCenterViewportScrollLeft();\n this.columnController.setVirtualViewportPosition(scrollWidth, scrollPosition);\n };\n GridPanel.prototype.getCenterViewportScrollLeft = function () {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n return _.getScrollLeft(this.eCenterViewport, this.enableRtl);\n };\n GridPanel.prototype.setCenterViewportScrollLeft = function (value) {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n _.setScrollLeft(this.eCenterViewport, value, this.enableRtl);\n };\n GridPanel.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n if (scrollLeft === undefined) {\n scrollLeft = this.getCenterViewportScrollLeft();\n }\n var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n var _a = this.eCenterViewport, clientWidth = _a.clientWidth, scrollWidth = _a.scrollWidth;\n var scrollWentPastBounds = Math.abs(offset) + clientWidth > scrollWidth;\n if (scrollWentPastBounds ||\n (this.enableRtl && offset < 0) ||\n (!this.enableRtl && offset > 0)) {\n return;\n }\n this.headerRootComp.setHorizontalScroll(offset);\n this.eBottomContainer.style.transform = \"translateX(\" + offset + \"px)\";\n this.eTopContainer.style.transform = \"translateX(\" + offset + \"px)\";\n var partner = this.lastHorizontalScrollElement === this.eCenterViewport ? this.eBodyHorizontalScrollViewport : this.eCenterViewport;\n _.setScrollLeft(partner, scrollLeft, this.enableRtl);\n };\n // + rangeController\n GridPanel.prototype.addScrollEventListener = function (listener) {\n this.eBodyViewport.addEventListener('scroll', listener);\n };\n // + rangeController\n GridPanel.prototype.removeScrollEventListener = function (listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n };\n __decorate$Y([\n Autowired('alignedGridsService')\n ], GridPanel.prototype, \"alignedGridsService\", void 0);\n __decorate$Y([\n Autowired('gridOptionsWrapper')\n ], GridPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$Y([\n Autowired('columnController')\n ], GridPanel.prototype, \"columnController\", void 0);\n __decorate$Y([\n Autowired('rowRenderer')\n ], GridPanel.prototype, \"rowRenderer\", void 0);\n __decorate$Y([\n Autowired('pinnedRowModel')\n ], GridPanel.prototype, \"pinnedRowModel\", void 0);\n __decorate$Y([\n Autowired('eventService')\n ], GridPanel.prototype, \"eventService\", void 0);\n __decorate$Y([\n Autowired('animationFrameService')\n ], GridPanel.prototype, \"animationFrameService\", void 0);\n __decorate$Y([\n Autowired('navigationService')\n ], GridPanel.prototype, \"navigationService\", void 0);\n __decorate$Y([\n Autowired('autoHeightCalculator')\n ], GridPanel.prototype, \"autoHeightCalculator\", void 0);\n __decorate$Y([\n Autowired('columnAnimationService')\n ], GridPanel.prototype, \"columnAnimationService\", void 0);\n __decorate$Y([\n Autowired('autoWidthCalculator')\n ], GridPanel.prototype, \"autoWidthCalculator\", void 0);\n __decorate$Y([\n Autowired('paginationAutoPageSizeService')\n ], GridPanel.prototype, \"paginationAutoPageSizeService\", void 0);\n __decorate$Y([\n Autowired('beans')\n ], GridPanel.prototype, \"beans\", void 0);\n __decorate$Y([\n Autowired('paginationProxy')\n ], GridPanel.prototype, \"paginationProxy\", void 0);\n __decorate$Y([\n Autowired('columnApi')\n ], GridPanel.prototype, \"columnApi\", void 0);\n __decorate$Y([\n Autowired('gridApi')\n ], GridPanel.prototype, \"gridApi\", void 0);\n __decorate$Y([\n Autowired('dragService')\n ], GridPanel.prototype, \"dragService\", void 0);\n __decorate$Y([\n Autowired('mouseEventService')\n ], GridPanel.prototype, \"mouseEventService\", void 0);\n __decorate$Y([\n Autowired('$scope')\n ], GridPanel.prototype, \"$scope\", void 0);\n __decorate$Y([\n Autowired('scrollVisibleService')\n ], GridPanel.prototype, \"scrollVisibleService\", void 0);\n __decorate$Y([\n Autowired('valueService')\n ], GridPanel.prototype, \"valueService\", void 0);\n __decorate$Y([\n Autowired('dragAndDropService')\n ], GridPanel.prototype, \"dragAndDropService\", void 0);\n __decorate$Y([\n Autowired('maxDivHeightScaler')\n ], GridPanel.prototype, \"heightScaler\", void 0);\n __decorate$Y([\n Autowired('resizeObserverService')\n ], GridPanel.prototype, \"resizeObserverService\", void 0);\n __decorate$Y([\n Autowired('undoRedoService')\n ], GridPanel.prototype, \"undoRedoService\", void 0);\n __decorate$Y([\n Optional('rangeController')\n ], GridPanel.prototype, \"rangeController\", void 0);\n __decorate$Y([\n Optional('contextMenuFactory')\n ], GridPanel.prototype, \"contextMenuFactory\", void 0);\n __decorate$Y([\n Optional('clipboardService')\n ], GridPanel.prototype, \"clipboardService\", void 0);\n __decorate$Y([\n RefSelector('eBodyViewport')\n ], GridPanel.prototype, \"eBodyViewport\", void 0);\n __decorate$Y([\n RefSelector('eCenterContainer')\n ], GridPanel.prototype, \"eCenterContainer\", void 0);\n __decorate$Y([\n RefSelector('eCenterViewport')\n ], GridPanel.prototype, \"eCenterViewport\", void 0);\n __decorate$Y([\n RefSelector('eLeftContainer')\n ], GridPanel.prototype, \"eLeftContainer\", void 0);\n __decorate$Y([\n RefSelector('eRightContainer')\n ], GridPanel.prototype, \"eRightContainer\", void 0);\n __decorate$Y([\n RefSelector('eCenterColsClipper')\n ], GridPanel.prototype, \"eCenterColsClipper\", void 0);\n __decorate$Y([\n RefSelector('eHorizontalScrollBody')\n ], GridPanel.prototype, \"eHorizontalScrollBody\", void 0);\n __decorate$Y([\n RefSelector('eHorizontalLeftSpacer')\n ], GridPanel.prototype, \"eHorizontalLeftSpacer\", void 0);\n __decorate$Y([\n RefSelector('eHorizontalRightSpacer')\n ], GridPanel.prototype, \"eHorizontalRightSpacer\", void 0);\n __decorate$Y([\n RefSelector('eBodyHorizontalScrollViewport')\n ], GridPanel.prototype, \"eBodyHorizontalScrollViewport\", void 0);\n __decorate$Y([\n RefSelector('eBodyHorizontalScrollContainer')\n ], GridPanel.prototype, \"eBodyHorizontalScrollContainer\", void 0);\n __decorate$Y([\n RefSelector('eFullWidthContainer')\n ], GridPanel.prototype, \"eFullWidthContainer\", void 0);\n __decorate$Y([\n RefSelector('eTop')\n ], GridPanel.prototype, \"eTop\", void 0);\n __decorate$Y([\n RefSelector('eLeftTop')\n ], GridPanel.prototype, \"eLeftTop\", void 0);\n __decorate$Y([\n RefSelector('eRightTop')\n ], GridPanel.prototype, \"eRightTop\", void 0);\n __decorate$Y([\n RefSelector('eTopContainer')\n ], GridPanel.prototype, \"eTopContainer\", void 0);\n __decorate$Y([\n RefSelector('eTopViewport')\n ], GridPanel.prototype, \"eTopViewport\", void 0);\n __decorate$Y([\n RefSelector('eTopFullWidthContainer')\n ], GridPanel.prototype, \"eTopFullWidthContainer\", void 0);\n __decorate$Y([\n RefSelector('eBottom')\n ], GridPanel.prototype, \"eBottom\", void 0);\n __decorate$Y([\n RefSelector('eLeftBottom')\n ], GridPanel.prototype, \"eLeftBottom\", void 0);\n __decorate$Y([\n RefSelector('eRightBottom')\n ], GridPanel.prototype, \"eRightBottom\", void 0);\n __decorate$Y([\n RefSelector('eBottomContainer')\n ], GridPanel.prototype, \"eBottomContainer\", void 0);\n __decorate$Y([\n RefSelector('eBottomViewport')\n ], GridPanel.prototype, \"eBottomViewport\", void 0);\n __decorate$Y([\n RefSelector('eBottomFullWidthContainer')\n ], GridPanel.prototype, \"eBottomFullWidthContainer\", void 0);\n __decorate$Y([\n RefSelector('headerRoot')\n ], GridPanel.prototype, \"headerRootComp\", void 0);\n __decorate$Y([\n RefSelector('overlayWrapper')\n ], GridPanel.prototype, \"overlayWrapper\", void 0);\n __decorate$Y([\n PostConstruct\n ], GridPanel.prototype, \"init\", null);\n return GridPanel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridApi = /** @class */ (function () {\n function GridApi() {\n this.detailGridInfoMap = {};\n }\n GridApi.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n GridApi.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n GridApi.prototype.registerHeaderRootComp = function (headerRootComp) {\n this.headerRootComp = headerRootComp;\n };\n GridApi.prototype.init = function () {\n switch (this.rowModel.getType()) {\n case Constants.ROW_MODEL_TYPE_CLIENT_SIDE:\n this.clientSideRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_INFINITE:\n this.infiniteRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_SERVER_SIDE:\n this.serverSideRowModel = this.rowModel;\n break;\n }\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getAlignedGridService = function () {\n return this.alignedGridsService;\n };\n GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n this.detailGridInfoMap[id] = gridInfo;\n };\n GridApi.prototype.removeDetailGridInfo = function (id) {\n this.detailGridInfoMap[id] = undefined;\n };\n GridApi.prototype.getDetailGridInfo = function (id) {\n return this.detailGridInfoMap[id];\n };\n GridApi.prototype.forEachDetailGridInfo = function (callback) {\n var index = 0;\n _.iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n // check for undefined, as old references will still be lying around\n if (_.exists(gridInfo)) {\n callback(gridInfo, index);\n index++;\n }\n });\n };\n GridApi.prototype.getDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(exports.ModuleNames.CsvExportModule, 'api.getDataAsCsv')) {\n return this.csvCreator.getDataAsCsv(params);\n }\n };\n GridApi.prototype.exportDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(exports.ModuleNames.CsvExportModule, 'api.exportDataAsCSv')) {\n this.csvCreator.exportDataAsCsv(params);\n }\n };\n GridApi.prototype.getDataAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(exports.ModuleNames.ExcelExportModule, 'api.getDataAsExcel')) {\n return this.excelCreator.getDataAsExcelXml(params);\n }\n };\n GridApi.prototype.exportDataAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(exports.ModuleNames.ExcelExportModule, 'api.exportDataAsExcel')) {\n this.excelCreator.exportDataAsExcel(params);\n }\n };\n /** @deprecated */\n GridApi.prototype.setEnterpriseDatasource = function (datasource) {\n console.warn(\"ag-grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource()\");\n this.setServerSideDatasource(datasource);\n };\n GridApi.prototype.setServerSideDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n // should really have an IEnterpriseRowModel interface, so we are not casting to any\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_SERVER_SIDE + \"'\");\n }\n };\n GridApi.prototype.setDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use a datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_INFINITE + \"'\");\n }\n };\n GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n // this is bad coding, because it's using an interface that's exposed in the enterprise.\n // really we should create an interface in the core for viewportDatasource and let\n // the enterprise implement it, rather than casting to 'any' here\n this.rowModel.setViewportDatasource(viewportDatasource);\n }\n else {\n console.warn(\"ag-Grid: you can only use a viewport datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_VIEWPORT + \"'\");\n }\n };\n GridApi.prototype.setRowData = function (rowData) {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n if (this.gridOptionsWrapper.isImmutableData()) {\n var _a = this.immutableService.createTransactionForRowData(rowData), transaction = _a[0], orderIdMap = _a[1];\n this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n // need to force updating of full width rows - note this wouldn't be necessary the full width cell comp listened\n // to the data change event on the row node and refreshed itself.\n this.rowRenderer.refreshFullWidthRows();\n }\n else {\n this.selectionController.reset();\n this.clientSideRowModel.setRowData(rowData);\n }\n }\n else {\n console.warn('cannot call setRowData unless using normal row model');\n }\n };\n /** @deprecated */\n GridApi.prototype.setFloatingTopRowData = function (rows) {\n console.warn('ag-Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');\n this.setPinnedTopRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.setFloatingBottomRowData = function (rows) {\n console.warn('ag-Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');\n this.setPinnedBottomRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRowCount = function () {\n console.warn('ag-Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');\n return this.getPinnedTopRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRowCount = function () {\n console.warn('ag-Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');\n return this.getPinnedBottomRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRow = function (index) {\n console.warn('ag-Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');\n return this.getPinnedTopRow(index);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRow = function (index) {\n console.warn('ag-Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');\n return this.getPinnedBottomRow(index);\n };\n GridApi.prototype.setPinnedTopRowData = function (rows) {\n this.pinnedRowModel.setPinnedTopRowData(rows);\n };\n GridApi.prototype.setPinnedBottomRowData = function (rows) {\n this.pinnedRowModel.setPinnedBottomRowData(rows);\n };\n GridApi.prototype.getPinnedTopRowCount = function () {\n return this.pinnedRowModel.getPinnedTopRowCount();\n };\n GridApi.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedRowModel.getPinnedBottomRowCount();\n };\n GridApi.prototype.getPinnedTopRow = function (index) {\n return this.pinnedRowModel.getPinnedTopRow(index);\n };\n GridApi.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedRowModel.getPinnedBottomRow(index);\n };\n GridApi.prototype.setColumnDefs = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnController.setColumnDefs(colDefs, source);\n };\n GridApi.prototype.expireValueCache = function () {\n this.valueCache.expire();\n };\n GridApi.prototype.getVerticalPixelRange = function () {\n return this.gridPanel.getVScrollPosition();\n };\n GridApi.prototype.getHorizontalPixelRange = function () {\n return this.gridPanel.getHScrollPosition();\n };\n GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {\n this.gridOptionsWrapper.setProperty('alwaysShowVerticalScroll', show);\n };\n GridApi.prototype.refreshToolPanel = function () {\n this.gridCore.refreshSideBar();\n };\n GridApi.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n if (Array.isArray(params)) {\n // the old version of refreshCells() took an array of rowNodes for the first argument\n console.warn('since ag-Grid v11.1, refreshCells() now takes parameters, please see the documentation.');\n return;\n }\n this.rowRenderer.refreshCells(params);\n };\n GridApi.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.rowRenderer.flashCells(params);\n };\n GridApi.prototype.redrawRows = function (params) {\n if (params === void 0) { params = {}; }\n if (params && params.rowNodes) {\n this.rowRenderer.redrawRows(params.rowNodes);\n }\n else {\n this.rowRenderer.redrawAfterModelUpdate();\n }\n };\n GridApi.prototype.timeFullRedraw = function (count) {\n if (count === void 0) { count = 1; }\n var iterationCount = 0;\n var totalProcessing = 0;\n var totalReflow = 0;\n var that = this;\n doOneIteration();\n function doOneIteration() {\n var start = (new Date()).getTime();\n that.rowRenderer.redrawAfterModelUpdate();\n var endProcessing = (new Date()).getTime();\n window.setTimeout(function () {\n var endReflow = (new Date()).getTime();\n var durationProcessing = endProcessing - start;\n var durationReflow = endReflow - endProcessing;\n // tslint:disable-next-line\n console.log('duration: processing = ' + durationProcessing + 'ms, reflow = ' + durationReflow + 'ms');\n iterationCount++;\n totalProcessing += durationProcessing;\n totalReflow += durationReflow;\n if (iterationCount < count) {\n // wait for 1s between tests\n window.setTimeout(doOneIteration, 1000);\n }\n else {\n finish();\n }\n }, 0);\n }\n function finish() {\n // tslint:disable-next-line\n console.log('tests complete. iteration count = ' + iterationCount);\n // tslint:disable-next-line\n console.log('average processing = ' + (totalProcessing / iterationCount) + 'ms');\n // tslint:disable-next-line\n console.log('average reflow = ' + (totalReflow / iterationCount) + 'ms');\n }\n };\n /** @deprecated */\n GridApi.prototype.refreshView = function () {\n console.warn('ag-Grid: since v11.1, refreshView() is deprecated, please call refreshCells() or redrawRows() instead');\n this.redrawRows();\n };\n /** @deprecated */\n GridApi.prototype.refreshRows = function (rowNodes) {\n console.warn('since ag-Grid v11.1, refreshRows() is deprecated, please use refreshCells({rowNodes: rows}) or redrawRows({rowNodes: rows}) instead');\n this.refreshCells({ rowNodes: rowNodes });\n };\n /** @deprecated */\n GridApi.prototype.rowDataChanged = function (rows) {\n console.warn('ag-Grid: rowDataChanged is deprecated, either call refreshView() to refresh everything, or call rowNode.setRowData(newData) to set value on a particular node');\n this.redrawRows();\n };\n /** @deprecated */\n GridApi.prototype.softRefreshView = function () {\n console.error('ag-Grid: since v16, softRefreshView() is no longer supported. Please check the documentation on how to refresh.');\n };\n /** @deprecated */\n GridApi.prototype.refreshGroupRows = function () {\n console.warn('ag-Grid: since v11.1, refreshGroupRows() is no longer supported, call refreshCells() instead. ' +\n 'Because refreshCells() now does dirty checking, it will only refresh cells that have changed, so it should ' +\n 'not be necessary to only refresh the group rows.');\n this.refreshCells();\n };\n GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);\n };\n GridApi.prototype.refreshHeader = function () {\n this.headerRootComp.refreshHeader();\n this.gridPanel.setHeaderAndFloatingHeights();\n };\n GridApi.prototype.isAnyFilterPresent = function () {\n return this.filterManager.isAnyFilterPresent();\n };\n /** @deprecated */\n GridApi.prototype.isAdvancedFilterPresent = function () {\n console.warn('ag-Grid: isAdvancedFilterPresent() is deprecated, please use isColumnFilterPresent()');\n return this.isColumnFilterPresent();\n };\n GridApi.prototype.isColumnFilterPresent = function () {\n return this.filterManager.isAdvancedFilterPresent();\n };\n GridApi.prototype.isQuickFilterPresent = function () {\n return this.filterManager.isQuickFilterPresent();\n };\n GridApi.prototype.getModel = function () {\n return this.rowModel;\n };\n GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded) {\n if (rowNode) {\n rowNode.setExpanded(expanded);\n }\n };\n GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');\n }\n if (_.exists(deprecated_refreshFromIndex)) {\n console.warn('ag-Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');\n }\n // we don't really want the user calling this if only one rowNode was expanded, instead they should be\n // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n this.clientSideRowModel.refreshModel({ step: Constants.STEP_MAP });\n };\n GridApi.prototype.refreshInMemoryRowModel = function (step) {\n console.warn(\"ag-grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel()\");\n this.refreshClientSideRowModel(step);\n };\n GridApi.prototype.refreshClientSideRowModel = function (step) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call refreshClientSideRowModel unless using normal row model');\n }\n var paramsStep = Constants.STEP_EVERYTHING;\n var stepsMapped = {\n group: Constants.STEP_EVERYTHING,\n filter: Constants.STEP_FILTER,\n map: Constants.STEP_MAP,\n aggregate: Constants.STEP_AGGREGATE,\n sort: Constants.STEP_SORT,\n pivot: Constants.STEP_PIVOT\n };\n if (_.exists(step)) {\n paramsStep = stepsMapped[step];\n }\n if (_.missing(paramsStep)) {\n console.error(\"ag-Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n return;\n }\n var modelParams = {\n step: paramsStep,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n };\n this.clientSideRowModel.refreshModel(modelParams);\n };\n GridApi.prototype.isAnimationFrameQueueEmpty = function () {\n return this.animationFrameService.isQueueEmpty();\n };\n GridApi.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n GridApi.prototype.getSizesForCurrentTheme = function () {\n return {\n rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n headerHeight: this.gridOptionsWrapper.getHeaderHeight()\n };\n };\n GridApi.prototype.expandAll = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call expandAll unless using normal row model');\n return;\n }\n this.clientSideRowModel.expandOrCollapseAll(true);\n };\n GridApi.prototype.collapseAll = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('ag-Grid: cannot call collapseAll unless using normal row model');\n return;\n }\n this.clientSideRowModel.expandOrCollapseAll(false);\n };\n GridApi.prototype.getToolPanelInstance = function (id) {\n return this.gridCore.getToolPanelInstance(id);\n };\n GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {\n if (typeof eventName !== 'string') {\n console.warn('ag-Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');\n }\n this.addRenderedRowListener(eventName, rowIndex, callback);\n };\n GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n if (eventName === 'virtualRowSelected') {\n console.warn(\"ag-Grid: event virtualRowSelected is deprecated, to register for individual row\\n selection events, add a listener directly to the row node.\");\n }\n this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n };\n GridApi.prototype.setQuickFilter = function (newFilter) {\n this.filterManager.setQuickFilter(newFilter);\n };\n GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {\n console.warn('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionController.selectIndex(index, tryMulti);\n };\n GridApi.prototype.deselectIndex = function (index, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionController.deselectIndex(index);\n };\n GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {\n if (tryMulti === void 0) { tryMulti = false; }\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n };\n GridApi.prototype.deselectNode = function (node, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('ag-Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('ag-Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: false });\n };\n GridApi.prototype.selectAll = function () {\n this.selectionController.selectAllRowNodes();\n };\n GridApi.prototype.deselectAll = function () {\n this.selectionController.deselectAllRowNodes();\n };\n GridApi.prototype.selectAllFiltered = function () {\n this.selectionController.selectAllRowNodes(true);\n };\n GridApi.prototype.deselectAllFiltered = function () {\n this.selectionController.deselectAllRowNodes(true);\n };\n GridApi.prototype.recomputeAggregates = function () {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call recomputeAggregates unless using normal row model');\n }\n console.warn(\"recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead\");\n this.clientSideRowModel.refreshModel({ step: Constants.STEP_AGGREGATE });\n };\n GridApi.prototype.sizeColumnsToFit = function () {\n this.gridPanel.sizeColumnsToFit();\n };\n GridApi.prototype.showLoadingOverlay = function () {\n this.gridPanel.showLoadingOverlay();\n };\n GridApi.prototype.showNoRowsOverlay = function () {\n this.gridPanel.showNoRowsOverlay();\n };\n GridApi.prototype.hideOverlay = function () {\n this.gridPanel.hideOverlay();\n };\n GridApi.prototype.isNodeSelected = function (node) {\n console.warn('ag-Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');\n return node.isSelected();\n };\n GridApi.prototype.getSelectedNodesById = function () {\n console.error('ag-Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');\n return null;\n };\n GridApi.prototype.getSelectedNodes = function () {\n return this.selectionController.getSelectedNodes();\n };\n GridApi.prototype.getSelectedRows = function () {\n return this.selectionController.getSelectedRows();\n };\n GridApi.prototype.getBestCostNodeSelection = function () {\n return this.selectionController.getBestCostNodeSelection();\n };\n GridApi.prototype.getRenderedNodes = function () {\n return this.rowRenderer.getRenderedNodes();\n };\n GridApi.prototype.ensureColIndexVisible = function (index) {\n console.warn('ag-Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');\n };\n GridApi.prototype.ensureColumnVisible = function (key) {\n this.gridPanel.ensureColumnVisible(key);\n };\n // Valid values for position are bottom, middle and top\n GridApi.prototype.ensureIndexVisible = function (index, position) {\n this.gridPanel.ensureIndexVisible(index, position);\n };\n // Valid values for position are bottom, middle and top\n GridApi.prototype.ensureNodeVisible = function (comparator, position) {\n this.gridCore.ensureNodeVisible(comparator, position);\n };\n GridApi.prototype.forEachLeafNode = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNode unless using normal row model');\n }\n this.clientSideRowModel.forEachLeafNode(callback);\n };\n GridApi.prototype.forEachNode = function (callback) {\n this.rowModel.forEachNode(callback);\n };\n GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilter unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilter(callback);\n };\n GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n if (_.missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilterAndSort unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);\n };\n GridApi.prototype.getFilterApiForColDef = function (colDef) {\n console.warn('ag-grid API method getFilterApiForColDef deprecated, use getFilterInstance instead');\n return this.getFilterInstance(colDef);\n };\n GridApi.prototype.getFilterInstance = function (key, callback) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n var filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');\n var currentValue = filterPromise.resolveNow(null, function (filterComp) { return filterComp; });\n if (callback) {\n if (currentValue) {\n setTimeout(callback, 0, currentValue);\n }\n else {\n filterPromise.then(callback);\n }\n }\n return currentValue;\n }\n };\n GridApi.prototype.getFilterApi = function (key) {\n console.warn('ag-Grid: getFilterApi is deprecated, use getFilterInstance instead');\n return this.getFilterInstance(key);\n };\n GridApi.prototype.destroyFilter = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.destroyFilter(column, \"filterDestroyed\");\n }\n };\n GridApi.prototype.getStatusPanel = function (key) {\n if (this.statusBarService) {\n return this.statusBarService.getStatusPanel(key);\n }\n };\n GridApi.prototype.getColumnDef = function (key) {\n var column = this.columnController.getPrimaryColumn(key);\n if (column) {\n return column.getColDef();\n }\n return null;\n };\n GridApi.prototype.onFilterChanged = function () {\n this.filterManager.onFilterChanged();\n };\n GridApi.prototype.onSortChanged = function () {\n this.sortController.onSortChanged();\n };\n GridApi.prototype.setSortModel = function (sortModel, source) {\n if (source === void 0) { source = \"api\"; }\n this.sortController.setSortModel(sortModel, source);\n };\n GridApi.prototype.getSortModel = function () {\n return this.sortController.getSortModel();\n };\n GridApi.prototype.setFilterModel = function (model) {\n this.filterManager.setFilterModel(model);\n };\n GridApi.prototype.getFilterModel = function () {\n return this.filterManager.getFilterModel();\n };\n GridApi.prototype.getFocusedCell = function () {\n return this.focusController.getFocusedCell();\n };\n GridApi.prototype.clearFocusedCell = function () {\n return this.focusController.clearFocusedCell();\n };\n GridApi.prototype.setFocusedCell = function (rowIndex, colKey, floating) {\n this.focusController.setFocusedCell(rowIndex, colKey, floating, true);\n };\n GridApi.prototype.setSuppressRowDrag = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG, value);\n };\n GridApi.prototype.setSuppressMoveWhenRowDragging = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG, value);\n };\n GridApi.prototype.setSuppressRowClickSelection = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION, value);\n };\n GridApi.prototype.addRowDropZone = function (params) {\n this.gridPanel.getRowDragFeature().addRowDropZone(params);\n };\n GridApi.prototype.removeRowDropZone = function (params) {\n var activeDropTarget = this.dragAndDropService.findExternalZone(params);\n if (activeDropTarget) {\n this.dragAndDropService.removeDropTarget(activeDropTarget);\n }\n };\n GridApi.prototype.getRowDropZoneParams = function (events) {\n return this.gridPanel.getRowDragFeature().getRowDropZone(events);\n };\n GridApi.prototype.setHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setGridAutoHeight = function (gridAutoHeight) {\n console.warn('api.setGridAutoHeight(boolean) is deprecated, please use api.setDomLayout() instead');\n this.setDomLayout(gridAutoHeight ? 'autoHeight' : 'normal');\n };\n GridApi.prototype.setDomLayout = function (domLayout) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DOM_LAYOUT, domLayout);\n };\n GridApi.prototype.setEnableCellTextSelection = function (selectable) {\n this.gridPanel.setCellTextSelection(selectable);\n };\n GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, headerHeight);\n this.doLayout();\n };\n GridApi.prototype.isSideBarVisible = function () {\n return this.gridCore.isSideBarVisible();\n };\n GridApi.prototype.setSideBarVisible = function (show) {\n this.gridCore.setSideBarVisible(show);\n };\n GridApi.prototype.setSideBarPosition = function (position) {\n this.gridCore.setSideBarPosition(position);\n };\n GridApi.prototype.showToolPanel = function (show) {\n console.warn(\"ag-grid: from v19 api.showToolPanel has been deprecated in favour of api.setSideBarVisible\");\n this.setSideBarVisible(show);\n };\n GridApi.prototype.openToolPanel = function (key) {\n this.gridCore.openToolPanel(key);\n };\n GridApi.prototype.closeToolPanel = function () {\n this.gridCore.closeToolPanel();\n };\n GridApi.prototype.getOpenedToolPanel = function () {\n return this.gridCore.getOpenedToolPanel();\n };\n GridApi.prototype.getSideBar = function () {\n return this.gridCore.getSideBar();\n };\n GridApi.prototype.setSideBar = function (def) {\n return this.gridCore.setSideBar(def);\n };\n GridApi.prototype.setSuppressClipboardPaste = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE, value);\n };\n GridApi.prototype.isToolPanelShowing = function () {\n return this.gridCore.isToolPanelShowing();\n };\n GridApi.prototype.doLayout = function () {\n this.gridPanel.checkViewportAndScrolls();\n };\n GridApi.prototype.resetRowHeights = function () {\n if (_.exists(this.clientSideRowModel)) {\n this.clientSideRowModel.resetRowHeights();\n }\n };\n GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.onRowHeightChanged = function () {\n if (_.exists(this.clientSideRowModel)) {\n this.clientSideRowModel.onRowHeightChanged();\n }\n };\n GridApi.prototype.getValue = function (colKey, rowNode) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (_.missing(column)) {\n column = this.columnController.getGridColumn(colKey);\n }\n if (_.missing(column)) {\n return null;\n }\n return this.valueService.getValue(column, rowNode);\n };\n GridApi.prototype.addEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addEventListener(eventType, listener, async);\n };\n GridApi.prototype.addGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addGlobalListener(listener, async);\n };\n GridApi.prototype.removeEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeEventListener(eventType, listener, async);\n };\n GridApi.prototype.removeGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeGlobalListener(listener, async);\n };\n GridApi.prototype.dispatchEvent = function (event) {\n this.eventService.dispatchEvent(event);\n };\n GridApi.prototype.destroy = function () {\n // destroy the UI first (as they use the services)\n this.gridCore.destroy();\n // destroy the services\n this.context.destroy();\n };\n GridApi.prototype.resetQuickFilter = function () {\n this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n };\n GridApi.prototype.getRangeSelections = function () {\n console.warn(\"ag-Grid: in v20.1.x, api.getRangeSelections() is gone, please use getCellRanges() instead.\\n We had to change how cell selections works a small bit to allow charting to integrate. The return type of\\n getCellRanges() is a bit different, please check the ag-Grid documentation.\");\n return null;\n };\n GridApi.prototype.getCellRanges = function () {\n if (this.rangeController) {\n return this.rangeController.getCellRanges();\n }\n else {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n return null;\n }\n };\n GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {\n return _.camelCaseToHumanText(camelCase);\n };\n GridApi.prototype.addRangeSelection = function (deprecatedNoLongerUsed) {\n console.warn('ag-Grid: As of version 21.x, range selection changed slightly to allow charting integration. Please call api.addCellRange() instead of api.addRangeSelection()');\n };\n GridApi.prototype.addCellRange = function (params) {\n if (!this.rangeController) {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n }\n this.rangeController.addCellRange(params);\n };\n GridApi.prototype.clearRangeSelection = function () {\n if (!this.rangeController) {\n console.warn('ag-Grid: cell range selection is only available in ag-Grid Enterprise');\n }\n this.rangeController.removeAllCellRanges();\n };\n GridApi.prototype.undoCellEditing = function () {\n this.undoRedoService.undo();\n };\n GridApi.prototype.redoCellEditing = function () {\n this.undoRedoService.redo();\n };\n GridApi.prototype.getChartModels = function () {\n if (ModuleRegistry.assertRegistered(exports.ModuleNames.RangeSelectionModule, 'api.getChartModels') &&\n ModuleRegistry.assertRegistered(exports.ModuleNames.GridChartsModule, 'api.getChartModels')) {\n return this.chartService.getChartModels();\n }\n };\n GridApi.prototype.createRangeChart = function (params) {\n if (ModuleRegistry.assertRegistered(exports.ModuleNames.RangeSelectionModule, 'api.createRangeChart') &&\n ModuleRegistry.assertRegistered(exports.ModuleNames.GridChartsModule, 'api.createRangeChart')) {\n return this.chartService.createRangeChart(params);\n }\n };\n GridApi.prototype.createPivotChart = function (params) {\n if (ModuleRegistry.assertRegistered(exports.ModuleNames.RangeSelectionModule, 'api.createPivotChart') &&\n ModuleRegistry.assertRegistered(exports.ModuleNames.GridChartsModule, 'api.createPivotChart')) {\n return this.chartService.createPivotChart(params);\n }\n };\n GridApi.prototype.copySelectedRowsToClipboard = function (includeHeader, columnKeys) {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copySelectedRowsToClipboard(includeHeader, columnKeys);\n };\n GridApi.prototype.copySelectedRangeToClipboard = function (includeHeader) {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copySelectedRangeToClipboard(includeHeader);\n };\n GridApi.prototype.copySelectedRangeDown = function () {\n if (!this.clipboardService) {\n console.warn('ag-Grid: clipboard is only available in ag-Grid Enterprise');\n }\n this.clipboardService.copyRangeDown();\n };\n GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n // use grid column so works with pivot mode\n var column = this.columnController.getGridColumn(colKey);\n this.menuFactory.showMenuAfterButtonClick(column, buttonElement);\n };\n GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n // use grid column so works with pivot mode\n var column = this.columnController.getGridColumn(colKey);\n this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n };\n GridApi.prototype.hidePopupMenu = function () {\n // hide the context menu if in enterprise\n if (this.contextMenuFactory) {\n this.contextMenuFactory.hideActiveMenu();\n }\n // and hide the column menu always\n this.menuFactory.hideActiveMenu();\n };\n GridApi.prototype.setPopupParent = function (ePopupParent) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POPUP_PARENT, ePopupParent);\n };\n GridApi.prototype.tabToNextCell = function () {\n return this.rowRenderer.tabToNextCell(false);\n };\n GridApi.prototype.tabToPreviousCell = function () {\n return this.rowRenderer.tabToNextCell(true);\n };\n GridApi.prototype.getCellRendererInstances = function (params) {\n if (params === void 0) { params = {}; }\n return this.rowRenderer.getCellRendererInstances(params);\n };\n GridApi.prototype.getCellEditorInstances = function (params) {\n if (params === void 0) { params = {}; }\n return this.rowRenderer.getCellEditorInstances(params);\n };\n GridApi.prototype.getEditingCells = function () {\n return this.rowRenderer.getEditingCells();\n };\n GridApi.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.rowRenderer.stopEditing(cancel);\n };\n GridApi.prototype.startEditingCell = function (params) {\n var column = this.columnController.getGridColumn(params.colKey);\n if (!column) {\n console.warn(\"ag-Grid: no column found for \" + params.colKey);\n return;\n }\n var cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned,\n column: column\n };\n var notPinned = _.missing(params.rowPinned);\n if (notPinned) {\n this.gridPanel.ensureIndexVisible(params.rowIndex);\n }\n this.rowRenderer.startEditingCell(cellPosition, params.keyPress, params.charPress);\n };\n GridApi.prototype.addAggFunc = function (key, aggFunc) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFunc(key, aggFunc);\n }\n };\n GridApi.prototype.addAggFuncs = function (aggFuncs) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFuncs(aggFuncs);\n }\n };\n GridApi.prototype.clearAggFuncs = function () {\n if (this.aggFuncService) {\n this.aggFuncService.clear();\n }\n };\n GridApi.prototype.applyTransaction = function (rowDataTransaction) {\n var res = null;\n if (this.clientSideRowModel) {\n if (rowDataTransaction && rowDataTransaction.addIndex != null) {\n var message_1 = 'ag-Grid: as of v23.1, transaction.addIndex is deprecated. If you want precision control of adding data, use immutableData instead';\n _.doOnce(function () { return console.warn(message_1); }, 'transaction.addIndex deprecated');\n }\n res = this.clientSideRowModel.updateRowData(rowDataTransaction);\n }\n else if (this.infiniteRowModel) {\n var message_2 = 'ag-Grid: as of v23.1, transactions for Infinite Row Model are deprecated. If you want to make updates to data in Infinite Row Models, then refresh the data.';\n _.doOnce(function () { return console.warn(message_2); }, 'applyTransaction infiniteRowModel deprecated');\n this.infiniteRowModel.updateRowData(rowDataTransaction);\n }\n else {\n console.error('ag-Grid: updateRowData() only works with ClientSideRowModel and InfiniteRowModel.');\n }\n // refresh all the full width rows\n this.rowRenderer.refreshFullWidthRows();\n // do change detection for all present cells\n if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {\n this.rowRenderer.refreshCells();\n }\n return res;\n };\n /** @deprecated */\n GridApi.prototype.updateRowData = function (rowDataTransaction) {\n var message = 'ag-Grid: as of v23.1, grid API updateRowData(transaction) is now called applyTransaction(transaction). updateRowData is deprecated and will be removed in a future major release.';\n _.doOnce(function () { return console.warn(message); }, 'updateRowData deprecated');\n return this.applyTransaction(rowDataTransaction);\n };\n GridApi.prototype.applyTransactionAsync = function (rowDataTransaction, callback) {\n if (!this.clientSideRowModel) {\n console.error('ag-Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');\n return;\n }\n this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);\n };\n /** @deprecated */\n GridApi.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var message = 'ag-Grid: as of v23.1, grid API batchUpdateRowData(transaction, callback) is now called applyTransactionAsync(transaction, callback). batchUpdateRowData is deprecated and will be removed in a future major release.';\n _.doOnce(function () { return console.warn(message); }, 'batchUpdateRowData deprecated');\n this.applyTransactionAsync(rowDataTransaction, callback);\n };\n GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {\n console.warn('ag-Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: index, update: null, remove: null });\n };\n GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {\n console.warn('ag-Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');\n var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });\n this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });\n };\n GridApi.prototype.addItems = function (items, skipRefresh) {\n console.warn('ag-Grid: addItems() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: null, update: null, remove: null });\n };\n GridApi.prototype.refreshVirtualPageCache = function () {\n console.warn('ag-Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n GridApi.prototype.refreshInfinitePageCache = function () {\n console.warn('ag-Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n GridApi.prototype.refreshInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.refreshCache();\n }\n else {\n console.warn(\"ag-Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n GridApi.prototype.purgeVirtualPageCache = function () {\n console.warn('ag-Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfinitePageCache();\n };\n GridApi.prototype.purgeInfinitePageCache = function () {\n console.warn('ag-Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfiniteCache();\n };\n GridApi.prototype.purgeInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.purgeCache();\n }\n else {\n console.warn(\"ag-Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n /** @deprecated */\n GridApi.prototype.purgeEnterpriseCache = function (route) {\n console.warn(\"ag-grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.purgeServerSideCache()\");\n this.purgeServerSideCache(route);\n };\n GridApi.prototype.purgeServerSideCache = function (route) {\n if (this.serverSideRowModel) {\n this.serverSideRowModel.purgeCache(route);\n }\n else {\n console.warn(\"ag-Grid: api.purgeServerSideCache is only available when rowModelType='enterprise'.\");\n }\n };\n GridApi.prototype.getVirtualRowCount = function () {\n console.warn('ag-Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');\n return this.getInfiniteRowCount();\n };\n GridApi.prototype.getInfiniteRowCount = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getVirtualRowCount();\n }\n else {\n console.warn(\"ag-Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.isMaxRowFound = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.isMaxRowFound();\n }\n else {\n console.warn(\"ag-Grid: api.isMaxRowFound is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n console.warn('ag-Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');\n this.setInfiniteRowCount(rowCount, maxRowFound);\n };\n GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.setVirtualRowCount(rowCount, maxRowFound);\n }\n else {\n console.warn(\"ag-Grid: api.setVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.getVirtualPageState = function () {\n console.warn('ag-Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n GridApi.prototype.getInfinitePageState = function () {\n console.warn('ag-Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n GridApi.prototype.getCacheBlockState = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getBlockState();\n }\n else if (this.serverSideRowModel) {\n return this.serverSideRowModel.getBlockState();\n }\n else {\n console.warn(\"ag-Grid: api.getCacheBlockState() is only available when rowModelType='infinite' or rowModelType='serverSide'.\");\n }\n };\n GridApi.prototype.checkGridSize = function () {\n this.gridPanel.setHeaderAndFloatingHeights();\n };\n GridApi.prototype.getFirstRenderedRow = function () {\n console.warn('in ag-Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');\n return this.getFirstDisplayedRow();\n };\n GridApi.prototype.getFirstDisplayedRow = function () {\n return this.rowRenderer.getFirstVirtualRenderedRow();\n };\n GridApi.prototype.getLastRenderedRow = function () {\n console.warn('in ag-Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');\n return this.getLastDisplayedRow();\n };\n GridApi.prototype.getLastDisplayedRow = function () {\n return this.rowRenderer.getLastVirtualRenderedRow();\n };\n GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n return this.rowModel.getRow(index);\n };\n GridApi.prototype.getDisplayedRowCount = function () {\n return this.rowModel.getRowCount();\n };\n GridApi.prototype.paginationIsLastPageFound = function () {\n return this.paginationProxy.isLastPageFound();\n };\n GridApi.prototype.paginationGetPageSize = function () {\n return this.paginationProxy.getPageSize();\n };\n GridApi.prototype.paginationSetPageSize = function (size) {\n this.gridOptionsWrapper.setProperty('paginationPageSize', size);\n };\n GridApi.prototype.paginationGetCurrentPage = function () {\n return this.paginationProxy.getCurrentPage();\n };\n GridApi.prototype.paginationGetTotalPages = function () {\n return this.paginationProxy.getTotalPages();\n };\n GridApi.prototype.paginationGetRowCount = function () {\n return this.paginationProxy.getMasterRowCount();\n };\n GridApi.prototype.paginationGoToNextPage = function () {\n this.paginationProxy.goToNextPage();\n };\n GridApi.prototype.paginationGoToPreviousPage = function () {\n this.paginationProxy.goToPreviousPage();\n };\n GridApi.prototype.paginationGoToFirstPage = function () {\n this.paginationProxy.goToFirstPage();\n };\n GridApi.prototype.paginationGoToLastPage = function () {\n this.paginationProxy.goToLastPage();\n };\n GridApi.prototype.paginationGoToPage = function (page) {\n this.paginationProxy.goToPage(page);\n };\n __decorate$Z([\n Optional('immutableService')\n ], GridApi.prototype, \"immutableService\", void 0);\n __decorate$Z([\n Optional('csvCreator')\n ], GridApi.prototype, \"csvCreator\", void 0);\n __decorate$Z([\n Optional('excelCreator')\n ], GridApi.prototype, \"excelCreator\", void 0);\n __decorate$Z([\n Autowired('rowRenderer')\n ], GridApi.prototype, \"rowRenderer\", void 0);\n __decorate$Z([\n Autowired('filterManager')\n ], GridApi.prototype, \"filterManager\", void 0);\n __decorate$Z([\n Autowired('columnController')\n ], GridApi.prototype, \"columnController\", void 0);\n __decorate$Z([\n Autowired('selectionController')\n ], GridApi.prototype, \"selectionController\", void 0);\n __decorate$Z([\n Autowired('gridOptionsWrapper')\n ], GridApi.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$Z([\n Autowired('valueService')\n ], GridApi.prototype, \"valueService\", void 0);\n __decorate$Z([\n Autowired('alignedGridsService')\n ], GridApi.prototype, \"alignedGridsService\", void 0);\n __decorate$Z([\n Autowired('eventService')\n ], GridApi.prototype, \"eventService\", void 0);\n __decorate$Z([\n Autowired('pinnedRowModel')\n ], GridApi.prototype, \"pinnedRowModel\", void 0);\n __decorate$Z([\n Autowired('context')\n ], GridApi.prototype, \"context\", void 0);\n __decorate$Z([\n Autowired('rowModel')\n ], GridApi.prototype, \"rowModel\", void 0);\n __decorate$Z([\n Autowired('sortController')\n ], GridApi.prototype, \"sortController\", void 0);\n __decorate$Z([\n Autowired('paginationProxy')\n ], GridApi.prototype, \"paginationProxy\", void 0);\n __decorate$Z([\n Autowired('focusController')\n ], GridApi.prototype, \"focusController\", void 0);\n __decorate$Z([\n Autowired('dragAndDropService')\n ], GridApi.prototype, \"dragAndDropService\", void 0);\n __decorate$Z([\n Optional('rangeController')\n ], GridApi.prototype, \"rangeController\", void 0);\n __decorate$Z([\n Optional('clipboardService')\n ], GridApi.prototype, \"clipboardService\", void 0);\n __decorate$Z([\n Optional('aggFuncService')\n ], GridApi.prototype, \"aggFuncService\", void 0);\n __decorate$Z([\n Autowired('menuFactory')\n ], GridApi.prototype, \"menuFactory\", void 0);\n __decorate$Z([\n Optional('contextMenuFactory')\n ], GridApi.prototype, \"contextMenuFactory\", void 0);\n __decorate$Z([\n Autowired('cellRendererFactory')\n ], GridApi.prototype, \"cellRendererFactory\", void 0);\n __decorate$Z([\n Autowired('valueCache')\n ], GridApi.prototype, \"valueCache\", void 0);\n __decorate$Z([\n Autowired('animationFrameService')\n ], GridApi.prototype, \"animationFrameService\", void 0);\n __decorate$Z([\n Optional('statusBarService')\n ], GridApi.prototype, \"statusBarService\", void 0);\n __decorate$Z([\n Optional('chartService')\n ], GridApi.prototype, \"chartService\", void 0);\n __decorate$Z([\n Optional('undoRedoService')\n ], GridApi.prototype, \"undoRedoService\", void 0);\n __decorate$Z([\n PostConstruct\n ], GridApi.prototype, \"init\", null);\n GridApi = __decorate$Z([\n Bean('gridApi')\n ], GridApi);\n return GridApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$6 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ExpressionService = /** @class */ (function () {\n function ExpressionService() {\n this.expressionToFunctionCache = {};\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n if (typeof expressionOrFunc === 'function') {\n // valueGetter is a function, so just call it\n var func = expressionOrFunc;\n return func(params);\n }\n else if (typeof expressionOrFunc === 'string') {\n // valueGetter is an expression, so execute the expression\n var expression = expressionOrFunc;\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('ag-Grid: value should be either a string or a function', expressionOrFunc);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n // tslint:disable-next-line\n console.log('Processing of the expression failed');\n // tslint:disable-next-line\n console.log('Expression = ' + expression);\n // tslint:disable-next-line\n console.log('Params =', params);\n // tslint:disable-next-line\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate$_([\n __param$6(0, Qualifier('loggerFactory'))\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate$_([\n Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TemplateService = /** @class */ (function () {\n function TemplateService() {\n this.templateCache = {};\n this.waitingCallbacks = {};\n }\n // returns the template if it is loaded, or null if it is not loaded\n // but will call the callback when it is loaded\n TemplateService.prototype.getTemplate = function (url, callback) {\n var templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n var callbackList = this.waitingCallbacks[url];\n var that = this;\n if (!callbackList) {\n // first time this was called, so need a new list for callbacks\n callbackList = [];\n this.waitingCallbacks[url] = callbackList;\n // and also need to do the http request\n var client = new XMLHttpRequest();\n client.onload = function () {\n that.handleHttpResult(this, url);\n };\n client.open(\"GET\", url);\n client.send();\n }\n // add this callback\n if (callback) {\n callbackList.push(callback);\n }\n // caller needs to wait for template to load, so return null\n return null;\n };\n TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n if (httpResult.status !== 200 || httpResult.response === null) {\n console.warn(\"Unable to get template error \" + httpResult.status + \" - \" + url);\n return;\n }\n // response success, so process it\n // in IE9 the response is in - responseText\n this.templateCache[url] = httpResult.response || httpResult.responseText;\n // inform all listeners that this is now in the cache\n var callbacks = this.waitingCallbacks[url];\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n // we could pass the callback the response, however we know the client of this code\n // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n // which doesn't take any parameters.\n callback();\n }\n if (this.$scope) {\n var that_1 = this;\n window.setTimeout(function () {\n that_1.$scope.$apply();\n }, 0);\n }\n };\n __decorate$$([\n Autowired('$scope')\n ], TemplateService.prototype, \"$scope\", void 0);\n TemplateService = __decorate$$([\n Bean('templateService')\n ], TemplateService);\n return TemplateService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PopupService = /** @class */ (function () {\n function PopupService() {\n this.popupList = [];\n this.events = [];\n }\n PopupService.prototype.init = function () {\n var _this = this;\n this.events = [\n this.eventService.addEventListener(Events.EVENT_KEYBOARD_FOCUS, function () {\n _this.popupList.forEach(function (popup) {\n _.addCssClass(popup.element, 'ag-keyboard-focus');\n });\n }),\n this.eventService.addEventListener(Events.EVENT_MOUSE_FOCUS, function () {\n _this.popupList.forEach(function (popup) {\n _.removeCssClass(popup.element, 'ag-keyboard-focus');\n });\n })\n ];\n };\n PopupService.prototype.destroy = function () {\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n this.events = [];\n }\n };\n PopupService.prototype.registerGridCore = function (gridCore) {\n this.gridCore = gridCore;\n };\n PopupService.prototype.getPopupParent = function () {\n var ePopupParent = this.gridOptionsWrapper.getPopupParent();\n if (ePopupParent) {\n return ePopupParent;\n }\n return this.gridCore.getRootGui();\n };\n PopupService.prototype.positionPopupForMenu = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var parentRect = this.getParentRect();\n var y = this.keepYWithinBounds(params, sourceRect.top - parentRect.top);\n var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = minWidth + \"px\";\n var widthOfParent = parentRect.right - parentRect.left;\n var maxX = widthOfParent - minWidth;\n // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n // we try place it first to the left, and then if not to the right.\n var x;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, try left first\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n }\n if (x > maxX) {\n x = 0;\n }\n }\n else {\n // for LTR, try right first\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n }\n if (x < 0) {\n x = 0;\n }\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;\n var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY;\n this.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n nudgeX: nudgeX,\n nudgeY: nudgeY,\n keepWithinBounds: true\n });\n this.callPostProcessPopup(params.ePopup, null, params.mouseEvent, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.calculatePointerAlign = function (e) {\n var parentRect = this.getParentRect();\n return {\n x: e.clientX - parentRect.left,\n y: e.clientY - parentRect.top\n };\n };\n PopupService.prototype.positionPopupUnderComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var alignSide = params.alignSide || 'left';\n var parentRect = this.getParentRect();\n var x = sourceRect.left - parentRect.left;\n if (alignSide === 'right') {\n x -= (params.ePopup.offsetWidth - sourceRect.width);\n }\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n minHeight: params.minHeight,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: x,\n y: sourceRect.top - parentRect.top + sourceRect.height,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.positionPopupOverComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var parentRect = this.getParentRect();\n this.positionPopup({\n ePopup: params.ePopup,\n minWidth: params.minWidth,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.ePopup, params.eventSource, null, params.type, params.column, params.rowNode);\n };\n PopupService.prototype.callPostProcessPopup = function (ePopup, eventSource, mouseEvent, type, column, rowNode) {\n var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();\n if (callback) {\n var params = {\n column: column,\n rowNode: rowNode,\n ePopup: ePopup,\n type: type,\n eventSource: eventSource,\n mouseEvent: mouseEvent\n };\n callback(params);\n }\n };\n PopupService.prototype.positionPopup = function (params) {\n var x = params.x;\n var y = params.y;\n if (params.nudgeX) {\n x += params.nudgeX;\n }\n if (params.nudgeY) {\n y += params.nudgeY;\n }\n // if popup is overflowing to the bottom, move it up\n if (params.keepWithinBounds) {\n x = this.keepXWithinBounds(params, x);\n y = this.keepYWithinBounds(params, y);\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n };\n PopupService.prototype.getParentRect = function () {\n // subtract the popup parent borders, because popupParent.getBoundingClientRect\n // returns the rect outside the borders, but the 0,0 coordinate for absolute\n // positioning is inside the border, leading the popup to be off by the width\n // of the border\n var popupParent = this.getPopupParent();\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (popupParent === eDocument.body) {\n popupParent = eDocument.documentElement;\n }\n var style = getComputedStyle(popupParent);\n var bounds = popupParent.getBoundingClientRect();\n return {\n top: bounds.top + parseFloat(style.borderTopWidth) || 0,\n left: bounds.left + parseFloat(style.borderLeftWidth) || 0,\n right: bounds.right + parseFloat(style.borderRightWidth) || 0,\n bottom: bounds.bottom + parseFloat(style.borderBottomWidth) || 0,\n };\n };\n PopupService.prototype.keepYWithinBounds = function (params, y) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var minHeight = Math.min(200, parentRect.height);\n var diff = 0;\n if (params.minHeight && params.minHeight < minHeight) {\n minHeight = params.minHeight;\n }\n else if (params.ePopup.offsetHeight > 0) {\n minHeight = params.ePopup.clientHeight;\n diff = _.getAbsoluteHeight(params.ePopup) - minHeight;\n }\n var heightOfParent = isBody ? (_.getAbsoluteHeight(docElement) + docElement.scrollTop) : parentRect.height;\n if (isBody) {\n heightOfParent -= Math.abs(documentRect.top - parentRect.top);\n }\n var maxY = heightOfParent - minHeight - diff;\n return Math.min(Math.max(y, 0), Math.abs(maxY));\n };\n PopupService.prototype.keepXWithinBounds = function (params, x) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var ePopup = params.ePopup;\n var minWidth = Math.min(200, parentRect.width);\n var diff = 0;\n if (params.minWidth && params.minWidth < minWidth) {\n minWidth = params.minWidth;\n }\n else if (ePopup.offsetWidth > 0) {\n minWidth = ePopup.offsetWidth;\n ePopup.style.minWidth = minWidth + \"px\";\n diff = _.getAbsoluteWidth(ePopup) - minWidth;\n }\n var widthOfParent = isBody ? (_.getAbsoluteWidth(docElement) + docElement.scrollLeft) : parentRect.width;\n if (isBody) {\n widthOfParent -= Math.abs(documentRect.left - parentRect.left);\n }\n var maxX = widthOfParent - minWidth - diff;\n return Math.min(Math.max(x, 0), Math.abs(maxX));\n };\n // adds an element to a div, but also listens to background checking for clicks,\n // so that when the background is clicked, the child is removed again, giving\n // a model look to popups.\n PopupService.prototype.addAsModalPopup = function (eChild, closeOnEsc, closedCallback, click) {\n return this.addPopup(true, eChild, closeOnEsc, closedCallback, click);\n };\n PopupService.prototype.addPopup = function (modal, eChild, closeOnEsc, closedCallback, click, alwaysOnTop) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var processedAt = new Date().getTime();\n if (!eDocument) {\n console.warn('ag-grid: could not find the document, document is empty');\n return function () { };\n }\n var pos = _.findIndex(this.popupList, function (popup) { return popup.element === eChild; });\n if (pos !== -1) {\n var popup = this.popupList[pos];\n return popup.hideFunc;\n }\n var ePopupParent = this.getPopupParent();\n // for angular specifically, but shouldn't cause an issue with js or other fw's\n // https://github.com/angular/angular/issues/8563\n ePopupParent.appendChild(eChild);\n eChild.style.top = '0px';\n eChild.style.left = '0px';\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n var eWrapper = document.createElement('div');\n var theme = this.environment.getTheme().theme;\n if (theme) {\n _.addCssClass(eWrapper, theme);\n }\n _.addCssClass(eWrapper, 'ag-popup');\n _.addCssClass(eChild, this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr');\n _.addCssClass(eChild, 'ag-popup-child');\n eWrapper.appendChild(eChild);\n ePopupParent.appendChild(eWrapper);\n if (alwaysOnTop) {\n this.setAlwaysOnTop(eWrapper, true);\n }\n else {\n this.bringPopupToFront(eWrapper);\n }\n var popupHidden = false;\n var hidePopupOnKeyboardEvent = function (event) {\n var key = event.which || event.keyCode;\n if (key === Constants.KEY_ESCAPE && eWrapper.contains(document.activeElement)) {\n hidePopup(null);\n }\n };\n var hidePopupOnMouseEvent = function (event) {\n hidePopup(event);\n };\n var hidePopupOnTouchEvent = function (event) {\n hidePopup(null, event);\n };\n var hidePopup = function (mouseEvent, touchEvent) {\n if (\n // we don't hide popup if the event was on the child, or any\n // children of this child\n _this.isEventFromCurrentPopup(mouseEvent, touchEvent, eChild) ||\n // if the event to close is actually the open event, then ignore it\n _this.isEventSameChainAsOriginalEvent(click, mouseEvent, touchEvent) ||\n // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n popupHidden) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(eWrapper);\n eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);\n eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n _this.eventService.removeEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback();\n }\n _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });\n };\n // if we add these listeners now, then the current mouse\n // click will be included, which we don't want\n window.setTimeout(function () {\n if (closeOnEsc) {\n eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);\n _this.eventService.addEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n }\n }, 0);\n this.popupList.push({\n element: eChild,\n hideFunc: hidePopup\n });\n return hidePopup;\n };\n PopupService.prototype.isEventFromCurrentPopup = function (mouseEvent, touchEvent, eChild) {\n var event = mouseEvent ? mouseEvent : touchEvent;\n if (!event) {\n return false;\n }\n var indexOfThisChild = _.findIndex(this.popupList, function (popup) { return popup.element === eChild; });\n if (indexOfThisChild === -1) {\n return false;\n }\n for (var i = indexOfThisChild; i < this.popupList.length; i++) {\n var popup = this.popupList[i];\n if (_.isElementInEventPath(popup.element, event)) {\n return true;\n }\n }\n // if the user did not write their own Custom Element to be rendered as popup\n // and this component has additional popup element, they should have the\n // `ag-custom-component-popup` class to be detected as part of the Custom Component\n var el = event.target;\n while (el && el != document.body) {\n if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n };\n // in some browsers, the context menu event can be fired before the click event, which means\n // the context menu event could open the popup, but then the click event closes it straight away.\n PopupService.prototype.isEventSameChainAsOriginalEvent = function (originalClick, mouseEvent, touchEvent) {\n // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n // twice on the same location isn't a normal path).\n // event could be mouse event or touch event.\n var mouseEventOrTouch = null;\n if (mouseEvent) {\n // mouse event can be used direction, it has coordinates\n mouseEventOrTouch = mouseEvent;\n }\n else if (touchEvent) {\n // touch event doesn't have coordinates, need it's touch object\n mouseEventOrTouch = touchEvent.touches[0];\n }\n if (mouseEventOrTouch && originalClick) {\n // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n // by browser click (when you finger up, touch is interrupted as click in browser)\n var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n var xMatch = Math.abs(originalClick.screenX - screenX_1) < 5;\n var yMatch = Math.abs(originalClick.screenY - screenY_1) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n };\n PopupService.prototype.getWrapper = function (ePopup) {\n while (!_.containsClass(ePopup, 'ag-popup') && ePopup.parentElement) {\n ePopup = ePopup.parentElement;\n }\n return _.containsClass(ePopup, 'ag-popup') ? ePopup : null;\n };\n PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper) {\n return;\n }\n _.addOrRemoveCssClass(eWrapper, 'ag-always-on-top', !!alwaysOnTop);\n if (alwaysOnTop) {\n this.bringPopupToFront(eWrapper);\n }\n };\n PopupService.prototype.bringPopupToFront = function (ePopup) {\n var parent = this.getPopupParent();\n var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));\n var popupLen = popupList.length;\n var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));\n var onTopLength = alwaysOnTopList.length;\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n return;\n }\n var pos = popupList.indexOf(eWrapper);\n if (onTopLength) {\n var isPopupAlwaysOnTop = _.containsClass(eWrapper, 'ag-always-on-top');\n if (isPopupAlwaysOnTop) {\n if (pos !== popupLen - 1) {\n _.last(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);\n }\n }\n else if (pos !== popupLen - onTopLength - 1) {\n alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);\n }\n }\n else if (pos !== popupLen - 1) {\n _.last(popupList).insertAdjacentElement('afterend', eWrapper);\n }\n var params = {\n type: 'popupToFront',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n eWrapper: eWrapper\n };\n this.eventService.dispatchEvent(params);\n };\n __decorate$10([\n Autowired('gridOptionsWrapper')\n ], PopupService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$10([\n Autowired('environment')\n ], PopupService.prototype, \"environment\", void 0);\n __decorate$10([\n Autowired('eventService')\n ], PopupService.prototype, \"eventService\", void 0);\n __decorate$10([\n PostConstruct\n ], PopupService.prototype, \"init\", null);\n __decorate$10([\n PreDestroy\n ], PopupService.prototype, \"destroy\", null);\n PopupService = __decorate$10([\n Bean('popupService')\n ], PopupService);\n return PopupService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$7 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar LoggerFactory = /** @class */ (function () {\n function LoggerFactory() {\n }\n LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {\n this.logging = gridOptionsWrapper.isDebug();\n };\n LoggerFactory.prototype.create = function (name) {\n return new Logger(name, this.isLogging.bind(this));\n };\n LoggerFactory.prototype.isLogging = function () {\n return this.logging;\n };\n __decorate$11([\n __param$7(0, Qualifier('gridOptionsWrapper'))\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate$11([\n Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}());\nvar Logger = /** @class */ (function () {\n function Logger(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n Logger.prototype.isLogging = function () {\n return this.isLoggingFunc();\n };\n Logger.prototype.log = function (message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('ag-Grid.' + this.name + ': ' + message);\n }\n };\n return Logger;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AutoWidthCalculator = /** @class */ (function () {\n function AutoWidthCalculator() {\n }\n AutoWidthCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoWidthCalculator.prototype.registerHeaderRootComp = function (headerRootComp) {\n this.headerRootComp = headerRootComp;\n };\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column, skipHeader) {\n var eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n var eDummyContainer = document.createElement('span');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(eDummyContainer);\n // get all the cells that are currently displayed (this only brings back\n // rendered cells, rows not rendered due to row visualisation will not be here)\n this.putRowCellsIntoDummyContainer(column, eDummyContainer);\n if (!skipHeader) {\n // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n // will be enough. if we consider groups, then it gets too complicated for what it's worth,\n // as the groups can span columns and this class only considers one column at a time.\n this.cloneItemIntoDummy(eHeaderCell, eDummyContainer);\n }\n // at this point, all the clones are lined up vertically with natural widths. the dummy\n // container will have a width wide enough just to fit the largest.\n var dummyContainerWidth = eDummyContainer.offsetWidth;\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(eDummyContainer);\n // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n // user can configure the grid to add a few more pixels after the calculated width\n var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n };\n AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n var comp = null;\n // find the rendered header cell\n this.headerRootComp.forEachHeaderElement(function (headerElement) {\n if (headerElement instanceof HeaderWrapperComp) {\n var headerWrapperComp = headerElement;\n if (headerWrapperComp.getColumn() === column) {\n comp = headerWrapperComp;\n }\n }\n });\n return comp ? comp.getGui() : null;\n };\n AutoWidthCalculator.prototype.putRowCellsIntoDummyContainer = function (column, eDummyContainer) {\n var _this = this;\n var eCells = this.rowRenderer.getAllCellsForColumn(column);\n eCells.forEach(function (eCell) { return _this.cloneItemIntoDummy(eCell, eDummyContainer); });\n };\n AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n // make a deep clone of the cell\n var eCellClone = eCell.cloneNode(true);\n // the original has a fixed width, we remove this to allow the natural width based on content\n eCellClone.style.width = '';\n // the original has position = absolute, we need to remove this so it's positioned normally\n eCellClone.style.position = 'static';\n eCellClone.style.left = '';\n // we put the cell into a containing div, as otherwise the cells would just line up\n // on the same line, standard flow layout, by putting them into divs, they are laid\n // out one per line\n var eCloneParent = document.createElement('div');\n if (_.containsClass(eCellClone, 'ag-header-cell')) {\n _.addCssClass(eCloneParent, 'ag-header');\n _.addCssClass(eCloneParent, 'ag-header-row');\n eCloneParent.style.position = 'static';\n }\n // table-row, so that each cell is on a row. i also tried display='block', but this\n // didn't work in IE\n eCloneParent.style.display = 'table-row';\n // the twig on the branch, the branch on the tree, the tree in the hole,\n // the hole in the bog, the bog in the clone, the clone in the parent,\n // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n };\n __decorate$12([\n Autowired('rowRenderer')\n ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n __decorate$12([\n Autowired('gridOptionsWrapper')\n ], AutoWidthCalculator.prototype, \"gridOptionsWrapper\", void 0);\n AutoWidthCalculator = __decorate$12([\n Bean('autoWidthCalculator')\n ], AutoWidthCalculator);\n return AutoWidthCalculator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HorizontalResizeService = /** @class */ (function () {\n function HorizontalResizeService() {\n }\n HorizontalResizeService.prototype.addResizeBar = function (params) {\n var _this = this;\n var dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params)\n };\n this.dragService.addDragSource(dragSource, true);\n // we pass remove func back to the caller, so call can tell us when they\n // are finished, and then we remove the listener from the drag source\n var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n return finishedWithResizeFunc;\n };\n HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n this.draggingStarted = true;\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n var shiftKey = mouseEvent instanceof MouseEvent ? mouseEvent.shiftKey === true : false;\n params.onResizeStart(shiftKey);\n };\n HorizontalResizeService.prototype.setResizeIcons = function () {\n this.oldBodyCursor = this.eGridDiv.style.cursor;\n this.oldMsUserSelect = this.eGridDiv.style.msUserSelect;\n this.oldWebkitUserSelect = this.eGridDiv.style.webkitUserSelect;\n // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n this.eGridDiv.style.cursor = 'ew-resize';\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.msUserSelect = 'none';\n this.eGridDiv.style.webkitUserSelect = 'none';\n };\n HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n };\n HorizontalResizeService.prototype.resetIcons = function () {\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n this.eGridDiv.style.cursor = this.oldBodyCursor;\n this.eGridDiv.style.msUserSelect = this.oldMsUserSelect;\n this.eGridDiv.style.webkitUserSelect = this.oldWebkitUserSelect;\n };\n HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n };\n __decorate$13([\n Autowired('gridOptionsWrapper')\n ], HorizontalResizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$13([\n Autowired('dragService')\n ], HorizontalResizeService.prototype, \"dragService\", void 0);\n __decorate$13([\n Autowired('eGridDiv')\n ], HorizontalResizeService.prototype, \"eGridDiv\", void 0);\n HorizontalResizeService = __decorate$13([\n Bean('horizontalResizeService')\n ], HorizontalResizeService);\n return HorizontalResizeService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$O = (undefined && undefined.__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})();\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridCore = /** @class */ (function (_super) {\n __extends$O(GridCore, _super);\n function GridCore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridCore.prototype.init = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('GridCore');\n var template = this.createTemplate();\n this.setTemplate(template);\n // register with services that need grid core\n [\n this.gridApi,\n this.rowRenderer,\n this.popupService\n ].forEach(function (service) { return service.registerGridCore(_this); });\n if (ModuleRegistry.isRegistered(exports.ModuleNames.ClipboardModule)) {\n this.clipboardService.registerGridCore(this);\n }\n this.gridOptionsWrapper.addLayoutElement(this.getGui());\n this.eGridDiv.appendChild(this.getGui());\n this.addDestroyFunc(function () {\n _this.eGridDiv.removeChild(_this.getGui());\n });\n // if using angular, watch for quickFilter changes\n if (this.$scope) {\n var quickFilterUnregisterFn = this.$scope.$watch(this.quickFilterOnScope, function (newFilter) { return _this.filterManager.setQuickFilter(newFilter); });\n this.addDestroyFunc(quickFilterUnregisterFn);\n }\n // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,\n // which doLayout indirectly depends on\n this.addRtlSupport();\n this.logger.log('ready');\n this.gridOptionsWrapper.addLayoutElement(this.eRootWrapperBody);\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n var eGui = this.getGui();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_KEYBOARD_FOCUS, function () {\n _.addCssClass(eGui, 'ag-keyboard-focus');\n });\n this.addDestroyableEventListener(this.eventService, Events.EVENT_MOUSE_FOCUS, function () {\n _.removeCssClass(eGui, 'ag-keyboard-focus');\n });\n };\n GridCore.prototype.createTemplate = function () {\n var sideBarModuleLoaded = ModuleRegistry.isRegistered(exports.ModuleNames.SideBarModule);\n var statusBarModuleLoaded = ModuleRegistry.isRegistered(exports.ModuleNames.StatusBarModule);\n var rowGroupingLoaded = ModuleRegistry.isRegistered(exports.ModuleNames.RowGroupingModule);\n var enterpriseCoreLoaded = ModuleRegistry.isRegistered(exports.ModuleNames.EnterpriseCoreModule);\n var dropZones = rowGroupingLoaded ? '' : '';\n var sideBar = sideBarModuleLoaded ? '' : '';\n var statusBar = statusBarModuleLoaded ? '' : '';\n var watermark = enterpriseCoreLoaded ? '' : '';\n var template = \"
\\n \" + dropZones + \"\\n
\\n \\n \" + sideBar + \"\\n
\\n \" + statusBar + \"\\n \\n \" + watermark + \"\\n
\";\n return template;\n };\n GridCore.prototype.onGridSizeChanged = function () {\n var event = {\n type: Events.EVENT_GRID_SIZE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n clientWidth: this.eGridDiv.clientWidth,\n clientHeight: this.eGridDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n };\n GridCore.prototype.addRtlSupport = function () {\n var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';\n _.addCssClass(this.getGui(), cssClass);\n };\n GridCore.prototype.getRootGui = function () {\n return this.getGui();\n };\n GridCore.prototype.isSideBarVisible = function () {\n if (!this.sideBarComp) {\n return false;\n }\n return this.sideBarComp.isDisplayed();\n };\n GridCore.prototype.setSideBarVisible = function (show) {\n if (!this.sideBarComp) {\n if (show) {\n console.warn('ag-Grid: sideBar is not loaded');\n }\n return;\n }\n this.sideBarComp.setDisplayed(show);\n };\n GridCore.prototype.setSideBarPosition = function (position) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: sideBar is not loaded');\n return;\n }\n this.sideBarComp.setSideBarPosition(position);\n };\n GridCore.prototype.closeToolPanel = function () {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.close();\n };\n GridCore.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridCore.prototype.getToolPanelInstance = function (key) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n return this.sideBarComp.getToolPanelInstance(key);\n };\n GridCore.prototype.refreshSideBar = function () {\n if (this.sideBarComp) {\n this.sideBarComp.refresh();\n }\n };\n GridCore.prototype.setSideBar = function (def) {\n if (!this.sideBarComp) {\n return;\n }\n this.eRootWrapperBody.removeChild(this.sideBarComp.getGui());\n this.gridOptions.sideBar = SideBarDefParser.parse(def);\n this.sideBarComp.reset();\n this.eRootWrapperBody.appendChild(this.sideBarComp.getGui());\n };\n GridCore.prototype.getOpenedToolPanel = function () {\n if (!this.sideBarComp) {\n return null;\n }\n return this.sideBarComp.openedItem();\n };\n GridCore.prototype.openToolPanel = function (key) {\n if (!this.sideBarComp) {\n console.warn('ag-Grid: toolPanel is only available in ag-Grid Enterprise');\n return;\n }\n this.sideBarComp.openToolPanel(key);\n };\n GridCore.prototype.isToolPanelShowing = function () {\n return this.sideBarComp.isToolPanelShowing();\n };\n GridCore.prototype.destroy = function () {\n this.logger.log('Grid DOM removed');\n _super.prototype.destroy.call(this);\n };\n // Valid values for position are bottom, middle and top\n GridCore.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = null; }\n if (this.doingVirtualPaging) {\n throw new Error('Cannot use ensureNodeVisible when doing virtual paging, as we cannot check rows that are not in memory');\n }\n // look for the node index we want to display\n var rowCount = this.rowModel.getRowCount();\n var comparatorIsAFunction = typeof comparator === 'function';\n var indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (var i = 0; i < rowCount; i++) {\n var node = this.rowModel.getRow(i);\n if (comparatorIsAFunction) {\n if (comparator(node)) {\n indexToSelect = i;\n break;\n }\n }\n else {\n // check object equality against node and data\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.gridPanel.ensureIndexVisible(indexToSelect, position);\n }\n };\n __decorate$14([\n Autowired('gridOptions')\n ], GridCore.prototype, \"gridOptions\", void 0);\n __decorate$14([\n Autowired('gridOptionsWrapper')\n ], GridCore.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$14([\n Autowired('rowModel')\n ], GridCore.prototype, \"rowModel\", void 0);\n __decorate$14([\n Autowired('resizeObserverService')\n ], GridCore.prototype, \"resizeObserverService\", void 0);\n __decorate$14([\n Autowired('columnController')\n ], GridCore.prototype, \"columnController\", void 0);\n __decorate$14([\n Autowired('rowRenderer')\n ], GridCore.prototype, \"rowRenderer\", void 0);\n __decorate$14([\n Autowired('filterManager')\n ], GridCore.prototype, \"filterManager\", void 0);\n __decorate$14([\n Autowired('eventService')\n ], GridCore.prototype, \"eventService\", void 0);\n __decorate$14([\n Autowired('eGridDiv')\n ], GridCore.prototype, \"eGridDiv\", void 0);\n __decorate$14([\n Autowired('$scope')\n ], GridCore.prototype, \"$scope\", void 0);\n __decorate$14([\n Autowired('quickFilterOnScope')\n ], GridCore.prototype, \"quickFilterOnScope\", void 0);\n __decorate$14([\n Autowired('popupService')\n ], GridCore.prototype, \"popupService\", void 0);\n __decorate$14([\n Autowired('focusController')\n ], GridCore.prototype, \"focusController\", void 0);\n __decorate$14([\n Autowired('loggerFactory')\n ], GridCore.prototype, \"loggerFactory\", void 0);\n __decorate$14([\n Autowired('columnApi')\n ], GridCore.prototype, \"columnApi\", void 0);\n __decorate$14([\n Autowired('gridApi')\n ], GridCore.prototype, \"gridApi\", void 0);\n __decorate$14([\n Autowired('environment')\n ], GridCore.prototype, \"environment\", void 0);\n __decorate$14([\n Optional('clipboardService')\n ], GridCore.prototype, \"clipboardService\", void 0);\n __decorate$14([\n RefSelector('gridPanel')\n ], GridCore.prototype, \"gridPanel\", void 0);\n __decorate$14([\n RefSelector('sideBar')\n ], GridCore.prototype, \"sideBarComp\", void 0);\n __decorate$14([\n RefSelector('rootWrapperBody')\n ], GridCore.prototype, \"eRootWrapperBody\", void 0);\n __decorate$14([\n PostConstruct\n ], GridCore.prototype, \"init\", null);\n return GridCore;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StandardMenuFactory = /** @class */ (function () {\n function StandardMenuFactory() {\n }\n StandardMenuFactory.prototype.hideActiveMenu = function () {\n if (this.hidePopup) {\n this.hidePopup();\n }\n };\n StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenu\n });\n });\n };\n StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderComponent({\n type: 'columnMenu',\n eventSource: eventSource,\n ePopup: eMenu,\n keepWithinBounds: true,\n column: column\n });\n });\n };\n StandardMenuFactory.prototype.showPopup = function (column, positionCallback) {\n var _this = this;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n var eMenu = document.createElement('div');\n _.addCssClass(eMenu, 'ag-menu');\n filterWrapper.guiPromise.then(function (gui) { return eMenu.appendChild(gui); });\n var hidePopup;\n var bodyScrollListener = function (event) {\n // if h scroll, popup is no longer over the column\n if (event.direction === 'horizontal') {\n hidePopup();\n }\n };\n this.eventService.addEventListener('bodyScroll', bodyScrollListener);\n var closedCallback = function () {\n _this.eventService.removeEventListener('bodyScroll', bodyScrollListener);\n column.setMenuVisible(false, 'contextMenu');\n };\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n hidePopup = this.popupService.addAsModalPopup(eMenu, true, closedCallback);\n positionCallback(eMenu);\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.afterGuiAttached) {\n var params = {\n hidePopup: hidePopup\n };\n filter.afterGuiAttached(params);\n }\n });\n this.hidePopup = hidePopup;\n column.setMenuVisible(true, 'contextMenu');\n };\n StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n // for standard, we show menu if filter is enabled, and the menu is not suppressed\n return column.isFilterAllowed();\n };\n __decorate$15([\n Autowired('eventService')\n ], StandardMenuFactory.prototype, \"eventService\", void 0);\n __decorate$15([\n Autowired('filterManager')\n ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n __decorate$15([\n Autowired('popupService')\n ], StandardMenuFactory.prototype, \"popupService\", void 0);\n StandardMenuFactory = __decorate$15([\n Bean('menuFactory')\n ], StandardMenuFactory);\n return StandardMenuFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** Adds drag listening onto an element. In ag-Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function () {\n function DragService() {\n this.dragEndFunctions = [];\n this.dragSources = [];\n }\n DragService.prototype.init = function () {\n this.logger = this.loggerFactory.create('DragService');\n };\n DragService.prototype.destroy = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = _.find(this.dragSources, function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n _.removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.setNoSelectToBody = function (noSelect) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var eBody = eDocument.querySelector('body');\n if (_.exists(eBody)) {\n // when we drag the mouse in ag-Grid, this class gets added / removed from the body, so that\n // the mouse isn't selecting text when dragging.\n _.addOrRemoveCssClass(eBody, 'ag-unselectable', noSelect);\n }\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n if (includeTouch && !suppressTouch) {\n touchListener = this.onTouchStart.bind(this, params);\n params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n if (touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n var touchMoveEvent = function (e) { return _this.onTouchMove(e, params.eElement); };\n var touchEndEvent = function (e) { return _this.onTouchUp(e, params.eElement); };\n var target = params.eElement;\n var events = [\n { target: target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },\n { target: target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },\n { target: target, type: 'touchcancel', listener: touchEndEvent, options: { passive: true } }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart, params.eElement);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n var e = mouseEvent;\n if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {\n return;\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (e._alreadyProcessedByDragService) {\n return;\n }\n e._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n var eDocument = this.gridOptionsWrapper.getDocument();\n this.setNoSelectToBody(true);\n var mouseMoveEvent = function (e, el) { return _this.onMouseMove(e, params.eElement); };\n var mouseUpEvent = function (e, el) { return _this.onMouseUp(e, params.eElement); };\n var contextEvent = function (e) { return e.preventDefault(); };\n var target = eDocument;\n var events = [\n { target: target, type: 'mousemove', listener: mouseMoveEvent },\n { target: target, type: 'mouseup', listener: mouseUpEvent },\n { target: target, type: 'contextmenu', listener: contextEvent }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent, params.eElement);\n }\n };\n DragService.prototype.addTemporaryEvents = function (events) {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.addEventListener(type, listener, options);\n });\n this.dragEndFunctions.push(function () {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.removeEventListener(type, listener, options);\n });\n });\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = _.exists(dragStartPixels) ? dragStartPixels : 4;\n return _.areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent, el) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: Events.EVENT_DRAG_STARTED,\n api: this.gridApi,\n columnApi: this.columnApi,\n target: el\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n // if we don't preview default, then the browser will try and do it's own touch stuff,\n // like do 'back button' (chrome does this) or scroll the page (eg drag column could be confused\n // with scroll page in the app)\n // touchEvent.preventDefault();\n this.onCommonMove(touch, this.touchStart, el);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent, el) {\n this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n };\n DragService.prototype.onTouchUp = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch, el);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent, el) {\n this.onUpCommon(mouseEvent, el);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch, el) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: Events.EVENT_DRAG_STOPPED,\n api: this.gridApi,\n columnApi: this.columnApi,\n target: el\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.setNoSelectToBody(false);\n this.mouseStartEvent = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate$16([\n Autowired('loggerFactory')\n ], DragService.prototype, \"loggerFactory\", void 0);\n __decorate$16([\n Autowired('eventService')\n ], DragService.prototype, \"eventService\", void 0);\n __decorate$16([\n Autowired('gridOptionsWrapper')\n ], DragService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$16([\n Autowired('columnApi')\n ], DragService.prototype, \"columnApi\", void 0);\n __decorate$16([\n Autowired('gridApi')\n ], DragService.prototype, \"gridApi\", void 0);\n __decorate$16([\n PostConstruct\n ], DragService.prototype, \"init\", null);\n __decorate$16([\n PreDestroy\n ], DragService.prototype, \"destroy\", null);\n DragService = __decorate$16([\n Bean('dragService')\n ], DragService);\n return DragService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortController = /** @class */ (function () {\n function SortController() {\n var _this = this;\n // used by the public api, for saving the sort model\n this.getSortModel = function () {\n return _this.getColumnsWithSortingOrdered().map(function (column) { return ({\n colId: column.getColId(),\n sort: column.getSort()\n }); });\n };\n }\n SortController_1 = SortController;\n SortController.prototype.progressSort = function (column, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n var nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n };\n SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== Constants.SORT_ASC && sort !== Constants.SORT_DESC) {\n sort = null;\n }\n // update sort on current col\n column.setSort(sort, source);\n // sortedAt used for knowing order of cols when multi-col sort\n if (column.getSort()) {\n var sortedAt = Number(new Date().valueOf());\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSortedAt(null);\n }\n var doingMultiSort = multiSort && !this.gridOptionsWrapper.isSuppressMultiSort();\n // clear sort on all columns except this one, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarThisColumn(column, source);\n }\n this.dispatchSortChangedEvents();\n };\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n SortController.prototype.onSortChanged = function () {\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.dispatchSortChangedEvents = function () {\n var event = {\n type: Events.EVENT_SORT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SortController.prototype.clearSortBarThisColumn = function (columnToSkip, source) {\n this.columnController.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n // Do not clear if either holding shift, or if column in question was clicked\n if (!(columnToClear === columnToSkip)) {\n // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n columnToClear.setSort(undefined, source);\n }\n });\n };\n SortController.prototype.getNextSortDirection = function (column) {\n var sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsWrapper.getSortingOrder()) {\n sortingOrder = this.gridOptionsWrapper.getSortingOrder();\n }\n else {\n sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n }\n if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n console.warn(\"ag-grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n return null;\n }\n var currentIndex = sortingOrder.indexOf(column.getSort());\n var notInArray = currentIndex < 0;\n var lastItemInArray = currentIndex == sortingOrder.length - 1;\n var result;\n if (notInArray || lastItemInArray) {\n result = sortingOrder[0];\n }\n else {\n result = sortingOrder[currentIndex + 1];\n }\n // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n console.warn('ag-grid: invalid sort type ' + result);\n return null;\n }\n return result;\n };\n SortController.prototype.setSortModel = function (sortModel, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n // first up, clear any previous sort\n var sortModelProvided = sortModel && sortModel.length > 0;\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n allColumnsIncludingAuto.forEach(function (column) {\n var sortForCol = null;\n var sortedAt = -1;\n if (sortModelProvided && column.getColDef().sortable) {\n for (var j = 0; j < sortModel.length; j++) {\n var sortModelEntry = sortModel[j];\n if (typeof sortModelEntry.colId === 'string'\n && typeof column.getColId() === 'string'\n && _this.compareColIds(sortModelEntry, column)) {\n sortForCol = sortModelEntry.sort;\n sortedAt = j;\n }\n }\n }\n if (sortForCol) {\n column.setSort(sortForCol, source);\n column.setSortedAt(sortedAt);\n }\n else {\n column.setSort(null, source);\n column.setSortedAt(null);\n }\n });\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.compareColIds = function (sortModelEntry, column) {\n return sortModelEntry.colId === column.getColId();\n };\n SortController.prototype.getColumnsWithSortingOrdered = function () {\n // pull out all the columns that have sorting set\n var allColumnsIncludingAuto = this.columnController.getPrimaryAndSecondaryAndAutoColumns();\n var columnsWithSorting = allColumnsIncludingAuto.filter(function (column) { return !!column.getSort(); });\n // put the columns in order of which one got sorted first\n columnsWithSorting.sort(function (a, b) { return a.sortedAt - b.sortedAt; });\n return columnsWithSorting;\n };\n // used by row controller, when doing the sorting\n SortController.prototype.getSortForRowController = function () {\n return this.getColumnsWithSortingOrdered().map(function (column) {\n var isAscending = column.getSort() === Constants.SORT_ASC;\n return {\n inverter: isAscending ? 1 : -1,\n column: column\n };\n });\n };\n var SortController_1;\n SortController.DEFAULT_SORTING_ORDER = [Constants.SORT_ASC, Constants.SORT_DESC, null];\n __decorate$17([\n Autowired('gridOptionsWrapper')\n ], SortController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$17([\n Autowired('columnController')\n ], SortController.prototype, \"columnController\", void 0);\n __decorate$17([\n Autowired('eventService')\n ], SortController.prototype, \"eventService\", void 0);\n __decorate$17([\n Autowired('columnApi')\n ], SortController.prototype, \"columnApi\", void 0);\n __decorate$17([\n Autowired('gridApi')\n ], SortController.prototype, \"gridApi\", void 0);\n SortController = SortController_1 = __decorate$17([\n Bean('sortController')\n ], SortController);\n return SortController;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FocusController = /** @class */ (function () {\n function FocusController() {\n this.keyboardFocusActive = false;\n this.events = [];\n }\n FocusController.prototype.init = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var clearFocusedCellListener = this.clearFocusedCell.bind(this);\n this.events = [\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener),\n this.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, clearFocusedCellListener),\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener),\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener)\n ];\n var activateKeyboardModeListener = this.activateKeyboardMode.bind(this);\n eDocument.addEventListener('keydown', activateKeyboardModeListener);\n this.events.push(function () { return eDocument.removeEventListener('keydown', activateKeyboardModeListener); });\n var activateMouseModeListener = this.activateMouseMode.bind(this);\n eDocument.addEventListener('mousedown', activateMouseModeListener);\n this.events.push(function () { return eDocument.removeEventListener('mousedown', activateMouseModeListener); });\n };\n FocusController.prototype.destroy = function () {\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n this.events = [];\n }\n };\n FocusController.prototype.isKeyboardFocus = function () {\n return this.keyboardFocusActive;\n };\n FocusController.prototype.clearFocusedCell = function () {\n this.focusedCellPosition = null;\n this.onCellFocused(false);\n };\n FocusController.prototype.getFocusedCell = function () {\n return this.focusedCellPosition;\n };\n FocusController.prototype.activateMouseMode = function () {\n this.keyboardFocusActive = false;\n this.eventService.dispatchEvent({ type: Events.EVENT_MOUSE_FOCUS });\n };\n FocusController.prototype.activateKeyboardMode = function () {\n this.keyboardFocusActive = true;\n this.eventService.dispatchEvent({ type: Events.EVENT_KEYBOARD_FOCUS });\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusController.prototype.getFocusCellToUseAfterRefresh = function () {\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh()) {\n return null;\n }\n if (!this.focusedCellPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n var browserFocusedCell = this.getGridCellForDomElement(document.activeElement);\n if (!browserFocusedCell) {\n return null;\n }\n return this.focusedCellPosition;\n };\n FocusController.prototype.getGridCellForDomElement = function (eBrowserCell) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var cellComp = this.gridOptionsWrapper.getDomData(ePointer, CellComp.DOM_DATA_KEY_CELL_COMP);\n if (cellComp) {\n return cellComp.getCellPosition();\n }\n ePointer = ePointer.parentNode;\n }\n return null;\n };\n FocusController.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n var column = _.makeNull(this.columnController.getGridColumn(colKey));\n this.focusedCellPosition = { rowIndex: rowIndex, rowPinned: _.makeNull(floating), column: column };\n this.onCellFocused(forceBrowserFocus);\n };\n FocusController.prototype.isCellFocused = function (cellPosition) {\n if (_.missing(this.focusedCellPosition)) {\n return false;\n }\n return this.focusedCellPosition.column === cellPosition.column && this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);\n };\n FocusController.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusController.prototype.isAnyCellFocused = function () {\n return !!this.focusedCellPosition;\n };\n FocusController.prototype.isRowFocused = function (rowIndex, floating) {\n if (_.missing(this.focusedCellPosition)) {\n return false;\n }\n var floatingOrNull = _.makeNull(floating);\n return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === floatingOrNull;\n };\n FocusController.prototype.findFocusableElements = function (rootNode, exclude) {\n var focusableString = '[tabindex], input, select, button, textarea';\n var excludeString = '.ag-hidden, .ag-hidden *, .ag-disabled, .ag-disabled *';\n if (exclude) {\n excludeString += ', ' + exclude;\n }\n var nodes = Array.from(rootNode.querySelectorAll(focusableString));\n var excludeNodes = Array.from(rootNode.querySelectorAll(excludeString));\n if (!excludeNodes.length) {\n return nodes;\n }\n var diff = function (a, b) { return a.filter(function (element) { return b.indexOf(element) === -1; }); };\n return diff(nodes, excludeNodes);\n };\n FocusController.prototype.onCellFocused = function (forceBrowserFocus) {\n var event = {\n type: Events.EVENT_CELL_FOCUSED,\n forceBrowserFocus: forceBrowserFocus,\n rowIndex: null,\n column: null,\n floating: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n rowPinned: null\n };\n if (this.focusedCellPosition) {\n event.rowIndex = this.focusedCellPosition.rowIndex;\n event.column = this.focusedCellPosition.column;\n event.rowPinned = this.focusedCellPosition.rowPinned;\n }\n this.eventService.dispatchEvent(event);\n };\n __decorate$18([\n Autowired('eventService')\n ], FocusController.prototype, \"eventService\", void 0);\n __decorate$18([\n Autowired('gridOptionsWrapper')\n ], FocusController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$18([\n Autowired('columnController')\n ], FocusController.prototype, \"columnController\", void 0);\n __decorate$18([\n Autowired('columnApi')\n ], FocusController.prototype, \"columnApi\", void 0);\n __decorate$18([\n Autowired('gridApi')\n ], FocusController.prototype, \"gridApi\", void 0);\n __decorate$18([\n PostConstruct\n ], FocusController.prototype, \"init\", null);\n __decorate$18([\n PreDestroy\n ], FocusController.prototype, \"destroy\", null);\n FocusController = __decorate$18([\n Bean('focusController')\n ], FocusController);\n return FocusController;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MouseEventService = /** @class */ (function () {\n function MouseEventService() {\n this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n }\n MouseEventService_1 = MouseEventService;\n MouseEventService.prototype.init = function () {\n this.stampDomElementWithGridInstance();\n };\n MouseEventService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n // for where this is used.\n MouseEventService.prototype.stampDomElementWithGridInstance = function () {\n this.eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n };\n MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n return _.getCellCompForEvent(this.gridOptionsWrapper, event);\n };\n // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n // getting executed on many grids at the same time.\n MouseEventService.prototype.isEventFromThisGrid = function (event) {\n var path = _.getEventPath(event);\n for (var i = 0; i < path.length; i++) {\n var element = path[i];\n var instanceId = element[MouseEventService_1.GRID_DOM_KEY];\n if (_.exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n }\n return false;\n };\n MouseEventService.prototype.getCellPositionForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getCellPosition() : null;\n };\n MouseEventService.prototype.getNormalisedPosition = function (event) {\n var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var x = event.x, y = event.y;\n if (gridPanelHasScrolls) {\n var vRange = this.gridPanel.getVScrollPosition();\n var hRange = this.gridPanel.getHScrollPosition();\n return { x: x + hRange.left, y: y + vRange.top };\n }\n return { x: x, y: y };\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate$19([\n Autowired('gridOptionsWrapper')\n ], MouseEventService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$19([\n Autowired('eGridDiv')\n ], MouseEventService.prototype, \"eGridDiv\", void 0);\n __decorate$19([\n PostConstruct\n ], MouseEventService.prototype, \"init\", null);\n MouseEventService = MouseEventService_1 = __decorate$19([\n Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CellNavigationService = /** @class */ (function () {\n function CellNavigationService() {\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, lastCellToFocus) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = lastCellToFocus;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case Constants.KEY_UP:\n pointer = this.getCellAbove(pointer);\n break;\n case Constants.KEY_DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case Constants.KEY_RIGHT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case Constants.KEY_LEFT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('ag-Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.rowPinned) {\n case Constants.PINNED_TOP:\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case Constants.PINNED_BOTTOM:\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnController.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnController.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getRowBelow = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case Constants.PINNED_BOTTOM:\n // never any rows after pinned bottom\n return null;\n case Constants.PINNED_TOP:\n // if on last row of pinned top, then next row is main body (if rows exist),\n // otherwise it's the pinned bottom\n if (this.rowModel.isRowsToRender()) {\n return { rowIndex: 0, rowPinned: null };\n }\n else if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n default:\n // if in the main body, then try pinned bottom, otherwise return nothing\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n }\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell);\n if (rowBelow) {\n return {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n rowPinned: rowBelow.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {\n var pinned = rowPosition.rowPinned;\n var index = rowPosition.rowIndex;\n if (pinned === Constants.PINNED_TOP) {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= index;\n }\n else if (pinned === Constants.PINNED_BOTTOM) {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= index;\n }\n var lastBodyIndex = this.rowModel.getRowCount() - 1;\n return lastBodyIndex <= index;\n };\n CellNavigationService.prototype.getRowAbove = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n // if already on top row, do nothing\n if (index === 0) {\n if (pinned === Constants.PINNED_TOP) {\n return null;\n }\n else if (!pinned) {\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n else {\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n else if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });\n if (rowAbove) {\n return {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n rowPinned: rowAbove.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.rowModel.getRowCount() - 1;\n return { rowIndex: lastBodyRow, rowPinned: null };\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return { rowIndex: lastFloatingRow, rowPinned: Constants.PINNED_TOP };\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell);\n if (_.missing(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnController.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnController.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = _.last(displayedColumns);\n var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (_.missing(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n __decorate$1a([\n Autowired('columnController')\n ], CellNavigationService.prototype, \"columnController\", void 0);\n __decorate$1a([\n Autowired('rowModel')\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate$1a([\n Autowired('pinnedRowModel')\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate$1a([\n Autowired('gridOptionsWrapper')\n ], CellNavigationService.prototype, \"gridOptionsWrapper\", void 0);\n CellNavigationService = __decorate$1a([\n Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRendererMap = {};\n }\n CellRendererFactory_1 = CellRendererFactory;\n CellRendererFactory.prototype.init = function () {\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SLIDE] = AnimateSlideCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.ANIMATE_SHOW_CHANGE] = AnimateShowChangeCellRenderer;\n this.cellRendererMap[CellRendererFactory_1.GROUP] = GroupCellRenderer;\n // this.registerRenderersFromGridOptions();\n };\n // private registerRenderersFromGridOptions(): void {\n // let userProvidedCellRenderers = this.gridOptionsWrapper.getCellRenderers();\n // _.iterateObject(userProvidedCellRenderers, (key: string, cellRenderer: {new(): ICellRenderer} | ICellRendererFunc)=> {\n // this.addCellRenderer(key, cellRenderer);\n // });\n // }\n CellRendererFactory.prototype.addCellRenderer = function (key, cellRenderer) {\n this.cellRendererMap[key] = cellRenderer;\n };\n CellRendererFactory.prototype.getCellRenderer = function (key) {\n var result = this.cellRendererMap[key];\n if (_.missing(result)) {\n console.warn('ag-Grid: unable to find cellRenderer for key ' + key);\n return null;\n }\n return result;\n };\n var CellRendererFactory_1;\n CellRendererFactory.ANIMATE_SLIDE = 'animateSlide';\n CellRendererFactory.ANIMATE_SHOW_CHANGE = 'animateShowChange';\n CellRendererFactory.GROUP = 'group';\n __decorate$1b([\n Autowired('gridOptionsWrapper')\n ], CellRendererFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1b([\n Autowired('expressionService')\n ], CellRendererFactory.prototype, \"expressionService\", void 0);\n __decorate$1b([\n Autowired('eventService')\n ], CellRendererFactory.prototype, \"eventService\", void 0);\n __decorate$1b([\n PostConstruct\n ], CellRendererFactory.prototype, \"init\", null);\n CellRendererFactory = CellRendererFactory_1 = __decorate$1b([\n Bean('cellRendererFactory')\n ], CellRendererFactory);\n return CellRendererFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueFormatterService = /** @class */ (function () {\n function ValueFormatterService() {\n }\n ValueFormatterService.prototype.formatValue = function (column, node, $scope, value, suppliedFormatter, useFormatterFromColumn) {\n if (useFormatterFromColumn === void 0) { useFormatterFromColumn = true; }\n var result = null;\n var formatter;\n var colDef = column.getColDef();\n if (suppliedFormatter) {\n // favour supplied, e.g. set filter items can have their own value formatters\n formatter = suppliedFormatter;\n }\n else if (useFormatterFromColumn) {\n // if floating, give preference to the floating formatter\n formatter = node && node.rowPinned && colDef.pinnedRowValueFormatter ?\n colDef.pinnedRowValueFormatter : colDef.valueFormatter;\n }\n if (formatter) {\n var params = {\n value: value,\n node: node,\n data: node ? node.data : null,\n colDef: colDef,\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n // originally we put the angular 1 scope here, but we don't want the scope\n // in the params interface, as other frameworks will see the interface, and\n // angular 1 is not cool any more. so we hack the scope in here (we cannot\n // include it above, as it's not in the interface, so would cause a compile error).\n // in the future, when we stop supporting angular 1, we can take this out.\n params.$scope = $scope;\n result = this.expressionService.evaluate(formatter, params);\n }\n else if (colDef.refData) {\n return colDef.refData[value] || '';\n }\n // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (ie with spaces)\n if (result == null && Array.isArray(value)) {\n result = value.join(', ');\n }\n return result;\n };\n __decorate$1c([\n Autowired('gridOptionsWrapper')\n ], ValueFormatterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1c([\n Autowired('expressionService')\n ], ValueFormatterService.prototype, \"expressionService\", void 0);\n ValueFormatterService = __decorate$1c([\n Bean('valueFormatterService')\n ], ValueFormatterService);\n return ValueFormatterService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$P = (undefined && undefined.__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})();\nvar AgRadioButton = /** @class */ (function (_super) {\n __extends$P(AgRadioButton, _super);\n function AgRadioButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.className = 'ag-radio-button';\n _this.inputType = 'radio';\n return _this;\n }\n AgRadioButton.prototype.isSelected = function () {\n return this.eInput.checked;\n };\n AgRadioButton.prototype.toggle = function () {\n var nextValue = this.getNextValue();\n this.setValue(nextValue);\n };\n AgRadioButton.prototype.addInputListeners = function () {\n _super.prototype.addInputListeners.call(this);\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));\n };\n /**\n * This ensures that if another radio button in the same named group is selected, we deselect this radio button.\n * By default the browser does this for you, but we are managing classes ourselves in order to ensure input\n * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,\n * not deselected, so we need to use our own event.\n */\n AgRadioButton.prototype.onChange = function (event) {\n if (event.selected &&\n event.name &&\n this.eInput.name &&\n this.eInput.name === event.name &&\n event.id &&\n this.eInput.id !== event.id) {\n this.setValue(false, true);\n }\n };\n return AgRadioButton;\n}(AgCheckbox));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/** The base frameworks, eg React & Angular 2, override this bean with implementations specific to their requirement. */\nvar VanillaFrameworkOverrides = /** @class */ (function () {\n function VanillaFrameworkOverrides() {\n }\n // for Vanilla JS, we use simple timeout\n VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {\n window.setTimeout(action, timeout);\n };\n // for Vanilla JS, we just add the event to the element\n VanillaFrameworkOverrides.prototype.addEventListenerOutsideAngular = function (element, type, listener, useCapture) {\n element.addEventListener(type, listener, useCapture);\n };\n return VanillaFrameworkOverrides;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ScrollVisibleService = /** @class */ (function () {\n function ScrollVisibleService() {\n }\n ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n var event_1 = {\n type: Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n // used by pagination service - to know page height\n ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n return this.horizontalScrollShowing;\n };\n // used by header container\n ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n return this.verticalScrollShowing;\n };\n __decorate$1d([\n Autowired('eventService')\n ], ScrollVisibleService.prototype, \"eventService\", void 0);\n __decorate$1d([\n Autowired('columnController')\n ], ScrollVisibleService.prototype, \"columnController\", void 0);\n __decorate$1d([\n Autowired('columnApi')\n ], ScrollVisibleService.prototype, \"columnApi\", void 0);\n __decorate$1d([\n Autowired('gridApi')\n ], ScrollVisibleService.prototype, \"gridApi\", void 0);\n __decorate$1d([\n Autowired('gridOptionsWrapper')\n ], ScrollVisibleService.prototype, \"gridOptionsWrapper\", void 0);\n ScrollVisibleService = __decorate$1d([\n Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StylingService = /** @class */ (function () {\n function StylingService() {\n }\n StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n };\n StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n if (typeof classRules === 'object' && classRules !== null) {\n var classNames = Object.keys(classRules);\n for (var i = 0; i < classNames.length; i++) {\n var className = classNames[i];\n var rule = classRules[className];\n var resultOfRule = void 0;\n if (typeof rule === 'string') {\n resultOfRule = this.expressionService.evaluate(rule, params);\n }\n else if (typeof rule === 'function') {\n resultOfRule = rule(params);\n }\n if (resultOfRule) {\n onApplicableClass(className);\n }\n else if (onNotApplicableClass) {\n onNotApplicableClass(className);\n }\n }\n }\n };\n StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n var cellClass = colDef.cellClass;\n if (cellClass) {\n var classOrClasses = void 0;\n if (typeof colDef.cellClass === 'function') {\n var cellClassFunc = colDef.cellClass;\n classOrClasses = cellClassFunc(params);\n }\n else {\n classOrClasses = colDef.cellClass;\n }\n if (typeof classOrClasses === 'string') {\n onApplicableClass(classOrClasses);\n }\n else if (Array.isArray(classOrClasses)) {\n classOrClasses.forEach(function (cssClassItem) {\n onApplicableClass(cssClassItem);\n });\n }\n }\n };\n __decorate$1e([\n Autowired('expressionService')\n ], StylingService.prototype, \"expressionService\", void 0);\n StylingService = __decorate$1e([\n Bean('stylingService')\n ], StylingService);\n return StylingService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Q = (undefined && undefined.__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})();\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends$Q(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n __decorate$1f([\n Autowired('eventService')\n ], ColumnHoverService.prototype, \"eventService\", void 0);\n __decorate$1f([\n Autowired('columnApi')\n ], ColumnHoverService.prototype, \"columnApi\", void 0);\n __decorate$1f([\n Autowired('gridApi')\n ], ColumnHoverService.prototype, \"gridApi\", void 0);\n ColumnHoverService = __decorate$1f([\n Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnAnimationService = /** @class */ (function () {\n function ColumnAnimationService() {\n this.executeNextFuncs = [];\n this.executeLaterFuncs = [];\n this.active = false;\n this.animationThreadCount = 0;\n }\n ColumnAnimationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsWrapper.isEnableRtl()) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridPanel.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridPanel.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate$1g([\n Autowired('gridOptionsWrapper')\n ], ColumnAnimationService.prototype, \"gridOptionsWrapper\", void 0);\n ColumnAnimationService = __decorate$1g([\n Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AutoGroupColService = /** @class */ (function () {\n function AutoGroupColService() {\n }\n AutoGroupColService_1 = AutoGroupColService;\n AutoGroupColService.prototype.createAutoGroupColumns = function (rowGroupColumns) {\n var _this = this;\n var groupAutoColumns = [];\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n if (doingTreeData && doingMultiAutoColumn) {\n console.warn('ag-Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');\n doingMultiAutoColumn = false;\n }\n // if doing groupMultiAutoColumn, then we call the method multiple times, once\n // for each column we are grouping by\n if (doingMultiAutoColumn) {\n rowGroupColumns.forEach(function (rowGroupCol, index) {\n groupAutoColumns.push(_this.createOneAutoGroupColumn(rowGroupCol, index));\n });\n }\n else {\n groupAutoColumns.push(this.createOneAutoGroupColumn());\n }\n return groupAutoColumns;\n };\n // rowGroupCol and index are missing if groupMultiAutoColumn=false\n AutoGroupColService.prototype.createOneAutoGroupColumn = function (rowGroupCol, index) {\n // if one provided by user, use it, otherwise create one\n var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n // if doing multi, set the field\n var colId;\n if (rowGroupCol) {\n colId = Constants.GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n }\n else {\n colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;\n }\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n _.mergeDeep(defaultAutoColDef, userAutoColDef);\n defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);\n defaultAutoColDef.colId = colId;\n // For tree data the filter is always allowed\n if (!this.gridOptionsWrapper.isTreeData()) {\n // we would only allow filter if the user has provided field or value getter. otherwise the filter\n // would not be able to work.\n var noFieldOrValueGetter = _.missing(defaultAutoColDef.field) && _.missing(defaultAutoColDef.valueGetter) && _.missing(defaultAutoColDef.filterValueGetter);\n if (noFieldOrValueGetter) {\n defaultAutoColDef.filter = false;\n }\n }\n // if showing many cols, we don't want to show more than one with a checkbox for selection\n if (index && index > 0) {\n defaultAutoColDef.headerCheckboxSelection = false;\n }\n var newCol = new Column(defaultAutoColDef, null, colId, true);\n this.context.wireBean(newCol);\n return newCol;\n };\n AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultAutoColDef = {\n headerName: localeTextFunc('group', 'Group')\n };\n var userHasProvidedGroupCellRenderer = userAutoColDef && (userAutoColDef.cellRenderer || userAutoColDef.cellRendererFramework);\n // only add the default group cell renderer if user hasn't provided one\n if (!userHasProvidedGroupCellRenderer) {\n defaultAutoColDef.cellRenderer = 'agGroupCellRenderer';\n }\n // we never allow moving the group column\n // defaultAutoColDef.suppressMovable = true;\n if (rowGroupCol) {\n var rowGroupColDef = rowGroupCol.getColDef();\n _.assign(defaultAutoColDef, {\n // cellRendererParams.groupKey: colDefToCopy.field;\n headerName: this.columnController.getDisplayNameForColumn(rowGroupCol, 'header'),\n headerValueGetter: rowGroupColDef.headerValueGetter\n });\n if (rowGroupColDef.cellRenderer) {\n _.assign(defaultAutoColDef, {\n cellRendererParams: {\n innerRenderer: rowGroupColDef.cellRenderer,\n innerRendererParams: rowGroupColDef.cellRendererParams\n }\n });\n }\n defaultAutoColDef.showRowGroup = rowGroupCol.getColId();\n }\n else {\n defaultAutoColDef.showRowGroup = true;\n }\n return defaultAutoColDef;\n };\n var AutoGroupColService_1;\n AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = Constants.GROUP_AUTO_COLUMN_ID;\n __decorate$1h([\n Autowired('gridOptionsWrapper')\n ], AutoGroupColService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1h([\n Autowired('context')\n ], AutoGroupColService.prototype, \"context\", void 0);\n __decorate$1h([\n Autowired('columnController')\n ], AutoGroupColService.prototype, \"columnController\", void 0);\n __decorate$1h([\n Autowired('columnFactory')\n ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n AutoGroupColService = AutoGroupColService_1 = __decorate$1h([\n Bean('autoGroupColService')\n ], AutoGroupColService);\n return AutoGroupColService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$R = (undefined && undefined.__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})();\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationProxy = /** @class */ (function (_super) {\n __extends$R(PaginationProxy, _super);\n function PaginationProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPage = 0;\n _this.topDisplayedRowIndex = 0;\n _this.bottomDisplayedRowIndex = 0;\n _this.pixelOffset = 0;\n _this.masterRowCount = 0;\n return _this;\n }\n PaginationProxy.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isPagination();\n this.paginateChildRows = this.gridOptionsWrapper.isPaginateChildRows();\n this.addDestroyableEventListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addDestroyableEventListener(this.gridOptionsWrapper, 'paginationPageSize', this.onModelUpdated.bind(this));\n this.onModelUpdated();\n };\n PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.calculatePages();\n }\n return res;\n };\n PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.goToPage = function (page) {\n if (!this.active) {\n return;\n }\n if (this.currentPage === page) {\n return;\n }\n this.currentPage = page;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.onModelUpdated(event);\n };\n PaginationProxy.prototype.getPixelOffset = function () {\n return this.pixelOffset;\n };\n PaginationProxy.prototype.getRow = function (index) {\n return this.rowModel.getRow(index);\n };\n PaginationProxy.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n };\n PaginationProxy.prototype.getCurrentPageHeight = function () {\n if (_.missing(this.topRowBounds) || _.missing(this.bottomRowBounds)) {\n return 0;\n }\n return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);\n };\n PaginationProxy.prototype.isRowPresent = function (rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n return nodeIsInPage;\n };\n PaginationProxy.prototype.isEmpty = function () {\n return this.rowModel.isEmpty();\n };\n PaginationProxy.prototype.isRowsToRender = function () {\n return this.rowModel.isRowsToRender();\n };\n PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);\n };\n PaginationProxy.prototype.forEachNode = function (callback) {\n return this.rowModel.forEachNode(callback);\n };\n PaginationProxy.prototype.getType = function () {\n return this.rowModel.getType();\n };\n PaginationProxy.prototype.getRowBounds = function (index) {\n var res = this.rowModel.getRowBounds(index);\n res.rowIndex = index;\n return res;\n };\n PaginationProxy.prototype.getPageFirstRow = function () {\n return this.topRowBounds ? this.topRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getPageLastRow = function () {\n return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getRowCount = function () {\n return this.rowModel.getRowCount();\n };\n PaginationProxy.prototype.goToPageWithIndex = function (index) {\n if (!this.active) {\n return;\n }\n var pageNumber = Math.floor(index / this.pageSize);\n this.goToPage(pageNumber);\n };\n PaginationProxy.prototype.isLastPageFound = function () {\n return this.rowModel.isLastRowFound();\n };\n PaginationProxy.prototype.getCurrentPage = function () {\n return this.currentPage;\n };\n PaginationProxy.prototype.goToNextPage = function () {\n this.goToPage(this.currentPage + 1);\n };\n PaginationProxy.prototype.goToPreviousPage = function () {\n this.goToPage(this.currentPage - 1);\n };\n PaginationProxy.prototype.goToFirstPage = function () {\n this.goToPage(0);\n };\n PaginationProxy.prototype.goToLastPage = function () {\n var rowCount = this.rowModel.getRowCount();\n var lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n };\n PaginationProxy.prototype.getPageSize = function () {\n return this.pageSize;\n };\n PaginationProxy.prototype.getTotalPages = function () {\n return this.totalPages;\n };\n PaginationProxy.prototype.setPageSize = function () {\n // show put this into super class\n this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();\n if (!(this.pageSize >= 1)) {\n this.pageSize = 100;\n }\n };\n PaginationProxy.prototype.calculatePages = function () {\n if (this.active) {\n this.setPageSize();\n if (this.paginateChildRows) {\n this.calculatePagesAllRows();\n }\n else {\n this.calculatePagesMasterRowsOnly();\n }\n }\n else {\n this.calculatedPagesNotActive();\n }\n this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);\n if (this.topRowBounds) {\n this.topRowBounds.rowIndex = this.topDisplayedRowIndex;\n }\n this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);\n if (this.bottomRowBounds) {\n this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;\n }\n this.pixelOffset = _.exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0;\n };\n PaginationProxy.prototype.setZeroRows = function () {\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = -1;\n this.currentPage = 0;\n this.totalPages = 0;\n };\n PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {\n // const csrm = this.rowModel;\n // const rootNode = csrm.getRootNode();\n // const masterRows = rootNode.childrenAfterSort;\n this.masterRowCount = this.rowModel.getTopLevelRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n var masterLastRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!_.isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n var masterPageStartIndex = this.pageSize * this.currentPage;\n var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (masterPageEndIndex > masterLastRowIndex) {\n masterPageEndIndex = masterLastRowIndex;\n }\n this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n // masterRows[masterPageStartIndex].rowIndex;\n if (masterPageEndIndex === masterLastRowIndex) {\n // if showing the last master row, then we want to show the very last row of the model\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n }\n else {\n var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n //masterRows[masterPageEndIndex + 1].rowIndex;\n // this gets the index of the last child - eg current row is open, we want to display all children,\n // the index of the last child is one less than the index of the next parent row.\n this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n }\n };\n PaginationProxy.prototype.getMasterRowCount = function () {\n return this.masterRowCount;\n };\n PaginationProxy.prototype.calculatePagesAllRows = function () {\n this.masterRowCount = this.rowModel.getRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n var maxRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!_.isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n this.topDisplayedRowIndex = this.pageSize * this.currentPage;\n this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (this.bottomDisplayedRowIndex > maxRowIndex) {\n this.bottomDisplayedRowIndex = maxRowIndex;\n }\n };\n PaginationProxy.prototype.calculatedPagesNotActive = function () {\n this.pageSize = this.rowModel.getRowCount();\n this.totalPages = 1;\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n };\n __decorate$1i([\n Autowired('rowModel')\n ], PaginationProxy.prototype, \"rowModel\", void 0);\n __decorate$1i([\n Autowired('eventService')\n ], PaginationProxy.prototype, \"eventService\", void 0);\n __decorate$1i([\n Autowired('gridOptionsWrapper')\n ], PaginationProxy.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1i([\n Autowired('selectionController')\n ], PaginationProxy.prototype, \"selectionController\", void 0);\n __decorate$1i([\n Autowired('columnApi')\n ], PaginationProxy.prototype, \"columnApi\", void 0);\n __decorate$1i([\n Autowired('gridApi')\n ], PaginationProxy.prototype, \"gridApi\", void 0);\n __decorate$1i([\n PostConstruct\n ], PaginationProxy.prototype, \"postConstruct\", null);\n PaginationProxy = __decorate$1i([\n Bean('paginationProxy')\n ], PaginationProxy);\n return PaginationProxy;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$S = (undefined && undefined.__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})();\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends$S(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.onBodyHeightChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n };\n PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n if (this.notActive()) {\n return;\n }\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var bodyHeight = this.gridPanel.getBodyHeight();\n if (bodyHeight > 0) {\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n }\n };\n __decorate$1j([\n Autowired('eventService')\n ], PaginationAutoPageSizeService.prototype, \"eventService\", void 0);\n __decorate$1j([\n Autowired('gridOptionsWrapper')\n ], PaginationAutoPageSizeService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1j([\n Autowired('scrollVisibleService')\n ], PaginationAutoPageSizeService.prototype, \"scrollVisibleService\", void 0);\n PaginationAutoPageSizeService = __decorate$1j([\n Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueCache = /** @class */ (function () {\n function ValueCache() {\n this.cacheVersion = 0;\n }\n ValueCache.prototype.init = function () {\n this.active = this.gridOptionsWrapper.isValueCache();\n this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();\n };\n ValueCache.prototype.onDataChanged = function () {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n };\n ValueCache.prototype.expire = function () {\n this.cacheVersion++;\n };\n ValueCache.prototype.setValue = function (rowNode, colId, value) {\n if (this.active) {\n if (rowNode.__cacheVersion !== this.cacheVersion) {\n rowNode.__cacheVersion = this.cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n };\n ValueCache.prototype.getValue = function (rowNode, colId) {\n if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n return undefined;\n }\n return rowNode.__cacheData[colId];\n };\n __decorate$1k([\n Autowired('gridOptionsWrapper')\n ], ValueCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1k([\n PostConstruct\n ], ValueCache.prototype, \"init\", null);\n ValueCache = __decorate$1k([\n Bean('valueCache')\n ], ValueCache);\n return ValueCache;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$T = (undefined && undefined.__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})();\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends$T(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n // Clipboard service manages its own change detection, so no need to do it here.\n // The clipboard manages its own as otherwise this would happen once for every cell\n // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,\n // this doChangeDetection would get called 100 times (once for each cell), instead clipboard\n // service executes the logic we have here once (in essence batching up all cell changes\n // into one change detection).\n if (event.source === Constants.SOURCE_PASTE) {\n return;\n }\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate$1l([\n Autowired('gridOptionsWrapper')\n ], ChangeDetectionService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1l([\n Autowired('rowModel')\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate$1l([\n Autowired('rowRenderer')\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate$1l([\n Autowired('eventService')\n ], ChangeDetectionService.prototype, \"eventService\", void 0);\n __decorate$1l([\n PostConstruct\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate$1l([\n Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$8 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AlignedGridsService = /** @class */ (function () {\n function AlignedGridsService() {\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n this.consuming = false;\n this.events = [];\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AlignedGridsService.prototype.init = function () {\n this.events = [\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this)),\n this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this)),\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this)),\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this)),\n this.eventService.addEventListener(Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this)),\n this.eventService.addEventListener(Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this))\n ];\n };\n AlignedGridsService.prototype.destroy = function () {\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n }\n this.events = [];\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n _this.gridPanel.setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case Events.EVENT_COLUMN_MOVED:\n case Events.EVENT_COLUMN_VISIBLE:\n case Events.EVENT_COLUMN_PINNED:\n case Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('ag-Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnController.getOriginalColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnController.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn;\n if (masterColumn) {\n otherColumn = this.columnController.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var columnIds = this.getColumnIds(colEvent);\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case Events.EVENT_COLUMN_MOVED:\n var movedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n this.columnController.moveColumns(columnIds, movedEvent.toIndex, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_VISIBLE:\n var visibleEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n this.columnController.setColumnsVisible(columnIds, visibleEvent.visible, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_PINNED:\n var pinnedEvent = colEvent;\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n this.columnController.setColumnsPinned(columnIds, pinnedEvent.pinned, \"alignedGridChanged\");\n break;\n case Events.EVENT_COLUMN_RESIZED:\n var resizedEvent_1 = colEvent;\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n var columnWidths = [{ key: column.getColId(), newWidth: column.getActualWidth() }];\n _this.columnController.setColumnWidths(columnWidths, false, resizedEvent_1.finished, \"alignedGridChanged\");\n });\n break;\n }\n var isVerticalScrollShowing = this.gridPanel.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();\n alignedGrids.forEach(function (grid) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n });\n };\n __decorate$1m([\n Autowired('gridOptionsWrapper')\n ], AlignedGridsService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1m([\n Autowired('columnController')\n ], AlignedGridsService.prototype, \"columnController\", void 0);\n __decorate$1m([\n Autowired('eventService')\n ], AlignedGridsService.prototype, \"eventService\", void 0);\n __decorate$1m([\n __param$8(0, Qualifier('loggerFactory'))\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate$1m([\n PostConstruct\n ], AlignedGridsService.prototype, \"init\", null);\n __decorate$1m([\n PreDestroy\n ], AlignedGridsService.prototype, \"destroy\", null);\n AlignedGridsService = __decorate$1m([\n Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgComponentUtils = /** @class */ (function () {\n function AgComponentUtils() {\n }\n AgComponentUtils.prototype.adaptFunction = function (propertyName, hardcodedJsFunction, componentFromFramework, source) {\n if (hardcodedJsFunction == null) {\n return {\n component: null,\n componentFromFramework: componentFromFramework,\n source: source,\n paramsFromSelector: null\n };\n }\n var metadata = this.componentMetadataProvider.retrieve(propertyName);\n if (metadata && metadata.functionAdapter) {\n return {\n componentFromFramework: componentFromFramework,\n component: metadata.functionAdapter(hardcodedJsFunction),\n source: source,\n paramsFromSelector: null\n };\n }\n return null;\n };\n AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n var Adapter = /** @class */ (function () {\n function Adapter() {\n }\n Adapter.prototype.refresh = function (params) {\n return false;\n };\n Adapter.prototype.getGui = function () {\n var callbackResult = callback(this.params);\n var type = typeof callbackResult;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return _.loadTemplate('' + callbackResult + '');\n }\n else {\n return callbackResult;\n }\n };\n Adapter.prototype.init = function (params) {\n this.params = params;\n };\n return Adapter;\n }());\n return Adapter;\n };\n AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && 'getGui' in candidate.prototype;\n };\n __decorate$1n([\n Autowired(\"componentMetadataProvider\")\n ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n AgComponentUtils = __decorate$1n([\n Bean(\"agComponentUtils\")\n ], AgComponentUtils);\n return AgComponentUtils;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ComponentMetadataProvider = /** @class */ (function () {\n function ComponentMetadataProvider() {\n }\n ComponentMetadataProvider.prototype.postConstruct = function () {\n this.componentMetaData = {\n dateComponent: {\n mandatoryMethodList: ['getDate', 'setDate'],\n optionalMethodList: ['afterGuiAttached', 'setInputPlaceholder']\n },\n detailCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh']\n },\n headerComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n headerGroupComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n noRowsOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n floatingFilterComponent: {\n mandatoryMethodList: ['onParentModelChanged'],\n optionalMethodList: ['afterGuiAttached']\n },\n floatingFilterWrapperComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n cellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n cellEditor: {\n mandatoryMethodList: ['getValue'],\n optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'getPopupPosition', 'focusIn', 'focusOut', 'afterGuiAttached']\n },\n innerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n fullWidthCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n pinnedRowCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowInnerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n filter: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n statusPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n },\n toolPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached']\n },\n tooltipComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n }\n };\n };\n ComponentMetadataProvider.prototype.retrieve = function (name) {\n return this.componentMetaData[name];\n };\n __decorate$1o([\n Autowired(\"agComponentUtils\")\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate$1o([\n PostConstruct\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate$1o([\n Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/** Using the IoC has a slight performance consideration, which is no problem most of the\n * time, unless we are trashing objects - which is the case when scrolling and rowComp\n * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired\n * with the IoC. Instead they get passed this object which is all the beans the RowComp\n * and CellComp need. Not autowiring all the cells gives performance improvement. */\nvar Beans = /** @class */ (function () {\n function Beans() {\n }\n Beans.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n Beans.prototype.postConstruct = function () {\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n __decorate$1p([\n Autowired('paginationProxy')\n ], Beans.prototype, \"paginationProxy\", void 0);\n __decorate$1p([\n Autowired('context')\n ], Beans.prototype, \"context\", void 0);\n __decorate$1p([\n Autowired('columnApi')\n ], Beans.prototype, \"columnApi\", void 0);\n __decorate$1p([\n Autowired('gridApi')\n ], Beans.prototype, \"gridApi\", void 0);\n __decorate$1p([\n Autowired('gridOptionsWrapper')\n ], Beans.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1p([\n Autowired('expressionService')\n ], Beans.prototype, \"expressionService\", void 0);\n __decorate$1p([\n Autowired('rowRenderer')\n ], Beans.prototype, \"rowRenderer\", void 0);\n __decorate$1p([\n Autowired('$compile')\n ], Beans.prototype, \"$compile\", void 0);\n __decorate$1p([\n Autowired('templateService')\n ], Beans.prototype, \"templateService\", void 0);\n __decorate$1p([\n Autowired('valueService')\n ], Beans.prototype, \"valueService\", void 0);\n __decorate$1p([\n Autowired('eventService')\n ], Beans.prototype, \"eventService\", void 0);\n __decorate$1p([\n Autowired('columnController')\n ], Beans.prototype, \"columnController\", void 0);\n __decorate$1p([\n Autowired('columnAnimationService')\n ], Beans.prototype, \"columnAnimationService\", void 0);\n __decorate$1p([\n Optional('rangeController')\n ], Beans.prototype, \"rangeController\", void 0);\n __decorate$1p([\n Autowired('focusController')\n ], Beans.prototype, \"focusController\", void 0);\n __decorate$1p([\n Optional('contextMenuFactory')\n ], Beans.prototype, \"contextMenuFactory\", void 0);\n __decorate$1p([\n Autowired('cellRendererFactory')\n ], Beans.prototype, \"cellRendererFactory\", void 0);\n __decorate$1p([\n Autowired('popupService')\n ], Beans.prototype, \"popupService\", void 0);\n __decorate$1p([\n Autowired('valueFormatterService')\n ], Beans.prototype, \"valueFormatterService\", void 0);\n __decorate$1p([\n Autowired('stylingService')\n ], Beans.prototype, \"stylingService\", void 0);\n __decorate$1p([\n Autowired('columnHoverService')\n ], Beans.prototype, \"columnHoverService\", void 0);\n __decorate$1p([\n Autowired('userComponentFactory')\n ], Beans.prototype, \"userComponentFactory\", void 0);\n __decorate$1p([\n Autowired('animationFrameService')\n ], Beans.prototype, \"taskQueue\", void 0);\n __decorate$1p([\n Autowired('dragAndDropService')\n ], Beans.prototype, \"dragAndDropService\", void 0);\n __decorate$1p([\n Autowired('sortController')\n ], Beans.prototype, \"sortController\", void 0);\n __decorate$1p([\n Autowired('filterManager')\n ], Beans.prototype, \"filterManager\", void 0);\n __decorate$1p([\n Autowired('maxDivHeightScaler')\n ], Beans.prototype, \"maxDivHeightScaler\", void 0);\n __decorate$1p([\n Autowired('frameworkOverrides')\n ], Beans.prototype, \"frameworkOverrides\", void 0);\n __decorate$1p([\n Autowired('detailRowCompCache')\n ], Beans.prototype, \"detailRowCompCache\", void 0);\n __decorate$1p([\n Autowired('cellPositionUtils')\n ], Beans.prototype, \"cellPositionUtils\", void 0);\n __decorate$1p([\n Autowired('rowPositionUtils')\n ], Beans.prototype, \"rowPositionUtils\", void 0);\n __decorate$1p([\n Autowired('selectionController')\n ], Beans.prototype, \"selectionController\", void 0);\n __decorate$1p([\n PostConstruct\n ], Beans.prototype, \"postConstruct\", null);\n Beans = __decorate$1p([\n Bean('beans')\n ], Beans);\n return Beans;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MAT_GRID_SIZE = 8;\nvar BASE_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar ALPINE_GRID_SIZE = 6;\nvar HARD_CODED_SIZES = {\n // this item is required for custom themes\n 'ag-theme-custom': {\n headerHeight: 25,\n headerCellMinWidth: 24,\n listItemHeight: BASE_GRID_SIZE * 5,\n rowHeight: 25,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n headerCellMinWidth: 48,\n listItemHeight: MAT_GRID_SIZE * 5,\n rowHeight: MAT_GRID_SIZE * 6,\n chartMenuPanelWidth: 240\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n headerCellMinWidth: 24,\n listItemHeight: BALHAM_GRID_SIZE * 7,\n rowHeight: BALHAM_GRID_SIZE * 7,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-alpine': {\n headerHeight: ALPINE_GRID_SIZE * 8,\n headerCellMinWidth: 36,\n listItemHeight: ALPINE_GRID_SIZE * 5,\n rowHeight: ALPINE_GRID_SIZE * 7,\n chartMenuPanelWidth: 240\n }\n};\n/**\n * this object contains a list of Sass variables and an array\n * of CSS styles required to get the correct value.\n * eg. $virtual-item-height requires a structure, so we can get its height.\n *
\n *
\n *
\n *
\n *
\n */\nvar SASS_PROPERTY_BUILDER = {\n headerHeight: ['ag-header-row'],\n headerCellMinWidth: ['ag-header-cell'],\n listItemHeight: ['ag-virtual-list-item'],\n rowHeight: ['ag-row'],\n chartMenuPanelWidth: ['ag-chart-docked-container']\n};\nvar CALCULATED_SIZES = {};\nvar Environment = /** @class */ (function () {\n function Environment() {\n }\n Environment.prototype.getSassVariable = function (theme, key) {\n var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');\n var defaultValue = HARD_CODED_SIZES[useTheme][key];\n var calculatedValue = 0;\n if (!CALCULATED_SIZES[theme]) {\n CALCULATED_SIZES[theme] = {};\n }\n if (CALCULATED_SIZES[theme][key]) {\n return CALCULATED_SIZES[theme][key];\n }\n if (SASS_PROPERTY_BUILDER[key]) {\n var classList = SASS_PROPERTY_BUILDER[key];\n var div = document.createElement('div');\n div.style.position = 'absolute';\n var el = classList.reduce(function (el, currentClass, idx) {\n if (idx === 0) {\n _.addCssClass(el, theme);\n }\n var div = document.createElement('div');\n div.style.position = 'static';\n _.addCssClass(div, currentClass);\n el.appendChild(div);\n return div;\n }, div);\n if (document.body) {\n document.body.appendChild(div);\n var sizeName = key.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';\n calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);\n document.body.removeChild(div);\n }\n }\n CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;\n return CALCULATED_SIZES[theme][key];\n };\n Environment.prototype.isThemeDark = function () {\n var theme = this.getTheme().theme;\n return !!theme && theme.indexOf('dark') >= 0;\n };\n Environment.prototype.chartMenuPanelWidth = function () {\n var theme = this.getTheme().themeFamily;\n return this.getSassVariable(theme, 'chartMenuPanelWidth');\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(material|(?:theme-([\\w\\-]*)))\\b/;\n var el = this.eGridDiv;\n var themeMatch;\n while (el) {\n themeMatch = reg.exec(el.className);\n if (!themeMatch) {\n el = el.parentElement;\n }\n else {\n break;\n }\n }\n if (!themeMatch) {\n return {};\n }\n var theme = themeMatch[0];\n var usingOldTheme = themeMatch[2] === undefined;\n if (usingOldTheme) {\n var newTheme_1 = theme.replace('ag-', 'ag-theme-');\n _.doOnce(function () { return console.warn(\"ag-Grid: As of v19 old theme are no longer provided. Please replace \" + theme + \" with \" + newTheme_1 + \".\"); }, 'using-old-theme');\n }\n return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, '') };\n };\n __decorate$1q([\n Autowired('eGridDiv')\n ], Environment.prototype, \"eGridDiv\", void 0);\n Environment = __decorate$1q([\n Bean('environment')\n ], Environment);\n return Environment;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimationFrameService = /** @class */ (function () {\n function AnimationFrameService() {\n // p1 and p2 are create tasks are to do with row and cell creation.\n // for them we want to execute according to row order, so we use\n // TaskItem so we know what index the item is for.\n this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows\n this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality\n // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n // important.\n this.destroyTasks = [];\n this.ticking = false;\n // we need to know direction of scroll, to build up rows in the direction of\n // the scroll. eg if user scrolls down, we extend the rows by building down.\n this.scrollGoingDown = true;\n this.lastScrollTop = 0;\n this.taskCount = 0;\n this.cancelledTasks = new Set();\n }\n AnimationFrameService.prototype.setScrollTop = function (scrollTop) {\n this.scrollGoingDown = scrollTop > this.lastScrollTop;\n this.lastScrollTop = scrollTop;\n };\n AnimationFrameService.prototype.init = function () {\n this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n };\n // this method is for our ag-Grid sanity only - if animation frames are turned off,\n // then no place in the code should be looking to add any work to be done in animation\n // frames. this stops bugs - where some code is asking for a frame to be executed\n // when it should not.\n AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n if (this.useAnimationFrame === false) {\n console.warn(\"ag-Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n }\n };\n AnimationFrameService.prototype.createTask = function (task, index, list) {\n this.verifyAnimationFrameOn(list);\n var taskItem = { task: task, index: index, createOrder: ++this.taskCount };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n };\n AnimationFrameService.prototype.cancelTask = function (task) {\n this.cancelledTasks.add(task);\n };\n AnimationFrameService.prototype.addTaskToList = function (taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n };\n AnimationFrameService.prototype.sortTaskList = function (taskList) {\n if (taskList.sorted) {\n return;\n }\n var sortDirection = this.scrollGoingDown ? 1 : -1;\n // sort first by row index (taking into account scroll direction), then by\n // order of task creation (always ascending, so cells will render left-to-right)\n taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });\n taskList.sorted = true;\n };\n AnimationFrameService.prototype.addDestroyTask = function (task) {\n this.verifyAnimationFrameOn('createTasksP3');\n this.destroyTasks.push(task);\n this.schedule();\n };\n AnimationFrameService.prototype.executeFrame = function (millis) {\n this.verifyAnimationFrameOn('executeFrame');\n var p1TaskList = this.createTasksP1;\n var p1Tasks = p1TaskList.list;\n var p2TaskList = this.createTasksP2;\n var p2Tasks = p2TaskList.list;\n var destroyTasks = this.destroyTasks;\n var frameStart = new Date().getTime();\n var duration = (new Date().getTime()) - frameStart;\n // 16ms is 60 fps\n var noMaxMillis = millis <= 0;\n while (noMaxMillis || duration < millis) {\n var task = void 0;\n if (p1Tasks.length) {\n this.sortTaskList(p1TaskList);\n task = p1Tasks.pop().task;\n }\n else if (p2Tasks.length) {\n this.sortTaskList(p2TaskList);\n task = p2Tasks.pop().task;\n }\n else if (destroyTasks.length) {\n task = destroyTasks.pop();\n }\n else {\n this.cancelledTasks.clear();\n break;\n }\n if (!this.cancelledTasks.has(task)) {\n task();\n }\n duration = (new Date().getTime()) - frameStart;\n }\n if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {\n this.requestFrame();\n }\n else {\n this.stopTicking();\n }\n };\n AnimationFrameService.prototype.stopTicking = function () {\n this.ticking = false;\n var event = {\n type: Events.EVENT_ANIMATION_QUEUE_EMPTY,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi()\n };\n this.eventService.dispatchEvent(event);\n };\n AnimationFrameService.prototype.flushAllFrames = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n this.executeFrame(-1);\n };\n AnimationFrameService.prototype.schedule = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n };\n AnimationFrameService.prototype.requestFrame = function () {\n // check for the existence of requestAnimationFrame, and if\n // it's missing, then we polyfill it with setTimeout()\n var callback = this.executeFrame.bind(this, 60);\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(callback);\n }\n else if (window.webkitRequestAnimationFrame) {\n window.webkitRequestAnimationFrame(callback);\n }\n else {\n window.setTimeout(callback, 0);\n }\n };\n AnimationFrameService.prototype.isQueueEmpty = function () {\n return !this.ticking;\n };\n __decorate$1r([\n Autowired('gridOptionsWrapper')\n ], AnimationFrameService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1r([\n Autowired('eventService')\n ], AnimationFrameService.prototype, \"eventService\", void 0);\n __decorate$1r([\n PostConstruct\n ], AnimationFrameService.prototype, \"init\", null);\n AnimationFrameService = __decorate$1r([\n Bean('animationFrameService')\n ], AnimationFrameService);\n return AnimationFrameService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NavigationService = /** @class */ (function () {\n function NavigationService() {\n this.timeLastPageEventProcessed = 0;\n }\n NavigationService.prototype.init = function () {\n this.scrollWidth = this.gridOptionsWrapper.getScrollbarWidth();\n };\n NavigationService.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n NavigationService.prototype.handlePageScrollingKey = function (event) {\n var key = event.which || event.keyCode;\n var alt = event.altKey;\n var ctrl = event.ctrlKey;\n var currentCell = this.mouseEventService.getCellPositionForEvent(event);\n if (!currentCell) {\n return false;\n }\n var processed = false;\n switch (key) {\n case Constants.KEY_PAGE_HOME:\n case Constants.KEY_PAGE_END:\n // handle home and end when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onHomeOrEndKey(key);\n processed = true;\n }\n break;\n case Constants.KEY_LEFT:\n case Constants.KEY_RIGHT:\n // handle left and right when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlLeftOrRight(key, currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_UP:\n case Constants.KEY_DOWN:\n // handle up and down when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlUpOrDown(key, currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_PAGE_DOWN:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageDown(currentCell);\n processed = true;\n }\n break;\n case Constants.KEY_PAGE_UP:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageUp(currentCell);\n processed = true;\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n };\n // the page up/down keys caused a problem, in that if the user\n // held the page up/down key down, lots of events got generated,\n // which clogged up the event queue (as they take time to process)\n // which in turn froze the grid. Logic below makes sure we wait 100ms\n // between processing the page up/down events, so when user has finger\n // held down on key, we ignore page up/down events until 100ms has passed,\n // which effectively empties the queue of page up/down events.\n NavigationService.prototype.isTimeSinceLastPageEventToRecent = function () {\n var now = new Date().getTime();\n var diff = now - this.timeLastPageEventProcessed;\n return (diff < 100);\n };\n NavigationService.prototype.setTimeLastPageEventProcessed = function () {\n this.timeLastPageEventProcessed = new Date().getTime();\n };\n NavigationService.prototype.onPageDown = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var scrollPosition = this.gridPanel.getVScrollPosition();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.gridPanel.isHorizontalScrollShowing()) {\n pixelsInOnePage -= this.scrollWidth;\n }\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n var scrollIndex = currentPageBottomRow;\n var currentCellPixel = this.paginationProxy.getRow(gridCell.rowIndex).rowTop;\n var nextCellPixel = currentCellPixel + pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var pageLastRow = this.paginationProxy.getPageLastRow();\n if (focusIndex > pageLastRow) {\n focusIndex = pageLastRow;\n }\n if (scrollIndex > pageLastRow) {\n scrollIndex = pageLastRow;\n }\n this.navigateTo(scrollIndex, 'top', null, focusIndex, gridCell.column);\n this.setTimeLastPageEventProcessed();\n };\n NavigationService.prototype.onPageUp = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var scrollPosition = this.gridPanel.getVScrollPosition();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.gridPanel.isHorizontalScrollShowing()) {\n pixelsInOnePage -= this.scrollWidth;\n }\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageTopPixel = scrollPosition.top;\n var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n var scrollIndex = currentPageTopRow;\n var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n var nextCellPixel = currentRowNode.rowTop + currentRowNode.rowHeight - pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var firstRow = this.paginationProxy.getPageFirstRow();\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n this.navigateTo(scrollIndex, 'bottom', null, focusIndex, gridCell.column);\n this.setTimeLastPageEventProcessed();\n };\n // common logic to navigate. takes parameters:\n // scrollIndex - what row to vertically scroll to\n // scrollType - what position to put scroll index ie top/bottom\n // scrollColumn - what column to horizontally scroll to\n // focusIndex / focusColumn - for page up / down, we want to scroll to one row/column, but focus another\n NavigationService.prototype.navigateTo = function (scrollIndex, scrollType, scrollColumn, focusIndex, focusColumn) {\n if (_.exists(scrollColumn)) {\n this.gridPanel.ensureColumnVisible(scrollColumn);\n }\n if (_.exists(scrollIndex)) {\n this.gridPanel.ensureIndexVisible(scrollIndex, scrollType);\n }\n // make sure the cell is rendered, needed if we are to focus\n this.animationFrameService.flushAllFrames();\n // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n // highlighted.\n this.focusController.setFocusedCell(focusIndex, focusColumn, null, true);\n if (this.rangeController) {\n var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n this.rangeController.setRangeToCell(cellPosition);\n }\n };\n // ctrl + up/down will bring focus to same column, first/last row. no horizontal scrolling.\n NavigationService.prototype.onCtrlUpOrDown = function (key, gridCell) {\n var upKey = key === Constants.KEY_UP;\n var rowIndexToScrollTo = upKey ? 0 : this.paginationProxy.getPageLastRow();\n this.navigateTo(rowIndexToScrollTo, null, gridCell.column, rowIndexToScrollTo, gridCell.column);\n };\n // ctrl + left/right will bring focus to same row, first/last cell. no vertical scrolling.\n NavigationService.prototype.onCtrlLeftOrRight = function (key, gridCell) {\n var leftKey = key === Constants.KEY_LEFT;\n var allColumns = this.columnController.getAllDisplayedColumns();\n var columnToSelect = leftKey ? allColumns[0] : _.last(allColumns);\n this.navigateTo(gridCell.rowIndex, null, columnToSelect, gridCell.rowIndex, columnToSelect);\n };\n // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n // same cell into view (which means either scroll all the way up, or all the way down).\n NavigationService.prototype.onHomeOrEndKey = function (key) {\n var homeKey = key === Constants.KEY_PAGE_HOME;\n var allColumns = this.columnController.getAllDisplayedColumns();\n var columnToSelect = homeKey ? allColumns[0] : _.last(allColumns);\n var rowIndexToScrollTo = homeKey ? 0 : this.paginationProxy.getPageLastRow();\n this.navigateTo(rowIndexToScrollTo, null, columnToSelect, rowIndexToScrollTo, columnToSelect);\n };\n __decorate$1s([\n Autowired('mouseEventService')\n ], NavigationService.prototype, \"mouseEventService\", void 0);\n __decorate$1s([\n Autowired('paginationProxy')\n ], NavigationService.prototype, \"paginationProxy\", void 0);\n __decorate$1s([\n Autowired('focusController')\n ], NavigationService.prototype, \"focusController\", void 0);\n __decorate$1s([\n Autowired('animationFrameService')\n ], NavigationService.prototype, \"animationFrameService\", void 0);\n __decorate$1s([\n Optional('rangeController')\n ], NavigationService.prototype, \"rangeController\", void 0);\n __decorate$1s([\n Autowired('columnController')\n ], NavigationService.prototype, \"columnController\", void 0);\n __decorate$1s([\n Autowired('gridOptionsWrapper')\n ], NavigationService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1s([\n PostConstruct\n ], NavigationService.prototype, \"init\", null);\n NavigationService = __decorate$1s([\n Bean('navigationService')\n ], NavigationService);\n return NavigationService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$U = (undefined && undefined.__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})();\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar MaxDivHeightScaler = /** @class */ (function (_super) {\n __extends$U(MaxDivHeightScaler, _super);\n function MaxDivHeightScaler() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n MaxDivHeightScaler.prototype.postConstruct = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.scrollBarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.maxDivHeight = _.getMaxDivHeight();\n };\n MaxDivHeightScaler.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n MaxDivHeightScaler.prototype.isScaling = function () {\n return this.scaling;\n };\n MaxDivHeightScaler.prototype.getOffset = function () {\n return this.offset;\n };\n MaxDivHeightScaler.prototype.updateOffset = function () {\n if (!this.scaling) {\n return;\n }\n var newScrollY = this.gridPanel.getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n MaxDivHeightScaler.prototype.calculateOffset = function () {\n this.uiContainerHeight = this.maxDivHeight;\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n this.setOffset(scrollPercent * this.pixelsToShave);\n };\n MaxDivHeightScaler.prototype.clearOffset = function () {\n this.uiContainerHeight = this.modelHeight;\n this.pixelsToShave = 0;\n this.setOffset(0);\n };\n MaxDivHeightScaler.prototype.setOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.offset === newOffsetFloor) {\n return;\n }\n this.offset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n MaxDivHeightScaler.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.scaling = this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;\n if (this.scaling) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n MaxDivHeightScaler.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n MaxDivHeightScaler.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.offset;\n };\n MaxDivHeightScaler.prototype.getUiBodyHeight = function () {\n var pos = this.gridPanel.getVScrollPosition();\n return pos.bottom - pos.top;\n };\n MaxDivHeightScaler.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate$1t([\n Autowired('eventService')\n ], MaxDivHeightScaler.prototype, \"eventService\", void 0);\n __decorate$1t([\n Autowired('gridOptionsWrapper')\n ], MaxDivHeightScaler.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1t([\n PostConstruct\n ], MaxDivHeightScaler.prototype, \"postConstruct\", null);\n MaxDivHeightScaler = __decorate$1t([\n Bean('maxDivHeightScaler')\n ], MaxDivHeightScaler);\n return MaxDivHeightScaler;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectableService = /** @class */ (function () {\n function SelectableService() {\n }\n SelectableService.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n };\n SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (rowNode) { return rowNode.childrenAfterGroup; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.updateSelectableAfterFiltering = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (rowNode) { return rowNode.childrenAfterFilter; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {\n var _this = this;\n children.forEach(function (child) {\n if (!child.group) {\n return;\n } // only interested in groups\n if (child.hasChildren()) {\n _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);\n }\n var rowSelectable;\n if (_this.groupSelectsChildren) {\n // have this group selectable if at least one direct child is selectable\n var firstSelectable = _.find(nextChildrenFunc(child), 'selectable', true);\n rowSelectable = _.exists(firstSelectable);\n }\n else {\n // directly retrieve selectable value from user callback\n rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;\n }\n child.setRowSelectable(rowSelectable);\n });\n };\n __decorate$1u([\n Autowired('gridOptionsWrapper')\n ], SelectableService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1u([\n PostConstruct\n ], SelectableService.prototype, \"init\", null);\n SelectableService = __decorate$1u([\n Bean('selectableService')\n ], SelectableService);\n return SelectableService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AutoHeightCalculator = /** @class */ (function () {\n function AutoHeightCalculator() {\n }\n AutoHeightCalculator.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n };\n AutoHeightCalculator.prototype.getPreferredHeightForRow = function (rowNode) {\n var _this = this;\n if (!this.eDummyContainer) {\n this.eDummyContainer = document.createElement('div');\n // so any styles on row also get applied in dummy, otherwise\n // the content in dummy may differ to the real\n _.addCssClass(this.eDummyContainer, 'ag-row ag-row-no-focus');\n }\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.gridPanel.getCenterContainer();\n eBodyContainer.appendChild(this.eDummyContainer);\n var cellComps = [];\n var autoRowHeightCols = this.columnController.getAllAutoRowHeightCols();\n var visibleAutoRowHeightCols = autoRowHeightCols.filter(function (col) { return col.isVisible(); });\n visibleAutoRowHeightCols.forEach(function (col) {\n var cellComp = new CellComp(_this.$scope, _this.beans, col, rowNode, null, true, false);\n cellComp.setParentRow(_this.eDummyContainer);\n cellComps.push(cellComp);\n });\n var template = cellComps.map(function (cellComp) { return cellComp.getCreateTemplate(); }).join(' ');\n this.eDummyContainer.innerHTML = template;\n // this gets any cellComps that are using components to put the components in\n cellComps.forEach(function (cellComp) { return cellComp.afterAttached(); });\n // we should be able to just take the height of the row at this point, however\n // the row isn't expanding to cover the cell heights, i don't know why, i couldn't\n // figure it out so instead looking at the individual cells instead\n var maxCellHeight = 0;\n for (var i = 0; i < this.eDummyContainer.children.length; i++) {\n var child = this.eDummyContainer.children[i];\n if (child.offsetHeight > maxCellHeight) {\n maxCellHeight = child.offsetHeight;\n }\n }\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(this.eDummyContainer);\n cellComps.forEach(function (cellComp) {\n // dunno why we need to detach first, doing it here to be consistent with code in RowComp\n cellComp.detach();\n cellComp.destroy();\n });\n // in case anything left over from last time\n _.clearElement(this.eDummyContainer);\n return maxCellHeight;\n };\n __decorate$1v([\n Autowired('beans')\n ], AutoHeightCalculator.prototype, \"beans\", void 0);\n __decorate$1v([\n Autowired(\"$scope\")\n ], AutoHeightCalculator.prototype, \"$scope\", void 0);\n __decorate$1v([\n Autowired(\"columnController\")\n ], AutoHeightCalculator.prototype, \"columnController\", void 0);\n AutoHeightCalculator = __decorate$1v([\n Bean('autoHeightCalculator')\n ], AutoHeightCalculator);\n return AutoHeightCalculator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$V = (undefined && undefined.__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})();\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationComp = /** @class */ (function (_super) {\n __extends$V(PaginationComp, _super);\n function PaginationComp() {\n var _this = _super.call(this) || this;\n _this.previousAndFirstButtonsDisabled = false;\n _this.nextButtonDisabled = false;\n _this.lastButtonDisabled = false;\n return _this;\n }\n PaginationComp.prototype.postConstruct = function () {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n this.setTemplate(this.getTemplate());\n this.btFirst.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsWrapper));\n this.btPrevious.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsWrapper));\n this.btNext.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsWrapper));\n this.btLast.insertAdjacentElement('afterbegin', _.createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsWrapper));\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n this.serverSideRowModel = this.rowModel;\n }\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.setDisplayed(false);\n return;\n }\n this.addDestroyableEventListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addDestroyableEventListener(this.btFirst, 'click', this.onBtFirst.bind(this));\n this.addDestroyableEventListener(this.btLast, 'click', this.onBtLast.bind(this));\n this.addDestroyableEventListener(this.btNext, 'click', this.onBtNext.bind(this));\n this.addDestroyableEventListener(this.btPrevious, 'click', this.onBtPrevious.bind(this));\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n if (userFunc) {\n return userFunc({ value: value });\n }\n else {\n return _.formatNumberCommas(value);\n }\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('first', 'First');\n var strPrevious = localeTextFunc('previous', 'Previous');\n var strNext = localeTextFunc('next', 'Next');\n var strLast = localeTextFunc('last', 'Last');\n return \"
\\n \\n \\n \" + strTo + \"\\n \\n \" + strOf + \"\\n \\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n \" + strPage + \"\\n \\n \" + strOf + \"\\n \\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\";\n };\n PaginationComp.prototype.onBtNext = function () {\n if (!this.nextButtonDisabled) {\n this.paginationProxy.goToNextPage();\n }\n };\n PaginationComp.prototype.onBtPrevious = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToPreviousPage();\n }\n };\n PaginationComp.prototype.onBtFirst = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToFirstPage();\n }\n };\n PaginationComp.prototype.onBtLast = function () {\n if (!this.lastButtonDisabled) {\n this.paginationProxy.goToLastPage();\n }\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n this.previousAndFirstButtonsDisabled = currentPage === 0;\n _.addOrRemoveCssClass(this.btPrevious, 'ag-disabled', this.previousAndFirstButtonsDisabled);\n _.addOrRemoveCssClass(this.btFirst, 'ag-disabled', this.previousAndFirstButtonsDisabled);\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n _.addOrRemoveCssClass(this.btNext, 'ag-disabled', this.nextButtonDisabled);\n this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n _.addOrRemoveCssClass(this.btLast, 'ag-disabled', this.lastButtonDisabled);\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = 0;\n endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n if (this.serverSideRowModel && this.serverSideRowModel.isLoading()) {\n this.lbLastRowOnPage.innerHTML = '?';\n }\n else {\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n }\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n __decorate$1w([\n Autowired('gridOptionsWrapper')\n ], PaginationComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1w([\n Autowired('eventService')\n ], PaginationComp.prototype, \"eventService\", void 0);\n __decorate$1w([\n Autowired('paginationProxy')\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate$1w([\n Autowired('rowRenderer')\n ], PaginationComp.prototype, \"rowRenderer\", void 0);\n __decorate$1w([\n Autowired('rowModel')\n ], PaginationComp.prototype, \"rowModel\", void 0);\n __decorate$1w([\n RefSelector('btFirst')\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate$1w([\n RefSelector('btPrevious')\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate$1w([\n RefSelector('btNext')\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate$1w([\n RefSelector('btLast')\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate$1w([\n RefSelector('lbRecordCount')\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate$1w([\n RefSelector('lbFirstRowOnPage')\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate$1w([\n RefSelector('lbLastRowOnPage')\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate$1w([\n RefSelector('eSummaryPanel')\n ], PaginationComp.prototype, \"eSummaryPanel\", void 0);\n __decorate$1w([\n RefSelector('lbCurrent')\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate$1w([\n RefSelector('lbTotal')\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate$1w([\n PostConstruct\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ResizeObserverService = /** @class */ (function () {\n function ResizeObserverService() {\n }\n ResizeObserverService.prototype.observeResize = function (element, callback, debounceDelay) {\n if (debounceDelay === void 0) { debounceDelay = 50; }\n // put in variable, so available to usePolyfill() function below\n var frameworkFactory = this.frameworkOverrides;\n // this gets fired too often and might cause some relayout issues\n // so we add a debounce to the callback here to avoid the flashing effect.\n var debouncedCallback = _.debounce(callback, debounceDelay);\n var useBrowserResizeObserver = function () {\n var resizeObserver = new window.ResizeObserver(debouncedCallback);\n resizeObserver.observe(element);\n return function () { return resizeObserver.disconnect(); };\n };\n var usePolyfill = function () {\n // initialise to the current width and height, so first call will have no changes\n var widthLastTime = _.offsetWidth(element);\n var heightLastTime = _.offsetHeight(element);\n // when finished, this gets turned to false.\n var running = true;\n var periodicallyCheckWidthAndHeight = function () {\n if (running) {\n var newWidth = _.offsetWidth(element);\n var newHeight = _.offsetHeight(element);\n var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;\n if (changed) {\n widthLastTime = newWidth;\n heightLastTime = newHeight;\n callback();\n }\n frameworkFactory.setTimeout(periodicallyCheckWidthAndHeight, debounceDelay);\n }\n };\n periodicallyCheckWidthAndHeight();\n // the callback function we return sets running to false\n return function () { return running = false; };\n };\n var suppressResize = this.gridOptionsWrapper.isSuppressBrowserResizeObserver();\n var resizeObserverExists = !!window.ResizeObserver;\n if (resizeObserverExists && !suppressResize) {\n return useBrowserResizeObserver();\n }\n else {\n return usePolyfill();\n }\n };\n __decorate$1x([\n Autowired('gridOptionsWrapper')\n ], ResizeObserverService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1x([\n Autowired('frameworkOverrides')\n ], ResizeObserverService.prototype, \"frameworkOverrides\", void 0);\n ResizeObserverService = __decorate$1x([\n Bean('resizeObserverService')\n ], ResizeObserverService);\n return ResizeObserverService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$W = (undefined && undefined.__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})();\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingType;\n(function (LoadingType) {\n LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nvar OverlayWrapperComponent = /** @class */ (function (_super) {\n __extends$W(OverlayWrapperComponent, _super);\n function OverlayWrapperComponent() {\n var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;\n _this.inProgress = false;\n _this.destroyRequested = false;\n return _this;\n }\n OverlayWrapperComponent.prototype.postConstruct = function () {\n this.gridOptionsWrapper.addLayoutElement(this.eOverlayWrapper);\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {\n _.addOrRemoveCssClass(this.eOverlayWrapper, 'ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);\n _.addOrRemoveCssClass(this.eOverlayWrapper, 'ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showLoadingOverlay = function () {\n var workItem = this.userComponentFactory.newLoadingOverlayComponent({\n api: this.gridOptionsWrapper.getApi()\n });\n this.showOverlay(workItem, LoadingType.Loading);\n };\n OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {\n var workItem = this.userComponentFactory.newNoRowsOverlayComponent({\n api: this.gridOptionsWrapper.getApi()\n });\n this.showOverlay(workItem, LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showOverlay = function (workItem, type) {\n var _this = this;\n if (this.inProgress) {\n return;\n }\n this.setWrapperTypeClass(type);\n this.destroyActiveOverlay();\n this.inProgress = true;\n workItem.then(function (comp) {\n _this.inProgress = false;\n _this.eOverlayWrapper.appendChild(comp.getGui());\n _this.activeOverlay = comp;\n if (_this.destroyRequested) {\n _this.destroyRequested = false;\n _this.destroyActiveOverlay();\n }\n });\n this.setDisplayed(true);\n };\n OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {\n if (this.inProgress) {\n this.destroyRequested = true;\n return;\n }\n if (!this.activeOverlay) {\n return;\n }\n if (this.activeOverlay.destroy) {\n this.activeOverlay.destroy();\n }\n this.activeOverlay = undefined;\n _.clearElement(this.eOverlayWrapper);\n };\n OverlayWrapperComponent.prototype.hideOverlay = function () {\n this.destroyActiveOverlay();\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.destroy = function () {\n this.destroyActiveOverlay();\n _super.prototype.destroy.call(this);\n };\n // wrapping in outer div, and wrapper, is needed to center the loading icon\n // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/\n OverlayWrapperComponent.TEMPLATE = \"\\n
\\n
\\n
\\n
\\n
\";\n __decorate$1y([\n Autowired('gridOptionsWrapper')\n ], OverlayWrapperComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1y([\n Autowired('userComponentFactory')\n ], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n __decorate$1y([\n RefSelector('eOverlayWrapper')\n ], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n __decorate$1y([\n PostConstruct\n ], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n return OverlayWrapperComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$X = (undefined && undefined.__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})();\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgGroupComponent = /** @class */ (function (_super) {\n __extends$X(AgGroupComponent, _super);\n function AgGroupComponent(params) {\n if (params === void 0) { params = {}; }\n var _this = _super.call(this, AgGroupComponent.getTemplate(params)) || this;\n _this.suppressEnabledCheckbox = true;\n _this.suppressOpenCloseIcons = false;\n var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;\n _this.title = title;\n _this.cssIdentifier = params.cssIdentifier || 'default';\n _this.enabled = enabled != null ? enabled : true;\n _this.items = items || [];\n _this.alignItems = params.alignItems || 'center';\n if (suppressEnabledCheckbox != null) {\n _this.suppressEnabledCheckbox = suppressEnabledCheckbox;\n }\n if (suppressOpenCloseIcons != null) {\n _this.suppressOpenCloseIcons = suppressOpenCloseIcons;\n }\n return _this;\n }\n AgGroupComponent.getTemplate = function (params) {\n var cssIdentifier = params.cssIdentifier || 'default';\n var direction = params.direction || 'vertical';\n return \"
\\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n
\";\n };\n AgGroupComponent.prototype.postConstruct = function () {\n if (this.items.length) {\n var initialItems = this.items;\n this.items = [];\n this.addItems(initialItems);\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));\n if (this.title) {\n this.setTitle(this.title);\n }\n if (this.enabled) {\n this.setEnabled(this.enabled);\n }\n this.setAlignItems(this.alignItems);\n this.hideEnabledCheckbox(this.suppressEnabledCheckbox);\n this.hideOpenCloseIcons(this.suppressOpenCloseIcons);\n this.setupExpandContract();\n this.refreshChildDisplay();\n };\n AgGroupComponent.prototype.setupExpandContract = function () {\n var _this = this;\n this.eGroupClosedIcon.appendChild(_.createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('columnSelectOpen', this.gridOptionsWrapper, null));\n this.addDestroyableEventListener(this.eTitleBar, 'click', function () { return _this.toggleGroupExpand(); });\n };\n AgGroupComponent.prototype.refreshChildDisplay = function () {\n var showIcon = !this.suppressOpenCloseIcons;\n _.setDisplayed(this.eGroupClosedIcon, showIcon && !this.expanded);\n _.setDisplayed(this.eGroupOpenedIcon, showIcon && this.expanded);\n _.setDisplayed(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);\n };\n AgGroupComponent.prototype.isExpanded = function () {\n return this.expanded;\n };\n AgGroupComponent.prototype.setAlignItems = function (alignment) {\n var eGui = this.getGui();\n if (this.alignItems !== alignment) {\n _.removeCssClass(eGui, \"ag-group-item-alignment-\" + this.alignItems);\n }\n this.alignItems = alignment;\n var newCls = \"ag-group-item-alignment-\" + this.alignItems;\n _.addCssClass(eGui, newCls);\n return this;\n };\n AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {\n if (this.suppressOpenCloseIcons) {\n this.expanded = true;\n this.refreshChildDisplay();\n _.setDisplayed(this.eContainer, true);\n return this;\n }\n expanded = expanded != null ? expanded : !this.expanded;\n if (this.expanded === expanded) {\n return this;\n }\n this.expanded = expanded;\n this.refreshChildDisplay();\n _.setDisplayed(this.eContainer, expanded);\n if (this.expanded) {\n var event_1 = {\n type: 'expanded',\n };\n this.dispatchEvent(event_1);\n }\n else {\n var event_2 = {\n type: 'collapsed',\n };\n this.dispatchEvent(event_2);\n }\n return this;\n };\n AgGroupComponent.prototype.addItems = function (items) {\n var _this = this;\n items.forEach(function (item) { return _this.addItem(item); });\n };\n AgGroupComponent.prototype.addItem = function (item) {\n var container = this.eContainer;\n var el = item instanceof Component ? item.getGui() : item;\n _.addCssClass(el, 'ag-group-item');\n _.addCssClass(el, \"ag-\" + this.cssIdentifier + \"-group-item\");\n container.appendChild(el);\n this.items.push(el);\n };\n AgGroupComponent.prototype.hideItem = function (hide, index) {\n var itemToHide = this.items[index];\n _.addOrRemoveCssClass(itemToHide, 'ag-hidden', hide);\n };\n AgGroupComponent.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n return this;\n };\n AgGroupComponent.prototype.addCssClassToTitleBar = function (cssClass) {\n _.addCssClass(this.eTitleBar, cssClass);\n };\n AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {\n this.enabled = enabled;\n this.refreshDisabledStyles();\n this.toggleGroupExpand(enabled);\n if (!skipToggle) {\n this.cbGroupEnabled.setValue(enabled);\n }\n return this;\n };\n AgGroupComponent.prototype.isEnabled = function () {\n return this.enabled;\n };\n AgGroupComponent.prototype.onEnableChange = function (callbackFn) {\n var _this = this;\n this.cbGroupEnabled.onValueChange(function (newSelection) {\n _this.setEnabled(newSelection, true);\n callbackFn(newSelection);\n });\n return this;\n };\n AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {\n this.suppressEnabledCheckbox = hide;\n this.refreshChildDisplay();\n this.refreshDisabledStyles();\n return this;\n };\n AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {\n this.suppressOpenCloseIcons = hide;\n if (hide) {\n this.toggleGroupExpand(true);\n }\n return this;\n };\n AgGroupComponent.prototype.refreshDisabledStyles = function () {\n _.addOrRemoveCssClass(this.getGui(), 'ag-disabled', !this.enabled);\n _.addOrRemoveCssClass(this.eTitleBar, 'ag-disabled-group-title-bar', this.suppressEnabledCheckbox && !this.enabled);\n _.addOrRemoveCssClass(this.eContainer, 'ag-disabled-group-container', !this.enabled);\n };\n __decorate$1z([\n Autowired('gridOptionsWrapper')\n ], AgGroupComponent.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1z([\n RefSelector('eTitleBar')\n ], AgGroupComponent.prototype, \"eTitleBar\", void 0);\n __decorate$1z([\n RefSelector('eGroupOpenedIcon')\n ], AgGroupComponent.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate$1z([\n RefSelector('eGroupClosedIcon')\n ], AgGroupComponent.prototype, \"eGroupClosedIcon\", void 0);\n __decorate$1z([\n RefSelector('eToolbar')\n ], AgGroupComponent.prototype, \"eToolbar\", void 0);\n __decorate$1z([\n RefSelector('cbGroupEnabled')\n ], AgGroupComponent.prototype, \"cbGroupEnabled\", void 0);\n __decorate$1z([\n RefSelector('eTitle')\n ], AgGroupComponent.prototype, \"eTitle\", void 0);\n __decorate$1z([\n RefSelector('eContainer')\n ], AgGroupComponent.prototype, \"eContainer\", void 0);\n __decorate$1z([\n PostConstruct\n ], AgGroupComponent.prototype, \"postConstruct\", null);\n return AgGroupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Y = (undefined && undefined.__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})();\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPanel = /** @class */ (function (_super) {\n __extends$Y(AgPanel, _super);\n function AgPanel(config) {\n var _this = _super.call(this, AgPanel.getTemplate(config)) || this;\n _this.closable = true;\n _this.positioned = false;\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.position = {\n x: 0,\n y: 0\n };\n _this.size = {\n width: undefined,\n height: undefined\n };\n _this.config = config;\n return _this;\n }\n AgPanel.getTemplate = function (config) {\n var cssIdentifier = (config && config.cssIdentifier) || 'default';\n return \"
\\n
\\n \\n
\\n
\\n
\\n
\";\n };\n AgPanel.prototype.postConstruct = function () {\n var _this = this;\n var _a = this.config, component = _a.component, closable = _a.closable, hideTitleBar = _a.hideTitleBar, title = _a.title, minWidth = _a.minWidth, width = _a.width, minHeight = _a.minHeight, height = _a.height, centered = _a.centered, x = _a.x, y = _a.y;\n var eGui = this.getGui();\n if (component) {\n this.setBodyComponent(component);\n }\n if (!hideTitleBar) {\n if (title) {\n this.setTitle(title);\n }\n this.setClosable(closable != null ? closable : this.closable);\n }\n else {\n _.addCssClass(this.eTitleBar, 'ag-hidden');\n }\n this.addDestroyableEventListener(this.eTitleBar, 'mousedown', function (e) {\n if (eGui.contains(e.relatedTarget) ||\n eGui.contains(document.activeElement) ||\n _this.eTitleBarButtons.contains(e.target)) {\n e.preventDefault();\n return;\n }\n var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n if (this.positioned) {\n return;\n }\n this.minHeight = minHeight != null ? minHeight : 250;\n this.minWidth = minWidth != null ? minWidth : 250;\n this.popupParent = this.popupService.getPopupParent();\n if (width) {\n this.setWidth(width);\n }\n if (height) {\n this.setHeight(height);\n }\n if (this.renderComponent) {\n this.renderComponent();\n }\n if (!width || !height) {\n this.refreshSize();\n }\n if (centered) {\n this.center();\n }\n else if (x || y) {\n this.offsetElement(x, y);\n }\n this.positioned = true;\n this.eContentWrapper.style.height = '0';\n };\n AgPanel.prototype.renderComponent = function () {\n var _this = this;\n var eGui = this.getGui();\n eGui.focus();\n this.close = function () {\n eGui.parentElement.removeChild(eGui);\n _this.destroy();\n };\n };\n AgPanel.prototype.updateDragStartPosition = function (x, y) {\n this.dragStartPosition = { x: x, y: y };\n };\n AgPanel.prototype.calculateMouseMovement = function (params) {\n var parentRect = this.popupParent.getBoundingClientRect();\n var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;\n var movementX = e.clientX - this.dragStartPosition.x;\n var movementY = e.clientY - this.dragStartPosition.y;\n var width = this.getWidth();\n var height = this.getHeight();\n // skip if cursor is outside of popupParent horizontally\n var skipX = (parentRect.left >= e.clientX && this.position.x <= 0 ||\n parentRect.right <= e.clientX && parentRect.right <= this.position.x + parentRect.left + width);\n if (!skipX) {\n if (isLeft) {\n skipX = (\n // skip if we are moving to the left and the cursor\n // is positioned to the right of the left side anchor\n (movementX < 0 && e.clientX > this.position.x + parentRect.left) ||\n // skip if we are moving to the right and the cursor\n // is positioned to the left of the dialog\n (movementX > 0 && e.clientX < this.position.x + parentRect.left));\n }\n else {\n if (anywhereWithin) {\n // if anywhereWithin is true, we allow to move\n // as long as the cursor is within the dialog\n skipX = ((movementX < 0 && e.clientX > this.position.x + parentRect.left + width) ||\n (movementX > 0 && e.clientX < this.position.x + parentRect.left));\n }\n else {\n skipX = (\n // if the movement is bound to the right side of the dialog\n // we skip if we are moving to the left and the cursor\n // is to the right of the dialog\n (movementX < 0 && e.clientX > this.position.x + parentRect.left + width) ||\n // or skip if we are moving to the right and the cursor\n // is to the left of the right side anchor\n (movementX > 0 && e.clientX < this.position.x + parentRect.left + width));\n }\n }\n }\n movementX = skipX ? 0 : movementX;\n var skipY = (\n // skip if cursor is outside of popupParent vertically\n parentRect.top >= e.clientY && this.position.y <= 0 ||\n parentRect.bottom <= e.clientY && parentRect.bottom <= this.position.y + parentRect.top + height ||\n isTop && (\n // skip if we are moving to towards top and the cursor is\n // below the top anchor + topBuffer\n // note: topBuffer is used when moving the dialog using the title bar\n (movementY < 0 && e.clientY > this.position.y + parentRect.top + (topBuffer || 0)) ||\n // skip if we are moving to the bottom and the cursor is\n // above the top anchor\n (movementY > 0 && e.clientY < this.position.y + parentRect.top)) ||\n // we are anchored to the bottom of the dialog\n !isTop && (\n // skip if we are moving towards the top and the cursor\n // is below the bottom anchor\n (movementY < 0 && e.clientY > this.position.y + parentRect.top + height) ||\n // skip if we are moving towards the bottom and the cursor\n // is above the bottom anchor\n (movementY > 0 && e.clientY < this.position.y + parentRect.top + height)));\n movementY = skipY ? 0 : movementY;\n return { movementX: movementX, movementY: movementY };\n };\n AgPanel.prototype.refreshSize = function () {\n var _a = this.size, width = _a.width, height = _a.height;\n if (!width) {\n this.setWidth(this.getGui().offsetWidth);\n }\n if (!height) {\n this.setHeight(this.getGui().offsetHeight);\n }\n };\n AgPanel.prototype.offsetElement = function (x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n var ePopup = this.getGui();\n this.popupService.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n minWidth: this.minWidth,\n minHeight: this.minHeight,\n keepWithinBounds: true\n });\n this.position.x = parseInt(ePopup.style.left, 10);\n this.position.y = parseInt(ePopup.style.top, 10);\n };\n AgPanel.prototype.getHeight = function () {\n return this.size.height;\n };\n AgPanel.prototype.setHeight = function (height) {\n var eGui = this.getGui();\n var isPercent = false;\n if (typeof height === 'string' && height.indexOf('%') !== -1) {\n _.setFixedHeight(eGui, height);\n height = _.getAbsoluteHeight(eGui);\n isPercent = true;\n }\n else {\n height = Math.max(this.minHeight, height);\n var offsetParent = eGui.offsetParent;\n if (offsetParent && offsetParent.clientHeight && (height + this.position.y > offsetParent.clientHeight)) {\n height = offsetParent.clientHeight - this.position.y;\n }\n }\n if (this.size.height === height) {\n return;\n }\n this.size.height = height;\n if (!isPercent) {\n _.setFixedHeight(eGui, height);\n }\n else {\n eGui.style.maxHeight = 'unset';\n eGui.style.minHeight = 'unset';\n }\n };\n AgPanel.prototype.getWidth = function () {\n return this.size.width;\n };\n AgPanel.prototype.setWidth = function (width) {\n var eGui = this.getGui();\n var isPercent = false;\n if (typeof width === 'string' && width.indexOf('%') !== -1) {\n _.setFixedWidth(eGui, width);\n width = _.getAbsoluteWidth(eGui);\n isPercent = true;\n }\n else {\n width = Math.max(this.minWidth, width);\n var offsetParent = eGui.offsetParent;\n if (offsetParent && offsetParent.clientWidth && (width + this.position.x > offsetParent.clientWidth)) {\n width = offsetParent.clientWidth - this.position.x;\n }\n }\n if (this.size.width === width) {\n return;\n }\n this.size.width = width;\n if (!isPercent) {\n _.setFixedWidth(eGui, width);\n }\n else {\n eGui.style.maxWidth = 'unset';\n eGui.style.minWidth = 'unset';\n }\n };\n AgPanel.prototype.center = function () {\n var eGui = this.getGui();\n var x = (eGui.offsetParent.clientWidth / 2) - (this.getWidth() / 2);\n var y = (eGui.offsetParent.clientHeight / 2) - (this.getHeight() / 2);\n this.offsetElement(x, y);\n };\n AgPanel.prototype.setClosable = function (closable) {\n if (closable !== this.closable) {\n this.closable = closable;\n }\n if (closable) {\n var closeButtonComp = this.closeButtonComp = new Component(AgPanel.CLOSE_BTN_TEMPLATE);\n this.getContext().wireBean(closeButtonComp);\n var eGui = closeButtonComp.getGui();\n eGui.appendChild(_.addCssClass(_.createIconNoSpan('close', this.gridOptionsWrapper), 'ag-panel-title-bar-button-icon'));\n this.addTitleBarButton(closeButtonComp);\n closeButtonComp.addDestroyableEventListener(eGui, 'click', this.onBtClose.bind(this));\n }\n else if (this.closeButtonComp) {\n var eGui = this.closeButtonComp.getGui();\n eGui.parentElement.removeChild(eGui);\n this.closeButtonComp.destroy();\n this.closeButtonComp = undefined;\n }\n };\n AgPanel.prototype.setBodyComponent = function (bodyComponent) {\n bodyComponent.setParentComponent(this);\n this.eContentWrapper.appendChild(bodyComponent.getGui());\n };\n AgPanel.prototype.addTitleBarButton = function (button, position) {\n var eTitleBarButtons = this.eTitleBarButtons;\n var buttons = eTitleBarButtons.children;\n var len = buttons.length;\n if (position == null) {\n position = len;\n }\n position = Math.max(0, Math.min(position, len));\n var eGui = button.getGui();\n _.addCssClass(eGui, 'ag-panel-title-bar-button');\n if (position === 0) {\n eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);\n }\n else if (position === len) {\n eTitleBarButtons.insertAdjacentElement('beforeend', eGui);\n }\n else {\n buttons[position - 1].insertAdjacentElement('afterend', eGui);\n }\n button.setParentComponent(this);\n };\n AgPanel.prototype.getBodyHeight = function () {\n return _.getInnerHeight(this.eContentWrapper);\n };\n AgPanel.prototype.getBodyWidth = function () {\n return _.getInnerWidth(this.eContentWrapper);\n };\n AgPanel.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n };\n // called when user hits the 'x' in the top right\n AgPanel.prototype.onBtClose = function () {\n this.close();\n };\n AgPanel.prototype.destroy = function () {\n if (this.closeButtonComp) {\n this.closeButtonComp.destroy();\n this.closeButtonComp = undefined;\n }\n var eGui = this.getGui();\n if (eGui && eGui.offsetParent) {\n this.close();\n }\n _super.prototype.destroy.call(this);\n };\n AgPanel.CLOSE_BTN_TEMPLATE = \"
\";\n __decorate$1A([\n Autowired('popupService')\n ], AgPanel.prototype, \"popupService\", void 0);\n __decorate$1A([\n Autowired('gridOptionsWrapper')\n ], AgPanel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1A([\n RefSelector('eContentWrapper')\n ], AgPanel.prototype, \"eContentWrapper\", void 0);\n __decorate$1A([\n RefSelector('eTitleBar')\n ], AgPanel.prototype, \"eTitleBar\", void 0);\n __decorate$1A([\n RefSelector('eTitleBarButtons')\n ], AgPanel.prototype, \"eTitleBarButtons\", void 0);\n __decorate$1A([\n RefSelector('eTitle')\n ], AgPanel.prototype, \"eTitle\", void 0);\n __decorate$1A([\n PostConstruct\n ], AgPanel.prototype, \"postConstruct\", null);\n return AgPanel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Z = (undefined && undefined.__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})();\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgDialog = /** @class */ (function (_super) {\n __extends$Z(AgDialog, _super);\n function AgDialog(config) {\n var _this = _super.call(this, config) || this;\n _this.RESIZE_TEMPLATE = \"\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \";\n _this.MAXIMIZE_BTN_TEMPLATE = \"
\";\n _this.resizable = {};\n _this.movable = false;\n _this.isMoving = false;\n _this.isMaximizable = false;\n _this.isMaximized = false;\n _this.maximizeListeners = [];\n _this.resizeListenerDestroy = null;\n _this.isResizing = false;\n _this.lastPosition = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return _this;\n }\n AgDialog.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;\n _.addCssClass(eGui, 'ag-dialog');\n this.moveElement = this.eTitleBar;\n _super.prototype.postConstruct.call(this);\n this.addDestroyableEventListener(eGui, 'focusin', function (e) {\n if (eGui.contains(e.relatedTarget)) {\n return;\n }\n _this.popupService.bringPopupToFront(eGui);\n });\n if (movable) {\n this.setMovable(movable);\n }\n if (maximizable) {\n this.setMaximizable(maximizable);\n }\n this.addResizers();\n if (resizable) {\n this.setResizable(resizable);\n }\n };\n AgDialog.prototype.renderComponent = function () {\n var eGui = this.getGui();\n var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal;\n this.close = this.popupService.addPopup(modal, eGui, true, this.destroy.bind(this), undefined, alwaysOnTop);\n eGui.focus();\n };\n AgDialog.prototype.addResizers = function () {\n var eGui = this.getGui();\n if (!eGui) {\n return;\n }\n var parser = new DOMParser();\n var resizers = parser.parseFromString(this.RESIZE_TEMPLATE, 'text/html').body;\n eGui.appendChild(resizers.firstChild);\n this.createMap();\n };\n AgDialog.prototype.createMap = function () {\n var eGui = this.getGui();\n this.resizerMap = {\n topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },\n top: { element: eGui.querySelector('[ref=eTopResizer]') },\n topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },\n right: { element: eGui.querySelector('[ref=eRightResizer]') },\n bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },\n bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },\n bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },\n left: { element: eGui.querySelector('[ref=eLeftResizer]') }\n };\n };\n AgDialog.prototype.getResizerElement = function (side) {\n return this.resizerMap[side].element;\n };\n AgDialog.prototype.onResizeStart = function (e) {\n this.isResizing = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onResize = function (e, side) {\n if (!this.isResizing) {\n return;\n }\n var isLeft = !!side.match(/left/i);\n var isRight = !!side.match(/right/i);\n var isTop = !!side.match(/top/i);\n var isBottom = !!side.match(/bottom/i);\n var isHorizontal = isLeft || isRight;\n var isVertical = isTop || isBottom;\n var _a = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _a.movementX, movementY = _a.movementY;\n var offsetLeft = 0;\n var offsetTop = 0;\n if (isHorizontal && movementX) {\n var direction = isLeft ? -1 : 1;\n var oldWidth = this.getWidth();\n var newWidth = oldWidth + (movementX * direction);\n var skipWidth = false;\n if (isLeft) {\n offsetLeft = oldWidth - newWidth;\n if (this.position.x + offsetLeft <= 0 || newWidth <= this.minWidth) {\n skipWidth = true;\n offsetLeft = 0;\n }\n }\n if (!skipWidth) {\n this.setWidth(newWidth);\n }\n }\n if (isVertical && movementY) {\n var direction = isTop ? -1 : 1;\n var oldHeight = this.getHeight();\n var newHeight = oldHeight + (movementY * direction);\n var skipHeight = false;\n if (isTop) {\n offsetTop = oldHeight - newHeight;\n if (this.position.y + offsetTop <= 0 || newHeight <= this.minHeight) {\n skipHeight = true;\n offsetTop = 0;\n }\n }\n if (!skipHeight) {\n this.setHeight(newHeight);\n }\n }\n this.updateDragStartPosition(e.clientX, e.clientY);\n if (offsetLeft || offsetTop) {\n this.offsetElement(this.position.x + offsetLeft, this.position.y + offsetTop);\n }\n };\n AgDialog.prototype.onResizeEnd = function () {\n this.isResizing = false;\n var params = {\n type: 'resize',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.dispatchEvent(params);\n };\n AgDialog.prototype.onMoveStart = function (e) {\n this.isMoving = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onMove = function (e) {\n if (!this.isMoving) {\n return;\n }\n var _a = this.position, x = _a.x, y = _a.y;\n var _b = this.calculateMouseMovement({\n e: e,\n isTop: true,\n anywhereWithin: true,\n topBuffer: this.getHeight() - this.getBodyHeight()\n }), movementX = _b.movementX, movementY = _b.movementY;\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n AgDialog.prototype.onMoveEnd = function () {\n this.isMoving = false;\n };\n AgDialog.prototype.toggleMaximize = function () {\n if (this.isMaximized) {\n var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n this.setWidth(width);\n this.setHeight(height);\n this.offsetElement(x, y);\n }\n else {\n this.lastPosition.width = this.getWidth();\n this.lastPosition.height = this.getHeight();\n this.lastPosition.x = this.position.x;\n this.lastPosition.y = this.position.y;\n this.offsetElement(0, 0);\n this.setHeight('100%');\n this.setWidth('100%');\n }\n this.isMaximized = !this.isMaximized;\n this.refreshMaximizeIcon();\n };\n AgDialog.prototype.refreshMaximizeIcon = function () {\n _.addOrRemoveCssClass(this.maximizeIcon, 'ag-hidden', this.isMaximized);\n _.addOrRemoveCssClass(this.minimizeIcon, 'ag-hidden', !this.isMaximized);\n };\n AgDialog.prototype.clearMaximizebleListeners = function () {\n if (this.maximizeListeners.length) {\n this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });\n this.maximizeListeners.length = 0;\n }\n if (this.resizeListenerDestroy) {\n this.resizeListenerDestroy();\n this.resizeListenerDestroy = null;\n }\n };\n AgDialog.prototype.destroy = function () {\n this.setResizable(false);\n this.setMovable(false);\n if (this.maximizeButtonComp) {\n this.maximizeButtonComp.destroy();\n this.maximizeButtonComp = undefined;\n }\n this.clearMaximizebleListeners();\n _super.prototype.destroy.call(this);\n };\n AgDialog.prototype.setResizable = function (resizable) {\n var _this = this;\n if (typeof resizable === 'boolean') {\n resizable = {\n topLeft: resizable,\n top: resizable,\n topRight: resizable,\n right: resizable,\n bottomRight: resizable,\n bottom: resizable,\n bottomLeft: resizable,\n left: resizable\n };\n }\n Object.keys(resizable).forEach(function (side) {\n var r = resizable;\n var s = side;\n var val = !!r[s];\n var el = _this.getResizerElement(s);\n var params = _this.resizerMap[s].dragSource || {\n eElement: el,\n onDragStart: _this.onResizeStart.bind(_this),\n onDragging: function (e) { return _this.onResize(e, s); },\n onDragStop: _this.onResizeEnd.bind(_this),\n };\n if (!!_this.resizable[s] !== val || (!_this.isAlive() && !val)) {\n if (val) {\n _this.dragService.addDragSource(params);\n el.style.pointerEvents = 'all';\n }\n else {\n _this.dragService.removeDragSource(params);\n el.style.pointerEvents = 'none';\n }\n _this.resizerMap[s].dragSource = val ? params : undefined;\n }\n });\n };\n AgDialog.prototype.setMovable = function (movable) {\n if (movable === this.movable) {\n return;\n }\n this.movable = movable;\n var params = this.moveElementDragListener || {\n eElement: this.moveElement,\n onDragStart: this.onMoveStart.bind(this),\n onDragging: this.onMove.bind(this),\n onDragStop: this.onMoveEnd.bind(this)\n };\n if (movable) {\n this.dragService.addDragSource(params);\n this.moveElementDragListener = params;\n }\n else {\n this.dragService.removeDragSource(params);\n this.moveElementDragListener = undefined;\n }\n };\n AgDialog.prototype.setMaximizable = function (maximizable) {\n var _this = this;\n if (maximizable === false) {\n this.clearMaximizebleListeners();\n if (this.maximizeButtonComp) {\n this.maximizeButtonComp.destroy();\n this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;\n }\n return;\n }\n var eTitleBar = this.eTitleBar;\n if (!eTitleBar || maximizable === this.isMaximizable) {\n return;\n }\n var maximizeButtonComp = this.maximizeButtonComp = new Component(this.MAXIMIZE_BTN_TEMPLATE);\n this.getContext().wireBean(maximizeButtonComp);\n var eGui = maximizeButtonComp.getGui();\n eGui.appendChild(this.maximizeIcon = _.createIconNoSpan('maximize', this.gridOptionsWrapper));\n _.addCssClass(this.maximizeIcon, 'ag-panel-title-bar-button-icon');\n eGui.appendChild(this.minimizeIcon = _.createIconNoSpan('minimize', this.gridOptionsWrapper));\n _.addCssClass(this.minimizeIcon, 'ag-panel-title-bar-button-icon');\n _.addCssClass(this.minimizeIcon, 'ag-hidden');\n maximizeButtonComp.addDestroyableEventListener(eGui, 'click', this.toggleMaximize.bind(this));\n this.addTitleBarButton(maximizeButtonComp, 0);\n this.maximizeListeners.push(this.addDestroyableEventListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));\n this.resizeListenerDestroy = this.addDestroyableEventListener(this, 'resize', function () {\n _this.isMaximized = false;\n _this.refreshMaximizeIcon();\n });\n };\n __decorate$1B([\n Autowired('dragService')\n ], AgDialog.prototype, \"dragService\", void 0);\n return AgDialog;\n}(AgPanel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$_ = (undefined && undefined.__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})();\nvar AgInputTextField = /** @class */ (function (_super) {\n __extends$_(AgInputTextField, _super);\n function AgInputTextField(config) {\n var _this = _super.call(this) || this;\n _this.className = 'ag-text-field';\n _this.displayTag = 'input';\n _this.inputType = 'text';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config) {\n _this.config = config;\n }\n return _this;\n }\n AgInputTextField.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n if (this.eInput.value !== value) {\n this.eInput.value = value;\n }\n return ret;\n };\n return AgInputTextField;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$$ = (undefined && undefined.__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})();\nvar AgInputTextArea = /** @class */ (function (_super) {\n __extends$$(AgInputTextArea, _super);\n function AgInputTextArea(config) {\n var _this = _super.call(this) || this;\n _this.className = 'ag-text-area';\n _this.displayTag = 'textarea';\n _this.inputType = '';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config) {\n _this.config = config;\n }\n return _this;\n }\n AgInputTextArea.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n AgInputTextArea.prototype.setCols = function (cols) {\n this.eInput.cols = cols;\n return this;\n };\n AgInputTextArea.prototype.setRows = function (rows) {\n this.eInput.rows = rows;\n return this;\n };\n return AgInputTextArea;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$10 = (undefined && undefined.__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})();\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSlider = /** @class */ (function (_super) {\n __extends$10(AgSlider, _super);\n function AgSlider() {\n var _this = _super.call(this, AgSlider.TEMPLATE) || this;\n _this.labelAlignment = 'top';\n return _this;\n }\n AgSlider.prototype.init = function () {\n _.addCssClass(this.eSlider.getGui(), 'ag-slider-field');\n };\n AgSlider.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n var eventChanged = AgAbstractField.EVENT_CHANGED;\n this.addDestroyableEventListener(this.eText, eventChanged, function () {\n var textValue = parseFloat(_this.eText.getValue());\n _this.eSlider.setValue(textValue.toString(), true);\n callbackFn(textValue || 0);\n });\n this.addDestroyableEventListener(this.eSlider, eventChanged, function () {\n var sliderValue = _this.eSlider.getValue();\n _this.eText.setValue(sliderValue, true);\n callbackFn(parseFloat(sliderValue));\n });\n return this;\n };\n AgSlider.prototype.setSliderWidth = function (width) {\n this.eSlider.setWidth(width);\n return this;\n };\n AgSlider.prototype.setTextFieldWidth = function (width) {\n this.eText.setWidth(width);\n return this;\n };\n AgSlider.prototype.setMinValue = function (minValue) {\n this.eSlider.setMinValue(minValue);\n this.eText.setMin(minValue);\n return this;\n };\n AgSlider.prototype.setMaxValue = function (maxValue) {\n this.eSlider.setMaxValue(maxValue);\n this.eText.setMax(maxValue);\n return this;\n };\n AgSlider.prototype.getValue = function () {\n return this.eText.getValue();\n };\n AgSlider.prototype.setValue = function (value) {\n if (this.getValue() === value) {\n return this;\n }\n this.eText.setValue(value, true);\n this.eSlider.setValue(value, true);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n return this;\n };\n AgSlider.prototype.setStep = function (step) {\n this.eSlider.setStep(step);\n this.eText.setStep(step);\n return this;\n };\n AgSlider.TEMPLATE = \"
\\n \\n
\\n \\n \\n
\\n
\";\n __decorate$1C([\n RefSelector('eLabel')\n ], AgSlider.prototype, \"eLabel\", void 0);\n __decorate$1C([\n RefSelector('eSlider')\n ], AgSlider.prototype, \"eSlider\", void 0);\n __decorate$1C([\n RefSelector('eText')\n ], AgSlider.prototype, \"eText\", void 0);\n __decorate$1C([\n PostConstruct\n ], AgSlider.prototype, \"init\", null);\n return AgSlider;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$11 = (undefined && undefined.__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})();\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgColorPanel = /** @class */ (function (_super) {\n __extends$11(AgColorPanel, _super);\n function AgColorPanel(config) {\n var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;\n _this.H = 1; // in the [0, 1] range\n _this.S = 1; // in the [0, 1] range\n _this.B = 1; // in the [0, 1] range\n _this.A = 1; // in the [0, 1] range\n _this.isSpectrumDragging = false;\n _this.isSpectrumHueDragging = false;\n _this.isSpectrumAlphaDragging = false;\n _this.colorChanged = false;\n _this.picker = config.picker;\n return _this;\n }\n AgColorPanel.prototype.postConstruct = function () {\n var eGui = this.getGui();\n this.initRecentColors();\n this.addDestroyableEventListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));\n this.addDestroyableEventListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));\n this.addDestroyableEventListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));\n this.addDestroyableEventListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));\n this.addDestroyableEventListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));\n this.addDestroyableEventListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));\n // Listening to `mouseup` on the document on purpose. The user might release the mouse button\n // outside the UI control. When the mouse returns back to the control's area, the dragging\n // of the thumb is not expected and seen as a bug.\n this.addDestroyableEventListener(document, 'mouseup', this.onMouseUp.bind(this));\n this.addDestroyableEventListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));\n };\n AgColorPanel.prototype.refreshSpectrumRect = function () {\n return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshHueRect = function () {\n return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshAlphaRect = function () {\n return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();\n };\n AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {\n this.refreshSpectrumRect();\n this.isSpectrumDragging = true;\n this.moveDragger(e);\n };\n AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {\n if (this.isSpectrumDragging) {\n this.moveDragger(e);\n }\n };\n AgColorPanel.prototype.onSpectrumHueDown = function (e) {\n this.refreshHueRect();\n this.isSpectrumHueDragging = true;\n this.moveHueSlider(e);\n };\n AgColorPanel.prototype.onSpectrumHueMove = function (e) {\n if (this.isSpectrumHueDragging) {\n this.moveHueSlider(e);\n }\n };\n AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {\n this.refreshAlphaRect();\n this.isSpectrumAlphaDragging = true;\n this.moveAlphaSlider(e);\n };\n AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {\n if (this.isSpectrumAlphaDragging) {\n this.moveAlphaSlider(e);\n }\n };\n AgColorPanel.prototype.onMouseUp = function () {\n this.isSpectrumDragging = false;\n this.isSpectrumHueDragging = false;\n this.isSpectrumAlphaDragging = false;\n };\n AgColorPanel.prototype.moveDragger = function (e) {\n var valRect = this.spectrumValRect;\n if (valRect) {\n var x = e.clientX - valRect.left;\n var y = e.clientY - valRect.top;\n x = Math.max(x, 0);\n x = Math.min(x, valRect.width);\n y = Math.max(y, 0);\n y = Math.min(y, valRect.height);\n this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);\n }\n };\n AgColorPanel.prototype.moveHueSlider = function (e) {\n var hueRect = this.spectrumHueRect;\n if (hueRect) {\n var slider = this.spectrumHueSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - hueRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, hueRect.width);\n this.H = 1 - x / hueRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.moveAlphaSlider = function (e) {\n var alphaRect = this.spectrumAlphaRect;\n if (alphaRect) {\n var slider = this.spectrumAlphaSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - alphaRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, alphaRect.width);\n this.A = x / alphaRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.update = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var spectrumColor = Color.fromHSB(this.H * 360, 1, 1);\n var rgbaColor = color.toRgbaString();\n // the recent color list needs to know color has actually changed\n var colorPicker = this.picker;\n var existingColor = Color.fromString(colorPicker.getValue());\n if (existingColor.toRgbaString() !== rgbaColor) {\n this.colorChanged = true;\n }\n colorPicker.setValue(rgbaColor);\n this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();\n this.spectrumDragger.style.backgroundColor = rgbaColor;\n };\n /**\n * @param saturation In the [0, 1] interval.\n * @param brightness In the [0, 1] interval.\n */\n AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {\n var valRect = this.spectrumValRect || this.refreshSpectrumRect();\n if (valRect) {\n var dragger = this.spectrumDragger;\n var draggerRect = dragger.getBoundingClientRect();\n saturation = Math.max(0, saturation);\n saturation = Math.min(1, saturation);\n brightness = Math.max(0, brightness);\n brightness = Math.min(1, brightness);\n this.S = saturation;\n this.B = brightness;\n dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';\n dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.initRecentColors = function () {\n var recentColors = AgColorPanel.recentColors;\n var innerHtml = recentColors.map(function (color, index) {\n return \"
\";\n });\n this.recentColors.innerHTML = innerHtml.join('');\n };\n AgColorPanel.prototype.setValue = function (val) {\n var color = Color.fromString(val);\n var _a = color.toHSB(), h = _a[0], s = _a[1], b = _a[2];\n this.H = (isNaN(h) ? 0 : h) / 360;\n this.A = color.a;\n var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();\n var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();\n this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + \"px\";\n this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + \"px\";\n this.setSpectrumValue(s, b);\n };\n AgColorPanel.prototype.onRecentColorClick = function (e) {\n var target = e.target;\n if (!_.exists(target.id)) {\n return;\n }\n var id = parseInt(target.id, 10);\n this.setValue(AgColorPanel.recentColors[id]);\n this.destroy();\n };\n AgColorPanel.prototype.addRecentColor = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var rgbaColor = color.toRgbaString();\n var recentColors = AgColorPanel.recentColors;\n if (!this.colorChanged || recentColors[0] === rgbaColor) {\n return;\n }\n // remove duplicate color\n recentColors = recentColors.filter(function (color) { return color != rgbaColor; });\n // add color to head\n recentColors = [rgbaColor].concat(recentColors);\n // ensure we don't exceed max number of recent colors\n if (recentColors.length > AgColorPanel.maxRecentColors) {\n recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);\n }\n AgColorPanel.recentColors = recentColors;\n };\n AgColorPanel.prototype.destroy = function () {\n this.addRecentColor();\n _super.prototype.destroy.call(this);\n };\n AgColorPanel.maxRecentColors = 8;\n AgColorPanel.recentColors = [];\n AgColorPanel.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate$1D([\n RefSelector('spectrumColor')\n ], AgColorPanel.prototype, \"spectrumColor\", void 0);\n __decorate$1D([\n RefSelector('spectrumVal')\n ], AgColorPanel.prototype, \"spectrumVal\", void 0);\n __decorate$1D([\n RefSelector('spectrumDragger')\n ], AgColorPanel.prototype, \"spectrumDragger\", void 0);\n __decorate$1D([\n RefSelector('spectrumHue')\n ], AgColorPanel.prototype, \"spectrumHue\", void 0);\n __decorate$1D([\n RefSelector('spectrumHueSlider')\n ], AgColorPanel.prototype, \"spectrumHueSlider\", void 0);\n __decorate$1D([\n RefSelector('spectrumAlpha')\n ], AgColorPanel.prototype, \"spectrumAlpha\", void 0);\n __decorate$1D([\n RefSelector('spectrumAlphaSlider')\n ], AgColorPanel.prototype, \"spectrumAlphaSlider\", void 0);\n __decorate$1D([\n RefSelector('recentColors')\n ], AgColorPanel.prototype, \"recentColors\", void 0);\n __decorate$1D([\n PostConstruct\n ], AgColorPanel.prototype, \"postConstruct\", null);\n return AgColorPanel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$12 = (undefined && undefined.__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})();\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPickerField = /** @class */ (function (_super) {\n __extends$12(AgPickerField, _super);\n function AgPickerField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.TEMPLATE = \"
\\n \\n
\\n <%displayField% ref=\\\"eDisplayField\\\" class=\\\"ag-picker-field-display\\\">\\n
\\n
\\n
\";\n _this.isDestroyingPicker = false;\n _this.skipClick = false;\n return _this;\n }\n AgPickerField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n var clickHandler = function () {\n if (_this.skipClick) {\n _this.skipClick = false;\n return;\n }\n if (_this.isDisabled()) {\n return;\n }\n _this.pickerComponent = _this.showPicker();\n };\n var eGui = this.getGui();\n this.addDestroyableEventListener(eGui, 'mousedown', function (e) {\n if (!_this.skipClick &&\n _this.pickerComponent &&\n _this.pickerComponent.isAlive() &&\n _.isVisible(_this.pickerComponent.getGui()) &&\n eGui.contains(e.target)) {\n _this.skipClick = true;\n }\n });\n this.addDestroyableEventListener(eGui, 'keydown', function (e) {\n switch (e.keyCode) {\n case Constants.KEY_UP:\n case Constants.KEY_DOWN:\n case Constants.KEY_ENTER:\n case Constants.KEY_SPACE:\n clickHandler();\n case Constants.KEY_ESCAPE:\n e.preventDefault();\n break;\n }\n });\n this.addDestroyableEventListener(this.eWrapper, 'click', clickHandler);\n this.addDestroyableEventListener(this.eLabel, 'click', clickHandler);\n if (this.pickerIcon) {\n this.eIcon.appendChild(_.createIconNoSpan(this.pickerIcon, this.gridOptionsWrapper, null));\n }\n };\n AgPickerField.prototype.setInputWidth = function (width) {\n _.setElementWidth(this.eWrapper, width);\n return this;\n };\n AgPickerField.prototype.getFocusableElement = function () {\n return this.eWrapper;\n };\n __decorate$1E([\n Autowired('gridOptionsWrapper')\n ], AgPickerField.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1E([\n RefSelector('eLabel')\n ], AgPickerField.prototype, \"eLabel\", void 0);\n __decorate$1E([\n RefSelector('eWrapper')\n ], AgPickerField.prototype, \"eWrapper\", void 0);\n __decorate$1E([\n RefSelector('eDisplayField')\n ], AgPickerField.prototype, \"eDisplayField\", void 0);\n __decorate$1E([\n RefSelector('eIcon')\n ], AgPickerField.prototype, \"eIcon\", void 0);\n return AgPickerField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$13 = (undefined && undefined.__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})();\nvar AgColorPicker = /** @class */ (function (_super) {\n __extends$13(AgColorPicker, _super);\n function AgColorPicker(config) {\n var _this = _super.call(this) || this;\n _this.displayTag = 'div';\n _this.className = 'ag-color-picker';\n _this.pickerIcon = 'colorPicker';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config && config.color) {\n _this.value = config.color;\n }\n return _this;\n }\n AgColorPicker.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.value) {\n this.setValue(this.value);\n }\n };\n AgColorPicker.prototype.showPicker = function () {\n var _this = this;\n var eGuiRect = this.getGui().getBoundingClientRect();\n var colorDialog = new AgDialog({\n closable: false,\n modal: true,\n hideTitleBar: true,\n minWidth: 190,\n width: 190,\n height: 250,\n x: eGuiRect.right - 190,\n y: eGuiRect.top - 250\n });\n this.getContext().wireBean(colorDialog);\n _.addCssClass(colorDialog.getGui(), 'ag-color-dialog');\n var colorPanel = new AgColorPanel({\n picker: this\n });\n this.getContext().wireBean(colorPanel);\n colorPanel.addDestroyFunc(function () {\n if (colorDialog.isAlive()) {\n colorDialog.destroy();\n }\n });\n colorDialog.setParentComponent(this);\n colorDialog.setBodyComponent(colorPanel);\n colorPanel.setValue(this.getValue());\n colorDialog.addDestroyFunc(function () {\n var wasDestroying = _this.isDestroyingPicker;\n // here we check if the picker was already being\n // destroyed to avoid a stackoverflow\n if (!wasDestroying) {\n _this.isDestroyingPicker = true;\n if (colorPanel.isAlive()) {\n colorPanel.destroy();\n }\n }\n else {\n _this.isDestroyingPicker = false;\n }\n if (_this.isAlive()) {\n _this.getFocusableElement().focus();\n }\n });\n return colorDialog;\n };\n AgColorPicker.prototype.setValue = function (color) {\n if (this.value === color) {\n return this;\n }\n this.value = color;\n this.eDisplayField.style.backgroundColor = color;\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n return this;\n };\n AgColorPicker.prototype.getValue = function () {\n return this.value;\n };\n return AgColorPicker;\n}(AgPickerField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$14 = (undefined && undefined.__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})();\nvar AgInputNumberField = /** @class */ (function (_super) {\n __extends$14(AgInputNumberField, _super);\n function AgInputNumberField() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.className = 'ag-number-field';\n _this.inputType = 'number';\n return _this;\n }\n AgInputNumberField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.addDestroyableEventListener(this.eInput, 'blur', function () {\n var floatedValue = parseFloat(_this.eInput.value);\n var value = isNaN(floatedValue) ? '' : _this.normalizeValue(floatedValue.toString());\n if (_this.value !== value) {\n _this.setValue(value);\n }\n });\n };\n AgInputNumberField.prototype.normalizeValue = function (value) {\n if (value === '') {\n return '';\n }\n if (this.precision) {\n value = this.adjustPrecision(value);\n }\n var val = parseFloat(value);\n if (this.min != null && val < this.min) {\n value = this.min.toString();\n }\n else if (this.max != null && val > this.max) {\n value = this.max.toString();\n }\n return value;\n };\n AgInputNumberField.prototype.adjustPrecision = function (value) {\n if (this.precision) {\n var floatString = parseFloat(value).toFixed(this.precision);\n value = parseFloat(floatString).toString();\n }\n return value;\n };\n AgInputNumberField.prototype.setMin = function (min) {\n if (this.min === min) {\n return this;\n }\n this.min = min;\n if (this.min != null) {\n this.eInput.setAttribute('min', min.toString());\n }\n else {\n this.eInput.removeAttribute('min');\n }\n return this;\n };\n AgInputNumberField.prototype.setMax = function (max) {\n if (this.max === max) {\n return this;\n }\n this.max = max;\n if (this.max != null) {\n this.eInput.setAttribute('max', max.toString());\n }\n else {\n this.eInput.removeAttribute('max');\n }\n return this;\n };\n AgInputNumberField.prototype.setPrecision = function (precision) {\n this.precision = precision;\n return this;\n };\n AgInputNumberField.prototype.setStep = function (step) {\n if (this.step === step) {\n return this;\n }\n this.step = step;\n if (step != null) {\n this.eInput.setAttribute('step', step.toString());\n }\n else {\n this.eInput.removeAttribute('step');\n }\n return this;\n };\n AgInputNumberField.prototype.setValue = function (value, silent) {\n value = this.adjustPrecision(value);\n var normalizedValue = this.normalizeValue(value);\n if (value != normalizedValue) {\n return this;\n }\n return _super.prototype.setValue.call(this, value, silent);\n };\n return AgInputNumberField;\n}(AgInputTextField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$15 = (undefined && undefined.__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})();\nvar AgInputRange = /** @class */ (function (_super) {\n __extends$15(AgInputRange, _super);\n function AgInputRange(config) {\n var _this = _super.call(this) || this;\n _this.className = 'ag-range-field';\n _this.displayTag = 'input';\n _this.inputType = 'range';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n if (config) {\n _this.config = config;\n }\n return _this;\n }\n AgInputRange.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n var _a = this.config, min = _a.min, max = _a.max, step = _a.step;\n if (min != null) {\n this.setMinValue(min);\n }\n if (max != null) {\n this.setMaxValue(max);\n }\n this.setStep(step || 1);\n };\n AgInputRange.prototype.addInputListeners = function () {\n var _this = this;\n var isIE = _.isBrowserIE();\n var eventName = isIE ? 'change' : 'input';\n this.addDestroyableEventListener(this.eInput, eventName, function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgInputRange.prototype.setMinValue = function (value) {\n this.min = value;\n this.eInput.setAttribute('min', value.toString());\n return this;\n };\n AgInputRange.prototype.setMaxValue = function (value) {\n this.max = value;\n this.eInput.setAttribute('max', value.toString());\n return this;\n };\n AgInputRange.prototype.setStep = function (value) {\n this.step = value;\n this.eInput.setAttribute('step', value.toString());\n return this;\n };\n AgInputRange.prototype.setValue = function (value, silent) {\n if (this.min != null) {\n value = Math.max(parseFloat(value), this.min).toString();\n }\n if (this.max != null) {\n value = Math.min(parseFloat(value), this.max).toString();\n }\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n return AgInputRange;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$16 = (undefined && undefined.__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})();\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgList = /** @class */ (function (_super) {\n __extends$16(AgList, _super);\n function AgList(cssIdentifier) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n var _this = _super.call(this, AgList.getTemplate(cssIdentifier)) || this;\n _this.cssIdentifier = cssIdentifier;\n _this.options = [];\n _this.itemEls = [];\n return _this;\n }\n AgList.prototype.init = function () {\n this.addDestroyableEventListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));\n };\n AgList.getTemplate = function (cssIdentifier) {\n return \"
\";\n };\n AgList.prototype.handleKeyDown = function (e) {\n var key = e.keyCode;\n switch (key) {\n case Constants.KEY_ENTER:\n if (!this.highlightedEl) {\n this.setValue(this.getValue());\n }\n else {\n var pos = this.itemEls.indexOf(this.highlightedEl);\n this.setValueByIndex(pos);\n }\n break;\n case Constants.KEY_DOWN:\n case Constants.KEY_UP:\n var isDown = key === Constants.KEY_DOWN;\n var itemToHighlight = void 0;\n e.preventDefault();\n if (!this.highlightedEl) {\n itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];\n }\n else {\n var currentIdx = this.itemEls.indexOf(this.highlightedEl);\n var nextPos = currentIdx + (isDown ? 1 : -1);\n nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);\n itemToHighlight = this.itemEls[nextPos];\n }\n this.highlightItem(itemToHighlight);\n break;\n }\n };\n AgList.prototype.addOptions = function (listOptions) {\n var _this = this;\n listOptions.forEach(function (listOption) { return _this.addOption(listOption); });\n return this;\n };\n AgList.prototype.addOption = function (listOption) {\n var value = listOption.value, text = listOption.text;\n var sanitisedText = _.escape(text === undefined ? value : text);\n this.options.push({ value: value, text: sanitisedText });\n this.renderOption(sanitisedText);\n return this;\n };\n AgList.prototype.renderOption = function (innerText) {\n var _this = this;\n var itemEl = document.createElement('div');\n var itemContentEl = document.createElement('span');\n _.addCssClass(itemEl, 'ag-list-item');\n _.addCssClass(itemEl, \"ag-\" + this.cssIdentifier + \"-list-item\");\n itemEl.tabIndex = -1;\n itemContentEl.innerHTML = innerText;\n this.itemEls.push(itemEl);\n this.addDestroyableEventListener(itemEl, 'mouseover', function (e) { return _this.highlightItem(itemEl); });\n this.addDestroyableEventListener(itemEl, 'mouseleave', function () { return _this.clearHighlighted(); });\n this.addDestroyableEventListener(itemEl, 'click', function () {\n var idx = _this.itemEls.indexOf(itemEl);\n _this.setValueByIndex(idx);\n });\n itemEl.appendChild(itemContentEl);\n this.getGui().appendChild(itemEl);\n };\n AgList.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n this.fireItemSelected();\n return this;\n }\n if (value == null) {\n this.reset();\n return this;\n }\n var idx = _.findIndex(this.options, function (option) { return option.value === value; });\n if (idx !== -1) {\n var option = this.options[idx];\n this.value = option.value;\n this.displayValue = option.text != null ? option.text : option.value;\n this.highlightItem(this.itemEls[idx]);\n if (!silent) {\n this.fireChangeEvent();\n }\n }\n return this;\n };\n AgList.prototype.setValueByIndex = function (idx) {\n return this.setValue(this.options[idx].value);\n };\n AgList.prototype.getValue = function () {\n return this.value;\n };\n AgList.prototype.getDisplayValue = function () {\n return this.displayValue;\n };\n AgList.prototype.refreshHighlighted = function () {\n var _this = this;\n this.clearHighlighted();\n var idx = _.findIndex(this.options, function (option) { return option.value === _this.value; });\n if (idx !== -1) {\n this.highlightItem(this.itemEls[idx]);\n }\n };\n AgList.prototype.reset = function () {\n this.value = null;\n this.displayValue = null;\n this.clearHighlighted();\n this.fireChangeEvent();\n };\n AgList.prototype.highlightItem = function (el) {\n if (!el.offsetParent) {\n return;\n }\n _.radioCssClass(el, 'ag-active-item');\n this.highlightedEl = el;\n this.highlightedEl.focus();\n };\n AgList.prototype.clearHighlighted = function () {\n if (!this.highlightedEl || !this.highlightedEl.offsetParent) {\n return;\n }\n _.removeCssClass(this.highlightedEl, 'ag-active-item');\n this.highlightedEl = null;\n };\n AgList.prototype.fireChangeEvent = function () {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n this.fireItemSelected();\n };\n AgList.prototype.fireItemSelected = function () {\n this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });\n };\n AgList.EVENT_ITEM_SELECTED = 'selectedItem';\n __decorate$1F([\n PostConstruct\n ], AgList.prototype, \"init\", null);\n return AgList;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$17 = (undefined && undefined.__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})();\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSelect = /** @class */ (function (_super) {\n __extends$17(AgSelect, _super);\n function AgSelect(config) {\n var _this = _super.call(this) || this;\n _this.displayTag = 'div';\n _this.className = 'ag-select';\n _this.pickerIcon = 'smallDown';\n _this.setTemplate(_this.TEMPLATE.replace(/%displayField%/g, _this.displayTag));\n return _this;\n }\n AgSelect.prototype.init = function () {\n var _this = this;\n this.listComponent = new AgList('select');\n this.getContext().wireBean(this.listComponent);\n this.listComponent.setParentComponent(this);\n this.eWrapper.tabIndex = 0;\n this.listComponent.addDestroyableEventListener(this.listComponent, AgList.EVENT_ITEM_SELECTED, function () { if (_this.hideList) {\n _this.hideList();\n } });\n this.listComponent.addDestroyableEventListener(this.listComponent, AgAbstractField.EVENT_CHANGED, function () {\n _this.setValue(_this.listComponent.getValue(), false, true);\n if (_this.hideList) {\n _this.hideList();\n }\n });\n };\n AgSelect.prototype.showPicker = function () {\n var _this = this;\n var listGui = this.listComponent.getGui();\n var mouseWheelFunc = this.addDestroyableEventListener(document.body, 'wheel', function (e) {\n if (!listGui.contains(e.target) && _this.hideList) {\n _this.hideList();\n }\n });\n var focusOutFunc = this.addDestroyableEventListener(listGui, 'focusout', function (e) {\n if (!listGui.contains(e.relatedTarget) && _this.hideList) {\n _this.hideList();\n }\n });\n this.hideList = this.popupService.addPopup(true, listGui, true, function () {\n _this.hideList = null;\n focusOutFunc();\n mouseWheelFunc();\n if (_this.isAlive()) {\n _this.getFocusableElement().focus();\n }\n });\n _.setElementWidth(listGui, _.getAbsoluteWidth(this.eWrapper));\n listGui.style.maxHeight = _.getInnerHeight(this.popupService.getPopupParent()) + 'px';\n listGui.style.position = 'absolute';\n this.popupService.positionPopupUnderComponent({\n type: 'ag-list',\n eventSource: this.eWrapper,\n ePopup: listGui,\n keepWithinBounds: true\n });\n this.listComponent.refreshHighlighted();\n return this.listComponent;\n };\n AgSelect.prototype.addOptions = function (options) {\n var _this = this;\n options.forEach(function (option) { return _this.addOption(option); });\n return this;\n };\n AgSelect.prototype.addOption = function (option) {\n this.listComponent.addOption(option);\n return this;\n };\n AgSelect.prototype.setValue = function (value, silent, fromPicker) {\n if (this.value === value) {\n return;\n }\n if (!fromPicker) {\n this.listComponent.setValue(value, true);\n }\n var newValue = this.listComponent.getValue();\n if (newValue === this.getValue()) {\n return;\n }\n this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();\n return _super.prototype.setValue.call(this, value, silent);\n };\n AgSelect.prototype.destroy = function () {\n if (this.hideList) {\n this.hideList();\n }\n this.listComponent.destroy();\n _super.prototype.destroy.call(this);\n };\n __decorate$1G([\n Autowired('popupService')\n ], AgSelect.prototype, \"popupService\", void 0);\n __decorate$1G([\n PostConstruct\n ], AgSelect.prototype, \"init\", null);\n return AgSelect;\n}(AgPickerField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$18 = (undefined && undefined.__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})();\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAngleSelect = /** @class */ (function (_super) {\n __extends$18(AgAngleSelect, _super);\n function AgAngleSelect() {\n var _this = _super.call(this, AgAngleSelect.TEMPLATE) || this;\n _this.radius = 0;\n _this.offsetX = 0;\n _this.offsetY = 0;\n return _this;\n }\n AgAngleSelect.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.dragListener = {\n eElement: this.eParentCircle,\n dragStartPixels: 0,\n onDragStart: function (e) {\n _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();\n },\n onDragging: function (e) { return _this.calculateAngleDrag(e); },\n onDragStop: function () { }\n };\n this.dragService.addDragSource(this.dragListener);\n this.eAngleValue\n .setLabel('')\n .setLabelWidth(5)\n .setInputWidth(45)\n .setMin(0)\n .setMax(360)\n .setValue(\"\" + this.degrees)\n .onValueChange(function (value) {\n if (value == null || value === '') {\n value = '0';\n }\n value = _this.eAngleValue.normalizeValue(value);\n var floatValue = parseFloat(value);\n if (floatValue > 180) {\n floatValue = floatValue - 360;\n }\n _this.setValue(floatValue);\n });\n this.updateNumberInput();\n if (_.exists(this.getValue())) {\n this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());\n }\n this.addDestroyableEventListener(this, AgAbstractField.EVENT_CHANGED, function () {\n if (_this.eAngleValue.getInputElement().contains(document.activeElement)) {\n return;\n }\n _this.updateNumberInput();\n });\n };\n AgAngleSelect.prototype.updateNumberInput = function () {\n var normalizedValue = this.normalizeNegativeValue(this.getValue());\n this.eAngleValue.setValue(normalizedValue.toString());\n };\n AgAngleSelect.prototype.positionChildCircle = function (radians) {\n var rect = this.parentCircleRect || { width: 24, height: 24 };\n var eChildCircle = this.eChildCircle;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n eChildCircle.style.left = centerX + Math.cos(radians) * 8 + \"px\";\n eChildCircle.style.top = centerY + Math.sin(radians) * 8 + \"px\";\n };\n AgAngleSelect.prototype.calculatePolar = function () {\n var x = this.offsetX;\n var y = this.offsetY;\n var radians = Math.atan2(y, x);\n this.degrees = this.toDegrees(radians);\n this.radius = Math.sqrt((x * x) + (y * y));\n this.positionChildCircle(radians);\n };\n AgAngleSelect.prototype.calculateCartesian = function () {\n var radians = this.toRadians(this.getValue());\n var radius = this.getRadius();\n this\n .setOffsetX(Math.cos(radians) * radius)\n .setOffsetY(Math.sin(radians) * radius);\n };\n AgAngleSelect.prototype.setOffsetX = function (offset) {\n if (this.offsetX !== offset) {\n this.offsetX = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.setOffsetY = function (offset) {\n if (this.offsetY !== offset) {\n this.offsetY = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.calculateAngleDrag = function (e) {\n var rect = this.parentCircleRect;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n var x = e.clientX - rect.left;\n var y = e.clientY - rect.top;\n var dx = x - centerX;\n var dy = y - centerY;\n var radians = Math.atan2(dy, dx);\n this.setValue(radians, true);\n };\n AgAngleSelect.prototype.toDegrees = function (radians) {\n return radians / Math.PI * 180;\n };\n AgAngleSelect.prototype.toRadians = function (degrees) {\n return degrees / 180 * Math.PI;\n };\n AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {\n return degrees < 0 ? 360 + degrees : degrees;\n };\n AgAngleSelect.prototype.normalizeAngle180 = function (radians) {\n radians %= Math.PI * 2;\n if (radians < -Math.PI) {\n radians += Math.PI * 2;\n }\n else if (radians >= Math.PI) {\n radians -= Math.PI * 2;\n }\n return radians;\n };\n AgAngleSelect.prototype.getRadius = function () {\n return this.radius;\n };\n AgAngleSelect.prototype.setRadius = function (r) {\n if (this.radius === r) {\n return this;\n }\n this.radius = r;\n this.calculateCartesian();\n return this;\n };\n AgAngleSelect.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addDestroyableEventListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.degrees);\n });\n return this;\n };\n AgAngleSelect.prototype.getValue = function (radians) {\n return radians ? this.toRadians(this.degrees) : this.degrees;\n };\n AgAngleSelect.prototype.setValue = function (degrees, radians) {\n var radiansValue;\n if (!radians) {\n radiansValue = this.normalizeAngle180(this.toRadians(degrees));\n }\n else {\n radiansValue = degrees;\n }\n degrees = this.toDegrees(radiansValue);\n if (this.degrees !== degrees) {\n this.degrees = Math.floor(degrees);\n this.calculateCartesian();\n this.positionChildCircle(radiansValue);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAngleSelect.prototype.setWidth = function (width) {\n _.setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAngleSelect.prototype.destroy = function () {\n this.dragService.removeDragSource(this.dragListener);\n _super.prototype.destroy.call(this);\n };\n AgAngleSelect.TEMPLATE = \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\";\n __decorate$1H([\n RefSelector('eLabel')\n ], AgAngleSelect.prototype, \"eLabel\", void 0);\n __decorate$1H([\n RefSelector('eParentCircle')\n ], AgAngleSelect.prototype, \"eParentCircle\", void 0);\n __decorate$1H([\n RefSelector('eChildCircle')\n ], AgAngleSelect.prototype, \"eChildCircle\", void 0);\n __decorate$1H([\n RefSelector('eAngleValue')\n ], AgAngleSelect.prototype, \"eAngleValue\", void 0);\n __decorate$1H([\n Autowired(\"dragService\")\n ], AgAngleSelect.prototype, \"dragService\", void 0);\n return AgAngleSelect;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$19 = (undefined && undefined.__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})();\nvar AgToggleButton = /** @class */ (function (_super) {\n __extends$19(AgToggleButton, _super);\n function AgToggleButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.className = 'ag-toggle-button';\n _this.inputType = 'checkbox';\n return _this;\n }\n AgToggleButton.prototype.setValue = function (value, silent) {\n _super.prototype.setValue.call(this, value, silent);\n _.addOrRemoveCssClass(this.getGui(), 'ag-selected', this.getValue());\n return this;\n };\n return AgToggleButton;\n}(AgRadioButton));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * For Master Detail, it is required to keep components between expanding & collapsing parents.\n * For example a user expands row A (and shows a detail grid for this row), then when row A\n * is closed, we want to keep the detail grid, so next time row A is expanded the detail grid\n * is showed with it's context intact, eg if user sorted in the detail grid, that sort should\n * still be applied after the detail grid is shown for the second time.\n */\nvar DetailRowCompCache = /** @class */ (function () {\n function DetailRowCompCache() {\n this.cacheItems = [];\n }\n DetailRowCompCache.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isKeepDetailRows();\n this.maxCacheSize = this.gridOptionsWrapper.getKeepDetailRowsCount();\n };\n DetailRowCompCache.prototype.addOrDestroy = function (rowNode, pinned, comp) {\n // only accept detail rows\n var doNotUseCache = !this.active || !rowNode.detail;\n if (doNotUseCache) {\n this.destroyFullWidthRow(comp);\n return;\n }\n var item = this.getCacheItem(rowNode, true);\n // put the comp in the right location of the item.\n // we also destroy any previous comp - this should never happen\n // as the logic outside of this class shouldn't be adding same item to the\n // cache twice, however we cater for it in case in future releases code\n // outside of this class is changed and this could happen.\n switch (pinned) {\n case Constants.PINNED_LEFT:\n this.destroyFullWidthRow(item.left);\n item.left = comp;\n break;\n case Constants.PINNED_RIGHT:\n this.destroyFullWidthRow(item.right);\n item.right = comp;\n break;\n default:\n this.destroyFullWidthRow(item.center);\n item.center = comp;\n break;\n }\n this.cacheItems.sort(function (a, b) {\n return b.lastAccessedTime - a.lastAccessedTime;\n });\n this.purgeCache(this.maxCacheSize);\n };\n DetailRowCompCache.prototype.getCacheItem = function (rowNode, autoCreate) {\n if (autoCreate === void 0) { autoCreate = false; }\n var res;\n for (var i = 0; i < this.cacheItems.length; i++) {\n var item = this.cacheItems[i];\n if (item.rowNode === rowNode) {\n res = item;\n break;\n }\n }\n if (!res && autoCreate) {\n res = {\n rowNode: rowNode\n };\n this.cacheItems.push(res);\n }\n if (res) {\n this.stampCacheItem(res);\n }\n return res;\n };\n DetailRowCompCache.prototype.stampCacheItem = function (item) {\n item.lastAccessedTime = new Date().getTime();\n };\n DetailRowCompCache.prototype.destroyFullWidthRow = function (comp) {\n if (comp && comp.destroy) {\n comp.destroy();\n }\n };\n DetailRowCompCache.prototype.purgeCache = function (startIndex) {\n // delete all rows past the index of interest\n for (var i = startIndex; i < this.cacheItems.length; i++) {\n var item = this.cacheItems[i];\n this.destroyFullWidthRow(item.center);\n this.destroyFullWidthRow(item.left);\n this.destroyFullWidthRow(item.right);\n }\n // change the length of the array so it no longer contains the deleted items\n if (this.cacheItems.length > startIndex) {\n this.cacheItems.length = startIndex;\n }\n };\n DetailRowCompCache.prototype.get = function (rowNode, pinned) {\n if (!rowNode.detail) {\n return undefined;\n }\n var item = this.getCacheItem(rowNode);\n var res;\n if (item) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n if (item.left) {\n res = item.left;\n item.left = undefined;\n }\n break;\n case Constants.PINNED_RIGHT:\n if (item.right) {\n res = item.right;\n item.right = undefined;\n }\n break;\n default:\n if (item.center) {\n res = item.center;\n item.center = undefined;\n }\n break;\n }\n }\n return res;\n };\n DetailRowCompCache.prototype.destroy = function () {\n this.purgeCache(0);\n };\n __decorate$1I([\n Autowired('gridOptionsWrapper')\n ], DetailRowCompCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1I([\n PostConstruct\n ], DetailRowCompCache.prototype, \"postConstruct\", null);\n __decorate$1I([\n PreDestroy\n ], DetailRowCompCache.prototype, \"destroy\", null);\n DetailRowCompCache = __decorate$1I([\n Bean('detailRowCompCache')\n ], DetailRowCompCache);\n return DetailRowCompCache;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowPositionUtils = /** @class */ (function () {\n function RowPositionUtils() {\n }\n RowPositionUtils.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowPositionUtils.prototype.sameRow = function (rowA, rowB) {\n // if both missing\n if (!rowA && !rowB) {\n return true;\n }\n // if only one missing\n if ((rowA && !rowB) || (!rowA && rowB)) {\n return false;\n }\n // otherwise compare (use == to compare rowPinned because it can be null or undefined)\n return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n };\n // tests if this row selection is before the other row selection\n RowPositionUtils.prototype.before = function (rowA, rowB) {\n switch (rowA.rowPinned) {\n case Constants.PINNED_TOP:\n // we we are floating top, and other isn't, then we are always before\n if (rowB.rowPinned !== Constants.PINNED_TOP) {\n return true;\n }\n break;\n case Constants.PINNED_BOTTOM:\n // if we are floating bottom, and the other isn't, then we are never before\n if (rowB.rowPinned !== Constants.PINNED_BOTTOM) {\n return false;\n }\n break;\n default:\n // if we are not floating, but the other one is floating...\n if (_.exists(rowB.rowPinned)) {\n return rowB.rowPinned !== Constants.PINNED_TOP;\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n };\n __decorate$1J([\n Autowired('rowModel')\n ], RowPositionUtils.prototype, \"rowModel\", void 0);\n __decorate$1J([\n Autowired('pinnedRowModel')\n ], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n RowPositionUtils = __decorate$1J([\n Bean('rowPositionUtils')\n ], RowPositionUtils);\n return RowPositionUtils;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CellPositionUtils = /** @class */ (function () {\n function CellPositionUtils() {\n }\n CellPositionUtils.prototype.createId = function (cellPosition) {\n var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n return this.createIdFromValues(rowIndex, column, rowPinned);\n };\n CellPositionUtils.prototype.createIdFromValues = function (rowIndex, column, rowPinned) {\n return rowIndex + \".\" + (rowPinned == null ? 'null' : rowPinned) + \".\" + column.getId();\n };\n CellPositionUtils.prototype.equals = function (cellA, cellB) {\n var colsMatch = cellA.column === cellB.column;\n var floatingMatch = cellA.rowPinned === cellB.rowPinned;\n var indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n CellPositionUtils = __decorate$1K([\n Bean('cellPositionUtils')\n ], CellPositionUtils);\n return CellPositionUtils;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PinnedRowModel = /** @class */ (function () {\n function PinnedRowModel() {\n }\n PinnedRowModel.prototype.init = function () {\n this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());\n this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());\n };\n PinnedRowModel.prototype.isEmpty = function (floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n return _.missingOrEmpty(rows);\n };\n PinnedRowModel.prototype.isRowsToRender = function (floating) {\n return !this.isEmpty(floating);\n };\n PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n if (_.missingOrEmpty(rows)) {\n return 0; // this should never happen, just in case, 0 is graceful failure\n }\n for (var i = 0; i < rows.length; i++) {\n var rowNode = rows[i];\n var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n // only need to range check against the top pixel, as we are going through the list\n // in order, first row to hit the pixel wins\n if (rowTopPixel >= pixel) {\n return i;\n }\n }\n return rows.length - 1;\n };\n PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n var _this = this;\n var rowNodes = [];\n if (allData) {\n var nextRowTop_1 = 0;\n allData.forEach(function (dataItem, index) {\n var rowNode = new RowNode();\n _this.context.wireBean(rowNode);\n rowNode.data = dataItem;\n rowNode.id = (isTop ? 't' : 'b') + \"-\" + index;\n rowNode.rowPinned = isTop ? Constants.PINNED_TOP : Constants.PINNED_BOTTOM;\n rowNode.setRowTop(nextRowTop_1);\n rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop_1 += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n };\n PinnedRowModel.prototype.getPinnedTopRowData = function () {\n return this.pinnedTopRows;\n };\n PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n return this.pinnedBottomRows;\n };\n PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n return this.getTotalHeight(this.pinnedTopRows);\n };\n PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n return this.pinnedTopRows[index];\n };\n PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedBottomRows[index];\n };\n PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n if (_.missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n };\n PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n if (_.missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n };\n PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n return this.getTotalHeight(this.pinnedBottomRows);\n };\n PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n else {\n var lastNode = _.last(rowNodes);\n return lastNode.rowTop + lastNode.rowHeight;\n }\n };\n __decorate$1L([\n Autowired('gridOptionsWrapper')\n ], PinnedRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1L([\n Autowired('eventService')\n ], PinnedRowModel.prototype, \"eventService\", void 0);\n __decorate$1L([\n Autowired('context')\n ], PinnedRowModel.prototype, \"context\", void 0);\n __decorate$1L([\n Autowired('columnApi')\n ], PinnedRowModel.prototype, \"columnApi\", void 0);\n __decorate$1L([\n Autowired('gridApi')\n ], PinnedRowModel.prototype, \"gridApi\", void 0);\n __decorate$1L([\n PostConstruct\n ], PinnedRowModel.prototype, \"init\", null);\n PinnedRowModel = __decorate$1L([\n Bean('pinnedRowModel')\n ], PinnedRowModel);\n return PinnedRowModel;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1a = (undefined && undefined.__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})();\nvar UndoRedoAction = /** @class */ (function () {\n function UndoRedoAction(cellValueChanges) {\n this.cellValueChanges = cellValueChanges;\n }\n return UndoRedoAction;\n}());\nvar FillUndoRedoAction = /** @class */ (function (_super) {\n __extends$1a(FillUndoRedoAction, _super);\n function FillUndoRedoAction(cellValueChanges, initialRange, finalRange) {\n var _this = _super.call(this, cellValueChanges) || this;\n _this.initialRange = initialRange;\n _this.finalRange = finalRange;\n return _this;\n }\n return FillUndoRedoAction;\n}(UndoRedoAction));\nvar UndoRedoStack = /** @class */ (function () {\n function UndoRedoStack(maxStackSize) {\n this.actionStack = [];\n this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;\n this.actionStack = new Array(this.maxStackSize);\n }\n UndoRedoStack.prototype.pop = function () {\n return this.actionStack.pop();\n };\n UndoRedoStack.prototype.push = function (item) {\n var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n if (!shouldAddActions) {\n return;\n }\n if (this.actionStack.length === this.maxStackSize) {\n this.actionStack.shift();\n }\n this.actionStack.push(item);\n };\n UndoRedoStack.prototype.clear = function () {\n this.actionStack = [];\n };\n UndoRedoStack.DEFAULT_STACK_SIZE = 10;\n return UndoRedoStack;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UndoRedoService = /** @class */ (function () {\n function UndoRedoService() {\n var _this = this;\n this.cellValueChanges = [];\n this.isCellEditing = false;\n this.isRowEditing = false;\n this.isPasting = false;\n this.isFilling = false;\n this.events = [];\n this.onCellValueChanged = function (event) {\n var shouldCaptureAction = _this.isCellEditing || _this.isRowEditing || _this.isPasting || _this.isFilling;\n if (!shouldCaptureAction) {\n return;\n }\n var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;\n var cellValueChange = {\n rowPinned: rowPinned,\n rowIndex: rowIndex,\n columnId: column.getColId(),\n oldValue: oldValue,\n newValue: value\n };\n _this.cellValueChanges.push(cellValueChange);\n };\n this.clearStacks = function () {\n _this.undoStack.clear();\n _this.redoStack.clear();\n };\n }\n UndoRedoService.prototype.init = function () {\n if (!this.gridOptionsWrapper.isUndoRedoCellEditing()) {\n return;\n }\n var undoRedoLimit = this.gridOptionsWrapper.getUndoRedoCellEditingLimit();\n if (undoRedoLimit <= 0) {\n return;\n }\n this.undoStack = new UndoRedoStack(undoRedoLimit);\n this.redoStack = new UndoRedoStack(undoRedoLimit);\n this.events = [].concat(this.addRowEditingListeners(), this.addCellEditingListeners(), this.addPasteListeners(), this.addFillListeners(), [\n this.eventService.addEventListener(Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged),\n // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n // performed that change the order of the row / cols.\n this.eventService.addEventListener(Events.EVENT_MODEL_UPDATED, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.clearStacks),\n this.eventService.addEventListener(Events.EVENT_ROW_DRAG_END, this.clearStacks),\n ]);\n };\n UndoRedoService.prototype.destroy = function () {\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n this.events = [];\n }\n };\n UndoRedoService.prototype.undo = function () {\n if (!this.undoStack) {\n return;\n }\n var undoAction = this.undoStack.pop();\n if (!undoAction || !undoAction.cellValueChanges) {\n return;\n }\n this.processAction(undoAction, function (cellValueChange) { return cellValueChange.oldValue; });\n if (undoAction instanceof FillUndoRedoAction) {\n this.processRangeAndCellFocus(undoAction.cellValueChanges, undoAction.initialRange);\n }\n else {\n this.processRangeAndCellFocus(undoAction.cellValueChanges);\n }\n this.redoStack.push(undoAction);\n };\n UndoRedoService.prototype.redo = function () {\n if (!this.redoStack) {\n return;\n }\n var redoAction = this.redoStack.pop();\n if (!redoAction || !redoAction.cellValueChanges) {\n return;\n }\n this.processAction(redoAction, function (cellValueChange) { return cellValueChange.newValue; });\n if (redoAction instanceof FillUndoRedoAction) {\n this.processRangeAndCellFocus(redoAction.cellValueChanges, redoAction.finalRange);\n }\n else {\n this.processRangeAndCellFocus(redoAction.cellValueChanges);\n }\n this.undoStack.push(redoAction);\n };\n UndoRedoService.prototype.processAction = function (action, valueExtractor) {\n var _this = this;\n action.cellValueChanges.forEach(function (cellValueChange) {\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var currentRow = _this.getRowNode(rowPosition);\n // checks if the row has been filtered out\n if (currentRow.rowTop == null) {\n return;\n }\n currentRow.setDataValue(columnId, valueExtractor(cellValueChange));\n });\n };\n UndoRedoService.prototype.processRangeAndCellFocus = function (cellValueChanges, range) {\n if (range) {\n var startRow = range.startRow;\n var endRow = range.endRow;\n var lastFocusedCell_1 = {\n rowPinned: startRow.rowPinned,\n rowIndex: startRow.rowIndex,\n columnId: range.startColumn.getColId()\n };\n this.setLastFocusedCell(lastFocusedCell_1);\n var cellRangeParams = {\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n rowEndIndex: endRow.rowIndex,\n rowEndPinned: endRow.rowPinned,\n columnStart: range.startColumn,\n columns: range.columns\n };\n this.gridApi.addCellRange(cellRangeParams);\n return;\n }\n var cellValueChange = cellValueChanges[0];\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var row = this.getRowNode(rowPosition);\n var lastFocusedCell = {\n rowPinned: cellValueChange.rowPinned,\n rowIndex: row.rowIndex,\n columnId: cellValueChange.columnId\n };\n this.setLastFocusedCell(lastFocusedCell);\n };\n UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell) {\n var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;\n this.gridApi.ensureIndexVisible(rowIndex);\n this.gridApi.ensureColumnVisible(columnId);\n if (ModuleRegistry.isRegistered(exports.ModuleNames.RangeSelectionModule)) {\n this.gridApi.clearRangeSelection();\n }\n this.focusController.setFocusedCell(rowIndex, columnId, rowPinned, true);\n };\n UndoRedoService.prototype.addRowEditingListeners = function () {\n var _this = this;\n return [\n this.eventService.addEventListener(Events.EVENT_ROW_EDITING_STARTED, function () {\n _this.isRowEditing = true;\n }),\n this.eventService.addEventListener(Events.EVENT_ROW_EDITING_STOPPED, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.isRowEditing = false;\n })\n ];\n };\n UndoRedoService.prototype.addCellEditingListeners = function () {\n var _this = this;\n return [\n this.eventService.addEventListener(Events.EVENT_CELL_EDITING_STARTED, function () {\n _this.isCellEditing = true;\n }),\n this.eventService.addEventListener(Events.EVENT_CELL_EDITING_STOPPED, function () {\n _this.isCellEditing = false;\n var shouldPushAction = !_this.isRowEditing && !_this.isPasting && !_this.isFilling;\n if (shouldPushAction) {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n }\n })\n ];\n };\n UndoRedoService.prototype.addPasteListeners = function () {\n var _this = this;\n return [\n this.eventService.addEventListener(Events.EVENT_PASTE_START, function () {\n _this.isPasting = true;\n }),\n this.eventService.addEventListener(Events.EVENT_PASTE_END, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.isPasting = false;\n })\n ];\n };\n UndoRedoService.prototype.addFillListeners = function () {\n var _this = this;\n return [\n this.eventService.addEventListener(Events.EVENT_FILL_START, function () {\n _this.isFilling = true;\n }),\n this.eventService.addEventListener(Events.EVENT_FILL_END, function (event) {\n var action = new FillUndoRedoAction(_this.cellValueChanges, event.initialRange, event.finalRange);\n _this.pushActionsToUndoStack(action);\n _this.isFilling = false;\n })\n ];\n };\n UndoRedoService.prototype.pushActionsToUndoStack = function (action) {\n this.undoStack.push(action);\n this.cellValueChanges = [];\n this.redoStack.clear();\n };\n UndoRedoService.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n __decorate$1M([\n Autowired('gridOptionsWrapper')\n ], UndoRedoService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1M([\n Autowired('focusController')\n ], UndoRedoService.prototype, \"focusController\", void 0);\n __decorate$1M([\n Autowired('eventService')\n ], UndoRedoService.prototype, \"eventService\", void 0);\n __decorate$1M([\n Autowired('gridApi')\n ], UndoRedoService.prototype, \"gridApi\", void 0);\n __decorate$1M([\n Autowired('rowModel')\n ], UndoRedoService.prototype, \"rowModel\", void 0);\n __decorate$1M([\n Autowired('pinnedRowModel')\n ], UndoRedoService.prototype, \"pinnedRowModel\", void 0);\n __decorate$1M([\n PostConstruct\n ], UndoRedoService.prototype, \"init\", null);\n __decorate$1M([\n PreDestroy\n ], UndoRedoService.prototype, \"destroy\", null);\n UndoRedoService = __decorate$1M([\n Bean('undoRedoService')\n ], UndoRedoService);\n return UndoRedoService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Grid = /** @class */ (function () {\n function Grid(eGridDiv, gridOptions, params) {\n if (!eGridDiv) {\n console.error('ag-Grid: no div element provided to the grid');\n return;\n }\n if (!gridOptions) {\n console.error('ag-Grid: no gridOptions provided to the grid');\n return;\n }\n var debug = !!gridOptions.debug;\n this.gridOptions = gridOptions;\n var registeredModules = this.getRegisteredModules(params);\n var beanClasses = this.createBeansList(registeredModules);\n var agStackComponents = this.createAgStackComponentsList(registeredModules);\n var providedBeanInstances = this.createProvidedBeans(eGridDiv, params);\n if (!beanClasses) {\n return;\n } // happens when no row model found\n var contextParams = {\n providedBeanInstances: providedBeanInstances,\n beanClasses: beanClasses,\n components: agStackComponents,\n debug: debug\n };\n this.logger = new Logger('ag-Grid', function () { return gridOptions.debug; });\n var contextLogger = new Logger('Context', function () { return contextParams.debug; });\n this.context = new Context(contextParams, contextLogger);\n this.registerModuleUserComponents(registeredModules);\n var gridCoreClass = (params && params.rootComponent) || GridCore;\n var gridCore = new gridCoreClass();\n this.context.wireBean(gridCore);\n this.setColumnsAndData();\n this.dispatchGridReadyEvent(gridOptions);\n var isEnterprise = ModuleRegistry.isRegistered(exports.ModuleNames.EnterpriseCoreModule);\n this.logger.log(\"initialised successfully, enterprise = \" + isEnterprise);\n }\n Grid.prototype.getRegisteredModules = function (params) {\n var passedViaConstructor = params ? params.modules : null;\n var registered = ModuleRegistry.getRegisteredModules();\n var allModules = [];\n var mapNames = {};\n // adds to list and removes duplicates\n function addModule(moduleBased, module) {\n function addIndividualModule(module) {\n if (!mapNames[module.moduleName]) {\n mapNames[module.moduleName] = true;\n allModules.push(module);\n ModuleRegistry.register(module, moduleBased);\n }\n }\n addIndividualModule(module);\n if (module.dependantModules) {\n module.dependantModules.forEach(addModule.bind(null, moduleBased));\n }\n }\n if (passedViaConstructor) {\n passedViaConstructor.forEach(addModule.bind(null, true));\n }\n if (registered) {\n registered.forEach(addModule.bind(null, !ModuleRegistry.isPackageBased()));\n }\n return allModules;\n };\n Grid.prototype.registerModuleUserComponents = function (registeredModules) {\n var userComponentRegistry = this.context.getBean('userComponentRegistry');\n var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });\n moduleUserComps.forEach(function (compMeta) {\n userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n });\n };\n Grid.prototype.createProvidedBeans = function (eGridDiv, params) {\n var frameworkOverrides = params ? params.frameworkOverrides : null;\n if (_.missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n var seed = {\n gridOptions: this.gridOptions,\n eGridDiv: eGridDiv,\n $scope: params ? params.$scope : null,\n $compile: params ? params.$compile : null,\n quickFilterOnScope: params ? params.quickFilterOnScope : null,\n globalEventListener: params ? params.globalEventListener : null,\n frameworkOverrides: frameworkOverrides\n };\n if (params && params.providedBeanInstances) {\n _.assign(seed, params.providedBeanInstances);\n }\n return seed;\n };\n Grid.prototype.createAgStackComponentsList = function (registeredModules) {\n var components = [\n { componentName: 'AgCheckbox', componentClass: AgCheckbox },\n { componentName: 'AgRadioButton', componentClass: AgRadioButton },\n { componentName: 'AgToggleButton', componentClass: AgToggleButton },\n { componentName: 'AgInputTextField', componentClass: AgInputTextField },\n { componentName: 'AgInputTextArea', componentClass: AgInputTextArea },\n { componentName: 'AgInputNumberField', componentClass: AgInputNumberField },\n { componentName: 'AgInputRange', componentClass: AgInputRange },\n { componentName: 'AgSelect', componentClass: AgSelect },\n { componentName: 'AgSlider', componentClass: AgSlider },\n { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n { componentName: 'AgGridComp', componentClass: GridPanel },\n { componentName: 'AgHeaderRoot', componentClass: HeaderRootComp },\n { componentName: 'AgPagination', componentClass: PaginationComp },\n { componentName: 'AgOverlayWrapper', componentClass: OverlayWrapperComponent },\n { componentName: 'AgGroupComponent', componentClass: AgGroupComponent },\n { componentName: 'AgPanel', componentClass: AgPanel },\n { componentName: 'AgDialog', componentClass: AgDialog }\n ];\n var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });\n components = components.concat(moduleAgStackComps);\n return components;\n };\n Grid.prototype.createBeansList = function (registeredModules) {\n var rowModelClass = this.getRowModelClass(registeredModules);\n if (!rowModelClass) {\n return undefined;\n }\n // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n var beans = [\n rowModelClass, Beans, RowPositionUtils, CellPositionUtils,\n PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n MaxDivHeightScaler, AutoHeightCalculator, CellRendererFactory, HorizontalResizeService,\n PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsWrapper, PopupService,\n SelectionController, FilterManager, ColumnController, PaginationProxy, RowRenderer, ExpressionService,\n ColumnFactory, TemplateService, AlignedGridsService,\n NavigationService, ValueCache, ValueService, LoggerFactory, ColumnUtils, AutoWidthCalculator,\n StandardMenuFactory, DragAndDropService, ColumnApi, FocusController, MouseEventService, Environment,\n CellNavigationService, ValueFormatterService, StylingService, ScrollVisibleService, SortController,\n ColumnHoverService, ColumnAnimationService, SelectableService, AutoGroupColService,\n ChangeDetectionService, AnimationFrameService, DetailRowCompCache, UndoRedoService\n ];\n var moduleBeans = this.extractModuleEntity(registeredModules, function (module) { return module.beans ? module.beans : []; });\n beans.push.apply(beans, moduleBeans);\n // check for duplicates, as different modules could include the same beans that\n // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community\n var beansNoDuplicates = [];\n beans.forEach(function (bean) {\n if (beansNoDuplicates.indexOf(bean) < 0) {\n beansNoDuplicates.push(bean);\n }\n });\n return beansNoDuplicates;\n };\n Grid.prototype.extractModuleEntity = function (moduleEntities, extractor) {\n return [].concat.apply([], moduleEntities.map(extractor));\n };\n Grid.prototype.setColumnsAndData = function () {\n var gridOptionsWrapper = this.context.getBean('gridOptionsWrapper');\n var columnController = this.context.getBean('columnController');\n var columnDefs = gridOptionsWrapper.getColumnDefs();\n if (_.exists(columnDefs)) {\n columnController.setColumnDefs(columnDefs, \"gridInitializing\");\n }\n var rowModel = this.context.getBean('rowModel');\n rowModel.start();\n };\n Grid.prototype.dispatchGridReadyEvent = function (gridOptions) {\n var eventService = this.context.getBean('eventService');\n var readyEvent = {\n type: Events.EVENT_GRID_READY,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n eventService.dispatchEvent(readyEvent);\n };\n Grid.prototype.getRowModelClass = function (registeredModules) {\n var rowModelType = this.gridOptions.rowModelType;\n //TODO: temporary measure before 'enterprise' is completely removed (similar handling in gridOptionsWrapper is also required)\n if (rowModelType === 'enterprise') {\n console.warn(\"ag-Grid: enterprise rowModel deprecated. Should now be called server side row model instead.\");\n rowModelType = Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n }\n if (rowModelType === 'normal') {\n console.warn(\"ag-Grid: normal rowModel deprecated. Should now be called client side row model instead.\");\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n // default to client side\n if (!rowModelType) {\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n var rowModelClasses = {};\n registeredModules.forEach(function (module) {\n _.iterateObject(module.rowModels, function (key, value) {\n rowModelClasses[key] = value;\n });\n });\n var rowModelClass = rowModelClasses[rowModelType];\n if (_.exists(rowModelClass)) {\n return rowModelClass;\n }\n else {\n if (rowModelType === Constants.ROW_MODEL_TYPE_INFINITE) {\n console.error(\"ag-Grid: Row Model \\\"Infinite\\\" not found. Please ensure the \" + exports.ModuleNames.InfiniteRowModelModule + \" is registered.';\");\n }\n console.error('ag-Grid: could not find matching row model for rowModelType ' + rowModelType);\n if (rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT) {\n console.error(\"ag-Grid: Row Model \\\"Viewport\\\" not found. Please ensure the ag-Grid Enterprise Module \" + exports.ModuleNames.ViewportRowModelModule + \" is registered.';\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n console.error(\"ag-Grid: Row Model \\\"Server Side\\\" not found. Please ensure the ag-Grid Enterprise Module \" + exports.ModuleNames.ServerSideRowModelModule + \" is registered.';\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.error(\"ag-Grid: Row Model \\\"Client Side\\\" not found. Please ensure the \" + exports.ModuleNames.ClientSideRowModelModule + \" is registered.';\");\n }\n return undefined;\n }\n };\n Grid.prototype.destroy = function () {\n this.gridOptions.api.destroy();\n };\n return Grid;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction initialiseAgGridWithAngular1(angular) {\n var angularModule = angular.module(\"agGrid\", []);\n angularModule.directive(\"agGrid\", function () {\n return {\n restrict: \"A\",\n controller: ['$element', '$scope', '$compile', '$attrs', AngularDirectiveController],\n scope: true\n };\n });\n}\nfunction AngularDirectiveController($element, $scope, $compile, $attrs) {\n var gridOptions;\n var quickFilterOnScope;\n var keyOfGridInScope = $attrs.agGrid;\n quickFilterOnScope = keyOfGridInScope + '.quickFilterText';\n gridOptions = $scope.$eval(keyOfGridInScope);\n if (!gridOptions) {\n console.warn(\"WARNING - grid options for ag-Grid not found. Please ensure the attribute ag-grid points to a valid object on the scope\");\n return;\n }\n var eGridDiv = $element[0];\n var gridParams = {\n $scope: $scope,\n $compile: $compile,\n quickFilterOnScope: quickFilterOnScope\n };\n var grid = new Grid(eGridDiv, gridOptions, gridParams);\n $scope.$on(\"$destroy\", function () {\n grid.destroy();\n grid = null;\n });\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar registered = false;\nfunction initialiseAgGridWithWebComponents() {\n console.warn('ag-grid: initialiseAgGridWithWebComponents is deprecated. Please use the ag-grid-webcomponent dependency instead. ');\n // only register to WebComponents once\n if (registered) {\n return;\n }\n registered = true;\n if (typeof document === 'undefined' || !document.registerElement) {\n console.error('ag-Grid: unable to find document.registerElement() function, unable to initialise ag-Grid as a Web Component');\n }\n // i don't think this type of extension is possible in TypeScript, so back to\n // plain Javascript to create this object\n var AgileGridProto = Object.create(HTMLElement.prototype);\n // wrap each property with a get and set method, so we can track when changes are done\n ComponentUtil.ALL_PROPERTIES.forEach(function (key) {\n Object.defineProperty(AgileGridProto, key, {\n set: function (v) {\n this.__agGridSetProperty(key, v);\n },\n get: function () {\n return this.__agGridGetProperty(key);\n },\n enumerable: true,\n configurable: true\n });\n });\n var agGridProtoNoType = AgileGridProto;\n agGridProtoNoType.__agGridSetProperty = function (key, value) {\n if (!this.__attributes) {\n this.__attributes = {};\n }\n this.__attributes[key] = value;\n // keeping this consistent with the ng2 onChange, so I can reuse the handling code\n var changeObject = {};\n changeObject[key] = { currentValue: value };\n this.onChange(changeObject);\n };\n agGridProtoNoType.onChange = function (changes) {\n if (this._initialised) {\n ComponentUtil.processOnChange(changes, this._gridOptions, this.api, this.columnApi);\n }\n };\n agGridProtoNoType.__agGridGetProperty = function (key) {\n if (!this.__attributes) {\n this.__attributes = {};\n }\n return this.__attributes[key];\n };\n agGridProtoNoType.setGridOptions = function (options) {\n var globalEventListener = this.globalEventListener.bind(this);\n this._gridOptions = ComponentUtil.copyAttributesToGridOptions(options, this);\n var gridParams = {\n globalEventListener: globalEventListener\n };\n this._agGrid = new Grid(this, this._gridOptions, gridParams);\n this.api = options.api;\n this.columnApi = options.columnApi;\n this._initialised = true;\n };\n // copies all the attributes into this object\n agGridProtoNoType.createdCallback = function () {\n for (var i = 0; i < this.attributes.length; i++) {\n var attribute = this.attributes[i];\n this.setPropertyFromAttribute(attribute);\n }\n };\n agGridProtoNoType.setPropertyFromAttribute = function (attribute) {\n var name = toCamelCase(attribute.nodeName);\n var value = attribute.nodeValue;\n if (ComponentUtil.ALL_PROPERTIES.indexOf(name) >= 0) {\n this[name] = value;\n }\n };\n agGridProtoNoType.attachedCallback = function (params) { };\n agGridProtoNoType.detachedCallback = function (params) { };\n agGridProtoNoType.attributeChangedCallback = function (attributeName) {\n var attribute = this.attributes[attributeName];\n this.setPropertyFromAttribute(attribute);\n };\n agGridProtoNoType.globalEventListener = function (eventType, event) {\n var eventLowerCase = eventType.toLowerCase();\n var browserEvent = new Event(eventLowerCase);\n var browserEventNoType = browserEvent;\n browserEventNoType.agGridDetails = event;\n this.dispatchEvent(browserEvent);\n var callbackMethod = 'on' + eventLowerCase;\n if (typeof this[callbackMethod] === 'function') {\n this[callbackMethod](browserEvent);\n }\n };\n // finally, register\n document.registerElement('ag-grid', { prototype: AgileGridProto });\n}\nfunction toCamelCase(myString) {\n if (typeof myString === 'string') {\n var result = myString.replace(/-([a-z])/g, function (g) {\n return g[1].toUpperCase();\n });\n return result;\n }\n else {\n return myString;\n }\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1b = (undefined && undefined.__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})();\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ManagedTabComponent = /** @class */ (function (_super) {\n __extends$1b(ManagedTabComponent, _super);\n function ManagedTabComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ManagedTabComponent.prototype.onTabKeyDown = function (e) {\n e.preventDefault();\n };\n ManagedTabComponent.prototype.attachListenersToGui = function () {\n var _this = this;\n var eGui = this.getGui();\n if (!eGui) {\n return;\n }\n if (this.tabListener) {\n this.tabListener = this.tabListener();\n }\n this.tabListener = this.addDestroyableEventListener(eGui, 'keydown', function (e) {\n if (e.keyCode === Constants.KEY_TAB) {\n _this.onTabKeyDown(e);\n }\n });\n };\n __decorate$1N([\n PostConstruct\n ], ManagedTabComponent.prototype, \"attachListenersToGui\", null);\n return ManagedTabComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1c = (undefined && undefined.__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})();\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabbedLayout = /** @class */ (function (_super) {\n __extends$1c(TabbedLayout, _super);\n function TabbedLayout(params) {\n var _this = _super.call(this, TabbedLayout.getTemplate(params.cssClass)) || this;\n _this.items = [];\n _this.params = params;\n if (params.items) {\n params.items.forEach(function (item) { return _this.addItem(item); });\n }\n return _this;\n }\n TabbedLayout.prototype.init = function () {\n this.addDestroyableEventListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));\n };\n TabbedLayout.prototype.handleKeyDown = function (e) {\n switch (e.keyCode) {\n case Constants.KEY_RIGHT:\n case Constants.KEY_LEFT:\n if (!this.eHeader.contains(document.activeElement)) {\n return;\n }\n var currentPosition = this.items.indexOf(this.activeItem);\n var nextPosition = e.keyCode === Constants.KEY_RIGHT ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);\n if (currentPosition === nextPosition) {\n return;\n }\n e.preventDefault();\n var nextItem = this.items[nextPosition];\n this.showItemWrapper(nextItem);\n nextItem.eHeaderButton.focus();\n break;\n case Constants.KEY_UP:\n case Constants.KEY_DOWN:\n e.stopPropagation();\n break;\n }\n };\n TabbedLayout.prototype.onTabKeyDown = function (e) {\n _super.prototype.onTabKeyDown.call(this, e);\n var focusableItems = this.focusController.findFocusableElements(this.eBody, '.ag-set-filter-list *, .ag-menu-list *');\n var activeElement = document.activeElement;\n if (this.eHeader.contains(activeElement)) {\n if (focusableItems.length) {\n focusableItems[e.shiftKey ? focusableItems.length - 1 : 0].focus();\n }\n }\n else {\n var focusedPosition = focusableItems.indexOf(activeElement);\n var nextPosition = e.shiftKey ? focusedPosition - 1 : focusedPosition + 1;\n if (nextPosition < 0 || nextPosition >= focusableItems.length) {\n this.activeItem.eHeaderButton.focus();\n return;\n }\n var nextItem = focusableItems[nextPosition];\n if (nextItem) {\n nextItem.focus();\n }\n }\n };\n TabbedLayout.getTemplate = function (cssClass) {\n return \"
\\n
\\n
\\n
\";\n };\n TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n this.afterAttachedParams = params;\n };\n TabbedLayout.prototype.getMinDimensions = function () {\n var eDummyContainer = this.getGui().cloneNode(true);\n var eDummyBody = eDummyContainer.querySelector('[ref=\"eBody\"]');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n this.getGui().appendChild(eDummyContainer);\n var minWidth = 0;\n var minHeight = 0;\n this.items.forEach(function (itemWrapper) {\n _.clearElement(eDummyBody);\n var eClone = itemWrapper.tabbedItem.bodyPromise.resolveNow(null, function (body) { return body.cloneNode(true); });\n if (eClone == null) {\n return;\n }\n eDummyBody.appendChild(eClone);\n if (minWidth < eDummyContainer.offsetWidth) {\n minWidth = eDummyContainer.offsetWidth;\n }\n if (minHeight < eDummyContainer.offsetHeight) {\n minHeight = eDummyContainer.offsetHeight;\n }\n });\n this.getGui().removeChild(eDummyContainer);\n return { height: minHeight, width: minWidth };\n };\n TabbedLayout.prototype.showFirstItem = function () {\n if (this.items.length > 0) {\n this.showItemWrapper(this.items[0]);\n }\n };\n TabbedLayout.prototype.addItem = function (item) {\n var eHeaderButton = document.createElement('span');\n eHeaderButton.tabIndex = -1;\n eHeaderButton.appendChild(item.title);\n _.addCssClass(eHeaderButton, 'ag-tab');\n this.eHeader.appendChild(eHeaderButton);\n var wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n };\n TabbedLayout.prototype.showItem = function (tabbedItem) {\n var itemWrapper = _.find(this.items, function (wrapper) {\n return wrapper.tabbedItem === tabbedItem;\n });\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n };\n TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n var _this = this;\n if (this.params.onItemClicked) {\n this.params.onItemClicked({ item: wrapper.tabbedItem });\n }\n if (this.activeItem === wrapper) {\n _.callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n _.clearElement(this.eBody);\n wrapper.tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n body.focus();\n });\n if (this.activeItem) {\n _.removeCssClass(this.activeItem.eHeaderButton, 'ag-tab-selected');\n }\n _.addCssClass(wrapper.eHeaderButton, 'ag-tab-selected');\n this.activeItem = wrapper;\n if (wrapper.tabbedItem.afterAttachedCallback) {\n wrapper.tabbedItem.afterAttachedCallback(this.afterAttachedParams);\n }\n };\n __decorate$1O([\n Autowired('focusController')\n ], TabbedLayout.prototype, \"focusController\", void 0);\n __decorate$1O([\n RefSelector('eHeader')\n ], TabbedLayout.prototype, \"eHeader\", void 0);\n __decorate$1O([\n RefSelector('eBody')\n ], TabbedLayout.prototype, \"eBody\", void 0);\n __decorate$1O([\n PostConstruct\n ], TabbedLayout.prototype, \"init\", null);\n return TabbedLayout;\n}(ManagedTabComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction simpleHttpRequest(params) {\n return new Promise(function (resolve) {\n var httpRequest = new XMLHttpRequest();\n httpRequest.open('GET', params.url);\n httpRequest.send();\n httpRequest.onreadystatechange = function () {\n if (httpRequest.readyState == 4 && httpRequest.status == 200) {\n var httpResponse = JSON.parse(httpRequest.responseText);\n resolve(httpResponse);\n }\n };\n });\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1d = (undefined && undefined.__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})();\nvar RowNodeBlock = /** @class */ (function (_super) {\n __extends$1d(RowNodeBlock, _super);\n function RowNodeBlock(blockNumber, rowNodeCacheParams) {\n var _this = _super.call(this) || this;\n _this.version = 0;\n _this.state = RowNodeBlock.STATE_DIRTY;\n _this.rowNodeCacheParams = rowNodeCacheParams;\n _this.blockNumber = blockNumber;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = blockNumber * rowNodeCacheParams.blockSize;\n _this.endRow = _this.startRow + rowNodeCacheParams.blockSize;\n return _this;\n }\n RowNodeBlock.prototype.isAnyNodeOpen = function (rowCount) {\n var result = false;\n this.forEachNodeCallback(function (rowNode) {\n if (rowNode.expanded) {\n result = true;\n }\n }, rowCount);\n return result;\n };\n RowNodeBlock.prototype.forEachNodeCallback = function (callback, rowCount) {\n for (var rowIndex = this.startRow; rowIndex < this.endRow; rowIndex++) {\n // we check against rowCount as this page may be the last one, and if it is, then\n // the last rows are not part of the set\n if (rowIndex < rowCount) {\n var rowNode = this.getRowUsingLocalIndex(rowIndex);\n callback(rowNode, rowIndex);\n }\n }\n };\n RowNodeBlock.prototype.forEachNode = function (callback, sequence, rowCount, deep) {\n this.forEachNodeCallback(function (rowNode) {\n callback(rowNode, sequence.next());\n // this will only every happen for server side row model, as infinite\n // row model doesn't have groups\n if (deep && rowNode.childrenCache) {\n rowNode.childrenCache.forEachNodeDeep(callback, sequence);\n }\n }, rowCount);\n };\n RowNodeBlock.prototype.forEachNodeDeep = function (callback, sequence, rowCount) {\n this.forEachNode(callback, sequence, rowCount, true);\n };\n RowNodeBlock.prototype.forEachNodeShallow = function (callback, sequence, rowCount) {\n this.forEachNode(callback, sequence, rowCount, false);\n };\n RowNodeBlock.prototype.getVersion = function () {\n return this.version;\n };\n RowNodeBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n RowNodeBlock.prototype.getRowUsingLocalIndex = function (rowIndex, dontTouchLastAccessed) {\n if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.rowNodeCacheParams.lastAccessedSequence.next();\n }\n var localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n };\n RowNodeBlock.prototype.init = function (beans) {\n this.beans = beans;\n this.createRowNodes();\n };\n RowNodeBlock.prototype.getStartRow = function () {\n return this.startRow;\n };\n RowNodeBlock.prototype.getEndRow = function () {\n return this.endRow;\n };\n RowNodeBlock.prototype.getBlockNumber = function () {\n return this.blockNumber;\n };\n RowNodeBlock.prototype.setDirty = function () {\n // in case any current loads in progress, this will have their results ignored\n this.version++;\n this.state = RowNodeBlock.STATE_DIRTY;\n };\n RowNodeBlock.prototype.setDirtyAndPurge = function () {\n this.setDirty();\n this.rowNodes.forEach(function (rowNode) {\n rowNode.setData(null);\n });\n };\n RowNodeBlock.prototype.getState = function () {\n return this.state;\n };\n RowNodeBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n var localIndex = rowIndex - this.startRow;\n this.rowNodes[localIndex] = rowNode;\n };\n RowNodeBlock.prototype.setBlankRowNode = function (rowIndex) {\n var localIndex = rowIndex - this.startRow;\n var newRowNode = this.createBlankRowNode(rowIndex);\n this.rowNodes[localIndex] = newRowNode;\n return newRowNode;\n };\n RowNodeBlock.prototype.setNewData = function (rowIndex, dataItem) {\n var newRowNode = this.setBlankRowNode(rowIndex);\n this.setDataAndId(newRowNode, dataItem, this.startRow + rowIndex);\n return newRowNode;\n };\n RowNodeBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = new RowNode();\n this.beans.context.wireBean(rowNode);\n rowNode.setRowHeight(this.rowNodeCacheParams.rowHeight);\n return rowNode;\n };\n // creates empty row nodes, data is missing as not loaded yet\n RowNodeBlock.prototype.createRowNodes = function () {\n this.rowNodes = [];\n for (var i = 0; i < this.rowNodeCacheParams.blockSize; i++) {\n var rowIndex = this.startRow + i;\n var rowNode = this.createBlankRowNode(rowIndex);\n this.rowNodes.push(rowNode);\n }\n };\n RowNodeBlock.prototype.load = function () {\n this.state = RowNodeBlock.STATE_LOADING;\n this.loadFromDatasource();\n };\n RowNodeBlock.prototype.pageLoadFailed = function () {\n this.state = RowNodeBlock.STATE_FAILED;\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: false,\n page: this,\n lastRow: null\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.prototype.populateWithRowData = function (rows) {\n var _this = this;\n var rowNodesToRefresh = [];\n this.rowNodes.forEach(function (rowNode, index) {\n var data = rows[index];\n if (rowNode.stub) {\n rowNodesToRefresh.push(rowNode);\n }\n _this.setDataAndId(rowNode, data, _this.startRow + index);\n });\n if (rowNodesToRefresh.length > 0) {\n this.beans.rowRenderer.redrawRows(rowNodesToRefresh);\n }\n };\n RowNodeBlock.prototype.destroy = function () {\n this.rowNodes.forEach(function (rowNode) {\n if (rowNode.childrenCache) {\n rowNode.childrenCache.destroy();\n rowNode.childrenCache = null;\n }\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown. maybe\n // rowNode should have a flag on whether it is visible???\n rowNode.clearRowTop();\n });\n _super.prototype.destroy.call(this);\n };\n RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n // we need to check the version, in case there was an old request\n // from the server that was sent before we refreshed the cache,\n // if the load was done as a result of a cache refresh\n if (version === this.version) {\n this.state = RowNodeBlock.STATE_LOADED;\n this.populateWithRowData(rows);\n }\n lastRow = _.cleanNumber(lastRow);\n // check here if lastRow should be set\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: true,\n page: this,\n lastRow: lastRow\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n RowNodeBlock.STATE_DIRTY = 'dirty';\n RowNodeBlock.STATE_LOADING = 'loading';\n RowNodeBlock.STATE_LOADED = 'loaded';\n RowNodeBlock.STATE_FAILED = 'failed';\n return RowNodeBlock;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$9 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar RowNodeBlockLoader = /** @class */ (function () {\n function RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis) {\n this.activeBlockLoadsCount = 0;\n this.blocks = [];\n this.active = true;\n this.maxConcurrentRequests = maxConcurrentRequests;\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = _.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n }\n RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n };\n RowNodeBlockLoader.prototype.addBlock = function (block) {\n this.blocks.push(block);\n };\n RowNodeBlockLoader.prototype.removeBlock = function (block) {\n _.removeFromArray(this.blocks, block);\n };\n RowNodeBlockLoader.prototype.destroy = function () {\n this.active = false;\n };\n RowNodeBlockLoader.prototype.loadComplete = function () {\n this.activeBlockLoadsCount--;\n };\n RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n };\n RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n return;\n }\n var blockToLoad = null;\n this.blocks.forEach(function (block) {\n if (block.getState() === RowNodeBlock.STATE_DIRTY) {\n blockToLoad = block;\n }\n });\n if (blockToLoad) {\n blockToLoad.load();\n this.activeBlockLoadsCount++;\n this.logger.log(\"checkBlockToLoad: loading page \" + blockToLoad.getBlockNumber());\n this.printCacheStatus();\n }\n else {\n this.logger.log(\"checkBlockToLoad: no pages to load\");\n }\n };\n RowNodeBlockLoader.prototype.getBlockState = function () {\n var result = {};\n this.blocks.forEach(function (block) {\n var nodeIdPrefix = block.getNodeIdPrefix();\n var stateItem = {\n blockNumber: block.getBlockNumber(),\n startRow: block.getStartRow(),\n endRow: block.getEndRow(),\n pageStatus: block.getState()\n };\n if (_.exists(nodeIdPrefix)) {\n result[nodeIdPrefix + block.getBlockNumber()] = stateItem;\n }\n else {\n result[block.getBlockNumber()] = stateItem;\n }\n });\n return result;\n };\n RowNodeBlockLoader.prototype.printCacheStatus = function () {\n if (this.logger.isLogging()) {\n this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n }\n };\n RowNodeBlockLoader.prototype.isLoading = function () {\n return this.activeBlockLoadsCount > 0;\n };\n __decorate$1P([\n __param$9(0, Qualifier('loggerFactory'))\n ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n return RowNodeBlockLoader;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1e = (undefined && undefined.__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})();\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowNodeCache = /** @class */ (function (_super) {\n __extends$1e(RowNodeCache, _super);\n function RowNodeCache(cacheParams) {\n var _this = _super.call(this) || this;\n _this.maxRowFound = false;\n _this.blocks = {};\n _this.blockCount = 0;\n _this.virtualRowCount = cacheParams.initialRowCount;\n _this.cacheParams = cacheParams;\n return _this;\n }\n RowNodeCache.prototype.destroy = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return _this.destroyBlock(block); });\n _super.prototype.destroy.call(this);\n };\n RowNodeCache.prototype.init = function () {\n var _this = this;\n this.active = true;\n this.addDestroyFunc(function () { return _this.active = false; });\n };\n RowNodeCache.prototype.isActive = function () {\n return this.active;\n };\n RowNodeCache.prototype.getVirtualRowCount = function () {\n return this.virtualRowCount;\n };\n RowNodeCache.prototype.hack_setVirtualRowCount = function (virtualRowCount) {\n this.virtualRowCount = virtualRowCount;\n };\n RowNodeCache.prototype.isMaxRowFound = function () {\n return this.maxRowFound;\n };\n // listener on EVENT_LOAD_COMPLETE\n RowNodeCache.prototype.onPageLoaded = function (event) {\n this.cacheParams.rowNodeBlockLoader.loadComplete();\n this.checkBlockToLoad();\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isActive()) {\n return;\n }\n this.logger.log(\"onPageLoaded: page = \" + event.page.getBlockNumber() + \", lastRow = \" + event.lastRow);\n if (event.success) {\n this.checkVirtualRowCount(event.page, event.lastRow);\n }\n };\n RowNodeCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // put all candidate blocks into a list for sorting\n var blocksForPurging = [];\n this.forEachBlockInOrder(function (block) {\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n if (block === blockToExclude) {\n return;\n }\n blocksForPurging.push(block);\n });\n // note: need to verify that this sorts items in the right order\n blocksForPurging.sort(function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); });\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.cacheParams.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.cacheParams.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === RowNodeBlock.STATE_DIRTY && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // we never purge blocks if they are open, as purging them would mess up with\n // our indexes, it would be very messy to restore the purged block to it's\n // previous state if it had open children (and what if open children of open\n // children, jeeeesus, just thinking about it freaks me out) so best is have a\n // rule, if block is open, we never purge.\n if (block.isAnyNodeOpen(_this.virtualRowCount)) {\n return;\n }\n // if the block currently has rows been displayed, then don't remove it either.\n // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)\n // but the screen is showing 20 rows, so at least 4 blocks are needed.\n if (_this.isBlockCurrentlyDisplayed(block)) {\n return;\n }\n // at this point, block is not needed, and no open nodes, so burn baby burn\n _this.removeBlockFromCache(block);\n }\n });\n };\n RowNodeCache.prototype.isBlockCurrentlyDisplayed = function (block) {\n var firstViewportRow = this.rowRenderer.getFirstVirtualRenderedRow();\n var lastViewportRow = this.rowRenderer.getLastVirtualRenderedRow();\n var firstRowIndex = block.getDisplayIndexStart();\n var lastRowIndex = block.getDisplayIndexEnd() - 1;\n // parent closed means the parent node is not expanded, thus these blocks are not visible\n var parentClosed = firstRowIndex == null || lastRowIndex == null;\n if (parentClosed) {\n return false;\n }\n var blockBeforeViewport = firstRowIndex > lastViewportRow;\n var blockAfterViewport = lastRowIndex < firstViewportRow;\n var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n return blockInsideViewport;\n };\n RowNodeCache.prototype.postCreateBlock = function (newBlock) {\n newBlock.addEventListener(RowNodeBlock.EVENT_LOAD_COMPLETE, this.onPageLoaded.bind(this));\n this.setBlock(newBlock.getBlockNumber(), newBlock);\n this.purgeBlocksIfNeeded(newBlock);\n this.checkBlockToLoad();\n };\n RowNodeCache.prototype.removeBlockFromCache = function (blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n // we do not want to remove the 'loaded' event listener, as the\n // concurrent loads count needs to be updated when the load is complete\n // if the purged page is in loading state\n };\n // gets called after: 1) block loaded 2) block created 3) cache refresh\n RowNodeCache.prototype.checkBlockToLoad = function () {\n this.cacheParams.rowNodeBlockLoader.checkBlockToLoad();\n };\n RowNodeCache.prototype.checkVirtualRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.virtualRowCount = lastRow;\n this.maxRowFound = true;\n this.onCacheUpdated();\n }\n else if (!this.maxRowFound) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getBlockNumber() + 1) * this.cacheParams.blockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + this.cacheParams.overflowSize;\n if (this.virtualRowCount < lastRowIndexPlusOverflow) {\n this.virtualRowCount = lastRowIndexPlusOverflow;\n this.onCacheUpdated();\n }\n else if (this.cacheParams.dynamicRowHeight) {\n // the only other time is if dynamic row height, as loading rows\n // will change the height of the block, given the height of the rows\n // is only known after the row is loaded.\n this.onCacheUpdated();\n }\n }\n };\n RowNodeCache.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n this.virtualRowCount = rowCount;\n // if undefined is passed, we do not set this value, if one of {true,false}\n // is passed, we do set the value.\n if (_.exists(maxRowFound)) {\n this.maxRowFound = maxRowFound;\n }\n // if we are still searching, then the row count must not end at the end\n // of a particular page, otherwise the searching will not pop into the\n // next page\n if (!this.maxRowFound) {\n if (this.virtualRowCount % this.cacheParams.blockSize === 0) {\n this.virtualRowCount++;\n }\n }\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.forEachNodeDeep = function (callback, sequence) {\n var _this = this;\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.forEachBlockInOrder(function (block) {\n block.forEachNodeDeep(callback, sequence, _this.virtualRowCount);\n });\n };\n RowNodeCache.prototype.forEachBlockInOrder = function (callback) {\n var ids = this.getBlockIdsSorted();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockInReverseOrder = function (callback) {\n var ids = this.getBlockIdsSorted().reverse();\n this.forEachBlockId(ids, callback);\n };\n RowNodeCache.prototype.forEachBlockId = function (ids, callback) {\n var _this = this;\n ids.forEach(function (id) {\n var block = _this.blocks[id];\n callback(block, id);\n });\n };\n RowNodeCache.prototype.getBlockIdsSorted = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var numberComparator = function (a, b) { return a - b; }; // default comparator for array is string comparison\n var blockIds = Object.keys(this.blocks).map(function (idStr) { return parseInt(idStr, 10); }).sort(numberComparator);\n return blockIds;\n };\n RowNodeCache.prototype.getBlock = function (blockId) {\n return this.blocks[blockId];\n };\n RowNodeCache.prototype.setBlock = function (id, block) {\n this.blocks[id] = block;\n this.blockCount++;\n this.cacheParams.rowNodeBlockLoader.addBlock(block);\n };\n RowNodeCache.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getBlockNumber()];\n block.destroy();\n this.blockCount--;\n this.cacheParams.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n RowNodeCache.prototype.onCacheUpdated = function () {\n if (this.isActive()) {\n // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer\n // in the valid range. so we must remove these. this can happen if user explicitly sets\n // the virtual row count, or the datasource returns a result and sets lastRow to something\n // less than virtualRowCount (can happen if user scrolls down, server reduces dataset size).\n this.destroyAllBlocksPastVirtualRowCount();\n // this results in both row models (infinite and server side) firing ModelUpdated,\n // however server side row model also updates the row indexes first\n var event_1 = {\n type: RowNodeCache.EVENT_CACHE_UPDATED\n };\n this.dispatchEvent(event_1);\n }\n };\n RowNodeCache.prototype.destroyAllBlocksPastVirtualRowCount = function () {\n var _this = this;\n var blocksToDestroy = [];\n this.forEachBlockInOrder(function (block, id) {\n var startRow = id * _this.cacheParams.blockSize;\n if (startRow >= _this.virtualRowCount) {\n blocksToDestroy.push(block);\n }\n });\n if (blocksToDestroy.length > 0) {\n blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });\n }\n };\n RowNodeCache.prototype.purgeCache = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return _this.removeBlockFromCache(block); });\n this.maxRowFound = false;\n // if zero rows in the cache, we need to get the SSRM to start asking for rows again.\n // otherwise if set to zero rows last time, and we don't update the row count, then after\n // the purge there will still be zero rows, meaning the SRRM won't request any rows.\n // to kick things off, at lest one row needs to be asked for.\n if (this.virtualRowCount === 0) {\n this.virtualRowCount = this.cacheParams.initialRowCount;\n }\n this.onCacheUpdated();\n };\n RowNodeCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var _this = this;\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n var numberSequence = new NumberSequence();\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.forEachBlockInOrder(function (block, id) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== id)) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = id;\n block.forEachNodeShallow(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n }, numberSequence, _this.virtualRowCount);\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n RowNodeCache.EVENT_CACHE_UPDATED = 'cacheUpdated';\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n RowNodeCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n __decorate$1Q([\n Autowired('eventService')\n ], RowNodeCache.prototype, \"eventService\", void 0);\n __decorate$1Q([\n Autowired('rowRenderer')\n ], RowNodeCache.prototype, \"rowRenderer\", void 0);\n __decorate$1Q([\n PostConstruct\n ], RowNodeCache.prototype, \"init\", null);\n return RowNodeCache;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1f = (undefined && undefined.__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})();\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar VirtualList = /** @class */ (function (_super) {\n __extends$1f(VirtualList, _super);\n function VirtualList(cssIdentifier) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n var _this = _super.call(this, VirtualList.getTemplate(cssIdentifier)) || this;\n _this.cssIdentifier = cssIdentifier;\n _this.rowsInBodyContainer = {};\n _this.rowHeight = 20;\n return _this;\n }\n VirtualList.prototype.init = function () {\n this.eListContainer = this.queryForHtmlElement('.ag-virtual-list-container');\n this.addScrollListener();\n this.rowHeight = this.getItemHeight();\n };\n VirtualList.getTemplate = function (cssIdentifier) {\n return /* html */ \"\\n
\\n
\\n
\";\n };\n VirtualList.prototype.getItemHeight = function () {\n return this.gridOptionsWrapper.getListItemHeight();\n };\n VirtualList.prototype.ensureIndexVisible = function (index) {\n var lastRow = this.model.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= lastRow) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n var rowTopPixel = index * this.rowHeight;\n var rowBottomPixel = rowTopPixel + this.rowHeight;\n var eGui = this.getGui();\n var viewportTopPixel = eGui.scrollTop;\n var viewportHeight = eGui.offsetHeight;\n var viewportBottomPixel = viewportTopPixel + viewportHeight;\n var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;\n var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;\n if (viewportScrolledPastRow) {\n // if row is before, scroll up with row at top\n eGui.scrollTop = rowTopPixel;\n }\n else if (viewportScrolledBeforeRow) {\n // if row is below, scroll down with row at bottom\n var newScrollPosition = rowBottomPixel - viewportHeight;\n eGui.scrollTop = newScrollPosition;\n }\n };\n VirtualList.prototype.setComponentCreator = function (componentCreator) {\n this.componentCreator = componentCreator;\n };\n VirtualList.prototype.getRowHeight = function () {\n return this.rowHeight;\n };\n VirtualList.prototype.getScrollTop = function () {\n return this.getGui().scrollTop;\n };\n VirtualList.prototype.setRowHeight = function (rowHeight) {\n this.rowHeight = rowHeight;\n this.refresh();\n };\n VirtualList.prototype.refresh = function () {\n if (_.missing(this.model)) {\n return;\n }\n this.eListContainer.style.height = this.model.getRowCount() * this.rowHeight + \"px\";\n this.clearVirtualRows();\n this.drawVirtualRows();\n };\n VirtualList.prototype.clearVirtualRows = function () {\n var rowsToRemove = Object.keys(this.rowsInBodyContainer);\n this.removeVirtualRows(rowsToRemove);\n };\n VirtualList.prototype.drawVirtualRows = function () {\n var topPixel = this.getGui().scrollTop;\n var bottomPixel = topPixel + this.getGui().offsetHeight;\n var firstRow = Math.floor(topPixel / this.rowHeight);\n var lastRow = Math.floor(bottomPixel / this.rowHeight);\n this.ensureRowsRendered(firstRow, lastRow);\n };\n VirtualList.prototype.ensureRowsRendered = function (start, finish) {\n // at the end, this array will contain the items we need to remove\n var rowsToRemove = Object.keys(this.rowsInBodyContainer);\n // add in new rows\n for (var rowIndex = start; rowIndex <= finish; rowIndex++) {\n // see if item already there, and if yes, take it out of the 'to remove' array\n if (rowsToRemove.indexOf(rowIndex.toString()) >= 0) {\n rowsToRemove.splice(rowsToRemove.indexOf(rowIndex.toString()), 1);\n continue;\n }\n // check this row actually exists (in case overflow buffer window exceeds real data)\n if (this.model.getRowCount() > rowIndex) {\n var value = this.model.getRow(rowIndex);\n this.insertRow(value, rowIndex);\n }\n }\n // at this point, everything in our 'rowsToRemove' . . .\n this.removeVirtualRows(rowsToRemove);\n };\n // takes array of row id's\n VirtualList.prototype.removeVirtualRows = function (rowsToRemove) {\n var _this = this;\n rowsToRemove.forEach(function (index) {\n var component = _this.rowsInBodyContainer[index];\n _this.eListContainer.removeChild(component.eDiv);\n if (component.rowComponent.destroy) {\n component.rowComponent.destroy();\n }\n delete _this.rowsInBodyContainer[index];\n });\n };\n VirtualList.prototype.insertRow = function (value, rowIndex) {\n var eDiv = document.createElement('div');\n _.addCssClass(eDiv, 'ag-virtual-list-item');\n _.addCssClass(eDiv, \"ag-\" + this.cssIdentifier + \"-virtual-list-item\");\n eDiv.style.height = this.rowHeight + \"px\";\n eDiv.style.top = this.rowHeight * rowIndex + \"px\";\n var rowComponent = this.componentCreator(value);\n eDiv.appendChild(rowComponent.getGui());\n this.eListContainer.appendChild(eDiv);\n this.rowsInBodyContainer[rowIndex] = {\n rowComponent: rowComponent,\n eDiv: eDiv\n };\n };\n VirtualList.prototype.addScrollListener = function () {\n var _this = this;\n this.addGuiEventListener('scroll', function () { return _this.drawVirtualRows(); });\n };\n VirtualList.prototype.setModel = function (model) {\n this.model = model;\n };\n __decorate$1R([\n Autowired('gridOptionsWrapper')\n ], VirtualList.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1R([\n PostConstruct\n ], VirtualList.prototype, \"init\", null);\n return VirtualList;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nfunction defaultGroupComparator(valueA, valueB, nodeA, nodeB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n console.warn('ag-Grid: Since ag-grid 11.0.0 defaultGroupComparator is not necessary. You can remove this from your colDef');\n var nodeAIsGroup = _.exists(nodeA) && nodeA.group;\n var nodeBIsGroup = _.exists(nodeB) && nodeB.group;\n var bothAreGroups = nodeAIsGroup && nodeBIsGroup;\n var bothAreNormal = !nodeAIsGroup && !nodeBIsGroup;\n if (bothAreGroups) {\n return _.defaultComparator(nodeA.key, nodeB.key, accentedCompare);\n }\n else if (bothAreNormal) {\n return _.defaultComparator(valueA, valueB, accentedCompare);\n }\n else if (nodeAIsGroup) {\n return 1;\n }\n else {\n return -1;\n }\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar BaseComponentWrapper = /** @class */ (function () {\n function BaseComponentWrapper() {\n }\n BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType, componentName) {\n var _this = this;\n if (optionalMethodList === void 0) { optionalMethodList = []; }\n var wrapper = this.createWrapper(OriginalConstructor, componentType, componentName);\n mandatoryMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, true);\n }));\n optionalMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, false);\n }));\n return wrapper;\n };\n BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n };\n BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n return function () {\n if (wrapper.hasMethod(methodName)) {\n return wrapper.callMethod(methodName, arguments);\n }\n if (mandatory) {\n console.warn('ag-Grid: Framework component is missing the method ' + methodName + '()');\n }\n return null;\n };\n };\n return BaseComponentWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n(function (ChartType) {\n ChartType[\"GroupedColumn\"] = \"groupedColumn\";\n ChartType[\"StackedColumn\"] = \"stackedColumn\";\n ChartType[\"NormalizedColumn\"] = \"normalizedColumn\";\n ChartType[\"GroupedBar\"] = \"groupedBar\";\n ChartType[\"StackedBar\"] = \"stackedBar\";\n ChartType[\"NormalizedBar\"] = \"normalizedBar\";\n ChartType[\"Line\"] = \"line\";\n ChartType[\"Scatter\"] = \"scatter\";\n ChartType[\"Bubble\"] = \"bubble\";\n ChartType[\"Pie\"] = \"pie\";\n ChartType[\"Doughnut\"] = \"doughnut\";\n ChartType[\"Area\"] = \"area\";\n ChartType[\"StackedArea\"] = \"stackedArea\";\n ChartType[\"NormalizedArea\"] = \"normalizedArea\";\n ChartType[\"Histogram\"] = \"histogram\";\n})(exports.ChartType || (exports.ChartType = {}));\n(function (LegendPosition) {\n LegendPosition[\"Top\"] = \"top\";\n LegendPosition[\"Right\"] = \"right\";\n LegendPosition[\"Bottom\"] = \"bottom\";\n LegendPosition[\"Left\"] = \"left\";\n})(exports.LegendPosition || (exports.LegendPosition = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v23.1.1\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n\nvar ClientSideNodeManager = /** @class */ (function () {\n function ClientSideNodeManager(rootNode, gridOptionsWrapper, context, eventService, columnController, gridApi, columnApi, selectionController) {\n this.nextId = 0;\n // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n this.allNodesMap = {};\n this.rootNode = rootNode;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.context = context;\n this.eventService = eventService;\n this.columnController = columnController;\n this.gridApi = gridApi;\n this.columnApi = columnApi;\n this.selectionController = selectionController;\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n this.rootNode.childrenAfterSort = [];\n this.rootNode.childrenAfterFilter = [];\n // if we make this class a bean, then can annotate postConstruct\n this.postConstruct();\n }\n // @PostConstruct - this is not a bean, so postConstruct called by constructor\n ClientSideNodeManager.prototype.postConstruct = function () {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.getNodeChildDetails = this.gridOptionsWrapper.getNodeChildDetailsFunc();\n this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();\n this.doesDataFlower = this.gridOptionsWrapper.getDoesDataFlowerFunc();\n this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n this.doingLegacyTreeData = _.exists(this.getNodeChildDetails);\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n if (this.getNodeChildDetails) {\n console.warn(\"ag-Grid: the callback nodeChildDetailsFunc() is now deprecated. The new way of doing\\n tree data in ag-Grid was introduced in v14 (released November 2017). In the next\\n major release of ag-Grid we will be dropping support for the old version of\\n tree data. If you are reading this message, please go to the docs to see how\\n to implement Tree Data without using nodeChildDetailsFunc().\");\n }\n };\n ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n var result = _.cloneObject(this.allNodesMap);\n return result;\n };\n ClientSideNodeManager.prototype.getRowNode = function (id) {\n return this.allNodesMap[id];\n };\n ClientSideNodeManager.prototype.setRowData = function (rowData) {\n this.rootNode.childrenAfterFilter = null;\n this.rootNode.childrenAfterGroup = null;\n this.rootNode.childrenAfterSort = null;\n this.rootNode.childrenMapped = null;\n this.nextId = 0;\n this.allNodesMap = {};\n if (!rowData) {\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n return;\n }\n // kick off recursion\n // we add rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n // sets the parent node on each row (even if we are not grouping). so setting parent node\n // here is for benefit of ag-grid-community users\n var result = this.recursiveFunction(rowData, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (this.doingLegacyTreeData) {\n this.rootNode.childrenAfterGroup = result;\n this.setLeafChildren(this.rootNode);\n }\n else {\n this.rootNode.allLeafChildren = result;\n }\n };\n ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n if (this.isLegacyTreeData()) {\n return null;\n }\n var rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n this.executeAdd(rowDataTran, rowNodeTransaction);\n this.executeRemove(rowDataTran, rowNodeTransaction);\n this.executeUpdate(rowDataTran, rowNodeTransaction);\n if (rowNodeOrder) {\n _.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n };\n ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n if (!add) {\n return;\n }\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(function (item) {\n var newRowNode = _this.addRowNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n else {\n add.forEach(function (item) {\n var newRowNode = _this.addRowNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n };\n ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (!remove) {\n return;\n }\n var rowIdsRemoved = {};\n var anyNodesSelected = false;\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n if (rowNode.isSelected()) {\n anyNodesSelected = true;\n }\n // do delete - setting 'tailingNodeInSequence = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n rowNode.setSelected(false, false, true);\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTop();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n });\n this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n if (anyNodesSelected) {\n this.selectionController.updateGroupsFromChildrenSelections();\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var update = rowDataTran.update;\n if (!update) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n rowNodeTransaction.update.push(rowNode);\n });\n };\n ClientSideNodeManager.prototype.addRowNode = function (data, index) {\n var newNode = this.createNode(data, this.rootNode, ClientSideNodeManager.TOP_LEVEL);\n if (_.exists(index)) {\n _.insertIntoArray(this.rootNode.allLeafChildren, newNode, index);\n }\n else {\n this.rootNode.allLeafChildren.push(newNode);\n }\n return newNode;\n };\n ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n var rowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n var rowNode;\n if (_.exists(rowNodeIdFunc)) {\n // find rowNode using id\n var id = rowNodeIdFunc(data);\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"ag-Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = _.find(this.rootNode.allLeafChildren, function (rowNode) { return rowNode.data === data; });\n if (!rowNode) {\n console.error(\"ag-Grid: could not find data item as object was not found\", data);\n return null;\n }\n }\n return rowNode;\n };\n ClientSideNodeManager.prototype.recursiveFunction = function (rowData, parent, level) {\n var _this = this;\n // make sure the rowData is an array and not a string of json - this was a commonly reported problem on the forum\n if (typeof rowData === 'string') {\n console.warn('ag-Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n return;\n }\n var rowNodes = [];\n rowData.forEach(function (dataItem) {\n var node = _this.createNode(dataItem, parent, level);\n rowNodes.push(node);\n });\n return rowNodes;\n };\n ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n var node = new RowNode();\n this.context.wireBean(node);\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingLegacyTreeData = !doingTreeData && _.exists(this.getNodeChildDetails);\n var nodeChildDetails = doingLegacyTreeData ? this.getNodeChildDetails(dataItem) : null;\n if (nodeChildDetails && nodeChildDetails.group) {\n node.group = true;\n node.childrenAfterGroup = this.recursiveFunction(nodeChildDetails.children, node, level + 1);\n node.expanded = nodeChildDetails.expanded === true;\n node.field = nodeChildDetails.field;\n node.key = nodeChildDetails.key;\n /** @deprecated is now 'master' */\n node.canFlower = node.master;\n // pull out all the leaf children and add to our node\n this.setLeafChildren(node);\n }\n else {\n node.group = false;\n if (doingTreeData) {\n node.master = false;\n node.expanded = false;\n }\n else {\n // this is the default, for when doing grid data\n if (this.doesDataFlower) {\n node.master = this.doesDataFlower(dataItem);\n }\n else if (this.doingMasterDetail) {\n // if we are doing master detail, then the\n // default is that everything can flower.\n if (this.isRowMasterFunc) {\n node.master = this.isRowMasterFunc(dataItem);\n }\n else {\n node.master = true;\n }\n }\n else {\n node.master = false;\n }\n var rowGroupColumns = this.columnController.getRowGroupColumns();\n var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n var masterRowLevel = level + numRowGroupColumns;\n node.expanded = node.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n // support for backwards compatibility, canFlow is now called 'master'\n node.canFlower = node.master;\n if (parent && !this.suppressParentsInRowNodes) {\n node.parent = parent;\n }\n node.level = level;\n node.setDataAndId(dataItem, this.nextId.toString());\n if (this.allNodesMap[node.id]) {\n console.warn(\"ag-grid: duplicate node id '\" + node.id + \"' detected from getRowNodeId callback, this could cause issues in your grid.\");\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n };\n ClientSideNodeManager.prototype.isExpanded = function (level) {\n var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();\n if (expandByDefault === -1) {\n return true;\n }\n else {\n return level < expandByDefault;\n }\n };\n // this is only used for doing legacy tree data\n ClientSideNodeManager.prototype.setLeafChildren = function (node) {\n node.allLeafChildren = [];\n if (node.childrenAfterGroup) {\n node.childrenAfterGroup.forEach(function (childAfterGroup) {\n if (childAfterGroup.group) {\n if (childAfterGroup.allLeafChildren) {\n childAfterGroup.allLeafChildren.forEach(function (leafChild) { return node.allLeafChildren.push(leafChild); });\n }\n }\n else {\n node.allLeafChildren.push(childAfterGroup);\n }\n });\n }\n };\n ClientSideNodeManager.prototype.isLegacyTreeData = function () {\n var rowsAlreadyGrouped = _.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (rowsAlreadyGrouped) {\n console.warn('ag-Grid: adding and removing rows is not supported when using nodeChildDetailsFunc, ie it is not ' +\n 'supported for legacy tree data. Please see the docs on the new preferred way of providing tree data that works with delta updates.');\n return true;\n }\n else {\n return false;\n }\n };\n ClientSideNodeManager.TOP_LEVEL = 0;\n ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n return ClientSideNodeManager;\n}());\n\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RecursionType;\n(function (RecursionType) {\n RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function () {\n function ClientSideRowModel() {\n this.events = [];\n }\n ClientSideRowModel.prototype.init = function () {\n var refreshEverythingFunc = this.refreshModel.bind(this, { step: Constants.STEP_EVERYTHING });\n var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, { step: Constants.STEP_EVERYTHING, afterColumnsChanged: true });\n this.events = [\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_EVERYTHING_CHANGED, refreshEverythingAfterColsChangedFunc),\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc),\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this)),\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: Constants.STEP_PIVOT })),\n this.eventService.addModalPriorityEventListener(Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this)),\n this.eventService.addModalPriorityEventListener(Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this)),\n this.eventService.addModalPriorityEventListener(Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this)),\n this.eventService.addModalPriorityEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc)\n ];\n this.refreshMapFunc = this.refreshModel.bind(this, {\n step: Constants.STEP_MAP,\n keepRenderedRows: true,\n animate: true\n });\n this.gridOptionsWrapper.addEventListener(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, this.refreshMapFunc);\n this.gridOptionsWrapper.addEventListener(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, this.refreshMapFunc);\n this.rootNode = new RowNode();\n this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsWrapper, this.context, this.eventService, this.columnController, this.gridApi, this.columnApi, this.selectionController);\n this.context.wireBean(this.rootNode);\n };\n ClientSideRowModel.prototype.destroy = function () {\n if (this.events.length) {\n this.events.forEach(function (func) { return func(); });\n this.events = [];\n }\n this.gridOptionsWrapper.removeEventListener(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, this.refreshMapFunc);\n this.gridOptionsWrapper.removeEventListener(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, this.refreshMapFunc);\n };\n ClientSideRowModel.prototype.start = function () {\n var rowData = this.gridOptionsWrapper.getRowData();\n if (rowData) {\n this.setRowData(rowData);\n }\n };\n ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var atLeastOneChange;\n var res = false;\n // we do this multiple times as changing the row heights can also change the first and last rows,\n // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n // more rows.\n do {\n atLeastOneChange = false;\n var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n var rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTops();\n }\n } while (atLeastOneChange);\n return res;\n };\n ClientSideRowModel.prototype.setRowTops = function () {\n var nextRowTop = 0;\n for (var i = 0; i < this.rowsToDisplay.length; i++) {\n // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n // with these two layouts.\n var allowEstimate = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var rowNode = this.rowsToDisplay[i];\n if (_.missing(rowNode.rowHeight)) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n };\n ClientSideRowModel.prototype.resetRowTops = function (rowNode, changedPath) {\n rowNode.clearRowTop();\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n // if a changedPath is active, it means we are here because of a transaction update or\n // a change detection. neither of these impacts the open/closed state of groups. so if\n // a group is not open this time, it was not open last time. so we know all closed groups\n // already have their top positions cleared. so there is no need to traverse all the way\n // when changedPath is active and the rowNode is not expanded.\n var skipChildren = changedPath.isActive() && !rowNode.expanded;\n if (!skipChildren) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n this.resetRowTops(rowNode.childrenAfterGroup[i], changedPath);\n }\n }\n }\n if (rowNode.sibling) {\n rowNode.sibling.clearRowTop();\n }\n }\n if (rowNode.detailNode) {\n rowNode.detailNode.clearRowTop();\n }\n };\n // returns false if row was moved, otherwise true\n ClientSideRowModel.prototype.ensureRowsAtPixel = function (rowNodes, pixel, increment) {\n var _this = this;\n if (increment === void 0) { increment = 0; }\n var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n if (rowNodeAtPixelNow === rowNodes[0]) {\n return false;\n }\n rowNodes.forEach(function (rowNode) {\n _.removeFromArray(_this.rootNode.allLeafChildren, rowNode);\n });\n rowNodes.forEach(function (rowNode, idx) {\n _.insertIntoArray(_this.rootNode.allLeafChildren, rowNode, indexAtPixelNow + increment + idx);\n });\n this.refreshModel({\n step: Constants.STEP_EVERYTHING,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n return true;\n };\n ClientSideRowModel.prototype.highlightRowAtPixel = function (rowNode, pixel) {\n var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;\n var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;\n if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {\n if (this.lastHighlightedRow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n return;\n }\n var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);\n if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n rowNodeAtPixelNow.setHighlighted(highlight);\n this.lastHighlightedRow = rowNodeAtPixelNow;\n };\n ClientSideRowModel.prototype.getHighlightPosition = function (pixel, rowNode) {\n if (!rowNode) {\n var index = this.getRowIndexAtPixel(pixel);\n rowNode = this.getRow(index || 0);\n if (!rowNode) {\n return 'below';\n }\n }\n var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;\n return pixel - rowTop < rowHeight / 2 ? 'above' : 'below';\n };\n ClientSideRowModel.prototype.getLastHighlightedRowNode = function () {\n return this.lastHighlightedRow;\n };\n ClientSideRowModel.prototype.isLastRowFound = function () {\n return true;\n };\n ClientSideRowModel.prototype.getRowCount = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n return 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowCount = function () {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return 1;\n }\n return this.rootNode.childrenAfterFilter ? this.rootNode.childrenAfterFilter.length : 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return topLevelIndex;\n }\n var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is\n while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n rowNode = rowNode.childrenAfterSort[0];\n }\n }\n return rowNode.rowIndex;\n };\n ClientSideRowModel.prototype.getRowBounds = function (index) {\n if (_.missing(this.rowsToDisplay)) {\n return null;\n }\n var rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n return null;\n };\n ClientSideRowModel.prototype.onRowGroupOpened = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: Constants.STEP_MAP, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onFilterChanged = function (event) {\n if (event.afterDataChange) {\n return;\n }\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: Constants.STEP_FILTER, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onSortChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: Constants.STEP_SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n };\n ClientSideRowModel.prototype.onValueChanged = function () {\n if (this.columnController.isPivotActive()) {\n this.refreshModel({ step: Constants.STEP_PIVOT });\n }\n else {\n this.refreshModel({ step: Constants.STEP_AGGREGATE });\n }\n };\n ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n // for updates, if the row is updated at all, then we re-calc all the values\n // in that row. we could compare each value to each old value, however if we\n // did this, we would be calling the valueService twice, once on the old value\n // and once on the new value. so it's less valueGetter calls if we just assume\n // each column is different. that way the changedPath is used so that only\n // the impacted parent rows are recalculated, parents who's children have\n // not changed are not impacted.\n var noTransactions = _.missingOrEmpty(rowNodeTransactions);\n var changedPath = new ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsWrapper.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n };\n ClientSideRowModel.prototype.refreshModel = function (params) {\n // this goes through the pipeline of stages. what's in my head is similar\n // to the diagram on this page:\n // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n // however we want to keep the results of each stage, hence we manually call\n // each step rather than have them chain each other.\n var _this = this;\n // fallthrough in below switch is on purpose,\n // eg if STEP_FILTER, then all steps below this\n // step get done\n // let start: number;\n // console.log('======= start =======');\n var changedPath = this.createChangePath(params.rowNodeTransactions);\n switch (params.step) {\n case Constants.STEP_EVERYTHING:\n // start = new Date().getTime();\n this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, params.afterColumnsChanged);\n // console.log('rowGrouping = ' + (new Date().getTime() - start));\n case Constants.STEP_FILTER:\n // start = new Date().getTime();\n this.doFilter(changedPath);\n // console.log('filter = ' + (new Date().getTime() - start));\n case Constants.STEP_PIVOT:\n this.doPivot(changedPath);\n case Constants.STEP_AGGREGATE: // depends on agg fields\n // start = new Date().getTime();\n this.doAggregate(changedPath);\n // console.log('aggregation = ' + (new Date().getTime() - start));\n case Constants.STEP_SORT:\n // start = new Date().getTime();\n this.doSort(params.rowNodeTransactions, changedPath);\n // console.log('sort = ' + (new Date().getTime() - start));\n case Constants.STEP_MAP:\n // start = new Date().getTime();\n this.doRowsToDisplay();\n // console.log('rowsToDisplay = ' + (new Date().getTime() - start));\n }\n // set all row tops to null, then set row tops on all visible rows. if we don't\n // do this, then the algorithm below only sets row tops, old row tops from old rows\n // will still lie around\n this.resetRowTops(this.rootNode, changedPath);\n this.setRowTops();\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false\n };\n this.eventService.dispatchEvent(event);\n if (this.$scope) {\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n ClientSideRowModel.prototype.isEmpty = function () {\n var rowsMissing;\n var doingLegacyTreeData = _.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n rowsMissing = _.missing(this.rootNode.childrenAfterGroup) || this.rootNode.childrenAfterGroup.length === 0;\n }\n else {\n rowsMissing = _.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n }\n var empty = _.missing(this.rootNode) || rowsMissing || !this.columnController.isReady();\n return empty;\n };\n ClientSideRowModel.prototype.isRowsToRender = function () {\n return _.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n };\n ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n var firstRowHit = !lastInRange;\n var lastRowHit = false;\n var lastRow;\n var result = [];\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.forEachNodeAfterFilterAndSort(function (rowNode) {\n var lookingForLastRow = firstRowHit && !lastRowHit;\n // check if we need to flip the select switch\n if (!firstRowHit) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n firstRowHit = true;\n }\n }\n var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n if (!skipThisGroupNode) {\n var inRange = firstRowHit && !lastRowHit;\n var childOfLastRow = rowNode.isParentOfNode(lastRow);\n if (inRange || childOfLastRow) {\n result.push(rowNode);\n }\n }\n if (lookingForLastRow) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n lastRowHit = true;\n if (rowNode === lastInRange) {\n lastRow = lastInRange;\n }\n else {\n lastRow = firstInRange;\n }\n }\n }\n });\n return result;\n };\n ClientSideRowModel.prototype.setDatasource = function (datasource) {\n console.error('ag-Grid: should never call setDatasource on clientSideRowController');\n };\n ClientSideRowModel.prototype.getTopLevelNodes = function () {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n };\n ClientSideRowModel.prototype.getRootNode = function () {\n return this.rootNode;\n };\n ClientSideRowModel.prototype.getRow = function (index) {\n return this.rowsToDisplay[index];\n };\n ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n };\n ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n if (this.isEmpty()) {\n return -1;\n }\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = 0;\n var topPointer = this.rowsToDisplay.length - 1;\n // quick check, if the pixel is out of bounds, then return last row\n if (pixelToMatch <= 0) {\n // if pixel is less than or equal zero, it's always the first row\n return 0;\n }\n var lastNode = _.last(this.rowsToDisplay);\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = this.rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n }\n };\n ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n var topPixel = rowNode.rowTop;\n var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n };\n ClientSideRowModel.prototype.getCurrentPageHeight = function () {\n if (this.rowsToDisplay && this.rowsToDisplay.length > 0) {\n var lastRow = _.last(this.rowsToDisplay);\n var lastPixel = lastRow.rowTop + lastRow.rowHeight;\n return lastPixel;\n }\n return 0;\n };\n ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n }\n };\n ClientSideRowModel.prototype.forEachNode = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterFilter, callback, RecursionType.AfterFilter, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);\n };\n ClientSideRowModel.prototype.forEachPivotNode = function (callback) {\n this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);\n };\n // iterates through each item in memory, and calls the callback function\n // nodes - the rowNodes to traverse\n // callback - the user provided callback\n // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n // index - works similar to the index in forEach in javascript's array function\n ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {\n if (!nodes) {\n return index;\n }\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren()) {\n // depending on the recursion type, we pick a difference set of children\n var nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterFilter;\n break;\n case RecursionType.AfterFilterAndSort:\n nodeChildren = node.childrenAfterSort;\n break;\n case RecursionType.PivotNodes:\n // for pivot, we don't go below leafGroup levels\n nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n break;\n }\n if (nodeChildren) {\n index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);\n }\n }\n }\n return index;\n };\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n function recursiveExpandOrCollapse(rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var shouldExpandOrCollapse = usingTreeData ? _.exists(rowNode.childrenAfterGroup) : rowNode.group;\n if (shouldExpandOrCollapse) {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n }\n });\n }\n this.refreshModel({ step: Constants.STEP_MAP });\n var eventSource = expand ? 'expandAll' : 'collapseAll';\n var event = {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n };\n ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n // grouping is enterprise only, so if service missing, skip the step\n var doingLegacyTreeData = _.exists(this.gridOptionsWrapper.getNodeChildDetailsFunc());\n if (doingLegacyTreeData) {\n return;\n }\n if (this.groupStage) {\n if (rowNodeTransactions) {\n var merged_1 = {\n add: [],\n remove: [],\n update: []\n };\n rowNodeTransactions.forEach(function (tran) {\n _.pushAll(merged_1.add, tran.add);\n _.pushAll(merged_1.remove, tran.remove);\n _.pushAll(merged_1.update, tran.update);\n });\n this.groupStage.execute({\n rowNode: this.rootNode,\n rowNodeTransaction: merged_1,\n rowNodeOrder: rowNodeOrder,\n changedPath: changedPath\n });\n }\n else {\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionController.removeGroupsFromSelection();\n this.groupStage.execute({\n rowNode: this.rootNode,\n changedPath: changedPath,\n afterColumnsChanged: afterColumnsChanged\n });\n // set open/closed state on groups\n this.restoreGroupState(groupState);\n }\n if (this.gridOptionsWrapper.isGroupSelectsChildren()) {\n this.selectionController.updateGroupsFromChildrenSelections(changedPath);\n }\n }\n else {\n this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n }\n };\n ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n if (!groupState) {\n return;\n }\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n // if the group was open last time, then open it this time. however\n // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n // setting will take effect.\n if (typeof groupState[key] === 'boolean') {\n node.expanded = groupState[key];\n }\n });\n };\n ClientSideRowModel.prototype.doFilter = function (changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n };\n ClientSideRowModel.prototype.doPivot = function (changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.getGroupState = function () {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {\n return null;\n }\n var result = {};\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n return result;\n };\n ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n return this.nodeManager.getCopyOfNodesMap();\n };\n ClientSideRowModel.prototype.getRowNode = function (id) {\n return this.nodeManager.getRowNode(id);\n };\n // rows: the rows to put into the model\n ClientSideRowModel.prototype.setRowData = function (rowData) {\n // no need to invalidate cache, as the cache is stored on the rowNode,\n // so new rowNodes means the cache is wiped anyway.\n // remember group state, so we can expand groups that should be expanded\n var groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // this event kicks off:\n // - clears selection\n // - updates filters\n // - shows 'no rows' overlay if needed\n var rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n this.refreshModel({\n step: Constants.STEP_EVERYTHING,\n groupState: groupState,\n newData: true\n });\n };\n ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var _this = this;\n if (!this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch = [];\n var waitMillis = this.gridOptionsWrapper.getAsyncTransactionWaitMillis();\n window.setTimeout(function () {\n _this.executeBatchUpdateRowData();\n _this.rowDataTransactionBatch = null;\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n };\n ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n var _this = this;\n this.valueCache.onDataChanged();\n var callbackFuncsBound = [];\n var rowNodeTrans = [];\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(function (tranItem) {\n var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, null);\n rowNodeTrans.push(rowNodeTran);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));\n }\n });\n }\n this.commonUpdateRowData(rowNodeTrans);\n // do callbacks in next VM turn so it's async\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(function () {\n callbackFuncsBound.forEach(function (func) { return func(); });\n }, 0);\n }\n };\n ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder);\n return rowNodeTran;\n };\n // common to updateRowData and batchUpdateRowData\n ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder) {\n this.refreshModel({\n step: Constants.STEP_EVERYTHING,\n rowNodeTransactions: rowNodeTrans,\n rowNodeOrder: rowNodeOrder,\n keepRenderedRows: true,\n animate: true,\n keepEditingRows: true\n });\n var event = {\n type: Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doRowsToDisplay = function () {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n };\n ClientSideRowModel.prototype.onRowHeightChanged = function () {\n this.refreshModel({ step: Constants.STEP_MAP, keepRenderedRows: true, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.resetRowHeights = function () {\n this.forEachNode(function (rowNode) { return rowNode.setRowHeight(null); });\n this.onRowHeightChanged();\n };\n __decorate$1S([\n Autowired('gridOptionsWrapper')\n ], ClientSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1S([\n Autowired('columnController')\n ], ClientSideRowModel.prototype, \"columnController\", void 0);\n __decorate$1S([\n Autowired('filterManager')\n ], ClientSideRowModel.prototype, \"filterManager\", void 0);\n __decorate$1S([\n Autowired('$scope')\n ], ClientSideRowModel.prototype, \"$scope\", void 0);\n __decorate$1S([\n Autowired('selectionController')\n ], ClientSideRowModel.prototype, \"selectionController\", void 0);\n __decorate$1S([\n Autowired('eventService')\n ], ClientSideRowModel.prototype, \"eventService\", void 0);\n __decorate$1S([\n Autowired('context')\n ], ClientSideRowModel.prototype, \"context\", void 0);\n __decorate$1S([\n Autowired('valueService')\n ], ClientSideRowModel.prototype, \"valueService\", void 0);\n __decorate$1S([\n Autowired('valueCache')\n ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n __decorate$1S([\n Autowired('columnApi')\n ], ClientSideRowModel.prototype, \"columnApi\", void 0);\n __decorate$1S([\n Autowired('gridApi')\n ], ClientSideRowModel.prototype, \"gridApi\", void 0);\n __decorate$1S([\n Autowired('filterStage')\n ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n __decorate$1S([\n Autowired('sortStage')\n ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n __decorate$1S([\n Autowired('flattenStage')\n ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n __decorate$1S([\n Optional('groupStage')\n ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n __decorate$1S([\n Optional('aggregationStage')\n ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n __decorate$1S([\n Optional('pivotStage')\n ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n __decorate$1S([\n PostConstruct\n ], ClientSideRowModel.prototype, \"init\", null);\n __decorate$1S([\n PreDestroy\n ], ClientSideRowModel.prototype, \"destroy\", null);\n ClientSideRowModel = __decorate$1S([\n Bean('rowModel')\n ], ClientSideRowModel);\n return ClientSideRowModel;\n}());\n\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterStage = /** @class */ (function () {\n function FilterStage() {\n }\n FilterStage.prototype.execute = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath;\n this.filterService.filter(changedPath);\n this.selectableService.updateSelectableAfterFiltering(rowNode);\n };\n __decorate$1T([\n Autowired('gridOptionsWrapper')\n ], FilterStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1T([\n Autowired('selectableService')\n ], FilterStage.prototype, \"selectableService\", void 0);\n __decorate$1T([\n Autowired('filterService')\n ], FilterStage.prototype, \"filterService\", void 0);\n FilterStage = __decorate$1T([\n Bean('filterStage')\n ], FilterStage);\n return FilterStage;\n}());\n\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortStage = /** @class */ (function () {\n function SortStage() {\n }\n SortStage.prototype.execute = function (params) {\n var sortOptions = this.sortController.getSortForRowController();\n var sortActive = _.exists(sortOptions) && sortOptions.length > 0;\n var deltaSort = sortActive\n && _.exists(params.rowNodeTransactions)\n // in time we can remove this check, so that delta sort is always\n // on if transactions are present. it's off for now so that we can\n // selectively turn it on and test it with some select users before\n // rolling out to everyone.\n && this.gridOptionsWrapper.isDeltaSort();\n // we only need dirty nodes if doing delta sort\n var dirtyLeafNodes = deltaSort ? this.calculateDirtyNodes(params.rowNodeTransactions) : null;\n var valueColumns = this.columnController.getValueColumns();\n var noAggregations = _.missingOrEmpty(valueColumns);\n this.sortService.sort(sortOptions, sortActive, deltaSort, dirtyLeafNodes, params.changedPath, noAggregations);\n };\n SortStage.prototype.calculateDirtyNodes = function (rowNodeTransactions) {\n var dirtyNodes = {};\n var addNodesFunc = function (rowNodes) {\n if (rowNodes) {\n rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });\n }\n };\n // all leaf level nodes in the transaction were impacted\n rowNodeTransactions.forEach(function (tran) {\n addNodesFunc(tran.add);\n addNodesFunc(tran.update);\n addNodesFunc(tran.remove);\n });\n return dirtyNodes;\n };\n __decorate$1U([\n Autowired('gridOptionsWrapper')\n ], SortStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1U([\n Autowired('sortService')\n ], SortStage.prototype, \"sortService\", void 0);\n __decorate$1U([\n Autowired('sortController')\n ], SortStage.prototype, \"sortController\", void 0);\n __decorate$1U([\n Autowired('columnController')\n ], SortStage.prototype, \"columnController\", void 0);\n SortStage = __decorate$1U([\n Bean('sortStage')\n ], SortStage);\n return SortStage;\n}());\n\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FlattenStage = /** @class */ (function () {\n function FlattenStage() {\n }\n FlattenStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n // even if not doing grouping, we do the mapping, as the client might\n // of passed in data that already has a grouping in it somewhere\n var result = [];\n // putting value into a wrapper so it's passed by reference\n var nextRowTop = { value: 0 };\n var skipLeafNodes = this.columnController.isPivotMode();\n // if we are reducing, and not grouping, then we want to show the root node, as that\n // is where the pivot values are\n var showRootNode = skipLeafNodes && rootNode.leafGroup;\n var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n // we do not want the footer total if the gris is empty\n var atLeastOneRowPresent = result.length > 0;\n var includeGroupTotalFooter = !showRootNode\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n && atLeastOneRowPresent\n && this.gridOptionsWrapper.isGroupIncludeTotalFooter();\n if (includeGroupTotalFooter) {\n this.ensureFooterNodeExists(rootNode);\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n };\n FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (_.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n var groupSuppressRow = this.gridOptionsWrapper.isGroupSuppressRow();\n var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n // these two are mutually exclusive, so if first set, we don't set the second\n var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n for (var i = 0; i < rowsToFlatten.length; i++) {\n var rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n var isParent = rowNode.hasChildren();\n var isGroupSuppressedNode = groupSuppressRow && isParent;\n var isSkippedLeafNode = skipLeafNodes && !isParent;\n var isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&\n isParent &&\n rowNode.childrenAfterGroup.length === 1;\n var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren &&\n isParent &&\n rowNode.leafGroup &&\n rowNode.childrenAfterGroup.length === 1;\n // hide open parents means when group is open, we don't show it. we also need to make sure the\n // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')\n var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n var isHiddenOpenParent = hideOpenParents && rowNode.expanded && (!neverAllowToExpand);\n var thisRowShouldBeRendered = !isSkippedLeafNode &&\n !isGroupSuppressedNode &&\n !isHiddenOpenParent &&\n !isRemovedSingleChildrenGroup &&\n !isRemovedLowestSingleChildrenGroup;\n if (thisRowShouldBeRendered) {\n this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n }\n // if we are pivoting, we never map below the leaf group\n if (skipLeafNodes && rowNode.leafGroup) {\n continue;\n }\n if (isParent) {\n var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n // we traverse the group if it is expended, however we always traverse if the parent node\n // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n if (rowNode.expanded || excludedParent) {\n // if the parent was excluded, then ui level is that of the parent\n var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n // put a footer in if user is looking for it\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.ensureFooterNodeExists(rowNode);\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n var detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n };\n // duplicated method, it's also in floatingRowModel\n FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n result.push(rowNode);\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n };\n FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (_.exists(groupNode.sibling)) {\n return;\n }\n var footerNode = new RowNode();\n this.context.wireBean(footerNode);\n Object.keys(groupNode).forEach(function (key) {\n footerNode[key] = groupNode[key];\n });\n footerNode.footer = true;\n footerNode.rowTop = null;\n footerNode.oldRowTop = null;\n if (_.exists(footerNode.id)) {\n footerNode.id = 'rowGroupFooter_' + footerNode.id;\n }\n // get both header and footer to reference each other as siblings. this is never undone,\n // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n // sibling - but that's fine, as we can ignore this if the header is contracted.\n footerNode.sibling = groupNode;\n groupNode.sibling = footerNode;\n };\n FlattenStage.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n var detailNode = new RowNode();\n this.context.wireBean(detailNode);\n detailNode.detail = true;\n detailNode.selectable = false;\n // flower was renamed to 'detail', but keeping for backwards compatibility\n detailNode.flower = detailNode.detail;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n masterNode.detailNode = detailNode;\n masterNode.childFlower = masterNode.detailNode; // for backwards compatibility\n return detailNode;\n };\n __decorate$1V([\n Autowired('gridOptionsWrapper')\n ], FlattenStage.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1V([\n Autowired('selectionController')\n ], FlattenStage.prototype, \"selectionController\", void 0);\n __decorate$1V([\n Autowired('eventService')\n ], FlattenStage.prototype, \"eventService\", void 0);\n __decorate$1V([\n Autowired('context')\n ], FlattenStage.prototype, \"context\", void 0);\n __decorate$1V([\n Autowired('columnController')\n ], FlattenStage.prototype, \"columnController\", void 0);\n FlattenStage = __decorate$1V([\n Bean('flattenStage')\n ], FlattenStage);\n return FlattenStage;\n}());\n\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortService = /** @class */ (function () {\n function SortService() {\n }\n SortService.prototype.init = function () {\n this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();\n };\n SortService.prototype.sort = function (sortOptions, sortActive, deltaSort, dirtyLeafNodes, changedPath, noAggregations) {\n var _this = this;\n var callback = function (rowNode) {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterFilter, true);\n // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n // are going to inspect the original array position. This is what sortedRowNodes is for.\n if (sortActive) {\n var sortedRowNodes = deltaSort ?\n _this.doDeltaSort(rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations)\n : _this.doFullSort(rowNode, sortOptions);\n rowNode.childrenAfterSort = sortedRowNodes.map(function (sorted) { return sorted.rowNode; });\n }\n else {\n rowNode.childrenAfterSort = rowNode.childrenAfterFilter.slice(0);\n }\n _this.updateChildIndexes(rowNode);\n if (_this.postSortFunc) {\n _this.postSortFunc(rowNode.childrenAfterSort);\n }\n };\n changedPath.forEachChangedNodeDepthFirst(callback);\n this.updateGroupDataForHiddenOpenParents(changedPath);\n };\n SortService.prototype.doFullSort = function (rowNode, sortOptions) {\n var sortedRowNodes = rowNode.childrenAfterFilter\n .map(this.mapNodeToSortedNode.bind(this));\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes;\n };\n SortService.prototype.mapNodeToSortedNode = function (rowNode, pos) {\n return { currentPos: pos, rowNode: rowNode };\n };\n SortService.prototype.doDeltaSort = function (rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations) {\n // clean nodes will be a list of all row nodes that remain in the set\n // and ordered. we start with the old sorted set and take out any nodes\n // that were removed or changed (but not added, added doesn't make sense,\n // if a node was added, there is no way it could be here from last time).\n var cleanNodes = rowNode.childrenAfterSort\n .filter(function (rowNode) {\n // take out all nodes that were changed as part of the current transaction.\n // a changed node could a) be in a different sort position or b) may\n // no longer be in this set as the changed node may not pass filtering,\n // or be in a different group.\n var passesDirtyNodesCheck = !dirtyLeafNodes[rowNode.id];\n // also remove group nodes in the changed path, as they can have different aggregate\n // values which could impact the sort order.\n // note: changed path is not active if a) no value columns or b) no transactions. it is never\n // (b) in deltaSort as we only do deltaSort for transactions. for (a) if no value columns, then\n // there is no value in the group that could of changed (ie no aggregate values)\n var passesChangedPathCheck = noAggregations || changedPath.canSkip(rowNode);\n return passesDirtyNodesCheck && passesChangedPathCheck;\n })\n .map(this.mapNodeToSortedNode.bind(this));\n // for fast access below, we map them\n var cleanNodesMapped = {};\n cleanNodes.forEach(function (sortedRowNode) { return cleanNodesMapped[sortedRowNode.rowNode.id] = sortedRowNode.rowNode; });\n // these are all nodes that need to be placed\n var changedNodes = rowNode.childrenAfterFilter\n // ignore nodes in the clean list\n .filter(function (rowNode) { return !cleanNodesMapped[rowNode.id]; })\n .map(this.mapNodeToSortedNode.bind(this));\n // sort changed nodes. note that we don't need to sort cleanNodes as they are\n // already sorted from last time.\n changedNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n if (changedNodes.length === 0) {\n return cleanNodes;\n }\n else if (cleanNodes.length === 0) {\n return changedNodes;\n }\n else {\n return this.mergeSortedArrays(sortOptions, cleanNodes, changedNodes);\n }\n };\n // Merge two sorted arrays into each other\n SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n var res = [];\n var i = 0;\n var j = 0;\n // Traverse both array, adding them in order\n while (i < arr1.length && j < arr2.length) {\n // Check if current element of first\n // array is smaller than current element\n // of second array. If yes, store first\n // array element and increment first array\n // index. Otherwise do same with second array\n var compareResult = this.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n if (compareResult < 0) {\n res.push(arr1[i++]);\n }\n else {\n res.push(arr2[j++]);\n }\n }\n // add remaining from arr1\n while (i < arr1.length) {\n res.push(arr1[i++]);\n }\n // add remaining from arr2\n while (j < arr2.length) {\n res.push(arr2[j++]);\n }\n return res;\n };\n SortService.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n var nodeA = sortedNodeA.rowNode;\n var nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (var i = 0, len = sortOptions.length; i < len; i++) {\n var sortOption = sortOptions[i];\n // let compared = compare(nodeA, nodeB, sortOption.column, sortOption.inverter === -1);\n var isInverted = sortOption.inverter === -1;\n var valueA = this.getValue(nodeA, sortOption.column);\n var valueB = this.getValue(nodeB, sortOption.column);\n var comparatorResult = void 0;\n if (sortOption.column.getColDef().comparator) {\n //if comparator provided, use it\n comparatorResult = sortOption.column.getColDef().comparator(valueA, valueB, nodeA, nodeB, isInverted);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = _.defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());\n }\n if (comparatorResult !== 0) {\n return comparatorResult * sortOption.inverter;\n }\n }\n // All matched, we make is so that the original sort order is kept:\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n };\n SortService.prototype.getValue = function (nodeA, column) {\n return this.valueService.getValue(column, nodeA);\n };\n SortService.prototype.updateChildIndexes = function (rowNode) {\n if (_.missing(rowNode.childrenAfterSort)) {\n return;\n }\n var listToSort = rowNode.childrenAfterSort;\n for (var i = 0; i < listToSort.length; i++) {\n var child = listToSort[i];\n var firstChild = i === 0;\n var lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n };\n SortService.prototype.updateGroupDataForHiddenOpenParents = function (changedPath) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n var callback = function (rowNode) {\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(function (child) {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n };\n SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n var _this = this;\n if (_.missing(rowNodes)) {\n return;\n }\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n rowNodes.forEach(function (childRowNode) {\n var groupDisplayCols = _this.columnController.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (groupDisplayCol) {\n var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n if (typeof showRowGroup !== 'string') {\n console.error('ag-Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n return;\n }\n var displayingGroupKey = showRowGroup;\n var rowGroupColumn = _this.columnController.getPrimaryColumn(displayingGroupKey);\n var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n if (thisRowNodeMatches) {\n return;\n }\n if (clearOperation) {\n // if doing a clear operation, we clear down the value for every possible group column\n childRowNode.setGroupValue(groupDisplayCol.getId(), null);\n }\n else {\n // if doing a set operation, we set only where the pull down is to occur\n var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n };\n __decorate$1W([\n Autowired('sortController')\n ], SortService.prototype, \"sortController\", void 0);\n __decorate$1W([\n Autowired('columnController')\n ], SortService.prototype, \"columnController\", void 0);\n __decorate$1W([\n Autowired('valueService')\n ], SortService.prototype, \"valueService\", void 0);\n __decorate$1W([\n Autowired('gridOptionsWrapper')\n ], SortService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1W([\n PostConstruct\n ], SortService.prototype, \"init\", null);\n SortService = __decorate$1W([\n Bean('sortService')\n ], SortService);\n return SortService;\n}());\n\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterService = /** @class */ (function () {\n function FilterService() {\n }\n FilterService.prototype.postConstruct = function () {\n this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n FilterService.prototype.filter = function (changedPath) {\n var filterActive = this.filterManager.isAnyFilterPresent();\n this.filterNodes(filterActive, changedPath);\n };\n FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n var _this = this;\n var filterCallback = function (rowNode, includeChildNodes) {\n // recursively get all children that are groups to also filter\n if (rowNode.hasChildren()) {\n // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n // a group is included in the result if it has any children of it's own.\n // by this stage, the child groups are already filtered\n var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n // both leaf level nodes and tree data nodes have data. these get added if\n // the data passes the filter\n var passBecauseDataPasses = childNode.data && _this.filterManager.doesRowPassFilter(childNode);\n // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n return passBecauseChildren || passBecauseDataPasses;\n });\n }\n else {\n // if not filtering, the result is the original list\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n _this.setAllChildrenCount(rowNode);\n }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n rowNode.setAllChildrenCount(null);\n }\n };\n if (this.doingTreeDataFiltering()) {\n var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n // filter, and parent nodes will be include if any children exist.\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n var foundInParent = alreadyFoundInParent || _this.filterManager.doesRowPassFilter(childNode);\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n };\n FilterService.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCount = function (rowNode) {\n if (this.doingTreeData) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n FilterService.prototype.doingTreeDataFiltering = function () {\n return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();\n };\n __decorate$1X([\n Autowired('filterManager')\n ], FilterService.prototype, \"filterManager\", void 0);\n __decorate$1X([\n Autowired('gridOptionsWrapper')\n ], FilterService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1X([\n PostConstruct\n ], FilterService.prototype, \"postConstruct\", null);\n FilterService = __decorate$1X([\n Bean(\"filterService\")\n ], FilterService);\n return FilterService;\n}());\n\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ImmutableService = /** @class */ (function () {\n function ImmutableService() {\n }\n ImmutableService.prototype.postConstruct = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n // converts the setRowData() command to a transaction\n ImmutableService.prototype.createTransactionForRowData = function (data) {\n if (_.missing(this.clientSideRowModel)) {\n console.error('ag-Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n var getRowNodeIdFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (!getRowNodeIdFunc || _.missing(getRowNodeIdFunc)) {\n console.error('ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!');\n return;\n }\n // convert the data into a transaction object by working out adds, removes and updates\n var transaction = {\n remove: [],\n update: [],\n add: []\n };\n var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n var orderMap = suppressSortOrder ? null : {};\n if (_.exists(data)) {\n // split all the new data in the following:\n // if new, push to 'add'\n // if update, push to 'update'\n // if not changed, do not include in the transaction\n data.forEach(function (dataItem, index) {\n var id = getRowNodeIdFunc(dataItem);\n var existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n var dataHasChanged = existingNode.data !== dataItem;\n if (dataHasChanged) {\n transaction.update.push(dataItem);\n }\n // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n // remove from list, so we know the item is not to be removed\n existingNodesMap[id] = undefined;\n }\n else {\n transaction.add.push(dataItem);\n }\n });\n }\n // at this point, all rows that are left, should be removed\n _.iterateObject(existingNodesMap, function (id, rowNode) {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n };\n __decorate$1Y([\n Autowired('rowModel')\n ], ImmutableService.prototype, \"rowModel\", void 0);\n __decorate$1Y([\n Autowired('gridOptionsWrapper')\n ], ImmutableService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1Y([\n PostConstruct\n ], ImmutableService.prototype, \"postConstruct\", null);\n ImmutableService = __decorate$1Y([\n Bean('immutableService')\n ], ImmutableService);\n return ImmutableService;\n}());\n\nvar ClientSideRowModelModule = {\n moduleName: exports.ModuleNames.ClientSideRowModelModule,\n beans: [FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],\n rowModels: { clientSide: ClientSideRowModel }\n};\n\nvar __extends$1g = (undefined && undefined.__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})();\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteBlock = /** @class */ (function (_super) {\n __extends$1g(InfiniteBlock, _super);\n function InfiniteBlock(pageNumber, params) {\n var _this = _super.call(this, pageNumber, params) || this;\n _this.cacheParams = params;\n return _this;\n }\n InfiniteBlock.prototype.getDisplayIndexStart = function () {\n return this.getBlockNumber() * this.cacheParams.blockSize;\n };\n // this is an estimate, as the last block will probably only be partially full. however\n // this method is used to know if this block is been rendered, before destroying, so\n // and this estimate works in that use case.\n InfiniteBlock.prototype.getDisplayIndexEnd = function () {\n return this.getDisplayIndexStart() + this.cacheParams.blockSize;\n };\n InfiniteBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n rowNode.uiLevel = 0;\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n return rowNode;\n };\n InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n if (_.exists(data)) {\n // this means if the user is not providing id's we just use the\n // index for the row. this will allow selection to work (that is based\n // on index) as long user is not inserting or deleting rows,\n // or wanting to keep selection between server side sorting or filtering\n rowNode.setDataAndId(data, index.toString());\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n }\n };\n InfiniteBlock.prototype.setRowNode = function (rowIndex, rowNode) {\n _super.prototype.setRowNode.call(this, rowIndex, rowNode);\n this.setIndexAndTopOnRowNode(rowNode, rowIndex);\n };\n InfiniteBlock.prototype.init = function () {\n _super.prototype.init.call(this, {\n context: this.getContext(),\n rowRenderer: this.rowRenderer\n });\n };\n InfiniteBlock.prototype.getNodeIdPrefix = function () {\n return null;\n };\n InfiniteBlock.prototype.getRow = function (displayIndex) {\n return this.getRowUsingLocalIndex(displayIndex);\n };\n InfiniteBlock.prototype.setIndexAndTopOnRowNode = function (rowNode, rowIndex) {\n rowNode.setRowIndex(rowIndex);\n rowNode.rowTop = this.cacheParams.rowHeight * rowIndex;\n };\n InfiniteBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n // is executing before the sort is set up, so server is not getting the sort\n // model. need to change with regards order - so the server side request is\n // AFTER thus it gets the right sort model.\n var params = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this),\n sortModel: this.cacheParams.sortModel,\n filterModel: this.cacheParams.filterModel,\n context: this.gridOptionsWrapper.getContext()\n };\n if (_.missing(this.cacheParams.datasource.getRows)) {\n console.warn(\"ag-Grid: datasource is missing getRows method\");\n return;\n }\n // put in timeout, to force result to be async\n window.setTimeout(function () {\n _this.cacheParams.datasource.getRows(params);\n }, 0);\n };\n __decorate$1Z([\n Autowired('gridOptionsWrapper')\n ], InfiniteBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1Z([\n Autowired('rowRenderer')\n ], InfiniteBlock.prototype, \"rowRenderer\", void 0);\n __decorate$1Z([\n PostConstruct\n ], InfiniteBlock.prototype, \"init\", null);\n return InfiniteBlock;\n}(RowNodeBlock));\n\nvar __extends$1h = (undefined && undefined.__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})();\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$a = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar InfiniteCache = /** @class */ (function (_super) {\n __extends$1h(InfiniteCache, _super);\n function InfiniteCache(params) {\n return _super.call(this, params) || this;\n }\n InfiniteCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('InfiniteCache');\n };\n InfiniteCache.prototype.moveItemsDown = function (block, moveFromIndex, moveCount) {\n var startRow = block.getStartRow();\n var endRow = block.getEndRow();\n var indexOfLastRowToMove = moveFromIndex + moveCount;\n // all rows need to be moved down below the insertion index\n for (var currentRowIndex = endRow - 1; currentRowIndex >= startRow; currentRowIndex--) {\n // don't move rows at or before the insertion index\n if (currentRowIndex < indexOfLastRowToMove) {\n continue;\n }\n var indexOfNodeWeWant = currentRowIndex - moveCount;\n var nodeForThisIndex = this.getRow(indexOfNodeWeWant, true);\n if (nodeForThisIndex) {\n block.setRowNode(currentRowIndex, nodeForThisIndex);\n }\n else {\n block.setBlankRowNode(currentRowIndex);\n block.setDirty();\n }\n }\n };\n InfiniteCache.prototype.insertItems = function (block, indexToInsert, items) {\n var pageStartRow = block.getStartRow();\n var pageEndRow = block.getEndRow();\n var newRowNodes = [];\n // next stage is insert the rows into this page, if applicable\n for (var index = 0; index < items.length; index++) {\n var rowIndex = indexToInsert + index;\n var currentRowInThisPage = rowIndex >= pageStartRow && rowIndex < pageEndRow;\n if (currentRowInThisPage) {\n var dataItem = items[index];\n var newRowNode = block.setNewData(rowIndex, dataItem);\n newRowNodes.push(newRowNode);\n }\n }\n return newRowNodes;\n };\n InfiniteCache.prototype.insertItemsAtIndex = function (indexToInsert, items) {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var _this = this;\n var newNodes = [];\n this.forEachBlockInReverseOrder(function (block) {\n var pageEndRow = block.getEndRow();\n // if the insertion is after this page, then this page is not impacted\n if (pageEndRow <= indexToInsert) {\n return;\n }\n _this.moveItemsDown(block, indexToInsert, items.length);\n var newNodesThisPage = _this.insertItems(block, indexToInsert, items);\n newNodesThisPage.forEach(function (rowNode) { return newNodes.push(rowNode); });\n });\n if (this.isMaxRowFound()) {\n this.hack_setVirtualRowCount(this.getVirtualRowCount() + items.length);\n }\n this.onCacheUpdated();\n var event = {\n type: Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n if (dontCreatePage === void 0) { dontCreatePage = false; }\n var blockId = Math.floor(rowIndex / this.cacheParams.blockSize);\n var block = this.getBlock(blockId);\n if (!block) {\n if (dontCreatePage) {\n return null;\n }\n else {\n block = this.createBlock(blockId);\n }\n }\n return block.getRow(rowIndex);\n };\n InfiniteCache.prototype.createBlock = function (blockNumber) {\n var newBlock = new InfiniteBlock(blockNumber, this.cacheParams);\n this.getContext().wireBean(newBlock);\n this.postCreateBlock(newBlock);\n return newBlock;\n };\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n InfiniteCache.prototype.refreshCache = function () {\n this.forEachBlockInOrder(function (block) { return block.setDirty(); });\n this.checkBlockToLoad();\n };\n __decorate$1_([\n Autowired('columnApi')\n ], InfiniteCache.prototype, \"columnApi\", void 0);\n __decorate$1_([\n Autowired('gridApi')\n ], InfiniteCache.prototype, \"gridApi\", void 0);\n __decorate$1_([\n __param$a(0, Qualifier('loggerFactory'))\n ], InfiniteCache.prototype, \"setBeans\", null);\n return InfiniteCache;\n}(RowNodeCache));\n\nvar __extends$1i = (undefined && undefined.__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})();\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteRowModel = /** @class */ (function (_super) {\n __extends$1i(InfiniteRowModel, _super);\n function InfiniteRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InfiniteRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n // we don't implement as lazy row heights is not supported in this row model\n InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n return false;\n };\n InfiniteRowModel.prototype.init = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isRowModelInfinite()) {\n return;\n }\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addEventListeners();\n this.addDestroyFunc(function () { return _this.destroyCache(); });\n };\n InfiniteRowModel.prototype.start = function () {\n this.setDatasource(this.gridOptionsWrapper.getDatasource());\n };\n InfiniteRowModel.prototype.destroyDatasource = function () {\n if (this.datasource) {\n if (this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.datasource = null;\n }\n };\n InfiniteRowModel.prototype.isLastRowFound = function () {\n return this.infiniteCache ? this.infiniteCache.isMaxRowFound() : false;\n };\n InfiniteRowModel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnEverything.bind(this));\n };\n InfiniteRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onSortChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onColumnEverything = function () {\n var resetRequired;\n // if cache params, we require reset only if sort model has changed. we don't need to check\n // for filter model, as the filter manager will fire an event when columns change that result\n // in the filter changing.\n if (this.cacheParams) {\n resetRequired = this.isSortModelDifferent();\n }\n else {\n // if no cacheParams, means first time creating the cache, so always create one\n resetRequired = true;\n }\n if (resetRequired) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isSortModelDifferent = function () {\n return !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n };\n InfiniteRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_INFINITE;\n };\n InfiniteRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n // only reset if we have a valid datasource to working with\n if (datasource) {\n this.checkForDeprecated();\n this.reset();\n }\n };\n InfiniteRowModel.prototype.checkForDeprecated = function () {\n var ds = this.datasource;\n // the number of concurrent loads we are allowed to the server\n if (_.exists(ds.maxConcurrentRequests)) {\n console.error('ag-Grid: since version 5.1.x, maxConcurrentRequests is replaced with grid property maxConcurrentDatasourceRequests');\n }\n if (_.exists(ds.maxPagesInCache)) {\n console.error('ag-Grid: since version 5.1.x, maxPagesInCache is replaced with grid property maxPagesInPaginationCache');\n }\n if (_.exists(ds.overflowSize)) {\n console.error('ag-Grid: since version 5.1.x, overflowSize is replaced with grid property paginationOverflowSize');\n }\n if (_.exists(ds.blockSize)) {\n console.error('ag-Grid: since version 5.1.x, pageSize/blockSize is replaced with grid property infinitePageSize');\n }\n };\n InfiniteRowModel.prototype.isEmpty = function () {\n return _.missing(this.infiniteCache);\n };\n InfiniteRowModel.prototype.isRowsToRender = function () {\n return _.exists(this.infiniteCache);\n };\n InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];\n };\n InfiniteRowModel.prototype.reset = function () {\n // important to return here, as the user could be setting filter or sort before\n // data-source is set\n if (_.missing(this.datasource)) {\n return;\n }\n // if user is providing id's, then this means we can keep the selection between datasource hits,\n // as the rows will keep their unique id's even if, for example, server side sorting or filtering\n // is done.\n var userGeneratingIds = _.exists(this.gridOptionsWrapper.getRowNodeIdFunc());\n if (!userGeneratingIds) {\n this.selectionController.reset();\n }\n this.resetCache();\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.createModelUpdatedEvent = function () {\n return {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n // not sure if these should all be false - noticed if after implementing,\n // maybe they should be true?\n newPage: false,\n newData: false,\n keepRenderedRows: false,\n animate: false\n };\n };\n InfiniteRowModel.prototype.resetCache = function () {\n // if not first time creating a cache, need to destroy the old one\n this.destroyCache();\n var maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();\n // there is a bi-directional dependency between the loader and the cache,\n // so we create loader here, and then pass dependencies in setDependencies() method later\n this.rowNodeBlockLoader = new RowNodeBlockLoader(maxConcurrentRequests, blockLoadDebounceMillis);\n this.getContext().wireBean(this.rowNodeBlockLoader);\n this.cacheParams = {\n // the user provided datasource\n datasource: this.datasource,\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortController.getSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n // properties - this way we take a snapshot of them, so if user changes any, they will be\n // used next time we create a new cache, which is generally after a filter or sort change,\n // or a new datasource is set\n maxConcurrentRequests: maxConcurrentRequests,\n overflowSize: this.gridOptionsWrapper.getCacheOverflowSize(),\n initialRowCount: this.gridOptionsWrapper.getInfiniteInitialRowCount(),\n maxBlocksInCache: this.gridOptionsWrapper.getMaxBlocksInCache(),\n blockSize: this.gridOptionsWrapper.getCacheBlockSize(),\n rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n // the cache could create this, however it is also used by the pages, so handy to create it\n // here as the settings are also passed to the pages\n lastAccessedSequence: new NumberSequence()\n };\n // set defaults\n if (!this.cacheParams.maxConcurrentRequests || !(this.cacheParams.maxConcurrentRequests >= 1)) {\n this.cacheParams.maxConcurrentRequests = 2;\n }\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n if (!this.cacheParams.blockSize || !(this.cacheParams.blockSize >= 1)) {\n this.cacheParams.blockSize = 100;\n }\n // if user doesn't give initial rows to display, we assume one\n if (!(this.cacheParams.initialRowCount >= 1)) {\n this.cacheParams.initialRowCount = 1;\n }\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n if (!(this.cacheParams.overflowSize >= 1)) {\n this.cacheParams.overflowSize = 1;\n }\n this.infiniteCache = new InfiniteCache(this.cacheParams);\n this.getContext().wireBean(this.infiniteCache);\n this.infiniteCache.addEventListener(RowNodeCache.EVENT_CACHE_UPDATED, this.onCacheUpdated.bind(this));\n };\n InfiniteRowModel.prototype.destroyCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.destroy();\n this.infiniteCache = null;\n }\n if (this.rowNodeBlockLoader) {\n this.rowNodeBlockLoader.destroy();\n this.rowNodeBlockLoader = null;\n }\n };\n InfiniteRowModel.prototype.onCacheUpdated = function () {\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.getRow = function (rowIndex) {\n return this.infiniteCache ? this.infiniteCache.getRow(rowIndex) : null;\n };\n InfiniteRowModel.prototype.getRowNode = function (id) {\n var result = null;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n InfiniteRowModel.prototype.forEachNode = function (callback) {\n if (this.infiniteCache) {\n this.infiniteCache.forEachNodeDeep(callback, new NumberSequence());\n }\n };\n InfiniteRowModel.prototype.getCurrentPageHeight = function () {\n return this.getRowCount() * this.rowHeight;\n };\n InfiniteRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n var rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n var lastRowIndex = this.getRowCount() - 1;\n if (rowIndexForPixel > lastRowIndex) {\n return lastRowIndex;\n }\n else {\n return rowIndexForPixel;\n }\n }\n else {\n return 0;\n }\n };\n InfiniteRowModel.prototype.getRowCount = function () {\n return this.infiniteCache ? this.infiniteCache.getVirtualRowCount() : 0;\n };\n InfiniteRowModel.prototype.updateRowData = function (transaction) {\n if (_.exists(transaction.remove) || _.exists(transaction.update)) {\n console.warn('ag-Grid: updateRowData for InfiniteRowModel does not support remove or update, only add');\n return;\n }\n if (_.missing(transaction.addIndex)) {\n console.warn('ag-Grid: updateRowData for InfiniteRowModel requires add and addIndex to be set');\n return;\n }\n if (this.infiniteCache) {\n this.infiniteCache.insertItemsAtIndex(transaction.addIndex, transaction.add);\n }\n };\n InfiniteRowModel.prototype.isRowPresent = function (rowNode) {\n return false;\n };\n InfiniteRowModel.prototype.refreshCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.refreshCache();\n }\n };\n InfiniteRowModel.prototype.purgeCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.purgeCache();\n }\n };\n InfiniteRowModel.prototype.getVirtualRowCount = function () {\n if (this.infiniteCache) {\n return this.infiniteCache.getVirtualRowCount();\n }\n else {\n return null;\n }\n };\n InfiniteRowModel.prototype.isMaxRowFound = function () {\n if (this.infiniteCache) {\n return this.infiniteCache.isMaxRowFound();\n }\n };\n InfiniteRowModel.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n if (this.infiniteCache) {\n this.infiniteCache.setVirtualRowCount(rowCount, maxRowFound);\n }\n };\n InfiniteRowModel.prototype.getBlockState = function () {\n if (this.rowNodeBlockLoader) {\n return this.rowNodeBlockLoader.getBlockState();\n }\n else {\n return null;\n }\n };\n __decorate$1$([\n Autowired('gridOptionsWrapper')\n ], InfiniteRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1$([\n Autowired('filterManager')\n ], InfiniteRowModel.prototype, \"filterManager\", void 0);\n __decorate$1$([\n Autowired('sortController')\n ], InfiniteRowModel.prototype, \"sortController\", void 0);\n __decorate$1$([\n Autowired('selectionController')\n ], InfiniteRowModel.prototype, \"selectionController\", void 0);\n __decorate$1$([\n Autowired('eventService')\n ], InfiniteRowModel.prototype, \"eventService\", void 0);\n __decorate$1$([\n Autowired('gridApi')\n ], InfiniteRowModel.prototype, \"gridApi\", void 0);\n __decorate$1$([\n Autowired('columnApi')\n ], InfiniteRowModel.prototype, \"columnApi\", void 0);\n __decorate$1$([\n Autowired('rowRenderer')\n ], InfiniteRowModel.prototype, \"rowRenderer\", void 0);\n __decorate$1$([\n PostConstruct\n ], InfiniteRowModel.prototype, \"init\", null);\n __decorate$1$([\n PreDestroy\n ], InfiniteRowModel.prototype, \"destroyDatasource\", null);\n InfiniteRowModel = __decorate$1$([\n Bean('rowModel')\n ], InfiniteRowModel);\n return InfiniteRowModel;\n}(BeanStub));\n\nvar InfiniteRowModelModule = {\n moduleName: exports.ModuleNames.InfiniteRowModelModule,\n rowModels: { 'infinite': InfiniteRowModel }\n};\n\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BaseGridSerializingSession = /** @class */ (function () {\n function BaseGridSerializingSession(config) {\n var columnController = config.columnController, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, processRowGroupCallback = config.processRowGroupCallback;\n this.columnController = columnController;\n this.valueService = valueService;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.processGroupHeaderCallback = processGroupHeaderCallback;\n this.processRowGroupCallback = processRowGroupCallback;\n }\n BaseGridSerializingSession.prototype.prepare = function (columnsToExport) {\n this.firstGroupColumn = _.find(columnsToExport, function (col) { return !!col.getColDef().showRowGroup; });\n };\n BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n var value = this.getHeaderName(this.processHeaderCallback, column);\n return value != null ? value : '';\n };\n BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, type, node) {\n // we render the group summary text e.g. \"-> Parent -> Child\"...\n var renderGroupSummaryCell = \n // on group rows\n node && node.group\n && (\n // in the first group column if groups appear in regular grid cells\n column === this.firstGroupColumn\n // or the first cell in the row, if we're doing full width rows\n || (index === 0 && this.gridOptionsWrapper.isGroupUseEntireRow(this.columnController.isPivotMode())));\n var valueForCell;\n if (renderGroupSummaryCell) {\n valueForCell = this.createValueForGroupNode(node);\n }\n else {\n valueForCell = this.valueService.getValue(column, node);\n }\n var value = this.processCell(node, column, valueForCell, this.processCellCallback, type);\n return value != null ? value : '';\n };\n BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n });\n }\n else {\n return this.columnController.getDisplayNameForColumn(column, 'csv', true);\n }\n };\n BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n if (this.processRowGroupCallback) {\n return this.processRowGroupCallback({\n node: node,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n });\n }\n var keys = [node.key];\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n return keys.reverse().join(' -> ');\n };\n BaseGridSerializingSession.prototype.processCell = function (rowNode, column, value, processCellCallback, type) {\n if (processCellCallback) {\n return processCellCallback({\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n type: type\n });\n }\n else {\n return value;\n }\n };\n return BaseGridSerializingSession;\n}());\nvar GridSerializer = /** @class */ (function () {\n function GridSerializer() {\n }\n GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n if (params === void 0) { params = {}; }\n var rowSkipper = params.shouldRowBeSkipped || (function () { return false; });\n var api = this.gridOptionsWrapper.getApi();\n var columnApi = this.gridOptionsWrapper.getColumnApi();\n var skipSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var skipLowestSingleChildrenGroup = this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n var context = this.gridOptionsWrapper.getContext();\n // when in pivot mode, we always render cols on screen, never 'all columns'\n var isPivotMode = this.columnController.isPivotMode();\n var rowModelNormal = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var onlySelectedNonStandardModel = !rowModelNormal && params.onlySelected;\n var columnsToExport = [];\n if (_.existsAndNotEmpty(params.columnKeys)) {\n columnsToExport = this.columnController.getGridColumns(params.columnKeys);\n }\n else if (params.allColumns && !isPivotMode) {\n // add auto group column for tree data\n columnsToExport = this.gridOptionsWrapper.isTreeData() ?\n this.columnController.getGridColumns([Constants.GROUP_AUTO_COLUMN_ID]) : [];\n columnsToExport = columnsToExport.concat(this.columnController.getAllPrimaryColumns() || []);\n }\n else {\n columnsToExport = this.columnController.getAllDisplayedColumns();\n }\n if (params.customHeader) {\n gridSerializingSession.addCustomContent(params.customHeader);\n }\n gridSerializingSession.prepare(columnsToExport);\n // first pass, put in the header names of the cols\n if (params.columnGroups) {\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n var displayedGroups = this.displayedGroupCreator.createDisplayedGroups(columnsToExport, this.columnController.getGridBalancedTree(), groupInstanceIdCreator, null);\n this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, params.processGroupHeaderCallback);\n }\n if (!params.skipHeader) {\n var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach(function (column, index) {\n gridRowIterator_1.onColumn(column, index, undefined);\n });\n }\n this.pinnedRowModel.forEachPinnedTopRow(processRow);\n if (isPivotMode) {\n if (this.rowModel.forEachPivotNode) {\n this.rowModel.forEachPivotNode(processRow);\n }\n else {\n //Must be enterprise, so we can just loop through all the nodes\n this.rowModel.forEachNode(processRow);\n }\n }\n else {\n // onlySelectedAllPages: user doing pagination and wants selected items from\n // other pages, so cannot use the standard row model as it won't have rows from\n // other pages.\n // onlySelectedNonStandardModel: if user wants selected in non standard row model\n // (eg viewport) then again rowmodel cannot be used, so need to use selected instead.\n if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {\n var selectedNodes = this.selectionController.getSelectedNodes();\n selectedNodes.forEach(function (node) {\n processRow(node);\n });\n }\n else {\n // here is everything else - including standard row model and selected. we don't use\n // the selection model even when just using selected, so that the result is the order\n // of the rows appearing on the screen.\n if (rowModelNormal) {\n this.rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else {\n this.rowModel.forEachNode(processRow);\n }\n }\n }\n this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n if (params.customFooter) {\n gridSerializingSession.addCustomContent(params.customFooter);\n }\n function processRow(node) {\n var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (node.group && (params.skipGroups || shouldSkipCurrentGroup)) {\n return;\n }\n if (params.skipFooters && node.footer) {\n return;\n }\n if (params.onlySelected && !node.isSelected()) {\n return;\n }\n if (params.skipPinnedTop && node.rowPinned === 'top') {\n return;\n }\n if (params.skipPinnedBottom && node.rowPinned === 'bottom') {\n return;\n }\n // if we are in pivotMode, then the grid will show the root node only\n // if it's not a leaf group\n var nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !node.leafGroup) {\n return;\n }\n var shouldRowBeSkipped = rowSkipper({ node: node, api: api, context: context });\n if (shouldRowBeSkipped) {\n return;\n }\n var rowAccumulator = gridSerializingSession.onNewBodyRow();\n columnsToExport.forEach(function (column, index) {\n rowAccumulator.onColumn(column, index, node);\n });\n if (params.getCustomContentBelowRow) {\n var content = params.getCustomContentBelowRow({ node: node, api: api, columnApi: columnApi, context: context });\n if (content) {\n gridSerializingSession.addCustomContent(content);\n }\n }\n }\n return gridSerializingSession.parse();\n };\n GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n var directChildrenHeaderGroups = [];\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n });\n if (displayedGroups.length > 0 && displayedGroups[0] instanceof ColumnGroup) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);\n }\n };\n GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n var _this = this;\n var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n var columnIndex = 0;\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n var name;\n if (processGroupHeaderCallback) {\n name = processGroupHeaderCallback({\n columnGroup: columnGroup,\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n });\n }\n else {\n name = _this.columnController.getDisplayNameForColumnGroup(columnGroup, 'header');\n }\n gridRowIterator.onColumn(name || '', columnIndex++, columnGroup.getLeafColumns().length - 1);\n });\n };\n __decorate$20([\n Autowired('displayedGroupCreator')\n ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n __decorate$20([\n Autowired('columnController')\n ], GridSerializer.prototype, \"columnController\", void 0);\n __decorate$20([\n Autowired('rowModel')\n ], GridSerializer.prototype, \"rowModel\", void 0);\n __decorate$20([\n Autowired('pinnedRowModel')\n ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n __decorate$20([\n Autowired('selectionController')\n ], GridSerializer.prototype, \"selectionController\", void 0);\n __decorate$20([\n Autowired('columnFactory')\n ], GridSerializer.prototype, \"columnFactory\", void 0);\n __decorate$20([\n Autowired('gridOptionsWrapper')\n ], GridSerializer.prototype, \"gridOptionsWrapper\", void 0);\n GridSerializer = __decorate$20([\n Bean(\"gridSerializer\")\n ], GridSerializer);\n return GridSerializer;\n}());\nvar RowType;\n(function (RowType) {\n RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType || (RowType = {}));\n\nvar __extends$1j = (undefined && undefined.__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})();\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LINE_SEPARATOR = '\\r\\n';\nvar CsvSerializingSession = /** @class */ (function (_super) {\n __extends$1j(CsvSerializingSession, _super);\n function CsvSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.isFirstLine = true;\n _this.result = '';\n var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;\n _this.suppressQuotes = suppressQuotes;\n _this.columnSeparator = columnSeparator;\n return _this;\n }\n CsvSerializingSession.prototype.addCustomContent = function (content) {\n var _this = this;\n if (!content) {\n return;\n }\n if (typeof content === 'string') {\n // we used to require the customFooter to be prefixed with a newline but no longer do,\n // so only add the newline if the user has not supplied one\n if (!/^\\s*\\n/.test(content)) {\n this.beginNewLine();\n }\n // replace whatever newlines are supplied with the style we're using\n content = content.replace(/\\r?\\n/g, LINE_SEPARATOR);\n this.result += content;\n }\n else {\n content.forEach(function (row) {\n _this.beginNewLine();\n row.forEach(function (cell, index) {\n if (index !== 0) {\n _this.result += _this.columnSeparator;\n }\n _this.result += _this.putInQuotes(cell.data.value || '');\n if (cell.mergeAcross) {\n _this.appendEmptyCells(cell.mergeAcross);\n }\n });\n });\n }\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (header, index, span) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(header);\n this.appendEmptyCells(span);\n };\n CsvSerializingSession.prototype.appendEmptyCells = function (count) {\n for (var i = 1; i <= count; i++) {\n this.result += this.columnSeparator + this.putInQuotes(\"\");\n }\n };\n CsvSerializingSession.prototype.onNewHeaderRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractHeaderValue(column));\n };\n CsvSerializingSession.prototype.onNewBodyRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewBodyRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractRowCellValue(column, index, Constants.EXPORT_TYPE_CSV, node));\n };\n CsvSerializingSession.prototype.putInQuotes = function (value) {\n if (this.suppressQuotes) {\n return value;\n }\n if (value === null || value === undefined) {\n return '\"\"';\n }\n var stringValue;\n if (typeof value === 'string') {\n stringValue = value;\n }\n else if (typeof value.toString === 'function') {\n stringValue = value.toString();\n }\n else {\n console.warn('unknown value type during csv conversion');\n stringValue = '';\n }\n // replace each \" with \"\" (ie two sets of double quotes is how to do double quotes in csv)\n var valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n return '\"' + valueEscaped + '\"';\n };\n CsvSerializingSession.prototype.parse = function () {\n return this.result;\n };\n CsvSerializingSession.prototype.beginNewLine = function () {\n if (!this.isFirstLine) {\n this.result += LINE_SEPARATOR;\n }\n this.isFirstLine = false;\n };\n return CsvSerializingSession;\n}(BaseGridSerializingSession));\nvar BaseCreator = /** @class */ (function () {\n function BaseCreator() {\n }\n BaseCreator.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"ag-grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var _a = this.getMergedParamsAndData(userParams), mergedParams = _a.mergedParams, data = _a.data;\n var fileNamePresent = mergedParams && mergedParams.fileName && mergedParams.fileName.length !== 0;\n var fileName = fileNamePresent ? mergedParams.fileName : this.getDefaultFileName();\n if (fileName.indexOf(\".\") === -1) {\n fileName = fileName + \".\" + this.getDefaultFileExtension();\n }\n this.beans.downloader.download(fileName, this.packageFile(data));\n return data;\n };\n BaseCreator.prototype.getData = function (params) {\n return this.getMergedParamsAndData(params).data;\n };\n BaseCreator.prototype.getMergedParamsAndData = function (userParams) {\n var mergedParams = this.mergeDefaultParams(userParams);\n var data = this.beans.gridSerializer.serialize(this.createSerializingSession(mergedParams), mergedParams);\n return { mergedParams: mergedParams, data: data };\n };\n BaseCreator.prototype.mergeDefaultParams = function (userParams) {\n var baseParams = this.beans.gridOptionsWrapper.getDefaultExportParams();\n var params = {};\n _.assign(params, baseParams);\n _.assign(params, userParams);\n return params;\n };\n BaseCreator.prototype.packageFile = function (data) {\n return new Blob([\"\\ufeff\", data], {\n type: window.navigator.msSaveOrOpenBlob ? this.getMimeType() : 'octet/stream'\n });\n };\n return BaseCreator;\n}());\nvar CsvCreator = /** @class */ (function (_super) {\n __extends$1j(CsvCreator, _super);\n function CsvCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CsvCreator.prototype.postConstruct = function () {\n this.setBeans({\n downloader: this.downloader,\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n CsvCreator.prototype.exportDataAsCsv = function (params) {\n return this.export(params);\n };\n CsvCreator.prototype.getDataAsCsv = function (params) {\n return this.getData(params);\n };\n CsvCreator.prototype.getMimeType = function () {\n return 'text/csv;charset=utf-8;';\n };\n CsvCreator.prototype.getDefaultFileName = function () {\n return 'export.csv';\n };\n CsvCreator.prototype.getDefaultFileExtension = function () {\n return 'csv';\n };\n CsvCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnController = _a.columnController, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var processCellCallback = params.processCellCallback, processHeaderCallback = params.processHeaderCallback, processGroupHeaderCallback = params.processGroupHeaderCallback, processRowGroupCallback = params.processRowGroupCallback, suppressQuotes = params.suppressQuotes, columnSeparator = params.columnSeparator;\n return new CsvSerializingSession({\n columnController: columnController,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper,\n processCellCallback: processCellCallback || undefined,\n processHeaderCallback: processHeaderCallback || undefined,\n processGroupHeaderCallback: processGroupHeaderCallback || undefined,\n processRowGroupCallback: processRowGroupCallback || undefined,\n suppressQuotes: suppressQuotes || false,\n columnSeparator: columnSeparator || ','\n });\n };\n CsvCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressCsvExport();\n };\n __decorate$21([\n Autowired('columnController')\n ], CsvCreator.prototype, \"columnController\", void 0);\n __decorate$21([\n Autowired('valueService')\n ], CsvCreator.prototype, \"valueService\", void 0);\n __decorate$21([\n Autowired('downloader')\n ], CsvCreator.prototype, \"downloader\", void 0);\n __decorate$21([\n Autowired('gridSerializer')\n ], CsvCreator.prototype, \"gridSerializer\", void 0);\n __decorate$21([\n Autowired('gridOptionsWrapper')\n ], CsvCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$21([\n PostConstruct\n ], CsvCreator.prototype, \"postConstruct\", null);\n CsvCreator = __decorate$21([\n Bean('csvCreator')\n ], CsvCreator);\n return CsvCreator;\n}(BaseCreator));\n\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Downloader = /** @class */ (function () {\n function Downloader() {\n }\n Downloader.prototype.download = function (fileName, content) {\n // Internet Explorer\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(content, fileName);\n }\n else {\n // Other Browsers\n var element = document.createElement(\"a\");\n var url_1 = window.URL.createObjectURL(content);\n element.setAttribute(\"href\", url_1);\n element.setAttribute(\"download\", fileName);\n element.style.display = \"none\";\n document.body.appendChild(element);\n element.dispatchEvent(new MouseEvent('click', {\n bubbles: false,\n cancelable: true,\n view: window\n }));\n document.body.removeChild(element);\n window.setTimeout(function () {\n window.URL.revokeObjectURL(url_1);\n }, 0);\n }\n };\n Downloader = __decorate$22([\n Bean(\"downloader\")\n ], Downloader);\n return Downloader;\n}());\n\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LINE_SEPARATOR$1 = '\\r\\n';\nvar XmlFactory = /** @class */ (function () {\n function XmlFactory() {\n }\n XmlFactory.prototype.createHeader = function (headerElement) {\n if (headerElement === void 0) { headerElement = {}; }\n var headerStart = '';\n var keys = ['version'];\n if (!headerElement.version) {\n headerElement.version = \"1.0\";\n }\n if (headerElement.encoding) {\n keys.push('encoding');\n }\n if (headerElement.standalone) {\n keys.push('standalone');\n }\n var att = keys.map(function (key) { return key + \"=\\\"\" + headerElement[key] + \"\\\"\"; }).join(' ');\n return headerStart + \"xml \" + att + \" \" + headerEnd;\n };\n XmlFactory.prototype.createXml = function (xmlElement, booleanTransformer) {\n var _this = this;\n var props = '';\n if (xmlElement.properties) {\n if (xmlElement.properties.prefixedAttributes) {\n xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {\n Object.keys(prefixedSet.map).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);\n });\n });\n }\n if (xmlElement.properties.rawMap) {\n Object.keys(xmlElement.properties.rawMap).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n });\n }\n }\n var result = '<' + xmlElement.name + props;\n if (!xmlElement.children && xmlElement.textNode == null) {\n return result + '/>' + LINE_SEPARATOR$1;\n }\n if (xmlElement.textNode != null) {\n return result + '>' + xmlElement.textNode + '' + LINE_SEPARATOR$1;\n }\n result += '>' + LINE_SEPARATOR$1;\n if (xmlElement.children) {\n xmlElement.children.forEach(function (it) {\n result += _this.createXml(it, booleanTransformer);\n });\n }\n return result + '' + LINE_SEPARATOR$1;\n };\n XmlFactory.prototype.returnAttributeIfPopulated = function (key, value, booleanTransformer) {\n if (!value && value !== '' && value !== 0) {\n return '';\n }\n var xmlValue = value;\n if ((typeof (value) === 'boolean')) {\n if (booleanTransformer) {\n xmlValue = booleanTransformer(value);\n }\n }\n return \" \" + key + \"=\\\"\" + xmlValue + \"\\\"\";\n };\n XmlFactory = __decorate$23([\n Bean('xmlFactory')\n ], XmlFactory);\n return XmlFactory;\n}());\n\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = [\n 0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274,\n 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548,\n 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990,\n 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096,\n 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722,\n 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980,\n 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974,\n 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192,\n 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290,\n 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444,\n 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902,\n 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960,\n 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506,\n 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948,\n 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054,\n 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912,\n -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366,\n -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716,\n -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770,\n -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408,\n -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446,\n -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492,\n -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754,\n -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376,\n -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662,\n -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284,\n -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362,\n -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400,\n -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478,\n -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188,\n -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682,\n -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117\n];\nvar ZipContainer = /** @class */ (function () {\n function ZipContainer() {\n var _this = this;\n this.folders = [];\n this.files = [];\n this.addFolder = function (path) {\n _this.folders.push({\n path: path,\n created: new Date()\n });\n };\n }\n ZipContainer.prototype.addFolders = function (paths) {\n paths.forEach(this.addFolder);\n };\n ZipContainer.prototype.addFile = function (path, content) {\n this.files.push({\n path: path,\n created: new Date(),\n content: content\n });\n };\n ZipContainer.prototype.clearStream = function () {\n this.folders = [];\n this.files = [];\n };\n ZipContainer.prototype.getContent = function (mimeType) {\n if (mimeType === void 0) { mimeType = 'application/zip'; }\n var textOutput = this.buildFileStream();\n var uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n };\n ZipContainer.prototype.buildFileStream = function (fData) {\n if (fData === void 0) { fData = ''; }\n var totalFiles = this.folders.concat(this.files);\n var len = totalFiles.length;\n var foData = '';\n var lL = 0;\n var cL = 0;\n for (var _i = 0, totalFiles_1 = totalFiles; _i < totalFiles_1.length; _i++) {\n var currentFile = totalFiles_1[_i];\n var _a = this.getHeader(currentFile, lL), fileHeader = _a.fileHeader, folderHeader = _a.folderHeader, content = _a.content;\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n var foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n };\n ZipContainer.prototype.getHeader = function (currentFile, offset) {\n var content = currentFile.content, path = currentFile.path, created = currentFile.created;\n var utf8_encode = _.utf8_encode, decToHex = _.decToHex;\n var utfPath = utf8_encode(path);\n var isUTF8 = utfPath !== path;\n var time = this.convertTime(created);\n var dt = this.convertDate(created);\n var extraFields = '';\n if (isUTF8) {\n var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n var header = '\\x0A\\x00' +\n (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n '\\x00\\x00' +\n decToHex(time, 2) + // last modified time\n decToHex(dt, 2) + // last modified date\n decToHex(content ? this.getFromCrc32Table(content) : 0, 4) +\n decToHex(content ? content.length : 0, 4) + // compressed size\n decToHex(content ? content.length : 0, 4) + // uncompressed size\n decToHex(utfPath.length, 2) + // file name length\n decToHex(extraFields.length, 2); // extra field length\n var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n var folderHeader = 'PK\\x01\\x02' + // central header\n '\\x14\\x00' +\n header + // file header\n '\\x00\\x00' +\n '\\x00\\x00' +\n '\\x00\\x00' +\n (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n decToHex(offset, 4) + // relative offset of local header\n utfPath + // file name\n extraFields; // extra field\n return { fileHeader: fileHeader, folderHeader: folderHeader, content: content || '' };\n };\n ZipContainer.prototype.buildFolderEnd = function (tLen, cLen, lLen) {\n var decToHex = _.decToHex;\n return 'PK\\x05\\x06' + // central folder end\n '\\x00\\x00' +\n '\\x00\\x00' +\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(cLen, 4) + // size of the central folder\n decToHex(lLen, 4) + // central folder start offset\n '\\x00\\x00';\n };\n ZipContainer.prototype.buildUint8Array = function (content) {\n var uint8 = new Uint8Array(content.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n };\n ZipContainer.prototype.getFromCrc32Table = function (content, crc) {\n if (crc === void 0) { crc = 0; }\n if (!content.length) {\n return 0;\n }\n crc ^= (-1);\n var j = 0;\n var k = 0;\n var l = 0;\n for (var i = 0; i < content.length; i++) {\n j = content.charCodeAt(i);\n k = (crc ^ j) & 0xFF;\n l = crcTable[k];\n crc = (crc >>> 8) ^ l;\n }\n return crc ^ (-1);\n };\n ZipContainer.prototype.convertTime = function (date) {\n var time = date.getHours();\n time <<= 6;\n time = time | date.getMinutes();\n time <<= 5;\n time = time | date.getSeconds() / 2;\n return time;\n };\n ZipContainer.prototype.convertDate = function (date) {\n var dt = date.getFullYear() - 1980;\n dt <<= 4;\n dt = dt | (date.getMonth() + 1);\n dt <<= 5;\n dt = dt | date.getDate();\n return dt;\n };\n ZipContainer = __decorate$24([\n Bean('zipContainer')\n ], ZipContainer);\n return ZipContainer;\n}());\n\nvar CsvExportModule = {\n moduleName: exports.ModuleNames.CsvExportModule,\n beans: [CsvCreator, Downloader, XmlFactory, GridSerializer, ZipContainer]\n};\n\nModuleRegistry.register(ClientSideRowModelModule, false);\r\nModuleRegistry.register(InfiniteRowModelModule, false);\r\nModuleRegistry.register(CsvExportModule, false);\n\nexports.AgAbstractField = AgAbstractField;\nexports.AgAngleSelect = AgAngleSelect;\nexports.AgCheckbox = AgCheckbox;\nexports.AgColorPicker = AgColorPicker;\nexports.AgDialog = AgDialog;\nexports.AgGroupComponent = AgGroupComponent;\nexports.AgInputNumberField = AgInputNumberField;\nexports.AgInputRange = AgInputRange;\nexports.AgInputTextArea = AgInputTextArea;\nexports.AgInputTextField = AgInputTextField;\nexports.AgPanel = AgPanel;\nexports.AgRadioButton = AgRadioButton;\nexports.AgSelect = AgSelect;\nexports.AgSlider = AgSlider;\nexports.AgToggleButton = AgToggleButton;\nexports.AlignedGridsService = AlignedGridsService;\nexports.AnimateShowChangeCellRenderer = AnimateShowChangeCellRenderer;\nexports.AnimateSlideCellRenderer = AnimateSlideCellRenderer;\nexports.AutoWidthCalculator = AutoWidthCalculator;\nexports.Autowired = Autowired;\nexports.BaseComponentWrapper = BaseComponentWrapper;\nexports.Bean = Bean;\nexports.BeanStub = BeanStub;\nexports.BodyDropPivotTarget = BodyDropPivotTarget;\nexports.BodyDropTarget = BodyDropTarget;\nexports.CellComp = CellComp;\nexports.CellNavigationService = CellNavigationService;\nexports.CellPositionUtils = CellPositionUtils;\nexports.CellRendererFactory = CellRendererFactory;\nexports.ChangedPath = ChangedPath;\nexports.CheckboxSelectionComponent = CheckboxSelectionComponent;\nexports.ColDefUtil = ColDefUtil;\nexports.Color = Color;\nexports.Column = Column;\nexports.ColumnApi = ColumnApi;\nexports.ColumnController = ColumnController;\nexports.ColumnFactory = ColumnFactory;\nexports.ColumnGroup = ColumnGroup;\nexports.ColumnKeyCreator = ColumnKeyCreator;\nexports.ColumnUtils = ColumnUtils;\nexports.Component = Component;\nexports.ComponentUtil = ComponentUtil;\nexports.Constants = Constants;\nexports.Context = Context;\nexports.CssClassApplier = CssClassApplier;\nexports.DateFilter = DateFilter;\nexports.DisplayedGroupCreator = DisplayedGroupCreator;\nexports.DragAndDropService = DragAndDropService;\nexports.DragService = DragService;\nexports.Environment = Environment;\nexports.EventService = EventService;\nexports.Events = Events;\nexports.ExpressionService = ExpressionService;\nexports.FilterManager = FilterManager;\nexports.FocusController = FocusController;\nexports.Grid = Grid;\nexports.GridApi = GridApi;\nexports.GridCore = GridCore;\nexports.GridOptionsWrapper = GridOptionsWrapper;\nexports.GridPanel = GridPanel;\nexports.GroupCellRenderer = GroupCellRenderer;\nexports.GroupInstanceIdCreator = GroupInstanceIdCreator;\nexports.HeaderContainer = HeaderContainer;\nexports.HeaderRootComp = HeaderRootComp;\nexports.HeaderRowComp = HeaderRowComp;\nexports.HorizontalResizeService = HorizontalResizeService;\nexports.LargeTextCellEditor = LargeTextCellEditor;\nexports.Listener = Listener;\nexports.Logger = Logger;\nexports.LoggerFactory = LoggerFactory;\nexports.ManagedTabComponent = ManagedTabComponent;\nexports.ModuleRegistry = ModuleRegistry;\nexports.MouseEventService = MouseEventService;\nexports.MoveColumnController = MoveColumnController;\nexports.NumberFilter = NumberFilter;\nexports.NumberSequence = NumberSequence;\nexports.Optional = Optional;\nexports.OriginalColumnGroup = OriginalColumnGroup;\nexports.PaginationProxy = PaginationProxy;\nexports.PinnedRowModel = PinnedRowModel;\nexports.PopupComponent = PopupComponent;\nexports.PopupEditorWrapper = PopupEditorWrapper;\nexports.PopupSelectCellEditor = PopupSelectCellEditor;\nexports.PopupService = PopupService;\nexports.PopupTextCellEditor = PopupTextCellEditor;\nexports.PostConstruct = PostConstruct;\nexports.PreConstruct = PreConstruct;\nexports.PreDestroy = PreDestroy;\nexports.Promise = Promise;\nexports.PropertyKeys = PropertyKeys;\nexports.ProvidedFilter = ProvidedFilter;\nexports.Qualifier = Qualifier;\nexports.QuerySelector = QuerySelector;\nexports.RefSelector = RefSelector;\nexports.ResizeObserverService = ResizeObserverService;\nexports.RowComp = RowComp;\nexports.RowNode = RowNode;\nexports.RowNodeBlock = RowNodeBlock;\nexports.RowNodeBlockLoader = RowNodeBlockLoader;\nexports.RowNodeCache = RowNodeCache;\nexports.RowPositionUtils = RowPositionUtils;\nexports.RowRenderer = RowRenderer;\nexports.ScalarFilter = ScalarFilter;\nexports.ScrollVisibleService = ScrollVisibleService;\nexports.SelectCellEditor = SelectCellEditor;\nexports.SelectableService = SelectableService;\nexports.SelectionController = SelectionController;\nexports.SetLeftFeature = SetLeftFeature;\nexports.SimpleFilter = SimpleFilter;\nexports.SortController = SortController;\nexports.StandardMenuFactory = StandardMenuFactory;\nexports.StylingService = StylingService;\nexports.TabbedLayout = TabbedLayout;\nexports.TemplateService = TemplateService;\nexports.TextCellEditor = TextCellEditor;\nexports.TextFilter = TextFilter;\nexports.Timer = Timer;\nexports.TooltipFeature = TooltipFeature;\nexports.TouchListener = TouchListener;\nexports.UserComponentFactory = UserComponentFactory;\nexports.UserComponentRegistry = UserComponentRegistry;\nexports.ValueCache = ValueCache;\nexports.ValueFormatterService = ValueFormatterService;\nexports.ValueService = ValueService;\nexports.VanillaFrameworkOverrides = VanillaFrameworkOverrides;\nexports.VirtualList = VirtualList;\nexports._ = _;\nexports.defaultGroupComparator = defaultGroupComparator;\nexports.initialiseAgGridWithAngular1 = initialiseAgGridWithAngular1;\nexports.initialiseAgGridWithWebComponents = initialiseAgGridWithWebComponents;\nexports.simpleHttpRequest = simpleHttpRequest;\nexports.stringToArray = stringToArray;\n","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeFunction from \"@babel/runtime/helpers/esm/isNativeFunction\";\nimport construct from \"@babel/runtime/helpers/esm/construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/**\n * @license Angular v11.2.14\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { Subject, Subscription, Observable, merge as merge$1 } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction getClosureSafeProperty(objWithPropertyToExtract) {\n for (let key in objWithPropertyToExtract) {\n if (objWithPropertyToExtract[key] === getClosureSafeProperty) {\n return key;\n }\n }\n throw Error('Could not find renamed property on target object.');\n}\n/**\n * Sets properties on a target object from a source object, but only if\n * the property doesn't already exist on the target object.\n * @param target The target to set properties on\n * @param source The source of the property keys and values to set\n */\nfunction fillProperties(target, source) {\n for (const key in source) {\n if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (Array.isArray(token)) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n if (token.name) {\n return `${token.name}`;\n }\n const res = token.toString();\n if (res == null) {\n return '' + res;\n }\n const newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n/**\n * Concatenates two strings with separator, allocating new strings only when necessary.\n *\n * @param before before string.\n * @param separator separator string.\n * @param after after string.\n * @returns concatenated string.\n */\nfunction concatStringsWithSpace(before, after) {\n return (before == null || before === '') ?\n (after === null ? '' : after) :\n ((after == null || after === '') ? before : before + ' ' + after);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst __forward_ref__ = getClosureSafeProperty({ __forward_ref__: getClosureSafeProperty });\n/**\n * Allows to refer to references which are not yet defined.\n *\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared, but not yet defined. It is also used when the `token` which we use when creating\n * a query is not yet defined.\n *\n * @usageNotes\n * ### Example\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n * @publicApi\n */\nfunction forwardRef(forwardRefFn) {\n forwardRefFn.__forward_ref__ = forwardRef;\n forwardRefFn.toString = function () {\n return stringify(this());\n };\n return forwardRefFn;\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n *\n * Acts as the identity function when given a non-forward-ref value.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n *\n * @see `forwardRef`\n * @publicApi\n */\nfunction resolveForwardRef(type) {\n return isForwardRef(type) ? type() : type;\n}\n/** Checks whether a function is wrapped by a `forwardRef`. */\nfunction isForwardRef(fn) {\n return typeof fn === 'function' && fn.hasOwnProperty(__forward_ref__) &&\n fn.__forward_ref__ === forwardRef;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Base URL for the error details page.\n// Keep this value in sync with a similar const in\n// `packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts`.\nconst ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.io/errors';\nclass RuntimeError extends Error {\n constructor(code, message) {\n super(formatRuntimeError(code, message));\n this.code = code;\n }\n}\n// Contains a set of error messages that have details guides at angular.io.\n// Full list of available error guides can be found at https://angular.io/errors\n/* tslint:disable:no-toplevel-property-access */\nconst RUNTIME_ERRORS_WITH_GUIDES = new Set([\n \"100\" /* EXPRESSION_CHANGED_AFTER_CHECKED */,\n \"200\" /* CYCLIC_DI_DEPENDENCY */,\n \"201\" /* PROVIDER_NOT_FOUND */,\n \"300\" /* MULTIPLE_COMPONENTS_MATCH */,\n \"301\" /* EXPORT_NOT_FOUND */,\n \"302\" /* PIPE_NOT_FOUND */,\n]);\n/* tslint:enable:no-toplevel-property-access */\n/** Called to format a runtime error */\nfunction formatRuntimeError(code, message) {\n const fullCode = code ? `NG0${code}: ` : '';\n let errorMessage = `${fullCode}${message}`;\n // Some runtime errors are still thrown without `ngDevMode` (for example\n // `throwProviderNotFoundError`), so we add `ngDevMode` check here to avoid pulling\n // `RUNTIME_ERRORS_WITH_GUIDES` symbol into prod bundles.\n // TODO: revisit all instances where `RuntimeError` is thrown and see if `ngDevMode` can be added\n // there instead to tree-shake more devmode-only code (and eventually remove `ngDevMode` check\n // from this code).\n if (ngDevMode && RUNTIME_ERRORS_WITH_GUIDES.has(code)) {\n errorMessage = `${errorMessage}. Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/NG0${code}`;\n }\n return errorMessage;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used for stringify render output in Ivy.\n * Important! This function is very performance-sensitive and we should\n * be extra careful not to introduce megamorphic reads in it.\n * Check `core/test/render3/perf/render_stringify` for benchmarks and alternate implementations.\n */\nfunction renderStringify(value) {\n if (typeof value === 'string')\n return value;\n if (value == null)\n return '';\n // Use `String` so that it invokes the `toString` method of the value. Note that this\n // appears to be faster than calling `value.toString` (see `render_stringify` benchmark).\n return String(value);\n}\n/**\n * Used to stringify a value so that it can be displayed in an error message.\n * Important! This function contains a megamorphic read and should only be\n * used for error messages.\n */\nfunction stringifyForError(value) {\n if (typeof value === 'function')\n return value.name || value.toString();\n if (typeof value === 'object' && value != null && typeof value.type === 'function') {\n return value.type.name || value.type.toString();\n }\n return renderStringify(value);\n}\n\n/** Called when directives inject each other (creating a circular dependency) */\nfunction throwCyclicDependencyError(token, path) {\n const depPath = path ? `. Dependency path: ${path.join(' > ')} > ${token}` : '';\n throw new RuntimeError(\"200\" /* CYCLIC_DI_DEPENDENCY */, `Circular dependency in DI detected for ${token}${depPath}`);\n}\nfunction throwMixedMultiProviderError() {\n throw new Error(`Cannot mix multi providers and regular providers`);\n}\nfunction throwInvalidProviderError(ngModuleType, providers, provider) {\n let ngModuleDetail = '';\n if (ngModuleType && providers) {\n const providerDetail = providers.map(v => v == provider ? '?' + provider + '?' : '...');\n ngModuleDetail =\n ` - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`;\n }\n throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}'` + ngModuleDetail);\n}\n/** Throws an error when a token is not found in DI. */\nfunction throwProviderNotFoundError(token, injectorName) {\n const injectorDetails = injectorName ? ` in ${injectorName}` : '';\n throw new RuntimeError(\"201\" /* PROVIDER_NOT_FOUND */, `No provider for ${stringifyForError(token)} found${injectorDetails}`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction assertNumber(actual, msg) {\n if (!(typeof actual === 'number')) {\n throwError(msg, typeof actual, 'number', '===');\n }\n}\nfunction assertNumberInRange(actual, minInclusive, maxInclusive) {\n assertNumber(actual, 'Expected a number');\n assertLessThanOrEqual(actual, maxInclusive, 'Expected number to be less than or equal to');\n assertGreaterThanOrEqual(actual, minInclusive, 'Expected number to be greater than or equal to');\n}\nfunction assertString(actual, msg) {\n if (!(typeof actual === 'string')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'string', '===');\n }\n}\nfunction assertFunction(actual, msg) {\n if (!(typeof actual === 'function')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'function', '===');\n }\n}\nfunction assertEqual(actual, expected, msg) {\n if (!(actual == expected)) {\n throwError(msg, actual, expected, '==');\n }\n}\nfunction assertNotEqual(actual, expected, msg) {\n if (!(actual != expected)) {\n throwError(msg, actual, expected, '!=');\n }\n}\nfunction assertSame(actual, expected, msg) {\n if (!(actual === expected)) {\n throwError(msg, actual, expected, '===');\n }\n}\nfunction assertNotSame(actual, expected, msg) {\n if (!(actual !== expected)) {\n throwError(msg, actual, expected, '!==');\n }\n}\nfunction assertLessThan(actual, expected, msg) {\n if (!(actual < expected)) {\n throwError(msg, actual, expected, '<');\n }\n}\nfunction assertLessThanOrEqual(actual, expected, msg) {\n if (!(actual <= expected)) {\n throwError(msg, actual, expected, '<=');\n }\n}\nfunction assertGreaterThan(actual, expected, msg) {\n if (!(actual > expected)) {\n throwError(msg, actual, expected, '>');\n }\n}\nfunction assertGreaterThanOrEqual(actual, expected, msg) {\n if (!(actual >= expected)) {\n throwError(msg, actual, expected, '>=');\n }\n}\nfunction assertNotDefined(actual, msg) {\n if (actual != null) {\n throwError(msg, actual, null, '==');\n }\n}\nfunction assertDefined(actual, msg) {\n if (actual == null) {\n throwError(msg, actual, null, '!=');\n }\n}\nfunction throwError(msg, actual, expected, comparison) {\n throw new Error(`ASSERTION ERROR: ${msg}` +\n (comparison == null ? '' : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`));\n}\nfunction assertDomNode(node) {\n // If we're in a worker, `Node` will not be defined.\n if (!(typeof Node !== 'undefined' && node instanceof Node) &&\n !(typeof node === 'object' && node != null &&\n node.constructor.name === 'WebWorkerRenderNode')) {\n throwError(`The provided value must be an instance of a DOM Node but got ${stringify(node)}`);\n }\n}\nfunction assertIndexInRange(arr, index) {\n assertDefined(arr, 'Array must be defined.');\n const maxLen = arr.length;\n if (index < 0 || index >= maxLen) {\n throwError(`Index expected to be less than ${maxLen} but got ${index}`);\n }\n}\nfunction assertOneOf(value, ...validValues) {\n if (validValues.indexOf(value) !== -1)\n return true;\n throwError(`Expected value to be one of ${JSON.stringify(validValues)} but was ${JSON.stringify(value)}.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Construct an `InjectableDef` which defines how a token will be constructed by the DI system, and\n * in which injectors (if any) it will be available.\n *\n * This should be assigned to a static `ɵprov` field on a type, which will then be an\n * `InjectableType`.\n *\n * Options:\n * * `providedIn` determines which injectors will include the injectable, by either associating it\n * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be\n * provided in the `'root'` injector, which will be the application-level injector in most apps.\n * * `factory` gives the zero argument function which will create an instance of the injectable.\n * The factory can call `inject` to access the `Injector` and request injection of dependencies.\n *\n * @codeGenApi\n * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.\n */\nfunction ɵɵdefineInjectable(opts) {\n return {\n token: opts.token,\n providedIn: opts.providedIn || null,\n factory: opts.factory,\n value: undefined,\n };\n}\n/**\n * @deprecated in v8, delete after v10. This API should be used only by generated code, and that\n * code should now use ɵɵdefineInjectable instead.\n * @publicApi\n */\nconst defineInjectable = ɵɵdefineInjectable;\n/**\n * Construct an `InjectorDef` which configures an injector.\n *\n * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an\n * `InjectorType`.\n *\n * Options:\n *\n * * `providers`: an optional array of providers to add to the injector. Each provider must\n * either have a factory or point to a type which has a `ɵprov` static property (the\n * type must be an `InjectableType`).\n * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s\n * whose providers will also be added to the injector. Locally provided types will override\n * providers from imports.\n *\n * @codeGenApi\n */\nfunction ɵɵdefineInjector(options) {\n return { providers: options.providers || [], imports: options.imports || [] };\n}\n/**\n * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading\n * inherited value.\n *\n * @param type A type which may have its own (non-inherited) `ɵprov`.\n */\nfunction getInjectableDef(type) {\n return getOwnDefinition(type, NG_PROV_DEF) || getOwnDefinition(type, NG_INJECTABLE_DEF);\n}\n/**\n * Return definition only if it is defined directly on `type` and is not inherited from a base\n * class of `type`.\n */\nfunction getOwnDefinition(type, field) {\n return type.hasOwnProperty(field) ? type[field] : null;\n}\n/**\n * Read the injectable def (`ɵprov`) for `type` or read the `ɵprov` from one of its ancestors.\n *\n * @param type A type which may have `ɵprov`, via inheritance.\n *\n * @deprecated Will be removed in a future version of Angular, where an error will occur in the\n * scenario if we find the `ɵprov` on an ancestor only.\n */\nfunction getInheritedInjectableDef(type) {\n const def = type && (type[NG_PROV_DEF] || type[NG_INJECTABLE_DEF]);\n if (def) {\n const typeName = getTypeName(type);\n // TODO(FW-1307): Re-add ngDevMode when closure can handle it\n // ngDevMode &&\n console.warn(`DEPRECATED: DI is instantiating a token \"${typeName}\" that inherits its @Injectable decorator but does not provide one itself.\\n` +\n `This will become an error in a future version of Angular. Please add @Injectable() to the \"${typeName}\" class.`);\n return def;\n }\n else {\n return null;\n }\n}\n/** Gets the name of a type, accounting for some cross-browser differences. */\nfunction getTypeName(type) {\n // `Function.prototype.name` behaves differently between IE and other browsers. In most browsers\n // it'll always return the name of the function itself, no matter how many other functions it\n // inherits from. On IE the function doesn't have its own `name` property, but it takes it from\n // the lowest level in the prototype chain. E.g. if we have `class Foo extends Parent` most\n // browsers will evaluate `Foo.name` to `Foo` while IE will return `Parent`. We work around\n // the issue by converting the function to a string and parsing its name out that way via a regex.\n if (type.hasOwnProperty('name')) {\n return type.name;\n }\n const match = ('' + type).match(/^function\\s*([^\\s(]+)/);\n return match === null ? '' : match[1];\n}\n/**\n * Read the injector def type in a way which is immune to accidentally reading inherited value.\n *\n * @param type type which may have an injector def (`ɵinj`)\n */\nfunction getInjectorDef(type) {\n return type && (type.hasOwnProperty(NG_INJ_DEF) || type.hasOwnProperty(NG_INJECTOR_DEF)) ?\n type[NG_INJ_DEF] :\n null;\n}\nconst NG_PROV_DEF = getClosureSafeProperty({ ɵprov: getClosureSafeProperty });\nconst NG_INJ_DEF = getClosureSafeProperty({ ɵinj: getClosureSafeProperty });\n// We need to keep these around so we can read off old defs if new defs are unavailable\nconst NG_INJECTABLE_DEF = getClosureSafeProperty({ ngInjectableDef: getClosureSafeProperty });\nconst NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafeProperty });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection flags for DI.\n *\n * @publicApi\n */\nvar InjectFlags;\n(function (InjectFlags) {\n // TODO(alxhub): make this 'const' (and remove `InternalInjectFlags` enum) when ngc no longer\n // writes exports of it into ngfactory files.\n /** Check self and check parent injector if needed */\n InjectFlags[InjectFlags[\"Default\"] = 0] = \"Default\";\n /**\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\n * host element of the current component. (Only used with Element Injector)\n */\n InjectFlags[InjectFlags[\"Host\"] = 1] = \"Host\";\n /** Don't ascend to ancestors of the node requesting injection. */\n InjectFlags[InjectFlags[\"Self\"] = 2] = \"Self\";\n /** Skip the node that is requesting injection. */\n InjectFlags[InjectFlags[\"SkipSelf\"] = 4] = \"SkipSelf\";\n /** Inject `defaultValue` instead if token not found. */\n InjectFlags[InjectFlags[\"Optional\"] = 8] = \"Optional\";\n})(InjectFlags || (InjectFlags = {}));\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Current implementation of inject.\n *\n * By default, it is `injectInjectorOnly`, which makes it `Injector`-only aware. It can be changed\n * to `directiveInject`, which brings in the `NodeInjector` system of ivy. It is designed this\n * way for two reasons:\n * 1. `Injector` should not depend on ivy logic.\n * 2. To maintain tree shake-ability we don't want to bring in unnecessary code.\n */\nlet _injectImplementation;\nfunction getInjectImplementation() {\n return _injectImplementation;\n}\n/**\n * Sets the current inject implementation.\n */\nfunction setInjectImplementation(impl) {\n const previous = _injectImplementation;\n _injectImplementation = impl;\n return previous;\n}\n/**\n * Injects `root` tokens in limp mode.\n *\n * If no injector exists, we can still inject tree-shakable providers which have `providedIn` set to\n * `\"root\"`. This is known as the limp mode injection. In such case the value is stored in the\n * `InjectableDef`.\n */\nfunction injectRootLimpMode(token, notFoundValue, flags) {\n const injectableDef = getInjectableDef(token);\n if (injectableDef && injectableDef.providedIn == 'root') {\n return injectableDef.value === undefined ? injectableDef.value = injectableDef.factory() :\n injectableDef.value;\n }\n if (flags & InjectFlags.Optional)\n return null;\n if (notFoundValue !== undefined)\n return notFoundValue;\n throwProviderNotFoundError(stringify(token), 'Injector');\n}\n/**\n * Assert that `_injectImplementation` is not `fn`.\n *\n * This is useful, to prevent infinite recursion.\n *\n * @param fn Function which it should not equal to\n */\nfunction assertInjectImplementationNotEqual(fn) {\n ngDevMode &&\n assertNotEqual(_injectImplementation, fn, 'Calling ɵɵinject would cause infinite recursion');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Convince closure compiler that the wrapped function has no side-effects.\n *\n * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to\n * allow us to execute a function but have closure compiler mark the call as no-side-effects.\n * It is important that the return value for the `noSideEffects` function be assigned\n * to something which is retained otherwise the call to `noSideEffects` will be removed by closure\n * compiler.\n */\nfunction noSideEffects(fn) {\n return { toString: fn }.toString();\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The strategy that the default change detector uses to detect changes.\n * When set, takes effect the next time change detection is triggered.\n *\n * @see {@link ChangeDetectorRef#usage-notes Change detection usage}\n *\n * @publicApi\n */\nvar ChangeDetectionStrategy;\n(function (ChangeDetectionStrategy) {\n /**\n * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated\n * until reactivated by setting the strategy to `Default` (`CheckAlways`).\n * Change detection can still be explicitly invoked.\n * This strategy applies to all child directives and cannot be overridden.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 0] = \"OnPush\";\n /**\n * Use the default `CheckAlways` strategy, in which change detection is automatic until\n * explicitly deactivated.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 1] = \"Default\";\n})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));\n/**\n * Defines the possible states of the default change detector.\n * @see `ChangeDetectorRef`\n */\nvar ChangeDetectorStatus;\n(function (ChangeDetectorStatus) {\n /**\n * A state in which, after calling `detectChanges()`, the change detector\n * state becomes `Checked`, and must be explicitly invoked or reactivated.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"CheckOnce\"] = 0] = \"CheckOnce\";\n /**\n * A state in which change detection is skipped until the change detector mode\n * becomes `CheckOnce`.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Checked\"] = 1] = \"Checked\";\n /**\n * A state in which change detection continues automatically until explicitly\n * deactivated.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"CheckAlways\"] = 2] = \"CheckAlways\";\n /**\n * A state in which a change detector sub tree is not a part of the main tree and\n * should be skipped.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Detached\"] = 3] = \"Detached\";\n /**\n * Indicates that the change detector encountered an error checking a binding\n * or calling a directive lifecycle method and is now in an inconsistent state. Change\n * detectors in this state do not detect changes.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Errored\"] = 4] = \"Errored\";\n /**\n * Indicates that the change detector has been destroyed.\n */\n ChangeDetectorStatus[ChangeDetectorStatus[\"Destroyed\"] = 5] = \"Destroyed\";\n})(ChangeDetectorStatus || (ChangeDetectorStatus = {}));\n/**\n * Reports whether a given strategy is currently the default for change detection.\n * @param changeDetectionStrategy The strategy to check.\n * @returns True if the given strategy is the current default, false otherwise.\n * @see `ChangeDetectorStatus`\n * @see `ChangeDetectorRef`\n */\nfunction isDefaultChangeDetectionStrategy(changeDetectionStrategy) {\n return changeDetectionStrategy == null ||\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines template and style encapsulation options available for Component's {@link Component}.\n *\n * See {@link Component#encapsulation encapsulation}.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/ts/metadata/encapsulation.ts region='longform'}\n *\n * @publicApi\n */\nvar ViewEncapsulation;\n(function (ViewEncapsulation) {\n /**\n * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host\n * Element and pre-processing the style rules provided via {@link Component#styles styles} or\n * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all\n * selectors.\n *\n * This is the default option.\n */\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n /**\n * Don't provide any template or style encapsulation.\n */\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n /**\n * Use Shadow DOM to encapsulate styles.\n *\n * For the DOM this means using modern [Shadow\n * DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) and\n * creating a ShadowRoot for Component's Host Element.\n */\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation || (ViewEncapsulation = {}));\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst __globalThis = typeof globalThis !== 'undefined' && globalThis;\nconst __window = typeof window !== 'undefined' && window;\nconst __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nconst __global = typeof global !== 'undefined' && global;\n// Always use __globalThis if available, which is the spec-defined global variable across all\n// environments, then fallback to __global first, because in Node tests both __global and\n// __window may be defined and _global should be __global in that case.\nconst _global = __globalThis || __global || __window || __self;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction ngDevModeResetPerfCounters() {\n const locationString = typeof location !== 'undefined' ? location.toString() : '';\n const newCounters = {\n namedConstructors: locationString.indexOf('ngDevMode=namedConstructors') != -1,\n firstCreatePass: 0,\n tNode: 0,\n tView: 0,\n rendererCreateTextNode: 0,\n rendererSetText: 0,\n rendererCreateElement: 0,\n rendererAddEventListener: 0,\n rendererSetAttribute: 0,\n rendererRemoveAttribute: 0,\n rendererSetProperty: 0,\n rendererSetClassName: 0,\n rendererAddClass: 0,\n rendererRemoveClass: 0,\n rendererSetStyle: 0,\n rendererRemoveStyle: 0,\n rendererDestroy: 0,\n rendererDestroyNode: 0,\n rendererMoveNode: 0,\n rendererRemoveNode: 0,\n rendererAppendChild: 0,\n rendererInsertBefore: 0,\n rendererCreateComment: 0,\n };\n // Make sure to refer to ngDevMode as ['ngDevMode'] for closure.\n const allowNgDevModeTrue = locationString.indexOf('ngDevMode=false') === -1;\n _global['ngDevMode'] = allowNgDevModeTrue && newCounters;\n return newCounters;\n}\n/**\n * This function checks to see if the `ngDevMode` has been set. If yes,\n * then we honor it, otherwise we default to dev mode with additional checks.\n *\n * The idea is that unless we are doing production build where we explicitly\n * set `ngDevMode == false` we should be helping the developer by providing\n * as much early warning and errors as possible.\n *\n * `ɵɵdefineComponent` is guaranteed to have been called before any component template functions\n * (and thus Ivy instructions), so a single initialization there is sufficient to ensure ngDevMode\n * is defined for the entire instruction set.\n *\n * When checking `ngDevMode` on toplevel, always init it before referencing it\n * (e.g. `((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode())`), otherwise you can\n * get a `ReferenceError` like in https://github.com/angular/angular/issues/31595.\n *\n * Details on possible values for `ngDevMode` can be found on its docstring.\n *\n * NOTE:\n * - changes to the `ngDevMode` name must be synced with `compiler-cli/src/tooling.ts`.\n */\nfunction initNgDevMode() {\n // The below checks are to ensure that calling `initNgDevMode` multiple times does not\n // reset the counters.\n // If the `ngDevMode` is not an object, then it means we have not created the perf counters\n // yet.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (typeof ngDevMode !== 'object') {\n ngDevModeResetPerfCounters();\n }\n return typeof ngDevMode !== 'undefined' && !!ngDevMode;\n }\n return false;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This file contains reuseable \"empty\" symbols that can be used as default return values\n * in different parts of the rendering code. Because the same symbols are returned, this\n * allows for identity checks against these values to be consistently used by the framework\n * code.\n */\nconst EMPTY_OBJ = {};\nconst EMPTY_ARRAY = [];\n// freezing the values prevents any code from accidentally inserting new values in\nif ((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode()) {\n // These property accesses can be ignored because ngDevMode will be set to false\n // when optimizing code and the whole if statement will be dropped.\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_OBJ);\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_ARRAY);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This file contains reuseable \"empty\" symbols that can be used as default return values\n * in different parts of the rendering code. Because the same symbols are returned, this\n * allows for identity checks against these values to be consistently used by the framework\n * code.\n */\nconst EMPTY_ARRAY$1 = [];\n// freezing the values prevents any code from accidentally inserting new values in\nif ((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode()) {\n // These property accesses can be ignored because ngDevMode will be set to false\n // when optimizing code and the whole if statement will be dropped.\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_ARRAY$1);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_COMP_DEF = getClosureSafeProperty({ ɵcmp: getClosureSafeProperty });\nconst NG_DIR_DEF = getClosureSafeProperty({ ɵdir: getClosureSafeProperty });\nconst NG_PIPE_DEF = getClosureSafeProperty({ ɵpipe: getClosureSafeProperty });\nconst NG_MOD_DEF = getClosureSafeProperty({ ɵmod: getClosureSafeProperty });\nconst NG_LOC_ID_DEF = getClosureSafeProperty({ ɵloc: getClosureSafeProperty });\nconst NG_FACTORY_DEF = getClosureSafeProperty({ ɵfac: getClosureSafeProperty });\n/**\n * If a directive is diPublic, bloomAdd sets a property on the type with this constant as\n * the key and the directive's unique ID as the value. This allows us to map directives to their\n * bloom filter bit for DI.\n */\n// TODO(misko): This is wrong. The NG_ELEMENT_ID should never be minified.\nconst NG_ELEMENT_ID = getClosureSafeProperty({ __NG_ELEMENT_ID__: getClosureSafeProperty });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _renderCompCount = 0;\n/**\n * Create a component definition object.\n *\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵcmp = defineComponent({\n * ...\n * });\n * }\n * ```\n * @codeGenApi\n */\nfunction ɵɵdefineComponent(componentDefinition) {\n return noSideEffects(() => {\n // Initialize ngDevMode. This must be the first statement in ɵɵdefineComponent.\n // See the `initNgDevMode` docstring for more information.\n (typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode();\n const type = componentDefinition.type;\n const declaredInputs = {};\n const def = {\n type: type,\n providersResolver: null,\n decls: componentDefinition.decls,\n vars: componentDefinition.vars,\n factory: null,\n template: componentDefinition.template || null,\n consts: componentDefinition.consts || null,\n ngContentSelectors: componentDefinition.ngContentSelectors,\n hostBindings: componentDefinition.hostBindings || null,\n hostVars: componentDefinition.hostVars || 0,\n hostAttrs: componentDefinition.hostAttrs || null,\n contentQueries: componentDefinition.contentQueries || null,\n declaredInputs: declaredInputs,\n inputs: null,\n outputs: null,\n exportAs: componentDefinition.exportAs || null,\n onPush: componentDefinition.changeDetection === ChangeDetectionStrategy.OnPush,\n directiveDefs: null,\n pipeDefs: null,\n selectors: componentDefinition.selectors || EMPTY_ARRAY$1,\n viewQuery: componentDefinition.viewQuery || null,\n features: componentDefinition.features || null,\n data: componentDefinition.data || {},\n // TODO(misko): convert ViewEncapsulation into const enum so that it can be used\n // directly in the next line. Also `None` should be 0 not 2.\n encapsulation: componentDefinition.encapsulation || ViewEncapsulation.Emulated,\n id: 'c',\n styles: componentDefinition.styles || EMPTY_ARRAY$1,\n _: null,\n setInput: null,\n schemas: componentDefinition.schemas || null,\n tView: null,\n };\n const directiveTypes = componentDefinition.directives;\n const feature = componentDefinition.features;\n const pipeTypes = componentDefinition.pipes;\n def.id += _renderCompCount++;\n def.inputs = invertObject(componentDefinition.inputs, declaredInputs),\n def.outputs = invertObject(componentDefinition.outputs),\n feature && feature.forEach((fn) => fn(def));\n def.directiveDefs = directiveTypes ?\n () => (typeof directiveTypes === 'function' ? directiveTypes() : directiveTypes)\n .map(extractDirectiveDef) :\n null;\n def.pipeDefs = pipeTypes ?\n () => (typeof pipeTypes === 'function' ? pipeTypes() : pipeTypes).map(extractPipeDef) :\n null;\n return def;\n });\n}\n/**\n * Generated next to NgModules to monkey-patch directive and pipe references onto a component's\n * definition, when generating a direct reference in the component file would otherwise create an\n * import cycle.\n *\n * See [this explanation](https://hackmd.io/Odw80D0pR6yfsOjg_7XCJg?view) for more details.\n *\n * @codeGenApi\n */\nfunction ɵɵsetComponentScope(type, directives, pipes) {\n const def = type.ɵcmp;\n def.directiveDefs = () => directives.map(extractDirectiveDef);\n def.pipeDefs = () => pipes.map(extractPipeDef);\n}\nfunction extractDirectiveDef(type) {\n const def = getComponentDef(type) || getDirectiveDef(type);\n if (ngDevMode && !def) {\n throw new Error(`'${type.name}' is neither 'ComponentType' or 'DirectiveType'.`);\n }\n return def;\n}\nfunction extractPipeDef(type) {\n const def = getPipeDef(type);\n if (ngDevMode && !def) {\n throw new Error(`'${type.name}' is not a 'PipeType'.`);\n }\n return def;\n}\nconst autoRegisterModuleById = {};\n/**\n * @codeGenApi\n */\nfunction ɵɵdefineNgModule(def) {\n const res = {\n type: def.type,\n bootstrap: def.bootstrap || EMPTY_ARRAY$1,\n declarations: def.declarations || EMPTY_ARRAY$1,\n imports: def.imports || EMPTY_ARRAY$1,\n exports: def.exports || EMPTY_ARRAY$1,\n transitiveCompileScopes: null,\n schemas: def.schemas || null,\n id: def.id || null,\n };\n if (def.id != null) {\n noSideEffects(() => {\n autoRegisterModuleById[def.id] = def.type;\n });\n }\n return res;\n}\n/**\n * Adds the module metadata that is necessary to compute the module's transitive scope to an\n * existing module definition.\n *\n * Scope metadata of modules is not used in production builds, so calls to this function can be\n * marked pure to tree-shake it from the bundle, allowing for all referenced declarations\n * to become eligible for tree-shaking as well.\n *\n * @codeGenApi\n */\nfunction ɵɵsetNgModuleScope(type, scope) {\n return noSideEffects(() => {\n const ngModuleDef = getNgModuleDef(type, true);\n ngModuleDef.declarations = scope.declarations || EMPTY_ARRAY$1;\n ngModuleDef.imports = scope.imports || EMPTY_ARRAY$1;\n ngModuleDef.exports = scope.exports || EMPTY_ARRAY$1;\n });\n}\n/**\n * Inverts an inputs or outputs lookup such that the keys, which were the\n * minified keys, are part of the values, and the values are parsed so that\n * the publicName of the property is the new key\n *\n * e.g. for\n *\n * ```\n * class Comp {\n * @Input()\n * propName1: string;\n *\n * @Input('publicName2')\n * declaredPropName2: number;\n * }\n * ```\n *\n * will be serialized as\n *\n * ```\n * {\n * propName1: 'propName1',\n * declaredPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * which is than translated by the minifier as:\n *\n * ```\n * {\n * minifiedPropName1: 'propName1',\n * minifiedPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * becomes: (public name => minifiedName)\n *\n * ```\n * {\n * 'propName1': 'minifiedPropName1',\n * 'publicName2': 'minifiedPropName2',\n * }\n * ```\n *\n * Optionally the function can take `secondary` which will result in: (public name => declared name)\n *\n * ```\n * {\n * 'propName1': 'propName1',\n * 'publicName2': 'declaredPropName2',\n * }\n * ```\n *\n\n */\nfunction invertObject(obj, secondary) {\n if (obj == null)\n return EMPTY_OBJ;\n const newLookup = {};\n for (const minifiedKey in obj) {\n if (obj.hasOwnProperty(minifiedKey)) {\n let publicName = obj[minifiedKey];\n let declaredName = publicName;\n if (Array.isArray(publicName)) {\n declaredName = publicName[1];\n publicName = publicName[0];\n }\n newLookup[publicName] = minifiedKey;\n if (secondary) {\n (secondary[publicName] = declaredName);\n }\n }\n }\n return newLookup;\n}\n/**\n * Create a directive definition object.\n *\n * # Example\n * ```ts\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵdir = ɵɵdefineDirective({\n * ...\n * });\n * }\n * ```\n *\n * @codeGenApi\n */\nconst ɵɵdefineDirective = ɵɵdefineComponent;\n/**\n * Create a pipe definition object.\n *\n * # Example\n * ```\n * class MyPipe implements PipeTransform {\n * // Generated by Angular Template Compiler\n * static ɵpipe = definePipe({\n * ...\n * });\n * }\n * ```\n * @param pipeDef Pipe definition generated by the compiler\n *\n * @codeGenApi\n */\nfunction ɵɵdefinePipe(pipeDef) {\n return {\n type: pipeDef.type,\n name: pipeDef.name,\n factory: null,\n pure: pipeDef.pure !== false,\n onDestroy: pipeDef.type.prototype.ngOnDestroy || null\n };\n}\n/**\n * The following getter methods retrieve the definition from the type. Currently the retrieval\n * honors inheritance, but in the future we may change the rule to require that definitions are\n * explicit. This would require some sort of migration strategy.\n */\nfunction getComponentDef(type) {\n return type[NG_COMP_DEF] || null;\n}\nfunction getDirectiveDef(type) {\n return type[NG_DIR_DEF] || null;\n}\nfunction getPipeDef(type) {\n return type[NG_PIPE_DEF] || null;\n}\nfunction getNgModuleDef(type, throwNotFound) {\n const ngModuleDef = type[NG_MOD_DEF] || null;\n if (!ngModuleDef && throwNotFound === true) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵmod' property.`);\n }\n return ngModuleDef;\n}\nfunction getNgLocaleIdDef(type) {\n return type[NG_LOC_ID_DEF] || null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Below are constants for LView indices to help us look up LView members\n// without having to remember the specific indices.\n// Uglify will inline these when minifying so there shouldn't be a cost.\nconst HOST = 0;\nconst TVIEW = 1;\nconst FLAGS = 2;\nconst PARENT = 3;\nconst NEXT = 4;\nconst TRANSPLANTED_VIEWS_TO_REFRESH = 5;\nconst T_HOST = 6;\nconst CLEANUP = 7;\nconst CONTEXT = 8;\nconst INJECTOR = 9;\nconst RENDERER_FACTORY = 10;\nconst RENDERER = 11;\nconst SANITIZER = 12;\nconst CHILD_HEAD = 13;\nconst CHILD_TAIL = 14;\n// FIXME(misko): Investigate if the three declarations aren't all same thing.\nconst DECLARATION_VIEW = 15;\nconst DECLARATION_COMPONENT_VIEW = 16;\nconst DECLARATION_LCONTAINER = 17;\nconst PREORDER_HOOK_FLAGS = 18;\nconst QUERIES = 19;\n/**\n * Size of LView's header. Necessary to adjust for it when setting slots.\n *\n * IMPORTANT: `HEADER_OFFSET` should only be referred to the in the `ɵɵ*` instructions to translate\n * instruction index into `LView` index. All other indexes should be in the `LView` index space and\n * there should be no need to refer to `HEADER_OFFSET` anywhere else.\n */\nconst HEADER_OFFSET = 20;\n/**\n * Converts `TViewType` into human readable text.\n * Make sure this matches with `TViewType`\n */\nconst TViewTypeAsString = [\n 'Root',\n 'Component',\n 'Embedded',\n];\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd = 1;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Special location which allows easy identification of type. If we have an array which was\n * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is\n * `LContainer`.\n */\nconst TYPE = 1;\n/**\n * Below are constants for LContainer indices to help us look up LContainer members\n * without having to remember the specific indices.\n * Uglify will inline these when minifying so there shouldn't be a cost.\n */\n/**\n * Flag to signify that this `LContainer` may have transplanted views which need to be change\n * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.\n *\n * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip\n * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify\n * that the `MOVED_VIEWS` are transplanted and on-push.\n */\nconst HAS_TRANSPLANTED_VIEWS = 2;\n// PARENT, NEXT, TRANSPLANTED_VIEWS_TO_REFRESH are indices 3, 4, and 5\n// As we already have these constants in LView, we don't need to re-create them.\n// T_HOST is index 6\n// We already have this constants in LView, we don't need to re-create it.\nconst NATIVE = 7;\nconst VIEW_REFS = 8;\nconst MOVED_VIEWS = 9;\n/**\n * Size of LContainer's header. Represents the index after which all views in the\n * container will be inserted. We need to keep a record of current views so we know\n * which views are already in the DOM (and don't need to be re-added) and so we can\n * remove views from the DOM when they are no longer required.\n */\nconst CONTAINER_HEADER_OFFSET = 10;\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$1 = 1;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * True if `value` is `LView`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction isLView(value) {\n return Array.isArray(value) && typeof value[TYPE] === 'object';\n}\n/**\n * True if `value` is `LContainer`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction isLContainer(value) {\n return Array.isArray(value) && value[TYPE] === true;\n}\nfunction isContentQueryHost(tNode) {\n return (tNode.flags & 8 /* hasContentQuery */) !== 0;\n}\nfunction isComponentHost(tNode) {\n return (tNode.flags & 2 /* isComponentHost */) === 2 /* isComponentHost */;\n}\nfunction isDirectiveHost(tNode) {\n return (tNode.flags & 1 /* isDirectiveHost */) === 1 /* isDirectiveHost */;\n}\nfunction isComponentDef(def) {\n return def.template !== null;\n}\nfunction isRootView(target) {\n return (target[FLAGS] & 512 /* IsRoot */) !== 0;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// [Assert functions do not constraint type when they are guarded by a truthy\n// expression.](https://github.com/microsoft/TypeScript/issues/37295)\nfunction assertTNodeForLView(tNode, lView) {\n assertTNodeForTView(tNode, lView[TVIEW]);\n}\nfunction assertTNodeForTView(tNode, tView) {\n assertTNode(tNode);\n tNode.hasOwnProperty('tView_') &&\n assertEqual(tNode.tView_, tView, 'This TNode does not belong to this TView.');\n}\nfunction assertTNode(tNode) {\n assertDefined(tNode, 'TNode must be defined');\n if (!(tNode && typeof tNode === 'object' && tNode.hasOwnProperty('directiveStylingLast'))) {\n throwError('Not of type TNode, got: ' + tNode);\n }\n}\nfunction assertTIcu(tIcu) {\n assertDefined(tIcu, 'Expected TIcu to be defined');\n if (!(typeof tIcu.currentCaseLViewIndex === 'number')) {\n throwError('Object is not of TIcu type.');\n }\n}\nfunction assertComponentType(actual, msg = 'Type passed in is not ComponentType, it does not have \\'ɵcmp\\' property.') {\n if (!getComponentDef(actual)) {\n throwError(msg);\n }\n}\nfunction assertNgModuleType(actual, msg = 'Type passed in is not NgModuleType, it does not have \\'ɵmod\\' property.') {\n if (!getNgModuleDef(actual)) {\n throwError(msg);\n }\n}\nfunction assertCurrentTNodeIsParent(isParent) {\n assertEqual(isParent, true, 'currentTNode should be a parent');\n}\nfunction assertHasParent(tNode) {\n assertDefined(tNode, 'currentTNode should exist!');\n assertDefined(tNode.parent, 'currentTNode should have a parent');\n}\nfunction assertDataNext(lView, index, arr) {\n if (arr == null)\n arr = lView;\n assertEqual(arr.length, index, `index ${index} expected to be at the end of arr (length ${arr.length})`);\n}\nfunction assertLContainer(value) {\n assertDefined(value, 'LContainer must be defined');\n assertEqual(isLContainer(value), true, 'Expecting LContainer');\n}\nfunction assertLViewOrUndefined(value) {\n value && assertEqual(isLView(value), true, 'Expecting LView or undefined or null');\n}\nfunction assertLView(value) {\n assertDefined(value, 'LView must be defined');\n assertEqual(isLView(value), true, 'Expecting LView');\n}\nfunction assertFirstCreatePass(tView, errMessage) {\n assertEqual(tView.firstCreatePass, true, errMessage || 'Should only be called in first create pass.');\n}\nfunction assertFirstUpdatePass(tView, errMessage) {\n assertEqual(tView.firstUpdatePass, true, errMessage || 'Should only be called in first update pass.');\n}\n/**\n * This is a basic sanity check that an object is probably a directive def. DirectiveDef is\n * an interface, so we can't do a direct instanceof check.\n */\nfunction assertDirectiveDef(obj) {\n if (obj.type === undefined || obj.selectors == undefined || obj.inputs === undefined) {\n throwError(`Expected a DirectiveDef/ComponentDef and this object does not seem to have the expected shape.`);\n }\n}\nfunction assertIndexInDeclRange(lView, index) {\n const tView = lView[1];\n assertBetween(HEADER_OFFSET, tView.bindingStartIndex, index);\n}\nfunction assertIndexInVarsRange(lView, index) {\n const tView = lView[1];\n assertBetween(tView.bindingStartIndex, tView.expandoStartIndex, index);\n}\nfunction assertIndexInExpandoRange(lView, index) {\n const tView = lView[1];\n assertBetween(tView.expandoStartIndex, lView.length, index);\n}\nfunction assertBetween(lower, upper, index) {\n if (!(lower <= index && index < upper)) {\n throwError(`Index out of range (expecting ${lower} <= ${index} < ${upper})`);\n }\n}\nfunction assertProjectionSlots(lView, errMessage) {\n assertDefined(lView[DECLARATION_COMPONENT_VIEW], 'Component views should exist.');\n assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, errMessage ||\n 'Components with projection nodes () must have projection slots defined.');\n}\nfunction assertParentView(lView, errMessage) {\n assertDefined(lView, errMessage || 'Component views should always have a parent view (component\\'s host view)');\n}\n/**\n * This is a basic sanity check that the `injectorIndex` seems to point to what looks like a\n * NodeInjector data structure.\n *\n * @param lView `LView` which should be checked.\n * @param injectorIndex index into the `LView` where the `NodeInjector` is expected.\n */\nfunction assertNodeInjector(lView, injectorIndex) {\n assertIndexInExpandoRange(lView, injectorIndex);\n assertIndexInExpandoRange(lView, injectorIndex + 8 /* PARENT */);\n assertNumber(lView[injectorIndex + 0], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 1], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 2], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 3], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 4], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 5], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 6], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 7], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 8 /* PARENT */], 'injectorIndex should point to parent injector');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction getFactoryDef(type, throwNotFound) {\n const hasFactoryDef = type.hasOwnProperty(NG_FACTORY_DEF);\n if (!hasFactoryDef && throwNotFound === true && ngDevMode) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵfac' property.`);\n }\n return hasFactoryDef ? type[NG_FACTORY_DEF] : null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents a basic change from a previous to a new value for a single\n * property on a directive instance. Passed as a value in a\n * {@link SimpleChanges} object to the `ngOnChanges` hook.\n *\n * @see `OnChanges`\n *\n * @publicApi\n */\nclass SimpleChange {\n constructor(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n /**\n * Check whether the new value is the first value assigned.\n */\n isFirstChange() {\n return this.firstChange;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The NgOnChangesFeature decorates a component with support for the ngOnChanges\n * lifecycle hook, so it should be included in any component that implements\n * that hook.\n *\n * If the component or directive uses inheritance, the NgOnChangesFeature MUST\n * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise\n * inherited properties will not be propagated to the ngOnChanges lifecycle\n * hook.\n *\n * Example usage:\n *\n * ```\n * static ɵcmp = defineComponent({\n * ...\n * inputs: {name: 'publicName'},\n * features: [NgOnChangesFeature]\n * });\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵNgOnChangesFeature() {\n return NgOnChangesFeatureImpl;\n}\nfunction NgOnChangesFeatureImpl(definition) {\n if (definition.type.prototype.ngOnChanges) {\n definition.setInput = ngOnChangesSetInput;\n }\n return rememberChangeHistoryAndInvokeOnChangesHook;\n}\n// This option ensures that the ngOnChanges lifecycle hook will be inherited\n// from superclasses (in InheritDefinitionFeature).\n/** @nocollapse */\n// tslint:disable-next-line:no-toplevel-property-access\nɵɵNgOnChangesFeature.ngInherit = true;\n/**\n * This is a synthetic lifecycle hook which gets inserted into `TView.preOrderHooks` to simulate\n * `ngOnChanges`.\n *\n * The hook reads the `NgSimpleChangesStore` data from the component instance and if changes are\n * found it invokes `ngOnChanges` on the component instance.\n *\n * @param this Component instance. Because this function gets inserted into `TView.preOrderHooks`,\n * it is guaranteed to be called with component instance.\n */\nfunction rememberChangeHistoryAndInvokeOnChangesHook() {\n const simpleChangesStore = getSimpleChangesStore(this);\n const current = simpleChangesStore === null || simpleChangesStore === void 0 ? void 0 : simpleChangesStore.current;\n if (current) {\n const previous = simpleChangesStore.previous;\n if (previous === EMPTY_OBJ) {\n simpleChangesStore.previous = current;\n }\n else {\n // New changes are copied to the previous store, so that we don't lose history for inputs\n // which were not changed this time\n for (let key in current) {\n previous[key] = current[key];\n }\n }\n simpleChangesStore.current = null;\n this.ngOnChanges(current);\n }\n}\nfunction ngOnChangesSetInput(instance, value, publicName, privateName) {\n const simpleChangesStore = getSimpleChangesStore(instance) ||\n setSimpleChangesStore(instance, { previous: EMPTY_OBJ, current: null });\n const current = simpleChangesStore.current || (simpleChangesStore.current = {});\n const previous = simpleChangesStore.previous;\n const declaredName = this.declaredInputs[publicName];\n const previousChange = previous[declaredName];\n current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ);\n instance[privateName] = value;\n}\nconst SIMPLE_CHANGES_STORE = '__ngSimpleChanges__';\nfunction getSimpleChangesStore(instance) {\n return instance[SIMPLE_CHANGES_STORE] || null;\n}\nfunction setSimpleChangesStore(instance, store) {\n return instance[SIMPLE_CHANGES_STORE] = store;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet profilerCallback = null;\n/**\n * Sets the callback function which will be invoked before and after performing certain actions at\n * runtime (for example, before and after running change detection).\n *\n * Warning: this function is *INTERNAL* and should not be relied upon in application's code.\n * The contract of the function might be changed in any release and/or the function can be removed\n * completely.\n *\n * @param profiler function provided by the caller or null value to disable profiling.\n */\nconst setProfiler = (profiler) => {\n profilerCallback = profiler;\n};\n/**\n * Profiler function which wraps user code executed by the runtime.\n *\n * @param event ProfilerEvent corresponding to the execution context\n * @param instance component instance\n * @param hookOrListener lifecycle hook function or output listener. The value depends on the\n * execution context\n * @returns\n */\nconst profiler = function (event, instance, hookOrListener) {\n if (profilerCallback != null /* both `null` and `undefined` */) {\n profilerCallback(event, instance, hookOrListener);\n }\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nconst MATH_ML_NAMESPACE = 'http://www.w3.org/1998/MathML/';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This property will be monkey-patched on elements, components and directives\n */\nconst MONKEY_PATCH_KEY_NAME = '__ngContext__';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Most of the use of `document` in Angular is from within the DI system so it is possible to simply\n * inject the `DOCUMENT` token and are done.\n *\n * Ivy is special because it does not rely upon the DI and must get hold of the document some other\n * way.\n *\n * The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.\n * Wherever ivy needs the global document, it calls `getDocument()` instead.\n *\n * When running ivy outside of a browser environment, it is necessary to call `setDocument()` to\n * tell ivy what the global `document` is.\n *\n * Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)\n * by calling `setDocument()` when providing the `DOCUMENT` token.\n */\nlet DOCUMENT = undefined;\n/**\n * Tell ivy what the `document` is for this platform.\n *\n * It is only necessary to call this if the current platform is not a browser.\n *\n * @param document The object representing the global `document` in this environment.\n */\nfunction setDocument(document) {\n DOCUMENT = document;\n}\n/**\n * Access the object that represents the `document` for this platform.\n *\n * Ivy calls this whenever it needs to access the `document` object.\n * For example to create the renderer or to do sanitization.\n */\nfunction getDocument() {\n if (DOCUMENT !== undefined) {\n return DOCUMENT;\n }\n else if (typeof document !== 'undefined') {\n return document;\n }\n // No \"document\" can be found. This should only happen if we are running ivy outside Angular and\n // the current platform is not a browser. Since this is not a supported scenario at the moment\n // this should not happen in Angular apps.\n // Once we support running ivy outside of Angular we will need to publish `setDocument()` as a\n // public API. Meanwhile we just return `undefined` and let the application fail.\n return undefined;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: cleanup once the code is merged in angular/angular\nvar RendererStyleFlags3;\n(function (RendererStyleFlags3) {\n RendererStyleFlags3[RendererStyleFlags3[\"Important\"] = 1] = \"Important\";\n RendererStyleFlags3[RendererStyleFlags3[\"DashCase\"] = 2] = \"DashCase\";\n})(RendererStyleFlags3 || (RendererStyleFlags3 = {}));\n/** Returns whether the `renderer` is a `ProceduralRenderer3` */\nfunction isProceduralRenderer(renderer) {\n return !!(renderer.listen);\n}\nconst ɵ0 = (hostElement, rendererType) => {\n return getDocument();\n};\nconst domRendererFactory3 = {\n createRenderer: ɵ0\n};\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$2 = 1;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)\n * in same location in `LView`. This is because we don't want to pre-allocate space for it\n * because the storage is sparse. This file contains utilities for dealing with such data types.\n *\n * How do we know what is stored at a given location in `LView`.\n * - `Array.isArray(value) === false` => `RNode` (The normal storage value)\n * - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.\n * - `typeof value[TYPE] === 'object'` => `LView`\n * - This happens when we have a component at a given location\n * - `typeof value[TYPE] === true` => `LContainer`\n * - This happens when we have `LContainer` binding at a given location.\n *\n *\n * NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.\n */\n/**\n * Returns `RNode`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction unwrapRNode(value) {\n while (Array.isArray(value)) {\n value = value[HOST];\n }\n return value;\n}\n/**\n * Returns `LView` or `null` if not found.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction unwrapLView(value) {\n while (Array.isArray(value)) {\n // This check is same as `isLView()` but we don't call at as we don't want to call\n // `Array.isArray()` twice and give JITer more work for inlining.\n if (typeof value[TYPE] === 'object')\n return value;\n value = value[HOST];\n }\n return null;\n}\n/**\n * Returns `LContainer` or `null` if not found.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction unwrapLContainer(value) {\n while (Array.isArray(value)) {\n // This check is same as `isLContainer()` but we don't call at as we don't want to call\n // `Array.isArray()` twice and give JITer more work for inlining.\n if (value[TYPE] === true)\n return value;\n value = value[HOST];\n }\n return null;\n}\n/**\n * Retrieves an element value from the provided `viewData`, by unwrapping\n * from any containers, component views, or style contexts.\n */\nfunction getNativeByIndex(index, lView) {\n ngDevMode && assertIndexInRange(lView, index);\n ngDevMode && assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Expected to be past HEADER_OFFSET');\n return unwrapRNode(lView[index]);\n}\n/**\n * Retrieve an `RNode` for a given `TNode` and `LView`.\n *\n * This function guarantees in dev mode to retrieve a non-null `RNode`.\n *\n * @param tNode\n * @param lView\n */\nfunction getNativeByTNode(tNode, lView) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n ngDevMode && assertIndexInRange(lView, tNode.index);\n const node = unwrapRNode(lView[tNode.index]);\n ngDevMode && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);\n return node;\n}\n/**\n * Retrieve an `RNode` or `null` for a given `TNode` and `LView`.\n *\n * Some `TNode`s don't have associated `RNode`s. For example `Projection`\n *\n * @param tNode\n * @param lView\n */\nfunction getNativeByTNodeOrNull(tNode, lView) {\n const index = tNode === null ? -1 : tNode.index;\n if (index !== -1) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n const node = unwrapRNode(lView[index]);\n ngDevMode && node !== null && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);\n return node;\n }\n return null;\n}\n// fixme(misko): The return Type should be `TNode|null`\nfunction getTNode(tView, index) {\n ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');\n ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');\n const tNode = tView.data[index];\n ngDevMode && tNode !== null && assertTNode(tNode);\n return tNode;\n}\n/** Retrieves a value from any `LView` or `TData`. */\nfunction load(view, index) {\n ngDevMode && assertIndexInRange(view, index);\n return view[index];\n}\nfunction getComponentLViewByIndex(nodeIndex, hostView) {\n // Could be an LView or an LContainer. If LContainer, unwrap to find LView.\n ngDevMode && assertIndexInRange(hostView, nodeIndex);\n const slotValue = hostView[nodeIndex];\n const lView = isLView(slotValue) ? slotValue : slotValue[HOST];\n return lView;\n}\n/**\n * Returns the monkey-patch value data present on the target (which could be\n * a component, directive or a DOM node).\n */\nfunction readPatchedData(target) {\n ngDevMode && assertDefined(target, 'Target expected');\n return target[MONKEY_PATCH_KEY_NAME] || null;\n}\nfunction readPatchedLView(target) {\n const value = readPatchedData(target);\n if (value) {\n return Array.isArray(value) ? value : value.lView;\n }\n return null;\n}\n/** Checks whether a given view is in creation mode */\nfunction isCreationMode(view) {\n return (view[FLAGS] & 4 /* CreationMode */) === 4 /* CreationMode */;\n}\n/**\n * Returns a boolean for whether the view is attached to the change detection tree.\n *\n * Note: This determines whether a view should be checked, not whether it's inserted\n * into a container. For that, you'll want `viewAttachedToContainer` below.\n */\nfunction viewAttachedToChangeDetector(view) {\n return (view[FLAGS] & 128 /* Attached */) === 128 /* Attached */;\n}\n/** Returns a boolean for whether the view is attached to a container. */\nfunction viewAttachedToContainer(view) {\n return isLContainer(view[PARENT]);\n}\nfunction getConstant(consts, index) {\n if (index === null || index === undefined)\n return null;\n ngDevMode && assertIndexInRange(consts, index);\n return consts[index];\n}\n/**\n * Resets the pre-order hook flags of the view.\n * @param lView the LView on which the flags are reset\n */\nfunction resetPreOrderHookFlags(lView) {\n lView[PREORDER_HOOK_FLAGS] = 0;\n}\n/**\n * Updates the `TRANSPLANTED_VIEWS_TO_REFRESH` counter on the `LContainer` as well as the parents\n * whose\n * 1. counter goes from 0 to 1, indicating that there is a new child that has a view to refresh\n * or\n * 2. counter goes from 1 to 0, indicating there are no more descendant views to refresh\n */\nfunction updateTransplantedViewCount(lContainer, amount) {\n lContainer[TRANSPLANTED_VIEWS_TO_REFRESH] += amount;\n let viewOrContainer = lContainer;\n let parent = lContainer[PARENT];\n while (parent !== null &&\n ((amount === 1 && viewOrContainer[TRANSPLANTED_VIEWS_TO_REFRESH] === 1) ||\n (amount === -1 && viewOrContainer[TRANSPLANTED_VIEWS_TO_REFRESH] === 0))) {\n parent[TRANSPLANTED_VIEWS_TO_REFRESH] += amount;\n viewOrContainer = parent;\n parent = parent[PARENT];\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst instructionState = {\n lFrame: createLFrame(null),\n bindingsEnabled: true,\n isInCheckNoChangesMode: false,\n};\n/**\n * Returns true if the instruction state stack is empty.\n *\n * Intended to be called from tests only (tree shaken otherwise).\n */\nfunction specOnlyIsInstructionStateEmpty() {\n return instructionState.lFrame.parent === null;\n}\nfunction getElementDepthCount() {\n return instructionState.lFrame.elementDepthCount;\n}\nfunction increaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount++;\n}\nfunction decreaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount--;\n}\nfunction getBindingsEnabled() {\n return instructionState.bindingsEnabled;\n}\n/**\n * Enables directive matching on elements.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
\n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵenableBindings() {\n instructionState.bindingsEnabled = true;\n}\n/**\n * Disables directive matching on element.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
\n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵdisableBindings() {\n instructionState.bindingsEnabled = false;\n}\n/**\n * Return the current `LView`.\n */\nfunction getLView() {\n return instructionState.lFrame.lView;\n}\n/**\n * Return the current `TView`.\n */\nfunction getTView() {\n return instructionState.lFrame.tView;\n}\n/**\n * Restores `contextViewData` to the given OpaqueViewState instance.\n *\n * Used in conjunction with the getCurrentView() instruction to save a snapshot\n * of the current view and restore it when listeners are invoked. This allows\n * walking the declaration view tree in listeners to get vars from parent views.\n *\n * @param viewToRestore The OpaqueViewState instance to restore.\n *\n * @codeGenApi\n */\nfunction ɵɵrestoreView(viewToRestore) {\n instructionState.lFrame.contextLView = viewToRestore;\n}\nfunction getCurrentTNode() {\n let currentTNode = getCurrentTNodePlaceholderOk();\n while (currentTNode !== null && currentTNode.type === 64 /* Placeholder */) {\n currentTNode = currentTNode.parent;\n }\n return currentTNode;\n}\nfunction getCurrentTNodePlaceholderOk() {\n return instructionState.lFrame.currentTNode;\n}\nfunction getCurrentParentTNode() {\n const lFrame = instructionState.lFrame;\n const currentTNode = lFrame.currentTNode;\n return lFrame.isParent ? currentTNode : currentTNode.parent;\n}\nfunction setCurrentTNode(tNode, isParent) {\n ngDevMode && tNode && assertTNodeForTView(tNode, instructionState.lFrame.tView);\n const lFrame = instructionState.lFrame;\n lFrame.currentTNode = tNode;\n lFrame.isParent = isParent;\n}\nfunction isCurrentTNodeParent() {\n return instructionState.lFrame.isParent;\n}\nfunction setCurrentTNodeAsNotParent() {\n instructionState.lFrame.isParent = false;\n}\nfunction setCurrentTNodeAsParent() {\n instructionState.lFrame.isParent = true;\n}\nfunction getContextLView() {\n return instructionState.lFrame.contextLView;\n}\nfunction isInCheckNoChangesMode() {\n // TODO(misko): remove this from the LView since it is ngDevMode=true mode only.\n return instructionState.isInCheckNoChangesMode;\n}\nfunction setIsInCheckNoChangesMode(mode) {\n instructionState.isInCheckNoChangesMode = mode;\n}\n// top level variables should not be exported for performance reasons (PERF_NOTES.md)\nfunction getBindingRoot() {\n const lFrame = instructionState.lFrame;\n let index = lFrame.bindingRootIndex;\n if (index === -1) {\n index = lFrame.bindingRootIndex = lFrame.tView.bindingStartIndex;\n }\n return index;\n}\nfunction getBindingIndex() {\n return instructionState.lFrame.bindingIndex;\n}\nfunction setBindingIndex(value) {\n return instructionState.lFrame.bindingIndex = value;\n}\nfunction nextBindingIndex() {\n return instructionState.lFrame.bindingIndex++;\n}\nfunction incrementBindingIndex(count) {\n const lFrame = instructionState.lFrame;\n const index = lFrame.bindingIndex;\n lFrame.bindingIndex = lFrame.bindingIndex + count;\n return index;\n}\nfunction isInI18nBlock() {\n return instructionState.lFrame.inI18n;\n}\nfunction setInI18nBlock(isInI18nBlock) {\n instructionState.lFrame.inI18n = isInI18nBlock;\n}\n/**\n * Set a new binding root index so that host template functions can execute.\n *\n * Bindings inside the host template are 0 index. But because we don't know ahead of time\n * how many host bindings we have we can't pre-compute them. For this reason they are all\n * 0 index and we just shift the root so that they match next available location in the LView.\n *\n * @param bindingRootIndex Root index for `hostBindings`\n * @param currentDirectiveIndex `TData[currentDirectiveIndex]` will point to the current directive\n * whose `hostBindings` are being processed.\n */\nfunction setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex) {\n const lFrame = instructionState.lFrame;\n lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex;\n setCurrentDirectiveIndex(currentDirectiveIndex);\n}\n/**\n * When host binding is executing this points to the directive index.\n * `TView.data[getCurrentDirectiveIndex()]` is `DirectiveDef`\n * `LView[getCurrentDirectiveIndex()]` is directive instance.\n */\nfunction getCurrentDirectiveIndex() {\n return instructionState.lFrame.currentDirectiveIndex;\n}\n/**\n * Sets an index of a directive whose `hostBindings` are being processed.\n *\n * @param currentDirectiveIndex `TData` index where current directive instance can be found.\n */\nfunction setCurrentDirectiveIndex(currentDirectiveIndex) {\n instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex;\n}\n/**\n * Retrieve the current `DirectiveDef` which is active when `hostBindings` instruction is being\n * executed.\n *\n * @param tData Current `TData` where the `DirectiveDef` will be looked up at.\n */\nfunction getCurrentDirectiveDef(tData) {\n const currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex;\n return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex];\n}\nfunction getCurrentQueryIndex() {\n return instructionState.lFrame.currentQueryIndex;\n}\nfunction setCurrentQueryIndex(value) {\n instructionState.lFrame.currentQueryIndex = value;\n}\n/**\n * Returns a `TNode` of the location where the current `LView` is declared at.\n *\n * @param lView an `LView` that we want to find parent `TNode` for.\n */\nfunction getDeclarationTNode(lView) {\n const tView = lView[TVIEW];\n // Return the declaration parent for embedded views\n if (tView.type === 2 /* Embedded */) {\n ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n return tView.declTNode;\n }\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n // Falling back to `T_HOST` in case we cross component boundary.\n if (tView.type === 1 /* Component */) {\n return lView[T_HOST];\n }\n // Remaining TNode type is `TViewType.Root` which doesn't have a parent TNode.\n return null;\n}\n/**\n * This is a light weight version of the `enterView` which is needed by the DI system.\n *\n * @param lView `LView` location of the DI context.\n * @param tNode `TNode` for DI context\n * @param flags DI context flags. if `SkipSelf` flag is set than we walk up the declaration\n * tree from `tNode` until we find parent declared `TElementNode`.\n * @returns `true` if we have successfully entered DI associated with `tNode` (or with declared\n * `TNode` if `flags` has `SkipSelf`). Failing to enter DI implies that no associated\n * `NodeInjector` can be found and we should instead use `ModuleInjector`.\n * - If `true` than this call must be fallowed by `leaveDI`\n * - If `false` than this call failed and we should NOT call `leaveDI`\n */\nfunction enterDI(lView, tNode, flags) {\n ngDevMode && assertLViewOrUndefined(lView);\n if (flags & InjectFlags.SkipSelf) {\n ngDevMode && assertTNodeForTView(tNode, lView[TVIEW]);\n let parentTNode = tNode;\n let parentLView = lView;\n while (true) {\n ngDevMode && assertDefined(parentTNode, 'Parent TNode should be defined');\n parentTNode = parentTNode.parent;\n if (parentTNode === null && !(flags & InjectFlags.Host)) {\n parentTNode = getDeclarationTNode(parentLView);\n if (parentTNode === null)\n break;\n // In this case, a parent exists and is definitely an element. So it will definitely\n // have an existing lView as the declaration view, which is why we can assume it's defined.\n ngDevMode && assertDefined(parentLView, 'Parent LView should be defined');\n parentLView = parentLView[DECLARATION_VIEW];\n // In Ivy there are Comment nodes that correspond to ngIf and NgFor embedded directives\n // We want to skip those and look only at Elements and ElementContainers to ensure\n // we're looking at true parent nodes, and not content or other types.\n if (parentTNode.type & (2 /* Element */ | 8 /* ElementContainer */)) {\n break;\n }\n }\n else {\n break;\n }\n }\n if (parentTNode === null) {\n // If we failed to find a parent TNode this means that we should use module injector.\n return false;\n }\n else {\n tNode = parentTNode;\n lView = parentLView;\n }\n }\n ngDevMode && assertTNodeForLView(tNode, lView);\n const lFrame = instructionState.lFrame = allocLFrame();\n lFrame.currentTNode = tNode;\n lFrame.lView = lView;\n return true;\n}\n/**\n * Swap the current lView with a new lView.\n *\n * For performance reasons we store the lView in the top level of the module.\n * This way we minimize the number of properties to read. Whenever a new view\n * is entered we have to store the lView for later, and when the view is\n * exited the state has to be restored\n *\n * @param newView New lView to become active\n * @returns the previously active lView;\n */\nfunction enterView(newView) {\n ngDevMode && assertNotEqual(newView[0], newView[1], '????');\n ngDevMode && assertLViewOrUndefined(newView);\n const newLFrame = allocLFrame();\n if (ngDevMode) {\n assertEqual(newLFrame.isParent, true, 'Expected clean LFrame');\n assertEqual(newLFrame.lView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.tView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.selectedIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.elementDepthCount, 0, 'Expected clean LFrame');\n assertEqual(newLFrame.currentDirectiveIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentNamespace, null, 'Expected clean LFrame');\n assertEqual(newLFrame.bindingRootIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentQueryIndex, 0, 'Expected clean LFrame');\n }\n const tView = newView[TVIEW];\n instructionState.lFrame = newLFrame;\n ngDevMode && tView.firstChild && assertTNodeForTView(tView.firstChild, tView);\n newLFrame.currentTNode = tView.firstChild;\n newLFrame.lView = newView;\n newLFrame.tView = tView;\n newLFrame.contextLView = newView;\n newLFrame.bindingIndex = tView.bindingStartIndex;\n newLFrame.inI18n = false;\n}\n/**\n * Allocates next free LFrame. This function tries to reuse the `LFrame`s to lower memory pressure.\n */\nfunction allocLFrame() {\n const currentLFrame = instructionState.lFrame;\n const childLFrame = currentLFrame === null ? null : currentLFrame.child;\n const newLFrame = childLFrame === null ? createLFrame(currentLFrame) : childLFrame;\n return newLFrame;\n}\nfunction createLFrame(parent) {\n const lFrame = {\n currentTNode: null,\n isParent: true,\n lView: null,\n tView: null,\n selectedIndex: -1,\n contextLView: null,\n elementDepthCount: 0,\n currentNamespace: null,\n currentDirectiveIndex: -1,\n bindingRootIndex: -1,\n bindingIndex: -1,\n currentQueryIndex: 0,\n parent: parent,\n child: null,\n inI18n: false,\n };\n parent !== null && (parent.child = lFrame); // link the new LFrame for reuse.\n return lFrame;\n}\n/**\n * A lightweight version of leave which is used with DI.\n *\n * This function only resets `currentTNode` and `LView` as those are the only properties\n * used with DI (`enterDI()`).\n *\n * NOTE: This function is reexported as `leaveDI`. However `leaveDI` has return type of `void` where\n * as `leaveViewLight` has `LFrame`. This is so that `leaveViewLight` can be used in `leaveView`.\n */\nfunction leaveViewLight() {\n const oldLFrame = instructionState.lFrame;\n instructionState.lFrame = oldLFrame.parent;\n oldLFrame.currentTNode = null;\n oldLFrame.lView = null;\n return oldLFrame;\n}\n/**\n * This is a lightweight version of the `leaveView` which is needed by the DI system.\n *\n * NOTE: this function is an alias so that we can change the type of the function to have `void`\n * return type.\n */\nconst leaveDI = leaveViewLight;\n/**\n * Leave the current `LView`\n *\n * This pops the `LFrame` with the associated `LView` from the stack.\n *\n * IMPORTANT: We must zero out the `LFrame` values here otherwise they will be retained. This is\n * because for performance reasons we don't release `LFrame` but rather keep it for next use.\n */\nfunction leaveView() {\n const oldLFrame = leaveViewLight();\n oldLFrame.isParent = true;\n oldLFrame.tView = null;\n oldLFrame.selectedIndex = -1;\n oldLFrame.contextLView = null;\n oldLFrame.elementDepthCount = 0;\n oldLFrame.currentDirectiveIndex = -1;\n oldLFrame.currentNamespace = null;\n oldLFrame.bindingRootIndex = -1;\n oldLFrame.bindingIndex = -1;\n oldLFrame.currentQueryIndex = 0;\n}\nfunction nextContextImpl(level) {\n const contextLView = instructionState.lFrame.contextLView =\n walkUpViews(level, instructionState.lFrame.contextLView);\n return contextLView[CONTEXT];\n}\nfunction walkUpViews(nestingLevel, currentView) {\n while (nestingLevel > 0) {\n ngDevMode &&\n assertDefined(currentView[DECLARATION_VIEW], 'Declaration view should be defined if nesting level is greater than 0.');\n currentView = currentView[DECLARATION_VIEW];\n nestingLevel--;\n }\n return currentView;\n}\n/**\n * Gets the currently selected element index.\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n */\nfunction getSelectedIndex() {\n return instructionState.lFrame.selectedIndex;\n}\n/**\n * Sets the most recent index passed to {@link select}\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n *\n * (Note that if an \"exit function\" was set earlier (via `setElementExitFn()`) then that will be\n * run if and when the provided `index` value is different from the current selected index value.)\n */\nfunction setSelectedIndex(index) {\n ngDevMode && index !== -1 &&\n assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Index must be past HEADER_OFFSET (or -1).');\n ngDevMode &&\n assertLessThan(index, instructionState.lFrame.lView.length, 'Can\\'t set index passed end of LView');\n instructionState.lFrame.selectedIndex = index;\n}\n/**\n * Gets the `tNode` that represents currently selected element.\n */\nfunction getSelectedTNode() {\n const lFrame = instructionState.lFrame;\n return getTNode(lFrame.tView, lFrame.selectedIndex);\n}\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceSVG() {\n instructionState.lFrame.currentNamespace = SVG_NAMESPACE;\n}\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceMathML() {\n instructionState.lFrame.currentNamespace = MATH_ML_NAMESPACE;\n}\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceHTML() {\n namespaceHTMLInternal();\n}\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n */\nfunction namespaceHTMLInternal() {\n instructionState.lFrame.currentNamespace = null;\n}\nfunction getNamespace() {\n return instructionState.lFrame.currentNamespace;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Adds all directive lifecycle hooks from the given `DirectiveDef` to the given `TView`.\n *\n * Must be run *only* on the first template pass.\n *\n * Sets up the pre-order hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * @param directiveIndex The index of the directive in LView\n * @param directiveDef The definition containing the hooks to setup in tView\n * @param tView The current TView\n */\nfunction registerPreOrderHooks(directiveIndex, directiveDef, tView) {\n ngDevMode && assertFirstCreatePass(tView);\n const { ngOnChanges, ngOnInit, ngDoCheck } = directiveDef.type.prototype;\n if (ngOnChanges) {\n const wrappedOnChanges = NgOnChangesFeatureImpl(directiveDef);\n (tView.preOrderHooks || (tView.preOrderHooks = [])).push(directiveIndex, wrappedOnChanges);\n (tView.preOrderCheckHooks || (tView.preOrderCheckHooks = []))\n .push(directiveIndex, wrappedOnChanges);\n }\n if (ngOnInit) {\n (tView.preOrderHooks || (tView.preOrderHooks = [])).push(0 - directiveIndex, ngOnInit);\n }\n if (ngDoCheck) {\n (tView.preOrderHooks || (tView.preOrderHooks = [])).push(directiveIndex, ngDoCheck);\n (tView.preOrderCheckHooks || (tView.preOrderCheckHooks = [])).push(directiveIndex, ngDoCheck);\n }\n}\n/**\n *\n * Loops through the directives on the provided `tNode` and queues hooks to be\n * run that are not initialization hooks.\n *\n * Should be executed during `elementEnd()` and similar to\n * preserve hook execution order. Content, view, and destroy hooks for projected\n * components and directives must be called *before* their hosts.\n *\n * Sets up the content, view, and destroy hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * NOTE: This does not set up `onChanges`, `onInit` or `doCheck`, those are set up\n * separately at `elementStart`.\n *\n * @param tView The current TView\n * @param tNode The TNode whose directives are to be searched for hooks to queue\n */\nfunction registerPostOrderHooks(tView, tNode) {\n ngDevMode && assertFirstCreatePass(tView);\n // It's necessary to loop through the directives at elementEnd() (rather than processing in\n // directiveCreate) so we can preserve the current hook order. Content, view, and destroy\n // hooks for projected components and directives must be called *before* their hosts.\n for (let i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) {\n const directiveDef = tView.data[i];\n ngDevMode && assertDefined(directiveDef, 'Expecting DirectiveDef');\n const lifecycleHooks = directiveDef.type.prototype;\n const { ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked, ngOnDestroy } = lifecycleHooks;\n if (ngAfterContentInit) {\n (tView.contentHooks || (tView.contentHooks = [])).push(-i, ngAfterContentInit);\n }\n if (ngAfterContentChecked) {\n (tView.contentHooks || (tView.contentHooks = [])).push(i, ngAfterContentChecked);\n (tView.contentCheckHooks || (tView.contentCheckHooks = [])).push(i, ngAfterContentChecked);\n }\n if (ngAfterViewInit) {\n (tView.viewHooks || (tView.viewHooks = [])).push(-i, ngAfterViewInit);\n }\n if (ngAfterViewChecked) {\n (tView.viewHooks || (tView.viewHooks = [])).push(i, ngAfterViewChecked);\n (tView.viewCheckHooks || (tView.viewCheckHooks = [])).push(i, ngAfterViewChecked);\n }\n if (ngOnDestroy != null) {\n (tView.destroyHooks || (tView.destroyHooks = [])).push(i, ngOnDestroy);\n }\n }\n}\n/**\n * Executing hooks requires complex logic as we need to deal with 2 constraints.\n *\n * 1. Init hooks (ngOnInit, ngAfterContentInit, ngAfterViewInit) must all be executed once and only\n * once, across many change detection cycles. This must be true even if some hooks throw, or if\n * some recursively trigger a change detection cycle.\n * To solve that, it is required to track the state of the execution of these init hooks.\n * This is done by storing and maintaining flags in the view: the {@link InitPhaseState},\n * and the index within that phase. They can be seen as a cursor in the following structure:\n * [[onInit1, onInit2], [afterContentInit1], [afterViewInit1, afterViewInit2, afterViewInit3]]\n * They are are stored as flags in LView[FLAGS].\n *\n * 2. Pre-order hooks can be executed in batches, because of the select instruction.\n * To be able to pause and resume their execution, we also need some state about the hook's array\n * that is being processed:\n * - the index of the next hook to be executed\n * - the number of init hooks already found in the processed part of the array\n * They are are stored as flags in LView[PREORDER_HOOK_FLAGS].\n */\n/**\n * Executes pre-order check hooks ( OnChanges, DoChanges) given a view where all the init hooks were\n * executed once. This is a light version of executeInitAndCheckPreOrderHooks where we can skip read\n * / write of the init-hooks related flags.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction executeCheckHooks(lView, hooks, nodeIndex) {\n callHooks(lView, hooks, 3 /* InitPhaseCompleted */, nodeIndex);\n}\n/**\n * Executes post-order init and check hooks (one of AfterContentInit, AfterContentChecked,\n * AfterViewInit, AfterViewChecked) given a view where there are pending init hooks to be executed.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param initPhase A phase for which hooks should be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) {\n ngDevMode &&\n assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init pre-order hooks should not be called more than once');\n if ((lView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {\n callHooks(lView, hooks, initPhase, nodeIndex);\n }\n}\nfunction incrementInitPhaseFlags(lView, initPhase) {\n ngDevMode &&\n assertNotEqual(initPhase, 3 /* InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');\n let flags = lView[FLAGS];\n if ((flags & 3 /* InitPhaseStateMask */) === initPhase) {\n flags &= 2047 /* IndexWithinInitPhaseReset */;\n flags += 1 /* InitPhaseStateIncrementer */;\n lView[FLAGS] = flags;\n }\n}\n/**\n * Calls lifecycle hooks with their contexts, skipping init hooks if it's not\n * the first LView pass\n *\n * @param currentView The current view\n * @param arr The array in which the hooks are found\n * @param initPhaseState the current state of the init phase\n * @param currentNodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction callHooks(currentView, arr, initPhase, currentNodeIndex) {\n ngDevMode &&\n assertEqual(isInCheckNoChangesMode(), false, 'Hooks should never be run when in check no changes mode.');\n const startIndex = currentNodeIndex !== undefined ?\n (currentView[PREORDER_HOOK_FLAGS] & 65535 /* IndexOfTheNextPreOrderHookMaskMask */) :\n 0;\n const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1;\n const max = arr.length - 1; // Stop the loop at length - 1, because we look for the hook at i + 1\n let lastNodeIndexFound = 0;\n for (let i = startIndex; i < max; i++) {\n const hook = arr[i + 1];\n if (typeof hook === 'number') {\n lastNodeIndexFound = arr[i];\n if (currentNodeIndex != null && lastNodeIndexFound >= currentNodeIndex) {\n break;\n }\n }\n else {\n const isInitHook = arr[i] < 0;\n if (isInitHook)\n currentView[PREORDER_HOOK_FLAGS] += 65536 /* NumberOfInitHooksCalledIncrementer */;\n if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) {\n callHook(currentView, initPhase, arr, i);\n currentView[PREORDER_HOOK_FLAGS] =\n (currentView[PREORDER_HOOK_FLAGS] & 4294901760 /* NumberOfInitHooksCalledMask */) + i +\n 2;\n }\n i++;\n }\n }\n}\n/**\n * Execute one hook against the current `LView`.\n *\n * @param currentView The current view\n * @param initPhaseState the current state of the init phase\n * @param arr The array in which the hooks are found\n * @param i The current index within the hook data array\n */\nfunction callHook(currentView, initPhase, arr, i) {\n const isInitHook = arr[i] < 0;\n const hook = arr[i + 1];\n const directiveIndex = isInitHook ? -arr[i] : arr[i];\n const directive = currentView[directiveIndex];\n if (isInitHook) {\n const indexWithintInitPhase = currentView[FLAGS] >> 11 /* IndexWithinInitPhaseShift */;\n // The init phase state must be always checked here as it may have been recursively updated.\n if (indexWithintInitPhase <\n (currentView[PREORDER_HOOK_FLAGS] >> 16 /* NumberOfInitHooksCalledShift */) &&\n (currentView[FLAGS] & 3 /* InitPhaseStateMask */) === initPhase) {\n currentView[FLAGS] += 2048 /* IndexWithinInitPhaseIncrementer */;\n profiler(4 /* LifecycleHookStart */, directive, hook);\n try {\n hook.call(directive);\n }\n finally {\n profiler(5 /* LifecycleHookEnd */, directive, hook);\n }\n }\n }\n else {\n profiler(4 /* LifecycleHookStart */, directive, hook);\n try {\n hook.call(directive);\n }\n finally {\n profiler(5 /* LifecycleHookEnd */, directive, hook);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NO_PARENT_INJECTOR = -1;\n/**\n * Each injector is saved in 9 contiguous slots in `LView` and 9 contiguous slots in\n * `TView.data`. This allows us to store information about the current node's tokens (which\n * can be shared in `TView`) as well as the tokens of its ancestor nodes (which cannot be\n * shared, so they live in `LView`).\n *\n * Each of these slots (aside from the last slot) contains a bloom filter. This bloom filter\n * determines whether a directive is available on the associated node or not. This prevents us\n * from searching the directives array at this level unless it's probable the directive is in it.\n *\n * See: https://en.wikipedia.org/wiki/Bloom_filter for more about bloom filters.\n *\n * Because all injectors have been flattened into `LView` and `TViewData`, they cannot typed\n * using interfaces as they were previously. The start index of each `LInjector` and `TInjector`\n * will differ based on where it is flattened into the main array, so it's not possible to know\n * the indices ahead of time and save their types here. The interfaces are still included here\n * for documentation purposes.\n *\n * export interface LInjector extends Array {\n *\n * // Cumulative bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Cumulative bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Cumulative bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Cumulative bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Cumulative bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Cumulative bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Cumulative bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Cumulative bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // We need to store a reference to the injector's parent so DI can keep looking up\n * // the injector tree until it finds the dependency it's looking for.\n * [PARENT_INJECTOR]: number;\n * }\n *\n * export interface TInjector extends Array {\n *\n * // Shared node bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Shared node bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Shared node bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Shared node bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Shared node bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Shared node bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Shared node bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Shared node bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // Necessary to find directive indices for a particular node.\n * [TNODE]: TElementNode|TElementContainerNode|TContainerNode;\n * }\n */\n/**\n * Factory for creating instances of injectors in the NodeInjector.\n *\n * This factory is complicated by the fact that it can resolve `multi` factories as well.\n *\n * NOTE: Some of the fields are optional which means that this class has two hidden classes.\n * - One without `multi` support (most common)\n * - One with `multi` values, (rare).\n *\n * Since VMs can cache up to 4 inline hidden classes this is OK.\n *\n * - Single factory: Only `resolving` and `factory` is defined.\n * - `providers` factory: `componentProviders` is a number and `index = -1`.\n * - `viewProviders` factory: `componentProviders` is a number and `index` points to `providers`.\n */\nclass NodeInjectorFactory {\n constructor(\n /**\n * Factory to invoke in order to create a new instance.\n */\n factory, \n /**\n * Set to `true` if the token is declared in `viewProviders` (or if it is component).\n */\n isViewProvider, injectImplementation) {\n this.factory = factory;\n /**\n * Marker set to true during factory invocation to see if we get into recursive loop.\n * Recursive loop causes an error to be displayed.\n */\n this.resolving = false;\n ngDevMode && assertDefined(factory, 'Factory not specified');\n ngDevMode && assertEqual(typeof factory, 'function', 'Expected factory function.');\n this.canSeeViewProviders = isViewProvider;\n this.injectImpl = injectImplementation;\n }\n}\nfunction isFactory(obj) {\n return obj instanceof NodeInjectorFactory;\n}\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$3 = 1;\n\n/**\n * Converts `TNodeType` into human readable text.\n * Make sure this matches with `TNodeType`\n */\nfunction toTNodeTypeAsString(tNodeType) {\n let text = '';\n (tNodeType & 1 /* Text */) && (text += '|Text');\n (tNodeType & 2 /* Element */) && (text += '|Element');\n (tNodeType & 4 /* Container */) && (text += '|Container');\n (tNodeType & 8 /* ElementContainer */) && (text += '|ElementContainer');\n (tNodeType & 16 /* Projection */) && (text += '|Projection');\n (tNodeType & 32 /* Icu */) && (text += '|IcuContainer');\n (tNodeType & 64 /* Placeholder */) && (text += '|Placeholder');\n return text.length > 0 ? text.substring(1) : text;\n}\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nconst unusedValueExportToPlacateAjd$4 = 1;\n/**\n * Returns `true` if the `TNode` has a directive which has `@Input()` for `class` binding.\n *\n * ```\n *
\n * ```\n * and\n * ```\n * @Directive({\n * })\n * class MyDirective {\n * @Input()\n * class: string;\n * }\n * ```\n *\n * In the above case it is necessary to write the reconciled styling information into the\n * directive's input.\n *\n * @param tNode\n */\nfunction hasClassInput(tNode) {\n return (tNode.flags & 16 /* hasClassInput */) !== 0;\n}\n/**\n * Returns `true` if the `TNode` has a directive which has `@Input()` for `style` binding.\n *\n * ```\n *
\n * ```\n * and\n * ```\n * @Directive({\n * })\n * class MyDirective {\n * @Input()\n * class: string;\n * }\n * ```\n *\n * In the above case it is necessary to write the reconciled styling information into the\n * directive's input.\n *\n * @param tNode\n */\nfunction hasStyleInput(tNode) {\n return (tNode.flags & 32 /* hasStyleInput */) !== 0;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction assertTNodeType(tNode, expectedTypes, message) {\n assertDefined(tNode, 'should be called with a TNode');\n if ((tNode.type & expectedTypes) === 0) {\n throwError(message ||\n `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`);\n }\n}\nfunction assertPureTNodeType(type) {\n if (!(type === 2 /* Element */ || //\n type === 1 /* Text */ || //\n type === 4 /* Container */ || //\n type === 8 /* ElementContainer */ || //\n type === 32 /* Icu */ || //\n type === 16 /* Projection */ || //\n type === 64 /* Placeholder */)) {\n throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);\n }\n}\n\n/**\n * Assigns all attribute values to the provided element via the inferred renderer.\n *\n * This function accepts two forms of attribute entries:\n *\n * default: (key, value):\n * attrs = [key1, value1, key2, value2]\n *\n * namespaced: (NAMESPACE_MARKER, uri, name, value)\n * attrs = [NAMESPACE_MARKER, uri, name, value, NAMESPACE_MARKER, uri, name, value]\n *\n * The `attrs` array can contain a mix of both the default and namespaced entries.\n * The \"default\" values are set without a marker, but if the function comes across\n * a marker value then it will attempt to set a namespaced value. If the marker is\n * not of a namespaced value then the function will quit and return the index value\n * where it stopped during the iteration of the attrs array.\n *\n * See [AttributeMarker] to understand what the namespace marker value is.\n *\n * Note that this instruction does not support assigning style and class values to\n * an element. See `elementStart` and `elementHostAttrs` to learn how styling values\n * are applied to an element.\n * @param renderer The renderer to be used\n * @param native The element that the attributes will be assigned to\n * @param attrs The attribute array of values that will be assigned to the element\n * @returns the index value that was last accessed in the attributes array\n */\nfunction setUpAttributes(renderer, native, attrs) {\n const isProc = isProceduralRenderer(renderer);\n let i = 0;\n while (i < attrs.length) {\n const value = attrs[i];\n if (typeof value === 'number') {\n // only namespaces are supported. Other value types (such as style/class\n // entries) are not supported in this function.\n if (value !== 0 /* NamespaceURI */) {\n break;\n }\n // we just landed on the marker value ... therefore\n // we should skip to the next entry\n i++;\n const namespaceURI = attrs[i++];\n const attrName = attrs[i++];\n const attrVal = attrs[i++];\n ngDevMode && ngDevMode.rendererSetAttribute++;\n isProc ?\n renderer.setAttribute(native, attrName, attrVal, namespaceURI) :\n native.setAttributeNS(namespaceURI, attrName, attrVal);\n }\n else {\n // attrName is string;\n const attrName = value;\n const attrVal = attrs[++i];\n // Standard attributes\n ngDevMode && ngDevMode.rendererSetAttribute++;\n if (isAnimationProp(attrName)) {\n if (isProc) {\n renderer.setProperty(native, attrName, attrVal);\n }\n }\n else {\n isProc ?\n renderer.setAttribute(native, attrName, attrVal) :\n native.setAttribute(attrName, attrVal);\n }\n i++;\n }\n }\n // another piece of code may iterate over the same attributes array. Therefore\n // it may be helpful to return the exact spot where the attributes array exited\n // whether by running into an unsupported marker or if all the static values were\n // iterated over.\n return i;\n}\n/**\n * Test whether the given value is a marker that indicates that the following\n * attribute values in a `TAttributes` array are only the names of attributes,\n * and not name-value pairs.\n * @param marker The attribute marker to test.\n * @returns true if the marker is a \"name-only\" marker (e.g. `Bindings`, `Template` or `I18n`).\n */\nfunction isNameOnlyAttributeMarker(marker) {\n return marker === 3 /* Bindings */ || marker === 4 /* Template */ ||\n marker === 6 /* I18n */;\n}\nfunction isAnimationProp(name) {\n // Perf note: accessing charCodeAt to check for the first character of a string is faster as\n // compared to accessing a character at index 0 (ex. name[0]). The main reason for this is that\n // charCodeAt doesn't allocate memory to return a substring.\n return name.charCodeAt(0) === 64 /* AT_SIGN */;\n}\n/**\n * Merges `src` `TAttributes` into `dst` `TAttributes` removing any duplicates in the process.\n *\n * This merge function keeps the order of attrs same.\n *\n * @param dst Location of where the merged `TAttributes` should end up.\n * @param src `TAttributes` which should be appended to `dst`\n */\nfunction mergeHostAttrs(dst, src) {\n if (src === null || src.length === 0) {\n // do nothing\n }\n else if (dst === null || dst.length === 0) {\n // We have source, but dst is empty, just make a copy.\n dst = src.slice();\n }\n else {\n let srcMarker = -1 /* ImplicitAttributes */;\n for (let i = 0; i < src.length; i++) {\n const item = src[i];\n if (typeof item === 'number') {\n srcMarker = item;\n }\n else {\n if (srcMarker === 0 /* NamespaceURI */) {\n // Case where we need to consume `key1`, `key2`, `value` items.\n }\n else if (srcMarker === -1 /* ImplicitAttributes */ ||\n srcMarker === 2 /* Styles */) {\n // Case where we have to consume `key1` and `value` only.\n mergeHostAttribute(dst, srcMarker, item, null, src[++i]);\n }\n else {\n // Case where we have to consume `key1` only.\n mergeHostAttribute(dst, srcMarker, item, null, null);\n }\n }\n }\n }\n return dst;\n}\n/**\n * Append `key`/`value` to existing `TAttributes` taking region marker and duplicates into account.\n *\n * @param dst `TAttributes` to append to.\n * @param marker Region where the `key`/`value` should be added.\n * @param key1 Key to add to `TAttributes`\n * @param key2 Key to add to `TAttributes` (in case of `AttributeMarker.NamespaceURI`)\n * @param value Value to add or to overwrite to `TAttributes` Only used if `marker` is not Class.\n */\nfunction mergeHostAttribute(dst, marker, key1, key2, value) {\n let i = 0;\n // Assume that new markers will be inserted at the end.\n let markerInsertPosition = dst.length;\n // scan until correct type.\n if (marker === -1 /* ImplicitAttributes */) {\n markerInsertPosition = -1;\n }\n else {\n while (i < dst.length) {\n const dstValue = dst[i++];\n if (typeof dstValue === 'number') {\n if (dstValue === marker) {\n markerInsertPosition = -1;\n break;\n }\n else if (dstValue > marker) {\n // We need to save this as we want the markers to be inserted in specific order.\n markerInsertPosition = i - 1;\n break;\n }\n }\n }\n }\n // search until you find place of insertion\n while (i < dst.length) {\n const item = dst[i];\n if (typeof item === 'number') {\n // since `i` started as the index after the marker, we did not find it if we are at the next\n // marker\n break;\n }\n else if (item === key1) {\n // We already have same token\n if (key2 === null) {\n if (value !== null) {\n dst[i + 1] = value;\n }\n return;\n }\n else if (key2 === dst[i + 1]) {\n dst[i + 2] = value;\n return;\n }\n }\n // Increment counter.\n i++;\n if (key2 !== null)\n i++;\n if (value !== null)\n i++;\n }\n // insert at location.\n if (markerInsertPosition !== -1) {\n dst.splice(markerInsertPosition, 0, marker);\n i = markerInsertPosition + 1;\n }\n dst.splice(i++, 0, key1);\n if (key2 !== null) {\n dst.splice(i++, 0, key2);\n }\n if (value !== null) {\n dst.splice(i++, 0, value);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/// Parent Injector Utils ///////////////////////////////////////////////////////////////\nfunction hasParentInjector(parentLocation) {\n return parentLocation !== NO_PARENT_INJECTOR;\n}\nfunction getParentInjectorIndex(parentLocation) {\n ngDevMode && assertNumber(parentLocation, 'Number expected');\n ngDevMode && assertNotEqual(parentLocation, -1, 'Not a valid state.');\n const parentInjectorIndex = parentLocation & 32767 /* InjectorIndexMask */;\n ngDevMode &&\n assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');\n return parentLocation & 32767 /* InjectorIndexMask */;\n}\nfunction getParentInjectorViewOffset(parentLocation) {\n return parentLocation >> 16 /* ViewOffsetShift */;\n}\n/**\n * Unwraps a parent injector location number to find the view offset from the current injector,\n * then walks up the declaration view tree until the view is found that contains the parent\n * injector.\n *\n * @param location The location of the parent injector, which contains the view offset\n * @param startView The LView instance from which to start walking up the view tree\n * @returns The LView instance that contains the parent injector\n */\nfunction getParentInjectorView(location, startView) {\n let viewOffset = getParentInjectorViewOffset(location);\n let parentView = startView;\n // For most cases, the parent injector can be found on the host node (e.g. for component\n // or container), but we must keep the loop here to support the rarer case of deeply nested\n // tags or inline views, where the parent injector might live many views\n // above the child injector.\n while (viewOffset > 0) {\n parentView = parentView[DECLARATION_VIEW];\n viewOffset--;\n }\n return parentView;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines if the call to `inject` should include `viewProviders` in its resolution.\n *\n * This is set to true when we try to instantiate a component. This value is reset in\n * `getNodeInjectable` to a value which matches the declaration location of the token about to be\n * instantiated. This is done so that if we are injecting a token which was declared outside of\n * `viewProviders` we don't accidentally pull `viewProviders` in.\n *\n * Example:\n *\n * ```\n * @Injectable()\n * class MyService {\n * constructor(public value: String) {}\n * }\n *\n * @Component({\n * providers: [\n * MyService,\n * {provide: String, value: 'providers' }\n * ]\n * viewProviders: [\n * {provide: String, value: 'viewProviders'}\n * ]\n * })\n * class MyComponent {\n * constructor(myService: MyService, value: String) {\n * // We expect that Component can see into `viewProviders`.\n * expect(value).toEqual('viewProviders');\n * // `MyService` was not declared in `viewProviders` hence it can't see it.\n * expect(myService.value).toEqual('providers');\n * }\n * }\n *\n * ```\n */\nlet includeViewProviders = true;\nfunction setIncludeViewProviders(v) {\n const oldValue = includeViewProviders;\n includeViewProviders = v;\n return oldValue;\n}\n/**\n * The number of slots in each bloom filter (used by DI). The larger this number, the fewer\n * directives that will share slots, and thus, the fewer false positives when checking for\n * the existence of a directive.\n */\nconst BLOOM_SIZE = 256;\nconst BLOOM_MASK = BLOOM_SIZE - 1;\n/**\n * The number of bits that is represented by a single bloom bucket. JS bit operations are 32 bits,\n * so each bucket represents 32 distinct tokens which accounts for log2(32) = 5 bits of a bloom hash\n * number.\n */\nconst BLOOM_BUCKET_BITS = 5;\n/** Counter used to generate unique IDs for directives. */\nlet nextNgElementId = 0;\n/**\n * Registers this directive as present in its node's injector by flipping the directive's\n * corresponding bit in the injector's bloom filter.\n *\n * @param injectorIndex The index of the node injector where this token should be registered\n * @param tView The TView for the injector's bloom filters\n * @param type The directive token to register\n */\nfunction bloomAdd(injectorIndex, tView, type) {\n ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');\n let id;\n if (typeof type === 'string') {\n id = type.charCodeAt(0) || 0;\n }\n else if (type.hasOwnProperty(NG_ELEMENT_ID)) {\n id = type[NG_ELEMENT_ID];\n }\n // Set a unique ID on the directive type, so if something tries to inject the directive,\n // we can easily retrieve the ID and hash it into the bloom bit that should be checked.\n if (id == null) {\n id = type[NG_ELEMENT_ID] = nextNgElementId++;\n }\n // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),\n // so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.\n const bloomHash = id & BLOOM_MASK;\n // Create a mask that targets the specific bit associated with the directive.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n // Each bloom bucket in `tData` represents `BLOOM_BUCKET_BITS` number of bits of `bloomHash`.\n // Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset that the mask\n // should be written to.\n tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;\n}\n/**\n * Creates (or gets an existing) injector for a given element or container.\n *\n * @param tNode for which an injector should be retrieved / created.\n * @param lView View where the node is stored\n * @returns Node injector\n */\nfunction getOrCreateNodeInjectorForNode(tNode, lView) {\n const existingInjectorIndex = getInjectorIndex(tNode, lView);\n if (existingInjectorIndex !== -1) {\n return existingInjectorIndex;\n }\n const tView = lView[TVIEW];\n if (tView.firstCreatePass) {\n tNode.injectorIndex = lView.length;\n insertBloom(tView.data, tNode); // foundation for node bloom\n insertBloom(lView, null); // foundation for cumulative bloom\n insertBloom(tView.blueprint, null);\n }\n const parentLoc = getParentInjectorLocation(tNode, lView);\n const injectorIndex = tNode.injectorIndex;\n // If a parent injector can't be found, its location is set to -1.\n // In that case, we don't need to set up a cumulative bloom\n if (hasParentInjector(parentLoc)) {\n const parentIndex = getParentInjectorIndex(parentLoc);\n const parentLView = getParentInjectorView(parentLoc, lView);\n const parentData = parentLView[TVIEW].data;\n // Creates a cumulative bloom filter that merges the parent's bloom filter\n // and its own cumulative bloom (which contains tokens for all ancestors)\n for (let i = 0; i < 8 /* BLOOM_SIZE */; i++) {\n lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];\n }\n }\n lView[injectorIndex + 8 /* PARENT */] = parentLoc;\n return injectorIndex;\n}\nfunction insertBloom(arr, footer) {\n arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);\n}\nfunction getInjectorIndex(tNode, lView) {\n if (tNode.injectorIndex === -1 ||\n // If the injector index is the same as its parent's injector index, then the index has been\n // copied down from the parent node. No injector has been created yet on this node.\n (tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex) ||\n // After the first template pass, the injector index might exist but the parent values\n // might not have been calculated yet for this instance\n lView[tNode.injectorIndex + 8 /* PARENT */] === null) {\n return -1;\n }\n else {\n ngDevMode && assertIndexInRange(lView, tNode.injectorIndex);\n return tNode.injectorIndex;\n }\n}\n/**\n * Finds the index of the parent injector, with a view offset if applicable. Used to set the\n * parent injector initially.\n *\n * @returns Returns a number that is the combination of the number of LViews that we have to go up\n * to find the LView containing the parent inject AND the index of the injector within that LView.\n */\nfunction getParentInjectorLocation(tNode, lView) {\n if (tNode.parent && tNode.parent.injectorIndex !== -1) {\n // If we have a parent `TNode` and there is an injector associated with it we are done, because\n // the parent injector is within the current `LView`.\n return tNode.parent.injectorIndex; // ViewOffset is 0\n }\n // When parent injector location is computed it may be outside of the current view. (ie it could\n // be pointing to a declared parent location). This variable stores number of declaration parents\n // we need to walk up in order to find the parent injector location.\n let declarationViewOffset = 0;\n let parentTNode = null;\n let lViewCursor = lView;\n // The parent injector is not in the current `LView`. We will have to walk the declared parent\n // `LView` hierarchy and look for it. If we walk of the top, that means that there is no parent\n // `NodeInjector`.\n while (lViewCursor !== null) {\n // First determine the `parentTNode` location. The parent pointer differs based on `TView.type`.\n const tView = lViewCursor[TVIEW];\n const tViewType = tView.type;\n if (tViewType === 2 /* Embedded */) {\n ngDevMode &&\n assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n parentTNode = tView.declTNode;\n }\n else if (tViewType === 1 /* Component */) {\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n parentTNode = lViewCursor[T_HOST];\n }\n else {\n ngDevMode && assertEqual(tView.type, 0 /* Root */, 'Root type expected');\n parentTNode = null;\n }\n if (parentTNode === null) {\n // If we have no parent, than we are done.\n return NO_PARENT_INJECTOR;\n }\n ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]);\n // Every iteration of the loop requires that we go to the declared parent.\n declarationViewOffset++;\n lViewCursor = lViewCursor[DECLARATION_VIEW];\n if (parentTNode.injectorIndex !== -1) {\n // We found a NodeInjector which points to something.\n return (parentTNode.injectorIndex |\n (declarationViewOffset << 16 /* ViewOffsetShift */));\n }\n }\n return NO_PARENT_INJECTOR;\n}\n/**\n * Makes a type or an injection token public to the DI system by adding it to an\n * injector's bloom filter.\n *\n * @param di The node injector in which a directive will be added\n * @param token The type or the injection token to be made public\n */\nfunction diPublicInInjector(injectorIndex, tView, token) {\n bloomAdd(injectorIndex, tView, token);\n}\n/**\n * Inject static attribute value into directive constructor.\n *\n * This method is used with `factory` functions which are generated as part of\n * `defineDirective` or `defineComponent`. The method retrieves the static value\n * of an attribute. (Dynamic attributes are not supported since they are not resolved\n * at the time of injection and can change over time.)\n *\n * # Example\n * Given:\n * ```\n * @Component(...)\n * class MyComponent {\n * constructor(@Attribute('title') title: string) { ... }\n * }\n * ```\n * When instantiated with\n * ```\n * \n * ```\n *\n * Then factory method generated is:\n * ```\n * MyComponent.ɵcmp = defineComponent({\n * factory: () => new MyComponent(injectAttribute('title'))\n * ...\n * })\n * ```\n *\n * @publicApi\n */\nfunction injectAttributeImpl(tNode, attrNameToInject) {\n ngDevMode && assertTNodeType(tNode, 12 /* AnyContainer */ | 3 /* AnyRNode */);\n ngDevMode && assertDefined(tNode, 'expecting tNode');\n if (attrNameToInject === 'class') {\n return tNode.classes;\n }\n if (attrNameToInject === 'style') {\n return tNode.styles;\n }\n const attrs = tNode.attrs;\n if (attrs) {\n const attrsLength = attrs.length;\n let i = 0;\n while (i < attrsLength) {\n const value = attrs[i];\n // If we hit a `Bindings` or `Template` marker then we are done.\n if (isNameOnlyAttributeMarker(value))\n break;\n // Skip namespaced attributes\n if (value === 0 /* NamespaceURI */) {\n // we skip the next two values\n // as namespaced attributes looks like\n // [..., AttributeMarker.NamespaceURI, 'http://someuri.com/test', 'test:exist',\n // 'existValue', ...]\n i = i + 2;\n }\n else if (typeof value === 'number') {\n // Skip to the first value of the marked attribute.\n i++;\n while (i < attrsLength && typeof attrs[i] === 'string') {\n i++;\n }\n }\n else if (value === attrNameToInject) {\n return attrs[i + 1];\n }\n else {\n i = i + 2;\n }\n }\n }\n return null;\n}\nfunction notFoundValueOrThrow(notFoundValue, token, flags) {\n if (flags & InjectFlags.Optional) {\n return notFoundValue;\n }\n else {\n throwProviderNotFoundError(token, 'NodeInjector');\n }\n}\n/**\n * Returns the value associated to the given token from the ModuleInjector or throws exception\n *\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector or throws an exception\n */\nfunction lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {\n if (flags & InjectFlags.Optional && notFoundValue === undefined) {\n // This must be set or the NullInjector will throw for optional deps\n notFoundValue = null;\n }\n if ((flags & (InjectFlags.Self | InjectFlags.Host)) === 0) {\n const moduleInjector = lView[INJECTOR];\n // switch to `injectInjectorOnly` implementation for module injector, since module injector\n // should not have access to Component/Directive DI scope (that may happen through\n // `directiveInject` implementation)\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n if (moduleInjector) {\n return moduleInjector.get(token, notFoundValue, flags & InjectFlags.Optional);\n }\n else {\n return injectRootLimpMode(token, notFoundValue, flags & InjectFlags.Optional);\n }\n }\n finally {\n setInjectImplementation(previousInjectImplementation);\n }\n }\n return notFoundValueOrThrow(notFoundValue, token, flags);\n}\n/**\n * Returns the value associated to the given token from the NodeInjectors => ModuleInjector.\n *\n * Look for the injector providing the token by walking up the node injector tree and then\n * the module injector tree.\n *\n * This function patches `token` with `__NG_ELEMENT_ID__` which contains the id for the bloom\n * filter. `-1` is reserved for injecting `Injector` (implemented by `NodeInjector`)\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default, notFoundValue) {\n if (tNode !== null) {\n const bloomHash = bloomHashBitOrFactory(token);\n // If the ID stored here is a function, this is a special object like ElementRef or TemplateRef\n // so just call the factory function to create it.\n if (typeof bloomHash === 'function') {\n if (!enterDI(lView, tNode, flags)) {\n // Failed to enter DI, try module injector instead. If a token is injected with the @Host\n // flag, the module injector is not searched for that token in Ivy.\n return (flags & InjectFlags.Host) ?\n notFoundValueOrThrow(notFoundValue, token, flags) :\n lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n }\n try {\n const value = bloomHash();\n if (value == null && !(flags & InjectFlags.Optional)) {\n throwProviderNotFoundError(token);\n }\n else {\n return value;\n }\n }\n finally {\n leaveDI();\n }\n }\n else if (typeof bloomHash === 'number') {\n // A reference to the previous injector TView that was found while climbing the element\n // injector tree. This is used to know if viewProviders can be accessed on the current\n // injector.\n let previousTView = null;\n let injectorIndex = getInjectorIndex(tNode, lView);\n let parentLocation = NO_PARENT_INJECTOR;\n let hostTElementNode = flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;\n // If we should skip this injector, or if there is no injector on this node, start by\n // searching the parent injector.\n if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {\n parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :\n lView[injectorIndex + 8 /* PARENT */];\n if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {\n injectorIndex = -1;\n }\n else {\n previousTView = lView[TVIEW];\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n }\n // Traverse up the injector tree until we find a potential match or until we know there\n // *isn't* a match.\n while (injectorIndex !== -1) {\n ngDevMode && assertNodeInjector(lView, injectorIndex);\n // Check the current injector. If it matches, see if it contains token.\n const tView = lView[TVIEW];\n ngDevMode &&\n assertTNodeForLView(tView.data[injectorIndex + 8 /* TNODE */], lView);\n if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {\n // At this point, we have an injector which *may* contain the token, so we step through\n // the providers and directives associated with the injector's corresponding node to get\n // the instance.\n const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);\n if (instance !== NOT_FOUND) {\n return instance;\n }\n }\n parentLocation = lView[injectorIndex + 8 /* PARENT */];\n if (parentLocation !== NO_PARENT_INJECTOR &&\n shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* TNODE */] === hostTElementNode) &&\n bloomHasToken(bloomHash, injectorIndex, lView)) {\n // The def wasn't found anywhere on this node, so it was a false positive.\n // Traverse up the tree and continue searching.\n previousTView = tView;\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n else {\n // If we should not search parent OR If the ancestor bloom filter value does not have the\n // bit corresponding to the directive we can give up on traversing up to find the specific\n // injector.\n injectorIndex = -1;\n }\n }\n }\n }\n return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n}\nconst NOT_FOUND = {};\nfunction createNodeInjector() {\n return new NodeInjector(getCurrentTNode(), getLView());\n}\nfunction searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {\n const currentTView = lView[TVIEW];\n const tNode = currentTView.data[injectorIndex + 8 /* TNODE */];\n // First, we need to determine if view providers can be accessed by the starting element.\n // There are two possibilities\n const canAccessViewProviders = previousTView == null ?\n // 1) This is the first invocation `previousTView == null` which means that we are at the\n // `TNode` of where injector is starting to look. In such a case the only time we are allowed\n // to look into the ViewProviders is if:\n // - we are on a component\n // - AND the injector set `includeViewProviders` to true (implying that the token can see\n // ViewProviders because it is the Component or a Service which itself was declared in\n // ViewProviders)\n (isComponentHost(tNode) && includeViewProviders) :\n // 2) `previousTView != null` which means that we are now walking across the parent nodes.\n // In such a case we are only allowed to look into the ViewProviders if:\n // - We just crossed from child View to Parent View `previousTView != currentTView`\n // - AND the parent TNode is an Element.\n // This means that we just came from the Component's View and therefore are allowed to see\n // into the ViewProviders.\n (previousTView != currentTView && ((tNode.type & 3 /* AnyRNode */) !== 0));\n // This special case happens when there is a @host on the inject and when we are searching\n // on the host element node.\n const isHostSpecialCase = (flags & InjectFlags.Host) && hostTElementNode === tNode;\n const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);\n if (injectableIdx !== null) {\n return getNodeInjectable(lView, currentTView, injectableIdx, tNode);\n }\n else {\n return NOT_FOUND;\n }\n}\n/**\n * Searches for the given token among the node's directives and providers.\n *\n * @param tNode TNode on which directives are present.\n * @param tView The tView we are currently processing\n * @param token Provider token or type of a directive to look for.\n * @param canAccessViewProviders Whether view providers should be considered.\n * @param isHostSpecialCase Whether the host special case applies.\n * @returns Index of a found directive or provider, or null when none found.\n */\nfunction locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {\n const nodeProviderIndexes = tNode.providerIndexes;\n const tInjectables = tView.data;\n const injectablesStart = nodeProviderIndexes & 1048575 /* ProvidersStartIndexMask */;\n const directivesStart = tNode.directiveStart;\n const directiveEnd = tNode.directiveEnd;\n const cptViewProvidersCount = nodeProviderIndexes >> 20 /* CptViewProvidersCountShift */;\n const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;\n // When the host special case applies, only the viewProviders and the component are visible\n const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;\n for (let i = startingIndex; i < endIndex; i++) {\n const providerTokenOrDef = tInjectables[i];\n if (i < directivesStart && token === providerTokenOrDef ||\n i >= directivesStart && providerTokenOrDef.type === token) {\n return i;\n }\n }\n if (isHostSpecialCase) {\n const dirDef = tInjectables[directivesStart];\n if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {\n return directivesStart;\n }\n }\n return null;\n}\n/**\n * Retrieve or instantiate the injectable from the `LView` at particular `index`.\n *\n * This function checks to see if the value has already been instantiated and if so returns the\n * cached `injectable`. Otherwise if it detects that the value is still a factory it\n * instantiates the `injectable` and caches the value.\n */\nfunction getNodeInjectable(lView, tView, index, tNode) {\n let value = lView[index];\n const tData = tView.data;\n if (isFactory(value)) {\n const factory = value;\n if (factory.resolving) {\n throwCyclicDependencyError(stringifyForError(tData[index]));\n }\n const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);\n factory.resolving = true;\n const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null;\n const success = enterDI(lView, tNode, InjectFlags.Default);\n ngDevMode &&\n assertEqual(success, true, 'Because flags do not contain \\`SkipSelf\\' we expect this to always succeed.');\n try {\n value = lView[index] = factory.factory(undefined, tData, lView, tNode);\n // This code path is hit for both directives and providers.\n // For perf reasons, we want to avoid searching for hooks on providers.\n // It does no harm to try (the hooks just won't exist), but the extra\n // checks are unnecessary and this is a hot path. So we check to see\n // if the index of the dependency is in the directive range for this\n // tNode. If it's not, we know it's a provider and skip hook registration.\n if (tView.firstCreatePass && index >= tNode.directiveStart) {\n ngDevMode && assertDirectiveDef(tData[index]);\n registerPreOrderHooks(index, tData[index], tView);\n }\n }\n finally {\n previousInjectImplementation !== null &&\n setInjectImplementation(previousInjectImplementation);\n setIncludeViewProviders(previousIncludeViewProviders);\n factory.resolving = false;\n leaveDI();\n }\n }\n return value;\n}\n/**\n * Returns the bit in an injector's bloom filter that should be used to determine whether or not\n * the directive might be provided by the injector.\n *\n * When a directive is public, it is added to the bloom filter and given a unique ID that can be\n * retrieved on the Type. When the directive isn't public or the token is not a directive `null`\n * is returned as the node injector can not possibly provide that token.\n *\n * @param token the injection token\n * @returns the matching bit to check in the bloom filter or `null` if the token is not known.\n * When the returned value is negative then it represents special values such as `Injector`.\n */\nfunction bloomHashBitOrFactory(token) {\n ngDevMode && assertDefined(token, 'token must be defined');\n if (typeof token === 'string') {\n return token.charCodeAt(0) || 0;\n }\n const tokenId = \n // First check with `hasOwnProperty` so we don't get an inherited ID.\n token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : undefined;\n // Negative token IDs are used for special objects such as `Injector`\n if (typeof tokenId === 'number') {\n if (tokenId >= 0) {\n return tokenId & BLOOM_MASK;\n }\n else {\n ngDevMode &&\n assertEqual(tokenId, -1 /* Injector */, 'Expecting to get Special Injector Id');\n return createNodeInjector;\n }\n }\n else {\n return tokenId;\n }\n}\nfunction bloomHasToken(bloomHash, injectorIndex, injectorView) {\n // Create a mask that targets the specific bit associated with the directive we're looking for.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n // Each bloom bucket in `injectorView` represents `BLOOM_BUCKET_BITS` number of bits of\n // `bloomHash`. Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset\n // that should be used.\n const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];\n // If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,\n // this injector is a potential match.\n return !!(value & mask);\n}\n/** Returns true if flags prevent parent injector from being searched for tokens */\nfunction shouldSearchParent(flags, isFirstHostTNode) {\n return !(flags & InjectFlags.Self) && !(flags & InjectFlags.Host && isFirstHostTNode);\n}\nclass NodeInjector {\n constructor(_tNode, _lView) {\n this._tNode = _tNode;\n this._lView = _lView;\n }\n get(token, notFoundValue) {\n return getOrCreateInjectable(this._tNode, this._lView, token, undefined, notFoundValue);\n }\n}\n/**\n * @codeGenApi\n */\nfunction ɵɵgetInheritedFactory(type) {\n return noSideEffects(() => {\n const ownConstructor = type.prototype.constructor;\n const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);\n const objectPrototype = Object.prototype;\n let parent = Object.getPrototypeOf(type.prototype).constructor;\n // Go up the prototype until we hit `Object`.\n while (parent && parent !== objectPrototype) {\n const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);\n // If we hit something that has a factory and the factory isn't the same as the type,\n // we've found the inherited factory. Note the check that the factory isn't the type's\n // own factory is redundant in most cases, but if the user has custom decorators on the\n // class, this lookup will start one level down in the prototype chain, causing us to\n // find the own factory first and potentially triggering an infinite loop downstream.\n if (factory && factory !== ownFactory) {\n return factory;\n }\n parent = Object.getPrototypeOf(parent);\n }\n // There is no factory defined. Either this was improper usage of inheritance\n // (no Angular decorator on the superclass) or there is no constructor at all\n // in the inheritance chain. Since the two cases cannot be distinguished, the\n // latter has to be assumed.\n return t => new t();\n });\n}\nfunction getFactoryOf(type) {\n if (isForwardRef(type)) {\n return () => {\n const factory = getFactoryOf(resolveForwardRef(type));\n return factory && factory();\n };\n }\n return getFactoryDef(type);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Facade for the attribute injection from DI.\n *\n * @codeGenApi\n */\nfunction ɵɵinjectAttribute(attrNameToInject) {\n return injectAttributeImpl(getCurrentTNode(), attrNameToInject);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ANNOTATIONS = '__annotations__';\nconst PARAMETERS = '__parameters__';\nconst PROP_METADATA = '__prop__metadata__';\n/**\n * @suppress {globalThis}\n */\nfunction makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function DecoratorFactory(...args) {\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, ...args);\n return this;\n }\n const annotationInstance = new DecoratorFactory(...args);\n return function TypeDecorator(cls) {\n if (typeFn)\n typeFn(cls, ...args);\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const annotations = cls.hasOwnProperty(ANNOTATIONS) ?\n cls[ANNOTATIONS] :\n Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n annotations.push(annotationInstance);\n if (additionalProcessing)\n additionalProcessing(cls);\n return cls;\n };\n }\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n DecoratorFactory.prototype.ngMetadataName = name;\n DecoratorFactory.annotationCls = DecoratorFactory;\n return DecoratorFactory;\n });\n}\nfunction makeMetadataCtor(props) {\n return function ctor(...args) {\n if (props) {\n const values = props(...args);\n for (const propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\nfunction makeParamDecorator(name, props, parentClass) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function ParamDecoratorFactory(...args) {\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const annotationInstance = new ParamDecoratorFactory(...args);\n ParamDecorator.annotation = annotationInstance;\n return ParamDecorator;\n function ParamDecorator(cls, unusedKey, index) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const parameters = cls.hasOwnProperty(PARAMETERS) ?\n cls[PARAMETERS] :\n Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS];\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n (parameters[index] = parameters[index] || []).push(annotationInstance);\n return cls;\n }\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.ngMetadataName = name;\n ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n });\n}\nfunction makePropDecorator(name, props, parentClass, additionalProcessing) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function PropDecoratorFactory(...args) {\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const decoratorInstance = new PropDecoratorFactory(...args);\n function PropDecorator(target, name) {\n const constructor = target.constructor;\n // Use of Object.defineProperty is important because it creates a non-enumerable property\n // which prevents the property from being copied during subclassing.\n const meta = constructor.hasOwnProperty(PROP_METADATA) ?\n constructor[PROP_METADATA] :\n Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA];\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n if (additionalProcessing)\n additionalProcessing(target, name, ...args);\n }\n return PropDecorator;\n }\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n PropDecoratorFactory.prototype.ngMetadataName = name;\n PropDecoratorFactory.annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\n });\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction CREATE_ATTRIBUTE_DECORATOR__PRE_R3__() {\n return makeParamDecorator('Attribute', (attributeName) => ({ attributeName }));\n}\nfunction CREATE_ATTRIBUTE_DECORATOR__POST_R3__() {\n return makeParamDecorator('Attribute', (attributeName) => ({ attributeName, __NG_ELEMENT_ID__: () => ɵɵinjectAttribute(attributeName) }));\n}\nconst CREATE_ATTRIBUTE_DECORATOR_IMPL = CREATE_ATTRIBUTE_DECORATOR__POST_R3__;\n/**\n * Attribute decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Attribute = CREATE_ATTRIBUTE_DECORATOR_IMPL();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Creates a token that can be used in a DI Provider.\n *\n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parameterized type.\n *\n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides additional level of type safety.\n *\n * ```\n * interface MyInterface {...}\n * var myInterface = injector.get(new InjectionToken('SomeToken'));\n * // myInterface is inferred to be MyInterface.\n * ```\n *\n * When creating an `InjectionToken`, you can optionally specify a factory function which returns\n * (possibly by creating) a default value of the parameterized type `T`. This sets up the\n * `InjectionToken` using this factory as a provider as if it was defined explicitly in the\n * application's root injector. If the factory function, which takes zero arguments, needs to inject\n * dependencies, it can do so using the `inject` function. See below for an example.\n *\n * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which\n * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As\n * mentioned above, `'root'` is the default value for `providedIn`.\n *\n * @usageNotes\n * ### Basic Example\n *\n * ### Plain InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='InjectionToken'}\n *\n * ### Tree-shakable InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}\n *\n *\n * @publicApi\n */\nclass InjectionToken {\n constructor(_desc, options) {\n this._desc = _desc;\n /** @internal */\n this.ngMetadataName = 'InjectionToken';\n this.ɵprov = undefined;\n if (typeof options == 'number') {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n assertLessThan(options, 0, 'Only negative numbers are supported here');\n // This is a special hack to assign __NG_ELEMENT_ID__ to this instance.\n // See `InjectorMarkers`\n this.__NG_ELEMENT_ID__ = options;\n }\n else if (options !== undefined) {\n this.ɵprov = ɵɵdefineInjectable({\n token: this,\n providedIn: options.providedIn || 'root',\n factory: options.factory,\n });\n }\n }\n toString() {\n return `InjectionToken ${this._desc}`;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI token that you can use to create a virtual [provider](guide/glossary#provider)\n * that will populate the `entryComponents` field of components and NgModules\n * based on its `useValue` property value.\n * All components that are referenced in the `useValue` value (either directly\n * or in a nested array or map) are added to the `entryComponents` property.\n *\n * @usageNotes\n *\n * The following example shows how the router can populate the `entryComponents`\n * field of an NgModule based on a router configuration that refers\n * to components.\n *\n * ```typescript\n * // helper function inside the router\n * function provideRoutes(routes) {\n * return [\n * {provide: ROUTES, useValue: routes},\n * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}\n * ];\n * }\n *\n * // user code\n * let routes = [\n * {path: '/root', component: RootComp},\n * {path: '/teams', component: TeamsComp}\n * ];\n *\n * @NgModule({\n * providers: [provideRoutes(routes)]\n * })\n * class ModuleWithRoutes {}\n * ```\n *\n * @publicApi\n * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.\n */\nconst ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');\n// Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not\n// explicitly set. This value will be changed to `true` in v12.\n// TODO(misko): switch the default in v12 to `true`. See: packages/compiler/src/core.ts\nconst emitDistinctChangesOnlyDefaultValue = false;\n/**\n * Base class for query metadata.\n *\n * @see `ContentChildren`.\n * @see `ContentChild`.\n * @see `ViewChildren`.\n * @see `ViewChild`.\n *\n * @publicApi\n */\nclass Query {\n}\nconst ɵ0$1 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: false, descendants: false, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));\n/**\n * ContentChildren decorator and metadata.\n *\n *\n * @Annotation\n * @publicApi\n */\nconst ContentChildren = makePropDecorator('ContentChildren', ɵ0$1, Query);\nconst ɵ1 = (selector, data = {}) => (Object.assign({ selector, first: true, isViewQuery: false, descendants: true }, data));\n/**\n * ContentChild decorator and metadata.\n *\n *\n * @Annotation\n *\n * @publicApi\n */\nconst ContentChild = makePropDecorator('ContentChild', ɵ1, Query);\nconst ɵ2 = (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: true, descendants: true, emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue }, data));\n/**\n * ViewChildren decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst ViewChildren = makePropDecorator('ViewChildren', ɵ2, Query);\nconst ɵ3 = (selector, data) => (Object.assign({ selector, first: true, isViewQuery: true, descendants: true }, data));\n/**\n * ViewChild decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst ViewChild = makePropDecorator('ViewChild', ɵ3, Query);\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar R3ResolvedDependencyType;\n(function (R3ResolvedDependencyType) {\n R3ResolvedDependencyType[R3ResolvedDependencyType[\"Token\"] = 0] = \"Token\";\n R3ResolvedDependencyType[R3ResolvedDependencyType[\"Attribute\"] = 1] = \"Attribute\";\n R3ResolvedDependencyType[R3ResolvedDependencyType[\"ChangeDetectorRef\"] = 2] = \"ChangeDetectorRef\";\n R3ResolvedDependencyType[R3ResolvedDependencyType[\"Invalid\"] = 3] = \"Invalid\";\n})(R3ResolvedDependencyType || (R3ResolvedDependencyType = {}));\nvar R3FactoryTarget;\n(function (R3FactoryTarget) {\n R3FactoryTarget[R3FactoryTarget[\"Directive\"] = 0] = \"Directive\";\n R3FactoryTarget[R3FactoryTarget[\"Component\"] = 1] = \"Component\";\n R3FactoryTarget[R3FactoryTarget[\"Injectable\"] = 2] = \"Injectable\";\n R3FactoryTarget[R3FactoryTarget[\"Pipe\"] = 3] = \"Pipe\";\n R3FactoryTarget[R3FactoryTarget[\"NgModule\"] = 4] = \"NgModule\";\n})(R3FactoryTarget || (R3FactoryTarget = {}));\nvar ViewEncapsulation$1;\n(function (ViewEncapsulation) {\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation$1 || (ViewEncapsulation$1 = {}));\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction getCompilerFacade() {\n const globalNg = _global['ng'];\n if (!globalNg || !globalNg.ɵcompilerFacade) {\n throw new Error(`Angular JIT compilation failed: '@angular/compiler' not loaded!\\n` +\n ` - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.\\n` +\n ` - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?\\n` +\n ` - Alternatively provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.`);\n }\n return globalNg.ɵcompilerFacade;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * Represents a type that a Component or other object is instances of.\n *\n * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by\n * the `MyCustomComponent` constructor function.\n *\n * @publicApi\n */\nconst Type = Function;\nfunction isType(v) {\n return typeof v === 'function';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Equivalent to ES6 spread, add each item to an array.\n *\n * @param items The items to add\n * @param arr The array to which you want to add the items\n */\nfunction addAllToArray(items, arr) {\n for (let i = 0; i < items.length; i++) {\n arr.push(items[i]);\n }\n}\n/**\n * Determines if the contents of two arrays is identical\n *\n * @param a first array\n * @param b second array\n * @param identityAccessor Optional function for extracting stable object identity from a value in\n * the array.\n */\nfunction arrayEquals(a, b, identityAccessor) {\n if (a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n let valueA = a[i];\n let valueB = b[i];\n if (identityAccessor) {\n valueA = identityAccessor(valueA);\n valueB = identityAccessor(valueB);\n }\n if (valueB !== valueA) {\n return false;\n }\n }\n return true;\n}\n/**\n * Flattens an array.\n */\nfunction flatten(list, dst) {\n if (dst === undefined)\n dst = list;\n for (let i = 0; i < list.length; i++) {\n let item = list[i];\n if (Array.isArray(item)) {\n // we need to inline it.\n if (dst === list) {\n // Our assumption that the list was already flat was wrong and\n // we need to clone flat since we need to write to it.\n dst = list.slice(0, i);\n }\n flatten(item, dst);\n }\n else if (dst !== list) {\n dst.push(item);\n }\n }\n return dst;\n}\nfunction deepForEach(input, fn) {\n input.forEach(value => Array.isArray(value) ? deepForEach(value, fn) : fn(value));\n}\nfunction addToArray(arr, index, value) {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n }\n else {\n arr.splice(index, 0, value);\n }\n}\nfunction removeFromArray(arr, index) {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n return arr.pop();\n }\n else {\n return arr.splice(index, 1)[0];\n }\n}\nfunction newArray(size, value) {\n const list = [];\n for (let i = 0; i < size; i++) {\n list.push(value);\n }\n return list;\n}\n/**\n * Remove item from array (Same as `Array.splice()` but faster.)\n *\n * `Array.splice()` is not as fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * https://jsperf.com/fast-array-splice (About 20x faster)\n *\n * @param array Array to splice\n * @param index Index of element in array to remove.\n * @param count Number of items to remove.\n */\nfunction arraySplice(array, index, count) {\n const length = array.length - count;\n while (index < length) {\n array[index] = array[index + count];\n index++;\n }\n while (count--) {\n array.pop(); // shrink the array\n }\n}\n/**\n * Same as `Array.splice(index, 0, value)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value Value to add to array.\n */\nfunction arrayInsert(array, index, value) {\n ngDevMode && assertLessThanOrEqual(index, array.length, 'Can\\'t insert past array end.');\n let end = array.length;\n while (end > index) {\n const previousEnd = end - 1;\n array[end] = array[previousEnd];\n end = previousEnd;\n }\n array[index] = value;\n}\n/**\n * Same as `Array.splice2(index, 0, value1, value2)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value1 Value to add to array.\n * @param value2 Value to add to array.\n */\nfunction arrayInsert2(array, index, value1, value2) {\n ngDevMode && assertLessThanOrEqual(index, array.length, 'Can\\'t insert past array end.');\n let end = array.length;\n if (end == index) {\n // inserting at the end.\n array.push(value1, value2);\n }\n else if (end === 1) {\n // corner case when we have less items in array than we have items to insert.\n array.push(value2, array[0]);\n array[0] = value1;\n }\n else {\n end--;\n array.push(array[end - 1], array[end]);\n while (end > index) {\n const previousEnd = end - 2;\n array[end] = array[previousEnd];\n end--;\n }\n array[index] = value1;\n array[index + 1] = value2;\n }\n}\n/**\n * Insert a `value` into an `array` so that the array remains sorted.\n *\n * NOTE:\n * - Duplicates are not allowed, and are ignored.\n * - This uses binary search algorithm for fast inserts.\n *\n * @param array A sorted array to insert into.\n * @param value The value to insert.\n * @returns index of the inserted value.\n */\nfunction arrayInsertSorted(array, value) {\n let index = arrayIndexOfSorted(array, value);\n if (index < 0) {\n // if we did not find it insert it.\n index = ~index;\n arrayInsert(array, index, value);\n }\n return index;\n}\n/**\n * Remove `value` from a sorted `array`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to remove from.\n * @param value The value to remove.\n * @returns index of the removed value.\n * - positive index if value found and removed.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * inserted)\n */\nfunction arrayRemoveSorted(array, value) {\n const index = arrayIndexOfSorted(array, value);\n if (index >= 0) {\n arraySplice(array, index, 1);\n }\n return index;\n}\n/**\n * Get an index of an `value` in a sorted `array`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * located)\n */\nfunction arrayIndexOfSorted(array, value) {\n return _arrayIndexOfSorted(array, value, 0);\n}\n/**\n * Set a `value` for a `key`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or create.\n * @param value The value to set for a `key`.\n * @returns index (always even) of where the value vas set.\n */\nfunction keyValueArraySet(keyValueArray, key, value) {\n let index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it set it.\n keyValueArray[index | 1] = value;\n }\n else {\n index = ~index;\n arrayInsert2(keyValueArray, index, key, value);\n }\n return index;\n}\n/**\n * Retrieve a `value` for a `key` (on `undefined` if not found.)\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @return The `value` stored at the `key` location or `undefined if not found.\n */\nfunction keyValueArrayGet(keyValueArray, key) {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it retrieve it.\n return keyValueArray[index | 1];\n }\n return undefined;\n}\n/**\n * Retrieve a `key` index value in the array or `-1` if not found.\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @returns index of where the key is (or should have been.)\n * - positive (even) index if key found.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been inserted.)\n */\nfunction keyValueArrayIndexOf(keyValueArray, key) {\n return _arrayIndexOfSorted(keyValueArray, key, 1);\n}\n/**\n * Delete a `key` (and `value`) from the `KeyValueArray`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or delete (if exist).\n * @returns index of where the key was (or should have been.)\n * - positive (even) index if key found and deleted.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been.)\n */\nfunction keyValueArrayDelete(keyValueArray, key) {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it remove it.\n arraySplice(keyValueArray, index, 2);\n }\n return index;\n}\n/**\n * INTERNAL: Get an index of an `value` in a sorted `array` by grouping search by `shift`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @param shift grouping shift.\n * - `0` means look at every location\n * - `1` means only look at every other (even) location (the odd locations are to be ignored as\n * they are values.)\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * inserted)\n */\nfunction _arrayIndexOfSorted(array, value, shift) {\n ngDevMode && assertEqual(Array.isArray(array), true, 'Expecting an array');\n let start = 0;\n let end = array.length >> shift;\n while (end !== start) {\n const middle = start + ((end - start) >> 1); // find the middle.\n const current = array[middle << shift];\n if (value === current) {\n return (middle << shift);\n }\n else if (current > value) {\n end = middle;\n }\n else {\n start = middle + 1; // We already searched middle so make it non-inclusive by adding 1\n }\n }\n return ~(end << shift);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/*\n * #########################\n * Attention: These Regular expressions have to hold even if the code is minified!\n * ##########################\n */\n/**\n * Regular expression that detects pass-through constructors for ES5 output. This Regex\n * intends to capture the common delegation pattern emitted by TypeScript and Babel. Also\n * it intends to capture the pattern where existing constructors have been downleveled from\n * ES2015 to ES5 using TypeScript w/ downlevel iteration. e.g.\n *\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, arguments) || this;\n * ```\n *\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, __spread(arguments)) || this;\n * ```\n *\n * More details can be found in: https://github.com/angular/angular/issues/38453.\n */\nconst ES5_DELEGATE_CTOR = /^function\\s+\\S+\\(\\)\\s*{[\\s\\S]+\\.apply\\(this,\\s*(arguments|[^()]+\\(arguments\\))\\)/;\n/** Regular expression that detects ES2015 classes which extend from other classes. */\nconst ES2015_INHERITED_CLASS = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{/;\n/**\n * Regular expression that detects ES2015 classes which extend from other classes and\n * have an explicit constructor defined.\n */\nconst ES2015_INHERITED_CLASS_WITH_CTOR = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{[\\s\\S]*constructor\\s*\\(/;\n/**\n * Regular expression that detects ES2015 classes which extend from other classes\n * and inherit a constructor.\n */\nconst ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{[\\s\\S]*constructor\\s*\\(\\)\\s*{\\s*super\\(\\.\\.\\.arguments\\)/;\n/**\n * Determine whether a stringified type is a class which delegates its constructor\n * to its parent.\n *\n * This is not trivial since compiled code can actually contain a constructor function\n * even if the original source code did not. For instance, when the child class contains\n * an initialized instance property.\n */\nfunction isDelegateCtor(typeStr) {\n return ES5_DELEGATE_CTOR.test(typeStr) ||\n ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) ||\n (ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr));\n}\nclass ReflectionCapabilities {\n constructor(reflect) {\n this._reflect = reflect || _global['Reflect'];\n }\n isReflectionEnabled() {\n return true;\n }\n factory(t) {\n return (...args) => new t(...args);\n }\n /** @internal */\n _zipTypesAndAnnotations(paramTypes, paramAnnotations) {\n let result;\n if (typeof paramTypes === 'undefined') {\n result = newArray(paramAnnotations.length);\n }\n else {\n result = newArray(paramTypes.length);\n }\n for (let i = 0; i < result.length; i++) {\n // TS outputs Object for parameters without types, while Traceur omits\n // the annotations. For now we preserve the Traceur behavior to aid\n // migration, but this can be revisited.\n if (typeof paramTypes === 'undefined') {\n result[i] = [];\n }\n else if (paramTypes[i] && paramTypes[i] != Object) {\n result[i] = [paramTypes[i]];\n }\n else {\n result[i] = [];\n }\n if (paramAnnotations && paramAnnotations[i] != null) {\n result[i] = result[i].concat(paramAnnotations[i]);\n }\n }\n return result;\n }\n _ownParameters(type, parentCtor) {\n const typeStr = type.toString();\n // If we have no decorators, we only have function.length as metadata.\n // In that case, to detect whether a child class declared an own constructor or not,\n // we need to look inside of that constructor to check whether it is\n // just calling the parent.\n // This also helps to work around for https://github.com/Microsoft/TypeScript/issues/12439\n // that sets 'design:paramtypes' to []\n // if a class inherits from another class but has no ctor declared itself.\n if (isDelegateCtor(typeStr)) {\n return null;\n }\n // Prefer the direct API.\n if (type.parameters && type.parameters !== parentCtor.parameters) {\n return type.parameters;\n }\n // API of tsickle for lowering decorators to properties on the class.\n const tsickleCtorParams = type.ctorParameters;\n if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {\n // Newer tsickle uses a function closure\n // Retain the non-function case for compatibility with older tsickle\n const ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;\n const paramTypes = ctorParameters.map((ctorParam) => ctorParam && ctorParam.type);\n const paramAnnotations = ctorParameters.map((ctorParam) => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // API for metadata created by invoking the decorators.\n const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];\n const paramTypes = this._reflect && this._reflect.getOwnMetadata &&\n this._reflect.getOwnMetadata('design:paramtypes', type);\n if (paramTypes || paramAnnotations) {\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // If a class has no decorators, at least create metadata\n // based on function.length.\n // Note: We know that this is a real constructor as we checked\n // the content of the constructor above.\n return newArray(type.length);\n }\n parameters(type) {\n // Note: only report metadata if we have at least one class decorator\n // to stay in sync with the static reflector.\n if (!isType(type)) {\n return [];\n }\n const parentCtor = getParentCtor(type);\n let parameters = this._ownParameters(type, parentCtor);\n if (!parameters && parentCtor !== Object) {\n parameters = this.parameters(parentCtor);\n }\n return parameters || [];\n }\n _ownAnnotations(typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {\n let annotations = typeOrFunc.annotations;\n if (typeof annotations === 'function' && annotations.annotations) {\n annotations = annotations.annotations;\n }\n return annotations;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {\n return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n return typeOrFunc[ANNOTATIONS];\n }\n return null;\n }\n annotations(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return [];\n }\n const parentCtor = getParentCtor(typeOrFunc);\n const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];\n return parentAnnotations.concat(ownAnnotations);\n }\n _ownPropMetadata(typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if (typeOrFunc.propMetadata &&\n typeOrFunc.propMetadata !== parentCtor.propMetadata) {\n let propMetadata = typeOrFunc.propMetadata;\n if (typeof propMetadata === 'function' && propMetadata.propMetadata) {\n propMetadata = propMetadata.propMetadata;\n }\n return propMetadata;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if (typeOrFunc.propDecorators &&\n typeOrFunc.propDecorators !== parentCtor.propDecorators) {\n const propDecorators = typeOrFunc.propDecorators;\n const propMetadata = {};\n Object.keys(propDecorators).forEach(prop => {\n propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);\n });\n return propMetadata;\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n return typeOrFunc[PROP_METADATA];\n }\n return null;\n }\n propMetadata(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n const parentCtor = getParentCtor(typeOrFunc);\n const propMetadata = {};\n if (parentCtor !== Object) {\n const parentPropMetadata = this.propMetadata(parentCtor);\n Object.keys(parentPropMetadata).forEach((propName) => {\n propMetadata[propName] = parentPropMetadata[propName];\n });\n }\n const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n if (ownPropMetadata) {\n Object.keys(ownPropMetadata).forEach((propName) => {\n const decorators = [];\n if (propMetadata.hasOwnProperty(propName)) {\n decorators.push(...propMetadata[propName]);\n }\n decorators.push(...ownPropMetadata[propName]);\n propMetadata[propName] = decorators;\n });\n }\n return propMetadata;\n }\n ownPropMetadata(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};\n }\n hasLifecycleHook(type, lcProperty) {\n return type instanceof Type && lcProperty in type.prototype;\n }\n guards(type) {\n return {};\n }\n getter(name) {\n return new Function('o', 'return o.' + name + ';');\n }\n setter(name) {\n return new Function('o', 'v', 'return o.' + name + ' = v;');\n }\n method(name) {\n const functionBody = `if (!o.${name}) throw new Error('\"${name}\" is undefined');\n return o.${name}.apply(o, args);`;\n return new Function('o', 'args', functionBody);\n }\n // There is not a concept of import uri in Js, but this is useful in developing Dart applications.\n importUri(type) {\n // StaticSymbol\n if (typeof type === 'object' && type['filePath']) {\n return type['filePath'];\n }\n // Runtime type\n return `./${stringify(type)}`;\n }\n resourceUri(type) {\n return `./${stringify(type)}`;\n }\n resolveIdentifier(name, moduleUrl, members, runtime) {\n return runtime;\n }\n resolveEnum(enumIdentifier, name) {\n return enumIdentifier[name];\n }\n}\nfunction convertTsickleDecoratorIntoMetadata(decoratorInvocations) {\n if (!decoratorInvocations) {\n return [];\n }\n return decoratorInvocations.map(decoratorInvocation => {\n const decoratorType = decoratorInvocation.type;\n const annotationCls = decoratorType.annotationCls;\n const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];\n return new annotationCls(...annotationArgs);\n });\n}\nfunction getParentCtor(ctor) {\n const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null;\n const parentCtor = parentProto ? parentProto.constructor : null;\n // Note: We always use `Object` as the null value\n // to simplify checking later on.\n return parentCtor || Object;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _THROW_IF_NOT_FOUND = {};\nconst THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n/*\n * Name of a property (that we patch onto DI decorator), which is used as an annotation of which\n * InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators\n * in the code, thus making them tree-shakable.\n */\nconst DI_DECORATOR_FLAG = '__NG_DI_FLAG__';\nconst NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';\nconst NG_TOKEN_PATH = 'ngTokenPath';\nconst NEW_LINE = /\\n/gm;\nconst NO_NEW_LINE = 'ɵ';\nconst SOURCE = '__source';\nconst ɵ0$2 = getClosureSafeProperty;\nconst USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ0$2 });\n/**\n * Current injector value used by `inject`.\n * - `undefined`: it is an error to call `inject`\n * - `null`: `inject` can be called but there is no injector (limp-mode).\n * - Injector instance: Use the injector for resolution.\n */\nlet _currentInjector = undefined;\nfunction setCurrentInjector(injector) {\n const former = _currentInjector;\n _currentInjector = injector;\n return former;\n}\nfunction injectInjectorOnly(token, flags = InjectFlags.Default) {\n if (_currentInjector === undefined) {\n throw new Error(`inject() must be called from an injection context`);\n }\n else if (_currentInjector === null) {\n return injectRootLimpMode(token, undefined, flags);\n }\n else {\n return _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);\n }\n}\nfunction ɵɵinject(token, flags = InjectFlags.Default) {\n return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);\n}\n/**\n * Throws an error indicating that a factory function could not be generated by the compiler for a\n * particular class.\n *\n * This instruction allows the actual error message to be optimized away when ngDevMode is turned\n * off, saving bytes of generated code while still providing a good experience in dev mode.\n *\n * The name of the class is not mentioned here, but will be in the generated factory function name\n * and thus in the stack trace.\n *\n * @codeGenApi\n */\nfunction ɵɵinvalidFactoryDep(index) {\n const msg = ngDevMode ?\n `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid.\nThis can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.\n\nPlease check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.` :\n 'invalid';\n throw new Error(msg);\n}\n/**\n * Injects a token from the currently active injector.\n *\n * Must be used in the context of a factory function such as one defined for an\n * `InjectionToken`. Throws an error if not called from such a context.\n *\n * Within such a factory function, using this function to request injection of a dependency\n * is faster and more type-safe than providing an additional array of dependencies\n * (as has been common with `useFactory` providers).\n *\n * @param token The injection token for the dependency to be injected.\n * @param flags Optional flags that control how injection is executed.\n * The flags correspond to injection strategies that can be specified with\n * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.\n * @returns the injected value if injection is successful, `null` otherwise.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}\n *\n * @publicApi\n */\nconst inject = ɵɵinject;\nfunction injectArgs(types) {\n const args = [];\n for (let i = 0; i < types.length; i++) {\n const arg = resolveForwardRef(types[i]);\n if (Array.isArray(arg)) {\n if (arg.length === 0) {\n throw new Error('Arguments array must have arguments.');\n }\n let type = undefined;\n let flags = InjectFlags.Default;\n for (let j = 0; j < arg.length; j++) {\n const meta = arg[j];\n const flag = getInjectFlag(meta);\n if (typeof flag === 'number') {\n // Special case when we handle @Inject decorator.\n if (flag === -1 /* Inject */) {\n type = meta.token;\n }\n else {\n flags |= flag;\n }\n }\n else {\n type = meta;\n }\n }\n args.push(ɵɵinject(type, flags));\n }\n else {\n args.push(ɵɵinject(arg));\n }\n }\n return args;\n}\n/**\n * Attaches a given InjectFlag to a given decorator using monkey-patching.\n * Since DI decorators can be used in providers `deps` array (when provider is configured using\n * `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we\n * attach the flag to make it available both as a static property and as a field on decorator\n * instance.\n *\n * @param decorator Provided DI decorator.\n * @param flag InjectFlag that should be applied.\n */\nfunction attachInjectFlag(decorator, flag) {\n decorator[DI_DECORATOR_FLAG] = flag;\n decorator.prototype[DI_DECORATOR_FLAG] = flag;\n return decorator;\n}\n/**\n * Reads monkey-patched property that contains InjectFlag attached to a decorator.\n *\n * @param token Token that may contain monkey-patched DI flags property.\n */\nfunction getInjectFlag(token) {\n return token[DI_DECORATOR_FLAG];\n}\nfunction catchInjectorError(e, token, injectorErrorName, source) {\n const tokenPath = e[NG_TEMP_TOKEN_PATH];\n if (token[SOURCE]) {\n tokenPath.unshift(token[SOURCE]);\n }\n e.message = formatError('\\n' + e.message, tokenPath, injectorErrorName, source);\n e[NG_TOKEN_PATH] = tokenPath;\n e[NG_TEMP_TOKEN_PATH] = null;\n throw e;\n}\nfunction formatError(text, obj, injectorErrorName, source = null) {\n text = text && text.charAt(0) === '\\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;\n let context = stringify(obj);\n if (Array.isArray(obj)) {\n context = obj.map(stringify).join(' -> ');\n }\n else if (typeof obj === 'object') {\n let parts = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n let value = obj[key];\n parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));\n }\n }\n context = `{${parts.join(', ')}}`;\n }\n return `${injectorErrorName}${source ? '(' + source + ')' : ''}[${context}]: ${text.replace(NEW_LINE, '\\n ')}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵ0$3 = (token) => ({ token });\n/**\n * Inject decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Inject = attachInjectFlag(\n// Disable tslint because `DecoratorFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nmakeParamDecorator('Inject', ɵ0$3), -1 /* Inject */);\n/**\n * Optional decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Optional = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Optional'), 8 /* Optional */);\n/**\n * Self decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Self = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Self'), 2 /* Self */);\n/**\n * `SkipSelf` decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst SkipSelf = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* SkipSelf */);\n/**\n * Host decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Host = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Host'), 1 /* Host */);\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _reflect = null;\nfunction getReflect() {\n return (_reflect = _reflect || new ReflectionCapabilities());\n}\nfunction reflectDependencies(type) {\n return convertDependencies(getReflect().parameters(type));\n}\nfunction convertDependencies(deps) {\n const compiler = getCompilerFacade();\n return deps.map(dep => reflectDependency(compiler, dep));\n}\nfunction reflectDependency(compiler, dep) {\n const meta = {\n token: null,\n host: false,\n optional: false,\n resolved: compiler.R3ResolvedDependencyType.Token,\n self: false,\n skipSelf: false,\n };\n function setTokenAndResolvedType(token) {\n meta.resolved = compiler.R3ResolvedDependencyType.Token;\n meta.token = token;\n }\n if (Array.isArray(dep) && dep.length > 0) {\n for (let j = 0; j < dep.length; j++) {\n const param = dep[j];\n if (param === undefined) {\n // param may be undefined if type of dep is not set by ngtsc\n continue;\n }\n const proto = Object.getPrototypeOf(param);\n if (param instanceof Optional || proto.ngMetadataName === 'Optional') {\n meta.optional = true;\n }\n else if (param instanceof SkipSelf || proto.ngMetadataName === 'SkipSelf') {\n meta.skipSelf = true;\n }\n else if (param instanceof Self || proto.ngMetadataName === 'Self') {\n meta.self = true;\n }\n else if (param instanceof Host || proto.ngMetadataName === 'Host') {\n meta.host = true;\n }\n else if (param instanceof Inject) {\n meta.token = param.token;\n }\n else if (param instanceof Attribute) {\n if (param.attributeName === undefined) {\n throw new Error(`Attribute name must be defined.`);\n }\n meta.token = param.attributeName;\n meta.resolved = compiler.R3ResolvedDependencyType.Attribute;\n }\n else if (param.__ChangeDetectorRef__ === true) {\n meta.token = param;\n meta.resolved = compiler.R3ResolvedDependencyType.ChangeDetectorRef;\n }\n else {\n setTokenAndResolvedType(param);\n }\n }\n }\n else if (dep === undefined || (Array.isArray(dep) && dep.length === 0)) {\n meta.token = undefined;\n meta.resolved = R3ResolvedDependencyType.Invalid;\n }\n else {\n setTokenAndResolvedType(dep);\n }\n return meta;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used to resolve resource URLs on `@Component` when used with JIT compilation.\n *\n * Example:\n * ```\n * @Component({\n * selector: 'my-comp',\n * templateUrl: 'my-comp.html', // This requires asynchronous resolution\n * })\n * class MyComponent{\n * }\n *\n * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process\n * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously.\n *\n * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into\n * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner.\n *\n * // Use browser's `fetch()` function as the default resource resolution strategy.\n * resolveComponentResources(fetch).then(() => {\n * // After resolution all URLs have been converted into `template` strings.\n * renderComponent(MyComponent);\n * });\n *\n * ```\n *\n * NOTE: In AOT the resolution happens during compilation, and so there should be no need\n * to call this method outside JIT mode.\n *\n * @param resourceResolver a function which is responsible for returning a `Promise` to the\n * contents of the resolved URL. Browser's `fetch()` method is a good default implementation.\n */\nfunction resolveComponentResources(resourceResolver) {\n // Store all promises which are fetching the resources.\n const componentResolved = [];\n // Cache so that we don't fetch the same resource more than once.\n const urlMap = new Map();\n function cachedResourceResolve(url) {\n let promise = urlMap.get(url);\n if (!promise) {\n const resp = resourceResolver(url);\n urlMap.set(url, promise = resp.then(unwrapResponse));\n }\n return promise;\n }\n componentResourceResolutionQueue.forEach((component, type) => {\n const promises = [];\n if (component.templateUrl) {\n promises.push(cachedResourceResolve(component.templateUrl).then((template) => {\n component.template = template;\n }));\n }\n const styleUrls = component.styleUrls;\n const styles = component.styles || (component.styles = []);\n const styleOffset = component.styles.length;\n styleUrls && styleUrls.forEach((styleUrl, index) => {\n styles.push(''); // pre-allocate array.\n promises.push(cachedResourceResolve(styleUrl).then((style) => {\n styles[styleOffset + index] = style;\n styleUrls.splice(styleUrls.indexOf(styleUrl), 1);\n if (styleUrls.length == 0) {\n component.styleUrls = undefined;\n }\n }));\n });\n const fullyResolved = Promise.all(promises).then(() => componentDefResolved(type));\n componentResolved.push(fullyResolved);\n });\n clearResolutionOfComponentResourcesQueue();\n return Promise.all(componentResolved).then(() => undefined);\n}\nlet componentResourceResolutionQueue = new Map();\n// Track when existing ɵcmp for a Type is waiting on resources.\nconst componentDefPendingResolution = new Set();\nfunction maybeQueueResolutionOfComponentResources(type, metadata) {\n if (componentNeedsResolution(metadata)) {\n componentResourceResolutionQueue.set(type, metadata);\n componentDefPendingResolution.add(type);\n }\n}\nfunction isComponentDefPendingResolution(type) {\n return componentDefPendingResolution.has(type);\n}\nfunction componentNeedsResolution(component) {\n return !!((component.templateUrl && !component.hasOwnProperty('template')) ||\n component.styleUrls && component.styleUrls.length);\n}\nfunction clearResolutionOfComponentResourcesQueue() {\n const old = componentResourceResolutionQueue;\n componentResourceResolutionQueue = new Map();\n return old;\n}\nfunction restoreComponentResolutionQueue(queue) {\n componentDefPendingResolution.clear();\n queue.forEach((_, type) => componentDefPendingResolution.add(type));\n componentResourceResolutionQueue = queue;\n}\nfunction isComponentResourceResolutionQueueEmpty() {\n return componentResourceResolutionQueue.size === 0;\n}\nfunction unwrapResponse(response) {\n return typeof response == 'string' ? response : response.text();\n}\nfunction componentDefResolved(type) {\n componentDefPendingResolution.delete(type);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy;\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy() {\n if (policy === undefined) {\n policy = null;\n if (_global.trustedTypes) {\n try {\n policy = _global.trustedTypes.createPolicy('angular', {\n createHTML: (s) => s,\n createScript: (s) => s,\n createScriptURL: (s) => s,\n });\n }\n catch (_a) {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy;\n}\n/**\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will be interpreted as HTML by a browser, e.g. when assigning to\n * element.innerHTML.\n */\nfunction trustedHTMLFromString(html) {\n var _a;\n return ((_a = getPolicy()) === null || _a === void 0 ? void 0 : _a.createHTML(html)) || html;\n}\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security In particular, it must be assured that the provided string will\n * never cause an XSS vulnerability if used in a context that will be\n * interpreted and executed as a script by a browser, e.g. when calling eval.\n */\nfunction trustedScriptFromString(script) {\n var _a;\n return ((_a = getPolicy()) === null || _a === void 0 ? void 0 : _a.createScript(script)) || script;\n}\n/**\n * Unsafely promote a string to a TrustedScriptURL, falling back to strings\n * when Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will cause a browser to load and execute a resource, e.g. when\n * assigning to script.src.\n */\nfunction trustedScriptURLFromString(url) {\n var _a;\n return ((_a = getPolicy()) === null || _a === void 0 ? void 0 : _a.createScriptURL(url)) || url;\n}\n/**\n * Unsafely call the Function constructor with the given string arguments. It\n * is only available in development mode, and should be stripped out of\n * production code.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only called from development code, as use in production code can lead to\n * XSS vulnerabilities.\n */\nfunction newTrustedFunctionForDev(...args) {\n if (typeof ngDevMode === 'undefined') {\n throw new Error('newTrustedFunctionForDev should never be called in production');\n }\n if (!_global.trustedTypes) {\n // In environments that don't support Trusted Types, fall back to the most\n // straightforward implementation:\n return new Function(...args);\n }\n // Chrome currently does not support passing TrustedScript to the Function\n // constructor. The following implements the workaround proposed on the page\n // below, where the Chromium bug is also referenced:\n // https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor\n const fnArgs = args.slice(0, -1).join(',');\n const fnBody = args[args.length - 1];\n const body = `(function anonymous(${fnArgs}\n) { ${fnBody}\n})`;\n // Using eval directly confuses the compiler and prevents this module from\n // being stripped out of JS binaries even if not used. The global['eval']\n // indirection fixes that.\n const fn = _global['eval'](trustedScriptFromString(body));\n if (fn.bind === undefined) {\n // Workaround for a browser bug that only exists in Chrome 83, where passing\n // a TrustedScript to eval just returns the TrustedScript back without\n // evaluating it. In that case, fall back to the most straightforward\n // implementation:\n return new Function(...args);\n }\n // To completely mimic the behavior of calling \"new Function\", two more\n // things need to happen:\n // 1. Stringifying the resulting function should return its source code\n fn.toString = () => body;\n // 2. When calling the resulting function, `this` should refer to `global`\n return fn.bind(_global);\n // When Trusted Types support in Function constructors is widely available,\n // the implementation of this function can be simplified to:\n // return new Function(...args.map(a => trustedScriptFromString(a)));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy$1;\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy$1() {\n if (policy$1 === undefined) {\n policy$1 = null;\n if (_global.trustedTypes) {\n try {\n policy$1 = _global.trustedTypes\n .createPolicy('angular#unsafe-bypass', {\n createHTML: (s) => s,\n createScript: (s) => s,\n createScriptURL: (s) => s,\n });\n }\n catch (_a) {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy$1;\n}\n/**\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nfunction trustedHTMLFromStringBypass(html) {\n var _a;\n return ((_a = getPolicy$1()) === null || _a === void 0 ? void 0 : _a.createHTML(html)) || html;\n}\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nfunction trustedScriptFromStringBypass(script) {\n var _a;\n return ((_a = getPolicy$1()) === null || _a === void 0 ? void 0 : _a.createScript(script)) || script;\n}\n/**\n * Unsafely promote a string to a TrustedScriptURL, falling back to strings\n * when Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nfunction trustedScriptURLFromStringBypass(url) {\n var _a;\n return ((_a = getPolicy$1()) === null || _a === void 0 ? void 0 : _a.createScriptURL(url)) || url;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SafeValueImpl {\n constructor(changingThisBreaksApplicationSecurity) {\n this.changingThisBreaksApplicationSecurity = changingThisBreaksApplicationSecurity;\n }\n toString() {\n return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}` +\n ` (see https://g.co/ng/security#xss)`;\n }\n}\nclass SafeHtmlImpl extends SafeValueImpl {\n getTypeName() {\n return \"HTML\" /* Html */;\n }\n}\nclass SafeStyleImpl extends SafeValueImpl {\n getTypeName() {\n return \"Style\" /* Style */;\n }\n}\nclass SafeScriptImpl extends SafeValueImpl {\n getTypeName() {\n return \"Script\" /* Script */;\n }\n}\nclass SafeUrlImpl extends SafeValueImpl {\n getTypeName() {\n return \"URL\" /* Url */;\n }\n}\nclass SafeResourceUrlImpl extends SafeValueImpl {\n getTypeName() {\n return \"ResourceURL\" /* ResourceUrl */;\n }\n}\nfunction unwrapSafeValue(value) {\n return value instanceof SafeValueImpl ? value.changingThisBreaksApplicationSecurity :\n value;\n}\nfunction allowSanitizationBypassAndThrow(value, type) {\n const actualType = getSanitizationBypassType(value);\n if (actualType != null && actualType !== type) {\n // Allow ResourceURLs in URL contexts, they are strictly more trusted.\n if (actualType === \"ResourceURL\" /* ResourceUrl */ && type === \"URL\" /* Url */)\n return true;\n throw new Error(`Required a safe ${type}, got a ${actualType} (see https://g.co/ng/security#xss)`);\n }\n return actualType === type;\n}\nfunction getSanitizationBypassType(value) {\n return value instanceof SafeValueImpl && value.getTypeName() || null;\n}\n/**\n * Mark `html` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link htmlSanitizer} to be trusted implicitly.\n *\n * @param trustedHtml `html` string which needs to be implicitly trusted.\n * @returns a `html` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustHtml(trustedHtml) {\n return new SafeHtmlImpl(trustedHtml);\n}\n/**\n * Mark `style` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link styleSanitizer} to be trusted implicitly.\n *\n * @param trustedStyle `style` string which needs to be implicitly trusted.\n * @returns a `style` hich has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustStyle(trustedStyle) {\n return new SafeStyleImpl(trustedStyle);\n}\n/**\n * Mark `script` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link scriptSanitizer} to be trusted implicitly.\n *\n * @param trustedScript `script` string which needs to be implicitly trusted.\n * @returns a `script` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustScript(trustedScript) {\n return new SafeScriptImpl(trustedScript);\n}\n/**\n * Mark `url` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link urlSanitizer} to be trusted implicitly.\n *\n * @param trustedUrl `url` string which needs to be implicitly trusted.\n * @returns a `url` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustUrl(trustedUrl) {\n return new SafeUrlImpl(trustedUrl);\n}\n/**\n * Mark `url` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly.\n *\n * @param trustedResourceUrl `url` string which needs to be implicitly trusted.\n * @returns a `url` which has been branded to be implicitly trusted.\n */\nfunction bypassSanitizationTrustResourceUrl(trustedResourceUrl) {\n return new SafeResourceUrlImpl(trustedResourceUrl);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This helper is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we use one of two strategies for doing this.\n * Default: DOMParser strategy\n * Fallback: InertDocument strategy\n */\nfunction getInertBodyHelper(defaultDoc) {\n const inertDocumentHelper = new InertDocumentHelper(defaultDoc);\n return isDOMParserAvailable() ? new DOMParserHelper(inertDocumentHelper) : inertDocumentHelper;\n}\n/**\n * Uses DOMParser to create and fill an inert body element.\n * This is the default strategy used in browsers that support it.\n */\nclass DOMParserHelper {\n constructor(inertDocumentHelper) {\n this.inertDocumentHelper = inertDocumentHelper;\n }\n getInertBodyElement(html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the\n // `` tag. Note that the `` tag is closed implicitly to prevent unclosed tags\n // in `html` from consuming the otherwise explicit `` tag.\n html = '' + html;\n try {\n const body = new window.DOMParser()\n .parseFromString(trustedHTMLFromString(html), 'text/html')\n .body;\n if (body === null) {\n // In some browsers (e.g. Mozilla/5.0 iPad AppleWebKit Mobile) the `body` property only\n // becomes available in the following tick of the JS engine. In that case we fall back to\n // the `inertDocumentHelper` instead.\n return this.inertDocumentHelper.getInertBodyElement(html);\n }\n body.removeChild(body.firstChild);\n return body;\n }\n catch (_a) {\n return null;\n }\n }\n}\n/**\n * Use an HTML5 `template` element, if supported, or an inert body element created via\n * `createHtmlDocument` to create and fill an inert DOM element.\n * This is the fallback strategy if the browser does not support DOMParser.\n */\nclass InertDocumentHelper {\n constructor(defaultDoc) {\n this.defaultDoc = defaultDoc;\n this.inertDocument = this.defaultDoc.implementation.createHTMLDocument('sanitization-inert');\n if (this.inertDocument.body == null) {\n // usually there should be only one body element in the document, but IE doesn't have any, so\n // we need to create one.\n const inertHtml = this.inertDocument.createElement('html');\n this.inertDocument.appendChild(inertHtml);\n const inertBodyElement = this.inertDocument.createElement('body');\n inertHtml.appendChild(inertBodyElement);\n }\n }\n getInertBodyElement(html) {\n // Prefer using
/ elements with colspans.\n SOLUTION: making individual